From 3eee351f4fc5643bdc42338e2ae3f4664553136b Mon Sep 17 00:00:00 2001 From: Bjoern Kerler Date: Tue, 28 Apr 2020 18:16:52 +0200 Subject: [PATCH 001/527] Return PM3_SUCCESS if iso df names not supported --- client/src/cmdhfmfdes.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index 65b02b5f8..d8185e96b 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -1268,6 +1268,7 @@ static int handler_desfire_appids(uint8_t *dest, uint8_t *app_ids_len) { // --- GET DF NAMES static int handler_desfire_dfnames(dfname_t *dest, uint8_t *dfname_count) { + *dfname_count=0; if (g_debugMode > 1) { if (dest == NULL) PrintAndLogEx(ERR, "DEST=NULL"); if (dfname_count == NULL) PrintAndLogEx(ERR, "DFNAME_COUNT=NULL"); @@ -1277,8 +1278,11 @@ static int handler_desfire_dfnames(dfname_t *dest, uint8_t *dfname_count) { int recv_len = 0; uint16_t sw = 0; int res = send_desfire_cmd(&apdu, true, (uint8_t *)dest, &recv_len, &sw, sizeof(dfname_t), true); - if (res != PM3_SUCCESS) + if (res != PM3_SUCCESS){ + if (sw == status(MFDES_E_ILLEGAL_COMMAND_CODE)) return PM3_SUCCESS; return res; + } + if (sw != status(MFDES_S_OPERATION_OK)) return PM3_ESOFT; *dfname_count = recv_len; From a739d333982e190566906b61f89364ef8e3ba578 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 15 May 2020 13:07:27 +0200 Subject: [PATCH 002/527] Add mf_nonce_brute from https://github.com/iceman1001/mf_nonce_brute and merge to pm3 Makefile --- .gitignore | 2 +- Makefile.host | 4 +- tools/Makefile | 4 - tools/mf_nonce_brute/Makefile | 20 ++ tools/mf_nonce_brute/README.md | 132 +++++++++ tools/mf_nonce_brute/iso14443crc.c | 46 +++ tools/mf_nonce_brute/iso14443crc.h | 26 ++ tools/mf_nonce_brute/mf_nonce_brute.c | 395 ++++++++++++++++++++++++++ tools/mf_nonce_brute/protocol.h | 20 ++ tools/mf_nonce_brute/sleep.c | 28 ++ tools/mf_nonce_brute/sleep.h | 27 ++ 11 files changed, 698 insertions(+), 6 deletions(-) create mode 100644 tools/mf_nonce_brute/Makefile create mode 100644 tools/mf_nonce_brute/README.md create mode 100644 tools/mf_nonce_brute/iso14443crc.c create mode 100644 tools/mf_nonce_brute/iso14443crc.h create mode 100644 tools/mf_nonce_brute/mf_nonce_brute.c create mode 100644 tools/mf_nonce_brute/protocol.h create mode 100644 tools/mf_nonce_brute/sleep.c create mode 100644 tools/mf_nonce_brute/sleep.h diff --git a/.gitignore b/.gitignore index fd8fe070c..d28933d82 100644 --- a/.gitignore +++ b/.gitignore @@ -87,7 +87,7 @@ client/dumps/* *.ice *.new armsrc/TEMP EMV/* -tools/mf_nonce_brute/* +tools/mf_nonce_brute/mf_nonce_brute tools/andrew/* tools/jtag_openocd/openocd_configuration ppls patches/* diff --git a/Makefile.host b/Makefile.host index c95f4bb4f..07b8c2199 100644 --- a/Makefile.host +++ b/Makefile.host @@ -17,6 +17,8 @@ endif CFLAGS ?= $(DEFCFLAGS) CFLAGS += $(MYDEFS) $(MYCFLAGS) $(MYINCLUDES) +LDFLAGS += $(MYLDFLAGS) +LDLIBS += $(MYLDLIBS) vpath %.c $(MYSRCPATHS) @@ -66,7 +68,7 @@ $(BINDIR)/$(LIB_A): $(MYOBJS) $(BINDIR)/% : $(OBJDIR)/%.o $(MYOBJS) $(MYLIBS) $(info [=] LD $(notdir $@)) - $(Q)$(LD) $(LDFLAGS) $(MYOBJS) $< -o $@ $(MYLIBS) + $(Q)$(LD) $(LDFLAGS) $(MYOBJS) $< -o $@ $(MYLIBS) $(MYLDLIBS) $(OBJDIR)/%.o : %.c | $(OBJDIR) $(info [-] CC $<) diff --git a/tools/Makefile b/tools/Makefile index 5f2355f20..df6a0682f 100644 --- a/tools/Makefile +++ b/tools/Makefile @@ -11,10 +11,6 @@ get_crapto1: $(WGET) http://crapto1.netgarage.org/crapto1-v3.3.tar.xz $(TAR) Jxvf crapto1-v3.3.tar.xz -C crapto1-v3.3 -get_nonce_bf: -# $(GIT) https://github.com/J-Run/mf_key_brute.git mf_key_brute - $(GIT) https://github.com/iceman1001/mf_nonce_brute mf_nonce_brute - get_xorsearch: $(MKDIR) xorsearch $(WGET) https://didierstevens.com/files/software/XORSearch_V1_11_2.zip diff --git a/tools/mf_nonce_brute/Makefile b/tools/mf_nonce_brute/Makefile new file mode 100644 index 000000000..7672c89a4 --- /dev/null +++ b/tools/mf_nonce_brute/Makefile @@ -0,0 +1,20 @@ +MYSRCPATHS = ../../common ../../common/crapto1 +MYSRCS = crypto1.c crapto1.c bucketsort.c iso14443crc.c sleep.c +MYINCLUDES = -I../../include -I../../common +MYCFLAGS = +MYDEFS = +MYLDLIBS = -lpthread + +BINS = mf_nonce_brute +INSTALLTOOLS = $(BINS) + +include ../../Makefile.host + +# checking platform can be done only after Makefile.host +ifneq (,$(findstring MINGW,$(platform))) + # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) + # and setting _ISOC99_SOURCE sets internally __USE_MINGW_ANSI_STDIO=1 + CFLAGS += -D_ISOC99_SOURCE +endif + +mf_nonce_brute : $(OBJDIR)/mf_nonce_brute.o $(MYOBJS) diff --git a/tools/mf_nonce_brute/README.md b/tools/mf_nonce_brute/README.md new file mode 100644 index 000000000..c2e5f3e6f --- /dev/null +++ b/tools/mf_nonce_brute/README.md @@ -0,0 +1,132 @@ +mf_nonce_brute +============== + +Nested authentificated sector key recovery tool +----------------------------------------------- + +Compatible tags: +* Mifare Classic 1k (4k) +* Mifare Plus in SL1 mode + +To recover keys to nested authentificated sectors you need a reader-card communication log. To get it use +hardware tools that able to sniff communication (for example Proxmark3 or HydraNFC). + +This enhanced version: +First 2 bytes should be bruteforced in phase 2 with mf_key_brute tool that interacts with a card. + +Sample trace: +``` + 93 70 fd ac f6 d8 7f 21 4f // select card with UID fdacf6d8 +TAG 08 b6 dd // sak + 60 04 d1 3d // wanna auth block 0x04 with A key +TAG ed 12 9c 74 // 1st auth clear text nt + 55 53 9f cc 41 8d e8 f3 // nr', ar' (nr^ks1, ar^ks2 ) +TAG 05 49 e1 65 // at' ( at^ks3 ) + 03 24 26 56 // wanna read block 0x04 +TAG ac 69 ef 58 45 e1 c2 1d a9 47 a5 94 54 ef 5d c7 1e a9 // block 0x04 content + d4 3e a8 aa +TAG 8e 8e e3 e6 e9 e2 5f dd f6 08 ce fb 02 6a db 75 94 2f + 79 77 68 3c +TAG e0 00 00 80 80 08 cc 80 08 9c 82 e0 68 64 60 30 91 60 // 18 bytes = 16 byte content + 2 bytes crc + ea 88 c3 c2 // 4 byte read cmd +TAG a3 76 dc df c1 42 e0 ee c6 75 a4 ca eb 0c da eb 46 a0 // 18 bytes = 16 byte content + 2 bytes crc ks8 + crc + 2d 27 ab 6f // wanna auth to 0x04 block with key B + +-------Until this line we can recover key or decrypt communication with no troubles (see mfkey64 tool)-------------------------------- + +TAG 52 6e af 8b // nested auth encrypted tag nonce that we dont know + 8e 21 3a 29 a4 80 7e 02 // nr_enc = nr^ks1, ar_enc = ar^ks2 +TAG b9 43 74 8d // at_enc = at^ks3 + e2 25 f8 32 // probably next command (actually is read block cmd, but we dont know it yet) +TAG 1f 26 82 8d 12 21 dd 42 c2 84 3e d0 26 7f 6b 2a 81 a9 // probably data + ba 85 1d 36 // probably read cmd +TAG 62 a8 78 69 ee 36 22 16 1c ff 4b 4e 69 cb 27 c2 e8 7e // probably data + a7 b1 c8 da // probably read cmd +TAG b2 fc 6c 65 60 ec 35 83 87 56 e3 7e 3c bf 38 b8 73 21 // probably data + 99 92 13 55 // probably read cmd +TAG 93 5b 65 a3 1d 8c 75 b8 3a 63 e2 31 f0 d0 a9 24 9a f6 // probably data +``` + + +Phase 1 +------- + +Syntax: +`mf_nonce_brute <{nt}> <{nr}> <{ar}> <{at}> [<{next_command}>]` + +Example: if `nt` in trace is `8c! 42 e6! 4e!`, then `nt` is `8c42e64e` and `nt_par_err` is `1011` + +Example with parity (from this trace http://www.proxmark.org/forum/viewtopic.php?pid=550#p550) : + +``` + + 561882: 1 : 26 + + 64: 2 : TAG 04 00 + + 10217: 2 : 93 20 + + 64: 5 : TAG 9c 59 9b 32 6c UID + + 12313: 9 : 93 70 9c 59 9b 32 6c 6b 30 + + 64: 3 : TAG 08 b6 dd + + 923318: 4 : 60 00 f5 7b AUTH Block 0 + + 112: 4 : TAG 82 a4 16 6c Nonce Tag (NT) + + 6985: 8 : a1 e4! 58 ce! 6e ea! 41 e0! NR , AR + + 64: 4 : TAG 5c! ad f4 39! AT + + 811513: 4 : 8e 0e! 5d! b9 AUTH Block 0 (nested) + + 112: 4 : TAG 5a! 92 0d! 85! Nonce Tag (NT) + + 6946: 8 : 98! d7 6b! 77 d6 c6 e8 70 NR , AR + + 64: 4 : TAG ca 7e! 0b! 63! AT + + 670868: 4 : 3e! 70 9c! 8a + + 112: 4 : TAG 36! 41 24! 79 + + 9505: 8 : 1b! 8c 3a! 48! 83 5a 4a! 27 + + 64: 4 : TAG 40! 6a! 99! 4b + + 905612: 4 : c9 7c 64! 13! !crc + + 112: 4 : TAG b5! ab! 1d! 2b + + 6936: 8 : 7e! d2 5c! ca! 4b! 50! 88! c4 !crc + + 64: 4 : TAG bf dd 01 be! + + 987853: 4 : 56 98 49 d6! !crc +``` +=> +``` +./mf_nonce_brute 9c599b32 82a4166c 0000 a1e458ce 6eea41e0 0101 5cadf439 1001 3e709c8a + | | | | | | | | | + +UID +nt_enc | +nr_enc +ar_enc | +at_enc | +encrypted next cmd + +nt_par_err +at_par_err +at_par_err +``` + +These two taken from above use the plaintext tagnonce `nt`=`82a4166c`, they still find a possible key candidate. +``` +./mf_nonce_brute 9c599b32 82a4166c 0000 a1e458ce 6eea41e0 0101 5cadf439 1001 +./mf_nonce_brute 9c599b32 82a4166c 0000 98d76b77 d6c6e870 0000 ca7e0b63 0111 +``` + +This one uses the encrypted tagnonce `nt`=`5a920d85`, it finds a valid key. +``` +./mf_nonce_brute 9c599b32 5a920d85 1011 98d76b77 d6c6e870 0000 ca7e0b63 0111 +``` + +This one uses the encrypted tagnonce `nt`=`5a920d85` and the encrypted cmd `3e709c8a` to validate , it finds a valid key. +``` +./mf_nonce_brute 9c599b32 5a920d85 1011 98d76b77 d6c6e870 0000 ca7e0b63 0111 3e709c8a +``` +Full output: +``` +$ ./mf_nonce_brute 9c599b32 5a920d85 1011 98d76b77 d6c6e870 0000 ca7e0b63 0111 3e709c8a +Mifare classic nested auth key recovery. Phase 1. +------------------------------------------------- +uid: 9c599b32 +nt encrypted: 5a920d85 +nt parity err: 1011 +nr encrypted: 98d76b77 +ar encrypted: d6c6e870 +ar parity err: 0000 +at encrypted: ca7e0b63 +at parity err: 0111 +next cmd enc: 3e709c8a + + +Starting 4 threads to bruteforce encrypted tag nonce last bytes +CMD enc(3e709c8a) + dec(6000f57b) <-- Valid cmd + +Valid Key found: [ffffffffffff] + +Time in mf_nonce_brute (Phase 1): 1763 ticks 2.0 seconds +``` diff --git a/tools/mf_nonce_brute/iso14443crc.c b/tools/mf_nonce_brute/iso14443crc.c new file mode 100644 index 000000000..60631f4fb --- /dev/null +++ b/tools/mf_nonce_brute/iso14443crc.c @@ -0,0 +1,46 @@ +//----------------------------------------------------------------------------- +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// ISO14443 CRC calculation code. +//----------------------------------------------------------------------------- + +#include "iso14443crc.h" + +static unsigned short UpdateCrc14443(unsigned char ch, unsigned short *lpwCrc) { + ch = (ch ^ (unsigned char)((*lpwCrc) & 0x00FF)); + ch = (ch ^ (ch << 4)); + *lpwCrc = (*lpwCrc >> 8) ^ ((unsigned short) ch << 8) ^ + ((unsigned short) ch << 3) ^ ((unsigned short) ch >> 4); + return (*lpwCrc); +} + +void ComputeCrc14443(int CrcType, + const unsigned char *Data, int Length, + unsigned char *TransmitFirst, + unsigned char *TransmitSecond) { + unsigned char chBlock; + unsigned short wCrc = CrcType; + + do { + chBlock = *Data++; + UpdateCrc14443(chBlock, &wCrc); + } while (--Length); + + if (CrcType == CRC_14443_B) + wCrc = ~wCrc; /* ISO/IEC 13239 (formerly ISO/IEC 3309) */ + + *TransmitFirst = (unsigned char)(wCrc & 0xFF); + *TransmitSecond = (unsigned char)((wCrc >> 8) & 0xFF); + return; +} + +int CheckCrc14443(int CrcType, const unsigned char *Data, int Length) { + unsigned char b1; + unsigned char b2; + if (Length < 3) return 0; + ComputeCrc14443(CrcType, Data, Length - 2, &b1, &b2); + if ((b1 == Data[Length - 2]) && (b2 == Data[Length - 1])) return 1; + return 0; +} diff --git a/tools/mf_nonce_brute/iso14443crc.h b/tools/mf_nonce_brute/iso14443crc.h new file mode 100644 index 000000000..e9a82d521 --- /dev/null +++ b/tools/mf_nonce_brute/iso14443crc.h @@ -0,0 +1,26 @@ +//----------------------------------------------------------------------------- +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// ISO14443 CRC calculation code. +//----------------------------------------------------------------------------- + +#ifndef __ISO14443CRC_H +#define __ISO14443CRC_H + +//----------------------------------------------------------------------------- +// Routines to compute the CRCs (two different flavours, just for confusion) +// required for ISO 14443, swiped directly from the spec. +//----------------------------------------------------------------------------- +#define CRC_14443_A 0x6363 /* ITU-V.41 */ +#define CRC_14443_B 0xFFFF /* ISO/IEC 13239 (formerly ISO/IEC 3309) */ +#define CRC_ICLASS 0xE012 /* ICLASS PREFIX */ + +void ComputeCrc14443(int CrcType, + const unsigned char *Data, int Length, + unsigned char *TransmitFirst, + unsigned char *TransmitSecond); +int CheckCrc14443(int CrcType, const unsigned char *Data, int Length); + +#endif diff --git a/tools/mf_nonce_brute/mf_nonce_brute.c b/tools/mf_nonce_brute/mf_nonce_brute.c new file mode 100644 index 000000000..6bc69c3d9 --- /dev/null +++ b/tools/mf_nonce_brute/mf_nonce_brute.c @@ -0,0 +1,395 @@ +#define __STDC_FORMAT_MACROS +#define _USE_32BIT_TIME_T 1 +#include +#include +#include +#include +#include +#include +#include +#include +#include "crapto1/crapto1.h" +#include "protocol.h" +#include "iso14443crc.h" + +#define odd_parity(i) (( (i) ^ (i)>>1 ^ (i)>>2 ^ (i)>>3 ^ (i)>>4 ^ (i)>>5 ^ (i)>>6 ^ (i)>>7 ^ 1) & 0x01) + +// a global mutex to prevent interlaced printing from different threads +pthread_mutex_t print_lock; + +//--------------------- define options here +uint32_t uid = 0; // serial number +uint32_t nt_enc = 0; // Encrypted tag nonce +uint32_t nr_enc = 0; // encrypted reader challenge +uint32_t ar_enc = 0; // encrypted reader response +uint32_t at_enc = 0; // encrypted tag response +uint32_t cmd_enc = 0; // next encrypted command to sector + +uint32_t nt_par_err = 0; +uint32_t ar_par_err = 0; +uint32_t at_par_err = 0; + +typedef struct thread_args { + uint16_t xored; + int thread; + int idx; + bool ev1; +} targs; + +//------------------------------------------------------------------ +uint8_t cmds[] = { + ISO14443A_CMD_READBLOCK, + ISO14443A_CMD_WRITEBLOCK, + MIFARE_AUTH_KEYA, + MIFARE_AUTH_KEYB, + MIFARE_CMD_INC, + MIFARE_CMD_DEC, + MIFARE_CMD_RESTORE, + MIFARE_CMD_TRANSFER +}; + +int global_counter = 0; +int global_fin_flag = 0; +int global_found = 0; +int global_found_candidate = 0; +size_t thread_count = 4; + +static uint16_t parity_from_err(uint32_t data, uint16_t par_err) { + + uint16_t par = 0; + par |= odd_parity((data >> 24) & 0xFF) ^ ((par_err >> 12) & 1); + par <<= 4; + + par |= odd_parity((data >> 16) & 0xFF) ^ ((par_err >> 8) & 1); + par <<= 4; + + par |= odd_parity((data >> 8) & 0xFF) ^ ((par_err >> 4) & 1); + par <<= 4; + + par |= odd_parity(data & 0xFF) ^ (par_err & 1); + return par; +} + +static uint16_t xored_bits(uint16_t nt_par, uint32_t ntenc, uint16_t ar_par, uint32_t arenc, uint16_t at_par, uint32_t atenc) { + uint16_t xored = 0; + + uint8_t par; + //1st (1st nt) + par = (nt_par >> 12) & 1; + xored |= par ^ ((ntenc >> 16) & 1); + xored <<= 1; + + //2nd (2nd nt) + par = (nt_par >> 8) & 1; + xored |= par ^ ((ntenc >> 8) & 1); + xored <<= 1; + + //3rd (3rd nt) + par = (nt_par >> 4) & 1; + xored |= par ^ (ntenc & 1); + xored <<= 1; + + //4th (1st ar) + par = (ar_par >> 12) & 1; + xored |= par ^ ((arenc >> 16) & 1); + xored <<= 1; + + //5th (2nd ar) + par = (ar_par >> 8) & 1; + xored |= par ^ ((arenc >> 8) & 1); + xored <<= 1; + + //6th (3rd ar) + par = (ar_par >> 4) & 1; + xored |= par ^ (arenc & 1); + xored <<= 1; + + //7th (4th ar) + par = ar_par & 1; + xored |= par ^ ((atenc >> 24) & 1); + xored <<= 1; + + //8th (1st at) + par = (at_par >> 12) & 1; + xored |= par ^ ((atenc >> 16) & 1); + xored <<= 1; + + //9th (2nd at) + par = (at_par >> 8) & 1; + xored |= par ^ ((atenc >> 8) & 1); + xored <<= 1; + + //10th (3rd at) + par = (at_par >> 4) & 1; + xored |= par ^ (atenc & 1); + + return xored; +} + +static bool candidate_nonce(uint32_t xored, uint32_t nt, bool ev1) { + uint8_t byte, check; + + if (!ev1) { + //1st (1st nt) + byte = (nt >> 24) & 0xFF; + check = odd_parity(byte) ^ ((nt >> 16) & 1) ^ ((xored >> 9) & 1); + if (check) return false; + + //2nd (2nd nt) + byte = (nt >> 16) & 0xFF; + check = odd_parity(byte) ^ ((nt >> 8) & 1) ^ ((xored >> 8) & 1); + if (check) return false; + } + + //3rd (3rd nt) + byte = (nt >> 8) & 0xFF; + check = odd_parity(byte) ^ (nt & 1) ^ ((xored >> 7) & 1); + if (check) return false; + + uint32_t ar = prng_successor(nt, 64); + + //4th (1st ar) + byte = (ar >> 24) & 0xFF; + check = odd_parity(byte) ^ ((ar >> 16) & 1) ^ ((xored >> 6) & 1); + if (check) return false; + + //5th (2nd ar) + byte = (ar >> 16) & 0x0FF; + check = odd_parity(byte) ^ ((ar >> 8) & 1) ^ ((xored >> 5) & 1); + if (check) return false; + + //6th (3rd ar) + byte = (ar >> 8) & 0xFF; + check = odd_parity(byte) ^ (ar & 1) ^ ((xored >> 4) & 1); + if (check) return false; + + uint32_t at = prng_successor(nt, 96); + + //7th (4th ar) + byte = ar & 0xFF; + check = odd_parity(byte) ^ ((at >> 24) & 1) ^ ((xored >> 3) & 1); + if (check) return false; + + //8th (1st at) + byte = (at >> 24) & 0xFF; + check = odd_parity(byte) ^ ((at >> 16) & 1) ^ ((xored >> 2) & 1); + if (check) return false; + + //9th (2nd at) + byte = (at >> 16) & 0xFF; + check = odd_parity(byte) ^ ((at >> 8) & 1) ^ ((xored >> 1) & 1) ; + if (check) return false; + + //10th (3rd at) + byte = (at >> 8) & 0xFF; + check = odd_parity(byte) ^ (at & 1) ^ (xored & 1); + if (check) return false; + + return true; +} + +static bool checkValidCmd(uint32_t decrypted) { + uint8_t cmd = (decrypted >> 24) & 0xFF; + for (int i = 0; i < sizeof(cmds); ++i) { + if (cmd == cmds[i]) + return true; + } + return false; +} + +static bool checkCRC(uint32_t decrypted) { + uint8_t data[] = { + (decrypted >> 24) & 0xFF, + (decrypted >> 16) & 0xFF, + (decrypted >> 8) & 0xFF, + decrypted & 0xFF + }; + return CheckCrc14443(CRC_14443_A, data, sizeof(data)); +} + +static void *brute_thread(void *arguments) { + + //int shift = (int)arg; + struct thread_args *args = (struct thread_args *) arguments; + + struct Crypto1State *revstate; + uint64_t key; // recovered key candidate + uint32_t ks2; // keystream used to encrypt reader response + uint32_t ks3; // keystream used to encrypt tag response + uint32_t ks4; // keystream used to encrypt next command + uint32_t nt; // current tag nonce + + uint32_t p64 = 0; + uint32_t count; + int found = 0; + // TC == 4 ( + // threads calls 0 ev1 == false + // threads calls 0,1,2 ev1 == true + for (count = args->idx; count < 0xFFFF; count += thread_count - 1) { + + found = global_found; + if (found) break; + + nt = count << 16 | prng_successor(count, 16); + + if (!candidate_nonce(args->xored, nt, args->ev1)) + continue; + + p64 = prng_successor(nt, 64); + ks2 = ar_enc ^ p64; + ks3 = at_enc ^ prng_successor(p64, 32); + revstate = lfsr_recovery64(ks2, ks3); + ks4 = crypto1_word(revstate, 0, 0); + + if (ks4 != 0) { + + // lock this section to avoid interlacing prints from different threats + pthread_mutex_lock(&print_lock); + if (args->ev1) + printf("\n**** Possible key candidate ****\n"); + +#if 0 + printf("thread #%d idx %d %s\n", args->thread, args->idx, (args->ev1) ? "(Ev1)" : ""); + printf("current nt(%08x) ar_enc(%08x) at_enc(%08x)\n", nt, ar_enc, at_enc); + printf("ks2:%08x\n", ks2); + printf("ks3:%08x\n", ks3); + printf("ks4:%08x\n", ks4); +#endif + if (cmd_enc) { + uint32_t decrypted = ks4 ^ cmd_enc; + printf("CMD enc(%08x)\n", cmd_enc); + printf(" dec(%08x)\t", decrypted); + + uint8_t isOK = 0; + // check if cmd exists + isOK = checkValidCmd(decrypted); + + // Add a crc-check. + isOK = checkCRC(decrypted); + + if (!isOK) { + printf("<-- not a valid cmd\n"); + pthread_mutex_unlock(&print_lock); + continue; + } else { + printf("<-- Valid cmd\n"); + } + } + + lfsr_rollback_word(revstate, 0, 0); + lfsr_rollback_word(revstate, 0, 0); + lfsr_rollback_word(revstate, 0, 0); + lfsr_rollback_word(revstate, nr_enc, 1); + lfsr_rollback_word(revstate, uid ^ nt, 0); + crypto1_get_lfsr(revstate, &key); + free(revstate); + + if (args->ev1) { + printf("\nKey candidate: [%012" PRIx64 "]\n\n", key); + __sync_fetch_and_add(&global_found_candidate, 1); + } else { + printf("\nValid Key found: [%012" PRIx64 "]\n\n", key); + __sync_fetch_and_add(&global_found, 1); + } + //release lock + pthread_mutex_unlock(&print_lock); + } + } + return NULL; +} + +static int usage(void) { + printf(" syntax: mf_nonce_brute []\n\n"); + printf(" example: nt in trace = 8c! 42 e6! 4e!\n"); + printf(" nt = 8c42e64e\n"); + printf(" nt_par_err = 1011\n\n"); + printf("\n expected outcome:\n"); + printf(" KEY 0xFFFFFFFFFFFF == fa247164 fb47c594 0000 71909d28 0c254817 1000 0dc7cfbd 1110\n"); + return 1; +} + +int main(int argc, char *argv[]) { + printf("Mifare classic nested auth key recovery. Phase 1.\n"); + + if (argc < 9) return usage(); + + sscanf(argv[1], "%x", &uid); + sscanf(argv[2], "%x", &nt_enc); + sscanf(argv[3], "%x", &nt_par_err); + sscanf(argv[4], "%x", &nr_enc); + sscanf(argv[5], "%x", &ar_enc); + sscanf(argv[6], "%x", &ar_par_err); + sscanf(argv[7], "%x", &at_enc); + sscanf(argv[8], "%x", &at_par_err); + + if (argc > 9) + sscanf(argv[9], "%x", &cmd_enc); + + printf("-------------------------------------------------\n"); + printf("uid:\t\t%08x\n", uid); + printf("nt encrypted:\t%08x\n", nt_enc); + printf("nt parity err:\t%04x\n", nt_par_err); + printf("nr encrypted:\t%08x\n", nr_enc); + printf("ar encrypted:\t%08x\n", ar_enc); + printf("ar parity err:\t%04x\n", ar_par_err); + printf("at encrypted:\t%08x\n", at_enc); + printf("at parity err:\t%04x\n", at_par_err); + + if (argc > 9) + printf("next cmd enc:\t%08x\n\n", cmd_enc); + + clock_t t1 = clock(); + uint16_t nt_par = parity_from_err(nt_enc, nt_par_err); + uint16_t ar_par = parity_from_err(ar_enc, ar_par_err); + uint16_t at_par = parity_from_err(at_enc, at_par_err); + + //calc (parity XOR corresponding nonce bit encoded with the same keystream bit) + uint16_t xored = xored_bits(nt_par, nt_enc, ar_par, ar_enc, at_par, at_enc); + +#ifndef __WIN32 + thread_count = sysconf(_SC_NPROCESSORS_CONF); + if (thread_count < 2) + thread_count = 2; +#endif /* _WIN32 */ + + printf("\nBruteforce using %zu threads to find encrypted tagnonce last bytes\n", thread_count); + + pthread_t threads[thread_count]; + + // create a mutex to avoid interlacing print commands from our different threads + pthread_mutex_init(&print_lock, NULL); + + // one thread T0 for none EV1. + struct thread_args *a = malloc(sizeof(struct thread_args)); + a->xored = xored; + a->thread = 0; + a->idx = 0; + a->ev1 = false; + pthread_create(&threads[0], NULL, brute_thread, (void *)a); + + // the rest of available threads to EV1 scenario + for (int i = 0; i < thread_count - 1; ++i) { + struct thread_args *b = malloc(sizeof(struct thread_args)); + b->xored = xored; + b->thread = i + 1; + b->idx = i; + b->ev1 = true; + pthread_create(&threads[i + 1], NULL, brute_thread, (void *)b); + } + + // wait for threads to terminate: + for (int i = 0; i < thread_count; ++i) + pthread_join(threads[i], NULL); + + if (!global_found && !global_found_candidate) { + printf("\nFailed to find a key\n\n"); + } + + t1 = clock() - t1; + if (t1 > 0) + printf("Execution time: %.0f ticks\n", (float)t1); + + // clean up mutex + pthread_mutex_destroy(&print_lock); + return 0; +} diff --git a/tools/mf_nonce_brute/protocol.h b/tools/mf_nonce_brute/protocol.h new file mode 100644 index 000000000..4f7f8b7e0 --- /dev/null +++ b/tools/mf_nonce_brute/protocol.h @@ -0,0 +1,20 @@ +#ifndef PROTOCOL_H +#define PROTOCOL_H + +#define ISO14443A_CMD_READBLOCK 0x30 +#define ISO14443A_CMD_WRITEBLOCK 0xA0 + +#define MIFARE_AUTH_KEYA 0x60 +#define MIFARE_AUTH_KEYB 0x61 +#define MIFARE_CMD_INC 0xC0 +#define MIFARE_CMD_DEC 0xC1 +#define MIFARE_CMD_RESTORE 0xC2 +#define MIFARE_CMD_TRANSFER 0xB0 + +// mifare 4bit card answers +#define CARD_ACK 0x0A // 1010 - ACK +#define CARD_NACK_NA 0x04 // 0100 - NACK, not allowed (command not allowed) +#define CARD_NACK_TR 0x05 // 0101 - NACK, transmission error + +#endif +// PROTOCOL_H diff --git a/tools/mf_nonce_brute/sleep.c b/tools/mf_nonce_brute/sleep.c new file mode 100644 index 000000000..0dd4c089d --- /dev/null +++ b/tools/mf_nonce_brute/sleep.c @@ -0,0 +1,28 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2010 iZsh +// +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// platform-independant sleep macros +//----------------------------------------------------------------------------- + +#ifndef _WIN32 + +#define _POSIX_C_SOURCE 199309L +#include "sleep.h" +#include +#include +#include +#include + +void nsleep(uint64_t n) { + struct timespec timeout; + timeout.tv_sec = n / 1000000000; + timeout.tv_nsec = n % 1000000000; + while (nanosleep(&timeout, &timeout) && errno == EINTR); +} + +#endif // _WIN32 + diff --git a/tools/mf_nonce_brute/sleep.h b/tools/mf_nonce_brute/sleep.h new file mode 100644 index 000000000..8465b6041 --- /dev/null +++ b/tools/mf_nonce_brute/sleep.h @@ -0,0 +1,27 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2010 iZsh +// +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// platform-independant sleep macros +//----------------------------------------------------------------------------- + +#ifndef SLEEP_H__ +#define SLEEP_H__ + +#ifdef _WIN32 +# include +# define sleep(n) Sleep(1000 * n) +# define msleep(n) Sleep(n) +#else +# include +# include +void nsleep(uint64_t n); +# define msleep(n) nsleep(1000000 * n) +# define usleep(n) nsleep(1000 * n) +#endif // _WIN32 + +#endif // SLEEP_H__ + From ddb432ec8f808dcb699b21f0b2d0c13b2e3d2d58 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 15 May 2020 17:00:53 +0200 Subject: [PATCH 003/527] textual --- client/src/loclass/cipher.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/client/src/loclass/cipher.c b/client/src/loclass/cipher.c index 9cc683300..b8d481f1e 100644 --- a/client/src/loclass/cipher.c +++ b/client/src/loclass/cipher.c @@ -247,7 +247,6 @@ static void MAC(uint8_t *k, BitstreamIn input, BitstreamOut out) { void doMAC(uint8_t *cc_nr_p, uint8_t *div_key_p, uint8_t mac[4]) { uint8_t cc_nr[13] = { 0 }; uint8_t div_key[8]; - //cc_nr=(uint8_t*) calloc(length+1, sizeof(uint8_t)); memcpy(cc_nr, cc_nr_p, 12); memcpy(div_key, div_key_p, 8); @@ -260,7 +259,6 @@ void doMAC(uint8_t *cc_nr_p, uint8_t *div_key_p, uint8_t mac[4]) { //The output MAC must also be reversed reverse_arraybytes(dest, sizeof(dest)); memcpy(mac, dest, 4); - //free(cc_nr); } void doMAC_N(uint8_t *address_data_p, uint8_t address_data_size, uint8_t *div_key_p, uint8_t mac[4]) { @@ -296,9 +294,9 @@ int testMAC(void) { doMAC(cc_nr, div_key, calculated_mac); if (memcmp(calculated_mac, correct_MAC, 4) == 0) { - PrintAndLogEx(SUCCESS, "MAC calculation OK!"); + PrintAndLogEx(SUCCESS, " MAC calculation (%s)", _GREEN_("ok")); } else { - PrintAndLogEx(FAILED, "FAILED: MAC calculation failed:"); + PrintAndLogEx(FAILED, " MAC calculation (%s)", _RED_("failed")); printarr(" Calculated_MAC", calculated_mac, 4); printarr(" Correct_MAC ", correct_MAC, 4); return PM3_ESOFT; From f3b4028e8a4ef9ee92573700e42ec5436c1eb0fb Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 15 May 2020 17:02:42 +0200 Subject: [PATCH 004/527] textaul, worked return codes for tests and swaped to printandlog --- client/src/loclass/cipherutils.c | 27 +++--- client/src/loclass/elite_crack.c | 82 ++++++++-------- client/src/loclass/elite_crack.h | 2 +- client/src/loclass/hash1_brute.c | 1 - client/src/loclass/ikeys.c | 154 ++++++++++++++----------------- client/src/loclass/ikeys.h | 2 +- 6 files changed, 130 insertions(+), 138 deletions(-) diff --git a/client/src/loclass/cipherutils.c b/client/src/loclass/cipherutils.c index fa58dfeaa..31ff90e50 100644 --- a/client/src/loclass/cipherutils.c +++ b/client/src/loclass/cipherutils.c @@ -169,12 +169,17 @@ void printarr_human_readable(const char *title, uint8_t *arr, int len) { if (arr == NULL) return; int cx = 0, i; - size_t outsize = 100 + strlen(title) + len * 4; + size_t outsize = 100 + strlen(title) + (len * 4); char *output = calloc(outsize, sizeof(char)); PrintAndLogEx(INFO, "%s", title); for (i = 0; i < len; i++) { - if (i % 16 == 0) - cx += snprintf(output + cx, outsize - cx, "\n%02x| ", i); + if (i % 16 == 0) { + + if (i == 0) + cx += snprintf(output + cx, outsize - cx, "%02x| ", i); + else + cx += snprintf(output + cx, outsize - cx, "\n%02x| ", i); + } cx += snprintf(output + cx, outsize - cx, "%02x ", *(arr + i)); } PrintAndLogEx(INFO, output); @@ -199,9 +204,9 @@ static int testBitStream(void) { } if (memcmp(input, output, sizeof(input)) == 0) { - PrintAndLogEx(SUCCESS, " Bitstream test 1 ok"); + PrintAndLogEx(SUCCESS, " Bitstream test 1 (%s)", _GREEN_("ok") ); } else { - PrintAndLogEx(FAILED, " Bitstream test 1 failed"); + PrintAndLogEx(FAILED, " Bitstream test 1 (%s)", _RED_("failed") ); uint8_t i; for (i = 0 ; i < ARRAYLEN(input) ; i++) { PrintAndLogEx(NORMAL, " IN %02x, OUT %02x", input[i], output[i]); @@ -229,9 +234,9 @@ static int testReversedBitstream(void) { } if (memcmp(input, output, sizeof(input)) == 0) { - PrintAndLogEx(SUCCESS, " Bitstream test 2 ok"); + PrintAndLogEx(SUCCESS, " Bitstream test 2 (%s)", _GREEN_("ok") ); } else { - PrintAndLogEx(FAILED, " Bitstream test 2 failed"); + PrintAndLogEx(FAILED, " Bitstream test 2 (%s)", _RED_("failed") ); uint8_t i; for (i = 0 ; i < ARRAYLEN(input) ; i++) { PrintAndLogEx(NORMAL, " IN %02x, MIDDLE: %02x, OUT %02x", input[i], reverse[i], output[i]); @@ -241,12 +246,12 @@ static int testReversedBitstream(void) { return PM3_SUCCESS; } - int testCipherUtils(void) { PrintAndLogEx(INFO, "Testing some internals..."); - int retval = 0; - retval |= testBitStream(); - retval |= testReversedBitstream(); + int retval = testBitStream(); + if (retval == PM3_SUCCESS) + retval = testReversedBitstream(); + return retval; } #endif diff --git a/client/src/loclass/elite_crack.c b/client/src/loclass/elite_crack.c index 4dbac9704..cc9570351 100644 --- a/client/src/loclass/elite_crack.c +++ b/client/src/loclass/elite_crack.c @@ -293,7 +293,7 @@ static int _readFromDump(uint8_t dump[], dumpdata *item, uint8_t i) { * @return */ int bruteforceItem(dumpdata item, uint16_t keytable[]) { - int errors = 0; + int found = false; uint8_t key_sel_p[8] = {0}; uint8_t div_key[8] = {0}; @@ -334,7 +334,7 @@ int bruteforceItem(dumpdata item, uint16_t keytable[]) { keytable[bytes_to_recover[0]] &= ~BEING_CRACKED; keytable[bytes_to_recover[1]] &= ~BEING_CRACKED; keytable[bytes_to_recover[2]] &= ~BEING_CRACKED; - return 1; + return PM3_ESOFT; } } @@ -400,11 +400,13 @@ int bruteforceItem(dumpdata item, uint16_t keytable[]) { } } + int errors = PM3_SUCCESS; + if (!found) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(WARNING, "Failed to recover %d bytes using the following CSN", numbytes_to_recover); PrintAndLogEx(INFO, "CSN %s", sprint_hex(item.csn, 8)); - errors++; + errors = PM3_ESOFT; //Before we exit, reset the 'BEING_CRACKED' to zero for (i = 0; i < numbytes_to_recover; i++) { @@ -475,14 +477,14 @@ int calculateMasterKey(uint8_t first16bytes[], uint64_t master_key[]) { if (master_key != NULL) memcpy(master_key, key64, 8); + PrintAndLogEx(NORMAL, "\n"); if (memcmp(z_0, result, 4) != 0) { PrintAndLogEx(WARNING, _RED_("Failed to verify") " calculated master key (k_cus)! Something is wrong."); - return 1; - } else { - PrintAndLogEx(NORMAL, "\n"); - PrintAndLogEx(SUCCESS, _GREEN_("Key verified ok!")); - } - return 0; + return PM3_ESOFT; + } + + PrintAndLogEx(SUCCESS, _GREEN_("Key verified ok!")); + return PM3_SUCCESS; } /** * @brief Same as bruteforcefile, but uses a an array of dumpdata instead @@ -493,27 +495,29 @@ int calculateMasterKey(uint8_t first16bytes[], uint64_t master_key[]) { */ int bruteforceDump(uint8_t dump[], size_t dumpsize, uint16_t keytable[]) { uint8_t i; - int errors = 0; size_t itemsize = sizeof(dumpdata); - uint64_t t1 = msclock(); dumpdata *attack = (dumpdata *) calloc(itemsize, sizeof(uint8_t)); - + if (attack == NULL) { + PrintAndLogEx(WARNING, "failed to allocate memory"); + return PM3_EMALLOC; + } + + int res = 0; for (i = 0 ; i * itemsize < dumpsize ; i++) { memcpy(attack, dump + i * itemsize, itemsize); - errors += bruteforceItem(*attack, keytable); - if (errors) + res += bruteforceItem(*attack, keytable); + if (res != PM3_SUCCESS) break; } free(attack); t1 = msclock() - t1; PrintAndLogEx(SUCCESS, "time: %" PRIu64 " seconds", t1 / 1000); - - if (errors) { + if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "loclass exiting. Try run " _YELLOW_("`hf iclass sim 2`") " again and collect new data"); - return 1; + return PM3_ESOFT; } // Pick out the first 16 bytes of the keytable. @@ -527,11 +531,10 @@ int bruteforceDump(uint8_t dump[], size_t dumpsize, uint16_t keytable[]) { if (!(keytable[i] & CRACKED)) { PrintAndLogEx(WARNING, "Warning: we are missing byte %d, custom key calculation will fail...", i); - return 1; + return PM3_ESOFT; } } - errors += calculateMasterKey(first16bytes, NULL); - return errors; + return calculateMasterKey(first16bytes, NULL); } /** * Perform a bruteforce against a file which has been saved by pm3 @@ -589,12 +592,11 @@ static int _testBruteforce(void) { **** The 64-bit HS Custom Key Value = 5B7C62C491C11B39 **** **/ uint16_t keytable[128] = {0}; - int errors = bruteforceFile("iclass_dump.bin", keytable); - if (errors) { + int res = bruteforceFile("iclass_dump.bin", keytable); + if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Error: The file " _YELLOW_("iclass_dump.bin") "was not found!"); } - - return errors; + return res; } static int _test_iclass_key_permutation(void) { @@ -609,18 +611,18 @@ static int _test_iclass_key_permutation(void) { PrintAndLogEx(ERR, "Error with iclass key permute!"); printarr("testcase_output", testcase_output, 8); printarr("testcase_output_correct", testcase_output_correct, 8); - return 1; + return PM3_ESOFT; } if (memcmp(testcase, testcase_output_rev, 8) != 0) { PrintAndLogEx(ERR, "Error with reverse iclass key permute"); printarr("testcase", testcase, 8); printarr("testcase_output_rev", testcase_output_rev, 8); - return 1; + return PM3_ESOFT; } - PrintAndLogEx(SUCCESS, "Iclass key permutation OK!"); - return 0; + PrintAndLogEx(SUCCESS, "Iclass key permutation (%s)", _GREEN_("OK")); + return PM3_SUCCESS; } static int _testHash1(void) { @@ -633,9 +635,9 @@ static int _testHash1(void) { PrintAndLogEx(ERR, "Error with hash1!"); printarr("calculated", k, 8); printarr("expected", expected, 8); - return 1; + return PM3_ESOFT; } - return 0; + return PM3_SUCCESS; } int testElite(bool slowtests) { @@ -662,15 +664,21 @@ int testElite(bool slowtests) { hash2(k_cus, keytable); printarr_human_readable("Hash2", keytable, 128); if (keytable[3] == 0xA1 && keytable[0x30] == 0xA3 && keytable[0x6F] == 0x95) { - PrintAndLogEx(SUCCESS, "Hash2 looks fine..."); + PrintAndLogEx(SUCCESS, " Hash2 (%s)", _GREEN_("ok")); } - int errors = 0 ; + int res = PM3_SUCCESS; PrintAndLogEx(INFO, "Testing hash1..."); - errors += _testHash1(); - PrintAndLogEx(INFO, "Testing key diversification ..."); - errors += _test_iclass_key_permutation(); + res += _testHash1(); + PrintAndLogEx(INFO, " hash1 (%s)", (res == PM3_SUCCESS) ? _GREEN_("ok") : _RED_("fail") ); + + PrintAndLogEx(INFO, "Testing key diversification..."); + res += _test_iclass_key_permutation(); + if (res == PM3_SUCCESS) + PrintAndLogEx(INFO, " key diversification (%s)", (res == PM3_SUCCESS) ? _GREEN_("ok") : _RED_("fail") ); + if (slowtests) - errors += _testBruteforce(); - return errors; + res += _testBruteforce(); + + return res; } diff --git a/client/src/loclass/elite_crack.h b/client/src/loclass/elite_crack.h index 8b357ac66..a9de5dbd1 100644 --- a/client/src/loclass/elite_crack.h +++ b/client/src/loclass/elite_crack.h @@ -104,7 +104,7 @@ int bruteforceItem(dumpdata item, uint16_t keytable[]); * @param csn the CSN used * @param k output */ -void hash1(uint8_t csn[], uint8_t k[]); +void hash1(uint8_t *csn, uint8_t *k); void hash2(uint8_t *key64, uint8_t *outp_keytable); /** * From dismantling iclass-paper: diff --git a/client/src/loclass/hash1_brute.c b/client/src/loclass/hash1_brute.c index e381c5a3a..1c944b99e 100644 --- a/client/src/loclass/hash1_brute.c +++ b/client/src/loclass/hash1_brute.c @@ -8,7 +8,6 @@ #include #include "elite_crack.h" - static void calc_score(uint8_t *csn, uint8_t *k) { uint8_t score = 0 ; uint8_t i; diff --git a/client/src/loclass/ikeys.c b/client/src/loclass/ikeys.c index 3bbe9fc2b..d828583d7 100644 --- a/client/src/loclass/ikeys.c +++ b/client/src/loclass/ikeys.c @@ -72,13 +72,17 @@ From "Dismantling iclass": #include "cipherutils.h" #include "mbedtls/des.h" -uint8_t pi[35] = {0x0F, 0x17, 0x1B, 0x1D, 0x1E, 0x27, 0x2B, 0x2D, 0x2E, 0x33, 0x35, 0x39, 0x36, 0x3A, 0x3C, 0x47, 0x4B, 0x4D, 0x4E, 0x53, 0x55, 0x56, 0x59, 0x5A, 0x5C, 0x63, 0x65, 0x66, 0x69, 0x6A, 0x6C, 0x71, 0x72, 0x74, 0x78}; +uint8_t pi[35] = { + 0x0F, 0x17, 0x1B, 0x1D, 0x1E, 0x27, 0x2B, 0x2D, + 0x2E, 0x33, 0x35, 0x39, 0x36, 0x3A, 0x3C, 0x47, + 0x4B, 0x4D, 0x4E, 0x53, 0x55, 0x56, 0x59, 0x5A, + 0x5C, 0x63, 0x65, 0x66, 0x69, 0x6A, 0x6C, 0x71, + 0x72, 0x74, 0x78 +}; static mbedtls_des_context ctx_enc; static mbedtls_des_context ctx_dec; -static int debug_print = 0; - /** * @brief The key diversification algorithm uses 6-bit bytes. * This implementation uses 64 bit uint to pack seven of them into one @@ -219,25 +223,19 @@ static void permute(BitstreamIn *p_in, uint64_t z, int l, int r, BitstreamOut *o } } -static void printbegin(void) { - if (debug_print < 2) - return; - - PrintAndLogEx(NORMAL, " | x| y|z0|z1|z2|z3|z4|z5|z6|z7|"); -} - static void printState(const char *desc, uint64_t c) { - if (debug_print < 2) - return; - - printf("%s : ", desc); + char s[60] = {0}; + snprintf(s, sizeof(s), "%s : ", desc); + uint8_t x = (c & 0xFF00000000000000) >> 56; uint8_t y = (c & 0x00FF000000000000) >> 48; - printf(" %02x %02x", x, y); - int i; - for (i = 0; i < 8; i++) - printf(" %02x", getSixBitByte(c, i)); - printf("\n"); + + snprintf(s + strlen(s), sizeof(s) - strlen(s), " %02x %02x", x, y); + + for (uint8_t i = 0; i < 8; i++) + snprintf(s + strlen(s), sizeof(s) - strlen(s), " %02x", getSixBitByte(c, i)); + + PrintAndLogEx(DEBUG, "%s", s); } /** @@ -254,7 +252,7 @@ static void printState(const char *desc, uint64_t c) { void hash0(uint64_t c, uint8_t k[8]) { c = swapZvalues(c); - printbegin(); + PrintAndLogEx(DEBUG, " | x| y|z0|z1|z2|z3|z4|z5|z6|z7|"); printState("origin", c); //These 64 bits are divided as c = x, y, z [0] , . . . , z [7] // x = 8 bits @@ -286,7 +284,7 @@ void hash0(uint64_t c, uint8_t k[8]) { if (x & 1) //Check if x7 is 1 p = ~p; - if (debug_print >= 2) PrintAndLogEx(DEBUG, "p:%02x", p); + PrintAndLogEx(DEBUG, "p: %02x", p); BitstreamIn p_in = { &p, 8, 0 }; uint8_t outbuffer[] = {0, 0, 0, 0, 0, 0, 0, 0}; @@ -297,7 +295,7 @@ void hash0(uint64_t c, uint8_t k[8]) { // if all went well //Shift z-values down onto the lower segment - uint64_t zTilde = x_bytes_to_num(outbuffer, 8); + uint64_t zTilde = x_bytes_to_num(outbuffer, sizeof(outbuffer)); zTilde >>= 16; @@ -353,7 +351,7 @@ void hash0(uint64_t c, uint8_t k[8]) { * @param key * @param div_key */ -void diversifyKey(uint8_t csn[8], uint8_t key[8], uint8_t div_key[8]) { +void diversifyKey(uint8_t* csn, uint8_t* key, uint8_t* div_key) { // Prepare the DES key mbedtls_des_setkey_enc(&ctx_enc, key); @@ -363,10 +361,10 @@ void diversifyKey(uint8_t csn[8], uint8_t key[8], uint8_t div_key[8]) { mbedtls_des_crypt_ecb(&ctx_enc, csn, crypted_csn); //Calculate HASH0(DES)) - uint64_t crypt_csn = x_bytes_to_num(crypted_csn, 8); + uint64_t c_csn = x_bytes_to_num(crypted_csn, sizeof(crypted_csn)); //uint64_t crypted_csn_swapped = swapZvalues(crypt_csn); - hash0(crypt_csn, div_key); + hash0(c_csn, div_key); } /* static void testPermute(void) { @@ -571,58 +569,42 @@ static int testKeyDiversificationWithMasterkeyTestcases(void) { return error; } -static void print64bits(const char *name, uint64_t val) { - printf("%s%08x%08x\n", name, (uint32_t)(val >> 32), (uint32_t)(val & 0xFFFFFFFF)); -} +static int testCryptedCSN(uint64_t crypted_csn, uint64_t expected) { -static uint64_t testCryptedCSN(uint64_t crypted_csn, uint64_t expected) { - int retval = 0; uint8_t result[8] = {0}; - if (debug_print) { - PrintAndLogEx(DEBUG, "debug_print %d", debug_print); - print64bits(" {csn} ", crypted_csn); - } - uint64_t crypted_csn_swapped = swapZvalues(crypted_csn); - - if (debug_print) print64bits(" {csn-revz} ", crypted_csn_swapped); - hash0(crypted_csn, result); uint64_t resultbyte = x_bytes_to_num(result, 8); - if (debug_print) print64bits(" hash0 ", resultbyte); + + PrintAndLogEx(DEBUG, ""); + PrintAndLogEx(DEBUG, " {csn} %"PRIx64, crypted_csn); + PrintAndLogEx(DEBUG, " {csn-revz} %"PRIx64, crypted_csn_swapped); + PrintAndLogEx(DEBUG, " hash0 %"PRIx64 " (%s)", resultbyte, (resultbyte == expected) ? _GREEN_("OK") : _RED_("FAIL") ); if (resultbyte != expected) { - if (debug_print) { - PrintAndLogEx(NORMAL, "\n"); - PrintAndLogEx(FAILED, "FAIL!"); - print64bits(" expected ", expected); - } - retval = 1; - } else { - if (debug_print) PrintAndLogEx(SUCCESS, "[OK]"); + PrintAndLogEx(DEBUG, " expected " _YELLOW_("%"PRIx64), expected); + return PM3_ESOFT; } - return retval; + return PM3_SUCCESS; } static int testDES2(uint64_t csn, uint64_t expected) { uint8_t result[8] = {0}; uint8_t input[8] = {0}; - print64bits(" csn ", csn); + PrintAndLogEx(DEBUG, " csn %"PRIx64, csn); x_num_to_bytes(csn, 8, input); mbedtls_des_crypt_ecb(&ctx_enc, input, result); uint64_t crypt_csn = x_bytes_to_num(result, 8); - print64bits(" {csn} ", crypt_csn); - print64bits(" expected ", expected); - if (expected == crypt_csn) { - PrintAndLogEx(SUCCESS, "OK"); - return 0; - } else { - return 1; - } + PrintAndLogEx(DEBUG, " {csn} %"PRIx64, crypt_csn); + PrintAndLogEx(DEBUG, " expected %"PRIx64 " (%s)", expected, (expected == crypt_csn) ? _GREEN_("OK") : _RED_("FAIL") ); + + if (expected != crypt_csn) + return PM3_ESOFT; + return PM3_SUCCESS; } /** @@ -632,53 +614,52 @@ static int testDES2(uint64_t csn, uint64_t expected) { */ static int doTestsWithKnownInputs(void) { // KSel from http://www.proxmark.org/forum/viewtopic.php?pid=10977#p10977 - int errors = 0; - PrintAndLogEx(SUCCESS, "Testing DES encryption"); + PrintAndLogEx(INFO, "Testing DES encryption"); uint8_t key[8] = {0x6c, 0x8d, 0x44, 0xf9, 0x2a, 0x2d, 0x01, 0xbf}; mbedtls_des_setkey_enc(&ctx_enc, key); testDES2(0xbbbbaaaabbbbeeee, 0xd6ad3ca619659e6b); - PrintAndLogEx(SUCCESS, "Testing hashing algorithm"); + PrintAndLogEx(INFO, "Testing hashing algorithm"); - errors += testCryptedCSN(0x0102030405060708, 0x0bdd6512073c460a); - errors += testCryptedCSN(0x1020304050607080, 0x0208211405f3381f); - errors += testCryptedCSN(0x1122334455667788, 0x2bee256d40ac1f3a); - errors += testCryptedCSN(0xabcdabcdabcdabcd, 0xa91c9ec66f7da592); - errors += testCryptedCSN(0xbcdabcdabcdabcda, 0x79ca5796a474e19b); - errors += testCryptedCSN(0xcdabcdabcdabcdab, 0xa8901b9f7ec76da4); - errors += testCryptedCSN(0xdabcdabcdabcdabc, 0x357aa8e0979a5b8d); - errors += testCryptedCSN(0x21ba6565071f9299, 0x34e80f88d5cf39ea); - errors += testCryptedCSN(0x14e2adfc5bb7e134, 0x6ac90c6508bd9ea3); + int res = PM3_SUCCESS; + res += testCryptedCSN(0x0102030405060708, 0x0bdd6512073c460a); + res += testCryptedCSN(0x1020304050607080, 0x0208211405f3381f); + res += testCryptedCSN(0x1122334455667788, 0x2bee256d40ac1f3a); + res += testCryptedCSN(0xabcdabcdabcdabcd, 0xa91c9ec66f7da592); + res += testCryptedCSN(0xbcdabcdabcdabcda, 0x79ca5796a474e19b); + res += testCryptedCSN(0xcdabcdabcdabcdab, 0xa8901b9f7ec76da4); + res += testCryptedCSN(0xdabcdabcdabcdabc, 0x357aa8e0979a5b8d); + res += testCryptedCSN(0x21ba6565071f9299, 0x34e80f88d5cf39ea); + res += testCryptedCSN(0x14e2adfc5bb7e134, 0x6ac90c6508bd9ea3); - if (errors) - PrintAndLogEx(FAILED, "%d errors occurred (9 testcases)", errors); - else + if (res != PM3_SUCCESS) { + PrintAndLogEx(FAILED, "%d res occurred (9 testcases)", res); + res = PM3_ESOFT; + } else { PrintAndLogEx(SUCCESS, "Hashing seems to work (9 testcases)"); - return errors; + res = PM3_SUCCESS; + } + return res; } - static bool readKeyFile(uint8_t *key, size_t keylen) { + bool retval = false; size_t len = 0; uint8_t *keyptr = NULL; if (loadFile_safe("iclass_key.bin", "", (void **)&keyptr, &len) != PM3_SUCCESS) { - return false; + return retval; } - - if (keylen != len) { - free(keyptr); - return false; + if (keylen == len) { + memcpy(key, keyptr, keylen); + retval = true; } - - memcpy(key, keyptr, keylen); free(keyptr); - return true; + return retval; } -int doKeyTests(uint8_t debuglevel) { - debug_print = debuglevel; +int doKeyTests(void) { PrintAndLogEx(INFO, "Checking if the master key is present (iclass_key.bin)..."); uint8_t key[8] = {0}; @@ -705,9 +686,8 @@ int doKeyTests(uint8_t debuglevel) { testKeyDiversificationWithMasterkeyTestcases(); } } - PrintAndLogEx(SUCCESS, "Testing key diversification with non-sensitive keys..."); - doTestsWithKnownInputs(); - return 0; + PrintAndLogEx(INFO, "Testing key diversification with non-sensitive keys..."); + return doTestsWithKnownInputs(); } /** diff --git a/client/src/loclass/ikeys.h b/client/src/loclass/ikeys.h index ccbc5539b..4fceda95f 100644 --- a/client/src/loclass/ikeys.h +++ b/client/src/loclass/ikeys.h @@ -52,7 +52,7 @@ * @return */ void hash0(uint64_t c, uint8_t k[8]); -int doKeyTests(uint8_t debuglevel); +int doKeyTests(void); /** * @brief Performs Elite-class key diversification * @param csn From 351a8d26affe4eae1eb4e69ebf346853c7bf2a38 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 15 May 2020 17:03:28 +0200 Subject: [PATCH 005/527] adjust tests --- client/src/cmdhficlass.c | 10 +++++++--- 1 file changed, 7 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 66314e2c6..73b9a6b18 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1938,11 +1938,15 @@ static int CmdHFiClass_loclass(const char *Cmd) { } } else if (opt == 't') { char opt2 = tolower(param_getchar(Cmd, 1)); + int errors = testCipherUtils(); errors += testMAC(); - errors += doKeyTests(0); + errors += doKeyTests(); errors += testElite(opt2 == 'l'); - if (errors) PrintAndLogEx(ERR, "There were errors!!!"); + + if (errors != PM3_SUCCESS) + PrintAndLogEx(ERR, "There were errors!!!"); + return PM3_ESOFT; } return PM3_SUCCESS; @@ -2076,7 +2080,7 @@ void HFiClassCalcDivKey(uint8_t *CSN, uint8_t *KEY, uint8_t *div_key, bool elite hash2(KEY, keytable); hash1(CSN, key_index); for (uint8_t i = 0; i < 8 ; i++) - key_sel[i] = keytable[key_index[i]] & 0xFF; + key_sel[i] = keytable[key_index[i]]; //Permute from iclass format to standard format permutekey_rev(key_sel, key_sel_p); From 8c656492582bff98f0b257bb380c8e63b5f88f27 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 15 May 2020 17:04:33 +0200 Subject: [PATCH 006/527] better fault text --- client/src/proxmark3.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 08a4686ac..c8d70cb0d 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -241,8 +241,11 @@ check_script: // read script file if (fgets(script_cmd_buf, sizeof(script_cmd_buf), current_cmdscriptfile()) == NULL) { + PrintAndLogEx(ERR, "Unexpected end, [%s]", current_cmdscriptfile()); + if (!pop_cmdscriptfile()) break; + goto check_script; } else { prompt_ctx = PROXPROMPT_CTX_SCRIPTFILE; From 43b5ba4ae2eeb1e05dede8b1c94fd596c6440058 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 15 May 2020 17:05:33 +0200 Subject: [PATCH 007/527] chg: enabled param to swap modulation to test --- client/luascripts/test_t55x7.lua | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/client/luascripts/test_t55x7.lua b/client/luascripts/test_t55x7.lua index b92375520..f6e0e1ca2 100644 --- a/client/luascripts/test_t55x7.lua +++ b/client/luascripts/test_t55x7.lua @@ -9,7 +9,7 @@ local floor = math.floor copyright = '' author = "Iceman" -version = 'v1.0.2' +version = 'v1.0.3' desc =[[ This script will program a T55x7 TAG with a configuration and four blocks of data. It will then try to detect and read back those block data and compare if read data matches the expected data. @@ -31,12 +31,17 @@ testsuit for T55XX commands demodulation ]] example = [[ 1. script run test_t55x7 + 2. script run test_t55x7 -t FSK2A + 3. script run test_t55x7 -t PSK1 ]] usage = [[ -script run test_t55x7 [-h] +script run test_t55x7 [-h] [-t ]] arguments = [[ -h this help + -t (optional, defaults to ASK) 'PSK1', 'PSK2', 'PSK3', + 'FSK1', 'FSK2', 'FSK1A', 'FSK2A', + 'ASK', 'BI' ]] local DEBUG = true -- the debug flag @@ -303,9 +308,11 @@ local function main(args) print( string.rep('--',20) ) print( string.rep('--',20) ) + local modulation_type = 'ASK' -- Arguments for the script - for o, arg in getopt.getopt(args, 'h') do + for o, arg in getopt.getopt(args, 'ht:') do if o == 'h' then return help() end + if o == 't' then modulation_type = arg end end core.clearCommandBuffer() @@ -313,7 +320,8 @@ local function main(args) -- Adjust this table to set which configurations should be tested -- local test_modes = { 'PSK1', 'PSK2', 'PSK3', 'FSK1', 'FSK2', 'FSK1A', 'FSK2A', 'ASK', 'BI' } - local test_modes = { 'ASK' } + --local test_modes = { 'PSK1' } + local test_modes = { modulation_type } for _ = 1, #test_modes do res = WipeCard() From 94e1a9e680b180be8006b6a7d69825ac7b647c5b Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 15 May 2020 17:37:22 +0200 Subject: [PATCH 008/527] Add mf_nonce_brute to main makefile --- Makefile | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/Makefile b/Makefile index 1da96fa2e..2ba15fb0c 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ ifneq (,$(DESTDIR)) endif endif -all clean install uninstall: %: client/% bootrom/% armsrc/% recovery/% mfkey/% nonce2key/% fpga_compress/% +all clean install uninstall: %: client/% bootrom/% armsrc/% recovery/% mfkey/% nonce2key/% mf_nonce_brute/% fpga_compress/% INSTALLTOOLS=pm3_eml2lower.sh pm3_eml2upper.sh pm3_mfdread.py pm3_mfd2eml.py pm3_eml2mfd.py findbits.py rfidtest.pl xorcheck.py INSTALLSIMFW=sim011.bin sim011.sha512.txt @@ -84,6 +84,9 @@ mfkey/%: FORCE nonce2key/%: FORCE $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C tools/nonce2key $(patsubst nonce2key/%,%,$@) DESTDIR=$(MYDESTDIR) +mf_nonce_brute/%: FORCE + $(info [*] MAKE $@) + $(Q)$(MAKE) --no-print-directory -C tools/mf_nonce_brute $(patsubst mf_nonce_brute/%,%,$@) DESTDIR=$(MYDESTDIR) fpga_compress/%: FORCE $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C tools/fpga_compress $(patsubst fpga_compress/%,%,$@) DESTDIR=$(MYDESTDIR) @@ -103,7 +106,7 @@ recovery/%: FORCE cleanifplatformchanged $(Q)$(MAKE) --no-print-directory -C recovery $(patsubst recovery/%,%,$@) DESTDIR=$(MYDESTDIR) FORCE: # Dummy target to force remake in the subdirectories, even if files exist (this Makefile doesn't know about the prerequisites) -.PHONY: all clean install uninstall help _test bootrom fullimage recovery client mfkey nonce2key style checks FORCE udev accessrights cleanifplatformchanged +.PHONY: all clean install uninstall help _test bootrom fullimage recovery client mfkey nonce2key mf_nonce_brute style checks FORCE udev accessrights cleanifplatformchanged help: @echo "Multi-OS Makefile" @@ -122,6 +125,7 @@ help: @echo "+ client - Make only the OS-specific host client" @echo "+ mfkey - Make tools/mfkey" @echo "+ nonce2key - Make tools/nonce2key" + @echo "+ mf_nonce_brute - Make tools/mf_nonce_brute" @echo "+ fpga_compress - Make tools/fpga_compress" @echo @echo "+ style - Apply some automated source code formatting rules" @@ -152,6 +156,8 @@ mfkey: mfkey/all nonce2key: nonce2key/all +mf_nonce_brute: mf_nonce_brute/all + fpga_compress: fpga_compress/all newtarbin: From 5984e1c03ed0dcf9741c28e6c87c42c2235ede97 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 15 May 2020 17:40:59 +0200 Subject: [PATCH 009/527] makefiles: allow to skip pthread (for termux) --- client/Makefile | 5 ++++- tools/mf_nonce_brute/Makefile | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/client/Makefile b/client/Makefile index 54fa3af2c..ad2f5aa75 100644 --- a/client/Makefile +++ b/client/Makefile @@ -22,7 +22,10 @@ vpath %.dic dictionaries OBJDIR = obj LDLIBS ?= -L/usr/local/lib -LDLIBS += -lreadline -lpthread -lm +LDLIBS += -lreadline -lm +ifneq ($(SKIPPTHREAD),1) +LDLIBS += -lpthread +endif # RPi Zero gcc requires -latomic # but MacOSX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld diff --git a/tools/mf_nonce_brute/Makefile b/tools/mf_nonce_brute/Makefile index 7672c89a4..cf565e72c 100644 --- a/tools/mf_nonce_brute/Makefile +++ b/tools/mf_nonce_brute/Makefile @@ -3,7 +3,10 @@ MYSRCS = crypto1.c crapto1.c bucketsort.c iso14443crc.c sleep.c MYINCLUDES = -I../../include -I../../common MYCFLAGS = MYDEFS = -MYLDLIBS = -lpthread +MYLDLIBS = +ifneq ($(SKIPPTHREAD),1) +MYLDLIBS += -lpthread +endif BINS = mf_nonce_brute INSTALLTOOLS = $(BINS) From 39258fa5c5d5da7ce4172cc5ee29552164773b80 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 15 May 2020 18:00:06 +0200 Subject: [PATCH 010/527] revert... --- client/src/proxmark3.c | 2 -- 1 file changed, 2 deletions(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index c8d70cb0d..abf014e08 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -241,8 +241,6 @@ check_script: // read script file if (fgets(script_cmd_buf, sizeof(script_cmd_buf), current_cmdscriptfile()) == NULL) { - PrintAndLogEx(ERR, "Unexpected end, [%s]", current_cmdscriptfile()); - if (!pop_cmdscriptfile()) break; From c8e281cb6bb5a327a86e9464930cc6e33de7ee5f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Fri, 15 May 2020 18:06:06 +0200 Subject: [PATCH 011/527] fix: ok text for iclass loclass test adjusted --- pm3test.sh | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pm3test.sh b/pm3test.sh index f96285e7e..5b91c0bdc 100755 --- a/pm3test.sh +++ b/pm3test.sh @@ -136,7 +136,7 @@ while true; do if ! CheckExecute "hf iclass test" "$PM3BIN -c 'hf iclass loclass t l'" "verified ok"; then break; fi if ! CheckExecute "emv test" "$PM3BIN -c 'emv test -l'" "Test(s) \[ OK"; then break; fi else - if ! CheckExecute "hf iclass test" "$PM3BIN -c 'hf iclass loclass t'" "OK!"; then break; fi + if ! CheckExecute "hf iclass test" "$PM3BIN -c 'hf iclass loclass t'" "key diversification (ok)"; then break; fi if ! CheckExecute "emv test" "$PM3BIN -c 'emv test'" "Test(s) \[ OK"; then break; fi fi From 4edea34b6b72a1d27289d7b5325077e0a560799c Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sat, 16 May 2020 14:24:21 +0200 Subject: [PATCH 012/527] pm3 script for linux: alternative if udevadm is not available (termux) --- pm3 | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/pm3 b/pm3 index 4af441c40..82e794d42 100755 --- a/pm3 +++ b/pm3 @@ -31,10 +31,19 @@ function get_pm3_list_Linux { N=$1 PM3LIST=() for DEV in $(find /dev/ttyACM* 2>/dev/null); do - if udevadm info -q property -n "$DEV" | grep -q "ID_VENDOR=proxmark.org"; then - PM3LIST+=("$DEV") - if [ ${#PM3LIST[*]} -ge $N ]; then - return + if which udevadm >/dev/null; then + if udevadm info -q property -n "$DEV" | grep -q "ID_VENDOR=proxmark.org"; then + PM3LIST+=("$DEV") + if [ ${#PM3LIST[*]} -ge $N ]; then + return + fi + fi + else + if grep -q "PRODUCT=9ac4/4b8f" "/sys/class/tty/${DEV#/dev/}/../../uevent" 2>/dev/null; then + PM3LIST+=("$DEV") + if [ ${#PM3LIST[*]} -ge $N ]; then + return + fi fi fi done From eb7957d9942a0bac191c1092b89c7a422de2d919 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sat, 16 May 2020 14:50:43 +0200 Subject: [PATCH 013/527] Add mf_nonce_brute in pm3test --- pm3test.sh | 3 +++ 1 file changed, 3 insertions(+) diff --git a/pm3test.sh b/pm3test.sh index 5b91c0bdc..b65f94a15 100755 --- a/pm3test.sh +++ b/pm3test.sh @@ -151,6 +151,9 @@ while true; do if ! CheckExecute "findbits test" "tools/findbits.py 73 0110010101110011" "Match at bit 9: 011001010"; then break; fi if ! CheckExecute "findbits_test test" "tools/findbits_test.py 2>&1" "OK"; then break; fi if ! CheckExecute "pm3_eml_mfd test" "tools/pm3_eml_mfd_test.py 2>&1" "OK"; then break; fi + if $SLOWTESTS; then + if ! CheckExecute "mf_nonce_brute test" "tools/mf_nonce_brute/mf_nonce_brute 9c599b32 5a920d85 1011 98d76b77 d6c6e870 0000 ca7e0b63 0111 3e709c8a" "Key.*: \[ffffffffffff\]"; then break; fi + fi fi printf "\n${C_GREEN}Tests [OK]${C_NC}\n\n" From bca9326684b29d9c8b3a37398c48c30305c8efce Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sat, 16 May 2020 14:55:33 +0200 Subject: [PATCH 014/527] Document SKIPPTHREAD --- doc/md/Development/Maintainers.md | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/doc/md/Development/Maintainers.md b/doc/md/Development/Maintainers.md index 705d97707..85fcf8963 100644 --- a/doc/md/Development/Maintainers.md +++ b/doc/md/Development/Maintainers.md @@ -65,6 +65,10 @@ If you're cross-compiling, these ones might be useful: * `make client SKIPREVENGTEST=1` to skip compilation and execution of a consistency test for reveng, which can be problematic in case of cross-compilation * `make client cpu_arch=generic` to skip Intel specialized hardnested components, which is required e.g. if cross-compilation host is Intel but not the target +On some architectures, pthread library is not present: + +* `make client SKIPPTHREAD=1` to skip `-lpthread` at linker stage. + `make install` is actually triggering the following individual targets which can be accessed individually: * `make client/install` From bc767f167f179c396c772a83392245423b8ffac6 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sat, 16 May 2020 15:58:24 +0200 Subject: [PATCH 015/527] pm3 without udev: change detection routine --- pm3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pm3 b/pm3 index 82e794d42..ddcaa14ee 100755 --- a/pm3 +++ b/pm3 @@ -39,7 +39,7 @@ function get_pm3_list_Linux { fi fi else - if grep -q "PRODUCT=9ac4/4b8f" "/sys/class/tty/${DEV#/dev/}/../../uevent" 2>/dev/null; then + if grep -q "proxmark.org" "/sys/class/tty/${DEV#/dev/}/../../../manufacturer" 2>/dev/null; then PM3LIST+=("$DEV") if [ ${#PM3LIST[*]} -ge $N ]; then return From be1659b1bf99da52e56d2bdf6f26e3b4c0094012 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sun, 17 May 2020 12:06:39 +0200 Subject: [PATCH 016/527] pm3: textual and --list with no device, exit 1 --- pm3 | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pm3 b/pm3 index ddcaa14ee..c9c616352 100755 --- a/pm3 +++ b/pm3 @@ -338,7 +338,7 @@ done if [ "$1" == "--list" ]; then shift if [ "$1" != "" ]; then - echo "Option --list must be used alone" + echo "[!!] Option --list must be used alone" exit 1 fi SHOWLIST=true @@ -352,7 +352,7 @@ if [ "$1" == "-n" ]; then N=$1 shift else - echo "Option -n requires a number between 1 and 9, got \"$1\"" + echo "[!!] Option -n requires a number between 1 and 9, got \"$1\"" exit 1 fi fi @@ -363,7 +363,7 @@ if [ "$HOSTOS" = "LINUX" ]; then # Test presence of wmic wmic.exe computersystem get name >/dev/null 2>&1 if [ $? -ne 0 ]; then - echo "[!] Cannot run wmic.exe, are you sure your WSL is authorized to run Windows processes? (cf WSL interop flag)" + echo "[!!] Cannot run wmic.exe, are you sure your WSL is authorized to run Windows processes? (cf WSL interop flag)" exit 1 fi GETPM3LIST=get_pm3_list_WSL @@ -384,7 +384,7 @@ if $SHOWLIST; then $GETPM3LIST 9 if [ ${#PM3LIST} -lt 1 ]; then echo "[!!] No port found" - exit 0 + exit 1 fi n=1 for DEV in ${PM3LIST[@]} From e3180be45c1a4e5d3426c3fce1d2086cc2364021 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sun, 17 May 2020 12:12:13 +0200 Subject: [PATCH 017/527] pm3: err msgs on stderr --- pm3 | 20 ++++++++++---------- 1 file changed, 10 insertions(+), 10 deletions(-) diff --git a/pm3 b/pm3 index c9c616352..5509d1087 100755 --- a/pm3 +++ b/pm3 @@ -148,7 +148,7 @@ function get_pm3_list_WSL { if [ -e "$DEV" ]; then PM3LIST+=("$DEV") if [ ! -w "$DEV" ]; then - echo "[!!] Let's give users read/write access to $DEV" + echo "[!] Let's give users read/write access to $DEV" sudo chmod 666 "$DEV" fi if [ ${#PM3LIST[*]} -ge $N ]; then @@ -167,7 +167,7 @@ function get_pm3_list_WSL { if [ -e "$DEV" ]; then PM3LIST+=("$DEV") if [ ! -w "$DEV" ]; then - echo "[!!] Let's give users read/write access to $DEV" + echo "[!] Let's give users read/write access to $DEV" sudo chmod 666 "$DEV" fi if [ ${#PM3LIST[*]} -ge $N ]; then @@ -185,7 +185,7 @@ function get_pm3_list_WSL { if [ -e "$DEV" ]; then PM3LIST+=("$DEV") if [ ! -w "$DEV" ]; then - echo "[!!] Let's give users read/write access to $DEV" + echo "[!] Let's give users read/write access to $DEV" sudo chmod 666 "$DEV" fi if [ ${#PM3LIST[*]} -ge $N ]; then @@ -319,7 +319,7 @@ Usage: EOF } else - echo "[!!] Script ran under unknown name, abort: $SCRIPT" + echo >&2 "[!!] Script ran under unknown name, abort: $SCRIPT" exit 1 fi if [ "$1" == "-h" ] || [ "$1" == "--help" ]; then @@ -338,7 +338,7 @@ done if [ "$1" == "--list" ]; then shift if [ "$1" != "" ]; then - echo "[!!] Option --list must be used alone" + echo >&2 "[!!] Option --list must be used alone" exit 1 fi SHOWLIST=true @@ -352,7 +352,7 @@ if [ "$1" == "-n" ]; then N=$1 shift else - echo "[!!] Option -n requires a number between 1 and 9, got \"$1\"" + echo >&2 "[!!] Option -n requires a number between 1 and 9, got \"$1\"" exit 1 fi fi @@ -363,7 +363,7 @@ if [ "$HOSTOS" = "LINUX" ]; then # Test presence of wmic wmic.exe computersystem get name >/dev/null 2>&1 if [ $? -ne 0 ]; then - echo "[!!] Cannot run wmic.exe, are you sure your WSL is authorized to run Windows processes? (cf WSL interop flag)" + echo >&2 "[!!] Cannot run wmic.exe, are you sure your WSL is authorized to run Windows processes? (cf WSL interop flag)" exit 1 fi GETPM3LIST=get_pm3_list_WSL @@ -375,7 +375,7 @@ elif [ "$HOSTOS" = "DARWIN" ]; then elif [[ "$HOSTOS" =~ MINGW(32|64)_NT* ]]; then GETPM3LIST=get_pm3_list_Windows else - echo "[!!] Host OS not recognized, abort: $HOSTOS" + echo >&2 "[!!] Host OS not recognized, abort: $HOSTOS" exit 1 fi @@ -383,7 +383,7 @@ if $SHOWLIST; then # Probe for up to 9 devs $GETPM3LIST 9 if [ ${#PM3LIST} -lt 1 ]; then - echo "[!!] No port found" + echo >&2 "[!!] No port found" exit 1 fi n=1 @@ -409,7 +409,7 @@ while true; do done if [ ${#PM3LIST} -lt $N ]; then - echo "[!!] No port found, abort" + echo >&2 "[!!] No port found, abort" exit 1 fi From 227c4e89bd6581bc08cb7cf3d823e3a60af9d385 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sun, 17 May 2020 12:23:03 +0200 Subject: [PATCH 018/527] pm3: shellcheck --- pm3 | 40 +++++++++++++++++++--------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/pm3 b/pm3 index 5509d1087..19399f0bd 100755 --- a/pm3 +++ b/pm3 @@ -34,14 +34,14 @@ function get_pm3_list_Linux { if which udevadm >/dev/null; then if udevadm info -q property -n "$DEV" | grep -q "ID_VENDOR=proxmark.org"; then PM3LIST+=("$DEV") - if [ ${#PM3LIST[*]} -ge $N ]; then + if [ ${#PM3LIST[*]} -ge "$N" ]; then return fi fi else if grep -q "proxmark.org" "/sys/class/tty/${DEV#/dev/}/../../../manufacturer" 2>/dev/null; then PM3LIST+=("$DEV") - if [ ${#PM3LIST[*]} -ge $N ]; then + if [ ${#PM3LIST[*]} -ge "$N" ]; then return fi fi @@ -52,7 +52,7 @@ function get_pm3_list_Linux { for DEV in $(find /dev/ttyUSB* 2>/dev/null); do if udevadm info -q property -n "$DEV" | grep -q "ID_MODEL=CP2104_USB_to_UART_Bridge_Controller"; then PM3LIST+=("$DEV") - if [ ${#PM3LIST[*]} -ge $N ]; then + if [ ${#PM3LIST[*]} -ge "$N" ]; then return fi fi @@ -67,7 +67,7 @@ function get_pm3_list_Linux { # check which are Proxmark3 and, side-effect, if they're actually present if hcitool name "$MAC" | grep -q "PM3"; then PM3LIST+=("/dev/$DEV") - if [ ${#PM3LIST[*]} -ge $N ]; then + if [ ${#PM3LIST[*]} -ge "$N" ]; then return fi fi @@ -75,7 +75,6 @@ function get_pm3_list_Linux { fi if $FINDBTDIRECT; then # check if the MAC of a Proxmark3 was registered in the known devices - MACS=() for MAC in $(dbus-send --system --print-reply --type=method_call --dest='org.bluez' '/' org.freedesktop.DBus.ObjectManager.GetManagedObjects 2>/dev/null|\ awk '/"Address"/{getline;gsub(/"/,"",$3);a=$3}/Name/{getline;if (/PM3_RDV4/) print a}'); do PM3LIST+=("bt:$MAC") @@ -91,7 +90,7 @@ function get_pm3_list_macOS { $2=="USB Vendor Name"{b=($4=="proxmark.org")} b==1 && $2=="IODialinDevice"{print $4}'); do PM3LIST+=("$DEV") - if [ ${#PM3LIST[*]} -ge $N ]; then + if [ ${#PM3LIST[*]} -ge "$N" ]; then return fi done @@ -106,7 +105,7 @@ function get_pm3_list_Windows { for DEV in $(powershell.exe -command "Get-CimInstance -ClassName Win32_PnPEntity | Where-Object Caption -like 'Standard Serial over Bluetooth link (COM*' | Select Name" 2> /dev/null | awk '$0 ~ /COM/{print substr($6,2,4)}'); do DEV=${DEV/ */} PM3LIST+=("$DEV") - if [ ${#PM3LIST[*]} -ge $N ]; then + if [ ${#PM3LIST[*]} -ge "$N" ]; then return fi done @@ -116,7 +115,7 @@ function get_pm3_list_Windows { for DEV in $(powershell.exe -command "Get-CimInstance -ClassName Win32_serialport | Where-Object PNPDeviceID -like '*VID_9AC4&PID_4B8F*' | Select DeviceID" 2>/dev/null | awk '/^COM/{print $1}'); do DEV=${DEV/ */} PM3LIST+=("$DEV") - if [ ${#PM3LIST[*]} -ge $N ]; then + if [ ${#PM3LIST[*]} -ge "$N" ]; then return fi done @@ -126,7 +125,7 @@ function get_pm3_list_Windows { for DEV in $(powershell.exe -command "Get-CimInstance -ClassName Win32_serialport | Where-Object PNPDeviceID -like '*VID_10C4&PID_EA60*' | Select DeviceID" 2>/dev/null | awk '/^COM/{print $1}'); do DEV=${DEV/ */} PM3LIST+=("$DEV") - if [ ${#PM3LIST[*]} -ge $N ]; then + if [ ${#PM3LIST[*]} -ge "$N" ]; then return fi done @@ -151,7 +150,7 @@ function get_pm3_list_WSL { echo "[!] Let's give users read/write access to $DEV" sudo chmod 666 "$DEV" fi - if [ ${#PM3LIST[*]} -ge $N ]; then + if [ ${#PM3LIST[*]} -ge "$N" ]; then return fi fi @@ -170,7 +169,7 @@ function get_pm3_list_WSL { echo "[!] Let's give users read/write access to $DEV" sudo chmod 666 "$DEV" fi - if [ ${#PM3LIST[*]} -ge $N ]; then + if [ ${#PM3LIST[*]} -ge "$N" ]; then return fi fi @@ -188,7 +187,7 @@ function get_pm3_list_WSL { echo "[!] Let's give users read/write access to $DEV" sudo chmod 666 "$DEV" fi - if [ ${#PM3LIST[*]} -ge $N ]; then + if [ ${#PM3LIST[*]} -ge "$N" ]; then return fi fi @@ -235,7 +234,7 @@ elif [ "$SCRIPT" = "pm3-flash" ]; then fi shift; done - $CLIENT ${ARGS[@]}; + $CLIENT "${ARGS[@]}"; } HELP() { cat << EOF @@ -361,8 +360,7 @@ HOSTOS=$(uname | awk '{print toupper($0)}') if [ "$HOSTOS" = "LINUX" ]; then if uname -a|grep -q Microsoft; then # Test presence of wmic - wmic.exe computersystem get name >/dev/null 2>&1 - if [ $? -ne 0 ]; then + if ! wmic.exe computersystem get name >/dev/null 2>&1; then echo >&2 "[!!] Cannot run wmic.exe, are you sure your WSL is authorized to run Windows processes? (cf WSL interop flag)" exit 1 fi @@ -387,7 +385,7 @@ if $SHOWLIST; then exit 1 fi n=1 - for DEV in ${PM3LIST[@]} + for DEV in "${PM3LIST[@]}" do echo "$n: $DEV" n=$((n+1)) @@ -396,19 +394,19 @@ if $SHOWLIST; then fi # Wait till we get at least N proxmark3 devices -$GETPM3LIST $N -if [ ${#PM3LIST} -lt $N ]; then +$GETPM3LIST "$N" +if [ ${#PM3LIST} -lt "$N" ]; then echo >&2 "[=] Waiting for Proxmark3 to appear..." fi while true; do - if [ ${#PM3LIST[*]} -ge $N ]; then + if [ ${#PM3LIST[*]} -ge "$N" ]; then break fi sleep .1 - $GETPM3LIST $N + $GETPM3LIST "$N" done -if [ ${#PM3LIST} -lt $N ]; then +if [ ${#PM3LIST} -lt "$N" ]; then echo >&2 "[!!] No port found, abort" exit 1 fi From 35ec13e7af77d09552913a3b4d2a74f44af74f5e Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sun, 17 May 2020 12:35:12 +0200 Subject: [PATCH 019/527] pm3tests shellcheck --- pm3test.sh | 34 +++++++++++++++++----------------- 1 file changed, 17 insertions(+), 17 deletions(-) diff --git a/pm3test.sh b/pm3test.sh index b65f94a15..bf58b028c 100755 --- a/pm3test.sh +++ b/pm3test.sh @@ -32,7 +32,7 @@ function CheckFileExist() { return 0 fi - if ls $2 1> /dev/null 2>&1; then + if ls "$2" 1> /dev/null 2>&1; then echo -e "$1 ${C_GREEN}[OK]${C_NC}" return 0 fi @@ -44,7 +44,7 @@ function CheckFileExist() { # title, command line, check result, repeat several times if failed, ignore if fail function CheckExecute() { - if [ $4 ]; then + if [ "$4" ]; then local RETRY="1 2 3 e" else local RETRY="e" @@ -61,7 +61,7 @@ function CheckExecute() { done - if [ $5 ]; then + if [ "$5" ]; then echo -e "$1 ${C_YELLOW}[Ignored]${C_NC}" return 0 fi @@ -71,11 +71,11 @@ function CheckExecute() { return 1 } -printf "\n${C_BLUE}RRG/Iceman Proxmark3 test tool ${C_NC}\n\n" +echo -e "\n${C_BLUE}RRG/Iceman Proxmark3 test tool ${C_NC}\n" -printf "work directory: " +echo -n "work directory: " pwd -printf "client ${PM3BIN:="./client/proxmark3"}\n" +echo "client ${PM3BIN:="./client/proxmark3"}" if [ "$TRAVIS_COMMIT" ]; then if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then @@ -85,16 +85,16 @@ if [ "$TRAVIS_COMMIT" ]; then fi fi -printf "git branch: " +echo -n "git branch: " git describe --all -printf "git sha: " +echo -n "git sha: " git rev-parse HEAD echo "" while true; do - printf "\n${C_BLUE}Testing files:${C_NC}\n" + echo -e "\n${C_BLUE}Testing files:${C_NC}" if ! CheckFileExist "proxmark3 exists" "$PM3BIN"; then break; fi - if ! CheckFileExist "hardnested tables exists" "./client/resources/hardnested_tables/*.z"; then break; fi + if ! CheckFileExist "hardnested tables exists" "./client/resources/hardnested_tables/bitflip_0_001_states.bin.z"; then break; fi if ! CheckFileExist "simmodule fw file exists" "./tools/simmodule/sim011.bin"; then break; fi if $TESTDEVICE; then @@ -102,19 +102,19 @@ while true; do if ! CheckFileExist "bootrom exists" "./bootrom/obj/bootrom.elf"; then break; fi fi - printf "\n${C_BLUE}Testing basic help:${C_NC}\n" + echo -e "\n${C_BLUE}Testing basic help:${C_NC}" if ! CheckExecute "proxmark help" "$PM3BIN -h" "wait"; then break; fi if ! CheckExecute "proxmark help text ISO7816" "$PM3BIN -t 2>&1" "ISO7816"; then break; fi if ! CheckExecute "proxmark help text hardnested" "$PM3BIN -t 2>&1" "hardnested"; then break; fi - printf "\n${C_BLUE}Testing data manipulation:${C_NC}\n" + echo -e "\n${C_BLUE}Testing data manipulation:${C_NC}" if ! CheckExecute "reveng readline test" "$PM3BIN -c 'reveng -h;reveng -D'" "CRC-64/GO-ISO"; then break; fi if ! CheckExecute "reveng -g test" "$PM3BIN -c 'reveng -g abda202c'" "CRC-16/ISO-IEC-14443-3-A"; then break; fi if ! CheckExecute "reveng -w test" "$PM3BIN -c 'reveng -w 8 -s 01020304e3 010204039d'" "CRC-8/SMBUS"; then break; fi if ! CheckExecute "mfu pwdgen test" "$PM3BIN -c 'hf mfu pwdgen t'" "Selftest OK"; then break; fi if ! CheckExecute "trace load/list test" "$PM3BIN -c 'trace load traces/hf_mfu.trace; trace list 1;'" "READBLOCK(8)"; then break; fi - printf "\n${C_BLUE}Testing LF:${C_NC}\n" + echo -e "\n${C_BLUE}Testing LF:${C_NC}" if ! CheckExecute "lf EM4x05 test" "$PM3BIN -c 'data load traces/em4x05.pm3;lf search 1'" "FDX-B ID found"; then break; fi if ! CheckExecute "lf EM410x test" "$PM3BIN -c 'data load traces/EM4102-1.pm3;lf search 1'" "EM410x ID found"; then break; fi if ! CheckExecute "lf VISA2000 test" "$PM3BIN -c 'data load traces/visa2000.pm3;lf search 1'" "Visa2000 ID found"; then break; fi @@ -129,7 +129,7 @@ while true; do if ! CheckExecute "lf FDX-B test" "$PM3BIN -c 'data load traces/homeagain1600.pm3;lf search 1'" "FDX-B ID found"; then break; fi if ! CheckExecute "lf INDALA test" "$PM3BIN -c 'data load traces/indala-504278295.pm3;lf search 1'" "Indala ID found"; then break; fi - printf "\n${C_BLUE}Testing HF:${C_NC}\n" + echo -e "\n${C_BLUE}Testing HF:${C_NC}" if ! CheckExecute "hf mf offline text" "$PM3BIN -c 'hf mf'" "at_enc"; then break; fi if $SLOWTESTS; then if ! CheckExecute "hf mf hardnested test" "$PM3BIN -c 'hf mf hardnested t 1 000000000000'" "found:" "repeat" "ignore"; then break; fi @@ -141,7 +141,7 @@ while true; do fi if $TESTTOOLS; then - printf "\n${C_BLUE}Testing tools:${C_NC}\n" + echo -e "\n${C_BLUE}Testing tools:${C_NC}" # Need a decent example for mfkey32... if ! CheckExecute "mfkey32v2 test" "tools/mfkey/mfkey32v2 12345678 1AD8DF2B 1D316024 620EF048 30D6CB07 C52077E2 837AC61A" "Found Key: \[a0a1a2a3a4a5\]"; then break; fi if ! CheckExecute "mfkey64 test" "tools/mfkey/mfkey64 9c599b32 82a4166c a1e458ce 6eea41e0 5cadf439" "Found Key: \[ffffffffffff\]"; then break; fi @@ -156,9 +156,9 @@ while true; do fi fi - printf "\n${C_GREEN}Tests [OK]${C_NC}\n\n" + echo -e "\n${C_GREEN}Tests [OK]${C_NC}\n" exit 0 done -printf "\n${C_RED}Tests [FAIL]${C_NC}\n\n" +echo -e "\n${C_RED}Tests [FAIL]${C_NC}\n" exit 1 From 2ed5f1f6149b5ec79e3dc3d0b5586e4d6225fc2d Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Sun, 17 May 2020 14:18:52 +0200 Subject: [PATCH 020/527] iclass bf: avoid slowdown --- client/src/loclass/ikeys.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/loclass/ikeys.c b/client/src/loclass/ikeys.c index d828583d7..f50d276dc 100644 --- a/client/src/loclass/ikeys.c +++ b/client/src/loclass/ikeys.c @@ -224,6 +224,8 @@ static void permute(BitstreamIn *p_in, uint64_t z, int l, int r, BitstreamOut *o } static void printState(const char *desc, uint64_t c) { + if (g_debugMode == 0) + return; char s[60] = {0}; snprintf(s, sizeof(s), "%s : ", desc); From 11f02967bcae43f27912e1266e1c82db399268ea Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Mon, 18 May 2020 01:05:49 +0200 Subject: [PATCH 021/527] pm3: test access to /dev/ttyXXX files as prerequisite for linux --- pm3 | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/pm3 b/pm3 index 19399f0bd..7d2c5e5f7 100755 --- a/pm3 +++ b/pm3 @@ -30,6 +30,10 @@ SHOWLIST=false function get_pm3_list_Linux { N=$1 PM3LIST=() + if [ ! -c "/dev/tty0" ]; then + echo >&2 "[!!] Script cannot access /dev/ttyXXX files, insufficient privileges" + exit 1 + fi for DEV in $(find /dev/ttyACM* 2>/dev/null); do if which udevadm >/dev/null; then if udevadm info -q property -n "$DEV" | grep -q "ID_VENDOR=proxmark.org"; then From 6d1beb07c186ebdd14dea5ce8a133543527c8978 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Mon, 18 May 2020 01:16:29 +0200 Subject: [PATCH 022/527] pm3: attempt to detect BT dongle when udevadm is not available --- pm3 | 17 +++++++++++++---- 1 file changed, 13 insertions(+), 4 deletions(-) diff --git a/pm3 b/pm3 index 7d2c5e5f7..31ed0695b 100755 --- a/pm3 +++ b/pm3 @@ -54,10 +54,19 @@ function get_pm3_list_Linux { if $FINDBTDONGLE; then # check if the HC-06-USB white dongle is present (still, that doesn't tell us if it's paired with a Proxmark3...) for DEV in $(find /dev/ttyUSB* 2>/dev/null); do - if udevadm info -q property -n "$DEV" | grep -q "ID_MODEL=CP2104_USB_to_UART_Bridge_Controller"; then - PM3LIST+=("$DEV") - if [ ${#PM3LIST[*]} -ge "$N" ]; then - return + if which udevadm >/dev/null; then + if udevadm info -q property -n "$DEV" | grep -q "ID_MODEL=CP2104_USB_to_UART_Bridge_Controller"; then + PM3LIST+=("$DEV") + if [ ${#PM3LIST[*]} -ge "$N" ]; then + return + fi + fi + else + if grep -q "DRIVER=cp210x" "/sys/class/tty/${DEV#/dev/}/../../uevent" 2>/dev/null; then + PM3LIST+=("$DEV") + if [ ${#PM3LIST[*]} -ge "$N" ]; then + return + fi fi fi done From 837d644b6cd16253dda76e6fb64dbb5a0235823d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Mon, 18 May 2020 23:49:45 +0200 Subject: [PATCH 023/527] chg: first attempt for trace log header --- client/src/cmdtrace.c | 59 +++++++++++++++++++++---------------------- 1 file changed, 29 insertions(+), 30 deletions(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 6cbfc2e7a..187ba5a01 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -25,6 +25,16 @@ static int CmdHelp(const char *Cmd); static uint8_t *g_trace; long g_traceLen = 0; +typedef struct { + uint32_t timestamp; + uint16_t duration; + uint16_t data_len; + uint8_t frame[]; +} tracelog_hdr_t; + +// 4 + 2 + 2 +#define TRACELOG_HDR_LEN sizeof(tracelog_hdr_t) + static int usage_trace_list(void) { PrintAndLogEx(NORMAL, "List protocol data in trace buffer."); PrintAndLogEx(NORMAL, "Usage: trace list [f][c| <0|1>"); @@ -120,39 +130,29 @@ static bool merge_topaz_reader_frames(uint32_t timestamp, uint32_t *duration, ui static uint16_t printHexLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trace, uint8_t protocol) { // sanity check - if (tracepos + sizeof(uint32_t) + sizeof(uint16_t) + sizeof(uint16_t) > traceLen) return traceLen; + if (tracepos + TRACELOG_HDR_LEN > traceLen) return traceLen; + + tracelog_hdr_t *hdr = (tracelog_hdr_t *)(trace + tracepos); bool isResponse; - uint16_t data_len, parity_len; - uint32_t timestamp; - - timestamp = *((uint32_t *)(trace + tracepos)); - tracepos += 4; - - - // currently we don't use duration, so we skip it - tracepos += 2; - - data_len = *((uint16_t *)(trace + tracepos)); - tracepos += 2; - - if (data_len & 0x8000) { - data_len &= 0x7fff; + uint16_t parity_len; + + if (hdr->data_len & 0x8000) { + hdr->data_len &= 0x7fff; isResponse = true; } else { isResponse = false; } - parity_len = (data_len - 1) / 8 + 1; + parity_len = (hdr->data_len - 1) / 8 + 1; - if (tracepos + data_len + parity_len > traceLen) { + if (sizeof(tracelog_hdr_t) + hdr->data_len + parity_len > traceLen) { return traceLen; } - uint8_t *frame = trace + tracepos; - tracepos += data_len; - //currently we don't use parity bytes, so we skip it - tracepos += parity_len; - if (data_len == 0) { + //set trace position + tracepos += sizeof(tracelog_hdr_t) + hdr->data_len + parity_len; + + if (hdr->data_len == 0) { PrintAndLogEx(NORMAL, ""); return tracepos; } @@ -167,25 +167,24 @@ static uint16_t printHexLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trac * we use format timestamp, newline, offset (0x000000), pseudo header, data * `text2pcap -t "%S." -l 264 -n ` */ - char line[(data_len * 3) + 1]; + char line[(hdr->data_len * 3) + 1]; char *ptr = &line[0]; - for (int j = 0; j < data_len ; j++) { - ptr += sprintf(ptr, "%02x", frame[j]); - ptr += sprintf(ptr, " "); + for (int i = 0; i < hdr->data_len ; i++) { + ptr += sprintf(ptr, "%02x ", hdr->frame[i]); } char data_len_str[5]; char temp_str1[3] = {0}; char temp_str2[3] = {0}; - - sprintf(data_len_str, "%04x", data_len); + + sprintf(data_len_str, "%04x", hdr->data_len); strncat(temp_str1, data_len_str, 2); temp_str1[2] = '\0'; strncat(temp_str2, data_len_str + 2, 2); temp_str2[2] = '\0'; - PrintAndLogEx(NORMAL, "0.%010u", timestamp); + PrintAndLogEx(NORMAL, "0.%010u", hdr->timestamp); PrintAndLogEx(NORMAL, "000000 00 %s %s %s %s", (isResponse ? "ff" : "fe"), temp_str1, From 97c96385187bebd656bf828984d6b09950c0c965 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 19 May 2020 00:25:40 +0200 Subject: [PATCH 024/527] next attempt for tracelog. simplify --- client/src/cmdtrace.c | 40 ++++++++++++++++++++++------------------ 1 file changed, 22 insertions(+), 18 deletions(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 187ba5a01..6ef3974e2 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -33,7 +33,8 @@ typedef struct { } tracelog_hdr_t; // 4 + 2 + 2 -#define TRACELOG_HDR_LEN sizeof(tracelog_hdr_t) +#define TRACELOG_HDR_LEN sizeof(tracelog_hdr_t) +#define TRACELOG_NEXT_PARITY_LEN(x) (((x)hdr->data_len - 1) / 8 + 1) static int usage_trace_list(void) { PrintAndLogEx(NORMAL, "List protocol data in trace buffer."); @@ -81,13 +82,13 @@ static int usage_trace_save(void) { return PM3_SUCCESS; } -static bool is_last_record(uint16_t tracepos, uint8_t *trace, uint16_t traceLen) { - return (tracepos + sizeof(uint32_t) + sizeof(uint16_t) + sizeof(uint16_t) >= traceLen); +static bool is_last_record(uint16_t tracepos, uint16_t traceLen) { + return ((tracepos + TRACELOG_HDR_LEN) >= traceLen); } static bool next_record_is_response(uint16_t tracepos, uint8_t *trace) { - uint16_t next_records_datalen = *((uint16_t *)(trace + tracepos + sizeof(uint32_t) + sizeof(uint16_t))); - return ((next_records_datalen & 0x8000) == 0x8000); + tracelog_hdr_t *hdr = (tracelog_hdr_t *)(trace + tracepos); + return ((hdr->data_len & 0x8000) == 0x8000); } static bool merge_topaz_reader_frames(uint32_t timestamp, uint32_t *duration, uint16_t *tracepos, uint16_t traceLen, @@ -101,22 +102,24 @@ static bool merge_topaz_reader_frames(uint32_t timestamp, uint32_t *duration, ui memcpy(topaz_reader_command, frame, *data_len); - while (!is_last_record(*tracepos, trace, traceLen) && !next_record_is_response(*tracepos, trace)) { - uint32_t next_timestamp = *((uint32_t *)(trace + *tracepos)); - *tracepos += sizeof(uint32_t); - uint16_t next_duration = *((uint16_t *)(trace + *tracepos)); - *tracepos += sizeof(uint16_t); - uint16_t next_data_len = *((uint16_t *)(trace + *tracepos)) & 0x7FFF; - *tracepos += sizeof(uint16_t); - uint8_t *next_frame = (trace + *tracepos); - *tracepos += next_data_len; + while (!is_last_record(*tracepos, traceLen) && !next_record_is_response(*tracepos, trace)) { + + tracelog_hdr_t *hdr = (tracelog_hdr_t *)(trace + *tracepos); + + uint32_t next_timestamp = hdr->timestamp; + uint16_t next_duration = hdr->duration; + uint16_t next_data_len = hdr->data_len & 0x7FFF; + uint8_t *next_frame = hdr->frame; + + *tracepos += TRACELOG_HDR_LEN + next_data_len; + if ((next_data_len == 1) && (*data_len + next_data_len <= MAX_TOPAZ_READER_CMD_LEN)) { memcpy(topaz_reader_command + *data_len, next_frame, next_data_len); *data_len += next_data_len; last_timestamp = next_timestamp + next_duration; } else { // rewind and exit - *tracepos = *tracepos - next_data_len - sizeof(uint16_t) - sizeof(uint16_t) - sizeof(uint32_t); + *tracepos = *tracepos - next_data_len - TRACELOG_HDR_LEN; break; } uint16_t next_parity_len = (next_data_len - 1) / 8 + 1; @@ -130,19 +133,20 @@ static bool merge_topaz_reader_frames(uint32_t timestamp, uint32_t *duration, ui static uint16_t printHexLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trace, uint8_t protocol) { // sanity check - if (tracepos + TRACELOG_HDR_LEN > traceLen) return traceLen; + if (is_last_record(tracepos, traceLen)) return traceLen; tracelog_hdr_t *hdr = (tracelog_hdr_t *)(trace + tracepos); bool isResponse; uint16_t parity_len; - if (hdr->data_len & 0x8000) { + if ((hdr->data_len & 0x8000) == 0x8000) { hdr->data_len &= 0x7fff; isResponse = true; } else { isResponse = false; } + parity_len = (hdr->data_len - 1) / 8 + 1; if (sizeof(tracelog_hdr_t) + hdr->data_len + parity_len > traceLen) { @@ -435,7 +439,7 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr explanation); } - if (is_last_record(tracepos, trace, traceLen)) return traceLen; + if (is_last_record(tracepos, traceLen)) return traceLen; if (showWaitCycles && !isResponse && next_record_is_response(tracepos, trace)) { uint32_t next_timestamp = *((uint32_t *)(trace + tracepos)); From d72d8044870599dfe9d1a08b79c1b3b41a7946cd Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 19 May 2020 00:36:30 +0200 Subject: [PATCH 025/527] third part fixing cmdtracelog --- client/src/cmdtrace.c | 33 ++++++++++++++++----------------- 1 file changed, 16 insertions(+), 17 deletions(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 6ef3974e2..4b923f0a0 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -149,12 +149,12 @@ static uint16_t printHexLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trac parity_len = (hdr->data_len - 1) / 8 + 1; - if (sizeof(tracelog_hdr_t) + hdr->data_len + parity_len > traceLen) { + if (TRACELOG_HDR_LEN + hdr->data_len + parity_len > traceLen) { return traceLen; } //set trace position - tracepos += sizeof(tracelog_hdr_t) + hdr->data_len + parity_len; + tracepos += TRACELOG_HDR_LEN + hdr->data_len + parity_len; if (hdr->data_len == 0) { PrintAndLogEx(NORMAL, ""); @@ -208,7 +208,7 @@ static uint16_t printHexLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trac static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trace, uint8_t protocol, bool showWaitCycles, bool markCRCBytes) { // sanity check - if (tracepos + sizeof(uint32_t) + sizeof(uint16_t) + sizeof(uint16_t) > traceLen) return traceLen; + if (is_last_record(tracepos, traceLen)) return traceLen; bool isResponse; uint16_t data_len, parity_len; @@ -218,16 +218,14 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr uint8_t mfData[32] = {0}; size_t mfDataLen = 0; + tracelog_hdr_t *first_hdr = (tracelog_hdr_t *)(trace); + tracelog_hdr_t *hdr = (tracelog_hdr_t *)(trace + tracepos); - first_timestamp = *((uint32_t *)(trace)); - timestamp = *((uint32_t *)(trace + tracepos)); - tracepos += 4; - - duration = *((uint16_t *)(trace + tracepos)); - tracepos += 2; - - data_len = *((uint16_t *)(trace + tracepos)); - tracepos += 2; + first_timestamp = first_hdr->timestamp; + + timestamp = hdr->timestamp; + duration = hdr->duration; + data_len = hdr->data_len; if (data_len & 0x8000) { data_len &= 0x7fff; @@ -237,13 +235,14 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr } parity_len = (data_len - 1) / 8 + 1; - if (tracepos + data_len + parity_len > traceLen) { + if (tracepos + TRACELOG_HDR_LEN + data_len + parity_len > traceLen) { return traceLen; } - uint8_t *frame = trace + tracepos; - tracepos += data_len; - uint8_t *parityBytes = trace + tracepos; - tracepos += parity_len; + + uint8_t *frame = hdr->frame; + uint8_t *parityBytes = hdr->frame + data_len; + + tracepos += TRACELOG_HDR_LEN + data_len + parity_len; if (protocol == TOPAZ && !isResponse) { // topaz reader commands come in 1 or 9 separate frames with 7 or 8 Bits each. From 00bde060c1b67e4067ff1602f116a4afc49dd78d Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 19 May 2020 00:40:22 +0200 Subject: [PATCH 026/527] fourth, making struct packed --- client/src/cmdtrace.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 4b923f0a0..1cf8c054e 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -30,7 +30,7 @@ typedef struct { uint16_t duration; uint16_t data_len; uint8_t frame[]; -} tracelog_hdr_t; +} PACKED tracelog_hdr_t; // 4 + 2 + 2 #define TRACELOG_HDR_LEN sizeof(tracelog_hdr_t) @@ -441,6 +441,7 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr if (is_last_record(tracepos, traceLen)) return traceLen; if (showWaitCycles && !isResponse && next_record_is_response(tracepos, trace)) { + uint32_t next_timestamp = *((uint32_t *)(trace + tracepos)); PrintAndLogEx(NORMAL, " %10u | %10u | %s |fdt (Frame Delay Time): %d", (EndOfTransmissionTimestamp - first_timestamp), From e46639ee60710eef79479165c319976e6a9bafb3 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 19 May 2020 00:46:10 +0200 Subject: [PATCH 027/527] fifth adjustment to tracelog --- client/src/cmdtrace.c | 16 +++++++++------- 1 file changed, 9 insertions(+), 7 deletions(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 1cf8c054e..5cb61fdf0 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -297,9 +297,14 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr //1 CRC-command, CRC ok //2 Not crc-command - //--- Draw the data column + //--- Draw the data column char line[18][120] = {{0}}; + if (data_len == 0) { + sprintf(line[0], ""); + return tracepos; + } + for (int j = 0; j < data_len && j / 18 < 18; j++) { uint8_t parityBits = parityBytes[j >> 3]; @@ -345,11 +350,6 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr } } - if (data_len == 0) { - sprintf(line[0], ""); - return tracepos; - } - // Draw the CRC column const char *crc = (crcStatus == 0 ? "!crc" : (crcStatus == 1 ? " ok " : " ")); @@ -442,7 +442,9 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr if (showWaitCycles && !isResponse && next_record_is_response(tracepos, trace)) { - uint32_t next_timestamp = *((uint32_t *)(trace + tracepos)); + tracelog_hdr_t *next_hdr = (tracelog_hdr_t *)(trace + tracepos); + + uint32_t next_timestamp = next_hdr->timestamp; PrintAndLogEx(NORMAL, " %10u | %10u | %s |fdt (Frame Delay Time): %d", (EndOfTransmissionTimestamp - first_timestamp), (next_timestamp - first_timestamp), From afafdce3c92f91d79e3f26182bc8ba041eb43825 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 19 May 2020 00:52:11 +0200 Subject: [PATCH 028/527] test for hex output / wireshark --- pm3test.sh | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/pm3test.sh b/pm3test.sh index bf58b028c..27a7619b8 100755 --- a/pm3test.sh +++ b/pm3test.sh @@ -112,7 +112,8 @@ while true; do if ! CheckExecute "reveng -g test" "$PM3BIN -c 'reveng -g abda202c'" "CRC-16/ISO-IEC-14443-3-A"; then break; fi if ! CheckExecute "reveng -w test" "$PM3BIN -c 'reveng -w 8 -s 01020304e3 010204039d'" "CRC-8/SMBUS"; then break; fi if ! CheckExecute "mfu pwdgen test" "$PM3BIN -c 'hf mfu pwdgen t'" "Selftest OK"; then break; fi - if ! CheckExecute "trace load/list test" "$PM3BIN -c 'trace load traces/hf_mfu.trace; trace list 1;'" "READBLOCK(8)"; then break; fi + if ! CheckExecute "trace load/list 14a" "$PM3BIN -c 'trace load traces/hf_mfu.trace; trace list 1;'" "READBLOCK(8)"; then break; fi + if ! CheckExecute "trace load/list x" "$PM3BIN -c 'trace load traces/hf_mfu.trace; trace list x 1;'" "0.0101840425"; then break; fi echo -e "\n${C_BLUE}Testing LF:${C_NC}" if ! CheckExecute "lf EM4x05 test" "$PM3BIN -c 'data load traces/em4x05.pm3;lf search 1'" "FDX-B ID found"; then break; fi From 2ba350903a92c6e27b7d7ba389af52904e81b1cb Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Tue, 19 May 2020 02:14:43 +0200 Subject: [PATCH 029/527] more tracelog rework --- client/src/cmdtrace.c | 115 ++++++++++++++---------------------------- include/pm3_cmd.h | 14 +++++ 2 files changed, 51 insertions(+), 78 deletions(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 5cb61fdf0..43d84c3f3 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -18,6 +18,7 @@ #include "comms.h" // for sending cmds to device. GetFromBigBuf #include "fileutils.h" // for saveFile #include "cmdlfhitag.h" // annotate hitag +#include "pm3_cmd.h" // tracelog_hdr_t static int CmdHelp(const char *Cmd); @@ -25,17 +26,6 @@ static int CmdHelp(const char *Cmd); static uint8_t *g_trace; long g_traceLen = 0; -typedef struct { - uint32_t timestamp; - uint16_t duration; - uint16_t data_len; - uint8_t frame[]; -} PACKED tracelog_hdr_t; - -// 4 + 2 + 2 -#define TRACELOG_HDR_LEN sizeof(tracelog_hdr_t) -#define TRACELOG_NEXT_PARITY_LEN(x) (((x)hdr->data_len - 1) / 8 + 1) - static int usage_trace_list(void) { PrintAndLogEx(NORMAL, "List protocol data in trace buffer."); PrintAndLogEx(NORMAL, "Usage: trace list [f][c| <0|1>"); @@ -88,7 +78,7 @@ static bool is_last_record(uint16_t tracepos, uint16_t traceLen) { static bool next_record_is_response(uint16_t tracepos, uint8_t *trace) { tracelog_hdr_t *hdr = (tracelog_hdr_t *)(trace + tracepos); - return ((hdr->data_len & 0x8000) == 0x8000); + return (hdr->isResponse); } static bool merge_topaz_reader_frames(uint32_t timestamp, uint32_t *duration, uint16_t *tracepos, uint16_t traceLen, @@ -106,24 +96,18 @@ static bool merge_topaz_reader_frames(uint32_t timestamp, uint32_t *duration, ui tracelog_hdr_t *hdr = (tracelog_hdr_t *)(trace + *tracepos); - uint32_t next_timestamp = hdr->timestamp; - uint16_t next_duration = hdr->duration; - uint16_t next_data_len = hdr->data_len & 0x7FFF; - uint8_t *next_frame = hdr->frame; - - *tracepos += TRACELOG_HDR_LEN + next_data_len; + *tracepos += TRACELOG_HDR_LEN + hdr->data_len; - if ((next_data_len == 1) && (*data_len + next_data_len <= MAX_TOPAZ_READER_CMD_LEN)) { - memcpy(topaz_reader_command + *data_len, next_frame, next_data_len); - *data_len += next_data_len; - last_timestamp = next_timestamp + next_duration; + if ((hdr->data_len == 1) && (*data_len + hdr->data_len <= MAX_TOPAZ_READER_CMD_LEN)) { + memcpy(topaz_reader_command + *data_len, hdr->frame, hdr->data_len); + *data_len += hdr->data_len; + last_timestamp = hdr->timestamp + hdr->duration; } else { // rewind and exit - *tracepos = *tracepos - next_data_len - TRACELOG_HDR_LEN; + *tracepos = *tracepos - hdr->data_len - TRACELOG_HDR_LEN; break; } - uint16_t next_parity_len = (next_data_len - 1) / 8 + 1; - *tracepos += next_parity_len; + *tracepos += TRACELOG_PARITY_LEN(hdr); } *duration = last_timestamp - timestamp; @@ -137,24 +121,12 @@ static uint16_t printHexLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trac tracelog_hdr_t *hdr = (tracelog_hdr_t *)(trace + tracepos); - bool isResponse; - uint16_t parity_len; - - if ((hdr->data_len & 0x8000) == 0x8000) { - hdr->data_len &= 0x7fff; - isResponse = true; - } else { - isResponse = false; - } - - parity_len = (hdr->data_len - 1) / 8 + 1; - - if (TRACELOG_HDR_LEN + hdr->data_len + parity_len > traceLen) { + if (TRACELOG_HDR_LEN + hdr->data_len + TRACELOG_PARITY_LEN(hdr) > traceLen) { return traceLen; } //set trace position - tracepos += TRACELOG_HDR_LEN + hdr->data_len + parity_len; + tracepos += TRACELOG_HDR_LEN + hdr->data_len + TRACELOG_PARITY_LEN(hdr); if (hdr->data_len == 0) { PrintAndLogEx(NORMAL, ""); @@ -190,7 +162,7 @@ static uint16_t printHexLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trac PrintAndLogEx(NORMAL, "0.%010u", hdr->timestamp); PrintAndLogEx(NORMAL, "000000 00 %s %s %s %s", - (isResponse ? "ff" : "fe"), + (hdr->isResponse ? "ff" : "fe"), temp_str1, temp_str2, line); @@ -210,44 +182,32 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr // sanity check if (is_last_record(tracepos, traceLen)) return traceLen; - bool isResponse; - uint16_t data_len, parity_len; - uint32_t duration, timestamp, first_timestamp, EndOfTransmissionTimestamp; + uint32_t duration; + uint16_t data_len; + uint32_t EndOfTransmissionTimestamp; uint8_t topaz_reader_command[9]; char explanation[40] = {0}; uint8_t mfData[32] = {0}; size_t mfDataLen = 0; - tracelog_hdr_t *first_hdr = (tracelog_hdr_t *)(trace); tracelog_hdr_t *hdr = (tracelog_hdr_t *)(trace + tracepos); - first_timestamp = first_hdr->timestamp; - - timestamp = hdr->timestamp; duration = hdr->duration; data_len = hdr->data_len; - if (data_len & 0x8000) { - data_len &= 0x7fff; - isResponse = true; - } else { - isResponse = false; - } - parity_len = (data_len - 1) / 8 + 1; - - if (tracepos + TRACELOG_HDR_LEN + data_len + parity_len > traceLen) { + if (tracepos + TRACELOG_HDR_LEN + data_len + TRACELOG_PARITY_LEN(hdr) > traceLen) { return traceLen; } uint8_t *frame = hdr->frame; uint8_t *parityBytes = hdr->frame + data_len; - tracepos += TRACELOG_HDR_LEN + data_len + parity_len; + tracepos += TRACELOG_HDR_LEN + data_len + TRACELOG_PARITY_LEN(hdr); - if (protocol == TOPAZ && !isResponse) { + if (protocol == TOPAZ && !hdr->isResponse) { // topaz reader commands come in 1 or 9 separate frames with 7 or 8 Bits each. // merge them: - if (merge_topaz_reader_frames(timestamp, &duration, &tracepos, traceLen, trace, frame, topaz_reader_command, &data_len)) { + if (merge_topaz_reader_frames(hdr->timestamp, &duration, &tracepos, traceLen, trace, frame, topaz_reader_command, &data_len)) { frame = topaz_reader_command; } } @@ -258,7 +218,7 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr if (data_len > 2) { switch (protocol) { case ICLASS: - crcStatus = iclass_CRC_check(isResponse, frame, data_len); + crcStatus = iclass_CRC_check(hdr->isResponse, frame, data_len); break; case ISO_14443B: case TOPAZ: @@ -266,12 +226,12 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr crcStatus = !felica_CRC_check(frame + 2, data_len - 4); break; case PROTO_MIFARE: - crcStatus = mifare_CRC_check(isResponse, frame, data_len); + crcStatus = mifare_CRC_check(hdr->isResponse, frame, data_len); break; case ISO_14443A: case MFDES: case LTO: - crcStatus = iso14443A_CRC_check(isResponse, frame, data_len); + crcStatus = iso14443A_CRC_check(hdr->isResponse, frame, data_len); break; case THINFILM: frame[data_len - 1] ^= frame[data_len - 2]; @@ -319,11 +279,11 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr && protocol != THINFILM && protocol != FELICA && protocol != LTO - && (isResponse || protocol == ISO_14443A) + && (hdr->isResponse || protocol == ISO_14443A) && (oddparity8(frame[j]) != ((parityBits >> (7 - (j & 0x0007))) & 0x01))) { snprintf(line[j / 18] + ((j % 18) * 4), 120, "%02x! ", frame[j]); - } else if (protocol == ICLASS && isResponse == false) { + } else if (protocol == ICLASS && hdr->isResponse == false) { uint8_t parity = 0; for (int i = 0; i < 6; i++) { parity ^= ((frame[0] >> i) & 1); @@ -353,19 +313,19 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr // Draw the CRC column const char *crc = (crcStatus == 0 ? "!crc" : (crcStatus == 1 ? " ok " : " ")); - EndOfTransmissionTimestamp = timestamp + duration; + EndOfTransmissionTimestamp = hdr->timestamp + duration; // Always annotate LEGIC read/tag if (protocol == LEGIC) annotateLegic(explanation, sizeof(explanation), frame, data_len); if (protocol == PROTO_MIFARE) - annotateMifare(explanation, sizeof(explanation), frame, data_len, parityBytes, parity_len, isResponse); + annotateMifare(explanation, sizeof(explanation), frame, data_len, parityBytes, TRACELOG_PARITY_LEN(hdr), hdr->isResponse); if (protocol == FELICA) annotateFelica(explanation, sizeof(explanation), frame, data_len); - if (!isResponse) { + if (!hdr->isResponse) { switch (protocol) { case ICLASS: annotateIclass(explanation, sizeof(explanation), frame, data_len); @@ -412,9 +372,9 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr for (int j = 0; j < num_lines ; j++) { if (j == 0) { PrintAndLogEx(NORMAL, " %10u | %10u | %s |%-72s | %s| %s", - (timestamp - first_timestamp), - (EndOfTransmissionTimestamp - first_timestamp), - (isResponse ? "Tag" : "Rdr"), + (hdr->timestamp - first_hdr->timestamp), + (EndOfTransmissionTimestamp - first_hdr->timestamp), + (hdr->isResponse ? "Tag" : "Rdr"), line[j], (j == num_lines - 1) ? crc : " ", (j == num_lines - 1) ? explanation : ""); @@ -426,12 +386,12 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr } } - if (DecodeMifareData(frame, data_len, parityBytes, isResponse, mfData, &mfDataLen)) { + if (DecodeMifareData(frame, data_len, parityBytes, hdr->isResponse, mfData, &mfDataLen)) { memset(explanation, 0x00, sizeof(explanation)); - if (!isResponse) { + if (!hdr->isResponse) { annotateIso14443a(explanation, sizeof(explanation), mfData, mfDataLen); } - uint8_t crcc = iso14443A_CRC_check(isResponse, mfData, mfDataLen); + uint8_t crcc = iso14443A_CRC_check(hdr->isResponse, mfData, mfDataLen); PrintAndLogEx(NORMAL, " | | * |%-72s | %-4s| %s", sprint_hex_inrow_spaces(mfData, mfDataLen, 2), (crcc == 0 ? "!crc" : (crcc == 1 ? " ok " : " ")), @@ -440,16 +400,15 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr if (is_last_record(tracepos, traceLen)) return traceLen; - if (showWaitCycles && !isResponse && next_record_is_response(tracepos, trace)) { + if (showWaitCycles && !hdr->isResponse && next_record_is_response(tracepos, trace)) { tracelog_hdr_t *next_hdr = (tracelog_hdr_t *)(trace + tracepos); - uint32_t next_timestamp = next_hdr->timestamp; PrintAndLogEx(NORMAL, " %10u | %10u | %s |fdt (Frame Delay Time): %d", - (EndOfTransmissionTimestamp - first_timestamp), - (next_timestamp - first_timestamp), + (EndOfTransmissionTimestamp - first_hdr->timestamp), + (next_hdr->timestamp - first_hdr->timestamp), " ", - (next_timestamp - EndOfTransmissionTimestamp)); + (next_hdr->timestamp - EndOfTransmissionTimestamp)); } return tracepos; diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index c9125b1aa..b6de6f292 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -121,6 +121,20 @@ typedef struct { int32_t samples_to_skip; bool verbose; } PACKED sample_config; + +typedef struct { + uint32_t timestamp; + uint16_t duration; + uint16_t data_len : 15; + bool isResponse : 1; + uint8_t frame[]; + // data_len bytes of data + // ceil(data_len/8) bytes of parity +} PACKED tracelog_hdr_t; + +#define TRACELOG_HDR_LEN sizeof(tracelog_hdr_t) +#define TRACELOG_PARITY_LEN(x) (((x)->data_len - 1) / 8 + 1) + /* typedef struct { uint16_t start_gap; From a999243a451249e376d993e0e348af5d4367b70d Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Tue, 19 May 2020 02:39:39 +0200 Subject: [PATCH 030/527] use tracelog struct in arm too --- armsrc/BigBuf.c | 36 ++++++++++-------------------------- 1 file changed, 10 insertions(+), 26 deletions(-) diff --git a/armsrc/BigBuf.c b/armsrc/BigBuf.c index 765d230a5..5f1ace5f8 100644 --- a/armsrc/BigBuf.c +++ b/armsrc/BigBuf.c @@ -12,6 +12,7 @@ #include "string.h" #include "dbprint.h" +#include "pm3_cmd.h" // BigBuf is the large multi-purpose buffer, typically used to hold A/D samples or traces. // Also used to hold various smaller buffers and the Mifare Emulator Memory. @@ -146,40 +147,23 @@ bool RAMFUNC LogTrace(const uint8_t *btBytes, uint16_t iLen, uint32_t timestamp_ if (!tracing) return false; uint8_t *trace = BigBuf_get_addr(); + tracelog_hdr_t *hdr = (tracelog_hdr_t *)(trace + traceLen); uint32_t num_paritybytes = (iLen - 1) / 8 + 1; // number of valid paritybytes in *parity - uint32_t duration = timestamp_end - timestamp_start; // Return when trace is full - if (traceLen + sizeof(iLen) + sizeof(timestamp_start) + sizeof(duration) + num_paritybytes + iLen >= BigBuf_max_traceLen()) { + if (TRACELOG_HDR_LEN + iLen + num_paritybytes >= BigBuf_max_traceLen() - traceLen) { tracing = false; // don't trace any more return false; } - // Traceformat: - // 32 bits timestamp (little endian) - // 16 bits duration (little endian) - // 16 bits data length (little endian, Highest Bit used as readerToTag flag) - // y Bytes data - // x Bytes parity (one byte per 8 bytes data) - - // timestamp (start) - trace[traceLen++] = ((timestamp_start >> 0) & 0xff); - trace[traceLen++] = ((timestamp_start >> 8) & 0xff); - trace[traceLen++] = ((timestamp_start >> 16) & 0xff); - trace[traceLen++] = ((timestamp_start >> 24) & 0xff); - - // duration - trace[traceLen++] = ((duration >> 0) & 0xff); - trace[traceLen++] = ((duration >> 8) & 0xff); - - // data length - trace[traceLen++] = ((iLen >> 0) & 0xff); - trace[traceLen++] = ((iLen >> 8) & 0xff); - - // readerToTag flag - if (!readerToTag) { - trace[traceLen - 1] |= 0x80; + if (timestamp_end - timestamp_start > UINT16_MAX) { + return false; // duration too long } + hdr->timestamp = timestamp_start; + hdr->duration = timestamp_end - timestamp_start; + hdr->data_len = iLen; + hdr->isResponse = !readerToTag; + traceLen += TRACELOG_HDR_LEN; // data bytes if (btBytes != NULL && iLen != 0) { From 23d754c85f6ef5b4dd2246b108b827b007ee4d8d Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Tue, 19 May 2020 02:48:03 +0200 Subject: [PATCH 031/527] fix max duration in LogTrace --- armsrc/BigBuf.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/armsrc/BigBuf.c b/armsrc/BigBuf.c index 5f1ace5f8..8ee7cc189 100644 --- a/armsrc/BigBuf.c +++ b/armsrc/BigBuf.c @@ -156,8 +156,8 @@ bool RAMFUNC LogTrace(const uint8_t *btBytes, uint16_t iLen, uint32_t timestamp_ tracing = false; // don't trace any more return false; } - if (timestamp_end - timestamp_start > UINT16_MAX) { - return false; // duration too long + if (timestamp_end - timestamp_start > 0x7FFF) { + return false; // duration too long, must be max 15 bits } hdr->timestamp = timestamp_start; hdr->duration = timestamp_end - timestamp_start; From 966bcc0d2825ae3f411dacb84f8a2f08a20d24f7 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 19 May 2020 09:13:31 +0200 Subject: [PATCH 032/527] chg: adding execute/home/current working directory functions to lua --- client/luascripts/tracetest.lua | 14 +++++----- client/src/preferences.c | 9 ------- client/src/proxmark3.c | 8 ------ client/src/proxmark3.h | 9 +++++++ client/src/scripting.c | 48 ++++++++++++++++++++++++++++++++- 5 files changed, 64 insertions(+), 24 deletions(-) diff --git a/client/luascripts/tracetest.lua b/client/luascripts/tracetest.lua index c1917b401..e45d1ceba 100644 --- a/client/luascripts/tracetest.lua +++ b/client/luascripts/tracetest.lua @@ -7,15 +7,15 @@ local ansicolors = require('ansicolors') copyright = '' author = 'Iceman' -version = 'v1.0.2' +version = 'v1.0.3' desc = [[ -This script will load several traces files in ../traces/ folder and do +This script will load several traces files in current working directory/traces/ folder and do "data load" "lf search 1 u" The following tracefiles will be loaded: em*.pm3 - m*.pm3 + modulation*.pm3 ]] example = [[ 1. script run tracetest @@ -78,8 +78,10 @@ local function main(args) print( string.rep('--',20) ) local cmdDataLoad = 'data load %s'; - local tracesEM = "find '../traces/' -iname 'em*.pm3' -type f" - local tracesMOD = "find '../traces/' -iname 'm*.pm3' -type f" + local cwd = core.cwd(); + + local tracesEM = "find '"..cwd.."/traces/ ' -iname 'em*.pm3' -type f" + local tracesMOD = "find '"..cwd.."/traces/' -iname 'modulation*.pm3' -type f" local write2File = false local outputTemplate = os.date('testtest_%Y-%m-%d_%H%M%S') @@ -100,7 +102,7 @@ local function main(args) end p.close(); - -- Find a set of traces staring with MOD + -- Find a set of traces staring with MODULATION p = assert( io.popen(tracesMOD) ) for file in p:lines() do table.insert(files, file) diff --git a/client/src/preferences.c b/client/src/preferences.c index 0ef715075..4c8fefb77 100644 --- a/client/src/preferences.c +++ b/client/src/preferences.c @@ -29,15 +29,6 @@ static int CmdHelp(const char *Cmd); static int setCmdHelp(const char *Cmd); -// Load all settings into memory (struct) -#ifdef _WIN32 -#include -#define GetCurrentDir _getcwd -#else -#include -#define GetCurrentDir getcwd -#endif - static char *prefGetFilename(void) { char *path; diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index abf014e08..07d777a2c 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -29,14 +29,6 @@ #include "flash.h" #include "preferences.h" -#ifdef _WIN32 -#include -#define GetCurrentDir _getcwd -#else -#include -#define GetCurrentDir getcwd -#endif - // Used to enable/disable use of preferences json file #define USE_PREFERENCE_FILE diff --git a/client/src/proxmark3.h b/client/src/proxmark3.h index 6402baea9..6d7e9dfb4 100644 --- a/client/src/proxmark3.h +++ b/client/src/proxmark3.h @@ -12,6 +12,7 @@ #ifndef PROXMARK3_H__ #define PROXMARK3_H__ +#include #include "common.h" #define PROXPROMPT_MAX_SIZE 255 @@ -36,6 +37,14 @@ extern "C" { #endif +// Load all settings into memory (struct) +#ifdef _WIN32 +#include +#define GetCurrentDir _getcwd +#else +#define GetCurrentDir getcwd +#endif + int push_cmdscriptfile(char *path, bool stayafter); const char *get_my_executable_path(void); const char *get_my_executable_directory(void); diff --git a/client/src/scripting.c b/client/src/scripting.c index 25bda6322..4a3bab49c 100644 --- a/client/src/scripting.c +++ b/client/src/scripting.c @@ -12,9 +12,11 @@ #include #include +#include #include "lauxlib.h" #include "cmdmain.h" +#include "proxmark3.h" #include "comms.h" #include "mifare/mifarehost.h" #include "crc.h" @@ -28,7 +30,7 @@ #include "mifare/ndef.h" // ndef parsing #include "commonutil.h" #include "ui.h" -#include "proxmark3.h" + #include "crc16.h" #include "protocols.h" #include "fileutils.h" // searchfile @@ -912,6 +914,12 @@ static int l_detect_prng(lua_State *L) { * @return */ static int l_keygen_algoD(lua_State *L) { + //Check number of arguments + int n = lua_gettop(L); + if (n != 1) { + return returnToLuaWithError(L, "Only UID"); + } + size_t size; uint32_t tmp; const char *p_uid = luaL_checklstring(L, 1, &size); @@ -1129,6 +1137,9 @@ static int l_remark(lua_State *L) { return 1; } +// 1. filename +// 2. extension +// output: full search path to file static int l_searchfile(lua_State *L) { //Check number of arguments int n = lua_gettop(L); @@ -1154,6 +1165,38 @@ static int l_searchfile(lua_State *L) { return 1; } +static int l_ud(lua_State *L) { + const char *ud = get_my_user_directory(); + lua_pushstring(L, ud); + return 1; +} +static int l_ewd(lua_State *L) { + const char *ewd = get_my_executable_directory(); + lua_pushstring(L, ewd); + return 1; +} +static int l_cwd(lua_State *L) { + + uint16_t path_len = FILENAME_MAX; // should be a good starting point + bool error = false; + char *cwd = NULL; + cwd = (char *)calloc(path_len, sizeof(uint8_t)); + + while (!error && (GetCurrentDir(cwd, path_len) == NULL)) { + if (errno == ERANGE) { // Need bigger buffer + path_len += 10; // if buffer was too small add 10 characters and try again + cwd = realloc(cwd, path_len); + } else { + error = true; + free(cwd); + return returnToLuaWithError(L, "Failed to get current working directory"); + } + } + lua_pushstring(L, cwd); + free(cwd); + return 1; +} + /** * @brief Sets the lua path to include "./lualibs/?.lua", in order for a script to be * able to do "require('foobar')" if foobar.lua is within lualibs folder. @@ -1215,6 +1258,9 @@ int set_pm3_libraries(lua_State *L) { {"ndefparse", l_ndefparse}, {"fast_push_mode", l_fast_push_mode}, {"search_file", l_searchfile}, + {"cwd", l_cwd}, + {"ewd", l_ewd}, + {"ud", l_ud}, {"rem", l_remark}, {NULL, NULL} }; From 339a3ee152ff3c3b4a06a6e4584a9ac776c523b3 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 19 May 2020 09:29:11 +0200 Subject: [PATCH 033/527] update trace log documentation --- doc/trace_notes.md | 51 +++++++++++++++++++++++++++++++++++++++------- 1 file changed, 44 insertions(+), 7 deletions(-) diff --git a/doc/trace_notes.md b/doc/trace_notes.md index a126a238f..1cdf8dead 100644 --- a/doc/trace_notes.md +++ b/doc/trace_notes.md @@ -1,10 +1,18 @@ -# Trace command notes +# Notes about the tracelog. + +## Table of Contents + * [Command](#trace-command) + * [File format](#tracelog-format) + * [Wireshark dissector interoperability](#trace-and-wireshark) + + +## Trace command The `trace` command lists the data exchange by the proxmark3 and a tag or a reader in human readable form. With `trace list` a table is shown which gives timing information, the src of the data bytes, the transmitted/received bytes itself, a check if the CRC was correct and some decoding of the command. -## Timing +### Timing The Start and the End coloumn lists timestamps when the transmission of the shown data started (time of first bit) and when it ended (end of last modulation). @@ -20,26 +28,55 @@ The unit for this time information depends on the protocol in use: By specifing the option ```f``` (e.g. ```trace list 14a f```) the frame delay times are shown. (So you don't have to do the math by your own). -## Sources +### Sources If the data is marked as a response the source is shown as Tag. Otherwise it is marked as Reader (Rdr). -## Data +### Data This coloumn show the raw bytes trasmitted over the air. With option ```c``` CRC bytes are marked in square brackets. -## CRC +### CRC Marks if the transmitted CRC matches with the calculated CRC. -## Annotation +### Annotation Annotations provide a rough decoding of the transmitted data. For ISO14443A a more detailed decoding is available with Wireshark (s. next chapter) +-- +## Tracelog format +The binary format for the dynamic tracelog is as following. + +``` + /* + Traceformat: + 32 bits timestamp (little endian) + 16 bits duration (little endian) + 15 bits data length (little endian) (0x7FFF) + 1 bit isResponse (used as readerToTag flag) + y Bytes data + x Bytes parity, where x == ceil(data_len/8) +*/ + +typedef struct { + uint32_t timestamp; + uint16_t duration; + uint16_t data_len : 15; + bool isResponse : 1; + uint8_t frame[]; + // data_len bytes of data + // ceil(data_len/8) bytes of parity +} PACKED tracelog_hdr_t; + +#define TRACELOG_HDR_LEN sizeof(tracelog_hdr_t) +#define TRACELOG_PARITY_LEN(x) (((x)->data_len - 1) / 8 + 1) +``` + -- -# Trace and Wireshark +## Trace and Wireshark To get a more detailed explanation of the transmitted data for ISO14443A traces the output can be converted to a pcapng file to read it with [Wireshark](https://www.wireshark.org/). From 66920e66995fbfc9eeacd427ac00f96597c9f003 Mon Sep 17 00:00:00 2001 From: Iceman Date: Tue, 19 May 2020 09:31:52 +0200 Subject: [PATCH 034/527] Update trace_notes.md --- doc/trace_notes.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/doc/trace_notes.md b/doc/trace_notes.md index 1cdf8dead..8344c6184 100644 --- a/doc/trace_notes.md +++ b/doc/trace_notes.md @@ -1,4 +1,4 @@ -# Notes about the tracelog. +# Notes about the tracelog ## Table of Contents * [Command](#trace-command) @@ -44,7 +44,6 @@ Marks if the transmitted CRC matches with the calculated CRC. Annotations provide a rough decoding of the transmitted data. For ISO14443A a more detailed decoding is available with Wireshark (s. next chapter) --- ## Tracelog format The binary format for the dynamic tracelog is as following. @@ -73,9 +72,6 @@ typedef struct { #define TRACELOG_PARITY_LEN(x) (((x)->data_len - 1) / 8 + 1) ``` - --- - ## Trace and Wireshark To get a more detailed explanation of the transmitted data for ISO14443A traces the output can be converted to a pcapng file to read it with [Wireshark](https://www.wireshark.org/). From 01139ac7e7bdc36762f0354f7a0c8eded05b26c4 Mon Sep 17 00:00:00 2001 From: Iceman Date: Tue, 19 May 2020 09:40:25 +0200 Subject: [PATCH 035/527] Update README.md --- README.md | 34 +++++++++++++++------------------- 1 file changed, 15 insertions(+), 19 deletions(-) diff --git a/README.md b/README.md index f97017965..d19c187c4 100644 --- a/README.md +++ b/README.md @@ -16,17 +16,24 @@ |[Why didn't you base it on official Proxmark3 Master?](#why-didnt-you-base-it-on-official-proxmark3-master)| **[Homebrew (Mac OS X) & Upgrading HomeBrew Tap Formula](/doc/md/Installation_Instructions/Mac-OS-X-Homebrew-Installation-Instructions.md)** | [First Use and Verification](/doc/md/Use_of_Proxmark/2_Configuration-and-Verification.md)| |[Proxmark3 GUI](#proxmark3-gui)|**[Setup and build for Windows](/doc/md/Installation_Instructions/Windows-Installation-Instructions.md)**|[Commands & Features](/doc/md/Use_of_Proxmark/3_Commands-and-Features.md)| |[Issues](#issues)|[Blue shark manual](/doc/bt_manual_v10.md) || -|[Notes on UART](/doc/uart_notes.md)|[Maintainers](/doc/md/Development/Maintainers.md)|[Command Cheat sheet](/doc/cheatsheet.md)| -|[Notes on frame format](/doc/new_frame_format.md)|[Advanced compilation parameters](/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md)|[More cheat sheets](https://github.com/RfidResearchGroup/proxmark3/wiki/More-cheat-sheets)| -|[Notes on external flash](/doc/ext_flash_notes.md)||[EMV](/doc/emv_notes.md)| -|[Notes on Termux / Android](/doc/termux_notes.md)|**[Troubleshooting](/doc/md/Installation_Instructions/Troubleshooting.md)**|[Complete client command set](/doc/commands.md)| -|[Notes on tracedata / wireshark](/doc/trace_notes.md)|**[JTAG](/doc/jtag_notes.md)**|| -|[Notes on loclass](/doc/loclass_notes.md)||| -|[Notes on paths](/doc/path_notes.md)||| +||[Maintainers](/doc/md/Development/Maintainers.md)|[Command Cheat sheet](/doc/cheatsheet.md)| +||[Advanced compilation parameters](/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md)|[More cheat sheets](https://github.com/RfidResearchGroup/proxmark3/wiki/More-cheat-sheets)| +|||[EMV](/doc/emv_notes.md)| +||**[Troubleshooting](/doc/md/Installation_Instructions/Troubleshooting.md)**|[Complete client command set](/doc/commands.md)| +||**[JTAG](/doc/jtag_notes.md)**|| +|||| +|||| |[Developing standalone mode](/armsrc/Standalone/readme.md)|[Wiki about standalone mode](https://github.com/RfidResearchGroup/proxmark3/wiki/Standalone-mode) || |[Donations](#Donations)||| +| Notes / helpful documents ||| +| ------------------- |:-------------------:| -------------------:| +|[Notes on UART](/doc/uart_notes.md)|[Notes on Termux / Android](/doc/termux_notes.md)|[Notes on paths](/doc/path_notes.md)| +|[Notes on frame format](/doc/new_frame_format.md)|[Notes on tracedata / wireshark](/doc/trace_notes.md)|[Notes on EMV](/doc/emv_notes.md)| +|[Notes on external flash](/doc/ext_flash_notes.md)|[Notes on loclass](/doc/loclass_notes.md)|[Notes on Coverity Scan Config & Run](/doc/md/Development/Coverity-Scan-Config-%26-Run.md)| +|[Notes on file formats used with Proxmark3](/doc/extensions_notes.md)|[Notes on standalone mode](https://github.com/RfidResearchGroup/proxmark3/wiki/Standalone-mode)|| + ## Build for non-RDV4 Proxmark3 platforms In order to build this repo for other Proxmark3 platforms we urge you to read [Advanced compilation parameters](/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md) @@ -60,18 +67,7 @@ The [public roadmap](https://github.com/RfidResearchGroup/proxmark3/wiki/Public- > 👉 **Remember!** If you intend to contribute to the code, please read the [coding style notes](HACKING.md) first. We usually merge your contributions fast since we do like the idea of getting a functionality in the Proxmark3 and weed out the bugs afterwards. -## Notes / helpful documents -- notes on [Coverity Scan Config & Run](/doc/md/Development/Coverity-Scan-Config-%26-Run.md). -- notes on [UART](/doc/uart_notes.md) -- notes on [Frame format](/doc/new_frame_format.md) -- notes on [external flash](/doc/ext_flash_notes.md) -- notes on [standalone mode](https://github.com/RfidResearchGroup/proxmark3/wiki/Standalone-mode) -- notes on [Termux / Android](/doc/termux_notes.md) -- notes on [tracedata / Wireshark](/doc/trace_notes.md) -- notes on [loclass](/doc/loclass_notes.md) -- notes on [EMV](/doc/emv_notes.md) -- notes on [Paths](/doc/path_notes.md) -- notes on [file formats used with Proxmark3](/doc/extensions_notes.md) + ## Cheat sheet Thanks to Alex Dibs, you can enjoy a [command cheat sheet](/doc/cheatsheet.md) From 5e022c4be008eace5ea79a81e587dda3f15e6877 Mon Sep 17 00:00:00 2001 From: Iceman Date: Tue, 19 May 2020 09:40:52 +0200 Subject: [PATCH 036/527] Update README.md --- README.md | 2 -- 1 file changed, 2 deletions(-) diff --git a/README.md b/README.md index d19c187c4..80bf92355 100644 --- a/README.md +++ b/README.md @@ -21,8 +21,6 @@ |||[EMV](/doc/emv_notes.md)| ||**[Troubleshooting](/doc/md/Installation_Instructions/Troubleshooting.md)**|[Complete client command set](/doc/commands.md)| ||**[JTAG](/doc/jtag_notes.md)**|| -|||| -|||| |[Developing standalone mode](/armsrc/Standalone/readme.md)|[Wiki about standalone mode](https://github.com/RfidResearchGroup/proxmark3/wiki/Standalone-mode) || |[Donations](#Donations)||| From eb9a485fe020fa1fc0d9d810dca46878582acd97 Mon Sep 17 00:00:00 2001 From: Iceman Date: Tue, 19 May 2020 09:42:54 +0200 Subject: [PATCH 037/527] Update README.md --- README.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 80bf92355..2897131f6 100644 --- a/README.md +++ b/README.md @@ -18,14 +18,14 @@ |[Issues](#issues)|[Blue shark manual](/doc/bt_manual_v10.md) || ||[Maintainers](/doc/md/Development/Maintainers.md)|[Command Cheat sheet](/doc/cheatsheet.md)| ||[Advanced compilation parameters](/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md)|[More cheat sheets](https://github.com/RfidResearchGroup/proxmark3/wiki/More-cheat-sheets)| -|||[EMV](/doc/emv_notes.md)| ||**[Troubleshooting](/doc/md/Installation_Instructions/Troubleshooting.md)**|[Complete client command set](/doc/commands.md)| ||**[JTAG](/doc/jtag_notes.md)**|| |[Developing standalone mode](/armsrc/Standalone/readme.md)|[Wiki about standalone mode](https://github.com/RfidResearchGroup/proxmark3/wiki/Standalone-mode) || |[Donations](#Donations)||| -| Notes / helpful documents ||| +## Notes / helpful documents +| Notes ||| | ------------------- |:-------------------:| -------------------:| |[Notes on UART](/doc/uart_notes.md)|[Notes on Termux / Android](/doc/termux_notes.md)|[Notes on paths](/doc/path_notes.md)| |[Notes on frame format](/doc/new_frame_format.md)|[Notes on tracedata / wireshark](/doc/trace_notes.md)|[Notes on EMV](/doc/emv_notes.md)| From dcaf7e1ea72ba512875c46eef36dee575d7f56f7 Mon Sep 17 00:00:00 2001 From: Iceman Date: Tue, 19 May 2020 09:46:18 +0200 Subject: [PATCH 038/527] Update README.md --- README.md | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 2897131f6..988274a08 100644 --- a/README.md +++ b/README.md @@ -16,12 +16,10 @@ |[Why didn't you base it on official Proxmark3 Master?](#why-didnt-you-base-it-on-official-proxmark3-master)| **[Homebrew (Mac OS X) & Upgrading HomeBrew Tap Formula](/doc/md/Installation_Instructions/Mac-OS-X-Homebrew-Installation-Instructions.md)** | [First Use and Verification](/doc/md/Use_of_Proxmark/2_Configuration-and-Verification.md)| |[Proxmark3 GUI](#proxmark3-gui)|**[Setup and build for Windows](/doc/md/Installation_Instructions/Windows-Installation-Instructions.md)**|[Commands & Features](/doc/md/Use_of_Proxmark/3_Commands-and-Features.md)| |[Issues](#issues)|[Blue shark manual](/doc/bt_manual_v10.md) || -||[Maintainers](/doc/md/Development/Maintainers.md)|[Command Cheat sheet](/doc/cheatsheet.md)| +|[Donations](#Donations)|[Maintainers](/doc/md/Development/Maintainers.md)|[Command Cheat sheet](/doc/cheatsheet.md)| ||[Advanced compilation parameters](/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md)|[More cheat sheets](https://github.com/RfidResearchGroup/proxmark3/wiki/More-cheat-sheets)| ||**[Troubleshooting](/doc/md/Installation_Instructions/Troubleshooting.md)**|[Complete client command set](/doc/commands.md)| ||**[JTAG](/doc/jtag_notes.md)**|| -|[Developing standalone mode](/armsrc/Standalone/readme.md)|[Wiki about standalone mode](https://github.com/RfidResearchGroup/proxmark3/wiki/Standalone-mode) || -|[Donations](#Donations)||| ## Notes / helpful documents @@ -30,7 +28,8 @@ |[Notes on UART](/doc/uart_notes.md)|[Notes on Termux / Android](/doc/termux_notes.md)|[Notes on paths](/doc/path_notes.md)| |[Notes on frame format](/doc/new_frame_format.md)|[Notes on tracedata / wireshark](/doc/trace_notes.md)|[Notes on EMV](/doc/emv_notes.md)| |[Notes on external flash](/doc/ext_flash_notes.md)|[Notes on loclass](/doc/loclass_notes.md)|[Notes on Coverity Scan Config & Run](/doc/md/Development/Coverity-Scan-Config-%26-Run.md)| -|[Notes on file formats used with Proxmark3](/doc/extensions_notes.md)|[Notes on standalone mode](https://github.com/RfidResearchGroup/proxmark3/wiki/Standalone-mode)|| +|[Notes on file formats used with Proxmark3](/doc/extensions_notes.md)||| +|[Developing standalone mode](/armsrc/Standalone/readme.md)|[Wiki about standalone mode](https://github.com/RfidResearchGroup/proxmark3/wiki/Standalone-mode)|| ## Build for non-RDV4 Proxmark3 platforms From 505cfed5a029cb65021516ceff54c68acffbb7f4 Mon Sep 17 00:00:00 2001 From: Iceman Date: Tue, 19 May 2020 09:49:53 +0200 Subject: [PATCH 039/527] Update README.md --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 988274a08..02eb139b2 100644 --- a/README.md +++ b/README.md @@ -53,9 +53,11 @@ On the software side: quite a lot, see the [Changelog file](CHANGELOG.md). This repo compiles nicely on - Proxspace v3.x - Windows/mingw environment with Qt5.6.1 & GCC 4.8 - - Ubuntu 1604, 1804, 1904 + - Ubuntu 1604, 1804, 1904, 2004 + - ParrotOS, Gentoo, Pentoo, Kali, Nethunter, Archlinux, Fedora, Debian + - Rasbian Pi, Jetson Nano, + - Android / Termux - Mac OS X / Homebrew - - ParrotOS, Gentoo, Pentoo, Kali, Nethunter, Archlinux, Fedora - WSL, WSL2 (Windows subsystem linux) on Windows 10 - Docker container From 3e50a305211f3969cd62c6c433ecb22a228a216a Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Tue, 19 May 2020 10:01:49 +0200 Subject: [PATCH 040/527] trace doc: minor --- doc/trace_notes.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/doc/trace_notes.md b/doc/trace_notes.md index 8344c6184..84a692930 100644 --- a/doc/trace_notes.md +++ b/doc/trace_notes.md @@ -53,9 +53,9 @@ The binary format for the dynamic tracelog is as following. 32 bits timestamp (little endian) 16 bits duration (little endian) 15 bits data length (little endian) (0x7FFF) - 1 bit isResponse (used as readerToTag flag) - y Bytes data - x Bytes parity, where x == ceil(data_len/8) + 1 bit isResponse (0=reader to tag, 1=tag to reader) + data length Bytes data + x Bytes parity, where x == ceil(data length/8) */ typedef struct { From e73aab8ed3294546ec8c8f76c95fa8e83181bcd6 Mon Sep 17 00:00:00 2001 From: Iceman Date: Tue, 19 May 2020 10:11:40 +0200 Subject: [PATCH 041/527] Update bt_manual_v10.md --- doc/bt_manual_v10.md | 34 +++++++++++++++++++++++++++++++++- 1 file changed, 33 insertions(+), 1 deletion(-) diff --git a/doc/bt_manual_v10.md b/doc/bt_manual_v10.md index d54d458c2..b091ef40b 100644 --- a/doc/bt_manual_v10.md +++ b/doc/bt_manual_v10.md @@ -1,4 +1,5 @@ # MANUAL Bluetooth / Battery add-on 'Blue Shark' + _rev. v1.1_ ## Table of Contents @@ -29,6 +30,7 @@ _rev. v1.1_ * [6.5 Get better signals](#65-get-better-signals) ## 1. FEATURES +^[Top](#top) * Built-in Bluetooth 2.0 with EDR Bluetooth module, default baud rate 115200. * Built-in 400 mAh polymer lithium-ion battery, typical standby time up to 3.5 hours. @@ -44,6 +46,7 @@ Built-in battery can support standalone mode, off-line sniffing, off-line readin ## 2. PARAMETERS +^[Top](#top) * Battery capacity: 400 mAh * Standby time: 3.5h @ StandBy; 2.9h @ LF-On; 50min @ HF-On; @@ -56,6 +59,7 @@ Built-in battery can support standalone mode, off-line sniffing, off-line readin ## 3. ASSEMBLY STEPS +^[Top](#top) * Unplug your Proxmark3 RDV4.0 device from any usb cable. * Remove the plastic upper case of Proxmark3 RDV4.0 with opener. @@ -72,8 +76,11 @@ Built-in battery can support standalone mode, off-line sniffing, off-line readin

## 4. COMPILATION / FLASHING +^[Top](#top) #### 4.1 From Source +^[Top](#top) + Please download the latest source code from Rfid Research Group's Github repo: https://github.com/RfidResearchGroup/proxmark3 @@ -91,6 +98,8 @@ You are now ready to run the client with the serial port you got from your BT de See instructions below. #### 4.2 Homebrew (macOS) +^[Top](#top) + From the [homebrew-proxmark3 readme](https://github.com/RfidResearchGroup/homebrew-proxmark3) 1. `brew tap rfidresearchgroup/proxmark3` @@ -98,13 +107,17 @@ From the [homebrew-proxmark3 readme](https://github.com/RfidResearchGroup/homebr ## 5. CONNECT WITH BLUETOOTH +^[Top](#top) You can have both USB cable connect and BT active at the same time and connect to either serial port. You can also switch serial port from inside the proxmark3 client using the new command `hw connect`. ### 5.1 Windows +^[Top](#top) #### 5.1.1 Connecting your RDV4.0 with Bluetooth on mobile phone or computer +^[Top](#top) + * Open Bluetooth and search for a device named PM3_RDV4.0. * Enter the paired password 1234 and establish the connection. * The blue state LED on the add-on will keep blinking after the connection is established. Only when the mobile phone or computer opens the correct COM port, the blue LED turns on solid, indicating that the connection is successful. @@ -130,6 +143,7 @@ You can also switch serial port from inside the proxmark3 client using the new c * done! #### 5.1.2 Fast connection using dedicated USB Bluetooth adapter under Windows +^[Top](#top)

Image of blue shark add-on HC-06 white dongle

@@ -143,8 +157,10 @@ http://www.silabs.com/products/development-tools/software/usb-to-uart-bridge-vcp * look for _CP2104 USB tp UART bridge controller_ under devices in order to get the assigned serial port ### 5.2 Linux +^[Top](#top) #### 5.2.1 Connecting rdv4.0 with Bluetooth on Linux computer via native Bluetooth support in the client +^[Top](#top) This requires to have compiled the client with Bluetooth support. @@ -189,6 +205,7 @@ Discovery started ``` #### 5.2.2 Fast connection using dedicated USB Bluetooth adapter under Linux +^[Top](#top)

Image of blue shark add-on HC-06 white dongle

@@ -212,6 +229,7 @@ turn on solid. ``` #### 5.2.3 (deprecated) Connecting rdv4.0 with Bluetooth on Linux computer via rfcomm +^[Top](#top) rfcomm is a deprecated tool which might be unavailable in your Linux distribution. @@ -245,8 +263,10 @@ connection is successful. See instructions above (method 1) for initial pairing. ### 5.3 MacOS +^[Top](#top) #### 5.3.1 Connecting rdv4.0 with Bluetooth on MacOS +^[Top](#top) With MacOS Mojave 10.14.5 you could experience some continuosly disconnecting and difficult to recconnect the device at the system wakeup, to avoid this problem do a PRAM reset before to add your Proxmark3 RDV4 Blue Shark: @@ -266,17 +286,21 @@ After reboot you can go ahead to pairing your Proxmark3 RDV4 Blue Shark: ./proxmark3 /dev/tty.PM3_RDV40-DevB ``` ### 5.4 Android +^[Top](#top) #### 5.4.1 Fast connection using dedicated Bluetooth (HC-06 Master + CP2102) adapter under Android with Termux - +^[Top](#top) + 1. Make sure you already followed this tutorial https://github.com/RfidResearchGroup/proxmark3/blob/master/doc/termux_notes.md#setup and have Termux with an running Proxmark3 client ready. You need additional the `cp210x` serial usb driver enabled and working, like the `USB_ACM` driver to communicate wireless. 2. Insert the Bluetooth adapter with an fitting USB-C/Micro-USB converter into your Android USB port and a serial port `/dev/ttyUSB0` will be created. To see if it's working, run `tsudo ls /dev/ttyU*` and it should list `/dev/ttyUSB0`. 3. The adapter will search automatically and establish the connection to BlueShark. The adapter will remember the device that was first connected and after that the same device will be connected. After the connection is established, the blue state LED on add-on will turn on solid. 4. If you see this, congratulations, you can run your Proxmark3 client in Termux with `tsudo proxmark3/client/proxmark3 /dev/ttyUSB0` ## 6. OTHER NOTES +^[Top](#top) ### 6.1 Default settings +^[Top](#top) Settings of the Blue Shark add-on and of the white dongle: @@ -287,19 +311,27 @@ Settings of the Blue Shark add-on and of the white dongle: If you bought your Bluetooth adapter dongle somewhere else, make sure to set the baud rate to 115200 `AT+BAUD8`, the name `AT+NAMEPM3_RDV4.0` and PIN `AT+PIN1234` correctly. ### 6.1 UART and LED behavior +^[Top](#top) + Bluetooth is connected to Proxmark3 RDV4.0 via UART. The USB and UART interfaces of RDV4.0 can coexist without conflict, and no special switching is required. The following link has helpful notes on UART usage and baud rates: https://github.com/RfidResearchGroup/proxmark3/blob/master/doc/uart_notes.md ### 6.2 Disassembly +^[Top](#top) + There is a heat conductive double-sided tape inside the add-on, which has strong adhesive force. Therefore, if add-on needs to be removed, it needs to be pulled out from the heat sink end with greater efforts. Each disassembly will reduce the viscidity of double-sided tape. When double-sided tape is well protected, it will not affect the second use. Thermal conductivity will be slightly worse and will therefore have a direct impact on the thermal performance of the heat sink. ### 6.3 Battery charging +^[Top](#top) + The battery charging circuit is turned on by default. Any time a USB cable is inserted, the battery will be automatically charged. The red LED will remain bright when charging. The red LED will be extinguished when charging is completed. ### 6.4 Get better signals +^[Top](#top) + For the better heat dissipation, we have used a cast metal enclosure for the add-on. As a result Bluetooth wireless signals are sacrificed. For example, if the back of add-on is facing the Bluetooth host, the signal is very bad and the distance will be reduced. The best signal strength can be obtained when the front glass faces the Bluetooth host. If the Proxmark3 is not responding, it may be due to a poor Bluetooth connection. To improve performance, try repositioning the Proxmark3 so the glass face is directed toward the host. From ecd709494abf090a3bbd9a9014a806079641bb0a Mon Sep 17 00:00:00 2001 From: Iceman Date: Tue, 19 May 2020 10:13:19 +0200 Subject: [PATCH 042/527] Update bt_manual_v10.md --- doc/bt_manual_v10.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/doc/bt_manual_v10.md b/doc/bt_manual_v10.md index b091ef40b..e474c0ec7 100644 --- a/doc/bt_manual_v10.md +++ b/doc/bt_manual_v10.md @@ -310,7 +310,7 @@ Settings of the Blue Shark add-on and of the white dongle: If you bought your Bluetooth adapter dongle somewhere else, make sure to set the baud rate to 115200 `AT+BAUD8`, the name `AT+NAMEPM3_RDV4.0` and PIN `AT+PIN1234` correctly. -### 6.1 UART and LED behavior +### 6.2 UART and LED behavior ^[Top](#top) Bluetooth is connected to Proxmark3 RDV4.0 via UART. The USB and UART interfaces of RDV4.0 can coexist without conflict, and no special switching is required. @@ -318,18 +318,18 @@ Bluetooth is connected to Proxmark3 RDV4.0 via UART. The USB and UART interfaces The following link has helpful notes on UART usage and baud rates: https://github.com/RfidResearchGroup/proxmark3/blob/master/doc/uart_notes.md -### 6.2 Disassembly +### 6.3 Disassembly ^[Top](#top) There is a heat conductive double-sided tape inside the add-on, which has strong adhesive force. Therefore, if add-on needs to be removed, it needs to be pulled out from the heat sink end with greater efforts. Each disassembly will reduce the viscidity of double-sided tape. When double-sided tape is well protected, it will not affect the second use. Thermal conductivity will be slightly worse and will therefore have a direct impact on the thermal performance of the heat sink. -### 6.3 Battery charging +### 6.4 Battery charging ^[Top](#top) The battery charging circuit is turned on by default. Any time a USB cable is inserted, the battery will be automatically charged. The red LED will remain bright when charging. The red LED will be extinguished when charging is completed. -### 6.4 Get better signals +### 6.5 Get better signals ^[Top](#top) For the better heat dissipation, we have used a cast metal enclosure for the add-on. As a result Bluetooth wireless signals are sacrificed. For example, if the back of add-on is facing the Bluetooth host, the signal is very bad and the distance will be reduced. The best signal strength can be obtained when the front glass faces the Bluetooth host. From 0112346dac818b5cfc59d22a6a069951daedd342 Mon Sep 17 00:00:00 2001 From: Iceman Date: Tue, 19 May 2020 10:14:39 +0200 Subject: [PATCH 043/527] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 02eb139b2..441b060c2 100644 --- a/README.md +++ b/README.md @@ -26,7 +26,7 @@ | Notes ||| | ------------------- |:-------------------:| -------------------:| |[Notes on UART](/doc/uart_notes.md)|[Notes on Termux / Android](/doc/termux_notes.md)|[Notes on paths](/doc/path_notes.md)| -|[Notes on frame format](/doc/new_frame_format.md)|[Notes on tracedata / wireshark](/doc/trace_notes.md)|[Notes on EMV](/doc/emv_notes.md)| +|[Notes on frame format](/doc/new_frame_format.md)|[Notes on tracelog / wireshark](/doc/trace_notes.md)|[Notes on EMV](/doc/emv_notes.md)| |[Notes on external flash](/doc/ext_flash_notes.md)|[Notes on loclass](/doc/loclass_notes.md)|[Notes on Coverity Scan Config & Run](/doc/md/Development/Coverity-Scan-Config-%26-Run.md)| |[Notes on file formats used with Proxmark3](/doc/extensions_notes.md)||| |[Developing standalone mode](/armsrc/Standalone/readme.md)|[Wiki about standalone mode](https://github.com/RfidResearchGroup/proxmark3/wiki/Standalone-mode)|| From 7e213fcf43584525ae2b87f555d92fdafa547528 Mon Sep 17 00:00:00 2001 From: Iceman Date: Tue, 19 May 2020 10:15:43 +0200 Subject: [PATCH 044/527] Update trace_notes.md --- doc/trace_notes.md | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/doc/trace_notes.md b/doc/trace_notes.md index 84a692930..ccf9a5e5e 100644 --- a/doc/trace_notes.md +++ b/doc/trace_notes.md @@ -1,4 +1,5 @@ # Notes about the tracelog + ## Table of Contents * [Command](#trace-command) @@ -7,12 +8,14 @@ ## Trace command +^[Top](#top) The `trace` command lists the data exchange by the proxmark3 and a tag or a reader in human readable form. With `trace list` a table is shown which gives timing information, the src of the data bytes, the transmitted/received bytes itself, a check if the CRC was correct and some decoding of the command. ### Timing +^[Top](#top) The Start and the End coloumn lists timestamps when the transmission of the shown data started (time of first bit) and when it ended (end of last modulation). @@ -29,22 +32,28 @@ The unit for this time information depends on the protocol in use: By specifing the option ```f``` (e.g. ```trace list 14a f```) the frame delay times are shown. (So you don't have to do the math by your own). ### Sources +^[Top](#top) If the data is marked as a response the source is shown as Tag. Otherwise it is marked as Reader (Rdr). ### Data +^[Top](#top) This coloumn show the raw bytes trasmitted over the air. With option ```c``` CRC bytes are marked in square brackets. ### CRC +^[Top](#top) Marks if the transmitted CRC matches with the calculated CRC. ### Annotation +^[Top](#top) Annotations provide a rough decoding of the transmitted data. For ISO14443A a more detailed decoding is available with Wireshark (s. next chapter) ## Tracelog format +^[Top](#top) + The binary format for the dynamic tracelog is as following. ``` @@ -73,6 +82,7 @@ typedef struct { ``` ## Trace and Wireshark +^[Top](#top) To get a more detailed explanation of the transmitted data for ISO14443A traces the output can be converted to a pcapng file to read it with [Wireshark](https://www.wireshark.org/). From 2adace964de02ee0281d2524e889dafefcb20b13 Mon Sep 17 00:00:00 2001 From: Iceman Date: Tue, 19 May 2020 10:16:20 +0200 Subject: [PATCH 045/527] Update trace_notes.md --- doc/trace_notes.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/trace_notes.md b/doc/trace_notes.md index ccf9a5e5e..a95285518 100644 --- a/doc/trace_notes.md +++ b/doc/trace_notes.md @@ -1,5 +1,5 @@ -# Notes about the tracelog +# Notes about the tracelog ## Table of Contents * [Command](#trace-command) From db416483421d168541ec34307929450f824bbfcc Mon Sep 17 00:00:00 2001 From: Iceman Date: Tue, 19 May 2020 10:17:46 +0200 Subject: [PATCH 046/527] Update cheatsheet.md --- doc/cheatsheet.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/cheatsheet.md b/doc/cheatsheet.md index 74a061b10..0ae47b68c 100644 --- a/doc/cheatsheet.md +++ b/doc/cheatsheet.md @@ -1,5 +1,5 @@ -# Command Cheat Sheet +# Command Cheat Sheet |Generic|Low Frequence 125 kHz|High Frequence 13.56 MHz| |---|---|---| From f7534f412081631faf0ab1a174373674d7e1122e Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Tue, 19 May 2020 14:00:45 +0200 Subject: [PATCH 047/527] try to update build status logo --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 441b060c2..1c4cdaf83 100644 --- a/README.md +++ b/README.md @@ -3,7 +3,7 @@ | Releases | Linux & OSX CI | Windows CI | Coverity | | ------------------- |:-------------------:| -------------------:| -------------------:| -| [![Latest release](https://img.shields.io/github/release/RfidResearchGroup/proxmark3.svg)](https://github.com/RfidResearchGroup/proxmark3/releases/latest) | [![Build status](https://travis-ci.org/RfidResearchGroup/proxmark3.svg?branch=master)](https://travis-ci.org/RfidResearchGroup/proxmark3) | [![Build status](https://ci.appveyor.com/api/projects/status/b4gwrhq3nc876cuu/branch/master?svg=true)](https://ci.appveyor.com/project/RfidResearchGroup/proxmark3/branch/master) | [![Coverity Status](https://scan.coverity.com/projects/19334/badge.svg)](https://scan.coverity.com/projects/proxmark3-rrg-iceman-repo)| +| [![Latest release](https://img.shields.io/github/release/RfidResearchGroup/proxmark3.svg)](https://github.com/RfidResearchGroup/proxmark3/releases/latest) | [![Build status](https://api.travis-ci.org/RfidResearchGroup/proxmark3.svg?branch=master)](https://travis-ci.org/RfidResearchGroup/proxmark3) | [![Build status](https://ci.appveyor.com/api/projects/status/b4gwrhq3nc876cuu/branch/master?svg=true)](https://ci.appveyor.com/project/RfidResearchGroup/proxmark3/branch/master) | [![Coverity Status](https://scan.coverity.com/projects/19334/badge.svg)](https://scan.coverity.com/projects/proxmark3-rrg-iceman-repo)| From e8f723620ee5f3b76d507947cb657653d122cbac Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Tue, 19 May 2020 16:26:08 +0200 Subject: [PATCH 048/527] Fix issue #736, still other errors on armsrc to solve --- common_arm/Makefile.common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index 95b419e8e..81f2b0131 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -39,7 +39,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h -ARMCFLAGS = -mthumb-interwork +ARMCFLAGS = -mthumb-interwork -fno-builtin DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: From fbaf634779f91db7cd0ba0336c29fa78c24814d7 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Tue, 19 May 2020 16:33:55 +0200 Subject: [PATCH 049/527] legicrf & gcc 10: Remove inline warning --- armsrc/legicrf.c | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/armsrc/legicrf.c b/armsrc/legicrf.c index 474d0df84..14298a5f1 100644 --- a/armsrc/legicrf.c +++ b/armsrc/legicrf.c @@ -113,7 +113,13 @@ static inline int32_t sample_power(void) { // // Note: The demodulator would be drifting (18.9us * 5 != 100us), rx_frame // has a delay loop that aligns rx_bit calls to the TAG tx timeslots. + +// Note: inlining this function would fail with -Os +#ifdef __OPTIMIZE_SIZE__ +static bool rx_bit(void) { +#else static inline bool rx_bit(void) { +#endif int32_t power; for (size_t i = 0; i < 5; ++i) { From 3e7512a5d5405204aaf899650e92170af4604730 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Tue, 19 May 2020 17:05:43 +0200 Subject: [PATCH 050/527] armsrc: clarify static vars vs global vars --- armsrc/appmain.c | 14 +++++++------- armsrc/appmain.h | 5 ++--- armsrc/cmd.c | 34 +++++++++++++++++----------------- armsrc/cmd.h | 8 ++++---- armsrc/dbprint.h | 36 ++++++++++++++++++------------------ armsrc/felica.c | 2 +- armsrc/hitag2.c | 22 +++++++++++----------- armsrc/hitag2crack.c | 6 +++--- armsrc/hitagS.c | 3 +-- armsrc/iclass.c | 4 ++-- armsrc/iso14443a.c | 10 +++++----- armsrc/iso14443b.c | 4 ++-- armsrc/lfadc.c | 19 ++++++++++++------- armsrc/lfadc.h | 2 +- armsrc/lfops.h | 4 ---- armsrc/lfsampling.c | 2 +- armsrc/mifaredesfire.c | 2 +- armsrc/printf.c | 2 +- armsrc/usart.c | 20 ++++++++++---------- armsrc/usart.h | 4 ++-- 20 files changed, 101 insertions(+), 102 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 7cb974cec..87b3dd0df 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -73,7 +73,7 @@ int ToSendMax = -1; static int ToSendBit; struct common_area common_area __attribute__((section(".commonarea"))); int button_status = BUTTON_NO_CLICK; -bool allow_send_wtx = false; +static bool allow_send_wtx = false; inline void send_wtx(uint16_t wtx) { if (allow_send_wtx) { @@ -385,12 +385,12 @@ static void SendStatus(void) { static void SendCapabilities(void) { capabilities_t capabilities; capabilities.version = CAPABILITIES_VERSION; - capabilities.via_fpc = reply_via_fpc; - capabilities.via_usb = reply_via_usb; + capabilities.via_fpc = g_reply_via_fpc; + capabilities.via_usb = g_reply_via_usb; capabilities.baudrate = 0; // no real baudrate for USB-CDC #ifdef WITH_FPC_USART - if (reply_via_fpc) - capabilities.baudrate = usart_baudrate; + if (g_reply_via_fpc) + capabilities.baudrate = g_usart_baudrate; #endif #ifdef WITH_FLASH @@ -701,8 +701,8 @@ static void PacketReceived(PacketCommandNG *packet) { case CMD_BREAK_LOOP: break; case CMD_QUIT_SESSION: { - reply_via_fpc = false; - reply_via_usb = false; + g_reply_via_fpc = false; + g_reply_via_usb = false; break; } // emulator diff --git a/armsrc/appmain.h b/armsrc/appmain.h index 8baff4db1..5aece8388 100644 --- a/armsrc/appmain.h +++ b/armsrc/appmain.h @@ -13,9 +13,8 @@ #include "common.h" -extern int rsamples; // = 0; -extern uint8_t trigger; -extern bool allow_send_wtx; +extern int g_rsamples; // = 0; +extern uint8_t g_trigger; // ADC Vref = 3300mV, and an (10M+1M):1M voltage divider on the HF input can measure voltages up to 36300 mV #define MAX_ADC_HF_VOLTAGE 36300 diff --git a/armsrc/cmd.c b/armsrc/cmd.c index 17534cbf1..b0dc4aef8 100644 --- a/armsrc/cmd.c +++ b/armsrc/cmd.c @@ -36,11 +36,11 @@ #include "string.h" // Flags to tell where to add CRC on sent replies -bool reply_with_crc_on_usb = false; -bool reply_with_crc_on_fpc = true; +bool g_reply_with_crc_on_usb = false; +bool g_reply_with_crc_on_fpc = true; // "Session" flag, to tell via which interface next msgs should be sent: USB or FPC USART -bool reply_via_fpc = false; -bool reply_via_usb = false; +bool g_reply_via_fpc = false; +bool g_reply_via_usb = false; int reply_old(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *data, size_t len) { PacketResponseOLD txcmd = {CMD_UNKNOWN, {0, 0, 0}, {{0}}}; @@ -68,11 +68,11 @@ int reply_old(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *d int resultusb = PM3_EUNDEF; // Send frame and make sure all bytes are transmitted - if (reply_via_usb) { + if (g_reply_via_usb) { resultusb = usb_write((uint8_t *)&txcmd, sizeof(PacketResponseOLD)); } - if (reply_via_fpc) { + if (g_reply_via_fpc) { #ifdef WITH_FPC_USART_HOST resultfpc = usart_writebuffer_sync((uint8_t *)&txcmd, sizeof(PacketResponseOLD)); #else @@ -80,9 +80,9 @@ int reply_old(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *d #endif } // we got two results, let's prioritize the faulty one and USB over FPC. - if (reply_via_usb && (resultusb != PM3_SUCCESS)) return resultusb; + if (g_reply_via_usb && (resultusb != PM3_SUCCESS)) return resultusb; #ifdef WITH_FPC_USART_HOST - if (reply_via_fpc && (resultfpc != PM3_SUCCESS)) return resultfpc; + if (g_reply_via_fpc && (resultfpc != PM3_SUCCESS)) return resultfpc; #endif return PM3_SUCCESS; } @@ -112,7 +112,7 @@ static int reply_ng_internal(uint16_t cmd, int16_t status, uint8_t *data, size_t PacketResponseNGPostamble *tx_post = (PacketResponseNGPostamble *)((uint8_t *)&txBufferNG + sizeof(PacketResponseNGPreamble) + len); // Note: if we send to both FPC & USB, we'll set CRC for both if any of them require CRC - if ((reply_via_fpc && reply_with_crc_on_fpc) || ((reply_via_usb) && reply_with_crc_on_usb)) { + if ((g_reply_via_fpc && g_reply_with_crc_on_fpc) || ((g_reply_via_usb) && g_reply_with_crc_on_usb)) { uint8_t first, second; compute_crc(CRC_14443_A, (uint8_t *)&txBufferNG, sizeof(PacketResponseNGPreamble) + len, &first, &second); tx_post->crc = (first << 8) + second; @@ -127,10 +127,10 @@ static int reply_ng_internal(uint16_t cmd, int16_t status, uint8_t *data, size_t int resultusb = PM3_EUNDEF; // Send frame and make sure all bytes are transmitted - if (reply_via_usb) { + if (g_reply_via_usb) { resultusb = usb_write((uint8_t *)&txBufferNG, txBufferNGLen); } - if (reply_via_fpc) { + if (g_reply_via_fpc) { #ifdef WITH_FPC_USART_HOST resultfpc = usart_writebuffer_sync((uint8_t *)&txBufferNG, txBufferNGLen); #else @@ -138,9 +138,9 @@ static int reply_ng_internal(uint16_t cmd, int16_t status, uint8_t *data, size_t #endif } // we got two results, let's prioritize the faulty one and USB over FPC. - if (reply_via_usb && (resultusb != PM3_SUCCESS)) return resultusb; + if (g_reply_via_usb && (resultusb != PM3_SUCCESS)) return resultusb; #ifdef WITH_FPC_USART_HOST - if (reply_via_fpc && (resultfpc != PM3_SUCCESS)) return resultfpc; + if (g_reply_via_fpc && (resultfpc != PM3_SUCCESS)) return resultfpc; #endif return PM3_SUCCESS; } @@ -216,8 +216,8 @@ static int receive_ng_internal(PacketCommandNG *rx, uint32_t read_ng(uint8_t *da if ((first << 8) + second != rx->crc) return PM3_EIO; } - reply_via_usb = usb; - reply_via_fpc = fpc; + g_reply_via_usb = usb; + g_reply_via_fpc = fpc; } else { // Old style command PacketCommandOLD rx_old; memcpy(&rx_old, &rx_raw.pre, sizeof(PacketCommandNGPreamble)); @@ -225,8 +225,8 @@ static int receive_ng_internal(PacketCommandNG *rx, uint32_t read_ng(uint8_t *da if (bytes != sizeof(PacketCommandOLD) - sizeof(PacketCommandNGPreamble)) return PM3_EIO; - reply_via_usb = usb; - reply_via_fpc = fpc; + g_reply_via_usb = usb; + g_reply_via_fpc = fpc; rx->ng = false; rx->magic = 0; rx->crc = 0; diff --git a/armsrc/cmd.h b/armsrc/cmd.h index e04f397a3..f4ae95ab1 100644 --- a/armsrc/cmd.h +++ b/armsrc/cmd.h @@ -37,11 +37,11 @@ #include "pm3_cmd.h" // Flags to tell where to add CRC on sent replies -extern bool reply_with_crc_on_usb; -extern bool reply_with_crc_on_fpc; +extern bool g_reply_with_crc_on_usb; +extern bool g_reply_with_crc_on_fpc; // "Session" flag, to tell via which interface next msgs should be sent: USB and/or FPC USART -extern bool reply_via_fpc; -extern bool reply_via_usb; +extern bool g_reply_via_fpc; +extern bool g_reply_via_usb; int reply_old(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *data, size_t len); int reply_ng(uint16_t cmd, int16_t status, uint8_t *data, size_t len); diff --git a/armsrc/dbprint.h b/armsrc/dbprint.h index 2a8444ef3..993e06289 100644 --- a/armsrc/dbprint.h +++ b/armsrc/dbprint.h @@ -15,31 +15,31 @@ #include "ansi.h" #define Dbprintf_usb(...) {\ - bool tmpfpc = reply_via_fpc;\ - bool tmpusb = reply_via_usb;\ - reply_via_fpc = false;\ - reply_via_usb = true;\ + bool tmpfpc = g_reply_via_fpc;\ + bool tmpusb = g_reply_via_usb;\ + g_reply_via_fpc = false;\ + g_reply_via_usb = true;\ Dbprintf(__VA_ARGS__);\ - reply_via_fpc = tmpfpc;\ - reply_via_usb = tmpusb;} + g_reply_via_fpc = tmpfpc;\ + g_reply_via_usb = tmpusb;} #define Dbprintf_fpc(...) {\ - bool tmpfpc = reply_via_fpc;\ - bool tmpusb = reply_via_usb;\ - reply_via_fpc = true;\ - reply_via_usb = false;\ + bool tmpfpc = g_reply_via_fpc;\ + bool tmpusb = g_reply_via_usb;\ + g_reply_via_fpc = true;\ + g_reply_via_usb = false;\ Dbprintf(__VA_ARGS__);\ - reply_via_fpc = tmpfpc;\ - reply_via_usb = tmpusb;} + g_reply_via_fpc = tmpfpc;\ + g_reply_via_usb = tmpusb;} #define Dbprintf_all(...) {\ - bool tmpfpc = reply_via_fpc;\ - bool tmpusb = reply_via_usb;\ - reply_via_fpc = true;\ - reply_via_usb = true;\ + bool tmpfpc = g_reply_via_fpc;\ + bool tmpusb = g_reply_via_usb;\ + g_reply_via_fpc = true;\ + g_reply_via_usb = true;\ Dbprintf(__VA_ARGS__);\ - reply_via_fpc = tmpfpc;\ - reply_via_usb = tmpusb;} + g_reply_via_fpc = tmpfpc;\ + g_reply_via_usb = tmpusb;} void DbpString(const char *str); diff --git a/armsrc/felica.c b/armsrc/felica.c index e72051bdc..f8375f0cc 100644 --- a/armsrc/felica.c +++ b/armsrc/felica.c @@ -35,7 +35,7 @@ static uint32_t felica_lasttime_prox2air_start; static void iso18092_setup(uint8_t fpga_minor_mode); static uint8_t felica_select_card(felica_card_select_t *card); static void TransmitFor18092_AsReader(uint8_t *frame, int len, uint32_t *timing, uint8_t power, uint8_t highspeed); -bool WaitForFelicaReply(uint16_t maxbytes); +static bool WaitForFelicaReply(uint16_t maxbytes); static void iso18092_set_timeout(uint32_t timeout) { felica_timeout = timeout + (DELAY_AIR2ARM_AS_READER + DELAY_ARM2AIR_AS_READER) / (16 * 8) + 2; diff --git a/armsrc/hitag2.c b/armsrc/hitag2.c index 03aedc7a1..c22b04e70 100644 --- a/armsrc/hitag2.c +++ b/armsrc/hitag2.c @@ -48,8 +48,8 @@ static bool bCrypto; // Is in auth stage static bool bAuthenticating; // Successful password auth -bool bSelecting; -bool bCollision; +static bool bSelecting; +static bool bCollision; static bool bPwd; static bool bSuccessful; @@ -89,14 +89,14 @@ static uint8_t password[4]; static uint8_t NrAr[8]; static uint8_t key[8]; static uint8_t writedata[4]; -uint8_t logdata_0[4], logdata_1[4]; -uint8_t nonce[4]; -bool key_no; +static uint8_t logdata_0[4], logdata_1[4]; +static uint8_t nonce[4]; +static bool key_no; static uint64_t cipher_state; -int16_t blocknr; -size_t flipped_bit = 0; -uint32_t byte_value = 0; +static int16_t blocknr; +static size_t flipped_bit = 0; +static uint32_t byte_value = 0; static int hitag2_reset(void) { tag.state = TAG_STATE_RESET; @@ -997,7 +997,7 @@ void SniffHitag2(void) { lf_init(false, false); - logging = false; + g_logging = false; size_t periods = 0; uint8_t periods_bytes[4]; @@ -1031,8 +1031,8 @@ void SniffHitag2(void) { // Test if we detected the first reader modulation edge if (periods != 0) { - if (logging == false) { - logging = true; + if (g_logging == false) { + g_logging = true; LED_D_ON(); } } diff --git a/armsrc/hitag2crack.c b/armsrc/hitag2crack.c index faf530897..a79c166d6 100644 --- a/armsrc/hitag2crack.c +++ b/armsrc/hitag2crack.c @@ -17,9 +17,9 @@ #define READP0CMD "1100000111" #define ERROR_RESPONSE "F402889C" -extern const uint8_t Hitag2Sync[5]; -extern bool CryptoActive; -extern Hitag_State Hitag_Crypto_State; +static const uint8_t Hitag2Sync[5]; +static bool CryptoActive; +static Hitag_State Hitag_Crypto_State; // hitag2_crack implements the first crack algorithm described in the paper, // Gone In 360 Seconds by Verdult, Garcia and Balasch. diff --git a/armsrc/hitagS.c b/armsrc/hitagS.c index 81ed771b4..10c889fa7 100644 --- a/armsrc/hitagS.c +++ b/armsrc/hitagS.c @@ -48,8 +48,7 @@ static int temp2 = 0; static int sof_bits; // number of start-of-frame bits static uint8_t pwdh0, pwdl0, pwdl1; // password bytes static uint32_t rnd = 0x74124485; // randomnumber -size_t blocknr; -bool end = false; +static bool end = false; //#define SENDBIT_TEST /* array index 3 2 1 0 // bytes in sim.bin file are 0 1 2 3 diff --git a/armsrc/iclass.c b/armsrc/iclass.c index cca922a29..1e9bb671f 100644 --- a/armsrc/iclass.c +++ b/armsrc/iclass.c @@ -1802,7 +1802,7 @@ static void ReaderTransmitIClass_ext(uint8_t *frame, int len, int wait) { TransmitIClassCommand(ToSend, ToSendMax, &wait); LED_A_ON(); - LogTrace(frame, len, rsamples, rsamples, NULL, true); + LogTrace(frame, len, g_rsamples, g_rsamples, NULL, true); } static void ReaderTransmitIClass(uint8_t *frame, int len) { ReaderTransmitIClass_ext(frame, len, 330); @@ -1867,7 +1867,7 @@ static int ReaderReceiveIClass(uint8_t *receivedAnswer) { if (GetIClassAnswer(receivedAnswer, 0, NULL) == false) return 0; - LogTrace(receivedAnswer, Demod.len, rsamples, rsamples, NULL, false); + LogTrace(receivedAnswer, Demod.len, g_rsamples, g_rsamples, NULL, false); return Demod.len; } diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 1d2ed655a..499932f0a 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -31,9 +31,9 @@ static uint32_t iso14a_timeout; // if iso14443a not active - transmit/receive dont try to execute static bool hf_field_active = false; -uint8_t colpos = 0; -int rsamples = 0; -uint8_t trigger = 0; +static uint8_t colpos = 0; +int g_rsamples = 0; +uint8_t g_trigger = 0; // the block number for the ISO14443-4 PCB static uint8_t iso14_pcb_blocknum = 0; @@ -123,7 +123,7 @@ static uint32_t LastProxToAirDuration; #define SEC_Z 0xc0 void iso14a_set_trigger(bool enable) { - trigger = enable; + g_trigger = enable; } void iso14a_set_timeout(uint32_t timeout) { @@ -2145,7 +2145,7 @@ void ReaderTransmitBitsPar(uint8_t *frame, uint16_t bits, uint8_t *par, uint32_t CodeIso14443aBitsAsReaderPar(frame, bits, par); // Send command to tag TransmitFor14443a(ToSend, ToSendMax, timing); - if (trigger) LED_A_ON(); + if (g_trigger) LED_A_ON(); LogTrace(frame, nbytes(bits), (LastTimeProxToAirStart << 4) + DELAY_ARM2AIR_AS_READER, ((LastTimeProxToAirStart + LastProxToAirDuration) << 4) + DELAY_ARM2AIR_AS_READER, par, true); } diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index 7aa3e981e..b03e84912 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -1150,7 +1150,7 @@ static void CodeAndTransmit14443bAsReader(const uint8_t *cmd, int len) { TransmitFor14443b_AsReader(); - if (trigger) LED_A_ON(); + if (g_trigger) LED_A_ON(); LogTrace(cmd, len, time_start, GetCountSspClk() - time_start, NULL, true); } @@ -1578,7 +1578,7 @@ void RAMFUNC SniffIso14443b(void) { } static void iso14b_set_trigger(bool enable) { - trigger = enable; + g_trigger = enable; } /* diff --git a/armsrc/lfadc.c b/armsrc/lfadc.c index 461a74783..078745dd8 100644 --- a/armsrc/lfadc.c +++ b/armsrc/lfadc.c @@ -25,13 +25,18 @@ // T0 = timer/carrier = 1500kHz/125kHz = 1500000/125000 = 6 //#define HITAG_T0 3 +////////////////////////////////////////////////////////////////////////////// +// Exported global variables +////////////////////////////////////////////////////////////////////////////// + +bool g_logging = true; + ////////////////////////////////////////////////////////////////////////////// // Global variables ////////////////////////////////////////////////////////////////////////////// -bool rising_edge = false; -bool logging = true; -bool reader_mode = false; +static bool rising_edge = false; +static bool reader_mode = false; ////////////////////////////////////////////////////////////////////////////// // Auxiliary functions @@ -90,7 +95,7 @@ static size_t lf_count_edge_periods_ex(size_t max, bool wait, bool detect_gap) { adc_val = AT91C_BASE_SSC->SSC_RHR; periods++; - if (logging) logSampleSimple(adc_val); + if (g_logging) logSampleSimple(adc_val); // Only test field changes if state of adc values matter if (wait == false) { @@ -120,7 +125,7 @@ static size_t lf_count_edge_periods_ex(size_t max, bool wait, bool detect_gap) { if (periods >= max) return 0; } } - if (logging) logSampleSimple(0xFF); + if (g_logging) logSampleSimple(0xFF); return 0; } @@ -223,7 +228,7 @@ void lf_init(bool reader, bool simulate) { uint32_t bufsize = 10000; // use malloc - if (logging) initSampleBufferEx(&bufsize, true); + if (g_logging) initSampleBufferEx(&bufsize, true); lf_sample_mean(); } @@ -269,7 +274,7 @@ size_t lf_detect_field_drop(size_t max) { periods++; volatile uint8_t adc_val = AT91C_BASE_SSC->SSC_RHR; - if (logging) logSampleSimple(adc_val); + if (g_logging) logSampleSimple(adc_val); if (adc_val == 0) { rising_edge = false; diff --git a/armsrc/lfadc.h b/armsrc/lfadc.h index 2238e2eb5..1c8a4211f 100644 --- a/armsrc/lfadc.h +++ b/armsrc/lfadc.h @@ -15,7 +15,7 @@ #include "util.h" #include "string.h" -extern bool logging; +extern bool g_logging; void lf_sample_mean(void); bool lf_test_periods(size_t expected, size_t count); diff --git a/armsrc/lfops.h b/armsrc/lfops.h index b697cffd1..eb31e54a6 100644 --- a/armsrc/lfops.h +++ b/armsrc/lfops.h @@ -15,10 +15,6 @@ #include "pm3_cmd.h" // struct -extern uint8_t decimation; -extern uint8_t bits_per_sample ; -extern bool averaging; - void AcquireRawAdcSamples125k(int divisor); void ModThenAcquireRawAdcSamples125k(uint32_t delay_off, uint32_t period_0, uint32_t period_1, uint8_t *command); void ReadTItag(void); diff --git a/armsrc/lfsampling.c b/armsrc/lfsampling.c index cddf9cbbc..feaa45b3d 100644 --- a/armsrc/lfsampling.c +++ b/armsrc/lfsampling.c @@ -27,7 +27,7 @@ Default LF config is set to: samples_to_skip = 0 verbose = YES */ -sample_config config = { 1, 8, 1, LF_DIVISOR_125, 0, 0, 1} ; +static sample_config config = { 1, 8, 1, LF_DIVISOR_125, 0, 0, 1} ; void printConfig(void) { uint32_t d = config.divisor; diff --git a/armsrc/mifaredesfire.c b/armsrc/mifaredesfire.c index 57235ba22..e96d6b3d9 100644 --- a/armsrc/mifaredesfire.c +++ b/armsrc/mifaredesfire.c @@ -25,7 +25,7 @@ #define RECEIVE_SIZE 64 // the block number for the ISO14443-4 PCB -uint8_t pcb_blocknum = 0; +static uint8_t pcb_blocknum = 0; // Deselect card by sending a s-block. the crc is precalced for speed static uint8_t deselect_cmd[] = {0xc2, 0xe0, 0xb4}; diff --git a/armsrc/printf.c b/armsrc/printf.c index 0dffbb037..2d18a9c53 100644 --- a/armsrc/printf.c +++ b/armsrc/printf.c @@ -47,7 +47,7 @@ typedef int ssize_t; #define NBBY 8 /* number of bits in a byte */ -char const hex2ascii_data[] = "0123456789abcdefghijklmnopqrstuvwxyz"; +static char const hex2ascii_data[] = "0123456789abcdefghijklmnopqrstuvwxyz"; #define hex2ascii(hex) (hex2ascii_data[hex]) #define toupper(c) ((c) - 0x20 * (((c) >= 'a') && ((c) <= 'z'))) diff --git a/armsrc/usart.c b/armsrc/usart.c index 2062c9441..203572f90 100644 --- a/armsrc/usart.c +++ b/armsrc/usart.c @@ -15,8 +15,8 @@ volatile AT91PS_USART pUS1 = AT91C_BASE_US1; volatile AT91PS_PIO pPIO = AT91C_BASE_PIOA; volatile AT91PS_PDC pPDC = AT91C_BASE_PDC_US1; -uint32_t usart_baudrate = 0; -uint8_t usart_parity = 0; +uint32_t g_usart_baudrate = 0; +uint8_t g_usart_parity = 0; /* void usart_close(void) { // Reset the USART mode @@ -41,8 +41,8 @@ void usart_close(void) { static uint8_t us_inbuf1[USART_BUFFLEN]; static uint8_t us_inbuf2[USART_BUFFLEN]; -uint8_t *usart_cur_inbuf = NULL; -uint16_t usart_cur_inbuf_off = 0; +static uint8_t *usart_cur_inbuf = NULL; +static uint16_t usart_cur_inbuf_off = 0; static uint8_t us_rxfifo[USART_FIFOLEN]; static size_t us_rxfifo_low = 0; static size_t us_rxfifo_high = 0; @@ -166,9 +166,9 @@ inline int usart_writebuffer_sync(uint8_t *data, size_t len) { void usart_init(uint32_t baudrate, uint8_t parity) { if (baudrate != 0) - usart_baudrate = baudrate; + g_usart_baudrate = baudrate; if ((parity == 'N') || (parity == 'O') || (parity == 'E')) - usart_parity = parity; + g_usart_parity = parity; // For a nice detailed sample, interrupt driven but still relevant. // See https://www.sparkfun.com/datasheets/DevTools/SAM7/at91sam7%20serial%20communications.pdf @@ -197,7 +197,7 @@ void usart_init(uint32_t baudrate, uint8_t parity) { AT91C_US_NBSTOP_1_BIT | // 1 stop bit AT91C_US_CHMODE_NORMAL; // channel mode: normal - switch (usart_parity) { + switch (g_usart_parity) { case 'N': mode |= AT91C_US_PAR_NONE; // parity: none break; @@ -227,9 +227,9 @@ void usart_init(uint32_t baudrate, uint8_t parity) { // OVER = 1, -yes we are oversampling // baudrate == selected clock/8/CD --> this is ours // - uint32_t brgr = MCK / (usart_baudrate << 3); - // doing fp = round((mck / (usart_baudrate << 3) - brgr) * 8) with integers: - uint32_t fp = ((16 * MCK / (usart_baudrate << 3) - 16 * brgr) + 1) / 2; + uint32_t brgr = MCK / (g_usart_baudrate << 3); + // doing fp = round((mck / (g_usart_baudrate << 3) - brgr) * 8) with integers: + uint32_t fp = ((16 * MCK / (g_usart_baudrate << 3) - 16 * brgr) + 1) / 2; pUS1->US_BRGR = (fp << 16) | brgr; diff --git a/armsrc/usart.h b/armsrc/usart.h index 01ca0d809..5a7dea38f 100644 --- a/armsrc/usart.h +++ b/armsrc/usart.h @@ -9,8 +9,8 @@ // Higher baudrates are pointless, only increasing overflow risk -extern uint32_t usart_baudrate; -extern uint8_t usart_parity; +extern uint32_t g_usart_baudrate; +extern uint8_t g_usart_parity; void usart_init(uint32_t baudrate, uint8_t parity); int usart_writebuffer_sync(uint8_t *data, size_t len); From 47634f555037a80266d5634bef7fc59e6501537b Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 19 May 2020 17:15:07 +0200 Subject: [PATCH 051/527] change: remove inline directive in armsrc, since we are optimizing for size --- armsrc/desfire_crypto.c | 4 ++-- armsrc/legicrf.c | 13 ++----------- armsrc/legicrfsim.c | 10 +--------- armsrc/nprintf.c | 12 ++++++------ 4 files changed, 11 insertions(+), 28 deletions(-) diff --git a/armsrc/desfire_crypto.c b/armsrc/desfire_crypto.c index db543bbe6..cafa98de1 100644 --- a/armsrc/desfire_crypto.c +++ b/armsrc/desfire_crypto.c @@ -46,9 +46,9 @@ static mbedtls_des_context ctx; static mbedtls_des3_context ctx3; static mbedtls_aes_context actx; -static inline void update_key_schedules(desfirekey_t key); +static void update_key_schedules(desfirekey_t key); -static inline void update_key_schedules(desfirekey_t key) { +static void update_key_schedules(desfirekey_t key) { // DES_set_key ((DES_cblock *)key->data, &(key->ks1)); // DES_set_key ((DES_cblock *)(key->data + 8), &(key->ks2)); // if (T_3K3DES == key->type) { diff --git a/armsrc/legicrf.c b/armsrc/legicrf.c index 14298a5f1..21b0c0a42 100644 --- a/armsrc/legicrf.c +++ b/armsrc/legicrf.c @@ -64,8 +64,7 @@ static uint32_t last_frame_end; /* ts of last bit of previews rx or tx frame */ //----------------------------------------------------------------------------- // I/O interface abstraction (FPGA -> ARM) //----------------------------------------------------------------------------- - -static inline uint8_t rx_byte_from_fpga(void) { +static uint8_t rx_byte_from_fpga(void) { for (;;) { WDT_HIT(); @@ -93,11 +92,7 @@ static inline uint8_t rx_byte_from_fpga(void) { // Note: The SSC receiver is never synchronized the calculation may be performed // on a i/q pair from two subsequent correlations, but does not matter. // Note: inlining this function would fail with -Os -#ifdef __OPTIMIZE_SIZE__ static int32_t sample_power(void) { -#else -static inline int32_t sample_power(void) { -#endif int32_t q = (int8_t)rx_byte_from_fpga(); q = ABS(q); int32_t i = (int8_t)rx_byte_from_fpga(); @@ -115,11 +110,7 @@ static inline int32_t sample_power(void) { // has a delay loop that aligns rx_bit calls to the TAG tx timeslots. // Note: inlining this function would fail with -Os -#ifdef __OPTIMIZE_SIZE__ static bool rx_bit(void) { -#else -static inline bool rx_bit(void) { -#endif int32_t power; for (size_t i = 0; i < 5; ++i) { @@ -138,7 +129,7 @@ static inline bool rx_bit(void) { // be circumvented, but the adventage over bitbang would be little. //----------------------------------------------------------------------------- -static inline void tx_bit(bool bit) { +static void tx_bit(bool bit) { // insert pause LOW(GPIO_SSC_DOUT); last_frame_end += RWD_TIME_PAUSE; diff --git a/armsrc/legicrfsim.c b/armsrc/legicrfsim.c index e2b06ba9b..35eefc56c 100644 --- a/armsrc/legicrfsim.c +++ b/armsrc/legicrfsim.c @@ -66,11 +66,7 @@ static uint32_t last_frame_end; /* ts of last bit of previews rx or tx frame */ // Returns true if a pulse/pause is received within timeout // Note: inlining this function would fail with -Os -#ifdef __OPTIMIZE_SIZE__ static bool wait_for(bool value, const uint32_t timeout) { -#else -static inline bool wait_for(bool value, const uint32_t timeout) { -#endif while ((bool)(AT91C_BASE_PIOA->PIO_PDSR & GPIO_SSC_DIN) != value) { if (GetCountSspClk() > timeout) { return false; @@ -88,7 +84,7 @@ static inline bool wait_for(bool value, const uint32_t timeout) { // - A bit length >80.2us is a 1 // - A bit length <80.2us is a 0 // - A bit length >148.6us is a code violation -static inline int8_t rx_bit(void) { +static int8_t rx_bit(void) { // backup ts for threshold calculation uint32_t bit_start = last_frame_end; @@ -132,11 +128,7 @@ static inline int8_t rx_bit(void) { // not mandatory but results in a cleaner signal. tx_frame will disable // the subcarrier when the frame is done. // Note: inlining this function would fail with -Os -#ifdef __OPTIMIZE_SIZE__ static void tx_bit(bool bit) { -#else -static inline void tx_bit(bool bit) { -#endif LED_C_ON(); if (bit) { diff --git a/armsrc/nprintf.c b/armsrc/nprintf.c index 645454b4e..1ce3842d3 100644 --- a/armsrc/nprintf.c +++ b/armsrc/nprintf.c @@ -127,7 +127,7 @@ typedef struct { // internal buffer output -static inline void _out_buffer(char character, void *buffer, size_t idx, size_t maxlen) { +static void _out_buffer(char character, void *buffer, size_t idx, size_t maxlen) { if (idx < maxlen) { ((char *)buffer)[idx] = character; } @@ -135,7 +135,7 @@ static inline void _out_buffer(char character, void *buffer, size_t idx, size_t // internal null output -static inline void _out_null(char character, void *buffer, size_t idx, size_t maxlen) { +static void _out_null(char character, void *buffer, size_t idx, size_t maxlen) { (void)character; (void)buffer; (void)idx; @@ -144,7 +144,7 @@ static inline void _out_null(char character, void *buffer, size_t idx, size_t ma // internal _putchar wrapper -static inline void _out_char(char character, void *buffer, size_t idx, size_t maxlen) { +static void _out_char(char character, void *buffer, size_t idx, size_t maxlen) { (void)buffer; (void)idx; (void)maxlen; @@ -155,7 +155,7 @@ static inline void _out_char(char character, void *buffer, size_t idx, size_t ma // internal output function wrapper -static inline void _out_fct(char character, void *buffer, size_t idx, size_t maxlen) { +static void _out_fct(char character, void *buffer, size_t idx, size_t maxlen) { (void)idx; (void)maxlen; if (character) { @@ -167,7 +167,7 @@ static inline void _out_fct(char character, void *buffer, size_t idx, size_t max // internal secure strlen // \return The length of the string (excluding the terminating 0) limited by 'maxsize' -static inline unsigned int _strnlen_s(const char *str, size_t maxsize) { +static unsigned int _strnlen_s(const char *str, size_t maxsize) { const char *s; for (s = str; *s && maxsize--; ++s); return (unsigned int)(s - str); @@ -176,7 +176,7 @@ static inline unsigned int _strnlen_s(const char *str, size_t maxsize) { // internal test if char is a digit (0-9) // \return true if char is a digit -static inline bool _is_digit(char ch) { +static bool _is_digit(char ch) { return (ch >= '0') && (ch <= '9'); } From 4d355192bf5a51829a651104e757f2954d2c12e5 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 19 May 2020 17:16:23 +0200 Subject: [PATCH 052/527] remove inline --- armsrc/Standalone/hf_colin.c | 5 ----- 1 file changed, 5 deletions(-) diff --git a/armsrc/Standalone/hf_colin.c b/armsrc/Standalone/hf_colin.c index 9752c66c3..d2075f38f 100644 --- a/armsrc/Standalone/hf_colin.c +++ b/armsrc/Standalone/hf_colin.c @@ -104,12 +104,7 @@ static const uint8_t is_hex[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0 }; -// Note: inlining this function would fail with -Os -#ifdef __OPTIMIZE_SIZE__ static uint64_t hex2i(const char *s) { -#else -static inline uint64_t hex2i(const char *s) { -#endif uint64_t val = 0; if (s == NULL || s[0] == 0) return 0; From 9c1cac905b02f2adcd0e3a5591dda2c9bddf2b3b Mon Sep 17 00:00:00 2001 From: FlUxIUS Date: Tue, 19 May 2020 17:23:46 +0200 Subject: [PATCH 053/527] Somes traces --- traces/hf_14a_reader.trace | Bin 0 -> 77 bytes traces/hf_14b_reader.trace | Bin 0 -> 38 bytes traces/hf_mdes_reader.trace | Bin 0 -> 105 bytes 3 files changed, 0 insertions(+), 0 deletions(-) create mode 100644 traces/hf_14a_reader.trace create mode 100644 traces/hf_14b_reader.trace create mode 100644 traces/hf_mdes_reader.trace diff --git a/traces/hf_14a_reader.trace b/traces/hf_14a_reader.trace new file mode 100644 index 0000000000000000000000000000000000000000..6bf0ab7b6f37ebe555216a7c1dc43110a927f988 GIT binary patch literal 77 zcmWHPW?*>0%*YVL(5lS9;K0e$z{22g(Tss%0Vfl~WQB%S7X}6fan^P=2!{Xw literal 0 HcmV?d00001 diff --git a/traces/hf_mdes_reader.trace b/traces/hf_mdes_reader.trace new file mode 100644 index 0000000000000000000000000000000000000000..2410bedefa59046dfa959c8259462f35818871d3 GIT binary patch literal 105 zcmWHPW?*>0%*YVL(5lS9(7?gez{1RM(Tss%0Vfl~WQB%S7X}6fG1i8Kixw|oQMj1O zz@VVX$uPM9%#T0Y$-p|9f#CoTbA!U40*8ys85kA_u`oPnFf3+h-N(RiK#Hw_C8B{z H_#6WOgGU`` literal 0 HcmV?d00001 From b55681077633076e1453ca26758dbec58f0bdbb8 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Tue, 19 May 2020 17:25:50 +0200 Subject: [PATCH 054/527] armsrc: clarify static vars vs global vars, part 2 --- armsrc/Standalone/hf_colin.c | 16 ++++++++-------- armsrc/Standalone/hf_mattyrun.c | 18 +++++++++--------- armsrc/Standalone/hf_msdsal.c | 2 +- armsrc/Standalone/lf_em4100emul.c | 8 +++----- armsrc/Standalone/lf_em4100rswb.c | 12 ++++++------ armsrc/Standalone/lf_em4100rwc.c | 8 ++++---- armsrc/appmain.c | 4 +++- armsrc/iso14443a.c | 2 +- armsrc/lfadc.c | 4 ++-- armsrc/lfops.c | 8 ++++---- armsrc/mifarecmd.c | 6 +++--- armsrc/thinfilm.c | 2 +- 12 files changed, 45 insertions(+), 45 deletions(-) diff --git a/armsrc/Standalone/hf_colin.c b/armsrc/Standalone/hf_colin.c index d2075f38f..0656d1186 100644 --- a/armsrc/Standalone/hf_colin.c +++ b/armsrc/Standalone/hf_colin.c @@ -81,12 +81,12 @@ */ -uint8_t cjuid[10]; -uint32_t cjcuid; -iso14a_card_select_t p_card; -int currline; -int currfline; -int curlline; +static uint8_t cjuid[10]; +static uint32_t cjcuid; +static iso14a_card_select_t p_card; +static int currline; +static int currfline; +static int curlline; // TODO : Implement fast read of KEYS like in RFIdea // also http://ext.delaat.net/rp/2015-2016/p04/report.pdf @@ -162,7 +162,7 @@ static void scan_keys(const char *str, int len, uint64_t *user_data) { } } -MFC1KSchema Schemas[MAX_SCHEMAS]; +static MFC1KSchema Schemas[MAX_SCHEMAS]; /*MFC1KSchema Noralsy = { .name = "Noralsy", @@ -196,7 +196,7 @@ MFC1KSchema InfiHexact = {.name = "Infineon/Hexact", 0x8829da9daf76, 0x8829da9daf76, 0x8829da9daf76, 0x8829da9daf76}}; */ -int total_schemas = 0; +static int total_schemas = 0; static void add_schema(MFC1KSchema *p, MFC1KSchema a, int *schemas_counter) { if (*schemas_counter < MAX_SCHEMAS) { diff --git a/armsrc/Standalone/hf_mattyrun.c b/armsrc/Standalone/hf_mattyrun.c index ae81eb408..1ffa321a3 100644 --- a/armsrc/Standalone/hf_mattyrun.c +++ b/armsrc/Standalone/hf_mattyrun.c @@ -49,19 +49,19 @@ on a blank card. #include "mifaresim.h" // mifare1ksim #include "mifareutil.h" -uint8_t uid[10]; -uint32_t cuid; -iso14a_card_select_t p_card; +static uint8_t uid[10]; +static uint32_t cuid; +static iso14a_card_select_t p_card; /* Pseudo-configuration block. */ -bool printKeys = false; // Prints keys -bool transferToEml = true; // Transfer keys to emulator memory -bool ecfill = true; // Fill emulator memory with cards content. -bool simulation = true; // Simulates an exact copy of the target tag -bool fillFromEmulator = false; // Dump emulator memory. -uint8_t stKeyBlock = 20; // Set the quantity of keys in the block. +static bool printKeys = false; // Prints keys +static bool transferToEml = true; // Transfer keys to emulator memory +static bool ecfill = true; // Fill emulator memory with cards content. +static bool simulation = true; // Simulates an exact copy of the target tag +static bool fillFromEmulator = false; // Dump emulator memory. +static uint8_t stKeyBlock = 20; // Set the quantity of keys in the block. //----------------------------------------------------------------------------- // Matt's StandAlone mod. diff --git a/armsrc/Standalone/hf_msdsal.c b/armsrc/Standalone/hf_msdsal.c index e890818d2..e9f700a01 100644 --- a/armsrc/Standalone/hf_msdsal.c +++ b/armsrc/Standalone/hf_msdsal.c @@ -52,7 +52,7 @@ void ModInfo(void) { * technologies. Be brave enough to share your knowledge & inspire others. Salvador Mendoza. */ -uint8_t ppdol [255] = {0x80, 0xA8, 0x00, 0x00, 0x02, 0x83, 0x00}; // Default GET PROCESSING +static uint8_t ppdol [255] = {0x80, 0xA8, 0x00, 0x00, 0x02, 0x83, 0x00}; // Default GET PROCESSING static uint8_t treatPDOL(uint8_t *apdu) { //Generate GET PROCESSING uint8_t plen = 7; diff --git a/armsrc/Standalone/lf_em4100emul.c b/armsrc/Standalone/lf_em4100emul.c index 6ad2580a4..e6ac2f6ff 100644 --- a/armsrc/Standalone/lf_em4100emul.c +++ b/armsrc/Standalone/lf_em4100emul.c @@ -25,11 +25,9 @@ // low & high - array for storage IDs. Its length must be equal. // Predefined IDs must be stored in low[]. -// In high[] must be nulls -uint64_t low[] = {0x565A1140BE, 0x365A398149, 0x5555555555, 0xFFFFFFFFFF}; -uint32_t high[] = {0, 0, 0, 0}; -uint8_t *bba, slots_count; -int buflen; +static uint64_t low[] = {0x565A1140BE, 0x365A398149, 0x5555555555, 0xFFFFFFFFFF}; +static uint8_t *bba, slots_count; +static int buflen; void ModInfo(void) { DbpString(" LF EM4100 simulator standalone mode"); diff --git a/armsrc/Standalone/lf_em4100rswb.c b/armsrc/Standalone/lf_em4100rswb.c index dd9fafd6a..ac470ce29 100644 --- a/armsrc/Standalone/lf_em4100rswb.c +++ b/armsrc/Standalone/lf_em4100rswb.c @@ -68,16 +68,16 @@ // Predefined bruteforce speed // avg: 1s, 1.2s, 1.5s, 2s -int bruteforceSpeedCurrent = 1; -int bruteforceSpeed[] = {10, 12, 14, 16}; +static int bruteforceSpeedCurrent = 1; +static int bruteforceSpeed[] = {10, 12, 14, 16}; // low & high - array for storage IDs. Its length must be equal. // Predefined IDs must be stored in low[]. // In high[] must be nulls -uint64_t low[] = {0, 0, 0, 0}; -uint32_t high[] = {0, 0, 0, 0}; -uint8_t *bba; -int buflen; +static uint64_t low[] = {0, 0, 0, 0}; +static uint32_t high[] = {0, 0, 0, 0}; +static uint8_t *bba; +static int buflen; void ModInfo(void) { DbpString(" LF EM4100 read/sim/write/brute mode"); diff --git a/armsrc/Standalone/lf_em4100rwc.c b/armsrc/Standalone/lf_em4100rwc.c index ce96dd824..f69820513 100644 --- a/armsrc/Standalone/lf_em4100rwc.c +++ b/armsrc/Standalone/lf_em4100rwc.c @@ -39,10 +39,10 @@ // low & high - array for storage IDs. Its length must be equal. // Predefined IDs must be stored in low[]. // In high[] must be nulls -uint64_t low[] = {0x565AF781C7, 0x540053E4E2, 0x1234567890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -uint32_t high[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; -uint8_t *bba, slots_count; -int buflen; +static uint64_t low[] = {0x565AF781C7, 0x540053E4E2, 0x1234567890, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +static uint32_t high[] = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0}; +static uint8_t *bba, slots_count; +static int buflen; void ModInfo(void) { DbpString(" LF EM4100 read/write/clone mode"); diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 87b3dd0df..fa9aaf0f6 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -70,9 +70,11 @@ #define TOSEND_BUFFER_SIZE (9*MAX_FRAME_SIZE + 1 + 1 + 2) // 8 data bits and 1 parity bit per payload byte, 1 correction bit, 1 SOC bit, 2 EOC bits uint8_t ToSend[TOSEND_BUFFER_SIZE]; int ToSendMax = -1; + + static int ToSendBit; struct common_area common_area __attribute__((section(".commonarea"))); -int button_status = BUTTON_NO_CLICK; +static int button_status = BUTTON_NO_CLICK; static bool allow_send_wtx = false; inline void send_wtx(uint16_t wtx) { diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 499932f0a..c39576c27 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -67,7 +67,7 @@ static uint8_t iso14_pcb_blocknum = 0; #define DELAY_ARM2AIR_AS_READER (4*16 + 8*16 + 8 + 8 + 1) // The FPGA will report its internal sending delay in -uint16_t FpgaSendQueueDelay; +static uint16_t FpgaSendQueueDelay; // the 5 first bits are the number of bits buffered in mod_sig_buf // the last three bits are the remaining ticks/2 after the mod_sig_buf shift #define DELAY_FPGA_QUEUE (FpgaSendQueueDelay<<1) diff --git a/armsrc/lfadc.c b/armsrc/lfadc.c index 078745dd8..cec945b20 100644 --- a/armsrc/lfadc.c +++ b/armsrc/lfadc.c @@ -51,8 +51,8 @@ bool lf_test_periods(size_t expected, size_t count) { ////////////////////////////////////////////////////////////////////////////// // Low frequency (LF) adc passthrough functionality ////////////////////////////////////////////////////////////////////////////// -uint8_t previous_adc_val = 0; -uint8_t adc_avg = 0; +static uint8_t previous_adc_val = 0; +static uint8_t adc_avg = 0; void lf_sample_mean(void) { uint8_t periods = 0; diff --git a/armsrc/lfops.c b/armsrc/lfops.c index 7eececdc9..9ef3a34a8 100644 --- a/armsrc/lfops.c +++ b/armsrc/lfops.c @@ -2289,10 +2289,10 @@ void WriteEM410x(uint32_t card, uint32_t id_hi, uint32_t id_lo) { #define FWD_CMD_READ 0x9 #define FWD_CMD_DISABLE 0x5 -uint8_t forwardLink_data[64]; //array of forwarded bits -uint8_t *forward_ptr; //ptr for forward message preparation -uint8_t fwd_bit_sz; //forwardlink bit counter -uint8_t *fwd_write_ptr; //forwardlink bit pointer +static uint8_t forwardLink_data[64]; //array of forwarded bits +static uint8_t *forward_ptr; //ptr for forward message preparation +static uint8_t fwd_bit_sz; //forwardlink bit counter +static uint8_t *fwd_write_ptr; //forwardlink bit pointer //==================================================================== // prepares command bits diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index 79efc8b9f..b98526726 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -2008,9 +2008,9 @@ out: // bit 6 - wipe tag. //----------------------------------------------------------------------------- // magic uid card generation 1 commands -uint8_t wupC1[] = { MIFARE_MAGICWUPC1 }; -uint8_t wupC2[] = { MIFARE_MAGICWUPC2 }; -uint8_t wipeC[] = { MIFARE_MAGICWIPEC }; +static uint8_t wupC1[] = { MIFARE_MAGICWUPC1 }; +static uint8_t wupC2[] = { MIFARE_MAGICWUPC2 }; +static uint8_t wipeC[] = { MIFARE_MAGICWIPEC }; void MifareCSetBlock(uint32_t arg0, uint32_t arg1, uint8_t *datain) { diff --git a/armsrc/thinfilm.c b/armsrc/thinfilm.c index d84c2711a..a77a70744 100644 --- a/armsrc/thinfilm.c +++ b/armsrc/thinfilm.c @@ -49,7 +49,7 @@ void ReadThinFilm(void) { #define SEC_D 0xf0 #define SEC_E 0x0f #define SEC_F 0x00 -uint16_t FpgaSendQueueDelay; +static uint16_t FpgaSendQueueDelay; static uint16_t ReadReaderField(void) { #if defined RDV4 From cb8d589fc4b5ec1a06a9a0d37a5ef029f779ee30 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Tue, 19 May 2020 17:43:13 +0200 Subject: [PATCH 055/527] armsrc: clarify static vars vs global vars, part 3 --- armsrc/Makefile | 2 +- armsrc/appmain.c | 6 +++--- armsrc/flashmem.c | 4 ++-- armsrc/flashmem.h | 2 -- armsrc/fpgaloader.c | 4 ++-- armsrc/i2c.c | 2 +- armsrc/iso14443a.c | 6 +++--- armsrc/lfsampling.c | 4 ++-- armsrc/mifaredesfire.c | 2 +- client/src/cmdflashmem.c | 2 -- common/legic_prng.c | 2 +- common/parity.c | 4 ++-- common_arm/usb_cdc.c | 6 +++--- common_fpga/fpga.h | 4 ++-- include/pmflash.h | 3 --- tools/fpga_compress/fpga_compress.c | 4 ++-- 16 files changed, 25 insertions(+), 32 deletions(-) diff --git a/armsrc/Makefile b/armsrc/Makefile index 16c6a7f9e..15cfaddfd 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -157,7 +157,7 @@ version.c: default_version.c $(OBJDIR)/fpga_version_info.o $(OBJDIR)/fpga_all.o $(info [-] GEN $@) $(Q)sh ../tools/mkversion.sh > $@ || perl ../tools/mkversion.pl > $@ || $(CP) $^ $@ -fpga_version_info.c: $(FPGA_BITSTREAMS) | $(FPGA_COMPRESSOR) +fpga_version_info.c: $(FPGA_BITSTREAMS) $(FPGA_COMPRESSOR) $(info [-] GEN $@) $(Q)$(FPGA_COMPRESSOR) -v $(filter %.bit,$^) $@ diff --git a/armsrc/appmain.c b/armsrc/appmain.c index fa9aaf0f6..40f8c0ad1 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -278,9 +278,9 @@ static void SendVersion(void) { strncat(VersionString, "\n [ FPGA ]\n ", sizeof(VersionString) - strlen(VersionString) - 1); - for (int i = 0; i < fpga_bitstream_num; i++) { - strncat(VersionString, fpga_version_information[i], sizeof(VersionString) - strlen(VersionString) - 1); - if (i < fpga_bitstream_num - 1) { + for (int i = 0; i < g_fpga_bitstream_num; i++) { + strncat(VersionString, g_fpga_version_information[i], sizeof(VersionString) - strlen(VersionString) - 1); + if (i < g_fpga_bitstream_num - 1) { strncat(VersionString, "\n ", sizeof(VersionString) - strlen(VersionString) - 1); } } diff --git a/armsrc/flashmem.c b/armsrc/flashmem.c index 80f20e105..66b4813e4 100644 --- a/armsrc/flashmem.c +++ b/armsrc/flashmem.c @@ -16,8 +16,8 @@ /// Calculates the value of the CSR DLYBCT field given the desired delay (in ns) #define SPI_DLYBCT(delay, masterClock) ((uint32_t) ((((masterClock) / 1000000) * (delay)) / 32000) << 24) - -uint32_t FLASHMEM_SPIBAUDRATE = FLASH_BAUD; +static uint32_t FLASHMEM_SPIBAUDRATE = FLASH_BAUD; +#define FASTFLASH (FLASHMEM_SPIBAUDRATE > FLASH_MINFAST) void FlashmemSetSpiBaudrate(uint32_t baudrate) { FLASHMEM_SPIBAUDRATE = baudrate; diff --git a/armsrc/flashmem.h b/armsrc/flashmem.h index e5a4e0459..54a101ea6 100644 --- a/armsrc/flashmem.h +++ b/armsrc/flashmem.h @@ -106,8 +106,6 @@ #define FLASH_FASTBAUD MCK #define FLASH_MINBAUD FLASH_FASTBAUD -#define FASTFLASH (FLASHMEM_SPIBAUDRATE > FLASH_MINFAST) - //~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~// void FlashmemSetSpiBaudrate(uint32_t baudrate); diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index a5ca3f6d1..196364d98 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -203,7 +203,7 @@ static int get_from_fpga_combined_stream(z_streamp compressed_fpga_stream, uint8 // 288 bytes from FPGA file 1, followed by 288 bytes from FGPA file 2, etc. //---------------------------------------------------------------------------- static int get_from_fpga_stream(int bitstream_version, z_streamp compressed_fpga_stream, uint8_t *output_buffer) { - while ((uncompressed_bytes_cnt / FPGA_INTERLEAVE_SIZE) % fpga_bitstream_num != (bitstream_version - 1)) { + while ((uncompressed_bytes_cnt / FPGA_INTERLEAVE_SIZE) % g_fpga_bitstream_num != (bitstream_version - 1)) { // skip undesired data belonging to other bitstream_versions get_from_fpga_combined_stream(compressed_fpga_stream, output_buffer); } @@ -509,7 +509,7 @@ void SetAdcMuxFor(uint32_t whichGpio) { void Fpga_print_status(void) { DbpString(_BLUE_("Currently loaded FPGA image")); - Dbprintf(" mode....................%s", fpga_version_information[downloaded_bitstream - 1]); + Dbprintf(" mode....................%s", g_fpga_version_information[downloaded_bitstream - 1]); } int FpgaGetCurrent(void) { diff --git a/armsrc/i2c.c b/armsrc/i2c.c index 4a3d0dc08..e3e84690e 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -32,7 +32,7 @@ #define I2C_ERROR "I2C_WaitAck Error" -volatile unsigned long c; +static volatile unsigned long c; // Direct use the loop to delay. 6 instructions loop, Masterclock 48MHz, // delay=1 is about 200kbps diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index c39576c27..a657dff35 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -184,7 +184,7 @@ static tUart14a Uart; // 0011 - a 2 tick wide pause, or a three tick wide pause shifted left // 0111 - a 2 tick wide pause shifted left // 1001 - a 2 tick wide pause shifted right -const bool Mod_Miller_LUT[] = { +static const bool Mod_Miller_LUT[] = { false, true, false, true, false, false, false, true, false, true, false, false, false, false, false, false }; @@ -351,11 +351,11 @@ RAMFUNC bool MillerDecoding(uint8_t bit, uint32_t non_real_time) { // 8 ticks modulated: A collision. Save the collision position and treat as Sequence D // Note 1: the bitstream may start at any time. We therefore need to sync. // Note 2: parameter offset is used to determine the position of the parity bits (required for the anticollision command only) -tDemod14a Demod; +static tDemod14a Demod; // Lookup-Table to decide if 4 raw bits are a modulation. // We accept three or four "1" in any position -const bool Mod_Manchester_LUT[] = { +static const bool Mod_Manchester_LUT[] = { false, false, false, false, false, false, false, true, false, false, false, true, false, true, true, true }; diff --git a/armsrc/lfsampling.c b/armsrc/lfsampling.c index feaa45b3d..6365a0967 100644 --- a/armsrc/lfsampling.c +++ b/armsrc/lfsampling.c @@ -100,10 +100,10 @@ static void pushBit(BitstreamOut *stream, uint8_t bit) { } // Holds bit packed struct of samples. -BitstreamOut data = {0, 0, 0}; +static BitstreamOut data = {0, 0, 0}; // internal struct to keep track of samples gathered -sampling_t samples = {0, 0, 0, 0}; +static sampling_t samples = {0, 0, 0, 0}; void initSampleBuffer(uint32_t *sample_size) { initSampleBufferEx(sample_size, false); diff --git a/armsrc/mifaredesfire.c b/armsrc/mifaredesfire.c index e96d6b3d9..d578d026b 100644 --- a/armsrc/mifaredesfire.c +++ b/armsrc/mifaredesfire.c @@ -33,7 +33,7 @@ static uint8_t deselect_cmd[] = {0xc2, 0xe0, 0xb4}; /* PCB CID CMD PAYLOAD */ //static uint8_t __res[MAX_FRAME_SIZE]; -struct desfire_key skey = {0}; +static struct desfire_key skey = {0}; static desfirekey_t sessionkey = &skey; bool InitDesfireCard(void) { diff --git a/client/src/cmdflashmem.c b/client/src/cmdflashmem.c index 8d19c3888..debe77089 100644 --- a/client/src/cmdflashmem.c +++ b/client/src/cmdflashmem.c @@ -27,8 +27,6 @@ #define FLASH_FASTBAUD MCK #define FLASH_MINBAUD FLASH_FASTBAUD -#define FASTFLASH (FLASHMEM_SPIBAUDRATE > FLASH_MINFAST) - static int CmdHelp(const char *Cmd); static int usage_flashmem_spibaud(void) { diff --git a/common/legic_prng.c b/common/legic_prng.c index 1447d3b1b..ad16d28b7 100644 --- a/common/legic_prng.c +++ b/common/legic_prng.c @@ -12,7 +12,7 @@ // b is 8bit lsfr // c keeps track on which step the prng is. // legic_prng_get_bit() = gets a bit muxed from a and b. -struct lfsr { +static struct lfsr { uint8_t a; uint8_t b; uint32_t c; diff --git a/common/parity.c b/common/parity.c index ce61ad40a..64e034a6d 100644 --- a/common/parity.c +++ b/common/parity.c @@ -25,7 +25,7 @@ const uint8_t OddByteParity[256] = { 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1 }; - +/* const uint8_t EvenByteParity[256] = { 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, @@ -44,4 +44,4 @@ const uint8_t EvenByteParity[256] = { 1, 0, 0, 1, 0, 1, 1, 0, 0, 1, 1, 0, 1, 0, 0, 1, 0, 1, 1, 0, 1, 0, 0, 1, 1, 0, 0, 1, 0, 1, 1, 0 }; - +*/ diff --git a/common_arm/usb_cdc.c b/common_arm/usb_cdc.c index c06542252..34400f4d5 100644 --- a/common_arm/usb_cdc.c +++ b/common_arm/usb_cdc.c @@ -130,9 +130,9 @@ AT91SAM7S256 USB Device Port #define SET_CONTROL_LINE_STATE 0x2221 AT91PS_UDP pUdp = AT91C_BASE_UDP; -uint8_t btConfiguration = 0; -uint8_t btConnection = 0; -uint8_t btReceiveBank = AT91C_UDP_RX_DATA_BK0; +static uint8_t btConfiguration = 0; +static uint8_t btConnection = 0; +static uint8_t btReceiveBank = AT91C_UDP_RX_DATA_BK0; static const char devDescriptor[] = { /* Device descriptor */ diff --git a/common_fpga/fpga.h b/common_fpga/fpga.h index 31580d8c9..f1b42ab2b 100644 --- a/common_fpga/fpga.h +++ b/common_fpga/fpga.h @@ -17,7 +17,7 @@ #define FPGA_TRACE_SIZE 3072 static const uint8_t bitparse_fixed_header[] = {0x00, 0x09, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x01}; -extern const int fpga_bitstream_num; -extern const char *const fpga_version_information[]; +extern const int g_fpga_bitstream_num; +extern const char *const g_fpga_version_information[]; #endif diff --git a/include/pmflash.h b/include/pmflash.h index d61b5647d..4c970a628 100644 --- a/include/pmflash.h +++ b/include/pmflash.h @@ -14,9 +14,6 @@ #include "common.h" -// Flashmem spi baudrate -extern uint32_t FLASHMEM_SPIBAUDRATE; - // RDV40 Section // 256kb divided into 4k sectors. // diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index 0992c53ca..a99cc3fee 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -378,8 +378,8 @@ static void print_version_info_preamble(FILE *outfile, int num_infiles) { fprintf(outfile, "//-----------------------------------------------------------------------------\n"); fprintf(outfile, "\n"); fprintf(outfile, "\n"); - fprintf(outfile, "const int fpga_bitstream_num = %d;\n", num_infiles); - fprintf(outfile, "const char *const fpga_version_information[%d] = {\n", num_infiles); + fprintf(outfile, "const int g_fpga_bitstream_num = %d;\n", num_infiles); + fprintf(outfile, "const char *const g_fpga_version_information[%d] = {\n", num_infiles); } static int generate_fpga_version_info(FILE *infile[], char *infile_names[], int num_infiles, FILE *outfile) { From 37ae102e38853331fa69b2efe6dec546f1a90c00 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Tue, 19 May 2020 19:09:25 +0200 Subject: [PATCH 056/527] LogTrace error msg --- armsrc/BigBuf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/armsrc/BigBuf.c b/armsrc/BigBuf.c index 8ee7cc189..755c88d9c 100644 --- a/armsrc/BigBuf.c +++ b/armsrc/BigBuf.c @@ -157,6 +157,7 @@ bool RAMFUNC LogTrace(const uint8_t *btBytes, uint16_t iLen, uint32_t timestamp_ return false; } if (timestamp_end - timestamp_start > 0x7FFF) { + Dbprintf("Error in LogTrace: duration too long for UINT16: 0x%08x", timestamp_end - timestamp_start); return false; // duration too long, must be max 15 bits } hdr->timestamp = timestamp_start; From 8509d233d230c83efb39da2ba4d1daeab2e0d8b9 Mon Sep 17 00:00:00 2001 From: grspy Date: Tue, 19 May 2020 20:49:25 +0300 Subject: [PATCH 057/527] Fix 32-bit time_t compilation error on WIN64 --- client/src/cmdhw.c | 4 ++-- tools/mf_nonce_brute/mf_nonce_brute.c | 4 +++- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index cb48188a0..3b452b492 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -661,10 +661,10 @@ void pm3_version(bool verbose, bool oneliner) { # define PM3HOSTOS " OS:OpenBSD" #elif defined(__CYGWIN__) # define PM3HOSTOS " OS:Cygwin" -#elif defined(_WIN64) | defined(__WIN64__) +#elif defined(_WIN64) || defined(__WIN64__) // must be tested before _WIN32 # define PM3HOSTOS " OS:Windows (64b)" -#elif defined(_WIN32) | defined(__WIN32__) +#elif defined(_WIN32) || defined(__WIN32__) # define PM3HOSTOS " OS:Windows (32b)" #else # define PM3HOSTOS " OS:unknown" diff --git a/tools/mf_nonce_brute/mf_nonce_brute.c b/tools/mf_nonce_brute/mf_nonce_brute.c index 6bc69c3d9..3aaa5a9f3 100644 --- a/tools/mf_nonce_brute/mf_nonce_brute.c +++ b/tools/mf_nonce_brute/mf_nonce_brute.c @@ -1,5 +1,7 @@ #define __STDC_FORMAT_MACROS -#define _USE_32BIT_TIME_T 1 +#if !defined(_WIN64) +# define _USE_32BIT_TIME_T 1 +#endif #include #include #include From be42995f8a5bd893feea72bbae1ceec1e7e59f77 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Tue, 19 May 2020 20:03:27 +0200 Subject: [PATCH 058/527] Less fantasy in the LogTrace usages regarding timestamps --- armsrc/BigBuf.c | 20 ++++++++++++++++---- armsrc/hitag2.c | 2 +- armsrc/hitagS.c | 14 +++++++------- armsrc/iso14443b.c | 2 +- armsrc/iso15693.c | 12 ++++++------ 5 files changed, 31 insertions(+), 19 deletions(-) diff --git a/armsrc/BigBuf.c b/armsrc/BigBuf.c index 755c88d9c..07f32239f 100644 --- a/armsrc/BigBuf.c +++ b/armsrc/BigBuf.c @@ -156,12 +156,24 @@ bool RAMFUNC LogTrace(const uint8_t *btBytes, uint16_t iLen, uint32_t timestamp_ tracing = false; // don't trace any more return false; } - if (timestamp_end - timestamp_start > 0x7FFF) { - Dbprintf("Error in LogTrace: duration too long for UINT16: 0x%08x", timestamp_end - timestamp_start); - return false; // duration too long, must be max 15 bits + + uint32_t duration; + if (timestamp_end > timestamp_start) { + duration = timestamp_end - timestamp_start; + } else { + duration = (UINT32_MAX - timestamp_start) + timestamp_end; } + + if (duration > 0x7FFF) { + if (DBGLEVEL >= DBG_DEBUG) { + Dbprintf("Error in LogTrace: duration too long for 15 bits encoding: 0x%08x start:0x%08x end:0x%08x", duration, timestamp_start, timestamp_end); + Dbprintf("Forcing duration = 0"); + } + duration = 0; + } + hdr->timestamp = timestamp_start; - hdr->duration = timestamp_end - timestamp_start; + hdr->duration = duration; hdr->data_len = iLen; hdr->isResponse = !readerToTag; traceLen += TRACELOG_HDR_LEN; diff --git a/armsrc/hitag2.c b/armsrc/hitag2.c index c22b04e70..cf1aa46c1 100644 --- a/armsrc/hitag2.c +++ b/armsrc/hitag2.c @@ -1238,7 +1238,7 @@ void SimulateHitag2(bool tag_mem_supplied, uint8_t *data) { // Check if frame was captured if (rxlen > 4) { - LogTrace(rx, nbytes(rxlen), response, 0, NULL, true); + LogTrace(rx, nbytes(rxlen), response, response, NULL, true); // Process the incoming frame (rx) and prepare the outgoing frame (tx) hitag2_handle_reader_command(rx, rxlen, tx, &txlen); diff --git a/armsrc/hitagS.c b/armsrc/hitagS.c index 10c889fa7..7a49d65cd 100644 --- a/armsrc/hitagS.c +++ b/armsrc/hitagS.c @@ -1039,7 +1039,7 @@ void SimulateHitagSTag(bool tag_mem_supplied, uint8_t *data) { // Check if frame was captured if (rxlen > 0) { // frame_count++; - LogTrace(rx, nbytes(rxlen), response, 0, NULL, true); + LogTrace(rx, nbytes(rxlen), response, response, NULL, true); // Disable timer 1 with external trigger to avoid triggers during our own modulation AT91C_BASE_TC1->TC_CCR = AT91C_TC_CLKDIS; @@ -1281,7 +1281,7 @@ void ReadHitagS(hitag_function htf, hitag_data *htd) { // Check if frame was captured and store it if (rxlen > 0) { // frame_count++; - LogTrace(rx, nbytes(rxlen), response, 0, NULL, false); + LogTrace(rx, nbytes(rxlen), response, response, NULL, false); } // By default reset the transmission buffer @@ -1410,7 +1410,7 @@ void ReadHitagS(hitag_function htf, hitag_data *htd) { // Add transmitted frame to total count if (txlen > 0) { // frame_count++; - LogTrace(tx, nbytes(txlen), HITAG_T_WAIT_2, 0, NULL, true); + LogTrace(tx, nbytes(txlen), HITAG_T_WAIT_2, HITAG_T_WAIT_2, NULL, true); } hitagS_receive_frame(rx, &rxlen, &response); @@ -1538,7 +1538,7 @@ void WritePageHitagS(hitag_function htf, hitag_data *htd, int page) { // Check if frame was captured and store it if (rxlen > 0) { // frame_count++; - LogTrace(rx, nbytes(rxlen), response, 0, NULL, false); + LogTrace(rx, nbytes(rxlen), response, response, NULL, false); } //check for valid input @@ -1625,7 +1625,7 @@ void WritePageHitagS(hitag_function htf, hitag_data *htd, int page) { // Add transmitted frame to total count if (txlen > 0) { // frame_count++; - LogTrace(tx, nbytes(txlen), HITAG_T_WAIT_2, 0, NULL, true); + LogTrace(tx, nbytes(txlen), HITAG_T_WAIT_2, HITAG_T_WAIT_2, NULL, true); } hitagS_receive_frame(rx, &rxlen, &response); @@ -1732,7 +1732,7 @@ void check_challenges(bool file_given, uint8_t *data) { // Check if frame was captured and store it if (rxlen > 0) { // frame_count++; - LogTrace(rx, nbytes(rxlen), response, 0, NULL, false); + LogTrace(rx, nbytes(rxlen), response, response, NULL, false); } uint8_t *tx = txbuf; @@ -1864,7 +1864,7 @@ void check_challenges(bool file_given, uint8_t *data) { // Add transmitted frame to total count if (txlen > 0) { // frame_count++; - LogTrace(tx, nbytes(txlen), HITAG_T_WAIT_2, 0, NULL, true); + LogTrace(tx, nbytes(txlen), HITAG_T_WAIT_2, HITAG_T_WAIT_2, NULL, true); } hitagS_receive_frame(rx, &rxlen, &response); diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index b03e84912..bbca137fc 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -1152,7 +1152,7 @@ static void CodeAndTransmit14443bAsReader(const uint8_t *cmd, int len) { if (g_trigger) LED_A_ON(); - LogTrace(cmd, len, time_start, GetCountSspClk() - time_start, NULL, true); + LogTrace(cmd, len, time_start, GetCountSspClk(), NULL, true); } /* Sends an APDU to the tag diff --git a/armsrc/iso15693.c b/armsrc/iso15693.c index d3a0996e6..9dbdd4f94 100644 --- a/armsrc/iso15693.c +++ b/armsrc/iso15693.c @@ -431,7 +431,7 @@ static int GetIso15693AnswerFromTag(uint8_t *received, int *elapsed) { getNext = !getNext; } } - time_stop = GetCountSspClk() - time_0 ; + time_stop = GetCountSspClk(); int len = DemodAnswer(received, buf, counter); LogTrace(received, len, time_0 << 4, time_stop << 4, NULL, false); BigBuf_free(); @@ -478,7 +478,7 @@ static int GetIso15693AnswerFromSniff(uint8_t *received, int *samples, int *elap } } - time_stop = GetCountSspClk() - time_0; + time_stop = GetCountSspClk(); int k = DemodAnswer(received, buf, counter); LogTrace(received, k, time_0 << 4, time_stop << 4, NULL, false); return k; @@ -522,7 +522,7 @@ void AcquireRawAdcSamplesIso15693(void) { } - LogTrace(cmd, CMD_ID_RESP, time_start << 4, (GetCountSspClk() - time_start) << 4, NULL, true); + LogTrace(cmd, CMD_ID_RESP, time_start << 4, GetCountSspClk() << 4, NULL, true); FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_READER_RX_XCORR); @@ -723,7 +723,7 @@ static int SendDataTag(uint8_t *send, int sendlen, bool init, int speed, uint8_t uint32_t time_start = GetCountSspClk(); TransmitTo15693Tag(ToSend, ToSendMax, &t_samples, &wait); - LogTrace(send, sendlen, time_start << 4, (GetCountSspClk() - time_start) << 4, NULL, true); + LogTrace(send, sendlen, time_start << 4, GetCountSspClk() << 4, NULL, true); // Now wait for a response if (outdata != NULL) { @@ -825,7 +825,7 @@ void ReaderIso15693(uint32_t parameter) { uint8_t cmd[CMD_ID_RESP] = {0}; BuildIdentifyRequest(cmd); TransmitTo15693Tag(ToSend, ToSendMax, &tsamples, &wait); - LogTrace(cmd, CMD_ID_RESP, time_start << 4, (GetCountSspClk() - time_start) << 4, NULL, true); + LogTrace(cmd, CMD_ID_RESP, time_start << 4, GetCountSspClk() << 4, NULL, true); // Now wait for a response answerLen1 = GetIso15693AnswerFromTag(answer1, &elapsed) ; @@ -906,7 +906,7 @@ void SimTagIso15693(uint32_t parameter, uint8_t *uid) { time_start = GetCountSspClk(); TransmitTo15693Reader(ToSend, ToSendMax, &tsamples, &wait); - LogTrace(cmd, CMD_INV_RESP, time_start << 4, (GetCountSspClk() - time_start) << 4, NULL, true); + LogTrace(cmd, CMD_INV_RESP, time_start << 4, GetCountSspClk() << 4, NULL, true); if (DBGLEVEL >= DBG_EXTENDED) { Dbprintf("[+] %d octets read from reader command: %x %x %x %x %x %x %x %x", ans, From 0c248f76ad34fcb6697ea55a783f6eda8f153b08 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 19 May 2020 20:45:48 +0200 Subject: [PATCH 059/527] chg: hf mfdes info - textual --- client/src/cmdhfmfdes.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index 7ef1689cc..dc285d9cf 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -2972,7 +2972,7 @@ static int CmdHF14ADesInfo(const char *Cmd) { if (major == 1 && minor == 3) PrintAndLogEx(INFO, "\t1.3 - DESFire Ev1 MF3ICD21/41/81, Support extended APDU commands, EAL4+"); if (major == 1 && minor == 4) - PrintAndLogEx(INFO, "\t1.4 - DESFire Ev1 MF3ICD21/41/81, EAL4+, N/A (report to iceman!)"); + PrintAndLogEx(INFO, "\t1.4 - DESFire Ev1 MF3ICD21/41/81, EAL4+"); if (major == 2 && minor == 0) PrintAndLogEx(INFO, "\t2.0 - DESFire Ev2, Originality check, proximity check, EAL5"); // if (major == 3 && minor == 0) From 3dd55e2c04bbad599acd7e1c13e3fc0683cfeca2 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Tue, 19 May 2020 20:53:52 +0200 Subject: [PATCH 060/527] simpler define --- tools/mf_nonce_brute/mf_nonce_brute.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/tools/mf_nonce_brute/mf_nonce_brute.c b/tools/mf_nonce_brute/mf_nonce_brute.c index 3aaa5a9f3..3bd2a6f31 100644 --- a/tools/mf_nonce_brute/mf_nonce_brute.c +++ b/tools/mf_nonce_brute/mf_nonce_brute.c @@ -1,7 +1,9 @@ #define __STDC_FORMAT_MACROS -#if !defined(_WIN64) + +#if defined(_WIN32) # define _USE_32BIT_TIME_T 1 #endif + #include #include #include From 8c22ef076b5c3a53bfc8f0039838484caa9fc2ff Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 20 May 2020 08:58:28 +0200 Subject: [PATCH 061/527] expanded from u16 -> u32 for keys to be loaded --- client/src/cmdflashmem.c | 14 +++++++++++++- client/src/cmdhficlass.c | 41 ++++++++++++++++++++-------------------- client/src/cmdhficlass.h | 8 ++++---- client/src/cmdhfmf.c | 8 ++++---- client/src/cmdhfmfdes.c | 30 ++++++++++++++++++----------- client/src/cmdhfmfp.c | 9 +++++---- client/src/cmdlft55xx.c | 4 ++-- client/src/fileutils.c | 10 +++++----- client/src/fileutils.h | 6 +++--- 9 files changed, 76 insertions(+), 54 deletions(-) diff --git a/client/src/cmdflashmem.c b/client/src/cmdflashmem.c index debe77089..e1761a81b 100644 --- a/client/src/cmdflashmem.c +++ b/client/src/cmdflashmem.c @@ -168,7 +168,7 @@ static int CmdFlashMemLoad(const char *Cmd) { return PM3_EINVARG; } size_t datalen = 0; - uint16_t keycount = 0; + uint32_t keycount = 0; int res = 0; uint8_t *data = calloc(FLASH_MEM_MAX_SIZE, sizeof(uint8_t)); @@ -180,6 +180,10 @@ static int CmdFlashMemLoad(const char *Cmd) { free(data); return PM3_EFILE; } + // limited space on flash mem + if (keycount > 0xFFFF) + keycount &= 0xFFFF; + data[0] = (keycount >> 0) & 0xFF; data[1] = (keycount >> 8) & 0xFF; datalen += 2; @@ -191,6 +195,10 @@ static int CmdFlashMemLoad(const char *Cmd) { free(data); return PM3_EFILE; } + // limited space on flash mem + if (keycount > 0xFFFF) + keycount &= 0xFFFF; + data[0] = (keycount >> 0) & 0xFF; data[1] = (keycount >> 8) & 0xFF; datalen += 2; @@ -202,6 +210,10 @@ static int CmdFlashMemLoad(const char *Cmd) { free(data); return PM3_EFILE; } + // limited space on flash mem + if (keycount > 0xFFFF) + keycount &= 0xFFFF; + data[0] = (keycount >> 0) & 0xFF; data[1] = (keycount >> 8) & 0xFF; datalen += 2; diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 73b9a6b18..61aea9de6 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -2411,17 +2411,6 @@ static int CmdHFiClassCheckKeys(const char *Cmd) { } if (errors) return usage_hf_iclass_chk(); - - uint8_t *keyBlock = NULL; - uint16_t keycount = 0; - - // load keys - int res = loadFileDICTIONARY_safe(filename, (void **)&keyBlock, 8, &keycount); - if (res != PM3_SUCCESS || keycount == 0) { - free(keyBlock); - return res; - } - // Get CSN / UID and CCNR PrintAndLogEx(SUCCESS, "Reading tag CSN"); for (uint8_t i = 0; i < ICLASS_AUTH_RETRY && !got_csn; i++) { @@ -2436,6 +2425,16 @@ static int CmdHFiClassCheckKeys(const char *Cmd) { return PM3_ESOFT; } + uint8_t *keyBlock = NULL; + uint32_t keycount = 0; + + // load keys + int res = loadFileDICTIONARY_safe(filename, (void **)&keyBlock, 8, &keycount); + if (res != PM3_SUCCESS || keycount == 0) { + free(keyBlock); + return res; + } + pre = calloc(keycount, sizeof(iclass_premac_t)); if (!pre) { DropField(); @@ -2678,7 +2677,7 @@ static int CmdHFiClassLookUp(const char *Cmd) { PrintAndLogEx(SUCCESS, "MAC_TAG | %s", sprint_hex(MAC_TAG, sizeof(MAC_TAG))); uint8_t *keyBlock = NULL; - uint16_t keycount = 0; + uint32_t keycount = 0; // load keys int res = loadFileDICTIONARY_safe(filename, (void **)&keyBlock, 8, &keycount); @@ -2737,11 +2736,12 @@ static int CmdHFiClassLookUp(const char *Cmd) { } // precalc diversified keys and their MAC -void GenerateMacFrom(uint8_t *CSN, uint8_t *CCNR, bool use_raw, bool use_elite, uint8_t *keys, int keycnt, iclass_premac_t *list) { +void GenerateMacFrom(uint8_t *CSN, uint8_t *CCNR, bool use_raw, bool use_elite, uint8_t *keys, uint32_t keycnt, iclass_premac_t *list) { uint8_t key[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; uint8_t div_key[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - for (int i = 0; i < keycnt; i++) { +//iceman: threading + for (uint32_t i = 0; i < keycnt; i++) { memcpy(key, keys + 8 * i, 8); @@ -2754,11 +2754,12 @@ void GenerateMacFrom(uint8_t *CSN, uint8_t *CCNR, bool use_raw, bool use_elite, } } -void GenerateMacKeyFrom(uint8_t *CSN, uint8_t *CCNR, bool use_raw, bool use_elite, uint8_t *keys, int keycnt, iclass_prekey_t *list) { +void GenerateMacKeyFrom(uint8_t *CSN, uint8_t *CCNR, bool use_raw, bool use_elite, uint8_t *keys, uint32_t keycnt, iclass_prekey_t *list) { uint8_t div_key[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - for (int i = 0; i < keycnt; i++) { +//iceman: threading + for (uint32_t i = 0; i < keycnt; i++) { memcpy(list[i].key, keys + 8 * i, 8); @@ -2774,13 +2775,13 @@ void GenerateMacKeyFrom(uint8_t *CSN, uint8_t *CCNR, bool use_raw, bool use_elit } // print diversified keys -void PrintPreCalcMac(uint8_t *keys, int keycnt, iclass_premac_t *pre_list) { +void PrintPreCalcMac(uint8_t *keys, uint32_t keycnt, iclass_premac_t *pre_list) { - iclass_prekey_t *b = calloc(keycnt, sizeof(iclass_prekey_t)); + iclass_prekey_t *b = calloc(keycnt, sizeof(iclass_prekey_t)); if (!b) return; - for (int i = 0; i < keycnt; i++) { + for (uint32_t i = 0; i < keycnt; i++) { memcpy(b[i].key, keys + 8 * i, 8); memcpy(b[i].mac, pre_list[i].mac, 4); } @@ -2788,7 +2789,7 @@ void PrintPreCalcMac(uint8_t *keys, int keycnt, iclass_premac_t *pre_list) { free(b); } -void PrintPreCalc(iclass_prekey_t *list, int itemcnt) { +void PrintPreCalc(iclass_prekey_t *list, uint32_t itemcnt) { PrintAndLogEx(NORMAL, "-----+------------------+---------"); PrintAndLogEx(NORMAL, "#key | key | mac"); PrintAndLogEx(NORMAL, "-----+------------------+---------"); diff --git a/client/src/cmdhficlass.h b/client/src/cmdhficlass.h index 73304d4d0..53880d647 100644 --- a/client/src/cmdhficlass.h +++ b/client/src/cmdhficlass.h @@ -33,8 +33,8 @@ int readIclass(bool loop, bool verbose); void printIclassDumpContents(uint8_t *iclass_dump, uint8_t startblock, uint8_t endblock, size_t filesize); void HFiClassCalcDivKey(uint8_t *CSN, uint8_t *KEY, uint8_t *div_key, bool elite); -void GenerateMacFrom(uint8_t *CSN, uint8_t *CCNR, bool use_raw, bool use_elite, uint8_t *keys, int keycnt, iclass_premac_t *list); -void GenerateMacKeyFrom(uint8_t *CSN, uint8_t *CCNR, bool use_raw, bool use_elite, uint8_t *keys, int keycnt, iclass_prekey_t *list); -void PrintPreCalcMac(uint8_t *keys, int keycnt, iclass_premac_t *pre_list); -void PrintPreCalc(iclass_prekey_t *list, int itemcnt); +void GenerateMacFrom(uint8_t *CSN, uint8_t *CCNR, bool use_raw, bool use_elite, uint8_t *keys, uint32_t keycnt, iclass_premac_t *list); +void GenerateMacKeyFrom(uint8_t *CSN, uint8_t *CCNR, bool use_raw, bool use_elite, uint8_t *keys, uint32_t keycnt, iclass_prekey_t *list); +void PrintPreCalcMac(uint8_t *keys, uint32_t keycnt, iclass_premac_t *pre_list); +void PrintPreCalc(iclass_prekey_t *list, uint32_t itemcnt); #endif diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 0a11a8a25..560ed0a16 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -1904,7 +1904,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { bool calibrate = true; // Attack key storage variables uint8_t *keyBlock = NULL; - uint16_t key_cnt = 0; + uint32_t key_cnt = 0; sector_t *e_sector; uint8_t sectors_cnt = MIFARE_1K_MAXSECTOR; int block_cnt = MIFARE_1K_MAXBLOCK; @@ -2169,7 +2169,7 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { for (int j = 0; j < 2; j++) { // Check if the key is known if (e_sector[i].foundKey[j] == 0) { - for (int k = 0; k < key_cnt; k++) { + for (uint32_t k = 0; k < key_cnt; k++) { printf("."); fflush(stdout); if (mfCheckKeys(FirstBlockOfSector(i), j, true, 1, (keyBlock + (6 * k)), &key64) == PM3_SUCCESS) { @@ -2186,13 +2186,13 @@ static int CmdHF14AMfAutoPWN(const char *Cmd) { fflush(stdout); } else { - int chunksize = key_cnt > (PM3_CMD_DATA_SIZE / 6) ? (PM3_CMD_DATA_SIZE / 6) : key_cnt; + uint32_t chunksize = key_cnt > (PM3_CMD_DATA_SIZE / 6) ? (PM3_CMD_DATA_SIZE / 6) : key_cnt; bool firstChunk = true, lastChunk = false; for (uint8_t strategy = 1; strategy < 3; strategy++) { PrintAndLogEx(INFO, "running strategy %u", strategy); // main keychunk loop - for (int i = 0; i < key_cnt; i += chunksize) { + for (uint32_t i = 0; i < key_cnt; i += chunksize) { if (kbd_enter_pressed()) { PrintAndLogEx(WARNING, "\naborted via keyboard!\n"); diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index dc285d9cf..7dd07655b 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -3561,7 +3561,11 @@ static int CmdHF14ADesAuth(const char *Cmd) { return PM3_SUCCESS; } -static void DesFill2bPattern(uint8_t deskeyList[MAX_KEYS_LIST_LEN][8], size_t *deskeyListLen, uint8_t aeskeyList[MAX_KEYS_LIST_LEN][16], size_t *aeskeyListLen, uint8_t k3kkeyList[MAX_KEYS_LIST_LEN][24], size_t *k3kkeyListLen, uint32_t *startPattern) { +static void DesFill2bPattern( + uint8_t deskeyList[MAX_KEYS_LIST_LEN][8], uint32_t *deskeyListLen, + uint8_t aeskeyList[MAX_KEYS_LIST_LEN][16], uint32_t *aeskeyListLen, + uint8_t k3kkeyList[MAX_KEYS_LIST_LEN][24], uint32_t *k3kkeyListLen, uint32_t *startPattern) { + for (uint32_t pt = *startPattern; pt < 0x10000; pt++) { if (*deskeyListLen != MAX_KEYS_LIST_LEN) { deskeyList[*deskeyListLen][0] = (pt >> 8) & 0xff; @@ -3598,7 +3602,11 @@ static void DesFill2bPattern(uint8_t deskeyList[MAX_KEYS_LIST_LEN][8], size_t *d (*startPattern)++; } -static int AuthCheckDesfire(uint8_t *aid, uint8_t deskeyList[MAX_KEYS_LIST_LEN][8], size_t deskeyListLen, uint8_t aeskeyList[MAX_KEYS_LIST_LEN][16], size_t aeskeyListLen, uint8_t k3kkeyList[MAX_KEYS_LIST_LEN][24], size_t k3kkeyListLen, uint8_t foundKeys[4][0xE][24 + 1], bool *result) { +static int AuthCheckDesfire(uint8_t *aid, + uint8_t deskeyList[MAX_KEYS_LIST_LEN][8], uint32_t deskeyListLen, + uint8_t aeskeyList[MAX_KEYS_LIST_LEN][16], uint32_t aeskeyListLen, + uint8_t k3kkeyList[MAX_KEYS_LIST_LEN][24], uint32_t k3kkeyListLen, + uint8_t foundKeys[4][0xE][24 + 1], bool *result) { uint32_t curaid = (aid[0] & 0xFF) + ((aid[1] & 0xFF) << 8) + ((aid[2] & 0xFF) << 16); @@ -3689,7 +3697,7 @@ static int AuthCheckDesfire(uint8_t *aid, uint8_t deskeyList[MAX_KEYS_LIST_LEN][ if (usedkeys[keyno] == 1 && foundKeys[0][keyno][0] == 0) { - for (int curkey = 0; curkey < deskeyListLen; curkey++) { + for (uint32_t curkey = 0; curkey < deskeyListLen; curkey++) { payload.keylen = 8; memcpy(payload.key, deskeyList[curkey], 8); @@ -3728,7 +3736,7 @@ static int AuthCheckDesfire(uint8_t *aid, uint8_t deskeyList[MAX_KEYS_LIST_LEN][ if (usedkeys[keyno] == 1 && foundKeys[1][keyno][0] == 0) { - for (int curkey = 0; curkey < aeskeyListLen; curkey++) { + for (uint32_t curkey = 0; curkey < aeskeyListLen; curkey++) { payload.keylen = 16; memcpy(payload.key, aeskeyList[curkey], 16); @@ -3767,7 +3775,7 @@ static int AuthCheckDesfire(uint8_t *aid, uint8_t deskeyList[MAX_KEYS_LIST_LEN][ if (usedkeys[keyno] == 1 && foundKeys[2][keyno][0] == 0) { - for (int curkey = 0; curkey < aeskeyListLen; curkey++) { + for (uint32_t curkey = 0; curkey < aeskeyListLen; curkey++) { payload.keylen = 16; memcpy(payload.key, aeskeyList[curkey], 16); @@ -3806,7 +3814,7 @@ static int AuthCheckDesfire(uint8_t *aid, uint8_t deskeyList[MAX_KEYS_LIST_LEN][ if (usedkeys[keyno] == 1 && foundKeys[3][keyno][0] == 0) { - for (int curkey = 0; curkey < k3kkeyListLen; curkey++) { + for (uint32_t curkey = 0; curkey < k3kkeyListLen; curkey++) { payload.keylen = 24; memcpy(payload.key, k3kkeyList[curkey], 24); payload.mode = MFDES_AUTH_ISO; @@ -3846,9 +3854,9 @@ static int CmdHF14aDesChk(const char *Cmd) { uint8_t deskeyList[MAX_KEYS_LIST_LEN][8] = {{0}}; uint8_t aeskeyList[MAX_KEYS_LIST_LEN][16] = {{0}}; uint8_t k3kkeyList[MAX_KEYS_LIST_LEN][MAX_KEY_LEN] = {{0}}; - size_t deskeyListLen = 0; - size_t aeskeyListLen = 0; - size_t k3kkeyListLen = 0; + uint32_t deskeyListLen = 0; + uint32_t aeskeyListLen = 0; + uint32_t k3kkeyListLen = 0; uint8_t foundKeys[4][0xE][24 + 1] = {{{0}}}; CLIParserInit("hf mfdes chk", @@ -3972,7 +3980,7 @@ static int CmdHF14aDesChk(const char *Cmd) { // dictionary mode size_t endFilePosition = 0; if (dict_filenamelen) { - uint16_t keycnt = 0; + uint32_t keycnt = 0; res = loadFileDICTIONARYEx((char *)dict_filename, deskeyList, sizeof(deskeyList), NULL, 8, &keycnt, 0, &endFilePosition, true); deskeyListLen = keycnt; if (endFilePosition) @@ -4049,7 +4057,7 @@ static int CmdHF14aDesChk(const char *Cmd) { if (dict_filenamelen && endFilePosition) { if (!verbose) printf("d"); - uint16_t keycnt = 0; + uint32_t keycnt = 0; res = loadFileDICTIONARYEx((char *)dict_filename, deskeyList, sizeof(deskeyList), NULL, 16, &keycnt, endFilePosition, &endFilePosition, false); deskeyListLen = keycnt; keycnt = 0; diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index bc6854b26..27c606203 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1027,7 +1027,7 @@ static int MFPKeyCheck(uint8_t startSector, uint8_t endSector, uint8_t startKeyA return PM3_SUCCESS; } -static void Fill2bPattern(uint8_t keyList[MAX_KEYS_LIST_LEN][AES_KEY_LEN], size_t *keyListLen, uint32_t *startPattern) { +static void Fill2bPattern(uint8_t keyList[MAX_KEYS_LIST_LEN][AES_KEY_LEN], uint32_t *keyListLen, uint32_t *startPattern) { for (uint32_t pt = *startPattern; pt < 0x10000; pt++) { keyList[*keyListLen][0] = (pt >> 8) & 0xff; keyList[*keyListLen][1] = pt & 0xff; @@ -1045,7 +1045,7 @@ static void Fill2bPattern(uint8_t keyList[MAX_KEYS_LIST_LEN][AES_KEY_LEN], size_ static int CmdHFMFPChk(const char *Cmd) { int res; uint8_t keyList[MAX_KEYS_LIST_LEN][AES_KEY_LEN] = {{0}}; - size_t keyListLen = 0; + uint32_t keyListLen = 0; uint8_t foundKeys[2][64][AES_KEY_LEN + 1] = {{{0}}}; CLIParserInit("hf mfp chk", @@ -1149,6 +1149,7 @@ static int CmdHFMFPChk(const char *Cmd) { uint8_t endKeyAB = 1; if (keyA && !keyB) endKeyAB = 0; + if (!keyA && keyB) startKeyAB = 1; @@ -1170,7 +1171,7 @@ static int CmdHFMFPChk(const char *Cmd) { // dictionary mode size_t endFilePosition = 0; if (dict_filenamelen) { - uint16_t keycnt = 0; + uint32_t keycnt = 0; res = loadFileDICTIONARYEx((char *)dict_filename, keyList, sizeof(keyList), NULL, 16, &keycnt, 0, &endFilePosition, true); keyListLen = keycnt; if (endFilePosition) @@ -1210,7 +1211,7 @@ static int CmdHFMFPChk(const char *Cmd) { if (dict_filenamelen && endFilePosition) { if (!verbose) printf("d"); - uint16_t keycnt = 0; + uint32_t keycnt = 0; res = loadFileDICTIONARYEx((char *)dict_filename, keyList, sizeof(keyList), NULL, 16, &keycnt, endFilePosition, &endFilePosition, false); keyListLen = keycnt; continue; diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index 572a07549..9b54aef8f 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -3045,7 +3045,7 @@ static int CmdT55xxChkPwds(const char *Cmd) { } if (use_pwd_file) { - uint16_t keycount = 0; + uint32_t keycount = 0; int res = loadFileDICTIONARY_safe(filename, (void **) &keyBlock, 4, &keycount); if (res != PM3_SUCCESS || keycount == 0 || keyBlock == NULL) { @@ -3056,7 +3056,7 @@ static int CmdT55xxChkPwds(const char *Cmd) { return PM3_ESOFT; } - for (uint16_t c = 0; c < keycount; ++c) { + for (uint32_t c = 0; c < keycount; ++c) { if (!session.pm3_present) { PrintAndLogEx(WARNING, "Device offline\n"); diff --git a/client/src/fileutils.c b/client/src/fileutils.c index ac9196e4c..4e5573747 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -996,7 +996,7 @@ out: return retval; } -int loadFileDICTIONARY(const char *preferredName, void *data, size_t *datalen, uint8_t keylen, uint16_t *keycnt) { +int loadFileDICTIONARY(const char *preferredName, void *data, size_t *datalen, uint8_t keylen, uint32_t *keycnt) { // t5577 == 4bytes // mifare == 6 bytes // mf plus == 16 bytes @@ -1009,7 +1009,7 @@ int loadFileDICTIONARY(const char *preferredName, void *data, size_t *datalen, u return loadFileDICTIONARYEx(preferredName, data, 0, datalen, keylen, keycnt, 0, NULL, true); } -int loadFileDICTIONARYEx(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen, uint8_t keylen, uint16_t *keycnt, +int loadFileDICTIONARYEx(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen, uint8_t keylen, uint32_t *keycnt, size_t startFilePosition, size_t *endFilePosition, bool verbose) { if (data == NULL) return PM3_EINVARG; @@ -1025,7 +1025,7 @@ int loadFileDICTIONARYEx(const char *preferredName, void *data, size_t maxdatale keylen <<= 1; char line[255]; - uint16_t vkeycnt = 0; + uint32_t vkeycnt = 0; size_t counter = 0; int retval = PM3_SUCCESS; @@ -1097,7 +1097,7 @@ out: return retval; } -int loadFileDICTIONARY_safe(const char *preferredName, void **pdata, uint8_t keylen, uint16_t *keycnt) { +int loadFileDICTIONARY_safe(const char *preferredName, void **pdata, uint8_t keylen, uint32_t *keycnt) { int retval = PM3_SUCCESS; @@ -1141,7 +1141,7 @@ int loadFileDICTIONARY_safe(const char *preferredName, void **pdata, uint8_t key while (fgets(line, sizeof(line), f)) { // check if we have enough space (if not allocate more) - if ((((size_t)(*keycnt)) * (keylen >> 1)) >= mem_size) { + if ((*keycnt * (keylen >> 1)) >= mem_size) { mem_size += block_size; *pdata = realloc(*pdata, mem_size); diff --git a/client/src/fileutils.h b/client/src/fileutils.h index 2f55a3c1a..603144e67 100644 --- a/client/src/fileutils.h +++ b/client/src/fileutils.h @@ -210,7 +210,7 @@ int loadFileJSON(const char *preferredName, void *data, size_t maxdatalen, size_ * @param keycnt key count that lays in data. may be NULL * @return 0 for ok, 1 for failz */ -int loadFileDICTIONARY(const char *preferredName, void *data, size_t *datalen, uint8_t keylen, uint16_t *keycnt); +int loadFileDICTIONARY(const char *preferredName, void *data, size_t *datalen, uint8_t keylen, uint32_t *keycnt); /** * @brief Utility function to load data from a DICTIONARY textfile. This method takes a preferred name. @@ -228,7 +228,7 @@ int loadFileDICTIONARY(const char *preferredName, void *data, size_t *datalen, u * @param verbose print messages if true * @return 0 for ok, 1 for failz */ -int loadFileDICTIONARYEx(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen, uint8_t keylen, uint16_t *keycnt, +int loadFileDICTIONARYEx(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen, uint8_t keylen, uint32_t *keycnt, size_t startFilePosition, size_t *endFilePosition, bool verbose); /** @@ -240,7 +240,7 @@ int loadFileDICTIONARYEx(const char *preferredName, void *data, size_t maxdatale * @param keylen the number of bytes a key per row is * @return 0 for ok, 1 for failz */ -int loadFileDICTIONARY_safe(const char *preferredName, void **pdata, uint8_t keylen, uint16_t *keycnt); +int loadFileDICTIONARY_safe(const char *preferredName, void **pdata, uint8_t keylen, uint32_t *keycnt); /** * @brief Utility function to check and convert old mfu dump format to new From 97a94903b08cfb3bce2d6b7634b8ad14218ad0fd Mon Sep 17 00:00:00 2001 From: Iceman Date: Wed, 20 May 2020 09:46:49 +0200 Subject: [PATCH 062/527] Update termux_notes.md --- doc/termux_notes.md | 39 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/doc/termux_notes.md b/doc/termux_notes.md index 6b3eb132c..168e13803 100644 --- a/doc/termux_notes.md +++ b/doc/termux_notes.md @@ -1,6 +1,23 @@ + # Proxmark 3 on Android +## Table of Contents + * [ Requirements ](#requirements) + * [ Notes ](#notes) + * [ Tested setups ](#tested-setups) + * [ Setup ](#setup) + * [ Setting up Termux ](#setting-up-termux) + * [ Install Proxmark3 package ](#install-proxmark3-package) + * [ USB_ACM ](#usb_acm) + * [ Enable the driver ](#enable-the-driver) + * [ Building the kernel ](#building-the-kernel) + * [ Flashing the kernel ](#flashing-the-kernel) + * [ Testing ](#testing) + * [ Troubleshooting ](#troubleshooting) + ## Requirements +^[Top](#top) + - Android phone - Kernel with one of: - USB_ACM driver @@ -10,11 +27,13 @@ - [Termux](https://play.google.com/store/apps/details?id=com.termux) ## Notes +^[Top](#top) From official Proxmark3 wiki: > In any case, you would need a USB-C to A or USB-OTG cable to connect Proxmark3 to your Android device. Some Android devices may not supply enough power (USB-OTG = 100mA), and need a USB Y-cable and external battery, otherwise they will get strange failures. ref : https://github.com/Proxmark/proxmark3/wiki/android ## Tested setups +^[Top](#top) - OnePlus 5 (arm64, USB-C) @@ -45,9 +64,17 @@ ref : https://github.com/Proxmark/proxmark3/wiki/android ## Setup +^[Top](#top) + ### Setting up Termux +^[Top](#top) + Install [Termux](https://play.google.com/store/apps/details?id=com.termux) and start it + + ### Install Proxmark3 package +^[Top](#top) + Run the following commands: ``` pkg install proxmark3 tsu @@ -61,18 +88,28 @@ make clean && make client ``` ### USB_ACM +^[Top](#top) + You need the `USB_ACM` driver enabled and working to communicate with the Proxmark3. To see if it's working, run `tsudo ls /dev/tty*` and it should list `/dev/ttyACM0` (or similar). If you see this, congratulations, skip this step! #### Enable the driver +^[Top](#top) + If your kernel has module loading enabled, you should be able to build the module separately and load it on your system without any changes. Otherwise, grab your kernel sources and edit your build config to include `CONFIG_USB_ACM=y`. On the tested kernel, this was under: `android_kernel_oneplus_msm8998/arch/arm64/configs/omni_oneplus5_defconfig` #### Building the kernel +^[Top](#top) + If using a custom kernel, refer to the build instructions provided by its maintainer. Otherwise, follow the standard Linux kernel build procedure #### Flashing the kernel +^[Top](#top) + You can flash the kernel however it suits you. On the tested device, this was achieved using [TWRP](https://twrp.me/), the most popular custom recovery ### Testing +^[Top](#top) + Open Termux and start the Proxmark3 client: ``` tsudo proxmark3/client/proxmark3 /dev/ttyACM0 @@ -80,5 +117,7 @@ tsudo proxmark3/client/proxmark3 /dev/ttyACM0 Everything should work just like if it was your PC! ### Troubleshooting +^[Top](#top) + - `dmesg | grep usb` - useful debug info - `/proc/config.gz` - contains your kernel's build configuration. Look for `CONFIG_USB_ACM`, which should be enabled From ce0247cf8693f527450d0e55ae0ea56bf79d2b53 Mon Sep 17 00:00:00 2001 From: Iceman Date: Wed, 20 May 2020 09:48:12 +0200 Subject: [PATCH 063/527] Update termux_notes.md --- doc/termux_notes.md | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/doc/termux_notes.md b/doc/termux_notes.md index 168e13803..1b1ccc75c 100644 --- a/doc/termux_notes.md +++ b/doc/termux_notes.md @@ -1,10 +1,14 @@ # Proxmark 3 on Android - ## Table of Contents * [ Requirements ](#requirements) * [ Notes ](#notes) * [ Tested setups ](#tested-setups) + * OnePlus 5 (arm64, USB-C) + * Nexus 5X (arm64, USB-C) + * Xiaomi Mi Mix 2S (arm64, USB-C) + * OnePlus 5T (arm64, USB-C) + * Samsung Galaxy Tab S2 (arm64, MicroUSB) * [ Setup ](#setup) * [ Setting up Termux ](#setting-up-termux) * [ Install Proxmark3 package ](#install-proxmark3-package) From 1a90fa90d64e051a10d520c83f9e338aa5d45f18 Mon Sep 17 00:00:00 2001 From: dxl <64101226@qq.com> Date: Wed, 20 May 2020 16:05:58 +0800 Subject: [PATCH 064/527] work directory supported. --- client/android/pm3_main.c | 28 ++++++++++++++++++---------- 1 file changed, 18 insertions(+), 10 deletions(-) diff --git a/client/android/pm3_main.c b/client/android/pm3_main.c index 6855856ab..b1e388cce 100644 --- a/client/android/pm3_main.c +++ b/client/android/pm3_main.c @@ -53,6 +53,14 @@ const char *get_my_executable_path(void) { } const char *get_my_executable_directory(void) { + if (my_executable_directory != NULL) free(my_executable_directory); + char buf[1024]; + // get current work directory + getcwd(buf, sizeof(buf)); + // add / to end. + sprintf(buf, "%s%s", buf, PATHSEP); + // create on global + my_executable_directory = strdup(buf); return my_executable_directory; } @@ -95,7 +103,7 @@ jint sendCMD(JNIEnv *env, jobject instance, jstring cmd_) { } // display on new line PrintAndLogEx(NORMAL, "\n"); - char *cmd = (char *)((*env)->GetStringUTFChars(env, cmd_, 0)); + char *cmd = (char *) ((*env)->GetStringUTFChars(env, cmd_, 0)); int ret = CommandReceived(cmd); if (ret == 99) { // exit / quit @@ -110,7 +118,7 @@ jint sendCMD(JNIEnv *env, jobject instance, jstring cmd_) { * Is client running! * */ jboolean isExecuting(JNIEnv *env, jobject instance) { - return (jboolean)((jboolean) conn.run); + return (jboolean) ((jboolean) conn.run); } /* @@ -123,7 +131,7 @@ jboolean testPm3(JNIEnv *env, jobject instance) { return false; } bool ret2 = TestProxmark() == PM3_SUCCESS; - return (jboolean)(ret1 && ret2); + return (jboolean) (ret1 && ret2); } /* @@ -148,21 +156,21 @@ JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { } jclass clz_test = (*jniEnv)->FindClass(jniEnv, "cn/rrg/devices/Proxmark3RRGRdv4"); JNINativeMethod methods[] = { - {"startExecute", "(Ljava/lang/String;)I", (void *) sendCMD}, - {"stopExecute", "()V", (void *) stopPm3}, - {"isExecuting", "()Z", (void *) isExecuting} + {"startExecute", "(Ljava/lang/String;)I", (void *) sendCMD}, + {"stopExecute", "()V", (void *) stopPm3}, + {"isExecuting", "()Z", (void *) isExecuting} }; JNINativeMethod methods1[] = { - {"testPm3", "()Z", (void *) testPm3}, - {"closePm3", "()V", stopPm3} + {"testPm3", "()Z", (void *) testPm3}, + {"closePm3", "()V", stopPm3} }; if ((*jniEnv)->RegisterNatives(jniEnv, clazz, methods, sizeof(methods) / sizeof(methods[0])) != - JNI_OK) { + JNI_OK) { return -1; } if ((*jniEnv)->RegisterNatives(jniEnv, clz_test, methods1, sizeof(methods1) / sizeof(methods1[0])) != - JNI_OK) { + JNI_OK) { return -1; } (*jniEnv)->DeleteLocalRef(jniEnv, clazz); From 6bb47f355fc963a074ecf375aac5316fb2c026f5 Mon Sep 17 00:00:00 2001 From: Iceman Date: Wed, 20 May 2020 10:24:20 +0200 Subject: [PATCH 065/527] Update README.md --- README.md | 40 ++++++++++++++++++++++++++++++---------- 1 file changed, 30 insertions(+), 10 deletions(-) diff --git a/README.md b/README.md index 1c4cdaf83..1c7eb891c 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,8 @@ # RRG / Iceman repo - Proxmark3 + + | Releases | Linux & OSX CI | Windows CI | Coverity | | ------------------- |:-------------------:| -------------------:| -------------------:| | [![Latest release](https://img.shields.io/github/release/RfidResearchGroup/proxmark3.svg)](https://github.com/RfidResearchGroup/proxmark3/releases/latest) | [![Build status](https://api.travis-ci.org/RfidResearchGroup/proxmark3.svg?branch=master)](https://travis-ci.org/RfidResearchGroup/proxmark3) | [![Build status](https://ci.appveyor.com/api/projects/status/b4gwrhq3nc876cuu/branch/master?svg=true)](https://ci.appveyor.com/project/RfidResearchGroup/proxmark3/branch/master) | [![Coverity Status](https://scan.coverity.com/projects/19334/badge.svg)](https://scan.coverity.com/projects/proxmark3-rrg-iceman-repo)| @@ -23,6 +25,7 @@ ## Notes / helpful documents + | Notes ||| | ------------------- |:-------------------:| -------------------:| |[Notes on UART](/doc/uart_notes.md)|[Notes on Termux / Android](/doc/termux_notes.md)|[Notes on paths](/doc/path_notes.md)| @@ -31,6 +34,8 @@ |[Notes on file formats used with Proxmark3](/doc/extensions_notes.md)||| |[Developing standalone mode](/armsrc/Standalone/readme.md)|[Wiki about standalone mode](https://github.com/RfidResearchGroup/proxmark3/wiki/Standalone-mode)|| + + ## Build for non-RDV4 Proxmark3 platforms In order to build this repo for other Proxmark3 platforms we urge you to read [Advanced compilation parameters](/doc/md/Use_of_Proxmark/4_Advanced-compilation-parameters.md) @@ -52,14 +57,22 @@ On the software side: quite a lot, see the [Changelog file](CHANGELOG.md). This repo compiles nicely on - Proxspace v3.x - - Windows/mingw environment with Qt5.6.1 & GCC 4.8 - - Ubuntu 1604, 1804, 1904, 2004 + - [latest release v3.4](https://github.com/Gator96100/ProxSpace/releases) + - Windows/mingw environment with Qt5.6.1 & GCC 4.9 + - Ubuntu 1604 -> 2004 - ParrotOS, Gentoo, Pentoo, Kali, Nethunter, Archlinux, Fedora, Debian - - Rasbian Pi, Jetson Nano, - Android / Termux - Mac OS X / Homebrew - WSL, WSL2 (Windows subsystem linux) on Windows 10 - Docker container + - [ RRG / Iceman repo based ubuntu 18.04 container ](https://hub.docker.com/r/secopsconsult/proxmark3) + - [ Iceman fork based container v1.7 ](https://hub.docker.com/r/iceman1001/proxmark3/) + +Hardware to run client on + - PC + - Andriod + - Rasbian Pi + - Jetson Nano The [public roadmap](https://github.com/RfidResearchGroup/proxmark3/wiki/Public-Roadmap) is an excellent start to read if you are interesting in contributing. @@ -67,6 +80,20 @@ The [public roadmap](https://github.com/RfidResearchGroup/proxmark3/wiki/Public- We usually merge your contributions fast since we do like the idea of getting a functionality in the Proxmark3 and weed out the bugs afterwards. +## Issues & Troubleshooting +Please search the [issues](https://github.com/rfidresearchgroup/proxmark3/issues) page here and see if your issue is listed in the first instance. Next place to visit is the [Proxmark Forum](http://www.proxmark.org/forum/index.php). Learn to search it well and finally Google / duckduckgo is your friend :) You will find many blogposts, youtube videos, tweets, reddit + +Read the [Troubleshooting](/doc/md/Installation_Instructions/Troubleshooting.md) guide to weed out most known problems. + +Offical channels + - [Proxmark3 IRC channel](http://webchat.freenode.net/?channels=#proxmark3) + - [Proxmark3 sub reddit](https://www.reddit.com/r/proxmark3/) + - [Twitter](https://twitter.com/proxmark3/) + + _no discord or slack channel_ + +Iceman has quite a few videos on his [youtube channel](https://www.youtube.com/c/ChrisHerrmann1001) + ## Cheat sheet Thanks to Alex Dibs, you can enjoy a [command cheat sheet](/doc/cheatsheet.md) @@ -85,13 +112,6 @@ The separation from official Proxmark3 repo gives us a lot of freedom to create The official PM3-GUI from Gaucho will not work. The new universal GUI will work. [Proxmark3 Universal GUI](https://github.com/burma69/PM3UniversalGUI) Almost, change needed in order to show helptext when client isn't connected to a device. -## Issues - -Please see the [Proxmark Forum](http://www.proxmark.org/forum/index.php) and see if your issue is listed in the first instance Google is your friend :) Questions will be answered via the forum by Iceman and the team. - -Read the [Troubleshooting](/doc/md/Installation_Instructions/Troubleshooting.md) guide to weed out most known problems. - - ## The end - July 2018 [@herrmann1001](https://mobile.twitter.com/herrmann1001) From 04158fddb6e98f5b34c534e131662ce572aacd4b Mon Sep 17 00:00:00 2001 From: Iceman Date: Wed, 20 May 2020 10:25:00 +0200 Subject: [PATCH 066/527] Update README.md --- README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/README.md b/README.md index 1c7eb891c..261d65e0b 100644 --- a/README.md +++ b/README.md @@ -74,6 +74,7 @@ Hardware to run client on - Rasbian Pi - Jetson Nano +## Roadmap The [public roadmap](https://github.com/RfidResearchGroup/proxmark3/wiki/Public-Roadmap) is an excellent start to read if you are interesting in contributing. > 👉 **Remember!** If you intend to contribute to the code, please read the [coding style notes](HACKING.md) first. From e9d06e0ec5d128327334be27f76e82dad6489dd2 Mon Sep 17 00:00:00 2001 From: dxl <64101226@qq.com> Date: Wed, 20 May 2020 16:33:21 +0800 Subject: [PATCH 067/527] Follow naming conventions. --- client/android/pm3_main.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/client/android/pm3_main.c b/client/android/pm3_main.c index b1e388cce..d35ae25fc 100644 --- a/client/android/pm3_main.c +++ b/client/android/pm3_main.c @@ -45,23 +45,23 @@ int push_cmdscriptfile(char *path, bool stayafter) { return PM3_SUCCESS; } -static char *my_executable_path = NULL; -static char *my_executable_directory = NULL; +static char *g_android_my_executable_path = NULL; +static char *g_android_my_executable_directory = NULL; const char *get_my_executable_path(void) { - return my_executable_path; + return g_android_my_executable_path; } const char *get_my_executable_directory(void) { - if (my_executable_directory != NULL) free(my_executable_directory); + if (g_android_my_executable_directory != NULL) free(g_android_my_executable_directory); char buf[1024]; // get current work directory getcwd(buf, sizeof(buf)); // add / to end. sprintf(buf, "%s%s", buf, PATHSEP); // create on global - my_executable_directory = strdup(buf); - return my_executable_directory; + g_android_my_executable_directory = strdup(buf); + return g_android_my_executable_directory; } static void set_my_executable_path(void) { From b6d764aec9dd3c89bf9c2c3c3dbaa3145b6802dd Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 20 May 2020 11:13:21 +0200 Subject: [PATCH 068/527] Add: 'lf fdx demod' - decoding of Bio-Thermo lf tag. Thanks to Rosco! See Destron Fearing LifeChip with Bio-Thermo technology and http://www.proxmark.org/forum/viewtopic.php?pid=38984#p38984 --- client/src/cmdlffdx.c | 66 +- traces/lf_fdx_biothermo.pm3 | 10000 ++++++++++++++++++++++++++++++++++ 2 files changed, 10047 insertions(+), 19 deletions(-) create mode 100644 traces/lf_fdx_biothermo.pm3 diff --git a/client/src/cmdlffdx.c b/client/src/cmdlffdx.c index 93420ac28..def872fde 100644 --- a/client/src/cmdlffdx.c +++ b/client/src/cmdlffdx.c @@ -62,6 +62,7 @@ static int usage_lf_fdx_clone(void) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); PrintAndLogEx(NORMAL, " lf fdx clone 999 112233"); + PrintAndLogEx(NORMAL, " lf fdx clone 999 112233 16a"); return PM3_SUCCESS; } @@ -78,19 +79,34 @@ static int usage_lf_fdx_sim(void) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); PrintAndLogEx(NORMAL, " lf fdx sim 999 112233"); + PrintAndLogEx(NORMAL, " lf fdx sim 999 112233 16a"); return PM3_SUCCESS; } // clearing the topbit needed for the preambl detection. -static void verify_values(uint64_t *animalid, uint32_t *countryid) { +static void verify_values(uint64_t *animalid, uint32_t *countryid, uint32_t *extended) { if ((*animalid & 0x3FFFFFFFFF) != *animalid) { *animalid &= 0x3FFFFFFFFF; - PrintAndLogEx(INFO, "Animal ID Truncated to 38bits: %"PRIx64, *animalid); + PrintAndLogEx(INFO, "Animal ID truncated to 38bits: " _YELLOW_("%"PRIx64), *animalid); } if ((*countryid & 0x3ff) != *countryid) { *countryid &= 0x3ff; - PrintAndLogEx(INFO, "Country ID Truncated to 10bits: %03d", *countryid); + PrintAndLogEx(INFO, "Country ID truncated to 10bits:" _YELLOW_("%03d"), *countryid); } + if ((*extended & 0xfff) != *extended) { + *extended &= 0xfff; + PrintAndLogEx(INFO, "Extended truncated to 24bits: " _YELLOW_("0x%03X"), *extended); + } +} + +static inline uint32_t bitcount(uint32_t a) { +#if defined __GNUC__ + return __builtin_popcountl(a); +#else + a = a - ((a >> 1) & 0x55555555); + a = (a & 0x33333333) + ((a >> 2) & 0x33333333); + return (((a + (a >> 4)) & 0x0f0f0f0f) * 0x01010101) >> 24; +#endif } // FDX-B ISO11784/85 demod (aka animal tag) BIPHASE, inverted, rf/32, with preamble of 00000000001 (128bits) @@ -187,9 +203,7 @@ static int CmdFDXBdemodBI(const char *Cmd) { //see ASKDemod for what args are accepted //almost the same demod as cmddata.c/CmdFDXBdemodBI -static int CmdFdxDemod(const char *Cmd) { - (void)Cmd; // Cmd is not used so far - +int demodFDX(void) { //Differential Biphase / di-phase (inverted biphase) //get binary from ask wave if (ASKbiphaseDemod("0 32 1 100", false) != PM3_SUCCESS) { @@ -234,8 +248,8 @@ static int CmdFdxDemod(const char *Cmd) { num_to_bytes(rawid, 8, raw); PrintAndLogEx(SUCCESS, "\nFDX-B / ISO 11784/5 Animal Tag ID Found: Raw : %s", sprint_hex(raw, 8)); - PrintAndLogEx(SUCCESS, "Animal ID %04u-%012" PRIu64, countryCode, NationalCode); - PrintAndLogEx(SUCCESS, "National Code %012" PRIu64 " (0x%" PRIx64 ")", NationalCode, NationalCode); + PrintAndLogEx(SUCCESS, "Animal ID " _GREEN_("%04u-%012"PRIu64), countryCode, NationalCode); + PrintAndLogEx(SUCCESS, "National Code " _GREEN_("%012" PRIu64) " (0x%" PRIx64 ")", NationalCode, NationalCode); PrintAndLogEx(SUCCESS, "Country Code %04u", countryCode); PrintAndLogEx(SUCCESS, "Reserved/RFU %u (0x04%X)", reservedCode, reservedCode); PrintAndLogEx(SUCCESS, "Animal Tag %s", animalBit ? _YELLOW_("True") : "False"); @@ -243,7 +257,7 @@ static int CmdFdxDemod(const char *Cmd) { uint8_t c[] = {0, 0}; compute_crc(CRC_11784, raw, sizeof(raw), &c[0], &c[1]); - PrintAndLogEx(SUCCESS, "CRC-16 0x%04X [%s] ", crc, (crc == (c[1] << 8 | c[0])) ? _GREEN_("OK") : _RED_("Fail")); + PrintAndLogEx(SUCCESS, "CRC-16 0x%04X (%s) ", crc, (crc == (c[1] << 8 | c[0])) ? _GREEN_("ok") : _RED_("fail")); if (g_debugMode) { PrintAndLogEx(DEBUG, "Start marker %d; Size %zu", preambleIndex, size); @@ -251,12 +265,30 @@ static int CmdFdxDemod(const char *Cmd) { PrintAndLogEx(DEBUG, "DEBUG bin stream:\n%s", bin); } + uint8_t bt_par = (extended & 0x100) >> 8; + uint8_t bt_temperature = extended & 0xff; + uint8_t bt_calc_parity = (bitcount(bt_temperature) & 0x1) ? 0 : 1; + uint8_t is_bt_temperature = (bt_calc_parity == bt_par) && !(extended & 0xe00) ; + + if (is_bt_temperature) { + float bt_F = 74 + bt_temperature * 0.2; + float bt_C = (bt_F - 32) / 1.8; + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(SUCCESS, "Bio-Thermo detected"); + PrintAndLogEx(INFO, " temperature " _GREEN_("%.1f")" F / " _GREEN_("%.1f") " C", bt_F, bt_C); + } + // set block 0 for later //g_DemodConfig = T55x7_MODULATION_DIPHASE | T55x7_BITRATE_RF_32 | 4 << T55x7_MAXBLOCK_SHIFT; return PM3_SUCCESS; } +static int CmdFdxDemod(const char *Cmd) { + (void)Cmd; // Cmd is not used so far + return demodFDX(); +} + static int CmdFdxRead(const char *Cmd) { lf_read(false, 10000); return CmdFdxDemod(Cmd); @@ -272,9 +304,9 @@ static int CmdFdxClone(const char *Cmd) { countryid = param_get32ex(Cmd, 0, 0, 10); animalid = param_get64ex(Cmd, 1, 0, 10); - extended = param_get32ex(Cmd, 2, 0, 10); + extended = param_get32ex(Cmd, 2, 0, 16); - verify_values(&animalid, &countryid); + verify_values(&animalid, &countryid, &extended); uint8_t *bits = calloc(128, sizeof(uint8_t)); @@ -298,7 +330,7 @@ static int CmdFdxClone(const char *Cmd) { free(bits); - PrintAndLogEx(INFO, "Preparing to clone FDX-B to T55x7 with animal ID: %04u-%"PRIu64, countryid, animalid); + PrintAndLogEx(INFO, "Preparing to clone FDX-B to T55x7 with animal ID: " _GREEN_("%04u-%"PRIu64)" (extended 0x%X)", countryid, animalid, extended); print_blocks(blocks, ARRAYLEN(blocks)); int res = clone_t55xx_tag(blocks, ARRAYLEN(blocks)); @@ -316,11 +348,11 @@ static int CmdFdxSim(const char *Cmd) { countryid = param_get32ex(Cmd, 0, 0, 10); animalid = param_get64ex(Cmd, 1, 0, 10); - extended = param_get32ex(Cmd, 2, 0, 10); + extended = param_get32ex(Cmd, 2, 0, 16); - verify_values(&animalid, &countryid); + verify_values(&animalid, &countryid, &extended); - PrintAndLogEx(SUCCESS, "Simulating FDX-B animal ID: %04u-%"PRIu64, countryid, animalid); + PrintAndLogEx(SUCCESS, "Simulating FDX-B animal ID: " _GREEN_("%04u-%"PRIu64)" (extended 0x%X)", countryid, animalid, extended); //getFDXBits(uint64_t national_id, uint16_t country, uint8_t isanimal, uint8_t isextended, uint32_t extended, uint8_t *bits) uint8_t *bits = calloc(128, sizeof(uint8_t)); @@ -389,10 +421,6 @@ int detectFDXB(uint8_t *dest, size_t *size) { return (int)startIdx; } -int demodFDX(void) { - return CmdFdxDemod(""); -} - int getFDXBits(uint64_t national_id, uint16_t country, uint8_t is_animal, uint8_t is_extended, uint32_t extended, uint8_t *bits) { // add preamble ten 0x00 and one 0x01 diff --git a/traces/lf_fdx_biothermo.pm3 b/traces/lf_fdx_biothermo.pm3 new file mode 100644 index 000000000..77f390f2f --- /dev/null +++ b/traces/lf_fdx_biothermo.pm3 @@ -0,0 +1,10000 @@ +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-120 +-111 +-104 +-98 +-91 +-84 +-77 +-71 +-67 +-63 +106 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +120 +110 +102 +94 +89 +84 +77 +70 +-14 +-113 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-122 +-115 +-108 +-100 +-92 +-84 +-79 +-75 +95 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +125 +116 +108 +102 +95 +87 +80 +75 +71 +-13 +-114 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-121 +-114 +-107 +-99 +-91 +-86 +-81 +-75 +96 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +125 +118 +109 +101 +93 +87 +82 +75 +69 +-15 +-114 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-123 +-115 +-108 +-100 +-91 +-84 +-79 +-75 +95 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +115 +-1 +-108 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-9 +112 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +81 +-30 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-18 +105 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +119 +112 +104 +96 +88 +82 +77 +73 +66 +61 +56 +-26 +-126 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-59 +67 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +64 +-47 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-26 +97 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-23 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +76 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-19 +105 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-23 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-122 +-112 +-104 +-98 +-92 +-85 +-78 +-74 +-69 +-64 +107 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +117 +109 +102 +96 +89 +81 +75 +70 +-13 +-114 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-55 +69 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +67 +-44 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-24 +98 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-23 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +76 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-120 +-110 +-103 +-97 +-91 +-84 +-77 +-71 +-68 +-64 +106 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +4 +-103 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-9 +114 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +83 +-29 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +119 +110 +103 +97 +90 +83 +76 +72 +68 +63 +57 +-27 +-126 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-125 +-117 +-109 +-102 +-93 +-86 +-81 +-76 +94 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +120 +110 +101 +94 +88 +80 +74 +69 +-14 +-115 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-58 +67 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +68 +-43 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-124 +-114 +-105 +-99 +-93 +-86 +-79 +-74 +-70 +-65 +105 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +119 +5 +-103 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-10 +113 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +83 +-30 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +105 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +80 +-32 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +112 +104 +96 +88 +82 +78 +72 +66 +61 +58 +-25 +-125 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-125 +-117 +-109 +-101 +-93 +-86 +-81 +-76 +95 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +117 +108 +101 +94 +86 +80 +75 +69 +-16 +-115 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-59 +68 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +70 +-41 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-122 +-114 +-107 +-99 +-91 +-84 +-79 +-75 +-70 +-64 +107 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +4 +-104 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-10 +113 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +123 +113 +105 +98 +93 +86 +79 +73 +67 +64 +59 +-26 +-125 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-61 +66 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +66 +-44 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-123 +-116 +-108 +-99 +-91 +-86 +-80 +-75 +-69 +-63 +106 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +120 +113 +105 +95 +88 +83 +77 +70 +-15 +-114 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-56 +70 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +69 +-40 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-123 +-113 +-105 +-99 +-93 +-86 +-79 +-73 +-69 +-65 +105 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +120 +110 +102 +94 +88 +83 +77 +70 +-15 +-114 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-58 +68 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +69 +-42 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-25 +100 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-23 +100 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-36 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +80 +-32 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-122 +-113 +-103 +-97 +-91 +-85 +-78 +-71 +-66 +-62 +106 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +3 +-105 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-8 +113 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +81 +-30 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-18 +104 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-23 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +110 +103 +96 +88 +82 +77 +72 +66 +61 +57 +-25 +-125 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-60 +68 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +70 +-40 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-24 +98 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +76 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-23 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-23 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +104 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +76 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-120 +-112 +-105 +-98 +-90 +-83 +-78 +-73 +-68 +-62 +106 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +110 +103 +95 +87 +81 +77 +72 +-13 +-115 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-56 +69 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +68 +-41 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-25 +98 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-122 +-113 +-103 +-97 +-91 +-85 +-78 +-72 +-67 +-64 +106 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +3 +-104 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-8 +113 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +122 +112 +104 +98 +90 +83 +77 +73 +67 +62 +58 +-24 +-124 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-117 +-107 +-100 +-94 +-88 +-81 +-74 +95 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +115 +1 +-106 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-12 +112 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +121 +113 +106 +99 +91 +84 +78 +74 +68 +62 +58 +-25 +-124 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-59 +67 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +67 +-42 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-122 +-114 +-105 +-98 +-92 +-86 +-78 +-74 +-70 +-64 +105 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +119 +111 +103 +94 +88 +83 +78 +71 +-15 +-115 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-58 +68 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +67 +-44 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-123 +-115 +-106 +-98 +-92 +-86 +-80 +-72 +-68 +-64 +105 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +119 +110 +101 +94 +89 +84 +77 +70 +-15 +-114 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-57 +70 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +65 +-46 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-121 +-114 +-106 +-99 +-90 +-84 +-79 +-74 +-69 +-63 +106 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +109 +102 +96 +90 +83 +76 +71 +-13 +-112 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-122 +-115 +-108 +-100 +-91 +-85 +-80 +-75 +95 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +113 +-1 +-108 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-9 +113 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +83 +-30 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +104 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-19 +105 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +121 +111 +102 +95 +90 +84 +77 +71 +67 +63 +58 +-27 +-126 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-61 +66 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +67 +-43 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-25 +98 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +76 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +100 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +80 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +100 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-119 +-110 +-104 +-97 +-90 +-82 +-76 +-72 +-68 +-63 +107 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +4 +-103 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-10 +113 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +81 +-32 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-18 +105 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +76 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-23 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-23 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +119 +110 +103 +97 +91 +84 +77 +71 +67 +63 +57 +-27 +-126 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-125 +-117 +-109 +-102 +-93 +-86 +-81 +-76 +94 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +124 +116 +109 +102 +93 +86 +80 +76 +70 +-15 +-116 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-123 +-114 +-106 +-100 +-94 +-86 +-79 +-73 +95 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +115 +0 +-107 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-11 +112 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +80 +-32 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +110 +103 +97 +90 +83 +76 +71 +67 +62 +57 +-27 +-126 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-125 +-117 +-109 +-101 +-93 +-86 +-81 +-76 +94 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +125 +118 +109 +100 +92 +86 +81 +76 +69 +-16 +-116 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-124 +-115 +-106 +-99 +-93 +-87 +-79 +-74 +94 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +124 +118 +110 +101 +93 +86 +81 +76 +70 +-14 +-115 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-124 +-116 +-108 +-98 +-92 +-87 +-80 +-73 +96 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +124 +116 +108 +102 +94 +86 +79 +75 +71 +-14 +-115 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-56 +69 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +65 +-45 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-23 +99 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +76 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-19 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-32 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-122 +-112 +-103 +-97 +-91 +-85 +-78 +-71 +-67 +-64 +105 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +117 +2 +-104 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-9 +113 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +83 +-29 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-23 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +121 +111 +102 +95 +89 +84 +77 +71 +66 +62 +59 +-25 +-126 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-117 +-107 +-100 +-94 +-88 +-81 +-74 +96 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +115 +1 +-106 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-10 +113 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +81 +-32 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +104 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-19 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-19 +104 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +119 +113 +104 +96 +89 +84 +78 +72 +66 +62 +58 +-26 +-126 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-62 +65 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +66 +-44 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-24 +99 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +76 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-120 +-113 +-105 +-97 +-88 +-83 +-78 +-73 +-66 +-61 +106 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +111 +104 +96 +88 +81 +76 +72 +-12 +-114 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-125 +-116 +-107 +-98 +-91 +-86 +-80 +-74 +97 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +116 +2 +-106 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-11 +112 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +120 +113 +106 +98 +90 +84 +79 +73 +67 +62 +59 +-24 +-123 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-59 +65 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +67 +-43 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-26 +98 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-120 +-113 +-105 +-97 +-89 +-83 +-78 +-73 +-67 +-61 +108 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +110 +104 +96 +89 +81 +76 +72 +-12 +-113 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-124 +-115 +-106 +-98 +-92 +-86 +-80 +-74 +97 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +116 +2 +-106 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-11 +111 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +123 +114 +105 +97 +91 +86 +80 +73 +67 +63 +60 +-24 +-125 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-60 +65 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +66 +-44 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-125 +-115 +-106 +-98 +-90 +-83 +-76 +-72 +-68 +-63 +106 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +2 +-105 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-8 +113 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +122 +115 +107 +99 +91 +84 +79 +75 +69 +63 +58 +-24 +-124 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-126 +-118 +-108 +-99 +-93 +-87 +-81 +-76 +96 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +113 +-1 +-108 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-11 +112 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +122 +112 +104 +98 +92 +86 +78 +72 +67 +63 +58 +-27 +-126 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-123 +-115 +-108 +-100 +-93 +-88 +-82 +-75 +94 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +113 +-1 +-108 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-10 +111 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +82 +-30 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-19 +104 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +104 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +76 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +105 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +76 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +76 +-36 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +119 +110 +102 +97 +89 +82 +76 +72 +66 +61 +57 +-26 +-126 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-60 +65 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +67 +-44 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-26 +98 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +100 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +100 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-119 +-111 +-104 +-97 +-89 +-82 +-76 +-72 +-67 +-62 +108 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +119 +4 +-104 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-10 +114 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +80 +-32 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-19 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-19 +104 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +104 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +120 +111 +102 +95 +89 +84 +77 +71 +66 +63 +58 +-27 +-126 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-124 +-116 +-109 +-102 +-95 +-87 +-80 +-75 +93 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +113 +-2 +-109 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-9 +114 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-32 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +110 +104 +95 +87 +82 +77 +71 +65 +61 +58 +-26 +-126 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-62 +64 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +67 +-44 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-124 +-114 +-105 +-98 +-92 +-86 +-79 +-72 +-67 +-64 +105 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +110 +104 +96 +88 +81 +76 +72 +-13 +-114 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-56 +69 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +66 +-44 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-124 +-115 +-106 +-98 +-91 +-86 +-80 +-74 +-67 +-63 +105 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +120 +5 +-102 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-10 +113 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +122 +113 +105 +98 +92 +84 +78 +73 +69 +64 +58 +-26 +-124 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-124 +-116 +-109 +-101 +-92 +-86 +-81 +-76 +94 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +114 +1 +-106 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-11 +112 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +121 +114 +106 +97 +90 +86 +80 +73 +68 +65 +60 +-25 +-124 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-124 +-117 +-109 +-101 +-93 +-86 +-80 +-76 +93 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +115 +1 +-106 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-10 +111 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +120 +113 +106 +98 +90 +84 +78 +74 +69 +63 +58 +-25 +-124 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-126 +-117 +-108 +-99 +-92 +-87 +-81 +-76 +95 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +117 +107 +101 +93 +86 +80 +75 +69 +-16 +-115 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-57 +70 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +66 +-44 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-26 +97 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-32 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-18 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +75 +-37 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +80 +-32 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-120 +-112 +-106 +-98 +-90 +-83 +-77 +-73 +-68 +-62 +107 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +120 +5 +-103 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-8 +114 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +80 +-32 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +80 +-31 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +76 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-19 +105 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-33 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +76 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +100 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-32 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +120 +111 +104 +96 +88 +82 +77 +72 +66 +61 +57 +-26 +-126 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-61 +64 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +67 +-44 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-25 +100 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-32 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-32 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-120 +-111 +-104 +-99 +-92 +-85 +-79 +-75 +-69 +-63 +105 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +120 +110 +101 +94 +88 +83 +77 +70 +-15 +-115 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-122 +-114 +-107 +-100 +-91 +-84 +-78 +-74 +95 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +108 +100 +94 +87 +80 +74 +70 +-14 +-115 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-56 +68 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +68 +-43 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-26 +99 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-120 +-111 +-104 +-98 +-91 +-83 +-76 +-71 +-67 +-63 +107 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +109 +101 +94 +89 +82 +75 +70 +-13 +-113 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-125 +-116 +-107 +-99 +-91 +-85 +-80 +-75 +96 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +125 +117 +110 +101 +93 +86 +81 +76 +70 +-15 +-114 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-122 +-114 +-107 +-100 +-92 +-84 +-78 +-74 +95 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +125 +115 +106 +100 +94 +87 +80 +74 +69 +-14 +-114 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-124 +-116 +-107 +-98 +-91 +-86 +-80 +-75 +96 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +114 +0 +-107 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-11 +111 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +82 +-30 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +104 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +80 +-32 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +79 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +102 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +119 +111 +103 +97 +90 +83 +77 +72 +68 +64 +58 +-26 +-125 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-61 +66 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +65 +-46 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-25 +100 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-32 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-23 +100 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +76 +-36 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-19 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +80 +-32 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-120 +-111 +-104 +-98 +-91 +-84 +-76 +-71 +-67 +-63 +106 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +119 +111 +102 +94 +88 +82 +78 +71 +-15 +-115 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-57 +68 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +67 +-44 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-24 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-121 +-112 +-103 +-96 +-90 +-85 +-79 +-72 +-66 +-62 +106 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +3 +-105 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-7 +114 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +81 +-31 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-18 +104 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +119 +111 +103 +98 +90 +83 +76 +71 +67 +63 +57 +-27 +-126 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-124 +-117 +-109 +-102 +-93 +-86 +-81 +-76 +93 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +125 +118 +109 +100 +92 +86 +81 +76 +69 +-15 +-116 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-59 +67 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +70 +-41 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-123 +-113 +-104 +-98 +-92 +-85 +-78 +-72 +-68 +-64 +105 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +4 +-103 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-6 +117 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +81 +-30 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +104 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +77 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-20 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +118 +109 +102 +96 +89 +82 +75 +72 +67 +61 +56 +-27 +-125 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-125 +-117 +-109 +-101 +-92 +-85 +-80 +-76 +94 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +124 +115 +107 +101 +94 +87 +80 +75 +70 +-13 +-114 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-56 +68 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +66 +-43 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-123 +-115 +-108 +-100 +-91 +-86 +-81 +-75 +-68 +-64 +104 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +117 +2 +-106 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-8 +115 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +121 +113 +106 +99 +91 +84 +78 +74 +69 +64 +58 +-26 +-124 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-61 +66 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +66 +-44 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-124 +-114 +-106 +-100 +-93 +-85 +-79 +-74 +-69 +-64 +106 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +117 +109 +103 +96 +89 +81 +76 +71 +-12 +-114 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-56 +69 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +69 +-41 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-124 +-115 +-105 +-97 +-91 +-86 +-80 +-73 +-67 +-63 +104 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +117 +109 +103 +95 +88 +81 +76 +72 +-13 +-114 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-55 +69 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +68 +-42 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-25 +99 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +78 +-34 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +103 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +76 +-35 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-21 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +126 +76 +-36 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-127 +-22 +101 +126 +126 +126 +126 +126 +126 +126 +126 +126 From bf5604808dbce0829f125f1e2ed135a3d0acc90c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 20 May 2020 11:13:46 +0200 Subject: [PATCH 069/527] add regression test for biothermo --- pm3test.sh | 28 +++++++++++++++------------- 1 file changed, 15 insertions(+), 13 deletions(-) diff --git a/pm3test.sh b/pm3test.sh index 27a7619b8..3bd7ae3a8 100755 --- a/pm3test.sh +++ b/pm3test.sh @@ -116,19 +116,21 @@ while true; do if ! CheckExecute "trace load/list x" "$PM3BIN -c 'trace load traces/hf_mfu.trace; trace list x 1;'" "0.0101840425"; then break; fi echo -e "\n${C_BLUE}Testing LF:${C_NC}" - if ! CheckExecute "lf EM4x05 test" "$PM3BIN -c 'data load traces/em4x05.pm3;lf search 1'" "FDX-B ID found"; then break; fi - if ! CheckExecute "lf EM410x test" "$PM3BIN -c 'data load traces/EM4102-1.pm3;lf search 1'" "EM410x ID found"; then break; fi - if ! CheckExecute "lf VISA2000 test" "$PM3BIN -c 'data load traces/visa2000.pm3;lf search 1'" "Visa2000 ID found"; then break; fi - if ! CheckExecute "lf AWID test" "$PM3BIN -c 'data load traces/AWID-15-259.pm3;lf search 1'" "AWID ID found"; then break; fi - if ! CheckExecute "lf SECURAKEY test" "$PM3BIN -c 'data load traces/securakey-64169.pm3;lf search 1 '" "Securakey ID found"; then break; fi - if ! CheckExecute "lf NEXWATCH test" "$PM3BIN -c 'data load traces/quadrakey-521512301.pm3;lf search 1 '" "NexWatch ID found"; then break; fi - if ! CheckExecute "lf KERI test" "$PM3BIN -c 'data load traces/keri.pm3;lf search 1'" "Pyramid ID found"; then break; fi - if ! CheckExecute "lf HID Prox test" "$PM3BIN -c 'data load traces/hid-proxCardII-05512-11432784-1.pm3;lf search 1'" "HID Prox ID found"; then break; fi - if ! CheckExecute "lf PARADOX test" "$PM3BIN -c 'data load traces/Paradox-96_40426-APJN08.pm3;lf search 1'" "Paradox ID found"; then break; fi - if ! CheckExecute "lf PAC test" "$PM3BIN -c 'data load traces/pac-8E4C058E.pm3;lf search 1'" "PAC/Stanley ID found"; then break; fi - if ! CheckExecute "lf VIKING test" "$PM3BIN -c 'data load traces/Transit999-best.pm3;lf search 1'" "Viking ID found"; then break; fi - if ! CheckExecute "lf FDX-B test" "$PM3BIN -c 'data load traces/homeagain1600.pm3;lf search 1'" "FDX-B ID found"; then break; fi - if ! CheckExecute "lf INDALA test" "$PM3BIN -c 'data load traces/indala-504278295.pm3;lf search 1'" "Indala ID found"; then break; fi + if ! CheckExecute "lf EM4x05 test" "$PM3BIN -c 'data load traces/em4x05.pm3;lf search 1'" "FDX-B ID found"; then break; fi + if ! CheckExecute "lf EM410x test" "$PM3BIN -c 'data load traces/EM4102-1.pm3;lf search 1'" "EM410x ID found"; then break; fi + if ! CheckExecute "lf VISA2000 test" "$PM3BIN -c 'data load traces/visa2000.pm3;lf search 1'" "Visa2000 ID found"; then break; fi + if ! CheckExecute "lf AWID test" "$PM3BIN -c 'data load traces/AWID-15-259.pm3;lf search 1'" "AWID ID found"; then break; fi + if ! CheckExecute "lf SECURAKEY test" "$PM3BIN -c 'data load traces/securakey-64169.pm3;lf search 1 '" "Securakey ID found"; then break; fi + if ! CheckExecute "lf NEXWATCH test" "$PM3BIN -c 'data load traces/quadrakey-521512301.pm3;lf search 1 '" "NexWatch ID found"; then break; fi + if ! CheckExecute "lf KERI test" "$PM3BIN -c 'data load traces/keri.pm3;lf search 1'" "Pyramid ID found"; then break; fi + if ! CheckExecute "lf HID Prox test" "$PM3BIN -c 'data load traces/hid-proxCardII-05512-11432784-1.pm3;lf search 1'" "HID Prox ID found"; then break; fi + if ! CheckExecute "lf PARADOX test" "$PM3BIN -c 'data load traces/Paradox-96_40426-APJN08.pm3;lf search 1'" "Paradox ID found"; then break; fi + if ! CheckExecute "lf PAC test" "$PM3BIN -c 'data load traces/pac-8E4C058E.pm3;lf search 1'" "PAC/Stanley ID found"; then break; fi + if ! CheckExecute "lf VIKING test" "$PM3BIN -c 'data load traces/Transit999-best.pm3;lf search 1'" "Viking ID found"; then break; fi + if ! CheckExecute "lf FDX-B test" "$PM3BIN -c 'data load traces/homeagain1600.pm3;lf search 1'" "FDX-B ID found"; then break; fi + if ! CheckExecute "lf INDALA test" "$PM3BIN -c 'data load traces/indala-504278295.pm3;lf search 1'" "Indala ID found"; then break; fi + if ! CheckExecute "lf FDX/BioThermo test" "$PM3BIN -c 'data load traces/lf_fdx_biothermo.pm3; lf fdx demo'" "95.2 F / 35.1 C"; then break; fi + echo -e "\n${C_BLUE}Testing HF:${C_NC}" if ! CheckExecute "hf mf offline text" "$PM3BIN -c 'hf mf'" "at_enc"; then break; fi From a31c20753f7d33980860dfd799b659f5854d622a Mon Sep 17 00:00:00 2001 From: Iceman Date: Wed, 20 May 2020 11:19:50 +0200 Subject: [PATCH 070/527] Update README.md --- README.md | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 261d65e0b..8222032f2 100644 --- a/README.md +++ b/README.md @@ -61,6 +61,7 @@ This repo compiles nicely on - Windows/mingw environment with Qt5.6.1 & GCC 4.9 - Ubuntu 1604 -> 2004 - ParrotOS, Gentoo, Pentoo, Kali, Nethunter, Archlinux, Fedora, Debian + - Rasbian - Android / Termux - Mac OS X / Homebrew - WSL, WSL2 (Windows subsystem linux) on Windows 10 @@ -70,8 +71,8 @@ This repo compiles nicely on Hardware to run client on - PC - - Andriod - - Rasbian Pi + - Android + - Raspberry Pi & Raspberry Pi Zero - Jetson Nano ## Roadmap From 56bde131109e3aa228127febb78158fefd78971f Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 20 May 2020 14:15:35 +0200 Subject: [PATCH 071/527] format string --- client/src/cmdhfmfdes.c | 6 +++--- client/src/cmdhfmfp.c | 2 +- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index 7dd07655b..c8bf75424 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -4002,21 +4002,21 @@ static int CmdHF14aDesChk(const char *Cmd) { PrintAndLogEx(ERR, "Aes key list is empty. Nothing to check."); return PM3_EINVARG; } else { - PrintAndLogEx(INFO, "Loaded " _YELLOW_("%zu") " aes keys", aeskeyListLen); + PrintAndLogEx(INFO, "Loaded " _YELLOW_("%"PRIu32) " aes keys", aeskeyListLen); } if (deskeyListLen == 0) { PrintAndLogEx(ERR, "Des key list is empty. Nothing to check."); return PM3_EINVARG; } else { - PrintAndLogEx(INFO, "Loaded " _YELLOW_("%zu") " des keys", deskeyListLen); + PrintAndLogEx(INFO, "Loaded " _YELLOW_("%"PRIu32) " des keys", deskeyListLen); } if (k3kkeyListLen == 0) { PrintAndLogEx(ERR, "K3k key list is empty. Nothing to check."); return PM3_EINVARG; } else { - PrintAndLogEx(INFO, "Loaded " _YELLOW_("%zu") " k3kdes keys", k3kkeyListLen); + PrintAndLogEx(INFO, "Loaded " _YELLOW_("%"PRIu32) " k3kdes keys", k3kkeyListLen); } if (!verbose) diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 27c606203..b3c8e5c22 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1191,7 +1191,7 @@ static int CmdHFMFPChk(const char *Cmd) { PrintAndLogEx(ERR, "Key list is empty. Nothing to check."); return PM3_EINVARG; } else { - PrintAndLogEx(INFO, "Loaded " _YELLOW_("%zu") " keys", keyListLen); + PrintAndLogEx(INFO, "Loaded " _YELLOW_("%"PRIu32) " keys", keyListLen); } if (!verbose) From 8792314609fd1d71b83e4caf54f0de47afba0ba2 Mon Sep 17 00:00:00 2001 From: FlUxIUS Date: Wed, 20 May 2020 15:59:06 +0200 Subject: [PATCH 072/527] Oyster MDES trace --- traces/hf_mdes_oyster_reader.trace | Bin 0 -> 203 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 traces/hf_mdes_oyster_reader.trace diff --git a/traces/hf_mdes_oyster_reader.trace b/traces/hf_mdes_oyster_reader.trace new file mode 100644 index 0000000000000000000000000000000000000000..ef42bf4d69272fcb8036143a982663bc945f5fdc GIT binary patch literal 203 zcmWHPW?*>0%*YVLaM29L3Jij=F6P2mft@f`>qG_y2TrC27v=*OmoP9a;ACQ$tkBT9 ziGhJZoVB5YrB_9D!^K)g1_ez{hRFqBe%7wF46Lge84mC=H>lh&dvI|dBUs;5g@)EM zj9`66>edbG94@|t=$l#q=AZg9k%3i)iGhKSxk2Gifx|^ZCWZw`IA8z( literal 0 HcmV?d00001 From f79df08f26a6afd04f17a96341c9b3a67f4516ae Mon Sep 17 00:00:00 2001 From: FlUxIUS Date: Wed, 20 May 2020 16:09:05 +0200 Subject: [PATCH 073/527] Adding HF 15 traces --- traces/hf_15_reader.trace | Bin 0 -> 36 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 traces/hf_15_reader.trace diff --git a/traces/hf_15_reader.trace b/traces/hf_15_reader.trace new file mode 100644 index 0000000000000000000000000000000000000000..e3ea16c2b2bbc2d2e5b2ccb115b9873efc33fce5 GIT binary patch literal 36 rcmXreWMC-ZWo1xfWcbF#u)&Ohfq{Xifq}6(q0(+f1N(z3#taMqcbf Date: Wed, 20 May 2020 18:28:10 +0200 Subject: [PATCH 074/527] fix: matty_run eloadcard --- armsrc/Standalone/hf_mattyrun.c | 266 +++++++++++++++++++++++--------- 1 file changed, 189 insertions(+), 77 deletions(-) diff --git a/armsrc/Standalone/hf_mattyrun.c b/armsrc/Standalone/hf_mattyrun.c index 1ffa321a3..e6e099d7c 100644 --- a/armsrc/Standalone/hf_mattyrun.c +++ b/armsrc/Standalone/hf_mattyrun.c @@ -53,15 +53,12 @@ static uint8_t uid[10]; static uint32_t cuid; static iso14a_card_select_t p_card; -/* - Pseudo-configuration block. -*/ +// Pseudo-configuration block. static bool printKeys = false; // Prints keys static bool transferToEml = true; // Transfer keys to emulator memory static bool ecfill = true; // Fill emulator memory with cards content. static bool simulation = true; // Simulates an exact copy of the target tag static bool fillFromEmulator = false; // Dump emulator memory. -static uint8_t stKeyBlock = 20; // Set the quantity of keys in the block. //----------------------------------------------------------------------------- // Matt's StandAlone mod. @@ -179,7 +176,8 @@ static int saMifareCSetBlock(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_ /* the chk function is a piwi’ed(tm) check that will try all keys for a particular sector. also no tracing no dbg */ -static int saMifareChkKeys(uint8_t blockNo, uint8_t keyType, bool clearTrace, uint8_t keyCount, uint8_t *datain, uint64_t *key) { +static int saMifareChkKeys(uint8_t blockNo, uint8_t keyType, bool clearTrace, + uint8_t keyCount, uint8_t *datain, uint64_t *key) { DBGLEVEL = DBG_NONE; iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); set_tracing(false); @@ -188,13 +186,15 @@ static int saMifareChkKeys(uint8_t blockNo, uint8_t keyType, bool clearTrace, ui struct Crypto1State *pcs; pcs = &mpcs; - for (int i = 0; i < keyCount; ++i) { + int retval = -1; + + for (uint8_t i = 0; i < keyCount; i++) { /* no need for anticollision. just verify tag is still here */ // if (!iso14443a_fast_select_card(cjuid, 0)) { if (!iso14443a_select_card(uid, &p_card, &cuid, true, 0, true)) { DbprintfEx(FLAG_NEWLINE, "FATAL : E_MF_LOSTTAG"); - return -1; + break; } uint64_t ui64Key = bytes_to_num(datain + i * 6, 6); @@ -205,45 +205,111 @@ static int saMifareChkKeys(uint8_t blockNo, uint8_t keyType, bool clearTrace, ui SpinDelayUs(AUTHENTICATION_TIMEOUT); continue; } - crypto1_deinit(pcs); - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); *key = ui64Key; - return i; + retval = i; + break; } crypto1_deinit(pcs); FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - - return -1; + return retval; } +/* Abusive microgain on original MifareECardLoad : + * - *datain used as error return + * - tracing is falsed + */ +static int saMifareECardLoad(uint32_t numofsectors, uint8_t keytype) { + DBGLEVEL = DBG_NONE; + + uint8_t numSectors = numofsectors; + uint8_t keyType = keytype; + + struct Crypto1State mpcs = {0, 0}; + struct Crypto1State *pcs; + pcs = &mpcs; + + uint8_t dataoutbuf[16]; + uint8_t dataoutbuf2[16]; + + iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); + clear_trace(); + set_tracing(false); + + int retval = PM3_SUCCESS; + + if (!iso14443a_select_card(uid, &p_card, &cuid, true, 0, true)) { + retval = PM3_ESOFT; + DbprintfEx(FLAG_RAWPRINT, "Can't select card"); + goto out; + } + + for (uint8_t s = 0; s < numSectors; s++) { + uint64_t ui64Key = emlGetKey(s, keyType); + if (s == 0) { + if (mifare_classic_auth(pcs, cuid, FirstBlockOfSector(s), keyType, ui64Key, AUTH_FIRST)) { + retval = PM3_ESOFT; + break; + } + } else { + if (mifare_classic_auth(pcs, cuid, FirstBlockOfSector(s), keyType, ui64Key, AUTH_NESTED)) { + retval = PM3_ESOFT; + break; + } + } + + // failure to read one block, skips to next sector. + for (uint8_t blockNo = 0; blockNo < NumBlocksPerSector(s); blockNo++) { + if (mifare_classic_readblock(pcs, cuid, FirstBlockOfSector(s) + blockNo, dataoutbuf)) { + retval = PM3_ESOFT; + break; + }; + + if (blockNo < NumBlocksPerSector(s) - 1) { + emlSetMem(dataoutbuf, FirstBlockOfSector(s) + blockNo, 1); + } else { + // sector trailer, keep the keys, set only the AC + emlGetMem(dataoutbuf2, FirstBlockOfSector(s) + blockNo, 1); + memcpy(&dataoutbuf2[6], &dataoutbuf[6], 4); + emlSetMem(dataoutbuf2, FirstBlockOfSector(s) + blockNo, 1); + } + } + } + + int res = mifare_classic_halt(pcs, cuid); + (void)res; + +out: + crypto1_deinit(pcs); + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + return retval; +} + + void ModInfo(void) { DbpString(" HF Mifare sniff/clone - aka MattyRun (Matías A. Ré Medina)"); } +/* + It will check if the keys from the attacked tag are a subset from + the hardcoded set of keys inside of the ARM. If this is the case + then it will load the keys into the emulator memory and also the + content of the victim tag, to finally simulate it. + + Alternatively, it can be dumped into a blank card. + + This source code has been tested only in Mifare 1k. + + If you're using the proxmark connected to a device that has an OS, and you're not using the proxmark3 client to see the debug + messages, you MUST uncomment usb_disable(). +*/ void RunMod(void) { StandAloneMode(); - Dbprintf(">> Matty mifare chk/dump/sim a.k.a MattyRun Started <<"); FpgaDownloadAndGo(FPGA_BITSTREAM_HF); - - /* - It will check if the keys from the attacked tag are a subset from - the hardcoded set of keys inside of the ARM. If this is the case - then it will load the keys into the emulator memory and also the - content of the victim tag, to finally simulate it. - - Alternatively, it can be dumped into a blank card. - - This source code has been tested only in Mifare 1k. - - If you're using the proxmark connected to a device that has an OS, and you're not using the proxmark3 client to see the debug - messages, you MUST uncomment usb_disable(). - */ + Dbprintf(">> Matty mifare chk/dump/sim a.k.a MattyRun Started <<"); // Comment this line below if you want to see debug messages. // usb_disable(); - - uint16_t mifare_size = 1024; // Mifare 1k (only 1k supported for now) uint8_t sectorSize = 64; // 1k's sector size is 64 bytes. uint8_t blockNo = 3; // Security block is number 3 for each sector. @@ -252,9 +318,7 @@ void RunMod(void) { uint8_t *keyBlock; // Where the keys will be held in memory. bool keyFound = false; - /* - Set of keys to be used. - */ + // Set of keys to be used. uint64_t mfKeys[] = { 0xffffffffffff, // Default key 0x000000000000, // Blank key @@ -269,22 +333,73 @@ void RunMod(void) { 0xa0478cc39091, 0x533cb6c723f6, 0x8fd0a4f256e9, + 0x484558414354, // INFINEONON A / 0F SEC B / INTRATONE / HEXACT... + 0x414c41524f4e, // ALARON NORALSY + 0x424c41524f4e, // BLARON NORALSY + 0x4a6352684677, // COMELIT A General Key / 08 [2] 004 + 0x536653644c65, // COMELIT B General Key / 08 [2] 004 + 0x8829da9daf76, // URMET CAPTIV IF A => ALL A/B / BTICINO + 0x314B49474956, // "1KIGIV" VIGIK'S SERVICE BADGE A KEY + 0x021209197591, // BTCINO UNDETERMINED SPREAKD 0x01->0x13 key + 0x010203040506, // VIGIK's B Derivative + 0xa22ae129c013, // INFINEON B 00 + 0x49fae4e3849f, // INFINEON B 01 + 0x38fcf33072e0, // INFINEON B 02 + 0x8ad5517b4b18, // INFINEON B 03 + 0x509359f131b1, // INFINEON B 04 + 0x6c78928e1317, // INFINEON B 05 + 0xaa0720018738, // INFINEON B 06 + 0xa6cac2886412, // INFINEON B 07 + 0x62d0c424ed8e, // INFINEON B 08 + 0xe64a986a5d94, // INFINEON B 09 + 0x8fa1d601d0a2, // INFINEON B 0A + 0x89347350bd36, // INFINEON B 0B + 0x66d2b7dc39ef, // INFINEON B 0C + 0x6bc1e1ae547d, // INFINEON B 0D + 0x22729a9bd40f, // INFINEON B 0E + 0xd2ece8b9395e, // lib / Nat Bieb + 0x1494E81663D7, // # NSCP default key + 0x569369c5a0e5, // # kiev + 0x632193be1c3c, // # kiev + 0x644672bd4afe, // # kiev + 0x8fe644038790, // # kiev + 0x9de89e070277, // # kiev + 0xb5ff67cba951, // # kiev / ov-chipkaart + 0xeff603e1efe9, // # kiev + 0xf14ee7cae863, // # kiev + 0xfc00018778f7, // # Västtrafiken KeyA, RKF ÖstgötaTrafiken KeyA + 0x0297927c0f77, // # Västtrafiken KeyA + 0x54726176656c, // # Västtrafiken KeyA + 0x00000ffe2488, // # Västtrafiken KeyB + 0x776974687573, // # Västtrafiken KeyB + 0xee0042f88840, // # Västtrafiken KeyB + 0x26940b21ff5d, // # RKF SLKeyA + 0xa64598a77478, // # RKF SLKeyA + 0x5c598c9c58b5, // # RKF SLKeyB + 0xe4d2770a89be, // # RKF SLKeyB + 0x722bfcc5375f, // # RKF RejskortDanmark KeyA + 0xf1d83f964314, // # RKF RejskortDanmark KeyB + 0x505249564141, // # RKF JOJOPRIVAKeyA + 0x505249564142, // # RKF JOJOPRIVAKeyB + 0x47524f555041, // # RKF JOJOGROUPKeyA + 0x47524f555042, // # RKF JOJOGROUPKeyB + 0x434f4d4d4f41, // # RKF JOJOGROUPKeyA + 0x434f4d4d4f42, // # RKF JOJOGROUPKeyB + 0x4b0b20107ccb, // # TNP3xxx }; /* This part allocates the byte representation of the keys in keyBlock's memory space . */ - keyBlock = BigBuf_malloc(stKeyBlock * 6); + keyBlock = BigBuf_malloc(ARRAYLEN(mfKeys) * 6); int mfKeysCnt = ARRAYLEN(mfKeys); for (int mfKeyCounter = 0; mfKeyCounter < mfKeysCnt; mfKeyCounter++) { num_to_bytes(mfKeys[mfKeyCounter], 6, (uint8_t *)(keyBlock + mfKeyCounter * 6)); } - /* - Pretty print of the keys to be checked. - */ + // Pretty print of the keys to be checked. if (printKeys) { Dbprintf("[+] Printing mf keys"); for (uint8_t keycnt = 0; keycnt < mfKeysCnt; keycnt++) @@ -301,18 +416,19 @@ void RunMod(void) { */ bool validKey[2][40]; uint8_t foundKey[2][40][6]; - for (uint16_t t = 0; t < 2; t++) { + for (uint8_t i = 0; i < 2; i++) { for (uint16_t sectorNo = 0; sectorNo < sectorsCnt; sectorNo++) { - validKey[t][sectorNo] = false; - for (uint16_t i = 0; i < 6; i++) { - foundKey[t][sectorNo][i] = 0xff; - } + validKey[i][sectorNo] = false; + foundKey[i][sectorNo][0] = 0xFF; + foundKey[i][sectorNo][1] = 0xFF; + foundKey[i][sectorNo][2] = 0xFF; + foundKey[i][sectorNo][3] = 0xFF; + foundKey[i][sectorNo][4] = 0xFF; + foundKey[i][sectorNo][5] = 0xFF; } } - /* - Iterates through each sector checking if there is a correct key. - */ + // Iterates through each sector checking if there is a correct key. bool err = 0; bool allKeysFound = true; uint32_t size = mfKeysCnt; @@ -324,7 +440,7 @@ void RunMod(void) { int key = saMifareChkKeys(block, type, true, size, &keyBlock[0], &key64); if (key == -1) { LED(LED_RED, 50); - Dbprintf("\t✕ Key not found for this sector!"); + Dbprintf("\t [✕] Key not found for this sector!"); allKeysFound = false; // break; } else if (key == -2) { @@ -334,7 +450,7 @@ void RunMod(void) { num_to_bytes(key64, 6, foundKey[type][sec]); validKey[type][sec] = true; keyFound = true; - Dbprintf("\t✓ Found valid key: [%02x%02x%02x%02x%02x%02x]\n", + Dbprintf("\t [✓] Found valid key: [%02x%02x%02x%02x%02x%02x]\n", (keyBlock + 6 * key)[0], (keyBlock + 6 * key)[1], (keyBlock + 6 * key)[2], (keyBlock + 6 * key)[3], (keyBlock + 6 * key)[4], (keyBlock + 6 * key)[5] ); @@ -371,8 +487,9 @@ void RunMod(void) { emlClearMem(); uint8_t mblock[16]; - for (uint16_t sectorNo = 0; sectorNo < sectorsCnt; sectorNo++) { + for (uint8_t sectorNo = 0; sectorNo < sectorsCnt; sectorNo++) { if (validKey[0][sectorNo] || validKey[1][sectorNo]) { + emlGetMem(mblock, FirstBlockOfSector(sectorNo) + NumBlocksPerSector(sectorNo) - 1, 1); // data, block num, blocks count (max 4) for (uint16_t t = 0; t < 2; t++) { if (validKey[t][sectorNo]) { @@ -382,47 +499,40 @@ void RunMod(void) { emlSetMem(mblock, FirstBlockOfSector(sectorNo) + NumBlocksPerSector(sectorNo) - 1, 1); } } - Dbprintf("\t✓ Found keys have been transferred to the emulator memory."); + + Dbprintf("\t [✓] Found keys have been transferred to the emulator memory."); + if (ecfill) { int filled; Dbprintf("\tFilling in with key A."); - filled = MifareECardLoad(sectorsCnt, 0); + + filled = saMifareECardLoad(sectorsCnt, 0); if (filled != PM3_SUCCESS) { - Dbprintf("\t✕ Failed filling with A."); - } - - Dbprintf("\tFilling in with key B."); - filled = MifareECardLoad(sectorsCnt, 1); - if (filled != PM3_SUCCESS) { - Dbprintf("\t✕ Failed filling with B."); + + Dbprintf("\t [✕] Failed filling with A."); + Dbprintf("\tFilling in with key B."); + filled = saMifareECardLoad(sectorsCnt, 1); + if (filled != PM3_SUCCESS) { + Dbprintf("\t [✕] Failed filling with B."); + } } if ((filled == PM3_SUCCESS) && simulation) { - Dbprintf("\t✓ Emulator memory filled, simulation started."); + Dbprintf("\t [✓] Emulator memory filled, simulation started."); // This will tell the fpga to emulate using previous keys and current target tag content. Dbprintf("\t Press button to abort simulation at anytime."); LED_B_ON(); // green - // assuming arg0==0, use hardcoded uid 0xdeadbeaf - uint16_t simflags; - switch (p_card.uidlen) { - case 10: - simflags = FLAG_10B_UID_IN_DATA; - break; - case 7: - simflags = FLAG_7B_UID_IN_DATA; - break; - default: - simflags = FLAG_4B_UID_IN_DATA; - break; - } - Mifare1ksim(simflags | FLAG_MF_1K, 0, uid, 0, 0); - LED_B_OFF(); - /* - Needs further testing. - */ + uint16_t simflags = FLAG_UID_IN_EMUL | FLAG_MF_1K; + + SpinOff(1000); + Mifare1ksim(simflags, 0, uid, 0, 0); + LED_B_OFF(); + Dbprintf("\t [✓] Simulation ended"); + + // Needs further testing. if (fillFromEmulator) { uint8_t retry = 5; Dbprintf("\t Trying to dump into blank card."); @@ -457,8 +567,10 @@ void RunMod(void) { } } - } else if (filled != PM3_SUCCESS) { - Dbprintf("\t✕ Emulator memory could not be filled due to errors."); + } + + if (filled != PM3_SUCCESS) { + Dbprintf("\t [✕] Emulator memory could not be filled due to errors."); LED_C_ON(); } } From 30be05ec3f0269fb45ad8d5e400a6887704d97e8 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 20 May 2020 18:28:43 +0200 Subject: [PATCH 075/527] chg: removed debugstatements, the code doesnt use them --- armsrc/Standalone/hf_colin.c | 125 +++++++++++++---------------------- 1 file changed, 45 insertions(+), 80 deletions(-) diff --git a/armsrc/Standalone/hf_colin.c b/armsrc/Standalone/hf_colin.c index 0656d1186..ba5c21cab 100644 --- a/armsrc/Standalone/hf_colin.c +++ b/armsrc/Standalone/hf_colin.c @@ -232,14 +232,6 @@ static void cjSetCursLeft(void) { static void cjTabulize(void) { DbprintfEx(FLAG_RAWPRINT, "\t\t\t"); } -/* -void cjPrintKey(uint64_t key, uint8_t *foundKey, uint16_t sectorNo, uint8_t type) { - char tosendkey[13]; - sprintf(tosendkey, "%02x%02x%02x%02x%02x%02x", foundKey[0], foundKey[1], foundKey[2], foundKey[3], foundKey[4], -foundKey[5]); cjSetCursRight(); DbprintfEx(FLAG_NEWLINE, "SEC: %02x | KEY : %s | TYP: %d", sectorNo, tosendkey, type); -} -*/ - static char *ReadSchemasFromSPIFFS(char *filename) { SpinOff(0); @@ -292,6 +284,7 @@ static void ReadLastTagFromFlash(void) { // this one will handle filetype (symlink or not) and resolving by itself rdv40_spiffs_read_as_filetype((char *)HFCOLIN_LASTTAG_SYMLINK, (uint8_t *)mem, len, RDV40_SPIFFS_SAFETY_SAFE); + // copy 64blocks (16bytes) starting w block0, to emulator mem. emlSetMem(mem, 0, 64); DbprintfEx(FLAG_NEWLINE, "[OK] Last tag recovered from FLASHMEM set to emulator"); @@ -330,16 +323,22 @@ void WriteTagToFlash(uint32_t uid, size_t size) { return; } -void ModInfo(void) { DbpString(" HF Mifare ultra fast sniff/sim/clone - aka VIGIKPWN (Colin Brigato)"); } +void ModInfo(void) { + DbpString(" HF Mifare ultra fast sniff/sim/clone - aka VIGIKPWN (Colin Brigato)"); +} void RunMod(void) { StandAloneMode(); + FpgaDownloadAndGo(FPGA_BITSTREAM_HF); + Dbprintf(">> HF Mifare ultra fast sniff/sim/clone a.k.a VIGIKPWN Started <<"); + // turn off all debugging. + DBGLEVEL = DBG_NONE; + // add_schema(Schemas, Noralsy, &total_schemas); // add_schema(Schemas, InfiHexact, &total_schemas); // add_schema_from_json_in_spiffs((char *)HFCOLIN_URMETCAPTIVE_JSON); // add_schema(Schemas, UrmetCaptive, &total_schemas); - FpgaDownloadAndGo(FPGA_BITSTREAM_HF); currline = 20; curlline = 20; @@ -386,11 +385,11 @@ void RunMod(void) { ACCBITS : 796788[00]+VALUE */ -//---------------------------- +// ---------------------------- // Set of keys to be used. // This should cover ~98% of // French VIGIK system @2017 -//---------------------------- +// ---------------------------- const uint64_t mfKeys[] = { 0xffffffffffff, // TRANSPORTS @@ -459,7 +458,6 @@ void RunMod(void) { bool err = 0; bool trapped = 0; bool allKeysFound = true; - uint32_t size = mfKeysCnt; // banner: @@ -487,7 +485,7 @@ failtag: SpinOff(50); LED_A_ON(); uint8_t ticker = 0; - // while (!BUTTON_PRESS() && !iso14443a_select_card(cjuid, NULL, &cjcuid, true, 0, true)) + while (!iso14443a_select_card(cjuid, &p_card, &cjcuid, true, 0, true)) { WDT_HIT(); @@ -505,8 +503,8 @@ failtag: } SpinOff(50); - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + vtsend_cursor_position_restore(NULL); DbprintfEx(FLAG_NEWLINE, "\t\t\t%s[ GOT a Tag ! ]%s", _XGREEN_, _XWHITE_); cjSetCursLeft(); @@ -534,7 +532,7 @@ failtag: uint32_t start_time = GetTickCount(); uint32_t delta_time = 0; - //--------------------------------------------------------------------------- + // --------------------------------------------------------------------------- // WE SHOULD FIND A WAY TO GET UID TO AVOID THIS "TESTRUN" // -------------------------------------------------------- // + HERE IS TO BE THOUGHT AS ONLY A KEY SHOULD BE CHECK @@ -544,7 +542,7 @@ failtag: // `-+ THEN FILL EMULATOR WITH B KEEY // `-+ THEN EMULATOR WITH CARD WITH B KEY // `-+ IF IT HAS FAILED OF ANY OF SORT THEN WE ARE MARRON LIKE POMALO. - //---------------------------------------------------------------------------- + // ---------------------------------------------------------------------------- // AN EVEN BETTER IMPLEMENTATION IS TO CHECK EVERY KEY FOR SECTOR 0 KEY A // THEN IF FOUND CHECK THE SAME KEY FOR NEXT SECTOR ONLY KEY A // THEN IF FAIL CHECK EVERY SECTOR A KEY FOR EVERY OTHER KEY BUT NOT THE BLOCK @@ -558,7 +556,7 @@ failtag: // DERIVATION // THEN IF B KEY IS NOT OF THIS SCHEME CHECK EVERY REMAINING B KEYED SECTOR // WITH EVERY REMAINING KEYS, BUT DISCARDING ANY DEFAULT TRANSPORT KEYS. - //----------------------------------------------------------------------------- + // ----------------------------------------------------------------------------- // also we could avoid first UID check for every block // then let's expose this optimal case of well known vigik schemes : @@ -625,7 +623,6 @@ failtag: break; } } - /* etc etc for testing schemes quick schemes */ } } @@ -641,7 +638,7 @@ failtag: return; } - /* Settings keys to emulator */ + // Settings keys to emulator emlClearMem(); uint8_t mblock[16]; for (uint8_t sectorNo = 0; sectorNo < sectorsCnt; sectorNo++) { @@ -655,7 +652,7 @@ failtag: DbprintfEx(FLAG_NEWLINE, "%s>>%s Setting Keys->Emulator MEM...[%sOK%s]", _XYELLOW_, _XWHITE_, _XGREEN_, _XWHITE_); - /* filling TAG to emulator */ + // filling TAG to emulator int filled; cjSetCursLeft(); @@ -666,11 +663,10 @@ failtag: DbprintfEx(FLAG_NEWLINE, "%s>>%s W_FAILURE ! %sTrying fallback B keys....", _XRED_, _XORANGE_, _XWHITE_); - /* no trace, no dbg */ + // no trace, no dbg filled = e_MifareECardLoad(sectorsCnt, 1); if (filled != PM3_SUCCESS) { cjSetCursLeft(); - DbprintfEx(FLAG_NEWLINE, "FATAL:EML_FALLBACKFILL_B"); SpinErr(LED_C, 100, 8); SpinOff(100); @@ -717,10 +713,9 @@ readysim: SpinOff(100); LED_C_ON(); - DBGLEVEL = DBG_NONE; - - //uint16_t flags=0; - /*switch (p_card.uidlen) { + /* + uint16_t flags = 0; + switch (p_card.uidlen) { case 10: flags = FLAG_10B_UID_IN_DATA; break; @@ -733,19 +728,18 @@ readysim: default: flags = FLAG_UID_IN_EMUL; break; - }*/ - + } // Use UID, SAK, ATQA from EMUL, if uid not defined - // if ((flags & (FLAG_4B_UID_IN_DATA | FLAG_7B_UID_IN_DATA | FLAG_10B_UID_IN_DATA)) == 0) { - //flags |= FLAG_UID_IN_EMUL; - //} - //flags |= FLAG_MF_1K; - //if ((flags & (FLAG_4B_UID_IN_DATA | FLAG_7B_UID_IN_DATA | FLAG_10B_UID_IN_DATA)) == 0) { - // flags |= FLAG_UID_IN_EMUL; - //} - //flags = 0x10; - uint16_t flags = 0; - flags = 16; + if ((flags & (FLAG_4B_UID_IN_DATA | FLAG_7B_UID_IN_DATA | FLAG_10B_UID_IN_DATA)) == 0) { + flags |= FLAG_UID_IN_EMUL; + } + flags |= FLAG_MF_1K; + if ((flags & (FLAG_4B_UID_IN_DATA | FLAG_7B_UID_IN_DATA | FLAG_10B_UID_IN_DATA)) == 0) { + flags |= FLAG_UID_IN_EMUL; + } + flags = 0x10; + */ + uint16_t flags = FLAG_UID_IN_EMUL; DbprintfEx(FLAG_NEWLINE, "\n\n\n\n\n\n\n\nn\n\nn\n\n\nflags: %d (0x%02x)", flags, flags); cjSetCursLeft(); SpinOff(1000); @@ -789,8 +783,6 @@ readysim: * - tracing is falsed */ int e_MifareECardLoad(uint32_t numofsectors, uint8_t keytype) { - DBGLEVEL = DBG_NONE; - uint8_t numSectors = numofsectors; uint8_t keyType = keytype; @@ -802,7 +794,6 @@ int e_MifareECardLoad(uint32_t numofsectors, uint8_t keytype) { uint8_t dataoutbuf2[16]; iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); - clear_trace(); set_tracing(false); @@ -810,24 +801,17 @@ int e_MifareECardLoad(uint32_t numofsectors, uint8_t keytype) { if (!iso14443a_select_card(cjuid, &p_card, &cjcuid, true, 0, true)) { isOK = false; - if (DBGLEVEL >= 1) - DbprintfEx(FLAG_RAWPRINT, "Can't select card"); } for (uint8_t s = 0; isOK && s < numSectors; s++) { uint64_t ui64Key = emlGetKey(s, keyType); if (s == 0) { if (isOK && mifare_classic_auth(pcs, cjcuid, FirstBlockOfSector(s), keyType, ui64Key, AUTH_FIRST)) { - - if (DBGLEVEL >= 1) - DbprintfEx(FLAG_NEWLINE, "Sector[%2d]. Auth error", s); break; } } else { if (isOK && mifare_classic_auth(pcs, cjcuid, FirstBlockOfSector(s), keyType, ui64Key, AUTH_NESTED)) { isOK = false; - if (DBGLEVEL >= 1) - DbprintfEx(FLAG_NEWLINE, "Sector[%2d]. Auth nested error", s); break; } } @@ -835,8 +819,6 @@ int e_MifareECardLoad(uint32_t numofsectors, uint8_t keytype) { for (uint8_t blockNo = 0; isOK && blockNo < NumBlocksPerSector(s); blockNo++) { if (isOK && mifare_classic_readblock(pcs, cjcuid, FirstBlockOfSector(s) + blockNo, dataoutbuf)) { isOK = false; - if (DBGLEVEL >= 1) - DbprintfEx(FLAG_NEWLINE, "Error reading sector %2d block %2d", s, blockNo); break; }; if (isOK) { @@ -852,23 +834,18 @@ int e_MifareECardLoad(uint32_t numofsectors, uint8_t keytype) { } } - if (mifare_classic_halt(pcs, cjcuid)) { - if (DBGLEVEL >= 1) - DbprintfEx(FLAG_NEWLINE, "Halt error"); - }; + int res = mifare_classic_halt(pcs, cjcuid); + (void)res; crypto1_deinit(pcs); - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - return (isOK) ? PM3_SUCCESS : PM3_EUNDEF; } /* the chk function is a piwi'ed(tm) check that will try all keys for a particular sector. also no tracing no dbg */ -int cjat91_saMifareChkKeys(uint8_t blockNo, uint8_t keyType, bool clearTrace, uint8_t keyCount, uint8_t *datain, - uint64_t *key) { - DBGLEVEL = DBG_NONE; +int cjat91_saMifareChkKeys(uint8_t blockNo, uint8_t keyType, bool clearTrace, + uint8_t keyCount, uint8_t *datain, uint64_t *key) { iso14443a_setup(FPGA_HF_ISO14443A_READER_LISTEN); set_tracing(false); @@ -876,14 +853,16 @@ int cjat91_saMifareChkKeys(uint8_t blockNo, uint8_t keyType, bool clearTrace, ui struct Crypto1State *pcs; pcs = &mpcs; - for (int i = 0; i < keyCount; ++i) { + int retval = -1; + + for (uint8_t i = 0; i < keyCount; i++) { /* no need for anticollision. just verify tag is still here */ // if (!iso14443a_fast_select_card(cjuid, 0)) { if (!iso14443a_select_card(cjuid, &p_card, &cjcuid, true, 0, true)) { cjSetCursLeft(); DbprintfEx(FLAG_NEWLINE, "%sFATAL%s : E_MF_LOSTTAG", _XRED_, _XWHITE_); - return -1; + break; } uint64_t ui64Key = bytes_to_num(datain + i * 6, 6); @@ -894,15 +873,13 @@ int cjat91_saMifareChkKeys(uint8_t blockNo, uint8_t keyType, bool clearTrace, ui SpinDelayUs(AUTHENTICATION_TIMEOUT); continue; } - crypto1_deinit(pcs); - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); *key = ui64Key; - return i; + retval = i; + break; } crypto1_deinit(pcs); FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - - return -1; + return retval; } void saMifareMakeTag(void) { @@ -920,7 +897,6 @@ void saMifareMakeTag(void) { int flags = 0; for (int blockNum = 0; blockNum < 16 * 4; blockNum++) { uint8_t mblock[16]; - // cnt = 0; emlGetMem(mblock, blockNum, 1); // switch on field and send magic sequence if (blockNum == 0) @@ -935,21 +911,15 @@ void saMifareMakeTag(void) { flags = 0x04 + 0x10; if (saMifareCSetBlock(0, flags & 0xFE, blockNum, mblock)) { - //&& cnt <= retry) { - // cnt++; cjSetCursFRight(); if (currfline > 53) { currfline = 54; } DbprintfEx(FLAG_NEWLINE, "Block :%02x %sOK%s", blockNum, _XGREEN_, _XWHITE_); - // DbprintfEx(FLAG_RAWPRINT,"FATAL:E_MF_CHINESECOOK_NORICE"); - // cfail=1; - // return; continue; } else { cjSetCursLeft(); cjSetCursLeft(); - DbprintfEx(FLAG_NEWLINE, "`--> %sFAIL%s : CHN_FAIL_BLK_%02x_NOK", _XRED_, _XWHITE_, blockNum); cjSetCursFRight(); DbprintfEx(FLAG_NEWLINE, "%s>>>>%s STOP AT %02x", _XRED_, _XWHITE_, blockNum); @@ -957,14 +927,9 @@ void saMifareMakeTag(void) { break; } cjSetCursFRight(); - DbprintfEx(FLAG_NEWLINE, "%s>>>>>>>> END <<<<<<<<%s", _XYELLOW_, _XWHITE_); - // break; - /*if (cfail == 1) { - DbprintfEx(FLAG_RAWPRINT,"FATAL: E_MF_HARA_KIRI_\r\n"); - break; - } */ } + if (cfail == 0) { SpinUp(50); SpinUp(50); From 35886fab91b5fa6a87a1ef2e81badb6bc5cf2fdc Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 20 May 2020 18:30:41 +0200 Subject: [PATCH 076/527] chg: must have a default return value --- armsrc/mifarecmd.c | 11 +++++------ 1 file changed, 5 insertions(+), 6 deletions(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index b98526726..ef1a15864 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -1940,7 +1940,7 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { clear_trace(); set_tracing(true); - int retval; + int retval = PM3_SUCCESS; if (!iso14443a_select_card(uid, NULL, &cuid, true, 0, true)) { retval = PM3_ESOFT; @@ -1952,8 +1952,9 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { uint64_t ui64Key = emlGetKey(sectorNo, keytype); if (sectorNo == 0) { if (mifare_classic_auth(pcs, cuid, FirstBlockOfSector(sectorNo), keytype, ui64Key, AUTH_FIRST)) { + retval = PM3_ESOFT; if (DBGLEVEL > DBG_ERROR) Dbprintf("Sector[%2d]. Auth error", sectorNo); - break; + goto out; } } else { if (mifare_classic_auth(pcs, cuid, FirstBlockOfSector(sectorNo), keytype, ui64Key, AUTH_NESTED)) { @@ -1979,10 +1980,8 @@ int MifareECardLoad(uint8_t sectorcnt, uint8_t keytype) { } } - if (mifare_classic_halt(pcs, cuid)) { - if (DBGLEVEL > DBG_ERROR) - Dbprintf("Halt error"); - } + int res = mifare_classic_halt(pcs, cuid); + (void)res; if (DBGLEVEL >= DBG_INFO) DbpString("Emulator fill sectors finished"); From 15ccb34535b0aa9603124506cf4c4d1ff4dc433b Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Wed, 20 May 2020 13:28:37 +0200 Subject: [PATCH 077/527] Add -Wconversion in EXTRACFLAGS --- Makefile.defs | 1 + client/deps/tinycbor/Makefile | 2 +- common_arm/Makefile.common | 1 + 3 files changed, 3 insertions(+), 1 deletion(-) diff --git a/Makefile.defs b/Makefile.defs index be504caa9..8ad2e319f 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -63,6 +63,7 @@ endif EXTRACFLAGS = EXTRACFLAGS += -Wunused-parameter -Wno-error=unused-parameter EXTRACFLAGS += -Wsign-compare -Wno-error=sign-compare +EXTRACFLAGS += -Wconversion -Wno-error=conversion -Wno-error=sign-conversion -Wno-error=float-conversion # unknown to clang or old gcc: # First we activate Wextra then we explicitly list those we know about diff --git a/client/deps/tinycbor/Makefile b/client/deps/tinycbor/Makefile index 4de65aa7f..b50c1584f 100644 --- a/client/deps/tinycbor/Makefile +++ b/client/deps/tinycbor/Makefile @@ -1,7 +1,7 @@ MYSRCPATHS = MYINCLUDES = # Strange errors on Mingw when compiling with C99 -MYCFLAGS = -Wno-bad-function-cast -Wno-redundant-decls -Wno-incompatible-pointer-types-discards-qualifiers -Wno-discarded-qualifiers -Wno-unknown-warning-option -Wno-maybe-uninitialized +MYCFLAGS = -Wno-bad-function-cast -Wno-redundant-decls -Wno-incompatible-pointer-types-discards-qualifiers -Wno-discarded-qualifiers -Wno-unknown-warning-option -Wno-maybe-uninitialized -Wno-conversion MYDEFS = MYSRCS = \ cborencoder.c \ diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index 81f2b0131..8b5836e73 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -61,6 +61,7 @@ EXTRACFLAGS += -Wunused-parameter -Wno-error=unused-parameter EXTRACFLAGS += -Wswitch-enum -Wno-error=switch-enum EXTRACFLAGS += -Wsign-compare -Wno-error=sign-compare EXTRACFLAGS += -Wold-style-definition -Wno-error=old-style-definition +EXTRACFLAGS += -Wconversion -Wno-error=conversion -Wno-error=sign-conversion -Wno-error=float-conversion # unknown to clang or old gcc: # First we activate Wextra then we explicitly list those we know about From c87afd0b7d3881a468a5809aeba7ef7b366c5691 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Wed, 20 May 2020 13:38:39 +0200 Subject: [PATCH 078/527] trace load: err if offline mode --- client/src/cmdtrace.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 43d84c3f3..4df4ee0c0 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -33,7 +33,7 @@ static int usage_trace_list(void) { PrintAndLogEx(NORMAL, " c - mark CRC bytes"); PrintAndLogEx(NORMAL, " x - show hexdump to convert to pcap(ng) or to import into Wireshark using encapsulation type \"ISO 14443\""); PrintAndLogEx(NORMAL, " syntax to use: `text2pcap -t \"%%S.\" -l 264 -n `"); - PrintAndLogEx(NORMAL, " <0|1> - use data from Tracebuffer, if not set, try reading data from tag."); + PrintAndLogEx(NORMAL, " <0|1> - use data from Tracebuffer, if not set, try to collect a trace from Proxmark3 device."); PrintAndLogEx(NORMAL, "Supported values:"); PrintAndLogEx(NORMAL, " raw - just show raw data without annotations"); PrintAndLogEx(NORMAL, " 14a - interpret data as iso14443a communications"); @@ -593,6 +593,10 @@ int CmdTraceList(const char *Cmd) { if (isOnline) { + if (!IfPm3Present()) { + PrintAndLogEx(FAILED, "You requested a trace upload in offline mode, consider using parameter '1' for working from Tracebuffer"); + return PM3_EINVARG; + } // reserve some space. if (g_trace) free(g_trace); From b770cfd51c9fea5fb88caa30681c9db19d020f43 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 20 May 2020 19:22:17 +0200 Subject: [PATCH 079/527] le24toh is uint32_t --- client/src/cmdhfmfdes.c | 22 ++++++++++++---------- common/commonutil.c | 2 +- common/commonutil.h | 2 +- 3 files changed, 14 insertions(+), 12 deletions(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index c8bf75424..a39bd85c0 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -1482,8 +1482,8 @@ static int handler_desfire_writedata(mfdes_data_t *data, MFDES_FILE_TYPE_T type) */ if (data->fileno > 0x1F) return PM3_EINVARG; - int datatowrite = le24toh(data->length); - int offset = le24toh(data->offset); + uint32_t datatowrite = le24toh(data->length); + uint32_t offset = le24toh(data->offset); int datasize; int pos = 0; int recvlen = 0; @@ -1496,7 +1496,8 @@ static int handler_desfire_writedata(mfdes_data_t *data, MFDES_FILE_TYPE_T type) apdu.data = tmp; if (type == MFDES_RECORD_FILE) apdu.INS = MFDES_WRITE_RECORD; - while (datatowrite > 0) { + while (datatowrite) { + if (datatowrite > 52) datasize = 52; else @@ -2319,7 +2320,8 @@ static int CmdHF14ADesReadData(const char *Cmd) { memcpy(ft.length, filesize, 3); ft.fileno = _fileno[0]; - int bytestoread = le24toh(filesize); + uint32_t bytestoread = le24toh(filesize); + bytestoread &= 0xFFFFFF; if (bytestoread == 0) bytestoread = 0xFFFFFF; @@ -2332,8 +2334,8 @@ static int CmdHF14ADesReadData(const char *Cmd) { PrintAndLogEx(SUCCESS, "Successfully read data from file %d:", ft.fileno); PrintAndLogEx(NORMAL, "\nOffset | Data | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); - int len = le24toh(ft.length); - for (int i = 0; i < len; i += 16) { + uint32_t len = le24toh(ft.length); + for (uint32_t i = 0; i < len; i += 16) { PrintAndLogEx(NORMAL, "%02d/0x%02X | %s| %s", i, i, sprint_hex(&ft.data[i], len > 16 ? 16 : len), sprint_ascii(&ft.data[i], len > 16 ? 16 : len)); } } else { @@ -3246,8 +3248,8 @@ static int CmdHF14ADesDump(const char *Cmd) { if (res == PM3_SUCCESS) { PrintAndLogEx(NORMAL, "\nOffset | Data | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); - int len = le24toh(fdata.length); - for (int n = 0; n < len; n += 16) { + uint32_t len = le24toh(fdata.length); + for (uint32_t n = 0; n < len; n += 16) { PrintAndLogEx(NORMAL, "%02d/0x%02X | %s| %s", n, n, sprint_hex(&fdata.data[n], len > 16 ? 16 : len), sprint_ascii(&fdata.data[n], len > 16 ? 16 : len)); } } else { @@ -3299,8 +3301,8 @@ static int CmdHF14ADesDump(const char *Cmd) { if (res == PM3_SUCCESS) { PrintAndLogEx(NORMAL, "\nOffset | Data | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); - int len = le24toh(fdata.length); - for (int n = 0; n < len; n += 16) { + uint32_t len = le24toh(fdata.length); + for (uint32_t n = 0; n < len; n += 16) { PrintAndLogEx(NORMAL, "%02d/0x%02X | %s| %s", n, n, sprint_hex(&fdata.data[n], len > 16 ? 16 : len), sprint_ascii(&fdata.data[n], len > 16 ? 16 : len)); } } else { diff --git a/common/commonutil.c b/common/commonutil.c index 3ff2b4eb4..f831d744d 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -83,7 +83,7 @@ void lsl(uint8_t *data, size_t len) { data[len - 1] <<= 1; } -int32_t le24toh(uint8_t data[3]) { +uint32_t le24toh(uint8_t data[3]) { return (data[2] << 16) | (data[1] << 8) | data[0]; } diff --git a/common/commonutil.h b/common/commonutil.h index a22486fff..0f3dc0065 100644 --- a/common/commonutil.h +++ b/common/commonutil.h @@ -50,7 +50,7 @@ uint64_t bytes_to_num(uint8_t *src, size_t len); void rol(uint8_t *data, const size_t len); void lsl(uint8_t *data, size_t len); -int32_t le24toh(uint8_t data[3]); +uint32_t le24toh(uint8_t data[3]); void htole24(uint32_t val, uint8_t data[3]); #endif From eb7ef65f22f46c1a270fc332bc19bd8f8e041aa8 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Wed, 20 May 2020 19:52:22 +0200 Subject: [PATCH 080/527] chg: 'lf nexwatch clone' - only use 12bytes --- client/src/cmdlfnexwatch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdlfnexwatch.c b/client/src/cmdlfnexwatch.c index f8b75594c..fbf2d55eb 100644 --- a/client/src/cmdlfnexwatch.c +++ b/client/src/cmdlfnexwatch.c @@ -281,7 +281,7 @@ static int CmdNexWatchClone(const char *Cmd) { int datalen = 0; uint8_t magic = 0xBE; uint32_t cn = 0; - uint8_t rawhex[16] = {0x56, 0}; + uint8_t rawhex[12] = {0x56, 0}; while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { switch (tolower(param_getchar(Cmd, cmdp))) { From 86ba6c8330a3847d35bca14f8ea5c35191c847a6 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Wed, 20 May 2020 14:02:47 +0200 Subject: [PATCH 081/527] Add "make release" --- Makefile | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/Makefile b/Makefile index 2ba15fb0c..9f77d3d30 100644 --- a/Makefile +++ b/Makefile @@ -236,5 +236,22 @@ endif # @find . \( -name "*.[ch]" -or \( -name "*.cpp" -and -not -name "*.moc.cpp" \) -or -name "*.lua" -or -name "*.py" -or -name "*.pl" -or -name "*.md" -or -name "*.txt" -or -name "*.awk" -or -name "*.v" \) \ # -exec grep -lP '\\t' {} \; +release: VERSION="v4.$(shell git log --oneline master | wc -l)" +release: + # Preparing a commit for release tagging, to be reverted after tagging. + @echo "# - Tag: $(VERSION)" + # - Removing -Werror... + @find . \( -path "./Makefile.defs" -or -path "./client/Makefile" -or -path "./common_arm/Makefile.common" -or -path "./tools/hitag2crack/*/Makefile" \) -exec sed -i 's/ -Werror//' {} \; + @find . \( -path "./client/deps/*.cmake" -or -path "./client/CMakeLists.txt" \) -exec sed -i 's/ -Werror//' {} \; + # - Changing banner... + @sed -i "s/^#define BANNERMSG3 .*/#define BANNERMSG3 \"Release $(VERSION)\"/" client/src/proxmark3.c + @echo -n "# ";grep "^#define BANNERMSG3" client/src/proxmark3.c + # - Committing... + @git commit -a -m "Release $(VERSION)" + # - Tagging... + @git tag -a -m "Release $(VERSION)" $(VERSION) + # - Reverting... + @git revert --no-edit HEAD + # Dummy target to test for GNU make availability _test: From ef586c2a41fac3a151eb5e157e30b41dcea3f136 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Wed, 20 May 2020 15:53:47 +0200 Subject: [PATCH 082/527] version info also for client, still cmake to do --- armsrc/appmain.c | 5 ++-- armsrc/util.c | 34 ------------------------ armsrc/util.h | 1 - client/Makefile | 10 +++++-- client/src/cmdhw.c | 9 +++++-- common/commonutil.c | 34 ++++++++++++++++++++++++ common/commonutil.h | 3 +++ {common_arm => common}/default_version.c | 2 +- include/common.h | 10 +++++++ include/proxmark3_arm.h | 10 +------ tools/mkversion.pl | 2 +- tools/mkversion.sh | 2 +- 12 files changed, 69 insertions(+), 53 deletions(-) rename {common_arm => common}/default_version.c (93%) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 40f8c0ad1..a3d5c3d2f 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -244,8 +244,7 @@ void ReadMem(int addr) { Dbprintf("%x: %02x %02x %02x %02x %02x %02x %02x %02x", addr, data[0], data[1], data[2], data[3], data[4], data[5], data[6], data[7]); } -/* osimage version information is linked in */ -extern struct version_information version_information; +/* osimage version information is linked in, cf commonutil.h */ /* bootrom version information is pointed to from _bootphase1_version_pointer */ extern char *_bootphase1_version_pointer, _flash_start, _flash_end, __data_src_start__; static void SendVersion(void) { @@ -265,10 +264,12 @@ static void SendVersion(void) { } else { FormatVersionInformation(temp, sizeof(temp), " bootrom: ", bootrom_version); strncat(VersionString, temp, sizeof(VersionString) - strlen(VersionString) - 1); + strncat(VersionString, "\n", sizeof(VersionString) - strlen(VersionString) - 1); } FormatVersionInformation(temp, sizeof(temp), " os: ", &version_information); strncat(VersionString, temp, sizeof(VersionString) - strlen(VersionString) - 1); + strncat(VersionString, "\n", sizeof(VersionString) - strlen(VersionString) - 1); #if defined(__clang__) strncat(VersionString, " compiled with Clang/LLVM "__VERSION__"\n", sizeof(VersionString) - strlen(VersionString) - 1); diff --git a/armsrc/util.c b/armsrc/util.c index ccff567eb..443c9e5f4 100644 --- a/armsrc/util.c +++ b/armsrc/util.c @@ -289,40 +289,6 @@ int BUTTON_HELD(int ms) { return BUTTON_ERROR; } -/* Similar to FpgaGatherVersion this formats stored version information - * into a string representation. It takes a pointer to the struct version_information, - * verifies the magic properties, then stores a formatted string, prefixed by - * prefix in dst. - */ -void FormatVersionInformation(char *dst, int len, const char *prefix, void *version_information) { - struct version_information *v = (struct version_information *)version_information; - dst[0] = 0; - strncat(dst, prefix, len - 1); - if (v->magic != VERSION_INFORMATION_MAGIC) { - strncat(dst, "Missing/Invalid version information\n", len - strlen(dst) - 1); - return; - } - if (v->versionversion != 1) { - strncat(dst, "Version information not understood\n", len - strlen(dst) - 1); - return; - } - if (!v->present) { - strncat(dst, "Version information not available\n", len - strlen(dst) - 1); - return; - } - - strncat(dst, v->gitversion, len - strlen(dst) - 1); - if (v->clean == 0) { - strncat(dst, "-unclean", len - strlen(dst) - 1); - } else if (v->clean == 2) { - strncat(dst, "-suspect", len - strlen(dst) - 1); - } - - strncat(dst, " ", len - strlen(dst) - 1); - strncat(dst, v->buildtime, len - strlen(dst) - 1); - strncat(dst, "\n", len - strlen(dst) - 1); -} - bool data_available(void) { #ifdef WITH_FPC_USART_HOST return usb_poll_validate_length() || (usart_rxdata_available() > 0); diff --git a/armsrc/util.h b/armsrc/util.h index 06c4e024e..c6523a813 100644 --- a/armsrc/util.h +++ b/armsrc/util.h @@ -91,7 +91,6 @@ void SpinUp(uint32_t speed); int BUTTON_CLICKED(int ms); int BUTTON_HELD(int ms); -void FormatVersionInformation(char *dst, int len, const char *prefix, void *version_information); bool data_available(void); #endif diff --git a/client/Makefile b/client/Makefile index ad2f5aa75..59685656b 100644 --- a/client/Makefile +++ b/client/Makefile @@ -179,7 +179,8 @@ CORESRCS = uart/uart_posix.c \ scandir.c \ crc16.c \ crc32.c \ - comms.c + comms.c \ + version.c CMDSRCS = crapto1/crapto1.c \ crapto1/crypto1.c \ @@ -308,7 +309,7 @@ CMDOBJS = $(CMDSRCS:%.c=$(OBJDIR)/%.o) OBJCOBJS = $(OBJCSRCS:%.m=$(OBJDIR)/%.o) BINS = proxmark3 -CLEAN = $(BINS) src/*.moc.cpp src/ui/ui_overlays.h lualibs/pm3_cmd.lua lualibs/mfc_default_keys.lua +CLEAN = $(BINS) src/version.c src/*.moc.cpp src/ui/ui_overlays.h lualibs/pm3_cmd.lua lualibs/mfc_default_keys.lua # transition: cleaning also old path stuff CLEAN += flasher *.moc.cpp ui/ui_overlays.h @@ -426,6 +427,11 @@ zlib: .PHONY: all clean install uninstall tarbin liblua jansson tinycbor reveng hardnested amiibo cliparser whereami mbedtls zlib +# version.c should be remade on every compilation +src/version.c: default_version.c + $(info [=] GEN $@) + $(Q)sh ../tools/mkversion.sh > $@ || perl ../tools/mkversion.pl > $@ || $(CP) $^ $@ + # easy printing of MAKE VARIABLES print-%: ; @echo $* = $($*) diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index 3b452b492..45e56ba49 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -20,6 +20,7 @@ #include "ui.h" #include "cmdhw.h" #include "cmddata.h" +#include "commonutil.h" static int CmdHelp(const char *Cmd); @@ -688,7 +689,9 @@ void pm3_version(bool verbose, bool oneliner) { if (oneliner) { // For "proxmark3 -v", simple printf, avoid logging - printf("Client: RRG/Iceman compiled with " PM3CLIENTCOMPILER __VERSION__ PM3HOSTOS PM3HOSTARCH "\n"); + char temp[PM3_CMD_DATA_SIZE - 12]; // same limit as for ARM image + FormatVersionInformation(temp, sizeof(temp), "Client: ", &version_information); + printf("%s compiled with " PM3CLIENTCOMPILER __VERSION__ PM3HOSTOS PM3HOSTARCH "\n", temp); return; } @@ -701,9 +704,11 @@ void pm3_version(bool verbose, bool oneliner) { SendCommandNG(CMD_VERSION, NULL, 0); if (WaitForResponseTimeout(CMD_VERSION, &resp, 1000)) { + char temp[PM3_CMD_DATA_SIZE - 12]; // same limit as for ARM image PrintAndLogEx(NORMAL, "\n " _YELLOW_("[ Proxmark3 RFID instrument ]")); PrintAndLogEx(NORMAL, "\n " _YELLOW_("[ CLIENT ]")); - PrintAndLogEx(NORMAL, " client: RRG/Iceman"); // TODO version info? + FormatVersionInformation(temp, sizeof(temp), " client: ", &version_information); + PrintAndLogEx(NORMAL, "%s", temp); PrintAndLogEx(NORMAL, " compiled with " PM3CLIENTCOMPILER __VERSION__ PM3HOSTOS PM3HOSTARCH); if (IfPm3Flash() == false && IfPm3Smartcard() == false && IfPm3FpcUsartHost() == false) { diff --git a/common/commonutil.c b/common/commonutil.c index f831d744d..14f2d58e5 100644 --- a/common/commonutil.c +++ b/common/commonutil.c @@ -8,6 +8,40 @@ // Utility functions used in many places, not specific to any piece of code. //----------------------------------------------------------------------------- #include "commonutil.h" +#include + +/* Similar to FpgaGatherVersion this formats stored version information + * into a string representation. It takes a pointer to the struct version_information, + * verifies the magic properties, then stores a formatted string, prefixed by + * prefix in dst. + */ +void FormatVersionInformation(char *dst, int len, const char *prefix, void *version_info) { + struct version_information *v = (struct version_information *)version_info; + dst[0] = 0; + strncat(dst, prefix, len - 1); + if (v->magic != VERSION_INFORMATION_MAGIC) { + strncat(dst, "Missing/Invalid version information", len - strlen(dst) - 1); + return; + } + if (v->versionversion != 1) { + strncat(dst, "Version information not understood", len - strlen(dst) - 1); + return; + } + if (!v->present) { + strncat(dst, "Version information not available", len - strlen(dst) - 1); + return; + } + + strncat(dst, v->gitversion, len - strlen(dst) - 1); + if (v->clean == 0) { + strncat(dst, "-unclean", len - strlen(dst) - 1); + } else if (v->clean == 2) { + strncat(dst, "-suspect", len - strlen(dst) - 1); + } + + strncat(dst, " ", len - strlen(dst) - 1); + strncat(dst, v->buildtime, len - strlen(dst) - 1); +} /* ref http://www.csm.ornl.gov/~dunigan/crc.html diff --git a/common/commonutil.h b/common/commonutil.h index 0f3dc0065..fdd2ac065 100644 --- a/common/commonutil.h +++ b/common/commonutil.h @@ -41,6 +41,9 @@ # define NTIME(n) for (int _index = 0; _index < n; _index++) #endif +extern struct version_information version_information; +void FormatVersionInformation(char *dst, int len, const char *prefix, void *version_info); + uint32_t reflect(uint32_t v, int b); // used in crc.c ... uint8_t reflect8(uint8_t b); // dedicated 8bit reversal uint16_t reflect16(uint16_t b); // dedicated 16bit reversal diff --git a/common_arm/default_version.c b/common/default_version.c similarity index 93% rename from common_arm/default_version.c rename to common/default_version.c index b4b8ae17d..e04c88d2a 100644 --- a/common_arm/default_version.c +++ b/common/default_version.c @@ -1,4 +1,4 @@ -#include "proxmark3_arm.h" +#include "common.h" /* This is the default version.c file that Makefile.common falls back to if neither sh nor perl are available */ const struct version_information __attribute__((section(".version_information"))) version_information = { VERSION_INFORMATION_MAGIC, diff --git a/include/common.h b/include/common.h index e7d6bba90..d52e40f10 100644 --- a/include/common.h +++ b/include/common.h @@ -36,6 +36,16 @@ #define PACKED __attribute__((packed)) +#define VERSION_INFORMATION_MAGIC 0x56334d50 // "PM3V" +struct version_information { + int magic; /* Magic sequence to identify this as a correct version information structure. Must be VERSION_INFORMATION_MAGIC */ + char versionversion; /* Must be 1 */ + char present; /* 1 if the version information could be created at compile time, otherwise 0 and the remaining fields (except for magic) are empty */ + char clean; /* 1: Tree was clean, no local changes. 0: Tree was unclean. 2: Couldn't be determined */ + char gitversion[50]; /* String with the git revision */ + char buildtime[30]; /* string with the build time */ +} PACKED; + // debug #define DBG_NONE 0 // no messages #define DBG_ERROR 1 // errors only diff --git a/include/proxmark3_arm.h b/include/proxmark3_arm.h index 3ea80da9d..de3ae9caa 100644 --- a/include/proxmark3_arm.h +++ b/include/proxmark3_arm.h @@ -115,15 +115,7 @@ //NVDD goes LOW when USB is attached. #define USB_ATTACHED() !((AT91C_BASE_PIOA->PIO_PDSR & GPIO_NVDD_ON) == GPIO_NVDD_ON) -#define VERSION_INFORMATION_MAGIC 0x56334d50 // "PM3V" -struct version_information { - int magic; /* Magic sequence to identify this as a correct version information structure. Must be VERSION_INFORMATION_MAGIC */ - char versionversion; /* Must be 1 */ - char present; /* 1 if the version information could be created at compile time, otherwise 0 and the remaining fields (except for magic) are empty */ - char clean; /* 1: Tree was clean, no local changes. 0: Tree was unclean. 2: Couldn't be determined */ - char gitversion[50]; /* String with the git revision */ - char buildtime[30]; /* string with the build time */ -} PACKED; +// VERSION_INFORMATION is now in common.h #define COMMON_AREA_MAGIC 0x43334d50 // "PM3C" #define COMMON_AREA_COMMAND_NONE 0 diff --git a/tools/mkversion.pl b/tools/mkversion.pl index 95a794697..eecacbd72 100644 --- a/tools/mkversion.pl +++ b/tools/mkversion.pl @@ -64,7 +64,7 @@ $fullgitinfo =~ s/(\s)//g; $fullgitinfo = substr $fullgitinfo, 0, 49; print < Date: Wed, 20 May 2020 18:12:41 +0200 Subject: [PATCH 083/527] Makefile: wrap sh and perl calls --- Makefile.defs | 2 ++ armsrc/Makefile | 2 +- bootrom/Makefile | 2 +- client/Makefile | 2 +- 4 files changed, 5 insertions(+), 3 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index 8ad2e319f..d206611d3 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -24,6 +24,8 @@ CROSS ?= arm-none-eabi- CC = gcc CXX = g++ LD = g++ +SH = sh +PERL = perl PATHSEP=/ PREFIX ?= /usr/local diff --git a/armsrc/Makefile b/armsrc/Makefile index 15cfaddfd..bc0fbc74b 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -155,7 +155,7 @@ showinfo: # version.c should be remade on every time fullimage.stage1.elf should be remade version.c: default_version.c $(OBJDIR)/fpga_version_info.o $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ) $(info [-] GEN $@) - $(Q)sh ../tools/mkversion.sh > $@ || perl ../tools/mkversion.pl > $@ || $(CP) $^ $@ + $(Q)$(SH) ../tools/mkversion.sh > $@ || $(PERL) ../tools/mkversion.pl > $@ || $(CP) $^ $@ fpga_version_info.c: $(FPGA_BITSTREAMS) $(FPGA_COMPRESSOR) $(info [-] GEN $@) diff --git a/bootrom/Makefile b/bootrom/Makefile index 676bd9a05..f6cf18174 100644 --- a/bootrom/Makefile +++ b/bootrom/Makefile @@ -39,7 +39,7 @@ OBJS = $(OBJDIR)/bootrom.s19 # version.c should be remade on every compilation version.c: default_version.c $(info [=] GEN $@) - $(Q)sh ../tools/mkversion.sh > $@ || perl ../tools/mkversion.pl > $@ || $(CP) $^ $@ + $(Q)$(SH) ../tools/mkversion.sh > $@ || $(PERL) ../tools/mkversion.pl > $@ || $(CP) $^ $@ all: showinfo $(OBJS) diff --git a/client/Makefile b/client/Makefile index 59685656b..33810b09b 100644 --- a/client/Makefile +++ b/client/Makefile @@ -430,7 +430,7 @@ zlib: # version.c should be remade on every compilation src/version.c: default_version.c $(info [=] GEN $@) - $(Q)sh ../tools/mkversion.sh > $@ || perl ../tools/mkversion.pl > $@ || $(CP) $^ $@ + $(Q)$(SH) ../tools/mkversion.sh > $@ || $(PERL) ../tools/mkversion.pl > $@ # easy printing of MAKE VARIABLES print-%: ; @echo $* = $($*) From 88ae955673353fe92f8d1425712fcb1423278477 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Wed, 20 May 2020 19:07:46 +0200 Subject: [PATCH 084/527] version.c in cmake --- client/CMakeLists.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 07d2abb40..a56ea5a9a 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -176,8 +176,15 @@ set (TARGET_SOURCES src/util.c src/wiegand_formats.c src/wiegand_formatutils.c + ${CMAKE_BINARY_DIR}/version.c ) +add_custom_command( + OUTPUT ${CMAKE_BINARY_DIR}/version.c + COMMAND sh ${CMAKE_SOURCE_DIR}/../tools/mkversion.sh > ${CMAKE_BINARY_DIR}/version.c || perl ${CMAKE_SOURCE_DIR}/../tools/mkversion.pl > ${CMAKE_BINARY_DIR}/version.c || ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../common/default_version.c ${CMAKE_BINARY_DIR}/version.c + DEPENDS ${CMAKE_SOURCE_DIR}/../common/default_version.c +) + set(ADDITIONAL_SRC "") set(ADDITIONAL_LNK "") From 7033927176259b15393412fd7d0e4f3bd9bd0c02 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Wed, 20 May 2020 19:37:05 +0200 Subject: [PATCH 085/527] Add RELEASE_NAME --- Makefile | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/Makefile b/Makefile index 9f77d3d30..6b0a6cb76 100644 --- a/Makefile +++ b/Makefile @@ -170,7 +170,7 @@ tarbin: newtarbin client/tarbin armsrc/tarbin bootrom/tarbin # detect if there were changes in the platform definitions, requiring a clean cleanifplatformchanged: -ifeq ($(PLATFORM_CHANGED), true) +ifeq ($(PLATFORM_CHANGED),true) $(info [!] Platform definitions changed, cleaning bootrom/armsrc/recovery first...) $(Q)$(MAKE) --no-print-directory -C bootrom clean $(Q)$(MAKE) --no-print-directory -C armsrc clean @@ -239,17 +239,21 @@ endif release: VERSION="v4.$(shell git log --oneline master | wc -l)" release: # Preparing a commit for release tagging, to be reverted after tagging. - @echo "# - Tag: $(VERSION)" + @echo "# - Release Tag: $(VERSION)" +ifeq ($(RELEASE_NAME),) + $(error "!!! missing RELEASE_NAME") +endif + @echo "# - Release Name: $(RELEASE_NAME)" # - Removing -Werror... @find . \( -path "./Makefile.defs" -or -path "./client/Makefile" -or -path "./common_arm/Makefile.common" -or -path "./tools/hitag2crack/*/Makefile" \) -exec sed -i 's/ -Werror//' {} \; @find . \( -path "./client/deps/*.cmake" -or -path "./client/CMakeLists.txt" \) -exec sed -i 's/ -Werror//' {} \; # - Changing banner... - @sed -i "s/^#define BANNERMSG3 .*/#define BANNERMSG3 \"Release $(VERSION)\"/" client/src/proxmark3.c + @sed -i "s/^#define BANNERMSG3 .*/#define BANNERMSG3 \"Release $(VERSION) - $(RELEASE_NAME)\"/" client/src/proxmark3.c @echo -n "# ";grep "^#define BANNERMSG3" client/src/proxmark3.c # - Committing... - @git commit -a -m "Release $(VERSION)" + @git commit -a -m "Release $(VERSION) - $(RELEASE_NAME)" # - Tagging... - @git tag -a -m "Release $(VERSION)" $(VERSION) + @git tag -a -m "Release $(VERSION) - $(RELEASE_NAME)" $(VERSION) # - Reverting... @git revert --no-edit HEAD From 577380ae48c3261d36b79763df80974915248c77 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Wed, 20 May 2020 19:48:39 +0200 Subject: [PATCH 086/527] color ARM/FPGA version sections --- armsrc/appmain.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index a3d5c3d2f..3793182ce 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -257,7 +257,7 @@ static void SendVersion(void) { */ char *bootrom_version = *(char **)&_bootphase1_version_pointer; - strncat(VersionString, " [ ARM ]\n", sizeof(VersionString) - strlen(VersionString) - 1); + strncat(VersionString, " "_YELLOW_("[ ARM ]")"\n", sizeof(VersionString) - strlen(VersionString) - 1); if (bootrom_version < &_flash_start || bootrom_version >= &_flash_end) { strcat(VersionString, "bootrom version information appears invalid\n"); @@ -277,7 +277,7 @@ static void SendVersion(void) { strncat(VersionString, " compiled with GCC "__VERSION__"\n", sizeof(VersionString) - strlen(VersionString) - 1); #endif - strncat(VersionString, "\n [ FPGA ]\n ", sizeof(VersionString) - strlen(VersionString) - 1); + strncat(VersionString, "\n "_YELLOW_("[ FPGA ]")"\n ", sizeof(VersionString) - strlen(VersionString) - 1); for (int i = 0; i < g_fpga_bitstream_num; i++) { strncat(VersionString, g_fpga_version_information[i], sizeof(VersionString) - strlen(VersionString) - 1); From e2a20631c7e016a3fe86f99aea9942c33423efee Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Wed, 20 May 2020 20:54:37 +0200 Subject: [PATCH 087/527] remove section version_information for client --- armsrc/Makefile | 1 - common/default_version.c | 8 +++++++- common_arm/Makefile.common | 2 +- tools/mkversion.pl | 8 +++++++- tools/mkversion.sh | 8 +++++++- 5 files changed, 22 insertions(+), 5 deletions(-) diff --git a/armsrc/Makefile b/armsrc/Makefile index bc0fbc74b..60b23c9f7 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -20,7 +20,6 @@ endif #in the next section to remove that particular feature from compilation. # NO space,TABs after the "\" sign. APP_CFLAGS = $(PLATFORM_DEFS) \ - -DON_DEVICE \ -fno-strict-aliasing -ffunction-sections -fdata-sections SRC_LF = lfops.c lfsampling.c pcf7931.c lfdemod.c lfadc.c diff --git a/common/default_version.c b/common/default_version.c index e04c88d2a..0f42590e8 100644 --- a/common/default_version.c +++ b/common/default_version.c @@ -1,6 +1,12 @@ #include "common.h" /* This is the default version.c file that Makefile.common falls back to if neither sh nor perl are available */ -const struct version_information __attribute__((section(".version_information"))) version_information = { +#ifndef ON_DEVICE +#define SECTVERSINFO +#else +#define SECTVERSINFO __attribute__((section(".version_information"))) +#endif + +const struct version_information SECTVERSINFO version_information = { VERSION_INFORMATION_MAGIC, 1, /* version 1 */ 0, /* version information not present */ diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index 8b5836e73..e2c3ae3bc 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -90,7 +90,7 @@ ifeq ($(NOERROR),1) endif CFLAGS ?= $(DEFCFLAGS) -CFLAGS += $(ARMCFLAGS) -c $(INCLUDE) -std=c99 $(APP_CFLAGS) +CFLAGS += $(ARMCFLAGS) -c $(INCLUDE) -std=c99 -DON_DEVICE $(APP_CFLAGS) LDFLAGS += -nostartfiles -nodefaultlibs -Wl,-gc-sections -Wl,--build-id=none -n LIBS = -lgcc diff --git a/tools/mkversion.pl b/tools/mkversion.pl index eecacbd72..0d8b9de29 100644 --- a/tools/mkversion.pl +++ b/tools/mkversion.pl @@ -66,7 +66,13 @@ $fullgitinfo = substr $fullgitinfo, 0, 49; print < Date: Wed, 20 May 2020 21:39:49 +0200 Subject: [PATCH 088/527] Remove coffee to prepare release --- client/src/proxmark3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 07d777a2c..1e2be44ba 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -32,7 +32,7 @@ // Used to enable/disable use of preferences json file #define USE_PREFERENCE_FILE -#define BANNERMSG1 " :snowflake: iceman@icesql.net :coffee:" +#define BANNERMSG1 " :snowflake: iceman@icesql.net" #define BANNERMSG2 " https://github.com/rfidresearchgroup/proxmark3/" #define BANNERMSG3 "pre-release v4.0" From c956314a99180aac8b20ab02fb84ba9fa7834ae8 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Wed, 20 May 2020 21:53:47 +0200 Subject: [PATCH 089/527] fix mistake --- client/Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/Makefile b/client/Makefile index 33810b09b..79943d8fa 100644 --- a/client/Makefile +++ b/client/Makefile @@ -430,7 +430,7 @@ zlib: # version.c should be remade on every compilation src/version.c: default_version.c $(info [=] GEN $@) - $(Q)$(SH) ../tools/mkversion.sh > $@ || $(PERL) ../tools/mkversion.pl > $@ + $(Q)$(SH) ../tools/mkversion.sh > $@ || $(PERL) ../tools/mkversion.pl > $@ || $(CP) $^ $@ # easy printing of MAKE VARIABLES print-%: ; @echo $* = $($*) From d74ad9d0ea073b033e3e033b8a8110fdfe9909a9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 21 May 2020 09:04:46 +0200 Subject: [PATCH 090/527] changelog updates --- CHANGELOG.md | 122 ++++++++++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 115 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d67785eb2..90c6dccb3 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,13 +3,120 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + +## [ice coffee.4.][2020-05-21] + - Updated documentation (@doegox, @iceman1001) + - Change `pm3test.sh` - more regression tests to (@doegox, @iceman1001) + - Change `hf 15 dump` - now supports basic json format (@iceman1001) + - Change Test and fix many `-Wxxxxxx` warnings [compiler trials] (@doegox) + - Fix COVERITY warnings [compiler trials] (@doegox, @iceman1001) + - Fix CPPCHECKER warnings [compiler trials] (@doegox, @iceman1001) + - Fix CLANG warnings [compiler trials] (@doegox) + - Change, stricter warnings [compiler trials] (@doegox) + - Change, remove section version_information for client (@doegox) + - Change, Add RELEASE_NAME (@doegox) + - Change, version info also for client (@doegox) + - Added `make release` (@doegox) + - Change `trace load` - err if offline mode (@doegox) + - Fix `standalone mode matty_run` eloadcard (@iceman1001) + - Added, HF 15 traces (@FlUxIUS) + - Fix, follow naming conventions [android] (@dxl) + - Change, work directory supported [android] (@dxl) + - Added `lf fdx demod` - decoding of Bio-Thermo lf tag. Thanks to Rosco! (@iceman1001) + - Fix, 32-bit time_t compilation error on [WIN64] (@grspy) + - Change, LogTrace error msg (@doegox) + - Change, remove inline [compiler trials] (@iceman1001) + - Change, adding execute/home/current working directory functions to lua (<@iceman1001) + - Change, fix max duration in LogTrace (@doegox) + - Change, first attempt for trace log header (@iceman1001) + - Change, pm3.sh, attempt to detect BT dongle when udevadm is not available (@doegox) + - Change, pm3.sh, test access to /dev/ttyXXX files as prerequisite for [linux] (@doegox) + - iclass bf: avoid slowdown (@doegox) + - Change, pm3tests.sh, shellcheck (@doegox) + - Change, pm3.sh, shellcheck (@doegox) + - Change, pm3.sh, err msgs on stderr (@doegox) + - Change, pm3.sh, textual and --list with no device, exit 1 (@doegox) + - Change, pm3.sh, without udev: change detection routine (@doegox) + - Change, pm3.sh, alternative if udevadm is not available [termux] (@doegox) + - Change `makefiles` - allow to skip pthread [termux] (@doegox) + - Change `script run test_t55x7` - enabled param to swap modulation to test (@iceman1001) + - Add mf_nonce_brute from https://github.com/@iceman1001/mf_nonce_brute and merge to pm3 Makefile (@doegox) + - Change `lf indala demod` - more lenient size check (@iceman1001) + - Change clarify BUTTON macro usages (@doegox) + - Change fix REV macros & hitagS (@doegox) + - Change, `hf iclass loclass` -removed printvar function (@iceman1001) + - Change, clock can be negative (@iceman1001) + - Change `data tune` (@doegox) + - fancy timers (@doegox) + - Change, copied from pm3 repo (@iceman1001) + - Change psk demodualtion, keep starting samples to easily find the zero init bit (@iceman1001) + - Change use machine/endian.h with osx (Jamie Fiedler) + - Fix 2 issues in proxendian.h (@doegox) + - Fix issue #729. Avoid stalling on non-rdv4 when polling for FeliCa without card in proximity (@doegox) + - Change `lf nexwatch demod` - lenient demod sizes (@iceman1001) + - Change `lf nexwath sim/clone` - now supports 88bit format direct. (@iceman1001) + - Rewrited `standalone mode lf_em4100rwc `, added card bruteforce mode. (Dmitriy Loginoov) + - Change `data load` - color (@iceman1001) + - Change appveyor verbose (@doegox) + - Change `lf nexwatch demod` - now detects type, and show parity /chksum (@iceman1001) + - Change `lfsampling` - interruptible only when logging not yet triggered (@doegox) + - Change `lf keri demod - more leanient when it comes to bits (@iceman1001) + - fix, proper filtering of RL markers (@doegox) + - Change, clean deps [compiler trials] (@doegox) + - Change, remove c99 restrictions [compiler trials] (@doegox) + - Added tracelog file for hf mfu sniff or a ntag (@iceman1001) + - Change `trace list` - different alloc (@iceman1001) + - Change, convert OLD -> MIX (@iceman1001) + - Change `trace list` - adjust messages (@iceman1001) + - Fix a mem corruption in `trace load/list` (@doegox) + - Change, rework banners (@doegox) + - Change, Let's see if the prompt suffixed spaces are still needed.(@doegox) + - Fix colored readline prompt bug (@doegox) + - Change, simpler ul_print_type (@doegox) + - Fix cmake for reveng [compiler trials] (@doegox) + - Change, hook reveng outputs to pm3 machinery, add regression test (@doegox) + - Change, cmake android: add backslashes for host compatibility [compiler trials](@doegox) + - Change, Translation some comments from Chinese to English. [android] (@dxl) + - Change, cmake android: use common cmake files for deps [android] (@doegox) + - Fix, proper way to fix reveng getopt bug(@doegox) + - Change, cmake deps: add prefix pm3rrg_rdv4_ [compiler trials] (@doegox) + - Change, cmake deps: add -fPIC so they can be integrated in a pm3 shared lib [compiler trials] (@doegox) + - Change, platform adaptation [android] (@dxl) + - Change, don't mix ifdef and defined [android] (@dxl) + - fix `trace list`- too short array for explanation (@iceman1001) + - Change, check for sim module fw file (@iceman1001) + - Change, rpi aling warning [compiler trials] (@iceman1001) + - Change, more LF demodulation tests (@iceman1001) + - Change, update whereami and avoid compiling unnneded troublesome parts [compiler trials] (@doegox) + - Change, rework C includes in C++ [compiler trials] (@doegox) + - Change, leanient parsing of tcp:/bt:/socket: vars (@iceman1001) + - Change, add bluetooth group to `make accessrights` (@iceman1001) + - Change, `Makefile` - fix PKG_CONFIG_ENV (@uli) + - Change, `f sim` - now only fills until bigbuffer is full (@iceman1001) + - Change, `hf mf hardnested` - don't drop field when in test mode (@doegox) + - Change, `lf sim` - better to return err on faulty offset, thanks @iceman (@doegox) + - Change, `lf sim` - fix offset of last packet (@doegox) + - Change, `client Makefile` - make sure to rebuild deps when needed [compiler trials](@doegox) + - Change, silent err if dbus absent [linux] (@doegox) + - Change, `pm3.sh` - for direct bt devices (@doegox) + - Change, `pm3.sh` - moved WSL/PS3.x bt native to be tested first. Since call to Win32_serialport crashes it. (@iceman1001) + - Change, `pm3.sh` - Bt dongle, bt direct listing of serial ports on WSL and PS3.x, now using powershell.exe since wmic is deprecated (@iceman1001) + - Change, remove libsndfile (@doegox) + - Change, enforce PACKED structs [compiler trials] (@iceman1001) + - Change, adjust number of threads according to cpu (@iceman1001) + - Change, `hitag2crack` compile flags(@doegox) + - Change, msdsal fix bug after var de-shadowing (@doegox) + - Change, lighter msg for loading prefs, json will anyway always tell the filename (@doegox) + - Change, make sure colors and emoji are disabled when not on TTY (@doegox) + - Added `pref` command. PM3 client now support user preferences saved to a json file. (@mwalker33) + - Added native support for Bluetooth in client [linux] (@doegox) - Added `LF_EM4100RSWB` (based on `LF_EM4100RWC`) standalone mode to read/sim/clone/brute EM4100 cards (@Monster1024) - Added `HF_MSDSAL` standalone mode which read and emulate Visa EMV cards (@Netxing) - - Added Mifare Ultralight tear off experiment (@cintainfinita and @fukmar) + - Added `hf mfu tear` - Mifare Ultralight tear off experiment (@cintainfinitam, @fukmar) - Added Mifare Desfire Read/Write/Create files/records/values functionality and several fixes to `hf mfdes` (@bkerler) - Added CreateStdFile command to Mifare `hf mfdes` (@bkerler) - Rework des/3des/3k3des/aes auth. Port to mbedtls crypto library on device (@bkerler) - - Port 'hf mfdes' Authentification to CommandNG structure, fix auth session key (@bkerler) + - Port `hf mfdes` Authentification to CommandNG structure, fix auth session key (@bkerler) - Updates `hf mfdes` functions, improved logging and added new commands (@bkerler) - Updated 'legic.lua' and 'legic_clone.lua' script - works with current command set (@Pizza_4u) - Rewrote `hf mfdes` functions and added apdu debugging (@bkerler) @@ -18,10 +125,11 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Improved `hf 14a info` - card detection handling (@bkerler) - Updated helptext layout in all luascripts (@iceman1001) - Change `hf mfdes info` - output and logging (@bkerler) - - Updated texts in legic commands (@ikarus23) + - Updated texts in `hf legic` commands (@ikarus23) - Fix timing bug inside 40x5 (@mwalker33) - Refactored all Hitag2 attacks (@doegox) - Added two new Hitag2 attacks (@doegox) + - Change `hf iclass decrypt` - limit amount of data to read if wrong app limit (@iceman1001) - Change `hf search` - now continue to search in case of dual tech cards (@iceman1001) Thanks to @ikarus23 for the suggestion! - Added `hf topas info` - old reader command, now also prints NDEF (@iceman1001) - Change `hf topaz reader` - now only prints lighter info, like UID. (@iceman1001) @@ -40,14 +148,14 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Change - NDEF supports more signatures now (@iceman1001) - OSX Makefile now supports `make style` and `make checks` (@Pizza_4u) - Added `HF_LEGIC` standalone mode to read and simulate a Legic prime tag (@Pizza_4u) - - Added keri MS decode/encode and update 'lf keri clone' to support MS fc/cid cloning. (@mwalker33) - - Fix 'hf mfdes enum' - now actually manages to enumerate files under all AID's. :smiley: (@iceman1001) - - Fix 'hf mfdes info' - now detects DESFire light and work properly Wrapped commands :+1: (@iceman1001) + - Added keri MS decode/encode and update `lf keri clone` to support MS fc/cid cloning. (@mwalker33) + - Fix `hf mfdes enum` - now actually manages to enumerate files under all AID's. :smiley: (@iceman1001) + - Fix `hf mfdes info` - now detects DESFire light and work properly Wrapped commands :+1: (@iceman1001) - :smiling_imp: support (@doegox) - Additional colour changes as recommended by @iceman (@dunderhay) - Change type colour for `hf 14a` card types (@dunderhay) - Add colour to `hf mfdes` command (@dunderhay) - - Add 'HINTS' command. Will turn off / on hint messages. Default mode is OFF. (@iceman1001) + - Add `HINTS` command. Will turn off / on hint messages. Default mode is OFF. (@iceman1001) - Add colour to `hf 14a` and `hf mfu` commands (@dunderhay) - Add colour to `lf hid` commands (@dunderhay) - Change `script run hf_bruteforce -s start_id -e end_id -t timeout -x mifare_card_type` - The hf_bruteforce card script now requires Mifare type (mfc or mfu) (@dunderhay) From a5aeadc339421c6bf5e5d18fe8b68ac83842980c Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 21 May 2020 09:23:32 +0200 Subject: [PATCH 091/527] Release v4.9222 - Ice Coffee :coffee: --- Makefile.defs | 2 +- client/CMakeLists.txt | 2 +- client/Makefile | 2 +- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 12 ++++++------ client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/deps/zlib.cmake | 2 +- client/src/proxmark3.c | 2 +- common_arm/Makefile.common | 2 +- tools/hitag2crack/crack2/Makefile | 2 +- tools/hitag2crack/crack3/Makefile | 2 +- tools/hitag2crack/crack4/Makefile | 2 +- tools/hitag2crack/crack5/Makefile | 2 +- 19 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index d206611d3..477743d69 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -47,7 +47,7 @@ else RANLIB= ranlib endif -DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wredundant-decls -Wmissing-prototypes -Wchar-subscripts -Wshadow -Wundef -Wwrite-strings -Wunused -Wuninitialized -Wpointer-arith -Winline -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wmissing-declarations -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits -Wold-style-definition # Some more warnings we need first to eliminate, so temporarely tolerated: diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index a56ea5a9a..ce58a4449 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -229,7 +229,7 @@ add_executable( ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) +target_compile_options(proxmark3 PUBLIC -Wall -O3) if (MINGW) # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) diff --git a/client/Makefile b/client/Makefile index 79943d8fa..260f72751 100644 --- a/client/Makefile +++ b/client/Makefile @@ -75,7 +75,7 @@ ifneq (,$(findstring MINGW,$(platform))) PM3CFLAGS += -D_ISOC99_SOURCE PM3CFLAGS += -mno-ms-bitfields -fexec-charset=cp850 endif -CXXFLAGS ?= -Wall -Werror -O3 +CXXFLAGS ?= -Wall -O3 PM3CXXFLAGS = $(CXXFLAGS) -I../include LUAPLATFORM = generic diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index 34780f597..fbf2a6f74 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -13,5 +13,5 @@ add_library(pm3rrg_rdv4_amiibo STATIC target_include_directories(pm3rrg_rdv4_amiibo PRIVATE ../../include ../../common) target_include_directories(pm3rrg_rdv4_amiibo INTERFACE amiitool) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index b16451c07..69b639a84 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -8,5 +8,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index 9efff1445..612265de0 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -27,7 +27,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -41,7 +41,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -55,7 +55,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -69,7 +69,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -83,7 +83,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index a95ff0baf..1a55b7fa5 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -15,5 +15,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 679147124..94c184906 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -45,5 +45,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 63e706889..93a646e0d 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -45,5 +45,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC ) target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index d7e3cfd8a..1040730f1 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index 5a6abda25..c74618149 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index d2d6a5b2a..721873066 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/zlib.cmake b/client/deps/zlib.cmake index 645cbc88d..563508633 100644 --- a/client/deps/zlib.cmake +++ b/client/deps/zlib.cmake @@ -9,5 +9,5 @@ add_library(pm3rrg_rdv4_z STATIC ) target_compile_definitions(pm3rrg_rdv4_z PRIVATE Z_SOLO NO_GZIP ZLIB_PM3_TUNED) -target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_z PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 1e2be44ba..b1aca3534 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -34,7 +34,7 @@ #define BANNERMSG1 " :snowflake: iceman@icesql.net" #define BANNERMSG2 " https://github.com/rfidresearchgroup/proxmark3/" -#define BANNERMSG3 "pre-release v4.0" +#define BANNERMSG3 "Release v4.9222 - Ice Coffee :coffee:" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index e2c3ae3bc..8f2a90b3b 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -40,7 +40,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits diff --git a/tools/hitag2crack/crack2/Makefile b/tools/hitag2crack/crack2/Makefile index 4794d6ec4..318034f51 100644 --- a/tools/hitag2crack/crack2/Makefile +++ b/tools/hitag2crack/crack2/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -Werror -O3 +CFLAGS?=-Wall -O3 # Linux libs LIBS=-pthread -D_GNU_SOURCE # Mac libs diff --git a/tools/hitag2crack/crack3/Makefile b/tools/hitag2crack/crack3/Makefile index 318b5db78..1e157eef6 100644 --- a/tools/hitag2crack/crack3/Makefile +++ b/tools/hitag2crack/crack3/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -Werror -O3 +CFLAGS?=-Wall -O3 LIBS= VPATH=../common INC=-I ../common diff --git a/tools/hitag2crack/crack4/Makefile b/tools/hitag2crack/crack4/Makefile index b560577bd..30083c56d 100644 --- a/tools/hitag2crack/crack4/Makefile +++ b/tools/hitag2crack/crack4/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -Werror -O3 +CFLAGS?=-Wall -O3 LIBS=-lpthread VPATH=../common INC=-I ../common diff --git a/tools/hitag2crack/crack5/Makefile b/tools/hitag2crack/crack5/Makefile index 9d19b63ee..8e2b38f82 100644 --- a/tools/hitag2crack/crack5/Makefile +++ b/tools/hitag2crack/crack5/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -Werror -O3 +CFLAGS?=-Wall -O3 LIBS=-lpthread VPATH=../common INC=-I ../common From 521a76d3c2a5e68a063ab514972846e182701be1 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 21 May 2020 09:24:38 +0200 Subject: [PATCH 092/527] Revert "Release v4.9222 - Ice Coffee :coffee:" This reverts commit a5aeadc339421c6bf5e5d18fe8b68ac83842980c. --- Makefile.defs | 2 +- client/CMakeLists.txt | 2 +- client/Makefile | 2 +- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 12 ++++++------ client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/deps/zlib.cmake | 2 +- client/src/proxmark3.c | 2 +- common_arm/Makefile.common | 2 +- tools/hitag2crack/crack2/Makefile | 2 +- tools/hitag2crack/crack3/Makefile | 2 +- tools/hitag2crack/crack4/Makefile | 2 +- tools/hitag2crack/crack5/Makefile | 2 +- 19 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index 477743d69..d206611d3 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -47,7 +47,7 @@ else RANLIB= ranlib endif -DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wredundant-decls -Wmissing-prototypes -Wchar-subscripts -Wshadow -Wundef -Wwrite-strings -Wunused -Wuninitialized -Wpointer-arith -Winline -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wmissing-declarations -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits -Wold-style-definition # Some more warnings we need first to eliminate, so temporarely tolerated: diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index ce58a4449..a56ea5a9a 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -229,7 +229,7 @@ add_executable( ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -O3) +target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) if (MINGW) # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) diff --git a/client/Makefile b/client/Makefile index 260f72751..79943d8fa 100644 --- a/client/Makefile +++ b/client/Makefile @@ -75,7 +75,7 @@ ifneq (,$(findstring MINGW,$(platform))) PM3CFLAGS += -D_ISOC99_SOURCE PM3CFLAGS += -mno-ms-bitfields -fexec-charset=cp850 endif -CXXFLAGS ?= -Wall -O3 +CXXFLAGS ?= -Wall -Werror -O3 PM3CXXFLAGS = $(CXXFLAGS) -I../include LUAPLATFORM = generic diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index fbf2a6f74..34780f597 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -13,5 +13,5 @@ add_library(pm3rrg_rdv4_amiibo STATIC target_include_directories(pm3rrg_rdv4_amiibo PRIVATE ../../include ../../common) target_include_directories(pm3rrg_rdv4_amiibo INTERFACE amiitool) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index 69b639a84..b16451c07 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -8,5 +8,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index 612265de0..9efff1445 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -27,7 +27,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -41,7 +41,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -55,7 +55,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -69,7 +69,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -83,7 +83,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index 1a55b7fa5..a95ff0baf 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -15,5 +15,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 94c184906..679147124 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -45,5 +45,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 93a646e0d..63e706889 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -45,5 +45,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC ) target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index 1040730f1..d7e3cfd8a 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index c74618149..5a6abda25 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index 721873066..d2d6a5b2a 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/zlib.cmake b/client/deps/zlib.cmake index 563508633..645cbc88d 100644 --- a/client/deps/zlib.cmake +++ b/client/deps/zlib.cmake @@ -9,5 +9,5 @@ add_library(pm3rrg_rdv4_z STATIC ) target_compile_definitions(pm3rrg_rdv4_z PRIVATE Z_SOLO NO_GZIP ZLIB_PM3_TUNED) -target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_z PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index b1aca3534..1e2be44ba 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -34,7 +34,7 @@ #define BANNERMSG1 " :snowflake: iceman@icesql.net" #define BANNERMSG2 " https://github.com/rfidresearchgroup/proxmark3/" -#define BANNERMSG3 "Release v4.9222 - Ice Coffee :coffee:" +#define BANNERMSG3 "pre-release v4.0" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index 8f2a90b3b..e2c3ae3bc 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -40,7 +40,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits diff --git a/tools/hitag2crack/crack2/Makefile b/tools/hitag2crack/crack2/Makefile index 318034f51..4794d6ec4 100644 --- a/tools/hitag2crack/crack2/Makefile +++ b/tools/hitag2crack/crack2/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -O3 +CFLAGS?=-Wall -Werror -O3 # Linux libs LIBS=-pthread -D_GNU_SOURCE # Mac libs diff --git a/tools/hitag2crack/crack3/Makefile b/tools/hitag2crack/crack3/Makefile index 1e157eef6..318b5db78 100644 --- a/tools/hitag2crack/crack3/Makefile +++ b/tools/hitag2crack/crack3/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -O3 +CFLAGS?=-Wall -Werror -O3 LIBS= VPATH=../common INC=-I ../common diff --git a/tools/hitag2crack/crack4/Makefile b/tools/hitag2crack/crack4/Makefile index 30083c56d..b560577bd 100644 --- a/tools/hitag2crack/crack4/Makefile +++ b/tools/hitag2crack/crack4/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -O3 +CFLAGS?=-Wall -Werror -O3 LIBS=-lpthread VPATH=../common INC=-I ../common diff --git a/tools/hitag2crack/crack5/Makefile b/tools/hitag2crack/crack5/Makefile index 8e2b38f82..9d19b63ee 100644 --- a/tools/hitag2crack/crack5/Makefile +++ b/tools/hitag2crack/crack5/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -O3 +CFLAGS?=-Wall -Werror -O3 LIBS=-lpthread VPATH=../common INC=-I ../common From 9cec93fd5477a5f1513d9c805ae885a017e88813 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 21 May 2020 09:25:32 +0200 Subject: [PATCH 093/527] Release v4.9224 - Ice Coffee :coffee: --- Makefile.defs | 2 +- client/CMakeLists.txt | 2 +- client/Makefile | 2 +- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 12 ++++++------ client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/deps/zlib.cmake | 2 +- client/src/proxmark3.c | 2 +- common_arm/Makefile.common | 2 +- tools/hitag2crack/crack2/Makefile | 2 +- tools/hitag2crack/crack3/Makefile | 2 +- tools/hitag2crack/crack4/Makefile | 2 +- tools/hitag2crack/crack5/Makefile | 2 +- 19 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index d206611d3..477743d69 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -47,7 +47,7 @@ else RANLIB= ranlib endif -DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wredundant-decls -Wmissing-prototypes -Wchar-subscripts -Wshadow -Wundef -Wwrite-strings -Wunused -Wuninitialized -Wpointer-arith -Winline -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wmissing-declarations -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits -Wold-style-definition # Some more warnings we need first to eliminate, so temporarely tolerated: diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index a56ea5a9a..ce58a4449 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -229,7 +229,7 @@ add_executable( ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) +target_compile_options(proxmark3 PUBLIC -Wall -O3) if (MINGW) # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) diff --git a/client/Makefile b/client/Makefile index 79943d8fa..260f72751 100644 --- a/client/Makefile +++ b/client/Makefile @@ -75,7 +75,7 @@ ifneq (,$(findstring MINGW,$(platform))) PM3CFLAGS += -D_ISOC99_SOURCE PM3CFLAGS += -mno-ms-bitfields -fexec-charset=cp850 endif -CXXFLAGS ?= -Wall -Werror -O3 +CXXFLAGS ?= -Wall -O3 PM3CXXFLAGS = $(CXXFLAGS) -I../include LUAPLATFORM = generic diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index 34780f597..fbf2a6f74 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -13,5 +13,5 @@ add_library(pm3rrg_rdv4_amiibo STATIC target_include_directories(pm3rrg_rdv4_amiibo PRIVATE ../../include ../../common) target_include_directories(pm3rrg_rdv4_amiibo INTERFACE amiitool) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index b16451c07..69b639a84 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -8,5 +8,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index 9efff1445..612265de0 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -27,7 +27,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -41,7 +41,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -55,7 +55,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -69,7 +69,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -83,7 +83,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index a95ff0baf..1a55b7fa5 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -15,5 +15,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 679147124..94c184906 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -45,5 +45,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 63e706889..93a646e0d 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -45,5 +45,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC ) target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index d7e3cfd8a..1040730f1 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index 5a6abda25..c74618149 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index d2d6a5b2a..721873066 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/zlib.cmake b/client/deps/zlib.cmake index 645cbc88d..563508633 100644 --- a/client/deps/zlib.cmake +++ b/client/deps/zlib.cmake @@ -9,5 +9,5 @@ add_library(pm3rrg_rdv4_z STATIC ) target_compile_definitions(pm3rrg_rdv4_z PRIVATE Z_SOLO NO_GZIP ZLIB_PM3_TUNED) -target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_z PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 1e2be44ba..806213d94 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -34,7 +34,7 @@ #define BANNERMSG1 " :snowflake: iceman@icesql.net" #define BANNERMSG2 " https://github.com/rfidresearchgroup/proxmark3/" -#define BANNERMSG3 "pre-release v4.0" +#define BANNERMSG3 "Release v4.9224 - Ice Coffee :coffee:" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index e2c3ae3bc..8f2a90b3b 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -40,7 +40,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits diff --git a/tools/hitag2crack/crack2/Makefile b/tools/hitag2crack/crack2/Makefile index 4794d6ec4..318034f51 100644 --- a/tools/hitag2crack/crack2/Makefile +++ b/tools/hitag2crack/crack2/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -Werror -O3 +CFLAGS?=-Wall -O3 # Linux libs LIBS=-pthread -D_GNU_SOURCE # Mac libs diff --git a/tools/hitag2crack/crack3/Makefile b/tools/hitag2crack/crack3/Makefile index 318b5db78..1e157eef6 100644 --- a/tools/hitag2crack/crack3/Makefile +++ b/tools/hitag2crack/crack3/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -Werror -O3 +CFLAGS?=-Wall -O3 LIBS= VPATH=../common INC=-I ../common diff --git a/tools/hitag2crack/crack4/Makefile b/tools/hitag2crack/crack4/Makefile index b560577bd..30083c56d 100644 --- a/tools/hitag2crack/crack4/Makefile +++ b/tools/hitag2crack/crack4/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -Werror -O3 +CFLAGS?=-Wall -O3 LIBS=-lpthread VPATH=../common INC=-I ../common diff --git a/tools/hitag2crack/crack5/Makefile b/tools/hitag2crack/crack5/Makefile index 9d19b63ee..8e2b38f82 100644 --- a/tools/hitag2crack/crack5/Makefile +++ b/tools/hitag2crack/crack5/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -Werror -O3 +CFLAGS?=-Wall -O3 LIBS=-lpthread VPATH=../common INC=-I ../common From 3e389c6e075861e2e712bf202527b7b3a62881e6 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 21 May 2020 09:25:32 +0200 Subject: [PATCH 094/527] Revert "Release v4.9224 - Ice Coffee :coffee:" This reverts commit 9cec93fd5477a5f1513d9c805ae885a017e88813. --- Makefile.defs | 2 +- client/CMakeLists.txt | 2 +- client/Makefile | 2 +- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 12 ++++++------ client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/deps/zlib.cmake | 2 +- client/src/proxmark3.c | 2 +- common_arm/Makefile.common | 2 +- tools/hitag2crack/crack2/Makefile | 2 +- tools/hitag2crack/crack3/Makefile | 2 +- tools/hitag2crack/crack4/Makefile | 2 +- tools/hitag2crack/crack5/Makefile | 2 +- 19 files changed, 24 insertions(+), 24 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index 477743d69..d206611d3 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -47,7 +47,7 @@ else RANLIB= ranlib endif -DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wredundant-decls -Wmissing-prototypes -Wchar-subscripts -Wshadow -Wundef -Wwrite-strings -Wunused -Wuninitialized -Wpointer-arith -Winline -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wmissing-declarations -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits -Wold-style-definition # Some more warnings we need first to eliminate, so temporarely tolerated: diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index ce58a4449..a56ea5a9a 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -229,7 +229,7 @@ add_executable( ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -O3) +target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) if (MINGW) # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) diff --git a/client/Makefile b/client/Makefile index 260f72751..79943d8fa 100644 --- a/client/Makefile +++ b/client/Makefile @@ -75,7 +75,7 @@ ifneq (,$(findstring MINGW,$(platform))) PM3CFLAGS += -D_ISOC99_SOURCE PM3CFLAGS += -mno-ms-bitfields -fexec-charset=cp850 endif -CXXFLAGS ?= -Wall -O3 +CXXFLAGS ?= -Wall -Werror -O3 PM3CXXFLAGS = $(CXXFLAGS) -I../include LUAPLATFORM = generic diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index fbf2a6f74..34780f597 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -13,5 +13,5 @@ add_library(pm3rrg_rdv4_amiibo STATIC target_include_directories(pm3rrg_rdv4_amiibo PRIVATE ../../include ../../common) target_include_directories(pm3rrg_rdv4_amiibo INTERFACE amiitool) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index 69b639a84..b16451c07 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -8,5 +8,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index 612265de0..9efff1445 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -27,7 +27,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -41,7 +41,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -55,7 +55,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -69,7 +69,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -83,7 +83,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index 1a55b7fa5..a95ff0baf 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -15,5 +15,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 94c184906..679147124 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -45,5 +45,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 93a646e0d..63e706889 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -45,5 +45,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC ) target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index 1040730f1..d7e3cfd8a 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index c74618149..5a6abda25 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index 721873066..d2d6a5b2a 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/zlib.cmake b/client/deps/zlib.cmake index 563508633..645cbc88d 100644 --- a/client/deps/zlib.cmake +++ b/client/deps/zlib.cmake @@ -9,5 +9,5 @@ add_library(pm3rrg_rdv4_z STATIC ) target_compile_definitions(pm3rrg_rdv4_z PRIVATE Z_SOLO NO_GZIP ZLIB_PM3_TUNED) -target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_z PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 806213d94..1e2be44ba 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -34,7 +34,7 @@ #define BANNERMSG1 " :snowflake: iceman@icesql.net" #define BANNERMSG2 " https://github.com/rfidresearchgroup/proxmark3/" -#define BANNERMSG3 "Release v4.9224 - Ice Coffee :coffee:" +#define BANNERMSG3 "pre-release v4.0" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index 8f2a90b3b..e2c3ae3bc 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -40,7 +40,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits diff --git a/tools/hitag2crack/crack2/Makefile b/tools/hitag2crack/crack2/Makefile index 318034f51..4794d6ec4 100644 --- a/tools/hitag2crack/crack2/Makefile +++ b/tools/hitag2crack/crack2/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -O3 +CFLAGS?=-Wall -Werror -O3 # Linux libs LIBS=-pthread -D_GNU_SOURCE # Mac libs diff --git a/tools/hitag2crack/crack3/Makefile b/tools/hitag2crack/crack3/Makefile index 1e157eef6..318b5db78 100644 --- a/tools/hitag2crack/crack3/Makefile +++ b/tools/hitag2crack/crack3/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -O3 +CFLAGS?=-Wall -Werror -O3 LIBS= VPATH=../common INC=-I ../common diff --git a/tools/hitag2crack/crack4/Makefile b/tools/hitag2crack/crack4/Makefile index 30083c56d..b560577bd 100644 --- a/tools/hitag2crack/crack4/Makefile +++ b/tools/hitag2crack/crack4/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -O3 +CFLAGS?=-Wall -Werror -O3 LIBS=-lpthread VPATH=../common INC=-I ../common diff --git a/tools/hitag2crack/crack5/Makefile b/tools/hitag2crack/crack5/Makefile index 8e2b38f82..9d19b63ee 100644 --- a/tools/hitag2crack/crack5/Makefile +++ b/tools/hitag2crack/crack5/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -O3 +CFLAGS?=-Wall -Werror -O3 LIBS=-lpthread VPATH=../common INC=-I ../common From 53cb36447f0973242314ecd8592a5b172a6ceac0 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 21 May 2020 11:05:09 +0200 Subject: [PATCH 095/527] make release: make sure it's executed from a clean master --- Makefile | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 6b0a6cb76..71d61f091 100644 --- a/Makefile +++ b/Makefile @@ -238,11 +238,17 @@ endif release: VERSION="v4.$(shell git log --oneline master | wc -l)" release: +ifneq ($(shell git rev-parse --abbrev-ref HEAD),master) + $(error "!!! you are not on master branch, aborting") +endif +ifeq ($(shell git describe --dirty --always|grep -o dirty),dirty) + $(error "!!! you have pending changes, aborting") +endif +ifeq ($(RELEASE_NAME),) + $(error "!!! missing RELEASE_NAME, aborting") +endif # Preparing a commit for release tagging, to be reverted after tagging. @echo "# - Release Tag: $(VERSION)" -ifeq ($(RELEASE_NAME),) - $(error "!!! missing RELEASE_NAME") -endif @echo "# - Release Name: $(RELEASE_NAME)" # - Removing -Werror... @find . \( -path "./Makefile.defs" -or -path "./client/Makefile" -or -path "./common_arm/Makefile.common" -or -path "./tools/hitag2crack/*/Makefile" \) -exec sed -i 's/ -Werror//' {} \; From 4382f8c9bee8c89ae1d14b558b10e8695428ea85 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 21 May 2020 11:50:03 +0200 Subject: [PATCH 096/527] mkversion: add --undecided --- tools/mkversion.pl | 7 ++++--- tools/mkversion.sh | 10 ++++++---- 2 files changed, 10 insertions(+), 7 deletions(-) diff --git a/tools/mkversion.pl b/tools/mkversion.pl index 0d8b9de29..ea3b9940a 100644 --- a/tools/mkversion.pl +++ b/tools/mkversion.pl @@ -18,7 +18,7 @@ my $fullgitinfo = 'RRG/Iceman'; my $ctime; # GIT status 0 = dirty, 1 = clean , 2 = undecided my $clean = 2; - +my $undecided = (defined $ARGV[0]) && ($ARGV[0] =~ '--undecided'); # Do we have acces to git command? ####### # solves some bug on macos i.e: @@ -37,8 +37,9 @@ if ( defined($commandGIT) ) { # now avoiding the "fatal: No names found, cannot describe anything." error by fallbacking to abbrev hash in such case my $gitversion = `git describe --dirty --always`; my $gitbranch = `git rev-parse --abbrev-ref HEAD`; - $clean = $gitversion =~ '-dirty' ? 0 : 1; - + if (not $undecided) { + $clean = $gitversion =~ '-dirty' ? 0 : 1; + } if ( defined($gitbranch) and defined($gitversion) ) { $fullgitinfo = $fullgitinfo.'/'. $gitbranch . '/' . $gitversion; diff --git a/tools/mkversion.sh b/tools/mkversion.sh index cc713d635..850ef2101 100755 --- a/tools/mkversion.sh +++ b/tools/mkversion.sh @@ -21,10 +21,12 @@ if [ "$commandGIT" != "" ]; then # now avoiding the "fatal: No names found, cannot describe anything." error by fallbacking to abbrev hash in such case gitversion=$(git describe --dirty --always) gitbranch=$(git rev-parse --abbrev-ref HEAD) - if [ "$gitversion" != "${gitversion%-dirty}" ]; then - clean=0 - else - clean=1 + if [ "$1" != "--undecided" ]; then + if [ "$gitversion" != "${gitversion%-dirty}" ]; then + clean=0 + else + clean=1 + fi fi if [ "$gitbranch" != "" ] && [ "$gitversion" != "" ]; then fullgitinfo="${fullgitinfo}/${gitbranch}/${gitversion}" From 7848d751c515accec05dc3b4cdd1ab358b37f1d7 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 21 May 2020 12:05:15 +0200 Subject: [PATCH 097/527] make release: hardcode default version --- Makefile | 14 +++++++++++--- 1 file changed, 11 insertions(+), 3 deletions(-) diff --git a/Makefile b/Makefile index 71d61f091..8f92c4152 100644 --- a/Makefile +++ b/Makefile @@ -256,11 +256,19 @@ endif # - Changing banner... @sed -i "s/^#define BANNERMSG3 .*/#define BANNERMSG3 \"Release $(VERSION) - $(RELEASE_NAME)\"/" client/src/proxmark3.c @echo -n "# ";grep "^#define BANNERMSG3" client/src/proxmark3.c - # - Committing... + # - Committing temporarily... @git commit -a -m "Release $(VERSION) - $(RELEASE_NAME)" - # - Tagging... + # - Tagging temporarily... @git tag -a -m "Release $(VERSION) - $(RELEASE_NAME)" $(VERSION) - # - Reverting... + # - Changing default version information based on new tag + @$(SH) tools/mkversion.sh --undecided > common/default_version.c.tmp && $(MV) common/default_version.c.tmp common/default_version.c + # - Deleting tag... + @git tag -d $(VERSION) + # - Amending commit... + @git commit -a --amend -m "Release $(VERSION) - $(RELEASE_NAME)" + # - Tagging again... + @git tag -a -m "Release $(VERSION) - $(RELEASE_NAME)" $(VERSION) + # - Reverting tagged commit... @git revert --no-edit HEAD # Dummy target to test for GNU make availability From b79ccc12ae29ed1d4a14d9f1190bb022381c7eae Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 21 May 2020 12:24:54 +0200 Subject: [PATCH 098/527] make release: document next step --- Makefile | 2 ++ 1 file changed, 2 insertions(+) diff --git a/Makefile b/Makefile index 8f92c4152..c681320ba 100644 --- a/Makefile +++ b/Makefile @@ -270,6 +270,8 @@ endif @git tag -a -m "Release $(VERSION) - $(RELEASE_NAME)" $(VERSION) # - Reverting tagged commit... @git revert --no-edit HEAD + @echo "===================================================================" + @echo "Done! You can now execute 'git push --follow-tags'" # Dummy target to test for GNU make availability _test: From db2e97c8601686e200fb71fa113962aff031add7 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 21 May 2020 12:51:35 +0200 Subject: [PATCH 099/527] Release v4.9230 - Ice Coffee :coffee: --- Makefile.defs | 2 +- client/CMakeLists.txt | 2 +- client/Makefile | 2 +- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 12 ++++++------ client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/deps/zlib.cmake | 2 +- client/src/proxmark3.c | 2 +- common/default_version.c | 11 ++++++----- common_arm/Makefile.common | 2 +- tools/hitag2crack/crack2/Makefile | 2 +- tools/hitag2crack/crack3/Makefile | 2 +- tools/hitag2crack/crack4/Makefile | 2 +- tools/hitag2crack/crack5/Makefile | 2 +- 20 files changed, 30 insertions(+), 29 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index d206611d3..477743d69 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -47,7 +47,7 @@ else RANLIB= ranlib endif -DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wredundant-decls -Wmissing-prototypes -Wchar-subscripts -Wshadow -Wundef -Wwrite-strings -Wunused -Wuninitialized -Wpointer-arith -Winline -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wmissing-declarations -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits -Wold-style-definition # Some more warnings we need first to eliminate, so temporarely tolerated: diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index a56ea5a9a..ce58a4449 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -229,7 +229,7 @@ add_executable( ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) +target_compile_options(proxmark3 PUBLIC -Wall -O3) if (MINGW) # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) diff --git a/client/Makefile b/client/Makefile index 79943d8fa..260f72751 100644 --- a/client/Makefile +++ b/client/Makefile @@ -75,7 +75,7 @@ ifneq (,$(findstring MINGW,$(platform))) PM3CFLAGS += -D_ISOC99_SOURCE PM3CFLAGS += -mno-ms-bitfields -fexec-charset=cp850 endif -CXXFLAGS ?= -Wall -Werror -O3 +CXXFLAGS ?= -Wall -O3 PM3CXXFLAGS = $(CXXFLAGS) -I../include LUAPLATFORM = generic diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index 34780f597..fbf2a6f74 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -13,5 +13,5 @@ add_library(pm3rrg_rdv4_amiibo STATIC target_include_directories(pm3rrg_rdv4_amiibo PRIVATE ../../include ../../common) target_include_directories(pm3rrg_rdv4_amiibo INTERFACE amiitool) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index b16451c07..69b639a84 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -8,5 +8,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index 9efff1445..612265de0 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -27,7 +27,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -41,7 +41,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -55,7 +55,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -69,7 +69,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -83,7 +83,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index a95ff0baf..1a55b7fa5 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -15,5 +15,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 679147124..94c184906 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -45,5 +45,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 63e706889..93a646e0d 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -45,5 +45,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC ) target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index d7e3cfd8a..1040730f1 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index 5a6abda25..c74618149 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index d2d6a5b2a..721873066 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/zlib.cmake b/client/deps/zlib.cmake index 645cbc88d..563508633 100644 --- a/client/deps/zlib.cmake +++ b/client/deps/zlib.cmake @@ -9,5 +9,5 @@ add_library(pm3rrg_rdv4_z STATIC ) target_compile_definitions(pm3rrg_rdv4_z PRIVATE Z_SOLO NO_GZIP ZLIB_PM3_TUNED) -target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_z PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 1e2be44ba..e21b04306 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -34,7 +34,7 @@ #define BANNERMSG1 " :snowflake: iceman@icesql.net" #define BANNERMSG2 " https://github.com/rfidresearchgroup/proxmark3/" -#define BANNERMSG3 "pre-release v4.0" +#define BANNERMSG3 "Release v4.9230 - Ice Coffee :coffee:" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common/default_version.c b/common/default_version.c index 0f42590e8..c89691759 100644 --- a/common/default_version.c +++ b/common/default_version.c @@ -1,5 +1,5 @@ #include "common.h" -/* This is the default version.c file that Makefile.common falls back to if neither sh nor perl are available */ +/* Generated file, do not edit */ #ifndef ON_DEVICE #define SECTVERSINFO #else @@ -8,8 +8,9 @@ const struct version_information SECTVERSINFO version_information = { VERSION_INFORMATION_MAGIC, - 1, /* version 1 */ - 0, /* version information not present */ - 2, /* cleanliness couldn't be determined */ - /* Remaining fields: zero */ + 1, + 1, + 2, + "RRG/Iceman/master/v4.9230", + "2020-05-21 12:51:35", }; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index e2c3ae3bc..8f2a90b3b 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -40,7 +40,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits diff --git a/tools/hitag2crack/crack2/Makefile b/tools/hitag2crack/crack2/Makefile index 4794d6ec4..318034f51 100644 --- a/tools/hitag2crack/crack2/Makefile +++ b/tools/hitag2crack/crack2/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -Werror -O3 +CFLAGS?=-Wall -O3 # Linux libs LIBS=-pthread -D_GNU_SOURCE # Mac libs diff --git a/tools/hitag2crack/crack3/Makefile b/tools/hitag2crack/crack3/Makefile index 318b5db78..1e157eef6 100644 --- a/tools/hitag2crack/crack3/Makefile +++ b/tools/hitag2crack/crack3/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -Werror -O3 +CFLAGS?=-Wall -O3 LIBS= VPATH=../common INC=-I ../common diff --git a/tools/hitag2crack/crack4/Makefile b/tools/hitag2crack/crack4/Makefile index b560577bd..30083c56d 100644 --- a/tools/hitag2crack/crack4/Makefile +++ b/tools/hitag2crack/crack4/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -Werror -O3 +CFLAGS?=-Wall -O3 LIBS=-lpthread VPATH=../common INC=-I ../common diff --git a/tools/hitag2crack/crack5/Makefile b/tools/hitag2crack/crack5/Makefile index 9d19b63ee..8e2b38f82 100644 --- a/tools/hitag2crack/crack5/Makefile +++ b/tools/hitag2crack/crack5/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -Werror -O3 +CFLAGS?=-Wall -O3 LIBS=-lpthread VPATH=../common INC=-I ../common From bf5c054414178499731bf35c2da59b83544ca560 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 21 May 2020 12:51:35 +0200 Subject: [PATCH 100/527] Revert "Release v4.9230 - Ice Coffee :coffee:" This reverts commit db2e97c8601686e200fb71fa113962aff031add7. --- Makefile.defs | 2 +- client/CMakeLists.txt | 2 +- client/Makefile | 2 +- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 12 ++++++------ client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/deps/zlib.cmake | 2 +- client/src/proxmark3.c | 2 +- common/default_version.c | 11 +++++------ common_arm/Makefile.common | 2 +- tools/hitag2crack/crack2/Makefile | 2 +- tools/hitag2crack/crack3/Makefile | 2 +- tools/hitag2crack/crack4/Makefile | 2 +- tools/hitag2crack/crack5/Makefile | 2 +- 20 files changed, 29 insertions(+), 30 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index 477743d69..d206611d3 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -47,7 +47,7 @@ else RANLIB= ranlib endif -DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wredundant-decls -Wmissing-prototypes -Wchar-subscripts -Wshadow -Wundef -Wwrite-strings -Wunused -Wuninitialized -Wpointer-arith -Winline -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wmissing-declarations -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits -Wold-style-definition # Some more warnings we need first to eliminate, so temporarely tolerated: diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index ce58a4449..a56ea5a9a 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -229,7 +229,7 @@ add_executable( ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -O3) +target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) if (MINGW) # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) diff --git a/client/Makefile b/client/Makefile index 260f72751..79943d8fa 100644 --- a/client/Makefile +++ b/client/Makefile @@ -75,7 +75,7 @@ ifneq (,$(findstring MINGW,$(platform))) PM3CFLAGS += -D_ISOC99_SOURCE PM3CFLAGS += -mno-ms-bitfields -fexec-charset=cp850 endif -CXXFLAGS ?= -Wall -O3 +CXXFLAGS ?= -Wall -Werror -O3 PM3CXXFLAGS = $(CXXFLAGS) -I../include LUAPLATFORM = generic diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index fbf2a6f74..34780f597 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -13,5 +13,5 @@ add_library(pm3rrg_rdv4_amiibo STATIC target_include_directories(pm3rrg_rdv4_amiibo PRIVATE ../../include ../../common) target_include_directories(pm3rrg_rdv4_amiibo INTERFACE amiitool) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index 69b639a84..b16451c07 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -8,5 +8,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index 612265de0..9efff1445 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -27,7 +27,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -41,7 +41,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -55,7 +55,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -69,7 +69,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -83,7 +83,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index 1a55b7fa5..a95ff0baf 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -15,5 +15,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 94c184906..679147124 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -45,5 +45,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 93a646e0d..63e706889 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -45,5 +45,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC ) target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index 1040730f1..d7e3cfd8a 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index c74618149..5a6abda25 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index 721873066..d2d6a5b2a 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/zlib.cmake b/client/deps/zlib.cmake index 563508633..645cbc88d 100644 --- a/client/deps/zlib.cmake +++ b/client/deps/zlib.cmake @@ -9,5 +9,5 @@ add_library(pm3rrg_rdv4_z STATIC ) target_compile_definitions(pm3rrg_rdv4_z PRIVATE Z_SOLO NO_GZIP ZLIB_PM3_TUNED) -target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_z PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index e21b04306..1e2be44ba 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -34,7 +34,7 @@ #define BANNERMSG1 " :snowflake: iceman@icesql.net" #define BANNERMSG2 " https://github.com/rfidresearchgroup/proxmark3/" -#define BANNERMSG3 "Release v4.9230 - Ice Coffee :coffee:" +#define BANNERMSG3 "pre-release v4.0" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common/default_version.c b/common/default_version.c index c89691759..0f42590e8 100644 --- a/common/default_version.c +++ b/common/default_version.c @@ -1,5 +1,5 @@ #include "common.h" -/* Generated file, do not edit */ +/* This is the default version.c file that Makefile.common falls back to if neither sh nor perl are available */ #ifndef ON_DEVICE #define SECTVERSINFO #else @@ -8,9 +8,8 @@ const struct version_information SECTVERSINFO version_information = { VERSION_INFORMATION_MAGIC, - 1, - 1, - 2, - "RRG/Iceman/master/v4.9230", - "2020-05-21 12:51:35", + 1, /* version 1 */ + 0, /* version information not present */ + 2, /* cleanliness couldn't be determined */ + /* Remaining fields: zero */ }; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index 8f2a90b3b..e2c3ae3bc 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -40,7 +40,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits diff --git a/tools/hitag2crack/crack2/Makefile b/tools/hitag2crack/crack2/Makefile index 318034f51..4794d6ec4 100644 --- a/tools/hitag2crack/crack2/Makefile +++ b/tools/hitag2crack/crack2/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -O3 +CFLAGS?=-Wall -Werror -O3 # Linux libs LIBS=-pthread -D_GNU_SOURCE # Mac libs diff --git a/tools/hitag2crack/crack3/Makefile b/tools/hitag2crack/crack3/Makefile index 1e157eef6..318b5db78 100644 --- a/tools/hitag2crack/crack3/Makefile +++ b/tools/hitag2crack/crack3/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -O3 +CFLAGS?=-Wall -Werror -O3 LIBS= VPATH=../common INC=-I ../common diff --git a/tools/hitag2crack/crack4/Makefile b/tools/hitag2crack/crack4/Makefile index 30083c56d..b560577bd 100644 --- a/tools/hitag2crack/crack4/Makefile +++ b/tools/hitag2crack/crack4/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -O3 +CFLAGS?=-Wall -Werror -O3 LIBS=-lpthread VPATH=../common INC=-I ../common diff --git a/tools/hitag2crack/crack5/Makefile b/tools/hitag2crack/crack5/Makefile index 8e2b38f82..9d19b63ee 100644 --- a/tools/hitag2crack/crack5/Makefile +++ b/tools/hitag2crack/crack5/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -O3 +CFLAGS?=-Wall -Werror -O3 LIBS=-lpthread VPATH=../common INC=-I ../common From 321080de71693788700a10adc05fee122963c646 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 21 May 2020 13:00:56 +0200 Subject: [PATCH 101/527] make release doc: push latest tag --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index c681320ba..63ca7bf53 100644 --- a/Makefile +++ b/Makefile @@ -271,7 +271,7 @@ endif # - Reverting tagged commit... @git revert --no-edit HEAD @echo "===================================================================" - @echo "Done! You can now execute 'git push --follow-tags'" + @echo "Done! You can now execute 'git push origin $(VERSION)'" # Dummy target to test for GNU make availability _test: From 8e12285f665b0fdc3e2af61dc6023b4cf468732b Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 21 May 2020 19:28:42 +0200 Subject: [PATCH 102/527] introduce CROSS_*FLAGS for cross-compilation --- armsrc/Makefile | 6 ++---- bootrom/Makefile | 2 +- common_arm/Makefile.common | 16 ++++++++-------- 3 files changed, 11 insertions(+), 13 deletions(-) diff --git a/armsrc/Makefile b/armsrc/Makefile index 60b23c9f7..18d36a1b7 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -132,8 +132,6 @@ VERSIONSRC = version.c \ # Do not move this inclusion before the definition of {THUMB,ASM,ARM}SRC include ../common_arm/Makefile.common -COMMON_FLAGS = -Os - INSTALLFW = $(OBJDIR)/fullimage.elf ifneq (,$(FWTAG)) INSTALLFWTAG = $(notdir $(INSTALLFW:%.elf=%-$(FWTAG).elf)) @@ -178,7 +176,7 @@ $(FPGA_COMPRESSOR): $(OBJDIR)/fullimage.stage1.elf: $(VERSIONOBJ) $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ) $(info [=] LD $@) - $(Q)$(CC) $(LDFLAGS) -Wl,-T,ldscript,-Map,$(patsubst %.elf,%.map,$@) -o $@ $^ $(LIBS) + $(Q)$(CC) $(CROSS_LDFLAGS) -Wl,-T,ldscript,-Map,$(patsubst %.elf,%.map,$@) -o $@ $^ $(LIBS) $(OBJDIR)/fullimage.nodata.bin: $(OBJDIR)/fullimage.stage1.elf $(info [-] GEN $@) @@ -206,7 +204,7 @@ $(OBJDIR)/fullimage.data.o: $(OBJDIR)/fullimage.data.bin.z $(OBJDIR)/fullimage.elf: $(OBJDIR)/fullimage.nodata.o $(OBJDIR)/fullimage.data.o $(info [=] LD $@) - $(Q)$(CC) $(LDFLAGS) -Wl,-T,ldscript,-e,_osimage_entry,-Map,$(patsubst %.elf,%.map,$@) -o $@ $^ + $(Q)$(CC) $(CROSS_LDFLAGS) -Wl,-T,ldscript,-e,_osimage_entry,-Map,$(patsubst %.elf,%.map,$@) -o $@ $^ tarbin: $(OBJS) $(info TAR $@) diff --git a/bootrom/Makefile b/bootrom/Makefile index f6cf18174..68597aa22 100644 --- a/bootrom/Makefile +++ b/bootrom/Makefile @@ -52,7 +52,7 @@ tarbin: $(OBJS) $(OBJDIR)/bootrom.elf: $(VERSIONOBJ) $(ASMOBJ) $(ARMOBJ) $(THUMBOBJ) $(info [=] LD $@) - $(Q)$(CC) $(LDFLAGS) -Wl,-T,ldscript-flash,-Map,$(patsubst %.elf,%.map,$@) -o $@ $^ $(LIBS) + $(Q)$(CC) $(CROSS_LDFLAGS) -Wl,-T,ldscript-flash,-Map,$(patsubst %.elf,%.map,$@) -o $@ $^ $(LIBS) clean: $(Q)$(RM) $(OBJDIR)$(PATHSEP)*.o diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index e2c3ae3bc..c8dceead5 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -89,10 +89,10 @@ ifeq ($(NOERROR),1) DEFCFLAGS += -Wno-error endif -CFLAGS ?= $(DEFCFLAGS) -CFLAGS += $(ARMCFLAGS) -c $(INCLUDE) -std=c99 -DON_DEVICE $(APP_CFLAGS) +CROSS_CFLAGS ?= $(DEFCFLAGS) +CROSS_CFLAGS += $(ARMCFLAGS) -c $(INCLUDE) -std=c99 -DON_DEVICE $(APP_CFLAGS) -LDFLAGS += -nostartfiles -nodefaultlibs -Wl,-gc-sections -Wl,--build-id=none -n +CROSS_LDFLAGS += -nostartfiles -nodefaultlibs -Wl,-gc-sections -Wl,--build-id=none -n LIBS = -lgcc # Flags to generate temporary dependency files @@ -107,21 +107,21 @@ VERSIONOBJ = $(patsubst %.c,$(OBJDIR)/%.o,$(notdir $(VERSIONSRC))) $(THUMBOBJ): $(OBJDIR)/%.o: %.c $(INCLUDES) $(info [-] CC $<) - $(Q)$(CC) $(CFLAGS) $(DEPFLAGS) -mthumb -o $@ $< + $(Q)$(CC) $(CROSS_CFLAGS) $(DEPFLAGS) -mthumb -o $@ $< $(Q)$(POSTCOMPILE) $(ARMOBJ): $(OBJDIR)/%.o: %.c $(INCLUDES) $(info [-] CC $<) - $(Q)$(CC) $(CFLAGS) $(DEPFLAGS) -o $@ $< + $(Q)$(CC) $(CROSS_CFLAGS) $(DEPFLAGS) -o $@ $< $(Q)$(POSTCOMPILE) $(ASMOBJ): $(OBJDIR)/%.o: %.s $(info [-] CC $<) - $(Q)$(CC) $(CFLAGS) -o $@ $< + $(Q)$(CC) $(CROSS_CFLAGS) -o $@ $< $(VERSIONOBJ): $(OBJDIR)/%.o: %.c $(INCLUDES) $(info [-] CC $<) - $(Q)$(CC) $(CFLAGS) -mthumb -o $@ $< + $(Q)$(CC) $(CROSS_CFLAGS) -mthumb -o $@ $< # This objcopy call translates physical flash addresses to logical addresses # without touching start address or RAM addresses (.bss and .data sections) @@ -135,7 +135,7 @@ $(OBJDIR)/%.s19: $(OBJDIR)/%.elf $(Q)$(OBJCOPY) -Osrec --srec-forceS3 --strip-debug $(OBJCOPY_TRANSLATIONS) $^ $@ # easy printing of MAKE VARIABLES -print-%: ; @echo $* = $($*) +print-%: ; @echo $* = $($*) # Automatic dependency generation DEPENDENCY_FILES = $(patsubst %.c,$(OBJDIR)/%.d,$(notdir $(THUMBSRC))) \ From 4092effe93b3f3e084389cd1d1316764d1981aa1 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 21 May 2020 19:38:20 +0200 Subject: [PATCH 103/527] Document CROSS_*FLAGS --- doc/md/Development/Maintainers.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/md/Development/Maintainers.md b/doc/md/Development/Maintainers.md index 85fcf8963..2a49343fd 100644 --- a/doc/md/Development/Maintainers.md +++ b/doc/md/Development/Maintainers.md @@ -49,7 +49,9 @@ and it will be added along the other firmware as: For verbose usage and see the actual commands being executed, add `V=1`. -`CFLAGS` and `LDFLAGS` can be overriden by environment variables. +`CFLAGS` and `LDFLAGS` can be overriden by environment variables for client-side components. + +`CROSS_CFLAGS` and `CROSS_LDFLAGS` can be overriden by environment variables for ARM-side components. Default compiler is gcc but you can use clang for the non-ARM parts with e.g. `make client CC=clang CXX=clang++ LD=clang++`. From c07a8aeba374f651a9c19e111ca282f47d874cb7 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 21 May 2020 20:15:46 +0200 Subject: [PATCH 104/527] textual --- Makefile.platform.sample | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/Makefile.platform.sample b/Makefile.platform.sample index 8d587e3b7..8a31a0e9c 100644 --- a/Makefile.platform.sample +++ b/Makefile.platform.sample @@ -2,7 +2,7 @@ # Run 'make PLATFORM=' to get an exhaustive list of possible parameters for this file. PLATFORM=PM3RDV4 +#PLATFORM=PM3OTHER # If you want more than one PLATFORM_EXTRAS option, separate them by spaces: #PLATFORM_EXTRAS=BTADDON -#STANDALONE=LF_SAMYRUN -STANDALONE=LF_ICEHID +#STANDALONE=HF_MSDSAL From a19ba257af631b770ac6fb0989b2984eac4ac7c9 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 21 May 2020 21:45:54 +0200 Subject: [PATCH 105/527] fix: #746 - ProxSpace 64b seem to report both _WIN32 and _WIN64 --- tools/mf_nonce_brute/mf_nonce_brute.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/tools/mf_nonce_brute/mf_nonce_brute.c b/tools/mf_nonce_brute/mf_nonce_brute.c index 3bd2a6f31..7edcf4824 100644 --- a/tools/mf_nonce_brute/mf_nonce_brute.c +++ b/tools/mf_nonce_brute/mf_nonce_brute.c @@ -1,7 +1,9 @@ #define __STDC_FORMAT_MACROS -#if defined(_WIN32) -# define _USE_32BIT_TIME_T 1 +#if !defined(_WIN64) + #if defined(_WIN32) || defined(__WIN32__) + # define _USE_32BIT_TIME_T 1 + #endif #endif #include @@ -56,7 +58,7 @@ int global_counter = 0; int global_fin_flag = 0; int global_found = 0; int global_found_candidate = 0; -size_t thread_count = 4; +size_t thread_count = 2; static uint16_t parity_from_err(uint32_t data, uint16_t par_err) { @@ -350,7 +352,7 @@ int main(int argc, char *argv[]) { //calc (parity XOR corresponding nonce bit encoded with the same keystream bit) uint16_t xored = xored_bits(nt_par, nt_enc, ar_par, ar_enc, at_par, at_enc); -#ifndef __WIN32 +#if !defined(_WIN32) || !defined(__WIN32__) thread_count = sysconf(_SC_NPROCESSORS_CONF); if (thread_count < 2) thread_count = 2; From 833bc4d9a3f2c1dcef4a72393663f75e0ba0fbd1 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 21 May 2020 21:55:15 +0200 Subject: [PATCH 106/527] Release v4.9237 - Ice Coffee :coffee: --- Makefile.defs | 2 +- client/CMakeLists.txt | 2 +- client/Makefile | 2 +- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 12 ++++++------ client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/deps/zlib.cmake | 2 +- client/src/proxmark3.c | 2 +- common/default_version.c | 11 ++++++----- common_arm/Makefile.common | 2 +- tools/hitag2crack/crack2/Makefile | 2 +- tools/hitag2crack/crack3/Makefile | 2 +- tools/hitag2crack/crack4/Makefile | 2 +- tools/hitag2crack/crack5/Makefile | 2 +- 20 files changed, 30 insertions(+), 29 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index d206611d3..477743d69 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -47,7 +47,7 @@ else RANLIB= ranlib endif -DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wredundant-decls -Wmissing-prototypes -Wchar-subscripts -Wshadow -Wundef -Wwrite-strings -Wunused -Wuninitialized -Wpointer-arith -Winline -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wmissing-declarations -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits -Wold-style-definition # Some more warnings we need first to eliminate, so temporarely tolerated: diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index a56ea5a9a..ce58a4449 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -229,7 +229,7 @@ add_executable( ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) +target_compile_options(proxmark3 PUBLIC -Wall -O3) if (MINGW) # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) diff --git a/client/Makefile b/client/Makefile index 79943d8fa..260f72751 100644 --- a/client/Makefile +++ b/client/Makefile @@ -75,7 +75,7 @@ ifneq (,$(findstring MINGW,$(platform))) PM3CFLAGS += -D_ISOC99_SOURCE PM3CFLAGS += -mno-ms-bitfields -fexec-charset=cp850 endif -CXXFLAGS ?= -Wall -Werror -O3 +CXXFLAGS ?= -Wall -O3 PM3CXXFLAGS = $(CXXFLAGS) -I../include LUAPLATFORM = generic diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index 34780f597..fbf2a6f74 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -13,5 +13,5 @@ add_library(pm3rrg_rdv4_amiibo STATIC target_include_directories(pm3rrg_rdv4_amiibo PRIVATE ../../include ../../common) target_include_directories(pm3rrg_rdv4_amiibo INTERFACE amiitool) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index b16451c07..69b639a84 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -8,5 +8,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index 9efff1445..612265de0 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -27,7 +27,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -41,7 +41,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -55,7 +55,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -69,7 +69,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -83,7 +83,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index a95ff0baf..1a55b7fa5 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -15,5 +15,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 679147124..94c184906 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -45,5 +45,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 63e706889..93a646e0d 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -45,5 +45,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC ) target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index d7e3cfd8a..1040730f1 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index 5a6abda25..c74618149 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index d2d6a5b2a..721873066 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/zlib.cmake b/client/deps/zlib.cmake index 645cbc88d..563508633 100644 --- a/client/deps/zlib.cmake +++ b/client/deps/zlib.cmake @@ -9,5 +9,5 @@ add_library(pm3rrg_rdv4_z STATIC ) target_compile_definitions(pm3rrg_rdv4_z PRIVATE Z_SOLO NO_GZIP ZLIB_PM3_TUNED) -target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -Werror -O3) +target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -O3) set_property(TARGET pm3rrg_rdv4_z PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 1e2be44ba..cc91e1aaf 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -34,7 +34,7 @@ #define BANNERMSG1 " :snowflake: iceman@icesql.net" #define BANNERMSG2 " https://github.com/rfidresearchgroup/proxmark3/" -#define BANNERMSG3 "pre-release v4.0" +#define BANNERMSG3 "Release v4.9237 - Ice Coffee :coffee:" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common/default_version.c b/common/default_version.c index 0f42590e8..86ba9f9ab 100644 --- a/common/default_version.c +++ b/common/default_version.c @@ -1,5 +1,5 @@ #include "common.h" -/* This is the default version.c file that Makefile.common falls back to if neither sh nor perl are available */ +/* Generated file, do not edit */ #ifndef ON_DEVICE #define SECTVERSINFO #else @@ -8,8 +8,9 @@ const struct version_information SECTVERSINFO version_information = { VERSION_INFORMATION_MAGIC, - 1, /* version 1 */ - 0, /* version information not present */ - 2, /* cleanliness couldn't be determined */ - /* Remaining fields: zero */ + 1, + 1, + 2, + "RRG/Iceman/master/v4.9237", + "2020-05-21 21:55:15", }; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index c8dceead5..d5b2c0557 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -40,7 +40,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits diff --git a/tools/hitag2crack/crack2/Makefile b/tools/hitag2crack/crack2/Makefile index 4794d6ec4..318034f51 100644 --- a/tools/hitag2crack/crack2/Makefile +++ b/tools/hitag2crack/crack2/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -Werror -O3 +CFLAGS?=-Wall -O3 # Linux libs LIBS=-pthread -D_GNU_SOURCE # Mac libs diff --git a/tools/hitag2crack/crack3/Makefile b/tools/hitag2crack/crack3/Makefile index 318b5db78..1e157eef6 100644 --- a/tools/hitag2crack/crack3/Makefile +++ b/tools/hitag2crack/crack3/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -Werror -O3 +CFLAGS?=-Wall -O3 LIBS= VPATH=../common INC=-I ../common diff --git a/tools/hitag2crack/crack4/Makefile b/tools/hitag2crack/crack4/Makefile index b560577bd..30083c56d 100644 --- a/tools/hitag2crack/crack4/Makefile +++ b/tools/hitag2crack/crack4/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -Werror -O3 +CFLAGS?=-Wall -O3 LIBS=-lpthread VPATH=../common INC=-I ../common diff --git a/tools/hitag2crack/crack5/Makefile b/tools/hitag2crack/crack5/Makefile index 9d19b63ee..8e2b38f82 100644 --- a/tools/hitag2crack/crack5/Makefile +++ b/tools/hitag2crack/crack5/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -Werror -O3 +CFLAGS?=-Wall -O3 LIBS=-lpthread VPATH=../common INC=-I ../common From d40251ff0be75f97ed88b6c8fa6e61674e190edd Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 21 May 2020 21:55:15 +0200 Subject: [PATCH 107/527] Revert "Release v4.9237 - Ice Coffee :coffee:" This reverts commit 833bc4d9a3f2c1dcef4a72393663f75e0ba0fbd1. --- Makefile.defs | 2 +- client/CMakeLists.txt | 2 +- client/Makefile | 2 +- client/deps/amiibo.cmake | 2 +- client/deps/cliparser.cmake | 2 +- client/deps/hardnested.cmake | 12 ++++++------ client/deps/jansson.cmake | 2 +- client/deps/lua.cmake | 2 +- client/deps/mbedtls.cmake | 2 +- client/deps/reveng.cmake | 2 +- client/deps/tinycbor.cmake | 2 +- client/deps/whereami.cmake | 2 +- client/deps/zlib.cmake | 2 +- client/src/proxmark3.c | 2 +- common/default_version.c | 11 +++++------ common_arm/Makefile.common | 2 +- tools/hitag2crack/crack2/Makefile | 2 +- tools/hitag2crack/crack3/Makefile | 2 +- tools/hitag2crack/crack4/Makefile | 2 +- tools/hitag2crack/crack5/Makefile | 2 +- 20 files changed, 29 insertions(+), 30 deletions(-) diff --git a/Makefile.defs b/Makefile.defs index 477743d69..d206611d3 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -47,7 +47,7 @@ else RANLIB= ranlib endif -DEFCFLAGS = -Wall -O3 -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Werror -O3 -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wredundant-decls -Wmissing-prototypes -Wchar-subscripts -Wshadow -Wundef -Wwrite-strings -Wunused -Wuninitialized -Wpointer-arith -Winline -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wmissing-declarations -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits -Wold-style-definition # Some more warnings we need first to eliminate, so temporarely tolerated: diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index ce58a4449..a56ea5a9a 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -229,7 +229,7 @@ add_executable( ${ADDITIONAL_SRC} ) -target_compile_options(proxmark3 PUBLIC -Wall -O3) +target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) if (MINGW) # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) diff --git a/client/Makefile b/client/Makefile index 260f72751..79943d8fa 100644 --- a/client/Makefile +++ b/client/Makefile @@ -75,7 +75,7 @@ ifneq (,$(findstring MINGW,$(platform))) PM3CFLAGS += -D_ISOC99_SOURCE PM3CFLAGS += -mno-ms-bitfields -fexec-charset=cp850 endif -CXXFLAGS ?= -Wall -O3 +CXXFLAGS ?= -Wall -Werror -O3 PM3CXXFLAGS = $(CXXFLAGS) -I../include LUAPLATFORM = generic diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index fbf2a6f74..34780f597 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -13,5 +13,5 @@ add_library(pm3rrg_rdv4_amiibo STATIC target_include_directories(pm3rrg_rdv4_amiibo PRIVATE ../../include ../../common) target_include_directories(pm3rrg_rdv4_amiibo INTERFACE amiitool) -target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_amiibo PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/cliparser.cmake b/client/deps/cliparser.cmake index 69b639a84..b16451c07 100644 --- a/client/deps/cliparser.cmake +++ b/client/deps/cliparser.cmake @@ -8,5 +8,5 @@ target_include_directories(pm3rrg_rdv4_cliparser PRIVATE ../../include ../src) target_include_directories(pm3rrg_rdv4_cliparser INTERFACE cliparser) -target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_cliparser PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_cliparser PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index 612265de0..9efff1445 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -2,7 +2,7 @@ add_library(pm3rrg_rdv4_hardnested_nosimd OBJECT hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) -target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_hardnested_nosimd PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested_nosimd PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested_nosimd PRIVATE @@ -27,7 +27,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_mmx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_mmx BEFORE PRIVATE -mmmx -mno-sse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_mmx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -41,7 +41,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_sse2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_sse2 BEFORE PRIVATE -mmmx -msse2 -mno-avx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_sse2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -55,7 +55,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx BEFORE PRIVATE -mmmx -msse2 -mavx -mno-avx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -69,7 +69,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx2 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx2 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mno-avx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx2 PROPERTY POSITION_INDEPENDENT_CODE ON) @@ -83,7 +83,7 @@ if ("${CMAKE_SYSTEM_PROCESSOR}" IN_LIST X86_CPUS) hardnested/hardnested_bf_core.c hardnested/hardnested_bitarray_core.c) - target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -O3) + target_compile_options(pm3rrg_rdv4_hardnested_avx512 PRIVATE -Wall -Werror -O3) target_compile_options(pm3rrg_rdv4_hardnested_avx512 BEFORE PRIVATE -mmmx -msse2 -mavx -mavx2 -mavx512f) set_property(TARGET pm3rrg_rdv4_hardnested_avx512 PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index 1a55b7fa5..a95ff0baf 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -15,5 +15,5 @@ add_library(pm3rrg_rdv4_jansson STATIC target_compile_definitions(pm3rrg_rdv4_jansson PRIVATE HAVE_STDINT_H) target_include_directories(pm3rrg_rdv4_jansson INTERFACE jansson) -target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Wno-unused-function -O3) +target_compile_options(pm3rrg_rdv4_jansson PRIVATE -Wall -Werror -Wno-unused-function -O3) set_property(TARGET pm3rrg_rdv4_jansson PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 94c184906..679147124 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -45,5 +45,5 @@ if (NOT MINGW) endif (NOT MINGW) target_include_directories(pm3rrg_rdv4_lua INTERFACE liblua) -target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_lua PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_lua PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 93a646e0d..63e706889 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -45,5 +45,5 @@ add_library(pm3rrg_rdv4_mbedtls STATIC ) target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) -target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/reveng.cmake b/client/deps/reveng.cmake index 1040730f1..d7e3cfd8a 100644 --- a/client/deps/reveng.cmake +++ b/client/deps/reveng.cmake @@ -13,5 +13,5 @@ target_include_directories(pm3rrg_rdv4_reveng PRIVATE ../src ../../include) target_include_directories(pm3rrg_rdv4_reveng INTERFACE reveng) -target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_reveng PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_reveng PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/tinycbor.cmake b/client/deps/tinycbor.cmake index c74618149..5a6abda25 100644 --- a/client/deps/tinycbor.cmake +++ b/client/deps/tinycbor.cmake @@ -11,5 +11,5 @@ add_library(pm3rrg_rdv4_tinycbor STATIC target_include_directories(pm3rrg_rdv4_tinycbor INTERFACE tinycbor) # Strange errors on Mingw when compiling with -O3 -target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -O2) +target_compile_options(pm3rrg_rdv4_tinycbor PRIVATE -Wall -Werror -O2) set_property(TARGET pm3rrg_rdv4_tinycbor PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/whereami.cmake b/client/deps/whereami.cmake index 721873066..d2d6a5b2a 100644 --- a/client/deps/whereami.cmake +++ b/client/deps/whereami.cmake @@ -2,5 +2,5 @@ add_library(pm3rrg_rdv4_whereami STATIC whereami/whereami.c) target_compile_definitions(pm3rrg_rdv4_whereami PRIVATE WAI_PM3_TUNED) target_include_directories(pm3rrg_rdv4_whereami INTERFACE whereami) -target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_whereami PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_whereami PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/zlib.cmake b/client/deps/zlib.cmake index 563508633..645cbc88d 100644 --- a/client/deps/zlib.cmake +++ b/client/deps/zlib.cmake @@ -9,5 +9,5 @@ add_library(pm3rrg_rdv4_z STATIC ) target_compile_definitions(pm3rrg_rdv4_z PRIVATE Z_SOLO NO_GZIP ZLIB_PM3_TUNED) -target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -O3) +target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_z PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index cc91e1aaf..1e2be44ba 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -34,7 +34,7 @@ #define BANNERMSG1 " :snowflake: iceman@icesql.net" #define BANNERMSG2 " https://github.com/rfidresearchgroup/proxmark3/" -#define BANNERMSG3 "Release v4.9237 - Ice Coffee :coffee:" +#define BANNERMSG3 "pre-release v4.0" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; diff --git a/common/default_version.c b/common/default_version.c index 86ba9f9ab..0f42590e8 100644 --- a/common/default_version.c +++ b/common/default_version.c @@ -1,5 +1,5 @@ #include "common.h" -/* Generated file, do not edit */ +/* This is the default version.c file that Makefile.common falls back to if neither sh nor perl are available */ #ifndef ON_DEVICE #define SECTVERSINFO #else @@ -8,9 +8,8 @@ const struct version_information SECTVERSINFO version_information = { VERSION_INFORMATION_MAGIC, - 1, - 1, - 2, - "RRG/Iceman/master/v4.9237", - "2020-05-21 21:55:15", + 1, /* version 1 */ + 0, /* version information not present */ + 2, /* cleanliness couldn't be determined */ + /* Remaining fields: zero */ }; diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index d5b2c0557..c8dceead5 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -40,7 +40,7 @@ VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/ INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h ARMCFLAGS = -mthumb-interwork -fno-builtin -DEFCFLAGS = -Wall -Os -pedantic -fstrict-aliasing -pipe +DEFCFLAGS = -Wall -Werror -Os -pedantic -fstrict-aliasing -pipe # Some more warnings we want as errors: DEFCFLAGS += -Wbad-function-cast -Wchar-subscripts -Wundef -Wunused -Wuninitialized -Wpointer-arith -Wformat -Wformat-security -Winit-self -Wmissing-include-dirs -Wnested-externs -Wempty-body -Wignored-qualifiers -Wmissing-field-initializers -Wtype-limits diff --git a/tools/hitag2crack/crack2/Makefile b/tools/hitag2crack/crack2/Makefile index 318034f51..4794d6ec4 100644 --- a/tools/hitag2crack/crack2/Makefile +++ b/tools/hitag2crack/crack2/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -O3 +CFLAGS?=-Wall -Werror -O3 # Linux libs LIBS=-pthread -D_GNU_SOURCE # Mac libs diff --git a/tools/hitag2crack/crack3/Makefile b/tools/hitag2crack/crack3/Makefile index 1e157eef6..318b5db78 100644 --- a/tools/hitag2crack/crack3/Makefile +++ b/tools/hitag2crack/crack3/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -O3 +CFLAGS?=-Wall -Werror -O3 LIBS= VPATH=../common INC=-I ../common diff --git a/tools/hitag2crack/crack4/Makefile b/tools/hitag2crack/crack4/Makefile index 30083c56d..b560577bd 100644 --- a/tools/hitag2crack/crack4/Makefile +++ b/tools/hitag2crack/crack4/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -O3 +CFLAGS?=-Wall -Werror -O3 LIBS=-lpthread VPATH=../common INC=-I ../common diff --git a/tools/hitag2crack/crack5/Makefile b/tools/hitag2crack/crack5/Makefile index 8e2b38f82..9d19b63ee 100644 --- a/tools/hitag2crack/crack5/Makefile +++ b/tools/hitag2crack/crack5/Makefile @@ -1,4 +1,4 @@ -CFLAGS?=-Wall -O3 +CFLAGS?=-Wall -Werror -O3 LIBS=-lpthread VPATH=../common INC=-I ../common From 2cb198743ac0eee76c726471862ced2c951e0d78 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 21 May 2020 22:04:21 +0200 Subject: [PATCH 108/527] minor release doc fix --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 63ca7bf53..d39183105 100644 --- a/Makefile +++ b/Makefile @@ -271,7 +271,7 @@ endif # - Reverting tagged commit... @git revert --no-edit HEAD @echo "===================================================================" - @echo "Done! You can now execute 'git push origin $(VERSION)'" + @echo "Done! You can now execute 'git push && git push origin $(VERSION)'" # Dummy target to test for GNU make availability _test: From 4eecf9a83c45f6a890bc53f41e6cf29c13f0bd06 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 21 May 2020 22:23:12 +0200 Subject: [PATCH 109/527] textual --- doc/md/Use_of_Proxmark/1_Validation.md | 36 ++++++++++++++------------ 1 file changed, 19 insertions(+), 17 deletions(-) diff --git a/doc/md/Use_of_Proxmark/1_Validation.md b/doc/md/Use_of_Proxmark/1_Validation.md index 507648e64..09432b067 100644 --- a/doc/md/Use_of_Proxmark/1_Validation.md +++ b/doc/md/Use_of_Proxmark/1_Validation.md @@ -3,26 +3,27 @@ If all went well you should get some information about the firmware and memory usage as well as the prompt, something like this. ``` +[=] Session log /home/iceman/.proxmark3/log_20200521.txt +[=] Loading Preferences... +[+] loaded from JSON file /home/iceman/.proxmark3/preferences.json +[=] Using UART port /dev/ttyS7 +[=] Communicating with PM3 over USB-CDC -██████╗ ███╗ ███╗ ████╗ ...iceman fork -██╔══██╗████╗ ████║ ══█║ ...dedicated to RDV40 + +██████╗ ███╗ ███╗ ████╗ +██╔══██╗████╗ ████║ ══█║ ██████╔╝██╔████╔██║ ████╔╝ -██╔═══╝ ██║╚██╔╝██║ ══█║ iceman@icesql.net +██╔═══╝ ██║╚██╔╝██║ ══█║ :snowflake: iceman@icesql.net ██║ ██║ ╚═╝ ██║ ████╔╝ https://github.com/rfidresearchgroup/proxmark3/ -╚═╝ ╚═╝ ╚═╝ ╚═══╝ pre-release v4.0 +╚═╝ ╚═╝ ╚═╝ ╚═══╝ Release v4.9237 - Ice Coffee :coffee: -Support iceman on patreon, https://www.patreon.com/iceman1001/ - - -[=] Using UART port /dev/pm3-0 -[=] Communicating with PM3 over USB-CDC [ Proxmark3 RFID instrument ] - [ CLIENT ] - client: RRG/Iceman - + client: RRG/Iceman/master/v4.9237-2-g2cb19874 2020-05-21 22:00:00 + compiled with GCC 9.3.0 OS:Linux ARCH:x86_64 + [ PROXMARK RDV4 ] external flash: present smartcard reader: present @@ -31,17 +32,18 @@ Support iceman on patreon, https://www.patreon.com/iceman1001/ FPC USART for BT add-on support: absent [ ARM ] - bootrom: RRG/Iceman/master/5ab9716e 2019-05-01 11:02:08 - os: RRG/Iceman/master/6b5a0f83 2019-05-04 23:57:47 + bootrom: RRG/Iceman/master/v4.9237-2-g2cb19874 2020-05-21 22:00:10 + os: RRG/Iceman/master/v4.9237-2-g2cb19874 2019-05-21 22:00:26 + compiled with GCC 8.3.1 20190703 (release) [gcc-8-branch revision 273027] [ FPGA ] - LF image built for 2s30vq100 on 2019/ 4/18 at 9:35:32 - HF image built for 2s30vq100 on 2018/ 9/ 3 at 21:40:23 + LF image built for 2s30vq100 on 2020/02/22 at 12:51:14 + HF image built for 2s30vq100 on 2020/01/12 at 15:31:16 [ Hardware ] --= uC: AT91SAM7S512 Rev B --= Embedded Processor: ARM7TDMI - --= Nonvolatile Program Memory Size: 512K bytes, Used: 250913 bytes (48%) Free: 273375 bytes (52%) + --= Nonvolatile Program Memory Size: 512K bytes, Used: 291382 bytes (56%) Free: 232906 bytes (44%) --= Second Nonvolatile Program Memory Size: None --= Internal SRAM Size: 64K bytes --= Architecture Identifier: AT91SAM7Sxx Series From de8710f854c5483cb8a75396ae5b1528ffd4dc4a Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Thu, 21 May 2020 22:24:00 +0200 Subject: [PATCH 110/527] bleeding edge bae! --- client/src/proxmark3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 1e2be44ba..f50a15b7f 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -34,7 +34,7 @@ #define BANNERMSG1 " :snowflake: iceman@icesql.net" #define BANNERMSG2 " https://github.com/rfidresearchgroup/proxmark3/" -#define BANNERMSG3 "pre-release v4.0" +#define BANNERMSG3 " bleeding edge" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; From 8847bed0230105d5cd24827b1fe0e7b8e168d9ef Mon Sep 17 00:00:00 2001 From: Iceman Date: Thu, 21 May 2020 22:28:01 +0200 Subject: [PATCH 111/527] Update 1_Validation.md --- doc/md/Use_of_Proxmark/1_Validation.md | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/doc/md/Use_of_Proxmark/1_Validation.md b/doc/md/Use_of_Proxmark/1_Validation.md index 09432b067..9bb93c453 100644 --- a/doc/md/Use_of_Proxmark/1_Validation.md +++ b/doc/md/Use_of_Proxmark/1_Validation.md @@ -13,9 +13,9 @@ If all went well you should get some information about the firmware and memory u ██████╗ ███╗ ███╗ ████╗ ██╔══██╗████╗ ████║ ══█║ ██████╔╝██╔████╔██║ ████╔╝ -██╔═══╝ ██║╚██╔╝██║ ══█║ :snowflake: iceman@icesql.net +██╔═══╝ ██║╚██╔╝██║ ══█║ iceman@icesql.net ██║ ██║ ╚═╝ ██║ ████╔╝ https://github.com/rfidresearchgroup/proxmark3/ -╚═╝ ╚═╝ ╚═╝ ╚═══╝ Release v4.9237 - Ice Coffee :coffee: +╚═╝ ╚═╝ ╚═╝ ╚═══╝ Release v4.9237 - Ice Coffee [ Proxmark3 RFID instrument ] @@ -50,10 +50,10 @@ If all went well you should get some information about the firmware and memory u --= Nonvolatile Program Memory Type: Embedded Flash Memory -pm3 --> +[usb] pm3 --> ``` -This `pm3 --> ` is the Proxmark3 interactive prompt. +This `[usb] pm3 --> ` is the Proxmark3 interactive prompt. ### To get interactive help @@ -64,16 +64,16 @@ For basic help type `help`. Or for help on a set of sub commands type the comman These commands will return some info about your Proxmark software and hardware status. ``` -pm3 --> hw status -pm3 --> hw version -pm3 --> hw tune +[usb] pm3 --> hw status +[usb] pm3 --> hw version +[usb] pm3 --> hw tune ``` You are now ready to use your newly flashed proxmark3 device. Many commands uses the `h` parameter to show a help text. ### To quit the client ``` -pm3 --> quit +[usb] pm3 --> quit ``` or simple press `CTRL-D`. From ebfd18a8f16e96b862060c3346e5989ea3235f32 Mon Sep 17 00:00:00 2001 From: Iceman Date: Thu, 21 May 2020 22:28:55 +0200 Subject: [PATCH 112/527] Update 2_Configuration-and-Verification.md --- .../2_Configuration-and-Verification.md | 24 +++++++++---------- 1 file changed, 12 insertions(+), 12 deletions(-) diff --git a/doc/md/Use_of_Proxmark/2_Configuration-and-Verification.md b/doc/md/Use_of_Proxmark/2_Configuration-and-Verification.md index 8b88115c6..fe87ec633 100644 --- a/doc/md/Use_of_Proxmark/2_Configuration-and-Verification.md +++ b/doc/md/Use_of_Proxmark/2_Configuration-and-Verification.md @@ -1,16 +1,16 @@ ### First things on your RDV40 You will need to run these commands to make sure your rdv4 is prepared ``` -pm3 --> mem load f mfc_default_keys m -pm3 --> mem load f t55xx_default_pwds t -pm3 --> mem load f iclass_default_keys i -pm3 --> lf t55xx deviceconfig a 29 b 17 c 15 d 47 e 15 p -pm3 --> lf t55xx deviceconfig r 1 a 31 b 20 c 18 d 50 e 15 p -pm3 --> lf t55xx deviceconfig r 2 a 31 b 20 c 18 d 40 e 15 p -pm3 --> lf t55xx deviceconfig r 3 a 29 b 17 c 15 d 31 e 15 f 47 g 63 p +[usb] pm3 --> mem load f mfc_default_keys m +[usb] pm3 --> mem load f t55xx_default_pwds t +[usb] pm3 --> mem load f iclass_default_keys i +[usb] pm3 --> lf t55xx deviceconfig a 29 b 17 c 15 d 47 e 15 p +[usb] pm3 --> lf t55xx deviceconfig r 1 a 31 b 20 c 18 d 50 e 15 p +[usb] pm3 --> lf t55xx deviceconfig r 2 a 31 b 20 c 18 d 40 e 15 p +[usb] pm3 --> lf t55xx deviceconfig r 3 a 29 b 17 c 15 d 31 e 15 f 47 g 63 p Set all t55xx settings to defaults (will set all 4 at once) -pm3 --> lf t55xx deviceconfig z p +[usb] pm3 --> lf t55xx deviceconfig z p ``` ### Verify sim module firmware version @@ -20,7 +20,7 @@ To make sure you got the latest sim module firmware. _Lastest version is v3.11_ ``` -pm3 --> hw status +[usb] pm3 --> hw status ``` Find version in the long output, look for these two lines @@ -46,9 +46,9 @@ Don't not turn off your device during the execution of this command!! Even its a quite fast command you should be warned. You may brick it if you interrupt it. ``` -pm3 --> sc upgrade f /usr/local/share/proxmark3/firmware/sim011.bin +[usb] pm3 --> sc upgrade f /usr/local/share/proxmark3/firmware/sim011.bin # or if from local repo -pm3 --> sc upgrade f tools/simmodule/sim011.bin +[usb] pm3 --> sc upgrade f tools/simmodule/sim011.bin ``` You get the following output if the execution was successful: @@ -71,7 +71,7 @@ You get the following output if the execution was successful: Run hw status command to verify that the upgrade went well. ``` -pm3 --> hw status +[usb] pm3 --> hw status ``` ## Next steps From d8c2479e6090fdd633f21b08b4767160f9f85725 Mon Sep 17 00:00:00 2001 From: Iceman Date: Thu, 21 May 2020 22:29:18 +0200 Subject: [PATCH 113/527] Update 3_Commands-and-Features.md --- doc/md/Use_of_Proxmark/3_Commands-and-Features.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/md/Use_of_Proxmark/3_Commands-and-Features.md b/doc/md/Use_of_Proxmark/3_Commands-and-Features.md index deb7036d7..195468002 100644 --- a/doc/md/Use_of_Proxmark/3_Commands-and-Features.md +++ b/doc/md/Use_of_Proxmark/3_Commands-and-Features.md @@ -21,17 +21,17 @@ Here are some commands to start off with. To get an overview of the available commands for LF RFID and HF RFID: ``` -pm3 --> lf -pm3 --> hf +[usb] pm3 --> lf +[usb] pm3 --> hf ``` To search quickly for known LF or HF tags: ``` -pm3 --> lf search -pm3 --> hf search +[usb] pm3 --> lf search +[usb] pm3 --> hf search ``` To get info on a ISO14443-A tag: ``` -pm3 --> hf 14a info +[usb] pm3 --> hf 14a info ``` From f27760afd69be0844a05a8348ca74cc962a7fbdd Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 22 May 2020 00:24:08 +0200 Subject: [PATCH 114/527] text --- client/src/proxmark3.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index f50a15b7f..60f3b5be8 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -34,7 +34,7 @@ #define BANNERMSG1 " :snowflake: iceman@icesql.net" #define BANNERMSG2 " https://github.com/rfidresearchgroup/proxmark3/" -#define BANNERMSG3 " bleeding edge" +#define BANNERMSG3 " bleeding edge :coffee:" typedef enum LogoMode { UTF8, ANSI, ASCII } LogoMode; From 888235cd74a3e768068ba5f6c2d1d38b9d73a878 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 22 May 2020 01:02:00 +0200 Subject: [PATCH 115/527] gitignore --- .gitignore | 1 + 1 file changed, 1 insertion(+) diff --git a/.gitignore b/.gitignore index d28933d82..bdd98d374 100644 --- a/.gitignore +++ b/.gitignore @@ -40,6 +40,7 @@ Makefile.platform # cmake client/build/ +client/android/build/ # Coverity cov-int/ From 0a2eb6783c204ebfc4416a8435446da7685db00f Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 22 May 2020 12:41:19 +0200 Subject: [PATCH 116/527] chmod perl scripts --- tools/mkversion.pl | 0 tools/rfidtest.pl | 0 2 files changed, 0 insertions(+), 0 deletions(-) mode change 100644 => 100755 tools/mkversion.pl mode change 100644 => 100755 tools/rfidtest.pl diff --git a/tools/mkversion.pl b/tools/mkversion.pl old mode 100644 new mode 100755 diff --git a/tools/rfidtest.pl b/tools/rfidtest.pl old mode 100644 new mode 100755 From 0a263b353bba2b1c72699027c1775ea88f98bd2e Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 22 May 2020 13:02:52 +0200 Subject: [PATCH 117/527] make release: remove mkversion calls --- Makefile | 3 +++ 1 file changed, 3 insertions(+) diff --git a/Makefile b/Makefile index d39183105..f78964b94 100644 --- a/Makefile +++ b/Makefile @@ -262,6 +262,9 @@ endif @git tag -a -m "Release $(VERSION) - $(RELEASE_NAME)" $(VERSION) # - Changing default version information based on new tag @$(SH) tools/mkversion.sh --undecided > common/default_version.c.tmp && $(MV) common/default_version.c.tmp common/default_version.c + # - Removing mkversion calls + @sed -i 's#^.*\.\./tools/mkversion.sh.*|| #\t$$(Q)#' client/Makefile bootrom/Makefile armsrc/Makefile + @sed -i '/COMMAND/s/sh .*|| //' client/CMakeLists.txt # - Deleting tag... @git tag -d $(VERSION) # - Amending commit... From 5dc1b6cc6fbe85629b014020d0244cfa19851af3 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 22 May 2020 13:33:03 +0200 Subject: [PATCH 118/527] make release: trigger git calls only on recipe --- Makefile | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/Makefile b/Makefile index f78964b94..44db7c01d 100644 --- a/Makefile +++ b/Makefile @@ -238,15 +238,9 @@ endif release: VERSION="v4.$(shell git log --oneline master | wc -l)" release: -ifneq ($(shell git rev-parse --abbrev-ref HEAD),master) - $(error "!!! you are not on master branch, aborting") -endif -ifeq ($(shell git describe --dirty --always|grep -o dirty),dirty) - $(error "!!! you have pending changes, aborting") -endif -ifeq ($(RELEASE_NAME),) - $(error "!!! missing RELEASE_NAME, aborting") -endif + $(if $(findstring master,$(shell git rev-parse --abbrev-ref HEAD)),,$(error "!!! you are not on master branch, aborting")) + $(if $(findstring dirty,$(shell git describe --dirty --always)),$(error "!!! you have pending changes, aborting")) + $(if $(RELEASE_NAME),,$(error "!!! missing RELEASE_NAME, aborting")) # Preparing a commit for release tagging, to be reverted after tagging. @echo "# - Release Tag: $(VERSION)" @echo "# - Release Name: $(RELEASE_NAME)" From f30ccd0f5184af677451b14452812f592c8e8c1c Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 22 May 2020 13:34:43 +0200 Subject: [PATCH 119/527] Makefile: fix cp version for armsrc --- armsrc/Makefile | 2 +- bootrom/Makefile | 2 +- client/Makefile | 2 +- 3 files changed, 3 insertions(+), 3 deletions(-) diff --git a/armsrc/Makefile b/armsrc/Makefile index 18d36a1b7..f9e33f5e5 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -152,7 +152,7 @@ showinfo: # version.c should be remade on every time fullimage.stage1.elf should be remade version.c: default_version.c $(OBJDIR)/fpga_version_info.o $(OBJDIR)/fpga_all.o $(THUMBOBJ) $(ARMOBJ) $(info [-] GEN $@) - $(Q)$(SH) ../tools/mkversion.sh > $@ || $(PERL) ../tools/mkversion.pl > $@ || $(CP) $^ $@ + $(Q)$(SH) ../tools/mkversion.sh > $@ || $(PERL) ../tools/mkversion.pl > $@ || $(CP) $< $@ fpga_version_info.c: $(FPGA_BITSTREAMS) $(FPGA_COMPRESSOR) $(info [-] GEN $@) diff --git a/bootrom/Makefile b/bootrom/Makefile index 68597aa22..785293ca6 100644 --- a/bootrom/Makefile +++ b/bootrom/Makefile @@ -39,7 +39,7 @@ OBJS = $(OBJDIR)/bootrom.s19 # version.c should be remade on every compilation version.c: default_version.c $(info [=] GEN $@) - $(Q)$(SH) ../tools/mkversion.sh > $@ || $(PERL) ../tools/mkversion.pl > $@ || $(CP) $^ $@ + $(Q)$(SH) ../tools/mkversion.sh > $@ || $(PERL) ../tools/mkversion.pl > $@ || $(CP) $< $@ all: showinfo $(OBJS) diff --git a/client/Makefile b/client/Makefile index 79943d8fa..71d6a6d88 100644 --- a/client/Makefile +++ b/client/Makefile @@ -430,7 +430,7 @@ zlib: # version.c should be remade on every compilation src/version.c: default_version.c $(info [=] GEN $@) - $(Q)$(SH) ../tools/mkversion.sh > $@ || $(PERL) ../tools/mkversion.pl > $@ || $(CP) $^ $@ + $(Q)$(SH) ../tools/mkversion.sh > $@ || $(PERL) ../tools/mkversion.pl > $@ || $(CP) $< $@ # easy printing of MAKE VARIABLES print-%: ; @echo $* = $($*) From 3d4d90eac581e04941744d83198f480d3f85caf4 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 22 May 2020 13:44:35 +0200 Subject: [PATCH 120/527] make release : remove undecided/suspect --- Makefile | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/Makefile b/Makefile index 44db7c01d..958fe65a2 100644 --- a/Makefile +++ b/Makefile @@ -255,7 +255,7 @@ release: # - Tagging temporarily... @git tag -a -m "Release $(VERSION) - $(RELEASE_NAME)" $(VERSION) # - Changing default version information based on new tag - @$(SH) tools/mkversion.sh --undecided > common/default_version.c.tmp && $(MV) common/default_version.c.tmp common/default_version.c + @$(SH) tools/mkversion.sh > common/default_version.c.tmp && $(MV) common/default_version.c.tmp common/default_version.c # - Removing mkversion calls @sed -i 's#^.*\.\./tools/mkversion.sh.*|| #\t$$(Q)#' client/Makefile bootrom/Makefile armsrc/Makefile @sed -i '/COMMAND/s/sh .*|| //' client/CMakeLists.txt From d7cfaae17f03f92a4a6d7f2ba77bfbf6c06050a0 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 22 May 2020 13:59:30 +0200 Subject: [PATCH 121/527] Load prefs only after parsing of options, don't clutter -v --- client/src/proxmark3.c | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 60f3b5be8..427619e75 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -691,6 +691,7 @@ int main(int argc, char *argv[]) { bool flash_mode = false; bool flash_can_write_bl = false; + bool debug_mode_forced = false; int flash_num_files = 0; char *flash_filenames[FLASH_MAX_FILES]; @@ -698,16 +699,6 @@ int main(int argc, char *argv[]) { set_my_executable_path(); set_my_user_directory(); -#ifdef USE_PREFERENCE_FILE - // Load Settings and assign - // This will allow the command line to override the settings.json values - preferences_load(); - // quick patch for debug level - g_debugMode = session.client_debug_level; - // settings_save (); - // End Settings -#endif - for (int i = 1; i < argc; i++) { if (argv[i][0] != '-') { @@ -779,6 +770,7 @@ int main(int argc, char *argv[]) { return 1; } g_debugMode = demod; + debug_mode_forced = true; i++; continue; } @@ -886,6 +878,17 @@ int main(int argc, char *argv[]) { return 1; } +#ifdef USE_PREFERENCE_FILE + // Load Settings and assign + // This will allow the command line to override the settings.json values + preferences_load(); + // quick patch for debug level + if (! debug_mode_forced) + g_debugMode = session.client_debug_level; + // settings_save (); + // End Settings +#endif + #ifndef USE_PREFERENCE_FILE // comment next 2 lines to use session values set from settings_load session.supports_colors = DetectWindowsAnsiSupport(); From aef6d7e5f21ac6e47bef20290cc2be26a95ec3c2 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Thu, 21 May 2020 02:20:02 +0200 Subject: [PATCH 122/527] Detect and use system Lua. Makefile. Cmake todo --- client/Makefile | 114 +++++++++++++++++++----------- doc/md/Development/Maintainers.md | 1 + 2 files changed, 73 insertions(+), 42 deletions(-) diff --git a/client/Makefile b/client/Makefile index 71d6a6d88..363ff0089 100644 --- a/client/Makefile +++ b/client/Makefile @@ -36,74 +36,63 @@ endif # local libraries LUALIBPATH = ./deps/liblua +LUALIBINC = -I$(LUALIBPATH) LUALIB = $(LUALIBPATH)/liblua.a JANSSONLIBPATH = ./deps/jansson +JANSSONLIBINC = -I$(JANSSONLIBPATH) JANSSONLIB = $(JANSSONLIBPATH)/libjansson.a CBORLIBPATH = ./deps/tinycbor +CBORLIBINC = -I$(CBORLIBPATH) CBORLIB = $(CBORLIBPATH)/tinycbor.a REVENGLIBPATH = ./deps/reveng +REVENGLIBINC = -I$(REVENGLIBPATH) REVENGLIB = $(REVENGLIBPATH)/libreveng.a AMIIBOLIBPATH = ./deps/amiitool +AMIIBOLIBINC = -I$(AMIIBOLIBPATH) AMIIBOLIB = $(AMIIBOLIBPATH)/libamiibo.a HARDNESTEDLIBPATH = ./deps/hardnested +HARDNESTEDLIBINC = -I$(HARDNESTEDLIBPATH) HARDNESTEDLIB = $(HARDNESTEDLIBPATH)/libhardnested.a CLIPARSERLIBPATH = ./deps/cliparser +CLIPARSERLIBINC = -I$(CLIPARSERLIBPATH) CLIPARSERLIB = $(CLIPARSERLIBPATH)/libcliparser.a WAILIBPATH = ./deps/whereami +WAILIBINC = -I$(WAILIBPATH) WAILIB = $(WAILIBPATH)/libwhereami.a +LUAPLATFORM = generic +ifneq (,$(findstring MINGW,$(platform))) + LUAPLATFORM = mingw +else + ifeq ($(platform),Darwin) + LUAPLATFORM = macosx + else + LUALIB += -ldl + LUAPLATFORM = linux + endif +endif + # common libraries MBEDTLSLIBPATH = ../common/mbedtls MBEDTLSLIB = $(OBJDIR)/libmbedtls.a ZLIBPATH = ../common/zlib ZLIB = $(OBJDIR)/libz.a -LIBS = -I$(LUALIBPATH) -I$(MBEDTLSLIBPATH) -I$(JANSSONLIBPATH) -I$(CBORLIBPATH) -I$(ZLIBPATH) -I$(REVENGLIBPATH) -I$(AMIIBOLIBPATH) -I$(HARDNESTEDLIBPATH) -I$(CLIPARSERLIBPATH) -I$(WAILIBPATH) -INCLUDES_CLIENT += -I./src -I../include -I../common -I../common_fpga $(LIBS) -CFLAGS ?= $(DEFCFLAGS) - -# We cannot just use CFLAGS+=... because it has impact on sub-makes if CFLAGS is defined in env: -PM3CFLAGS = $(CFLAGS) $(INCLUDES_CLIENT) -# WIP Testing -#PM3CFLAGS = $(CFLAGS) -std=c11 -pedantic $(INCLUDES_CLIENT) -PREFIX ?= /usr/local -ifneq (,$(findstring MINGW,$(platform))) - # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) - # and setting _ISOC99_SOURCE sets internally __USE_MINGW_ANSI_STDIO=1 - # FTR __USE_MINGW_ANSI_STDIO seems deprecated in Mingw32 - # but not Mingw64 https://fr.osdn.net/projects/mingw/lists/archive/users/2019-January/000199.html - PM3CFLAGS += -D_ISOC99_SOURCE - PM3CFLAGS += -mno-ms-bitfields -fexec-charset=cp850 -endif -CXXFLAGS ?= -Wall -Werror -O3 -PM3CXXFLAGS = $(CXXFLAGS) -I../include - -LUAPLATFORM = generic -ifneq (,$(findstring MINGW,$(platform))) - LUAPLATFORM = mingw -else - ifeq ($(platform),Darwin) - LUAPLATFORM = macosx - OBJCSRCS = util_darwin.m - LDFLAGS += -framework Foundation -framework AppKit - LDLIBS := -L/usr/local/opt/readline/lib $(LDLIBS) - LIBS := -I/usr/local/opt/readline/include $(LIBS) - # cf brew info qt: qt not symlinked anymore - PKG_CONFIG_ENV := PKG_CONFIG_PATH=/usr/local/opt/qt/lib/pkgconfig -else - LUALIB += -ldl - LUAPLATFORM = linux -endif +# system libraries +ifneq ($(SKIPLUASYSTEM),1) + LUAINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags lua5.2 2>/dev/null) + LUALDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs lua5.2 2>/dev/null) + ifneq ($(LUAINCLUDES),) + LUALIB = $(LUALDLIBS) + LUALIBINC = $(LUAINCLUDES) + LUASYSTEM = 1 + endif endif ifneq ($(SKIPBT),1) BTLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs bluez 2>/dev/null) endif -ifneq ($(BTLDLIBS),) - PM3CFLAGS += -DHAVE_BLUEZ -endif - ifneq ($(SKIPQT),1) # Check for correctly configured Qt5 QTINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags Qt5Core Qt5Widgets 2>/dev/null) @@ -118,7 +107,7 @@ ifneq ($(SKIPQT),1) UIC = $(shell $(PKG_CONFIG_ENV) pkg-config --variable=uic_location QtCore) else # On OSX Qt5 is claiming for a C++11 compiler (gnu++14 works too, but if nothing it fails) - PM3CXXFLAGS += -fPIC -std=c++11 + QT5FOUND = 1 endif ifeq ($(QTINCLUDES), ) # if both pkg-config commands failed, search in common places @@ -128,7 +117,7 @@ ifneq ($(SKIPQT),1) ifneq ($(wildcard $(QTDIR)/include/QtWidgets),) QTINCLUDES += -I$(QTDIR)/include/QtWidgets QTLDLIBS = -L$(QTDIR)/lib -lQt5Widgets -lQt5Gui -lQt5Core - PM3CXXFLAGS += -fPIC -std=c++11 + QT5FOUND = 1 endif MOC = $(QTDIR)/bin/moc UIC = $(QTDIR)/bin/uic @@ -136,11 +125,47 @@ ifneq ($(SKIPQT),1) endif endif +LIBS = $(LUALIBINC) $(MBEDTLSLIBINC) $(JANSSONLIBINC) $(CBORLIBINC) $(ZLIBINC) $(REVENGLIBINC) $(AMIIBOLIBINC) $(HARDNESTEDLIBINC) $(CLIPARSERLIBINC) $(WAILIBINC) +INCLUDES_CLIENT += -I./src -I../include -I../common -I../common_fpga $(LIBS) +CFLAGS ?= $(DEFCFLAGS) + +# We cannot just use CFLAGS+=... because it has impact on sub-makes if CFLAGS is defined in env: +PM3CFLAGS = $(CFLAGS) $(INCLUDES_CLIENT) +# WIP Testing +#PM3CFLAGS = $(CFLAGS) -std=c11 -pedantic $(INCLUDES_CLIENT) +PREFIX ?= /usr/local +ifneq (,$(findstring MINGW,$(platform))) + # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) + # and setting _ISOC99_SOURCE sets internally __USE_MINGW_ANSI_STDIO=1 + # FTR __USE_MINGW_ANSI_STDIO seems deprecated in Mingw32 + # but not Mingw64 https://fr.osdn.net/projects/mingw/lists/archive/users/2019-January/000199.html + PM3CFLAGS += -D_ISOC99_SOURCE + PM3CFLAGS += -mno-ms-bitfields -fexec-charset=cp850 +endif +ifeq ($(platform),Darwin) + OBJCSRCS = util_darwin.m + LDFLAGS += -framework Foundation -framework AppKit + LDLIBS := -L/usr/local/opt/readline/lib $(LDLIBS) + LIBS := -I/usr/local/opt/readline/include $(LIBS) + # cf brew info qt: qt not symlinked anymore + PKG_CONFIG_ENV := PKG_CONFIG_PATH=/usr/local/opt/qt/lib/pkgconfig +endif + +CXXFLAGS ?= -Wall -Werror -O3 +PM3CXXFLAGS = $(CXXFLAGS) -I../include + +ifneq ($(BTLDLIBS),) + PM3CFLAGS += -DHAVE_BLUEZ +endif + ifneq ($(QTLDLIBS),) QTGUISRCS = proxgui.cpp proxguiqt.cpp proxguiqt.moc.cpp QTGUIOBJS = $(OBJDIR)/proxgui.o $(OBJDIR)/proxguiqt.o $(OBJDIR)/proxguiqt.moc.o PM3CFLAGS += -DHAVE_GUI PM3CXXFLAGS += -DQT_NO_DEBUG + ifeq ($(QT5FOUND),1) + PM3CXXFLAGS += -fPIC -std=c++11 + endif else QTGUISRCS = guidummy.cpp QTGUIOBJS = $(OBJDIR)/guidummy.o @@ -162,6 +187,9 @@ $(info native BT support: Bluez found, enabled) else $(info native BT support: Bluez not found, disabled) endif +ifeq ($(LUASYSTEM),1) +$(info system LUA: Lua5.2 found) +endif $(info compiler version: $(shell $(CC) --version|head -n 1)) $(info ===================================================================) @@ -385,8 +413,10 @@ tarbin: $(BINS) # local libraries: liblua: +ifneq ($(LUASYSTEM),1) $(info [*] MAKE $@ for $(LUAPLATFORM)) $(Q)$(MAKE) --no-print-directory -C $(LUALIBPATH) $(LUAPLATFORM) +endif jansson: $(info [*] MAKE $@) diff --git a/doc/md/Development/Maintainers.md b/doc/md/Development/Maintainers.md index 2a49343fd..c3d0e4e29 100644 --- a/doc/md/Development/Maintainers.md +++ b/doc/md/Development/Maintainers.md @@ -61,6 +61,7 @@ It's also possible to skip parts even if libraries are present in the compilatio * `make client SKIPQT=1` to skip GUI even if Qt is present * `make client SKIPBT=1` to skip native Bluetooth support even if libbluetooth is present +* `make client SKIPLUASYSTEM=1` to skip system Lua lib even if liblua5.2 is present, use embedded Lua lib instead If you're cross-compiling, these ones might be useful: From 278db15f5aa62d30ef09aa900c70a2c2a57c6264 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 22 May 2020 17:47:30 +0200 Subject: [PATCH 123/527] Move tests to tools/pm3_tests.sh and add "make check" to call it --- .travis.yml | 4 +- Makefile | 41 ++++++- Makefile.defs | 1 + covbuild.sh | 2 +- pm3test.sh | 167 --------------------------- tools/pm3_tests.sh | 276 +++++++++++++++++++++++++++++++++++++++++++++ 6 files changed, 317 insertions(+), 174 deletions(-) delete mode 100755 pm3test.sh create mode 100755 tools/pm3_tests.sh diff --git a/.travis.yml b/.travis.yml index f8cf8228f..ad23bf6f8 100644 --- a/.travis.yml +++ b/.travis.yml @@ -54,9 +54,9 @@ install: script: - if [ "$TO_TEST" = "MAKEFILE" ]; then make clean && make V=1 "$MAKE_PARAMS"; - ./pm3test.sh; + make check; fi - if [ "$TO_TEST" = "CMAKE" ]; then mkdir -p client/build && ( cd client/build && cmake .. && make VERBOSE=1 ); - PM3BIN=./client/build/proxmark3 ./pm3test.sh client; + make client/check CHECKARGS="--clientbin ./client/build/proxmark3"; fi diff --git a/Makefile b/Makefile index 958fe65a2..d111d01fc 100644 --- a/Makefile +++ b/Makefile @@ -14,7 +14,7 @@ ifneq (,$(DESTDIR)) endif endif -all clean install uninstall: %: client/% bootrom/% armsrc/% recovery/% mfkey/% nonce2key/% mf_nonce_brute/% fpga_compress/% +all clean install uninstall check: %: client/% bootrom/% armsrc/% recovery/% mfkey/% nonce2key/% mf_nonce_brute/% fpga_compress/% INSTALLTOOLS=pm3_eml2lower.sh pm3_eml2upper.sh pm3_mfdread.py pm3_mfd2eml.py pm3_eml2mfd.py findbits.py rfidtest.pl xorcheck.py INSTALLSIMFW=sim011.bin sim011.sha512.txt @@ -78,6 +78,37 @@ ifeq ($(platform),Linux) endif $(Q)$(RMDIR_SOFT) $(DESTDIR)$(PREFIX)$(PATHSEP)$(INSTALLSHARERELPATH) +# tests +mfkey/check: FORCE + $(info [*] CHECK $(patsubst %/check,%,$@)) + $(Q)$(BASH) tools/pm3_tests.sh $(CHECKARGS) $(patsubst %/check,%,$@) +nonce2key/check: FORCE + $(info [*] CHECK $(patsubst %/check,%,$@)) + $(Q)$(BASH) tools/pm3_tests.sh $(CHECKARGS) $(patsubst %/check,%,$@) +mf_nonce_brute/check: FORCE + $(info [*] CHECK $(patsubst %/check,%,$@)) + $(Q)$(BASH) tools/pm3_tests.sh $(CHECKARGS) $(patsubst %/check,%,$@) +fpga_compress/check: FORCE + $(info [*] CHECK $(patsubst %/check,%,$@)) + $(Q)$(BASH) tools/pm3_tests.sh $(CHECKARGS) $(patsubst %/check,%,$@) +bootrom/check: FORCE + $(info [*] CHECK $(patsubst %/check,%,$@)) + $(Q)$(BASH) tools/pm3_tests.sh $(CHECKARGS) $(patsubst %/check,%,$@) +armsrc/check: FORCE + $(info [*] CHECK $(patsubst %/check,%,$@)) + $(Q)$(BASH) tools/pm3_tests.sh $(CHECKARGS) $(patsubst %/check,%,$@) +client/check: FORCE + $(info [*] CHECK $(patsubst %/check,%,$@)) + $(Q)$(BASH) tools/pm3_tests.sh $(CHECKARGS) $(patsubst %/check,%,$@) +recovery/check: FORCE + $(info [*] CHECK $(patsubst %/check,%,$@)) + $(Q)$(BASH) tools/pm3_tests.sh $(CHECKARGS) $(patsubst %/check,%,$@) +common/check: FORCE + $(info [*] CHECK $(patsubst %/check,%,$@)) + $(Q)$(BASH) tools/pm3_tests.sh $(CHECKARGS) $(patsubst %/check,%,$@) +check: common/check + $(info [*] ALL CHECKS DONE) + mfkey/%: FORCE $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C tools/mfkey $(patsubst mfkey/%,%,$@) DESTDIR=$(MYDESTDIR) @@ -106,7 +137,7 @@ recovery/%: FORCE cleanifplatformchanged $(Q)$(MAKE) --no-print-directory -C recovery $(patsubst recovery/%,%,$@) DESTDIR=$(MYDESTDIR) FORCE: # Dummy target to force remake in the subdirectories, even if files exist (this Makefile doesn't know about the prerequisites) -.PHONY: all clean install uninstall help _test bootrom fullimage recovery client mfkey nonce2key mf_nonce_brute style checks FORCE udev accessrights cleanifplatformchanged +.PHONY: all clean install uninstall help _test bootrom fullimage recovery client mfkey nonce2key mf_nonce_brute style miscchecks release FORCE udev accessrights cleanifplatformchanged help: @echo "Multi-OS Makefile" @@ -129,7 +160,9 @@ help: @echo "+ fpga_compress - Make tools/fpga_compress" @echo @echo "+ style - Apply some automated source code formatting rules" - @echo "+ checks - Detect various encoding issues in source code" + @echo "+ check - Run offline tests. Set CHECKARGS to pass arguments to the test script" + @echo "+ .../check - Run offline tests against specific target. See above." + @echo "+ miscchecks - Detect various encoding issues in source code" @echo @echo "Possible platforms: try \"make PLATFORM=\" for more info, default is PM3RDV4" @echo "To activate verbose mode, use make V=1" @@ -217,7 +250,7 @@ style: --align-pointer=name {} \; # Detecting weird codepages and tabs. -checks: +miscchecks: # Make sure recode is installed @which recode >/dev/null || ( echo "Please install 'recode' package first" ; exit 1 ) @echo "Files with suspicious chars:" diff --git a/Makefile.defs b/Makefile.defs index d206611d3..fb8a7a45b 100644 --- a/Makefile.defs +++ b/Makefile.defs @@ -25,6 +25,7 @@ CC = gcc CXX = g++ LD = g++ SH = sh +BASH = bash PERL = perl PATHSEP=/ diff --git a/covbuild.sh b/covbuild.sh index 2e18e677f..73c9a4441 100755 --- a/covbuild.sh +++ b/covbuild.sh @@ -32,7 +32,7 @@ cov-build --dir "$COVDIR" --c-coverage=gcov --no-network-coverage --no-generate- ######################################### # Run tests # ######################################### -cov-build --dir "$COVDIR" --c-coverage=gcov --no-network-coverage --test-capture ./pm3test.sh long +cov-build --dir "$COVDIR" --c-coverage=gcov --no-network-coverage --test-capture tools/pm3_tests.sh --long #cov-manage-emit --dir "$COVDIR" list-coverage-known ######################################### diff --git a/pm3test.sh b/pm3test.sh deleted file mode 100755 index 3bd7ae3a8..000000000 --- a/pm3test.sh +++ /dev/null @@ -1,167 +0,0 @@ -#!/usr/bin/env bash - -PM3PATH=$(dirname "$0") -cd "$PM3PATH" || exit 1 - -if [ "$1" == "client" ]; then - shift - TESTDEVICE=false - TESTTOOLS=false -else - TESTDEVICE=true - TESTTOOLS=true -fi -if [ "$1" == "long" ]; then - shift - SLOWTESTS=true -else - SLOWTESTS=false -fi - -C_RED='\033[0;31m' -C_GREEN='\033[0;32m' -C_YELLOW='\033[0;33m' -C_BLUE='\033[0;34m' -C_NC='\033[0m' # No Color - -# title, file name or file wildcard to check -function CheckFileExist() { - - if [ -f "$2" ]; then - echo -e "$1 ${C_GREEN}[OK]${C_NC}" - return 0 - fi - - if ls "$2" 1> /dev/null 2>&1; then - echo -e "$1 ${C_GREEN}[OK]${C_NC}" - return 0 - fi - - echo -e "$1 ${C_RED}[Fail]${C_NC}" - return 1 -} - -# title, command line, check result, repeat several times if failed, ignore if fail -function CheckExecute() { - - if [ "$4" ]; then - local RETRY="1 2 3 e" - else - local RETRY="e" - fi - - for I in $RETRY - do - RES=$(eval "$2") - if echo "$RES" | grep -q "$3"; then - echo -e "$1 ${C_GREEN}[OK]${C_NC}" - return 0 - fi - if [ ! $I == "e" ]; then echo "retry $I"; fi - done - - - if [ "$5" ]; then - echo -e "$1 ${C_YELLOW}[Ignored]${C_NC}" - return 0 - fi - - echo -e "$1 ${C_RED}[Fail]${C_NC}" - echo -e "Execution trace:\n$RES" - return 1 -} - -echo -e "\n${C_BLUE}RRG/Iceman Proxmark3 test tool ${C_NC}\n" - -echo -n "work directory: " -pwd -echo "client ${PM3BIN:="./client/proxmark3"}" - -if [ "$TRAVIS_COMMIT" ]; then - if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then - echo "Travis branch: $TRAVIS_BRANCH slug: $TRAVIS_REPO_SLUG commit: $TRAVIS_COMMIT" - else - echo "Travis pull request: $TRAVIS_PULL_REQUEST branch: $TRAVIS_BRANCH slug: $TRAVIS_PULL_REQUEST_SLUG commit: $TRAVIS_COMMIT" - fi -fi - -echo -n "git branch: " -git describe --all -echo -n "git sha: " -git rev-parse HEAD -echo "" - -while true; do - echo -e "\n${C_BLUE}Testing files:${C_NC}" - if ! CheckFileExist "proxmark3 exists" "$PM3BIN"; then break; fi - if ! CheckFileExist "hardnested tables exists" "./client/resources/hardnested_tables/bitflip_0_001_states.bin.z"; then break; fi - if ! CheckFileExist "simmodule fw file exists" "./tools/simmodule/sim011.bin"; then break; fi - - if $TESTDEVICE; then - if ! CheckFileExist "arm image exists" "./armsrc/obj/fullimage.elf"; then break; fi - if ! CheckFileExist "bootrom exists" "./bootrom/obj/bootrom.elf"; then break; fi - fi - - echo -e "\n${C_BLUE}Testing basic help:${C_NC}" - if ! CheckExecute "proxmark help" "$PM3BIN -h" "wait"; then break; fi - if ! CheckExecute "proxmark help text ISO7816" "$PM3BIN -t 2>&1" "ISO7816"; then break; fi - if ! CheckExecute "proxmark help text hardnested" "$PM3BIN -t 2>&1" "hardnested"; then break; fi - - echo -e "\n${C_BLUE}Testing data manipulation:${C_NC}" - if ! CheckExecute "reveng readline test" "$PM3BIN -c 'reveng -h;reveng -D'" "CRC-64/GO-ISO"; then break; fi - if ! CheckExecute "reveng -g test" "$PM3BIN -c 'reveng -g abda202c'" "CRC-16/ISO-IEC-14443-3-A"; then break; fi - if ! CheckExecute "reveng -w test" "$PM3BIN -c 'reveng -w 8 -s 01020304e3 010204039d'" "CRC-8/SMBUS"; then break; fi - if ! CheckExecute "mfu pwdgen test" "$PM3BIN -c 'hf mfu pwdgen t'" "Selftest OK"; then break; fi - if ! CheckExecute "trace load/list 14a" "$PM3BIN -c 'trace load traces/hf_mfu.trace; trace list 1;'" "READBLOCK(8)"; then break; fi - if ! CheckExecute "trace load/list x" "$PM3BIN -c 'trace load traces/hf_mfu.trace; trace list x 1;'" "0.0101840425"; then break; fi - - echo -e "\n${C_BLUE}Testing LF:${C_NC}" - if ! CheckExecute "lf EM4x05 test" "$PM3BIN -c 'data load traces/em4x05.pm3;lf search 1'" "FDX-B ID found"; then break; fi - if ! CheckExecute "lf EM410x test" "$PM3BIN -c 'data load traces/EM4102-1.pm3;lf search 1'" "EM410x ID found"; then break; fi - if ! CheckExecute "lf VISA2000 test" "$PM3BIN -c 'data load traces/visa2000.pm3;lf search 1'" "Visa2000 ID found"; then break; fi - if ! CheckExecute "lf AWID test" "$PM3BIN -c 'data load traces/AWID-15-259.pm3;lf search 1'" "AWID ID found"; then break; fi - if ! CheckExecute "lf SECURAKEY test" "$PM3BIN -c 'data load traces/securakey-64169.pm3;lf search 1 '" "Securakey ID found"; then break; fi - if ! CheckExecute "lf NEXWATCH test" "$PM3BIN -c 'data load traces/quadrakey-521512301.pm3;lf search 1 '" "NexWatch ID found"; then break; fi - if ! CheckExecute "lf KERI test" "$PM3BIN -c 'data load traces/keri.pm3;lf search 1'" "Pyramid ID found"; then break; fi - if ! CheckExecute "lf HID Prox test" "$PM3BIN -c 'data load traces/hid-proxCardII-05512-11432784-1.pm3;lf search 1'" "HID Prox ID found"; then break; fi - if ! CheckExecute "lf PARADOX test" "$PM3BIN -c 'data load traces/Paradox-96_40426-APJN08.pm3;lf search 1'" "Paradox ID found"; then break; fi - if ! CheckExecute "lf PAC test" "$PM3BIN -c 'data load traces/pac-8E4C058E.pm3;lf search 1'" "PAC/Stanley ID found"; then break; fi - if ! CheckExecute "lf VIKING test" "$PM3BIN -c 'data load traces/Transit999-best.pm3;lf search 1'" "Viking ID found"; then break; fi - if ! CheckExecute "lf FDX-B test" "$PM3BIN -c 'data load traces/homeagain1600.pm3;lf search 1'" "FDX-B ID found"; then break; fi - if ! CheckExecute "lf INDALA test" "$PM3BIN -c 'data load traces/indala-504278295.pm3;lf search 1'" "Indala ID found"; then break; fi - if ! CheckExecute "lf FDX/BioThermo test" "$PM3BIN -c 'data load traces/lf_fdx_biothermo.pm3; lf fdx demo'" "95.2 F / 35.1 C"; then break; fi - - - echo -e "\n${C_BLUE}Testing HF:${C_NC}" - if ! CheckExecute "hf mf offline text" "$PM3BIN -c 'hf mf'" "at_enc"; then break; fi - if $SLOWTESTS; then - if ! CheckExecute "hf mf hardnested test" "$PM3BIN -c 'hf mf hardnested t 1 000000000000'" "found:" "repeat" "ignore"; then break; fi - if ! CheckExecute "hf iclass test" "$PM3BIN -c 'hf iclass loclass t l'" "verified ok"; then break; fi - if ! CheckExecute "emv test" "$PM3BIN -c 'emv test -l'" "Test(s) \[ OK"; then break; fi - else - if ! CheckExecute "hf iclass test" "$PM3BIN -c 'hf iclass loclass t'" "key diversification (ok)"; then break; fi - if ! CheckExecute "emv test" "$PM3BIN -c 'emv test'" "Test(s) \[ OK"; then break; fi - fi - - if $TESTTOOLS; then - echo -e "\n${C_BLUE}Testing tools:${C_NC}" - # Need a decent example for mfkey32... - if ! CheckExecute "mfkey32v2 test" "tools/mfkey/mfkey32v2 12345678 1AD8DF2B 1D316024 620EF048 30D6CB07 C52077E2 837AC61A" "Found Key: \[a0a1a2a3a4a5\]"; then break; fi - if ! CheckExecute "mfkey64 test" "tools/mfkey/mfkey64 9c599b32 82a4166c a1e458ce 6eea41e0 5cadf439" "Found Key: \[ffffffffffff\]"; then break; fi - if ! CheckExecute "mfkey64 long trace test" "tools/mfkey/./mfkey64 14579f69 ce844261 f8049ccb 0525c84f 9431cc40 7093df99 9972428ce2e8523f456b99c831e769dced09 8ca6827b ab797fd369e8b93a86776b40dae3ef686efd c3c381ba 49e2c9def4868d1777670e584c27230286f4 fbdcd7c1 4abd964b07d3563aa066ed0a2eac7f6312bf 9f9149ea" "Found Key: \[091e639cb715\]"; then break; fi - if ! CheckExecute "nonce2key test" "tools/nonce2key/nonce2key e9cadd9c a8bf4a12 a020a8285858b090 050f010607060e07 5693be6c00000000" "key recovered: fc00018778f7"; then break; fi - if ! CheckExecute "xorcheck test" "tools/xorcheck.py 04 00 80 64 ba" "final LRC XOR byte value: 5A"; then break; fi - if ! CheckExecute "findbits test" "tools/findbits.py 73 0110010101110011" "Match at bit 9: 011001010"; then break; fi - if ! CheckExecute "findbits_test test" "tools/findbits_test.py 2>&1" "OK"; then break; fi - if ! CheckExecute "pm3_eml_mfd test" "tools/pm3_eml_mfd_test.py 2>&1" "OK"; then break; fi - if $SLOWTESTS; then - if ! CheckExecute "mf_nonce_brute test" "tools/mf_nonce_brute/mf_nonce_brute 9c599b32 5a920d85 1011 98d76b77 d6c6e870 0000 ca7e0b63 0111 3e709c8a" "Key.*: \[ffffffffffff\]"; then break; fi - fi - fi - - echo -e "\n${C_GREEN}Tests [OK]${C_NC}\n" - exit 0 -done - -echo -e "\n${C_RED}Tests [FAIL]${C_NC}\n" -exit 1 diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh new file mode 100755 index 000000000..8aaf82d58 --- /dev/null +++ b/tools/pm3_tests.sh @@ -0,0 +1,276 @@ +#!/usr/bin/env bash + +PM3PATH="$(dirname "$0")/.." +cd "$PM3PATH" || exit 1 + +SLOWTESTS=false +TESTALL=true +TESTMFKEY=false +TESTNONCE2KEY=false +TESTMFNONCEBRUTE=false +TESTFPGACOMPRESS=false +TESTBOOTROM=false +TESTARMSRC=false +TESTCLIENT=false +TESTRECOVERY=false +TESTCOMMON=false + +# https://medium.com/@Drew_Stokes/bash-argument-parsing-54f3b81a6a8f +PARAMS="" +while (( "$#" )); do + case "$1" in + -h|--help) + echo """ +Usage: $0 [--long] [--clientbin /path/to/proxmark3] [mfkey|nonce2key|mf_nonce_brute|fpga_compress|bootrom|armsrc|client|recovery|common] + --long: Enable slow tests + --clientbin ...: Specify path to proxmark3 binary to test + If no target given, all targets will be tested +""" + exit 0 + ;; + -l|--long) + SLOWTESTS=true + shift + ;; + --clientbin) + if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then + CLIENTBIN=$2 + shift 2 + else + echo "Error: Argument for $1 is missing" >&2 + exit 1 + fi + ;; + mfkey) + TESTALL=false + TESTMFKEY=true + shift + ;; + nonce2key) + TESTALL=false + TESTNONCE2KEY=true + shift + ;; + mf_nonce_brute) + TESTALL=false + TESTMFNONCEBRUTE=true + shift + ;; + fpga_compress) + TESTALL=false + TESTFPGACOMPRESS=true + shift + ;; + bootrom) + TESTALL=false + TESTBOOTROM=true + shift + ;; + armsrc) + TESTALL=false + TESTARMSRC=true + shift + ;; + client) + TESTALL=false + TESTCLIENT=true + shift + ;; + recovery) + TESTALL=false + TESTRECOVERY=true + shift + ;; + common) + TESTALL=false + TESTCOMMON=true + shift + ;; + -*|--*=) # unsupported flags + echo "Error: Unsupported flag $1" >&2 + exit 1 + ;; + *) # preserve positional arguments + PARAMS="$PARAMS $1" + shift + ;; + esac +done +# set positional arguments in their proper place +eval set -- "$PARAMS" + +C_RED='\033[0;31m' +C_GREEN='\033[0;32m' +C_YELLOW='\033[0;33m' +C_BLUE='\033[0;34m' +C_NC='\033[0m' # No Color + +# title, file name or file wildcard to check +function CheckFileExist() { + + if [ -f "$2" ]; then + echo -e "$1 ${C_GREEN}[OK]${C_NC}" + return 0 + fi + + if ls "$2" 1> /dev/null 2>&1; then + echo -e "$1 ${C_GREEN}[OK]${C_NC}" + return 0 + fi + + echo -e "$1 ${C_RED}[Fail]${C_NC}" + return 1 +} + +# title, command line, check result, repeat several times if failed, ignore if fail +function CheckExecute() { + if [ "$1" == "slow" ]; then + SLOWTEST=true + shift + else + SLOWTEST=false + fi + if [ "$4" ]; then + local RETRY="1 2 3 e" + else + local RETRY="e" + fi + + if $SLOWTEST && ! $SLOWTESTS; then + echo -e "$1 ${C_YELLOW}[SKIPPED]${C_NC} (slow)\n" + return 0 + fi + + for I in $RETRY + do + RES=$(eval "$2") + if echo "$RES" | grep -q "$3"; then + echo -e "$1 ${C_GREEN}[OK]${C_NC}" + return 0 + fi + if [ ! $I == "e" ]; then echo "retry $I"; fi + done + + if [ "$5" ]; then + echo -e "$1 ${C_YELLOW}[Ignored]${C_NC}" + return 0 + fi + + echo -e "$1 ${C_RED}[Fail]${C_NC}" + echo -e "Execution trace:\n$RES" + return 1 +} + +echo -e "\n${C_BLUE}RRG/Iceman Proxmark3 test tool ${C_NC}\n" + +echo -n "work directory: " +pwd + +if [ "$TRAVIS_COMMIT" ]; then + if [ "$TRAVIS_PULL_REQUEST" == "false" ]; then + echo "Travis branch: $TRAVIS_BRANCH slug: $TRAVIS_REPO_SLUG commit: $TRAVIS_COMMIT" + else + echo "Travis pull request: $TRAVIS_PULL_REQUEST branch: $TRAVIS_BRANCH slug: $TRAVIS_PULL_REQUEST_SLUG commit: $TRAVIS_COMMIT" + fi +fi + +echo -n "git branch: " +git describe --all +echo -n "git sha: " +git rev-parse HEAD +echo "" + +while true; do + if $TESTALL || $TESTCOMMON; then + echo -e "\n${C_BLUE}Testing common:${C_NC}" + if ! CheckFileExist "hardnested tables exists" "./client/resources/hardnested_tables/bitflip_0_001_states.bin.z"; then break; fi + if ! CheckFileExist "simmodule fw file exists" "./tools/simmodule/sim011.bin"; then break; fi + echo -e "\n${C_BLUE}Testing tools:${C_NC}" + if ! CheckExecute "xorcheck test" "tools/xorcheck.py 04 00 80 64 ba" "final LRC XOR byte value: 5A"; then break; fi + if ! CheckExecute "findbits test" "tools/findbits.py 73 0110010101110011" "Match at bit 9: 011001010"; then break; fi + if ! CheckExecute "findbits_test test" "tools/findbits_test.py 2>&1" "OK"; then break; fi + if ! CheckExecute "pm3_eml_mfd test" "tools/pm3_eml_mfd_test.py 2>&1" "OK"; then break; fi + fi + if $TESTALL || $TESTBOOTROM; then + echo -e "\n${C_BLUE}Testing bootrom:${C_NC}" + if ! CheckFileExist "bootrom exists" "./bootrom/obj/bootrom.elf"; then break; fi + fi + if $TESTALL || $TESTARMSRC; then + echo -e "\n${C_BLUE}Testing armsrc:${C_NC}" + if ! CheckFileExist "arm image exists" "./armsrc/obj/fullimage.elf"; then break; fi + fi + if $TESTALL || $TESTRECOVERY; then + echo -e "\n${C_BLUE}Testing recovery:${C_NC}" + if ! CheckFileExist "recovery image exists" "./recovery/proxmark3_recovery.bin"; then break; fi + + fi + if $TESTALL || $TESTFPGACOMPRESS; then + echo -e "\n${C_BLUE}Testing fpgacompress:${C_NC} ${FPGACPMPRESSBIN:=./tools/fpga_compress/fpga_compress}" + if ! CheckFileExist "fpgacompress exists" "$FPGACPMPRESSBIN"; then break; fi + fi + if $TESTALL || $TESTMFKEY; then + echo -e "\n${C_BLUE}Testing mfkey:${C_NC} ${MFKEY32V2BIN:=./tools/mfkey/mfkey32v2} ${MFKEY64BIN:=./tools/mfkey/mfkey64}" + if ! CheckFileExist "mfkey32v2 exists" "$MFKEY32V2BIN"; then break; fi + if ! CheckFileExist "mfkey64 exists" "$MFKEY64BIN"; then break; fi + # Need a decent example for mfkey32... + if ! CheckExecute "mfkey32v2 test" "$MFKEY32V2BIN 12345678 1AD8DF2B 1D316024 620EF048 30D6CB07 C52077E2 837AC61A" "Found Key: \[a0a1a2a3a4a5\]"; then break; fi + if ! CheckExecute "mfkey64 test" "$MFKEY64BIN 9c599b32 82a4166c a1e458ce 6eea41e0 5cadf439" "Found Key: \[ffffffffffff\]"; then break; fi + if ! CheckExecute "mfkey64 long trace test" "$MFKEY64BIN 14579f69 ce844261 f8049ccb 0525c84f 9431cc40 7093df99 9972428ce2e8523f456b99c831e769dced09 8ca6827b ab797fd369e8b93a86776b40dae3ef686efd c3c381ba 49e2c9def4868d1777670e584c27230286f4 fbdcd7c1 4abd964b07d3563aa066ed0a2eac7f6312bf 9f9149ea" "Found Key: \[091e639cb715\]"; then break; fi + fi + if $TESTALL || $TESTNONCE2KEY; then + echo -e "\n${C_BLUE}Testing nonce2key:${C_NC} ${NONCE2KEYBIN:=./tools/nonce2key/nonce2key}" + if ! CheckFileExist "nonce2key exists" "$NONCE2KEYBIN"; then break; fi + if ! CheckExecute "nonce2key test" "$NONCE2KEYBIN e9cadd9c a8bf4a12 a020a8285858b090 050f010607060e07 5693be6c00000000" "key recovered: fc00018778f7"; then break; fi + fi + if $TESTALL || $TESTMFNONCEBRUTE; then + echo -e "\n${C_BLUE}Testing mf_nonce_brute:${C_NC} ${MFNONCEBRUTEBIN:=./tools/mf_nonce_brute/mf_nonce_brute}" + if ! CheckFileExist "mf_nonce_brute exists" "$MFNONCEBRUTEBIN"; then break; fi + if ! CheckExecute slow "mf_nonce_brute test" "$MFNONCEBRUTEBIN 9c599b32 5a920d85 1011 98d76b77 d6c6e870 0000 ca7e0b63 0111 3e709c8a" "Key.*: \[ffffffffffff\]"; then break; fi + fi + if $TESTALL || $TESTCLIENT; then + echo -e "\n${C_BLUE}Testing client:${C_NC} ${CLIENTBIN:=./client/proxmark3}" + if ! CheckFileExist "proxmark3 exists" "$CLIENTBIN"; then break; fi + echo -e "\n${C_BLUE}Testing basic help:${C_NC}" + if ! CheckExecute "proxmark help" "$CLIENTBIN -h" "wait"; then break; fi + if ! CheckExecute "proxmark help text ISO7816" "$CLIENTBIN -t 2>&1" "ISO7816"; then break; fi + if ! CheckExecute "proxmark help text hardnested" "$CLIENTBIN -t 2>&1" "hardnested"; then break; fi + + echo -e "\n${C_BLUE}Testing data manipulation:${C_NC}" + if ! CheckExecute "reveng readline test" "$CLIENTBIN -c 'reveng -h;reveng -D'" "CRC-64/GO-ISO"; then break; fi + if ! CheckExecute "reveng -g test" "$CLIENTBIN -c 'reveng -g abda202c'" "CRC-16/ISO-IEC-14443-3-A"; then break; fi + if ! CheckExecute "reveng -w test" "$CLIENTBIN -c 'reveng -w 8 -s 01020304e3 010204039d'" "CRC-8/SMBUS"; then break; fi + if ! CheckExecute "mfu pwdgen test" "$CLIENTBIN -c 'hf mfu pwdgen t'" "Selftest OK"; then break; fi + if ! CheckExecute "trace load/list 14a" "$CLIENTBIN -c 'trace load traces/hf_mfu.trace; trace list 1;'" "READBLOCK(8)"; then break; fi + if ! CheckExecute "trace load/list x" "$CLIENTBIN -c 'trace load traces/hf_mfu.trace; trace list x 1;'" "0.0101840425"; then break; fi + + echo -e "\n${C_BLUE}Testing LF:${C_NC}" + if ! CheckExecute "lf EM4x05 test" "$CLIENTBIN -c 'data load traces/em4x05.pm3;lf search 1'" "FDX-B ID found"; then break; fi + if ! CheckExecute "lf EM410x test" "$CLIENTBIN -c 'data load traces/EM4102-1.pm3;lf search 1'" "EM410x ID found"; then break; fi + if ! CheckExecute "lf VISA2000 test" "$CLIENTBIN -c 'data load traces/visa2000.pm3;lf search 1'" "Visa2000 ID found"; then break; fi + if ! CheckExecute "lf AWID test" "$CLIENTBIN -c 'data load traces/AWID-15-259.pm3;lf search 1'" "AWID ID found"; then break; fi + if ! CheckExecute "lf SECURAKEY test" "$CLIENTBIN -c 'data load traces/securakey-64169.pm3;lf search 1 '" "Securakey ID found"; then break; fi + if ! CheckExecute "lf NEXWATCH test" "$CLIENTBIN -c 'data load traces/quadrakey-521512301.pm3;lf search 1 '" "NexWatch ID found"; then break; fi + if ! CheckExecute "lf KERI test" "$CLIENTBIN -c 'data load traces/keri.pm3;lf search 1'" "Pyramid ID found"; then break; fi + if ! CheckExecute "lf HID Prox test" "$CLIENTBIN -c 'data load traces/hid-proxCardII-05512-11432784-1.pm3;lf search 1'" "HID Prox ID found"; then break; fi + if ! CheckExecute "lf PARADOX test" "$CLIENTBIN -c 'data load traces/Paradox-96_40426-APJN08.pm3;lf search 1'" "Paradox ID found"; then break; fi + if ! CheckExecute "lf PAC test" "$CLIENTBIN -c 'data load traces/pac-8E4C058E.pm3;lf search 1'" "PAC/Stanley ID found"; then break; fi + if ! CheckExecute "lf VIKING test" "$CLIENTBIN -c 'data load traces/Transit999-best.pm3;lf search 1'" "Viking ID found"; then break; fi + if ! CheckExecute "lf FDX-B test" "$CLIENTBIN -c 'data load traces/homeagain1600.pm3;lf search 1'" "FDX-B ID found"; then break; fi + if ! CheckExecute "lf INDALA test" "$CLIENTBIN -c 'data load traces/indala-504278295.pm3;lf search 1'" "Indala ID found"; then break; fi + if ! CheckExecute "lf FDX/BioThermo test" "$CLIENTBIN -c 'data load traces/lf_fdx_biothermo.pm3; lf fdx demo'" "95.2 F / 35.1 C"; then break; fi + + echo -e "\n${C_BLUE}Testing HF:${C_NC}" + if ! CheckExecute "hf mf offline text" "$CLIENTBIN -c 'hf mf'" "at_enc"; then break; fi + if ! CheckExecute slow "hf mf hardnested long test" "$CLIENTBIN -c 'hf mf hardnested t 1 000000000000'" "found:" "repeat" "ignore"; then break; fi + if ! CheckExecute slow "hf iclass long test" "$CLIENTBIN -c 'hf iclass loclass t l'" "verified ok"; then break; fi + if ! CheckExecute slow "emv long test" "$CLIENTBIN -c 'emv test -l'" "Test(s) \[ OK"; then break; fi + if ! $SLOWTESTS; then + if ! CheckExecute "hf iclass test" "$CLIENTBIN -c 'hf iclass loclass t'" "key diversification (ok)"; then break; fi + if ! CheckExecute "emv test" "$CLIENTBIN -c 'emv test'" "Test(s) \[ OK"; then break; fi + fi + fi + echo -e "\n${C_GREEN}Tests [OK]${C_NC}\n" + exit 0 +done +echo -e "\n${C_RED}Tests [FAIL]${C_NC}\n" +exit 1 From bcb0e5db4d0a80de456289a33df0287c3f46fb66 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 22 May 2020 18:40:12 +0200 Subject: [PATCH 124/527] document make check --- doc/md/Development/Maintainers.md | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/doc/md/Development/Maintainers.md b/doc/md/Development/Maintainers.md index c3d0e4e29..af36dbbe2 100644 --- a/doc/md/Development/Maintainers.md +++ b/doc/md/Development/Maintainers.md @@ -72,6 +72,8 @@ On some architectures, pthread library is not present: * `make client SKIPPTHREAD=1` to skip `-lpthread` at linker stage. +Some unittests are available via `make check`, which is actually triggering individual targets as for `make install`. + `make install` is actually triggering the following individual targets which can be accessed individually: * `make client/install` @@ -89,4 +91,4 @@ On some architectures, pthread library is not present: * SIM firmware * udev rule on Linux -Same logic for `make all`, `make clean`, `make uninstall` +Same logic for `make all`, `make clean`, `make uninstall` and `make check`. From 9e756c5957d8c1806abd492b0d5b959b407f5040 Mon Sep 17 00:00:00 2001 From: iceman1001 Date: Sat, 23 May 2020 12:26:33 +0200 Subject: [PATCH 125/527] chg: hf mf eload - made messages more clear.\n added color to hf mf helptext --- client/src/cmdhfmf.c | 160 ++++++++++++++++++++----------------------- 1 file changed, 76 insertions(+), 84 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 560ed0a16..08a4f1781 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -48,8 +48,8 @@ static int usage_hf14_ice(void) { PrintAndLogEx(NORMAL, " f save nonces to instead of hf-mf--nonces.bin"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf ice"); - PrintAndLogEx(NORMAL, " hf mf ice f nonces.bin"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf ice")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf ice f nonces.bin")); return PM3_SUCCESS; } @@ -60,8 +60,8 @@ static int usage_hf14_dump(void) { PrintAndLogEx(NORMAL, " f : data filename, if no given, UID will be used as filename"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf dump"); - PrintAndLogEx(NORMAL, " hf mf dump 4"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf dump")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf dump 4")); return PM3_SUCCESS; } @@ -72,9 +72,9 @@ static int usage_hf14_mifare(void) { PrintAndLogEx(NORMAL, " (Optional) target other block"); PrintAndLogEx(NORMAL, " (optional) target key type"); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf darkside"); - PrintAndLogEx(NORMAL, " hf mf darkside 16"); - PrintAndLogEx(NORMAL, " hf mf darkside 16 B"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf darkside")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf darkside 16")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf darkside 16 B")); return PM3_SUCCESS; } static int usage_hf14_mfsim(void) { @@ -95,10 +95,10 @@ static int usage_hf14_mfsim(void) { PrintAndLogEx(NORMAL, " e (Optional) Fill simulator keys from found keys"); PrintAndLogEx(NORMAL, " v (Optional) Verbose"); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf sim u 0a0a0a0a"); - PrintAndLogEx(NORMAL, " hf mf sim u 11223344556677"); - PrintAndLogEx(NORMAL, " hf mf sim u 112233445566778899AA"); - PrintAndLogEx(NORMAL, " hf mf sim u 11223344 i x"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf sim u 0a0a0a0a")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf sim u 11223344556677")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf sim u 112233445566778899AA")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf sim u 11223344 i x")); return PM3_SUCCESS; } /* @@ -112,7 +112,7 @@ static int usage_hf14_mfsim(void) { // PrintAndLogEx(NORMAL, " n/a e decrypt sequence, collect read and write commands and save the result of the sequence to emulator memory"); PrintAndLogEx(NORMAL, " f decrypt sequence, collect read and write commands and save the result of the sequence to emulator dump file `uid.eml`"); PrintAndLogEx(NORMAL, "Example:"); - PrintAndLogEx(NORMAL, " hf mf sniff l d f"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf sniff l d f")); return PM3_SUCCESS; } */ @@ -127,10 +127,10 @@ static int usage_hf14_nested(void) { PrintAndLogEx(NORMAL, " d write keys to binary file `hf-mf--key.bin`"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf nested 1 0 A FFFFFFFFFFFF -- key recovery against 1K, block 0, Key A using key FFFFFFFFFFFF"); - PrintAndLogEx(NORMAL, " hf mf nested 1 0 A FFFFFFFFFFFF t -- and transfer keys into emulator memory"); - PrintAndLogEx(NORMAL, " hf mf nested 1 0 A FFFFFFFFFFFF d -- or write keys to binary file "); - PrintAndLogEx(NORMAL, " hf mf nested o 0 A FFFFFFFFFFFF 4 A -- one sector key recovery. Use block 0 Key A to find block 4 Key A"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf nested 1 0 A FFFFFFFFFFFF")" -- key recovery against 1K, block 0, Key A using key FFFFFFFFFFFF"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf nested 1 0 A FFFFFFFFFFFF t")" -- and transfer keys into emulator memory"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf nested 1 0 A FFFFFFFFFFFF d")" -- or write keys to binary file "); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf nested o 0 A FFFFFFFFFFFF 4 A")" -- one sector key recovery. Use block 0 Key A to find block 4 Key A"); return PM3_SUCCESS; } static int usage_hf14_staticnested(void) { @@ -143,9 +143,9 @@ static int usage_hf14_staticnested(void) { PrintAndLogEx(NORMAL, " d write keys to binary file `hf-mf--key.bin`"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf staticnested 1 0 A FFFFFFFFFFFF -- key recovery against 1K, block 0, Key A using key FFFFFFFFFFFF"); - PrintAndLogEx(NORMAL, " hf mf staticnested 1 0 A FFFFFFFFFFFF t -- and transfer keys into emulator memory"); - PrintAndLogEx(NORMAL, " hf mf staticnested 1 0 A FFFFFFFFFFFF d -- or write keys to binary file "); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf staticnested 1 0 A FFFFFFFFFFFF")" -- key recovery against 1K, block 0, Key A using key FFFFFFFFFFFF"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf staticnested 1 0 A FFFFFFFFFFFF t")" -- and transfer keys into emulator memory"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf staticnested 1 0 A FFFFFFFFFFFF d")" -- or write keys to binary file "); return PM3_SUCCESS; } static int usage_hf14_hardnested(void) { @@ -175,35 +175,17 @@ static int usage_hf14_hardnested(void) { PrintAndLogEx(NORMAL, " i n = none (use CPU regular instruction set)"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf hardnested 0 A FFFFFFFFFFFF 4 A"); - PrintAndLogEx(NORMAL, " hf mf hardnested 0 A FFFFFFFFFFFF 4 A w"); - PrintAndLogEx(NORMAL, " hf mf hardnested 0 A FFFFFFFFFFFF 4 A f nonces.bin w s"); - PrintAndLogEx(NORMAL, " hf mf hardnested r"); - PrintAndLogEx(NORMAL, " hf mf hardnested r a0a1a2a3a4a5"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf hardnested 0 A FFFFFFFFFFFF 4 A")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf hardnested 0 A FFFFFFFFFFFF 4 A w")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf hardnested 0 A FFFFFFFFFFFF 4 A f nonces.bin w s")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf hardnested r")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf hardnested r a0a1a2a3a4a5")); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Add the known target key to check if it is present in the remaining key space:"); - PrintAndLogEx(NORMAL, " hf mf hardnested 0 A A0A1A2A3A4A5 4 A FFFFFFFFFFFF"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf hardnested 0 A A0A1A2A3A4A5 4 A FFFFFFFFFFFF")); return PM3_SUCCESS; } -/* -static int usage_hf14_fixednested(void) { - PrintAndLogEx(NORMAL, "Usage:"); - PrintAndLogEx(NORMAL, " all sectors: hf mf fixed [t,d]"); - PrintAndLogEx(NORMAL, " one sector: hf mf fixed o [t]"); - PrintAndLogEx(NORMAL, "Options:"); - PrintAndLogEx(NORMAL, " h this help"); - PrintAndLogEx(NORMAL, " card memory - 0 - MINI(320 bytes), 1 - 1K, 2 - 2K, 4 - 4K, - 1K"); - PrintAndLogEx(NORMAL, " t transfer keys into emulator memory"); - PrintAndLogEx(NORMAL, " d write keys to binary file `hf-mf--key.bin`"); - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf fixed 1 0 A FFFFFFFFFFFF -- key recovery against 1K, block 0, Key A using key FFFFFFFFFFFF"); - PrintAndLogEx(NORMAL, " hf mf fixed 1 0 A FFFFFFFFFFFF t -- and transfer keys into emulator memory"); - PrintAndLogEx(NORMAL, " hf mf fixed 1 0 A FFFFFFFFFFFF d -- or write keys to binary file "); - PrintAndLogEx(NORMAL, " hf mf fixed o 0 A FFFFFFFFFFFF 4 A -- one sector key recovery. Use block 0 Key A to find block 4 Key A"); - return PM3_SUCCESS; -} -*/ + static int usage_hf14_autopwn(void) { PrintAndLogEx(NORMAL, "Usage:"); PrintAndLogEx(NORMAL, " hf mf autopwn [k] "); @@ -238,10 +220,10 @@ static int usage_hf14_autopwn(void) { PrintAndLogEx(NORMAL, " i n = none (use CPU regular instruction set)"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf autopwn -- target Mifare classic card with default keys"); - PrintAndLogEx(NORMAL, " hf mf autopwn * 1 f mfc_default_keys -- target Mifare classic card (size 1k) with default dictionary"); - PrintAndLogEx(NORMAL, " hf mf autopwn k 0 A FFFFFFFFFFFF -- target Mifare classic card with Sector0 typeA with known key 'FFFFFFFFFFFF'"); - PrintAndLogEx(NORMAL, " hf mf autopwn k 0 A FFFFFFFFFFFF * 1 f mfc_default_keys -- this command combines the two above (reduce the need for nested / hardnested attacks, by using a dictionary)"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf autopwn")" -- target Mifare classic card with default keys"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf autopwn * 1 f mfc_default_keys")" -- target Mifare classic card (size 1k) with default dictionary"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf autopwn k 0 A FFFFFFFFFFFF")" -- target Mifare classic card with Sector0 typeA with known key 'FFFFFFFFFFFF'"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf autopwn k 0 A FFFFFFFFFFFF * 1 f mfc_default_keys")" -- this command combines the two above (reduce the need for nested / hardnested attacks, by using a dictionary)"); return PM3_SUCCESS; } static int usage_hf14_chk(void) { @@ -301,7 +283,7 @@ static int usage_hf14_keybrute(void) { PrintAndLogEx(NORMAL, " target key type"); PrintAndLogEx(NORMAL, " candidate key from mf_nonce_brute tool"); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf keybrute 1 A 000011223344"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf keybrute 1 A 000011223344")); return 0; } */ @@ -314,10 +296,10 @@ static int usage_hf14_restore(void) { PrintAndLogEx(NORMAL, " f : data filename, specific the full filename of data file"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf restore -- read the UID from tag first, then restore from hf-mf--key.bin and and hf-mf--dump.bin"); - PrintAndLogEx(NORMAL, " hf mf restore 1 u 12345678 -- restore from hf-mf-12345678-key.bin and hf-mf-12345678-dump.bin"); - PrintAndLogEx(NORMAL, " hf mf restore 1 u 12345678 k dumpkey.bin -- restore from dumpkey.bin and hf-mf-12345678-dump.bin"); - PrintAndLogEx(NORMAL, " hf mf restore 4 -- read the UID from tag with 4K memory first, then restore from hf-mf--key.bin and and hf-mf--dump.bin"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf restore") " -- read the UID from tag first, then restore from hf-mf--key.bin and and hf-mf--dump.bin"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf restore 1 u 12345678") " -- restore from hf-mf-12345678-key.bin and hf-mf-12345678-dump.bin"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf restore 1 u 12345678 k dumpkey.bin") " -- restore from dumpkey.bin and hf-mf-12345678-dump.bin"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf restore 4") " -- read the UID from tag with 4K memory first, then restore from hf-mf--key.bin and and hf-mf--dump.bin"); return PM3_SUCCESS; } static int usage_hf14_decryptbytes(void) { @@ -330,26 +312,28 @@ static int usage_hf14_decryptbytes(void) { PrintAndLogEx(NORMAL, " encrypted tag response"); PrintAndLogEx(NORMAL, " encrypted data, taken directly after at_enc and forward"); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf decrypt b830049b 9248314a 9280e203 41e586f9\n"); - PrintAndLogEx(NORMAL, " this sample decrypts 41e586f9 -> 3003999a Annotated: 30 03 [99 9a] auth block 3 [crc]"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf decrypt b830049b 9248314a 9280e203 41e586f9")); + PrintAndLogEx(NORMAL, "\n this sample decrypts 41e586f9 -> 3003999a Annotated: 30 03 [99 9a] auth block 3 [crc]"); return PM3_SUCCESS; } static int usage_hf14_eget(void) { PrintAndLogEx(NORMAL, "Usage: hf mf eget "); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf eget 0 "); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf eget 0")); return PM3_SUCCESS; } static int usage_hf14_eclr(void) { PrintAndLogEx(NORMAL, "It set card emulator memory to empty data blocks and key A/B FFFFFFFFFFFF \n"); PrintAndLogEx(NORMAL, "Usage: hf mf eclr"); + PrintAndLogEx(NORMAL, "Examples:"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf eclr")); return PM3_SUCCESS; } static int usage_hf14_eset(void) { PrintAndLogEx(NORMAL, "Usage: hf mf eset "); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf eset 1 000102030405060708090a0b0c0d0e0f "); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf eset 1 000102030405060708090a0b0c0d0e0f")); return PM3_SUCCESS; } static int usage_hf14_eload(void) { @@ -358,8 +342,8 @@ static int usage_hf14_eload(void) { PrintAndLogEx(NORMAL, " [card memory]: 0 = 320 bytes (Mifare Mini), 1 = 1K (default), 2 = 2K, 4 = 4K, u = UL"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf eload filename"); - PrintAndLogEx(NORMAL, " hf mf eload 4 filename"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf eload filename")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf eload 4 filename")); return PM3_SUCCESS; } static int usage_hf14_esave(void) { @@ -368,9 +352,9 @@ static int usage_hf14_esave(void) { PrintAndLogEx(NORMAL, " [card memory]: 0 = 320 bytes (Mifare Mini), 1 = 1K (default), 2 = 2K, 4 = 4K"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf esave "); - PrintAndLogEx(NORMAL, " hf mf esave 4"); - PrintAndLogEx(NORMAL, " hf mf esave 4 filename"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf esave")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf esave 4")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf esave 4 filename")); return PM3_SUCCESS; } static int usage_hf14_ecfill(void) { @@ -380,8 +364,8 @@ static int usage_hf14_ecfill(void) { PrintAndLogEx(NORMAL, " [card memory]: 0 = 320 bytes (Mifare Mini), 1 = 1K (default), 2 = 2K, 4 = 4K"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf ecfill A"); - PrintAndLogEx(NORMAL, " hf mf ecfill A 4"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf ecfill A")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf ecfill A 4")); return PM3_SUCCESS; } static int usage_hf14_ekeyprn(void) { @@ -393,8 +377,8 @@ static int usage_hf14_ekeyprn(void) { PrintAndLogEx(NORMAL, " d write keys to binary file `hf-mf--key.bin`"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf ekeyprn 1"); - PrintAndLogEx(NORMAL, " hf mf ekeyprn d"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf ekeyprn 1")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf ekeyprn d")); return PM3_SUCCESS; } @@ -409,8 +393,8 @@ static int usage_hf14_csetuid(void) { PrintAndLogEx(NORMAL, " ATQA 4 hex symbols"); PrintAndLogEx(NORMAL, " SAK 2 hex symbols"); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf csetuid 01020304"); - PrintAndLogEx(NORMAL, " hf mf csetuid 01020304 0004 08 w"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf csetuid 01020304")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf csetuid 01020304 0004 08 w")); return PM3_SUCCESS; } static int usage_hf14_csetblk(void) { @@ -423,8 +407,8 @@ static int usage_hf14_csetblk(void) { PrintAndLogEx(NORMAL, " block number"); PrintAndLogEx(NORMAL, " block data to write (32 hex symbols)"); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf csetblk 1 01020304050607080910111213141516"); - PrintAndLogEx(NORMAL, " hf mf csetblk 1 01020304050607080910111213141516 w"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf csetblk 1 01020304050607080910111213141516")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf csetblk 1 01020304050607080910111213141516 w")); return PM3_SUCCESS; } static int usage_hf14_cload(void) { @@ -439,8 +423,8 @@ static int usage_hf14_cload(void) { PrintAndLogEx(NORMAL, " b load card with data from binary file"); PrintAndLogEx(NORMAL, " load card with data from eml file"); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf cload mydump"); - PrintAndLogEx(NORMAL, " hf mf cload e"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf cload mydump")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf cload e")); return PM3_SUCCESS; } static int usage_hf14_cgetblk(void) { @@ -451,7 +435,7 @@ static int usage_hf14_cgetblk(void) { PrintAndLogEx(NORMAL, " h this help"); PrintAndLogEx(NORMAL, " block number"); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf cgetblk 1"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf cgetblk 1")); return PM3_SUCCESS; } static int usage_hf14_cgetsc(void) { @@ -462,7 +446,7 @@ static int usage_hf14_cgetsc(void) { PrintAndLogEx(NORMAL, " h this help"); PrintAndLogEx(NORMAL, " sector number"); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf cgetsc 0"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf cgetsc 0")); return PM3_SUCCESS; } static int usage_hf14_csave(void) { @@ -478,9 +462,9 @@ static int usage_hf14_csave(void) { PrintAndLogEx(NORMAL, " o save data to file"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf csave u 1"); - PrintAndLogEx(NORMAL, " hf mf csave e 1"); - PrintAndLogEx(NORMAL, " hf mf csave 4 o filename"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf csave u 1")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf csave e 1")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf csave 4 o filename")); return PM3_SUCCESS; } static int usage_hf14_nack(void) { @@ -491,7 +475,7 @@ static int usage_hf14_nack(void) { PrintAndLogEx(NORMAL, " h this help"); PrintAndLogEx(NORMAL, " v verbose"); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf mf nack"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf mf nack")); return PM3_SUCCESS; } @@ -3727,6 +3711,11 @@ int CmdHF14AMfELoad(const char *Cmd) { free(data); return res; } + + // update expected blocks to match converted data. + if (numBlocks != datalen / 4) { + numBlocks = datalen / 4; + } } PrintAndLogEx(INFO, "Uploading to emulator memory"); @@ -3752,24 +3741,27 @@ int CmdHF14AMfELoad(const char *Cmd) { counter += blockWidth; datalen -= blockWidth; } + free(data); PrintAndLogEx(NORMAL, "\n"); - // Ultralight /Ntag if (blockWidth == 4) { + PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`hf mfu sim h`")); + // MFU / NTAG if ((blockNum != numBlocks)) { - PrintAndLogEx(FAILED, "Warning, Ultralight/Ntag file content, Loaded %d blocks into emulator memory", blockNum); - free(data); + PrintAndLogEx(WARNING, "Warning, Ultralight/Ntag file content, Loaded %d blocks of expected %d blocks into emulator memory", blockNum, numBlocks); return PM3_SUCCESS; } } else { + PrintAndLogEx(HINT, "You are ready to simulate. See " _YELLOW_("`hf mf sim h`")); + // MFC if ((blockNum != numBlocks)) { - PrintAndLogEx(FAILED, "Error, file content, Only loaded %d blocks, must be %d blocks into emulator memory", blockNum, numBlocks); - free(data); + PrintAndLogEx(WARNING, "Error, file content, Only loaded %d blocks, must be %d blocks into emulator memory", blockNum, numBlocks); + return PM3_SUCCESS; } + } PrintAndLogEx(SUCCESS, "Done"); - free(data); return PM3_SUCCESS; } From 6d33c0b784e33b344f31217423d97f9c528b9d37 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen Date: Fri, 22 May 2020 19:20:44 +0200 Subject: [PATCH 126/527] Bring hitag2crack tools in main Makefiles --- Makefile | 13 +- doc/md/Development/Maintainers.md | 4 + tools/hitag2crack/Makefile | 33 +++++ tools/hitag2crack/common/ht2crackutils.h | 5 + tools/hitag2crack/crack2/Makefile | 37 +++--- .../hitag2crack/crack2/ht2crack2buildtable.c | 50 ++++---- tools/hitag2crack/crack2/ht2crack2gentest.c | 4 +- tools/hitag2crack/crack2/ht2crack2search.c | 16 +-- tools/hitag2crack/crack3/.gitignore | 5 +- tools/hitag2crack/crack3/Makefile | 32 ++--- tools/hitag2crack/crack3/README.md | 4 +- tools/hitag2crack/crack3/ht2crack3.c | 12 +- .../crack3/{ht2test.c => ht2crack3test.c} | 2 +- tools/hitag2crack/crack4/Makefile | 30 ++--- tools/hitag2crack/crack4/ht2crack4.c | 57 +++++---- tools/hitag2crack/crack5/Makefile | 29 +++-- tools/hitag2crack/crack5/ht2crack5.c | 10 +- tools/hitag2crack/crack5gpu/Makefile | 42 ++++--- .../crack5gpu/{ht2crack5.c => ht2crack5gpu.c} | 6 +- tools/hitag2crack/hitag2_gen_nRaR.py | 118 ++++++++++++++++++ tools/pm3_tests.sh | 92 +++++++++++++- 21 files changed, 433 insertions(+), 168 deletions(-) create mode 100644 tools/hitag2crack/Makefile rename tools/hitag2crack/crack3/{ht2test.c => ht2crack3test.c} (96%) rename tools/hitag2crack/crack5gpu/{ht2crack5.c => ht2crack5gpu.c} (98%) create mode 100755 tools/hitag2crack/hitag2_gen_nRaR.py diff --git a/Makefile b/Makefile index d111d01fc..f7a434d3b 100644 --- a/Makefile +++ b/Makefile @@ -15,6 +15,8 @@ ifneq (,$(DESTDIR)) endif all clean install uninstall check: %: client/% bootrom/% armsrc/% recovery/% mfkey/% nonce2key/% mf_nonce_brute/% fpga_compress/% +# hitag2crack toolsuite is not yet integrated in "all", it must be called explicitly: "make hitag2crack" +#all clean install uninstall check: %: hitag2crack/% INSTALLTOOLS=pm3_eml2lower.sh pm3_eml2upper.sh pm3_mfdread.py pm3_mfd2eml.py pm3_eml2mfd.py findbits.py rfidtest.pl xorcheck.py INSTALLSIMFW=sim011.bin sim011.sha512.txt @@ -103,6 +105,9 @@ client/check: FORCE recovery/check: FORCE $(info [*] CHECK $(patsubst %/check,%,$@)) $(Q)$(BASH) tools/pm3_tests.sh $(CHECKARGS) $(patsubst %/check,%,$@) +hitag2crack/check: FORCE + $(info [*] CHECK $(patsubst %/check,%,$@)) + $(Q)$(BASH) tools/pm3_tests.sh $(CHECKARGS) $(patsubst %/check,%,$@) common/check: FORCE $(info [*] CHECK $(patsubst %/check,%,$@)) $(Q)$(BASH) tools/pm3_tests.sh $(CHECKARGS) $(patsubst %/check,%,$@) @@ -135,9 +140,12 @@ recovery/install: bootrom/all armsrc/all recovery/%: FORCE cleanifplatformchanged $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C recovery $(patsubst recovery/%,%,$@) DESTDIR=$(MYDESTDIR) +hitag2crack/%: FORCE + $(info [*] MAKE $@) + $(Q)$(MAKE) --no-print-directory -C tools/hitag2crack $(patsubst hitag2crack/%,%,$@) DESTDIR=$(MYDESTDIR) FORCE: # Dummy target to force remake in the subdirectories, even if files exist (this Makefile doesn't know about the prerequisites) -.PHONY: all clean install uninstall help _test bootrom fullimage recovery client mfkey nonce2key mf_nonce_brute style miscchecks release FORCE udev accessrights cleanifplatformchanged +.PHONY: all clean install uninstall help _test bootrom fullimage recovery client mfkey nonce2key mf_nonce_brute hitag2crack style miscchecks release FORCE udev accessrights cleanifplatformchanged help: @echo "Multi-OS Makefile" @@ -157,6 +165,7 @@ help: @echo "+ mfkey - Make tools/mfkey" @echo "+ nonce2key - Make tools/nonce2key" @echo "+ mf_nonce_brute - Make tools/mf_nonce_brute" + @echo "+ hitag2crack - Make tools/hitag2crack" @echo "+ fpga_compress - Make tools/fpga_compress" @echo @echo "+ style - Apply some automated source code formatting rules" @@ -193,6 +202,8 @@ mf_nonce_brute: mf_nonce_brute/all fpga_compress: fpga_compress/all +hitag2crack: hitag2crack/all + newtarbin: $(RM) proxmark3-$(platform)-bin.tar proxmark3-$(platform)-bin.tar.gz @touch proxmark3-$(platform)-bin.tar diff --git a/doc/md/Development/Maintainers.md b/doc/md/Development/Maintainers.md index af36dbbe2..09cddede7 100644 --- a/doc/md/Development/Maintainers.md +++ b/doc/md/Development/Maintainers.md @@ -72,6 +72,10 @@ On some architectures, pthread library is not present: * `make client SKIPPTHREAD=1` to skip `-lpthread` at linker stage. +One tool requires a CUDA compilation environment, it can be skipped as well: + +* `make hitag2crack SKIPGPU=1` to skip ht2crack5gpu tool when compiling the hitag2crack toolsuite. + Some unittests are available via `make check`, which is actually triggering individual targets as for `make install`. `make install` is actually triggering the following individual targets which can be accessed individually: diff --git a/tools/hitag2crack/Makefile b/tools/hitag2crack/Makefile new file mode 100644 index 000000000..c36d18b30 --- /dev/null +++ b/tools/hitag2crack/Makefile @@ -0,0 +1,33 @@ +# Must be called before any Makefile include +ROOT_DIR:=$(dir $(realpath $(lastword $(MAKEFILE_LIST)))) + +include ../../Makefile.defs + +all clean install uninstall check: %: crack2/% crack3/% crack4/% crack5/% +ifneq ($(SKIPGPU),1) +all clean install uninstall check: %: crack5gpu/% +endif + +crack2/%: FORCE + $(info [*] MAKE $@) + $(Q)$(MAKE) --no-print-directory -C crack2 $(patsubst crack2/%,%,$@) DESTDIR=$(MYDESTDIR) + +crack3/%: FORCE + $(info [*] MAKE $@) + $(Q)$(MAKE) --no-print-directory -C crack3 $(patsubst crack3/%,%,$@) DESTDIR=$(MYDESTDIR) + +crack4/%: FORCE + $(info [*] MAKE $@) + $(Q)$(MAKE) --no-print-directory -C crack4 $(patsubst crack4/%,%,$@) DESTDIR=$(MYDESTDIR) + +crack5/%: FORCE + $(info [*] MAKE $@) + $(Q)$(MAKE) --no-print-directory -C crack5 $(patsubst crack5/%,%,$@) DESTDIR=$(MYDESTDIR) + +crack5gpu/%: FORCE + $(info [*] MAKE $@) + $(Q)$(MAKE) --no-print-directory -C crack5gpu $(patsubst crack5gpu/%,%,$@) DESTDIR=$(MYDESTDIR) + +FORCE: # Dummy target to force remake in the subdirectories, even if files exist (this Makefile doesn't know about the prerequisites) + +.phony: crack2 crack3 crack4 crack5 crack5gpu FORCE diff --git a/tools/hitag2crack/common/ht2crackutils.h b/tools/hitag2crack/common/ht2crackutils.h index 41c3a07c2..16f4fab5b 100644 --- a/tools/hitag2crack/common/ht2crackutils.h +++ b/tools/hitag2crack/common/ht2crackutils.h @@ -1,3 +1,6 @@ +#ifndef HT2CRACKUTILS_H +#define HT2CRACKUTILS_H + #include #include #include @@ -41,3 +44,5 @@ void buildlfsr(Hitag_State *hstate); #define rev64(X) (rev32(X) + (rev32(X >> 32) << 32)) unsigned long hexreversetoulong(char *hex); unsigned long long hexreversetoulonglong(char *hex); + +#endif /* HT2CRACKUTILS_H */ diff --git a/tools/hitag2crack/crack2/Makefile b/tools/hitag2crack/crack2/Makefile index 4794d6ec4..e8dbc4bac 100644 --- a/tools/hitag2crack/crack2/Makefile +++ b/tools/hitag2crack/crack2/Makefile @@ -1,23 +1,22 @@ -CFLAGS?=-Wall -Werror -O3 -# Linux libs -LIBS=-pthread -D_GNU_SOURCE -# Mac libs -# LIBS= -VPATH=../common -INC=-I ../common +MYSRCPATHS = ../common +MYSRCS = ht2crackutils.c hitagcrypto.c +MYINCLUDES =-I ../common +MYCFLAGS = -D_GNU_SOURCE +MYDEFS = +MYLDLIBS = -lpthread -all: ht2crack2buildtable.c ht2crack2search.c ht2crack2gentest.c hitagcrypto.o ht2crackutils.o - $(CC) $(CFLAGS) $(INC) -o ht2crack2buildtable ht2crack2buildtable.c hitagcrypto.o ht2crackutils.o $(LIBS) - $(CC) $(CFLAGS) $(INC) -o ht2crack2search ht2crack2search.c hitagcrypto.o ht2crackutils.o $(LIBS) - $(CC) $(CFLAGS) $(INC) -o ht2crack2gentest ht2crack2gentest.c hitagcrypto.o ht2crackutils.o $(LIBS) +BINS = ht2crack2buildtable ht2crack2search ht2crack2gentest +INSTALLTOOLS = $(BINS) -ht2crackutils.o: ht2crackutils.c ht2crackutils.h - $(CC) $(CFLAGS) -c $< +include ../../../Makefile.host -hitagcrypto.o: hitagcrypto.c hitagcrypto.h - $(CC) $(CFLAGS) -c $< +# checking platform can be done only after Makefile.host +ifneq (,$(findstring MINGW,$(platform))) + # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) + # and setting _ISOC99_SOURCE sets internally __USE_MINGW_ANSI_STDIO=1 + CFLAGS += -D_ISOC99_SOURCE +endif -clean: - rm -rf *.o ht2crack2buildtable ht2crack2search ht2crack2gentest - -fresh: clean all +ht2crack2buildtable : $(OBJDIR)/ht2crack2buildtable.o $(MYOBJS) +ht2crack2search : $(OBJDIR)/ht2crack2search.o $(MYOBJS) +ht2crack2gentest : $(OBJDIR)/ht2crack2gentest.o $(MYOBJS) diff --git a/tools/hitag2crack/crack2/ht2crack2buildtable.c b/tools/hitag2crack/crack2/ht2crack2buildtable.c index 8bf67a8ac..c45768998 100644 --- a/tools/hitag2crack/crack2/ht2crack2buildtable.c +++ b/tools/hitag2crack/crack2/ht2crack2buildtable.c @@ -4,7 +4,7 @@ */ #include "ht2crackutils.h" - +#include // DATAMAX is the size of each bucket (bytes). There are 65536 buckets so choose a value such that // DATAMAX * 65536 < RAM available. For ex, if you want to use 12GB of RAM (for a 16GB machine @@ -53,63 +53,63 @@ uint64_t d2[48]; int nsteps2; // create table entry -void create_table(struct table *t, int d1, int d2) { - if (!t) { +static void create_table(struct table *tt, int d_1, int d_2) { + if (!tt) { printf("create_table: t is NULL\n"); exit(1); } // create some space - t->data = (unsigned char *)malloc(DATAMAX); - if (!(t->data)) { + tt->data = (unsigned char *)malloc(DATAMAX); + if (!(tt->data)) { printf("create_table: cannot malloc data\n"); exit(1); } // set data ptr to start of data table - t->ptr = t->data; + tt->ptr = tt->data; // init the mutex - if (pthread_mutex_init(&(t->mutex), NULL)) { + if (pthread_mutex_init(&(tt->mutex), NULL)) { printf("create_table: cannot init mutex\n"); exit(1); } // create the path -// sprintf(t->path, "/Volumes/2tb/%02X/%02X.bin", d1 & 0xff, d2 & 0xff); - sprintf(t->path, "table/%02x/%02x.bin", d1 & 0xff, d2 & 0xff); +// sprintf(tt->path, "/Volumes/2tb/%02X/%02X.bin", d_1 & 0xff, d_2 & 0xff); + sprintf(tt->path, "table/%02x/%02x.bin", d_1 & 0xff, d_2 & 0xff); } // create all table entries -void create_tables(struct table *t) { +static void create_tables(struct table *tt) { int i, j; - if (!t) { + if (!tt) { printf("create_tables: t is NULL\n"); exit(1); } for (i = 0; i < 0x100; i++) { for (j = 0; j < 0x100; j++) { - create_table(t + ((i * 0x100) + j), i, j); + create_table(tt + ((i * 0x100) + j), i, j); } } } // free the table memory -void free_tables(struct table *t) { +static void free_tables(struct table *tt) { int i; struct table *ttmp; - if (!t) { + if (!tt) { printf("free_tables: t is NULL\n"); exit(1); } for (i = 0; i < 0x10000; i++) { - ttmp = t + i; + ttmp = tt + i; free(ttmp->data); } } @@ -117,7 +117,7 @@ void free_tables(struct table *t) { // write (partial) table to file -void writetable(struct table *t1) { +static void writetable(struct table *t1) { int fd; if (debug) printf("writetable %s\n", t1->path); @@ -142,7 +142,7 @@ void writetable(struct table *t1) { // store value in table -void store(unsigned char *data) { +static void store(unsigned char *data) { unsigned char d_1, d_2; int offset; struct table *t1; @@ -194,7 +194,7 @@ void store(unsigned char *data) { } // writes the ks (keystream) and s (state) -void write_ks_s(uint32_t ks1, uint32_t ks2, uint64_t shiftreg) { +static void write_ks_s(uint32_t ks1, uint32_t ks2, uint64_t shiftreg) { unsigned char buf[16]; // create buffer @@ -209,7 +209,7 @@ void write_ks_s(uint32_t ks1, uint32_t ks2, uint64_t shiftreg) { // builds the di table for jumping -void builddi(int steps, int table) { +static void builddi(int steps, int table) { uint64_t statemask; int i; Hitag_State mystate; @@ -241,7 +241,7 @@ void builddi(int steps, int table) { } // jump function - quickly jumps a load of steps -void jumpnsteps(Hitag_State *hstate, int table) { +static void jumpnsteps(Hitag_State *hstate, int table) { uint64_t output = 0; uint64_t bitmask; int i; @@ -277,14 +277,14 @@ void jumpnsteps(Hitag_State *hstate, int table) { // thread to build a part of the table -void *buildtable(void *d) { +static void *buildtable(void *dd) { Hitag_State hstate; Hitag_State hstate2; unsigned long i; unsigned long maxentries = 1; uint32_t ks1; uint32_t ks2; - int index = (int)(long)d; + int index = (int)(long)dd; int tnum = NUM_BUILD_THREADS; /* set random state */ @@ -334,7 +334,7 @@ void *buildtable(void *d) { // make 'table/' (unsorted) and 'sorted/' dir structures -void makedirs() { +static void makedirs(void) { char path[32]; int i; @@ -368,7 +368,7 @@ static int datacmp(const void *p1, const void *p2, void *dummy) { return memcmp(d_1, d_2, DATASIZE); } -void *sorttable(void *d) { +static void *sorttable(void *dd) { int i, j; int fdin; int fdout; @@ -378,7 +378,7 @@ void *sorttable(void *d) { struct stat filestat; unsigned char *table = NULL; uint64_t numentries = 0; - int index = (int)(long)d; + int index = (int)(long)dd; int space = 0x100 / NUM_SORT_THREADS; // create table - 50MB should be enough diff --git a/tools/hitag2crack/crack2/ht2crack2gentest.c b/tools/hitag2crack/crack2/ht2crack2gentest.c index 0f255a5b6..cc8d1e94e 100644 --- a/tools/hitag2crack/crack2/ht2crack2gentest.c +++ b/tools/hitag2crack/crack2/ht2crack2gentest.c @@ -5,7 +5,7 @@ #include "ht2crackutils.h" -int makerandom(char *hex, unsigned int len, int fd) { +static int makerandom(char *hex, unsigned int len, int fd) { unsigned char raw[32]; int i; @@ -43,7 +43,7 @@ int main(int argc, char *argv[]) { int urandomfd; if (argc < 2) { - printf("ht2crack2gentest number\n"); + printf("%s number\n", argv[0]); exit(1); } diff --git a/tools/hitag2crack/crack2/ht2crack2search.c b/tools/hitag2crack/crack2/ht2crack2search.c index 16a2e00b8..d339f878f 100644 --- a/tools/hitag2crack/crack2/ht2crack2search.c +++ b/tools/hitag2crack/crack2/ht2crack2search.c @@ -23,7 +23,7 @@ static int datacmp(const void *p1, const void *p2) { return memcmp(d1, d2, DATASIZE - 6); } -int loadrngdata(struct rngdata *r, char *file) { +static int loadrngdata(struct rngdata *r, char *file) { int fd; int i, j; int nibble; @@ -90,7 +90,7 @@ int loadrngdata(struct rngdata *r, char *file) { return 1; } -int makecand(unsigned char *c, struct rngdata *r, int bitoffset) { +static int makecand(unsigned char *c, struct rngdata *r, int bitoffset) { int bytenum; int bitnum; int i; @@ -116,7 +116,7 @@ int makecand(unsigned char *c, struct rngdata *r, int bitoffset) { // test the candidate against the next or previous rng data -int testcand(unsigned char *f, unsigned char *rt, int fwd) { +static int testcand(unsigned char *f, unsigned char *rt, int fwd) { Hitag_State hstate; int i; uint32_t ks1; @@ -154,7 +154,7 @@ int testcand(unsigned char *f, unsigned char *rt, int fwd) { } } -int searchcand(unsigned char *c, unsigned char *rt, int fwd, unsigned char *m, unsigned char *s) { +static int searchcand(unsigned char *c, unsigned char *rt, int fwd, unsigned char *m, unsigned char *s) { int fd; struct stat filestat; char file[64]; @@ -222,7 +222,7 @@ int searchcand(unsigned char *c, unsigned char *rt, int fwd, unsigned char *m, u } -int findmatch(struct rngdata *r, unsigned char *outmatch, unsigned char *outstate, int *bitoffset) { +static int findmatch(struct rngdata *r, unsigned char *outmatch, unsigned char *outstate, int *bitoffset) { int i; int bitlen; unsigned char cand[6]; @@ -276,7 +276,7 @@ int findmatch(struct rngdata *r, unsigned char *outmatch, unsigned char *outstat -void rollbackrng(Hitag_State *hstate, unsigned char *s, int offset) { +static void rollbackrng(Hitag_State *hstate, unsigned char *s, int offset) { int i; if (!s) { @@ -305,7 +305,7 @@ void rollbackrng(Hitag_State *hstate, unsigned char *s, int offset) { } -uint64_t recoverkey(Hitag_State *hstate, char *uidstr, char *nRstr) { +static uint64_t recoverkey(Hitag_State *hstate, char *uidstr, char *nRstr) { uint64_t key; uint64_t keyupper; uint32_t uid; @@ -368,7 +368,7 @@ int main(int argc, char *argv[]) { int i; if (argc < 4) { - printf("ht2crack2search rngdatafile UID nR\n"); + printf("%s rngdatafile UID nR\n", argv[0]); exit(1); } diff --git a/tools/hitag2crack/crack3/.gitignore b/tools/hitag2crack/crack3/.gitignore index c993f2fe3..adf433d08 100644 --- a/tools/hitag2crack/crack3/.gitignore +++ b/tools/hitag2crack/crack3/.gitignore @@ -1,6 +1,5 @@ ht2crack3 -ht2test +ht2crack3test ht2crack3.exe -ht2test.exe - +ht2crack3test.exe diff --git a/tools/hitag2crack/crack3/Makefile b/tools/hitag2crack/crack3/Makefile index 318b5db78..010b6151c 100644 --- a/tools/hitag2crack/crack3/Makefile +++ b/tools/hitag2crack/crack3/Makefile @@ -1,19 +1,21 @@ -CFLAGS?=-Wall -Werror -O3 -LIBS= -VPATH=../common -INC=-I ../common +MYSRCPATHS = ../common +MYSRCS = ht2crackutils.c hitagcrypto.c +MYINCLUDES =-I ../common +MYCFLAGS = -D_GNU_SOURCE +MYDEFS = +MYLDLIBS = -lpthread -all: ht2crack3.c ht2test.c hitagcrypto.o ht2crackutils.o - $(CC) $(CFLAGS) $(INC) -o ht2crack3 $< hitagcrypto.o ht2crackutils.o -lpthread $(LIBS) - $(CC) $(CFLAGS) $(INC) -o ht2test ht2test.c hitagcrypto.o ht2crackutils.o $(LIBS) +BINS = ht2crack3 ht2crack3test +INSTALLTOOLS = $(BINS) -ht2crackutils.o: ht2crackutils.c ht2crackutils.h - $(CC) $(CFLAGS) -c $< +include ../../../Makefile.host -hitagcrypto.o: hitagcrypto.c hitagcrypto.h - $(CC) $(CFLAGS) -c $< +# checking platform can be done only after Makefile.host +ifneq (,$(findstring MINGW,$(platform))) + # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) + # and setting _ISOC99_SOURCE sets internally __USE_MINGW_ANSI_STDIO=1 + CFLAGS += -D_ISOC99_SOURCE +endif -clean: - rm -rf *.o ht2crack3 ht2test - -fresh: clean all +ht2crack3 : $(OBJDIR)/ht2crack3.o $(MYOBJS) +ht2crack3test : $(OBJDIR)/ht2crack3test.o $(MYOBJS) diff --git a/tools/hitag2crack/crack3/README.md b/tools/hitag2crack/crack3/README.md index 57d5d2aa8..955775a62 100644 --- a/tools/hitag2crack/crack3/README.md +++ b/tools/hitag2crack/crack3/README.md @@ -31,9 +31,9 @@ Tests If you happen to know the key and want to check that all your nR aR values are valid (for high-powered demonstrations only, really) then you can use -the ht2test program to check them. It's otherwise massively pointless and a +the ht2crack3test program to check them. It's otherwise massively pointless and a complete waste of space. ``` -./ht2test NRARFILE KEY UID +./ht2crack3test NRARFILE KEY UID ``` diff --git a/tools/hitag2crack/crack3/ht2crack3.c b/tools/hitag2crack/crack3/ht2crack3.c index 4f481fbf7..b54c7b000 100644 --- a/tools/hitag2crack/crack3/ht2crack3.c +++ b/tools/hitag2crack/crack3/ht2crack3.c @@ -65,7 +65,7 @@ static uint32_t hitag2_crypt(uint64_t s) { // this function is a modification of the filter function f, based heavily // on the hitag2_crypt function in Rfidler -int fnP(uint64_t klowery) { +static int fnP(uint64_t klowery) { const uint32_t ht2_function4a = 0x2C79; // 0010 1100 0111 1001 const uint32_t ht2_function4b = 0x6671; // 0110 0110 0111 0001 const uint32_t ht2_function4p = 0xAE83; // 1010 1110 1000 0011 @@ -84,7 +84,7 @@ int fnP(uint64_t klowery) { } // comparison function for sorting/searching Tklower entries -int Tk_cmp(const void *v1, const void *v2) { +static int Tk_cmp(const void *v1, const void *v2) { const struct Tklower *Tk1 = (struct Tklower *)v1; const struct Tklower *Tk2 = (struct Tklower *)v2; @@ -98,7 +98,7 @@ int Tk_cmp(const void *v1, const void *v2) { } // test for bad guesses of kmiddle -int is_kmiddle_badguess(uint64_t z, struct Tklower *Tk, int max, int aR0) { +static int is_kmiddle_badguess(uint64_t z, struct Tklower *Tk, int max, int aR0) { struct Tklower *result, target; @@ -122,7 +122,7 @@ int is_kmiddle_badguess(uint64_t z, struct Tklower *Tk, int max, int aR0) { } // function to test if a partial key is valid -int testkey(uint64_t *out, uint64_t uid, uint64_t pkey, uint64_t nR, uint64_t aR) { +static int testkey(uint64_t *out, uint64_t uid, uint64_t pkey, uint64_t nR, uint64_t aR) { uint64_t kupper; uint64_t key; Hitag_State hstate; @@ -178,7 +178,7 @@ int testkey(uint64_t *out, uint64_t uid, uint64_t pkey, uint64_t nR, uint64_t aR // effectively work out candidates for the lower 34 bits of the key. -void *crack(void *d) { +static void *crack(void *d) { struct threaddata *data = (struct threaddata *)d; uint64_t uid; struct nRaR *TnRaR; @@ -321,7 +321,7 @@ int main(int argc, char *argv[]) { struct threaddata *tdata = NULL; if (argc < 3) { - printf("ht2crack3 uid nRaRfile\n"); + printf("%s uid nRaRfile\n", argv[0]); exit(1); } diff --git a/tools/hitag2crack/crack3/ht2test.c b/tools/hitag2crack/crack3/ht2crack3test.c similarity index 96% rename from tools/hitag2crack/crack3/ht2test.c rename to tools/hitag2crack/crack3/ht2crack3test.c index 53d47cfca..8d48cc914 100644 --- a/tools/hitag2crack/crack3/ht2test.c +++ b/tools/hitag2crack/crack3/ht2crack3test.c @@ -19,7 +19,7 @@ int main(int argc, char *argv[]) { char *uid; if (argc < 4) { - printf("ht2test nRaRfile KEY UID\n"); + printf("%s nRaRfile KEY UID\n", argv[0]); exit(1); } diff --git a/tools/hitag2crack/crack4/Makefile b/tools/hitag2crack/crack4/Makefile index b560577bd..1c7298840 100644 --- a/tools/hitag2crack/crack4/Makefile +++ b/tools/hitag2crack/crack4/Makefile @@ -1,18 +1,20 @@ -CFLAGS?=-Wall -Werror -O3 -LIBS=-lpthread -VPATH=../common -INC=-I ../common +MYSRCPATHS = ../common +MYSRCS = ht2crackutils.c hitagcrypto.c +MYINCLUDES =-I ../common +MYCFLAGS = -D_GNU_SOURCE +MYDEFS = +MYLDLIBS = -lpthread -all: ht2crack4.c hitagcrypto.o ht2crackutils.o - $(CC) $(CFLAGS) $(INC) -o ht2crack4 $< hitagcrypto.o ht2crackutils.o $(LIBS) +BINS = ht2crack4 +INSTALLTOOLS = $(BINS) -hitagcrypto.o: hitagcrypto.c hitagcrypto.h - $(CC) $(CFLAGS) -c $< +include ../../../Makefile.host -ht2crackutils.o: ht2crackutils.c ht2crackutils.h - $(CC) $(CFLAGS) -c $< +# checking platform can be done only after Makefile.host +ifneq (,$(findstring MINGW,$(platform))) + # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) + # and setting _ISOC99_SOURCE sets internally __USE_MINGW_ANSI_STDIO=1 + CFLAGS += -D_ISOC99_SOURCE +endif -clean: - rm -rf *.o ht2crack4 - -fresh: clean all +ht2crack4 : $(OBJDIR)/ht2crack4.o $(MYOBJS) diff --git a/tools/hitag2crack/crack4/ht2crack4.c b/tools/hitag2crack/crack4/ht2crack4.c index 4c923737f..e630a956f 100644 --- a/tools/hitag2crack/crack4/ht2crack4.c +++ b/tools/hitag2crack/crack4/ht2crack4.c @@ -93,7 +93,7 @@ uint64_t uid; int maxtablesize = 800000; uint64_t supplied_testkey = 0; -void usage() { +static void usage(void) { printf("ht2crack4 - K Sheldrake, based on the work of Garcia et al\n\n"); printf("Cracks a HiTag2 key using a small number (4 to 16) of encrypted\n"); printf("nonce and challenge response pairs, using a fast correlation\n"); @@ -147,6 +147,7 @@ double pfnc[][16] = { /* hitag2_crypt works on the post-shifted form of the lfsr; this is the ref in rfidler code */ +/* static uint32_t hitag2_crypt(uint64_t s) { uint32_t bitindex; @@ -158,9 +159,10 @@ static uint32_t hitag2_crypt(uint64_t s) { return (ht2_function5c >> bitindex) & 1; } +*/ /* ht2crypt works on the pre-shifted form of the lfsr; this is the ref in the paper */ -uint64_t ht2crypt(uint64_t s) { +static uint64_t ht2crypt(uint64_t s) { uint64_t bitindex; bitindex = (ht2_function4a >> pickbits2_2(s, 2, 5)) & 1; @@ -174,12 +176,13 @@ uint64_t ht2crypt(uint64_t s) { /* fnL is the feedback function for the reference code */ -uint64_t fnL(uint64_t x) { +/* +static uint64_t fnL(uint64_t x) { return (bitn(x, 0) ^ bitn(x, 2) ^ bitn(x, 3) ^ bitn(x, 6) ^ bitn(x, 7) ^ bitn(x, 8) ^ bitn(x, 16) ^ bitn(x, 22) ^ bitn(x, 23) ^ bitn(x, 26) ^ bitn(x, 30) ^ bitn(x, 41) ^ bitn(x, 42) ^ bitn(x, 43) ^ bitn(x, 46) ^ bitn(x, 47)); } - +*/ /* packed_size is an array that maps the number of confirmed bits in a state to * the number of relevant bits. @@ -193,7 +196,7 @@ unsigned int packed_size[] = { 0, 0, 0, 1, 2, 2, 3, 4, 4, 5, 5, 5, 5 /* f20 is the same as hitag2_crypt except it works on the packed version * of the state where all 20 relevant bits are squashed together */ -uint64_t f20(uint64_t y) { +static uint64_t f20(uint64_t y) { uint64_t bitindex; bitindex = (ht2_function4a >> (y & 0xf)) & 1; @@ -207,7 +210,7 @@ uint64_t f20(uint64_t y) { /* packstate packs the relevant bits from LFSR state into 20 bits for pre-shifted lfsr */ -uint64_t packstate(uint64_t s) { +static uint64_t packstate(uint64_t s) { uint64_t packed; packed = pickbits2_2(s, 2, 5); @@ -221,7 +224,7 @@ uint64_t packstate(uint64_t s) { /* create_guess_table mallocs the tables */ -void create_guess_table() { +static void create_guess_table(void) { guesses = (struct guess *)malloc(sizeof(struct guess) * maxtablesize); if (!guesses) { printf("cannot malloc guess table\n"); @@ -232,7 +235,7 @@ void create_guess_table() { /* init the guess table by reading in the encrypted nR,aR values and * setting the first 2^16 key guesses */ -void init_guess_table(char *filename, char *uidstr) { +static void init_guess_table(char *filename, char *uidstr) { unsigned int i, j; FILE *fp; char *buf = NULL; @@ -313,7 +316,7 @@ void init_guess_table(char *filename, char *uidstr) { /* bit_score calculates the ratio of partial states that could generate * the resulting bit b to all possible states * size is the number of confirmed bits in the state */ -double bit_score(uint64_t s, uint64_t size, uint64_t b) { +static double bit_score(uint64_t s, uint64_t size, uint64_t b) { uint64_t packed; uint64_t chopped; unsigned int n; @@ -396,7 +399,7 @@ double bit_score(uint64_t s, uint64_t size, uint64_t b) { * bit_scores together until no bits remain. bit_scores are * multiplied by the number of relevant bits in the scored state * to give weight to more complete states. */ -double score(uint64_t s, unsigned int size, uint64_t ks, unsigned int kssize) { +static double score(uint64_t s, unsigned int size, uint64_t ks, unsigned int kssize) { double sc, sc2; if ((size == 1) || (kssize == 1)) { @@ -427,7 +430,7 @@ double score(uint64_t s, unsigned int size, uint64_t ks, unsigned int kssize) { /* score_traces runs score for each encrypted nonce */ -void score_traces(struct guess *g, unsigned int size) { +static void score_traces(struct guess *g, unsigned int size) { uint64_t lfsr; unsigned int i; double sc; @@ -481,7 +484,7 @@ void score_all_traces(unsigned int size) */ /* score_some_traces runs score_traces for every key guess in a section of the table */ -void *score_some_traces(void *data) { +static void *score_some_traces(void *data) { unsigned int i; struct thread_data *tdata = (struct thread_data *)data; @@ -494,7 +497,7 @@ void *score_some_traces(void *data) { /* score_all_traces runs score_traces for every key guess in the table */ -void score_all_traces(unsigned int size) { +static void score_all_traces(unsigned int size) { pthread_t threads[NUM_THREADS]; void *status; struct thread_data tdata[NUM_THREADS]; @@ -535,7 +538,7 @@ void score_all_traces(unsigned int size) { /* cmp_guess is the comparison function for qsorting the guess table */ -int cmp_guess(const void *a, const void *b) { +static int cmp_guess(const void *a, const void *b) { struct guess *a1 = (struct guess *)a; struct guess *b1 = (struct guess *)b; @@ -552,7 +555,7 @@ int cmp_guess(const void *a, const void *b) { /* expand all guesses in first half of (sorted) table by * copying them into the second half and extending the copied * ones with an extra 1, leaving the first half with an extra 0 */ -void expand_guesses(unsigned int halfsize, unsigned int size) { +static void expand_guesses(unsigned int halfsize, unsigned int size) { unsigned int i, j; for (i = 0; i < halfsize; i++) { @@ -567,7 +570,7 @@ void expand_guesses(unsigned int halfsize, unsigned int size) { /* checks if the supplied test key is still in the table, which * is useful when testing different scoring methods */ -void check_supplied_testkey(unsigned int size) { +static void check_supplied_testkey(unsigned int size) { uint64_t partkey; unsigned int i; @@ -586,7 +589,7 @@ void check_supplied_testkey(unsigned int size) { /* execute_round scores the guesses, sorts them and expands the good half */ -void execute_round(unsigned int size) { +static void execute_round(unsigned int size) { unsigned int halfsize; // score all the current guesses @@ -614,7 +617,7 @@ void execute_round(unsigned int size) { /* crack is the main cracking algo; it executes the rounds */ -void crack() { +static void crack(void) { unsigned int i; uint64_t revkey; uint64_t foundkey; @@ -630,9 +633,9 @@ void crack() { } } - /* test function to make sure I know how the LFSR works */ -void testkey(uint64_t key) { +/* +static void testkey(uint64_t key) { uint64_t i; uint64_t b0to31 = 0; uint64_t ks = 0; @@ -689,10 +692,11 @@ void testkey(uint64_t key) { printbin2(lfsr, 48); printf("\n\n"); } - +*/ /* test function to generate test data */ -void gen_bitstreams_testks(struct guess *g, uint64_t key) { +/* +static void gen_bitstreams_testks(struct guess *g, uint64_t key) { unsigned int i, j; uint64_t nRxorkey, lfsr, ks; @@ -730,10 +734,11 @@ void gen_bitstreams_testks(struct guess *g, uint64_t key) { } } } - +*/ /* test function */ -void test() { +/* +static void test(void) { uint64_t lfsr; uint64_t packed; @@ -751,10 +756,10 @@ void test() { printf("test done\n"); } - +*/ /* check_key tests the potential key against an encrypted nonce, ks pair */ -int check_key(uint64_t key, uint64_t enc_nR, uint64_t ks) { +static int check_key(uint64_t key, uint64_t enc_nR, uint64_t ks) { Hitag_State hstate; uint64_t bits; int i; diff --git a/tools/hitag2crack/crack5/Makefile b/tools/hitag2crack/crack5/Makefile index 9d19b63ee..8fc46e838 100644 --- a/tools/hitag2crack/crack5/Makefile +++ b/tools/hitag2crack/crack5/Makefile @@ -1,17 +1,20 @@ -CFLAGS?=-Wall -Werror -O3 -LIBS=-lpthread -VPATH=../common -INC=-I ../common +MYSRCPATHS = ../common +MYSRCS = ht2crackutils.c hitagcrypto.c +MYINCLUDES =-I ../common +MYCFLAGS = +MYDEFS = +MYLDLIBS = -lpthread -all: ht2crack5.c ht2crackutils.o hitagcrypto.o - $(CC) $(CFLAGS) $(INC) -O3 $< -o ht2crack5 ht2crackutils.o hitagcrypto.o $(LIBS) +BINS = ht2crack5 +INSTALLTOOLS = $(BINS) -hitagcrypto.o: hitagcrypto.c hitagcrypto.h - $(CC) $(CFLAGS) -c $< +include ../../../Makefile.host -ht2crackutils.o: ht2crackutils.c ht2crackutils.h - $(CC) $(CFLAGS) -c $< +# checking platform can be done only after Makefile.host +ifneq (,$(findstring MINGW,$(platform))) + # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) + # and setting _ISOC99_SOURCE sets internally __USE_MINGW_ANSI_STDIO=1 + CFLAGS += -D_ISOC99_SOURCE +endif -clean: - rm -f *.o ht2crack5 -fresh: clean all +ht2crack5 : $(OBJDIR)/ht2crack5.o $(MYOBJS) diff --git a/tools/hitag2crack/crack5/ht2crack5.c b/tools/hitag2crack/crack5/ht2crack5.c index d07d03b64..a92afc854 100644 --- a/tools/hitag2crack/crack5/ht2crack5.c +++ b/tools/hitag2crack/crack5/ht2crack5.c @@ -55,7 +55,7 @@ bitslice_t bs_zeroes, bs_ones; #define get_bit(n, word) ((word >> (n)) & 1) #define get_vector_bit(slice, value) get_bit(slice&0x3f, value.bytes64[slice>>6]) -const uint64_t expand(uint64_t mask, uint64_t value) { +static uint64_t expand(uint64_t mask, uint64_t value) { uint64_t fill = 0; for (uint64_t bit_index = 0; bit_index < 48; bit_index++) { if (mask & 1) { @@ -67,7 +67,7 @@ const uint64_t expand(uint64_t mask, uint64_t value) { return fill; } -void bitslice(const uint64_t value, bitslice_t *restrict bitsliced_value, const size_t bit_len, bool reverse) { +static void bitslice(const uint64_t value, bitslice_t *restrict bitsliced_value, const size_t bit_len, bool reverse) { size_t bit_idx; for (bit_idx = 0; bit_idx < bit_len; bit_idx++) { bool bit; @@ -84,7 +84,7 @@ void bitslice(const uint64_t value, bitslice_t *restrict bitsliced_value, const } } -const uint64_t unbitslice(const bitslice_t *restrict b, const uint8_t s, const uint8_t n) { +static uint64_t unbitslice(const bitslice_t *restrict b, const uint8_t s, const uint8_t n) { uint64_t result = 0; for (uint8_t i = 0; i < n; ++i) { result <<= 1; @@ -118,7 +118,7 @@ bitslice_t initial_bitslices[48]; size_t filter_pos[20] = {4, 7, 9, 13, 16, 18, 22, 24, 27, 30, 32, 35, 45, 47 }; size_t thread_count = 8; uint64_t layer_0_found; -void *find_state(void *thread_d); +static void *find_state(void *thread_d); static void try_state(uint64_t s); int main(int argc, char *argv[]) { @@ -201,7 +201,7 @@ int main(int argc, char *argv[]) { exit(1); } -void *find_state(void *thread_d) { +static void *find_state(void *thread_d) { uint64_t thread = (uint64_t)thread_d; for (uint64_t index = thread; index < layer_0_found; index += thread_count) { diff --git a/tools/hitag2crack/crack5gpu/Makefile b/tools/hitag2crack/crack5gpu/Makefile index b88fa00e8..57e44641f 100644 --- a/tools/hitag2crack/crack5gpu/Makefile +++ b/tools/hitag2crack/crack5gpu/Makefile @@ -1,23 +1,27 @@ -CFLAGS?=-Wall -#INCLUDE=-I/usr/local/cuda-7.5/include -INCLUDE=-I/opt/nvidia/cuda/include -#Linux -#LIBS=-L/usr/local/cuda-7.5/lib64 -lOpenCL -LIBS=-L/opt/nvidia/cuda/lib64 -lOpenCL -#Mac -#LIBS=-framework OpenCL -VPATH=../common -INC=-I ../common +MYSRCPATHS = ../common +MYSRCS = ht2crackutils.c hitagcrypto.c +MYCFLAGS = +MYDEFS = +ifeq ($(platform),Darwin) + MYLDLIBS ?= -framework OpenCL +else + #MYINCLUDES ?=-I/usr/local/cuda-7.5/include + #MYINCLUDES ?=-I/opt/nvidia/cuda/include + #MYLDLIBS ?= -L/usr/local/cuda-7.5/lib64 -lOpenCL + MYLDLIBS ?= -L/opt/nvidia/cuda/lib64 -lOpenCL +endif +MYINCLUDES +=-I ../common -all: ht2crack5.c ht2crackutils.o hitagcrypto.o - $(CC) $(CFLAGS) $(INC) -o ht2crack5gpu $< ht2crackutils.o hitagcrypto.o $(LIBS) -lpthread +BINS = ht2crack5gpu +INSTALLTOOLS = $(BINS) -hitagcrypto.o: hitagcrypto.c hitagcrypto.h - $(CC) $(CFLAGS) $(INCLUDE) -c $< +include ../../../Makefile.host -ht2crackutils.o: ht2crackutils.c ht2crackutils.h - $(CC) $(CFLAGS) $(INCLUDE) -c $< +# checking platform can be done only after Makefile.host +ifneq (,$(findstring MINGW,$(platform))) + # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) + # and setting _ISOC99_SOURCE sets internally __USE_MINGW_ANSI_STDIO=1 + CFLAGS += -D_ISOC99_SOURCE +endif -clean: - rm -f *.o ht2crack5gpu -fresh: clean all +ht2crack5gpu : $(OBJDIR)/ht2crack5gpu.o $(MYOBJS) diff --git a/tools/hitag2crack/crack5gpu/ht2crack5.c b/tools/hitag2crack/crack5gpu/ht2crack5gpu.c similarity index 98% rename from tools/hitag2crack/crack5gpu/ht2crack5.c rename to tools/hitag2crack/crack5gpu/ht2crack5gpu.c index cfacecc98..8cb720540 100644 --- a/tools/hitag2crack/crack5gpu/ht2crack5.c +++ b/tools/hitag2crack/crack5gpu/ht2crack5gpu.c @@ -65,7 +65,7 @@ bitslice_t bs_zeroes, bs_ones; state[-2+i+42].value ^ state[-2+i+43].value ^ state[-2+i+46].value ^ state[-2+i+47].value); #define get_bit(n, word) ((word >> (n)) & 1) -const uint64_t expand(uint64_t mask, uint64_t value) { +static uint64_t expand(uint64_t mask, uint64_t value) { uint64_t fill = 0; for (uint64_t bit_index = 0; bit_index < 48; bit_index++) { if (mask & 1) { @@ -77,7 +77,7 @@ const uint64_t expand(uint64_t mask, uint64_t value) { return fill; } -void bitslice(const uint64_t value, bitslice_t *restrict bitsliced_value, const size_t bit_len, bool reverse) { +static void bitslice(const uint64_t value, bitslice_t *restrict bitsliced_value, const size_t bit_len, bool reverse) { size_t bit_idx; for (bit_idx = 0; bit_idx < bit_len; bit_idx++) { bool bit; @@ -123,7 +123,7 @@ struct context { }; -void runKernel(struct context *ctx, uint32_t cand_base, uint64_t *matches, uint32_t *matches_found) { +static void runKernel(struct context *ctx, uint32_t cand_base, uint64_t *matches, uint32_t *matches_found) { int err; size_t global[2]; diff --git a/tools/hitag2crack/hitag2_gen_nRaR.py b/tools/hitag2crack/hitag2_gen_nRaR.py new file mode 100755 index 000000000..14f48a26d --- /dev/null +++ b/tools/hitag2crack/hitag2_gen_nRaR.py @@ -0,0 +1,118 @@ +#!/usr/bin/env python3 + +""" +HITAG2 cipher +Implemented by Aram Verstegen +""" +import random + +def i4(x, a, b, c, d): + return (((x >> a) & 1)*8)+((x >> b) & 1)*4+((x >> c) & 1)*2+((x >> d) & 1) + + +def f20_4(state): + return ((0x3c65 >> i4(state,34,43,44,46)) & 1) + +def f20_3(state): + return (( 0xee5 >> i4(state,28,29,31,33)) & 1) + +def f20_2(state): + return (( 0xee5 >> i4(state,17,21,23,26)) & 1) + +def f20_1(state): + return (( 0xee5 >> i4(state, 8,12,14,15)) & 1) + +def f20_0(state): + return ((0x3c65 >> i4(state, 2, 3, 5, 6)) & 1) + +def f20_last(s0,s1,s2,s3,s4): + return (0xdd3929b >> ((s0 * 16) + + (s1 * 8) + + (s2 * 4) + + (s3 * 2) + + (s4 * 1))) & 1 + +def f20(state): + return f20_last(f20_0(state), f20_1(state), f20_2(state), f20_3(state), f20_4(state)) + +def lfsr_bs(state, i): + return (state[i+ 0] ^ state[i+ 2] ^ state[i+ 3] ^ state[i+ 6] ^ + state[i+ 7] ^ state[i+ 8] ^ state[i+16] ^ state[i+22] ^ + state[i+23] ^ state[i+26] ^ state[i+30] ^ state[i+41] ^ + state[i+42] ^ state[i+43] ^ state[i+46] ^ state[i+47]) + +def f20a_bs(a,b,c,d): + return (~(((a|b)&c)^(a|d)^b)) # 6 ops +def f20b_bs(a,b,c,d): + return (~(((d|c)&(a^b))^(d|a|b))) # 7 ops +def f20c_bs(a,b,c,d,e): + return (~((((((c^e)|d)&a)^b)&(c^b))^(((d^e)|a)&((d^b)|c)))) # 13 ops + +def filter_bs(state, i): + return (f20c_bs( f20a_bs(state[i+ 2],state[i+ 3],state[i+ 5],state[i+ 6]), + f20b_bs(state[i+ 8],state[i+12],state[i+14],state[i+15]), + f20b_bs(state[i+17],state[i+21],state[i+23],state[i+26]), + f20b_bs(state[i+28],state[i+29],state[i+31],state[i+33]), + f20a_bs(state[i+34],state[i+43],state[i+44],state[i+46]))) + +def unbitslice(s, n): + return int(''.join(map(str,map(int,map(bool,s[n:n+48])))[::-1]),2) + +def hitag2_init(key, uid, nonce): + state = 0 + for i in range(32, 48): + state = (state << 1) | ((key >> i) & 1) + for i in range(0, 32): + state = (state << 1) | ((uid >> i) & 1) + #print '%012x' % state + #print '%012x' % (int("{0:048b}".format(state)[::-1],2)) + for i in range(0, 32): + nonce_bit = (f20(state) ^ ((nonce >> (31-i)) & 1)) + #print nonce_bit + state = (state >> 1) | (((nonce_bit ^ (key >> (31-i))) & 1) << 47) + #print '%012x' % state + #print '%012x' % (int("{0:048b}".format(state)[::-1],2)) + return state + +def lfsr_feedback(state): + return (((state >> 0) ^ (state >> 2) ^ (state >> 3) + ^ (state >> 6) ^ (state >> 7) ^ (state >> 8) + ^ (state >> 16) ^ (state >> 22) ^ (state >> 23) + ^ (state >> 26) ^ (state >> 30) ^ (state >> 41) + ^ (state >> 42) ^ (state >> 43) ^ (state >> 46) + ^ (state >> 47)) & 1) +def lfsr(state): + return (state >> 1) + (lfsr_feedback(state) << 47) + +def lfsr_feedback_inv(state): + return (((state >> 47) ^ (state >> 1) ^ (state >> 2) + ^ (state >> 5) ^ (state >> 6) ^ (state >> 7) + ^ (state >> 15) ^ (state >> 21) ^ (state >> 22) + ^ (state >> 25) ^ (state >> 29) ^ (state >> 40) + ^ (state >> 41) ^ (state >> 42) ^ (state >> 45) + ^ (state >> 46)) & 1) + +def lfsr_inv(state): + return ((state << 1) + (lfsr_feedback_inv(state))) & ((1<<48)-1) + +def hitag2(state, length=48): + c = 0 + for i in range(0, length): + c = (c << 1) | f20(state) + #print '%012x' % state + #print '%012x' % (int("{0:048b}".format(state)[::-1],2)) + state = lfsr(state) + return c + +if __name__ == "__main__": + import sys + if len(sys.argv) == 4: + key = int(sys.argv[1], 16) + uid = int(sys.argv[2], 16) + n = int(sys.argv[3]) + for i in range(n): + nonce = random.randrange(2**32) + state = hitag2_init(key, uid, nonce) + print('%08X %08X' % (nonce, hitag2(state, 32)^0xffffffff)) + else: + print("Usage: python %s " % sys.argv[0]) diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 8aaf82d58..89850e8bd 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -4,10 +4,12 @@ PM3PATH="$(dirname "$0")/.." cd "$PM3PATH" || exit 1 SLOWTESTS=false +GPUTESTS=false TESTALL=true TESTMFKEY=false TESTNONCE2KEY=false TESTMFNONCEBRUTE=false +TESTHITAG2CRACK=false TESTFPGACOMPRESS=false TESTBOOTROM=false TESTARMSRC=false @@ -32,6 +34,10 @@ Usage: $0 [--long] [--clientbin /path/to/proxmark3] [mfkey|nonce2key|mf_nonce_br SLOWTESTS=true shift ;; + --gpu) + GPUTESTS=true + shift + ;; --clientbin) if [ -n "$2" ] && [ ${2:0:1} != "-" ]; then CLIENTBIN=$2 @@ -61,6 +67,11 @@ Usage: $0 [--long] [--clientbin /path/to/proxmark3] [mfkey|nonce2key|mf_nonce_br TESTFPGACOMPRESS=true shift ;; + hitag2crack) + TESTALL=false + TESTHITAG2CRACK=true + shift + ;; bootrom) TESTALL=false TESTBOOTROM=true @@ -122,24 +133,45 @@ function CheckFileExist() { return 1 } -# title, command line, check result, repeat several times if failed, ignore if fail +# [slow] [gpu] [retry] [ignore] <command_line> <check_result_regex> +# slow: test takes more than ~5s +# gpu: test requires GPU presence +# retry: test repeated up to 3 times in case of failure +# ignore: test failure is not fatal function CheckExecute() { if [ "$1" == "slow" ]; then - SLOWTEST=true + local SLOWTEST=true shift else - SLOWTEST=false + local SLOWTEST=false fi - if [ "$4" ]; then + if [ "$1" == "gpu" ]; then + local GPUTEST=true + shift + else + local GPUTEST=false + fi + if [ "$1" == "retry" ]; then local RETRY="1 2 3 e" + shift else local RETRY="e" fi + if [ "$1" == "ignore" ]; then + local IGNOREFAILURE=true + shift + else + local IGNOREFAILURE=false + fi if $SLOWTEST && ! $SLOWTESTS; then echo -e "$1 ${C_YELLOW}[SKIPPED]${C_NC} (slow)\n" return 0 fi + if $GPUTEST && ! $GPUTESTS; then + echo -e "$1 ${C_YELLOW}[SKIPPED]${C_NC} (gpu)\n" + return 0 + fi for I in $RETRY do @@ -151,7 +183,7 @@ function CheckExecute() { if [ ! $I == "e" ]; then echo "retry $I"; fi done - if [ "$5" ]; then + if $IGNOREFAILURE; then echo -e "$1 ${C_YELLOW}[Ignored]${C_NC}" return 0 fi @@ -227,6 +259,54 @@ while true; do if ! CheckFileExist "mf_nonce_brute exists" "$MFNONCEBRUTEBIN"; then break; fi if ! CheckExecute slow "mf_nonce_brute test" "$MFNONCEBRUTEBIN 9c599b32 5a920d85 1011 98d76b77 d6c6e870 0000 ca7e0b63 0111 3e709c8a" "Key.*: \[ffffffffffff\]"; then break; fi fi + # hitag2crack not yet part of "all" + # if $TESTALL || $TESTHITAG2CRACK; then + if $TESTHITAG2CRACK; then + echo -e "\n${C_BLUE}Testing ht2crack2:${C_NC} ${HT2CRACK2PATH:=./tools/hitag2crack/crack2/}" + if ! CheckFileExist "ht2crack2buildtable exists" "$HT2CRACK2PATH/ht2crack2buildtable"; then break; fi + if ! CheckFileExist "ht2crack2gentest exists" "$HT2CRACK2PATH/ht2crack2gentest"; then break; fi + if ! CheckFileExist "ht2crack2search exists" "$HT2CRACK2PATH/ht2crack2search"; then break; fi + # 1.5Tb tables are supposed to be absent, so it's just a fast check without real cracking + if ! CheckExecute "ht2crack2 quick test" "cd $HT2CRACK2PATH; ./ht2crack2gentest 1 && ./runalltests.sh; rm keystream*" "searching on bit"; then break; fi + + echo -e "\n${C_BLUE}Testing ht2crack3:${C_NC} ${HT2CRACK3PATH:=./tools/hitag2crack/crack3/}" + if ! CheckFileExist "ht2crack3 exists" "$HT2CRACK3PATH/ht2crack3"; then break; fi + if ! CheckFileExist "ht2crack3test exists" "$HT2CRACK3PATH/ht2crack3test"; then break; fi + HT2CRACK3UID=AABBCCDD + # Test fast only for HT2CRACK3KEY in begin of keyspace! + HT2CRACK3KEY=000102030405 + HT2CRACK3N=32 + HT2CRACK3NRAR=hitag2_${HT2CRACK3UID}_nrar_${HT2CRACK3N}emul.txt + if ! CheckExecute "ht2crack3 gen testfile" "cd $HT2CRACK3PATH; python3 ../hitag2_gen_nRaR.py $HT2CRACK3KEY $HT2CRACK3UID $HT2CRACK3N > $HT2CRACK3NRAR && echo SUCCESS" "SUCCESS"; then break; fi + if ! CheckExecute "ht2crack3test test" "cd $HT2CRACK3PATH; ./ht2crack3test $HT2CRACK3NRAR $HT2CRACK3KEY $HT2CRACK3UID|grep -v SUCCESS||echo SUCCESS" "SUCCESS"; then break; fi + if ! CheckExecute "ht2crack3 test" "cd $HT2CRACK3PATH; ./ht2crack3 $HT2CRACK3UID $HT2CRACK3NRAR |egrep -v '(trying|partial)'" "key = $HT2CRACK3KEY"; then break; fi + if ! CheckExecute "ht2crack3 rm testfile" "cd $HT2CRACK3PATH; rm $HT2CRACK3NRAR && echo SUCCESS" "SUCCESS"; then break; fi + + echo -e "\n${C_BLUE}Testing ht2crack4:${C_NC} ${HT2CRACK4PATH:=./tools/hitag2crack/crack4/}" + if ! CheckFileExist "ht2crack4 exists" "$HT2CRACK4PATH/ht2crack4"; then break; fi + HT2CRACK4UID=12345678 + HT2CRACK4KEY=AABBCCDDEEFF + HT2CRACK4N=32 + HT2CRACK4NRAR=hitag2_${HT2CRACK4UID}_nrar_${HT2CRACK4N}emul.txt + # The success is probabilistic: a fresh random nRaR file is required for each run + # Order of magnitude to crack it: ~15s -> tagged as "slow" + if ! CheckExecute slow retry ignore "ht2crack4 test" "cd $HT2CRACK4PATH; \ + python3 ../hitag2_gen_nRaR.py $HT2CRACK4KEY $HT2CRACK4UID $HT2CRACK4N > $HT2CRACK4NRAR; \ + ./ht2crack4 -u $HT2CRACK4UID -n $HT2CRACK4NRAR -N 16 -t 500000 2>&1; \ + rm $HT2CRACK4NRAR" "key = $HT2CRACK4KEY"; then break; fi + + echo -e "\n${C_BLUE}Testing ht2crack5:${C_NC} ${HT2CRACK5PATH:=./tools/hitag2crack/crack5/}" + if ! CheckFileExist "ht2crack5 exists" "$HT2CRACK5PATH/ht2crack5"; then break; fi + + echo -e "\n${C_BLUE}Testing ht2crack5gpu:${C_NC} ${HT2CRACK5GPUPATH:=./tools/hitag2crack/crack5gpu/}" + if ! CheckFileExist "ht2crack5gpu exists" "$HT2CRACK5GPUPATH/ht2crack5gpu"; then break; fi + HT2CRACK5GPUUID=12345678 + HT2CRACK5GPUKEY=AABBCCDDEEFF + # The speed depends on the nRaR so we'll use two pairs known to work fast + HT2CRACK5GPUNRAR="B438220C 944FFD74 942C59E3 3D450B34" + # Order of magnitude to crack it: ~15s -> tagged as "slow" + if ! CheckExecute slow gpu "ht2crack5gpu test" "cd $HT2CRACK5GPUPATH; ./ht2crack5gpu $HT2CRACK5GPUUID $HT2CRACK5GPUNRAR" "Key: $HT2CRACK5GPUKEY"; then break; fi + fi if $TESTALL || $TESTCLIENT; then echo -e "\n${C_BLUE}Testing client:${C_NC} ${CLIENTBIN:=./client/proxmark3}" if ! CheckFileExist "proxmark3 exists" "$CLIENTBIN"; then break; fi @@ -261,7 +341,7 @@ while true; do echo -e "\n${C_BLUE}Testing HF:${C_NC}" if ! CheckExecute "hf mf offline text" "$CLIENTBIN -c 'hf mf'" "at_enc"; then break; fi - if ! CheckExecute slow "hf mf hardnested long test" "$CLIENTBIN -c 'hf mf hardnested t 1 000000000000'" "found:" "repeat" "ignore"; then break; fi + if ! CheckExecute slow retry ignore "hf mf hardnested long test" "$CLIENTBIN -c 'hf mf hardnested t 1 000000000000'" "found:"; then break; fi if ! CheckExecute slow "hf iclass long test" "$CLIENTBIN -c 'hf iclass loclass t l'" "verified ok"; then break; fi if ! CheckExecute slow "emv long test" "$CLIENTBIN -c 'emv test -l'" "Test(s) \[ OK"; then break; fi if ! $SLOWTESTS; then From 077b156b2f7614a8b2a0020126ee797b8cb8e350 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sat, 23 May 2020 17:07:14 +0200 Subject: [PATCH 127/527] add ht2crack5 test --- tools/pm3_tests.sh | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 89850e8bd..71a754080 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -297,6 +297,12 @@ while true; do echo -e "\n${C_BLUE}Testing ht2crack5:${C_NC} ${HT2CRACK5PATH:=./tools/hitag2crack/crack5/}" if ! CheckFileExist "ht2crack5 exists" "$HT2CRACK5PATH/ht2crack5"; then break; fi + HT2CRACK5UID=12345678 + HT2CRACK5KEY=AABBCCDDEEFF + # The speed depends on the nRaR so we'll use two pairs known to work fast + HT2CRACK5NRAR="6F901EE0 3AC77442 E5F99B3C 055B29BE" + # Order of magnitude to crack it: ~45s -> tagged as "slow" + if ! CheckExecute slow "ht2crack5 test" "cd $HT2CRACK5PATH; ./ht2crack5 $HT2CRACK5UID $HT2CRACK5NRAR" "Key: $HT2CRACK5KEY"; then break; fi echo -e "\n${C_BLUE}Testing ht2crack5gpu:${C_NC} ${HT2CRACK5GPUPATH:=./tools/hitag2crack/crack5gpu/}" if ! CheckFileExist "ht2crack5gpu exists" "$HT2CRACK5GPUPATH/ht2crack5gpu"; then break; fi @@ -305,7 +311,7 @@ while true; do # The speed depends on the nRaR so we'll use two pairs known to work fast HT2CRACK5GPUNRAR="B438220C 944FFD74 942C59E3 3D450B34" # Order of magnitude to crack it: ~15s -> tagged as "slow" - if ! CheckExecute slow gpu "ht2crack5gpu test" "cd $HT2CRACK5GPUPATH; ./ht2crack5gpu $HT2CRACK5GPUUID $HT2CRACK5GPUNRAR" "Key: $HT2CRACK5GPUKEY"; then break; fi + if ! CheckExecute slow gpu "ht2crack5gpu test" "cd $HT2CRACK5GPUPATH; ./ht2crack5gpu $HT2CRACK5GPUUID $HT2CRACK5GPUNRAR" "Key: $HT2CRACK5GPUKEY"; then break; fi fi if $TESTALL || $TESTCLIENT; then echo -e "\n${C_BLUE}Testing client:${C_NC} ${CLIENTBIN:=./client/proxmark3}" From 4df2727ab768906745bbd6f2df3d47a4445e5e5f Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sat, 23 May 2020 23:47:33 +0200 Subject: [PATCH 128/527] ht2crack5: faster test --- tools/pm3_tests.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 71a754080..ee554b01b 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -300,8 +300,8 @@ while true; do HT2CRACK5UID=12345678 HT2CRACK5KEY=AABBCCDDEEFF # The speed depends on the nRaR so we'll use two pairs known to work fast - HT2CRACK5NRAR="6F901EE0 3AC77442 E5F99B3C 055B29BE" - # Order of magnitude to crack it: ~45s -> tagged as "slow" + HT2CRACK5NRAR="71DA20AA 7EFDF3FA 2A4265F9 59653B07" + # Order of magnitude to crack it: ~12s on 1 core, ~3s on 4 cores -> tagged as "slow" if ! CheckExecute slow "ht2crack5 test" "cd $HT2CRACK5PATH; ./ht2crack5 $HT2CRACK5UID $HT2CRACK5NRAR" "Key: $HT2CRACK5KEY"; then break; fi echo -e "\n${C_BLUE}Testing ht2crack5gpu:${C_NC} ${HT2CRACK5GPUPATH:=./tools/hitag2crack/crack5gpu/}" From 6e5de1090a0ec8fa4321dec55f0477bb5d657dc7 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sat, 23 May 2020 23:59:10 +0200 Subject: [PATCH 129/527] pm3_tests: cosmetic --- tools/pm3_tests.sh | 23 ++++++++++++++--------- 1 file changed, 14 insertions(+), 9 deletions(-) diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index ee554b01b..d5b88f446 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -23,8 +23,9 @@ while (( "$#" )); do case "$1" in -h|--help) echo """ -Usage: $0 [--long] [--clientbin /path/to/proxmark3] [mfkey|nonce2key|mf_nonce_brute|fpga_compress|bootrom|armsrc|client|recovery|common] +Usage: $0 [--long] [--gpu] [--clientbin /path/to/proxmark3] [mfkey|nonce2key|mf_nonce_brute|fpga_compress|bootrom|armsrc|client|recovery|common] --long: Enable slow tests + --gpu: Enable tests requiring GPU --clientbin ...: Specify path to proxmark3 binary to test If no target given, all targets will be tested """ @@ -119,17 +120,19 @@ C_NC='\033[0m' # No Color # title, file name or file wildcard to check function CheckFileExist() { + printf "%-40s" "$1 " + if [ -f "$2" ]; then - echo -e "$1 ${C_GREEN}[OK]${C_NC}" + echo -e "${C_GREEN}[OK]${C_NC}" return 0 fi if ls "$2" 1> /dev/null 2>&1; then - echo -e "$1 ${C_GREEN}[OK]${C_NC}" + echo -e "${C_GREEN}[OK]${C_NC}" return 0 fi - echo -e "$1 ${C_RED}[Fail]${C_NC}" + echo -e "${C_RED}[FAIL]${C_NC}" return 1 } @@ -164,12 +167,14 @@ function CheckExecute() { local IGNOREFAILURE=false fi + printf "%-40s" "$1 " + if $SLOWTEST && ! $SLOWTESTS; then - echo -e "$1 ${C_YELLOW}[SKIPPED]${C_NC} (slow)\n" + echo -e "${C_YELLOW}[SKIPPED]${C_NC} (slow)\n" return 0 fi if $GPUTEST && ! $GPUTESTS; then - echo -e "$1 ${C_YELLOW}[SKIPPED]${C_NC} (gpu)\n" + echo -e "${C_YELLOW}[SKIPPED]${C_NC} (gpu)\n" return 0 fi @@ -177,18 +182,18 @@ function CheckExecute() { do RES=$(eval "$2") if echo "$RES" | grep -q "$3"; then - echo -e "$1 ${C_GREEN}[OK]${C_NC}" + echo -e "${C_GREEN}[OK]${C_NC}" return 0 fi if [ ! $I == "e" ]; then echo "retry $I"; fi done if $IGNOREFAILURE; then - echo -e "$1 ${C_YELLOW}[Ignored]${C_NC}" + echo -e "${C_YELLOW}[IGNORED]${C_NC}" return 0 fi - echo -e "$1 ${C_RED}[Fail]${C_NC}" + echo -e "${C_RED}[FAIL]${C_NC}" echo -e "Execution trace:\n$RES" return 1 } From f54f8103ace2c37b21657fd149e40ff625f6813e Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sun, 24 May 2020 01:03:23 +0200 Subject: [PATCH 130/527] fix pathsep in subdirs --- include/common.h | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/include/common.h b/include/common.h index d52e40f10..a66ddabd5 100644 --- a/include/common.h +++ b/include/common.h @@ -31,8 +31,8 @@ #define RESOURCES_SUBDIR "resources" PATHSEP #define TRACES_SUBDIR "traces" PATHSEP #define FIRMWARES_SUBDIR "firmware" PATHSEP -#define BOOTROM_SUBDIR "bootrom/obj" PATHSEP -#define FULLIMAGE_SUBDIR "armsrc/obj" PATHSEP +#define BOOTROM_SUBDIR "bootrom" PATHSEP "obj" PATHSEP +#define FULLIMAGE_SUBDIR "armsrc" PATHSEP "obj" PATHSEP #define PACKED __attribute__((packed)) From a6f76444de2ef26c5380fb1a347e2da6aac83790 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sun, 24 May 2020 01:20:43 +0200 Subject: [PATCH 131/527] Put logfiles in subdir --- client/src/preferences.c | 2 +- client/src/proxmark3.c | 2 +- client/src/ui.c | 46 ++++++++++++++++++++++++++++++++++++---- client/src/ui.h | 2 +- include/common.h | 1 + 5 files changed, 46 insertions(+), 7 deletions(-) diff --git a/client/src/preferences.c b/client/src/preferences.c index 4c8fefb77..89d9cc188 100644 --- a/client/src/preferences.c +++ b/client/src/preferences.c @@ -32,7 +32,7 @@ static int setCmdHelp(const char *Cmd); static char *prefGetFilename(void) { char *path; - if (searchHomeFilePath(&path, preferencesFilename, false) == PM3_SUCCESS) + if (searchHomeFilePath(&path, NULL, preferencesFilename, false) == PM3_SUCCESS) return path; else return strdup(preferencesFilename); diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 427619e75..a461d4c95 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -206,7 +206,7 @@ main_loop(char *script_cmds_file, char *script_cmd, bool stayInCommandLoop) { } char *my_history_path = NULL; - if (searchHomeFilePath(&my_history_path, PROXHISTORY, true) != PM3_SUCCESS) { + if (searchHomeFilePath(&my_history_path, NULL, PROXHISTORY, true) != PM3_SUCCESS) { PrintAndLogEx(ERR, "No history will be recorded"); my_history_path = NULL; } else { diff --git a/client/src/ui.c b/client/src/ui.c index 9414fbb34..798ed165a 100644 --- a/client/src/ui.c +++ b/client/src/ui.c @@ -54,7 +54,7 @@ pthread_mutex_t print_lock = PTHREAD_MUTEX_INITIALIZER; static void fPrintAndLog(FILE *stream, const char *fmt, ...); // needed by flasher, so let's put it here instead of fileutils.c -int searchHomeFilePath(char **foundpath, const char *filename, bool create_home) { +int searchHomeFilePath(char **foundpath, const char *subdir, const char *filename, bool create_home) { if (foundpath == NULL) return PM3_EINVARG; const char *user_path = get_my_user_directory(); @@ -62,7 +62,8 @@ int searchHomeFilePath(char **foundpath, const char *filename, bool create_home) fprintf(stderr, "Could not retrieve $HOME from the environment\n"); return PM3_EFILE; } - char *path = calloc(strlen(user_path) + strlen(PM3_USER_DIRECTORY) + 1, sizeof(char)); + size_t pathlen = strlen(user_path) + strlen(PM3_USER_DIRECTORY) + 1; + char *path = calloc(pathlen, sizeof(char)); if (path == NULL) return PM3_EMALLOC; strcpy(path, user_path); @@ -96,11 +97,48 @@ int searchHomeFilePath(char **foundpath, const char *filename, bool create_home) return PM3_EFILE; } } + if (subdir != NULL) { + pathlen += strlen(subdir); + path = realloc(path, pathlen * sizeof(char)); + if (path == NULL) + return PM3_EMALLOC; + strcat(path, subdir); + +#ifdef _WIN32 + // Mingw _stat fails if path ends with /, so let's use a stripped path + if (path[strlen(path) - 1] == '/') { + path[strlen(path) - 1] = '\0'; + result = _stat(path, &st); + path[strlen(path)] = '/'; + } else { + result = _stat(path, &st); + } +#else + result = stat(path, &st); +#endif + if ((result != 0) && create_home) { + +#ifdef _WIN32 + if (_mkdir(path)) +#else + if (mkdir(path, 0700)) +#endif + { + fprintf(stderr, "Could not create user directory %s\n", path); + free(path); + return PM3_EFILE; + } + } + } + if (filename == NULL) { *foundpath = path; return PM3_SUCCESS; } - path = realloc(path, (strlen(user_path) + strlen(PM3_USER_DIRECTORY) + strlen(filename) + 1) * sizeof(char)); + pathlen += strlen(filename); + path = realloc(path, pathlen * sizeof(char)); + if (path == NULL) + return PM3_EMALLOC; strcat(path, filename); *foundpath = path; return PM3_SUCCESS; @@ -266,7 +304,7 @@ static void fPrintAndLog(FILE *stream, const char *fmt, ...) { time_t now = time(NULL); timenow = gmtime(&now); strftime(filename, sizeof(filename), PROXLOG, timenow); - if (searchHomeFilePath(&my_logfile_path, filename, true) != PM3_SUCCESS) { + if (searchHomeFilePath(&my_logfile_path, LOGS_SUBDIR, filename, true) != PM3_SUCCESS) { fprintf(stderr, "[-] Logging disabled!\n\n"); my_logfile_path = NULL; logging = 0; diff --git a/client/src/ui.h b/client/src/ui.h index 20b5a3619..60064c0aa 100644 --- a/client/src/ui.h +++ b/client/src/ui.h @@ -59,7 +59,7 @@ void memcpy_filter_ansi(void *dest, const void *src, size_t n, bool filter); void memcpy_filter_rlmarkers(void *dest, const void *src, size_t n); void memcpy_filter_emoji(void *dest, const void *src, size_t n, emojiMode_t mode); -int searchHomeFilePath(char **foundpath, const char *filename, bool create_home); +int searchHomeFilePath(char **foundpath, const char *subdir, const char *filename, bool create_home); extern pthread_mutex_t print_lock; diff --git a/include/common.h b/include/common.h index a66ddabd5..4d6efcce2 100644 --- a/include/common.h +++ b/include/common.h @@ -30,6 +30,7 @@ #define LUA_SCRIPTS_SUBDIR "luascripts" PATHSEP #define RESOURCES_SUBDIR "resources" PATHSEP #define TRACES_SUBDIR "traces" PATHSEP +#define LOGS_SUBDIR "logs" PATHSEP #define FIRMWARES_SUBDIR "firmware" PATHSEP #define BOOTROM_SUBDIR "bootrom" PATHSEP "obj" PATHSEP #define FULLIMAGE_SUBDIR "armsrc" PATHSEP "obj" PATHSEP From e7585b59445d780c312abe3a85c778baba458483 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 24 May 2020 11:17:11 +0200 Subject: [PATCH 132/527] fix #747, 'hf mfu eload' - now detects and converts between plain/old/new mfu binary format --- CHANGELOG.md | 3 + client/src/cmdhfmf.c | 29 +++++++- client/src/cmdhfmfu.c | 9 ++- client/src/cmdhfmfu.h | 5 +- client/src/fileutils.c | 161 +++++++++++++++++++++++++++++++++++------ client/src/fileutils.h | 20 ++++- 6 files changed, 188 insertions(+), 39 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 90c6dccb3..8edd91099 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac ## [unreleased][unreleased] ## [ice coffee.4.][2020-05-21] + - Fix `hf mfu eload` - now detects and converts between plain/old/new mfu binary format (@iceman1001) + - Change log files moved to subfolders (@doegex) + - Change lib lua unbundled. (@doegex) - Updated documentation (@doegox, @iceman1001) - Change `pm3test.sh` - more regression tests to (@doegox, @iceman1001) - Change `hf 15 dump` - now supports basic json format (@iceman1001) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 08a4f1781..4940e96a2 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3688,10 +3688,15 @@ int CmdHF14AMfELoad(const char *Cmd) { return usage_hf14_eload(); uint8_t *data = calloc(4096, sizeof(uint8_t)); + if (data == NULL) { + PrintAndLogEx(WARNING, "Fail, cannot allocate memory"); + return PM3_EMALLOC; + } + size_t datalen = 0; //int res = loadFile(filename, ".bin", data, maxdatalen, &datalen); int res = loadFileEML(filename, data, &datalen); - if (res) { + if (res != PM3_SUCCESS) { free(data); return PM3_EFILE; } @@ -3703,15 +3708,31 @@ int CmdHF14AMfELoad(const char *Cmd) { return PM3_ESOFT; } - // convert old mfu format to new + // convert plain or old mfu format to new format if (blockWidth == 4) { - res = convertOldMfuDump(&data, &datalen); - if (res) { + + res = convert_mfu_dump_format(&data, &datalen, true); + if (res != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Failed convert on load to new Ultralight/NTAG format"); free(data); return res; } + mfu_dump_t *mfu_dump = (mfu_dump_t *)data; + + PrintAndLogEx(INFO, _CYAN_("MFU dump file information")); + PrintAndLogEx(INFO, " version %s", sprint_hex(mfu_dump->version, sizeof(mfu_dump->version))); + PrintAndLogEx(INFO, " tb 0 %s", sprint_hex(mfu_dump->tbo, sizeof(mfu_dump->tbo))); + PrintAndLogEx(INFO, " tb 1 %s", sprint_hex(mfu_dump->tbo1, sizeof(mfu_dump->tbo1))); + for(uint8_t m = 0; m < 3; m++) { + PrintAndLogEx(INFO, " counter %d %s - tearing 0x%02x", m + 1, sprint_hex(mfu_dump->counter_tearing[m], 3), mfu_dump->counter_tearing[m][3]); + } + PrintAndLogEx(INFO, " signature %s", sprint_hex(mfu_dump->signature, sizeof(mfu_dump->signature))); + PrintAndLogEx(INFO, " data %s... (only first 8 bytes showing)", sprint_hex(mfu_dump->data, 8)); + PrintAndLogEx(INFO, " max data page %d, data len %d bytes", mfu_dump->pages, (mfu_dump->pages + 1) * 4); + PrintAndLogEx(INFO, " file header size %d", MFU_DUMP_PREFIX_LENGTH); + PrintAndLogEx(INFO, "----------------------------------------------"); + // update expected blocks to match converted data. if (numBlocks != datalen / 4) { numBlocks = datalen / 4; diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 9dc739417..75afa7641 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -2039,6 +2039,7 @@ static int CmdHF14AMfURestore(const char *Cmd) { bool write_special = false; bool write_extra = false; bool read_key = false; + bool verbose = false; size_t filelen = 0; FILE *f; @@ -2087,6 +2088,9 @@ static int CmdHF14AMfURestore(const char *Cmd) { cmdp++; read_key = true; break; + case 'v': + cmdp++; + verbose = true; default: PrintAndLogEx(WARNING, "Unknown parameter: " _RED_("'%c'"), param_getchar(Cmd, cmdp)); errors = true; @@ -2128,10 +2132,9 @@ static int CmdHF14AMfURestore(const char *Cmd) { return 1; } - // convert old format to new format, if need - int res = convertOldMfuDump(&dump, &bytes_read); + int res = convert_mfu_dump_format(&dump, &bytes_read, verbose); if (res != PM3_SUCCESS) { - PrintAndLogEx(WARNING, "Failed convert on load to new Ultralight/NTAG format"); + PrintAndLogEx(FAILED, "Failed convert on load to new Ultralight/NTAG format"); free(dump); return res; } diff --git a/client/src/cmdhfmfu.h b/client/src/cmdhfmfu.h index 0f87cb3f6..eb81c8dea 100644 --- a/client/src/cmdhfmfu.h +++ b/client/src/cmdhfmfu.h @@ -18,19 +18,16 @@ typedef struct { uint8_t signature[32]; //uint8_t counter[3]; uint8_t data[1024]; -} old_mfu_dump_t; - +} PACKED old_mfu_dump_t; uint32_t GetHF14AMfU_Type(void); int ul_print_type(uint32_t tagtype, uint8_t spaces); - void printMFUdump(mfu_dump_t *card); void printMFUdumpEx(mfu_dump_t *card, uint16_t pages, uint8_t startpage); int CmdHFMFUltra(const char *Cmd); uint16_t ul_ev1_packgen_VCNEW(uint8_t *uid, uint32_t pwd); - uint32_t ul_ev1_otpgenA(uint8_t *uid); typedef enum TAGTYPE_UL { diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 4e5573747..a650e3929 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -313,6 +313,9 @@ out: } int saveFileJSON(const char *preferredName, JSONFileType ftype, uint8_t *data, size_t datalen) { + return saveFileJSONex(preferredName, ftype, data, datalen, true); +} +int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, size_t datalen, bool verbose) { if (data == NULL) return PM3_EINVARG; @@ -559,7 +562,9 @@ int saveFileJSON(const char *preferredName, JSONFileType ftype, uint8_t *data, s retval = 200; goto out; } - PrintAndLogEx(SUCCESS, "saved to json file " _YELLOW_("%s"), fileName); + if (verbose) + PrintAndLogEx(SUCCESS, "saved to json file " _YELLOW_("%s"), fileName); + json_decref(root); out: @@ -678,7 +683,6 @@ int createMfcKeyDump(const char *preferredName, uint8_t sectorsCnt, sector_t *e_ return PM3_SUCCESS; } - int loadFile(const char *preferredName, const char *suffix, void *data, size_t maxdatalen, size_t *datalen) { if (data == NULL) return 1; @@ -820,6 +824,7 @@ int loadFileEML(const char *preferredName, void *data, size_t *datalen) { if (fgets(line, sizeof(line), f) == NULL) { if (feof(f)) break; + fclose(f); PrintAndLogEx(FAILED, "File reading error."); retval = PM3_EFILE; @@ -829,10 +834,14 @@ int loadFileEML(const char *preferredName, void *data, size_t *datalen) { if (line[0] == '#') continue; + strcleanrn(line, sizeof(line)); + int res = param_gethex_to_eol(line, 0, buf, sizeof(buf), &hexlen); - if (res == 0 || res == 1) { + if (res == 0) { memcpy(udata + counter, buf, hexlen); counter += hexlen; + } else { + retval = PM3_ESOFT; } } fclose(f); @@ -847,6 +856,9 @@ out: } int loadFileJSON(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen) { + return loadFileJSONex(preferredName, data, maxdatalen, datalen, true); +} +int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen, bool verbose) { if (data == NULL) return PM3_EINVARG; char *fileName = filenamemcopy(preferredName, ".json"); @@ -986,7 +998,9 @@ int loadFileJSON(const char *preferredName, void *data, size_t maxdatalen, size_ } *datalen = sptr; } - PrintAndLogEx(SUCCESS, "loaded from JSON file " _YELLOW_("%s"), fileName); + if (verbose) + PrintAndLogEx(SUCCESS, "loaded from JSON file " _YELLOW_("%s"), fileName); + if (!strcmp(ctype, "settings")) { preferences_load_callback(root); } @@ -1185,38 +1199,137 @@ out: return retval; } -int convertOldMfuDump(uint8_t **dump, size_t *dumplen) { - if (!dump || !dumplen || *dumplen < OLD_MFU_DUMP_PREFIX_LENGTH) - return 1; - // try to check new file format - mfu_dump_t *mfu_dump = (mfu_dump_t *) *dump; - if ((*dumplen - MFU_DUMP_PREFIX_LENGTH) / 4 - 1 == mfu_dump->pages) - return 0; +mfu_df_e detect_mfu_dump_format(uint8_t **dump, size_t *dumplen, bool verbose) { + + mfu_df_e retval = MFU_DF_UNKNOWN; + uint8_t bcc0, bcc1; + uint8_t ct = 0x88; + + // detect new + mfu_dump_t *new = (mfu_dump_t *)*dump; + bcc0 = ct ^ new->data[0] ^ new->data[1] ^ new->data[2]; + bcc1 = new->data[4] ^ new->data[5] ^ new->data[6] ^ new->data[7]; + if (bcc0 == new->data[3] && bcc1 == new->data[8]) { + retval = MFU_DF_NEWBIN; + } + + // detect old + if (retval == MFU_DF_UNKNOWN) { + old_mfu_dump_t *old = (old_mfu_dump_t *)*dump; + bcc0 = ct ^ old->data[0] ^ old->data[1] ^ old->data[2]; + bcc1 = old->data[4] ^ old->data[5] ^ old->data[6] ^ old->data[7]; + if (bcc0 == old->data[3] && bcc1 == old->data[8]) { + retval = MFU_DF_OLDBIN; + } + } + + // detect plain + if (retval == MFU_DF_UNKNOWN) { + uint8_t *plain = *dump; + bcc0 = ct ^ plain[0] ^ plain[1] ^ plain[2]; + bcc1 = plain[4] ^ plain[5] ^ plain[6] ^ plain[7]; + if ((bcc0 == plain[3]) && (bcc1 == plain[8])) { + retval = MFU_DF_PLAINBIN; + } + } + + if (verbose) { + switch(retval) { + case MFU_DF_NEWBIN: + PrintAndLogEx(INFO, "detected " _GREEN_("new") " mfu dump format"); + break; + case MFU_DF_OLDBIN: + PrintAndLogEx(INFO, "detected " _GREEN_("old") " mfu dump format"); + break; + case MFU_DF_PLAINBIN: + PrintAndLogEx(INFO, "detected " _GREEN_("plain") " mfu dump format"); + break; + case MFU_DF_UNKNOWN: + PrintAndLogEx(WARNING, "failed to detected mfu dump format"); + break; + } + } + return retval; +} + +static int convert_plain_mfu_dump(uint8_t **dump, size_t *dumplen, bool verbose) { + + mfu_dump_t *mfu = (mfu_dump_t *) calloc( sizeof(mfu_dump_t), sizeof(uint8_t)); + if (mfu == NULL) { + return PM3_EMALLOC; + } + + memcpy(mfu->data, *dump, *dumplen); + + mfu->pages = *dumplen / 4 - 1; + + if (verbose) { + PrintAndLogEx(SUCCESS, "plain mfu dump format was converted to " _GREEN_("%d") " blocks", mfu->pages + 1); + } + + *dump = (uint8_t *)mfu; + *dumplen += MFU_DUMP_PREFIX_LENGTH ; + return PM3_SUCCESS; +} + +static int convert_old_mfu_dump(uint8_t **dump, size_t *dumplen, bool verbose) { + // convert old format - old_mfu_dump_t *old_mfu_dump = (old_mfu_dump_t *) *dump; + old_mfu_dump_t *old_mfu_dump = (old_mfu_dump_t *)*dump; size_t old_data_len = *dumplen - OLD_MFU_DUMP_PREFIX_LENGTH; size_t new_dump_len = old_data_len + MFU_DUMP_PREFIX_LENGTH; + + mfu_dump_t *mfu_dump = (mfu_dump_t *) calloc( sizeof(mfu_dump_t), sizeof(uint8_t)); + if (mfu_dump == NULL) { + return PM3_EMALLOC; + } - mfu_dump = (mfu_dump_t *) calloc(new_dump_len, sizeof(uint8_t)); - - memcpy(mfu_dump->version, old_mfu_dump->version, 8); - memcpy(mfu_dump->tbo, old_mfu_dump->tbo, 2); + memcpy(mfu_dump->version, old_mfu_dump->version, sizeof(mfu_dump->version)); + memcpy(mfu_dump->tbo, old_mfu_dump->tbo, sizeof(mfu_dump->tbo)); + memcpy(mfu_dump->signature, old_mfu_dump->signature, sizeof(mfu_dump->signature)); + mfu_dump->tbo1[0] = old_mfu_dump->tbo1[0]; - memcpy(mfu_dump->signature, old_mfu_dump->signature, 32); - for (int i = 0; i < 3; i++) - mfu_dump->counter_tearing[i][3] = old_mfu_dump->tearing[i]; - memcpy(mfu_dump->data, old_mfu_dump->data, old_data_len); + for (int i = 0; i < 3; i++) { + mfu_dump->counter_tearing[i][3] = old_mfu_dump->tearing[i]; + } + + memcpy(mfu_dump->data, old_mfu_dump->data, sizeof(mfu_dump->data)); + mfu_dump->pages = old_data_len / 4 - 1; - // free old buffer, return new buffer - *dumplen = new_dump_len; + + if (verbose) { + PrintAndLogEx(SUCCESS, "old mfu dump format was converted to " _GREEN_("%d") " blocks", mfu_dump->pages + 1); + } + free(*dump); - *dump = (uint8_t *) mfu_dump; - PrintAndLogEx(SUCCESS, "old mfu dump format, was converted on load to " _GREEN_("%d") " pages", mfu_dump->pages + 1); + *dump = (uint8_t *)mfu_dump; + *dumplen = new_dump_len; return PM3_SUCCESS; } +int convert_mfu_dump_format(uint8_t **dump, size_t *dumplen, bool verbose) { + + if (!dump || !dumplen || *dumplen < OLD_MFU_DUMP_PREFIX_LENGTH) { + return PM3_EINVARG; + } + + mfu_df_e res = detect_mfu_dump_format(dump, dumplen, verbose); + + switch(res) { + case MFU_DF_NEWBIN: + return PM3_SUCCESS; + case MFU_DF_OLDBIN: + return convert_old_mfu_dump(dump, dumplen, verbose); + case MFU_DF_PLAINBIN: + return convert_plain_mfu_dump(dump, dumplen, verbose); + case MFU_DF_UNKNOWN: + default: + return PM3_ESOFT; + } +} + static int filelist(const char *path, const char *ext, bool last, bool tentative) { struct dirent **namelist; int n; diff --git a/client/src/fileutils.h b/client/src/fileutils.h index 603144e67..cf00efb03 100644 --- a/client/src/fileutils.h +++ b/client/src/fileutils.h @@ -116,6 +116,7 @@ int saveFileEML(const char *preferredName, uint8_t *data, size_t datalen, size_t * @return 0 for ok, 1 for failz */ int saveFileJSON(const char *preferredName, JSONFileType ftype, uint8_t *data, size_t datalen); +int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, size_t datalen, bool verbose); /** STUB * @brief Utility function to save WAVE data to a file. This method takes a preferred name, but if that @@ -198,6 +199,8 @@ int loadFileEML(const char *preferredName, void *data, size_t *datalen); * @return 0 for ok, 1 for failz */ int loadFileJSON(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen); +int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen, bool verbose); + /** * @brief Utility function to load data from a DICTIONARY textfile. This method takes a preferred name. @@ -242,14 +245,23 @@ int loadFileDICTIONARYEx(const char *preferredName, void *data, size_t maxdatale */ int loadFileDICTIONARY_safe(const char *preferredName, void **pdata, uint8_t keylen, uint32_t *keycnt); + +typedef enum { + MFU_DF_UNKNOWN, + MFU_DF_PLAINBIN, + MFU_DF_OLDBIN, + MFU_DF_NEWBIN +} mfu_df_e; /** - * @brief Utility function to check and convert old mfu dump format to new - * + * @brief Utility function to check and convert plain mfu dump format to new mfu binary format. + * plain dumps doesn't have any extra data, like version, signature etc. * @param dump pointer to loaded dump to check and convert format * @param dumplen the number of bytes loaded dump and converted - * @return 0 for ok, 1 for fails + * @param verbose - extra debug output + * @return PM3_SUCCESS for ok, PM3_ESOFT for fails */ -int convertOldMfuDump(uint8_t **dump, size_t *dumplen); +int convert_mfu_dump_format(uint8_t **dump, size_t *dumplen, bool verbose); +mfu_df_e detect_mfu_dump_format(uint8_t **dump, size_t *dumplen, bool verbose); int searchAndList(const char *pm3dir, const char *ext); int searchFile(char **foundpath, const char *pm3dir, const char *searchname, const char *suffix, bool silent); From bde4198184d369a68bb88db281bc5430e9e9f1bb Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 24 May 2020 12:51:51 +0200 Subject: [PATCH 133/527] fix hf mfu --- client/src/cmdhfmfu.c | 69 ++++++++++++++++++++++++++++++++++++------- 1 file changed, 59 insertions(+), 10 deletions(-) diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 75afa7641..b9dc8d3a2 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -541,7 +541,7 @@ static int ul_print_default(uint8_t *data) { sprint_bin(data + 10, 2) ); - PrintAndLogEx(SUCCESS, "OneTimePad: %s - %s\n", + PrintAndLogEx(SUCCESS, "OneTimePad: %s - %s", sprint_hex(data + 12, 4), sprint_bin(data + 12, 4) ); @@ -748,11 +748,13 @@ static int ulev1_print_configuration(uint32_t tagtype, uint8_t *data, uint8_t st PrintAndLogEx(INFO, "--- " _CYAN_("Tag Configuration")); bool strg_mod_en = (data[0] & 2); + uint8_t authlim = (data[4] & 0x07); - bool nfc_cnf_en = (data[4] & 0x08); - bool nfc_cnf_prot_pwd = (data[4] & 0x10); - bool cfglck = (data[4] & 0x40); - bool prot = (data[4] & 0x80); + bool nfc_cnf_prot_pwd = ((data[4] & 0x08) == 0x08); + bool nfc_cnf_en = ((data[4] & 0x10) == 0x10); + bool cfglck = ((data[4] & 0x40) == 0x40); + bool prot = ((data[4] & 0x80) == 0x80); + uint8_t vctid = data[5]; PrintAndLogEx(INFO, " cfg0 [%u/0x%02X]: %s", startPage, startPage, sprint_hex(data, 4)); @@ -838,7 +840,7 @@ static int ulev1_print_configuration(uint32_t tagtype, uint8_t *data, uint8_t st PrintAndLogEx(INFO, " - Max number of password attempts is " _YELLOW_("%d"), authlim); PrintAndLogEx(INFO, " - NFC counter %s", (nfc_cnf_en) ? "enabled" : "disabled"); - PrintAndLogEx(INFO, " - NFC counter %s", (nfc_cnf_prot_pwd) ? "not protected" : "password protection enabled"); + PrintAndLogEx(INFO, " - NFC counter %s", (nfc_cnf_prot_pwd) ? "password protection enabled" : "not protected"); PrintAndLogEx(INFO, " - user configuration %s", cfglck ? "permanently locked" : "writeable"); PrintAndLogEx(INFO, " - %s access is protected with password", prot ? "read and write" : "write"); @@ -850,6 +852,7 @@ static int ulev1_print_configuration(uint32_t tagtype, uint8_t *data, uint8_t st } static int ulev1_print_counters(void) { + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Counters")); uint8_t tear[1] = {0}; uint8_t counter[3] = {0, 0, 0}; @@ -859,7 +862,7 @@ static int ulev1_print_counters(void) { len = ulev1_readCounter(i, counter, sizeof(counter)); if (len == 3) { PrintAndLogEx(INFO, " [%0d]: %s", i, sprint_hex(counter, 3)); - PrintAndLogEx(SUCCESS, " - %02X tearing %s", tear[0], (tear[0] == 0xBD) ? "Ok" : "failure"); + PrintAndLogEx(SUCCESS, " - %02X tearing (" _GREEN_("%s") ")", tear[0], (tear[0] == 0xBD) ? "ok" : "failure"); } } return len; @@ -971,6 +974,20 @@ static int ulev1_print_version(uint8_t *data) { return PM3_SUCCESS; } +static int ntag_print_counter(void) { + // NTAG has one counter/tearing. At address 0x02. + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "--- " _CYAN_("Tag Counter")); + uint8_t tear[1] = {0}; + uint8_t counter[3] = {0, 0, 0}; + uint16_t len; + len = ulev1_readTearing(0x02, tear, sizeof(tear)); + len = ulev1_readCounter(0x02, counter, sizeof(counter)); + PrintAndLogEx(INFO, " [02]: %s", sprint_hex(counter, 3)); + PrintAndLogEx(SUCCESS, " - %02X tearing (" _GREEN_("%s")")", tear[0], (tear[0] == 0xBD) ? "ok" : "failure"); + return len; +} + /* static int ulc_magic_test(){ // Magic Ultralight test @@ -1271,6 +1288,12 @@ static int CmdHF14AMfUInfo(const char *Cmd) { } // NTAG counters? + if ((tagtype & (NTAG_213 | NTAG_213_F | NTAG_215 | NTAG_216))) { + if (ntag_print_counter()) { + // failed - re-select + if (ul_auth_select(&card, tagtype, hasAuthKey, authkeyptr, pack, sizeof(pack)) == PM3_ESOFT) return PM3_ESOFT; + } + } // Read signature if ((tagtype & (UL_EV1_48 | UL_EV1_128 | UL_EV1 | UL_NANO_40 | NTAG_213 | NTAG_213_F | NTAG_215 | NTAG_216 | NTAG_216_F | NTAG_I2C_1K | NTAG_I2C_2K | NTAG_I2C_1K_PLUS | NTAG_I2C_2K_PLUS))) { @@ -1942,16 +1965,42 @@ static int CmdHF14AMfUDump(const char *Cmd) { if (hasAuthKey) { uint8_t dummy_pack[] = {0, 0}; ul_auth_select(&card, tagtype, hasAuthKey, authKeyPtr, dummy_pack, sizeof(dummy_pack)); - } else + } else { ul_select(&card); + } ulev1_getVersion(get_version, sizeof(get_version)); - for (uint8_t n = 0; n < 3; ++n) { - ulev1_readTearing(n, &get_counter_tearing[n][3], 1); + + // ULEV-1 has 3 counters + uint8_t n = 0; + + // NTAG has 1 counter, at 0x02 + if ((tagtype & (NTAG_213 | NTAG_213_F | NTAG_215 | NTAG_216))) { + n = 2; + } + + // NTAG can have nfc counter pwd protection enabled + for (; n < 3; n++) { + + if (hasAuthKey) { + uint8_t dummy_pack[] = {0, 0}; + ul_auth_select(&card, tagtype, hasAuthKey, authKeyPtr, dummy_pack, sizeof(dummy_pack)); + } else { + ul_select(&card); + } ulev1_readCounter(n, &get_counter_tearing[n][0], 3); + + if (hasAuthKey) { + uint8_t dummy_pack[] = {0, 0}; + ul_auth_select(&card, tagtype, hasAuthKey, authKeyPtr, dummy_pack, sizeof(dummy_pack)); + } else { + ul_select(&card); + } + ulev1_readTearing(n, &get_counter_tearing[n][3], 1); } DropField(); + if (hasAuthKey) { uint8_t dummy_pack[] = {0, 0}; ul_auth_select(&card, tagtype, hasAuthKey, authKeyPtr, dummy_pack, sizeof(dummy_pack)); From 8a72370f509d5338d7b7192491b1bf32a3bcc2e7 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 24 May 2020 12:52:02 +0200 Subject: [PATCH 134/527] add document --- doc/mfu_binary_format_notes.md | 101 +++++++++++++++++++++++++++++++++ 1 file changed, 101 insertions(+) create mode 100644 doc/mfu_binary_format_notes.md diff --git a/doc/mfu_binary_format_notes.md b/doc/mfu_binary_format_notes.md new file mode 100644 index 000000000..dfde0da7a --- /dev/null +++ b/doc/mfu_binary_format_notes.md @@ -0,0 +1,101 @@ +# Notes on MFU binary formats + + - new mfu format + - old mfu format + - plain mfu format + - future mfu format + +## New mfu format +The new mfu binary format was created to compensate for different manufactures tag functions. +Like UL-Ev1 has three counter and tearing bytes, while NTAG only has one counter and tearing byte. +PACK was removed from header, since its just normally part of the tag memory, unreadable, but when +a proxmark3 dumps a tag and we have pwd/pack, we add those to their normal location in memory. +This makes memory not a exact memory dump from a tag, but a "what it should have looked like" if we could read all memory + +``` +// New Ultralight/NTAG dump file format +// Length must be aligned to 4 bytes (UL/NTAG page) +#define MFU_DUMP_PREFIX_LENGTH 56 + +typedef struct { + uint8_t version[8]; + uint8_t tbo[2]; + uint8_t tbo1[1]; + uint8_t pages; // max page number in dump + uint8_t signature[32]; + uint8_t counter_tearing[3][4]; // 3 bytes counter, 1 byte tearing flag + uint8_t data[1024]; +} PACKED mfu_dump_t; +``` + +## Old mfu format +The old binary format saved the extra data on tag in order for the Proxmark3 to able to simulate a real tag. + +``` +// Old Ultralight/NTAG dump file format +#define OLD_MFU_DUMP_PREFIX_LENGTH 48 + +typedef struct { + uint8_t version[8]; + uint8_t tbo[2]; + uint8_t tearing[3]; + uint8_t pack[2]; + uint8_t tbo1[1]; + uint8_t signature[32]; + uint8_t data[1024]; +} old_mfu_dump_t; +``` + +## Plain mfu format +The first binary format for MFU was just a memory dump from the tag block 0 to end. +No extra data was saved. +``` + uint8_t data[1024]; +``` + +## future mfu format +For developers of apps and other tools, like libnfc, we don't recommend using binary formats. +We decided to adopt a JSON based format, which is much more flexible to changes of new tag functionality. + +Example +``` +{ + "Created": "proxmark3", + "FileType": "mfu", + "Card": { + "UID": "04F654CAFC388", + "Version": "0004030101000B0", + "TBO_0": "000", + "TBO_1": "0", + "Signature": "BC9BFD4B550C16B2B5A5ABA10B644A027B4CB03DDB46F94D992DC0FB02E0C3F", + "Counter0": "00000", + "Tearing0": "BD", + "Counter1": "00000", + "Tearing1": "BD", + "Counter2": "00000", + "Tearing2": "BD" + }, + "blocks": { + "0": "04F6542", + "1": "CAFC388", + "2": "8E48000", + "3": "E110120", + "4": "0103A00", + "5": "340300F", + "6": "0000000", + "7": "0000000", + "8": "0000000", + "9": "0000000", + "10": "0000000", + "11": "0000000", + "12": "1122334", + "13": "0000000", + "14": "0000000", + "15": "0000000", + "16": "000000F", + "17": "0005000", + "18": "0000000", + "19": "0000000" + } +} +``` From 8aebb8ef8ebf1f6301d8992c9054c87995cf4a01 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 24 May 2020 12:52:11 +0200 Subject: [PATCH 135/527] textual --- CHANGELOG.md | 3 +++ 1 file changed, 3 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8edd91099..8fd7150b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,9 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac ## [unreleased][unreleased] ## [ice coffee.4.][2020-05-21] + - Add doc/mfu_binary_format_notes.md (@iceman1001) + - Fix `hf mfu dump` - now reads Ulev1 3counter vs NTAG 1 counters (@iceman1001) + - Fix `hf mfu info` - now print correct cfg1 - nfc protection (@iceman1001) - Fix `hf mfu eload` - now detects and converts between plain/old/new mfu binary format (@iceman1001) - Change log files moved to subfolders (@doegex) - Change lib lua unbundled. (@doegex) From acce16f6487abebb8adc96f1fab135eed743cd84 Mon Sep 17 00:00:00 2001 From: Iceman <iceman@iuse.se> Date: Sun, 24 May 2020 12:56:08 +0200 Subject: [PATCH 136/527] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 8222032f2..ba17074d3 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ |[Notes on UART](/doc/uart_notes.md)|[Notes on Termux / Android](/doc/termux_notes.md)|[Notes on paths](/doc/path_notes.md)| |[Notes on frame format](/doc/new_frame_format.md)|[Notes on tracelog / wireshark](/doc/trace_notes.md)|[Notes on EMV](/doc/emv_notes.md)| |[Notes on external flash](/doc/ext_flash_notes.md)|[Notes on loclass](/doc/loclass_notes.md)|[Notes on Coverity Scan Config & Run](/doc/md/Development/Coverity-Scan-Config-%26-Run.md)| -|[Notes on file formats used with Proxmark3](/doc/extensions_notes.md)||| +|[Notes on file formats used with Proxmark3](/doc/extensions_notes.md)|[Notes on MFU binary format](/doc/mfu_binary_format_notes.md)|| |[Developing standalone mode](/armsrc/Standalone/readme.md)|[Wiki about standalone mode](https://github.com/RfidResearchGroup/proxmark3/wiki/Standalone-mode)|| From 243771fa3d51d0e7fa728d654e5b3fe19d59f0f6 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sun, 24 May 2020 16:07:17 +0200 Subject: [PATCH 137/527] changelog --- CHANGELOG.md | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8fd7150b2..be3956739 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,14 +3,17 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - -## [ice coffee.4.][2020-05-21] - Add doc/mfu_binary_format_notes.md (@iceman1001) - Fix `hf mfu dump` - now reads Ulev1 3counter vs NTAG 1 counters (@iceman1001) - Fix `hf mfu info` - now print correct cfg1 - nfc protection (@iceman1001) - Fix `hf mfu eload` - now detects and converts between plain/old/new mfu binary format (@iceman1001) - - Change log files moved to subfolders (@doegex) - - Change lib lua unbundled. (@doegex) + - Change, hitag2crack now integrated into main Makefile, tests added (@doegox) + - Add `make check` mechanics (@doegox) + - Change, log files moved to subfolders (@doegox) + - Change, use system Lua library if available (@doegox) + - Fix release version information (@doegox) + +## [ice coffee.4.9237][2020-05-21] - Updated documentation (@doegox, @iceman1001) - Change `pm3test.sh` - more regression tests to (@doegox, @iceman1001) - Change `hf 15 dump` - now supports basic json format (@iceman1001) From 0653feaec85d8256ebd8543ce0c499742caa871d Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sun, 24 May 2020 20:35:09 +0200 Subject: [PATCH 138/527] Use system whereami if available --- client/Makefile | 15 ++++++++++++++- doc/md/Development/Maintainers.md | 1 + 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/client/Makefile b/client/Makefile index 363ff0089..f919a9388 100644 --- a/client/Makefile +++ b/client/Makefile @@ -89,6 +89,14 @@ ifneq ($(SKIPLUASYSTEM),1) endif endif +ifneq ($(SKIPWHEREAMISYSTEM),1) + ifneq (,$(wildcard /usr/include/whereami.h)) + WAILIBINC = + WAILIB = -lwhereami + WAISYSTEM = 1 + endif +endif + ifneq ($(SKIPBT),1) BTLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs bluez 2>/dev/null) endif @@ -188,7 +196,10 @@ else $(info native BT support: Bluez not found, disabled) endif ifeq ($(LUASYSTEM),1) -$(info system LUA: Lua5.2 found) +$(info Lua library: system library found) +endif +ifeq ($(WAISYSTEM),1) +$(info Whereami library: system library found) endif $(info compiler version: $(shell $(CC) --version|head -n 1)) $(info ===================================================================) @@ -443,8 +454,10 @@ cliparser: $(Q)$(MAKE) --no-print-directory -C $(CLIPARSERLIBPATH) all whereami: +ifneq ($(WAISYSTEM),1) $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C $(WAILIBPATH) all +endif # common libraries: mbedtls: diff --git a/doc/md/Development/Maintainers.md b/doc/md/Development/Maintainers.md index 09cddede7..5d1400a7f 100644 --- a/doc/md/Development/Maintainers.md +++ b/doc/md/Development/Maintainers.md @@ -62,6 +62,7 @@ It's also possible to skip parts even if libraries are present in the compilatio * `make client SKIPQT=1` to skip GUI even if Qt is present * `make client SKIPBT=1` to skip native Bluetooth support even if libbluetooth is present * `make client SKIPLUASYSTEM=1` to skip system Lua lib even if liblua5.2 is present, use embedded Lua lib instead +* `make client SKIPWHEREAMISYSTEM=1` to skip system Whereami lib even if libwhereami is present, use embedded whereami lib instead If you're cross-compiling, these ones might be useful: From 9d97962759e089e46c3087e92ed3a4e594ea81d3 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sun, 24 May 2020 21:51:39 +0200 Subject: [PATCH 139/527] use system jansson if available --- CHANGELOG.md | 2 + client/CMakeLists.txt | 1 + client/Makefile | 24 +++- client/android/CMakeLists.txt | 1 + client/deps/jansson.cmake | 1 - client/deps/jansson/Makefile | 1 - client/deps/jansson/jansson.h | 8 -- client/src/emv/emvjson.h | 1 + .../jansson/path.c => src/jansson_path.c} | 105 +++++++++++++++++- client/src/jansson_path.h | 30 +++++ 10 files changed, 158 insertions(+), 16 deletions(-) rename client/{deps/jansson/path.c => src/jansson_path.c} (71%) create mode 100644 client/src/jansson_path.h diff --git a/CHANGELOG.md b/CHANGELOG.md index be3956739..d9d62254f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -11,6 +11,8 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Add `make check` mechanics (@doegox) - Change, log files moved to subfolders (@doegox) - Change, use system Lua library if available (@doegox) + - Change, use system Jansson library if available (@doegox) + - Change, use system Whereami library if available (@doegox) - Fix release version information (@doegox) ## [ice coffee.4.9237][2020-05-21] diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index a56ea5a9a..64cfca623 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -165,6 +165,7 @@ set (TARGET_SOURCES src/fileutils.c src/flash.c src/graph.c + src/jansson_path.c src/preferences.c src/pm3_binlib.c src/pm3_bitlib.c diff --git a/client/Makefile b/client/Makefile index f919a9388..d3c969b9c 100644 --- a/client/Makefile +++ b/client/Makefile @@ -82,17 +82,27 @@ ZLIB = $(OBJDIR)/libz.a ifneq ($(SKIPLUASYSTEM),1) LUAINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags lua5.2 2>/dev/null) LUALDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs lua5.2 2>/dev/null) - ifneq ($(LUAINCLUDES),) + ifneq ($(LUALDLIBS),) LUALIB = $(LUALDLIBS) LUALIBINC = $(LUAINCLUDES) LUASYSTEM = 1 endif endif +ifneq ($(SKIPJANSSONSYSTEM),1) + JANSSONINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags jansson 2>/dev/null) + JANSSONLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs jansson 2>/dev/null) + ifneq ($(JANSSONLDLIBS),) + JANSSONLIB = $(JANSSONLDLIBS) + JANSSONLIBINC = $(JANSSONINCLUDES) + JANSSONSYSTEM = 1 + endif +endif + ifneq ($(SKIPWHEREAMISYSTEM),1) ifneq (,$(wildcard /usr/include/whereami.h)) - WAILIBINC = WAILIB = -lwhereami + WAILIBINC = WAISYSTEM = 1 endif endif @@ -195,6 +205,9 @@ $(info native BT support: Bluez found, enabled) else $(info native BT support: Bluez not found, disabled) endif +ifeq ($(JANSSONSYSTEM),1) +$(info Jansson library: system library found) +endif ifeq ($(LUASYSTEM),1) $(info Lua library: system library found) endif @@ -339,9 +352,8 @@ CMDSRCS = crapto1/crapto1.c \ wiegand_formats.c \ wiegand_formatutils.c \ cardhelper.c \ - preferences.c - - + preferences.c \ + jansson_path.c COREOBJS = $(CORESRCS:%.c=$(OBJDIR)/%.o) CMDOBJS = $(CMDSRCS:%.c=$(OBJDIR)/%.o) @@ -430,8 +442,10 @@ ifneq ($(LUASYSTEM),1) endif jansson: +ifneq ($(JANSSONSYSTEM),1) $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C $(JANSSONLIBPATH) all +endif tinycbor: $(info [*] MAKE $@) diff --git a/client/android/CMakeLists.txt b/client/android/CMakeLists.txt index 5b417ff63..ddaae2cd2 100644 --- a/client/android/CMakeLists.txt +++ b/client/android/CMakeLists.txt @@ -145,6 +145,7 @@ add_library(pm3rrg_rdv4 SHARED ${PM3_ROOT}/client/src/cmdlfpcf7931.c ${PM3_ROOT}/client/src/cmdhfmfhard.c ${PM3_ROOT}/client/src/cmdusart.c + ${PM3_ROOT}/client/src/jansson_path.c # android resources jni_tools.c pm3_main.c diff --git a/client/deps/jansson.cmake b/client/deps/jansson.cmake index a95ff0baf..c91a47047 100644 --- a/client/deps/jansson.cmake +++ b/client/deps/jansson.cmake @@ -9,7 +9,6 @@ add_library(pm3rrg_rdv4_jansson STATIC jansson/strbuffer.c jansson/strconv.c jansson/utf.c - jansson/path.c jansson/value.c ) diff --git a/client/deps/jansson/Makefile b/client/deps/jansson/Makefile index 5073b78a1..b51c4a77c 100644 --- a/client/deps/jansson/Makefile +++ b/client/deps/jansson/Makefile @@ -13,7 +13,6 @@ MYSRCS = \ strbuffer.c \ strconv.c \ utf.c \ - path.c \ value.c LIB_A = libjansson.a diff --git a/client/deps/jansson/jansson.h b/client/deps/jansson/jansson.h index 0f868c2f2..75cbb5d51 100644 --- a/client/deps/jansson/jansson.h +++ b/client/deps/jansson/jansson.h @@ -302,14 +302,6 @@ int json_equal(const json_t *json1, const json_t *json2); json_t *json_copy(json_t *json) JANSSON_ATTRS(warn_unused_result); json_t *json_deep_copy(const json_t *json) JANSSON_ATTRS(warn_unused_result); -json_t *json_path_get(const json_t *json, const char *path); -int json_path_set_new(json_t *json, const char *path, json_t *value, size_t flags, json_error_t *error); - -static JSON_INLINE -int json_path_set(json_t *json, const char *path, json_t *value, size_t flags, json_error_t *error) { - return json_path_set_new(json, path, json_incref(value), flags, error); -} - /* decoding */ #define JSON_REJECT_DUPLICATES 0x1 diff --git a/client/src/emv/emvjson.h b/client/src/emv/emvjson.h index f4f3d4fb4..e90aa42d8 100644 --- a/client/src/emv/emvjson.h +++ b/client/src/emv/emvjson.h @@ -13,6 +13,7 @@ #include "common.h" #include "jansson.h" +#include "jansson_path.h" #include "tlv.h" typedef struct { diff --git a/client/deps/jansson/path.c b/client/src/jansson_path.c similarity index 71% rename from client/deps/jansson/path.c rename to client/src/jansson_path.c index 11964ec6e..0c0d76a05 100644 --- a/client/deps/jansson/path.c +++ b/client/src/jansson_path.c @@ -11,7 +11,110 @@ #include <assert.h> #include "jansson.h" -#include "jansson_private.h" +#include "jansson_path.h" + +////// memory.c private functions + +/* C89 allows these to be macros */ +#undef malloc +#undef free + +/* memory function pointers */ +static json_malloc_t do_malloc = malloc; +static json_free_t do_free = free; + +static void *jsonp_malloc(size_t size) { + if (!size) + return NULL; + + return (*do_malloc)(size); +} + +static void jsonp_free(void *ptr) { + if (!ptr) + return; + + (*do_free)(ptr); +} + +static char *jsonp_strndup(const char *str, size_t len) { + char *new_str; + + new_str = jsonp_malloc(len + 1); + if (!new_str) + return NULL; + + memcpy(new_str, str, len); + new_str[len] = '\0'; + return new_str; +} + +static char *jsonp_strdup(const char *str) { + return jsonp_strndup(str, strlen(str)); +} + +////// error.c private functions + +static void jsonp_error_set_source(json_error_t *error, const char *source) { + size_t length; + + if (!error || !source) + return; + + length = strlen(source); + if (length < JSON_ERROR_SOURCE_LENGTH) { + strncpy(error->source, source, JSON_ERROR_SOURCE_LENGTH - 1); + } else { + size_t extra = length - JSON_ERROR_SOURCE_LENGTH + 4; + memcpy(error->source, "...", 3); + strncpy(error->source + 3, source + extra, length - extra + 1); + } +} + +static void jsonp_error_init(json_error_t *error, const char *source) { + if (error) { + error->text[0] = '\0'; + error->line = -1; + error->column = -1; + error->position = 0; + if (source) + jsonp_error_set_source(error, source); + else + error->source[0] = '\0'; + } +} + +static void jsonp_error_vset(json_error_t *error, int line, int column, + size_t position, enum json_error_code code, + const char *msg, va_list ap) { + if (!error) + return; + + if (error->text[0] != '\0') { + /* error already set */ + return; + } + + error->line = line; + error->column = column; + error->position = (int)position; + + vsnprintf(error->text, JSON_ERROR_TEXT_LENGTH - 1, msg, ap); + error->text[JSON_ERROR_TEXT_LENGTH - 2] = '\0'; + error->text[JSON_ERROR_TEXT_LENGTH - 1] = code; +} + +static void jsonp_error_set(json_error_t *error, int line, int column, + size_t position, enum json_error_code code, + const char *msg, ...) { + va_list ap; + va_start(ap, msg); + jsonp_error_vset(error, line, column, position, code, msg, ap); + va_end(ap); +} + + +// original path.c from jansson fork json_t *json_path_get(const json_t *json, const char *path) { static const char root_chr = '$', array_open = '['; diff --git a/client/src/jansson_path.h b/client/src/jansson_path.h new file mode 100644 index 000000000..7737c1634 --- /dev/null +++ b/client/src/jansson_path.h @@ -0,0 +1,30 @@ +/* + * Copyright (c) 2009-2016 Petri Lehtinen <petri@digip.org> + * + * Jansson is free software; you can redistribute it and/or modify + * it under the terms of the MIT license. See LICENSE for details. + */ + +#ifndef JANSSON_PATH_H +#define JANSSON_PATH_H + +//#include <stdio.h> +#include <stdlib.h> /* for size_t */ +//#include <stdarg.h> + +#ifdef __cplusplus +extern "C" { +#endif + +json_t *json_path_get(const json_t *json, const char *path); +int json_path_set_new(json_t *json, const char *path, json_t *value, size_t flags, json_error_t *error); + +static JSON_INLINE +int json_path_set(json_t *json, const char *path, json_t *value, size_t flags, json_error_t *error) { + return json_path_set_new(json, path, json_incref(value), flags, error); +} + +#ifdef __cplusplus +} +#endif +#endif From 72acec580637862917466a832730c8430a2051d8 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sun, 24 May 2020 23:23:55 +0200 Subject: [PATCH 140/527] Makefile & CMake rework --- client/Makefile | 634 ++++++++++++++++----------- client/deps/CMakeLists.txt | 40 +- client/deps/amiibo.cmake | 8 + client/deps/amiitool/Makefile | 2 +- client/deps/amiitool/amiibo.c | 4 +- client/deps/amiitool/drbg.c | 2 +- client/deps/mbedtls.cmake | 1 + client/deps/zlib.cmake | 1 + client/src/cmdflashmem.c | 4 +- client/src/cmdhffelica.c | 2 +- client/src/cmdhficlass.c | 2 +- client/src/cmdhfmfdes.c | 2 +- client/src/cmdhfmfdesfire_disabled.c | 4 +- client/src/cmdhfmfhard.c | 4 +- client/src/cmdhfmfu.c | 2 +- client/src/emv/crypto_polarssl.c | 4 +- client/src/emv/emv_roca.c | 2 +- client/src/emv/test/cryptotest.c | 26 +- client/src/fido/fidocore.c | 2 +- client/src/loclass/elite_crack.c | 2 +- client/src/loclass/ikeys.c | 2 +- client/src/mifare/desfire_crypto.c | 4 +- client/src/scripting.c | 4 +- 23 files changed, 467 insertions(+), 291 deletions(-) diff --git a/client/Makefile b/client/Makefile index d3c969b9c..59c08f144 100644 --- a/client/Makefile +++ b/client/Makefile @@ -4,11 +4,6 @@ # the license. #----------------------------------------------------------------------------- -# reveng will compile without macros, but these may be useful: -# Add -DBMPMACRO to use bitmap size constant macros (edit config.h) -# Add -DNOFORCE to disable the -F switch -# Add -DPRESETS to compile with preset models (edit config.h) - # Must be called before any Makefile include ROOT_DIR:=$(dir $(realpath $(lastword $(MAKEFILE_LIST)))) @@ -22,44 +17,45 @@ vpath %.dic dictionaries OBJDIR = obj LDLIBS ?= -L/usr/local/lib -LDLIBS += -lreadline -lm -ifneq ($(SKIPPTHREAD),1) -LDLIBS += -lpthread + +ifeq ($(platform),Darwin) + # cf brew info qt: qt not symlinked anymore + PKG_CONFIG_ENV := PKG_CONFIG_PATH=/usr/local/opt/qt/lib/pkgconfig endif -# RPi Zero gcc requires -latomic -# but MacOSX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld -# doesn't recognize option --as-needed -ifneq ($(platform),Darwin) - LDLIBS += -Wl,--as-needed -latomic -Wl,--no-as-needed -endif +################### +# local libraries # +################### -# local libraries -LUALIBPATH = ./deps/liblua -LUALIBINC = -I$(LUALIBPATH) -LUALIB = $(LUALIBPATH)/liblua.a -JANSSONLIBPATH = ./deps/jansson -JANSSONLIBINC = -I$(JANSSONLIBPATH) -JANSSONLIB = $(JANSSONLIBPATH)/libjansson.a -CBORLIBPATH = ./deps/tinycbor -CBORLIBINC = -I$(CBORLIBPATH) -CBORLIB = $(CBORLIBPATH)/tinycbor.a -REVENGLIBPATH = ./deps/reveng -REVENGLIBINC = -I$(REVENGLIBPATH) -REVENGLIB = $(REVENGLIBPATH)/libreveng.a +## Amiibo AMIIBOLIBPATH = ./deps/amiitool AMIIBOLIBINC = -I$(AMIIBOLIBPATH) AMIIBOLIB = $(AMIIBOLIBPATH)/libamiibo.a -HARDNESTEDLIBPATH = ./deps/hardnested -HARDNESTEDLIBINC = -I$(HARDNESTEDLIBPATH) -HARDNESTEDLIB = $(HARDNESTEDLIBPATH)/libhardnested.a + +## Tinycbor +CBORLIBPATH = ./deps/tinycbor +CBORLIBINC = -I$(CBORLIBPATH) +CBORLIB = $(CBORLIBPATH)/tinycbor.a + +## Cliparser / Argtable3 CLIPARSERLIBPATH = ./deps/cliparser CLIPARSERLIBINC = -I$(CLIPARSERLIBPATH) CLIPARSERLIB = $(CLIPARSERLIBPATH)/libcliparser.a -WAILIBPATH = ./deps/whereami -WAILIBINC = -I$(WAILIBPATH) -WAILIB = $(WAILIBPATH)/libwhereami.a +## Hardnested +HARDNESTEDLIBPATH = ./deps/hardnested +HARDNESTEDLIBINC = -I$(HARDNESTEDLIBPATH) +HARDNESTEDLIB = $(HARDNESTEDLIBPATH)/libhardnested.a + +## Jansson +JANSSONLIBPATH = ./deps/jansson +JANSSONLIBINC = -I$(JANSSONLIBPATH) +JANSSONLIB = $(JANSSONLIBPATH)/libjansson.a + +## Lua +LUALIBPATH = ./deps/liblua +LUALIBINC = -I$(LUALIBPATH) +LUALIB = $(LUALIBPATH)/liblua.a LUAPLATFORM = generic ifneq (,$(findstring MINGW,$(platform))) LUAPLATFORM = mingw @@ -72,85 +68,195 @@ else endif endif -# common libraries +## Reveng +REVENGLIBPATH = ./deps/reveng +REVENGLIBINC = -I$(REVENGLIBPATH) +REVENGLIB = $(REVENGLIBPATH)/libreveng.a + +## Whereami +WAILIBPATH = ./deps/whereami +WAILIBINC = -I$(WAILIBPATH) +WAILIB = $(WAILIBPATH)/libwhereami.a + +########################## +# common local libraries # +########################## + +## mbed TLS MBEDTLSLIBPATH = ../common/mbedtls +MBEDTLSLIBINC = -I$(MBEDTLSLIBPATH) MBEDTLSLIB = $(OBJDIR)/libmbedtls.a + +## Zlib ZLIBPATH = ../common/zlib +ZLIBINC = -I$(ZLIBPATH) ZLIB = $(OBJDIR)/libz.a -# system libraries -ifneq ($(SKIPLUASYSTEM),1) - LUAINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags lua5.2 2>/dev/null) - LUALDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs lua5.2 2>/dev/null) - ifneq ($(LUALDLIBS),) - LUALIB = $(LUALDLIBS) - LUALIBINC = $(LUAINCLUDES) - LUASYSTEM = 1 - endif -endif +######################################################## +# optional system libraries to replace local libraries # +######################################################## +## Amiibo +# not distributed as system library +LDLIBS += $(AMIIBOLIB) +INCLUDES += $(AMIIBOLIBINC) + +## Tinycbor +# not distributed as system library +LDLIBS += $(CBORLIB) +INCLUDES += $(CBORLIBINC) + +## Cliparser / Argtable3 +# not distributed as system library +LDLIBS += $(CLIPARSERLIB) +INCLUDES += $(CLIPARSERLIBINC) + +## Hardnested +# not distributed as system library +LDLIBS += $(HARDNESTEDLIB) +INCLUDES += $(HARDNESTEDLIBINC) + +## Jansson ifneq ($(SKIPJANSSONSYSTEM),1) JANSSONINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags jansson 2>/dev/null) JANSSONLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs jansson 2>/dev/null) ifneq ($(JANSSONLDLIBS),) JANSSONLIB = $(JANSSONLDLIBS) JANSSONLIBINC = $(JANSSONINCLUDES) - JANSSONSYSTEM = 1 + JANSSON_FOUND = 1 endif endif +LDLIBS += $(JANSSONLIB) +INCLUDES += $(JANSSONLIBINC) +## Lua +ifneq ($(SKIPLUASYSTEM),1) + LUAINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags lua5.2 2>/dev/null) + LUALDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs lua5.2 2>/dev/null) + ifneq ($(LUALDLIBS),) + LUALIB = $(LUALDLIBS) + LUALIBINC = $(LUAINCLUDES) + LUA_FOUND = 1 + endif +endif +LDLIBS += $(LUALIB) +INCLUDES += $(LUALIBINC) + +## mbed TLS +# system library cannot be used because it is compiled by default without CMAC support +LDLIBS +=$(MBEDTLSLIB) +INCLUDES += $(MBEDTLSLIBINC) + +## Reveng +# not distributed as system library +LDLIBS += $(REVENGLIB) +INCLUDES += $(REVENGLIBINC) + +## Whereami ifneq ($(SKIPWHEREAMISYSTEM),1) ifneq (,$(wildcard /usr/include/whereami.h)) WAILIB = -lwhereami WAILIBINC = - WAISYSTEM = 1 + WAI_FOUND = 1 endif endif +LDLIBS += $(WAILIB) +INCLUDES += $(WAILIBINC) -ifneq ($(SKIPBT),1) - BTLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs bluez 2>/dev/null) +## Zlib +# system library useable? Need to recompress hardnested tables? +LDLIBS +=$(ZLIB) +INCLUDES += $(ZLIBINC) + +#################### +# system libraries # +#################### + +## Atomic +# RPi Zero gcc requires -latomic +# but MacOSX /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/ld +# doesn't recognize option --as-needed +ifneq ($(platform),Darwin) + LDLIBS += -Wl,--as-needed -latomic -Wl,--no-as-needed endif +## Bluez (optional) +ifneq ($(SKIPBT),1) + BTINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags bluez 2>/dev/null) + BTLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs bluez 2>/dev/null) + ifneq ($(BTLDLIBS),) + BTLIB = $(BTLDLIBS) + BTLIBINC = $(BTINCLUDES) + BT_FOUND = 1 + endif +endif +LDLIBS += $(BTLIB) +INCLUDES += $(BTLIBINC) + +## Readline +ifeq ($(platform),Darwin) + LDLIBS += -L/usr/local/opt/readline/lib + INCLUDES += -I/usr/local/opt/readline/include +endif +LDLIBS += -lreadline + +## Math +LDLIBS += -lm + +## Pthread +# Some have no pthread, e.g. termux +ifneq ($(SKIPPTHREAD),1) + LDLIBS += -lpthread +endif + +## QT5 (or QT4 fallback) (optional) ifneq ($(SKIPQT),1) # Check for correctly configured Qt5 QTINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags Qt5Core Qt5Widgets 2>/dev/null) QTLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs Qt5Core Qt5Widgets 2>/dev/null) MOC = $(shell $(PKG_CONFIG_ENV) pkg-config --variable=host_bins Qt5Core)/moc UIC = $(shell $(PKG_CONFIG_ENV) pkg-config --variable=host_bins Qt5Core)/uic - ifeq ($(QTINCLUDES), ) - # if Qt5 not found check for correctly configured Qt4 + ifneq ($(QTLDLIBS),) + QT5_FOUND = 1 + else + # if Qt5 not found check for correctly configured Qt4 QTINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags QtCore QtGui 2>/dev/null) QTLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs QtCore QtGui 2>/dev/null) MOC = $(shell $(PKG_CONFIG_ENV) pkg-config --variable=moc_location QtCore) UIC = $(shell $(PKG_CONFIG_ENV) pkg-config --variable=uic_location QtCore) - else - # On OSX Qt5 is claiming for a C++11 compiler (gnu++14 works too, but if nothing it fails) - QT5FOUND = 1 endif - ifeq ($(QTINCLUDES), ) - # if both pkg-config commands failed, search in common places - ifneq ($(QTDIR), ) - QTINCLUDES = -I$(QTDIR)/include -I$(QTDIR)/include/QtCore -I$(QTDIR)/include/QtGui - QTLDLIBS = -L$(QTDIR)/lib -lQtCore4 -lQtGui4 + ifeq ($(QTLDLIBS),) + # if both pkg-config commands failed, search in common places + ifneq ($(QTDIR),) ifneq ($(wildcard $(QTDIR)/include/QtWidgets),) - QTINCLUDES += -I$(QTDIR)/include/QtWidgets - QTLDLIBS = -L$(QTDIR)/lib -lQt5Widgets -lQt5Gui -lQt5Core - QT5FOUND = 1 + # QT5 + QTINCLUDES = -I$(QTDIR)/include -I$(QTDIR)/include/QtCore -I$(QTDIR)/include/QtGui -I$(QTDIR)/include/QtWidgets + QTLDLIBS = -L$(QTDIR)/lib -lQt5Core -lQt5Gui -lQt5Widgets + QT5_FOUND = 1 + else + # QT4 + QTINCLUDES = -I$(QTDIR)/include -I$(QTDIR)/include/QtCore -I$(QTDIR)/include/QtGui + QTLDLIBS = -L$(QTDIR)/lib -lQtCore4 -lQtGui4 endif MOC = $(QTDIR)/bin/moc UIC = $(QTDIR)/bin/uic endif endif + ifneq ($(QTLDLIBS),) + QT_FOUND = 1 + endif endif +LDLIBS += $(QTLDLIBS) +CXXINCLUDES += $(QTINCLUDES) -LIBS = $(LUALIBINC) $(MBEDTLSLIBINC) $(JANSSONLIBINC) $(CBORLIBINC) $(ZLIBINC) $(REVENGLIBINC) $(AMIIBOLIBINC) $(HARDNESTEDLIBINC) $(CLIPARSERLIBINC) $(WAILIBINC) -INCLUDES_CLIENT += -I./src -I../include -I../common -I../common_fpga $(LIBS) +####################################################################################################### CFLAGS ?= $(DEFCFLAGS) - # We cannot just use CFLAGS+=... because it has impact on sub-makes if CFLAGS is defined in env: -PM3CFLAGS = $(CFLAGS) $(INCLUDES_CLIENT) +PM3CFLAGS = $(CFLAGS) +PM3CFLAGS += -I./src -I../include -I../common -I../common_fpga $(INCLUDES) # WIP Testing -#PM3CFLAGS = $(CFLAGS) -std=c11 -pedantic $(INCLUDES_CLIENT) +#PM3CFLAGS += -std=c11 -pedantic + PREFIX ?= /usr/local ifneq (,$(findstring MINGW,$(platform))) # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) @@ -160,220 +266,254 @@ ifneq (,$(findstring MINGW,$(platform))) PM3CFLAGS += -D_ISOC99_SOURCE PM3CFLAGS += -mno-ms-bitfields -fexec-charset=cp850 endif -ifeq ($(platform),Darwin) - OBJCSRCS = util_darwin.m - LDFLAGS += -framework Foundation -framework AppKit - LDLIBS := -L/usr/local/opt/readline/lib $(LDLIBS) - LIBS := -I/usr/local/opt/readline/include $(LIBS) - # cf brew info qt: qt not symlinked anymore - PKG_CONFIG_ENV := PKG_CONFIG_PATH=/usr/local/opt/qt/lib/pkgconfig -endif -CXXFLAGS ?= -Wall -Werror -O3 -PM3CXXFLAGS = $(CXXFLAGS) -I../include - -ifneq ($(BTLDLIBS),) +ifeq ($(BT_FOUND),1) PM3CFLAGS += -DHAVE_BLUEZ endif -ifneq ($(QTLDLIBS),) - QTGUISRCS = proxgui.cpp proxguiqt.cpp proxguiqt.moc.cpp - QTGUIOBJS = $(OBJDIR)/proxgui.o $(OBJDIR)/proxguiqt.o $(OBJDIR)/proxguiqt.moc.o +CXXFLAGS ?= -Wall -Werror -O3 +PM3CXXFLAGS = $(CXXFLAGS) +PM3CXXFLAGS += -I../include + +ifeq ($(QT_FOUND),1) PM3CFLAGS += -DHAVE_GUI PM3CXXFLAGS += -DQT_NO_DEBUG - ifeq ($(QT5FOUND),1) + ifeq ($(QT5_FOUND),1) + # On OSX Qt5 is claiming for a C++11 compiler (gnu++14 works too, but if nothing it fails) PM3CXXFLAGS += -fPIC -std=c++11 endif -else - QTGUISRCS = guidummy.cpp - QTGUIOBJS = $(OBJDIR)/guidummy.o endif +PM3LDFLAGS = $(LDFLAGS) +ifeq ($(platform),Darwin) + PM3LDFLAGS += -framework Foundation -framework AppKit +endif + +################### +# printing status # +################### + $(info ===================================================================) $(info Client platform: $(platform)) + ifeq ($(SKIPQT),1) -$(info GUI support: skipped) -else ifneq ($(QTLDLIBS),) -$(info GUI support: QT found, enabled) + $(info GUI support: skipped) +else ifeq ($(QT_FOUND),1) + ifeq ($(QT5_FOUND),1) + $(info GUI support: QT5 found, enabled) + else + $(info GUI support: QT4 found, enabled) + endif else -$(info GUI support: QT not found, disabled) + $(info GUI support: QT not found, disabled) endif + ifeq ($(SKIPBT),1) -$(info native BT support: skipped) + $(info native BT support: skipped) else ifneq ($(BTLDLIBS),) -$(info native BT support: Bluez found, enabled) + $(info native BT support: Bluez found, enabled) else -$(info native BT support: Bluez not found, disabled) + $(info native BT support: Bluez not found, disabled) endif -ifeq ($(JANSSONSYSTEM),1) -$(info Jansson library: system library found) + +ifeq ($(JANSSON_FOUND),1) + $(info Jansson library: system library found) endif -ifeq ($(LUASYSTEM),1) -$(info Lua library: system library found) + +ifeq ($(LUA_FOUND),1) + $(info Lua library: system library found) endif -ifeq ($(WAISYSTEM),1) -$(info Whereami library: system library found) + +ifeq ($(WAI_FOUND),1) + $(info Whereami library: system library found) endif + $(info compiler version: $(shell $(CC) --version|head -n 1)) $(info ===================================================================) +################ +# dependencies # +################ + # Flags to generate temporary dependency files DEPFLAGS = -MT $@ -MMD -MP -MF $(OBJDIR)/$*.Td # make temporary to final dependency files after successful compilation POSTCOMPILE = $(MV) -f $(OBJDIR)/$*.Td $(OBJDIR)/$*.d && $(TOUCH) $@ -CORESRCS = uart/uart_posix.c \ - uart/uart_win32.c \ - ui.c \ - commonutil.c \ - util.c \ - util_posix.c \ - scandir.c \ - crc16.c \ - crc32.c \ - comms.c \ - version.c +################ +# enumerations # +################ -CMDSRCS = crapto1/crapto1.c \ - crapto1/crypto1.c \ - mifare/mifaredefault.c \ - mifare/mfkey.c \ - tea.c \ - fido/additional_ca.c \ - fido/cose.c \ - fido/cbortools.c \ - fido/fidocore.c \ - crypto/asn1dump.c \ - crypto/libpcrypto.c\ - crypto/asn1utils.c\ - loclass/cipher.c \ - loclass/cipherutils.c \ - loclass/ikeys.c \ - loclass/elite_crack.c \ - fileutils.c \ - mifare/mifarehost.c \ - parity.c \ - crc.c \ - crc64.c \ - legic_prng.c \ - iso15693tools.c \ - prng.c \ - generator.c \ - graph.c \ - cmddata.c \ - lfdemod.c \ - emv/crypto_polarssl.c\ - emv/crypto.c\ - emv/emv_pk.c\ - emv/emv_pki.c\ - emv/emv_pki_priv.c\ - emv/test/cryptotest.c\ - emv/apduinfo.c \ - emv/dump.c \ - emv/tlv.c \ - emv/emv_tags.c \ - emv/dol.c \ - emv/emvjson.c\ - emv/emvcore.c \ - emv/test/crypto_test.c\ - emv/test/sda_test.c\ - emv/test/dda_test.c\ - emv/test/cda_test.c\ - emv/cmdemv.c \ - emv/emv_roca.c \ - mifare/mifare4.c \ - mifare/mad.c \ - mifare/ndef.c \ - mifare/desfire_crypto.c \ - cmdanalyse.c \ - cmdhf.c \ - cmdhflist.c \ - aidsearch.c \ - cmdhf14a.c \ - cmdhf14b.c \ - cmdhf15.c \ - cmdhfepa.c \ - cmdhflegic.c \ - cmdhficlass.c \ - cmdhfmf.c \ - cmdhfmfu.c \ - cmdhfmfp.c \ - cmdhfmfhard.c \ - cmdhfmfdes.c \ - cmdhftopaz.c \ - cmdhffido.c \ - cmdhffelica.c \ - cmdhfthinfilm.c \ - cmdhfcryptorf.c \ - cmdhflto.c \ - cmdhw.c \ - cmdlf.c \ - cmdlfawid.c \ - cmdlfcotag.c \ - cmdlfem4x.c \ - cmdlffdx.c \ - cmdlfguard.c \ - cmdlfgallagher.c \ - cmdlfhid.c \ - cmdlfhitag.c \ - cmdlfio.c \ - cmdlfindala.c \ - cmdlfjablotron.c \ - cmdlfkeri.c \ - cmdlfnexwatch.c \ - cmdlfnedap.c \ - cmdlfnoralsy.c \ - cmdlfpac.c \ - cmdlfparadox.c \ - cmdlfpcf7931.c \ - cmdlfpresco.c \ - cmdlfpyramid.c \ - cmdlfsecurakey.c \ - cmdlft55xx.c \ - cmdlfti.c \ - cmdlfviking.c \ - cmdlfvisa2000.c \ - cmdlfmotorola.c \ - cmdtrace.c \ - cmdflashmem.c \ - cmdflashmemspiffs.c \ - cmdsmartcard.c \ - cmdusart.c \ - cmdwiegand.c \ - cmdparser.c \ - cmdmain.c \ - pm3_binlib.c \ - scripting.c \ - cmdscript.c \ - pm3_bitlib.c \ - cmdcrc.c \ - bucketsort.c \ - flash.c \ - wiegand_formats.c \ - wiegand_formatutils.c \ - cardhelper.c \ - preferences.c \ - jansson_path.c +SRCS = aidsearch.c \ + cmdanalyse.c \ + cmdcrc.c \ + cmddata.c \ + cmdflashmem.c \ + cmdflashmemspiffs.c \ + cmdhf.c \ + cmdhf14a.c \ + cmdhf14b.c \ + cmdhf15.c \ + cmdhfcryptorf.c \ + cmdhfepa.c \ + cmdhffelica.c \ + cmdhffido.c \ + cmdhficlass.c \ + cmdhflegic.c \ + cmdhflist.c \ + cmdhflto.c \ + cmdhfmf.c \ + cmdhfmfdes.c \ + cmdhfmfhard.c \ + cmdhfmfu.c \ + cmdhfmfp.c \ + cmdhfthinfilm.c \ + cmdhftopaz.c \ + cmdhw.c \ + cmdlf.c \ + cmdlfawid.c \ + cmdlfcotag.c \ + cmdlfem4x.c \ + cmdlffdx.c \ + cmdlfguard.c \ + cmdlfgallagher.c \ + cmdlfhid.c \ + cmdlfhitag.c \ + cmdlfindala.c \ + cmdlfio.c \ + cmdlfjablotron.c \ + cmdlfkeri.c \ + cmdlfmotorola.c \ + cmdlfnedap.c \ + cmdlfnexwatch.c \ + cmdlfnoralsy.c \ + cmdlfpac.c \ + cmdlfparadox.c \ + cmdlfpcf7931.c \ + cmdlfpresco.c \ + cmdlfpyramid.c \ + cmdlfsecurakey.c \ + cmdlft55xx.c \ + cmdlfti.c \ + cmdlfviking.c \ + cmdlfvisa2000.c \ + cmdmain.c \ + cmdparser.c \ + cmdscript.c \ + cmdsmartcard.c \ + cmdtrace.c \ + cmdusart.c \ + cmdwiegand.c \ + comms.c \ + crypto/asn1dump.c \ + crypto/asn1utils.c\ + crypto/libpcrypto.c\ + emv/apduinfo.c \ + emv/cmdemv.c \ + emv/crypto.c\ + emv/crypto_polarssl.c\ + emv/dol.c \ + emv/dump.c \ + emv/emv_pk.c\ + emv/emv_pki.c\ + emv/emv_pki_priv.c\ + emv/emv_roca.c \ + emv/emv_tags.c \ + emv/emvcore.c \ + emv/emvjson.c\ + emv/tlv.c \ + emv/test/crypto_test.c\ + emv/test/cryptotest.c\ + emv/test/cda_test.c\ + emv/test/dda_test.c\ + emv/test/sda_test.c\ + fido/additional_ca.c \ + fido/cose.c \ + fido/cbortools.c \ + fido/fidocore.c \ + fileutils.c \ + flash.c \ + generator.c \ + graph.c \ + jansson_path.c \ + loclass/cipher.c \ + loclass/cipherutils.c \ + loclass/elite_crack.c \ + loclass/ikeys.c \ + mifare/desfire_crypto.c \ + mifare/mad.c \ + mifare/mfkey.c \ + mifare/mifare4.c \ + mifare/mifaredefault.c \ + mifare/mifarehost.c \ + mifare/ndef.c \ + pm3_binlib.c \ + pm3_bitlib.c \ + preferences.c \ + prng.c \ + proxmark3.c \ + scandir.c \ + uart/uart_posix.c \ + uart/uart_win32.c \ + scripting.c \ + tea.c \ + ui.c \ + util.c \ + version.c \ + wiegand_formats.c \ + wiegand_formatutils.c -COREOBJS = $(CORESRCS:%.c=$(OBJDIR)/%.o) -CMDOBJS = $(CMDSRCS:%.c=$(OBJDIR)/%.o) -OBJCOBJS = $(OBJCSRCS:%.m=$(OBJDIR)/%.o) +# common +SRCS += bucketsort.c \ + cardhelper.c \ + crapto1/crapto1.c \ + crapto1/crypto1.c \ + crc.c \ + crc16.c \ + crc32.c \ + crc64.c \ + commonutil.c \ + iso15693tools.c \ + legic_prng.c \ + lfdemod.c \ + parity.c \ + util_posix.c + +# gui +ifeq ($(QT_FOUND),1) + CXXSRCS = proxgui.cpp proxguiqt.cpp proxguiqt.moc.cpp +else + CXXSRCS = guidummy.cpp +endif + +# OS X +ifeq ($(platform),Darwin) + OBJCSRCS = util_darwin.m +endif + +OBJS = $(SRCS:%.c=$(OBJDIR)/%.o) +OBJS += $(CXXSRCS:%.cpp=$(OBJDIR)/%.o) +OBJS += $(OBJCSRCS:%.m=$(OBJDIR)/%.o) BINS = proxmark3 + CLEAN = $(BINS) src/version.c src/*.moc.cpp src/ui/ui_overlays.h lualibs/pm3_cmd.lua lualibs/mfc_default_keys.lua # transition: cleaning also old path stuff CLEAN += flasher *.moc.cpp ui/ui_overlays.h +########### +# targets # +########### + # need to assign dependancies to build these first... all: $(BINS) all-static: LDLIBS:=-static $(LDLIBS) all-static: $(BINS) -proxmark3: LDLIBS+=$(LUALIB) $(JANSSONLIB) $(MBEDTLSLIB) $(CBORLIB) $(ZLIB) $(REVENGLIB) $(AMIIBOLIB) $(HARDNESTEDLIB) $(CLIPARSERLIB) $(WAILIB) $(BTLDLIBS) $(QTLDLIBS) -proxmark3: $(OBJDIR)/proxmark3.o $(COREOBJS) $(CMDOBJS) $(OBJCOBJS) $(QTGUIOBJS) liblua jansson tinycbor reveng mbedtls zlib amiibo hardnested cliparser whereami lualibs/pm3_cmd.lua lualibs/mfc_default_keys.lua +proxmark3: $(OBJS) liblua jansson tinycbor reveng mbedtls zlib amiibo hardnested cliparser whereami lualibs/pm3_cmd.lua lualibs/mfc_default_keys.lua $(info [=] LD $@) - $(Q)$(LD) $(LDFLAGS) $(OBJDIR)/proxmark3.o $(COREOBJS) $(CMDOBJS) $(OBJCOBJS) $(QTGUIOBJS) $(LDLIBS) -o $@ + $(Q)$(LD) $(PM3LDFLAGS) $(OBJS) $(LDLIBS) -o $@ src/proxgui.cpp: src/ui/ui_overlays.h @@ -434,15 +574,18 @@ tarbin: $(BINS) $(info [=] TAR ../proxmark3-$(platform)-bin.tar) $(Q)$(TAR) $(TARFLAGS) ../proxmark3-$(platform)-bin.tar $(BINS:%=client/%) $(WINBINS:%=client/%) -# local libraries: +########################### +# local libraries targets # +########################### + liblua: -ifneq ($(LUASYSTEM),1) +ifneq ($(LUA_FOUND),1) $(info [*] MAKE $@ for $(LUAPLATFORM)) $(Q)$(MAKE) --no-print-directory -C $(LUALIBPATH) $(LUAPLATFORM) endif jansson: -ifneq ($(JANSSONSYSTEM),1) +ifneq ($(JANSSON_FOUND),1) $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C $(JANSSONLIBPATH) all endif @@ -468,7 +611,7 @@ cliparser: $(Q)$(MAKE) --no-print-directory -C $(CLIPARSERLIBPATH) all whereami: -ifneq ($(WAISYSTEM),1) +ifneq ($(WAI_FOUND),1) $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C $(WAILIBPATH) all endif @@ -482,6 +625,10 @@ zlib: $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C $(ZLIBPATH) OBJDIR=$(ROOT_DIR)$(OBJDIR) BINDIR=$(ROOT_DIR)$(OBJDIR) all +######## +# misc # +######## + .PHONY: all clean install uninstall tarbin liblua jansson tinycbor reveng hardnested amiibo cliparser whereami mbedtls zlib # version.c should be remade on every compilation @@ -503,7 +650,7 @@ $(OBJDIR)/%.o : %.c $(OBJDIR)/%.d $(OBJDIR)/%.o : %.cpp $(OBJDIR)/%.d $(info [-] CXX $<) $(Q)$(MKDIR) $(dir $@) - $(Q)$(CXX) $(DEPFLAGS) $(PM3CXXFLAGS) $(QTINCLUDES) -c -o $@ $< + $(Q)$(CXX) $(DEPFLAGS) $(PM3CXXFLAGS) $(CXXINCLUDES) -c -o $@ $< $(Q)$(POSTCOMPILE) %.o: %.m @@ -513,10 +660,9 @@ $(OBJDIR)/%.o : %.m $(OBJDIR)/%.d $(Q)$(CC) $(DEPFLAGS) $(PM3CFLAGS) -c -o $@ $< $(Q)$(POSTCOMPILE) -DEPENDENCY_FILES = $(patsubst %.c, $(OBJDIR)/%.d, $(CORESRCS) $(CMDSRCS)) \ - $(patsubst %.cpp, $(OBJDIR)/%.d, $(QTGUISRCS)) \ - $(patsubst %.m, $(OBJDIR)/%.d, $(OBJCSRCS)) \ - $(OBJDIR)/proxmark3.d +DEPENDENCY_FILES = $(patsubst %.c, $(OBJDIR)/%.d, $(SRCS)) \ + $(patsubst %.cpp, $(OBJDIR)/%.d, $(CXXSRCS)) \ + $(patsubst %.m, $(OBJDIR)/%.d, $(OBJCSRCS)) $(DEPENDENCY_FILES): ; .PRECIOUS: $(DEPENDENCY_FILES) diff --git a/client/deps/CMakeLists.txt b/client/deps/CMakeLists.txt index ac42065bf..a3908ec26 100644 --- a/client/deps/CMakeLists.txt +++ b/client/deps/CMakeLists.txt @@ -1,10 +1,30 @@ -include(cliparser.cmake) -include(tinycbor.cmake) -include(jansson.cmake) -include(lua.cmake) -include(mbedtls.cmake) -include(amiibo.cmake) -include(reveng.cmake) -include(zlib.cmake) -include(hardnested.cmake) -include(whereami.cmake) +if (NOT TARGET pm3rrg_rdv4_amiibo) + include(amiibo.cmake) +endif() +if (NOT TARGET pm3rrg_rdv4_cliparser) + include(cliparser.cmake) +endif() +if (NOT TARGET pm3rrg_rdv4_hardnested) + include(hardnested.cmake) +endif() +if (NOT TARGET pm3rrg_rdv4_jansson) + include(jansson.cmake) +endif() +if (NOT TARGET pm3rrg_rdv4_lua) + include(lua.cmake) +endif() +if (NOT TARGET pm3rrg_rdv4_mbedtls) + include(mbedtls.cmake) +endif() +if (NOT TARGET pm3rrg_rdv4_reveng) + include(reveng.cmake) +endif() +if (NOT TARGET pm3rrg_rdv4_tinycbor) + include(tinycbor.cmake) +endif() +if (NOT TARGET pm3rrg_rdv4_whereami) + include(whereami.cmake) +endif() +if (NOT TARGET pm3rrg_rdv4_z) + include(zlib.cmake) +endif() diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index 34780f597..23c7a7b57 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -11,6 +11,14 @@ add_library(pm3rrg_rdv4_amiibo STATIC amiitool/keygen.c ) +if (NOT TARGET pm3rrg_rdv4_mbedtls) + include(mbedtls.cmake) +endif() +find_library(pm3rrg_rdv4_mbedtls REQUIRED) +target_link_libraries(pm3rrg_rdv4_amiibo PRIVATE + readline + m + pm3rrg_rdv4_mbedtls) target_include_directories(pm3rrg_rdv4_amiibo PRIVATE ../../include ../../common) target_include_directories(pm3rrg_rdv4_amiibo INTERFACE amiitool) target_compile_options(pm3rrg_rdv4_amiibo PRIVATE -Wall -Werror -O3) diff --git a/client/deps/amiitool/Makefile b/client/deps/amiitool/Makefile index 7fe532878..dd064227e 100644 --- a/client/deps/amiitool/Makefile +++ b/client/deps/amiitool/Makefile @@ -1,5 +1,5 @@ MYSRCPATHS = -MYINCLUDES = -I. -I.. -I../jansson -I../../../common -I../../../include +MYINCLUDES = -I. -I.. -I../jansson -I../../../common -I../../../common/mbedtls -I../../../include MYCFLAGS = MYDEFS = MYSRCS = \ diff --git a/client/deps/amiitool/amiibo.c b/client/deps/amiitool/amiibo.c index ad41220bb..cbe3a0ba0 100644 --- a/client/deps/amiitool/amiibo.c +++ b/client/deps/amiitool/amiibo.c @@ -6,8 +6,8 @@ */ #include "amiibo.h" -#include "mbedtls/md.h" -#include "mbedtls/aes.h" +#include "md.h" +#include "aes.h" #include "commonutil.h" #define HMAC_POS_DATA 0x008 diff --git a/client/deps/amiitool/drbg.c b/client/deps/amiitool/drbg.c index c1297920f..1aaba0a7f 100644 --- a/client/deps/amiitool/drbg.c +++ b/client/deps/amiitool/drbg.c @@ -8,7 +8,7 @@ #include "drbg.h" #include <assert.h> #include <string.h> -#include "mbedtls/md.h" +#include "md.h" void nfc3d_drbg_init(nfc3d_drbg_ctx *ctx, const uint8_t *hmacKey, size_t hmacKeySize, const uint8_t *seed, size_t seedSize) { assert(ctx != NULL); diff --git a/client/deps/mbedtls.cmake b/client/deps/mbedtls.cmake index 63e706889..b18537c84 100644 --- a/client/deps/mbedtls.cmake +++ b/client/deps/mbedtls.cmake @@ -45,5 +45,6 @@ add_library(pm3rrg_rdv4_mbedtls STATIC ) target_include_directories(pm3rrg_rdv4_mbedtls PRIVATE ../../common) +target_include_directories(pm3rrg_rdv4_mbedtls INTERFACE ../../common/mbedtls) target_compile_options(pm3rrg_rdv4_mbedtls PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_mbedtls PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/deps/zlib.cmake b/client/deps/zlib.cmake index 645cbc88d..3a77c35aa 100644 --- a/client/deps/zlib.cmake +++ b/client/deps/zlib.cmake @@ -9,5 +9,6 @@ add_library(pm3rrg_rdv4_z STATIC ) target_compile_definitions(pm3rrg_rdv4_z PRIVATE Z_SOLO NO_GZIP ZLIB_PM3_TUNED) +target_include_directories(pm3rrg_rdv4_z INTERFACE ../../common/zlib) target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_z PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/src/cmdflashmem.c b/client/src/cmdflashmem.c index e1761a81b..e90e6025c 100644 --- a/client/src/cmdflashmem.c +++ b/client/src/cmdflashmem.c @@ -18,8 +18,8 @@ #include "comms.h" //getfromdevice #include "cmdflashmemspiffs.h" // spiffs commands -#include "mbedtls/rsa.h" -#include "mbedtls/sha1.h" +#include "rsa.h" +#include "sha1.h" #define MCK 48000000 #define FLASH_MINFAST 24000000 //33000000 diff --git a/client/src/cmdhffelica.c b/client/src/cmdhffelica.c index f7b7b00e3..1fcf23fa3 100644 --- a/client/src/cmdhffelica.c +++ b/client/src/cmdhffelica.c @@ -22,7 +22,7 @@ #include "util.h" #include "ui.h" #include "mifare.h" // felica_card_select_t struct -#include "mbedtls/des.h" +#include "des.h" #define AddCrc(data, len) compute_crc(CRC_FELICA, (data), (len), (data)+(len)+1, (data)+(len)) static int CmdHelp(const char *Cmd); diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 61aea9de6..3026f3964 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -18,7 +18,7 @@ #include "cmdtrace.h" #include "util_posix.h" #include "comms.h" -#include "mbedtls/des.h" +#include "des.h" #include "loclass/cipherutils.h" #include "loclass/cipher.h" #include "loclass/ikeys.h" diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index a39bd85c0..5e9a49c26 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -17,7 +17,7 @@ #include "comms.h" #include "ui.h" #include "cmdhf14a.h" -#include "mbedtls/aes.h" +#include "aes.h" #include "crypto/libpcrypto.h" #include "protocols.h" #include "cmdtrace.h" diff --git a/client/src/cmdhfmfdesfire_disabled.c b/client/src/cmdhfmfdesfire_disabled.c index e2d43630f..e2de33485 100644 --- a/client/src/cmdhfmfdesfire_disabled.c +++ b/client/src/cmdhfmfdesfire_disabled.c @@ -14,8 +14,8 @@ #include "cmdhfmf.h" #include "util.h" -#include "mbedtls/des.h" -#include "mbedtls/aes.h" +#include "des.h" +#include "aes.h" static int CmdHelp(const char *Cmd); diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index 52e3e4108..383a9676f 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -35,7 +35,7 @@ #include "hardnested_bruteforce.h" #include "hardnested_bf_core.h" #include "hardnested_bitarray_core.h" -#include "zlib/zlib.h" +#include "zlib.h" #include "fileutils.h" #define NUM_CHECK_BITFLIPS_THREADS (num_CPUs()) @@ -220,7 +220,7 @@ static void inflate_free(voidpf opaque, voidpf address) { #define INPUT_BUFFER_LEN 80 //---------------------------------------------------------------------------- -// Initialize decompression of the respective (HF or LF) FPGA stream +// Initialize decompression of the respective bitflip_bitarray stream //---------------------------------------------------------------------------- static void init_inflate(z_streamp compressed_stream, uint8_t *input_buffer, uint32_t insize, uint8_t *output_buffer, uint32_t outsize) { diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index b9dc8d3a2..efd10210d 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -12,7 +12,7 @@ #include "cmdparser.h" #include "commonutil.h" #include "crypto/libpcrypto.h" -#include "mbedtls/des.h" +#include "des.h" #include "cmdhfmf.h" #include "cmdhf14a.h" #include "comms.h" diff --git a/client/src/emv/crypto_polarssl.c b/client/src/emv/crypto_polarssl.c index 9d18a370b..0d582c7b3 100644 --- a/client/src/emv/crypto_polarssl.c +++ b/client/src/emv/crypto_polarssl.c @@ -23,8 +23,8 @@ #include <stdlib.h> #include <string.h> -#include "mbedtls/rsa.h" -#include "mbedtls/sha1.h" +#include "rsa.h" +#include "sha1.h" struct crypto_hash_polarssl { struct crypto_hash ch; diff --git a/client/src/emv/emv_roca.c b/client/src/emv/emv_roca.c index 521120b05..1bebcacbf 100644 --- a/client/src/emv/emv_roca.c +++ b/client/src/emv/emv_roca.c @@ -24,7 +24,7 @@ #include "emv_roca.h" #include "ui.h" // Print... -#include "mbedtls/bignum.h" +#include "bignum.h" static uint8_t g_primes[ROCA_PRINTS_LENGTH] = { 11, 13, 17, 19, 37, 53, 61, 71, 73, 79, 97, 103, 107, 109, 127, 151, 157 diff --git a/client/src/emv/test/cryptotest.c b/client/src/emv/test/cryptotest.c index f343ebbea..bb59de7fa 100644 --- a/client/src/emv/test/cryptotest.c +++ b/client/src/emv/test/cryptotest.c @@ -12,19 +12,19 @@ #include "util.h" #include "ui.h" -#include "mbedtls/bignum.h" -#include "mbedtls/aes.h" -#include "mbedtls/cmac.h" -#include "mbedtls/des.h" -#include "mbedtls/ecp.h" -#include "mbedtls/rsa.h" -#include "mbedtls/sha1.h" -#include "mbedtls/md5.h" -#include "mbedtls/x509.h" -#include "mbedtls/base64.h" -#include "mbedtls/ctr_drbg.h" -#include "mbedtls/entropy.h" -#include "mbedtls/timing.h" +#include "bignum.h" +#include "aes.h" +#include "cmac.h" +#include "des.h" +#include "ecp.h" +#include "rsa.h" +#include "sha1.h" +#include "md5.h" +#include "x509.h" +#include "base64.h" +#include "ctr_drbg.h" +#include "entropy.h" +#include "timing.h" #include "crypto_test.h" #include "sda_test.h" diff --git a/client/src/fido/fidocore.c b/client/src/fido/fidocore.c index 32d7c9ff0..3cddbc5a9 100644 --- a/client/src/fido/fidocore.c +++ b/client/src/fido/fidocore.c @@ -17,7 +17,7 @@ #include "emv/emvcore.h" #include "emv/emvjson.h" #include "cbortools.h" -#include "mbedtls/x509_crt.h" +#include "x509_crt.h" #include "crypto/asn1utils.h" #include "crypto/libpcrypto.h" #include "additional_ca.h" diff --git a/client/src/loclass/elite_crack.c b/client/src/loclass/elite_crack.c index cc9570351..83e2a9146 100644 --- a/client/src/loclass/elite_crack.c +++ b/client/src/loclass/elite_crack.c @@ -45,7 +45,7 @@ #include "ikeys.h" #include "elite_crack.h" #include "fileutils.h" -#include "mbedtls/des.h" +#include "des.h" #include "util_posix.h" /** diff --git a/client/src/loclass/ikeys.c b/client/src/loclass/ikeys.c index f50d276dc..cf14450bd 100644 --- a/client/src/loclass/ikeys.c +++ b/client/src/loclass/ikeys.c @@ -70,7 +70,7 @@ From "Dismantling iclass": #include "fileutils.h" #include "cipherutils.h" -#include "mbedtls/des.h" +#include "des.h" uint8_t pi[35] = { 0x0F, 0x17, 0x1B, 0x1D, 0x1E, 0x27, 0x2B, 0x2D, diff --git a/client/src/mifare/desfire_crypto.c b/client/src/mifare/desfire_crypto.c index 2cb9d7c3a..6dd2de26d 100644 --- a/client/src/mifare/desfire_crypto.c +++ b/client/src/mifare/desfire_crypto.c @@ -29,8 +29,8 @@ #include <stdlib.h> #include <string.h> #include "commonutil.h" -#include "mbedtls/aes.h" -#include "mbedtls/des.h" +#include "aes.h" +#include "des.h" #include "ui.h" #include "crc.h" #include "crc16.h" // crc16 ccitt diff --git a/client/src/scripting.c b/client/src/scripting.c index 4a3bab49c..a5c466ea4 100644 --- a/client/src/scripting.c +++ b/client/src/scripting.c @@ -21,8 +21,8 @@ #include "mifare/mifarehost.h" #include "crc.h" #include "crc64.h" -#include "mbedtls/sha1.h" -#include "mbedtls/aes.h" +#include "sha1.h" +#include "aes.h" #include "cmdcrc.h" #include "cmdhfmfhard.h" #include "cmdhfmfu.h" From b4716f78a82bc50394f1b55a51ab8d5867e1975e Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 25 May 2020 02:18:16 +0200 Subject: [PATCH 141/527] remove unused polarssl file --- client/src/polarssl_config.h | 2179 ---------------------------------- 1 file changed, 2179 deletions(-) delete mode 100644 client/src/polarssl_config.h diff --git a/client/src/polarssl_config.h b/client/src/polarssl_config.h deleted file mode 100644 index 5bd88fc07..000000000 --- a/client/src/polarssl_config.h +++ /dev/null @@ -1,2179 +0,0 @@ -/** - * \file config.h - * - * \brief Configuration options (set of defines) - * - * Copyright (C) 2006-2014, Brainspark B.V. - * - * This file is part of PolarSSL (http://www.polarssl.org) - * Lead Maintainer: Paul Bakker <polarssl_maintainer at polarssl.org> - * - * All rights reserved. - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License as published by - * the Free Software Foundation; either version 2 of the License, or - * (at your option) any later version. - * - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU General Public License for more details. - * - * You should have received a copy of the GNU General Public License along - * with this program; if not, write to the Free Software Foundation, Inc., - * 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. - * - * This set of compile-time options may be used to enable - * or disable features selectively, and reduce the global - * memory footprint. - */ -#ifndef POLARSSL_CONFIG_H -#define POLARSSL_CONFIG_H - -#if defined(_MSC_VER) && !defined(_CRT_SECURE_NO_DEPRECATE) -#define _CRT_SECURE_NO_DEPRECATE 1 -#endif - -/** - * \name SECTION: System support - * - * This section sets system specific settings. - * \{ - */ - -/** - * \def POLARSSL_HAVE_INT8 - * - * The system uses 8-bit wide native integers. - * - * Uncomment if native integers are 8-bit wide. - */ -//#define POLARSSL_HAVE_INT8 - -/** - * \def POLARSSL_HAVE_INT16 - * - * The system uses 16-bit wide native integers. - * - * Uncomment if native integers are 16-bit wide. - */ -//#define POLARSSL_HAVE_INT16 - -/** - * \def POLARSSL_HAVE_LONGLONG - * - * The compiler supports the 'long long' type. - * (Only used on 32-bit platforms) - */ -#define POLARSSL_HAVE_LONGLONG - -/** - * \def POLARSSL_HAVE_ASM - * - * The compiler has support for asm(). - * - * Requires support for asm() in compiler. - * - * Used in: - * library/timing.c - * library/padlock.c - * include/polarssl/bn_mul.h - * - * Comment to disable the use of assembly code. - */ -#define POLARSSL_HAVE_ASM - -/** - * \def POLARSSL_HAVE_SSE2 - * - * CPU supports SSE2 instruction set. - * - * Uncomment if the CPU supports SSE2 (IA-32 specific). - */ -//#define POLARSSL_HAVE_SSE2 - -/** - * \def POLARSSL_HAVE_TIME - * - * System has time.h and time() / localtime() / gettimeofday(). - * - * Comment if your system does not support time functions - */ -#define POLARSSL_HAVE_TIME - -/** - * \def POLARSSL_HAVE_IPV6 - * - * System supports the basic socket interface for IPv6 (RFC 3493), - * specifically getaddrinfo(), freeaddrinfo() and struct sockaddr_storage. - * - * Note: on Windows/MingW, XP or higher is required. - * - * Comment if your system does not support the IPv6 socket interface - */ -#define POLARSSL_HAVE_IPV6 - -/** - * \def POLARSSL_PLATFORM_MEMORY - * - * Enable the memory allocation layer. - * - * By default PolarSSL uses the system-provided malloc() and free(). - * This allows different allocators (self-implemented or provided) to be - * provided to the platform abstraction layer. - * - * Enabling POLARSSL_PLATFORM_MEMORY will provide "platform_set_malloc_free()" - * to allow you to set an alternative malloc() and free() function pointer. - * - * Requires: POLARSSL_PLATFORM_C - * - * Enable this layer to allow use of alternative memory allocators. - */ -//#define POLARSSL_PLATFORM_MEMORY - -/** - * \def POLARSSL_PLATFORM_NO_STD_FUNCTIONS - * - * Do not assign standard functions in the platform layer (e.g. malloc() to - * POLARSSL_PLATFORM_STD_MALLOC and printf() to POLARSSL_PLATFORM_STD_PRINTF) - * - * This makes sure there are no linking errors on platforms that do not support - * these functions. You will HAVE to provide alternatives, either at runtime - * via the platform_set_xxx() functions or at compile time by setting - * the POLARSSL_PLATFORM_STD_XXX defines. - * - * Requires: POLARSSL_PLATFORM_C - * - * Uncomment to prevent default assignment of standard functions in the - * platform layer. - */ -//#define POLARSSL_PLATFORM_NO_STD_FUNCTIONS - -/** - * \def POLARSSL_PLATFORM_XXX_ALT - * - * Uncomment a macro to let PolarSSL support the function in the platform - * abstraction layer. - * - * Example: In case you uncomment POLARSSL_PLATFORM_PRINTF_ALT, PolarSSL will - * provide a function "platform_set_printf()" that allows you to set an - * alternative printf function pointer. - * - * All these define require POLARSSL_PLATFORM_C to be defined! - * - * Uncomment a macro to enable alternate implementation of specific base - * platform function - */ -//#define POLARSSL_PLATFORM_PRINTF_ALT -//#define POLARSSL_PLATFORM_FPRINTF_ALT -/* \} name SECTION: System support */ - -/** - * \name SECTION: PolarSSL feature support - * - * This section sets support for features that are or are not needed - * within the modules that are enabled. - * \{ - */ - -/** - * \def POLARSSL_TIMING_ALT - * - * Uncomment to provide your own alternate implementation for hardclock(), - * get_timer(), set_alarm() and m_sleep(). - * - * Only works if you have POLARSSL_TIMING_C enabled. - * - * You will need to provide a header "timing_alt.h" and an implementation at - * compile time. - */ -//#define POLARSSL_TIMING_ALT - -/** - * \def POLARSSL_XXX_ALT - * - * Uncomment a macro to let PolarSSL use your alternate core implementation of - * a symmetric or hash algorithm (e.g. platform specific assembly optimized - * implementations). Keep in mind that the function prototypes should remain - * the same. - * - * Example: In case you uncomment POLARSSL_AES_ALT, PolarSSL will no longer - * provide the "struct aes_context" definition and omit the base function - * declarations and implementations. "aes_alt.h" will be included from - * "aes.h" to include the new function definitions. - * - * Uncomment a macro to enable alternate implementation for core algorithm - * functions - */ -//#define POLARSSL_AES_ALT -//#define POLARSSL_ARC4_ALT -//#define POLARSSL_BLOWFISH_ALT -//#define POLARSSL_CAMELLIA_ALT -//#define POLARSSL_DES_ALT -//#define POLARSSL_XTEA_ALT -//#define POLARSSL_MD2_ALT -//#define POLARSSL_MD4_ALT -//#define POLARSSL_MD5_ALT -//#define POLARSSL_RIPEMD160_ALT -//#define POLARSSL_SHA1_ALT -//#define POLARSSL_SHA256_ALT -//#define POLARSSL_SHA512_ALT - -/** - * \def POLARSSL_AES_ROM_TABLES - * - * Store the AES tables in ROM. - * - * Uncomment this macro to store the AES tables in ROM. - * - */ -//#define POLARSSL_AES_ROM_TABLES - -/** - * \def POLARSSL_CIPHER_MODE_CBC - * - * Enable Cipher Block Chaining mode (CBC) for symmetric ciphers. - */ -#define POLARSSL_CIPHER_MODE_CBC - -/** - * \def POLARSSL_CIPHER_MODE_CFB - * - * Enable Cipher Feedback mode (CFB) for symmetric ciphers. - */ -#define POLARSSL_CIPHER_MODE_CFB - -/** - * \def POLARSSL_CIPHER_MODE_CTR - * - * Enable Counter Block Cipher mode (CTR) for symmetric ciphers. - */ -#define POLARSSL_CIPHER_MODE_CTR - -/** - * \def POLARSSL_CIPHER_NULL_CIPHER - * - * Enable NULL cipher. - * Warning: Only do so when you know what you are doing. This allows for - * encryption or channels without any security! - * - * Requires POLARSSL_ENABLE_WEAK_CIPHERSUITES as well to enable - * the following ciphersuites: - * TLS_ECDH_ECDSA_WITH_NULL_SHA - * TLS_ECDH_RSA_WITH_NULL_SHA - * TLS_ECDHE_ECDSA_WITH_NULL_SHA - * TLS_ECDHE_RSA_WITH_NULL_SHA - * TLS_ECDHE_PSK_WITH_NULL_SHA384 - * TLS_ECDHE_PSK_WITH_NULL_SHA256 - * TLS_ECDHE_PSK_WITH_NULL_SHA - * TLS_DHE_PSK_WITH_NULL_SHA384 - * TLS_DHE_PSK_WITH_NULL_SHA256 - * TLS_DHE_PSK_WITH_NULL_SHA - * TLS_RSA_WITH_NULL_SHA256 - * TLS_RSA_WITH_NULL_SHA - * TLS_RSA_WITH_NULL_MD5 - * TLS_RSA_PSK_WITH_NULL_SHA384 - * TLS_RSA_PSK_WITH_NULL_SHA256 - * TLS_RSA_PSK_WITH_NULL_SHA - * TLS_PSK_WITH_NULL_SHA384 - * TLS_PSK_WITH_NULL_SHA256 - * TLS_PSK_WITH_NULL_SHA - * - * Uncomment this macro to enable the NULL cipher and ciphersuites - */ -//#define POLARSSL_CIPHER_NULL_CIPHER - -/** - * \def POLARSSL_CIPHER_PADDING_XXX - * - * Uncomment or comment macros to add support for specific padding modes - * in the cipher layer with cipher modes that support padding (e.g. CBC) - * - * If you disable all padding modes, only full blocks can be used with CBC. - * - * Enable padding modes in the cipher layer. - */ -#define POLARSSL_CIPHER_PADDING_PKCS7 -#define POLARSSL_CIPHER_PADDING_ONE_AND_ZEROS -#define POLARSSL_CIPHER_PADDING_ZEROS_AND_LEN -#define POLARSSL_CIPHER_PADDING_ZEROS - -/** - * \def POLARSSL_ENABLE_WEAK_CIPHERSUITES - * - * Enable weak ciphersuites in SSL / TLS. - * Warning: Only do so when you know what you are doing. This allows for - * channels with virtually no security at all! - * - * This enables the following ciphersuites: - * TLS_RSA_WITH_DES_CBC_SHA - * TLS_DHE_RSA_WITH_DES_CBC_SHA - * - * Uncomment this macro to enable weak ciphersuites - */ -//#define POLARSSL_ENABLE_WEAK_CIPHERSUITES - -/** - * \def POLARSSL_REMOVE_ARC4_CIPHERSUITES - * - * Remove RC4 ciphersuites by default in SSL / TLS. - * This flag removes the ciphersuites based on RC4 from the default list as - * returned by ssl_list_ciphersuites(). However, it is still possible to - * enable (some of) them with ssl_set_ciphersuites() by including them - * explicitly. - * - * Uncomment this macro to remove RC4 ciphersuites by default. - */ -//#define POLARSSL_REMOVE_ARC4_CIPHERSUITES - -/** - * \def POLARSSL_ECP_XXXX_ENABLED - * - * Enables specific curves within the Elliptic Curve module. - * By default all supported curves are enabled. - * - * Comment macros to disable the curve and functions for it - */ -#define POLARSSL_ECP_DP_SECP192R1_ENABLED -#define POLARSSL_ECP_DP_SECP224R1_ENABLED -#define POLARSSL_ECP_DP_SECP256R1_ENABLED -#define POLARSSL_ECP_DP_SECP384R1_ENABLED -#define POLARSSL_ECP_DP_SECP521R1_ENABLED -#define POLARSSL_ECP_DP_SECP192K1_ENABLED -#define POLARSSL_ECP_DP_SECP224K1_ENABLED -#define POLARSSL_ECP_DP_SECP256K1_ENABLED -#define POLARSSL_ECP_DP_BP256R1_ENABLED -#define POLARSSL_ECP_DP_BP384R1_ENABLED -#define POLARSSL_ECP_DP_BP512R1_ENABLED -//#define POLARSSL_ECP_DP_M221_ENABLED // Not implemented yet! -#define POLARSSL_ECP_DP_M255_ENABLED -//#define POLARSSL_ECP_DP_M383_ENABLED // Not implemented yet! -//#define POLARSSL_ECP_DP_M511_ENABLED // Not implemented yet! - -/** - * \def POLARSSL_ECP_NIST_OPTIM - * - * Enable specific 'modulo p' routines for each NIST prime. - * Depending on the prime and architecture, makes operations 4 to 8 times - * faster on the corresponding curve. - * - * Comment this macro to disable NIST curves optimisation. - */ -#define POLARSSL_ECP_NIST_OPTIM - -/** - * \def POLARSSL_ECDSA_DETERMINISTIC - * - * Enable deterministic ECDSA (RFC 6979). - * Standard ECDSA is "fragile" in the sense that lack of entropy when signing - * may result in a compromise of the long-term signing key. This is avoided by - * the deterministic variant. - * - * Requires: POLARSSL_HMAC_DRBG_C - * - * Comment this macro to disable deterministic ECDSA. - */ -#define POLARSSL_ECDSA_DETERMINISTIC - -/** - * \def POLARSSL_KEY_EXCHANGE_PSK_ENABLED - * - * Enable the PSK based ciphersuite modes in SSL / TLS. - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * TLS_PSK_WITH_AES_256_GCM_SHA384 - * TLS_PSK_WITH_AES_256_CBC_SHA384 - * TLS_PSK_WITH_AES_256_CBC_SHA - * TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 - * TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 - * TLS_PSK_WITH_AES_128_GCM_SHA256 - * TLS_PSK_WITH_AES_128_CBC_SHA256 - * TLS_PSK_WITH_AES_128_CBC_SHA - * TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_PSK_WITH_3DES_EDE_CBC_SHA - * TLS_PSK_WITH_RC4_128_SHA - */ -#define POLARSSL_KEY_EXCHANGE_PSK_ENABLED - -/** - * \def POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED - * - * Enable the DHE-PSK based ciphersuite modes in SSL / TLS. - * - * Requires: POLARSSL_DHM_C - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 - * TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 - * TLS_DHE_PSK_WITH_AES_256_CBC_SHA - * TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 - * TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 - * TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 - * TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 - * TLS_DHE_PSK_WITH_AES_128_CBC_SHA - * TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA - * TLS_DHE_PSK_WITH_RC4_128_SHA - */ -#define POLARSSL_KEY_EXCHANGE_DHE_PSK_ENABLED - -/** - * \def POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED - * - * Enable the ECDHE-PSK based ciphersuite modes in SSL / TLS. - * - * Requires: POLARSSL_ECDH_C - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 - * TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA - * TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 - * TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 - * TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA - * TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA - * TLS_ECDHE_PSK_WITH_RC4_128_SHA - */ -#define POLARSSL_KEY_EXCHANGE_ECDHE_PSK_ENABLED - -/** - * \def POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED - * - * Enable the RSA-PSK based ciphersuite modes in SSL / TLS. - * - * Requires: POLARSSL_RSA_C, POLARSSL_PKCS1_V15, - * POLARSSL_X509_CRT_PARSE_C - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 - * TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 - * TLS_RSA_PSK_WITH_AES_256_CBC_SHA - * TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 - * TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 - * TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 - * TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 - * TLS_RSA_PSK_WITH_AES_128_CBC_SHA - * TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA - * TLS_RSA_PSK_WITH_RC4_128_SHA - */ -#define POLARSSL_KEY_EXCHANGE_RSA_PSK_ENABLED - -/** - * \def POLARSSL_KEY_EXCHANGE_RSA_ENABLED - * - * Enable the RSA-only based ciphersuite modes in SSL / TLS. - * - * Requires: POLARSSL_RSA_C, POLARSSL_PKCS1_V15, - * POLARSSL_X509_CRT_PARSE_C - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * TLS_RSA_WITH_AES_256_GCM_SHA384 - * TLS_RSA_WITH_AES_256_CBC_SHA256 - * TLS_RSA_WITH_AES_256_CBC_SHA - * TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 - * TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 - * TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - * TLS_RSA_WITH_AES_128_GCM_SHA256 - * TLS_RSA_WITH_AES_128_CBC_SHA256 - * TLS_RSA_WITH_AES_128_CBC_SHA - * TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - * TLS_RSA_WITH_3DES_EDE_CBC_SHA - * TLS_RSA_WITH_RC4_128_SHA - * TLS_RSA_WITH_RC4_128_MD5 - */ -#define POLARSSL_KEY_EXCHANGE_RSA_ENABLED - -/** - * \def POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED - * - * Enable the DHE-RSA based ciphersuite modes in SSL / TLS. - * - * Requires: POLARSSL_DHM_C, POLARSSL_RSA_C, POLARSSL_PKCS1_V15, - * POLARSSL_X509_CRT_PARSE_C - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 - * TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 - * TLS_DHE_RSA_WITH_AES_256_CBC_SHA - * TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 - * TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 - * TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA - * TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 - * TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 - * TLS_DHE_RSA_WITH_AES_128_CBC_SHA - * TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA - * TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - */ -#define POLARSSL_KEY_EXCHANGE_DHE_RSA_ENABLED - -/** - * \def POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED - * - * Enable the ECDHE-RSA based ciphersuite modes in SSL / TLS. - * - * Requires: POLARSSL_ECDH_C, POLARSSL_RSA_C, POLARSSL_PKCS1_V15, - * POLARSSL_X509_CRT_PARSE_C - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - * TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 - * TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - * TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 - * TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 - * TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - * TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - * TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - * TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - * TLS_ECDHE_RSA_WITH_RC4_128_SHA - */ -#define POLARSSL_KEY_EXCHANGE_ECDHE_RSA_ENABLED - -/** - * \def POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED - * - * Enable the ECDHE-ECDSA based ciphersuite modes in SSL / TLS. - * - * Requires: POLARSSL_ECDH_C, POLARSSL_ECDSA_C, POLARSSL_X509_CRT_PARSE_C, - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 - * TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 - * TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA - * TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 - * TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 - * TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 - * TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 - * TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA - * TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA - * TLS_ECDHE_ECDSA_WITH_RC4_128_SHA - */ -#define POLARSSL_KEY_EXCHANGE_ECDHE_ECDSA_ENABLED - -/** - * \def POLARSSL_KEY_EXCHANGE_ECDH_ECDSA_ENABLED - * - * Enable the ECDH-ECDSA based ciphersuite modes in SSL / TLS. - * - * Requires: POLARSSL_ECDH_C, POLARSSL_X509_CRT_PARSE_C - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * TLS_ECDH_ECDSA_WITH_RC4_128_SHA - * TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA - * TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA - * TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA - * TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 - * TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 - * TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 - * TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 - * TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 - * TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 - */ -#define POLARSSL_KEY_EXCHANGE_ECDH_ECDSA_ENABLED - -/** - * \def POLARSSL_KEY_EXCHANGE_ECDH_RSA_ENABLED - * - * Enable the ECDH-RSA based ciphersuite modes in SSL / TLS. - * - * Requires: POLARSSL_ECDH_C, POLARSSL_X509_CRT_PARSE_C - * - * This enables the following ciphersuites (if other requisites are - * enabled as well): - * TLS_ECDH_RSA_WITH_RC4_128_SHA - * TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA - * TLS_ECDH_RSA_WITH_AES_128_CBC_SHA - * TLS_ECDH_RSA_WITH_AES_256_CBC_SHA - * TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 - * TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 - * TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 - * TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 - * TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 - * TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 - */ -#define POLARSSL_KEY_EXCHANGE_ECDH_RSA_ENABLED - -/** - * \def POLARSSL_PK_PARSE_EC_EXTENDED - * - * Enhance support for reading EC keys using variants of SEC1 not allowed by - * RFC 5915 and RFC 5480. - * - * Currently this means parsing the SpecifiedECDomain choice of EC - * parameters (only known groups are supported, not arbitrary domains, to - * avoid validation issues). - * - * Disable if you only need to support RFC 5915 + 5480 key formats. - */ -#define POLARSSL_PK_PARSE_EC_EXTENDED - -/** - * \def POLARSSL_ERROR_STRERROR_BC - * - * Make available the backward compatible error_strerror() next to the - * current polarssl_strerror(). - * - * For new code, it is recommended to use polarssl_strerror() instead and - * disable this. - * - * Disable if you run into name conflicts and want to really remove the - * error_strerror() - */ -#define POLARSSL_ERROR_STRERROR_BC - -/** - * \def POLARSSL_ERROR_STRERROR_DUMMY - * - * Enable a dummy error function to make use of polarssl_strerror() in - * third party libraries easier when POLARSSL_ERROR_C is disabled - * (no effect when POLARSSL_ERROR_C is enabled). - * - * You can safely disable this if POLARSSL_ERROR_C is enabled, or if you're - * not using polarssl_strerror() or error_strerror() in your application. - * - * Disable if you run into name conflicts and want to really remove the - * polarssl_strerror() - */ -#define POLARSSL_ERROR_STRERROR_DUMMY - -/** - * \def POLARSSL_GENPRIME - * - * Enable the prime-number generation code. - * - * Requires: POLARSSL_BIGNUM_C - */ -#define POLARSSL_GENPRIME - -/** - * \def POLARSSL_FS_IO - * - * Enable functions that use the filesystem. - */ -#define POLARSSL_FS_IO - -/** - * \def POLARSSL_NO_DEFAULT_ENTROPY_SOURCES - * - * Do not add default entropy sources. These are the platform specific, - * hardclock and HAVEGE based poll functions. - * - * This is useful to have more control over the added entropy sources in an - * application. - * - * Uncomment this macro to prevent loading of default entropy functions. - */ -//#define POLARSSL_NO_DEFAULT_ENTROPY_SOURCES - -/** - * \def POLARSSL_NO_PLATFORM_ENTROPY - * - * Do not use built-in platform entropy functions. - * This is useful if your platform does not support - * standards like the /dev/urandom or Windows CryptoAPI. - * - * Uncomment this macro to disable the built-in platform entropy functions. - */ -//#define POLARSSL_NO_PLATFORM_ENTROPY - -/** - * \def POLARSSL_ENTROPY_FORCE_SHA256 - * - * Force the entropy accumulator to use a SHA-256 accumulator instead of the - * default SHA-512 based one (if both are available). - * - * Requires: POLARSSL_SHA256_C - * - * On 32-bit systems SHA-256 can be much faster than SHA-512. Use this option - * if you have performance concerns. - * - * This option is only useful if both POLARSSL_SHA256_C and - * POLARSSL_SHA512_C are defined. Otherwise the available hash module is used. - */ -//#define POLARSSL_ENTROPY_FORCE_SHA256 - -/** - * \def POLARSSL_MEMORY_DEBUG - * - * Enable debugging of buffer allocator memory issues. Automatically prints - * (to stderr) all (fatal) messages on memory allocation issues. Enables - * function for 'debug output' of allocated memory. - * - * Requires: POLARSSL_MEMORY_BUFFER_ALLOC_C - * - * Uncomment this macro to let the buffer allocator print out error messages. - */ -//#define POLARSSL_MEMORY_DEBUG - -/** - * \def POLARSSL_MEMORY_BACKTRACE - * - * Include backtrace information with each allocated block. - * - * Requires: POLARSSL_MEMORY_BUFFER_ALLOC_C - * GLIBC-compatible backtrace() an backtrace_symbols() support - * - * Uncomment this macro to include backtrace information - */ -//#define POLARSSL_MEMORY_BACKTRACE - -/** - * \def POLARSSL_PKCS1_V15 - * - * Enable support for PKCS#1 v1.5 encoding. - * - * Requires: POLARSSL_RSA_C - * - * This enables support for PKCS#1 v1.5 operations. - */ -#define POLARSSL_PKCS1_V15 - -/** - * \def POLARSSL_PKCS1_V21 - * - * Enable support for PKCS#1 v2.1 encoding. - * - * Requires: POLARSSL_MD_C, POLARSSL_RSA_C - * - * This enables support for RSAES-OAEP and RSASSA-PSS operations. - */ -#define POLARSSL_PKCS1_V21 - -/** - * \def POLARSSL_RSA_NO_CRT - * - * Do not use the Chinese Remainder Theorem for the RSA private operation. - * - * Uncomment this macro to disable the use of CRT in RSA. - * - */ -//#define POLARSSL_RSA_NO_CRT - -/** - * \def POLARSSL_SELF_TEST - * - * Enable the checkup functions (*_self_test). - */ -#define POLARSSL_SELF_TEST - -/** - * \def POLARSSL_SSL_ALL_ALERT_MESSAGES - * - * Enable sending of alert messages in case of encountered errors as per RFC. - * If you choose not to send the alert messages, PolarSSL can still communicate - * with other servers, only debugging of failures is harder. - * - * The advantage of not sending alert messages, is that no information is given - * about reasons for failures thus preventing adversaries of gaining intel. - * - * Enable sending of all alert messages - */ -#define POLARSSL_SSL_ALERT_MESSAGES - -/** - * \def POLARSSL_SSL_DEBUG_ALL - * - * Enable the debug messages in SSL module for all issues. - * Debug messages have been disabled in some places to prevent timing - * attacks due to (unbalanced) debugging function calls. - * - * If you need all error reporting you should enable this during debugging, - * but remove this for production servers that should log as well. - * - * Uncomment this macro to report all debug messages on errors introducing - * a timing side-channel. - * - */ -//#define POLARSSL_SSL_DEBUG_ALL - -/** - * \def POLARSSL_SSL_HW_RECORD_ACCEL - * - * Enable hooking functions in SSL module for hardware acceleration of - * individual records. - * - * Uncomment this macro to enable hooking functions. - */ -//#define POLARSSL_SSL_HW_RECORD_ACCEL - -/** - * \def POLARSSL_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO - * - * Enable support for receiving and parsing SSLv2 Client Hello messages for the - * SSL Server module (POLARSSL_SSL_SRV_C). - * - * Comment this macro to disable support for SSLv2 Client Hello messages. - */ -#define POLARSSL_SSL_SRV_SUPPORT_SSLV2_CLIENT_HELLO - -/** - * \def POLARSSL_SSL_SRV_RESPECT_CLIENT_PREFERENCE - * - * Pick the ciphersuite according to the client's preferences rather than ours - * in the SSL Server module (POLARSSL_SSL_SRV_C). - * - * Uncomment this macro to respect client's ciphersuite order - */ -//#define POLARSSL_SSL_SRV_RESPECT_CLIENT_PREFERENCE - -/** - * \def POLARSSL_SSL_MAX_FRAGMENT_LENGTH - * - * Enable support for RFC 6066 max_fragment_length extension in SSL. - * - * Comment this macro to disable support for the max_fragment_length extension - */ -#define POLARSSL_SSL_MAX_FRAGMENT_LENGTH - -/** - * \def POLARSSL_SSL_PROTO_SSL3 - * - * Enable support for SSL 3.0. - * - * Requires: POLARSSL_MD5_C - * POLARSSL_SHA1_C - * - * Comment this macro to disable support for SSL 3.0 - */ -#define POLARSSL_SSL_PROTO_SSL3 - -/** - * \def POLARSSL_SSL_PROTO_TLS1 - * - * Enable support for TLS 1.0. - * - * Requires: POLARSSL_MD5_C - * POLARSSL_SHA1_C - * - * Comment this macro to disable support for TLS 1.0 - */ -#define POLARSSL_SSL_PROTO_TLS1 - -/** - * \def POLARSSL_SSL_PROTO_TLS1_1 - * - * Enable support for TLS 1.1. - * - * Requires: POLARSSL_MD5_C - * POLARSSL_SHA1_C - * - * Comment this macro to disable support for TLS 1.1 - */ -#define POLARSSL_SSL_PROTO_TLS1_1 - -/** - * \def POLARSSL_SSL_PROTO_TLS1_2 - * - * Enable support for TLS 1.2. - * - * Requires: POLARSSL_SHA1_C or POLARSSL_SHA256_C or POLARSSL_SHA512_C - * (Depends on ciphersuites) - * - * Comment this macro to disable support for TLS 1.2 - */ -#define POLARSSL_SSL_PROTO_TLS1_2 - -/** - * \def POLARSSL_SSL_ALPN - * - * Enable support for Application Layer Protocol Negotiation. - * draft-ietf-tls-applayerprotoneg-05 - * - * Comment this macro to disable support for ALPN. - */ -#define POLARSSL_SSL_ALPN - -/** - * \def POLARSSL_SSL_SESSION_TICKETS - * - * Enable support for RFC 5077 session tickets in SSL. - * - * Requires: POLARSSL_AES_C - * POLARSSL_SHA256_C - * POLARSSL_CIPHER_MODE_CBC - * - * Comment this macro to disable support for SSL session tickets - */ -#define POLARSSL_SSL_SESSION_TICKETS - -/** - * \def POLARSSL_SSL_SERVER_NAME_INDICATION - * - * Enable support for RFC 6066 server name indication (SNI) in SSL. - * - * Comment this macro to disable support for server name indication in SSL - */ -#define POLARSSL_SSL_SERVER_NAME_INDICATION - -/** - * \def POLARSSL_SSL_TRUNCATED_HMAC - * - * Enable support for RFC 6066 truncated HMAC in SSL. - * - * Comment this macro to disable support for truncated HMAC in SSL - */ -#define POLARSSL_SSL_TRUNCATED_HMAC - -/** - * \def POLARSSL_SSL_SET_CURVES - * - * Enable ssl_set_curves(). - * - * This is disabled by default since it breaks binary compatibility with the - * 1.3.x line. If you choose to enable it, you will need to rebuild your - * application against the new header files, relinking will not be enough. - * It will be enabled by default, or no longer an option, in the 1.4 branch. - * - * Uncomment to make ssl_set_curves() available. - */ -//#define POLARSSL_SSL_SET_CURVES - -/** - * \def POLARSSL_THREADING_ALT - * - * Provide your own alternate threading implementation. - * - * Requires: POLARSSL_THREADING_C - * - * Uncomment this to allow your own alternate threading implementation. - */ -//#define POLARSSL_THREADING_ALT - -/** - * \def POLARSSL_THREADING_PTHREAD - * - * Enable the pthread wrapper layer for the threading layer. - * - * Requires: POLARSSL_THREADING_C - * - * Uncomment this to enable pthread mutexes. - */ -//#define POLARSSL_THREADING_PTHREAD - -/** - * \def POLARSSL_VERSION_FEATURES - * - * Allow run-time checking of compile-time enabled features. Thus allowing users - * to check at run-time if the library is for instance compiled with threading - * support via version_check_feature(). - * - * Requires: POLARSSL_VERSION_C - * - * Comment this to disable run-time checking and save ROM space - */ -#define POLARSSL_VERSION_FEATURES - -/** - * \def POLARSSL_X509_ALLOW_EXTENSIONS_NON_V3 - * - * If set, the X509 parser will not break-off when parsing an X509 certificate - * and encountering an extension in a v1 or v2 certificate. - * - * Uncomment to prevent an error. - */ -//#define POLARSSL_X509_ALLOW_EXTENSIONS_NON_V3 - -/** - * \def POLARSSL_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION - * - * If set, the X509 parser will not break-off when parsing an X509 certificate - * and encountering an unknown critical extension. - * - * Uncomment to prevent an error. - */ -//#define POLARSSL_X509_ALLOW_UNSUPPORTED_CRITICAL_EXTENSION - -/** - * \def POLARSSL_X509_CHECK_KEY_USAGE - * - * Enable verification of the keyUsage extension (CA and leaf certificates). - * - * Disabling this avoids problems with mis-issued and/or misused - * (intermediate) CA and leaf certificates. - * - * \warning Depending on your PKI use, disabling this can be a security risk! - * - * Comment to skip keyUsage checking for both CA and leaf certificates. - */ -#define POLARSSL_X509_CHECK_KEY_USAGE - -/** - * \def POLARSSL_X509_CHECK_EXTENDED_KEY_USAGE - * - * Enable verification of the extendedKeyUsage extension (leaf certificates). - * - * Disabling this avoids problems with mis-issued and/or misused certificates. - * - * \warning Depending on your PKI use, disabling this can be a security risk! - * - * Comment to skip extendedKeyUsage checking for certificates. - */ -#define POLARSSL_X509_CHECK_EXTENDED_KEY_USAGE - -/** - * \def POLARSSL_X509_RSASSA_PSS_SUPPORT - * - * Enable parsing and verification of X.509 certificates, CRLs and CSRS - * signed with RSASSA-PSS (aka PKCS#1 v2.1). - * - * Comment this macro to disallow using RSASSA-PSS in certificates. - */ -#define POLARSSL_X509_RSASSA_PSS_SUPPORT - -/** - * \def POLARSSL_ZLIB_SUPPORT - * - * If set, the SSL/TLS module uses ZLIB to support compression and - * decompression of packet data. - * - * \warning TLS-level compression MAY REDUCE SECURITY! See for example the - * CRIME attack. Before enabling this option, you should examine with care if - * CRIME or similar exploits may be a applicable to your use case. - * - * Used in: library/ssl_tls.c - * library/ssl_cli.c - * library/ssl_srv.c - * - * This feature requires zlib library and headers to be present. - * - * Uncomment to enable use of ZLIB - */ -//#define POLARSSL_ZLIB_SUPPORT -/* \} name SECTION: PolarSSL feature support */ - -/** - * \name SECTION: PolarSSL modules - * - * This section enables or disables entire modules in PolarSSL - * \{ - */ - -/** - * \def POLARSSL_AESNI_C - * - * Enable AES-NI support on x86-64. - * - * Module: library/aesni.c - * Caller: library/aes.c - * - * Requires: POLARSSL_HAVE_ASM - * - * This modules adds support for the AES-NI instructions on x86-64 - */ -//#define POLARSSL_AESNI_C - -/** - * \def POLARSSL_AES_C - * - * Enable the AES block cipher. - * - * Module: library/aes.c - * Caller: library/ssl_tls.c - * library/pem.c - * library/ctr_drbg.c - * - * This module enables the following ciphersuites (if other requisites are - * enabled as well): - * TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA - * TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA - * TLS_ECDH_RSA_WITH_AES_128_CBC_SHA - * TLS_ECDH_RSA_WITH_AES_256_CBC_SHA - * TLS_ECDH_ECDSA_WITH_AES_128_CBC_SHA256 - * TLS_ECDH_ECDSA_WITH_AES_256_CBC_SHA384 - * TLS_ECDH_RSA_WITH_AES_128_CBC_SHA256 - * TLS_ECDH_RSA_WITH_AES_256_CBC_SHA384 - * TLS_ECDH_ECDSA_WITH_AES_128_GCM_SHA256 - * TLS_ECDH_ECDSA_WITH_AES_256_GCM_SHA384 - * TLS_ECDH_RSA_WITH_AES_128_GCM_SHA256 - * TLS_ECDH_RSA_WITH_AES_256_GCM_SHA384 - * TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384 - * TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 - * TLS_DHE_RSA_WITH_AES_256_GCM_SHA384 - * TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA384 - * TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 - * TLS_DHE_RSA_WITH_AES_256_CBC_SHA256 - * TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA - * TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA - * TLS_DHE_RSA_WITH_AES_256_CBC_SHA - * TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 - * TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 - * TLS_DHE_RSA_WITH_AES_128_GCM_SHA256 - * TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA256 - * TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 - * TLS_DHE_RSA_WITH_AES_128_CBC_SHA256 - * TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA - * TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA - * TLS_DHE_RSA_WITH_AES_128_CBC_SHA - * TLS_DHE_PSK_WITH_AES_256_GCM_SHA384 - * TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA384 - * TLS_DHE_PSK_WITH_AES_256_CBC_SHA384 - * TLS_ECDHE_PSK_WITH_AES_256_CBC_SHA - * TLS_DHE_PSK_WITH_AES_256_CBC_SHA - * TLS_DHE_PSK_WITH_AES_128_GCM_SHA256 - * TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA256 - * TLS_DHE_PSK_WITH_AES_128_CBC_SHA256 - * TLS_ECDHE_PSK_WITH_AES_128_CBC_SHA - * TLS_DHE_PSK_WITH_AES_128_CBC_SHA - * TLS_RSA_WITH_AES_256_GCM_SHA384 - * TLS_RSA_WITH_AES_256_CBC_SHA256 - * TLS_RSA_WITH_AES_256_CBC_SHA - * TLS_RSA_WITH_AES_128_GCM_SHA256 - * TLS_RSA_WITH_AES_128_CBC_SHA256 - * TLS_RSA_WITH_AES_128_CBC_SHA - * TLS_RSA_PSK_WITH_AES_256_GCM_SHA384 - * TLS_RSA_PSK_WITH_AES_256_CBC_SHA384 - * TLS_RSA_PSK_WITH_AES_256_CBC_SHA - * TLS_RSA_PSK_WITH_AES_128_GCM_SHA256 - * TLS_RSA_PSK_WITH_AES_128_CBC_SHA256 - * TLS_RSA_PSK_WITH_AES_128_CBC_SHA - * TLS_PSK_WITH_AES_256_GCM_SHA384 - * TLS_PSK_WITH_AES_256_CBC_SHA384 - * TLS_PSK_WITH_AES_256_CBC_SHA - * TLS_PSK_WITH_AES_128_GCM_SHA256 - * TLS_PSK_WITH_AES_128_CBC_SHA256 - * TLS_PSK_WITH_AES_128_CBC_SHA - * - * PEM_PARSE uses AES for decrypting encrypted keys. - */ -#define POLARSSL_AES_C - -/** - * \def POLARSSL_ARC4_C - * - * Enable the ARCFOUR stream cipher. - * - * Module: library/arc4.c - * Caller: library/ssl_tls.c - * - * This module enables the following ciphersuites (if other requisites are - * enabled as well): - * TLS_ECDH_ECDSA_WITH_RC4_128_SHA - * TLS_ECDH_RSA_WITH_RC4_128_SHA - * TLS_ECDHE_ECDSA_WITH_RC4_128_SHA - * TLS_ECDHE_RSA_WITH_RC4_128_SHA - * TLS_ECDHE_PSK_WITH_RC4_128_SHA - * TLS_DHE_PSK_WITH_RC4_128_SHA - * TLS_RSA_WITH_RC4_128_SHA - * TLS_RSA_WITH_RC4_128_MD5 - * TLS_RSA_PSK_WITH_RC4_128_SHA - * TLS_PSK_WITH_RC4_128_SHA - */ -#define POLARSSL_ARC4_C - -/** - * \def POLARSSL_ASN1_PARSE_C - * - * Enable the generic ASN1 parser. - * - * Module: library/asn1.c - * Caller: library/x509.c - * library/dhm.c - * library/pkcs12.c - * library/pkcs5.c - * library/pkparse.c - */ -#define POLARSSL_ASN1_PARSE_C - -/** - * \def POLARSSL_ASN1_WRITE_C - * - * Enable the generic ASN1 writer. - * - * Module: library/asn1write.c - * Caller: library/ecdsa.c - * library/pkwrite.c - * library/x509_create.c - * library/x509write_crt.c - * library/x509write_csr.c - */ -#define POLARSSL_ASN1_WRITE_C - -/** - * \def POLARSSL_BASE64_C - * - * Enable the Base64 module. - * - * Module: library/base64.c - * Caller: library/pem.c - * - * This module is required for PEM support (required by X.509). - */ -#define POLARSSL_BASE64_C - -/** - * \def POLARSSL_BIGNUM_C - * - * Enable the multi-precision integer library. - * - * Module: library/bignum.c - * Caller: library/dhm.c - * library/ecp.c - * library/ecdsa.c - * library/rsa.c - * library/ssl_tls.c - * - * This module is required for RSA, DHM and ECC (ECDH, ECDSA) support. - */ -#define POLARSSL_BIGNUM_C - -/** - * \def POLARSSL_BLOWFISH_C - * - * Enable the Blowfish block cipher. - * - * Module: library/blowfish.c - */ -#define POLARSSL_BLOWFISH_C - -/** - * \def POLARSSL_CAMELLIA_C - * - * Enable the Camellia block cipher. - * - * Module: library/camellia.c - * Caller: library/ssl_tls.c - * - * This module enables the following ciphersuites (if other requisites are - * enabled as well): - * TLS_ECDH_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_ECDH_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 - * TLS_ECDH_RSA_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_ECDH_RSA_WITH_CAMELLIA_256_CBC_SHA384 - * TLS_ECDH_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_ECDH_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 - * TLS_ECDH_RSA_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_ECDH_RSA_WITH_CAMELLIA_256_GCM_SHA384 - * TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_GCM_SHA384 - * TLS_ECDHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 - * TLS_DHE_RSA_WITH_CAMELLIA_256_GCM_SHA384 - * TLS_ECDHE_ECDSA_WITH_CAMELLIA_256_CBC_SHA384 - * TLS_ECDHE_RSA_WITH_CAMELLIA_256_CBC_SHA384 - * TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA256 - * TLS_DHE_RSA_WITH_CAMELLIA_256_CBC_SHA - * TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_ECDHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_DHE_RSA_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_ECDHE_ECDSA_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_ECDHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_DHE_RSA_WITH_CAMELLIA_128_CBC_SHA - * TLS_DHE_PSK_WITH_CAMELLIA_256_GCM_SHA384 - * TLS_ECDHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 - * TLS_DHE_PSK_WITH_CAMELLIA_256_CBC_SHA384 - * TLS_DHE_PSK_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_DHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_ECDHE_PSK_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_RSA_WITH_CAMELLIA_256_GCM_SHA384 - * TLS_RSA_WITH_CAMELLIA_256_CBC_SHA256 - * TLS_RSA_WITH_CAMELLIA_256_CBC_SHA - * TLS_RSA_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_RSA_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_RSA_WITH_CAMELLIA_128_CBC_SHA - * TLS_RSA_PSK_WITH_CAMELLIA_256_GCM_SHA384 - * TLS_RSA_PSK_WITH_CAMELLIA_256_CBC_SHA384 - * TLS_RSA_PSK_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_RSA_PSK_WITH_CAMELLIA_128_CBC_SHA256 - * TLS_PSK_WITH_CAMELLIA_256_GCM_SHA384 - * TLS_PSK_WITH_CAMELLIA_256_CBC_SHA384 - * TLS_PSK_WITH_CAMELLIA_128_GCM_SHA256 - * TLS_PSK_WITH_CAMELLIA_128_CBC_SHA256 - */ -#define POLARSSL_CAMELLIA_C - -/** - * \def POLARSSL_CCM_C - * - * Enable the Counter with CBC-MAC (CCM) mode for 128-bit block cipher. - * - * Module: library/ccm.c - * - * Requires: POLARSSL_AES_C or POLARSSL_CAMELLIA_C - * - * This module enables the AES-CCM ciphersuites, if other requisites are - * enabled as well. - */ -#define POLARSSL_CCM_C - -/** - * \def POLARSSL_CERTS_C - * - * Enable the test certificates. - * - * Module: library/certs.c - * Caller: - * - * Requires: POLARSSL_PEM_PARSE_C - * - * This module is used for testing (ssl_client/server). - */ -#define POLARSSL_CERTS_C - -/** - * \def POLARSSL_CIPHER_C - * - * Enable the generic cipher layer. - * - * Module: library/cipher.c - * Caller: library/ssl_tls.c - * - * Uncomment to enable generic cipher wrappers. - */ -#define POLARSSL_CIPHER_C - -/** - * \def POLARSSL_CTR_DRBG_C - * - * Enable the CTR_DRBG AES-256-based random generator. - * - * Module: library/ctr_drbg.c - * Caller: - * - * Requires: POLARSSL_AES_C - * - * This module provides the CTR_DRBG AES-256 random number generator. - */ -#define POLARSSL_CTR_DRBG_C - -/** - * \def POLARSSL_DEBUG_C - * - * Enable the debug functions. - * - * Module: library/debug.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * library/ssl_tls.c - * - * This module provides debugging functions. - */ -#define POLARSSL_DEBUG_C - -/** - * \def POLARSSL_DES_C - * - * Enable the DES block cipher. - * - * Module: library/des.c - * Caller: library/pem.c - * library/ssl_tls.c - * - * This module enables the following ciphersuites (if other requisites are - * enabled as well): - * TLS_ECDH_ECDSA_WITH_3DES_EDE_CBC_SHA - * TLS_ECDH_RSA_WITH_3DES_EDE_CBC_SHA - * TLS_ECDHE_ECDSA_WITH_3DES_EDE_CBC_SHA - * TLS_ECDHE_RSA_WITH_3DES_EDE_CBC_SHA - * TLS_DHE_RSA_WITH_3DES_EDE_CBC_SHA - * TLS_ECDHE_PSK_WITH_3DES_EDE_CBC_SHA - * TLS_DHE_PSK_WITH_3DES_EDE_CBC_SHA - * TLS_RSA_WITH_3DES_EDE_CBC_SHA - * TLS_RSA_PSK_WITH_3DES_EDE_CBC_SHA - * TLS_PSK_WITH_3DES_EDE_CBC_SHA - * - * PEM_PARSE uses DES/3DES for decrypting encrypted keys. - */ -#define POLARSSL_DES_C - -/** - * \def POLARSSL_DHM_C - * - * Enable the Diffie-Hellman-Merkle module. - * - * Module: library/dhm.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * - * This module is used by the following key exchanges: - * DHE-RSA, DHE-PSK - */ -#define POLARSSL_DHM_C - -/** - * \def POLARSSL_ECDH_C - * - * Enable the elliptic curve Diffie-Hellman library. - * - * Module: library/ecdh.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * - * This module is used by the following key exchanges: - * ECDHE-ECDSA, ECDHE-RSA, DHE-PSK - * - * Requires: POLARSSL_ECP_C - */ -#define POLARSSL_ECDH_C - -/** - * \def POLARSSL_ECDSA_C - * - * Enable the elliptic curve DSA library. - * - * Module: library/ecdsa.c - * Caller: - * - * This module is used by the following key exchanges: - * ECDHE-ECDSA - * - * Requires: POLARSSL_ECP_C, POLARSSL_ASN1_WRITE_C, POLARSSL_ASN1_PARSE_C - */ -#define POLARSSL_ECDSA_C - -/** - * \def POLARSSL_ECP_C - * - * Enable the elliptic curve over GF(p) library. - * - * Module: library/ecp.c - * Caller: library/ecdh.c - * library/ecdsa.c - * - * Requires: POLARSSL_BIGNUM_C and at least one POLARSSL_ECP_DP_XXX_ENABLED - */ -#define POLARSSL_ECP_C - -/** - * \def POLARSSL_ENTROPY_C - * - * Enable the platform-specific entropy code. - * - * Module: library/entropy.c - * Caller: - * - * Requires: POLARSSL_SHA512_C or POLARSSL_SHA256_C - * - * This module provides a generic entropy pool - */ -#define POLARSSL_ENTROPY_C - -/** - * \def POLARSSL_ERROR_C - * - * Enable error code to error string conversion. - * - * Module: library/error.c - * Caller: - * - * This module enables polarssl_strerror(). - */ -#define POLARSSL_ERROR_C - -/** - * \def POLARSSL_GCM_C - * - * Enable the Galois/Counter Mode (GCM) for AES. - * - * Module: library/gcm.c - * - * Requires: POLARSSL_AES_C or POLARSSL_CAMELLIA_C - * - * This module enables the AES-GCM and CAMELLIA-GCM ciphersuites, if other - * requisites are enabled as well. - */ -#define POLARSSL_GCM_C - -/** - * \def POLARSSL_HAVEGE_C - * - * Enable the HAVEGE random generator. - * - * Warning: the HAVEGE random generator is not suitable for virtualized - * environments - * - * Warning: the HAVEGE random generator is dependent on timing and specific - * processor traits. It is therefore not advised to use HAVEGE as - * your applications primary random generator or primary entropy pool - * input. As a secondary input to your entropy pool, it IS able add - * the (limited) extra entropy it provides. - * - * Module: library/havege.c - * Caller: - * - * Requires: POLARSSL_TIMING_C - * - * Uncomment to enable the HAVEGE random generator. - */ -//#define POLARSSL_HAVEGE_C - -/** - * \def POLARSSL_HMAC_DRBG_C - * - * Enable the HMAC_DRBG random generator. - * - * Module: library/hmac_drbg.c - * Caller: - * - * Requires: POLARSSL_MD_C - * - * Uncomment to enable the HMAC_DRBG random number geerator. - */ -#define POLARSSL_HMAC_DRBG_C - -/** - * \def POLARSSL_MD_C - * - * Enable the generic message digest layer. - * - * Module: library/md.c - * Caller: - * - * Uncomment to enable generic message digest wrappers. - */ -#define POLARSSL_MD_C - -/** - * \def POLARSSL_MD2_C - * - * Enable the MD2 hash algorithm. - * - * Module: library/md2.c - * Caller: - * - * Uncomment to enable support for (rare) MD2-signed X.509 certs. - */ -//#define POLARSSL_MD2_C - -/** - * \def POLARSSL_MD4_C - * - * Enable the MD4 hash algorithm. - * - * Module: library/md4.c - * Caller: - * - * Uncomment to enable support for (rare) MD4-signed X.509 certs. - */ -//#define POLARSSL_MD4_C - -/** - * \def POLARSSL_MD5_C - * - * Enable the MD5 hash algorithm. - * - * Module: library/md5.c - * Caller: library/md.c - * library/pem.c - * library/ssl_tls.c - * - * This module is required for SSL/TLS and X.509. - * PEM_PARSE uses MD5 for decrypting encrypted keys. - */ -#define POLARSSL_MD5_C - -/** - * \def POLARSSL_MEMORY_C - * Deprecated since 1.3.5. Please use POLARSSL_PLATFORM_MEMORY instead. - */ -//#define POLARSSL_MEMORY_C - -/** - * \def POLARSSL_MEMORY_BUFFER_ALLOC_C - * - * Enable the buffer allocator implementation that makes use of a (stack) - * based buffer to 'allocate' dynamic memory. (replaces malloc() and free() - * calls) - * - * Module: library/memory_buffer_alloc.c - * - * Requires: POLARSSL_PLATFORM_C - * POLARSSL_PLATFORM_MEMORY (to use it within PolarSSL) - * - * Enable this module to enable the buffer memory allocator. - */ -//#define POLARSSL_MEMORY_BUFFER_ALLOC_C - -/** - * \def POLARSSL_NET_C - * - * Enable the TCP/IP networking routines. - * - * Module: library/net.c - * - * This module provides TCP/IP networking routines. - */ -#define POLARSSL_NET_C - -/** - * \def POLARSSL_OID_C - * - * Enable the OID database. - * - * Module: library/oid.c - * Caller: library/asn1write.c - * library/pkcs5.c - * library/pkparse.c - * library/pkwrite.c - * library/rsa.c - * library/x509.c - * library/x509_create.c - * library/x509_crl.c - * library/x509_crt.c - * library/x509_csr.c - * library/x509write_crt.c - * library/x509write_csr.c - * - * This modules translates between OIDs and internal values. - */ -#define POLARSSL_OID_C - -/** - * \def POLARSSL_PADLOCK_C - * - * Enable VIA Padlock support on x86. - * - * Module: library/padlock.c - * Caller: library/aes.c - * - * Requires: POLARSSL_HAVE_ASM - * - * This modules adds support for the VIA PadLock on x86. - */ -//#define POLARSSL_PADLOCK_C - -/** - * \def POLARSSL_PBKDF2_C - * - * Enable PKCS#5 PBKDF2 key derivation function. - * DEPRECATED: Use POLARSSL_PKCS5_C instead - * - * Module: library/pbkdf2.c - * - * Requires: POLARSSL_PKCS5_C - * - * This module adds support for the PKCS#5 PBKDF2 key derivation function. - */ -#define POLARSSL_PBKDF2_C - -/** - * \def POLARSSL_PEM_PARSE_C - * - * Enable PEM decoding / parsing. - * - * Module: library/pem.c - * Caller: library/dhm.c - * library/pkparse.c - * library/x509_crl.c - * library/x509_crt.c - * library/x509_csr.c - * - * Requires: POLARSSL_BASE64_C - * - * This modules adds support for decoding / parsing PEM files. - */ -#define POLARSSL_PEM_PARSE_C - -/** - * \def POLARSSL_PEM_WRITE_C - * - * Enable PEM encoding / writing. - * - * Module: library/pem.c - * Caller: library/pkwrite.c - * library/x509write_crt.c - * library/x509write_csr.c - * - * Requires: POLARSSL_BASE64_C - * - * This modules adds support for encoding / writing PEM files. - */ -#define POLARSSL_PEM_WRITE_C - -/** - * \def POLARSSL_PK_C - * - * Enable the generic public (asymetric) key layer. - * - * Module: library/pk.c - * Caller: library/ssl_tls.c - * library/ssl_cli.c - * library/ssl_srv.c - * - * Requires: POLARSSL_RSA_C or POLARSSL_ECP_C - * - * Uncomment to enable generic public key wrappers. - */ -#define POLARSSL_PK_C - -/** - * \def POLARSSL_PK_PARSE_C - * - * Enable the generic public (asymetric) key parser. - * - * Module: library/pkparse.c - * Caller: library/x509_crt.c - * library/x509_csr.c - * - * Requires: POLARSSL_PK_C - * - * Uncomment to enable generic public key parse functions. - */ -#define POLARSSL_PK_PARSE_C - -/** - * \def POLARSSL_PK_WRITE_C - * - * Enable the generic public (asymetric) key writer. - * - * Module: library/pkwrite.c - * Caller: library/x509write.c - * - * Requires: POLARSSL_PK_C - * - * Uncomment to enable generic public key write functions. - */ -#define POLARSSL_PK_WRITE_C - -/** - * \def POLARSSL_PKCS5_C - * - * Enable PKCS#5 functions. - * - * Module: library/pkcs5.c - * - * Requires: POLARSSL_MD_C - * - * This module adds support for the PKCS#5 functions. - */ -#define POLARSSL_PKCS5_C - -/** - * \def POLARSSL_PKCS11_C - * - * Enable wrapper for PKCS#11 smartcard support. - * - * Module: library/pkcs11.c - * Caller: library/pk.c - * - * Requires: POLARSSL_PK_C - * - * This module enables SSL/TLS PKCS #11 smartcard support. - * Requires the presence of the PKCS#11 helper library (libpkcs11-helper) - */ -//#define POLARSSL_PKCS11_C - -/** - * \def POLARSSL_PKCS12_C - * - * Enable PKCS#12 PBE functions. - * Adds algorithms for parsing PKCS#8 encrypted private keys - * - * Module: library/pkcs12.c - * Caller: library/pkparse.c - * - * Requires: POLARSSL_ASN1_PARSE_C, POLARSSL_CIPHER_C, POLARSSL_MD_C - * Can use: POLARSSL_ARC4_C - * - * This module enables PKCS#12 functions. - */ -#define POLARSSL_PKCS12_C - -/** - * \def POLARSSL_PLATFORM_C - * - * Enable the platform abstraction layer that allows you to re-assign - * functions like malloc(), free(), printf(), fprintf() - * - * Module: library/platform.c - * Caller: Most other .c files - * - * This module enables abstraction of common (libc) functions. - */ -//#define POLARSSL_PLATFORM_C - -/** - * \def POLARSSL_RIPEMD160_C - * - * Enable the RIPEMD-160 hash algorithm. - * - * Module: library/ripemd160.c - * Caller: library/md.c - * - */ -#define POLARSSL_RIPEMD160_C - -/** - * \def POLARSSL_RSA_C - * - * Enable the RSA public-key cryptosystem. - * - * Module: library/rsa.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * library/ssl_tls.c - * library/x509.c - * - * This module is used by the following key exchanges: - * RSA, DHE-RSA, ECDHE-RSA, RSA-PSK - * - * Requires: POLARSSL_BIGNUM_C, POLARSSL_OID_C - */ -#define POLARSSL_RSA_C - -/** - * \def POLARSSL_SHA1_C - * - * Enable the SHA1 cryptographic hash algorithm. - * - * Module: library/sha1.c - * Caller: library/md.c - * library/ssl_cli.c - * library/ssl_srv.c - * library/ssl_tls.c - * library/x509write_crt.c - * - * This module is required for SSL/TLS and SHA1-signed certificates. - */ -#define POLARSSL_SHA1_C - -/** - * \def POLARSSL_SHA256_C - * - * Enable the SHA-224 and SHA-256 cryptographic hash algorithms. - * (Used to be POLARSSL_SHA2_C) - * - * Module: library/sha256.c - * Caller: library/entropy.c - * library/md.c - * library/ssl_cli.c - * library/ssl_srv.c - * library/ssl_tls.c - * - * This module adds support for SHA-224 and SHA-256. - * This module is required for the SSL/TLS 1.2 PRF function. - */ -#define POLARSSL_SHA256_C - -/** - * \def POLARSSL_SHA512_C - * - * Enable the SHA-384 and SHA-512 cryptographic hash algorithms. - * (Used to be POLARSSL_SHA4_C) - * - * Module: library/sha512.c - * Caller: library/entropy.c - * library/md.c - * library/ssl_cli.c - * library/ssl_srv.c - * - * This module adds support for SHA-384 and SHA-512. - */ -#define POLARSSL_SHA512_C - -/** - * \def POLARSSL_SSL_CACHE_C - * - * Enable simple SSL cache implementation. - * - * Module: library/ssl_cache.c - * Caller: - * - * Requires: POLARSSL_SSL_CACHE_C - */ -#define POLARSSL_SSL_CACHE_C - -/** - * \def POLARSSL_SSL_CLI_C - * - * Enable the SSL/TLS client code. - * - * Module: library/ssl_cli.c - * Caller: - * - * Requires: POLARSSL_SSL_TLS_C - * - * This module is required for SSL/TLS client support. - */ -#define POLARSSL_SSL_CLI_C - -/** - * \def POLARSSL_SSL_SRV_C - * - * Enable the SSL/TLS server code. - * - * Module: library/ssl_srv.c - * Caller: - * - * Requires: POLARSSL_SSL_TLS_C - * - * This module is required for SSL/TLS server support. - */ -#define POLARSSL_SSL_SRV_C - -/** - * \def POLARSSL_SSL_TLS_C - * - * Enable the generic SSL/TLS code. - * - * Module: library/ssl_tls.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * - * Requires: POLARSSL_CIPHER_C, POLARSSL_MD_C - * and at least one of the POLARSSL_SSL_PROTO_* defines - * - * This module is required for SSL/TLS. - */ -#define POLARSSL_SSL_TLS_C - -/** - * \def POLARSSL_THREADING_C - * - * Enable the threading abstraction layer. - * By default PolarSSL assumes it is used in a non-threaded environment or that - * contexts are not shared between threads. If you do intend to use contexts - * between threads, you will need to enable this layer to prevent race - * conditions. - * - * Module: library/threading.c - * - * This allows different threading implementations (self-implemented or - * provided). - * - * You will have to enable either POLARSSL_THREADING_ALT or - * POLARSSL_THREADING_PTHREAD. - * - * Enable this layer to allow use of mutexes within PolarSSL - */ -//#define POLARSSL_THREADING_C - -/** - * \def POLARSSL_TIMING_C - * - * Enable the portable timing interface. - * - * Module: library/timing.c - * Caller: library/havege.c - * - * This module is used by the HAVEGE random number generator. - */ -#define POLARSSL_TIMING_C - -/** - * \def POLARSSL_VERSION_C - * - * Enable run-time version information. - * - * Module: library/version.c - * - * This module provides run-time version information. - */ -#define POLARSSL_VERSION_C - -/** - * \def POLARSSL_X509_USE_C - * - * Enable X.509 core for using certificates. - * - * Module: library/x509.c - * Caller: library/x509_crl.c - * library/x509_crt.c - * library/x509_csr.c - * - * Requires: POLARSSL_ASN1_PARSE_C, POLARSSL_BIGNUM_C, POLARSSL_OID_C, - * POLARSSL_PK_PARSE_C - * - * This module is required for the X.509 parsing modules. - */ -#define POLARSSL_X509_USE_C - -/** - * \def POLARSSL_X509_CRT_PARSE_C - * - * Enable X.509 certificate parsing. - * - * Module: library/x509_crt.c - * Caller: library/ssl_cli.c - * library/ssl_srv.c - * library/ssl_tls.c - * - * Requires: POLARSSL_X509_USE_C - * - * This module is required for X.509 certificate parsing. - */ -#define POLARSSL_X509_CRT_PARSE_C - -/** - * \def POLARSSL_X509_CRL_PARSE_C - * - * Enable X.509 CRL parsing. - * - * Module: library/x509_crl.c - * Caller: library/x509_crt.c - * - * Requires: POLARSSL_X509_USE_C - * - * This module is required for X.509 CRL parsing. - */ -#define POLARSSL_X509_CRL_PARSE_C - -/** - * \def POLARSSL_X509_CSR_PARSE_C - * - * Enable X.509 Certificate Signing Request (CSR) parsing. - * - * Module: library/x509_csr.c - * Caller: library/x509_crt_write.c - * - * Requires: POLARSSL_X509_USE_C - * - * This module is used for reading X.509 certificate request. - */ -#define POLARSSL_X509_CSR_PARSE_C - -/** - * \def POLARSSL_X509_CREATE_C - * - * Enable X.509 core for creating certificates. - * - * Module: library/x509_create.c - * - * Requires: POLARSSL_BIGNUM_C, POLARSSL_OID_C, POLARSSL_PK_WRITE_C - * - * This module is the basis for creating X.509 certificates and CSRs. - */ -#define POLARSSL_X509_CREATE_C - -/** - * \def POLARSSL_X509_CRT_WRITE_C - * - * Enable creating X.509 certificates. - * - * Module: library/x509_crt_write.c - * - * Requires: POLARSSL_CREATE_C - * - * This module is required for X.509 certificate creation. - */ -#define POLARSSL_X509_CRT_WRITE_C - -/** - * \def POLARSSL_X509_CSR_WRITE_C - * - * Enable creating X.509 Certificate Signing Requests (CSR). - * - * Module: library/x509_csr_write.c - * - * Requires: POLARSSL_CREATE_C - * - * This module is required for X.509 certificate request writing. - */ -#define POLARSSL_X509_CSR_WRITE_C - -/** - * \def POLARSSL_XTEA_C - * - * Enable the XTEA block cipher. - * - * Module: library/xtea.c - * Caller: - */ -#define POLARSSL_XTEA_C - -/* \} name SECTION: PolarSSL modules */ - -/** - * \name SECTION: Module configuration options - * - * This section allows for the setting of module specific sizes and - * configuration options. The default values are already present in the - * relevant header files and should suffice for the regular use cases. - * - * Our advice is to enable options and change their values here - * only if you have a good reason and know the consequences. - * - * Please check the respective header file for documentation on these - * parameters (to prevent duplicate documentation). - * \{ - */ - -/* MPI / BIGNUM options */ -//#define POLARSSL_MPI_WINDOW_SIZE 6 /**< Maximum windows size used. */ -//#define POLARSSL_MPI_MAX_SIZE 1024 /**< Maximum number of bytes for usable MPIs. */ - -/* CTR_DRBG options */ -//#define CTR_DRBG_ENTROPY_LEN 48 /**< Amount of entropy used per seed by default (48 with SHA-512, 32 with SHA-256) */ -//#define CTR_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */ -//#define CTR_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */ -//#define CTR_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */ -//#define CTR_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */ - -/* HMAC_DRBG options */ -//#define POLARSSL_HMAC_DRBG_RESEED_INTERVAL 10000 /**< Interval before reseed is performed by default */ -//#define POLARSSL_HMAC_DRBG_MAX_INPUT 256 /**< Maximum number of additional input bytes */ -//#define POLARSSL_HMAC_DRBG_MAX_REQUEST 1024 /**< Maximum number of requested bytes per call */ -//#define POLARSSL_HMAC_DRBG_MAX_SEED_INPUT 384 /**< Maximum size of (re)seed buffer */ - -/* ECP options */ -//#define POLARSSL_ECP_MAX_BITS 521 /**< Maximum bit size of groups */ -//#define POLARSSL_ECP_WINDOW_SIZE 6 /**< Maximum window size used */ -//#define POLARSSL_ECP_FIXED_POINT_OPTIM 1 /**< Enable fixed-point speed-up */ - -/* Entropy options */ -//#define ENTROPY_MAX_SOURCES 20 /**< Maximum number of sources supported */ -//#define ENTROPY_MAX_GATHER 128 /**< Maximum amount requested from entropy sources */ - -/* Memory buffer allocator options */ -//#define POLARSSL_MEMORY_ALIGN_MULTIPLE 4 /**< Align on multiples of this value */ - -/* Platform options */ -//#define POLARSSL_PLATFORM_STD_MEM_HDR <stdlib.h> /**< Header to include if POLARSSL_PLATFORM_NO_STD_FUNCTIONS is defined. Don't define if no header is needed. */ -//#define POLARSSL_PLATFORM_STD_MALLOC malloc /**< Default allocator to use, can be undefined */ -//#define POLARSSL_PLATFORM_STD_FREE free /**< Default free to use, can be undefined */ -//#define POLARSSL_PLATFORM_STD_PRINTF printf /**< Default printf to use, can be undefined */ -//#define POLARSSL_PLATFORM_STD_FPRINTF fprintf /**< Default fprintf to use, can be undefined */ - -/* SSL Cache options */ -//#define SSL_CACHE_DEFAULT_TIMEOUT 86400 /**< 1 day */ -//#define SSL_CACHE_DEFAULT_MAX_ENTRIES 50 /**< Maximum entries in cache */ - -/* SSL options */ -//#define SSL_MAX_CONTENT_LEN 16384 /**< Size of the input / output buffer */ -//#define SSL_DEFAULT_TICKET_LIFETIME 86400 /**< Lifetime of session tickets (if enabled) */ -//#define POLARSSL_PSK_MAX_LEN 32 /**< Max size of TLS pre-shared keys, in bytes (default 256 bits) */ - -/** - * Complete list of ciphersuites to use, in order of preference. - * - * \warning No dependency checking is done on that field! This option can only - * be used to restrict the set of available ciphersuites. It is your - * responsibility to make sure the needed modules are active. - * - * Use this to save a few hundred bytes of ROM (default ordering of all - * available ciphersuites) and a few to a few hundred bytes of RAM. - * - * The value below is only an example, not the default. - */ -//#define SSL_CIPHERSUITES TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384,TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256 - -/* Debug options */ -//#define POLARSSL_DEBUG_DFL_MODE POLARSSL_DEBUG_LOG_FULL /**< Default log: Full or Raw */ - -/* \} name SECTION: Module configuration options */ - - -#endif /* POLARSSL_CONFIG_H */ From 79f3cec717301e0ba9ee89a9cc0b41df677b06ce Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 25 May 2020 02:30:00 +0200 Subject: [PATCH 142/527] use system zlib if available (client only) --- CHANGELOG.md | 1 + client/Makefile | 15 +++++++++++++++ doc/md/Development/Maintainers.md | 2 ++ 3 files changed, 18 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index d9d62254f..fdb0b7c05 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac - Change, use system Lua library if available (@doegox) - Change, use system Jansson library if available (@doegox) - Change, use system Whereami library if available (@doegox) + - Change, use system Zlib library if available (@doegox) - Fix release version information (@doegox) ## [ice coffee.4.9237][2020-05-21] diff --git a/client/Makefile b/client/Makefile index 59c08f144..c1713e74c 100644 --- a/client/Makefile +++ b/client/Makefile @@ -165,6 +165,15 @@ INCLUDES += $(WAILIBINC) ## Zlib # system library useable? Need to recompress hardnested tables? +ifneq ($(SKIPZLIBSYSTEM),1) + ZLIBINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags zlib 2>/dev/null) + ZLIBLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs zlib 2>/dev/null) + ifneq ($(ZLIBLDLIBS),) + ZLIB = $(ZLIBLDLIBS) + ZLIBINC = $(ZLIBINCLUDES) + ZLIB_FOUND = 1 + endif +endif LDLIBS +=$(ZLIB) INCLUDES += $(ZLIBINC) @@ -328,6 +337,10 @@ ifeq ($(WAI_FOUND),1) $(info Whereami library: system library found) endif +ifeq ($(ZLIB_FOUND),1) + $(info Zlib library: system library found) +endif + $(info compiler version: $(shell $(CC) --version|head -n 1)) $(info ===================================================================) @@ -622,8 +635,10 @@ mbedtls: $(Q)$(MAKE) --no-print-directory -C $(MBEDTLSLIBPATH) OBJDIR=$(ROOT_DIR)$(OBJDIR) BINDIR=$(ROOT_DIR)$(OBJDIR) all zlib: +ifneq ($(ZLIB_FOUND),1) $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C $(ZLIBPATH) OBJDIR=$(ROOT_DIR)$(OBJDIR) BINDIR=$(ROOT_DIR)$(OBJDIR) all +endif ######## # misc # diff --git a/doc/md/Development/Maintainers.md b/doc/md/Development/Maintainers.md index 5d1400a7f..0ea33b924 100644 --- a/doc/md/Development/Maintainers.md +++ b/doc/md/Development/Maintainers.md @@ -62,7 +62,9 @@ It's also possible to skip parts even if libraries are present in the compilatio * `make client SKIPQT=1` to skip GUI even if Qt is present * `make client SKIPBT=1` to skip native Bluetooth support even if libbluetooth is present * `make client SKIPLUASYSTEM=1` to skip system Lua lib even if liblua5.2 is present, use embedded Lua lib instead +* `make client SKIPJANSSONSYSTEM=1` to skip system Jansson lib even if libjansson is present, use embedded Jansson lib instead * `make client SKIPWHEREAMISYSTEM=1` to skip system Whereami lib even if libwhereami is present, use embedded whereami lib instead +* `make client SKIPZLIBSYSTEM=1` to skip system Zlib even if libz is present, use embedded Zlib instead If you're cross-compiling, these ones might be useful: From 68da06f721f0f907c2582e6f58be959f29b87ea2 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 25 May 2020 10:15:51 +0200 Subject: [PATCH 143/527] makefile reorder --- client/Makefile | 93 ++++++++++++++++++++++++------------------------- 1 file changed, 46 insertions(+), 47 deletions(-) diff --git a/client/Makefile b/client/Makefile index c1713e74c..c97cd6181 100644 --- a/client/Makefile +++ b/client/Makefile @@ -32,11 +32,6 @@ AMIIBOLIBPATH = ./deps/amiitool AMIIBOLIBINC = -I$(AMIIBOLIBPATH) AMIIBOLIB = $(AMIIBOLIBPATH)/libamiibo.a -## Tinycbor -CBORLIBPATH = ./deps/tinycbor -CBORLIBINC = -I$(CBORLIBPATH) -CBORLIB = $(CBORLIBPATH)/tinycbor.a - ## Cliparser / Argtable3 CLIPARSERLIBPATH = ./deps/cliparser CLIPARSERLIBINC = -I$(CLIPARSERLIBPATH) @@ -73,6 +68,11 @@ REVENGLIBPATH = ./deps/reveng REVENGLIBINC = -I$(REVENGLIBPATH) REVENGLIB = $(REVENGLIBPATH)/libreveng.a +## Tinycbor +TINYCBORLIBPATH = ./deps/tinycbor +TINYCBORLIBINC = -I$(TINYCBORLIBPATH) +TINYCBORLIB = $(TINYCBORLIBPATH)/tinycbor.a + ## Whereami WAILIBPATH = ./deps/whereami WAILIBINC = -I$(WAILIBPATH) @@ -101,11 +101,6 @@ ZLIB = $(OBJDIR)/libz.a LDLIBS += $(AMIIBOLIB) INCLUDES += $(AMIIBOLIBINC) -## Tinycbor -# not distributed as system library -LDLIBS += $(CBORLIB) -INCLUDES += $(CBORLIBINC) - ## Cliparser / Argtable3 # not distributed as system library LDLIBS += $(CLIPARSERLIB) @@ -152,6 +147,11 @@ INCLUDES += $(MBEDTLSLIBINC) LDLIBS += $(REVENGLIB) INCLUDES += $(REVENGLIBINC) +## Tinycbor +# not distributed as system library +LDLIBS += $(TINYCBORLIB) +INCLUDES += $(TINYCBORLIBINC) + ## Whereami ifneq ($(SKIPWHEREAMISYSTEM),1) ifneq (,$(wildcard /usr/include/whereami.h)) @@ -524,7 +524,7 @@ all: $(BINS) all-static: LDLIBS:=-static $(LDLIBS) all-static: $(BINS) -proxmark3: $(OBJS) liblua jansson tinycbor reveng mbedtls zlib amiibo hardnested cliparser whereami lualibs/pm3_cmd.lua lualibs/mfc_default_keys.lua +proxmark3: $(OBJS) amiibo cliparser jansson hardnested lua mbedtls reveng tinycbor whereami zlib lualibs/pm3_cmd.lua lualibs/mfc_default_keys.lua $(info [=] LD $@) $(Q)$(LD) $(PM3LDFLAGS) $(OBJS) $(LDLIBS) -o $@ @@ -549,17 +549,17 @@ lualibs/mfc_default_keys.lua : mfc_default_keys.dic clean: $(Q)$(RM) $(CLEAN) $(Q)$(RMDIR) $(OBJDIR) - $(Q)$(MAKE) --no-print-directory -C $(LUALIBPATH) clean - $(Q)$(MAKE) --no-print-directory -C $(JANSSONLIBPATH) clean - $(Q)$(MAKE) --no-print-directory -C $(CBORLIBPATH) clean - $(Q)$(MAKE) --no-print-directory -C $(REVENGLIBPATH) clean $(Q)$(MAKE) --no-print-directory -C $(AMIIBOLIBPATH) clean - $(Q)$(MAKE) --no-print-directory -C $(HARDNESTEDLIBPATH) clean $(Q)$(MAKE) --no-print-directory -C $(CLIPARSERLIBPATH) clean + $(Q)$(MAKE) --no-print-directory -C $(HARDNESTEDLIBPATH) clean + $(Q)$(MAKE) --no-print-directory -C $(JANSSONLIBPATH) clean + $(Q)$(MAKE) --no-print-directory -C $(LUALIBPATH) clean + $(Q)$(MAKE) --no-print-directory -C $(REVENGLIBPATH) clean + $(Q)$(MAKE) --no-print-directory -C $(TINYCBORLIBPATH) clean $(Q)$(MAKE) --no-print-directory -C $(WAILIBPATH) clean @# Just in case someone compiled within these dirs: - $(Q)$(MAKE) --no-print-directory -C $(ZLIBPATH) clean $(Q)$(MAKE) --no-print-directory -C $(MBEDTLSLIBPATH) clean + $(Q)$(MAKE) --no-print-directory -C $(ZLIBPATH) clean install: all $(info [@] Installing client to $(DESTDIR)$(PREFIX)...) @@ -591,30 +591,6 @@ tarbin: $(BINS) # local libraries targets # ########################### -liblua: -ifneq ($(LUA_FOUND),1) - $(info [*] MAKE $@ for $(LUAPLATFORM)) - $(Q)$(MAKE) --no-print-directory -C $(LUALIBPATH) $(LUAPLATFORM) -endif - -jansson: -ifneq ($(JANSSON_FOUND),1) - $(info [*] MAKE $@) - $(Q)$(MAKE) --no-print-directory -C $(JANSSONLIBPATH) all -endif - -tinycbor: - $(info [*] MAKE $@) - $(Q)$(MAKE) --no-print-directory -C $(CBORLIBPATH) all - -reveng: - $(info [*] MAKE $@) - $(Q)$(MAKE) --no-print-directory -C $(REVENGLIBPATH) all - -hardnested: - $(info [*] MAKE $@) - $(Q)$(MAKE) --no-print-directory -C $(HARDNESTEDLIBPATH) all - amiibo: $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C $(AMIIBOLIBPATH) all @@ -623,17 +599,40 @@ cliparser: $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C $(CLIPARSERLIBPATH) all +hardnested: + $(info [*] MAKE $@) + $(Q)$(MAKE) --no-print-directory -C $(HARDNESTEDLIBPATH) all + +jansson: +ifneq ($(JANSSON_FOUND),1) + $(info [*] MAKE $@) + $(Q)$(MAKE) --no-print-directory -C $(JANSSONLIBPATH) all +endif + +lua: +ifneq ($(LUA_FOUND),1) + $(info [*] MAKE $@ for $(LUAPLATFORM)) + $(Q)$(MAKE) --no-print-directory -C $(LUALIBPATH) $(LUAPLATFORM) +endif + +mbedtls: + $(info [*] MAKE $@) + $(Q)$(MAKE) --no-print-directory -C $(MBEDTLSLIBPATH) OBJDIR=$(ROOT_DIR)$(OBJDIR) BINDIR=$(ROOT_DIR)$(OBJDIR) all + +reveng: + $(info [*] MAKE $@) + $(Q)$(MAKE) --no-print-directory -C $(REVENGLIBPATH) all + +tinycbor: + $(info [*] MAKE $@) + $(Q)$(MAKE) --no-print-directory -C $(TINYCBORLIBPATH) all + whereami: ifneq ($(WAI_FOUND),1) $(info [*] MAKE $@) $(Q)$(MAKE) --no-print-directory -C $(WAILIBPATH) all endif -# common libraries: -mbedtls: - $(info [*] MAKE $@) - $(Q)$(MAKE) --no-print-directory -C $(MBEDTLSLIBPATH) OBJDIR=$(ROOT_DIR)$(OBJDIR) BINDIR=$(ROOT_DIR)$(OBJDIR) all - zlib: ifneq ($(ZLIB_FOUND),1) $(info [*] MAKE $@) @@ -644,7 +643,7 @@ endif # misc # ######## -.PHONY: all clean install uninstall tarbin liblua jansson tinycbor reveng hardnested amiibo cliparser whereami mbedtls zlib +.PHONY: all clean install uninstall tarbin amiibo cliparser hardnested jansson lua mbedtls reveng tinycbor whereami zlib # version.c should be remade on every compilation src/version.c: default_version.c From fc2ff7bb0affdfa122954a5f3ac73b3ad0bd6b02 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 25 May 2020 13:05:44 +0200 Subject: [PATCH 144/527] Makefile: remove /usr/local/lib --- client/Makefile | 2 -- 1 file changed, 2 deletions(-) diff --git a/client/Makefile b/client/Makefile index c97cd6181..ab109714b 100644 --- a/client/Makefile +++ b/client/Makefile @@ -16,8 +16,6 @@ VPATH = ../common src vpath %.dic dictionaries OBJDIR = obj -LDLIBS ?= -L/usr/local/lib - ifeq ($(platform),Darwin) # cf brew info qt: qt not symlinked anymore PKG_CONFIG_ENV := PKG_CONFIG_PATH=/usr/local/opt/qt/lib/pkgconfig From 162b7b58dff473e846d7bb0398642c6f78d4fe5c Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 25 May 2020 13:11:44 +0200 Subject: [PATCH 145/527] Makefile: more info --- client/Makefile | 82 ++++++++++++++++++++++++++++++++----------------- 1 file changed, 54 insertions(+), 28 deletions(-) diff --git a/client/Makefile b/client/Makefile index ab109714b..35adc71eb 100644 --- a/client/Makefile +++ b/client/Makefile @@ -72,9 +72,9 @@ TINYCBORLIBINC = -I$(TINYCBORLIBPATH) TINYCBORLIB = $(TINYCBORLIBPATH)/tinycbor.a ## Whereami -WAILIBPATH = ./deps/whereami -WAILIBINC = -I$(WAILIBPATH) -WAILIB = $(WAILIBPATH)/libwhereami.a +WHEREAMILIBPATH = ./deps/whereami +WHEREAMILIBINC = -I$(WHEREAMILIBPATH) +WHEREAMILIB = $(WHEREAMILIBPATH)/libwhereami.a ########################## # common local libraries # @@ -153,13 +153,13 @@ INCLUDES += $(TINYCBORLIBINC) ## Whereami ifneq ($(SKIPWHEREAMISYSTEM),1) ifneq (,$(wildcard /usr/include/whereami.h)) - WAILIB = -lwhereami - WAILIBINC = - WAI_FOUND = 1 + WHEREAMILIB = -lwhereami + WHEREAMILIBINC = + WHEREAMI_FOUND = 1 endif endif -LDLIBS += $(WAILIB) -INCLUDES += $(WAILIBINC) +LDLIBS += $(WHEREAMILIB) +INCLUDES += $(WHEREAMILIBINC) ## Zlib # system library useable? Need to recompress hardnested tables? @@ -305,38 +305,64 @@ $(info Client platform: $(platform)) ifeq ($(SKIPQT),1) $(info GUI support: skipped) -else ifeq ($(QT_FOUND),1) - ifeq ($(QT5_FOUND),1) - $(info GUI support: QT5 found, enabled) - else - $(info GUI support: QT4 found, enabled) - endif else - $(info GUI support: QT not found, disabled) + ifeq ($(QT_FOUND),1) + ifeq ($(QT5_FOUND),1) + $(info GUI support: QT5 found, enabled) + else + $(info GUI support: QT4 found, enabled) + endif + else + $(info GUI support: QT not found, disabled) + endif endif ifeq ($(SKIPBT),1) $(info native BT support: skipped) -else ifneq ($(BTLDLIBS),) - $(info native BT support: Bluez found, enabled) else - $(info native BT support: Bluez not found, disabled) + ifeq ($(BT_FOUND),1) + $(info native BT support: Bluez found, enabled) + else + $(info native BT support: Bluez not found, disabled) + endif endif -ifeq ($(JANSSON_FOUND),1) +ifeq ($(SKIPJANSSONSYSTEM),1) + $(info Jansson library: local library forced) +else ifeq ($(JANSSON_FOUND),1) $(info Jansson library: system library found) +else + $(info Jansson library: system library not found, using local library) endif -ifeq ($(LUA_FOUND),1) - $(info Lua library: system library found) +ifeq ($(SKIPLUASYSTEM),1) + $(info Lua library: local library forced) +else + ifeq ($(LUA_FOUND),1) + $(info Lua library: system library found) + else + $(info Lua library: system library not found, using local library) + endif endif -ifeq ($(WAI_FOUND),1) - $(info Whereami library: system library found) +ifeq ($(SKIPWHEREAMISYSTEM),1) + $(info Whereami library: local library forced) +else + ifeq ($(WHEREAMI_FOUND),1) + $(info Whereami library: system library found) + else + $(info Whereami library: system library not found, using local library) + endif endif -ifeq ($(ZLIB_FOUND),1) - $(info Zlib library: system library found) +ifeq ($(SKIPZLIBSYSTEM),1) + $(info Zlib library: local library forced) +else + ifeq ($(ZLIB_FOUND),1) + $(info Zlib library: system library found) + else + $(info Zlib library: system library not found, using local library) + endif endif $(info compiler version: $(shell $(CC) --version|head -n 1)) @@ -554,7 +580,7 @@ clean: $(Q)$(MAKE) --no-print-directory -C $(LUALIBPATH) clean $(Q)$(MAKE) --no-print-directory -C $(REVENGLIBPATH) clean $(Q)$(MAKE) --no-print-directory -C $(TINYCBORLIBPATH) clean - $(Q)$(MAKE) --no-print-directory -C $(WAILIBPATH) clean + $(Q)$(MAKE) --no-print-directory -C $(WHEREAMILIBPATH) clean @# Just in case someone compiled within these dirs: $(Q)$(MAKE) --no-print-directory -C $(MBEDTLSLIBPATH) clean $(Q)$(MAKE) --no-print-directory -C $(ZLIBPATH) clean @@ -626,9 +652,9 @@ tinycbor: $(Q)$(MAKE) --no-print-directory -C $(TINYCBORLIBPATH) all whereami: -ifneq ($(WAI_FOUND),1) +ifneq ($(WHEREAMI_FOUND),1) $(info [*] MAKE $@) - $(Q)$(MAKE) --no-print-directory -C $(WAILIBPATH) all + $(Q)$(MAKE) --no-print-directory -C $(WHEREAMILIBPATH) all endif zlib: From b3ff89e41ed08c5cebd88c39a6fe30be1060e41c Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 10:57:11 +0200 Subject: [PATCH 146/527] sign-compare --- client/src/aidsearch.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/aidsearch.c b/client/src/aidsearch.c index 291d2035c..7361442b0 100644 --- a/client/src/aidsearch.c +++ b/client/src/aidsearch.c @@ -122,8 +122,8 @@ int PrintAIDDescription(json_t *xroot, char *aid, bool verbose) { goto out; json_t *elm = NULL; - int maxaidlen = 0; - for (int elmindx = 0; elmindx < json_array_size(root); elmindx++) { + uint32_t maxaidlen = 0; + for (uint32_t elmindx = 0; elmindx < json_array_size(root); elmindx++) { json_t *data = AIDSearchGetElm(root, elmindx); if (data == NULL) continue; From e95f8072517acf4fff0b4bfe3ba4b2754cf84a56 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 10:59:12 +0200 Subject: [PATCH 147/527] sign-compare --- client/src/cmddata.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 55fac1d0b..5aba8e537 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -1624,7 +1624,7 @@ int getSamples(uint32_t n, bool verbose) { if (verbose) PrintAndLogEx(INFO, "Unpacking..."); BitstreamOut bout = { got, bits_per_sample * n, 0}; - int j = 0; + uint32_t j = 0; for (j = 0; j * bits_per_sample < n * 8 && j < n; j++) { uint8_t sample = getByte(bits_per_sample, &bout); GraphBuffer[j] = ((int) sample) - 127; @@ -1634,7 +1634,7 @@ int getSamples(uint32_t n, bool verbose) { if (verbose) PrintAndLogEx(INFO, "Unpacked %d samples", j); } else { - for (int j = 0; j < n; j++) { + for (uint32_t j = 0; j < n; j++) { GraphBuffer[j] = ((int)got[j]) - 127; } GraphTraceLen = n; From 26e8a5a1e051bae20845d92487d6af310d50ce09 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 11:29:44 +0200 Subject: [PATCH 148/527] added check for systemlib python3 in makefile --- client/Makefile | 23 ++++++++++++++++++++++- 1 file changed, 22 insertions(+), 1 deletion(-) diff --git a/client/Makefile b/client/Makefile index 35adc71eb..adc07c88b 100644 --- a/client/Makefile +++ b/client/Makefile @@ -10,7 +10,7 @@ ROOT_DIR:=$(dir $(realpath $(lastword $(MAKEFILE_LIST)))) include ../Makefile.defs INSTALLBIN = proxmark3 -INSTALLSHARE = cmdscripts lualibs luascripts resources dictionaries +INSTALLSHARE = cmdscripts lualibs luascripts pyscripts resources dictionaries VPATH = ../common src vpath %.dic dictionaries @@ -135,6 +135,18 @@ endif LDLIBS += $(LUALIB) INCLUDES += $(LUALIBINC) +## Python3 +#PYTHON_CONFIG := python3-config +PYTHONINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags python3 2>/dev/null) +PYTHONLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs python3 2>/dev/null) +ifneq ($(PYTHONLDLIBS),) + PYTHONLIB = $(PYTHONLDLIBS) + PYTHONLIBINC = $(PYTHONINCLUDES) + PYTHON_FOUND = 1 +endif +LDLIBS += $(PYTHONLIB) +INCLUDES += $(PYTHONLIBINC) + ## mbed TLS # system library cannot be used because it is compiled by default without CMAC support LDLIBS +=$(MBEDTLSLIB) @@ -256,6 +268,9 @@ endif LDLIBS += $(QTLDLIBS) CXXINCLUDES += $(QTINCLUDES) +## Python + + ####################################################################################################### CFLAGS ?= $(DEFCFLAGS) # We cannot just use CFLAGS+=... because it has impact on sub-makes if CFLAGS is defined in env: @@ -345,6 +360,12 @@ else endif endif +ifeq ($(PYTHON_FOUND),1) + $(info Python library: system library found) +else + $(info Python library: system library not found, disabled) +endif + ifeq ($(SKIPWHEREAMISYSTEM),1) $(info Whereami library: local library forced) else From 06927f983a3f20bfc2c5e6a120c0ec659eda1ce2 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 11:30:17 +0200 Subject: [PATCH 149/527] added python3 as script engine, if installed on system --- client/src/cmdscript.c | 113 ++++++++++++++++++++++++++++++++++++++--- 1 file changed, 106 insertions(+), 7 deletions(-) diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index 4f4a372d8..b2ad53f50 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -7,10 +7,17 @@ //----------------------------------------------------------------------------- // Some lua scripting glue to proxmark core. //----------------------------------------------------------------------------- +// 2020, added Python support (@iceman100) + #include <stdlib.h> #include <string.h> +#define PY_SSIZE_T_CLEAN +#include <Python.h> +#include <wchar.h> + + #include "cmdparser.h" // command_t #include "scripting.h" #include "comms.h" @@ -24,6 +31,12 @@ #include "ui.h" #include "fileutils.h" +typedef enum { + PM3_LUA, + PM3_CMD, + PM3_PY +} pm3_scriptfile_t; + static int CmdHelp(const char *Cmd); /** @@ -36,7 +49,12 @@ static int CmdScriptList(const char *Cmd) { int ret = searchAndList(LUA_SCRIPTS_SUBDIR, ".lua"); if (ret != PM3_SUCCESS) return ret; - return searchAndList(CMD_SCRIPTS_SUBDIR, ".cmd"); + + ret = searchAndList(CMD_SCRIPTS_SUBDIR, ".cmd"); + if (ret != PM3_SUCCESS) + return ret; + + return searchAndList(PYTHON_SCRIPTS_SUBDIR, ".py"); } /** @@ -54,9 +72,18 @@ static int CmdScriptRun(const char *Cmd) { int arg_len = 0; static uint8_t luascriptfile_idx = 0; sscanf(Cmd, "%127s%n %255[^\n\r]%n", preferredName, &name_len, arguments, &arg_len); - + + char *extension_chk; + extension_chk = str_dup(preferredName); + str_lower(extension_chk); + pm3_scriptfile_t ext = PM3_LUA; + if (str_endswith(preferredName, ".cmd")) + ext = PM3_CMD; + if (str_endswith(preferredName, ".py")) + ext = PM3_PY; + char *script_path = NULL; - if ((!str_endswith(preferredName, ".cmd")) && (searchFile(&script_path, LUA_SCRIPTS_SUBDIR, preferredName, ".lua", true) == PM3_SUCCESS)) { + if ((ext == PM3_LUA) && (searchFile(&script_path, LUA_SCRIPTS_SUBDIR, preferredName, ".lua", true) == PM3_SUCCESS)) { int error; if (luascriptfile_idx == MAX_NESTED_LUASCRIPT) { PrintAndLogEx(ERR, "too many nested scripts, skipping %s\n", script_path); @@ -112,7 +139,7 @@ static int CmdScriptRun(const char *Cmd) { return PM3_SUCCESS; } - if ((!str_endswith(preferredName, ".lua")) && (searchFile(&script_path, CMD_SCRIPTS_SUBDIR, preferredName, ".cmd", true) == PM3_SUCCESS)) { + if ((ext == PM3_CMD) && (searchFile(&script_path, CMD_SCRIPTS_SUBDIR, preferredName, ".cmd", true) == PM3_SUCCESS)) { PrintAndLogEx(SUCCESS, "executing Cmd " _YELLOW_("%s"), script_path); PrintAndLogEx(SUCCESS, "args " _YELLOW_("'%s'"), arguments); @@ -123,11 +150,83 @@ static int CmdScriptRun(const char *Cmd) { free(script_path); return ret; } + + /* + + For apt (Ubuntu, Debian...): + sudo apt-get install python3-dev # for python3.x installs + + For yum (CentOS, RHEL...): + sudo yum install python3-devel # for python3.x installs + + For dnf (Fedora...): + sudo dnf install python3-devel # for python3.x installs + + For zypper (openSUSE...): + sudo zypper in python3-devel # for python3.x installs + + For apk (Alpine...): + + # This is a departure from the normal Alpine naming + # scheme, which uses py2- and py3- prefixes + + sudo apk add python3-dev # for python3.x installs + + For apt-cyg (Cygwin...): + apt-cyg install python3-devel # for python3.x installs + + */ + + if ((ext == PM3_PY) && (searchFile(&script_path, PYTHON_SCRIPTS_SUBDIR, preferredName, ".py", true) == PM3_SUCCESS)) { + + PrintAndLogEx(SUCCESS, "executing python s " _YELLOW_("%s"), script_path); + PrintAndLogEx(SUCCESS, "args " _YELLOW_("'%s'"), arguments); + + wchar_t *program = Py_DecodeLocale(script_path, NULL); + if (program == NULL) { + PrintAndLogEx(ERR, "could not decode " _YELLOW_("%s"), script_path); + free(script_path); + return PM3_ESOFT; + } + + // optional but recommended + Py_SetProgramName(program); + Py_Initialize(); +// PySys_SetArgv(arguments, script_path); // we dont have argc , argv here + + FILE *f = fopen(script_path, "r"); + if (f == NULL) { + PrintAndLogEx(ERR, "could not decode " _YELLOW_("%s"), script_path); + free(script_path); + return PM3_ESOFT; + } + + PyRun_SimpleFile(f, script_path); + + fclose(f); + + if (Py_FinalizeEx() < 0) { + free(script_path); + return PM3_ESOFT; + } + + PyMem_RawFree(program); + free(script_path); + PrintAndLogEx(SUCCESS, "\nfinished " _YELLOW_("%s"), preferredName); + return PM3_SUCCESS; + } // file not found, let's search again to display the error messages int ret = PM3_EUNDEF; - if (!str_endswith(preferredName, ".cmd")) ret = searchFile(&script_path, LUA_SCRIPTS_SUBDIR, preferredName, ".lua", false); - if (!str_endswith(preferredName, ".lua")) ret = searchFile(&script_path, CMD_SCRIPTS_SUBDIR, preferredName, ".cmd", false); + if (ext == PM3_LUA) + ret = searchFile(&script_path, LUA_SCRIPTS_SUBDIR, preferredName, ".lua", false); + + if (ext == PM3_CMD) + ret = searchFile(&script_path, CMD_SCRIPTS_SUBDIR, preferredName, ".cmd", false); + + if (ext == PM3_PY) + ret = searchFile(&script_path, PYTHON_SCRIPTS_SUBDIR, preferredName, ".py", false); + free(script_path); return ret; } @@ -135,7 +234,7 @@ static int CmdScriptRun(const char *Cmd) { static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, {"list", CmdScriptList, AlwaysAvailable, "List available scripts"}, - {"run", CmdScriptRun, AlwaysAvailable, "<name> -- Execute a script"}, + {"run", CmdScriptRun, AlwaysAvailable, "<name> -- execute a script"}, {NULL, NULL, NULL, NULL} }; From 00ece05e79b4a74de8dcad1857cb9574a5687276 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 11:30:37 +0200 Subject: [PATCH 150/527] added python3 scripts has their own folder --- include/common.h | 1 + 1 file changed, 1 insertion(+) diff --git a/include/common.h b/include/common.h index 4d6efcce2..9f04d75c7 100644 --- a/include/common.h +++ b/include/common.h @@ -24,6 +24,7 @@ #define PM3_USER_DIRECTORY PATHSEP ".proxmark3" PATHSEP // PM3 subdirectories: +#define PYTHON_SCRIPTS_SUBDIR "pyscripts" PATHSEP #define CMD_SCRIPTS_SUBDIR "cmdscripts" PATHSEP #define DICTIONARIES_SUBDIR "dictionaries" PATHSEP #define LUA_LIBRARIES_SUBDIR "lualibs" PATHSEP From 0e57a1c6cda97648ae42d5ac7bf605f28215e154 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 11:48:37 +0200 Subject: [PATCH 151/527] optional python.. Thanks @doegox! --- client/Makefile | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/client/Makefile b/client/Makefile index adc07c88b..9ee678a4b 100644 --- a/client/Makefile +++ b/client/Makefile @@ -293,6 +293,11 @@ ifeq ($(BT_FOUND),1) PM3CFLAGS += -DHAVE_BLUEZ endif +ifeq ($(PYTHON_FOUND),1) + PM3CFLAGS += -DHAVE_PYTHON +endif + + CXXFLAGS ?= -Wall -Werror -O3 PM3CXXFLAGS = $(CXXFLAGS) PM3CXXFLAGS += -I../include From f852bf41c3a5bfde85f3f729bb6da75436839d9a Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 11:49:26 +0200 Subject: [PATCH 152/527] adapt to optional python, Thanks @doegox! --- client/src/cmdscript.c | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index b2ad53f50..0264a16f6 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -13,9 +13,11 @@ #include <stdlib.h> #include <string.h> -#define PY_SSIZE_T_CLEAN +#ifdef DHAVE_PYTHON +//#define PY_SSIZE_T_CLEAN #include <Python.h> #include <wchar.h> +#endif #include "cmdparser.h" // command_t @@ -79,8 +81,10 @@ static int CmdScriptRun(const char *Cmd) { pm3_scriptfile_t ext = PM3_LUA; if (str_endswith(preferredName, ".cmd")) ext = PM3_CMD; +#ifdef DHAVE_PYTHON if (str_endswith(preferredName, ".py")) ext = PM3_PY; +#endif char *script_path = NULL; if ((ext == PM3_LUA) && (searchFile(&script_path, LUA_SCRIPTS_SUBDIR, preferredName, ".lua", true) == PM3_SUCCESS)) { @@ -151,8 +155,7 @@ static int CmdScriptRun(const char *Cmd) { return ret; } - /* - + /* For apt (Ubuntu, Debian...): sudo apt-get install python3-dev # for python3.x installs @@ -177,6 +180,7 @@ static int CmdScriptRun(const char *Cmd) { */ +#ifdef DHAVE_PYTHON if ((ext == PM3_PY) && (searchFile(&script_path, PYTHON_SCRIPTS_SUBDIR, preferredName, ".py", true) == PM3_SUCCESS)) { PrintAndLogEx(SUCCESS, "executing python s " _YELLOW_("%s"), script_path); @@ -215,6 +219,7 @@ static int CmdScriptRun(const char *Cmd) { PrintAndLogEx(SUCCESS, "\nfinished " _YELLOW_("%s"), preferredName); return PM3_SUCCESS; } +#endif // file not found, let's search again to display the error messages int ret = PM3_EUNDEF; @@ -223,10 +228,10 @@ static int CmdScriptRun(const char *Cmd) { if (ext == PM3_CMD) ret = searchFile(&script_path, CMD_SCRIPTS_SUBDIR, preferredName, ".cmd", false); - +#ifdef DHAVE_PYTHON if (ext == PM3_PY) ret = searchFile(&script_path, PYTHON_SCRIPTS_SUBDIR, preferredName, ".py", false); - +#endif free(script_path); return ret; } From 6e3e1baef76bf60a1ff2b256386ba6eea341fb72 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 12:00:42 +0200 Subject: [PATCH 153/527] logsss --- client/src/cmdscript.c | 24 +++++++++++++++++------- 1 file changed, 17 insertions(+), 7 deletions(-) diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index 0264a16f6..f8fde1a40 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -13,7 +13,7 @@ #include <stdlib.h> #include <string.h> -#ifdef DHAVE_PYTHON +#ifdef HAVE_PYTHON //#define PY_SSIZE_T_CLEAN #include <Python.h> #include <wchar.h> @@ -79,11 +79,15 @@ static int CmdScriptRun(const char *Cmd) { extension_chk = str_dup(preferredName); str_lower(extension_chk); pm3_scriptfile_t ext = PM3_LUA; - if (str_endswith(preferredName, ".cmd")) + + if (str_endswith(extension_chk, ".cmd")) { ext = PM3_CMD; -#ifdef DHAVE_PYTHON - if (str_endswith(preferredName, ".py")) + } + +#ifdef HAVE_PYTHON + if (str_endswith(extension_chk, ".py")) { ext = PM3_PY; + } #endif char *script_path = NULL; @@ -180,9 +184,15 @@ static int CmdScriptRun(const char *Cmd) { */ -#ifdef DHAVE_PYTHON +#ifdef HAVE_PYTHON + + PrintAndLogEx(SUCCESS, "script engine detected: %s", ( ext == PM3_PY) ? "PYTHON" : ( ext == PM3_CMD) ? "CMD" : "LUA"); + PrintAndLogEx(SUCCESS, "script engine, folder %s", PYTHON_SCRIPTS_SUBDIR); + if ((ext == PM3_PY) && (searchFile(&script_path, PYTHON_SCRIPTS_SUBDIR, preferredName, ".py", true) == PM3_SUCCESS)) { + PrintAndLogEx(SUCCESS, "ICE"); + PrintAndLogEx(SUCCESS, "executing python s " _YELLOW_("%s"), script_path); PrintAndLogEx(SUCCESS, "args " _YELLOW_("'%s'"), arguments); @@ -200,7 +210,7 @@ static int CmdScriptRun(const char *Cmd) { FILE *f = fopen(script_path, "r"); if (f == NULL) { - PrintAndLogEx(ERR, "could not decode " _YELLOW_("%s"), script_path); + PrintAndLogEx(ERR, "Could open file " _YELLOW_("%s"), script_path); free(script_path); return PM3_ESOFT; } @@ -228,7 +238,7 @@ static int CmdScriptRun(const char *Cmd) { if (ext == PM3_CMD) ret = searchFile(&script_path, CMD_SCRIPTS_SUBDIR, preferredName, ".cmd", false); -#ifdef DHAVE_PYTHON +#ifdef HAVE_PYTHON if (ext == PM3_PY) ret = searchFile(&script_path, PYTHON_SCRIPTS_SUBDIR, preferredName, ".py", false); #endif From 6b8f1b141e9531334123001a3227ecaf62e20341 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 12:07:01 +0200 Subject: [PATCH 154/527] change, search in python dir.. --- client/src/fileutils.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index a650e3929..d5315e3b9 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1446,6 +1446,7 @@ static int searchFinalFile(char **foundpath, const char *pm3dir, const char *sea (strcmp(LUA_LIBRARIES_SUBDIR, pm3dir) == 0) || (strcmp(LUA_SCRIPTS_SUBDIR, pm3dir) == 0) || (strcmp(CMD_SCRIPTS_SUBDIR, pm3dir) == 0) || + (strcmp(PYTHON_SCRIPTS_SUBDIR, pm3dir) == 0) || (strcmp(RESOURCES_SUBDIR, pm3dir) == 0))) { char *path = calloc(strlen(exec_path) + strlen(pm3dir) + strlen(filename) + 1, sizeof(char)); if (path == NULL) From e106a5717c7c464751aa28d1c2160b61992d5f41 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 12:17:41 +0200 Subject: [PATCH 155/527] simple script working --- client/pyscripts/ice.py | 5 +++++ client/src/cmdscript.c | 5 ----- 2 files changed, 5 insertions(+), 5 deletions(-) create mode 100644 client/pyscripts/ice.py diff --git a/client/pyscripts/ice.py b/client/pyscripts/ice.py new file mode 100644 index 000000000..a9d486813 --- /dev/null +++ b/client/pyscripts/ice.py @@ -0,0 +1,5 @@ + +lrc= 0x00 +for i in range(5): + lrc ^= 42 +print('\n final LRC XOR byte value: %02X\n' % (lrc)) diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index f8fde1a40..b5929c0ae 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -185,13 +185,8 @@ static int CmdScriptRun(const char *Cmd) { */ #ifdef HAVE_PYTHON - - PrintAndLogEx(SUCCESS, "script engine detected: %s", ( ext == PM3_PY) ? "PYTHON" : ( ext == PM3_CMD) ? "CMD" : "LUA"); - PrintAndLogEx(SUCCESS, "script engine, folder %s", PYTHON_SCRIPTS_SUBDIR); if ((ext == PM3_PY) && (searchFile(&script_path, PYTHON_SCRIPTS_SUBDIR, preferredName, ".py", true) == PM3_SUCCESS)) { - - PrintAndLogEx(SUCCESS, "ICE"); PrintAndLogEx(SUCCESS, "executing python s " _YELLOW_("%s"), script_path); PrintAndLogEx(SUCCESS, "args " _YELLOW_("'%s'"), arguments); From 366ac6a41f8a49b5de09a3555ca0030df200547b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 12:35:26 +0200 Subject: [PATCH 156/527] creating argc/argv --- client/src/cmdscript.c | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index b5929c0ae..52b24562a 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -191,9 +191,9 @@ static int CmdScriptRun(const char *Cmd) { PrintAndLogEx(SUCCESS, "executing python s " _YELLOW_("%s"), script_path); PrintAndLogEx(SUCCESS, "args " _YELLOW_("'%s'"), arguments); - wchar_t *program = Py_DecodeLocale(script_path, NULL); + wchar_t *program = Py_DecodeLocale(preferredName, NULL); if (program == NULL) { - PrintAndLogEx(ERR, "could not decode " _YELLOW_("%s"), script_path); + PrintAndLogEx(ERR, "could not decode " _YELLOW_("%s"), preferredName); free(script_path); return PM3_ESOFT; } @@ -201,7 +201,20 @@ static int CmdScriptRun(const char *Cmd) { // optional but recommended Py_SetProgramName(program); Py_Initialize(); -// PySys_SetArgv(arguments, script_path); // we dont have argc , argv here + + + int argc = 6; + wchar_t *args[argc]; + args[0] = Py_DecodeLocale(preferredName, NULL); + args[1] = Py_DecodeLocale("04", NULL); + args[2] = Py_DecodeLocale("00", NULL); + args[3] = Py_DecodeLocale("80", NULL); + args[4] = Py_DecodeLocale("64", NULL); + args[5] = Py_DecodeLocale("ba", NULL); + + PySys_SetArgv(argc, args); + + //PySys_SetArgv(arguments, script_path); FILE *f = fopen(script_path, "r"); if (f == NULL) { @@ -210,7 +223,7 @@ static int CmdScriptRun(const char *Cmd) { return PM3_ESOFT; } - PyRun_SimpleFile(f, script_path); + PyRun_SimpleFile(f, preferredName); fclose(f); From 4aa40061671fbfaa8564a3fe8aebc1d813e2ffd9 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 13:09:18 +0200 Subject: [PATCH 157/527] chg, python should close the script file --- client/src/cmdscript.c | 61 +++++++++++++++++++++++++++++++----------- 1 file changed, 46 insertions(+), 15 deletions(-) diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index 52b24562a..6fef662f3 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -36,11 +36,39 @@ typedef enum { PM3_LUA, PM3_CMD, +#ifdef HAVE_PYTHON PM3_PY +#endif } pm3_scriptfile_t; static int CmdHelp(const char *Cmd); +#ifdef HAVE_PYTHON +static int split(char *str, char **arr) { + int begin_index = 0; + int word_cnt = 0; + + while (1) { + while (isspace(str[begin_index])) { + ++begin_index; + } + if (str[begin_index] == '\0') { + break; + } + int end_index = begin_index; + while (str[end_index] && !isspace(str[end_index])) { + ++end_index; + } + int len = end_index - begin_index; + char *tmp = calloc(len + 1, sizeof(char)); + memcpy(tmp, &str[begin_index], len); + arr[word_cnt++] = tmp; + begin_index = end_index; + } + return word_cnt; +} +#endif + /** * Generate a sorted list of available commands, what it does is * generate a file listing of the script-directory for files @@ -188,7 +216,7 @@ static int CmdScriptRun(const char *Cmd) { if ((ext == PM3_PY) && (searchFile(&script_path, PYTHON_SCRIPTS_SUBDIR, preferredName, ".py", true) == PM3_SUCCESS)) { - PrintAndLogEx(SUCCESS, "executing python s " _YELLOW_("%s"), script_path); + PrintAndLogEx(SUCCESS, "executing python " _YELLOW_("%s"), script_path); PrintAndLogEx(SUCCESS, "args " _YELLOW_("'%s'"), arguments); wchar_t *program = Py_DecodeLocale(preferredName, NULL); @@ -202,19 +230,22 @@ static int CmdScriptRun(const char *Cmd) { Py_SetProgramName(program); Py_Initialize(); + //int argc, char ** argv + char *argv[128]; + int argc = split(arguments, argv); + + wchar_t *py_args[argc]; + py_args[0] = Py_DecodeLocale(preferredName, NULL); + for (int i = 0; i < argc; i++) { + py_args[i+1] = Py_DecodeLocale(argv[i], NULL); + } - int argc = 6; - wchar_t *args[argc]; - args[0] = Py_DecodeLocale(preferredName, NULL); - args[1] = Py_DecodeLocale("04", NULL); - args[2] = Py_DecodeLocale("00", NULL); - args[3] = Py_DecodeLocale("80", NULL); - args[4] = Py_DecodeLocale("64", NULL); - args[5] = Py_DecodeLocale("ba", NULL); - - PySys_SetArgv(argc, args); + PySys_SetArgv(argc, py_args); - //PySys_SetArgv(arguments, script_path); + // clean up + for (int i = 0; i < argc; ++i) { + free(argv[i]); + } FILE *f = fopen(script_path, "r"); if (f == NULL) { @@ -223,9 +254,9 @@ static int CmdScriptRun(const char *Cmd) { return PM3_ESOFT; } - PyRun_SimpleFile(f, preferredName); - - fclose(f); + // to we need to manually call all importmodules? + //PyImport_ImportModule("requests"); + PyRun_SimpleFileExFlags(f, preferredName, 1, NULL); if (Py_FinalizeEx() < 0) { free(script_path); From 5fcb031a681403d0a1d23b7f089a1e45cfc298c3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 13:10:33 +0200 Subject: [PATCH 158/527] chg, python scripts can not have "exit" calls... --- client/pyscripts/xorcheck.py | 51 ++++++++++++++++++++++++++++++++++++ 1 file changed, 51 insertions(+) create mode 100755 client/pyscripts/xorcheck.py diff --git a/client/pyscripts/xorcheck.py b/client/pyscripts/xorcheck.py new file mode 100755 index 000000000..f4605a5e7 --- /dev/null +++ b/client/pyscripts/xorcheck.py @@ -0,0 +1,51 @@ +# xorcheck.py - find xor values for 8-bit LRC +# +# Adam Laurie <adam@algroup.co.uk> +# http://rfidiot.org/ +# +# This code is copyright (c) Adam Laurie, 2009, All rights reserved. +# For non-commercial use only, the following terms apply - for all other +# uses, please contact the author: +# +# This code is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This code is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# 2020, Modified (@iceman1001) + +import sys + +def main(): + if(len(sys.argv) < 3): + print(""" + \t{0} - Generate final byte for XOR LRC + + Usage: {0} <ID Byte1> <ID Byte2> ... <LRC> + + \tSpecifying the bytes of a UID with a known LRC will find the last byte value + \tneeded to generate that LRC with a rolling XOR. All bytes should be specified in HEX. + + Example: + + \t{0} 04 00 80 64 ba + + Should produce the output: + + \tTarget (BA) requires final LRC XOR byte value: 5A\n""".format(sys.argv[0])) + return 0 + + target= int(sys.argv[len(sys.argv) - 1],16) + + lrc= 0x00 + for i in range(len(sys.argv) - 1): + lrc ^= int(sys.argv[i + 1],16) + print('\nTarget (%02X) requires final LRC XOR byte value: %02X\n' % (target,lrc)) + +if __name__ == "__main__": + main() \ No newline at end of file From 3f02fa6e34844ef7c0e170b863e2e3a7c1e5fc46 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 13:37:28 +0200 Subject: [PATCH 159/527] chg, right number of args.. --- client/src/cmdscript.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index 6fef662f3..4bbe3b631 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -233,14 +233,14 @@ static int CmdScriptRun(const char *Cmd) { //int argc, char ** argv char *argv[128]; int argc = split(arguments, argv); - + wchar_t *py_args[argc]; py_args[0] = Py_DecodeLocale(preferredName, NULL); for (int i = 0; i < argc; i++) { py_args[i+1] = Py_DecodeLocale(argv[i], NULL); } - PySys_SetArgv(argc, py_args); + PySys_SetArgv(argc+1, py_args); // clean up for (int i = 0; i < argc; ++i) { From f7537519ff10909349fd1ea47372e69dd44f7966 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 14:41:58 +0200 Subject: [PATCH 160/527] chg, make python aware of pm3 search paths --- client/pyscripts/ice.py | 7 +++-- client/src/cmdscript.c | 58 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 61 insertions(+), 4 deletions(-) diff --git a/client/pyscripts/ice.py b/client/pyscripts/ice.py index a9d486813..9a223a059 100644 --- a/client/pyscripts/ice.py +++ b/client/pyscripts/ice.py @@ -1,5 +1,4 @@ +import os +import sys -lrc= 0x00 -for i in range(5): - lrc ^= 42 -print('\n final LRC XOR byte value: %02X\n' % (lrc)) +print("SP %s" % sys.path) diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index 4bbe3b631..cad94cafe 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -44,6 +44,9 @@ typedef enum { static int CmdHelp(const char *Cmd); #ifdef HAVE_PYTHON + +#define PYTHON_LIBRARIES_WILDCARD "?.py" + static int split(char *str, char **arr) { int begin_index = 0; int word_cnt = 0; @@ -67,6 +70,58 @@ static int split(char *str, char **arr) { } return word_cnt; } + +static void set_python_path(char *path) { + PyObject *syspath = PySys_GetObject("path"); + if (syspath == 0) { + PrintAndLogEx(WARNING, "Python failed to getobject"); + } + + PyObject *pName = PyUnicode_FromString(path); + if (PyList_Insert(syspath, 0, pName)) { + PrintAndLogEx(WARNING, "Error inserting extra path into sys.path list"); + } + + if (PySys_SetObject("path", syspath)) { + PrintAndLogEx(WARNING,"Error setting sys.path object"); + } +} + +static void set_python_paths(void) { + //--add to the LUA_PATH (package.path in lua) + // so we can load scripts from various places: + const char *exec_path = get_my_executable_directory(); + if (exec_path != NULL) { + // from the ./luascripts/ directory + char scripts_path[strlen(exec_path) + strlen(PYTHON_SCRIPTS_SUBDIR) + strlen(PYTHON_LIBRARIES_WILDCARD) + 1]; + strcpy(scripts_path, exec_path); + strcat(scripts_path, PYTHON_SCRIPTS_SUBDIR); +// strcat(scripts_path, PYTHON_LIBRARIES_WILDCARD); + set_python_path(scripts_path); + } + + const char *user_path = get_my_user_directory(); + if (user_path != NULL) { + // from the $HOME/.proxmark3/luascripts/ directory + char scripts_path[strlen(user_path) + strlen(PM3_USER_DIRECTORY) + strlen(PYTHON_SCRIPTS_SUBDIR) + strlen(PYTHON_LIBRARIES_WILDCARD) + 1]; + strcpy(scripts_path, user_path); + strcat(scripts_path, PM3_USER_DIRECTORY); + strcat(scripts_path, PYTHON_SCRIPTS_SUBDIR); +// strcat(scripts_path, PYTHON_LIBRARIES_WILDCARD); + set_python_path(scripts_path); + + } + + if (exec_path != NULL) { + // from the $PREFIX/share/proxmark3/luascripts/ directory + char scripts_path[strlen(exec_path) + strlen(PM3_SHARE_RELPATH) + strlen(PYTHON_SCRIPTS_SUBDIR) + strlen(PYTHON_LIBRARIES_WILDCARD) + 1]; + strcpy(scripts_path, exec_path); + strcat(scripts_path, PM3_SHARE_RELPATH); + strcat(scripts_path, PYTHON_SCRIPTS_SUBDIR); +// strcat(scripts_path, PYTHON_LIBRARIES_WILDCARD); + set_python_path(scripts_path); + } +} #endif /** @@ -247,6 +302,9 @@ static int CmdScriptRun(const char *Cmd) { free(argv[i]); } + // setup search paths. + set_python_paths(); + FILE *f = fopen(script_path, "r"); if (f == NULL) { PrintAndLogEx(ERR, "Could open file " _YELLOW_("%s"), script_path); From 698a56a91978c02cd0665eed2af6fc81bcf1be35 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 14:43:40 +0200 Subject: [PATCH 161/527] moved and modified some existing pyton scripts for testing --- client/pyscripts/findbits.py | 99 ++++++++++++++++++++++++++++ client/pyscripts/parity.py | 78 ++++++++++++++++++++++ client/pyscripts/pm3_eml2mfd.py | 26 ++++++++ client/pyscripts/pm3_eml_mfd_test.py | 51 ++++++++++++++ client/pyscripts/pm3_mfd2eml.py | 28 ++++++++ 5 files changed, 282 insertions(+) create mode 100755 client/pyscripts/findbits.py create mode 100644 client/pyscripts/parity.py create mode 100755 client/pyscripts/pm3_eml2mfd.py create mode 100755 client/pyscripts/pm3_eml_mfd_test.py create mode 100755 client/pyscripts/pm3_mfd2eml.py diff --git a/client/pyscripts/findbits.py b/client/pyscripts/findbits.py new file mode 100755 index 000000000..809465a2e --- /dev/null +++ b/client/pyscripts/findbits.py @@ -0,0 +1,99 @@ +#!/usr/bin/env python3 + +# findbits.py - find Binary, Octal, Decimal or Hex number in bitstream +# +# Adam Laurie <adam@algroup.co.uk> +# http://rfidiot.org/ +# +# This code is copyright (c) Adam Laurie, 2009, All rights reserved. +# For non-commercial use only, the following terms apply - for all other +# uses, please contact the author: +# +# This code is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2 of the License, or +# (at your option) any later version. +# +# This code is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# + +import sys +import os + +# invert binary string +def invert(data): + return ''.join('0' if c == '1' else '1' for c in data) + +# do the actual search +def search(target,data): + location = data.find(target) + if location >= 0: + print('*** Match at bit {:d}: {}<{}>{}'.format(location, data[:location],target,data[location+len(target):])) + else: + print('Not found') + +# convert integer to binary string +def binstring(number): + return bin(number)[2:] if number > 0 else '' + +# reverse string order +def stringreverse(data): + return data[::-1] + +# match forward, backward and inverted +def domatch(binary,number): + reversed= stringreverse(number) + inverted= invert(binary) + + print(' Forward: (%s) ' % number, end = '') + search(binary,number) + print(' Reverse: (%s) ' % reversed, end = '') + search(binary,reversed) + print(' Inverse: (%s) ' % inverted) + print(' Forward: (%s) ' % number, end = '') + search(inverted,number) + print(' Reverse: (%s) ' % reversed, end = '') + search(inverted,reversed) + +def main(): + if(len(sys.argv) < 3): + print(""" +\t{0} - Search bitstream for a known number + +Usage: {0} <NUMBER> <BITSTREAM> + +\tNUMBER will be converted to it\'s BINARY equivalent for all valid +\tinstances of BINARY, OCTAL, DECIMAL and HEX, and the bitstream +\tand it\'s inverse will be searched for a pattern match. Note that +\tNUMBER must be specified in BINARY to match leading zeros. + +Example: + +\t{0} 73 0110010101110011 +""".format(sys.argv[0])) + os._exit(True) + + bases= { + 2:'BINARY', + 8:'OCTAL', + 10:'DECIMAL', + 16:'HEX', + } + + for base, base_name in sorted(bases.items()): + try: + number= int(sys.argv[1],base) + print('\nTrying ' + base_name) + # do BINARY as specified to preserve leading zeros + if base == 2: + domatch(sys.argv[1],sys.argv[2]) + else: + domatch(binstring(number),sys.argv[2]) + except: + continue + +if __name__ == '__main__': + main() diff --git a/client/pyscripts/parity.py b/client/pyscripts/parity.py new file mode 100644 index 000000000..6be9d979d --- /dev/null +++ b/client/pyscripts/parity.py @@ -0,0 +1,78 @@ +# This code is contributed by +# Shubham Singh(SHUBHAMSINGH10) +# 2020, modified (@iceman1001) + +import sys + +# Python3 program to illustrate Compute the +# parity of a number using XOR +# Generating the look-up table while pre-processing +def P2(n, table): + table.extend([n, n ^ 1, n ^ 1, n]) +def P4(n, table): + return (P2(n, table), P2(n ^ 1, table), + P2(n ^ 1, table), P2(n, table)) +def P6(n, table): + return (P4(n, table), P4(n ^ 1, table), + P4(n ^ 1, table), P4(n, table)) +def LOOK_UP(table): + return (P6(0, table), P6(1, table), + P6(1, table), P6(0, table)) + +# LOOK_UP is the macro expansion to generate the table +table = [0] * 256 +LOOK_UP(table) + +# Function to find the parity +def Parity(num) : + # Number is considered to be of 32 bits + max = 16 + + # Dividing the number o 8-bit + # chunks while performing X-OR + while (max >= 8): + num = num ^ (num >> max) + max = max // 2 + + # Masking the number with 0xff (11111111) + # to produce valid 8-bit result + return table[num & 0xff] + +def main(): + if(len(sys.argv) < 2): + print(""" + \t{0} - Calculate parity of a given number + + Usage: {0} <2,10,16> <number> + + \t Specify type as in 2 Bin, 10 Decimal, 16 Hex, and number in that particular format + \t number can only be 32bit long. + + Example: + + \t{0} 10 1234 + + Should produce the output: + + \tOdd parity\n""".format(sys.argv[0])) + return 0 + + + numtype= int(sys.argv[1], 10) + print("numtype: {0}".format(numtype)) + input= int(sys.argv[2], numtype) + print("num: {0} 0x{0:X}".format(input)) + + #num = "001111100010100011101010111101011110" + # Result is 1 for odd parity + # 0 for even parity +# result = Parity( int(input, numtype) ) + result = Parity(input) + print("Odd parity") if result else print("Even parity") + + +if __name__ == "__main__": + main() + + + diff --git a/client/pyscripts/pm3_eml2mfd.py b/client/pyscripts/pm3_eml2mfd.py new file mode 100755 index 000000000..90803cf5e --- /dev/null +++ b/client/pyscripts/pm3_eml2mfd.py @@ -0,0 +1,26 @@ +#!/usr/bin/env python3 + +''' +# Andrei Costin <zveriu@gmail.com>, 2011 +# pm3_eml2mfd.py +# Converts PM3 Mifare Classic emulator EML text file to MFD binary dump file +''' + +import sys +import binascii + +def main(argv): + argc = len(argv) + if argc < 3: + print('Usage:', argv[0], 'input.eml output.mfd') + return 1 + + with open(argv[1], "r") as file_inp, open(argv[2], "wb") as file_out: + for line in file_inp: + line = line.rstrip('\n').rstrip('\r') + print(line) + data = binascii.unhexlify(line) + file_out.write(data) + +if __name__ == '__main__': + main(sys.argv) diff --git a/client/pyscripts/pm3_eml_mfd_test.py b/client/pyscripts/pm3_eml_mfd_test.py new file mode 100755 index 000000000..8fae5965e --- /dev/null +++ b/client/pyscripts/pm3_eml_mfd_test.py @@ -0,0 +1,51 @@ +#!/usr/bin/env python3 + +from tempfile import mkdtemp +from shutil import rmtree +from string import hexdigits +import unittest, os +import pm3_eml2mfd, pm3_mfd2eml + +class TestEmlMfd(unittest.TestCase): + def setUp(self): + self.tmpdir = mkdtemp() + + def tearDown(self): + rmtree(self.tmpdir) + + EML2MFD_TESTCASES = [ + ('', ''), + ("41424344\r\n45464748\n494A4B4C\n", "ABCDEFGHIJKL") + ] + def test_eml2mfd(self): + self.three_argument_test(pm3_eml2mfd.main, self.EML2MFD_TESTCASES) + + def test_mfd2eml(self): + self.three_argument_test(pm3_mfd2eml.main, + map(reversed, self.EML2MFD_TESTCASES), c14n=hex_c14n) + + def three_argument_test(self, operation, cases, c14n=str): + for case_input, case_output in cases: + try: + inp_name = os.path.join(self.tmpdir, 'input') + out_name = os.path.join(self.tmpdir, 'output') + with open(inp_name, 'w') as in_file: + in_file.write(case_input) + operation(['', inp_name, out_name]) + with open(out_name, 'r') as out_file: + self.assertEqual(c14n(case_output), c14n(out_file.read())) + finally: + for file_name in inp_name, out_name: + if os.path.exists(file_name): + os.remove(file_name) + + +def hex_c14n(inp): + """ + Canonicalizes the input string by removing non-hexadecimal + characters and making everything uppercase + """ + return ''.join(c.upper() for c in inp if c in hexdigits) + +if __name__ == '__main__': + unittest.main() diff --git a/client/pyscripts/pm3_mfd2eml.py b/client/pyscripts/pm3_mfd2eml.py new file mode 100755 index 000000000..ae7a79825 --- /dev/null +++ b/client/pyscripts/pm3_mfd2eml.py @@ -0,0 +1,28 @@ +#!/usr/bin/env python3 + +''' +# Andrei Costin <zveriu@gmail.com>, 2011 +# pm3_eml2mfd.py +# Converts PM3 Mifare Classic MFD binary dump file to emulator EML text file +''' +import sys + +READ_BLOCKSIZE = 16 + +def main(argv): + argc = len(argv) + if argc < 3: + print('Usage:', argv[0], 'input.mfd output.eml') + return 1 + + with open(argv[1], "rb") as file_inp, open(argv[2], "w") as file_out: + while True: + byte_s = file_inp.read(READ_BLOCKSIZE) + if not byte_s: + break + hex_char_repr = byte_s.hex() + file_out.write(hex_char_repr) + file_out.write("\n") + +if __name__ == '__main__': + main(sys.argv) From 748c0772680725f4e6073cd6d6d522dc142dd823 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 15:49:28 +0200 Subject: [PATCH 162/527] chg, python3 in cmake? --- client/CMakeLists.txt | 12 +++++++++++- 1 file changed, 11 insertions(+), 1 deletion(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 64cfca623..3938f76d5 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -38,6 +38,8 @@ endforeach() find_package(PkgConfig) pkg_search_module(BLUEZ QUIET bluez) +pkg_search_module(PYTHON3 QUIET python3) + SET (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") add_subdirectory(deps) @@ -224,6 +226,14 @@ if (BLUEZ_FOUND) set(ADDITIONAL_LNK bluetooth ${ADDITIONAL_LNK}) endif (BLUEZ_FOUND) +if (PYTHON3_FOUND) + message("Python3 library found, building with python3 support :)") + add_definitions("-DHAVE_PYTHON") +# include_directories ( ${PYTHON_INCLUDE_DIRS} ) + set(ADDITIONAL_LNK python3 ${PYTHON_LIBRARIES}) +endif (PYTHON3_FOUND) + + add_executable( proxmark3 ${TARGET_SOURCES} @@ -286,7 +296,7 @@ target_link_libraries(proxmark3 PRIVATE ${ADDITIONAL_LNK}) install(TARGETS proxmark3 DESTINATION "bin") -install(DIRECTORY cmdscripts lualibs luascripts resources dictionaries DESTINATION "share/proxmark3") +install(DIRECTORY cmdscripts lualibs luascripts pyscripts resources dictionaries DESTINATION "share/proxmark3") add_custom_command(OUTPUT lualibs/pm3_cmd.lua COMMAND "awk -f pm3_cmd_h2lua.awk ../include/pm3_cmd.h > lualibs/pm3_cmd.lua" From e7230fa5d7a3a17b3e26a4add3bc1dd98a09413c Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 16:47:54 +0200 Subject: [PATCH 163/527] chg, cmake woodo. almost there --- client/CMakeLists.txt | 17 ++++++++++++----- 1 file changed, 12 insertions(+), 5 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 3938f76d5..20cb1cbbe 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -37,7 +37,6 @@ endforeach() find_package(PkgConfig) pkg_search_module(BLUEZ QUIET bluez) - pkg_search_module(PYTHON3 QUIET python3) SET (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") @@ -190,7 +189,6 @@ add_custom_command( set(ADDITIONAL_SRC "") set(ADDITIONAL_LNK "") - set(X86_CPUS x86 x86_64 i686) message(STATUS "CMAKE_SYSTEM_PROCESSOR := ${CMAKE_SYSTEM_PROCESSOR}") @@ -229,10 +227,19 @@ endif (BLUEZ_FOUND) if (PYTHON3_FOUND) message("Python3 library found, building with python3 support :)") add_definitions("-DHAVE_PYTHON") -# include_directories ( ${PYTHON_INCLUDE_DIRS} ) - set(ADDITIONAL_LNK python3 ${PYTHON_LIBRARIES}) -endif (PYTHON3_FOUND) + #PYTHON3_LIBRARIES ... only the libraries (w/o the '-l') + #PYTHON3_LIBRARY_DIRS ... the paths of the libraries (w/o the '-L') + #PYTHON3_INCLUDE_DIRS ... the '-I' preprocessor flags (w/o the '-I') + + message(STATUS "PYTHON3 LIBS := ${PYTHON3_LIBRARIES}") + message(STATUS "PYTHON3 INC DIRS := ${PYTHON3_INCLUDE_DIRS}") + + set(ADDITIONAL_LNK ${ADDITIONAL_LNK} ${PYTHON3_LIBRARIES}) + +#PYTHONINCLUDES = pkg-config --cflags python3 == -I/usr/include/python3.6m -I/usr/include/x86_64-linux-gnu/python3.6m +#PYTHONLDLIBS = pkg-config --libs python3 == -lpython3.6m +endif (PYTHON3_FOUND) add_executable( proxmark3 From feafa62dede43839704cc4f70e7698f4ebeb2a9b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 16:57:54 +0200 Subject: [PATCH 164/527] chg, cmake compiles --- client/CMakeLists.txt | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 20cb1cbbe..285a20144 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -189,6 +189,7 @@ add_custom_command( set(ADDITIONAL_SRC "") set(ADDITIONAL_LNK "") +set(ADDITIONAL_DIRS "") set(X86_CPUS x86 x86_64 i686) message(STATUS "CMAKE_SYSTEM_PROCESSOR := ${CMAKE_SYSTEM_PROCESSOR}") @@ -227,18 +228,8 @@ endif (BLUEZ_FOUND) if (PYTHON3_FOUND) message("Python3 library found, building with python3 support :)") add_definitions("-DHAVE_PYTHON") - - #PYTHON3_LIBRARIES ... only the libraries (w/o the '-l') - #PYTHON3_LIBRARY_DIRS ... the paths of the libraries (w/o the '-L') - #PYTHON3_INCLUDE_DIRS ... the '-I' preprocessor flags (w/o the '-I') - - message(STATUS "PYTHON3 LIBS := ${PYTHON3_LIBRARIES}") - message(STATUS "PYTHON3 INC DIRS := ${PYTHON3_INCLUDE_DIRS}") - + set(ADDITIONAL_DIRS ${ADDITIONAL_DIRS} ${PYTHON3_INCLUDE_DIRS}) set(ADDITIONAL_LNK ${ADDITIONAL_LNK} ${PYTHON3_LIBRARIES}) - -#PYTHONINCLUDES = pkg-config --cflags python3 == -I/usr/include/python3.6m -I/usr/include/x86_64-linux-gnu/python3.6m -#PYTHONLDLIBS = pkg-config --libs python3 == -lpython3.6m endif (PYTHON3_FOUND) add_executable( @@ -265,6 +256,7 @@ target_include_directories(proxmark3 PRIVATE ../common_fpga ../include src + ${ADDITIONAL_DIRS} ) if (APPLE) From 9edb30f1665a97861ad6b49a5ef280dd78c75c76 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 17:01:53 +0200 Subject: [PATCH 165/527] chg, python3-embed checks (@doegox) --- client/Makefile | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/client/Makefile b/client/Makefile index 9ee678a4b..70f45ca81 100644 --- a/client/Makefile +++ b/client/Makefile @@ -136,13 +136,20 @@ LDLIBS += $(LUALIB) INCLUDES += $(LUALIBINC) ## Python3 -#PYTHON_CONFIG := python3-config PYTHONINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags python3 2>/dev/null) PYTHONLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs python3 2>/dev/null) ifneq ($(PYTHONLDLIBS),) PYTHONLIB = $(PYTHONLDLIBS) PYTHONLIBINC = $(PYTHONINCLUDES) PYTHON_FOUND = 1 +else + PYTHONINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags python3-embed 2>/dev/null) + PYTHONLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs python3-embed 2>/dev/null) + ifneq ($(PYTHONLDLIBS),) + PYTHONLIB = $(PYTHONLDLIBS) + PYTHONLIBINC = $(PYTHONINCLUDES) + PYTHON_FOUND = 1 + endif endif LDLIBS += $(PYTHONLIB) INCLUDES += $(PYTHONLIBINC) From 6feb408071ba34c50d69cfb91dd812e63c26b3d6 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 17:15:42 +0200 Subject: [PATCH 166/527] travis needs dev... --- .travis.yml | 1 + 1 file changed, 1 insertion(+) diff --git a/.travis.yml b/.travis.yml index ad23bf6f8..7f3d79a46 100644 --- a/.travis.yml +++ b/.travis.yml @@ -28,6 +28,7 @@ addons: - gcc-arm-none-eabi - libnewlib-dev - libbluetooth-dev + - python3-dev homebrew: packages: - readline From 646a4cc4a6a4f1ec214047bd37663825b15823b3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 17:32:16 +0200 Subject: [PATCH 167/527] more version info --- client/Makefile | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/Makefile b/client/Makefile index 70f45ca81..28ac1f87c 100644 --- a/client/Makefile +++ b/client/Makefile @@ -373,9 +373,9 @@ else endif ifeq ($(PYTHON_FOUND),1) - $(info Python library: system library found) + $(info Python3 version: Python3 v${shell pkg-config --modversion python3} found, enabled) else - $(info Python library: system library not found, disabled) + $(info Python library: Python3 not found, disabled) endif ifeq ($(SKIPWHEREAMISYSTEM),1) From 176f0dfe757525e1560fe44d55863b037c198b72 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 17:35:27 +0200 Subject: [PATCH 168/527] chg, function available in v3.6 Travis has v3.5... --- client/src/cmdscript.c | 5 +---- 1 file changed, 1 insertion(+), 4 deletions(-) diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index cad94cafe..07764db88 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -316,10 +316,7 @@ static int CmdScriptRun(const char *Cmd) { //PyImport_ImportModule("requests"); PyRun_SimpleFileExFlags(f, preferredName, 1, NULL); - if (Py_FinalizeEx() < 0) { - free(script_path); - return PM3_ESOFT; - } + Py_Finalize(); PyMem_RawFree(program); free(script_path); From 0464fd476ba9476288915d3cf41988bb07e26520 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 26 May 2020 17:37:03 +0200 Subject: [PATCH 169/527] Makefile python --- client/Makefile | 60 +++++++++++++++---------------- doc/md/Development/Maintainers.md | 1 + 2 files changed, 31 insertions(+), 30 deletions(-) diff --git a/client/Makefile b/client/Makefile index 28ac1f87c..bbaee39b0 100644 --- a/client/Makefile +++ b/client/Makefile @@ -135,25 +135,6 @@ endif LDLIBS += $(LUALIB) INCLUDES += $(LUALIBINC) -## Python3 -PYTHONINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags python3 2>/dev/null) -PYTHONLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs python3 2>/dev/null) -ifneq ($(PYTHONLDLIBS),) - PYTHONLIB = $(PYTHONLDLIBS) - PYTHONLIBINC = $(PYTHONINCLUDES) - PYTHON_FOUND = 1 -else - PYTHONINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags python3-embed 2>/dev/null) - PYTHONLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs python3-embed 2>/dev/null) - ifneq ($(PYTHONLDLIBS),) - PYTHONLIB = $(PYTHONLDLIBS) - PYTHONLIBINC = $(PYTHONINCLUDES) - PYTHON_FOUND = 1 - endif -endif -LDLIBS += $(PYTHONLIB) -INCLUDES += $(PYTHONLIBINC) - ## mbed TLS # system library cannot be used because it is compiled by default without CMAC support LDLIBS +=$(MBEDTLSLIB) @@ -219,13 +200,6 @@ endif LDLIBS += $(BTLIB) INCLUDES += $(BTLIBINC) -## Readline -ifeq ($(platform),Darwin) - LDLIBS += -L/usr/local/opt/readline/lib - INCLUDES += -I/usr/local/opt/readline/include -endif -LDLIBS += -lreadline - ## Math LDLIBS += -lm @@ -235,6 +209,28 @@ ifneq ($(SKIPPTHREAD),1) LDLIBS += -lpthread endif +## Python3 (optional) +ifneq ($(SKIPPYTHON),1) + PYTHONINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags python3 2>/dev/null) + PYTHONLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs python3 2>/dev/null) + ifneq ($(PYTHONLDLIBS),) + PYTHONLIB = $(PYTHONLDLIBS) + PYTHONLIBINC = $(PYTHONINCLUDES) + PYTHON_FOUND = 1 + else + # since python3.8, applications willing to embed python must use -embed: + PYTHONINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags python3-embed 2>/dev/null) + PYTHONLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs python3-embed 2>/dev/null) + ifneq ($(PYTHONLDLIBS),) + PYTHONLIB = $(PYTHONLDLIBS) + PYTHONLIBINC = $(PYTHONINCLUDES) + PYTHON_FOUND = 1 + endif + endif +endif +LDLIBS += $(PYTHONLIB) +INCLUDES += $(PYTHONLIBINC) + ## QT5 (or QT4 fallback) (optional) ifneq ($(SKIPQT),1) # Check for correctly configured Qt5 @@ -275,8 +271,12 @@ endif LDLIBS += $(QTLDLIBS) CXXINCLUDES += $(QTINCLUDES) -## Python - +## Readline +ifeq ($(platform),Darwin) + LDLIBS += -L/usr/local/opt/readline/lib + INCLUDES += -I/usr/local/opt/readline/include +endif +LDLIBS += -lreadline ####################################################################################################### CFLAGS ?= $(DEFCFLAGS) @@ -373,9 +373,9 @@ else endif ifeq ($(PYTHON_FOUND),1) - $(info Python3 version: Python3 v${shell pkg-config --modversion python3} found, enabled) + $(info Python3 library: Python3 v$(shell pkg-config --modversion python3) found, enabled) else - $(info Python library: Python3 not found, disabled) + $(info Python3 library: Python3 not found, disabled) endif ifeq ($(SKIPWHEREAMISYSTEM),1) diff --git a/doc/md/Development/Maintainers.md b/doc/md/Development/Maintainers.md index 0ea33b924..293fd3999 100644 --- a/doc/md/Development/Maintainers.md +++ b/doc/md/Development/Maintainers.md @@ -61,6 +61,7 @@ It's also possible to skip parts even if libraries are present in the compilatio * `make client SKIPQT=1` to skip GUI even if Qt is present * `make client SKIPBT=1` to skip native Bluetooth support even if libbluetooth is present +* `make client SKIPPYTHON=1` to skip embedded Python 3 interpreter even if libpython3 is present * `make client SKIPLUASYSTEM=1` to skip system Lua lib even if liblua5.2 is present, use embedded Lua lib instead * `make client SKIPJANSSONSYSTEM=1` to skip system Jansson lib even if libjansson is present, use embedded Jansson lib instead * `make client SKIPWHEREAMISYSTEM=1` to skip system Whereami lib even if libwhereami is present, use embedded whereami lib instead From 8498c32a785882fae25072ec65c4be6de9a1b7ab Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 26 May 2020 18:41:24 +0200 Subject: [PATCH 170/527] cmake support python < 3.8 and 3.8 --- client/CMakeLists.txt | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 285a20144..644008497 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -38,6 +38,7 @@ endforeach() find_package(PkgConfig) pkg_search_module(BLUEZ QUIET bluez) pkg_search_module(PYTHON3 QUIET python3) +pkg_search_module(PYTHON3EMBED QUIET python3-embed) SET (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") @@ -225,12 +226,17 @@ if (BLUEZ_FOUND) set(ADDITIONAL_LNK bluetooth ${ADDITIONAL_LNK}) endif (BLUEZ_FOUND) -if (PYTHON3_FOUND) +if (PYTHON3EMBED_FOUND) message("Python3 library found, building with python3 support :)") add_definitions("-DHAVE_PYTHON") - set(ADDITIONAL_DIRS ${ADDITIONAL_DIRS} ${PYTHON3_INCLUDE_DIRS}) - set(ADDITIONAL_LNK ${ADDITIONAL_LNK} ${PYTHON3_LIBRARIES}) -endif (PYTHON3_FOUND) + set(ADDITIONAL_DIRS ${PYTHON3EMBED_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) + set(ADDITIONAL_LNK ${PYTHON3EMBED_LIBRARIES} ${ADDITIONAL_LNK}) +elseif (PYTHON3_FOUND) + message("Python3 library found, building with python3 support :)") + add_definitions("-DHAVE_PYTHON") + set(ADDITIONAL_DIRS ${PYTHON3_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) + set(ADDITIONAL_LNK ${PYTHON3_LIBRARIES} ${ADDITIONAL_LNK}) +endif (PYTHON3EMBED_FOUND) add_executable( proxmark3 From 25c5eebfcfbba7a22cc6da726c3705d2d15e5a82 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 26 May 2020 18:54:58 +0200 Subject: [PATCH 171/527] attempt to fix cmake+osx+python --- client/CMakeLists.txt | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 644008497..baf1dad44 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -231,11 +231,13 @@ if (PYTHON3EMBED_FOUND) add_definitions("-DHAVE_PYTHON") set(ADDITIONAL_DIRS ${PYTHON3EMBED_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) set(ADDITIONAL_LNK ${PYTHON3EMBED_LIBRARIES} ${ADDITIONAL_LNK}) + set(ADDITIONAL_LNKDIRS ${PYTHON3EMBED_LIBRARY_DIRS} ${ADDITIONAL_LNKDIRS}) elseif (PYTHON3_FOUND) message("Python3 library found, building with python3 support :)") add_definitions("-DHAVE_PYTHON") set(ADDITIONAL_DIRS ${PYTHON3_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) set(ADDITIONAL_LNK ${PYTHON3_LIBRARIES} ${ADDITIONAL_LNK}) + set(ADDITIONAL_LNKDIRS ${PYTHON3_LIBRARY_DIRS} ${ADDITIONAL_LNKDIRS}) endif (PYTHON3EMBED_FOUND) add_executable( @@ -300,6 +302,8 @@ target_link_libraries(proxmark3 PRIVATE pm3rrg_rdv4_whereami ${ADDITIONAL_LNK}) +target_link_directories(proxmark3 PRIVATE ${ADDITIONAL_LNKDIRS}) + install(TARGETS proxmark3 DESTINATION "bin") install(DIRECTORY cmdscripts lualibs luascripts pyscripts resources dictionaries DESTINATION "share/proxmark3") From 1781837bf98fb10a0f31bd0a99be19f4d6220f17 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 21:57:26 +0200 Subject: [PATCH 172/527] chg, cmake for OSX, (Thanks @doegex!) --- client/CMakeLists.txt | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index baf1dad44..505073d7e 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -191,6 +191,7 @@ add_custom_command( set(ADDITIONAL_SRC "") set(ADDITIONAL_LNK "") set(ADDITIONAL_DIRS "") +set(ADDITIONAL_LNKDIRS "") set(X86_CPUS x86 x86_64 i686) message(STATUS "CMAKE_SYSTEM_PROCESSOR := ${CMAKE_SYSTEM_PROCESSOR}") @@ -227,7 +228,7 @@ if (BLUEZ_FOUND) endif (BLUEZ_FOUND) if (PYTHON3EMBED_FOUND) - message("Python3 library found, building with python3 support :)") + message("Python3-embed library found, building with python3 support :)") add_definitions("-DHAVE_PYTHON") set(ADDITIONAL_DIRS ${PYTHON3EMBED_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) set(ADDITIONAL_LNK ${PYTHON3EMBED_LIBRARIES} ${ADDITIONAL_LNK}) @@ -237,7 +238,7 @@ elseif (PYTHON3_FOUND) add_definitions("-DHAVE_PYTHON") set(ADDITIONAL_DIRS ${PYTHON3_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) set(ADDITIONAL_LNK ${PYTHON3_LIBRARIES} ${ADDITIONAL_LNK}) - set(ADDITIONAL_LNKDIRS ${PYTHON3_LIBRARY_DIRS} ${ADDITIONAL_LNKDIRS}) + set(ADDITIONAL_LNKDIRS ${PYTHON3_LIBRARY_DIRS} ${ADDITIONAL_LNKDIRS}) endif (PYTHON3EMBED_FOUND) add_executable( @@ -302,8 +303,15 @@ target_link_libraries(proxmark3 PRIVATE pm3rrg_rdv4_whereami ${ADDITIONAL_LNK}) -target_link_directories(proxmark3 PRIVATE ${ADDITIONAL_LNKDIRS}) - +# OSX have a hard time compiling python3 dependency with older cmake. +if (PYTHON3EMBED_FOUND AND PYTHON3_FOUND) + if (NOT CMAKE_VERSION VERSION_LESS 3.13) + target_link_directories(proxmark3 PRIVATE ${ADDITIONAL_LNKDIRS}) + elseif (APPLE) + message( SEND_ERROR "Your CMAKE version is too old for Apple platform, please update to a version >=3.13" ) + endif() +endif() + install(TARGETS proxmark3 DESTINATION "bin") install(DIRECTORY cmdscripts lualibs luascripts pyscripts resources dictionaries DESTINATION "share/proxmark3") From 125e05ec0e6522ba116e8265faa7499a3bf5483b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 26 May 2020 21:58:50 +0200 Subject: [PATCH 173/527] chg, clean up --- client/src/cmdscript.c | 30 ++++++++++++------------------ 1 file changed, 12 insertions(+), 18 deletions(-) diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index 07764db88..6d95c40ea 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -157,22 +157,22 @@ static int CmdScriptRun(const char *Cmd) { int arg_len = 0; static uint8_t luascriptfile_idx = 0; sscanf(Cmd, "%127s%n %255[^\n\r]%n", preferredName, &name_len, arguments, &arg_len); - + char *extension_chk; extension_chk = str_dup(preferredName); str_lower(extension_chk); pm3_scriptfile_t ext = PM3_LUA; - + if (str_endswith(extension_chk, ".cmd")) { ext = PM3_CMD; } - + #ifdef HAVE_PYTHON if (str_endswith(extension_chk, ".py")) { ext = PM3_PY; } #endif - + char *script_path = NULL; if ((ext == PM3_LUA) && (searchFile(&script_path, LUA_SCRIPTS_SUBDIR, preferredName, ".lua", true) == PM3_SUCCESS)) { int error; @@ -241,8 +241,8 @@ static int CmdScriptRun(const char *Cmd) { free(script_path); return ret; } - - /* + + /* For apt (Ubuntu, Debian...): sudo apt-get install python3-dev # for python3.x installs @@ -264,13 +264,12 @@ static int CmdScriptRun(const char *Cmd) { For apt-cyg (Cygwin...): apt-cyg install python3-devel # for python3.x installs - */ #ifdef HAVE_PYTHON - + if ((ext == PM3_PY) && (searchFile(&script_path, PYTHON_SCRIPTS_SUBDIR, preferredName, ".py", true) == PM3_SUCCESS)) { - + PrintAndLogEx(SUCCESS, "executing python " _YELLOW_("%s"), script_path); PrintAndLogEx(SUCCESS, "args " _YELLOW_("'%s'"), arguments); @@ -288,7 +287,6 @@ static int CmdScriptRun(const char *Cmd) { //int argc, char ** argv char *argv[128]; int argc = split(arguments, argv); - wchar_t *py_args[argc]; py_args[0] = Py_DecodeLocale(preferredName, NULL); for (int i = 0; i < argc; i++) { @@ -296,28 +294,24 @@ static int CmdScriptRun(const char *Cmd) { } PySys_SetArgv(argc+1, py_args); - + // clean up for (int i = 0; i < argc; ++i) { free(argv[i]); } - + // setup search paths. set_python_paths(); - + FILE *f = fopen(script_path, "r"); if (f == NULL) { PrintAndLogEx(ERR, "Could open file " _YELLOW_("%s"), script_path); free(script_path); - return PM3_ESOFT; + return PM3_ESOFT; } - // to we need to manually call all importmodules? - //PyImport_ImportModule("requests"); PyRun_SimpleFileExFlags(f, preferredName, 1, NULL); - Py_Finalize(); - PyMem_RawFree(program); free(script_path); PrintAndLogEx(SUCCESS, "\nfinished " _YELLOW_("%s"), preferredName); From 02c76f39e284d36f461173a660de8d48d78df5aa Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 26 May 2020 22:20:34 +0200 Subject: [PATCH 174/527] fix cmake for osx+python --- client/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 505073d7e..c01c199d9 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -304,7 +304,7 @@ target_link_libraries(proxmark3 PRIVATE ${ADDITIONAL_LNK}) # OSX have a hard time compiling python3 dependency with older cmake. -if (PYTHON3EMBED_FOUND AND PYTHON3_FOUND) +if (PYTHON3EMBED_FOUND OR PYTHON3_FOUND) if (NOT CMAKE_VERSION VERSION_LESS 3.13) target_link_directories(proxmark3 PRIVATE ${ADDITIONAL_LNKDIRS}) elseif (APPLE) From 24bdecac8e44e202d2709c78401cc20e62357dea Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 26 May 2020 19:06:08 +0200 Subject: [PATCH 175/527] cmake: use less hardcoded items --- client/CMakeLists.txt | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index c01c199d9..28735b9b7 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -30,6 +30,7 @@ set(QT_PACKAGELIST set(Qt5_FOUND ON) foreach(_qt_package IN LISTS QT_PACKAGELIST) find_package(${_qt_package} QUIET ${QT_FIND_PACKAGE_OPTIONS}) + set(Qt5_LIBRARIES ${${_qt_package}_LIBRARIES} ${Qt5_LIBRARIES}) if(NOT ${_qt_package}_FOUND) set(Qt5_FOUND OFF) endif(NOT ${_qt_package}_FOUND) @@ -213,7 +214,7 @@ if (Qt5_FOUND) ${TARGET_SOURCES}) add_definitions("-DHAVE_GUI") - set(ADDITIONAL_LNK Qt5::Core Qt5::Widgets Qt5::Gui ${ADDITIONAL_LNK}) + set(ADDITIONAL_LNK ${Qt5_LIBRARIES} ${ADDITIONAL_LNK}) else (Qt5_FOUND) message("Qt5 library not found, not building gui") set(TARGET_SOURCES @@ -224,7 +225,7 @@ endif (Qt5_FOUND) if (BLUEZ_FOUND) message("Bluez library found, building native Bluetooth support :)") add_definitions("-DHAVE_BLUEZ") - set(ADDITIONAL_LNK bluetooth ${ADDITIONAL_LNK}) + set(ADDITIONAL_LNK ${BLUEZ_LIBRARIES} ${ADDITIONAL_LNK}) endif (BLUEZ_FOUND) if (PYTHON3EMBED_FOUND) From b4c715d8fb69f81a7d0abf4d9b0195321c351648 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Wed, 27 May 2020 00:40:01 +0200 Subject: [PATCH 176/527] script run: look for all three extensions if not specified --- client/src/cmdscript.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index 6d95c40ea..c9b485231 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -34,11 +34,12 @@ #include "fileutils.h" typedef enum { + PM3_UNSPECIFIED, PM3_LUA, PM3_CMD, #ifdef HAVE_PYTHON PM3_PY -#endif +#endif } pm3_scriptfile_t; static int CmdHelp(const char *Cmd); @@ -161,20 +162,20 @@ static int CmdScriptRun(const char *Cmd) { char *extension_chk; extension_chk = str_dup(preferredName); str_lower(extension_chk); - pm3_scriptfile_t ext = PM3_LUA; - - if (str_endswith(extension_chk, ".cmd")) { + pm3_scriptfile_t ext = PM3_UNSPECIFIED; + if (str_endswith(extension_chk, ".lua")) { + ext = PM3_LUA; + } else if (str_endswith(extension_chk, ".cmd")) { ext = PM3_CMD; } - #ifdef HAVE_PYTHON - if (str_endswith(extension_chk, ".py")) { + else if (str_endswith(extension_chk, ".py")) { ext = PM3_PY; } #endif char *script_path = NULL; - if ((ext == PM3_LUA) && (searchFile(&script_path, LUA_SCRIPTS_SUBDIR, preferredName, ".lua", true) == PM3_SUCCESS)) { + if (((ext == PM3_LUA) || (ext == PM3_UNSPECIFIED)) && (searchFile(&script_path, LUA_SCRIPTS_SUBDIR, preferredName, ".lua", true) == PM3_SUCCESS)) { int error; if (luascriptfile_idx == MAX_NESTED_LUASCRIPT) { PrintAndLogEx(ERR, "too many nested scripts, skipping %s\n", script_path); @@ -230,7 +231,7 @@ static int CmdScriptRun(const char *Cmd) { return PM3_SUCCESS; } - if ((ext == PM3_CMD) && (searchFile(&script_path, CMD_SCRIPTS_SUBDIR, preferredName, ".cmd", true) == PM3_SUCCESS)) { + if (((ext == PM3_CMD) || (ext == PM3_UNSPECIFIED)) && (searchFile(&script_path, CMD_SCRIPTS_SUBDIR, preferredName, ".cmd", true) == PM3_SUCCESS)) { PrintAndLogEx(SUCCESS, "executing Cmd " _YELLOW_("%s"), script_path); PrintAndLogEx(SUCCESS, "args " _YELLOW_("'%s'"), arguments); @@ -268,7 +269,7 @@ static int CmdScriptRun(const char *Cmd) { #ifdef HAVE_PYTHON - if ((ext == PM3_PY) && (searchFile(&script_path, PYTHON_SCRIPTS_SUBDIR, preferredName, ".py", true) == PM3_SUCCESS)) { + if (((ext == PM3_PY) || (ext == PM3_UNSPECIFIED)) && (searchFile(&script_path, PYTHON_SCRIPTS_SUBDIR, preferredName, ".py", true) == PM3_SUCCESS)) { PrintAndLogEx(SUCCESS, "executing python " _YELLOW_("%s"), script_path); PrintAndLogEx(SUCCESS, "args " _YELLOW_("'%s'"), arguments); @@ -323,13 +324,14 @@ static int CmdScriptRun(const char *Cmd) { int ret = PM3_EUNDEF; if (ext == PM3_LUA) ret = searchFile(&script_path, LUA_SCRIPTS_SUBDIR, preferredName, ".lua", false); - - if (ext == PM3_CMD) + else if (ext == PM3_CMD) ret = searchFile(&script_path, CMD_SCRIPTS_SUBDIR, preferredName, ".cmd", false); #ifdef HAVE_PYTHON - if (ext == PM3_PY) + else if (ext == PM3_PY) ret = searchFile(&script_path, PYTHON_SCRIPTS_SUBDIR, preferredName, ".py", false); #endif + else if (ext == PM3_UNSPECIFIED) + PrintAndLogEx(FAILED, "Error - can't find %s.[lua|cmd|py]", preferredName); free(script_path); return ret; } From fcfdd92407f60190b577130d7ae742d740dbbdf7 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Wed, 27 May 2020 01:15:20 +0200 Subject: [PATCH 177/527] python: adjust help, hide more if no python available, search lua/cmd/py if no extension given --- client/Makefile | 10 +++++++--- client/src/cmdscript.c | 23 ++++++++++++++++++----- 2 files changed, 25 insertions(+), 8 deletions(-) diff --git a/client/Makefile b/client/Makefile index bbaee39b0..52ccfc23f 100644 --- a/client/Makefile +++ b/client/Makefile @@ -372,10 +372,14 @@ else endif endif -ifeq ($(PYTHON_FOUND),1) - $(info Python3 library: Python3 v$(shell pkg-config --modversion python3) found, enabled) +ifeq ($(SKIPPYTHON),1) + $(info Python3 library: skipped) else - $(info Python3 library: Python3 not found, disabled) + ifeq ($(PYTHON_FOUND),1) + $(info Python3 library: Python3 v$(shell pkg-config --modversion python3) found, enabled) + else + $(info Python3 library: Python3 not found, disabled) + endif endif ifeq ($(SKIPWHEREAMISYSTEM),1) diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index c9b485231..bc8116849 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -139,8 +139,11 @@ static int CmdScriptList(const char *Cmd) { ret = searchAndList(CMD_SCRIPTS_SUBDIR, ".cmd"); if (ret != PM3_SUCCESS) return ret; - +#ifdef HAVE_PYTHON return searchAndList(PYTHON_SCRIPTS_SUBDIR, ".py"); +#else + return ret; +#endif } /** @@ -158,7 +161,10 @@ static int CmdScriptRun(const char *Cmd) { int arg_len = 0; static uint8_t luascriptfile_idx = 0; sscanf(Cmd, "%127s%n %255[^\n\r]%n", preferredName, &name_len, arguments, &arg_len); - + if (strlen(preferredName) == 0) { + PrintAndLogEx(FAILED, "no script name provided"); + return PM3_EINVARG; + } char *extension_chk; extension_chk = str_dup(preferredName); str_lower(extension_chk); @@ -329,15 +335,18 @@ static int CmdScriptRun(const char *Cmd) { #ifdef HAVE_PYTHON else if (ext == PM3_PY) ret = searchFile(&script_path, PYTHON_SCRIPTS_SUBDIR, preferredName, ".py", false); -#endif else if (ext == PM3_UNSPECIFIED) PrintAndLogEx(FAILED, "Error - can't find %s.[lua|cmd|py]", preferredName); +#else + else if (ext == PM3_UNSPECIFIED) + PrintAndLogEx(FAILED, "Error - can't find %s.[lua|cmd]", preferredName); +#endif free(script_path); return ret; } static command_t CommandTable[] = { - {"help", CmdHelp, AlwaysAvailable, "This help"}, + {"help", CmdHelp, AlwaysAvailable, "Usage info"}, {"list", CmdScriptList, AlwaysAvailable, "List available scripts"}, {"run", CmdScriptRun, AlwaysAvailable, "<name> -- execute a script"}, {NULL, NULL, NULL, NULL} @@ -351,7 +360,11 @@ static command_t CommandTable[] = { */ static int CmdHelp(const char *Cmd) { (void)Cmd; // Cmd is not used so far - PrintAndLogEx(NORMAL, "This is a feature to run Lua-scripts. You can place Lua-scripts within the luascripts/-folder. "); +#ifdef HAVE_PYTHON + PrintAndLogEx(NORMAL, "This is a feature to run Lua/Cmd/Python scripts. You can place scripts within the luascripts/cmdscripts/pyscripts folders. "); +#else + PrintAndLogEx(NORMAL, "This is a feature to run Lua/Cmd scripts. You can place scripts within the luascripts/cmdscripts folders. "); +#endif return PM3_SUCCESS; } From a8c3859ed18cc9f10a76a1d0ef04ea1e8f4dd1f6 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 10:19:22 +0200 Subject: [PATCH 178/527] chg, 'script run' - added hint --- client/src/cmdscript.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index bc8116849..38c980765 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -37,7 +37,7 @@ typedef enum { PM3_UNSPECIFIED, PM3_LUA, PM3_CMD, -#ifdef HAVE_PYTHON +#ifdef HAVE_PYTHON PM3_PY #endif } pm3_scriptfile_t; @@ -77,12 +77,12 @@ static void set_python_path(char *path) { if (syspath == 0) { PrintAndLogEx(WARNING, "Python failed to getobject"); } - + PyObject *pName = PyUnicode_FromString(path); if (PyList_Insert(syspath, 0, pName)) { PrintAndLogEx(WARNING, "Error inserting extra path into sys.path list"); } - + if (PySys_SetObject("path", syspath)) { PrintAndLogEx(WARNING,"Error setting sys.path object"); } @@ -135,7 +135,7 @@ static int CmdScriptList(const char *Cmd) { int ret = searchAndList(LUA_SCRIPTS_SUBDIR, ".lua"); if (ret != PM3_SUCCESS) return ret; - + ret = searchAndList(CMD_SCRIPTS_SUBDIR, ".cmd"); if (ret != PM3_SUCCESS) return ret; @@ -163,6 +163,7 @@ static int CmdScriptRun(const char *Cmd) { sscanf(Cmd, "%127s%n %255[^\n\r]%n", preferredName, &name_len, arguments, &arg_len); if (strlen(preferredName) == 0) { PrintAndLogEx(FAILED, "no script name provided"); + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`script list`") " to see available scripts"); return PM3_EINVARG; } char *extension_chk; From fa2e952dc9609c199860c35ce7f2ca8f989c73a9 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 10:19:45 +0200 Subject: [PATCH 179/527] chg, swapped prefix for HINT --- client/src/ui.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/ui.c b/client/src/ui.c index 798ed165a..cc256d8e3 100644 --- a/client/src/ui.c +++ b/client/src/ui.c @@ -207,6 +207,8 @@ void PrintAndLogEx(logLevel_t level, const char *fmt, ...) { strncpy(prefix, _BLUE_("[#] "), sizeof(prefix) - 1); break; case HINT: + strncpy(prefix, _YELLOW_("[?] "), sizeof(prefix) - 1); + break; case SUCCESS: strncpy(prefix, _GREEN_("[+] "), sizeof(prefix) - 1); break; From e381bd51196b0eecb675f65fdb9617df8db048b1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 11:44:34 +0200 Subject: [PATCH 180/527] textual --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index fdb0b7c05..3a70189b2 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Add Python3 as possible script engine (@iceman1001, @doegox) - Add doc/mfu_binary_format_notes.md (@iceman1001) - Fix `hf mfu dump` - now reads Ulev1 3counter vs NTAG 1 counters (@iceman1001) - Fix `hf mfu info` - now print correct cfg1 - nfc protection (@iceman1001) From f32620a04bbbac55a621b86eb024ea4d4d57687f Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 11:53:17 +0200 Subject: [PATCH 181/527] OLD->MIX --- client/src/cmdhfmfu.c | 50 +++++++++++++++++++++++++++++++++++++------ 1 file changed, 43 insertions(+), 7 deletions(-) diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index efd10210d..b150d3435 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -486,7 +486,7 @@ static int ul_fudan_check(void) { uint8_t cmd[4] = {0x30, 0x00, 0x02, 0xa7}; //wrong crc on purpose should be 0xa8 clearCommandBuffer(); - SendCommandOLD(CMD_HF_ISO14443A_READER, ISO14A_RAW | ISO14A_NO_DISCONNECT | ISO14A_NO_RATS, 4, 0, cmd, sizeof(cmd)); + SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_RAW | ISO14A_NO_DISCONNECT | ISO14A_NO_RATS, 4, 0, cmd, sizeof(cmd)); PacketResponseNG resp; if (!WaitForResponseTimeout(CMD_ACK, &resp, 1500)) return UL_ERROR; if (resp.oldarg[0] != 1) return UL_ERROR; @@ -1052,6 +1052,42 @@ uint32_t GetHF14AMfU_Type(void) { switch (len) { case 0x0A: { + /* + MF0UL1001DUx 0004030100000B03 +MF0UL1101DUx 0004030101000B03 +MF0ULH1101DUx 0004030201000B03 +MF0UL1141DUF 0004030301000B03 +MF0UL2101Dxy 0004030101000E03 +MF0UL2101DUx 0004030201000E03 +MF0UL3101DUx 0004030101001103 +MF0ULH3101DUx 0004030201001103 +MF0UL5101DUx 0004030101001303 +NT2L1011F0DUx 0004040101000B03 +NT2H1011G0DUD 0004040201000B03 +NT2L1211F0DUx 0004040101000E03 +NT2H1311G0DUx 0004040201000F03 +NT2H1311F0Dxy 0004040401000F03 +NT2H1411G0DUx 0004040201011103 +NT2H1511G0DUx 0004040201001103 +NT2H1511F0Dxy 0004040401001103 +NT2H1611G0DUx 0004040201001303 +NT2H1611F0Dxy 0004040401001303 +NT2H1311C1DTL 0004040201010F03 +NT2H1311TTDUx 0004040203000F03 +NT3H1101W0FHK 0004040502001303 +NT3H1201W0FHK 0004040502001503 +NT3H1101W0FHK_Variant 0004040502011303 +NT3H1201 0004040502011503 +NT3H2111 0004040502021303 +NT3H2211 0004040502021503 +nhs 0004040600001303 +MF0UN0001DUx 0004030102000B03 +MF0UNH0001DUx 0004030202000B03 +MF0UN1001DUx 0004030103000B03 +MF0UNH1001DUx 0004030203000B03 +NT2L1001G0DUx 0004040102000B03 +NT2H1001G0DUx 0004040202000B03 + */ if (memcmp(version, "\x00\x04\x03\x01\x01\x00\x0B", 7) == 0) { tagtype = UL_EV1_48; break; } else if (memcmp(version, "\x00\x04\x03\x01\x02\x00\x0B", 7) == 0) { tagtype = UL_NANO_40; break; } @@ -1534,7 +1570,7 @@ static int CmdHF14AMfUWrBl(const char *Cmd) { } clearCommandBuffer(); - SendCommandOLD(CMD_HF_MIFAREU_WRITEBL, blockNo, keytype, 0, cmddata, datalen); + SendCommandMIX(CMD_HF_MIFAREU_WRITEBL, blockNo, keytype, 0, cmddata, datalen); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { uint8_t isOK = resp.oldarg[0] & 0xff; @@ -1639,7 +1675,7 @@ static int CmdHF14AMfURdBl(const char *Cmd) { } clearCommandBuffer(); - SendCommandOLD(CMD_HF_MIFAREU_READBL, blockNo, keytype, 0, authKeyPtr, datalen); + SendCommandMIX(CMD_HF_MIFAREU_READBL, blockNo, keytype, 0, authKeyPtr, datalen); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { uint8_t isOK = resp.oldarg[0] & 0xff; @@ -1907,7 +1943,7 @@ static int CmdHF14AMfUDump(const char *Cmd) { } clearCommandBuffer(); - SendCommandOLD(CMD_HF_MIFAREU_READCARD, startPage, pages, keytype, authKeyPtr, dataLen); + SendCommandMIX(CMD_HF_MIFAREU_READCARD, startPage, pages, keytype, authKeyPtr, dataLen); PacketResponseNG resp; if (!WaitForResponseTimeout(CMD_ACK, &resp, 2500)) { @@ -2812,7 +2848,7 @@ static int CmdHF14AMfuOtpTearoff(const char *Cmd) { PrintAndLogEx(INFO, "Reading block BEFORE attack"); clearCommandBuffer(); - SendCommandOLD(CMD_HF_MIFAREU_READBL, blockNoUint, 0, 0, NULL, 0); + SendCommandMIX(CMD_HF_MIFAREU_READBL, blockNoUint, 0, 0, NULL, 0); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { @@ -2828,7 +2864,7 @@ static int CmdHF14AMfuOtpTearoff(const char *Cmd) { PrintAndLogEx(INFO, "....."); clearCommandBuffer(); - SendCommandOLD(CMD_HF_MFU_OTP_TEAROFF, blockNoUint, actualTime, 0, teardata, 8); + SendCommandMIX(CMD_HF_MFU_OTP_TEAROFF, blockNoUint, actualTime, 0, teardata, 8); if (!WaitForResponseTimeout(CMD_HF_MFU_OTP_TEAROFF, &resp, 4000)) { PrintAndLogEx(WARNING, "Failed"); return PM3_ESOFT; @@ -2837,7 +2873,7 @@ static int CmdHF14AMfuOtpTearoff(const char *Cmd) { PrintAndLogEx(INFO, "Reading block AFTER attack"); clearCommandBuffer(); - SendCommandOLD(CMD_HF_MIFAREU_READBL, blockNoUint, 0, 0, NULL, 0); + SendCommandMIX(CMD_HF_MIFAREU_READBL, blockNoUint, 0, 0, NULL, 0); if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { uint8_t isOK = resp.oldarg[0] & 0xff; if (isOK) { From 045f2a8587afe891550c0324b04650e9f1627108 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 11:55:32 +0200 Subject: [PATCH 182/527] OLD->MIX --- client/src/mifare/mifarehost.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index 00e26a89e..fae64a2f6 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -748,7 +748,7 @@ out: int mfReadSector(uint8_t sectorNo, uint8_t keyType, uint8_t *key, uint8_t *data) { clearCommandBuffer(); - SendCommandOLD(CMD_HF_MIFARE_READSC, sectorNo, keyType, 0, key, 6); + SendCommandMIX(CMD_HF_MIFARE_READSC, sectorNo, keyType, 0, key, 6); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { @@ -910,7 +910,7 @@ int mfCWipe(uint8_t *uid, uint8_t *atqa, uint8_t *sak) { int mfCSetBlock(uint8_t blockNo, uint8_t *data, uint8_t *uid, uint8_t params) { clearCommandBuffer(); - SendCommandOLD(CMD_HF_MIFARE_CSETBL, params, blockNo, 0, data, 16); + SendCommandMIX(CMD_HF_MIFARE_CSETBL, params, blockNo, 0, data, 16); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { uint8_t isOK = resp.oldarg[0] & 0xff; From f3cc84220f221ad76b118f87e7c04bbe859eaa71 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 11:58:04 +0200 Subject: [PATCH 183/527] OLD->MIX --- client/src/cmdsmartcard.c | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index f21ef5c4a..f60dd5513 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -366,7 +366,7 @@ static int smart_responseEx(uint8_t *data, bool silent) { uint8_t getstatus[] = {0x00, ISO7816_GET_RESPONSE, 0x00, 0x00, len}; clearCommandBuffer(); - SendCommandOLD(CMD_SMART_RAW, SC_RAW, sizeof(getstatus), 0, getstatus, sizeof(getstatus)); + SendCommandMIX(CMD_SMART_RAW, SC_RAW, sizeof(getstatus), 0, getstatus, sizeof(getstatus)); datalen = smart_wait(data, silent); @@ -893,7 +893,7 @@ static void smart_brute_prim(void) { for (int i = 0; i < ARRAYLEN(get_card_data); i += 5) { clearCommandBuffer(); - SendCommandOLD(CMD_SMART_RAW, SC_RAW_T0, 5, 0, get_card_data + i, 5); + SendCommandMIX(CMD_SMART_RAW, SC_RAW_T0, 5, 0, get_card_data + i, 5); int len = smart_responseEx(buf, true); @@ -936,7 +936,7 @@ static int smart_brute_sfi(bool decodeTLV) { READ_RECORD[3] = (sfi << 3) | 4; clearCommandBuffer(); - SendCommandOLD(CMD_SMART_RAW, SC_RAW_T0, sizeof(READ_RECORD), 0, READ_RECORD, sizeof(READ_RECORD)); + SendCommandMIX(CMD_SMART_RAW, SC_RAW_T0, sizeof(READ_RECORD), 0, READ_RECORD, sizeof(READ_RECORD)); len = smart_responseEx(buf, true); @@ -944,7 +944,7 @@ static int smart_brute_sfi(bool decodeTLV) { READ_RECORD[4] = buf[1]; clearCommandBuffer(); - SendCommandOLD(CMD_SMART_RAW, SC_RAW_T0, sizeof(READ_RECORD), 0, READ_RECORD, sizeof(READ_RECORD)); + SendCommandMIX(CMD_SMART_RAW, SC_RAW_T0, sizeof(READ_RECORD), 0, READ_RECORD, sizeof(READ_RECORD)); len = smart_responseEx(buf, true); READ_RECORD[4] = 0; @@ -979,7 +979,7 @@ static void smart_brute_options(bool decodeTLV) { // Get processing options command clearCommandBuffer(); - SendCommandOLD(CMD_SMART_RAW, SC_RAW_T0, sizeof(GET_PROCESSING_OPTIONS), 0, GET_PROCESSING_OPTIONS, sizeof(GET_PROCESSING_OPTIONS)); + SendCommandMIX(CMD_SMART_RAW, SC_RAW_T0, sizeof(GET_PROCESSING_OPTIONS), 0, GET_PROCESSING_OPTIONS, sizeof(GET_PROCESSING_OPTIONS)); int len = smart_responseEx(buf, true); if (len > 4) { @@ -1190,7 +1190,7 @@ int ExchangeAPDUSC(bool silent, uint8_t *datain, int datainlen, bool activateCar clearCommandBuffer(); // something fishy: we have only 5 bytes but we put datainlen in arg1? - SendCommandOLD(CMD_SMART_RAW, SC_RAW_T0, datainlen, 0, data, sizeof(data)); + SendCommandMIX(CMD_SMART_RAW, SC_RAW_T0, datainlen, 0, data, sizeof(data)); len = smart_responseEx(dataout, silent); } From abff3c2ea1513dfe4be17905e5dfc6a294b0d210 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 11:59:24 +0200 Subject: [PATCH 184/527] OLD-MIX --- client/src/cmdlft55xx.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index 9b54aef8f..173d8eb22 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -3618,7 +3618,7 @@ static int CmdT55xxSetDeviceConfig(const char *Cmd) { } clearCommandBuffer(); - SendCommandOLD(CMD_LF_T55XX_SET_CONFIG, shall_persist, 0, 0, &configurations, sizeof(t55xx_configurations_t)); + SendCommandMIX(CMD_LF_T55XX_SET_CONFIG, shall_persist, 0, 0, &configurations, sizeof(t55xx_configurations_t)); return PM3_SUCCESS; } From 54d3ea9c8fc410ef550dc10d8b4e59afbc5dae50 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 12:02:59 +0200 Subject: [PATCH 185/527] OLD->MIX --- client/src/cmdhf14b.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhf14b.c b/client/src/cmdhf14b.c index 7be829472..bfb19323b 100644 --- a/client/src/cmdhf14b.c +++ b/client/src/cmdhf14b.c @@ -693,7 +693,7 @@ static bool HF14B_Other_Reader(void) { // uint32_t flags = ISO14B_CONNECT | ISO14B_SELECT_STD | ISO14B_RAW | ISO14B_APPEND_CRC; // clearCommandBuffer(); - // SendCommandOLD(CMD_HF_ISO14443B_COMMAND, flags, datalen, 0, data, datalen); + // SendCommandMIX(CMD_HF_ISO14443B_COMMAND, flags, datalen, 0, data, datalen); // PacketResponseNG resp; // WaitForResponse(CMD_ACK,&resp); @@ -707,7 +707,7 @@ static bool HF14B_Other_Reader(void) { // data[0] = ISO14443B_AUTHENTICATE; // clearCommandBuffer(); - // SendCommandOLD(CMD_HF_ISO14443B_COMMAND, flags, 1, 0, data, 1); + // SendCommandMIX(CMD_HF_ISO14443B_COMMAND, flags, 1, 0, data, 1); // PacketResponseNG resp; // WaitForResponse(CMD_ACK, &resp); @@ -721,7 +721,7 @@ static bool HF14B_Other_Reader(void) { // data[0] = ISO14443B_RESET; // clearCommandBuffer(); - // SendCommandOLD(CMD_HF_ISO14443B_COMMAND, flags, 1, 0, data, 1); + // SendCommandMIX(CMD_HF_ISO14443B_COMMAND, flags, 1, 0, data, 1); // PacketResponseNG resp; // WaitForResponse(CMD_ACK, &resp); @@ -913,7 +913,7 @@ static int CmdHF14BDump(const char *Cmd) { req[1] = blocknum; clearCommandBuffer(); - SendCommandOLD(CMD_HF_ISO14443B_COMMAND, ISO14B_APPEND_CRC | ISO14B_RAW, 2, 0, req, sizeof(req)); + SendCommandMIX(CMD_HF_ISO14443B_COMMAND, ISO14B_APPEND_CRC | ISO14B_RAW, 2, 0, req, sizeof(req)); if (WaitForResponseTimeout(CMD_ACK, &resp, 2000)) { From b42c5f59e13ec6a118bbce2fcaa514f0b1a26d9c Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 17:44:54 +0200 Subject: [PATCH 186/527] OLD->MIX --- client/src/cmdlfhitag.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index 5a11216fb..28cbd41d0 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -363,7 +363,7 @@ static int CmdLFHitagSim(const char *Cmd) { clearCommandBuffer(); if (tag_mem_supplied) { - SendCommandOLD(cmd, 1, 0, 0, data, datalen); + SendCommandMIX(cmd, 1, 0, 0, data, datalen); } else { SendCommandMIX(cmd, 0, 0, 0, NULL, 0); } @@ -693,7 +693,7 @@ static int CmdLFHitagWriter(const char *Cmd) { } clearCommandBuffer(); - SendCommandOLD(CMD_LF_HITAGS_WRITE, htf, 0, arg2, &htd, sizeof(htd)); + SendCommandMIX(CMD_LF_HITAGS_WRITE, htf, 0, arg2, &htd, sizeof(htd)); PacketResponseNG resp; if (!WaitForResponseTimeout(CMD_ACK, &resp, 4000)) { PrintAndLogEx(WARNING, "timeout while waiting for reply."); From 46f191e13f55aeaa5fa08a3ad1d4f28265d750bf Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 17:46:50 +0200 Subject: [PATCH 187/527] OLD->MIX --- client/src/cmdhf14a.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index d65869144..5f1ec7b18 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -1524,7 +1524,7 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { if (select_status == 2) { uint8_t rats[] = { 0xE0, 0x80 }; // FSDI=8 (FSD=256), CID=0 clearCommandBuffer(); - SendCommandOLD(CMD_HF_ISO14443A_READER, ISO14A_RAW | ISO14A_APPEND_CRC | ISO14A_NO_DISCONNECT, 2, 0, rats, sizeof(rats)); + SendCommandMIX(CMD_HF_ISO14443A_READER, ISO14A_RAW | ISO14A_APPEND_CRC | ISO14A_NO_DISCONNECT, 2, 0, rats, sizeof(rats)); WaitForResponse(CMD_ACK, &resp); memcpy(card.ats, resp.data.asBytes, resp.oldarg[0]); From 5860cb5e925112d1c62893edc2d010799fd382d6 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 17:48:02 +0200 Subject: [PATCH 188/527] OLD->MIX --- client/src/cmdhfmf.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 4940e96a2..a8003eed4 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -612,7 +612,7 @@ static int CmdHF14AMfWrBl(const char *Cmd) { memcpy(data, key, 6); memcpy(data + 10, bldata, 16); clearCommandBuffer(); - SendCommandOLD(CMD_HF_MIFARE_WRITEBL, blockNo, keyType, 0, data, sizeof(data)); + SendCommandMIX(CMD_HF_MIFARE_WRITEBL, blockNo, keyType, 0, data, sizeof(data)); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { @@ -725,7 +725,7 @@ static int CmdHF14AMfRdSc(const char *Cmd) { PrintAndLogEx(NORMAL, "--sector no:%d key type:%c key:%s ", sectorNo, keyType ? 'B' : 'A', sprint_hex(key, 6)); clearCommandBuffer(); - SendCommandOLD(CMD_HF_MIFARE_READSC, sectorNo, keyType, 0, key, 6); + SendCommandMIX(CMD_HF_MIFARE_READSC, sectorNo, keyType, 0, key, 6); PrintAndLogEx(NORMAL, ""); PacketResponseNG resp; @@ -1198,7 +1198,7 @@ static int CmdHF14AMfRestore(const char *Cmd) { memcpy(data + 10, bldata, 16); clearCommandBuffer(); - SendCommandOLD(CMD_HF_MIFARE_WRITEBL, FirstBlockOfSector(sectorNo) + blockNo, keyType, 0, data, sizeof(data)); + SendCommandMIX(CMD_HF_MIFARE_WRITEBL, FirstBlockOfSector(sectorNo) + blockNo, keyType, 0, data, sizeof(data)); PacketResponseNG resp; if (WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { From 25890c3567f7ccc5f372e1c01082b058b1887321 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 17:49:18 +0200 Subject: [PATCH 189/527] OLD->MIX --- client/src/cmdhflto.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhflto.c b/client/src/cmdhflto.c index 947e2bacf..4739d6f06 100644 --- a/client/src/cmdhflto.c +++ b/client/src/cmdhflto.c @@ -109,7 +109,7 @@ static int lto_send_cmd_raw(uint8_t *cmd, uint8_t len, uint8_t *response, uint16 arg1 |= len; - SendCommandOLD(CMD_HF_ISO14443A_READER, arg0, arg1, 0, cmd, len); + SendCommandMIX(CMD_HF_ISO14443A_READER, arg0, arg1, 0, cmd, len); PacketResponseNG resp; if (!WaitForResponseTimeout(CMD_ACK, &resp, 1500)) { From a7260029be15dbe818687a3e94ad36f0c4a92c2b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 17:53:02 +0200 Subject: [PATCH 190/527] OLD->MIX --- client/src/cmdhficlass.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 3026f3964..85caf2364 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -681,7 +681,7 @@ static int CmdHFiClassSim(const char *Cmd) { default: { uint8_t numberOfCSNs = 0; clearCommandBuffer(); - SendCommandOLD(CMD_HF_ICLASS_SIMULATE, simType, numberOfCSNs, 0, CSN, 8); + SendCommandMIX(CMD_HF_ICLASS_SIMULATE, simType, numberOfCSNs, 0, CSN, 8); break; } } From 3d67bde0d9bcb7708c5ff440927b079cd7910012 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 17:58:34 +0200 Subject: [PATCH 191/527] old->mix --- armsrc/Standalone/hf_young.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/armsrc/Standalone/hf_young.c b/armsrc/Standalone/hf_young.c index 193f124ed..a1b32dfab 100644 --- a/armsrc/Standalone/hf_young.c +++ b/armsrc/Standalone/hf_young.c @@ -151,10 +151,10 @@ void RunMod(void) { SpinDelay(500); // Begin clone function here: /* Example from client/mifarehost.c for commanding a block write for "magic Chinese" cards: - SendCommandOLD(CMD_HF_MIFARE_CSETBL, params & (0xFE | (uid == NULL ? 0:1)), blockNo, 0, data, 16); + SendCommandMIX(CMD_HF_MIFARE_CSETBL, params & (0xFE | (uid == NULL ? 0:1)), blockNo, 0, data, 16); Block read is similar: - SendCommandOLD(CMD_HF_MIFARE_CGETBL, params, blockNo, 0,...}; + SendCommandMIX(CMD_HF_MIFARE_CGETBL, params, blockNo, 0,...}; We need to imitate that call with blockNo 0 to set a uid. The get and set commands are handled in this file: From 4a1e539e4cf94566d97e30343f1b234f9ce6964b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 18:01:07 +0200 Subject: [PATCH 192/527] draft of compiled knowledge of fpga arm --- doc/fpga_arm_notes.md | 249 ++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 249 insertions(+) create mode 100644 doc/fpga_arm_notes.md diff --git a/doc/fpga_arm_notes.md b/doc/fpga_arm_notes.md new file mode 100644 index 000000000..48891408e --- /dev/null +++ b/doc/fpga_arm_notes.md @@ -0,0 +1,249 @@ +# Notes on ARM & FPGA comms + + +https://github.com/RfidResearchGroup/proxmark3/blob/master/doc/original_proxmark3/proxmark3.pdf + +INTERFACE FROM THE ARM TO THE FPGA +================================== + +The FPGA and the ARM can communicate in two main ways: using the ARM's +general-purpose synchronous serial port (the SSP), or using the ARM's +SPI port. The SPI port is used to configure the FPGA. The ARM writes a +configuration word to the FPGA, which determines what operation will +be performed (e.g. read 13.56 MHz vs. read 125 kHz vs. read 134 kHz +vs...). The SPI is used exclusively for configuration. + +The SSP is used for actual data sent over the air. The ARM's SSP can +work in slave mode, which means that we can send the data using clocks +generated by the FPGA (either from the PCK0 clock, which the ARM itself +supplies, or from the 13.56 MHz clock, which is certainly not going to +be synchronous to anything in the ARM), which saves synchronizing logic +in the FPGA. The SSP is bi-directional and full-duplex. + + +The FPGA communicates with the ARM through either +1) SPI port (the ARM is the master) +2) SSC synchronous serial port (the ARM is the master). + + +opamps, (*note, this affects source code in ARM, calculating actual voltage from antenna. Manufacturers never report what they use to much frustration) +comparators +coil drivers + +LF analog path (MCP6294 opamp. This has a GBW of 10 MHz), all 'slow' signals. Used for low frequency signals. Follows the peak detector. Signal centered around generated voltage Vmid. + + +## FPGA +Since the SPARTAN II is a old outdated FPGA, thus is very limited resource there was a need to split LF and HF functionality into two seperate FPGA images. Which are stored in ARM flash memory as bitstreams. + +We swap between these images by flashing fpga from ARM on the go. It takes about 1sec. Hence its usually a bad idea to program your device to continuously execute LF alt HF commands. + +The FPGA images is precompiled and located inside the /fpga folder. + - fpga_hf.bit + - fpga_lf.bit + +There is very rarely changes to the images so there is no need to setup a fpga tool chain to compile it yourself. +Since the FPGA is very old, the Xilinix WebPack ISE 10.1 is the last working tool chain. You can download this legacy development on xilinix and register for a free product installation id. +Or use mine `11LTAJ5ZJK3PXTUBMF0C0J6C4` The package to download is about 7Gb and linux based. Though I recently managed to install it on WSL for Windows 10. + +In order to save space, these fpga images is zlib compressed and included in the fullimage.elf file when compiling the ARM SRC. `make armsrc` +This means we save some precious space on the ARM but its a bit more complex when flashing to fpga since it has to decompress on the fly. + + +### FPGA modes. + - Major modes + - Minor modes + +## ARM FPGA communications. + +The ARM talks with FPGA over the Synchronous Serial Port (SSC) rx an tx. + +ARM, send a 16bit configuration with fits the select major mode. + + + +## ARM GPIO setup + +``` + // First configure the GPIOs, and get ourselves a clock. + AT91C_BASE_PIOA->PIO_ASR = + GPIO_SSC_FRAME | + GPIO_SSC_DIN | + GPIO_SSC_DOUT | + GPIO_SSC_CLK; + AT91C_BASE_PIOA->PIO_PDR = GPIO_SSC_DOUT; + + AT91C_BASE_PMC->PMC_PCER = (1 << AT91C_ID_SSC); + + // Now set up the SSC proper, starting from a known state. + AT91C_BASE_SSC->SSC_CR = AT91C_SSC_SWRST; + + // RX clock comes from TX clock, RX starts on Transmit Start, + // data and frame signal is sampled on falling edge of RK + AT91C_BASE_SSC->SSC_RCMR = SSC_CLOCK_MODE_SELECT(1) | SSC_CLOCK_MODE_START(1); + + // 8, 16 or 32 bits per transfer, no loopback, MSB first, 1 transfer per sync + // pulse, no output sync + if ((FPGA_mode & FPGA_MAJOR_MODE_MASK) == FPGA_MAJOR_MODE_HF_READER && FpgaGetCurrent() == FPGA_BITSTREAM_HF) { + AT91C_BASE_SSC->SSC_RFMR = SSC_FRAME_MODE_BITS_IN_WORD(16) | AT91C_SSC_MSBF | SSC_FRAME_MODE_WORDS_PER_TRANSFER(0); + } else { + AT91C_BASE_SSC->SSC_RFMR = SSC_FRAME_MODE_BITS_IN_WORD(8) | AT91C_SSC_MSBF | SSC_FRAME_MODE_WORDS_PER_TRANSFER(0); + } + + // TX clock comes from TK pin, no clock output, outputs change on rising edge of TK, + // TF (frame sync) is sampled on falling edge of TK, start TX on rising edge of TF + AT91C_BASE_SSC->SSC_TCMR = SSC_CLOCK_MODE_SELECT(2) | SSC_CLOCK_MODE_START(5); + + // tx framing is the same as the rx framing + AT91C_BASE_SSC->SSC_TFMR = AT91C_BASE_SSC->SSC_RFMR; + +``` + +## FPGA Setup + +// Set up DMA to receive samples from the FPGA. We will use the PDC, with +// a single buffer as a circular buffer (so that we just chain back to + + + +# HARDWARE OVERVIEW + +## ADC (ANALOG TO DIGITAL CONVERTER) +The analogue signal that comes from the antenna circuit is fed into an 8-bit Analogue to Digital Converter +(ADC). This delivers 8 output bits in parallel which represent the current voltage retrieved from the field. + + +## FIELD PROGRAMMABLE GATE ARRAY, FPGA +The 8 output pins from the ADC are connected to 8 pins of the Field Programmable Gate Array (FPGA). An +FPGA has a great advantage over a normal microcontroller in the sense that it emulates hardware. A +hardware description can be compiled and flashed into an FPGA. + +Because basic arithmetic functions can be performed fast and in parallel by an FPGA it is faster than an +implementation on a normal microcontroller. Only a real hardware implementation would be faster but +this lacks the flexibility of an FPGA. + +The FPGA can therefore be seen as dynamic hardware. It is possible to make a hardware design and flash +it into the memory of the FPGA. This gives some major advantages: + + + - "Hardware" errors can be corrected; the FPGA can be flashed with a new hardware design. + - Although not as fast as a real hardware implementation, an FPGA is faster than its equivalent on microprocessor. That is, it is specialized for one job. + +The FPGA has two main tasks. The first task is to demodulate the signal received from the ADC and relay +this as a digital encoded signal to the ARM. Depending on the task this might be the demodulation of a +100% Amplitude Shift Keying (ASK) signal from the reader or the load modulation of a card. The encodin +schemes used to communicate the signal to the ARM are Modified Miller for the reader and Manchester +encoding for the card signal. + +The second task is to modulate an encoded signal that is received from the ARM into the field of the +antenna. This can be both the encoding of reader messages or card messages. For reader messages the +FPGA generates an electromagnetic field on power hi and drops the amplitude for short periods. + + +## MICROCONTROLLER +The microcontroller is responsible for the protocol management. It receives the digital encoded signals +from the FPGA and decodes them. The decoded signals can just be copied to a buffer in the EEPROM +memory. Additionally, an answer to the received message can be send by encoding a reply and +communicating this to the FPGA. + +The microcontroller (ARM) implements the transport layer. First it decodes the samples received from +the FPGA. These samples are stored in a Direct Memory Access (DMA) buffer. The samples are binary +sequences that represent whether the signal was high or low. The software on the ARM tries to decode +these samples. When the Proxmark is in sniffing mode this is done for both the Manchester and Modified +Miller at the same time. Whenever one of the decoding procedures returns a valid message, this message +is stored in another buffer (BigBuf) and both decoding procedures are set to an un-synced state. The +BigBuf is limited to the available memory on the ARM. The current firmware has 2 KB of memory +reserved for traces (Besides the tracethe buffer also stores some temporary data that is needed in the +processing). When the BigBuf buffer is full the function normally returns. A new function call from the +client is needed to download the BigBuf contents to the computer. The BigBuf is especially useful for +ptocol investigation. Every single message is stored in this buffer. When a card is emulated or when the +Proxmark is used as a reader the BigBuf can be used to store status messages or protocol exceptions. + +``` +HF PATH + -- ANTENNA -> rectifying -> lowpass filter -> ADC -> FPGA -> ARM -> USB/CDC | FPC -> CLIENT + | | | | + induct peak detect (8bit) -- modes: + via circuit HF - peak-detected + HF - RAW + HF - +``` + + +``` +LF PATH + + -- ANTENNA -> rectifying -> lowpass filter -> ADC -> FPGA -> ARM -> USB/CDC | FPC -> CLIENT + | | | | + induct peak detect (8bit) -- modes: + via circuit LF - peak-detected + LF - RAW +``` +Problems: + 1. dynamic range of signal. Ie: High Carrier signal (reader) and low + + +## + +## To behave like a READER. +By driving all of the buffers LOW, it is possible to make the antenna +look to the receive path like a parallel LC circuit; this provides a +high-voltage output signal. This is typically what will be done when we +are not actively transmitting a carrier (i.e., behaving as a reader). + +## To behave like a TAG +On the receive side, there are two possibilities, which are selected by +RLY1. A mechanical relay is used, because the signal from the antenna is +likely to be more positive or negative than the highest or lowest supply +voltages on-board. In the usual case (PEAK-DETECTED mode), the received +signal is peak-detected by an analog circuit, then filtered slightly, +and then digitized by the ADC. This is the case for both the low- and +high-frequency paths, although the details of the circuits for the +two cases are somewhat different. This receive path would typically +be selected when the device is behaving as a reader, or when it is +eavesdropping at close range. + +It is also possible to digitize the signal from the antenna directly (RAW +mode), after passing it through a gain stage. This is more likely to be +useful in reading signals at long range, but the available dynamic range +will be poor, since it is limited by the 8-bit A/D. + +In either case, an analog signal is digitized by the ADC, and +from there goes in to the FPGA. The FPGA is big enough that it +can perform DSP operations itself. For some high-frequency standards, +the subcarriers are fast enough that it would be inconvenient to do all +the math on a general-purpose CPU. The FPGA can therefore correlate for +the desired signal itself, and simply report the total to the ARM. For +low-frequency tags, it probably makes sense just to pass data straight +through to the ARM. + +The FPGA communicates with the ARM through either its SPI port (the ARM +is the master) or its generic synchronous serial port (again, the ARM +is the master). The ARM connects to the outside world over USB. + +## To sniff traffic + + + +## FPGA purpose +Digtal signal processing. +In short, apply low pass / hi pass filtering, peak detect, correlate signal meaning IQ pair collecting. + +IQ means measure at In-phase and 90 phase shift later Quadrature-phase, with IQ samples you can plot the signal on a vector plan. + + +``` +IQ1 = 1,1 : 1, -1 (rising) +IQ2 = -1,1 : 1, 1 (falling) + + + + -1,1 | 1,1 + | (q2) + (i2) | (i1) + | + ----------0------------> + | + | (q1) + -1,-1 | 1, -1 +``` \ No newline at end of file From f96361f8f13e7a7462e4c9f37da011339318c331 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 20:08:22 +0200 Subject: [PATCH 193/527] fix memleak --- client/src/cmdhfmf.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index a8003eed4..2257a3172 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4366,6 +4366,7 @@ static int CmdHF14AMfCSave(const char *Cmd) { if (select_status == 0) { PrintAndLogEx(WARNING, "iso14443a card select failed"); + free(dump); return select_status; } From dded3953efe3fc12ff5c0ecd3b72b4249af28d1b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 20:21:42 +0200 Subject: [PATCH 194/527] fix memleak on realloc and uninit variable --- client/src/scripting.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/client/src/scripting.c b/client/src/scripting.c index a5c466ea4..a1fdb8a31 100644 --- a/client/src/scripting.c +++ b/client/src/scripting.c @@ -955,7 +955,7 @@ static int l_T55xx_readblock(lua_State *L) { if (n != 4) return returnToLuaWithError(L, "Wrong number of arguments, got %d bytes, expected 4", n); - uint32_t block, usepage1, override, password; + uint32_t block, usepage1, override, password = 0; bool usepwd; size_t size; @@ -1179,15 +1179,17 @@ static int l_cwd(lua_State *L) { uint16_t path_len = FILENAME_MAX; // should be a good starting point bool error = false; - char *cwd = NULL; - cwd = (char *)calloc(path_len, sizeof(uint8_t)); + char *cwd = (char *)calloc(path_len, sizeof(uint8_t)); while (!error && (GetCurrentDir(cwd, path_len) == NULL)) { if (errno == ERANGE) { // Need bigger buffer path_len += 10; // if buffer was too small add 10 characters and try again cwd = realloc(cwd, path_len); + if (cwd == NULL) { + free(cwd); + return returnToLuaWithError(L, "Failed to allocate memory"); + } } else { - error = true; free(cwd); return returnToLuaWithError(L, "Failed to get current working directory"); } From 12a4c5f2020446079f70c35bfe3e1cc897964d6b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 20:22:07 +0200 Subject: [PATCH 195/527] fix clarify bool usage --- client/src/loclass/cipher.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/loclass/cipher.c b/client/src/loclass/cipher.c index b8d481f1e..dde046eff 100644 --- a/client/src/loclass/cipher.c +++ b/client/src/loclass/cipher.c @@ -124,8 +124,8 @@ static uint8_t _select(bool x, bool y, uint8_t r) { #define _r7 (r & 0x01) #define _z0 ( (_r0 & _r2) ^ ( _r1 & (!_r3)) ^ (_r2 | _r4) ) -#define _z1 ( (_r0 | _r2) ^ ( _r5 | _r7) ^_r1 ^ _r6 ^ x ^ y ) -#define _z2 ( (_r3 & (!_r5)) ^ (_r4 & _r6) ^ _r7 ^ x ) +#define _z1 ( (_r0 | _r2) ^ ( _r5 | _r7) ^_r1 ^ _r6 ^ (x) ^ (y) ) +#define _z2 ( (_r3 & (!_r5)) ^ (_r4 & _r6) ^ _r7 ^ (x) ) /* uint8_t r0 = r >> 7 & 0x1; @@ -177,10 +177,10 @@ static State successor(uint8_t *k, State s, bool y) { State successor = {0, 0, 0, 0}; successor.t = s.t >> 1; - successor.t |= (T(s) ^ r0 ^ r4) << 15; + successor.t |= ((T(s)) ^ r0 ^ r4) << 15; successor.b = s.b >> 1; - successor.b |= (B(s) ^ r7) << 7; + successor.b |= ((B(s)) ^ r7) << 7; bool Tt = T(s); From 49687f47498e77c47b471966709529db45c1a965 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 20:22:26 +0200 Subject: [PATCH 196/527] fix clarify bool usage --- client/src/cmdlfpac.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/src/cmdlfpac.c b/client/src/cmdlfpac.c index abfb5483a..a8e0401af 100644 --- a/client/src/cmdlfpac.c +++ b/client/src/cmdlfpac.c @@ -130,8 +130,9 @@ static void pacCardIdToRaw(uint8_t *outRawBytes, const char *cardId) { pattern = reflect8(idbytes[i - 2]); pattern |= oddparity8(pattern); if (i > 3) checksum ^= idbytes[i - 2]; - } else - pattern = (reflect8(checksum) & 0xFE) | oddparity8(checksum); + } else { + pattern = (reflect8(checksum) & 0xFE) | (oddparity8(checksum)); + } pattern <<= shift; outRawBytes[index] |= pattern >> 8 & 0xFF; From 72170720fbe0530e6770b864cf1cc558fb62ace3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 20:24:02 +0200 Subject: [PATCH 197/527] fix memleak on realloc --- client/src/ui.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/src/ui.c b/client/src/ui.c index cc256d8e3..5764e63df 100644 --- a/client/src/ui.c +++ b/client/src/ui.c @@ -100,8 +100,10 @@ int searchHomeFilePath(char **foundpath, const char *subdir, const char *filenam if (subdir != NULL) { pathlen += strlen(subdir); path = realloc(path, pathlen * sizeof(char)); - if (path == NULL) + if (path == NULL) { + free(path); return PM3_EMALLOC; + } strcat(path, subdir); #ifdef _WIN32 @@ -536,7 +538,6 @@ void memcpy_filter_emoji(void *dest, const void *src, size_t n, emojiMode_t mode } } memcpy(rdest + si, current_token, current_token_length); - si += current_token_length; } } From f6f9140c79aea30a399dead3530139f1355b49a3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 20:26:52 +0200 Subject: [PATCH 198/527] already empty --- client/src/util.c | 1 - 1 file changed, 1 deletion(-) diff --git a/client/src/util.c b/client/src/util.c index fb131e987..a22d8edde 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -111,7 +111,6 @@ void AddLogHex(const char *fn, const char *extData, const uint8_t *data, const s void AddLogUint64(const char *fn, const char *data, const uint64_t value) { char buf[20] = {0}; - memset(buf, 0x00, sizeof(buf)); sprintf(buf, "%016" PRIx64 "", value); AddLogLine(fn, data, buf); } From 6370551dd59208fee8a2d830b88113b40096a589 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 20:29:53 +0200 Subject: [PATCH 199/527] unreadvariable --- tools/hitag2crack/crack4/ht2crack4.c | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/tools/hitag2crack/crack4/ht2crack4.c b/tools/hitag2crack/crack4/ht2crack4.c index e630a956f..26460a112 100644 --- a/tools/hitag2crack/crack4/ht2crack4.c +++ b/tools/hitag2crack/crack4/ht2crack4.c @@ -295,8 +295,6 @@ static void init_guess_table(char *filename, char *uidstr) { } fclose(fp); - fp = NULL; - fprintf(stderr, "Loaded %u nRaR pairs\n", num_nRaR); // set key and copy in enc_nR and ks values @@ -400,7 +398,7 @@ static double bit_score(uint64_t s, uint64_t size, uint64_t b) { * multiplied by the number of relevant bits in the scored state * to give weight to more complete states. */ static double score(uint64_t s, unsigned int size, uint64_t ks, unsigned int kssize) { - double sc, sc2; + double sc; if ((size == 1) || (kssize == 1)) { sc = bit_score(s, size, ks & 0x1); @@ -416,7 +414,7 @@ static double score(uint64_t s, unsigned int size, uint64_t ks, unsigned int kss return 0.0; } else { - sc2 = score(s >> 1, size - 1, ks >> 1, kssize - 1); + double sc2 = score(s >> 1, size - 1, ks >> 1, kssize - 1); // if score returns a probability of 0 then this can't be a winner if (sc2 == 0.0) { From 2ae85dea4e0a24dd5c3262e4970d7db24a771fde Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 20:33:25 +0200 Subject: [PATCH 200/527] fix memleak --- tools/hitag2crack/crack3/ht2crack3.c | 24 +++++------------------- 1 file changed, 5 insertions(+), 19 deletions(-) diff --git a/tools/hitag2crack/crack3/ht2crack3.c b/tools/hitag2crack/crack3/ht2crack3.c index b54c7b000..fba050d67 100644 --- a/tools/hitag2crack/crack3/ht2crack3.c +++ b/tools/hitag2crack/crack3/ht2crack3.c @@ -147,12 +147,6 @@ static int testkey(uint64_t *out, uint64_t uid, uint64_t pkey, uint64_t nR, uint return 0; } - - - - - - // some notes on how I think this attack should work. // due to the way fc works, in a number of cases, it doesn't matter what // the most significant bits are doing for it to produce the same result. @@ -177,7 +171,6 @@ static int testkey(uint64_t *out, uint64_t uid, uint64_t pkey, uint64_t nR, uint // limit our guesses to a smaller set than a full brute force and // effectively work out candidates for the lower 34 bits of the key. - static void *crack(void *d) { struct threaddata *data = (struct threaddata *)d; uint64_t uid; @@ -187,21 +180,14 @@ static void *crack(void *d) { Hitag_State hstate; int i, j; - uint64_t klower; - uint64_t kmiddle; - uint64_t y; + uint64_t klower, kmiddle, klowery; + uint64_t y, b, z, bit; uint64_t ytmp; - uint64_t klowery; unsigned int count; - uint64_t bit; - uint64_t b; - uint64_t z; - uint64_t foundkey; - uint64_t revkey; + uint64_t foundkey, revkey; int ret; unsigned int found; unsigned int badguess; - struct Tklower *Tk = NULL; if (!data) { @@ -216,7 +202,7 @@ static void *crack(void *d) { // create space for tables Tk = (struct Tklower *)malloc(sizeof(struct Tklower) * 0x40000); if (!Tk) { - printf("cannot malloc Tk\n"); + printf("Failed to allocate memory (Tk)\n"); exit(1); } @@ -301,6 +287,7 @@ static void *crack(void *d) { } } + free(Tk); return NULL; } int main(int argc, char *argv[]) { @@ -383,7 +370,6 @@ int main(int argc, char *argv[]) { // close file fclose(fp); - fp = NULL; printf("Loaded %u NrAr pairs\n", numnrar); From 9417122714458133c6144a8543d3c58296025134 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 20:40:03 +0200 Subject: [PATCH 201/527] fix unused_result --- tools/hitag2crack/crack2/ht2crack2buildtable.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/tools/hitag2crack/crack2/ht2crack2buildtable.c b/tools/hitag2crack/crack2/ht2crack2buildtable.c index c45768998..01cd0364c 100644 --- a/tools/hitag2crack/crack2/ht2crack2buildtable.c +++ b/tools/hitag2crack/crack2/ht2crack2buildtable.c @@ -204,7 +204,6 @@ static void write_ks_s(uint32_t ks1, uint32_t ks2, uint64_t shiftreg) { // store buffer store(buf); - } @@ -438,7 +437,10 @@ static void *sorttable(void *dd) { printf("cannot create outfile %s\n", outfile); exit(1); } - write(fdout, table, numentries * DATASIZE); + if (write(fdout, table, numentries * DATASIZE)) { + printf("writetable cannot write all of the data\n"); + exit(1); + } close(fdout); // remove input file From 988b61cfa5addd5f6b283f9cb141552235a6fc58 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 20:41:55 +0200 Subject: [PATCH 202/527] fix clarify condition --- client/src/wiegand_formatutils.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/wiegand_formatutils.c b/client/src/wiegand_formatutils.c index 4fbd8c0d3..0d58e9d6f 100644 --- a/client/src/wiegand_formatutils.c +++ b/client/src/wiegand_formatutils.c @@ -80,7 +80,7 @@ static void message_datacopy(wiegand_message_t *src, wiegand_message_t *dest) { uint64_t get_linear_field(wiegand_message_t *data, uint8_t firstBit, uint8_t length) { uint64_t result = 0; for (uint8_t i = 0; i < length; i++) { - result = (result << 1) | get_bit_by_position(data, firstBit + i); + result = (result << 1) | (get_bit_by_position(data, firstBit + i)); } return result; } From d0489da611e0f247c392c095eacf9220eae162be Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 20:53:04 +0200 Subject: [PATCH 203/527] fix realloc properly --- client/src/proxmark3.c | 30 ++++++++++++++++++------------ 1 file changed, 18 insertions(+), 12 deletions(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index a461d4c95..98fd33723 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -436,30 +436,36 @@ static void set_my_user_directory(void) { // if not found, default to current directory if (my_user_directory == NULL) { - char *cwd_Buffer = NULL; uint16_t pathLen = FILENAME_MAX; // should be a good starting point bool error = false; + char *cwd_buffer = (char *)calloc(pathLen, sizeof(uint8_t)); - cwd_Buffer = (char *)calloc(pathLen, sizeof(uint8_t)); - - while (!error && (GetCurrentDir(cwd_Buffer, pathLen) == NULL)) { + while (!error && (GetCurrentDir(cwd_buffer, pathLen) == NULL)) { if (errno == ERANGE) { // Need bigger buffer pathLen += 10; // if buffer was too small add 10 characters and try again - cwd_Buffer = realloc(cwd_Buffer, pathLen); + char *tmp = realloc(cwd_buffer, pathLen); + if (tmp == NULL) { + PrintAndLogEx(WARNING, "failed to allocate memory"); + free(cwd_buffer); + return; + } + cwd_buffer = tmp; } else { - error = true; - free(cwd_Buffer); - cwd_Buffer = NULL; + free(cwd_buffer); + return; } - printf("Len... %d\n", pathLen); + PrintAndLogEx(NORMAL, "Len... %d", pathLen); } if (!error) { - for (int i = 0; i < strlen(cwd_Buffer); i++) - if (cwd_Buffer[i] == '\\') cwd_Buffer[i] = '/'; + for (int i = 0; i < strlen(cwd_buffer); i++) { + if (cwd_buffer[i] == '\\') { + cwd_buffer[i] = '/'; + } + } - my_user_directory = cwd_Buffer; + my_user_directory = cwd_buffer; } } } From e7feadf32ce9f0993c3b9d933fb631c7451b17c3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 22:33:16 +0200 Subject: [PATCH 204/527] fix out of bound --- client/src/cmdhfmfdes.c | 25 ++++++++++++------------- client/src/cmdhfmfp.c | 5 ++--- client/src/cmdhfmfu.c | 7 ++++--- 3 files changed, 18 insertions(+), 19 deletions(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index 5e9a49c26..b1de9109e 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -1050,7 +1050,6 @@ static int desfire_print_signature(uint8_t *uid, uint8_t *signature, size_t sign }; uint8_t i; - int res; bool is_valid = false; for (i = 0; i < ARRAYLEN(nxp_desfire_public_keys); i++) { @@ -1059,12 +1058,12 @@ static int desfire_print_signature(uint8_t *uid, uint8_t *signature, size_t sign uint8_t key[PUBLIC_DESFIRE_ECDA_KEYLEN]; param_gethex_to_eol(nxp_desfire_public_keys[i].value, 0, key, PUBLIC_DESFIRE_ECDA_KEYLEN, &dl); - res = ecdsa_signature_r_s_verify(MBEDTLS_ECP_DP_SECP224R1, key, uid, 7, signature, signature_len, false); + int res = ecdsa_signature_r_s_verify(MBEDTLS_ECP_DP_SECP224R1, key, uid, 7, signature, signature_len, false); is_valid = (res == 0); if (is_valid) break; } - if (is_valid == false) { + if (is_valid == false || i == ARRAYLEN(nxp_desfire_public_keys)) { PrintAndLogEx(SUCCESS, "Signature verification " _RED_("failed")); return PM3_ESOFT; } @@ -3982,21 +3981,21 @@ static int CmdHF14aDesChk(const char *Cmd) { // dictionary mode size_t endFilePosition = 0; if (dict_filenamelen) { - uint32_t keycnt = 0; - res = loadFileDICTIONARYEx((char *)dict_filename, deskeyList, sizeof(deskeyList), NULL, 8, &keycnt, 0, &endFilePosition, true); - deskeyListLen = keycnt; - if (endFilePosition) + + res = loadFileDICTIONARYEx((char *)dict_filename, deskeyList, sizeof(deskeyList), NULL, 8, &deskeyListLen, 0, &endFilePosition, true); + if (res == PM3_SUCCESS && endFilePosition) PrintAndLogEx(SUCCESS, "First part of des dictionary successfully loaded."); + endFilePosition = 0; - res = loadFileDICTIONARYEx((char *)dict_filename, aeskeyList, sizeof(aeskeyList), NULL, 16, &keycnt, 0, &endFilePosition, true); - aeskeyListLen = keycnt; - if (endFilePosition) + res = loadFileDICTIONARYEx((char *)dict_filename, aeskeyList, sizeof(aeskeyList), NULL, 16, &aeskeyListLen, 0, &endFilePosition, true); + if (res == PM3_SUCCESS && endFilePosition) PrintAndLogEx(SUCCESS, "First part of aes dictionary successfully loaded."); + endFilePosition = 0; - res = loadFileDICTIONARYEx((char *)dict_filename, k3kkeyList, sizeof(k3kkeyList), NULL, 24, &keycnt, 0, &endFilePosition, true); - k3kkeyListLen = keycnt; - if (endFilePosition) + res = loadFileDICTIONARYEx((char *)dict_filename, k3kkeyList, sizeof(k3kkeyList), NULL, 24, &k3kkeyListLen, 0, &endFilePosition, true); + if (PM3_SUCCESS && endFilePosition) PrintAndLogEx(SUCCESS, "First part of k3kdes dictionary successfully loaded."); + endFilePosition = 0; } diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index b3c8e5c22..12fbce4d7 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -168,7 +168,6 @@ static int plus_print_signature(uint8_t *uid, uint8_t uidlen, uint8_t *signature }; uint8_t i; - int res; bool is_valid = false; for (i = 0; i < ARRAYLEN(nxp_plus_public_keys); i++) { @@ -177,7 +176,7 @@ static int plus_print_signature(uint8_t *uid, uint8_t uidlen, uint8_t *signature uint8_t key[PUBLIC_PLUS_ECDA_KEYLEN]; param_gethex_to_eol(nxp_plus_public_keys[i].value, 0, key, PUBLIC_PLUS_ECDA_KEYLEN, &dl); - res = ecdsa_signature_r_s_verify(MBEDTLS_ECP_DP_SECP224R1, key, uid, uidlen, signature, signature_len, false); + int res = ecdsa_signature_r_s_verify(MBEDTLS_ECP_DP_SECP224R1, key, uid, uidlen, signature, signature_len, false); is_valid = (res == 0); if (is_valid) break; @@ -186,7 +185,7 @@ static int plus_print_signature(uint8_t *uid, uint8_t uidlen, uint8_t *signature PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("Tag Signature")); - if (is_valid == false) { + if (is_valid == false || i == ARRAYLEN(nxp_plus_public_keys)) { PrintAndLogEx(SUCCESS, "Signature verification " _RED_("failed")); return PM3_ESOFT; } diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index b150d3435..b35a27e49 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -347,8 +347,7 @@ static int ul_select(iso14a_card_select_t *card) { ul_switch_on_field(); PacketResponseNG resp; - bool ans = false; - ans = WaitForResponseTimeout(CMD_ACK, &resp, 1500); + bool ans = WaitForResponseTimeout(CMD_ACK, &resp, 1500); if (!ans || resp.oldarg[0] < 1) { PrintAndLogEx(WARNING, "iso14443a card select failed"); @@ -946,7 +945,7 @@ static int ulev1_print_signature(TagTypeUL_t tagtype, uint8_t *uid, uint8_t *sig } PrintAndLogEx(NORMAL, ""); - if (is_valid == false) { + if (is_valid == false || i == ARRAYLEN(nxp_mfu_public_keys)) { PrintAndLogEx(SUCCESS, "Signature verification " _RED_("failed")); return PM3_ESOFT; } @@ -982,7 +981,9 @@ static int ntag_print_counter(void) { uint8_t counter[3] = {0, 0, 0}; uint16_t len; len = ulev1_readTearing(0x02, tear, sizeof(tear)); + (void)len; len = ulev1_readCounter(0x02, counter, sizeof(counter)); + (void)len; PrintAndLogEx(INFO, " [02]: %s", sprint_hex(counter, 3)); PrintAndLogEx(SUCCESS, " - %02X tearing (" _GREEN_("%s")")", tear[0], (tear[0] == 0xBD) ? "ok" : "failure"); return len; From 4073b88ed740e6edde6c88ad12c0c03a368a9446 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 22:33:50 +0200 Subject: [PATCH 205/527] fix realloc properly --- client/src/ui.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/src/ui.c b/client/src/ui.c index 5764e63df..24eac6a16 100644 --- a/client/src/ui.c +++ b/client/src/ui.c @@ -99,11 +99,12 @@ int searchHomeFilePath(char **foundpath, const char *subdir, const char *filenam } if (subdir != NULL) { pathlen += strlen(subdir); - path = realloc(path, pathlen * sizeof(char)); - if (path == NULL) { + char *tmp = realloc(path, pathlen * sizeof(char)); + if (tmp == NULL) { free(path); return PM3_EMALLOC; } + path = tmp; strcat(path, subdir); #ifdef _WIN32 From 9d355a9b4e45ca3e69a53b28125c39f9fff7473d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 22:36:14 +0200 Subject: [PATCH 206/527] fix out-of-bound --- client/src/cmdhf15.c | 5 ++--- 1 file changed, 2 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 67e47c0d4..9c6c343aa 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -263,7 +263,6 @@ static int nxp_15693_print_signature(uint8_t *uid, uint8_t *signature) { */ uint8_t i; - int res; bool is_valid = false; for (i = 0; i < ARRAYLEN(nxp_15693_public_keys); i++) { @@ -271,14 +270,14 @@ static int nxp_15693_print_signature(uint8_t *uid, uint8_t *signature) { uint8_t key[PUBLIC_ECDA_KEYLEN]; param_gethex_to_eol(nxp_15693_public_keys[i].value, 0, key, PUBLIC_ECDA_KEYLEN, &dl); - res = ecdsa_signature_r_s_verify(MBEDTLS_ECP_DP_SECP128R1, key, uid, 8, signature, 32, false); + int res = ecdsa_signature_r_s_verify(MBEDTLS_ECP_DP_SECP128R1, key, uid, 8, signature, 32, false); is_valid = (res == 0); if (is_valid) break; } PrintAndLogEx(NORMAL, ""); - if (is_valid == false) { + if (is_valid == false || i == ARRAYLEN(nxp_15693_public_keys)) { PrintAndLogEx(SUCCESS, "Signature verification " _RED_("failed")); return PM3_ESOFT; } From f61ca646816327e470eb6b9122a18d5b79b99ba3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 22:40:53 +0200 Subject: [PATCH 207/527] fix clarify --- client/src/loclass/cipher.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/loclass/cipher.c b/client/src/loclass/cipher.c index dde046eff..1753ebc9d 100644 --- a/client/src/loclass/cipher.c +++ b/client/src/loclass/cipher.c @@ -177,10 +177,10 @@ static State successor(uint8_t *k, State s, bool y) { State successor = {0, 0, 0, 0}; successor.t = s.t >> 1; - successor.t |= ((T(s)) ^ r0 ^ r4) << 15; + successor.t |= ((T(s)) ^ (r0) ^ (r4)) << 15; successor.b = s.b >> 1; - successor.b |= ((B(s)) ^ r7) << 7; + successor.b |= ((B(s)) ^ (r7)) << 7; bool Tt = T(s); From 2635ae43b7812c470252350c80e6634c8e19f608 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 22:43:48 +0200 Subject: [PATCH 208/527] fix redundantassignment --- client/src/cmdhffido.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/cmdhffido.c b/client/src/cmdhffido.c index e35479db9..991d7eb5d 100644 --- a/client/src/cmdhffido.c +++ b/client/src/cmdhffido.c @@ -337,6 +337,7 @@ static int CmdHFFidoRegister(const char *cmd) { &buf[67], keyHandleLen, // keyHandle &buf[1], 65, // user public key NULL, 0); + (void)res; //PrintAndLogEx(NORMAL, "--xbuf(%d)[%d]: %s", res, xbuflen, sprint_hex(xbuf, xbuflen)); res = ecdsa_signature_verify(MBEDTLS_ECP_DP_SECP256R1, public_key, xbuf, xbuflen, &buf[hashp], len - hashp, true); if (res) { @@ -563,6 +564,7 @@ static int CmdHFFidoAuthenticate(const char *cmd) { &buf[1], 4, // counter data, 32, // challenge parameter NULL, 0); + (void)res; //PrintAndLogEx(NORMAL, "--xbuf(%d)[%d]: %s", res, xbuflen, sprint_hex(xbuf, xbuflen)); res = ecdsa_signature_verify(MBEDTLS_ECP_DP_SECP256R1, public_key, xbuf, xbuflen, &buf[5], len - 5, true); if (res) { From 17c9bc8fc2f3b6f2d43e1735ddcb83fa7e5df6e1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 22:46:22 +0200 Subject: [PATCH 209/527] fix redundantassignment --- client/src/comms.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/client/src/comms.c b/client/src/comms.c index d2ba5436f..0a49e1f31 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -605,24 +605,25 @@ int TestProxmark(void) { clearCommandBuffer(); SendCommandNG(CMD_PING, data, len); - uint32_t timeout = 1000; + uint32_t timeout; #ifdef USART_SLOW_LINK // 10s timeout for slow FPC, e.g. over BT // as this is the very first command sent to the pm3 // that initiates the BT connection timeout = 10000; +#else + timeout = 1000; #endif if (WaitForResponseTimeoutW(CMD_PING, &resp, timeout, false) == 0) { return PM3_ETIMEOUT; } - bool error = false; - error = memcmp(data, resp.data.asBytes, len) != 0; - - if (error) + bool error = memcmp(data, resp.data.asBytes, len) != 0; + if (error) { return PM3_EIO; + } SendCommandNG(CMD_CAPABILITIES, NULL, 0); if (WaitForResponseTimeoutW(CMD_CAPABILITIES, &resp, 1000, false) == 0) { From 036544e49ef725fa8c8505594c88d7a9d47cf860 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 27 May 2020 23:26:57 +0200 Subject: [PATCH 210/527] fix another realloc --- client/src/ui.c | 10 ++++++++-- 1 file changed, 8 insertions(+), 2 deletions(-) diff --git a/client/src/ui.c b/client/src/ui.c index 24eac6a16..15b57c259 100644 --- a/client/src/ui.c +++ b/client/src/ui.c @@ -57,15 +57,18 @@ static void fPrintAndLog(FILE *stream, const char *fmt, ...); int searchHomeFilePath(char **foundpath, const char *subdir, const char *filename, bool create_home) { if (foundpath == NULL) return PM3_EINVARG; + const char *user_path = get_my_user_directory(); if (user_path == NULL) { fprintf(stderr, "Could not retrieve $HOME from the environment\n"); return PM3_EFILE; } + size_t pathlen = strlen(user_path) + strlen(PM3_USER_DIRECTORY) + 1; char *path = calloc(pathlen, sizeof(char)); if (path == NULL) return PM3_EMALLOC; + strcpy(path, user_path); strcat(path, PM3_USER_DIRECTORY); @@ -139,9 +142,12 @@ int searchHomeFilePath(char **foundpath, const char *subdir, const char *filenam return PM3_SUCCESS; } pathlen += strlen(filename); - path = realloc(path, pathlen * sizeof(char)); - if (path == NULL) + char *tmp = realloc(path, pathlen * sizeof(char)); + if (tmp == NULL) { + free(path); return PM3_EMALLOC; + } + path = tmp; strcat(path, filename); *foundpath = path; return PM3_SUCCESS; From c3a706b8cf05df6e7a90c0730449f62442eee5ca Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 28 May 2020 10:16:22 +0200 Subject: [PATCH 211/527] fix: 'lf ti demod - crc is now fixed --- client/src/cmdlfti.c | 35 ++++++++++++++++------------------- 1 file changed, 16 insertions(+), 19 deletions(-) diff --git a/client/src/cmdlfti.c b/client/src/cmdlfti.c index 5a088d3c4..a41c70d91 100644 --- a/client/src/cmdlfti.c +++ b/client/src/cmdlfti.c @@ -85,7 +85,6 @@ static int CmdTIDemod(const char *Cmd) { int lowLen = ARRAYLEN(LowTone); int highLen = ARRAYLEN(HighTone); int convLen = (highLen > lowLen) ? highLen : lowLen; - uint16_t crc; int i, j, TagType; int lowSum = 0, highSum = 0; int lowTot = 0, highTot = 0; @@ -241,25 +240,23 @@ static int CmdTIDemod(const char *Cmd) { // i'm 99% sure the crc algorithm is correct, but it may need to eat the // bytes in reverse or something // calculate CRC - crc = 0; - crc = update_crc16(crc, (shift0 >> 0) & 0xFF); - crc = update_crc16(crc, (shift0 >> 8) & 0xFF); - crc = update_crc16(crc, (shift0 >> 16) & 0xFF); - crc = update_crc16(crc, (shift0 >> 24) & 0xFF); + uint8_t raw[8] = { + (shift0 >> 0) & 0xFF, + (shift0 >> 8) & 0xFF, + (shift0 >> 16) & 0xFF, + (shift0 >> 24) & 0xFF, + (shift1 >> 0) & 0xFF, + (shift1 >> 8) & 0xFF, + (shift1 >> 16) & 0xFF, + (shift1 >> 24) & 0xFF + }; + init_table(CRC_KERMIT); + uint16_t calccrc = crc16_kermit(raw, sizeof(raw)); + const char *crc_str = (calccrc == (shift2 & 0xFFFF)) ? _GREEN_("ok") : _RED_("fail"); + PrintAndLogEx(INFO, "Tag data = %08X%08X [%04X] (%s)", shift1, shift0, calccrc, crc_str); - crc = update_crc16(crc, (shift1 >> 0) & 0xFF); - crc = update_crc16(crc, (shift1 >> 8) & 0xFF); - crc = update_crc16(crc, (shift1 >> 16) & 0xFF); - crc = update_crc16(crc, (shift1 >> 24) & 0xFF); - - //crc = crc16_ccitt(message, sizeof(message); - - const char *crcStr = (crc == (shift2 & 0xFFFF)) ? _GREEN_("Passed") : _RED_("Fail"); - - PrintAndLogEx(INFO, "Tag data = %08X%08X [Crc %04X %s]", shift1, shift0, crc, crcStr); - - if (crc != (shift2 & 0xFFFF)) - PrintAndLogEx(WARNING, "Warning: CRC mismatch, calculated %04X, got %04X", crc, shift2 & 0xFFFF); + if (calccrc != (shift2 & 0xFFFF)) + PrintAndLogEx(WARNING, "Warning: CRC mismatch, calculated %04X, got %04X", calccrc, shift2 & 0xFFFF); retval = PM3_SUCCESS; goto out; From 691c1735a43faf39ac14f410aca1fe456a2f506f Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 29 May 2020 08:39:13 +0200 Subject: [PATCH 212/527] chg, printf --- client/src/emv/emv_pki.c | 70 ++++++++++++++++++---------------------- 1 file changed, 31 insertions(+), 39 deletions(-) diff --git a/client/src/emv/emv_pki.c b/client/src/emv/emv_pki.c index bbdb321b3..fba5902f9 100644 --- a/client/src/emv/emv_pki.c +++ b/client/src/emv/emv_pki.c @@ -26,6 +26,7 @@ #include "crypto.h" #include "dump.h" #include "util.h" +#include "ui.h" static bool strictExecution = true; void PKISetStrictExecution(bool se) { @@ -53,12 +54,12 @@ static unsigned char *emv_pki_decode_message(const struct emv_pk *enc_pk, return NULL; if (!cert_tlv) { - printf("ERROR: Can't find certificate\n"); + PrintAndLogEx(WARNING, "ERROR: Can't find certificate"); return NULL; } if (cert_tlv->len != enc_pk->mlen) { - printf("ERROR: Certificate length (%zu) not equal key length (%zu)\n", cert_tlv->len, enc_pk->mlen); + PrintAndLogEx(WARNING, "ERROR: Certificate length (%zu) not equal key length (%zu)", cert_tlv->len, enc_pk->mlen); return NULL; } kcp = crypto_pk_open(enc_pk->pk_algo, @@ -71,19 +72,19 @@ static unsigned char *emv_pki_decode_message(const struct emv_pk *enc_pk, crypto_pk_close(kcp); /* if (true){ - printf("Recovered data:\n"); + PrintAndLogEx(SUCCESS, "Recovered data:\n"); dump_buffer(data, data_len, stdout, 0); }*/ if (data[data_len - 1] != 0xbc || data[0] != 0x6a || data[1] != msgtype) { - printf("ERROR: Certificate format\n"); + PrintAndLogEx(WARNING, "ERROR: Certificate format"); free(data); return NULL; } size_t hash_pos = emv_pki_hash_psn[msgtype]; if (hash_pos == 0 || hash_pos > data_len) { - printf("ERROR: Cant get hash position in the certificate\n"); + PrintAndLogEx(WARNING, "ERROR: Cant get hash position in the certificate"); free(data); return NULL; } @@ -91,7 +92,7 @@ static unsigned char *emv_pki_decode_message(const struct emv_pk *enc_pk, struct crypto_hash *ch; ch = crypto_hash_open(data[hash_pos]); if (!ch) { - printf("ERROR: Cant do hash\n"); + PrintAndLogEx(WARNING, "ERROR: Cant do hash"); free(data); return NULL; } @@ -113,9 +114,9 @@ static unsigned char *emv_pki_decode_message(const struct emv_pk *enc_pk, memset(hash, 0, hash_len); memcpy(hash, crypto_hash_read(ch), hash_len); if (memcmp(data + data_len - 1 - hash_len, hash, hash_len)) { - printf("ERROR: Calculated wrong hash\n"); - printf("decoded: %s\n", sprint_hex(data + data_len - 1 - hash_len, hash_len)); - printf("calculated: %s\n", sprint_hex(hash, hash_len)); + PrintAndLogEx(WARNING, "ERROR: Calculated wrong hash"); + PrintAndLogEx(WARNING, "decoded: " _YELLOW_("%s"), sprint_hex(data + data_len - 1 - hash_len, hash_len)); + PrintAndLogEx(WARNING, "calculated: " _YELLOW_("%s"), sprint_hex(hash, hash_len)); if (strictExecution) { crypto_hash_close(ch); @@ -125,16 +126,12 @@ static unsigned char *emv_pki_decode_message(const struct emv_pk *enc_pk, } crypto_hash_close(ch); - *len = data_len - hash_len - 1; - return data; } static unsigned emv_cn_length(const struct tlv *tlv) { - int i; - - for (i = 0; i < tlv->len; i++) { + for (int i = 0; i < tlv->len; i++) { unsigned char c = tlv->value[i]; if (c >> 4 == 0xf) @@ -143,7 +140,6 @@ static unsigned emv_cn_length(const struct tlv *tlv) { if ((c & 0xf) == 0xf) return 2 * i + 1; } - return 2 * tlv->len; } @@ -185,7 +181,7 @@ static struct emv_pk *emv_pki_decode_key_ex(const struct emv_pk *enc_pk, else if (msgtype == 4) pan_length = 10; else { - printf("ERROR: Message type must be 2 or 4\n"); + PrintAndLogEx(WARNING, "ERROR: Message type must be 2 or 4"); return NULL; } @@ -198,12 +194,12 @@ static struct emv_pk *emv_pki_decode_key_ex(const struct emv_pk *enc_pk, sdatl_tlv, NULL); if (!data || data_len < 11 + pan_length) { - printf("ERROR: Can't decode message\n"); + PrintAndLogEx(WARNING, "ERROR: Can't decode message"); return NULL; } if (showData) { - printf("Recovered data:\n"); + PrintAndLogEx(SUCCESS, "Recovered data:"); dump_buffer(data, data_len, stdout, 0); } @@ -219,7 +215,7 @@ static struct emv_pk *emv_pki_decode_key_ex(const struct emv_pk *enc_pk, if (((msgtype == 2) && (pan2_len < 4 || pan2_len > pan_len)) || ((msgtype == 4) && (pan2_len != pan_len))) { - printf("ERROR: Invalid PAN lengths\n"); + PrintAndLogEx(WARNING, "ERROR: Invalid PAN lengths"); free(data); return NULL; @@ -228,9 +224,9 @@ static struct emv_pk *emv_pki_decode_key_ex(const struct emv_pk *enc_pk, unsigned i; for (i = 0; i < pan2_len; i++) if (emv_cn_get(pan_tlv, i) != emv_cn_get(&pan2_tlv, i)) { - printf("ERROR: PAN data mismatch\n"); - printf("tlv pan=%s\n", sprint_hex(pan_tlv->value, pan_tlv->len)); - printf("cert pan=%s\n", sprint_hex(pan2_tlv.value, pan2_tlv.len)); + PrintAndLogEx(WARNING, "ERROR: PAN data mismatch"); + PrintAndLogEx(WARNING, "tlv pan " _YELLOW_("%s"), sprint_hex(pan_tlv->value, pan_tlv->len)); + PrintAndLogEx(WARNING, "cert pan " _YELLOW_("%s"), sprint_hex(pan2_tlv.value, pan2_tlv.len)); free(data); return NULL; @@ -238,7 +234,7 @@ static struct emv_pk *emv_pki_decode_key_ex(const struct emv_pk *enc_pk, pk_len = data[9 + pan_length]; if (pk_len > data_len - 11 - pan_length + rem_tlv->len) { - printf("ERROR: Invalid pk length\n"); + PrintAndLogEx(WARNING, "ERROR: Invalid pk length"); free(data); return NULL; } @@ -268,7 +264,6 @@ static struct emv_pk *emv_pki_decode_key_ex(const struct emv_pk *enc_pk, memcpy(pk->exp, exp_tlv->value, exp_tlv->len); free(data); - return pk; } @@ -354,7 +349,6 @@ unsigned char *emv_pki_sdatl_fill(const struct tlvdb *db, size_t *sdatl_len) { return NULL; } - struct tlvdb *emv_pki_recover_dac_ex(const struct emv_pk *enc_pk, const struct tlvdb *db, const struct tlv *sda_tlv, bool showData) { size_t data_len; @@ -380,16 +374,15 @@ struct tlvdb *emv_pki_recover_dac_ex(const struct emv_pk *enc_pk, const struct t return NULL; if (showData) { - printf("Recovered data:\n"); + PrintAndLogEx(SUCCESS, "Recovered data:"); dump_buffer(data, data_len, stdout, 0); } struct tlvdb *dac_db = tlvdb_fixed(0x9f45, 2, data + 3); - free(data); - return dac_db; } + struct tlvdb *emv_pki_recover_dac(const struct emv_pk *enc_pk, const struct tlvdb *db, const struct tlv *sda_tlv) { return emv_pki_recover_dac_ex(enc_pk, db, sda_tlv, false); } @@ -415,7 +408,7 @@ struct tlvdb *emv_pki_recover_idn_ex(const struct emv_pk *enc_pk, const struct t } if (showData) { - printf("Recovered data:\n"); + PrintAndLogEx(SUCCESS, "Recovered data:"); dump_buffer(data, data_len, stdout, 0); } @@ -427,9 +420,7 @@ struct tlvdb *emv_pki_recover_idn_ex(const struct emv_pk *enc_pk, const struct t // 9f4c ICC Dynamic Number struct tlvdb *idn_db = tlvdb_fixed(0x9f4c, idn_len, data + 5); - free(data); - return idn_db; } @@ -453,7 +444,7 @@ struct tlvdb *emv_pki_recover_atc_ex(const struct emv_pk *enc_pk, const struct t } if (showData) { - printf("Recovered data:\n"); + PrintAndLogEx(SUCCESS, "Recovered data:"); dump_buffer(data, data_len, stdout, 0); } @@ -496,6 +487,7 @@ struct tlvdb *emv_pki_perform_cda(const struct emv_pk *enc_pk, const struct tlvd const struct tlv *crm2_tlv) { return emv_pki_perform_cda_ex(enc_pk, db, this_db, pdol_data_tlv, crm1_tlv, crm2_tlv, false); } + struct tlvdb *emv_pki_perform_cda_ex(const struct emv_pk *enc_pk, const struct tlvdb *db, const struct tlvdb *this_db, // AC TLV result const struct tlv *pdol_data_tlv, // PDOL @@ -515,23 +507,23 @@ struct tlvdb *emv_pki_perform_cda_ex(const struct emv_pk *enc_pk, const struct t un_tlv, NULL); if (!data || data_len < 3) { - printf("ERROR: can't decode message. len %zu\n", data_len); + PrintAndLogEx(WARNING, "ERROR: can't decode message. [%zu bytes]", data_len); return NULL; } if (showData) { - printf("Recovered data:\n"); + PrintAndLogEx(SUCCESS, "Recovered data:"); dump_buffer(data, data_len, stdout, 0); } if (data[3] < 30 || data[3] > data_len - 4) { - printf("ERROR: Invalid data length\n"); + PrintAndLogEx(WARNING, "ERROR: Invalid data length"); free(data); return NULL; } if (!cid_tlv || cid_tlv->len != 1 || cid_tlv->value[0] != data[5 + data[4]]) { - printf("ERROR: CID mismatch\n"); + PrintAndLogEx(WARNING, "ERROR: CID mismatch"); free(data); return NULL; } @@ -539,7 +531,7 @@ struct tlvdb *emv_pki_perform_cda_ex(const struct emv_pk *enc_pk, const struct t struct crypto_hash *ch; ch = crypto_hash_open(enc_pk->hash_algo); if (!ch) { - printf("ERROR: can't create hash\n"); + PrintAndLogEx(WARNING, "ERROR: can't create hash"); free(data); return NULL; } @@ -554,7 +546,7 @@ struct tlvdb *emv_pki_perform_cda_ex(const struct emv_pk *enc_pk, const struct t tlvdb_visit(this_db, tlv_hash, ch, 0); if (memcmp(data + 5 + data[4] + 1 + 8, crypto_hash_read(ch), 20)) { - printf("ERROR: calculated hash error\n"); + PrintAndLogEx(WARNING, "ERROR: calculated hash error"); crypto_hash_close(ch); free(data); return NULL; @@ -563,7 +555,7 @@ struct tlvdb *emv_pki_perform_cda_ex(const struct emv_pk *enc_pk, const struct t size_t idn_len = data[4]; if (idn_len > data[3] - 1) { - printf("ERROR: Invalid IDN length\n"); + PrintAndLogEx(WARNING, "ERROR: Invalid IDN length"); free(data); return NULL; } From 38a8e6021f148bd32ca96e03d0f32d664e0b9deb Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 29 May 2020 08:41:05 +0200 Subject: [PATCH 213/527] fix, emv roca hash mismatch https://github.com/Proxmark/proxmark3/pull/781 (@pwpiwi) --- client/src/emv/cmdemv.c | 115 ++++++++++++++++++++++++++-------------- 1 file changed, 76 insertions(+), 39 deletions(-) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 2cf76a636..474b4224b 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -56,10 +56,10 @@ static void ParamLoadDefaults(struct tlvdb *tlvRoot) { static void PrintChannel(EMVCommandChannel channel) { switch (channel) { case ECC_CONTACTLESS: - PrintAndLogEx(INFO, "Channel: CONTACTLESS (T=CL)"); + PrintAndLogEx(INFO, "Selected channel : " _GREEN_("CONTACTLESS (T=CL)")); break; case ECC_CONTACT: - PrintAndLogEx(INFO, "Channel: CONTACT"); + PrintAndLogEx(INFO, "Selected channel : " _GREEN_("CONTACT")); break; } } @@ -1747,6 +1747,8 @@ static int CmdEMVRoca(const char *Cmd) { uint8_t buf[APDU_RES_LEN] = {0}; size_t len = 0; uint16_t sw = 0; + uint8_t ODAI_list[4096]; + size_t ODAI_listlen = 0; int res; CLIParserInit("emv roca", @@ -1759,23 +1761,30 @@ static int CmdEMVRoca(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_lit0("tT", "selftest", "self test"), - arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. Contactless interface set by default."), + arg_lit0("aA", "apdu", "show APDU reqests and responses"), + arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. Contactless interface set by default"), arg_param_end }; CLIExecWithReturn(Cmd, argtable, true); EMVCommandChannel channel = ECC_CONTACTLESS; - if (arg_get_lit(1)) + if (arg_get_lit(1)) { + CLIParserFree(); return roca_self_test(); + } - if (arg_get_lit(2)) + bool show_apdu = arg_get_lit(2); + + if (arg_get_lit(3)) channel = ECC_CONTACT; - PrintChannel(channel); + CLIParserFree(); + + PrintChannel(channel); if (!IfPm3Smartcard()) { if (channel == ECC_CONTACT) { - PrintAndLogEx(WARNING, "PM3 does not have SMARTCARD support. Exiting."); + PrintAndLogEx(WARNING, "PM3 does not have SMARTCARD support, exiting"); return PM3_EDEVNOTSUPP; } } @@ -1783,14 +1792,14 @@ static int CmdEMVRoca(const char *Cmd) { // select card uint8_t psenum = (channel == ECC_CONTACT) ? 1 : 2; - SetAPDULogging(false); + SetAPDULogging(show_apdu); // init applets list tree const char *al = "Applets list"; struct tlvdb *tlvSelect = tlvdb_fixed(1, strlen(al), (const unsigned char *)al); // EMV PPSE - PrintAndLogEx(NORMAL, "--> PPSE."); + PrintAndLogEx(INFO, "PPSE"); res = EMVSearchPSE(channel, false, true, psenum, false, tlvSelect); // check PPSE and select application id @@ -1798,9 +1807,9 @@ static int CmdEMVRoca(const char *Cmd) { TLVPrintAIDlistFromSelectTLV(tlvSelect); } else { // EMV SEARCH with AID list - PrintAndLogEx(NORMAL, "--> AID search."); + PrintAndLogEx(INFO, "starting AID search"); if (EMVSearch(channel, false, true, false, tlvSelect)) { - PrintAndLogEx(ERR, "Can't found any of EMV AID. Exit..."); + PrintAndLogEx(ERR, "Can't found any of EMV AID, exiting"); tlvdb_free(tlvSelect); DropFieldEx(channel); return PM3_ERFTRANS; @@ -1817,7 +1826,7 @@ static int CmdEMVRoca(const char *Cmd) { tlvdb_free(tlvSelect); if (!AIDlen) { - PrintAndLogEx(INFO, "Can't select AID. EMV AID not found. Exit..."); + PrintAndLogEx(INFO, "Can't select AID or EMV AID not found, exiting"); DropFieldEx(channel); return PM3_ERFTRANS; } @@ -1827,23 +1836,23 @@ static int CmdEMVRoca(const char *Cmd) { struct tlvdb *tlvRoot = tlvdb_fixed(1, strlen(alr), (const unsigned char *)alr); // EMV SELECT applet - PrintAndLogEx(NORMAL, "\n-->Selecting AID:%s.", sprint_hex_inrow(AID, AIDlen)); + PrintAndLogEx(INFO, "Selecting AID: " _YELLOW_("%s"), sprint_hex_inrow(AID, AIDlen)); res = EMVSelect(channel, false, true, AID, AIDlen, buf, sizeof(buf), &len, &sw, tlvRoot); if (res) { - PrintAndLogEx(ERR, "Can't select AID (%d). Exit...", res); + PrintAndLogEx(ERR, "Can't select AID (%d), exiting", res); tlvdb_free(tlvRoot); DropFieldEx(channel); return PM3_ERFTRANS; } - PrintAndLogEx(NORMAL, "\n* Init transaction parameters."); + PrintAndLogEx(INFO, "Init transaction parameters"); InitTransactionParameters(tlvRoot, true, TT_QVSDCMCHIP, false); - PrintAndLogEx(NORMAL, "-->Calc PDOL."); + PrintAndLogEx(INFO, "Calc PDOL"); struct tlv *pdol_data_tlv = dol_process(tlvdb_get(tlvRoot, 0x9f38, NULL), tlvRoot, 0x83); if (!pdol_data_tlv) { - PrintAndLogEx(ERR, "Can't create PDOL TLV."); + PrintAndLogEx(ERR, "Can't create PDOL TLV"); tlvdb_free(tlvRoot); DropFieldEx(channel); return PM3_ESOFT; @@ -1852,7 +1861,7 @@ static int CmdEMVRoca(const char *Cmd) { size_t pdol_data_tlv_data_len; unsigned char *pdol_data_tlv_data = tlv_encode(pdol_data_tlv, &pdol_data_tlv_data_len); if (!pdol_data_tlv_data) { - PrintAndLogEx(ERR, "Can't create PDOL data."); + PrintAndLogEx(ERR, "Can't create PDOL data, exiting"); tlvdb_free(tlvRoot); DropFieldEx(channel); free(pdol_data_tlv); @@ -1860,21 +1869,21 @@ static int CmdEMVRoca(const char *Cmd) { } PrintAndLogEx(INFO, "PDOL data[%zu]: %s", pdol_data_tlv_data_len, sprint_hex(pdol_data_tlv_data, pdol_data_tlv_data_len)); - PrintAndLogEx(INFO, "-->GPO."); + PrintAndLogEx(INFO, "GPO"); res = EMVGPO(channel, true, pdol_data_tlv_data, pdol_data_tlv_data_len, buf, sizeof(buf), &len, &sw, tlvRoot); free(pdol_data_tlv_data); free(pdol_data_tlv); if (res) { - PrintAndLogEx(ERR, "GPO error(%d): %4x. Exit...", res, sw); + PrintAndLogEx(ERR, "GPO error(%d): %4x, exiting", res, sw); tlvdb_free(tlvRoot); DropFieldEx(channel); return PM3_ERFTRANS; } ProcessGPOResponseFormat1(tlvRoot, buf, len, false); - PrintAndLogEx(INFO, "-->Read records from AFL."); + PrintAndLogEx(INFO, "Read records from AFL"); const struct tlv *AFL = tlvdb_get(tlvRoot, 0x94, NULL); while (AFL && AFL->len) { @@ -1889,35 +1898,62 @@ static int CmdEMVRoca(const char *Cmd) { uint8_t SFIend = AFL->value[i * 4 + 2]; uint8_t SFIoffline = AFL->value[i * 4 + 3]; - PrintAndLogEx(INFO, "--->SFI[%02x] start:%02x end:%02x offline:%02x", SFI, SFIstart, SFIend, SFIoffline); + PrintAndLogEx(INFO, " SFI[%02x] start :%02x end :%02x offline :%02x", SFI, SFIstart, SFIend, SFIoffline); if (SFI == 0 || SFI == 31 || SFIstart == 0 || SFIstart > SFIend) { - PrintAndLogEx(ERR, "SFI ERROR! Skipped..."); + PrintAndLogEx(ERR, "SFI ERROR, skipping"); continue; } for (int n = SFIstart; n <= SFIend; n++) { - PrintAndLogEx(INFO, "---->SFI[%02x] %d", SFI, n); + PrintAndLogEx(INFO, " SFI[%02x] %d", SFI, n); res = EMVReadRecord(channel, true, SFI, n, buf, sizeof(buf), &len, &sw, tlvRoot); if (res) { PrintAndLogEx(ERR, "SFI[%02x]. APDU error %4x", SFI, sw); continue; } + + // Build Input list for Offline Data Authentication + // EMV 4.3 book3 10.3, page 96 + if (SFIoffline > 0) { + if (SFI < 11) { + const unsigned char *abuf = buf; + size_t elmlen = len; + struct tlv e; + if (tlv_parse_tl(&abuf, &elmlen, &e)) { + memcpy(&ODAI_list[ODAI_listlen], &buf[len - elmlen], elmlen); + ODAI_listlen += elmlen; + } else { + PrintAndLogEx(WARNING, "Error SFI[%02x]. Creating input list for Offline Data Authentication error", SFI); + } + } else { + memcpy(&ODAI_list[ODAI_listlen], buf, len); + ODAI_listlen += len; + } + SFIoffline--; + } } } - break; } // getting certificates int ret = PM3_SUCCESS; + + // copy Input list for Offline Data Authentication + if (ODAI_listlen) { + struct tlvdb *oda = tlvdb_fixed(0x21, ODAI_listlen, ODAI_list); // not a standard tag + tlvdb_add(tlvRoot, oda); + PrintAndLogEx(INFO, "Input list for Offline Data Authentication added to TLV [%d bytes]", ODAI_listlen); + } + if (tlvdb_get(tlvRoot, 0x90, NULL)) { - PrintAndLogEx(INFO, "-->Recovering certificates."); + PrintAndLogEx(INFO, "Recovering certificates"); PKISetStrictExecution(false); struct emv_pk *pk = get_ca_pk(tlvRoot); if (!pk) { - PrintAndLogEx(ERR, "ERROR: Key not found. Exit."); + PrintAndLogEx(ERR, "ERROR: Key not found, exiting"); ret = PM3_ESOFT; goto out; } @@ -1925,41 +1961,45 @@ static int CmdEMVRoca(const char *Cmd) { struct emv_pk *issuer_pk = emv_pki_recover_issuer_cert(pk, tlvRoot); if (!issuer_pk) { emv_pk_free(pk); - PrintAndLogEx(WARNING, "WARNING: Issuer certificate not found. Exit."); + PrintAndLogEx(WARNING, "WARNING: Issuer certificate not found, exiting"); ret = PM3_ESOFT; goto out; } - PrintAndLogEx(SUCCESS, "Issuer PK recovered. RID %s IDX %02hhx CSN %s", + PrintAndLogEx(SUCCESS, "Issuer Public key recovered RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), sprint_hex(issuer_pk->rid, 5), issuer_pk->index, sprint_hex(issuer_pk->serial, 3) ); - struct emv_pk *icc_pk = emv_pki_recover_icc_cert(issuer_pk, tlvRoot, NULL); + const struct tlv *sda_tlv = tlvdb_get(tlvRoot, 0x21, NULL); + struct emv_pk *icc_pk = emv_pki_recover_icc_cert(issuer_pk, tlvRoot, sda_tlv); if (!icc_pk) { emv_pk_free(pk); emv_pk_free(issuer_pk); - PrintAndLogEx(WARNING, "WARNING: ICC certificate not found. Exit."); + PrintAndLogEx(WARNING, "WARNING: ICC certificate not found, exiting"); ret = PM3_ESOFT; goto out; } - PrintAndLogEx(SUCCESS, "ICC PK recovered. RID %s IDX %02hhx CSN %s\n", + + PrintAndLogEx(SUCCESS, "ICC Public key recovered RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), sprint_hex(icc_pk->rid, 5), icc_pk->index, sprint_hex(icc_pk->serial, 3) ); - PrintAndLogEx(INFO, "ICC pk modulus: %s", sprint_hex_inrow(icc_pk->modulus, icc_pk->mlen)); + PrintAndLogEx(INFO, "ICC Public key modulus:"); + print_hex_break(icc_pk->modulus, icc_pk->mlen, 16); // icc_pk->exp, icc_pk->elen // icc_pk->modulus, icc_pk->mlen if (icc_pk->elen > 0 && icc_pk->mlen > 0) { - if (emv_rocacheck(icc_pk->modulus, icc_pk->mlen, true)) { - PrintAndLogEx(INFO, "ICC pk is a subject to ROCA vulnerability, insecure.."); + PrintAndLogEx(NORMAL, ""); + if (emv_rocacheck(icc_pk->modulus, icc_pk->mlen, false)) { + PrintAndLogEx(SUCCESS, "ICC Public key is " _RED_("subject") " to ROCA vulnerability, it is considered insecure"); } else { - PrintAndLogEx(INFO, "ICC pk is OK("); + PrintAndLogEx(INFO, "ICC Public key is " _GREEN_("not subject") " to ROCA vulnerability, it is secure"); } } @@ -1967,10 +2007,7 @@ static int CmdEMVRoca(const char *Cmd) { } out: - - // free tlv object tlvdb_free(tlvRoot); - DropFieldEx(channel); return ret; } From 51e6440bedd34ff59b75cf21f8e51b9583ca5b34 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 29 May 2020 09:27:58 +0200 Subject: [PATCH 214/527] chg, printing style in emv --- client/src/emv/emvcore.c | 155 +++++++++++++++------------------------ 1 file changed, 58 insertions(+), 97 deletions(-) diff --git a/client/src/emv/emvcore.c b/client/src/emv/emvcore.c index 852d801c7..7a3e141e0 100644 --- a/client/src/emv/emvcore.c +++ b/client/src/emv/emvcore.c @@ -675,34 +675,28 @@ int trSDA(struct tlvdb *tlv) { struct emv_pk *pk = get_ca_pk(tlv); if (!pk) { - PrintAndLogEx(ERR, "Error: Key not found. Exit."); + PrintAndLogEx(ERR, "Error: Key not found, exiting"); return 2; } struct emv_pk *issuer_pk = emv_pki_recover_issuer_cert(pk, tlv); if (!issuer_pk) { emv_pk_free(pk); - PrintAndLogEx(ERR, "Error: Issuer certificate not found. Exit."); + PrintAndLogEx(ERR, "Error: Issuer certificate not found, exiting"); return 2; } - - PrintAndLogEx(SUCCESS, "Issuer PK recovered. RID %02hhx:%02hhx:%02hhx:%02hhx:%02hhx IDX %02hhx CSN %02hhx:%02hhx:%02hhx", - issuer_pk->rid[0], - issuer_pk->rid[1], - issuer_pk->rid[2], - issuer_pk->rid[3], - issuer_pk->rid[4], - issuer_pk->index, - issuer_pk->serial[0], - issuer_pk->serial[1], - issuer_pk->serial[2] - ); + + PrintAndLogEx(SUCCESS, "Issuer Public key recovered RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), + sprint_hex(issuer_pk->rid, 5), + issuer_pk->index, + sprint_hex(issuer_pk->serial, 3) + ); const struct tlv *sda_tlv = tlvdb_get(tlv, 0x21, NULL); if (!sda_tlv || sda_tlv->len < 1) { emv_pk_free(issuer_pk); emv_pk_free(pk); - PrintAndLogEx(WARNING, "Can't find input list for Offline Data Authentication. Exit."); + PrintAndLogEx(WARNING, "Can't find input list for Offline Data Authentication, exiting"); return 3; } @@ -733,52 +727,42 @@ int trDDA(EMVCommandChannel channel, bool decodeTLV, struct tlvdb *tlv) { struct emv_pk *pk = get_ca_pk(tlv); if (!pk) { - PrintAndLogEx(ERR, "Error: Key not found. Exit."); + PrintAndLogEx(ERR, "Error: Key not found, exiting"); return 2; } const struct tlv *sda_tlv = tlvdb_get(tlv, 0x21, NULL); /* if (!sda_tlv || sda_tlv->len < 1) { it may be 0!!!! emv_pk_free(pk); - PrintAndLogEx(ERR, "Error: Can't find input list for Offline Data Authentication. Exit."); + PrintAndLogEx(ERR, "Error: Can't find input list for Offline Data Authentication, exiting"); return 3; } */ struct emv_pk *issuer_pk = emv_pki_recover_issuer_cert(pk, tlv); if (!issuer_pk) { emv_pk_free(pk); - PrintAndLogEx(ERR, "Error: Issuer certificate not found. Exit."); + PrintAndLogEx(ERR, "Error: Issuer certificate not found, exiting"); return 2; } - PrintAndLogEx(SUCCESS, "Issuer PK recovered. RID %02hhx:%02hhx:%02hhx:%02hhx:%02hhx IDX %02hhx CSN %02hhx:%02hhx:%02hhx\n", - issuer_pk->rid[0], - issuer_pk->rid[1], - issuer_pk->rid[2], - issuer_pk->rid[3], - issuer_pk->rid[4], - issuer_pk->index, - issuer_pk->serial[0], - issuer_pk->serial[1], - issuer_pk->serial[2] - ); + + PrintAndLogEx(SUCCESS, "Issuer Public key recovered RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), + sprint_hex(issuer_pk->rid, 5), + issuer_pk->index, + sprint_hex(issuer_pk->serial, 3) + ); struct emv_pk *icc_pk = emv_pki_recover_icc_cert(issuer_pk, tlv, sda_tlv); if (!icc_pk) { emv_pk_free(pk); emv_pk_free(issuer_pk); - PrintAndLogEx(ERR, "Error: ICC certificate not found. Exit."); + PrintAndLogEx(ERR, "Error: ICC certificate not found, exiting"); return 2; } - PrintAndLogEx(SUCCESS, "ICC PK recovered. RID %02hhx:%02hhx:%02hhx:%02hhx:%02hhx IDX %02hhx CSN %02hhx:%02hhx:%02hhx\n", - icc_pk->rid[0], - icc_pk->rid[1], - icc_pk->rid[2], - icc_pk->rid[3], - icc_pk->rid[4], + + PrintAndLogEx(SUCCESS, "ICC Public key recovered. RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), + sprint_hex(icc_pk->rid, 5), icc_pk->index, - icc_pk->serial[0], - icc_pk->serial[1], - icc_pk->serial[2] + sprint_hex(icc_pk->serial, 3) ); if (tlvdb_get(tlv, 0x9f2d, NULL)) { @@ -786,20 +770,14 @@ int trDDA(EMVCommandChannel channel, bool decodeTLV, struct tlvdb *tlv) { if (!icc_pe_pk) { PrintAndLogEx(WARNING, "WARNING: ICC PE PK recover error. "); } else { - PrintAndLogEx(SUCCESS, "ICC PE PK recovered. RID %02hhx:%02hhx:%02hhx:%02hhx:%02hhx IDX %02hhx CSN %02hhx:%02hhx:%02hhx\n", - icc_pe_pk->rid[0], - icc_pe_pk->rid[1], - icc_pe_pk->rid[2], - icc_pe_pk->rid[3], - icc_pe_pk->rid[4], + PrintAndLogEx(SUCCESS, "ICC PE Public key recovered. RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), + sprint_hex(icc_pe_pk->rid, 5), icc_pe_pk->index, - icc_pe_pk->serial[0], - icc_pe_pk->serial[1], - icc_pe_pk->serial[2] + sprint_hex(icc_pe_pk->serial,3) ); } } else { - PrintAndLogEx(INFO, "ICC PE PK (PIN Encipherment Public Key Certificate) not found.\n"); + PrintAndLogEx(INFO, "ICC PE Public Key (PIN Encipherment Public Key Certificate) not found.\n"); } // 9F4B: Signed Dynamic Application Data @@ -807,7 +785,7 @@ int trDDA(EMVCommandChannel channel, bool decodeTLV, struct tlvdb *tlv) { // DDA with internal authenticate OR fDDA with filled 0x9F4B tag (GPO result) // EMV kernel3 v2.4, contactless book C-3, C.1., page 147 if (sdad_tlv) { - PrintAndLogEx(NORMAL, "\n* * Got Signed Dynamic Application Data (9F4B) form GPO. Maybe fDDA..."); + PrintAndLogEx(NORMAL, "* * Got Signed Dynamic Application Data (9F4B) form GPO. Maybe fDDA..."); const struct tlvdb *atc_db = emv_pki_recover_atc_ex(icc_pk, tlv, true); if (!atc_db) { @@ -831,7 +809,7 @@ int trDDA(EMVCommandChannel channel, bool decodeTLV, struct tlvdb *tlv) { PrintAndLogEx(WARNING, "Error: fDDA verified, but ATC in the certificate and ATC in the record not the same."); } } else { - PrintAndLogEx(NORMAL, "\nERROR: fDDA (fast DDA) verify error"); + PrintAndLogEx(WARNING, "ERROR: fDDA (fast DDA) verify error"); emv_pk_free(pk); emv_pk_free(issuer_pk); emv_pk_free(icc_pk); @@ -872,7 +850,7 @@ int trDDA(EMVCommandChannel channel, bool decodeTLV, struct tlvdb *tlv) { PrintAndLogEx(NORMAL, "\n* Internal Authenticate"); int res = EMVInternalAuthenticate(channel, true, (uint8_t *)ddol_data_tlv->value, ddol_data_tlv->len, buf, sizeof(buf), &len, &sw, NULL); if (res) { - PrintAndLogEx(ERR, "Internal Authenticate error(%d): %4x. Exit...", res, sw); + PrintAndLogEx(ERR, "Internal Authenticate error(%d): %4x, exiting..", res, sw); free(ddol_data_tlv); emv_pk_free(pk); emv_pk_free(issuer_pk); @@ -956,58 +934,48 @@ int trCDA(struct tlvdb *tlv, struct tlvdb *ac_tlv, struct tlv *pdol_data_tlv, st struct emv_pk *pk = get_ca_pk(tlv); if (!pk) { - PrintAndLogEx(ERR, "Error: Key not found. Exit."); + PrintAndLogEx(ERR, "Error: Key not found, exiting"); return 2; } const struct tlv *sda_tlv = tlvdb_get(tlv, 0x21, NULL); if (!sda_tlv || sda_tlv->len < 1) { - PrintAndLogEx(ERR, "Error: Can't find input list for Offline Data Authentication. Exit."); + PrintAndLogEx(ERR, "Error: Can't find input list for Offline Data Authentication, exiting"); emv_pk_free(pk); return 3; } struct emv_pk *issuer_pk = emv_pki_recover_issuer_cert(pk, tlv); if (!issuer_pk) { - PrintAndLogEx(ERR, "Error: Issuer certificate not found. Exit."); + PrintAndLogEx(ERR, "Error: Issuer certificate not found, exiting"); emv_pk_free(pk); return 2; } - PrintAndLogEx(SUCCESS, "Issuer PK recovered. RID %02hhx:%02hhx:%02hhx:%02hhx:%02hhx IDX %02hhx CSN %02hhx:%02hhx:%02hhx\n", - issuer_pk->rid[0], - issuer_pk->rid[1], - issuer_pk->rid[2], - issuer_pk->rid[3], - issuer_pk->rid[4], - issuer_pk->index, - issuer_pk->serial[0], - issuer_pk->serial[1], - issuer_pk->serial[2] - ); + + PrintAndLogEx(SUCCESS, "Issuer Public key recovered RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), + sprint_hex(issuer_pk->rid, 5), + issuer_pk->index, + sprint_hex(issuer_pk->serial, 3) + ); struct emv_pk *icc_pk = emv_pki_recover_icc_cert(issuer_pk, tlv, sda_tlv); if (!icc_pk) { - PrintAndLogEx(ERR, "Error: ICC certificate not found. Exit."); + PrintAndLogEx(ERR, "Error: ICC certificate not found, exiting"); emv_pk_free(pk); emv_pk_free(issuer_pk); return 2; } - PrintAndLogEx(SUCCESS, "ICC PK recovered. RID %02hhx:%02hhx:%02hhx:%02hhx:%02hhx IDX %02hhx CSN %02hhx:%02hhx:%02hhx\n", - icc_pk->rid[0], - icc_pk->rid[1], - icc_pk->rid[2], - icc_pk->rid[3], - icc_pk->rid[4], + + PrintAndLogEx(SUCCESS, "ICC Public key recovered. RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), + sprint_hex(icc_pk->rid, 5), icc_pk->index, - icc_pk->serial[0], - icc_pk->serial[1], - icc_pk->serial[2] + sprint_hex(icc_pk->serial,3) ); struct tlvdb *dac_db = emv_pki_recover_dac(issuer_pk, tlv, sda_tlv); if (dac_db) { const struct tlv *dac_tlv = tlvdb_get(dac_db, 0x9f45, NULL); - PrintAndLogEx(NORMAL, "SSAD verified OK. (%02hhx:%02hhx)", dac_tlv->value[0], dac_tlv->value[1]); + PrintAndLogEx(SUCCESS, "SSAD verified (%s) (%02hhx:%02hhx)", _GREEN_("ok"), dac_tlv->value[0], dac_tlv->value[1]); tlvdb_add(tlv, dac_db); } else { PrintAndLogEx(ERR, "Error: SSAD verify error"); @@ -1017,7 +985,7 @@ int trCDA(struct tlvdb *tlv, struct tlvdb *ac_tlv, struct tlv *pdol_data_tlv, st return 4; } - PrintAndLogEx(NORMAL, "\n* * Check Signed Dynamic Application Data (SDAD)"); + PrintAndLogEx(INFO, "* * Check Signed Dynamic Application Data (SDAD)"); struct tlvdb *idn_db = emv_pki_perform_cda_ex(icc_pk, tlv, ac_tlv, pdol_data_tlv, // pdol ac_data_tlv, // cdol1 @@ -1025,11 +993,11 @@ int trCDA(struct tlvdb *tlv, struct tlvdb *ac_tlv, struct tlv *pdol_data_tlv, st true); if (idn_db) { const struct tlv *idn_tlv = tlvdb_get(idn_db, 0x9f4c, NULL); - PrintAndLogEx(NORMAL, "\nIDN (ICC Dynamic Number) [%zu] %s", idn_tlv->len, sprint_hex_inrow(idn_tlv->value, idn_tlv->len)); - PrintAndLogEx(NORMAL, "CDA verified OK."); + PrintAndLogEx(INFO, "IDN (ICC Dynamic Number) [%zu] %s", idn_tlv->len, sprint_hex_inrow(idn_tlv->value, idn_tlv->len)); + PrintAndLogEx(SUCCESS, "CDA verified (%s)", _GREEN_("ok")); tlvdb_add(tlv, idn_db); } else { - PrintAndLogEx(ERR, "\nERROR: CDA verify error"); + PrintAndLogEx(ERR, "ERROR: CDA verify error"); } emv_pk_free(pk); @@ -1039,30 +1007,24 @@ int trCDA(struct tlvdb *tlv, struct tlvdb *ac_tlv, struct tlv *pdol_data_tlv, st } int RecoveryCertificates(struct tlvdb *tlvRoot, json_t *root) { - struct emv_pk *pk = get_ca_pk(tlvRoot); if (!pk) { - PrintAndLogEx(ERR, "ERROR: Key not found. Exit."); + PrintAndLogEx(ERR, "ERROR: Key not found, exiting"); return 1; } struct emv_pk *issuer_pk = emv_pki_recover_issuer_cert(pk, tlvRoot); if (!issuer_pk) { emv_pk_free(pk); - PrintAndLogEx(WARNING, "WARNING: Issuer certificate not found. Exit."); + PrintAndLogEx(WARNING, "WARNING: Issuer certificate not found, exiting"); return 2; } - PrintAndLogEx(SUCCESS, "Issuer PK recovered. RID %02hhx:%02hhx:%02hhx:%02hhx:%02hhx IDX %02hhx CSN %02hhx:%02hhx:%02hhx", - issuer_pk->rid[0], - issuer_pk->rid[1], - issuer_pk->rid[2], - issuer_pk->rid[3], - issuer_pk->rid[4], - issuer_pk->index, - issuer_pk->serial[0], - issuer_pk->serial[1], - issuer_pk->serial[2] - ); + + PrintAndLogEx(SUCCESS, "Issuer Public key recovered RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), + sprint_hex(issuer_pk->rid, 5), + issuer_pk->index, + sprint_hex(issuer_pk->serial, 3) + ); JsonSaveBufAsHex(root, "$.ApplicationData.RID", issuer_pk->rid, 5); @@ -1075,7 +1037,7 @@ int RecoveryCertificates(struct tlvdb *tlvRoot, json_t *root) { if (!icc_pk) { emv_pk_free(pk); emv_pk_free(issuer_pk); - PrintAndLogEx(WARNING, "WARNING: ICC certificate not found. Exit."); + PrintAndLogEx(WARNING, "WARNING: ICC certificate not found, exiting"); return 2; } PrintAndLogEx(SUCCESS, "ICC PK recovered. RID %02hhx:%02hhx:%02hhx:%02hhx:%02hhx IDX %02hhx CSN %02hhx:%02hhx:%02hhx\n", @@ -1094,6 +1056,5 @@ int RecoveryCertificates(struct tlvdb *tlvRoot, json_t *root) { JsonSaveStr(root, "$.ApplicationData.ICCPublicKeyDec", icc_pk_c); JsonSaveBufAsHex(root, "$.ApplicationData.ICCPublicKeyModulus", icc_pk->modulus, icc_pk->mlen); free(icc_pk_c); - return 0; } From 7e70b53dd46f820950f70787c688cbc43a9d746a Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 29 May 2020 09:28:09 +0200 Subject: [PATCH 215/527] chg, scope --- client/src/util.c | 14 ++++++++------ 1 file changed, 8 insertions(+), 6 deletions(-) diff --git a/client/src/util.c b/client/src/util.c index a22d8edde..12e62074c 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -194,9 +194,9 @@ void hex_to_buffer(const uint8_t *buf, const uint8_t *hex_data, const size_t hex size_t i; memset(tmp, 0x00, hex_max_len); - size_t maxLen = (hex_len > hex_max_len) ? hex_max_len : hex_len; + size_t max_len = (hex_len > hex_max_len) ? hex_max_len : hex_len; - for (i = 0; i < maxLen; ++i, tmp += 2 + spaces_between) { + for (i = 0; i < max_len; ++i, tmp += 2 + spaces_between) { sprintf(tmp, (uppercase) ? "%02X" : "%02x", (unsigned int) hex_data[i]); for (size_t j = 0; j < spaces_between; j++) @@ -204,10 +204,12 @@ void hex_to_buffer(const uint8_t *buf, const uint8_t *hex_data, const size_t hex } i *= (2 + spaces_between); - size_t minStrLen = min_str_len > i ? min_str_len : 0; - if (minStrLen > hex_max_len) - minStrLen = hex_max_len; - for (; i < minStrLen; i++, tmp += 1) + + size_t mlen = min_str_len > i ? min_str_len : 0; + if (mlen > hex_max_len) + mlen = hex_max_len; + + for (; i < mlen; i++, tmp += 1) sprintf(tmp, " "); // remove last space From fd6ac2f024e8afe3c1602e37163cc5a8b5cd0053 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 29 May 2020 09:46:06 +0200 Subject: [PATCH 216/527] chg, emv print, styles, --- client/src/crypto/asn1utils.c | 6 ++-- client/src/emv/emv_pki.c | 8 ++--- client/src/emv/emvcore.c | 56 ++++++++++++++++------------------- client/src/emv/tlv.h | 2 +- 4 files changed, 31 insertions(+), 41 deletions(-) diff --git a/client/src/crypto/asn1utils.c b/client/src/crypto/asn1utils.c index 1b2c78212..9e5826712 100644 --- a/client/src/crypto/asn1utils.c +++ b/client/src/crypto/asn1utils.c @@ -64,14 +64,12 @@ exit: return res; } -static bool print_cb(void *data, const struct tlv *tlv, int level, bool is_leaf) { +static void print_cb(void *data, const struct tlv *tlv, int level, bool is_leaf) { bool candump = true; asn1_tag_dump(tlv, stdout, level, &candump); if (is_leaf && candump) { dump_buffer(tlv->value, tlv->len, stdout, level); } - - return true; } int asn1_print(uint8_t *asn1buf, size_t asn1buflen, const char *indent) { @@ -81,7 +79,7 @@ int asn1_print(uint8_t *asn1buf, size_t asn1buflen, const char *indent) { tlvdb_visit(t, print_cb, NULL, 0); tlvdb_free(t); } else { - PrintAndLogEx(ERR, "Can't parse data as TLV tree."); + PrintAndLogEx(ERR, "Can't parse data as TLV tree"); return 1; } diff --git a/client/src/emv/emv_pki.c b/client/src/emv/emv_pki.c index fba5902f9..0afcfe775 100644 --- a/client/src/emv/emv_pki.c +++ b/client/src/emv/emv_pki.c @@ -462,22 +462,20 @@ struct tlvdb *emv_pki_recover_atc_ex(const struct emv_pk *enc_pk, const struct t return atc_db; } -static bool tlv_hash(void *data, const struct tlv *tlv, int level, bool is_leaf) { +static void tlv_hash(void *data, const struct tlv *tlv, int level, bool is_leaf) { struct crypto_hash *ch = data; size_t tag_len; unsigned char *tag; if (tlv_is_constructed(tlv)) - return true; + return; if (tlv->tag == 0x9f4b) - return true; + return; tag = tlv_encode(tlv, &tag_len); crypto_hash_write(ch, tag, tag_len); free(tag); - - return true; } struct tlvdb *emv_pki_perform_cda(const struct emv_pk *enc_pk, const struct tlvdb *db, diff --git a/client/src/emv/emvcore.c b/client/src/emv/emvcore.c index 7a3e141e0..f2244fa05 100644 --- a/client/src/emv/emvcore.c +++ b/client/src/emv/emvcore.c @@ -24,7 +24,7 @@ #include "emvjson.h" #include "util_posix.h" -// Got from here. Thanks) +// Got from here. Thanks! // https://eftlab.co.uk/index.php/site-map/knowledge-base/211-emv-aid-rid-pix static const char *PSElist [] = { "325041592E5359532E4444463031", // 2PAY.SYS.DDF01 - Visa Proximity Payment System Environment - PPSE @@ -131,6 +131,7 @@ static const TAIDList AIDlist [] = { { CV_OTHER, "F0000000030001" }, // BRADESCO - Brazilian Bank Banco Bradesco }; +//iceman: this logging setting, should be unified with client debug etc. static bool APDULogging = false; void SetAPDULogging(bool logging) { APDULogging = logging; @@ -156,20 +157,18 @@ enum CardPSVendor GetCardPSVendor(uint8_t *AID, size_t AIDlen) { return CV_NA; } -static bool print_cb(void *data, const struct tlv *tlv, int level, bool is_leaf) { +static void print_cb(void *data, const struct tlv *tlv, int level, bool is_leaf) { emv_tag_dump(tlv, stdout, level); if (is_leaf) { dump_buffer(tlv->value, tlv->len, stdout, level); } - - return true; } bool TLVPrintFromBuffer(uint8_t *data, int datalen) { struct tlvdb *t = NULL; t = tlvdb_parse_multi(data, datalen); if (t) { - PrintAndLogEx(NORMAL, "-------------------- TLV decoded --------------------"); + PrintAndLogEx(INFO, "-------------------- " _CYAN_("TLV decoded") " --------------------"); tlvdb_visit(t, print_cb, NULL, 0); tlvdb_free(t); @@ -192,13 +191,13 @@ void TLVPrintFromTLV(struct tlvdb *tlv) { } void TLVPrintAIDlistFromSelectTLV(struct tlvdb *tlv) { - PrintAndLogEx(NORMAL, "|------------------|--------|-------------------------|"); - PrintAndLogEx(NORMAL, "| AID |Priority| Name |"); - PrintAndLogEx(NORMAL, "|------------------|--------|-------------------------|"); + PrintAndLogEx(INFO, "|------------------+--------+-------------------------|"); + PrintAndLogEx(INFO, "| AID |Priority| Name |"); + PrintAndLogEx(INFO, "|------------------+--------+-------------------------|"); struct tlvdb *ttmp = tlvdb_find(tlv, 0x6f); if (!ttmp) - PrintAndLogEx(NORMAL, "| none |"); + PrintAndLogEx(INFO, "| none |"); while (ttmp) { const struct tlv *tgAID = tlvdb_get_inchild(ttmp, 0x84, NULL); @@ -206,7 +205,7 @@ void TLVPrintAIDlistFromSelectTLV(struct tlvdb *tlv) { const struct tlv *tgPrio = tlvdb_get_inchild(ttmp, 0x87, NULL); if (!tgAID) break; - PrintAndLogEx(NORMAL, "|%s| %s |%s|", + PrintAndLogEx(INFO, "|%s| %s |%s|", sprint_hex_inrow_ex(tgAID->value, tgAID->len, 18), (tgPrio) ? sprint_hex(tgPrio->value, 1) : " ", (tgName) ? sprint_ascii_ex(tgName->value, tgName->len, 25) : " "); @@ -214,7 +213,7 @@ void TLVPrintAIDlistFromSelectTLV(struct tlvdb *tlv) { ttmp = tlvdb_find_next(ttmp, 0x6f); } - PrintAndLogEx(NORMAL, "|------------------|--------|-------------------------|"); + PrintAndLogEx(INFO, "|------------------+--------+-------------------------|"); } struct tlvdb *GetPANFromTrack2(const struct tlv *track2) { @@ -362,7 +361,6 @@ int EMVSelectPSE(EMVCommandChannel channel, bool ActivateField, bool LeaveFieldO uint8_t buf[APDU_AID_LEN] = {0}; *ResultLen = 0; int len = 0; - int res = 0; switch (PSENum) { case 1: param_gethex_to_eol(PSElist[1], 0, buf, sizeof(buf), &len); @@ -373,11 +371,7 @@ int EMVSelectPSE(EMVCommandChannel channel, bool ActivateField, bool LeaveFieldO default: return -1; } - - // select - res = EMVSelect(channel, ActivateField, LeaveFieldON, buf, len, Result, MaxResultLen, ResultLen, sw, NULL); - - return res; + return EMVSelect(channel, ActivateField, LeaveFieldON, buf, len, Result, MaxResultLen, ResultLen, sw, NULL); } static int EMVSelectWithRetry(EMVCommandChannel channel, bool ActivateField, bool LeaveFieldON, uint8_t *AID, size_t AIDLen, uint8_t *Result, size_t MaxResultLen, size_t *ResultLen, uint16_t *sw, struct tlvdb *tlv) { @@ -398,7 +392,7 @@ static int EMVSelectWithRetry(EMVCommandChannel channel, bool ActivateField, boo } retrycnt = 0; - PrintAndLogEx(NORMAL, "Retry failed [%s]. Skipped...", sprint_hex_inrow(AID, AIDLen)); + PrintAndLogEx(FAILED, "Retry failed [%s]. Skipped...", sprint_hex_inrow(AID, AIDLen)); return res; } } @@ -430,7 +424,7 @@ static int EMVCheckAID(EMVCommandChannel channel, bool decodeTLV, struct tlvdb * // all is ok if (decodeTLV) { - PrintAndLogEx(NORMAL, "%s:", sprint_hex_inrow(tgAID->value, tgAID->len)); + PrintAndLogEx(SUCCESS, "%s:", sprint_hex_inrow(tgAID->value, tgAID->len)); TLVPrintFromBuffer(data, datalen); } } @@ -667,7 +661,7 @@ struct emv_pk *get_ca_pk(struct tlvdb *db) { if (!df_tlv || !caidx_tlv || df_tlv->len < 6 || caidx_tlv->len != 1) return NULL; - PrintAndLogEx(NORMAL, "CA public key index 0x%0x", caidx_tlv->value[0]); + PrintAndLogEx(INFO, "CA public key index 0x%0x", caidx_tlv->value[0]); return emv_pk_get_ca_pk(df_tlv->value, caidx_tlv->value[0]); } @@ -703,7 +697,7 @@ int trSDA(struct tlvdb *tlv) { struct tlvdb *dac_db = emv_pki_recover_dac(issuer_pk, tlv, sda_tlv); if (dac_db) { const struct tlv *dac_tlv = tlvdb_get(dac_db, 0x9f45, NULL); - PrintAndLogEx(NORMAL, "SDA verified OK. (Data Authentication Code: %02hhx:%02hhx)\n", dac_tlv->value[0], dac_tlv->value[1]); + PrintAndLogEx(INFO, "SDA verified (%s) (Data Authentication Code: %02hhx:%02hhx)", _GREEN_("ok"), dac_tlv->value[0], dac_tlv->value[1]); tlvdb_add(tlv, dac_db); } else { emv_pk_free(issuer_pk); @@ -785,7 +779,7 @@ int trDDA(EMVCommandChannel channel, bool decodeTLV, struct tlvdb *tlv) { // DDA with internal authenticate OR fDDA with filled 0x9F4B tag (GPO result) // EMV kernel3 v2.4, contactless book C-3, C.1., page 147 if (sdad_tlv) { - PrintAndLogEx(NORMAL, "* * Got Signed Dynamic Application Data (9F4B) form GPO. Maybe fDDA..."); + PrintAndLogEx(INFO, "* * Got Signed Dynamic Application Data (9F4B) form GPO. Maybe fDDA..."); const struct tlvdb *atc_db = emv_pki_recover_atc_ex(icc_pk, tlv, true); if (!atc_db) { @@ -799,7 +793,7 @@ int trDDA(EMVCommandChannel channel, bool decodeTLV, struct tlvdb *tlv) { // 9f36 Application Transaction Counter (ATC) const struct tlv *atc_tlv = tlvdb_get(atc_db, 0x9f36, NULL); if (atc_tlv) { - PrintAndLogEx(NORMAL, "\nATC (Application Transaction Counter) [%zu] %s", atc_tlv->len, sprint_hex_inrow(atc_tlv->value, atc_tlv->len)); + PrintAndLogEx(INFO, "ATC (Application Transaction Counter) [%zu] %s", atc_tlv->len, sprint_hex_inrow(atc_tlv->value, atc_tlv->len)); const struct tlv *core_atc_tlv = tlvdb_get(tlv, 0x9f36, NULL); if (tlv_equal(core_atc_tlv, atc_tlv)) { @@ -819,7 +813,7 @@ int trDDA(EMVCommandChannel channel, bool decodeTLV, struct tlvdb *tlv) { struct tlvdb *dac_db = emv_pki_recover_dac(issuer_pk, tlv, sda_tlv); if (dac_db) { const struct tlv *dac_tlv = tlvdb_get(dac_db, 0x9f45, NULL); - PrintAndLogEx(NORMAL, "SDAD verified OK. (Data Authentication Code: %02hhx:%02hhx)\n", dac_tlv->value[0], dac_tlv->value[1]); + PrintAndLogEx(INFO, "SDAD verified (%s) (Data Authentication Code: %02hhx:%02hhx)\n", _GREEN_("ok"), dac_tlv->value[0], dac_tlv->value[1]); tlvdb_add(tlv, dac_db); } else { PrintAndLogEx(ERR, "Error: SSAD verify error"); @@ -829,11 +823,11 @@ int trDDA(EMVCommandChannel channel, bool decodeTLV, struct tlvdb *tlv) { return 4; } - PrintAndLogEx(NORMAL, "\n* Calc DDOL"); + PrintAndLogEx(INFO, "* Calc DDOL"); const struct tlv *ddol_tlv = tlvdb_get(tlv, 0x9f49, NULL); if (!ddol_tlv) { ddol_tlv = &default_ddol_tlv; - PrintAndLogEx(NORMAL, "DDOL [9f49] not found. Using default DDOL"); + PrintAndLogEx(INFO, "DDOL [9f49] not found. Using default DDOL"); } struct tlv *ddol_data_tlv = dol_process(ddol_tlv, tlv, 0); @@ -845,9 +839,9 @@ int trDDA(EMVCommandChannel channel, bool decodeTLV, struct tlvdb *tlv) { return 5; } - PrintAndLogEx(NORMAL, "DDOL data[%zu]: %s", ddol_data_tlv->len, sprint_hex(ddol_data_tlv->value, ddol_data_tlv->len)); + PrintAndLogEx(INFO, "DDOL data[%zu]: %s", ddol_data_tlv->len, sprint_hex(ddol_data_tlv->value, ddol_data_tlv->len)); - PrintAndLogEx(NORMAL, "\n* Internal Authenticate"); + PrintAndLogEx(INFO, "* Internal Authenticate"); int res = EMVInternalAuthenticate(channel, true, (uint8_t *)ddol_data_tlv->value, ddol_data_tlv->len, buf, sizeof(buf), &len, &sw, NULL); if (res) { PrintAndLogEx(ERR, "Internal Authenticate error(%d): %4x, exiting..", res, sw); @@ -874,7 +868,7 @@ int trDDA(EMVCommandChannel channel, bool decodeTLV, struct tlvdb *tlv) { tlvdb_free(t80); if (decodeTLV) { - PrintAndLogEx(NORMAL, "* * Decode response format 1:"); + PrintAndLogEx(INFO, "* * Decode response format 1:"); TLVPrintFromTLV(dda_db); } } @@ -909,12 +903,12 @@ int trDDA(EMVCommandChannel channel, bool decodeTLV, struct tlvdb *tlv) { // 9f4c ICC Dynamic Number const struct tlv *idn_tlv = tlvdb_get(idn_db, 0x9f4c, NULL); if (idn_tlv) { - PrintAndLogEx(INFO, "\nIDN (ICC Dynamic Number) [%zu] %s", idn_tlv->len, sprint_hex_inrow(idn_tlv->value, idn_tlv->len)); + PrintAndLogEx(INFO, "IDN (ICC Dynamic Number) [%zu] %s", idn_tlv->len, sprint_hex_inrow(idn_tlv->value, idn_tlv->len)); PrintAndLogEx(INFO, "DDA verified OK."); tlvdb_add(tlv, idn_db); tlvdb_free(idn_db); } else { - PrintAndLogEx(ERR, "\nDDA verify error"); + PrintAndLogEx(ERR, "DDA verify error"); tlvdb_free(idn_db); emv_pk_free(pk); diff --git a/client/src/emv/tlv.h b/client/src/emv/tlv.h index 06a836876..41c28c3ef 100644 --- a/client/src/emv/tlv.h +++ b/client/src/emv/tlv.h @@ -29,7 +29,7 @@ struct tlv { }; struct tlvdb; -typedef bool (*tlv_cb)(void *data, const struct tlv *tlv, int level, bool is_leaf); +typedef void (*tlv_cb)(void *data, const struct tlv *tlv, int level, bool is_leaf); struct tlvdb *tlvdb_fixed(tlv_tag_t tag, size_t len, const unsigned char *value); struct tlvdb *tlvdb_external(tlv_tag_t tag, size_t len, const unsigned char *value); From 54827d3ec93acbc57656b361da436e8beaddaf1d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 29 May 2020 10:15:40 +0200 Subject: [PATCH 217/527] chg, printf --- client/src/emv/test/cda_test.c | 51 ++++++++++++-------------- client/src/emv/test/crypto_test.c | 60 +++++++++++++++---------------- client/src/emv/test/cryptotest.c | 12 +++---- client/src/emv/test/dda_test.c | 49 ++++++++++++------------- client/src/emv/test/sda_test.c | 45 +++++++++++------------ 5 files changed, 99 insertions(+), 118 deletions(-) diff --git a/client/src/emv/test/cda_test.c b/client/src/emv/test/cda_test.c index 72f076a54..4fe181d6a 100644 --- a/client/src/emv/test/cda_test.c +++ b/client/src/emv/test/cda_test.c @@ -17,16 +17,16 @@ #include <config.h> #endif +#include <string.h> // memcpy +#include <stdlib.h> // malloc +#include "cda_test.h" + #include "../emv_pk.h" #include "../crypto.h" #include "../dump.h" #include "../tlv.h" #include "../emv_pki.h" - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> -#include "cda_test.h" +#include "ui.h" // printandlog struct emv_pk c_mchip_05 = { .rid = { 0xa0, 0x00, 0x00, 0x00, 0x04, }, @@ -169,7 +169,7 @@ static int cda_test_raw(bool verbose) { return 1; if (verbose) { - printf("issuer cert:\n"); + PrintAndLogEx(INFO, "issuer cert:"); dump_buffer(ipk_data, ipk_data_len, stdout, 0); } @@ -199,7 +199,7 @@ static int cda_test_raw(bool verbose) { } if (verbose) { - printf("crypto hash:\n"); + PrintAndLogEx(INFO, "crypto hash:"); dump_buffer(h, 20, stdout, 0); } @@ -228,7 +228,7 @@ static int cda_test_raw(bool verbose) { return 1; if (verbose) { - printf("icc cert:\n"); + PrintAndLogEx(INFO, "icc cert:"); dump_buffer(iccpk_data, iccpk_data_len, stdout, 0); } @@ -257,7 +257,7 @@ static int cda_test_raw(bool verbose) { } if (verbose) { - printf("crypto hash1.1:\n"); + PrintAndLogEx(INFO, "crypto hash1.1:"); dump_buffer(h, 20, stdout, 0); } @@ -284,7 +284,7 @@ static int cda_test_raw(bool verbose) { return 1; if (verbose) { - printf("SDAD:\n"); + PrintAndLogEx(INFO, "SDAD:"); dump_buffer(sdad, sdad_len, stdout, 0); } @@ -305,7 +305,7 @@ static int cda_test_raw(bool verbose) { } if (verbose) { - printf("crypto hash2:\n"); + PrintAndLogEx(INFO, "crypto hash2:"); dump_buffer(h2, 20, stdout, 0); } @@ -328,7 +328,7 @@ static int cda_test_raw(bool verbose) { } if (verbose) { - printf("crypto hash2.1:\n"); + PrintAndLogEx(INFO, "crypto hash2.1:"); dump_buffer(h, 20, stdout, 0); } @@ -339,9 +339,7 @@ static int cda_test_raw(bool verbose) { } crypto_hash_close(ch); - free(sdad); - return 0; } @@ -356,7 +354,7 @@ static int cda_test_pk(bool verbose) { struct emv_pk *ipk = emv_pki_recover_issuer_cert(pk, db); if (!ipk) { - fprintf(stderr, "Could not recover Issuer certificate!\n"); + PrintAndLogEx(WARNING, "Could not recover Issuer certificate!"); tlvdb_free(db); return 2; } @@ -367,7 +365,7 @@ static int cda_test_pk(bool verbose) { struct emv_pk *iccpk = emv_pki_recover_icc_cert(ipk, db, &ssd1_tlv); if (!iccpk) { - fprintf(stderr, "Could not recover ICC certificate!\n"); + PrintAndLogEx(WARNING, "Could not recover ICC certificate!"); emv_pk_free(ipk); tlvdb_free(db); return 2; @@ -387,7 +385,7 @@ static int cda_test_pk(bool verbose) { &crm1_tlv, NULL); if (!idndb) { - fprintf(stderr, "Could not recover IDN!\n"); + PrintAndLogEx(WARNING, "Could not recover IDN!"); tlvdb_free(cda_db); emv_pk_free(iccpk); emv_pk_free(ipk); @@ -397,7 +395,7 @@ static int cda_test_pk(bool verbose) { const struct tlv *idn = tlvdb_get(idndb, 0x9f4c, NULL); if (!idn) { - fprintf(stderr, "IDN not found!\n"); + PrintAndLogEx(WARNING, "IDN not found!"); tlvdb_free(idndb); tlvdb_free(cda_db); emv_pk_free(iccpk); @@ -407,7 +405,7 @@ static int cda_test_pk(bool verbose) { } if (verbose) { - printf("IDN:\n"); + PrintAndLogEx(INFO, "IDN:"); dump_buffer(idn->value, idn->len, stdout, 0); } @@ -416,27 +414,22 @@ static int cda_test_pk(bool verbose) { emv_pk_free(iccpk); emv_pk_free(ipk); tlvdb_free(db); - return 0; } int exec_cda_test(bool verbose) { - int ret; - fprintf(stdout, "\n"); - - ret = cda_test_raw(verbose); + int ret = cda_test_raw(verbose); if (ret) { - fprintf(stderr, "CDA raw test: failed\n"); + PrintAndLogEx(WARNING, "CDA raw test: failed"); return ret; } - fprintf(stdout, "CDA raw test: passed\n"); + PrintAndLogEx(INFO, "CDA raw test: passed"); ret = cda_test_pk(verbose); if (ret) { - fprintf(stderr, "CDA test pk: failed\n"); + PrintAndLogEx(WARNING, "CDA test pk: failed"); return ret; } - fprintf(stdout, "CDA test pk: passed\n"); - + PrintAndLogEx(INFO, "CDA test pk: passed"); return 0; } diff --git a/client/src/emv/test/crypto_test.c b/client/src/emv/test/crypto_test.c index 4a40952a8..332b7dd87 100644 --- a/client/src/emv/test/crypto_test.c +++ b/client/src/emv/test/crypto_test.c @@ -17,16 +17,16 @@ #include <config.h> #endif -#include "commonutil.h" // ARRAYLEN +#include <string.h> // memcpy +#include <stdlib.h> // malloc +#include <inttypes.h> +#include "crypto_test.h" +#include "commonutil.h" // ARRAYLEN #include "../crypto.h" #include "../dump.h" #include "util_posix.h" - -#include <stdlib.h> -#include <string.h> -#include <inttypes.h> -#include "crypto_test.h" +#include "ui.h" // printandlog static int test_genkey(unsigned int keylength, unsigned char *msg, size_t msg_len, bool verbose) { int ret = 1; @@ -34,46 +34,46 @@ static int test_genkey(unsigned int keylength, unsigned char *msg, size_t msg_le unsigned char *tmp, *tmp2; struct crypto_pk *pk; - printf("Testing key length %u ", keylength); + PrintAndLogEx(INFO, "Testing key length " _GREEN_("%u"), keylength); uint64_t ms = msclock(); pk = crypto_pk_genkey(PK_RSA, 1, keylength, 3); if (!pk) { - fprintf(stderr, "ERROR: key generation error.\n"); + PrintAndLogEx(WARNING, "ERROR: key generation error"); goto out; } tmp_len = crypto_pk_get_nbits(pk); if (tmp_len != keylength) { - fprintf(stderr, "ERROR: crypto_pk_get_nbits.\n"); + PrintAndLogEx(WARNING, "ERROR: crypto_pk_get_nbits"); goto close; } tmp = crypto_pk_decrypt(pk, msg, msg_len, &tmp_len); if (!tmp) { - fprintf(stderr, "ERROR: crypto_pk_decrypt.\n"); + PrintAndLogEx(WARNING, "ERROR: crypto_pk_decrypt"); goto close; } tmp2 = crypto_pk_encrypt(pk, tmp, tmp_len, &tmp2_len); if (!tmp2) { - fprintf(stderr, "ERROR: crypto_pk_encrypt.\n"); + PrintAndLogEx(WARNING, "ERROR: crypto_pk_encrypt"); goto free_tmp; } if (tmp2_len == msg_len && !memcmp(tmp2, msg, tmp2_len)) { ret = 0; } else { - fprintf(stderr, "ERROR: encrypt-decrypt sequence length or data error.\n"); + PrintAndLogEx(WARNING, "ERROR: encrypt-decrypt sequence length or data error"); } free(tmp2); - printf("passed. (%"PRIu64" ms) \n", msclock() - ms); + PrintAndLogEx(SUCCESS, "passed (" _GREEN_("%" PRIu64) " ms)", msclock() - ms); + free_tmp: free(tmp); close: crypto_pk_close(pk); - out: return ret; } @@ -202,25 +202,25 @@ static int test_pk(bool verbose) { unsigned char *msg = message; size_t msg_len = sizeof(pk_N); - printf("Testing public keys interfaces\n"); + PrintAndLogEx(INFO, "Testing public keys interfaces"); pubk = crypto_pk_open(PK_RSA, pk_N, sizeof(pk_N), pk_E, sizeof(pk_E)); if (!pubk) { - fprintf(stderr, "ERROR: open public key.\n"); + PrintAndLogEx(WARNING, "ERROR: open public key"); return 1; } tmp_len = crypto_pk_get_nbits(pubk); if (tmp_len != sizeof(pk_N) * 8) { - fprintf(stderr, "ERROR: crypto_pk_get_nbits mismatch.\n"); + PrintAndLogEx(WARNING, "ERROR: crypto_pk_get_nbits mismatch"); goto close_pub; } tmp = crypto_pk_get_parameter(pubk, 0, &tmp_len); if (tmp_len != sizeof(pk_N) || memcmp(tmp, pk_N, tmp_len)) { - fprintf(stderr, "ERROR: crypto_pk_get_parameter(0) Modulus. param len %zu len %zu\n", tmp_len, sizeof(pk_N)); + PrintAndLogEx(WARNING, "ERROR: crypto_pk_get_parameter(0) Modulus. param len %zu len %zu", tmp_len, sizeof(pk_N)); free(tmp); goto close_pub; } @@ -228,7 +228,7 @@ static int test_pk(bool verbose) { tmp = crypto_pk_get_parameter(pubk, 1, &tmp_len); if (tmp_len != sizeof(pk_E) || memcmp(tmp, pk_E, tmp_len)) { - fprintf(stderr, "ERROR: crypto_pk_get_parameter(1) Exponent.\n"); + PrintAndLogEx(WARNING, "ERROR: crypto_pk_get_parameter(1) Exponent"); free(tmp); goto close_pub; } @@ -244,20 +244,20 @@ static int test_pk(bool verbose) { pk_dQ, sizeof(pk_dQ), pk_I, sizeof(pk_I)); if (!privk) { - fprintf(stderr, "ERROR: open private key.\n"); + PrintAndLogEx(WARNING, "ERROR: open private key"); goto close_pub; } tmp_len = crypto_pk_get_nbits(privk); if (tmp_len != sizeof(pk_N) * 8) { - fprintf(stderr, "ERROR: crypto_pk_get_nbits mismatch.\n"); + PrintAndLogEx(WARNING, "ERROR: crypto_pk_get_nbits mismatch"); goto close_pub; } tmp = crypto_pk_get_parameter(privk, 0, &tmp_len); if (tmp_len != sizeof(pk_N) || memcmp(tmp, pk_N, tmp_len)) { - fprintf(stderr, "ERROR: crypto_pk_get_parameter(0) Modulus. param len %zu len %zu\n", tmp_len, sizeof(pk_N)); + PrintAndLogEx(WARNING, "ERROR: crypto_pk_get_parameter(0) Modulus. param len %zu len %zu", tmp_len, sizeof(pk_N)); free(tmp); goto close; } @@ -265,7 +265,7 @@ static int test_pk(bool verbose) { tmp = crypto_pk_get_parameter(privk, 1, &tmp_len); if (tmp_len != sizeof(pk_E) || memcmp(tmp, pk_E, tmp_len)) { - fprintf(stderr, "ERROR: crypto_pk_get_parameter(1) Exponent.\n"); + PrintAndLogEx(WARNING, "ERROR: crypto_pk_get_parameter(1) Exponent"); free(tmp); goto close; } @@ -273,20 +273,20 @@ static int test_pk(bool verbose) { tmp = crypto_pk_decrypt(privk, msg, msg_len, &tmp_len); if (!tmp) { - fprintf(stderr, "ERROR: crypto_pk_decrypt.\n"); + PrintAndLogEx(WARNING, "ERROR: crypto_pk_decrypt"); goto close; } tmp2 = crypto_pk_encrypt(pubk, tmp, tmp_len, &tmp2_len); if (!tmp2) { - fprintf(stderr, "ERROR: crypto_pk_encrypt.\n"); + PrintAndLogEx(WARNING, "ERROR: crypto_pk_encrypt"); goto free_tmp; } if (tmp2_len == msg_len && !memcmp(tmp2, msg, tmp2_len)) { ret = 0; } else { - fprintf(stderr, "ERROR: encrypt-decrypt sequence length or data error.\n"); + PrintAndLogEx(WARNING, "ERROR: encrypt-decrypt sequence length or data error"); } free(tmp2); @@ -310,16 +310,16 @@ int exec_crypto_test(bool verbose, bool include_slow_tests) { ret = test_pk(verbose); if (ret) { - fprintf(stderr, "Crypto raw test: failed\n"); + PrintAndLogEx(WARNING, "Crypto raw test: failed"); return ret; } - fprintf(stdout, "Crypto raw test: passed\n\n"); + PrintAndLogEx(SUCCESS, "Crypto raw test (%s)", _GREEN_("passed")); for (i = 0; i < ARRAYLEN(keylengths); i++) { unsigned int kl = keylengths[i]; ret = test_genkey(kl, message, kl / 8, verbose); if (ret) { - fprintf(stderr, "Crypto generate key[%u] test: failed\n", kl); + PrintAndLogEx(WARNING, "Crypto generate key[%u] test: failed", kl); return ret; } } @@ -328,7 +328,7 @@ int exec_crypto_test(bool verbose, bool include_slow_tests) { unsigned int kl = extra_keylengths[i]; ret = test_genkey(kl, message, kl / 8, verbose); if (ret) { - fprintf(stderr, "Crypto generate key[%u] test: failed\n", kl); + PrintAndLogEx(WARNING, "Crypto generate key[%u] test: failed", kl); return ret; } } diff --git a/client/src/emv/test/cryptotest.c b/client/src/emv/test/cryptotest.c index bb59de7fa..c15ec54f9 100644 --- a/client/src/emv/test/cryptotest.c +++ b/client/src/emv/test/cryptotest.c @@ -10,8 +10,7 @@ #include "cryptotest.h" #include "util.h" -#include "ui.h" - +#include "ui.h" // printandlog #include "bignum.h" #include "aes.h" #include "cmac.h" @@ -25,7 +24,6 @@ #include "ctr_drbg.h" #include "entropy.h" #include "timing.h" - #include "crypto_test.h" #include "sda_test.h" #include "dda_test.h" @@ -63,7 +61,7 @@ int ExecuteCryptoTests(bool verbose, bool ignore_time, bool include_slow_tests) res = mbedtls_timing_self_test(verbose); if (!res) break; - PrintAndLogEx(WARNING, "Repeat timing test %d", i + 1); + PrintAndLogEx(WARNING, "Repeat timing test " _RED_("%d"), i + 1); } if (res && !ignore_time) TestFail = true; @@ -100,12 +98,12 @@ int ExecuteCryptoTests(bool verbose, bool ignore_time, bool include_slow_tests) res = roca_self_test(); if (res) TestFail = true; - PrintAndLogEx(NORMAL, "\n--------------------------"); + PrintAndLogEx(INFO, "--------------------------"); if (TestFail) - PrintAndLogEx(FAILED, "\tTest(s) [ %s ]", _RED_("Fail")); + PrintAndLogEx(FAILED, "\tTest(s) [ %s ]", _RED_("fail")); else - PrintAndLogEx(SUCCESS, "\tTest(s) [ %s ]", _GREEN_("OK")); + PrintAndLogEx(SUCCESS, "\tTest(s) [ %s ]", _GREEN_("ok")); return TestFail; } diff --git a/client/src/emv/test/dda_test.c b/client/src/emv/test/dda_test.c index 55e2830ad..7bf6d4975 100644 --- a/client/src/emv/test/dda_test.c +++ b/client/src/emv/test/dda_test.c @@ -17,17 +17,17 @@ #include <config.h> #endif -#include "dda_test.h" +#include <string.h> // memcpy +#include <stdlib.h> // malloc +#include "dda_test.h" #include "../emv_pk.h" #include "../crypto.h" #include "../dump.h" #include "../tlv.h" #include "../emv_pki.h" +#include "ui.h" // printandlog -#include <stdio.h> -#include <string.h> -#include <stdlib.h> struct emv_pk mchip_05 = { .rid = { 0xa0, 0x00, 0x00, 0x00, 0x04, }, @@ -123,6 +123,7 @@ const unsigned char d_ssd1[] = { 0x03, 0x8d, 0x0c, 0x91, 0x0a, 0x8a, 0x02, 0x95, 0x05, 0x9f, 0x37, 0x04, 0x9f, 0x4c, 0x08, 0x39, 0x00, }; + static const struct tlv ssd1_tlv = { .len = sizeof(d_ssd1), .value = d_ssd1, @@ -135,6 +136,7 @@ const unsigned char d_pan[] = { const unsigned char d_dd1[] = { 0x00, 0x00, 0x00, 0x00, }; + static const struct tlv dd1_tlv = { .len = sizeof(d_dd1), .value = d_dd1, @@ -158,7 +160,7 @@ static int dda_test_raw(bool verbose) { return 1; if (verbose) { - printf("issuer cert:\n"); + PrintAndLogEx(INFO, "issuer cert:"); dump_buffer(ipk_data, ipk_data_len, stdout, 0); } @@ -188,7 +190,7 @@ static int dda_test_raw(bool verbose) { } if (verbose) { - printf("crypto hash:\n"); + PrintAndLogEx(INFO, "crypto hash:"); dump_buffer(h, 20, stdout, 0); } @@ -217,7 +219,7 @@ static int dda_test_raw(bool verbose) { return 1; if (verbose) { - printf("icc cert:\n"); + PrintAndLogEx(INFO, "icc cert:"); dump_buffer(iccpk_data, iccpk_data_len, stdout, 0); } @@ -246,7 +248,7 @@ static int dda_test_raw(bool verbose) { } if (verbose) { - printf("crypto hash1.1:\n"); + PrintAndLogEx(INFO, "crypto hash1.1:"); dump_buffer(h, 20, stdout, 0); } @@ -273,7 +275,7 @@ static int dda_test_raw(bool verbose) { return 1; if (verbose) { - printf("sdad:\n"); + PrintAndLogEx(INFO, "sdad:"); dump_buffer(sdad, sdad_len, stdout, 0); } @@ -294,14 +296,12 @@ static int dda_test_raw(bool verbose) { } if (verbose) { - printf("crypto hash2:\n"); + PrintAndLogEx(INFO, "crypto hash2:"); dump_buffer(h2, 20, stdout, 0); } crypto_hash_close(ch); - free(sdad); - return 0; } @@ -316,7 +316,7 @@ static int dda_test_pk(bool verbose) { struct emv_pk *ipk = emv_pki_recover_issuer_cert(pk, db); if (!ipk) { - fprintf(stderr, "Could not recover Issuer certificate!\n"); + PrintAndLogEx(WARNING, "Could not recover Issuer certificate!"); tlvdb_free(db); return 2; } @@ -327,7 +327,7 @@ static int dda_test_pk(bool verbose) { struct emv_pk *iccpk = emv_pki_recover_icc_cert(ipk, db, &ssd1_tlv); if (!iccpk) { - fprintf(stderr, "Could not recover ICC certificate!\n"); + PrintAndLogEx(WARNING, "Could not recover ICC certificate!"); emv_pk_free(ipk); tlvdb_free(db); return 2; @@ -337,7 +337,7 @@ static int dda_test_pk(bool verbose) { struct tlvdb *idndb = emv_pki_recover_idn(iccpk, db, &dd1_tlv); if (!idndb) { - fprintf(stderr, "Could not recover IDN!\n"); + PrintAndLogEx(WARNING, "Could not recover IDN!"); emv_pk_free(iccpk); emv_pk_free(ipk); tlvdb_free(db); @@ -346,7 +346,7 @@ static int dda_test_pk(bool verbose) { const struct tlv *idn = tlvdb_get(idndb, 0x9f4c, NULL); if (!idn) { - fprintf(stderr, "IDN not found!\n"); + PrintAndLogEx(WARNING, "IDN not found!"); tlvdb_free(idndb); emv_pk_free(iccpk); emv_pk_free(ipk); @@ -355,7 +355,7 @@ static int dda_test_pk(bool verbose) { } if (verbose) { - printf("IDN:\n"); + PrintAndLogEx(INFO, "IDN:"); dump_buffer(idn->value, idn->len, stdout, 0); } @@ -363,27 +363,22 @@ static int dda_test_pk(bool verbose) { emv_pk_free(iccpk); emv_pk_free(ipk); tlvdb_free(db); - return 0; } int exec_dda_test(bool verbose) { - int ret; - fprintf(stdout, "\n"); - - ret = dda_test_raw(verbose); + int ret = dda_test_raw(verbose); if (ret) { - fprintf(stderr, "DDA raw test: failed\n"); + PrintAndLogEx(WARNING, "DDA raw test: %s", _RED_("failed")); return ret; } - fprintf(stdout, "DDA raw test: passed\n"); + PrintAndLogEx(SUCCESS, "DDA raw test: %s", _GREEN_("passed")); ret = dda_test_pk(verbose); if (ret) { - fprintf(stderr, "DDA test pk: failed\n"); + PrintAndLogEx(WARNING, "DDA test pk: %s", _RED_("failed")); return ret; } - fprintf(stdout, "DDA test pk: passed\n"); - + PrintAndLogEx(SUCCESS, "DDA test pk: %s", _GREEN_("passed")); return 0; } diff --git a/client/src/emv/test/sda_test.c b/client/src/emv/test/sda_test.c index c8da53d7a..3907027ad 100644 --- a/client/src/emv/test/sda_test.c +++ b/client/src/emv/test/sda_test.c @@ -17,15 +17,16 @@ #include <config.h> #endif +#include <stdio.h> +#include <string.h> +#include <stdlib.h> + #include "../emv_pk.h" #include "../crypto.h" #include "../dump.h" #include "../tlv.h" #include "../emv_pki.h" - -#include <stdio.h> -#include <string.h> -#include <stdlib.h> +#include "ui.h" // printandlog #include "sda_test.h" struct emv_pk vsdc_01 = { @@ -92,6 +93,7 @@ const unsigned char ssd1[] = { 0x5f, 0x24, 0x03, 0x08, 0x12, 0x31, 0x5a, 0x08, 0x42, 0x76, 0x55, 0x00, 0x13, 0x23, 0x45, 0x99, 0x5f, 0x34, 0x01, 0x01, 0x9f, 0x07, 0x02, 0xff, 0x00, 0x9f, 0x0d, 0x05, 0xd0, 0x40, 0xac, 0xa8, 0x00, 0x9f, 0x0e, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x9f, 0x0f, 0x05, 0xd0, 0x68, 0xbc, 0xf8, 0x00, 0x5c, 0x00, }; + static const struct tlv ssd1_tlv = { .len = sizeof(ssd1), .value = ssd1, @@ -119,7 +121,7 @@ static int sda_test_raw(bool verbose) { return 1; if (verbose) { - printf("issuer cert:\n"); + PrintAndLogEx(INFO, "issuer cert:"); dump_buffer(ipk_data, ipk_data_len, stdout, 0); } @@ -149,7 +151,7 @@ static int sda_test_raw(bool verbose) { } if (verbose) { - printf("crypto hash:\n"); + PrintAndLogEx(INFO, "crypto hash:"); dump_buffer(h, 20, stdout, 0); } @@ -176,7 +178,7 @@ static int sda_test_raw(bool verbose) { return 1; if (verbose) { - printf("ssad:\n"); + PrintAndLogEx(INFO, "ssad:"); dump_buffer(ssad, ssad_len, stdout, 0); } @@ -197,14 +199,12 @@ static int sda_test_raw(bool verbose) { } if (verbose) { - printf("crypto hash2:\n"); + PrintAndLogEx(INFO, "crypto hash2:"); dump_buffer(h2, 20, stdout, 0); } crypto_hash_close(ch); - free(ssad); - return 0; } @@ -219,7 +219,7 @@ static int sda_test_pk(bool verbose) { struct emv_pk *ipk = emv_pki_recover_issuer_cert(pk, db); if (!ipk) { - fprintf(stderr, "Could not recover Issuer certificate!\n"); + PrintAndLogEx(WARNING, "Could not recover Issuer certificate!"); tlvdb_free(db); return 2; } @@ -228,7 +228,7 @@ static int sda_test_pk(bool verbose) { struct tlvdb *dacdb = emv_pki_recover_dac(ipk, db, &ssd1_tlv); if (!dacdb) { - fprintf(stderr, "Could not recover DAC!\n"); + PrintAndLogEx(WARNING, "Could not recover DAC!"); emv_pk_free(ipk); tlvdb_free(db); return 2; @@ -236,7 +236,7 @@ static int sda_test_pk(bool verbose) { const struct tlv *dac = tlvdb_get(dacdb, 0x9f45, NULL); if (!dac) { - fprintf(stderr, "DAC not found!\n"); + PrintAndLogEx(WARNING, "DAC not found!"); tlvdb_free(dacdb); emv_pk_free(ipk); tlvdb_free(db); @@ -244,34 +244,29 @@ static int sda_test_pk(bool verbose) { } if (verbose) { - printf("dac:\n"); + PrintAndLogEx(INFO, "dac:"); dump_buffer(dac->value, dac->len, stdout, 0); } tlvdb_free(dacdb); emv_pk_free(ipk); tlvdb_free(db); - return 0; } int exec_sda_test(bool verbose) { - int ret; - fprintf(stdout, "\n"); - - ret = sda_test_raw(verbose); + int ret = sda_test_raw(verbose); if (ret) { - fprintf(stderr, "SDA raw test: failed\n"); + PrintAndLogEx(WARNING, "SDA raw test: %s", _RED_("failed")); return ret; } - fprintf(stdout, "SDA raw test: passed\n"); + PrintAndLogEx(SUCCESS, "SDA raw test: %s", _GREEN_("passed")); ret = sda_test_pk(verbose); if (ret) { - fprintf(stderr, "SDA test pk: failed\n"); + PrintAndLogEx(WARNING, "SDA test pk: %s", _RED_("failed")); return ret; } - fprintf(stdout, "SDA test pk: passed\n"); - + PrintAndLogEx(SUCCESS, "SDA test pk: %s", _GREEN_("passed")); return 0; -} +} \ No newline at end of file From 8ecc1f64f8ceb61c5649a759dd4e30b8a9047f8b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 29 May 2020 10:22:56 +0200 Subject: [PATCH 218/527] fix: adapt return check --- tools/pm3_tests.sh | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index d5b88f446..07e777fae 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -354,10 +354,10 @@ while true; do if ! CheckExecute "hf mf offline text" "$CLIENTBIN -c 'hf mf'" "at_enc"; then break; fi if ! CheckExecute slow retry ignore "hf mf hardnested long test" "$CLIENTBIN -c 'hf mf hardnested t 1 000000000000'" "found:"; then break; fi if ! CheckExecute slow "hf iclass long test" "$CLIENTBIN -c 'hf iclass loclass t l'" "verified ok"; then break; fi - if ! CheckExecute slow "emv long test" "$CLIENTBIN -c 'emv test -l'" "Test(s) \[ OK"; then break; fi + if ! CheckExecute slow "emv long test" "$CLIENTBIN -c 'emv test -l'" "Test(s) \[ ok"; then break; fi if ! $SLOWTESTS; then if ! CheckExecute "hf iclass test" "$CLIENTBIN -c 'hf iclass loclass t'" "key diversification (ok)"; then break; fi - if ! CheckExecute "emv test" "$CLIENTBIN -c 'emv test'" "Test(s) \[ OK"; then break; fi + if ! CheckExecute "emv test" "$CLIENTBIN -c 'emv test'" "Test(s) \[ ok"; then break; fi fi fi echo -e "\n${C_GREEN}Tests [OK]${C_NC}\n" From 529b33b234f2a128230f85861cf311977dda2ace Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 29 May 2020 10:23:14 +0200 Subject: [PATCH 219/527] chg, prints --- client/src/emv/emv_roca.c | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/client/src/emv/emv_roca.c b/client/src/emv/emv_roca.c index 1bebcacbf..8f6607363 100644 --- a/client/src/emv/emv_roca.c +++ b/client/src/emv/emv_roca.c @@ -143,8 +143,6 @@ cleanup: } int roca_self_test(void) { - int ret = 0; - PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "ROCA check vulnerability tests"); @@ -154,12 +152,12 @@ int roca_self_test(void) { "\x27\x83\x30\xd3\xf4\x71\xa2\x53\x8f\xa6\x67\x80\x2e\xd2\xa3\xc4"\ "\x4a\x8b\x7d\xea\x82\x6e\x88\x8d\x0a\xa3\x41\xfd\x66\x4f\x7f\xa7"; - + int ret = 0; if (emv_rocacheck(keyp, 64, false)) { - PrintAndLogEx(SUCCESS, "Weak modulus [ %s]", _GREEN_("PASS")); + PrintAndLogEx(SUCCESS, "Weak modulus [ %s ]", _GREEN_("PASS")); } else { ret++; - PrintAndLogEx(FAILED, "Weak modulus [ %s]", _RED_("Fail")); + PrintAndLogEx(FAILED, "Weak modulus [ %s ]", _RED_("Fail")); } // negative @@ -170,10 +168,9 @@ int roca_self_test(void) { if (emv_rocacheck(keyn, 64, false)) { ret++; - PrintAndLogEx(FAILED, "Strong modulus [ %s]", _RED_("Fail")); + PrintAndLogEx(FAILED, "Strong modulus [ %s ]", _RED_("Fail")); } else { - PrintAndLogEx(SUCCESS, "Strong modulus [ %s]", _GREEN_("PASS")); + PrintAndLogEx(SUCCESS, "Strong modulus [ %s ]", _GREEN_("PASS")); } - return ret; } From d65f2287f4f7cdd51f8718785c32d817438e3d2b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 29 May 2020 10:23:34 +0200 Subject: [PATCH 220/527] chg, output --- client/src/emv/test/cda_test.c | 10 ++++++---- client/src/emv/test/crypto_test.c | 16 ++++++---------- 2 files changed, 12 insertions(+), 14 deletions(-) diff --git a/client/src/emv/test/cda_test.c b/client/src/emv/test/cda_test.c index 4fe181d6a..acdde8bb4 100644 --- a/client/src/emv/test/cda_test.c +++ b/client/src/emv/test/cda_test.c @@ -123,6 +123,7 @@ const unsigned char c_ssd1[] = { 0x03, 0x8d, 0x0c, 0x91, 0x0a, 0x8a, 0x02, 0x95, 0x05, 0x9f, 0x37, 0x04, 0x9f, 0x4c, 0x08, 0x39, 0x00, }; + static const struct tlv ssd1_tlv = { .len = sizeof(c_ssd1), .value = c_ssd1, @@ -146,6 +147,7 @@ const unsigned char c_crm1[] = { 0x00, 0x00, 0x00, 0x06, 0x43, 0x14, 0x09, 0x25, 0x50, 0x12, 0x34, 0x57, 0x79, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1e, 0x03, 0x00, }; + static const struct tlv crm1_tlv = { .len = sizeof(c_crm1), .value = c_crm1, @@ -420,16 +422,16 @@ static int cda_test_pk(bool verbose) { int exec_cda_test(bool verbose) { int ret = cda_test_raw(verbose); if (ret) { - PrintAndLogEx(WARNING, "CDA raw test: failed"); + PrintAndLogEx(WARNING, "CDA raw test: (%s)", _RED_("failed")); return ret; } - PrintAndLogEx(INFO, "CDA raw test: passed"); + PrintAndLogEx(INFO, "CDA raw test: (%s)", _GREEN_("passed")); ret = cda_test_pk(verbose); if (ret) { - PrintAndLogEx(WARNING, "CDA test pk: failed"); + PrintAndLogEx(WARNING, "CDA test pk: (%s)", _RED_("failed")); return ret; } - PrintAndLogEx(INFO, "CDA test pk: passed"); + PrintAndLogEx(INFO, "CDA test pk: (%s)", _GREEN_("passed")); return 0; } diff --git a/client/src/emv/test/crypto_test.c b/client/src/emv/test/crypto_test.c index 332b7dd87..e3b8124f0 100644 --- a/client/src/emv/test/crypto_test.c +++ b/client/src/emv/test/crypto_test.c @@ -304,31 +304,27 @@ close_pub: int exec_crypto_test(bool verbose, bool include_slow_tests) { unsigned int keylengths[] = {1024, 2048}; unsigned int extra_keylengths[] = {1152, 1408, 1984, 3072, 4096}; - int i; - int ret; - fprintf(stdout, "\n"); - - ret = test_pk(verbose); + int ret = test_pk(verbose); if (ret) { - PrintAndLogEx(WARNING, "Crypto raw test: failed"); + PrintAndLogEx(WARNING, "Crypto raw test: (%s)", _RED_("failed")); return ret; } PrintAndLogEx(SUCCESS, "Crypto raw test (%s)", _GREEN_("passed")); - for (i = 0; i < ARRAYLEN(keylengths); i++) { + for (int i = 0; i < ARRAYLEN(keylengths); i++) { unsigned int kl = keylengths[i]; ret = test_genkey(kl, message, kl / 8, verbose); if (ret) { - PrintAndLogEx(WARNING, "Crypto generate key[%u] test: failed", kl); + PrintAndLogEx(WARNING, "Crypto generate key[%u] test: (%s)", kl, _RED_("failed")); return ret; } } if (include_slow_tests) { - for (i = 0; i < ARRAYLEN(extra_keylengths); i++) { + for (int i = 0; i < ARRAYLEN(extra_keylengths); i++) { unsigned int kl = extra_keylengths[i]; ret = test_genkey(kl, message, kl / 8, verbose); if (ret) { - PrintAndLogEx(WARNING, "Crypto generate key[%u] test: failed", kl); + PrintAndLogEx(WARNING, "Crypto generate key[%u] test: (%s)", kl, _RED_("failed")); return ret; } } From dc1bf1408a1965549496ad0607ac82aa93897732 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 29 May 2020 10:34:28 +0200 Subject: [PATCH 221/527] chg, printf --- client/src/emv/crypto_polarssl.c | 52 ++++++++++++-------------------- 1 file changed, 19 insertions(+), 33 deletions(-) diff --git a/client/src/emv/crypto_polarssl.c b/client/src/emv/crypto_polarssl.c index 0d582c7b3..f9603ead5 100644 --- a/client/src/emv/crypto_polarssl.c +++ b/client/src/emv/crypto_polarssl.c @@ -20,11 +20,12 @@ #include "crypto_backend.h" -#include <stdlib.h> -#include <string.h> +#include <stdlib.h> // malloc +#include <string.h> // memset #include "rsa.h" #include "sha1.h" +#include "ui.h" // printandlog struct crypto_hash_polarssl { struct crypto_hash ch; @@ -33,19 +34,16 @@ struct crypto_hash_polarssl { static void crypto_hash_polarssl_close(struct crypto_hash *_ch) { struct crypto_hash_polarssl *ch = (struct crypto_hash_polarssl *)_ch; - free(ch); } static void crypto_hash_polarssl_write(struct crypto_hash *_ch, const unsigned char *buf, size_t len) { struct crypto_hash_polarssl *ch = (struct crypto_hash_polarssl *)_ch; - mbedtls_sha1_update(&(ch->ctx), buf, len); } static unsigned char *crypto_hash_polarssl_read(struct crypto_hash *_ch) { struct crypto_hash_polarssl *ch = (struct crypto_hash_polarssl *)_ch; - static unsigned char sha1sum[20]; mbedtls_sha1_finish(&(ch->ctx), sha1sum); return sha1sum; @@ -54,8 +52,7 @@ static unsigned char *crypto_hash_polarssl_read(struct crypto_hash *_ch) { static size_t crypto_hash_polarssl_get_size(const struct crypto_hash *ch) { if (ch->algo == HASH_SHA_1) return 20; - else - return 0; + return 0; } static struct crypto_hash *crypto_hash_polarssl_open(enum crypto_algo_hash hash) { @@ -96,7 +93,7 @@ static struct crypto_pk *crypto_pk_polarssl_open_rsa(va_list vl) { int res = mbedtls_rsa_check_pubkey(&cp->ctx); if (res != 0) { - fprintf(stderr, "PolarSSL public key error res=%x exp=%d mod=%d.\n", res * -1, explen, modlen); + PrintAndLogEx(WARNING, "PolarSSL public key error res=%x exp=%d mod=%d", res * -1, explen, modlen); free(cp); return NULL; } @@ -139,14 +136,14 @@ static struct crypto_pk *crypto_pk_polarssl_open_priv_rsa(va_list vl) { int res = mbedtls_mpi_inv_mod(&cp->ctx.QP, &cp->ctx.Q, &cp->ctx.P); if (res != 0) { - fprintf(stderr, "PolarSSL private key error res=%x exp=%d mod=%d.\n", res * -1, explen, modlen); + PrintAndLogEx(WARNING, "PolarSSL private key error res=%x exp=%d mod=%d", res * -1, explen, modlen); free(cp); return NULL; } res = mbedtls_rsa_check_privkey(&cp->ctx); if (res != 0) { - fprintf(stderr, "PolarSSL private key error res=%x exp=%d mod=%d.\n", res * -1, explen, modlen); + PrintAndLogEx(WARNING, "PolarSSL private key error res=%x exp=%d mod=%d", res * -1, explen, modlen); free(cp); return NULL; } @@ -164,7 +161,6 @@ static int myrand(void *rng_state, unsigned char *output, size_t len) { return 0; } - static struct crypto_pk *crypto_pk_polarssl_genkey_rsa(va_list vl) { struct crypto_pk_polarssl *cp = malloc(sizeof(*cp)); memset(cp, 0x00, sizeof(*cp)); @@ -178,7 +174,7 @@ static struct crypto_pk *crypto_pk_polarssl_genkey_rsa(va_list vl) { int res = mbedtls_rsa_gen_key(&cp->ctx, &myrand, NULL, nbits, exp); if (res) { - fprintf(stderr, "PolarSSL private key generation error res=%x exp=%u nbits=%u.\n", res * -1, exp, nbits); + PrintAndLogEx(WARNING, "PolarSSL private key generation error res=%x exp=%u nbits=%u", res * -1, exp, nbits); free(cp); return NULL; } @@ -195,59 +191,50 @@ static void crypto_pk_polarssl_close(struct crypto_pk *_cp) { static unsigned char *crypto_pk_polarssl_encrypt(const struct crypto_pk *_cp, const unsigned char *buf, size_t len, size_t *clen) { struct crypto_pk_polarssl *cp = (struct crypto_pk_polarssl *)_cp; - int res; - unsigned char *result; - *clen = 0; size_t keylen = mbedtls_mpi_size(&cp->ctx.N); - result = malloc(keylen); + unsigned char *result = malloc(keylen); if (!result) { - printf("RSA encrypt failed. Can't allocate result memory.\n"); + PrintAndLogEx(WARNING, "RSA encrypt failed. Can't allocate result memory"); return NULL; } - res = mbedtls_rsa_public(&cp->ctx, buf, result); + int res = mbedtls_rsa_public(&cp->ctx, buf, result); if (res) { - printf("RSA encrypt failed. Error: %x data len: %zu key len: %zu\n", res * -1, len, keylen); + PrintAndLogEx(WARNING, "RSA encrypt failed. Error: %x data len: %zu key len: %zu", res * -1, len, keylen); free(result); return NULL; } *clen = keylen; - return result; } static unsigned char *crypto_pk_polarssl_decrypt(const struct crypto_pk *_cp, const unsigned char *buf, size_t len, size_t *clen) { struct crypto_pk_polarssl *cp = (struct crypto_pk_polarssl *)_cp; - int res; - unsigned char *result; - *clen = 0; size_t keylen = mbedtls_mpi_size(&cp->ctx.N); - result = malloc(keylen); + unsigned char *result = malloc(keylen); if (!result) { - printf("RSA encrypt failed. Can't allocate result memory.\n"); + PrintAndLogEx(WARNING, "RSA encrypt failed. Can't allocate result memory"); return NULL; } - res = mbedtls_rsa_private(&cp->ctx, NULL, NULL, buf, result); // CHECK??? + int res = mbedtls_rsa_private(&cp->ctx, NULL, NULL, buf, result); // CHECK??? if (res) { - printf("RSA decrypt failed. Error: %x data len: %zu key len: %zu\n", res * -1, len, keylen); + PrintAndLogEx(WARNING, "RSA decrypt failed. Error: %x data len: %zu key len: %zu", res * -1, len, keylen); free(result); return NULL; } *clen = keylen; - return result; } static size_t crypto_pk_polarssl_get_nbits(const struct crypto_pk *_cp) { struct crypto_pk_polarssl *cp = (struct crypto_pk_polarssl *)_cp; - return cp->ctx.len * 8; } @@ -263,7 +250,7 @@ static unsigned char *crypto_pk_polarssl_get_parameter(const struct crypto_pk *_ memset(result, 0x00, *plen); res = mbedtls_mpi_write_binary(&cp->ctx.N, result, *plen); if (res < 0) { - printf("Error write_binary."); + PrintAndLogEx(WARNING, "Error write_binary"); free(result); result = 0; } @@ -275,16 +262,15 @@ static unsigned char *crypto_pk_polarssl_get_parameter(const struct crypto_pk *_ memset(result, 0x00, *plen); res = mbedtls_mpi_write_binary(&cp->ctx.E, result, *plen); if (res < 0) { - printf("Error write_binary."); + PrintAndLogEx(WARNING, "Error write_binary"); free(result); result = 0; } break; default: - printf("Error get parameter. Param = %u", param); + PrintAndLogEx(WARNING, "Error get parameter. Param = %u", param); break; } - return result; } From f1da47336e178078a74c879d30479254898661fe Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 29 May 2020 12:42:52 +0200 Subject: [PATCH 222/527] fix: 'emv scan -w' - calculats hash correct --- client/src/emv/cmdemv.c | 80 +++++++++++++++++++++++++++------------- client/src/emv/emvcore.c | 56 +++++++++++++--------------- 2 files changed, 81 insertions(+), 55 deletions(-) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 474b4224b..347c7916a 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -1368,6 +1368,8 @@ static int CmdEMVScan(const char *Cmd) { size_t AIDlen = 0; uint8_t buf[APDU_RES_LEN] = {0}; size_t len = 0; + uint8_t ODAI_list[4096]; + size_t ODAI_listlen = 0; uint16_t sw = 0; int res; json_t *root; @@ -1425,7 +1427,7 @@ static int CmdEMVScan(const char *Cmd) { if (!IfPm3Smartcard()) { if (channel == ECC_CONTACT) { - PrintAndLogEx(WARNING, "PM3 does not have SMARTCARD support. Exiting."); + PrintAndLogEx(WARNING, "PM3 does not have SMARTCARD support, exiting"); return PM3_EDEVNOTSUPP; } } @@ -1435,6 +1437,7 @@ static int CmdEMVScan(const char *Cmd) { // current path + file name if (!strstr(crelfname, ".json")) strcat(crelfname, ".json"); + char fname[strlen(get_my_executable_directory()) + strlen(crelfname) + 1]; strcpy(fname, get_my_executable_directory()); strcat(fname, crelfname); @@ -1447,7 +1450,7 @@ static int CmdEMVScan(const char *Cmd) { } if (!json_is_object(root)) { - PrintAndLogEx(ERR, "Invalid json format. root must be an object."); + PrintAndLogEx(ERR, "Invalid json format. root must be an object"); return PM3_EFILE; } } else { @@ -1461,7 +1464,7 @@ static int CmdEMVScan(const char *Cmd) { if (channel == ECC_CONTACTLESS) { // iso 14443 select - PrintAndLogEx(NORMAL, "--> GET UID, ATS."); + PrintAndLogEx(INFO, "GET UID, ATS"); iso14a_card_select_t card; if (Hf14443_4aGetCardData(&card)) { @@ -1474,7 +1477,7 @@ static int CmdEMVScan(const char *Cmd) { JsonSaveHex(root, "$.Card.Contactless.SAK", card.sak, 0); JsonSaveBufAsHex(root, "$.Card.Contactless.ATS", (uint8_t *)card.ats, card.ats_len); } else { - PrintAndLogEx(NORMAL, "--> GET ATR."); + PrintAndLogEx(INFO, "GET ATR"); smart_card_atr_t card; smart_select(true, &card); @@ -1492,7 +1495,7 @@ static int CmdEMVScan(const char *Cmd) { struct tlvdb *tlvSelect = tlvdb_fixed(1, strlen(al), (const unsigned char *)al); // EMV PPSE - PrintAndLogEx(NORMAL, "--> PPSE."); + PrintAndLogEx(INFO, "PPSE"); res = EMVSelectPSE(channel, true, true, 2, buf, sizeof(buf), &len, &sw); if (!res && sw == 0x9000) { @@ -1518,9 +1521,9 @@ static int CmdEMVScan(const char *Cmd) { } else { // EMV SEARCH with AID list SetAPDULogging(false); - PrintAndLogEx(NORMAL, "--> AID search."); + PrintAndLogEx(INFO, "AID search."); if (EMVSearch(channel, false, true, decodeTLV, tlvSelect)) { - PrintAndLogEx(ERR, "Can't found any of EMV AID. Exit..."); + PrintAndLogEx(ERR, "Can't found any of EMV AID, exiting..."); tlvdb_free(tlvSelect); DropFieldEx(channel); return PM3_ERFTRANS; @@ -1537,7 +1540,7 @@ static int CmdEMVScan(const char *Cmd) { tlvdb_free(tlvSelect); if (!AIDlen) { - PrintAndLogEx(INFO, "Can't select AID. EMV AID not found. Exit..."); + PrintAndLogEx(INFO, "Can't select AID. EMV AID not found, exiting..."); DropFieldEx(channel); return PM3_ERFTRANS; } @@ -1550,12 +1553,12 @@ static int CmdEMVScan(const char *Cmd) { // EMV SELECT applet - PrintAndLogEx(NORMAL, "\n-->Selecting AID:%s.", sprint_hex_inrow(AID, AIDlen)); + PrintAndLogEx(INFO, "Selecting AID: " _GREEN_("%s"), sprint_hex_inrow(AID, AIDlen)); SetAPDULogging(showAPDU); res = EMVSelect(channel, false, true, AID, AIDlen, buf, sizeof(buf), &len, &sw, tlvRoot); if (res) { - PrintAndLogEx(ERR, "Can't select AID (%d). Exit...", res); + PrintAndLogEx(ERR, "Can't select AID (%d), exiting...", res); tlvdb_free(tlvRoot); DropFieldEx(channel); return PM3_ERFTRANS; @@ -1577,13 +1580,13 @@ static int CmdEMVScan(const char *Cmd) { tlvdb_free(fci); // create transaction parameters - PrintAndLogEx(NORMAL, "-->Init transaction parameters."); + PrintAndLogEx(INFO, "Init transaction parameters"); InitTransactionParameters(tlvRoot, paramLoadJSON, TrType, GenACGPO); - PrintAndLogEx(NORMAL, "-->Calc PDOL."); + PrintAndLogEx(INFO, "Calc PDOL"); struct tlv *pdol_data_tlv = dol_process(tlvdb_get(tlvRoot, 0x9f38, NULL), tlvRoot, 0x83); if (!pdol_data_tlv) { - PrintAndLogEx(ERR, "Can't create PDOL TLV."); + PrintAndLogEx(ERR, "Can't create PDOL TLV"); tlvdb_free(tlvRoot); DropFieldEx(channel); return PM3_ESOFT; @@ -1592,7 +1595,7 @@ static int CmdEMVScan(const char *Cmd) { size_t pdol_data_tlv_data_len; unsigned char *pdol_data_tlv_data = tlv_encode(pdol_data_tlv, &pdol_data_tlv_data_len); if (!pdol_data_tlv_data) { - PrintAndLogEx(ERR, "Can't create PDOL data."); + PrintAndLogEx(ERR, "Can't create PDOL data"); tlvdb_free(tlvRoot); free(pdol_data_tlv); DropFieldEx(channel); @@ -1600,14 +1603,14 @@ static int CmdEMVScan(const char *Cmd) { } PrintAndLogEx(INFO, "PDOL data[%zu]: %s", pdol_data_tlv_data_len, sprint_hex(pdol_data_tlv_data, pdol_data_tlv_data_len)); - PrintAndLogEx(INFO, "-->GPO."); + PrintAndLogEx(INFO, "GPO"); res = EMVGPO(channel, true, pdol_data_tlv_data, pdol_data_tlv_data_len, buf, sizeof(buf), &len, &sw, tlvRoot); free(pdol_data_tlv_data); free(pdol_data_tlv); if (res) { - PrintAndLogEx(ERR, "GPO error(%d): %4x. Exit...", res, sw); + PrintAndLogEx(ERR, "GPO error(%d): %4x, exiting...", res, sw); tlvdb_free(tlvRoot); DropFieldEx(channel); return PM3_ERFTRANS; @@ -1625,7 +1628,7 @@ static int CmdEMVScan(const char *Cmd) { tlvdb_free(gpofci); - PrintAndLogEx(INFO, "-->Read records from AFL."); + PrintAndLogEx(INFO, "Read records from AFL"); const struct tlv *AFL = tlvdb_get(tlvRoot, 0x94, NULL); while (AFL && AFL->len) { @@ -1650,15 +1653,16 @@ static int CmdEMVScan(const char *Cmd) { uint8_t SFIstart = AFL->value[i * 4 + 1]; uint8_t SFIend = AFL->value[i * 4 + 2]; uint8_t SFIoffline = AFL->value[i * 4 + 3]; + bool first_time = SFIoffline; - PrintAndLogEx(INFO, "--->SFI[%02x] start:%02x end:%02x offline:%02x", SFI, SFIstart, SFIend, SFIoffline); + PrintAndLogEx(INFO, " SFI[%02x] start:%02x end:%02x offline:%02x", SFI, SFIstart, SFIend, SFIoffline); if (SFI == 0 || SFI == 31 || SFIstart == 0 || SFIstart > SFIend) { PrintAndLogEx(ERR, "SFI ERROR! Skipped..."); continue; } for (int n = SFIstart; n <= SFIend; n++) { - PrintAndLogEx(INFO, "---->SFI[%02x] %d", SFI, n); + PrintAndLogEx(INFO, " SFI[%02x] %d", SFI, n); res = EMVReadRecord(channel, true, SFI, n, buf, sizeof(buf), &len, &sw, tlvRoot); if (res) { @@ -1666,6 +1670,26 @@ static int CmdEMVScan(const char *Cmd) { continue; } + // Build Input list for Offline Data Authentication + // EMV 4.3 book3 10.3, page 96 + if (first_time && SFIoffline) { + if (SFI < 11) { + const unsigned char *abuf = buf; + size_t elmlen = len; + struct tlv e; + if (tlv_parse_tl(&abuf, &elmlen, &e)) { + memcpy(ODAI_list + ODAI_listlen, &buf[len - elmlen], elmlen); + ODAI_listlen += elmlen; + } else { + PrintAndLogEx(WARNING, "Error SFI[%02x]. Creating input list for Offline Data Authentication error", SFI); + } + } else { + memcpy(ODAI_list + ODAI_listlen, buf, len); + ODAI_listlen += len; + } + first_time = false; + } + if (decodeTLV) { TLVPrintFromBuffer(buf, len); PrintAndLogEx(NORMAL, ""); @@ -1683,16 +1707,23 @@ static int CmdEMVScan(const char *Cmd) { JsonSaveTLVTree(root, jsonelm, "$.Data", rsfi); else JsonSaveTLVTreeElm(jsonelm, "$.Data", rsfi, true, true, false); - tlvdb_free(rsfi); + + tlvdb_free(rsfi); } } - break; } + // copy Input list for Offline Data Authentication + if (ODAI_listlen) { + struct tlvdb *oda = tlvdb_fixed(0x21, ODAI_listlen, ODAI_list); // not a standard tag + tlvdb_add(tlvRoot, oda); + PrintAndLogEx(INFO, "Input list for Offline Data Authentication added to TLV [%d bytes]", ODAI_listlen); + } + // getting certificates if (tlvdb_get(tlvRoot, 0x90, NULL)) { - PrintAndLogEx(INFO, "-->Recovering certificates."); + PrintAndLogEx(INFO, "Recovering certificates"); PKISetStrictExecution(false); RecoveryCertificates(tlvRoot, root); PKISetStrictExecution(true); @@ -1712,7 +1743,6 @@ static int CmdEMVScan(const char *Cmd) { // free json object json_decref(root); - return PM3_SUCCESS; } @@ -1921,13 +1951,13 @@ static int CmdEMVRoca(const char *Cmd) { size_t elmlen = len; struct tlv e; if (tlv_parse_tl(&abuf, &elmlen, &e)) { - memcpy(&ODAI_list[ODAI_listlen], &buf[len - elmlen], elmlen); + memcpy(ODAI_list + ODAI_listlen, &buf[len - elmlen], elmlen); ODAI_listlen += elmlen; } else { PrintAndLogEx(WARNING, "Error SFI[%02x]. Creating input list for Offline Data Authentication error", SFI); } } else { - memcpy(&ODAI_list[ODAI_listlen], buf, len); + memcpy(ODAI_list + ODAI_listlen, buf, len); ODAI_listlen += len; } SFIoffline--; diff --git a/client/src/emv/emvcore.c b/client/src/emv/emvcore.c index f2244fa05..3d9d3702f 100644 --- a/client/src/emv/emvcore.c +++ b/client/src/emv/emvcore.c @@ -205,10 +205,10 @@ void TLVPrintAIDlistFromSelectTLV(struct tlvdb *tlv) { const struct tlv *tgPrio = tlvdb_get_inchild(ttmp, 0x87, NULL); if (!tgAID) break; - PrintAndLogEx(INFO, "|%s| %s |%s|", - sprint_hex_inrow_ex(tgAID->value, tgAID->len, 18), + PrintAndLogEx(INFO, "| %s| %s | %s|", + sprint_hex_inrow_ex(tgAID->value, tgAID->len, 17), (tgPrio) ? sprint_hex(tgPrio->value, 1) : " ", - (tgName) ? sprint_ascii_ex(tgName->value, tgName->len, 25) : " "); + (tgName) ? sprint_ascii_ex(tgName->value, tgName->len, 24) : " "); ttmp = tlvdb_find_next(ttmp, 0x6f); } @@ -387,7 +387,7 @@ static int EMVSelectWithRetry(EMVCommandChannel channel, bool ActivateField, boo } else { // card select error, proxmark error if (res == 1) { - PrintAndLogEx(WARNING, "Exit..."); + PrintAndLogEx(WARNING, "exiting..."); return 1; } @@ -551,7 +551,7 @@ int EMVSearch(EMVCommandChannel channel, bool ActivateField, bool LeaveFieldON, if (!LeaveFieldON) DropFieldEx(channel); - PrintAndLogEx(WARNING, "Exit..."); + PrintAndLogEx(WARNING, "exiting..."); return 1; } @@ -681,9 +681,9 @@ int trSDA(struct tlvdb *tlv) { } PrintAndLogEx(SUCCESS, "Issuer Public key recovered RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), - sprint_hex(issuer_pk->rid, 5), - issuer_pk->index, - sprint_hex(issuer_pk->serial, 3) + sprint_hex(issuer_pk->rid, 5), + issuer_pk->index, + sprint_hex(issuer_pk->serial, 3) ); const struct tlv *sda_tlv = tlvdb_get(tlv, 0x21, NULL); @@ -740,9 +740,9 @@ int trDDA(EMVCommandChannel channel, bool decodeTLV, struct tlvdb *tlv) { } PrintAndLogEx(SUCCESS, "Issuer Public key recovered RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), - sprint_hex(issuer_pk->rid, 5), - issuer_pk->index, - sprint_hex(issuer_pk->serial, 3) + sprint_hex(issuer_pk->rid, 5), + issuer_pk->index, + sprint_hex(issuer_pk->serial, 3) ); struct emv_pk *icc_pk = emv_pki_recover_icc_cert(issuer_pk, tlv, sda_tlv); @@ -762,7 +762,7 @@ int trDDA(EMVCommandChannel channel, bool decodeTLV, struct tlvdb *tlv) { if (tlvdb_get(tlv, 0x9f2d, NULL)) { struct emv_pk *icc_pe_pk = emv_pki_recover_icc_pe_cert(issuer_pk, tlv); if (!icc_pe_pk) { - PrintAndLogEx(WARNING, "WARNING: ICC PE PK recover error. "); + PrintAndLogEx(WARNING, "WARNING: ICC PE Public key recover error"); } else { PrintAndLogEx(SUCCESS, "ICC PE Public key recovered. RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), sprint_hex(icc_pe_pk->rid, 5), @@ -947,9 +947,9 @@ int trCDA(struct tlvdb *tlv, struct tlvdb *ac_tlv, struct tlv *pdol_data_tlv, st } PrintAndLogEx(SUCCESS, "Issuer Public key recovered RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), - sprint_hex(issuer_pk->rid, 5), - issuer_pk->index, - sprint_hex(issuer_pk->serial, 3) + sprint_hex(issuer_pk->rid, 5), + issuer_pk->index, + sprint_hex(issuer_pk->serial, 3) ); struct emv_pk *icc_pk = emv_pki_recover_icc_cert(issuer_pk, tlv, sda_tlv); @@ -1015,9 +1015,9 @@ int RecoveryCertificates(struct tlvdb *tlvRoot, json_t *root) { } PrintAndLogEx(SUCCESS, "Issuer Public key recovered RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), - sprint_hex(issuer_pk->rid, 5), - issuer_pk->index, - sprint_hex(issuer_pk->serial, 3) + sprint_hex(issuer_pk->rid, 5), + issuer_pk->index, + sprint_hex(issuer_pk->serial, 3) ); JsonSaveBufAsHex(root, "$.ApplicationData.RID", issuer_pk->rid, 5); @@ -1027,24 +1027,20 @@ int RecoveryCertificates(struct tlvdb *tlvRoot, json_t *root) { JsonSaveBufAsHex(root, "$.ApplicationData.IssuerPublicKeyModulus", issuer_pk->modulus, issuer_pk->mlen); free(issuer_pk_c); - struct emv_pk *icc_pk = emv_pki_recover_icc_cert(issuer_pk, tlvRoot, NULL); + const struct tlv *sda_tlv = tlvdb_get(tlvRoot, 0x21, NULL); + struct emv_pk *icc_pk = emv_pki_recover_icc_cert(issuer_pk, tlvRoot, sda_tlv); if (!icc_pk) { emv_pk_free(pk); emv_pk_free(issuer_pk); PrintAndLogEx(WARNING, "WARNING: ICC certificate not found, exiting"); return 2; } - PrintAndLogEx(SUCCESS, "ICC PK recovered. RID %02hhx:%02hhx:%02hhx:%02hhx:%02hhx IDX %02hhx CSN %02hhx:%02hhx:%02hhx\n", - icc_pk->rid[0], - icc_pk->rid[1], - icc_pk->rid[2], - icc_pk->rid[3], - icc_pk->rid[4], - icc_pk->index, - icc_pk->serial[0], - icc_pk->serial[1], - icc_pk->serial[2] - ); + + PrintAndLogEx(SUCCESS, "ICC Public key recovered RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), + sprint_hex(icc_pk->rid, 5), + icc_pk->index, + sprint_hex(icc_pk->serial, 3) + ); char *icc_pk_c = emv_pk_dump_pk(icc_pk); JsonSaveStr(root, "$.ApplicationData.ICCPublicKeyDec", icc_pk_c); From edc1f4d3251da4f47a52b480618f8f5744648237 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 29 May 2020 12:46:27 +0200 Subject: [PATCH 223/527] textual --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3a70189b2..0068f1fdf 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fix `emv scan -w` - hash mismatch, solution similar to below (@iceman1001) + - Fix 'emv roca' - hash mismatch, merged from offical repo (@pwpiwi) - Add Python3 as possible script engine (@iceman1001, @doegox) - Add doc/mfu_binary_format_notes.md (@iceman1001) - Fix `hf mfu dump` - now reads Ulev1 3counter vs NTAG 1 counters (@iceman1001) From 11e34237bbf1d540a70149c891966797f0e29be4 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 29 May 2020 12:47:12 +0200 Subject: [PATCH 224/527] textual --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0068f1fdf..448c7e88f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ This project uses the changelog in accordance with [keepchangelog](http://keepac ## [unreleased][unreleased] - Fix `emv scan -w` - hash mismatch, solution similar to below (@iceman1001) - Fix 'emv roca' - hash mismatch, merged from offical repo (@pwpiwi) + - Fix 'lf ti demod' - now calculates correct crc (@iceman1001) - Add Python3 as possible script engine (@iceman1001, @doegox) - Add doc/mfu_binary_format_notes.md (@iceman1001) - Fix `hf mfu dump` - now reads Ulev1 3counter vs NTAG 1 counters (@iceman1001) From e3eb8b74015f39dbeaaab02ab81f8021228cbed5 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sun, 31 May 2020 23:09:26 +0200 Subject: [PATCH 225/527] char* port for OpenProxmark and remove global gui_serial_port_name --- client/src/cmdhw.c | 2 +- client/src/comms.c | 26 ++++++++++---------------- client/src/comms.h | 6 ++---- client/src/proxguiqt.cpp | 4 ++-- 4 files changed, 15 insertions(+), 23 deletions(-) diff --git a/client/src/cmdhw.c b/client/src/cmdhw.c index 45e56ba49..487d5eb2b 100644 --- a/client/src/cmdhw.c +++ b/client/src/cmdhw.c @@ -580,7 +580,7 @@ static int CmdConnect(const char *Cmd) { // default back to previous used serial port if (strlen(port) == 0) { - if (strlen((char *)conn.serial_port_name) == 0) { + if (strlen(conn.serial_port_name) == 0) { return usage_hw_connect(); } memcpy(port, conn.serial_port_name, sizeof(port)); diff --git a/client/src/comms.c b/client/src/comms.c index 0a49e1f31..09e39696c 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -24,8 +24,6 @@ //#define COMMS_DEBUG //#define COMMS_DEBUG_RAW -uint8_t gui_serial_port_name[FILE_PATH_SIZE]; - // Serial port that we are communicating with the PM3 on. static serial_port sp = NULL; @@ -537,19 +535,18 @@ bool IsCommunicationThreadDead(void) { return ret; } -bool OpenProxmark(void *port, bool wait_for_port, int timeout, bool flash_mode, uint32_t speed) { +bool OpenProxmark(char *port, bool wait_for_port, int timeout, bool flash_mode, uint32_t speed) { - char *portname = (char *)port; if (!wait_for_port) { - PrintAndLogEx(INFO, "Using UART port " _YELLOW_("%s"), portname); - sp = uart_open(portname, speed); + PrintAndLogEx(INFO, "Using UART port " _YELLOW_("%s"), port); + sp = uart_open(port, speed); } else { - PrintAndLogEx(SUCCESS, "Waiting for Proxmark3 to appear on " _YELLOW_("%s"), portname); + PrintAndLogEx(SUCCESS, "Waiting for Proxmark3 to appear on " _YELLOW_("%s"), port); fflush(stdout); int openCount = 0; PrintAndLogEx(INPLACE, "% 3i", timeout); do { - sp = uart_open(portname, speed); + sp = uart_open(port, speed); msleep(500); PrintAndLogEx(INPLACE, "% 3i", timeout - openCount - 1); @@ -558,22 +555,19 @@ bool OpenProxmark(void *port, bool wait_for_port, int timeout, bool flash_mode, // check result of uart opening if (sp == INVALID_SERIAL_PORT) { - PrintAndLogEx(WARNING, "\n" _RED_("ERROR:") " invalid serial port " _YELLOW_("%s"), portname); + PrintAndLogEx(WARNING, "\n" _RED_("ERROR:") " invalid serial port " _YELLOW_("%s"), port); sp = NULL; return false; } else if (sp == CLAIMED_SERIAL_PORT) { - PrintAndLogEx(WARNING, "\n" _RED_("ERROR:") " serial port " _YELLOW_("%s") " is claimed by another process", portname); + PrintAndLogEx(WARNING, "\n" _RED_("ERROR:") " serial port " _YELLOW_("%s") " is claimed by another process", port); sp = NULL; return false; } else { // start the communication thread - if (portname != (char *)conn.serial_port_name) { - uint16_t len = MIN(strlen(portname), FILE_PATH_SIZE - 1); + if (port != conn.serial_port_name) { + uint16_t len = MIN(strlen(port), FILE_PATH_SIZE - 1); memset(conn.serial_port_name, 0, FILE_PATH_SIZE); - memcpy(conn.serial_port_name, portname, len); - - memset(gui_serial_port_name, 0, FILE_PATH_SIZE); - memcpy(gui_serial_port_name, portname, len); + memcpy(conn.serial_port_name, port, len); } conn.run = true; conn.block_after_ACK = flash_mode; diff --git a/client/src/comms.h b/client/src/comms.h index 42f5580a6..9fcf1b7a6 100644 --- a/client/src/comms.h +++ b/client/src/comms.h @@ -60,13 +60,11 @@ typedef struct { // To memorise baudrate uint32_t uart_speed; uint16_t last_command; - uint8_t serial_port_name[FILE_PATH_SIZE]; + char serial_port_name[FILE_PATH_SIZE]; } communication_arg_t; extern communication_arg_t conn; -extern uint8_t gui_serial_port_name[FILE_PATH_SIZE]; - void *uart_receiver(void *targ); void SendCommandBL(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *data, size_t len); void SendCommandOLD(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, void *data, size_t len); @@ -76,7 +74,7 @@ void clearCommandBuffer(void); #define FLASHMODE_SPEED 460800 bool IsCommunicationThreadDead(void); -bool OpenProxmark(void *port, bool wait_for_port, int timeout, bool flash_mode, uint32_t speed); +bool OpenProxmark(char *port, bool wait_for_port, int timeout, bool flash_mode, uint32_t speed); int TestProxmark(void); void CloseProxmark(void); diff --git a/client/src/proxguiqt.cpp b/client/src/proxguiqt.cpp index f3f49b9a0..7374982ea 100644 --- a/client/src/proxguiqt.cpp +++ b/client/src/proxguiqt.cpp @@ -233,7 +233,7 @@ ProxWidget::ProxWidget(QWidget *parent, ProxGuiQT *master) : QWidget(parent) { setLayout(layout); // plot window title - QString pt = QString("[*]Plot [ %1 ]").arg((char *)gui_serial_port_name); + QString pt = QString("[*]Plot [ %1 ]").arg(conn.serial_port_name); setWindowTitle(pt); // shows plot window on the screen. @@ -247,7 +247,7 @@ ProxWidget::ProxWidget(QWidget *parent, ProxGuiQT *master) : QWidget(parent) { } // Olverlays / slider window title - QString ct = QString("[*]Slider [ %1 ]").arg((char *)gui_serial_port_name); + QString ct = QString("[*]Slider [ %1 ]").arg(conn.serial_port_name); controlWidget->setWindowTitle(ct); controlWidget->show(); From ff1f945291172db7ce0b566df767d68a48a85531 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 1 Jun 2020 15:28:18 +0200 Subject: [PATCH 226/527] desfire_crypto: remove global vars --- client/src/mifare/desfire_crypto.c | 26 ++++++++++++++++++-------- 1 file changed, 18 insertions(+), 8 deletions(-) diff --git a/client/src/mifare/desfire_crypto.c b/client/src/mifare/desfire_crypto.c index 6dd2de26d..8dba06ca1 100644 --- a/client/src/mifare/desfire_crypto.c +++ b/client/src/mifare/desfire_crypto.c @@ -36,10 +36,6 @@ #include "crc16.h" // crc16 ccitt #include "crc32.h" -mbedtls_des_context ctx; -mbedtls_des3_context ctx3; -mbedtls_aes_context actx; - #ifndef AddCrc14A # define AddCrc14A(data, len) compute_crc(CRC_14443_A, (data), (len), (data)+(len), (data)+(len)+1) #endif @@ -57,17 +53,20 @@ static inline void update_key_schedules(desfirekey_t key) { /******************************************************************************/ void des_encrypt(void *out, const void *in, const void *key) { + mbedtls_des_context ctx; mbedtls_des_setkey_enc(&ctx, key); mbedtls_des_crypt_ecb(&ctx, in, out); } void des_decrypt(void *out, const void *in, const void *key) { + mbedtls_des_context ctx; mbedtls_des_setkey_dec(&ctx, key); mbedtls_des_crypt_ecb(&ctx, in, out); } void tdes_nxp_receive(const void *in, void *out, size_t length, const void *key, unsigned char iv[8], int keymode) { if (length % 8) return; + mbedtls_des3_context ctx3; if (keymode == 2) mbedtls_des3_set2key_dec(&ctx3, key); else mbedtls_des3_set3key_dec(&ctx3, key); @@ -94,6 +93,7 @@ void tdes_nxp_receive(const void *in, void *out, size_t length, const void *key, void tdes_nxp_send(const void *in, void *out, size_t length, const void *key, unsigned char iv[8], int keymode) { if (length % 8) return; + mbedtls_des3_context ctx3; if (keymode == 2) mbedtls_des3_set2key_enc(&ctx3, key); else mbedtls_des3_set3key_enc(&ctx3, key); @@ -754,43 +754,52 @@ void mifare_cypher_single_block(desfirekey_t key, uint8_t *data, uint8_t *ivect, break; case T_3DES: switch (operation) { - case MCO_ENCYPHER: + case MCO_ENCYPHER: { + mbedtls_des3_context ctx3; mbedtls_des3_set2key_enc(&ctx3, key->data); mbedtls_des3_crypt_ecb(&ctx3, data, edata); // DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_ENCRYPT); // DES_ecb_encrypt ((DES_cblock *) edata, (DES_cblock *) data, &(key->ks2), DES_DECRYPT); // DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_ENCRYPT); break; - case MCO_DECYPHER: + } + case MCO_DECYPHER: { + mbedtls_des3_context ctx3; mbedtls_des3_set2key_dec(&ctx3, key->data); mbedtls_des3_crypt_ecb(&ctx3, data, edata); // DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_DECRYPT); // DES_ecb_encrypt ((DES_cblock *) edata, (DES_cblock *) data, &(key->ks2), DES_ENCRYPT); // DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_DECRYPT); break; + } } break; case T_3K3DES: switch (operation) { - case MCO_ENCYPHER: + case MCO_ENCYPHER: { + mbedtls_des3_context ctx3; mbedtls_des3_set3key_enc(&ctx3, key->data); mbedtls_des3_crypt_ecb(&ctx3, data, edata); // DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_ENCRYPT); // DES_ecb_encrypt ((DES_cblock *) edata, (DES_cblock *) data, &(key->ks2), DES_DECRYPT); // DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks3), DES_ENCRYPT); break; - case MCO_DECYPHER: + } + case MCO_DECYPHER: { + mbedtls_des3_context ctx3; mbedtls_des3_set3key_dec(&ctx3, key->data); mbedtls_des3_crypt_ecb(&ctx3, data, edata); // DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks3), DES_DECRYPT); // DES_ecb_encrypt ((DES_cblock *) edata, (DES_cblock *) data, &(key->ks2), DES_ENCRYPT); // DES_ecb_encrypt ((DES_cblock *) data, (DES_cblock *) edata, &(key->ks1), DES_DECRYPT); break; + } } break; case T_AES: switch (operation) { case MCO_ENCYPHER: { + mbedtls_aes_context actx; mbedtls_aes_init(&actx); mbedtls_aes_setkey_enc(&actx, key->data, 128); mbedtls_aes_crypt_cbc(&actx, MBEDTLS_AES_ENCRYPT, sizeof(edata), ivect, data, edata); @@ -798,6 +807,7 @@ void mifare_cypher_single_block(desfirekey_t key, uint8_t *data, uint8_t *ivect, break; } case MCO_DECYPHER: { + mbedtls_aes_context actx; mbedtls_aes_init(&actx); mbedtls_aes_setkey_dec(&actx, key->data, 128); mbedtls_aes_crypt_cbc(&actx, MBEDTLS_AES_DECRYPT, sizeof(edata), ivect, edata, data); From 6326c4126c10daeb5d639e665ec23946776fc301 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 1 Jun 2020 17:30:33 +0200 Subject: [PATCH 227/527] cliparser: remove global vars --- client/deps/cliparser/cliparser.c | 79 ++++++------ client/deps/cliparser/cliparser.h | 26 ++-- client/src/cmddata.c | 9 +- client/src/cmdhf.c | 6 +- client/src/cmdhf14a.c | 34 ++--- client/src/cmdhffido.c | 62 ++++----- client/src/cmdhfmf.c | 59 +++++---- client/src/cmdhfmfdes.c | 208 ++++++++++++++++-------------- client/src/cmdhfmfp.c | 112 ++++++++-------- client/src/cmdhfmfu.c | 9 +- client/src/cmdlfindala.c | 9 +- client/src/cmdlfmotorola.c | 9 +- client/src/emv/cmdemv.c | 101 ++++++++------- 13 files changed, 393 insertions(+), 330 deletions(-) diff --git a/client/deps/cliparser/cliparser.c b/client/deps/cliparser/cliparser.c index 27b0ed050..c4795d870 100644 --- a/client/deps/cliparser/cliparser.c +++ b/client/deps/cliparser/cliparser.c @@ -10,50 +10,50 @@ #include "cliparser.h" #include <string.h> +#include <stdlib.h> -void **argtable = NULL; -size_t argtableLen = 0; -const char *programName = NULL; -const char *programHint = NULL; -const char *programHelp = NULL; -char buf[500] = {0}; - -int CLIParserInit(const char *vprogramName, const char *vprogramHint, const char *vprogramHelp) { - argtable = NULL; - argtableLen = 0; - programName = vprogramName; - programHint = vprogramHint; - programHelp = vprogramHelp; - memset(buf, 0x00, 500); +int CLIParserInit(CLIParserContext **ctx, const char *vprogramName, const char *vprogramHint, const char *vprogramHelp) { + *ctx = malloc(sizeof(CLIParserContext)); + if (!*ctx) { + printf("ERROR: Insufficient memory\n"); + fflush(stdout); + return 2; + } + (*ctx)->argtable = NULL; + (*ctx)->argtableLen = 0; + (*ctx)->programName = vprogramName; + (*ctx)->programHint = vprogramHint; + (*ctx)->programHelp = vprogramHelp; + memset((*ctx)->buf, 0x00, sizeof((*ctx)->buf)); return 0; } -int CLIParserParseArg(int argc, char **argv, void *vargtable[], size_t vargtableLen, bool allowEmptyExec) { +int CLIParserParseArg(CLIParserContext *ctx, int argc, char **argv, void *vargtable[], size_t vargtableLen, bool allowEmptyExec) { int nerrors; - argtable = vargtable; - argtableLen = vargtableLen; + ctx->argtable = vargtable; + ctx->argtableLen = vargtableLen; /* verify the argtable[] entries were allocated sucessfully */ - if (arg_nullcheck(argtable) != 0) { + if (arg_nullcheck(ctx->argtable) != 0) { /* NULL entries were detected, some allocations must have failed */ printf("ERROR: Insufficient memory\n"); fflush(stdout); return 2; } /* Parse the command line as defined by argtable[] */ - nerrors = arg_parse(argc, argv, argtable); + nerrors = arg_parse(argc, argv, ctx->argtable); /* special case: '--help' takes precedence over error reporting */ - if ((argc < 2 && !allowEmptyExec) || ((struct arg_lit *)argtable[0])->count > 0) { // help must be the first record - printf("Usage: %s", programName); - arg_print_syntaxv(stdout, argtable, "\n"); - if (programHint) - printf("%s\n\n", programHint); - arg_print_glossary(stdout, argtable, " %-20s %s\n"); + if ((argc < 2 && !allowEmptyExec) || ((struct arg_lit *)(ctx->argtable)[0])->count > 0) { // help must be the first record + printf("Usage: %s", ctx->programName); + arg_print_syntaxv(stdout, ctx->argtable, "\n"); + if (ctx->programHint) + printf("%s\n\n", ctx->programHint); + arg_print_glossary(stdout, ctx->argtable, " %-20s %s\n"); printf("\n"); - if (programHelp) - printf("%s \n", programHelp); + if (ctx->programHelp) + printf("%s \n", ctx->programHelp); fflush(stdout); return 1; @@ -62,8 +62,8 @@ int CLIParserParseArg(int argc, char **argv, void *vargtable[], size_t vargtable /* If the parser returned any errors then display them and exit */ if (nerrors > 0) { /* Display the error details contained in the arg_end struct.*/ - arg_print_errors(stdout, ((struct arg_end *)argtable[vargtableLen - 1]), programName); - printf("Try '%s --help' for more information.\n", programName); + arg_print_errors(stdout, ((struct arg_end *)(ctx->argtable)[vargtableLen - 1]), ctx->programName); + printf("Try '%s --help' for more information.\n", ctx->programName); fflush(stdout); return 3; } @@ -79,23 +79,25 @@ enum ParserState { #define isSpace(c)(c == ' ' || c == '\t') -int CLIParserParseString(const char *str, void *vargtable[], size_t vargtableLen, bool allowEmptyExec) { - return CLIParserParseStringEx(str, vargtable, vargtableLen, allowEmptyExec, false); +int CLIParserParseString(CLIParserContext *ctx, const char *str, void *vargtable[], size_t vargtableLen, bool allowEmptyExec) { + return CLIParserParseStringEx(ctx, str, vargtable, vargtableLen, allowEmptyExec, false); } -int CLIParserParseStringEx(const char *str, void *vargtable[], size_t vargtableLen, bool allowEmptyExec, bool clueData) { +int CLIParserParseStringEx(CLIParserContext *ctx, const char *str, void *vargtable[], size_t vargtableLen, bool allowEmptyExec, bool clueData) { int argc = 0; char *argv[200] = {NULL}; int len = strlen(str); + char buf[500] = {0}; + memset(ctx->buf, 0x00, 500); char *bufptr = buf; char *spaceptr = NULL; enum ParserState state = PS_FIRST; argv[argc++] = bufptr; // param0 = program name - memcpy(buf, programName, strlen(programName) + 1); // with 0x00 - bufptr += strlen(programName) + 1; + memcpy(buf, ctx->programName, strlen(ctx->programName) + 1); // with 0x00 + bufptr += strlen(ctx->programName) + 1; if (len) argv[argc++] = bufptr; @@ -140,13 +142,12 @@ int CLIParserParseStringEx(const char *str, void *vargtable[], size_t vargtableL } } - return CLIParserParseArg(argc, argv, vargtable, vargtableLen, allowEmptyExec); + return CLIParserParseArg(ctx, argc, argv, vargtable, vargtableLen, allowEmptyExec); } -void CLIParserFree(void) { - arg_freetable(argtable, argtableLen); - argtable = NULL; - +void CLIParserFree(CLIParserContext *ctx) { + arg_freetable(ctx->argtable, ctx->argtableLen); + free(ctx); return; } diff --git a/client/deps/cliparser/cliparser.h b/client/deps/cliparser/cliparser.h index 866ee07d6..b0000f77b 100644 --- a/client/deps/cliparser/cliparser.h +++ b/client/deps/cliparser/cliparser.h @@ -27,16 +27,24 @@ #define arg_strx1(shortopts, longopts, datatype, glossary) (arg_strn((shortopts), (longopts), (datatype), 1, 250, (glossary))) #define arg_strx0(shortopts, longopts, datatype, glossary) (arg_strn((shortopts), (longopts), (datatype), 0, 250, (glossary))) -#define CLIExecWithReturn(cmd, atbl, ifempty) if (CLIParserParseString(cmd, atbl, arg_getsize(atbl), ifempty)){CLIParserFree();return PM3_ESOFT;} -#define CLIGetHexBLessWithReturn(paramnum, data, datalen, delta) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data) - (delta), datalen)) {CLIParserFree();return PM3_ESOFT;} -#define CLIGetHexWithReturn(paramnum, data, datalen) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {CLIParserFree();return PM3_ESOFT;} -#define CLIGetStrWithReturn(paramnum, data, datalen) if (CLIParamStrToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {CLIParserFree();return PM3_ESOFT;} +#define CLIExecWithReturn(ctx, cmd, atbl, ifempty) if (CLIParserParseString(ctx, cmd, atbl, arg_getsize(atbl), ifempty)){CLIParserFree(ctx);return PM3_ESOFT;} +#define CLIGetHexBLessWithReturn(ctx, paramnum, data, datalen, delta) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data) - (delta), datalen)) {CLIParserFree(ctx);return PM3_ESOFT;} +#define CLIGetHexWithReturn(ctx, paramnum, data, datalen) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {CLIParserFree(ctx);return PM3_ESOFT;} +#define CLIGetStrWithReturn(ctx, paramnum, data, datalen) if (CLIParamStrToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {CLIParserFree(ctx);return PM3_ESOFT;} -int CLIParserInit(const char *vprogramName, const char *vprogramHint, const char *vprogramHelp); -int CLIParserParseString(const char *str, void *vargtable[], size_t vargtableLen, bool allowEmptyExec); -int CLIParserParseStringEx(const char *str, void *vargtable[], size_t vargtableLen, bool allowEmptyExec, bool clueData); -int CLIParserParseArg(int argc, char **argv, void *vargtable[], size_t vargtableLen, bool allowEmptyExec); -void CLIParserFree(void); +typedef struct { + void **argtable; + size_t argtableLen; + const char *programName; + const char *programHint; + const char *programHelp; + char buf[500]; +} CLIParserContext; +int CLIParserInit(CLIParserContext **context, const char *vprogramName, const char *vprogramHint, const char *vprogramHelp); +int CLIParserParseString(CLIParserContext *context, const char *str, void *vargtable[], size_t vargtableLen, bool allowEmptyExec); +int CLIParserParseStringEx(CLIParserContext *context, const char *str, void *vargtable[], size_t vargtableLen, bool allowEmptyExec, bool clueData); +int CLIParserParseArg(CLIParserContext *context, int argc, char **argv, void *vargtable[], size_t vargtableLen, bool allowEmptyExec); +void CLIParserFree(CLIParserContext *context); int CLIParamHexToBuf(struct arg_str *argstr, uint8_t *data, int maxdatalen, int *datalen); int CLIParamStrToBuf(struct arg_str *argstr, uint8_t *data, int maxdatalen, int *datalen); diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 5aba8e537..326e0d457 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -2292,7 +2292,8 @@ static int CmdDataNDEF(const char *Cmd) { #define MAX_NDEF_LEN 2048 #endif - CLIParserInit("data ndef", + CLIParserContext *ctx; + CLIParserInit(&ctx, "data ndef", "Prints NFC Data Exchange Format (NDEF)", "Usage:\n\tdata ndef -d 9101085402656e48656c6c6f5101085402656e576f726c64\n"); @@ -2301,12 +2302,12 @@ static int CmdDataNDEF(const char *Cmd) { arg_strx0("dD", "data", "<hex>", "NDEF data to decode"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); int datalen = 0; uint8_t data[MAX_NDEF_LEN] = {0}; - CLIGetHexWithReturn(1, data, &datalen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 1, data, &datalen); + CLIParserFree(ctx); if (datalen == 0) return PM3_EINVARG; diff --git a/client/src/cmdhf.c b/client/src/cmdhf.c index ff2a5e79f..6b11a30da 100644 --- a/client/src/cmdhf.c +++ b/client/src/cmdhf.c @@ -254,7 +254,8 @@ int CmdHFSniff(const char *Cmd) { } int CmdHFPlot(const char *Cmd) { - CLIParserInit("hf plot", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf plot", "Plots HF signal after RF signal path and A/D conversion.", "This can be used after any hf command and will show the last few milliseconds of the HF signal.\n" "Note: If the last hf command terminated because of a timeout you will most probably see nothing.\n"); @@ -262,7 +263,8 @@ int CmdHFPlot(const char *Cmd) { arg_param_begin, arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); + CLIParserFree(ctx); uint8_t buf[FPGA_TRACE_SIZE]; diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 5f1ec7b18..500406439 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -364,7 +364,8 @@ static int CmdHF14AInfo(const char *Cmd) { bool do_nack_test = false; bool do_aid_search = false; - CLIParserInit("hf 14a info", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf 14a info", "This command makes more extensive tests against a ISO14443a tag in order to collect information", "Sample:\n\thf 14a info -nsv - shows full information about the card\n"); @@ -375,13 +376,13 @@ static int CmdHF14AInfo(const char *Cmd) { arg_lit0("sS", "aidsearch", "checks if AIDs from aidlist.json is present on the card and prints information about found AIDs"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); verbose = arg_get_lit(1); do_nack_test = arg_get_lit(2); do_aid_search = arg_get_lit(3); - CLIParserFree(); + CLIParserFree(ctx); infoHF14A(verbose, do_nack_test, do_aid_search); return 0; @@ -878,7 +879,8 @@ static int CmdHF14AAPDU(const char *Cmd) { bool extendedAPDU = false; int le = 0; - CLIParserInit("hf 14a apdu", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf 14a apdu", "Sends an ISO 7816-4 APDU via ISO 14443-4 block transmission protocol (T=CL). works with all apdu types from ISO 7816-4:2013", "Sample:\n\thf 14a apdu -st 00A404000E325041592E5359532E444446303100\n" "\thf 14a apdu -sd 00A404000E325041592E5359532E444446303100 - decode apdu\n" @@ -897,14 +899,14 @@ static int CmdHF14AAPDU(const char *Cmd) { arg_strx1(NULL, NULL, "<APDU (hex) | data (hex)>", "data if `m` parameter included"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); activateField = arg_get_lit(1); leaveSignalON = arg_get_lit(2); decodeTLV = arg_get_lit(3); decodeAPDU = arg_get_lit(4); - CLIGetHexWithReturn(5, header, &headerlen); + CLIGetHexWithReturn(ctx, 5, header, &headerlen); makeAPDU = headerlen > 0; if (makeAPDU && headerlen != 4) { PrintAndLogEx(ERR, "header length must be 4 bytes instead of %d", headerlen); @@ -917,7 +919,7 @@ static int CmdHF14AAPDU(const char *Cmd) { uint8_t apdudata[PM3_CMD_DATA_SIZE] = {0}; int apdudatalen = 0; - CLIGetHexBLessWithReturn(8, apdudata, &apdudatalen, 1 + 2); + CLIGetHexBLessWithReturn(ctx, 8, apdudata, &apdudatalen, 1 + 2); APDUStruct apdu; apdu.cla = header[0]; @@ -947,10 +949,10 @@ static int CmdHF14AAPDU(const char *Cmd) { } // len = data + PCB(1b) + CRC(2b) - CLIGetHexBLessWithReturn(8, data, &datalen, 1 + 2); + CLIGetHexBLessWithReturn(ctx, 8, data, &datalen, 1 + 2); } - CLIParserFree(); + CLIParserFree(ctx); PrintAndLogEx(NORMAL, ">>>>[%s%s%s] %s", activateField ? "sel " : "", leaveSignalON ? "keep " : "", decodeTLV ? "TLV" : "", sprint_hex(data, datalen)); if (decodeAPDU) { @@ -1162,7 +1164,8 @@ static int waitCmd(uint8_t iSelect) { static int CmdHF14AAntiFuzz(const char *Cmd) { - CLIParserInit("hf 14a antifuzz", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf 14a antifuzz", "Tries to fuzz the ISO14443a anticollision phase", "Usage:\n" "\thf 14a antifuzz -4\n"); @@ -1174,7 +1177,7 @@ static int CmdHF14AAntiFuzz(const char *Cmd) { arg_lit0(NULL, "10", "10 byte uid"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); uint8_t arg0 = FLAG_4B_UID_IN_DATA; if (arg_get_lit(2)) @@ -1182,7 +1185,7 @@ static int CmdHF14AAntiFuzz(const char *Cmd) { if (arg_get_lit(3)) arg0 = FLAG_10B_UID_IN_DATA; - CLIParserFree(); + CLIParserFree(ctx); clearCommandBuffer(); SendCommandMIX(CMD_HF_ISO14443A_ANTIFUZZ, arg0, 0, 0, NULL, 0); return 0; @@ -1190,7 +1193,8 @@ static int CmdHF14AAntiFuzz(const char *Cmd) { static int CmdHF14AChaining(const char *Cmd) { - CLIParserInit("hf 14a chaining", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf 14a chaining", "Enable/Disable ISO14443a input chaining. Maximum input length goes from ATS.", "Usage:\n" "\thf 14a chaining disable -> disable chaining\n" @@ -1201,7 +1205,7 @@ static int CmdHF14AChaining(const char *Cmd) { arg_str0(NULL, NULL, "<enable/disable or 0/1>", NULL), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); struct arg_str *str = arg_get_str(1); int len = arg_get_str_len(1); @@ -1212,7 +1216,7 @@ static int CmdHF14AChaining(const char *Cmd) { if (len && (!strcmp(str->sval[0], "disable") || !strcmp(str->sval[0], "0"))) APDUInFramingEnable = false; - CLIParserFree(); + CLIParserFree(ctx); PrintAndLogEx(INFO, "\nISO 14443-4 input chaining %s.\n", APDUInFramingEnable ? "enabled" : "disabled"); diff --git a/client/src/cmdhffido.c b/client/src/cmdhffido.c index 991d7eb5d..22b855e95 100644 --- a/client/src/cmdhffido.c +++ b/client/src/cmdhffido.c @@ -110,7 +110,7 @@ static int CmdHFFidoInfo(const char *cmd) { return 0; } -static json_t *OpenJson(int paramnum, char *fname, void *argtable[], bool *err) { +static json_t *OpenJson(CLIParserContext *ctx, int paramnum, char *fname, void *argtable[], bool *err) { json_t *root = NULL; json_error_t error; *err = false; @@ -119,9 +119,9 @@ static json_t *OpenJson(int paramnum, char *fname, void *argtable[], bool *err) char *cjsonname = (char *)jsonname; int jsonnamelen = 0; - // CLIGetStrWithReturn(paramnum, jsonname, &jsonnamelen); + // CLIGetStrWithReturn(ctx, paramnum, jsonname, &jsonnamelen); if (CLIParamStrToBuf(arg_get_str(paramnum), jsonname, sizeof(jsonname), &jsonnamelen)) { - CLIParserFree(); + CLIParserFree(ctx); return NULL; } @@ -162,7 +162,8 @@ static int CmdHFFidoRegister(const char *cmd) { uint8_t adata[250] = {0}; json_t *root = NULL; - CLIParserInit("hf fido reg", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf fido reg", "Initiate a U2F token registration. Needs two 32-byte hash numbers. \nchallenge parameter (32b) and application parameter (32b).", "Usage:\n\thf fido reg -> execute command with 2 parameters, filled 0x00\n" "\thf fido reg 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f -> execute command with parameters" @@ -179,7 +180,7 @@ static int CmdHFFidoRegister(const char *cmd) { arg_str0(NULL, NULL, "<HEX/ASCII application parameter (32b HEX/1..16 chars)>", NULL), arg_param_end }; - CLIExecWithReturn(cmd, argtable, true); + CLIExecWithReturn(ctx, cmd, argtable, true); bool APDULogging = arg_get_lit(1); bool verbose = arg_get_lit(2); @@ -189,7 +190,7 @@ static int CmdHFFidoRegister(const char *cmd) { char fname[250] = {0}; bool err; - root = OpenJson(5, fname, argtable, &err); + root = OpenJson(ctx, 5, fname, argtable, &err); if (err) return 1; if (root) { @@ -200,13 +201,13 @@ static int CmdHFFidoRegister(const char *cmd) { if (paramsPlain) { memset(cdata, 0x00, 32); - CLIGetStrWithReturn(6, cdata, &chlen); + CLIGetStrWithReturn(ctx, 6, cdata, &chlen); if (chlen > 16) { PrintAndLogEx(ERR, "ERROR: challenge parameter length in ASCII mode must be less than 16 chars instead of: %d", chlen); return 1; } } else { - CLIGetHexWithReturn(6, cdata, &chlen); + CLIGetHexWithReturn(ctx, 6, cdata, &chlen); if (chlen && chlen != 32) { PrintAndLogEx(ERR, "ERROR: challenge parameter length must be 32 bytes only."); return 1; @@ -218,13 +219,13 @@ static int CmdHFFidoRegister(const char *cmd) { if (paramsPlain) { memset(adata, 0x00, 32); - CLIGetStrWithReturn(7, adata, &applen); + CLIGetStrWithReturn(ctx, 7, adata, &applen); if (applen > 16) { PrintAndLogEx(ERR, "ERROR: application parameter length in ASCII mode must be less than 16 chars instead of: %d", applen); return 1; } } else { - CLIGetHexWithReturn(7, adata, &applen); + CLIGetHexWithReturn(ctx, 7, adata, &applen); if (applen && applen != 32) { PrintAndLogEx(ERR, "ERROR: application parameter length must be 32 bytes only."); return 1; @@ -233,7 +234,7 @@ static int CmdHFFidoRegister(const char *cmd) { if (applen) memmove(&data[32], adata, 32); - CLIParserFree(); + CLIParserFree(ctx); SetAPDULogging(APDULogging); @@ -393,7 +394,8 @@ static int CmdHFFidoAuthenticate(const char *cmd) { uint8_t keyHandleLen = 0; json_t *root = NULL; - CLIParserInit("hf fido auth", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf fido auth", "Initiate a U2F token authentication. Needs key handle and two 32-byte hash numbers. \nkey handle(var 0..255), challenge parameter (32b) and application parameter (32b).", "Usage:\n\thf fido auth 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f -> execute command with 2 parameters, filled 0x00 and key handle\n" "\thf fido auth 000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f000102030405060708090a0b0c0d0e0f " @@ -414,7 +416,7 @@ static int CmdHFFidoAuthenticate(const char *cmd) { arg_str0(NULL, NULL, "<HEX/ASCII application parameter (32b HEX/1..16 chars)>", NULL), arg_param_end }; - CLIExecWithReturn(cmd, argtable, true); + CLIExecWithReturn(ctx, cmd, argtable, true); bool APDULogging = arg_get_lit(1); bool verbose = arg_get_lit(2); @@ -427,7 +429,7 @@ static int CmdHFFidoAuthenticate(const char *cmd) { char fname[250] = {0}; bool err; - root = OpenJson(7, fname, argtable, &err); + root = OpenJson(ctx, 7, fname, argtable, &err); if (err) return 1; if (root) { @@ -442,7 +444,7 @@ static int CmdHFFidoAuthenticate(const char *cmd) { } // public key - CLIGetHexWithReturn(8, hdata, &hdatalen); + CLIGetHexWithReturn(ctx, 8, hdata, &hdatalen); if (hdatalen && hdatalen != 65) { PrintAndLogEx(ERR, "ERROR: public key length must be 65 bytes only."); return 1; @@ -452,7 +454,7 @@ static int CmdHFFidoAuthenticate(const char *cmd) { public_key_loaded = true; } - CLIGetHexWithReturn(9, hdata, &hdatalen); + CLIGetHexWithReturn(ctx, 9, hdata, &hdatalen); if (hdatalen > 255) { PrintAndLogEx(ERR, "ERROR: application parameter length must be less than 255."); return 1; @@ -465,13 +467,13 @@ static int CmdHFFidoAuthenticate(const char *cmd) { if (paramsPlain) { memset(hdata, 0x00, 32); - CLIGetStrWithReturn(9, hdata, &hdatalen); + CLIGetStrWithReturn(ctx, 9, hdata, &hdatalen); if (hdatalen > 16) { PrintAndLogEx(ERR, "ERROR: challenge parameter length in ASCII mode must be less than 16 chars instead of: %d", hdatalen); return 1; } } else { - CLIGetHexWithReturn(10, hdata, &hdatalen); + CLIGetHexWithReturn(ctx, 10, hdata, &hdatalen); if (hdatalen && hdatalen != 32) { PrintAndLogEx(ERR, "ERROR: challenge parameter length must be 32 bytes only."); return 1; @@ -482,13 +484,13 @@ static int CmdHFFidoAuthenticate(const char *cmd) { if (paramsPlain) { memset(hdata, 0x00, 32); - CLIGetStrWithReturn(11, hdata, &hdatalen); + CLIGetStrWithReturn(ctx, 11, hdata, &hdatalen); if (hdatalen > 16) { PrintAndLogEx(ERR, "ERROR: application parameter length in ASCII mode must be less than 16 chars instead of: %d", hdatalen); return 1; } } else { - CLIGetHexWithReturn(10, hdata, &hdatalen); + CLIGetHexWithReturn(ctx, 10, hdata, &hdatalen); if (hdatalen && hdatalen != 32) { PrintAndLogEx(ERR, "ERROR: application parameter length must be 32 bytes only."); return 1; @@ -497,7 +499,7 @@ static int CmdHFFidoAuthenticate(const char *cmd) { if (hdatalen) memmove(&data[32], hdata, 32); - CLIParserFree(); + CLIParserFree(ctx); SetAPDULogging(APDULogging); @@ -641,7 +643,8 @@ static int CmdHFFido2MakeCredential(const char *cmd) { json_t *root = NULL; char fname[300] = {0}; - CLIParserInit("hf fido make", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf fido make", "Execute a FIDO2 Make Credential command. Needs json file with parameters. Sample file " _YELLOW_("`fido2.json`") " in `resources/`.", "Usage:\n\thf fido make -> execute command with default parameters file `fido2.json`\n" "\thf fido make test.json -> execute command with parameters file `text.json`"); @@ -655,7 +658,7 @@ static int CmdHFFido2MakeCredential(const char *cmd) { arg_str0(NULL, NULL, "<json file name>", "JSON input / output file name for parameters. Default `fido2.json`"), arg_param_end }; - CLIExecWithReturn(cmd, argtable, true); + CLIExecWithReturn(ctx, cmd, argtable, true); bool APDULogging = arg_get_lit(1); bool verbose = arg_get_lit(2); @@ -666,14 +669,14 @@ static int CmdHFFido2MakeCredential(const char *cmd) { uint8_t jsonname[250] = {0}; char *cjsonname = (char *)jsonname; int jsonnamelen = 0; - CLIGetStrWithReturn(5, jsonname, &jsonnamelen); + CLIGetStrWithReturn(ctx, 5, jsonname, &jsonnamelen); if (!jsonnamelen) { strcat(cjsonname, "fido2"); jsonnamelen = strlen(cjsonname); } - CLIParserFree(); + CLIParserFree(ctx); SetAPDULogging(APDULogging); @@ -767,7 +770,8 @@ static int CmdHFFido2GetAssertion(const char *cmd) { json_t *root = NULL; char fname[300] = {0}; - CLIParserInit("hf fido assert", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf fido assert", "Execute a FIDO2 Get Assertion command. Needs json file with parameters. Sample file " _YELLOW_("`fido2.json`") " in `resources/`.", "Usage:\n\thf fido assert -> execute command with default parameters file `fido2.json`\n" "\thf fido assert test.json -l -> execute command with parameters file `text.json` and add to request CredentialId"); @@ -781,7 +785,7 @@ static int CmdHFFido2GetAssertion(const char *cmd) { arg_str0(NULL, NULL, "<json file name>", "JSON input / output file name for parameters. Default `fido2.json`"), arg_param_end }; - CLIExecWithReturn(cmd, argtable, true); + CLIExecWithReturn(ctx, cmd, argtable, true); bool APDULogging = arg_get_lit(1); bool verbose = arg_get_lit(2); @@ -792,14 +796,14 @@ static int CmdHFFido2GetAssertion(const char *cmd) { uint8_t jsonname[250] = {0}; char *cjsonname = (char *)jsonname; int jsonnamelen = 0; - CLIGetStrWithReturn(5, jsonname, &jsonnamelen); + CLIGetStrWithReturn(ctx, 5, jsonname, &jsonnamelen); if (!jsonnamelen) { strcat(cjsonname, "fido2"); jsonnamelen = strlen(cjsonname); } - CLIParserFree(); + CLIParserFree(ctx); SetAPDULogging(APDULogging); diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 2257a3172..062f22c06 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4025,7 +4025,8 @@ static int CmdHF14AMfCWipe(const char *cmd) { uint8_t sak[1] = {0x00}; int sakLen = 0; - CLIParserInit("hf mf cwipe", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mf cwipe", "Wipe gen1 magic chinese card. Set UID/ATQA/SAK/Data/Keys/Access to default values.", "Usage:\n\thf mf cwipe -> wipe card.\n" "\thf mf cwipe -u 09080706 -a 0004 -s 18 -- set UID, ATQA and SAK and wipe card."); @@ -4037,12 +4038,12 @@ static int CmdHF14AMfCWipe(const char *cmd) { arg_str0("sS", "sak", "<SAK (hex 1b)>", "SAK for card"), arg_param_end }; - CLIExecWithReturn(cmd, argtable, true); + CLIExecWithReturn(ctx, cmd, argtable, true); - CLIGetHexWithReturn(1, uid, &uidLen); - CLIGetHexWithReturn(2, atqa, &atqaLen); - CLIGetHexWithReturn(3, sak, &sakLen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 1, uid, &uidLen); + CLIGetHexWithReturn(ctx, 2, atqa, &atqaLen); + CLIGetHexWithReturn(ctx, 3, sak, &sakLen); + CLIParserFree(ctx); if (uidLen && uidLen != 4) { PrintAndLogEx(ERR, "UID length must be 4 bytes instead of: %d", uidLen); @@ -4611,7 +4612,8 @@ static int CmdHF14AMfAuth4(const char *Cmd) { uint8_t key[16] = {0}; int keylen = 0; - CLIParserInit("hf mf auth4", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mf auth4", "Executes AES authentication command in ISO14443-4", "Usage:\n\thf mf auth4 4000 000102030405060708090a0b0c0d0e0f -> executes authentication\n" "\thf mf auth4 9003 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -> executes authentication\n"); @@ -4622,11 +4624,11 @@ static int CmdHF14AMfAuth4(const char *Cmd) { arg_str1(NULL, NULL, "<Key Value (HEX 16 bytes)>", NULL), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); - CLIGetHexWithReturn(1, keyn, &keynlen); - CLIGetHexWithReturn(2, key, &keylen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 1, keyn, &keynlen); + CLIGetHexWithReturn(ctx, 2, key, &keylen); + CLIParserFree(ctx); if (keynlen != 2) { PrintAndLogEx(ERR, "<Key Num> must be 2 bytes long instead of: %d", keynlen); @@ -4644,7 +4646,8 @@ static int CmdHF14AMfAuth4(const char *Cmd) { // https://www.nxp.com/docs/en/application-note/AN10787.pdf static int CmdHF14AMfMAD(const char *Cmd) { - CLIParserInit("hf mf mad", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mf mad", "Checks and prints Mifare Application Directory (MAD)", "Usage:\n\thf mf mad -> shows MAD if exists\n" "\thf mf mad -a 03e1 -k ffffffffffff -b -> shows NDEF data if exists. read card with custom key and key B\n"); @@ -4657,17 +4660,17 @@ static int CmdHF14AMfMAD(const char *Cmd) { arg_lit0("bB", "keyb", "use key B for access printing sectors (by default: key A)"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool verbose = arg_get_lit(1); uint8_t aid[2] = {0}; int aidlen; - CLIGetHexWithReturn(2, aid, &aidlen); + CLIGetHexWithReturn(ctx, 2, aid, &aidlen); uint8_t key[6] = {0}; int keylen; - CLIGetHexWithReturn(3, key, &keylen); + CLIGetHexWithReturn(ctx, 3, key, &keylen); bool keyB = arg_get_lit(4); - CLIParserFree(); + CLIParserFree(ctx); if (aidlen != 2 && keylen > 0) { PrintAndLogEx(WARNING, "do not need a key without aid."); @@ -4734,7 +4737,8 @@ static int CmdHF14AMfMAD(const char *Cmd) { static int CmdHFMFNDEF(const char *Cmd) { - CLIParserInit("hf mf ndef", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mf ndef", "Prints NFC Data Exchange Format (NDEF)", "Usage:\n\thf mf ndef -> shows NDEF data\n" "\thf mf ndef -a 03e1 -k ffffffffffff -b -> shows NDEF data with custom AID, key and with key B\n"); @@ -4747,19 +4751,19 @@ static int CmdHFMFNDEF(const char *Cmd) { arg_lit0("bB", "keyb", "use key B for access sectors (by default: key A)"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool verbose = arg_get_lit(1); bool verbose2 = arg_get_lit(1) > 1; uint8_t aid[2] = {0}; int aidlen; - CLIGetHexWithReturn(2, aid, &aidlen); + CLIGetHexWithReturn(ctx, 2, aid, &aidlen); uint8_t key[6] = {0}; int keylen; - CLIGetHexWithReturn(3, key, &keylen); + CLIGetHexWithReturn(ctx, 3, key, &keylen); bool keyB = arg_get_lit(4); - CLIParserFree(); + CLIParserFree(ctx); uint16_t ndefAID = 0x03e1; if (aidlen == 2) @@ -4838,7 +4842,8 @@ static int CmdHFMFNDEF(const char *Cmd) { static int CmdHFMFPersonalize(const char *cmd) { - CLIParserInit("hf mf personalize", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mf personalize", "Personalize the UID of a Mifare Classic EV1 card. This is only possible if it is a 7Byte UID card and if it is not already personalized.", "Usage:\n\thf mf personalize UIDF0 -> double size UID according to ISO/IEC14443-3\n" "\thf mf personalize UIDF1 -> double size UID according to ISO/IEC14443-3, optional usage of selection process shortcut\n" @@ -4853,7 +4858,7 @@ static int CmdHFMFPersonalize(const char *cmd) { arg_str1(NULL, NULL, "<UIDF0|UIDF1|UIDF2|UIDF3>", "Personalization Option"), arg_param_end }; - CLIExecWithReturn(cmd, argtable, true); + CLIExecWithReturn(ctx, cmd, argtable, true); char keytypestr[2] = "a"; uint8_t keytype = 0x00; @@ -4863,7 +4868,7 @@ static int CmdHFMFPersonalize(const char *cmd) { if (res || (keytypestr[0] != 'a' && keytypestr[0] != 'b')) { PrintAndLogEx(ERR, "ERROR: not a valid key type. Key type must be A or B"); - CLIParserFree(); + CLIParserFree(ctx); return PM3_EINVARG; } if (keytypestr[0] == 'b') { @@ -4875,7 +4880,7 @@ static int CmdHFMFPersonalize(const char *cmd) { res = CLIParamHexToBuf(arg_get_str(2), key, 6, &key_len); if (res || (!res && key_len > 0 && key_len != 6)) { PrintAndLogEx(ERR, "ERROR: not a valid key. Key must be 12 hex digits"); - CLIParserFree(); + CLIParserFree(ctx); return PM3_EINVARG; } @@ -4888,7 +4893,7 @@ static int CmdHFMFPersonalize(const char *cmd) { if (res || (!res && opt_len > 0 && opt_len != 5) || (strncmp(pers_optionstr, "uidf0", 5) && strncmp(pers_optionstr, "uidf1", 5) && strncmp(pers_optionstr, "uidf2", 5) && strncmp(pers_optionstr, "uidf3", 5))) { PrintAndLogEx(ERR, "ERROR: invalid personalization option. Must be one of UIDF0, UIDF1, UIDF2, or UIDF3"); - CLIParserFree(); + CLIParserFree(ctx); return PM3_EINVARG; } if (!strncmp(pers_optionstr, "uidf0", 5)) { @@ -4901,7 +4906,7 @@ static int CmdHFMFPersonalize(const char *cmd) { pers_option = MIFARE_EV1_UIDF3; } - CLIParserFree(); + CLIParserFree(ctx); clearCommandBuffer(); diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index b1de9109e..ed5f50236 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -1782,7 +1782,8 @@ static void swap16(uint8_t *data) { static int CmdHF14ADesCreateApp(const char *Cmd) { - CLIParserInit("hf mfdes createaid", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfdes createaid", "Create Application ID", "Usage:\n\thf mfdes createaid -a 123456 -f 1111 -k 0E -l 2E -n Test\n" ); @@ -1796,7 +1797,7 @@ static int CmdHF14ADesCreateApp(const char *Cmd) { arg_str0("nN", "name", "<name>", "App ISO-4 Name (optional)"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); /* KeySetting 1 (AMK Setting): 0: Allow change master key 1: Free Directory list access without master key @@ -1835,12 +1836,12 @@ static int CmdHF14ADesCreateApp(const char *Cmd) { int keylen1 = 1; int keylen2 = 1; int namelen = 16; - CLIGetHexWithReturn(1, aid, &aidlength); - CLIGetHexWithReturn(2, fid, &fidlength); - CLIGetHexWithReturn(3, keysetting1, &keylen1); - CLIGetHexWithReturn(4, keysetting2, &keylen2); - CLIGetStrWithReturn(5, name, &namelen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 1, aid, &aidlength); + CLIGetHexWithReturn(ctx, 2, fid, &fidlength); + CLIGetHexWithReturn(ctx, 3, keysetting1, &keylen1); + CLIGetHexWithReturn(ctx, 4, keysetting2, &keylen2); + CLIGetStrWithReturn(ctx, 5, name, &namelen); + CLIParserFree(ctx); swap24(aid); swap16(fid); @@ -1908,7 +1909,8 @@ static int CmdHF14ADesCreateApp(const char *Cmd) { } static int CmdHF14ADesDeleteApp(const char *Cmd) { - CLIParserInit("hf mfdes deleteaid", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfdes deleteaid", "Delete Application ID", "Usage:\n\t-a aid (3 hex bytes, big endian)\n\n" "Example:\n\thf mfdes deleteaid -a 123456\n" @@ -1919,11 +1921,11 @@ static int CmdHF14ADesDeleteApp(const char *Cmd) { arg_strx0("aA", "aid", "<aid>", "App ID to delete"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); int aidlength = 3; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 1, aid, &aidlength); + CLIParserFree(ctx); swap24(aid); if (aidlength != 3) { PrintAndLogEx(ERR, "AID must have 3 bytes length."); @@ -1945,7 +1947,8 @@ static int CmdHF14ADesDeleteApp(const char *Cmd) { static int CmdHF14ADesClearRecordFile(const char *Cmd) { - CLIParserInit("hf mfdes clearrecord", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfdes clearrecord", "Clear record file", "Usage:\n\t" "hf mfdes clearrecord -a 123456 -n 01\n" @@ -1957,19 +1960,19 @@ static int CmdHF14ADesClearRecordFile(const char *Cmd) { arg_strx0("nN", "fileno", "<fileno>", "File Number (1 hex byte, 0x00 - 0x1F)"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); int aidlength = 0; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); + CLIGetHexWithReturn(ctx, 1, aid, &aidlength); int filenolen = 0; uint8_t _fileno[1] = {0}; - CLIGetHexWithReturn(2, _fileno, &filenolen); + CLIGetHexWithReturn(ctx, 2, _fileno, &filenolen); int fidlength = 0; uint8_t fid[2] = {0}; - CLIGetHexWithReturn(3, fid, &fidlength); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 3, fid, &fidlength); + CLIParserFree(ctx); if (filenolen != 1) { PrintAndLogEx(ERR, "Fileno must have 1 bytes length."); @@ -2005,7 +2008,8 @@ static int CmdHF14ADesClearRecordFile(const char *Cmd) { } static int CmdHF14ADesDeleteFile(const char *Cmd) { - CLIParserInit("hf mfdes deletefile", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfdes deletefile", "Delete File", "Usage:\n\t" "hf mfdes deletefile -a 123456 -n 01\n" @@ -2017,19 +2021,19 @@ static int CmdHF14ADesDeleteFile(const char *Cmd) { arg_strx0("nN", "fileno", "<fileno>", "File Number (1 hex byte, 0x00 - 0x1F)"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); int aidlength = 0; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); + CLIGetHexWithReturn(ctx, 1, aid, &aidlength); int filenolen = 0; uint8_t _fileno[1] = {0}; - CLIGetHexWithReturn(2, _fileno, &filenolen); + CLIGetHexWithReturn(ctx, 2, _fileno, &filenolen); int fidlength = 0; uint8_t fid[2] = {0}; - CLIGetHexWithReturn(3, fid, &fidlength); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 3, fid, &fidlength); + CLIParserFree(ctx); if (filenolen != 1) { PrintAndLogEx(ERR, "Fileno must have 1 bytes length."); @@ -2065,7 +2069,8 @@ static int CmdHF14ADesDeleteFile(const char *Cmd) { } static int CmdHF14ADesCreateFile(const char *Cmd) { - CLIParserInit("hf mfdes createfile", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfdes createfile", "Create Standard/Backup File", "Usage:" "\n\thf mfdes createfile -a 123456 -f 1111 -n 01 -c 0 -r EEEE -s 000100\n" @@ -2082,30 +2087,30 @@ static int CmdHF14ADesCreateFile(const char *Cmd) { arg_lit0("bB", "backup", "Create backupfile instead of standard file"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); int aidlength = 0; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); + CLIGetHexWithReturn(ctx, 1, aid, &aidlength); int filenolen = 0; uint8_t _fileno[1] = {0}; - CLIGetHexWithReturn(2, _fileno, &filenolen); + CLIGetHexWithReturn(ctx, 2, _fileno, &filenolen); int fidlength = 0; uint8_t fid[2] = {0}; - CLIGetHexWithReturn(3, fid, &fidlength); + CLIGetHexWithReturn(ctx, 3, fid, &fidlength); uint8_t comset = arg_get_int(4); int arlength = 0; uint8_t ar[2] = {0}; - CLIGetHexWithReturn(5, ar, &arlength); + CLIGetHexWithReturn(ctx, 5, ar, &arlength); int fsizelen = 0; uint8_t filesize[3] = {0}; - CLIGetHexWithReturn(6, filesize, &fsizelen); + CLIGetHexWithReturn(ctx, 6, filesize, &fsizelen); bool isbackup = arg_get_lit(7); - CLIParserFree(); + CLIParserFree(ctx); swap24(aid); swap16(fid); @@ -2175,7 +2180,8 @@ static int CmdHF14ADesCreateFile(const char *Cmd) { } static int CmdHF14ADesGetValueData(const char *Cmd) { - CLIParserInit("hf mfdes getvalue", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfdes getvalue", "Get value from value file", "Usage:" "\n\thf mfdes getvalue -a 123456 -n 03\n" @@ -2187,16 +2193,16 @@ static int CmdHF14ADesGetValueData(const char *Cmd) { arg_strx0("nN", "fileno", "<fileno>", "File Number (1 hex byte, 0x00 - 0x1F)"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); int aidlength = 0; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); + CLIGetHexWithReturn(ctx, 1, aid, &aidlength); int filenolen = 0; uint8_t _fileno[1] = {0}; - CLIGetHexWithReturn(2, _fileno, &filenolen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 2, _fileno, &filenolen); + CLIParserFree(ctx); if (filenolen != 1) { PrintAndLogEx(ERR, "File number is missing"); @@ -2242,7 +2248,8 @@ static int CmdHF14ADesGetValueData(const char *Cmd) { } static int CmdHF14ADesReadData(const char *Cmd) { - CLIParserInit("hf mfdes readdata", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfdes readdata", "Read data from File", "Usage:" "\n\thf mfdes readdata -a 123456 -n 01 -t 0 -o 000000 -l 000000\n" @@ -2257,25 +2264,25 @@ static int CmdHF14ADesReadData(const char *Cmd) { arg_int0("type", "type", "<type>", "File Type (0=Standard/Backup, 1=Record)"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); int aidlength = 0; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); + CLIGetHexWithReturn(ctx, 1, aid, &aidlength); int filenolen = 0; uint8_t _fileno[1] = {0}; - CLIGetHexWithReturn(2, _fileno, &filenolen); + CLIGetHexWithReturn(ctx, 2, _fileno, &filenolen); int offsetlength = 0; uint8_t offset[3] = {0}; - CLIGetHexWithReturn(3, offset, &offsetlength); + CLIGetHexWithReturn(ctx, 3, offset, &offsetlength); int flength = 0; uint8_t filesize[3] = {0}; - CLIGetHexWithReturn(4, filesize, &flength); + CLIGetHexWithReturn(ctx, 4, filesize, &flength); int type = arg_get_int(5); - CLIParserFree(); + CLIParserFree(ctx); if (type > 1) { PrintAndLogEx(ERR, "Invalid file type (0=Standard/Backup, 1=Record)"); @@ -2347,7 +2354,8 @@ static int CmdHF14ADesReadData(const char *Cmd) { } static int CmdHF14ADesChangeValue(const char *Cmd) { - CLIParserInit("hf mfdes changevalue", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfdes changevalue", "Change value (credit/limitedcredit/debit)", "Usage:" "\n\thf mfdes changevalue -a 123456 -n 03 -m 0 -d 00000001\n" @@ -2363,22 +2371,22 @@ static int CmdHF14ADesChangeValue(const char *Cmd) { }; mfdes_value_t value; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); int aidlength = 0; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); + CLIGetHexWithReturn(ctx, 1, aid, &aidlength); int filenolen = 0; uint8_t _fileno[1] = {0}; - CLIGetHexWithReturn(2, _fileno, &filenolen); + CLIGetHexWithReturn(ctx, 2, _fileno, &filenolen); value.fileno = _fileno[0]; int vlength = 0x0; - CLIGetHexWithReturn(3, value.value, &vlength); + CLIGetHexWithReturn(ctx, 3, value.value, &vlength); int mode = arg_get_int(4); - CLIParserFree(); + CLIParserFree(ctx); swap24(aid); if (mode > 2) { @@ -2439,7 +2447,8 @@ static int CmdHF14ADesChangeValue(const char *Cmd) { static int CmdHF14ADesWriteData(const char *Cmd) { - CLIParserInit("hf mfdes writedata", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfdes writedata", "Write data to File", "Usage:" "\n\thf mfdes writedata -a 123456 -n 01 -t 0 -o 000000 -d 3132333435363738\n" @@ -2455,19 +2464,19 @@ static int CmdHF14ADesWriteData(const char *Cmd) { arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); int aidlength = 0; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); + CLIGetHexWithReturn(ctx, 1, aid, &aidlength); int filenolen = 0; uint8_t _fileno[1] = {0}; - CLIGetHexWithReturn(2, _fileno, &filenolen); + CLIGetHexWithReturn(ctx, 2, _fileno, &filenolen); int offsetlength = 0; uint8_t offset[3] = {0}; - CLIGetHexWithReturn(3, offset, &offsetlength); + CLIGetHexWithReturn(ctx, 3, offset, &offsetlength); int dlength = 0xFFFF; uint8_t *data = (uint8_t *)calloc(dlength, sizeof(uint8_t)); @@ -2477,13 +2486,13 @@ static int CmdHF14ADesWriteData(const char *Cmd) { } if (CLIParamHexToBuf(arg_get_str(4), data, dlength, &dlength)) { free(data); - CLIParserFree(); + CLIParserFree(ctx); return PM3_ESOFT; } int type = arg_get_int(5); - CLIParserFree(); + CLIParserFree(ctx); swap24(aid); swap24(offset); @@ -2555,7 +2564,8 @@ static int CmdHF14ADesWriteData(const char *Cmd) { static int CmdHF14ADesCreateRecordFile(const char *Cmd) { - CLIParserInit("hf mfdes createrecordfile", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfdes createrecordfile", "Create Linear/Cyclic Record File", "Usage:" "\n\thf mfdes createrecordfile -a 123456 -f 1122 -n 02 -c 0 -r EEEE -s 000010 -m 000005\n" @@ -2573,34 +2583,34 @@ static int CmdHF14ADesCreateRecordFile(const char *Cmd) { arg_lit0("bB", "cyclic", "Create cyclic record file instead of linear record file"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); int aidlength = 0; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); + CLIGetHexWithReturn(ctx, 1, aid, &aidlength); int filenolen = 0; uint8_t _fileno[1] = {0}; - CLIGetHexWithReturn(2, _fileno, &filenolen); + CLIGetHexWithReturn(ctx, 2, _fileno, &filenolen); int fidlength = 0; uint8_t fid[2] = {0}; - CLIGetHexWithReturn(3, fid, &fidlength); + CLIGetHexWithReturn(ctx, 3, fid, &fidlength); uint8_t comset = arg_get_int(4); int arlength = 0; uint8_t ar[2] = {0}; - CLIGetHexWithReturn(5, ar, &arlength); + CLIGetHexWithReturn(ctx, 5, ar, &arlength); int rsizelen = 0; uint8_t recordsize[3] = {0}; - CLIGetHexWithReturn(6, recordsize, &rsizelen); + CLIGetHexWithReturn(ctx, 6, recordsize, &rsizelen); int msizelen = 0; uint8_t maxnumrecords[3] = {0}; - CLIGetHexWithReturn(7, maxnumrecords, &msizelen); + CLIGetHexWithReturn(ctx, 7, maxnumrecords, &msizelen); bool cyclic = arg_get_lit(8); - CLIParserFree(); + CLIParserFree(ctx); swap24(aid); swap16(fid); @@ -2685,7 +2695,8 @@ static int CmdHF14ADesCreateRecordFile(const char *Cmd) { } static int CmdHF14ADesCreateValueFile(const char *Cmd) { - CLIParserInit("hf mfdes createvaluefile", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfdes createvaluefile", "Create Value File", "Usage:" "\n\thf mfdes createvaluefile -a 123456 -n 03 -c 0 -r EEEE -l 00000000 -u 00002000 -v 00000001 -m 02\n" @@ -2703,37 +2714,37 @@ static int CmdHF14ADesCreateValueFile(const char *Cmd) { arg_strx0("mM", "limitcredit", "<limitcredit>", "Limited Credit enabled (1 hex byte [Bit 0=LimitedCredit, 1=FreeValue])"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); int aidlength = 0; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); + CLIGetHexWithReturn(ctx, 1, aid, &aidlength); int filenolen = 0; uint8_t _fileno[1] = {0}; - CLIGetHexWithReturn(2, _fileno, &filenolen); + CLIGetHexWithReturn(ctx, 2, _fileno, &filenolen); uint8_t comset = arg_get_int(3); int arlength = 0; uint8_t ar[2] = {0}; - CLIGetHexWithReturn(4, ar, &arlength); + CLIGetHexWithReturn(ctx, 4, ar, &arlength); int lllen = 0; uint8_t lowerlimit[4] = {0}; - CLIGetHexWithReturn(5, lowerlimit, &lllen); + CLIGetHexWithReturn(ctx, 5, lowerlimit, &lllen); int ullen = 0; uint8_t upperlimit[4] = {0}; - CLIGetHexWithReturn(6, upperlimit, &ullen); + CLIGetHexWithReturn(ctx, 6, upperlimit, &ullen); int vllen = 0; uint8_t value[4] = {0}; - CLIGetHexWithReturn(7, value, &vllen); + CLIGetHexWithReturn(ctx, 7, value, &vllen); int limitedlen = 0; uint8_t limited[1] = {0}; - CLIGetHexWithReturn(8, limited, &limitedlen); + CLIGetHexWithReturn(ctx, 8, limited, &limitedlen); - CLIParserFree(); + CLIParserFree(ctx); swap24(aid); swap32(lowerlimit); @@ -2813,7 +2824,8 @@ static int CmdHF14ADesCreateValueFile(const char *Cmd) { } static int CmdHF14ADesFormatPICC(const char *Cmd) { - CLIParserInit("hf mfdes formatpicc", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfdes formatpicc", "Formats MIFARE DESFire PICC to factory state", "Usage:\n\t-k PICC key (8 bytes)\n\n" "Example:\n\thf mfdes formatpicc -k 0000000000000000\n" @@ -2824,12 +2836,12 @@ static int CmdHF14ADesFormatPICC(const char *Cmd) { arg_str0("kK", "key", "<Key>", "Key for checking (HEX 16 bytes)"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); uint8_t key[8] = {0}; int keylen = 8; - CLIGetHexWithReturn(1, key, &keylen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 1, key, &keylen); + CLIParserFree(ctx); if ((keylen < 8) || (keylen > 8)) { PrintAndLogEx(ERR, "Specified key must have 8 bytes length"); @@ -3419,7 +3431,8 @@ static int CmdHF14ADesAuth(const char *Cmd) { uint8_t keylength = 8; bool usedefaultkey = false; - CLIParserInit("hf mfdes auth", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfdes auth", "Authenticates Mifare DESFire using Key", "Usage:" "\n\thf mfdes auth -m 3 -t 4 -a 808301 -n 0 -k 00000000000000000000000000000000 (AES)" @@ -3436,21 +3449,21 @@ static int CmdHF14ADesAuth(const char *Cmd) { arg_str0("kK", "key", "<Key>", "Key for checking (HEX 8-24 bytes)"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); uint8_t cmdAuthMode = arg_get_int_def(1, 0); uint8_t cmdAuthAlgo = arg_get_int_def(2, 0); int aidlength = 3; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(3, aid, &aidlength); + CLIGetHexWithReturn(ctx, 3, aid, &aidlength); swap24(aid); uint8_t cmdKeyNo = arg_get_int_def(4, 0); uint8_t key[24] = {0}; int keylen = 0; - CLIGetHexWithReturn(5, key, &keylen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 5, key, &keylen); + CLIParserFree(ctx); if (keylen == 0) { usedefaultkey = true; @@ -3860,7 +3873,8 @@ static int CmdHF14aDesChk(const char *Cmd) { uint32_t k3kkeyListLen = 0; uint8_t foundKeys[4][0xE][24 + 1] = {{{0}}}; - CLIParserInit("hf mfdes chk", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfdes chk", "Checks keys with Mifare Desfire card.", "Usage:\n" " hf mfdes chk -a 123456 -k 000102030405060708090a0b0c0d0e0f -> check key on aid 0x123456\n" @@ -3881,15 +3895,15 @@ static int CmdHF14aDesChk(const char *Cmd) { arg_lit0("vV", "verbose", "Verbose mode."), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); int aidlength = 0; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); + CLIGetHexWithReturn(ctx, 1, aid, &aidlength); swap24(aid); uint8_t vkey[16] = {0}; int vkeylen = 0; - CLIGetHexWithReturn(2, vkey, &vkeylen); + CLIGetHexWithReturn(ctx, 2, vkey, &vkeylen); if (vkeylen > 0) { if (vkeylen == 8) { @@ -3903,7 +3917,7 @@ static int CmdHF14aDesChk(const char *Cmd) { k3kkeyListLen++; } else { PrintAndLogEx(ERR, "Specified key must have 8, 16 or 24 bytes length."); - CLIParserFree(); + CLIParserFree(ctx); return PM3_EINVARG; } } @@ -3912,7 +3926,7 @@ static int CmdHF14aDesChk(const char *Cmd) { int dict_filenamelen = 0; if (CLIParamStrToBuf(arg_get_str(3), dict_filename, FILE_PATH_SIZE, &dict_filenamelen)) { PrintAndLogEx(FAILED, "File name too long or invalid."); - CLIParserFree(); + CLIParserFree(ctx); return PM3_EINVARG; } @@ -3921,26 +3935,26 @@ static int CmdHF14aDesChk(const char *Cmd) { if (pattern1b && pattern2b) { PrintAndLogEx(ERR, "Pattern search mode must be 2-byte or 1-byte only."); - CLIParserFree(); + CLIParserFree(ctx); return PM3_EINVARG; } if (dict_filenamelen && (pattern1b || pattern2b)) { PrintAndLogEx(ERR, "Pattern search mode and dictionary mode can't be used in one command."); - CLIParserFree(); + CLIParserFree(ctx); return PM3_EINVARG; } uint32_t startPattern = 0x0000; uint8_t vpattern[2]; int vpatternlen = 0; - CLIGetHexWithReturn(6, vpattern, &vpatternlen); + CLIGetHexWithReturn(ctx, 6, vpattern, &vpatternlen); if (vpatternlen > 0) { if (vpatternlen > 0 && vpatternlen <= 2) { startPattern = (vpattern[0] << 8) + vpattern[1]; } else { PrintAndLogEx(ERR, "Pattern must be 2-byte length."); - CLIParserFree(); + CLIParserFree(ctx); return PM3_EINVARG; } if (!pattern2b) @@ -3951,14 +3965,14 @@ static int CmdHF14aDesChk(const char *Cmd) { int jsonnamelen = 0; if (CLIParamStrToBuf(arg_get_str(7), jsonname, sizeof(jsonname), &jsonnamelen)) { PrintAndLogEx(ERR, "Invalid json name."); - CLIParserFree(); + CLIParserFree(ctx); return PM3_EINVARG; } jsonname[jsonnamelen] = 0; bool verbose = arg_get_lit(8); - CLIParserFree(); + CLIParserFree(ctx); // 1-byte pattern search mode if (pattern1b) { diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 12fbce4d7..7cdeb5eb1 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -424,7 +424,8 @@ static int CmdHFMFPWritePerso(const char *Cmd) { uint8_t key[64] = {0}; int keyLen = 0; - CLIParserInit("hf mfp wrp", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfp wrp", "Executes Write Perso command. Can be used in SL0 mode only.", "Usage:\n\thf mfp wrp 4000 000102030405060708090a0b0c0d0e0f -> write key (00..0f) to key number 4000 \n" "\thf mfp wrp 4000 -> write default key(0xff..0xff) to key number 4000"); @@ -436,12 +437,12 @@ static int CmdHFMFPWritePerso(const char *Cmd) { arg_strx0(NULL, NULL, "<HEX key (16b)>", NULL), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool verbose = arg_get_lit(1); - CLIGetHexWithReturn(2, keyNum, &keyNumLen); - CLIGetHexWithReturn(3, key, &keyLen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 2, keyNum, &keyNumLen); + CLIGetHexWithReturn(ctx, 3, key, &keyLen); + CLIParserFree(ctx); mfpSetVerboseMode(verbose); @@ -490,7 +491,8 @@ static int CmdHFMFPInitPerso(const char *Cmd) { uint8_t data[250] = {0}; int datalen = 0; - CLIParserInit("hf mfp initp", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfp initp", "Executes Write Perso command for all card's keys. Can be used in SL0 mode only.", "Usage:\n\thf mfp initp 000102030405060708090a0b0c0d0e0f -> fill all the keys with key (00..0f)\n" "\thf mfp initp -vv -> fill all the keys with default key(0xff..0xff) and show all the data exchange"); @@ -501,12 +503,12 @@ static int CmdHFMFPInitPerso(const char *Cmd) { arg_strx0(NULL, NULL, "<HEX key (16b)>", NULL), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool verbose = arg_get_lit(1); bool verbose2 = arg_get_lit(1) > 1; - CLIGetHexWithReturn(2, key, &keyLen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 2, key, &keyLen); + CLIParserFree(ctx); if (keyLen && keyLen != 16) { PrintAndLogEx(ERR, "Key length must be 16 bytes instead of: %d", keyLen); @@ -557,7 +559,8 @@ static int CmdHFMFPInitPerso(const char *Cmd) { } static int CmdHFMFPCommitPerso(const char *Cmd) { - CLIParserInit("hf mfp commitp", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfp commitp", "Executes Commit Perso command. Can be used in SL0 mode only.", "Usage:\n\thf mfp commitp -> \n"); @@ -567,10 +570,10 @@ static int CmdHFMFPCommitPerso(const char *Cmd) { arg_int0(NULL, NULL, "SL mode", NULL), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool verbose = arg_get_lit(1); - CLIParserFree(); + CLIParserFree(ctx); mfpSetVerboseMode(verbose); @@ -603,7 +606,8 @@ static int CmdHFMFPAuth(const char *Cmd) { uint8_t key[250] = {0}; int keylen = 0; - CLIParserInit("hf mfp auth", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfp auth", "Executes AES authentication command for Mifare Plus card", "Usage:\n\thf mfp auth 4000 000102030405060708090a0b0c0d0e0f -> executes authentication\n" "\thf mfp auth 9003 FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF -v -> executes authentication and shows all the system data\n"); @@ -615,12 +619,12 @@ static int CmdHFMFPAuth(const char *Cmd) { arg_str1(NULL, NULL, "<Key Value (HEX 16 bytes)>", NULL), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool verbose = arg_get_lit(1); - CLIGetHexWithReturn(2, keyn, &keynlen); - CLIGetHexWithReturn(3, key, &keylen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 2, keyn, &keynlen); + CLIGetHexWithReturn(ctx, 3, key, &keylen); + CLIParserFree(ctx); if (keynlen != 2) { PrintAndLogEx(ERR, "ERROR: <Key Num> must be 2 bytes long instead of: %d", keynlen); @@ -640,7 +644,8 @@ static int CmdHFMFPRdbl(const char *Cmd) { uint8_t key[250] = {0}; int keylen = 0; - CLIParserInit("hf mfp rdbl", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfp rdbl", "Reads several blocks from Mifare Plus card.", "Usage:\n\thf mfp rdbl 0 000102030405060708090a0b0c0d0e0f -> executes authentication and read block 0 data\n" "\thf mfp rdbl 1 -v -> executes authentication and shows sector 1 data with default key 0xFF..0xFF and some additional data\n"); @@ -655,15 +660,15 @@ static int CmdHFMFPRdbl(const char *Cmd) { arg_str0(NULL, NULL, "<Key Value (HEX 16 bytes)>", NULL), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); bool verbose = arg_get_lit(1); int blocksCount = arg_get_int_def(2, 1); bool keyB = arg_get_lit(3); int plain = arg_get_lit(4); uint32_t blockn = arg_get_int(5); - CLIGetHexWithReturn(6, key, &keylen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 6, key, &keylen); + CLIParserFree(ctx); mfpSetVerboseMode(verbose); @@ -752,7 +757,8 @@ static int CmdHFMFPRdsc(const char *Cmd) { uint8_t key[250] = {0}; int keylen = 0; - CLIParserInit("hf mfp rdsc", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfp rdsc", "Reads one sector from Mifare Plus card.", "Usage:\n\thf mfp rdsc 0 000102030405060708090a0b0c0d0e0f -> executes authentication and read sector 0 data\n" "\thf mfp rdsc 1 -v -> executes authentication and shows sector 1 data with default key 0xFF..0xFF and some additional data\n"); @@ -766,14 +772,14 @@ static int CmdHFMFPRdsc(const char *Cmd) { arg_str0(NULL, NULL, "<Key Value (HEX 16 bytes)>", NULL), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); bool verbose = arg_get_lit(1); bool keyB = arg_get_lit(2); bool plain = arg_get_lit(3); uint32_t sectorNum = arg_get_int(4); - CLIGetHexWithReturn(5, key, &keylen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 5, key, &keylen); + CLIParserFree(ctx); mfpSetVerboseMode(verbose); @@ -850,7 +856,8 @@ static int CmdHFMFPWrbl(const char *Cmd) { uint8_t datain[250] = {0}; int datainlen = 0; - CLIParserInit("hf mfp wrbl", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfp wrbl", "Writes one block to Mifare Plus card.", "Usage:\n\thf mfp wrbl 1 ff0000000000000000000000000000ff 000102030405060708090a0b0c0d0e0f -> writes block 1 data\n" "\thf mfp wrbl 2 ff0000000000000000000000000000ff -v -> writes block 2 data with default key 0xFF..0xFF and some additional data\n"); @@ -864,14 +871,14 @@ static int CmdHFMFPWrbl(const char *Cmd) { arg_str0(NULL, NULL, "<Key (HEX 16 bytes)>", NULL), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); bool verbose = arg_get_lit(1); bool keyB = arg_get_lit(2); uint32_t blockNum = arg_get_int(3); - CLIGetHexWithReturn(4, datain, &datainlen); - CLIGetHexWithReturn(5, key, &keylen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 4, datain, &datainlen); + CLIGetHexWithReturn(ctx, 5, key, &keylen); + CLIParserFree(ctx); mfpSetVerboseMode(verbose); @@ -1047,7 +1054,8 @@ static int CmdHFMFPChk(const char *Cmd) { uint32_t keyListLen = 0; uint8_t foundKeys[2][64][AES_KEY_LEN + 1] = {{{0}}}; - CLIParserInit("hf mfp chk", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfp chk", "Checks keys with Mifare Plus card.", "Usage:\n" " hf mfp chk -k 000102030405060708090a0b0c0d0e0f -> check key on sector 0 as key A and B\n" @@ -1071,7 +1079,7 @@ static int CmdHFMFPChk(const char *Cmd) { arg_lit0("vV", "verbose", "verbose mode."), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool keyA = arg_get_lit(1); bool keyB = arg_get_lit(2); @@ -1080,14 +1088,14 @@ static int CmdHFMFPChk(const char *Cmd) { uint8_t vkey[16] = {0}; int vkeylen = 0; - CLIGetHexWithReturn(5, vkey, &vkeylen); + CLIGetHexWithReturn(ctx, 5, vkey, &vkeylen); if (vkeylen > 0) { if (vkeylen == 16) { memcpy(&keyList[keyListLen], vkey, 16); keyListLen++; } else { PrintAndLogEx(ERR, "Specified key must have 16 bytes length."); - CLIParserFree(); + CLIParserFree(ctx); return PM3_EINVARG; } } @@ -1096,7 +1104,7 @@ static int CmdHFMFPChk(const char *Cmd) { int dict_filenamelen = 0; if (CLIParamStrToBuf(arg_get_str(6), dict_filename, FILE_PATH_SIZE, &dict_filenamelen)) { PrintAndLogEx(FAILED, "File name too long or invalid."); - CLIParserFree(); + CLIParserFree(ctx); return PM3_EINVARG; } @@ -1105,26 +1113,26 @@ static int CmdHFMFPChk(const char *Cmd) { if (pattern1b && pattern2b) { PrintAndLogEx(ERR, "Pattern search mode must be 2-byte or 1-byte only."); - CLIParserFree(); + CLIParserFree(ctx); return PM3_EINVARG; } if (dict_filenamelen && (pattern1b || pattern2b)) { PrintAndLogEx(ERR, "Pattern search mode and dictionary mode can't be used in one command."); - CLIParserFree(); + CLIParserFree(ctx); return PM3_EINVARG; } uint32_t startPattern = 0x0000; uint8_t vpattern[2]; int vpatternlen = 0; - CLIGetHexWithReturn(9, vpattern, &vpatternlen); + CLIGetHexWithReturn(ctx, 9, vpattern, &vpatternlen); if (vpatternlen > 0) { if (vpatternlen > 0 && vpatternlen <= 2) { startPattern = (vpattern[0] << 8) + vpattern[1]; } else { PrintAndLogEx(ERR, "Pattern must be 2-byte length."); - CLIParserFree(); + CLIParserFree(ctx); return PM3_EINVARG; } if (!pattern2b) @@ -1135,14 +1143,14 @@ static int CmdHFMFPChk(const char *Cmd) { int jsonnamelen = 0; if (CLIParamStrToBuf(arg_get_str(10), jsonname, sizeof(jsonname), &jsonnamelen)) { PrintAndLogEx(ERR, "Invalid json name."); - CLIParserFree(); + CLIParserFree(ctx); return PM3_EINVARG; } jsonname[jsonnamelen] = 0; bool verbose = arg_get_lit(11); - CLIParserFree(); + CLIParserFree(ctx); uint8_t startKeyAB = 0; uint8_t endKeyAB = 1; @@ -1277,7 +1285,8 @@ static int CmdHFMFPChk(const char *Cmd) { static int CmdHFMFPMAD(const char *Cmd) { - CLIParserInit("hf mfp mad", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfp mad", "Checks and prints Mifare Application Directory (MAD)", "Usage:\n\thf mfp mad -> shows MAD if exists\n" "\thf mfp mad -a 03e1 -k d3f7d3f7d3f7d3f7d3f7d3f7d3f7d3f7 -> shows NDEF data if exists\n"); @@ -1290,18 +1299,18 @@ static int CmdHFMFPMAD(const char *Cmd) { arg_lit0("bB", "keyb", "use key B for access printing sectors (by default: key A)"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool verbose = arg_get_lit(1); uint8_t aid[2] = {0}; int aidlen; - CLIGetHexWithReturn(2, aid, &aidlen); + CLIGetHexWithReturn(ctx, 2, aid, &aidlen); uint8_t key[16] = {0}; int keylen; - CLIGetHexWithReturn(3, key, &keylen); + CLIGetHexWithReturn(ctx, 3, key, &keylen); bool keyB = arg_get_lit(4); - CLIParserFree(); + CLIParserFree(ctx); if (aidlen != 2 && keylen > 0) { PrintAndLogEx(WARNING, "do not need a key without aid."); @@ -1371,7 +1380,8 @@ static int CmdHFMFPMAD(const char *Cmd) { static int CmdHFMFPNDEF(const char *Cmd) { - CLIParserInit("hf mfp ndef", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfp ndef", "Prints NFC Data Exchange Format (NDEF)", "Usage:\n\thf mfp ndef -> shows NDEF data\n" "\thf mfp ndef -a 03e1 -k d3f7d3f7d3f7d3f7d3f7d3f7d3f7d3f7 -> shows NDEF data with custom AID and key\n"); @@ -1384,19 +1394,19 @@ static int CmdHFMFPNDEF(const char *Cmd) { arg_lit0("bB", "keyb", "use key B for access sectors (by default: key A)"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool verbose = arg_get_lit(1); bool verbose2 = arg_get_lit(1) > 1; uint8_t aid[2] = {0}; int aidlen; - CLIGetHexWithReturn(2, aid, &aidlen); + CLIGetHexWithReturn(ctx, 2, aid, &aidlen); uint8_t key[16] = {0}; int keylen; - CLIGetHexWithReturn(3, key, &keylen); + CLIGetHexWithReturn(ctx, 3, key, &keylen); bool keyB = arg_get_lit(4); - CLIParserFree(); + CLIParserFree(ctx); uint16_t ndefAID = 0x03e1; if (aidlen == 2) diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index b35a27e49..dd812dd79 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -2915,7 +2915,8 @@ static int CmdHF14MfuNDEF(const char *Cmd) { uint8_t *p_key = key; uint8_t pack[4] = {0, 0, 0, 0}; - CLIParserInit("hf mfu ndef", + CLIParserContext *ctx; + CLIParserInit(&ctx, "hf mfu ndef", "Prints NFC Data Exchange Format (NDEF)", "Usage:\n\thf mfu ndef -> shows NDEF data\n" "\thf mfu ndef -k ffffffff -> shows NDEF data with key\n"); @@ -2926,10 +2927,10 @@ static int CmdHF14MfuNDEF(const char *Cmd) { arg_lit0("lL", "key", "(optional) swap entered key's endianness"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); - CLIGetHexWithReturn(1, key, &keylen); + CLIExecWithReturn(ctx, Cmd, argtable, true); + CLIGetHexWithReturn(ctx, 1, key, &keylen); swapEndian = arg_get_lit(2); - CLIParserFree(); + CLIParserFree(ctx); switch (keylen) { case 0: diff --git a/client/src/cmdlfindala.c b/client/src/cmdlfindala.c index d93f152fa..d9d24bfdd 100644 --- a/client/src/cmdlfindala.c +++ b/client/src/cmdlfindala.c @@ -560,7 +560,8 @@ static int CmdIndalaClone(const char *Cmd) { uint8_t fc = 0; uint16_t cn = 0; - CLIParserInit("lf indala clone", + CLIParserContext *ctx; + CLIParserInit(&ctx, "lf indala clone", "clone INDALA tag to T55x7 (or to q5/T5555)", "Examples:\n" "\tlf indala clone --heden 888\n" @@ -578,12 +579,12 @@ static int CmdIndalaClone(const char *Cmd) { arg_int0("", "cn", "<decimal>", "Cardnumber (26 bit format)"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); is_long_uid = arg_get_lit(1); // raw param - CLIGetHexWithReturn(3, data, &datalen); + CLIGetHexWithReturn(ctx, 3, data, &datalen); is_t5555 = arg_get_lit(4); @@ -599,7 +600,7 @@ static int CmdIndalaClone(const char *Cmd) { got_26 = (fc != 0 && cn != 0); } - CLIParserFree(); + CLIParserFree(ctx); if (is_long_uid) { // 224 BIT UID diff --git a/client/src/cmdlfmotorola.c b/client/src/cmdlfmotorola.c index 3db82a0be..fc2156c1a 100644 --- a/client/src/cmdlfmotorola.c +++ b/client/src/cmdlfmotorola.c @@ -150,7 +150,8 @@ static int CmdMotorolaClone(const char *Cmd) { uint8_t data[8]; int datalen = 0; - CLIParserInit("lf indala clone", + CLIParserContext *ctx; + CLIParserInit(&ctx, "lf indala clone", "Enables cloning of Motorola card with specified uid onto T55x7\n" "defaults to 64.\n", "\n" @@ -163,9 +164,9 @@ static int CmdMotorolaClone(const char *Cmd) { arg_strx1(NULL, NULL, "<uid (hex)>", NULL), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); - CLIGetHexWithReturn(1, data, &datalen); - CLIParserFree(); + CLIExecWithReturn(ctx, Cmd, argtable, false); + CLIGetHexWithReturn(ctx, 1, data, &datalen); + CLIParserFree(ctx); //TODO add selection of chip for Q5 or T55x7 // data[0] = T5555_SET_BITRATE(32 | T5555_MODULATION_PSK1 | 2 << T5555_MAXBLOCK_SHIFT; diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 347c7916a..4b364c85c 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -68,7 +68,8 @@ static int CmdEMVSelect(const char *Cmd) { uint8_t data[APDU_AID_LEN] = {0}; int datalen = 0; - CLIParserInit("emv select", + CLIParserContext *ctx; + CLIParserInit(&ctx, "emv select", "Executes select applet command", "Usage:\n\temv select -s a00000000101 -> select card, select applet\n\temv select -st a00000000101 -> select card, select applet, show result in TLV\n"); @@ -82,7 +83,7 @@ static int CmdEMVSelect(const char *Cmd) { arg_strx0(NULL, NULL, "<HEX applet AID>", NULL), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool activateField = arg_get_lit(1); bool leaveSignalON = arg_get_lit(2); @@ -92,8 +93,8 @@ static int CmdEMVSelect(const char *Cmd) { if (arg_get_lit(5)) channel = ECC_CONTACT; PrintChannel(channel); - CLIGetHexWithReturn(6, data, &datalen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 6, data, &datalen); + CLIParserFree(ctx); SetAPDULogging(APDULogging); @@ -117,7 +118,8 @@ static int CmdEMVSelect(const char *Cmd) { static int CmdEMVSearch(const char *Cmd) { - CLIParserInit("emv search", + CLIParserContext *ctx; + CLIParserInit(&ctx, "emv search", "Tries to select all applets from applet list:\n", "Usage:\n\temv search -s -> select card and search\n\temv search -st -> select card, search and show result in TLV\n"); @@ -130,7 +132,7 @@ static int CmdEMVSearch(const char *Cmd) { arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. Contactless interface set by default."), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool activateField = arg_get_lit(1); bool leaveSignalON = arg_get_lit(2); @@ -140,7 +142,7 @@ static int CmdEMVSearch(const char *Cmd) { if (arg_get_lit(5)) channel = ECC_CONTACT; PrintChannel(channel); - CLIParserFree(); + CLIParserFree(ctx); SetAPDULogging(APDULogging); @@ -167,7 +169,8 @@ static int CmdEMVSearch(const char *Cmd) { static int CmdEMVPPSE(const char *Cmd) { - CLIParserInit("emv pse", + CLIParserContext *ctx; + CLIParserInit(&ctx, "emv pse", "Executes PSE/PPSE select command. It returns list of applet on the card:\n", "Usage:\n\temv pse -s1 -> select, get pse\n\temv pse -st2 -> select, get ppse, show result in TLV\n"); @@ -182,7 +185,7 @@ static int CmdEMVPPSE(const char *Cmd) { arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. Contactless interface set by default."), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool activateField = arg_get_lit(1); bool leaveSignalON = arg_get_lit(2); @@ -197,7 +200,7 @@ static int CmdEMVPPSE(const char *Cmd) { if (arg_get_lit(7)) channel = ECC_CONTACT; PrintChannel(channel); - CLIParserFree(); + CLIParserFree(ctx); SetAPDULogging(APDULogging); @@ -223,7 +226,8 @@ static int CmdEMVGPO(const char *Cmd) { uint8_t data[APDU_RES_LEN] = {0}; int datalen = 0; - CLIParserInit("emv gpo", + CLIParserContext *ctx; + CLIParserInit(&ctx, "emv gpo", "Executes Get Processing Options command. It returns data in TLV format (0x77 - format2) or plain format (0x80 - format1).\nNeeds a EMV applet to be selected.", "Usage:\n\temv gpo -k -> execute GPO\n" "\temv gpo -t 01020304 -> execute GPO with 4-byte PDOL data, show result in TLV\n" @@ -240,7 +244,7 @@ static int CmdEMVGPO(const char *Cmd) { arg_strx0(NULL, NULL, "<HEX PDOLdata/PDOL>", NULL), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool leaveSignalON = arg_get_lit(1); bool paramsLoadFromFile = arg_get_lit(2); @@ -251,8 +255,8 @@ static int CmdEMVGPO(const char *Cmd) { if (arg_get_lit(6)) channel = ECC_CONTACT; PrintChannel(channel); - CLIGetHexWithReturn(7, data, &datalen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 7, data, &datalen); + CLIParserFree(ctx); SetAPDULogging(APDULogging); @@ -331,7 +335,8 @@ static int CmdEMVReadRecord(const char *Cmd) { uint8_t data[APDU_RES_LEN] = {0}; int datalen = 0; - CLIParserInit("emv readrec", + CLIParserContext *ctx; + CLIParserInit(&ctx, "emv readrec", "Executes Read Record command. It returns data in TLV format.\nNeeds a bank applet to be selected and sometimes needs GPO to be executed.", "Usage:\n\temv readrec -k 0101 -> read file SFI=01, SFIrec=01\n\temv readrec -kt 0201-> read file 0201 and show result in TLV\n"); @@ -344,7 +349,7 @@ static int CmdEMVReadRecord(const char *Cmd) { arg_strx1(NULL, NULL, "<SFI 1byte HEX><SFIrecord 1byte HEX>", NULL), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool leaveSignalON = arg_get_lit(1); bool APDULogging = arg_get_lit(2); @@ -353,8 +358,8 @@ static int CmdEMVReadRecord(const char *Cmd) { if (arg_get_lit(4)) channel = ECC_CONTACT; PrintChannel(channel); - CLIGetHexWithReturn(5, data, &datalen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 5, data, &datalen); + CLIParserFree(ctx); if (datalen != 2) { PrintAndLogEx(ERR, "Command needs to have 2 bytes of data"); @@ -386,7 +391,8 @@ static int CmdEMVAC(const char *Cmd) { uint8_t data[APDU_RES_LEN] = {0}; int datalen = 0; - CLIParserInit("emv genac", + CLIParserContext *ctx; + CLIParserInit(&ctx, "emv genac", "Generate Application Cryptogram command. It returns data in TLV format .\nNeeds a EMV applet to be selected and GPO to be executed.", "Usage:\n\temv genac -k 0102 -> generate AC with 2-byte CDOLdata and keep field ON after command\n" "\temv genac -t 01020304 -> generate AC with 4-byte CDOL data, show result in TLV\n" @@ -406,7 +412,7 @@ static int CmdEMVAC(const char *Cmd) { arg_strx1(NULL, NULL, "<HEX CDOLdata/CDOL>", NULL), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); bool leaveSignalON = arg_get_lit(1); bool trTypeCDA = arg_get_lit(2); @@ -436,8 +442,8 @@ static int CmdEMVAC(const char *Cmd) { if (arg_get_lit(8)) channel = ECC_CONTACT; PrintChannel(channel); - CLIGetHexWithReturn(9, data, &datalen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 9, data, &datalen); + CLIParserFree(ctx); SetAPDULogging(APDULogging); @@ -505,7 +511,8 @@ static int CmdEMVAC(const char *Cmd) { static int CmdEMVGenerateChallenge(const char *Cmd) { - CLIParserInit("emv challenge", + CLIParserContext *ctx; + CLIParserInit(&ctx, "emv challenge", "Executes Generate Challenge command. It returns 4 or 8-byte random number from card.\nNeeds a EMV applet to be selected and GPO to be executed.", "Usage:\n\temv challenge -> get challenge\n\temv challenge -k -> get challenge, keep fileld ON\n"); @@ -516,7 +523,7 @@ static int CmdEMVGenerateChallenge(const char *Cmd) { arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. Contactless interface set by default."), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool leaveSignalON = arg_get_lit(1); bool APDULogging = arg_get_lit(2); @@ -524,7 +531,7 @@ static int CmdEMVGenerateChallenge(const char *Cmd) { if (arg_get_lit(3)) channel = ECC_CONTACT; PrintChannel(channel); - CLIParserFree(); + CLIParserFree(ctx); SetAPDULogging(APDULogging); @@ -552,7 +559,8 @@ static int CmdEMVInternalAuthenticate(const char *Cmd) { uint8_t data[APDU_RES_LEN] = {0}; int datalen = 0; - CLIParserInit("emv intauth", + CLIParserContext *ctx; + CLIParserInit(&ctx, "emv intauth", "Generate Internal Authenticate command. Usually needs 4-byte random number. It returns data in TLV format .\n" "Needs a EMV applet to be selected and GPO to be executed.", @@ -572,7 +580,7 @@ static int CmdEMVInternalAuthenticate(const char *Cmd) { arg_strx1(NULL, NULL, "<HEX DDOLdata/DDOL>", NULL), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); bool leaveSignalON = arg_get_lit(1); bool paramsLoadFromFile = arg_get_lit(2); @@ -583,8 +591,8 @@ static int CmdEMVInternalAuthenticate(const char *Cmd) { if (arg_get_lit(6)) channel = ECC_CONTACT; PrintChannel(channel); - CLIGetHexWithReturn(7, data, &datalen); - CLIParserFree(); + CLIGetHexWithReturn(ctx, 7, data, &datalen); + CLIParserFree(ctx); SetAPDULogging(APDULogging); @@ -782,7 +790,8 @@ static int CmdEMVExec(const char *Cmd) { struct tlvdb *tlvRoot = NULL; struct tlv *pdol_data_tlv = NULL; - CLIParserInit("emv exec", + CLIParserContext *ctx; + CLIParserInit(&ctx, "emv exec", "Executes EMV contactless transaction", "Usage:\n" "\temv exec -sat -> select card, execute MSD transaction, show APDU and TLV\n" @@ -803,7 +812,7 @@ static int CmdEMVExec(const char *Cmd) { arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. Contactless interface set by default."), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool activateField = arg_get_lit(1); bool showAPDU = arg_get_lit(2); @@ -825,7 +834,7 @@ static int CmdEMVExec(const char *Cmd) { channel = ECC_CONTACT; PrintChannel(channel); uint8_t psenum = (channel == ECC_CONTACT) ? 1 : 2; - CLIParserFree(); + CLIParserFree(ctx); if (!IfPm3Smartcard()) { if (channel == ECC_CONTACT) { @@ -1375,7 +1384,8 @@ static int CmdEMVScan(const char *Cmd) { json_t *root; json_error_t error; - CLIParserInit("emv scan", + CLIParserContext *ctx; + CLIParserInit(&ctx, "emv scan", "Scan EMV card and save it contents to a file.", "It executes EMV contactless transaction and saves result to a file which can be used for emulation\n" "Usage:\n\temv scan -at -> scan MSD transaction mode and show APDU and TLV\n" @@ -1397,7 +1407,7 @@ static int CmdEMVScan(const char *Cmd) { arg_str1(NULL, NULL, "output.json", "JSON output file name"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool showAPDU = arg_get_lit(1); bool decodeTLV = arg_get_lit(2); @@ -1422,8 +1432,8 @@ static int CmdEMVScan(const char *Cmd) { uint8_t relfname[250] = {0}; char *crelfname = (char *)relfname; int relfnamelen = 0; - CLIGetStrWithReturn(12, relfname, &relfnamelen); - CLIParserFree(); + CLIGetStrWithReturn(ctx, 12, relfname, &relfnamelen); + CLIParserFree(ctx); if (!IfPm3Smartcard()) { if (channel == ECC_CONTACT) { @@ -1752,7 +1762,8 @@ static int CmdEMVList(const char *Cmd) { } static int CmdEMVTest(const char *Cmd) { - CLIParserInit("emv test", + CLIParserContext *ctx; + CLIParserInit(&ctx, "emv test", "Executes tests\n", "Usage:\n\temv test [l]\n"); @@ -1762,11 +1773,11 @@ static int CmdEMVTest(const char *Cmd) { arg_lit0("lL", "long", "run long tests too"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); bool ignoreTimeTest = arg_get_lit(1); bool runSlowTests = arg_get_lit(2); - CLIParserFree(); + CLIParserFree(ctx); return ExecuteCryptoTests(true, ignoreTimeTest, runSlowTests); } @@ -1781,7 +1792,8 @@ static int CmdEMVRoca(const char *Cmd) { size_t ODAI_listlen = 0; int res; - CLIParserInit("emv roca", + CLIParserContext *ctx; + CLIParserInit(&ctx, "emv roca", "Tries to extract public keys and run the ROCA test against them.\n", "Usage:\n" "\temv roca -w -> select --CONTACT-- card and run test\n" @@ -1795,11 +1807,11 @@ static int CmdEMVRoca(const char *Cmd) { arg_lit0("wW", "wired", "Send data via contact (iso7816) interface. Contactless interface set by default"), arg_param_end }; - CLIExecWithReturn(Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, true); EMVCommandChannel channel = ECC_CONTACTLESS; if (arg_get_lit(1)) { - CLIParserFree(); + CLIParserFree(ctx); return roca_self_test(); } @@ -1807,9 +1819,8 @@ static int CmdEMVRoca(const char *Cmd) { if (arg_get_lit(3)) channel = ECC_CONTACT; - - CLIParserFree(); - + + CLIParserFree(ctx); PrintChannel(channel); if (!IfPm3Smartcard()) { From b9b230bb996de5ec86db3e8b89fb838a4e89de2e Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 1 Jun 2020 18:30:51 +0200 Subject: [PATCH 228/527] cmdhfmfdes: remove global unused vars --- client/src/cmdhfmfdes.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index ed5f50236..c49c47ff4 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -35,10 +35,10 @@ struct desfire_key defaultkey = {0}; static desfirekey_t sessionkey = &defaultkey; -uint8_t key_zero_data[16] = { 0x00 }; -uint8_t key_ones_data[16] = { 0x01 }; -uint8_t key_defa_data[16] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }; -uint8_t key_picc_data[16] = { 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f }; +//uint8_t key_zero_data[16] = { 0x00 }; +//uint8_t key_ones_data[16] = { 0x01 }; +//uint8_t key_defa_data[16] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }; +//uint8_t key_picc_data[16] = { 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f }; typedef struct { uint8_t mode; From b6077df68e96a14874bdccb1c99f1dd3eee4f505 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 1 Jun 2020 20:10:45 +0200 Subject: [PATCH 229/527] less global vars --- client/src/cmdhfmf.c | 5 +++-- client/src/cmdlft55xx.c | 2 +- client/src/comms.c | 2 +- client/src/mifare/mifarehost.c | 15 ++++++--------- client/src/mifare/mifarehost.h | 4 ++-- 5 files changed, 13 insertions(+), 15 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 062f22c06..58278c9cc 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3394,6 +3394,7 @@ static int CmdHF14AMfSniff(const char *Cmd) { SendCommandNG(CMD_HF_MIFARE_SNIFF, NULL, 0); PacketResponseNG resp; + struct Crypto1State *traceCrypto1 = NULL; // wait cycle while (true) { @@ -3490,13 +3491,13 @@ static int CmdHF14AMfSniff(const char *Cmd) { PrintAndLogEx(SUCCESS, "Trace saved to %s", logHexFileName); } if (wantDecrypt) - mfTraceInit(uid, uid_len, atqa, sak, wantSaveToEmlFile); + mfTraceInit(&traceCrypto1, uid, uid_len, atqa, sak, wantSaveToEmlFile); } else { PrintAndLogEx(NORMAL, "%03d| %s |%s", num, isTag ? "TAG" : "RDR", sprint_hex(bufPtr, len)); if (wantLogToFile) AddLogHex(logHexFileName, isTag ? "TAG| " : "RDR| ", bufPtr, len); if (wantDecrypt) - mfTraceDecode(bufPtr, len, wantSaveToEmlFile); + mfTraceDecode(traceCrypto1, bufPtr, len, wantSaveToEmlFile); num++; } bufPtr += len; diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index 173d8eb22..a4a885e1f 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -54,7 +54,7 @@ t55xx_conf_block_t config = { .downlink_mode = refFixedBit }; -t55xx_memory_item_t cardmem[T55x7_BLOCK_COUNT] = {{0}}; +static t55xx_memory_item_t cardmem[T55x7_BLOCK_COUNT] = {{0}}; t55xx_conf_block_t Get_t55xx_Config(void) { return config; diff --git a/client/src/comms.c b/client/src/comms.c index 09e39696c..f2788ad19 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -36,7 +36,7 @@ static bool comm_thread_dead = false; // Transmit buffer. static PacketCommandOLD txBuffer; static PacketCommandNGRaw txBufferNG; -size_t txBufferNGLen; +static size_t txBufferNGLen; static bool txBuffer_pending = false; static pthread_mutex_t txBufferMutex = PTHREAD_MUTEX_INITIALIZER; static pthread_cond_t txBufferSig = PTHREAD_COND_INITIALIZER; diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index fae64a2f6..df0a12ed0 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -955,9 +955,6 @@ static int traceState = TRACE_IDLE; static uint8_t traceCurBlock = 0; static uint8_t traceCurKey = 0; -struct Crypto1State *traceCrypto1 = NULL; -struct Crypto1State *revstate = NULL; - uint32_t cuid = 0; // uid part used for crypto1. int isTraceCardEmpty(void) { @@ -1046,12 +1043,12 @@ int saveTraceCard(void) { return PM3_SUCCESS; } // -int mfTraceInit(uint8_t *tuid, uint8_t uidlen, uint8_t *atqa, uint8_t sak, bool wantSaveToEmlFile) { +int mfTraceInit(struct Crypto1State **traceCrypto1, uint8_t *tuid, uint8_t uidlen, uint8_t *atqa, uint8_t sak, bool wantSaveToEmlFile) { - if (traceCrypto1) - crypto1_destroy(traceCrypto1); + if (*traceCrypto1) + crypto1_destroy(*traceCrypto1); - traceCrypto1 = NULL; + *traceCrypto1 = NULL; if (wantSaveToEmlFile) loadTraceCard(tuid, uidlen); @@ -1079,7 +1076,7 @@ void mf_crypto1_decrypt(struct Crypto1State *pcs, uint8_t *data, int len, bool i } } -int mfTraceDecode(uint8_t *data_src, int len, bool wantSaveToEmlFile) { +int mfTraceDecode(struct Crypto1State *traceCrypto1, uint8_t *data_src, int len, bool wantSaveToEmlFile) { if (traceState == TRACE_ERROR) return PM3_ESOFT; @@ -1209,7 +1206,7 @@ int mfTraceDecode(uint8_t *data_src, int len, bool wantSaveToEmlFile) { uint64_t key = 0; uint32_t ks2 = ar_enc ^ prng_successor(nt, 64); uint32_t ks3 = at_enc ^ prng_successor(nt, 96); - revstate = lfsr_recovery64(ks2, ks3); + struct Crypto1State *revstate = lfsr_recovery64(ks2, ks3); lfsr_rollback_word(revstate, 0, 0); lfsr_rollback_word(revstate, 0, 0); lfsr_rollback_word(revstate, nr_enc, 1); diff --git a/client/src/mifare/mifarehost.h b/client/src/mifare/mifarehost.h index 6f179c573..0595b2f8b 100644 --- a/client/src/mifare/mifarehost.h +++ b/client/src/mifare/mifarehost.h @@ -81,8 +81,8 @@ int mfCWipe(uint8_t *uid, uint8_t *atqa, uint8_t *sak); int mfCSetBlock(uint8_t blockNo, uint8_t *data, uint8_t *uid, uint8_t params); int mfCGetBlock(uint8_t blockNo, uint8_t *data, uint8_t params); -int mfTraceInit(uint8_t *tuid, uint8_t uidlen, uint8_t *atqa, uint8_t sak, bool wantSaveToEmlFile); -int mfTraceDecode(uint8_t *data_src, int len, bool wantSaveToEmlFile); +int mfTraceInit(struct Crypto1State **traceCrypto1, uint8_t *tuid, uint8_t uidlen, uint8_t *atqa, uint8_t sak, bool wantSaveToEmlFile); +int mfTraceDecode(struct Crypto1State *traceCrypto1, uint8_t *data_src, int len, bool wantSaveToEmlFile); int isTraceCardEmpty(void); int isBlockEmpty(int blockN); From d234e2a8f5a03a83017bdfad4410bb8f5bd2b278 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 1 Jun 2020 20:30:11 +0200 Subject: [PATCH 230/527] less global vars --- client/src/cmdhf14a.c | 6 ++++-- client/src/cmdhfmf.c | 13 ++++++------- client/src/cmdhfmf.h | 4 ++-- client/src/cmdparser.c | 4 ++-- 4 files changed, 14 insertions(+), 13 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 500406439..b293e4c01 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -438,6 +438,8 @@ int CmdHF14ASim(const char *Cmd) { bool setEmulatorMem = false; bool verbose = false; bool errors = false; + sector_t *k_sector = NULL; + uint8_t k_sectorsCount = 40; while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { switch (tolower(param_getchar(Cmd, cmdp))) { @@ -521,7 +523,7 @@ int CmdHF14ASim(const char *Cmd) { if ((flags & FLAG_NR_AR_ATTACK) != FLAG_NR_AR_ATTACK) break; nonces_t *data = (nonces_t *)resp.data.asBytes; - readerAttack(data[0], setEmulatorMem, verbose); + readerAttack(k_sector, k_sectorsCount, data[0], setEmulatorMem, verbose); keypress = kbd_enter_pressed(); } @@ -532,7 +534,7 @@ int CmdHF14ASim(const char *Cmd) { } if (resp.status == PM3_EOPABORTED && ((flags & FLAG_NR_AR_ATTACK) == FLAG_NR_AR_ATTACK)) - showSectorTable(); + showSectorTable(k_sector, k_sectorsCount); PrintAndLogEx(INFO, "Done"); return PM3_SUCCESS; diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 58278c9cc..e3813a5a2 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3129,10 +3129,7 @@ out: return PM3_SUCCESS; } -sector_t *k_sector = NULL; -uint8_t k_sectorsCount = 40; - -void showSectorTable(void) { +void showSectorTable(sector_t *k_sector, uint8_t k_sectorsCount) { if (k_sector != NULL) { printKeyTable(k_sectorsCount, k_sector); free(k_sector); @@ -3140,7 +3137,7 @@ void showSectorTable(void) { } } -void readerAttack(nonces_t data, bool setEmulatorMem, bool verbose) { +void readerAttack(sector_t *k_sector, uint8_t k_sectorsCount, nonces_t data, bool setEmulatorMem, bool verbose) { uint64_t key = 0; bool success = false; @@ -3196,6 +3193,8 @@ static int CmdHF14AMfSim(const char *Cmd) { nonces_t data[1]; char csize[13] = { 0 }; char uidsize[8] = { 0 }; + sector_t *k_sector = NULL; + uint8_t k_sectorsCount = 40; while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { switch (tolower(param_getchar(Cmd, cmdp))) { @@ -3343,9 +3342,9 @@ static int CmdHF14AMfSim(const char *Cmd) { if ((resp.oldarg[0] & 0xffff) != CMD_HF_MIFARE_SIMULATE) break; memcpy(data, resp.data.asBytes, sizeof(data)); - readerAttack(data[0], setEmulatorMem, verbose); + readerAttack(k_sector, k_sectorsCount, data[0], setEmulatorMem, verbose); } - showSectorTable(); + showSectorTable(k_sector, k_sectorsCount); } k_sectorsCount = MIFARE_4K_MAXSECTOR; diff --git a/client/src/cmdhfmf.h b/client/src/cmdhfmf.h index c650b90f9..5325a7956 100644 --- a/client/src/cmdhfmf.h +++ b/client/src/cmdhfmf.h @@ -19,8 +19,8 @@ int CmdHFMF(const char *Cmd); int CmdHF14AMfELoad(const char *Cmd); // used by cmd hf mfu eload int CmdHF14AMfDbg(const char *Cmd); // used by cmd hf mfu dbg -void showSectorTable(void); -void readerAttack(nonces_t data, bool setEmulatorMem, bool verbose); +void showSectorTable(sector_t *k_sector, uint8_t k_sectorsCount); +void readerAttack(sector_t *k_sector, uint8_t k_sectorsCount, nonces_t data, bool setEmulatorMem, bool verbose); void printKeyTable(uint8_t sectorscnt, sector_t *e_sector); void printKeyTableEx(uint8_t sectorscnt, sector_t *e_sector, uint8_t start_sector); void printKeyTable_fast(uint8_t sectorscnt, icesector_t *e_sector, uint64_t bar, uint64_t foo); diff --git a/client/src/cmdparser.c b/client/src/cmdparser.c index e57d32090..529a3d553 100644 --- a/client/src/cmdparser.c +++ b/client/src/cmdparser.c @@ -234,8 +234,8 @@ int CmdsParse(const command_t Commands[], const char *Cmd) { return PM3_SUCCESS; } -char pparent[512] = {0}; -char *parent = pparent; +static char pparent[512] = {0}; +static char *parent = pparent; void dumpCommandsRecursive(const command_t cmds[], int markdown) { if (cmds[0].Name == NULL) return; From 447105511a16f84ea7e0bc83ceb1a0a636ba6823 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 1 Jun 2020 20:45:37 +0200 Subject: [PATCH 231/527] less global vars --- client/src/cmdhfmfdes.c | 2 +- client/src/cmdhfmfhard.c | 2 +- client/src/cmdlf.c | 2 +- client/src/cmdlfem4x.c | 2 +- client/src/cmdtrace.c | 2 +- client/src/emv/emv_roca.c | 60 +++++++++++++++++------------------- client/src/graph.c | 1 - client/src/graph.h | 1 - client/src/proxguiqt.cpp | 11 ++++--- client/src/proxmark3.c | 6 ++-- client/src/uart/uart_posix.c | 4 +-- client/src/ui.c | 4 +-- 12 files changed, 47 insertions(+), 50 deletions(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index c49c47ff4..7f79bd1dd 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -32,7 +32,7 @@ #define MAX_KEY_LEN 24 #define MAX_KEYS_LIST_LEN 1024 -struct desfire_key defaultkey = {0}; +static struct desfire_key defaultkey = {0}; static desfirekey_t sessionkey = &defaultkey; //uint8_t key_zero_data[16] = { 0x00 }; diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index 383a9676f..ade910002 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -499,7 +499,7 @@ static void free_sum_bitarrays(void) { #ifdef DEBUG_KEY_ELIMINATION -char failstr[250] = ""; +static char failstr[250] = ""; #endif static const float p_K0[NUM_SUMS] = { // the probability that a random nonce has a Sum Property K diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 520407847..1e91b490f 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -55,7 +55,7 @@ #include "cmdlfmotorola.h" // for Motorola menu #include "cmdlfgallagher.h" // for GALLAGHER menu -bool g_lf_threshold_set = false; +static bool g_lf_threshold_set = false; static int CmdHelp(const char *Cmd); diff --git a/client/src/cmdlfem4x.c b/client/src/cmdlfem4x.c index f3986b19d..2f003c8d5 100644 --- a/client/src/cmdlfem4x.c +++ b/client/src/cmdlfem4x.c @@ -30,7 +30,7 @@ #include "cmdlf.h" #include "lfdemod.h" -uint64_t g_em410xid = 0; +static uint64_t g_em410xid = 0; static int CmdHelp(const char *Cmd); diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 4df4ee0c0..e7db5fa85 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -24,7 +24,7 @@ static int CmdHelp(const char *Cmd); // trace pointer static uint8_t *g_trace; -long g_traceLen = 0; +static long g_traceLen = 0; static int usage_trace_list(void) { PrintAndLogEx(NORMAL, "List protocol data in trace buffer."); diff --git a/client/src/emv/emv_roca.c b/client/src/emv/emv_roca.c index 8f6607363..4c42be7e2 100644 --- a/client/src/emv/emv_roca.c +++ b/client/src/emv/emv_roca.c @@ -26,39 +26,33 @@ #include "ui.h" // Print... #include "bignum.h" -static uint8_t g_primes[ROCA_PRINTS_LENGTH] = { - 11, 13, 17, 19, 37, 53, 61, 71, 73, 79, 97, 103, 107, 109, 127, 151, 157 -}; - -mbedtls_mpi g_prints[ROCA_PRINTS_LENGTH]; - -static void rocacheck_init(void) { +static void rocacheck_init(mbedtls_mpi *prints) { for (int i = 0; i < ROCA_PRINTS_LENGTH; i++) - mbedtls_mpi_init(&g_prints[i]); + mbedtls_mpi_init(&prints[i]); - mbedtls_mpi_read_string(&g_prints[0], 10, "1026"); - mbedtls_mpi_read_string(&g_prints[1], 10, "5658"); - mbedtls_mpi_read_string(&g_prints[2], 10, "107286"); - mbedtls_mpi_read_string(&g_prints[3], 10, "199410"); - mbedtls_mpi_read_string(&g_prints[4], 10, "67109890"); - mbedtls_mpi_read_string(&g_prints[5], 10, "5310023542746834"); - mbedtls_mpi_read_string(&g_prints[6], 10, "1455791217086302986"); - mbedtls_mpi_read_string(&g_prints[7], 10, "20052041432995567486"); - mbedtls_mpi_read_string(&g_prints[8], 10, "6041388139249378920330"); - mbedtls_mpi_read_string(&g_prints[9], 10, "207530445072488465666"); - mbedtls_mpi_read_string(&g_prints[10], 10, "79228162521181866724264247298"); - mbedtls_mpi_read_string(&g_prints[11], 10, "1760368345969468176824550810518"); - mbedtls_mpi_read_string(&g_prints[12], 10, "50079290986288516948354744811034"); - mbedtls_mpi_read_string(&g_prints[13], 10, "473022961816146413042658758988474"); - mbedtls_mpi_read_string(&g_prints[14], 10, "144390480366845522447407333004847678774"); - mbedtls_mpi_read_string(&g_prints[15], 10, "1800793591454480341970779146165214289059119882"); - mbedtls_mpi_read_string(&g_prints[16], 10, "126304807362733370595828809000324029340048915994"); + mbedtls_mpi_read_string(&prints[0], 10, "1026"); + mbedtls_mpi_read_string(&prints[1], 10, "5658"); + mbedtls_mpi_read_string(&prints[2], 10, "107286"); + mbedtls_mpi_read_string(&prints[3], 10, "199410"); + mbedtls_mpi_read_string(&prints[4], 10, "67109890"); + mbedtls_mpi_read_string(&prints[5], 10, "5310023542746834"); + mbedtls_mpi_read_string(&prints[6], 10, "1455791217086302986"); + mbedtls_mpi_read_string(&prints[7], 10, "20052041432995567486"); + mbedtls_mpi_read_string(&prints[8], 10, "6041388139249378920330"); + mbedtls_mpi_read_string(&prints[9], 10, "207530445072488465666"); + mbedtls_mpi_read_string(&prints[10], 10, "79228162521181866724264247298"); + mbedtls_mpi_read_string(&prints[11], 10, "1760368345969468176824550810518"); + mbedtls_mpi_read_string(&prints[12], 10, "50079290986288516948354744811034"); + mbedtls_mpi_read_string(&prints[13], 10, "473022961816146413042658758988474"); + mbedtls_mpi_read_string(&prints[14], 10, "144390480366845522447407333004847678774"); + mbedtls_mpi_read_string(&prints[15], 10, "1800793591454480341970779146165214289059119882"); + mbedtls_mpi_read_string(&prints[16], 10, "126304807362733370595828809000324029340048915994"); } -static void rocacheck_cleanup(void) { +static void rocacheck_cleanup(mbedtls_mpi *prints) { for (int i = 0; i < ROCA_PRINTS_LENGTH; i++) - mbedtls_mpi_free(&g_prints[i]); + mbedtls_mpi_free(&prints[i]); } static int bitand_is_zero(mbedtls_mpi *a, mbedtls_mpi *b) { @@ -97,8 +91,12 @@ bool emv_rocacheck(const unsigned char *buf, size_t buflen, bool verbose) { mbedtls_mpi_init(&t_modulus); bool ret = false; + mbedtls_mpi prints[ROCA_PRINTS_LENGTH]; + uint8_t primes[ROCA_PRINTS_LENGTH] = { + 11, 13, 17, 19, 37, 53, 61, 71, 73, 79, 97, 103, 107, 109, 127, 151, 157 + }; - rocacheck_init(); + rocacheck_init(prints); MBEDTLS_MPI_CHK(mbedtls_mpi_read_binary(&t_modulus, buf, buflen)); @@ -114,13 +112,13 @@ bool emv_rocacheck(const unsigned char *buf, size_t buflen, bool verbose) { MBEDTLS_MPI_CHK(mbedtls_mpi_read_string(&g_one, 10, "1")); - MBEDTLS_MPI_CHK(mbedtls_mpi_add_int(&t_prime, &t_prime, g_primes[i])); + MBEDTLS_MPI_CHK(mbedtls_mpi_add_int(&t_prime, &t_prime, primes[i])); MBEDTLS_MPI_CHK(mbedtls_mpi_mod_mpi(&t_temp, &t_modulus, &t_prime)); MBEDTLS_MPI_CHK(mbedtls_mpi_shift_l(&g_one, mpi_get_uint(&t_temp))); - if (bitand_is_zero(&g_one, &g_prints[i])) { + if (bitand_is_zero(&g_one, &prints[i])) { if (verbose) PrintAndLogEx(FAILED, "No fingerprint found.\n"); goto cleanup; @@ -138,7 +136,7 @@ bool emv_rocacheck(const unsigned char *buf, size_t buflen, bool verbose) { cleanup: mbedtls_mpi_free(&t_modulus); - rocacheck_cleanup(); + rocacheck_cleanup(prints); return ret; } diff --git a/client/src/graph.c b/client/src/graph.c index 6ce443155..3cb253b2c 100644 --- a/client/src/graph.c +++ b/client/src/graph.c @@ -19,7 +19,6 @@ int GraphBuffer[MAX_GRAPH_TRACE_LEN]; size_t GraphTraceLen; -int s_Buff[MAX_GRAPH_TRACE_LEN]; /* write a manchester bit to the graph TODO, verfy that this doesn't overflow buffer (iceman) diff --git a/client/src/graph.h b/client/src/graph.h index a53d65c06..deb51a31b 100644 --- a/client/src/graph.h +++ b/client/src/graph.h @@ -40,7 +40,6 @@ bool fskClocks(uint8_t *fc1, uint8_t *fc2, uint8_t *rf1, int *firstClockEdge); extern int GraphBuffer[MAX_GRAPH_TRACE_LEN]; extern size_t GraphTraceLen; -extern int s_Buff[MAX_GRAPH_TRACE_LEN]; #ifdef __cplusplus } diff --git a/client/src/proxguiqt.cpp b/client/src/proxguiqt.cpp index 7374982ea..149018b9f 100644 --- a/client/src/proxguiqt.cpp +++ b/client/src/proxguiqt.cpp @@ -34,11 +34,12 @@ extern "C" int preferences_save(void); -bool g_useOverlays = false; -int g_absVMax = 0; -uint32_t startMax; // Maximum offset in the graph (right side of graph) -uint32_t PageWidth; // How many samples are currently visible on this 'page' / graph -int unlockStart = 0; +static int s_Buff[MAX_GRAPH_TRACE_LEN]; +static bool g_useOverlays = false; +static int g_absVMax = 0; +static uint32_t startMax; // Maximum offset in the graph (right side of graph) +static uint32_t PageWidth; // How many samples are currently visible on this 'page' / graph +static int unlockStart = 0; void ProxGuiQT::ShowGraphWindow(void) { emit ShowGraphWindowSignal(); diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 98fd33723..296149357 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -134,9 +134,9 @@ static int check_comm(void) { } // first slot is always NULL, indicating absence of script when idx=0 -FILE *cmdscriptfile[MAX_NESTED_CMDSCRIPT + 1] = {0}; -uint8_t cmdscriptfile_idx = 0; -bool cmdscriptfile_stayafter = false; +static FILE *cmdscriptfile[MAX_NESTED_CMDSCRIPT + 1] = {0}; +static uint8_t cmdscriptfile_idx = 0; +static bool cmdscriptfile_stayafter = false; int push_cmdscriptfile(char *path, bool stayafter) { if (cmdscriptfile_idx == MAX_NESTED_CMDSCRIPT) { diff --git a/client/src/uart/uart_posix.c b/client/src/uart/uart_posix.c index a846b0d78..1a6cf32a0 100644 --- a/client/src/uart/uart_posix.c +++ b/client/src/uart/uart_posix.c @@ -77,8 +77,8 @@ struct timeval timeout = { .tv_usec = UART_FPC_CLIENT_RX_TIMEOUT_MS * 1000 }; -uint32_t newtimeout_value = 0; -bool newtimeout_pending = false; +static uint32_t newtimeout_value = 0; +static bool newtimeout_pending = false; int uart_reconfigure_timeouts(uint32_t value) { newtimeout_value = value; diff --git a/client/src/ui.c b/client/src/ui.c index 15b57c259..86d996ae0 100644 --- a/client/src/ui.c +++ b/client/src/ui.c @@ -44,7 +44,7 @@ session_arg_t session; double CursorScaleFactor = 1; int PlotGridX = 0, PlotGridY = 0, PlotGridXdefault = 64, PlotGridYdefault = 64; uint32_t CursorCPos = 0, CursorDPos = 0; -bool flushAfterWrite = 0; +static bool flushAfterWrite = 0; int GridOffset = 0; bool GridLocked = false; bool showDemod = true; @@ -176,7 +176,7 @@ void PrintAndLogOptions(const char *str[][2], size_t size, size_t space) { PrintAndLogEx(NORMAL, "%s", buff); } -uint8_t PrintAndLogEx_spinidx = 0; +static uint8_t PrintAndLogEx_spinidx = 0; void PrintAndLogEx(logLevel_t level, const char *fmt, ...) { From 72987d562f9ff6a5710c10e8f08faa0680360f49 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 1 Jun 2020 23:44:41 +0200 Subject: [PATCH 232/527] Implement real callbacks for load/save prefs --- client/src/cmdhf15.c | 2 +- client/src/cmdhfcryptorf.c | 2 +- client/src/cmdhficlass.c | 6 +++--- client/src/cmdhflegic.c | 4 ++-- client/src/cmdhfmf.c | 10 +++++----- client/src/cmdhfmfdes.c | 2 +- client/src/cmdhfmfp.c | 2 +- client/src/cmdhfmfu.c | 2 +- client/src/cmdlfhitag.c | 4 ++-- client/src/cmdlft55xx.c | 2 +- client/src/fileutils.c | 20 ++++++++++---------- client/src/fileutils.h | 10 +++++----- client/src/preferences.c | 4 ++-- 13 files changed, 35 insertions(+), 35 deletions(-) diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 9c6c343aa..8712a9829 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -1272,7 +1272,7 @@ static int CmdHF15Dump(const char *Cmd) { size_t datalen = blocknum * 4; saveFile(filename, ".bin", data, datalen); saveFileEML(filename, data, datalen, 4); - saveFileJSON(filename, jsf15, data, datalen); + saveFileJSON(filename, jsf15, data, datalen, NULL); return PM3_SUCCESS; } diff --git a/client/src/cmdhfcryptorf.c b/client/src/cmdhfcryptorf.c index 559dc0e35..7f727d4bf 100644 --- a/client/src/cmdhfcryptorf.c +++ b/client/src/cmdhfcryptorf.c @@ -495,7 +495,7 @@ static int CmdHFCryptoRFESave(const char *Cmd) { //needs to change saveFileEML(filename, data, numofbytes, 8); //needs to change - saveFileJSON(filename, jsfRaw, data, numofbytes); + saveFileJSON(filename, jsfRaw, data, numofbytes, NULL); return PM3_SUCCESS; } diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 85caf2364..d67deda5a 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -776,7 +776,7 @@ static int CmdHFiClassELoad(const char *Cmd) { break; } case JSON: { - res = loadFileJSON(filename, dump, 2048, &bytes_read); + res = loadFileJSON(filename, dump, 2048, &bytes_read, NULL); break; } case DICTIONARY: @@ -966,7 +966,7 @@ static int CmdHFiClassDecrypt(const char *Cmd) { saveFile(fptr, ".bin", decrypted, decryptedlen); saveFileEML(fptr, decrypted, decryptedlen, 8); - saveFileJSON(fptr, jsfIclass, decrypted, decryptedlen); + saveFileJSON(fptr, jsfIclass, decrypted, decryptedlen, NULL); PrintAndLogEx(INFO, "Following output skips CSN / block0"); printIclassDumpContents(decrypted, 1, (decryptedlen / 8), decryptedlen); @@ -1433,7 +1433,7 @@ static int CmdHFiClassReader_Dump(const char *Cmd) { PrintAndLogEx(SUCCESS, "saving dump file - %zu blocks read", gotBytes / 8); saveFile(filename, ".bin", tag_data, gotBytes); saveFileEML(filename, tag_data, gotBytes, 8); - saveFileJSON(filename, jsfIclass, tag_data, gotBytes); + saveFileJSON(filename, jsfIclass, tag_data, gotBytes, NULL); return PM3_SUCCESS; } diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index 28138f0ea..a97d13d3f 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -1026,7 +1026,7 @@ static int CmdLegicDump(const char *Cmd) { saveFile(filename, ".bin", data, readlen); saveFileEML(filename, data, readlen, 8); - saveFileJSON(filename, jsfLegic, data, readlen); + saveFileJSON(filename, jsfLegic, data, readlen, NULL); free(data); return PM3_SUCCESS; } @@ -1299,7 +1299,7 @@ static int CmdLegicESave(const char *Cmd) { saveFile(filename, ".bin", data, numofbytes); saveFileEML(filename, data, numofbytes, 8); - saveFileJSON(filename, jsfLegic, data, numofbytes); + saveFileJSON(filename, jsfLegic, data, numofbytes, NULL); return PM3_SUCCESS; } diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index e3813a5a2..9a4c36d9d 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -1068,7 +1068,7 @@ static int CmdHF14AMfDump(const char *Cmd) { saveFile(dataFilename, ".bin", (uint8_t *)carddata, bytes); saveFileEML(dataFilename, (uint8_t *)carddata, bytes, MFBLOCK_SIZE); - saveFileJSON(dataFilename, jsfCardMemory, (uint8_t *)carddata, bytes); + saveFileJSON(dataFilename, jsfCardMemory, (uint8_t *)carddata, bytes, NULL); return PM3_SUCCESS; } @@ -2518,7 +2518,7 @@ all_found: saveFile(filename, ".bin", dump, bytes); saveFileEML(filename, dump, bytes, MFBLOCK_SIZE); - saveFileJSON(filename, jsfCardMemory, dump, bytes); + saveFileJSON(filename, jsfCardMemory, dump, bytes, NULL); // Generate and show statistics t1 = msclock() - t1; @@ -3832,7 +3832,7 @@ static int CmdHF14AMfESave(const char *Cmd) { saveFile(filename, ".bin", dump, bytes); saveFileEML(filename, dump, bytes, MFBLOCK_SIZE); - saveFileJSON(filename, jsfCardMemory, dump, bytes); + saveFileJSON(filename, jsfCardMemory, dump, bytes, NULL); free(dump); return PM3_SUCCESS; } @@ -4150,7 +4150,7 @@ static int CmdHF14AMfCLoad(const char *Cmd) { res = loadFile(fileName, ".bin", data, maxdatalen, &datalen); } else { if (fillFromJson) { - res = loadFileJSON(fileName, data, maxdatalen, &datalen); + res = loadFileJSON(fileName, data, maxdatalen, &datalen, NULL); } else { res = loadFileEML(Cmd, data, &datalen); } @@ -4412,7 +4412,7 @@ static int CmdHF14AMfCSave(const char *Cmd) { saveFile(filename, ".bin", dump, bytes); saveFileEML(filename, dump, bytes, MFBLOCK_SIZE); - saveFileJSON(filename, jsfCardMemory, dump, bytes); + saveFileJSON(filename, jsfCardMemory, dump, bytes, NULL); free(dump); return PM3_SUCCESS; } diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index 7f79bd1dd..9d9cd68e0 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -4114,7 +4114,7 @@ static int CmdHF14aDesChk(const char *Cmd) { // length: UID(10b)+SAK(1b)+ATQA(2b)+ATSlen(1b)+ATS(atslen)+foundKeys[2][64][AES_KEY_LEN + 1] memcpy(&data[14 + atslen], foundKeys, 4 * 0xE * (24 + 1)); - saveFileJSON((char *)jsonname, jsfMfDesfireKeys, data, 0xE); + saveFileJSON((char *)jsonname, jsfMfDesfireKeys, data, 0xE, NULL); } return PM3_SUCCESS; diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 7cdeb5eb1..5f10406b1 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1277,7 +1277,7 @@ static int CmdHFMFPChk(const char *Cmd) { // length: UID(10b)+SAK(1b)+ATQA(2b)+ATSlen(1b)+ATS(atslen)+foundKeys[2][64][AES_KEY_LEN + 1] memcpy(&data[14 + atslen], foundKeys, 2 * 64 * (AES_KEY_LEN + 1)); - saveFileJSON((char *)jsonname, jsfMfPlusKeys, data, 64); + saveFileJSON((char *)jsonname, jsfMfPlusKeys, data, 64, NULL); } return PM3_SUCCESS; diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index dd812dd79..c5f22b628 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -2090,7 +2090,7 @@ static int CmdHF14AMfUDump(const char *Cmd) { } uint16_t datalen = pages * 4 + MFU_DUMP_PREFIX_LENGTH; saveFile(filename, ".bin", (uint8_t *)&dump_file_data, datalen); - saveFileJSON(filename, jsfMfuMemory, (uint8_t *)&dump_file_data, datalen); + saveFileJSON(filename, jsfMfuMemory, (uint8_t *)&dump_file_data, datalen, NULL); if (is_partial) PrintAndLogEx(WARNING, "Partial dump created. (%d of %d blocks)", pages, card_mem_size); diff --git a/client/src/cmdlfhitag.c b/client/src/cmdlfhitag.c index 28cbd41d0..b05405465 100644 --- a/client/src/cmdlfhitag.c +++ b/client/src/cmdlfhitag.c @@ -330,7 +330,7 @@ static int CmdLFHitagSim(const char *Cmd) { break; case 'j': param_getstr(Cmd, cmdp + 1, filename, sizeof(filename)); - res = loadFileJSON(filename, data, maxdatalen, &datalen); + res = loadFileJSON(filename, data, maxdatalen, &datalen, NULL); if (res > 0) { errors = true; break; @@ -725,7 +725,7 @@ static int CmdLFHitag2Dump(const char *Cmd) { saveFile(filename, ".bin", data, 48); saveFileEML(filename, data, 48, 4); - saveFileJSON(filename, jsfHitag, data, 48); + saveFileJSON(filename, jsfHitag, data, 48, NULL); return PM3_SUCCESS; } diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index a4a885e1f..6294ffef6 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -2319,7 +2319,7 @@ static int CmdT55xxDump(const char *Cmd) { for (int i = 0; i < T55x7_BLOCK_COUNT; i++) data[i] = BSWAP_32(cardmem[i].blockdata); - saveFileJSON(preferredName, jsfT55x7, (uint8_t *)data, T55x7_BLOCK_COUNT * sizeof(uint32_t)); + saveFileJSON(preferredName, jsfT55x7, (uint8_t *)data, T55x7_BLOCK_COUNT * sizeof(uint32_t), NULL); saveFileEML(preferredName, (uint8_t *)data, T55x7_BLOCK_COUNT * sizeof(uint32_t), sizeof(uint32_t)); saveFile(preferredName, ".bin", data, sizeof(data)); } diff --git a/client/src/fileutils.c b/client/src/fileutils.c index d5315e3b9..d8176f65c 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -312,10 +312,10 @@ out: return retval; } -int saveFileJSON(const char *preferredName, JSONFileType ftype, uint8_t *data, size_t datalen) { - return saveFileJSONex(preferredName, ftype, data, datalen, true); +int saveFileJSON(const char *preferredName, JSONFileType ftype, uint8_t *data, size_t datalen, void (*callback)(json_t *)) { + return saveFileJSONex(preferredName, ftype, data, datalen, true, callback); } -int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, size_t datalen, bool verbose) { +int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, size_t datalen, bool verbose, void (*callback)(json_t *)) { if (data == NULL) return PM3_EINVARG; @@ -548,8 +548,8 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, } } break; - case jsfSettings: - preferences_save_callback(root); + case jsfCustom: + (*callback)(root); break; default: break; @@ -855,10 +855,10 @@ out: return retval; } -int loadFileJSON(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen) { - return loadFileJSONex(preferredName, data, maxdatalen, datalen, true); +int loadFileJSON(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen, void (*callback)(json_t *)) { + return loadFileJSONex(preferredName, data, maxdatalen, datalen, true, callback); } -int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen, bool verbose) { +int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen, bool verbose, void (*callback)(json_t *)) { if (data == NULL) return PM3_EINVARG; char *fileName = filenamemcopy(preferredName, ".json"); @@ -1001,8 +1001,8 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz if (verbose) PrintAndLogEx(SUCCESS, "loaded from JSON file " _YELLOW_("%s"), fileName); - if (!strcmp(ctype, "settings")) { - preferences_load_callback(root); + if (callback != NULL) { + (*callback)(root); } out: json_decref(root); diff --git a/client/src/fileutils.h b/client/src/fileutils.h index cf00efb03..96170a440 100644 --- a/client/src/fileutils.h +++ b/client/src/fileutils.h @@ -62,7 +62,7 @@ typedef enum { jsfT55x7, jsfT5555, jsfMfPlusKeys, - jsfSettings, + jsfCustom, jsfMfDesfireKeys, } JSONFileType; @@ -115,8 +115,8 @@ int saveFileEML(const char *preferredName, uint8_t *data, size_t datalen, size_t * @param datalen the length of the data * @return 0 for ok, 1 for failz */ -int saveFileJSON(const char *preferredName, JSONFileType ftype, uint8_t *data, size_t datalen); -int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, size_t datalen, bool verbose); +int saveFileJSON(const char *preferredName, JSONFileType ftype, uint8_t *data, size_t datalen, void (*callback)(json_t *)); +int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, size_t datalen, bool verbose, void (*callback)(json_t *)); /** STUB * @brief Utility function to save WAVE data to a file. This method takes a preferred name, but if that @@ -198,8 +198,8 @@ int loadFileEML(const char *preferredName, void *data, size_t *datalen); * @param datalen the number of bytes loaded from file * @return 0 for ok, 1 for failz */ -int loadFileJSON(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen); -int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen, bool verbose); +int loadFileJSON(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen, void (*callback)(json_t *)); +int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen, bool verbose, void (*callback)(json_t *)); /** diff --git a/client/src/preferences.c b/client/src/preferences.c index 89d9cc188..5ae73b902 100644 --- a/client/src/preferences.c +++ b/client/src/preferences.c @@ -89,7 +89,7 @@ int preferences_load(void) { char *fn = prefGetFilename(); if (fileExists(fn)) { PrintAndLogEx(INFO, "Loading Preferences..."); - if (loadFileJSON(fn, &dummyData, sizeof(dummyData), &dummyDL) == PM3_SUCCESS) { + if (loadFileJSON(fn, &dummyData, sizeof(dummyData), &dummyDL, &preferences_load_callback) == PM3_SUCCESS) { session.preferences_loaded = true; } } @@ -139,7 +139,7 @@ int preferences_save(void) { uint8_t dummyData = 0x00; size_t dummyDL = 0x00; - if (saveFileJSON(fn, jsfSettings, &dummyData, dummyDL) != PM3_SUCCESS) + if (saveFileJSON(fn, jsfCustom, &dummyData, dummyDL, &preferences_save_callback) != PM3_SUCCESS) PrintAndLogEx(ERR, "Error saving preferences to \"%s\"", fn); free(fn); From aff86a29396f2a00a566948ee658280565a1155e Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 2 Jun 2020 01:16:21 +0200 Subject: [PATCH 233/527] cleaner paths in cmake --- client/CMakeLists.txt | 307 +++++++++++++++++++++--------------------- 1 file changed, 153 insertions(+), 154 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 28735b9b7..0b8fea18d 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -7,6 +7,7 @@ cmake_minimum_required(VERSION 3.10) project(proxmark3) +SET (PM3_ROOT ${CMAKE_CURRENT_SOURCE_DIR}/..) if(CMAKE_VERSION VERSION_LESS "3.7.0") set(CMAKE_INCLUDE_CURRENT_DIR ON) @@ -41,152 +42,149 @@ pkg_search_module(BLUEZ QUIET bluez) pkg_search_module(PYTHON3 QUIET python3) pkg_search_module(PYTHON3EMBED QUIET python3-embed) -SET (CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} "${CMAKE_CURRENT_SOURCE_DIR}/cmake") - -add_subdirectory(deps) +add_subdirectory(${PM3_ROOT}/client/deps deps) set (TARGET_SOURCES - src/proxmark3.c - ../common/commonutil.c - ../common/util_posix.c - ../common/parity.c - ../common/bucketsort.c - ../common/crapto1/crapto1.c - ../common/crapto1/crypto1.c - ../common/crc.c - ../common/crc16.c - ../common/crc32.c - ../common/crc64.c - ../common/lfdemod.c - ../common/legic_prng.c - ../common/iso15693tools.c - ../common/cardhelper.c - ../common/generator.c - src/crypto/asn1dump.c - src/crypto/asn1utils.c - src/crypto/libpcrypto.c - src/emv/test/cda_test.c - src/emv/test/crypto_test.c - src/emv/test/cryptotest.c - src/emv/test/dda_test.c - src/emv/test/sda_test.c - src/emv/apduinfo.c - src/emv/cmdemv.c - src/emv/crypto.c - src/emv/crypto_polarssl.c - src/emv/dol.c - src/emv/dump.c - src/emv/emv_pk.c - src/emv/emv_pki.c - src/emv/emv_pki_priv.c - src/emv/emv_roca.c - src/emv/emv_tags.c - src/emv/emvcore.c - src/emv/emvjson.c - src/emv/tlv.c - src/fido/additional_ca.c - src/fido/cbortools.c - src/fido/cose.c - src/fido/fidocore.c - src/loclass/cipher.c - src/loclass/cipherutils.c - src/loclass/elite_crack.c - src/loclass/hash1_brute.c - src/loclass/ikeys.c - src/mifare/mad.c - src/mifare/mfkey.c - src/mifare/mifare4.c - src/mifare/mifaredefault.c - src/mifare/mifarehost.c - src/mifare/ndef.c - src/mifare/desfire_crypto.c - src/uart/uart_posix.c - src/uart/uart_win32.c - src/ui/overlays.ui - src/aidsearch.c - src/cmdanalyse.c - src/cmdcrc.c - src/cmddata.c - src/cmdflashmem.c - src/cmdflashmemspiffs.c - src/cmdhf.c - src/cmdhf14a.c - src/cmdhf14b.c - src/cmdhf15.c - src/cmdhfcryptorf.c - src/cmdhfepa.c - src/cmdhffelica.c - src/cmdhffido.c - src/cmdhficlass.c - src/cmdhflegic.c - src/cmdhflist.c - src/cmdhflto.c - src/cmdhfmf.c - src/cmdhfmfdes.c - src/cmdhfmfhard.c - src/cmdhfmfp.c - src/cmdhfmfu.c - src/cmdhfthinfilm.c - src/cmdhftopaz.c - src/cmdhw.c - src/cmdlf.c - src/cmdlfawid.c - src/cmdlfcotag.c - src/cmdlfem4x.c - src/cmdlffdx.c - src/cmdlfgallagher.c - src/cmdlfguard.c - src/cmdlfhid.c - src/cmdlfhitag.c - src/cmdlfindala.c - src/cmdlfio.c - src/cmdlfjablotron.c - src/cmdlfkeri.c - src/cmdlfmotorola.c - src/cmdlfnedap.c - src/cmdlfnexwatch.c - src/cmdlfnoralsy.c - src/cmdlfpac.c - src/cmdlfparadox.c - src/cmdlfpcf7931.c - src/cmdlfpresco.c - src/cmdlfpyramid.c - src/cmdlfsecurakey.c - src/cmdlft55xx.c - src/cmdlfti.c - src/cmdlfverichip.c - src/cmdlfviking.c - src/cmdlfvisa2000.c - src/cmdmain.c - src/cmdparser.c - src/cmdscript.c - src/cmdsmartcard.c - src/cmdtrace.c - src/cmdusart.c - src/cmdwiegand.c - src/comms.c - src/fileutils.c - src/flash.c - src/graph.c - src/jansson_path.c - src/preferences.c - src/pm3_binlib.c - src/pm3_bitlib.c - src/prng.c - src/scandir.c - src/scripting.c - src/tea.c - src/ui.c - src/util.c - src/wiegand_formats.c - src/wiegand_formatutils.c + ${PM3_ROOT}/common/commonutil.c + ${PM3_ROOT}/common/util_posix.c + ${PM3_ROOT}/common/parity.c + ${PM3_ROOT}/common/bucketsort.c + ${PM3_ROOT}/common/crapto1/crapto1.c + ${PM3_ROOT}/common/crapto1/crypto1.c + ${PM3_ROOT}/common/crc.c + ${PM3_ROOT}/common/crc16.c + ${PM3_ROOT}/common/crc32.c + ${PM3_ROOT}/common/crc64.c + ${PM3_ROOT}/common/lfdemod.c + ${PM3_ROOT}/common/legic_prng.c + ${PM3_ROOT}/common/iso15693tools.c + ${PM3_ROOT}/common/cardhelper.c + ${PM3_ROOT}/common/generator.c + ${PM3_ROOT}/client/src/crypto/asn1dump.c + ${PM3_ROOT}/client/src/crypto/asn1utils.c + ${PM3_ROOT}/client/src/crypto/libpcrypto.c + ${PM3_ROOT}/client/src/emv/test/cda_test.c + ${PM3_ROOT}/client/src/emv/test/crypto_test.c + ${PM3_ROOT}/client/src/emv/test/cryptotest.c + ${PM3_ROOT}/client/src/emv/test/dda_test.c + ${PM3_ROOT}/client/src/emv/test/sda_test.c + ${PM3_ROOT}/client/src/emv/apduinfo.c + ${PM3_ROOT}/client/src/emv/cmdemv.c + ${PM3_ROOT}/client/src/emv/crypto.c + ${PM3_ROOT}/client/src/emv/crypto_polarssl.c + ${PM3_ROOT}/client/src/emv/dol.c + ${PM3_ROOT}/client/src/emv/dump.c + ${PM3_ROOT}/client/src/emv/emv_pk.c + ${PM3_ROOT}/client/src/emv/emv_pki.c + ${PM3_ROOT}/client/src/emv/emv_pki_priv.c + ${PM3_ROOT}/client/src/emv/emv_roca.c + ${PM3_ROOT}/client/src/emv/emv_tags.c + ${PM3_ROOT}/client/src/emv/emvcore.c + ${PM3_ROOT}/client/src/emv/emvjson.c + ${PM3_ROOT}/client/src/emv/tlv.c + ${PM3_ROOT}/client/src/fido/additional_ca.c + ${PM3_ROOT}/client/src/fido/cbortools.c + ${PM3_ROOT}/client/src/fido/cose.c + ${PM3_ROOT}/client/src/fido/fidocore.c + ${PM3_ROOT}/client/src/loclass/cipher.c + ${PM3_ROOT}/client/src/loclass/cipherutils.c + ${PM3_ROOT}/client/src/loclass/elite_crack.c + ${PM3_ROOT}/client/src/loclass/hash1_brute.c + ${PM3_ROOT}/client/src/loclass/ikeys.c + ${PM3_ROOT}/client/src/mifare/mad.c + ${PM3_ROOT}/client/src/mifare/mfkey.c + ${PM3_ROOT}/client/src/mifare/mifare4.c + ${PM3_ROOT}/client/src/mifare/mifaredefault.c + ${PM3_ROOT}/client/src/mifare/mifarehost.c + ${PM3_ROOT}/client/src/mifare/ndef.c + ${PM3_ROOT}/client/src/mifare/desfire_crypto.c + ${PM3_ROOT}/client/src/uart/uart_posix.c + ${PM3_ROOT}/client/src/uart/uart_win32.c + ${PM3_ROOT}/client/src/ui/overlays.ui + ${PM3_ROOT}/client/src/aidsearch.c + ${PM3_ROOT}/client/src/cmdanalyse.c + ${PM3_ROOT}/client/src/cmdcrc.c + ${PM3_ROOT}/client/src/cmddata.c + ${PM3_ROOT}/client/src/cmdflashmem.c + ${PM3_ROOT}/client/src/cmdflashmemspiffs.c + ${PM3_ROOT}/client/src/cmdhf.c + ${PM3_ROOT}/client/src/cmdhf14a.c + ${PM3_ROOT}/client/src/cmdhf14b.c + ${PM3_ROOT}/client/src/cmdhf15.c + ${PM3_ROOT}/client/src/cmdhfcryptorf.c + ${PM3_ROOT}/client/src/cmdhfepa.c + ${PM3_ROOT}/client/src/cmdhffelica.c + ${PM3_ROOT}/client/src/cmdhffido.c + ${PM3_ROOT}/client/src/cmdhficlass.c + ${PM3_ROOT}/client/src/cmdhflegic.c + ${PM3_ROOT}/client/src/cmdhflist.c + ${PM3_ROOT}/client/src/cmdhflto.c + ${PM3_ROOT}/client/src/cmdhfmf.c + ${PM3_ROOT}/client/src/cmdhfmfdes.c + ${PM3_ROOT}/client/src/cmdhfmfhard.c + ${PM3_ROOT}/client/src/cmdhfmfp.c + ${PM3_ROOT}/client/src/cmdhfmfu.c + ${PM3_ROOT}/client/src/cmdhfthinfilm.c + ${PM3_ROOT}/client/src/cmdhftopaz.c + ${PM3_ROOT}/client/src/cmdhw.c + ${PM3_ROOT}/client/src/cmdlf.c + ${PM3_ROOT}/client/src/cmdlfawid.c + ${PM3_ROOT}/client/src/cmdlfcotag.c + ${PM3_ROOT}/client/src/cmdlfem4x.c + ${PM3_ROOT}/client/src/cmdlffdx.c + ${PM3_ROOT}/client/src/cmdlfgallagher.c + ${PM3_ROOT}/client/src/cmdlfguard.c + ${PM3_ROOT}/client/src/cmdlfhid.c + ${PM3_ROOT}/client/src/cmdlfhitag.c + ${PM3_ROOT}/client/src/cmdlfindala.c + ${PM3_ROOT}/client/src/cmdlfio.c + ${PM3_ROOT}/client/src/cmdlfjablotron.c + ${PM3_ROOT}/client/src/cmdlfkeri.c + ${PM3_ROOT}/client/src/cmdlfmotorola.c + ${PM3_ROOT}/client/src/cmdlfnedap.c + ${PM3_ROOT}/client/src/cmdlfnexwatch.c + ${PM3_ROOT}/client/src/cmdlfnoralsy.c + ${PM3_ROOT}/client/src/cmdlfpac.c + ${PM3_ROOT}/client/src/cmdlfparadox.c + ${PM3_ROOT}/client/src/cmdlfpcf7931.c + ${PM3_ROOT}/client/src/cmdlfpresco.c + ${PM3_ROOT}/client/src/cmdlfpyramid.c + ${PM3_ROOT}/client/src/cmdlfsecurakey.c + ${PM3_ROOT}/client/src/cmdlft55xx.c + ${PM3_ROOT}/client/src/cmdlfti.c + ${PM3_ROOT}/client/src/cmdlfverichip.c + ${PM3_ROOT}/client/src/cmdlfviking.c + ${PM3_ROOT}/client/src/cmdlfvisa2000.c + ${PM3_ROOT}/client/src/cmdmain.c + ${PM3_ROOT}/client/src/cmdparser.c + ${PM3_ROOT}/client/src/cmdscript.c + ${PM3_ROOT}/client/src/cmdsmartcard.c + ${PM3_ROOT}/client/src/cmdtrace.c + ${PM3_ROOT}/client/src/cmdusart.c + ${PM3_ROOT}/client/src/cmdwiegand.c + ${PM3_ROOT}/client/src/comms.c + ${PM3_ROOT}/client/src/fileutils.c + ${PM3_ROOT}/client/src/flash.c + ${PM3_ROOT}/client/src/graph.c + ${PM3_ROOT}/client/src/jansson_path.c + ${PM3_ROOT}/client/src/preferences.c + ${PM3_ROOT}/client/src/pm3_binlib.c + ${PM3_ROOT}/client/src/pm3_bitlib.c + ${PM3_ROOT}/client/src/prng.c + ${PM3_ROOT}/client/src/scandir.c + ${PM3_ROOT}/client/src/scripting.c + ${PM3_ROOT}/client/src/tea.c + ${PM3_ROOT}/client/src/ui.c + ${PM3_ROOT}/client/src/util.c + ${PM3_ROOT}/client/src/wiegand_formats.c + ${PM3_ROOT}/client/src/wiegand_formatutils.c ${CMAKE_BINARY_DIR}/version.c ) add_custom_command( OUTPUT ${CMAKE_BINARY_DIR}/version.c - COMMAND sh ${CMAKE_SOURCE_DIR}/../tools/mkversion.sh > ${CMAKE_BINARY_DIR}/version.c || perl ${CMAKE_SOURCE_DIR}/../tools/mkversion.pl > ${CMAKE_BINARY_DIR}/version.c || ${CMAKE_COMMAND} -E copy ${CMAKE_SOURCE_DIR}/../common/default_version.c ${CMAKE_BINARY_DIR}/version.c - DEPENDS ${CMAKE_SOURCE_DIR}/../common/default_version.c + COMMAND sh ${PM3_ROOT}/tools/mkversion.sh > ${CMAKE_BINARY_DIR}/version.c || perl ${PM3_ROOT}/tools/mkversion.pl > ${CMAKE_BINARY_DIR}/version.c || ${CMAKE_COMMAND} -E copy ${PM3_ROOT}/common/default_version.c ${CMAKE_BINARY_DIR}/version.c + DEPENDS ${PM3_ROOT}/common/default_version.c ) set(ADDITIONAL_SRC "") @@ -199,7 +197,7 @@ message(STATUS "CMAKE_SYSTEM_PROCESSOR := ${CMAKE_SYSTEM_PROCESSOR}") if (APPLE) message("Apple device detected.") - set(ADDITIONAL_SRC src/util_darwin.h src/util_darwin.m ${ADDITIONAL_SRC}) + set(ADDITIONAL_SRC ${PM3_ROOT}/client/src/util_darwin.h ${PM3_ROOT}/client/src/util_darwin.m ${ADDITIONAL_SRC}) set(ADDITIONAL_LNK "-framework Foundation" "-framework AppKit") endif (APPLE) @@ -209,8 +207,8 @@ if (Qt5_FOUND) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) set (TARGET_SOURCES - src/proxgui.cpp - src/proxguiqt.cpp + ${PM3_ROOT}/client/src/proxgui.cpp + ${PM3_ROOT}/client/src/proxguiqt.cpp ${TARGET_SOURCES}) add_definitions("-DHAVE_GUI") @@ -218,7 +216,7 @@ if (Qt5_FOUND) else (Qt5_FOUND) message("Qt5 library not found, not building gui") set(TARGET_SOURCES - src/guidummy.cpp + ${PM3_ROOT}/client/src/guidummy.cpp ${TARGET_SOURCES}) endif (Qt5_FOUND) @@ -230,20 +228,20 @@ endif (BLUEZ_FOUND) if (PYTHON3EMBED_FOUND) message("Python3-embed library found, building with python3 support :)") - add_definitions("-DHAVE_PYTHON") + add_definitions(-DHAVE_PYTHON) set(ADDITIONAL_DIRS ${PYTHON3EMBED_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) set(ADDITIONAL_LNK ${PYTHON3EMBED_LIBRARIES} ${ADDITIONAL_LNK}) set(ADDITIONAL_LNKDIRS ${PYTHON3EMBED_LIBRARY_DIRS} ${ADDITIONAL_LNKDIRS}) elseif (PYTHON3_FOUND) message("Python3 library found, building with python3 support :)") - add_definitions("-DHAVE_PYTHON") + add_definitions(-DHAVE_PYTHON) set(ADDITIONAL_DIRS ${PYTHON3_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) set(ADDITIONAL_LNK ${PYTHON3_LIBRARIES} ${ADDITIONAL_LNK}) set(ADDITIONAL_LNKDIRS ${PYTHON3_LIBRARY_DIRS} ${ADDITIONAL_LNKDIRS}) endif (PYTHON3EMBED_FOUND) -add_executable( - proxmark3 +add_executable(proxmark3 + ${PM3_ROOT}/client/src/proxmark3.c ${TARGET_SOURCES} ${ADDITIONAL_SRC} ) @@ -262,10 +260,11 @@ if (MINGW) endif (MINGW) target_include_directories(proxmark3 PRIVATE - ../common - ../common_fpga - ../include - src + ${PM3_ROOT}/common + ${PM3_ROOT}/common_fpga + ${PM3_ROOT}/include + ${PM3_ROOT}/client/src + ${PM3_ROOT}/client/include ${ADDITIONAL_DIRS} ) @@ -310,9 +309,9 @@ if (PYTHON3EMBED_FOUND OR PYTHON3_FOUND) target_link_directories(proxmark3 PRIVATE ${ADDITIONAL_LNKDIRS}) elseif (APPLE) message( SEND_ERROR "Your CMAKE version is too old for Apple platform, please update to a version >=3.13" ) - endif() -endif() - + endif (NOT CMAKE_VERSION VERSION_LESS 3.13) +endif (PYTHON3EMBED_FOUND OR PYTHON3_FOUND) + install(TARGETS proxmark3 DESTINATION "bin") install(DIRECTORY cmdscripts lualibs luascripts pyscripts resources dictionaries DESTINATION "share/proxmark3") From c3ab0b6527cc1bd63bf062d70b9dddfbe6c45d25 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 08:54:59 +0200 Subject: [PATCH 234/527] fix: #752 MINGW env needs to be using gnu printf --- client/deps/tinycbor/cbor.h | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/deps/tinycbor/cbor.h b/client/deps/tinycbor/cbor.h index 238a2717f..081597fec 100644 --- a/client/deps/tinycbor/cbor.h +++ b/client/deps/tinycbor/cbor.h @@ -556,8 +556,10 @@ enum CborPrettyFlags { }; typedef CborError(*CborStreamFunction)(void *token, const char *fmt, ...) -#ifdef __GNUC__ -__attribute__((__format__(printf, 2, 3))) +#if defined(__MINGW32__) || defined(__MINGW64__) + __attribute__((format (__MINGW_PRINTF_FORMAT, 2, 3))); +#elif defined(__GNUC__) + __attribute__((__format__(printf, 2, 3))) #endif ; From a62199ac0fad058a37e95a74cc28e57a0acaf2e1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 09:15:56 +0200 Subject: [PATCH 235/527] fix: coverity 290109 resouce leak --- client/src/cmdscript.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index 38c980765..4e9c5fc1f 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -169,6 +169,7 @@ static int CmdScriptRun(const char *Cmd) { char *extension_chk; extension_chk = str_dup(preferredName); str_lower(extension_chk); + pm3_scriptfile_t ext = PM3_UNSPECIFIED; if (str_endswith(extension_chk, ".lua")) { ext = PM3_LUA; @@ -180,6 +181,7 @@ static int CmdScriptRun(const char *Cmd) { ext = PM3_PY; } #endif + free(extension_chk); char *script_path = NULL; if (((ext == PM3_LUA) || (ext == PM3_UNSPECIFIED)) && (searchFile(&script_path, LUA_SCRIPTS_SUBDIR, preferredName, ".lua", true) == PM3_SUCCESS)) { From 071ab7193c5b491776be7b200224d3e2cd27171a Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 09:17:10 +0200 Subject: [PATCH 236/527] fix coverity 290110 - missing break --- client/src/cmdhfmfu.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index c5f22b628..54e0b2423 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -2177,6 +2177,7 @@ static int CmdHF14AMfURestore(const char *Cmd) { case 'v': cmdp++; verbose = true; + break; default: PrintAndLogEx(WARNING, "Unknown parameter: " _RED_("'%c'"), param_getchar(Cmd, cmdp)); errors = true; From c53c79f0ba05792b4c2ae3e2f3fc2cd080bd2b11 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 09:18:45 +0200 Subject: [PATCH 237/527] fix coverity 290111 --- client/src/cmdhfmfdes.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index 9d9cd68e0..1d3943446 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -4007,7 +4007,7 @@ static int CmdHF14aDesChk(const char *Cmd) { endFilePosition = 0; res = loadFileDICTIONARYEx((char *)dict_filename, k3kkeyList, sizeof(k3kkeyList), NULL, 24, &k3kkeyListLen, 0, &endFilePosition, true); - if (PM3_SUCCESS && endFilePosition) + if (res == PM3_SUCCESS && endFilePosition) PrintAndLogEx(SUCCESS, "First part of k3kdes dictionary successfully loaded."); endFilePosition = 0; From 5b1e16b14eb0d883433ae54e611de70c4b30d80d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 09:24:23 +0200 Subject: [PATCH 238/527] cppcheck warning --- client/deps/cliparser/cliparser.h | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/client/deps/cliparser/cliparser.h b/client/deps/cliparser/cliparser.h index b0000f77b..0bb75413f 100644 --- a/client/deps/cliparser/cliparser.h +++ b/client/deps/cliparser/cliparser.h @@ -40,11 +40,11 @@ typedef struct { const char *programHelp; char buf[500]; } CLIParserContext; -int CLIParserInit(CLIParserContext **context, const char *vprogramName, const char *vprogramHint, const char *vprogramHelp); -int CLIParserParseString(CLIParserContext *context, const char *str, void *vargtable[], size_t vargtableLen, bool allowEmptyExec); -int CLIParserParseStringEx(CLIParserContext *context, const char *str, void *vargtable[], size_t vargtableLen, bool allowEmptyExec, bool clueData); -int CLIParserParseArg(CLIParserContext *context, int argc, char **argv, void *vargtable[], size_t vargtableLen, bool allowEmptyExec); -void CLIParserFree(CLIParserContext *context); +int CLIParserInit(CLIParserContext **ctx, const char *vprogramName, const char *vprogramHint, const char *vprogramHelp); +int CLIParserParseString(CLIParserContext *ctx, const char *str, void *vargtable[], size_t vargtableLen, bool allowEmptyExec); +int CLIParserParseStringEx(CLIParserContext *ctx, const char *str, void *vargtable[], size_t vargtableLen, bool allowEmptyExec, bool clueData); +int CLIParserParseArg(CLIParserContext *ctx, int argc, char **argv, void *vargtable[], size_t vargtableLen, bool allowEmptyExec); +void CLIParserFree(CLIParserContext *ctx); int CLIParamHexToBuf(struct arg_str *argstr, uint8_t *data, int maxdatalen, int *datalen); int CLIParamStrToBuf(struct arg_str *argstr, uint8_t *data, int maxdatalen, int *datalen); From 8ed6afa99a5ac20fd8e13e8f1f1ea6cff81be0b0 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 09:37:23 +0200 Subject: [PATCH 239/527] fix cppcheck --- client/src/cmdhfmf.c | 1 - 1 file changed, 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 9a4c36d9d..85f390b4b 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3133,7 +3133,6 @@ void showSectorTable(sector_t *k_sector, uint8_t k_sectorsCount) { if (k_sector != NULL) { printKeyTable(k_sectorsCount, k_sector); free(k_sector); - k_sector = NULL; } } From d84008449202fb9fd152594e75f39025ee98edfe Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 09:37:53 +0200 Subject: [PATCH 240/527] rearrange --- client/src/emv/cmdemv.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 4b364c85c..905bbb99e 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -1809,7 +1809,6 @@ static int CmdEMVRoca(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - EMVCommandChannel channel = ECC_CONTACTLESS; if (arg_get_lit(1)) { CLIParserFree(ctx); return roca_self_test(); @@ -1817,6 +1816,7 @@ static int CmdEMVRoca(const char *Cmd) { bool show_apdu = arg_get_lit(2); + EMVCommandChannel channel = ECC_CONTACTLESS; if (arg_get_lit(3)) channel = ECC_CONTACT; From fae243855975c080ac46bbf6343d8eddd0c13dda Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 10:38:18 +0200 Subject: [PATCH 241/527] fix cppcheck --- client/android/pm3_main.c | 112 +++++++++++++++++--------------------- 1 file changed, 50 insertions(+), 62 deletions(-) diff --git a/client/android/pm3_main.c b/client/android/pm3_main.c index d35ae25fc..5d8d51059 100644 --- a/client/android/pm3_main.c +++ b/client/android/pm3_main.c @@ -27,82 +27,67 @@ #include "fileutils.h" #include "jni_tools.h" -#define LOCAL_SOCKET_SERVER_NAME "DXL.COM.ASL" - -void ShowGraphWindow() { +//iceman, todo: proxify socker server name. Maybe set in preferences? +#define PM3_LOCAL_SOCKET_SERVER "DXL.COM.ASL" +void ShowGraphWindow(void) { } void HideGraphWindow(void) { - } -void RepaintGraphWindow() { - +void RepaintGraphWindow(void) { } int push_cmdscriptfile(char *path, bool stayafter) { return PM3_SUCCESS; } -static char *g_android_my_executable_path = NULL; -static char *g_android_my_executable_directory = NULL; +static char *g_android_executable_directory = NULL; +static const char *g_android_user_directory = NULL; -const char *get_my_executable_path(void) { - return g_android_my_executable_path; +const char *get_executable_directory(void) { + + if (g_android_executable_directory == NULL) { + char buf[FILE_PATH_SIZE] = {0}; + getcwd(buf, sizeof(buf)); + strncat(buf, PATHSEP, 1) + g_android_executable_directory = strdup(buf); + } + return g_android_executable_directory; } -const char *get_my_executable_directory(void) { - if (g_android_my_executable_directory != NULL) free(g_android_my_executable_directory); - char buf[1024]; - // get current work directory - getcwd(buf, sizeof(buf)); - // add / to end. - sprintf(buf, "%s%s", buf, PATHSEP); - // create on global - g_android_my_executable_directory = strdup(buf); - return g_android_my_executable_directory; +const char *get_user_directory(void) { + return g_android_user_directory; } -static void set_my_executable_path(void) { - -} - -static const char *my_user_directory = NULL; - -const char *get_my_user_directory(void) { - return my_user_directory; -} - -static void set_my_user_directory(void) { -} - -static bool open() { +static bool OpenPm3(void) { if (conn.run) { return true; } - // Open with LocalSocket(Not a tcp connection!) - bool ret = OpenProxmark("socket:"LOCAL_SOCKET_SERVER_NAME, false, 1000, false, 115200); + // Open with LocalSocket. Not a tcp connection! + bool ret = OpenProxmark("socket:"PM3_LOCAL_SOCKET_SERVER, false, 1000, false, 115200); return ret; } /* * Transfers to the command buffer and waits for a new command to be executed * */ -jint sendCMD(JNIEnv *env, jobject instance, jstring cmd_) { - //may be pm3 not running. +jint Console(JNIEnv *env, jobject instance, jstring cmd_) { + if (!conn.run) { - if (open() && TestProxmark() == PM3_SUCCESS) { - LOGD("Open Successfully!"); - PrintAndLogEx(NORMAL, "Open Successfully!"); + if (OpenPm3() && TestProxmark() == PM3_SUCCESS) { + LOGD("Connected to device"); + PrintAndLogEx(SUCCESS, "Connected to device"); } else { - LOGD("Open failed!"); - PrintAndLogEx(NORMAL, "Open failed!"); + LOGD("Failed to connect to device"); + PrintAndLogEx(ERR, "Failed to connect to device"); CloseProxmark(); } } - // display on new line - PrintAndLogEx(NORMAL, "\n"); + + PrintAndLogEx(NORMAL, ""); + char *cmd = (char *) ((*env)->GetStringUTFChars(env, cmd_, 0)); int ret = CommandReceived(cmd); if (ret == 99) { @@ -110,6 +95,7 @@ jint sendCMD(JNIEnv *env, jobject instance, jstring cmd_) { // TODO: implement this PrintAndLogEx(NORMAL, "Asked to exit, can't really do that yet..."); } + (*env)->ReleaseStringUTFChars(env, cmd_, cmd); return ret; } @@ -117,33 +103,34 @@ jint sendCMD(JNIEnv *env, jobject instance, jstring cmd_) { /* * Is client running! * */ -jboolean isExecuting(JNIEnv *env, jobject instance) { +jboolean IsClientRunning(JNIEnv *env, jobject instance) { return (jboolean) ((jboolean) conn.run); } /* * test hw and hw and client. * */ -jboolean testPm3(JNIEnv *env, jobject instance) { - bool ret1 = open(); - if (!ret1) { +jboolean TestPm3(JNIEnv *env, jobject instance) { + if (open() == false) { CloseProxmark(); return false; } - bool ret2 = TestProxmark() == PM3_SUCCESS; - return (jboolean) (ret1 && ret2); + bool ret = (TestProxmark() == PM3_SUCCESS); + return (jboolean) (ret); } /* * stop pm3 client * */ -void stopPm3(JNIEnv *env, jobject instance) { +void ClosePm3(JNIEnv *env, jobject instance) { CloseProxmark(); } /* * native function map to jvm * */ + + //iceman: todo, pm3:ify java class root. Return codes, should match PM3_E* codes. JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { JNIEnv *jniEnv = NULL; if ((*vm)->GetEnv(vm, (void **) &jniEnv, JNI_VERSION_1_4) != JNI_OK) { @@ -156,23 +143,24 @@ JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { } jclass clz_test = (*jniEnv)->FindClass(jniEnv, "cn/rrg/devices/Proxmark3RRGRdv4"); JNINativeMethod methods[] = { - {"startExecute", "(Ljava/lang/String;)I", (void *) sendCMD}, - {"stopExecute", "()V", (void *) stopPm3}, - {"isExecuting", "()Z", (void *) isExecuting} + {"startExecute", "(Ljava/lang/String;)I", (void *) Console}, + {"stopExecute", "()V", (void *) ClosePm3}, + {"isExecuting", "()Z", (void *) IsClientRunning} }; + JNINativeMethod methods1[] = { - {"testPm3", "()Z", (void *) testPm3}, - {"closePm3", "()V", stopPm3} + {"testPm3", "()Z", (void *) TestPm3}, + {"closePm3", "()V", ClosePm3} }; - if ((*jniEnv)->RegisterNatives(jniEnv, clazz, methods, sizeof(methods) / sizeof(methods[0])) != - JNI_OK) { + + if ((*jniEnv)->RegisterNatives(jniEnv, clazz, methods, sizeof(methods) / sizeof(methods[0])) != JNI_OK) { return -1; } - if ((*jniEnv)->RegisterNatives(jniEnv, clz_test, methods1, - sizeof(methods1) / sizeof(methods1[0])) != - JNI_OK) { + + if ((*jniEnv)->RegisterNatives(jniEnv, clz_test, methods1, sizeof(methods1) / sizeof(methods1[0])) != JNI_OK) { return -1; } + (*jniEnv)->DeleteLocalRef(jniEnv, clazz); (*jniEnv)->DeleteLocalRef(jniEnv, clz_test); return JNI_VERSION_1_4; From e42e8e4c92f7f0fcf45e4ad3df56e862aac247f3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 11:02:23 +0200 Subject: [PATCH 242/527] fix coverity 290267 --- client/src/cmdhf14a.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index b293e4c01..baa2c66cf 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -912,6 +912,7 @@ static int CmdHF14AAPDU(const char *Cmd) { makeAPDU = headerlen > 0; if (makeAPDU && headerlen != 4) { PrintAndLogEx(ERR, "header length must be 4 bytes instead of %d", headerlen); + CLIParserFree(ctx); return 1; } extendedAPDU = arg_get_lit(6); @@ -937,24 +938,27 @@ static int CmdHF14AAPDU(const char *Cmd) { if (APDUEncode(&apdu, data, &datalen)) { PrintAndLogEx(ERR, "can't make apdu with provided parameters."); + CLIParserFree(ctx); return 2; } } else { if (extendedAPDU) { PrintAndLogEx(ERR, "make mode not set but here `e` option."); + CLIParserFree(ctx); return 3; } if (le > 0) { PrintAndLogEx(ERR, "make mode not set but here `l` option."); + CLIParserFree(ctx); return 3; } // len = data + PCB(1b) + CRC(2b) CLIGetHexBLessWithReturn(ctx, 8, data, &datalen, 1 + 2); } - CLIParserFree(ctx); + PrintAndLogEx(NORMAL, ">>>>[%s%s%s] %s", activateField ? "sel " : "", leaveSignalON ? "keep " : "", decodeTLV ? "TLV" : "", sprint_hex(data, datalen)); if (decodeAPDU) { From cff9e2381d3f963f101723f355ed08f540bfffb4 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 11:02:37 +0200 Subject: [PATCH 243/527] fix coverity 290268 --- client/src/cmdhfmf.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 85f390b4b..5c0ae6cb5 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -515,7 +515,6 @@ static char *GenerateFilename(const char *prefix, const char *suffix) { static int32_t initSectorTable(sector_t **src, int32_t items) { - // initialize storage (*src) = calloc(items, sizeof(sector_t)); if (*src == NULL) @@ -3144,6 +3143,7 @@ void readerAttack(sector_t *k_sector, uint8_t k_sectorsCount, nonces_t data, boo if (k_sector == NULL) { int32_t res = initSectorTable(&k_sector, k_sectorsCount); if (res != k_sectorsCount) { + free(k_sector); return; } } @@ -3175,6 +3175,8 @@ void readerAttack(sector_t *k_sector, uint8_t k_sectorsCount, nonces_t data, boo mfEmlSetMem(memBlock, (sector * 4) + 3, 1); } } + + free(k_sector); } static int CmdHF14AMfSim(const char *Cmd) { From c81f0c7d0fa6bcbd3f08c6a0d9f67a6dbe29dc6e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 11:05:21 +0200 Subject: [PATCH 244/527] fix coverity 290270 --- client/src/mifare/mifarehost.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index df0a12ed0..dcd8698df 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -1212,6 +1212,7 @@ int mfTraceDecode(struct Crypto1State *traceCrypto1, uint8_t *data_src, int len, lfsr_rollback_word(revstate, nr_enc, 1); lfsr_rollback_word(revstate, cuid ^ nt, 0); crypto1_get_lfsr(revstate, &key); + free(revstate); PrintAndLogEx(SUCCESS, "found Key: [%012" PRIx64 "]", key); //if ( tryMfk64(cuid, nt, nr_enc, ar_enc, at_enc, &key) ) From d8ef01b69dda83bef5159ea38d562ecfb93d0d7a Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 11:06:24 +0200 Subject: [PATCH 245/527] fix coverity 290272 --- client/src/emv/cmdemv.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 905bbb99e..3c606740b 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -427,6 +427,7 @@ static int CmdEMVAC(const char *Cmd) { if (termDecision == 0xff) { PrintAndLogEx(ERR, "ERROR: can't find terminal decision '%s'", arg_get_str(3)->sval[0]); + CLIParserFree(ctx); return PM3_EINVARG; } } else { @@ -438,9 +439,11 @@ static int CmdEMVAC(const char *Cmd) { bool dataMakeFromCDOL = arg_get_lit(5); bool APDULogging = arg_get_lit(6); bool decodeTLV = arg_get_lit(7); + EMVCommandChannel channel = ECC_CONTACTLESS; if (arg_get_lit(8)) channel = ECC_CONTACT; + PrintChannel(channel); CLIGetHexWithReturn(ctx, 9, data, &datalen); CLIParserFree(ctx); From bd8edced9b2d304c542529b5bf7c351edfca1dd0 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 11:07:29 +0200 Subject: [PATCH 246/527] fix coverity 290273 --- client/src/cmdhfmfdes.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index 1d3943446..06e11ef1e 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -2482,6 +2482,7 @@ static int CmdHF14ADesWriteData(const char *Cmd) { uint8_t *data = (uint8_t *)calloc(dlength, sizeof(uint8_t)); if (data == NULL) { PrintAndLogEx(ERR, "failed to allocate memory"); + CLIParserFree(ctx); return PM3_EMALLOC; } if (CLIParamHexToBuf(arg_get_str(4), data, dlength, &dlength)) { From 19f2c0ef89b033940947f4e2d1a39e66ba10cff1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 11:09:10 +0200 Subject: [PATCH 247/527] fix coverity 290271 --- client/src/emv/cmdemv.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 3c606740b..c69888584 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -1731,7 +1731,7 @@ static int CmdEMVScan(const char *Cmd) { if (ODAI_listlen) { struct tlvdb *oda = tlvdb_fixed(0x21, ODAI_listlen, ODAI_list); // not a standard tag tlvdb_add(tlvRoot, oda); - PrintAndLogEx(INFO, "Input list for Offline Data Authentication added to TLV [%d bytes]", ODAI_listlen); + PrintAndLogEx(INFO, "Input list for Offline Data Authentication added to TLV [%zu bytes]", ODAI_listlen); } // getting certificates @@ -1988,7 +1988,7 @@ static int CmdEMVRoca(const char *Cmd) { if (ODAI_listlen) { struct tlvdb *oda = tlvdb_fixed(0x21, ODAI_listlen, ODAI_list); // not a standard tag tlvdb_add(tlvRoot, oda); - PrintAndLogEx(INFO, "Input list for Offline Data Authentication added to TLV [%d bytes]", ODAI_listlen); + PrintAndLogEx(INFO, "Input list for Offline Data Authentication added to TLV [%zu bytes]", ODAI_listlen); } if (tlvdb_get(tlvRoot, 0x90, NULL)) { From 2daa2c09fd2265f8249c4ecddb2c894dfdff1e0f Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 11:27:47 +0200 Subject: [PATCH 248/527] fix coverity 290266 --- client/deps/cliparser/cliparser.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/client/deps/cliparser/cliparser.c b/client/deps/cliparser/cliparser.c index c4795d870..1e379556d 100644 --- a/client/deps/cliparser/cliparser.c +++ b/client/deps/cliparser/cliparser.c @@ -146,9 +146,10 @@ int CLIParserParseStringEx(CLIParserContext *ctx, const char *str, void *vargtab } void CLIParserFree(CLIParserContext *ctx) { - arg_freetable(ctx->argtable, ctx->argtableLen); - free(ctx); - return; + if (ctx) { + arg_freetable(ctx->argtable, ctx->argtableLen); + free(ctx); + } } // convertors From 96076c19453f3aa7ac7a8dff0682b81ccf4d30ab Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 11:46:59 +0200 Subject: [PATCH 249/527] chg: remove unused code from "hf mf sim" --- client/src/cmdhfmf.c | 160 ------------------ client/src/mifare/mifarehost.c | 290 --------------------------------- client/src/mifare/mifarehost.h | 9 - 3 files changed, 459 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 5c0ae6cb5..7fe84f55e 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3351,166 +3351,6 @@ static int CmdHF14AMfSim(const char *Cmd) { k_sectorsCount = MIFARE_4K_MAXSECTOR; return PM3_SUCCESS; } -/* -static int CmdHF14AMfSniff(const char *Cmd) { - bool wantLogToFile = false; - bool wantDecrypt = false; - //bool wantSaveToEml = false; TODO - bool wantSaveToEmlFile = false; - - //var - int res = 0, len = 0, blockLen = 0; - int pckNum = 0, num = 0; - uint8_t sak = 0; - uint8_t uid[10]; - uint8_t uid_len = 0; - uint8_t atqa[2] = {0x00, 0x00}; - bool isTag = false; - uint8_t *buf = NULL; - uint16_t bufsize = 0; - uint8_t *bufPtr = NULL; - uint16_t traceLen = 0; - - memset(uid, 0x00, sizeof(uid)); - - char ctmp = tolower(param_getchar(Cmd, 0)); - if (ctmp == 'h') return usage_hf14_sniff(); - - for (int i = 0; i < 4; i++) { - ctmp = tolower(param_getchar(Cmd, i)); - if (ctmp == 'l') wantLogToFile = true; - if (ctmp == 'd') wantDecrypt = true; - //if (ctmp == 'e') wantSaveToEml = true; TODO - if (ctmp == 'f') wantSaveToEmlFile = true; - } - - PrintAndLogEx(NORMAL, "-------------------------------------------------------------------------\n"); - PrintAndLogEx(NORMAL, "Executing mifare sniffing command. \n"); - PrintAndLogEx(NORMAL, "Press the button on the Proxmark3 device to abort both Proxmark3 and client.\n"); - PrintAndLogEx(NORMAL, "Press Enter to abort the client.\n"); - PrintAndLogEx(NORMAL, "-------------------------------------------------------------------------\n"); - - clearCommandBuffer(); - SendCommandNG(CMD_HF_MIFARE_SNIFF, NULL, 0); - - PacketResponseNG resp; - struct Crypto1State *traceCrypto1 = NULL; - - // wait cycle - while (true) { - printf("."); - fflush(stdout); - if (kbd_enter_pressed()) { - PrintAndLogEx(INFO, "\naborted via keyboard!\n"); - break; - } - - if (!WaitForResponseTimeout(CMD_ACK, &resp, 2000)) { - continue; - } - - res = resp.oldarg[0] & 0xff; - traceLen = resp.oldarg[1]; - len = resp.oldarg[2]; - - if (res == 0) { - PrintAndLogEx(SUCCESS, "hf mifare sniff finished"); - free(buf); - return 0; - } - - if (res == 1) { // there is (more) data to be transferred - if (pckNum == 0) { // first packet, (re)allocate necessary buffer - if (traceLen > bufsize || buf == NULL) { - uint8_t *p; - if (buf == NULL) // not yet allocated - p = calloc(traceLen, sizeof(uint8_t)); - else // need more memory - p = realloc(buf, traceLen); - - if (p == NULL) { - PrintAndLogEx(FAILED, "Cannot allocate memory for trace"); - free(buf); - return 2; - } - buf = p; - } - bufPtr = buf; - bufsize = traceLen; - memset(buf, 0x00, traceLen); - } - - // what happens if LEN is bigger then TRACELEN --iceman - memcpy(bufPtr, resp.data.asBytes, len); - bufPtr += len; - pckNum++; - } - - if (res == 2) { // received all data, start displaying - blockLen = bufPtr - buf; - bufPtr = buf; - PrintAndLogEx(NORMAL, ">\n"); - PrintAndLogEx(SUCCESS, "received trace len: %d packages: %d", blockLen, pckNum); - while (bufPtr - buf < blockLen) { - bufPtr += 6; // skip (void) timing information - len = *((uint16_t *)bufPtr); - if (len & 0x8000) { - isTag = true; - len &= 0x7fff; - } else { - isTag = false; - } - bufPtr += 2; - - // the uid identification package - // 0xFF 0xFF xx xx xx xx xx xx xx xx xx xx aa aa cc 0xFF 0xFF - // x = uid, a = atqa, c = sak - if ((len == 17) && (bufPtr[0] == 0xff) && (bufPtr[1] == 0xff) && (bufPtr[15] == 0xff) && (bufPtr[16] == 0xff)) { - memcpy(uid, bufPtr + 2, 10); - memcpy(atqa, bufPtr + 2 + 10, 2); - switch (atqa[0] & 0xC0) { - case 0x80: - uid_len = 10; - break; - case 0x40: - uid_len = 7; - break; - default: - uid_len = 4; - break; - } - sak = bufPtr[14]; - PrintAndLogEx(SUCCESS, "UID %s | ATQA %02x %02x | SAK 0x%02x", - sprint_hex(uid, uid_len), - atqa[1], - atqa[0], - sak); - if (wantLogToFile || wantDecrypt) { - FillFileNameByUID(logHexFileName, uid, ".log", uid_len); - AddLogCurrentDT(logHexFileName); - PrintAndLogEx(SUCCESS, "Trace saved to %s", logHexFileName); - } - if (wantDecrypt) - mfTraceInit(&traceCrypto1, uid, uid_len, atqa, sak, wantSaveToEmlFile); - } else { - PrintAndLogEx(NORMAL, "%03d| %s |%s", num, isTag ? "TAG" : "RDR", sprint_hex(bufPtr, len)); - if (wantLogToFile) - AddLogHex(logHexFileName, isTag ? "TAG| " : "RDR| ", bufPtr, len); - if (wantDecrypt) - mfTraceDecode(traceCrypto1, bufPtr, len, wantSaveToEmlFile); - num++; - } - bufPtr += len; - bufPtr += ((len - 1) / 8 + 1); // ignore parity - } - pckNum = 0; - } - } // while (true) - - free(buf); - return PM3_SUCCESS; -} -*/ /* static int CmdHF14AMfKeyBrute(const char *Cmd) { diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index dcd8698df..8e476a424 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -944,124 +944,9 @@ int mfCGetBlock(uint8_t blockNo, uint8_t *data, uint8_t params) { // SNIFFER // [iceman] so many global variables.... -// constants -static uint8_t trailerAccessBytes[4] = {0x08, 0x77, 0x8F, 0x00}; - // variables -char logHexFileName[FILE_PATH_SIZE] = {0x00}; -static uint8_t traceCard[4096] = {0x00}; -static char traceFileName[FILE_PATH_SIZE] = {0x00}; -static int traceState = TRACE_IDLE; -static uint8_t traceCurBlock = 0; -static uint8_t traceCurKey = 0; - uint32_t cuid = 0; // uid part used for crypto1. -int isTraceCardEmpty(void) { - return ((traceCard[0] == 0) && (traceCard[1] == 0) && (traceCard[2] == 0) && (traceCard[3] == 0)); -} - -int isBlockEmpty(int blockN) { - for (int i = 0; i < 16; i++) - if (traceCard[blockN * 16 + i] != 0) return 0; - - return 1; -} - -int isBlockTrailer(int blockN) { - return ((blockN & 0x03) == 0x03); -} - -int loadTraceCard(uint8_t *tuid, uint8_t uidlen) { - FILE *f; - char buf[64] = {0x00}; - uint8_t buf8[64] = {0x00}; - int i, blockNum; - uint32_t tmp; - - if (!isTraceCardEmpty()) - saveTraceCard(); - - memset(traceCard, 0x00, 4096); - memcpy(traceCard, tuid, uidlen); - - FillFileNameByUID(traceFileName, tuid, ".eml", uidlen); - - f = fopen(traceFileName, "r"); - if (!f) return PM3_EFILE; - - blockNum = 0; - - while (!feof(f)) { - - memset(buf, 0, sizeof(buf)); - if (fgets(buf, sizeof(buf), f) == NULL) { - PrintAndLogEx(FAILED, "No trace file found or reading error."); - fclose(f); - return PM3_EFILE; - } - - if (strlen(buf) < 32) { - if (feof(f)) break; - PrintAndLogEx(FAILED, "File content error. Block data must include 32 HEX symbols"); - fclose(f); - return PM3_EFILE; - } - for (i = 0; i < 32; i += 2) { - sscanf(&buf[i], "%02X", &tmp); - buf8[i / 2] = tmp & 0xFF; - } - - memcpy(traceCard + blockNum * 16, buf8, 16); - - blockNum++; - } - fclose(f); - return PM3_SUCCESS; -} - -int saveTraceCard(void) { - - if ((!strlen(traceFileName)) || (isTraceCardEmpty())) return PM3_ESOFT; - - FILE *f; - f = fopen(traceFileName, "w+"); - if (!f) return PM3_EFILE; - - // given 4096 tracecard size, these loop will only match a 1024, 1kb card memory - // 4086/16 == 256blocks. - for (uint16_t i = 0; i < 256; i++) { // blocks - for (uint8_t j = 0; j < 16; j++) // bytes - fprintf(f, "%02X", *(traceCard + i * 16 + j)); - - // no extra line in the end - if (i < 255) - fprintf(f, "\n"); - } - fflush(f); - fclose(f); - return PM3_SUCCESS; -} -// -int mfTraceInit(struct Crypto1State **traceCrypto1, uint8_t *tuid, uint8_t uidlen, uint8_t *atqa, uint8_t sak, bool wantSaveToEmlFile) { - - if (*traceCrypto1) - crypto1_destroy(*traceCrypto1); - - *traceCrypto1 = NULL; - - if (wantSaveToEmlFile) - loadTraceCard(tuid, uidlen); - - traceCard[4] = traceCard[0] ^ traceCard[1] ^ traceCard[2] ^ traceCard[3]; - traceCard[5] = sak; - memcpy(&traceCard[6], atqa, 2); - traceCurBlock = 0; - cuid = bytes_to_num(tuid + (uidlen - 4), 4); - traceState = TRACE_IDLE; - return PM3_SUCCESS; -} - void mf_crypto1_decrypt(struct Crypto1State *pcs, uint8_t *data, int len, bool isEncrypted) { if (len != 1) { for (int i = 0; i < len; i++) @@ -1076,181 +961,6 @@ void mf_crypto1_decrypt(struct Crypto1State *pcs, uint8_t *data, int len, bool i } } -int mfTraceDecode(struct Crypto1State *traceCrypto1, uint8_t *data_src, int len, bool wantSaveToEmlFile) { - if (traceState == TRACE_ERROR) - return PM3_ESOFT; - - if (len > 255) { - traceState = TRACE_ERROR; - return PM3_ESOFT; - } - - uint8_t data[255]; - memset(data, 0x00, sizeof(data)); - - memcpy(data, data_src, len); - - if ((traceCrypto1) && ((traceState == TRACE_IDLE) || (traceState > TRACE_AUTH_OK))) { - mf_crypto1_decrypt(traceCrypto1, data, len, 0); - PrintAndLogEx(NORMAL, "DEC| %s", sprint_hex(data, len)); - AddLogHex(logHexFileName, "DEC| ", data, len); - } - - switch (traceState) { - case TRACE_IDLE: - // check packet crc16! - if ((len >= 4) && (!check_crc(CRC_14443_A, data, len))) { - PrintAndLogEx(NORMAL, "DEC| CRC ERROR!!!"); - AddLogLine(logHexFileName, "DEC| ", "CRC ERROR!!!"); - traceState = TRACE_ERROR; // do not decrypt the next commands - return PM3_ESOFT; - } - - // AUTHENTICATION - if ((len == 4) && ((data[0] == MIFARE_AUTH_KEYA) || (data[0] == MIFARE_AUTH_KEYB))) { - traceState = TRACE_AUTH1; - traceCurBlock = data[1]; - traceCurKey = data[0] == 60 ? 1 : 0; - return PM3_SUCCESS; - } - - // READ - if ((len == 4) && ((data[0] == ISO14443A_CMD_READBLOCK))) { - traceState = TRACE_READ_DATA; - traceCurBlock = data[1]; - return PM3_SUCCESS; - } - - // WRITE - if ((len == 4) && ((data[0] == ISO14443A_CMD_WRITEBLOCK))) { - traceState = TRACE_WRITE_OK; - traceCurBlock = data[1]; - return PM3_SUCCESS; - } - - // HALT - if ((len == 4) && ((data[0] == ISO14443A_CMD_HALT) && (data[1] == 0x00))) { - traceState = TRACE_ERROR; // do not decrypt the next commands - return PM3_SUCCESS; - } - return PM3_SUCCESS; - - case TRACE_READ_DATA: - if (len == 18) { - traceState = TRACE_IDLE; - - if (isBlockTrailer(traceCurBlock)) { - memcpy(traceCard + traceCurBlock * 16 + 6, data + 6, 4); - } else { - memcpy(traceCard + traceCurBlock * 16, data, 16); - } - if (wantSaveToEmlFile) saveTraceCard(); - return PM3_SUCCESS; - } else { - traceState = TRACE_ERROR; - return PM3_ESOFT; - } - break; - case TRACE_WRITE_OK: - if ((len == 1) && (data[0] == 0x0a)) { - traceState = TRACE_WRITE_DATA; - return PM3_SUCCESS; - } else { - traceState = TRACE_ERROR; - return PM3_ESOFT; - } - break; - case TRACE_WRITE_DATA: - if (len == 18) { - traceState = TRACE_IDLE; - memcpy(traceCard + traceCurBlock * 16, data, 16); - if (wantSaveToEmlFile) saveTraceCard(); - return PM3_SUCCESS; - } else { - traceState = TRACE_ERROR; - return PM3_ESOFT; - } - break; - case TRACE_AUTH1: - if (len == 4) { - traceState = TRACE_AUTH2; - //nt = bytes_to_num(data, 4); - return PM3_SUCCESS; - } else { - traceState = TRACE_ERROR; - return PM3_ESOFT; - } - break; - case TRACE_AUTH2: - if (len == 8) { - traceState = TRACE_AUTH_OK; - //nr_enc = bytes_to_num(data, 4); - //ar_enc = bytes_to_num(data + 4, 4); - return PM3_SUCCESS; - } else { - traceState = TRACE_ERROR; - return PM3_ESOFT; - } - break; - case TRACE_AUTH_OK: - if (len == 4) { - uint32_t nt = 0; // tag challenge - uint32_t nr_enc = 0; // encrypted reader challenge - uint32_t ar_enc = 0; // encrypted reader response - uint32_t at_enc = 0; // encrypted tag response - traceState = TRACE_IDLE; - // encrypted tag response - at_enc = bytes_to_num(data, 4); - - // mfkey64 recover key. - uint64_t key = 0; - uint32_t ks2 = ar_enc ^ prng_successor(nt, 64); - uint32_t ks3 = at_enc ^ prng_successor(nt, 96); - struct Crypto1State *revstate = lfsr_recovery64(ks2, ks3); - lfsr_rollback_word(revstate, 0, 0); - lfsr_rollback_word(revstate, 0, 0); - lfsr_rollback_word(revstate, nr_enc, 1); - lfsr_rollback_word(revstate, cuid ^ nt, 0); - crypto1_get_lfsr(revstate, &key); - free(revstate); - PrintAndLogEx(SUCCESS, "found Key: [%012" PRIx64 "]", key); - - //if ( tryMfk64(cuid, nt, nr_enc, ar_enc, at_enc, &key) ) - AddLogUint64(logHexFileName, "Found Key: ", key); - - int blockShift = ((traceCurBlock & 0xFC) + 3) * 16; - if (isBlockEmpty((traceCurBlock & 0xFC) + 3)) - memcpy(traceCard + blockShift + 6, trailerAccessBytes, 4); - - // keytype A/B - if (traceCurKey) - num_to_bytes(key, 6, traceCard + blockShift + 10); - else - num_to_bytes(key, 6, traceCard + blockShift); - - if (wantSaveToEmlFile) - saveTraceCard(); - - if (traceCrypto1) - crypto1_destroy(traceCrypto1); - - // set cryptosystem state - traceCrypto1 = lfsr_recovery64(ks2, ks3); - - } else { - PrintAndLogEx(WARNING, "nested key recovery not implemented!\n"); - //at_enc = bytes_to_num(data, 4); - crypto1_destroy(traceCrypto1); - traceState = TRACE_ERROR; - } - break; - default: - traceState = TRACE_ERROR; - return PM3_ESOFT; - } - return PM3_SUCCESS; -} - int tryDecryptWord(uint32_t nt, uint32_t ar_enc, uint32_t at_enc, uint8_t *data, int len) { PrintAndLogEx(SUCCESS, "\nencrypted data: [%s]", sprint_hex(data, len)); struct Crypto1State *s; diff --git a/client/src/mifare/mifarehost.h b/client/src/mifare/mifarehost.h index 0595b2f8b..fc3a571be 100644 --- a/client/src/mifare/mifarehost.h +++ b/client/src/mifare/mifarehost.h @@ -54,7 +54,6 @@ typedef struct { //uint8_t foundKey[2]; } icesector_t; -extern char logHexFileName[FILE_PATH_SIZE]; #define KEYS_IN_BLOCK ((PM3_CMD_DATA_SIZE - 4) / 6) #define KEYBLOCK_SIZE (KEYS_IN_BLOCK * 6) #define CANDIDATE_SIZE (0xFFFF * 6) @@ -81,14 +80,6 @@ int mfCWipe(uint8_t *uid, uint8_t *atqa, uint8_t *sak); int mfCSetBlock(uint8_t blockNo, uint8_t *data, uint8_t *uid, uint8_t params); int mfCGetBlock(uint8_t blockNo, uint8_t *data, uint8_t params); -int mfTraceInit(struct Crypto1State **traceCrypto1, uint8_t *tuid, uint8_t uidlen, uint8_t *atqa, uint8_t sak, bool wantSaveToEmlFile); -int mfTraceDecode(struct Crypto1State *traceCrypto1, uint8_t *data_src, int len, bool wantSaveToEmlFile); - -int isTraceCardEmpty(void); -int isBlockEmpty(int blockN); -int isBlockTrailer(int blockN); -int loadTraceCard(uint8_t *tuid, uint8_t uidlen); -int saveTraceCard(void); int tryDecryptWord(uint32_t nt, uint32_t ar_enc, uint32_t at_enc, uint8_t *data, int len); int detect_classic_prng(void); From f5efcc43f0e9a69fff5f65818227846df6204b58 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 11:54:31 +0200 Subject: [PATCH 250/527] fix coverity 290111 --- client/src/cmdhfmfdes.c | 13 ++++++++++--- 1 file changed, 10 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index 06e11ef1e..d56218e4b 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -4073,15 +4073,22 @@ static int CmdHF14aDesChk(const char *Cmd) { if (dict_filenamelen && endFilePosition) { if (!verbose) printf("d"); + uint32_t keycnt = 0; res = loadFileDICTIONARYEx((char *)dict_filename, deskeyList, sizeof(deskeyList), NULL, 16, &keycnt, endFilePosition, &endFilePosition, false); - deskeyListLen = keycnt; + if (res == PM3_SUCCESS && endFilePosition) + deskeyListLen = keycnt; + keycnt = 0; res = loadFileDICTIONARYEx((char *)dict_filename, aeskeyList, sizeof(aeskeyList), NULL, 16, &keycnt, endFilePosition, &endFilePosition, false); - aeskeyListLen = keycnt; + if (res == PM3_SUCCESS && endFilePosition) + aeskeyListLen = keycnt; + keycnt = 0; res = loadFileDICTIONARYEx((char *)dict_filename, k3kkeyList, sizeof(k3kkeyList), NULL, 16, &keycnt, endFilePosition, &endFilePosition, false); - k3kkeyListLen = keycnt; + if (res == PM3_SUCCESS && endFilePosition) + k3kkeyListLen = keycnt; + continue; } } From c6072d7a45e53f6df1809155dca64b1244361ef4 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 11:54:42 +0200 Subject: [PATCH 251/527] chg, textual --- client/src/preferences.c | 19 ++++++++----------- 1 file changed, 8 insertions(+), 11 deletions(-) diff --git a/client/src/preferences.c b/client/src/preferences.c index 5ae73b902..b5599f1ba 100644 --- a/client/src/preferences.c +++ b/client/src/preferences.c @@ -88,7 +88,7 @@ int preferences_load(void) { // to better control json cant find file error msg. char *fn = prefGetFilename(); if (fileExists(fn)) { - PrintAndLogEx(INFO, "Loading Preferences..."); + PrintAndLogEx(INFO, "Loading preferences..."); if (loadFileJSON(fn, &dummyData, sizeof(dummyData), &dummyDL, &preferences_load_callback) == PM3_SUCCESS) { session.preferences_loaded = true; } @@ -104,7 +104,7 @@ int preferences_load(void) { int preferences_save(void) { // Note sure if backup has value ? - PrintAndLogEx(INFO, "Saving Preferences..."); + PrintAndLogEx(INFO, "Saving preferences..."); char *fn = prefGetFilename(); int fnLen = strlen(fn) + 5; // .bak\0 @@ -908,18 +908,16 @@ static int CmdPrefSet(const char *Cmd) { static int CmdPrefShow(const char *Cmd) { - char *fn = prefGetFilename(); - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(NORMAL, _CYAN_("Preferences loaded from %s"), fn); - - free(fn); - - if (!session.preferences_loaded) { + if (session.preferences_loaded) { + char *fn = prefGetFilename(); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, _CYAN_("Preferences loaded from " _YELLOW_("%s")), fn); + free(fn); + } else { PrintAndLogEx(ERR, "Preferences not loaded"); return PM3_ESOFT; } - // PrintAndLogEx(NORMAL, " preference file........ "_GREEN_("%s"), fn); showEmojiState(prefShowNone); showHintsState(prefShowNone); showColorState(prefShowNone); @@ -931,7 +929,6 @@ static int CmdPrefShow(const char *Cmd) { showClientDebugState(prefShowNone); // showDeviceDebugState(prefShowNone); - PrintAndLogEx(NORMAL, ""); return PM3_SUCCESS; } /* From 0b33746c83d6892662642995b819844056b6591a Mon Sep 17 00:00:00 2001 From: Iceman <iceman@iuse.se> Date: Tue, 2 Jun 2020 12:06:15 +0200 Subject: [PATCH 252/527] Update README.md --- README.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index ba17074d3..7a31880cf 100644 --- a/README.md +++ b/README.md @@ -5,7 +5,8 @@ | Releases | Linux & OSX CI | Windows CI | Coverity | | ------------------- |:-------------------:| -------------------:| -------------------:| -| [![Latest release](https://img.shields.io/github/release/RfidResearchGroup/proxmark3.svg)](https://github.com/RfidResearchGroup/proxmark3/releases/latest) | [![Build status](https://api.travis-ci.org/RfidResearchGroup/proxmark3.svg?branch=master)](https://travis-ci.org/RfidResearchGroup/proxmark3) | [![Build status](https://ci.appveyor.com/api/projects/status/b4gwrhq3nc876cuu/branch/master?svg=true)](https://ci.appveyor.com/project/RfidResearchGroup/proxmark3/branch/master) | [![Coverity Status](https://scan.coverity.com/projects/19334/badge.svg)](https://scan.coverity.com/projects/proxmark3-rrg-iceman-repo)| +| [![Latest release](https://img.shields.io/github/v/release/rfidresearchgroup/proxmark3)](https://github.com/RfidResearchGroup/proxmark3/releases/latest) +| [![Build status](https://api.travis-ci.org/RfidResearchGroup/proxmark3.svg?branch=master)](https://travis-ci.org/RfidResearchGroup/proxmark3) | [![Build status](https://ci.appveyor.com/api/projects/status/b4gwrhq3nc876cuu/branch/master?svg=true)](https://ci.appveyor.com/project/RfidResearchGroup/proxmark3/branch/master) | [![Coverity Status](https://scan.coverity.com/projects/19334/badge.svg)](https://scan.coverity.com/projects/proxmark3-rrg-iceman-repo)| From 6022f374d54d8c6760558242491441c403343642 Mon Sep 17 00:00:00 2001 From: Iceman <iceman@iuse.se> Date: Tue, 2 Jun 2020 12:06:57 +0200 Subject: [PATCH 253/527] Update README.md --- README.md | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/README.md b/README.md index 7a31880cf..f5482bc6b 100644 --- a/README.md +++ b/README.md @@ -5,8 +5,7 @@ | Releases | Linux & OSX CI | Windows CI | Coverity | | ------------------- |:-------------------:| -------------------:| -------------------:| -| [![Latest release](https://img.shields.io/github/v/release/rfidresearchgroup/proxmark3)](https://github.com/RfidResearchGroup/proxmark3/releases/latest) -| [![Build status](https://api.travis-ci.org/RfidResearchGroup/proxmark3.svg?branch=master)](https://travis-ci.org/RfidResearchGroup/proxmark3) | [![Build status](https://ci.appveyor.com/api/projects/status/b4gwrhq3nc876cuu/branch/master?svg=true)](https://ci.appveyor.com/project/RfidResearchGroup/proxmark3/branch/master) | [![Coverity Status](https://scan.coverity.com/projects/19334/badge.svg)](https://scan.coverity.com/projects/proxmark3-rrg-iceman-repo)| +| [![Latest release](https://img.shields.io/github/v/release/rfidresearchgroup/proxmark3)](https://github.com/RfidResearchGroup/proxmark3/releases/latest) | [![Build status](https://api.travis-ci.org/RfidResearchGroup/proxmark3.svg?branch=master)](https://travis-ci.org/RfidResearchGroup/proxmark3) | [![Build status](https://ci.appveyor.com/api/projects/status/b4gwrhq3nc876cuu/branch/master?svg=true)](https://ci.appveyor.com/project/RfidResearchGroup/proxmark3/branch/master) | [![Coverity Status](https://scan.coverity.com/projects/19334/badge.svg)](https://scan.coverity.com/projects/proxmark3-rrg-iceman-repo)| From e67c515451d95b4c41c04f39bd3410da324494e6 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 12:49:18 +0200 Subject: [PATCH 254/527] fix cppchecker --- armsrc/spiffs_hydrogen.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/armsrc/spiffs_hydrogen.c b/armsrc/spiffs_hydrogen.c index 7290e676a..a166c3b7a 100644 --- a/armsrc/spiffs_hydrogen.c +++ b/armsrc/spiffs_hydrogen.c @@ -39,13 +39,12 @@ s32_t SPIFFS_format(spiffs *fs) { return -1; } - s32_t res; SPIFFS_LOCK(fs); spiffs_block_ix bix = 0; while (bix < fs->block_count) { fs->max_erase_count = 0; - res = spiffs_erase_block(fs, bix); + s32_t res = spiffs_erase_block(fs, bix); if (res != SPIFFS_OK) { res = SPIFFS_ERR_ERASE_FAIL; } @@ -1121,11 +1120,11 @@ s32_t SPIFFS_check(spiffs *fs) { SPIFFS_LOCK(fs); res = spiffs_lookup_consistency_check(fs, 0); - + (void)res; res = spiffs_object_index_consistency_check(fs); - + (void)res; res = spiffs_page_consistency_check(fs); - + (void)res; res = spiffs_obj_lu_scan(fs); SPIFFS_UNLOCK(fs); From 9594619af3db8ea922ce49aa083e7e32404c94b3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 12:51:45 +0200 Subject: [PATCH 255/527] fix cppchecker --- bootrom/bootrom.c | 10 +++------- 1 file changed, 3 insertions(+), 7 deletions(-) diff --git a/bootrom/bootrom.c b/bootrom/bootrom.c index 7f4e38ac7..77305f22c 100644 --- a/bootrom/bootrom.c +++ b/bootrom/bootrom.c @@ -38,12 +38,8 @@ static int reply_old(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, } } - int result = PM3_EUNDEF; // Send frame and make sure all bytes are transmitted - - result = usb_write((uint8_t *)&txcmd, sizeof(PacketResponseOLD)); - - return result; + return usb_write((uint8_t *)&txcmd, sizeof(PacketResponseOLD)); } #if DEBUG @@ -80,7 +76,7 @@ static void Fatal(void) { } static void UsbPacketReceived(uint8_t *packet) { - int i, dont_ack = 0; + int dont_ack = 0; PacketCommandOLD *c = (PacketCommandOLD *)packet; //if ( len != sizeof(PacketCommandOLD`)) Fatal(); @@ -128,7 +124,7 @@ static void UsbPacketReceived(uint8_t *packet) { // We need to offset the writes or it will not fill the correct bank write buffer. offset = (AT91C_IFLASH_NB_OF_PAGES / 2) * AT91C_IFLASH_PAGE_SIZE / sizeof(uint32_t); } - for (i = 0 + (64 * j); i < 64 + (64 * j); i++) { + for (int i = 0 + (64 * j); i < 64 + (64 * j); i++) { _flash_start[offset + i] = c->d.asDwords[i]; } From 422e0187185fc976a9e41c8bc746cada37e46849 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 12:56:20 +0200 Subject: [PATCH 256/527] cppcheck --- client/deps/hardnested/hardnested_bf_core.c | 17 +++++++++++------ 1 file changed, 11 insertions(+), 6 deletions(-) diff --git a/client/deps/hardnested/hardnested_bf_core.c b/client/deps/hardnested/hardnested_bf_core.c index b8fd56cf2..5f4fcf991 100644 --- a/client/deps/hardnested/hardnested_bf_core.c +++ b/client/deps/hardnested/hardnested_bf_core.c @@ -557,17 +557,22 @@ void SetSIMDInstr(SIMDExecInstr instr) { } static SIMDExecInstr GetSIMDInstr(void) { - SIMDExecInstr instr = SIMD_NONE; + SIMDExecInstr instr; #if defined(COMPILER_HAS_SIMD_AVX512) - if (__builtin_cpu_supports("avx512f")) instr = SIMD_AVX512; + if (__builtin_cpu_supports("avx512f")) + instr = SIMD_AVX512; else #endif #if defined(COMPILER_HAS_SIMD) - if (__builtin_cpu_supports("avx2")) instr = SIMD_AVX2; - else if (__builtin_cpu_supports("avx")) instr = SIMD_AVX; - else if (__builtin_cpu_supports("sse2")) instr = SIMD_SSE2; - else if (__builtin_cpu_supports("mmx")) instr = SIMD_MMX; + if (__builtin_cpu_supports("avx2")) + instr = SIMD_AVX2; + else if (__builtin_cpu_supports("avx")) + instr = SIMD_AVX; + else if (__builtin_cpu_supports("sse2")) + instr = SIMD_SSE2; + else if (__builtin_cpu_supports("mmx")) + instr = SIMD_MMX; else #endif instr = SIMD_NONE; From cc6f497897b762ba8ef96fcdd7b37218414f9f89 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 12:56:38 +0200 Subject: [PATCH 257/527] cppcheck --- client/deps/cliparser/argtable3.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/deps/cliparser/argtable3.c b/client/deps/cliparser/argtable3.c index f64688b2a..f0b6a4d37 100644 --- a/client/deps/cliparser/argtable3.c +++ b/client/deps/cliparser/argtable3.c @@ -3398,13 +3398,13 @@ void trex_free(TRex *exp) { } TRexBool trex_match(TRex *exp, const TRexChar *text) { - const TRexChar *res = NULL; exp->_bol = text; exp->_eol = text + scstrlen(text); exp->_currsubexp = 0; - res = trex_matchnode(exp, exp->_nodes, text, NULL); - if (res == NULL || res != exp->_eol) + const TRexChar *res = trex_matchnode(exp, exp->_nodes, text, NULL); + if (res == NULL || res != exp->_eol) { return TRex_False; + } return TRex_True; } From 89f43c12216be38534ffbebc61c995d56b2ccc17 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 12:58:37 +0200 Subject: [PATCH 258/527] cppchecker --- armsrc/frozen.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/armsrc/frozen.c b/armsrc/frozen.c index 4abd21ebf..b8a6f3a02 100644 --- a/armsrc/frozen.c +++ b/armsrc/frozen.c @@ -1471,10 +1471,9 @@ char *json_vasprintf(const char *fmt, va_list ap) { char *json_asprintf(const char *fmt, ...) WEAK; char *json_asprintf(const char *fmt, ...) { - char *result = NULL; va_list ap; va_start(ap, fmt); - result = json_vasprintf(fmt, ap); + char *result = json_vasprintf(fmt, ap); va_end(ap); return result; } From 05c5179b41d66fe9276339dfc73d5885d6c3f6fc Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 13:00:36 +0200 Subject: [PATCH 259/527] cppchecker --- client/src/emv/cmdemv.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index c69888584..f1e047c15 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -146,9 +146,8 @@ static int CmdEMVSearch(const char *Cmd) { SetAPDULogging(APDULogging); - struct tlvdb *t = NULL; const char *al = "Applets list"; - t = tlvdb_fixed(1, strlen(al), (const unsigned char *)al); + struct tlvdb *t = tlvdb_fixed(1, strlen(al), (const unsigned char *)al); if (EMVSearch(channel, activateField, leaveSignalON, decodeTLV, t)) { tlvdb_free(t); From 5c1b99b0487ecfb94a321566b1febd09e526f9b9 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 13:01:11 +0200 Subject: [PATCH 260/527] cppchecker --- client/src/emv/emvcore.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/src/emv/emvcore.c b/client/src/emv/emvcore.c index 3d9d3702f..cb68b9a5d 100644 --- a/client/src/emv/emvcore.c +++ b/client/src/emv/emvcore.c @@ -165,8 +165,7 @@ static void print_cb(void *data, const struct tlv *tlv, int level, bool is_leaf) } bool TLVPrintFromBuffer(uint8_t *data, int datalen) { - struct tlvdb *t = NULL; - t = tlvdb_parse_multi(data, datalen); + struct tlvdb *t = tlvdb_parse_multi(data, datalen); if (t) { PrintAndLogEx(INFO, "-------------------- " _CYAN_("TLV decoded") " --------------------"); From 295286e68aec9327a3580417009ec506abdf651a Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 13:02:21 +0200 Subject: [PATCH 261/527] cppchecker --- client/src/emv/emvcore.c | 7 +++---- 1 file changed, 3 insertions(+), 4 deletions(-) diff --git a/client/src/emv/emvcore.c b/client/src/emv/emvcore.c index cb68b9a5d..6647dbf8b 100644 --- a/client/src/emv/emvcore.c +++ b/client/src/emv/emvcore.c @@ -439,8 +439,6 @@ int EMVSearchPSE(EMVCommandChannel channel, bool ActivateField, bool LeaveFieldO size_t sfidatalen[0x11] = {0}; uint16_t sw = 0; int res; - bool fileFound = false; - const char *PSE_or_PPSE = PSENum == 1 ? "PSE" : "PPSE"; // select PPSE @@ -452,8 +450,9 @@ int EMVSearchPSE(EMVCommandChannel channel, bool ActivateField, bool LeaveFieldO return 1; } - struct tlvdb *t = NULL; - t = tlvdb_parse_multi(data, datalen); + bool fileFound = false; + + struct tlvdb *t = tlvdb_parse_multi(data, datalen); if (t) { // PSE/PPSE with SFI struct tlvdb *tsfi = tlvdb_find_path(t, (tlv_tag_t[]) {0x6f, 0xa5, 0x88, 0x00}); From 9883343cccde13da9e72adee937bcaa7f8541d16 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 13:03:11 +0200 Subject: [PATCH 262/527] cppchecker --- common/generator.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/common/generator.c b/common/generator.c index 513806fba..f189d09e3 100644 --- a/common/generator.c +++ b/common/generator.c @@ -424,14 +424,14 @@ int generator_selftest(void) { PrintAndLogEx(INFO, "PWD / KEY generator selftest"); PrintAndLogEx(INFO, "----------------------------"); - bool success = false; uint8_t testresult = 0; uint8_t uid1[] = {0x04, 0x11, 0x12, 0x11, 0x12, 0x11, 0x10}; uint32_t pwd1 = ul_ev1_pwdgenA(uid1); - success = (pwd1 == 0x8432EB17); + bool success = (pwd1 == 0x8432EB17); if (success) testresult++; + PrintAndLogEx(success ? SUCCESS : WARNING, "UID | %s | %08X - %s", sprint_hex(uid1, 7), pwd1, success ? "OK" : "->8432EB17<-"); uint8_t uid2[] = {0x04, 0x1f, 0x98, 0xea, 0x1e, 0x3e, 0x81}; From dec92755b6bc99fabc448aa346dbecb5e25fd864 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 13:04:23 +0200 Subject: [PATCH 263/527] cppchecker --- tools/hitag2crack/common/ht2crackutils.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/hitag2crack/common/ht2crackutils.c b/tools/hitag2crack/common/ht2crackutils.c index 8b67cf789..ac492ffa0 100644 --- a/tools/hitag2crack/common/ht2crackutils.c +++ b/tools/hitag2crack/common/ht2crackutils.c @@ -190,7 +190,6 @@ unsigned long hexreversetoulong(char *hex) { // convert byte-reversed 12 digit hex to unsigned long unsigned long long hexreversetoulonglong(char *hex) { - unsigned long long ret = 0LL; char tmp[9]; // this may seem an odd way to do it, but weird compiler issues were @@ -199,7 +198,7 @@ unsigned long long hexreversetoulonglong(char *hex) { tmp[8] = '\0'; memset(tmp + 4, '0', 4); memcpy(tmp, hex + 8, 4); - ret = hexreversetoulong(tmp); + unsigned long long ret = hexreversetoulong(tmp); ret <<= 32; memcpy(tmp, hex, 8); ret += hexreversetoulong(tmp); From b0b51e4222eb73050beac7ded715c256c1aa035f Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 13:05:19 +0200 Subject: [PATCH 264/527] cppchecker --- tools/hitag2crack/crack2/ht2crack2buildtable.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/tools/hitag2crack/crack2/ht2crack2buildtable.c b/tools/hitag2crack/crack2/ht2crack2buildtable.c index 01cd0364c..6f8319a02 100644 --- a/tools/hitag2crack/crack2/ht2crack2buildtable.c +++ b/tools/hitag2crack/crack2/ht2crack2buildtable.c @@ -375,13 +375,12 @@ static void *sorttable(void *dd) { char outfile[64]; unsigned char *data = NULL; struct stat filestat; - unsigned char *table = NULL; uint64_t numentries = 0; int index = (int)(long)dd; int space = 0x100 / NUM_SORT_THREADS; // create table - 50MB should be enough - table = (unsigned char *)malloc(50UL * 1024UL * 1024UL); + unsigned char *table = (unsigned char *)malloc(50UL * 1024UL * 1024UL); if (!table) { printf("sorttable: cannot malloc table\n"); exit(1); From 1b9490c6aa8125c591b75c015c7efd84e9ae8de0 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 13:07:25 +0200 Subject: [PATCH 265/527] cppchecker --- tools/mf_nonce_brute/mf_nonce_brute.c | 1 + 1 file changed, 1 insertion(+) diff --git a/tools/mf_nonce_brute/mf_nonce_brute.c b/tools/mf_nonce_brute/mf_nonce_brute.c index 7edcf4824..8e769b5b5 100644 --- a/tools/mf_nonce_brute/mf_nonce_brute.c +++ b/tools/mf_nonce_brute/mf_nonce_brute.c @@ -269,6 +269,7 @@ static void *brute_thread(void *arguments) { uint8_t isOK = 0; // check if cmd exists isOK = checkValidCmd(decrypted); + (void)isOK; // Add a crc-check. isOK = checkCRC(decrypted); From f830843442664eb70ad0361a4d7eee8e30044021 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 13:09:29 +0200 Subject: [PATCH 266/527] coverity.. --- client/deps/cliparser/cliparser.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/deps/cliparser/cliparser.c b/client/deps/cliparser/cliparser.c index 1e379556d..b3beb6ae0 100644 --- a/client/deps/cliparser/cliparser.c +++ b/client/deps/cliparser/cliparser.c @@ -146,9 +146,10 @@ int CLIParserParseStringEx(CLIParserContext *ctx, const char *str, void *vargtab } void CLIParserFree(CLIParserContext *ctx) { - if (ctx) { + if (ctx != NULL) { arg_freetable(ctx->argtable, ctx->argtableLen); free(ctx); + ctx = NULL; } } From 7064b73b483891b4a73e78c59cddcc25f3cbef35 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 13:27:54 +0200 Subject: [PATCH 267/527] chg parsing free Thanks @doegox! --- client/deps/cliparser/cliparser.c | 7 ++----- client/deps/cliparser/cliparser.h | 9 +++++---- 2 files changed, 7 insertions(+), 9 deletions(-) diff --git a/client/deps/cliparser/cliparser.c b/client/deps/cliparser/cliparser.c index b3beb6ae0..25cd786d7 100644 --- a/client/deps/cliparser/cliparser.c +++ b/client/deps/cliparser/cliparser.c @@ -146,11 +146,8 @@ int CLIParserParseStringEx(CLIParserContext *ctx, const char *str, void *vargtab } void CLIParserFree(CLIParserContext *ctx) { - if (ctx != NULL) { - arg_freetable(ctx->argtable, ctx->argtableLen); - free(ctx); - ctx = NULL; - } + arg_freetable(ctx->argtable, ctx->argtableLen); + free(ctx); } // convertors diff --git a/client/deps/cliparser/cliparser.h b/client/deps/cliparser/cliparser.h index 0bb75413f..b88acefc5 100644 --- a/client/deps/cliparser/cliparser.h +++ b/client/deps/cliparser/cliparser.h @@ -27,10 +27,11 @@ #define arg_strx1(shortopts, longopts, datatype, glossary) (arg_strn((shortopts), (longopts), (datatype), 1, 250, (glossary))) #define arg_strx0(shortopts, longopts, datatype, glossary) (arg_strn((shortopts), (longopts), (datatype), 0, 250, (glossary))) -#define CLIExecWithReturn(ctx, cmd, atbl, ifempty) if (CLIParserParseString(ctx, cmd, atbl, arg_getsize(atbl), ifempty)){CLIParserFree(ctx);return PM3_ESOFT;} -#define CLIGetHexBLessWithReturn(ctx, paramnum, data, datalen, delta) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data) - (delta), datalen)) {CLIParserFree(ctx);return PM3_ESOFT;} -#define CLIGetHexWithReturn(ctx, paramnum, data, datalen) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {CLIParserFree(ctx);return PM3_ESOFT;} -#define CLIGetStrWithReturn(ctx, paramnum, data, datalen) if (CLIParamStrToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {CLIParserFree(ctx);return PM3_ESOFT;} +#define CLIFree(ctx) if ((ctx)) {CLIParserFree((ctx)); (ctx)=NULL;} +#define CLIExecWithReturn(ctx, cmd, atbl, ifempty) if (CLIParserParseString(ctx, cmd, atbl, arg_getsize(atbl), ifempty)){if ((ctx)) CLIParserFree((ctx)); (ctx)=NULL;return PM3_ESOFT;} +#define CLIGetHexBLessWithReturn(ctx, paramnum, data, datalen, delta) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data) - (delta), datalen)) {if ((ctx)) CLIParserFree((ctx)); (ctx)=NULL;return PM3_ESOFT;} +#define CLIGetHexWithReturn(ctx, paramnum, data, datalen) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {if ((ctx)) CLIParserFree((ctx)); (ctx)=NULL;return PM3_ESOFT;} +#define CLIGetStrWithReturn(ctx, paramnum, data, datalen) if (CLIParamStrToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {if ((ctx)) CLIParserFree((ctx)); (ctx)=NULL;return PM3_ESOFT;} typedef struct { void **argtable; From 653f5b4e5dfd520796a91d3c3e277646391c946a Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 13:35:16 +0200 Subject: [PATCH 268/527] chg: make define --- client/deps/cliparser/cliparser.c | 5 ----- client/deps/cliparser/cliparser.h | 12 ++++++------ 2 files changed, 6 insertions(+), 11 deletions(-) diff --git a/client/deps/cliparser/cliparser.c b/client/deps/cliparser/cliparser.c index 25cd786d7..f0ba57d40 100644 --- a/client/deps/cliparser/cliparser.c +++ b/client/deps/cliparser/cliparser.c @@ -145,11 +145,6 @@ int CLIParserParseStringEx(CLIParserContext *ctx, const char *str, void *vargtab return CLIParserParseArg(ctx, argc, argv, vargtable, vargtableLen, allowEmptyExec); } -void CLIParserFree(CLIParserContext *ctx) { - arg_freetable(ctx->argtable, ctx->argtableLen); - free(ctx); -} - // convertors int CLIParamHexToBuf(struct arg_str *argstr, uint8_t *data, int maxdatalen, int *datalen) { *datalen = 0; diff --git a/client/deps/cliparser/cliparser.h b/client/deps/cliparser/cliparser.h index b88acefc5..990e6d8d6 100644 --- a/client/deps/cliparser/cliparser.h +++ b/client/deps/cliparser/cliparser.h @@ -11,6 +11,7 @@ #ifndef __CLIPARSER_H #define __CLIPARSER_H #include "argtable3.h" +#include <stdlib.h> #include "util.h" #define arg_param_begin arg_lit0("hH", "help", "This help") @@ -27,11 +28,11 @@ #define arg_strx1(shortopts, longopts, datatype, glossary) (arg_strn((shortopts), (longopts), (datatype), 1, 250, (glossary))) #define arg_strx0(shortopts, longopts, datatype, glossary) (arg_strn((shortopts), (longopts), (datatype), 0, 250, (glossary))) -#define CLIFree(ctx) if ((ctx)) {CLIParserFree((ctx)); (ctx)=NULL;} -#define CLIExecWithReturn(ctx, cmd, atbl, ifempty) if (CLIParserParseString(ctx, cmd, atbl, arg_getsize(atbl), ifempty)){if ((ctx)) CLIParserFree((ctx)); (ctx)=NULL;return PM3_ESOFT;} -#define CLIGetHexBLessWithReturn(ctx, paramnum, data, datalen, delta) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data) - (delta), datalen)) {if ((ctx)) CLIParserFree((ctx)); (ctx)=NULL;return PM3_ESOFT;} -#define CLIGetHexWithReturn(ctx, paramnum, data, datalen) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {if ((ctx)) CLIParserFree((ctx)); (ctx)=NULL;return PM3_ESOFT;} -#define CLIGetStrWithReturn(ctx, paramnum, data, datalen) if (CLIParamStrToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {if ((ctx)) CLIParserFree((ctx)); (ctx)=NULL;return PM3_ESOFT;} +#define CLIParserFree(ctx) if ((ctx)) {arg_freetable(ctx->argtable, ctx->argtableLen); free((ctx)); (ctx)=NULL;} +#define CLIExecWithReturn(ctx, cmd, atbl, ifempty) if (CLIParserParseString(ctx, cmd, atbl, arg_getsize(atbl), ifempty)) {CLIParserFree((ctx)); return PM3_ESOFT;} +#define CLIGetHexBLessWithReturn(ctx, paramnum, data, datalen, delta) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data) - (delta), datalen)) {CLIParserFree((ctx)); return PM3_ESOFT;} +#define CLIGetHexWithReturn(ctx, paramnum, data, datalen) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {CLIParserFree((ctx)); return PM3_ESOFT;} +#define CLIGetStrWithReturn(ctx, paramnum, data, datalen) if (CLIParamStrToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {CLIParserFree((ctx)); return PM3_ESOFT;} typedef struct { void **argtable; @@ -45,7 +46,6 @@ int CLIParserInit(CLIParserContext **ctx, const char *vprogramName, const char * int CLIParserParseString(CLIParserContext *ctx, const char *str, void *vargtable[], size_t vargtableLen, bool allowEmptyExec); int CLIParserParseStringEx(CLIParserContext *ctx, const char *str, void *vargtable[], size_t vargtableLen, bool allowEmptyExec, bool clueData); int CLIParserParseArg(CLIParserContext *ctx, int argc, char **argv, void *vargtable[], size_t vargtableLen, bool allowEmptyExec); -void CLIParserFree(CLIParserContext *ctx); int CLIParamHexToBuf(struct arg_str *argstr, uint8_t *data, int maxdatalen, int *datalen); int CLIParamStrToBuf(struct arg_str *argstr, uint8_t *data, int maxdatalen, int *datalen); From 6980429bd4c01a716c9168b05dd2f805b7e35940 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 2 Jun 2020 14:12:28 +0200 Subject: [PATCH 269/527] ARM: remove contradictory flag -fno-strict-aliasing as we have -fstrict-aliasing in Makefile.common --- armsrc/Makefile | 2 +- bootrom/Makefile | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/armsrc/Makefile b/armsrc/Makefile index f9e33f5e5..23ac247c3 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -20,7 +20,7 @@ endif #in the next section to remove that particular feature from compilation. # NO space,TABs after the "\" sign. APP_CFLAGS = $(PLATFORM_DEFS) \ - -fno-strict-aliasing -ffunction-sections -fdata-sections + -ffunction-sections -fdata-sections SRC_LF = lfops.c lfsampling.c pcf7931.c lfdemod.c lfadc.c SRC_ISO15693 = iso15693.c iso15693tools.c diff --git a/bootrom/Makefile b/bootrom/Makefile index 785293ca6..75a4e5ced 100644 --- a/bootrom/Makefile +++ b/bootrom/Makefile @@ -23,7 +23,7 @@ VERSIONSRC = version.c # THUMBSRC := # stdint.h provided locally until GCC 4.5 becomes C99 compliant -APP_CFLAGS = -I. -fno-strict-aliasing -ffunction-sections -fdata-sections +APP_CFLAGS = -I. -ffunction-sections -fdata-sections # stack-protect , no-pie reduces size on Gentoo Hardened 8.2 gcc APP_CFLAGS += -fno-stack-protector -fno-pie From 04bf1b8db7666d18dc959104600c2e97882cc789 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 2 Jun 2020 18:18:33 +0200 Subject: [PATCH 270/527] cppchecker --- client/src/fileutils.c | 25 +++++++++---------------- 1 file changed, 9 insertions(+), 16 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index d8176f65c..9fc8d5f95 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -346,37 +346,30 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, } if (mfIsSectorTrailer(i)) { - memset(path, 0x00, sizeof(path)); - sprintf(path, "$.SectorKeys.%d.KeyA", mfSectorNum(i)); + + snprintf(path, sizeof(path), "$.SectorKeys.%d.KeyA", mfSectorNum(i)); JsonSaveBufAsHexCompact(root, path, &data[i * 16], 6); - memset(path, 0x00, sizeof(path)); - sprintf(path, "$.SectorKeys.%d.KeyB", mfSectorNum(i)); + snprintf(path, sizeof(path), "$.SectorKeys.%d.KeyB", mfSectorNum(i)); JsonSaveBufAsHexCompact(root, path, &data[i * 16 + 10], 6); - memset(path, 0x00, sizeof(path)); uint8_t *adata = &data[i * 16 + 6]; - sprintf(path, "$.SectorKeys.%d.AccessConditions", mfSectorNum(i)); + snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditions", mfSectorNum(i)); JsonSaveBufAsHexCompact(root, path, &data[i * 16 + 6], 4); - memset(path, 0x00, sizeof(path)); - sprintf(path, "$.SectorKeys.%d.AccessConditionsText.block%zu", mfSectorNum(i), i - 3); + snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditionsText.block%zu", mfSectorNum(i), i - 3); JsonSaveStr(root, path, mfGetAccessConditionsDesc(0, adata)); - memset(path, 0x00, sizeof(path)); - sprintf(path, "$.SectorKeys.%d.AccessConditionsText.block%zu", mfSectorNum(i), i - 2); + snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditionsText.block%zu", mfSectorNum(i), i - 2); JsonSaveStr(root, path, mfGetAccessConditionsDesc(1, adata)); - memset(path, 0x00, sizeof(path)); - sprintf(path, "$.SectorKeys.%d.AccessConditionsText.block%zu", mfSectorNum(i), i - 1); + snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditionsText.block%zu", mfSectorNum(i), i - 1); JsonSaveStr(root, path, mfGetAccessConditionsDesc(2, adata)); - memset(path, 0x00, sizeof(path)); - sprintf(path, "$.SectorKeys.%d.AccessConditionsText.block%zu", mfSectorNum(i), i); + snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditionsText.block%zu", mfSectorNum(i), i); JsonSaveStr(root, path, mfGetAccessConditionsDesc(3, adata)); - memset(path, 0x00, sizeof(path)); - sprintf(path, "$.SectorKeys.%d.AccessConditionsText.UserData", mfSectorNum(i)); + snprintf(path, sizeof(path), "$.SectorKeys.%d.AccessConditionsText.UserData", mfSectorNum(i)); JsonSaveBufAsHexCompact(root, path, &adata[3], 1); } } From e93ba733bccd17ee545eb6d5f575ed19de9ff88f Mon Sep 17 00:00:00 2001 From: Iceman <iceman@iuse.se> Date: Tue, 2 Jun 2020 18:51:57 +0200 Subject: [PATCH 271/527] Update README.md --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index f5482bc6b..924114638 100644 --- a/README.md +++ b/README.md @@ -31,7 +31,7 @@ |[Notes on UART](/doc/uart_notes.md)|[Notes on Termux / Android](/doc/termux_notes.md)|[Notes on paths](/doc/path_notes.md)| |[Notes on frame format](/doc/new_frame_format.md)|[Notes on tracelog / wireshark](/doc/trace_notes.md)|[Notes on EMV](/doc/emv_notes.md)| |[Notes on external flash](/doc/ext_flash_notes.md)|[Notes on loclass](/doc/loclass_notes.md)|[Notes on Coverity Scan Config & Run](/doc/md/Development/Coverity-Scan-Config-%26-Run.md)| -|[Notes on file formats used with Proxmark3](/doc/extensions_notes.md)|[Notes on MFU binary format](/doc/mfu_binary_format_notes.md)|| +|[Notes on file formats used with Proxmark3](/doc/extensions_notes.md)|[Notes on MFU binary format](/doc/mfu_binary_format_notes.md)|[Notes on FPGA & ARM](/doc/fpga_arm_notes.md)| |[Developing standalone mode](/armsrc/Standalone/readme.md)|[Wiki about standalone mode](https://github.com/RfidResearchGroup/proxmark3/wiki/Standalone-mode)|| From ffbad646dff4b18661b914c821b56f95b89eaa6d Mon Sep 17 00:00:00 2001 From: Iceman <iceman@iuse.se> Date: Wed, 3 Jun 2020 10:27:56 +0200 Subject: [PATCH 272/527] Update Troubleshooting.md --- doc/md/Installation_Instructions/Troubleshooting.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/doc/md/Installation_Instructions/Troubleshooting.md b/doc/md/Installation_Instructions/Troubleshooting.md index d2c062dcb..f33897f78 100644 --- a/doc/md/Installation_Instructions/Troubleshooting.md +++ b/doc/md/Installation_Instructions/Troubleshooting.md @@ -20,6 +20,7 @@ Always use the latest repository commits from *master* branch. There are always * [Usb cable](#usb-cable) * [WSL 2 explorer.exe . doesnt work](#WSL-2) * [Troubles with running the Proxmark3 client](#troubles-with-running-the-proxmark3-client) + * [libQt5Core.so.5 not found]() ## `pm3` or `pm3-flash*` doesn't see my Proxmark @@ -178,3 +179,11 @@ Trying to access the dump files created in WSL, you will need to run ```explore Some reports has stated that they needed to execute the Proxmark3 as root on their *nix system. Try running it with `sudo ./pm3` + +## libQt5Core.so.5 not found +On WSL1 / updated to Ubuntu 20.04, there is a slight chance you experience problems when compiling the repo with QT5. +The following steps is needed to make the development environment happy again. +``` +sudo apt reinstall qtbase5-dev +sudo strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 +``` From 4321b42e891a6f843617ae5577e6e4ff56790f7e Mon Sep 17 00:00:00 2001 From: Iceman <iceman@iuse.se> Date: Wed, 3 Jun 2020 10:29:23 +0200 Subject: [PATCH 273/527] Update Troubleshooting.md --- doc/md/Installation_Instructions/Troubleshooting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/md/Installation_Instructions/Troubleshooting.md b/doc/md/Installation_Instructions/Troubleshooting.md index f33897f78..27a2a01e8 100644 --- a/doc/md/Installation_Instructions/Troubleshooting.md +++ b/doc/md/Installation_Instructions/Troubleshooting.md @@ -20,7 +20,7 @@ Always use the latest repository commits from *master* branch. There are always * [Usb cable](#usb-cable) * [WSL 2 explorer.exe . doesnt work](#WSL-2) * [Troubles with running the Proxmark3 client](#troubles-with-running-the-proxmark3-client) - * [libQt5Core.so.5 not found]() + * [libQt5Core.so.5 not found](#libQt5Core.so.5-not-found) ## `pm3` or `pm3-flash*` doesn't see my Proxmark From 1848f688f86fdc8d46e503e9b5ffa420c8c0a5db Mon Sep 17 00:00:00 2001 From: Iceman <iceman@iuse.se> Date: Wed, 3 Jun 2020 10:29:56 +0200 Subject: [PATCH 274/527] Update Troubleshooting.md --- doc/md/Installation_Instructions/Troubleshooting.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/doc/md/Installation_Instructions/Troubleshooting.md b/doc/md/Installation_Instructions/Troubleshooting.md index 27a2a01e8..c81d3bea7 100644 --- a/doc/md/Installation_Instructions/Troubleshooting.md +++ b/doc/md/Installation_Instructions/Troubleshooting.md @@ -20,7 +20,7 @@ Always use the latest repository commits from *master* branch. There are always * [Usb cable](#usb-cable) * [WSL 2 explorer.exe . doesnt work](#WSL-2) * [Troubles with running the Proxmark3 client](#troubles-with-running-the-proxmark3-client) - * [libQt5Core.so.5 not found](#libQt5Core.so.5-not-found) + * [libQt5Core.so.5 not found](#libQt5Coreso5-not-found) ## `pm3` or `pm3-flash*` doesn't see my Proxmark From cfa176dd3e6f57848068c0ac78ca0307585e48fc Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jun 2020 11:18:17 +0200 Subject: [PATCH 275/527] frees --- client/src/cmdhffido.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhffido.c b/client/src/cmdhffido.c index 22b855e95..70ddd9319 100644 --- a/client/src/cmdhffido.c +++ b/client/src/cmdhffido.c @@ -121,7 +121,6 @@ static json_t *OpenJson(CLIParserContext *ctx, int paramnum, char *fname, void * // CLIGetStrWithReturn(ctx, paramnum, jsonname, &jsonnamelen); if (CLIParamStrToBuf(arg_get_str(paramnum), jsonname, sizeof(jsonname), &jsonnamelen)) { - CLIParserFree(ctx); return NULL; } @@ -191,8 +190,10 @@ static int CmdHFFidoRegister(const char *cmd) { char fname[250] = {0}; bool err; root = OpenJson(ctx, 5, fname, argtable, &err); - if (err) + if (err) { + CLIParserFree(ctx); return 1; + } if (root) { size_t jlen; JsonLoadBufAsHex(root, "$.ChallengeParam", data, 32, &jlen); @@ -430,8 +431,10 @@ static int CmdHFFidoAuthenticate(const char *cmd) { char fname[250] = {0}; bool err; root = OpenJson(ctx, 7, fname, argtable, &err); - if (err) + if (err) { + CLIParserFree(ctx); return 1; + } if (root) { size_t jlen; JsonLoadBufAsHex(root, "$.ChallengeParam", data, 32, &jlen); From 4683f84991acf182e6f719d6c2ee7d11727fa0c5 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jun 2020 12:06:41 +0200 Subject: [PATCH 276/527] chg: 'hf 15 restore' - now also can use addressed mode --- client/src/cmdhf15.c | 101 ++++++++++++++++++++----------------------- 1 file changed, 48 insertions(+), 53 deletions(-) diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 8712a9829..b2a01b7ff 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -469,8 +469,8 @@ static int usage_15_restore(void) { {"h", "this help"}, {"-2", "use slower '1 out of 256' mode"}, {"-o", "set OPTION Flag (needed for TI)"}, + {"a", "use addressed mode"}, {"r <NUM>", "numbers of retries on error, default is 3"}, - {"u <UID>", "load hf-15-<UID>-dump.bin"}, {"f <filename>", "load <filename>"}, {"b <block size>", "block size, default is 4"} }; @@ -1617,34 +1617,29 @@ static int CmdHF15Write(const char *Cmd) { } static int CmdHF15Restore(const char *Cmd) { - FILE *f; - uint8_t uid[8] = {0x00}; + char newPrefix[60] = {0x00}; char filename[FILE_PATH_SIZE] = {0x00}; - char buff[255] = {0x00}; size_t blocksize = 4; - uint8_t cmdp = 0; - char newCmdPrefix[FILE_PATH_SIZE + 1] = {0x00}, tmpCmd[FILE_PATH_SIZE + 262] = {0x00}; - char param[FILE_PATH_SIZE] = ""; - char hex[255] = ""; - uint8_t retries = 3, i = 0; - int retval = 0; + uint8_t cmdp = 0, retries = 3; + bool addressed_mode = false; while (param_getchar(Cmd, cmdp) != 0x00) { switch (tolower(param_getchar(Cmd, cmdp))) { - case '-': + case '-': { + char param[3] = ""; param_getstr(Cmd, cmdp, param, sizeof(param)); switch (param[1]) { case '2': case 'o': - strncpy(newCmdPrefix, " ", sizeof(newCmdPrefix) - 1); - strncat(newCmdPrefix, param, sizeof(newCmdPrefix) - strlen(newCmdPrefix) - 1); + sprintf(newPrefix, " %s", param); break; default: - PrintAndLogEx(WARNING, "Unknown parameter '%s'", param); + PrintAndLogEx(WARNING, "11 Unknown parameter " _YELLOW_("'%s'"), param); return usage_15_restore(); } break; + } case 'f': param_getstr(Cmd, cmdp + 1, filename, FILE_PATH_SIZE); cmdp++; @@ -1657,15 +1652,13 @@ static int CmdHF15Restore(const char *Cmd) { blocksize = param_get8ex(Cmd, cmdp + 1, 4, 10); cmdp++; break; - case 'u': - param_getstr(Cmd, cmdp + 1, buff, FILE_PATH_SIZE); - cmdp++; - snprintf(filename, sizeof(filename), "hf-15-%s-dump.bin", buff); + case 'a': + addressed_mode = true; break; case 'h': return usage_15_restore(); default: - PrintAndLogEx(WARNING, "Unknown parameter '%c'", param_getchar(Cmd, cmdp)); + PrintAndLogEx(WARNING, "Unknown parameter " _YELLOW_("'%c'"), param_getchar(Cmd, cmdp)); return usage_15_restore(); } cmdp++; @@ -1678,62 +1671,64 @@ static int CmdHF15Restore(const char *Cmd) { return usage_15_restore(); } - if ((f = fopen(filename, "rb")) == NULL) { - - PrintAndLogEx(WARNING, "Could not find file %s", filename); - return PM3_EFILE; - } - + uint8_t uid[8] = {0x00}; if (!getUID(uid)) { PrintAndLogEx(WARNING, "No tag found"); - fclose(f); + return PM3_ESOFT; + } + + size_t datalen = 0; + uint8_t *data = NULL; + if (loadFile_safe(filename, ".bin", (void **)&data, &datalen) != PM3_SUCCESS) { + PrintAndLogEx(WARNING, "Could not find file " _YELLOW_("%s"), filename); + return PM3_EFILE; + } + + if ((datalen % blocksize) != 0) { + PrintAndLogEx(WARNING, "Datalen %zu isn't dividable with blocksize %zu", datalen, blocksize); return PM3_ESOFT; } PrintAndLogEx(INFO, "Restoring data blocks."); - while (1) { - uint8_t tried = 0; - hex[0] = 0x00; - tmpCmd[0] = 0x00; + int retval = PM3_SUCCESS; + size_t bytes = 0; + uint16_t i = 0; + while (bytes < datalen) { - size_t bytes_read = fread(buff, 1, blocksize, f); - if (bytes_read == 0) { - PrintAndLogEx(SUCCESS, "File reading done `%s`", filename); - fclose(f); - return PM3_SUCCESS; - } else if (bytes_read != blocksize) { - PrintAndLogEx(ERR, "File reading error (%s), %zu bytes read instead of %zu bytes.", filename, bytes_read, blocksize); - fclose(f); - return PM3_EFILE; + uint8_t tried = 0; + char hex[40] = {0x00}; + char tmpCmd[200] = {0x00}; + + if (addressed_mode) { + char uidhex[17] = {0x00}; + hex_to_buffer((uint8_t *)uidhex, uid, sizeof(uid), sizeof(uidhex) - 1, 0, false, true); + hex_to_buffer((uint8_t *)hex, data + i, blocksize, sizeof(hex) - 1, 0, false, true); + snprintf(tmpCmd, sizeof(tmpCmd), "%s %s %u %s", newPrefix, uidhex, i, hex); + } else { + hex_to_buffer((uint8_t *)hex, data + i, blocksize, sizeof(hex) - 1, 0, false, true); + snprintf(tmpCmd, sizeof(tmpCmd), "%s u %u %s", newPrefix, i, hex); } - for (int j = 0; j < blocksize; j++) - snprintf(hex + j * 2, 3, "%02X", buff[j]); - - for (int j = 0; j < ARRAYLEN(uid); j++) - snprintf(buff + j * 2, 3, "%02X", uid[j]); - - //TODO: Addressed mode currently not work - //snprintf(tmpCmd, sizeof(tmpCmd), "%s %s %d %s", newCmdPrefix, buff, i, hex); - snprintf(tmpCmd, sizeof(tmpCmd), "%s u %u %s", newCmdPrefix, i, hex); - PrintAndLogEx(DEBUG, "Command to be sent| %s", tmpCmd); + PrintAndLogEx(DEBUG, "hf 15 write %s", tmpCmd); for (tried = 0; tried < retries; tried++) { if (!(retval = CmdHF15Write(tmpCmd))) { break; } } + if (tried >= retries) { - fclose(f); + free(data); PrintAndLogEx(FAILED, "Restore failed. Too many retries."); return retval; } - + bytes += blocksize; i++; } - fclose(f); - PrintAndLogEx(INFO, "Finish restore"); + free(data); + PrintAndLogEx(INFO, "done"); + PrintAndLogEx(HINT, "Try reading your card to verify with " _YELLOW_("`hf 15 dump`") ); return PM3_SUCCESS; } From 843ab094bb26642577a8166ad39efb76f5033352 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jun 2020 12:29:52 +0200 Subject: [PATCH 277/527] chg: 'trace load' - use fileutils --- client/src/cmdtrace.c | 39 +++++++-------------------------------- 1 file changed, 7 insertions(+), 32 deletions(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index e7db5fa85..29cf2c1df 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -427,48 +427,23 @@ static int SanityOfflineCheck( bool useTraceBuffer ){ static int CmdTraceLoad(const char *Cmd) { - FILE *f = NULL; char filename[FILE_PATH_SIZE]; char cmdp = tolower(param_getchar(Cmd, 0)); if (strlen(Cmd) < 1 || cmdp == 'h') return usage_trace_load(); param_getstr(Cmd, 0, filename, sizeof(filename)); - if ((f = fopen(filename, "rb")) == NULL) { - PrintAndLogEx(FAILED, "Could not open file " _YELLOW_("%s"), filename); - return PM3_EIO; - } - - // get filesize in order to malloc memory - fseek(f, 0, SEEK_END); - long fsize = ftell(f); - fseek(f, 0, SEEK_SET); - - if (fsize < 0) { - PrintAndLogEx(FAILED, "error, when getting filesize"); - fclose(f); - return PM3_EIO; - } - if (fsize < 4) { - PrintAndLogEx(FAILED, "error, file is too small"); - fclose(f); - return PM3_ESOFT; - } - if (g_trace) free(g_trace); - g_traceLen = 0; - g_trace = calloc(fsize, sizeof(uint8_t)); - if (g_trace == NULL) { - PrintAndLogEx(FAILED, "Cannot allocate memory for trace"); - fclose(f); - return PM3_EMALLOC; + size_t len = 0; + if (loadFile_safe(filename, ".trace", (void**)&g_trace, &len) != PM3_SUCCESS) { + PrintAndLogEx(FAILED, "Could not open file " _YELLOW_("%s"), filename); + return PM3_EIO; } - - size_t bytes_read = fread(g_trace, 1, fsize, f); - g_traceLen = bytes_read; - fclose(f); + + g_traceLen = (long)len; + PrintAndLogEx(SUCCESS, "Recorded Activity (TraceLen = " _YELLOW_("%lu") " bytes) loaded from " _YELLOW_("%s"), g_traceLen, filename); return PM3_SUCCESS; } From 8667b34da6eda883364ece8eb1edbb98bdcdd1ea Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 2 Jun 2020 23:12:29 +0200 Subject: [PATCH 278/527] document mingw tweak --- client/deps/tinycbor/cbor.h | 1 + 1 file changed, 1 insertion(+) diff --git a/client/deps/tinycbor/cbor.h b/client/deps/tinycbor/cbor.h index 081597fec..6890ee597 100644 --- a/client/deps/tinycbor/cbor.h +++ b/client/deps/tinycbor/cbor.h @@ -555,6 +555,7 @@ enum CborPrettyFlags { CborPrettyDefaultFlags = CborPrettyIndicateIndeterminateLength }; +/* cf https://sourceforge.net/p/mingw-w64/wiki2/gnu%20printf/ */ typedef CborError(*CborStreamFunction)(void *token, const char *fmt, ...) #if defined(__MINGW32__) || defined(__MINGW64__) __attribute__((format (__MINGW_PRINTF_FORMAT, 2, 3))); From f6566f89f262ac3ce87e5cb7b100381e4c44c857 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jun 2020 13:05:33 +0200 Subject: [PATCH 279/527] chg: 'sc upgrade' - now uses fileutils --- client/src/cmdsmartcard.c | 106 ++++++++++++-------------------------- 1 file changed, 34 insertions(+), 72 deletions(-) diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index f60dd5513..143140174 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -522,7 +522,6 @@ static int CmdSmartUpgrade(const char *Cmd) { PrintAndLogEx(WARNING, "A dangerous command, do wrong and you could brick the sim module"); PrintAndLogEx(NORMAL, ""); - FILE *f; char filename[FILE_PATH_SIZE] = {0}; uint8_t cmdp = 0; bool errors = false; @@ -530,7 +529,6 @@ static int CmdSmartUpgrade(const char *Cmd) { while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { switch (tolower(param_getchar(Cmd, cmdp))) { case 'f': - //File handling and reading if (param_getstr(Cmd, cmdp + 1, filename, FILE_PATH_SIZE) >= FILE_PATH_SIZE) { PrintAndLogEx(FAILED, "Filename too long"); errors = true; @@ -550,105 +548,70 @@ static int CmdSmartUpgrade(const char *Cmd) { //Validations if (errors || cmdp == 0) return usage_sm_upgrade(); - char sha512filename[FILE_PATH_SIZE] = {'\0'}; + char *bin_extension = filename; char *dot_position = NULL; while ((dot_position = strchr(bin_extension, '.')) != NULL) { bin_extension = dot_position + 1; } + // generate filename for the related SHA512 hash file + char sha512filename[FILE_PATH_SIZE] = {'\0'}; if (!strcmp(bin_extension, "BIN") || !strcmp(bin_extension, "bin")) { memcpy(sha512filename, filename, strlen(filename) - strlen("bin")); strcat(sha512filename, "sha512.txt"); } else { PrintAndLogEx(FAILED, "Filename extension of firmware upgrade file must be .BIN"); - return 1; + return PM3_ESOFT; } - PrintAndLogEx(INFO, "firmware file : " _YELLOW_("%s"), filename); - PrintAndLogEx(INFO, "Checking integrity : " _YELLOW_("%s"), sha512filename); + PrintAndLogEx(INFO, "firmware file " _YELLOW_("%s"), filename); + PrintAndLogEx(INFO, "Checking integrity " _YELLOW_("%s"), sha512filename); // load firmware file - f = fopen(filename, "rb"); - if (!f) { + size_t firmware_size = 0; + uint8_t *firmware = NULL; + if (loadFile_safe(filename, "", (void**)&firmware, &firmware_size) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Firmware file " _YELLOW_("%s") " not found or locked.", filename); return PM3_EFILE; } - // get filesize in order to malloc memory - fseek(f, 0, SEEK_END); - long fsize = ftell(f); - fseek(f, 0, SEEK_SET); - - if (fsize <= 0) { - PrintAndLogEx(ERR, "error, when getting filesize"); - fclose(f); - return 1; - } - - uint8_t *dump = calloc(fsize, sizeof(uint8_t)); - if (!dump) { - PrintAndLogEx(ERR, "error, cannot allocate memory "); - fclose(f); - return 1; - } - - size_t firmware_size = fread(dump, 1, fsize, f); - fclose(f); - // load sha512 file - f = fopen(sha512filename, "rb"); - if (!f) { + size_t sha512_size = 0; + char *hashstring = NULL; + if (loadFile_safe(sha512filename, "", (void**)&hashstring, &sha512_size) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "SHA-512 file not found or locked."); - free(dump); + free(firmware); return PM3_EFILE; } - // get filesize in order to malloc memory - fseek(f, 0, SEEK_END); - fsize = ftell(f); - fseek(f, 0, SEEK_SET); - - if (fsize < 0) { - PrintAndLogEx(FAILED, "Could not determine size of SHA-512 file"); - fclose(f); - free(dump); - return 1; + if (sha512_size < 128) { + PrintAndLogEx(FAILED, "SHA-512 file wrong size"); + free(firmware); + return PM3_ESOFT; } - - if (fsize < 128) { - PrintAndLogEx(FAILED, "SHA-512 file too short"); - fclose(f); - free(dump); - return 1; - } - - char hashstring[129]; - size_t bytes_read = fread(hashstring, 1, 128, f); hashstring[128] = '\0'; - fclose(f); - uint8_t hash_1[64]; - if (bytes_read != 128 || param_gethex(hashstring, 0, hash_1, 128)) { + if (param_gethex(hashstring, 0, hash_1, 128)) { PrintAndLogEx(FAILED, "Couldn't read SHA-512 file"); - free(dump); - return 1; + free(firmware); + return PM3_ESOFT; } uint8_t hash_2[64]; - if (sha512hash(dump, firmware_size, hash_2)) { + if (sha512hash(firmware, firmware_size, hash_2)) { PrintAndLogEx(FAILED, "Couldn't calculate SHA-512 of firmware"); - free(dump); - return 1; + free(firmware); + return PM3_ESOFT; } if (memcmp(hash_1, hash_2, 64)) { PrintAndLogEx(FAILED, "Couldn't verify integrity of firmware file " _RED_("(wrong SHA-512 hash)")); - free(dump); - return 1; + free(firmware); + return PM3_ESOFT; } - + PrintAndLogEx(SUCCESS, "Sim module firmware uploading to PM3"); //Send to device @@ -666,20 +629,19 @@ static int CmdSmartUpgrade(const char *Cmd) { conn.block_after_ACK = false; } clearCommandBuffer(); - SendCommandOLD(CMD_SMART_UPLOAD, index + bytes_sent, bytes_in_packet, 0, dump + bytes_sent, bytes_in_packet); + SendCommandOLD(CMD_SMART_UPLOAD, index + bytes_sent, bytes_in_packet, 0, firmware + bytes_sent, bytes_in_packet); if (!WaitForResponseTimeout(CMD_ACK, NULL, 2000)) { PrintAndLogEx(WARNING, "timeout while waiting for reply."); - free(dump); - return 1; + free(firmware); + return PM3_ETIMEOUT; } bytes_remaining -= bytes_in_packet; bytes_sent += bytes_in_packet; - printf("."); - fflush(stdout); + PrintAndLogEx(INPLACE, "%d bytes sent", bytes_sent); } - free(dump); - printf("\n"); + free(firmware); + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(SUCCESS, "Sim module firmware updating, don\'t turn off your PM3!"); // trigger the firmware upgrade @@ -688,11 +650,11 @@ static int CmdSmartUpgrade(const char *Cmd) { PacketResponseNG resp; if (!WaitForResponseTimeout(CMD_ACK, &resp, 2500)) { PrintAndLogEx(WARNING, "timeout while waiting for reply."); - return 1; + return PM3_ETIMEOUT; } if ((resp.oldarg[0] & 0xFF)) { PrintAndLogEx(SUCCESS, "Sim module firmware upgrade " _GREEN_("successful")); - PrintAndLogEx(SUCCESS, "\n run " _YELLOW_("`hw status`") " to validate the fw version "); + PrintAndLogEx(HINT, "run " _YELLOW_("`hw status`") " to validate the fw version "); } else { PrintAndLogEx(FAILED, "Sim module firmware upgrade " _RED_("failed")); } From 8898000dac1291e9e2f4fcaad4accb13335e74c5 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jun 2020 13:10:34 +0200 Subject: [PATCH 280/527] chg: 'hf mfu restore' - now uses fileutils --- client/src/cmdhfmfu.c | 31 ++++++------------------------- 1 file changed, 6 insertions(+), 25 deletions(-) diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 54e0b2423..ed7e7d358 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -2127,7 +2127,6 @@ static int CmdHF14AMfURestore(const char *Cmd) { bool read_key = false; bool verbose = false; size_t filelen = 0; - FILE *f; memset(authkey, 0x00, sizeof(authkey)); @@ -2188,35 +2187,17 @@ static int CmdHF14AMfURestore(const char *Cmd) { //Validations if (errors || cmdp == 0) return usage_hf_mfu_restore(); - if ((f = fopen(filename, "rb")) == NULL) { + uint8_t *dump = NULL; + size_t bytes_read = 0; + if (loadFile_safe(filename, "", (void**)&dump, &bytes_read) != PM3_SUCCESS) { PrintAndLogEx(WARNING, "Could not find file " _YELLOW_("%s"), filename); - return 1; + return PM3_EIO; } - // get filesize to know how memory to allocate - fseek(f, 0, SEEK_END); - long fsize = ftell(f); - fseek(f, 0, SEEK_SET); - if (fsize <= 0) { - PrintAndLogEx(ERR, "Error, when getting filesize"); - fclose(f); - return 1; - } - - uint8_t *dump = calloc(fsize, sizeof(uint8_t)); - if (!dump) { - PrintAndLogEx(WARNING, "Failed to allocate memory"); - fclose(f); - return 1; - } - - // read all data - size_t bytes_read = fread(dump, 1, fsize, f); - fclose(f); if (bytes_read < MFU_DUMP_PREFIX_LENGTH) { PrintAndLogEx(ERR, "Error, dump file is too small"); free(dump); - return 1; + return PM3_ESOFT; } int res = convert_mfu_dump_format(&dump, &bytes_read, verbose); @@ -2232,7 +2213,7 @@ static int CmdHF14AMfURestore(const char *Cmd) { if (pages - 1 != mem->pages) { PrintAndLogEx(ERR, "Error, invalid dump, wrong page count"); free(dump); - return 1; + return PM3_ESOFT; } PrintAndLogEx(INFO, "Restoring " _YELLOW_("%s")" to card", filename); From 17d6ce50071b56b492104c596b7e320442a9460a Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jun 2020 14:26:09 +0200 Subject: [PATCH 281/527] coverity 290398 --- client/src/cmdhf15.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index b2a01b7ff..65946b7d5 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -1686,6 +1686,7 @@ static int CmdHF15Restore(const char *Cmd) { if ((datalen % blocksize) != 0) { PrintAndLogEx(WARNING, "Datalen %zu isn't dividable with blocksize %zu", datalen, blocksize); + free(data); return PM3_ESOFT; } From 12425aaf60912978ce315cc18745287d8df1d8a4 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jun 2020 14:52:27 +0200 Subject: [PATCH 282/527] chg, hf fido remake --- client/src/cmdhffido.c | 177 ++++++++++++++++++++--------------------- 1 file changed, 86 insertions(+), 91 deletions(-) diff --git a/client/src/cmdhffido.c b/client/src/cmdhffido.c index 70ddd9319..4b58e1cba 100644 --- a/client/src/cmdhffido.c +++ b/client/src/cmdhffido.c @@ -18,14 +18,12 @@ // https://fidoalliance.org/specs/fido-u2f-v1.2-ps-20170411/fido-u2f-raw-message-formats-v1.2-ps-20170411.html //----------------------------------------------------------------------------- - #include "cmdhffido.h" #include <unistd.h> #include "cmdparser.h" // command_t #include "commonutil.h" - #include "comms.h" #include "proxmark3.h" #include "emv/emvcore.h" @@ -50,7 +48,7 @@ static int CmdHFFidoInfo(const char *cmd) { infoHF14A(false, false, false); // FIDO info - PrintAndLogEx(NORMAL, "--------------------------------------------"); + PrintAndLogEx(INFO, "-----------" _CYAN_("FIDO Info") "---------------------------------"); SetAPDULogging(false); uint8_t buf[APDU_RES_LEN] = {0}; @@ -70,7 +68,7 @@ static int CmdHFFidoInfo(const char *cmd) { PrintAndLogEx(ERR, "APDU exchange error. Card returns 0x0000."); DropField(); - return 0; + return PM3_SUCCESS; } if (!strncmp((char *)buf, "U2F_V2", 7)) { @@ -92,13 +90,12 @@ static int CmdHFFidoInfo(const char *cmd) { } if (sw != 0x9000) { PrintAndLogEx(ERR, "FIDO2 version doesn't exist (%04x - %s).", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff)); - - return 0; + return PM3_SUCCESS; } if (buf[0]) { PrintAndLogEx(ERR, "FIDO2 get version error: %d - %s", buf[0], fido2GetCmdErrorDescription(buf[0])); - return 0; + return PM3_SUCCESS; } if (len > 1) { @@ -107,7 +104,7 @@ static int CmdHFFidoInfo(const char *cmd) { } else { PrintAndLogEx(ERR, "FIDO2 version length error"); } - return 0; + return PM3_SUCCESS; } static json_t *OpenJson(CLIParserContext *ctx, int paramnum, char *fname, void *argtable[], bool *err) { @@ -115,7 +112,7 @@ static json_t *OpenJson(CLIParserContext *ctx, int paramnum, char *fname, void * json_error_t error; *err = false; - uint8_t jsonname[250] = {0}; + uint8_t jsonname[FILE_PATH_SIZE] = {0}; char *cjsonname = (char *)jsonname; int jsonnamelen = 0; @@ -159,7 +156,6 @@ static int CmdHFFidoRegister(const char *cmd) { uint8_t cdata[250] = {0}; int applen = 0; uint8_t adata[250] = {0}; - json_t *root = NULL; CLIParserContext *ctx; CLIParserInit(&ctx, "hf fido reg", @@ -187,12 +183,12 @@ static int CmdHFFidoRegister(const char *cmd) { bool paramsPlain = arg_get_lit(3); bool showDERTLV = arg_get_lit(4); - char fname[250] = {0}; + char fname[FILE_PATH_SIZE] = {0}; bool err; - root = OpenJson(ctx, 5, fname, argtable, &err); + json_t *root = OpenJson(ctx, 5, fname, argtable, &err); if (err) { CLIParserFree(ctx); - return 1; + return PM3_EINVARG; } if (root) { size_t jlen; @@ -205,13 +201,13 @@ static int CmdHFFidoRegister(const char *cmd) { CLIGetStrWithReturn(ctx, 6, cdata, &chlen); if (chlen > 16) { PrintAndLogEx(ERR, "ERROR: challenge parameter length in ASCII mode must be less than 16 chars instead of: %d", chlen); - return 1; + return PM3_EINVARG; } } else { CLIGetHexWithReturn(ctx, 6, cdata, &chlen); if (chlen && chlen != 32) { PrintAndLogEx(ERR, "ERROR: challenge parameter length must be 32 bytes only."); - return 1; + return PM3_EINVARG; } } if (chlen) @@ -223,13 +219,13 @@ static int CmdHFFidoRegister(const char *cmd) { CLIGetStrWithReturn(ctx, 7, adata, &applen); if (applen > 16) { PrintAndLogEx(ERR, "ERROR: application parameter length in ASCII mode must be less than 16 chars instead of: %d", applen); - return 1; + return PM3_EINVARG; } } else { CLIGetHexWithReturn(ctx, 7, adata, &applen); if (applen && applen != 32) { PrintAndLogEx(ERR, "ERROR: application parameter length must be 32 bytes only."); - return 1; + return PM3_EINVARG; } } if (applen) @@ -258,7 +254,7 @@ static int CmdHFFidoRegister(const char *cmd) { if (sw != 0x9000) { PrintAndLogEx(ERR, "Can't select FIDO application. APDU response status: %04x - %s", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff)); DropField(); - return 2; + return PM3_ESOFT; } res = FIDORegister(data, buf, sizeof(buf), &len, &sw); @@ -270,22 +266,24 @@ static int CmdHFFidoRegister(const char *cmd) { if (sw != 0x9000) { PrintAndLogEx(ERR, "ERROR execute register command. APDU response status: %04x - %s", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff)); - return 3; + return PM3_ESOFT; } PrintAndLogEx(NORMAL, ""); if (APDULogging) - PrintAndLogEx(NORMAL, "---------------------------------------------------------------"); + PrintAndLogEx(INFO, "---------------------------------------------------------------"); + PrintAndLogEx(NORMAL, "data len: %zu", len); + if (verbose2) { - PrintAndLogEx(NORMAL, "--------------data----------------------"); + PrintAndLogEx(INFO, "------------ " _CYAN_("data") " ----------------------"); dump_buffer((const unsigned char *)buf, len, NULL, 0); - PrintAndLogEx(NORMAL, "--------------data----------------------"); + PrintAndLogEx(INFO, "-------------" _CYAN_("data") " ----------------------"); } if (buf[0] != 0x05) { PrintAndLogEx(ERR, "ERROR: First byte must be 0x05, but it %2x", buf[0]); - return 5; + return PM3_ESOFT; } PrintAndLogEx(SUCCESS, "User public key: %s", sprint_hex(&buf[1], 65)); @@ -357,12 +355,11 @@ static int CmdHFFidoRegister(const char *cmd) { } PrintAndLogEx(INFO, "\nauth command: "); - printf("hf fido auth %s%s", paramsPlain ? "-p " : "", sprint_hex_inrow(&buf[67], keyHandleLen)); + PrintAndLogEx(INFO, "hf fido auth %s%s", paramsPlain ? "-p " : "", sprint_hex_inrow(&buf[67], keyHandleLen)); if (chlen || applen) - printf(" %s", paramsPlain ? (char *)cdata : sprint_hex_inrow(cdata, 32)); + PrintAndLogEx(INFO, " %s", paramsPlain ? (char *)cdata : sprint_hex_inrow(cdata, 32)); if (applen) - printf(" %s", paramsPlain ? (char *)adata : sprint_hex_inrow(adata, 32)); - printf("\n"); + PrintAndLogEx(INFO, " %s", paramsPlain ? (char *)adata : sprint_hex_inrow(adata, 32)); if (root) { JsonSaveBufAsHex(root, "ChallengeParam", data, 32); @@ -375,16 +372,15 @@ static int CmdHFFidoRegister(const char *cmd) { res = json_dump_file(root, fname, JSON_INDENT(2)); if (res) { PrintAndLogEx(ERR, "ERROR: can't save the file: %s", fname); - return 200; + return PM3_EFILE; } PrintAndLogEx(SUCCESS, "File " _YELLOW_("`%s`") " saved.", fname); // free json object json_decref(root); } - - return 0; -}; + return PM3_SUCCESS; +} static int CmdHFFidoAuthenticate(const char *cmd) { uint8_t data[512] = {0}; @@ -393,7 +389,6 @@ static int CmdHFFidoAuthenticate(const char *cmd) { uint8_t public_key[65] = {0}; int hdatalen = 0; uint8_t keyHandleLen = 0; - json_t *root = NULL; CLIParserContext *ctx; CLIParserInit(&ctx, "hf fido auth", @@ -430,11 +425,12 @@ static int CmdHFFidoAuthenticate(const char *cmd) { char fname[250] = {0}; bool err; - root = OpenJson(ctx, 7, fname, argtable, &err); + json_t *root = OpenJson(ctx, 7, fname, argtable, &err); if (err) { CLIParserFree(ctx); - return 1; + return PM3_EINVARG; } + if (root) { size_t jlen; JsonLoadBufAsHex(root, "$.ChallengeParam", data, 32, &jlen); @@ -450,7 +446,7 @@ static int CmdHFFidoAuthenticate(const char *cmd) { CLIGetHexWithReturn(ctx, 8, hdata, &hdatalen); if (hdatalen && hdatalen != 65) { PrintAndLogEx(ERR, "ERROR: public key length must be 65 bytes only."); - return 1; + return PM3_EINVARG; } if (hdatalen) { memmove(public_key, hdata, hdatalen); @@ -460,7 +456,7 @@ static int CmdHFFidoAuthenticate(const char *cmd) { CLIGetHexWithReturn(ctx, 9, hdata, &hdatalen); if (hdatalen > 255) { PrintAndLogEx(ERR, "ERROR: application parameter length must be less than 255."); - return 1; + return PM3_EINVARG; } if (hdatalen) { keyHandleLen = hdatalen; @@ -473,13 +469,13 @@ static int CmdHFFidoAuthenticate(const char *cmd) { CLIGetStrWithReturn(ctx, 9, hdata, &hdatalen); if (hdatalen > 16) { PrintAndLogEx(ERR, "ERROR: challenge parameter length in ASCII mode must be less than 16 chars instead of: %d", hdatalen); - return 1; + return PM3_EINVARG; } } else { CLIGetHexWithReturn(ctx, 10, hdata, &hdatalen); if (hdatalen && hdatalen != 32) { PrintAndLogEx(ERR, "ERROR: challenge parameter length must be 32 bytes only."); - return 1; + return PM3_EINVARG; } } if (hdatalen) @@ -490,13 +486,15 @@ static int CmdHFFidoAuthenticate(const char *cmd) { CLIGetStrWithReturn(ctx, 11, hdata, &hdatalen); if (hdatalen > 16) { PrintAndLogEx(ERR, "ERROR: application parameter length in ASCII mode must be less than 16 chars instead of: %d", hdatalen); - return 1; + CLIParserFree(ctx); + return PM3_EINVARG; } } else { CLIGetHexWithReturn(ctx, 10, hdata, &hdatalen); if (hdatalen && hdatalen != 32) { PrintAndLogEx(ERR, "ERROR: application parameter length must be 32 bytes only."); - return 1; + CLIParserFree(ctx); + return PM3_EINVARG; } } if (hdatalen) @@ -530,7 +528,7 @@ static int CmdHFFidoAuthenticate(const char *cmd) { if (sw != 0x9000) { PrintAndLogEx(ERR, "Can't select FIDO application. APDU response status: %04x - %s", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff)); DropField(); - return 2; + return PM3_ESOFT; } res = FIDOAuthentication(data, datalen, controlByte, buf, sizeof(buf), &len, &sw); @@ -542,7 +540,7 @@ static int CmdHFFidoAuthenticate(const char *cmd) { if (sw != 0x9000) { PrintAndLogEx(ERR, "ERROR execute authentication command. APDU response status: %04x - %s", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff)); - return 3; + return PM3_ESOFT; } PrintAndLogEx(NORMAL, "---------------------------------------------------------------"); @@ -598,15 +596,15 @@ static int CmdHFFidoAuthenticate(const char *cmd) { res = json_dump_file(root, fname, JSON_INDENT(2)); if (res) { PrintAndLogEx(ERR, "ERROR: can't save the file: %s", fname); - return 200; + return PM3_EFILE; } PrintAndLogEx(SUCCESS, "File " _YELLOW_("`%s`") " saved.", fname); // free json object json_decref(root); } - return 0; -}; + return PM3_ESOFT; +} static void CheckSlash(char *fileName) { if ((fileName[strlen(fileName) - 1] != '/') && @@ -614,6 +612,7 @@ static void CheckSlash(char *fileName) { strcat(fileName, "/"); } +//iceman, todo: use searchfile.. static int GetExistsFileNameJson(const char *prefixDir, const char *reqestedFileName, char *fileName) { fileName[0] = 0x00; strcpy(fileName, get_my_executable_directory()); @@ -635,16 +634,15 @@ static int GetExistsFileNameJson(const char *prefixDir, const char *reqestedFile strcat(fileName, ".json"); if (access(fileName, F_OK) < 0) { - return 1; // file not found + return PM3_EFILE; // file not found } } - return 0; + return PM3_SUCCESS; } static int CmdHFFido2MakeCredential(const char *cmd) { json_error_t error; - json_t *root = NULL; - char fname[300] = {0}; + char fname[FILE_PATH_SIZE] = {0}; CLIParserContext *ctx; CLIParserInit(&ctx, "hf fido make", @@ -669,7 +667,7 @@ static int CmdHFFido2MakeCredential(const char *cmd) { bool showDERTLV = arg_get_lit(3); bool showCBOR = arg_get_lit(4); - uint8_t jsonname[250] = {0}; + uint8_t jsonname[FILE_PATH_SIZE] = {0}; char *cjsonname = (char *)jsonname; int jsonnamelen = 0; CLIGetStrWithReturn(ctx, 5, jsonname, &jsonnamelen); @@ -684,15 +682,15 @@ static int CmdHFFido2MakeCredential(const char *cmd) { SetAPDULogging(APDULogging); int res = GetExistsFileNameJson("fido", cjsonname, fname); - if (res) { + if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "ERROR: Can't found the json file."); return res; } PrintAndLogEx(NORMAL, "fname: %s\n", fname); - root = json_load_file(fname, 0, &error); + json_t *root = json_load_file(fname, 0, &error); if (!root) { PrintAndLogEx(ERR, "ERROR: json error on line %d: %s", error.line, error.text); - return 1; + return PM3_EFILE; } uint8_t data[2048] = {0}; @@ -703,7 +701,6 @@ static int CmdHFFido2MakeCredential(const char *cmd) { DropField(); res = FIDOSelect(true, true, buf, sizeof(buf), &len, &sw); - if (res) { PrintAndLogEx(ERR, "Can't select authenticator. res=%x. Exit...", res); DropField(); @@ -713,7 +710,7 @@ static int CmdHFFido2MakeCredential(const char *cmd) { if (sw != 0x9000) { PrintAndLogEx(ERR, "Can't select FIDO application. APDU response status: %04x - %s", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff)); DropField(); - return 2; + return PM3_ESOFT; } res = FIDO2CreateMakeCredentionalReq(root, data, sizeof(data), &datalen); @@ -722,9 +719,9 @@ static int CmdHFFido2MakeCredential(const char *cmd) { if (showCBOR) { PrintAndLogEx(INFO, "CBOR make credential request:"); - PrintAndLogEx(NORMAL, "---------------- CBOR ------------------"); + PrintAndLogEx(INFO, "---------------- " _CYAN_("CBOR") " ------------------"); TinyCborPrintFIDOPackage(fido2CmdMakeCredential, false, data, datalen); - PrintAndLogEx(NORMAL, "---------------- CBOR ------------------"); + PrintAndLogEx(INFO, "---------------- " _CYAN_("CBOR") " ------------------"); } res = FIDO2MakeCredential(data, datalen, buf, sizeof(buf), &len, &sw); @@ -736,20 +733,20 @@ static int CmdHFFido2MakeCredential(const char *cmd) { if (sw != 0x9000) { PrintAndLogEx(ERR, "ERROR execute make credential command. APDU response status: %04x - %s", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff)); - return 3; + return PM3_EFILE; } if (buf[0]) { PrintAndLogEx(ERR, "FIDO2 make credential error: %d - %s", buf[0], fido2GetCmdErrorDescription(buf[0])); - return 0; + return PM3_SUCCESS; } PrintAndLogEx(SUCCESS, "MakeCredential result (%zu b) OK.", len); if (showCBOR) { PrintAndLogEx(SUCCESS, "CBOR make credential response:"); - PrintAndLogEx(NORMAL, "---------------- CBOR ------------------"); + PrintAndLogEx(INFO, "---------------- " _CYAN_("CBOR") " ------------------"); TinyCborPrintFIDOPackage(fido2CmdMakeCredential, true, &buf[1], len - 1); - PrintAndLogEx(NORMAL, "---------------- CBOR ------------------"); + PrintAndLogEx(INFO, "---------------- " _CYAN_("CBOR") " ------------------"); } // parse returned cbor @@ -759,19 +756,18 @@ static int CmdHFFido2MakeCredential(const char *cmd) { res = json_dump_file(root, fname, JSON_INDENT(2)); if (res) { PrintAndLogEx(ERR, "ERROR: can't save the file: %s", fname); - return 200; + return PM3_EFILE; } PrintAndLogEx(SUCCESS, "File " _YELLOW_("`%s`") " saved.", fname); } json_decref(root); - return 0; -}; + return PM3_SUCCESS; +} static int CmdHFFido2GetAssertion(const char *cmd) { json_error_t error; - json_t *root = NULL; - char fname[300] = {0}; + char fname[FILE_PATH_SIZE] = {0}; CLIParserContext *ctx; CLIParserInit(&ctx, "hf fido assert", @@ -796,7 +792,7 @@ static int CmdHFFido2GetAssertion(const char *cmd) { bool showCBOR = arg_get_lit(3); bool createAllowList = arg_get_lit(4); - uint8_t jsonname[250] = {0}; + uint8_t jsonname[FILE_PATH_SIZE] = {0}; char *cjsonname = (char *)jsonname; int jsonnamelen = 0; CLIGetStrWithReturn(ctx, 5, jsonname, &jsonnamelen); @@ -811,15 +807,15 @@ static int CmdHFFido2GetAssertion(const char *cmd) { SetAPDULogging(APDULogging); int res = GetExistsFileNameJson("fido", cjsonname, fname); - if (res) { + if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "ERROR: Can't found the json file."); return res; } PrintAndLogEx(NORMAL, "fname: %s\n", fname); - root = json_load_file(fname, 0, &error); + json_t *root = json_load_file(fname, 0, &error); if (!root) { PrintAndLogEx(ERR, "ERROR: json error on line %d: %s", error.line, error.text); - return 1; + return PM3_EFILE; } uint8_t data[2048] = {0}; @@ -830,9 +826,8 @@ static int CmdHFFido2GetAssertion(const char *cmd) { DropField(); res = FIDOSelect(true, true, buf, sizeof(buf), &len, &sw); - if (res) { - PrintAndLogEx(ERR, "Can't select authenticator. res=%x. Exit...", res); + PrintAndLogEx(ERR, "Can't select authenticator. res=%x. exiting...", res); DropField(); return res; } @@ -840,7 +835,7 @@ static int CmdHFFido2GetAssertion(const char *cmd) { if (sw != 0x9000) { PrintAndLogEx(ERR, "Can't select FIDO application. APDU response status: %04x - %s", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff)); DropField(); - return 2; + return PM3_ESOFT; } res = FIDO2CreateGetAssertionReq(root, data, sizeof(data), &datalen, createAllowList); @@ -849,9 +844,9 @@ static int CmdHFFido2GetAssertion(const char *cmd) { if (showCBOR) { PrintAndLogEx(SUCCESS, "CBOR get assertion request:"); - PrintAndLogEx(NORMAL, "---------------- CBOR ------------------"); + PrintAndLogEx(NORMAL, "---------------- " _CYAN_("CBOR") " ------------------"); TinyCborPrintFIDOPackage(fido2CmdGetAssertion, false, data, datalen); - PrintAndLogEx(NORMAL, "---------------- CBOR ------------------"); + PrintAndLogEx(NORMAL, "---------------- " _CYAN_("CBOR") " ------------------"); } res = FIDO2GetAssertion(data, datalen, buf, sizeof(buf), &len, &sw); @@ -863,20 +858,20 @@ static int CmdHFFido2GetAssertion(const char *cmd) { if (sw != 0x9000) { PrintAndLogEx(ERR, "ERROR execute get assertion command. APDU response status: %04x - %s", sw, GetAPDUCodeDescription(sw >> 8, sw & 0xff)); - return 3; + return PM3_ESOFT; } if (buf[0]) { PrintAndLogEx(ERR, "FIDO2 get assertion error: %d - %s", buf[0], fido2GetCmdErrorDescription(buf[0])); - return 0; + return PM3_ESOFT; } PrintAndLogEx(SUCCESS, "GetAssertion result (%zu b) OK.", len); if (showCBOR) { PrintAndLogEx(SUCCESS, "CBOR get assertion response:"); - PrintAndLogEx(NORMAL, "---------------- CBOR ------------------"); + PrintAndLogEx(NORMAL, "---------------- " _CYAN_("CBOR") " ------------------"); TinyCborPrintFIDOPackage(fido2CmdGetAssertion, true, &buf[1], len - 1); - PrintAndLogEx(NORMAL, "---------------- CBOR ------------------"); + PrintAndLogEx(NORMAL, "---------------- " _CYAN_("CBOR") " ------------------"); } // parse returned cbor @@ -886,32 +881,32 @@ static int CmdHFFido2GetAssertion(const char *cmd) { res = json_dump_file(root, fname, JSON_INDENT(2)); if (res) { PrintAndLogEx(ERR, "ERROR: can't save the file: %s", fname); - return 200; + return PM3_EFILE; } PrintAndLogEx(SUCCESS, "File " _YELLOW_("`%s`") " saved.", fname); } json_decref(root); - return 0; -}; + return PM3_SUCCESS; +} static command_t CommandTable[] = { - {"help", CmdHelp, AlwaysAvailable, "This help."}, - {"info", CmdHFFidoInfo, IfPm3Iso14443a, "Info about FIDO tag."}, - {"reg", CmdHFFidoRegister, IfPm3Iso14443a, "FIDO U2F Registration Message."}, - {"auth", CmdHFFidoAuthenticate, IfPm3Iso14443a, "FIDO U2F Authentication Message."}, - {"make", CmdHFFido2MakeCredential, IfPm3Iso14443a, "FIDO2 MakeCredential command."}, - {"assert", CmdHFFido2GetAssertion, IfPm3Iso14443a, "FIDO2 GetAssertion command."}, - {NULL, NULL, 0, NULL} + {"help", CmdHelp, AlwaysAvailable, "This help."}, + {"info", CmdHFFidoInfo, IfPm3Iso14443a, "Info about FIDO tag."}, + {"reg", CmdHFFidoRegister, IfPm3Iso14443a, "FIDO U2F Registration Message."}, + {"auth", CmdHFFidoAuthenticate, IfPm3Iso14443a, "FIDO U2F Authentication Message."}, + {"make", CmdHFFido2MakeCredential, IfPm3Iso14443a, "FIDO2 MakeCredential command."}, + {"assert", CmdHFFido2GetAssertion, IfPm3Iso14443a, "FIDO2 GetAssertion command."}, + {NULL, NULL, 0, NULL} }; int CmdHFFido(const char *Cmd) { - (void)WaitForResponseTimeout(CMD_ACK, NULL, 100); + clearCommandBuffer(); return CmdsParse(CommandTable, Cmd); } int CmdHelp(const char *Cmd) { (void)Cmd; // Cmd is not used so far CmdsHelp(CommandTable); - return 0; + return PM3_SUCCESS; } From d5731b3aec5262f949011e8d7b55555fc1a31154 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jun 2020 14:52:48 +0200 Subject: [PATCH 283/527] chg, strange wait --- client/src/cmdhfmfp.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 5f10406b1..f39ba5c2e 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1506,7 +1506,7 @@ static int CmdHelp(const char *Cmd) { } int CmdHFMFP(const char *Cmd) { - (void)WaitForResponseTimeout(CMD_ACK, NULL, 100); + clearCommandBuffer(); return CmdsParse(CommandTable, Cmd); } From dcdd9ce364e3f044759043292b22b249283e2fae Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jun 2020 15:02:35 +0200 Subject: [PATCH 284/527] nothing special --- client/deps/jansson/load.c | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/client/deps/jansson/load.c b/client/deps/jansson/load.c index 7f3fa7458..52b9bed89 100644 --- a/client/deps/jansson/load.c +++ b/client/deps/jansson/load.c @@ -1040,8 +1040,6 @@ json_t *json_loadfd(int input, size_t flags, json_error_t *error) { json_t *json_load_file(const char *path, size_t flags, json_error_t *error) { json_t *result; - FILE *fp; - jsonp_error_init(error, path); if (path == NULL) { @@ -1049,15 +1047,13 @@ json_t *json_load_file(const char *path, size_t flags, json_error_t *error) { return NULL; } - fp = fopen(path, "rb"); + FILE *fp = fopen(path, "rb"); if (!fp) { - error_set(error, NULL, json_error_cannot_open_file, "unable to open %s: %s", - path, strerror(errno)); + error_set(error, NULL, json_error_cannot_open_file, "unable to open %s: %s", path, strerror(errno)); return NULL; } result = json_loadf(fp, flags, error); - fclose(fp); return result; } From 173f2d472d366b91eef2b97af7f80c35a524b3e1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jun 2020 15:27:07 +0200 Subject: [PATCH 285/527] chg; remove unused fcts --- client/src/util.c | 48 ----------------------------------------------- client/src/util.h | 5 ----- 2 files changed, 53 deletions(-) diff --git a/client/src/util.c b/client/src/util.c index 12e62074c..5e1e55d67 100644 --- a/client/src/util.c +++ b/client/src/util.c @@ -80,54 +80,6 @@ int kbd_enter_pressed(void) { } #endif -// log files functions - -// open, appped and close logfile -void AddLogLine(const char *fn, const char *data, const char *c) { - FILE *f = NULL; - char filename[FILE_PATH_SIZE] = {0x00}; - int len = 0; - - len = strlen(fn); - if (len > FILE_PATH_SIZE) - len = FILE_PATH_SIZE; - memcpy(filename, fn, len); - - f = fopen(filename, "a"); - if (!f) { - PrintAndLogEx(ERR, "Could not append log file" _YELLOW_("%s"), filename); - return; - } - - fprintf(f, "%s", data); - fprintf(f, "%s\n", c); - fflush(f); - fclose(f); -} - -void AddLogHex(const char *fn, const char *extData, const uint8_t *data, const size_t len) { - AddLogLine(fn, extData, sprint_hex(data, len)); -} - -void AddLogUint64(const char *fn, const char *data, const uint64_t value) { - char buf[20] = {0}; - sprintf(buf, "%016" PRIx64 "", value); - AddLogLine(fn, data, buf); -} - -void AddLogCurrentDT(const char *fn) { - char buf[20] = {0}; - struct tm *ct, tm_buf; - time_t now = time(NULL); -#if defined(_WIN32) - ct = gmtime_s(&tm_buf, &now) == 0 ? &tm_buf : NULL; -#else - ct = gmtime_r(&now, &tm_buf); -#endif - strftime(buf, sizeof(buf), "%Y-%m-%d %H:%M:%S", ct); - AddLogLine(fn, "\nanticollision: ", buf); -} - // create filename on hex uid. // param *fn - pointer to filename char array // param *uid - pointer to uid byte array diff --git a/client/src/util.h b/client/src/util.h index 3f67c33f4..c15183734 100644 --- a/client/src/util.h +++ b/client/src/util.h @@ -28,12 +28,7 @@ extern uint8_t g_printAndLog; #define PRINTANDLOG_LOG 2 int kbd_enter_pressed(void); -void AddLogLine(const char *fn, const char *data, const char *c); -void AddLogHex(const char *fn, const char *extData, const uint8_t *data, const size_t len); -void AddLogUint64(const char *fn, const char *data, const uint64_t value); -void AddLogCurrentDT(const char *fn); void FillFileNameByUID(char *filenamePrefix, const uint8_t *uid, const char *ext, const int uidlen); - // fill buffer from structure [{uint8_t data, size_t length},...] int FillBuffer(uint8_t *data, size_t maxDataLength, size_t *dataLength, ...); From 519d2e4917347251db52346b90bed5a78725a766 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jun 2020 15:27:22 +0200 Subject: [PATCH 286/527] fiddle --- client/src/proxmark3.c | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 296149357..eb34393ae 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -143,12 +143,15 @@ int push_cmdscriptfile(char *path, bool stayafter) { PrintAndLogEx(ERR, "Too many nested scripts, skipping %s\n", path); return PM3_EMALLOC; } - FILE *tmp = fopen(path, "r"); - if (tmp == NULL) + + FILE *f = fopen(path, "r"); + if (f == NULL) return PM3_EFILE; + if (cmdscriptfile_idx == 0) cmdscriptfile_stayafter = stayafter; - cmdscriptfile[++cmdscriptfile_idx] = tmp; + + cmdscriptfile[++cmdscriptfile_idx] = f; return PM3_SUCCESS; } From 64322896f21f271e8b3986599811c0c60928cee1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jun 2020 15:31:41 +0200 Subject: [PATCH 287/527] chg, textual --- client/src/ui.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/client/src/ui.c b/client/src/ui.c index 86d996ae0..0f4e28a62 100644 --- a/client/src/ui.c +++ b/client/src/ui.c @@ -316,20 +316,20 @@ static void fPrintAndLog(FILE *stream, const char *fmt, ...) { timenow = gmtime(&now); strftime(filename, sizeof(filename), PROXLOG, timenow); if (searchHomeFilePath(&my_logfile_path, LOGS_SUBDIR, filename, true) != PM3_SUCCESS) { - fprintf(stderr, "[-] Logging disabled!\n\n"); + printf(_YELLOW_("[-]") " Logging disabled!\n"); my_logfile_path = NULL; logging = 0; } else { logfile = fopen(my_logfile_path, "a"); if (logfile == NULL) { - fprintf(stderr, "[-] Can't open logfile %s, logging disabled!\n", my_logfile_path); + printf(_YELLOW_("[-]") " Can't open logfile %s, logging disabled!\n", my_logfile_path); logging = 0; } else { if (session.supports_colors) { - printf(_YELLOW_("[=] ") "Session log " _YELLOW_("%s") "\n", my_logfile_path); + printf(_YELLOW_("[=]") " Session log " _YELLOW_("%s") "\n", my_logfile_path); } else { - printf("[=] Session log %s\n", my_logfile_path); + printf(_YELLOW_("[=]") " Session log %s\n", my_logfile_path); } } @@ -363,7 +363,6 @@ static void fPrintAndLog(FILE *stream, const char *fmt, ...) { if (g_printAndLog & PRINTANDLOG_PRINT) { memcpy_filter_emoji(buffer3, buffer2, sizeof(buffer2), session.emoji_mode); fprintf(stream, "%s", buffer3); -// fprintf(stream, " "); // cleaning prompt fprintf(stream, "\n"); } From 96ae026f3545b87596294500e7545f87509f7d4e Mon Sep 17 00:00:00 2001 From: slurdge <slurdge@slurdge.org> Date: Wed, 3 Jun 2020 16:07:23 +0200 Subject: [PATCH 288/527] import lz4 --- common/get_lz4.sh | 5 + common/lz4/LICENSE | 11 + common/lz4/lz4.c | 2398 ++++++++++++++++++++++++++++++++++++++++++++ common/lz4/lz4.h | 764 ++++++++++++++ common/lz4/lz4hc.c | 1538 ++++++++++++++++++++++++++++ common/lz4/lz4hc.h | 438 ++++++++ common_fpga/fpga.h | 2 +- 7 files changed, 5155 insertions(+), 1 deletion(-) create mode 100755 common/get_lz4.sh create mode 100644 common/lz4/LICENSE create mode 100644 common/lz4/lz4.c create mode 100644 common/lz4/lz4.h create mode 100644 common/lz4/lz4hc.c create mode 100644 common/lz4/lz4hc.h diff --git a/common/get_lz4.sh b/common/get_lz4.sh new file mode 100755 index 000000000..ef4de2c7b --- /dev/null +++ b/common/get_lz4.sh @@ -0,0 +1,5 @@ +version=1.9.2 +mkdir -p lz4 +wget https://github.com/lz4/lz4/archive/v$version.zip +unzip -o -j v$version "lz4-$version/LICENSE" "lz4-$version/lib/lz4.h" "lz4-$version/lib/lz4.c" "lz4-$version/lib/lz4hc.h" "lz4-$version/lib/lz4hc.c" -d lz4 +rm v$version.zip \ No newline at end of file diff --git a/common/lz4/LICENSE b/common/lz4/LICENSE new file mode 100644 index 000000000..c221aebd2 --- /dev/null +++ b/common/lz4/LICENSE @@ -0,0 +1,11 @@ +This repository uses 2 different licenses : +- all files in the `lib` directory use a BSD 2-Clause license +- all other files use a GPLv2 license, unless explicitly stated otherwise + +Relevant license is reminded at the top of each source file, +and with presence of COPYING or LICENSE file in associated directories. + +This model is selected to emphasize that +files in the `lib` directory are designed to be included into 3rd party applications, +while all other files, in `programs`, `tests` or `examples`, +receive more limited attention and support for such scenario. diff --git a/common/lz4/lz4.c b/common/lz4/lz4.c new file mode 100644 index 000000000..9808d70ae --- /dev/null +++ b/common/lz4/lz4.c @@ -0,0 +1,2398 @@ +/* + LZ4 - Fast LZ compression algorithm + Copyright (C) 2011-present, Yann Collet. + + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - LZ4 homepage : http://www.lz4.org + - LZ4 source repository : https://github.com/lz4/lz4 +*/ + +/*-************************************ +* Tuning parameters +**************************************/ +/* + * LZ4_HEAPMODE : + * Select how default compression functions will allocate memory for their hash table, + * in memory stack (0:default, fastest), or in memory heap (1:requires malloc()). + */ +#ifndef LZ4_HEAPMODE +# define LZ4_HEAPMODE 0 +#endif + +/* + * ACCELERATION_DEFAULT : + * Select "acceleration" for LZ4_compress_fast() when parameter value <= 0 + */ +#define ACCELERATION_DEFAULT 1 + + +/*-************************************ +* CPU Feature Detection +**************************************/ +/* LZ4_FORCE_MEMORY_ACCESS + * By default, access to unaligned memory is controlled by `memcpy()`, which is safe and portable. + * Unfortunately, on some target/compiler combinations, the generated assembly is sub-optimal. + * The below switch allow to select different access method for improved performance. + * Method 0 (default) : use `memcpy()`. Safe and portable. + * Method 1 : `__packed` statement. It depends on compiler extension (ie, not portable). + * This method is safe if your compiler supports it, and *generally* as fast or faster than `memcpy`. + * Method 2 : direct access. This method is portable but violate C standard. + * It can generate buggy code on targets which assembly generation depends on alignment. + * But in some circumstances, it's the only known way to get the most performance (ie GCC + ARMv6) + * See https://fastcompression.blogspot.fr/2015/08/accessing-unaligned-memory.html for details. + * Prefer these methods in priority order (0 > 1 > 2) + */ +#ifndef LZ4_FORCE_MEMORY_ACCESS /* can be defined externally */ +# if defined(__GNUC__) && \ + ( defined(__ARM_ARCH_6__) || defined(__ARM_ARCH_6J__) || defined(__ARM_ARCH_6K__) \ + || defined(__ARM_ARCH_6Z__) || defined(__ARM_ARCH_6ZK__) || defined(__ARM_ARCH_6T2__) ) +# define LZ4_FORCE_MEMORY_ACCESS 2 +# elif (defined(__INTEL_COMPILER) && !defined(_WIN32)) || defined(__GNUC__) +# define LZ4_FORCE_MEMORY_ACCESS 1 +# endif +#endif + +/* + * LZ4_FORCE_SW_BITCOUNT + * Define this parameter if your target system or compiler does not support hardware bit count + */ +#if defined(_MSC_VER) && defined(_WIN32_WCE) /* Visual Studio for WinCE doesn't support Hardware bit count */ +# define LZ4_FORCE_SW_BITCOUNT +#endif + + + +/*-************************************ +* Dependency +**************************************/ +/* + * LZ4_SRC_INCLUDED: + * Amalgamation flag, whether lz4.c is included + */ +#ifndef LZ4_SRC_INCLUDED +# define LZ4_SRC_INCLUDED 1 +#endif + +#ifndef LZ4_STATIC_LINKING_ONLY +#define LZ4_STATIC_LINKING_ONLY +#endif + +#ifndef LZ4_DISABLE_DEPRECATE_WARNINGS +#define LZ4_DISABLE_DEPRECATE_WARNINGS /* due to LZ4_decompress_safe_withPrefix64k */ +#endif + +#define LZ4_STATIC_LINKING_ONLY /* LZ4_DISTANCE_MAX */ +#include "lz4.h" +/* see also "memory routines" below */ + + +/*-************************************ +* Compiler Options +**************************************/ +#ifdef _MSC_VER /* Visual Studio */ +# include <intrin.h> +# pragma warning(disable : 4127) /* disable: C4127: conditional expression is constant */ +# pragma warning(disable : 4293) /* disable: C4293: too large shift (32-bits) */ +#endif /* _MSC_VER */ + +#ifndef LZ4_FORCE_INLINE +# ifdef _MSC_VER /* Visual Studio */ +# define LZ4_FORCE_INLINE static __forceinline +# else +# if defined (__cplusplus) || defined (__STDC_VERSION__) && __STDC_VERSION__ >= 199901L /* C99 */ +# ifdef __GNUC__ +# define LZ4_FORCE_INLINE static inline __attribute__((always_inline)) +# else +# define LZ4_FORCE_INLINE static inline +# endif +# else +# define LZ4_FORCE_INLINE static +# endif /* __STDC_VERSION__ */ +# endif /* _MSC_VER */ +#endif /* LZ4_FORCE_INLINE */ + +/* LZ4_FORCE_O2_GCC_PPC64LE and LZ4_FORCE_O2_INLINE_GCC_PPC64LE + * gcc on ppc64le generates an unrolled SIMDized loop for LZ4_wildCopy8, + * together with a simple 8-byte copy loop as a fall-back path. + * However, this optimization hurts the decompression speed by >30%, + * because the execution does not go to the optimized loop + * for typical compressible data, and all of the preamble checks + * before going to the fall-back path become useless overhead. + * This optimization happens only with the -O3 flag, and -O2 generates + * a simple 8-byte copy loop. + * With gcc on ppc64le, all of the LZ4_decompress_* and LZ4_wildCopy8 + * functions are annotated with __attribute__((optimize("O2"))), + * and also LZ4_wildCopy8 is forcibly inlined, so that the O2 attribute + * of LZ4_wildCopy8 does not affect the compression speed. + */ +#if defined(__PPC64__) && defined(__LITTLE_ENDIAN__) && defined(__GNUC__) && !defined(__clang__) +# define LZ4_FORCE_O2_GCC_PPC64LE __attribute__((optimize("O2"))) +# define LZ4_FORCE_O2_INLINE_GCC_PPC64LE __attribute__((optimize("O2"))) LZ4_FORCE_INLINE +#else +# define LZ4_FORCE_O2_GCC_PPC64LE +# define LZ4_FORCE_O2_INLINE_GCC_PPC64LE static +#endif + +#if (defined(__GNUC__) && (__GNUC__ >= 3)) || (defined(__INTEL_COMPILER) && (__INTEL_COMPILER >= 800)) || defined(__clang__) +# define expect(expr,value) (__builtin_expect ((expr),(value)) ) +#else +# define expect(expr,value) (expr) +#endif + +#ifndef likely +#define likely(expr) expect((expr) != 0, 1) +#endif +#ifndef unlikely +#define unlikely(expr) expect((expr) != 0, 0) +#endif + + +/*-************************************ +* Memory routines +**************************************/ +#include <stdlib.h> /* malloc, calloc, free */ +#define ALLOC(s) malloc(s) +#define ALLOC_AND_ZERO(s) calloc(1,s) +#define FREEMEM(p) free(p) +#include <string.h> /* memset, memcpy */ +#define MEM_INIT(p,v,s) memset((p),(v),(s)) + + +/*-************************************ +* Common Constants +**************************************/ +#define MINMATCH 4 + +#define WILDCOPYLENGTH 8 +#define LASTLITERALS 5 /* see ../doc/lz4_Block_format.md#parsing-restrictions */ +#define MFLIMIT 12 /* see ../doc/lz4_Block_format.md#parsing-restrictions */ +#define MATCH_SAFEGUARD_DISTANCE ((2*WILDCOPYLENGTH) - MINMATCH) /* ensure it's possible to write 2 x wildcopyLength without overflowing output buffer */ +#define FASTLOOP_SAFE_DISTANCE 64 +static const int LZ4_minLength = (MFLIMIT+1); + +#define KB *(1 <<10) +#define MB *(1 <<20) +#define GB *(1U<<30) + +#define LZ4_DISTANCE_ABSOLUTE_MAX 65535 +#if (LZ4_DISTANCE_MAX > LZ4_DISTANCE_ABSOLUTE_MAX) /* max supported by LZ4 format */ +# error "LZ4_DISTANCE_MAX is too big : must be <= 65535" +#endif + +#define ML_BITS 4 +#define ML_MASK ((1U<<ML_BITS)-1) +#define RUN_BITS (8-ML_BITS) +#define RUN_MASK ((1U<<RUN_BITS)-1) + + +/*-************************************ +* Error detection +**************************************/ +#if defined(LZ4_DEBUG) && (LZ4_DEBUG>=1) +# include <assert.h> +#else +# ifndef assert +# define assert(condition) ((void)0) +# endif +#endif + +#define LZ4_STATIC_ASSERT(c) { enum { LZ4_static_assert = 1/(int)(!!(c)) }; } /* use after variable declarations */ + +#if defined(LZ4_DEBUG) && (LZ4_DEBUG>=2) +# include <stdio.h> +static int g_debuglog_enable = 1; +# define DEBUGLOG(l, ...) { \ + if ((g_debuglog_enable) && (l<=LZ4_DEBUG)) { \ + fprintf(stderr, __FILE__ ": "); \ + fprintf(stderr, __VA_ARGS__); \ + fprintf(stderr, " \n"); \ + } } +#else +# define DEBUGLOG(l, ...) {} /* disabled */ +#endif + + +/*-************************************ +* Types +**************************************/ +#if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) +# include <stdint.h> + typedef uint8_t BYTE; + typedef uint16_t U16; + typedef uint32_t U32; + typedef int32_t S32; + typedef uint64_t U64; + typedef uintptr_t uptrval; +#else + typedef unsigned char BYTE; + typedef unsigned short U16; + typedef unsigned int U32; + typedef signed int S32; + typedef unsigned long long U64; + typedef size_t uptrval; /* generally true, except OpenVMS-64 */ +#endif + +#if defined(__x86_64__) + typedef U64 reg_t; /* 64-bits in x32 mode */ +#else + typedef size_t reg_t; /* 32-bits in x32 mode */ +#endif + +typedef enum { + notLimited = 0, + limitedOutput = 1, + fillOutput = 2 +} limitedOutput_directive; + + +/*-************************************ +* Reading and writing into memory +**************************************/ +static unsigned LZ4_isLittleEndian(void) +{ + const union { U32 u; BYTE c[4]; } one = { 1 }; /* don't use static : performance detrimental */ + return one.c[0]; +} + + +#if defined(LZ4_FORCE_MEMORY_ACCESS) && (LZ4_FORCE_MEMORY_ACCESS==2) +/* lie to the compiler about data alignment; use with caution */ + +static U16 LZ4_read16(const void* memPtr) { return *(const U16*) memPtr; } +static U32 LZ4_read32(const void* memPtr) { return *(const U32*) memPtr; } +static reg_t LZ4_read_ARCH(const void* memPtr) { return *(const reg_t*) memPtr; } + +static void LZ4_write16(void* memPtr, U16 value) { *(U16*)memPtr = value; } +static void LZ4_write32(void* memPtr, U32 value) { *(U32*)memPtr = value; } + +#elif defined(LZ4_FORCE_MEMORY_ACCESS) && (LZ4_FORCE_MEMORY_ACCESS==1) + +/* __pack instructions are safer, but compiler specific, hence potentially problematic for some compilers */ +/* currently only defined for gcc and icc */ +typedef union { U16 u16; U32 u32; reg_t uArch; } __attribute__((packed)) unalign; + +static U16 LZ4_read16(const void* ptr) { return ((const unalign*)ptr)->u16; } +static U32 LZ4_read32(const void* ptr) { return ((const unalign*)ptr)->u32; } +static reg_t LZ4_read_ARCH(const void* ptr) { return ((const unalign*)ptr)->uArch; } + +static void LZ4_write16(void* memPtr, U16 value) { ((unalign*)memPtr)->u16 = value; } +static void LZ4_write32(void* memPtr, U32 value) { ((unalign*)memPtr)->u32 = value; } + +#else /* safe and portable access using memcpy() */ + +static U16 LZ4_read16(const void* memPtr) +{ + U16 val; memcpy(&val, memPtr, sizeof(val)); return val; +} + +static U32 LZ4_read32(const void* memPtr) +{ + U32 val; memcpy(&val, memPtr, sizeof(val)); return val; +} + +static reg_t LZ4_read_ARCH(const void* memPtr) +{ + reg_t val; memcpy(&val, memPtr, sizeof(val)); return val; +} + +static void LZ4_write16(void* memPtr, U16 value) +{ + memcpy(memPtr, &value, sizeof(value)); +} + +static void LZ4_write32(void* memPtr, U32 value) +{ + memcpy(memPtr, &value, sizeof(value)); +} + +#endif /* LZ4_FORCE_MEMORY_ACCESS */ + + +static U16 LZ4_readLE16(const void* memPtr) +{ + if (LZ4_isLittleEndian()) { + return LZ4_read16(memPtr); + } else { + const BYTE* p = (const BYTE*)memPtr; + return (U16)((U16)p[0] + (p[1]<<8)); + } +} + +static void LZ4_writeLE16(void* memPtr, U16 value) +{ + if (LZ4_isLittleEndian()) { + LZ4_write16(memPtr, value); + } else { + BYTE* p = (BYTE*)memPtr; + p[0] = (BYTE) value; + p[1] = (BYTE)(value>>8); + } +} + +/* customized variant of memcpy, which can overwrite up to 8 bytes beyond dstEnd */ +LZ4_FORCE_O2_INLINE_GCC_PPC64LE +void LZ4_wildCopy8(void* dstPtr, const void* srcPtr, void* dstEnd) +{ + BYTE* d = (BYTE*)dstPtr; + const BYTE* s = (const BYTE*)srcPtr; + BYTE* const e = (BYTE*)dstEnd; + + do { memcpy(d,s,8); d+=8; s+=8; } while (d<e); +} + +static const unsigned inc32table[8] = {0, 1, 2, 1, 0, 4, 4, 4}; +static const int dec64table[8] = {0, 0, 0, -1, -4, 1, 2, 3}; + + +#ifndef LZ4_FAST_DEC_LOOP +# if defined(__i386__) || defined(__x86_64__) +# define LZ4_FAST_DEC_LOOP 1 +# elif defined(__aarch64__) && !defined(__clang__) + /* On aarch64, we disable this optimization for clang because on certain + * mobile chipsets and clang, it reduces performance. For more information + * refer to https://github.com/lz4/lz4/pull/707. */ +# define LZ4_FAST_DEC_LOOP 1 +# else +# define LZ4_FAST_DEC_LOOP 0 +# endif +#endif + +#if LZ4_FAST_DEC_LOOP + +LZ4_FORCE_O2_INLINE_GCC_PPC64LE void +LZ4_memcpy_using_offset_base(BYTE* dstPtr, const BYTE* srcPtr, BYTE* dstEnd, const size_t offset) +{ + if (offset < 8) { + dstPtr[0] = srcPtr[0]; + dstPtr[1] = srcPtr[1]; + dstPtr[2] = srcPtr[2]; + dstPtr[3] = srcPtr[3]; + srcPtr += inc32table[offset]; + memcpy(dstPtr+4, srcPtr, 4); + srcPtr -= dec64table[offset]; + dstPtr += 8; + } else { + memcpy(dstPtr, srcPtr, 8); + dstPtr += 8; + srcPtr += 8; + } + + LZ4_wildCopy8(dstPtr, srcPtr, dstEnd); +} + +/* customized variant of memcpy, which can overwrite up to 32 bytes beyond dstEnd + * this version copies two times 16 bytes (instead of one time 32 bytes) + * because it must be compatible with offsets >= 16. */ +LZ4_FORCE_O2_INLINE_GCC_PPC64LE void +LZ4_wildCopy32(void* dstPtr, const void* srcPtr, void* dstEnd) +{ + BYTE* d = (BYTE*)dstPtr; + const BYTE* s = (const BYTE*)srcPtr; + BYTE* const e = (BYTE*)dstEnd; + + do { memcpy(d,s,16); memcpy(d+16,s+16,16); d+=32; s+=32; } while (d<e); +} + +/* LZ4_memcpy_using_offset() presumes : + * - dstEnd >= dstPtr + MINMATCH + * - there is at least 8 bytes available to write after dstEnd */ +LZ4_FORCE_O2_INLINE_GCC_PPC64LE void +LZ4_memcpy_using_offset(BYTE* dstPtr, const BYTE* srcPtr, BYTE* dstEnd, const size_t offset) +{ + BYTE v[8]; + + assert(dstEnd >= dstPtr + MINMATCH); + LZ4_write32(dstPtr, 0); /* silence an msan warning when offset==0 */ + + switch(offset) { + case 1: + memset(v, *srcPtr, 8); + break; + case 2: + memcpy(v, srcPtr, 2); + memcpy(&v[2], srcPtr, 2); + memcpy(&v[4], &v[0], 4); + break; + case 4: + memcpy(v, srcPtr, 4); + memcpy(&v[4], srcPtr, 4); + break; + default: + LZ4_memcpy_using_offset_base(dstPtr, srcPtr, dstEnd, offset); + return; + } + + memcpy(dstPtr, v, 8); + dstPtr += 8; + while (dstPtr < dstEnd) { + memcpy(dstPtr, v, 8); + dstPtr += 8; + } +} +#endif + + +/*-************************************ +* Common functions +**************************************/ +static unsigned LZ4_NbCommonBytes (reg_t val) +{ + if (LZ4_isLittleEndian()) { + if (sizeof(val)==8) { +# if defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT) + unsigned long r = 0; + _BitScanForward64( &r, (U64)val ); + return (int)(r>>3); +# elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT) + return (unsigned)__builtin_ctzll((U64)val) >> 3; +# else + static const int DeBruijnBytePos[64] = { 0, 0, 0, 0, 0, 1, 1, 2, + 0, 3, 1, 3, 1, 4, 2, 7, + 0, 2, 3, 6, 1, 5, 3, 5, + 1, 3, 4, 4, 2, 5, 6, 7, + 7, 0, 1, 2, 3, 3, 4, 6, + 2, 6, 5, 5, 3, 4, 5, 6, + 7, 1, 2, 4, 6, 4, 4, 5, + 7, 2, 6, 5, 7, 6, 7, 7 }; + return DeBruijnBytePos[((U64)((val & -(long long)val) * 0x0218A392CDABBD3FULL)) >> 58]; +# endif + } else /* 32 bits */ { +# if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT) + unsigned long r; + _BitScanForward( &r, (U32)val ); + return (int)(r>>3); +# elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT) + return (unsigned)__builtin_ctz((U32)val) >> 3; +# else + static const int DeBruijnBytePos[32] = { 0, 0, 3, 0, 3, 1, 3, 0, + 3, 2, 2, 1, 3, 2, 0, 1, + 3, 3, 1, 2, 2, 2, 2, 0, + 3, 1, 2, 0, 1, 0, 1, 1 }; + return DeBruijnBytePos[((U32)((val & -(S32)val) * 0x077CB531U)) >> 27]; +# endif + } + } else /* Big Endian CPU */ { + if (sizeof(val)==8) { /* 64-bits */ +# if defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT) + unsigned long r = 0; + _BitScanReverse64( &r, val ); + return (unsigned)(r>>3); +# elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT) + return (unsigned)__builtin_clzll((U64)val) >> 3; +# else + static const U32 by32 = sizeof(val)*4; /* 32 on 64 bits (goal), 16 on 32 bits. + Just to avoid some static analyzer complaining about shift by 32 on 32-bits target. + Note that this code path is never triggered in 32-bits mode. */ + unsigned r; + if (!(val>>by32)) { r=4; } else { r=0; val>>=by32; } + if (!(val>>16)) { r+=2; val>>=8; } else { val>>=24; } + r += (!val); + return r; +# endif + } else /* 32 bits */ { +# if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT) + unsigned long r = 0; + _BitScanReverse( &r, (unsigned long)val ); + return (unsigned)(r>>3); +# elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT) + return (unsigned)__builtin_clz((U32)val) >> 3; +# else + unsigned r; + if (!(val>>16)) { r=2; val>>=8; } else { r=0; val>>=24; } + r += (!val); + return r; +# endif + } + } +} + +#define STEPSIZE sizeof(reg_t) +LZ4_FORCE_INLINE +unsigned LZ4_count(const BYTE* pIn, const BYTE* pMatch, const BYTE* pInLimit) +{ + const BYTE* const pStart = pIn; + + if (likely(pIn < pInLimit-(STEPSIZE-1))) { + reg_t const diff = LZ4_read_ARCH(pMatch) ^ LZ4_read_ARCH(pIn); + if (!diff) { + pIn+=STEPSIZE; pMatch+=STEPSIZE; + } else { + return LZ4_NbCommonBytes(diff); + } } + + while (likely(pIn < pInLimit-(STEPSIZE-1))) { + reg_t const diff = LZ4_read_ARCH(pMatch) ^ LZ4_read_ARCH(pIn); + if (!diff) { pIn+=STEPSIZE; pMatch+=STEPSIZE; continue; } + pIn += LZ4_NbCommonBytes(diff); + return (unsigned)(pIn - pStart); + } + + if ((STEPSIZE==8) && (pIn<(pInLimit-3)) && (LZ4_read32(pMatch) == LZ4_read32(pIn))) { pIn+=4; pMatch+=4; } + if ((pIn<(pInLimit-1)) && (LZ4_read16(pMatch) == LZ4_read16(pIn))) { pIn+=2; pMatch+=2; } + if ((pIn<pInLimit) && (*pMatch == *pIn)) pIn++; + return (unsigned)(pIn - pStart); +} + + +#ifndef LZ4_COMMONDEFS_ONLY +/*-************************************ +* Local Constants +**************************************/ +static const int LZ4_64Klimit = ((64 KB) + (MFLIMIT-1)); +static const U32 LZ4_skipTrigger = 6; /* Increase this value ==> compression run slower on incompressible data */ + + +/*-************************************ +* Local Structures and types +**************************************/ +typedef enum { clearedTable = 0, byPtr, byU32, byU16 } tableType_t; + +/** + * This enum distinguishes several different modes of accessing previous + * content in the stream. + * + * - noDict : There is no preceding content. + * - withPrefix64k : Table entries up to ctx->dictSize before the current blob + * blob being compressed are valid and refer to the preceding + * content (of length ctx->dictSize), which is available + * contiguously preceding in memory the content currently + * being compressed. + * - usingExtDict : Like withPrefix64k, but the preceding content is somewhere + * else in memory, starting at ctx->dictionary with length + * ctx->dictSize. + * - usingDictCtx : Like usingExtDict, but everything concerning the preceding + * content is in a separate context, pointed to by + * ctx->dictCtx. ctx->dictionary, ctx->dictSize, and table + * entries in the current context that refer to positions + * preceding the beginning of the current compression are + * ignored. Instead, ctx->dictCtx->dictionary and ctx->dictCtx + * ->dictSize describe the location and size of the preceding + * content, and matches are found by looking in the ctx + * ->dictCtx->hashTable. + */ +typedef enum { noDict = 0, withPrefix64k, usingExtDict, usingDictCtx } dict_directive; +typedef enum { noDictIssue = 0, dictSmall } dictIssue_directive; + + +/*-************************************ +* Local Utils +**************************************/ +int LZ4_versionNumber (void) { return LZ4_VERSION_NUMBER; } +const char* LZ4_versionString(void) { return LZ4_VERSION_STRING; } +int LZ4_compressBound(int isize) { return LZ4_COMPRESSBOUND(isize); } +int LZ4_sizeofState() { return LZ4_STREAMSIZE; } + + +/*-************************************ +* Internal Definitions used in Tests +**************************************/ +#if defined (__cplusplus) +extern "C" { +#endif + +int LZ4_compress_forceExtDict (LZ4_stream_t* LZ4_dict, const char* source, char* dest, int srcSize); + +int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, + int compressedSize, int maxOutputSize, + const void* dictStart, size_t dictSize); + +#if defined (__cplusplus) +} +#endif + +/*-****************************** +* Compression functions +********************************/ +static U32 LZ4_hash4(U32 sequence, tableType_t const tableType) +{ + if (tableType == byU16) + return ((sequence * 2654435761U) >> ((MINMATCH*8)-(LZ4_HASHLOG+1))); + else + return ((sequence * 2654435761U) >> ((MINMATCH*8)-LZ4_HASHLOG)); +} + +static U32 LZ4_hash5(U64 sequence, tableType_t const tableType) +{ + const U32 hashLog = (tableType == byU16) ? LZ4_HASHLOG+1 : LZ4_HASHLOG; + if (LZ4_isLittleEndian()) { + const U64 prime5bytes = 889523592379ULL; + return (U32)(((sequence << 24) * prime5bytes) >> (64 - hashLog)); + } else { + const U64 prime8bytes = 11400714785074694791ULL; + return (U32)(((sequence >> 24) * prime8bytes) >> (64 - hashLog)); + } +} + +LZ4_FORCE_INLINE U32 LZ4_hashPosition(const void* const p, tableType_t const tableType) +{ + if ((sizeof(reg_t)==8) && (tableType != byU16)) return LZ4_hash5(LZ4_read_ARCH(p), tableType); + return LZ4_hash4(LZ4_read32(p), tableType); +} + +static void LZ4_clearHash(U32 h, void* tableBase, tableType_t const tableType) +{ + switch (tableType) + { + default: /* fallthrough */ + case clearedTable: { /* illegal! */ assert(0); return; } + case byPtr: { const BYTE** hashTable = (const BYTE**)tableBase; hashTable[h] = NULL; return; } + case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = 0; return; } + case byU16: { U16* hashTable = (U16*) tableBase; hashTable[h] = 0; return; } + } +} + +static void LZ4_putIndexOnHash(U32 idx, U32 h, void* tableBase, tableType_t const tableType) +{ + switch (tableType) + { + default: /* fallthrough */ + case clearedTable: /* fallthrough */ + case byPtr: { /* illegal! */ assert(0); return; } + case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = idx; return; } + case byU16: { U16* hashTable = (U16*) tableBase; assert(idx < 65536); hashTable[h] = (U16)idx; return; } + } +} + +static void LZ4_putPositionOnHash(const BYTE* p, U32 h, + void* tableBase, tableType_t const tableType, + const BYTE* srcBase) +{ + switch (tableType) + { + case clearedTable: { /* illegal! */ assert(0); return; } + case byPtr: { const BYTE** hashTable = (const BYTE**)tableBase; hashTable[h] = p; return; } + case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = (U32)(p-srcBase); return; } + case byU16: { U16* hashTable = (U16*) tableBase; hashTable[h] = (U16)(p-srcBase); return; } + } +} + +LZ4_FORCE_INLINE void LZ4_putPosition(const BYTE* p, void* tableBase, tableType_t tableType, const BYTE* srcBase) +{ + U32 const h = LZ4_hashPosition(p, tableType); + LZ4_putPositionOnHash(p, h, tableBase, tableType, srcBase); +} + +/* LZ4_getIndexOnHash() : + * Index of match position registered in hash table. + * hash position must be calculated by using base+index, or dictBase+index. + * Assumption 1 : only valid if tableType == byU32 or byU16. + * Assumption 2 : h is presumed valid (within limits of hash table) + */ +static U32 LZ4_getIndexOnHash(U32 h, const void* tableBase, tableType_t tableType) +{ + LZ4_STATIC_ASSERT(LZ4_MEMORY_USAGE > 2); + if (tableType == byU32) { + const U32* const hashTable = (const U32*) tableBase; + assert(h < (1U << (LZ4_MEMORY_USAGE-2))); + return hashTable[h]; + } + if (tableType == byU16) { + const U16* const hashTable = (const U16*) tableBase; + assert(h < (1U << (LZ4_MEMORY_USAGE-1))); + return hashTable[h]; + } + assert(0); return 0; /* forbidden case */ +} + +static const BYTE* LZ4_getPositionOnHash(U32 h, const void* tableBase, tableType_t tableType, const BYTE* srcBase) +{ + if (tableType == byPtr) { const BYTE* const* hashTable = (const BYTE* const*) tableBase; return hashTable[h]; } + if (tableType == byU32) { const U32* const hashTable = (const U32*) tableBase; return hashTable[h] + srcBase; } + { const U16* const hashTable = (const U16*) tableBase; return hashTable[h] + srcBase; } /* default, to ensure a return */ +} + +LZ4_FORCE_INLINE const BYTE* +LZ4_getPosition(const BYTE* p, + const void* tableBase, tableType_t tableType, + const BYTE* srcBase) +{ + U32 const h = LZ4_hashPosition(p, tableType); + return LZ4_getPositionOnHash(h, tableBase, tableType, srcBase); +} + +LZ4_FORCE_INLINE void +LZ4_prepareTable(LZ4_stream_t_internal* const cctx, + const int inputSize, + const tableType_t tableType) { + /* If compression failed during the previous step, then the context + * is marked as dirty, therefore, it has to be fully reset. + */ + if (cctx->dirty) { + DEBUGLOG(5, "LZ4_prepareTable: Full reset for %p", cctx); + MEM_INIT(cctx, 0, sizeof(LZ4_stream_t_internal)); + return; + } + + /* If the table hasn't been used, it's guaranteed to be zeroed out, and is + * therefore safe to use no matter what mode we're in. Otherwise, we figure + * out if it's safe to leave as is or whether it needs to be reset. + */ + if (cctx->tableType != clearedTable) { + assert(inputSize >= 0); + if (cctx->tableType != tableType + || ((tableType == byU16) && cctx->currentOffset + (unsigned)inputSize >= 0xFFFFU) + || ((tableType == byU32) && cctx->currentOffset > 1 GB) + || tableType == byPtr + || inputSize >= 4 KB) + { + DEBUGLOG(4, "LZ4_prepareTable: Resetting table in %p", cctx); + MEM_INIT(cctx->hashTable, 0, LZ4_HASHTABLESIZE); + cctx->currentOffset = 0; + cctx->tableType = clearedTable; + } else { + DEBUGLOG(4, "LZ4_prepareTable: Re-use hash table (no reset)"); + } + } + + /* Adding a gap, so all previous entries are > LZ4_DISTANCE_MAX back, is faster + * than compressing without a gap. However, compressing with + * currentOffset == 0 is faster still, so we preserve that case. + */ + if (cctx->currentOffset != 0 && tableType == byU32) { + DEBUGLOG(5, "LZ4_prepareTable: adding 64KB to currentOffset"); + cctx->currentOffset += 64 KB; + } + + /* Finally, clear history */ + cctx->dictCtx = NULL; + cctx->dictionary = NULL; + cctx->dictSize = 0; +} + +/** LZ4_compress_generic() : + inlined, to ensure branches are decided at compilation time */ +LZ4_FORCE_INLINE int LZ4_compress_generic( + LZ4_stream_t_internal* const cctx, + const char* const source, + char* const dest, + const int inputSize, + int *inputConsumed, /* only written when outputDirective == fillOutput */ + const int maxOutputSize, + const limitedOutput_directive outputDirective, + const tableType_t tableType, + const dict_directive dictDirective, + const dictIssue_directive dictIssue, + const int acceleration) +{ + int result; + const BYTE* ip = (const BYTE*) source; + + U32 const startIndex = cctx->currentOffset; + const BYTE* base = (const BYTE*) source - startIndex; + const BYTE* lowLimit; + + const LZ4_stream_t_internal* dictCtx = (const LZ4_stream_t_internal*) cctx->dictCtx; + const BYTE* const dictionary = + dictDirective == usingDictCtx ? dictCtx->dictionary : cctx->dictionary; + const U32 dictSize = + dictDirective == usingDictCtx ? dictCtx->dictSize : cctx->dictSize; + const U32 dictDelta = (dictDirective == usingDictCtx) ? startIndex - dictCtx->currentOffset : 0; /* make indexes in dictCtx comparable with index in current context */ + + int const maybe_extMem = (dictDirective == usingExtDict) || (dictDirective == usingDictCtx); + U32 const prefixIdxLimit = startIndex - dictSize; /* used when dictDirective == dictSmall */ + const BYTE* const dictEnd = dictionary + dictSize; + const BYTE* anchor = (const BYTE*) source; + const BYTE* const iend = ip + inputSize; + const BYTE* const mflimitPlusOne = iend - MFLIMIT + 1; + const BYTE* const matchlimit = iend - LASTLITERALS; + + /* the dictCtx currentOffset is indexed on the start of the dictionary, + * while a dictionary in the current context precedes the currentOffset */ + const BYTE* dictBase = (dictDirective == usingDictCtx) ? + dictionary + dictSize - dictCtx->currentOffset : + dictionary + dictSize - startIndex; + + BYTE* op = (BYTE*) dest; + BYTE* const olimit = op + maxOutputSize; + + U32 offset = 0; + U32 forwardH; + + DEBUGLOG(5, "LZ4_compress_generic: srcSize=%i, tableType=%u", inputSize, tableType); + /* If init conditions are not met, we don't have to mark stream + * as having dirty context, since no action was taken yet */ + if (outputDirective == fillOutput && maxOutputSize < 1) { return 0; } /* Impossible to store anything */ + if ((U32)inputSize > (U32)LZ4_MAX_INPUT_SIZE) { return 0; } /* Unsupported inputSize, too large (or negative) */ + if ((tableType == byU16) && (inputSize>=LZ4_64Klimit)) { return 0; } /* Size too large (not within 64K limit) */ + if (tableType==byPtr) assert(dictDirective==noDict); /* only supported use case with byPtr */ + assert(acceleration >= 1); + + lowLimit = (const BYTE*)source - (dictDirective == withPrefix64k ? dictSize : 0); + + /* Update context state */ + if (dictDirective == usingDictCtx) { + /* Subsequent linked blocks can't use the dictionary. */ + /* Instead, they use the block we just compressed. */ + cctx->dictCtx = NULL; + cctx->dictSize = (U32)inputSize; + } else { + cctx->dictSize += (U32)inputSize; + } + cctx->currentOffset += (U32)inputSize; + cctx->tableType = (U16)tableType; + + if (inputSize<LZ4_minLength) goto _last_literals; /* Input too small, no compression (all literals) */ + + /* First Byte */ + LZ4_putPosition(ip, cctx->hashTable, tableType, base); + ip++; forwardH = LZ4_hashPosition(ip, tableType); + + /* Main Loop */ + for ( ; ; ) { + const BYTE* match; + BYTE* token; + const BYTE* filledIp; + + /* Find a match */ + if (tableType == byPtr) { + const BYTE* forwardIp = ip; + int step = 1; + int searchMatchNb = acceleration << LZ4_skipTrigger; + do { + U32 const h = forwardH; + ip = forwardIp; + forwardIp += step; + step = (searchMatchNb++ >> LZ4_skipTrigger); + + if (unlikely(forwardIp > mflimitPlusOne)) goto _last_literals; + assert(ip < mflimitPlusOne); + + match = LZ4_getPositionOnHash(h, cctx->hashTable, tableType, base); + forwardH = LZ4_hashPosition(forwardIp, tableType); + LZ4_putPositionOnHash(ip, h, cctx->hashTable, tableType, base); + + } while ( (match+LZ4_DISTANCE_MAX < ip) + || (LZ4_read32(match) != LZ4_read32(ip)) ); + + } else { /* byU32, byU16 */ + + const BYTE* forwardIp = ip; + int step = 1; + int searchMatchNb = acceleration << LZ4_skipTrigger; + do { + U32 const h = forwardH; + U32 const current = (U32)(forwardIp - base); + U32 matchIndex = LZ4_getIndexOnHash(h, cctx->hashTable, tableType); + assert(matchIndex <= current); + assert(forwardIp - base < (ptrdiff_t)(2 GB - 1)); + ip = forwardIp; + forwardIp += step; + step = (searchMatchNb++ >> LZ4_skipTrigger); + + if (unlikely(forwardIp > mflimitPlusOne)) goto _last_literals; + assert(ip < mflimitPlusOne); + + if (dictDirective == usingDictCtx) { + if (matchIndex < startIndex) { + /* there was no match, try the dictionary */ + assert(tableType == byU32); + matchIndex = LZ4_getIndexOnHash(h, dictCtx->hashTable, byU32); + match = dictBase + matchIndex; + matchIndex += dictDelta; /* make dictCtx index comparable with current context */ + lowLimit = dictionary; + } else { + match = base + matchIndex; + lowLimit = (const BYTE*)source; + } + } else if (dictDirective==usingExtDict) { + if (matchIndex < startIndex) { + DEBUGLOG(7, "extDict candidate: matchIndex=%5u < startIndex=%5u", matchIndex, startIndex); + assert(startIndex - matchIndex >= MINMATCH); + match = dictBase + matchIndex; + lowLimit = dictionary; + } else { + match = base + matchIndex; + lowLimit = (const BYTE*)source; + } + } else { /* single continuous memory segment */ + match = base + matchIndex; + } + forwardH = LZ4_hashPosition(forwardIp, tableType); + LZ4_putIndexOnHash(current, h, cctx->hashTable, tableType); + + DEBUGLOG(7, "candidate at pos=%u (offset=%u \n", matchIndex, current - matchIndex); + if ((dictIssue == dictSmall) && (matchIndex < prefixIdxLimit)) { continue; } /* match outside of valid area */ + assert(matchIndex < current); + if ( ((tableType != byU16) || (LZ4_DISTANCE_MAX < LZ4_DISTANCE_ABSOLUTE_MAX)) + && (matchIndex+LZ4_DISTANCE_MAX < current)) { + continue; + } /* too far */ + assert((current - matchIndex) <= LZ4_DISTANCE_MAX); /* match now expected within distance */ + + if (LZ4_read32(match) == LZ4_read32(ip)) { + if (maybe_extMem) offset = current - matchIndex; + break; /* match found */ + } + + } while(1); + } + + /* Catch up */ + filledIp = ip; + while (((ip>anchor) & (match > lowLimit)) && (unlikely(ip[-1]==match[-1]))) { ip--; match--; } + + /* Encode Literals */ + { unsigned const litLength = (unsigned)(ip - anchor); + token = op++; + if ((outputDirective == limitedOutput) && /* Check output buffer overflow */ + (unlikely(op + litLength + (2 + 1 + LASTLITERALS) + (litLength/255) > olimit)) ) { + return 0; /* cannot compress within `dst` budget. Stored indexes in hash table are nonetheless fine */ + } + if ((outputDirective == fillOutput) && + (unlikely(op + (litLength+240)/255 /* litlen */ + litLength /* literals */ + 2 /* offset */ + 1 /* token */ + MFLIMIT - MINMATCH /* min last literals so last match is <= end - MFLIMIT */ > olimit))) { + op--; + goto _last_literals; + } + if (litLength >= RUN_MASK) { + int len = (int)(litLength - RUN_MASK); + *token = (RUN_MASK<<ML_BITS); + for(; len >= 255 ; len-=255) *op++ = 255; + *op++ = (BYTE)len; + } + else *token = (BYTE)(litLength<<ML_BITS); + + /* Copy Literals */ + LZ4_wildCopy8(op, anchor, op+litLength); + op+=litLength; + DEBUGLOG(6, "seq.start:%i, literals=%u, match.start:%i", + (int)(anchor-(const BYTE*)source), litLength, (int)(ip-(const BYTE*)source)); + } + +_next_match: + /* at this stage, the following variables must be correctly set : + * - ip : at start of LZ operation + * - match : at start of previous pattern occurence; can be within current prefix, or within extDict + * - offset : if maybe_ext_memSegment==1 (constant) + * - lowLimit : must be == dictionary to mean "match is within extDict"; must be == source otherwise + * - token and *token : position to write 4-bits for match length; higher 4-bits for literal length supposed already written + */ + + if ((outputDirective == fillOutput) && + (op + 2 /* offset */ + 1 /* token */ + MFLIMIT - MINMATCH /* min last literals so last match is <= end - MFLIMIT */ > olimit)) { + /* the match was too close to the end, rewind and go to last literals */ + op = token; + goto _last_literals; + } + + /* Encode Offset */ + if (maybe_extMem) { /* static test */ + DEBUGLOG(6, " with offset=%u (ext if > %i)", offset, (int)(ip - (const BYTE*)source)); + assert(offset <= LZ4_DISTANCE_MAX && offset > 0); + LZ4_writeLE16(op, (U16)offset); op+=2; + } else { + DEBUGLOG(6, " with offset=%u (same segment)", (U32)(ip - match)); + assert(ip-match <= LZ4_DISTANCE_MAX); + LZ4_writeLE16(op, (U16)(ip - match)); op+=2; + } + + /* Encode MatchLength */ + { unsigned matchCode; + + if ( (dictDirective==usingExtDict || dictDirective==usingDictCtx) + && (lowLimit==dictionary) /* match within extDict */ ) { + const BYTE* limit = ip + (dictEnd-match); + assert(dictEnd > match); + if (limit > matchlimit) limit = matchlimit; + matchCode = LZ4_count(ip+MINMATCH, match+MINMATCH, limit); + ip += (size_t)matchCode + MINMATCH; + if (ip==limit) { + unsigned const more = LZ4_count(limit, (const BYTE*)source, matchlimit); + matchCode += more; + ip += more; + } + DEBUGLOG(6, " with matchLength=%u starting in extDict", matchCode+MINMATCH); + } else { + matchCode = LZ4_count(ip+MINMATCH, match+MINMATCH, matchlimit); + ip += (size_t)matchCode + MINMATCH; + DEBUGLOG(6, " with matchLength=%u", matchCode+MINMATCH); + } + + if ((outputDirective) && /* Check output buffer overflow */ + (unlikely(op + (1 + LASTLITERALS) + (matchCode+240)/255 > olimit)) ) { + if (outputDirective == fillOutput) { + /* Match description too long : reduce it */ + U32 newMatchCode = 15 /* in token */ - 1 /* to avoid needing a zero byte */ + ((U32)(olimit - op) - 1 - LASTLITERALS) * 255; + ip -= matchCode - newMatchCode; + assert(newMatchCode < matchCode); + matchCode = newMatchCode; + if (unlikely(ip <= filledIp)) { + /* We have already filled up to filledIp so if ip ends up less than filledIp + * we have positions in the hash table beyond the current position. This is + * a problem if we reuse the hash table. So we have to remove these positions + * from the hash table. + */ + const BYTE* ptr; + DEBUGLOG(5, "Clearing %u positions", (U32)(filledIp - ip)); + for (ptr = ip; ptr <= filledIp; ++ptr) { + U32 const h = LZ4_hashPosition(ptr, tableType); + LZ4_clearHash(h, cctx->hashTable, tableType); + } + } + } else { + assert(outputDirective == limitedOutput); + return 0; /* cannot compress within `dst` budget. Stored indexes in hash table are nonetheless fine */ + } + } + if (matchCode >= ML_MASK) { + *token += ML_MASK; + matchCode -= ML_MASK; + LZ4_write32(op, 0xFFFFFFFF); + while (matchCode >= 4*255) { + op+=4; + LZ4_write32(op, 0xFFFFFFFF); + matchCode -= 4*255; + } + op += matchCode / 255; + *op++ = (BYTE)(matchCode % 255); + } else + *token += (BYTE)(matchCode); + } + /* Ensure we have enough space for the last literals. */ + assert(!(outputDirective == fillOutput && op + 1 + LASTLITERALS > olimit)); + + anchor = ip; + + /* Test end of chunk */ + if (ip >= mflimitPlusOne) break; + + /* Fill table */ + LZ4_putPosition(ip-2, cctx->hashTable, tableType, base); + + /* Test next position */ + if (tableType == byPtr) { + + match = LZ4_getPosition(ip, cctx->hashTable, tableType, base); + LZ4_putPosition(ip, cctx->hashTable, tableType, base); + if ( (match+LZ4_DISTANCE_MAX >= ip) + && (LZ4_read32(match) == LZ4_read32(ip)) ) + { token=op++; *token=0; goto _next_match; } + + } else { /* byU32, byU16 */ + + U32 const h = LZ4_hashPosition(ip, tableType); + U32 const current = (U32)(ip-base); + U32 matchIndex = LZ4_getIndexOnHash(h, cctx->hashTable, tableType); + assert(matchIndex < current); + if (dictDirective == usingDictCtx) { + if (matchIndex < startIndex) { + /* there was no match, try the dictionary */ + matchIndex = LZ4_getIndexOnHash(h, dictCtx->hashTable, byU32); + match = dictBase + matchIndex; + lowLimit = dictionary; /* required for match length counter */ + matchIndex += dictDelta; + } else { + match = base + matchIndex; + lowLimit = (const BYTE*)source; /* required for match length counter */ + } + } else if (dictDirective==usingExtDict) { + if (matchIndex < startIndex) { + match = dictBase + matchIndex; + lowLimit = dictionary; /* required for match length counter */ + } else { + match = base + matchIndex; + lowLimit = (const BYTE*)source; /* required for match length counter */ + } + } else { /* single memory segment */ + match = base + matchIndex; + } + LZ4_putIndexOnHash(current, h, cctx->hashTable, tableType); + assert(matchIndex < current); + if ( ((dictIssue==dictSmall) ? (matchIndex >= prefixIdxLimit) : 1) + && (((tableType==byU16) && (LZ4_DISTANCE_MAX == LZ4_DISTANCE_ABSOLUTE_MAX)) ? 1 : (matchIndex+LZ4_DISTANCE_MAX >= current)) + && (LZ4_read32(match) == LZ4_read32(ip)) ) { + token=op++; + *token=0; + if (maybe_extMem) offset = current - matchIndex; + DEBUGLOG(6, "seq.start:%i, literals=%u, match.start:%i", + (int)(anchor-(const BYTE*)source), 0, (int)(ip-(const BYTE*)source)); + goto _next_match; + } + } + + /* Prepare next loop */ + forwardH = LZ4_hashPosition(++ip, tableType); + + } + +_last_literals: + /* Encode Last Literals */ + { size_t lastRun = (size_t)(iend - anchor); + if ( (outputDirective) && /* Check output buffer overflow */ + (op + lastRun + 1 + ((lastRun+255-RUN_MASK)/255) > olimit)) { + if (outputDirective == fillOutput) { + /* adapt lastRun to fill 'dst' */ + assert(olimit >= op); + lastRun = (size_t)(olimit-op) - 1; + lastRun -= (lastRun+240)/255; + } else { + assert(outputDirective == limitedOutput); + return 0; /* cannot compress within `dst` budget. Stored indexes in hash table are nonetheless fine */ + } + } + if (lastRun >= RUN_MASK) { + size_t accumulator = lastRun - RUN_MASK; + *op++ = RUN_MASK << ML_BITS; + for(; accumulator >= 255 ; accumulator-=255) *op++ = 255; + *op++ = (BYTE) accumulator; + } else { + *op++ = (BYTE)(lastRun<<ML_BITS); + } + memcpy(op, anchor, lastRun); + ip = anchor + lastRun; + op += lastRun; + } + + if (outputDirective == fillOutput) { + *inputConsumed = (int) (((const char*)ip)-source); + } + DEBUGLOG(5, "LZ4_compress_generic: compressed %i bytes into %i bytes", inputSize, (int)(((char*)op) - dest)); + result = (int)(((char*)op) - dest); + assert(result > 0); + return result; +} + + +int LZ4_compress_fast_extState(void* state, const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration) +{ + LZ4_stream_t_internal* const ctx = & LZ4_initStream(state, sizeof(LZ4_stream_t)) -> internal_donotuse; + assert(ctx != NULL); + if (acceleration < 1) acceleration = ACCELERATION_DEFAULT; + if (maxOutputSize >= LZ4_compressBound(inputSize)) { + if (inputSize < LZ4_64Klimit) { + return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, 0, notLimited, byU16, noDict, noDictIssue, acceleration); + } else { + const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)source > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, 0, notLimited, tableType, noDict, noDictIssue, acceleration); + } + } else { + if (inputSize < LZ4_64Klimit) { + return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, byU16, noDict, noDictIssue, acceleration); + } else { + const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)source > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, noDict, noDictIssue, acceleration); + } + } +} + +/** + * LZ4_compress_fast_extState_fastReset() : + * A variant of LZ4_compress_fast_extState(). + * + * Using this variant avoids an expensive initialization step. It is only safe + * to call if the state buffer is known to be correctly initialized already + * (see comment in lz4.h on LZ4_resetStream_fast() for a definition of + * "correctly initialized"). + */ +int LZ4_compress_fast_extState_fastReset(void* state, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration) +{ + LZ4_stream_t_internal* ctx = &((LZ4_stream_t*)state)->internal_donotuse; + if (acceleration < 1) acceleration = ACCELERATION_DEFAULT; + + if (dstCapacity >= LZ4_compressBound(srcSize)) { + if (srcSize < LZ4_64Klimit) { + const tableType_t tableType = byU16; + LZ4_prepareTable(ctx, srcSize, tableType); + if (ctx->currentOffset) { + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, 0, notLimited, tableType, noDict, dictSmall, acceleration); + } else { + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, 0, notLimited, tableType, noDict, noDictIssue, acceleration); + } + } else { + const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + LZ4_prepareTable(ctx, srcSize, tableType); + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, 0, notLimited, tableType, noDict, noDictIssue, acceleration); + } + } else { + if (srcSize < LZ4_64Klimit) { + const tableType_t tableType = byU16; + LZ4_prepareTable(ctx, srcSize, tableType); + if (ctx->currentOffset) { + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, dstCapacity, limitedOutput, tableType, noDict, dictSmall, acceleration); + } else { + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, dstCapacity, limitedOutput, tableType, noDict, noDictIssue, acceleration); + } + } else { + const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + LZ4_prepareTable(ctx, srcSize, tableType); + return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, dstCapacity, limitedOutput, tableType, noDict, noDictIssue, acceleration); + } + } +} + + +int LZ4_compress_fast(const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration) +{ + int result; +#if (LZ4_HEAPMODE) + LZ4_stream_t* ctxPtr = ALLOC(sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */ + if (ctxPtr == NULL) return 0; +#else + LZ4_stream_t ctx; + LZ4_stream_t* const ctxPtr = &ctx; +#endif + result = LZ4_compress_fast_extState(ctxPtr, source, dest, inputSize, maxOutputSize, acceleration); + +#if (LZ4_HEAPMODE) + FREEMEM(ctxPtr); +#endif + return result; +} + + +int LZ4_compress_default(const char* src, char* dst, int srcSize, int maxOutputSize) +{ + return LZ4_compress_fast(src, dst, srcSize, maxOutputSize, 1); +} + + +/* hidden debug function */ +/* strangely enough, gcc generates faster code when this function is uncommented, even if unused */ +int LZ4_compress_fast_force(const char* src, char* dst, int srcSize, int dstCapacity, int acceleration) +{ + LZ4_stream_t ctx; + LZ4_initStream(&ctx, sizeof(ctx)); + + if (srcSize < LZ4_64Klimit) { + return LZ4_compress_generic(&ctx.internal_donotuse, src, dst, srcSize, NULL, dstCapacity, limitedOutput, byU16, noDict, noDictIssue, acceleration); + } else { + tableType_t const addrMode = (sizeof(void*) > 4) ? byU32 : byPtr; + return LZ4_compress_generic(&ctx.internal_donotuse, src, dst, srcSize, NULL, dstCapacity, limitedOutput, addrMode, noDict, noDictIssue, acceleration); + } +} + + +/* Note!: This function leaves the stream in an unclean/broken state! + * It is not safe to subsequently use the same state with a _fastReset() or + * _continue() call without resetting it. */ +static int LZ4_compress_destSize_extState (LZ4_stream_t* state, const char* src, char* dst, int* srcSizePtr, int targetDstSize) +{ + void* const s = LZ4_initStream(state, sizeof (*state)); + assert(s != NULL); (void)s; + + if (targetDstSize >= LZ4_compressBound(*srcSizePtr)) { /* compression success is guaranteed */ + return LZ4_compress_fast_extState(state, src, dst, *srcSizePtr, targetDstSize, 1); + } else { + if (*srcSizePtr < LZ4_64Klimit) { + return LZ4_compress_generic(&state->internal_donotuse, src, dst, *srcSizePtr, srcSizePtr, targetDstSize, fillOutput, byU16, noDict, noDictIssue, 1); + } else { + tableType_t const addrMode = ((sizeof(void*)==4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + return LZ4_compress_generic(&state->internal_donotuse, src, dst, *srcSizePtr, srcSizePtr, targetDstSize, fillOutput, addrMode, noDict, noDictIssue, 1); + } } +} + + +int LZ4_compress_destSize(const char* src, char* dst, int* srcSizePtr, int targetDstSize) +{ +#if (LZ4_HEAPMODE) + LZ4_stream_t* ctx = (LZ4_stream_t*)ALLOC(sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */ + if (ctx == NULL) return 0; +#else + LZ4_stream_t ctxBody; + LZ4_stream_t* ctx = &ctxBody; +#endif + + int result = LZ4_compress_destSize_extState(ctx, src, dst, srcSizePtr, targetDstSize); + +#if (LZ4_HEAPMODE) + FREEMEM(ctx); +#endif + return result; +} + + + +/*-****************************** +* Streaming functions +********************************/ + +LZ4_stream_t* LZ4_createStream(void) +{ + LZ4_stream_t* const lz4s = (LZ4_stream_t*)ALLOC(sizeof(LZ4_stream_t)); + LZ4_STATIC_ASSERT(LZ4_STREAMSIZE >= sizeof(LZ4_stream_t_internal)); /* A compilation error here means LZ4_STREAMSIZE is not large enough */ + DEBUGLOG(4, "LZ4_createStream %p", lz4s); + if (lz4s == NULL) return NULL; + LZ4_initStream(lz4s, sizeof(*lz4s)); + return lz4s; +} + +#ifndef _MSC_VER /* for some reason, Visual fails the aligment test on 32-bit x86 : + it reports an aligment of 8-bytes, + while actually aligning LZ4_stream_t on 4 bytes. */ +static size_t LZ4_stream_t_alignment(void) +{ + struct { char c; LZ4_stream_t t; } t_a; + return sizeof(t_a) - sizeof(t_a.t); +} +#endif + +LZ4_stream_t* LZ4_initStream (void* buffer, size_t size) +{ + DEBUGLOG(5, "LZ4_initStream"); + if (buffer == NULL) { return NULL; } + if (size < sizeof(LZ4_stream_t)) { return NULL; } +#ifndef _MSC_VER /* for some reason, Visual fails the aligment test on 32-bit x86 : + it reports an aligment of 8-bytes, + while actually aligning LZ4_stream_t on 4 bytes. */ + if (((size_t)buffer) & (LZ4_stream_t_alignment() - 1)) { return NULL; } /* alignment check */ +#endif + MEM_INIT(buffer, 0, sizeof(LZ4_stream_t)); + return (LZ4_stream_t*)buffer; +} + +/* resetStream is now deprecated, + * prefer initStream() which is more general */ +void LZ4_resetStream (LZ4_stream_t* LZ4_stream) +{ + DEBUGLOG(5, "LZ4_resetStream (ctx:%p)", LZ4_stream); + MEM_INIT(LZ4_stream, 0, sizeof(LZ4_stream_t)); +} + +void LZ4_resetStream_fast(LZ4_stream_t* ctx) { + LZ4_prepareTable(&(ctx->internal_donotuse), 0, byU32); +} + +int LZ4_freeStream (LZ4_stream_t* LZ4_stream) +{ + if (!LZ4_stream) return 0; /* support free on NULL */ + DEBUGLOG(5, "LZ4_freeStream %p", LZ4_stream); + FREEMEM(LZ4_stream); + return (0); +} + + +#define HASH_UNIT sizeof(reg_t) +int LZ4_loadDict (LZ4_stream_t* LZ4_dict, const char* dictionary, int dictSize) +{ + LZ4_stream_t_internal* dict = &LZ4_dict->internal_donotuse; + const tableType_t tableType = byU32; + const BYTE* p = (const BYTE*)dictionary; + const BYTE* const dictEnd = p + dictSize; + const BYTE* base; + + DEBUGLOG(4, "LZ4_loadDict (%i bytes from %p into %p)", dictSize, dictionary, LZ4_dict); + + /* It's necessary to reset the context, + * and not just continue it with prepareTable() + * to avoid any risk of generating overflowing matchIndex + * when compressing using this dictionary */ + LZ4_resetStream(LZ4_dict); + + /* We always increment the offset by 64 KB, since, if the dict is longer, + * we truncate it to the last 64k, and if it's shorter, we still want to + * advance by a whole window length so we can provide the guarantee that + * there are only valid offsets in the window, which allows an optimization + * in LZ4_compress_fast_continue() where it uses noDictIssue even when the + * dictionary isn't a full 64k. */ + dict->currentOffset += 64 KB; + + if (dictSize < (int)HASH_UNIT) { + return 0; + } + + if ((dictEnd - p) > 64 KB) p = dictEnd - 64 KB; + base = dictEnd - dict->currentOffset; + dict->dictionary = p; + dict->dictSize = (U32)(dictEnd - p); + dict->tableType = tableType; + + while (p <= dictEnd-HASH_UNIT) { + LZ4_putPosition(p, dict->hashTable, tableType, base); + p+=3; + } + + return (int)dict->dictSize; +} + +void LZ4_attach_dictionary(LZ4_stream_t* workingStream, const LZ4_stream_t* dictionaryStream) { + const LZ4_stream_t_internal* dictCtx = dictionaryStream == NULL ? NULL : + &(dictionaryStream->internal_donotuse); + + DEBUGLOG(4, "LZ4_attach_dictionary (%p, %p, size %u)", + workingStream, dictionaryStream, + dictCtx != NULL ? dictCtx->dictSize : 0); + + /* Calling LZ4_resetStream_fast() here makes sure that changes will not be + * erased by subsequent calls to LZ4_resetStream_fast() in case stream was + * marked as having dirty context, e.g. requiring full reset. + */ + LZ4_resetStream_fast(workingStream); + + if (dictCtx != NULL) { + /* If the current offset is zero, we will never look in the + * external dictionary context, since there is no value a table + * entry can take that indicate a miss. In that case, we need + * to bump the offset to something non-zero. + */ + if (workingStream->internal_donotuse.currentOffset == 0) { + workingStream->internal_donotuse.currentOffset = 64 KB; + } + + /* Don't actually attach an empty dictionary. + */ + if (dictCtx->dictSize == 0) { + dictCtx = NULL; + } + } + workingStream->internal_donotuse.dictCtx = dictCtx; +} + + +static void LZ4_renormDictT(LZ4_stream_t_internal* LZ4_dict, int nextSize) +{ + assert(nextSize >= 0); + if (LZ4_dict->currentOffset + (unsigned)nextSize > 0x80000000) { /* potential ptrdiff_t overflow (32-bits mode) */ + /* rescale hash table */ + U32 const delta = LZ4_dict->currentOffset - 64 KB; + const BYTE* dictEnd = LZ4_dict->dictionary + LZ4_dict->dictSize; + int i; + DEBUGLOG(4, "LZ4_renormDictT"); + for (i=0; i<LZ4_HASH_SIZE_U32; i++) { + if (LZ4_dict->hashTable[i] < delta) LZ4_dict->hashTable[i]=0; + else LZ4_dict->hashTable[i] -= delta; + } + LZ4_dict->currentOffset = 64 KB; + if (LZ4_dict->dictSize > 64 KB) LZ4_dict->dictSize = 64 KB; + LZ4_dict->dictionary = dictEnd - LZ4_dict->dictSize; + } +} + + +int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream, + const char* source, char* dest, + int inputSize, int maxOutputSize, + int acceleration) +{ + const tableType_t tableType = byU32; + LZ4_stream_t_internal* streamPtr = &LZ4_stream->internal_donotuse; + const BYTE* dictEnd = streamPtr->dictionary + streamPtr->dictSize; + + DEBUGLOG(5, "LZ4_compress_fast_continue (inputSize=%i)", inputSize); + + if (streamPtr->dirty) { return 0; } /* Uninitialized structure detected */ + LZ4_renormDictT(streamPtr, inputSize); /* avoid index overflow */ + if (acceleration < 1) acceleration = ACCELERATION_DEFAULT; + + /* invalidate tiny dictionaries */ + if ( (streamPtr->dictSize-1 < 4-1) /* intentional underflow */ + && (dictEnd != (const BYTE*)source) ) { + DEBUGLOG(5, "LZ4_compress_fast_continue: dictSize(%u) at addr:%p is too small", streamPtr->dictSize, streamPtr->dictionary); + streamPtr->dictSize = 0; + streamPtr->dictionary = (const BYTE*)source; + dictEnd = (const BYTE*)source; + } + + /* Check overlapping input/dictionary space */ + { const BYTE* sourceEnd = (const BYTE*) source + inputSize; + if ((sourceEnd > streamPtr->dictionary) && (sourceEnd < dictEnd)) { + streamPtr->dictSize = (U32)(dictEnd - sourceEnd); + if (streamPtr->dictSize > 64 KB) streamPtr->dictSize = 64 KB; + if (streamPtr->dictSize < 4) streamPtr->dictSize = 0; + streamPtr->dictionary = dictEnd - streamPtr->dictSize; + } + } + + /* prefix mode : source data follows dictionary */ + if (dictEnd == (const BYTE*)source) { + if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) + return LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, withPrefix64k, dictSmall, acceleration); + else + return LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, withPrefix64k, noDictIssue, acceleration); + } + + /* external dictionary mode */ + { int result; + if (streamPtr->dictCtx) { + /* We depend here on the fact that dictCtx'es (produced by + * LZ4_loadDict) guarantee that their tables contain no references + * to offsets between dictCtx->currentOffset - 64 KB and + * dictCtx->currentOffset - dictCtx->dictSize. This makes it safe + * to use noDictIssue even when the dict isn't a full 64 KB. + */ + if (inputSize > 4 KB) { + /* For compressing large blobs, it is faster to pay the setup + * cost to copy the dictionary's tables into the active context, + * so that the compression loop is only looking into one table. + */ + memcpy(streamPtr, streamPtr->dictCtx, sizeof(LZ4_stream_t)); + result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingExtDict, noDictIssue, acceleration); + } else { + result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingDictCtx, noDictIssue, acceleration); + } + } else { + if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) { + result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingExtDict, dictSmall, acceleration); + } else { + result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingExtDict, noDictIssue, acceleration); + } + } + streamPtr->dictionary = (const BYTE*)source; + streamPtr->dictSize = (U32)inputSize; + return result; + } +} + + +/* Hidden debug function, to force-test external dictionary mode */ +int LZ4_compress_forceExtDict (LZ4_stream_t* LZ4_dict, const char* source, char* dest, int srcSize) +{ + LZ4_stream_t_internal* streamPtr = &LZ4_dict->internal_donotuse; + int result; + + LZ4_renormDictT(streamPtr, srcSize); + + if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) { + result = LZ4_compress_generic(streamPtr, source, dest, srcSize, NULL, 0, notLimited, byU32, usingExtDict, dictSmall, 1); + } else { + result = LZ4_compress_generic(streamPtr, source, dest, srcSize, NULL, 0, notLimited, byU32, usingExtDict, noDictIssue, 1); + } + + streamPtr->dictionary = (const BYTE*)source; + streamPtr->dictSize = (U32)srcSize; + + return result; +} + + +/*! LZ4_saveDict() : + * If previously compressed data block is not guaranteed to remain available at its memory location, + * save it into a safer place (char* safeBuffer). + * Note : you don't need to call LZ4_loadDict() afterwards, + * dictionary is immediately usable, you can therefore call LZ4_compress_fast_continue(). + * Return : saved dictionary size in bytes (necessarily <= dictSize), or 0 if error. + */ +int LZ4_saveDict (LZ4_stream_t* LZ4_dict, char* safeBuffer, int dictSize) +{ + LZ4_stream_t_internal* const dict = &LZ4_dict->internal_donotuse; + const BYTE* const previousDictEnd = dict->dictionary + dict->dictSize; + + if ((U32)dictSize > 64 KB) { dictSize = 64 KB; } /* useless to define a dictionary > 64 KB */ + if ((U32)dictSize > dict->dictSize) { dictSize = (int)dict->dictSize; } + + memmove(safeBuffer, previousDictEnd - dictSize, dictSize); + + dict->dictionary = (const BYTE*)safeBuffer; + dict->dictSize = (U32)dictSize; + + return dictSize; +} + + + +/*-******************************* + * Decompression functions + ********************************/ + +typedef enum { endOnOutputSize = 0, endOnInputSize = 1 } endCondition_directive; +typedef enum { decode_full_block = 0, partial_decode = 1 } earlyEnd_directive; + +#undef MIN +#define MIN(a,b) ( (a) < (b) ? (a) : (b) ) + +/* Read the variable-length literal or match length. + * + * ip - pointer to use as input. + * lencheck - end ip. Return an error if ip advances >= lencheck. + * loop_check - check ip >= lencheck in body of loop. Returns loop_error if so. + * initial_check - check ip >= lencheck before start of loop. Returns initial_error if so. + * error (output) - error code. Should be set to 0 before call. + */ +typedef enum { loop_error = -2, initial_error = -1, ok = 0 } variable_length_error; +LZ4_FORCE_INLINE unsigned +read_variable_length(const BYTE**ip, const BYTE* lencheck, int loop_check, int initial_check, variable_length_error* error) +{ + unsigned length = 0; + unsigned s; + if (initial_check && unlikely((*ip) >= lencheck)) { /* overflow detection */ + *error = initial_error; + return length; + } + do { + s = **ip; + (*ip)++; + length += s; + if (loop_check && unlikely((*ip) >= lencheck)) { /* overflow detection */ + *error = loop_error; + return length; + } + } while (s==255); + + return length; +} + +/*! LZ4_decompress_generic() : + * This generic decompression function covers all use cases. + * It shall be instantiated several times, using different sets of directives. + * Note that it is important for performance that this function really get inlined, + * in order to remove useless branches during compilation optimization. + */ +LZ4_FORCE_INLINE int +LZ4_decompress_generic( + const char* const src, + char* const dst, + int srcSize, + int outputSize, /* If endOnInput==endOnInputSize, this value is `dstCapacity` */ + + endCondition_directive endOnInput, /* endOnOutputSize, endOnInputSize */ + earlyEnd_directive partialDecoding, /* full, partial */ + dict_directive dict, /* noDict, withPrefix64k, usingExtDict */ + const BYTE* const lowPrefix, /* always <= dst, == dst when no prefix */ + const BYTE* const dictStart, /* only if dict==usingExtDict */ + const size_t dictSize /* note : = 0 if noDict */ + ) +{ + if (src == NULL) { return -1; } + + { const BYTE* ip = (const BYTE*) src; + const BYTE* const iend = ip + srcSize; + + BYTE* op = (BYTE*) dst; + BYTE* const oend = op + outputSize; + BYTE* cpy; + + const BYTE* const dictEnd = (dictStart == NULL) ? NULL : dictStart + dictSize; + + const int safeDecode = (endOnInput==endOnInputSize); + const int checkOffset = ((safeDecode) && (dictSize < (int)(64 KB))); + + + /* Set up the "end" pointers for the shortcut. */ + const BYTE* const shortiend = iend - (endOnInput ? 14 : 8) /*maxLL*/ - 2 /*offset*/; + const BYTE* const shortoend = oend - (endOnInput ? 14 : 8) /*maxLL*/ - 18 /*maxML*/; + + const BYTE* match; + size_t offset; + unsigned token; + size_t length; + + + DEBUGLOG(5, "LZ4_decompress_generic (srcSize:%i, dstSize:%i)", srcSize, outputSize); + + /* Special cases */ + assert(lowPrefix <= op); + if ((endOnInput) && (unlikely(outputSize==0))) { + /* Empty output buffer */ + if (partialDecoding) return 0; + return ((srcSize==1) && (*ip==0)) ? 0 : -1; + } + if ((!endOnInput) && (unlikely(outputSize==0))) { return (*ip==0 ? 1 : -1); } + if ((endOnInput) && unlikely(srcSize==0)) { return -1; } + + /* Currently the fast loop shows a regression on qualcomm arm chips. */ +#if LZ4_FAST_DEC_LOOP + if ((oend - op) < FASTLOOP_SAFE_DISTANCE) { + DEBUGLOG(6, "skip fast decode loop"); + goto safe_decode; + } + + /* Fast loop : decode sequences as long as output < iend-FASTLOOP_SAFE_DISTANCE */ + while (1) { + /* Main fastloop assertion: We can always wildcopy FASTLOOP_SAFE_DISTANCE */ + assert(oend - op >= FASTLOOP_SAFE_DISTANCE); + if (endOnInput) { assert(ip < iend); } + token = *ip++; + length = token >> ML_BITS; /* literal length */ + + assert(!endOnInput || ip <= iend); /* ip < iend before the increment */ + + /* decode literal length */ + if (length == RUN_MASK) { + variable_length_error error = ok; + length += read_variable_length(&ip, iend-RUN_MASK, endOnInput, endOnInput, &error); + if (error == initial_error) { goto _output_error; } + if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)(op))) { goto _output_error; } /* overflow detection */ + if ((safeDecode) && unlikely((uptrval)(ip)+length<(uptrval)(ip))) { goto _output_error; } /* overflow detection */ + + /* copy literals */ + cpy = op+length; + LZ4_STATIC_ASSERT(MFLIMIT >= WILDCOPYLENGTH); + if (endOnInput) { /* LZ4_decompress_safe() */ + if ((cpy>oend-32) || (ip+length>iend-32)) { goto safe_literal_copy; } + LZ4_wildCopy32(op, ip, cpy); + } else { /* LZ4_decompress_fast() */ + if (cpy>oend-8) { goto safe_literal_copy; } + LZ4_wildCopy8(op, ip, cpy); /* LZ4_decompress_fast() cannot copy more than 8 bytes at a time : + * it doesn't know input length, and only relies on end-of-block properties */ + } + ip += length; op = cpy; + } else { + cpy = op+length; + if (endOnInput) { /* LZ4_decompress_safe() */ + DEBUGLOG(7, "copy %u bytes in a 16-bytes stripe", (unsigned)length); + /* We don't need to check oend, since we check it once for each loop below */ + if (ip > iend-(16 + 1/*max lit + offset + nextToken*/)) { goto safe_literal_copy; } + /* Literals can only be 14, but hope compilers optimize if we copy by a register size */ + memcpy(op, ip, 16); + } else { /* LZ4_decompress_fast() */ + /* LZ4_decompress_fast() cannot copy more than 8 bytes at a time : + * it doesn't know input length, and relies on end-of-block properties */ + memcpy(op, ip, 8); + if (length > 8) { memcpy(op+8, ip+8, 8); } + } + ip += length; op = cpy; + } + + /* get offset */ + offset = LZ4_readLE16(ip); ip+=2; + match = op - offset; + assert(match <= op); + + /* get matchlength */ + length = token & ML_MASK; + + if (length == ML_MASK) { + variable_length_error error = ok; + if ((checkOffset) && (unlikely(match + dictSize < lowPrefix))) { goto _output_error; } /* Error : offset outside buffers */ + length += read_variable_length(&ip, iend - LASTLITERALS + 1, endOnInput, 0, &error); + if (error != ok) { goto _output_error; } + if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)op)) { goto _output_error; } /* overflow detection */ + length += MINMATCH; + if (op + length >= oend - FASTLOOP_SAFE_DISTANCE) { + goto safe_match_copy; + } + } else { + length += MINMATCH; + if (op + length >= oend - FASTLOOP_SAFE_DISTANCE) { + goto safe_match_copy; + } + + /* Fastpath check: Avoids a branch in LZ4_wildCopy32 if true */ + if ((dict == withPrefix64k) || (match >= lowPrefix)) { + if (offset >= 8) { + assert(match >= lowPrefix); + assert(match <= op); + assert(op + 18 <= oend); + + memcpy(op, match, 8); + memcpy(op+8, match+8, 8); + memcpy(op+16, match+16, 2); + op += length; + continue; + } } } + + if ((checkOffset) && (unlikely(match + dictSize < lowPrefix))) { goto _output_error; } /* Error : offset outside buffers */ + /* match starting within external dictionary */ + if ((dict==usingExtDict) && (match < lowPrefix)) { + if (unlikely(op+length > oend-LASTLITERALS)) { + if (partialDecoding) { + length = MIN(length, (size_t)(oend-op)); /* reach end of buffer */ + } else { + goto _output_error; /* end-of-block condition violated */ + } } + + if (length <= (size_t)(lowPrefix-match)) { + /* match fits entirely within external dictionary : just copy */ + memmove(op, dictEnd - (lowPrefix-match), length); + op += length; + } else { + /* match stretches into both external dictionary and current block */ + size_t const copySize = (size_t)(lowPrefix - match); + size_t const restSize = length - copySize; + memcpy(op, dictEnd - copySize, copySize); + op += copySize; + if (restSize > (size_t)(op - lowPrefix)) { /* overlap copy */ + BYTE* const endOfMatch = op + restSize; + const BYTE* copyFrom = lowPrefix; + while (op < endOfMatch) { *op++ = *copyFrom++; } + } else { + memcpy(op, lowPrefix, restSize); + op += restSize; + } } + continue; + } + + /* copy match within block */ + cpy = op + length; + + assert((op <= oend) && (oend-op >= 32)); + if (unlikely(offset<16)) { + LZ4_memcpy_using_offset(op, match, cpy, offset); + } else { + LZ4_wildCopy32(op, match, cpy); + } + + op = cpy; /* wildcopy correction */ + } + safe_decode: +#endif + + /* Main Loop : decode remaining sequences where output < FASTLOOP_SAFE_DISTANCE */ + while (1) { + token = *ip++; + length = token >> ML_BITS; /* literal length */ + + assert(!endOnInput || ip <= iend); /* ip < iend before the increment */ + + /* A two-stage shortcut for the most common case: + * 1) If the literal length is 0..14, and there is enough space, + * enter the shortcut and copy 16 bytes on behalf of the literals + * (in the fast mode, only 8 bytes can be safely copied this way). + * 2) Further if the match length is 4..18, copy 18 bytes in a similar + * manner; but we ensure that there's enough space in the output for + * those 18 bytes earlier, upon entering the shortcut (in other words, + * there is a combined check for both stages). + */ + if ( (endOnInput ? length != RUN_MASK : length <= 8) + /* strictly "less than" on input, to re-enter the loop with at least one byte */ + && likely((endOnInput ? ip < shortiend : 1) & (op <= shortoend)) ) { + /* Copy the literals */ + memcpy(op, ip, endOnInput ? 16 : 8); + op += length; ip += length; + + /* The second stage: prepare for match copying, decode full info. + * If it doesn't work out, the info won't be wasted. */ + length = token & ML_MASK; /* match length */ + offset = LZ4_readLE16(ip); ip += 2; + match = op - offset; + assert(match <= op); /* check overflow */ + + /* Do not deal with overlapping matches. */ + if ( (length != ML_MASK) + && (offset >= 8) + && (dict==withPrefix64k || match >= lowPrefix) ) { + /* Copy the match. */ + memcpy(op + 0, match + 0, 8); + memcpy(op + 8, match + 8, 8); + memcpy(op +16, match +16, 2); + op += length + MINMATCH; + /* Both stages worked, load the next token. */ + continue; + } + + /* The second stage didn't work out, but the info is ready. + * Propel it right to the point of match copying. */ + goto _copy_match; + } + + /* decode literal length */ + if (length == RUN_MASK) { + variable_length_error error = ok; + length += read_variable_length(&ip, iend-RUN_MASK, endOnInput, endOnInput, &error); + if (error == initial_error) { goto _output_error; } + if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)(op))) { goto _output_error; } /* overflow detection */ + if ((safeDecode) && unlikely((uptrval)(ip)+length<(uptrval)(ip))) { goto _output_error; } /* overflow detection */ + } + + /* copy literals */ + cpy = op+length; +#if LZ4_FAST_DEC_LOOP + safe_literal_copy: +#endif + LZ4_STATIC_ASSERT(MFLIMIT >= WILDCOPYLENGTH); + if ( ((endOnInput) && ((cpy>oend-MFLIMIT) || (ip+length>iend-(2+1+LASTLITERALS))) ) + || ((!endOnInput) && (cpy>oend-WILDCOPYLENGTH)) ) + { + /* We've either hit the input parsing restriction or the output parsing restriction. + * If we've hit the input parsing condition then this must be the last sequence. + * If we've hit the output parsing condition then we are either using partialDecoding + * or we've hit the output parsing condition. + */ + if (partialDecoding) { + /* Since we are partial decoding we may be in this block because of the output parsing + * restriction, which is not valid since the output buffer is allowed to be undersized. + */ + assert(endOnInput); + /* If we're in this block because of the input parsing condition, then we must be on the + * last sequence (or invalid), so we must check that we exactly consume the input. + */ + if ((ip+length>iend-(2+1+LASTLITERALS)) && (ip+length != iend)) { goto _output_error; } + assert(ip+length <= iend); + /* We are finishing in the middle of a literals segment. + * Break after the copy. + */ + if (cpy > oend) { + cpy = oend; + assert(op<=oend); + length = (size_t)(oend-op); + } + assert(ip+length <= iend); + } else { + /* We must be on the last sequence because of the parsing limitations so check + * that we exactly regenerate the original size (must be exact when !endOnInput). + */ + if ((!endOnInput) && (cpy != oend)) { goto _output_error; } + /* We must be on the last sequence (or invalid) because of the parsing limitations + * so check that we exactly consume the input and don't overrun the output buffer. + */ + if ((endOnInput) && ((ip+length != iend) || (cpy > oend))) { goto _output_error; } + } + memmove(op, ip, length); /* supports overlapping memory regions, which only matters for in-place decompression scenarios */ + ip += length; + op += length; + /* Necessarily EOF when !partialDecoding. When partialDecoding + * it is EOF if we've either filled the output buffer or hit + * the input parsing restriction. + */ + if (!partialDecoding || (cpy == oend) || (ip == iend)) { + break; + } + } else { + LZ4_wildCopy8(op, ip, cpy); /* may overwrite up to WILDCOPYLENGTH beyond cpy */ + ip += length; op = cpy; + } + + /* get offset */ + offset = LZ4_readLE16(ip); ip+=2; + match = op - offset; + + /* get matchlength */ + length = token & ML_MASK; + + _copy_match: + if (length == ML_MASK) { + variable_length_error error = ok; + length += read_variable_length(&ip, iend - LASTLITERALS + 1, endOnInput, 0, &error); + if (error != ok) goto _output_error; + if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)op)) goto _output_error; /* overflow detection */ + } + length += MINMATCH; + +#if LZ4_FAST_DEC_LOOP + safe_match_copy: +#endif + if ((checkOffset) && (unlikely(match + dictSize < lowPrefix))) goto _output_error; /* Error : offset outside buffers */ + /* match starting within external dictionary */ + if ((dict==usingExtDict) && (match < lowPrefix)) { + if (unlikely(op+length > oend-LASTLITERALS)) { + if (partialDecoding) length = MIN(length, (size_t)(oend-op)); + else goto _output_error; /* doesn't respect parsing restriction */ + } + + if (length <= (size_t)(lowPrefix-match)) { + /* match fits entirely within external dictionary : just copy */ + memmove(op, dictEnd - (lowPrefix-match), length); + op += length; + } else { + /* match stretches into both external dictionary and current block */ + size_t const copySize = (size_t)(lowPrefix - match); + size_t const restSize = length - copySize; + memcpy(op, dictEnd - copySize, copySize); + op += copySize; + if (restSize > (size_t)(op - lowPrefix)) { /* overlap copy */ + BYTE* const endOfMatch = op + restSize; + const BYTE* copyFrom = lowPrefix; + while (op < endOfMatch) *op++ = *copyFrom++; + } else { + memcpy(op, lowPrefix, restSize); + op += restSize; + } } + continue; + } + assert(match >= lowPrefix); + + /* copy match within block */ + cpy = op + length; + + /* partialDecoding : may end anywhere within the block */ + assert(op<=oend); + if (partialDecoding && (cpy > oend-MATCH_SAFEGUARD_DISTANCE)) { + size_t const mlen = MIN(length, (size_t)(oend-op)); + const BYTE* const matchEnd = match + mlen; + BYTE* const copyEnd = op + mlen; + if (matchEnd > op) { /* overlap copy */ + while (op < copyEnd) { *op++ = *match++; } + } else { + memcpy(op, match, mlen); + } + op = copyEnd; + if (op == oend) { break; } + continue; + } + + if (unlikely(offset<8)) { + LZ4_write32(op, 0); /* silence msan warning when offset==0 */ + op[0] = match[0]; + op[1] = match[1]; + op[2] = match[2]; + op[3] = match[3]; + match += inc32table[offset]; + memcpy(op+4, match, 4); + match -= dec64table[offset]; + } else { + memcpy(op, match, 8); + match += 8; + } + op += 8; + + if (unlikely(cpy > oend-MATCH_SAFEGUARD_DISTANCE)) { + BYTE* const oCopyLimit = oend - (WILDCOPYLENGTH-1); + if (cpy > oend-LASTLITERALS) { goto _output_error; } /* Error : last LASTLITERALS bytes must be literals (uncompressed) */ + if (op < oCopyLimit) { + LZ4_wildCopy8(op, match, oCopyLimit); + match += oCopyLimit - op; + op = oCopyLimit; + } + while (op < cpy) { *op++ = *match++; } + } else { + memcpy(op, match, 8); + if (length > 16) { LZ4_wildCopy8(op+8, match+8, cpy); } + } + op = cpy; /* wildcopy correction */ + } + + /* end of decoding */ + if (endOnInput) { + return (int) (((char*)op)-dst); /* Nb of output bytes decoded */ + } else { + return (int) (((const char*)ip)-src); /* Nb of input bytes read */ + } + + /* Overflow error detected */ + _output_error: + return (int) (-(((const char*)ip)-src))-1; + } +} + + +/*===== Instantiate the API decoding functions. =====*/ + +LZ4_FORCE_O2_GCC_PPC64LE +int LZ4_decompress_safe(const char* source, char* dest, int compressedSize, int maxDecompressedSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxDecompressedSize, + endOnInputSize, decode_full_block, noDict, + (BYTE*)dest, NULL, 0); +} + +LZ4_FORCE_O2_GCC_PPC64LE +int LZ4_decompress_safe_partial(const char* src, char* dst, int compressedSize, int targetOutputSize, int dstCapacity) +{ + dstCapacity = MIN(targetOutputSize, dstCapacity); + return LZ4_decompress_generic(src, dst, compressedSize, dstCapacity, + endOnInputSize, partial_decode, + noDict, (BYTE*)dst, NULL, 0); +} + +LZ4_FORCE_O2_GCC_PPC64LE +int LZ4_decompress_fast(const char* source, char* dest, int originalSize) +{ + return LZ4_decompress_generic(source, dest, 0, originalSize, + endOnOutputSize, decode_full_block, withPrefix64k, + (BYTE*)dest - 64 KB, NULL, 0); +} + +/*===== Instantiate a few more decoding cases, used more than once. =====*/ + +LZ4_FORCE_O2_GCC_PPC64LE /* Exported, an obsolete API function. */ +int LZ4_decompress_safe_withPrefix64k(const char* source, char* dest, int compressedSize, int maxOutputSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, + endOnInputSize, decode_full_block, withPrefix64k, + (BYTE*)dest - 64 KB, NULL, 0); +} + +/* Another obsolete API function, paired with the previous one. */ +int LZ4_decompress_fast_withPrefix64k(const char* source, char* dest, int originalSize) +{ + /* LZ4_decompress_fast doesn't validate match offsets, + * and thus serves well with any prefixed dictionary. */ + return LZ4_decompress_fast(source, dest, originalSize); +} + +LZ4_FORCE_O2_GCC_PPC64LE +static int LZ4_decompress_safe_withSmallPrefix(const char* source, char* dest, int compressedSize, int maxOutputSize, + size_t prefixSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, + endOnInputSize, decode_full_block, noDict, + (BYTE*)dest-prefixSize, NULL, 0); +} + +LZ4_FORCE_O2_GCC_PPC64LE +int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, + int compressedSize, int maxOutputSize, + const void* dictStart, size_t dictSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, + endOnInputSize, decode_full_block, usingExtDict, + (BYTE*)dest, (const BYTE*)dictStart, dictSize); +} + +LZ4_FORCE_O2_GCC_PPC64LE +static int LZ4_decompress_fast_extDict(const char* source, char* dest, int originalSize, + const void* dictStart, size_t dictSize) +{ + return LZ4_decompress_generic(source, dest, 0, originalSize, + endOnOutputSize, decode_full_block, usingExtDict, + (BYTE*)dest, (const BYTE*)dictStart, dictSize); +} + +/* The "double dictionary" mode, for use with e.g. ring buffers: the first part + * of the dictionary is passed as prefix, and the second via dictStart + dictSize. + * These routines are used only once, in LZ4_decompress_*_continue(). + */ +LZ4_FORCE_INLINE +int LZ4_decompress_safe_doubleDict(const char* source, char* dest, int compressedSize, int maxOutputSize, + size_t prefixSize, const void* dictStart, size_t dictSize) +{ + return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, + endOnInputSize, decode_full_block, usingExtDict, + (BYTE*)dest-prefixSize, (const BYTE*)dictStart, dictSize); +} + +LZ4_FORCE_INLINE +int LZ4_decompress_fast_doubleDict(const char* source, char* dest, int originalSize, + size_t prefixSize, const void* dictStart, size_t dictSize) +{ + return LZ4_decompress_generic(source, dest, 0, originalSize, + endOnOutputSize, decode_full_block, usingExtDict, + (BYTE*)dest-prefixSize, (const BYTE*)dictStart, dictSize); +} + +/*===== streaming decompression functions =====*/ + +LZ4_streamDecode_t* LZ4_createStreamDecode(void) +{ + LZ4_streamDecode_t* lz4s = (LZ4_streamDecode_t*) ALLOC_AND_ZERO(sizeof(LZ4_streamDecode_t)); + LZ4_STATIC_ASSERT(LZ4_STREAMDECODESIZE >= sizeof(LZ4_streamDecode_t_internal)); /* A compilation error here means LZ4_STREAMDECODESIZE is not large enough */ + return lz4s; +} + +int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream) +{ + if (LZ4_stream == NULL) { return 0; } /* support free on NULL */ + FREEMEM(LZ4_stream); + return 0; +} + +/*! LZ4_setStreamDecode() : + * Use this function to instruct where to find the dictionary. + * This function is not necessary if previous data is still available where it was decoded. + * Loading a size of 0 is allowed (same effect as no dictionary). + * @return : 1 if OK, 0 if error + */ +int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize) +{ + LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; + lz4sd->prefixSize = (size_t) dictSize; + lz4sd->prefixEnd = (const BYTE*) dictionary + dictSize; + lz4sd->externalDict = NULL; + lz4sd->extDictSize = 0; + return 1; +} + +/*! LZ4_decoderRingBufferSize() : + * when setting a ring buffer for streaming decompression (optional scenario), + * provides the minimum size of this ring buffer + * to be compatible with any source respecting maxBlockSize condition. + * Note : in a ring buffer scenario, + * blocks are presumed decompressed next to each other. + * When not enough space remains for next block (remainingSize < maxBlockSize), + * decoding resumes from beginning of ring buffer. + * @return : minimum ring buffer size, + * or 0 if there is an error (invalid maxBlockSize). + */ +int LZ4_decoderRingBufferSize(int maxBlockSize) +{ + if (maxBlockSize < 0) return 0; + if (maxBlockSize > LZ4_MAX_INPUT_SIZE) return 0; + if (maxBlockSize < 16) maxBlockSize = 16; + return LZ4_DECODER_RING_BUFFER_SIZE(maxBlockSize); +} + +/* +*_continue() : + These decoding functions allow decompression of multiple blocks in "streaming" mode. + Previously decoded blocks must still be available at the memory position where they were decoded. + If it's not possible, save the relevant part of decoded data into a safe buffer, + and indicate where it stands using LZ4_setStreamDecode() +*/ +LZ4_FORCE_O2_GCC_PPC64LE +int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int compressedSize, int maxOutputSize) +{ + LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; + int result; + + if (lz4sd->prefixSize == 0) { + /* The first call, no dictionary yet. */ + assert(lz4sd->extDictSize == 0); + result = LZ4_decompress_safe(source, dest, compressedSize, maxOutputSize); + if (result <= 0) return result; + lz4sd->prefixSize = (size_t)result; + lz4sd->prefixEnd = (BYTE*)dest + result; + } else if (lz4sd->prefixEnd == (BYTE*)dest) { + /* They're rolling the current segment. */ + if (lz4sd->prefixSize >= 64 KB - 1) + result = LZ4_decompress_safe_withPrefix64k(source, dest, compressedSize, maxOutputSize); + else if (lz4sd->extDictSize == 0) + result = LZ4_decompress_safe_withSmallPrefix(source, dest, compressedSize, maxOutputSize, + lz4sd->prefixSize); + else + result = LZ4_decompress_safe_doubleDict(source, dest, compressedSize, maxOutputSize, + lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize); + if (result <= 0) return result; + lz4sd->prefixSize += (size_t)result; + lz4sd->prefixEnd += result; + } else { + /* The buffer wraps around, or they're switching to another buffer. */ + lz4sd->extDictSize = lz4sd->prefixSize; + lz4sd->externalDict = lz4sd->prefixEnd - lz4sd->extDictSize; + result = LZ4_decompress_safe_forceExtDict(source, dest, compressedSize, maxOutputSize, + lz4sd->externalDict, lz4sd->extDictSize); + if (result <= 0) return result; + lz4sd->prefixSize = (size_t)result; + lz4sd->prefixEnd = (BYTE*)dest + result; + } + + return result; +} + +LZ4_FORCE_O2_GCC_PPC64LE +int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int originalSize) +{ + LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; + int result; + assert(originalSize >= 0); + + if (lz4sd->prefixSize == 0) { + assert(lz4sd->extDictSize == 0); + result = LZ4_decompress_fast(source, dest, originalSize); + if (result <= 0) return result; + lz4sd->prefixSize = (size_t)originalSize; + lz4sd->prefixEnd = (BYTE*)dest + originalSize; + } else if (lz4sd->prefixEnd == (BYTE*)dest) { + if (lz4sd->prefixSize >= 64 KB - 1 || lz4sd->extDictSize == 0) + result = LZ4_decompress_fast(source, dest, originalSize); + else + result = LZ4_decompress_fast_doubleDict(source, dest, originalSize, + lz4sd->prefixSize, lz4sd->externalDict, lz4sd->extDictSize); + if (result <= 0) return result; + lz4sd->prefixSize += (size_t)originalSize; + lz4sd->prefixEnd += originalSize; + } else { + lz4sd->extDictSize = lz4sd->prefixSize; + lz4sd->externalDict = lz4sd->prefixEnd - lz4sd->extDictSize; + result = LZ4_decompress_fast_extDict(source, dest, originalSize, + lz4sd->externalDict, lz4sd->extDictSize); + if (result <= 0) return result; + lz4sd->prefixSize = (size_t)originalSize; + lz4sd->prefixEnd = (BYTE*)dest + originalSize; + } + + return result; +} + + +/* +Advanced decoding functions : +*_usingDict() : + These decoding functions work the same as "_continue" ones, + the dictionary must be explicitly provided within parameters +*/ + +int LZ4_decompress_safe_usingDict(const char* source, char* dest, int compressedSize, int maxOutputSize, const char* dictStart, int dictSize) +{ + if (dictSize==0) + return LZ4_decompress_safe(source, dest, compressedSize, maxOutputSize); + if (dictStart+dictSize == dest) { + if (dictSize >= 64 KB - 1) { + return LZ4_decompress_safe_withPrefix64k(source, dest, compressedSize, maxOutputSize); + } + assert(dictSize >= 0); + return LZ4_decompress_safe_withSmallPrefix(source, dest, compressedSize, maxOutputSize, (size_t)dictSize); + } + assert(dictSize >= 0); + return LZ4_decompress_safe_forceExtDict(source, dest, compressedSize, maxOutputSize, dictStart, (size_t)dictSize); +} + +int LZ4_decompress_fast_usingDict(const char* source, char* dest, int originalSize, const char* dictStart, int dictSize) +{ + if (dictSize==0 || dictStart+dictSize == dest) + return LZ4_decompress_fast(source, dest, originalSize); + assert(dictSize >= 0); + return LZ4_decompress_fast_extDict(source, dest, originalSize, dictStart, (size_t)dictSize); +} + + +/*=************************************************* +* Obsolete Functions +***************************************************/ +/* obsolete compression functions */ +int LZ4_compress_limitedOutput(const char* source, char* dest, int inputSize, int maxOutputSize) +{ + return LZ4_compress_default(source, dest, inputSize, maxOutputSize); +} +int LZ4_compress(const char* src, char* dest, int srcSize) +{ + return LZ4_compress_default(src, dest, srcSize, LZ4_compressBound(srcSize)); +} +int LZ4_compress_limitedOutput_withState (void* state, const char* src, char* dst, int srcSize, int dstSize) +{ + return LZ4_compress_fast_extState(state, src, dst, srcSize, dstSize, 1); +} +int LZ4_compress_withState (void* state, const char* src, char* dst, int srcSize) +{ + return LZ4_compress_fast_extState(state, src, dst, srcSize, LZ4_compressBound(srcSize), 1); +} +int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_stream, const char* src, char* dst, int srcSize, int dstCapacity) +{ + return LZ4_compress_fast_continue(LZ4_stream, src, dst, srcSize, dstCapacity, 1); +} +int LZ4_compress_continue (LZ4_stream_t* LZ4_stream, const char* source, char* dest, int inputSize) +{ + return LZ4_compress_fast_continue(LZ4_stream, source, dest, inputSize, LZ4_compressBound(inputSize), 1); +} + +/* +These decompression functions are deprecated and should no longer be used. +They are only provided here for compatibility with older user programs. +- LZ4_uncompress is totally equivalent to LZ4_decompress_fast +- LZ4_uncompress_unknownOutputSize is totally equivalent to LZ4_decompress_safe +*/ +int LZ4_uncompress (const char* source, char* dest, int outputSize) +{ + return LZ4_decompress_fast(source, dest, outputSize); +} +int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize) +{ + return LZ4_decompress_safe(source, dest, isize, maxOutputSize); +} + +/* Obsolete Streaming functions */ + +int LZ4_sizeofStreamState() { return LZ4_STREAMSIZE; } + +int LZ4_resetStreamState(void* state, char* inputBuffer) +{ + (void)inputBuffer; + LZ4_resetStream((LZ4_stream_t*)state); + return 0; +} + +void* LZ4_create (char* inputBuffer) +{ + (void)inputBuffer; + return LZ4_createStream(); +} + +char* LZ4_slideInputBuffer (void* state) +{ + /* avoid const char * -> char * conversion warning */ + return (char *)(uptrval)((LZ4_stream_t*)state)->internal_donotuse.dictionary; +} + +#endif /* LZ4_COMMONDEFS_ONLY */ diff --git a/common/lz4/lz4.h b/common/lz4/lz4.h new file mode 100644 index 000000000..32108e232 --- /dev/null +++ b/common/lz4/lz4.h @@ -0,0 +1,764 @@ +/* + * LZ4 - Fast LZ compression algorithm + * Header File + * Copyright (C) 2011-present, Yann Collet. + + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - LZ4 homepage : http://www.lz4.org + - LZ4 source repository : https://github.com/lz4/lz4 +*/ +#if defined (__cplusplus) +extern "C" { +#endif + +#ifndef LZ4_H_2983827168210 +#define LZ4_H_2983827168210 + +/* --- Dependency --- */ +#include <stddef.h> /* size_t */ + + +/** + Introduction + + LZ4 is lossless compression algorithm, providing compression speed >500 MB/s per core, + scalable with multi-cores CPU. It features an extremely fast decoder, with speed in + multiple GB/s per core, typically reaching RAM speed limits on multi-core systems. + + The LZ4 compression library provides in-memory compression and decompression functions. + It gives full buffer control to user. + Compression can be done in: + - a single step (described as Simple Functions) + - a single step, reusing a context (described in Advanced Functions) + - unbounded multiple steps (described as Streaming compression) + + lz4.h generates and decodes LZ4-compressed blocks (doc/lz4_Block_format.md). + Decompressing such a compressed block requires additional metadata. + Exact metadata depends on exact decompression function. + For the typical case of LZ4_decompress_safe(), + metadata includes block's compressed size, and maximum bound of decompressed size. + Each application is free to encode and pass such metadata in whichever way it wants. + + lz4.h only handle blocks, it can not generate Frames. + + Blocks are different from Frames (doc/lz4_Frame_format.md). + Frames bundle both blocks and metadata in a specified manner. + Embedding metadata is required for compressed data to be self-contained and portable. + Frame format is delivered through a companion API, declared in lz4frame.h. + The `lz4` CLI can only manage frames. +*/ + +/*^*************************************************************** +* Export parameters +*****************************************************************/ +/* +* LZ4_DLL_EXPORT : +* Enable exporting of functions when building a Windows DLL +* LZ4LIB_VISIBILITY : +* Control library symbols visibility. +*/ +#ifndef LZ4LIB_VISIBILITY +# if defined(__GNUC__) && (__GNUC__ >= 4) +# define LZ4LIB_VISIBILITY __attribute__ ((visibility ("default"))) +# else +# define LZ4LIB_VISIBILITY +# endif +#endif +#if defined(LZ4_DLL_EXPORT) && (LZ4_DLL_EXPORT==1) +# define LZ4LIB_API __declspec(dllexport) LZ4LIB_VISIBILITY +#elif defined(LZ4_DLL_IMPORT) && (LZ4_DLL_IMPORT==1) +# define LZ4LIB_API __declspec(dllimport) LZ4LIB_VISIBILITY /* It isn't required but allows to generate better code, saving a function pointer load from the IAT and an indirect jump.*/ +#else +# define LZ4LIB_API LZ4LIB_VISIBILITY +#endif + +/*------ Version ------*/ +#define LZ4_VERSION_MAJOR 1 /* for breaking interface changes */ +#define LZ4_VERSION_MINOR 9 /* for new (non-breaking) interface capabilities */ +#define LZ4_VERSION_RELEASE 2 /* for tweaks, bug-fixes, or development */ + +#define LZ4_VERSION_NUMBER (LZ4_VERSION_MAJOR *100*100 + LZ4_VERSION_MINOR *100 + LZ4_VERSION_RELEASE) + +#define LZ4_LIB_VERSION LZ4_VERSION_MAJOR.LZ4_VERSION_MINOR.LZ4_VERSION_RELEASE +#define LZ4_QUOTE(str) #str +#define LZ4_EXPAND_AND_QUOTE(str) LZ4_QUOTE(str) +#define LZ4_VERSION_STRING LZ4_EXPAND_AND_QUOTE(LZ4_LIB_VERSION) + +LZ4LIB_API int LZ4_versionNumber (void); /**< library version number; useful to check dll version */ +LZ4LIB_API const char* LZ4_versionString (void); /**< library version string; useful to check dll version */ + + +/*-************************************ +* Tuning parameter +**************************************/ +/*! + * LZ4_MEMORY_USAGE : + * Memory usage formula : N->2^N Bytes (examples : 10 -> 1KB; 12 -> 4KB ; 16 -> 64KB; 20 -> 1MB; etc.) + * Increasing memory usage improves compression ratio. + * Reduced memory usage may improve speed, thanks to better cache locality. + * Default value is 14, for 16KB, which nicely fits into Intel x86 L1 cache + */ +#ifndef LZ4_MEMORY_USAGE +# define LZ4_MEMORY_USAGE 14 +#endif + + +/*-************************************ +* Simple Functions +**************************************/ +/*! LZ4_compress_default() : + * Compresses 'srcSize' bytes from buffer 'src' + * into already allocated 'dst' buffer of size 'dstCapacity'. + * Compression is guaranteed to succeed if 'dstCapacity' >= LZ4_compressBound(srcSize). + * It also runs faster, so it's a recommended setting. + * If the function cannot compress 'src' into a more limited 'dst' budget, + * compression stops *immediately*, and the function result is zero. + * In which case, 'dst' content is undefined (invalid). + * srcSize : max supported value is LZ4_MAX_INPUT_SIZE. + * dstCapacity : size of buffer 'dst' (which must be already allocated) + * @return : the number of bytes written into buffer 'dst' (necessarily <= dstCapacity) + * or 0 if compression fails + * Note : This function is protected against buffer overflow scenarios (never writes outside 'dst' buffer, nor read outside 'source' buffer). + */ +LZ4LIB_API int LZ4_compress_default(const char* src, char* dst, int srcSize, int dstCapacity); + +/*! LZ4_decompress_safe() : + * compressedSize : is the exact complete size of the compressed block. + * dstCapacity : is the size of destination buffer (which must be already allocated), presumed an upper bound of decompressed size. + * @return : the number of bytes decompressed into destination buffer (necessarily <= dstCapacity) + * If destination buffer is not large enough, decoding will stop and output an error code (negative value). + * If the source stream is detected malformed, the function will stop decoding and return a negative result. + * Note 1 : This function is protected against malicious data packets : + * it will never writes outside 'dst' buffer, nor read outside 'source' buffer, + * even if the compressed block is maliciously modified to order the decoder to do these actions. + * In such case, the decoder stops immediately, and considers the compressed block malformed. + * Note 2 : compressedSize and dstCapacity must be provided to the function, the compressed block does not contain them. + * The implementation is free to send / store / derive this information in whichever way is most beneficial. + * If there is a need for a different format which bundles together both compressed data and its metadata, consider looking at lz4frame.h instead. + */ +LZ4LIB_API int LZ4_decompress_safe (const char* src, char* dst, int compressedSize, int dstCapacity); + + +/*-************************************ +* Advanced Functions +**************************************/ +#define LZ4_MAX_INPUT_SIZE 0x7E000000 /* 2 113 929 216 bytes */ +#define LZ4_COMPRESSBOUND(isize) ((unsigned)(isize) > (unsigned)LZ4_MAX_INPUT_SIZE ? 0 : (isize) + ((isize)/255) + 16) + +/*! LZ4_compressBound() : + Provides the maximum size that LZ4 compression may output in a "worst case" scenario (input data not compressible) + This function is primarily useful for memory allocation purposes (destination buffer size). + Macro LZ4_COMPRESSBOUND() is also provided for compilation-time evaluation (stack memory allocation for example). + Note that LZ4_compress_default() compresses faster when dstCapacity is >= LZ4_compressBound(srcSize) + inputSize : max supported value is LZ4_MAX_INPUT_SIZE + return : maximum output size in a "worst case" scenario + or 0, if input size is incorrect (too large or negative) +*/ +LZ4LIB_API int LZ4_compressBound(int inputSize); + +/*! LZ4_compress_fast() : + Same as LZ4_compress_default(), but allows selection of "acceleration" factor. + The larger the acceleration value, the faster the algorithm, but also the lesser the compression. + It's a trade-off. It can be fine tuned, with each successive value providing roughly +~3% to speed. + An acceleration value of "1" is the same as regular LZ4_compress_default() + Values <= 0 will be replaced by ACCELERATION_DEFAULT (currently == 1, see lz4.c). +*/ +LZ4LIB_API int LZ4_compress_fast (const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); + + +/*! LZ4_compress_fast_extState() : + * Same as LZ4_compress_fast(), using an externally allocated memory space for its state. + * Use LZ4_sizeofState() to know how much memory must be allocated, + * and allocate it on 8-bytes boundaries (using `malloc()` typically). + * Then, provide this buffer as `void* state` to compression function. + */ +LZ4LIB_API int LZ4_sizeofState(void); +LZ4LIB_API int LZ4_compress_fast_extState (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); + + +/*! LZ4_compress_destSize() : + * Reverse the logic : compresses as much data as possible from 'src' buffer + * into already allocated buffer 'dst', of size >= 'targetDestSize'. + * This function either compresses the entire 'src' content into 'dst' if it's large enough, + * or fill 'dst' buffer completely with as much data as possible from 'src'. + * note: acceleration parameter is fixed to "default". + * + * *srcSizePtr : will be modified to indicate how many bytes where read from 'src' to fill 'dst'. + * New value is necessarily <= input value. + * @return : Nb bytes written into 'dst' (necessarily <= targetDestSize) + * or 0 if compression fails. +*/ +LZ4LIB_API int LZ4_compress_destSize (const char* src, char* dst, int* srcSizePtr, int targetDstSize); + + +/*! LZ4_decompress_safe_partial() : + * Decompress an LZ4 compressed block, of size 'srcSize' at position 'src', + * into destination buffer 'dst' of size 'dstCapacity'. + * Up to 'targetOutputSize' bytes will be decoded. + * The function stops decoding on reaching this objective, + * which can boost performance when only the beginning of a block is required. + * + * @return : the number of bytes decoded in `dst` (necessarily <= dstCapacity) + * If source stream is detected malformed, function returns a negative result. + * + * Note : @return can be < targetOutputSize, if compressed block contains less data. + * + * Note 2 : this function features 2 parameters, targetOutputSize and dstCapacity, + * and expects targetOutputSize <= dstCapacity. + * It effectively stops decoding on reaching targetOutputSize, + * so dstCapacity is kind of redundant. + * This is because in a previous version of this function, + * decoding operation would not "break" a sequence in the middle. + * As a consequence, there was no guarantee that decoding would stop at exactly targetOutputSize, + * it could write more bytes, though only up to dstCapacity. + * Some "margin" used to be required for this operation to work properly. + * This is no longer necessary. + * The function nonetheless keeps its signature, in an effort to not break API. + */ +LZ4LIB_API int LZ4_decompress_safe_partial (const char* src, char* dst, int srcSize, int targetOutputSize, int dstCapacity); + + +/*-********************************************* +* Streaming Compression Functions +***********************************************/ +typedef union LZ4_stream_u LZ4_stream_t; /* incomplete type (defined later) */ + +LZ4LIB_API LZ4_stream_t* LZ4_createStream(void); +LZ4LIB_API int LZ4_freeStream (LZ4_stream_t* streamPtr); + +/*! LZ4_resetStream_fast() : v1.9.0+ + * Use this to prepare an LZ4_stream_t for a new chain of dependent blocks + * (e.g., LZ4_compress_fast_continue()). + * + * An LZ4_stream_t must be initialized once before usage. + * This is automatically done when created by LZ4_createStream(). + * However, should the LZ4_stream_t be simply declared on stack (for example), + * it's necessary to initialize it first, using LZ4_initStream(). + * + * After init, start any new stream with LZ4_resetStream_fast(). + * A same LZ4_stream_t can be re-used multiple times consecutively + * and compress multiple streams, + * provided that it starts each new stream with LZ4_resetStream_fast(). + * + * LZ4_resetStream_fast() is much faster than LZ4_initStream(), + * but is not compatible with memory regions containing garbage data. + * + * Note: it's only useful to call LZ4_resetStream_fast() + * in the context of streaming compression. + * The *extState* functions perform their own resets. + * Invoking LZ4_resetStream_fast() before is redundant, and even counterproductive. + */ +LZ4LIB_API void LZ4_resetStream_fast (LZ4_stream_t* streamPtr); + +/*! LZ4_loadDict() : + * Use this function to reference a static dictionary into LZ4_stream_t. + * The dictionary must remain available during compression. + * LZ4_loadDict() triggers a reset, so any previous data will be forgotten. + * The same dictionary will have to be loaded on decompression side for successful decoding. + * Dictionary are useful for better compression of small data (KB range). + * While LZ4 accept any input as dictionary, + * results are generally better when using Zstandard's Dictionary Builder. + * Loading a size of 0 is allowed, and is the same as reset. + * @return : loaded dictionary size, in bytes (necessarily <= 64 KB) + */ +LZ4LIB_API int LZ4_loadDict (LZ4_stream_t* streamPtr, const char* dictionary, int dictSize); + +/*! LZ4_compress_fast_continue() : + * Compress 'src' content using data from previously compressed blocks, for better compression ratio. + * 'dst' buffer must be already allocated. + * If dstCapacity >= LZ4_compressBound(srcSize), compression is guaranteed to succeed, and runs faster. + * + * @return : size of compressed block + * or 0 if there is an error (typically, cannot fit into 'dst'). + * + * Note 1 : Each invocation to LZ4_compress_fast_continue() generates a new block. + * Each block has precise boundaries. + * Each block must be decompressed separately, calling LZ4_decompress_*() with relevant metadata. + * It's not possible to append blocks together and expect a single invocation of LZ4_decompress_*() to decompress them together. + * + * Note 2 : The previous 64KB of source data is __assumed__ to remain present, unmodified, at same address in memory ! + * + * Note 3 : When input is structured as a double-buffer, each buffer can have any size, including < 64 KB. + * Make sure that buffers are separated, by at least one byte. + * This construction ensures that each block only depends on previous block. + * + * Note 4 : If input buffer is a ring-buffer, it can have any size, including < 64 KB. + * + * Note 5 : After an error, the stream status is undefined (invalid), it can only be reset or freed. + */ +LZ4LIB_API int LZ4_compress_fast_continue (LZ4_stream_t* streamPtr, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); + +/*! LZ4_saveDict() : + * If last 64KB data cannot be guaranteed to remain available at its current memory location, + * save it into a safer place (char* safeBuffer). + * This is schematically equivalent to a memcpy() followed by LZ4_loadDict(), + * but is much faster, because LZ4_saveDict() doesn't need to rebuild tables. + * @return : saved dictionary size in bytes (necessarily <= maxDictSize), or 0 if error. + */ +LZ4LIB_API int LZ4_saveDict (LZ4_stream_t* streamPtr, char* safeBuffer, int maxDictSize); + + +/*-********************************************** +* Streaming Decompression Functions +* Bufferless synchronous API +************************************************/ +typedef union LZ4_streamDecode_u LZ4_streamDecode_t; /* tracking context */ + +/*! LZ4_createStreamDecode() and LZ4_freeStreamDecode() : + * creation / destruction of streaming decompression tracking context. + * A tracking context can be re-used multiple times. + */ +LZ4LIB_API LZ4_streamDecode_t* LZ4_createStreamDecode(void); +LZ4LIB_API int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream); + +/*! LZ4_setStreamDecode() : + * An LZ4_streamDecode_t context can be allocated once and re-used multiple times. + * Use this function to start decompression of a new stream of blocks. + * A dictionary can optionally be set. Use NULL or size 0 for a reset order. + * Dictionary is presumed stable : it must remain accessible and unmodified during next decompression. + * @return : 1 if OK, 0 if error + */ +LZ4LIB_API int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize); + +/*! LZ4_decoderRingBufferSize() : v1.8.2+ + * Note : in a ring buffer scenario (optional), + * blocks are presumed decompressed next to each other + * up to the moment there is not enough remaining space for next block (remainingSize < maxBlockSize), + * at which stage it resumes from beginning of ring buffer. + * When setting such a ring buffer for streaming decompression, + * provides the minimum size of this ring buffer + * to be compatible with any source respecting maxBlockSize condition. + * @return : minimum ring buffer size, + * or 0 if there is an error (invalid maxBlockSize). + */ +LZ4LIB_API int LZ4_decoderRingBufferSize(int maxBlockSize); +#define LZ4_DECODER_RING_BUFFER_SIZE(maxBlockSize) (65536 + 14 + (maxBlockSize)) /* for static allocation; maxBlockSize presumed valid */ + +/*! LZ4_decompress_*_continue() : + * These decoding functions allow decompression of consecutive blocks in "streaming" mode. + * A block is an unsplittable entity, it must be presented entirely to a decompression function. + * Decompression functions only accepts one block at a time. + * The last 64KB of previously decoded data *must* remain available and unmodified at the memory position where they were decoded. + * If less than 64KB of data has been decoded, all the data must be present. + * + * Special : if decompression side sets a ring buffer, it must respect one of the following conditions : + * - Decompression buffer size is _at least_ LZ4_decoderRingBufferSize(maxBlockSize). + * maxBlockSize is the maximum size of any single block. It can have any value > 16 bytes. + * In which case, encoding and decoding buffers do not need to be synchronized. + * Actually, data can be produced by any source compliant with LZ4 format specification, and respecting maxBlockSize. + * - Synchronized mode : + * Decompression buffer size is _exactly_ the same as compression buffer size, + * and follows exactly same update rule (block boundaries at same positions), + * and decoding function is provided with exact decompressed size of each block (exception for last block of the stream), + * _then_ decoding & encoding ring buffer can have any size, including small ones ( < 64 KB). + * - Decompression buffer is larger than encoding buffer, by a minimum of maxBlockSize more bytes. + * In which case, encoding and decoding buffers do not need to be synchronized, + * and encoding ring buffer can have any size, including small ones ( < 64 KB). + * + * Whenever these conditions are not possible, + * save the last 64KB of decoded data into a safe buffer where it can't be modified during decompression, + * then indicate where this data is saved using LZ4_setStreamDecode(), before decompressing next block. +*/ +LZ4LIB_API int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* src, char* dst, int srcSize, int dstCapacity); + + +/*! LZ4_decompress_*_usingDict() : + * These decoding functions work the same as + * a combination of LZ4_setStreamDecode() followed by LZ4_decompress_*_continue() + * They are stand-alone, and don't need an LZ4_streamDecode_t structure. + * Dictionary is presumed stable : it must remain accessible and unmodified during decompression. + * Performance tip : Decompression speed can be substantially increased + * when dst == dictStart + dictSize. + */ +LZ4LIB_API int LZ4_decompress_safe_usingDict (const char* src, char* dst, int srcSize, int dstCapcity, const char* dictStart, int dictSize); + +#endif /* LZ4_H_2983827168210 */ + + +/*^************************************* + * !!!!!! STATIC LINKING ONLY !!!!!! + ***************************************/ + +/*-**************************************************************************** + * Experimental section + * + * Symbols declared in this section must be considered unstable. Their + * signatures or semantics may change, or they may be removed altogether in the + * future. They are therefore only safe to depend on when the caller is + * statically linked against the library. + * + * To protect against unsafe usage, not only are the declarations guarded, + * the definitions are hidden by default + * when building LZ4 as a shared/dynamic library. + * + * In order to access these declarations, + * define LZ4_STATIC_LINKING_ONLY in your application + * before including LZ4's headers. + * + * In order to make their implementations accessible dynamically, you must + * define LZ4_PUBLISH_STATIC_FUNCTIONS when building the LZ4 library. + ******************************************************************************/ + +#ifdef LZ4_STATIC_LINKING_ONLY + +#ifndef LZ4_STATIC_3504398509 +#define LZ4_STATIC_3504398509 + +#ifdef LZ4_PUBLISH_STATIC_FUNCTIONS +#define LZ4LIB_STATIC_API LZ4LIB_API +#else +#define LZ4LIB_STATIC_API +#endif + + +/*! LZ4_compress_fast_extState_fastReset() : + * A variant of LZ4_compress_fast_extState(). + * + * Using this variant avoids an expensive initialization step. + * It is only safe to call if the state buffer is known to be correctly initialized already + * (see above comment on LZ4_resetStream_fast() for a definition of "correctly initialized"). + * From a high level, the difference is that + * this function initializes the provided state with a call to something like LZ4_resetStream_fast() + * while LZ4_compress_fast_extState() starts with a call to LZ4_resetStream(). + */ +LZ4LIB_STATIC_API int LZ4_compress_fast_extState_fastReset (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); + +/*! LZ4_attach_dictionary() : + * This is an experimental API that allows + * efficient use of a static dictionary many times. + * + * Rather than re-loading the dictionary buffer into a working context before + * each compression, or copying a pre-loaded dictionary's LZ4_stream_t into a + * working LZ4_stream_t, this function introduces a no-copy setup mechanism, + * in which the working stream references the dictionary stream in-place. + * + * Several assumptions are made about the state of the dictionary stream. + * Currently, only streams which have been prepared by LZ4_loadDict() should + * be expected to work. + * + * Alternatively, the provided dictionaryStream may be NULL, + * in which case any existing dictionary stream is unset. + * + * If a dictionary is provided, it replaces any pre-existing stream history. + * The dictionary contents are the only history that can be referenced and + * logically immediately precede the data compressed in the first subsequent + * compression call. + * + * The dictionary will only remain attached to the working stream through the + * first compression call, at the end of which it is cleared. The dictionary + * stream (and source buffer) must remain in-place / accessible / unchanged + * through the completion of the first compression call on the stream. + */ +LZ4LIB_STATIC_API void LZ4_attach_dictionary(LZ4_stream_t* workingStream, const LZ4_stream_t* dictionaryStream); + + +/*! In-place compression and decompression + * + * It's possible to have input and output sharing the same buffer, + * for highly contrained memory environments. + * In both cases, it requires input to lay at the end of the buffer, + * and decompression to start at beginning of the buffer. + * Buffer size must feature some margin, hence be larger than final size. + * + * |<------------------------buffer--------------------------------->| + * |<-----------compressed data--------->| + * |<-----------decompressed size------------------>| + * |<----margin---->| + * + * This technique is more useful for decompression, + * since decompressed size is typically larger, + * and margin is short. + * + * In-place decompression will work inside any buffer + * which size is >= LZ4_DECOMPRESS_INPLACE_BUFFER_SIZE(decompressedSize). + * This presumes that decompressedSize > compressedSize. + * Otherwise, it means compression actually expanded data, + * and it would be more efficient to store such data with a flag indicating it's not compressed. + * This can happen when data is not compressible (already compressed, or encrypted). + * + * For in-place compression, margin is larger, as it must be able to cope with both + * history preservation, requiring input data to remain unmodified up to LZ4_DISTANCE_MAX, + * and data expansion, which can happen when input is not compressible. + * As a consequence, buffer size requirements are much higher, + * and memory savings offered by in-place compression are more limited. + * + * There are ways to limit this cost for compression : + * - Reduce history size, by modifying LZ4_DISTANCE_MAX. + * Note that it is a compile-time constant, so all compressions will apply this limit. + * Lower values will reduce compression ratio, except when input_size < LZ4_DISTANCE_MAX, + * so it's a reasonable trick when inputs are known to be small. + * - Require the compressor to deliver a "maximum compressed size". + * This is the `dstCapacity` parameter in `LZ4_compress*()`. + * When this size is < LZ4_COMPRESSBOUND(inputSize), then compression can fail, + * in which case, the return code will be 0 (zero). + * The caller must be ready for these cases to happen, + * and typically design a backup scheme to send data uncompressed. + * The combination of both techniques can significantly reduce + * the amount of margin required for in-place compression. + * + * In-place compression can work in any buffer + * which size is >= (maxCompressedSize) + * with maxCompressedSize == LZ4_COMPRESSBOUND(srcSize) for guaranteed compression success. + * LZ4_COMPRESS_INPLACE_BUFFER_SIZE() depends on both maxCompressedSize and LZ4_DISTANCE_MAX, + * so it's possible to reduce memory requirements by playing with them. + */ + +#define LZ4_DECOMPRESS_INPLACE_MARGIN(compressedSize) (((compressedSize) >> 8) + 32) +#define LZ4_DECOMPRESS_INPLACE_BUFFER_SIZE(decompressedSize) ((decompressedSize) + LZ4_DECOMPRESS_INPLACE_MARGIN(decompressedSize)) /**< note: presumes that compressedSize < decompressedSize. note2: margin is overestimated a bit, since it could use compressedSize instead */ + +#ifndef LZ4_DISTANCE_MAX /* history window size; can be user-defined at compile time */ +# define LZ4_DISTANCE_MAX 65535 /* set to maximum value by default */ +#endif + +#define LZ4_COMPRESS_INPLACE_MARGIN (LZ4_DISTANCE_MAX + 32) /* LZ4_DISTANCE_MAX can be safely replaced by srcSize when it's smaller */ +#define LZ4_COMPRESS_INPLACE_BUFFER_SIZE(maxCompressedSize) ((maxCompressedSize) + LZ4_COMPRESS_INPLACE_MARGIN) /**< maxCompressedSize is generally LZ4_COMPRESSBOUND(inputSize), but can be set to any lower value, with the risk that compression can fail (return code 0(zero)) */ + +#endif /* LZ4_STATIC_3504398509 */ +#endif /* LZ4_STATIC_LINKING_ONLY */ + + + +#ifndef LZ4_H_98237428734687 +#define LZ4_H_98237428734687 + +/*-************************************************************ + * PRIVATE DEFINITIONS + ************************************************************** + * Do not use these definitions directly. + * They are only exposed to allow static allocation of `LZ4_stream_t` and `LZ4_streamDecode_t`. + * Accessing members will expose code to API and/or ABI break in future versions of the library. + **************************************************************/ +#define LZ4_HASHLOG (LZ4_MEMORY_USAGE-2) +#define LZ4_HASHTABLESIZE (1 << LZ4_MEMORY_USAGE) +#define LZ4_HASH_SIZE_U32 (1 << LZ4_HASHLOG) /* required as macro for static allocation */ + +#if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) +#include <stdint.h> + +typedef struct LZ4_stream_t_internal LZ4_stream_t_internal; +struct LZ4_stream_t_internal { + uint32_t hashTable[LZ4_HASH_SIZE_U32]; + uint32_t currentOffset; + uint16_t dirty; + uint16_t tableType; + const uint8_t* dictionary; + const LZ4_stream_t_internal* dictCtx; + uint32_t dictSize; +}; + +typedef struct { + const uint8_t* externalDict; + size_t extDictSize; + const uint8_t* prefixEnd; + size_t prefixSize; +} LZ4_streamDecode_t_internal; + +#else + +typedef struct LZ4_stream_t_internal LZ4_stream_t_internal; +struct LZ4_stream_t_internal { + unsigned int hashTable[LZ4_HASH_SIZE_U32]; + unsigned int currentOffset; + unsigned short dirty; + unsigned short tableType; + const unsigned char* dictionary; + const LZ4_stream_t_internal* dictCtx; + unsigned int dictSize; +}; + +typedef struct { + const unsigned char* externalDict; + const unsigned char* prefixEnd; + size_t extDictSize; + size_t prefixSize; +} LZ4_streamDecode_t_internal; + +#endif + +/*! LZ4_stream_t : + * information structure to track an LZ4 stream. + * LZ4_stream_t can also be created using LZ4_createStream(), which is recommended. + * The structure definition can be convenient for static allocation + * (on stack, or as part of larger structure). + * Init this structure with LZ4_initStream() before first use. + * note : only use this definition in association with static linking ! + * this definition is not API/ABI safe, and may change in a future version. + */ +#define LZ4_STREAMSIZE_U64 ((1 << (LZ4_MEMORY_USAGE-3)) + 4 + ((sizeof(void*)==16) ? 4 : 0) /*AS-400*/ ) +#define LZ4_STREAMSIZE (LZ4_STREAMSIZE_U64 * sizeof(unsigned long long)) +union LZ4_stream_u { + unsigned long long table[LZ4_STREAMSIZE_U64]; + LZ4_stream_t_internal internal_donotuse; +} ; /* previously typedef'd to LZ4_stream_t */ + +/*! LZ4_initStream() : v1.9.0+ + * An LZ4_stream_t structure must be initialized at least once. + * This is automatically done when invoking LZ4_createStream(), + * but it's not when the structure is simply declared on stack (for example). + * + * Use LZ4_initStream() to properly initialize a newly declared LZ4_stream_t. + * It can also initialize any arbitrary buffer of sufficient size, + * and will @return a pointer of proper type upon initialization. + * + * Note : initialization fails if size and alignment conditions are not respected. + * In which case, the function will @return NULL. + * Note2: An LZ4_stream_t structure guarantees correct alignment and size. + * Note3: Before v1.9.0, use LZ4_resetStream() instead + */ +LZ4LIB_API LZ4_stream_t* LZ4_initStream (void* buffer, size_t size); + + +/*! LZ4_streamDecode_t : + * information structure to track an LZ4 stream during decompression. + * init this structure using LZ4_setStreamDecode() before first use. + * note : only use in association with static linking ! + * this definition is not API/ABI safe, + * and may change in a future version ! + */ +#define LZ4_STREAMDECODESIZE_U64 (4 + ((sizeof(void*)==16) ? 2 : 0) /*AS-400*/ ) +#define LZ4_STREAMDECODESIZE (LZ4_STREAMDECODESIZE_U64 * sizeof(unsigned long long)) +union LZ4_streamDecode_u { + unsigned long long table[LZ4_STREAMDECODESIZE_U64]; + LZ4_streamDecode_t_internal internal_donotuse; +} ; /* previously typedef'd to LZ4_streamDecode_t */ + + + +/*-************************************ +* Obsolete Functions +**************************************/ + +/*! Deprecation warnings + * + * Deprecated functions make the compiler generate a warning when invoked. + * This is meant to invite users to update their source code. + * Should deprecation warnings be a problem, it is generally possible to disable them, + * typically with -Wno-deprecated-declarations for gcc + * or _CRT_SECURE_NO_WARNINGS in Visual. + * + * Another method is to define LZ4_DISABLE_DEPRECATE_WARNINGS + * before including the header file. + */ +#ifdef LZ4_DISABLE_DEPRECATE_WARNINGS +# define LZ4_DEPRECATED(message) /* disable deprecation warnings */ +#else +# define LZ4_GCC_VERSION (__GNUC__ * 100 + __GNUC_MINOR__) +# if defined (__cplusplus) && (__cplusplus >= 201402) /* C++14 or greater */ +# define LZ4_DEPRECATED(message) [[deprecated(message)]] +# elif (LZ4_GCC_VERSION >= 405) || defined(__clang__) +# define LZ4_DEPRECATED(message) __attribute__((deprecated(message))) +# elif (LZ4_GCC_VERSION >= 301) +# define LZ4_DEPRECATED(message) __attribute__((deprecated)) +# elif defined(_MSC_VER) +# define LZ4_DEPRECATED(message) __declspec(deprecated(message)) +# else +# pragma message("WARNING: You need to implement LZ4_DEPRECATED for this compiler") +# define LZ4_DEPRECATED(message) +# endif +#endif /* LZ4_DISABLE_DEPRECATE_WARNINGS */ + +/* Obsolete compression functions */ +LZ4_DEPRECATED("use LZ4_compress_default() instead") LZ4LIB_API int LZ4_compress (const char* src, char* dest, int srcSize); +LZ4_DEPRECATED("use LZ4_compress_default() instead") LZ4LIB_API int LZ4_compress_limitedOutput (const char* src, char* dest, int srcSize, int maxOutputSize); +LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") LZ4LIB_API int LZ4_compress_withState (void* state, const char* source, char* dest, int inputSize); +LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") LZ4LIB_API int LZ4_compress_limitedOutput_withState (void* state, const char* source, char* dest, int inputSize, int maxOutputSize); +LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") LZ4LIB_API int LZ4_compress_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize); +LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") LZ4LIB_API int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize, int maxOutputSize); + +/* Obsolete decompression functions */ +LZ4_DEPRECATED("use LZ4_decompress_fast() instead") LZ4LIB_API int LZ4_uncompress (const char* source, char* dest, int outputSize); +LZ4_DEPRECATED("use LZ4_decompress_safe() instead") LZ4LIB_API int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize); + +/* Obsolete streaming functions; degraded functionality; do not use! + * + * In order to perform streaming compression, these functions depended on data + * that is no longer tracked in the state. They have been preserved as well as + * possible: using them will still produce a correct output. However, they don't + * actually retain any history between compression calls. The compression ratio + * achieved will therefore be no better than compressing each chunk + * independently. + */ +LZ4_DEPRECATED("Use LZ4_createStream() instead") LZ4LIB_API void* LZ4_create (char* inputBuffer); +LZ4_DEPRECATED("Use LZ4_createStream() instead") LZ4LIB_API int LZ4_sizeofStreamState(void); +LZ4_DEPRECATED("Use LZ4_resetStream() instead") LZ4LIB_API int LZ4_resetStreamState(void* state, char* inputBuffer); +LZ4_DEPRECATED("Use LZ4_saveDict() instead") LZ4LIB_API char* LZ4_slideInputBuffer (void* state); + +/* Obsolete streaming decoding functions */ +LZ4_DEPRECATED("use LZ4_decompress_safe_usingDict() instead") LZ4LIB_API int LZ4_decompress_safe_withPrefix64k (const char* src, char* dst, int compressedSize, int maxDstSize); +LZ4_DEPRECATED("use LZ4_decompress_fast_usingDict() instead") LZ4LIB_API int LZ4_decompress_fast_withPrefix64k (const char* src, char* dst, int originalSize); + +/*! LZ4_decompress_fast() : **unsafe!** + * These functions used to be faster than LZ4_decompress_safe(), + * but it has changed, and they are now slower than LZ4_decompress_safe(). + * This is because LZ4_decompress_fast() doesn't know the input size, + * and therefore must progress more cautiously in the input buffer to not read beyond the end of block. + * On top of that `LZ4_decompress_fast()` is not protected vs malformed or malicious inputs, making it a security liability. + * As a consequence, LZ4_decompress_fast() is strongly discouraged, and deprecated. + * + * The last remaining LZ4_decompress_fast() specificity is that + * it can decompress a block without knowing its compressed size. + * Such functionality could be achieved in a more secure manner, + * by also providing the maximum size of input buffer, + * but it would require new prototypes, and adaptation of the implementation to this new use case. + * + * Parameters: + * originalSize : is the uncompressed size to regenerate. + * `dst` must be already allocated, its size must be >= 'originalSize' bytes. + * @return : number of bytes read from source buffer (== compressed size). + * The function expects to finish at block's end exactly. + * If the source stream is detected malformed, the function stops decoding and returns a negative result. + * note : LZ4_decompress_fast*() requires originalSize. Thanks to this information, it never writes past the output buffer. + * However, since it doesn't know its 'src' size, it may read an unknown amount of input, past input buffer bounds. + * Also, since match offsets are not validated, match reads from 'src' may underflow too. + * These issues never happen if input (compressed) data is correct. + * But they may happen if input data is invalid (error or intentional tampering). + * As a consequence, use these functions in trusted environments with trusted data **only**. + */ + +LZ4_DEPRECATED("This function is deprecated and unsafe. Consider using LZ4_decompress_safe() instead") +LZ4LIB_API int LZ4_decompress_fast (const char* src, char* dst, int originalSize); +LZ4_DEPRECATED("This function is deprecated and unsafe. Consider using LZ4_decompress_safe_continue() instead") +LZ4LIB_API int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* src, char* dst, int originalSize); +LZ4_DEPRECATED("This function is deprecated and unsafe. Consider using LZ4_decompress_safe_usingDict() instead") +LZ4LIB_API int LZ4_decompress_fast_usingDict (const char* src, char* dst, int originalSize, const char* dictStart, int dictSize); + +/*! LZ4_resetStream() : + * An LZ4_stream_t structure must be initialized at least once. + * This is done with LZ4_initStream(), or LZ4_resetStream(). + * Consider switching to LZ4_initStream(), + * invoking LZ4_resetStream() will trigger deprecation warnings in the future. + */ +LZ4LIB_API void LZ4_resetStream (LZ4_stream_t* streamPtr); + + +#endif /* LZ4_H_98237428734687 */ + + +#if defined (__cplusplus) +} +#endif diff --git a/common/lz4/lz4hc.c b/common/lz4/lz4hc.c new file mode 100644 index 000000000..5922ed7b1 --- /dev/null +++ b/common/lz4/lz4hc.c @@ -0,0 +1,1538 @@ +/* + LZ4 HC - High Compression Mode of LZ4 + Copyright (C) 2011-2017, Yann Collet. + + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - LZ4 source repository : https://github.com/lz4/lz4 + - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c +*/ +/* note : lz4hc is not an independent module, it requires lz4.h/lz4.c for proper compilation */ + + +/* ************************************* +* Tuning Parameter +***************************************/ + +/*! HEAPMODE : + * Select how default compression function will allocate workplace memory, + * in stack (0:fastest), or in heap (1:requires malloc()). + * Since workplace is rather large, heap mode is recommended. + */ +#ifndef LZ4HC_HEAPMODE +# define LZ4HC_HEAPMODE 1 +#endif + + +/*=== Dependency ===*/ +#define LZ4_HC_STATIC_LINKING_ONLY +#include "lz4hc.h" + + +/*=== Common LZ4 definitions ===*/ +#if defined(__GNUC__) +# pragma GCC diagnostic ignored "-Wunused-function" +#endif +#if defined (__clang__) +# pragma clang diagnostic ignored "-Wunused-function" +#endif + +/*=== Enums ===*/ +typedef enum { noDictCtx, usingDictCtxHc } dictCtx_directive; + + +#define LZ4_COMMONDEFS_ONLY +#ifndef LZ4_SRC_INCLUDED +#include "lz4.c" /* LZ4_count, constants, mem */ +#endif + +/*=== Constants ===*/ +#define OPTIMAL_ML (int)((ML_MASK-1)+MINMATCH) +#define LZ4_OPT_NUM (1<<12) + + +/*=== Macros ===*/ +#define MIN(a,b) ( (a) < (b) ? (a) : (b) ) +#define MAX(a,b) ( (a) > (b) ? (a) : (b) ) +#define HASH_FUNCTION(i) (((i) * 2654435761U) >> ((MINMATCH*8)-LZ4HC_HASH_LOG)) +#define DELTANEXTMAXD(p) chainTable[(p) & LZ4HC_MAXD_MASK] /* flexible, LZ4HC_MAXD dependent */ +#define DELTANEXTU16(table, pos) table[(U16)(pos)] /* faster */ +/* Make fields passed to, and updated by LZ4HC_encodeSequence explicit */ +#define UPDATABLE(ip, op, anchor) &ip, &op, &anchor + +static U32 LZ4HC_hashPtr(const void* ptr) { return HASH_FUNCTION(LZ4_read32(ptr)); } + + +/************************************** +* HC Compression +**************************************/ +static void LZ4HC_clearTables (LZ4HC_CCtx_internal* hc4) +{ + MEM_INIT((void*)hc4->hashTable, 0, sizeof(hc4->hashTable)); + MEM_INIT(hc4->chainTable, 0xFF, sizeof(hc4->chainTable)); +} + +static void LZ4HC_init_internal (LZ4HC_CCtx_internal* hc4, const BYTE* start) +{ + uptrval startingOffset = (uptrval)(hc4->end - hc4->base); + if (startingOffset > 1 GB) { + LZ4HC_clearTables(hc4); + startingOffset = 0; + } + startingOffset += 64 KB; + hc4->nextToUpdate = (U32) startingOffset; + hc4->base = start - startingOffset; + hc4->end = start; + hc4->dictBase = start - startingOffset; + hc4->dictLimit = (U32) startingOffset; + hc4->lowLimit = (U32) startingOffset; +} + + +/* Update chains up to ip (excluded) */ +LZ4_FORCE_INLINE void LZ4HC_Insert (LZ4HC_CCtx_internal* hc4, const BYTE* ip) +{ + U16* const chainTable = hc4->chainTable; + U32* const hashTable = hc4->hashTable; + const BYTE* const base = hc4->base; + U32 const target = (U32)(ip - base); + U32 idx = hc4->nextToUpdate; + + while (idx < target) { + U32 const h = LZ4HC_hashPtr(base+idx); + size_t delta = idx - hashTable[h]; + if (delta>LZ4_DISTANCE_MAX) delta = LZ4_DISTANCE_MAX; + DELTANEXTU16(chainTable, idx) = (U16)delta; + hashTable[h] = idx; + idx++; + } + + hc4->nextToUpdate = target; +} + +/** LZ4HC_countBack() : + * @return : negative value, nb of common bytes before ip/match */ +LZ4_FORCE_INLINE +int LZ4HC_countBack(const BYTE* const ip, const BYTE* const match, + const BYTE* const iMin, const BYTE* const mMin) +{ + int back = 0; + int const min = (int)MAX(iMin - ip, mMin - match); + assert(min <= 0); + assert(ip >= iMin); assert((size_t)(ip-iMin) < (1U<<31)); + assert(match >= mMin); assert((size_t)(match - mMin) < (1U<<31)); + while ( (back > min) + && (ip[back-1] == match[back-1]) ) + back--; + return back; +} + +#if defined(_MSC_VER) +# define LZ4HC_rotl32(x,r) _rotl(x,r) +#else +# define LZ4HC_rotl32(x,r) ((x << r) | (x >> (32 - r))) +#endif + + +static U32 LZ4HC_rotatePattern(size_t const rotate, U32 const pattern) +{ + size_t const bitsToRotate = (rotate & (sizeof(pattern) - 1)) << 3; + if (bitsToRotate == 0) + return pattern; + return LZ4HC_rotl32(pattern, (int)bitsToRotate); +} + +/* LZ4HC_countPattern() : + * pattern32 must be a sample of repetitive pattern of length 1, 2 or 4 (but not 3!) */ +static unsigned +LZ4HC_countPattern(const BYTE* ip, const BYTE* const iEnd, U32 const pattern32) +{ + const BYTE* const iStart = ip; + reg_t const pattern = (sizeof(pattern)==8) ? (reg_t)pattern32 + (((reg_t)pattern32) << 32) : pattern32; + + while (likely(ip < iEnd-(sizeof(pattern)-1))) { + reg_t const diff = LZ4_read_ARCH(ip) ^ pattern; + if (!diff) { ip+=sizeof(pattern); continue; } + ip += LZ4_NbCommonBytes(diff); + return (unsigned)(ip - iStart); + } + + if (LZ4_isLittleEndian()) { + reg_t patternByte = pattern; + while ((ip<iEnd) && (*ip == (BYTE)patternByte)) { + ip++; patternByte >>= 8; + } + } else { /* big endian */ + U32 bitOffset = (sizeof(pattern)*8) - 8; + while (ip < iEnd) { + BYTE const byte = (BYTE)(pattern >> bitOffset); + if (*ip != byte) break; + ip ++; bitOffset -= 8; + } + } + + return (unsigned)(ip - iStart); +} + +/* LZ4HC_reverseCountPattern() : + * pattern must be a sample of repetitive pattern of length 1, 2 or 4 (but not 3!) + * read using natural platform endianess */ +static unsigned +LZ4HC_reverseCountPattern(const BYTE* ip, const BYTE* const iLow, U32 pattern) +{ + const BYTE* const iStart = ip; + + while (likely(ip >= iLow+4)) { + if (LZ4_read32(ip-4) != pattern) break; + ip -= 4; + } + { const BYTE* bytePtr = (const BYTE*)(&pattern) + 3; /* works for any endianess */ + while (likely(ip>iLow)) { + if (ip[-1] != *bytePtr) break; + ip--; bytePtr--; + } } + return (unsigned)(iStart - ip); +} + +/* LZ4HC_protectDictEnd() : + * Checks if the match is in the last 3 bytes of the dictionary, so reading the + * 4 byte MINMATCH would overflow. + * @returns true if the match index is okay. + */ +static int LZ4HC_protectDictEnd(U32 const dictLimit, U32 const matchIndex) +{ + return ((U32)((dictLimit - 1) - matchIndex) >= 3); +} + +typedef enum { rep_untested, rep_not, rep_confirmed } repeat_state_e; +typedef enum { favorCompressionRatio=0, favorDecompressionSpeed } HCfavor_e; + +LZ4_FORCE_INLINE int +LZ4HC_InsertAndGetWiderMatch ( + LZ4HC_CCtx_internal* hc4, + const BYTE* const ip, + const BYTE* const iLowLimit, + const BYTE* const iHighLimit, + int longest, + const BYTE** matchpos, + const BYTE** startpos, + const int maxNbAttempts, + const int patternAnalysis, + const int chainSwap, + const dictCtx_directive dict, + const HCfavor_e favorDecSpeed) +{ + U16* const chainTable = hc4->chainTable; + U32* const HashTable = hc4->hashTable; + const LZ4HC_CCtx_internal * const dictCtx = hc4->dictCtx; + const BYTE* const base = hc4->base; + const U32 dictLimit = hc4->dictLimit; + const BYTE* const lowPrefixPtr = base + dictLimit; + const U32 ipIndex = (U32)(ip - base); + const U32 lowestMatchIndex = (hc4->lowLimit + (LZ4_DISTANCE_MAX + 1) > ipIndex) ? hc4->lowLimit : ipIndex - LZ4_DISTANCE_MAX; + const BYTE* const dictBase = hc4->dictBase; + int const lookBackLength = (int)(ip-iLowLimit); + int nbAttempts = maxNbAttempts; + U32 matchChainPos = 0; + U32 const pattern = LZ4_read32(ip); + U32 matchIndex; + repeat_state_e repeat = rep_untested; + size_t srcPatternLength = 0; + + DEBUGLOG(7, "LZ4HC_InsertAndGetWiderMatch"); + /* First Match */ + LZ4HC_Insert(hc4, ip); + matchIndex = HashTable[LZ4HC_hashPtr(ip)]; + DEBUGLOG(7, "First match at index %u / %u (lowestMatchIndex)", + matchIndex, lowestMatchIndex); + + while ((matchIndex>=lowestMatchIndex) && (nbAttempts)) { + int matchLength=0; + nbAttempts--; + assert(matchIndex < ipIndex); + if (favorDecSpeed && (ipIndex - matchIndex < 8)) { + /* do nothing */ + } else if (matchIndex >= dictLimit) { /* within current Prefix */ + const BYTE* const matchPtr = base + matchIndex; + assert(matchPtr >= lowPrefixPtr); + assert(matchPtr < ip); + assert(longest >= 1); + if (LZ4_read16(iLowLimit + longest - 1) == LZ4_read16(matchPtr - lookBackLength + longest - 1)) { + if (LZ4_read32(matchPtr) == pattern) { + int const back = lookBackLength ? LZ4HC_countBack(ip, matchPtr, iLowLimit, lowPrefixPtr) : 0; + matchLength = MINMATCH + (int)LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, iHighLimit); + matchLength -= back; + if (matchLength > longest) { + longest = matchLength; + *matchpos = matchPtr + back; + *startpos = ip + back; + } } } + } else { /* lowestMatchIndex <= matchIndex < dictLimit */ + const BYTE* const matchPtr = dictBase + matchIndex; + if (LZ4_read32(matchPtr) == pattern) { + const BYTE* const dictStart = dictBase + hc4->lowLimit; + int back = 0; + const BYTE* vLimit = ip + (dictLimit - matchIndex); + if (vLimit > iHighLimit) vLimit = iHighLimit; + matchLength = (int)LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, vLimit) + MINMATCH; + if ((ip+matchLength == vLimit) && (vLimit < iHighLimit)) + matchLength += LZ4_count(ip+matchLength, lowPrefixPtr, iHighLimit); + back = lookBackLength ? LZ4HC_countBack(ip, matchPtr, iLowLimit, dictStart) : 0; + matchLength -= back; + if (matchLength > longest) { + longest = matchLength; + *matchpos = base + matchIndex + back; /* virtual pos, relative to ip, to retrieve offset */ + *startpos = ip + back; + } } } + + if (chainSwap && matchLength==longest) { /* better match => select a better chain */ + assert(lookBackLength==0); /* search forward only */ + if (matchIndex + (U32)longest <= ipIndex) { + int const kTrigger = 4; + U32 distanceToNextMatch = 1; + int const end = longest - MINMATCH + 1; + int step = 1; + int accel = 1 << kTrigger; + int pos; + for (pos = 0; pos < end; pos += step) { + U32 const candidateDist = DELTANEXTU16(chainTable, matchIndex + (U32)pos); + step = (accel++ >> kTrigger); + if (candidateDist > distanceToNextMatch) { + distanceToNextMatch = candidateDist; + matchChainPos = (U32)pos; + accel = 1 << kTrigger; + } + } + if (distanceToNextMatch > 1) { + if (distanceToNextMatch > matchIndex) break; /* avoid overflow */ + matchIndex -= distanceToNextMatch; + continue; + } } } + + { U32 const distNextMatch = DELTANEXTU16(chainTable, matchIndex); + if (patternAnalysis && distNextMatch==1 && matchChainPos==0) { + U32 const matchCandidateIdx = matchIndex-1; + /* may be a repeated pattern */ + if (repeat == rep_untested) { + if ( ((pattern & 0xFFFF) == (pattern >> 16)) + & ((pattern & 0xFF) == (pattern >> 24)) ) { + repeat = rep_confirmed; + srcPatternLength = LZ4HC_countPattern(ip+sizeof(pattern), iHighLimit, pattern) + sizeof(pattern); + } else { + repeat = rep_not; + } } + if ( (repeat == rep_confirmed) && (matchCandidateIdx >= lowestMatchIndex) + && LZ4HC_protectDictEnd(dictLimit, matchCandidateIdx) ) { + const int extDict = matchCandidateIdx < dictLimit; + const BYTE* const matchPtr = (extDict ? dictBase : base) + matchCandidateIdx; + if (LZ4_read32(matchPtr) == pattern) { /* good candidate */ + const BYTE* const dictStart = dictBase + hc4->lowLimit; + const BYTE* const iLimit = extDict ? dictBase + dictLimit : iHighLimit; + size_t forwardPatternLength = LZ4HC_countPattern(matchPtr+sizeof(pattern), iLimit, pattern) + sizeof(pattern); + if (extDict && matchPtr + forwardPatternLength == iLimit) { + U32 const rotatedPattern = LZ4HC_rotatePattern(forwardPatternLength, pattern); + forwardPatternLength += LZ4HC_countPattern(lowPrefixPtr, iHighLimit, rotatedPattern); + } + { const BYTE* const lowestMatchPtr = extDict ? dictStart : lowPrefixPtr; + size_t backLength = LZ4HC_reverseCountPattern(matchPtr, lowestMatchPtr, pattern); + size_t currentSegmentLength; + if (!extDict && matchPtr - backLength == lowPrefixPtr && hc4->lowLimit < dictLimit) { + U32 const rotatedPattern = LZ4HC_rotatePattern((U32)(-(int)backLength), pattern); + backLength += LZ4HC_reverseCountPattern(dictBase + dictLimit, dictStart, rotatedPattern); + } + /* Limit backLength not go further than lowestMatchIndex */ + backLength = matchCandidateIdx - MAX(matchCandidateIdx - (U32)backLength, lowestMatchIndex); + assert(matchCandidateIdx - backLength >= lowestMatchIndex); + currentSegmentLength = backLength + forwardPatternLength; + /* Adjust to end of pattern if the source pattern fits, otherwise the beginning of the pattern */ + if ( (currentSegmentLength >= srcPatternLength) /* current pattern segment large enough to contain full srcPatternLength */ + && (forwardPatternLength <= srcPatternLength) ) { /* haven't reached this position yet */ + U32 const newMatchIndex = matchCandidateIdx + (U32)forwardPatternLength - (U32)srcPatternLength; /* best position, full pattern, might be followed by more match */ + if (LZ4HC_protectDictEnd(dictLimit, newMatchIndex)) + matchIndex = newMatchIndex; + else { + /* Can only happen if started in the prefix */ + assert(newMatchIndex >= dictLimit - 3 && newMatchIndex < dictLimit && !extDict); + matchIndex = dictLimit; + } + } else { + U32 const newMatchIndex = matchCandidateIdx - (U32)backLength; /* farthest position in current segment, will find a match of length currentSegmentLength + maybe some back */ + if (!LZ4HC_protectDictEnd(dictLimit, newMatchIndex)) { + assert(newMatchIndex >= dictLimit - 3 && newMatchIndex < dictLimit && !extDict); + matchIndex = dictLimit; + } else { + matchIndex = newMatchIndex; + if (lookBackLength==0) { /* no back possible */ + size_t const maxML = MIN(currentSegmentLength, srcPatternLength); + if ((size_t)longest < maxML) { + assert(base + matchIndex < ip); + if (ip - (base+matchIndex) > LZ4_DISTANCE_MAX) break; + assert(maxML < 2 GB); + longest = (int)maxML; + *matchpos = base + matchIndex; /* virtual pos, relative to ip, to retrieve offset */ + *startpos = ip; + } + { U32 const distToNextPattern = DELTANEXTU16(chainTable, matchIndex); + if (distToNextPattern > matchIndex) break; /* avoid overflow */ + matchIndex -= distToNextPattern; + } } } } } + continue; + } } + } } /* PA optimization */ + + /* follow current chain */ + matchIndex -= DELTANEXTU16(chainTable, matchIndex + matchChainPos); + + } /* while ((matchIndex>=lowestMatchIndex) && (nbAttempts)) */ + + if ( dict == usingDictCtxHc + && nbAttempts + && ipIndex - lowestMatchIndex < LZ4_DISTANCE_MAX) { + size_t const dictEndOffset = (size_t)(dictCtx->end - dictCtx->base); + U32 dictMatchIndex = dictCtx->hashTable[LZ4HC_hashPtr(ip)]; + assert(dictEndOffset <= 1 GB); + matchIndex = dictMatchIndex + lowestMatchIndex - (U32)dictEndOffset; + while (ipIndex - matchIndex <= LZ4_DISTANCE_MAX && nbAttempts--) { + const BYTE* const matchPtr = dictCtx->base + dictMatchIndex; + + if (LZ4_read32(matchPtr) == pattern) { + int mlt; + int back = 0; + const BYTE* vLimit = ip + (dictEndOffset - dictMatchIndex); + if (vLimit > iHighLimit) vLimit = iHighLimit; + mlt = (int)LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, vLimit) + MINMATCH; + back = lookBackLength ? LZ4HC_countBack(ip, matchPtr, iLowLimit, dictCtx->base + dictCtx->dictLimit) : 0; + mlt -= back; + if (mlt > longest) { + longest = mlt; + *matchpos = base + matchIndex + back; + *startpos = ip + back; + } } + + { U32 const nextOffset = DELTANEXTU16(dictCtx->chainTable, dictMatchIndex); + dictMatchIndex -= nextOffset; + matchIndex -= nextOffset; + } } } + + return longest; +} + +LZ4_FORCE_INLINE +int LZ4HC_InsertAndFindBestMatch(LZ4HC_CCtx_internal* const hc4, /* Index table will be updated */ + const BYTE* const ip, const BYTE* const iLimit, + const BYTE** matchpos, + const int maxNbAttempts, + const int patternAnalysis, + const dictCtx_directive dict) +{ + const BYTE* uselessPtr = ip; + /* note : LZ4HC_InsertAndGetWiderMatch() is able to modify the starting position of a match (*startpos), + * but this won't be the case here, as we define iLowLimit==ip, + * so LZ4HC_InsertAndGetWiderMatch() won't be allowed to search past ip */ + return LZ4HC_InsertAndGetWiderMatch(hc4, ip, ip, iLimit, MINMATCH-1, matchpos, &uselessPtr, maxNbAttempts, patternAnalysis, 0 /*chainSwap*/, dict, favorCompressionRatio); +} + +/* LZ4HC_encodeSequence() : + * @return : 0 if ok, + * 1 if buffer issue detected */ +LZ4_FORCE_INLINE int LZ4HC_encodeSequence ( + const BYTE** ip, + BYTE** op, + const BYTE** anchor, + int matchLength, + const BYTE* const match, + limitedOutput_directive limit, + BYTE* oend) +{ + size_t length; + BYTE* const token = (*op)++; + +#if defined(LZ4_DEBUG) && (LZ4_DEBUG >= 6) + static const BYTE* start = NULL; + static U32 totalCost = 0; + U32 const pos = (start==NULL) ? 0 : (U32)(*anchor - start); + U32 const ll = (U32)(*ip - *anchor); + U32 const llAdd = (ll>=15) ? ((ll-15) / 255) + 1 : 0; + U32 const mlAdd = (matchLength>=19) ? ((matchLength-19) / 255) + 1 : 0; + U32 const cost = 1 + llAdd + ll + 2 + mlAdd; + if (start==NULL) start = *anchor; /* only works for single segment */ + /* g_debuglog_enable = (pos >= 2228) & (pos <= 2262); */ + DEBUGLOG(6, "pos:%7u -- literals:%3u, match:%4i, offset:%5u, cost:%3u + %u", + pos, + (U32)(*ip - *anchor), matchLength, (U32)(*ip-match), + cost, totalCost); + totalCost += cost; +#endif + + /* Encode Literal length */ + length = (size_t)(*ip - *anchor); + if ((limit) && ((*op + (length / 255) + length + (2 + 1 + LASTLITERALS)) > oend)) return 1; /* Check output limit */ + if (length >= RUN_MASK) { + size_t len = length - RUN_MASK; + *token = (RUN_MASK << ML_BITS); + for(; len >= 255 ; len -= 255) *(*op)++ = 255; + *(*op)++ = (BYTE)len; + } else { + *token = (BYTE)(length << ML_BITS); + } + + /* Copy Literals */ + LZ4_wildCopy8(*op, *anchor, (*op) + length); + *op += length; + + /* Encode Offset */ + assert( (*ip - match) <= LZ4_DISTANCE_MAX ); /* note : consider providing offset as a value, rather than as a pointer difference */ + LZ4_writeLE16(*op, (U16)(*ip-match)); *op += 2; + + /* Encode MatchLength */ + assert(matchLength >= MINMATCH); + length = (size_t)matchLength - MINMATCH; + if ((limit) && (*op + (length / 255) + (1 + LASTLITERALS) > oend)) return 1; /* Check output limit */ + if (length >= ML_MASK) { + *token += ML_MASK; + length -= ML_MASK; + for(; length >= 510 ; length -= 510) { *(*op)++ = 255; *(*op)++ = 255; } + if (length >= 255) { length -= 255; *(*op)++ = 255; } + *(*op)++ = (BYTE)length; + } else { + *token += (BYTE)(length); + } + + /* Prepare next loop */ + *ip += matchLength; + *anchor = *ip; + + return 0; +} + +LZ4_FORCE_INLINE int LZ4HC_compress_hashChain ( + LZ4HC_CCtx_internal* const ctx, + const char* const source, + char* const dest, + int* srcSizePtr, + int const maxOutputSize, + unsigned maxNbAttempts, + const limitedOutput_directive limit, + const dictCtx_directive dict + ) +{ + const int inputSize = *srcSizePtr; + const int patternAnalysis = (maxNbAttempts > 128); /* levels 9+ */ + + const BYTE* ip = (const BYTE*) source; + const BYTE* anchor = ip; + const BYTE* const iend = ip + inputSize; + const BYTE* const mflimit = iend - MFLIMIT; + const BYTE* const matchlimit = (iend - LASTLITERALS); + + BYTE* optr = (BYTE*) dest; + BYTE* op = (BYTE*) dest; + BYTE* oend = op + maxOutputSize; + + int ml0, ml, ml2, ml3; + const BYTE* start0; + const BYTE* ref0; + const BYTE* ref = NULL; + const BYTE* start2 = NULL; + const BYTE* ref2 = NULL; + const BYTE* start3 = NULL; + const BYTE* ref3 = NULL; + + /* init */ + *srcSizePtr = 0; + if (limit == fillOutput) oend -= LASTLITERALS; /* Hack for support LZ4 format restriction */ + if (inputSize < LZ4_minLength) goto _last_literals; /* Input too small, no compression (all literals) */ + + /* Main Loop */ + while (ip <= mflimit) { + ml = LZ4HC_InsertAndFindBestMatch(ctx, ip, matchlimit, &ref, maxNbAttempts, patternAnalysis, dict); + if (ml<MINMATCH) { ip++; continue; } + + /* saved, in case we would skip too much */ + start0 = ip; ref0 = ref; ml0 = ml; + +_Search2: + if (ip+ml <= mflimit) { + ml2 = LZ4HC_InsertAndGetWiderMatch(ctx, + ip + ml - 2, ip + 0, matchlimit, ml, &ref2, &start2, + maxNbAttempts, patternAnalysis, 0, dict, favorCompressionRatio); + } else { + ml2 = ml; + } + + if (ml2 == ml) { /* No better match => encode ML1 */ + optr = op; + if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; + continue; + } + + if (start0 < ip) { /* first match was skipped at least once */ + if (start2 < ip + ml0) { /* squeezing ML1 between ML0(original ML1) and ML2 */ + ip = start0; ref = ref0; ml = ml0; /* restore initial ML1 */ + } } + + /* Here, start0==ip */ + if ((start2 - ip) < 3) { /* First Match too small : removed */ + ml = ml2; + ip = start2; + ref =ref2; + goto _Search2; + } + +_Search3: + /* At this stage, we have : + * ml2 > ml1, and + * ip1+3 <= ip2 (usually < ip1+ml1) */ + if ((start2 - ip) < OPTIMAL_ML) { + int correction; + int new_ml = ml; + if (new_ml > OPTIMAL_ML) new_ml = OPTIMAL_ML; + if (ip+new_ml > start2 + ml2 - MINMATCH) new_ml = (int)(start2 - ip) + ml2 - MINMATCH; + correction = new_ml - (int)(start2 - ip); + if (correction > 0) { + start2 += correction; + ref2 += correction; + ml2 -= correction; + } + } + /* Now, we have start2 = ip+new_ml, with new_ml = min(ml, OPTIMAL_ML=18) */ + + if (start2 + ml2 <= mflimit) { + ml3 = LZ4HC_InsertAndGetWiderMatch(ctx, + start2 + ml2 - 3, start2, matchlimit, ml2, &ref3, &start3, + maxNbAttempts, patternAnalysis, 0, dict, favorCompressionRatio); + } else { + ml3 = ml2; + } + + if (ml3 == ml2) { /* No better match => encode ML1 and ML2 */ + /* ip & ref are known; Now for ml */ + if (start2 < ip+ml) ml = (int)(start2 - ip); + /* Now, encode 2 sequences */ + optr = op; + if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; + ip = start2; + optr = op; + if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml2, ref2, limit, oend)) goto _dest_overflow; + continue; + } + + if (start3 < ip+ml+3) { /* Not enough space for match 2 : remove it */ + if (start3 >= (ip+ml)) { /* can write Seq1 immediately ==> Seq2 is removed, so Seq3 becomes Seq1 */ + if (start2 < ip+ml) { + int correction = (int)(ip+ml - start2); + start2 += correction; + ref2 += correction; + ml2 -= correction; + if (ml2 < MINMATCH) { + start2 = start3; + ref2 = ref3; + ml2 = ml3; + } + } + + optr = op; + if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; + ip = start3; + ref = ref3; + ml = ml3; + + start0 = start2; + ref0 = ref2; + ml0 = ml2; + goto _Search2; + } + + start2 = start3; + ref2 = ref3; + ml2 = ml3; + goto _Search3; + } + + /* + * OK, now we have 3 ascending matches; + * let's write the first one ML1. + * ip & ref are known; Now decide ml. + */ + if (start2 < ip+ml) { + if ((start2 - ip) < OPTIMAL_ML) { + int correction; + if (ml > OPTIMAL_ML) ml = OPTIMAL_ML; + if (ip + ml > start2 + ml2 - MINMATCH) ml = (int)(start2 - ip) + ml2 - MINMATCH; + correction = ml - (int)(start2 - ip); + if (correction > 0) { + start2 += correction; + ref2 += correction; + ml2 -= correction; + } + } else { + ml = (int)(start2 - ip); + } + } + optr = op; + if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; + + /* ML2 becomes ML1 */ + ip = start2; ref = ref2; ml = ml2; + + /* ML3 becomes ML2 */ + start2 = start3; ref2 = ref3; ml2 = ml3; + + /* let's find a new ML3 */ + goto _Search3; + } + +_last_literals: + /* Encode Last Literals */ + { size_t lastRunSize = (size_t)(iend - anchor); /* literals */ + size_t litLength = (lastRunSize + 255 - RUN_MASK) / 255; + size_t const totalSize = 1 + litLength + lastRunSize; + if (limit == fillOutput) oend += LASTLITERALS; /* restore correct value */ + if (limit && (op + totalSize > oend)) { + if (limit == limitedOutput) return 0; /* Check output limit */ + /* adapt lastRunSize to fill 'dest' */ + lastRunSize = (size_t)(oend - op) - 1; + litLength = (lastRunSize + 255 - RUN_MASK) / 255; + lastRunSize -= litLength; + } + ip = anchor + lastRunSize; + + if (lastRunSize >= RUN_MASK) { + size_t accumulator = lastRunSize - RUN_MASK; + *op++ = (RUN_MASK << ML_BITS); + for(; accumulator >= 255 ; accumulator -= 255) *op++ = 255; + *op++ = (BYTE) accumulator; + } else { + *op++ = (BYTE)(lastRunSize << ML_BITS); + } + memcpy(op, anchor, lastRunSize); + op += lastRunSize; + } + + /* End */ + *srcSizePtr = (int) (((const char*)ip) - source); + return (int) (((char*)op)-dest); + +_dest_overflow: + if (limit == fillOutput) { + op = optr; /* restore correct out pointer */ + goto _last_literals; + } + return 0; +} + + +static int LZ4HC_compress_optimal( LZ4HC_CCtx_internal* ctx, + const char* const source, char* dst, + int* srcSizePtr, int dstCapacity, + int const nbSearches, size_t sufficient_len, + const limitedOutput_directive limit, int const fullUpdate, + const dictCtx_directive dict, + HCfavor_e favorDecSpeed); + + +LZ4_FORCE_INLINE int LZ4HC_compress_generic_internal ( + LZ4HC_CCtx_internal* const ctx, + const char* const src, + char* const dst, + int* const srcSizePtr, + int const dstCapacity, + int cLevel, + const limitedOutput_directive limit, + const dictCtx_directive dict + ) +{ + typedef enum { lz4hc, lz4opt } lz4hc_strat_e; + typedef struct { + lz4hc_strat_e strat; + U32 nbSearches; + U32 targetLength; + } cParams_t; + static const cParams_t clTable[LZ4HC_CLEVEL_MAX+1] = { + { lz4hc, 2, 16 }, /* 0, unused */ + { lz4hc, 2, 16 }, /* 1, unused */ + { lz4hc, 2, 16 }, /* 2, unused */ + { lz4hc, 4, 16 }, /* 3 */ + { lz4hc, 8, 16 }, /* 4 */ + { lz4hc, 16, 16 }, /* 5 */ + { lz4hc, 32, 16 }, /* 6 */ + { lz4hc, 64, 16 }, /* 7 */ + { lz4hc, 128, 16 }, /* 8 */ + { lz4hc, 256, 16 }, /* 9 */ + { lz4opt, 96, 64 }, /*10==LZ4HC_CLEVEL_OPT_MIN*/ + { lz4opt, 512,128 }, /*11 */ + { lz4opt,16384,LZ4_OPT_NUM }, /* 12==LZ4HC_CLEVEL_MAX */ + }; + + DEBUGLOG(4, "LZ4HC_compress_generic(ctx=%p, src=%p, srcSize=%d)", ctx, src, *srcSizePtr); + + if (limit == fillOutput && dstCapacity < 1) return 0; /* Impossible to store anything */ + if ((U32)*srcSizePtr > (U32)LZ4_MAX_INPUT_SIZE) return 0; /* Unsupported input size (too large or negative) */ + + ctx->end += *srcSizePtr; + if (cLevel < 1) cLevel = LZ4HC_CLEVEL_DEFAULT; /* note : convention is different from lz4frame, maybe something to review */ + cLevel = MIN(LZ4HC_CLEVEL_MAX, cLevel); + { cParams_t const cParam = clTable[cLevel]; + HCfavor_e const favor = ctx->favorDecSpeed ? favorDecompressionSpeed : favorCompressionRatio; + int result; + + if (cParam.strat == lz4hc) { + result = LZ4HC_compress_hashChain(ctx, + src, dst, srcSizePtr, dstCapacity, + cParam.nbSearches, limit, dict); + } else { + assert(cParam.strat == lz4opt); + result = LZ4HC_compress_optimal(ctx, + src, dst, srcSizePtr, dstCapacity, + (int)cParam.nbSearches, cParam.targetLength, limit, + cLevel == LZ4HC_CLEVEL_MAX, /* ultra mode */ + dict, favor); + } + if (result <= 0) ctx->dirty = 1; + return result; + } +} + +static void LZ4HC_setExternalDict(LZ4HC_CCtx_internal* ctxPtr, const BYTE* newBlock); + +static int +LZ4HC_compress_generic_noDictCtx ( + LZ4HC_CCtx_internal* const ctx, + const char* const src, + char* const dst, + int* const srcSizePtr, + int const dstCapacity, + int cLevel, + limitedOutput_directive limit + ) +{ + assert(ctx->dictCtx == NULL); + return LZ4HC_compress_generic_internal(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit, noDictCtx); +} + +static int +LZ4HC_compress_generic_dictCtx ( + LZ4HC_CCtx_internal* const ctx, + const char* const src, + char* const dst, + int* const srcSizePtr, + int const dstCapacity, + int cLevel, + limitedOutput_directive limit + ) +{ + const size_t position = (size_t)(ctx->end - ctx->base) - ctx->lowLimit; + assert(ctx->dictCtx != NULL); + if (position >= 64 KB) { + ctx->dictCtx = NULL; + return LZ4HC_compress_generic_noDictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); + } else if (position == 0 && *srcSizePtr > 4 KB) { + memcpy(ctx, ctx->dictCtx, sizeof(LZ4HC_CCtx_internal)); + LZ4HC_setExternalDict(ctx, (const BYTE *)src); + ctx->compressionLevel = (short)cLevel; + return LZ4HC_compress_generic_noDictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); + } else { + return LZ4HC_compress_generic_internal(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit, usingDictCtxHc); + } +} + +static int +LZ4HC_compress_generic ( + LZ4HC_CCtx_internal* const ctx, + const char* const src, + char* const dst, + int* const srcSizePtr, + int const dstCapacity, + int cLevel, + limitedOutput_directive limit + ) +{ + if (ctx->dictCtx == NULL) { + return LZ4HC_compress_generic_noDictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); + } else { + return LZ4HC_compress_generic_dictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); + } +} + + +int LZ4_sizeofStateHC(void) { return (int)sizeof(LZ4_streamHC_t); } + +#ifndef _MSC_VER /* for some reason, Visual fails the aligment test on 32-bit x86 : + * it reports an aligment of 8-bytes, + * while actually aligning LZ4_streamHC_t on 4 bytes. */ +static size_t LZ4_streamHC_t_alignment(void) +{ + struct { char c; LZ4_streamHC_t t; } t_a; + return sizeof(t_a) - sizeof(t_a.t); +} +#endif + +/* state is presumed correctly initialized, + * in which case its size and alignment have already been validate */ +int LZ4_compress_HC_extStateHC_fastReset (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel) +{ + LZ4HC_CCtx_internal* const ctx = &((LZ4_streamHC_t*)state)->internal_donotuse; +#ifndef _MSC_VER /* for some reason, Visual fails the aligment test on 32-bit x86 : + * it reports an aligment of 8-bytes, + * while actually aligning LZ4_streamHC_t on 4 bytes. */ + assert(((size_t)state & (LZ4_streamHC_t_alignment() - 1)) == 0); /* check alignment */ +#endif + if (((size_t)(state)&(sizeof(void*)-1)) != 0) return 0; /* Error : state is not aligned for pointers (32 or 64 bits) */ + LZ4_resetStreamHC_fast((LZ4_streamHC_t*)state, compressionLevel); + LZ4HC_init_internal (ctx, (const BYTE*)src); + if (dstCapacity < LZ4_compressBound(srcSize)) + return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, limitedOutput); + else + return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, notLimited); +} + +int LZ4_compress_HC_extStateHC (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel) +{ + LZ4_streamHC_t* const ctx = LZ4_initStreamHC(state, sizeof(*ctx)); + if (ctx==NULL) return 0; /* init failure */ + return LZ4_compress_HC_extStateHC_fastReset(state, src, dst, srcSize, dstCapacity, compressionLevel); +} + +int LZ4_compress_HC(const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel) +{ +#if defined(LZ4HC_HEAPMODE) && LZ4HC_HEAPMODE==1 + LZ4_streamHC_t* const statePtr = (LZ4_streamHC_t*)ALLOC(sizeof(LZ4_streamHC_t)); +#else + LZ4_streamHC_t state; + LZ4_streamHC_t* const statePtr = &state; +#endif + int const cSize = LZ4_compress_HC_extStateHC(statePtr, src, dst, srcSize, dstCapacity, compressionLevel); +#if defined(LZ4HC_HEAPMODE) && LZ4HC_HEAPMODE==1 + FREEMEM(statePtr); +#endif + return cSize; +} + +/* state is presumed sized correctly (>= sizeof(LZ4_streamHC_t)) */ +int LZ4_compress_HC_destSize(void* state, const char* source, char* dest, int* sourceSizePtr, int targetDestSize, int cLevel) +{ + LZ4_streamHC_t* const ctx = LZ4_initStreamHC(state, sizeof(*ctx)); + if (ctx==NULL) return 0; /* init failure */ + LZ4HC_init_internal(&ctx->internal_donotuse, (const BYTE*) source); + LZ4_setCompressionLevel(ctx, cLevel); + return LZ4HC_compress_generic(&ctx->internal_donotuse, source, dest, sourceSizePtr, targetDestSize, cLevel, fillOutput); +} + + + +/************************************** +* Streaming Functions +**************************************/ +/* allocation */ +LZ4_streamHC_t* LZ4_createStreamHC(void) +{ + LZ4_streamHC_t* const LZ4_streamHCPtr = (LZ4_streamHC_t*)ALLOC(sizeof(LZ4_streamHC_t)); + if (LZ4_streamHCPtr==NULL) return NULL; + LZ4_initStreamHC(LZ4_streamHCPtr, sizeof(*LZ4_streamHCPtr)); /* full initialization, malloc'ed buffer can be full of garbage */ + return LZ4_streamHCPtr; +} + +int LZ4_freeStreamHC (LZ4_streamHC_t* LZ4_streamHCPtr) +{ + DEBUGLOG(4, "LZ4_freeStreamHC(%p)", LZ4_streamHCPtr); + if (!LZ4_streamHCPtr) return 0; /* support free on NULL */ + FREEMEM(LZ4_streamHCPtr); + return 0; +} + + +LZ4_streamHC_t* LZ4_initStreamHC (void* buffer, size_t size) +{ + LZ4_streamHC_t* const LZ4_streamHCPtr = (LZ4_streamHC_t*)buffer; + if (buffer == NULL) return NULL; + if (size < sizeof(LZ4_streamHC_t)) return NULL; +#ifndef _MSC_VER /* for some reason, Visual fails the aligment test on 32-bit x86 : + * it reports an aligment of 8-bytes, + * while actually aligning LZ4_streamHC_t on 4 bytes. */ + if (((size_t)buffer) & (LZ4_streamHC_t_alignment() - 1)) return NULL; /* alignment check */ +#endif + /* if compilation fails here, LZ4_STREAMHCSIZE must be increased */ + LZ4_STATIC_ASSERT(sizeof(LZ4HC_CCtx_internal) <= LZ4_STREAMHCSIZE); + DEBUGLOG(4, "LZ4_initStreamHC(%p, %u)", LZ4_streamHCPtr, (unsigned)size); + /* end-base will trigger a clearTable on starting compression */ + LZ4_streamHCPtr->internal_donotuse.end = (const BYTE *)(ptrdiff_t)-1; + LZ4_streamHCPtr->internal_donotuse.base = NULL; + LZ4_streamHCPtr->internal_donotuse.dictCtx = NULL; + LZ4_streamHCPtr->internal_donotuse.favorDecSpeed = 0; + LZ4_streamHCPtr->internal_donotuse.dirty = 0; + LZ4_setCompressionLevel(LZ4_streamHCPtr, LZ4HC_CLEVEL_DEFAULT); + return LZ4_streamHCPtr; +} + +/* just a stub */ +void LZ4_resetStreamHC (LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel) +{ + LZ4_initStreamHC(LZ4_streamHCPtr, sizeof(*LZ4_streamHCPtr)); + LZ4_setCompressionLevel(LZ4_streamHCPtr, compressionLevel); +} + +void LZ4_resetStreamHC_fast (LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel) +{ + DEBUGLOG(4, "LZ4_resetStreamHC_fast(%p, %d)", LZ4_streamHCPtr, compressionLevel); + if (LZ4_streamHCPtr->internal_donotuse.dirty) { + LZ4_initStreamHC(LZ4_streamHCPtr, sizeof(*LZ4_streamHCPtr)); + } else { + /* preserve end - base : can trigger clearTable's threshold */ + LZ4_streamHCPtr->internal_donotuse.end -= (uptrval)LZ4_streamHCPtr->internal_donotuse.base; + LZ4_streamHCPtr->internal_donotuse.base = NULL; + LZ4_streamHCPtr->internal_donotuse.dictCtx = NULL; + } + LZ4_setCompressionLevel(LZ4_streamHCPtr, compressionLevel); +} + +void LZ4_setCompressionLevel(LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel) +{ + DEBUGLOG(5, "LZ4_setCompressionLevel(%p, %d)", LZ4_streamHCPtr, compressionLevel); + if (compressionLevel < 1) compressionLevel = LZ4HC_CLEVEL_DEFAULT; + if (compressionLevel > LZ4HC_CLEVEL_MAX) compressionLevel = LZ4HC_CLEVEL_MAX; + LZ4_streamHCPtr->internal_donotuse.compressionLevel = (short)compressionLevel; +} + +void LZ4_favorDecompressionSpeed(LZ4_streamHC_t* LZ4_streamHCPtr, int favor) +{ + LZ4_streamHCPtr->internal_donotuse.favorDecSpeed = (favor!=0); +} + +/* LZ4_loadDictHC() : + * LZ4_streamHCPtr is presumed properly initialized */ +int LZ4_loadDictHC (LZ4_streamHC_t* LZ4_streamHCPtr, + const char* dictionary, int dictSize) +{ + LZ4HC_CCtx_internal* const ctxPtr = &LZ4_streamHCPtr->internal_donotuse; + DEBUGLOG(4, "LZ4_loadDictHC(%p, %p, %d)", LZ4_streamHCPtr, dictionary, dictSize); + assert(LZ4_streamHCPtr != NULL); + if (dictSize > 64 KB) { + dictionary += (size_t)dictSize - 64 KB; + dictSize = 64 KB; + } + /* need a full initialization, there are bad side-effects when using resetFast() */ + { int const cLevel = ctxPtr->compressionLevel; + LZ4_initStreamHC(LZ4_streamHCPtr, sizeof(*LZ4_streamHCPtr)); + LZ4_setCompressionLevel(LZ4_streamHCPtr, cLevel); + } + LZ4HC_init_internal (ctxPtr, (const BYTE*)dictionary); + ctxPtr->end = (const BYTE*)dictionary + dictSize; + if (dictSize >= 4) LZ4HC_Insert (ctxPtr, ctxPtr->end-3); + return dictSize; +} + +void LZ4_attach_HC_dictionary(LZ4_streamHC_t *working_stream, const LZ4_streamHC_t *dictionary_stream) { + working_stream->internal_donotuse.dictCtx = dictionary_stream != NULL ? &(dictionary_stream->internal_donotuse) : NULL; +} + +/* compression */ + +static void LZ4HC_setExternalDict(LZ4HC_CCtx_internal* ctxPtr, const BYTE* newBlock) +{ + DEBUGLOG(4, "LZ4HC_setExternalDict(%p, %p)", ctxPtr, newBlock); + if (ctxPtr->end >= ctxPtr->base + ctxPtr->dictLimit + 4) + LZ4HC_Insert (ctxPtr, ctxPtr->end-3); /* Referencing remaining dictionary content */ + + /* Only one memory segment for extDict, so any previous extDict is lost at this stage */ + ctxPtr->lowLimit = ctxPtr->dictLimit; + ctxPtr->dictLimit = (U32)(ctxPtr->end - ctxPtr->base); + ctxPtr->dictBase = ctxPtr->base; + ctxPtr->base = newBlock - ctxPtr->dictLimit; + ctxPtr->end = newBlock; + ctxPtr->nextToUpdate = ctxPtr->dictLimit; /* match referencing will resume from there */ + + /* cannot reference an extDict and a dictCtx at the same time */ + ctxPtr->dictCtx = NULL; +} + +static int LZ4_compressHC_continue_generic (LZ4_streamHC_t* LZ4_streamHCPtr, + const char* src, char* dst, + int* srcSizePtr, int dstCapacity, + limitedOutput_directive limit) +{ + LZ4HC_CCtx_internal* const ctxPtr = &LZ4_streamHCPtr->internal_donotuse; + DEBUGLOG(4, "LZ4_compressHC_continue_generic(ctx=%p, src=%p, srcSize=%d)", + LZ4_streamHCPtr, src, *srcSizePtr); + assert(ctxPtr != NULL); + /* auto-init if forgotten */ + if (ctxPtr->base == NULL) LZ4HC_init_internal (ctxPtr, (const BYTE*) src); + + /* Check overflow */ + if ((size_t)(ctxPtr->end - ctxPtr->base) > 2 GB) { + size_t dictSize = (size_t)(ctxPtr->end - ctxPtr->base) - ctxPtr->dictLimit; + if (dictSize > 64 KB) dictSize = 64 KB; + LZ4_loadDictHC(LZ4_streamHCPtr, (const char*)(ctxPtr->end) - dictSize, (int)dictSize); + } + + /* Check if blocks follow each other */ + if ((const BYTE*)src != ctxPtr->end) + LZ4HC_setExternalDict(ctxPtr, (const BYTE*)src); + + /* Check overlapping input/dictionary space */ + { const BYTE* sourceEnd = (const BYTE*) src + *srcSizePtr; + const BYTE* const dictBegin = ctxPtr->dictBase + ctxPtr->lowLimit; + const BYTE* const dictEnd = ctxPtr->dictBase + ctxPtr->dictLimit; + if ((sourceEnd > dictBegin) && ((const BYTE*)src < dictEnd)) { + if (sourceEnd > dictEnd) sourceEnd = dictEnd; + ctxPtr->lowLimit = (U32)(sourceEnd - ctxPtr->dictBase); + if (ctxPtr->dictLimit - ctxPtr->lowLimit < 4) ctxPtr->lowLimit = ctxPtr->dictLimit; + } + } + + return LZ4HC_compress_generic (ctxPtr, src, dst, srcSizePtr, dstCapacity, ctxPtr->compressionLevel, limit); +} + +int LZ4_compress_HC_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* src, char* dst, int srcSize, int dstCapacity) +{ + if (dstCapacity < LZ4_compressBound(srcSize)) + return LZ4_compressHC_continue_generic (LZ4_streamHCPtr, src, dst, &srcSize, dstCapacity, limitedOutput); + else + return LZ4_compressHC_continue_generic (LZ4_streamHCPtr, src, dst, &srcSize, dstCapacity, notLimited); +} + +int LZ4_compress_HC_continue_destSize (LZ4_streamHC_t* LZ4_streamHCPtr, const char* src, char* dst, int* srcSizePtr, int targetDestSize) +{ + return LZ4_compressHC_continue_generic(LZ4_streamHCPtr, src, dst, srcSizePtr, targetDestSize, fillOutput); +} + + + +/* dictionary saving */ + +int LZ4_saveDictHC (LZ4_streamHC_t* LZ4_streamHCPtr, char* safeBuffer, int dictSize) +{ + LZ4HC_CCtx_internal* const streamPtr = &LZ4_streamHCPtr->internal_donotuse; + int const prefixSize = (int)(streamPtr->end - (streamPtr->base + streamPtr->dictLimit)); + DEBUGLOG(4, "LZ4_saveDictHC(%p, %p, %d)", LZ4_streamHCPtr, safeBuffer, dictSize); + if (dictSize > 64 KB) dictSize = 64 KB; + if (dictSize < 4) dictSize = 0; + if (dictSize > prefixSize) dictSize = prefixSize; + memmove(safeBuffer, streamPtr->end - dictSize, dictSize); + { U32 const endIndex = (U32)(streamPtr->end - streamPtr->base); + streamPtr->end = (const BYTE*)safeBuffer + dictSize; + streamPtr->base = streamPtr->end - endIndex; + streamPtr->dictLimit = endIndex - (U32)dictSize; + streamPtr->lowLimit = endIndex - (U32)dictSize; + if (streamPtr->nextToUpdate < streamPtr->dictLimit) streamPtr->nextToUpdate = streamPtr->dictLimit; + } + return dictSize; +} + + +/*************************************************** +* Deprecated Functions +***************************************************/ + +/* These functions currently generate deprecation warnings */ + +/* Wrappers for deprecated compression functions */ +int LZ4_compressHC(const char* src, char* dst, int srcSize) { return LZ4_compress_HC (src, dst, srcSize, LZ4_compressBound(srcSize), 0); } +int LZ4_compressHC_limitedOutput(const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC(src, dst, srcSize, maxDstSize, 0); } +int LZ4_compressHC2(const char* src, char* dst, int srcSize, int cLevel) { return LZ4_compress_HC (src, dst, srcSize, LZ4_compressBound(srcSize), cLevel); } +int LZ4_compressHC2_limitedOutput(const char* src, char* dst, int srcSize, int maxDstSize, int cLevel) { return LZ4_compress_HC(src, dst, srcSize, maxDstSize, cLevel); } +int LZ4_compressHC_withStateHC (void* state, const char* src, char* dst, int srcSize) { return LZ4_compress_HC_extStateHC (state, src, dst, srcSize, LZ4_compressBound(srcSize), 0); } +int LZ4_compressHC_limitedOutput_withStateHC (void* state, const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC_extStateHC (state, src, dst, srcSize, maxDstSize, 0); } +int LZ4_compressHC2_withStateHC (void* state, const char* src, char* dst, int srcSize, int cLevel) { return LZ4_compress_HC_extStateHC(state, src, dst, srcSize, LZ4_compressBound(srcSize), cLevel); } +int LZ4_compressHC2_limitedOutput_withStateHC (void* state, const char* src, char* dst, int srcSize, int maxDstSize, int cLevel) { return LZ4_compress_HC_extStateHC(state, src, dst, srcSize, maxDstSize, cLevel); } +int LZ4_compressHC_continue (LZ4_streamHC_t* ctx, const char* src, char* dst, int srcSize) { return LZ4_compress_HC_continue (ctx, src, dst, srcSize, LZ4_compressBound(srcSize)); } +int LZ4_compressHC_limitedOutput_continue (LZ4_streamHC_t* ctx, const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC_continue (ctx, src, dst, srcSize, maxDstSize); } + + +/* Deprecated streaming functions */ +int LZ4_sizeofStreamStateHC(void) { return LZ4_STREAMHCSIZE; } + +/* state is presumed correctly sized, aka >= sizeof(LZ4_streamHC_t) + * @return : 0 on success, !=0 if error */ +int LZ4_resetStreamStateHC(void* state, char* inputBuffer) +{ + LZ4_streamHC_t* const hc4 = LZ4_initStreamHC(state, sizeof(*hc4)); + if (hc4 == NULL) return 1; /* init failed */ + LZ4HC_init_internal (&hc4->internal_donotuse, (const BYTE*)inputBuffer); + return 0; +} + +void* LZ4_createHC (const char* inputBuffer) +{ + LZ4_streamHC_t* const hc4 = LZ4_createStreamHC(); + if (hc4 == NULL) return NULL; /* not enough memory */ + LZ4HC_init_internal (&hc4->internal_donotuse, (const BYTE*)inputBuffer); + return hc4; +} + +int LZ4_freeHC (void* LZ4HC_Data) +{ + if (!LZ4HC_Data) return 0; /* support free on NULL */ + FREEMEM(LZ4HC_Data); + return 0; +} + +int LZ4_compressHC2_continue (void* LZ4HC_Data, const char* src, char* dst, int srcSize, int cLevel) +{ + return LZ4HC_compress_generic (&((LZ4_streamHC_t*)LZ4HC_Data)->internal_donotuse, src, dst, &srcSize, 0, cLevel, notLimited); +} + +int LZ4_compressHC2_limitedOutput_continue (void* LZ4HC_Data, const char* src, char* dst, int srcSize, int dstCapacity, int cLevel) +{ + return LZ4HC_compress_generic (&((LZ4_streamHC_t*)LZ4HC_Data)->internal_donotuse, src, dst, &srcSize, dstCapacity, cLevel, limitedOutput); +} + +char* LZ4_slideInputBufferHC(void* LZ4HC_Data) +{ + LZ4_streamHC_t *ctx = (LZ4_streamHC_t*)LZ4HC_Data; + const BYTE *bufferStart = ctx->internal_donotuse.base + ctx->internal_donotuse.lowLimit; + LZ4_resetStreamHC_fast(ctx, ctx->internal_donotuse.compressionLevel); + /* avoid const char * -> char * conversion warning :( */ + return (char *)(uptrval)bufferStart; +} + + +/* ================================================ + * LZ4 Optimal parser (levels [LZ4HC_CLEVEL_OPT_MIN - LZ4HC_CLEVEL_MAX]) + * ===============================================*/ +typedef struct { + int price; + int off; + int mlen; + int litlen; +} LZ4HC_optimal_t; + +/* price in bytes */ +LZ4_FORCE_INLINE int LZ4HC_literalsPrice(int const litlen) +{ + int price = litlen; + assert(litlen >= 0); + if (litlen >= (int)RUN_MASK) + price += 1 + ((litlen-(int)RUN_MASK) / 255); + return price; +} + + +/* requires mlen >= MINMATCH */ +LZ4_FORCE_INLINE int LZ4HC_sequencePrice(int litlen, int mlen) +{ + int price = 1 + 2 ; /* token + 16-bit offset */ + assert(litlen >= 0); + assert(mlen >= MINMATCH); + + price += LZ4HC_literalsPrice(litlen); + + if (mlen >= (int)(ML_MASK+MINMATCH)) + price += 1 + ((mlen-(int)(ML_MASK+MINMATCH)) / 255); + + return price; +} + + +typedef struct { + int off; + int len; +} LZ4HC_match_t; + +LZ4_FORCE_INLINE LZ4HC_match_t +LZ4HC_FindLongerMatch(LZ4HC_CCtx_internal* const ctx, + const BYTE* ip, const BYTE* const iHighLimit, + int minLen, int nbSearches, + const dictCtx_directive dict, + const HCfavor_e favorDecSpeed) +{ + LZ4HC_match_t match = { 0 , 0 }; + const BYTE* matchPtr = NULL; + /* note : LZ4HC_InsertAndGetWiderMatch() is able to modify the starting position of a match (*startpos), + * but this won't be the case here, as we define iLowLimit==ip, + * so LZ4HC_InsertAndGetWiderMatch() won't be allowed to search past ip */ + int matchLength = LZ4HC_InsertAndGetWiderMatch(ctx, ip, ip, iHighLimit, minLen, &matchPtr, &ip, nbSearches, 1 /*patternAnalysis*/, 1 /*chainSwap*/, dict, favorDecSpeed); + if (matchLength <= minLen) return match; + if (favorDecSpeed) { + if ((matchLength>18) & (matchLength<=36)) matchLength=18; /* favor shortcut */ + } + match.len = matchLength; + match.off = (int)(ip-matchPtr); + return match; +} + + +static int LZ4HC_compress_optimal ( LZ4HC_CCtx_internal* ctx, + const char* const source, + char* dst, + int* srcSizePtr, + int dstCapacity, + int const nbSearches, + size_t sufficient_len, + const limitedOutput_directive limit, + int const fullUpdate, + const dictCtx_directive dict, + const HCfavor_e favorDecSpeed) +{ +#define TRAILING_LITERALS 3 + LZ4HC_optimal_t opt[LZ4_OPT_NUM + TRAILING_LITERALS]; /* ~64 KB, which is a bit large for stack... */ + + const BYTE* ip = (const BYTE*) source; + const BYTE* anchor = ip; + const BYTE* const iend = ip + *srcSizePtr; + const BYTE* const mflimit = iend - MFLIMIT; + const BYTE* const matchlimit = iend - LASTLITERALS; + BYTE* op = (BYTE*) dst; + BYTE* opSaved = (BYTE*) dst; + BYTE* oend = op + dstCapacity; + + /* init */ + DEBUGLOG(5, "LZ4HC_compress_optimal(dst=%p, dstCapa=%u)", dst, (unsigned)dstCapacity); + *srcSizePtr = 0; + if (limit == fillOutput) oend -= LASTLITERALS; /* Hack for support LZ4 format restriction */ + if (sufficient_len >= LZ4_OPT_NUM) sufficient_len = LZ4_OPT_NUM-1; + + /* Main Loop */ + assert(ip - anchor < LZ4_MAX_INPUT_SIZE); + while (ip <= mflimit) { + int const llen = (int)(ip - anchor); + int best_mlen, best_off; + int cur, last_match_pos = 0; + + LZ4HC_match_t const firstMatch = LZ4HC_FindLongerMatch(ctx, ip, matchlimit, MINMATCH-1, nbSearches, dict, favorDecSpeed); + if (firstMatch.len==0) { ip++; continue; } + + if ((size_t)firstMatch.len > sufficient_len) { + /* good enough solution : immediate encoding */ + int const firstML = firstMatch.len; + const BYTE* const matchPos = ip - firstMatch.off; + opSaved = op; + if ( LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), firstML, matchPos, limit, oend) ) /* updates ip, op and anchor */ + goto _dest_overflow; + continue; + } + + /* set prices for first positions (literals) */ + { int rPos; + for (rPos = 0 ; rPos < MINMATCH ; rPos++) { + int const cost = LZ4HC_literalsPrice(llen + rPos); + opt[rPos].mlen = 1; + opt[rPos].off = 0; + opt[rPos].litlen = llen + rPos; + opt[rPos].price = cost; + DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i) -- initial setup", + rPos, cost, opt[rPos].litlen); + } } + /* set prices using initial match */ + { int mlen = MINMATCH; + int const matchML = firstMatch.len; /* necessarily < sufficient_len < LZ4_OPT_NUM */ + int const offset = firstMatch.off; + assert(matchML < LZ4_OPT_NUM); + for ( ; mlen <= matchML ; mlen++) { + int const cost = LZ4HC_sequencePrice(llen, mlen); + opt[mlen].mlen = mlen; + opt[mlen].off = offset; + opt[mlen].litlen = llen; + opt[mlen].price = cost; + DEBUGLOG(7, "rPos:%3i => price:%3i (matchlen=%i) -- initial setup", + mlen, cost, mlen); + } } + last_match_pos = firstMatch.len; + { int addLit; + for (addLit = 1; addLit <= TRAILING_LITERALS; addLit ++) { + opt[last_match_pos+addLit].mlen = 1; /* literal */ + opt[last_match_pos+addLit].off = 0; + opt[last_match_pos+addLit].litlen = addLit; + opt[last_match_pos+addLit].price = opt[last_match_pos].price + LZ4HC_literalsPrice(addLit); + DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i) -- initial setup", + last_match_pos+addLit, opt[last_match_pos+addLit].price, addLit); + } } + + /* check further positions */ + for (cur = 1; cur < last_match_pos; cur++) { + const BYTE* const curPtr = ip + cur; + LZ4HC_match_t newMatch; + + if (curPtr > mflimit) break; + DEBUGLOG(7, "rPos:%u[%u] vs [%u]%u", + cur, opt[cur].price, opt[cur+1].price, cur+1); + if (fullUpdate) { + /* not useful to search here if next position has same (or lower) cost */ + if ( (opt[cur+1].price <= opt[cur].price) + /* in some cases, next position has same cost, but cost rises sharply after, so a small match would still be beneficial */ + && (opt[cur+MINMATCH].price < opt[cur].price + 3/*min seq price*/) ) + continue; + } else { + /* not useful to search here if next position has same (or lower) cost */ + if (opt[cur+1].price <= opt[cur].price) continue; + } + + DEBUGLOG(7, "search at rPos:%u", cur); + if (fullUpdate) + newMatch = LZ4HC_FindLongerMatch(ctx, curPtr, matchlimit, MINMATCH-1, nbSearches, dict, favorDecSpeed); + else + /* only test matches of minimum length; slightly faster, but misses a few bytes */ + newMatch = LZ4HC_FindLongerMatch(ctx, curPtr, matchlimit, last_match_pos - cur, nbSearches, dict, favorDecSpeed); + if (!newMatch.len) continue; + + if ( ((size_t)newMatch.len > sufficient_len) + || (newMatch.len + cur >= LZ4_OPT_NUM) ) { + /* immediate encoding */ + best_mlen = newMatch.len; + best_off = newMatch.off; + last_match_pos = cur + 1; + goto encode; + } + + /* before match : set price with literals at beginning */ + { int const baseLitlen = opt[cur].litlen; + int litlen; + for (litlen = 1; litlen < MINMATCH; litlen++) { + int const price = opt[cur].price - LZ4HC_literalsPrice(baseLitlen) + LZ4HC_literalsPrice(baseLitlen+litlen); + int const pos = cur + litlen; + if (price < opt[pos].price) { + opt[pos].mlen = 1; /* literal */ + opt[pos].off = 0; + opt[pos].litlen = baseLitlen+litlen; + opt[pos].price = price; + DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i)", + pos, price, opt[pos].litlen); + } } } + + /* set prices using match at position = cur */ + { int const matchML = newMatch.len; + int ml = MINMATCH; + + assert(cur + newMatch.len < LZ4_OPT_NUM); + for ( ; ml <= matchML ; ml++) { + int const pos = cur + ml; + int const offset = newMatch.off; + int price; + int ll; + DEBUGLOG(7, "testing price rPos %i (last_match_pos=%i)", + pos, last_match_pos); + if (opt[cur].mlen == 1) { + ll = opt[cur].litlen; + price = ((cur > ll) ? opt[cur - ll].price : 0) + + LZ4HC_sequencePrice(ll, ml); + } else { + ll = 0; + price = opt[cur].price + LZ4HC_sequencePrice(0, ml); + } + + assert((U32)favorDecSpeed <= 1); + if (pos > last_match_pos+TRAILING_LITERALS + || price <= opt[pos].price - (int)favorDecSpeed) { + DEBUGLOG(7, "rPos:%3i => price:%3i (matchlen=%i)", + pos, price, ml); + assert(pos < LZ4_OPT_NUM); + if ( (ml == matchML) /* last pos of last match */ + && (last_match_pos < pos) ) + last_match_pos = pos; + opt[pos].mlen = ml; + opt[pos].off = offset; + opt[pos].litlen = ll; + opt[pos].price = price; + } } } + /* complete following positions with literals */ + { int addLit; + for (addLit = 1; addLit <= TRAILING_LITERALS; addLit ++) { + opt[last_match_pos+addLit].mlen = 1; /* literal */ + opt[last_match_pos+addLit].off = 0; + opt[last_match_pos+addLit].litlen = addLit; + opt[last_match_pos+addLit].price = opt[last_match_pos].price + LZ4HC_literalsPrice(addLit); + DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i)", last_match_pos+addLit, opt[last_match_pos+addLit].price, addLit); + } } + } /* for (cur = 1; cur <= last_match_pos; cur++) */ + + assert(last_match_pos < LZ4_OPT_NUM + TRAILING_LITERALS); + best_mlen = opt[last_match_pos].mlen; + best_off = opt[last_match_pos].off; + cur = last_match_pos - best_mlen; + + encode: /* cur, last_match_pos, best_mlen, best_off must be set */ + assert(cur < LZ4_OPT_NUM); + assert(last_match_pos >= 1); /* == 1 when only one candidate */ + DEBUGLOG(6, "reverse traversal, looking for shortest path (last_match_pos=%i)", last_match_pos); + { int candidate_pos = cur; + int selected_matchLength = best_mlen; + int selected_offset = best_off; + while (1) { /* from end to beginning */ + int const next_matchLength = opt[candidate_pos].mlen; /* can be 1, means literal */ + int const next_offset = opt[candidate_pos].off; + DEBUGLOG(7, "pos %i: sequence length %i", candidate_pos, selected_matchLength); + opt[candidate_pos].mlen = selected_matchLength; + opt[candidate_pos].off = selected_offset; + selected_matchLength = next_matchLength; + selected_offset = next_offset; + if (next_matchLength > candidate_pos) break; /* last match elected, first match to encode */ + assert(next_matchLength > 0); /* can be 1, means literal */ + candidate_pos -= next_matchLength; + } } + + /* encode all recorded sequences in order */ + { int rPos = 0; /* relative position (to ip) */ + while (rPos < last_match_pos) { + int const ml = opt[rPos].mlen; + int const offset = opt[rPos].off; + if (ml == 1) { ip++; rPos++; continue; } /* literal; note: can end up with several literals, in which case, skip them */ + rPos += ml; + assert(ml >= MINMATCH); + assert((offset >= 1) && (offset <= LZ4_DISTANCE_MAX)); + opSaved = op; + if ( LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ip - offset, limit, oend) ) /* updates ip, op and anchor */ + goto _dest_overflow; + } } + } /* while (ip <= mflimit) */ + + _last_literals: + /* Encode Last Literals */ + { size_t lastRunSize = (size_t)(iend - anchor); /* literals */ + size_t litLength = (lastRunSize + 255 - RUN_MASK) / 255; + size_t const totalSize = 1 + litLength + lastRunSize; + if (limit == fillOutput) oend += LASTLITERALS; /* restore correct value */ + if (limit && (op + totalSize > oend)) { + if (limit == limitedOutput) return 0; /* Check output limit */ + /* adapt lastRunSize to fill 'dst' */ + lastRunSize = (size_t)(oend - op) - 1; + litLength = (lastRunSize + 255 - RUN_MASK) / 255; + lastRunSize -= litLength; + } + ip = anchor + lastRunSize; + + if (lastRunSize >= RUN_MASK) { + size_t accumulator = lastRunSize - RUN_MASK; + *op++ = (RUN_MASK << ML_BITS); + for(; accumulator >= 255 ; accumulator -= 255) *op++ = 255; + *op++ = (BYTE) accumulator; + } else { + *op++ = (BYTE)(lastRunSize << ML_BITS); + } + memcpy(op, anchor, lastRunSize); + op += lastRunSize; + } + + /* End */ + *srcSizePtr = (int) (((const char*)ip) - source); + return (int) ((char*)op-dst); + + _dest_overflow: + if (limit == fillOutput) { + op = opSaved; /* restore correct out pointer */ + goto _last_literals; + } + return 0; + } diff --git a/common/lz4/lz4hc.h b/common/lz4/lz4hc.h new file mode 100644 index 000000000..44e35bbf6 --- /dev/null +++ b/common/lz4/lz4hc.h @@ -0,0 +1,438 @@ +/* + LZ4 HC - High Compression Mode of LZ4 + Header File + Copyright (C) 2011-2017, Yann Collet. + BSD 2-Clause License (http://www.opensource.org/licenses/bsd-license.php) + + Redistribution and use in source and binary forms, with or without + modification, are permitted provided that the following conditions are + met: + + * Redistributions of source code must retain the above copyright + notice, this list of conditions and the following disclaimer. + * Redistributions in binary form must reproduce the above + copyright notice, this list of conditions and the following disclaimer + in the documentation and/or other materials provided with the + distribution. + + THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS + "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT + LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR + A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT + OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, + SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT + LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, + DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY + THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT + (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE + OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + + You can contact the author at : + - LZ4 source repository : https://github.com/lz4/lz4 + - LZ4 public forum : https://groups.google.com/forum/#!forum/lz4c +*/ +#ifndef LZ4_HC_H_19834876238432 +#define LZ4_HC_H_19834876238432 + +#if defined (__cplusplus) +extern "C" { +#endif + +/* --- Dependency --- */ +/* note : lz4hc requires lz4.h/lz4.c for compilation */ +#include "lz4.h" /* stddef, LZ4LIB_API, LZ4_DEPRECATED */ + + +/* --- Useful constants --- */ +#define LZ4HC_CLEVEL_MIN 3 +#define LZ4HC_CLEVEL_DEFAULT 9 +#define LZ4HC_CLEVEL_OPT_MIN 10 +#define LZ4HC_CLEVEL_MAX 12 + + +/*-************************************ + * Block Compression + **************************************/ +/*! LZ4_compress_HC() : + * Compress data from `src` into `dst`, using the powerful but slower "HC" algorithm. + * `dst` must be already allocated. + * Compression is guaranteed to succeed if `dstCapacity >= LZ4_compressBound(srcSize)` (see "lz4.h") + * Max supported `srcSize` value is LZ4_MAX_INPUT_SIZE (see "lz4.h") + * `compressionLevel` : any value between 1 and LZ4HC_CLEVEL_MAX will work. + * Values > LZ4HC_CLEVEL_MAX behave the same as LZ4HC_CLEVEL_MAX. + * @return : the number of bytes written into 'dst' + * or 0 if compression fails. + */ +LZ4LIB_API int LZ4_compress_HC (const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel); + + +/* Note : + * Decompression functions are provided within "lz4.h" (BSD license) + */ + + +/*! LZ4_compress_HC_extStateHC() : + * Same as LZ4_compress_HC(), but using an externally allocated memory segment for `state`. + * `state` size is provided by LZ4_sizeofStateHC(). + * Memory segment must be aligned on 8-bytes boundaries (which a normal malloc() should do properly). + */ +LZ4LIB_API int LZ4_sizeofStateHC(void); +LZ4LIB_API int LZ4_compress_HC_extStateHC(void* stateHC, const char* src, char* dst, int srcSize, int maxDstSize, int compressionLevel); + + +/*! LZ4_compress_HC_destSize() : v1.9.0+ + * Will compress as much data as possible from `src` + * to fit into `targetDstSize` budget. + * Result is provided in 2 parts : + * @return : the number of bytes written into 'dst' (necessarily <= targetDstSize) + * or 0 if compression fails. + * `srcSizePtr` : on success, *srcSizePtr is updated to indicate how much bytes were read from `src` + */ +LZ4LIB_API int LZ4_compress_HC_destSize(void* stateHC, + const char* src, char* dst, + int* srcSizePtr, int targetDstSize, + int compressionLevel); + + +/*-************************************ + * Streaming Compression + * Bufferless synchronous API + **************************************/ + typedef union LZ4_streamHC_u LZ4_streamHC_t; /* incomplete type (defined later) */ + +/*! LZ4_createStreamHC() and LZ4_freeStreamHC() : + * These functions create and release memory for LZ4 HC streaming state. + * Newly created states are automatically initialized. + * A same state can be used multiple times consecutively, + * starting with LZ4_resetStreamHC_fast() to start a new stream of blocks. + */ +LZ4LIB_API LZ4_streamHC_t* LZ4_createStreamHC(void); +LZ4LIB_API int LZ4_freeStreamHC (LZ4_streamHC_t* streamHCPtr); + +/* + These functions compress data in successive blocks of any size, + using previous blocks as dictionary, to improve compression ratio. + One key assumption is that previous blocks (up to 64 KB) remain read-accessible while compressing next blocks. + There is an exception for ring buffers, which can be smaller than 64 KB. + Ring-buffer scenario is automatically detected and handled within LZ4_compress_HC_continue(). + + Before starting compression, state must be allocated and properly initialized. + LZ4_createStreamHC() does both, though compression level is set to LZ4HC_CLEVEL_DEFAULT. + + Selecting the compression level can be done with LZ4_resetStreamHC_fast() (starts a new stream) + or LZ4_setCompressionLevel() (anytime, between blocks in the same stream) (experimental). + LZ4_resetStreamHC_fast() only works on states which have been properly initialized at least once, + which is automatically the case when state is created using LZ4_createStreamHC(). + + After reset, a first "fictional block" can be designated as initial dictionary, + using LZ4_loadDictHC() (Optional). + + Invoke LZ4_compress_HC_continue() to compress each successive block. + The number of blocks is unlimited. + Previous input blocks, including initial dictionary when present, + must remain accessible and unmodified during compression. + + It's allowed to update compression level anytime between blocks, + using LZ4_setCompressionLevel() (experimental). + + 'dst' buffer should be sized to handle worst case scenarios + (see LZ4_compressBound(), it ensures compression success). + In case of failure, the API does not guarantee recovery, + so the state _must_ be reset. + To ensure compression success + whenever `dst` buffer size cannot be made >= LZ4_compressBound(), + consider using LZ4_compress_HC_continue_destSize(). + + Whenever previous input blocks can't be preserved unmodified in-place during compression of next blocks, + it's possible to copy the last blocks into a more stable memory space, using LZ4_saveDictHC(). + Return value of LZ4_saveDictHC() is the size of dictionary effectively saved into 'safeBuffer' (<= 64 KB) + + After completing a streaming compression, + it's possible to start a new stream of blocks, using the same LZ4_streamHC_t state, + just by resetting it, using LZ4_resetStreamHC_fast(). +*/ + +LZ4LIB_API void LZ4_resetStreamHC_fast(LZ4_streamHC_t* streamHCPtr, int compressionLevel); /* v1.9.0+ */ +LZ4LIB_API int LZ4_loadDictHC (LZ4_streamHC_t* streamHCPtr, const char* dictionary, int dictSize); + +LZ4LIB_API int LZ4_compress_HC_continue (LZ4_streamHC_t* streamHCPtr, + const char* src, char* dst, + int srcSize, int maxDstSize); + +/*! LZ4_compress_HC_continue_destSize() : v1.9.0+ + * Similar to LZ4_compress_HC_continue(), + * but will read as much data as possible from `src` + * to fit into `targetDstSize` budget. + * Result is provided into 2 parts : + * @return : the number of bytes written into 'dst' (necessarily <= targetDstSize) + * or 0 if compression fails. + * `srcSizePtr` : on success, *srcSizePtr will be updated to indicate how much bytes were read from `src`. + * Note that this function may not consume the entire input. + */ +LZ4LIB_API int LZ4_compress_HC_continue_destSize(LZ4_streamHC_t* LZ4_streamHCPtr, + const char* src, char* dst, + int* srcSizePtr, int targetDstSize); + +LZ4LIB_API int LZ4_saveDictHC (LZ4_streamHC_t* streamHCPtr, char* safeBuffer, int maxDictSize); + + + +/*^********************************************** + * !!!!!! STATIC LINKING ONLY !!!!!! + ***********************************************/ + +/*-****************************************************************** + * PRIVATE DEFINITIONS : + * Do not use these definitions directly. + * They are merely exposed to allow static allocation of `LZ4_streamHC_t`. + * Declare an `LZ4_streamHC_t` directly, rather than any type below. + * Even then, only do so in the context of static linking, as definitions may change between versions. + ********************************************************************/ + +#define LZ4HC_DICTIONARY_LOGSIZE 16 +#define LZ4HC_MAXD (1<<LZ4HC_DICTIONARY_LOGSIZE) +#define LZ4HC_MAXD_MASK (LZ4HC_MAXD - 1) + +#define LZ4HC_HASH_LOG 15 +#define LZ4HC_HASHTABLESIZE (1 << LZ4HC_HASH_LOG) +#define LZ4HC_HASH_MASK (LZ4HC_HASHTABLESIZE - 1) + + +#if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) +#include <stdint.h> + +typedef struct LZ4HC_CCtx_internal LZ4HC_CCtx_internal; +struct LZ4HC_CCtx_internal +{ + uint32_t hashTable[LZ4HC_HASHTABLESIZE]; + uint16_t chainTable[LZ4HC_MAXD]; + const uint8_t* end; /* next block here to continue on current prefix */ + const uint8_t* base; /* All index relative to this position */ + const uint8_t* dictBase; /* alternate base for extDict */ + uint32_t dictLimit; /* below that point, need extDict */ + uint32_t lowLimit; /* below that point, no more dict */ + uint32_t nextToUpdate; /* index from which to continue dictionary update */ + short compressionLevel; + int8_t favorDecSpeed; /* favor decompression speed if this flag set, + otherwise, favor compression ratio */ + int8_t dirty; /* stream has to be fully reset if this flag is set */ + const LZ4HC_CCtx_internal* dictCtx; +}; + +#else + +typedef struct LZ4HC_CCtx_internal LZ4HC_CCtx_internal; +struct LZ4HC_CCtx_internal +{ + unsigned int hashTable[LZ4HC_HASHTABLESIZE]; + unsigned short chainTable[LZ4HC_MAXD]; + const unsigned char* end; /* next block here to continue on current prefix */ + const unsigned char* base; /* All index relative to this position */ + const unsigned char* dictBase; /* alternate base for extDict */ + unsigned int dictLimit; /* below that point, need extDict */ + unsigned int lowLimit; /* below that point, no more dict */ + unsigned int nextToUpdate; /* index from which to continue dictionary update */ + short compressionLevel; + char favorDecSpeed; /* favor decompression speed if this flag set, + otherwise, favor compression ratio */ + char dirty; /* stream has to be fully reset if this flag is set */ + const LZ4HC_CCtx_internal* dictCtx; +}; + +#endif + + +/* Do not use these definitions directly ! + * Declare or allocate an LZ4_streamHC_t instead. + */ +#define LZ4_STREAMHCSIZE (4*LZ4HC_HASHTABLESIZE + 2*LZ4HC_MAXD + 56 + ((sizeof(void*)==16) ? 56 : 0) /* AS400*/ ) /* 262200 or 262256*/ +#define LZ4_STREAMHCSIZE_SIZET (LZ4_STREAMHCSIZE / sizeof(size_t)) +union LZ4_streamHC_u { + size_t table[LZ4_STREAMHCSIZE_SIZET]; + LZ4HC_CCtx_internal internal_donotuse; +}; /* previously typedef'd to LZ4_streamHC_t */ + +/* LZ4_streamHC_t : + * This structure allows static allocation of LZ4 HC streaming state. + * This can be used to allocate statically, on state, or as part of a larger structure. + * + * Such state **must** be initialized using LZ4_initStreamHC() before first use. + * + * Note that invoking LZ4_initStreamHC() is not required when + * the state was created using LZ4_createStreamHC() (which is recommended). + * Using the normal builder, a newly created state is automatically initialized. + * + * Static allocation shall only be used in combination with static linking. + */ + +/* LZ4_initStreamHC() : v1.9.0+ + * Required before first use of a statically allocated LZ4_streamHC_t. + * Before v1.9.0 : use LZ4_resetStreamHC() instead + */ +LZ4LIB_API LZ4_streamHC_t* LZ4_initStreamHC (void* buffer, size_t size); + + +/*-************************************ +* Deprecated Functions +**************************************/ +/* see lz4.h LZ4_DISABLE_DEPRECATE_WARNINGS to turn off deprecation warnings */ + +/* deprecated compression functions */ +LZ4_DEPRECATED("use LZ4_compress_HC() instead") LZ4LIB_API int LZ4_compressHC (const char* source, char* dest, int inputSize); +LZ4_DEPRECATED("use LZ4_compress_HC() instead") LZ4LIB_API int LZ4_compressHC_limitedOutput (const char* source, char* dest, int inputSize, int maxOutputSize); +LZ4_DEPRECATED("use LZ4_compress_HC() instead") LZ4LIB_API int LZ4_compressHC2 (const char* source, char* dest, int inputSize, int compressionLevel); +LZ4_DEPRECATED("use LZ4_compress_HC() instead") LZ4LIB_API int LZ4_compressHC2_limitedOutput(const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel); +LZ4_DEPRECATED("use LZ4_compress_HC_extStateHC() instead") LZ4LIB_API int LZ4_compressHC_withStateHC (void* state, const char* source, char* dest, int inputSize); +LZ4_DEPRECATED("use LZ4_compress_HC_extStateHC() instead") LZ4LIB_API int LZ4_compressHC_limitedOutput_withStateHC (void* state, const char* source, char* dest, int inputSize, int maxOutputSize); +LZ4_DEPRECATED("use LZ4_compress_HC_extStateHC() instead") LZ4LIB_API int LZ4_compressHC2_withStateHC (void* state, const char* source, char* dest, int inputSize, int compressionLevel); +LZ4_DEPRECATED("use LZ4_compress_HC_extStateHC() instead") LZ4LIB_API int LZ4_compressHC2_limitedOutput_withStateHC(void* state, const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel); +LZ4_DEPRECATED("use LZ4_compress_HC_continue() instead") LZ4LIB_API int LZ4_compressHC_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* source, char* dest, int inputSize); +LZ4_DEPRECATED("use LZ4_compress_HC_continue() instead") LZ4LIB_API int LZ4_compressHC_limitedOutput_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* source, char* dest, int inputSize, int maxOutputSize); + +/* Obsolete streaming functions; degraded functionality; do not use! + * + * In order to perform streaming compression, these functions depended on data + * that is no longer tracked in the state. They have been preserved as well as + * possible: using them will still produce a correct output. However, use of + * LZ4_slideInputBufferHC() will truncate the history of the stream, rather + * than preserve a window-sized chunk of history. + */ +LZ4_DEPRECATED("use LZ4_createStreamHC() instead") LZ4LIB_API void* LZ4_createHC (const char* inputBuffer); +LZ4_DEPRECATED("use LZ4_saveDictHC() instead") LZ4LIB_API char* LZ4_slideInputBufferHC (void* LZ4HC_Data); +LZ4_DEPRECATED("use LZ4_freeStreamHC() instead") LZ4LIB_API int LZ4_freeHC (void* LZ4HC_Data); +LZ4_DEPRECATED("use LZ4_compress_HC_continue() instead") LZ4LIB_API int LZ4_compressHC2_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int compressionLevel); +LZ4_DEPRECATED("use LZ4_compress_HC_continue() instead") LZ4LIB_API int LZ4_compressHC2_limitedOutput_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel); +LZ4_DEPRECATED("use LZ4_createStreamHC() instead") LZ4LIB_API int LZ4_sizeofStreamStateHC(void); +LZ4_DEPRECATED("use LZ4_initStreamHC() instead") LZ4LIB_API int LZ4_resetStreamStateHC(void* state, char* inputBuffer); + + +/* LZ4_resetStreamHC() is now replaced by LZ4_initStreamHC(). + * The intention is to emphasize the difference with LZ4_resetStreamHC_fast(), + * which is now the recommended function to start a new stream of blocks, + * but cannot be used to initialize a memory segment containing arbitrary garbage data. + * + * It is recommended to switch to LZ4_initStreamHC(). + * LZ4_resetStreamHC() will generate deprecation warnings in a future version. + */ +LZ4LIB_API void LZ4_resetStreamHC (LZ4_streamHC_t* streamHCPtr, int compressionLevel); + + +#if defined (__cplusplus) +} +#endif + +#endif /* LZ4_HC_H_19834876238432 */ + + +/*-************************************************** + * !!!!! STATIC LINKING ONLY !!!!! + * Following definitions are considered experimental. + * They should not be linked from DLL, + * as there is no guarantee of API stability yet. + * Prototypes will be promoted to "stable" status + * after successfull usage in real-life scenarios. + ***************************************************/ +#ifdef LZ4_HC_STATIC_LINKING_ONLY /* protection macro */ +#ifndef LZ4_HC_SLO_098092834 +#define LZ4_HC_SLO_098092834 + +#define LZ4_STATIC_LINKING_ONLY /* LZ4LIB_STATIC_API */ +#include "lz4.h" + +#if defined (__cplusplus) +extern "C" { +#endif + +/*! LZ4_setCompressionLevel() : v1.8.0+ (experimental) + * It's possible to change compression level + * between successive invocations of LZ4_compress_HC_continue*() + * for dynamic adaptation. + */ +LZ4LIB_STATIC_API void LZ4_setCompressionLevel( + LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel); + +/*! LZ4_favorDecompressionSpeed() : v1.8.2+ (experimental) + * Opt. Parser will favor decompression speed over compression ratio. + * Only applicable to levels >= LZ4HC_CLEVEL_OPT_MIN. + */ +LZ4LIB_STATIC_API void LZ4_favorDecompressionSpeed( + LZ4_streamHC_t* LZ4_streamHCPtr, int favor); + +/*! LZ4_resetStreamHC_fast() : v1.9.0+ + * When an LZ4_streamHC_t is known to be in a internally coherent state, + * it can often be prepared for a new compression with almost no work, only + * sometimes falling back to the full, expensive reset that is always required + * when the stream is in an indeterminate state (i.e., the reset performed by + * LZ4_resetStreamHC()). + * + * LZ4_streamHCs are guaranteed to be in a valid state when: + * - returned from LZ4_createStreamHC() + * - reset by LZ4_resetStreamHC() + * - memset(stream, 0, sizeof(LZ4_streamHC_t)) + * - the stream was in a valid state and was reset by LZ4_resetStreamHC_fast() + * - the stream was in a valid state and was then used in any compression call + * that returned success + * - the stream was in an indeterminate state and was used in a compression + * call that fully reset the state (LZ4_compress_HC_extStateHC()) and that + * returned success + * + * Note: + * A stream that was last used in a compression call that returned an error + * may be passed to this function. However, it will be fully reset, which will + * clear any existing history and settings from the context. + */ +LZ4LIB_STATIC_API void LZ4_resetStreamHC_fast( + LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel); + +/*! LZ4_compress_HC_extStateHC_fastReset() : + * A variant of LZ4_compress_HC_extStateHC(). + * + * Using this variant avoids an expensive initialization step. It is only safe + * to call if the state buffer is known to be correctly initialized already + * (see above comment on LZ4_resetStreamHC_fast() for a definition of + * "correctly initialized"). From a high level, the difference is that this + * function initializes the provided state with a call to + * LZ4_resetStreamHC_fast() while LZ4_compress_HC_extStateHC() starts with a + * call to LZ4_resetStreamHC(). + */ +LZ4LIB_STATIC_API int LZ4_compress_HC_extStateHC_fastReset ( + void* state, + const char* src, char* dst, + int srcSize, int dstCapacity, + int compressionLevel); + +/*! LZ4_attach_HC_dictionary() : + * This is an experimental API that allows for the efficient use of a + * static dictionary many times. + * + * Rather than re-loading the dictionary buffer into a working context before + * each compression, or copying a pre-loaded dictionary's LZ4_streamHC_t into a + * working LZ4_streamHC_t, this function introduces a no-copy setup mechanism, + * in which the working stream references the dictionary stream in-place. + * + * Several assumptions are made about the state of the dictionary stream. + * Currently, only streams which have been prepared by LZ4_loadDictHC() should + * be expected to work. + * + * Alternatively, the provided dictionary stream pointer may be NULL, in which + * case any existing dictionary stream is unset. + * + * A dictionary should only be attached to a stream without any history (i.e., + * a stream that has just been reset). + * + * The dictionary will remain attached to the working stream only for the + * current stream session. Calls to LZ4_resetStreamHC(_fast) will remove the + * dictionary context association from the working stream. The dictionary + * stream (and source buffer) must remain in-place / accessible / unchanged + * through the lifetime of the stream session. + */ +LZ4LIB_STATIC_API void LZ4_attach_HC_dictionary( + LZ4_streamHC_t *working_stream, + const LZ4_streamHC_t *dictionary_stream); + +#if defined (__cplusplus) +} +#endif + +#endif /* LZ4_HC_SLO_098092834 */ +#endif /* LZ4_HC_STATIC_LINKING_ONLY */ diff --git a/common_fpga/fpga.h b/common_fpga/fpga.h index f1b42ab2b..c8390ff7e 100644 --- a/common_fpga/fpga.h +++ b/common_fpga/fpga.h @@ -13,7 +13,7 @@ #define FPGA_BITSTREAM_FIXED_HEADER_SIZE sizeof(bitparse_fixed_header) #define FPGA_INTERLEAVE_SIZE 288 #define FPGA_CONFIG_SIZE 42336L // our current fpga_[lh]f.bit files are 42175 bytes. Rounded up to next multiple of FPGA_INTERLEAVE_SIZE - +#define FPGA_RING_BUFFER_BYTES (1024 * 39) #define FPGA_TRACE_SIZE 3072 static const uint8_t bitparse_fixed_header[] = {0x00, 0x09, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x0f, 0xf0, 0x00, 0x00, 0x01}; From cb032864203ba80187e0616b1622b6d7068e2aef Mon Sep 17 00:00:00 2001 From: slurdge <slurdge@slurdge.org> Date: Wed, 3 Jun 2020 16:07:35 +0200 Subject: [PATCH 289/527] fpga_compress uses lz4 --- tools/fpga_compress/Makefile | 12 +- tools/fpga_compress/fpga_compress.c | 209 ++++++++++------------------ 2 files changed, 78 insertions(+), 143 deletions(-) diff --git a/tools/fpga_compress/Makefile b/tools/fpga_compress/Makefile index 5452f9083..26b34ba61 100644 --- a/tools/fpga_compress/Makefile +++ b/tools/fpga_compress/Makefile @@ -1,13 +1,14 @@ -MYSRCPATHS = +MYSRCPATHS = MYINCLUDES = -I../../common_fpga MYCFLAGS = -std=c99 -D_ISOC99_SOURCE MYDEFS = MYSRCS = MYLIBS = -ZLIBPATH = ../../common/zlib -MYINCLUDES += -I$(ZLIBPATH) -MYLIBS += $(OBJDIR)/libz.a +MYSRCPATHS += ../../common/lz4 +MYINCLUDES += -I../../common/lz4 +MYSRCS += lz4hc.c lz4.c +MYCFLAGS += -DLZ4_MEMORY_USAGE=20 -Wno-redundant-decls -Wno-old-style-definition -Wno-missing-prototypes -Wno-missing-declarations BINS = fpga_compress @@ -16,9 +17,6 @@ ROOT_DIR:=$(dir $(realpath $(lastword $(MAKEFILE_LIST)))) include ../../Makefile.host fpga_compress: $(OBJDIR)/fpga_compress.o $(MYOBJS) -$(OBJDIR)/libz.a: - $(info [*] MAKE zlib) - $(Q)$(MAKE) --no-print-directory -C $(ZLIBPATH) OBJDIR=$(ROOT_DIR)$(OBJDIR) BINDIR=$(ROOT_DIR)$(OBJDIR) all tarbin: $(BINS) $(info [=] TAR ../proxmark3-$(platform)-bin.tar) diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index a99cc3fee..fc136523d 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -7,7 +7,7 @@ //----------------------------------------------------------------------------- // Compression tool for FPGA config files. Compress several *.bit files at // compile time. Decompression is done at run time (see fpgaloader.c). -// This uses the zlib library tuned to this specific case. The small file sizes +// This uses the lz4 library tuned to this specific case. The small file sizes // allow to use "insane" parameters for optimum compression ratio. //----------------------------------------------------------------------------- @@ -15,28 +15,11 @@ #include <stdlib.h> #include <libgen.h> #include <string.h> +#include <stdint.h> +#include <stdbool.h> +#include <inttypes.h> #include "fpga.h" -#include "zlib.h" - -// zlib configuration -#define COMPRESS_LEVEL 9 // use best possible compression -#define COMPRESS_WINDOW_BITS 15 // default = max = 15 for a window of 2^15 = 32KBytes -#define COMPRESS_MEM_LEVEL 9 // determines the amount of memory allocated during compression. Default = 8. - -/* COMPRESS_STRATEGY can be - Z_DEFAULT_STRATEGY (the default), - Z_FILTERED (more huffmann, less string matching), - Z_HUFFMAN_ONLY (huffman only, no string matching) - Z_RLE (distances limited to one) - Z_FIXED (prevents the use of dynamic Huffman codes) -*/ - -#define COMPRESS_STRATEGY Z_DEFAULT_STRATEGY -// zlib tuning parameters: -#define COMPRESS_GOOD_LENGTH 258 -#define COMPRESS_MAX_LAZY 258 -#define COMPRESS_MAX_NICE_LENGTH 258 -#define COMPRESS_MAX_CHAIN 8192 +#include "lz4hc.h" #define HARDNESTED_TABLE_SIZE (uint32_t)(sizeof(uint32_t) * ((1L<<19)+1)) @@ -52,18 +35,6 @@ static void usage(void) { } -static voidpf fpga_deflate_malloc(voidpf opaque, uInt items, uInt size) { - (void) opaque; - return calloc(items * size, sizeof(uint8_t)); -} - - -static void fpga_deflate_free(voidpf opaque, voidpf address) { - (void) opaque; - free(address); -} - - static bool all_feof(FILE *infile[], uint8_t num_infiles) { for (uint16_t i = 0; i < num_infiles; i++) { if (!feof(infile[i])) { @@ -76,10 +47,8 @@ static bool all_feof(FILE *infile[], uint8_t num_infiles) { static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile, bool hardnested_mode) { uint8_t *fpga_config; - uint32_t i; - int32_t ret; + //int32_t ret; uint8_t c; - z_stream compressed_fpga_stream; if (hardnested_mode) { fpga_config = calloc(num_infiles * HARDNESTED_TABLE_SIZE, sizeof(uint8_t)); @@ -87,10 +56,10 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile, boo fpga_config = calloc(num_infiles * FPGA_CONFIG_SIZE, sizeof(uint8_t)); } // read the input files. Interleave them into fpga_config[] - i = 0; + uint32_t total_size = 0; do { - if (i >= num_infiles * (hardnested_mode ? HARDNESTED_TABLE_SIZE : FPGA_CONFIG_SIZE)) { + if (total_size >= num_infiles * (hardnested_mode ? HARDNESTED_TABLE_SIZE : FPGA_CONFIG_SIZE)) { if (hardnested_mode) { fprintf(stderr, "Input file too big (> %" PRIu32 " bytes). This is probably not a hardnested bitflip state table.\n" @@ -112,53 +81,47 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile, boo for (uint16_t k = 0; k < FPGA_INTERLEAVE_SIZE; k++) { c = (uint8_t)fgetc(infile[j]); if (!feof(infile[j])) { - fpga_config[i++] = c; + fpga_config[total_size++] = c; } else if (num_infiles > 1) { - fpga_config[i++] = '\0'; + fpga_config[total_size++] = '\0'; } } } } while (!all_feof(infile, num_infiles)); - // initialize zlib structures - compressed_fpga_stream.next_in = fpga_config; - compressed_fpga_stream.avail_in = i; - compressed_fpga_stream.zalloc = fpga_deflate_malloc; - compressed_fpga_stream.zfree = fpga_deflate_free; - compressed_fpga_stream.opaque = Z_NULL; + uint32_t buffer_size = FPGA_RING_BUFFER_BYTES; + if (num_infiles == 1) + buffer_size = 1024*1024; //1M for now + uint32_t outsize_max = LZ4_compressBound(buffer_size); - ret = deflateInit2(&compressed_fpga_stream, - COMPRESS_LEVEL, - Z_DEFLATED, - COMPRESS_WINDOW_BITS, - COMPRESS_MEM_LEVEL, - COMPRESS_STRATEGY); + char *outbuf = calloc(outsize_max, sizeof(char)); - // estimate the size of the compressed output - uint32_t outsize_max = deflateBound(&compressed_fpga_stream, compressed_fpga_stream.avail_in); - uint8_t *outbuf = calloc(outsize_max, sizeof(uint8_t)); - compressed_fpga_stream.next_out = outbuf; - compressed_fpga_stream.avail_out = outsize_max; + LZ4_streamHC_t* lz4_streamhc = LZ4_createStreamHC(); + LZ4_resetStreamHC_fast(lz4_streamhc, LZ4HC_CLEVEL_MAX); - if (ret == Z_OK) { - ret = deflateTune(&compressed_fpga_stream, - COMPRESS_GOOD_LENGTH, - COMPRESS_MAX_LAZY, - COMPRESS_MAX_NICE_LENGTH, - COMPRESS_MAX_CHAIN); + int current_in = 0; + int current_out = 0; + char * ring_buffer = calloc(buffer_size, sizeof(char)); + while (current_in < total_size) { + int bytes_to_copy = FPGA_RING_BUFFER_BYTES; + if (total_size - current_in < FPGA_RING_BUFFER_BYTES) + bytes_to_copy = total_size - current_in; + memcpy(ring_buffer, fpga_config + current_in, bytes_to_copy); + int cmp_bytes = LZ4_compress_HC_continue(lz4_streamhc, ring_buffer, outbuf, bytes_to_copy, outsize_max); + fwrite(&cmp_bytes, sizeof(int), 1, outfile); + fwrite(outbuf, sizeof(char), cmp_bytes, outfile); + current_in += bytes_to_copy; + current_out += cmp_bytes; } - if (ret == Z_OK) { - ret = deflate(&compressed_fpga_stream, Z_FINISH); - } + free(ring_buffer); - fprintf(stdout, "compressed %u input bytes to %lu output bytes\n", i, compressed_fpga_stream.total_out); + fprintf(stdout, "compressed %u input bytes to %u output bytes\n", total_size, current_out); - if (ret != Z_STREAM_END) { - fprintf(stderr, "Error in deflate(): %d %s\n", ret, compressed_fpga_stream.msg); + if (current_out == 0) { + fprintf(stderr, "Error in lz4"); free(outbuf); - deflateEnd(&compressed_fpga_stream); for (uint16_t j = 0; j < num_infiles; j++) { fclose(infile[j]); } @@ -167,90 +130,64 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile, boo return (EXIT_FAILURE); } - for (i = 0; i < compressed_fpga_stream.total_out; i++) { - fputc(outbuf[i], outfile); - } - free(outbuf); - deflateEnd(&compressed_fpga_stream); + for (uint16_t j = 0; j < num_infiles; j++) { fclose(infile[j]); } fclose(outfile); + LZ4_freeStreamHC(lz4_streamhc); free(fpga_config); return (EXIT_SUCCESS); } +typedef struct lz4_stream_s { + LZ4_streamDecode_t* lz4StreamDecode; + char * next_in; + int avail_in; +} lz4_stream; static int zlib_decompress(FILE *infile, FILE *outfile) { -#define DECOMPRESS_BUF_SIZE 1024 - uint8_t outbuf[DECOMPRESS_BUF_SIZE]; - uint8_t inbuf[DECOMPRESS_BUF_SIZE]; - int32_t ret; - z_stream compressed_fpga_stream; + LZ4_streamDecode_t lz4StreamDecode_body = { 0 }; + char outbuf[FPGA_RING_BUFFER_BYTES]; - // initialize zlib structures - compressed_fpga_stream.next_in = inbuf; - compressed_fpga_stream.avail_in = 0; - compressed_fpga_stream.next_out = outbuf; - compressed_fpga_stream.avail_out = DECOMPRESS_BUF_SIZE; - compressed_fpga_stream.zalloc = fpga_deflate_malloc; - compressed_fpga_stream.zfree = fpga_deflate_free; - compressed_fpga_stream.opaque = Z_NULL; + fseek(infile, 0L, SEEK_END); + long infile_size = ftell(infile); + fseek(infile, 0L, SEEK_SET); - ret = inflateInit2(&compressed_fpga_stream, 0); - if (ret < 0) - return (EXIT_FAILURE); + char * inbuf = calloc(infile_size, sizeof(char)); + size_t num_read = fread(inbuf, sizeof(char), infile_size, infile); - do { - if (compressed_fpga_stream.avail_in == 0) { - compressed_fpga_stream.next_in = inbuf; - uint16_t i = 0; - do { - int32_t c = fgetc(infile); - if (!feof(infile)) { - inbuf[i++] = c & 0xFF; - compressed_fpga_stream.avail_in++; - } else { - break; - } - } while (i < DECOMPRESS_BUF_SIZE); - } - - ret = inflate(&compressed_fpga_stream, Z_SYNC_FLUSH); - - if (ret != Z_OK && ret != Z_STREAM_END) { - break; - } - - if (compressed_fpga_stream.avail_out == 0) { - for (uint16_t i = 0; i < DECOMPRESS_BUF_SIZE; i++) { - fputc(outbuf[i], outfile); - } - compressed_fpga_stream.avail_out = DECOMPRESS_BUF_SIZE; - compressed_fpga_stream.next_out = outbuf; - } - } while (ret == Z_OK); - - if (ret == Z_STREAM_END) { // reached end of input - uint16_t i = 0; - while (compressed_fpga_stream.avail_out < DECOMPRESS_BUF_SIZE) { - fputc(outbuf[i++], outfile); - compressed_fpga_stream.avail_out++; - } - fclose(outfile); - fclose(infile); - return (EXIT_SUCCESS); - } else { - fprintf(stderr, "Error. Inflate() returned error %d, %s", ret, compressed_fpga_stream.msg); - fclose(outfile); - fclose(infile); + if (num_read != infile_size) { return (EXIT_FAILURE); } + lz4_stream compressed_fpga_stream; + // initialize lz4 structures + compressed_fpga_stream.lz4StreamDecode = &lz4StreamDecode_body; + compressed_fpga_stream.next_in = inbuf; + compressed_fpga_stream.avail_in = infile_size; + + int total_size = 0; + while (compressed_fpga_stream.avail_in > 0) { + const int cmp_bytes = *(int*)(compressed_fpga_stream.next_in); + compressed_fpga_stream.next_in += 4; + compressed_fpga_stream.avail_in -= cmp_bytes + 4; + const int decBytes = LZ4_decompress_safe_continue(compressed_fpga_stream.lz4StreamDecode, compressed_fpga_stream.next_in, outbuf, cmp_bytes, FPGA_RING_BUFFER_BYTES); + if (decBytes <= 0) { + break; + } + fwrite(outbuf, decBytes, sizeof(char), outfile); + total_size += decBytes; + compressed_fpga_stream.next_in += cmp_bytes; + } + printf("uncompressed %li input bytes to %i output bytes\n", infile_size, total_size); + fclose(outfile); + fclose(infile); + return (EXIT_SUCCESS); } @@ -342,7 +279,7 @@ static int FpgaGatherVersion(FILE *infile, char *infile_name, char *dst, int len strncat(dst, " on ", len - strlen(dst) - 1); for (uint16_t i = 0; i < fpga_info_len; i++) { char c = (char)fgetc(infile); - if (i < sizeof(tempstr)) { + if (i < sizeof(tempstr)) { if (c == '/') c = '-'; if (c == ' ') c = '0'; tempstr[i] = c; From 4ba4c76081dea4d72fe22d1e203ddd3132faf75c Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jun 2020 17:27:38 +0200 Subject: [PATCH 290/527] added a loadEML_safe fct --- client/src/fileutils.c | 92 +++++++++++++++++++++++++++++++++++++++++- client/src/fileutils.h | 2 + 2 files changed, 93 insertions(+), 1 deletion(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 9fc8d5f95..3d3175859 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -737,6 +737,9 @@ out: } int loadFile_safe(const char *preferredName, const char *suffix, void **pdata, size_t *datalen) { + return loadFile_safeEx(preferredName, suffix, pdata, datalen, true); +} +int loadFile_safeEx(const char *preferredName, const char *suffix, void **pdata, size_t *datalen, bool verbose) { char *path; int res = searchFile(&path, RESOURCES_SUBDIR, preferredName, suffix, false); @@ -782,7 +785,8 @@ int loadFile_safe(const char *preferredName, const char *suffix, void **pdata, s *datalen = bytes_read; - PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " bytes from binary file " _YELLOW_("%s"), bytes_read, preferredName); + if (verbose) + PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " bytes from binary file " _YELLOW_("%s"), bytes_read, preferredName); return PM3_SUCCESS; } @@ -848,6 +852,92 @@ out: return retval; } +int loadFileEML_safe(const char *preferredName, void **pdata, size_t *datalen) { + char *path; + int res = searchFile(&path, RESOURCES_SUBDIR, preferredName, "", false); + if (res != PM3_SUCCESS) { + return PM3_EFILE; + } + + FILE *f = fopen(path, "r"); + if (!f) { + PrintAndLogEx(WARNING, "file not found or locked. '" _YELLOW_("%s")"'", path); + free(path); + return PM3_EFILE; + } + free(path); + + // get filesize in order to malloc memory + fseek(f, 0, SEEK_END); + long fsize = ftell(f); + fseek(f, 0, SEEK_SET); + + if (fsize <= 0) { + PrintAndLogEx(FAILED, "error, when getting filesize"); + fclose(f); + return PM3_EFILE; + } + + *pdata = calloc(fsize, sizeof(uint8_t)); + if (!*pdata) { + PrintAndLogEx(FAILED, "error, cannot allocate memory"); + fclose(f); + return PM3_EMALLOC; + } + + // 128 + 2 newline chars + 1 null terminator + char line[131]; + memset(line, 0, sizeof(line)); + uint8_t buf[64] = {0x00}; + size_t counter = 0; + int retval = PM3_SUCCESS, hexlen = 0; + + uint8_t *tmp = (uint8_t *)*pdata; + + while (!feof(f)) { + + memset(line, 0, sizeof(line)); + + if (fgets(line, sizeof(line), f) == NULL) { + if (feof(f)) + break; + + fclose(f); + PrintAndLogEx(FAILED, "File reading error."); + return PM3_EFILE; + } + + if (line[0] == '#') + continue; + + strcleanrn(line, sizeof(line)); + + res = param_gethex_to_eol(line, 0, buf, sizeof(buf), &hexlen); + if (res == 0) { + memcpy( tmp + counter, buf, hexlen); + counter += hexlen; + } else { + retval = PM3_ESOFT; + } + } + fclose(f); + PrintAndLogEx(SUCCESS, "loaded " _YELLOW_("%zu") " bytes from text file " _YELLOW_("%s"), counter, preferredName); + + + uint8_t *newdump = realloc(*pdata, counter); + if (newdump == NULL) { + free(*pdata); + return PM3_EMALLOC; + } else { + *pdata = newdump; + } + + if (datalen) + *datalen = counter; + + return retval; +} + int loadFileJSON(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen, void (*callback)(json_t *)) { return loadFileJSONex(preferredName, data, maxdatalen, datalen, true, callback); } diff --git a/client/src/fileutils.h b/client/src/fileutils.h index 96170a440..d3d757408 100644 --- a/client/src/fileutils.h +++ b/client/src/fileutils.h @@ -177,6 +177,7 @@ int loadFile(const char *preferredName, const char *suffix, void *data, size_t m * @return PM3_SUCCESS for ok, PM3_E* for failz */ int loadFile_safe(const char *preferredName, const char *suffix, void **pdata, size_t *datalen); +int loadFile_safeEx(const char *preferredName, const char *suffix, void **pdata, size_t *datalen, bool verbose); /** * @brief Utility function to load data from a textfile (EML). This method takes a preferred name. * E.g. dumpdata-15.txt @@ -187,6 +188,7 @@ int loadFile_safe(const char *preferredName, const char *suffix, void **pdata, s * @return 0 for ok, 1 for failz */ int loadFileEML(const char *preferredName, void *data, size_t *datalen); +int loadFileEML_safe(const char *preferredName, void **pdata, size_t *datalen); /** * @brief Utility function to load data from a JSON textfile. This method takes a preferred name. From bbd9271fa3575416142b6588ac87d01053c6c95a Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 3 Jun 2020 17:28:29 +0200 Subject: [PATCH 291/527] chg: 'hf lto restore' - now uses save loads and case-ignore extensions --- client/src/cmdhflto.c | 56 +++++++++++++++++-------------------------- 1 file changed, 22 insertions(+), 34 deletions(-) diff --git a/client/src/cmdhflto.c b/client/src/cmdhflto.c index 4739d6f06..74b724bb6 100644 --- a/client/src/cmdhflto.c +++ b/client/src/cmdhflto.c @@ -566,13 +566,7 @@ static int CmdHfLTRestore(const char *Cmd) { uint8_t cmdp = 0; bool errors = false; - int is_data_loaded = PM3_ESOFT; - char filename[FILE_PATH_SIZE] = {0}; - char extension[FILE_PATH_SIZE] = {0}; - - uint8_t dump_data[CM_MEM_MAX_SIZE] = {0}; - size_t dump_datalen = 0; while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { switch (tolower(param_getchar(Cmd, cmdp))) { @@ -580,8 +574,9 @@ static int CmdHfLTRestore(const char *Cmd) { return usage_lto_restore(); case 'f': param_getstr(Cmd, cmdp + 1, filename, FILE_PATH_SIZE); - if (strlen(filename) == 0) + if (strlen(filename) < 5) errors = true; + cmdp += 2; break; default: @@ -591,40 +586,33 @@ static int CmdHfLTRestore(const char *Cmd) { } } - if (errors || (strlen(filename)) == 0) { - usage_lto_restore(); - return PM3_EINVARG; + if (errors || strlen(Cmd) == 0 ) { + return usage_lto_restore(); } - // split file name into prefix and ext. - int fnLength; + size_t dump_len = 0; + char *lowstr = str_dup(filename); + str_lower(lowstr); - fnLength = strlen(filename); + if (str_endswith(lowstr, ".bin")) { - if (fnLength > 4) { - memcpy(extension, &filename[fnLength - 4], 4); - extension[5] = 0x00; + uint8_t *dump = NULL; + if (loadFile_safe(filename, "", (void**)&dump, &dump_len) == PM3_SUCCESS) { + restoreLTO(dump, true); + free(dump); + } + } else if (str_endswith(lowstr, ".eml")) { - // check if valid file extension and attempt to load data - if (memcmp(extension, ".bin", 4) == 0) { - filename[fnLength - 4] = 0x00; - is_data_loaded = loadFile(filename, ".bin", dump_data, sizeof(dump_data), &dump_datalen); - - } else if (memcmp(extension, ".eml", 4) == 0) { - filename[fnLength - 4] = 0x00; - dump_datalen = 12; - is_data_loaded = loadFileEML(filename, (uint8_t *)dump_data, &dump_datalen); - - } else - PrintAndLogEx(WARNING, "\nWarning: invalid dump filename "_YELLOW_("%s")" to restore!\n", filename); - } - - if (is_data_loaded == PM3_SUCCESS) { - return restoreLTO(dump_data, true); + uint8_t *dump = NULL; + if (loadFileEML_safe(filename, (void**)&dump, &dump_len) == PM3_SUCCESS) { + restoreLTO(dump, true); + free(dump); + } } else { - return PM3_EFILE; + PrintAndLogEx(WARNING, "Warning: invalid dump filename " _YELLOW_("%s") " to restore", filename); } - + free(lowstr); + return PM3_SUCCESS; } static command_t CommandTable[] = { From 62afc143350306539bfbb9972c9461c2685b6abe Mon Sep 17 00:00:00 2001 From: Iceman <iceman@iuse.se> Date: Thu, 4 Jun 2020 09:22:17 +0200 Subject: [PATCH 292/527] Update README.md --- README.md | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/README.md b/README.md index 924114638..219997851 100644 --- a/README.md +++ b/README.md @@ -75,6 +75,24 @@ Hardware to run client on - Raspberry Pi & Raspberry Pi Zero - Jetson Nano +## Precompiled binaries +We don't maintain any precompiled binaries in this repo. There is community effort over at the Proxmark3 forum where @gator96100 has set up a google drive with many mingw binaries which is up-to-date. We link to these files here as to make it easier for users. +If you are having troubles with these files, contact the package maintainer @gator96100. + +- [Precompiled builds for RDV40 dedicated x86](https://drive.google.com/open?id=13zUs-aiQkYaSl5KWrBtuW5IWCoHJPsue) +- [Precompiled builds for RDV40 dedicated x64](https://drive.google.com/open?id=1SyPB8t5Vo8O0Lh7PjNm3Kv-mO4BNbxjX) + +- [Precompiled builds for RDV40 dedicated with Bluetooth addon x86](https://drive.google.com/open?id=1TqWYctkRvkLshQ1ZRBHPLDzYHR-asuMO) +- [Precompiled builds for RDV40 dedicated with Bluetooth addon x64](https://drive.google.com/open?id=17ful7u2QyYmMQzQzc5fAf8nJvyoDJfSL) + +Generice Proxmark3 devices (non RDV4) +- [Precompiled builds for RRG / Iceman repository x86](https://drive.google.com/open?id=1PI3Xr1mussPBPnYGu4ZjWzGPARK4N7JR) +- [Precompiled builds for RRG / Iceman repository x64](https://drive.google.com/open?id=1uX9RtYGinuFrpHybu4xq_BE3HrobI20e) + +Ref: +[Link to sticky thread at forum](http://www.proxmark.org/forum/viewtopic.php?pid=24763#p24763) + + ## Roadmap The [public roadmap](https://github.com/RfidResearchGroup/proxmark3/wiki/Public-Roadmap) is an excellent start to read if you are interesting in contributing. From bd5aa92a56a61273ceac9a2e0ea07087901a652b Mon Sep 17 00:00:00 2001 From: Iceman <iceman@iuse.se> Date: Thu, 4 Jun 2020 09:24:17 +0200 Subject: [PATCH 293/527] Update README.md --- README.md | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 219997851..9d69ba832 100644 --- a/README.md +++ b/README.md @@ -77,7 +77,10 @@ Hardware to run client on ## Precompiled binaries We don't maintain any precompiled binaries in this repo. There is community effort over at the Proxmark3 forum where @gator96100 has set up a google drive with many mingw binaries which is up-to-date. We link to these files here as to make it easier for users. -If you are having troubles with these files, contact the package maintainer @gator96100. +If you are having troubles with these files, contact the package maintainer @gator96100 and read the [sticky thread at forum](http://www.proxmark.org/forum/viewtopic.php?pid=24763#p24763) where known issues has been documented. + + +Ref: - [Precompiled builds for RDV40 dedicated x86](https://drive.google.com/open?id=13zUs-aiQkYaSl5KWrBtuW5IWCoHJPsue) - [Precompiled builds for RDV40 dedicated x64](https://drive.google.com/open?id=1SyPB8t5Vo8O0Lh7PjNm3Kv-mO4BNbxjX) @@ -89,9 +92,6 @@ Generice Proxmark3 devices (non RDV4) - [Precompiled builds for RRG / Iceman repository x86](https://drive.google.com/open?id=1PI3Xr1mussPBPnYGu4ZjWzGPARK4N7JR) - [Precompiled builds for RRG / Iceman repository x64](https://drive.google.com/open?id=1uX9RtYGinuFrpHybu4xq_BE3HrobI20e) -Ref: -[Link to sticky thread at forum](http://www.proxmark.org/forum/viewtopic.php?pid=24763#p24763) - ## Roadmap The [public roadmap](https://github.com/RfidResearchGroup/proxmark3/wiki/Public-Roadmap) is an excellent start to read if you are interesting in contributing. From 66fd599c7075180ca0466695249953254a8548ce Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 4 Jun 2020 11:32:33 +0200 Subject: [PATCH 294/527] fix: 'hf mfu ndef' - now prints ID field correct if present --- client/src/mifare/ndef.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/mifare/ndef.c b/client/src/mifare/ndef.c index 45ad2e081..58b9b0a25 100644 --- a/client/src/mifare/ndef.c +++ b/client/src/mifare/ndef.c @@ -127,6 +127,7 @@ static int ndefDecodeHeader(uint8_t *data, size_t datalen, NDEFHeader_t *header) if (header->IDLenPresent) { header->IDLen = (header->ShortRecordBit ? (data[3]) : (data[6])); + header->ID = data + header->len + header->TypeLen; } else { header->IDLen = 0; } @@ -136,7 +137,7 @@ static int ndefDecodeHeader(uint8_t *data, size_t datalen, NDEFHeader_t *header) header->RecLen = header->len + header->TypeLen + header->PayloadLen + header->IDLen; if (header->RecLen > datalen) - return 3; + return PM3_ESOFT; return PM3_SUCCESS; } From fd93222fdb60db01eab29d1c6eef838ceffb8da0 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 4 Jun 2020 11:50:41 +0200 Subject: [PATCH 295/527] chg: 'trace save' - if client has no log, try download from device before saveing --- client/src/cmdtrace.c | 143 ++++++++++++++++++++++-------------------- 1 file changed, 76 insertions(+), 67 deletions(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 29cf2c1df..5747eef00 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -414,6 +414,56 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr return tracepos; } +static int download_trace(void) { + + if (!IfPm3Present()) { + PrintAndLogEx(FAILED, "You requested a trace upload in offline mode, consider using parameter '1' for working from Tracebuffer"); + return PM3_EINVARG; + } + + // reserve some space. + if (g_trace) + free(g_trace); + + g_traceLen = 0; + + g_trace = calloc(PM3_CMD_DATA_SIZE, sizeof(uint8_t)); + if (g_trace == NULL) { + PrintAndLogEx(FAILED, "Cannot allocate memory for trace"); + return PM3_EMALLOC; + } + + PrintAndLogEx(INFO, "downloading tracelog from device"); + + // Query for the size of the trace, downloading PM3_CMD_DATA_SIZE + PacketResponseNG response; + if (!GetFromDevice(BIG_BUF, g_trace, PM3_CMD_DATA_SIZE, 0, NULL, 0, &response, 4000, true)) { + PrintAndLogEx(WARNING, "timeout while waiting for reply."); + free(g_trace); + return PM3_ETIMEOUT; + } + + g_traceLen = response.oldarg[2]; + + // if tracelog buffer was larger and we need to download more. + if (g_traceLen > PM3_CMD_DATA_SIZE) { + + free(g_trace); + g_trace = calloc(g_traceLen, sizeof(uint8_t)); + if (g_trace == NULL) { + PrintAndLogEx(FAILED, "Cannot allocate memory for trace"); + return PM3_EMALLOC; + } + + if (!GetFromDevice(BIG_BUF, g_trace, g_traceLen, 0, NULL, 0, NULL, 2500, false)) { + PrintAndLogEx(WARNING, "command execution time out"); + free(g_trace); + return PM3_ETIMEOUT; + } + } + return PM3_SUCCESS; +} + // sanity check. Don't use proxmark if it is offline and you didn't specify useTraceBuffer /* static int SanityOfflineCheck( bool useTraceBuffer ){ @@ -429,7 +479,7 @@ static int CmdTraceLoad(const char *Cmd) { char filename[FILE_PATH_SIZE]; char cmdp = tolower(param_getchar(Cmd, 0)); - if (strlen(Cmd) < 1 || cmdp == 'h') return usage_trace_load(); + if (strlen(Cmd) < 1 || (strlen(Cmd) == 1 && cmdp == 'h')) return usage_trace_load(); param_getstr(Cmd, 0, filename, sizeof(filename)); @@ -449,7 +499,11 @@ static int CmdTraceLoad(const char *Cmd) { } static int CmdTraceSave(const char *Cmd) { - + + if (g_traceLen == 0) { + download_trace(); + } + if (g_traceLen == 0) { PrintAndLogEx(WARNING, "trace is empty, nothing to save"); return PM3_SUCCESS; @@ -457,32 +511,13 @@ static int CmdTraceSave(const char *Cmd) { char filename[FILE_PATH_SIZE]; char cmdp = tolower(param_getchar(Cmd, 0)); - if (strlen(Cmd) < 1 || cmdp == 'h') return usage_trace_save(); + if (strlen(Cmd) < 1 || (strlen(Cmd) == 1 && cmdp == 'h')) return usage_trace_save(); param_getstr(Cmd, 0, filename, sizeof(filename)); saveFile(filename, ".bin", g_trace, g_traceLen); return PM3_SUCCESS; } -static command_t CommandTable[] = { - {"help", CmdHelp, AlwaysAvailable, "This help"}, - {"list", CmdTraceList, AlwaysAvailable, "List protocol data in trace buffer"}, - {"load", CmdTraceLoad, AlwaysAvailable, "Load trace from file"}, - {"save", CmdTraceSave, AlwaysAvailable, "Save trace buffer to file"}, - {NULL, NULL, NULL, NULL} -}; - -static int CmdHelp(const char *Cmd) { - (void)Cmd; // Cmd is not used so far - CmdsHelp(CommandTable); - return PM3_SUCCESS; -} - -int CmdTrace(const char *Cmd) { - clearCommandBuffer(); - return CmdsParse(CommandTable, Cmd); -} - int CmdTraceList(const char *Cmd) { clearCommandBuffer(); @@ -567,51 +602,7 @@ int CmdTraceList(const char *Cmd) { if (errors) return usage_trace_list(); if (isOnline) { - - if (!IfPm3Present()) { - PrintAndLogEx(FAILED, "You requested a trace upload in offline mode, consider using parameter '1' for working from Tracebuffer"); - return PM3_EINVARG; - } - // reserve some space. - if (g_trace) - free(g_trace); - - g_traceLen = 0; - - g_trace = calloc(PM3_CMD_DATA_SIZE, sizeof(uint8_t)); - if (g_trace == NULL) { - PrintAndLogEx(FAILED, "Cannot allocate memory for trace"); - return PM3_EMALLOC; - } - - PrintAndLogEx(INFO, "downloading tracelog from device"); - - // Query for the size of the trace, downloading PM3_CMD_DATA_SIZE - PacketResponseNG response; - if (!GetFromDevice(BIG_BUF, g_trace, PM3_CMD_DATA_SIZE, 0, NULL, 0, &response, 4000, true)) { - PrintAndLogEx(WARNING, "timeout while waiting for reply."); - free(g_trace); - return PM3_ETIMEOUT; - } - - g_traceLen = response.oldarg[2]; - - // if tracelog buffer was larger and we need to download more. - if (g_traceLen > PM3_CMD_DATA_SIZE) { - - free(g_trace); - g_trace = calloc(g_traceLen, sizeof(uint8_t)); - if (g_trace == NULL) { - PrintAndLogEx(FAILED, "Cannot allocate memory for trace"); - return PM3_EMALLOC; - } - - if (!GetFromDevice(BIG_BUF, g_trace, g_traceLen, 0, NULL, 0, NULL, 2500, false)) { - PrintAndLogEx(WARNING, "command execution time out"); - free(g_trace); - return PM3_ETIMEOUT; - } - } + download_trace(); } PrintAndLogEx(SUCCESS, "Recorded activity (trace len = " _YELLOW_("%lu") " bytes)", g_traceLen); @@ -667,3 +658,21 @@ int CmdTraceList(const char *Cmd) { return PM3_SUCCESS; } +static command_t CommandTable[] = { + {"help", CmdHelp, AlwaysAvailable, "This help"}, + {"list", CmdTraceList, AlwaysAvailable, "List protocol data in trace buffer"}, + {"load", CmdTraceLoad, AlwaysAvailable, "Load trace from file"}, + {"save", CmdTraceSave, AlwaysAvailable, "Save trace buffer to file"}, + {NULL, NULL, NULL, NULL} +}; + +static int CmdHelp(const char *Cmd) { + (void)Cmd; // Cmd is not used so far + CmdsHelp(CommandTable); + return PM3_SUCCESS; +} + +int CmdTrace(const char *Cmd) { + clearCommandBuffer(); + return CmdsParse(CommandTable, Cmd); +} From d2a499ce5e2e124808cd8a117293e2239094171f Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 4 Jun 2020 11:52:58 +0200 Subject: [PATCH 296/527] chg: 'trace save' - use .trace extension --- client/src/cmdtrace.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 5747eef00..c142973d9 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -514,7 +514,7 @@ static int CmdTraceSave(const char *Cmd) { if (strlen(Cmd) < 1 || (strlen(Cmd) == 1 && cmdp == 'h')) return usage_trace_save(); param_getstr(Cmd, 0, filename, sizeof(filename)); - saveFile(filename, ".bin", g_trace, g_traceLen); + saveFile(filename, ".trace", g_trace, g_traceLen); return PM3_SUCCESS; } From 4e207da500f1abe386586072415c19fcae30a3c7 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 4 Jun 2020 11:56:57 +0200 Subject: [PATCH 297/527] add simulation of MFU ultralight card with NDEF trace --- traces/hf-mfu-0466D65F00509C-sim.trace | Bin 0 -> 5005 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 traces/hf-mfu-0466D65F00509C-sim.trace diff --git a/traces/hf-mfu-0466D65F00509C-sim.trace b/traces/hf-mfu-0466D65F00509C-sim.trace new file mode 100644 index 0000000000000000000000000000000000000000..ff5a365942b80a36d244ddb46d70c2f3263cd7e5 GIT binary patch literal 5005 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 bVqtbAN#w3fxtR)7k+!`GOi^-z3W_2Ck)~i+ literal 0 HcmV?d00001 From f354f480de5326fc69d6e3efd2cd95ba523c1754 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 5 Jun 2020 11:05:46 +0200 Subject: [PATCH 298/527] chg; return codes --- client/src/cmdsmartcard.c | 62 ++++++++++++++++++--------------------- client/src/emv/emvcore.c | 4 +-- 2 files changed, 31 insertions(+), 35 deletions(-) diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index 143140174..f03617d3a 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -41,8 +41,7 @@ static int usage_sm_raw(void) { PrintAndLogEx(NORMAL, " sc raw 0 d 00a404000e325041592e5359532e4444463031 - `2PAY.SYS.DDF01` PPSE directory"); PrintAndLogEx(NORMAL, " sc raw 0 t d 00a4040007a0000000041010 - Mastercard"); PrintAndLogEx(NORMAL, " sc raw 0 t d 00a4040007a0000000031010 - Visa"); - - return 0; + return PM3_SUCCESS; } static int usage_sm_reader(void) { PrintAndLogEx(NORMAL, "Usage: sc reader [h|s]"); @@ -51,7 +50,7 @@ static int usage_sm_reader(void) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); PrintAndLogEx(NORMAL, " sc reader"); - return 0; + return PM3_SUCCESS; } static int usage_sm_info(void) { PrintAndLogEx(NORMAL, "Usage: sc info [h|s]"); @@ -60,7 +59,7 @@ static int usage_sm_info(void) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); PrintAndLogEx(NORMAL, " sc info"); - return 0; + return PM3_SUCCESS; } static int usage_sm_upgrade(void) { PrintAndLogEx(NORMAL, "Upgrade RDV4.0 Sim module firmware"); @@ -70,7 +69,7 @@ static int usage_sm_upgrade(void) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); PrintAndLogEx(NORMAL, " sc upgrade f ../tools/simmodule/sim011.bin"); - return 0; + return PM3_SUCCESS; } static int usage_sm_setclock(void) { PrintAndLogEx(NORMAL, "Usage: sc setclock [h] c <clockspeed>"); @@ -79,7 +78,7 @@ static int usage_sm_setclock(void) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); PrintAndLogEx(NORMAL, " sc setclock c 2"); - return 0; + return PM3_SUCCESS; } static int usage_sm_brute(void) { PrintAndLogEx(NORMAL, "Tries to bruteforce SFI, using a known list of AID's "); @@ -90,7 +89,7 @@ static int usage_sm_brute(void) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); PrintAndLogEx(NORMAL, " sc brute t"); - return 0; + return PM3_SUCCESS; } static int smart_loadjson(const char *preferredName, json_t **root) { @@ -207,7 +206,7 @@ static float GetATRF(uint8_t *atr, size_t atrlen) { return FArray[TA1 >> 4]; // The 4 high-order bits of TA1 (8th MSbit to 5th LSbit) encode fmax and Fi } -static int PrintATR(uint8_t *atr, size_t atrlen) { +static void PrintATR(uint8_t *atr, size_t atrlen) { uint8_t T0 = atr[1]; uint8_t K = T0 & 0x0F; @@ -320,8 +319,6 @@ static int PrintATR(uint8_t *atr, size_t atrlen) { PrintAndLogEx(INFO, "\tHistorical bytes"); dump_buffer(&atr[2 + T1len + TD1len + TDilen], K, NULL, 1); } - - return 0; } static int smart_wait(uint8_t *data, bool silent) { @@ -443,13 +440,13 @@ static int CmdSmartRaw(const char *Cmd) { switch (param_gethex_to_eol(Cmd, cmdp + 1, data, sizeof(data), &hexlen)) { case 1: PrintAndLogEx(WARNING, "Invalid HEX value."); - return 1; + return PM3_EINVARG; case 2: PrintAndLogEx(WARNING, "Too many bytes. Max %zu bytes", sizeof(data)); - return 1; + return PM3_EINVARG; case 3: PrintAndLogEx(WARNING, "Hex must have even number of digits."); - return 1; + return PM3_EINVARG; } cmdp++; breakloop = true; @@ -490,12 +487,12 @@ static int CmdSmartRaw(const char *Cmd) { uint8_t *buf = calloc(PM3_CMD_DATA_SIZE, sizeof(uint8_t)); if (!buf) - return 1; + return PM3_EMALLOC; int len = smart_response(buf); if (len < 0) { free(buf); - return 2; + return PM3_ESOFT; } if (buf[0] == 0x6C) { @@ -513,7 +510,7 @@ static int CmdSmartRaw(const char *Cmd) { free(buf); } - return 0; + return PM3_SUCCESS; } static int CmdSmartUpgrade(const char *Cmd) { @@ -688,13 +685,13 @@ static int CmdSmartInfo(const char *Cmd) { PacketResponseNG resp; if (!WaitForResponseTimeout(CMD_ACK, &resp, 2500)) { if (!silent) PrintAndLogEx(WARNING, "smart card select failed"); - return 1; + return PM3_ETIMEOUT; } uint8_t isok = resp.oldarg[0] & 0xFF; if (!isok) { if (!silent) PrintAndLogEx(WARNING, "smart card select failed"); - return 1; + return PM3_ESOFT; } smart_card_atr_t card; @@ -731,7 +728,7 @@ static int CmdSmartInfo(const char *Cmd) { PrintAndLogEx(WARNING, "\t- Di or Fi is RFU."); }; - return 0; + return PM3_SUCCESS; } static int CmdSmartReader(const char *Cmd) { @@ -761,19 +758,19 @@ static int CmdSmartReader(const char *Cmd) { PacketResponseNG resp; if (!WaitForResponseTimeout(CMD_ACK, &resp, 2500)) { if (!silent) PrintAndLogEx(WARNING, "smart card select failed"); - return 1; + return PM3_ETIMEOUT; } uint8_t isok = resp.oldarg[0] & 0xFF; if (!isok) { if (!silent) PrintAndLogEx(WARNING, "smart card select failed"); - return 1; + return PM3_ESOFT; } smart_card_atr_t card; memcpy(&card, (smart_card_atr_t *)resp.data.asBytes, sizeof(smart_card_atr_t)); PrintAndLogEx(INFO, "ISO7816-3 ATR : %s", sprint_hex(card.atr, card.atr_len)); - return 0; + return PM3_SUCCESS; } static int CmdSmartSetClock(const char *Cmd) { @@ -806,13 +803,13 @@ static int CmdSmartSetClock(const char *Cmd) { PacketResponseNG resp; if (!WaitForResponseTimeout(CMD_ACK, &resp, 2500)) { PrintAndLogEx(WARNING, "smart card select failed"); - return 1; + return PM3_ETIMEOUT; } uint8_t isok = resp.oldarg[0] & 0xFF; if (!isok) { PrintAndLogEx(WARNING, "smart card set clock failed"); - return 1; + return PM3_ESOFT; } switch (clock1) { @@ -828,13 +825,13 @@ static int CmdSmartSetClock(const char *Cmd) { default: break; } - return 0; + return PM3_SUCCESS; } static int CmdSmartList(const char *Cmd) { (void)Cmd; // Cmd is not used so far CmdTraceList("7816"); - return 0; + return PM3_SUCCESS; } static void smart_brute_prim(void) { @@ -1000,12 +997,12 @@ static int CmdSmartBruteforceSFI(const char *Cmd) { uint8_t *buf = calloc(PM3_CMD_DATA_SIZE, sizeof(uint8_t)); if (!buf) - return 1; + return PM3_EMALLOC; PrintAndLogEx(INFO, "Selecting card"); if (!smart_select(false, NULL)) { free(buf); - return 1; + return PM3_ESOFT; } char *caid = NULL; @@ -1024,14 +1021,14 @@ static int CmdSmartBruteforceSFI(const char *Cmd) { if (!json_is_object(data)) { PrintAndLogEx(ERR, "data %d is not an object\n", i + 1); json_decref(root); - return 1; + return PM3_ESOFT; } jaid = json_object_get(data, "AID"); if (!json_is_string(jaid)) { PrintAndLogEx(ERR, "AID data [%d] is not a string", i + 1); json_decref(root); - return 1; + return PM3_ESOFT; } const char *aid = json_string_value(jaid); @@ -1093,7 +1090,7 @@ static int CmdSmartBruteforceSFI(const char *Cmd) { json_decref(root); PrintAndLogEx(SUCCESS, "\nSearch completed."); - return 0; + return PM3_SUCCESS; } static command_t CommandTable[] = { @@ -1111,7 +1108,7 @@ static command_t CommandTable[] = { static int CmdHelp(const char *Cmd) { (void)Cmd; // Cmd is not used so far CmdsHelp(CommandTable); - return 0; + return PM3_SUCCESS; } int CmdSmartcard(const char *Cmd) { @@ -1137,7 +1134,6 @@ int ExchangeAPDUSC(bool silent, uint8_t *datain, int datainlen, bool activateCar SendCommandOLD(CMD_SMART_RAW, flags, datainlen, 0, datain, datainlen); int len = smart_responseEx(dataout, silent); - if (len < 0) { return 1; } diff --git a/client/src/emv/emvcore.c b/client/src/emv/emvcore.c index 6647dbf8b..2f9c82b1d 100644 --- a/client/src/emv/emvcore.c +++ b/client/src/emv/emvcore.c @@ -306,10 +306,10 @@ static int EMVExchangeEx(EMVCommandChannel channel, bool ActivateField, bool Lea } break; case ECC_CONTACT: + res = 1; if (IfPm3Smartcard()) res = ExchangeAPDUSC(true, data, datalen, ActivateField, LeaveFieldON, Result, (int)MaxResultLen, (int *)ResultLen); - else - res = 1; + if (res) { return res; } From fde1fd8732c62eeb426bc44109549542f58c0605 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 5 Jun 2020 11:43:27 +0200 Subject: [PATCH 299/527] improved helptext --- pm3 | 41 +++++++++++++++++++++++++++++++++++------ 1 file changed, 35 insertions(+), 6 deletions(-) diff --git a/pm3 b/pm3 index 31ed0695b..73f2cac46 100755 --- a/pm3 +++ b/pm3 @@ -215,21 +215,41 @@ if [ "$SCRIPT" = "pm3" ]; then CMD() { $CLIENT "$@"; } HELP() { cat << EOF -Quick helper script for proxmark3 client when working with a Proxmark3 device connected via USB + +Quick helper script for proxmark3 client when working with a Proxmark3 device Description: The usage is the same as for the proxmark3 client, with the following differences: * the correct port name will be automatically guessed; * the script will wait for a Proxmark to be connected (same as option -w of the client). - You can also specify a first option -n N to access the Nth Proxmark3 connected on USB. - Don't use this script if you want to work offline or with the BT addon. + You can also specify a first option -n N to access the Nth Proxmark3 connected. + Don't use this script if you want to work offline. To see a list of available ports, use --list. Usage: $SCRIPT [-n <N>] [-f] [-c <command>]|[-l <lua_script_file>]|[-s <cmd_script_file>] [-i] - $SCRIPT --list + $SCRIPT [--list] [--help] + + +Arguments: + --help this help + --list list all detected com ports + -n <N> connect device refered to the N:th number on the --list output + -c 'cmd' execute the pm3 cmd in client and exit afterwards + -i interactive, stay in client after executing a cmd or script + -s 'script' execute a cmd script file and exit afterwards + -l 'luascript' execute a lua script file and exit afterwards + -w wait + -p <port> specifiy which port to connect to + + +Samples: + ./$SCRIPT -- Auto detect/ select com port in the following order BT, USB/CDC, BT DONGLE + ./$SCRIPT -p /dev/ttyACM0 -- connect to port /dev/ttyACM0 + ./$SCRIPT -n 2 -- use second item from the --list output + ./$SCRIPT -c 'lf search' -i -- run command and stay in client once completed + -See "$CLIENT -h" for more details on options. EOF } elif [ "$SCRIPT" = "pm3-flash" ]; then @@ -420,7 +440,16 @@ while true; do done if [ ${#PM3LIST} -lt "$N" ]; then - echo >&2 "[!!] No port found, abort" + HELP() { + cat << EOF +[!!] No port found, abort + +[?] Hint: try '$SCRIPT --list' to see list of available ports, and use the -n command like below +[?] $SCRIPT [-n <N>] + +EOF + } + HELP exit 1 fi From 8852e1f9cdfc6d8e42087899cd9e73ee35262bea Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Fri, 5 Jun 2020 13:13:27 +0200 Subject: [PATCH 300/527] Remove readline from libamiibo, no reason to be there --- client/deps/amiibo.cmake | 1 - 1 file changed, 1 deletion(-) diff --git a/client/deps/amiibo.cmake b/client/deps/amiibo.cmake index 23c7a7b57..234547cd1 100644 --- a/client/deps/amiibo.cmake +++ b/client/deps/amiibo.cmake @@ -16,7 +16,6 @@ if (NOT TARGET pm3rrg_rdv4_mbedtls) endif() find_library(pm3rrg_rdv4_mbedtls REQUIRED) target_link_libraries(pm3rrg_rdv4_amiibo PRIVATE - readline m pm3rrg_rdv4_mbedtls) target_include_directories(pm3rrg_rdv4_amiibo PRIVATE ../../include ../../common) From 5bd300bb5974f06d12d81d34e675746b7e18c1e0 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 5 Jun 2020 14:20:52 +0200 Subject: [PATCH 301/527] hint on failed serial port --- client/src/comms.c | 3 +++ 1 file changed, 3 insertions(+) diff --git a/client/src/comms.c b/client/src/comms.c index f2788ad19..d67fccc11 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -556,10 +556,13 @@ bool OpenProxmark(char *port, bool wait_for_port, int timeout, bool flash_mode, // check result of uart opening if (sp == INVALID_SERIAL_PORT) { PrintAndLogEx(WARNING, "\n" _RED_("ERROR:") " invalid serial port " _YELLOW_("%s"), port); + PrintAndLogEx(HINT, "Try the shell script " _YELLOW_("`./pm3 --list`") " to get a list of possible serial ports"); sp = NULL; return false; } else if (sp == CLAIMED_SERIAL_PORT) { PrintAndLogEx(WARNING, "\n" _RED_("ERROR:") " serial port " _YELLOW_("%s") " is claimed by another process", port); + PrintAndLogEx(HINT, "Try the shell script " _YELLOW_("`./pm3 --list`") " to get a list of possible serial ports"); + sp = NULL; return false; } else { From 1a8eff5d4230814ca59ac4b073251aba7b590b9b Mon Sep 17 00:00:00 2001 From: slurdge <slurdge@slurdge.org> Date: Fri, 5 Jun 2020 16:24:05 +0200 Subject: [PATCH 302/527] add lz4 to arm side --- armsrc/Makefile | 16 ++++---- armsrc/fpgaloader.c | 81 +++++++++++++++++++------------------- armsrc/start.c | 39 +++++------------- common/lz4/lz4.c | 19 +++++++++ common_arm/Makefile.common | 2 +- 5 files changed, 78 insertions(+), 79 deletions(-) diff --git a/armsrc/Makefile b/armsrc/Makefile index 23ac247c3..14747c7ed 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -75,13 +75,13 @@ include Standalone/Makefile.inc #the FPGA bitstream files. Note: order matters! FPGA_BITSTREAMS = fpga_lf.bit fpga_hf.bit -#the zlib source files required for decompressing the fpga config at run time -SRC_ZLIB = inflate.c inffast.c inftrees.c adler32.c zutil.c -#additional defines required to compile zlib -ZLIB_CFLAGS = -DZ_SOLO -DZ_PREFIX -DNO_GZIP -DZLIB_PM3_TUNED -APP_CFLAGS += $(ZLIB_CFLAGS) -# zlib includes: -APP_CFLAGS += -I../common/zlib +#the lz4 source files required for decompressing the fpga config at run time +SRC_LZ4 = lz4.c +#additional defines required to compile lz4 +LZ4_CFLAGS = -DNEED_MEMMOVE -DLZ4_MEMORY_USAGE=8 +APP_CFLAGS += $(LZ4_CFLAGS) +# lz4 includes: +APP_CFLAGS += -I../common/lz4 # stdint.h provided locally until GCC 4.5 becomes C99 compliant, # stack-protect , no-pie reduces size on Gentoo Hardened 8.2 gcc @@ -93,7 +93,7 @@ THUMBSRC = start.c \ $(SRC_ISO15693) \ $(SRC_NFCBARCODE) \ $(SRC_LF) \ - $(SRC_ZLIB) \ + $(SRC_LZ4) \ $(SRC_LEGIC) \ $(SRC_FLASH) \ $(SRC_SMARTCARD) \ diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index 196364d98..0b7b24cbd 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -17,10 +17,19 @@ #include "ticks.h" #include "dbprint.h" #include "util.h" -#include "zlib.h" #include "fpga.h" #include "string.h" +#include "lz4.h" // uncompress + +typedef struct lz4_stream_s { + LZ4_streamDecode_t* lz4StreamDecode; + char * next_in; + int avail_in; +} lz4_stream; + +typedef lz4_stream* lz4_streamp; + // remember which version of the bitstream we have already downloaded to the FPGA static int downloaded_bitstream = 0; @@ -30,8 +39,6 @@ extern uint8_t _binary_obj_fpga_all_bit_z_start, _binary_obj_fpga_all_bit_z_end; static uint8_t *fpga_image_ptr = NULL; static uint32_t uncompressed_bytes_cnt; -#define OUTPUT_BUFFER_LEN 80 - //----------------------------------------------------------------------------- // Set up the Serial Peripheral Interface as master // Used to write the FPGA config word @@ -180,18 +187,25 @@ bool FpgaSetupSscDma(uint8_t *buf, int len) { // Uncompress (inflate) the FPGA data. Returns one decompressed byte with // each call. //---------------------------------------------------------------------------- -static int get_from_fpga_combined_stream(z_streamp compressed_fpga_stream, uint8_t *output_buffer) { - if (fpga_image_ptr == compressed_fpga_stream->next_out) { // need more data - compressed_fpga_stream->next_out = output_buffer; - compressed_fpga_stream->avail_out = OUTPUT_BUFFER_LEN; +static int get_from_fpga_combined_stream(lz4_streamp compressed_fpga_stream, uint8_t *output_buffer) { + if (fpga_image_ptr == output_buffer + FPGA_RING_BUFFER_BYTES) { // need more data fpga_image_ptr = output_buffer; - int res = inflate(compressed_fpga_stream, Z_SYNC_FLUSH); - - if (res != Z_OK) - Dbprintf("inflate returned: %d, %s", res, compressed_fpga_stream->msg); - - if (res < 0) + int cmp_bytes = *(compressed_fpga_stream->next_in + 3); + cmp_bytes = (cmp_bytes << 8) + *(compressed_fpga_stream->next_in+2); + cmp_bytes = (cmp_bytes << 8) + *(compressed_fpga_stream->next_in+1); + cmp_bytes = (cmp_bytes << 8) + *(compressed_fpga_stream->next_in+0); + compressed_fpga_stream->next_in += 4; + compressed_fpga_stream->avail_in -= cmp_bytes + 4; + int res = LZ4_decompress_safe_continue(compressed_fpga_stream->lz4StreamDecode, + compressed_fpga_stream->next_in, + (char*)output_buffer, + cmp_bytes, + FPGA_RING_BUFFER_BYTES); + if (res <= 0) { + Dbprintf("inflate returned: %d", res); return res; + } + compressed_fpga_stream->next_in += cmp_bytes; } uncompressed_bytes_cnt++; return *fpga_image_ptr++; @@ -202,7 +216,7 @@ static int get_from_fpga_combined_stream(z_streamp compressed_fpga_stream, uint8 // are combined into one big file: // 288 bytes from FPGA file 1, followed by 288 bytes from FGPA file 2, etc. //---------------------------------------------------------------------------- -static int get_from_fpga_stream(int bitstream_version, z_streamp compressed_fpga_stream, uint8_t *output_buffer) { +static int get_from_fpga_stream(int bitstream_version, lz4_streamp compressed_fpga_stream, uint8_t *output_buffer) { while ((uncompressed_bytes_cnt / FPGA_INTERLEAVE_SIZE) % g_fpga_bitstream_num != (bitstream_version - 1)) { // skip undesired data belonging to other bitstream_versions get_from_fpga_combined_stream(compressed_fpga_stream, output_buffer); @@ -211,37 +225,23 @@ static int get_from_fpga_stream(int bitstream_version, z_streamp compressed_fpga return get_from_fpga_combined_stream(compressed_fpga_stream, output_buffer); } -static voidpf fpga_inflate_malloc(voidpf opaque, uInt items, uInt size) { - return BigBuf_malloc(items * size); -} - -// free eventually allocated BigBuf memory -static void fpga_inflate_free(voidpf opaque, voidpf address) { - BigBuf_free(); - BigBuf_Clear_ext(false); -} - //---------------------------------------------------------------------------- // Initialize decompression of the respective (HF or LF) FPGA stream //---------------------------------------------------------------------------- -static bool reset_fpga_stream(int bitstream_version, z_streamp compressed_fpga_stream, uint8_t *output_buffer) { +static bool reset_fpga_stream(int bitstream_version, lz4_streamp compressed_fpga_stream, uint8_t *output_buffer) { uint8_t header[FPGA_BITSTREAM_FIXED_HEADER_SIZE]; uncompressed_bytes_cnt = 0; // initialize z_stream structure for inflate: - compressed_fpga_stream->next_in = &_binary_obj_fpga_all_bit_z_start; + compressed_fpga_stream->next_in = (char*)&_binary_obj_fpga_all_bit_z_start; compressed_fpga_stream->avail_in = &_binary_obj_fpga_all_bit_z_end - &_binary_obj_fpga_all_bit_z_start; - compressed_fpga_stream->next_out = output_buffer; - compressed_fpga_stream->avail_out = OUTPUT_BUFFER_LEN; - compressed_fpga_stream->zalloc = &fpga_inflate_malloc; - compressed_fpga_stream->zfree = &fpga_inflate_free; - - int res = inflateInit2(compressed_fpga_stream, 0); - if (res < 0) + + int res = LZ4_setStreamDecode(compressed_fpga_stream->lz4StreamDecode, NULL, 0); + if (res == 0) return false; - fpga_image_ptr = output_buffer; + fpga_image_ptr = output_buffer + FPGA_RING_BUFFER_BYTES; for (uint16_t i = 0; i < FPGA_BITSTREAM_FIXED_HEADER_SIZE; i++) header[i] = get_from_fpga_stream(bitstream_version, compressed_fpga_stream, output_buffer); @@ -266,7 +266,7 @@ static void DownloadFPGA_byte(uint8_t w) { } // Download the fpga image starting at current stream position with length FpgaImageLen bytes -static void DownloadFPGA(int bitstream_version, int FpgaImageLen, z_streamp compressed_fpga_stream, uint8_t *output_buffer) { +static void DownloadFPGA(int bitstream_version, int FpgaImageLen, lz4_streamp compressed_fpga_stream, uint8_t *output_buffer) { int i = 0; AT91C_BASE_PIOA->PIO_OER = GPIO_FPGA_ON; @@ -348,7 +348,7 @@ static void DownloadFPGA(int bitstream_version, int FpgaImageLen, z_streamp comp * (big endian), <length> bytes content. Except for section 'e' which has 4 bytes * length. */ -static int bitparse_find_section(int bitstream_version, char section_name, uint32_t *section_length, z_streamp compressed_fpga_stream, uint8_t *output_buffer) { +static int bitparse_find_section(int bitstream_version, char section_name, uint32_t *section_length, lz4_streamp compressed_fpga_stream, uint8_t *output_buffer) { int result = 0; #define MAX_FPGA_BIT_STREAM_HEADER_SEARCH 100 // maximum number of bytes to search for the requested section uint16_t numbytes = 0; @@ -407,8 +407,6 @@ void FpgaDownloadAndGo(int bitstream_version) { // Send waiting time extension request as this will take a while send_wtx(1500); - z_stream compressed_fpga_stream; - uint8_t output_buffer[OUTPUT_BUFFER_LEN] = {0x00}; bool verbose = (DBGLEVEL > 3); @@ -416,6 +414,11 @@ void FpgaDownloadAndGo(int bitstream_version) { BigBuf_free(); BigBuf_Clear_ext(verbose); + lz4_stream compressed_fpga_stream; + LZ4_streamDecode_t lz4StreamDecode_body = {{ 0 }}; + compressed_fpga_stream.lz4StreamDecode = &lz4StreamDecode_body; + uint8_t * output_buffer = BigBuf_malloc(FPGA_RING_BUFFER_BYTES); + if (!reset_fpga_stream(bitstream_version, &compressed_fpga_stream, output_buffer)) return; @@ -425,8 +428,6 @@ void FpgaDownloadAndGo(int bitstream_version) { downloaded_bitstream = bitstream_version; } - inflateEnd(&compressed_fpga_stream); - // turn off antenna FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); diff --git a/armsrc/start.c b/armsrc/start.c index f0f4ea56c..8c769f56a 100644 --- a/armsrc/start.c +++ b/armsrc/start.c @@ -14,49 +14,28 @@ #include "proxmark3_arm.h" #include "appmain.h" -#include "zlib.h" +#include "lz4.h" #include "BigBuf.h" static uint8_t *next_free_memory; extern struct common_area common_area; extern char __data_src_start__, __data_start__, __data_end__, __bss_start__, __bss_end__; -static voidpf inflate_malloc(voidpf opaque, uInt items, uInt size) { - uint8_t *allocated_memory; - - allocated_memory = next_free_memory; - next_free_memory += items * size; - return allocated_memory; -} - -static void inflate_free(voidpf opaque, voidpf address) { - // nothing to do -} - static void uncompress_data_section(void) { - z_stream data_section; - next_free_memory = BigBuf_get_addr(); - // initialize zstream structure - data_section.next_in = (uint8_t *) &__data_src_start__; - data_section.avail_in = &__data_end__ - &__data_start__; // uncompressed size. Wrong but doesn't matter. - data_section.next_out = (uint8_t *) &__data_start__; - data_section.avail_out = &__data_end__ - &__data_start__; // uncompressed size. Correct. - data_section.zalloc = &inflate_malloc; - data_section.zfree = &inflate_free; - data_section.opaque = NULL; + int avail_in = *(&__data_start__ + 3); + avail_in = (avail_in << 8) + *(&__data_start__+2); + avail_in = (avail_in << 8) + *(&__data_start__+1); + avail_in = (avail_in << 8) + *(&__data_start__+0); // compressed size. Correct. + int avail_out = &__data_end__ - &__data_start__; // uncompressed size. Correct. + // uncompress data segment to RAM + int res = LZ4_decompress_safe(&__data_src_start__ + 4, &__data_start__, avail_in, avail_out); - // initialize zlib for inflate - int res = inflateInit2(&data_section, 15); if (res < 0) return; - - // uncompress data segment to RAM - inflate(&data_section, Z_FINISH); - // save the size of the compressed data section - common_area.arg1 = data_section.total_in; + common_area.arg1 = res; } void __attribute__((section(".startos"))) Vector(void); diff --git a/common/lz4/lz4.c b/common/lz4/lz4.c index 9808d70ae..8fb99d913 100644 --- a/common/lz4/lz4.c +++ b/common/lz4/lz4.c @@ -182,6 +182,25 @@ #include <string.h> /* memset, memcpy */ #define MEM_INIT(p,v,s) memset((p),(v),(s)) +#ifdef NEED_MEMMOVE +void * +memmove (void *dest, const void *src, size_t len) +{ + char *d = dest; + const char *s = src; + if (d < s) + while (len--) + *d++ = *s++; + else + { + char *lasts = (char*)s + (len-1); + char *lastd = d + (len-1); + while (len--) + *lastd-- = *lasts--; + } + return dest; +} +#endif /*-************************************ * Common Constants diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index c8dceead5..d6415dcda 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -35,7 +35,7 @@ OBJDIR = obj INCLUDE = -I../include -I../common_arm -I../common_fpga -I../common -I. # Also search prerequisites in the common directory (for usb.c), the fpga directory (for fpga.bit), and the zlib directory -VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/zlib ../fpga ../armsrc/Standalone +VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/lz4 ../fpga ../armsrc/Standalone INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h From cce2e7aad315f17923bbb28ea24c1ba9f4ef8f7d Mon Sep 17 00:00:00 2001 From: slurdge <slurdge@slurdge.org> Date: Sat, 6 Jun 2020 15:34:25 +0200 Subject: [PATCH 303/527] Remove inline to save 2.5Kb of flash --- common/lz4/lz4.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common/lz4/lz4.c b/common/lz4/lz4.c index 8fb99d913..25be146fd 100644 --- a/common/lz4/lz4.c +++ b/common/lz4/lz4.c @@ -1669,7 +1669,7 @@ read_variable_length(const BYTE**ip, const BYTE* lencheck, int loop_check, int i * Note that it is important for performance that this function really get inlined, * in order to remove useless branches during compilation optimization. */ -LZ4_FORCE_INLINE int +int LZ4_decompress_generic( const char* const src, char* const dst, From c84f81de76ae5bbeac39efa89cae658b111e389e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 6 Jun 2020 23:32:09 +0200 Subject: [PATCH 304/527] chg: 'sc raw' - print response bytes --- client/src/cmdsmartcard.c | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index f03617d3a..9fe192e6b 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -499,7 +499,7 @@ static int CmdSmartRaw(const char *Cmd) { data[4] = buf[1]; clearCommandBuffer(); - SendCommandOLD(CMD_SMART_RAW, 0, hexlen, 0, data, hexlen); + SendCommandMIX(CMD_SMART_RAW, 0, hexlen, 0, data, hexlen); len = smart_response(buf); data[4] = 0; @@ -507,6 +507,15 @@ static int CmdSmartRaw(const char *Cmd) { if (decodeTLV && len > 4) TLVPrintFromBuffer(buf, len - 2); + else { + if (len > 16) { + for (int i=0; i<len; i += 16) { + PrintAndLogEx(SUCCESS, "%s", sprint_hex_ascii(buf + i, 16)) ; + } + } else { + PrintAndLogEx(SUCCESS, "%s", sprint_hex_ascii(buf, len)) ; + } + } free(buf); } From d48fcbf5eb3f8f2d388b15cc9aca91a0c5571beb Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sun, 7 Jun 2020 12:46:05 +0200 Subject: [PATCH 305/527] lz4stream info to int: use memcpy --- armsrc/fpgaloader.c | 6 ++---- armsrc/start.c | 8 +++----- 2 files changed, 5 insertions(+), 9 deletions(-) diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index 0b7b24cbd..bb50375f9 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -190,10 +190,8 @@ bool FpgaSetupSscDma(uint8_t *buf, int len) { static int get_from_fpga_combined_stream(lz4_streamp compressed_fpga_stream, uint8_t *output_buffer) { if (fpga_image_ptr == output_buffer + FPGA_RING_BUFFER_BYTES) { // need more data fpga_image_ptr = output_buffer; - int cmp_bytes = *(compressed_fpga_stream->next_in + 3); - cmp_bytes = (cmp_bytes << 8) + *(compressed_fpga_stream->next_in+2); - cmp_bytes = (cmp_bytes << 8) + *(compressed_fpga_stream->next_in+1); - cmp_bytes = (cmp_bytes << 8) + *(compressed_fpga_stream->next_in+0); + int cmp_bytes; + memcpy(&cmp_bytes, compressed_fpga_stream->next_in, sizeof(int)); compressed_fpga_stream->next_in += 4; compressed_fpga_stream->avail_in -= cmp_bytes + 4; int res = LZ4_decompress_safe_continue(compressed_fpga_stream->lz4StreamDecode, diff --git a/armsrc/start.c b/armsrc/start.c index 8c769f56a..25bfb2ade 100644 --- a/armsrc/start.c +++ b/armsrc/start.c @@ -16,6 +16,7 @@ #include "appmain.h" #include "lz4.h" #include "BigBuf.h" +#include "string.h" static uint8_t *next_free_memory; extern struct common_area common_area; @@ -23,11 +24,8 @@ extern char __data_src_start__, __data_start__, __data_end__, __bss_start__, __b static void uncompress_data_section(void) { next_free_memory = BigBuf_get_addr(); - - int avail_in = *(&__data_start__ + 3); - avail_in = (avail_in << 8) + *(&__data_start__+2); - avail_in = (avail_in << 8) + *(&__data_start__+1); - avail_in = (avail_in << 8) + *(&__data_start__+0); // compressed size. Correct. + int avail_in; + memcpy(&avail_in, &__data_start__, sizeof(int)); int avail_out = &__data_end__ - &__data_start__; // uncompressed size. Correct. // uncompress data segment to RAM int res = LZ4_decompress_safe(&__data_src_start__ + 4, &__data_start__, avail_in, avail_out); From 381b47f64eb65366eeda824814f9d0e4f3315a8f Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sun, 7 Jun 2020 12:46:34 +0200 Subject: [PATCH 306/527] lz4: add memmove to arm string.c --- armsrc/Makefile | 2 +- armsrc/string.c | 17 +++++++++++++++++ armsrc/string.h | 1 + common/lz4/lz4.c | 20 -------------------- 4 files changed, 19 insertions(+), 21 deletions(-) diff --git a/armsrc/Makefile b/armsrc/Makefile index 14747c7ed..5544c1aca 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -78,7 +78,7 @@ FPGA_BITSTREAMS = fpga_lf.bit fpga_hf.bit #the lz4 source files required for decompressing the fpga config at run time SRC_LZ4 = lz4.c #additional defines required to compile lz4 -LZ4_CFLAGS = -DNEED_MEMMOVE -DLZ4_MEMORY_USAGE=8 +LZ4_CFLAGS = -DLZ4_MEMORY_USAGE=8 APP_CFLAGS += $(LZ4_CFLAGS) # lz4 includes: APP_CFLAGS += -I../common/lz4 diff --git a/armsrc/string.c b/armsrc/string.c index 8dbe26808..300e911df 100644 --- a/armsrc/string.c +++ b/armsrc/string.c @@ -20,6 +20,23 @@ void *memcpy(void *dest, const void *src, int len) { return dest; } +void *memmove (void *dest, const void *src, size_t len) +{ + char *d = dest; + const char *s = src; + if (d < s) + while (len--) + *d++ = *s++; + else + { + char *lasts = (char*)s + (len-1); + char *lastd = d + (len-1); + while (len--) + *lastd-- = *lasts--; + } + return dest; +} + void *memset(void *dest, int c, int len) { uint8_t *d = dest; while ((len--) > 0) { diff --git a/armsrc/string.h b/armsrc/string.h index f8388d0a1..53f8e8f71 100644 --- a/armsrc/string.h +++ b/armsrc/string.h @@ -16,6 +16,7 @@ int strlen(const char *str); void *memcpy(void *dest, const void *src, int len); +void *memmove (void *dest, const void *src, size_t len); void *memset(void *dest, int c, int len); int memcmp(const void *av, const void *bv, int len); void memxor(uint8_t *dest, uint8_t *src, size_t len); diff --git a/common/lz4/lz4.c b/common/lz4/lz4.c index 25be146fd..375287c8a 100644 --- a/common/lz4/lz4.c +++ b/common/lz4/lz4.c @@ -182,26 +182,6 @@ #include <string.h> /* memset, memcpy */ #define MEM_INIT(p,v,s) memset((p),(v),(s)) -#ifdef NEED_MEMMOVE -void * -memmove (void *dest, const void *src, size_t len) -{ - char *d = dest; - const char *s = src; - if (d < s) - while (len--) - *d++ = *s++; - else - { - char *lasts = (char*)s + (len-1); - char *lastd = d + (len-1); - while (len--) - *lastd-- = *lasts--; - } - return dest; -} -#endif - /*-************************************ * Common Constants **************************************/ From b2c7ded7fca73febb6950fee2a97135dca5583bc Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sun, 7 Jun 2020 12:53:24 +0200 Subject: [PATCH 307/527] Adapt get_lz4.sh --- common/get_lz4.sh | 16 +++++++++++++++- common/lz4/lz4.c | 1 + 2 files changed, 16 insertions(+), 1 deletion(-) diff --git a/common/get_lz4.sh b/common/get_lz4.sh index ef4de2c7b..0daa62a80 100755 --- a/common/get_lz4.sh +++ b/common/get_lz4.sh @@ -2,4 +2,18 @@ version=1.9.2 mkdir -p lz4 wget https://github.com/lz4/lz4/archive/v$version.zip unzip -o -j v$version "lz4-$version/LICENSE" "lz4-$version/lib/lz4.h" "lz4-$version/lib/lz4.c" "lz4-$version/lib/lz4hc.h" "lz4-$version/lib/lz4hc.c" -d lz4 -rm v$version.zip \ No newline at end of file +rm v$version.zip +patch -p0 << EOF +diff -Naur lz4/lz4.c lz4/lz4.c +--- lz4/lz4.c 2019-08-15 13:59:59.000000000 +0200 ++++ lz4/lz4.c 2020-06-07 12:50:11.788924953 +0200 +@@ -1650,7 +1650,7 @@ + * Note that it is important for performance that this function really get inlined, + * in order to remove useless branches during compilation optimization. + */ +-LZ4_FORCE_INLINE int ++int + LZ4_decompress_generic( + const char* const src, + char* const dst, +EOF diff --git a/common/lz4/lz4.c b/common/lz4/lz4.c index 375287c8a..7c7ec93bd 100644 --- a/common/lz4/lz4.c +++ b/common/lz4/lz4.c @@ -182,6 +182,7 @@ #include <string.h> /* memset, memcpy */ #define MEM_INIT(p,v,s) memset((p),(v),(s)) + /*-************************************ * Common Constants **************************************/ From df9f34ba2b0a984abd500e7b2c35d63d8bffba8b Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sun, 7 Jun 2020 13:02:51 +0200 Subject: [PATCH 308/527] lz4/fpga_compress: remove warning missing-braces fpga_compress.c:154:49: error: suggest braces around initialization of subobject [-Werror,-Wmissing-braces] LZ4_streamDecode_t lz4StreamDecode_body = { 0 }; ^ {} --- tools/fpga_compress/fpga_compress.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index fc136523d..5c5dc8cdb 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -151,7 +151,7 @@ typedef struct lz4_stream_s { static int zlib_decompress(FILE *infile, FILE *outfile) { - LZ4_streamDecode_t lz4StreamDecode_body = { 0 }; + LZ4_streamDecode_t lz4StreamDecode_body = {{ 0 }}; char outbuf[FPGA_RING_BUFFER_BYTES]; fseek(infile, 0L, SEEK_END); From ef6b775f9fc21788c5992a2fb689ae37fc36db2c Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sun, 7 Jun 2020 13:10:59 +0200 Subject: [PATCH 309/527] lz4/fpga_compress: avoid alignment problems fpga_compress.c:176:32: warning: cast from 'char *' to 'int *' increases required alignment from 1 to 4 [-Wcast-align] const int cmp_bytes = *(int*)(compressed_fpga_stream.next_in); ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ --- tools/fpga_compress/fpga_compress.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index 5c5dc8cdb..7b5cdb2b2 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -173,7 +173,8 @@ static int zlib_decompress(FILE *infile, FILE *outfile) { int total_size = 0; while (compressed_fpga_stream.avail_in > 0) { - const int cmp_bytes = *(int*)(compressed_fpga_stream.next_in); + int cmp_bytes; + memcpy(&cmp_bytes, compressed_fpga_stream.next_in, sizeof(int)); compressed_fpga_stream.next_in += 4; compressed_fpga_stream.avail_in -= cmp_bytes + 4; const int decBytes = LZ4_decompress_safe_continue(compressed_fpga_stream.lz4StreamDecode, compressed_fpga_stream.next_in, outbuf, cmp_bytes, FPGA_RING_BUFFER_BYTES); From 09548ecf510f3d2a73a646bd57977c6d647c4478 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jun 2020 13:56:21 +0200 Subject: [PATCH 310/527] cleaning some code --- armsrc/start.c | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/armsrc/start.c b/armsrc/start.c index 25bfb2ade..e8de251bc 100644 --- a/armsrc/start.c +++ b/armsrc/start.c @@ -39,22 +39,14 @@ static void uncompress_data_section(void) { void __attribute__((section(".startos"))) Vector(void); void Vector(void) { /* Stack should have been set up by the bootloader */ - // char *src; - char *dst, *end; uncompress_data_section(); /* Set up (that is: clear) BSS. */ - dst = &__bss_start__; - end = &__bss_end__; + char *dst = &__bss_start__; + char *end = &__bss_end__; while (dst < end) *dst++ = 0; - // Set up data segment: Copy from flash to ram - // src = &__data_src_start__; - // dst = &__data_start__; - // end = &__data_end__; - // while(dst < end) *dst++ = *src++; - AppMain(); } #endif From 4e29909cc23418c6ad17638f5e4eda2e11408a18 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jun 2020 15:59:06 +0200 Subject: [PATCH 311/527] chg: pointer casting to sort out array out of bonds --- armsrc/start.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/armsrc/start.c b/armsrc/start.c index e8de251bc..11b1064ba 100644 --- a/armsrc/start.c +++ b/armsrc/start.c @@ -28,7 +28,8 @@ static void uncompress_data_section(void) { memcpy(&avail_in, &__data_start__, sizeof(int)); int avail_out = &__data_end__ - &__data_start__; // uncompressed size. Correct. // uncompress data segment to RAM - int res = LZ4_decompress_safe(&__data_src_start__ + 4, &__data_start__, avail_in, avail_out); + uintptr_t p = (uintptr_t)&__data_src_start__; + int res = LZ4_decompress_safe((char*)p + 4, &__data_start__, avail_in, avail_out); if (res < 0) return; From 33781b1fd8f6e8e69c39c4f57346b8548958da57 Mon Sep 17 00:00:00 2001 From: slurdge <slurdge@slurdge.org> Date: Sun, 7 Jun 2020 17:29:25 +0200 Subject: [PATCH 312/527] Move most of libs to thumb mode. --- armsrc/Makefile | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/armsrc/Makefile b/armsrc/Makefile index 23ac247c3..3647d8630 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -100,6 +100,14 @@ THUMBSRC = start.c \ $(SRC_FPC) \ $(SRC_HITAG) \ $(SRC_SPIFFS) \ + $(SRC_ISO14443a) \ + $(SRC_ISO14443b) \ + $(SRC_CRAPTO1) \ + $(SRC_ICLASS) \ + $(SRC_EMV) \ + $(SRC_CRC) \ + $(SRC_FELICA) \ + $(SRC_STANDALONE) \ appmain.c \ printf.c \ dbprint.c \ @@ -114,14 +122,6 @@ THUMBSRC = start.c \ # These are to be compiled in ARM mode ARMSRC = fpgaloader.c \ - $(SRC_ISO14443a) \ - $(SRC_ISO14443b) \ - $(SRC_CRAPTO1) \ - $(SRC_ICLASS) \ - $(SRC_EMV) \ - $(SRC_CRC) \ - $(SRC_FELICA) \ - $(SRC_STANDALONE) \ parity.c \ usb_cdc.c \ cmd.c From 7f5c9a2681c729a52cdd92b19705a274dbe24a46 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jun 2020 18:40:12 +0200 Subject: [PATCH 313/527] textual --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 448c7e88f..f0f70916b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Change pushed some ARM source to compile with THUMB. Saves a lot of space of ARM flash memory @slurdge + - Change from using ZLIB compression of FPGA images in ARM to LZ4. 15%+ speedups when swapping between HF & LF now @slurdge - Fix `emv scan -w` - hash mismatch, solution similar to below (@iceman1001) - Fix 'emv roca' - hash mismatch, merged from offical repo (@pwpiwi) - Fix 'lf ti demod' - now calculates correct crc (@iceman1001) From 07c6e124c58684ba6b80004ae5ef1747e6078323 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sun, 7 Jun 2020 19:20:36 +0200 Subject: [PATCH 314/527] textual --- common_arm/Makefile.common | 2 +- doc/fpga_arm_notes.md | 4 ++-- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/common_arm/Makefile.common b/common_arm/Makefile.common index d6415dcda..e6d1636e9 100644 --- a/common_arm/Makefile.common +++ b/common_arm/Makefile.common @@ -34,7 +34,7 @@ OBJDIR = obj INCLUDE = -I../include -I../common_arm -I../common_fpga -I../common -I. -# Also search prerequisites in the common directory (for usb.c), the fpga directory (for fpga.bit), and the zlib directory +# Also search prerequisites in the common directory (for usb.c), the fpga directory (for fpga.bit), and the lz4 directory VPATH = . ../common_arm ../common ../common/crapto1 ../common/mbedtls ../common/lz4 ../fpga ../armsrc/Standalone INCLUDES = ../include/proxmark3_arm.h ../include/at91sam7s512.h ../include/config_gpio.h ../include/pm3_cmd.h diff --git a/doc/fpga_arm_notes.md b/doc/fpga_arm_notes.md index 48891408e..c066b316b 100644 --- a/doc/fpga_arm_notes.md +++ b/doc/fpga_arm_notes.md @@ -46,7 +46,7 @@ There is very rarely changes to the images so there is no need to setup a fpga t Since the FPGA is very old, the Xilinix WebPack ISE 10.1 is the last working tool chain. You can download this legacy development on xilinix and register for a free product installation id. Or use mine `11LTAJ5ZJK3PXTUBMF0C0J6C4` The package to download is about 7Gb and linux based. Though I recently managed to install it on WSL for Windows 10. -In order to save space, these fpga images is zlib compressed and included in the fullimage.elf file when compiling the ARM SRC. `make armsrc` +In order to save space, these fpga images are LZ4 compressed and included in the fullimage.elf file when compiling the ARM SRC. `make armsrc` This means we save some precious space on the ARM but its a bit more complex when flashing to fpga since it has to decompress on the fly. @@ -246,4 +246,4 @@ IQ2 = -1,1 : 1, 1 (falling) | | (q1) -1,-1 | 1, -1 -``` \ No newline at end of file +``` From 79ce948bc32d3b8129cda76caa691088232e32b4 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jun 2020 19:23:48 +0200 Subject: [PATCH 315/527] warnings protype missing --- common/lz4/lz4.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/common/lz4/lz4.c b/common/lz4/lz4.c index 7c7ec93bd..9de0c00db 100644 --- a/common/lz4/lz4.c +++ b/common/lz4/lz4.c @@ -1270,6 +1270,7 @@ int LZ4_compress_default(const char* src, char* dst, int srcSize, int maxOutputS } +int LZ4_compress_fast_force(const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); /* hidden debug function */ /* strangely enough, gcc generates faster code when this function is uncommented, even if unused */ int LZ4_compress_fast_force(const char* src, char* dst, int srcSize, int dstCapacity, int acceleration) @@ -1644,6 +1645,9 @@ read_variable_length(const BYTE**ip, const BYTE* lencheck, int loop_check, int i return length; } +int LZ4_decompress_generic(const char* const src, char* const dst, int srcSize, int outputSize, endCondition_directive endOnInput, earlyEnd_directive partialDecoding, + dict_directive dict, const BYTE* const lowPrefix, const BYTE* const dictStart, const size_t dictSize ); + /*! LZ4_decompress_generic() : * This generic decompression function covers all use cases. * It shall be instantiated several times, using different sets of directives. From ae10e76cb51cdb00d1747881a09443f86c222f6c Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jun 2020 19:25:56 +0200 Subject: [PATCH 316/527] fix resource leak --- client/src/cmdhflto.c | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/client/src/cmdhflto.c b/client/src/cmdhflto.c index 74b724bb6..5add871b1 100644 --- a/client/src/cmdhflto.c +++ b/client/src/cmdhflto.c @@ -599,15 +599,17 @@ static int CmdHfLTRestore(const char *Cmd) { uint8_t *dump = NULL; if (loadFile_safe(filename, "", (void**)&dump, &dump_len) == PM3_SUCCESS) { restoreLTO(dump, true); - free(dump); } + free(dump); + } else if (str_endswith(lowstr, ".eml")) { uint8_t *dump = NULL; if (loadFileEML_safe(filename, (void**)&dump, &dump_len) == PM3_SUCCESS) { restoreLTO(dump, true); - free(dump); } + free(dump); + } else { PrintAndLogEx(WARNING, "Warning: invalid dump filename " _YELLOW_("%s") " to restore", filename); } From 8dd56a9004861223b6dd3c27a2c6bbd9b9ab5c64 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jun 2020 19:29:14 +0200 Subject: [PATCH 317/527] fix resource leak --- client/src/cmdsmartcard.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index 9fe192e6b..63b32890e 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -593,6 +593,7 @@ static int CmdSmartUpgrade(const char *Cmd) { if (sha512_size < 128) { PrintAndLogEx(FAILED, "SHA-512 file wrong size"); + free(hashstring); free(firmware); return PM3_ESOFT; } @@ -601,6 +602,7 @@ static int CmdSmartUpgrade(const char *Cmd) { uint8_t hash_1[64]; if (param_gethex(hashstring, 0, hash_1, 128)) { PrintAndLogEx(FAILED, "Couldn't read SHA-512 file"); + free(hashstring); free(firmware); return PM3_ESOFT; } @@ -608,16 +610,19 @@ static int CmdSmartUpgrade(const char *Cmd) { uint8_t hash_2[64]; if (sha512hash(firmware, firmware_size, hash_2)) { PrintAndLogEx(FAILED, "Couldn't calculate SHA-512 of firmware"); + free(hashstring); free(firmware); return PM3_ESOFT; } if (memcmp(hash_1, hash_2, 64)) { PrintAndLogEx(FAILED, "Couldn't verify integrity of firmware file " _RED_("(wrong SHA-512 hash)")); + free(hashstring); free(firmware); return PM3_ESOFT; } - + free(hashstring); + PrintAndLogEx(SUCCESS, "Sim module firmware uploading to PM3"); //Send to device From 9a2a5496c01e9da5d864d834d2e4825d90afb880 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jun 2020 19:33:32 +0200 Subject: [PATCH 318/527] fix, resource leaks --- tools/fpga_compress/fpga_compress.c | 14 +++++++++----- 1 file changed, 9 insertions(+), 5 deletions(-) diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index 7b5cdb2b2..278fb29c4 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -91,8 +91,10 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile, boo } while (!all_feof(infile, num_infiles)); uint32_t buffer_size = FPGA_RING_BUFFER_BYTES; + if (num_infiles == 1) buffer_size = 1024*1024; //1M for now + uint32_t outsize_max = LZ4_compressBound(buffer_size); char *outbuf = calloc(outsize_max, sizeof(char)); @@ -145,7 +147,7 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile, boo typedef struct lz4_stream_s { LZ4_streamDecode_t* lz4StreamDecode; - char * next_in; + char* next_in; int avail_in; } lz4_stream; @@ -158,10 +160,11 @@ static int zlib_decompress(FILE *infile, FILE *outfile) { long infile_size = ftell(infile); fseek(infile, 0L, SEEK_SET); - char * inbuf = calloc(infile_size, sizeof(char)); + char* inbuf = calloc(infile_size, sizeof(char)); size_t num_read = fread(inbuf, sizeof(char), infile_size, infile); if (num_read != infile_size) { + free(inbuf); return (EXIT_FAILURE); } @@ -188,6 +191,7 @@ static int zlib_decompress(FILE *infile, FILE *outfile) { printf("uncompressed %li input bytes to %i output bytes\n", infile_size, total_size); fclose(outfile); fclose(infile); + free(inbuf); return (EXIT_SUCCESS); } @@ -280,7 +284,7 @@ static int FpgaGatherVersion(FILE *infile, char *infile_name, char *dst, int len strncat(dst, " on ", len - strlen(dst) - 1); for (uint16_t i = 0; i < fpga_info_len; i++) { char c = (char)fgetc(infile); - if (i < sizeof(tempstr)) { + if (i < sizeof(tempstr)) { if (c == '/') c = '-'; if (c == ' ') c = '0'; tempstr[i] = c; @@ -314,8 +318,8 @@ static void print_version_info_preamble(FILE *outfile, int num_infiles) { fprintf(outfile, "//\n"); fprintf(outfile, "// This file is generated by fpga_compress. Don't edit!\n"); fprintf(outfile, "//-----------------------------------------------------------------------------\n"); - fprintf(outfile, "\n"); - fprintf(outfile, "\n"); + fprintf(outfile, "// slurdge, 2020\n"); + fprintf(outfile, "\n\n"); fprintf(outfile, "const int g_fpga_bitstream_num = %d;\n", num_infiles); fprintf(outfile, "const char *const g_fpga_version_information[%d] = {\n", num_infiles); } From 5c43caa6b1fe031338b5f3f0a2f4aa03df400eea Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jun 2020 19:36:48 +0200 Subject: [PATCH 319/527] fix: ftell uses long int --- tools/fpga_compress/fpga_compress.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index 278fb29c4..ec6cf596e 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -157,7 +157,7 @@ static int zlib_decompress(FILE *infile, FILE *outfile) { char outbuf[FPGA_RING_BUFFER_BYTES]; fseek(infile, 0L, SEEK_END); - long infile_size = ftell(infile); + long int infile_size = ftell(infile); fseek(infile, 0L, SEEK_SET); char* inbuf = calloc(infile_size, sizeof(char)); From a9d89c7d06e7041ee1186cee7f0673c614aea359 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jun 2020 19:46:41 +0200 Subject: [PATCH 320/527] fix: RAMFUNC --- include/common.h | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/include/common.h b/include/common.h index 9f04d75c7..3c6245e52 100644 --- a/include/common.h +++ b/include/common.h @@ -70,7 +70,10 @@ extern int DBGLEVEL; #ifndef ABS # define ABS(a) ( ((a)<0) ? -(a) : (a) ) #endif -#define RAMFUNC __attribute((long_call, section(".ramfunc"))) + + +//#define RAMFUNC __attribute((long_call, section(".ramfunc"))) +#define RAMFUNC __attribute((long_call, section(".ramfunc"))) __attribute__((target("arm"))) #ifndef ROTR # define ROTR(x,n) (((uintmax_t)(x) >> (n)) | ((uintmax_t)(x) << ((sizeof(x) * 8) - (n)))) From 307e39bb22d4f006264be04e0265eab0777e52e7 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jun 2020 19:47:36 +0200 Subject: [PATCH 321/527] exposing function --- client/src/fileutils.c | 6 ++---- client/src/fileutils.h | 1 + 2 files changed, 3 insertions(+), 4 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 3d3175859..6095132aa 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -225,7 +225,7 @@ static char *filenamemcopy(const char *preferredName, const char *suffix) { return fileName; } -static char *newfilenamemcopy(const char *preferredName, const char *suffix) { +char *newfilenamemcopy(const char *preferredName, const char *suffix) { if (preferredName == NULL) return NULL; if (suffix == NULL) return NULL; uint16_t preferredNameLen = strlen(preferredName); @@ -948,12 +948,10 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz if (fileName == NULL) return PM3_EMALLOC; *datalen = 0; - json_t *root; json_error_t error; - int retval = PM3_SUCCESS; - root = json_load_file(fileName, 0, &error); + json_t *root = json_load_file(fileName, 0, &error); if (!root) { PrintAndLogEx(ERR, "ERROR: json " _YELLOW_("%s") " error on line %d: %s", fileName, error.line, error.text); retval = PM3_ESOFT; diff --git a/client/src/fileutils.h b/client/src/fileutils.h index d3d757408..30dc00251 100644 --- a/client/src/fileutils.h +++ b/client/src/fileutils.h @@ -77,6 +77,7 @@ int fileExists(const char *filename); //bool create_path(const char *dirname); //bool setDefaultPath (savePaths_t pathIndex,const char *Path); // set a path in the path list session.defaultPaths +char *newfilenamemcopy(const char *preferredName, const char *suffix); /** * @brief Utility function to save data to a binary file. This method takes a preferred name, but if that From d0b22cbd957aab7731c45232bfcfddf3fc654f02 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jun 2020 20:11:36 +0200 Subject: [PATCH 322/527] coverty 290397, 290399 --- client/src/cmdhffido.c | 14 +++++++++++++- 1 file changed, 13 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhffido.c b/client/src/cmdhffido.c index 4b58e1cba..1458c1f14 100644 --- a/client/src/cmdhffido.c +++ b/client/src/cmdhffido.c @@ -201,12 +201,14 @@ static int CmdHFFidoRegister(const char *cmd) { CLIGetStrWithReturn(ctx, 6, cdata, &chlen); if (chlen > 16) { PrintAndLogEx(ERR, "ERROR: challenge parameter length in ASCII mode must be less than 16 chars instead of: %d", chlen); + CLIParserFree(ctx); return PM3_EINVARG; } } else { CLIGetHexWithReturn(ctx, 6, cdata, &chlen); if (chlen && chlen != 32) { PrintAndLogEx(ERR, "ERROR: challenge parameter length must be 32 bytes only."); + CLIParserFree(ctx); return PM3_EINVARG; } } @@ -219,12 +221,14 @@ static int CmdHFFidoRegister(const char *cmd) { CLIGetStrWithReturn(ctx, 7, adata, &applen); if (applen > 16) { PrintAndLogEx(ERR, "ERROR: application parameter length in ASCII mode must be less than 16 chars instead of: %d", applen); + CLIParserFree(ctx); return PM3_EINVARG; } } else { CLIGetHexWithReturn(ctx, 7, adata, &applen); if (applen && applen != 32) { PrintAndLogEx(ERR, "ERROR: application parameter length must be 32 bytes only."); + CLIParserFree(ctx); return PM3_EINVARG; } } @@ -446,8 +450,10 @@ static int CmdHFFidoAuthenticate(const char *cmd) { CLIGetHexWithReturn(ctx, 8, hdata, &hdatalen); if (hdatalen && hdatalen != 65) { PrintAndLogEx(ERR, "ERROR: public key length must be 65 bytes only."); + CLIParserFree(ctx); return PM3_EINVARG; } + if (hdatalen) { memmove(public_key, hdata, hdatalen); public_key_loaded = true; @@ -456,8 +462,10 @@ static int CmdHFFidoAuthenticate(const char *cmd) { CLIGetHexWithReturn(ctx, 9, hdata, &hdatalen); if (hdatalen > 255) { PrintAndLogEx(ERR, "ERROR: application parameter length must be less than 255."); + CLIParserFree(ctx); return PM3_EINVARG; } + if (hdatalen) { keyHandleLen = hdatalen; data[64] = keyHandleLen; @@ -469,15 +477,18 @@ static int CmdHFFidoAuthenticate(const char *cmd) { CLIGetStrWithReturn(ctx, 9, hdata, &hdatalen); if (hdatalen > 16) { PrintAndLogEx(ERR, "ERROR: challenge parameter length in ASCII mode must be less than 16 chars instead of: %d", hdatalen); + CLIParserFree(ctx); return PM3_EINVARG; } } else { CLIGetHexWithReturn(ctx, 10, hdata, &hdatalen); if (hdatalen && hdatalen != 32) { PrintAndLogEx(ERR, "ERROR: challenge parameter length must be 32 bytes only."); + CLIParserFree(ctx); return PM3_EINVARG; } } + if (hdatalen) memmove(data, hdata, 32); @@ -486,7 +497,7 @@ static int CmdHFFidoAuthenticate(const char *cmd) { CLIGetStrWithReturn(ctx, 11, hdata, &hdatalen); if (hdatalen > 16) { PrintAndLogEx(ERR, "ERROR: application parameter length in ASCII mode must be less than 16 chars instead of: %d", hdatalen); - CLIParserFree(ctx); + CLIParserFree(ctx); return PM3_EINVARG; } } else { @@ -497,6 +508,7 @@ static int CmdHFFidoAuthenticate(const char *cmd) { return PM3_EINVARG; } } + if (hdatalen) memmove(&data[32], hdata, 32); From 1bb7b041c0a9572bf6777fd2d5c43c36eab857d6 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jun 2020 20:45:55 +0200 Subject: [PATCH 323/527] resource leaks --- tools/fpga_compress/fpga_compress.c | 51 +++++++++++++++-------------- 1 file changed, 26 insertions(+), 25 deletions(-) diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index ec6cf596e..7d574fb38 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -34,7 +34,6 @@ static void usage(void) { fprintf(stdout, " Compress hardnested table <infile>. Write result to <outfile>\n\n"); } - static bool all_feof(FILE *infile[], uint8_t num_infiles) { for (uint16_t i = 0; i < num_infiles; i++) { if (!feof(infile[i])) { @@ -44,17 +43,15 @@ static bool all_feof(FILE *infile[], uint8_t num_infiles) { return true; } - static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile, bool hardnested_mode) { uint8_t *fpga_config; - //int32_t ret; - uint8_t c; if (hardnested_mode) { fpga_config = calloc(num_infiles * HARDNESTED_TABLE_SIZE, sizeof(uint8_t)); } else { fpga_config = calloc(num_infiles * FPGA_CONFIG_SIZE, sizeof(uint8_t)); } + // read the input files. Interleave them into fpga_config[] uint32_t total_size = 0; do { @@ -79,7 +76,8 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile, boo for (uint16_t j = 0; j < num_infiles; j++) { for (uint16_t k = 0; k < FPGA_INTERLEAVE_SIZE; k++) { - c = (uint8_t)fgetc(infile[j]); + uint8_t c = (uint8_t)fgetc(infile[j]); + if (!feof(infile[j])) { fpga_config[total_size++] = c; } else if (num_infiles > 1) { @@ -93,7 +91,7 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile, boo uint32_t buffer_size = FPGA_RING_BUFFER_BYTES; if (num_infiles == 1) - buffer_size = 1024*1024; //1M for now + buffer_size = 1024 * 1024; //1M for now uint32_t outsize_max = LZ4_compressBound(buffer_size); @@ -109,40 +107,34 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile, boo int bytes_to_copy = FPGA_RING_BUFFER_BYTES; if (total_size - current_in < FPGA_RING_BUFFER_BYTES) bytes_to_copy = total_size - current_in; + memcpy(ring_buffer, fpga_config + current_in, bytes_to_copy); int cmp_bytes = LZ4_compress_HC_continue(lz4_streamhc, ring_buffer, outbuf, bytes_to_copy, outsize_max); + fwrite(&cmp_bytes, sizeof(int), 1, outfile); fwrite(outbuf, sizeof(char), cmp_bytes, outfile); + current_in += bytes_to_copy; current_out += cmp_bytes; } free(ring_buffer); - + free(outbuf); + free(fpga_config); + + fclose(outfile); + for (uint16_t j = 0; j < num_infiles; j++) { + fclose(infile[j]); + } + LZ4_freeStreamHC(lz4_streamhc); + fprintf(stdout, "compressed %u input bytes to %u output bytes\n", total_size, current_out); if (current_out == 0) { fprintf(stderr, "Error in lz4"); - free(outbuf); - for (uint16_t j = 0; j < num_infiles; j++) { - fclose(infile[j]); - } - fclose(outfile); - free(fpga_config); return (EXIT_FAILURE); } - - free(outbuf); - - for (uint16_t j = 0; j < num_infiles; j++) { - fclose(infile[j]); - } - fclose(outfile); - LZ4_freeStreamHC(lz4_streamhc); - free(fpga_config); - return (EXIT_SUCCESS); - } typedef struct lz4_stream_s { @@ -157,13 +149,22 @@ static int zlib_decompress(FILE *infile, FILE *outfile) { char outbuf[FPGA_RING_BUFFER_BYTES]; fseek(infile, 0L, SEEK_END); - long int infile_size = ftell(infile); + long infile_size = ftell(infile); fseek(infile, 0L, SEEK_SET); + if (infile_size <= 0) { + printf("error, when getting filesize"); + fclose(outfile); + fclose(infile); + return (EXIT_FAILURE); + } + char* inbuf = calloc(infile_size, sizeof(char)); size_t num_read = fread(inbuf, sizeof(char), infile_size, infile); if (num_read != infile_size) { + fclose(outfile); + fclose(infile); free(inbuf); return (EXIT_FAILURE); } From 93dbb2410345066a5153e3b33668cf223bbbb2df Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jun 2020 20:46:29 +0200 Subject: [PATCH 324/527] ftell return signed --- client/src/fileutils.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 6095132aa..c27dc0a15 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1143,7 +1143,8 @@ int loadFileDICTIONARYEx(const char *preferredName, void *data, size_t maxdatale // read file while (!feof(f)) { - size_t filepos = ftell(f); + long filepos = ftell(f); + if (!fgets(line, sizeof(line), f)) { if (endFilePosition) *endFilePosition = 0; From 690db96a7d732e3eaf4c8b9ecab87f31a95e6a9e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 7 Jun 2020 22:05:54 +0200 Subject: [PATCH 325/527] fix: osx doesn't like target directive --- include/common.h | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/include/common.h b/include/common.h index 3c6245e52..cb0962b56 100644 --- a/include/common.h +++ b/include/common.h @@ -72,8 +72,12 @@ extern int DBGLEVEL; #endif -//#define RAMFUNC __attribute((long_call, section(".ramfunc"))) +#if defined(__APPLE__) +#define RAMFUNC __attribute((long_call, section(".ramfunc"))) +#else #define RAMFUNC __attribute((long_call, section(".ramfunc"))) __attribute__((target("arm"))) +#endif + #ifndef ROTR # define ROTR(x,n) (((uintmax_t)(x) >> (n)) | ((uintmax_t)(x) << ((sizeof(x) * 8) - (n)))) From 8418e8918026a9fd882e9eba8b85665321f56e83 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 8 Jun 2020 02:49:38 +0200 Subject: [PATCH 326/527] fix gitignore, was masking tools/fpga_compress --- .gitignore | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/.gitignore b/.gitignore index bdd98d374..a89e3f6e9 100644 --- a/.gitignore +++ b/.gitignore @@ -61,9 +61,9 @@ flasher !flasher/ lua luac -fpga_compress -mfkey32 -mfkey64 +tools/fpga_compress/fpga_compress +tools/mfkey/mfkey32 +tools/mfkey/mfkey64 tools/nonce2key/nonce2key fpga/* From 15012198f9f1a57bb4e4fa12bc0b51db6575b9b8 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sun, 7 Jun 2020 17:43:39 +0200 Subject: [PATCH 327/527] client: replace zlib by bzip2 --- .travis.yml | 1 + client/CMakeLists.txt | 2 +- client/Makefile | 43 ++------------ client/deps/CMakeLists.txt | 3 - client/deps/zlib.cmake | 14 ----- .../bitflip_0_001_states.bin.bz2 | Bin 0 -> 2801 bytes .../bitflip_0_001_states.bin.z | Bin 21464 -> 0 bytes .../bitflip_0_003_states.bin.bz2 | Bin 0 -> 1531 bytes .../bitflip_0_003_states.bin.z | Bin 11164 -> 0 bytes .../bitflip_0_005_states.bin.bz2 | Bin 0 -> 4901 bytes .../bitflip_0_005_states.bin.z | Bin 25606 -> 0 bytes .../bitflip_0_007_states.bin.bz2 | Bin 0 -> 1591 bytes .../bitflip_0_007_states.bin.z | Bin 11136 -> 0 bytes .../bitflip_0_009_states.bin.bz2 | Bin 0 -> 1780 bytes .../bitflip_0_009_states.bin.z | Bin 11407 -> 0 bytes .../bitflip_0_00b_states.bin.bz2 | Bin 0 -> 1069 bytes .../bitflip_0_00b_states.bin.z | Bin 5964 -> 0 bytes .../bitflip_0_00d_states.bin.bz2 | Bin 0 -> 2204 bytes .../bitflip_0_00d_states.bin.z | Bin 17232 -> 0 bytes .../bitflip_0_00f_states.bin.bz2 | Bin 0 -> 1214 bytes .../bitflip_0_00f_states.bin.z | Bin 7685 -> 0 bytes .../bitflip_0_010_states.bin.bz2 | Bin 0 -> 1557 bytes .../bitflip_0_010_states.bin.z | Bin 17328 -> 0 bytes .../bitflip_0_014_states.bin.bz2 | Bin 0 -> 3138 bytes .../bitflip_0_014_states.bin.z | Bin 21124 -> 0 bytes .../bitflip_0_01c_states.bin.bz2 | Bin 0 -> 1120 bytes .../bitflip_0_01c_states.bin.z | Bin 12840 -> 0 bytes .../bitflip_0_021_states.bin.bz2 | Bin 0 -> 7328 bytes .../bitflip_0_021_states.bin.z | Bin 33654 -> 0 bytes .../bitflip_0_023_states.bin.bz2 | Bin 0 -> 2080 bytes .../bitflip_0_023_states.bin.z | Bin 17592 -> 0 bytes .../bitflip_0_025_states.bin.bz2 | Bin 0 -> 13155 bytes .../bitflip_0_025_states.bin.z | 49 ---------------- .../bitflip_0_027_states.bin.bz2 | Bin 0 -> 2632 bytes .../bitflip_0_027_states.bin.z | Bin 21994 -> 0 bytes .../bitflip_0_029_states.bin.bz2 | Bin 0 -> 2402 bytes .../bitflip_0_029_states.bin.z | Bin 18850 -> 0 bytes .../bitflip_0_02b_states.bin.bz2 | Bin 0 -> 1408 bytes .../bitflip_0_02b_states.bin.z | Bin 9230 -> 0 bytes .../bitflip_0_02d_states.bin.bz2 | Bin 0 -> 3826 bytes .../bitflip_0_02d_states.bin.z | Bin 27896 -> 0 bytes .../bitflip_0_02f_states.bin.bz2 | Bin 0 -> 1660 bytes .../bitflip_0_02f_states.bin.z | Bin 14181 -> 0 bytes .../bitflip_0_030_states.bin.bz2 | Bin 0 -> 1119 bytes .../bitflip_0_030_states.bin.z | Bin 14726 -> 0 bytes .../bitflip_0_034_states.bin.bz2 | Bin 0 -> 1317 bytes .../bitflip_0_034_states.bin.z | Bin 15953 -> 0 bytes .../bitflip_0_03c_states.bin.bz2 | Bin 0 -> 924 bytes .../bitflip_0_03c_states.bin.z | Bin 9693 -> 0 bytes .../bitflip_0_040_states.bin.bz2 | Bin 0 -> 413 bytes .../bitflip_0_040_states.bin.z | Bin 9770 -> 0 bytes .../bitflip_0_044_states.bin.bz2 | Bin 0 -> 3460 bytes .../bitflip_0_044_states.bin.z | Bin 22156 -> 0 bytes .../bitflip_0_04c_states.bin.bz2 | Bin 0 -> 1219 bytes .../bitflip_0_04c_states.bin.z | Bin 14808 -> 0 bytes .../bitflip_0_051_states.bin.bz2 | Bin 0 -> 2568 bytes .../bitflip_0_051_states.bin.z | Bin 18194 -> 0 bytes .../bitflip_0_053_states.bin.bz2 | Bin 0 -> 1356 bytes .../bitflip_0_053_states.bin.z | Bin 9176 -> 0 bytes .../bitflip_0_055_states.bin.bz2 | Bin 0 -> 5503 bytes .../bitflip_0_055_states.bin.z | Bin 27783 -> 0 bytes .../bitflip_0_057_states.bin.bz2 | Bin 0 -> 1890 bytes .../bitflip_0_057_states.bin.z | Bin 14121 -> 0 bytes .../bitflip_0_059_states.bin.bz2 | Bin 0 -> 1820 bytes .../bitflip_0_059_states.bin.z | Bin 11331 -> 0 bytes .../bitflip_0_05b_states.bin.bz2 | Bin 0 -> 1077 bytes .../bitflip_0_05b_states.bin.z | Bin 5875 -> 0 bytes .../bitflip_0_05d_states.bin.bz2 | Bin 0 -> 2472 bytes .../bitflip_0_05d_states.bin.z | Bin 18417 -> 0 bytes .../bitflip_0_05f_states.bin.bz2 | Bin 0 -> 1448 bytes .../bitflip_0_05f_states.bin.z | Bin 9377 -> 0 bytes .../bitflip_0_064_states.bin.bz2 | Bin 0 -> 1324 bytes .../bitflip_0_064_states.bin.z | Bin 16059 -> 0 bytes .../bitflip_0_06c_states.bin.bz2 | Bin 0 -> 926 bytes .../bitflip_0_06c_states.bin.z | Bin 9733 -> 0 bytes .../bitflip_0_071_states.bin.bz2 | Bin 0 -> 6959 bytes .../bitflip_0_071_states.bin.z | Bin 31947 -> 0 bytes .../bitflip_0_073_states.bin.bz2 | Bin 0 -> 1861 bytes .../bitflip_0_073_states.bin.z | Bin 15941 -> 0 bytes .../bitflip_0_075_states.bin.bz2 | Bin 0 -> 12922 bytes .../bitflip_0_075_states.bin.z | Bin 42790 -> 0 bytes .../bitflip_0_077_states.bin.bz2 | Bin 0 -> 2916 bytes .../bitflip_0_077_states.bin.z | Bin 23984 -> 0 bytes .../bitflip_0_079_states.bin.bz2 | Bin 0 -> 2400 bytes .../bitflip_0_079_states.bin.z | Bin 18851 -> 0 bytes .../bitflip_0_07b_states.bin.bz2 | Bin 0 -> 1404 bytes .../bitflip_0_07b_states.bin.z | Bin 9229 -> 0 bytes .../bitflip_0_07f_states.bin.bz2 | Bin 0 -> 2054 bytes .../bitflip_0_07f_states.bin.z | Bin 16505 -> 0 bytes .../bitflip_0_081_states.bin.bz2 | Bin 0 -> 5982 bytes .../bitflip_0_081_states.bin.z | Bin 28820 -> 0 bytes .../bitflip_0_083_states.bin.bz2 | Bin 0 -> 2134 bytes .../bitflip_0_083_states.bin.z | Bin 15336 -> 0 bytes .../bitflip_0_085_states.bin.bz2 | Bin 0 -> 2460 bytes .../bitflip_0_085_states.bin.z | Bin 19596 -> 0 bytes .../bitflip_0_087_states.bin.bz2 | Bin 0 -> 1352 bytes .../bitflip_0_087_states.bin.z | Bin 9176 -> 0 bytes .../bitflip_0_089_states.bin.bz2 | Bin 0 -> 2505 bytes .../bitflip_0_089_states.bin.z | Bin 18253 -> 0 bytes .../bitflip_0_08b_states.bin.bz2 | Bin 0 -> 1469 bytes .../bitflip_0_08b_states.bin.z | Bin 9416 -> 0 bytes .../bitflip_0_08d_states.bin.bz2 | Bin 0 -> 1788 bytes .../bitflip_0_08d_states.bin.z | Bin 11330 -> 0 bytes .../bitflip_0_08f_states.bin.bz2 | Bin 0 -> 1080 bytes .../bitflip_0_08f_states.bin.z | Bin 5875 -> 0 bytes .../bitflip_0_090_states.bin.bz2 | Bin 0 -> 1281 bytes .../bitflip_0_090_states.bin.z | Bin 15272 -> 0 bytes .../bitflip_0_094_states.bin.bz2 | Bin 0 -> 6279 bytes .../bitflip_0_094_states.bin.z | Bin 27477 -> 0 bytes .../bitflip_0_09c_states.bin.bz2 | Bin 0 -> 1431 bytes .../bitflip_0_09c_states.bin.z | Bin 18443 -> 0 bytes .../bitflip_0_0a1_states.bin.bz2 | Bin 0 -> 13572 bytes .../bitflip_0_0a1_states.bin.z | Bin 43080 -> 0 bytes .../bitflip_0_0a3_states.bin.bz2 | Bin 0 -> 2973 bytes .../bitflip_0_0a3_states.bin.z | Bin 24297 -> 0 bytes .../bitflip_0_0a5_states.bin.bz2 | Bin 0 -> 6943 bytes .../bitflip_0_0a5_states.bin.z | Bin 32404 -> 0 bytes .../bitflip_0_0a7_states.bin.bz2 | Bin 0 -> 1863 bytes .../bitflip_0_0a7_states.bin.z | Bin 15903 -> 0 bytes .../bitflip_0_0a9_states.bin.bz2 | Bin 0 -> 3825 bytes .../bitflip_0_0a9_states.bin.z | Bin 28223 -> 0 bytes .../bitflip_0_0ab_states.bin.bz2 | Bin 0 -> 1924 bytes .../bitflip_0_0ab_states.bin.z | Bin 15110 -> 0 bytes .../bitflip_0_0ad_states.bin.bz2 | Bin 0 -> 2419 bytes .../bitflip_0_0ad_states.bin.z | Bin 18794 -> 0 bytes .../bitflip_0_0af_states.bin.bz2 | Bin 0 -> 1409 bytes .../bitflip_0_0af_states.bin.z | Bin 9191 -> 0 bytes .../bitflip_0_0b0_states.bin.bz2 | Bin 0 -> 513 bytes .../bitflip_0_0b0_states.bin.z | Bin 12014 -> 0 bytes .../bitflip_0_0b4_states.bin.bz2 | Bin 0 -> 3041 bytes .../bitflip_0_0b4_states.bin.z | Bin 21106 -> 0 bytes .../bitflip_0_0bc_states.bin.bz2 | Bin 0 -> 1129 bytes .../bitflip_0_0bc_states.bin.z | Bin 14387 -> 0 bytes .../bitflip_0_0c0_states.bin.bz2 | Bin 0 -> 415 bytes .../bitflip_0_0c0_states.bin.z | Bin 9771 -> 0 bytes .../bitflip_0_0c4_states.bin.bz2 | Bin 0 -> 5975 bytes .../bitflip_0_0c4_states.bin.z | Bin 27220 -> 0 bytes .../bitflip_0_0cc_states.bin.bz2 | Bin 0 -> 1614 bytes .../bitflip_0_0cc_states.bin.z | Bin 19919 -> 0 bytes .../bitflip_0_0d1_states.bin.bz2 | Bin 0 -> 5983 bytes .../bitflip_0_0d1_states.bin.z | Bin 28438 -> 0 bytes .../bitflip_0_0d3_states.bin.bz2 | Bin 0 -> 2082 bytes .../bitflip_0_0d3_states.bin.z | Bin 16025 -> 0 bytes .../bitflip_0_0d5_states.bin.bz2 | Bin 0 -> 2460 bytes .../bitflip_0_0d5_states.bin.z | Bin 19686 -> 0 bytes .../bitflip_0_0d7_states.bin.bz2 | Bin 0 -> 1352 bytes .../bitflip_0_0d7_states.bin.z | Bin 9175 -> 0 bytes .../bitflip_0_0d9_states.bin.bz2 | Bin 0 -> 2498 bytes .../bitflip_0_0d9_states.bin.z | Bin 18323 -> 0 bytes .../bitflip_0_0db_states.bin.bz2 | Bin 0 -> 1444 bytes .../bitflip_0_0db_states.bin.z | Bin 9514 -> 0 bytes .../bitflip_0_0dd_states.bin.bz2 | Bin 0 -> 1792 bytes .../bitflip_0_0dd_states.bin.z | Bin 11481 -> 0 bytes .../bitflip_0_0df_states.bin.bz2 | Bin 0 -> 1084 bytes .../bitflip_0_0df_states.bin.z | Bin 5873 -> 0 bytes .../bitflip_0_0e4_states.bin.bz2 | Bin 0 -> 2793 bytes .../bitflip_0_0e4_states.bin.z | Bin 20539 -> 0 bytes .../bitflip_0_0ec_states.bin.bz2 | Bin 0 -> 1145 bytes .../bitflip_0_0ec_states.bin.z | Bin 13972 -> 0 bytes .../bitflip_0_0f1_states.bin.bz2 | Bin 0 -> 13180 bytes .../bitflip_0_0f1_states.bin.z | 28 --------- .../bitflip_0_0f3_states.bin.bz2 | Bin 0 -> 3234 bytes .../bitflip_0_0f3_states.bin.z | Bin 25591 -> 0 bytes .../bitflip_0_0f5_states.bin.bz2 | Bin 0 -> 7153 bytes .../bitflip_0_0f5_states.bin.z | Bin 33164 -> 0 bytes .../bitflip_0_0f7_states.bin.bz2 | Bin 0 -> 1983 bytes .../bitflip_0_0f7_states.bin.z | Bin 17201 -> 0 bytes .../bitflip_0_0f9_states.bin.bz2 | Bin 0 -> 3834 bytes .../bitflip_0_0f9_states.bin.z | Bin 28243 -> 0 bytes .../bitflip_0_0fb_states.bin.bz2 | Bin 0 -> 1940 bytes .../bitflip_0_0fb_states.bin.z | Bin 15124 -> 0 bytes .../bitflip_0_0fd_states.bin.bz2 | Bin 0 -> 2702 bytes .../bitflip_0_0fd_states.bin.z | Bin 20509 -> 0 bytes .../bitflip_0_0ff_states.bin.bz2 | Bin 0 -> 1569 bytes .../bitflip_0_0ff_states.bin.z | Bin 10894 -> 0 bytes .../bitflip_0_104_states.bin.bz2 | Bin 0 -> 3524 bytes .../bitflip_0_104_states.bin.z | Bin 22230 -> 0 bytes .../bitflip_0_10c_states.bin.bz2 | Bin 0 -> 1230 bytes .../bitflip_0_10c_states.bin.z | Bin 14808 -> 0 bytes .../bitflip_0_111_states.bin.bz2 | Bin 0 -> 2568 bytes .../bitflip_0_111_states.bin.z | Bin 18193 -> 0 bytes .../bitflip_0_113_states.bin.bz2 | Bin 0 -> 1352 bytes .../bitflip_0_113_states.bin.z | Bin 9176 -> 0 bytes .../bitflip_0_115_states.bin.bz2 | Bin 0 -> 5503 bytes .../bitflip_0_115_states.bin.z | Bin 27783 -> 0 bytes .../bitflip_0_117_states.bin.bz2 | Bin 0 -> 1888 bytes .../bitflip_0_117_states.bin.z | Bin 14119 -> 0 bytes .../bitflip_0_119_states.bin.bz2 | Bin 0 -> 1806 bytes .../bitflip_0_119_states.bin.z | Bin 11331 -> 0 bytes .../bitflip_0_11b_states.bin.bz2 | Bin 0 -> 1077 bytes .../bitflip_0_11b_states.bin.z | Bin 5875 -> 0 bytes .../bitflip_0_11d_states.bin.bz2 | Bin 0 -> 2469 bytes .../bitflip_0_11d_states.bin.z | Bin 18417 -> 0 bytes .../bitflip_0_11f_states.bin.bz2 | Bin 0 -> 1448 bytes .../bitflip_0_11f_states.bin.z | Bin 9377 -> 0 bytes .../bitflip_0_124_states.bin.bz2 | Bin 0 -> 1327 bytes .../bitflip_0_124_states.bin.z | Bin 16060 -> 0 bytes .../bitflip_0_12c_states.bin.bz2 | Bin 0 -> 922 bytes .../bitflip_0_12c_states.bin.z | Bin 9734 -> 0 bytes .../bitflip_0_131_states.bin.bz2 | Bin 0 -> 6964 bytes .../bitflip_0_131_states.bin.z | Bin 31946 -> 0 bytes .../bitflip_0_133_states.bin.bz2 | Bin 0 -> 1861 bytes .../bitflip_0_133_states.bin.z | Bin 15941 -> 0 bytes .../bitflip_0_135_states.bin.bz2 | Bin 0 -> 12922 bytes .../bitflip_0_135_states.bin.z | Bin 42791 -> 0 bytes .../bitflip_0_137_states.bin.bz2 | Bin 0 -> 2914 bytes .../bitflip_0_137_states.bin.z | Bin 23984 -> 0 bytes .../bitflip_0_139_states.bin.bz2 | Bin 0 -> 2400 bytes .../bitflip_0_139_states.bin.z | Bin 18850 -> 0 bytes .../bitflip_0_13b_states.bin.bz2 | Bin 0 -> 1405 bytes .../bitflip_0_13b_states.bin.z | Bin 9228 -> 0 bytes .../bitflip_0_13d_states.bin.bz2 | Bin 0 -> 4000 bytes .../bitflip_0_13d_states.bin.z | Bin 29602 -> 0 bytes .../bitflip_0_13f_states.bin.bz2 | Bin 0 -> 2056 bytes .../bitflip_0_13f_states.bin.z | Bin 16504 -> 0 bytes .../bitflip_0_141_states.bin.bz2 | Bin 0 -> 2798 bytes .../bitflip_0_141_states.bin.z | Bin 21419 -> 0 bytes .../bitflip_0_143_states.bin.bz2 | Bin 0 -> 1533 bytes .../bitflip_0_143_states.bin.z | Bin 11143 -> 0 bytes .../bitflip_0_145_states.bin.bz2 | Bin 0 -> 5397 bytes .../bitflip_0_145_states.bin.z | Bin 27056 -> 0 bytes .../bitflip_0_147_states.bin.bz2 | Bin 0 -> 1057 bytes .../bitflip_0_147_states.bin.z | Bin 9834 -> 0 bytes .../bitflip_0_149_states.bin.bz2 | Bin 0 -> 1763 bytes .../bitflip_0_149_states.bin.z | Bin 11380 -> 0 bytes .../bitflip_0_14b_states.bin.bz2 | Bin 0 -> 1058 bytes .../bitflip_0_14b_states.bin.z | Bin 5946 -> 0 bytes .../bitflip_0_14d_states.bin.bz2 | Bin 0 -> 1196 bytes .../bitflip_0_14d_states.bin.z | Bin 12555 -> 0 bytes .../bitflip_0_14f_states.bin.bz2 | Bin 0 -> 895 bytes .../bitflip_0_14f_states.bin.z | Bin 7283 -> 0 bytes .../bitflip_0_150_states.bin.bz2 | Bin 0 -> 1557 bytes .../bitflip_0_150_states.bin.z | Bin 17328 -> 0 bytes .../bitflip_0_154_states.bin.bz2 | Bin 0 -> 3137 bytes .../bitflip_0_154_states.bin.z | Bin 21125 -> 0 bytes .../bitflip_0_15c_states.bin.bz2 | Bin 0 -> 1122 bytes .../bitflip_0_15c_states.bin.z | Bin 12840 -> 0 bytes .../bitflip_0_161_states.bin.bz2 | Bin 0 -> 7268 bytes .../bitflip_0_161_states.bin.z | Bin 33424 -> 0 bytes .../bitflip_0_163_states.bin.bz2 | Bin 0 -> 2071 bytes .../bitflip_0_163_states.bin.z | Bin 17490 -> 0 bytes .../bitflip_0_165_states.bin.bz2 | Bin 0 -> 12956 bytes .../bitflip_0_165_states.bin.z | 31 ---------- .../bitflip_0_167_states.bin.bz2 | Bin 0 -> 2901 bytes .../bitflip_0_167_states.bin.z | Bin 23886 -> 0 bytes .../bitflip_0_169_states.bin.bz2 | Bin 0 -> 2437 bytes .../bitflip_0_169_states.bin.z | Bin 18794 -> 0 bytes .../bitflip_0_16b_states.bin.bz2 | Bin 0 -> 1400 bytes .../bitflip_0_16b_states.bin.z | Bin 9190 -> 0 bytes .../bitflip_0_16d_states.bin.bz2 | Bin 0 -> 3478 bytes .../bitflip_0_16d_states.bin.z | Bin 25731 -> 0 bytes .../bitflip_0_16f_states.bin.bz2 | Bin 0 -> 1526 bytes .../bitflip_0_16f_states.bin.z | Bin 13553 -> 0 bytes .../bitflip_0_170_states.bin.bz2 | Bin 0 -> 1119 bytes .../bitflip_0_170_states.bin.z | Bin 14725 -> 0 bytes .../bitflip_0_174_states.bin.bz2 | Bin 0 -> 1314 bytes .../bitflip_0_174_states.bin.z | Bin 15952 -> 0 bytes .../bitflip_0_17c_states.bin.bz2 | Bin 0 -> 919 bytes .../bitflip_0_17c_states.bin.z | Bin 9694 -> 0 bytes .../bitflip_0_184_states.bin.bz2 | Bin 0 -> 6184 bytes .../bitflip_0_184_states.bin.z | Bin 27244 -> 0 bytes .../bitflip_0_18c_states.bin.bz2 | Bin 0 -> 1614 bytes .../bitflip_0_18c_states.bin.z | Bin 19919 -> 0 bytes .../bitflip_0_191_states.bin.bz2 | Bin 0 -> 5983 bytes .../bitflip_0_191_states.bin.z | Bin 28438 -> 0 bytes .../bitflip_0_193_states.bin.bz2 | Bin 0 -> 2082 bytes .../bitflip_0_193_states.bin.z | Bin 16026 -> 0 bytes .../bitflip_0_195_states.bin.bz2 | Bin 0 -> 2462 bytes .../bitflip_0_195_states.bin.z | Bin 19686 -> 0 bytes .../bitflip_0_197_states.bin.bz2 | Bin 0 -> 1352 bytes .../bitflip_0_197_states.bin.z | Bin 9175 -> 0 bytes .../bitflip_0_199_states.bin.bz2 | Bin 0 -> 2498 bytes .../bitflip_0_199_states.bin.z | Bin 18323 -> 0 bytes .../bitflip_0_19b_states.bin.bz2 | Bin 0 -> 1444 bytes .../bitflip_0_19b_states.bin.z | Bin 9515 -> 0 bytes .../bitflip_0_19d_states.bin.bz2 | Bin 0 -> 1784 bytes .../bitflip_0_19d_states.bin.z | Bin 11481 -> 0 bytes .../bitflip_0_19f_states.bin.bz2 | Bin 0 -> 1084 bytes .../bitflip_0_19f_states.bin.z | Bin 5874 -> 0 bytes .../bitflip_0_1a4_states.bin.bz2 | Bin 0 -> 2795 bytes .../bitflip_0_1a4_states.bin.z | Bin 20539 -> 0 bytes .../bitflip_0_1ac_states.bin.bz2 | Bin 0 -> 1141 bytes .../bitflip_0_1ac_states.bin.z | Bin 13972 -> 0 bytes .../bitflip_0_1b1_states.bin.bz2 | Bin 0 -> 13188 bytes .../bitflip_0_1b1_states.bin.z | Bin 43310 -> 0 bytes .../bitflip_0_1b3_states.bin.bz2 | Bin 0 -> 3233 bytes .../bitflip_0_1b3_states.bin.z | Bin 25592 -> 0 bytes .../bitflip_0_1b5_states.bin.bz2 | Bin 0 -> 7149 bytes .../bitflip_0_1b5_states.bin.z | Bin 33164 -> 0 bytes .../bitflip_0_1b7_states.bin.bz2 | Bin 0 -> 1984 bytes .../bitflip_0_1b7_states.bin.z | Bin 17201 -> 0 bytes .../bitflip_0_1b9_states.bin.bz2 | Bin 0 -> 3840 bytes .../bitflip_0_1b9_states.bin.z | Bin 28244 -> 0 bytes .../bitflip_0_1bb_states.bin.bz2 | Bin 0 -> 1940 bytes .../bitflip_0_1bb_states.bin.z | Bin 15124 -> 0 bytes .../bitflip_0_1bd_states.bin.bz2 | Bin 0 -> 2706 bytes .../bitflip_0_1bd_states.bin.z | Bin 20510 -> 0 bytes .../bitflip_0_1bf_states.bin.bz2 | Bin 0 -> 1567 bytes .../bitflip_0_1bf_states.bin.z | Bin 10895 -> 0 bytes .../bitflip_0_1c1_states.bin.bz2 | Bin 0 -> 5975 bytes .../bitflip_0_1c1_states.bin.z | Bin 28780 -> 0 bytes .../bitflip_0_1c3_states.bin.bz2 | Bin 0 -> 2125 bytes .../bitflip_0_1c3_states.bin.z | Bin 15311 -> 0 bytes .../bitflip_0_1c5_states.bin.bz2 | Bin 0 -> 472 bytes .../bitflip_0_1c5_states.bin.z | Bin 11486 -> 0 bytes .../bitflip_0_1c9_states.bin.bz2 | Bin 0 -> 2501 bytes .../bitflip_0_1c9_states.bin.z | Bin 18237 -> 0 bytes .../bitflip_0_1cb_states.bin.bz2 | Bin 0 -> 1466 bytes .../bitflip_0_1cb_states.bin.z | Bin 9394 -> 0 bytes .../bitflip_0_1d0_states.bin.bz2 | Bin 0 -> 1281 bytes .../bitflip_0_1d0_states.bin.z | Bin 15272 -> 0 bytes .../bitflip_0_1d4_states.bin.bz2 | Bin 0 -> 6278 bytes .../bitflip_0_1d4_states.bin.z | Bin 27477 -> 0 bytes .../bitflip_0_1dc_states.bin.bz2 | Bin 0 -> 1436 bytes .../bitflip_0_1dc_states.bin.z | Bin 18443 -> 0 bytes .../bitflip_0_1e1_states.bin.bz2 | Bin 0 -> 13795 bytes .../bitflip_0_1e1_states.bin.z | Bin 42909 -> 0 bytes .../bitflip_0_1e3_states.bin.bz2 | Bin 0 -> 2971 bytes .../bitflip_0_1e3_states.bin.z | Bin 24210 -> 0 bytes .../bitflip_0_1e5_states.bin.bz2 | Bin 0 -> 6318 bytes .../bitflip_0_1e5_states.bin.z | Bin 28272 -> 0 bytes .../bitflip_0_1e7_states.bin.bz2 | Bin 0 -> 676 bytes .../bitflip_0_1e7_states.bin.z | Bin 10545 -> 0 bytes .../bitflip_0_1e9_states.bin.bz2 | Bin 0 -> 3842 bytes .../bitflip_0_1e9_states.bin.z | Bin 28161 -> 0 bytes .../bitflip_0_1eb_states.bin.bz2 | Bin 0 -> 1928 bytes .../bitflip_0_1eb_states.bin.z | Bin 15053 -> 0 bytes .../bitflip_0_1ed_states.bin.bz2 | Bin 0 -> 724 bytes .../bitflip_0_1ed_states.bin.z | Bin 10353 -> 0 bytes .../bitflip_0_1ef_states.bin.bz2 | Bin 0 -> 414 bytes .../bitflip_0_1ef_states.bin.z | Bin 4125 -> 0 bytes .../bitflip_0_1f0_states.bin.bz2 | Bin 0 -> 511 bytes .../bitflip_0_1f0_states.bin.z | Bin 12014 -> 0 bytes .../bitflip_0_1f4_states.bin.bz2 | Bin 0 -> 3035 bytes .../bitflip_0_1f4_states.bin.z | Bin 21104 -> 0 bytes .../bitflip_0_1fc_states.bin.bz2 | Bin 0 -> 1127 bytes .../bitflip_0_1fc_states.bin.z | Bin 14387 -> 0 bytes .../bitflip_0_210_states.bin.bz2 | Bin 0 -> 1680 bytes .../bitflip_0_210_states.bin.z | 1 - .../bitflip_0_225_states.bin.bz2 | Bin 0 -> 12468 bytes .../bitflip_0_225_states.bin.z | Bin 77058 -> 0 bytes .../bitflip_0_227_states.bin.bz2 | Bin 0 -> 2268 bytes .../bitflip_0_227_states.bin.z | Bin 44320 -> 0 bytes .../bitflip_0_22d_states.bin.bz2 | Bin 0 -> 4981 bytes .../bitflip_0_22d_states.bin.z | Bin 46813 -> 0 bytes .../bitflip_0_22f_states.bin.bz2 | Bin 0 -> 1135 bytes .../bitflip_0_22f_states.bin.z | Bin 23650 -> 0 bytes .../bitflip_0_240_states.bin.bz2 | Bin 0 -> 369 bytes .../bitflip_0_240_states.bin.z | 2 - .../bitflip_0_275_states.bin.bz2 | Bin 0 -> 12468 bytes .../bitflip_0_275_states.bin.z | Bin 77058 -> 0 bytes .../bitflip_0_277_states.bin.bz2 | Bin 0 -> 2268 bytes .../bitflip_0_277_states.bin.z | Bin 44320 -> 0 bytes .../bitflip_0_27f_states.bin.bz2 | Bin 0 -> 1135 bytes .../bitflip_0_27f_states.bin.z | Bin 23650 -> 0 bytes .../bitflip_0_294_states.bin.bz2 | Bin 0 -> 5424 bytes .../bitflip_0_294_states.bin.z | 1 - .../bitflip_0_2a1_states.bin.bz2 | Bin 0 -> 12468 bytes .../bitflip_0_2a1_states.bin.z | Bin 77058 -> 0 bytes .../bitflip_0_2a3_states.bin.bz2 | Bin 0 -> 2268 bytes .../bitflip_0_2a3_states.bin.z | Bin 44320 -> 0 bytes .../bitflip_0_2a9_states.bin.bz2 | Bin 0 -> 4981 bytes .../bitflip_0_2a9_states.bin.z | Bin 46813 -> 0 bytes .../bitflip_0_2ab_states.bin.bz2 | Bin 0 -> 1135 bytes .../bitflip_0_2ab_states.bin.z | Bin 23650 -> 0 bytes .../bitflip_0_2c4_states.bin.bz2 | Bin 0 -> 5424 bytes .../bitflip_0_2c4_states.bin.z | 1 - .../bitflip_0_2f1_states.bin.bz2 | Bin 0 -> 12468 bytes .../bitflip_0_2f1_states.bin.z | Bin 77058 -> 0 bytes .../bitflip_0_2f3_states.bin.bz2 | Bin 0 -> 2268 bytes .../bitflip_0_2f3_states.bin.z | Bin 44320 -> 0 bytes .../bitflip_0_2f9_states.bin.bz2 | Bin 0 -> 4981 bytes .../bitflip_0_2f9_states.bin.z | Bin 46813 -> 0 bytes .../bitflip_0_2fb_states.bin.bz2 | Bin 0 -> 1135 bytes .../bitflip_0_2fb_states.bin.z | Bin 23650 -> 0 bytes .../bitflip_0_335_states.bin.bz2 | Bin 0 -> 12468 bytes .../bitflip_0_335_states.bin.z | Bin 77058 -> 0 bytes .../bitflip_0_337_states.bin.bz2 | Bin 0 -> 2268 bytes .../bitflip_0_337_states.bin.z | Bin 44320 -> 0 bytes .../bitflip_0_33d_states.bin.bz2 | Bin 0 -> 4981 bytes .../bitflip_0_33d_states.bin.z | Bin 46813 -> 0 bytes .../bitflip_0_33f_states.bin.bz2 | Bin 0 -> 1135 bytes .../bitflip_0_33f_states.bin.z | Bin 23650 -> 0 bytes .../bitflip_0_350_states.bin.bz2 | Bin 0 -> 1680 bytes .../bitflip_0_350_states.bin.z | 1 - .../bitflip_0_365_states.bin.bz2 | Bin 0 -> 12468 bytes .../bitflip_0_365_states.bin.z | Bin 77058 -> 0 bytes .../bitflip_0_367_states.bin.bz2 | Bin 0 -> 2268 bytes .../bitflip_0_367_states.bin.z | Bin 44320 -> 0 bytes .../bitflip_0_36d_states.bin.bz2 | Bin 0 -> 4981 bytes .../bitflip_0_36d_states.bin.z | Bin 46813 -> 0 bytes .../bitflip_0_36f_states.bin.bz2 | Bin 0 -> 1135 bytes .../bitflip_0_36f_states.bin.z | Bin 23650 -> 0 bytes .../bitflip_0_384_states.bin.bz2 | Bin 0 -> 5424 bytes .../bitflip_0_384_states.bin.z | 1 - .../bitflip_0_3b1_states.bin.bz2 | Bin 0 -> 12468 bytes .../bitflip_0_3b1_states.bin.z | Bin 77058 -> 0 bytes .../bitflip_0_3b3_states.bin.bz2 | Bin 0 -> 2268 bytes .../bitflip_0_3b3_states.bin.z | Bin 44320 -> 0 bytes .../bitflip_0_3b9_states.bin.bz2 | Bin 0 -> 4981 bytes .../bitflip_0_3b9_states.bin.z | Bin 46813 -> 0 bytes .../bitflip_0_3bb_states.bin.bz2 | Bin 0 -> 1135 bytes .../bitflip_0_3bb_states.bin.z | Bin 23650 -> 0 bytes .../bitflip_0_3d4_states.bin.bz2 | Bin 0 -> 5424 bytes .../bitflip_0_3d4_states.bin.z | 1 - .../bitflip_0_3e1_states.bin.bz2 | Bin 0 -> 12468 bytes .../bitflip_0_3e1_states.bin.z | Bin 77058 -> 0 bytes .../bitflip_0_3e3_states.bin.bz2 | Bin 0 -> 2268 bytes .../bitflip_0_3e3_states.bin.z | Bin 44320 -> 0 bytes .../bitflip_0_3e9_states.bin.bz2 | Bin 0 -> 4981 bytes .../bitflip_0_3e9_states.bin.z | Bin 46813 -> 0 bytes .../bitflip_0_3eb_states.bin.bz2 | Bin 0 -> 1135 bytes .../bitflip_0_3eb_states.bin.z | Bin 23650 -> 0 bytes .../bitflip_1_002_states.bin.bz2 | Bin 0 -> 7733 bytes .../bitflip_1_002_states.bin.z | Bin 34594 -> 0 bytes .../bitflip_1_008_states.bin.bz2 | Bin 0 -> 6132 bytes .../bitflip_1_008_states.bin.z | Bin 27612 -> 0 bytes .../bitflip_1_00a_states.bin.bz2 | Bin 0 -> 8688 bytes .../bitflip_1_00a_states.bin.z | Bin 35498 -> 0 bytes .../bitflip_1_012_states.bin.bz2 | Bin 0 -> 2678 bytes .../bitflip_1_012_states.bin.z | Bin 20925 -> 0 bytes .../bitflip_1_018_states.bin.bz2 | Bin 0 -> 1623 bytes .../bitflip_1_018_states.bin.z | Bin 20107 -> 0 bytes .../bitflip_1_01a_states.bin.bz2 | Bin 0 -> 3415 bytes .../bitflip_1_01a_states.bin.z | Bin 26647 -> 0 bytes .../bitflip_1_020_states.bin.bz2 | Bin 0 -> 1536 bytes .../bitflip_1_020_states.bin.z | Bin 17327 -> 0 bytes .../bitflip_1_028_states.bin.bz2 | Bin 0 -> 3493 bytes .../bitflip_1_028_states.bin.z | Bin 22552 -> 0 bytes .../bitflip_1_02a_states.bin.bz2 | Bin 0 -> 6158 bytes .../bitflip_1_02a_states.bin.z | Bin 30656 -> 0 bytes .../bitflip_1_02e_states.bin.bz2 | Bin 0 -> 2012 bytes .../bitflip_1_02e_states.bin.z | Bin 14873 -> 0 bytes .../bitflip_1_032_states.bin.bz2 | Bin 0 -> 3614 bytes .../bitflip_1_032_states.bin.z | Bin 27648 -> 0 bytes .../bitflip_1_036_states.bin.bz2 | Bin 0 -> 1975 bytes .../bitflip_1_036_states.bin.z | Bin 14397 -> 0 bytes .../bitflip_1_038_states.bin.bz2 | Bin 0 -> 1274 bytes .../bitflip_1_038_states.bin.z | Bin 15087 -> 0 bytes .../bitflip_1_03a_states.bin.bz2 | Bin 0 -> 2736 bytes .../bitflip_1_03a_states.bin.z | Bin 21014 -> 0 bytes .../bitflip_1_03e_states.bin.bz2 | Bin 0 -> 1515 bytes .../bitflip_1_03e_states.bin.z | Bin 10863 -> 0 bytes .../bitflip_1_040_states.bin.bz2 | Bin 0 -> 415 bytes .../bitflip_1_040_states.bin.z | Bin 9771 -> 0 bytes .../bitflip_1_042_states.bin.bz2 | Bin 0 -> 7642 bytes .../bitflip_1_042_states.bin.z | Bin 34648 -> 0 bytes .../bitflip_1_046_states.bin.bz2 | Bin 0 -> 2351 bytes .../bitflip_1_046_states.bin.z | Bin 18495 -> 0 bytes .../bitflip_1_048_states.bin.bz2 | Bin 0 -> 4419 bytes .../bitflip_1_048_states.bin.z | Bin 26711 -> 0 bytes .../bitflip_1_04a_states.bin.bz2 | Bin 0 -> 13641 bytes .../bitflip_1_04a_states.bin.z | Bin 43565 -> 0 bytes .../bitflip_1_04e_states.bin.bz2 | Bin 0 -> 2913 bytes .../bitflip_1_04e_states.bin.z | Bin 23874 -> 0 bytes .../bitflip_1_052_states.bin.bz2 | Bin 0 -> 2732 bytes .../bitflip_1_052_states.bin.z | Bin 20931 -> 0 bytes .../bitflip_1_056_states.bin.bz2 | Bin 0 -> 1540 bytes .../bitflip_1_056_states.bin.z | Bin 10868 -> 0 bytes .../bitflip_1_058_states.bin.bz2 | Bin 0 -> 1573 bytes .../bitflip_1_058_states.bin.z | Bin 19459 -> 0 bytes .../bitflip_1_05a_states.bin.bz2 | Bin 0 -> 4469 bytes .../bitflip_1_05a_states.bin.z | Bin 29724 -> 0 bytes .../bitflip_1_05e_states.bin.bz2 | Bin 0 -> 2026 bytes .../bitflip_1_05e_states.bin.z | Bin 15828 -> 0 bytes .../bitflip_1_060_states.bin.bz2 | Bin 0 -> 1534 bytes .../bitflip_1_060_states.bin.z | Bin 17332 -> 0 bytes .../bitflip_1_062_states.bin.bz2 | Bin 0 -> 13374 bytes .../bitflip_1_062_states.bin.z | Bin 43839 -> 0 bytes .../bitflip_1_066_states.bin.bz2 | Bin 0 -> 3290 bytes .../bitflip_1_066_states.bin.z | Bin 25704 -> 0 bytes .../bitflip_1_068_states.bin.bz2 | Bin 0 -> 3548 bytes .../bitflip_1_068_states.bin.z | Bin 22536 -> 0 bytes .../bitflip_1_06a_states.bin.bz2 | Bin 0 -> 7596 bytes .../bitflip_1_06a_states.bin.z | Bin 34536 -> 0 bytes .../bitflip_1_06e_states.bin.bz2 | Bin 0 -> 1976 bytes .../bitflip_1_06e_states.bin.z | Bin 17200 -> 0 bytes .../bitflip_1_072_states.bin.bz2 | Bin 0 -> 4289 bytes .../bitflip_1_072_states.bin.z | Bin 29569 -> 0 bytes .../bitflip_1_076_states.bin.bz2 | Bin 0 -> 2101 bytes .../bitflip_1_076_states.bin.z | Bin 16139 -> 0 bytes .../bitflip_1_078_states.bin.bz2 | Bin 0 -> 1284 bytes .../bitflip_1_078_states.bin.z | Bin 15066 -> 0 bytes .../bitflip_1_07a_states.bin.bz2 | Bin 0 -> 2730 bytes .../bitflip_1_07a_states.bin.z | Bin 21102 -> 0 bytes .../bitflip_1_07e_states.bin.bz2 | Bin 0 -> 1565 bytes .../bitflip_1_07e_states.bin.z | Bin 10895 -> 0 bytes .../bitflip_1_080_states.bin.bz2 | Bin 0 -> 413 bytes .../bitflip_1_080_states.bin.z | Bin 9770 -> 0 bytes .../bitflip_1_082_states.bin.bz2 | Bin 0 -> 10172 bytes .../bitflip_1_082_states.bin.z | Bin 41837 -> 0 bytes .../bitflip_1_086_states.bin.bz2 | Bin 0 -> 2874 bytes .../bitflip_1_086_states.bin.z | Bin 22500 -> 0 bytes .../bitflip_1_088_states.bin.bz2 | Bin 0 -> 3510 bytes .../bitflip_1_088_states.bin.z | Bin 22467 -> 0 bytes .../bitflip_1_08a_states.bin.bz2 | Bin 0 -> 4415 bytes .../bitflip_1_08a_states.bin.z | Bin 26137 -> 0 bytes .../bitflip_1_08e_states.bin.bz2 | Bin 0 -> 1569 bytes .../bitflip_1_08e_states.bin.z | Bin 9989 -> 0 bytes .../bitflip_1_092_states.bin.bz2 | Bin 0 -> 3608 bytes .../bitflip_1_092_states.bin.z | Bin 27596 -> 0 bytes .../bitflip_1_096_states.bin.bz2 | Bin 0 -> 2013 bytes .../bitflip_1_096_states.bin.z | Bin 14356 -> 0 bytes .../bitflip_1_098_states.bin.bz2 | Bin 0 -> 1255 bytes .../bitflip_1_098_states.bin.z | Bin 15035 -> 0 bytes .../bitflip_1_09a_states.bin.bz2 | Bin 0 -> 2287 bytes .../bitflip_1_09a_states.bin.z | Bin 17264 -> 0 bytes .../bitflip_1_09e_states.bin.bz2 | Bin 0 -> 1236 bytes .../bitflip_1_09e_states.bin.z | Bin 8388 -> 0 bytes .../bitflip_1_0a0_states.bin.bz2 | Bin 0 -> 1303 bytes .../bitflip_1_0a0_states.bin.z | Bin 15177 -> 0 bytes .../bitflip_1_0a2_states.bin.bz2 | Bin 0 -> 7248 bytes .../bitflip_1_0a2_states.bin.z | Bin 32901 -> 0 bytes .../bitflip_1_0a6_states.bin.bz2 | Bin 0 -> 2013 bytes .../bitflip_1_0a6_states.bin.z | Bin 17054 -> 0 bytes .../bitflip_1_0a8_states.bin.bz2 | Bin 0 -> 6270 bytes .../bitflip_1_0a8_states.bin.z | Bin 27841 -> 0 bytes .../bitflip_1_0aa_states.bin.bz2 | Bin 0 -> 8940 bytes .../bitflip_1_0aa_states.bin.z | Bin 37384 -> 0 bytes .../bitflip_1_0ae_states.bin.bz2 | Bin 0 -> 2675 bytes .../bitflip_1_0ae_states.bin.z | Bin 19385 -> 0 bytes .../bitflip_1_0b2_states.bin.bz2 | Bin 0 -> 2723 bytes .../bitflip_1_0b2_states.bin.z | Bin 20919 -> 0 bytes .../bitflip_1_0b6_states.bin.bz2 | Bin 0 -> 1541 bytes .../bitflip_1_0b6_states.bin.z | Bin 10867 -> 0 bytes .../bitflip_1_0b8_states.bin.bz2 | Bin 0 -> 1630 bytes .../bitflip_1_0b8_states.bin.z | Bin 20353 -> 0 bytes .../bitflip_1_0ba_states.bin.bz2 | Bin 0 -> 3614 bytes .../bitflip_1_0ba_states.bin.z | Bin 27768 -> 0 bytes .../bitflip_1_0be_states.bin.bz2 | Bin 0 -> 1951 bytes .../bitflip_1_0be_states.bin.z | Bin 14338 -> 0 bytes .../bitflip_1_0c0_states.bin.bz2 | Bin 0 -> 415 bytes .../bitflip_1_0c0_states.bin.z | Bin 9771 -> 0 bytes .../bitflip_1_0c2_states.bin.bz2 | Bin 0 -> 13885 bytes .../bitflip_1_0c2_states.bin.z | Bin 43691 -> 0 bytes .../bitflip_1_0c6_states.bin.bz2 | Bin 0 -> 3025 bytes .../bitflip_1_0c6_states.bin.z | Bin 24543 -> 0 bytes .../bitflip_1_0c8_states.bin.bz2 | Bin 0 -> 3523 bytes .../bitflip_1_0c8_states.bin.z | Bin 22541 -> 0 bytes .../bitflip_1_0ca_states.bin.bz2 | Bin 0 -> 7147 bytes .../bitflip_1_0ca_states.bin.z | Bin 32059 -> 0 bytes .../bitflip_1_0ce_states.bin.bz2 | Bin 0 -> 1663 bytes .../bitflip_1_0ce_states.bin.z | Bin 15142 -> 0 bytes .../bitflip_1_0d2_states.bin.bz2 | Bin 0 -> 4937 bytes .../bitflip_1_0d2_states.bin.z | Bin 29524 -> 0 bytes .../bitflip_1_0d6_states.bin.bz2 | Bin 0 -> 2083 bytes .../bitflip_1_0d6_states.bin.z | Bin 16085 -> 0 bytes .../bitflip_1_0d8_states.bin.bz2 | Bin 0 -> 1270 bytes .../bitflip_1_0d8_states.bin.z | Bin 15061 -> 0 bytes .../bitflip_1_0da_states.bin.bz2 | Bin 0 -> 2316 bytes .../bitflip_1_0da_states.bin.z | Bin 16636 -> 0 bytes .../bitflip_1_0de_states.bin.bz2 | Bin 0 -> 1273 bytes .../bitflip_1_0de_states.bin.z | Bin 7526 -> 0 bytes .../bitflip_1_0e0_states.bin.bz2 | Bin 0 -> 1292 bytes .../bitflip_1_0e0_states.bin.z | Bin 15173 -> 0 bytes .../bitflip_1_0e8_states.bin.bz2 | Bin 0 -> 4522 bytes .../bitflip_1_0e8_states.bin.z | Bin 26952 -> 0 bytes .../bitflip_1_0f8_states.bin.bz2 | Bin 0 -> 1589 bytes .../bitflip_1_0f8_states.bin.z | Bin 19601 -> 0 bytes .../bitflip_1_108_states.bin.bz2 | Bin 0 -> 3508 bytes .../bitflip_1_108_states.bin.z | Bin 22550 -> 0 bytes .../bitflip_1_111_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_111_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_113_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_113_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_115_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_115_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_117_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_117_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_118_states.bin.bz2 | Bin 0 -> 1261 bytes .../bitflip_1_118_states.bin.z | Bin 15035 -> 0 bytes .../bitflip_1_11a_states.bin.bz2 | Bin 0 -> 1788 bytes .../bitflip_1_11a_states.bin.z | Bin 11330 -> 0 bytes .../bitflip_1_11b_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_11b_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_120_states.bin.bz2 | Bin 0 -> 1301 bytes .../bitflip_1_120_states.bin.z | Bin 15177 -> 0 bytes .../bitflip_1_122_states.bin.bz2 | Bin 0 -> 7248 bytes .../bitflip_1_122_states.bin.z | Bin 32904 -> 0 bytes .../bitflip_1_128_states.bin.bz2 | Bin 0 -> 6269 bytes .../bitflip_1_128_states.bin.z | Bin 27841 -> 0 bytes .../bitflip_1_131_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_131_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_135_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_135_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_138_states.bin.bz2 | Bin 0 -> 1656 bytes .../bitflip_1_138_states.bin.z | Bin 20356 -> 0 bytes .../bitflip_1_145_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_145_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_147_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_147_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_148_states.bin.bz2 | Bin 0 -> 3546 bytes .../bitflip_1_148_states.bin.z | Bin 22543 -> 0 bytes .../bitflip_1_158_states.bin.bz2 | Bin 0 -> 1263 bytes .../bitflip_1_158_states.bin.z | Bin 15061 -> 0 bytes .../bitflip_1_160_states.bin.bz2 | Bin 0 -> 1300 bytes .../bitflip_1_160_states.bin.z | Bin 15178 -> 0 bytes .../bitflip_1_161_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_161_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_163_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_163_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_165_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_165_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_168_states.bin.bz2 | Bin 0 -> 4419 bytes .../bitflip_1_168_states.bin.z | Bin 26952 -> 0 bytes .../bitflip_1_178_states.bin.bz2 | Bin 0 -> 1617 bytes .../bitflip_1_178_states.bin.z | Bin 19601 -> 0 bytes .../bitflip_1_180_states.bin.bz2 | Bin 0 -> 415 bytes .../bitflip_1_180_states.bin.z | Bin 9771 -> 0 bytes .../bitflip_1_188_states.bin.bz2 | Bin 0 -> 5993 bytes .../bitflip_1_188_states.bin.z | Bin 27588 -> 0 bytes .../bitflip_1_191_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_191_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_198_states.bin.bz2 | Bin 0 -> 1605 bytes .../bitflip_1_198_states.bin.z | Bin 20107 -> 0 bytes .../bitflip_1_199_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_199_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_19d_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_19d_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_19f_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_19f_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_1a0_states.bin.bz2 | Bin 0 -> 1541 bytes .../bitflip_1_1a0_states.bin.z | 1 - .../bitflip_1_1a8_states.bin.bz2 | Bin 0 -> 3543 bytes .../bitflip_1_1a8_states.bin.z | Bin 22553 -> 0 bytes .../bitflip_1_1b3_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_1b3_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_1b5_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_1b5_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_1b7_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_1b7_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_1b8_states.bin.bz2 | Bin 0 -> 1284 bytes .../bitflip_1_1b8_states.bin.z | Bin 15087 -> 0 bytes .../bitflip_1_1b9_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_1b9_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_1bd_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_1bd_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_1c1_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_1c1_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_1c3_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_1c3_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_1c8_states.bin.bz2 | Bin 0 -> 4359 bytes .../bitflip_1_1c8_states.bin.z | Bin 26711 -> 0 bytes .../bitflip_1_1c9_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_1c9_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_1cd_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_1cd_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_1cf_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_1cf_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_1d8_states.bin.bz2 | Bin 0 -> 1561 bytes .../bitflip_1_1d8_states.bin.z | Bin 19459 -> 0 bytes .../bitflip_1_1e0_states.bin.bz2 | Bin 0 -> 1535 bytes .../bitflip_1_1e0_states.bin.z | 1 - .../bitflip_1_1e1_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_1e1_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_1e5_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_1e5_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_1e7_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_1e7_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_1e8_states.bin.bz2 | Bin 0 -> 3479 bytes .../bitflip_1_1e8_states.bin.z | Bin 22539 -> 0 bytes .../bitflip_1_1e9_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_1e9_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_1eb_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_1eb_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_1ed_states.bin.bz2 | Bin 0 -> 821 bytes .../bitflip_1_1ed_states.bin.z | Bin 7078 -> 0 bytes .../bitflip_1_1f8_states.bin.bz2 | Bin 0 -> 1274 bytes .../bitflip_1_1f8_states.bin.z | Bin 15065 -> 0 bytes .../bitflip_1_208_states.bin.bz2 | Bin 0 -> 5424 bytes .../bitflip_1_208_states.bin.z | 1 - .../bitflip_1_220_states.bin.bz2 | Bin 0 -> 1680 bytes .../bitflip_1_220_states.bin.z | 1 - .../bitflip_1_24a_states.bin.bz2 | Bin 0 -> 12468 bytes .../bitflip_1_24a_states.bin.z | Bin 77058 -> 0 bytes .../bitflip_1_24e_states.bin.bz2 | Bin 0 -> 2268 bytes .../bitflip_1_24e_states.bin.z | Bin 44320 -> 0 bytes .../bitflip_1_25a_states.bin.bz2 | Bin 0 -> 4981 bytes .../bitflip_1_25a_states.bin.z | Bin 46813 -> 0 bytes .../bitflip_1_25e_states.bin.bz2 | Bin 0 -> 1135 bytes .../bitflip_1_25e_states.bin.z | Bin 23650 -> 0 bytes .../bitflip_1_262_states.bin.bz2 | Bin 0 -> 12468 bytes .../bitflip_1_262_states.bin.z | Bin 77058 -> 0 bytes .../bitflip_1_266_states.bin.bz2 | Bin 0 -> 2268 bytes .../bitflip_1_266_states.bin.z | Bin 44320 -> 0 bytes .../bitflip_1_272_states.bin.bz2 | Bin 0 -> 4981 bytes .../bitflip_1_272_states.bin.z | Bin 46813 -> 0 bytes .../bitflip_1_276_states.bin.bz2 | Bin 0 -> 1135 bytes .../bitflip_1_276_states.bin.z | Bin 23650 -> 0 bytes .../bitflip_1_280_states.bin.bz2 | Bin 0 -> 369 bytes .../bitflip_1_280_states.bin.z | 2 - .../bitflip_1_2a8_states.bin.bz2 | Bin 0 -> 5424 bytes .../bitflip_1_2a8_states.bin.z | 1 - .../bitflip_1_2c2_states.bin.bz2 | Bin 0 -> 12468 bytes .../bitflip_1_2c2_states.bin.z | Bin 77058 -> 0 bytes .../bitflip_1_2c6_states.bin.bz2 | Bin 0 -> 2268 bytes .../bitflip_1_2c6_states.bin.z | Bin 44320 -> 0 bytes .../bitflip_1_2d2_states.bin.bz2 | Bin 0 -> 4981 bytes .../bitflip_1_2d2_states.bin.z | Bin 46813 -> 0 bytes .../bitflip_1_2d6_states.bin.bz2 | Bin 0 -> 1135 bytes .../bitflip_1_2d6_states.bin.z | Bin 23650 -> 0 bytes .../bitflip_1_328_states.bin.bz2 | Bin 0 -> 5424 bytes .../bitflip_1_328_states.bin.z | 1 - .../bitflip_1_388_states.bin.bz2 | Bin 0 -> 5424 bytes .../bitflip_1_388_states.bin.z | 1 - .../bitflip_1_3a0_states.bin.bz2 | Bin 0 -> 1680 bytes .../bitflip_1_3a0_states.bin.z | 1 - client/src/cmdhfmfhard.c | 53 ++++++++---------- doc/md/Development/Maintainers.md | 1 - .../Linux-Installation-Instructions.md | 2 +- .../Windows-Installation-Instructions.md | 2 +- tools/pm3_tests.sh | 2 +- 712 files changed, 32 insertions(+), 217 deletions(-) delete mode 100644 client/deps/zlib.cmake create mode 100644 client/resources/hardnested_tables/bitflip_0_001_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_001_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_003_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_003_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_005_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_005_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_007_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_007_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_009_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_009_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_00b_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_00b_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_00d_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_00d_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_00f_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_00f_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_010_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_010_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_014_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_014_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_01c_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_01c_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_021_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_021_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_023_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_023_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_025_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_025_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_027_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_027_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_029_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_029_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_02b_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_02b_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_02d_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_02d_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_02f_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_02f_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_030_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_030_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_034_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_034_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_03c_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_03c_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_040_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_040_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_044_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_044_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_04c_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_04c_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_051_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_051_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_053_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_053_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_055_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_055_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_057_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_057_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_059_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_059_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_05b_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_05b_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_05d_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_05d_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_05f_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_05f_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_064_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_064_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_06c_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_06c_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_071_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_071_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_073_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_073_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_075_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_075_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_077_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_077_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_079_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_079_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_07b_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_07b_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_07f_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_07f_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_081_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_081_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_083_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_083_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_085_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_085_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_087_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_087_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_089_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_089_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_08b_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_08b_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_08d_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_08d_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_08f_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_08f_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_090_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_090_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_094_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_094_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_09c_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_09c_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0a1_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0a1_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0a3_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0a3_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0a5_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0a5_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0a7_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0a7_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0a9_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0a9_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0ab_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0ab_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0ad_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0ad_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0af_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0af_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0b0_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0b0_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0b4_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0b4_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0bc_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0bc_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0c0_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0c0_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0c4_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0c4_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0cc_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0cc_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0d1_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0d1_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0d3_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0d3_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0d5_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0d5_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0d7_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0d7_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0d9_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0d9_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0db_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0db_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0dd_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0dd_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0df_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0df_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0e4_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0e4_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0ec_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0ec_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0f1_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0f1_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0f3_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0f3_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0f5_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0f5_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0f7_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0f7_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0f9_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0f9_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0fb_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0fb_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0fd_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0fd_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_0ff_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_0ff_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_104_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_104_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_10c_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_10c_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_111_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_111_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_113_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_113_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_115_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_115_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_117_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_117_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_119_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_119_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_11b_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_11b_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_11d_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_11d_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_11f_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_11f_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_124_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_124_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_12c_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_12c_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_131_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_131_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_133_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_133_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_135_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_135_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_137_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_137_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_139_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_139_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_13b_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_13b_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_13d_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_13d_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_13f_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_13f_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_141_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_141_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_143_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_143_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_145_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_145_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_147_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_147_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_149_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_149_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_14b_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_14b_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_14d_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_14d_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_14f_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_14f_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_150_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_150_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_154_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_154_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_15c_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_15c_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_161_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_161_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_163_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_163_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_165_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_165_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_167_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_167_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_169_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_169_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_16b_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_16b_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_16d_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_16d_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_16f_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_16f_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_170_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_170_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_174_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_174_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_17c_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_17c_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_184_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_184_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_18c_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_18c_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_191_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_191_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_193_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_193_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_195_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_195_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_197_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_197_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_199_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_199_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_19b_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_19b_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_19d_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_19d_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_19f_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_19f_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1a4_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1a4_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1ac_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1ac_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1b1_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1b1_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1b3_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1b3_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1b5_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1b5_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1b7_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1b7_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1b9_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1b9_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1bb_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1bb_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1bd_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1bd_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1bf_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1bf_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1c1_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1c1_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1c3_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1c3_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1c5_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1c5_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1c9_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1c9_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1cb_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1cb_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1d0_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1d0_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1d4_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1d4_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1dc_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1dc_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1e1_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1e1_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1e3_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1e3_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1e5_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1e5_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1e7_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1e7_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1e9_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1e9_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1eb_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1eb_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1ed_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1ed_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1ef_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1ef_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1f0_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1f0_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1f4_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1f4_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_1fc_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_1fc_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_210_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_210_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_225_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_225_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_227_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_227_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_22d_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_22d_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_22f_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_22f_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_240_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_240_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_275_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_275_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_277_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_277_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_27f_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_27f_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_294_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_294_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_2a1_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2a1_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_2a3_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2a3_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_2a9_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2a9_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_2ab_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2ab_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_2c4_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2c4_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_2f1_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2f1_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_2f3_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2f3_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_2f9_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2f9_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_2fb_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_2fb_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_335_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_335_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_337_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_337_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_33d_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_33d_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_33f_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_33f_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_350_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_350_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_365_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_365_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_367_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_367_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_36d_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_36d_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_36f_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_36f_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_384_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_384_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_3b1_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3b1_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_3b3_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3b3_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_3b9_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3b9_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_3bb_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3bb_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_3d4_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3d4_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_3e1_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3e1_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_3e3_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3e3_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_3e9_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3e9_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_0_3eb_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_0_3eb_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_002_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_002_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_008_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_008_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_00a_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_00a_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_012_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_012_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_018_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_018_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_01a_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_01a_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_020_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_020_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_028_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_028_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_02a_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_02a_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_02e_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_02e_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_032_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_032_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_036_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_036_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_038_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_038_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_03a_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_03a_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_03e_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_03e_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_040_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_040_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_042_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_042_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_046_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_046_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_048_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_048_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_04a_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_04a_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_04e_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_04e_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_052_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_052_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_056_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_056_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_058_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_058_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_05a_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_05a_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_05e_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_05e_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_060_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_060_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_062_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_062_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_066_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_066_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_068_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_068_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_06a_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_06a_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_06e_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_06e_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_072_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_072_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_076_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_076_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_078_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_078_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_07a_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_07a_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_07e_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_07e_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_080_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_080_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_082_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_082_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_086_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_086_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_088_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_088_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_08a_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_08a_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_08e_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_08e_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_092_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_092_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_096_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_096_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_098_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_098_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_09a_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_09a_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_09e_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_09e_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0a0_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0a0_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0a2_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0a2_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0a6_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0a6_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0a8_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0a8_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0aa_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0aa_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0ae_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0ae_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0b2_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0b2_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0b6_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0b6_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0b8_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0b8_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0ba_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0ba_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0be_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0be_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0c0_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0c0_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0c2_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0c2_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0c6_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0c6_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0c8_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0c8_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0ca_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0ca_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0ce_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0ce_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0d2_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0d2_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0d6_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0d6_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0d8_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0d8_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0da_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0da_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0de_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0de_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0e0_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0e0_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0e8_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0e8_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_0f8_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_0f8_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_108_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_108_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_111_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_111_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_113_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_113_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_115_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_115_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_117_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_117_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_118_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_118_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_11a_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_11a_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_11b_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_11b_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_120_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_120_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_122_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_122_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_128_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_128_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_131_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_131_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_135_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_135_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_138_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_138_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_145_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_145_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_147_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_147_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_148_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_148_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_158_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_158_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_160_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_160_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_161_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_161_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_163_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_163_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_165_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_165_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_168_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_168_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_178_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_178_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_180_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_180_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_188_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_188_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_191_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_191_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_198_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_198_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_199_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_199_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_19d_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_19d_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_19f_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_19f_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1a0_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1a0_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1a8_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1a8_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1b3_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1b3_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1b5_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1b5_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1b7_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1b7_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1b8_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1b8_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1b9_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1b9_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1bd_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1bd_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1c1_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1c1_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1c3_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1c3_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1c8_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1c8_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1c9_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1c9_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1cd_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1cd_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1cf_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1cf_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1d8_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1d8_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1e0_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e0_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1e1_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e1_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1e5_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e5_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1e7_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e7_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1e8_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e8_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1e9_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1e9_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1eb_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1eb_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1ed_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1ed_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_1f8_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_1f8_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_208_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_208_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_220_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_220_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_24a_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_24a_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_24e_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_24e_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_25a_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_25a_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_25e_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_25e_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_262_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_262_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_266_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_266_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_272_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_272_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_276_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_276_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_280_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_280_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_2a8_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_2a8_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_2c2_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_2c2_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_2c6_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_2c6_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_2d2_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_2d2_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_2d6_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_2d6_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_328_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_328_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_388_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_388_states.bin.z create mode 100644 client/resources/hardnested_tables/bitflip_1_3a0_states.bin.bz2 delete mode 100644 client/resources/hardnested_tables/bitflip_1_3a0_states.bin.z diff --git a/.travis.yml b/.travis.yml index 7f3d79a46..c8d6c8dfd 100644 --- a/.travis.yml +++ b/.travis.yml @@ -29,6 +29,7 @@ addons: - libnewlib-dev - libbluetooth-dev - python3-dev + - libbz2-dev homebrew: packages: - readline diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 0b8fea18d..336cac4c1 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -288,6 +288,7 @@ find_library(pm3rrg_rdv4_hardnested REQUIRED) find_library(pm3rrg_rdv4_whereami REQUIRED) target_link_libraries(proxmark3 PRIVATE + bz2 readline pthread m @@ -298,7 +299,6 @@ target_link_libraries(proxmark3 PRIVATE pm3rrg_rdv4_tinycbor pm3rrg_rdv4_amiibo pm3rrg_rdv4_reveng - pm3rrg_rdv4_z pm3rrg_rdv4_hardnested pm3rrg_rdv4_whereami ${ADDITIONAL_LNK}) diff --git a/client/Makefile b/client/Makefile index 52ccfc23f..102bf62dd 100644 --- a/client/Makefile +++ b/client/Makefile @@ -85,11 +85,6 @@ MBEDTLSLIBPATH = ../common/mbedtls MBEDTLSLIBINC = -I$(MBEDTLSLIBPATH) MBEDTLSLIB = $(OBJDIR)/libmbedtls.a -## Zlib -ZLIBPATH = ../common/zlib -ZLIBINC = -I$(ZLIBPATH) -ZLIB = $(OBJDIR)/libz.a - ######################################################## # optional system libraries to replace local libraries # ######################################################## @@ -161,20 +156,6 @@ endif LDLIBS += $(WHEREAMILIB) INCLUDES += $(WHEREAMILIBINC) -## Zlib -# system library useable? Need to recompress hardnested tables? -ifneq ($(SKIPZLIBSYSTEM),1) - ZLIBINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags zlib 2>/dev/null) - ZLIBLDLIBS = $(shell $(PKG_CONFIG_ENV) pkg-config --libs zlib 2>/dev/null) - ifneq ($(ZLIBLDLIBS),) - ZLIB = $(ZLIBLDLIBS) - ZLIBINC = $(ZLIBINCLUDES) - ZLIB_FOUND = 1 - endif -endif -LDLIBS +=$(ZLIB) -INCLUDES += $(ZLIBINC) - #################### # system libraries # #################### @@ -187,6 +168,9 @@ ifneq ($(platform),Darwin) LDLIBS += -Wl,--as-needed -latomic -Wl,--no-as-needed endif +## BZIP2 +LDLIBS += -lbz2 + ## Bluez (optional) ifneq ($(SKIPBT),1) BTINCLUDES = $(shell $(PKG_CONFIG_ENV) pkg-config --cflags bluez 2>/dev/null) @@ -392,16 +376,6 @@ else endif endif -ifeq ($(SKIPZLIBSYSTEM),1) - $(info Zlib library: local library forced) -else - ifeq ($(ZLIB_FOUND),1) - $(info Zlib library: system library found) - else - $(info Zlib library: system library not found, using local library) - endif -endif - $(info compiler version: $(shell $(CC) --version|head -n 1)) $(info ===================================================================) @@ -585,7 +559,7 @@ all: $(BINS) all-static: LDLIBS:=-static $(LDLIBS) all-static: $(BINS) -proxmark3: $(OBJS) amiibo cliparser jansson hardnested lua mbedtls reveng tinycbor whereami zlib lualibs/pm3_cmd.lua lualibs/mfc_default_keys.lua +proxmark3: $(OBJS) amiibo cliparser jansson hardnested lua mbedtls reveng tinycbor whereami lualibs/pm3_cmd.lua lualibs/mfc_default_keys.lua $(info [=] LD $@) $(Q)$(LD) $(PM3LDFLAGS) $(OBJS) $(LDLIBS) -o $@ @@ -620,7 +594,6 @@ clean: $(Q)$(MAKE) --no-print-directory -C $(WHEREAMILIBPATH) clean @# Just in case someone compiled within these dirs: $(Q)$(MAKE) --no-print-directory -C $(MBEDTLSLIBPATH) clean - $(Q)$(MAKE) --no-print-directory -C $(ZLIBPATH) clean install: all $(info [@] Installing client to $(DESTDIR)$(PREFIX)...) @@ -694,17 +667,11 @@ ifneq ($(WHEREAMI_FOUND),1) $(Q)$(MAKE) --no-print-directory -C $(WHEREAMILIBPATH) all endif -zlib: -ifneq ($(ZLIB_FOUND),1) - $(info [*] MAKE $@) - $(Q)$(MAKE) --no-print-directory -C $(ZLIBPATH) OBJDIR=$(ROOT_DIR)$(OBJDIR) BINDIR=$(ROOT_DIR)$(OBJDIR) all -endif - ######## # misc # ######## -.PHONY: all clean install uninstall tarbin amiibo cliparser hardnested jansson lua mbedtls reveng tinycbor whereami zlib +.PHONY: all clean install uninstall tarbin amiibo cliparser hardnested jansson lua mbedtls reveng tinycbor whereami # version.c should be remade on every compilation src/version.c: default_version.c diff --git a/client/deps/CMakeLists.txt b/client/deps/CMakeLists.txt index a3908ec26..f7b96a7ea 100644 --- a/client/deps/CMakeLists.txt +++ b/client/deps/CMakeLists.txt @@ -25,6 +25,3 @@ endif() if (NOT TARGET pm3rrg_rdv4_whereami) include(whereami.cmake) endif() -if (NOT TARGET pm3rrg_rdv4_z) - include(zlib.cmake) -endif() diff --git a/client/deps/zlib.cmake b/client/deps/zlib.cmake deleted file mode 100644 index 3a77c35aa..000000000 --- a/client/deps/zlib.cmake +++ /dev/null @@ -1,14 +0,0 @@ -add_library(pm3rrg_rdv4_z STATIC - ../../common/zlib/deflate.c - ../../common/zlib/adler32.c - ../../common/zlib/trees.c - ../../common/zlib/zutil.c - ../../common/zlib/inflate.c - ../../common/zlib/inffast.c - ../../common/zlib/inftrees.c -) - -target_compile_definitions(pm3rrg_rdv4_z PRIVATE Z_SOLO NO_GZIP ZLIB_PM3_TUNED) -target_include_directories(pm3rrg_rdv4_z INTERFACE ../../common/zlib) -target_compile_options(pm3rrg_rdv4_z PRIVATE -Wall -Werror -O3) -set_property(TARGET pm3rrg_rdv4_z PROPERTY POSITION_INDEPENDENT_CODE ON) diff --git a/client/resources/hardnested_tables/bitflip_0_001_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_001_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..e65f2247125203d5685229230b8a857e03ce5c57 GIT binary patch literal 2801 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 I^-IG60P=mzasU7T literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_001_states.bin.z b/client/resources/hardnested_tables/bitflip_0_001_states.bin.z deleted file mode 100644 index d697d83cebf0609ca78e17c5d01bb6738bbe6eb4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21464 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 diff --git a/client/resources/hardnested_tables/bitflip_0_003_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_003_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..5ae156039949ae3c952511b0bdf88dd30874a4f3 GIT binary patch literal 1531 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 H@v0R7mQa+| literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_003_states.bin.z b/client/resources/hardnested_tables/bitflip_0_003_states.bin.z deleted file mode 100644 index 2973d69cb2127c9a5768fa29dd41b18c2d8f4343..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11164 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 diff --git a/client/resources/hardnested_tables/bitflip_0_005_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_005_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..473c32fcad7f574c6b3b1f1ab98bbab50961e65d GIT binary patch literal 4901 zcmZ>Y%CIzaj8qGbbTpn{%e3}-PU_vizZx7ES_N1G92giF7BFb=JW#g#!LXET0Rw~3 z0tOL5kp&D43=A3!i~=Ge42-S}njs7f467!rVrp2_&>^DfCZWc1z}d~$z~G>P8k3Y! zW@8&?qk+K1$v!*=KAa70J+l(jma25{GB7YZELr5Cu-Mmk<+F)X4ppphir=#^s677G zYBi}-S>I>Q>6A^IwWM@$uw#rir_`dO$wnI!G8QhnY??SzYNgMLqrzcRd{`IpU5Qxd z8>VZtp;vIV>x6Exg-MrY97}eV3QAhIV#cO5K0dP+Yx-&~Qu9g(o7t9{m~1p-!&M*2 zFg2YlhnJmwbL?cj9<!|t{B2Ws&f>UC!R4(}Ph6cDd0oz4|MlaYyQkNb`Z?|U{y4gM zi?*t+>mxmZn1VIaLaI#8Y8~fOo3_%j>&lhmXPLJwTPYFjw3SD->(XMem11lQE}Xh* zax^vNa!}|532u+AK_z}-)7Ba!CYcCM%377NNh)-L!G={;i&nnzn7Uwkmb#W|>-VWn z2SuyermU}+ce&xgj!joBRZe^PEe_@uo7H9HYpS<yW9>5S$=)Yt9LtpIS@Y!29=rFu z-|AOY`xj;|TX?eb<g!^NnL2A0|FM%SE7N@WvY>?hRG-($6~|UtEVMK^)e~{dC$raR zmaf4GwiY8X9>cJeQ&wxF7#W;7EEPH>b!J*xvcze_h+~pTp;1e-X7OrlR7!DMni(9_ z6BgKV#b@$MmDLl43MZWrIx=%&Zp3P1Q?;;+vyw}bP8&s~tz4Pxa#?J)VH(e|)j4N! zBbQxU8giEB;EHWI8@8Hdoz+a$*{owUbIGzvCuc;aPS!cHS=ez}N?LGWx6Y<Cqsvkm zTT(M8i$!Jlnrgf8WU-lqBwbu)q-JDtB2BGj#xcWH7fp`MT5EFPST<YAnW)5Wqb<E^ z+}b{gOJ>~4HCx-eLbKImS!b9guUDe5Vq}mMZ`i6Ui!K{&OgStjaoEtrXRGGKX<JNJ zu6DZAqbBJ#%e8H#$tCT;)S1pa)4F-ioJdSM7TIQC*f=9BbVh2kt|ZUFX{pna&ZOxY z`)o|@iA<f^W3<_DMv}zQX_1Ljr}-G2x~yw-vgb@%T4ZKw&#_Y{d)!h^oc3u8TWhrC zOtR0#UNtFW)m4i<G9^1FAE=Dfjaa7BtsSr}*H=i=TWy)4R1~kb)M?3EExTP?E=~zn zR>|RYS~g>CQ0l~$NvBR64HH|jVPo2gV8$kkb<=bud=sO?G*V5IPP1v97R^dBOt^Gv z%c)r#lTK}%8kIV$bEQ$5o5W?wsD)RS`Yb)!adN3?(oG|SBUkyl7Cg0>X6n0gnc=FF zJ(;Opj~1-H>7&^?H8IO1Qgda;(J<$b3#)Y{QYOt~5pQ7@Fj*lpE8xoBD;gi!mSl!4 zI^;9e*fi0wXPRVIIBP)l6>X0Vt0I&|qqKw6mP~H)T6fgoL_`A5(!{o4i7PxNQES~y zg<ecrw^A!5HekcVj#(TR-MqpSr)Z0;)fUQh)9y5t*c2ufX0U0omyt@MsgMlgqR>={ z6?4P{4U$$JT;jfD-oz}q*2g-Vj>U2wJyuXDk|d|>vwT9uvBZ-%j~v+bC|#WA!{kK| zk~UP>@O3XZaJ1zi=QPhWL!HH9l3_YqB(@wm(X%NnFj=!}u})-zk<qC&8#Z>E3L6>B zbW`RwSd%(aBAHj>!ZBlJDPh$KmxDzYPBHAs@DcOuR!W@~mK2$ga_CH0iqXmBV6_=* z&KT=tN`+=creyU_TiIrERiZ6)+RD~R>zM*y1w8q<a9U=@#-u&^9xwKvia-82F7(mq zFW=|7Z(DhoeaESaGf8tLBOe}|Iwi&6)So@}#Y^A6OgZ1RCO%}<n!c4ib@7iMUagd= zpDy~<&E(3anTAvDKC;+wn&;84p46|g6<cQYubMMwR#s9<(r=k$hsVaN9xYaFTlsrl zf5rDce@?sFS+y@LEe+Q16trtRVAV4-na%FY&-k?Y#gh+w(`9~V7?D(96z|v_*m30e z)$dVjYJ$GlaKBl8RoA;^?h5{mi9H%e?F&wYPHZwVIJ4=Dk3^(IM5M{GW-*;)w$Q1G zZ4xJ2XJwfr7-jfuIOdcZHF3p;%YjoaM(i-`k=S(Fi2L*UbBm4|btO42(2fe$Y1yUJ znmj42;owZSM4yC6gPtwQSyxsWCT)z!ILu=tX_(ckYoZ&PxJ2SuWMWUs%&=KguIOrP z=oL71jAwCBXy>9-UXd$3nGu<7VofKmn(7*5hK2QtNkp7U<~ecGw>fo@skTv)fw9h+ zGi!}?wiqtl9634IRNykhVTW){#qO>nTTW%1n&qp^6WZpL7PXNlV&Y<{WyU;fLzSmE z9g$htkt}gxS+IwJRM)|_mXq4X22m+X&KmX_+%#KrHCvi<nPkSTXrrr^N-F;MIvn*M zELweR)`C-O6n&jeF}t;9EmK;Uaj`4PP&=4oYp~O)RL_Y^rF1<Grkb2`U9r%>=;$n; zV;;8_7_CY+itNb>G?~&Hnsl;lR@yY9O@|fE7|t@uT-LU7$)Ti#jXK?~zLIX9GsVI} zPA<BVVk#VTGBIk_DIIUNwNe+C&GOkeP2#ZBrh`43)WiZdD~p9lL@mn<_E|b{B@dI@ zD%X^dRq+cHg%7BF_6n*EvFj3BbTmbA(qg5xODCL|JT+#5gh0$v?+I%fm$->ag=lxh zbJm1!j7+*<GFdlFP3u)cZ?I;R&P+*hB}3<ctdK{>T^D;xHfH?wzrOX-Jd2H45<4Pe zbo%Utr(G4^oVHrhaH*})%vGjFMFv)X>*dxf{ZLzKds^Eqbbafg$7waLC&E-uc^}%; zz05En)i+?Pk0h_R#A&sYmrl)E=6u!UNor~)pRh)vK|z*9xRAcaE_JRC8)B3-7cS#v zwOTe^u;<vSgHu<&e6rg#D(T48l*|v7p-+r5mmc|HC+^-X?5&a5@<V1$IKT66xx=d} z1HP|svGDcvi;#11pDB1U%*R*b#I#;X!--QT9A)Ft*mR}MAhdg`k66=Xoh;>$qfyO@ zDF$03Tvwb9U2$-l&Z)}*C);MEoHE%MrR<f|=9<OJw13UAg_2UOQ!XvF_H4QmwUn3L zu|RB^i0qWB!lDyX+k!>>W@MbzHoS5r?&4cHb+=y4#r#@X?p<<<H>?9|?jL)k^Y8DY z!nvJ^N3SQk-*NuDs#l_y;bgGl%9^Q1IuE*OY)m!q5k0Ei={jZ4Lt&OxZ;~!~HhBN! zUi_>*)o9v;OKUopBpRJMZMeXaH7O)(lin}?S*u%1{P<X^JWfSUIwPs=82e&sd6;vf z@I<v$j@_45SrsO08%u`uxC`~HHJmv!vg^x9`;hs++~w5Lrlm>Bsd+wCJ{7aneq$Yv z(Z$2^&3@;m+NA_PESxEK<fyIiO-tctA%|U8TsgVOXv0avi3?}@oH`c#uYUh`PN(>b z@eaB!hkSyvL}q$Kc_jE>lzVlRr)Seui`W>wHJKfkbamEPSy@<}y6jUZaHOD6k1a$d zoKHwSJ!`-7v8*|<;(YpI>wHZP9XVw5>Z#G0O%E&9>2d39xhxiuI$c;?ocs5GN&C>> za_mb^|F!3tadLY2q10|4lS_%6)5L1#=w!}#SXjN!E-h`&+=`QnYIr4178umBx!zo1 zaw=)#(kl;krF;*wO0|_cUw%|y`Id?8#fHSL9s9UD3;UEg9;SASMRw~%hO-%Ms=oSe z@3mgJgAcXuhJ_T^FA3PfX_qoJlS3*<O-rbD)ryb}BK8kFT~aty>RCnYr|57dHmvp9 z7&>j$l%u@PTC05|4FZ=bU3EBgk~Nca%G89_-lj%6s}(00ZB9%JluVr#nX%SeFyl~a zR(4px%uJIFr$bXtPFB(Ox*T%qOyY`&<iKT1yVe{`i#X=&IXURmsZ5E8RFflHGJPd^ zOao4f&2;8fTeetW)w*LVdKPUG6WFrMD>Fn#XpOpn*9ox|T05rtsEV;XRN17Wr>f1e z*n?YT(W9W&OB$0>L-ejHZRs%e%+fYmv%!~FCE>Kh>W!0T8S0pdt?F^+4KO&_@zl%p z(1s<3Nu32#VjQxXJ6&ZaIa+mct=h|^X`iF<R_O!FhNU_>$u1j>yskPNh~Qf1B{XLV z^Ce#)DbE$F86tI-99Y&CHjUBb&}Co4u&||WI%3^I7c-`&7<K!aY&qE`DP^=~mb06% zo0eEquh>+Rt(u7qMiZybO7iwuC6%I;x#F^;uf)Yxqm9}I8pk?~G*=`<g{?T4yL8#s zsmVMkCY)_PM~+RFkX+dtadKhlG~N)C%WA4^$zof~oVFxOrb%2}baH00SEkge%&9uv z!pb7LhRbGTh8Zqf?W+^)YbuyH<>0DmyrQeJ8drufbDdh5b<#H?%1CYM%81mk)~*zT z2?vF}LiPk&3wRx>)be`OI)!azn9?borEOD8xsNVYi(*~1StoK@(wd_a+ahNLrldtK z<2jnfmMl5b=(J={T4X0rgwAQz)}E<T3nuBg>Uwr<G;p1w+8LGUW|Yb1b*1st5*eKh zsoh$OCAC#9nRFdoG*jbAz;2Zkts>EIp;;}5=6QT-EfHPG=J90CifD(T#W{zKMc!Vz zSoGp@;L4Q+$9XngTygS1(92kh)gg!4l|xOk#GPJC9P5)&7S)^E;~V_{OhB0Dlxx0C z2fsJ)*+dJP*Vio&U{G{n3}IkUVzywm->0>&Ib~Y5Qj~CL(50-VB?}jB&Q#M~6L3se zSdA%x!La4X$%YvWJc))z32F=sD_2c5O6W0RP!JC4)Ji$Q*urb;uw;qmBwybZUwP$b zDSQ(Qt@!Qpdrru%t9~0SGkGI>JvW^VI<1u*aA=EcSh2Bo)D5<%HCs+b1}-_RmT@vW z<cwNYw&)twvarN2k;mrgteg4v+u!Ov_iA)jf3GVpiq-Y`SRnOuaq8>n?Dyfm5|_gy zr=%@A+sis>!`i6HOD(oVUF3*PG&<<5P<Pw;EtgU3;--sVyOudrE`0Ul@thlv%$!$8 z2hOgoF5i9a`R$i?uczJG*_XSm=XBPFA2Bm0w^**3nHy@dCgPf8+F~wK)3u%xW@K$i z$yQxo#N9IWWNv4#safaRM3)seu4LVC?OkzeW=6MXv}m`_O|`5`n|X~kOI^%4t+hFK zTi3>A-J+%uJ~~aQJsVeSy2+v0nsm$5bV-Y9+NN#OBDbYaKDlz))McVuH*M6(O)Fx( zl4{zRIyr4>)UoEsv`CH9T900tnCWf`i`Hdb=#`ska!GBA;p(NL&C{lBT(&$^>0!~< zw3}Pk+;P=Em6Dp<YjCvfT8jDsJAs3%rkj{A3Eq-v8Wmw+Y??T0xl-_zwUNrs!8&1z zC%sD9v?Ki%#cFMM6QM11Vq;WyRJX6mlg(~Pe4$;deVsnq=!Q2QdevLJu3&nbrc$m# z@79e{rvtM&QnC%MW?eH~6Ll;+Y59al<xv~kySsn<tD0;4{^_6Zso&4rspn4(wvRvF zx4!DzbKPy#Y3t|xmlZ$!GG6BJ3(<C-<CpKhzhmqEyXKzXx#eExn0NDDJNu@|WTI}0 z>RP90&(5SvTecP5+3d^f8mV^FDpc}RR>G-UXHKU~yPCu;y4lBca@3`$FoU%^Yc6{y zc?v2y>n58^9OpfitaD{+s*KjogNu&MPVH=&6v;E?QrFe!DN56?OquxUl&Jc5k@bla zOd^6V`=+v7_EFntx=lr!H|ciRNiokQ&7m_+<c1hToK8#KW;RQ0)mBfnSvOa>`34=j z6m6QV;H;Z)IxMK$WlfjjZ_bcPP5qVjE>T8_IugB8d!}aSF~+nWx^mG-O6&2HefivO zZjtJ~I+q>?Yja+|wQp}(YE6D%(cxo}-NAa1m;d~$+1>hK)9FhOi*DN%%`B2Tv)tQr zt?Bg0r#sWKEUp#$y<Xg`lglf;FL%bZT+814{5;vzE$=V)t@yFHIa*tAP4lF}Ro5o# z`mEK~c3o|3awb_~W5$KrwL-6st>up8(>CSXsJCkGt1s(z-J4^x&SKT~{bx_EzrT0l z56`+~VVfc{B~BS!`d-vqtF%_tda<bglb@?+m>j+JF!aa9JDY5TPRYGY>Atdi%CGQK zUk^Q=Z~g1RSNHVvhj*)|Wk;KAO7{QBrT8_jH6t;?m+2&LF!%5EVk@VulX!6Ra$la- z!{(mwaIN3#9{08F%#Ju>&aLur%@!BGcpLkEbH0*4`_tD)&z-M7FDLWEqc7*no_(D1 zvE41LaK7B$FLE>Mru3J3KMOVWjPguif9aywF#n53o2x7TovuH#R<6}H*|y-yt)5G# zw2c-!-8Q<dl&R>Nb81z_X77w#&n%V6Ih(e2hc)ZYy4rJFbhE1G-6<!sF3emLI8|py zsKF+$!mt$vJDgSYG!89Wkg7b@r6eRMN%X3+)|%C#GuCZM^O+fXM6{^&<e`ZRS}%F< zb7>X1y9S5!q?!ah6_HseJ2@ybYsMKDwOc-?w0d=Jnk-v$+e2%~vdJp9b&WQ-Mdbtp z8-{LF%Hmm*l_q7j;l!rcoC{|SE*<7N9dtQtt&-EGiw?oLtEHmFwuDJ`r1FNW&x+$( zx_ru#7X~Ii5vIN&@2=)}>nY7?GtCaTGV83-bcP+0enD0|OP+d9jSQRKe5BOWO=iyG tR2k{i>%PTnr)_QxciUysE|I3UJi73(*2`<z|GRf8&C&3PGLxCa008Nxni>EA literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_005_states.bin.z b/client/resources/hardnested_tables/bitflip_0_005_states.bin.z deleted file mode 100644 index 01b274abed8c01a66e25a759c7e353b24f2a8161..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25606 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 S_bCoCM>13Lzr6O$>L37_ha!Oh diff --git a/client/resources/hardnested_tables/bitflip_0_007_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_007_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..0cfda87cb7ecf925a5280777a88cf09bc69db73c GIT binary patch literal 1591 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_007_states.bin.z b/client/resources/hardnested_tables/bitflip_0_007_states.bin.z deleted file mode 100644 index 8a2ee553094df269dfe89aa07f950adf96f64731..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11136 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 b|IPndOCQI_g4)!Ff5|)W{%2ljoM8n35Lyn* diff --git a/client/resources/hardnested_tables/bitflip_0_009_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_009_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..1103e29bc6263b22d3155916d735792bee147b5c GIT binary patch literal 1780 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 bCQ)!`a<kAJ!-D@mc2Ckg)Y8(CsPh5<_S;+L literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_009_states.bin.z b/client/resources/hardnested_tables/bitflip_0_009_states.bin.z deleted file mode 100644 index f1de49a746fee8866eb0dbee4efc1d65cf89bbe3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11407 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 R{Ez=1`Lxgf+Y@qj008hSF(Uu~ diff --git a/client/resources/hardnested_tables/bitflip_0_00b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_00b_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..2e1c29d8784bac460b96057ffb7a63cfcaf72784 GIT binary patch literal 1069 zcmZ>Y%CIzaj8qGbys@Nb0t3g)`v1SL=1y)jXPn|F$uN^afI)&u(ouj>fRTYELSROh z<k=q&*zPlc0ZXw@Pn(ax#g>Co85cXGQcfITaGsTtVwBL<qsDRBt;gZAni~U?%w=W8 z$t)&`25z%VlGtV%888Sun<>dNLvb-@lgY)!0wyOXHZZiCoH&tkkXOP-a9OWJ<1(Kf z1{SWMfL<nBwOJXLjCzfI6<^sZ*!nP;&FYt0UJ|tUZtI(%m3>LcLK}AR1RuFEON=LE z*R^Ygy%Jm0Pu);onB;s(jd5qhVqdi>nXNquM>IeD;0!eh`Mihg%Rb%qE47+CD*Lkw ze{Jl2Bh%-+^p&mqfm{18FI~R&g?0NGE8f#LWc8C?CRLo3kx6^n^dfoB?qhnteobHU z%HHq>U-OmcMSP!mDvp^P<4G#8H+p4Z6>;2qZRVYe?MY8!_&87OpZFp_=5)s+ne1bh z;f@#X<V5$H89p|AD9+qm_@MUv!JR)Wu6<XQ*q^v?(Sr{=&q~WbT%LGq|Dxa5vmO=C zc|6f}*}=stuRJ&Wyh~zB#s`xMU+ZT_i~E9kEYF2&E;}sDEq0jQ=y`$p^g9=x$}zu_ zSjT*AeX?KZ8S975Z=&xfPmO<iuyQ)%lbk3YiBj3+7u5JZA36Hg?(&TsD<7NZiHmL| z+)FH)c75uT+{(Vx7vX<olZ$p-?Ku3zO#e#t^lMx8o@e}J{raPI-_oDb=RU73-B_EZ z{VG}7cjc`+M|-5hX1p@o_&nl8rIgLF1DDrYAD($G@sobgTmJ{M?6~hecGt?UJU``0 zZJz46qlL>~+=#y3nb>JI@9F0m$Bs4MNr-LEJeG7=*mY;pV*?$DOGj>P+;L38HqB7V zBq`5)MxIa5!6R!$3fra&9qlsAiBP+8VR>}6zvA*_@63(K{7cJb92eYpZsP{aId0!% z*RyXw^)AnR`NqZf{vP{!;IFvir#{nz<tCYxe!u>u&CkB}d7jco_5_<{hj}8BPc5Hv zYx*r)?T?nz_dblxkNCc?z4Mu&wL9z5zK?dPixU@iF88|i;^*XJ*AAZ8aa`g^=8{|X zom=btl;<RFcpP)=yWyQ*5<hmFuDFv?yiGPVr0dV7sh&9z8xD4}X)}v4OsNSCO<JLH zsYgp`Q|RZ1)>CyNoH-k|bx28wF*_Yhn8lHqEbOpxku#eKuSrN^#wBOZZeg#e(2OHG zZX$`koL!d|a~$>Y?1=DoNLi~ADUfNH*lIFk#xXVniD}$YzM6}Y)&#qzb)|$RD@C|D zwHbDc&1joCu_M(r>1eW8qESRw(xHuA8zs6T5_HvAo0&N~)g;#H1eqLM+SDU4<;bBK zhFllBn%!6<4B2K#8ERc@*<uipwBewdn$Xd%%g$btg*kc>H5W5&?3&i5a+vEFXVTG- i%N$z{NF~flSe0?$Fw?9gZ~sT{JeG3_NsCOJ!~g)>_Vx(? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_00b_states.bin.z b/client/resources/hardnested_tables/bitflip_0_00b_states.bin.z deleted file mode 100644 index 8c919a282f23238a92eb2b65bfe0d11231e4eed4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5964 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 S27D|W?eMIh@~#{^4g&x?`Sh6p diff --git a/client/resources/hardnested_tables/bitflip_0_00d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_00d_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..c763016381ad805e6c5bccac58280e495fd192c5 GIT binary patch literal 2204 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 KAyM0gOA7$*7|%xl literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_00d_states.bin.z b/client/resources/hardnested_tables/bitflip_0_00d_states.bin.z deleted file mode 100644 index 214457920b7145ba903c0a6da7a2a1fba9a2addb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17232 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 *Li9F&-`Eb|EvE4U)Nvxvikp{ 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 Pf8>AXoBxa{$s9)k<zT@( diff --git a/client/resources/hardnested_tables/bitflip_0_00f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_00f_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..39e7afc470e0d56ea57eb3b710dfb73e6a1a0452 GIT binary patch literal 1214 zcmZ>Y%CIzaj8qGbJU5Tw6oc5N|NkBas?HbuA1ZbvP*H~A0)v3#%!&WX0=~%zSTxM& zzVU#=o&gGEB-wfyQZ5TzcAStT;c!99&`^qj!NQ1Fis9rk#bwP3M+_Plm?R~cFfbIP zNSQEB_Hp)QbL>cDcE~t#B!hwB!3mQLX0;h@vv`^X4zV>{?CiL}z<6*%#sxNCLtYa} zHpLcR#>K*d3m6!dtY}i0#gS@jB)Da!+`?CK%X*Dn7`O7P+;U%0!BsoSV|~C2{WA}L z9-s03e#4jR!Mo<H=A0h<F!p*wnN@S+n>qV69y~m?de<BK?63BLk5-l02HrVl*nj2E z>qY;U->7@;KDV^~(W`xrYSaJC@A#k}(;xFmXT7H_`=0%s$+u%gYx8Rl$=CkL7v)!+ zV4M0@rcZoo`;Luocq-P!g?`-otl*1H=abmU&Ejw59iPbye!u_cgY4C3b;rX`yr_@9 z7JBGgSPVbwzvIq}U&rUX+F5G&r)%DYnR1)H-K>69qdLbjdD4>tE9Didl};sVw(=Vq z?3Vj@$bHWLmK{0~)@vk7tmeJ!|C0P^KI13ZzP@wMWaO6~I@f-{j`hp>O54ld_Oy3j zF`hp4<?_d2@*J<$wSL*B{6@dyC;O)MUwhh@$gEkPbNa+N!I_pGrAGc4@{O+3yiS&d zt4?2+WOQ0bX2}N&zh((5iBo-Nk{+b?9Mcm^c(VMqrIpOeK5^&PL#H(!%1X$n8DFY) z=lHz-TK%pc=Q^LUFD$6M&aCFFz9u5!Xr+((l1(Q&KTds?*mY`Sx$3)huMZ^eHhd%b z>-46INnd?7Y%EVR)^2X>W7gT+cw%!~vc_SpqlT%q{vz)_RO}G%Ud_H~Ki6N)PxHCI ztIwUh@$(#Y^}F7xFZ@_1{65F>Af@vB4$&_=>@HssKG=0k;xx~Oq(eIm3QjjSq`qu_ zEHiJzn<uB6o*ukWu;J*17Z%2oZT;oin|H6C%=dog=lP#ryeRkMe6@Z{o%@CVn>U}T z>{;)ycjD(hIkm_qGIrBX*-ia(+|?%7deZ~DFn6|;z0Ehn!sq;6y(;Ak-}%Ha>$!bi z^-T60)s0gR@Vz;+e8;)xoF`+JUQP5~cxtXVo6Nc}y*TwN|H_|L&h`1(_nh@_cl!dP zr%9iLzVOWHcX--;t5l~>`OH^#rz%-LVZIoP$VYpPTYJ`g>7M$1?zPIvHhnQW3f`?T zylUNfGiKGB%8N4#j!!)F#=^qJFZkTk`@5c6Jb6{Lf5GV~AJS95@U#5vKk=C_cvYqQ zg-Y>|kN&==r`~*OEj#z7MbV3bH&!;!U9YC=v)=7zZ(b3!@66KL2&H`sf~K{)?Axp9 z@UCa6WY@BYr8AVc-zc@SaqC1JZVYjGw45dI&(4sC5sTKOOpA0#S;LbsS)0kg&{&dZ zRhYKW#uSw!2@xqX4Sgb9ry8xAu`(&KC*s0sZOu$)p;H@<L>fgbW7AAnb9CY|pEY8O zQjQ#)+B(%}W2#Z&qBSW;v%DpGjM)}#+R~P?=A`GwX}&%phEo<xoNPLi%-VCBE6wRl zs>I6FDH|J(sZP@|SS{(1I^kqzo2ap>vA|)aGhs#>rx<I^oN%%=Ekx%CPlC>g!^W&V g%o1y6rm-bP97|eq%+*-g{!i>lk%vysRu#+|09cAlbN~PV literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_00f_states.bin.z b/client/resources/hardnested_tables/bitflip_0_00f_states.bin.z deleted file mode 100644 index 07f00ab05a6a7b3d39c59ef8e6b0697b7bcb6b32..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7685 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 AA^-pY diff --git a/client/resources/hardnested_tables/bitflip_0_010_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_010_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..74890f1ff19c2f6ccc65df6537a882cf812eef71 GIT binary patch literal 1557 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_010_states.bin.z b/client/resources/hardnested_tables/bitflip_0_010_states.bin.z deleted file mode 100644 index 3b5f8c3d1c4f00f23457f5a3494434d4fd450183..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17328 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 Z#qvzhQom)Hv+!*m72o!sHA~H+8UQtTC<Xuk diff --git a/client/resources/hardnested_tables/bitflip_0_014_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_014_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b7fb646d18515f8e17187e3b5a6a7295abe679f8 GIT binary patch literal 3138 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 E099Xq{r~^~ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_014_states.bin.z b/client/resources/hardnested_tables/bitflip_0_014_states.bin.z deleted file mode 100644 index ec220c70416c0d069c429e3b2042cd196aa1a934..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21124 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 diff --git a/client/resources/hardnested_tables/bitflip_0_01c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_01c_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..c865be04e9263ddb81adbdf2a07c538c4b9af18b GIT binary patch literal 1120 zcmZ>Y%CIzaj8qGbG+)kX&5-6@SNBSLci$-njsqMF3OpQ(cb(tV)pdYFK%qy3>j76h z103)rFw8VynBgPLk-%|)-GISo27`|pXNv(#0`m+8H6I2wVU|M@Oa_c+7=+arggKiM zc^D-ao-uGvX5ef&Xwb&c!yqzcqOWprCa=kn6DAj58TguHq~u)5w5^{qQ6yeX_}?SH zM?rg<7(3P%gwI)%l-QHZea4;fKtjS7K0apVMGp%s!nj|^=!rJ7eiT0wf9Hq$l-+%g zcUFjBhz~sUN&H%@@R17fDI4pZ4zmfLW7(w@chQ+EX-&wBV5ViN3BgS>CMI^XNo)u+ zj7SzUIJ73IPiSMpkt7Rkkp~-QBo<WlD-=9<c<5mN6zl0c-aF$pK25w}C9x(<dErG_ z?nRm5#i0c=mOrvh=4*FM7JV(TPE1TjMxvZg+~t^DqF41omG4epWV;)ZjwFk|o!9i> z$niNF;vT#UZq!$NRIqx%VTr)TX6B7|9z1wqaA;$vkD-m;9V-KCiGqzfi9Lz^Gk&-K zvu56K<a@W^q2(P(@`5+^PB{8OR^pSm>&41*$G=&`o)^Ai<Ih;8FMLM7W8cDqRc`to zN4_7tvmxPV#Kwp<Iw7C>S5&+HbG>7;w6*%sr|J9?HdeFV*(X@Ry}#i1@uF8RY`A56 ztPCC=`g8Qg9@jfI-m*vAbmTK0{$bj;X-3F0jcJ0)e?;%NUvlj@$j9-pfa9U_8~H>T z*{-ABmkc6i^duT2CH8TPmWx^hbN^#Z`XZ{#;Lge>a$v=wHkBiW5$vvsu}uXcN1F<k zaoRmNG)J@X(C@<s>^^+t7kU@`Tuk#pkgaRA(j2WBL5Gr#CasB>@@X26gq|3WM0cC= zxvKte$?_7v{S|FmAMkkAO=hh;{M>rJWK~~Z>!al61J&%8O3LJJsL!xDSjT#?ppPe+ zO()`S(#kS!Ze|gKh$J;_iNrQGof4-Vo&ia18mq+*h)g{w%Ppo8CMFujCNx80s)U62 zKE_5v9@QkFq&9;!YNAa?4U-NT$Z{?H!L_v2xs`b%Ph8P1Z4n<~(QY0ei5U_}%FM!? zovlf15>t*G?d&?tCUK0%O|`S(z!8a+GU84V5;G*0b{#cT=1S1<@k&bMiC81CvNI_n zDQU)rgoFb}n+_NpGSm?{*tAiCCrL+Q$)Q6AGu*^<42~Hj8TxoLi|NFOdaY|oOmt># zirBD5jmKb0vY0`;%Q}(J=0%4jB9gin=`jmhSVTlb><HOmk=PRv+-fD^$0wszVCZ@w zDd}NBn8b7*i48k^G#*TK{&=Bf(buj{H?PpZh*eYg;~2%CgmyF?I<zvhnL#HcDa_C{ zVx!hZ35gk<OPi9yw4zoROlEC5bXZt4VU63QgH1`ZS`!nK4jecV7114PsF`#iVxz$! zgJfYgF=4KwJO&9HReN}N+{8GJ9Bu7VlSmem*l<WELCjz=Ped}0W1Gf?q-4>=ZZ<W8 SqyLZIndm2?!u#@&-vI#HI>G}0 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_01c_states.bin.z b/client/resources/hardnested_tables/bitflip_0_01c_states.bin.z deleted file mode 100644 index 3d38583d34fdb2b0bd944e41b363985a2b6cfb05..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12840 zcmb=p_4cmgwl`*Z3>V(iyGA;jEx7umMD63o*EgT4cZoPMeD|}d_&Yn4g)?Y@*RS{g zf8PK9>-_T9_SgUa|32IP->38cyYK(|`~83X+wAz?H*fv_x&QM2N9+H8-X^d6`}_HO z|L^YK|1<yJ?Ela9|2=O1zdL)!-#7o`{`_D2f8D3Q|KI)C%_sf;+W)Kb?Zf{^|9|@b z%+Kt<&&BIs*U$eN|L17@-}v9RuJ8MH^?&UD)&F<@EC0LvpZ>pf|6~4tpI!g!{=eJ* z?nB@o^Z#e-Ki>yakIzFW|G$nP&G+kH*MGeJ|J(o9-{N=H{ZIKH|Mq)&-T&vm_MiVz z{x|>s!rHgD|KI)}{r~O%wf{f$|5;!A@%p|W+3|ng{%1^DxBuL}e{bUcoBvz0-(vrH ztN+)w>;GqV*#CF`SNR3b|3d#8{#*0^)&EENe@^~)So`PspXEjW#Oq(%NBloi&tSE_ z{@wrJ|Ey2`_x!B?`g{GZtN+*hpL?zTqj>$-`mgp3&-Fj;|ET_N#s3}ug8#EK{I369 z&+s$+pZUKd_y363Kh_WaV{iZd?r-~bsqf`4?EAJ={{FwOEB<Ql_`7@l>)XGx&Sl2` zIcl%;FZ;ay@&A9fzu*7*{o>#I^WM+@_4e=Ao4^0x{v-dlZu5WJ(m(EJ|LgqJul`?t zzW&?)Ti5sf-T$}#{GaUq`G2SXe_H?5{-Zd^O&{M&{9p0w@yh!5arH0m{f|BN|IN?y ztA166{HuNaxqt5Ol(qlQum8V%-v7w|YyZ!EZNK~cdjH%1%Ps$#|NpZ8&-LxK-~U_I z7yqCC`~RK)&;Qv!|9|a&@T>aWpWd(f_&x0J#b5b<!~a9z{P_R2^-LAo|JP*I-~SxG z=(c$M$M)b&j@!T2&-~A@<KOJH^4D+vkN5n=zaZ-0{i*ffaJvq2<JbD1_OJdigOXb0 z{QBwtf9kJ3w?FId|JVQa$38y)KHmS&?)(3L|NVdC`{&>Pqdxopzg>U(|NC3@mH)Q? z-TxPq5VQAR{}KE@`2XgA(Xb?Q)qczR+PBB&{jd1%z5S2=zi<EN{a^j>+0T00bN_As zo14{F{#*ZR|F^CA|MUO9|8xK6{%>plf7<^?|KB4B+F$qo^~&S}e}2YKeZIdZuKwQN zKbG_Vzxa87-hbcaJ@0?!7vDesxt_7$Z+QCu{J-o^{?GUo@AL0%-2aXLzQ_H)3Wbae z3=A)d{%zj=ul(Ql@c+zD>VJm+S^IzMvH3qv+cPli__ura|MUO;cz*1!{XhL<{=d%s zf7ltoV8g3F*Z<xJGZ`%YGiJ@Nul_gt4?n}T`q%aif4V=W|B<wR#LvLMa6nUZ_5N#1 z-`)FPs$2cvrR4Xc|2OlK|IYva*S`4v|GfP*)$x}yAK(97zvn;u&-(a({pa>S%K!U* z&%f^df8`k%Uj2Xdf8GDs|6h0hdvEpsi#^1~J>^o*zw1wZ{QP_TvHc%G)-W)v_|H72 z{$K3>->3gGB>dg}kNL!YiTY#nKPvwN>2WyrYy0p2SLzvm#{Uzoe_g-yqx!#3{0s~a ze%=2%|25Ru1?PXh|MBzr^Z)<ye%JqbKWG23WB<MG|DXT(<<B3#-`<bcJof+J&-=Fj zU)F<+EW2XA_*MU_|9c<j|4Co>|GEAD$k6)ws(*|B_5Vr#d%p7D+duZdfA0S~|6lux zzso<)xBPeQ|C`tQU!R}6Z~yE1s;B>7{OSIB|JV9|>;LgLeBQtOcYo;H_tpQ3N`61m z|2JXnzsRS5`=8k}tovVg?O^@?>Z^bMPhIk#Vb#<Bu|LEAp8s{f@~?RP$MFBt|6f01 zfB!EikKM1gwf(=c?0^3E-~SiA|KIcb@67xE{o?JX|Ek{pHT~QE&41->|EKMbFZn;S z{?q(F%m2>#t-rs1+yCwVK}Ffy?^5-z>R;7gtA7njwBXWn{kN^_Yk$W7@816}{&wBI z=lQjDkLEuQJO97-%=_!B|G(1S^?!5k{?#{r)K~wTGw=VV@AcpRq~k5#7LiiC9k?lZ z{&##5IIrsbzMu8{KR7`4{NH-}cRb_I|6Bg-*Z#lif8_tY|6{==_rLG|T;FEj|Gj_D z|MV|^PXDg|w(b32`|5A|@73Q;{@YnsU;E|H?7wvv|EB*tS^sJNx4re2*S~Lv2Y?J( z0Mx(v!){ghfBNtJNAAC`U-<a*|G)qE8LroV`~U5K!yo<stN(ZI|IrOXf9)UqNzYZY z*8bnOJ^uBd<Dd7h{lDUW#lP8~>ltGH|NZ;x{NMU(^$!2)KmRJu$CeKpetrGF?)-eQ z|2Ll3OZ`7q|MchL{}cZ|wg0&NUwB6RpQrW=3|IcYt&jb```_yNzwx>MAc>HHVMX!3 zW4k{V|I7X({U4Mp85(}sANcwF{@4BcG4f->=lMRr*T4I1|8e_&_Sf@&@;f~L`u^AP z{kQ+mzgf@l>Hp^Q>;I)gGT)EY|5yKKw5Xr>zt{ew``_bV=l`;2xbgq?f94bW!Bxn! z{XeAZXFmG>v-17D|Ao5M|5tq5y8iEvZ|mLP#vgop|8I=_@1J|V9gY8^{AmBTKSh7; z*Z=;v`=8ye|EvH0`+o69?90*GVzjoXAB44q#s8CA{=eGyU%38v{f2)t|1*@t{kIEW zV}IW|>3@CFf5sF4&)e<)HUI1W&%gBlJpvWq><|99{xkn~ME<M%_4-%;84~{I|L0fu zf9n6S`9EfZ8fvLs|DQkKTmAp|);E6_gBq8QZ||4eTF<(@{(JG?H_t!c60iT*-|_#} z=hGkS|G)kH{@3pp|JHx|ec%0Y`O^3Q^FP;r`F-}^_bVUeP5*Cxvj5HB`?mjY{?Cs8 z4JwChKd=A0|7-le>Hn|(KLTpM{yDlo`Oo54{mcLDt^T{P`hU6P|IN?sSHF55`1AYP z^Y&%$CU5;`zyII-s(<N!xBn|&_y3LEe!JZN_n-c`|L5}mPx1G^-TnXk&)L8A@BV{Z zR&)MG|My?{|Lv*$tB>7}{_6gE|JV4x5LjRL_xm4C1_p+PyldCyud1m(4{CXC|GfWC z_TTOQy7&KJW^mZ{xBlCG`!BuqS3d9GRQLbY`TsABkSlWW-+!#{_1=H^_x|6X=fB9o z%diXT^?%F$#o(yV4{(Zlzpt15{qNO&P(j?a|EvA)AHwxN*%=tF*Ps9P|6cuE(|`N- z?*DiD|GraS-*0|jzdgRLulTe7zsnFC7!K@SzVPn6|L_0hgG<c=KmDIh=6P=KFdx)< zI`^M(gLJ|F`CsKH{4ak}|MU8<{J)?U^a;EF>Bskj3Obv&>+Ak){wH4lSN?k4_rJ$) z&)@&+-~AuP;0E50)tmnR_#=M3;P=h{dw=|o{vZ4F_y4;e%Vo{}t^L2+zJA@m?f*{y zpZWRvuk-r<uKl-r4XQ#w&As)tZ$W*I@c-q1-~aOe8~-Qv|IUB!L5<zN;Kn4hK?$mx ze}XzV$L2$+U(KMJdjJ1xpnlNX|JUE{FZ%oM<iGv5-k<;T@BG*L`5)i^y8qAl_bpIm zxBVZe@9|XrXZ-I+kgmt=|I9~X>gU$}y}9>a{-4PD!n*mT|JLTm|6^~c`(6Lq-l6@^ z>VL_9BL83gfAs#3$^RRpexCp7|MZXkziaidJaXs%@_*bX{!4!T|LS{u>FWQH|E<^l zf29BK)&E!Z4CmsX)IawB6ZpUI@A7~A44{O|@M-;@{6C%hf9n4`7QgIAecip?-|J&e z-?Lv(`!?Ht-{04PzrzcDm)l?8{{8Bl%lm$G*Sq|=J}<uS|L^?!_1Evaf3LrL&;IM} z->)}+|G)jG{ja}i|Epj9=%4jJ@>Be`fA8o0fAfFq`r6<1zyHtsdHvu0U;6(~|9@2v zZ9m^P{1^E3c<}#wd;eY7`+s-O|C^uZhkpIM;?M7E&*iPZpN#rHKmNbJEx5^UeZ9VH ze*FAx|KAt=%m4SX{^$Dq-|zkx|9ke&{`>!(|Ih!eKlgv_|K(Tymp#27`uP3YUyGs5 zI#AhQzyDwLKb8++|01vc+xL9E%Xa;LkNB6TH0QnlZ}gwB;IDbK{kqNn_fPsF@30lt znz3FF3Aa!6SN^htii^#5|MmWVjt`q#e|6XY>woKaADe%F|GXdN`~QFc{eR>8=imQt zeK!B!_W#@d-{1QG)1Q1$x9;=(KiBKle_Z}=IXIs~lg#S+jQHQT`fdMz{5L)CC#b_| z`#=2e+0Xy0=KQbzm!I?R)1UaS^>4GmecYe>Ki9vF{{OW8C!}17|8und@4xH8#~Xfr z-mi7OUUKihJ->ez+x@@zdB5%d*?yAuKi_}0Z~pWDOb>poKlktcFa8t%4ZrT6@#ps5 zf60H}@BIgAQ-Clt0|Uc_r+?D(|Gxk8e*Hi86aPQ0{}KH^yVw5X^m+z{g1_bE|L6bx zIr)+N?|=G_@Bb05|H%)|r3?vIf3E+%AJlJQU?}*<e8uknw?F1T<r&uezgExiQ~dGy zAI5b@<Uu7;uvS?8TJO7i|G$p<_OJ8Bx1;|z-#_-t{{Qd#XZ!x&t^4_H-;&G6_J99h z@t^<G|9yYt=hh#+4{22Y2Di09{r}znUKjtpUkYz)RlGMj_dZ_h`1$wyd+Hy9tYKgX z_|I<f|IhA!->3g)Jn$?3FZ+ag!+$;YkKO-(T-ng`HUInnmH(MO?f;|w@7jN_$Nqnw z$}=z=_`3hK{dI6Zf`P$d{^$E2Kc7GU|L@&z|9{-KtncmpKXu=K`{S2CfBb%X|Nfw! z|9?O4uZ9*~Z&uX1U6sH3zxw$7ALnEKpRfP7dDXvvU;eoNmH&DE*Zj|aZvU+R_PPGI z{a^mT-~Ny7i~p?sfAf0%_4(?x_1FJ@IrabIPjP4&F3<41-v7J&>Rb1}|9ScX)L2uD z{=50qZ~3#}R_mJP|Np+P`u$(q^FL$A>HoVwtw*Z%^#8B#tl#$=l*jh}ud4bN{Py4d zci;cJ-v2N8{kQS{|8w`%>3#j4_xk*s`t;xSRsYV`?SJvl`2Q38pZ>oszsJ}8&-tJK zA5@0jdT;vg%Kt0>K~V@DPWcTU*!i>{RJ`ur_P6Hz{a=5M*q>iJ@Bi-^_t%I2zZzch zKV7;$eB;Oe-~L$I{!e}X|J~2?c#AieSW=3&&BpV-??18)lvg9a?Z0~NKR7@t|7UOi zzMtvS|IDBD;r~MaZ~j;PfA^2>{lE7AdH=Wj*7beg>ns1CfAMqr_y2El@Bgm<_NIRC z|6Rv_3IF}~>%~v=-+veVKL2O(|0niutN$0Rdk^Z{Lju4OEdc)C_{m@L=%4=g`p*6L z|2rLj{{Q!1d4_fW-~503pYdn>zwrOUppl7>;`P7l5BxlT%cm^tpKSjAYd`y+*GK;k z{QvQf`E$^q#_!)>=l}k{=6}PV|IfZYzlSv+etrEvcD}vtzm4broBZqjf9kXQf93zD z>mTL+U4LQUkJI&_p7rhjyZ)8`4gddZ|E)i;`ZM79pWgDv&;MNiVg3)4(is@O);D}U zzyEc8J!XD<Za?!|{N3;MkMjTXU$g%#-*E2r{jdG?+yC2d{?G8_fBO7*q#kYff98UJ zO8=$nANBw0e{KJ@o?*lP?f=;))ISAPA!qA9n*TF8`v3Fidwc&sj{5d55HvFL@ojwn zt^G~6_y68m_w94#+wT28+>g}1{rU9A{{P?pmjA6S`5*rK@B76ccV8N<Ek<jL!B|@q z{F|Kl|7z`j^?%>~C;T=3&-h}`zuI*X_4~??{QH08AM=F&^K0wA+P|)U4jrcc%YWc! zH>e3^|H^*d|119)5B$6TPu}6*R8W`Q9Mn)dE%N{T`Recg`m=BTcHasbaNJ&RoAsY7 z@Bh2!ziys?zE%I<BYDC9Tc1yV{QuwW@AtoczxX%)?f3ot$KHG0|9}74{}<n9|9!vm zv3=IR^po{BfA6pUxB36|ec#^xfBV1sS^V$%*ZYx2LF$kHaK9?=|F`=4FX!+7-W&Z( zKVKhq_59*b@1y6}zqzBH{kOjEul?6Q=YQq@eIN7xW^G;Vt$+JZ|J?s``TwW;_r2Zy z|NPI{(4pM#|1JM-|2IGA|Lv*u;l2B}zv>5#Oa0mphX4QkdjC@x)FQaMX03hb&wum& zbD#L1{~Xp(|H#hJkn{WhoBj1Kr2nsYUZ48+-_`m5FQy__<a*zJmhX|?fBE<R-=F8d zw1t;p3;h56di!T5uKHY9Yudg4R^R?!g%2fu`v@6IT=#$8+y8t2TV?;Lude^Q{eSJ$ z*Z0#wL!5tPo<E!aXZe3fDcMl&@4Vag|9$A_X~XCFr_?3S)i>CIT2FKSGbflo_-Fsx zUg7_HP^;+c{a>IK^n}`f=lkkG1zqK>_`iSB|LXtyWxww4yWjoW?d!k(-TyHiJlpXx zJoW#_pZe<_e%t)N`s4rY|8}4H{(tx5_f|Q7qW_22|BLwx8h$r^zW(d{_&;m^*Fxt7 zK<3^8^*Pr6dk-29{k8wc?tjI9?}Hk<zrl@3XoC_oObD)`d+njrS9Xx*y8mncAC3Qi z`~Uje^-q8Oo&2|c>;3sZ|IUB?-|q4KulxVDLk6<*|8D=k{oiT(Py4?eg>*f(|7Y*m z`OoV2ug%qe@Bi5R@6jK-*MFk#@B72g@b}yQYxNC$Kg0hX|FQYs>i^yQKdS#{-uh|& z=lQ38f?N;FBRl{5{}rF`-}u@8tMB)}3j4qLUwPF3qw#-0gWL>r_MZUt!WaL0{LBBZ zJOj7_eG>ok{tw~$&+&hH_xpVO|7TD6`~N$p?X7qCed~H%&F|}rzpa1p?S0+4{P(LZ zm)Cw2|KIUrz3qOP|KIQL`@e2~|GWRY_SV1J{{4FT;P0A0So>%5s=u}8<2&=>{~VR~ zJIQwU-v88p%nyF$Z>x(*|6i~A(!L=J)|x4ggM{1D|0{m;gXSmFYyZXmd%k~-)&Etc z|JVQiU)F2Czuxxa`?~+{zyD9ZfByad?6dZN^Z)1m-=F>e>CgM1Zr!u}KiB__d+h($ z|1T(?Lz7JSfADNl^}ok|_3wV#|Ks-m>VNBh&3^v>tHuBCf9~J-^YrKbSD-O$P!IQW z{qz5~Kt1G7pnfrUfc5{czw4LxF@AntA3E>9QPtnd@1LL7{9F9IzWSf}T%&!@_n)n` zKmVWgz}NV>pn0+h|C3+U8~)s0{rC8<`_=GCAkgH+g3~|G-}`m{=l%G<{1g5^jsLj) z-*u__NBaLklL7DF{j>l5S^cQ}x4-en_WxA>_ema9$}lh-SoJyndp)S%!ocw05BrMR ze{X;0f3jzY_`mi)!zcY?^FOBl>97Z>T^_RLU)1zn)&H+=ee+lN;@j^3>HB-X*8ltd z|4i-w-G4v5t@T{qTmSz5$A9uq{@4DrxBB0;A2OEo4cyiO_5aKNUVr{;|7&<#>%+aw zIrsO6^v%CtFZur%*cyff|M(03{Vf0cUjILH!`J)2_!a&q{gJFc*8c<SO3ByvArpa+ zDV?duAX7RGuj{YZuY(SOG}t}g|M>a*`Tu|Ke*6F9{^Ea9(*Lz<|JU~|fByLW_WJsz z690ccum27$x^4vi?^$KP>i_q?{U7J={5SvqpY+hbe_#IW|7HJa{#X0wKevDW|K|Ds zZ}q?A7k!(5tp3@L=>MD7|6gbC|Lfnn|1YQhU;J4gT87&*ocllToqgEW{qKLCz6ffp zIdA)wKJ~l(EO4telKubR_o3hahfn&)ykgq_@~830)!x5&;r}(?LBn5l|G$3uv;5ZI z{deF0@80*{_#J4H)w=d?%&Yfzug$;t|J=8F)ZzZ(cl-bRy9t`U{bT-r>;3FMEB~(q zPc1%!%y@j;59)0{tp^pa^|`-)&fEX>XJ`GqXxsna4fn^d|F?Smi+|_M{;f-T{QvFG z;;MhA@BP2~c|QK)Z5JuUTY9?9`})pYP+r~irhfI@|Fb~>^7-HOy!Z92PyS#2^ncx- z)&J7}e*aevp3(hz|F`(o^|kN+fBHB7;%EK$|8L&j_x=ByoByl+m-c^E|MmCl#n1WQ ze!G63|5N?{$@*L0|2>Vl5ANH81E3f^05*P>e{tk*{JZ}`_51&~_MQL#{kJ_s%>SF9 zasN;I|E&L~4xNDf_P^ot{H-(JtodVouWs#U`Sbs`{agI+@z4Boph1oA-(TB*{~!6E z@#p`uug~wrnh#%H|G(R=KI%{M{QsGMr2kKS-v7`2-}L`S?*EEkSo?AMe^AeQ`~T9v z?|-fT_qBfOPgwoA;M`B?_s7ovT>mlu4>+YWy!y}Ze184)|Nk)a<GFgHxBGX!|9|BE zKlwHF&+HlIUf=&({(s*8`n1u3T<9PGXebvlkULsijKtdF!5{U@|5pG0=l|#J|AW8M z|1n>v{QEm*<G-5s9e@9K{$*GAZ~yzxtNLsI&q0T&f5|s|76&(>uGGi;U-_T8;qU&x z_6>iuL0$Izf8F~(PS^Z5fByG(f90=l`re-f8gR`2Uv=f5=$(Ie&wt%K|9m#KRV26G z*UR_bpSth={<HrtzBm7UKlph4l|Sbv!Df}$Ll(_^KeHdyGDIE)`QP`kf0g~bU*F$- zZGZRoe(Im|^Zu_{HQ)W|{q1)DZ|wBH_Ur$jU-hqk&i{J<*ZrOUHvj(fYs=sI>7VOA z`~N>(Uwga!|NPJ9(4kz=z;6Cu`=$T3YyV#-RiA%Ve(nEjptUm~{Qu|I`=8Z8wfwHg z==xQk{@VT*pYZ?wx&NQmgB$9g6%RMR{l8iN|AP6y!1Mo4{rbDw{{Q0B$Q60ao6qkn z%<GnaumAqs{&F?E40D+O=j-jC#klHo^$?xC|4ZNeUJV~geDfGGlo<2h_V)kk|E1S{ z{QvgvSN{LsTG#iV2M=*to;z#*)BiuDlw^26udS^5-+tKW>2v$3{zh~DGt`1wPnQ4L z59A$yOi|yT`2T4<sBHLi^}pipKl5cl&9ZNwx9tD*^Zc*)KVR!(e&78rpI`s))$e-P zx~KK0{yqL2A9MI^`v32b{^$QKpZflP`SJUuH-2pYxBlOsoxecC@9F2_U)%5h5&i%7 z8p!xIsIuJ(>T|^Zy$>1>{aXLA{O|K$`$6+i-@uJYXoC_oN(Qc?rR$;8D}IpXzyG2^ zOB1&LkKg|P)YsqYzyD|LxBvXx{`&vgWBXs%|K^7dWdF(stvjlJQvbGlKe+3W|DRu= z_;2aAuj$`^?f;nm_vp{sYd^Q|tNkg@@C&pii$V6&`d|GY)BlG57q5Tp|BpTEsr_^N zsh>fvhvkvt|MP$8EBsGC^MCdI`m1X}6X#n%b6%hUZjvU>8$k0(NE7Gx?}Zopffj)X zevGfKv;6mdf9?O+dilHmORN81$$!88{JlZnH9rvjGd=Y8?|J)$?(X~1Z9iuc@2<W7 zPyb;*@b!Mq-yP@v{r9?5&u|singOr&`LX){>HmS><w5fk=YRd#{pWmrWa+=q*Z<<b z|9>l0U-!T2(fz;w?!W(keBb>0|F6%2ti`Lp{_phX{h;xPv-O|jfA2ju|JVFqpnMKZ zGVA{>1kEOW`*Zwv{H~|<AGiPi{wMyc`T75^3;(_Uxqsu&)1T|Fg2u2xJ>2L2&;8#D z>LEXcj;?+b|Nr%OyuU2-v-AH~+5Aua^6T@v=jVU^aX<h6+n;=^)SC14vwzpk`_J9* zdcPHDo=oBY@hkt6KIMP^)&F(>cktRC&?FFO^1@;I=lOfT?*F`h|1Wuk|EEE#oYtHE zI}-nok>SAC`*;7=e|zrVRsZJq{+{~J{^0c<pmL@m^!fgG|JguHh66wO1AhOx{rUcr zdWH@EqW?2KiSMz0eEx?ZcpAZPWyIgDdZpk0t<S#sTYb@O@&D)Rq+kF4^Zx(L-~Y;g zKfV2XlArYdd;cH*wLkIy_ow<2@H!~aSkhZ?TMN|xfB$R!`LFfY;ccx4doNq;uU{!+ zzyH6{zh1C43=V(gAN=|J{@4BZf9wpe_kWdl_;>V&@xLDVkD%TagVDA9cOesj;3*yL zUdWUV!}b55C6tgM5Qf@w^~cZK+yDPwe*6F9`saU4&Hjb|`uAVP|NQa$`TzfU8UFiz z{{K5@(Y0amKgrPgkpJ&x>mS<}|F!=QS|RxR@@M(4^-t_y*Pr{G|NQ^W^Z(!e|6=d* z*1q@unUCB5rN{q|t)KVhZ|wie+W+03$Ajh;zSe)OXPEQf_HI3R3E=d_;AKTQU(aj3 zuQvg=S~v6k`+a})yZ`G|{;~(?{(paJKXSGAXTRFNpYK4!Uw{9-e)-dX>+kyA_y3F6 z{!hOHnq)2i^=s#q`@7fLZ~i~`?SIta{^xh<fBxMJ>e~Ly|A%EY;M;o8;N0o|pyKua zt#6-g>tBBs{%^Cr>fih1y8Ur~!{aahouB(B_UN(yw?9As@@M+q|GS^t<1gMyNh#jW zovXO_U+6X{ucqAmA7=gE926kW|E|A#??2ax|I1;E&ffoh51!HewEw$)R{ZaK|DXP~ zU;I4&-v7<pYv2FBx%vOsf3M|U`+xcUdhzr7Z@zcGv;XY>Z}R^w@Bg0Oxo<x_0G^{S zhfIEMf1&gD{yYCw|JD8HmYx6q{r7r?9sf3i#{Hkv|BV0Z|K})p4)X1P#^?6g#y2B> zmhbr+_1u2m|J=Xse~*8@Kj%O5gJ198U$1}nfAc@)Pyc6MpI`kMTRyz9{(pJxzb!wG z+x@@%!~CE2dHKKnfAs%%?*F>q>Gvc3|BMU^{^kFF{p<eM_`k3JXMKj%pAK_Bo8Rl5 z|2h8g{U6|z&T!>F<2n2P>;C_Jijg1Z{7<=6UwZ$4=l;L&b-CB=|K0uf|IFw>E_4t8 zG?WV&$Q`XMMq+Jo;HUqxzv18i&i`@yfAiP#f7lm%{`Gxl(%+x=1b_b*{>|_3um0Ol z<Ym|-E?>WjwtPL^e*SfAt4Oxq|8FO?A2jYY`~Twm`QP?0@B6>v=X_PztaAKs@S>Ub zGwVSuLzGbv*~jvs^)_GM-+j%0_xJwOKjz#1j|{c%Kea!<_TR?h`D?!Z|M~U*mCyFC z_kZ1A{5Spk&##%k|LZ;f|7`xh>HmLid;ib=c|LTN)t&#(|J?so@AWr7{9ml;zk93f zqyDe`4_f{V!k=I7f9?-z1e9#v_Alh=@9Ka03jg=dg*DWV$}=!*di#I#|9=bf|16&O zf9luY;r0LArz2P7J8nF`|1s~6-~0dX&et#d4llzR?S8)A{`ons`rL0tMAiS-H@=7e zXN9f~zj+)ol(^$x^|t@t|Gi%G@&DVuU+@3>9=fi6K6r?;c+TwlPxJplN=b%$w!Ck@ z{i%nIo}R1MnxA6vpYc~p&H4J`fBX%18z58E`<4Hn-VZ7peysj~xa>c>>eDUN06bQ6 A<p2Nx diff --git a/client/resources/hardnested_tables/bitflip_0_021_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_021_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b2fef5781e88b30b5e63963a650864fae5102c55 GIT binary patch literal 7328 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 CdRpxO literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_021_states.bin.z b/client/resources/hardnested_tables/bitflip_0_021_states.bin.z deleted file mode 100644 index 39fc37c15adfb3d7d166aa4c1ab8cc6419bc3b0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33654 zcmb=p^>(iBrnP!&zTH1~v)rTX?ag}i#{wC5Bkx!iyuPCMzfN(%K~aPK&#$c8d_66( z#eu_9;s5Xd|DXT2eE$FN4d1_4{{P+gr}oXUJYD(S`#)7i>^JBCZ}<MSf9;NcSM=u} z%kxf`J9Wwa+WdCgzm+#GFaNvce%|lt^Oyd+p<Dm^``(Swr~kkB|NHm-@5}bN{QhsN z>}G%UU&!CwpPzo-|9^Yi)TRHg>p%Y&{o?<{h`RRwANI5T+`c9G_xJtJ<xg+FAN?|Z z`tf=H=YI2kTEFw(cf0xax93+{)X!@#{`u{H(dYkNb*uia{B``h?f<zy&;QwO{Xf(G z_x#nrg5|aDU;1u$?O(y)ukTlWvtL}l#-9J<uQ&hKUE9CXe){{b^_Ks$ul+AR7GLqV z|LgqkAOBsJ{D1v*vCqFM{pk3t`2U}8>rbtJ`pf>#{x$#C{9k+WfBL8IKmL6dsIGrg zzvln6>-9hQ|8M-C{Qvaw{d4z!o)G`v>wjZi^p}tS>jVFv|Nei;ALD!XH~zmregE%| z^Y_=aK7If9TkBu{pr7~q{_Eed_kY@7QggTZ|LgbJz58c9t)KVz)$Xqw|37&XpYk`p z`_K9N|DW#vum9`)_pkNO{~!L}`Cs_&{%t>|PkQ?Gh5e;(nU|-(+u!kD`CtD}|3C9h zf2QC4*Zr6OxBNHz-QV^H{knho$N#85`_I&WssHo;Mtz3;+vES8|A>Fw|3Uuu{C7X) z|9<wrcK(06-TVLgqW@zT|2zNF{@nk<fBm29-_&>1|KIhW{jdCA`TzF+>i_&d@qfpk z`|slKEnhGBzxOZyzvz$u7ymc>|8T$VKW2tEPFer;oc~AFEq%Q|`+vo^e?Pzd|Mk<J zfB&QZoB!2c|Mx%V&(qiT3|EZ)&;K!hzsmpl7xSb4F*7hE{Jnnf|JIfNH~(X1nDF1~ z_x|$7^Y`cdPyD-m@4w{#$N%;JmH%ze!0`Y4-5<(-?C)Rv|Iq%m{egeY|IYtmXJAOE z{_p-r{$D)<!>9keKUJsh℘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 diff --git a/client/resources/hardnested_tables/bitflip_0_023_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_023_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..32c7adfd59bd1b0a0c6ab194de8ccb355f5708ff GIT binary patch literal 2080 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_023_states.bin.z b/client/resources/hardnested_tables/bitflip_0_023_states.bin.z deleted file mode 100644 index db4897a3507b07d0a76f2ac7b603911c19c2bb36..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17592 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 diff --git a/client/resources/hardnested_tables/bitflip_0_025_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_025_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..e21a5ee9374aec68eaef5f2cb0a7cce6e3f82c17 GIT binary patch literal 13155 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_025_states.bin.z b/client/resources/hardnested_tables/bitflip_0_025_states.bin.z deleted file mode 100644 index 339b9222f..000000000 --- a/client/resources/hardnested_tables/bitflip_0_025_states.bin.z +++ /dev/null @@ -1,49 +0,0 @@ -x밎-n  1WM9/điC$E߶=޿~{<۶pzᄒ̓߶o!v|m%ǿ~xsy967GCBG}?9K׏߶2??!?^/>Z=},??:,?scߧ響7>>俦i~????C:|}||{s^[^9;+K_*붭֓Ӷ;׊~?bjZm'??Ϻ?vRoVV'_B??矬r?i8w;cG;9o?ۣÿ{ {y~<<>?G误ח~ǻ篯;:]{~u{w[?!J~]k ?K鿆O߶?1{VoΣ~~{O׳m^O5ߨ߮???n%h_/cKC;;O1~|k~^[oڞ?}s'F0ml߲mbٶOHgj_+q?[!??\5z|{qݶ~B7GV\m :vr'y~%goy~yK_:|7υ-˟ozw^ΐj_?{/ſ=Kﯷ[?dO>XS_p#]ami_g?kOS?Km׭3y=2iO?z>z?[o?_?߶'vktOu<wnL?_G+޹?͍OJo'׎9 UO1>>9__𷍿)ſ&j_߮?צfû?c[n7mIK5,Ѷ_fm_s? -/_v?>8s{Fr?9c:Oo9Cy?3{Y_QԦ;?{?K!#[cП*PK=WOG٭cc[X{s꟯gS%KG?ǡw>SS//IC>Y~J?w -~m;_?k?/Yv/m;O]w{&O]-?۶G?}?GIet}_m_QvOO~o~~}~oGy]_ZO#>>oϢR[ _=RϜ륤?/j>߇ -sS-m{筿1ajֿ.iYt7/-Wu&#3Ko??;o=xti5?yէW؟=?_~?No[qgxP?#? Wy??cu?KgO?GϢGO:OS_cOOk<_ܷk}>U$R_!W~_tWV\j:u|z㟏υ?}o۹MN_}n׶[𯭿ܼ>Of/s?_þi3Y2??ۥ??U\'H'_2~rL/3/R_}??ӖcOe|/H_W2o'O忴OmѴt_{#'Ϫe g^-? ?__vHחz>82Vj—ֿ=?4|Hkſ4w>UzOq#=s?5ٔg69?i+s[#|??/_HW???z_?=z_gKJT]':+?ߙGA?_<iߏOwqCc\K?i<{9~m|.'/,yۑn=sУϿ[hGz_/#mcW?8U!??s [z=|:ם|}^<^ -vl_H'=KzÏߋskwy<=3W__~?ǟW__K?dOqpync?(Zo/_ߟ}OǺK??e_ ߺ76\s ^GӶő?Z{?-X^L:zϮGOdDmkSz?wg?'oFf̋G+6=O|Wï߶.?4CMs~X|O?9o??o# /KyU?1il|7~]/{?e?oY> 5zqܜt^^:ǫj=?~wvc.} O,$ז5|k/7/׾w?;;=?Oz2gj|?ϝo+ֿߚ'?f?m m?7_ >?z]7>|?Εw_5?7Ok#}𫭿km[v~:}[?~}q;:߮Cmt_uo`az_=_i߼cng9~R0x~??gK -?eߵj^5KjZ?w+{??|П~o-t7{8~R}w_б~:sK's_;??/?5o]Z>߶u˱POm___~ο6IӞ?]O쿈OO.[%'FڦυCkY;9J/_W?#g=_ٺ-?s?6n͵=翡MS -uHVYy?i'Ugߵz?+?/ٍcٶ#/\O+Y_%MwNQOO!}<g<?>Kr.W?6|u_'}~owi9|[U[]/_IGk֕?K|bx;/ߌ/pXǿrQ4MKORC۶6-=~KyN/f_ߓ'iJז|c^o?y%Ry_ϧ?gIϟh??xs/C:O։_+~'?ֱ8G'o[#-Uh?ƻbo}ُ#h]eU3?ͳ|RkZצ$,uV1cױ?Y?)t_GȿϿMiyGAw -go>mw~K<^ -?S_ -??b^E_?x/m{GK?}~GϏ?/qUg??MZJ?ݾ]Gyְl_o!???__|,?zmmџy~.x~gQceG#׿':!~Ea?|_[犟?쿜>_ܼ‡c8ԖoYs -zgz>?i9W/k?QJG~gk+No]`o_Ys1+G?CYaYo5l!_^q];K?w?z,%OWOzW[cٶۆO]?ޝǗCbHW?+d}zόkIvKG+6=×ʟz5|Y}9߂oi߭Zy^oO{f̿fu2]ߺeO?s?g[??9s[P?g7cycۮ|n/v~oS?ڮIݿm'Oߦݺ:mCNGv׮GooǶ_~s?uSD?n9g<|?SN~m!?=߭{y_5mo˼[ -?_~?/¿DciA[?;~^?qI?>sǗ[w^MIKoWKu/`}M6s__]϶xxzO뢤?<>N<~%)]W?ϿuM?ڟoGtdx??y]'_ -,|֯_n^{9S_?L`oPg+GqߺMB?4돬իJ?Yg,BWG7Ezo6_'GOghF[by$NS[TH?Y_jרoOOדd?=S{ܷk}>o_9|I?Bx5k2{߲/]m俿??׺o߂.?sO<>bg~?>K׿&>7Rk-_n^b{}Χ+ 3_)96O?_G͐goTs#_c+Ɨ^Gg>KƟ_si1_>dg+Gkn7M'_JWk>GOUgݿ??7#_7cck_[K~]}9W__̓Rwg)xƗJ߲^)>sxcןt_=?gW_^6y/?n_?џ49O/eHRl?_cy?{o59Ou_W3G?/+O5׉h[ik_c;<>79~RC?~~U??>WV?9ygyߴ=7O.<?߲5֟gk=ڟc/m/?O??O?Rz|{qݶ~Q_w|-i|̅w׏o[W~Op9SFumSM1|x3~}qj[m'G?s?|ۖZo7g?qNl\wcߧo[?g~zek/{?Տ8g|Vf+,4+-lĿmO_39y|ܘ~[ml='Ws!^O?&fo?zz m{_—|sz,??~ u5C\s WK|uOϟtS~CX9C?)u|~n~9^K4EJmmI_ -_tE#-1&?K:3/]m :϶#JfZ6\Ϧsů/)el%ϯWXccK?f?wmZOz[Ϻ?2/\6/Ku>{i?*_'ο^4kd^V9K~׮?_[3~~||_i:ѿ^VKKcn^ZRQ?Gxfj~DzW?3U׵׿uM?>^_;kҨuW?o/q~u:x\^~2/5EcAנXYJu -'?ϞC _g͒9Rc#_go]u1;3]H?? 5W9?l¾~+=CQ%3/ok?MD_w}Oc>^mbٶ#??CXCk[:3:X\Caww?7??o ???|x>sIׄ/?[?;R[׬q[9C篱9[a.gs#ioOO3e3_7gGێPv϶GOo^RZ_%5G?i -rpwWC<ޭx|wW'%wo?=_kC ];[]<$>r s.x痊?uߙ/tװ_oFǟ{}-/}?ד?-IO |9ꌿ~*rSZ'sR6RT_*>w۶I]?{miy04[a[ngk?Rۿ'??VsYWZ]' >"sW'ο?qO?6_k]U ??q^aO#5>cUyW;#~f_ ~??G%??s?2?|o?~?{-ەS?R??|Z󏮅$? op}^/}GFRxs{ֿ>Q&kߺ|6]?U߲9zjۿ'|߱4V_+q?OOC/+:n|o[8?>߹Qcevt'z~E~?ïs_I}/n^ZCm\1W<_-N^7_ǜn^~e_c~(ix;Ϳuek~iCwe}\?JO5?V[?j?W\i4mO~@9y=S~Hmbϒ''^ms+-lĿm'vktӮ^N[?K!o+~R׾Ko=gFWG;E_O?Oz^J?~.K?RkW߾_nǺm? {{'/=VGz?Yn?cF#ג2;Uߎ?nƗ/˿mto_U:=z}o?!F;[q=3;y׭_Ϳ6IӞ_O{ g?[a[YϮOb_/? /?٬g _>xRwOO?Mύ[c&GO?[K {rm[ Ƕ_ϭ?_?OK%;_7'?wo~x?C}K_8_ʗ|:v>1א^~w_*35vLOïS??[m|w4>,3*ߟǿ^iݥ?8x  f?ϻߎW6G}|}:7E? Я<?[eϩz|9KI_|>~/wZW-/)eۤ[c?լi]kӖon^ZޯLG!ױg؟#u.?vz#9I$ k¿9gO?{z4msY߷[ 8GmOY4H&+J_ϫٟ:??S?E7?_uP[TH?/ש'zxu?okK|IX9|I?Bx5k2{_uչu?o 9ο'?13_ ߶sHm_[y}8_ -_ w?t}f߳Oe?K׹NCOܿd_gd_>/~~-.8s=_οe<7Owiږi>GOUgݿ??7#_7cck_[K~]}/|Yqe<//{i:K<׊i||-_?G{>j~O׿)όmsiW_{g}Gϋk-_?CYy?{?ߕ>?ױ9Ou_W3G?y_G[?Ӿ]gV㾇&xƿs\O_YJ#z寯s8Go_g/43_^G%q?C??oD/zu;6}vx~zOz>Kח_U?הoy+{~kgeRR'׿>*w=?S6޿:jQa~~ _U/ۿ?vau_~=??>CQuol?;4mο#9?~,K}-Z߱t?]7?/;'n⟥#o;W?͋Oj=ߌ/ױ:W]m|{?<9_ÿm]h‡_qjw7?sï߲,:şGw?_,_+~7c1o_w?E.o]C߲}j5⼹9/鼼tW-Ֆ'6#{'5)y9Su\>koAY^I-k_n^Zs}]>?_ww^{~e;4f_W5GO٭3nXoW_>o(:|5~y8>?o|~+qjejon&KF?_W[sX?w.?umO~׿wxuֿ]7R7oGF0b{ԿҮy|oiKwrwa^4/~kY?jTh?kkjǗԶ~oW[N;GH??>?[uop|s{?<6́/_K]c}uO̿v'GCG^~Zkߺ'e5}~u?mmc믽|?CXCk޿.m=3]???Ko=9}/Oߍ?M} ?8w?s72<_6#~Gzu[:?l?&}k?9?{??Cꐬ.H+OwώkV?_mFg7%_:g^S-WD9J?G;v?Bϗyx|\$]\?]~~mʏ;{ϿO_?oߦr_կ? -9._ר+o1xw>+=^ -?Ŀ_Z^7>3-?i|Ɵ_o;2mm[-{_Vt?ӿ='OL-o߈bbKjK?=OOg7?ю0?_uΟѿWNNc?q?'O߶?GW[W;O'[kфw05[_RG8N9<f~Wg~ߵMIY:cxcRIϑwӖG?/:/?ϦߺO{?ouE |^!{y~<<>1w?>~<~)-9_>Oo5~z9~ӏ6'__8sZ~|[-F}abٶ>k[bgg1C???^X~џw7u}/<?\xw??w~GOtCr>37 ?9} -/<yispS-߲X??}|?sJ_ׂ1?K_qKϴW<ߺc2Oi4gcW`+[}2k~cWC濼⺶Mw^?mJO]#Y?K?x͍m ?Oz;mL/χľVK-W_._)++׏~!?a?>{(}oxWm/Hj_}g ~Cmk?;39&N7|}⦅ZRj?mI^e?_KV;Cv_SFo.Ǐ_뿥~UYotߊ]^/]6'O{?v׶$kß1omg??7~_Z'g2gKߙ? >??6?7b7?o%CW?/_o<^o/%[k??Rn7?k?S|=?-_ߜ??߭=?O/I*_)'S!Soze>Ϸ?_C{޿7=ly|[3? Om|?o߶?wsф?BO/kόbZƿn{ߎw~35<~~;ߏ_^?$B^o_?r|\/%U9i|P>S+߅j_ǿm?o_ WuM[yi?x3_a_JC??'O;/ _fY>AQugKro/?s?Fq?_gӼ#=;TOS)>_?gL??ƿFCGoR#On_?Zxjp\~~mkѿ~O;wUiuWxzCo;4dwԿ-_n^RpRk߹󑓟cogVX>俦ז?K^aÑ>x)'9Oiş -qKvz#3Ow3S^Zc<|j7z_?_YS7csOxCAԽs_|Iy}\u/Pmץy:Ϛ_ ѿ{eǻ_?G}m?ocI꿶Wg]K߼7=v<~?)rY? E[_nS?_u]1k36c)߿<צ$,u -'?Z_\gK#>6_-?_>ߩu?+_Mu?}߽>C/x)xOy|c\_ -??b^E_?x/m{GK?}~GϏ?~UmoUο箿<~kؿ?|sZ?ms?uOOCsW>tgy=ݶ{]߶p OqO~?~<]?3Gݨ12ߑ_\M>ïs_N}/n^ZCm\1w|jy,9x=G3=s_g~4}xe%RtW\3.mS/?q?!J__???L/ץiO;ǟRhyy=S~Hmbϒ''^ms+-lĿm'vktӮ^N[?K!o+~R׾Ko=gFWG;Eu^x}%WÿCk+$w>~}/}@6_Gk֟돮%}M-oq~bz¯ݿ>[zr?>2?¯6rϟ%~$yIWsƏ_*_ÿ4fEz'@ӗ?^a[>}Wcg׵dϳkmPgxګkuWß%g'fOM W_g<o(׆u^ǹ -7RRy{>w1~_O -z!o<kk5Fϑw_3F:.^lI_-9ʿy/j׎"#5_]Ͽ/?q{usx6̫?^Zצ$,u -'?Z_\gK#>6_-?ŋП#_?ok8ẃ{?)ǟ?A7w*_3O??Lvmkߺ'g5uҿV9jۿ?u[If_ۖqTm+ο_[yII}!\NEv&GߙΟ/׳v'_пk;l?(#_ -_8/V$o<~u???ۥ?lGXzTo$#PIi?]Ht,_׍Y_mBg7UX_iR'oӮ/??nI -nT[w/R)Ï]m+~>sLJZ0y967GCBG}?9K׏ܾ!~5j2~VeG㟏xGis_/<ϟ?i↑_ϡ)Go_?mk?'mǜW~|Nƿʟ~!m+_ο6?vO忴_c#_t#'Ϫ]'C߶O'O?8?!|%N>w_OW{y~<<^YG_LwkuOna+?Rw_C<,?#[?[ϳ?YO9Ru?_{?ۖwfy-m3g??-sn#Y{oտi{nٟä]Ӧ;ןgO?#qqg#m'?s??)wϿk/ ?!m pZ?s-o۹џ -jk-?m;q?.m|y]:CwW/o?h?)>;cO??-}t}3g?ǦCw?Oa.+^(\_?mpoͲWYiƯW[cٶƟ?g?r<>޹1<w_;zO{47C?+ٿ4_;L͊'83^sW=} 6Rw ~_na? {{'/=Gz׿v+LCGsOs?9o?msYcf?v?FS?RW$,w?cc';?o%CSП7B-5Q^?fmb5[SͩOSJw/joN?rqߧOOp ?$/g)Ͽ)u|=|2c_!ds_Tϛgj<>uݭ_ç6>u~o9h'}}YgFU??-O~oK|q~w?ǯvi?mkuo??Ko_/y𷂿ʟSJ9>sǿ4>|)_OįZ_RIyϿRYҺ-eܼ_יCacϰ?G/???]mGsIׄ/3sW^a Oi:οo9q_[9C_8aП/^i^LW'֩ƿWG/ͳ?u?o?v_#ws?#WN'_7_fS??_O|^sߦ¯ݿ?W-Is~j_e|Ck?;^Zs9./sO<>bg~?>m79}_or#p>5׿vֿ͐goTs#17lH=}{_2O[]>qlƗz#p?#]? _wyo?^?-G}~'??Ϻ?2oFn:s/{4 C-Km#]_H׳ZXy_ -_ZL?t?y W[=Ǚ׿6|̝gSaǟ?Ӯo]i׎"ZCi#_-?V jV1/+}RcusT?<&g?=O俎.?}?Ϻ ?߭}s/M#쳔~oG<S__o[qC#>>oϢ_ig̿K_?V'?/m^?\?_w?mzx){" |/?ګv/υ)篯W>?>?_O}U{__m=/?h?)?u?VԢgkz뫶_?.{}}&|sw.3!yiO?Gr~X?kgG[Ŀcy3k?o?v_wOO?KGjw=$O5!{_#3/c?u$+>?x>r%?\ Є6c?o?_ǿeYu?4|οX.UVo寓cu2]ߺeo3kyss_yy;Z-~OmFKOj/SrBue}߂?糼_[𭭿ܼ_6}<I[?ʜ7J% ?wi/6￯Xk[g/߶|Pu5kq|*w=8W/6L>s߯8<yïZ>~o]ٵuoc۶=naooǷӉk?^a??S]:Iüi_߳/і)ǟ!~^{y//}?g7wmk߮cw|C9?ok{IK/ylk?O_ϻ~A .?/̙O<K?;u?OkjV?k/_{Cm?/V?׶}]:'O{?wwg?"??o ???z#s^Ο<*k>~L}qe?oex>(UlF]gtgج3~M6:s?6O?+!Yf]VVGg7g#'nKڿts??[{gs59Gv??=/G1.I˹~ʻ_?וw^;韜k2MnWm_t s]<~%;?Q[WZ.s;c|Vz~* 3ýbso|E=gZ~߷6/?IweoZy/e3;忬C9{ ~O7?+_[߾_{[/-Kz~#'>.Ϣo'=a<8-?Y'ei<X'-c'OmWȯvVO?? ヒa?kg?qt ߗW~Wsx6Hk7ׯ?_tבZ?_\gK#>6_-?_>ߩu?+_Mu?}߽>C/x)xOy|c|#O)xSx=[_s}}ok.s>mO -??\p>WM6k}*[w>w=s[m|Ck۟+c'??.}?Io_xGQ>F\bן}go~m+~r^~ys -kS[e)~~>Ɵ:hO+l_t?Gc~(ix;Ϳuek~iCwe}䯿? W:;"gge>yum6.H9GGo?_=m_qo)g#m>_vߗzwں7_}#_[]?3?R'?W-/=_W?^o?+>_*_j?צf[ m][kKyU?1g+w_C?8Qor?9c[;o79CSߌKo?|Okz'wm'O?zw?;[sDzs_J>_ASov7ϭi]ԵOS߆_3G?N<g]LJO9¿C迆;>-<?[mO?g.o)x|xj~ -%珥mԏ{w]|_{?%ρ__oyz6'/]/1C?6S׳]}ot_??c<?i%\zZ;9~Rtv]O׫?^v7m?�!k{?M߮[[?;$ ???w?+|էq[~}yOm|m@3/q]9C9ct?6? Ҭ?W*d -{}^L}?GϢGo=r:OoR#Of7^]??_OO_sߦ¯ݿ?}m[% -𯍯?:tů{_Z~ \jV<>_ [Ow?8?\gCߧ/]Hm_[y}8_)%ϐ?6CZ.C]'Suj|5_gz?%>/~~-.;s=_οe<7Ow)_O?Vu.?,dߌ?u_? m/iwZ0W?̿_w1OKKߝGw>__;*{8ϑ_ol?3o_U^|]{[#|??/G_N4?뿘U#Hv<z şӖva!?nuֿEk?[]_9yLo?R??_'mcAoon_I]U(ϟ_[{?kM_?}?_somV߶venX/m??sN?}k_Y???`c?G?K?)wϿkG} ߶p1~<]?s:vma?_[>m߶sL>זϷO=;K_gU7eO͜RٶǹV{𫍗_o?}|̝xQo[ak~s߿ߜW>}:{rM:Y~?]kWnPݿHW?YedҌ_m?_y|scyo -v?]WinW{?ivO1}}O -_{%Oc5|j{uts\-}sבR?=ONc}@a~/߶u6ߺ {,}o3)'j+ _דǘmC[.ҟ\to/y?Vʿ:Oď+՛ir=^×ƿʗ??Ӗ? uh^a[>/gkn$_md6>>Ӿ?k?#ϓm?]Ys/ccۿR WkO?ע;׻zЯ_z[Я/}|_]_|n}ϔRu|!霚GzMRZ//?돹yi?JG7y1?_=?gW_^6y/?K_IԦu׿Ǒ~^?sz? TϿ_cg)ב)o?{37K<K~Ou.uv#O#?/d_6ײ Oyj÷s Gm9~/6;&?]xi˫ןgOcm}o_׫+_n^bySsk?o-?[OJדv'__=Ͽ;lH?Fo"_ -_8?o-~,??oCc?y??I?8uo;C??o?v_cy_WJGjMKY~+OO_~oXߙ] xu]xW9|5vlw!x{Wۖn61^sϝc_*gܶ__~~~7:_OC[(%?-3R' wOj˿J_oK]JORC뇟?_?zo'uJcoo=FۺgeHo<?zVoYͱf_i_v/'__?矬;?8?"v??v߇VVO/Jz}'>uwN[\U[K_?_<_]%_߳MsTh?kkjǗԶ~oW[N;GH??�>i?^ǒ/ߪU]{y?sw\w?yK#Ͻm[9gGϏ_OulVmb?|?Zqg3߶C??__|,?zmm˿o[?>Fo۹џ -}Nfor ?%} -/<yisp_|jy,9x=G3=s_gߺBz՗sJ)_Jw_z~}4J9vs(g?YaYo5l!_^q];K?w?O]#Y?K?x͍m ?Oz;mL/χľVK-W_._)++׏~!?a?>{(}oxWm/Hj_}g ~Cmk?;39&N7|}⦅ZRj?mI^e?_KV;Cv_SFo.Ǐ_뿥~UYotߊ]^/]6'O{?v׶$kß1omg??7~_Z'g2gKߙ? >??6?7b7?o%CW?/_o<^o/%[k??Rn7?k?S|=?-_ߜ??߭=?O/I*_)'S!Soze>Ϸ?_C{޿7=ly|[3? Om|?o߶?wsф?BO/kόbZƿn{ߎw~35<~~;ߏ_^?$B^o_?r|\/%U9i|P>S+߅j_ǿm?o_ WuM[yi?x3_a_JC??'O;/ _fY>AQugKro/?s?Fq?_gӼ#=;TOS)>_?gL??ƿFCGoR#On_?ZEM_?/_?.Z$a% -𯍯?:׮xw׵WZWsש]/'_;˟x?|~.3!|or*s#߂m%G|j7+ 3ߝM!?-.?\:G?qco|ٞ{Sοd5ן||ؾύ/#G~F:d+?b-~j[O?Vu.?,dߌ?u_? m/iwZڶGgW!,@ -^+{3km7^;?]ΦW?3I]ߺӦw?/ECcavGZ\Ae_Ֆb!?c:_WJM_G?[]_9yLo?R??zo]CO~t%u?[[_GIks5?g)f?ϻߎwyo߶՟G}|}:7E??Ϙyo3?οa#O?_?<׹~R>gE?,]_K~<W^ _S__|f|\?JJ\|>9Lxz_!Rs?sE~5|IWmԿ*?os?]Y_-GM\gC?58./#i*gזv?ƿ$%؟l[ף{?[#I_Mk4/C?35Gg^_'?H_Ww|~|K~ w CmO_Ozߜ ?oi߭|]:ϫiߌO_'gǼe/?u?g朿8w>^W[_ی_OO]׵?sZgy%[[yi׿um!y?y9o|SK~|Ә_?m_?gϸ7ci_?m_}j?נTzqͿ_m,}:ο_qx|> _m}^ckߺkm{(?Î_YvK߼o׎"{�?ףQJuϿ/Ku?%yg!?_R-S?;C!/V__~oSɿϿ]o=;#O# {ms׵6cϽ—;^7~<-w]_?3y\y~viT֦_/?_>cmztO?bEv-G ?y|7U$6}.w_zޙ\|P~ٌRy;=o9Ygwumu???8 mҟ?VCʻ4#`I?I߭R/?;׋YQn϶GOzO_3+kڿs׏/{<_c<q]tswC+?~w=?9eOCW*~yJww?_C]ws?x)Tf|i{?zϴto_m_߶o<_fv?wY6Lro?1KlWǿ}#_[//ϛGO_?}>]E<OzD;k9x3q[9N˦/G^9;yO?8?['O?_m_??ҟ?oF1}Ìxo}K~G^/˯:_m??_o_?6%g#?׿I7o':?_?G}m?O[?R?|SV???'m?{}s_RGFRzhп6+I;~iv??\}>O?~~|M[|˯?kmoU}{>g>Z#׶?Wo=c[O??\zcOGדmwm ǿ׏$s>?|ߍ+?Ů?+ -Xa3??Wa)>צυqOͧSc|?1'u?ОN߇Wپ*^ :P/?J;/=?>^[]w?Ҝ/o_^a?JtwlEϪ:Cg}_m'7my]s)?w}f+,z67R϶G6|lǿF?/uo3=d?F[m-]'֣f'^O[_z'\?CDUO1>>9__𷍿t#ſ1?X9~R߳k?K鿪|'iC{hk:3ֿ~g?-/Y#o_n|9OGK?J?Uףg?3Ngÿu3]+wzǾuk?{Pg~G^_ S_u/?$ߌ?'C'k??/gȿ$#?mҟ\Կ|qx꿔o'QH7߰lQzoNSWU[s8>=ާj~Jc%|~ȧ?O)|N_m? %˟{ww?Smn}4>eH~?ϱG?i?m?3߮iy}|;]Ϗo?~5O__K?Xid_{ccY_ zϣ?}]VWsT<AOw>%~__M:}{7F3_v7m/?楥9b)_o[?o?2ϟ?O򿠿&;yg6Ͽ -yKG=u-}5οpp?ߖO?gR?Yg,N45?:il#3cY#[UO:uK4C?2o,i-zusK_WÿCE6?9>}Wÿ&_rO<W5^ҐI_S_[yII}3GN~YaK_[C[.ybG~Bk_O?%Ҳk_+/Ez'\~?OٿRgaziחuk믾߈bc?ַdϳ5g;:[+g'fO??a<'׆S*zW%q5οC]O -z!o<kk5F!kmw)5kĿo{'^_VUw[s/߼{_?ܿe&wo}OL^~w?L'ק~?7ׯ?_tב)o?ks/OoOu.۔]??׉`aA6y+O?۶=|_瞿4~?9;οs)O)xSx=[_s}}ok.s>mO -???SWMWǷ_U߲S:^}abٶ>k[bgg1C???^X~џw7u}/<?\xw??w~GOtCr>37 ?9} -/<yispS-߲X??}|?sJ_ׂ1?K_qKϴW<ߺc2Oi4gcW`+[}2k~cWC濼⺶Mw^?mJO]#Y?K?x͍m ?Oz;mL/χľVK-W_._)++ye˗X>Ԯ_ ׆˯>~l?9eW??[׾Kο_[R׮?G#5忶e]'[<^ -vtn{_Z/_Lg -=%_?NK ~-뽿~[O_SC3xo71l__ٟe_?7Cmo|5k~^ ߖe~?5/_}1񌿡_>?׹z*xWKJ~]J?)9ӯ?_Q?G}m?ocx _'}W_*歿{_;}????i֟w>׿Ǒ~u?1S<0xk7ׯ?_tב)o?ks/OoOu.۔]??ċ/C~kmߏrO7~<>2WOW>ߌcIek?93᷍T>KZzkmbٶ?"׹n'Cm[uS뷭^:m%'=Cqb9 C]~g:2ޛ_Ac{}E~~{\\_~ܿ~Gg+m[ş?n?S??,omiYcR4B'It!}z_7gG~Qv϶ OWmcJSEOTϿOv'?+OO=Hj \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_0_027_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_027_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7b51fd6b164ffc0f88bfd552eb8e808ed6b3a12c GIT binary patch literal 2632 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 K76B7LEk^)IdwS{s literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_027_states.bin.z b/client/resources/hardnested_tables/bitflip_0_027_states.bin.z deleted file mode 100644 index 365da68043858e5bd86c62bc84e4d8ce53db0307..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21994 zcmb=p_4aRU-e;Th4cX}oj8<1om*uNSHZ=Mz{jrU^<YBCJxxRV7Z0jbC*~fRPEA$-> zSfUYR|Ns2|_y6mE|NQ^s-=ClD|FiAi{ogwM>HRY8)1S82?*9A!y!-wCe{cS){4{y~ zAF#}K{nHUYr>m;{-}Ghb{_X#^*UA6A{Qv6T``5mI{QqYD-_7;k{OdkFKe7L6-qNqX z7rpPVoA>YY*ZH>p!r%YD`RQ~0pZOo-|DS*L|LXJlWA%^i|9-CjRR5{|_4oSvywl&` z{M7wh{eR~@{eSCY|G&KWU+(+&zwfo*$4|TdSO33#-2d&jE5F)5`g`-={;KGI>f7h$ z*5CT{|I`0R^`GR0>)#yx|Lp$G|NH;U|0DnV`Ty0w_P=`E|7ZT6`G4Z?{<(kg<NbTT z>ObD!^G*NXdfES{|4*3zr}XvzKl?w<|F?c^{a5|3|9$>O|DSvN|JDCL?LXT8yn6p? z{gMBl>R+w@v;UX<|Mma0|1bZy{-6H8$^V!C&wla$_2RX6y<UHJz5oBK;Q!kF|Mwra zUH1R@-~8&;|K0EZ|5{l0H+*`1%71&S|97>{e^2-MzxVV1c=_bd|BYYlPye_0>i@F~ z{?Gfj-}K+Z|2_Yezn=ep{oDUX_W#cRY5((U|Hu13^8c9s`&@sl{-6Ej|KHD~pZqWJ zzxV$a|No!<|Jnbe{m&D1P}E(v|NH#M{<ZHP|G#PfJN^Hg`G20wU;i(3;oh(R>uYmf zf4})T`q%lo{eRZ~vi}|YfBlpH+xGSU@BexHTG^N1{rmp=|E=HiFZ$R2i{Inr?*89& zJo@AOU!d@t|A+nO$@Tw?5B-0C_y6JltN&m8Kj-KFNk8>}+n@RW<bV53`~S!Pcm7}d ze_{Q{{XamF{%LajzyAN`|1R7AUS9vr|Nrrq|I4at_g>lb#{T}Uf2V#wul;}Vul=uo zUqA2tUC;V+@ppUI-}g5i`Bne^_x!5Y_3!_Q|C%5EU-{nrm;blk{Xg^WxqbEiyYK(% zzxIB1;-Ayg>_7dx_k4cXm-=V+&-PEfZ-4vm{I!2~e*ZiF>a+Tr-}%$O|9|y3KIFgq zzyG4Y?w|P=|Ih!Q|G)RQe%gPO|GoVGu3zi#t&{tI^8dAS|IdZ}mz1p!z5YMv<Np`G z=KtFNaevX@_W#$#{$G{-e|7)Q`q%$oUE9Cu@BOep_DcWL|HWJXPx}iBmHfM9DSuuD z{@?h|-u(Y^+wec;yZ&kaw-5ijKmE`8fB*H*pR@n<_s?6g$@PEV-23i&e}CP)KTp)_ z<Nj?9{rCR-j6Zun?+^UDzxW^b-^=yO{-3t{|H13i{>T5<m;AeK{cV2jKk?t`|3lx* z|MSc~`fb<u_>g)3&lddmPy6%!-~5{2&;J*F&HwZKzwzJtCHCLr{zn=9Pye&t_}^vw zzo-9y{=fd!{h!sW_w)bzYyMpPd;j9s>(j0Oue|ju{`ddl-}Arz-<kW{zWDaH|K~4n z`(MB2&$s{G|L6XnEB!y@{{O81=Qn<P|L6bYoBKci_x@@B{Qv3yC;y-PAA0t`<^Q>V zyZ^sF_WzUp6ZQR|METeL%lm)xv%aoB1ycCx|EvFh;#2>p{|nyzZ{a`Xf8qZj@cI9{ z|MmX6|9|!Wk^MLS|KXSSe_sD@+uZ*%R@Xn@-~0Oix&Jrw!fpN^|9SuKpZ}8Q|C{~0 zF8TlG|6Bj!{~Z56^Z$hS|Nqy={{1)q%}0Cdf9C(B|Nq=C_3!+je7*nnhkyRJ{r%ti zr~KpnALIYU|8xHr|L^~ckM)25-^=^^{(nsU{cG>L_tpQk`FYa+U+(`cPv1{ZUGwL( z(B%5aU#IRX|BJ7;|9koWnt$&L?eG1!eYf@L{Y&*<{svYjg37Mz8|yz^@B1J9+Wz%< z`**+3|NrwR|L5lW_gDR2ZChXRFaQ1j^K$=JU#~ZM^S*HY^8fO&|MTAdU;OpH)j#>Q z``?)TzhCyxspL=Y*ZtYmz4QJD)c%{k_W!m2`@jC&``>=||J39AAML;OasHqAzs^tm zl|R+~*S~we)a`$+*ZY61Qs4GmedfgHH-9UC`ZB?O)&FV#H#hzJ{>%Pv|K<9xpY>P& z{(tk_f2rL6@9Jlt{`b@VpZ}lw+@Iec)&COz-wn$9>h?dM{{I0gP&e2AO8@`me)#{Z z*X^tB{j2}||9-r^<lFk2ukF|VU-bXX_xZX1z2E<}-~9If>TUnO_PqWd{dTSEysX#% zjlb<byXF7=fA+uspRGSrzuGSUfB)zDH~Y>0on2)A`~UNA|3O9dr~2zB|9AesVgL8~ z)%~CUXC1HK{M7zw{pa`fR=fUPHoE6i_;2#(`nYT7JAUj>|Lgzv{*U;b{~rIb|5^_! zTz-}N{#^Tib?pD5f7x$;&j0+s_y4Q^rJwiT{AvIEfAs(Szx8o{W()q`I_JOgzv6%U zfBoP1+CFdl_1o`H-2YU2@w>adf8D3>$^Tz`j*og8KdlZDSl2$sznK5e{Z;+8&;0Av z>a+jvzx6Xd@b`JU|J{E#|JS}<U;0z~`2X{t;$xrIKmON!;`jCQm+N=`OW*zf`H3I@ zMSoU*|DQT@`Tz43|NYDUm;dkoIRF3okN*Sz@2<P|=lqZSKg;WXP5=M=|KpGSWpB6r zs(<_Ie_ZXexu2&;{dsSFzWr(Oe}51Az`w4)&tLqM`oDf+S@ysBzduuN*8h8+e((F~ z|69)f@B8uJ`0e`Af8V?Qoc{Fd&-<Kj;fnv)|I_@pUgiJ9=gaqfswuPn{XPBv|7-sv z{~!Oi_W$Zv|5t5)`v1xQC;zja{XbXmzq;)2^uOKzkN$uB=6}}j_!IvBW<H%?`{(?( z|HtZo?O*lJ_}l)R+WVs4_n&$5|NMr3zYEXD{{Oq9KlZ=vrvK;D{)_&J-}<-y(f{o0 z^)~hIo*(_c^?7~&@13`1emngC`RnyX|4)DWFZuQVn_uhy$p1Z`WB<th<NQDNfA@c` z{2ssaf1%pn-TzB-{+IthzwOVv|Aqh0PksO2@ZWX0|9AgK-~QkI|HuAQpbT2`|NgIi zH{b8Ki~7I${{QSh=Ktg~{~xRWm%rq{@&DP{|HZ%Vzd!%^IdE0>>Hin~{~+jC_i6Hf zkDs9YKmT9v|HYr}ji3Hs^?d&gP>uHK{*&<k^{W5BeBC(re)YFMVgJm3|6TiQ|E<rT z{=fRa_$@diuKvHh_rLpV{oQB(=l}ly{`|hj`K$lO-hRF5&7Xhb@8++z`G5La{p<h# zcYMG5f8O2yn;yr5k|L;S@Jk<5&)FaPe}2oq^}l|_Ki>cM|EKuUzx#jA|MTDH+xh<= z>mSv>u3z(C5R%Qd|2zN7{-^y<`^Wn~f~vi5=l}h_^}ot?>b7sI|C-*~zi9sb>V4(^ z_b>W$@pt#4zuLe4y5IjVa<%^TU;Quk>;Lsv)GxE|U-!RnU47lRf79;o*0Da%e*ORV z9sgHe{hxlne&5yj{vZF1-`}rx{deu(_PV;$_tU=rUwplO%es0A+ka=(>c9Nmd)|KU zuK&XSXWtLYm#_Vwp8dc7%>KR||3AO_y#LMb_RY7i9^aqyH}rjd`X`M1`oHJr@rytI zpL%=k|9+=`=E477{JwrZ{Yrh*`TM7O_Qy@!U;eK?^4Td+F()7SKls1-zwmYc=Pdj; z|Ly<PSN|WaFMVYHHUHoJU;B4`U4QLkeGACysQUcZKkSqKO}G6opZPyM`hQIA-}%4( zfBn2)`E&iv&+D)Kx!m!q|Lgy2|I^R?Pw)QUx90z;|L5cXznA>K`ad%R95k#>{9l~= z^WeYhZ_j+KzxY@D_4C5IzuVW<Z~3pT_CIX5`~O!zf9`!=X!p1O%l}{Y4FCS`FZ=fI z`pa+j@fH8|Z`7y$UjF~qKmUKx|N8%)2322-5TgVBuMGJg_@Di^{ks48we$a-|Nr^_ z&QIa1{%@-P`v30t_#c1DAqr8*&!4_ty!P(z-;3wp+x|cI{`X${w`JXPm+z`8d;fdU z`*?f)IcNWU{U7u9|2_L(JC1*wyzlXUrT6jn=l|yyfBBof_S^rzlArD0*?0eqH-2G% z>3{Y8dP&*;QUA|h{HTv?Ps8V++P{mx{$Fus^ViP(zt3;#c?*i}OZB;b-=CEK`hV^B z`KkT&SHJz=`2TI$v0wjB{G0#c@APZ`nGOD%|2O~d?)v-v&i}s)|KGm$|MiRe|Nig% zyZ_JppZh^AUU`O(@mK%s|7m}uz8KV!-TABj&i~$U_jCW#SNvc3fA#;*|4l(HTZYf| zpZ|A#)!*>{=9~C`-hbo&+Ash2{!jhq|2co7|L6bXM|N+*{ICDc?Jetne?MxzL~Z?- z&sU$Y|Bjz_{r29!r?vMl-}>LZPXDj``v13c<^Jwhs=xAo`=9xX|Ng)D+<wcvdV$*d z*T3GsvbkKJ|NH;Xnb-ftPuySr|NgJqU-k{!=l_3yRR6jDbNz<;zw!U3|F@5;1Ld=y z`)B>Mhq~aE{VV%d{}cYd`v2wp|JDEFm;O8b@9O`n|Dh2LRRyNboVe~Dz5Dxjcl-U{ z|5)#T|NY;}<F?!8zbgEH``)epVzvK&RX)i1w*LR~SNkXZU#<85dwTTmjNkwN_57Uw z;{DoVJ-_<DfXb1-_E!J4{+qw}aXi>m81ek+&0kCIzZU-fF8gM3?e&we=AJ|J|M#{3 zgR}p~PmB0p{$Kp>_bL0g|Bs(md3^u9*ZZUQ>;I~I{r~qXb?5&Re}AvKvHu_cfj{^E z-2Wqg_09h8f1m%d|GWK#{ilC&zw1}`*F)-B(@*sbKmM=!>HoQY!~dPH?H~QW1#P$f zQvV-+`2Xww3_sB04`k%=Klgvt|CNWi7(^c^UQ@qD*Z#);U2p&B|C;al|J(n5>Hll$ z)BfN5wf%qmfA$HF|7*|vpZnkbMtv-f%(P<a|E>S__x%A!!uo&te}ey~|G)ZWJ!&ce z*~Y+-5Vp_m-?sYq^K0%T|F)O^zW?pozn&Mrub*H4^!wj`f8Jh;|9AXv>CeTW+;k@G zfAsz3|NEcLtUvXo9#qfApZzai`_K9HkN<xqC*S{To_l85|J2Tx|L1;oD*Ju^z-NEA z<NG1@K*@97U%&QW`@h)e_18(&Zx{dm|KjWXFY(d;t3Q2<_`mz#znOpj=lrf;Q!m&3 z_5bZp(f?s#AHMy+;P3r!|F2(L|NH;*m(Vh^^m9GKt4DwAKi9AL-?Qd_PVM|3@qhIH z?JxTq|2Oz={NMQh>;d`z>@WY?{|c0KW<s-0ea!#)y8oa50jK28^$f|c?6=>3{r28{ z`M-beeSV^D|8u+jex3E(-B0Y-`TOLhVtvSe-T&%;FaOW@E5GyK;?lo|MW5!s{Xg;h z{?9*ezO`54hji*5{lETs{@$ngKWjnZxBP$E-|uq&>+7EN{s(8F_-U2D{$Kn$zx>Pm zyZ?=!_V3%j^<U<n=l|0`5o*Lt{r2|TzW=q)f6n{V`{BRw_5b%S`iInC{8zlC=H~zS zC3k22|Nrk!U;cdC|DTQD|9)D3>sh_~pZ_zzUAOvQ?fNgZvi4uO+3(d8{)hh;`5!*X zUTVMl{PTI~|Np)DfB%>L>;E_Qf2|Mw8~=41sIL7JfA-J)jvwy}?aK)^Wwy-uU*7sx z-}v``<2C>5?i63Iw||#>y}tj=|IIh+S^tOU{-6Kj|E;g`=jZ>f{8<0?=l#cZ>&lk> z{qX<iuhn<{Z~9yB_Sb&*KkfhS|BY|=|M35#{@?%q`<i{f{_el}zJ8YP|9AW4ZvRi; z{r~h||KzXrC7|wj@3sH)_VoY0@rVC^`k(#3{`SB7KYKZH)29B;^SA%6zT0p1Px^oQ zruxVB|IIJ`pZWjn)c@VT?!P}@{Jg&B|FQa?ptj=l|Kk6zovxoW|4+F5|NQNhkLo|l z|2_Tx>e>IF|AWU!K7!gEd%q)h(*JM%n7{h&seAuzAOE=jse18!`M>+W&9h(pH~n_J z|KII(_j!Kp-}V3YFS~#C&*Y<TUwq&HukPpmpI`1@`aeBYz5e5|zvarm<G)pC|645! z?!ld`pD_Q=D|_QL{~!Oq`u|1!y+8F||Ae#t&;O_Xe}3lwKl1<8|84)*{_p7jNA=&% z|2yel_tXC0{U84S-^~Aa)Bdmg^8dHre*GGBdei@!*T1yi&;S0{{ri7VgW>zT|DsRs z?^>VY@;`c7#Q*=#f6o0qJ^KEA=l|8;?Jxh|^Gp8YKcD~WV_*M!FZuuf+TYvVZp<&+ z|5bkNee=UVrt8*!{%u`157dJBf32?m{cro|-}Nc~w$|-C{%85EKkp0skH+`^-ub)! z>qq@n|CRs$=lYwU_Fw<M`hWHR<!}GY|Iz>Va((RI@ci)p|4-_(pVz0a{@>HLf7R>y zZ9nQuU>%Ob|FgUQzv}z{>i(boU+YU>$KU*yul-Mc;(z1+>*v;Q{^$QU{@?aIYomW( zR{W3nKY#ZB%k#AVNyq-5`hWiFfA@|5h5!FQ{r21Y=ihIQ&iuRY#qY)Q)$M<3pWOdV zzxwUsr}6vswfsZ=t@s!H-~ZS0{}X@3&(|;6{nh?|!Qa}cPwJ2VcfYs4?%&jZJE!J% zJhQ*I@qfpkwfm?4-TeR5xA@q9uRi|Y{JFpS^!-oZriB0hov-7gzS>*;yFc09=HLFp zf6q_+v%mfGx$%$v_a4Wu{x4nmZ}rFd|L33l@BTMG`|sjkf6o7iul}?A|E*us|A+t2 zytu#Y?Kkk~%Dr##j{j0Sw?@BmKmX+R?|-&`UFz$*Yu>-upK2Ss<=?k+&lmsqzp{VJ zxAhl)+3)(F`s?$n-}0+||9|t@e$(6YKjn{~`yc&$zwwv<UcdJr-T$Qj*!zpmH{ZUw z-~RXid`W%xFaJ;cS^f3<wqx?j&+6aQ$NiSS_}~5f|JA?uzsiMG*82rN-hV9D{XcK} zoge+s4om&BAJhLl*+1*g=KlXT!AUIqYW=al)1&X3|N680)xY{}pZB}n-v3$t`KJF| z|MHjpu0Oi}$@z8rEB@X3TL1C?ozMG^|BZR;^ZVid&tJoL{!jh=zvowd+28Pg{r}Rp z$$y;x!~fs>fA@d>$$4HM`}WW3@^kjGmH)2xJl`KWt-b^_0{7SF-?TsfAJ3cpzyH<$ zxu5IZUj2XZ$9?tx(-!}$z3&~b&H2~<-}qnumHM{-^H2U;{k#67{QvNq|7ZU1egD7z z_nyE13(sGz|MGY3d~;&*zP#bT-T&wQd9q%6|L^!a|DFDqetrM%{jKlua<c#TC;wmk z7?j;s-`fAXKKuCp^RMEg-^bVgE4y7^_xgM4{{2<A|E|CNDgN)j>(_pLzka-|?*Glt z(O>7k`Bz`^cmLM^=lA_vzy05$_viopz53_>_w@T8w_p9g?(NqXzyGhZgY<LiclYl7 z|LMiQ>9YU3K>hPi|6kd^t5>oA`TErRfAimN`&@tQTmAR{J)7&l$6x>UKi%U0e~<tF zyZ-F`{eRP$%m33i*Z=GPFZ{oMYW=p)>({IOfAhT_JPh<^{@?KFkfF8nKjKUOfW{mD zUf)vx`r+2M|JQ5Rm;6oHVxPMH|CWE<|BUa~Z~Lpi_xt~p_4Vua{onfa&vxZ&|F_TC z|8>Xrz5mz!`UM*IIe+he&i{DX|LOmd>!Nq&f<_y(-tRB_*Z=qbpZ$OO|H%IhKZ88f zus!<!|HYr@Z~p#Y@aO%B&-c5$w!ir6e$R9Jo&TSI{T12&!+7(*<^S^ktdIF$_;3EN z{Xf>{{aOC+?H|aPUf;g|U*~>~-~7J5^xuDr-{t@Q@4WVZ<^TBqfBsMWxnJ_!fBRqm zo?nA>Rr<T?`}_V!UH^Z+;NSi~_4j|=|2zNlHRP7&fuELDf6rTgk9WHV8tHS025VpY z@8_GpYyaARs(xwz{onhGzv^B8-2?Th<o<8FW&11q{Q38`{hwdj-~RWtp5fX5<45eP zKkomz|EK+p{r~j;pZ?zu4d3-{uohLrul`^CzwB@9|7HL8^Z!@>!&ibjF7;pQq0Js- z${4-VQva&3|LyXsJO8(B|F$1ABq?Vx`|s=jJAbWz@_*IodeV9-pK@w1z5m)-{eA13 zkLUjCPyD`qzPkN|YoKa$<<|eZ|9AhZK6U^0fBn;Y9>>4`dVlSG@!I`g|JQz<yzu{< z-~YdW{QK<xv;Qm7{@?sQ|MmZ^U+q8r%YHonkNofH|5wlY&wSv2_}Thd|C|4wkNq$B z|9anl_v`<!{J(1d^S{);`2Xw&{?Gm&zNWtM@A<U<pW;DdkI();vw!yg8mJB2_wZ(| z^8Ux|w{^w-ubF@M_dZZPHF^G@C+BDX-*O7ngxvrA-~8LTZ~pZEduf0Bf9n1E3e}(Y zKmNb@-TvE||9g}F-~9f6WBs@IqyJ9k|J!_3uJ-@;7r*__{_i_mzrXl@e%hb-xBu=- zzMcR7^ws^K;h``8C;q!r{XhQbpZOp6pZnnt8q7HVfB&lg@6YG{oM*dVb^rJI5B{F3 z*HQg{?ce+GU-uu&y{<nk^!opQoBf;r|C;*!d))th+y7fv|E&h~PB(x3pZ=o01T+eB z_4c>=C)+l^_1}H}PyM&Q_22A2*FUMZ{U;;%KmE9UAZR?Y`rp$(>o<P3|7Jh)ulVi% zad-cRp8tOeT<Kpu`+w*EM$}>3{mcG?>WcMo|5wfVU;J<WzxDsl{}26E|IB{tYx!69 zkLtfd;XnKR|7OSjpZ<Sw{nvW%$ocA*_kV`h-#%A==IZ{>_m6$8fBrvbyY{^QkN>={ z`}e=+dA;=i*FFFL)aU-!|M&R+nfep!|Np<fuI|78w;%Im|4aYx{r@MP_ka37^XdQR zKm7B5-rxUo|MY*n{{uAcqx@h0fBlyq`~TJFZ~ynbe%=0j&}<4QGd)rNzpeh(r|+kY z!v3Xpp4_if`}Dow|MmOl|9e><_W%11`S<_jzTf(k|I+@~zZH8ofQr-CH|&3AAOFAh z>-?|J<-h-ZUSIcb`=6Wd^RNEDI?vwf|Mu_y)BFEleQhuK?fZ`Nm;d*#tKa_Z|HWVV zvj6+9#h1<gpKo2SX!UQ~ulrl~x}C3I0WC@I|N3+9|9r@ZQT*E<{{Q^{KKJ;${gixd zeg5Cc^Z$fTuYbK~y4>^qTTXm_^H;F4>V*8&`qTd-9sgJVo&WFn%l*H8PQUv1f6nvz z-fi{Y_n%FLw7T|h`&0eV9$Y!TnGZ7OQ$2Vd>ZbkQ&Go<Dum1n)wY+Wq|NVdezh6JU z=iB}_U*}(|zgYk5_xWxAmwx{@|K_*<p|}569sBx!?YC=6{#(EPm;8M{?biSN|MUNX z^2Gko`P=^=|7rg%UiyF9#rc2#7yqt@)X%S<{6A9vX8ym|ukQb>-}-p}%}?_`?f?1R zUN-iBreyvyi~lEo+UvhgclmRFGipid|2O{c?qz?j{lB`d-tzy}Z-37J{C}+e>;GLp z@4xvo|MUN~|F{3M*Z+66<A2n-|APN5|HuFRf8(n>sPj|)B>yL@1-1HQ{g<EmYd`6G z+d~5D^-ujT{{NM~+TZ@!9zJ>h*8lNu|Eyo}H+}y9qyKLHpZa$Hu0K;B|4;w9e%+`2 zh5ucj{C)lW<^I_JoA3TFPWgjWXYKi~zWe{~|Hprv|Ns2Q{}umZ?eqVo{{hWMfhR~l z{&3%27X5dB+28v0cAwAv^w$0NeeUzapLYINUowBizeRtaXZ+msf4|3W)BpSb{n_-! zo~ZuL{}Z2s<16iU&;9#*^Z)wS|JVFa{(tR%=-2wIw?BdV@1~#Y(|7#0-Tm)0sFnS{ z@LT=Xzxq$q|DXAE-tJ%eZ_sdkeCU74-|^e_z3=)RpZ4v4dc^;~JD#umUw7yDy8m)F z|EF*M&-HKpt$+3(|8IS5KhOUA=STl<5!oKv^LzcB{}z+~-TiO1?f>ro>CtuH|L^$! z{M7gV692RN|G)dc_U-?p^?$%KIOhBQ=hxnU^F3aE?f;wa|C|1k{@=faKp$uNe+B!W zC+nB|0p)-H|HuAc{5gN-r~0d(<H3ELpZT9w|KC5U{@1S?=ib{^*J=Ns{r6wk-}twc zKkL8#zX-{QSO4EW_J8r$>35&~-~JcToGFbgtNYLW{e0-W|EaI{fBj#7=l8q%^Y7|! zeq8?p)N}{s#OZ&Yg#VX+_&+`Be|YWR^&jv5tN*!v*T4IJ{QuRf{eJ%chyBO>U+u5` z@A!Wd)ai=;pZ<3~s2}?A{*Uwjz|*C*Z|nEY^NRj`^`F$+c+g1S{oViL1OL7F>w58@ z=-+>f-`97&+W++*cxuvpkNxHO?$_(xuiM*K*PnhLJ8kas=GXtL@BF{=>i_2V_V-_{ z2lb4<zu&7=pZ!1De*e?_&A<O&d~F|f-M&Zef7)cwbkFnoad-cB{y&?)dVBxA|C_h| zcYhY|e&>JX*Prp<{vN*h_SNI~ZU0t%-*5aABfr)k`}6q4pZcd|um8s@{-3Q`|K;!N z=f<z>*FMirJr=+I#C_}k`*n(+f{MBRHUC%sm;SGPz5ZOl|MTDeUw!re(SECs^M9HD z&;J{L_gDDqANGepR<GT^z4VW~;s4X~{`YVBzj<x_x_$rr|Nj5=^Zvx2```Qw&;FO` z^7r_!`q%%Bpa0){wBG$%{nP)?*Z=?CgF5PV;Od6|JGcEw`2V`>*{}UC{&j!-Y_b1e z^mY4N|Ai;lufDsu{_CGV_dZ+9|K|=Kl=}Za-n#n#>yqE|_4oW2f3ttn-^=y6|JDEN z{y+Zj>Hk&F{zDrzEB=S9`oH3T^I!Sv|F`e+|Ns2|&;Kz$wXfFS-2dzUyWjdX|E!@Z zk*J2spT9D)zyJI9;`#S^_0PZmy*IyX_tA5~vG%*agNIMp&!zqURln|E{d@V^JITL2 z?|-ZZwPl|F-){Nq-{vszD4_iJ`A7e)m;56C^8eoV`+NH8*ZzP0;)ghrH4FzTSMK|F z@mGDwvzxz;-2a;%dF&e~x?k?!_V4?X{$KyE{XW0x`2MWl|8M*+vrhh7pYq@T%Rlee z{~2fepZ$OK|HX^`e!uho?~ebuum6{R$^ZZV&cFD7=l{h2Tc7ujzv0LFtbh0a$UoY@ z^OgOh|1p2<-~B(fTKV~Z<13&h(SLB0=&yXk&;38^kNy(B@jvIA{{N-_*8iIy{J;F) z{-5>R{;mCQ{+}J$y&KL~)jyBhef)d=TK}GX_P>5+eQN%zfBN;?d;gwJy?^=Ef93tt z|Mg%0|JJPkU;IS-SO25`oxk|+|BKJ^QRnSD_U$kITV6Wv<^Jt||Nl9Y{eS(5`@8?= z|F!!oe_-nK|EP^vd40$lg7~w4U;~g}<-f{*t=~}pwf@)h|5yL75Bi__AJl|Hb|93U z_5`%D;`i^x^Y2&xn|uFz_5Ul6<!<|b-SIy+|7|^ZZnwbf_x1n9U*k{y51s!1_vW>= zTmIJ9AN%9~<$GAN+h6xzpmOA&JofQ+q*m<4eXmm>qxt@I3)cSszVH9at^f7C*Who< zp7>jB`zHQBd&0l`fBFCVv%cN`{jd1%{D0A3<SXm@|L(tf96UkvbHCJ2dxk&tSN|;k zX@BGYov-pA>)%2KDB}N4{=fd=|F887f6(I(WMuNc{J;DE@jsB5ch~%rb={7;NgvPu zy15rIt-a@`|LQ;Y=Nta4e*b^x-DBteznK4T^WXSyf7`<+{g?eezxIFf`9JqTiwgeB z|3)k-xcI%kf8YNrf8O8t^WFOU|FmQOufF>~_u{{w`(yq}|Nr^l=fC{R^LxMl4?Xi= z64a{u0$ywKfAz2b|L#nCfAe$nr|SQl_ul_G9`q^y?f<%^|83uG{I^|a<G=ssKU@D^ zA75Gj{_Fed-}^UT-|zla{;PfT|N6Fn?%((4{Ey$8``<m!`u4vqzt8?pzyCk|zwv+f zf7c(M7yMXX_D6WC{qMhfpU0p3FJ=8d`Tyjb^&9`bzxp@+>!0<Y;u<uUG5@#xjr~9N z=l#+D?_Bq3^?&LA*}v+4tzY~96?7@WOWaElKEK|7^K1Q2`(NSz#s6=t|FwVCzq$2a zx4->!Jm#<U|J<1W<^Rr??SAyr{@nj}&;OsV__rO@phsDb^S}P>tMC6)`v2ej2wItQ z{{Phv_0Q^yfBu&|_y7IP|Mwwlb3Xn5WDi=6<lg`P_5bf>uj~Im|Mh!YT|B6uKIvcg zDgXC!-TM7H$xq{_&G>WrQusf)kN<!DemVbN`q%pY-yi?IFI=ztf7-vr@B43YgNA+g z_x+u`zwFQbsQ;1m{|fKd|9k$t{`7oE75a1W=lbgZ_1}KP@BKG9vA+Me&ENkoewAnc zmtXt;+Q<JHe^a;r{J-t9_#((mX!e&s?XN!X&-uIk-~YAe-~au8^RK@3KhghJ`~E-q zf2F?fO8x3T7r%eM2CB|We{Mfl{j%_%cel;?d-4;PxBm(JyZz66(J%Y2|9@FO=ilo2 z^^te~pD+7&J>z%z|JyN;Nz(t>r}vBhzr6oP{2x%|`tzjz|KtCq|G%977qlYi|Gr=A z_x-#0`P={7|NsB{bu#1s>A3%yf5rc%@B5$gJHG1u|Czb}<G21@pC0r7epbHjr;zCX z^Edv_UH13?xBoZ)=l@Io7yY&Jcm16I$^W;0%oqE6^S}M}|I`0Z{y+KuZohy2e~$lq zxqscix&Onh|IOC@ulav={r}4szs{fbF|F(K{5k(WZ>n=U^56D#{j2}S{-63P|NQ^T z|J|UHbbt1#{J-&Ue@*`!pMC!Sod5ZM!vC+I{r~K_|CayngDSqykM8&USpW2o{Kxs9 z|6l#zKO1Gr^7H3(+dF>Hc_y2mjc@-M{r;;D>HqKF|1bLQ{haUrUH;a;{%f!N_y6Xv z>tm1aH-ERkZ%_SSn_FM+U;TG~$N$<T|3QNUf9qd=fBB!m?O6ThyY)6z|LV8=S^M$* ziQn=E|7qX0|9kyg{ipkoMrG({Sl|Cjz1y?@?$_(JPV;}W-}Qg{9Pq5(pZ^;_osau( zzv<uUf7!49i~f}VzVU1QV^~oPEoMPf!~e&lWi6<z1qB8SKd^lLwY3^PWy8Mh_vveO z@8y2)m;b))pZv}Ll7IJpxgY<3?LYlZ|F(bqz7Iajx&L#1mhtVM@{9lO|NNgJr0@T> zZ_(dw{QtS*yzPJcsDIafn1A~B;yvr{^(p_q#NYmZvL3$B3Oa!q@LzH!Xi?Eh9s3*q zU;Nwuwe}ZijbH!N`ftDfPy8DHEk64H`V;?m^soId4QnF7Tn(cC$j8gq-`@W{{chgI z&o0-`zpDk8J@G$lqu;+)tUvwT^}hVyy$S#Kf9JP*xAAXF|L^<T{@L?q|Gk%2`}Kd{ z|87vS{J;O~#qa;O_WghTeZMmQZ~OKCrmHUdfA4$zy}ac2`(<SRGl8svVGI4M*X^VJ z_n%sGUHRSC{&$GU>)XkH^H2Y`y!HS5w*SX}J>O^({r}$Qf2Yf@{dfNr|N8ybf8f^3 z{-5@%3cvh&|Ml~?|JN_=N9w8W`f1NlTKI4NPx~wNeXIU&x%U6a|HqI2>(+i>@&9h# z=WGA3fch|h{+Io|{j>hne}-3Q{%f!OzdG(e)9?8w|2^G*<^R?H$G`r+`KkWg|NUYA zuK%k4T+d+ow|@11a1#QwJk0Fp^r!cUUe5Y%V*Crx0)&_UYkq;2fqnm<^Yf?uzw<xV z|4;w=|J7&kl8}FpZuZyT`|Y<st^W3B+P}U3W8RDZzrODOmlyT@zkmPxKJ~l)>DT|J z{|C*IzXi{gfGSAc|C4W@+h(8pv;JrONBf`so%Y`z)qj3}=Rat?wg2zu|Db8KkM7`g zjqCINy?^l|KmYIkANg^=#X&=5PwP+k|J(Jo9z3{y{o4Lt(|^@3`?vQ0xwoK-asH3_ ze_p)@jr9Dq{~G=;{_p(%;s2-p5B?9T5>NiW{NMD;|F0LX!4~Y+wf*K-e*gcM#r}V* zPup+$FF*Hx-qh#6jhFqu_w)by{*6EXOMaPO`#*Zyzv^HA%isNf^uOo-;x8yQCa9Xs zA6>wDe{=!s=mJ*IoYCk4*3kv5qYGF^7qE^lU>#k+YB#!ob#wvi=mOULqYGF^7qE^l zU>#k+I=X;$bOGz=0@l$5tfLE9M;EY;E?^y9z&g5sb#wvi=mOT!1+4df?ipRcI=X;$ zbOGz=0#@*HlhFmN3=9knpGOz4jxJywUBEiJfOT{MD+9ym0#@i|0dNHgB}Nyp4&Mc= Nn?L?%dc4zV9{^|fwP*kU diff --git a/client/resources/hardnested_tables/bitflip_0_029_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_029_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b5555669281a061aa00ffa30d77d5ec7ef037a8f GIT binary patch literal 2402 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 ZC`KZ<Td<j#{r}NB6a7R~%mqwr8~{D-EeZet literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_029_states.bin.z b/client/resources/hardnested_tables/bitflip_0_029_states.bin.z deleted file mode 100644 index 32da125713e82d04dc723b5b245be466a44a315e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18850 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 F`vA$(VQ&Bc diff --git a/client/resources/hardnested_tables/bitflip_0_02b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_02b_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f22242565473c84eec370af5c14a69f582997692 GIT binary patch literal 1408 zcmZ>Y%CIzaj8qGbG-ncEW8gkm|Nr;oox2%rugbEDGG1U5V3cUQ$SCM2C?Nh&Ks10M z^i1Rfu6PDG;LEtUaG3zFf!ZvF6B$Vi7dtK-lw`16?AA8J!Q{ZK3}(fJ9n5aZ&MYYm z&w8b#5*aQtWiH@pYg6Er=;aZdz&y(&BeR9shjUqjk(5M(Ns@_yn*&xOxx73k3kHA5 zn(gxC%9&ta6E<I4hZ8Be4pJ#!Z6+V|U;VmaRn3gn@FzjST!H^yg&GRJlG`+0H0aO_ zKZ!N98`6xM)%3(2f4I!mZVR*%seUtmkDcI=cd3`(^Y7Z_KXJ+~Lp$c3hYzIMbH0e* zlJv5E=4ZL(>4{%ur;GEPoX)RWV00?=WsIK0$w&RlMqei{6TN&%-&iiKUb8>v%w}Vi z5B84F3Lj19;}=%%yu4}6m(9P${hcp;o3SU!|Jm^?E(^XaU+CW;pBmpN+t+m{`G)$J zKE{i&rw>|$H`?FWbj<KjUEl-t)DroPiD^8ksm(ewj#M%0{7LSdE_$@@sqLW+N2gvm z)!+H(k<Gy=M^4_15qXrdCb_wt$>2bt?ZJshj!*h={ldPIFY{mRIWKD4QmMXWrcq)^ zQsuJHw{nkPC4ZVb`9h@8rieq|IG?Onz8`+z!Pgz%MLyb@PLm0f3B4<R=G#2|-pk8Z zOfQOPKVtX!kN-A%>wEDtFWa`yIzDMf!f*f9Px1>t?~nZDUph~#Qqrh)YK;4mQ|IPi z``u^v`(=5B@P*i8F@7?VN9Ra>=ZZfN^gFdF$<SM9ovP2$p46$WQ(F)0{qlQR&`ZMu z8}uYoduFU_vzXBn=HoMCrlC=UQLv<Bm2j8AiGodiFCq$FJeb>ZdTHxjpWtrMo`Ta0 ztrva2ykox9j!6e6s~29{u}<By<G=E?8r7Sr(;^OQl}CDai%ayR-Z^-Da{s=_f|s## znY+6eFJ3P3a;~`KuULy0pN!%bGcOj_J9y)#Y+F)cddkD;Y-NRM;e3)l>n1PvI#cq+ zV#lc$DFvHi`<gyP6j<z-Cb36ud3nPZ$vZWkcMn#~tPp%@ZL!|tXr-;r`2{8FW#P%% zXAb@KUVds{I^UuHhj-QRS^ShNi=DUmq}*}#rEg+lr#DW1BYT(K`Rkf;**kpNZ)~_* zTYh^j{XWO@(m%m=(HmmkXKPj;_?w<`^1&QEo=vCbPb_#;7V)xD_PFz<$DL2Y`Shks z9(hpsq}(bl`@#<EO&|ZS)4%c|zO!ca!TQ5@ZQUOj-mFeO`?mYGxQzRs^>hBVZ-`s` z%_@H7OTT%^S2lc|Sv50au8hx)N9!x*B;Tuk?oz#cTX@sgnbq>Whj#Y=EAD=l-n7eq zX{F+qeW9P_9sX|lc|YUv$sbeS=$k|wXDc|FtW+(gwKwI_quo4*b$01V{noW8E1B>0 z^LjG>!Uwxj-^=JTKC0L~cbc`%%)-K?7wM8#hSrA1Wn^WNdtM%RujyDDAt?OXH!{Iv z_2-Uhp%UE+J2HcoM)_(wCe&tXe`GqPCM;wSk!aMd*>WtjXVWw_HJ?p0r%84lI&oOS zXvd~?66z^SVs!$Netq6lCTWnW*%RE|Cz*8erq^<B)=PXdHtWnVoY=D=DJ{$=wI|(A z+{?4DXJyK&Q{kMKHkOEbFYwbmFvn<R$_|Mm5B(%oEpzU+h}f~CPqXWouxL-8xv0;~ zNEvsbIh`e`?VJ{F0jD;sS&?!wbmGL$W|5@Ty25I1yjp86MqF9u=BCE1v+2;W(AC<3 zQ^UkU(_B&~&RDbIm`m!^)Rc&$IvcrlRwYZO1|3W0oEDPi$+Jl<(s5?$lw{2rtI{M+ zxh1A?9A-@mI>xg>B4yKIqlrC>jg}>CI2C5Ja)!~NG`9pD18)BR;zh0&0TVzaE&yBv BmQ?@% literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_02b_states.bin.z b/client/resources/hardnested_tables/bitflip_0_02b_states.bin.z deleted file mode 100644 index 3cb26a7eec4b823aa3f3e1fc9f6199cf38d41b86..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9230 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 diff --git a/client/resources/hardnested_tables/bitflip_0_02d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_02d_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..54170b83b35031af02b477d6a26d694d3528b39f GIT binary patch literal 3826 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 P(R<QWuu!4@`2-sPL?=nV literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_02d_states.bin.z b/client/resources/hardnested_tables/bitflip_0_02d_states.bin.z deleted file mode 100644 index 84db51d15eb194922e305090978ca5c7a6d6a9c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27896 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 diff --git a/client/resources/hardnested_tables/bitflip_0_02f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_02f_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..e20b10f3d944a193fa743956d646b035b01a5634 GIT binary patch literal 1660 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 U!2uonKd~o89y&So&)qBn07AO)vj6}9 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_02f_states.bin.z b/client/resources/hardnested_tables/bitflip_0_02f_states.bin.z deleted file mode 100644 index 8858e63b4726e50df0f2174cffd24e27fcf6f17d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14181 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 N0w@17PuK8x3jia)Be4Jg diff --git a/client/resources/hardnested_tables/bitflip_0_030_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_030_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..8042c6366ab8fb138f7e7da09b1b16042e104a6e GIT binary patch literal 1119 zcmZ>Y%CIzaj8qGbjCEXnkSX!^JI9-Mk1#MOI5sdaG&V3WF>pL!yH^ts8Wgfn!;4cv zgdxe~vRf;IM6b!kg$``Wz9ty~j2)MKr8rk=`8t^JI0OYb&08#xa(w?UFQtB^Su27= zLKld&8clE$IW)`bU<g~QiROf5t%fdpcqSBuiI{OjEL*W<tycVtUWF~eE+yS>`a`N_ ztv87aoVYJwS<CW&UMD8Ec)oF(@+CxN#}tlTT^?Dhf}&W~xF}r-%~&*D(N#A@(2`5D z!pYUbu}f5E#YQ%TBVN8-nOe<W-cGZ$)~wi~XwWRArqo)?>K2f~9qO~_RF9#rvXak| zP$QL)ry{<hj6TA@UtV>MRcVrF{?ci*=!j%smRpd?id2m(H`SCVg*DAwSv;#E9p5ba z;reK5oIv+?{=`FkD<wi(BOMaMR;)g_>Ui>^aOa?)!y>6s3*M<tWebV$UeaG0&$4Ib z9q&WIhbHV<6d|-%B+w>g%5<(Z4kpXIR;3#1x|}jt?UkXuY0(?UE6ZISe{eooCgZ8T zNKsx?%kPPkO_O@orI~J_fs0m$@<??>q=rOfWNa}pxNzZO#G+GE7io4FaeHO@vL<@$ z^qSZr%azKySZdLgC`qwNTdWq@ewn~z!4<N;Rm6wIHPuyE)g{tpg~f8Et|%vwpI4N+ ztXxI5hVXSNJy{mAbV;O`>k7{$k*=bXx@Jr{Fy*ALrb2<DUl6BX&|=5PfK=D1VvVUO zJxjAzN-gzVq%Dx8aEXW2L~Y`fQ(0F<Qz90INi8~Y;=+|EU0&CTD^7*Ed97KPH6hby zk;uNzRM$g1j*F&Tb<K<n>S5L}3QA@SO%-dJ<#j1cGD!2Jde9=B-cUiSprr-DoibC! zrs`@$WQd0fo_JB{wazH4o8_t4BGZ^;H>veMySPpo%{u$RpneC#dUGR|bMF)wco-O1 zco-Pm8sxuE2x@9{(3~u+aN^KRLnEFZF!P|PR_9Bjv;`M5Rb5OPF8gm4a_=}O5y|GZ zl3QEbXGu4YiNU31TfD<o8^+9<+EW;NFRo&p)OUA<U&~fKT7NP$USr}Zg^E=x7c5+* zro}epD)XwwMXpyJeuQd0IubasTTG*;XQ^7~#0e*^26KyC@x1HJEt<8lcXfoxlvEe1 z1u3hVU5%#r#A|IbOv#)aI4N`4mTs}IWfJl2pVwMVjk&*9>!ZP8mBY@5)eU`@WqgyA zl&FZme(~iS+v~f+muAFeu{Uxr_Q=-QER`m8wbFgk#|q^KRhHgQgKAy&c1^wzJ~z#E zGTV_`V%N5=U7M{Y;p;0oBV&3<Tjz-bCws0%UiI`cVTpg$*x((?EE>8>sCX5ds8-Ah zDb1tdkz!HT6sN6_bUNCYx?;tH)k~I^%v#ga(;JpL*>TE@uw|~@p<%{RH+(XK6W690 z8?MQ^rW@>ZtyR8KODCl;>8h@9q&C~imAM>OC!E$@HTA@!Ra+bRLgw;KUKtr7&Cc?A ZuI8<?vJrD{?tk>oV>y=)!-Um*3jmpJ(JcS~ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_030_states.bin.z b/client/resources/hardnested_tables/bitflip_0_030_states.bin.z deleted file mode 100644 index a9643322a69bd4da814425d85f46580b0a9910f7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14726 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 diff --git a/client/resources/hardnested_tables/bitflip_0_034_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_034_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..06fc562c4c492622d08b6480a36e622262e4c908 GIT binary patch literal 1317 zcmZ>Y%CIzaj8qGbtoU)Gk8uI}pY;E~e{gm*Ff?#CF#kWmz}djiz{ALJ;sMWn24rx6 z;o`CeqYPd)hYSe@DU%CqzKjb_@G>(nyUk)axxhq{aX|t@#$^Xd6Sigr6CMU$sSIYd zh6^cd4M9OJv$B$sgQQX}`?8%hn62`UmGSez5U;vJu5L>6CVf;EK9Tg`ML4IG!SPQ9 z`!*cCAhF?Sd(jaKiFb(>1r~;F1{)5)SNOwPKk1z{oAQy31<MR8c*?~0O!*|DeMN&O zq@zsLhK*n8Ve%#YhW$4_>K{qo5a;|T;$5sb-@}5vt^P{>N)ic4hZnw(Q@&uQyu*f> zv)|ztb5ntV4;xRg$b$_pHq0?>Q)lPndf4*d$kR6u5A*dMDJZF3{-mI`dBKB%xu@P4 z%v)Hi`eo|x`4w;Y6Aa}VzBCKp(d*t=bM!&{%2zi2FRD)ZD}9^TdSe%#xYLG>hYB7X zI$9vV)AsSs@FR&58*fDT@W`?DS5{7wVc)QC(r106%IQ0-n_uZW$_sq$W9DYQ7qR#G z4QtM~>NCD`^Y9zi2WstG=(J%~0<*}JUq?1dC?-fmY)DL6nzUMEV>ge4p`k%S(vc*U z!<;=n5{5||Hn?#!ZQzsWOgb#s;}fyukc33SMuQniN8MD8CLK9&WCu@#)={6(X3idi z0}@9KdlK7pB9fAh9Mcx<W=ZUcSac}l!79Vhh%WmB)4#JE4b#}*6LN^@Xkt>*#*T?y z!J<Kj+0=N{G-H@nyim^!*pMvPlW?$GY-7ZMqnfRWJqbs9*qHWx=sGavh1156zNckM zM_VKUyPFP86YSdI<HMs9rZLCh&<6Jn(|Lk-CUzV;8Yc1}S)yQLI6IpjGiSpe&yr+r zh7B7X9|S5lcFpZR;C*0mi;Tt_S&?<zV#<w&Y*>@UBsNB@Ze}XjD0{T!V2QWTAC8B5 zLI*pXn<8ApSRP7feA50X&v<x|c#>i0oeez^hCNA1iS{q`&uolesCTqNv`He=P`}Yp zo>6OutDA^6#~#n5h+x6aib)BE+Cl~q(|BBePDwblm*F>0d}hL5H|r_OUj@DvedO*m zZ=%6cTNjIn$tPBR;acvr@=lL4SDB%hVNYmcId@}{gdTg5MM%|=gx##IhDisT{Ejvh z7>X|`i7{+u<7-prmhC!pw0Tj|TpoktFXSh@h)Zv@?&dz?y|K!(@6dsyqij6h!rY5| zd?Z#L+OYDFPDJ>U)r)3S9g}N3e9MY`OX4T_jsN=v_Vg>ts2)5R5yse&u|wiG*HiAM z2M@)03?5p97VPk2z8AM?`5x^%6^s`z9xCC9ILs%puDkujw<&_p7(NKe2(9KY6qV38 z5W{dZ@N2`7&_u5XY@&Wbhjua6G_mTnGIq2Ygu1D)eo_(qb40mGYv~2;MK2<z>1cK) zCK=2K=h_h?(UW+vAfhKC>0x3{*3r&x(ax@;5yuRUaf|6hZ0t!o%w~AduWQnS7e^0- zyolG)pWm)3$oQR6o3+(hwCNa+j@BAA)zGA)svSo?rm3mu_=Fq{6JrzOG4x^e(ew#f zrj^*0ED^Cx<j7QwjS<eGEe8`LmY;8K6ig5k^>LMOWaB=dGQ(*~grGqXpQzJ1frTv- z<Bw^1HXfRiaMWO9$Qm_`Lr22aBqk)YY%mnl<J4MXsM*@$vSA(9$^%+`>@2EH8@Un+ zrn+-QXeLZeVivN{GKdiq6WO5>p(g0VqnV^9+!!O;G)?QF1=E8Khc+y2I$&VH&HTT6 Or_vk^51X1CcLo5^bRQf5 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_034_states.bin.z b/client/resources/hardnested_tables/bitflip_0_034_states.bin.z deleted file mode 100644 index 959af96a9325d0333bafc7311ac45ec254bb3823..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15953 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 X{2rbB2CYTKI{7U>;XmWGtY6mwrI9Ww diff --git a/client/resources/hardnested_tables/bitflip_0_03c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_03c_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..1a354ec8a441b7e60d1c5d2e50c2669d27a52b6b GIT binary patch literal 924 zcmZ>Y%CIzaj8qGb{GIB>%pj2R|NO7)eY_kR5=`71HuNlDV4mQd&A`Mhz|hF0!Mx%D zdprXJ!!HH~1_sLprj!Fri3UE34ay8M2N;bK7!78q2^<h?;7eebX}~bUN0=jl;{dw> zgU<{GA2rSv1C|6vt-ubG3v3NZMp8ynY%|(?jaXGRoYaC(+DgsJd}(5Gu_NQM+oeRw zDc_C+*y{udyg$nIO7M=>hPa?Tsm)*86uS)OvRX}QQx-K4W9;gxWG{$Y^w3V>Q-7c> z>-*^w)-%K?GbZhpW0pv)X?>|LSgLvDgTBP^OZrUe9ahs5-YFh#FO=IX?#xs0o4MUt zmb+QDVYfsLn{sQ{(MNiV_8z{&cZ^T`hQ!bFTWXfcCCp1WDiP87PP`-Odso3md%@Ro z8$b73ya|5Aqkh5mF^@q-YuA7FYj%rQT1`G>q2KVqF!9^uGjWdHXJYJ)Uc}foeG?PE z6z_1{vFhks@mn@e{Vl$q_~Z1`)Bi?X(?;3ODsJHu2H#t|7aZqiW`4|mCH820!0zrZ z%~#@H7VLTYe)7WFr(fr>RB$tkvFT6v*}i1or&sDrs+Ycyo0!=6=jaPAy~W>W9Md{1 zrY4bKSmoW$@=lyjE_mUE<LnD$WI69iJnSqrm?IH4`C`Q$_Db1~hvm~B)E@sS+q~nA zpK#N+`I7w&`yEU46PEHE(Bff;XP6>j$GX8;A%jIl-XWse^_hO=cX^JAQ&s*4KF&M5 z@<Wf`=XS=QGv+N=f5*GkPqgCnGw~zwf_0yc-qZV7ys%t&dc}@d?maP9)05s<=rtXd z<!%;tdS&6)?);B~hqbfjY5bQ%h6WK4YRaOqoYp6TMP5ayUa1$BhzKg!p~o~YXjf0f z48sUvf#pwvW=y>i_>(n;OYcJ*YfIn4hJ&6LLfsht94Qz0pyR`%-0Hm}Vxy0rnAVYl zT?gGHma`@qCLL`#p3vj*L7jPr_XfX3Z-m7J@97<|;j|Jh&^z4BV|}JXneS0SaLds? z;ilb!7YcSn>`3fvUQzH+!m!=By<&lWnyM>*#>%9Fu73<xhI0w6{5Va-D@;!?BqCAO zO-JJx*BZ~3sSQWGHg-)+=n-s6a#QW>?9fqDZ0t1T7D|#>EtIff8k^F_mSm=l5<-cc z5i@jj3?zhwMUxIBGbAM@_PB|xiIC{gOl;bilyt~2(I+7yAt|Zr7-wQ@#K8!|9x(|v f35ke}t%+?0OAZUoINJYD?@3p|Ld9>Vrmz73t(Je^ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_03c_states.bin.z b/client/resources/hardnested_tables/bitflip_0_03c_states.bin.z deleted file mode 100644 index 7ee384996119f001684c76cb729512ebfaaea401..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9693 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�k@lDzTV$;|351z z^Ds=<`hWAQf9qd8mw);%{`-GMhLEWL)&IV~`nvt={;!~9Y+bkZzWrDGulAq!{{*$M zdO?+bLg?SqpX;;N|F`{r{>OTof42X_L4Dfz|MCCtg59_CU;N`gSL>7B{%2%pko^v7 zH@vF<eP#cV`(MSu?Y+m~h`I9rOFc>tDdB&7=6^xefBXLDzWMXM?tjBa_5UZKCCGu# ze~({#>wfR`^z_%zR{x9tDVFsOF+cA=-_Lm9-}%4w44?k*{u%$z^#APtN8|s3?O+J| zZeR1i9}?4GKQk~K;5l#ifA#lY^XuPz);D|vX*87n`(FRQYW;sZrA0OWa{m1|KlMMf z@Vc_U+y-pT=Xj7c-~Th6`2YS{{m<)vK*i_RdWIF3|3}*1kNV%a|Et`w`j%hkU;N9y z_F0`l;rXxqwR6osum68r?K;0g^uPI2k;g~sUl%(3Uw-TF{;Ti*U;c0WUl}?Q0BV+^ zj|60Whl~Wgy|Sz3-pBRx>fe72`*G~Q^z;3{zpkJ6pW)1Z)6eU_?gy1z3oiZppZ8zg z`|tkpe>Y$MU;NknuRTM<-rw=>{;$4TU;Kam$NWF%>;J#|fBAp-|L*dCpuWUM&?pAB zM$m^P_ve2u{j+7s`}5ha_WpaZ(|6wg9afN*sm}BLuYM+PoVVW!vvYjzkNy7td!GMf zZumR@r#!rPhSm+xcz{y%tN;ChM)KeJF@NRne`jW3xbgq$4Nx}x1j<N1R{wAQXrKPa zdf#K~f4?4YKihvlZ{K5$<Kp!n<LB2$eg9jtKW^{!?N6TXfB!Xqd!K!s=&`=~f3;u# z-T7huPrJYVdH(;xnwI;UbDv!gzyJTQo!<T3|1MtpKmU3C*T3iY)t%q-uUOXX_xs0Z z{x5!CfBtp;zv=&zpZvdx(kNaZ_rJL2c=?}Qum4~CcRu5PX6ZlqxAwiy>i^pRwf_p~ z-Pu3(|2O%+%>BRi@BVLu)(wzch|=|ZCExe{N8kQ$|5jf;UjBdjkM94)U#DN4|3C8Y z&*iVa{$FiB|K<PVk^g`Hxqs&4`_J`;>-PWJ4=wgz{|CX@|DV=_yJ?`YtoT34NA7<Q zWqAGie)i~a*645+1H<TW*6487=y2BPaMu6P;jGc&ENCN(fnjtwi_%HM(c!HB$H237 wqr+L?Ts1nJH9DL%I-E5+oCO*aV_;wy9nKmZ&SGF-AZj?vS@1t=t<UOg0DFQQPyhe` diff --git a/client/resources/hardnested_tables/bitflip_0_040_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_040_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..54b71e2cef53a5594ccb5dbe9a8589c3607d7cb9 GIT binary patch literal 413 zcmZ>Y%CIzaj8qGbl$~w=kFjoTiOWS61_uEK0R~YA2L=WX2gW}ooGi=^EX)o}S)t61 zuUJ(@O>EWXsyc;!RP*vUrQFiwIcen~pA~CV4*7T<)C%!?AXKO@F{zc)=9R}%y--E2 zwT$XPoN68_Gefjion)E(s?f8^vmwc=((k3kGM`CPUQK42l;x{(LDF-j$z)DbmH7)M zt2|YiHBmh@{G*!ZbCr{mwZ*)*@C8MAPnjOD_{y{?GbY6fd4u2sl}8RX9x8JuG5G~~ zu4)LKGAUun<RH%jD*quq>a{lZWBRIf#pNOkvVV53SQ^Oea6utMiYY6^&DmkeRE3K# z&x&+Zigk%D2^VqnoT8^WF-+vpjO9!drgf-nX;~CL)uACl<f+!ARIN!VT8vXxc}}Wz zjQiqRAhFbH&CFCyKhLS2I@44emu!ldwjxvIFRRg9m04c?9`>hFO>NI?x*R;AB3SdO zcu{*`hR>wfCDS~8Rpv3xS<3!ts;6yGqj$@sQw_Z;(^dufs?1@v<KC$>N5dnUZCNA( E04RQ&ivR!s literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_040_states.bin.z b/client/resources/hardnested_tables/bitflip_0_040_states.bin.z deleted file mode 100644 index 372d2d4ad490b57c710077d9a5bc3e86de1eb2e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9770 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 diff --git a/client/resources/hardnested_tables/bitflip_0_044_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_044_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b268ec93500e24a292f5824337fb80b961bcace5 GIT binary patch literal 3460 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_044_states.bin.z b/client/resources/hardnested_tables/bitflip_0_044_states.bin.z deleted file mode 100644 index ea9324375329e75acff6dffbddff51f4578d3c4f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22156 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 diff --git a/client/resources/hardnested_tables/bitflip_0_04c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_04c_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..26977703dab9ae6fa24c536cf8c22d0279e5ea5f GIT binary patch literal 1219 zcmZ>Y%CIzaj8qGbWZv}lJR`Go-Io{IyE-~nacF2bFgP%9a4cT2Xpsg71B1o`?*9x( zAR$GPflb+Q!U-M&Bc29k!38H$*d!#`92h$;q!=;t@H8th9LX?}WNc$|oWPJ|BFWQm zV9AmWuc|8L;FDdsYF8v?+O%K)smY-~O=+Svr`J0LiNFVrJ&8#xk_@%EmV9ZoX^B|* zUgW^a&WOeXK0yzBv?O|bBqnw|SQFfIs9+tNg`Q~F51xn~J!T#?VPS!zNpr-w+q9cS z4;?z(+{_cBE!(R3K*&dA9+TjKq=U_(Nk@}5Y;fa=2ve5OiE`r&X46ULNo+XSEfJA) zu)E1KG1So0`%<{8zM|_v89h;UF1h40eSAlgmi}ww7G^UH<MA;(n6&PxcdOk4{S7N+ zSv4N4n#OcwMw>RP_5y>A2Hm2qWt<0s#W)YmQ2EX#&Xo|OKck}kjJ?7CrFXOsEU7v5 zg{xpyqBm!^XxGN1;3FFn4iv1>Jk0v6hX2Ab`@~N+oDZCjNUZqXBl=8!<(=QBpOlp7 zUpUU*@kM^;#T!)zZ53Z~|Iq7hDM*$uOgg?};SC)_VbLCg!_13B4|#2L=JGJCVVbnV z^P<EWoj?f*uY{zKgoN)6Ned2%97*PEIkX`{$Ft=jo0!&7gVoH!%t9Lsla4CA;Ckrr zkSAiP&8Zh|EJ@l-28ISRW`rpucKY~)Nf;ax(-!PZN-!{FQ(4V%C~0NWQ8&e&h$%@& zl6lm43=WH_No+VQB9YkHqo&%EaA-|L;DwMEGo~ClB(WjkP{cIVHZ{#|Hg1N)Y|Jc2 zHnj10b{sV9Y-UMJ+Au>$CnB*Y;qU_17}Z42golYdI)))f4HJ{BRQ>oQlEpM$l&BdT z)0!)K(L(D%!5pr-JF0d{E1SBHgj#nk?J79h+GcR*&@sNptnaM!7`p{~!k^VHJ=odL zbg;7TsfA{<z@O6_4_V8(9&YVCc&H#*w!L64L##NPy30pCai{u2M|HwfJ7Z5B@#8A+ z6HPd>e4;G#216Oc2!jU(7Vg{)1sm3PCM15+PyF6rSrVUEefon%Z1<B`;S<4^^eYYa zUF_xw`1kzEL)BM?1_lXb1`i67k|mD1NvxN?e&|h7o%$oY_7&@%-l^o~N;p`}A6cJp z^tF}YqgZj*ch>SN5524PpYf+(uuOmDTa`VhujmKXoL+S3joU-hiv<sRB6h@xbF<!< z?%LSK{lHH7tz6?r*&`o##3VlPSjZnV@V{fQp6N3;_lcy#C-yFVBfcf>;upDx?GyGK zU(&xrKQVYw_>(ZL^(WM{IpQ1LnK>`acQ|6`#&>9W!g9`*jn+)<m$_C=jSo~3e%%=( z>Zx!jXn#|%Ae*R<rjN)BZH9xP&LRg5BQ|W9A(70X#v{hrEurIeOyXe25{ZMNKFkao zR?V2O##P57VZ(tQZXRx)&~C1zLq}#rc=JRgh3JGjc1v_dXe$5IG6<DX)0!-D=wN4O zYct0V9!~96Z>FgQJ46f~^l^(E)e~*iDF})YwUANSVW6hkEwoX)WyVy46%Q@ExrMm} z+YBO{TiDb%4+|EwX{l)o985CQ=JZK06l2<$6k*UU!P?{4rrFGq*s?<+xV7V8WAiWZ MB3Fxm37|p?03FKap8x;= literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_04c_states.bin.z b/client/resources/hardnested_tables/bitflip_0_04c_states.bin.z deleted file mode 100644 index 2bf23856d4222582b682689bf181daf952f7af5c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14808 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 diff --git a/client/resources/hardnested_tables/bitflip_0_051_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_051_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..3c889d07cc75ba1944dcf73cce55cd0da73b48dc GIT binary patch literal 2568 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 bH_wVQn@+fSOZL=v?4G1~sHI&`Y;FYr{7RK; literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_051_states.bin.z b/client/resources/hardnested_tables/bitflip_0_051_states.bin.z deleted file mode 100644 index 0b78915aad9061a73fac374c3f78ba836b888c8c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18194 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 diff --git a/client/resources/hardnested_tables/bitflip_0_053_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_053_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..751724d3d866193c6811d7a55f2d58155109fa41 GIT binary patch literal 1356 zcmZ>Y%CIzaj8qGbT$`FQfkA}p|Nq0Wva%oNueapb@mRiN;sN;svY~<vvauWt4Gb0y zj&C|2aPDV-0mj1)3?@>%j7<y~nadnZOfn}h3z#qzTwvg3Yj#Lzkdn%rz{@L@!f=F_ zLB@oE*>S-I2?e&cSt-oUZZjDSnH|`985k~Pn6Pm$E?hQ~;ljmb4m=JQup25eRglT2 zbC%|&O!nnVq<YO3XPKP1_>$Q_*x6sn)_2O~TfS2BeZRbL@ShxDXEX1RZL?18mwLzk zR5_LK+wN=BL>{s)l6B+vs8ju7CA=^q;ot*<KYRzTUi^Ol%d0YLH}?Z+h6naO{NbkW zT4dyYpnZbOycrf+5h>GGOg*utM||JD!^UT7H|ww4&G??D@51ibHRmh)L=S(Gv5<8S z{QIuCwS1Y}&!4iVSK3})6~{UK$S(a;w%6T~7ad<9U+`c$Q-PX$X0^}xk8vd@FR;6Y z9*Wm)d1$47DfPF^^rsT@9jEp^sc5yHe#iN8N{PC|2cwNW{RfJ|RpL%sgy_gQb{s6S zUD#Up<KT&h1&e=(Yfn1xBr&m>M|shM)Kj0u8Gi5|sl9kBcGaf22cOq9w|-R9zhL;! zsjT^gL_|`*uXe+OzAqLf0;li9IlU-Kjhrgmwc=Rdjg^(Bbu6`8C+qMmixlI#n*3_r z!*3IN%I9(`?<j~!mRTpRd2l-OhNII%PbHoz^^vU5<2ic6@6kg!ZuuSWWtZv5%JO|V z+PvjSQIX!$iw4Je_D!=AlbO8g!ErvmSU(wwlQU1Zv)U$9aQ3jD*szze;f;*^E!&6h zWZHXTSKf;~7WXs7CVOf(=b@vI^##h>SzqbL)_q>|hVL`qV=>E!Cq{7!FJkz5lKwX@ zEO=4kC#N*;WQ{kQ&oOz%&oXoL&&`)A+O=uZuWpINX_EXa_ALH$e%1HLxq(0DulO0e zc=DO@=8Zqj@iFT!tW9qCCh=QaPcFRk@aO$s58rULe=47tnA*l;*uF|X!N*EjN6lN+ zBH}QQMB<dxuM-O<JV>3U+T%HO#+fr4r-oixnKC`Jz-V32-U&%x56iF~I(1q+^w7hC zf@8AFEFxo!{<@ypVf?wqW~brB`P{cE<17BNXK(q!y|boyaeL3E0vX{A-=_c4^E-Or zyL?7`tUv3F9R<IS$}RXPyh{73%&L!*nN>UMwtm**Tl(i!%F#nc$vQqquNd_7t-M;l z>aYIPd#(4hH&kAIZ#|EtLiK9F`ktpX%lrcNbnOjnlWmJQt;fgH*Lb3!=K1T`@N*ll zRvvde`R{nsgWbXxL#i`V^feOQWH~G6xlc%)9{5CVbIXI%w>{@b9;{?vq|YpI%<!py z&(oK3L9dK{-rKy_hF|IvTcoY|g@O{#tF_n9eVX6;c3=DNed(1C<c!r~R33I8nbQ}{ zV;NfXWS+m(ed~=kg0IW2meCV!3yYj_^46vu7BV(@s~7z3Ufk~dqH^Z%m|eSO_TMVs zef67vE0<ShfcU#hjzPZyJ+5epd|BPZl{$fSVpmd%OS008_2wKgDknmYriLaaEu9vi zGc|F_DV|_aZ<UnLiA~EqPKt%5`a}j@aq~EGDyv7*=Zue$PvTUgsndLB97;)A6FIRp z>BOcrT4#<O?K<soOyZP|gpZ_}j~d&;w3W#`hLR?ZZL1`W)<{Z9L@eVtv$SU!&%)JW zn*wJ}786t0*k)|xV~{%2&}c(XV#L9zO=k=zCTmLwOPo<N^4Sz|G|b1awaqEb=Txwc yn_<tA)JdDQjglpk4V(>p4jtp1v6<(Pn!#$Lsgga0-tzzSo^%x~RE#=xQUL%=w`zX? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_053_states.bin.z b/client/resources/hardnested_tables/bitflip_0_053_states.bin.z deleted file mode 100644 index 700af31b9b53a36ccfd36fd5de5d178e5cde313f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9176 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 O$Tw*H<33Yc#0&t)5b0k4 diff --git a/client/resources/hardnested_tables/bitflip_0_055_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_055_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..1cf3f2ad935916102ba1f429ad761ae628fdd45e GIT binary patch literal 5503 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_055_states.bin.z b/client/resources/hardnested_tables/bitflip_0_055_states.bin.z deleted file mode 100644 index 307828e6489d175e598ab9ef179c78ebb9442fa0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27783 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 F3jhijreXj9 diff --git a/client/resources/hardnested_tables/bitflip_0_057_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_057_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..099cc0e389fb33d6f70aa3e70a58abd6935c23b3 GIT binary patch literal 1890 zcmZ>Y%CIzaj8qGbeDZUGEkk_N|Ca|PIVV28JyU+q&Q6XFi8(9{5)6zDatulg{0{`> z8PI{{GBqZX13k(N3=F~?2cFHC!Eu?%pof8h!AF^SR#Jkp562+`1_nlh9=^=ZhF$|@ zjspw~EQbtGwP|W9DSKSVbUwLEL~dEH&GOD=!M7&gbX#`i-~Uaj3V*f+D*X^|n#Y>j zQRt_q)hGI@WQTsRvSdu8wMv0q$eg%OOI!Ff3=_3Q6K76&nY8Kj#zJ*59SJcW{vY*| z_4K9*{keOcE%?kPiw*nCn>%B5_>RA;S>9Q7^G?C%34210rW|ca^Vt=2YMQr*W7m<$ zmrT2q)^NWFe(YbdX};ox!dms@*6Q^S9^U+F+wR_Ua$01{H#tx3j$L74V)0#v)>!yy z#U#y4lnDzuCUI&;s?khsv2d}#l!M*fY6XRNs@<KJ&h5{<^Wx37c}Xuzj4Wa-HW?*< zwJ0=Zv)}k!R$nFjz*O6h-)zEJzs@{xWbe9jeADC^TaUILI+1enjYQS_2S4UsfAHqK z`qqnYtAf5vjeGP(X)pWajvsw*jv2NY{Rv-KQpbJYT2`O6|Jgq0{#Vs2YO_*9lY*5( zFS2%gh@0AV@@4(*<!;83pDhXt&LsV~ey+|fZpn|!8}D{LSy8Aj+U6$9COC0wQbNim zKc29ZGd+hJJ5HuarXD)o@BN}o@={quvRK4nNj0A1rQy4@FX&Cv@0_R2KJmsJaWS1_ z<4ZqfZBF?cD(|#CKBv&%u)Xp2+ZSbJ1*eU#{cGQN!}fS_$HQmwdn<M9-HV^by?kdC zw|M!p{a+qGk1u?%=a}E&jnj-y^GJNMD?R!=;?2Is8zmL%&pfP9|FJOMB1vbdA;&+} zvdGjfgG8}N|2-=&x%z4Cn5Nn3#+Gs{HF4^6*VbmPnojYgMGw_nBgH)n-Nl7YEB36J zaWpl>(6DFGiNqG84QUb^XBu|%EaTZU!?5=C(uPx~B2#se(jpB~j?OSzI^nQbn8CrG zu!zXWh|~yUF_FWZ(;^P@Oy)A05$V|?n$Q+$aB9QJw8*L50tcIBB*n;RE%#G%UJ_Aw zK&G&}<Hd<HoEIlqw9MPr`dK7p_hS7GJ2pHz_2AKTHl>60v$>Ca6)(JKE#_V_&nr$< z#w(mN!Z382s?jtxo;4Di-bE%FeUooKsGf9crqRCdf`?A)J#IMM-1OjJnf{r|;~%W} zPRj8M9Xw#L>FAv=7U68#k85?#CtlJ!{BytXmx9l-=TFXSNavH`uju+NEGBX4Xt%P# z=}te9#6;E<gN6Mqe#$Ks66+N&X+QK#*u(msza{B|_rfWAUKA80{$<}#V5O$n`dp$+ zrmp8>y*NMP1AosM#}~-Tuyak5R6P_Q_}<u9@|%8C%HKz2?n#nUUc|`A=x@Dv>D|7? z`hO~vze>h!)|M-&<f=JYc}?C}dBG>6jXnLD4+1YtZ{Bf!$1k7#tPiF>Sn=-nJk9sJ zs${i$cC6WR@~{7!H@k)3+q|q;e(k~ewdL^@Z%Q`4>-x==viOPTr9&wv^uLAnYzn=! zFyX<`gr3z}J`y^?YCIc`>1;HNkWbQjArnw0V;B>3TGD5kPlVBtQwL{uiyUo}4D;q$ zv&m<ZT9~9{qT!U&g57L}ZED;qhc$clZ7JDsv~g;iR%GIolI~6&E5nErNj*M?by6?L z=qVoU78gBwWaHGsGCqBi7Wp60TDAODtE%0-DT_km?}o;2GIE?2DzR8;Q^ZQ0m8nw= zQ@u_LEY@1Atm7>tvFhjyBc+7XY>_-+&T4FlGm?%P21{ydc54{&Z0d12tlF3oDdsJb zDi-N-Sg|XW$Cxd!TPJi{XoNS<g4BeW+-f07n`TOEoEAD$XSFiVVKE-bW}agb*%Bu= z9ZH=#wRI|+wpdU~M6l37!>+?xCz6dtJ7%~AomrM}CM{`Gq_$|pii953q>U+&lG3`< z!opHJ!wNYqy4+T}IJaobkw}`UY3Q>e(NHNhG%++~nrcs4(#f{KX@)&Xr<Juik~W;| zoN~;-XNsi8p+g%I5}SEEdzy_UjU`ijHqJP4R5G<&YnhtIX*P+3!>SXzRSk_6^CU|g zZA(^)lynngYIEkCa_BHO*QOad$%fqmi@))y#JI-DZ+DsQrg4~CGK^>8Wr2sO(<Bnq zM3Z{L+=AJ{jFL7SicFkzWMk^o$zrKSr<K`^P8{v=X*LX2lQ=AqtY(-jk!EmaW<ts) z$%F&bymgN9c@{JjN(Qr>THP8JBHFWRjhIKc(2*Gup@|VQBMx(<riLVJNIBT8q0T4t zs9nQN@<@b5K|w*NMeC758JC9^;Vgyff(aIq7KPKaCp}0y_23v=n#Gbsg@!W5Z3d?& zEp2C(><Q!9;VtE7IOWuu)uF-4iU(Kqi3?9u=MG72O}Og0AuXA8>ale~(;`Jqi}pAk zoUzfkXGhOt!>N5LJ5ns>go{j<5VI(>FnD<I$l}g+ZmyoBGb<1Cq;wl__b^MU8Mg%_ bYs5(E9NO5-qjTD@|G#*Vt3|*BP@M_@s~$M1 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_057_states.bin.z b/client/resources/hardnested_tables/bitflip_0_057_states.bin.z deleted file mode 100644 index 3e8d1b279c492518a2bd1614cb3b559a67cc5002..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14121 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 GU9$m4NuVhJ diff --git a/client/resources/hardnested_tables/bitflip_0_059_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_059_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fea5cf3e8286222bb847d6e2c392d72fb2853361 GIT binary patch literal 1820 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_059_states.bin.z b/client/resources/hardnested_tables/bitflip_0_059_states.bin.z deleted file mode 100644 index 1356800e09d8cac602a93e29e857d912eceacb56..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11331 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 bH+<K>jd4r@|DFFPgO(4j{wXiW)=~-p+z9$M diff --git a/client/resources/hardnested_tables/bitflip_0_05b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_05b_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..4dd885ec3ec6446a721dc82f6a42858f71069e03 GIT binary patch literal 1077 zcmZ>Y%CIzaj8qGbRCrX~$iS*r|Nr;Z+{umRj8hyX8D=sFFi0>-ItnlfFfuU62+Zh` ze7oZT+kXazUkm{Z3``a$C;J-Alw@WyG)d@DxVVggg**|VP!qO>3k(pzG-=5!mdn2C zt8$mxa#aWWEMNK5<SYAPk6eG}OS5uqef`f(S@D04==)QlZ_2cv*Ox25u#YO1bKiO9 zPvqPjYuWbh*LI8VmFVC5@6NyRt-aw#e#^792Vd5nzI5{Q967$lvkraUytjO2mH4^+ zk&o(_PskO&Dz|2@mV7OF*x<}O_6Kq5&6m!6*(ZAVb3yXSGJWQQ*5X&HW3$if@|$>N zZ}Qg4^VTy@7F!ghzo<GnQ(OE}s@-;#2N9{sOfM?Ak9;hh&;7&hyZOCWv3b{0Kg;lO zAAR!9!qV<Kf8vYyq<`FxWAz^IC{y3@#KI;{@3H;S=cxw|ez352Jba-jyx^^2-{Y;f z3ZA4KovzGp^sYiS^?x3F#t;5ql5x!6w7=~rTW|1%O}^-L?YXP9>sjB%F@M>qC(KhZ z@9<0E)=!&_H=JHjCFisE_<Q@z6F+#W{UZ++8N9YRc(81``LS<S@|t({pNv0K!I$+a z%+1bu!mh>}kuC=obe1W#J1)%SUnt>sB#+HW@Q3x0f7z_B<F>``IQ6&Z+~S3H?q-qg zP7miTwzNx~H~rXyzwQbTpZR-yw(hA}{rCEb`AG$J-oJKDyfrs}#<#iscV5PxS-0f7 zrS-wd8>^-n`K5n}_ndk1K)o~Tl}f(!$Z19evD$i@S=$OWmFT=QmZ)8pQc%iy;+(L! z=Z)m0M$=@y9xT41o=_B<t+QCKwdL6yu2RNV#YJ_K+oM}A6h-#0t>!s5dGfi<6Uwdp zw%PW}AK&@D*y{58f+`*6gC?R!PWUt4m?eI&AtBgFU}G~ov*M?DM=QlAR2}>%)05is zMcvd+c~(r<ANFf|j~D%!bN$f&#-DcWEB~?iCwz#}c^|)W>SsN7#{(x1KZxb~H|6V& zC)VNtuVg*%@p&7TSP3sFkxx8Zr*}Q^%;!G7^rUyzamg#+*YbSdb$VeL-{c9Ot?%5q z(^jy5*GjJ|3$<5!wOX#}O6J*^ny9SP)l`?N7A$I%vREhNXn;DGVW?|n`1#J0L8k?d z913jXX6EMR>e;NuI%C3N#ThG(PUV@Ia%4@4PETN0qS2<sf>VurT00X=)=bQ3R*N`l zlyc_a3`rfG14mA6nz6PkW7S!qBN+i_PV1aV%{Y<Obz0l##;iz@)1ouO++1}MA`K!E zj+|68+H}e-ahgctq?v|3Mxs3{44c*%@f_@#nk;mfTQcI1&x~o2kw!~ScJv%sW)PO@ n%`;hI&7sKDkTb3`*b<GomKh|o8mnyl6MItRp_4;%=Q|bv*>Ut; literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_05b_states.bin.z b/client/resources/hardnested_tables/bitflip_0_05b_states.bin.z deleted file mode 100644 index efe41d5036d3582bbb56024b59aa010d317fb9d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5875 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 diff --git a/client/resources/hardnested_tables/bitflip_0_05d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_05d_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7ea71a9c6a21618fc2cf146b821a0502248669bb GIT binary patch literal 2472 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 Z<e}g;;g$mi31a;J#fw}m0w#c3W&k|{V5a~8 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_05d_states.bin.z b/client/resources/hardnested_tables/bitflip_0_05d_states.bin.z deleted file mode 100644 index 2830ce68674c4d7a2548ad10fb6bded69528c6f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18417 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 Su4n&O{^y_apZRgu-kktYe^lQ9 diff --git a/client/resources/hardnested_tables/bitflip_0_05f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_05f_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..bda71a64e2f95bb8fa9d600b29c13fa68e27ec6a GIT binary patch literal 1448 zcmZ>Y%CIzaj8qGboc1N-3WIXw|NmdZ9XEG=aTGZqC?LQf;KI;2gYjd6paYADB|}38 z1M|HH-1ZCzAailDFoUpQqf~-p$3de6!FH3BBL`THB)H8GNHXx5!IF4Z($Ij>P(pAS zi$ssG8lyz9n~x8Jj~h#7BbzeI$p$xc0~$TO1bW@vX8F5Z`I2cLWb1r#<*T}78c7wJ z&sHw~9^zEx_pnyaZsBwLo4@<L%2ysuG<sEgdS?ZD<BdN4DKCy+vUsuTeeB_X^Nw%$ zq-x#o8Tob1{?%XY7q7k(JHP4M`Wy2uf3m;uK|fG#@u^LFHJ{s0`Xy#x^=kF4Uw52; z+NDqV)Ul8C(_D7(ZvMH+zj!Le^hJN!iPgV;Ua@<!MB<|z)sMf}Ui=|%{H46_Yi<9@ zpS$P!@BOgq(SO$I>`j0AmWOYx>N~x7WB<zF@0=6A>(A`^<1Lfi+PuhW!7<k<8+}Al z!(yy<%`r+dmUuDOHRaTrq@)=}p*Efqy@e(H8GM!(+8q|`)=ZtOv$5-p;nX8@!<{!y zF*=YeIxRBQd7<3WtBI2p8|^+#7j8D3YQ)ZwV!tUeG%;n>2hB3BM-HdtyR6x(4y(m5 zK1oY@SQ634dST7!?ykeiJS%%FBvYGvbPRSxCd*DNSbfmKy7S6z(Hjra)VZ4*dt$vR zIFH7NhfB_!Irq$qp45~xZ{~=nyg1$6b8@b`j9a=Jhy41=Z}ZYS9~2&5_;t_nLW`ss zHQhV*W*<2JD7NF1HRqLchZjputBRb?XT^Cnc`@J98*|@3+wkMQ#d+-`C)<K0j<HYq zGGFqY(HVWi603PH=fns8?Z5D1^@ca8hd;<Sy^nXQ4?cRYe7C;mm(@4y4ezawtUA80 zed(j{&iCwZt>(xJm09$kIjwI{qkUoDmE-r`%=`VH|5=H@<D)&t7uZ+6XSHfSVVK%; z>X=+}`<}UcpLcBTeE$1KmBcT(!yhZG)l-kZjZgX;|Ea8UURmW_KK(~ub$+`)`8|Ej zd%w@>Vfr_wAK4*k5%>8~{DHz!*~#-><vs4+c=bw2jK#TSF%?$Y53DvX{JcEy;>DXY zkIBD!S7Ln4;?1Y_g*X4DpQ>zkeYdYX_?j*Ak@s;wDy*!hr@ppz5BV<fkLi<s!RZTj z3>9<Fym__DO2%LGldSl&n)Q_>wmN5K&YV8+NnuIKmzi>!S1aboo-eFo54}@nZKc=l zeD0f(-7>Yrh>cyl#3YunHt*CpCVVCCu&ihd&!MBX*Ar~Jx&Mh6SYNMfI@7%);ZV3s znAbOzM{`3j$a*idwpuPyP*xaeu%NnV(W1YMUU650rXI1~88TJ<zfyg%mYP<Wn5435 zw;0ccl%+k(j8!ML`Lr2HCY_wv<>M_m&1hrNVTrV~WNnFv)Cix*h-2QWY1$IWIz|V( z8E2%n`K$?+Q1ezcOf@(x+H*41=$Ov3NP{CMr}h{J>v~J1PD?tibB={))oPC>{}ulI znpYW1lO(&=%#27(m>D@O>9A-|x0trXv9!cVGY!>zdQwiST5NdOlPn>0%qJ<aM<>n5 zTSjL&vr6jJ8AnqN9n(6oDJ?Bnv#a2ta*t%ssnlr^oApFe4{NQQWH{+zchhN}>6}NM z9xELSI@l~3;j^;mOgCGy;lY9x51S2-GdylJ6z<_UnRKvOGeVtp%8szau2UO)R*M=O zHri}Bon2J8(`Z`6(Md+rLLRG0@CoZIZrKs?SSzy4NKMD*Xqv|vqmw=}7Ef{(c{t5o zQ=Rp&*0IP!J+)AS9fqw_WJDe&ceh0r$+!z^PnoQF%$?)Z*1*<P!EBsq%0^3aG7<uN zmJ}L_^YQVii#(co<WM@FR!q{=$yyevhb1FaQ>Uanc+lNvF*UXEXjkf_$c`P48%|Eq uHt=rqNaK2NEMa3qvgl-;gU3XB))}fioU&XprvAt7Nt%aRTDC8CTL1v>x1gs0 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_05f_states.bin.z b/client/resources/hardnested_tables/bitflip_0_05f_states.bin.z deleted file mode 100644 index 890893050dbc1d08b2158664cf15ac539925a33f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9377 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 diff --git a/client/resources/hardnested_tables/bitflip_0_064_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_064_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..3bec7c36b875fd207423affb005f0e7326e60d4e GIT binary patch literal 1324 zcmZ>Y%CIzaj8qGboa%n}DdYV2HR=C<|KRLsU})e!!2JIJ17iz=0}lgB#{-`K49FmX zZI+2t5(5L{1U81u#g5Aq7#JiO2naHIdJ4?)mCE%v#CC<pXI53p{2dGIEJ8yjKWypz zpwTpq!C+!w$MTs~9Y?<Q#K>|zRCkm3rzU<&Vi&WR#D;ef?aZ=g)cM%i433FORG+Xv zvHnZ!@q{ClVtOLS^cnjOeNnYJ%Jq$lSyV~3)1R^V%#Mh!-2b>g$hrRHDdRp<m)iIA zV!=Cc?&n&SlPV`1W)_p>7kpyl{>-}hfWeH9avL7Z;SpwR7CCC6W2K|clh}FiaMO-N z3q#AAKNg7>Z}jo?KdWnJ|0K)K-108Gu;pj#7x4?>M}8kqsCjUtqJ4$Le2-mvM?Z-- z*6`2xWViW-SLO6AJ$gqk6zmdh?GtWi6Vq<^G5L=5)H-L5qkV@CB_w>%sqVh8;elPz zFYXI_IbXzkl(S!nQ>k-&Bf}=fzGGu`|Bf=@TmFt;x_S5=YZryqI<+Q-9AMMb{KlDN z;B>%XW5S`MUPr?;lf@(ql9Cb*9PK#b*(NM8!yxHsVnUA?Yl4iS(9t$!i5VL`TMP^i zCM6mi?dtLDI@;OTSs<|?v}?v{Herdx2E(poiNib*8;%_9><QBr<2Wp_(Y0me!H}d? z8%3&*?BAfKwb8XHX_<hSHn*^7k4sO`j8)Sl3=I+uy&j0VJ6e0SHcRv*v++c1?K;M$ z>7&h)%%+oI_bFEB`@};rs?7rJEE~Gka2_%Ud=ma!zT@FV?u`<w-bJ|SNE|aXG?>3o z|5wENKi(VTSQFYreY`(tD1Q)I-4c@Mw4wXNG}Tr^iRly7n1wbfvvwvNiC^f(qkTj^ zv-_QnJY(Ne&0kZhSt|uEEMMWH=|7{LTc~oXZPLmMtICxH4$bXx?MW7mh&}WmqK&)p zPM@gUK?%Ksi9Qh<5+-j<kl}HCB`eO8aIkq{=b__C8#X4qn6ccM$M6^XBP;P8AJhvI zD>=*b0}XFP@I)*)*qM}A;@R0OY7r)C;o8mhRkS3SKjH9^f^U6|ZzXElU)A_4>^W~J zqk8aQL>Oa7#tw<&Tu-^19y}E1F?eVZTCl^9`A*!S<vX-r+AzF$@z9D*C$XI;-1YF2 zYA=p23>BPwoS`ieT|FWRdJIV`emf*-ZCF~s%(a{|F_vN90qqk?8<fgK*ce+ClU7Oy z-dOLX6XDn@u}e&3Lr>_Tq=dwzjV=${M4N1%>`0n>n#WB{Yr}G8iNmd3J1h(fBz)Kp zOmM%ZD8EtfnZX8bZV@?GMQicIq=*g6R9ia^CB|qyEJ!kJXFZr?nAqLgx^cCbnogLS zwrH}%VF{gxjY-E0yLlvzC%l;QL0?f{sZXF_@rIJ19Xb(x>>Qs&dm@sKCavS)JanXj zUs$|jm+;ktH6<%N!%uKV=x9l-5i>|k3{5oDS}mrj<EG`Z(NHldX_?lB4F($$yApU5 zBe)Ef8Z1fblxP+;IBM9Vqu6Q~5E8LQvFlL6hBd+89z1Y~U~LT+bYoiawK2kJ!%{<+ z9<8KsR<FPUK?4qh1r{#C96St1Rn};E{QVf@!zZ$sO|!LYX`-Q<n9|l{Ze|J9#*U3i zi-KEO3X+1kSvb47TDuBD{TM?EEEIJ_JA#?HraV}3Q0oYrN<m0MjK~g^2sJ?;9?c{@ n;l>!zrfFIaEtno`IJ9AD(*XkmZsz~pJC){Wcz7*-_o)E@3}g>v literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_064_states.bin.z b/client/resources/hardnested_tables/bitflip_0_064_states.bin.z deleted file mode 100644 index 05cd17e54ea29edbd4ba0f2244a43a06dd2a8cd2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16059 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 Wk4~A7PMOnj%KZP%ANAcuF3A9)+B~%Y diff --git a/client/resources/hardnested_tables/bitflip_0_06c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_06c_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ff80c223390f495eab4e1d2c27f54dcffb92dea8 GIT binary patch literal 926 zcmZ>Y%CIzaj8qGb)GwI8$>6)V{`@cPeY_kR5=`75Ht;N9V4mQd&A`Mh!obLt!MyST zdp!dLu$vq?;5I|BC4qr~DN#b^vM{4mf}3Ci0|RGELa~nzOJ<{l8v_G_nqcEuLj%EO zEQt~f3=A{eP_?nDYIIzfd^z~yvSq0z7cO&1nw(Yk_qefq$KD%DCX{fz5slCnj6K?X zPNGfYP>IMZFNvOz0}*T@D_(^@FzE3S6XWbS8qVFkut!JJV1wpk?FC0Wn?)N9xhlJY zMFoDe6to8&IdI4#WVdU#$dQLhYkVZuh$MCugei;ZMEI0)9O*k$VAb+MZ=qqLEJM;7 zamRygvOXosd`liI=j@hIXDvuf=JAnbZs$1IV|XX@^-->mJ>m;?_<K~cFPMAuqj<}@ zA9{if8)MsRl6mwW#TC8NTWU4;(+8gV#PSn!4_?{LyrrE_c1cxFERW&g4}7vbC3-w% zjAarvY09l#NAJYCR`_$2Nm#@;B)_s3{5+%LP{m=9#3c2W-EI1oeq!ots@hl7Cf}EB zwYzYrHu-_UVfKQJ@rmF0x4iOO^1Yq)x%D$0d!dTcM+_@Yw{O@b&Y!Wjwe_3$7l{}8 z0ecVqao-p6{rDmGHTrX={Nz3rro3VLl#Mpd{0$MicnUTc*ag%cy%kZ)y=8xdE$b6K z@qO`}R^m_MEAK1s)8UDb*x&f2->}a0iod}p@hO$9ZR{8HH3CcJ4SSN-7$zmQF^kXG zQQ&v6;Ng2&zBUV+1rJ{MeMoLoy>h4^v9e$H?tR%u)*KJZyZ^~g{N8uqtu^PNg1F01 z4WH{@iRHebf97xVfhy+{@-yvceDD6&KVg^rmx}(3J*jVP(~rq9%}f4l!@l8FO|tNw zf(Q1_!WTq;cNVNXw4Sk6>C5yb`;v~{6R(JQ5xeB+J#p@Z<*kQTmWd}k*u@PB+F0%t z53OWb`Icxl>R-@$pub|n#0v%z0S3D`3fy-KteWq}s8Q|eEyksPyVYw)z*PSU8x{p^ ztnOH)V<qZ%K*uwpWh2v3Z=op<3j+HX3bY=oGqtk@HzX}AaI#2P$B;BthU1`wno3f{ zj2RZHU3{De3zjo>8gjSHXy@9f#?6_Kq%GlQpe@*_CNZ_M>Cj=uMnl6e9X10tH8F`J ziC#w=4;d^y*t9XJU_+mn$T8M7HZ_ek3DYD(dqkTh4kk7vHnw(4gh?cG`50;*7U%z` O_oS;}p+ek41t9=4%6$F+ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_06c_states.bin.z b/client/resources/hardnested_tables/bitflip_0_06c_states.bin.z deleted file mode 100644 index d787bcc998a3e3a5c6da32bc6f9ed2b0e33cf91d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9733 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 Z5!o;G+a9zAMjSlCRIl-<Ui(TX4*=0e9jX8T diff --git a/client/resources/hardnested_tables/bitflip_0_071_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_071_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..6073d4e520ee1da7f6c855bbe5b1354185bb6708 GIT binary patch literal 6959 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 YLo>G<rcG6y|LC2^axNi`oNd7g05ke}fdBvi literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_071_states.bin.z b/client/resources/hardnested_tables/bitflip_0_071_states.bin.z deleted file mode 100644 index 2d2f4a1c2904dad0f2a351b60b88ab5a3686106c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31947 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 Z`gMQB&;PkM|F8U?dG-JQ{|-_<D*?52ED`_! diff --git a/client/resources/hardnested_tables/bitflip_0_073_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_073_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..d1ae56fec280cb0cbf79b40171a969adb049942d GIT binary patch literal 1861 zcmZ>Y%CIzaj8qGb+}1yRH^b$pe}7#RU=(1SD=5ey$S9z|upl&$fk9A!frX)k>w!=` z0|sE@HOX8iEUd=FHY4G(+pI)GqXdP_HUfeoQ#vO2`ZhGH7}}~o{?in+`ap&FhJs_- z&CH?}J5qaQScI{uz79#KJ{sxqjpdZy88x3siK7ysE%R6k728y-JW^J7@@q`mty&WF zLFM3K(WD*;p9I<YyG}Q0FKq3WIO@(5aWF<r<I&NQ+I!!<w@zBKCh5)FIVA?Q@?Vea z(g_PsZ=WuH@ZX)nzxLA?YSy*HJ@Mw+6!3TIrC<C_DaRt&l8#O}m2_HLGIFw{&zun3 zGl?^Orl-!BIoTjBP1tb8j46-VQU%-hEIqPnJy(S{Pej6z)1roxc{UxL7N)~9os++* zHBsb*KWhc&<V8vSt}z@X%uDzTBiguLOmj+FE}(ZwwrR(d`6(->EMDq&o-Jat@PdSs zhROUa57^W+s~Ar5i6$Hq^GsUTkd%~|aOjMYy|dwTHv3?4W_D*j!5fF!FGg(eQGGG# zt(?#D$vTyyPbHR5Nja>{EOh9o55Lpmt{pw04+W2UoO~7H^`fIB!r+u)gh7HfoAQFA zGh}#V)cAPV*>rS#rtghc{S?dnD5*lnu=C<ui@>L;f8`SoR>t)|`DB~fy!>jR#jkzq z7wQMubw5}ZW^|fO*)TH2uvu6wB4UlR)}u+^dLn&hxT#J$+4>^&u#Tji<FvZu&Wrv{ zI_oDr+BCK0=hPC{n~?^`B2MdTJ)F*`@7#T{WR9_fb(*Y&mFAN}r?utUbaoULteX+5 zDyzmbSB6`Cr$xAH=hS8i&EtFDmrQSyXfryk`B8rLXS?KQpXP;Znz!|{ZU5P~W&7So zTkMuU{HoSJX?>+c!iiN!4dzcY3VAruV$DpW&I1Pys~IgkEE17&>f~V=AH%MbNvn>9 z_NY$Q?rC!?IA^HzAjv3I`Nmh<H8TqeQ%)W|^1_-;SbdFA;-P{W2foc0dhs?!c9&sE z-*u0dWjebhlZCIOA32s9=RWD-T#1KPvKFaRFKZt-RaGw&yYb=7`RR)v>{7mAw1@e` z@+aSFr0=|xpYV-Oz2$A3{KXqPPH(pM`4m}}dg;Wc4P{2DGYSv9ebA@RSt39C!B?3W z{Rq2P;jffVE9)5excLay^0j$3{?`5;u~8@D%*lz<(n1X<P7@1DQ=FL=mU7H1nJw9H zI@iSa###nCJ`!CgR^Bi=v?*C4&E*(Rq}OR}ov9Opev8QJuX5IW@z&LXudBy<NyL&8 ziN&gk+FetR29&LoZ9L)@Xf)C8m9VDbr8xGM11THB9g`xOB_q;|4E~g{)L&)N{u#1T z^Y0g-=HI6@TIwIjHzj$toKh3nu$tkZ0nd^XJw66Ad}bP^95dR?7AfX4Gi91&q)*D4 zjuS_xMI>vbY&x|eEi5wPV2@76DbALSY@RKrj)`_1*7WffNomtEk_;0$)iZUP#D<e? zMv=)Pr<EmE8l*hoT4*n;DDKtT$*mO8Geu&<(S$>h!Nwd1jMfAgOyh|-;w`3;%#bYF zEvn;V*cql1rp<9?Vq%-Y44#ypNM}i(lo>}8XNnv%2-BRR%w?qJk+ihqu;zqQ2Ern% z4rz03+H_2kb<!E1&{U(1Q&QSglBR_Q^Y9oXB^=gT*)4G->1fJ|GgBpXdXhFQ>}F<@ zNHFX=*cF!2vsz-!s!gdWM>eEvNEYl_t#z<1aI#utn55A$p45<&sbSorKCW$S5{I>Q zHYFW3Y&xx_I!#AsGS9+fNrTA}OOrLjBxXh!9W^>NW5zKz!=4Fe(zF(fwuD8@*yOY+ zC{g2NM6j@$YRZgFi#AS@>~zyQXxOURv09s3%yUArYS)YzVPVe9ViHMfQr09+NK8qJ z=+T_gvsz4yEizJBbuy1Z!ZBeTjZ=pb&LmFbnPId^EOfG3gwcjGX<-o?by7BMs&BIB z)0uLTCv@th!&+y2B6JedlGSt!5~rq|Ff>Rq@-Z?n+9Z*hv?l2ozKj!7s>x*14J zIoi|Ob6V-tX)$FnH%XtK$Z1B$4AYVh9XW7V<TPhbq>oRM#6g2Y$2?Pxq)v-ivuR_3 z(Z;sGo;HKiI;YH{HYJ=mk<>F&%_y<kAk8phGS|V$$~tYqY7s_8DTlRrW~^DWW|_gM zO^0<RPVJEl)|`=Y%wWUJ$dpv0!$ygdbv7IJoNnmTEDRP(;8}7ar7g5oQd?oeGOw9T z7BVss$vQJ<PD?uMIny}ew85FBhqVfIHl(H;?3r}v<jjekZQe#FyUs*TJX9Ey+H)%6 z%#F*E&Jt;^-C~i+Y(|=sRnHVAv$-W1Z91$v)3sall;FVwr;JildLlM!9@2VPU~tru z>rugGZk^ONnU!pX(>&W`G*5R<GdgW(=6NvixL8DFQo+I=b(!P_pGRkQXvWCMFj*uO f9_NxVNIJ0N(SyL_JRAQXy))5IL`8S;({~2|dR`Rf literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_073_states.bin.z b/client/resources/hardnested_tables/bitflip_0_073_states.bin.z deleted file mode 100644 index 552cff66cff82a6a15f9ad6b4136e32beee59d3f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15941 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 Hxo{2u^%TGh diff --git a/client/resources/hardnested_tables/bitflip_0_075_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_075_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..6c8258ae36a59af7e479ed9ecefe4b3d4ac976be GIT binary patch literal 12922 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 KG+O`3SOEY>3$BX* literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_075_states.bin.z b/client/resources/hardnested_tables/bitflip_0_075_states.bin.z deleted file mode 100644 index e37d90e2a4fdcfd8fea0537b6c9859f014e90648..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42790 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%0DBo|9`gQzYqWG_@@7NpUeO4|8srH|68A?|CRrB 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 BzlZ<; diff --git a/client/resources/hardnested_tables/bitflip_0_077_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_077_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..acaf1e210cf5da1b8b11e7e23d53fe909c4cc29d GIT binary patch literal 2916 zcmZ>Y%CIzaj8qGbY}9?WjN!U^9otQTMgi8FtOAUJ90E=a9Sjj%4`lZ<-~)`kh7xWw z7#IwfDRW$AU|=&jk|>qHz;J9vkFpN~gT!UQmdpkQh9#3a-6nhGsx@b&e3`fW<%ct& zUrw>5%$Yg;xBcp=&v;h-4+{U#^)&q9q%$*T97&zoW^6b^a^@7Hjj38cmMd+VvCJ)K zjgRKk2|Ycl^i{=zVy47DVbz}SOW{|0qhsAu#rVe}UDN9eR;`-B!2UxsRDx?&eU1qG zyY>&kBK4eUk^YzUj14v>CbPz*OiVh_7ddnKule7L>cjloc#Qs+|K6$ItvS{EFH`>o z=cf6K4$W*cm~rGVo205i(t(W~X%VM3b{zAZA{m*?*xIqlYadsEvuIO_PeVe4Q>wx0 zgGP%UwgnuTku0GtCTU>DwQ2cb&WTA!lT}+IJRizTIIK|<V#GLUvKF7v8t+MxnwE-x zl)Rn>)v8D=ZJ8gWebDvcG0E11Q(`)85fMf!r=+$;8qM_SnQ64)Sh7Mws!vix&x8X# zb~;9zLXCf<_7$9&e^}#b*FX82r`GH6xW?~Tm9#(MkiTZrrX#7pjW+W<J(@bD?wt6Q z`AfYg#&>J#EOXX2>{dxs{OYY0sk2H=TV>Vx3rjgqEq)Pl)G+vw>!T&!zgGyxKjiYN zzvwjOkMPT`WQCJWMn~3!8SyOh>{-Tfa$--{X@!$rYdQ_439D=j6a3BEt#oo)V6#@z zX&p6fg^hm<j_K)09M<vKSop_M{^W74|Be6Jx&DZM)i^QrZ=kkj#iqjwr#0I|+r&ct z-t;j#&Zqp{zUX6Z&>xK_i~h3l81;lHtv|9%<IpLu6G;Nc6sPw182E%qBsR`SsynPF z@yGCB>%(@=I+gt_Pb$?9PW*CwVthO2sfm9>g*Hw3+q6trG~r0{Bdw1riFJqOzuTB} zS|_lLU9117){#Cg8-p`Jhq)&$eCk^38gc6QpZ)EBY|iXVJ^rb(B4Sg-F~hGsXC&?U zWnvO5eb&rB`C-GOC!gn^?2AZkpRp&=zI;CODT`xC=NGpdN+caV-F}(h$ewG*(ZZG| zMIRoXlZbEcUq12oOnEl`L-nDGe+6P#>rSj`I+)_j{O4o6YK>;Mj8oCnLZf4@ZK|g< z{&<CH7W6A~^XyctVB?-D=h`PUW7W>Ym`0mb(=<=XDXXixcg8Q!Jo00;)|@!e9~+7y zj&^qKNeZ((X1}n_PA?|?i{XbfiDgDVb|(LnKk=`xe&dhHUuO6p{H--Fy!F(n)oS7| zj-H(6GpGN;laKyw#jj4DR@zf}H2L)LsfDT2BqDXzq(=56zx-I4dc0qK@}UnkHv4pJ zejWK(Ygte@UySGAV{JQ2Kf}7|%~L+kSO5O-nLS%gJ@=Onb@TZGf7P|WTm35W!_nyy z>mq8C4EubHC1*UIu7797(_=FG*2&9Rro{{E)fB(1IIcCrS*B3%%gHB?Cr{?s_~cmV zQRVIvr~kQMe)+Vf*0}w`sXg-|e$>j;hV%Cue)tt1IQj5#_BV!wljbj3^3PR%)1>)b zIvxi8Zy4hLUR2Vw|Iz#};>?*v|9PHU&MBJQ7GwNxhWoVCB>rFG|GTHGK5DZxPUO>c z(YU}Tea@|R#t&-?V+;~I`6UiZ9OUtdII1k#^_VSXvZO<;*P2#IrjtpLj-5JkJQ0WH ztnzPua712k%Cq3srou^^yIYU(_iLVU7iVp5O>8rmGtI&>T=U4mHZ=(ygG%+D563lU zR;=lZbe|GD=lRTe1qCOKQcg}yHQI5qu<Pj5N(;+raTOMEJewtpJD;l_pT=X9nsV~E z_Ke3e$)}QyCDUw-3eG&9bLPy>#AB7+JfDv91spjRtY>LybY@2Cq}0?j$@4aQW~?_n zE_f!r%f?4pTXAY@_u(U(4ps8=81WeOr1nIraZAc9?O9`Vn#X9dVnxMgJvNI?J5#$g zTc@c@&al|<P^Qv-YQkydLmQ1!XPllU6LGRFS>m{!TwGzr;dYJZt#OfRJgw8*^fjN# zg?CO&Fr1lmT1|6G`h1Dn#2Lq2E9Ry1%qyH}8Rv5>w9PMA%V$lq(WawC2X@*V)^m9p zTKTZBTW4C*)2_;A%BoX?MNak1I4u;%bJ}oD^68WFA~wr>n#q%LOiV||hv&IWs!{4Q zl}|mPr{cUNBSNR7N(OCm<1{*b>TBfEijVX3`4S%UCeMwrN$t1!{7E!4<VWyJL-(!- zHO4736{m(CIpy7QN=;;ko|=R<w=$1p%E?JHW*D40n5=c8CroG4VM)nw9iI&+Qz!P! zICP?C@xdQn{av0(s;NJeYSkjeIG<{KGIIVf@rO9;M~!`}WLDN{{93VoiM-dN_3PCq zEx!_eDDcCoU(+x2tHcP#i+TKTOcmE*(+R2xiDaKNS)?eW;AqMk&DNsTtuh`@)ir~U zOjiwy^x1S|X6VGEeeJ5^2ag#}JbW}MB3O*$K&sCs&F7aNJw20t^i<*0shy`KjUKk? z=~+B&o))vlV$F<oA^Wr+r6wfnNSyD}Uw)<F_&gh<$45@{H|ux(*ccZU@$}H)M;|^s zzs$2tf9aRnc<(m;6?@pc#o2pSOUURf6F$}TYxRqS)5@wJl6L59Oq@6)vDs+frdsb8 zCsU0ibOa|R8FtKzk1+i3#8Q2lUW`$XVV~VR9(nIqpEiB0uvnLHSgf)}EwHD@u+3Y4 zaZ8O+Ldw3WPm|UxOIqf$G-YLLl25nR(UucND-(?jHb(k{Cb@aDY;e<x55H3DzbxtF zqaVrr>zAHi^jPNk;qx}1PwOvOEc9rm;-NzA38ywJSMJ*3-DMH3awyeZwSXt|q|sp= z$;8P#DLV}(oVG}KEb`Rj!IM7?T=A)*_MCwY`fY4#hFxtup`Bf;MSH|lmT9JF95iBW zNb=S+RBhA|Q*3N(I&hdHX36xcPM=oV1bqyOnL15Jk}aY~k|&H?XT>4UX(~rkBQ`Ou zSBkMriA?Ed6M5L$CeBlExLMUA)Fw<KQuELuiNwUInnw)-Q`$5RrK~uzW>t#8ve4Gh zNs)qGo7SnfiD?T~YS=6_m|=LNkXtM1uw=+F_ilcksf7{!T1P&lDo@&RVnb>~Lb6uT z(nm*5Huh}T<kQVLwdLuwNTZ{XGmaVUOx25!`FOmi(#PGvVus-)_eXyWduH})C|j&K z*ya*1(s|rSV$ITS&S^aR7A%tq=Gr(R$^D8U<42_fdy)=w^DLMd7GyMKeyHapG0h~; z+JH?VNizi>bM`p)gdEdYX0&SYE3aQ+T1FdsHiciDwBh7ro`@M~VUle|o7Idqok;AG zi7=WOmTH;kV`21k(qS<PgVSu1sfWcSPIt45c@-JWNYS1au_>r1VNGJsG)a{+p=Xwb z`53L%me_Q1vSh+(ooR-hJqBxh7CoG@F?A-7rKMQnWXZn7nLg)2XBr#M*w`&`P9|JT z^^C;nN6im;HmiwotENP%g|^B+KYmzQCw0=ADG?i|rOr$iZPPk)vMr+JPn|GZq~WxP zBJD#f&iM4qOkoyg7S=e}CZY6ck8tP12`3v*obn4=vtrG%h>bI581<x1?VLJkS>&XY z)R|mH8p%3mPV3B+I-PRNakA)Swur-`=XDP2EHg@N))v-zvb<Gt!l{i0Nt*>uD;8Bu z7e3i_TD4nSnP+3N#L>xW-kRM8M@}YveEL|-`%GbFn#2!Hd!db!&a9SX{jurP#>B+F zlSMOj6g^3tVvu05@~iiUHPa*|6T`Gl8O?M{Wq-8J>yPJCb;XGfE1vYLIaW+=wQ-*$ z!(r(Yniw&eS#;8oHK`M)`1AywG78pj{^;?C@$ghXt#z$m?bd9vXMa$!$DmR|M#iVo zE?|E9!=B(J@$HwAC1)HnOilAyvsohXs^dDto@DRi2U|Zde12@K^FZ0MK&|+E<9r62 TA4mUxELRC`<>U~$mz4kjc&02! literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_077_states.bin.z b/client/resources/hardnested_tables/bitflip_0_077_states.bin.z deleted file mode 100644 index f03f0bba6af590cc5c2cf4e440c0e7223b9da54d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23984 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 diff --git a/client/resources/hardnested_tables/bitflip_0_079_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_079_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..427506dd8b39649f2ae16f379ad4bf45d5f741e6 GIT binary patch literal 2400 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 E06Ef1V*mgE literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_079_states.bin.z b/client/resources/hardnested_tables/bitflip_0_079_states.bin.z deleted file mode 100644 index b05646ac516c6d2cbbd052571caeea594f2f08e3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18851 zcmb=p_4cl3*=vglD<0n36uw~Y6|Z|nHrJ&p_}KH8N&UF9MRj5lvp{Uke}$>ng;*IG zSr$2d{{Qd$|NrM77w)$Impp6v&yN%9-|N@EyZ<@+{-!VAwNKUCyqdQD->duCfA{aR zuRnbK`}@}>&sYC{yKnuUt@*dA{*|2%{%`wqvi;BR8vmtwLjH&Rjo<zE`=5FHADgEC zwXc0Yv1*O&{^#$H?f)oW`^SBq{qO&G7ybSfS5-gD-q!wX=6QR$wKnp1|5xYl5C3gH z{m<<!|Ih#ZcfTw$e}Db|+?D_5&y+9PcmL6!`e)z$i|4=1|F``A?MwfE&f9<Y``@~c z_Mhvo{G9*iWc(ldZU4geeLA{7>DvA+`)36Ie^+Ve{@4Dha_Il>Q~s~M`oHM8an!5& z#Yg@huZ;V%e9Ql!>OXV8{*TJsFE;P|^#7CpFZqAt|F!>Lw*Fgw{oD3`=YQEhzW;0g zieLIwf5QLx|MCB$pZ7=q>Ob$Tx3iwt_tt;g|7ZV?{$H#2|LOl4FZk8|XZQcBRr`<r z^}qP2zWV>(l>FuE{^y<lxBdV5fBPTrzyELljgR%O|4%*tFa7^%FnnFF{ObSG_u2t< z55L}jRR2U?{r~xY#{W**Py54oWa*cx`zC*{&-*`9>VJOhzlo>LU;W>A=D)-4zyGWL zUY+#MKDh4vFL{Q9f9v1=|C;fC_J76;|9xNFe|PQw<o!SA|2g{q=>4Pr85hL<RsV0i z>97C4XZ0QbH~jCdXK+aQfBu*K&w7S0^|OENfAcr|;-mU!|F7Nd|8ukc(f>#P85I5( z`TURmzq;nL{fqj4^MBYgH2gpQFa1CBg8xVVANl{q{*(E?lkxwh-T&o(JbCClzsCOK zpO#x*|2zHs_tYm^@qhcT{r_Hl`riMNJ%66&->RycRXlC~H1+8H|DP8Bd~$#KpU>0d zz5id|SHI`m?|1e8YW`on_V?@0+xy@At<L^x8MS}y^Wgpa!~WZU|MTxF|JLXGZGOG} z`rW^H>$m+C|1W3!>i>KGf9Su!-}PtDTi*XaKR)>H`mguT{+D+Azpd_n)%kDrYd*cK z|0w^_{!_oy|K$IY|DX8(TYKzz_FnnB|Nh*uyF5qx-_7*@`}h6JeEPoMfBCceqNo3} zZpI&fz5mX>`SI63+rK^f|Mac@YoGmJbo2kS`q%rjo~@7m{D1M2|2OM5zP10QU-ozH z|H<{%&;RQl-5qqz{_eZXZ~w1--d?@$XZ@_=pY?Bl{?G0CA9u|@`oH>r`)j|Zn?0&u z`e%L2$K{)U%D?`<_J98Af3|7=pGN(U*Z!~luiot6eD(kF$Nx?L&)%@-<N3``|6i<c zJ^#OQ_5RQCC+sKu5uAJDd%fg;28Mt4KmPf=;@kgw_b1N#&&u%2e*V9`d4IE~{FwjK z{@5S?e^2!P`Tu|3`9G@u<)8n_fA9aBf9>1<BUb-U{)+$oKl_{g@BeTAZ~uS)-~WBb z+W-Fl_J8yL_AUSC{+HcT^Sl0BkNxxi(*Mu>zy9Ct_J93<>i^XLndkjkzwPh!U;pYK z&;M(`>9793#s6Nd|M#xGbM60=@qgAY{k=ch^1n&kpYuQW-~L(o{C}M7zv_$i=l;Kq z{=f16+WK(2-}C?K|3CR}`v2ws@BY{O=l(D7)BiX2kLUlH`=4JyN&WHh<~jc-RsAdZ z|J>f{zjgi3bN}7sE&iYVxu1dIUwr2O^`XD-|KV@=w_f<acIm(Wrl0-&KgxfufAcf` z4+P3HfPvs=`|HR5|5~;Ghdjft`kp`hXZ~;eE&p@#e+CAI1OKg)|9`Ler~1==d;H7a z`>j_0U-z4R(ft2b=l+TR;s@&o5f1Zz{(tdx`+pV?2ZT@jU-3Wa-|?UJ498B_TmSd{ zC(m%;zv2JS{~0d)|D*rO{QviB|4+pKfjVLFr<(gG?|qHGJm>Yl?&rUQil*xSs}K3N z|Lv~l|K?}PJ^eTT@z?lw>GN+t{l4?tul>L4UtPQZ*S=%*|M>m-{r_VB-&M)`Xa0Y( z{ZD2F28TcUYyPY(`}w5)*#GFy>A$l77yr8-bk^Sf|IPoebN@U&{r_bBr~ix~M}qK# z$@|XzpZtG+)W7Y&_np_T&1?A^|NPT``}?2o|9ao|t={s#{`0J+Er07lib1$%(*JI` z|LhH6pYCh^eE#vZ|9@tNANJ4cKif0>+AsJw`|tjr_y73+djtwTkoqJ4`H${j`(OA! ztHb}(pu%PU_kZsH-q?fW{?z}I|Bn=kXa2nZ`1Snx?`yB`_&?{*{M+we|1ReKw`c#H z=kM14jeos4_W#paIkxs^*M9r2eXM@{bNOp4>SO<MgN$Nm*tk-*UgZD#z<-x*y#8!2 z`&)l%{<A$#mmm3`{ItIBdcE%d&&tQsEAyV$ANim7@B07WC+koD@1OEN{lDw>{{qsl z|DX8Z^MCu3=U-O;??3zh@|@HEv(NwUH~Y8dKl9&s?SJ97|2KX8Kk@JX7vDfdnnK>c z=cfM*&OU#{e|`G?uep_v-akF1UjK>xR#$yq@Bh{B>rMVKGOS4a@Bew<clWLTm+$QV z#@ul6OTFe_?SJY2`fWh5)&0Ny+W&>$_phiw_p$!(kKnp{pR(8guZ}gJp8o&nHJi;L z|8M`j{A=&pKi9wg+Q0Tw@ss<%CjWQ(JwK{`=ifhX=jH$XY4N-M+Oz%XzrTL;_`H7m zzWQ08r~R*pdHTQK^8cQ%|9k8A?_YLm|FnPiqyMk{_xWe(ZrkYB|F_;>Z~Lz*-~N~X z&*g9SANn1C{LcS7m;c>g{Li2B_y3;%o4@{1|6PA}-pS1W?|<(8c>mas^)KtU2h_>@ zef~%Nqdf>d|9@rU|E$~b$LxR4|9k#l=)O<M)8&KzZx6QnIk`Uf@8^muwg3Nq&wtwg z*>3*6Sw{80<IldG_uO>r-|74Gm&#S&uFU;&|K0KW|I44xe=NLye)jhN*Jc0LzTAKB zw*97mkL!<|t3UmJ^Z%Rwb6?z#dTjsePx?Re|3^>#zx4k}{hEL2PtX5L{@?k3a((De z>rx(vr9TR){%p1VZ*2PS{;ogDQ{Vr|ce(c8^h>z+um3(j_r9)YX!yB*+yCo}|K|T= zcliH(WqtPgdd2$BpbEEpfA@c82g^JEAN>>mRQ})mNd2Yj^S`CnOM?o``M={A-~G>} zu;risuK(|){_d}5+wtPx{tw^nuTT5`^4s~E|EcqS?!Ws-|F{0Ozv}<||L?93{CTQB za^LUzJO6`&|GoQP_<!r~^{=PT|26B@zpcmPv;Jmnpa0SQ|Hb-K@8AAo{4T%g|IPo$ z_J3Uer{gcEeQ^Fy{y+17z4edp|IoMp#~AT{cYf^k8L#cv{_oZO|M#oB@4t?7&woGf zn*TrluRQ}p>zn%D^^1PhGaUI3fsc;<zfph8{^#cZj3@q2Irsm{w*Nur=fC^^=XmnZ z?HWJrKiexEub=Z@{XaiL$Fu)a_w3(t_ILf9|NIVr*8BZgf92=@clF!;*>C$FfBoO; z`Sqgz?StyS*LVGA2Ia2?#ZUVi&&^l+fB(AF^ZK%||7V`}Z!`V3==J_DIc?wA|K30U z^Sr_T+5b=4ulvKuz@YH&f5nyF|LRlffBfP9RG+th|LeWVKkKVs*I)aez4gEQcl)RI z@G{6C>z{ejzurI7<G<I{P5HC_Z~d2ety|EtkwM|V`agb#wJ-KdeXsu-TK@}Dl7bs7 zU-W;@{{P$Vzu$lH|LhDK>b;)SXWfo}WB=)Sebc}2eINN59{m6N=l=cQ1$FPIC;s1l zsg7Yn@P9kG(y#R=@9Y1&zWq=9E&J1d%WZG^zp?)||Hu9x_6#TXU$L&g{>%UG`9J(0 z5$zZA*WmWciTMA@^^fQO`MQ7CnxpF1?f<_lKK}ZDO?+0{C;oN+gZ?l5w0vjY->LE2 z{_Ma1`|IAd`q$oB+Qt8We*N*^`qw|VR?nP%+Wy|Z==1M?TmQU1@&CkM^QYF&{`LRW z*U!=C*I)hr^Y8cf_TT>e{$aKI-~U^`uSaYAfBk#&pZ)u;|NcFz=G&L~w`>3Zh+cK_ z+UM=RCw|<&hX2~{`_HeheV@Pm|8>d#PoM2yU01LFRzCLs#{WO}zp6j-Uo-Ll^zZu@ z{i=8WZa?kf{;hxKpZHcE`7=J)?yvqo=l_%U|B(NE{)c+~C;P1bOODEaKVF}G-2P^L z=Eu{k@2!`upZ!eYJ*bUy^nCWs`qMv`->;hc`|t1g+ui@)Z~TA#mhsX5`P%=*Pyg$; z`+xd>&eQ$zpRexx^ndNI|DdXR|BY|*f5ms#y#Al`eE+xK_S=8|{90dq>;Kk2BERd` z&inni-u?CTckJ69{oii*FZ$&F<1zo$|I4fXyPfq%|Lp%;-@@<L*Wdb6Z1z9-@BXj< zb8qZ_{$_vnvHG2VR{!`P_%~eXU;Wm<`v3VED!=+~`_w&mf6(rlPwMpx<Tk$lZ}g9m z;m>~KpQjDq{?B~3_%B0($=`Ud|6TuQ{#QN^YSKOWzwqn+zwaNu&j0Uw<x}?i|9K_< z_kZ2r`XvAVeo*V?_W%6<_0fOt|NDRA{pS76xBj2|uNU>-?fd`R|0m!5SN?DR=l^s6 z-=Fnw^Z$5o)BgP5`K536mwo^5F8%+_{}bQsHR6As>W|*{JO0jp=YNmt*WURb`~A=5 zj*s@w|6BdvKKJAO?tjvs|J=9u)&DpD@9tlq((coL5Da|2|Hk+IyZ>8m`?L7{|3pwh zxBv5h#v_kX{!~o(91qFR?$7J3|4RoJ{+s=|9^}(Y|KeAF+y7IZ;cvY9zi_|**XGur z`Twl`aXh%G1I<Yi`v0zn|2_JjfoJvq$>-vC?EB;Uw;Gf^*K7aZ_sag>A5gi<2x>um z@A-TG@z3c`{{N18{BQlaSMz`VV|?8IZ!xS+XJBA>a=zYeef^QIa3P0(?th=wGq{|o zxBlP%kDcK|{joX!=l<tv`1k(Y|Du2Uf6o7pXcZi&|Gx80Z~edS{HMF>AN|}nCFW`O zfBC8Z^LN+P=GWKFa^Ly?dBxx9zi&P-`&qkg@4xxQf1hi7|378Tf6=Fx>t8tk-(MFm z_jmWd-JW;;<o^TJy9^8sKk9$}2!8wNB&Z&LcK*xtf6xEyUplM4?%(GB*Khwg4eFsi zffQz-0!=}^cJ6=m|Mgq{<bSW7AOGtP$M5~;p8l`j_k91?`?7EU7yXMrca<gcH{62~ zs{h4pK_$_X{lTBkKfXR6>`72CGkmF6{&oFV{bxweiIE}0;(ze%f9d}x?*AeGqW&qk zHo5<JW1T(M@Bf!SUyfP#mqB6GKmWgfL0zX=f04RQL1F*h<NvGwPyfgM_xyk1|LhDO z{@?ijrk>%;{vY#y%>U>9@0k71*Y(OL|LfXC{`eR8^n1j=ThIHx|9}3wsCer7f9|jU z|K1z@UEaQaU(L_c_qTlgWAa?5Ue|wH-T%+eKb_pK|MR*2{%QaASN;8S?eo_A`=9;$ z8uz}w{{8;<Z@*{md6MzJ_;LRI&%clVzxXTHcK)xwTYvrE`TYC(`W3eSpI(e#zrTLg z>aG8e{+{o4x&BT4zxAK`Z~f1%JNNV7|39-{)vx`Z_wPQ(ukCaG3!nej9||gBltIn* z$MxW5`^o)Rf7Gn~zWDb1`M1+&6(6<#{pSDm>-KB^{Qday${+uAf8uq2zpnT@{r30I zudDto-}|FJ^7sC$f8tGk-~W^UH~j3M((HfrQ~ub4s$2K}N7wEDTK_2@6vq|er+zKJ zZF~0Leb7*X`G5anz5nZN|L^bpc>naT^w<BN{68M`|B~CE^;7;&)&5rkD^PCkKmKNa z%<KQzPwS8VKY#51=O_PP-}wIt8sQy|_rB^gU%CJDKf{avO27W={tx`~C;yZA|KoH2 zpPc`foq>Vj-~DOqw&(t_f2#lX+H3y*i;;ib?f)<S@bCG?NAkAs{<DFS83-SUxbyDq z6#f74@&BU#K73yp`}cYM=ehPjzW>=6_rCt>|KM=pC3pWrnz0NF2Q+@}fAO)NAw%{5 z+)4Fv`~Q6b^`MjgnS*-J(iit%`#<~t+5b=U|3Mqh3Ks9`OaE&#{Mvu)*Zb@*>;Kg2 zf0EDp_x{U2=Wp`AL5lwDPyV+5_xkFo|F8Z1y8cs?-Sd6-f8YOpy?*EX+PvxapGUp^ zzxBBNUw1^WfZ>Geo6rB>BC6<5_KQ=E?)>LaPy_WAK&kS~|3CH&U+Ovkp8s$3|1+pd zC!ewOzyIf*AM2O>*N*>rYJL2_xBp)Lc@$o)dH?5m_tWvem#uxC|9#tO_4-fi*VZq( zE&uXf%Ko?if9?AI+46Y3S9Ol<{;%ba@Biqx`FC~x|BwIvMAekcO16=|{(tw~`M2M{ z|6Tv~f6Uwav;NlaUjFyrrMJ@`|1|#WeC~Vnod1{W>f^!VI?)&ZFa5e6)TjLf>C?(v z|C_$+-}0%S`q%6as{gkBQ~&Sooqx8e{;gj2Ki{@~cl`W%udDxckNjW!?7v)p&ENbv zKiB*HvEBNoX21QtKcBz;-TBw+N4@En|Mz|^Keqng*8BVaZ@c?{@$>sn>~G%R_~yUZ zC;hE&<X`_^^MCWd^FOx#(=YpHp9LH5N&EA@EI<9v^;7@d<o>^@|F-|r)b%y5>(~C@ z^l$o~qyN43-+%OP`HGMK7q7Sc^k4Vp|8M_8W&VHrZ@PHC^0EKSzvZv(XI~3yV(b6c z|DXS_-}Zm*Q+w|h|D%4^|D3<$)Aax8pxWX8g-_-GSsJ`PKK$|{yZT>x)}Q^QKi#$V zyZvXr_4fbu*XyT!`9Jeh_4WS@44><B|F3t4bc^2y|GyUZ-|648`cLBj#p}iYvp1A| zo&V?jiEs8lXa86Hcle+AKSqX$f9*l}hmqyt|MvI%ySM#$UBCZF{QXb$ng6@b*GpOd zKmD(J??2~1@qhRm{`gP%)BSb-Df9o$|DONv1oaE+-_(DzXZQuKBVi4v!YBX5=HDs( zf5PPXuKEW*_qFgmm5=$q^q==r|Khv9wD;%ytlwXL{;z-b_c?Rc|Ns2@<G=l1|J>TE zbNZ=#{{OYlzyF>4=k<yI9)HiD+VA_f{_C%wYoA|#_5aVm-{0k{|JByajs0)`@9+8e z`}3dvulavH?DxC(_NDLsM@#=d{VQSb|Ju5{zy6i|uAlocKJVY|SKq&1`gifG{O|ey zSO0VWGhgUiedT}cRsX|(|NCqPZ7W^h_kY$u@&AJVh5vWMhJ^k<@3nu||NmNF{igqy z9!(G58*ly3?5yEE|Fi#}bj`oM>HoCP{`<dLegFM^|2Fae_mlsx-<sa_|9;p%{b_&Y zYyVCEfAduR{%5O;pZ<^jiaa*-^V<KT=jz{nuh0Ab`St&ATmEPN)cp28%J%#5|9#i= z@ABsy{hy!wXZxi8{X75p|Fie{v;FFi_*wtAzFoiX|GzCipXdBL{;U4=|Jxht&)=-S z-t)icXZXkei+`<m`SU;Pcl<wjhEKoj(@+0@{9k0>|CbqmzfYC_`bYee`Ts@we#h>! z?fifK2PkXz9iQ*M_5b&OeP8~tGhF!p^UM3v-~SgK`G4lW;j{Wr>h&M%f7$#0*?#4h z_tWVAtNvNOs;~S1{nB?)i~5|>zi*#EUv3%v*MI&0TAN$<{s+7N+j*=0{^z$}_lJG` zZ^B-C|7ZX5e{<peq4=BM^=<wi{;4i`s{Ehi@BeH5ik|+Td;Z_MqyNhPh4cMC|3kj; z&-aRd?q@zNK3)$RKs@sQ(Xszox9i`|`Jeq~^Z&X3wLv3G`u{g?jXV9<KlvpnJs1C5 z|6~5=|BL4SfBxtGlwZ$Z|3CS5{`1P`|3B3~i9ZAxL#^NR|LOmi|2=-zf3*M9Kj(is zXs}QI*uU~u5)EJe+*f$Mf5|-iyZ?XopZk9<e&6T)7unC%7yr{|X!sv~>worDNO}DF z$bYZ7|Lf2Gxg7lG_#gS|f8zfk5L7=fFgP6fbN=hc{rg_&|6_0XC$IdU`E&gn*zm`P z|L1P}x1Cq-`S1MO@L!;I*8bQ38ecr$-?#aH>pyU>3sieBTuA?CU-cKIFn+av%KyTD z{0$#J-9J}98PrOshm^<m|GWR3{lE9C{U=b52&DbM3Y+`oo67%QH+jD6KT1>U-Om5% z7%i>$|K{)dTK=E^(X0R0-=AJwf4$zk6I|c;|6^ca5csbzU%x8W?&tiE|F8X-`R~^M zIsdnZd_I4^{@ed5>H43a>Oal@10O14c(P>u=l@Usub=k+?Y{S)z2{3O{=dHS&;Rq^ z|7`!ad-31+bN^58oTZTaAKE}=U|9U*|Dxmn85d0bQ||Sz^3Si!pniD&Pw+TizRUlp z|M{SCE>JfO<TVC{kN=%N=D+@bq@MA@|4;v)<o|oW_y0tDaHYrafBygDh~^%Hfbsw8 zn!lev*S<D=XRrSM`M2M{{@rP^f3N?1=kM(Q*MH?)uivQ_ecr!#_22(pAMd~Z*>3tO zKKwru*rJ4-tmE=W|5s1>Z_+RHe{Jml`Ja|s=Ks|E_&?$&Xl(BE|34=_M$WtaQ~qQ9 zjQ?N%*L}MG>A&*R|2OL|zO_Gc?3eu~`^W!ve_H;1^*{OZf0O5*{@?oie{rw<>;De_ zuXp{w`fY#0-};pQ_PhRq`nnyn|5x_f`+VN{<M7v~`L)sWepK)LbaMWm#%+)0M?e1m z>bHDvJp)75jsKVTy#E`Br-xJj;;;Uz`Ne<Y?f*@gzx~gx*Z<?LpM83>exvDmovZ)L z{%@(v*Z#kC@4x)je`J1c|Mz77g@4Ph#pl`A?|vR#Z+GtB{H;IV->j>(x%B7t+V`N* zG<&)5pZ}B3+2{YQe|-P_`jwy7Fa7`hTK($(HFbCM&R_dg|Mq)!|NeWo`~L<1)BL^u z!@ui>-|fF|`Tu>z|KLOa>>vNnvHgGYU;O6uqFeu~|K<JJZul?z*L~e7^6vjF|9e7u zQa|lW-|WBjZTiRa|I+_&uAjR8&yA<Yul#>I#sA-v_~`#Oa;5j{|No8t`FPLy<?EN7 zx&JS`c=z*4-`xL8-+Qk-ey=P}`v3OdAMgKv`SbaYBd?#|di%fhczyh@_20ksulfH& ze&gr+pFnkSz4Wi`*M9Wd{h#^&Z2iVh`@h)#lwbWn^5^FNH|ih#e-a=1&rg;)K+|rH zTz&5O|31C{x9k1)cxwG$dg9l5UR*OMwXg2qdL4fPG64GM{iFX30es*0@A%*P=k9;r zkMqBLUH<px{bTkF4ga72yPolVKNH8=|C8VS-|hDQ{d`8fUH|p}{5`+*Y5lIh#`o)I zrvJ+~2i32+|2zL*{{JpMWZ$RcY488ZfB%1F%KqQ=ck18%d;RO_@_oy;)xZ5XJ!=20 zx9NW_)_<A*sd{()fxqpb_QuEjKic+5|Aqex|2O_W`#*SS$^75x{(6RM|KCMlH+}ZY z|8;%x>H7M=?vw2oeg64x=cDKUqyO_WI4J(U|8M?^fAS2V@xG7tANN;$wEs5$qyN7* z^$efvmwvY2`gZ@7&&z+?|Nj{APuJ_;`9J+9KFUA;fAT*w!=j({s_*r4KmU_|{-0Uk z|7!36{Qlqb*Z%K+`~UjZ|F53MAN}8d<^JFK&{5)qjz9SeJ}*D{|NGWsKj+WAYXAA? z;@sZ-FMjFU&R+P}@&EVYf5xDW)~9}LP~p<?-(Ift@qf;z@^=55LBquFtKNJ3yMOQ3 z{ICC`-u}P%*Z-$KINO4Vo>~8UXVfeIe|mlIe0kOX+5hGLPVf2#DV`Y^PJr4e4%)xg zANw0$dlk7$XaCpx-?RVw&hNkc|LA{4hBxzte$K!3P5gKNpP%y={GXcthne9=z5W01 z-|gny|DAf{|Jp6`3{S4??{|;=8~^Eh_y4cD|EGUDU-UoL|C{jd{=e$~Kn?a!`d`o8 z-}*23zwv+PKl8x@TMzzk{D1Zr!wXO?bp8K{`#;p{|E|}|{&@21`TAdXKK`=5KYiB1 zKh3ZAU#VaDCv#nN{nP2X|KESFtIdDiy|udU{Pq7ozgGOeUsd-u?%C5%{oDUv`~3T# z-@no)^-KPxKfS*U+SkkeT3`47@9%!w|91P%t^2?K+rO`3r~d!?r}KaP`>+4@sm-_j z`@HPF{l95ho4)>eTbJ@j|8?`%f8T$WzW#mt?f=qa^*evQUv>Y!_iy*>;GW+v`H%Hp zH~v5UyMD#L`xpQAr+&%L{ja|1Z+zIl>r?#ycmKZt>Y^M6%}37v(|^l8^W*WqAMfA# z=>IJ~>d&WD-?NY3UuJpi_sXC1V?KV4`gXtQ-^=ZB&+GpGyZ-Ib|LQmYw|?{a`2Y5) z|3^3dUwr=mC;RB1@2}UCuKQEJ8o3XscmLP^8$Z|o{dfLtUESaN^S;&V+8_NFzxw&V zANMc*TKc<j?GMm&TG*%mhS&d}{O{iRf1A{Q@6Y?U{k{7A{(Q6lbI$&c_@Do`Ui#a6 z%ir&3eT>)pul27!<p0!;|M9v1Pyc6ji2MIM=V$$&`G>yS%dY*u@6+OWpf+>-m!l_t z+*bJhA3C%413t6H0G(O;ACED!HZ7`tWzFmOtM=}H&%gg4_iG>1^ZvE#_W%9!$0U8# z|Ce9)_q*TzUH|HYefaP9)%*7TyT0n*{AUZ^TmS!fWq<JP{oj6guZ@5EP5bx1*5~yW z|5coSp0iK>KY#1~q@VlW-n_r}#{YBwPd)rE`Cqy3zufu%9g%fkeyj%#8vKaA^CLd@ z_xib?!L!bv>yOr7iU0ewe%rO|o&Pg+{`&uWRDbTj=>Ot>@moIspYwlq(Epmh_B;Q6 zwt4?2{$Kwe?;W3R{(n>d)BoH4KlXp+HUI1XbN@H-Gh{CA@Qwd|vdk0a{g;07XF8-n zxcKw_&(r1q%zqvDnSbs-E5nEXUcc+t-unLxG-o{bNBqjq|JTo~uj=|g<A3t`|DZWz z5C-K{28NCq|99F!hp8_7PkvIL@UQ>w{}ZtOw&d^q$3N?z{J-<B*Zu!jBmb7)wHNsN z=X&9{{TDz51H=r5UuXWiuiyVy9m-_@4NXn|WPk2Iqe0xi+duO`UHpIjKj;5vZ}|7T ze&YV0`?vpdhtF6^Onv^_Yulsn|MzA-i}@aZMQ{F}`dk0MmcD;po&O&+4_6NwzOC;4 zw|~n28(Q^We%E_lv#<KCyy@Tiwe=_O|B<i!r~d!NH&C1A(a-w&H^*at?_b~dUwumc z-~XCF|8IMJ|DV9o|JFhOH~)*D{nviif6f1#FqbxL%=q}n{&)PT?f+lDzIXony?^zu zH<$nYeo1}Xy#04?-}(Ra&;B{9Ik$jk&lngO9RB(Lk!QGdp?)R$RNVZ3s`a1i?|;Al z0yHPj@Xf#TkALp(?!WH;{`g<`e+tyM`?LRe^4~g*Z}r-5*%@YjdH-l{+ES!}@&6zG z_J@DjKkr%nxA>gj{-7=%!*Bbff2zNJ*@Na1@J{Y~{u?d921f}7PFf0Vm5==oLkF|E zzuN!J2DPKX^TiCVZ|*<%Eq~(w#}(!O;>*9vfBv(7!|VRH=)+g>kN;SIim$u-`{%ve z```Uc&Yk<;<NwliY8OEL0<a}N?LXEtWH|p{`fUF3_4a>3lP@#=pZ(A9qW;(PKWG2{ zeOIqg{}Gl=l^^~K2ep4z|2Mw(f4cX7wI}!Q{J%c+Pxb2m8K3Qc_k#!6KHe`z3|wW; zmp}UdZv6kJ|F(bqvv0q2{TF$#BCy>I4|MdO-+vqR-`-En@YgSxEes0(AOB1LDbHZ| z`Tn{8i~ln+eEc)t@cMtt|Dp_k<E{QZ|5N`l{-6DC|3C6CV*k&7`9FM0eagS^`mf>t z??2za@B0n!pXciL-K~%RK4t$m-{|xA-&MZazr5y?`hU5n_FaDiSN~i2Yk%4A_djjx zk7u9zRsZXr^4Ey!y7TvY>mS?y`q3X#|LwoY`|f_f&-;Gd-1%I-KWtwAyZ?K)-(UTA zzW2Y}TmPTe{m<XMW;<w9>B|4}XZS7e=NJC7|NMLT&hy{Q|6l%}`|^Ly`TOsF*X;+5 zX}yAuX+?tu*dE0jzK*{Ye`aO<cboZ(|IL3jan=9oQ~$5Ns^9rpQupirz(@Zd+vxub zzE!`{_TRZ*^=r4pbDw_>n*P63|EB(R{jaG1m$QFI|4;ur|6~5&_>jNiw*R!jOE<*L z|4q;Ozw}n_*3bKo+5e9J7yrlo@74H!$A7Kw_%;8}(f?U{K?7GAANTM5AGc|H@b&ub z>Hly4Pyc`a<Nf^q@o#?Y|N8$_`v1-UpMv4n{eoZrU-~YpvH!!b{EzmZ`X@vB+V&g% z+_h(15L9Dv_kR|miM<=t#Qs0?&qoie^S9;;>vu>02Q5e<X58w+|J+yqH+_$H?fyUW ze{{b6C(w{t_kZSwKc@}<=Ko#)>Foan|9{ql+M)mCf6xER-|$cTzwrOd(1uvP%+LKt z)w%E6FZd&OdOoN+u)9Bf;_8~O_EG=uzt^q)fBEC5>H9NZ|I9oW`7df-&fkC2&p(}9 zAOGome4Xy!_}~9N-g>|L|Ig2V!=t}nf1dw;)A#pluRhQCyKSET-+xhm|KIui`?~#= zdH+AXSbzP#{n@Lx{y+Nbzxbv7H~atLKi%K{H?@CW^S{2%_v`*^_2&QcS^nPs_4l>y z?f)B3E&qSC{>c9m_E~@W|EB+$Z2xn+)co~d>q>rqF8=LPyzWQ({J;Ny{aQYCzrEeu zS^rN?{l7Z3UUvQeqTh9OvFHD95&y5B{eSzc|J`Z-Xa8UOf7Q(Wd1wFkPx_z!|LC^= zFZSQ~y8WO3zqfP#Zx?y*75Tqp_wt+nL8<@ev;Udrp8ntZ95iKD9r-`!@BBaiBVNbf z>i9qP)Bd8P^Upo2U-N(azx}$uzt8wPJ^OF{+CS@m{J;65e%_yYS;z>~G5hn={=5Gd zwfp~k?Z0#NivJxxxtAo}|DOtOQ6K+&e(|mU)%EUG|HK(y{IB`-eb?9ZfuMO3iO=>w zC-47Z|98InzwEzDKmYIlTK~H~>h^!(*MHPs*T4P0{^tKT;3Z1+zyJT1lK=Mq_W$$$ z<S+dz|5yIu)7$@+#{cI0&;MinKmNaT?tk!f%8&ayKJLHuE&lcI|Go9!{-5{;S&;W@ z_kY!G|J3V0?w|JVf8NtSmn%Tic6raA&;4Kh^~ZbH|Cax^=l?zaZ~MR4pKn0x_|$*L z|C|4>{QvGB@;}{A{@?t+r~Xs<Kl_G`IX&|HMgP2C{k;5l{{I($-v0r0AZs7|F@OG_ ziQz~6(!cw|-a=N+Kqla?pRu<+T7TyM#^?1Pp%7BMxt#eQBme*P>VJ>w8D9K1{A6$N z|M<K5C+ES#ME~Ez=Iid%Eq(w0)tZ01-^q8>{d;ZkJN^Z%sldR%Q2Xrv;_LVS2}6uz zU{LtK_@DPr`RD%`B=rBk{bT;Ko`K>2@jvJPGdukMy#K`gKlh{mE5nQIo>QM|)vK@9 z`xdYJtv~O*_sP(GKmG@T8Z`5M*DtG_@*A|u20Ei~>-GP4|5rxWfB&zr?qB`ieKx<! z|CUeQ0bUvOgr5O4aP#To@>@?Q|Cjuqe|G-M^?%R*toJtk|L0Ho|MlBHPS^jh{{Q5E zSSO9a!S9#VfB%2~vwq%x_uFp&mz{#&>gS&R|G(yZ{p<bKx1g<}OW)uV7zSSd^sD~J zGen)NU;YHGHu~@OW&PLxpan}myJ6!)0{`tr{%`x||3{qRuRf@7`F{_#1dQRs|DW}L zkV4V$^Zw)4?d|Vxk9+*D_)~q}{`K$A>;CxsuV~)x{om@>o-g}5J$uvFKPKC6{a-Kf zfA75dh{gX(zv@E*{n)ayKY@StyZ`k6tnu;wt*`$zL2GvA3;pk(`rk6{|JFa}`(@@o z-8uKa;Q#iY@&Dhe|JVI*AM|hjU-7&DoO9OvSN?DO@BXCum)HNZH-pV{+28uH`5*t6 z`n5mebN_Q+`|tkk|Ki)ABCTP^&-vGX95$KXZ66c=@7ngKo%^S2&;N5$K12K8PSbzu z_x->4gPmbP+h6;$zwgOk{Wt%a-7S6wx6A*RenFW+iTdAu@BgBImdF2peeD0U^7Q(> z|K6A0jhXjXJo@vQpuhRw{a=6I_9_1M>;KzMou63$+W#N-+xo1(PrredHGX~m_|5;w z+5hLgy?$Kz?EZVd{$-wv{`a_W>VNxZe?DLPZ~pJ^zgb%Uqkh%r|K0xU{PXK?zvZm` zf4y%1w;!+f{(WKpbpEFQT<_~;i~kq<|E}-<Wv}|?zwy8G*FMjG^WU^uZTa8*&)*-b zmwvo|+5fvvKMTLi|2!YE8fMP_;N$;R=hjPtMtkgkhyOg)A6w`1_rBlHC;tDoem(y< z@cZBI_xDe=Kli)lSJtUNZ|hCBSI@hC<y-u(eN(F5<UZf}v3|Gw|G)F+)%W@DsatpV zUwrwW?@Rwz<^MnNtN*{C^?%*}pdqU53+uCc|G)S=|L6Tb;@bbc|4;tE@z?yRpf-&9 zKmUKBPv2iLWSIKs@XL?azx_FX<wyPNPyHeLKJOQd{D1vIyza~Y#!tVm`_IVm?EkHQ z@%@ll{QJxQt=;>t^$&QSPye6ZKYoU%1^>H$$Dg?W_rAb?&-nUV^Z(|83(R-*y=DKk z8!r5^fBA2J_Lu+vBp)pL{r}MY|1r`3mfyDj{C9fgv;SqE_rKYH1GIAO@B4qQPqppS zeu7pf`TPFd{r~vi>+klji?4f?o%Q>=T>Z+gtMAqwlmF}fUvvNV-|TnlPy9>&Fa7`6 z{!hx^z>B{=@BexKhdF4O(*8d`*c1M~-&Y!&yzc*&f9Bi%e7|0A@>AJr{`>jbb^rE* z76*uI`v3NS=d1sW0^m_7;s4#@kY%;!|FJ9l54HkLlzZFO@B05)zW?d{MNj^p`QIV) zzwqDuKlTg?v;K#F`gh6f{r|#$_6#5QTYcOg^!)$s|2KdAzwxg=_V@a_f1!W=d;Goo zUlTeR+IHeUn^pa+KlSn1bN=6q{A)bl{?@f0-Ru5e+AMiX{!6|6bNj=f1q1(gd}0T! z82JA<(EQ*0fPW7^+n@Nq^Y6cP-}|2Yf4la7<p1?o|H<F|KLxR(^T3Lq_d9-?Lz=*W zpZ0(If3bdL2CSjk@CURiaLc0qS$F<l4gdQRQj&rfoL$}z8khe4$NDd5z2|{{niK!8 z%&p(}|HS<NoWJ6Kf=2_tf3B~8fB5I#__n|Iy?!$~`2GD|apmfNRrq9^&iDIYQ|veX z2aQdF*H{O={}cP#{;U0G`y+_<%l$Rr_KR};-~K<n^`EZ)f3-<$e$4+r%g@WM|Npsm zrQ|959sj)lPCqsO*{-kQbvHl#uX}&}`?h@%yPyB4`8z+p|NH;7&#%8rjnn&I@jKsk z|NHk(;@$tbzp4-Wm;37f>g(t8ZTE-$fByac{{J^VzkmGt&9DF2@8k0q{#pP2{HOoF z;@-c{{&e$lect!KkMmcmff@|%$Nq1!i+Eo@KYshZ{dfPxr~jEg`~SLMfA?;wFZp}? z-}C>g{tNzJ-tss8-v6#w|7Gv~k8t~c?OVOl?f<Dy>wSNI+5dwdJU#(gK=6OX-^pV2 zcjW)CmHnUcf9X;E^;P@J{^ZU|-ZOvJ|C6Hj>r?;hKA&Iry7b-m_w~8@|MnmM7oUAz z<p2J)f8uq1+yDBb|9|t;|8-}>pP%}_{ndYPRh@LZ{!9FuPiy~o&;5Vv{r@}fo?rj} zHuL}WPr+~gZ>@UQ|6g`({4V($UH|VN`;o8uU%vS7{6F<me&nzIxZmV|_U-uE|9>+- zpTGI1|Lgy2|F<XppSSt{I?4Y}KdpcC-~DTR=a2taLBl2tPp;bEJf&au&+9FCB){s& zzW=9xfF|3{J<&hD1<(4>Z~NQV@BeEaczXTb|GO{#{eSJh*d+K8rTu^Z=YFmK{XcpC z`G0&_|E>S;&iE^R_kaF>|FYlrfBrxBzx-c)_OJ8*>LH`J-|Me!{D152fBD=$oBu1{ z|G%K-skVLI&v*5O|M`D*|KD2lzx?iJf8}HU=lp;D=YH9-di`JdXFk_IeqsM@|JV1g zK&9Pj@YVzOx&M>y|9|)I`HfHg`~J6sRzLnb_n%#$d-BJ}j_2w<AsKq^|F?hgU5;WO z1+x4bUH;DyJSYum>Od;Uggrmv<G+gkXEs>#&)=&4;jd5TU*ChW=l*qney{ppfz&rN z{#M`rJbu#u_u0LmmD%;rezW)3|LO-fi6Dkeu>UW)_n+W(ST)bU@KgTl^#6<khX3FG zu?Mdtlq~*N{tvWx!utQ|pZ}lL{{t-xh0eYGzx#ZX`M;m~`=-AB*NMC=``6dKe}7`E z%dS87b^hWz|AROE3!mcue<A<h|G#Q0zr6qTUab(kGUz0DNa+95$NpPStN%CtcYl`s z<@n$8KmVVW_3!7;^Z(-WAM3~e^Zz&bKd6NS_Cdp(FQxzH|M`FQ)Bd~PYwKPXE5G?~ zHU0nppY#4-t1sX3|Mbs#%W&Z(Z{Z$HnDQt7%MW{oEtCHHowV<dM_De}`y&4J|Fi$W zGyd!h3m$?-gy#Qs|M#dKKA_!y{MTQNH~;<5`xo#0#@w*tm;Kl8psrK)H+w|a$vg6| zeC^-)f9C&`|6>0iGy-+tfAas${~0g*e^mdd{+Iku>HkmG|L;}#zx_wb!{6>x?<fDv zo^O5c|NQr-&xY>%CBOFn`|o*o>;L@u`RS>C{pD+)FVEThXRFQ4Uw_ZfKdt_M-;??K z|3pDoMP9G_KkN7P>b?K}?)|@S`~Bq~CoTSazIT7^`S<ew-CuA2TJ!4r^;iF&&%3|> z-@<Qyrn}eg{r4|(-L-$>@9U*}!RsJT*=PM<|I_mM@Bg2(SN-4mZ}-o7<rnvh{`uSd zwhsdpG5w%sd++~^pk}-J|FFlOx8Cc|tFOzOpLtI7|C`PK<KzEt`Sktx^5D<*J3rNL zeY5`Y*Z92q=hwgfIse<E|EX{PhkdTU_@@5z{;%<-pRcd|iM;yp-?jfI_s{+Of7+v1 z&DZnuzMK56fBo~e?fpOYXLtVD|LxCzvt#x8ujjA*Kl#6W_Fr%5kNboEg|GW@8CIaA z{+HYQzi93M^;7?g{<oL@e}3}+^~s=-X>j^bV5_{opC_RHIcRNA_ly7A|G0nrydN|O zS^iJG9y|v5qdr>hiv?(a=jM9t+JElpU*-S)=|A*){_(E*FFXEAgUtaE$%VVO2k-k+ zU;8uvYy1A^rC;a&KU@Cq!Trz2tM>j6{qG;^JE819v>8kCOl`x19sjTXUC;31ztrpf z>o4yA^ndS(`W-*_U;fR1vmU$|;KTpEoB!YKe;4{M`up|$r?P*}`Ca$E{(k)br*+?U z#@5ZxUi<&L+<%lY9|iG^=l`Q@y6Bm9vf#gR!wif6{{Q3|4*WNU?6^?<V*mg2pY#7g zOBWVQ{bzsn`LX{q|E;fis=dGN=l0*rKX=E!U0U<pUS7BU?QHN!tKR%SC--mr*O^zp zq<Zq-ZQ#+^=Q95_-){W+=Nfo)=hKhy`hUlNf6o4RF|+SuP0auIWuRrw@BeT8U%a(G z``iDw^S=G|-X7og95$@u|NC$4*8M-{|I2s%KmFQ%P@nb$q)%J_=12UiU-QFG*>C#i z_4nrfQ}*xlpMAPL?aTX_pv5n5>uUdLhW_6!@V|f7|7x30U-uV2+i&&p`;||h|Ng7^ zeE$0P=ijs+{=a(RfA#D6Qu}{hulxV+cG>^_dG(Y3r_>+c^gsH<{wtg6!Aq2Wfj6by z`1yau$9Qn1uz$wK{kQkd{TQ$PU%K)SXdUXQ@O_`w{@?oV^so3&;{Ub()^-1$zv$Ti z{(a9*{NJAP|Mvgz!aukFU+<~wllag7rat1o+?IdfZt(s;`+wSh`?G!Of1QQ@v!DKd zTL0)&{J;6&+QIqs{lCHtT1VS2KVJX#=lqo)|6hA5zw(dNU;d2k|Kr#1kGk|f{nY!| z|I7?${%`%eUk=(W_Wv7Q{g?aa?Efc0OIc$<gWXr_KiMna{{JNZU;7XK-}is8Gq`;F zzvlns|Lg)T|K<1Dzq$2k{r|s@>T6H`U;0<y?tkVR&<g!;zxY4af3#=#WFPoR|Jr}8 z`+xX<AtvB%f<`Gp!2xSH9h>++x~Ay*U**elUjJ)+{#(dsN`1lK>A&=++Mg|bz5dUp zr~m)nv;A(r_HJ>}zJKS}AOHRT+UM-=n{=kv@A<oZ-u>_8pVlk?SN>|R{om~C|EsT` zZ=V;x`v2$O@9)>Y`T6~0Y1!ZZKfc@7*Va$_|M_ox^xNJ0|6kepKR=h0X}9>dzt7+P z0%<G7|NfW#EB=o=XqO>uNa*i;^M5<+|3zE>JNeJMJ3j7f-P<3xO^#RCoBp4yT^D!y zU-UWqzt>*hd4K=^t++q+{eSmgo2U7&KKkeWh;Q{@e#ZYx*Z%)^*7|c(|L0#t9vgZZ z{a@Vr|JM8eciug}{{QXE|JFZUe&c`k*E{n6t)upr*l!R8FTM2oXaDS%{m=gzAMb}f zuFw2;ecS$D|9)S7Hh(j8BirGBw(0+4jsKl~3YrdnwO{Dt|J85nf7Uacc>RBl?*IP( z!9V^jU;Oocc-@uHpgHyKeHN1S(og=`KL%xOYq@&4tN-r*w!ZXPp26Y&^UM3Mzy04W z^xydZ@frV5f<`G{{<ryfKj^jo)cn7ze?4FE|L5QP-uJ^F{MmT*>-PEc=RfoLYQOj2 z_m3IX|NUiuKF|7Jdw%=%|4~=}UzYh&``musuX03xDE0pS4}bWd&ri{~|1<r~|IOdR zb^dR+{k>cK_x+#omVfLY*B|+K|M5?G!_)n8|3$$)oo?y>t8@QvE&jLu<N1H(|JFmc zdY->lrTg8!cPS`6pZ~cZH1XD5_HX{@`rudd*Z)`FUO(^o-2bQlPps!e+5e{e^#9TS zC+v&<%?Azk)l2-ozcQKO(&zfo9dM&N;6``AjqZRO-2n#~^Bdg(H@X9EB<_IwJAd=j z{~znQ?*A{@^6&Sl{;Gf6KWEop6jy(o-+bqP`XA6*wd0TBGi%JynYF+57&B|pS$~&) zT3a9bU*@a*{{Pi4e{;>T-?r=Dx6hw1&sq6z`St&Ha=GvSuT=gY^LGFHpWlAPul`j( zt9jr1KgWar`{n+>^;myv-PYUd-~1Mz_y6Ia$vjW3|M&c@zxJ=|>Hlr%_1}~JTmRQ? z|DXP+-{N1j&41;zpBEqR2MroLsxN$8zxD0@vUC4U|K0o#T8|W1|8@HRn^EhZ{#(BB z3usuz@_+cB^FQk^p8H??FW>9$=db^td^`Vn&*%D|_Mh}0LS~%pZ~p)E|4aRnKl?$Q z`g4%EIR51S)}=fSRsZslchEi8zyI_83+CthE&q!%9Qd#O_W#x_$UzvTkLs76`@cW! z-%HJZ$)J4~-TxsFGBBi&^zZpE=rEPT|Ne>p8-LoD{a1$dx6|MJmpi{-<^S_<+O_|~ z)4$#?{qOMQbNum}|DE6yR16F+jQ`8;{r7D?sOt^JKjpv1pZag{pZ!3^&-~~6K?^B= z*gvcPC(rO}{(skh&;H;0B@dsmN(h<vUi)TO{NL*IS;cqj19#Va`k(p#`t`l@-|zj~ zf4zR^|6I`Ut?94-LI09h|GD`7zh>nB7jOGd{Mx?_yfWy?&-s5A-v$j|cRc_9ccXmy z+yDEl{>=~A_x1nsC;xA+tN-mR^8dZZ-}ArfbHDw6@o)Jb_;M<SV~dV{{{N<4^Zvi} z>#ObWSO5OM_WZrC_r2%esQOoyU;Kai=l?|{EDWi=U%&W2Xe#c8z3M0Xt#9?e$^ZOp z@AzLE)VKTaU#|b_?}d={l_{6@cYmKX^%~N^_~GyNaTotr&4L`S0q)|x`QPz#`U}vu zl{5G!_f>wbAKk+{IQH;@azKN`lU{q?V8~#W{<Z&K)+6SNMK;zqzpq#Le|+)1pY?aI z)}Q(O|Ij-7ZRo>Sb-kb8pQ!%{S*y3}dH>eZf69NS@0#WC8<KMw7@qt;@}F@5@89XO z(6`pTj0YXdvHO4HAJBSVkb@X{T7JiaP5@Z*?|jAoc)h=~C)5}Jj}QO!e(k@-XaB#k z2M@3vsXvbxxLRLZC-T3%{_phP_d)A$^FRx-LBqaa;}{w?@0nA-J^Sx}i<w7WyoMJB z4S)K7&wpCaa0Iq@_Q>b@V=@1q{|RUKQvVXPk>zOp&;M`iKh`g>`OiMjqvaj|cd>A; diff --git a/client/resources/hardnested_tables/bitflip_0_07b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_07b_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..bcc281932d01301ef2590d75eae5b657b218d844 GIT binary patch literal 1404 zcmZ>Y%CIzaj8qGboaCl!%pfNJ|NrmFJ9jhMUX^7OWxT*BpeWHel~K@9P(VCUKs2Bs z^ohg+u6PDG;7c?~$;e1C=;djfWx|kTl)}ux#yrDUQc6maN7-3%SucY`&rF6xj1A9( z-Q3#RoH;I>$Xx8ermW^*(2!u+a&h9qg%b{$7)fPZVC*<Kfk#0Cn}G~VmUJ3S`I4nR z<*e^S{(uaVs$MA`0baRTGZ$-awOi3tCmSNPr+uM!*UCg6b)GQW4{65DYI@?1-&^Kt zx4G!I%I`V(k-w$TdS=P*<_EFrXHLaR%+GmO@IlglPu28mh9&zAf1Qusyy5Ti)T4)u zQV*Yu;n_5^N>7|8<)iz=nbn+^xn91|H<nAQ*X%Djv)NeXgT3Oj!bj8j_=VLwFK=4& zCH<S;yyc7UBz@HU{Alv;D=jDgd4-xZUz?{@qwxLe$Hf~jM)=eg+BqJu(%xC2&h<h4 zw^+n63;#nlEN|8|e_f+<uxHJN)X5V40jcwA3XLA^*m!68o-m0`yCefY*~GZdFq$#b zTDxhE&(xlRf(LFAeCm6QEM|O)pIWQ^!r%FC_{>MkxAd!g7gqDp>+v@^wfFGv`CI!x zSgWttl$x@!^{w#9IQP5Z?|0bt*%$f?f7aRXXv3p*FZKuDsn~D4+&@z9$wvMOHTlPC z7yh`<^v7@JTbpY(QxCK6``tg|&-xob{m<1-t62FY<>Y&<N47j`UjC5JJ$~%}^YTVp z*E^|49v++%d2oKt(m$^HTO!nyMK)?Z3ON;VEHWZ8B8K~sf6J*@H48D;!#W!$i(WV` zEZB9jbF#3Snm3zQva)_qp_?S1Sm0f5K3N&z4KqtN>|WVbn6$A^vP8WkUZ`C7ujr9! zJTtBPrXDS{@^OD^+kRK?w9ckulEJ%9#YF5llC1ZP&t^_d>U6%TH!oQ1*kxr^*f;ZH z;rzLm`}&ntUmI8%8oiP2pLruqU98McvLHQOEVba_lv6LQO4c0r5AN<+*XGWxdgFyY zYddpyXJYrk*X0%bfpd>P@O#I7<n)1l=gnPTB-X1hHhv+?d3WlKQ=bj?FD?12{nesO z{Dt-MJB7#3oZj^2o1DkD9ky~;kKU}1v^#kBLWx~y-{aklM{C;~3pULAwX&YM(<=Ui z!K2+wCo9)q+QWaL%x50wp$DgRR{qm&7v6N-`@}mdxju_|t_6=?7S8cwmvb*(`fRUv z^KO0l^G84J5x*b5v_k)9?c{6ql6|M|%H@~Dz1Z={{$<_a=eCQ!&bMCrX|M3|8DH1f zw#97=Q+F5EvsnE=UE+tl;6?eA?_M9`4(n(Cx}!bgZ(d=|n-AfhU)HPGO@9?{`GtSo zeCPWXpK8BWd!H3EJUGWF;>5hGUF#DqcC0&Wa9XdsZSS)=)>i&YYq>YJU-}Sh^n*{l z;iFCLxzn=Ke0J>ESYq5WS7Ppr$9;T#hQ~@Cl-p+tHG2ibM~iaI56U{N8l?S+W15GK zYuC!dUQ@L$WrT>apP007L8Qx}BsXpzwZK$^8K*W*3p#S-<g{R;!-f%&63J}gVxfmw z-c0FU+QkzeR_1qDjc2K0S7G5{ok(lVke3O&950KdPG&PQoW|pG>SWKxo|lJSdg>WY z)tMUU_0TFzuW4lo=TQscwoskv%o1}n4~vGJC`{)T7Z*Hg7;z|R<HTc+R!-Jd?sybD zQLksiLv@Z*l3}7#d1h*DGBPws>IqF<lyc(W($HDjQd3TxIC3C$T13RDt*Kc?s}7x7 zbE0RHvFJ336Fr;Otm&3mI!!Tks!y`cs)#d*MyGmCDo%4btzoRQsVCJ~)aS6I#~Gc2 z5(#TgMI4;Q%rh+_Ey!?6TF99&Nv~s}#%vKjC(f|8F(&?h^v+{BmynRh(Paq$Yb}aR literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_07b_states.bin.z b/client/resources/hardnested_tables/bitflip_0_07b_states.bin.z deleted file mode 100644 index 184354a449c1f7bb26097641d1388fe2a36b0685..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9229 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 diff --git a/client/resources/hardnested_tables/bitflip_0_07f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_07f_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b56e0f7a0227fced7d53ea61f77645536cc678a7 GIT binary patch literal 2054 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 E0242?;s5{u literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_07f_states.bin.z b/client/resources/hardnested_tables/bitflip_0_07f_states.bin.z deleted file mode 100644 index 87ac36ab23a5cbbf11b3e18f3e394a0c86ff32f6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16505 zcmb=p_4clBo{{Ypg@7eG4Y^<Eux?lw7oygY$flzZ-O&=DrhBof`a=8z#gLxWZ=&}- zKO-R0y79FAb-nBV|Hc1LFaBF^w}1Wh@7rJh-@ZR4{rkUf-_Kv0xBpAU%jy5#ytJ2H zT7UA(|37s<_5Ukhub+Q^=j;FXUaq(O|GYf*=lOYc*Z04+kN!Em?(zKj$L~*XpLGBK z^iNxF+Wh}(`h35A+`sAD>%aePyu2~@pSyQ`?$7=I_uW;@`}zM*+`nJ-_1$;>eP8oG z>wNt0%D4M}?JxfuAN>EGeEy&1f3N>LUH?=6-}-;+-~YGSRkysae%k+Y``3M*{a=3f zzu8juwy*eodgbrmf3~__e(L{~kNuDD`y9XgvBl^5;Gh4!{sve5`~7~l)xVOS*nf+z z{(qle|9*de#hxGM?;qDM{_}t0tN$xM-jA=VfBk>`(~ru1|IgOH`tSY!_22ck{?#w} z=b!tldj9^hKdFD?-~E{X+Wz~W@?*dBtN(=m@&DuhM?e3Me$apYUw_=cy^jBH|NYPY zAN^mv_kZ=jWbgM^|Nqwi{_*Df{x5(1*Z<xB_q+aCJN>`^w_bLA{rCSn|F3`ir~RY< zzMuS`?SK9M_5WG?*7|4vul~RM{J!k3dG#;9-hWj8$^P}9{r~2_j{o=k<p2K9x&LzZ z=f&60dHpC}{(1fW_mO{AfBW<O`2I=%<~`m2?a%G?U!T{1`?6i<zxVO|@=NP|KmPA8 zzWt;A<$u%CJwN{Mdi4L5{oDG}f8u}rdw%Ipf7$=?*T3wYeqR3{{697CztQsj+x|!1 zp8q!XpZ&So&-=gqS$h1t#DCZ5|I7dOm;UXK`|m3CKYjiGp8t=I{?9t~|JL>Y+5flx ze*}Z_m-PQ$x?l3|_+S4|@&A_h{r9ea_i_Kf{h##zT0Xx2=>IYM_xbhx_xmdTT>1a? z&A-)e!z2HFx7+`<{@MTg_aE(fSNnJ7fBpaecK-iA>vR2_>!JVGt^N1^&%Et_b=TJ0 zpG&s?um9`Uf3ctO!T+Au{d;=p>H6~j;s4M7;{RCx(f%X<%jtEW|4YvQpZs_IPy4t3 zC;waiJHGdS@Bg49|L^`^|L^ku?f+bVef|IS|J3@I=ePbl`^)~L{YU$^`@h})`u<n> z-`)R?@B8<C`t6D<|AM~#d|mqM$I6QJpVvSCv;IcTqig>!)&I6xzJJR8yNUNcZMVJx zN@V5jKhOQ|N`F56|Lar#RnOhu{4YM~Z_UY%zrF8Y*ZoyL@%4ZA^ZR$z$Nk;>{QCKi z|G(G#ySMoDev{hZ<JarzUw^WH{;U7eSN@CF>aQ%TfAzoq%g<S#ufMBb^<V$*vHd&G z?f>#4eaXl78ISkhJ1^g7@$cld|Lf2GpZ5QM#?$=Vuls+@|1tl^eT$Fwf9<dD|8sus z|A~)23dW`P+fO;7J-wseP4B<%rTF51m(E{5_y3IH|LdFof1Up2`mz7>&;EDm_&@#J z{<Am#_gnm*zV`q6zt{i2wXB!T{WCxFU;Kal^8fySr(6HM_W$X;|5~#Ddn5i&-*R5} zSpC}L{}-<N|KRof&FlXg|F;kOW1jS9{nH<-P5zlY`lbK+|L4B{)8GAHoA`JCkNrQ= zul=h3T{_$T_WFH4?^pe2emVW$nU~`Kd#8fRjp%3l|MpM!uYdBV{Qvsb_rK2n{_Fg_ zy2tbDFa7`WReS&PC%?gEz~lXu*X^f1OW*P}{`UH9ulGkyuRs4k((Ld0EA@+Q|GWQQ z|4)DA|Lj-$x2~_B`v2DdX>a%cng0LL|5yL_FT4M*`rH5Vzx|W{S-$(fF1B9w)xY}J z_1&NE|NXyyy8ZY6yZ`Sm|NZ>m|6N~p{;%Knas6*l68V3B+yC_c?{|IaFZ*Br>R<og z|FQpH{WtkK|M&l+|Bw7X@_*B@|4~!^f8SnssveZr>(~4d|39(rW%z&3`g_0P|8@WW zYqRhB=l#|1>u1&eo&LA}`P~1qng8#LUH|X#^?t_h|F8Z(_uK#V`_B3Q*Zj}_cmL1+ zpY@;rTfYAP=6wBmx&No<{a3#CfARn4zo!4U{Cxjk{kQs_Y5#9tzQ5^@zU+U!yZ`m0 z{_HRNzd!uj|ID5L=l`gG_qTq_|8MnM{@;GT-u?c6-~ax9)Bj91|10?Y|GQoPcRv4r z#_HeYf4BeN|Mx%j?f$?2xBg#z<^TF4|D)dhm)HHb^zZe5-TxtQ`-=aJ3=9n)r=I(7 z({<lh_WwVz?|*J??fCEd@BiYZ`@jGBethSf&(~jn`8e_Oev`l6&+Fg*oc`nQivRU> zb?3fq|MExvdFA)|3IA(9*XO>Rzx&VEcmH4gfBNn}BSXTU>zn`IuKK(DPyg3H+XXMj zfBMt%;`e^3|EvEqfI-LV?|<#z{qHvY|MO?;x1U@8|G#<tzxmGpXaCmM|F?bjpP7My zA>rVU>3{z}sekq(|NWQmb^n6j{yBf^+kb7}{Xgt))xZ6};`9G+|4-ZgU;lsl>i_NE z?*FoX`+w16`QQ6n*8YF{KmV`%tN(Ey?SKF8pZfpU|JSenzxv+^HrHU?-=}8tb{zTh zJT3S`wax!UmH*!J6@IEe^5s2W;pzR)|Le@J`zrsc{%QQb?Ej0W*8iMu{hyIR;J^OQ zKVPkC|D*|j|MO{o&Y$A{AZM>%^54!j`1pIi$1(NbDufB_KZCA}-|;j5XU+e=JbBKa z_jCWLo;v?hV*8)l|MkOuWuM=F<UKpchkI@Q2mP!5mwoS({=fG>?N|KY`oHq||F{38 z)c@|C|9|!W<^PoPf8YQ8^ZKd!cOUz|?FVswosau3`G4}xf7}1X|6c!B{J;4B>;FLE zW$^#c^>5j~K7T*Id4|=$zq;>!9{s=ezw!V7-+z4k`+WWNmygf>@BVM>_V@cw+x*|r zRsU9g`+xD{t^YfI?%($1eC)rf@AY5*7k&TFz##Dd`hU}Z=KoGh{xAQ({}(^lOAR)k z_s_rod0qXz_`Lo3um1c#z5n@qtAGDK-+A`@WyG}qyANCZ|NpOO_Pp>@_pf~1?R@7` z{@>%DUg~T9|7On$^6a}G>F0ke{_%g;r}~#a(!YJ#-uM5U;s4Fg{%-fW{J$&xv;Cw0 z8UMHb&z|+)?7#iFKl}g1zxyY@GxERs|LJo7d#?QJH~W`e^cPesrFZ<QfA=H){m1El zw*RyL{p<hI-}R6F->L_@lYxO@+Qh&A#J~Ta5V_@R{i**IKjruSJ74qvy#3qzM_yb0 z5?}gVdHOW@@4v53{hz)*`bqu!*Y)Kyw*Q&_XZ|Vs3!DCnzx*kG@qNA7zvEx?|LFfe zTJP?$|Hu5-@t`^%925rslmFfS!~Qt_|Np&V|DM*b|Fhn<{^iG8_MiVh`#<%+>gE5R ze@}%w2IQy*>$k;k|Gn97@4Vl?v+eCm|7h>e&s(~GxtaaL^>*jBe^1ZbpBI0BfBf&i z^3Pwsj{o_7_Wzl$_P_c1|I+#Y+PUYyPv7<J{^#>y^Zp;4SHJUb*6%;3ul<b&84SV+ zdpE7G-|}z%8M(FoZzBKM{`dH|{mlQ2m-(^(-S_-I{_A;}obCTl|0)-l{>=Zo|LgyT zkNZFF|7gE)%Z~rMm;7Jxr+@nYSO0gs6#p;$U-<uN>Ho|<|K}f*fBS#=zvF-Wn}6E> z{r~Uh`v3E-|4m%^*Zkl1|MP#=ANb?H?`!?d=lcu(-u@r|Z}$K5Gyipf^O`U?;eZl1 z$Y~4=49_km{coT2_3^j=8Ia5%Z}``KfBa7*B~X<Rs-duEPX7G!oBr;qt^Hs3_WS?u zRhxhQ{k--0e*1q@znowD<@@!BN8cwu|24nL_WO73{~tf?PyZWU{qNG_&Da0;&-?%V z-?!hty|@4W?H&8KxZXzl^#5b$_s{mK&;9-V=im4LC0G9EhFHYFu;%)|qTO<t^)vs= z%=SI_K6B4M?do5Jf8X<++W+T#^nd-i|L!X0{hA*4KX%u@pMljeQFUH+^Y7OGEVR1! zuYURC_wUbN+<zx0DgOWN!!=JcU;Un1f8fXcANPN>%l+N|eS7L@|CfJvpZXv1bN#>b zvi~pq>-^vOU-Q4ipO5vve+v74<e&br{G<J|`f0QOSEl~+2gUiX|CPV~-@IM_cmK<u z?<alA{&)Y6{f2u#=li_=zv+Da!(aVnf3^QV`+xTTcF+1FKjP2+SY5V9>tFic{U7aN ze%iqH&A#ZredX32|8M`R-wCSvUT6Kk^MC&8|Ih#Zf4+Y0e|ERG|5NY%zy0_Bj(@%X zpYH#Wf9y;5|DFGi{{M6gTsk)tM*h$LYyYhN?EjPXU-$p?e;dE=U;MK_=KsN|A7+!w z*TQ{!{}=x@{cq{@?*Cfb|3draH^uyyf4=X!{e`~2_D|}U{5e0b4v|h77#^5keD{Cj zznyD;e|<myKKGOTU;m#1yZnOfzx@C92LC6g{$t<r|5p9i`ktTppZ}k-zp(u8_J8~_ z|BwAw_;>x+ukHW$|5*QV|37_@BLd#<uXvueIp@#k=ij^kA3y#7uA<++{u!W1`?>vJ z@y{=-{|Efn{{JcdxBS{ar~lvi$<NU6qy8kgBs8DB<N5UesgLLXKEM9&|9aKG-(SwO zsw<ax{!6;>PyRn)kogP^fj9p9|C`@e_-TLnujv~0%aiYX%Kv{n0@Uvj+Aq(*z|ipZ z)1UaC@|ypr{@?aA{*Qgwuk88zcO3aF9r!={|M9v1xBt(c^JTl<|6ld5?6>^){w6=Q z{;~Yq|5msD-@9J_?brDq^Ur+U|MmZ^`nRCg)BbPrAJ^x6^nW@1-@Lc=@BjIKdoF*f z{^xwlf75OMuKoT0=KK1xzq|h#$N#^S|EGBVzwg_hKTX~&`TNJp|F8d5$^{>{KmGsS z^ZG0Q?tW*_dbB<GfBlhv|2Ka!cCYyv`D^*9_wnogU;6d!ukN|m_paZ+@_Om%`nNx` z?f)0*;b?q&_s{?J_fh@FPy3hsd9VL@+W)1e<KO>V4=R`E{{S^b+rN14|M{Qev;EEQ z_GbUn|LGU~sek#e{{4^TU*nI}&wTt}a9#b^`M>=C-~T25y8g@mum5BJulry2`u-Yl zS#$YcHb|iU`u^ATZ(i5e@9cGdtDic5f86r^`CZ?w{#Tv*-*r|k@2~#f>#yGhg#9aP zuRMMKT|oH1<$d>MpIQIco;NrC-+Jx;(=F=H|Ell&`dRh(d;Qw@?Jxf4nr%F8zx?sr zkDy#yU-v)yUiSb0zd!r`z4!Zn@v9$~H@^9$?|c8s$F2A8@A`9o=fA}zf1S5{mEZbu z{;&V?wfmm^`R%>u>;GT>A1}H8qk7M0ecOMMnSZQr{aC*R)HC`1?{vrG`8j|8-};mP z^M8NXziVOtyZ?i-cdzjO%m0i2f)bm&rkwo4(r-VUJ@*uK{z!lF>Auom)93nsYu^4j zFY~$H_IG@}XMOIU|2O~mxBRGo`RDeWzyCWv*Wdj0|5p9q`}00uzj*Bb%xC|>HS(4E zotN|f#=rZy{?f<$9bfA`f8R;^bG_=1{HtI5`~F$}{$>C9fAZ0K<zxS&`u2N0_E%o_ zf73tv_dn`i{<|-A4b<AJPg@IV>*emxdu)7r{l1U$ul<%!6VLtY{q0M7{Xfra-An8L zIsZ-n=lsvRe#@`;f6vd=Gcff0SF^Xj@R$G7{`ddtvwi-*_+2mYzq=mN#@XQ4|Lys# z=$HROpY6Z(?Egy%_5an&>pMRMZ>o=b|98Lfv-%}puFtFQybmfi4ph0`{(t(P_|DJq zKl7vi9sQrY^#9|S_<4?hk86Lu|8LUnfA8nk{r<n||CRbLTK~Pj5X>o{+*fsb{q5($ zIs5;8_^EzgzOn?|HoIB*&->l;{nOUf|F-x)d)~^&o7eyU{3qUR<^ONfD{tSw^x1#w z|9Stnulo}p{p-12{oddEf7S2&UC+QE@&D_a|55+%+x;(Zzw>zi(#!j;kLdnC_Wu>Q zh+<$kcJcQ=`S1U~hVJ@*w|@TifB(OKS)2QJ|KI<2|AQ*C13TXQSO0H5+v4N-H!t7+ z{WCxOS^c#=|Kq!#+jst7{P+65euMwH|Mzc%#_5T(zxLmm)l>iGztFaS+yC$XTEF6d z_0j)t{_p?y$NXRX`ycyV|NH-m{|yQ}P-%3)XwlmLnScMBe)ID9*Ltga`(P~(&=3r` zbb7q&*8cC?@84hlHr^)6zHaZi@_)Y{YwG|1{`KI?8)pBbr~hC1W&i%O(fi-=ow66m z|1*E>e|g=%Yk%+G0V+~H*_Z!S|EK#e{g3{?>8AfcK4N$>^Z!OrOXper)cT+K|LpJo z+5b)d`=9-v^8bNKKajJ)xZ~mDn(F#%-(G+F`uF$N`~M5;{{5ML>+^m2|6aeIhyD7U zt@H8s$>P8Mpytoi{}n&)Z~nI$)MC2%`v21T|HE(nd#_*mwg372wKo5oZU29IeCONG z>1%)Q2b;~nz;K}It^W4c6Q@<wodC7irPlvHHLot_|L*2b`u{&)`|rKHzPw}hzopmf zr?0E8yCOGz+Wbl9)4#v?Sq{qmc<Sgg=k2HeKmC0FFZ=R8&cD_FssCI4hxz02|E3?0 zTRz&a`*{Ab|1<ta=KXs<^{4&Q{rUf1|9}4Se|rA^um6`l-|u~DJ*Xddpz3+O(c1r~ z?f$pEw!igt{h!(Y&Hvw5`z!dk-t_VMTOU{bnE&<vvHuQix7XkPmGt}S_WzfE{dB*i z|99r){J+I(zMQWAdEe;&X8ZpeTz@G)2emWNI>s^|TUS1xe{IhGZ=a9Ve_r=r=j{26 z*YVrqbFc5;ruV=9)ql(R^)bKxJm+|Of6mMLrT?;j{z-qk|CfCfXc%qn-+%T$*Z<AG z`42jf_CNcV{M7p^AA4W_ZC!uo^X`Agz3N~7y+8l{|8?<mX4zMn$?5L>|10q4e5-#q zt4@o3-~XO3`FXwX-_NIhzTcn!>c?fnyr10>|CiV0{_lQtee3`7_pjHR)$aYj|7iU7 zJO2;=Q~zdv`G5Yc|JC)YU)Nv#_P_dD{WFjH_n)u-`Ty<zr$74F_y4lb{yW|FpY}gc zcuzO~cYV<x_qu=mujBvU|F{2<{U!asuk2r*kNAJO{^S1n$8Y~P|Ncw=_y4oj|D`Mc z?|<|Azuw$`;iu}){(Rpb{{Q9w^E2ySzdvrh|KI+9;BGZ&9If8+|D4bJ1+Uk4|3CR( z=kxzx_3P??&Nu)6_J8{S;~78a+y2!({r}R(_m}?uUv%_;_V@qQssHCs`~AQ3|MPqQ z-GAr*cmKWr@4u=qfA4?!f2IDIedT5O!vF8r{hnX_@BEs__MkrX+yC*`{@wl`|J&Z{ z?|-j9>!1GnfALW~tQ!BZ|3`iIFHjDVh=2L#{Nf*XuY7!;UwD3gZ1<1&C;#oEepR2Z zub*?;u70ndyu9Uq@5}p3{((!%{$Kx}KYyN6?|uG%;k@$y>_6|D|Gz%%-%fbFE6>1i ztlswb{<YWZPyLTLUoUO=SM|Jq$G-ooKf?QIJF4#gfBbKM#OL|*@2Ad>|NVb{?ce&z zzwh7q|NZ;@$N#{knOIN#&Hw)Y()<2@^Q(XV-2Uph|7&vp@4xh=8&XtR{m=iu{|+eZ zcK)i*_`ml5<$wBC|2F>jzVYk+zyH_%FZ}mj^#A7n|090p|JlFp-}-;^e}K(>d@DZh zai{m0`aCn%{l`D+&wBp<oq+m(cc1_71h)UF{&)V<%kcjT|Aqg1y8oMf)X(YvcYc;< zVEFid()sxHmyhS06`t4sfBKmHcaXFHd;NNU*|_x2JA-py%^&@^|3@8CAS~|K_J8Wn z_1}KhTOB+3|K7{^MSte>6`tPz_kYsT{onq0|EUA1yLS4s{?q->_dnD9|LFg`|INSR zf6p)fcmLn|!b|sm|J)C1k$u|sfA9SIwSS(={m=OSd)xoL>;J#`I{%~n%-8j=|8M<& ztNvsC$NINme|<h*pSypVef@u%?v;=4-+weO{?C0-ty|wOf4}};)m*!KfA;^dPrgz= z|NiG~`<FhSpY>l}cKzS}+5fY>|KEWOS?ZUA8qgo>|HePAf4qOr$NKN^;gA!?|9}6q zegEtE->2VxFFUt?|DWoAD<8kNKc8DSuP^oIe(Rpk|KICxe_6TokFPAaTDn%RGymVD zPx=3YL7siqSO2ZYzU%*b?f=vJ>eKw|U;lV7^VvT8Uj1s5zw0Z^{wx3M{}%sy|1wak z`th0nuR+5!6K8*||5X3-<9Uy_|1%!%SG&IdYyGYIwiW-M_x=AWSAVkp_5aQ5|Htq8 zul{fSUvPZ@>cvamd|zMqpMNH3co@`my!iV6neYGqT>j^~XWruaz$*Kq%%6q(<70o; zf7|8y@B6-g<?WTH>reh)`G;Becm2e9{{{d4OMhGsYSMp-|5M(A+V^1iZ2#>4*?NP2 zU;p3Fej5Mp`>Fr8K2Mih|JV3`{=fL2@kW?^$A4MBOLyD9zVdqK{{7!R2Or=6>G!j+ zU)5Qkh5x+*RZGth)zZ9u|EB)m_jCTrf2ZUA>;L_;|I)Xb`jy%LZU5&y{VD(E=k(j_ zx1HagbN4@JyaE)i4A-=O|8jr*|KyvCzmCj%djE6(lls$t`ltQ7_O<@V@A@_MdCxC? z)_*^rJ!<m*YyYGF^Gp1f{xAJs*t`4pe(zuXps|Pb|N3Xwfrgwv?%(s#{=kp_nSU<+ ztAAC0=D*2||Cj&2pa1{Y|DBKJXWpuRT>tz3%>V3X{y&NSKfU%J_x1gM|3BUT^Z%Te z{Su(OX7Le}aFE6o66AEh)oVoB=l$=8W(Gmbp$D)xpoGNn<3GRs)VaO>_Vw@Yuh;#r zUvED9zI}Z4zu%AJJ^$bFs;}==t+TIO_kZQ};`;rc<n{koU#s8xT;JBN`tSc2KkMJ; z@87?_<oEvlSFYNBKfZa>pZq_6cCY+$eOvwf`~UyVpZE*C%KkR}=lP8{MgGh?_Im%O z<?`46zgzI<^#46y|6h7}U-r?m`j=ntFMT~<e(Uk2PnSRWeDm*g`Q?w_{x7%s_wS#~ z-_vK+zJ1+qeI|U~vVHMC*?a!?{_m}Saq)k3ee||JQ||3w{ilEG|5yL-eB^%%8Wo@a ziT{ZF|LaHOpLhJ<)>AL_Klxw!&Y$zcpZ%Zme;;T7WBLF2d;eblKYQMPJ<a`~UNrOT zx&KdY`KSN;kNCR(8P`G0n)`q1XMb_;`G2)%f7bEUkLs`em;TQznX^Cdb@$uw`~Uo3 zKbQC1|0UgT|JU;yFX{h(T7UY_`G0>7i@ofh^Z!x(y87$&_g>pq|LU#(=lTEg_2MJq z%jVTb75}?+Ui$yp-TyY5*e_mNf46RH?EhQ4{@Abj|Geg3;mgnSmABLvFZ)0B*ZQZQ z=WqT0>VL-9df&g>zy1FIWdFDQslW9>z4ZOR{;z*oA5yoxPe1nk`#*)}-~W=={=4*h zeSO{k-F1ao|6bgz*z)DyYxk%1uYRPz){VaNf1h>F-2bLu&uc&5|9>B7c5KH}{iMJ1 ze{KD%-xYuT-~GMo_uu;R_1}N7`nyH{`G3#9@!#kF{>=aH|E^v4KlJwh_c#B~RQ|j7 zeEjGCxBs91yg%mutN&}h#((><9y|*XfA2?p_b2(EKke7m|E>T1zw5up{x7TlFR@Sl ztN;J#|2nz+|M%~_-v8#m`TIZlPyYVj^#1?ul3($f|G`s&f0zHaPye-czx?|@;5o4W zXaCRsAO8RU(?7-M{=3Ee*Zrsde>13{+WGHk{k=ci|Ihy`zxXM9lFR%1|8BAW>+k-5 zKlN{Y)Vu%c|K?Z!mw&teul(Ep-+sTo_`Uw}|KR_U|DX8QANjj~_q+OcKkYa7{onHc z+yCwV>mz^X|F3`hU*qe4?T`DX{r>OXU7v|Gqow-_l*tlmmVUPHe^efPeE<HVw)JJY zkLoA>|DW;lz3u<Mg?hh1W5G2~{^<Muzw|S{`k!i@{j2};=g;5#SJ(Fc@ydID<)75w z$KJ)*7WZHCf3ofW+#_G6+t@4q`nMj@$9VLr_J9BH|4C=->*}W0*1i2-|LyC4-*@%J z|L@<g@Ba-RpNTN|m-^oxG%Rr28Z=BCV*P*fw!i<qF6)B}dHYv?_W%7~bRJa5zxu!M z@AiNGzxTiRar~ct;_Ld~|D*r6|Jon^=ls9_$xrux{J-nh{$KTvz~({<i8aUn744o^ z(fND6+3cqKkAGf2`?<cnWAcCHW&fXl*G5tZQ4S*w`uabA{q^sg{rc_k+t<Ipzy9yP z{?DJEAG|W}|GyvMm+ZG+x*wn1dEbBD>-tw;@7!Pi=lJRW^S;Kv{psC*KJI^g-Ti<2 z{yzQo^?CX2Z}s&nSJ%JmPfz`M|Hser;Fs%j|J&{V|JPpmYds^>x`wZ};`6R6zt#Ud zKY6p}58K}B^{M{$>;B(${5k!9<?H|8zMJp=ORx8PU$?i<>i0hFfAaa}-}?4`$8Z0C zU-IYgU&~+9XZyYZ4g9XR@vYte30iVrSp5I{zil}`HTTws|CHDMe-%_V-vUn=K9%pV z|F^!={+!_dT*?0?|BnATU-a32{h9xo|7$<T|F`%5Z(sd;{eN@Y|FJ=Jpw!HM&HDf3 z%)jy9e(J~kzqqdcDQN2FzuC)viT|r5>#z2OAN{}Pzd59*1@V{CrvJTv`nUYQ-|=$$ ze^C1oB8*1%Wd1JwT{G?N^*_%wD*t)E1<lDAtO5uBwl`ltfBxNQVe{YrpZlr*Z(d$U zRAmedb;57|$-ka|``4d+XXRi2|Gf-43i~VxH1@Xn$)EPW{~dm>|7-qV_wOltf#$FE z4}SF*{bjCvT>tIAy#D{*|6l7F-_~#W7XNFhef2MY_m`0R_}}UOC%)c)UjFXa{_<bh z=l}nV4ga@!IcR?MeAvIG_kTQp{_*?Mg=zoZ1^%oO<6mq0|L@07`}h3a{hohLU+!o7 zs9)Kq|Ns5|map*i|L5O7UH|_(`pq}Upzf{n+5fNp-~0OitY6>%Re;*w-{SwBuK!s7 zwZ8WM^NU}tOaE;CQ~s}X?)^XiZ+yLf<;Tmw`h=`MKmM7;|NXt<kH2ia)wj9-tz?hS z{6G8D|L|AyFMYmWfB(wI<;ib8iLd=vU;n%Mf9;XSN9+ID)y;hTzdz)^fA9Z)pMFRG zuh;FD2aN;<|BwF_{~pwpQT|$=b@~49KU*K`zy4oz{C~{<ozM3hU#q|Qc>kk%5UhM$ zKk--n#pm{$;z4!#^Z!Tdm&E^CTR-Vv;j8+e>;KmO+V%0TeeC=CqW|^Rzup)8_5a=f z*A;(v|3Ck?UiP_tPyMH}^)voo{D1ww`TtdajsLIzH{b66y9?j{c(4C2_J8vK$mjpR z{*U?p$=?5;ebv9~zi+>PAHTj7)Z3Q(zX}wnM_>AX`*XMh(Zg|n86W)T|KmGm|Kfku z`^xJ7+rRF|{$KvT?;HJ}zVH7|lmCnF{=d8HUw^>Aum7*q&%C|=%**v}>#u!Fub%$D zzxY06TEq5O{l#nlGyf;Y{$G5(e&VtJH(%R7-e2)?|Ey2@zahphe}G0XK?8zc%;)|u z{6G26^#3a#|GzZ9`p^3R>;HJypZl@>$NrD!f8W0Uc)PNk{nvWi-T$+Ghfe#y_k8}} z`9J@E-)^zKI==qd|I_>H-~HeJ?2r8O(yRNkSO2%)|2((e`}O_)&o|Eh@80)szw5v2 zQ~vLqU%#{D=j*%wum0cs&-qXMAOAnjzn0$rQ-AFF|A_zD|NMXdU-JLuzwpQPkN1l} zn%ZCfudSb0_qYCU{nPkg#cS&~{{t=L@c+I3FK8J6Xk>EZ`u~5Qn#pb5KcyDbrmxew z_xjIk%m3PDvv+*m|K+~j`Iq`n^FdQZZ~00=)$HBGeV_L~y7}|z|6QNzJ3oJ4^M87T zeSFcMf0w?OcK?fi^6US_&+FgK5C8w>=hxyt|83{*|Ner&z~k26^I!e<-v2Rw9nz@d z_s{Lhef68Z{?Gor|LK4GsGrf%fAzr~Xmh_m{{PQ^)&F1oynabVP0RJ0kNH(Uo>F}@ zf8y!-?l0Hp?Emt4>u3AoGylK7ssF3`ck9Rh>7VTdAN^nYIluVZf8}%kQ(ynj{{OYU z`dqxb^#Al(|F8c)efNLx|EGTYzt-=3zTfM3z4EpHs&9+CKgPfQSij=6{f}SI-@N{R z=6}EF|6Ymz*_QvbdhL66{5$>Y|DMO7iMZ^D|N8&*|IOU`?|$9gXXn4I&i}Xl-hYQ* zOYMt)9j#AZ8vpO~|7kz-|37|uS>E#h-T$wDmH&Od7gS*Ucs~D&eeK^<?=^q!yY=~c z-Mt_A_rCfs{VAFI_xiWhZ-1@7_VoVe`f0xZwZGoaIRF3Rzt#V}U;Ur;EC225_@`(s zrS1RcfhO`FFRAbQy+8YUeEY8d_kZ1g^r!s)|JP5?|NZ~&|NFcDcK+Y5SNrb&{QN(! z|J8s0|N8&-xBqYc->vs|@!kLPcl}TPUk@6u@csMzA84tG{m1=lKJFKL`u}h4oKN%r z{<{8OUK^6fuhw6hzy06z|BveJ```cl^ZwrN`DyY0Q~%$ud|vN<>;LwnU+shbn&0}j z|JQ%eKyK~3=k~Avg9eH~%K_@o{j&f4`TpkP|2IAV-|_wbi~pb|&$-bi4;`93J=yg; zd)4&}|L?ph@<;Cc{)~D5cRSDdBX9T@G=Kg6r~T>W@qgQY#s8fC|JMJEr_fRHBmcd@ zLpS?x9<km3M_>B?o%*`B|Nm>h-0y$>%E#S@Ew111cwGN^KBV66QM&an{Mr6n&k-Z! z#a733|9|`6J@wzM&-x#KgIYBa`sepg`9JUftnGig|5yLxe^vjs{@%~}-}{ew*1v!L z|JDDM|4-ch_r31l)=%@R|1AFd{x+y@z4?0mvHvOS{;&Oi{a^O~qyLZo-wJM_ow5JF z_3x~IfBt^fS=Luy-(6kzu^yCX|J&Bp{0FUas`&i>(f^*n|Fw1JZ~vP%uYT3v`jS20 z?DPJu*Zo^OegD0`@qhQ<`D@R>aOD5jdeCyJqGO=7GT?Ov3=9hA|Ga<xeb4Lp->2Vx zKilg6zfbRfF7Mm_-)8&IN~>v4|GzUh_kaKXJIkI={bXMH2Q=~%{eNT4FYi<P|N4VG zJHz_lP2+zW|Msu@6L0lzrtROgkM|d!`M;*}|JqAm_CLD$rysJyW7f0%XaDybgI0L# z{_mc5?f=RDOOM+tZ~ecx_y4Sz|Dak)a?!u}*8i?o|55$F_W${P|LR}<oBw0~H(2AT zAvI<H|D%8HQ^a!r&i`Z|_s@O(f8+cAKl}eS|5(-c&-LZs6HA{S|65o3^#9G*Vn6Ty z{&ipWneKnp|I0t|Z+Y|Iwd$Yym*4Yy{}=w128~GG7rdnZ@A)rr@H9Cnde8iy@!$Oa z!5`QE*RP*i|MR}~|LpVeReQdj2d(mX3RyDw6y_L^28JK2-(G+FZ%y#}=l}lQI`1$0 z|J3{0(J$YxJnR2sb^qtLe`msb=f^95{R;p0`&s?6U;5R5_ka2P-|P10zf0Hs{r+e3 z)aUgZp2z3yzh(D-Q|W(ku*nPz3=!+!yp~`4UwyOtYvJl?_2=y;{nrIGu%fU37km$z zd7bNie*d0&xeVWb(V#irgg^Oz^8fhj=)U`}_tIYL|Kq3of7$2#f~<Q2O$R^zzx<>7 z@Bb_R8~(qX@X!DM{(8_Tcwc==*8g76fa*Vaga4EBp>5o6|EK?d_P=<UeG;g9@%TtR zDB*zO8{)i%$}KnkFHHHn<F7q5Gr0TwKmR`bA3_O4A&g9rk$-;s`DW14NATK+|9kJ{ z)cvn{`}2K&z3Sg$?Z1Cbr~UZ*Waq!-ap(X3JypNw&-=*#SLf~j^5f0d|BIjh-@E_s zzkiqB{{I&g{{N2r`BR_vfBgJ@*`@f~|7z?0|E_m?^&c{k#lXPudh7l>>)da}KeIoc z7W|=_$SH>Sx;cH@|KET4<M;34FZ$-QZ(RTX&LF;W)~~v!@&^CR|C#?==>Grx-`ty@ zf~)?o`(z*XZ}tD;<Mvy?&Basp0`-65h3n@i|GRDUFY{0T&-qWE)yK{JAN=q4v;F_- z=l!ey_AUN@e$~I-Oa9FIZ~mWuP5D3d%fI%&`5eFF-{RQ+r@$lLxtHV(|Aia>TP3@` z>wo0`{6DY>BZf7NfBWzJ_m9(k_kY{}_;;YHZ`UpR@Bg2_`oHu4|DV~f|2GEyuAlk+ zf7yTgb@h)yD{W^R{soO<fQPC;v5*i08rACm8UMNdQ~cljf5E?}um3;Y^8Z=zLMo67 zFb=GplmGtzow~F2eUpCIgO@k8>s<eTeCPYG{9BU$^Mhu{H!qJzq*DflAHG|_<7cny z{{DXcoe8uu<rCQDCH?<z|K~sRKV{~B#<%;w#s8I0{&)M&{!jd0GXJmr&wPFVNBfTd zTlf8Y`(OWG_Mi2T)f`uT>)+dXQ%Cy$pPzpp{r~t0+GDLR?}+}l_J54s-&gim{-4_a z=lVZ)?f;+b%l|PmDEy261S$!CoK<`G^J)FfAJ6}N&i?;D-t&KL)v~_(vd4D*bCdZ$ z`#%fVhY2Fz{!hkO%VmhRmMi?9`>Fb;`*VMa|L>pr@78mDy^nv~uKd6CzYw~pYwhX% z|K|VVfBS#ZU-zf?f4KkN-}i0*_pkH!{xklkUi>%z@BVM`zd^01^?%*}Xh;7E{<U;} z`tSR@|4;t=v;9*%XuLkvzy9^V`ftDIgBq-7uJ8XM{r}GL|9{_B{=AWM%&zX$|6TR- zj$iqB{?q>NKjpWAmR-;K@%GAp`HlboulaLEFurcuzm=bUPk+6C%f8zB?$5ive>MMF z_3~4E^}k!^>*wHVd|!IJyl(%G_&tBtYySUzde77Pm!Gch{=fSF^xgl}|ACsKihnQV z|Fb{z$N$^k{<HsQ{_mCnjU3;%{+Ic8`p5WZKk8dv$NyapUXFYGmprHuetrMz{da$v zzXq?d1TFfwzW+6-&nW-<*Zugs$AQ1SZ-SR<EPu53-2Qo=_a|-cjQ;Qa|LZR6DN{*U zk2~A<&ByaEE2{s1a_Rj0|EGPw_5c6BKf(LI|NB43>R*Y@?tk8w%}Z<Ee&4S5zj)n$ zjoAMJxqsbre=Yy_-+lgi%m4p`^8fDt_ut~B`9Hb$f4uwa-K75anf=pV3+kEd{crT> zhkEq?{bv88|NUP)b^q3@|3Q7hNA-`7{Qm;(t(E_C?>g>YG1vBAfYACFrGJt;|7`cD zKl{_$KHmDj@$o<L=l@-gzZ5V1zuxS>u;RaXtN&){|Lq_BiQo2b|F`)6+n@g_-SV-1 z+0S}#jr=wK-IwV9)2sijF8O1g^f&&J-FAupTjl<@@A}ugzW&_4f9L=FkN9}M<KzBm zkJn%Nak=C5{x$#4TmOsS^?!TY*Z+_HKbjx;8Zx|fd;RSnXTGh@|Fit-zxJE1(f=pe z{=GTB{!&yoc;(E@{}cXSl3)7|I!E((|H<?GCI6fMyx;x*zSL#=U;pHf{eJ{)<E**7 z`0vhVVY}+5{#?HeX<lZ^oB7wP|G)3~DX;l=>+|?W-$CmXH^g21_J7lV*LQ!y|J|Ne z|M7ps%l{VFr>6(}|LFC1`~D~E{#P%*|8M^*`>*nQPyH7nm{Zsp7#J4Z`}X?VPm$Z} z?Q8y>{Om3#3u>Fym(BY>>G#j|OJCo&JNJKC`l}yrUjMiGKRxi({=cdBKnqxd-|m0@ zf2}t5Iks#6x1axiSMmFg{FjiGp@=EA!Y}*&AOBllJM~@t_xsP+{{L@Vn;rc>|9|~= z&?*ZC1HIq>PyRov=J&_A`d796|L0SG&NqGk|N5h!{*X0}%4h0t|Ic3ojnksd|Ma)3 zJ;q$Qy59bO@Bi!8|MD;X7ltnK1eHb`dNN+uN7?^30<Bh?-?ts!^7#KVb~<>a>5g^Z z-v533{d@Lr@&0T5@#{a&{r|7x)an1VwFOq&&i=plv|j7)`~1(>*6(iq#D7HkfBNhH z?%wsU|LL#$e+IO!JobNQefNLK|K0ynd%-?psC-tx=D+#>#-H&|!R!6Z|F8cGT6_Cv zHhA#^$XQ^V^uyx*z4=>VtM}^X%(wr)6uMVo=hT1yq`d#seTw-HYW~zcwU7G;+4)gb z^X*st%jf^6ZUe8|d;Bw9`~3fe^ZWl;Y_I*7`uZPuy%)&*4ROCuzpYxLI!}HR@zV;n zRsZgSazE}mTL1Is^H2YO`bm$KdJ_(Qd%bPnjk>RI|8J@LH}Q*i{j)F8|7EoQeu@XJ z+kA80K4;>;6F))iOw^9Ct$R)4tDnnFpRfPB=i~i7ukF1*8{hhM{cZT|uj|*I{=fKF z{kiAz)9wCSI{h|J{}sRTf0W(-$lvS#^@shxex*Kp|9}5~+5e-r{r?17v%dQO|5^Xs zpO(M+ap~*7bMoK+toy(5Qhe3_@6W&Qe=WZJS^vCVcklQ6>q7o5@2lT-Z`0Ag?{^=* z@iRX7|DGb)uA1n7O4t6cjKBSV(T~!%|L^|(wc0oS{r~)r*LA=D-|)Zl@A)tPXMg*D z@BXV_@mv4?pZ9mZ<)!<-|Cs*Y|98L5|I=UB|2rS`KehjV7kKH^)87AEHU3YW|Nrr? z>;Jd^U;hKNo#vPSFXL<fKgIuf|NP^(|7Z99JN>Wz^SS?S_x|hu{<q(I`Twb(;*0<N zetfn5*Z<;W_kaEVcy9gw^{`d;U;oFSvw!|4{|ID9&1u+<nzQx4|KI#?81*mRzy9>6 z{Uv{Pm;B$K@$vtyzyITI{$Kv|U;U&1JHP+G`0w`ri~sWX@0Y9nZ~oW*>->-Y_rAE_ z`M>-1zvuJ*8^8YH51K~!{eSw_|KI*!|JNV%f4|WG?4AGXxBQq6t;RuB`Ta%zKqb_% zaI62HHR{Yu|NM@=^Ev&x(m(N^|NE!?yZ8CN{PRuV>2LRQ|1W*fpZgzNQZD}Y|L0Fj z(0Zl%InVF@cl`JL?EkGx>)*laU3P|skMZaK<-h(q|C9Z-&-dMY>Q8<aUiAKd)}QsT ze%iWw-~aFUuYc{&^XKI^pI`s?KRy2c{U`s-zyJUH_xldebTmT)>*IJ(+h*qD{d+Ip z|NYZ{>u3Ay+yB>_{Dl-%i_iVP{U5aG=U@D~fAY8LU;p3ozq=1}*^+(OKk5JLSN~uA zU;Q7bA$MTMx9PVl9tnM(Kil`<`;ULRpZ(l#edOeSLCCVIdH*-p{JL7d;{R08&}cts zG1I$0><kWn_CEpdIGF8w=kw|Rn?9cZ3v%}UN&kL-@sZtc-BbLx*W#b~e@;+gz;Hlg z(cAjef2(UT7HRHBTcqjz^Zn2Dm8bXr*#G?hf`8ZlJ%_H%{9XrIyYQ=j&)fR<&*QcK z?>ugQ>;JyD_3vNXSN~1_<Nxf}{a^K<X6T=I=vu4;e?G_GUjOp^ef#rCuYP>rzT>(0 z|Lve!_x|JK-@$7a&HwBFJ1_C|{`2p9-sZpjx%}3D_v6|BA3ytl>ymvrWXSUL-T%xC z4u9hRU;lCchkp8>`+wo9%s!p@Usrd2_rJ>eoqzYO{QO@3|GfHFKYpJto;`nga^%1F ze2@S9|9v{QDo(RL`1pI!hJ~;4r<d<v^5^z{5zv~rosZ|+KJI@6+MKlX@%)>Y?_2$| zKK|$Ytnc@=eE)0DJNv)mKWH)9`pkc~|NOTAukiR?|0M12{6Fzke~g2E+u!=J{^ZyE zzw^J%SA6w<=i~al$KyZU|MmaP>;Kc={qOvr4XF=6olUoIzvJ)xcTT%_?Z4*#$4~3O z{IdW2*Z%*Odg1lYU&K$j*B=vAcjtY0_`msk^Cp5;SKLj!_bL8Uz1Dw+)Boa^Jg;}z z|NrI>`Rn^X?*AkHUse&d?{VNy|Ihl*@;&u`|9=Oq6xsU;yfZEP{~6Fs;lJsaeaD9V zx9aY`J8$*1>fQVGfB#(hxc<++om2nKyY;7K|1VIrv=dP+Eni;`TGExi>i?$e|Gn-1 zuis*OKmOIN`t$bDmH*hQ|2_S-`t4`^=<i5VPN(+$yZEc#sCtXt#`K@x|0shNZY^HA zzx1#CNAR>t<(EIFe?M=$_GJIp|JVLAANvo2M=m}3_kPm9#h|f=)&Cza0}WJzcMtL# z{HvF$-|~O{FZs{*ywCoB`TzU*{(trFez-6DcK^ryfA!D)Gk&)JdF_Ad{Qrl(=KlvT zz)Sz7eC+?5|Mq@=KnVwFTw#WL_g{IhYyG$XFNS1>`XgWd|EWVAdI0AcC~@p#;l5hC z)9|$s_g|lV_Wk^IqGs#ttNz^w%|7Vg1uxt?|M%k>o&VDI|MRr|Zhd?I`S<<*)0bdW z*?&|273Y|-?qB}#*ZMavkAK~7t?~bpeg5D5CBMqscf5?R`dj|;*K_x`g_%D!f7X=! ze|r37#qa-f`}Xg*cmH3sxwH1~d%n+8m#+kk7d)<iT>n_U>dXIo_owOFFa7>r3pAPe zYjhdk=rX?1Wqj0F#s?`RUT@rgXPtW7qkqfKE_?93;$P|KKlf!HJ^A19^8e4jkc}G< zg{WlD<Ht37_wE0C{`K4IZ(slZp1uG7<3E2Y4T#&qGynef{rUAfYybYdyY27&_*bvy z|9%`9`Om!W-`$X3*|+zfe_#LqyvJXp-A~`9-~Q_H`}CjZH*&b@{2zafzj?X;b$xjN zXyM4OdT`(E^8PQs-e3B9zW>(aOP_*2{e1K9bpPd#-~L<6*4Nkf{d<}w3?BH^_7A?l z{tu+&w*T_t|K9z&(RE($?}z?7eyaX!{ktFS-@sFbKiMDk|IdEZUwouK`j~z1f5ZQq z@BBHh{ki^B{rx}J|DV77|NOmwumAg=ub)089<(W}@$0$&DN&GBUG-aD$Nx0{pZ{;a zFQ_!nIu^h6ap*_;*Z-kCEpT8qbiAoo{;&M@zj@NHxBo%yN3bwDk$kJ}uHF1p@E)9b z|AWBGP<md0gI~A$@1H+)3Vi4PPyRpglYR9s#OetKhKBntyZ;~m^?aM%{`}9!fBoP0 z5;6+gu=56J>`lk=f8u}p3;(kJpRM=a|B3%d!e99v{}#vmcewXs{@?${PuD-L{~NC` M=|A_`>8n2h0FrVZdH?_b diff --git a/client/resources/hardnested_tables/bitflip_0_081_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_081_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..c5426ace646e99581c9bf3e599aea1c528cad147 GIT binary patch literal 5982 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_081_states.bin.z b/client/resources/hardnested_tables/bitflip_0_081_states.bin.z deleted file mode 100644 index b8f66386b94b3d5f65a1c46a7b3d84a0fe4d0195..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28820 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 L|MUOK3}FHQO_uU* diff --git a/client/resources/hardnested_tables/bitflip_0_083_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_083_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..3421417ed6aa076fbff9b816bde26644e88992f2 GIT binary patch literal 2134 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_083_states.bin.z b/client/resources/hardnested_tables/bitflip_0_083_states.bin.z deleted file mode 100644 index 81c4c59f9a1113bc54f27c95652cf791a7f0658c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15336 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 diff --git a/client/resources/hardnested_tables/bitflip_0_085_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_085_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..17f1aaeedc286771297c095efae707645c1e3cb6 GIT binary patch literal 2460 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 NV>y?Q%;C}i1^{XXO4R@W literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_085_states.bin.z b/client/resources/hardnested_tables/bitflip_0_085_states.bin.z deleted file mode 100644 index e642accdf9f1a613ba375691cca2c3f9ed9ffa80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19596 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 A;s5{u diff --git a/client/resources/hardnested_tables/bitflip_0_087_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_087_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..5b9302627461b3b91a7215180682458fcea124b4 GIT binary patch literal 1352 zcmZ>Y%CIzaj8qGbd?dUii9zFN{r|(Uva%oNuea>j@mRiN;(_=BvY~<vvauWt4Gb0y zju{;fIPWvS!Gnv79WG?>%xE}q;RFM($q5FAga&rDUMaR_hm<31Zfy<>nadm)m{}Ms zOfoK*NHMD^7?~I`F#8%YFi0pc9$f6!xZr}MA>+h_6Bwj2ConJ^WZ>hKGT~)wIN8C| z%hSMc*{6Ylje|jCsvwi^D&JYcY7467sZ{j``+L4Jk#KXHx9~~7=fbVF?hV0jCOK4P zd^xl6-Qu5Tsyg1eR%?7=IW$M%bMuOWPvx)dTkce%%_CvMCV%0LY^>btue;{<U7YxS zW>10s0eg<4-=-_8RKKWbo_wC2)thJ17onY^6Px~Yf1f#jU$t7?syFPrjI5pBmTk7Z zW)aSRs^CGXtowH>KGAzK>YP9Ao*q=)9<oPRzq2HML3Llxao2te+r>>WoCjvgE`7b( z-sqRGx`V7}IA=|taLbGR4^F=<ihpEiw^&>D#3!zD{YTE{Q%ckwJ{WE6>92UQ&SP&< z!HNhQH)YlnUyq6YZe~|*J=A|UW}P?l#MU+*gTC&@>Do8+82`CHv^{t$cGaf22fx?{ z9{Mp^{FTI?LuJiJ3^p8<s|sg4DEp$|h2r#Wd%PE(oSGI=rnOkoJ!$C|v52B@ZnX$W zpG`WltB&7^J^Wr-;=Prad%=SZ$1G#?f}8c&6T9_RPdPm0)eNH#F_PUI<{mv{BWAaG zPuYwOB_-CE#rQ5yJb7aGbeF?2M!zLqL=^e0ZkDmIEVU>|R!i5D5&6>iK+Qm2>d@yl z<_!h)8Q<Ht70CsbEw3z>tTQ@M8LllR+}eFA&fzT|_l3AcU+#)0l+P%a*m&x=;-pXP zP7g|w#SfI|$?|m`J`sFPzcb<FjKg2#HBTP;5&UoR)T>jc-;OxUv*AST)@Sl_e)m61 zD|O%ZxBZ{ByZVOm=8Zqj@iFVKt-ajvHR9W}7@PCT?FW9!*oFi@bpN2Ev*BQy!57z8 zo$W5EEhkf!b4w&P^BDE)d!;8N!?Wqg#!jQnk~60nt=ctJXVR;6Y@w&Z*YLzGNN(5> z8JYBIM~ohy#NjQ+xwYHkH|z{&tNy=yx|)^om%ZgPzn?$%wrpNuxqeSc!KZ0{%uQu- zyS`snPkK<DzeoRe@WC`a8M~kE3v60mb$xNy+Oy=q$)xyS`$7+1+0Qi7u%KtgX<@@s z9%bcKrSUKJsULgq^j`FaU265Y=Z$ilr7_xH=dABJc}l!%y-Q+y;xwbv&CSXSie%(1 zKk2Q09`R~l;)S9b_NE8Bh2Lt~PT3?r!(cIA%ii|xBdOB^AK9vN9-O{uvW0QeNBN96 zHp8CeGxHr!f9p3am8|9Wyf=@1YDHV5&G#z>C7xHS`{zEhU;Ad?@<achS3ZynR*O-2 z*nMJ7UoeklXwj2-_FDIiH{J-oBD-2fPqZy8a>mJ9n|4^p*sNQ<;OBLBzV=JsB)?gf zmKw`@-g_UuC8V~}OMi1{h}{uQ%|@p0CaoU(mIN6DvOd4gB63=RTUq4DiH>8ghH=+9 zVpL9q98C>POj<fEKxb;=lv6yxqTVVgp%a^yd7KmrP4$Tky5i<><WyFVq|X^2BcH^n zMpLKx%s7;iv?g+5Yto5LYqZWBJKA;H<Cw%L9SI*vH6Jy$g=s63c?=~@9NSh&8m*C( zl!#cyab{`HGM<I2#Wn@boGd1$u(8e9$j2acrlHY>p2UcQQ=85hPE6L85SBQjX5_Oe z;%JzUVQZUHn$M|V9XG?CC8?7(Ya1m?CL1^#_#8UMIb$==AvJ^5MpGqw487(5={@Nx LSg3eJ-Qx%V?^0w^ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_087_states.bin.z b/client/resources/hardnested_tables/bitflip_0_087_states.bin.z deleted file mode 100644 index 1a844e453fc1180d56773314918c336ba2e83408..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9176 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 aU+7<R6x8f?_{;y1eL>fM#xH9(?*#x6|KwKy diff --git a/client/resources/hardnested_tables/bitflip_0_089_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_089_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..9f37987c7e7a9c378ddd33bf4ede7ffb5e569f8f GIT binary patch literal 2505 zcmZ>Y%CIzaj8qGbJj}fE7K3Zwzo%D2>#8>gFbIe+2rvjRu&~51I59Xdcy>GxuV(;( zS`dMXB^WX;Tx?0Xka5`|v4O3ZSHjJgt=EJNhcKrXQ^G})1O}fTA4X44VG;Euz9wI# zGBPe4@%Q}I%2oepsrUa4PK$o+ik+sj;b^zgnl<`=dPGw@lTPqyL?+ENN{Z3hcxXCn zqG(FsG>J_og~dXR4jj`oW;OKISu@q=kZ{*@ZZWqo!)|SfhoJ_M&SGL*7LARQm9;j_ zl!#b5gJ;swgrwD45lcHQHl!My*>Fr})67UWi9<&x>nxor!<w=&SY*ShL+b?9LcB$0 zEIBlpxocUl;-t+IiIPT2$21EjcLW{~3tBlLuq#IKpgUKA#lmo*KGCi-hLK@9?wne4 zTw^o}B2tYcjl9J|r?#agPUdk7V>voa%yVjLM8ujj9k*buq?3^;M-J=EjP#jtTG)^$ zq9;OfYR?(TZmlWxho%aZ>;Jr@z<ufGnrSMZ48nJm?2w<eTQfdu$?r)$Y}%p`OYf|- z?(9gN@L#n}V#fZef7~zL2>zV@%3@VKi;WmhjAmuX%TMfHFC&vur%s*t$LEaj(!};x z*4hh?$=<(G&3E#lwersPhEoNp;hsnRj5a)YP<Z6jW5IULL#Ln2Rr5da)AszYKl2Ws zs`B@1_nW-r(RR<HMbo*P+ht<J41TEZ{9I^JbMws{zq!UALX}S~-W4&KTjk8DlT&9J zt0f!$nY4VPXQPj^z)S9BX%aeTPIIe!&g+xmv%k$J7EvZUN4{v?$-5<TPZG-`zsc|U z&8MfQekHbFHTBI8$->$-GO`xQyEeQmsr&M$?T9Kr6Z1jM84C;rABZR&I545}q{Gk6 zPnKVs`Ly6zOkDFDyCc8FZ|vrNU7M$$bns(Md=b~at3lI?YMPl<Qck3XN=$Q{aWd&> zhh)lv!#rmUHk_JtRA*(RHdo4tHD}f=OOtey^lNEes_-w-Y5s*N`!^=K`Scu?Xfx#5 zBrNG_th6a5RMKZA&&;GlrzIopcZn2o#dsx63ruB6X6%VLEIM^cKdVvT_bCZ=9u|RJ z1z*B%N&0L|IB{BBWOtitjP`=VH&$9HOD5|y^LX<l9nm=&kvgL%A}MiN$e&3^16#ve zom=%34uvtROm|t@k&v=Rndz9C#NkFOWvvn&omjbpVoGxY4z}q`jj%Tfw0D_!Ve+EG zYGSdIp9G!Qv@9~sYrbj0nx0f2i>V!l&akDN*>I}RPt90owXvE}&(RrgwDyO*I4PN` zlM<OaO|(2@>Jz!vm$o_^n{|@T%r>2AbXqMkEiJ7q^hO*ztDCDt=v>`6Lhl=^b! z9G)JXNS#%uElxM<u?x%ig!628WH_B$f+sEE#T)0&)^`iKlK$@7;{7OSW>BQ)l+}M0 zeOfuis4ZlpnoeZukqM_}EG!RIe#4mHQWX(#C^E5UO{&5%qZ!8(n?<LrQ45XqIpI^N z&RB4CQiAs>yG=)@AKAC*a5vx7f>b?m&eYbwCtJTr^1rJ+E^5Qx+LqX3agLvR$%pux zvi%GCQ}6n0cv<KCOGaPQTC@GtCu_d0(;JWc_w3O-`A?SpT|~d<iwarclar3g-U$6D zYjCD2%-~1+hX2l856+266jbwdFW*=YtMx{&ulpu{LP6?eJ%hcra*+?qQy(OJh>P(t zcq}ixyXlOz(Qb=Jh3S$Pf6PDmvc~V+>&~f1+aeyuR9X3nPo47MR2fggIl~!`X12*h z6iRkqD)|#x@ZDa#@n*G*WSp?*#fftw9-RCn&wRJPu*_QB|K`_KRk71c3v1dB?E8Li z(<a;QLvnIrRyFQN3U)=lNEa4grq6mwrk3yJ#i_r~i7%^lJyvZM&NnBVPj9+QWvtQq zl3hmXB{iIvY-b#c{By-lDdkg)-q8uaT@UNLE3<gmbMz0_(XVRmM^kIr<PIN}Z09>J zYi#u4%?I1de|6?fPx`b+^3INzlKm4CZ=5=Q=0p9}?oDqV{5`C%{vmv7weXE(<(+Tp zFE83XpYcsWOpI}3kCl~`l{){5<0mI?=9_u{SHWZ1o^$8s#L8Dy#6SEPzbJiIYNh|h zr#09450;h1EBxSW7w1zK?);$>er5OcWQ#LDm-F8^7WwX{e#yV(XY7l<>`|X`e#0NX z$*=rpzLPh8Z);U0aZY{5%gc-3$y%H~@#ev&U;NB>-YhSj@4UFP<Xbx5>zgU>_C4Nw z^5wyq2aiiUdVE@6Z)#y-$sC=ZvQ`yw({Gj8%<S2p_?e&k;`D`|L*tEjA|$mpeOh63 zDu!hj*GYl>T|JZRSz^RrOcxf~Fk^DZk>g&Tsc%x|h~7NBsc>?e#tZSuEcQz4&dh%s z@=f%hRp^CwuQ1ncm4a~3&YPhXq6cC*s+R<RR@yP?MapR&qsSylqcc8MA+nm~s&?Er zji%`@sPI~z%KD45QD15GC3#k3d6tJqKg1MTmCT&xW0*SWV6(Q)rlUPQGbE?`wLA0m zNnUtq6{};+<8$75N4ff>2Ok!`j62U`&G)=i_HyIl|4OdvEJ?vZZEgvs(-M15N@~qm z7IL&zEhN!Mo6C)djb~|?Xey6en25oKRnr2yPIiVS99d>G)noCuP}MNKmVifE%e1;# z4AXQLc60f(v2$u^{O6b}(b#h)X_v}Om4d}e2dDA$tVl9U4LK~4*yfY6amGoDm8n_} zdJ4NG!*n)m+HhuO;xsjhWnrAtcn%vH1{|E&<`Wi?I9V%M<iu$<H6uO7o~aVkISrYc zk|iA5Bm;FKXQ)XecAYddOm#VOO2_Ebsb!%PPBu<WF^X7eteV=fEK(v>Sk0S9TT;_7 zHF3h4qdhJMyTx4FBDz(Z5~n2^tvRe?kaTKeN-|F}n`X17#iV7DhRuf4lzF@jbxuYa zITk9NT3Vo{be!R2Gn<&v%1K9pnNA9GB=T&~I-@#uLefT^gp>_QJ||8#q)zkfI;|6| z6U;eH;Hc4RO(R1c9-gG6q>Ym$Q`;ogNTj7Ut?@dvX=%?<A2-zrsXCgi6H=R|3woR} z?37s3b2PF?BI(S@X<<f@X_4M4M+{RPXC_XK^x+MWaf&oboz$}-Em`77vSI4PnNw#* zq?|E2mNYHlOhj^O8mL-JZA&?0bXq0Vv*D=G!Io1;7I(NAh(t=Ng?hJ4R<zKX%+s}D zM!<nXYgQO+>{+AZBhmAq>tUqC#xS*1omHojHXJ#U+BwzDAi~JaC^4dSYS5_-sYYo& zY&u~w3J+8dhI1KhO6D;-ESY4mA+@pN!Ny6)j81b&L~LvmmRKivQ0P#?l!J|t(|lHJ mj0jAPSf|EVut6qqGSkL_0yZ9|ga04B^H|O$B#}^R?EnDjR#rg( literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_089_states.bin.z b/client/resources/hardnested_tables/bitflip_0_089_states.bin.z deleted file mode 100644 index d02b3c777a1ff3dbcad6fdfba1ba2ba5fb2b172d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18253 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 aYA@a!U3c?)blnY!>u!{O+shY9MgRbf!D5~O diff --git a/client/resources/hardnested_tables/bitflip_0_08b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_08b_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..0f42f9246873f34d5cc5111e9a5fffad90e01ac9 GIT binary patch literal 1469 zcmZ>Y%CIzaj8qGb%$sDM&Y-#d|NpPyj+;BbIEpw33J5R=I505IVEmXM=+F{i$<WZj z;C}M~_kIQhU_5JRlyb4<prOeDHAWu6MhU*m&dF*$YMh<R7!5cQdN>Xg`}oW>Ni^{B zHQ;P;W=U{ko|TkxaxrI9Qf7k>lY}ypfy`xLHD3uIVPPMp1c8GRf(@FQPKrxTPIjAe zYu>C`70Z`=we?q1l9*MIku~p%?XEzsKO5o<jclL3Oxjm;T;gHEi@p_x6H|49StUcK z^Q~LXGqdNIm3m;L(Q1hq%Xma$J)av&Y?>BnbXsD~Vab>nD@kV^Hp9r&X(4v17ZWEd zHrfSE7j8D3YQ)Zwq+0XhL1{$F=?3eWGj_y^DL0mA8$Eio;lyFBWIndYgvZ=GdSVgB zLt?bv%#r0@8SBTERItNB;^>8Cp{*B>rKP2ZmADygN-Oo_?%8aV?s!~q=Kq$dZdyP3 z9ri7kkNDxg^s^l2z2%}Ur&s>>-dWLnq)fT_R7vtHnUc`*br1i>7r(Q~^m}|y+kVpN z-}{q)@7l9^^M|;rzc1gabH7&6ea(H%C!O^{mFM@?u9kOtwffe-KE?0*yH8ZI#C`g4 zuDSbQ`?ZaK+ibGMoBqoEw(Z~e;GIumd(*=g@(bVbANcS7;=Syvf9FsB+&$O-==)WV z{+mu`@2qnVUVUqCdg{d+$BR}kP*eI7Sg`a+cW3-Yr}g=_T}$mQ@4Z*UE@LGh{LH%Z zu*l&Du}6Pj?>IkUx8UP4;gxgS-HdfUZ`PA35ngrNP4@Ig>-$NEulx_3=iWG(XPIFS zzvAb4KcA+~h)a4=YJ1pX-{g<>!Hd=%-Z-5<;hWyqFX|5}tj~Q<eP!RZZ{x4NuQjco z_?_gIH^#B=lHc*Fphok?Bl}>TJqO>f_xc?yKYLS^{FUE)oiA;~XMAZtQN7S_;YXgx zWTTDkOCG*k?!4!n&ZElzc5>6~+OO613vVimseAfo`kUY9&KsXQZ@lp6XWMMMi@)|g z{WSOGy_8o+Kd63K$L1%#>qqzpnOOIf=R0Qac=V>UR92kNc;$3Cb=T_SVI_7gudJ-B zjV%uUy?d^$W^vzng{s*3Z)(zKl*B!LQEC_XQjWdq3w!6qJG=F#e4QJ7>i7ro-b$an z%J<kC@0>fgdhx;|AL0cs)*V0gJ>2=qnUgbTR@^feck>UN_+V~$<H0+h)_c6#-FH0Q z^}>tFd&k`WY&7ON+T*-n4L5sHV2}Emy=_)nJ0x4Xs{0O9i;3S^*m!UE8L^bu!)!vk zls1KLR2O-*uHjWI=gq4Yi<>uhom@4qrNd~o(#!;(NY7+pkwl%O88gJhA{&kxgo%an z7-_3{9ogioVl-<~YGN3h$kCozlBOzW7K-_}wn_S|GHjV<z|5m`W@_rBwp2~SNs?10 z8>~su>~T7u&oMRRU&egTsluY#+&mK}9qnd|FbX;rEIH}KVKrw-o{cFdj;g8loR*B( znAl@%Y&f+?$7qe3&YEP^Nt;D`45vvZ9BnvbbXYA+vqxBU;*3o*61$G2Y?_%Y7OXQP zDdp5L$(7TV_86TuOr4glHCb!biJ%pSs(<=lWK2_>vFha1HZjhrGt+boBTj5g+Srqp zCaF1DDCNX4pH0C!ArU8gV%>R?C62ZkY@BgYPh!V1o{7`Kl0_$TORQEpIdi7ZGVYe1 zgEP)7i%jh{Ix4AYu_MXI&B#Y*!>KtTIwv+x*^qE7Ojs+~Sn1%5Ghv}Ip@-R$6&{Nm z@i}m2nvR4~!P29FU1tm<!#JlVEt5zKOEcQBVy0TqX^Bm4L8oR;=40%f=2ftAX3!bK ziH1pO+D2}P)4WoSN_iyBIPJAe%xFz&<7BNF1r~;_N7;l<OJ>cKG}@~2Xy(L@M{7e8 zv!)zuitISEQd&wvBw4_)SxqD5P?~F+W~9L~!>LVSk?z7QJ5KoN1b3@!*4WIf7O>`^ gHcuM21e;-`(V37lD`XP>e=JuCZslZqsa#e7013LK-~a#s literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_08b_states.bin.z b/client/resources/hardnested_tables/bitflip_0_08b_states.bin.z deleted file mode 100644 index 9c546f94fc3137a76851670f94e39eea61efdc72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9416 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 G$pZkFSS17i diff --git a/client/resources/hardnested_tables/bitflip_0_08d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_08d_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f7e2d1674d4fce897625e0221dabbd6710bbdf9b GIT binary patch literal 1788 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 F?Enx7IpP2S literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_08d_states.bin.z b/client/resources/hardnested_tables/bitflip_0_08d_states.bin.z deleted file mode 100644 index e0e985fcf10bb10d009012d4875c141d69b68936..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11330 zcmb=p_4clJ*&3@&3>VCemwjss|GY4MU6`Kya^I#27u1v9pNqV{Z)OC?UnQ15&;S4b zU4MJu+xVmJYM#BAy>0KG-%;}MKd0K4|J+`i^Yiqp#M|DlKfd_B_Eddc&DZt+(%=6- zmz{V!``oi_$Mx!S|KET0XL|hh`}cRhy?#6UZ)C;)ec7r%{?^Z}{rBSi)qh*--^Tx3 zTkqAk;qCLkS+PHF%l-eJvGAY$_Z#o+?|w^vUBB(;|Eq;>Uc9fj*T22*(AWQe<Lkel zxSyVV+y3kQ_xtUC|ND9DfA!P#Z~sTl{l9+wtzU-!UjKLh_W$eO_tn}zD(6Q3m;B%R z|5g0o?*Fg<A20kP+OPj#zW86g>HlIAyKB$pXPqj1|NZIH|5NH$z5O44^8ehk{qy$x zvpbt%_w@g>egD#4|KD!={rS;)yS4vs&Hr!t>;LN4`+uH`zkl9-{{PAUr~EhhKfm<< z>Fd{T{5gI7`kbfn-~ZhHul{fO-`oGEZ~cE-?!V}N;s3(_PfP#LHvYeR|Nr{FKkL8c z|I`1k|8Mc1Q}eC=C;ty$_b>jh^#Al-|I=^$^?&z&|A+hg|K)D^Up?>V{@?$1ZL9zO z-_-X1yZ_Z@|K`{J71sZ+_&@m{*ogo7|JVPIfB$3c_xkStEC1L0tp9BPHvVt=s(OX> zw|;z|@gu$clYQ0ydw;ꢸ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 bJNAEsK4ZuKh5roy3;%Dw`iH+fwfPnRr3d1Y diff --git a/client/resources/hardnested_tables/bitflip_0_08f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_08f_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f66b803eb3a6730a605ed054f1187db6273e5ae5 GIT binary patch literal 1080 zcmZ>Y%CIzaj8qGb{K<R9f`NzY|Nq}tb0;^NGfp`u$uN^afI)&O(ouj>fRTYkLSROh z<jEZm*#0v>K;dMyS&2qQY%EC`2PGUA`!H}&OGIR<$_2GqnYM0f4O#s@%U8beSJpWB z!qld7@|Wc=MM7VdYX6nHuKd@3re%M{pE>8x&b)Sb<BiJuZ)(+lT8aPJx1ImmkMkF* zAD=3Yuc*9V^?6e@A3uBG*~H4od%Mr<IelYa@{xbdm-scmSkG<V+w+y@;fyqY=3nBS z4?b_Ud0$!ZZHM8@*zN-#{EmK+mtI>b?s>^-`iipknoo-@_0su#zQ-*}^E&!@rvK8D z7GjbS2X@I#teB^_`Ck3)55;wSORv36i#yzSuwt*?<L1e43ck)u{ks0qKG93>tlN|7 z+!YT#`dBXcYhGB4jNIeqyB3vwUhia=8Qv+|?I+VSW7CtwC$Z<5*X(a@yk&d%Ut4&? zuc_a5l&x3z%qG9Lbbs~M_~e5%s}EGa^KLmTr@rPF%fp(UGjEJu$fYlx{-pN!ts>jQ z@|v$K^xS0ACs^oRdiEo3yYmz4>6g|Yso=|c73OBAJn7HzZ}B?|c3=HFPyNw{_ygbO zy?W*Us7x;X!F%CfYs6Pp&8$5Ze(lUFE8$1QsWVFSBwrX$zOnh-j~IEw6Bd=i=WO~O z%PajBKQe!#h5f1jd`rrfN8hMfp8T$4-LvqZ`f&9MqcVM`W1eUJT)&W3R3JaI>6NYW z%xkGVbHu$)uQ`}FM`td#mCrHx9cTLZ7FtRkN_uI{Q?e}R@X8pGDwa2V-fL5*q+ZxC z=W?Up0$aX3|C)!_9+t>VOMVr%*?7s5PivmYo}0Y3Kl=E`chxcHw)~NifB36!>w}ut z8-BD0eTcix&i%mV^c#zM^IJdpqxP!4<PWf8p4hW-UdprO2a3HX#-FM6{?GUH@15&= ze!G9KdGGw#sOosr!}O}3Gvkh)cwr%FQQf`p{-t@#W!jTo$vUsJK6o-suidGnulbwI z^(Sx3WX@|mcvhzOc<U3ZdDqXK|5rNQ>5Z(q;*;{7J9qLt5c+Gh<lBSbTdRV$YIyxM znX0`qC0HW0TboldB}DkWrqPU*lT{^?mT5Iw1a?d?S^eV3la;9*Nr@VVSsPnhTiqfj zGoA5BoNy*2=~SD~rlc?<F*l8)1~VfAJ5J41b2_p?D$HYx<7AzrnMP>|XLzQGB_yRr z`h*=d2~F!vGSNs&ot9#>CB@V=b?VF<U!AVht~0BZm8Kc!%+N7NN|`JfnW}7Xn#<s% z&x~b~T*pEr4u(mxB^>kG*qPYcvnEl^$6II3%%GGbZb`us+D1#;JbS_tbvCU^Q#!+J bFtasS!mw%Pq{#n|-gzwN5|UTk+0Fm}wRZ`O literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_08f_states.bin.z b/client/resources/hardnested_tables/bitflip_0_08f_states.bin.z deleted file mode 100644 index f5b38b5843d6b093109d6ab223f2a568313037d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5875 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 PL}Ly({hx8hG`4pD6~fTF diff --git a/client/resources/hardnested_tables/bitflip_0_090_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_090_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7f559b40cffa9346afc8c0b947457dc34d5a1ebd GIT binary patch literal 1281 zcmZ>Y%CIzaj8qGbZ0N4|&SX=0C+MSq00V<U0E4Il149!7gTw=NdAk)}3ZWt@B0@n< zvr>|hl0+^m3kwS@n<+74Mytt*BS(%12Ti%cAGm;3RYhvqtX$_mfkEwOS)Jk)R_H8d zZJd;;JL$xVi7SFKv?5hAJ%bgbR;|o(O^9%u$h4K=q?c64w22~%S9N>(a0@wmPElNP zV$uc!?$9u{Q%h2Mm_x%>uyw1PT;?q_jcX0Jh^|VC)&_~rOwA>0CX1R(o$7SjXTz$5 zOA}5koa*ed<xrA$Xv$2TY2G?Ukx2$AGgS*jW~!zzi*!3IxiU%D&Dk|;O{cfxO0G<1 zg{zz$CK5{nC$(5KNG%OxUA1zOm?Osnuf?KXJwYo@C`v30NpT3%49Qp-WFS;qdO+o? zsx_zP0;!3*p}sDYW-472X1cIQ>)VP|ZcVC%N|!vBbgM*pB^k}~;Z>Wg8xq*K(({`{ zOwd7@WxNJlJ2n_at=cj}%5%$FmDq)m%AMLGea>2aO@Ai)-?cP(6t8mmQ59F!WR6o> zHA{UQty!DeCYel}qN|kEb<is^Fr@zyhnuEm)JoP2hPkJfdR@@+tZ*<5IpVGAnkmdB z=D3opBxuEfoi1^yky@5Y8Ad!Fsl2L_P9<%c>FcvBm@PP%)oqz;Z1tRApV*K?Jgtwq zidOZ8+UOn6p71WRY?`d<s*R7birhO5D%ht6d{y(vTEAd2$J~PpPMA!M;^8V)No41` zklE=z;hT8kfprJ(%yTSP$<+F$vdXSbCB*rihd|w_sagr4fqqMamZmr~hX^fOwIHjh zsbFc~R27~nid|DPj6yPnRi<1_G)xs-bW(JcPH3W!=BkKkydnoOO)h2mNcr#v20N}a zn6)%)l`dz?nhF0VJy9)^2v%Aw<TEu=YYxkd$y(Z+29t&A&jf^dPPvv=JVm-e`$4IQ zjSC9{3j=Ea1A_va31j;_uayCwP7MpVG#eNoNH}Pcu;4N-FAr0bE0=$DDy`q@B<3c@ ztJXOs$gN4IW7fo}Oh=uyJSX{vT;=8J>}pe0c33O2H1tB$l!HkVuAFpSIn_1cKm;#S zs)X3|wZaqJuFNutO6&EE&^nkD9AwDMIB8l}#u}e)*Mz0BuC*E&tw{Aa(c2bsHaO5| zjZehJv@o3$r#2dDFAbV8wX02ICQHOhHC=CI-oRj<sonw?PH6`m?esV$P#CK1BB9GV zMQ4>ufu@_nVxfssJ$k$}PBpCYa$B*ahiP7>f1+0go0bo^(2}Sr7rjFbG~7GAR1;cb zlrE}uY!vHC+OpLk<;u0D9x0bE29F}#)uaxD9^+ZVHf`0RjP8@(f``If3Z*(P?9W_( z@^no2t?XA{xUU+_)S90XvC^75)H%phS=Ch8Ws6dzpvRw3B|{|%O}9{{>ZYJAE4gAt zd0m(Idh&W43f8*Bc~MhBPb4lQRe4HpSZJ3dueY|E&P<b&lX+$(xXlduc5+RT!D_8i zts=puS3l+TlpkF`mGRNX^wH%h70cw9PbptDYI8rZOsG6;wbms!sa3H;Tb-vIHWjUu zJ9^{6y2HCFxp%oOjXTO^AJWDCRzPe2sa0ATLP{?~I<7dZIushr$R@ICam$h{Ew+GW zp|I7OQWKYGPIg_kQfJnLLzzBm!mdjbSIv-`b>&jx%4S!!)vk*Utr1qbC^fZS^N70O jDnpNxZi<VRYc0BBq;+UUu*m=Jol0{wJbZEj4m1D&)7JYz literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_090_states.bin.z b/client/resources/hardnested_tables/bitflip_0_090_states.bin.z deleted file mode 100644 index f901235a3125f6dc8f137e3668e72f956974bc97..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15272 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 E0M0Z;tpET3 diff --git a/client/resources/hardnested_tables/bitflip_0_094_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_094_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..bcdcbd26fad9f4a3ffa6105eb6ed2ab851d6e46b GIT binary patch literal 6279 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 aT_<NAy|m6);`s-?CtU>#6+N3i#Q*@3grZph literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_094_states.bin.z b/client/resources/hardnested_tables/bitflip_0_094_states.bin.z deleted file mode 100644 index f97d41f4e75130be70d53fd7042ff9992554790f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27477 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 diff --git a/client/resources/hardnested_tables/bitflip_0_09c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_09c_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..4b0316dc307db99d1790c4fc1e4b8fd22edb5571 GIT binary patch literal 1431 zcmZ>Y%CIzaj8qGbWEQ=0mB}TtGVv96S69;k1{MZJ1}6>%28ITX2mJRL(7*zQ3`rv{ z2DZk@3g}FxNkK|RogHSAg;uzKZ<_zGX3_z}M6HcU?Hi7W95~XNkfeD`Crl?yM}D%X z#YUYl)xR_T`MZCqci()&{eWTU?-|nt{U3zL?+guR4Sum<H8;nhBP$a&7%XGcm|-X; zCUi7uGE<MYU}wU?hKLzGp+R3l{j^pc31gY2)uYPB+QNL$AyH*VfJD%GC($aA)o+-V zKG0YhrqQrbxa*K+W0Mb$hoO%$H)q$3h$ROOHnv7YNNn^8>{{d5a^z?Wn__2@#KC4Z zB_C%o5jCYMkt1t@*?7V@8+{_C^2n>RGq;I$9X%Scn47hk`$Zk+p^7kVF`Wpnqe(hp z3SW|H=be9IpZI3pq4^94)=w6-aIkAxnxucyN5w|4A!3bYlHAFr#I6kqNBguz3^sIs zu;Y06P@W+^)#H)KKBq$mj`nyQn$Z)Hw3v(eBG*xm84FuIB{r;@*Xne@fW2vDZPUbv zuDC-}|A-t+>Twh8nz4+rHED9A#}AfinxO|=A4K$Mc6KDqFyP~IeZcU8RhwDhU}uuV z!ZwbFO%gK_9z04GQ{$1JaMb_gzjOL72M&w=73bq$EOB7RjPTY2j|vVQ{h+7)O?+eB zbNK_`!Z-3SO8CjmSidl7IWtSbpXm!9#_;e2b90Nab|oD(l-Ll?$Ispx-kNauU<^;f zVTprpl6LqzC4E@W-Q9h#FzLZOt`Gf=FZy)!xtql|9eI>=u(7k6PmjC(=EDm8MTc+d zIKKF8JLQA7FlWtladC-x>n-GXyn8%9Ma1#&85SIEvzW2(^otKR3cqx0C$?-zn$L1H z;?H!}9|j)|?d!1>mS<YE(T=&}(T+lehi_&Wy0a{A?d+D=aJ0vrpXsm2H|-1Gl6mwK z-?(p*JKQy2>9^d`2jLGQCLcH${Eunz53c1GMCBdXI71ub*RMap{Ix;zf74X)Zz5A$ zwH^cpt>c<nFtO{1H)pqm$kC+5B1gkij)Zm!B^^~3*{Io>utH2LF=1j$(vhQTqTVcF z$|8o%JYvFJ2ODN=@X6FX5Xw+k=rV&ROh-$NM`AVC#t4N(ABi;r@{2SRgCv9^L=7}$ zTpsaw%rNxk=1Mv!rgUhrkhWlBXG?^e#Gy428`iic7<zLi9h#BU6Q(1~*v*+_n3S~P zU^9<a#AK!!J`z4+5{8N1qK0l95zCl195|*hqgz5LVPmL4k84u1NRMX6fyHcU%3K?h z5)&iDg*kgXJ3Eec8cOsSxFic4Z45dzW7Ux(hjb*C@n|-S8YU()i;1=znvpa$(Z!IP zO-#zOH?&PBqL68I3p1zJqp1;H4;_-06fivWY>-fyqv^-x+0l9+B0yrfguw=#h-o}N zF`-A>m^(Xle7wcj_|!$aHq4kYV~w8bk%Gj8qs<cGJcS8I3;nd)#dO?66D<}t9hR7Q z)MJk3(N>A1Lx(n4M93(Mi5%IXBlO_FqX&-+47>QWn}s_p3@i!@djgvdBz6Y3dddiQ z8CWDeI^3u6SRz^Cm`>1?LsJWad|bI(wT`-Oh^dbGe|Vyib-qL^rh#*vMo5gWzC zbPSI6L@-M%N=RDW7<jlN;izGcA-BXD3B$x>iDleEM>nqF@d*uWT5vQ%wW~+7>xf5! zX98o>VG+ZYghYcxF>N*-o(LZuiJpiJ8+CLfmM+sxOghYRG%=!0;ZTx+gtN#Y#m=sS zZQLA3#Z(TniHV7EizJKjBqSXZ6O*WKQg0AG5b_}?F-(oaCs6Uh^oA7&_HZAV(b{Fh z_3$u{8k=Fn#)O1K8;){`jfuU<+y~_tWGa#+HXd-Z*dZ)aq23@<ky!t+TqU@blff|7 GHvj;IO)&%j literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_09c_states.bin.z b/client/resources/hardnested_tables/bitflip_0_09c_states.bin.z deleted file mode 100644 index 7946dcf31bc8d372ff4d6eb34dcc8bbdaf66c424..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18443 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0a1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0a1_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..daa61d3b736109c5a4f1239f010d7152d9dc5aba GIT binary patch literal 13572 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0a1_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0a1_states.bin.z deleted file mode 100644 index 23198e8ae661b566d4ca31a0acd5797d272167f8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43080 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0a3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0a3_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..d7171c287cb21b04177b332272dbb946aa2348a6 GIT binary patch literal 2973 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 VKrY_k|Bv01G!M13AB^1I0RRA(Bgg;% literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0a3_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0a3_states.bin.z deleted file mode 100644 index 3d2cbe6d72971557e980250f203484c6ca78021b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24297 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%0A{_WqgfA2Rd{p9WY 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 MO#az(v`pXx03@qJTL1t6 diff --git a/client/resources/hardnested_tables/bitflip_0_0a5_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0a5_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..958b8ed3d39035f65d4f5c940e5dd24c7383dfa0 GIT binary patch literal 6943 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0a5_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0a5_states.bin.z deleted file mode 100644 index 9e680357273cdab64ef2d096c63e7a7d8c5162b7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32404 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 afBWbDHFy7awHkcv&a?mj*|lR+jsXB$#gZ!k diff --git a/client/resources/hardnested_tables/bitflip_0_0a7_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0a7_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..9992d1259c058cfef1f5265e8470cc0908aa6462 GIT binary patch literal 1863 zcmZ>Y%CIzaj8qGbH0Wqq%Al=MTXRu>F@SNdq+o*}qX0u_AOnM-00RRH2hRhc`3x9< zS;EJcjpK-s!Hi_i&IJc0+T4VB5)Dlxlm$*4O6*ZnYi3E3l<+ZZIdUPP$61-P(bJ=o z(Vr<Rm$PxnpZcvFOMX8Q(N}yD_wca9Iv$>oM-QhNB|MCfn7%cz@r!7x@*QD~-3Bua zQ<6mz!-OgXkF-flc&RvPor=vOuQyXKdLNj~&J)^YkZ9OYR@be^v93)_Cs|a+FqySr z#^P?#i@)vire~{0MjX9)+u}vS@BPz-UTlnvohKI)@BZ#_|J%Q|oZerQzAuUhoz(s> z-2084=VZwg$!@V=&2F7FscAl`Muh?2H@2l3#ZF5~^Eo(khR?C2q~IRODQ@yY(}h;; z(R`?5nAj|=6LQSQ=(Jd5#0H}n6+17{mS9C2(FbaNon5w~1&SB=CRiLzlF(ih$=Nl> zVYf#a*Q20%&R|V<uetMhHm0dN9GsMNOny_N=nY4EuBoa9UGd9T%yTd_^uEEYViDRb z5vkg>mmw)BG2ze|Bl}>(>1_7N;>_&Me1bO)vp-uCp(gZg$!_<_nomy4xmLPqK9w{$ zap1^?jls+pRy<m#EL!1G7-Up+RcM!ztQe0`PZ*B`*TIe#hH31~?3~Tbj0d~9g;l?V z->jYP^ry$4waw7Vb~%^Ln*E1=$cRsU@$bCywHa2m*M<9czx#8tYU0oJlV(Po){*Er znmXYakI&4+q>VhQyS#51rWz$mO!HO~UpSp-L&`6<$PY4pT{RO^YsE#UtWm$RdXe6# zlWj)FA}hmrb`)00#C0!uIOE`LgO>*{`m2dWMtm_$J>1<|a_FVTOM{db4<c<}9@?ej zvqs{epPhd9l061T45vl<&-fe9{K{^<=2LIY*YUwOe%P+N{^{%H?u~!<9l!BS>&L`4 zo~|{)obS}U<`}7qPF4%FkdR0@7Gjaq%`-F7BDu58Fj6Np;?%~LO{s+wPMniGrV_*B z=Ch<)Zu!>9dVD%FEq2UhPdJqFwav%EPgp|k^0Qdk)y>=8^d{bVDXVvMda_PZRnN~E zXI7v16l1(tM%{Ti&!%0e6_Wn`ue-O|7#n}Dvh!YK+pK-SrmK41`N`FHmG9U#cRsWZ zZ~sxIXY}UWWt(ZSGfOtvtdZ@RnI=<UU7_54D3<-;r>Z_Z@ip>?rvB{MbmBCRu;65t z_=y)z8rZ%1E2iTuW^9y_I&-Q|N^0xWnH_17Q)e1ZnsIQ(nbbo|YJ5)ha0|03ZPF^^ z*|28DG0BOB&0;~DPMuaw3E3aiy!4w#s;%sb<%|~tJ4?Dn`kF;j)~FT+?O4TkRe6I& z$0@ZS^$!b;CdsNksPJL)7A+A|?J%6$maNRz6i{chXhr)c<_|ue1~Xj_O%qL!P-C1j zQ?Rp5m~*n4&WvMW38$4#PS%-pSX;Aa>O@J2O{aNMeWpc*@tiuXEn(O?QPQ1N!$9M~ zG=-A}Gb0Xdj7Zh&OzN3%)XiDz(9FO|n+}Uf8XWW1Nt&6GEULycr(wbTz6sq+osP6l z)N%9TiAdUzsIzirOM+yWhJ-hpPLgW3h+%_a*U_$NY7$3Qi)o9tq<L&OEaAgu<fgN* zXPJ>t(uOl#$r9QkrvzIig;flLjwDVwkt)I26`Cm88X1|)({wUTO>5K4h*L(+LWbU2 zE8Ey43=I;eh8*olGECYOlIGPj&CM_(;AmqrkAcL|grnL<ZlOJ4p^-+Lk|K;E3_Fg6 zPE9zhadNWGYMz<NY(}e6HmzpuTBdZEnJ01Tv`E9G83$9R3Y``c^K1*)*fYbkCurl8 z)jU3HB$H;Q`uHR(OC0k^GZqc(I;5@R6R8-fX)q;ajb`U$p-n!Kfe|Npjw}{Um~m*z zk<h8F-6|&xCmr?i(biUM?B+2HGYT^}VX(<i$4%svTWB{ov(B1{lTNlt7$kE}6G=@p zNHaLi<|7%&t#xv;j$}ldv9?acG^5B!`-?K}VqPh2TBlAXPEAwO5i{6qI9W`>;MArR zi5Z5HYLXI?kvv8l!wi$zQq$6sc?5eFOYnFl9dkOCIx#i1Td-T1XPKMMX~|@X&4!6d z35i{)Eyr}0sTuMl%t%aD*_32-S|=<rVuNJFVU1(X5~<TtrFA0>Qc?`vd?rg89Gzh- zvBtAC;pD_=&YF{TBqfa!r?&Zog@px6q(&xA^Eh>kXXTVLM#&NpK5I4^%}ktWaB^DY zjAN+>+(mY*>@;8tN-=WQI@B|DLPW5tPooSUpN`=)pEIWo6PKKsxh8c+TF}F(7Ske( zHYFVMOiVd*;>cmunJGupbWS|9SZ8!BRVOVcvu9zCvC`3QosG?sA}1$3v)I_IY$zF- zIO)uyqg_uq9y~~uG}`2*6FKFfXu%GNq&cmH7Ll#fj1KdKG+UfjIm{>W^vG$+)ETo? z9;|rWt)sKiBH);CpWy+u!n7EXb$on`GKLn9Tlpjm6JiPrG#<A_{D1V$V>y=)o1nmy F1po~T`B(q| literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0a7_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0a7_states.bin.z deleted file mode 100644 index e7ad43a848d836d0ebebdfe8c59dd0028f87254f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15903 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 Q#y|hhVEk7;qrKi608R$MFaQ7m diff --git a/client/resources/hardnested_tables/bitflip_0_0a9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0a9_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..5893a49389626f26c5dcca5449c013fdf95c4fab GIT binary patch literal 3825 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0a9_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0a9_states.bin.z deleted file mode 100644 index cd17efb23c56e0813a2e18ed2cc5f59f6dc2b6d3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28223 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 z%0D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 F1^_yUrAz<- diff --git a/client/resources/hardnested_tables/bitflip_0_0ab_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0ab_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7deaece19bf2f1710c86173a2344ace19972ea04 GIT binary patch literal 1924 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 Q|1VzTY7sEuxJiH~0K%<SNdN!< literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0ab_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0ab_states.bin.z deleted file mode 100644 index 8469638d5facac513ebcf524b8ac7163eef5d060..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15110 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 Q`+sb|ga1GMy<hoa0b~p*8vp<R diff --git a/client/resources/hardnested_tables/bitflip_0_0ad_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0ad_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..19c36b52636cc70ada8f436f96538d15f4647276 GIT binary patch literal 2419 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0ad_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0ad_states.bin.z deleted file mode 100644 index 59185187878f25bfdcb1dbf0d9715ced820248b9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18794 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 HspKpGiCPUa diff --git a/client/resources/hardnested_tables/bitflip_0_0af_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0af_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..3e99de95cdec72738ec5d80a2ab21418fae2076e GIT binary patch literal 1409 zcmZ>Y%CIzaj8qGbOqymG!=QQn|Nq~UckX7iy(`-)%6NfMfKj4xBBP+Apn!OyfM@_i z=oyIzT=5KWz?W!}l97>O(96>{%Y-4xD217Wjd_Nzq?D8-kFvAkvR(#>o|z1X7#p4m zyScTsIdfb%k-6A`O<B#spdrDs<>JJJ3nv^hF_Ox-z}Rte0*`_OHUk-!Ea@~9wRc-N z%iq`MqNGvg;wu>!m(9wYaB-QT`sCoM$v?C@;*`%UJsPrMnQ)u7+y`UHgOkO%7yN$Y zH}x?8rX^~Mp&!(n<}Ik#+BeHuR<z~#E#dckj2B~1AG8Q>v^PxcNpAVWe8BJ23;VB$ zX*{W^%{nuVR59!POFVMA>(TL|`7vt@Q%j5%zuObzKEr6nOl$3?IX+W+3JM;$N${!P zl9chO)c+Fi^z-tiy3l78E8i%ev^{ciGWTNPvqtL+e!stW{79L<W6G(M$=o;8C++Ef zAAaG%*B!sID&|j2Z5M49EqDF2_jvawtCFum@4N+mH$SXXe%1f6hWo>=^bMaQK85qh z2Y!>^@F#!ful@_wZ$1W}I63)V=#eU)H7~!<k34?6{`2kw^P1inJt}x`PUpe-H9`NH zreD<&7VL_cTBwz(ldQ8wXN?}~hvnCerhE3WHWr-LNjX|#c;raZrlgc3Cp#w{oHXOa z=?ilL+nigclsg@6cV~H{7OSK8Drru{n&h@v&b#7=<{tUu^~jseXYO&YM?2=KDSw!^ z`OWmyX_3i1EAOW2>BJ-%PA_Jc^Rv5|dU$DB37?)`U*DYMWhF7`FG?OSK5??Dhp)$H zH+%9oYn~&I&Ye80$MfdVnRPNoGh@~Lrp|czqOfr4g%b}`cFVFp*zlmRP{**s*6%&z z3*#N%mY1_WN`2tI<jteK%A!xcY_>0W;rC|UvGAF#zry{e)?Md2^w+)QH=o7doZWio zBcJpqH(&aur+50m$uE8Hniu{Gv+jGxF8XC2>!Cxnu0j9Gg-Z6lINbGyTlLvK*9Y}C zZyHsob2sa3T7GOtp|wuQp1#KmUltzuq}?v=-Seox;*<4UebW~)vNtRK)#+dO5HIvo zyy<`XzN-Em$(z2r&%P_ZOV6VJ%)a7p^A1+^-+Ebp`qEsR<0}(i8+|p}Xk{_8@Mt`v z#qk3_{5rm$FIms}+UT48&O<x<XP(o)cAm9lzSAe?7xj<+x}UM{wKKnB@u|k^oA@l9 z<YtSMjT3FVMdLOV7RI(EPKy=itv+i}Rx;n|$Mt0Xi4S(Aevr{;d{nV}?lfzinT3T( zFVZEg46O~1%gD+k_q;stZDq)}UjkEZIsUx(BIRfMV;TP`r<b3zy?UuS(tEM+ciD4t z%$h&_oxbzL>Sz9EUwQLJHQ(v(wv^NDlXgg^8hu$O&Xe-ded5fjlb5+(z7(I?Z*1FU zzv0YgW0eo~jL!-mP3PkmR`0yLY0a0-w{}&@P2X|!_lYTT0W0+LT0H7mu1;H`s{ce# zS7g=0Rf+}OnqEs!8Y~KJ{Cz3BAkyVfk{dUVT41Wdj8hw@1syqZa$2y_VZ(?>iDb5L zvCx~E;_gf(yEF{zdEU%z^O5vQ7J2k$Y4CElh)pHCxR=NprbQYgD@!IEIkRTQX^C@l zHC1Q4*umTx+OflLYP(~|#tUjPoKp`s`4~-eXO@_wc~~^$L}5C&n7g>h!-zvk8z&xn zw6a-S%&SnQvn2JRIy=Xsw$Rp8XEm=iJv}}Wi$x<dW*Qk}hNg8LTWVxvXdsz7P0VO* zWK_?p4VzXQDeLqcO>Hw$)>*BsbWAg~BQiBu;<VN@V+o&4i;X-|CmNmNIjyr;(&uQf z!LcA?ZUZ+7ZKG)hsSSr!r%6ufNtK*xEZP>dajMV3X~IUvjEM~q^*?q`(md4CEV8ld F0RTYFm=pj2 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0af_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0af_states.bin.z deleted file mode 100644 index 51e59ea2e5f2b04c6cef77b7c4edefa6b6d9b3ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9191 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 Ol7BGwKf9CPj0^z1LJ8;q diff --git a/client/resources/hardnested_tables/bitflip_0_0b0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0b0_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..cb2ac918b462a52b009bf1098667bb94f84c6fea GIT binary patch literal 513 zcmZ>Y%CIzaj8qGbH2f?5kkRA7m(rUzS1@!ia56B4IxsLW9Aw~NV34@LYR3Qq8Vphl z3}^(GS3q#qJYTnYmwM(+{>G{On#03y!3Mp91>#IA3zS&`8)di|We@!BFF4rFc!BGc z7}st#mV=E=hk4ZG8^XT{9&q0vDz{)&0ap*FHq$$9)+U1p@q%S62X#0O7$|?>ddK}l zN6xYFlX%0S!;R&Pc8+n4GF&tC88(PK;9+JtV8fE&zCxSf1v68^!Nw+SX0F)dTgwkG zILz`!v}sT4KW@H-Hq9Gi8yh|dd|`Sa+WLk^@9>QhzDC=F@5C?IUpUzO$>4+FAC3)T zjBjk6`5T{<z7boo!C*Brmw|yDll_GD1F<d^I($rrHWb8gHx%eE*wYwzMIgaz4QoQ6 z{sm1j)&y^sgo#bdxVc0tnLO$oRTEfZSf)0He&;xt&~!jThet$0>p+i$goFeSk3nL> z!3d=d2}>KBHW-9)99Ya0TGwR5WDwfq!*yVdsMdjm8EQ=70V3-f)@@Ww*qRU#m>3Ze z!N1*M--bAYm0Hu6afJka;aV}nL&HE}8JFWXmZ=8>4Mcqyoxf=oh;%oE6a+JRMhG`* z7I^A$^@uYan$FVAa!9kWRY&V!L>O0u8e?K&Yoa%6LqdWW`#-%WT?Gpjl7E>W0szuh Bw@Uy3 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0b0_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0b0_states.bin.z deleted file mode 100644 index 09370ddf3c0f60665db2401c5748c511681fa8dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12014 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0b4_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0b4_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f9c8c81838848a62b2bd883ed3ad7394b4c88950 GIT binary patch literal 3041 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 Hdj0?ag+46k literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0b4_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0b4_states.bin.z deleted file mode 100644 index 4048a702c1cce7e7316324537ed0efdff2552f4d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21106 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0bc_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0bc_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..19e1fe89ad8578ad77686020ca213fb0b21ec1d6 GIT binary patch literal 1129 zcmZ>Y%CIzaj8qGb{M}XhoT2MzY3?hnKEE?bObiSRO-wut3=W(O3>*v`54i0a5J2Lx zU`u8L1G7|;L9YP=L$Z&X;4%gVp3IIzCI=W8dkrPrW-u^tdAT^LFG;lt&azpirXqUK zYon<9_pZ(gZlN$u9xor!gwAhTD-(p9b_5)mBWiz8)61Z>LNr)3P=ZZ_uVF*Pqz&vz zicJzr4W?QsH+Bmc7#b!?bhkX%Xe|=(|3=Wfe@7nL9_Ku;A<6Ynl2=mriTD!_y?%-( zi|I2jtn(^SeWGctvQC6YOk(bYqdJD+f7pb%uh=zy<vU{2rdsFNY0K_%)W0ECxZ$wq zp$88Q4da6)4y|j`iC>uXMwau>)c@`i>-e4ao_sQ~>qx?Pajt{!D(u-$)F*$c>kq7Z z@I##CtEGjmx3ENFGJmICV)GB3G8x0>*3Y6pm8Nm|2f3-NQEUxu_0ihRa8S5GVyWso zPIs;s5jt8&4TCwtG!Ctih*+kkrqSaQ>Z22pv|*z*n^wCc(+j5!&Km<09iJE^KCofa z<B1h{m|!8Jaaiyxx8P?n)!P2fg7yV_*>sYQ>9JWD_SmvJUzqP0+t=78-uPgDVu6M7 z!ifE@PhzJ#CH9?Wz9NxW#=p?^^rrR7LSNYz#wdLg=YA60@-VqI>ClT^dg6}V2MYR* zmbq`R64MhCpY+L!U$v`3d~(at?mHVV_Vvg!zps2Tk4@z8frl1`wf!@z#gFuzI%>$n zzEMy7${!iM=6C)NZ1{KlXkS^y#y|0+-E!Bmq>YKqPxOoI5)K}EVNozgo%@&mj8)$l z65|=4RB9fod-y=_)CbKQA7teg9eR*_;@31jS&n1Me`ST+*b{%xcYaX8pV<9PoloLn z@{JdL?XDL}obT`?$qRkZUTCc*W_$XbS4~rY(1sOu2g93QEVbhDYq4L)C=h>9Vf}&D zM6V62W^_e_L`+RGOq#LLAi_XRn^~BfO|!LIOf_l4hQy8|Gs0AkBrRqW<Kb~r?G{No zl5}Ka(#F;v9z_{3(co5ZUTvnpgHB80Z!D>AIxvkVL`P!Esv|uT8#Wpw9TMg^+S#>6 z$Fn1tX=9jX(@`IZl`V!|M?)JmTO1CpW=!A-<Cq~dW6{y1Bix)fUHy*sB=zVpGaO1d zwCYg8GB$yu-CRdz^f)CQ^cLni*v!qw!!0Jk6EW$~#%?h&VbM;*f=PYN%sgTS2U`s# zmiB}u&0yN7c~Ij8GpE7Pz@)@5#ior325WR!yE&V=dQ@B1gc^oP7#MbTHugjqb~Cd{ zB+OXawZZWp$D4-TIzfgKM~)d79Fo}BBQYcCXq&{LWTB*^%?w8j+Es!#YTgVMNo?&% znqe8Ck+4fhwR>a8q2(MQ1#Ti6e3T{BG<|{&Hj5nDaNy94jRmn2k{P=<O)YR^({UCx zv=)hVjd0#%s3T#RwBca)lobzliKiGIvJ%u$<Mfdb?cT7%<zd8>4Ko%d9kt>+-LgDQ Zxb?;Z9tqaw|J^&4=4g1-9<}=1001Jm#9ROX literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0bc_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0bc_states.bin.z deleted file mode 100644 index ab0b3755df36761ea79dd7d2421752660e2af27e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14387 zcmb=p_4aPyq{mtt6aw^*@1FhkY`y+*?-~8GDlVSiet1<-q|gkNlf`vfi)w3ACny9q zUHJdk{{Q=LUw{0P|GwTnKK;)Azo&P<e_#9VN8kG&ACK3o*#F!8-d@dq-{<##j(@j5 zU-jeP|NlGp<<0*8|KIod^Vi4z+w=ARj*>ss&%f30{qug`|9AJd*1z3f^gF!nyZrtC ze<SzbKL7r7{r+En?`K=zs=K%UU%K@F{L}T{zW1-&Z+HKG-{HJw`}yksw*UJ#=d1p| z*Z-ft`0xIG|EKy#^-q7i|6~3C)BmfV>-*mS=!-A^bKmO!Wvl-pcmHocXTSB^|7ZWt z{6G2s^#9%e%l|L``||&n`o8?X{a@{m{Xh2q*8Xq#f9L<K|7riz{$u=~>;Jaazm5Mr z{eMBt@$x@6zJ_0`Uu*EM_}|n2`}U<({8Rt+bNQ>E|2NnFKJ)*)@xSkX?%(+K{^x$l zSMmSu|80M~`@iu&^Z)t(?*G~UWBvc@|4;w7{C{r$XOQz&&;4)z-@5PD=Fjir?d$5I z|NY*-yLQjN#r^Sn|E-SszxL;2``-HXU+e##tIz%!_4)tWuh+N#d%pkw{eS;v{I37I z|HuAgKi}W3-+F9*<mvi<-}_hDzxDsW{D1KuyW{=;q-+1y%ZJaCuK%|BfA;bF|Nq_F z|9$WO*X92uZU3#8{Qo@jzvb`!Z@$K_|6lyyJpEsO$p72s|2qCZs$cg*|33u22gT#F z`bF33pK5_zyngQg^)u@y{x|=3{omIAtA6JHtp6^5ZNJ3-=>O>;|NX5082?}X^8e#! z{#*ZlRR8p6{qy@jr~fbi4>suQvHG>2?bm+x|2+NvpZP!Sf7bu3|Nj5o|7)lJXV<@q z|Fiku@n7<f>mP%{di%fgfA;^G|7ZRW{eRh@_*nmU{gr==4ONTo+uM2njK03#O@9CP z-`o54?cW#vbMd|XOaEs7pSa(C*T2=@>lq%^pZ$0JNBkdl28I<S|LaTtrBD6yfA^>L z^Zw`0tvCM9&M=|+-}ztrqdwPP`=9y$*8d;(A<@16=PCVv-T!ax{{w>d3<tbcy|=%z z`cLF*`}BY3|ApV$|Ly+bf2*g<JN)_o^1l85e>2}aJs<b~kv#*01Ml8z@u~O!pZ|6L z#;552><k8Ff3pAQL%p;9=0Ds2`v2ActAmaIw*GJSe+GuFpX$H;Uu*ks`~Ugh^8d&G z{(tH}^NjzXv;uMZ%>U>2{lCBQ)B4^2=l|W$$dI-1|M&a%-~YA0{_cOz|E=}E|36<_ z|NH;x|0n-%JuVMUs89bt{lB%Ifq|ic=X3qyPx{a5jn37F)c>oV`}+U>$NB%{Uh9AR zbfJ2G{=7Z^(@(Acck%!C8TDfSkJf+u|M__NzwG(-3=DVvpRNC&|Nr>C=l6f#zjdnq z>tE(u^Z)t(XJ-Hb2mOoZ=STdvy8P#PvD}}!f_;B}eD=Rq|Nq`RoB!LL{xAQ>$iTob z!}x#df9~h|lm3S9|M&ac|0k#I=j-nOWB;rEWBt~j_2=tn|2O{^{6D1c|F!>D;Y8&B z_J8#;|IYvW|7brX4gO;WSt(%q|KVTzSMne>6gLR|diQ_p|G&?lS0DfW$NSCC`~Pfz z-A`Zt|N5tx{r~RO*1!M!;<f#*zw595UkM5hhG&odPCvK*`~GWt|Ly(%Jm%-#|Lmar zbL-Fkzwy~||BuzblK*I*_2=cU^QHeE|J|>B{D0N=`L(Cl|66(I|NQ;`7X6NY9{*>( z%zsb-gM1iK|L^`U@t^-6ulaBMKmT9+Kl#7)=YP6?jQ=D4|M9c`bL+p`GccU^Fa3Yl z|MLIai~imJ{2%6l&-<Uvzh?2j|JdjLZ}T_){jRnD7dU7Wj{cng=I8$vKlOjsGcYI} z+kb5SyZ=h>>M#5Y*VzBd{onbo>i-u1J^jD?KLf*=6aVhlo|?b)U-2{hxAp7(X8*T+ zwZG~o<B|XK|Nnh`{Cxi1ee?JJx%nEBkPiOZzkdCx*Z<Qr>tBDoU;F>ge|d(4zaRHM zukZce`yW)~rv2XjzY#URN&j!}x0k*DQP$q|zkKbV)qnr%954Sj_y3Q7&-bnDzy09+ z_WiGa&N=?=bN$ozzyH?ne}ALm>$i=+_Lu$n``+IE|KI=RfAh2d+Do1O|L*tue}6x| zuCM>{{eAs^!zaJqmj89%{(sKj_;0_~-~PYze?iUndQiDL_4oZ(AN~Ja|Nr{`)Bkfo zg$KyOtLOi(`R$*2`@dGz|Fc)m)qnle|En(h-w*%C_h0;-AAS1ztpE9I_wV}(vh&;b z<9GhQ{(tnp>ACv*|5ls+I}`Qq^ZxpfznS&F?ElVx{N1wd%l#Lx|Nq|c>CTVM@qgp3 z|NZ;^{omgAf8+Q6KL6rl{n;P({=d)P{GYo1f7RdlzxP{yu3!A?{=Sdyf5iV6AFT(K zSwH`O{rvx%JrhHZ{jX{E*?*tk`G5IG`0wlg(s%tY`OCOQ@W1<6`xO29Z@<L<Gcqt_ zefT$D`|0<8^KZVo|GS=n;h9u@)&K1u_kY~~ZT;W#H~+1k2C7;n{}%>DMEvjT{}>s< zp8uS`fB*f@|Ly<&zV|P6-v8_WuIK%q_kZ=p|BM~~O@GJ#{@?MRfq_BPW&eH+_n+6# z{=fZSn&H5o`zJmw|GEFhPyN^bx75GA|I7aK|4;Rw>L2a@0V;4l{r?2g#E|{;|EBl$ zy8kbi{d@cWR@lGQzx&T!{WtGxfqg{$ZJRHkn)&?Q|68ZU|6Tllf6?FD|0Dm1|Np$r z{<;10pX>|{|3KB+{@?qfe%8PL9||^+fnkl=fBSzwg+Ip|pRJ#7`~P<BgERl1&-?%V z&-~|L6%n3aey8vGzw+D9^1sLB_UHfm8QHh@e!2Jj|M#`i=YQTGUw^!BKBzeA{QvRq z{O9}8v*hLKzmtF12me`F{{QCoKd<JW`uqRq>+`?oAFclw|1bVu{2%v!r$5Tx|9JfP z|CrzR-KO9FS^n?o|F9GP!_WUut^W7(`=|a}^-jO9|GS>?|J3_`kC#8*f9?9W&$mC_ zUvKxXzW4p@^Y8Dzs=xN}|Kg9|`&aGXcfbFiwf~>|zke-X$N#zh|NO=O{jchu{y*~n z)JKTXPyfr@|0sL^*Z!>6^{dzaH~z2w@AUuI|L^`kiBy@r1{c#95piq(xA~j@-u}<V z@WQnI=C8kzr|$3iXZq{M+Q;wT{(c#M{NnBNzo-Ad81b+CzWw+A*Z-~F{y%WEY6F$L zqg5M?tG2@b@BbbDD7!!J&-}+f59>TF|2Mb(=YCOeJNo9l`hR=>EdDnC!oRKmO>gc0 zwEO>$mp|5j-TL>>wm;uj_y3Q7{QKMI>g~Vgm;U*m@#pX2SL@$@U;O`^@c-!g`g6a; z|9|~o{N?}RU-3WfKkhI312($;r~UErn&aF5t-tl_{;Svj&;0NF|LOm)`tS9h{@<Ga zOZ@+u{~P}u|7DM>QTROP|F`{&3{_|2x7F28`?P&seXm{J>mSv>>waA?{POMdzo+#k z)BfN6e*W+Ot^Z%Wt-tcVf8GCAf8`r~#Bcs@`VU+{Yu)`HKlgv6>i_@i{;YofKl=Io zGyfSGp3M8d`QQ3$f98L!zqS9H{lD*^Hg5dC{C%Ig|3BLQ4bnj72Q^0~1b+SNUOhGb zFSxM+5@BFq_`tdTx4Z54#9R08zbxIqtp5DMJ-`2b{=E0`?f-_~{^b9c`}=<L_4+UW zl8g8LFRl3<zxsbLxS%|vTJ>M^cl=em|LgwWc>MjWz5VHp-+$-5{QSTA>6_wz-(SDK z@$vIj`(O4S>!<x&fA3d!_S5+1zd((tj{kv={jb-r`#t~O>-k6i&wS*+_xJgIPs9I* zy!(GXzW(Ch^`G_sh4=l3RRaubj{n+k_cR=AE!5QvHBHa`vtDogZ-1-)*thpT?ZM(_ z{=Yf@KcxQu<UjTd43ZM{yZ&$f=l^^Azw>|XfBnz;Y5zR_52&;~TEFH0$G4zT@#EwE z{~mRJ%J0|v)YUw{|Fi#n{k*Rm>g&Hp#s5FH@cq93e`?--dcOAm@uiRNTW|mW`f2_5 zzvcfyt(d8|!O801`}4o<*44%T`+fEO|G3*1zkUAq)&BO6`sja~_t%&F{rdCY-{}8V z-#%A9s(=0deB}Q}`~TJV{i`qeul-*g<i~USKkNUGxBdSd)PX5I{vXosxcImJ^`GGE z|M~yU|CtYJ;{UGyUJq{CKL2s;f5iXfKly(^73H=6GyhNj52}%m*1rYS$Xn}w@`I9T ze{6l~-|JkD?Vrd0d;dDS?Rov8`Sq*j{kQ+U{rsQ*HjnGi|L@KHKkxtSh5w%Zzgusy z@3;Nq`p^HL{XhG^`~R={zx)5p2lxBV?f<<0*3bLZ|BuX{{_*O!&$o;2_gDQtw&wWy zxc{N+{$Km^asILWd++W4yz<ZgtM}_o{@;(PuYFzr@Av<=@B4TDzy81bfA*aJ`~HS! z|Czb<&-42KD}G)6_oe=q{qgt3e_rgrc>VwP!lyewrtkj+ZjHVFTYdlc{<`n;FFyW1 z>tp@AZ}T_*KOOh~>o5E7^~KNryM5hX`?&vy{=es4;KTt+AfP^T{y+7szv1gXS^q!x z|JKj{vwn*Igmli<&-y>@fBFB!zuh1Af2{}kZuWmr?l$~ef9B7AP%4}EACkMj{|6Zq zpa17NxbtmN|MTqsng1vM2lom8<?sEo|J(9^N9|wNulaBI58SJ)2bBS!9!)1Gm#zPs z{r}c~ueb6HE7X7eeY|<f{?fnMUp`jvuYdjG_v`AZ_OJd%-`f98{^#$-ulHB|XIJ=l z{Y`!E|D*K`3=Ll2|A#-X4?FpPzxMxEKmT9*Y5uvMfnn$K|7-rQHvOOecmB8afBXOc zg+%u3^?$&vq|^UFkeOl4l3)Lv_d*)j|KHSudYAA9_P@WM-_Ji8_wUVDeNg}8%7yH| zq2K=gU-Q3LcmLOV28QJ0`@j7+gLvovthe`38ezBgf8%Ee(EgwP|NgDV^}qjT{{QxW z>;LtC>>GZ9QwrGWvwr@6^ZUQ7_WxbK|KI#C&9Ff1cm4mrfA9S-e*5qIkNDr)|JUF9 zwf#S+gB)M|NAN!=nSxqDzu6fW7)}`cH`n@~^iTcqANQ}%_g~-n@4xlGXYV)uOVa1x z`~CN`lfUbi{dpz-x4!>pI=H)HUtjZl|F@s)3<v(+|MUI-xB54=|Mvc0yY^4`eftIA zkr8ky!0<)r@1M@E>y6LW+dV({p8fghe*6C^f4{$fd-8L=_Lq8a_ol(}bNsjc1^=|K z)qj1x|NS5TeSbdR{B-*N;{W3R!)O2h{%8Bo`p5QP{h$8G{~P}nM$G?O|Kk7gr~lvl z2X((e=?~PUW?*2r_*wqm|Ha@gCBzL33=#|9|BL^9zrJo?dCmF#N9O&1dw=o&+Hb$= zb<cl&{r>Lv?{@wB{w==!KkDy%aJMQ!?_T}OKh^)U@4mkOyZ+qN`@ici{O|t18q{Xq z`s{1|pXL7q|1Ul^f8GC>@Amip?=JeY9=VOFzw3YLzoY+8ft#729%#eY=l|E%PyBCx z4%EDU_W$Ysi~qmRsTcWwwEm-g-oN`l%l|VoH2m5BaXqMX(SH8l_WydQ2Mqpa|I6(C z{6E9yf5v~w+x6=|tp@i^8N%lLKRNGz|E&L${<AYEB>l<$^YWkmqkrsg>svpqu7C1B zrv8yVXi(w@Kf{5ZH~;T0hm1&E{`VYtMB?ZD{dIr-TzmWb=IQx+|A7;d)SCalf34c{ zFMryn?Q)Q6kdfh<{Qv5I*MHpq0V>+Ex7GiaKk@(Me?)%U|FQnZkISIebnut|7mx41 z_5XYkv=o0g`_~TMe>J~%&pTh4WB)(=-@g0*zyI#*4bPW{4l;fIeE)y__5a(h{a?Hh zGNLEH|KE4_`v3pF%R8^TUw6H}1lqmY^>_Yn{^RBU)BoiEiQoBut=#`3^?&#Oi~o22 zC#djve*b6u-#_Pf{SVppcm1O8_ha7v3D^I>;{En#{r^q=_1^oxb8F4opZ~A@dL8}$ z^Zoz%_4Q{!y8pyK{`39q{;0?2*F3fV|J(iQ{BO(uU;b}dH~+Ew|K5H7_V;U_@3sGZ z_5aq#@9XQ|-~WB@|JU9Bd*uFK@A?0E3$#yq{r}GYvyK0ouloO1y8cN0NBi(U)Bl5D zy#4?D|H=#pek{)ax%pcCxxe<k^;_%T)-U_*e_j57)W`ZOf1JO4N?%|9QJ#Te0o(ik zJA>-p|DU<`-`@Z13<>K#F8^LH{a^Y&s8E~pc7N8-t<WLH-{2ued4`12dH;X@{%!mJ z|K<Jf-^M@tS^u{FEod-N3fg4Z`oI4NKLbO6<CovvMN{hU{@D*27&`O6SEhc}|L(c} zH~sVfef{6s|HjCpO`x_4sHL(Y?4SPcf0sYm=RUvxZ+-65{k#6Zh<W=ylK*@2*R5xr z-`D^D`SZ@-`0Sro?SK8(zP|r2sC#9f|GW5K@w|ElhA01@{=fTw_y5&X|9}4%{}p5+ z1H*x=&;K9Kw>SK6dil@yo1gdJWk2_){@u^|^ZzUVfmAe1b=hBk?Dzbv`SsW9-+cW2 zZ2tVGH-6V{|MK(y-lA`o|9^iifAiz#EBU|kf5_keU-@r0dY0UK-M;g`@zMDx!!din zeNs@5;As7m{h*#$ea)ZqTmR>l{G40=JpNyP>!13sf8w`2pI@*4f5l(*E%k5fd%vy! z^Ul7`>R)zkuKj-9|9@XS{(t?)zQ2F&t^JoS``=y)RE@s={rAQG&qw}WyFY*PzoYek z|I7USzv5r`KY!5J57_AVf9FA2W9|Rd+x~6;^~?Tq{iFSV_W!&8cRo^Owh>%RV?+d~ zI<vgJ|8G7+L)_=-Ywyor`e*Iy_{IJAt^VEHH~(L$%-+9y>VL}jg4#pH|LfoGulg<j zb+l?5t=i~NwSE8pu3qN;$JfXHTh6mT6I2HtxsO%^wW6oL{rUX<Y5T1IoNwcQ$1nb? zz5jRr{J#HD@wd<CgJx%b{5Rc~Z@<5M_5aA@|ND>Kw_o+|SDpQ@_ckB*fBpV^4QNup z-u=J*s{d2}3;)+X4jR`36{f{C$IEM8|6jHC|Jr?^7WohT|Lgyk|5yLN{_o2AkLQ2M zgPMiLps5Bdjl%kK-||5%qw9ZCUw=>6tbhIM`isZg`}S{tzr0@7J>UL){6F{PpWw01 z_}}aA{d52O@5Qh6_n_lvk0Ay0rN95L{+u8B>Hqsv`>X!#Fa3A+k356JyPx*2|7V^3 zANhaz-|YX7>%nc@r~jX6?*~stfSM<efiwom(EIgU!hc?cbd#Vhl=&Za)n6%=U-tL! z+_>-AzrM?y+Wp?%{=W6Tzw*iF|9^Xb@xNX5U-$R+X4ikmAK(6e>o0q7QF<U|(f9eA z{)fK({Qg(JZQcDppEt`??|(nd?*IPqb9T?`_y6mYwFeE!3I9)j`Ty10{X4?`m97Id zruu)#oBk{L`+V2`mwW$t{+X}&@5=7~Z=&nI`ak{m|Ib(PyZ@~~lQG~Cbx@JaaG+|< z|JT8FU~8d{W;mc;@o&ktxZnR5|4q;NKkq-dFMHt6`G0@>zkatr`Jb6#LgUBfzwJRI zi?9FR`M>!8`f2}*{~ZODw()=5f6L$h2OcZ__oM&G@%rz7k3WG87Dw{`{$9TR>(_jl zU+;dOKYv}X{@$<p7^{DKi+}Hr`&WLy{`>n|`@hBS1ShNa|NpJI|MvO!r~Bjo{(HYw zHrM`r{Qu3p|F=K2|NYzjdi?zN_xFEYpFG4T{q}zM|5GU$52}W~|6TDt|4h}NS6}0w z{>ncq|3CB3?bm;;=b!o?|M#!^=#<~+l;7x-AEb;Lo$?!<@*AD<8=dkSo$?!9%`&>0 zg?g)5MyLEnr~F2z{6?qzKr?ltQ+}gUexp-<qf>sPQ+}gUexp-<>t+6rPWg?lW*N4t XSw^S)MyLG9p7LA1;6K0fK_LqOtHQ?b diff --git a/client/resources/hardnested_tables/bitflip_0_0c0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0c0_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..87d8693df1453a2c5d4ad7917b0252b1228fc130 GIT binary patch literal 415 zcmZ>Y%CIzaj8qGb6lP}aWnf^4alFVNz`(#TfkD)P!GVM00OKFafQ1YU91IL<OI;Wj zXliOsR=&7TMacip1W&7zq9LW8>WQ9eL7uA`LRYF>a`3$5sPbG><;tWiPg75|C6g5- zRTo97Zt+&xs59wOgl7(?=q7KKO)krKl`eTS)5L2o!$F|~m8&K_^3qGFU9zP=X0n>k ztXY0q>rNW^owQk{eafe^jMHKQzbDJ&TaGFxStkEfn3UwGa=`Q4p^%10T2qB~PFktD zpwqE4U}}x$q)7%UM`i{_c(%-#{IZMdq|vOCv-pn-u%1YJ#MZ&kz`(%Lz_5zJ!Ht3U z-IM?YDFy{82H~I;87CKLY6klU)GfXxuxh8uTuzmfDwi61CPhrptn5(PGO5VZWKznc zOqBz=o|7`wmRw4i>9b(zl8q`cy*gWN2JCS-wDe5Z4)%uSA}hZ%|5+BS{^aVi89SPn z8qL*wr1jBfWr@h6DKbZdVqJuy6ej%^n3Oct(?H}!Ktsx^Q01;rl@l(`B3_|yeHJZd Znz76^BA6>_KI@%{ej+NYfq(un004%Yro{jN literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0c0_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0c0_states.bin.z deleted file mode 100644 index d3f655b0414dcb31d9c59c1909c9d628065cb463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9771 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0c4_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0c4_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..57823403b9bd07dd01258caef2808075ce7a6424 GIT binary patch literal 5975 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0c4_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0c4_states.bin.z deleted file mode 100644 index d5c5f5edf7f694ca6949975ec0b292d739318656..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27220 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%0ALx8=hTv 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 asU7?qulH~Ie2g13>JPpC&p1IP+XDa#?yuwk diff --git a/client/resources/hardnested_tables/bitflip_0_0cc_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0cc_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..38fc1e0aeb04221a6f2f8cd7fc34f59a21bdf331 GIT binary patch literal 1614 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0cc_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0cc_states.bin.z deleted file mode 100644 index 868afc9f9dae87739a60e1d6d771e0921d8d99e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19919 zcmb=p_4e-ViEnoC&3Gu<EBxZY)Je=Ae(yMS@9oDgzTz7=C;j->zSzopaj%*JgNnz* z|DWsstgpAfeg6N`Z}tDmf4~2qZ~y+rznK4j|H#z*tNVYqzQ5+v$@7!<$4=U>disCv z|9hWrKlpTW{@>4!&#RwY|HS^^_xtws`}ddqetz};v^)P+{Mmk9{!jV8^Z&Jf@Bb!U z|L6bteEIkPPsM-z`Reih>y?$&zyB}(CBOE+{NKNOzg~a#^ZVb8cHfVm{D1Mj{qlcL z>p#}_{J3xZZ`J>k|EGSo|GjztulldQ<bOVy9KZeleB1w1WdASz?0@k`{=f5o=KtFN zYyZdnALaiG|36~?Y3=`w|J?t_|DXT=bN%c8Xa2ALzw-ad|DWvtKmY${{{PkW6a4Ld zO1@sd=6_V_U;W?L*Zohe|3CTf-{7ym{@=`={quj}umAi0pZ-#R|NqZ_{(tA!eERzT z>;JR=Xa6_<um8XM|0Da~n<1#4`}ciN0DX`D^Zoz7zxPl7w)d~!e(Ur5ikg4VAAJ7) z+x_c&-Tk}%t={wh;;)ao6}Hm<?QZX{{rmsbd;6&W{jb)q{kQn>`_KQ%!~Q*f|K9dr z{@;I{^`HEg{n_?Wdsh9X$N!6eumATi?$_h`NArKU*Gd1pdHv1z|F!lXBmQrm`)~cX z`uyH!|JU{YztwBM`S*X*&;Kp{*{A=R9sB?5qxm22&-l7O?&J2{f1TIrpVa@1{|kf7 zplF==f9JM;FMfZjKKnnU^Zy(D|Eu?}`2YI<=lXx~d;hKdm;Wd6Z}-RfU+bTNJwE;a z(f@OP%s2kO{-65)@Ol5!>%WEnH~;T%_wz}3%zx>-^}1&NP0sz=|LS%9+5cD1{eSiU zmHn~$egD7zwg3CNK73;S-~O-lzy4qQ{}CP`peQN5R{x>?-}(QqfBygW`Tdn&{ckh> z9>4eb`|l@{{r^>bIzPAm)1Pw7PtkMtPtu?N_on^%e>b1^+i&0h{_l@p*SGyTZ~y=G zou6L||306$|LdFo>9@uA_I>-8{`-H-$NaLt;r;c${y&la|MLIq|JQr=|N8%F{}26t ztN(9=#+~l(=hx(q?~dR5FCg~+)_eb7{PEvYH&43$`|bK~-{<dscK!eQv-`K6`v3SW zDDl)k{pJ7u=j)5V{%?Ku|EK(4>Hk-z=Kr1lwf@@w$p7ge#<Tz0&;DP0RbTr!zwF<{ z|4-|`Lg4>>KmYHGKXCu`y?@N->$iXZb8r7-f4iT5pKkB9zd!x|&cFBN>$grj|L@KG z%>Qrxwufc@U-K(J`v2}%|8M@@|FQmG{N?|vx8MKqc<Y~6*Izx}zxeCp74zKR{+G{< z-}Z0O^*5i>-OhrtOgA{o9Qkoy8#&AD|MC7e_otKF|9yY;YyFEqr!!vvU$y@K)_?1d z{j$Hmzw19ZivBOI|C@jR|Ly<QoBrj_egFUKf9<dTfA0VLUweD}zwrOT|0n-{{R|XO zKllH#|M_Hc{=erlYM$?3BlQ1f{NMBc_P_f7?f+_v|M~ypfB#?gU%Gxm{-5Rl*Z<G| zcmL1+Kl=Z=|G%n#bN(L)?O*iw?f37mvi=``^=o}m@3sELzt8t>{D1oQxA?z*-CzH| z`TPIP|JL9C3jcp14`QAT{j<3KQ~K@yR@MLCynnO*?VtIJAMeixC--mv&wr`^{r~p= z{r-Q9|4DEDcfI`o|B8P*t^Q3x3jCfw{0ty)O?~&jIlB9;a`*3_>;M1e*W(-iy#HRM z6Zhu-@5g^PK91k=_Y42W{YU>4um5rS->3Sgf6o8g`WB@1@qWqg^G*Ks-?V@IXZz0E z`_KK%5B=N!j}c@j2yYO&d4GPyf2&J>p8w-{_;_Ez=GXVX*Vq2J|GoYTNIwHZ!<%2z z|Ng(Rf7-v*`~T-YuYb1Metz!%=fA2;{<;5^e>DG({kuQg|K1Oq_y79;#r0Rt{=Wvw zLZEaNp8Y5Dul$k!dw$LT`~N945C3BaS<7%>`>Xid^-~Wne!YL&@~`pL=kLGoSDXL$ z|Esri{%wExRX)3Z_2>Fcf6xE4zxeI4{gMB#f7)yR+qD0W{{PMOp}(0K7##k_|God? z{*U$7e(YcM|DrwER1k4(_W#`N|F7?U9{u+J^WW3o->A<{`d_*K|E;F?@j3tO-~T=T z?f=$C@_(5@iWw4g=G343H}z}$-@oPm&hPwY{h$5O{y+Pl{px@5XY=R(&+Pt(|L^}7 zX#W5E`}(T?&!zrb{4am{CqDnr&24|b^q>0p|IhE~vh_FP|E-_%|LXs%{~-Yzkoxcb zuj#kGf{P1K!OQ<~zyBXl`Fr~R;xqp@*PEhvA?fe^@Bg8}4RY1z{TDy4-#)*7`ICJA zPv7V5zkgi4dfwLmW_$n1->&`o_jYxi^cRpfLJ{7$^DDpXZ{XkktN!l&pM2&2;?MS* zum4}ab^p~r{lDyw*#E5G_A~$U|LimWU;n>o|LR!%>;J26-~YA$)X)3B>|g&^`1gJN z|J390-=;&;UdWSu@lPIqeR2Q&-`|gGKb=&sm-(6dTON|(*YDpB&+yB`p&5S9tN)e1 z--8O^n<yE+y6*mN`KzB-{QbZ9?dfarUw-NRyC?VP?fu{OXXnYA{&%ncuk#C3J_|ms zU;kq@sC+*6|IPV-ul_%(fBSy^N%j4k{_J{Pzk2=u({cZ;+y2%5mzJ~FFWVpWuQP7( zuk+vbXZ+su_4xlI_8<HI+}vj$yYz4I>-hiozyJTUf7Ac#dHesY|F`^~`v2emK(*<= z_5bJJ`>!&;=F{@d|CXPg)_+U?U-t3&$Nl$z|4X)ibNBE4Z`*6@>f6^G|Nn0LmwMlS zzn|x`|E~^TANV)_;J5v?{~qkm_pST?`+5BT-)3)q&wu;B_}KoNU*paHNy18vc*}ob z=j&0+>i@64$(R0LdGp);Q}^mOZ~gP?*ZNQY++QEx{-Cty@BH=K^%0fni+_)Qf0D1S zfB&)m^>_b2lk1J1Ztso1_-C^0|M|D;zkdII3ED`wed7GSwEh3z|L#2gYyR6W^;`c} zXPf*l&;4^f@6XJ;|JTp_fBfTr%g6WM{8}&mzvut4HUGbM?a%$}zvZ9u|I?rf4vcF* z?f=YwQvLqV_;d9qC!YWJ=KY`i=k@)j|LaTtpI`lNzU{xq|Nrb?_TT#d^&iPC#TxFr z!{q;4{{Q-X`JtcdZ+_-q{OtdW_w!vrb(4M4pZB8mSN}h$f4+aS{qNQPyZ@hySD9b) zyx#Kv^EZE{f37#WXaD?v&F=rN|Gbv^ss8)Vubltg+w`OB|M>qA{(qwUUy<MMbo=_i z|ND#n&;K9({r|1E)Bj)nf93y^|GR#IV=w;v|Jwf!c0aHEkNThbSN!+yf8|r&*B9-t z|Md6&#lNR-t+AJT|GWPF|I}am-~X@qe_b6ZT8#hQ`tSZv{QuGVulC>4>p^IJO8xJ@ zEA21T-~C?G^LhT}$Ms+SEPwskK6&o{l>hlZ?}z?9{x3fiR9)6$t1egf{Xe$)|JS?! z?dR36>$8WIZ-3+e+AIGD7cLE7BUAssT>a_h|9sgs-~X*I-d;cVZ~XhOk8HVZ&vApA zrDm>wy0^{$r}*#t?RqOYP%$$7|IPiY{xUK!EcmznU;dx`Kj9ny#h?HGLLO8ufbr{d z|G)qLcjV7?kI(o2?yoocZ-42}W{`g&1#8396L$4#(RRPDU#tK6eShiSpW7<_{*Sd@ zf9=2g|LW}%{`~yH|Iz=Syy`#K=kuRmuK)Hk85{uy$9~`6|NrIR`PqLySN>7|e}3-& z*S+?)x6S_-X!&n`{r^pm^?#rKKlSteU;BUA_xxXdZT|`N`+w^1{qZmR@BP33@74dW zuKizq{r{%p|8tMW-@jkq^#Ak!sej^s_u9wV)>lvX{{7$jKcVy2+x@$3ckln(|L$My zv;Nm}gW8ALziYmg&iNz%_iyp5_<!R6k9Yjv`)K{I`G4Xq|AUj#>i-k{?SAh2zkb`l z?Z1B6f3E+u|JVK>`G1!GJOBSh{QupXYF^i``G5KU_J95VqyMM>i~s8ng8$ZU{?`m{ z6Q2JMDowA|=lH+2|2A*`ef9Y@pN>zifA{C{^ZlnM-hcJyY0b|!=l@lH%imx3@6PA* zZ{Jtj@B6oP?Z4mi|NpzifA4PnzuznVZBO_e{rmsTZ?5YX@BM%CpM5x}t$OwG{D1a8 zkJbPB|Lec$<Msd0nhf!$|Ly#G{Nuau_4Xmx>(_p_xB4%<e*W`g_y2yI|M&0nbw9uU z&;Fdh_S63gkgxv4@BDYU`d`(SfAwpB*8g+=f6Tu0X*8sP2C7lh|IYvUzw2lHmS6Gr zf6ShX+%Vps|8M_$@ekj3ZU2AZ^ZmEB`@g?`GTFbb{%7vv^WUG==l%bFJbvxd&Gx_3 zZ`oJ>Ul@AJe)YfG*Z!~jRsZc@{-62(uYdXf>aF>|3f=v`w*LC@KI5;&s^@{f|GVFw zzIOi$)8Bt)27a#p^8Ngx`k(QC<PHCQ@7n*W9@5Zwv;Lp{zu*6wYCf&~zjxO^ZL9xA zx4>=bwf|Rd{CEEQ`bYcU|F8WIj;h<=|9|`6x28V&`S1F_|Goa!|I7dX{}g&gU;hu( zG@t$7Qtkdv{nbZ6t@X|S*Z<o8_rKP;|F{2N2esLb$wM2*pz0Oeui5`g9@?{6pHct& z@7`Uv{%_p%Z*|P#ua95+D^7m%|I@y|;r0J7f_z;6?f<#j|3~b99{*SWt-e_F|BLy5 zZhqT;?w<W`>)-j-|DV73@jm+T`8WUe|NU?L_x`{C-~PWBhL)pvbNtD5_UWhB``vz@ z|NL@&+22B)|G)Rjb&LQ0|F5F{%@6Th`@hbA@(usr0XJqq>AOA`)D$@IBmdZ6_1^!< z-_Be8&wcl8eeu8O(Ep3;!8sm8ta17FUH#hrK9m1D?VW$@(7*HM*Z05i^8dg8g|%c9 zcK=KLZ~txm(*LjC*Wdm*|L3do>9_yy{3kc}f8hW2AL{@6t^eo#-#+#E|F8dF$d`WJ z|FwQAh`9Fus#JZ{fA){|>;I+yum1^ZGl&154sFSNSo`bxxA@c#FMh3moB8)TsCTpY zWcvU8Ro2V@=T`kae(V0LKl5|`7yt7IH$neb{X5^a|Be3t)BoSZU;W3xz!301{J;4> z^M9*N|E+%oYf~~XFf@F9R)72L|F7?UhW-Bk^WRhJZ}(^2sK57q|F#Fe#b^INU;Tgc z-}<#b-2a1o&%hwT{XBkCeJUsd=l(BV_xIfY#vl6s*YEtNZ1w-mpZz<}|Gx@peg6GD z|K9(d$L!DjkG1@NUAlf-uKnM|MStx7|AVw|w4a0fH4^{B*Va$;-}m$Xo}csI{G0wy z{`cztSJ(azU;jU~|Nrg2{rmR+XZip9zxGd1=YLPtzi$ff-~WyOx!Nwi_Rsd(J^ye2 z?|)T)<==m?KY#arx&H0vo7WaU?SK7#eg#wj^b7v4J{tek{^$Opf8fq$_<!a3HJ@t# z$LIdd{|f4sKB@m&|MC70|G)G9U)=w%JoV?b{}KO}|Ihy`|9|_x^MCgLnh%11;?w`K zgZlmZ=l##O|L?c<|BZRq>fhMb?+0a&e)a!%ejYzxKV5nM)t{$-f(J9++^_rlXXo?z zx9@+itNEK9{r9{5|G!)1_w4@v=R3F+v;Euu&2PKo+`-|y?uYsAf2)t%|E>Sj`~S=T zum7`;#s3B6aPj|F|KFJZ_vZY+H}_BbTl~8J@!j=t^()r>k9uEU@=ra^{(SHL-*4@I z|2`l4`St(n&+bP({r~aV|0nf7_ZR(L{{7F_jKBY*KL7vI|F5_H)v4|O&VyQ+YyNKr zF+Tqn{ro@U>;8Qo&8`2R_zx<}K?5Ma>hHrkJJ0vUKY%qp|6Y6&zC8DDrrlpqujBjs zn!mcg|DL~BZ!$aV?ehAL|IhFLe}mEI@w#un;s1I6XaC}hx7XkOYrpD;JhZ*fz`&5O z_viil?*qQ2b!;;Sb!gvC`19}g{f+<AchB4WzvkEW|H<qAuNQ?^xycjv{-5%9eb(*! zzvpWctWW>n{8nH0f6>SJ|2yj+$#1&%|KDH#_y1!a&p-dz{%8F=f<1=~dN-f@Tm3I; z`L+CW{OWoCv;M}<26uqo&$qv41?mAI7aHe(UjO>0KJWkU=lf^>{qsHhZT{B(_TW(@ zNUmXEU^sH}-@hZjt_wc1fBgG@^#9u2e^<ZPXCJZu1!*oE=(zE}|F8Dz{l9*{|MR@~ z?f;nn_V)i5{{yuV=BNI<{VzZJETqqn^mqQB`$?dd!OZ__|7TyW`{n-hhrD(Doqzv7 zftuOt|LOlvzW3+<zn{Os9R{19&%fE%-8*mLUbp)1^v|HG=lSvZe+56q|2+TqM(*-+ z+i(rF+01YL^bXcqsGd80`}Y6#tNvg7_5b4i`_c8e^Xl)*zb>vvYcM=UZZL$e2e%kX zfB(Pv+5hH8d#nE<z5k#6Kl6X(|JDDc|4aY>X#dgwkMjLr@~`Vb$^NH3BG>)V2Q?Ya z|NpuF7yHjAljm>zck0*r(Chy<)xZ4}|Lwc|&HMJD>;KQ+yKUxw`Q`uL|K9KO|NGzh z@Bd%<e^NdEfBgUZfA;^Z{|ssp>;HoewAugOzTyAw&+6~~|9k)R@BPo}*J}3N|0%ur z)cSS*wcginsjK0Ri=Mmx^V(nkuimfU@=yM1eDq)U<M+eQ*IVoT|M>m8-2d%$pxR13 zxbF53(X;k9KmOnOH@v=H|1ZQN`+NVq$^Q2H|GxPZYyRK#`yc*$|8}>}_1BNpzdbhp z=HLIbe%8zUpKtu{?7II|AJ6~DKl3Yo{g2yb|6N|&L*s7!KM-`Z`}ySgng21-^<Qd# z?tNCj>PY>!>Hn|BU-|#_|4;k>>*M~1{Wt%&;os38=YQFM{tp^mJN^Grz2BenGyjMG zpZs6@Jfy)k`#-3KrM>Qd@4NkCv+JeO|Hgm)y8qe#EO6l~|JeRMs7Lni>;Bazw*Nc+ z%l>cu>;FIYgUUrvgCEr7w|Z^=12p3K^-ulppXFJ9kAK_pFZn$pX`QpL{I^@?=h}1e zC#Qo3pVI%o`FtEv>OG(Tzx3UoUpxL4pTA!<m`l9+`}z;wm*)R(e7^s7b=~{>C)MZw z`S<DevH9;$|G)F^egFQb)9Ll!&Tpyz_Ro3smin;2+t>b&{rdmS-}^u8|F3`f|LX1h zKOdv&zGi>@c>m(B!jSWezy0qA^{OsrfBR{St$+6a)X({UZ^r+P|MUGX>(3|A|Eo*? zhL`+H-SV~m>h=Fo|HG62&VL_&v>qHqpvr0c`~PqM%SQg+cJBNCU;n56`v2$tzyDKj z>q7^oOFx6+=}$apr1_-z|6-qgpX0+i|GxpXCgQ)=|Nb93=l}Nq>;KkY{oiYU!u;Rm z|JVPU|IhyiYUv~O#^Nvj`}VuKbnE}*(!b$5-CiHR`1kp-8~>lyg2s>+gM9q|&HuT- zK_krlfB(Pv|4i%OMf;zd-`3CFTmP;6+x@bC=P!P|za5m^>wo`G2Q?Po{=cvOPx60n z<p0;Z|JU36kCClEg;d?RL5HGVPmZlWH!Xhdw)^+bE&u=K*W-wP->YrK^uPW8`|;n6 zkNUUjezpI&pY(5M_@7iz{q`^Y|E+KA3=9n)@Av%nm->JF&HU1Tx9_}-fBt9ts(-Ks z3j+f~MCY6L{%h)GGyfIWw|yv#-*NNn```QR{=NSVD}5cx{+|9<|0dr1|JD2dw|%z% ze0Bc$ZU2k^+FC)2VEJ-T5v+Y4QUpJ%e+|k)um7+4zuNTQmVf+@>f`>NM=F28-A;xF z(O=iU-GA!A#jo+VFaKJ<_xbzp?vu~|tN&W&_y6{nU;SJ6U;Sx+^WXD7^D}<Glz;U9 z>!10e*!!N@f8wvgD?$bahSz8RZ@c~f_1({Fzy1IG_jLK2{iYlL@3~)}d+@uy+5h?9 zL8I4EA7R6b24d&-r~E(lYyH1}*8iW!{GR)t`D6UQ_~O6rCI4>ztS_GbfAxR&|0`zy z|NY&5@BiZ7`Z@o17yVmr{x9b?xN@og_xE%ks4*E19+HQ)1XmdS&;RTF_7}Lg08MMO z|G2OIZ}$J`|DXO3eD?q5{#j_<=l8$sp_Lt|+4=MSi=WqTpWh$+X}kJQ(6Hm<$+qWj z)z6Om-~V>suYYfC_w)V&c|!}~jl93+yZ^2D7k~BNz5j-<{$Kn#|K{ue*Kgg=f(?M) z{<Hn(f754>hV|q9U+b^F&Ho$!^bdH1UEu%k>(JgaxT#~WRdiqf)5oeW@4x^1`_b;_ zlgajdf42SYhh+Hc_oLw%{xUSf*T;SRzvu6FPyze~CBxh9e}A|CRppg`|1W+^eXU<r zD_)<^|MA=Vzw^`1_s{yjcz?av-_!pe{qOj=Km1Q9sC<52|1BNV^4$OJ`}rr6<0I?t ze%*id`v27R|7D&3@B7c&KVN)zyzYOO^?`rWf5&gBy$PMX`ImEl{<=&5c79#||NZa! zfAKf}XTt~AL0!9__W!T{_kUkM$=~kh<s<)Petxq5y}5q(kIz5uzpwqjQU2SzfBC;} z+wI@)eC=`l_vl~y)&BqeyuJDV-qqK^{p$O6^&jqUSKI&p@8|XZYo)(|MmHg&SJMA` zV5P=-nflew?SIDqL28}Wm;UbG_5VuF@A%aB`)@|omHrK{{J;3?<LD1o$Nrtaep`I) zfA_D~!~S3VSYGn~W9`rW{rkWF*#Gsn`oEL*Ge6xvwm#$E$-e*R-|qkQyZU86xY71A z_epyE=KKG@|2>lY_k7u}{kQ(_HJ$Z;x7ojJ^M7aF{l9+Z|KlJ3=YS?@u6NfTt53f6 zzv}4yZ9mnc{v*$u*!{f!v;E2B_kZ-C?|*V4z5ZMIzwMv*AD{Jq|E~YfL;s(b`~ML< zJ2Llw_8-GTmQxnTuI~Ro=l`$I!4LmjfAg~)TYr21=leJ3|GoPEX#I2jN&fpj@1OI( zxa{BQpZ1dP=YOu>clUqkztY}6lWXg0xBYj$J$<eHKlOi|^-rwpEtmh@Jb(X+|M5Hj zpZ~x5cm3OMr~kjI2le3Z{y7h>+Moa5SFbR?=5_tr|C|1G|E>LRed@dY&inR1|NVdQ zFE#g?eE;{q```aJ`g{L-{l5RNg^{8~vi|LVWzftbq6Z$nY5(7USL9#pe^+gH?C1HL zAMLCDUH<xW{>F3loBnVA^M2L8<p0~XKpljA*g6QI$Lk+o{r~ITfBEzF;m7AAwNd6z zgmg>~{93c=|Ci98Z~kxRyH@@GI%sO+-}>)WALq5oJ!h@sv#X!2^w0IS|9^r1zu(%+ z_JfKM%sy$v|Mkz2`=q7M|NpM9Px_a=<mdZ;_w8r?m(Ton6Xah=!Fs?eWxoAn-T8mB zLG9)HyZ+Tg@A>zC-Q4ik|NH;%jrRCg^9$V37W%*F^ZCy&?SKC<1V@0x<G=6k|Nrvu zyy?H6HvcC7e}3-&*JJZ@Z~OmWA@l$I{`#9Ar~iHW{}gzVQ~uch(AV*xSt|Sdf9kvc zFa3Y~->dr4*Z;4+uD|*C|F*~L-@ms%`2XjBuYc?R9+O``Z@=w{-_`%a|E)S7F8@DQ z{{8=Npn2)7|M#<k+J{?f?S5PN{p<ht&+;p1lqC7c|G1CgfBix872u?F_5TU=`8D_d zhe!X9uKhdzr#;9Of6V^{|9@WpW&Quy$bDb!ul;}dKl=ai|7-sn|6l)aIe0|<dgT9u z(1ZgjO<&t@TmDrZRGxxn2OpobFaP)P^ZlnM@=N~}?W_5g{@>>J_IUgHcR!zh`@UB` z{{OA8|9{Wd*S}?d|IYq@ZOH%V4S(1E{h#xD(e;b>{^$Ikul?`ry8o{}`v0F_^Vt4x z{ontyK8F8CYci}){eS1z<BIRAugkA`z5m*8`MLi)ub(e|{J!q@`G5b4umAb=f9ucf zVL$8lfPD3Dea!!tw)M7A|My?}WB-3~{p0z&KCOjxNkKL0=6~n^)F1t0AN6;A{-3kw zkQ>JL&Hvy3&i$kM?(O;qKi_|wcmH?!r<3aY_y5`U@%ish_S^see!Tt~sQYdFcK+V~ z7qs5a5B;C}x<34`ef59yf9L;a|EmA`O}c*1wD`YKwSUUD)X5-Ch|H?}cV@*;`(MA) zFM@{-B+!Nq#Q)dUJAwwi<6{4d&aIcs1-GTI{l6OV|M~CmkN3a--v^1Rx4-Lu*SlZa zzxMOr{r~Eh{<HtT{eS&a^o$-3ZknI{FEjc5pXs5GKqK`x|A+s*|F2&3`Tw{7v;W6` zt$)l99S#6huhah@t^XMRw;wzhF#m7(mi>SK#l^n;9})XMblt^Yg(d%Y8h)#<ybqcl z%mDe={&)TJef5v#|4IID|9k(=uKF+j|8joEr@x>7ckbWqbN?5Y{Q182V|v;D`~UvW z{Fnc~{`ddyose=Ae~wSNK7aGm@a1p6Z~y$#e)m6%Y5)Jm^&jp2TVKD&z6?5$zI{gh zJ8)xW{ha?d_iqC=1rq+4KmIrQ*nh*{>2v>^mH)nO`F}0SjA5A4@880&<K1WdzcXL4 z=8kw?+27y)*7yJa{SVfXnGpMb(|`Hj*DryF)ZhL&U-R|(=C}W2>if_AU-94h&*cBd z=l<XJ|MscR|9{ng>EHG9{;&PFeu8J#vU=^;{%`&<Km7mZ|Df5+)&E!jKMifk{0RG- z{d>JpMakdm-?seAe*g3L--}N+|Bv50_cCa%FZpeL=|BH%|1JNkgPWlBw*S+QLZ;}x zt<M4t4X%LpX0J;95C3Y9XyhEI`n><`xBpe&YgYgLU-SQy?C*TvH}>zp$47to+kN)` zbI|DZ{;)r=;l-ZT&-yp_ZvsW&x&M~e>z@C2_%r?g^_c&HbL-3g-M{nv|0~d>;WOA+ zhWzvY>*kEk4h*r`0myjI>*D+RA7G8oe;J=vU*7i5Wd6VN+x~z4UB2(%w7>t--`mgf zT@4;{`ux7W486}2zx2KQjsMTpi~q0Rd3*o6fAXP!V7Y{WfnmeFKkwg{Yg8M%+@8Jv zcJ;q9kGlVV-{1JZIrjX`db_{3{~KQaf4vJ<<u+_Qaj*W=zwoVZ-~T;7m0*4PKj*jo z{`!kQ&V#0V`6J)g|NpoAd;PkP=bwL^|Hr<ZV9z09`kT+{bL%ag{$BpMKJ<M3)_?1L z!5yIQ=jHQZllbsL<N2T0Rp0El|Nr~>{@J>Jzqfwde(OJER1ZG3_9&&kKI!jkj?eQy z{{6r9|30(-uYT`0MNG=Oy!n3|wzlB&&TsYW{?DHe9gIJ31R9Lr3hgs&{OA8K-w@O? zIP?G7|E-zeA?yCR_IXI-@rL>T>i_@w3+^z?`&0Z|-u`|19OeC2|3OE7AD{on@pJv3 z=XGzk1*b>v{`>h=y?0)H$iLgq`9a;U|5N{h=Hlj^cdRUjwHEfCJAM21fBCEbGyeX6 z@&5hV{buL)zwiIL(;l_Ka1W)yu=+Zv#qej>-~VrZE`Rewer|o&vHH*T&;DQefAxRw z|K9&U=KoOt2VOH}51JJFGaoT0_is9=$?*LDpZLGvWn2;UseiApdR>2Wf7xIC-@oU- zc|U*E_5bJNZlC$zfBFCSzwyid|NeLWd;P2bPbRO2t;zWb8KAxi8J?d1H~Pl^yFZ1$ z*Z=?i>EHXG!r6BB-~Z_id>Veee(HDoDEob^>(`#U|1%72+1l#o`(>y9|M9!J|9|v; zP;E6?bARriu4nV#{P=(8-|GGQr~iX^<i1<oH`CvL>+k#9T>GE1{Qv5|_oEm8+@Jk; ze;H_ksQ&C9`@a9@CI6>guiyJ4{f~Lt-}T{ta%a~s`YI2dO9}rEf(r9%J{3Q!U$@r& z*S<e-pY1_)@9F=q^k4n|1zOh^zP^6-f9d*&|4Dy9vwZcS(Y2@bAMMruJwNk*HE0## z^Z(!m+u8r17MAGs|8C#oyU*J9ZvMCa*RS}`pvjzH`+xO+oDZ68^Z)<re(00v|H*&n z|J(ny{?C2Ta2=?@4{Gwy{VM-w{{PSatN!i(`^S3gzvSwu{~Ny}lGgM2HveP${)9bW z{{-9@-CY0e=VQd2=;!nQt;*|aWB%`ao^LxkA38c8if;wP=zQqVm=A^2X(2QJZ~wQn z>@T>u0FCZD|9LO`|Lp(M|3CfL`27D({8^MK-3agsSxDcQfq~(`pZqU>UcY^QU-Ref z$$vn@jvr6XOMkoHcm4n4W%0HDzs<YPRtuWeor;*&-TrTOY<<Z8^;z}r|4V%R|KiX2 zH(&o}zs)y=4uH<j{dfD%e<^6g`s4jy`(J(A{%?KJKk%Gl$N#^tA-!kF>Oy(Zo$tke zR@nafUj6@H#r&F2C*|GiZvQ(DSpf0+{aVm06nFu|OXva!`}M!-@BRDzXa4{2Z~u`O zK+L=U{hj+)o2>u;K`YF}_wMW7zrDTU_xFGPo1eSmU9uYg`*-@Mlk0W%zx#Fn)$9M8 zuK({_SbzV2+wt?=ch^s=Uvz!Nzs-O3Z|%#0PTtgSd+#5f`Tx$Z>!9HLzy8htt?<G1 zeW1zT`Tt-4U;f=5G&PX<sJ^cTG=9H7_D|)X_uu#ZzrkN!{(t-5-1+zKE581?|F`bn z_{snO{k(nf|Glf(;C^-feET2oqbJ}0|L^DZ|ND4<gGM(YqgTE4@KqGyefzI|o{zTN zb=P0_yY*Sy{;uEj{eBMeN^sfa|Ic5)?Y{PZ@vrRF|6lyD-u3^-zCXwB->?32{}*Wa z>wKS|xsSt5{-+%O{~WY9cJG(tphjE&AG1%J*WY~q|99P^jsMcE|Hi-le^2V{|5)k& zTczvMzW>jD_P_8?{W;LI^y{PckM|qCuHXA8|Mnl@wJ0;i^Z&g6<NWDl`M>F(<BOhb zw*PJY|Mt)O$!Gt^-~Io2)&KPV|B%^{bN@~MNj#J}b#dL*<Mrq2|NdNA@Gtw@pTpSt z+xLIIhpao?|5+TeB<{bZ_5Y`T=J$L*|I_~dyZ=`Ice(vLX}90*_Wwn1PhXP<&$E7- zyMNB*e>cy^U-`fO&j08Cum0U%_WNo5S9{Rpf8IavlKtzS>+jo7@Za}!|F!za|40Ar z`!D<S_xwBW=hytNFZsX8>~;U~-~aA^ub&B;8My!dYbPRFuJ`Q!_J1O34_y1^{kr;B z{9od~+sZ%w^Zd;ZdE5UlfBiWh@!bCA|LA|^q5n7jkDdxzK6D@3@}X6a_kVm<U;F)k z|MU5)ANwP<QO=)$bW9U!!*169T2=Gye>D5+z5id|c^jYp|9bV_it|qWpPB60=kNCw z{J#i1`~LUa{66TiQM5j3=$il6KO^@^cYXf<cfY;if745U%KyKgf98L`$^SRM?e9az z^B59TH=Un<a@zTSTffHt{hJ?KzfU*rfBp4ytH1s~{{Nn?O1<4*P)FOnv;N}G=Rd#9 zul*+hj)0zz|6ogVYvlf){9pY1f7Rpj+ukm(59#~={QiE};sDU}CjaCAtG?=gI%)oY zzWM*jcmH4dpIrZS|E{n9Uwz&G=41WskJrC{pa0<hpL*5**Xthlho8SM_vG*1|JwCe zpRex!zpej!{qO&QfBSF!zuyFEAKtQ?Un{E)TEaR9yoA;85!w>gSM^UO`|o@IfA!k` zYxjXRdi((`m6HCy^8aW1U)TSy(*aFD|NruT?f=LBul)y2p$0>itFQV00MsVD{`vpg z=l55BmA`%YS3jsc1r-4wpUk)Z|KsQTq9@y}>Mi5#es8Xy_xJYt`S#!c6#xExuYY}g z?&|;lp6}oPt-1XB{Qq{V{_EcOckN&Ow%UuYGv3#4`+r^()K>laWBGsoeIMul+yAfr z?2pxuts#g3-0Pd_^Zpj@`F-^@|JASYumAR+`+wy1^PL~d_y0|=|GzW4?(hFwf1+3a zvA_3c{vZAS;p_f?nYUkV?f>}ff1njDAN^y0LKmz-_Za-!pY%_D?Z4~h|I(f#H;muU z{{Q|r>z}>v-r9foQ(k@k{a@>!PbS}wue<%@bM4RhxBvhB7@iGUoHz5^`Fr&lQ@@>G z^?%#f{j2}Y-}_(s|MUN*fA?2`))<~%U$@ropLLXdAJT-#S-bkQE1-pin_qy&4&8gu z78Z8@-?tw;=)Hd3|E_cUd$xhw(y#w#t@;1?@9H1m)uiC4`u2DK-~Gz3?_c}*FaH1j zp#Sqh3-^oAGx}<9)BIU|-^ucSr?ozUM(W@EU;Qut|NgGe|G)j;3R=VVksZ2N5LCUM z{{LwIkM;kKgLfC4|EGQHeqH_gb>HgOtoyHZJ>##%uK#x=e(&Ft4_Ov4fA9bKfA<&P zxBuw>Z{z>@fA7Z}wg07FzwPh(&EL=eJNNJQx&M|{|9)TlVZ8f){{R0z|F{3&|M&mz zBam_we~#bu`uxpLt1o~1ef#H^`LXpfr~lWjKmO?Gzy0?2<gK9t>CtEGzk?Tdg`fNX zCjK_4DPZt#cHw`|$Ny*i-F&Wo_U^y0=ll;tnK9I!`1fz;*Y(P0>))LhuzSaCzWZP8 z|Le#9*Zzl1l%7~ufAfF;-|UzBfBn8+_Ah<kug^EX)vw#{{=ELmf5m?%|35xgfBS## z)1UQ!?SHx7{geMU{_P*|%-Yst^RNAP{BwTw|C|5g|A7_@U;Y0SG%m)#z)-XL-`2n3 zk~X{kWmiZ2-}?Q}-+vjOZvJ0?@7zn!T;IlT+pYeq-~K=6zc6@7-u`+2H$MU`aQ$Te zJA5l>GXbnOo7MY&^)Iy5LuJ3~_g3$_`mcUp{m;I?+tt3!|NeWu?vH;*pZ)&~8oiF! z{s-HTaO}{}>2KmAK@s@;|D5dopX(L=o&KM_?tjNQd+Y!C?>^T<R^!3OGWtK)hmXz< z47J$-a1*%U>(2M$KVXf|dXt}5Go$Ng`TtM9{r~4*>-hT9b^kYimp{8K6g=ki^Siw@ z`f{%Im%j7A`Tu$H&i~i%yp1pa->-$ToFM<-_wUwI_DU{#d-ncY+j?u2{r~@!zxjW2 z-Sap0^Z&j5KjZcP?4z(M_drC-d;8S?t8ab#{_puIg7s<rw!ic5@6Y)29JE)jea-j% z_5Uybw!i-4`R5=0|K?lcSxE`$Ijr&i_H**N{W1&xz5H{1)${#P|F16t?MeFo`+5I% z*d#u@&?x>_YWsWs?f?INzE89N|2OJ)^xOZCQ9X!h3=9l~oA%pp{8!rY^Zbv0|F6}@ z&#wRa_rBCe*jS^1(zpM~u(bt0V}9FT|9}4cf5>2b`b^MZd=#|L5b<CA|8@yb%ivl4 z>;Jd5fETnMKPSH(X*_<0`Tza(|LVXU2LFFM|Mt)SZhUUy{jC3xb>Tlhrq{Rp3IA7Y zUv_)t=CybKRes&Cy4_yu|J%>(|L6Yy{QneqF7EvE1$%bGS_^T{pT2$jzyDSJmVfnM zzJI?KKl}Op@5g`Lkw<MXyhqvda`iQ+#ZY(mU;Vc~!DWB?&)K^^-v877bN#FTul^tV ze+;@;0<>mI{%`$X(55!noSgdq)1W59=lXx^|ACfqrLWn)>0kEMulwJ`@BTOa?_d9K z-~F$?{-3@+_u2pBFaQ7kr+@i>?f>V$?Z4K4I(Z$sCI`0T4Yb(}yyZ>z&Hs0QI)Cr~ zUtRhC`=3tJ`R~jB9b55f_3Qnoe#@_wzu$B{?D_ke)&J_hewT;Ow12<)`F`K&`agg7 z9{;}<Tw9%-a^I}Z^|OE3pZdK2SMT5VhI%Al+5Y#ezyJ2XSC@NTzwPq>tN-4wz4+(; z){pVKK@&v#)BedH|Np$Fe)H@7anN0I+W)qlwZHhQ{|{*W5ok7LHFQg?<!Afr*W_#C z>(>9A52|~g)_)cM3JIgt*Y|@KAFZi3{0ExlgRRe-FZ{pw+5fBmpZq`d`9HYr|Lp%s z_4$9gUe_=Fz5eL4`Ntyvhu8jH|8xH>(4^?!<3G-WCfk<R|9!9Z3A9Vs|Ns48_W$z# z&i@H+@PnHC=YH}3JOBS@z3u<|b^qo@{oiQ2_WzA)MAG`~KkvVud)?~K;h#W#(dReq zfB*T2m=pc^yne3re!F%5?|j}qZ*)HNkN&^@(fLqZD<DSaLx;wED5OqXb>@Hc|DfHF z;sP|fulVnK=l^G*jj{Dpe%60mp9X5W!lraX*ML{ZLbj8F7Onp?ulo1(+voRF{=D`4 z2ik`5Bjx<&Z}*p7|DU{j{l5C@^ZCvD{@?t!-wQFV8~y+6I{Q`s!?*7LUf=VpzT{u} zw_pFae%n3^HV0+)KlfjKFSKF(BmZxF>F?<O;g+EJ8qmJoe_tWJXUOXA{;oUUyKDBy z{r$bSzJ3pQ|AF%U-2aau3n0FJM=XH&0$l(xKm4zK{{LF=5eg^^AkM$9{=T?MZtMSg z&<eBexcf)%-*(>fxBCC`o1gJ7SzZ74ukp_(;nU*F|AO{W+<aYs{KEeC^@krnKl(2G zwEe~GkpDOTiG%i*Lnd$RZ+~CDdP{xY-`Akv1dZ{*cNNy(hphAd`v3Cp`Jf&9CLitH z_x(Bl@6CO^e>VTVSKqIH)4q52|J(nzoqzv+!q*@7|4#e2{$&0CKW`t@zkg*4?pJR= zFaPKJ+LQ0=|NnVif4>bpx(OM*I%W@FMWKEC{;Qw<sGASt@BUl-&ffI)zwn#C^S4cl zkNqEd?|;VMA7Xp@Hva$o^_%PK|ABwEUac?rBYU^LCjKAY4p`Xl|F8U?;?F16|4;wa zw*)O}nfw3kpZ6P|{a^p?f92Kxn~&FncZ=0O|1VYFQ^5B$<NB+|_RshK`x9dE-?aK) zBDVha`#<H7b%*zVc0-oL{hu@Uf6+hxW51vOnV<i?er|oN^8b|i@$=u-gO)P(Ll)wl zi$9n7|IKs#SO3G`{r~*`)xY@Ne?Nh@#{7vlhs56NpZnj-pHRR5EB^KVHUE?9@Bi=n z^w<C0cmI9=?RV8j&i;D*aV^p!{a;5A(UN^E{`dbAs6FthZ}Ruse`Wu*{`b88!hgkO zfBNVBFRA^PzUK4%H~)42?_Tx)#{adaK+A{nu`M6E`tg3n*Zuo`|3Ciu{MC=kk=iKf zPe8ewfnkH)>Nobap?1IjuWkN%?|<pLZ|gVzf4w(uPx`{+m5uY8&);9xQ4iVjUiaJo zIC#?~MxRvc+W*%-k^7`~fBye>fBuaBQknmD|Nrj)?7#c0`fs3336P>^gV4?A=TlCn z|Gx!Vi@SZD{e7|Z|MzD<zxwO{<NEhvlk7oTP*46}d}RNNKc8!Uowuv+0Y|{G3i#4o zyZ--A{_p%;zxQMM?QfUuwT}P){64-6x;Owdz1jY;{^~FBpHF80KR^5b$#?ZH|8Ly? zEB-F%)RXvcKlZ=<@%r~~{}1*5_D}ksz5nC!)z9<!KmEJ+f9n2MpRXRTzkU4o{=ffM z{BwW%KmQ=8eV9A{{Jy@)pe3w+;3cdQ=u23?+J8E!e*gRbtJnUA#s5$L=l?JKzxe;& z|5rfATfD9hpGNkf9e<#QcFchu+VS@K`T5oVcK)q>fBgFXZCC66f4(38`{3^1=j-LK z{uj%s&;D<Jd*6%FE#K{L|9{>EYO7ZLx%^-K{ty5E@&EUy{ki%dZ3$KOP5bTtEbje% z^|k%guk~O5xj(Oe^!4+dAG`1W+r0n(9n<~)>U00C4gDvd|Ih#5^#9t|>#NSk_h0+J z-W0Tn^8SzI>uO&Ahi;|<F^vDm8~*PP`~O<He)DJKhVl2a|G)ob`WN^8n|#H;-Fu&Z z|2Mbh)5-Vx`*Z*N-1q1F+yDQ5tlkP*oagg9{k{Dbuixoc>u>+MANv3Nz5l)cKmVWg zFMcm*jp5Vq{bBO|W!K6hPl%+=w>QoLEi8=uqW{19zw)vFs0#~^*58i@4|<1RuXlYO z?-mViOMk65z4rg-ztBJ6)ucb=|GuvO{qO$2`xC$BzpnYe{(t<+|L6a|{U5&*J)>U* zHO*^2+aG^o{Xcc;kMsXt)qndR`hWZX_@h7TfB(M)TEq6E8M0UqHhCWZC;WdhXvOol z^#7u7^Y`x$5C3f+cD;UT_Le%CyY+cJf8+0Mhn!|}{@(xd|L*U6KmUjN{~Q0$|I1(Z zNdE6+``iDn-~63kpZ-7h`F|PN|Fzkm&Gp;=*Dw2j8?=0_7J5(({v3bv>+_tSS2KVA zeOvSE{5t!-r}g`<Cx1-(e_#H6zbtehUH94iYVhJN?dSF1*5`r>3yJ?{cl=-SvHr}z z$mjdd-u+j4u6{Mj4$7$~z+1Z}KC}Ox&LRK3b$0Ckeg9uS{=e@(Y-Lx<_5GkFC|kdP zhSaV98^{0sne*HJ`u)Y9?O**D`2Xa8;q(1(|8M*BXa7I>zl-z!ZU48v3_P>8KkBhR z=vav7SO35H58BNM>VSR%jf*ibFzgHcf9v0B9=X{6TW#0=zg7LOuHNM5oB!eY&%c1? z`XYWu&;397ZT-3bo#4Ig@#p_Xf)=>e|D6AK^)1jwc93D9-t5+6|4|Pkx%Vf3_uu{Z zZ0~3Nx4*x?=J>y8;os+f|Gh3&^FQhH|4Pv4HS*59hkv}ktzYy1)%*RQ>(6by|I=RJ z|I`1b*Xv!L&!79>{QJ-Skkxpwv5ezC_iK;N4&)B8*#U49_`t6_-?`z9Py1PaUTs-x ze|Gu*&2Rtz`8Rj{{?z^dZ~pF2ySxfK=Je<He2nE>;V*x)fBXOQ<emT7@4l_y{oh>_ zo=X@Q7}l8o|NUF`)IFYy-=4kyHgCV|r2F;%t-t-xxnBHjzW@Jk^=H1K92&Ff`}|G+ zLvw#u|1W+@us*fF{qOwyc$0shL7NVpuaR)h0;KxBruzGj=kxf!fd3``vaf!QhwQ#= z|MCCt=i|}f**D}u!}9;Gd4JEpt^fb0eDnPOb!-2w{q`R`ss~vB2-*W<0Xg&M(4X|0 z|Mjo;uRpv0*T4K;#H767@BbTNd#!8M{hj~%|8v-2{N^*D!T7b1K11x9|C9em_xykI f-}3YRul2dNzzf=wpZDKJ8jmk|QqTNA!s#vmmBu`H diff --git a/client/resources/hardnested_tables/bitflip_0_0d1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0d1_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..4d1b275939bff40720e3ea979dab15a670881b9a GIT binary patch literal 5983 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 E0BLaDxc~qF literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0d1_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0d1_states.bin.z deleted file mode 100644 index f7dd752f4aaafecdd78a9221cee12e7043edcae4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28438 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 Z7Pn8J`!=%w)$4&T&w2Epfs-qj82}zX)MWqw diff --git a/client/resources/hardnested_tables/bitflip_0_0d3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0d3_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..cb9afb002e694c10a1d31d3a22625ab80daba6f3 GIT binary patch literal 2082 zcmZ>Y%CIzaj8qGb%$x5K%h1vG|H?&4j)}rIZ%Q=GXqed`$RNNd!NTCc*dXyh_&)<2 z)WTVejT2HBBzoDL6$}oXFk;|wYgU{fk&q(Ez^3dt;RKI?5l;iN;DQq=Y@A;GE(dxT zgxwgJm?i}^xlOq@OXSSFWs5o3Tjp>7xrou;M^X7J*Q%ARA@(Vnn)7#R1vX9m{CoP5 z^<CXlo*wGc{!p<azM1Fb%$QA8ED!#5+I{st%JI}I<*>2lqmyF6qSNA9Pg<r<i!=&m z3;a93TQ5#W^|x&}&+>yQMTh>(JE!>QRF(YMFSe(@r>}VYO8c&1qU7YGdLf%4CLK*$ z8dlS=o@2GrpMYbb5nR6%KLt*Iv0*izx>B*oX|4xGD~k^HEQ?qzt~2v!pG@MfX%<GO zwY6nZp79i(z9{-;szLZhZq=h<o+tIv40{YG&NP-x?U~u9F*78^Ye&<er;!rfV$NFn zA$wcfS0qYGhN-c6tDZVlkP<P|XEV>59h(mKg-INp+S8_1vFfX6V^!BFKa~Vaug793 zCwn$di%2-;vuWeho*A2pCZ%dlTJS^k(P^F5W{yoir`mX|e55>8SaO=N==9dsX0D`} zDW?)rTbtE%7A5&JY|`^?oHS=m(xy!kGmdGc9A-;a^K4U`*mLBV!Qr=Ynv;??EsOM) zm^rnxbB58<&S?@!2UAiLQ&SVCCY*@~=244G<}vcoIF*>HrnG4?kDAWLDM<##5@&ie zdp5Ini$xkFi}4(joEDTUtQMFoaKvekq^3<#YUCsBIY-a)^c+hGZ*y$@pmDNFS%1yW z#M9dCngvH9^e1y)`Q3e`!r$q{SI-YY-!&eE77Cr%Xpow4bgK8&Zf(VG9i0s|*H`)J ztemX<<Vj)b^aT$R54Rp>eGz}5hW%cJT&LXmqJsw#Q>U-i`E@6pC;WSTTl!x)r7!ZY z{;B^c{9x<<<a~#5pM{<4H=fj_!^#H7RV@~CiyBFChS?<*S@b81e(e{GH<`xyCNZ(5 z>#KKL&=1AKZSq&@4?OrVqsQRj2Z<`a`m*Z%Z;x;Irv6K^C-`+pKWDx2M`59#%0F9Y z_&?K=u{`D%@A4#ZYR{S~<r~5Jsd_xA$&!8=4|Obbrk?82(|WQoamulXN9%+&^-JdI zXse0Zr6h)TwRWuwS{AIvv#}>KF=?ZXTEsM-#S&Vlcw8G!b_>qfWRRA0;%J-aG|y=s zr+IpeQd@i0Y+4hsvB$9Kz+wGGwqg<+j5ejE9G#J7taDgYUogeT#xUYUqQshw6Cd>H zX=|%<9#_}w_|;+%+H%l;jb@+D<n9ZrBK`cG+ln66J}XF#|8;z^{DCSx=Zn*IBBw>H z*;uvtX2Ms)YQq`vi?0-XGko{0+UVn%FOoCUS5Lm%AAIAh_yO@nkJY<xBu{VorL%PE zq?2*0PRt2zXOoOL+Oy1HebGnv1*ylhKiBE6{JA%LRnn1ffxq@0SA2B%QPHDk+B`FA z<hvjIn*QWV`iGi%@{3<_ew``rWT*Yn;$y`g8M)4HcKur`(ifhdY1eJ|U4G{DTk}o6 zsPFuy7N0ozfsah`jq_cMPA!6og>$Y6OxR#9qWB=;9m5SH6(^5~y8hI6-{Tt}9Y5i- zW}Tn^-m1;|Gxl~pi(4aiYV+|Ue|Yviec_*c^|(>7-ILQ-?RWm2*L~Hte`EEU^+Jzz zPWI@3weS2Y_x#9L^$my4H$9&I%JRJAW6{H$pW{v|>+el{w~t+?_W6_A<vjMvSN<N8 zkE~t%LuQBFSAU^>T_?kztrqjy$o-S`uzII`!C}oAXA)n8d=YtaWK-S!E2~5ne-91+ zt*o%$$Y}92k)%F>Ct+MqHu*V=oD3{lI*ljN;mJ&yO@W6}!&s-x;F;RYGMz2L=tR;c zof&J6x$#J>;Yrcitl70`m66erjf!1sBAb=e0#cU6EHgOi7GoKc*eq!wu5>a|$5}P8 z&Cn>>$Y)Jz!J}h5(|N+eB$CdgxpO>iG&tIEN+OMCu~@`vomHDwoz^&Ibj(<>P0O%H z(nl;(%vd6^CvvjRnj@!`#f*-&h50O#Y)kAhO6@V0+SoH&M=dfk!iZV4ThmBKvom4F z(Zs1KhBLcP7;I{0opff+!5L?crfdq++8A)sV5aL7pKfL4)J>;Oo!K<$T#TAd&qg;% zZEnsUkC|;gE9E?cJpTUW2(*z%nz87ZXQH8M%b}#B8YfnBtybCSla`Qh%rLQYnz5SU zjE$*c+B`F6`XsZQbe!a)qs_(>VQ^$kim|rjj59q4QhRz9oz{u)?3`qDuua0?WJ=O0 zAD<P6C5{;;&N%5UA#q~k)MV9Wp^ZI8Yb3gkPK%I;aMgF3F<Gl;MNBv6ltYKPxi-zv zNjB_Ob?)qn4B50GHRRDur3WVs51iI9I(X<YORB|=r+s{Gd=?ugPdRd~c)F31pGBdb z(PLHhpI!&qyB0IXY5E8ps+fF8CNi~6G9W1|G-*T9nUgk_Vk&F=j8YSuHg+bR)>hLw zm6~uYGUBjAvSso#Z80$&iKH`2r%vpNiP=<eSR$!FyJuBeK;qQrEzA?A8u&OFYfN*U zG~>{j&1xw-n6)M*E3M~CIl~<!Ghw~Zkr@)9i4ij+4s)cY_{><EDq)mx^mtQSc(cVv zH;J96A|;k~eblsZ`LOcAM>(a$3Ym>lQ%>_tbA9MN@v+7$ztF=Hk~1O>tNCm?<`%I_ z;iHj7MVw5s#M3q&qeGu2AChP|xiWaB_JpG$sY#0urlcF3ITq%#PRlPL;%Q=!AJe9j oF$UcR+%pw>Cd(AG8H6`;RcwezNS*or(L0ajTtd8;Uve)10OS*@jQ{`u literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0d3_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0d3_states.bin.z deleted file mode 100644 index 68ef2a6d5097b0fa81b28e0acc3df0902d805cb6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16025 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 F0sttOr)2;D diff --git a/client/resources/hardnested_tables/bitflip_0_0d5_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0d5_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ae6e859a852ad98d1948f29dfcdd3a1f87f102a8 GIT binary patch literal 2460 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 GtuX*vqEpfU literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0d5_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0d5_states.bin.z deleted file mode 100644 index 7720f54a371a5a5d13a95baacb8ea5e532840e8f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19686 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 Mr~Wf0#&q8R0NIBKMgRZ+ diff --git a/client/resources/hardnested_tables/bitflip_0_0d7_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0d7_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..90c5626138b4bc1800acefa498926d675510c665 GIT binary patch literal 1352 zcmZ>Y%CIzaj8qGbTp72th(SQ@|Nq0Wva%oNueasc@mRiN;sN;svY~=avauWu4Gb0y zjv1W~IPWvS080VG1u3=$wpl3*QYI%DE>31)Q()j@kYaYYz;M~8f!S>)gOpK1!x09? z1I!K?QVdd=6BsfsD=@qH2uL(ASTJPpGCMH)8Zq!nr7&ciY+@E*U}xZET#&(#xy*ra zu}=f9q=7>c1B0fP63g;Q#;#@}{5~3ArK<WxF20hga_hDA51gFQYaD!~D&@%hZGnuR zo~r66i-s@icR4Nh$o8?^EE~bNQ#KzBmUGxNUP<`OzHi@jrxI-*2^%)~${SX@Y>)r7 zn%j4A;)j_%1^OlR5l5ftxq18u_{2Q<EIX?=&!o?jc8X4H`XRpR%<uM1sju`7R4-QE zqIW&p_-=A*!5?-$_P{Ik%?lpJzHC2G$6oZxKj+o-rqqw?x<B&gUYzk_<2U9XeVhgA zOetm4SDpEz{laH1LrG|i>Zcuk!i)Yqi{E&%PO<aL%!qgH9l<;6rR1`e7h175PVGsl zeLQKW(pSzy3ll!^xN%Q>)ua8rjnAFCRes;jm}%_F+&mJAvf|8o;cH@;AKHF?*LUe{ z=#+Q-3xD>BADgk?;P_9@Tl@-%iCs2V)-g9(UwC-ISwFLqd*R8cX(44=izVHYmVOb7 zC<^CRi;(o$q$9iP`0d!kH{A^HmFV<6Jeb&1v?FFYTMXY}vDk3UcFn5>sSkD-izixl zw^ZoVx>vk4OnC94e3_2ya^=Yr%k?_jEK<L2ys+WP+;BFFf}&Ri503eqi?Psr!F<3c z!9M8FZ)V0D7Ir_rw{IzuGb~$PSuR<_I^pBGFdcPn@t!@7w`9cU>=pgp*S*2|jCD`M z)8q*!E1DM;SQ&PIoXg$ryr|%#$XD*i5k_eSKm2Drd06N2m-E!CQ>WkRB(_DQ*j@V6 z|Jm;L&zo}tKiYeKvUXQrQ{KGs`#C;l{gqYej4ut}=<KMBQ|CYN|2V&=$p4nwqpi~< z435cF>{T>)(X(Nu&XkAAJO+tvfzy|Dx3n|sY}85eS#vBcwP)43rQRyLRyR&9n)-@a ze38ThJ+ZKeUF*cTo7)WD8Xh|JaQaKV(1Y{EpFTa=*Yjt6=+o--hh@9{H^iR)%GW1n zbn-xf-{GtATu<J_@Mpg1{vPrnvb&u>XYn~XrBc_*$5Z2s5>htm|BW|#@G9=nOv8en z8K;E}OL>%)SCz&K{dqs}Uh6&W4Ru?q&pmIH<1CHQ{vxw}!pT$O6T{~j9NutRGWFoW zi5D#S_~-l#5B<ERG~VEarTv``G2%&;UH!2-txtJ04lmS?d{W64St{rF!orVdZ^_Jq zbHpc9HhnPcNtO%w#TTFQX?o!Fb6;d%KB%}p!RX|(eT$nH`K^ApuYAh)d%IuOnV)%Y z!+b2|bjuvWipdjCCAMp=i<x}#*R`K_`wq?PcpLGsV2#nHGspa{PCa<w;p5U+_6xf# zO6-%brC)n`^~#xA_3FKG2ZhA1wW^waeYMaleyd2&qKW>SV+4YA8gzPsg_V>gMUGb8 zQ7o9O7%Vz9w6$wmq{F7rwqOlIpHQ8N6T{rNW-6;hhE6q1^$wI&7S>#4kZNpbaMG|X z<WyLsQ8MSmu8nDKqTNcTHmo+57Sq;MmPppvkZ6!H(_n^F>#U_c21imZvPrE-Ikh1r zB{6A+ve7i78AfeuqE5P{`9wrC9g{e7(%|5<lq07O8MY>~g>f4kbM0A^;FD}H<D}8a zWYI{2V`7q=GmSNUHcA{bnmEnt%$k!usXYgI4jOYys3n~-=9qD4&8d(ygQGh2;zh0& J0TVzaCjd)GVUhp< literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0d7_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0d7_states.bin.z deleted file mode 100644 index 5f05c9cd351d5e5e6f77dcc0bacabcd14b9faaa1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9175 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 WsSDKXZulkth~Gi<Kl9-|k(~g!f#}Bo diff --git a/client/resources/hardnested_tables/bitflip_0_0d9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0d9_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ad2df6b557ea51017bffda4d4ec7274b568ab18d GIT binary patch literal 2498 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 F0RRcqScCuo literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0d9_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0d9_states.bin.z deleted file mode 100644 index f9ead3d9f2c9c39c7a36acfa4f9669f0d1a6c16a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18323 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 Ze{@++{nycDIm2jKj?1_I48b}YD*%xl-S7Ya diff --git a/client/resources/hardnested_tables/bitflip_0_0db_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0db_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..353c48c88208403f0cfd3208d24d7edde9bed999 GIT binary patch literal 1444 zcmZ>Y%CIzaj8qGbRQ_Cije+f3{r|7wj@vuGILbH(3J5R=I505IVEmXM>cA3U$<WZj z;C%A|cRT|E@MWCrY~buT&}*P@Bw?lj$KhE<NeN6z2FgAhh7xK%Oa{+-X3Sui(Zg|> ziN}p|GDDB$Vl_1eHDxA~1I>a>DF>9%4LGo5Nk`{PX2+$r>We*J<!EF+Il02t*Q9Em z&sE!usxPkIpN@vuGkGl*3je1Wa>(KP$M6L{{jD`T;a4Ia%jn1|Z{kUb^cFej7Mgl^ z^Txw!$%cKCH>{Z%+T#<<#-(@U%Z#2#Z=IQ`Jz<GG>-1zLopsm@BU7h^*k`>=oUGVr z*EC(Y*>I{6J4cdgt;d71h?LU}Hj*=T#Ok;+y;yU)yX&wr&&nPP$<*c^9fKW_$+8m* zR_`h(iS2q*U@Y8v@W3&>uGENFi!*1=yg4_qXU)vHlbasvoSAvyamN{d_HN}KpF<my z1+Axd_NX^6unF_D2}-qIEvy!JEX*hPiS5JMJo^bh&OiEj-l}5d(L|#+b=(Ilo6nRh zH(w|@e$C=#=%YRCUuxg)`MlJI-!t;N&i>V3?N@KUuzSDg>v*lI^S5f#XY6&U>Q79q ze))EO)$cI7sW-#d{(GnR=YH@F+eYy{`<xdZeRBA9#J^^_((aRW{f+Z)ezTd!*<<i2 z#`fYbxf6f<r~a~W@7n+Jr@eXe#{cIV!^OX^*<o|~leO%;t*@-t%{^10wTtCQe3zcc zj){fZ*8*0*VfjC$!;nW?EGR;aSz?*yv;;#RVQ#H9H?N}_2M*2HAeI=aCZW=Qedo7% z=`+5{6ukJS|DZy+O|yMvh4{O;WV@hu?sM<>9V?eLoSDAk%#OkfbEjD)KG;3^=r<iZ z_A|yeDkTk0B}*Lm#y{tWzq8JvZ{3SGzL|OSU;3lE<zBn{p2gT3{#-BmW%<8({=!G^ zRzJV8eofutqw$(Gi|;z$uM~Y!-S}~CAAhIy9QRkL)3?YoeObTN@Tc|iU4QsDytGxH z^sV2c?(rS2GX5KesXeET$xUwGF;`B#F<tofpB+^Zzv3hR&Py+Ox8uk4PjTBnTkl=I z?R@6NqyO}S&Tpyf-&u3Kt74|LVU1>ucjM&NcXq13kBcYXwS2SegT?N-bKAY!C2ySW zH(pwOJguab^G3<byEBi;2OqpR-{A4?8~on8pW8X#lGRWBVl8j*rC<4I^}=T*A7Zbc zsp>oVBKdpwxxH+06W=qR_>f+ndU<i@ll_U8{`yaRr`KOQbF#6~=RNQAX4-yMK54D5 z+<fpw+{Bv|vgh7ScXyRll{l0%{l>zhA7<#B*d<}a*}dd{kZP#i5&s9NE=Ro%9ac%% zm~?O&&y<Z*j-_leI62{%vreRup=W2Z(XlX{h-98KXHt{7c~*0FYfGF=S#va*C$%lY zFu|B-!^x>#$t)*R(sY(dByF6jvn=B1l+$VwGmSR3Wu>l6=Gk;6GIi#W)X=C^t5zJU zuJqr@SaqW<X|-CIM1)#c>WmFXla-Ek9W$IcBW0P7=VWC`qmzC*Au&eDVyu0S7fT#7 zOzhD~Gn(lmsjRc+n6{djVVLV=W22cq;+(PuX~vq<B9qSS2%I#zsbrU-q_(6)Wa3n- z5WSgVM$>pCP8~}1NlS?^mh9thunIlQmaG+{RC3_VG#v?}lAxC%Nt=1XLYq<}R<=n_ zo!PTaOWo6GTEx*wM$<wbtI0BUPV*{Qd08v6%}7nh=V+S88KaXvGZs&B7I`?$T~nR) zu-382LOr!mgBKQttw-5}PA}Hk$*0^o^_1tOnG-u6tqn=cnsTryvg6E3X(<VjWKCH$ zrH2O(9(gn;XvYknhey48f;OeP^Xy30W?8eTZ!*h{mq%9X@J-XabW-O?ti=PPRIW2Z p4<|`B?J%67lOS<4<+MRzYqEBar$wsfW$pg|;zh0&0TV!_G62{8q0;~W literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0db_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0db_states.bin.z deleted file mode 100644 index c272e158b620eaef0a1a1af43bacaa8031136c9f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9514 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0dd_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0dd_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..2d2e1970706f031b6d3402a49d506a482bc3fc07 GIT binary patch literal 1792 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 OiGCs~th+D2W&i->Kwu^S literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0dd_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0dd_states.bin.z deleted file mode 100644 index 6247d26df1c6a885ac0c8b9c00b2a4a2012987cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11481 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 Q_|t!b+5Z`*w>54A02AgvAOHXW diff --git a/client/resources/hardnested_tables/bitflip_0_0df_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0df_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..14ca3fcdae9965c792aaddef798e1defde36cdb3 GIT binary patch literal 1084 zcmZ>Y%CIzaj8qGb<lta4XJEeg|Nrl+xsw~s8K<~PGR$NUV31&vbQE9|U}R{J5STGb z^5o73Z2uV`pxCFU%}3y3%R#A(iycxaCk`+;&q_%#N@(j*<GAeB<8WEcje$w#va;f2 z7L!B+w^=4hY%`4v7zCcpl;oMAxR|ra<l<rhlamu07}`xvoJcvyE8!!!tXHCOnNJS` z3zyfV3}I&{Llezk{y~){S8{z$PB9Bs?|e1OKKRP~M=h)GPH;c+I{fGU-4j30JMzrt z`PX9GHRra;_8mU;tN&JYU+cg3cOHJ-o4%*2z2(`y51;J5K1unT&R)IZ*@itjAN2*N z_ttHFV{`nATtkKb(mQYD)Qm3~w<XTBKK~*vdGC|7N_nn_?+cPI>=v)QH@EwxZQj-g zvFaYL;wIkOquzSv$<8^J#t*7IXKIUINVU(NRG?$Dv9ZLK>9bsV<cIz2kDmRB^<I1H z%-(k9rq8x~kDDjIDflX9`g{6=eXf_@S+^(EwJRQcRyp@rEkCy&AHR0<1B;4tUhia= z8Qv+|?I+VSW7Ctw2eIcquh~Dj@s`c<KRoL`{_FZ3V;$a5ahQK+>AvS#`;J%roL=!` z&UDT;o8v3~HWlp6IrGNog`D}q=`U)Z-zu_MW|w@aAg0IaJVQb3(zBmz{o2>Oi}%{E zc+Yb6%1DWye%`<OvwnwjA6cJ$rY`U6pZ>}ZdQ1NB9X|Gdd58bWguU9APQNqSe|6@S z67^HhP8+<4F+P{BzA=5`Cky+)6BZT1Cv5m0%WeH5erkSHLG|?iRugZ{%}@L++rRVD z?wPTkKP_z>PTtt_T2kHk*8aqqCl6HnhzGuqIk#CS<-xA7*fegQhbb>2FQpm$_Brw3 zmGHzlYI>759QR7qv6_0&eU9IOC%djiy2WyHp0yBp#eDABlOKJudE$;I)9jYMGPd&b z=Q`(j=cUz+uQvDR7vFnUy8O|D|JN^+uKWBvw*8dV^s4VWEaD{}#~*n3=YI0Fs;MvZ z9jY8Z&gn_*`MBKF&UjW#*T3Xf@iXu2-#qI_e8Ru;bD!5woP5RlI=7AYSEIe%6E74P z6?|IP-o4aT&yw%x6|453ipG;^dhJdnea){e*I&H##&VwE!831Sk7pk!wS7N#-t)*3 zy@QvE<k&mUo;{JyCB9ooGyZPK(k!{ZOpBMM1WTlLYjaAbgb4o;nduX9a#GL6U{QxT z8iyu^O|6xfGgW6JkB_QE!Uls48&;e)N{H;_F_P@+i3~V7&ByDQ(}|-J%Y?PH3?+kA zPDD&&_BtunVU*evtmbn@vT@R(Gdw=4HM?#s>soVB$E}s;%%(GKVLfdt)@<6W+qrb2 z&&J59DJen6SSPc#@%T(i*49~)CYk6asX1BXuwuliW(lps3TGrvh8gM@Y@FJoa<VgZ z>SQgS869W5l3CM2Hk>r<I-@!*)aOWKLz=L`s$@2UU?Xq)Kd~o89y&QFC`jA^0H+NS AbN~PV literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0df_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0df_states.bin.z deleted file mode 100644 index 63e00d2cdcf5dce49a85bcecfa75a5b769c2387d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5873 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 SfMNibXbf3D?JsSUJOuzqdfYt# diff --git a/client/resources/hardnested_tables/bitflip_0_0e4_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0e4_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..19e2e610954730e1a68fa2bd2b7b9b9654836a3a GIT binary patch literal 2793 zcmZ>Y%CIzaj8qGbycwr{jL~D#bKl?p&oD48;9y{IV1B^Rz`)|bz{2rBsLsx-A<${X zq)vgU0vZgVDk5AeT&qMFf*KflGCK~L9AIGVHI#6h!N6d+Oqt^{0|T4MkwmEk1_ocR zV6V(hX(#@`UWOnqkHA+|A{R2Gn7@iRebWe9{ISbX^;DBeX@_E*(bTTBKA|a@lCG(2 zZrsWtOLD`4B_nx7C!Lt#EBagiwPfA*1ywF4Yl4-wa0jO7KiXz&vhu`%ur(1|a<$c@ zHj0Nv#`HRsYKI(ceP|#2%lo%=*E`qhRWpP>EV(GI75c@s_OzD0iT78DnNc&Qg`Rkl zaOkMP4nw208U_)2!rumWcXqdAg=VbhEb{f`FOiXSZu6?XP(9P&WX~M0f(OU>*}0oV zUszP}v%ZMqW7AQevTMeSWx>H(mn!D82Wx$>lnu3G_<nw8Dc7s0sH&aeEtzs(Q|9Q{ zaeLLd=~rKuNh&xp<CvkrhvXYF6)^@rq0Jt@<&*E!z7CyQCM$S1RwD5^`$lX2N)vm- zuEWAls+V7yBg5XBa^zHPFn{5TjYV00@<|VVE^WTEM^0FNiQUPM-tTPL4{Ypj*|)N2 zde^>{BC@X{L-`(TShQ(%fVx)7WYMmTks)?oCw3>RN$EzJMDeUT8vJ4PpI)8BI!#;0 z7YlxRzt?a2+3-~(F<CfRA}NYnB4w7u+NfC)a*I6QEe>kUa-SMtq7pUXkmo9Ir=SZ_ zVRD@>5-Zvp4!4CFTroIiFn?j6j`M}ON&PDGIZM<-SH_iAUK5jevb=M}$<+@M9^aS| zW7xi^TD^Ue?V|P*QGu~hYo-Zqab2=yG0#FNgNqqkGA?cN)mB>^Cb(jzYebkzR*IXH zTVRh-)QrR~i48~F)N~AzwR+i_Su>UzCS6&!WQ|UU_@u6^1&NwB7Ecvj7!|ZzG{VBi zWRq)=R8rE(NaL{8JW)|mJ!d60`MO`~SR5>(abit`goeDsEEl~6mqM9CrJ5OzhD}-{ zrYWN`W7R{opcv5-aW-DAlcr94D;P~fHmr6`)|!>FQ7u(vt;-CP3r9Oymx$_et(r5{ zt3u6jV$y1-t*Y+drYsBWd}A4qWKk5aIF((Q`@#m#W}!7wUAv~%acf!l7?~=*=~-}i z^3;@+M>}m6AADpOkyUhQ+G^HGU*<0FIUKJ2e@!Xh$F6U!FKo2Fx~=@F%y9UrjPk*E zt6PeucN}h)NUd1r-?eA;=hb&CY*`y8s~=jcd7);~mu7{7U8j0h9Bed5I&?HXWYuye z`MXhJCQ~ALy;Y8!)LAvFRo7#~8m<Eo{#!#`-MID!DYHg|mP}Z;bi&3}D?2+PW`!+W zqND5MGiA+|)QJgE(>zn9RF0fDVYF=H8rRNMZdx0nxHT?yhk5pfL}nU!3x`UzEeqz> z*4WC^mUQZ9+L}nyo~@BwQYwa?sj911D`YI3C>7~(IOx>M#a<CxRJ#Lu48?R-`Gy%b zT$;98;Kb3WnFgCuO~t&K3?icft{R9L1st1Z8rZTm;xJ>k)23CaynzizC!7v;c3rt} zO|Q?aNv~X6LoTekq`Fc^BJ0Yjr7NTa_&hvYgO>(fTH)ixr>WR*a^lofqs6L$SC;-0 z`5<y3GH8?AM3+-ZYbJ+^DtnyLnYbij-)b+bEt9g6rF7l2j!sy=X``j+lI3cSi`}~) z{fXcEChpY5h5l7M3jd3;+BH_yC>r%F7UrCgsJLo=U@V{G!kC~d-rCGlJil;F+IK26 zv|xg-q8N+Aw^d3Prm|_Uc}<m?vSrbV-wt64%~P3D0&D~Wj)eFM=nCj5D8E{=!b-_~ zrPm%Y!zCLH)dMvu7IdHTR`6Nr+NG<i%XMY?^N&}AT*E^>Jq~%A25KuccCj4s>Q!Ou zSefCbmB{U|l>exQ+bkW4sUe#@PI}E0%v!S1K&>-tW6w0B6dtuzhT2+9nNCMVE=_F| zjsGgbt0}TZY2gyaB};uZwZcTW4tkt&xWGE4v7}>#Z;02UKCNztnIY3SbzFKlTeEn2 z7Asf^_<2ov!S$jsVM<ZRau@DJtxs9jtnzexv}B%RXRy{5DPB<>wJFQEU4;@v6C!lh zgeogs4VpSB#V}=&KWAw00gY6Vl}}niAE*f(@%6guwj$-or47e8Lzj3fW+hJ9XtF`m zZ)vEdgI_?>m5oNuj$Mb@)@b!ctU9L4>$WD<WUa(8)s>x7mj)|ktk7&a;BhD^H6n3E znBt_&lo=5{Yq~NF4U$q0drnC?Id!SQk@}Yvt$eN(JduHhnyX!+A~q~@Inf&#qNB#v zb!p1cNo#t-wi@v)oHS$6;h-pHj)({~ZZU6BmBP>`Go7+FsZKb>EI29Br#EENQt^oa z;&DzMm(&6y!o5l+eF_b0c*^6gv&xcl#oP>2qtFLjk9MpR4G-HgOYz7I<vyv6%hs6e zPt(v=IhAcA&v9-6Pm0XR`Sm{=7(y5s7-|><7#JEDWf<ijFxawRkkUBi73j*=tdq>Z zz`%eY6hj(#85o$df<nGBzGBE+e2LN1W#ueK|G;IJ1D7wV&v5<~>ecO}P!+5knYC3n zb1h@f)-)f}I{ioY&$oAEOQagEes%I#;KrFY#yx)Ce)ISK{%JG$Nv3|{ga<WR-vhtr zq#l=v+VI<6wry8oZnes{#k^()XQ%CW^enQZR(<)uk2Yy_wR87wxmsrz^<TDM-|Wl& z;Qf{>A3r<XmTXt~<a>Yk-6tQuRn75V^{Y`|*)yBtw<%w=<l-p#%G$--J-+PQzIv-< zwsf}q5!Fw&tf`*eo`zGylFvU|AAa$EfA8_bX&+ub-umA8!4;XCtF~tH+?;hLE#crw zlPsUJ6W1nO(VevXsE_E<vKXV5BISfB4r<IHn?qbgMQ;3U)tqv~{f(~EPN|7%y%JGI zTQc>$G9IQ{$Sj_ca^zy@Pqm)ep|iHk4v642HtUSyNOjuL@Z#iT;lL^W7fh}$ytOr4 zXR+$1wc)~^*Svc+TNK{2wz!gG{AbsfJFk!Z)!%>m?7O4i65kv?dU?(F&)3~~&X?`1 zk(+F^`6bH(`DvlXJ{zaGP0I9N<KiRdk?>S&%T>d!V_U99+&C$@=G4JuZc)>W)gn84 zwcUDVZCT54(VN3jSyjMi38!Y%%~>~tvUJ$Iz10>@y5=1?)6DJ2w%*oUHD6=NS!p_H zi?h@g2`EmO)ufd+OJjn8%cPV|hRag6L@nym>h>&Z)>2b>ASO9;W=fw|{c*>YlTNNs zOU;}pbXF?8PUc|FY2DU`)79E_BIm}Pm$MGfHmJI~%06_-qsDiubvCy7cuu|Zc+$ng zA!l}a?blfJg=L*e=%SvMRd1#w3LILjG}$X_(fq8*0_&7~7VQ#ww!%+jX~Th{uGPDy ztZrJq%H2n1%DM%yZC<I~&MK$b1x3RZ7A|sYH3?j>T2*y{uU42hk9UCLw+^$+r6F01 z1J(vylsI%H$H?H)kyDGV@@QR^a9aN+u%$VKM`&ZnRzWFMDW$7{6O1$-giKtdC(dN5 ztz@Vyk|{aOyNg{!M(Bam!Xk|aGO8s_DXyVc-E)F<vsDdSdQ=WeHl{8SOPY8|tAukx zdzQdUgQU#Nj5AqBeR`rUn=CEjJhJkX;nW^ahbu-tt{wp{t2s5A_TSTxF$_8^nJKa9 zTEwvw)1G9X&Boz+tNfI=O3V(ra&qdHV4kci5vNjnH>IXzno1;#`Gm&k-3&XKI>~f# z)Tu4%POIj;Q0DdyJ$Nuyuw6NHt@gx>XWQHz3LYMmxpk#rgXOWsKXy;jJk-)ONx}aB E0O@_YL;wH) literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0e4_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0e4_states.bin.z deleted file mode 100644 index 5b4d867fde64f88690e6b1327262935a29e2a058..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20539 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0ec_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0ec_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f376b1cd1fdac31d18ee94d299076478d10a453c GIT binary patch literal 1145 zcmZ>Y%CIzaj8qGb46OPa%CJWF-@8{@>+089bue)8vIuZ6FmZ7hFf=f-FgP&qJm8wo z00+#Bixn3fVq74V!N9}T)7H$v){wb?!9dDLibp|;aajYyfs7Lw1`Qc(vlx(+GEJJ~ zD_}A^$i#?O+U2Xnyjeb)GGZ(nk`^W$(oFQ)s1<y|O~)rRG09KJAn74jL5vztyx+qT zt{1CC4kj(<a&A1dOyH=tPz=|`7@__bp+N`KxfjNY7^*uhf6o=-ewi!yKs>|2_6;_N z#o6?_3O2~_i6nOXWja#B+8O`k$8_coI_eYlwCN-r(_^zR?6GNgJ~2OGJ!7a1dqQIC z!3Xg(cE|``SQB4aE}rzl$MD7mTZhBkpV&{#uPoDgXQ&@w<MmK{O^p7P<(!9(a~*BH zSQ4YxEZ$JicWAfZD|V-&hYr1qJ<hx{sm#!Z_0EeIM-Lr+uTy4t@kT+_`L`8c{2p^9 z-YJ+Pd-_ow>ubG^4~ET*Z8{N&9hH+F*78q0^sW8Ke1;G58Q<Dh>~Ut_^KE|O#qgxV z?0e!;s+ifi7d$*vFh_r871#Oz=4;-~Z$%^Y_yr&N2PVCk*Z4@Bp`xK&o5f$ye+M^f z*Df9&gNVayB1e*BR1Os!Dp*oE)%l4tV~@r`gPw$WjDC-=$*J#%?Rv1cv42gy(eWL- ztVKS_9olH)-4ya--7)2#vWJf(9DO1m`JlG_N_F!s!z$r+o`Q{UY))^KZFm#gd}L{7 zYu|x_gD)bcFX(SbI`oCJ<1jPV!LFo;4F-A-jvVbMaed(@RHhSS5MlV8`@Nd_nu0mp zY$`EoD$7)Blm0iiYX22a>=ti$5pOh?vz*KC$kaoPO^1ay@&p|gtxGtRSm*ff@RRt3 z4-_9sO#RHJ@<~=$)V8t2kC`W&ySe4a(fZ30ht{>}#CL2gV|S`+ty{cffAEp@M&&9= z8zpRx9@<bjkNvC7@e6h8XFiGVk=yiOp1V5h%A{l-oy0fl2MlUm`wkwKu!zqT*~_x> ziN}$tEe5MLtZWTW;1RT7><Wr|;AIi+bTBbYvulRaMmN!fLq`n_4PBCwRwX7K7H#c} zFbuKc5O)%N|6q#y+Xa&*{ubi;#Std5nrmgp(pJ~bFl8~#ZeiADrlbvq1{;!QL~Kk7 z)8=NA=<#e#@^RBLNK80zBq?H}n~s}~x0tp>#DPPCM^*{?cZP5tjO7Y#Sf=EolPr>$ zG?`ah)ag*dp;d<xmaz#O?dCc%qsJ-fptmsB!2?rv$cXVsi0K$eY*cMc7SqvD(-w+R zn$EJgLBg|5t6P|BBadh|V{2l9PK1v{NTQBv(#oz42OE2Qe0Y)$_C!b+9G2f<B`VHk zrJ1xw(}GpjHI~z_YsO+89cPh)hf27519pfQJea7XaY!_=MOlW+N3Y4S;pl-Whhzi~ zBpopf7GCIj!AINEKy0a=P*RLI>jle>hX+f1eY|vh!qimN40R%w9Bs4^vxrzD(V1wl jDzVMbkKOgq(!;F>FC1DU!P@-4d#BPI4G)dIb*mZx&fe01 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0ec_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0ec_states.bin.z deleted file mode 100644 index 764188911c224273136b0a21c9964cd9895dac34..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13972 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 A%m4rY diff --git a/client/resources/hardnested_tables/bitflip_0_0f1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0f1_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b263afc60d64c784d8f33710139047f9bba33d80 GIT binary patch literal 13180 zcmZ>Y%CIzaj8qGbTvt5PokdN*BKK;@RR+h1MurB)BMb@*4Pf}dXdnNSQ2wbiJTne0 z%=Xf1U}bi=9HklR$>^%p=n(8GwNUJ~gOpatk`<vEp<IhPMFJSOL>(4&F>vv2TGi+v za^;3s!;+RMnqG=rt27-hTxexrc3@zI6HNZ0S~DdC8<;p(sw#@|@+jCedTMlXgj`@> z@n!xQuX>hMmqODbxn1HnExhVj>T%RrVHdN~+)%G9`CFV}EX$^fE}FGetzorSQyfP{ zRABp*Wud0rA<M4%G%l4iQn)nfidUk_iS7_@SM^?-PVXln;Rk+leb8P|8n;~elE$P| zPSq7t)^l)&D4bg8tFhowXz0`slS%CiItrJT9GJ$LwKC`>chIycyed5_q=dP)vTO;u zl(bkQ(q$vZL6OdX8w2E(rbw(Z>hx7wbfxRi!q5c)re4iL3R?qRZMy8Z{&oJzh@9*b zs^;sKX?80x<*M3j%}~|OrN%~)T4A9Vz5Xv*abo=wm4A^Rq&8fW$yC?XEmS+JYV12{ z{?4Dpk#8#YdSy1%dd+{&b!6R&eNUx2YZS721bf`tbd%CHTuog#;fk2p%B&eiC#O}! z%csff8b{S%_xW~KPJP>Q0sW>n&K1kQE7%K6{}-g^v|7tjXThP1nYvn85qe6c&Qrx) zbtbE(oEEwwsn%4V$>se(_5VQy!G9}-L@(`U)v(*topR-d?$nHHo;lNQZ1K+M-Ew8t zteeYDCMNc-I=DEgcVSxER>{RtI@hL|<YY@uxi#Zjw$JHAk1M<^m!gEl5-yyG(w((h zJ8;Fhz$M~egkC$FTx*LIT%#*#a^mXDo>P~VLnk|(&DET?bZy|G+q_XnCrd>pT+6zw zla!-z**J7&&e~-?7q+&At<~k(vSY%I%23UVT>r9`sYayD)^-g1FtJW(^*@C*6C+xi zVy61LG{14ZyVPitvEXVi`}LZ2Q!>p??|Qh@+~`rlEIpsoAy50FxK$o)iAn0e>LdKs zWLj{LxXG4jUjAaNw@n34GaJWkd+2;>lknBmEm>P`W%A`jva4;&x)m`cMb}a4ux?_f ztmY)Y6<bzLQ}`WpqQrFRmMe#{Znl|5Wg4ZNHd0AVn$~NuLFB62tTRzzIx{yWBwaOH zb=B*nkyCt^x7#vFUBf7!t^-#xvyL{+(AvS)wlY;}$)Sr;OFJ%{G&Knela$zM#4NO; zYH47bvUiAKQm>J(7~3?DEm5;h^7@9UomT8z7CB?yh1I7VABrYAYx%5@%nWvBIW=u% z*veJBUIqqIQ%(m=bDJD=Rmxk_e}D0(LqF3`ht0^Dxw>@ukKN{Nlb>D>eY;H3H?__C z&dx};#AoZTdS6>MV@;4v<;u0;o~4trO4o_ZZ;)JbRZ2I_bm_E=$WDo)32AGt%(#|y zDcRZB*=XkC&`p<SnPxI)&FGcZxtumRSW<G~7M)ZH)8y<ZH?yltXKvZ-vuRr7teI0* zTwS<Q%Ev@%Q<j=mq9JQbYUa$DCQ%00q*k4{l3Ld^HH&kCyQ(FxN0LF-l{2SJXI=I- zT;VgZ&7^0UaddQUSCr0H!_a0PZLzgd%XBWSdgXYkWRp*y(}QOdr}d;ZU5>go%~@C5 zb+Ox&%O<X_QZr`;<%HelD&@*>>gkYwv|_DLSVNU&tV5>OrYT1~SNbft((9RGuvbB6 zN%)qi;2@rkgUO;(S9%z%xG<R`Sd^D>l4>TeP*$_xlq7?U)KzVYOEz7ZVX#$r@}p&| z4n;1UIj!lkn^)Shjcr?3i%wj0>1f-^jLc~fSF@!a2JCyNo7T3qb<G;j6)8tk<E6Zf zcwJIXyJjq%nA8@u`1Y~nZ&81D`Kx}syk2se_-f_I>g;KAHl98@Z@KuK^V6z|&Xt!& zow>X&_QRL0+DXN#%V(9G`EhXCs?(fnrq%K;x@_9@I@%&BM|)LlbD;NIxpO^nQSK*B z>t<h?zG~|dn@INUv4u(gYJtnPcFqc2k+qqBQiRQnrH?XoLo#)|eXbn#iMo_9V~f$I z(>9K3lX{q!inFFFdr7J-O<T0aL|fZgWW$L}-NYG7C$317Y+bY=E39+P-g(R4e*9T+ zZNt~fWW%~Jd8zGp&t+R)j@-9z{hqj)RdzO&Y5L7auCDjrwKGj#WcBI?4-cRDbmC)s z)H(IiSMR;o+J|WVW)1$%w4<BFsOhrT*3>1ZO-;FdO&6(L;MENC(9sS|nQ^RZrsEW; zpu_}2(=ekfNuAy(!>J}dE2rtY{C4!wEL@q)+N&KZwPK5E(`l1zU9Br;w0%u=))+}m zIdb64%-72nc4mrAO`H|9Vdc_Uv$B#-|M_txD#+yKGE?Cc-K>qy!H%=e7#o{)oLqET zSmnsJsFbt?x808hMJ%#%yX-P+>kQFpo@pxER;x)S%?vryv!&;xl<u@-)3B6dQfga$ z6QfS6v|r^;UDNA!?c$czt{oO#TNcmCmO7oub8$ndXu>Xukfob)y>dI#Zh5J!xN36D zDBCyd%H@=_t!*=;41CsRtj-EGNS0LdnVhH{sgsZ?HR<HGvs0${ObZLyD$T9StEL<} zGwN)}g%cU4W~OX8xhC>duWVw>S*>Fiqr|QxZis9;Et=*PmYFSbEn95MtkXuxJPBDx z(uB57+mOxen{ip=GEZvS)YVcmeT>%n7_OEQTdVBrleCpv)8MkQ(ag4qv!uKudW{xG zNF^L|owDKNj9FJsOj><{>m)}MXPBVae*2K>Y~SQ^#TOMtGsCriU#<Ea^`&fSvepd) zn_g{S)eRq?M4Ma+PWCu;IqA}|i`!muFAZDtc4nK-wWMjYq%K`Lrgg2SC(StQtme$f zw8?3!yplFuR@-tV=d5AfljT=4-P%Mab0wPi@_NMv%{!9uHT2uRU3*e{-J)X4zwW#< z<?Gvb6{~)n)|qkI(8pk=iOr@@YvQyGHkCv~NvbW&UAV|yH7Yb!ueoQfq|u=nZGjWc zWXzC~lu!M!k!OuhLgM5f8vCb4MywSzS>u|pCNM0t(NIialVRIb)2L8GH<u$P+Be#- z4D*?qHRYnD>*6lu5@*#&XO~rnSxdE!MyxooHdM;#QqqQujTu>*jfR1(CSF%Me=;1} zvg$zCl$yg@r{A$Td|De?XBxgM@G`SapNuxo>aM3+>nC>99(*OseOhRl*QQMorz5hR z!&aO%35}P?HC!8YS?j@C(Ju#+r9wNWZMZNmAVRQcvEoXp&R(&VQBo@tj8^l67D@TE zEwu`@=bFA-BI~qn)=TN0wce50I;j)(v^lQY8hAy_%~UOH+RT}U=2-O_U1rN%Drnd3 zRlBpTuz9*Tx6^NtBc`d{t_x>mvR~B|nV;n!w9Lhbr_)~KWTuHvm_*kJ9nq!YE5cT0 zGz%-P4!M|-@uy8YXp5g~lF=qp?Kj5CoN2<G%On>rTOG7#MU=}G-Z(Wk!=AQDXHE5W zBMwGsb3Spl$<~pa*}GX~#f6D(tGet&+&Y$?=rHtbnkD9Sq)l<bsYunNOtywpU5!gq zn^KIHEj85o^EE&&#OspMrH+lRIzpaHy|O%$CVT9uS@~hhEK{CLqg2b#t5R!XQfEz` zI8Da!wB)RaRToV(FY+usaa3x})KgK@CBk*q9E?g0PdPRxA|^fBESWd6H``g|syDBs zwqxcrlcURaE}I#)t}n|XC?#r2Qt8zmiOjWuH)a}bUi0wuoSSpD8e2T(%`8aPv3g#- zzwy`l#h<VFhjy;H%p1Pu)#IG4DQC_ZJe?t%b>@@bq$f%1qEeSwoiwV+p4{tm>DYwR zVarli&6_{v%-UsHCXfBrT%DG-apjpO=VGnSM0>pwU#4@}EmN=}SSU-&Xwh;_L;JdY zpS5qlU+ld8>DwoJt4&Y5Y<_&=Pt-i4+S)zy{MYigF1l8FT;KWJEWgRhPd4+~RLFY% zG@0iwQ<1nV;?k8<TUcv0@`xPuvTuz)+G%uKd{V{Qz!e6%p-Ii0G2U0FY`Nn5#71p( zz$r;}XVw+}n42nvg)+rfSvj`1Ma?YY7mX1Pm@(7+YHh}~@aC&iUmf~db$a64OQr6Q z`XaL<iq<onjP!mKre$?CVn$EmS2n!>tF5yxyxO&R=Z>xl-++t$T|W)ZZ`zgZ6P58z z?y$D|I`!_wJ}*{$=nZr1`spq%vDIqv-~Y#de-S?#&zP~~mBS_PkmZ4%f4D*?xCOa2 zX&q@u5!y5{sx?b7Q)v6k-cA25FPj{*vu5YaznjklzSdoHEiv`&jWgL2*V1NNJdd2* zYihD<wfL2dpSGOlWk2-rZDOo<>x+7aPn%3_`MY(dc}^2taX2{i)86IFJlkWFO^!wO zB%Dp1bzS1+oIQJ&YZNA2TxN6D^kS_p*U4#N)0PQ8>Y3R2cFo3%{>s0mmaNggv?)1m zQ}?NBVeU(gRwl`LF7KITy1d=vlbrU+Cm|me-t<keJ-;?0vDdKZ*^EnDf6As@+cRA! zjc==*RGP`@^~zDFmD|=Ioboi`%VCL%l*jE}-(S?3L}bm^EBKSXWKPeY>36Lbzf1aj zb<#_V$1D1ig-uff{~oY+DOqLWtYok_WLK}^tgXCJDLr9b*NlQiPWAG5d^tEZYGXu{ zw&_f5F>S%7V}Xk`JDc57x6bPANse5$*yz~GDH)sGCZ()dS)dukFZe6erfJ8DQpXjW z*0rpkeQai0w3&sSZ_vdlCbg3#eWglP-&B5+sdaGKG!;Ad)(hfCULGn;tdi(Sl1$W% zTo(M$M!laWku74$U)Rcvs0%ywbmZLBrgkn&nR3Z{(#3=en@mjBI!B%M@ZZ9-q(XGb zEHSO4y}HuMx?-`s$&qO~h94sizcpNw*mKM+%rKdM$=AR)neom~cFei>b&H><Y>3y3 zNq^KPFNqTNT-6opY;<ewgv$|0w=Vju*<y59GBtIj-@*w85(6jBii`-$T$MTf_Vr`e z!VG(@{vNaZ-KV$OD$R77?KJ!Fz}It(|Ge6J<;&&W1y3)gnwuH*s%<(PY;?QV<k$L% zwV!sroPPM*qc>|SUwv)!GreZ^_tttTIiBL>^G{XHzByf;H~)Iqj;D7@ZwGGsUioVG zx|cIo8%JE-9Qo94!}s=Ed-kiGzOuu{D)s4<-_!P3rR=q{_?r0Y*}C|W*WzbqAMZcW z`1!uxcimaDwwzA4s+^e?d41}QdwX-kZ*N?>F4;djs$$l|bKcoo-p6Fyyxo2M^>bbu zdD(P}En8=P{JG9Ly2iix&Ff=(vfq4s@Z#2aIm^19ov-)YD}Pw+ue0~O(hu8>6_wG) zs#krit}c#?UcSDzxUOmalfW!C*GX=k3zIUUG`C$^8?h<nn*3JLR^_j{KE2vLd)zb^ zI~}^T%x3lJ8#Ts9-_GV;e7B-M|LmDdX8z)*<0>+48~t?-j+dHKR<q=f{`T9qpS+)b zCN4hxeD>9zjV2+#I!YanT=LcSb~+u9nr4`jZER!}-?Qgt+Ogv`^8B^;Y<@kj(=EMT zJZ($an_QX8vyT0=OP=0aZE`c+yh?rh`iZZ1-u-<4(2@!IPgZq#fAeVaZ_z)wHgV;e zGiPUA+jK23H{1P`Xu5<?<XW?po6|CGE?BuNGiA1$ue9Q{8P_(sMO_mX+IA^zX|U>& z6<aP&_SrOLQr6O-DW=O(z0PU}%t-WHE0lF{4R4#Na+s%>+O$hPSC+YU8ue-}P3-0l zosgBeSjfm|v6#2d(WTS0jg78li<G*|=`7TCn;~&?$=2+QwX<^to0*<;U731Y;?}Wj zv$R#Qto|33zvo<iDkT$oX}Q=mNx#Xiiv`xL@YOQam=%(g?VPo7S=z?6-nyF2I@%^H zu1z{K<#2h-<btx3?rME)8(T|t9ZpG2>s$5CXv?ukKX<Fg({;{l(mFWBc!ufBWxUx_ z`jj=7oHf>s$ZR?gCmNbzrEz82(v+}O5*KEQEqy2>>+Krl-lbCD^kn6$n~_>uX1N@8 z4+&kCVrnwo=iHjPY17(PrEFN!tFv{cRnp1D(|WH;l}?p)4l-PsVO0`%%WzR<WazBZ zp%#a;)Gny|xb>~mdR`LFy<GLI$Sq%WzotuTtu9WR*>FZVDzL~`S68xEs#`4Mu#R(J zR$H*yG=r;=Qfu6Le05!|c35n(xGuV;C(1WCJ2=(oT148KwZZLH#yW>hRx$rCn*3w> z!Bsng^GZ*5oXweR8qJfiy<mFE8Sjk-7n4=joK0&zvwKIcto6ckC*E!^z2kZ3MX#^e z$y@6u2G4(M@IUKl8u!zT$fjR+Z@u_u|9auO|DP}aEuX!oa=z{VDfOrPJN~VZTK#p~ z-!<|}W~{!n;y<@W<c!TaSF?2u4Sa)zE_44;^7RThGReL$Zq4e<nUb4>C7%R-H8M^0 z{v@&F(V7jLW@Ii+IhE41L9;%|H*i(T(xg=<bk<zTn*3?;p(8wvt4?hUIjYB1m9%Be zS*?r>VQU1Ve0asYGN&!mT$QnGvyS45twCE7q}sf7H1%0|M0REyEX_FOn{hhO+0d7( zTiIjFT5Z*ilc|}_Zf;u@*GQ&%PBY0mbJ%UB)|u5h9r2UAHF=hVb;yRQRP(!LL@f*c z=#>!~#W>NQMSM!ISMbfinpTsEM*^+1vZl(2R!s^Q)%f4iS|OBRvrtz|V^5c*@Tst% zc&CXkoPH?UPMR^jV^XDR=!IPi{3fk<#q!bNa?l26Rk4=&o^dN~tvHh%lp-cID@)<b zX_b>b2U4?wQ&yRzrW{!_qs=F3&9+;?ZebFUJz-IXowKH0IIOJAEs@q7xG**8Sg?d? z<g&=6Z8K*s^NiBfmQI_gG%X{`;Oer>HOE%XR{F8vtI^a*L!rw)XH8CJ9p;f-nsTvM zZR@nOh_vim6KwXThKWVZ6y{-D?H0zmW@^@v#AT)iy~c*KrDn}cPWv)%nyBHz;LzEo zX@YWxjKU`@T^P1f*eg76lH3J<rY#}Mv}6|QbNysl7w9M2_|GRG%yY`MQU%T{2b#~< z3zuI1>L3!P;GoLD%9y~Q0D?>wy!!o3twQo@t-jMv&RmwWB1o$tK+{XqL6E6YVW9&9 z1MAFfybJ+>fg%iED*`T<Fg0-9W?<xCVBihSNon11o2jXRftA7RKwyXv1A}0j8_Q*; z6ho7Q#EFe22WIm4N=T$6_!_7=3%fCicm-c}Tfo4;Fl*98g<kg+3>i{YprJlNe^-fy z%MM@VTLbG>dR^h!ni?Fie#?R<K}DKN*;a;gnX;a0*`oh~VPnX$2|PhZy|xONw1#}} z+Ou-P#)_`2W~Bt*Nn5nFjJB#6shpVd|KkbGBf(t09<gr^Uz$G4OX`QByi(1iDxnw4 z+1D+NS$(I__R6C5+(!;hKRz{(dwuWY-p})Ge>kbwu4)xqwP?MP&<WLq&Z&k9GZqTB zhK5aKQ)!;S*0pSju40sGipM&RB(aG+9fn?8oxMy%vYfd?rg@sOraD{^<*HfbkR_Vs zu~vlJ#V05r)s=09)|Q1zhbF1J*arRU{If-O&B>mlGiT;x&J0fN?Kzfl=IR>51!uM; zORhPS7O^ek+Py{ptvn~}Z&~tB=L=_on*R0bN)^|Gszw|wlN4sEb|~MsZ9j5MebTF0 zTmoMHmnQ#BnZ+I|-x0}ti?J(dvV_!{s1s+dX00{2l%T84Iq9m=VVw{A>}J*^8_Uo5 zfBoarZ)fG%ugM1JA9B{(B>Y>8{moSSTS5;NTVtfOw#@Vm>@<~FF0g|yREKM0SnH~* zO_xmFIR3qwvgpSW`9G6X)qh>(619&KRjTkmeksK9(}5hroMneI&Q8rXGUT{$(S_NS zL+D7SNo3A4&u+C#mvT3pxG{A@)U`D2$jHu~Q^z`@BBmuuxk+?PN?F32)oQd@BqgfN zH{;T!Woo$_BTXd?pYk;A-xKm!I5JtYZABXEYRy%rPV=O#xwb4KX{*^)pR+4XE~W{q z25oR*=`q-F=!mPzgp*uByb5bJ3K)t6TsUznnRQL%EW<W!U)hkAM~eL!xeqM)>bg?w zSm><iU=H_1AwQS8|Kf~LxuVu-$y%{0<X2aDR!`KL1E)3Wr+4k<<vAsPnBQ^tj7^RU zErp}f1fHeJZMbmPVxo?AGasY!-~DC#;ym^S?LFFhn&r=>Q~jSLdV^h-OKg;y5*M~; zcQ&Wh24lmw+qEX2xU}?DYJpMKtu2#RCr(+Xo0FW_G;Lu@z%`R=v$!5?5xwfBmDy37 zHB%;Rt#6M}*zAa_ZAMX1QClY}hqgwUTuc!;Xc~2GTAR+An<f$)HnNE%q)dvR)Y`U8 zYMGHyRN%y}E60{~MKoR&Tg|%QqLeQ;>!hox5s5~dE*uV4j1*<x6f$epWU-KhD?VAv z#MG7vB_>^4wOXt#ICa61%aSww1NnufK5AU5b!q7$USFqEhh~aS3=^ATB<yub%5&O6 z9bdPls|=z<et)-@^6&X^wKtmQ>dxh#|L7Y(uUWHxT~Teaj%3ePd6Oq6)AV)fu2!7v zkqp=qXKL&{rC96m%%jR*TGKX%ByEm3xaxG&W|uTklLJ?cBYO^Qy0+!WHItLsVPPAt z1sk2XWiZR=s^W%CYo)_dH?FvJ%q=6ATS|>L>ejV|y<0P*uAKHwU9;)h+BAb(0$0Pr zblH~q1hyLWI?ZZUn>ll`FwbTkUTx9IFIA={ica!+qQ|z-NW$pKnPX{bYa)&XnkolN zE!Ld2Iqi0;o7kGjz_wmzHN#AkY|&T;i#aoV`ljsI*>XBqGGXJ)nI@}!dV_t|tkz9V zJDi+#ZR=#yoF$WrR+)xyu2@ljBt$~XXw`a=#S3^HQYMEAGhK1xT&dG0zERVF^VMS3 zuBl7Cm5z05i!8XHw#bKJ%Ys9_nxadkLbfbzTyWsv!rl;*)q%-D38ymM)ejnNRW>v> zTw*vm)aS6_w6vaOyuo6U8K%01JzLWxUNY5&%$#AmMmII1hi8_q_hrFe&6HI~R|j11 z5nE!!`1Y~kpZ)$1_Uv!>{3!V|>+$KR4SOS{PT!8%^t3Nd=hIw&ne$<l;X2RDwT(?) zPcMCO>B`#9Gt=goyqx*6*+(j6&7tdO%~np^EW9@7;l!=tPH)zP>R**x*Ao}vKjpM; z_APPDvBU*e)8v^BJ~^t-#_f@?(bqVb*Dza{<*>81PI@QDsnC_~j<IZ-MxLu?`KEO1 z2&?fromQP{+Lk5e)@*d9SG7B2qtx-`i$8w+@p0z!-xd4xd(!+buKJx^XZ70jy3W~8 zKmHs(EVsU2&RG5EgVS;ION-9fsp`dx^U0<6^h*{Sci#E%UU;qDBJrn=;@7x#icT;Q zI<43nu{P@Hl&H*^PCBbrtA+_kOba=YEU9v8wP;kwRfDx|tBy&vtptq?`z-cK?RKi= znCbL%(Pfom!A>bFSA+#!j*ML9EVk7xGBM+{;-VQd)|{NT<5JXOrxc^D9VTo(S1!Bh z><RgA-{YOx92G1T94T}*WUX0duU3vv(oJrYtW8Ivqc%jE>YO=t=4{%9jVq2$IUU%P zs@rR1?6vKb^rV(YB2UbWxWhK9hDEB*m~?ARL~2*6TEc0qv!R*MI>)jkCre~XojA*u z>@xM!+C|3EI#(ljXX{Q(Tf5S9=Bz`r!c=E$Ybw<+nmj98>ay8U>9l26idJS`X6q4a z^Gwz@mAIO7+U-i3S(>y~vc%ztYilKLY%@02Nys=cJJTpF+0fbKhSI5INjKlXwvfvz zYa`aArt#=XPRm*waVF<lYB$fsO*1ZB%32fI9XZv+NXlec)H0K7v0a{Bg^Qz{XPq$I za?^9+rf6elx04&zW~?>wO$zMw$%tH=nWmOH({P$mZ`9OTEyrdqNt>*5>a=U(Vqc!j zsEvy~r)jH6T<zr!Q<j=>G09is=rXsI%{)A(E^H1>7D;oK*f=pMGU=?hsfj?pfM~1J z493);W&7&wxARR<_>{45g~GCl^&F9ED$EU@lV%mZzxVUk_Z95<tPCGC!Z+R3_Pp}H z%I3p7?aACa(k7eIjFsJz-EO=67yN1Wqx;d-Fdc~#*`Xh6l#Naboc0tsV02-Ei^x*0 z7v8HR#UqWSqOx_aT+0qLT)0-(Ct+)wnz7{Sh-2AmQE6+P4cAUqYumWu=B%vzAB=w` z7OpyIVlqufIN)SNR>+4bUxH4)2>tfc?w;JHV~cgeKR<ka{Np|AN%Q0Li;sps*4dP- zbJXBa%7ss-Pi?GNbLixy4O?cah2?fG<O|uVI@K~<D#|dmDP=9&)ESqIqSmaxvOilj z>B2E@9s51*-+Q?tgFRPdxlUX#OW3KcO=MHI(=s=MOFj{rEvY=c3SXLjPmNl1RqK?R z%GHod7Yn({wR#pDl5#PcweZwhv6VVq7u`fneU>d<nvjv{*s3!jRjkW!&64;@E3$k8 zE(I=iU(7RY=?AS-?ae{UPen|=yE?GC(`Fg3TfpAcfu(Azon<1UqBQ0OcKR=>QunM( zb<JX1oR;f5b=k~iiBk@3U9IW-m^ZUG+2F!cUe8ZQ4SRZgjipvqObz4e>&%*_nxY#i z;TF1NmfOm#3=1hAo|Q$eKSSlpHb+TZ);TV8$Kb@7v>B%zm-%E(K4~I0vC}djQ!2}6 zt*){0R6kj_Sy@-pW@!Y!*s}cgjC2Xh!h$XO3r$0(MVdrLPE)N7ITZXxeZw@bwE>6R zpG4{`n>exC(ID6<!JpA&*#aX2qa&vh4u6u8=n-d4j53PUezoS{B*`f$vl3@XTuoWt zvD#IqarKca$r48+-8LQha4bsM<Ep+UTg92I&BoGcPKyNtC02QT_v&WoQ(>F1mFrNJ zuhSZyRTnm@PV9_QP4$^{p+~cEVTNyLxCh_V&{UT#0vje7Ds=~Gc6n?0Dm{G>*DV|z zaE!-jj=0Ow?w-w@2dBw+Jnc=JHfc*Q%cHQRMMiBp-cwEW4Aw<Pwxlk2tCM-^WXZX0 zIme8{)|@eQTbOk?)M&9z>NKCtYc?J13y+lLH1riofedCUZ<R9IJoD=1IXCB;8iNKi zOEx$&_DQzYSy#&bi(q^*ck&LAiJ40uT-h9%wc+DBi`->vW}SJ=7r8oX-PW{<<(@@` z;krhbWK(9^=N1*NoE32~GIg@iQQQ49GZ&}M^x2tuY-7)v)4^*?jr-<Y^KI_V;urJH z?9B+O)NI-m8097IWh%e_{_*GUPj|om`XS5e-}-#v>&prXr+$1=cg<g-wzi_8Hnm1l za?aD^Q}*P=_^EYYoSA%lYN7mQ<-^D2B$9QKPIg^dShG=QNs>mrYy71vKHH8ynJ3oS zaM3q(Qs|1li4UiwHsy;xG|Vts9cm>N?EKc9YtPY?NY}=U)hol~BvVc=jbl9N8!9os zQZ4*iZ<dYRn)PAgtFOiM=c#M_X`U8!#wxrsVp_-#Z!g)Ttr8N4Ur1Uhyt<a{yy{io zvzH+iJ<TjX;(0c|T4yXZ<M4$qhKa8yK6=>mMEQu(28s1kiV7zOPpK>FK4`OIqiUhR zAze)?p?NA3E_oabY~|V{#LL1PDy(SgG-IjUyKB*z``$0VHZN>tf8zBg_fn5focUTV zg}sN>&`{&>aV4dct_f{X$D(6)?Odz3+Q+0|%lu&R&AO42-j^PIo7KJO$zJ_C>$TbZ z6F-?IW%X=oYl}46r=R-fs$}tu%Q~rRlG)OXje82`*x0UKF*mF&ETS@7rzl=+l~Lwm zwXhXGofWQBok{N4(|;qzNB>Sn)_Gp9ikXYOKFnCJ%Y4e@<7A%W?E#?i%}1V(CW6N| z*K9f*aq+m}TD3a9#F<ZHHl6XysK{KCEK{-BaN^<c2Pfd8o2u_G{Ygq)^0RpL$9YUo zjX&D;sea9>_;96Q$Ky$Ir$e(PxL+xLo_I9mYS0NCu9M;1j%i_`$zhW=&FHzh(x;m% zC1vrcO@?MY8#c{YbvCVW<$|kG!BTAz5r!GpqN6V5Bumc9GMr{It8KEvRku}#ES-Es z9|eDP`qWqu@}h0ZrCkA5c6_gWBNu0<UbXWTxj4z_*ECa~jaS3BwBI<TEjH6Y`ANmP zhJEUO!c&{RY%pv%ESPm{#(d@jA0PIJrgrsT)jrL-X630J8!I-X8l=oxF>BF|HM(xx zfeR;GF<rAIq}Jh3zhb1YR)S%&v)hr=uG5_jXKfaX_^~GOTg1g)iEBni8@nZH-IvC# zS$^rq9KVcTx6~cxEYx1L>d(^FOUqa%UGcJ59hn<;A~_=I)<L69S5w=JPMuaNl;l-x zl$2aLwKZ*)uhG|UKVD~t_9W}=FYMc2c=T$y$$6{NX|`eZ;hrC!^Zct?UutXe?q);* zhq~AdO(i#}2{T(?>+F+T`F-(vv3b|uy(;VZ^x+zlFjHaEZlhgZF9Z@h_bGhIPm7sj zx<4-H@$|xTx1^(Iy^w56ICJKVr^%5Q{2u%jwe8cN%&ZCzeDZSow58vrK9roSw6*xO z;nU95(~nvmUMe=LltsX**yo9fmov+h#O5WA0&Y?}b(hV{*^qp=I_rVpAr70<Mj680 zZCd4XCs)l7mcCtn{Q0?vk2S@XCnrbFm)~1@>-K{m`{q_$@2$0|j4|7Myf6M>pNw(t zxdk756`y4AJ6Jfp$hzgOT4GUfsC1)6ahrID!aj!;Mr^AxJx&=da|=1@yRBK$WXtBz z-yDZPW1Kx<Gb?<R-2x{amH4z?Kk>tP@y%w^?z=v+%WV_kRk$$AR`M<<S4WNLrSoNa z>#lFu7xJUV)^_gO_rb>x{d`-sahe*_Zx1W2Cs}I2-WsQsPMt}*aV;&SsLteb>TGG* zk2SX6D?Y!T`_uH??m3(J?)J7Dp1JnZF0pgTN0o&=IuAIHx4T%RNzS=Hp)nx7L!+~5 z>X%hh9a5D)vzgAiadFm}vomM*9J}bdHsgm^<S}QpwAs9oX=V|(Q+tjX8|EC-U7EVg z*ia`eH6qI`tw-w2%xM>wojI1;la@AhYEN#nv2WDH4wI-Qvo5Nwm2BK_Y)RH7tt`VF zWs}8TDZb7cmlE5=mN~W=U2<E^akRDP<jQ4YX_+%;IZv7L$lc-8X^yK~C#9}kv@Lgo zq<3iOMIPpvJvljN*Ie7SSyfhK`HSXnw~jX^7Rf5TO1YBoa@DD<*(NEXS2|a!g$f7x z_-5pWnVdE4P1<x-M=~*TsoR!mDa)jHJ(=CS&CAlH#I#4dvun-L>AcP8~Cx@}zj3 z#nYKR6O&Fwo{5~<6FH~xXiBEB<Z7uIS7r)62*_F&WEyf}lh~>?sbPVg4`X6{LXK7j zv}?7Vm_F-rlu5Jd6rG5j0;i)wyH%d9EnIpnGb3r%GS_Br-87k`!|uA$OARmcUGjC- zGVD6F;}v^Wu1|{5EU~Mzj&&ZB*2oQ%HI$4g<=Z`_)Gt;&(sjc|i>GSdvME=WZCV_~ zo5ejb<I>4BTe5T_7pq0IaR+3iT{*Uz&6_vq<dnl9dRBcpeWpjVmBki&Zk?P78t07I zGH2&uqcg^g%zr)Q58CmBYneTd*|pj@Q*zqjtg9_|PwZCP8lIGNDRs%&w6u_C);ref ztt+v-VP1Ckc&y-^S2_mUWV;`z+aKESU+7A5sI5^@YVgvT68hgCH|^Q?fAc~=iJbJ$ z?WP~!mp_=_DtGedluZ3)w_mLdexxmwpV9tJN8`+C!<lJ@T}Nh0NG8@Nd0cTZTEzcA zzneSjjO3cbk`GqDICWaoUU7njPGU-G&oU{URnDC5zZ8>ZN;FQ43OH>l)%j!TlUWT( zp;OzKPEA*u=My${W~ZTvn~_M;mNhz>t9ha(YfdsYoU%6LO0ceKhN0n7p$`*NIWL<| zatrHB3!9~orrE;n?39#c8rH1Z?IUHfHo<h&#uYvr7l);Vg+(=+7)}cL(`hu}YN(Ej zr3ZiLOP|Hcu0Og`v<`WPs&}oJr)c8x&1=4huSTiH;zhn%Q?D$(GNI5b{0_^9&P+Lm zEs?I3B6C7Mu}zg1&^{Py$F=xIu+pbho(~#c`n5W*=y=rfN#V5M)Sye9OI1Jei<&Js zlQwasx7f596Vg&Ar5sBz+N!xF#AMT^RBtt{!)m%_w-)n6X3gvsi%i?NaF%X2PtO{i z#2He{LQWm+S!R%$Hsh?$*0tF_XO7%Rxv}NU*<Pu&Zjs4`YmQCI4XshBnyDIT(Atxh zEae-KICZAZEW^%O$I>Fxvaf2!#chc4$x2$L8?rSsvC~*JS>v$8$%bQT#>v5I5jXd` zuUz4i)VXxFY1&lhOKn{rluk@rDlD>YF-vujoMMWnf#_ACO6M!81&dy+;s2M^w8>}L z=F3URUQBZq|CqgQ|0;$>8<`k27&N#U7{O5RfZ?BCt$_k|n<F`Nx1_A~*<ivIwAOUn z+DWSzm}X75AQb4!V0LyIL#kGo!wvX&C7Yy#un*^iBNrRtgPNkIUbEC@G-NRFG-U;4 zb<A7&Gw|1f1c9_hPmKwkz9tL|>^CNV?^+w0owaQ7L)N3Lht@Qmv{>4DVAaJRB9n#I zaHMukcG#*Fd`QlQH)N|}Xlv){kY!U%nE&@FJPlj2Ve;PB7b=%Z{otzcpZcOyZ`JpO zmmgmI;3+5G*{t6$uxi(jdlvUCKi{9ywD{Hvu}MK6mZYdo*rLO=mL*)FZBdj$L2#&4 zYs;pYjs;;_hpw#VN;TQ)xZt!_)(ka~3nKcRN>_YVNhz6nE_97#nz157WUYht)bP}g ze@$0Ti#n5=oI7*7`;T6&Z-M{!e&6%;f92cYTc>Ih|MiNq-_^P_Z=qqvj7x`AQzuTd z`#0}d{rUG_Uq9Qg6n<-(Tl24s{)@qX6G}C%UKTp7)~4+?d1VYAw`Nw-nJXC?S@X{Z zs($qPzhQ;v|A{Ws-S31<esVJ@b=$HQoo%|35vEHvhh=K6xt7t^7IN5gwXe^nV>?c* z{2-H>mL`>@o3dG2H*;lo;7py1({2h)n{{T*t?bauMbakMu33r{>P1#~&2w14N!K$e ztJ7B0?uz`46<MB>4!sa>75y4|de$}>?_U4A%MYEGe7fxO^s|+5WhGHr`@5gV+l9RO zGV7W9ZrAFwrcH&*W~{0>WpUui>q(POJ5F7jw991mtZbGmYZY_O2v0dw>dbYl`Fm8s zwKY+<W~N+n-IybiDVZHOW3%F<O=@eF>OTy*+9qXm>15YsY2ko%Vp*59Ba*$NW_I0L zx+v&{>(tF*xl)HRJCinZittJ{r&Vjs)38~vQ73H0maCGhOnkHs2V9iOm}xjM=`64F z`*+{3$Ns5)`n0axf40%h8OdVT9~MVBpEo<VdSmu>rQabJH_i6dF}g4-taZteO&L+w zX8WccIk~h~MO8&&Yu1{StGb4>a&E5u>80jzRd_|w(a6LlSGQ$zb8{-))>*qYqeOY# zrWZ5x3>r(qx`Ix4KV!}0cD0#Os=30{m)SWqO70?`Vyswqz?Pm>p`BSiLYufX6IQOw zjLhZE@VIrBlf~nX)h)MWp~)V-QCHO_buKo$9rdL7n$(t!Q8Ta2IyjYg+E%r-++6$f zAASvg`{~^NvMmR{9er)N-12c-KhM@|W8>>9KAgT5{Nb4%U)TKpJQI0miBECj{W1L# z#!m}lu6Bp%WOM5U#tJSfu#)iA4s)HxvF4K4rL$_j!n(Vve&z4~^6}fxk6+%$-7`M6 zr|O<<;NIfmJlnb#_FYr!CKhcKbDTNFEih%PYjT*cm>AErO=d|~ryaStTKiSVsh!id z%-ABK7JlYxPq3~{$iI!B4NRA8T$r76W`bba!i6bECwoQbx*463(Baj(Gu2(eVyl>F zo0zJdZ==qMoTa8_8Qa#J%{X&xY0s)N(IF*)i)Z9oHHZ5KyEz+eb32)-r0I1ma?K^3 zTTv-tQN2>DeHD8p7e|^ndrXU1a&_9XYlkOo4%(qDt+jRIwrjc*qAnfU7}=}PYjSOq z&ZMomxziMlxQ=SBIGf|*uM{jQbY)V)&E3D_)|uTE$i1}IOKg#L#OiNhk7Xid!eWj- zy?%V(pZfjtz2;}XUH<U=w>^8NC7pcOmXVgL6!PhKTKU(Ub4MmQy|xydWz%>u>uqH3 z${xuc4^^W~FHd15U(MOi!jC2#3yw5ha&qZv)e8S$x#OSC-~aUS(O%AvJUteEzPd)K zJ+<n$-O@j+{++roELhD~ILhSEG;hu{Z|~qJzp3)Z9-B7m%;=WVbI7#VlGrP=Y+7rx z*M`f!!4lpfTb3@lkekK7MQqKoB?orR^ba)+iBDY=mvb}KeWv4sge@~wljSyTY_eIl zYTxwLlj4Fh(@tj_rDUDtZx6g=C%LjWYk6nbls<`B5=Phhw6$AmS5=<6uDou`t%S=y znQ~GqCx^UZ6D!KR(Nyi$CN+Jr!&m<mlFF_fwU?zfrES_WGqFNDbfU4^<*4nK)jd;A z)_N<P5uY%lJ9P5l<7&qznfGd$bn-0a@8DUqZe`%qNvRXtx<$@<Gq!bmt~zyb>XL`f ztER39<22A*8n9L9WTw>g^sw2wWhQAng?ek*e8fFh6)Q)|7(6T1oMCZXvRo!9$YaB7 zv9((_1s5u<i=6AMBiWa%8(tof@~rUq^WE3p|NQoY>r{oJieE}+p~bS-ucSL%?yk6G z6n4wMzAbgbxpQV`i|5`gE!+}kayC`;VP?aosTOPH*Pp-s`1!;6XD{!M*)3arr*2m6 z#doK5Y;*3K)@^-Xy6LF*qe#Jz-uE`e`Rhuo74r#pZg@TGXxsAMF#CxYD_1rL9nG?u zR&myN#Ya75t<>)ar(X^}zNYH*)$Zfrf#3Datm4?*<Q9h%`%2atFFcbR>Myly@#AN; zZnvYW<F4ft-@P<XH*)&nUYYLBOS7~}gDyqvRQkQpn=8uc6z5XMF0B(`U5BJrS)cs$ zd+$77<1MA%&33g<(=!gsc$Rp0>5@-|Q=iL8$?U9^Usd_`(^;cg*Y3^Tb!_L!nVa+c zWtR)QTw@x3a_QS{|JhdRucqnBZM3>L^Ve<HD|TzwuikLKc6NoCKhJyJ&EXqAuJ5W1 z`<hiXqe6YF_G@*eu)wA*5pyzq)7ETB3-gKA_?RY^IL$jMDl6l}mX2w&E@o!9&5qc3 zW?{ysmEUZFECmm%Jydr;ad63e{Uz6)R%?EZ*!jBkVdIQ`e?HD{64l9JrWq0Hja#GD z^jB@FjFK`qmLB<KeV_ZZ_3hi1yl8%;zjeCfl5k<eoUM{kGBe$`zDY})?^~xAv-|6M ziSs$f*B_Uh-hEl7&LWx3K3q56aP9G>AMKh$PySjO_kH*C-0kvm+n;~@^8K;py7_WN zXYTCTYZ?1-d2QM5^Gj`84jWBOirB0=$<}gB&O0%yNyg6e^N+9jQStoZ^5u^`Ke^v1 zRt|Xl`1Q+kW^>N}UA0R2u}VOE%95@xQ@=WOb@RU1G}Y5<s?WW-O?jE#p{hx<Red_U zU3pWtWgYAdF}kuQO6TN?TUWESBe$HDbt=&dR#t0XWU@RvcdDgp9rLQw-~D!6UUr6i z%BC%=PF>16xH>j!hfl)soZKT1d$#2mYkO5{E!!2Q8|LhpboIgG)m|5$vR)K!*>g56 zk|#CloNDW7qpPdM3~$byUd(qfYVK9pg{!rbO+2StNMyaq3C=Q`@+xD?jMin5svVmm zCv-R}a(nLRIb&0B_w>WXQy$%pm>!*$Qh4s@Im@QYC5J2JB7c1P_o;s0U7L^3w|zKX z%$;7>9-WcBn(=jLX6j~d<zKE6A&H{D*&V+eHE^4xnyYlS>9+ClG@Y$#D_gU(F4g!; zaxTm^3JdP4*eaPZwdoYg<%n%zVlz5!M_rwnwqm`=R>u;-Ee2;(m(C73GwYQ1MKLy~ zjeJ__vCE>eez7f$@aB9HTFDmlrTv7#OV7fH#oZUILiVo`eX@*SFzRHb<Ee@ncA?q_ z<VAz8Bvl42pDKFvkh@SU*Pb?mE2~vA=4(Ehtt)1v+OsU>%+_s7HVNf)r%pO)YC37J zQh3>oO|OJcyt=g6+32*;)wN;sVz;s>y^6FFZOzc}3!A&*laVs#34QGiF$<5@E4}kr M&Lt$T|Jb<!0O3$4A^-pY literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0f1_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0f1_states.bin.z deleted file mode 100644 index 9740a1a39..000000000 --- a/client/resources/hardnested_tables/bitflip_0_0f1_states.bin.z +++ /dev/null @@ -1,28 +0,0 @@ -xѱ,W)$.!6r*p )%̞\~ #ۙ=Y B ! M<^8ò-y}_{߿ݦy}ÿoy{w44{ϻwơq?}ƭ-lpC߃sx<^q4ӼmTeoߺyyv?<?o^qض%Qe9/qض=%/߲ϟOe9)_TeiG俞h-cWͿ\OE߶7\WZ/S+ze"^|ߘ'O_$>)~/&agJ /???O}[s?__>_3G-?^^{ݶqe9/㿞o?^im}÷=^m}w [_j~JޗesNiGz]j?;_u.H_gu\Ak_zYJn=?%uOXlI)ߗG#_IIuo_m|fc?krG-_ПgY`~z{׃O}?o3xm=|0['KYi??O[E#??J?5?_GۺO?_;|o7ykwo"q?a8Co;O~[/zG?t|jƿJr[̿f=?_?!?]Su#]92{?X%יYהam_kuC+5_I?-W 9vROrӿG%/Mu+?6՝߯׻$_9<={㟭ooOC?Dk_co8<8,,Ӽ,<x-,>xM8,6<<8,,Ӽ,<><Os^wn0?{8^qm/Jɿ/?פvë/]Re? Ͼ}JRCz׿v?Omjoc??-{o=?s۾aOZ?BOw/O-K*fߑĿS?cП#c/'wֿ-%.߶ov!8ſ߽?^'wʿ^W߷ϭ??uk=__R/a,?{x߷o}<|U/'ݽ?^-??Oݏ-?[?ǫ?M5R_Ϳ/Hj=+m?5e?:S_\c]QWN7^/m? ,vu}i.J+{ZKq=;+ ?ן*_×Zѿvo_u_:޽߷[u/_Z忬[{^J^3kKG!{yNGGo?cMHs>~RI׃/-s?N>>-uu|OGc-oY'my~?I?5?[ѰKg-O_gUM]_'?u?Rk5=OOkXƗnw/m=~gsO?/)W/uyg^)~8UJf7;{/;rCk~>5v7{Uq_[/?e=p>5׿v_t_?_FnZ.scC'N;Ŀ/Y'?,"Owvύ_si:{zԜt5;>]DZKyԲ=G{O?Vu.?_M/w_-~3~__'a{i~~j)kӼ<ך<k֟{:;#ֿO,V>Qc}ӦwECmIG]aK󟶬-EC;pkUFiKJtuwt8[u]Gjag?y_vmSo_ iGOwqYBci=&NgM?Zz_\c]QcN?<Ɵ?gM/_?jΗ=Wp?V'?_?XG;vߦsϏKv|IXg>_:˽rχע[]-v{wkw[eRCu}w_չo1ǟn_?p<4?[%]_xϟ~]Xc]ץwM_.u?\wo yosGϓ`Z5w쯎t5Ϻ϶6՝9%OUqZz8k5㟭vm4ͭ?/ZkZז?~_oH;~'_bç/;?CIt8.~O?)99Οov<=}l_Y~2/??__?v_76/p{DZ;×ߤ/?/G)BuYdǡ-eiuls./7t>{\wCs_?sWZOH{cw=[? M GG?|_Q'?Aq'lnm{ί<`O?׿r}sדWuO~.mT[q2=%@Cokο9ڏ/ٻvg)~RtZe+g^?>_G[wC!y߷<=jzoQqrcG>NMOk?ogsϾ}?Ϳ~ymKףE[_?i3s,K~zt/矮g6u민g["o'C_.m=+:P]???mG 8~}W$6-Km_\i;oww{Y???Ka!Io7+RI?IQiYg6gEg'v?߶g%__۫[C?o5??-ʍo?+I|ǯ C{wo_οՊs2efWW7hOy,?]Y#/[?~w~JO?o{3nv>+Y_=_ʿ+]?9x~nY_?[/F>ӯߺ˟?[/_nK?Ϻ?V?m]GOo)[I?/ߵ?˳kN=kןч_a]4o}my ?|_s+GOhcY>5)y'Ưgӏר?!ak=KJ?Wtuwߢmӕ-????'OoDzwo8q{oG帿~:z?}cRq_BW;צ_/eϾ=OczZO>j2'?[a~^~g??'MoSnYڮq8e>_?>ی_c_?:|C''?stO>;cyw9y\w>{}[q3 -~<~߫ Zqu=>ߎ+o_'K)|Mei ?㟟OM/?8qh*t~wmw߯g_)qq{\3eO*o]sst^js=Y>+/}lK_o+Um>[g,j?dOkߴVO?g{ϑ5[{Y:㯎ߥog[CنOmW'n?;_%\?Fr#-j';WS\#O+Z쟚WyyyqX}yyzޟqXkaYniii^}aYqii~ޟii^}}]{߇/?OÇ__j⯝ -u9[~+KW?kןw*QKbcCߺ'cw}'?s??-_y|߮/vnS?Z_EF_w?Mouu۾w?2ޥci9+9k_jGoH7?]nOsO]'?}-+Oc+}~$O-+|ړ4O_>%ewk?;M{o)۵ïT){'?hGmϚ׼??^u}?YoJƿ~?}*?v}o韚}G]o_???җ?-O -J:Rj}zO{? ߺ׭?=??e??6z#s>3?__A}o?=|/2~>O`;g?C6aq߶E-m?׏W/v6_y_e )Y~6wo9O]W՟k!?:~K5Kzsi[fN>ݻn=?/{?.~}_R^\>CK㿥W_g\;~>]^|#߷ǹogs߂ownso/8x|mos[o]yo -7Rk%޼~ΧJ ?#絑[˜m6?ӎ'xUw~Y{s_}nO[%?zԜt5;>]DZK쿑??]ٵI__￀?__[K4feO՗KM_ -6?Ӽm_' /j?[^;nJ?5GòC?Kc}ӦwECmk>_GW?SԮb^QzT:֟_cce?mon~ֿeߑ_o]qӶ?vg?Y??Ϯ߶O|3[?}om=uǫqضjn߻u<q8?_'9eG{|}nMfGX~unnr/la�o3z?eiٿql?AG[;cyw~s]˯ځEN)qh ?]~7>v{X}b=§ ~89L>ה[W>[8lۧ9\?sq=?_?!?ە?_?+>q%ǂ//o^ۭgZ?? OiԿJ8zϞ-=,i{<['϶~%ON/Cg}qhu#l={}UgV%_M/ii^}aYeei~ޟkYeyޟqXkaYniii^}aYeei~ޟii^}}P쿳ϓ—|s=;O?s#Kz3>@_<^)9sJ-u._܃O{?~ymoO K_s֟2_?_Ouao{OӾ_ƿg_?J{_qd(Q?\y/yK_RKKӖ?X{XK=~ӟwU?n^x[+?*[Ϻ}?vR/t=? GGMwtOaOkqsxkۧ9lmx_=Ư_k^y۾~tǫ,pL4oTUGխOv#aYk]?Yvmio"6|??_JT?6㯻5=n[g9ߥskEnʿ"~_n,O?n:go_Jr_6R5oy:?.8N?H?cO#꿃?S/SߟJ>em ՟߫ gڮZ[I5Zο m_L_O6濼ןg[vR?Y׶w_Wsߢ/?e=p>5׿6#v]_OO.[Ɵ??6xx>sIׄ/h?s&[sOs8XM#`?K\7[+5;H?R%$_I?mu߶?߶'϶7ͭj!?oO%,O+_{ o_~s7�ׄrs׿4e\0?Aq_wW;_uカk{s?=qضPdznߛV{}_o_[ϏK?7K~^w?-Kx3-뿔T_׆o~~JseibϾSq?ÿ~Oqض?__[_<r<=7VZ?_RGn-agJ?�'/?h~Uq_??o?s^+?ۣĿD֟W~NYT[·>6ֿ~xs/GO_f_?H/YG~K% -g?-kkL?}_oo'>^ߑ-?�}dž_m7e /Kh?\1,tϿ>_^>}/{LI}??]φ_?խ/'W??sGu#?| [n0g7w?򯗳_۟u?- {^ug8\}7-y)W<~߾.OwߛR_~ ??5_-?lq8_&UmWn~k?}~_z_e?οϝKm/?}lKvk?oG:cW'_~]ڥ?M/59ރ~ߣϒOu.+?6|lJ?q3*q7__o)Uo?j_bb˿u3Ӽ,8ò<0<?4?^ò<^<wM4O4O<04O4OO4O<?Ӝ]-w~/=.K?RsS&^c-_[s_IK,8'C{]Ͻ9_3?G/Y??G~c?Zh%7}//t_ju w>_*?<wq>3׫?wڭ<.m=o| _O%5)O/Xak-k7/,#o=-ܟmy!_&{AM=ҟYR4v{Rv?OGc^zO*zO^?c:x{϶~mK?n_ܗ㕂?ƿ_yO?r?}ȿYW󮎿T߯[vx>v?~oSY4wKi>7#Y_(;䯴}~sO^~swE_:KXiӿf_{i?$_F9s*gk/e/szG4~N\u _jE}x~n_eTi]ӗoy)?x-Cv9W??6z#Iyv'__5￴?;]/?/[ۿgq_?C_qdCe_rK$zToG/?u-?U7;wy~?ױ_H?_??#zc_ݽRE?9o_!1}>:xu뿧oUa+):[ߺ앷[h܃[.=??1=}[[CqWAJmۛx\o?~^im?C;:O\e=賴T_w>y??7~-w?Ss 3俺_Jw5kj/Sk?Yak-5??:i! C-R¯O4o_kI{Z94Ö׿6[?5GòC?ZODoO~u;a%jwS?[/ڲ^gU/+u_Ggߑ_o]qӶ?vg??_g-?+O}7?ߥe 폥_k;7m?k՚~swEI::m6k濼`ߺ_9_$m?_G[ş#?v?o#zcoݻn=?/{6Z$a3K|Ï/=_mkwi4v ߵ;=ߵoſJoWksC_=/?hRw\:vZo_×t}K_=>vau_~5??~C׶?j÷8^s--!罕GֿJiB?OӃ_?kqYmJ߱:g??ogUwp?W_qhu׌Wڵ:4OvDk_?k][}?e#]{߇?Þ|ÿoІ&?}o~?/;2[ǟGw?ڥܫ_I寗q{(ee#{ߒ-c.Yq\t\:fUw _<G߷sl esYỔۛqkkmWoNϝ?_i?5#oo_m_oY?H/4/_[>E =пﳳ|=}!{:^zvrUK?\_}̿^Ε^׿6_O]}?zG/K(?Y׆Rn+_?/~\�?עJ;[_j?~dIk95Sxz!^~Im¿~ߙ?~ ?|/??7OɿϿEWwoGjag?;_?7/?⯭e/}>~yR߻\7絁/_ϿO?X!okѲ/=r??W,_֭/m?l5O~tO?XBEv2[/_I]m#__c/K?/V3_ö}Ksrk??sfe?}eY.<$߬K?R'$Ge9W/ۆOm~igOuoo?Rk-?W+7=oGПru&%Ο 6|{Q~u:W+=Sk矖Ç__=to;qeSזo~:q?+_ -?韖_ˎ?ϸLOdI*m_+v}?|g}/Po]<O~Gזys/l~ӿ/)O/o?_YOv??Oo'l[~tV*XG'߲/ʯ2߮:a]Fu5=~ɯ>mǣ;o{gwCkO?_Cѿ/)4^-_GgߑWOWc|G[Gm_?mw߽!_Rq>9|}Kkwqض __:_~}>^</jI?#~o]my\7sMeixelo3z?mcqco!??a]?,=sߵ$m})}:3k-vnZRs;x}] -r7/6-~j>54[pơMzߍö}wL~R[{wRqKϔ>5̿u:yCeKϏ?qK/u/?V?M#lmD/?ծm[RO ??D?G~oqgIg'댿:~ҿ?mg>_%矸|_~?s8HߪWu|^MsC?Dkj_:ni^}aYqii~ޟkyaYieݦyyyYqeyayyާyyYqxޟiV^qw|G߻k?m)OO_~_t^1w]-u9l/|WjҿW֓spy]ߣvmcG_1~{-RQ:/_w\w/?u8U{?_Ϳ6IӞ>O_Dm'?,?_ٵIO?A?O_<K/cV&GO[O;K\=_;ma'#CCq{nO''?o[R??迏z~g[?ҿRS_i/X~JJoߏ9kC>,yyW_*}O߭t{Z -~\t?[~WWyg?k;}_/{WھYj_u~/?C_do]o_3s_??K/Y\9|W3Η9=q{w#W~s]?'?U:/߾t{o2_翴.uYtfזC;+Ko=}<X;/_Z~.||[v-3?![߲O?Y/%j=*ϿaZ:?Ϫ՝ܻ<IO//j{Q;v]4O_>Z/_r,~z?o-o]w-_w.˵Cn{۫Rο[nK -N{?3{~_)ۦ??X0'[??/{>ٯ/ })DQJK>?O"]Ox|iW -?Zwۧ/??|j7~WlYvu/?SSS{O_>zO^{_'z]J?)カO{Z-kmw)5=o'z&j.?[_*ڭvm=s??GC蟮?ׯտӄ_R"W?Ͽ/?yjgWG1_c?ߙb_?R?ֿx<I_G]}-??]rco:mckm?;}"9,K}YK~wN=Kkwqض __:_~}>^</jI?#~o]ž~X(E&sNbYڮq8w=_?>ی_c_?:|C''?stO>;cyw9y\w>{}[q3 -~<~߫ Zqu=>ߎ+o_'K)|Mei ?㟟OM/?8qh*t~wmw߯g_)qq{\3eO*o]sst^js=Y>+/}lK_o+Um>[g,j?dOkߴVO?g{ϑ5[{Y:㯎ߥog[CنOmW'n?;_%\?Fr#-j';WS\#O+Z쟚WyyyqX}yyzޟqXkaYniii^}aYqii~ޟii^}}??bˇ\z?ά>{P_}sr?=~ K>n Rt'i ??_Sk_??Mq|b=~ڭبi=/>~323_Ǐy☷HZ_*q=Q{~-|?֯_#ſ?矜,?֟Z?'}Oo߮n]Tjj_??I?=~mrg]}ekvw1~ۥ¯knk;^9d/c}ߑW_׃:n}yO|=_m/_z}+_?~Lx?ע~k翺~o{Kk{J9>myۛ<~2xCO??nG/)4^-_GgߑWOWc?SCS3*e?՟= ~e;<)SvWw0t|/'O_7{?޿}??]ϭO׿[_??Gv?CجCk?[_չο&[{󒂓C!hXBEv2[ɸlz֎$ _ю:}\__#g=_q?V$oܿu???ۥ?lGXzk×?mOZIzN43mu?g_O??ujնi?RkROh_SӲ_*{?)__�𷍿\{ϸ,s۷9oo{_LJiۧyx?^o7˲uO4o~\x.?矽mώ/q)4ö=Y/YhxtZ~.˱M=r/K;#?Goy?rk{//߿<~iT_Z#]_ƿ{׳/_n?%"}?"iOHӆ/=GO5g?V_m/_?? ѿds*G8#y?m?Wv۶'W_Rq븿^_ڿe9W|KR8Y+ҿ'[-gc vg>;?[_ -tQW_o]qW'?c\QKߣ?goe?g=-ؿs)?ퟞuǫCn?^m?_?LgϭO?O?Ws?C??a?-ߍߴ~s]|;B{)?m[sN!ꓼ_s/?Kƿ>e_<<|5)??뿇ڥR{\Yo/}H?)ù_ԢCky?<Hym_v? uw5??~C״?np<?yyet|RO UݿơӃoqgIg'Kߊ϶?_u.r:|?ssw?C_g۫[:4O+Zk=[?N4O<0/4/4O?^x-ò<^<wM4O4O<0/4/4OO4O<?Ӝ]-3w~/=.KRs/u?5鯝Kso?ogg'/=RP_]?t_?_&ſZ?;cw[?sGu߶s?o??~D??o1?PcӪKS ?7w?FG???'? /Ki˿'k#?$o??v5w/ϭɝW'?}9sOjag?ZϯlG{_~j ?_?}O)^~?^)9sa1ut#C߇[%?}=K/zɿnwWKOn?5*ϱG~ ?s?5sOJ?O wO?~%gz<XWklku6k濼nןg[GB)e; z>RʞƽR??n{JaWV]Ww_u_K_n7}/?𞗒ڒ?o)ac?o?ҟk_K?yϿӅa{srn;{f=9pz?5AK??[g~ %^qĿOROO4RYKSrY?{?!?O_?C?_MOSӚ=7=ݻn=?/{?.\$aK{CCW_{?-_溒⯙ e^y=ξ߷?oM~nKϭyY'>O]F/]W絑[˜m6?ӎ'K_s>KH5ss\^c|?5<#M;dWv??R?,GOGOUgݾ??"_ 㯹k̟?ע,I^_/5Z)4o?O}.4</瞳N8l_{kȿnS{$?,?m3GUO_&Xg}]Gk_>A_Rv?Cm-j?Zտ{ZR_o'u]'5?mqsmfc?^j)uۗ~k7]j\X ӟ?Yw:^z<XWt~oٶiӿf?mzeOf/?sU!??ao=7=NݽRoE?9Yϗ<xr|Ko]s]YTP|]]~8vu[̿f=8gjc_i'=?7ϥ?m.Ezy5|IWtu<=i?Xug}]Sc?Km6|_C+5;[?m!?=%Mu߶cy&MG?_uiIܾnVg]}?Ms+kK_5ֵ[<ο>}i8ɗi9mk?:__}C~-u9[~s{]:Ͻiϟ}_z9Wֿ_6??G-?͵K91pqcƎ_e%7KOj/}};P]:qh YZ-?K)Kͭy)׿v6]}v?y?S?:Xfu?ag9DkqBSOW߀I|{?n>;7a߮8?kߺ/Xte\ukߪmӯu~z}~m/_ܿ _ECI2C-o~KY/_ch<Ytі)?ව2sq-mϟ/[z}Gc|SCSS)7[rpY}g'/u{^qRzeyO̿v>-K//ߺ'srYMle+#|ۭIPf_K_iC/_D'o-o=e9t>?Mei ?o?s8l4?W.wGZz~[s?l]&^?Eҟ?zCқʻ#iOw}Zck/zY"]?mmI뗶9W'?_jV#O۲~}OO?rۣ6O+_Jyi_)߀kÇпW/}?5~oYvi9|诙U?qOî_>o;>mko}'S_i^/9[ݯϴJ_׆o -mOw<޽߷[1~֗eu㿑n/wDm??-k79Kr/=GOynU_;OzDkCӟq[ֽҏ˦?EGgwu?'ߪ?-*j?ogWX, [_j^W}<7y@gk?fY#5?{XgO_O'u]w(8itoGjag?_>?Ϯ߶O?,aNQe9/㿞wا~ܿF~m{KeX2{?LI~qض_Yn_}?Կ[ooYơ϶|6c׶?z?;G#?7;naX{~~no<]O~~߷ n|=V\by!ơ_?/?ߥI.7{R -kYSSK㿥{<okĿJ>_8lkxWwz{ -~\.=!~/=o׿LYS[;ڜ?t_9D_sR["`gC?O?S7m.ii8GsMw){<[gUrΟ)W3?Dz8K{_>WH?J^ieyayiiyz}qXmyyyqX}yy}yyyo;~Kϧ?פvk߂oi߭JyU/O{ge#{ߒ-c.X#"_?sGwFos'??;?%_} ]_ԶW׮C'oS[nga̿wXN;Jv{?n7c~[SvSW'?O_{}KJ?u_J}I|J',?? ׆/Cuu8'-iob?okNӞ[ -?ovm??_ -?%Q5/Ϗ׶}xO}[yR6=7G42'/]_A?y?moe,m_ym϶xO_%s58GKo忒οZOj·.un_oY?cMܟLO׿~'_:1[pEO,v~˯5vxϓ??؎goO}ؿ-agC?l?c˿]GiWfoGo]["?og;l:O'G!RGZGkOvߦsϏKv|߾?e×+??:<χ_oi2?΁Oq+)Y!G:[ߺ읷[h܃[.=??1=}[[C[W}ۯߍ 7/߇R/_sϺ?dGymV2??MI?^~՝cVW";GӖue |c|?5<#M;dWv??od=~'??Ϻ}?vREGG׻s/W_sז? ???AEYaG%RS¯O4o_kI{Z94Ö׿6[O,翬R6Xg}]Gk_>AڮO_ѬO-?uT!W {XnYO[[}[o5uwt8[u]Gjag?_V}:mckm?>s gmo*G=oZ[x~Ygm+ofr~ퟙǫm?_o-?[.g˿_??یYu/m'_,{?acgX{]_\+v_8S -vÍ߿Cq߷X9_2x)οF5sV4U*{O֯5i׻t_\u{\k/}H?)ùv?_9GkseI_~K3)a ??ۦvVk/,Z4s5=?K??_V?m;_wInwsyZz8}?[+^:ٟ_"_"qyyqX}YyYyZkY}qXmyyyqX}YyYy}yyyo1}>,_bnG=N>c9|r~9}>:{3kܽ?)??}|̯=Cl?W -~\oxRox{<^[)'j ׯד9G-X?mc?tY'}^W?Y? -wodr>zK^}RRR7Ưv?m#ֿh_{gFi9?V?Ǐֿ߲n]TK=]|_)_S5m/CZ_\<^Z>iۧyx?^Ɨjk#>ךi޶ߧ9*?zsd!=ߑuӿH~Xg__V]# ?נv習?M{ ?|ۖ%Y;sw?ڟ{t/gHx׭r?KߓO[-GCY>pR\iw%~[#ߺm;?R??S g?R?ok[ws'<sj÷ſyzG/=~u?~M//#lmׯկܷ)KϭyY'>O?WSgM'mt=i5_K?..Vyzv{?η6?s?_?Eҟ?y/RI?IϤGg]g!m?mm;MsO[m>I?K?J?i??-^\ >50)> ?}0>|{?n>k*lWk]Wr{Ze}69lw!_o=ߧU|^{_tכ?{C?e4R R_L/e7U%/'>7_<oYڮegǏ_"S/ח_߲_ߺ '~TE/=?m?_ٵOv?>%__?/oܗ?qv[eܵ2߮:a蟮?񯮄3'~㕪SV#VϿ/?^rkR߾cфR~Im¿~ߙ?~ ?|/??7OɿϿEWwoGjag?>?eG!???ocYEf/q)e9g?=G>O)?׿g˞v/Rsu__O?OaOu민G>?_gѿm'?/x-rY=sߵwo ?߂xW2a#WߍC~^ -~no߷K]n>צOͧKy8_a۾=j=?xmޟ)믽}jWus矣ROyR]???ۦ}Xnն엟j׶ivOSKa`?#?k8u_Kߊ϶ ?O~>/wLJy$G[o۫Ov:>G!mW?5ow?L4/>,8L4O4?5͏?,4òn<<Ӽ,8ò<0<?<Ӽ,8<4+W/v 뇸Dsw>]絁K 6'/?AIW_{;K׮:6|>~yRs+?K߫?eI^9_Ws׮QoV6#߯|?ZMoK(pڻ].]r?ʟ_Os]_Lo*vů_i?'?CׯSIMG6|_u/?_?bC'k??K?[Ŀu'/[%Gv^㿱A+o#c'wֿ-%.߶ov!8ſ߽?^'wʿ^W߷ϭ??uk=__R/a,?{x߷o}<|U/'ݽ?^-??Oݏ-?[?ǫ?M5R_Ϳ/Hj=+m?5e?:S_\c]QWN7^/m? ,vu}i.J+{ZKq=;+ ?ן*_×Zѿvo_u_:޽߷[u/_Z忬[{^J^3kKG!{yNGGo?cMHs>~RI׃/-s?N>>-uu|OGc-oY'my~?I?5?[ѰKg-O_gUM]_'?u?Rk5=OOkXƗnw/m=~gsO?/)W/uyg^)~8UJf7;{/;rCk~>5v7{Uq_[/?e=p>5׿v_t_?_FnZ.scC'N;Ŀ/Y'?,"Owvύ_si:{zԜt5;>]DZKyԲ=G{O?Vu.?_M/w_-~3~__'a{i~~j)kӼ<ך<k֟{:;#ֿO,V>Qc}ӦwECmIG]aK󟶬-EC;pkUFiKJtuwt8[u]Gjag?y_vmSo_ iGOwqYBci=&NgM?Zz_\c]QcN?<Ɵ?gM/_?jΗ=Wp?V'?_?XG;vߦsϏKv|IXg>_:˽rχע[]-v{wkw[eRCu}w_չo1ǟn_?p<4?[%]_xϟ~]Xc]ץwM_.u?\wo yosGϓ`Z5w쯎t5Ϻ϶6՝9%OUqZz8k5㟭vm4ͭ?/ZkZז?~_oH;~'_bç/;?CIt8.~O?)99Οov<=}l_Y~2/??__?v_76/p{DZ;×ߤ/?/G)BuYdǡ-eiuls./7t>{\wCs_?sWZOH{cw=[? M GG?|_Q'?Aq'lnm{ί<`O?׿r}sדWuO~.mT[q2=%@Cokο9ڏ/ٻvg)~RtZe+g^?>_G[wC!y߷<=jzoQqrcG>NMOk?ogsϾ}?Ϳ~ymKףE[_?i3s,K~zt/矮g6u민g["o'C_.m=+:P]???mG 8~}W$6-Km_\i;oww{Y???Ka!Io7+RI?IQiYg6gEg'v?߶g%__۫[C?o5??-ʍo?+I|ǯ C{wo_οՊs2efWW7hOy,?]Y#/[?~w~JO?o{3nv>+Y_=_ʿ+]?9x~nY_?[/F>ӯߺ˟?[/_nK?Ϻ?V?m]GOo)[I?/ߵ?˳kN=kןч_a]4o}my ?|_s+GOhcY>5)y'Ưgӏר?!ak=KJ?Wtuwߢmӕ-????'OoDzwo8q{oG帿~:z?}cRq_BW;צ_/eϾ=OczZO>j2'?[a~^~g??'MoSnYڮq8e>_?>ی_c_?:|C''?stO>;cyw9y\w>{}[q3 -~<~߫ Zqu=>ߎ+o_'K)|Mei ?㟟OM/?8qh*t~wmw߯g_)qq{\3eO*o]sst^js=Y>+/}lK_o+Um>[g,j?dOkߴVO?g{ϑ5[{Y:㯎ߥog[CنOmW'n?;_%\?Fr#-j';WS\#O+Z쟚WyyyqX}yyzޟqXkaYniii^}aYqii~ޟii^}}rC\}?9;oG?פvë/]̝ko? >}?<)|9ڟU$h?\^?tkfG(e???o^G_ >ŷwuKWݿ.?.zKO㇧|./gz^eRA)ѿ#_tE/vϺ?vRE???O%ǿ?ߺ-?|#;o??IG;_j?OjGoH7k^[;I_?O߫[s֟?:㵞_oo֏sT)0~?R~Rs{c?GZп>K>*{v_ߓw?'?j?kUٟc&N/__o?k e~nKЯx(+['ci?myk?m϶Rw~;?:>4}_={N\ωOK__/ۭ:L/o_V-]=/%%#=N< -Raos&[?_?)?֎$ g ?:voz?sk'k?#`?϶@VKno?_O-h?/G&?v_u?.үC:~K5Kc5{Dn~?hn> ׆\d}/_?9?[[v W{]r7?[[{󒂓^sόÞ_FgGkmko{;#p ϏK迴KB_$)-}}_=OSzH~z+>:??_Z,e֝-Kϭ??5ߺ 'u_#ſ_?z]g??bԿ??'׆0^~0qt*kO -?E{{<>k_}_G]}m?M_o>IɯϪ6ʿv]__ECC-u/s4ԯՏro{KeY՟s wCkO??nG/)4^-_GgߑWOWc|G[Gm_?mw߽!_Rq>9|uRq_BW;צ_/eϾ=OczZO>j2'?[~ʯeɯ?-?=럓n?uh_o]϶|6c׶?z?;G#?7;naX{~~no<]O~~߷ n|=V\by!ơ_?/?ߥI.7{R -kYSSK㿥{<okĿJ>_8lkxWwz{ -~\.=!~/=o׿LYS[;ڜ?t_9D_sR["`gC?O?S7m.ii8GsMw){<[gUrΟ)W3?Dz8K{_>WH?J^ieyayiiyz}qXmyyyqX}yy}yyyo?X!i6|53+/:Wu~ܳ?O-us羏{o$7nIo_;/הm?u|an?;s?;_ǟv.6j|O{2ߌLc8-?%ʿ?nn=瞯'.i-F?FuHonO:G'?ϟϽrI_6.~+ag'՟Z쟚ҟO_>zYgm_Y;];]_<v)[N:W?K7X_5wߦC?[_^>n?+_s_K_^_9=s??GC诟^R~k῏Gv/7?{'ƯegӏO[-?C_kk=KJ?Wtuwߢmӕ-??ПGJi?okxu'sk?_2~~>O -]- ;'?]{?}eK/m_;}zresu__OO6ss/_yCm϶inOP?6Pڶ֧?Gu%޼ा?-:P]???mG}|g:~2n??G?|/z㟹鿎߫?HY׾UC2?o]cϢvO?v>ֿO[޿ӯ4kgaLg]g?GmWuGO?'?C?T?W? \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_0_0f3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0f3_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..d18971ec8851fb69efa44301cf7ef8c45af90aba GIT binary patch literal 3234 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 KEdnNh`Xm5C!>|(o literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0f3_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0f3_states.bin.z deleted file mode 100644 index 8f783f784c8fe30fc0458e0392a48dfb48f67623..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25591 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 NmFWF%e>+Ba8UVOeDkA^@ diff --git a/client/resources/hardnested_tables/bitflip_0_0f5_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0f5_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7102292c43f0c4bd2bc54580c07a82333ab32a8e GIT binary patch literal 7153 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0f5_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0f5_states.bin.z deleted file mode 100644 index aa13d9a1d994d164af75e26b5c4c1060f7bb24d2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33164 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0f7_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0f7_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..4da9f85581802755a7f2ea66fc6497073ad4e7c2 GIT binary patch literal 1983 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 F0RXe*Xx;z- literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0f7_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0f7_states.bin.z deleted file mode 100644 index 6d19ae6ae51abf2ec24e31e56c7706e3c76b2b27..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17201 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 T_-F7c73Q9={~0%JSk(pqP=-G~ diff --git a/client/resources/hardnested_tables/bitflip_0_0f9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0f9_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..476895cd19fe9e94779382d70fb4e6d41c175619 GIT binary patch literal 3834 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0f9_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0f9_states.bin.z deleted file mode 100644 index 2606b940920d23a46282f07ecec7eff2029ea080..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28243 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 diff --git a/client/resources/hardnested_tables/bitflip_0_0fb_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0fb_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..39a913d6471d13473e8e60d8766208c0fcf912ad GIT binary patch literal 1940 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0fb_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0fb_states.bin.z deleted file mode 100644 index b263f23ae0805cd6975148866a68e6671e2f2a79..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15124 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 OA^zgzf7aF-)*b*aFDioo diff --git a/client/resources/hardnested_tables/bitflip_0_0fd_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0fd_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ffc3cf53955d76b67b578c7051d0ac663f04f2b2 GIT binary patch literal 2702 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0fd_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0fd_states.bin.z deleted file mode 100644 index 68b581ee2c793e0f3541a475fcb20c12c74e078e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20509 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 Af&c&j diff --git a/client/resources/hardnested_tables/bitflip_0_0ff_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_0ff_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..0c96f76253e396396bb1731b3da788c59d9a133e GIT binary patch literal 1569 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_0ff_states.bin.z b/client/resources/hardnested_tables/bitflip_0_0ff_states.bin.z deleted file mode 100644 index f73f50d8e0909541c07bdbf2e1b4e150973f230e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10894 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 diff --git a/client/resources/hardnested_tables/bitflip_0_104_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_104_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..a5c2ad9bf9770ff9abfbad766017373e701e7c70 GIT binary patch literal 3524 zcmZ>Y%CIzaj8qGbEKalSWxlC$?d(qm2?iMkCI*HE*#`_93@i)|3>*)H@5={?1T1t? zWffQ&veZLRV<{_BL(r<J9-a&$LMkBv85b9v;N{|#GLd9l=(yOeS;0iZB;!H~TT_<T zvSrTB3K?8p8o^mr!GT-c>RVLB{~b{AKGgq0Bx}_rHLr{XJ53of4tp-s*>YmSvu2Hp zVGCDzhI_4M<T<#+Tf|^ZL}u4&okgdX%<A;fm?kpIY3WpFPtTSaGnUQ_O_}s%QiSS} z4JR%~My*-vGcB}ftzxt1w2hKsQp#S7`n4KuH8`FG-u80yj@Wc)W9QVFlSHRFJ8bc| z;_THH;yG0$qjid|OV>enFPB#=h3+$qCa#inQ;y1(Of%&A7Op3oy4GWL&&-w+nG##B zwQXHCY2Kv+PlH4Bw1p-0=5MQuNoSu{$v(4frTeY;LzbGAqQ0!kPkwrb+RF6l87${Y zP}jH`Ix$mk!6kOiC`mr8w;@@}IwwUe7BbS*=?+;lA%km=5Npj+uQd~u7qu;t)a+_k zS+quEy2xt9z!MXz4oy6$8aqYINo~~{ohcVq9tzs6soAm6qHB`XDwj)wQk{yenJdMX zE)4AUn5pZLl{%wiYm&A$+l*j|nO<uyWUcn<Ij}V=>(JKBHG#7_CyS;o=}8UaI;I;e z(R1eFw4MuRwk|f=EVU)2X|0m$l+2Eks}@JDRmm1GGUAyTx>hQ4t*2X$o386(k0=94 zqtGcmSCbtV2c{&kO;*}uka0M0)vSmxU)RR2EU_6gr%uZ?)L9#Ha7xmqO^4Z{BsNEx z_)0`@YaKGx_10C)c8NM6*6Zw>xKxd2v6#S>goC{X!ckk7t<gH=HBC*+AVOPPB~m+7 zTX1T|QKL0pGfw%MxXx%?#haqzw&1kZS}C@kz?BIZYlBU_#iWuW7kg~lYHGA$%_dW~ zpaU5`hEh?!&dwn-b;YE7CS7wgYSUb-9JE>~%h_{LL{!#=C|)(66~}sY-ByeCY%)lb z%(%KHBU|IFq!f?XqF~mk&Mr&4rp#oG658T$H1HAEj@7PGlUtj`wxpa^=R6g((M>U2 zc&de#e~7ctrG(W-RhBop9!Q#+rDf9X<=wHg&?cbr>Ld$o;R9<OPn<e&a<aF#np$th zX;<&NOQ*#|Id+|nh%!jo<5ARcHDS}Tm5rCbrGDFV@!L-IrHjvceUWmjU1@jH(&5`a zVbMjEJu@r=4=vZ&%H0(;nU|~7XRT<bsgKFZ%vIBcPs|7tUAoA}$LYxotuM=#Notma zKl-*&PS@V>N!NGPx9*~Gm%d9n-;mg`dXd_aDZfP7T9hM=gtfIpQ+YMrRxCOpby9W0 zv=y$Cyt$S+JoI{Lv9O?zP0iy~z$?Ag4SGS#mPA&noOYY6t*tFAbaYb5%+Ok%T{~j9 zmmD}88mrDZb=7n2kjqX-S5CZ`@#4aZ<Cky#)~(p*u3IR7cYW9DS1aFa3{!uq&6SkY z|0_ayu}Fm8WIpC*%_&DC!vb#{wVl4`N4)ZHeV2KQ))!Sfo(z0r;%)48mGuRu_brvB zOGCD5DvJgzThUq4uqWt)sg8kerj5#rr|h9wI#Jf_VZGVjVi7x5Z%JGeDZ`ueX4Na1 z-te$k&qa?mCU$EsDKiZ?wK3zgu9VS{LuY+1&5YEW$$kHI(H?(3nXRXlCtX`Tv3vbx ziyx0HWfpJw?atkN;Ki4!{!>dH$w-D)i*ptFx^qVv$+HEoD)rMUvMkIvy;}L~kNw`= zKl%%Q^-piS_|0m)@~zd6?5-}c)7iRai+|uEd+tX+=6D~dj$>ZTCjMj}Kl2Cem(|Ry zCr%n&d|MSSe(Be|lF#iov=+WvCAv_s%b@8>(5bCKlEKPilReZ#rx*uaY}TA~)zr!L z<HrEyDO}$igB~nW7dWIAI+@qgmxt+8qR(2ME>nRMt1cy&hB<pKTpG1<ipV49yCzFb zwzBoi3~Ux{=GkDhnqx-SskL4SMly}T9bTIp!>5GI6zLTTV-*Wn<8&gd<<eHQmQMRA z3zg1H;q=+6n-mhvrm!-qSHdJ{rJA=wQ2)DEA)TSq4@3q@becLQa&7e5vdE}wS!0Hl zM5wMtq{AA;;3XO<9$QvwPV{)R=t7Wz(=4wo6WXSTIW@K}ov_s_IE2|nSS^@iYv`1W zjAelaTo+gAuuT!0v`NrtZ9vKlBcotdqZKDrjhq>?dN#>~DkV)?dTNzUV8#*2tSzaF zbvY+CZPk&Q+HqJTRWl{3VXL;r(Fh(Fi5W&=Vj8Cslr>u;eWnHnPR-ho6zQwh6Li$j zbrny9&Z><wT_<*XNUBL0Mft3WNSdg<AZS&*rK8u0RZ>pMj#?QDP6`CP44Rst@YJF4 z*`(l=f!;?vrKU`5RqPC%;?pykaVc-8VyZ*%f*`9^Q<6M8r-Z4gwI*d|ghoX~Mky|B zS!)={Guc~l)l42<k&CNLC$2bcbUG?^DYw|d##L=CM-5CvHqFwSAru)Ethp+);nJze zJ|>q|`}kb;Z06-z%$sp#!|8~uZXKfwNhkCeCjJw7#J6Q)&(g)JnOd<PJAxNH(%Rvg zGJUGk9FZfTOZfsG1b3~Q{4c3#lh3lvX+hoBm=c3lPW;4Rz+l0^$Y6bdL4ZN<fP&pG zja5s!7#1)vg|IX*I;@(Y(ZL$9V8w#Wg%c+WV3NL`Uczb(3`-WZWL0_P`Um@eStYV= z^}nVKl7UkrJS`V#9ZQ_GHm%ir)rk!=mb!~ZaO5m=HRRDTToZI=aj4RvrBj3*wuT0- zVr!LjR-Lj<ZA#pxZjT)^PDkq+T~-TIx@vHBwwO;=#3J{Wjy+2~idye_8RevjWn8<_ zni!fHy1*znU`><Jf~>$Pvluq2PZ6yYw6gW~*fh)3EO)kv_xGYFg=>y-PYz4T*swKn z<F=&!N>jhk%+RBWJ=6Uk+wM5Wuk(rDOe(O(`=iW~Jxy5+HTyzSs>7{bD?N#1J(^{3 z@v5PEsNvF*I87s|)tX5&+FW#cxfQdz=5dJDOqy^q$Vzodq??wdBTtjXlmp^I+Rs!< zgO<0n1@x+RYg`RHwCJs>#42{7rF@H=1DHLQBxQR=Ni8wBsx8KHIND>il;c{p45^H) z&`l9DHMjI6OGTWyG@EmoSXP)(gto+%jooS4VVlF!u4SDyoVK7XC~&2*$7Qc*vsGpa zr!}W_-8gfTHEr3N)dpdSsZ%zEW%l}Jq;}2P)U)B5Nv3IH>cVEvj<eE{Yt=R+PVCk> zCb?R2>xyf-PNy<VW=XCvTX2(cwd>lR374{@GSqn0Ci`5PIOEL5C8nXyo(rRRHP;4Z z&6w<Q<>aC(7j#W|PD*w~v7I!`l$>gGDl%h6#-@!qQkk>TPHS8<T<ey)bYknOjom&o zA`ND3%A6dMvvF!twytK1uhYpClbJn>y-u!K?3;CQnNC_nnsHQ4)=kMZv(~bS>awkn zRLOLe3@~-M651K3#V&GHt-DR))@h?BMNJn?R8KsWX{lB<)ye9<C>S?YUFD>2$h58t zmI6=qYV|t@S!ymmvLR;8%*f21%$2iEJLXGV+jTH2?QleD#mW;>1}T{dFaH>Sob{(@ zuj#Yk3s=)0$u|{=Z$H=_`s_5HcT15JpR(t&fQQ-2E=QMnoN-s)xOC|>r;7_MgT40k zWUlH{etnz0w{E?{-YehwRNuzEnZ9Y`kr!?);d??%mIg;0iJY~jCupt8wB}6Lg*r>! zTn*Gh3zl9ys?Oca(;gZg^6-S`slYDNTWeD%>ufqK+UD*S^xJry3|~*g#gc+#nWt?j znZ15$F{UNSZ{PfrK7M+3_wRjLwI|;kP5k98*v9@NY2A#;!i#12B#n|bZL&_Pww33f z{^d*fs_DDFE!T=Wwkmg;NUcNrk4bHgCR5gEbzBg6$?;K+SK`2}J=)8aUTra4cX@5@ zYRNwBjlDfP%&bFR?aaJZ8Z{^4m{Hd5j5RZ^rEQ&&a^t4X@d!KP)91?GTHGuSpMLLp zeDriZ_w=KO+nbj!zWP?V>*1t*r&}InJls0<mr<$J9Cy9KHLvyU<G0IC-~GMjL&+bj zJ@YR8*e|x~$Jxz+udeKyFE1|opt?fV;OH+qIsQfa?wvY#THEyP%a7lFSJ|pR(Gov3 zAyqL`YO2nZEt@o#X0DcC(^i~i+U6Uv(WU>7mYb4&#!{;ZQ!lQPG&-h|a;a_E#5J>4 zob+WnwsNwY$(F1&N-<0A)mk=Aja=5&6On9~vcZjYYQ~H;(=|ehf~GBK5Aa#CHbh6u zXJS&1w`OYV1h4rwJmNkqns{ub!m^B8s)21vO&8ag223<cTD35XGvNHI)l4&8vQ}mU zT+&&o>!s#6X=0|}R9>&JR^cv=EH9%;JxkVUm^wr)2-8YZ4O3dHpc^*BR8u!F*h9=P zC2ZA^iwhGXLuO7mbY<Zxqn6Z+H9bbBjCvMMb)2-Jm*><Y6+@Bb3d=;UiO$M4oi!~& zS0ZCWvewC9WiPdEZEn#P9fOle2TnGvnGxo*RLW?}VPUnk2^$T0xh2-DI+kK|tmWcr zla0&P8VOm2Ea+eA=^Wr3z#I~^L9J6mE@;WDRqc)nl~We464(<OnyDF~nlLTkw6^G~ zSz2mNf)`a~Lp3wCF0S&GGKw-fsjRD;$!jEa>f&N4qbO6~z_q&5dd{3(b5&SM!en*8 zk%J4i8hI{RxMtZh$%Uz_dM+EyT$~n>9Oh=WW#eqAV8dB!Qv5hV|4p7?b!Bx}x5*6F nhoPse{4`@GnT9*e5f;^TJo0Mkg_re5?@aU)Q4y{5-{SxP2-^lg literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_104_states.bin.z b/client/resources/hardnested_tables/bitflip_0_104_states.bin.z deleted file mode 100644 index a65adef0e5627df6ebc8b86efd2fa7117fdb2fd1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22230 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 diff --git a/client/resources/hardnested_tables/bitflip_0_10c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_10c_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..e3aa0c2b5c7b18b5463bb84001491ca85577bc77 GIT binary patch literal 1230 zcmZ>Y%CIzaj8qGb%nMU~!BBd#uI7dIu8xjX92y!73=SNRS1ekj!N9@6z@YJf`#%E` zNJx=nU{iLSaDvCch^K*BaKVWbHVH{K2gZ&IDMrjZJk1IWM>32g8Qa(#Com+LNb)os zSh8e-SH-1No8VJb>aXT4n>WFx^T$6fC+?RWOZ?X<m2-N%7vRzOpm5A!V~C-|)YhP? zrg@EGS~aZ(T1jCF1;Qdbgt^+3h1pb+EVM-)Y?!0n*vH+Pv@cmqnY-aIXUmZzh7rqI zn;v#OI9jk_!-EHh#kr0rdX=|KW>v3fDUjHZa5Q3L#2OvJW--x@W87jBn?nwEOB|L+ zFi1KkCb1#u!K8>#pP-<xq8Gi71Qxh+w>lnbpYTb!d1J)NS~qTCHp4I;AH#!5>mDsV zH1C0aV2~A8;K5KG)=op7Fs^Wi#H2(qZLT-M4a;<dTMaxv^5}^i*b$fbKrZp0^H;qG z>po5Vs(nH8(8^XFHJvc6qn-Xt2b&oWZCK7DzUJrrWQqUDU#w5wb3P!k;@b@EYw{cK z)OdffvJ!uj+<c&l|3^ug+yQ@&DyP4v7d@1bIK~sP@q<PgH;>EFWFCV9FIo#GtqC|Z zi6>rR$vUADH*IbaH#VUe5>q84>=&?U@hJMZ8O-p}W^Fn$!%rYFX-zQK215fwZDui@ zAiailB76czyMnKUI~gboMhG@`wj4RMk(tLUDQUyOHiL~3J>J5MjU9%n5pKewK4Myi zJV{3uiz!Pa8YH$!Y&1C9Cb8f!k58hZPBNQl(xJYl<t|5-sR<lyW)nKHQOD5GC&D0t zO~ODzO|``!$;XYe$45e$TeRh1V$xxrWHwm_t%urN-t62QiHTjyG`qP4FKQJO9G2MV z?!3^j%`oJ}y3T{)%q<UsTS6XceiHQ&iG8&4!m5bnJP{GeJUTiFZw%r-FM1%cQQ~NA ze_}yW@}3QG3-1Is%`oKOSZ3j#d}K$#Mhgo+p5zVhxG%6?EJ!NxXLwkm{wiW=*O86d zJJz^7SkCe=jK`~D;stAF!Na1>e9X)(1v}WexqgbV$vb_U&-hWV`%1jfzvbK;Yq=Ly zbXB>2R1<$<nAjzM=Jy<xJv}}=60$uOG7>Y683wj#ANp3XTVnpqpZ$L-MeoEOJ`xek z#(k%n`zM=z;>CWZ7rXQuZ~S-X-tl{0@^3k&H}S>yJgZKhh;w}wD<+;~&bh9;ohRw& zp$9u6^p5P(;W3C;{477=3;&FF!g~xNl8+cXsN-y^zi?>x>1$%*9Y@<ct54t2uh{$e zogFj3VAb&@{TXqOmb<Js+8A2dax{_qMc{!$CF*w!c><d^th}LlC{f4n(DeJFf}wS+ zE{g?&SwnvuS;rcpa42YhQLrGJsE?+P$P8_UgQ3nM2Mr@OY?vXD%%R33#@Q{Q<8@5p zV8;@PgQ7mn3>#L>n6SoG$0K3GfgWxiZl2I?uB1apW<+@NL?ngiggSOhbVg_@|IjiB zl~L20EOO{zXJ>0O#||D&?N)E5sRcVk3?B4xiyYMxZPh6ViV?MtQQ2XjrrIsEQM+Zv zRD%@{Exfsfxdqz{BAi>;)Hn|d7PM)pX$u@oGSueuNiY;++L#n!&@I8*<JhLz%#ql# ZLn64f<6vX+|L&bib2L26wFSR0000ft<L>|f literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_10c_states.bin.z b/client/resources/hardnested_tables/bitflip_0_10c_states.bin.z deleted file mode 100644 index f9cb945efb383c0da222555ef712d80869addc5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14808 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 diff --git a/client/resources/hardnested_tables/bitflip_0_111_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_111_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..8cd2e0ba04289538fd82541fe8ccda473d4fd259 GIT binary patch literal 2568 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 b&9manrW0=7l0EeuyC-QLYH84&T2lc4T3VES literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_111_states.bin.z b/client/resources/hardnested_tables/bitflip_0_111_states.bin.z deleted file mode 100644 index 10cbb8de5f58c7a99b6e4a64a775574da00a9481..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18193 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 diff --git a/client/resources/hardnested_tables/bitflip_0_113_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_113_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..c1b73e1cf088cb8bc3ffca8623eeeee29ff0bfc8 GIT binary patch literal 1352 zcmZ>Y%CIzaj8qGbH1dmyWf0-||Nn5TtnA16>n%BUJeKd6ctHMuY^Y#^Y%B*u1A|3_ z<Dbq4ockGIfbjscLxvQCROSSRjLQnlZaxAM4Gb0x8NAF6%)UkpyizF)87G^V1sK>F zco`RDFk~)sU|j6ez$<Cski@|7fN_BdF9Wa12?mqQ35<)?ICvZwWEf1?8W%7wo5{e| zYs6rZa*(lufnmvt4xyBui@uXRY;6^;WNwuXT;}klarw%H%Pz_-JC*rXE%;Qe`Q?R- zcDfEfimG0GJ+twL;Gbi*Efo{v3*}bK2yT(<D3!2V@F)9uiMrE<gUtsLf5bMgUi`uS z>6JHSJ^eLjk{hcRf8>eldXmy#%dcQ*t56WK;iSH=_QXgD{mR;D=`((}#V3|A-<6bI zShhQI-fJ1{_9qqvR(*?q&t>O&?_>M;llAnV>h_R5!upLR@l&e%dXBsHJJ`KEsK@fa zr|;6Y$oUWUyqvs%uWNP7K6B1PCGjgxf7_{l%Fr%ZTlU09u5$fd?MqI)@N0aKnk*^b z@?@RI-ll>T5jM?&O;4(ox&B^ko_Oe?`+L1`)y5Nt4zo$PyB;__^_d>y`}sY;4{zBW znrhvA?yoxc1E2UM$$wnlvQIGBa8zzmIO9Rt7X>dAr*GTSdf~~b&05x?fjx^i27R6u zQ54Rt79r`gNk?|o@oTY%-!7JTZzbkl@L<C+%NV`jW<B=AZoSo04o`VC!{|edWcP-- zM-SPE*){Jeo3Wv!#QL%r-{pxXPwbxVa#+UbSHz2mBEQwmG8UGl76r*_>3T9EUmYK) z8ORGA`ohM%p`bqDyZg2xIm5E$mF1GvM<;w-7p9}mE#9-o@s^DEvc0Ll`?@z+pRw+V zc$z%nWJUAB0xQGrzvo&HFT7|`(N)d*K}XV9qWbxXqJsTaHJYbhojUz$O=4R_iruPD z{h#bM-$^TVe^$5oaao_g;XS_NU+2iM#T)&4&iH!cw`nmp>xJ8&*FSDw*HwSW?$n{v zJQB(L0dYHKl(<FsO!F$(*d}3cSmX5TMGqAZoYwJ{n5=C$b7r#E>Xkt!^;SJdjagdF zaP&2s1$XPzX?m+$4?TF;W9?J0X-Dd>(^Cu5pZ%5DX?St|!Z&-?@2jugdaH`{&OXJ9 zhmS>C@NwR#*8X!{J?TMp{x<y$%bU)`Sk!*%_o?W-D*B2qwBlsrq$B&2eu}dP{R=fp zdMIf)O)cq_gqwTFtNj=2mLGfX^j`Fa&8zRR=b3DTUhN1!RJ6}nT_eslZoy%`!#b(c z+1cD3o><rgf74t2G~(5s#|xhP4?b8B+xcRZ?UGI6Qw$dKwd^^se8TATickEZhYC{P zs+{9_u&4Q=cw<kp#HZzlihi|E+10ZzeARn@=3{#rr}=w+mXQ@Ijj#N)XZfRQ|C#^J zPrO&b-g9y~r$y37b>%6C`9foMs!u+*{nVQ>k+1Dp$GKY*r%p>VDqFLTkDXt7)eHNq z7Y{G|oR?PfE;iQZ__^}kSHJZy<nqc45Wl#jY3Y|m6IX<2e${T`N}a$uu`4OXC0S|4 zdUK8#l@lRHQ$rJzmQD-MnVLA|6i=|Iw@OOr#HM8)C&fZjeIkRdxOp5omDMBZbH>NW zCvmFL)M-954y7cmiJaJ)bYjyQtux1tcAfS(CUHtf!beigM~!V^+R9`eLrD|IwpEfw zYa}HlB9?KSS=zIVXW?qGO@T8fi-{?0Y%@0UF-V<hXtbdxG2-CVrZa{UleHy;CC;cB z`D}_f8s=lz+UAtzb1GQJ&9G-l>ZHxuM#+-N2F?aPhmLX1*vxZC&0w|BRLLGgZ~1?E OPr3>gDx}QWu?qlxZEi3C literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_113_states.bin.z b/client/resources/hardnested_tables/bitflip_0_113_states.bin.z deleted file mode 100644 index b350136d53c7a194051993814fb8a70f80f1f6b3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9176 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 O$Tw*H<KB34ekuTS|LPC` diff --git a/client/resources/hardnested_tables/bitflip_0_115_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_115_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..464b2e5d6d892481b23e18d5f55368f9d9fb1b4c GIT binary patch literal 5503 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_115_states.bin.z b/client/resources/hardnested_tables/bitflip_0_115_states.bin.z deleted file mode 100644 index c6661ae8c670c63838fc947201659b377c4ec478..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27783 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 F0sx0#ri%ao diff --git a/client/resources/hardnested_tables/bitflip_0_117_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_117_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..87f7542d37b95ab83a16069c551561665b434711 GIT binary patch literal 1888 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_117_states.bin.z b/client/resources/hardnested_tables/bitflip_0_117_states.bin.z deleted file mode 100644 index 647feb09fce58e1f38df55be95786d89932b7e2b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14119 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 ZPsjG}y7o`;fBPSK2fqK@C%!!Y3jh|5iIo5V diff --git a/client/resources/hardnested_tables/bitflip_0_119_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_119_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..05620bba0b2f3c7690cbbbe79a2a776aeac785a8 GIT binary patch literal 1806 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 F8vq%FW?ujR literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_119_states.bin.z b/client/resources/hardnested_tables/bitflip_0_119_states.bin.z deleted file mode 100644 index 289598b1ae3b4010309cced08ac84f0217ca1fc0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11331 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 diff --git a/client/resources/hardnested_tables/bitflip_0_11b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_11b_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..cce41a523836421c9e48409e39178b3fcae34d8c GIT binary patch literal 1077 zcmZ>Y%CIzaj8qGbyr-ajoPkxX{{Qc*xsw~s8K*c(GR$NUV31&vbQE9|U}RvB5tz{> zd3VPHw*L$azZe1-7?><hPWCmJDap)aXp+#QaB&#}3wa_!p(bn%7Z@ObY0{EeESG)N zSLH6X<*E+$S-$eA$yfHp9=ZO`muBVK`ud-nvf}?7(f6l9-;`-TuP;}AVINg2=f3mI zpUAm6*0Sy0uk9A!E78CA-<^NsTYJNg{FY~H55BBDed*-qIdXi9XC3;yd2jj5D)Dps zBOlc<pO7nlRc_5*E%{pVu)&#m><{A9n=hUDvQPBz=Yr&uW%|qqt;MfY$7Y||<u~!l z-sG*7=dEX+EVd|0e^GUErndN{RJ-je4<b^NnO;<KANg21pZka1ck_F%V)L%0ewN|m zKKkUHg{9qf{=^sYN&mPX$Lc-aQKr7*iG@v^-edct&r=T`{9s}4c=$q5c)?r4zQ<c{ z6+B5fI$fFH=v{?u>i<0Uj34~JB;%OBX@A>Mw%*_in|#sh+H+TH*R#HjWB#&JPnf4- z-r<+Rt)Dg<Z#cc6O3r8R@%Q$bCw}l$`$rxuGI(us@L<_=^JCwv<TdZ?KN)|ff-mb; zn46vRgk6m{B3%wF=qyuecU+juzfi*ONFJM$;1BB~|FT(M$8C$>aq4f+xy1|Z+|44} zogU6xY-yJ|Z~CzZf87-xKJ)kZY~53{`tS7<^OFkdynpSQcx!I{jBj)M@4SpXvu??E zOY4J^H&#tE@=N~`?>Y12fqG}wE0uidk<*L{Vzu=)v$hp%D$#jqEK$2GrJ$7a#5rMc z&l|~0ji$+ZJy?82J)tNzTW7IeYs<4aT&0Y!ii_$dw@0^LD2nV~Tg`KB^5k=yCzM<H zZL{r{Kfd#QvDM}G1ywrC2TeqeobYG7F-!blLqf2Vz{X~FX2nnQj#i3Ks5<yjrYE)M zi@K?u@~oJyKkV1`9xwVc=lY@ljX&+$SN>!3Pxug{^FDs%)X#eEjt5R2eh|y|Z_3vl zPpriQUdeji<MTEwu@YWVBA<A+PVai+na_QE=}GUb<C0gtujTo^>-54hzR43lTi>~J zr>$WBu9aR_7HY5dYPDR`mCUm-HBniotEnzkEm+hjWwB1k(ExQW!%)}E@bjG~gH8(^ zITYB&&CJcs)w5ZRb;g9liZfOmoys#a<;a>8ou0t1M59fM1*aPMw00(#teKe6tQK+9 zDCNw-8In3W2acTDG-GX7#;UVIM=}D=oYpy!nsFkl>$JAfjaiW*r$uLmxw+~jL>fdS z9670GwCR*v;xv)ONiz+7j6{1@7&fgj;yKteHCgB|w`9a2pBd94BaN1v?C3eN%pfe) nn`g4bnnRJPA!l4?uq7IEEi*`FHCEa9C-$VsLnr5ohV?Q4Udi+a literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_11b_states.bin.z b/client/resources/hardnested_tables/bitflip_0_11b_states.bin.z deleted file mode 100644 index 099dab1246a7fde05b82af693242911fe43047e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5875 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 diff --git a/client/resources/hardnested_tables/bitflip_0_11d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_11d_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..6aa3f463894ee13622fdc39dcea8890d629c9a88 GIT binary patch literal 2469 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_11d_states.bin.z b/client/resources/hardnested_tables/bitflip_0_11d_states.bin.z deleted file mode 100644 index 3d9511d85128c6abb73bf1e256f91e58e29e0ac5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18417 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 diff --git a/client/resources/hardnested_tables/bitflip_0_11f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_11f_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..5892009d2624d8eb1f78105f0770f6603a698095 GIT binary patch literal 1448 zcmZ>Y%CIzaj8qGbT=P-Lo<TYC|NpPyj+;BbIEow)6cAt#aA9bi!T2#j(1At7lA)o4 zf%)zOZhHm<khwTnm_b;uQ7XZ)<DgN3V7p1mkpnD865M78BpLY3U`aeHX=uP`C?U9v zMWRPojZvc5&Buqq$BiYkkxiN9WP=;J0gaws0=;f-v;1AIe95#AvUNVW@>Sh3jid_A zXDgR~4{@sUdswSyxA3|B&ENfA<tvXS8ojDLy|aS7@kSs2lo!V@S-e>FKKAgxdB-<= zQnl{)jQqN0|LU*yi&x)?o!|6r{f&8-KiOaSpdTo=_|&Gon$PVg{SvdUdbRr2uRG2^ z?b4@w>e$EnX)e2XH~-w^Up$p!`l7$=#Ohx^uh>0VBJt6V>c?MfFaD4>{!-rewYLA{ z&)swV_kLLQ=s)Xp_NG65%fq);^_^b4v43Uocg~65^=Eed@s>$$ZC+%x;F#-_jXol& zVKG*_<`|_JOT3utnsRDQQql~gP#e#Q-oldp3_i;X?G6ieYo<=t+1Pc)aO#n{;m#YU z7#&C!ofetuyijiG)x^n)jdq`=3pX21HDc#TvELLKnwYZcgJv1mBZpJ+UDoVXht*;j zpQI%{EQ#o2y|CtVch_NMo|QcolBvx-ItDu;lVv9stUhRA-FaoV=#2+y>fFtZJ+WRD zoJV8C!zE|VoO|X)Pio4UH*>^OUYzdkIXTx|#x32ALw<ebw|VKE4+;-2{JLj(p+(Y+ zn(iHYvk#nq6x;F1n)AxJ!;2-SRYgwcv*Ns(yqNFljk)iiZTNBD;=J~elWoBg$JnQQ znJ@Xy=#0K$iPgN9bK(R4_Fs6hdc&L4!yn|E-p4!D2OqsxzFXh(%jz5UhWFM-Rvq8h zzVuOe=X>_IR&(Tq$}IZNoYps}(Y~<n%JF+|=KcQ9|E$E{@zI{+3+yZ3vs$&EFih<^ zbxf|gea~FJ&pS4EKL7orO5&H?;g1#8>Z!-y#wY!a|5R2vudH$|pZ=q-I=|hY{GPt% zz29f`F#Q|TkL-}Ni2M8~{y<@=?Bsc`@*a0@yn3Z1#^T(vm<lWH2UeRGeqJ7U@#4*y z$K+qVD>1%i@#a(e!khonPgS<NzS~zGe9e~m$ose-6;{^MQ(xP<hkTd#$Mi|R;PeGM zhKjjo-n`mnCF3vpNml$>&HBm`Tb(mAXHK8^q_8CA%S<`Vs}*x(&lgs)hu$f(w$f{N zKKISYZkbwQ#Kx{&ViL<(n|Ep)6TT96SXMNK=g?8x>j}2q-2X%jtglx#o$20@a46g* z%<G%Vqq(6MWW5(!TP+tUC@YLKSWsQGXwhFruehs0Q;*p044JC_U#Y%WOHC_GOj233 zTa0Hz%F>=?#;OzBeA<j8lTJ?T^6{3OX0$QsutZu~vbID-YJ^W@#4&HxG;N7w9ixNY zj5AW(eAWa@sCg?JrWza;?KzohbWCSiq`{GsQ+teqb-g80rzM@%Img1YYPCm`{|f(p z&8v*1Ns?V_W=13?%#56tbXc^fTTENxSX$zwnTBdUJt?PEEjB#tNtO^g=984zqmyRj zEu*uXStWJqjH4-sj%l6Pl$I8(*;VjRxks|+RO+;d&3YoKhqYEtGMx0VyXiE~bk3tr zkCl!E9c-42@LAb&rkgF<@L<7;hs}n^86LM93it4wOgh-C8KKTPWk*<I*QpIYt3?eC z8*Mh6&Mqq4X*4b3=p>_QA&=E0_=I&9x9kXctQFa2q^9F@G|l6T(Mg{fizhjYJe=mP zsm^*>>sVx=o?58E4#U<dG9nL?yW1j*WZZ?dr%cv7=FV|yYhdfDU^dP)WuqlI83}<s zO9~Ce`S|$MMIKE(awwfoD<)~`WG#!-!;%rIsZ&xOJm~JTn3~#nv@3N|WXF!j4JW5) u8+f;Qq;WksmawrQS#+|_!DFI5>kL&MPFXG)Q~zW4B+WxDt?3;Te*ge3g`fuj literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_11f_states.bin.z b/client/resources/hardnested_tables/bitflip_0_11f_states.bin.z deleted file mode 100644 index bb92ebe2a11c59e562edc176d361138c323193e2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9377 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 diff --git a/client/resources/hardnested_tables/bitflip_0_124_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_124_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..d3601defe79670a2d8d49849506795807643a4b1 GIT binary patch literal 1327 zcmZ>Y%CIzaj8qGb43ykbz&QVXP5S@eKR7!Y7#jE+nExMOU~FM<;9+3tc);_Y0U0DP zWL$QTG+}F2FyUd~mC9gNYq*fY*4V(f*q0&Yf)r1~1p@|?%mqBNm>nlbu`#gqnlMgw z$S`7d(9~2C_FODAahAggW0%WP>K`=tr-_ED{4H>(TPhHAs7*-AP~@|Ipv1h5-OUSQ zR9+mGKXd2@n_k1wHXZ9}iU*Dta~^Iy*kjn*CSS<@OZ4CA9d9K1m5v^oarA-VjkuQO zGZw}jbVyp_yixOkLFIIAxrKE~zmHF>akFN9X0LR-=*5n5?$*y!ZBE*pNNnupYw!3Z zr~FCw-~$PtivEZKKQ_*WgI!5;#AL;U+YF98cz7_zV2;F`eRVPhFW$JbyMMKRdGIg0 z<AI0PQ|~0&CDyWj5&dL$@rJyGp`79?HuW8`;z@sxK8RoWS<d}RHK)JPw~4JccJYZj zZP<9I;K8Az1@cPO$BWh<NtD=lBf^JAj<vtCN=%0RT)bnI_(EImJF*AAOz)KMsAgwu zZG5j2_xX)%%eToFs$1LG7wlsStyOAG3^~B2srj`t$-wD=!N!C`N4<`QX(o$F7$hYn z95~u>#IsFUVunG|(ZqxvG1debL!qN>$`Ug+dbSuC985|yINH_Y*>$wDv9my8Lul8G z)oj8Ni4BHb$r6WoA~qa3+SwDPEyi(JVxw!z%7Y<Et2T<%9*Tb;EE=)spkXivw`gl; z*D)nGO`lM29*G$SGnN)`EnYBpsnfw8H^XK&ov5S9%p%J~+YFn<4CFKQI%|&<Oy^8E zqIgh8X*E+pk4UBH_x_HD7r8e|ta=yWrXz98(9mH1O#MF*>n}`C+QW5_M{CCP2LbL6 zRKqz|9BNGzpQz)_m1L-|<in<#<i;&@uw%bbk3@Kf9h?4!4RwoUPX&L`_{Q}~d7*#6 zjG+03d}1n}wW^K=FARC-rr2sN(JgUIYs2o=0~>k7nRm))*)|!(HXWL=G2x(k(g6#J z?kiS$5(k^vorPQbjwU7@ylCjxCXxJ^zvD&R=L2((wmwn4vDf8zVuE2(Gn;B>>qRv+ zo{)zTArHlLw6BC-^s#N`7d(8+ihWDs@BRxv<s2*LC0TekH*HwMEO4>Fuut@qIP1Yf zdJ>6;3RXQVn8UtjZ>xVr_>K?Eix;=Nkl5HJV;C#Wf9Km2!50i4gk*$Pa~O(BXdH-P zI2!nYv18StsRwwp=BT!oF#S5PUZLwi=ZydfHj&n@B?<0HdpR~HvWX<UhzL4l7|z+* z*xGeexJ@FA<9BDlQR`_EJvyO@er$&A+@b{qNe>KW@ZXr=ennAUDfUcaf|!_wO_x)d z-k~EK6Mek71zQg72tD-RNHQOH(~+dZ;@sTHVLCn$Ykb1Ajv2NYL~Kkt+LJ6MVc2)@ zqUM7*r#M#`g@^75FP0WWY?R>>e4;I};b_;<7zyFljt_Eb`hq3utDF9QS>YLegfl`% zOJa?fL1JQPqM_DmF-;veEtidkib+Y!v^H!o*pS$jz@r$!Ww6v>Nm8dov#7yQ!yX;Q zR>Odhh&75`hY~id3I6urflCByYp|dj(~7T+5l$PH8oKmoC55wk1r`Vza2PDGa1rL< zVK}O?M$6-$VUQ1>$YM6l)~=<AhHhd?Ta&q&B~%+bHYP0!Ze=M*3g%|v?B;6iDhTys z3@NZs)Di6nX6BmmV97zPBWx-KAqg=eJ5(an1buiklk|ieV?>*#X+5-Hda&WphNVph V3=FuL|99_Hnxo;N(R0g!0RZ>b7|H+u literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_124_states.bin.z b/client/resources/hardnested_tables/bitflip_0_124_states.bin.z deleted file mode 100644 index 0a37cc5ce74303e7c0b5893abb72b743a90d5ea6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16060 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 diff --git a/client/resources/hardnested_tables/bitflip_0_12c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_12c_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..38dbdf2274c3a26eee7d11de5e01e73d420450e8 GIT binary patch literal 922 zcmZ>Y%CIzaj8qGbv<?fhWbj>FfBu*DK3)zD2`26h8+aBlFi&vKW?<qLVPNFSU|#uv zy`BLA*bNwbW-$1uakdz+BrwllQ1f9>6J|Li!DPUAhCx`3L71~Ck%v)&;TZ$xWCqTb zg9dF3Jq*PREGHXS4kgTRW^iNR@(L7o%BontSlDOTtjuK!CUPB@6(7xK`jM#R_%q4% zit?7wggvem-0Y_$+B6Q8h`jQW=m|Lx!6vfeRp>*59v?9=&W@wu+|3JnbTkb%Xg<+i zaI~{ow9$~OiYr)D;7i9tzNMXwEd?vfy2Ug*4;_t|VHlxtSmePPH=T$LGhPXH%C<Zx z<-8E<lyu07;b??jb2E?Cj2CXQo(KJe#Vq`|9vnI*F~f?TPq0}cd7svLiGx+ATfVVR zsXBQluIYp59qyI{o$$mvhHc`P;wHVH9yHhQ(FdM-#d1OGhgWtpZ)xX~T~hl@uTA3N zTRvHy5<Q+W#xjYj9(Qih?tQVY75*G$5*Be6j^C(ber52n<zt)1p(FmB<;V0L{lwIt z*nRxozon8r(SL`*{5>^k5()3SMgQ`@v3tDIYVr{aea|~dhd-$I>{IMM7Grz#!j9^r z?{xHc?C&`4So`P)_Xjzr<r8XJ>KtobmY<1B+9=zy=V<3g9y`ON7lwxp9Qb+g@98ZY zUWsScO{hA3Dn?(irsYL^XSLrW>(<6@X7Nk4&FA7fONGzbEPW<dnArHW`;17e`-NnQ z)jSb15*v;_*OL+65@S)(*X}GMmrzimUSW7x=vAVH!Jg-{-hb!&DBDu7`{=*(N51tP zcx%mhs37k1bHkVV7h<{Z=%4xN-tdimioH=i<0Jhmc1bVl4}O&USaJGZUHS?eR-5O4 zY}j|as%lfOczB??$3G(cwd$eeTzgo*ao>nL^ov`(BKBeN!m`QJD`NCo?}_s*y%F2o z^g_q*!Vbd{y~QmrN<^$CEMwVwFr2Y=X-i*Y!=c933(ie;60IS>K5#l;(2Cd)SZ%N} zoJ(lsD;<p~YvP%-y7^iI3b=*B6m=Xn1|3;y5hIe^Aj7r8^T5J`ArB;0#0d0BXg5eK zb!Reg<Ls1}rl!Wnnbh1=5Tkh@$;auTn&P1~o=t}$B)X0X_HZ3Z@N82}O4zXBK!T4? zXg6aIV`podp+wNegn}N;f`l~@b99tjTMZi%8#}wSB~;r)lUWmv8AK#VBqSys6K#_? YG?~Y%;OOE1-8+@$Xn4r3)|6=g0I{@$>Hq)$ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_12c_states.bin.z b/client/resources/hardnested_tables/bitflip_0_12c_states.bin.z deleted file mode 100644 index ce9a966fadb1b6041df0d301ee167a8e36cb01c0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9734 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 diff --git a/client/resources/hardnested_tables/bitflip_0_131_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_131_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..0afa8f655f2f5a490f955bb7b26f6de3d69bdfd4 GIT binary patch literal 6964 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_131_states.bin.z b/client/resources/hardnested_tables/bitflip_0_131_states.bin.z deleted file mode 100644 index 6928656f30d6e2025c12d32344d72b9ec0259424..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 31946 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 Y`zwC_&%OD7<^Rm9|NqNh4d*)r03QJ<zyJUM diff --git a/client/resources/hardnested_tables/bitflip_0_133_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_133_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..400272bccf895b3c847ba1e1225b2de1852f81c5 GIT binary patch literal 1861 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_133_states.bin.z b/client/resources/hardnested_tables/bitflip_0_133_states.bin.z deleted file mode 100644 index acdb9d9726ebc81263539007e90c8d7311ce7eb3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15941 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 BixvO? diff --git a/client/resources/hardnested_tables/bitflip_0_135_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_135_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..242ba30a6541e12728d18dce496e7863a9186e5a GIT binary patch literal 12922 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 Kv@?mnTmS%jMXiGX literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_135_states.bin.z b/client/resources/hardnested_tables/bitflip_0_135_states.bin.z deleted file mode 100644 index 8ae5ed323a0d7ea5e54a8b7708ded9f9a4160b62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42791 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 N&;S37qTAn11^^#5y2bzi diff --git a/client/resources/hardnested_tables/bitflip_0_137_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_137_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..293c1f93f818c8de4363209e0e4828e85cd48c32 GIT binary patch literal 2914 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 R`~T@Z=_**LAi4YLEdYEX7BK(- literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_137_states.bin.z b/client/resources/hardnested_tables/bitflip_0_137_states.bin.z deleted file mode 100644 index 73202f119af9ee2d76b2a1850bf560e16451c046..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23984 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 diff --git a/client/resources/hardnested_tables/bitflip_0_139_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_139_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..97761432b480e33fdf4936541ea334c37ef6223a GIT binary patch literal 2400 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 E0F3xbzyJUM literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_139_states.bin.z b/client/resources/hardnested_tables/bitflip_0_139_states.bin.z deleted file mode 100644 index e43946366bed0eaf78fff28d5c7146db51a06f62..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18850 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®2=q`aj#t{!IQmU2OlJSATDP+@9I@u`cVMdib9`)BbLs zQ~zu2^_}<k|KGaz$A7us^=oZ||NP(fsea>||1Uo8|8qX<-*40Sx!V8luR<OhI=%g$ ze%Zh5{r`)1&yWAVefi(`)BYR(Uw^gJ{$Kf)x|ekc+Tf*^Q~%VT0c{ive6)Y<vHzF; ztk13g`uF?tv-auGjcjdytIz%0o%Uz?Y0z}=)q2%O|HE(p|MZ_>!u9`_(f{QCFaPk@ z-~ILe^?z182hFLA*A^Q6GduCO{urp@F1Pt-v+D2u@8wIL+cPx$JHNbs{q6tas{hje z^&9@53>u}p{J-+i{-xLAweJ54|9U>~|L5QPr|(;T;Aisc*ZKDL_Gf3ls;~O{{_(|c z|K?kLI)C-w?|J#_|8HIOf4Sw0-{<OWzP?BFhfeLQfA~}Woc+mweV@<Y_@DlEeZ;@~ z>Tl)x-}ZmrU-YB?*#C~l`;ULNPnsrg`%fF((-AlS7k>L+_VYjSkLUk=|0f=@)pP#Z zuTk&nrMyAudH(16qyOjp7k~T5{`vo9SM1~e`{(_)IdA=c`hVsBLMZ#++)w@Q{y(w) z$sc>rVBdd(Z~KFfGc0-jpKWvp+~^Lt(H(H3JK#olz(H1qj_!aP-2wM+<n4g_WuJcf z|KtB6`~JVo`1^gT{MSFAHuEBVzhn2=cK$#A1GHAH?>KyBjU76(_WS>$BWN>g+pqlc zej5FM)j!Ku^>zQhU-~X;QJ+)#_wDoN%PoWd`mg_AYjf+~|6uojJ8#wB|NQpr{;;qA zP1tMi|LkA>Z|<#sTaU+Q{mt4QfAhP(&Huwc)g@1r|C9Xvf6ZUf)BkhN|9f}zU-`dq zzW?Wc$QS<kUh&WU%%{c2>p_DCNB%!L_CM=({o6VJv;S=VKli`(zs3Jv>HpunHSY9Z z|KyjTVVUB8>wnDu{D0Bh|Ih#2pYrSZ>;EU;&VOF{{Qsx=C-H|MGtTv!{y+Wy^1sK= zdQhi+4rDG){@6dzPT?<q?kgbepgR}8@ALkP?C0u>|LHR{{13nNKl|!G@V?U5NB(=w z{a=6f&*k7h$3gop#Q#GeWMIhQ$e;6Hp~F-S|KyebGk>ms^UodD-#&NazwNww&wuCN zhX4Av{@knmum3f^c)q`H^Z!<)9X1!z|JhgleQOU}J;CtF{?+~|{|o=|H+=kb|6Dz2 zA?1hqGynhCGkmfC-~H$8|Gi)BKY^yML7nvjD{StEZxY@A>-#yA=ezzdD*O55|K)${ z*H_!$ul_B+{(sT`+o0jw>@WY9{y84@bMgKE!JGbFye&WRYke+wWzdPw_CMXXgVsq1 zod5qj+5X+F|Fxxm>=)L&{_lVC|MuAb-`X|)-Jket{@4Gv-u%D#*Z(JcITb^XYxnd2 zH~$Ci`x_tsy>8$4Z~vp`?|r?0y4}XFf8O4E_D}!$|EDn|EDYKA-|auhV;kzdp44aE zj(=nS>3MzAzwmwF0a9DJ*WaBtLe^I<sTY55s=XFzV7&c({hmetznc69AFl!K;@$W! z_*wtr_5Yx`1iX{`9-rbz_wWvmJ-nba&0u&!x?XA-WH2j!&HtD2i1}iTr2lO9|2zEa zci;Q@|E|^lXFUJk8e5-(K792@>iPYN|35+2>Xn|C&wl;K{g-~JY2!CY&ShXY@xSvw zvxD?6eN*(Ub(i;pj^!x-&-}9+Hjga9`F;Pc|Dp~Nf9HSvw?F2Wx#It4|MstYazFa7 z`|STW>%jwT9iY87uz{=i-+wgzz5n-1|NDN>I^4V91=(QFfr<1=%l~=TfBi2s>b!Uz zW(xzuPx<fmpuMv*p?haLp8xOJ`S1MC^$aimUjl7p>Hh!e|IPYG{~ap-@iX7L&I|zD C`(|hW diff --git a/client/resources/hardnested_tables/bitflip_0_13b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_13b_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fb869e7cbc765ec821c8731a591402c6200914b5 GIT binary patch literal 1405 zcmZ>Y%CIzaj8qGbG`a8ahe1sK|Nq~UckX7iy(-Hn%6NfMKv1G_Dx;vIpn!OyfM@_q z=oN_vT=5KWz?W!}l97>O(96>{%Y-4xD217Wjd_Nzq?D8-kFvAkvR(#>o|z1X7#p4m zyScTsIdfb%k-6A`O<B#spdrDs<>JJJ3nv^hF_Ox-z}Rte0*`_OHUk-!Ea^0u@+C`s z%30ru`~evz85bA33GfHLTsg~VcJQkX^+#77wNF%u>{vBT<WRxU<oj&N7Dh=AOXMp& zFYQQi`Vsj1%zS|#?!r5#`|q%0y;O5%>BY`(=brO3PWgR&Wo@#!_viU*zV5c>zf~3! zW2_cqGxfk}&FPCC798^zsg#_)VXnctc}<@UpQV4A@!jXNv5`OXr+MjengtI&8dc1- z);jN2pY-xomF+Qoq4{<}^Y1NDTebe!(qR3lij^Ol?}s1jJMNlj`1Qyi=7y5+q7Qze z5B$IBZ0sqR-%-JNGnV~zL}asMWWs4RL%9W~?S4E;JzAK&)4yVkVQPud;tw`4?lX*L z%(T{Sn&UIIr=Z}0n*^Ww9wUnxpW<iMYQOMz{u@5?(ef?*D&K|GeDr$!O-}7S{Cob^ z{twpbD>kL3Y;1iid@|1cZut8hwte=6{=%QvY<RTc(YhD=gYQ)Aw_ffasrO_f{{cJm zCw3S9^f%VeURLdI+OJx0@cq8W&+LuA*#$qbJ8cv4$tdOf)Izzou#!Le+a5oz|GfLa zyhZPf9u+(|r}N<awxEAX({Jer3wA|JE!0ZYN!D4Tvqq2gqxzv#y~#4%Ob@3;oa}m$ z+}Uw7<;cm-$-=75s)iG%ue4aq)6T8&uC<-7kMoAlu87zxM=dr+9Ov03yi32+y7OPx zBX2gJxyQX8?U<{k{8{esyXmRZB9nPm-c8lhiAge?Ud%4%XJ>S}-RsQ@nV48vS&QR7 zFLs=tc)71%S@pGnm7&oa+5VX~($vMu{3Hv~)5TH?9!@#+(yC<5asS}%o^@^R+^RQT z=(DyncXuXsAADV2!5=vH_(Q*U+(%9y=y%@S^+jU6`eNf3vYdCP-Z=HyVE@vRzuI3d z%EVt-FTYcG{LJZ1Z@$TSeA{6wclGGa3Q4<zcQ2IKh4ww(-FURNy|G}!yk9HpnLDlG zPZ&Jf&2+MI{iQwp7s`C*aUObbT4&`y?RMc!$GuOyvy$txnCDvX=w;y?KXy6y;-$~_ zdN=RZm!I7Iv_gO1ey<PlpMI;a`DZLUeV5I>7ke)j9;v_dxBXnT>ubAm@26Gj{)Vq3 zs(JS2tnuqpizy60;Ai;3PI-~t$#+v9>}`v?{&h#V;jcT7e%^erZt}}Gk6QgJ`-)%4 z$J({;D}3_%)wk)hbdsAbQZ`PsT`d}SsIV}$Epb|`IB)e?i?WjWUcbbX`IkP}mHI(O zpYc(}?zz*fb!HY8CcQ|Pv@*0dJT4<Elic(2z`MFjs%%ph?AxX#Xt(6*G_NJ$PX%=* zM0AS=w@uXwU2<WC4*yEkI)g};LrHGjJZgcd1~X1=oECKC$jNEJMu!a}A|;a9!o@-l zv%Hzoy|jxbKCH~|uo}-&!>+=@!#a`HnjtR}b~#=aOP$PSWH^n-=hVrbjXf_9z4X*G zoT@W5((9pBm|oM$63(L*!fl~C)0rjaXdV^~IZ>F-EiNv2)G*>u(#DC$9<7|Lt=#b_ zc%oj<hKK4LrzFEfr}E6y+GJ#Ckkk{Jx+vwu!KI<Iw56t;IC11a>a>W6Q(IHBj8+{w zwdO?6CS%cQ5+`~#ty$A8v2>bZ>QtX(omCNM5{*vvoK&3Va$3V!XH!qAv8c~sNslu+ z2PG2LoQgO&jhSa!L|TyHl(djDVUk|QLXFuXd`_HUZDUOQ|LC2^axNjZ*)QZ901=vx Axc~qF literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_13b_states.bin.z b/client/resources/hardnested_tables/bitflip_0_13b_states.bin.z deleted file mode 100644 index 742c3309b4ca59dfc25179e95bce05b4ddc743ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9228 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 diff --git a/client/resources/hardnested_tables/bitflip_0_13d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_13d_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..46b67bf8390c313cda54c091e96c87bf6d9ee92f GIT binary patch literal 4000 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 Sk@){(xk_*=C)=S&lL-K2m!lB? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_13d_states.bin.z b/client/resources/hardnested_tables/bitflip_0_13d_states.bin.z deleted file mode 100644 index 4b95e1ca99889bf57102ac9c1ff28a0d2cc019f9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29602 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 diff --git a/client/resources/hardnested_tables/bitflip_0_13f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_13f_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..33b2abfc2ddf80b050eaff7da949a19d7e184dc3 GIT binary patch literal 2056 zcmZ>Y%CIzaj8qGbl<U{7XGlEvKlP?y;{?Y0tfDNTqKq624Xlg`jtw0QCwm?U)iYoK zHfA?x#};M>lM4(Iypp_Z0=x{D9T*Z!QcNTqOqhKc7#l85xRA(jf!BlqNhzzUh}%LF z;o!?Avu4aPxz*;T{*z_T!bu*dmYh<oW(!D7S+i=x$w<#MpJs_3jlV3CoKr<7x>*?Y z_=E)>^8frK)T{Wb$|{3N3%_&!l;85G_O$*9_FF-}MfRINI=A@Lw@Asl&s`5w_AmZY zw{9LkpNxI@hgx~|XYOa%H}wP^?VNB@M~81psymlK=f{xg;odrq-D;6(L1|uwJ&A1| zC9CFo+C6G@{(96)exkQ3`y<VX&7Xt{V+_9d7sVUK_;KlJeu%7VR)1h*qdr-qj>%84 zVAbz-{)6A<gg4)qqxFYh{iCetlT&iRPc~L1OKk0pOjZ|*KX6)Nk7TLEe!+`BEdCc? zs?dCK`cbmI`pK7H<v;w(FMM(Gvt*&&_8Z6Jll$ga9e$?2s4G!@$0l#Z4#P0liybM+ z2WAGV$yaUs&2;L+e5O;!A|4g2N%*v8#+OKo8T*(!C%={T*|AP1q1r~f@#xf)!#Xp* z*(s%lA4z;_C?>38(QR>Rxn$7f7cDWesy%B&4kf8MOB!uf*>K7*NzEv+>oBWTK;KgS zr@w=yehHOymGnx{NSd)!!l>m>Pehx}l8x>cLkx9<4kS$rIARo1cr3*rH8moc<FwYX zV5LU|o9bN^?N?3pcdBVLWIuB>(Z2foI=hVXJL*r{UB2^YdYIkQhZRQalNG1$`h6_o z(WBGvEt1<M<7VvGG&A*To2)JW)q}tLFTS&#`bR$bZ>*jE$}jPTM=$+rzoGt4;b=|2 z`sDsKmF_K{`q}w!>{*|X_-)^I|BmkkoB3CU$xT1;-^tD??zEaw(C>={OAoA5ty9=< zXsC3|_2-m7S9Y9Mtz^El=oF8be`9}FkDiRg56KHJ>zbEyeTXdhP$8fBV7>OC7eA*S zzG3(Irftt2Iq{8^{Ctx&fAh1)8qD|>_bfj1>VXG)*cY!pb@<eSFW;<WwZ-K8_*5sK zoc!)zjn(nx5B7Jj_xW_{C;O9H@sBqAD{EpReontO^T@gNM?WckaV@o5tW#Jm$N4VK zZ{O0RhjmUosP*4bRiQsI;<4n^{t4f$UdypBeKJ>H&6t1k`;eckFODpq`qZc7^}3n0 z4<|3PvHI2C_|)g{!6*Be_13G)Bp-gTPH)|=J@bw?ecGqo-Je!Cvp@CSj##TXa$!C; zd#u*YJMwdROohe9caQJRO&4yL7ktwEDd0m5S6b*r?UjESo&GK5+W)50@o&qj`3|A( z|1ts;|F3ZWt`>A;qq0W)gCy4;#bjoQAo~Lkdy*xRjzyd)c-+p;rt{*lPQfD!ufj0l z9?8yFt5cDNMn;liY_83mM=vCnTI|?(xbf<xS94-@3MVf;wCS|OE2}j<GBV-po`v2k zN+J$UlQ`F9wdurZ(P?f*8>br0I65^|XR^>qpOj=agJWTa{X#3XEW+KqCX2E0L`e8- zI2PQh`7mVNO4X)$tPc_o7`h909(tG}<1X~_kXz84(3A}`PWsHyS+!15!sy_XQ)iMz zQjN8FcC9=*)2d)ovc&0jKf~_ULrJGnB*G$&PV;8%@e_9!<?b}*I<i@{qBGR%-v#gg zQ+3)xB_g!NA~vP=Y)bWs*mNw}uxDn^F~vmwcQZqK3?~?+MkGo4aBVp1v&yjRRI1S? zKF#nStXG3dmR{AoXtkhZ;wA4zb5##^&e)W2T8(F!&y3V*L9bp*%<$Q8*rLSfWXB_8 zojz@C9m8oxo6U04)Y*MjZHn|sy|lPnEtp$b%V@J^(&Pn)G>^vc^=wv4+QlBxmMW37 zTAg`0Q;FfEq!VX)QiIh34jaAFytGM-M`ET|$%#!Trv()lO&60fEIHi9x3c6MXMf^5 zqs>~8Q;bE^gn4|@63(3QI<4>}>A}G%50eUxr4|-erKLrb8m6}M_&mIDYFA-$>twdb zgwmPQr>s8NbS890VrTU-VXbo(bDTRTtNDrf%rrb|c;sYrGjr#=o;5qdowZ)=cobuC z^jON`W@eQ%pP3S8l2Ud(v`C9Qmd@O>DOtI1u2sUT2agUfJ$hKS(D3L#uX&HYdFhBY zeR0!T?-ds)_f$e#BI0D5PsB#aNk%gxl4hJT*fb+`=4z9ZlX=pdlHw*k<k>XYC^cCv zGUYVWm*b+>V}lnSk1?`1^ytB3o*t``*ImbB_0}04y?V88O&hnCRiV0=TY*LDb=ioL zSI3N7ucVxG3zkeZ+F;ndMq4Lt(cb9`EgoA$9JSCE?K;_!bmGB@9f@fgo8}lE3w&`X zvFDhPj=_%Q%Z&LXj!x#*XV!YGby{zl!C}62ebXaO8*?ALF7BtN6Y=5bgLyJ>%;J*V z#)dt{IvaaFI>o)T?bb>-EHO>TEi8Q3ys3ShS6vTIOFG&nk;czo=<!Xfx%;B`1wWzE ziijgKQ>R5H8y(hJv*}bCn_H6Cv5+;XQ>TS?8%BJP(bJaL*p@g=yK~Z+2gynwdc=}a zk~XH6tW%Si5t%y4%3bt|)iRyLsVRr`cAT3V^y)+SF7ZuM3wG$~B%BGemE_}-k$Akx zX8F!3Nt@P48l0S=$FQT|w6^+=W0HD2j|yg{zI*V{Mpd76sr#hoyJQMJn0!!*DeQ^i z^t0H(bzW~~+~I@5hYw2@1STHl(-O0I)V}eJao6OVQ!Vz$Fg{5TlmDmpq^n?|f~{QG FKL7+`tG@sM literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_13f_states.bin.z b/client/resources/hardnested_tables/bitflip_0_13f_states.bin.z deleted file mode 100644 index 469361ed5d87261ab5e56e256f54e27ed92a47c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16504 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 diff --git a/client/resources/hardnested_tables/bitflip_0_141_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_141_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..3be41189ce654db39049df6172e23ca7bc971cc1 GIT binary patch literal 2798 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 I(mvG|00!#7&;S4c literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_141_states.bin.z b/client/resources/hardnested_tables/bitflip_0_141_states.bin.z deleted file mode 100644 index 61746bf772f02ee158b08fcbfce4cb196859f30a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21419 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 O8Waut`M>bQ8g>9#@%FL+ diff --git a/client/resources/hardnested_tables/bitflip_0_143_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_143_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..99328786c5ff4f95d8ed77c676ed2652d6f20ac2 GIT binary patch literal 1533 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 Nix;_C1WW)G_W+XPq>%ss literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_143_states.bin.z b/client/resources/hardnested_tables/bitflip_0_143_states.bin.z deleted file mode 100644 index 685cf9d00ec318ee3d7da3c3f84394b8be7f7414..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11143 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 U&i)7DfjhWw9{p$7!BC?J0M|s$1poj5 diff --git a/client/resources/hardnested_tables/bitflip_0_145_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_145_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b31bd720ad1667a9133597426e53e638ad0b77a5 GIT binary patch literal 5397 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_145_states.bin.z b/client/resources/hardnested_tables/bitflip_0_145_states.bin.z deleted file mode 100644 index eab4935d19f84797e1db54dde028bc9b26656961..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27056 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 F2LSz(D>wiE diff --git a/client/resources/hardnested_tables/bitflip_0_147_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_147_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fab2780c76e4def6fab2111ad3e2d35c4353a87f GIT binary patch literal 1057 zcmZ>Y%CIzaj8qGbl&`m(!%)^&|Ms9H=fuaiXUgx{*~!r%F^7Rcf`PFijzNGyiG%9_ z$9)DEc*ejvnSrzApg|i$4?{5n%gF|oLkTmS8Qd5w8<<iKFeMuJC^jfF$Q)oaN?<gY zp(b!Zuz@duVWt7Y3?E^R1daoYo}Ruwi`|0#gMG3L9E>s-F1YM3wM_Wqp9M|JpM@t` zE1ftbqukxlr%}c4WKpiI71zwI=9ZK=S@O`S-J%xD^gVR;yqehH&czeV>ZXx0lV=UP z*U@s$1Ir@(G+X8$NtzSPE<U5Yzoc&A2fb6Zu2bFz+27i`X-=r2x3JEd)jCr?L?pHz zZIcw2luJMHGjhJ?gHP%c%iBDw&uHJ3*WUaz-gvp|%XGfaw`%?79-pH=rPB4=y6J+4 zjd?bmuUQp)=xDP>VzN?dnqiM*x<|NBh@`W|YW<ce>pIw6tB=-XotbgwOuUeV439)j zJ0Bb0ba8gk)?a*j+C2IjtGi#;syDqUv)23iGTyoS#J;7Ms?L3Vu<7fX#Lj0dyF&I} z<q6h0HCN<duxi3`u9R-c#GVanP8~~~aWryDp|*~ZkwsW=YiCc4t-r$KcA1Fu4P`MY zyS1-XC@*+%>ePuBFJ;9&SM4^9@mYSaj?KzSEVcGoxR_4C!@k4aOU_h!1>YC)uZd6I zSs<B`7C!gyb)K2eBI24i%@O)!6BByjSW=Hf!n?A9hZl}%8wE>R|J!Gk@GiMqb;g-v zwd-g6o_p|4%8xL2QQKz4kGrRDGy1YCePYS3xbotoM{hp*Ca3r5U7WsVP4)|mxW)Q` zlOOS&<}q5cY1773f97|#SKsIzKA5zR=|fE2)9G7w>tBm~dV9lH+3B%-U+11FIW80T z=v|!ZjfypIB2M%FDg4~^F<4Y{inpNhYvqlp)53H@BMdd0Ro!^R*RYjnYHL}vsivr$ zlI%KiG%?lav|!_JuB8`4b}T4YoX*vzCv<Q!ThOUfDLuhVCnwD`<k__0)J&aeMyW=J z*(8h(9Y_|ObZACmq=e+e#3?g2O3dhqOqQIHl4=xTbXtFBthUAspEVmN^UN@uC}EV8 zax{e}Wtq>W)MTEt#EFwmHa07q)Z%f|2{?2pGHIj1F;&TFNwTVit`Q|0c_L2fO)RiT z?G}q+dU(uOC%7wlam$&N2dBhpcXt_1dT``XQeVr||C_qsAN{<@(^+AaJ<n31RexML zeMMF|Yk7Kq;tAEU*Aw;b32F9BaY~R_AfY3&T7v0{vT91wVO4Eq!K5Ue$w~(jPPSY+ zG1GObu2#fkp<|P|6;5ppH8PUOTCBOqCu*^dHrp!SW}WVkBTJ{b8XZj*NSv|JC?#o= zw<M3wlFdwq)g+Qmy7?F;2KGcwHJmKrI)ilvn~_hNQM07eVbvL728pdR(+vL~y))5I LM1}qSxpW2q)Of=9 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_147_states.bin.z b/client/resources/hardnested_tables/bitflip_0_147_states.bin.z deleted file mode 100644 index 4d66744006d16d4e1ad791ae98bbb0929c19b203..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9834 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 YP;7KiY;;g;Fb|3~<ox5#>a#fx08PO~UjP6A diff --git a/client/resources/hardnested_tables/bitflip_0_149_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_149_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..eda7650e5a575c3a57ae66ad65c9becfbcb4809e GIT binary patch literal 1763 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_149_states.bin.z b/client/resources/hardnested_tables/bitflip_0_149_states.bin.z deleted file mode 100644 index b9da604a04efb2fab6a829a933473217585b08b5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11380 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 diff --git a/client/resources/hardnested_tables/bitflip_0_14b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_14b_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..c3c3dfaf3d1ac2f608bfee1a78d9a28f64125595 GIT binary patch literal 1058 zcmZ>Y%CIzaj8qGb)O+_jkbz@n{r}%rb0;^NGfr`oWSGeyz#zdS=_tS`z{tQNAuyv$ z^6ZWWZ2K9&fbp2mOhbtoj7AAF8B7u-m?Zd&QciXpIlwuY<pkqmjspS*3MZ@ixT!Jt z%usXSm2hKdWA2%0lw@eYlycCBA>)t%i-Ana$;pD94Z>=i6PVou8x$KfJ)KNgzRb#8 z>~YHERwlpati~7fI$z1T+?v0t{HT__Pq?OGXGF|1%^NpniSdN&@y?bw))OWCEJyg# zM#Wdc40qN9E}QISa_E>r@~x%8jQ-Q-URfXf-%LL8tJ=fQ^VuFhI%dA1XeZzDHDBi| zXZ^nGYj=Igd-*LT($lwC&AWQ#$R{Zai?gR$FC6!JX;>kCZLfRed)WmqZ1c($UMBV{ z9Gh{l$B%u_u5*0L46nS2D&LZLYo|DKQ<46LFWc9p9x3EAeIm1Z!HYaI-D9&QK1qD! zZalc-!+!B6cmB-DuAbNvzv05gf{HoMdi&p8-tsQ)=#O<zk36?Lu2jR@>>j=LT=L5j z!;Fg$Gd@aH@OC|ySte0DXI-#wo0^zz8(-?V2l@KN&QmJ<3yv1ZXYE~U8E)`_jsIYN z9bagDIqUNn_Nf~)4HB=F%S|*W*^?8`{73F`;+4b~*1lqg**<em*|z7rcJ{eq{gv?_ z%6Lyb4pZizabutI=eVOwf9_E~_#pntd#mev?v?BoPZr;BwC<bXmRobro{2cPHM4KC zv|MXn`_#qfa(JzUmlRu`u}l4?_vD}E;wSsVr7VN1FVs9&zVRsLO}JEzG<Vg<HHK=J zzr=g?<Yd@8Grg7eGZvGWrF&XjvN7S<G_|X}#|#dBmpGDfv2(}0#GQuT>_S@tk4eRN zi)kF)m@qroX>RXYn`Lv?>MlFlW9z-+m_=`2X>a41N9G&eRn*y~R~PQJ`_@1CyYzMD zM?3lF6t3gmyV(0oh4`(^ceUpoAL~n$HJ`~bIND}&s<L-wb^Eow&y9ZCcyIj9Kl#$f zJ<rq&9&Fio$$w$Sjf|wsE8BM2wR|$&P^4#g%up)RtUq#V{c^!`1~&@VC0EaQUlsAb zaN5Tm7oO)>A6Yd|D`4usPpgD(ZA@$y;|XKa(F*GATD6hY<x-DmV5HWsg88eKc5@^e zh+SlMW;&1&p(E_btCN%=X5x`>tZ`XakFJzQreRX1x7S*U){a9xnhOo1LJ}obb{cYX zX7Eg1(yhd+rem;dvarN~W6VMalRcN3_=I+4thwmZwI;=z<3zwQ!=%dsmo^#ltXLDV zCh3ftx1di%m|>W*pf?Zek^>tO5)D-ji!SYQn_;pcuvuuvj9@m!D8qn^1FP8-E;GBS zMj1?N<K_vIP&slaVq;WBW>8Y1V2`RvLYQIDg(EW(BM$0BteTZ5HiOwm*hkb?LLwp9 U$20T)(K{3UL{zwU@4Dgu0Q^|qGynhq literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_14b_states.bin.z b/client/resources/hardnested_tables/bitflip_0_14b_states.bin.z deleted file mode 100644 index 60833784006270eb45ac0e29a4550de08e2353d7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5946 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 NJww({;rNNQ-T*HD86*Gz diff --git a/client/resources/hardnested_tables/bitflip_0_14d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_14d_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..adf20a10f0cbf0cde9ab23041273076325325455 GIT binary patch literal 1196 zcmZ>Y%CIzaj8qGbY|cym%~*Z)-_xt1|Ef0!FbGUx5MU5sU}1@1U}9ik^zeAVWzWFC zz`*<hL^2sJYj)t7#jNbh<13Nu%hn)i!sa$hVwS<NS-cEJ89covh9-%<CQ=M37bK-J zk}?izx*TA3T)>gYBh0F*;*_!cRlm;_DSwTm%vr)e{!Li4dQ<$VxF>~rs%=g(&Szzm zRySI?iB$0y{gVIic$0WZYIxH}WgTN<H6M%kRm=D4o%*KDk+gEs5258NLsCN%y-!Sy z)zqAHGHIryzUmXhga<}p9*0gQPOQr^I9kbma{8SOzt6l|Y9A`UG0x+~@|lKS^(hvc z{7wD3mb(UTGLl%H<~noUmA*qSB6;-MOA5<Udkjua=8@kh6XRZ3uq-mMW$rcRW~Fbk z_6IK;-g!|_Zd91wwA*4%jO^rvN86Jn&M)|%-dQW>`6yz~$x8jK^bH$~4!m=7JUHoO z_a>hiseam`7Tr4GTf@DQFC3qEe9sHpXLie<{JD2!&xz08w+hyE9Vq09<vFL_u_MN! zyC=ExXt=m=<A=De`Hb=G4OTCA%w>!0DLM7B@N4~|*4i$P19Ax!n^Z4q6&9R0Gc#3P zFytX0o57}}WId&s6^qqp-YhB8-sE>C{p81j^b@H!WOY*eStmUBSg~nFvf+%4{ge1N ztUp<9!{$Ego8FX{kM{I@&<|N&RC3HPyqMqg=)6N;^(Q{s_t={IMqRh{y6Lh<kABmt zT=Lmj!sxhr=aY*03-8#lsqcJJ-JVpC?sFztXJb3#oS5LwV}9MT)4d+OJZ4l<cxcCw zhm-$)J^sDidXM1E%e$Zb+~Ys<!h=T@s}CIcqF?oW^|Sx$7w@P(tbC!0&A+o`w|>xv zc=yF8f7lAm%YM)kJKec^(Z+P)K8Z~`<h!c*UVZO5Q|sdvQ?B#kG#{Is_VS}uYpR+8 zMU;+2G#!bU(#H^{qQuUip~{e;Bez;V{85?uLA%S3A`X6=eoJHV6HPU(nJPw0<~@o% zlo}S8XtYd0XHBHhW+k_vnV~v~lX-lW7KplgaefL7PcYJ~Ignr<H1&YQszROcro|`K z!Xgb)c6Y2hqOE;UETUN?p=YK+(y0@xFX-u{B%NB*t+QG}|E`{~7}L=yvQs=BoSHE` zRWevJV$;c#GHs({k&)p%!rjV?j{FrA)Z-TAS)+4UOlytL)X-@`krGRtHBKEd+Gwyb z(x+}I<3Yg!Zc(2u1Fili0ilV3M^199g`8RwVVKynjPW<qkyQuy3%v?f6)Z_rEm271 zX`D18HDWiH#v|d@Ni%wMR<lI5Y?xo=C?6zvf$!8Rp01v*iRF$DR^BbwnHI6kTg**O zd+}0Zt5`|NzV6mbM#o}x)~2qU7Ur{NwXxxh$kb_(Gp8Axd9l1?k64)Fg9W=~Z<YyO zRP8#Zqox%6{a0%c`v*;z7n__q?dKm};;Pl(<t21PG$hs2y=&1lrb$P+PE1<=!Ywo) zrMXktNHgU~>cnVeBW<TbQ3)Rp!$~tX3hJzQ7;2>5u*$+IhNsn_P^(Wf!Hs2y)+1)Y zBRv|41sjv5vv_kh1+%fHM66R2co-3w8nI4|v0%fRFjd2rBL@r;#F#ghs|2@la+p1{ G-v9vKIS$zX literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_14d_states.bin.z b/client/resources/hardnested_tables/bitflip_0_14d_states.bin.z deleted file mode 100644 index fd8e92850adc52d215c4b73372e4bb7687a5f0d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12555 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 V|L6BQjK#lw_Fw<VZ%AL8002Kl$BO^} diff --git a/client/resources/hardnested_tables/bitflip_0_14f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_14f_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f61babefa8e76d23efc26e18d7899761604907df GIT binary patch literal 895 zcmZ>Y%CIzaj8qGb?Ehe%!@%ra|Nm>a<L1sUjv@yH1tu^EI505IVEmXM=)fXi$<WZj zz<uKZTRa08@Ff~>HVAXJTxMY4ob1aib0|TWK~0!*83Ti`+AKE9mIG=GK5D`~3=C?% zCOpNQ4L%GreAH$zF!;>Mka#A{FoV%xhOYqw!%UM420<Y%N;6K{@`s%4<#jkYt7oQ> z++?4s;A=~~|0f1b-&NNAGDdw#rT;=Z(dTiWb~ing5DO14oN@GD_}q%=u2$C5d(M4& z=kk%Sd&L{)cD^I^X)zn;*eyIft!Rhw3cWQ&CmyDz-q|JkxZ-%2jQ*7L2fxm5?9cGe zNR`;6{w7XYzt&I8|Hv1)=C?M>L+uSazs*ZCZ132#*Pr>yi@Cx#E%d$@>(p{Si90xb zV!_vS;rtW!i0SXF@_Dj1_0Q=qHml|Z-*sORe^B%H^_h{fL7#QzSN4}|dU8&TM_!@! z^vj4BdPm=}AKRbxusVCMW!%*7yC>d>FgiH>W6krbU(=n+=iU0w_vsk_oV^cSFMKgJ zT9Z0i;=t*>1rO%79&X?C^t6S|!GovDdLB-Capb|#d!MVS`>vF_b8oHfKlyd8d-AG+ zIpWRF()aCMdg`zDmm2ookNr7ynJ;apKDQG+{lT`qu~NMG?>@%I!S|}>nKv(fU{toF zK#pf#VZ2t1R>A6H`<i}CKe8`%dS=;lnRQ1VZ`l#E?$X1HrLlh8la3YbFnU^I;TN<2 zLBC^Y>;KR%Yi!t@HI6)4?y_*=R0AEhkl+<Mt9T|KX*HVLwO>tHO-x74Ewn)OVo_<D zPEgSfJ*GJ#m7*6;t4T(vIn7@*<z)Pf)m(ZHc283&<KfY?)LP8&L3tzJ)5&bgt==0p zol1F_8fkFqP*19bwzAHqBj*+wxfc~!bCwD(EEU#q&n#u$sjjs{Jh)lnZMw$sq=Mj< z(-wYQuloGNx%DJYwmTkfNu2TY(29L~oTk58)iTp7up%`mWZsrgu}O{o9`n_LCrnJ8 z8j^IvTT(TtM>OK7#7s>e9kE0)%}#A@Eip+^$;mv-LZ?D96<e}ACmBT=t(*`MEM_!I zQf<jhHD#@<ZelBaBvfbgoSL|CVWXST#L0q5hnY1a4Q8f#8+x6bDsfs_C@j*=O)yzC zG9k4qby8%<#>UASVF}ZWoDISx&WIWCByCEaVa#<bEXlKHsj;^GkKL0r54E(^H||aV E01}^z)Bpeg literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_14f_states.bin.z b/client/resources/hardnested_tables/bitflip_0_14f_states.bin.z deleted file mode 100644 index f8af0a6f0f73862cd22bed1ba5735f6c0305ddf5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7283 zcmb=p_4aP`q{rL%7%tSLg-5x4+s~$}u+r<l&&_q)T)I>^<^)ge-&wxP)PTcI_2>Kg ze}7-!|1bOee7$n-zrTC`n|<t#|MN(E|Buzj?H}FO`d2ys>fQO``+tT1zqS9z)&I-u z^WQ(ed}&|R`ugpAPu8#bll}kot^b96{q{l95rY3uoL~L@z4ZUD|Bu!GH2-%!_y4E$ z|2O~F|F?Q$%*@NX>iS-<{(tND{qSR_=ic7`_y4{>{r~=K-oBsX`u}b6)BZkR`~Pv> zzgz!r&ENiS`#<yl=Kt4Q{XcK_zx3boe^>W^-T$@z>{pOOUd8{N{eMOM=lb9BAcr2+ zulv}&|Ja}Mub=H#&#zx)_dovcpUba)?tlKD?fU-b|J!Qg=KVMR*WYvh@As|i^Z&j7 zbN}c3&-TyjkI6rt|8xGg<$q`Y?~MOb`RMzf?mz3#?EjYk|Ng)If9rq$|7HJp|Ht^> z^Kbuq8vj52Z~XT^=l|AkJ^%mC|Mb845ctRZpY;FU|HtYd@BeuJNB)0jaM*#I^gQN& z_x^9c?*EDZ4Guoj=l1*lKabP9T>pRa@BMH7_x~y0@cjSV|M%C3pZ`Do<^S6M^MA&F z`#Jsnf8+nFt^QvIx#^Mk{=fMjZ~x!^KmTv~Kkfh5>Pv6!|MU9)ng3_&kLLf&|F`~c zcl_Vg^>5?<yo&#u{r^$;|5x_zzu6gHMb`c=Z2dg{%+L9Mf7;jn-~X%ppS{t)dtZ~< zKG!pRllZTFcK@0G&)=QTu4iCiIQRd}|Ks=nZ~w>6VDNu^$^ZCmKl6`#<$rbm7YN4x zb(jACH2&}O)BAt_@BPof@MPxy>i;wUDF1&I|BrFQe^7AQGcYiyey`vA-~ZoMdj^Kj z|Fu5<=Q{s?@xQD4|3v>kz5mzr`mg%`_g)Y9|A?JI;n|<{zdqZ4djEOi|6O0-|Fma# z^WW<K<of3zw|x8m_W$kw><kC~)ZhQP|IhE5Cm=V-f6f0hy}ncl6wn~M7^2_(&;9bR z@_hZf@_&JUf4-ml$o|~Fzn{*0>_1ok{_EFLiT_uR=>5F@?{oeC$v@}Uu`w`wj(-A5 z*kIiZ3_X_rXZ`)t|NFo2lly=FpZ(~*``?7;_ig^0zukQ4IwJ!EL&E>b*UsDj{+Ivt z$KL<v|Jnblf4u)s_>Vtx|Ihwk@lXEm|5-oxf4u+8{eS-7^?#%PC;u`3_kM2u>;HSN z|9|)2{2wy|0|Uc^_kYr_m}(v82XSC{?W+C%z5ng~fA(|!CwbMn_y0jk5ByXAq+j>@ z|F{2Nx4!s4p&pb86aMx8dHw(C{a^A|>_36L{}}A{t>5dTzfJGkT<f3p_3P97|F-{l zfA!Mq`#-;Z1_d3+9jEvI_`Yx7&-sRu3=F^bKimH)|F3%8$JhTMF1Ydh&*{J4Kl$JN zWBs2UEcCqo+kZxe1ApXS%U{|5jsMmB+Ryzz=YNz3OM-}JAOCLuq;Jo_@T@-c+5czz zSJc0*|LG2jTaeos68>NRx&Jf2(bfMQ+gANO{eR82qVLap>yO!gUH>;5YAeVX1_lNP zk@@rLYii~8JpXxA^8EDAIsZUm4V7f*IQ-fElfBV@1_qWn|9}2V{>je3aNuYEXZzRn z3=C)f3xkq<;Qwp?KlT4vUH`NEKR7%fnjKv3{nz|I_4E3_U?)KYQOUJ-wf|4fuYdQq zZp!uf`#<fjT3`SC{qKL`SN?ysxBvUQbNc_Of8*bOjXuV8zdo$|Px$|jpHSU@VE3!< z^{4;e_`}Q~Q1I{hU-3`;3=9pQ<)7DI`_I5I<G=ch|Fi!u`nUG~Q~96a|3AI|2TIQn zH#D5s^WXp9Q&6&Af9lWuKjL5W|LXrg0m>H;1#|ve{GW_a4;GyF;Aecmf934Zzs(=z ze~KgfR{H$^6ZKF3?EVjqq!pX~Xa5(T^M6IX!9P&I{9FH*`Pu(p_5uH2$zK84@w)yk zSRq5fzd+48u;EZ5<LTe}Pw)TMKVGl+|Iz%9kuS4B5whWb=bvtHA@~JSl6S`c`DLH= z{r|iFlk5NP|GNIi+W!~-OaFg*|405G;r$=wfA9YVPP3r$_-y^r{onr}N~HP!_TInc zer*2!*{2`poUcFf`v13|u5aSgxBZv=_&x4_UbWRZi~6{`|N4t_|IPnVQ}y|Nu)crI zzr9~~RsWaX`G39LzuEtv&aV&6|NpGM^m+X+dr;<hwEe#>IKQm@f2RKF{a@?-eowFe zJOAhYpX+~|{eSlV*7}dD>%XEDkIysyGdS3;es907;NN7+|C{aqFMt0({QtTC?#J%$ zjyqHEkN<$&<NBpPr~mwa=Wpd(eo)$*|M&lo-~U0;`|SVJcmGeD{qNoJ&+%{ce-K># zKjZQKKdb*2{Ve~#ACg@f{(k$v_rC-*aKV(*tdDhi=dYirfAPcizuJGtNALIU+b0H+ z`aS=|{vV*y&iy|)d(Z!Ibp8LuW&hv*v;TShfAs&Z`@iJ>?*AD7ulN5k`;XH9K{3N{ z<NKfGsr5f^pAWZ(2!KptU|?tnyE^~>#Q!_rt1Bn`+xuStEIjAGiq-$k|M?jje%8<Z zx&P1U{y)+Gn}3=AJH0>V)c?=d4It$d0|Uc>&v*U@Ti0FrU)Yzs`qutG=d-lS>+k*e z{_nl@x#xECr+vFxUHkX!y`R_rZLL4>=l-AY`~AP%|EK?5|1a?WD{$I6@NfB#gFofZ z{r~d+k^8@+{9p$_i8l*=eV<?PkNa!=-}C<e>zbb4|NMXHuloD-%l_5=pZ^U>?UC@m z|MGvz&#q@+U^@4I&wnRS0a5Vp@t^a*<U#cc%jf#f@mKbL-4CgL?*8Wo71hiCN`2dZ zr2p6Te@FQnKHEQ!-+z9(TmApdph!9J@BP)SPq)wC{(rvp|6B5)pt$z4e%sIWpY6Y{ z|M&F%uXs>Fwz~eOd?D{w{W=DQB#^z~|7z_%#c%y*`=7nxZ~XK6Pw)SL5(K1O0Ltv| zt^ZH2pAQPp=>LoV_5S~~-tP%0H-L)Ngwucb_ujLA|MUFcbM~w3|L+a{bNuH1_<5H9 zF8&0?KHua0vu>#Vzg7S5eZA5D%jX#w68?4n0kyk8x)~T644=nup8vn_e|^)R-T(Jn z{>!*7|LM={=l_@0hW)Yvh3T96OTT`m-~Yc>ZvXfHH~)hZ(0{J^`#;xzmOuZ0@&9<^ z|K|Uq|G)UZ_W#!U*Y!RBkNw~KIsfne@4xQ<{eKKn&U~8tzh{@*(;whu1u~R@fnh=D z*YEWw_kZ7C`Oo*?;v?_>f|cI*@AB^`sG8ruPwcP!Cs2D!{>=Z0^?yN?d-E@MkoWWd zfZV>|+rRwN|1K47d+)h+-@ZS$|BL<K8&&n!`hML#P|)>&N)z$__pY1&H&$Z?RUCi9 z|E>LhM8EDYI1Mo{{GL<4^MBmGm9y)gLu!r(f6o822L*WY-{xP}|2h8Mod3`8zcD=F zG90kk_dg6z(F$r?l>c*F_DlX^*w*@=^RI@z`?u%g`5(*wZH1MJP|q`TJi7e3fBpI9 z?>74_9{((wcNVG0Wnd_*_~-u5{h2&NL&InL`}H~?_gVZe{FnY0oWGiW?*FO(3Y45C zg4#Oopp`4w?2Z$^?Vs*1`nMGvoM0g|V!_qr@9lqnKEL;V|EFJ{!|TG|e|`U__Wu8- zU;F<(UtVwj@zefI|6lK|J00=x_xV?S|6ke1p}D_eH0RJO=b*(M8n?lx@ALEh*Z;rW z{(t}T@9{rl_g>%s`Fr)_>R<PnwO{|gJ%9eczei60KlN|@_g}inu228%|Mg@2zsFDG ze_sa`c2LtA%CElvKkfg<pX>|@5B{A0t^Wj+L!R58`@iNtBZI+ze}n(#|6Tt^|37X2 z2~>>z1tmwQUOd!+dmzVMypE#e-RD33e@;V6VQ_l}R3PR5<9`+ZxA|B2|4;l4A3;s$ z{Xancn&aK|NA`#Q`E0j(x4nMd*Y*EERqcQO|M%{lU%s^VE2u)B{6FI7^?%p5{(meZ zU%$j`gVMi=^TXfYH~;tgfA9ZK`G3|!I#mDT|AZ&+G+JKzSLS;7|E=HmukV>|y}kbT z|JtAOe}AUu*9)%upKGu4`+W5O<A48b{lC>7-0Aw4|1ZAu-~8HtumAY}U0wgW{`LP^ zuj{|A|95r&FZ2I_|DXN;W`6`!MuFU1-~03ZtLOD$_Wwg_|Ly<vbNSWJ_2>Wdt^*Oj z_t^YT|06HC|M&as`1^nE|J?uC{(1em|2_7{>_6MT_5W@DUwHqI&qv<>6#p4Nv;Hl( zK?H82*Ms_d-|V;lJ-z?m`Ct3r{ha^%f7bl}JO7^t_n7Ygy8j~|rDyoB9UOL`BL4i& zf8zCTzwZCJ{~I{?vd`7m{6D`pX4(IL>fh^c{+IvxJmLKR+yD1R>d*VHfBFCKfA*jE zzxk|x|9|?w@X~+FL2f##U-$d|qwS!s*RS*7BJ|ak`k&YT&-_38f7ks#@IEJ~%f25} zE3W@{wZ88gKf{&Hzy3YudTu}Sv;FVS^}qhre|`U_KIPBe*GGAt|7Un(_%D1`{mlR8 z@6NyekAZ<<&i|YL`}hCP|I5#i@Gt)5zx_F%?{|PY3130I@%_L0&HkO<|4V;*{rCT% z*2xLu|KI-^LpufukWMrM1B2JQ|5g9z{{i(hpZyPg_Fr_~fA_zu>wj+l2ksQUivL%= zej%vA;Be+={MYC8Pwqcg{$Kj~{^xpz8~;oHssBF*O4@J!gSx?>lJ@_;&-FjQ|2zS5 zgZ-=fKlJ~<asf4wz-8;UJO6LL`1^U@|2yyhEdKTRzV*@iIe&jYo%vXP?*DtQU%xi^ zx4JX-)B3;9|Nm3}Z2y;sf#KQy6X1jm$q^F8|4e`Xl>h!;{lxy?|7Sn$FZ-)_et+e^ z{9EZu*Mqti2mYzAonQa$@BLRFtN+jcTMup^umAAV`oH=AkALic{Wtww|9Jn`{(tv> z#sA*^@A!}WKliQwU;AIZ{{P+okV=w4;r`F_E3!lSKsg#>Edv8XRA~MG>3^#K&whUY ziM`jKd*J$`;jjOb_&=bI-Rta&{}um(+SdpF$p5_l|MdQ^_ABb2fV>Z>&$HhD-}Xjd zHvRX!E3aOk28|osU%mAD{?BipgPNEicTBJU_`bIGvwgA=1H-rav!G_P|DQ+Kq0Pt* z=YLNB{r>6vT|dkJL5c#<umCed!%zEb_ABb&%3rbn{Y?I|J){>3cJ`Uazw@8Q*Ma(G ztIqsCTaW0Qf!YEL2mY=9T>o4?Wz~Pd+|b|C|3~INeRp2^e^31@)S?d5deyMA{r}^a zO~v`o-Ny6upWplg3Tv<>3=9kc?a%9<)TjJoWZ<y)|M~B6;`?0;4IO*_2mjN49{(Hc zB$$cFbX4uHf0OP1-}(JlW4(R-)AFxz|Igk3{#Sp+|JU_(zrG9W|JVM#|K98EJ)-;m zuX#u1qIzQG|M{Szx8Y~}RMZ9p#EGB=hB_$yL%3kl=HTc33;wxZTlI_mvHd4dlNBrs z3P!Ve|0n)G1?w6Ir2fDDPu=2w;Qxd_pbqJu_}}bj{(r4s@b9Yq3Q!~E+W%XSCeDLD zi-Z2aOaajsPW}G><o@sf$Ksv;9kqYF`O<YJ@SuqBPjT?j*b7KWF1-K8*ZM2({@?wt z{{L6~>-dk+{}=xUbuT{N|Dj&@*#2AnS8$pIRUEVbch$fDx&OyiXo+P1w|f89{vP{! z^XbQL&imhS{r}s~-8c51%lU8o=>6V*cfXa)Dg3u**I)VPxBl3F{Q2eC{^fD=e*CF^ zUHbi>dC~v)+CS$1Puu@rb?@KV|F6#d|56Xi97ps2M}zZA^#7UvPwoF2Klhvd|6lf? zUc<-P|7ZV)jFCZy<RHc4`HTM;8>+(Y*T+2kqh9<kz5bv7{r~I#&Hdlsv%h@rjE8^Z z8*GpL_xh~=`Tx$}pKr;7`uz64|9|}cf9-!phBN=Q@BW{j`%k*?Z}TtExaIbL;r}ll ztN$7P|0!q)0GeHXzx`kR-w+hCFx+DD_;1X-^%MVJ_*nhV_h0jo`_;9zx**wa_7m&D zgMR)0z}Xwr;r;La_TT-#^`F-N-~LZ@|5wOxl=T1J`bW^QrVa0Z`k(&yY5V;3b%?ex z$h5Vq?EfqOFTU^ZcHmF-e?^cGgT;T(l7H#{!96Og&-Fj2%m3W|j~zV5wsXq==j#)} zjd_sLhUYu~FE9JE;{Rir+eppl_kZt~&pBUfr~7vG_g}we@BIuKDQN)pzW2$0?f-ZF zSNz|_|E_}5R>NQakIkR$=lp;9|7ic8Zj>_bhU3@w_8<R<zxw|R)GA^*z5n@t@2~&& z{rCC%`=32@%mU;LhK}{W{@(v&Zw46~s{G#yDj**GIsSA0SJ1fBe@@hKDe%C^fq(wL zP2bda%7exM<QbmVpW9zIU%&U?zjRQfH2l54I{S3Keg1#@a_FGtn$Q1pKF2?=e-;1t zG^mTY8WfA4>>o+JivPpFaAeN^%Kz&@Ba-{G{#O6vXZXGU-2W%{e}WPOXtWqKh-UEr ze)&KB|8}78-2Tt~FKFO&?g`M)FsMj9Fzt7}^xpb=pXdLcTOU&YuX_29{>}CKZHoUa z{tSwJ*<<yl8@>N+{r~6w|CE2r=Yt02#D9wK{{ibwC!gD&X8-^3zyB;h%m3FG|GBu% z{>e}C^Z$K+ulZ663a1<Ymwf$ve&7FS+q(DvH~)tuAW^&e=l`GC&-?HGe}CG){6E|O zUHl*YKl}f+{}TUu|5rc1|EvD}SLoO-0|Ubo>;ICay{A4Rm%t9IU%mf7ss4Ta=RdRm zxOd+F4K9)p!$h^Zzw9Byt26#9|NjN5+}XeO{{fE>fqd@p_V4{^f0sVaxj#9ow)W@t z|GNLGw|@CmzVGiIP|$(g@k#&R-u3za(tX%K701u@f1*Jn;J?6Wh=Jjo<^Q7pd;bKR z|33$*uMYg259*v6{6GGS{p<R_&A-y`|4IIr4o|oY4V5+j*WxK!L2Zlof0}*1+Amt0 z_5YLo>a}<NRz9Bp(f@BYtW*SrC<qH2UH)7?em?vA%DTd1pP$-*Mkhex5d7%FpZ-7n zXY3gm7@ybg`yT;n#1j~?fM{f35SaMA{#5<bKWL+*Flo?$>1zM`^`D;4uih{J^y~BW zf7ac5egEh0eg9dZLn)7*)~EizUj294#zWudUzPoTwSLbZRQG>aH=1)880eC7km3y+ zbEeGm^Y!ch-_HMEfBrpe0Q&o}?_c(_hh6)>9d!`8>(t-+uOH+89zVVR8_J;e`&IY< z>;6yv%+KI(;OG4B@h3nz<Xrun|B?Th84~`@PxzPrulpCMas32TjQxgW7i{i97HilG vngU$B9(gc`;m-4)@;|3TOKecrlYs#=_9uU3KPb=rdn(`H@sIf@lZiP1`i7-A diff --git a/client/resources/hardnested_tables/bitflip_0_150_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_150_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..612d6295e970cfe30403927daa2b61729c2491c2 GIT binary patch literal 1557 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_150_states.bin.z b/client/resources/hardnested_tables/bitflip_0_150_states.bin.z deleted file mode 100644 index 587807efd07a34d9b961310655b1a786daad8148..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17328 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 Zi{+W1rGCpYXW`pCD!%PMYxuSMWdI{ODY^gv diff --git a/client/resources/hardnested_tables/bitflip_0_154_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_154_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..9efc40fd91b7e3bac99d6a75df7a7f62903e67b9 GIT binary patch literal 3137 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 NmU9X5@&<i+007VqZmR$Q literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_154_states.bin.z b/client/resources/hardnested_tables/bitflip_0_154_states.bin.z deleted file mode 100644 index 56cb4f16815ea57c1aa2536fec0546ff6afb9db2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21125 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 L|DUmXw$v{GmyW<k diff --git a/client/resources/hardnested_tables/bitflip_0_15c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_15c_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..0180aa9014181cb4afb0745471954ee40853da63 GIT binary patch literal 1122 zcmZ>Y%CIzaj8qGboGTo(gCWhkuKtzw?!HqD90xcU6nHom?>fJ!tLp%VfC3Lgg9z6H zu6PDG;7eebX}~bUN0=jl;{dw>gU<{GA2rSv1C|8l84PMZ3~ItGha{K`7|$>Wt1$?3 zHYM^fN-#WQ;GE3B*>cdJjiHA@WXeQe<={+SlOrcgF1|AGHOWZHxsqvHKV_mwyqfU8 zhwg=%agGc}!gpw&3o|r0X4v{nx#59<K@~eYW8=kw9WvUiU--ni4mSPhey0DfM)_3i z@xnWMxL@e6cv#8(TCek!9P3k^_zN2jwtQ~X>zckL;LwcKqE;dYR(3{+JXod@k#w+4 zN3<tQ;%JY-YKg@yYa$FK`nZl-=%`7=$Spo0V_{LSA^9oa)5AjV!cW;ODdB6=7VUUZ z;_mcfR_L9pF>0DW`Xdf6yby7;PFeKOp~KD1d=C%3m~r@wrhkdbyccoJ8w+?MdXn~T zz7QiZ<MTA`JF=$=RG--RiIzwta~T*Ulv&S_k!6zzGt_KTZ@t~_#-7Y4rrKlJWB6IV z;Q#T2GKqN~lPp3$@;E=T7T+YXk9o12(~DjDmN)(#=id3Ks=f1p-qA;utslj&Sm=8k zeJL^ThxIfbiPd7-qOD!?0>AQS>_4%)eaeRQ6>&iiKZ)rl?4Eu|pRxR%e8s!iSoX%` zjqPqS7V$H7i+Aj9?@ZpY;b`+)8T*FtYr$MojtU)8sc+id@ylbQgyKONJw_Rg+U7UP z%^M?DR=IHt3-+k-_!u5cTK8x<S7QAEow%kY2^<d=9GW325pZNin>NFXHQF2em}YG7 z6FI1UM<Te@z#_h)g8iPH;-lD8HII(kaJjEopAy^}%oX7iu_m-zXkO64X4XRon*|Gw zRGts~cP9C<eC8AN340hj^)Dr?x2Snu{8&Hm;)Ojv1r_`Wzx?_R-)8yDK12V&E<M46 zJqbs<<=2Gj9ZXC}YUAc{IhxF4aNuZPM>wYzPry;pq#sO^b|^1QI@)#U(5eH6f|-RD zGc$cZV4$Yhvc}0L;FxI3p$!qsbRyiC7l!O-4B4=vU_qH;_qlM_q|T<KjftJj!puA_ z2}y~D25TG+3(c6Z(J&(6u*AWRBO47QB$`E)n_hS`3p0ysj98|U=)>CC>Eol=E!r$< zsN>D!6D-EVBO$RNf=$9rwP}Vym@;FJYqQ9V2sdGlLr2>rj`6r@b|xep?QU8bdZ9;0 zBVmKLm}twvHld!RV*)Rx9_rdq65-6v6IkMUAW5B_o10slYdSlRVK-O7a%awihg<#F zG<Na$#OQGy7JAq$CeGO^qZII`WRjPD#EL1YN~^R*gBo8SQ2NugQ6M5BRBJ;5Ygdog zF^$z?s$t5^!h$9ne7uf&hq4JJY>0?RN?Ie@aVf&UCpch@j!uMxM7OtK)-qL{2yQVo z2{)dkghPiCBNn#th^cIBZ0tC6P-4c0jV_0Ik`9YWxb`p|6G`mmN$fB<D#qiJw8k*u U$T5liKXy;jJk-+iV%F3H0EIopOaK4? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_15c_states.bin.z b/client/resources/hardnested_tables/bitflip_0_15c_states.bin.z deleted file mode 100644 index 4eb4878537dc330ffcd68716fb77205b5ab255cd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12840 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 A8vp<R diff --git a/client/resources/hardnested_tables/bitflip_0_161_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_161_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..5c12567e4b33c35fb7156599c906ca4aadb25477 GIT binary patch literal 7268 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 KM_}FVy$t}dpnpOD literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_161_states.bin.z b/client/resources/hardnested_tables/bitflip_0_161_states.bin.z deleted file mode 100644 index ef9f67c0928118afcdbcbd9223f78e3e27c7a045..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33424 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 U^ql)&8@z_|+yDRdCLMjt09tKaw*UYD diff --git a/client/resources/hardnested_tables/bitflip_0_163_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_163_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b68ad5995eaa9d79fe86283dd62d9cc5fb27860c GIT binary patch literal 2071 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 Y2lf;`KCt+Bv;KeaB3Fxm3801m09@yu$N&HU literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_163_states.bin.z b/client/resources/hardnested_tables/bitflip_0_163_states.bin.z deleted file mode 100644 index f08b3e0fef9b8172e6433bf5af9e0ed563cf436f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17490 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 diff --git a/client/resources/hardnested_tables/bitflip_0_165_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_165_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..69e051fbf05a89ead34b54cac35931df8479c12a GIT binary patch literal 12956 zcmZ>Y%CIzaj8qGbJb(Pzcc#qSKc-v_xys-e$jHDTz~JD(a)9N5QJtL-Cl?nhL#;`$ zvS@(T4Q37vuZC3`vw1o~w=p_(Eno-;x~;%AOGIQ9V-P1x&(>{$P7OlAktSzXss*i* zYE=z0W>a)@4bWV0L1aOIq5}itWQ7F`3@0Z9FfgQ?5SSF`Wt73gp|)g^(_~*0DK;)o z7td90ZH+JGk1B=#7YSDK=1NkzsQII3)50aIPDCmF<!TRQy{atAvr^qLLZd)1i~Gou z;G=<0Gdx$Ngz=kP6l*%_8<4^qWR$XMR!~IOhDj-|t5g?FKCQ1%t?C-JX!V6}q6gMB zUilWQebb?}Qe&E`XogdQ(-TkCDH=x>U0EU<!p$Vp>bk1&h~|`zl1c3@+%DWJrY+Uw zFqvc$Vxq>(8tyfjDMGbrRY}mnh!v;A0;O6al!WT<O$t(PVl@`x__wL$a@uN1<t)=> zCuW_x*>u%+qjRw1th2^uJx8{#IJxL_$PKlKwF%o!y>!V4wK$u~tuyJ2XKt8}(NU9L z&o!GRTYHRF&XmlQTqJer4A13&(7(COhMSCyH8M812ZlBkt6h$`wj#}pZ_!%ksfj*X z*RF2!xW$>PwMHUY<K)7gX{O#9$0QdWTb;HcbH$mnA(tgit~FiED|I<*<C-l}hHB24 zvlgdK>xoQTbtdQP+H9SOWap5KE4r=A)@+^Zxa!)hDB~!Tlc`H*^p?2wZFOo-S)IAX zcUj7;EUBx4Yi2IWI+V7^I5f?4#kFah&ZI4zY1n46mOEp!Yqr~!(_XVSY`WO9=0b92 z>M|b_T~otFS58Z9oVaqCTh`3BOyx*#ABodG%n@0VO*4|t%sRPZg+Hgq-@mIj$_5I0 z2y=Qgt_at@(>$S4{*KL_nbR9DPR)%Ljxg)tR~ER;c6eoF=CUnUvu>K)*cNrO>qY@z zz@3O|n%g#Jn|2wtuGQ5^TAOj?Sh8uhPj<wn%VBHTk|Smtn_N0_W^?ebT2rONu90D@ zPA)j3IVIJX*DLP8%BNZ>y>bVB*Y~ZLOy)W)Kku<$pub#|Md%NwgFJ=;nv7hBylg_| ztl{UDi1j=wm9}=_B6roO&{Vy?o|zejvkaCgPRWc~bz<M~M;CjX-IiQUJs7{jD5}|O z*`!U2wLht>Q;lT~NYvVJFxG2hn3j=SsFc%hmWLOUE?i35FqtVuB3LwZlDcPbNGcD@ z3HjTh3s?Q>+Op_FqI|Jd^;Fvv^LWIf__HpRx~+Czy(VfEzu=U4iFOyBSbCp!(Pdn5 z?C93)Xx+p$+9oHOA6+xnHER!*UZKnVbYj-k30F2<lVaMmIN(YzXRo(QYJ}UWwXSWe zCmcyy8yb6;hmEb}6}Lz-o2%VX-P@93Yu8407<8X%KJTcg;B#a$FP~eF&(<|r8zVC= zvt=#`wCnb&jk%UCBeP>ir1D$Mj;zx`XH1%3O=H?QDaF|7Y<5^unrZikDYdIk9ZgYI zR++{1LD@5d|5RA7RCoiwhMe%JlanPjPRyG8Hq=OQic!lWHSWORCdDw5i;X=a%B zgH&B@o>@MvDPmk#!jDF*^}6tBvS+5`qj_3KB!U^XWL>#x>Y6emQO#?Un&w2F?gch! zn=akDIpem;Quh;1g$gr0Wf}ZBTvI%HLL8T>ab-kmd$}pL1)bCu_Ap`AO6q9~IV9zH z(7R)jnO3K116wMmq~;PSp39y~PJ}L2y2&*yOqw^Wb8F@#`%{Yq3RM3U*{`n`SjvBh zVQq-Vs#7aPBOF5hXsW!L;y6iY`hP~Dsb581AFUO*a<r{uTFRPD%08lIPAMn7bv#yU zExD2$tvYS#G$EsFQ<DxRi)>tREHrbn+B7Mn6=5Q#!hyaaD;s@1mj$FIT}?5WsqC$A z;A%IksmRgPj<b=POJ+)WU7Tgg=B=6<5gNJT%*sgyy{RT4QcIPERy)r0oMCb_b48lZ z)?CFcSG}WLu5C<e_Vr9Px{`Hj(~)a#raZ@z($40zU78h=adH~3Nz|Inky00omYRk3 z%<N9imfz_9Ej09>lxLmrEU}c!25Fn!t{JPPMy^fPHJx?VXXd2TZr{|XqZhPKzLY;C zx>SDGlD$s*JHlJm-+lX2{Mgj#YCMm{=6oxb=v0|DgKM*m&pdsZb0KvmD_(mRt6F`Q zUE@*d9bnY9bWK>cZjW!oX`>UX*#eFxg(-9W^p4E-xY{<;RAfi5#)+RAubz5)C1tJg zSvYCS1cSAXiAl?xRaQ&%@<d$?TiI+9xpcBx;<O3#lr`cuKY4ii>A79c{bK(8+4^zK zdZ%jro|q}i--w3aS!o}jC$d`0Qm5n4l}uf&tVnf1tA(e!m8MO)WFoOx<*M)txhtnu z8abtUtJsFP2WfV7)pRW1c2=4zS0_5utSvYzWTgfdOP8C%A~8jeQ#q@-d2+*eb<(!v zy5_80%iET^R_)-Li`i^O*LY6l25KuL^r}wSawCnGH+0pdFwOa=zPfwpEsD)Z%NEuR zF>RfZb?NA0!<kWu$$?t}m!&P+k}Iv_GfONxOV`j?G}|j}<&@i@Jy#AcmW<TNxEz|M zvt`GG9d(x$#n|eKZ8_s@64<kH=Bzbm+DwCudN!u{=uQirsWUM*a@nPeSu=X3oaLQj zx@^O>vr-$)e3GR$hRvKcD?8KVbm~dvkak`+i7dCtL2Fv0($aK{GPWcxlnlP*RqOrf zB2VjImpY!ysY&aFw7F)jw4D&2sa4f#$D%8gDE?^5x9W)*7fqLJO(}mr*E?~I<hir6 zO^)q4y*az*v}N+NNt^t%U5|f=4cQ;&x#)`gX@QSwp0*MFIxC(w`}e(j>3nNb`_Wmq zW;~QI%9<5%Q+4W8;U_D9Y96qern5LO{Hgctwy49J%Xl{~%r<sABRWY+D$^iX%x7j= z$ezt&zGl5zhmM9k^-(|CrtBSJnAB_ND;B!6f1)q5Yi79X$~AuO9i0yYr-pG{ihLAh zkd!)Yi|wi?sijjA))@7uE!Mgev8gv|)hvUfYsHqyw2943IveoiP~^-Gi7Ok^BG)dQ zk!IK%DRH$k^rXMQRb?|}HlNd`tDRMSb-E>d*DPC`yR~HHsgk2pjAkU78g@3jMoQEy z4A*i!b!9O#W0#T1tZ6;MuA4<`|Gu6XzGhw86&IEXH&0LgB-h>K@_7#b42e|JNr&}| zo@SahKJ7oSo-J&p)LQu*HqD7uRaeefs+&yHOAkJpSQQh0Sk>x~T!hi-saKtYk7iZu z+A}#xPP6?(#+IzhhDO-|w`x|g{&K&yXp`Vn_YD_}gFUV;(>R(Db#mg8t)5vruBj18 z3yM7BI{LLX>UswlW^I&=GMX_%`>0AmQLmcEiHM$+msWfVtZlmF8<428`uf{s`_9Yl zp63p$ujo@=z;eY=Sb)do&COn8W1X~Zn`MgI!y<NA%@+=QxpWynyVl-*Ekm1?Z^Lg? znqAshwZ7*}q;5#+(ljH}s2P>=I$xd}Yh|4lZrgP%TW9N9<DS%~Z!Mj>*``H(x|S?? z;-_JhQPRQ8r1?r)rmn0yYg)=LDOEjvaq7&C2cKNkm2`HSTJ0|BE46o$-7!ylX4R!j z)^Gf>ORLsz#*V!_J*ocPA|K{^9-lfZHEiRWy%Fl4)@vJwTwEkIjV)=`nYB7=Iu~m$ z^YWjvyyelntf<q|gxOa{%rZ0z^FPIMHN?*I(X7?nUZ*x28Jt!<<trWGzc2i8n7W?d z&b(J=mKBv;U4JxfX5Z3Ta=KBe*E=4resT0kQpFm%8G8*LTO<{(`hKEjvthQ>u^Ar? zyB{S>T<u9#)|N;XfBfS@;;PMRnf5~Qso9Te^csKcDK&k#;>nK3-M73yS=dZ#e7Yi~ z&dM)R=g&OTi+^%Mrp)gQj9cM<l-Y50q-1YIWYnxmCFi5Jq-Oa_DXx~B6|w4~p|aPN zFiGw(Z*SKXp-EY%yi<<3nXF8U%t(%mIBgmnwXvDkbY;ZhsMQgvJqFj#RJyukq?}po z?7`E_le%)+#9*#eWmkz_l_O!BuC;AQTHCVn$cr|wHEo&`tUMzpr<~eoa4R${v}wyx z16{S5k{QjXri$MZ&0_9axJZiYRK&_jzddY})@T&UtTYNeH9170XR%<jv#!t9fFq{f zqKlHIH*Gk{*0pKrvfiwz%NBNXT{}BttLd^WM!q2%E_P-ti%Lv7Wwf<(g^|%&l^Zh+ zqt<RQ$u`<-mS!|j;G~K#!wQ>rmHqwQVJa0JDH1bM6D;OPa7|h>>&)YrtV6HEl0NxO zdKsmj+RZ%6+xxavY@{)p5zm&b#=5HC=4(4T8|YXj9yIVY7CP|U=H#4RMY-B5;(Veq zr)_nK<5XkVqyJ<zo8VeD$&k}3CoX0t9c?<0rgQ3MX4ciTWVfty4eLW@%>DlL_Tt<A z=iS<;-@bja>Ra~2%k0M|{fU}qR9m}ep8s0@&WW?0hx==MI(m7@OM|_}VsUYyh5B2U ze5!bSnAhmov}MXqMIN~P^KksdaH3sfgHiiTiDe>}bVEv-PqDckQqy&IcA4&A=y}Q~ zIOHj}tIUF{A;%0hNX%M&L`HL!T96Ibk)Ka|*7r)C_)rrWw?;pF%}%+y>LIm(r**UW z93Mz(Yu0!jb&pytEZAdr=%kfcYp!&_F`uX{$pI&mqSSacEnCLc%d4|E)OY2FR@*Kc zr5UppHazRresbFG)XTMonTu~!^Q@KIF;A~&>nYI>lUgs9T$ncX%!_AR!!~VJH89oR zc_LDcbIHu$lS@+!3=@|vTsbxA)Rjwdim9>Ms?DlXmvvn^wxy_EU$Q?qt)^t2x5edk zX%TTcy&0$dm1Xuseb`Z%J?B&L+zmn=Ny&OoAF2q=EM0Q?v|iMS{sZ4#mn}C8OFQ&x ztKQL+rH6upU#0Dve)RRVQp;7pW=dtwTo?LwiA|Jql=G8Je>HZUUD;8k=eo{xznR9) z(y~#;K-=Kb7A;RBzrGmlS*dDm5y`4ceygsE^GsQ5nw8ilRw+~`SgEdh<<hP?m69yc zD91%Js(wUm{W<IAVxF0|e=8n%qG(jck(thNc;(~AlOxjK2YwFU@y^`rTUv`iNMU<Z zW#)vL3tFG0?b#<)TD#-B^3}B&)r)QCCPyY`U0ZcnS?BLhQ%j>Ghb7||9-Mkan2%?M z2GhEmvsBcY^a>;&d+eLg)^lxN;KN6MFTS_jYQEyz@0~N2UElcjd7E$QH>p`at~}l{ z--p|G%QWr>!7NE(Qp>ddnp~6Yj#{j<uYLVVqu<8SQ5O$ByeD%l_-9+>dGVU{>^?TL zYLZVKO$%SY*1!K$b>jD}%k`V~>G;Y|vQQWHdb%!ZS<;!Wtolp3F35yhXln)EV*SRl zDda%t(TRzHN1_^6Can4taMILkEz7lF*GOJX6E>w?L31|fYHLaq@@k}-gsaY6B#~+C ze4<|cQQdx-KT(ITKJ88VYxM2Nj6KPgCtQyAPnwbVz^3rP=NL=V>{CDcBHM4OzZGU? z-}m$6msM?@Jqbo9ihNjXGWgd|?(^Af+%QRw$y*?~fy?inpLKMcg2iXK4>ER2imGbL z{W}+&yQA;g-+s_$&WCE-n2*=_le6`gReU{dTfTeyl_dZ7tN}SQ*4chYD_*Q=^mbOm z!S^xc4}R>J+}ZSFzfQaDoZQO3in|NHT#;&XIhCQdu;rBa(XXa$;gf8F<y(KTAD*#; z%d*9gab}<UTAPo@lRoT|iTyTTXV34jQ}X*#`PKJ`?upet{QR8y><^#hY<AxL^t`X; z<Js@`Z!8e1W7^NAGV7w+T5i**joOl4x&hhTI;X=<`<xB!W;=7<t6gtv)-=;qt2`Aa zF$qnW7CCX51k;qH2$iNZLC&^RH7A{=Nj{5%qIH%@CT48nnYq^E;-rXK(M~zJUKumC z+`8BtwK?jvSmI`ht414>CAYav*_diF>)MQ~%cRwGO-@|x+Op<s+UiDit~p*;E-Oo$ zOk0zyx;b^D8xQv+ZLRQZo!p+Z%}Tqt=BM(UHoNRAy5iJUgK3jRGLEWdha~wrdu2QJ zxHWTScIN72%nD=MG%Gc1)}mPpbSEZm+;Y;b&CO_)$;^~fDVaTuX}mtiW@bk*T=kkY z<xm@kp_I}ol}yECS1BXi)`=6c4*IURIO()#ca*`*sa;tasfp9Pu0*+=UD)e3*>jq= z8e3#!qrt`0j5BRBdU~BDq?S#crP-@CncJu9(puB0%X*VmM>$7zCaBGtblE6b*VJIm zjFc<04z4;mEh;&};99Skc4U}NQqC5$sj1T<(l#xNT;?OWT5Pq%+Q=CJ{J;87-sLOj zS{L$g<(1rX8)dFtoTYX(nRRzd*|e?dS+PmGId9EPF^tVS?7A#%>Z~(MS57>$dq?c# zE%H}N>|A~RYc8L*vMSSeW><dCqyP5LxqdzWVSo4T;xfDHUjqMH{1?g3YDlr4oqsuU z@{h@)^(#YaI>a}K9t>UTW$3!h!>F6<&{a2AH_vH`&1|b=UA4WY)K@ueQaPy}Fs(b# zSL0PzN)+4FM~f_63^lfD>T2@3Y+=oabWHUUpEQ}rZPpUWv_zxS8DU{cH$-y7*34{^ zOl!HSyC~zBVPvw@vaBeH$VIm#Qc@F>c}}GqmN@2S8YVc|<JhXBE4!smY|OaKvvp+} zx6c-{t!pB(uBDk6>9*;vx*R#{SX7$ivaOSuZUr9<y>yXn+N8Bn8xDt@W%DueTsCu7 zW>02zWLnmSGbbJX&X>~Gohi8}bKX_=&WWqF;wKzcXF1q5%jnd}6`5K+ike@&+PV~5 zc|y5%&I)Xs8pgE7ZM9n%>srO$z_uAzPV3A{o5pkF%CR$=%CC-vNjXl9>Xw=j8tH1H zaduYFS$_@xjp8dhm$*3`RrAf*<g2yhqo??Wg;RuEB^I`>7RhS8X`~Y}Z%WjX#Xlhf zcRF1PhuP*P)wo=bzse98z{nuNAj0Cna)9T7iQG>Ij|l-xT};0YFfc8eG=*WU$y5(P z57XHUJPrXIE7A^#Fs#jB$Y5Z0U|?Apa_j)p6ov`6J)NU6S4Vj<2XQAbZd<TGV{7l$ zkOqbY&QeJRy#@>n$v$p^%NQ7VGCK~L9AIE*nKH%H)`8i9m*vWo$u5ht7~~c^zG78b zq@v<BfpPIA`%9DbPjbz0N%B>Z;;Pq3_T&kTa_#DW=TO92vgin#Yw$|96*4QlwWd#4 zp|2#zGiBB?r%RuGy0QW%8o0G)sD*LqbQ*=me<<QA6gd@olY5f)ZGNw~7e7Qpk|w-< z;y=k>Yx0!X(B}d#YQlpaJvlgieWy$5$32Dnil6W2m>76UBvX-RiMFQTs|8(IDr;B` zl-5o0Y_JNMa%pMFL?hN1Pj=T(lhEKPVTu`w6WJE=23+b{uw$xGNXpa+lOBaGxS}>G zVoIWBik8AFN3pO)UiRnC3P<s#dd~2=oVHr3bE6sSnzd=J+XPojOg7Fm%MD%Hb>>X6 zS>#f)#bUv_!A6U9dag>R@}3eYYAKv`%59eCT2C{nSw=^Vq`D*1jJYLJ)e=r?oekPL z*(kC%XzITr$&Q<wBQ=+%L@v7;c$C?xSZ&KS(^b8jrG=+@FL&$Zb`I5%*0>dM>vrT+ z-nJxeUT$B7RKsLuwaGfGCB;@H^IS}JPTOK~absFq$T7pVjcX+ndvYSqWUZA9oOLo< z>cq9sZtY;-1f*fVtKO+5SEr?1+L&gPbS>$0V6W84sF!M*$9hgpnx154y42{%X4PPy zh>KC1+A@WubWTV5oSd0v9F*ph+B0o&Vp?vnB-<>rWl<qlTNk^n>B%tMnA$6u>XVhM zIaw#`nA>8Xo{MRc3yisr=_E^rrb&jSs6}iJU8}RCvtmj2-@ok{;j<%VWG?idCHK>h ziG5N=jl#E|fA^QqPhUT4eb(wHcI~&16vc^u(O%qq+Qc~0uyt$3p=-R8>-W?>zb{mq zwbp0F)n<dA-fx%9oR;R3t7B#ycG+yJwB}LqfaDpMZe7@RZRW}~*EEiaZP{wrbWKv? zOxoIH$u%>R-PVTAxTbdI%%)7!-mLr&_WQJEMmak(i-pcmYj(MsB)+9%?}|ua?<?}x zpZ=|k+jNXA^8WSn&(FuM`>blW@80vS^~b`DP8*9H);hVe;<mrm(MOxPSL|4<b2!sP z@zk^>o0hw~>1<k))+4N%VX$G1`YZcvH={6}$vQ>Ke-l#O0#aQk8mwHp=<lT|N8J@t z*#dc%tteXU+BI#`rWJ>lUs%pJwQ*tVlp}4dnIRW-Jq%}bl{g*Q7`jq)V)%QhwQAwF zc$q$}3HTEsx9X}mx2isy>yZtowiM<{tkieb3f~ylTGB7IQmUDEOXQl%CTEt;xav_O zbu4k&g{R`2;i2J&Lk)X+e2pc8q*Pmz!X{=NoT|&ybu!XTXBS)71rujpwZK%VDX%76 zIjy#qb?TIj3mf)%%HFzlH95_2#-ljJ%F1O@YqJe!<!muYHM+L3ZL!bVh-_U!*LTaD zUp?Dw@!;vvLnq|}O+%+e`kWTpw<@7|)?~+7V%brfg$-xy*V=ciYnf~7luVBkS3M`S zPt^8I75=2{7AfAr-T@ja?3UQL)I|MKw`$meOA8P6YEGK`u-Eg%gVfF`2Uq+IU6PV? zaMIPlrdh%qKY4lFw2$g67M!PiG)i&Gtd1>NS2Imk985YXHfd8^fRom#WubCP3XRJ; znwA9yespzr(YUhIV#&$_T~VEiEvwcFW{ED!@|hSRwU*mcr^oA}wpPlt#;K-^Q^Et5 z2YSpF+z`?ok*mnNIAW5v%ZAXdt;wpbtD3b#a(Np=PPT12IyE<1YGdg9A6kr!+7A{w z{0?fF#mbVYuy7)4@SU!952e+iuAV=&IwrnU3O+SM>*VCXF3n}m5>r!GwQl8{ED~|b zX``yC#I=*DOOA!|Y+V|$A>xuwmSNY%$-F*WGDCDcGTod~Ln4{3hV{B699?xH(?~m5 zYfVp9#?p>R-AJj+fsx#*ElJnHIJ=HUhD}IQ%ZONYH0sC|ffK451y`)vwAyI0L1x!w zmoqc7Zn>QnI5TClsj0wajZHJNOj9G1vX!NHj-{lX&Ef4zTI}YtY0ah?nQKm_siu16 ziW#Np_O7XOu@4CSw*T-{?as5@*+$8RX-ZO@%M_JDJ7*|NQc{yNcDb3XcH>N1&)KO* zrdt<ipL`Yk!80@Xy;5AK{vq$9q2J@y&)6pw-6vt(6J<Al?Vj3n!;Uu3%!cX4kFqNE z6t4fcUR3_rRM||ul;v@cw|4S#cCA_3IaBAFnW51!V@ai>Q#Q?N?Ygi()L3%CF`d+e zcBK<h;aBu5L#HGq9XaX~wo2uwDeJ^eqo|NI30WJnL!*2or=0bfkrtV>@R7mdYc-aI zAI}xfDLlWYe*62=pU%pA+Vvlk74-k6V4t$`U#qxQGuIB2rJ06Ni-od`^b`wZRz-*= zt>xxik{C5<Z}X+7NxA}S*+QklS2ZPQPSu*vqWS9P;uN<FS8gr4a5G}<wuRfwqS?$Q z8*bdVbXHHQ+2Ww2OE*kr=a?97j+}DK>!#QiGs$UNW(ym;t_?F>BiXsdn5)}qtLsvO z-e{gvN4rjL<2sW3<GXKYQNSziX<}<5Gcpq;r}~=eT%EQ|SK?aIWzT8dDciiZq-C5n z%h?vOHtdE@cBXDb#Hnaq6P;9(*;yNBWTs^tlj_;D>C{<YlcEJX`ZE6sdhJ=hHA`|? z7SAcMsL+|o5?9ia(tI|pxi~Xfu+8V#8ELV}QOiPR`zEJGL_|rfT(df3wb9wIoQtd3 zPWEK34vk97%sRW|vhH-J-XNJMp0#0Yy#XiGqONV(a<Q{5QgKnWmj0^!YLlc~fBst) z?73zeuf|8NEMb><Csw~&u-9pQm*P^fDf5>E-+Z^?XjhU$Vx#%?RHoKRjQ@KI@AgXE zn9%0uAzOCkZ{xu`6^4wqCQlRgo8OPCRJyW0FtO+_=gIKzJ#H&k$=^zp6Py&jSm{%e zo`h+Q_3kCpHyxE1%iLt}YPB{GPeiU((n0lu`me-8)^i80NLlr->Fd>Lshx|RbECYC z4Q@7MEDl`kxu_@7DA`o&<4hC74HpbHhFUBO{A9FgnU3egR+CiSVBz5KgK7&Krxa{8 zT~%Z=W%5C_C8i+>8y~Hel!!=O8@|#vjN5UA$rc?kwbfdOIj0FFPFt3-;qZb(mnAl9 z+D3&Y8@osxI@+^w?TTZPJ;^#fSyux}Ri8+O8fQsLq#2uRND=e#mQ=eIEV=Et(5~eY zTeLN&E=f7Y6V-L%@I$62lS(pGCr()_nzA7)GOFuTZpQriGtY*vu{1GcWHB>%^8Hu) ziMNjq{W5HPtg|6)u}<}JwXnp>)Njp4u4Za3n|^hnLB#Ua*Op}#^`%A>TU2bCce(pp z*5X;K_9Ps$jB#A~Xv2qBAI!8q82nwMvo&*uQCf56N0I5@yneMxEK2geX`qvlWST6J zu~lqSN~W&Ure!T#)|d*)2+2(ie6mJab*Y<fFtfIfj%3iMjydZVPF!KC+1T=8(MOfq zg^9cZS9G<%|IdECTIc@OO&1TZpUi#oxlZL~o8&X9w<S(?h{=@%9ady<<Yo~LOP(%c zWpwal(fnYq?~<7rN7uxu2Uf*trtHza^jG!KwS$vy)fgKZng&h_mN?k0CKvqJHu9LU z$kjG=ooB{|)6$H4GCo!HEwwN*jm$nBInD4?&5T}2qpiVelYTk}BvqYBZmG<Ytd#4E ziB?NaJy~g>D;YSg@l8x(>hvw`PZInuCT+@C{iZhD)qmw>?beqG$231A+VC$tKDF0S zH#xFuL;oF{HOE#iRx&hY+bWhOX>dwsEw72oPu53sy3cw?792|YvW#a#md^YZVUN&{ z;Z3Jf4NXjEtmZYD%Q|&)$ljlJxu!8i#l3ga+)6By?VU}|TC6$sA+@LQkww-ogO3Rx zBWw+;5|0%ec`Uxq`LSfT;f!N8K1n|!4ol5AW@NOn&9KhiXIiAr$yxoU#IG7Zs*&~j z6KApcuyX5h8C#b>F>z|E_H5<pKkhuu+g`o5q;9rK$o!5)dxhptWLvmeDs0oSU^kyV zBB7PB35R{BTwK)_apuycu!*fYJqx=-W*lq_R^s)RQn?kiRcDKGWNNe2sbi5{*<l8W z%Qmb@TpK!T%ds`4o8=q=E*zc38y2*hvCZh@w5DY)hkAnyB?B9yPDe={?6|dJdC*g4 z50jpi6IM5drQ9@H<6|~4j5j28#TK!p)7qjKA8^$w7<xUL8a1(LmY8Q&+$rrt%t|uh zibmQKW~w$WIB;-buTR#(r3SNBd!>X=ikh{=L`qm^%^{<sQHGLRw|0A*rb&cpC5Luq zNG1!5O`N)>hmB`*pxI(KZS7oM$r+n9I#rbvCwa^YV5#{2uWtYTBX*klyMC((Cb@UC zId-;%F?SxEwq%-+l7Sy*ir%3(!!?$Ao|m@xofcy^@|nMEr^S^s5{EXOoNRPr|D+!# zIh!@7>+HB@ICExJ>Gi0Y$Nh8{UUlzQi%K?Gr7y}kVdazkTc(ADrUmON_V7q8(=ob` z7?wCAC$VR<(bXBrOP#(f4!mDqfBx~EFSW_vUtFoITc0m{eOW=_)Q?a0XRG(v?b~Bx zw`m{GnsY^uPgGoadgM{2ZDgBGWw_vPBO9B-hiyj3bY{pa^@+HD30n2<1lxoXvBh3- zo+;B<msm`F#I~x$<>Z8et?nMYoF!r*C!TaWyy6Mjnsw-^#2S6Box(vq8lOZvugZ&l zTpYEY{pi$JhrU*wp7{32Q~89a(>C)pJ_=KvYA1B5Jz}jJo58P@Q;L>N%#~K`F-%=7 z)wZ%TRl?}fOaqgQ%v7n6Tk};qU)5Y?-?ZYy38V0yW%@knS7Xvl4ciyKNIHC7`RHNE z6YfV<g{M57sup_Y#p{S{$t96)OF!$aG!<i=64iY);nbR*h%JdGTh{ul^%3uw<)^kd z;8IrVl%%UOWBso_HvHHB_*Lc1A201f4o{nFaZCa{_82~~FUI)5L(6%^C(o4~@>cBZ z*?YZhTF{L-Co>=W&0MkiyMDozlh>T1Zp<;VR@T%LnKeJy^vj+f#+R+;T=}*}Ds$#s zexIq8Mxis>Ph6Vk!xvd{ZOiMqqBF%WY_KuOI`c7UZR&<wVrxzt?J9MTObL@r?3p(C zMO62J4N+NF4)f@I6s=d-<Grddspy|qOr$_c=!8xC{iokdwvM=UaN4@v`vV`Aq~7pk z=hgYnm-xiOR>HHPKWF*bxW_y0+`c)>uy^xue%^|lQ)g~%sW@|9UUa(L-MB6D)@D23 zm3;GB>a=v&mNiC3=kK3v=h;+rZu;fJ;L%43ji}v88PhbBp7ZS~)4pSL^J?}}IXV4% z{T0uy+*^G6-Ls<`%=Y%@+Zbj0CwtrJ#KungZlG&+Dr)7YRZ$KXW=ZNgf1kGDOw?7$ z)OX>_FGZDaEuEF-+-gzIrpEfy!PD~Tz2?cw<b3TUK5dMg`tp77!>|5ft3Rj3+G+eW ziHu)j8F=JW$+;O(SFY{#4BC6dVDXCSjtj+CvcBu|RZI=l^9?!F?qw)Cae|zuj+mxT z#~CSMuT7#I3Cq2fUUtchP}bAB8rtky6gi8TS1qGr{ly>l`N!>fKL7m_FMiB8_($ru zlWXqnydEn#<Lh@m!$)5qA9+^vaN3^rGoH?<Q>j-pG<<(QrZ#t5wCS9Or}=qK%h~OD zdOp3MZ*6wW#`pei_SV;IYNr0(^8Nhg<FjskaX#Ks`QTH9i-UuYySz@|_43wdc{Me1 z^K9bgt*dyw`r<PA3GQ+d$%iY;esBs^p9Kv>+I*R8aj~Vd?5uP1c|Ge#RWiqWuKkQR z=a)NYw&%D_-l<=iVa_b4vXmXCCg`_coS9kaee7DD{_4l4&70GE`cluFLySXywKMws zYFo~}UstMazuexNZyG1J$I#}!_=LxEa$g>o_<Bsgecr3C1)`r6KZ`9@+v2&}>5Sn@ zsZCCqsxvnvM{e!yNlTn@v2p9#DzBJgNuJHR+YEbBS8ljEE$QYmx2wiFnLTH`4QCmL zNv+CMTR16N!r+)#n`2v=$7#hZ!yM=2Ot*<Emz|X`otBo`ZFI9I%P{Gfac<beq*DoJ zj+q>b=9S8vbS!l0%$e<)nkSY!9G&JIcFnUlTIJTQoY0IJ>|EL!jjIwTDRF2ub!l`x za{AUBm7TM3)r>VdhReEgd6u<YT;VLaQAf3Ft5}3-iqRTjsl{12+ayk;8mu{$taaLD z*(%m8%cP}!revffb4eJs1uOextuhvq>`68j)LGT-l;SMv9k@!HYifqbEwvdT7hBVU zof%ha%+?MIGsrl`t97l{wOi}rWL?pwD`vT2Mh2NiSB;W3ojSA1=*Y>%reV<0$jOne ztGR_edjn3U&WgA=Gw96J8QiLF(7{MkZEv1gZJV}iN}V?28jtB>*RE^YVn${WW=lbX zkz0H=OQfc)nHh03IqIlGo$!;_Q%mnmD%DfqNGNJeHd?3D(3uf-vN!1NrMXLISO>kj zSR7a;b7kh%n7iGc(>5y`8|fHX_PtxY;m!1))14ov)gRjO;i|r`=4M0R7d`rae<jB2 z{a62X#J$Y^PWg-<RogGRzqt5j{z5nIx7+@9>qgmL$qKHoQv9T~^395v1zWh*DrQ~b zWnHmlEgP3aPi7d8l;efaj3w*uG8(8h#xPyD=(ey_YnGa3!iSK#UdoI<f<{ZjLS}N! z6k9TlmHUL)YK_Y*h!M#pMoDK3P8%)u%Hj1nldL+;uydxanzo^tj*-!Zjcut$i9N~6 zl3|XM6?>*h8k{zD^NBdxbL6b%GK1Xgh)q{#&bXTDJI%M-=gc*eW2rN)C0+7ewO*so zr!_agDAVh3m_$-q=wx0m!=5wA5=UnpOIxjTR#f|Ee1y){8OF>$UqdU5HXZdpk-`_6 zbXp==o7Y)u!j%sHr6HzX&O%a?rj)K}UAbhY!%4%*!9r<X#{%07C+nmfOFB4PYR1h~ zTJm9rshv^Up@x$c)-<Im&Nfw@H7`g$&_B!L2rt(Ksm;ocT`eCL`e!OG4S3O}wIyoH zWKX@5D>iUnS(zm=|Ibm@l$pNiF?RnInA?AT6ppPAVRUt1VF+Ld5M&T$Fm6cr{XjMR ztjZE6qg5v|R<*8*y0x%rS+h%b!Ud@ej=&7fg&`SNw9`apX7#$697&W)U|={lqet0? zfkEQ3U`u8L1H;Ny0X?28zA{{p>rh*&l%*lbV8VQb%S*}0DT{Hzg^PbCc|V$PHE69N z*OB=#H>NgrCGGF>JS05DROOPoQmVUFv*MKnyZCNRxx6)EwODh=QNvbUtwi<j7LG^5 zI-WUC<Trg_bM*ylDqr04trwo^g_civ^5sdvju}QDUo9&7y6fTI$M<bLR?Kl&!?i3( zN2Oe$JJhwSS3{3!hW3<6S>03BoaS`MXl!&nlw|7T95hR3){3XXA+vM>ig<a2Lk_K( z*r>JYsjHeHYy4ZaTw$qe$to<7D>6c7E2bQs>}}H1xvXu2$?8I_J|UTDQn$r!Zu_}u z>TD&hv?!I%jbe#GX2sHC78~6)Oi!-LxUz9m&aB9uu(YIQJz+Ce>#WI)7CN-;%Ct#Q z*F0yYspwAjP4?L2D>`ZCR_9r!D??)rZR0v~##86&YR+hH)h6FXnSz<AxoM|TP1R0D z&hWeB`SXAM(%6LcX2){Vw&vW*b^dki>AY8#lCd*$;|zcPtzZ86{^|1ze(al7JEwl> z?M-K*N?WH*RCe8Jf2RC=-fZKGDyPfxUA*&V$Q;|;vDkAFr=Y@=lS?&KRZa>_tVzBz zTkP6RooPvDGkd*0tePjRX48M$KL7T*)d%J+oY<~qF)J!-Q;q*JpF2(ar>=;MnC7c= zEci{Rq+YO_#KlvYsk&}%aw0oJPo2t~7@^~=teKk`E);PwDT@2qOn;H90pFGdmFAiq zmA%B*#_c&N%xI6{TCG?y*C+3anioZyZn<@qXTq1K65dnweXbl`xJ^+qk>%PPlZ%TZ zI#Sduj3ZNA&L%r^{0g~q>AK*Jx3_(lt&P@FK4oHXWsgMYsqI(wmA#^TW}5I^HF4Kk zmZ_iYc_DW7q*DJCVUsq^kXdn9u&U_Ewy3Mq7prBv8Eu)F@^!jT^2S)V&`i^)iwQ@k zdB?gJYswv2uC#E$94&E<DW_DfI&I1H*<^4rY39lVgNrGrE?imXTHv+pg2=5~9@|>o ze6)=X(>%=<tc|+1Ic($n524CRaa}9Ir!+;ftjy||x`HcCGw_7MzBP-cGYS0&a#df{ z^eS_8XjoQm;0%Y8Vv(&GB9pu&H|1PhBW5hL;>fWHr+ExhF6M^0`P{nYl*^Qo(re-) z8PT|)C)8-osWe_@6J5nc8CzW5@k^Y2y|uT-<ErkOSy6NPEO&;M*-cy;U)8txMXC6y zAAjG;{<p5qy`Q1GGMA@AZNuU4OE<R|`-Gm_B;QfAddjgiDXA&K!7i6W+nSE4MJPXC zXY*X<*}r<bze`_zwq*XG8TUnh(yE7|eY&dCe0jop)iq<-nNCH`*fL8>O8?59lx~HT zl$mm&+5u}O+G@<pkjmLKYtuHvSsP8w)`Xp%WYV*A>7-*~Vn)IyI$PXYKD{d3cHHcC z=aR`v2X#)G3T5W5+}7!JSy9^Kq?FsW*{WMSJy*uu<~?a~`HzV6mdd1?$|f^ss`#pO zO!C&0%A7fKa;UMG#GMr<W7O7q2W>X?oweno%a2+^ZPvG+LnAU`HP))Fyd(OM`-u9Y zsFmICR-gK~aO2U!_U|+PN?wb7FMsgzKDnr*`p-YkeTl5tJb&-W_#>wc>fXpk@Jq&~ zT2wvgmz29K({t8$;Y{UQ`ZwlG-etNfecRoNNxCUn4ciWx_*^x1yzQ1`tYL9{v(D_0 zliiY$ZD0A^cw(}Xw}^|FiY>`Hr>!&F^SV)Vq?FSwA=AaF8gr(Zhi<!+c2UVi>#5$E zmCK@1H$<H(<ar!1Yg<&Zex|yRy4u7xpHu6Xmm3$)-(Fd^@8{v2GqW=@wk^ERr@3w7 z>qKFz@7s1*uAFmc-OTbs+q`=dkL!7N+s)?rv`YW3euj>-!iTGo(;_pDg)R;{vbfXv zsPh_Kqcw>uXPhisQg}LS*=n90%v+{ExT<4ne*bs8_+weVxU*JoI?a713R_I}d1mfu z5@k^|_tln{AAT>dsa~ubX1eS9aha6Ib8g+9e0<`m7-OBdE!o<qgXP{llCtTET6kLA zUH74UTDF``!LFp*jU`_m*o*fvr=6O|9>cRY%(OQ?)Vr&_>z!`9;QZj1n`dq3-}iQo zbZqXNmuur{vJZW;eN!!ZbI+Q2%jRl6o_g88M5t=2{!;Y~$E>ER$0kSRs;+jN9Ac~- zwak%|r*rDeCEa2-m370?woXg;ay+(Ls&(efWl3tvYN3fsQ`RIKYx(I3cBb?N8l6^6 zHL(uq*Hr5~s5Y6gZOy*c*j7V5K4syKOB=4X8Ae4)92QSq>)NJsDoxBZDRZgPp`57A z(W<$VJ#$>QUAY#KyUXT(-G4dv)+rxaCR$EXJ@V-5;}R(+wRba>RoAXLuXig;cyg<6 z;c?5;&69Rrmb#+urL*F$@e7qxH+3?Nyi{)84qFnc&f9zC*71J3nzB7I<;9lwdrv%j zeNIj+TzZYK$=&Rj)A6%D&)Fuo^oaJisqXK%RS&I=^xK%V#@9`|<wZKP$<|DFm6_U& ztMx(-JxGm8$y?fSYNmB$&5P96!RsSFPVW|vSr_;z#>`UPS(#sOmBnSZcx9Phv1sM6 zuwJRuWL~+J-OD|76O(pUUGKV`cK7<!*)o+oHQy|Z4Lo}A*ktjGD>iM>S!|V>m2q^N z)6M7-&N&`4?b)YKt1`cMEX|-MHO;E<I$LbAPU@UeS)=tQXU%Hf$n(46W%tdAJ?X8- z)O+Nv*`2%=c5Jcs)55Y%8|Mc6WvMiqAe_4}_wEZ9B|E!oF){BW=f3VKy;gNB^|9=n zypw8=Jh%A$(kYv^<F4$STI0*>Y)$r>NZKlECY(8Z<i~ukqX&=Qv6~XEWa1a_#Du@0 z_K1<8yUtZVx2|iNmkd`#tev(hb<q=X8Ht&xWk0`t+;6`<KEJl~%-fmAcDyeAG=FLG z`OEib8$UjF&+u{O@%vNHM?Kwm?CX2K*!kRjcebv!n09=fno!EUxK(-c<7M*99{s#u zR(bxy0`|M%+LE(wbDawHn&fT$M&_}rW>&D~rYTDzw{FbN*{1Dw%}r_3B-II#VT(eP z=G;h~x#OnUWXBUd!Lx4VdLHtAA#~f<bm_EJyc1R~OKH<pyK*}<;$(Kv49{h0E3(sW zt<0D>S?JViUhaS>l^n^bl4+;1qjQzEOf=S=wlQ^*QKVR+$)&W`t)|A>T(?tl+_r7$ z@R;N)<dicrZQGJdx1zoHf7so5>fGIvHlx@#DdbMHsc*K^g_^k=?kCUB|NUydecb+< z+Hd!LDihPbO|mv?+xyM<Q1_wk#>jxg9G)4QE?o4PxpdM4DW!jtdbBl9x@DTgD2Gj5 z*JQz&wAdwT(w5$kh>gKPo;Nl&MO?ZqC@FR;XR^xHZA-R#YwK(?TX-W}+2eNZve{{$ z_-0siCCumy^0?F-s#(#J>5{6mRP(?!F{LBdW@Y)LC9d*(Y^rN2DXe9(>XjUOrj9qa n$l0DXnk8Nz0~hSn7S^2dWXtlbwH*JC-kInpqN3v{nc@HdrIbbC literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_165_states.bin.z b/client/resources/hardnested_tables/bitflip_0_165_states.bin.z deleted file mode 100644 index 9e846f209..000000000 --- a/client/resources/hardnested_tables/bitflip_0_165_states.bin.z +++ /dev/null @@ -1,31 +0,0 @@ -x흍젮H+UtHhe @( G{fg21?wNw^~i9\޾ݲ~yw~~?,G5m4o-Kyi>߻/0/gyOu76vog}r/K~_?c~S׏S]~Kˏi]nK?,ztY~^]G~}GkVgGC_eE? >oĿ>wo~_94>#,#_ο6߾~?bRkZm'??Ϻ?vRWV'_B??矬ާ_Ҷ9?qvcc'rNA{o{oqo~K~<>??Ϗ~??~<>\<o?^WI~R;ߵo?9Gj)k o?K?O_?6{V{G)OdzmYO4__???n&/cKC_??5?~_ |ߴ=/?=Io/gM\/m?Y%οr9u#??[?j|E]/߮?߻#i>/x4> '[׿c{yp`ei _[/n|?y]C}t4^z_!Rݽ?* HofWӜޗw}vuC~~?ߏ ~y4m8gݝh[/%Ofz?mmj{㟯%_^?G#>!߻4_;M{w:yӼޭw2ݺz<ޭwy??-wݺNwޭ4wݲL4{,ޭ4{7]l^?{zϷϯ~<'\?_ w?YX/[ 9_IK6,wuI^oe{'A#!e_Uߎ?=?9sSP?mw=c۬n/zǨjG_j䟽%NgOQqSFÿ?F?۫#C-G=Fs>dzOSߒ9WiAOlyzR)w/Y|g)_??>yJ?6Ӝ4sǐdߺ=7wSחKƧ-?۶[?{<ՏϱG~ i?m?=ߎiyߟ={tk=~z?ϧߎǯzo^?$_C -{]-WP9W{a??U/I/["{{~F=_v7m/?楦b?)_o[?o?2oϟ?O򿠿&'yg6ϿuϞ\__?s^ҟל 8GmOYԯOG'ƩƿWG/?u?o?v_-{}?#W7N'_7_fS??_O׷izx)>Er'i|_Ck?|:?^Rc~.{_^?qqw13_ >=J_}n׶k/yq>5׿vֿ?M!?-.)?\:/[?qm=#"όݣOyw%ϯ{?_>ewH_Wf_?7OOZi>GOUgݿ??#_7ccky_[KfywRޥYqU?//{Y4Zss_9Y{w#ywSt;_=g'k\6~/??c/گgO!{nYR?oz':?_GIߺCmg_z?GGGYa?o'Gc&xߍ_KcR~O?sO_/Y?2Ʊ,q?so''?E=qW4}tx~w"9?^>}E5<[gޏz߮o_Ou{3Jc_Y8<οw}翭Et}K_罿?vau_~3??CQum?#i6H\g,Yg?5X^L:zϮGOdDmeS-o'Wj?-K?{[W'[ou$ןƗ>>yiwW%?~ w CmOmO?z߂ ~gn.?ZbtGkӞ󟖿A׽7~\/{??e?oY> nkys}_yy=^W]=wo=_R_??ew_U.߻׵߂?_[-y׿um{!<7,K_WOgWk_{oMQ?v=֟c۶ >?~z~Ŀv$ ߇|Yf.s^mKW_cm{[v~:u=ϰ~at8߮Cut_u1?bgԿҮ>IگCiof!?/G[oOC__U{_kw}?{,{ە}R?R??>Ow@Oo6_]m?m?8IKn?}~<s,/'׿$~g?WvU_˿Ox|I[ԿjgmOsw˶WPOm__ο6IӞ?S=o쿈OO.[%'Zڦ]82O?s|P~Y\y;=o9Yw \9aqۤ?Pd4WiGulZ/gGE??o?v_}?OBD'KOi_ߪi7cYݞc<&ʹzgC+?ίO/}~ovi9|[U[Ws##~?}ߺv_8߹O:?gK7sWُ̽n3-?n|Ɵ_oۇ2,uk5{~7'忬C> o?1smoǿ~?o=F?o_R_/_7%?v??]xo1[8/+ʩu9?'r??gj9iC3f|[_Ǒh]Lw-_i?_ӿ߼!ğ??!^:8_+oT])?mOH??>Il_?o_Ưk~~<7? -mR{OG>'O:>Ku[x}|E?)%o]_;g*gz|5Gu_/m??k=_q/vm>?aG?{畏*lM޿~|s?~' _^ ?o?j#š?)+:9}K\RWy鿮}pS-߲~3y'?=^>g*7{5;J9R#wG\3;Io]`o'_Y]mw?o;۶EϪ:C/g?dw\i4mO|ky9kK?bϒ'NzG[cٶۆOW^zj$t7׏[#o;OZW!R_#7wޭ4{ݺNw-w2ݲx7O<ޭwy??-wݺNwޭ4{ݲx,<-w:M4{WzJK<|y7>׬?t>RCuom?4|c<j==_̸_O?D)o]C߲9{??9s[P?ggcycۮ|n/vlS?ڮ;?I=m'Oߦݺ:mCJGkv]VH7?m?bo޷ԵOS߆G?N<x3e/7t%?C~h>gXךt<?[mOߟKsys m{SS/9,?h_}~g]~)~y|4~~|9z_ӫ^?)|ICYK?Xi?5w~|_׾^]϶xx?zW 5=g??~_w+K^Z?^·.i~cx]?{m?v?z#s~ߙΟ<^[Ako;NY>wgwƗ?>bmş?s<H.gCPn'#ROiPɻk_L}w:??S?E7zWi-uGuP'O8G!R<FZ%3M>o_R}>w_\O^ <߽?:tůο$>~U?~Mxu-oGz{]?ӗ͵Hm_ZW#|jy,1Cm7Gsߴ,r?uR%_-Xߕ홻=w_2O[C>wl_#[tuj/{$u׵t_{#'Ϫe< wY-? _ouݙ˒wwjύf^Sݙ׿6k]O~ol?3_Qg}=Gk,_vIkiK1/+G?_ymݱ1O[*Y6_#_go]u63^H??]ut~v?;W?O?M]?{oG7//K~gkM}\<Dߓo;Ϗo4׬e_^OmG}6K?''?)Q{{U,>v4~W78 ?o9:|<~(~X%_S8>)O_}uSc\Yޝo~Y~~Ϳw}?]~me>G2m?o=9Ǧ:]y?]kGn/_{7#i_?Yyw'361gGqo)g#mlǿZ?3l}}G&O'$'׎oyݺNwޭ4wݲL4{ޭ4Owwޭ߯wݲxw:ݺz,<-w:M4{W_?C?w'/> cX~ɧ~ %߽?:? ZR^GII?Ui>@fS -~`S6ߺ =ޫ`m?\_"_¿O]|/_뿢zhۥ??Es/]u{~?vi_'[G՛|=G%5|iKJ|ik?mn_ֿk>t˲^?Xm?]Yt+}|nJ/Y-? _K\E0?}}e9]8}vRח_/=>]z7L RSp:=mcS,?3_Qg}=Gk,_^JZT6㯽}~{eSʿ߾O<~tʿ"~>o[w şG/~_[c!?>aޱYfG)IR.|s_??DwC=W9?lo{'<Kj÷y_ףzο ۔G~6߿ӥ׏|Ӷlm5u{וeKj^by>?Χn} [Co͟'O򿠿&gwG?ߖ=ߪ_EfοpZ|X>?ߢvO?濟#kH#qO/??v?ƿ꿎'?+bIGl_ai|X 8_f_z||3|5|`_[q~~~M?}˒^ocwzk|?~|K׏uߙ/tǰ_oZǟ_?{},/}??ד?-IO }s)T~n}J!_jR'S_WoK}WKub<M]orCiN˃=^_K=#7~o?Zo#'ߊ?>_+-.c| 9}G_ο?qO?6_m^_+O'[b ׏'u<H1*|oiKkW'-*?7~?M}Th?kjk??>y_oOϓOxO>GA|Om{,[8~]u/Wo]op?ǓG_y{Wkֿ}3NI_/_O5//'-#?g=9?m??aG?| {?mY=+W1 i>]}~|FO֟دh&K\RWy鿮}pԖoYs -X?{woڃwW_}>g*7rG~gkw<ߺc2Ongo???-ӿ䟽/q]'K?w?]][o?_w7?R϶G6|lǿZ?^WK3=>g{'o#~R׺JowO+žn];unY[ifŻyin]λunY[un];ŻeinY[inٻo% =~^ro㏟_߯xOm/H/JOt{q?o}MxgWT߻$ho?\yl_ƿG%e???=SFUR?JkW_u[O;{ȟV[_\Lw(?_Ϳ6IӞ_P _<_wmG6O/ؖ=6Y+ÿ<!cc'}#V?IQqDSFÿ?F?۫#C-G=Fs>dzOSߒ9WiAOlyzR)w/Y|g)_??>yJ?6Ӝ4sǐdߺ=7wSחKƧ-?۶[?{<ՏϱG~ i?m?=ߎiyߟ={tk=~z?ϧߎǯzo^?$_C -{]-WP9W{a??U/I/["{{~F=_v7m/?楦b?)_o[?o?2oϟ?O򿠿&'yg6ϿuϞ\__?s^ҟל 8GmOYԯOG'ƩƿWG/?u?o?v_-{}?#W7N'_7_fS??_O׷izx)>Er'i|_Ck?|:?^Rc~.{_^?qqw13_ >=J_}n׶k/yq>5׿vֿ?M!?-.)?\:/[?qm=#"όݣOyw%ϯ{?_>ewH_Wf_?7OOZi>GOUgݿ??#_7ccky_[KfywRޥYqU?//{Y4Zss_9Y{w#ywSt;_=g'k\6~/??c/گgO!{nYR?oz':?_GIߺCmg_z?GGGYa?o'Gc&xߍ_KcR~O?sO_/Y?2Ʊ,q?so''?E=qW4}tx~w"9?^>}E5<[gޏz߮o_Ou{3Jc_Y8<οw}翭Et}K_罿?vau_~3??CQum?#i6H\g,Yg?5X^L:zϮGOdDmeS-o'Wj?-K?{[W'[ou$ןƗ>>yiwW%?~ w CmOmO?z߂ ~gn.?ZbtGkӞ󟖿A׽7~\/{??e?oY> nkys}_yy=^W]=wo=_R_??ew_U.߻׵߂?_[-y׿um{!<7,K_WOgWk_{oMQ?v=֟c۶ >?~z~Ŀv$ ߇|Yf.s^mKW_cm{[v~:u=ϰ~at8߮Cut_u1?bgԿҮ>IگCiof!?/G[oOC__U{_kw}?{,{ە}R?R??>Ow@Oo6_]m?m?8IKn?}~<s,/'׿$~g?WvU_˿Ox|I[ԿjgmOsw˶WPOm__ο6IӞ?S=o쿈OO.[%'Zڦ]82O?s|P~Y\y;=o9Yw \9aqۤ?Pd4WiGulZ/gGE??o?v_}?OBD'KOi_ߪi7cYݞc<&ʹzgC+?ίO/}~ovi9|[U[Ws##~?}ߺv_8߹O:?gK7sWُ̽n3-?n|Ɵ_oۇ2,uk5{~7'忬C> o?1smoǿ~?o=F?o_R_/_7%?v??]xo1[8/+ʩu9?'r??gj9iC3f|[_Ǒh]Lw-_i?_ӿ߼!ğ??!^:8_+oT])?mOH??>Il_?o_Ưk~~<7? -mR{OG>'O:>Ku[x}|E?)%o]_;g*gz|5Gu_/m??k=_q/vm>?aG?{畏*lM޿~|s?~' _^ ?o?j#š?)+:9}K\RWy鿮}pS-߲~3y'?=^>g*7{5;J9R#wG\3;Io]`o'_Y]mw?o;۶EϪ:C/g?dw\i4mO|ky9kK?bϒ'NzG[cٶۆOW^zj$t7׏[#o;OZW!R_#7wޭ4{ݺNw-w2ݲx7O<ޭwy??-wݺNwޭ4{ݲx,<-w:M4{W~!![Oxޫ@mI?m)O wi__?nDz?޽jRj{W?XL;g?X1~W|?ʿYG_Mi -?_;~鮿wz{?)~AakmH׆cE/rϺ?vG???OQf?e^S=?|uowoJ6O??H_~__rߓǨGo{o??ǨnOyקx?O[#>Y?*>??Z~~7xW ?O?5^ -?c% }OW,?o{R?Oo̿[w/q|?O~ eKgᅴ9ho7yyYGQ??-OS4w~_ۑU?_/_ZO-_?<oϢRkw~??[SJ>>j2?_}~1#jW5/)eYyRYҺ-e¼|^מCac?[/???]mGsIׄ/=s=kKGw[c5?5?-B?|Hd8~N?#g#'ne}oW??Ʃ/?쿶q뉶Ͽ׹.n~~mkѿ~)O:OU_&_{_]?q^] >ք>5I_S_ZW󒂓\gmoό%?}M-or1[~BzK_O?%bRK_#/Eyٟg_)3sczn/_y>ϧ#}XJ?o=Ϯe~?u??zgw?6|5WU}W8<:Puץo~EeI^}O:~zMK#km)5cĿo{'Z__TUw[}/_g_? ca|w[R1M5+J#<[_RsMRkU߻Wxi6_צ$,q -'?Z_gK#>6_-?_>?u?#_Mu'mz}z_?¿zu͏_vu=/ot~k_rԽZw?ߊW_^g[¿_^ߗ_%ϻz|5?5_׾ϻabٶ>k[bgg1C??~^X?˫b4>/<[Va?]è6?2Q_mBc7 ?,O{Z_~ '?5_-Ng?w}_{~?isrW_c4/?r;/=?S?^[4/r>ߵ?&Vm_???LWC|um6.H9G?W}z#,īo?mmَ gz|NbHG?#du)'?W5oϋ}yݺNwޭ4{ݲx,<-w4ݺzwݲx,ޭ4{ݺNw-w2ݲx4OweJ~˗X>_>?Jd㟎_k>@mml>$m[¿7]t/Gkmo]COg_'ߝR}oǟV(zOW~_~N眷|HO3R+s;k[|zn?}Oֿ};f]G?wkiP\׾%m_ےO=cc?3׆u^۹pWח -/܊nK'v˒tK%ZO_37F:!^lI_+_Ka[}/_z}G}>EC{?}?Ҭ?Wo}yG=_?׭\ -Y>m~KOCk_8?yxcRIOӖG?ᇟ/П[f׵6o޷ /ݯxuuܽ~Jw?wcIk?nwE6yMϴ_7R_V?]ח_/m?#r?׶\>տ~s}+ռ>?[t"??o???z#ߙΟ_^Am_gWu?wk? 8oU9C:38o]ϢvO?v1ֿ#kH#qOt:ڧWo?m'n?OߢW]__'_;_?'?__S(_xlYr_-+V j>?סv;O#yq߃txY7\,y}>6y{?oxo,7>{ϻ_?Y7<M/]]ה7/? ϿR?|߈}ee?^%[_}siK}GuYFZZ[ۿmſ}{O/j)O?Vu/?_/O??Y]O?ms'O`^W+r5?^ -?,SLvKW+ -?|ݝzȿ#_mݵ}ǟC[}xgyc ~g=ogs'x,'?U?R??_7SO%mtv?cW?O?|k^koڞ?_ٟä^֏ӦoO?m϶?[?Q?_9Ga:O?{U ܮo_|wO4opj{~<~_Eq?߱_=_ ~i<ys?Oc2|4-ߗ?_7>.!U׿^W/?h?){wZZ?s7+~iNxMu??C?xݺ!??}[_tnGӶNg4m?bϒ'K3~=R϶G6َgS?/Fc?[#M?OH]O&zλuf[i^Wջein][if;[ן_Żen];uջunYy[uil[o~ W=?~.KRKm׬t{q}׭MxgWT߻$j7c2=2/ժoGCws?wȿ_s?9[m?S6Z;_mo7C@?c?/I^3??V??8 -#_SOASova!ؖ#?_?oIdi?O]Yl'|<=~Ox);,M>]yJ/<?iN?s9cȿ^2oT;[?i%|JSm-no 4^K׶eoG<?OH]ÿC~oGWi?mkqo??K]o.˿O+Lɜ|nz=S0_ǿe=kKfK_KRy_{??l?vGOJןv'__Ͽ<3?_:gO/?_ݹNokqgxP?#? W'#J_ٟ:??S?E7?_uPTH?/ǩ'zc|W4}tx~w{"9?ɿ?wW¿4/}w>uձ~Z?u?o=/˟8޻ߞ|s>7Rk5ռH8__?tgos-I6{o|ޞgѧ;\cj|߲;g+[W3'OOѴt_{#'Ϫe< wY-? __rܻt})8V—ֿ=YN^,O^-׬k;;Mfc߳O{GOO~svǂEKjq?W[['_i])7#_go]u63^H??�/=O#7]\ףvUK~ i<ƿW1?{)z?ϧߎ빧{,Uzo^??[K?mq_8J9??aG?v?o_Ou+|^<^ -tzy/]_K>xJJϢ_]-y3_=oKgeR?RпU{=WZ1i,A[Imk߻VԢgk}OJߟ}OǺK??e_ ߺ6\} 4HWqǏ.3^?w,by&mo=g#'nK _"˲gnw7gWGc׌o៽+-:JK<+ ;Є6?o? 3oi_1]:ϣi_O g?=SQJC[,mv75⼹>/鼼tR.;/?ϿL ;گ*_]_koAY^I-Kռ_6=}~?y/+m3Mm}&?OmOC _~?y=O]]?ou;WZYkϏ,s3wC]6+Jv1ֿ6?O=}?nO?mgX?wy:oWT[::/:`az3_i||oiKWrW_47~?ߗ_R-S?'C!/>}}=??O=}?>)?;_?7??탿 z_z~mK?O_χ~A9UǗ_?3+osު_<R__Vg6nemba'CEjO?Vڶ/ϿJ_iC7_'o[οp]g_oOm]鿮Gc'9{x>(UG]gtgج~Nmq???8 mҟ?FC2ʫ4#`I?IߍR:~]o]b?m7?/i>P'o!?%W״o?_,{nwE1P\x=3?וyt>?[i?>׭돎+~~o?>Fo]k}GC/'^lS_O+ߍǿrQ?7NKORC[:5=K_V ??N7߶_[_#k//GO}|?~v.csg<?sdMs{:?o9?mRE~JUvMY 3]Ͽ/?H~4.yU߻Wx4oHo޿mKGk?ks/OOu.{۔]??׉`aA6~wԟmq}|s5?^ -?6qM)x|_ChK'׺VO>t>Oߢ.]~UZ=NZJߣݺ]/o ϶|[Gm8z?;?#???mY^ Ϧywi>]/׷ FoBПhXǾg~g)|R+ռ‡_׾c8ԖoYs -X?{woڃўN/O}\o?~)#.i/s6G`ҿ˝m["ggeO2;kߴuiGӶT>ڵɿ׵%1gGu'^=}#-lĿm'vuS?^_x?swFm?-'vGOHw?ю{^;un];ŻeinYif;[ן_Żen];unY[ifŻufy+V[{ρ|T~ w_ Cmkz:O6şGWZtGkӞf\/{??e?oYS=y_s?9ok?Os<om>o7C@um$_׶cA'oS[ng?y#o뵏XVNK׮GooǶ~s?oCdDA's_f<˲|g^~m!?3?k~_{-?۶?'i?\^9<6=R)s?Q?GX?{|?~<?K??>wU?v忤G]韚;??NkwgOG<g<=^+3uϟ|~Rt{k?-g[ߴO�C1^{|=6??{o=9?oLO_ʭO5mc'_,ۻ3;JKϟi~9]{?[?_gfqzF'Fޯ?o>?GϢGo=r:OoR#Of]??_O{&׷izx)>ﻯi{'i|_CeO_w_Z~ XRV<vnoοߣ -~o㽋߮~_gпZ_}n׶k/yq>5׿<SaK!r϶D#uoZ{ivO:׉믖c,{]Gf}/~~-!;z-~F:ew\5=ZKo?ϯ=gUYϲOf׍Z~זRY?AEip~}K[~_ -_ZLe;y?ix~r_^)_Gw?76zc(|]{[#?|??/G_5N4?뿘ꗕ#Hvܶ??o?-CYR.|s_??Y?NG߮ߺO{_:\j; ?cǿߏWY7W~ZW_o_ҿi{߃_e"X~ѿ~7k/mbٶs?Z#_׾gK%xCaC??G??~^=*lM~~o^]+{w?Z׷{oi>?c?}{yp`{Cѿ/|muIk?JM1zy,Kxxm,A[I??w߻.?޶c2q#]?}6wcC<oa.#^O_/?﬿_edҌ_m?_zT}#wD'_O}??{kɿ^n];uջunYy[Wuٻu;׻enY[iλuun][ifŻufy+VPݟ—~|sz,?w Oi|zxmCWB-}Ə#Kz4OsXW )~|)?omo^?~UO06?~./_/_ZR׮>/]_=_?u?" : ;4-_i|]R4%TͿd5ן|~[O_SCo׵t_{p~FeYZ_uoLsDG{Qu.?,d_zMsu>oL[זRY?AEp%waײ?.؏>_]_|rį¿_ߏY.=jύ?독y?8JG׶y1?zc(|]{[#?|??/_O%_S^R>{|w2xo_~w??OiK_z?O;?R#S_?h?k{3g~_G?[]_>M?R??;??Z7~W?[OW <sg/y=__m#?Ko {wҿmK_{iۿ?OO?ڶ_ךz:=2w5/< -Ssk?o-?[yOJדv'__3Ͽ;loK?ZoՏ/"__8?o-,??oCm?I?8uo;C??o?v_m~_GJGjMKY~o#OO_6~ޯc0g4>x|P3wO?=>_>ւ>?nve}??~vy&>eI^}71ܻ_=5>??>G:̗\^:ceϯ7ϯ>>G_C$9ꌿ~*? -Sak/|/e+?I>+ߺ]1Ci[߷?9[ߡ4A?/񿞿ֿOolڟ-GuwwoEU_We>|>}}_8?{_'O?6Y/U ??^:~Rso_c+~z_~?{Y?&>K -?e_|߇SɿϿ]o<'o#^6??GVzGu͏_{+ۮkK#}~zz>V_'Ǘu/'JmnCm|ƟK??su#?o>=yc,4ǿ܏߮>?_i>} -WhOwWsc}c~g)|R+ռ‡_׾c8_|jy,9z7_;+ׯ>O}OK9R#wG\3;Io]`o'_Yi?`ҿUu_?j?︮ץiO;ǟOU-^?K?;iqo)g#m>_z/«%7h_?o)e?k]%;GGkIvbwyw:y,-4Ow<M4{yݺz,-w:ywݲL4{,ޭ4{7]l^?{zϷϯ~<'\?%} ~Cmk?|:=>&NWz~R?K?]z?^</cF#ǒ2Uߎ?a]?Yh#*re?}\5r[Ͽ:=O+-/gFu_i篿OgZ쯻#_~?l?_IOO?AG?{?O_McGA+?ۤ?8"#_SOASova!ؖ#?_?oIdi?O]Yl'|<=~Ox);,M>]yJ/<?iN?s9cȿ^2oT;[?i%|JSm-no 4^K׶eoG<?OH]ÿC~oGWi?mkqo??K]o.˿O+Lɜ|nz=S0_ǿe=kKfK_KRy_{??l?vGOJןv'__Ͽ<3?_:gO/?_ݹNokqgxP?#? W'#J_ٟ:??S?E7?_uPTH?/ǩ'zc|W4}tx~w{"9?ɿ?wW¿4/}w>uձ~Z?u?o=/˟8޻ߞ|s>7Rk5ռH8__?tgos-I6{o|ޞgѧ;\cj|߲;g+[W3'OOѴt_{#'Ϫe< wY-? __rܻt})8V—ֿ=YN^,O^-׬k;;Mfc߳O{GOO~svǂEKjq?W[['_i])7#_go]u63^H??�/=O#7]\ףvUK~ i<ƿW1?{)z?ϧߎ빧{,Uzo^??[K?mq_8J9??aG?v?o_Ou+|^<^ -tzy/]_K>xJJϢ_]-y3_=oKgeR?RпU{=WZ1i,A[Imk߻VԢgk}OJߟ}OǺK??e_ ߺ6\} 4HWqǏ.3^?w,by&mo=g#'nK _"˲gnw7gWGc׌o៽+-:JK<+ ;Є6?o? 3oi_1]:ϣi_O g?=SQJC[,mv75⼹>/鼼tR.;/?ϿL ;گ*_]_koAY^I-Kռ_6=}~?y/+m3Mm}&?OmOC _~?y=O]]?ou;WZYkϏ,s3wC]6+Jv1ֿ6?O=}?nO?mgX?wy:oWT[::/:`az3_i||oiKWrW_47~?ߗ_R-S?'C!/>}}=??O=}?>)?;_?7??탿 z_z~mK?O_χ~A9UǗ_?3+osު_<R__Vg6nemba'CEjO?Vڶ/ϿJ_iC7_'o[οp]g_oOm]鿮Gc'9{x>(UG]gtgج~Nmq???8 mҟ?FC2ʫ4#`I?IߍR:~]o]b?m7?/i>P'o!?%W״o?_,{nwE1P\x=3?וyt>?[i?>׭돎+~~o?>Fo]k}GC/'^lS_O+ߍǿrQ?7NKORC[:5=K_V ??N7߶_[_#k//GO}|?~v.csg<?sdMs{:?o9?mRE~JUvMY 3]Ͽ/?H~4.yU߻Wx4oHo޿mKGk?ks/OOu.{۔]??׉`aA6~wԟmq}|s5?^ -?6qM)x|_ChK'׺VO>t>Oߢ.]~UZ=NZJߣݺ]/o ϶|[Gm8z?;?#???mY^ Ϧywi>]/׷ FoBПhXǾg~g)|R+ռ‡_׾c8ԖoYs -X?{woڃўN/O}\o?~)#.i/s6G`ҿ˝m["ggeO2;kߴuiGӶT>ڵɿ׵%1gGu'^=}#-lĿm'vuS?^_x?swFm?-'vGOHw?ю{^;un];ŻeinYif;[ן_Żen];unY[ifŻufy+V[c?'?~UO 6 6AMOǿc?ğ w_O -_}g)G[Oe{X_&CG?G? >m^_,t篏뿦~Uu^ӿit߈nuk? ϰSu׶$k1omg??ף~_Z'g2{Kߞ >??:7;b7?o%CG?/?_^o/9kc??Rn7?c?S|<?-_???i??M/1{ɧ+R7=O)eo?G|? K~ao8>u}Y' Oi|2m%S4C<,ӣ(ߟ~|yiK|v{Я|}{/`}M_7gOGB)5 er|% 5sύ?^ -S5,[mլi]kӖoa^j>kOG!DZ{؟-u.?vz#9I$ k9g^5K;u-y1οpp?ߖO>qO[oOiK~tY?S'GOghFg7ղ۾׷NS?uiue_[8ZDS\w_{7w?6|_g'?]i/?o=˟]/߮}kBԿk/yII}3]϶7gFX>俦ז?K^-?!}R?/'KORs1GYy/??O"]|z<ڏp3S1=^חeK민Ss[>ogj%vugWYϲOf?П?O=x3^O_>_ݫR\+?ɏ_u}RI]'o {fLJ׿6{۔1ZϪ->ʿ~__{/ÿCMoUe&Oo}O̵*+<z?W}j@Ck_8?yxcRIOӖG?/:/?ϦߺO{o?u=>{_=nK~o:KǷ{~:^?5/?9_}oū/^3O-NI_/l?S˯]=NZJk]~ưl_o!?????|}֟U`l{]?I~_p}ϰ.aT(/~H_ѱq|_Z犟?\'_K-|Mu ?Om/??^wƟ˻>=Oy49W߫?/߱Vc~?O?R?nOy+{ȿ߶w/?V[?{x!_㺶MO^?mJ]][o?_w7?R϶G6|lǿZ?^WK3=>g{'o#~R׺JowO+žn];unY[ifŻyin]λunY[un];ŻeinY[inٻo%?K,J ϯ C͟}mAO_W ?6zkKGoGο-_ZR׮?:G#5忶e]'/ox)>߷uCocsTMe?X/]eg -ܿs[>~$'_NKꝵiw=o_focؾʝl?#ÿ;O?u(gkxҿ~6/m?_YSkÇ_:W\E+KKϗenE]_|ץo~EeI^}O:~?jȿϿM#m/ 6kߕ->ʿ~/J>׎"=[>?i֟zv珷>׿#?ǟ.GOoyJ,6AyC/?K¿cױ?Y_)t~_GȿϿMi~GAGgvOo-_?ok7 w O~<e|wO -;p}ϱQֿ$g}gZï_{?/?+w.KK/_}Cm϶u?CCk?[_?͹>וeKj^RpR?-{:]???ko=LO/]gO6w}E~sq|i;5ϟp*wǏt?.gCmO_?I?8z:+uَcٶAg7Us[_nR'oӮ/?nIj# \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_0_167_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_167_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..bb2c8cc48e2a75953ff0d0e18b970e7997b0fd52 GIT binary patch literal 2901 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 OsWeB!BhaQHya51F+8DwB literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_167_states.bin.z b/client/resources/hardnested_tables/bitflip_0_167_states.bin.z deleted file mode 100644 index 8aae9133cda225ebc543f96a1c855ab4d8738342..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23886 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 Uzk_DZ^Z)TDnEtDGXgco>0C^Ip1^@s6 diff --git a/client/resources/hardnested_tables/bitflip_0_169_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_169_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..bbec52e26030ba94e8c3dc47586683d466565dd4 GIT binary patch literal 2437 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 E0Ibe8BLDyZ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_169_states.bin.z b/client/resources/hardnested_tables/bitflip_0_169_states.bin.z deleted file mode 100644 index a42857b5add261be84d85afbd01eeb8a08db1c42..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18794 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 R|MveQzvBFVX4M~`xd1jNGb;c9 diff --git a/client/resources/hardnested_tables/bitflip_0_16b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_16b_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..0a34da2f642ae62699e95538d6530b16f252d182 GIT binary patch literal 1400 zcmZ>Y%CIzaj8qGbT=H~I2m|-Q`v1Qt@7&F3dsUWEl<@+i0HZ|fL`FeJK>_iH0-^y7 zp=Tr?aK$sg0bim?N=8PCK`&3+EE9$#qZDQiHs%?=l2THVJj%|B%X%3kdS)^lVr+OO z?B>?i=FD;7MCM`#Hf1#jgN6jlmWvY?E}U@4#7HXR0%OO?2|NlC*bHP?vZT{ss=eFF zUY{#xCi^ryyY=!)%xI|USGe+F^2@&$ME$R~dc`GQ3wpFFBAD~AX#WGYWDBFDhb8hg zo|kqc{(a??D*Vv>R?6?>hcf=mdh?IioqA~>tyz*(!(QCpaH`(%Ror25?=SN;Uze51 zd)_Q8I5V^0Q#iBEvbgTn!;&_EPtxKJl^oht#eL@Z%=tCPx18B*tn$I$@>$`d>3sac z>YbN2t@)DvDAv~BeaF#{njxP$?U&1Sz6yT8el7f-d-9?UGro2HaA$b2?&*U$+6U&p zi%gbyXn&-F^JXmjsSTUij5Zyd=96UWIITY7QR>mc<emPj!X!5Bk_`M2r>A^I(#L1+ z)PsI%UdJpf3Y2-+g<tjbso6|_5pVT#@`eAY&ni~FRX%BZ<m6=T#lmNe)))NhU)q1H z%s(*Y)X8M-Tk4bc^f$(HH{W>tYUQK4)@d?fGNE_H-&XgFzbJY6TJ_E}#UJi>>XP5^ zpZR|MY03G_XB(faldye$=&$?pn)5wB`q!Nowdt8@w`ra7g;VF|cYcehy?)`{2lW-Z zdv?sRFz&W6elum?NAEXcoE=AXymm}Anr1jHOe{>C>4)%JN$(}cnGWnooo1A@OX5+I zVWgo^Qp%B&2`7D0QeXLL99BGZ%6ehq;l)j5!g|xhOAY;W!VC}VwY=+o;P<F*YN2Yg zn&0E4g)x4U1%IAT{C0ZNX`PL2A@4R#7t=G8IK8vEUtPXr)5A-<t=PrI-QE2RFI(vu zKPq{=_{7PoGkiThyV;Y!TJs!vbnfI~J)Sp@&a9I$ni;F^H+9C#SA~UBFPwOovRjt* z!G;Hgg*t{6wt4RvUm5TCcjeuKJwAIlzF1qVckKF9Wo%b?VeZY?p7qAu|HJ)n?9Xmb ztZ6U#5mWeUW?AgK!zbmgvoF52W4AuD`W5S4eC@|J-YGAzSij<fo|y2xQ2iZ`{HA~E zu~>ItQ(X2pedZ_DYW^$_3sR?r{K;+?-gMmi#5*gwK8ty-1&>}9&hcZHb1z={Y_E6o zZhiUg?#C7S2lgj@i2w5I`I>*uveS3j+<US2V&RecTR;1!eCxhevu^saFMjiquWk4y zS#>jFu8hx)N9$|mB;T)Lcd0GDt9`JVXYcwq1?!Uk&w2DS^1-^vFXB9E`ETtDelEXn zzV$tePj#%--e<)O56&@)I5F>P*ZM?@9qSGooYw1Z+qc<IcCPw`eWf=Jzo^igS^b>* zK*c=0=c#?C)nZ~Ic1a%d>+w5Nc%0o`;;~hMy{1s}p`fN;1xo7gd?OQGLN9ct3Ja!) z^J;~x_FSr=!#`8CreRZO%aI;237<u$5)G#&>n!c;oUF4fwJmAGCWB)<>vUGPao*Gv z_ZE@ZUsmRKSdC|?VOL?{VVy{8&5)M~yBsfzrA}ruGMvWabLwQz#-5jlUV7>oPSu$j z>GjYmOs{EW3FlD@;kHnn>C6&yG!Ki0oG47^78e&hY8Y`SY2(CWk5*3BR_=HdJW;P_ z!$WnBQ<7n#Q+Z};Z89=6Na_hqU6gX-;L^}p+EP<aoH%kIby`HksjaD5Myn2;T63aj zld<SDi4#4W)~xB4SUOEHb*fLY&Z>wriAJY-PAX1wIjv!=v#BT5Sk&jRq{kVZgAxgA wPDLD?#>_J<A}z>pN?OR7FiEdtp~h?xJ}1twwlOCDfAr2{IhT;goXuSg0O^&L=l}o! literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_16b_states.bin.z b/client/resources/hardnested_tables/bitflip_0_16b_states.bin.z deleted file mode 100644 index 426210addae4a8fef562c14ac7ec2592fa8d161e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9190 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 VX8+gOkJJD1e>nG_QI~7(Bmmhh2y_4d diff --git a/client/resources/hardnested_tables/bitflip_0_16d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_16d_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..c6758b6a2deb35274757eb0d16e7ca0c107cdb30 GIT binary patch literal 3478 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 E08`|;AOHXW literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_16d_states.bin.z b/client/resources/hardnested_tables/bitflip_0_16d_states.bin.z deleted file mode 100644 index 5640076fdf5b1b1b92a9c23f9bfef77c9bf27280..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25731 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 BG_(K! diff --git a/client/resources/hardnested_tables/bitflip_0_16f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_16f_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fe936f3bfe2ff4e117c94e3b1b5b8ee9ac4c2710 GIT binary patch literal 1526 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 T7!&_Ldgrm6ONg^4{_X+*FEXhY literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_16f_states.bin.z b/client/resources/hardnested_tables/bitflip_0_16f_states.bin.z deleted file mode 100644 index 39d0d0801c3c3eeb7a2f20fed27026c329766ce4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13553 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 NztQ8L^u6Bf1OQRcZ36%R diff --git a/client/resources/hardnested_tables/bitflip_0_170_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_170_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..5180aae930ffb5b4c369a91db97c8d3049bd9a0b GIT binary patch literal 1119 zcmZ>Y%CIzaj8qGbEbjW!!<6{@t>ewRM;I6s92*!I8XFjx7&soV-Kz-*4GLMP;l-&S z!jNQg*{zj9qSxf&LI*ZwUz3ag#*WLrQk*Nbd>u@99D;(J<}DUTIlljwmr}pdtQEl_ zp$o)XjV8E>9Gc~IFodnuM03KjRzsIPJQIq-M9erMmaW*bRxAERufmpKmy+%`{UKGe z)|<oyPTUu;tY!H>uM?A7Jl{A?`4XbCV+zNvE|08LK~XGgT$HYaW-OYn=&BncXvw8n z;pA%J*d?m7Vk4Wv5ieh^Os!@wZ>L#WYgTMgG-wu5Q);bcbqh%04)s}ds>je*S;=Qf zsF6y@QxRWLMjzqdFR!}Bsx(P7f9W(@bVM>R%Pq)cMXE-Yn`%mw!kT8TES^=7j&BzI zaD6m2PN4fcf8rs&l@g(?kq(JrD^?#|bv$`dxN}g@VUg6R1@Ba+vV}x=FX=ChXW6sz zj`yM9LlgEaiV)f>5@-`LWjfay2a{!9t5OYhT}~OS_R7%SwCIiFmF2FEKRBN(lkrqv zq$n?{<@dzNrb#{P(oDC|z(uP=d8E1`QbQs#GPal)T)1#CV$rFoi!?ioxV<ucSra{W zdQEJR<w|8;EVbxLl%&|CEmn(czf54V;0jsaD&oW9n(8X7>JsU)!eY5nSCo^;&nrq@ zR<0sjL-;zCo-7Mlx+GG}b%p1WNLSHGT{ET}m~zrrQ=vf7FNo7GXt85tK&tChvBuPt zo~2nUrIvaw(iX^4xWvP1qBe2LsjRD_DG>|9q!yhxap6joF0bpv6{o`7yw)ttnvm(U zNMv7Us_P*h$3;`Fx@JZO^)PD~1tl|vriwMq^12iz8KikqJ!p|mZ>XSE(9(k7PMN7< zQ*|{WGQ>j#PrNAfT4xm2&GJ-ik!eh_o7DQBU0f%PW}W(P^o@aGy}1_4xpxW-JPZsh zJPZtO4f5Y71T{4}XigSZIB{sEp%G6Hn0e4ttMjE%+JXz3sxBrCm;JX2xpy3th-7nH z$*ryJv!t8H#Ng7hE#6_P4P$0a?J11C7gw=P>btwbuVt$qtv?wWuQBnILdB|;3l^?Y z(_)))m3dX;BG;=9KSH%09SNM+EvC`avs5i~;)D}dgSkbnc;5Bq7R}n&yE?*TN~(+1 zf|OOwu0~UQ;<YvzresbIoRqn2OSf3qGKu*1&uguw#@yel_0iz4%3<fj>W03{GQLSl zN>s#OzxeWv?e$&ZOEcoK*c-VQdt_^DmP(VlTIoLNV}<gADogLDLA5S>yCz=<pPS}7 zneE6ev1?n`uFY1H@b#6Pkug1_t@FfzlReiWuX=i!u*AP=Z14_c77bk`RJ@8!R4ZnM zl;+X!NU^AEiqlp|Ivs6HU9sZ9>Lp7{X07Sz=?zPr>^Nmc*fQ7d&@khu8$OxAiEGo0 z4cBB{(+zgI)+%4ArIS*abX8Y4Qk!k%%3O}C6He={ntI~Vs;!NDA#?dAuZ)b4W@mXl ZSM%0c*@(F}_dj~)v7AdtT(0al0{|l}(IEf; literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_170_states.bin.z b/client/resources/hardnested_tables/bitflip_0_170_states.bin.z deleted file mode 100644 index f49f4d249192c6e67be5e984e54ad4f1c2ac5e4a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14725 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 diff --git a/client/resources/hardnested_tables/bitflip_0_174_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_174_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..00e4f95b49ce7a6f56dd375a4aed4e5dab77ec55 GIT binary patch literal 1314 zcmZ>Y%CIzaj8qGboECf_i*W(_pVa@qe{gm*Ff?#CF#kWmz}djl$Z+BT&wU1DaDd_B zvIe6JUN(me2?i;X3v9lO3r_GdGcdc&VmP_LM3Qkq0z<}S2T2pQW(5--241NQX0?V3 zDQpcvK`yhhl9Gd@QcN!7Og5EP`FoV{%fS$@x<jsRO7kXtR2Dvw^x#D}r<K9+4+i@# z9K9g1;b?o&5etcTi53MGhHVBL4u4Si<67VJ&YDg6$i{+Yh7~+z;(Mli64Ab*!4uL^ zrfS2+uk<kal77Sf3m^4QByWgweiZR8R-Er)!QNJXC4VJ}grvg@U&tw6uv6Y)!_3+5 z@T<A0z`%!%Cs^dch8G*=7`Cai^Km_Fd2r<En}>(_`i>No)INV!P<wd6gMzuI-WkkW zSeyEF>TmgmH~a~Pat&Xah41KfZ>(i~5U+ftV*ZJ*ljga;Rp#DUBBR%unB4O4U~AU{ z`=sjQMe92b876PoFhjzITkg|m9Si=%+SF%pDWCNV%GqzkHQ6b?mSGcP-?Op${Ejl= zTmFXc#3baB{w0OhHnk>(9AMMb{MMOd;B>%XW5S`MUPr?;lf@(ql9Cb*9PK#b*(NM8 z!yxHsVnUA?Yl4iS(9t$!i5VL`TMP^iCM6mi?dtLDI@;OTSs<|?v}?v{Herdx2E(po ziNib*8;%_9><QBr<2Wp_(Y0me!H}d?8%631_1|!ItqDw+v9g7=>(G&-$%4uv%e0oZ z@%Tvi1npoAyx@0fVZt$GiG$5zx=9-wyMnn6OC0Q$;9;#}6m8VJ(3-ST_S75KZVrRR z;;gMY%Ay4`W=KS=3A9LTP3TY5lUQDKSg^Hgjpl)41`m_g@$tm42{Zl_dT~sQF)^w6 zz#?~MQETyr>5c9j7J)acG-Jec+?iV{xQ^)<CT$F7V|kcl-Obrj;w|*Y<Ds6=!4Bu9 z2-h%{hY}i}v_Hu+9$qA#WEgs9Lr;WZPf}8%{X_i=8{=2%9jy>;k_a`_Z*-Jr)Y{?d zCZf%;$1^D+Sg^BVQi7qjkU_*W9@k$Y35WJF{O*abO!&!DuIWF~eNA|$ELWAwp($Sl z9wzxKEx)2Qmuq>EA&=&bBN4|8LtF3Yv34ZvkUjA*@U>vm8!?fi-E5rJVvGll#7(?d zaEwR7N@9*qnKri=UuRc|!D0Cob;%1W=drxg(HGP^`cloBo3UF&!cfOYuhY;VX*t)S z<s2Im<0h@^N_;I*#m=AcLhfSwnflBB<rFLBoGiSXn>MUr7Pweo*e7~Qob})#J&D9a z1*;ww%wgZNH`Tu)e8&go#fw{BNNjAAF^m=GpZQip`3&O&6${lcfg~-1z=j=+U5no` zcC0!y^#G679M#qmrk^cbv0Ti8TnVdsJh-2EDF5hiX9@LQ5bk<mqfSJy(4ixV2J1u% zb{I+=ZhEj$V#Coxhi+W$78cVM7VX;Dlh`As6R|N_;%FOBa?@N<)q@wi8&-aPqrbde zC6Mv2!_=lj3%d>`vx$j@2@9>-m^A4~(h_fBAu%<rq}ANa+-wrdn3jnw(+U<fIBM9V z6U>#g(n}{y;Ao;jM40B62M=5#SX+Yy-2@z4Dp)47db&0Wvno6c(R#=w;VJt2(UKW5 znr=M7+@fBGl6rJpvyO?e8F(`bCOw$6>afs^2p4az2dm~Vt$0x26rnA!jGZ&2U}@7d z&M*Z-<)+1~2NM&$n_Qa`MGhRAru5K4^k9T$(mLS=J#HRtt_U4wW`+&+KXy;jJk-*% IX&!R`03sI>(f|Me literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_174_states.bin.z b/client/resources/hardnested_tables/bitflip_0_174_states.bin.z deleted file mode 100644 index 66acfea97be0819859b599b4adae1ea937decbb9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15952 zcmb=p_4cm!q$gUN8Xn&Jzb(md*4@JMoAN_bLytKtwzeE#{9m_ui_LN+kCvE!2V@V{ z|9`*#|Ic5$bpQYV{Pj@LfBXIWK7aUMet);_`uXp-?f+f>_jUaLg@5(8Uw{AS*Y5rQ zzg@2X|MUO0zwdkN-%8C}|Nr0TrJMhqod2hKgZ=5Z&)@57*Z+TBx90o)`~QC5ufIE+ z^SJ%1zwvqN_y4!sf8IX({%)`T_rLBp|5tu}YuVlC#|!^|v0wa8djHSkYTJAN&)-t} z?dSdd_5W9g=Rf+d{jR?M<Nv=u&d1cB{#_pW`>ELPO8<ZRzx;CF^Z$?i@B7_<^E2z8 z{{Qj+%)j}6PR9R>|L6bz*Y)~)KlX3=7aUdJweA1Xugimeum89FpZb6O|M~y&|GEFa zVgJql|F!=S|CRrV|G!-SEC28OU;F>e|0DnZJc#T6|K<Ka?f<^6|3B;X`ZfPQ{j>l1 z{M3Kf{r`pk{tN#0=l{g};aC4xcm3b{Uwrldd;h!t#{9eg$NB%W`bYI&!SLVwzv=&< z{y#DQ&&m0JPSy+kWIo}Y`R~V}fA?>#=Uw&uzkl5S<3IoVJ^lak&+fAS?oZ-#|HXg) z$!vA;zrgRS6aUJ8`p3v%@Z-<=<v-^CXFu@o_>=#$Zr<nqdw#-C`G5A?|4)ZP_67ew zPy9P;|G&wG|J3XM$$zqcRR4>g!NcJH=70Ww<r#k8@BG`p;{WOYAOFvM{r`#ozfb=^ z)iYeFpLMm~D(3(6+P~|6$^Ym7DgW92XFWs1&-p*%|L`~bo&JCF|HuDN&i^;r{;&9d zW`+ipuko+roqw+{{dev7^Xu^j|1Nyq{=)w6`@ese&-!k^`!6%YKl|l>MgM>P&%nUI zFd^k%e8~Tq3jg<;|GWA5fA!bx?NM`n$ulq<`0>^Lb$!tF|7-p){{O}P#jmyhga1$e z|2pr_{9p3_=Ko**|I`0Z|G&sHFfd4%{-6Eqk3Psa5N_anZLj)zf7*@z=YQRA{<Qrc zKLbO;iy!y@-G6>u9}<K1oBmb*kN@ZY&;MWl|K<O`%>Q?}o`Ip^<mdWt|EK)l{$Kv@ z^8atw-~YG&(|?8q|MdTb|9}3Uk%56B;n<(=9FM2}&$Ro${l7T_1B1cCKmLFC89vqT zeYXF^{Qv6pKkI*j0(G)LuD$)M{g1x7fA|0Qg#XKe|NHOH{9k7`o!@@_-TJq$m;YyA z___bv&;14ewf}Q8{PmCg?`i-4@&DrA^`HE8>wngNo&V_f^1a_~@!#I}W%-tWpPtvu zRQ_$hKKB2_&)I#w`@j79{%ilLy3nfs-cRFS|6E=B_u~2ZCI9;O{a5)dTmA3))L-%o z>mNSnzhM8Z|L^5}&EEn)KG%6H|Mg$@|If!j{*?wLU{DgCe;Ja7CqMhoxa8<B{nz_X z-2c7b<5cY5!kvGwh~GaepSA9PU&a6Xzv~$oKHGn^|IgomoLuAo@H_l{o_*_Y{k3EB zPyWCCfA)WOr{DSi&42MTfKpaJC`pEI`)~X9fBn7xXEy$~{y+c1|I=XD{hyJ+L2A=` zdy^x-uB-jtKlhIP|E7=a@BaJ$e_3Dj_q<IVL%@IQBzyJM^<V1#RUUu-{{uMD82J6O z|MX{);4x4>WoKY82>z4*xBqMXqxxU||BGMk2j@<Z=luV_wEw&O|D*qbkNn?my>55z z-}V>#zd<5Je%gPHJO5vQ{Ji&D{PS<|*<b#7Z~ePi>T7-3|J_f&{rdfHXI;gy@O|Y| z|K)$(X}WLH{NEpI*8SJMfBWKp@tNhH{<y#X@AEDH%kTLY|8@S~YW`pNfBL-t8~6X2 z|8evGH~as{|D0?OLh2{~GoR@GTtDak<3ICvJm>G&_P_D>{BJ4$U)nPq__O}+pYuQW zGfX)C&;9oO>_7dV@Bgg-1j(@C|CuG46~EPIi~LXD^8d;C|IL3vr4NI{reFPE>;Kp@ zeA~bA@B5Yi=I{M?`u}A6pP(S^{?EAL|CTlXU2gyHd0l_?|Bw0;|7ZNa2+6MC!r}D) zlm9>df8r0yvEbl;_iO#v^&9`j2mb%J_x;U<pI5Kj`+wr|{EPqZ{IWmt+h6p3ebsMv zhFA5PZ}ZFkAOFwHz`)=z?@ztw-}JUW|L^@sKmXtT+W9M>Xt{NK|F!>-|I`1<|2@Cr z|F!=s|DXQ<^z8qs=-G9K(SPfUKl?#h6^xCq)vx*g+iUkf{i?tDFaQ4kzIX2H`bcA5 z28Ib1|Gxiw|MO$_|D&KZ+rQ@j%H#h3pZ<UH{|6|hUxG@U_T%$^UElxj_=f+wzt(5{ zw|+7I&&mDlzc=3rdvv>P{{H?zvw!~&efxfW`<grV=RaTg@2~yk|8>9L*Z=>Tv(Dy! zdj0f!|F`b{y<z?Jb3gvqJ&*nU`~3aCzi0JKyS?#s{q=u8Kc_Z4w~zYozNLQg{r_ve zorf0OAM5je&%XQr<Nr7IzxDsS|9j#OLYz<d5B!?1{PXe5Z}obz@tObj2mh?M`oHe( zf5D&emjAc^w=i1&KPPR!)u#W>_v{%M*yjKLDgr79Z~UL}C*JsXb?5(?$^V7_*)N0^ z+0*~CGcY*3`c)tPyS{5bs00Fs7~j?SIsZ4?);<4k0aB2#?8p6|D23Z{IeTcq3{L;x zQgVjv|JjxQ>%j(qh_CZ^p3~Q{{hxX1<L&>_pt9`0@PB58-}BY}yZ-wFNl%ympVZh} ze=B?a-y3iLzj<Gj@_+iazt{KudjYAv<@c}u{QI-&gU=U1HMaiWonHUH|EpX3dinn^ z_M87n*Wde5|K;!Uv-gv}|Ch1-$A7<mi}K&-Jp20pbN}9XRlomlc=@;Qr#|-A{r_42 zZU5H4{oD56d|v;@{=fgf%BTAO_5Xtkz}5e!U#s_e?SJvx{w@DPvi@KFf93y^|4;v) z{eSlV3;Ey2|7C)*zWt;6kD#0mNp+wk{s+YUGXG!p`n}(7MgLFzEB<rx|BUzZzl8ih zHRJ!U@c(tc_KJ4f*XKX^5&!r8@A`ZHC;vCEzi{u5|DW~$K=Ay3lze=C>i_b8j18au z6l=bJ6TbO#{JkFg(?5-mem#5&6e1rWIs1A2S47U%SNiw-KjVh~hTrUO{fm29-?rud zpZdK2AfM^~*Z;@9;NRsP|Agi0JO7`E|HuEPzT)5Vl7FGO|2aXmveEzBJ>P|o{6Boh zo?*tBf9AXEe%k-D-~3-4Qa&&*_$M6kzjNDv$?N}D{{Q$t;s4qHPyRD9fLawF?HRs- zD!2as>h-_;|9y%7!_UAl>3aRzdfvDHyMCT8ivEA@e#Nh!pPxSZxc=+@+JDzheJ?wA zzv|{^!7uwCf7L(xuD<LyJHwxPzu(#*A22X5D4hJWf5ksz$A9(te>Ok=|NT`y|5l5y z_6!USA79sB`@dw}|H%LD|6kT$_!|9x`9J;t*YEzY|7s74%KuOQKLwR_3=9TY|IE++ zj0dGXFc!X6?{%&I?1umIzwT#$n*SG6>0kJ`|L^|u{qcYF|1JOjr9S2F_kXa83R;#k zFfdGh{{PK?&HwrT?SJ|Iza78-Z~fE%j1GU}|E&La9$Y{j==u3x@R<Jp%QgS<|L241 z?L$B3|Bz>R^1teA{X|gug0>yh6mQklU8z6%y8qq$KPTm1IR3BSZ~Xsnjh=j6-0uIk zuKWLIWcXD7_H+Hif8qZG8Gg^-^lx(AzvKU(fBXMre$>BD|6kc3{qA4=cB}lh+L!*B zf1jTJY2^N`K5q9v<>%LBr0ZXPegCyS^zW)K|E8bXf9-Sl?_Z1O@AvpCU;E$loAtLp z>$ShyJN-X&UVcIS8~NYMYuVo}esn(anEk82;{Tubg6b~wx}WwS_|JYhq@ALE_CK>n z_t*Gq^%M7hub((&_pirAzgOz-n{9t3=D+O6fBV1xX8<RHfAS2!&;L99e<HXRn!Nvq ze8aEv*SGxszoyrIGN|?PzrW?%{eSsi<QWqFrT>)&RqN|>{#W1n|9=mt6e>rQLf~ed zNy`2DjE=ACeZSRP@2vmF`k4Rj|M~we|9|ppe&rvA1^>#A)cJ+|fAROv=f3m*A3|D7 zbN<vn`KhYh6aUx$FQ^f=?8p6I@~{6N0Tt%Yuhf672YKzM{XbCi>zDukqyHBlnSU#L zeeImT`4{WoLL$Xp=YQai|JNTsuYSA#+}r)vUi_V&_1oR_)&DpD%1^)j`u%V5-w!?O zYu;=9z5l8>yGGUi`{SQ6|HJofU;JO+=>3zQ{n!4_d~^TBcl*VEh5u*g|5N{W-sXRD z{ZISH>Hlxm|Fr+4UJpY4lm4?$5C;{g$A8)vo|hNM{m=Z}{_ROn!?59J{O_OhKi4xV z^n=Q%>p$e5@BjS&2~s{bcKW0LPr3f5{f7S^f6l-3Gkoh`^%wS_T$68n&tKp_fAN2Y z1f$>g-~2-9d+;~>@=y4ye(PU)%>U*8j{k4|YyN-oe|Cl$|2zL5{m*a%96tZ%|9NTu z^K$)1dj<xNxc^)KnQr;7{mlM!?qBQr$1k6spWY3scfb9N*1mt+vi^1IdG`zd`>yXd z+5P|KTX}{L|1ICH2lWdW7#JE<KL20z>paWP|9d~4pZEX%>ixD?9)YXwW9$D%{-3-H zln(wb|L=Gm(!+@_fBgT-{}2EFfGU&e|3Ph528Z`9&(Gicn*U!HoQFZCe*QY${`Ky@ zHUFcQt=wN@^zXy3>u&$Ux9Cr-|MItgUmXKOgW%);Cw>%vL8`}RV$|dPqV-wp_kJt< zw%_&t*7f$g>OZOf-|*-7-G71Kf5+-VdWgsQf4|-T|L^s`JKozD{NMfjqiy{CiRTyp zw*UNd|KIKN>h9ZL=Rg1B)c19l{;##$ek}Zx@V@^M?$7tTy&%4+=AHO&=gD7-XTAP@ zzsLUczst}9zV3H_^I!Y;`gw>H5%2Qn{D0<z|H*IaxBT6E=|4~A|DXTw`~!6=<Ntxn z+y)VzjsKVb09CHw(0UN?_vlaibN>rLT@r_Rpjvz9`Tt^|2KfB&|Hl3E|3R8(;Qq)j zeg*~xAK!0(!FdU+|4RKj+yB`uAN_m&f*S*$?O*?AX!twd@_+cNdPMhQe&GM^_xnK| z(hL8l$Jf8V@J}=M_kHRAw@hu~|DT>`Df`v`-;?{ze<Snk>+2(b{<i;~y!Zd#Z}<QI zdwtKx;$PtV|3%e*Yxl3ec33W28+Y%!tS{m5fA!q?wg0}qzyJT$)!9G(cm2Mf{HNaj zpYiqkpZ>*Ot=oCD?%w48`g{KgzPJB>{@?ec|IxSNQR=bF`~Q8NZ~jkz?f)s)<}Z3% zpZRy?m4B=Mul#@V|LOm;|Ihw^5!{2>|JDB5{|-nq5K_aa|3Ci!GpHcBT>ne||HAse zulGOurTu#Up8x*;c7CeA`2N4k{{K^K|JOhH9{TnFyhru#{~vv||NH+W`|1D9|6kY- z>c9St{~P~z{(qE$KtA%{IeUfz$A3S%{&AnXzjEGx`^vxa&;MIb{lEP4`&)nIC;p%M zx&Ar7;_Sct8{=hf{#Sf2&%n@p{(n{1|DW{?Z|Z&it)KaK?}h(7GygvX_2)o6LJ($n zWiNko{m<9-l8@^@J^!!xU-{qi{|pT*ph&y|Y9`FR@xSBO{y*~n=kNUI{|{Weusi%+ z9{G3q;ji^Kum4~5|KtA&{|yP05J8X<BI<d5ZB5-@*2ny|_1*t2|G#&?epTiF&A06t z9{ex96%Xphfs&Nxv;VGN=W~AgU;TK#?f?DZ_0=nmt^_5xp7{Tp|EZV$J^u?-$u_UM z|I7Ys{m=dHj{RTx|Kb0ipfK0}?+;Sh5cqk2=DGh&Amc!I#)f~voBn0D{r$h@zpY07 zYf#sqt?&Qa|Fw00psh6J*ZaSNoAHQ-JUau!44ePy|NVc~|Neim{@49~zux}W{?E_w z>OW|h<R7S?&yaSezTcqk=lo}%>wnjSdLqK-{vY|zpz!~C_P_2w(4N!s{|pA47r%X8 z{7*Zsz63Om;lTgv|L?g!-#;(@`Qh`ezt{KG{o-es@IQP0f9~)5KlL-*_&??A{4byF zL4zgg|F3+S{y+S`=00$<cf(undau{|_2;HrZu<ZE)>nDU{m*Xv@LpfP{{QM%;Y+{o z5Baxs-u_$H<^TS1ef9svZ~smAH$JbAUHM<|mw4SjhQG=GZ`i-J&X5<aKWFqW@csTD z_W6H6<3%4q86DJ2wfqZir`l)!lXr+(^MBL7?mv6~cQ3hfRet(y|Jsjt|15m=>wU-f z|9k(lGZ_3A26q<fzs3LS{{tE;n*ZnMe}*gd`<C7PpPu_?=AZq4_y4R{+4BEe{o?<i z-umnRKR`(`_4obD|NcM!dtT=E{?Gq8|L*?-hCk#P7?vph{^#txrapJm|Jx`3e%6<$ zfAJ5LtJJUmKl7NK;p=|oZ^fH_xxartzr5xj|9?=K#PImZf93P~l8Jv_)xQGuCybAR zN5|AbO*Z@G|5pEpc@9#J>Hm{g{dXm<`t9R4_1*un;~|lf__P1e-~Dp-_p|?(=KbI5 z_I`iJZTnS$|I@$kkIq}a|NZ>e?ddg7tHWRZ51SwTSo`Nr`SZ_z?f<k__HX^fO7-*g zTmGF-`R}&>zvSEbKjN!D+kdQo_EY}%>Hm`U$jzSmNq_7c_E`Ks4k~s#tN%4*{FdMG zKhyu){C~_0Xa3(h|9{SZZiY&534ZLq#s9g`A)KG}AMG0qC6fMccl%iH_S^s8ANw1i z9tJyu%Ig0Spnh<|f9c!*=e_!W^Y#8e_CF^>1GM3n|LI@;TmGKk@h|*u|Nr(s{XgaZ zLMn7n;Q(sO%K!KO_htT{m-|7%|76|&sQ*&8|BHTofB*M9S*!i8ZvB?8{3rJJ{M!G{ zd;W)f{I`62J;Q>3(=Yu?`wr^#GcYhbIr)G3mHM<3|KIo4fBRFP^4AB{xLQ#AC;RXG zul3jdU;N(#9ioiC_a`1ByJ~*kFFf}@2Pmt8utD<Q<G=Q=-}3tZqU-;s-TPmE|Mt#* z(@ifkFfepJu7Cf3p8WnF@t`#O|HQBPRe!!fIu_6|vyb%^e^%E2eO=G<`~IT;tG?}T zhI9<=Pv@%c%l+~5w?yjW|N1%g^|hx@{ry`h_v-$C<G=5>|Nr+r{`|93pX<Mszx*5j zdpG~@s<%D=-<RLpy8r*5yZhIl%-AWr`(OFn`S$T_75^50t#|ot{_F4gtp8{1zkphB z;{Ts-+kf+~{QvX+Hvj)r59xeAneXtAVa<QbN%r$H|3AO<aq2U)GW&PG^5<XY)4r`% z{%!x{FEc~JhoABOpn|aBZ~w{vrknRq|1sb4oBhN8!oR@7c;G^tfnmwI|K(dTYw_EU z%m4L%1||QruK#mU3b*=KA1_0jZvQTW1}YdC7#ePV-aqp@sJ9LZbOwfi|1)3zIdtjs zd^Oqqu*&?SJ;R3onV;gHoc|9_PxgQ3_gn&x0`}kicmAKA`?vbc+pu==e)iuVe_QRh zk7u%zul=+5-v3MUSAVI0|Ni=}x?lePjbHEo_`LVO`~CV`e{{?KpTGF{|A)Ws)|d7_ z{r36${hR04{`-ErzBIjlz0Cg?-$6BC^zHu{zh~F}168U|=7)pFes5*3-}|dR^Y8L4 z|3q^Cd%yNy`VG{Q_x~6F@BW|rfBOGztba5A+cmrc<KIArfV(U9Kl{J^^Ys6^zUSxq z`mgVo-;dt-<MVg7zW-PM@BRP$ul>*Z&+Ko{{y*~n6&U_O$;ba=e%3#iXV5rrKmF6W zI#cWaPtX3?JjXsb#(vG6`nRw7>%lp@;$JvY&Q^L<59$QTC;wmk_Wjg<=^nq&gF0@Y zuHUEskLnp-+4sJ-fB13wkN!VT{~!3*{=DAndHmIH^B4RFwUqatt+03eV}Ir^bHm9u z^_yQ$|Nr>E@o!LH;b;9%dxlr`jbG<y{GMO<cRpxT{M-FM{{KKdDfNHipf(|7jOx>J z&`8_S{|pQYm4C1Qx_;r``WgRqwts#9r+4{$`*=OM|55*MKhIxVlmGnB+Ud6Pj{mLW z{$G0YFMWGG!-4<Lx9kV|fPsNw(wYC=uk3}N{QrK;zWQJN`hVX7x`RPoU5Wkw(*OFu z`ZfP+{g?Uw*kkv9t$+3ZQ~llE|H1zcgW5-+)+nf~V_;bPtp4(x|E!SY$G~8a_;-2A z-|IZT|406>4)}KsRF(6{{=fbI_n#j}|AR+T-LKWZM=Q(u85j&I|DFFg|I`0(pmF*A zf4|=TAO26C;mZG`|6l$8V-GU^%#8nXiGM!XpMC!S+kZ9&1_re`|2zLPI{aII{g3!h zXwS+2KVyQ>qPNf8|Ay~@j3+h9efj_0`t$ws&p$nUzV-L|+P`1qL3O*`fAM$qPvsdm z{MUSK|MGb~Xbi>w-^!=@|JVNuuKB;^dfe~C+tdF|xfcI#j(%~<|L0p@+ZWZH-S}~O z-2b@$;aAsty{}*SC)>7u>w5cNKfAB|zxaKA%Kqf@|91ubSN@{^=MUqr<Nr3+-zvXg zr}b}6>Yv5;>Oa=s`vK~dJ_gNhfaW)fe}VGx%lb=y>>IX3fJc+6|BHL>Ty3wneg3aU zyMH>L{d!;U{r~F!{0s^I)Ip;r8~!7W0)q!;YkYVAKY#0o@z46-^`HNHWc+{o-wixu zbM61f{|q<&pZd0c`QQKNf6ur4R{tDP3V}O*&fosFw?+KFmGXc4<loOhvnqc<;{*Qd z{?9zl&+w|={mt`~ul@JV+rR(uM;_8zI(G8E`@DFgLq9-6W(*7rX<h%<{@?h|A5@sv z`~4075Az&kj4=L>z1N?Wd%xW}e)GQ=Xh`b?s4PGHNxt=Wy=~pT>;GQg`Ip^$uYTpW z`jEx{&cCbQekZOTqsLWjKkxk4`lr>_zy2$I_M7)V<L~^F|9b2G8{e}3xc}R;`bYoI ze765K{l9VDxA}jk|5pZOs88zuReshpR2G5?)H(l!zyD#p_|3lH|K)ja?7@}i*7^S} z|BEwxy752bcXjXo!hhEP!Lw8Uq4`+($p1(7pQit3{w+WMzvkTf(A)J*|Cm9!#_aK5 zmXH4pzVkDvZT^3DUHrfP|L5QQKRN#oXjF<}#ebG-^^4xtANyMWsvcCsf5tzx^#n4t zwLj_K<~!H+e>R_2_pfGW#h>iI`SbU0{j_)P=k0OdYFPfhulVb|`S<+0{}>tm&%gW+ z+%I5YVDK>dufOWQ&xHT?rT@SA`G4=P+s?XvpsG9J&#(Dk?N@>Z(k|Bjk}vrS8O1C$ z|L6agA3Vnhs*1q<!7qL#|K7y@|8^hV+_s3X|G9bJ>l44$r_TCyTKzHq`uf~2^{&5# ze!AcP|Kc?}1A~O&zy2P3cjS7!61^V(AMtVdw_Dlr>Hnj@#Q*-a__uofC;rp*cizgE z?!SL^)2HwC?~Ygf*#McK?f?Cc`TPEAx%;2L%Ko(3_1}2@|J(JiUt$i$JpA2XTJkTu zg@mS>$g}yg*VwPxS@-|!kIirFW1$87_Wu?){(t`Zd?q4AxE=u&H{a}!fu>Hh|DK=l zZT|oBZ^6TjPeG$63=AFz1u%!rAODem4(gIT>HI(U|J>hy^1<WAm0#^Y|9A;)o`EtJ zc(CKZm6ZGc!95R9vF7mi`K{0U-6Z}Wxd9z7-~5lC;l}@&pX-<YYe#fHB){(e@$Yr~ z|6lxX>wkXz&i8iyrEUNBeq0}W`19BOZ)RQ&1ocU5Z_Ec(#nY$m|6go>?f3os|9{`_ ze|NS8G)Jeu{rdgyzq4%LY~1>3@9HoAWB*q_t}l<xzP{H~4pg_l+W&EOea>?Zvw!uM zzTJFY|Nr0L^>KSU|F7Ti-}c!5?~m<^|LVTKANqEB^qc3lKmT8PE&uV~=l^f&^}p?3 z`gbZyJqDVnuYCOf(l7taznZuHO}{qZ>+Swu^MB0;^$>pU|0xgd!TgQ>pZvEU(hP*w zFrUEV^pKGHBoCT_$zHdA)4$Wd|38_p{a^g=KmRYk{cnE$?_L)l`v1M=zwiIz*Ziyg zum7$1XZ>gXzq9{${=W)_KkHEnf{9Px|6yhjf6~AH#r_9>=Dzy*fAaPJg=iBg<^KdW z-5j0#{vtm*`8_)MJv#Y4I{Cd}bn+XqvS)Pi8#H4B9-$eX{2rbBW=J?RI{7_1`8_)M zJv#YKaGm1l<oD?0w>`t?<oD?0H)zf0=;Zh4<oD?0_vqyJ=;Zh4<oD?0H)vbe=;Zh4 d<oD?0_vqyJ=;SwOYbUnJZ{|<-?axot0|2W$+RFd{ diff --git a/client/resources/hardnested_tables/bitflip_0_17c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_17c_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..01c02bb2ba0914e86171d439b0167d823be8dcd8 GIT binary patch literal 919 zcmZ>Y%CIzaj8qGb<ePZ)1%p7!|MS1H_wjOQNHB44*wC|pfq8;+HUks400Se}3g#6L z*y9->fG>ezrUAnYA7PFJjsxrl3_dd$eAGBw3|JDFXE3PwFsKQ$9Fkx%U_8Shti~YB z*_6n`D8cZIfpangXUjo@HijMsktqu~X8OB)$x2*u;j)|JVqb|FZbxk=itt|+X|evO z8tY`;8peGpyk|oVV@Fbtx})Ecg&jwISR0ZS&2zjXzGR1gkImvs{+888pJ*Qt=Qt3t z?s&s7iFnN_?jx~Yr8eBh48L+8=zPSt^oDgu!NWW5camNt_Q_`yyhvVHki0=WnZM>p z!N!O^u2;ghR6E`{c<8sYyyN%&8HdjZpOIM1Eoi&wBTw8*KQZ+ub`QVvFQ`u5=)cBb zzQ=bTgM*L6wExH_{5rSfmA}S=y`K*pZNKMlSjnbuSnyTc>EUbfH5>LV`sHTD{Z4#C ze8sm@^KN|a_;cuIr+>$ur%BdApQou$NPO2V?${^B#(si-&F*f#h2`R}*_Z4+^sqYh zz3{?1)o*ev72M2XZ2D7v9$&Cu=#~0{>elCSjfstajy~toTl{^-F|EU5Y7z;CRov|? z@5K4!f)`#m&OS#*mh+y(!_HEJITCTr=PUNGSITxgET8_Qj{T=>^Nu%u!cE`g75i)U z2bSmu>^FWOXZ)DIz}~3d@u~hTJEa%(51-gJeHLHyhrh)p)t3E9#reo9Kit$S4>x?3 zm^Wel9q(2@(Tda0#gD~H)_pp9Pw!*#!gAs16+2?N_rzFDPkLja*K}BxyII`nm4#os z^FIzA*3Mei_%DYH4I(1cltp7Xtxp7tyoyl0QZFnK5mc~4k7-`euAYb)h7rO7%U=Y| zn0h1d7i$cc-iJ8WmcE4z2R$!@x-op^c&GRvVupk}*YtvoNi*i?gmyNIHuV_#aUDrI z+RfQ_P-5Z(KlXy@33FX<sOc#0iEXG5D$#ln+s-CYKI4U(?2!k{IlE=lS<93cJS^B) za9Ef<;Nc;IWWIL34^xA$cP&}?MpP$4V}F~d)<dUIJEwz6Q@dM2#UwlfySWUTRtqJn zCKw8>Nm>%2%#tu;VrNoP5;tc@LXwZukr{1TM`q}#Hg>E@lsK@)jb%nsm>M@X4;#yo zqY)b<4oJ+1NEU3>7GqQ9ibz-!F=IndM6iUIgv5+R8=E2$!wkZBl3Cjr+t|c(5+f3O XG!2d{Gfe*9y;Et9h6lUHt1k=y9tD4y literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_17c_states.bin.z b/client/resources/hardnested_tables/bitflip_0_17c_states.bin.z deleted file mode 100644 index c8f72c15f169d8251427eb6e7e29f47d14f71e68..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9694 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 Q;)b&pcKl~rT=TgM0Da*TF#rGn diff --git a/client/resources/hardnested_tables/bitflip_0_184_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_184_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..5da967674a75bdd3793978b52649b9ed0f65156c GIT binary patch literal 6184 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 H&R-1xch7L! literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_184_states.bin.z b/client/resources/hardnested_tables/bitflip_0_184_states.bin.z deleted file mode 100644 index caa5e8bd4e720fad218a9e4f3d074f2bfa04e957..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27244 zcmb=p_4aOV)om+&wFhrr-o5c>md?AJl(Na0w@%1!5;@hTGU3?UxOGC8d0ZSAPOz(d z`2X+x|Gz)pzuv#T|Nr00`oHgA??1nPe{D@o{jZ<<?dSjh`{r~0@AK#DZ~r&1eg8Or zzVF}V-_FnfcmI0*eHZ!KFTyYXzb@bTZ)wrzeSiP{`hWI&-?IBs|Cjy#UnOyVtLjX< zpOfqDzdhf5KlcB6>0j5st≷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 diff --git a/client/resources/hardnested_tables/bitflip_0_18c_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_18c_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..88f05ef653b311820c96a49684ec4709828078dc GIT binary patch literal 1614 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_18c_states.bin.z b/client/resources/hardnested_tables/bitflip_0_18c_states.bin.z deleted file mode 100644 index da5c55a2d40e81ca5d51a0ba03f03a797c85eb02..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19919 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 diff --git a/client/resources/hardnested_tables/bitflip_0_191_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_191_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7303065d9be963180254f5752241a133eafbb26c GIT binary patch literal 5983 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 E05x6ReE<Le literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_191_states.bin.z b/client/resources/hardnested_tables/bitflip_0_191_states.bin.z deleted file mode 100644 index 5a4b9aef16402e9d9534fef516d339be18ea6840..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28438 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 <zH|8fB&28w*Oy#noE9_ z|7~ycZ_S_9$N%5_e|`Rc*w_EF*SVke|MpRT7QUX=PEaQ+SmgiQ`n!jI+7~{r-&*qT zv&i4<=knLS{J(Bp|M7ig<mu=CWxm%>dA0w==ly**&sU%Szwm$W|Lc$bU;9yf_Va(G zul4Uf|G!cHCEgEI|Ihn>H|YQQiho-_*Z2OPNbJJOQxE^U*#C-N0-AoCcFn#Eyh=q6 zx=N)!_wVO<Kd(>xdLG<X{IdCf`_tXeZ+-joU3>qXf5~?1r|*yYd;0D7zdNthf8SbP z{jJ^vI&}Qs{eOE+-@E^}=a>K5JLUh<uh)P7z4hbw^?9rB{&Rm7ueCp?{?h+r^`G~@ z-tzzc*Z0{^zt(?~|DAvH-(%28J)pBzUjN_x<Ui_e@cpX4z)PF;|GWR={|z36+z&b? z4RVabV^FdFWd5J&r$NQ+6X%kDg{!~hZ~g!3ioErI$@%{OfBpM@d+F!b*%$0X|KI!k zecGw{KmS-h-5>Yo_p2}SRsV;d{J($KKV}AlfA25s7rh?8>Hqp2|9qjtWIG=H*{|}i zxc$d{slVml|L1qk|5~XBZju)4|1tm1ewmN!lRxj@^?82Y-E(EX>m~lbxu$yd_W#4L z?|ygq_w;|~f6x}Bx6<_}i!Q%Hw*#!}`uET4@cZe{=CAiZ9J}w>cia2*BEI!=e=WbY ze#_tX-}b$yd;X@!%UA#5|N7?nxq8F8e@}nyxBE6#K5qNJ>3=5Ie_>|m_<#IueO>9V z^Pm3j&;B0{ZL2%*mHeFixZ}jNulJ8Xa=*T4|K1<hKL=|63qAFJ#<%s?!8Nhbt^cau ze#^f3f8u$6-v8up#dm-Df44IFe=Df2=I$@~Px0UWe4q6nvHG$fw1wc=@B5~(jCco> z5wmaY2d{I-I^6N^*YrI3WuV!MeRXfX1-`nr`cL)y_x9gGM*}{sudhE=e|@+5%Xjj7 z|KFXl@8f6R_<FmxFIO-AU;6btXmR}1_wWB-{kZ=1`oHt;*2?|MJMmxj*M9r!PwQ9h z(*<YNsqg+<?Eilw;NSG`=W`zaxy}I^e6YUs|Mz#;IYY^RCx-vu`2X<Z^QYo1{+<7~ z|KFed(Es~iR&Du{BL9EU&*^*r$GU?K!`nQ6{(t`e%CFP^Zv-zfyYydl>;LOlzwg(& z``@JM|LTl?>C5eR{h$78Ke+DOdg#ON>z`fU|KH>G|3~HdFaP)7i~qXzs{P%6k3YrB zU#`*o{(t(b{igqq&iME8dHweP_1^y%gYxjx|DQj~{oB6e|LbG-*PH*_{Qt%NoL~L_ z>c5_^`u4mGbW)Lhe*U@Jkiq<k_phTZJ@Y#LzvE|p8RY1Pt@HlxPscwcSN#8S)o0Ki z4dc_$DY=M$x9@)}Ui)Xx|KGE|)Yo5I`#<Yv{l#zLdq07iBn%9ZsFQI2zkTMP^ZzVl z8$tcg&-&~A?7>Ij7(<TmItj{i2kuU+{p<hj>-yv0_H%#RA7=Bv?+^Q%`uxB5SNuB- zZa6U<I6ATR@7BNdYe4(8LBncq{@2?Tz5oBc=E;Zu?#Is`0guDo+5lR}+)?j(zJAVs z=YQ+n!3#Kl{(q<NpZ$FOwEyS-PmlQbem-O^zs;xr+yC=^e=o89{`coQ{$4*-U+?!_ z9@O&P_|;xM_^ZAA=ikfsYzNP+U7NSR{_oF>)$kR<|Lw}3{{9x~e*C)oe`q%@zP#$@ z+VX|}SG~PI_4R&x`OE89-oHBO|IT06U(BywxAJ-1qV_+N|Mz_AulwBp{(R<shw%HL zH5@P3J>7i%|E~Ae)%6y2S9AZ1z5Q?Z*L~jqxo^W)*TmQR?VVq{cj?FdUw*E?@$Xpu zul=Hb|NH$t{XhNBd7FQa?f-rLpZ@K??D_heVgGCXowxbB^eg{o`wRO2*8a2nYu$Hv z&pH2>^Z7T6{hv9%elKVw;_La!zq?ERofiB1`}5}T|I<M;W%V(C*7N=Ef3<)ATl+Qp zAOHXM<NlAI*B{l}+kXYE|2+KLUjA)=z4Pyn&zGP1cgOzU)wT2g*LVM$KYxGE@BG+* z$6x<Xg?1D7|8f8R|IJ79kN)4v=lyE0T9ZFNe<Qe~_+~!r{FRtE(3a*;`v3Fw{>_a> zpGfn%KHued{pVBmzwiG7N5-f6r}ZcQAN~L4b^YS&|6SJCpW64Y{(SY?KaZ!qsRzx? zZvJ=v*M1++$t#g)C$Iec@zWq}XZ-)|^Zw7hi*)!3_^8U?XRjas^V72Wy!}l3`o&j& zZQfpg>|gvVd%fEE*W=^mb$|TdZ+GtNfA{_JAMLM9*}wAF@%0k_|5t<O!Vms8d!k?c zKmC8^|1-bzlmA|PfAMeqsdcfN?ayaHc7Olgw-t2)?cTqeU*o@h+^_mSUi;_&>SOaS z{alXHH(Utm8?OE7{(j~EzrW0P|2zJ_=Fj<e^$-7p_u$MA{rB_#=3D=7p8x;T`~UUh z+rEb1zEyAk_vzQ~r%(T%{D1qs|M9<y-+sRLJ@<R}yZ@Ds|KnQCS^h8n-Ou>yKjr_H zf|>zu=l?(cU;p2F&_PsjKli&ovN!#^{^HO2o1g2Cg6Gk${;L0M|N8sd|JVP$c^~uo zKla|=ds|43E(T|5P&HaC{YCzKeeb&eYd-&Pdw#wD{QA}2^-q4*Ke0E%-qq8c^S^4& z{{c8c<?{dU>psKIt^C>l2Xy@1^Qr%Jz(=S&{V%idzwN*Oo6pyq{ew(?rOf#MKK}pT z&&ECb*BtM^b?$%cvj6{H*Y|z4U-q~CZ~p1e{Gb1yuw?)(zI?mc{(b8I=@;t1e%t;Z zw4Gz;_x~r>pq{Ju@Q*xn^6kXC|C|5kFZ)~n_P_hTlmE+pz2E=uJZPl>Y~TY@$U;_6 z`~jDFZ~klF1|^D)dH*;3Ke->Yvf%tRkO#KE_;2)2`aiTAIKMM*df)nf+sEgxAFuc$ zc{}9sXZz=$%%7j0e$8Iy|FKliDRuilE#GhV?Zy4)i^cxV{U<j)e%=4q$?-oQe*O1Z zesR6`-yi+|uV1SFYpq*<@As{;{i`p>uL6zye7pbs_y6}^zwUpE{Xc)-y}k9dSEl@5 z`Rn?NNNxMtzhD1=PU4+b|K<6%|NTen|NY{>c1r)Py?o?<!+-ae*R1@XZ})FQ?*Ho< zzxPl1cj<3_bl3lq^Bb4cAK(A}^!=cpAKx#3Cx7?<_RIhOS}u8B@n8P_`X&E<ep>&! z^w|I6AK||%@BRH#`Q`slq(fIWep?^Dul4ivs4e?%)?0#(TlzR(=->29^*#U3yX*YF z*#GbMh5K{gUwXTA&%eqax1{1{cAwvqC29Bn&%g7JpU3Oj@B3HtW^ujdKU2`u%ilj+ zw*I(U^mpmU^-+K9Z~gzjuW#%BYmk$vw$J}B`04(tzrWZ0IsfLD{jWdUGycX`{k#3= zC-eE^(>}AW-}yf~_TT0DFY>?b=l!et_T29Gf4wi$KY@<-Q2+nr|J_ghb>MYI_K)k& zLFc1`|80J5ua*CI|JVP=KdXEHjxYJQ{Ez;hex3TWU-iFU`@dz&KmEtQuGjsxm)HMy z_N@K1AMvyP@2~y)|Mh3X|4(1<`t!f)_5Ef0?r;0IzW1v>Xa_|8zvO?jSMK?04_dWy z3)+1={J;JG&Oh~U>_7GY|5m^8|NOu6U%j*6boPJc*?;l<|E7KWuig7!rW3UM^0LU^ zY}kn`OFwR&^)21ykN=<hKl1;l|Nh?zS`L1z{?Yv}`@x49C4b&u_0#|2^Zz&g-~R_W z7@|J;4`>cA-s<0!WA#t|pZ?!J=l}Fu_3oekN8kEC|Ns4;^KU)^CFKeH7s0dKR$sSo z{D1q-zwr9+>sNW#KlzsrN<r}BRv^a={x3cM-w>J|W5C<Auy+jQcm6*G-iLG=v{5zw zUpytJt^9wr-oDcA*M0u);jh;Dzu$lD*stlzzvHi7`M>n5{N4ZGeoB1W4{L3%tNFiq z-yff=+gtx_{p7vg?(c2nrJJC7GUMm|?tiN{{*T}L?f>n4hri9g_g@dRiu1W$eQ4#k z`foqu*M7dduHxUUkLzVYQ$5!&{s)ggKmULD|A}8W>p>~|Pyd&C%l}3Gf4|%Rzy5Q* z<*)saQTF+JK)Vim|EvC<f6eB<dC-6B|I`1v|9^V9{!9Jd&+Ged{0E&4_PN~qXZ_sI z^{?mF%jN!;{-6Bxzuzy=0<IaLQ<RVWkN6+|8eCbS4`epheOdfJ=a=_&`>R*}3qGzd z``iEj*#D@1^WT2HSoWv>=HGbmad|)YUp)VR|K5KeKd+x2|E>P$Rq%wn{{Q~}_4R*# zueYyX`={v7{@#E3|Kh*xoKnAa{`0%%=ez%(Z~yOo?EgJsb(McM{!{MyfARJG#lPcM z!;Yvu|6l!Iciorn|I?4v_x+e2ed)g>sH!^ie@(sUf5ZQeVM{-j#{cX8WB+acANx<> zo&4b8==mS*&;QZ~o%T|%2Rgg2p{C<peV<$AzwEiclF!#y*)99I{pp`oQeWKX?RWo| z{8@gTUp;uAr^(`f%nT>GUVNSY=Kqh+^~#{8KV(31&*lHILjQMG{mJJB_3_+~L0hBu z^8cUue_Hy#mD&H_|JG#xFAw_@_WS?O8^LuowSS^P2O~o|cu&9nm;G#i68S`BZTr%% z^5Av-5AOb3|Ni{bzpIb`W`BG4e^uT8m*7>C^XJ#s)Smgxf6ws$O}GEsem?*6ryV?{ zIK7U6;qm`3-{<c8`)|%S`{~obOQK<`LmcM)-2Z3)${&}t({=3reXW@z`oAmgzw!Nl zw?FAy+v(c>|FG*1s7WsHzxbc~wXgf5pV`-6KVMV7&FKHE?f=`)pZ}-+KmE-9_XhvZ z!z;1)Jfz{w&Hop_^#?Vg!>{~*zv92o-}_FWdPDcc{B^SX?3Ud>zvteeU(^46E`59b ze*F5!$^Umkn@sQ5?SJ<r%KY+F>tAuV{sn)3`~LM-xBBmYV}Aboy7T?=dH;Xj`2MH( z>GA8o_b$8&IuI6g+IRl{HNVdPQP%r+-RY0D_1`!D-+cSOL3W>A+~4K<_x~#V`+HZt zyJz`-vnTeye}uRHU;1l(+<)om_ucB_{>qF0@9+D6>Hm-TP5*zJ{o@C%mxE4dM}M|= zd2e4j_3!#c-|yS3{`cnX{Eh#o|LXU?xA<HAI?wpb-*jpfzW<}lz`$U^eeQqRzw+O| z=g&*82cG~m_dhqogyKK{e@1?b|Nm#oQTcV-|NjsBUt99G^wj^S|F65h`S(Bi^?dpN zzn}JkN><Pe-v2_-c_*Ou!=|JEAH6xh`to^buPpWFc^}M9nFHVd`CsjKUjHxm{D0-= z`QPW%yZ=kRK0kKyzuln24&@md{{G)|@$|L$eCz)+|K4BrH~%jv;V>{X{Fwju|GWMF z?_c{d`v+)i3d8UJRp09G{Rm(ES^oL|3H6`rfB*0PKlwk$&v-fTz{XwAe^39P{vW?> z{@nkS{v~hCw{=eYdH+7Q6X+PYqMslC>Dk+7|K7i6`#;c-Eu;^2{C#lQ|G(4fpMPC_ zx&G=m{o1RO{%`#~|0}$;vGxD@eg8``|NfBQ{XhH559z)CGrT`t-+Fle`Ql%j|Np*! zfA6b!t^2Y0zW=W+0k1G#{{Q~k|BJuofBQNA<NY7~|0{ojrfkg5t&cjt|5o(>9e<|% zX$Boy5)V4Gq|UGY@3-mu)T00G(YL$&_5Ss*;s57cpRaGb^V<LGr}D4<U;1%*5GakU zKKy_2uY4_`>+9d=|BvkcuWSGQ&imKj_S^ku|1SSmel_R}uN!Ig=bry}e_sFj|DSDF zLw=wAe!mKI+E?_8_}BHXKko;fYf|>B{u}tXlJK9YziZBd*Coyb9RqIlfBp4;m)~kb zmnLqXZ~y&T{msAoL4#X=>Mj4)o4(zD>8tw1kN5X{I{$C`KljR~Q@8(%|2O^X{~z-; z|63RR_4NL@zUSY5(0+sYn<p->3)lW{ap>Rl|M`FCgVyeJ{y+Wyy!8J>=su$E|LJ}I z^UwcZ=UuP;@&BHG```Q#|DXOJbQWyf|N1vSjSIh)@0Z?wzv%CG&G~!(ZvOs1=zsD4 ze=FY~zkd9F{^j`3f2?o+w|74-`S1VIZ_(M$rQX&bsSnVquYPC$wW|OBvpxUZ|4aUl zegYb-%>2E5(f`Hg<dy5c$p2kl!~NI((7&9O|EKTs`YHZ#mF0hJ+5gIKU}rJM?)_{0 z3cMFwKkENA8H|Jfr-L^8uK0Cd^nd2nf2ZXBAFThkpXcBIH~;p(_*sAU=k?0p{uAmy z)z|+#?^hr9`~Ul&>UWEM=imSIcjvc1r=MOwZ@)77|M%xbKlgvBug$TpPmTWle);}A z|K`u1^l$t6zptkE%hfM_S)c!Nqg>qYJ>P3@|6TOE{$;i1|3~-!e_Ecs->+-e`Qyj_ z=l)v1<=@Xw*`PXee(j(0cK@^c|G&5W@Ap6bf9f{yiOpBm*L{utKVSR5dG){fKjwd& z|JVEf?Ef$SKk@&4xxVr>_9Z3T|A9{jtM`XjYI)879{*f_@$2;s_VfEQ|CKL2c71;T zt}piTmw*2M{QN!d%lFSzLFMW3^wNp{cl`JaZY8B(uV-L*^Z(Xs{q1Y()BYd7{a^Ku zegD7jYru<{7#L2N{MYaNe@F43xoG{X%k|~||BL)@|G4?SJ!HMf?_>Xqz+1_4Xa4V5 zzyJ8Z|FyZD^?tYiumAL>{!@JUzuN8KbDZt}?SBh9&-Q=eZ_t@{fBv8Twf;Y3GuwlC z|Mr*9t*<Ekb$-+T#pmmvfZA^G6_5J=pL6_u|MCC)+JBp&^KS}=|J48g^?v^R#6PLF zbyv#%y*C1#NK!oKzu{Z^H}%o;>Sz3Sf5!;g^P4~aZ>9e4{Vkxq=70B}u>W~}?|=6+ zv?KUH#nd-Yapq74x?aHe?f>lmpkc7>m+Sw3t^f8PbaJowe-H$%e`G*g4H<v)AJ%y} z*Z<Q$-v8nMulN6-|4;t=l<Y34seL0^zt8U2<MTI`NzMOnIeoun{Jt&!9{w=bYX&v3 zrrQ7gy3zf=o&44p@4tNC@uvuSD%$t?|0VuLzdBz3XaBT+ukUC6{Cw~Fw%@UH{{{Vx zU;lUe|9$uW*N0#FKkfam|6jho`}=zFvOoS;_q&~s`uXzpdZZb>dYyltuh(w~tIPcV z^91C?aqqwNpFg(e{@(9)8#K57uKsq=pXJqks(-Ej)yDsucB;SLzV!c#fBWbDdw*Wh z_W1ArKk8J!o}XSHyWaTU{KLpcBi!Hm-}&3mc$5GATkH3J(w(#a$|BhMsqX(%KJ1_J zFZoZsUDD6~x-a+J|Glf3o~Qrx>-odiul+a`Q}ZnJ^oO6%zt_vz|1bLa@$2(s`M=&D z*Mnzio-bc}bp5o~`n~m6AN{}h@BjDGHGj9;L5kJCfBGl<4|{vR{AqpK_5T;2?{|Iu z|I+9C&(6zN*ln9*Uvc(t{OeEi|1JK1<NwDm*EidLzxls>;r=QA-_(Q8fp|Zy{tIZt z{o{Yh|HXZvDZk18=X{!P`#-Sq_5Zd1?dRD?-uk}?JiS++@-ur~{mSkCmM{HUFL{0c zx7+`JR(#CQ`?vAP|4V=VzkU5bet!Q?{rKxo|6h;(Z}#=?wy*WMYw9=tJO8Wxv;61# zK2O*F-}t}(>-A&yum8WS|0fT+OXcZ*<YO{J%KuNy{dYe5+yAOB+qb}G^p^gezwAZ) z=l$1X{)<2SuircW>K1$DNA-{XAFKaue;YKn{dfAsf5QKl{Rihn+1dZEp04k*`+xl3 z|8M^xYmKEJ|Ig0+|Nqj*<tG1>|HuEUfAVMlm4DWg{@=g!@BbgrxtL<0an^>K8)^I3 zJoT5;uLsY}-~P6K)_wc6Y=5)AZvO+SXyar58DHjSm>~N3`FWj}=lA~P|NQ)X49YPM z{r~IV{+Yc0`SdH+|JU&T>OVgJo#21#bD#-T+voP626W1n|H|j>_gVdYe)Io(oByHz z<bR&m`G52C|4*-AC-Q-pclno}_^<x|&Hp>!{+C{#4?3E;5PWR<U&zU@?jQH>|M%qQ zi}%^4d-q?u^e-HAV)f<U>$h$Ems(f9BKNxY&+w@K6JP)TnET~ljnDpNb>X-EWv@5= z<rP<3we9r(4gX8OM^5_x{(R<t&yxTB({OIYN%?=>_V?;_Z_i7q|G#;Bzttc8tMy-h z-M{(!|2<#OavR8!uJsq|*Zg~)yzlP~NIxzA`2YPibyt7<Y1sQbe%)MqvGD)fK5Jh) z*S{z4=bN|l_x_*$YyS4R|2LQYJ2UIwtmpS{{`+rfb?(D|{jK+-tgmPMSN_)=^z(M{ z|F_ToU-^c9^7FJW|G)h@-?@J>c;eb_6+O>>{sX#S>FQd0scHWq8_?_P%k%!;pMU!4 z|4aYBZrt)OE1!B5<>}Y=w{Q7>{`|LZ*GCttAT3rg`&F&&TVucZ|Ap)BYazE7+`oT6 zd-wl^^ZxEx`wzCQs=n+OBSX>g|DWI4M|u6fdiy?XW}P{9+7%0>O?&?R{&_>ZUh;YV zHn;x<``7-jl?Ii$*;Di%{;zzyf6D*gHE%Tko7Y1&Hx=FfpZxpP^Yq-mPxrq0FZApD z=KtQe|36RP{dd33f6L2tdUNYt?d^Z=Z~n7=-v6q1f9w&P*LObszvFMo*RSH>lWzOB z*-s6R`w2OS1$u0~{L%maeofAkUj{nB@bB;P-x{^GU+TZ#s?S?lQ~tMf`So2>PyBs< z>`U+b{PSOf{!P7B|Ku0wU<k;(%hYZEZ)NxHn-u=#Uvlo8|5ECpGbO`8tF!w5%1gr! zVR`p6{`&s7Umvg5FI)fq>iX>O{nP#<cFN}Os$Yw;OcP6<mf!mS%GK}tcU8eNF=%=Z zbZ(Aa)&J+Fzn-HV-k$Z&eqY)DmDj8Pm_Pq&|LgpZ`%3?}ADi!ed%x=6{d@lvKYITJ ze13cXtN()E(m@NPLr?AR2tWHX{^bw(MA#4w=rV`E|C0Zc|JGmpwf!0Tog;{=5O$v5 zzvtM$<!|lmf2#iv&x5SmJhDFi$Mfg;e-bkPKD_ti@P~i8nfEXK@GkjV`f2{ZPboA1 zznA#G{p$X;d!UUg<ogixe%oLAx5w%)w7v|V_W#V6$>6<`uxWJA2>Bh^o7exR#Q(QC z{{QLc=dae*Tb2F0JMHWL+ZboFOyFJmdjIy9_kVt#fAhcYoBzqsPNc)NANM~`tp30M zxpMpe|K@eyrmLU+Q}6z7F}O#0!20cf$Re-X&+L<b|CIe%4?0G(5Yn^!{QqwJKmI=O di7k05|Bt`jzx&z$=bu2A=V<@qfA!G(5CCUWP}2Ya diff --git a/client/resources/hardnested_tables/bitflip_0_193_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_193_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b9e3297c51ff8e1efde396ec1359772b76461d13 GIT binary patch literal 2082 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�b<&wN2WOl)nzAWOYh%DkgPE>Ve7cpDQ#YMDb!O9~b1`Z<JsaI5 zwYfQaJZ84}td#Q%^7#9gBhW@7X~v>so{5I4Er*hhYMfZjwOVDPPg+94F~h{pX~t@X zGd8A*Y4gmO>66TI(s7cHjy4-lgu#(DDaP88GtTrJNbTuabXq6EvvZQs!8QqllPO83 ze0)|MmN;gZIOC+Zgv5!BQ<GJjg*NsWt&!+DIxRvX!d2gC#$>IY6*1kMQw|;G=Grtv zC)u!D)w#1PGGx<&)R0Frl^&clJaAga=-{EpEU6Ydp7!y%@mXw~Jmtu_;^{_4eins# zMvqn1e|jBc?^?_lr|BbbsABRVnaI>O$$+G=(4-AXXHME!im9yeGfGWt+Sr+NT3b!$ zRBFPp$cV!d$(G5}w8g}9B$Cc7ojS26CT3H?VTq&y?VeR>0f|$ew=hqfYT)B!tTD}X z(u_lAHmjxVVAh(LthAml<qUU_%!KtqM`lQbCPvJRILwin;xl7us)SL((c?{R;msBw z-6VFNij-K|^-<Ht<-^JcALW!1D`YlKO*zdo&Gn)8#K#)1{6Y^)NY02jtmd=nm|Mgy zg^xxS6>&1j5>MNBj1GO8d`P0<<jUZg+7ph3q$Vvsn38UA=2)1|IxWA1h^L7?eoUKA o#u#)PaL-iinJiP#W)R-YRk0x=A$8{eNAEnAa|y|r^$9Tm0G5ra0RR91 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_193_states.bin.z b/client/resources/hardnested_tables/bitflip_0_193_states.bin.z deleted file mode 100644 index 5f7e0b484a8631c8a76908d1ac9f2c032a2b862c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16026 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 YO(6QeId}~&X#KCi;s5NMPtJt{01%{{KL7v# diff --git a/client/resources/hardnested_tables/bitflip_0_195_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_195_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fa5060af8db68f386cced888df79c883b860b2bb GIT binary patch literal 2462 zcmZ>Y%CIzaj8qGboLL-lpTS4EzWVyNFYYtg8Z@Rdu&@d+u!b_Qh=wpQv@i%TFz7uH zo6mq1Ff%Y*V30InV2~n~#js?FORuo6$w~L+D|u$9WlBlRoBT&rOa8u=Q0R|GUCZal zp9$rd`Li>qr%~UjzNtF6<)Oim$qQ0+tU?}X6&UnPQ)5$is&#qf@?yh=!)zQWr;VJI zh2DnVGH74)C-O+FGFQrx-3h6Q$(p|f{{;Wyn<U4+B_(A&*Z#`x3;sc2!b%5@i8meW z=KRXttr=OrXvK@b¬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 bnB|etI&DQit;he5-kInpqM{aa)%*Yepm94r literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_195_states.bin.z b/client/resources/hardnested_tables/bitflip_0_195_states.bin.z deleted file mode 100644 index e15df41f56ca859152c24264a2c024ddd534f3b0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19686 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 MPW@-RF3Q&k0HWRpIRF3v diff --git a/client/resources/hardnested_tables/bitflip_0_197_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_197_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..5de5586439b07f7ad2b21bfcbc35a21d2d1a60de GIT binary patch literal 1352 zcmZ>Y%CIzaj8qGb+_v?C4ugQ&|Nn<$Wo19kUvJB?<FS0l!~^mNWJ3j;WMerR8W=1Z z95cEeaNcKt0hR)W3sP(iY_n1rq)bjQT%63proh0*AjRx(f#I@G1GC#q1}US2h9eA& z2bdi)q!^?!Cop7OR$zAX5s+wLuwcmGWp-fpHDchEN@2)2*~Bcsz|O$SxFCZebD0C< zVxI<HNdt!@1_n(nC6?urj9tw{_<c0KN>%lXTzn-}<<@KKA2>Oq*Esk}Rmze1+X5Ls zJyq3D77bt2?{Zr1k?mu-SvG=kr))kNEa$Lkypr&lec!(6P9@qr5;kn|l{c(**&hFE zHMj5L#1Auj3iM0rBaS}PbMyES@QHcyS$0-$o=Kl4?G&BZ^h12rncwZ3QeWvEs9vnR zMelmH@!jOsf<Nqh?15M6n-@Hcec67Xj=kuWf6lAvO{pK(b${f~y*T5=#&66&`Zx>J znNrH8uR8Nb`-RV3hLX@2)lWP8gctpJ7QgXionq&gnGx^YJA!xCOUY#`FSKHBoZ6F8 z`*_k$rLUZa7AAb+apRu&sz>{K8=pIOtNgy5G1J(Uxp^cKWyP8G!q>zwKeYY)uJ6*@ z&?)cu7yj%MKQ?2(!SSD*xA+wj6T57#tYdDnzVPsZvwmhJ_rjA?(?ZI$7E8J(E&U=E zQ54Rt79r`gNk?|o@!PS7Z@L-YE79qDcrdZ2Xh+O)wiv#{VzJ?x?V48&QXlLv7EiS9 zZmH0zb+349nDF97`7#~Z<;s&Mmg{x4S)_j5cwxhnx#4UU1x2q49vt&I7h|FMg86_? zf_>1T-^`3REbM-KZ{JcRXIQqpvRtx;b;8GWVLIyE;yrsDZ^?+y*(>_HuX}^_8S9>i zr^ypeRx~dxurloaIG4NKc~QYfk+0m3BaG4ve)!LL^03b3FXyROr%u1sNo<QqvAguC z|FhlgpEu_Qezf=eWbLlLro4IM_j7#A`YWr_8DAQ{(b-WMr_O)k|8ag#k^e2VM_Z>! z7#x$U*sEypqG!WQohc8Kc?=TU0;ezQZfR%M*{GA`v*uV@YR{^5OTATgt!|uJH1!p; z_#%l1dSYP_yVi+wH@6wQH9U0c;q;e!p$F%SKYe<#ujkMD(5Kbu56gD@Z-_npm9J0E z=;VO{zr$DKxt_d<;m>^2{XOJEWOqA%&f;@&N~NxqkEg~NC8TWB{~K@g;8onCnT7>D zGfoQ|mhvbouPTif`tyF`z1Dl$8|t=JpL^aY$5|Sq{Y7T|gp;SlCx*{6IK1JsWa`0# z6E9fu@z41g9{PDrX}rM;OZz(?V#JdwyZU2wTA%W09A2m&`J|F9vQ*CTg@qr_-jbOI z=ZH_JZ2Dl>lPnkVi!VOq)AYdU=f23kd{A+Hg3-xm`xZAZ@>~6GU-^{p_jbRmGe7g* zhWS{^>6ST$6_Y2PN^I9!7c=?fuWLW=_8pqn@iyXN!5X7YXO8(@oqF)V!^fqu>=$-f zl-MU<OTYH?>XkFK>eYMW4ho51YgIM<`f8z9{8o{kMHBru#|Q-LH0bmM3o9v0iX5%F zqgXImF<5kJXlvKBNQX_KZNVCbKA}1jCx*Fk%~V#244rD2>K!PlEUdZ8Al2B=;G|(& z$f>YMqh!vBT^rNfM7xzvZCGtAEvBujERn3SA<-aZrojxU)>%t?434B+WRqHva%w|L zN@CIsWus|EGmP5SM4fa?^NEOPIwo=Eq`|>yDMwBnGHgv|3*$C8=GwC+!6(^Z#z~`- z$)b@4$HXK#XBunzY?L@=G;x~OnKdVSQhN^a95m*ZP)j;v%rWE8no}WZ21j-3#fw}m J0w#b;P5{t}VkH0o literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_197_states.bin.z b/client/resources/hardnested_tables/bitflip_0_197_states.bin.z deleted file mode 100644 index d4b5fd31c1a01c560dfa9ae13d4b28df27d07025..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9175 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 B>OlYi diff --git a/client/resources/hardnested_tables/bitflip_0_199_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_199_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..c4f58b53d09f574c5b5a08dd430562f2f7e8d66b GIT binary patch literal 2498 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 GCIA3a*;yX| literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_199_states.bin.z b/client/resources/hardnested_tables/bitflip_0_199_states.bin.z deleted file mode 100644 index 9117c86daca40045d7997962a9e1c01441a13c37..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18323 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 a|LC%u`mdwQa)!~e9G7qZ878WoI1K<o5#JmD diff --git a/client/resources/hardnested_tables/bitflip_0_19b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_19b_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..9ad820f8cb67775057f5c3ec6af7a9f110bf6c3f GIT binary patch literal 1444 zcmZ>Y%CIzaj8qGbylbdDfr0H?{r|7wj@vuGILbH(3J5R=I505IVEmXM>cA3U&Ct-n z;C%Z5cRT|E@Fj2@G-NoS#<^H=VS|rgXCH<9rb&~Oq#Q0g`g^`yROP$!B|lfyyaks9 zzS_(P{^I=QqNx6U(SUy{Q{7b7{|;K&()jvl+(aYWukQ`xEt7i+Hk9<8Fr1jG6U-_Z zI-T#_ah{ny$E^GgZAuL@H1v_s*e!e|$uL!CQ|dIs$Tp)LJ4#Y{Hb@*zofaAJH+yND zPaDh6t{6X_V<9JG6g#GVUfg&yak3u6hqR=JB^zb97j4$l)8^?hT4wMdbsC?+hC>fi zd&*o7t$TU!Vwv{F184li*_kDFX--Wnd2DQKyxGdlXj595A9v4Yqjcv!WkVY|ojyZj zuA@CJ@8Z-9=J7Rrj8ysPIpy6NpPBBGk%s;~-(A1#_;vh9{p|1aN<Id69ZJ3NPy1kH z^O<tx=1V2VFIl_{eYA)DQ|<aKpO@P32S$F=*}wRc{o>7+cJF)obN!9^Gr!Lde5T*f z-|$6eeN?skZ~cwQ&ts?7<^L$;-}*<c`GV5-@M9$wduG&n%b!U;x3N<H=zHT|`?gO$ zXxJv_-M+(K_=bGpZ~5*c6{~;ReSh$w%>L(ltw;Z^PG_H4`#gE`=Xl1uCGV0ChF(xp z`aQ8=>5=Zv_?b@YR|tRcXcjoMF;%rG!LTc7W*W1|L4!>zQc~6g_3&tRGp30KB{q4y zsZH-b^8K7eN&V#Sax4$K65p?9`kQ?w{Y31E&$~NsoO`^?Sm)c!>3mkgn~wX~h!<7t zo7%qi?_pbhWi?5kWC^+E-{&j7Y&xT#vddcT;GFmazxz+T3@^NMy8VGY>!W=s|1Y0> zRIz(~<Ug)o>`!b$KZ&2PJz|@$w5LDEPI=?O56g=?{`746=6o-1>DOg;-%GyBf2vjY zd}T9zQ&sa5+YQST{yK|AoLQ6j%Az{+;-d<&LfiHG+gJ9_{33t#S-Icq{?1zOFSYIE zo4(C_v&&+C@q@^({YU?GKeY)ya`I;PeeZ`cJahDOKdirHv77JZ`9$-^qj%oCv5K)c zcPyrIuJ&DP<HgVX4lnn6bI#!BJ-(iw?y~n9zFP0E{5bE#%WD3aH-5UWsFc&b!*9I2 z>D|8I2iEFK`)}!6eVJL+zKdV^;M}{@{rc1={dM>LWM{r@mu=3OnKP%)eO_2{^0kr8 z<V~L}Y~-fClAYdo=iSSalE6!WJ!+b@S~77zo6dAEY*v`D%m4BVrO@D4E`Ohe_=K#{ zF>>=3(~(R#=`HD#=B>;#lPAUK=wxM)8Pkk)Qj?Ch8JszDEX-iTsSPtWZS0xmbtcT< zSVU^G7_-4?o|zHL41A`!C7nua)0UicDzzulXH#P5WNnGGWl_@%PU{?<7CFZ)G<4Of zRXyt4r~DQWe{sZEG}36pp@T-7b&j@aON!})8TOnxtZJ0xGgIQ^G_S&>MGq%SY|tr} zl{jYD&6AjHIOSBrNy*eS!$^aTU7K`f&YW^8VTZ@dX2Y32n@)?R9_pDgM|kPQj*}55 z4xQ#%d1+zEiH%b>BpeG9)=D;3IymD@K@8)ibrQysK@WwOv88NGI5>IHbg#vtGm<u~ z5!O2DV{m58nbg8SE6*vLj_FLCvT3=b!3!RrO~I{xGlR|;PBctP(>8KToaU8sRA!RI za-L0=o)&tNVMeDr3yoH`J09%O(=eD8E17ztP{wCnkl&OuJ?^4ei@8IV@d%x9OZB*M z;lN@^kC%qxe0+TBB9EpXIh4+)6_Ye|vX({aVaW*9)F~x1RFC_qMkbVO^qc0Hru6bS x<7ADngy}pJ&WIlDIhf3FOj|9oxkp<vCdu=#rr*q%`X9R|X&!26d)X<|0004UtV#d? literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_19b_states.bin.z b/client/resources/hardnested_tables/bitflip_0_19b_states.bin.z deleted file mode 100644 index ae144de8c90d0f11a7725f429136db73c37e7ee0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9515 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 diff --git a/client/resources/hardnested_tables/bitflip_0_19d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_19d_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..54371d652ce037bf6216e295469becbdce91c7cf GIT binary patch literal 1784 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_19d_states.bin.z b/client/resources/hardnested_tables/bitflip_0_19d_states.bin.z deleted file mode 100644 index 1b7f08b3d362555b20fe187d3dbdfcb2a4890450..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11481 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 diff --git a/client/resources/hardnested_tables/bitflip_0_19f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_19f_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b4a434889f68703025f7cccb7cef90f2e89856ff GIT binary patch literal 1084 zcmZ>Y%CIzaj8qGbG~%tf!@zv;|Nq}tb0;^NGfr`pWSGeyz#zdS=_tS`z{t=bAuwZ> z<jGwR*#0v>K(S9xn~%W7mV;6m7dxa<P8?uxo|Tefl+f0r#&OxL$KkS?8v~QfWo5<5 zEGCHtZnI31*k&3TFbF)GDakWKaWQ9;$;HJ2CMPF0FtnSTIFWLYSHeedS+7LnGM^p> z7A~(z8N$v^h9;W7{DUe@uH^choMINN-uY^leejj}k6KpWo#1}tb@<QyyC;60cjTGP z^RLCWYtC(x?K^zxSO2Z*zSe*5?>zjvH+@f4d&{$ZA3oWAeUkDwoxOU+vkiN6KI#ij z@2%VV#^(4JxrPe=rFY)QsTp4~ZcChLef~vU^4=$DmGWE<-xnlb*ezapZ*KQX+q|t0 zV%0rf#ZA1mN4@pTlbv%cjUQBb&eRsakZPYjsX)hQV`GUe(`UK#$PfG3A3ggM>%I2Y znZ51IO`mP~9yd>ZQ}9*J^!M}!`&=)*vu;nSYgat@ta9$LT7GUlK7Q@y2No6Qyxz$! zGrUu_+fSxv#-=BU4`R=KUbBC4<1L%ze|Xk?{MYq6#yY&A;xPZt(tXdf_8qVKIlbb? zoavlxHpf@|Z7SHCbLNfF3pw+J(_hp+zg1+j%r5y-K}?U;d4_`6rDs3c`n9il7w@%S z@t)=Cm5~xZ{k(tmXZ;T6KC(XhOkLjBKmC;-^p^bLJACZ_@(%x#3466KoqlJu|LV*u zCF-Z1oi=z8V|*@MePjB>PZsupCoC$2PuTE1mfQMA{M7uYg6ir2ttQ@@o1geuwtwfP z-7{l7e_Gl&oV>B;wWPZ7t^J8JPadfD5f6MJb8fRv%7a~Dv1!~q4^v)5UP?3g?Q`P6 zE8&TA)bu8AIPR6IV>R`l`y9UmPj+34bc^NYJZmBHiuv5LCqMdR^TZubrr9lhWo+f= z&vnl6&P%HsUv2KsFTVGzborwP|F2&tUHAEUZ2Kvz=~dr%Sj0;{jz945&;8_URa0N+ zJ5)J-oYRxq^KrSUo$;)gu7Am|;%DC3zj@Y=_=JDw=RU8WIQfe8b#5E)uSR>jCtfHp zD)_Xny?d#xo+aPWD^~466^$p;^xB<D`kG%`uD^KejpaPSgJ<5v9?w2dYWsffyyuZ6 zdIv8R$+35yJ$oXZOMJJGX8hfdrCD-+nHDci36@Ch*5;H<2@(DyGSesI<fNXB!J-ax zG!9J+n_4R|XR6Ld9v@YSgbfB8Hmo>pln~j;V<g$t6B%%Fnvd5prxQmdmI-TX8A=AL zoQRml>~&JC!zi^USk32*WaFemXLx*8Yj)jO*0tuMj$13wnN4Tf!g|_Ptl6|#w{z)4 zpN)}IQ&NJCu})@f<MEl4tgW*oO)}9<QggD%Va143%@SIN70yVU3^UX**f_OE<z#2- z)X7>tGdj+AC9|f5Y&dDybw+hssLzqehBRS=Rmp4y!A9Qpe_~IHJalq6VfwiM02MA2 A>i_@% literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_19f_states.bin.z b/client/resources/hardnested_tables/bitflip_0_19f_states.bin.z deleted file mode 100644 index 81ef023c3a3376c191ddc29c4e535a0aba9f4035..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5874 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 P8gszu|BNfFxZVH&f`!so diff --git a/client/resources/hardnested_tables/bitflip_0_1a4_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1a4_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ca79aa9b070e16f0df927e6d7d8da60d705d57fb GIT binary patch literal 2795 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 HOm6@Hs*JPe literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1a4_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1a4_states.bin.z deleted file mode 100644 index af0f720865c5344e2c6e55fa3d38f6447cdda4b1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20539 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1ac_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1ac_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..944d52e0736b7a38797a7776a18fed2976cca528 GIT binary patch literal 1141 zcmZ>Y%CIzaj8qGbbd9l3Wmu#8@7XJ@b@gklIvBWkSp+y5n7B9$7+Dw`7<e9V&1ZlE zX2!*e3l1?Zkjh}-Ve4sY=3r~cT)<!;WhBL;AjP<>f#E>Li422=47OPeNJ^O|P4X2m zneAm_a^d0@|9}&pd^BamST-arOgN;O=(SNR_=KB|PiSJ2pO8V)L#~1tHJ<pmhb3Gu zR*M`=TF&L%cxaixQEj0Zu8lE5{ZB%J4ybc4j1@6dcUu0IE5!Z!fp~_4?Hg<ki?iu< z6>N~<6G`m&>vW`swKM+CPjTjtI_eYlwCN-r(_^zR?6GNgJ~2OIJ!7a1dqQIC!3XgR zcE|``SQFn^E}rzl$MD7mTZhBkpV`mMZ!FV#XQ&@w<MmK{O^p7p;FgEUtx1Po?9vl= z>^@-Oo*3Klm3d*(!^CpE$BlP3T1(7hdRJ1C^f2lBG;4_$Z!B!nzwD_}FKjh<XW_^9 z^pm~N*Xb@55(gU&i|H5~u{l|=Z~2*r)y_}+8!GsBR6AdZQ*6Fh?Z4&4>Wzub_w<cy z8Jk-#6g;%>6Th&RHGBo*Yt@6_xz>oYcYIV|v9ZM8;Ujm0jf3^nCiRZxpP3FOt!rlH z5i>a0YADgpX)woNj;35{z|RQ>lDQ0glqJ*~f_Hpv?|dhov_n53`H_8R@|{@Ou1fyI zh<U09wMxR11^@6pd}NUHiNEtf?eZJd&9@Azgxh%vHombry-~K|O>Fa#rJb#P2MP|p zh?u^hzai<+7tW5u%v=Y%k|H)3=sh@cw4=oJg`ZHFPK-f>;rG_y4{GXb3g&RLsl=$M zEK{v<{nySF{zLDum_Fl$eXUkP??mQyYPT}8wy7scEN#>J-*70gF7co9v-pJ%6dy@U z{lcd5Nmf|Ywz0&InJ1jPx#h^w`ppuD*0t%xPuN(-?o`)Ww|K|?;3Mme%2kp!O4uAd zw4rhy`@PEk6@U8wRC3?rk1X(4p4@b0qhXtv!8hRt5_X4<Cp_$t(cjS(*A((eCCTfM zL}*0Fq17AMIOZ@M)zmLgmC;_9uwk{xQ6I&K#atT_lV;4AvB=Oc)L>&`*P$b8Bv#3? za4+Qg{=rN6<$_5Qzo>|Q6<DJgCK@d0&DAZm#!V+!OpTk3<!C}uV!}~_jY&t=go*JO zN=)WDGNUIX;n2axjw2hBdLnuvrs;$kY;0^%?hH|yue3tAX_v@qMjw|M5yvzR9aWPG z(`s!w*c#e$(1%B{TTHamP@?5%(=;{F=0?o|3mpjqorna(ByX-`IuQ{*VJbUZ^*G%b z3?}o0im8bvNob2Pa~(Pmv0;Y6ibD}zM}tKZo0%nM%#b+REV02LvCTfAL`zSkB<N^F zPyv@!*Dj&CqK0k~5p9~yEiXi+78YnE9#o15Y|%Q*;btK+BbFtZvAa>T#X`B^Xh+gA zb*JtHGr}e%=z7Jd9ND4Ay`Wg|aMO!fGp0n$SmWd6lN7Phvzw_vr(k1*q0phkki$Gl cbNISjz1z8)7q&(iaI^mxFLJdAm;fqf0EidScmMzZ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1ac_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1ac_states.bin.z deleted file mode 100644 index 5b2ddbf571af38fbd8b55be16e93a4fb671fd1d6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 13972 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 WKWORczwrOl|7Sk^&+t4lYc2rK6`%qD diff --git a/client/resources/hardnested_tables/bitflip_0_1b1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1b1_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..860f486bffcd827f7f6660d602e9c3d710fdc917 GIT binary patch literal 13188 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 T<<tJ(y;Et9hKEVIJZ}R4?lT5# literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1b1_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1b1_states.bin.z deleted file mode 100644 index 61ce910726109aaa68ba6f0adcf2d613816b7ec9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43310 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 JGwc1^D*=Z4Q&s=~ diff --git a/client/resources/hardnested_tables/bitflip_0_1b3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1b3_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..8afe0ffb979e9e9982588f6c9ee65ca488b04014 GIT binary patch literal 3233 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1b3_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1b3_states.bin.z deleted file mode 100644 index 3825cf8b843e710fbe50ed2938ff478685c7f0f1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25592 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 OR3&=<+pCw%+64d)2`O*@ diff --git a/client/resources/hardnested_tables/bitflip_0_1b5_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1b5_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..804b581f864cee70a77d75a8115c24d3aa04ad4b GIT binary patch literal 7149 zcmZ>Y%CIzaj8qGbync!)klFjyzx1o2ApxSIff`c-85~4ILs?iD7}x|D7<e9N+slVA z1PLjyicIBVacXo}#po%dvCu)&sX;`Efz{J%0jH3NhmytuE*4cruT>%p44j-Ei&_~L za4|6Su=TVxbFejJE?_W_GLqs^kYZfcz;GbrM20~_2HPwKX2!*e3l1?Zkjh|SxiV#P zP?kvsvjYP!1Jk4+N3~fRH>P~GS-ymQMf$3`$ycuY7h;<F`)R1i@;8bq{NDq$mj2V! z;QF8u_x%eu+hVDnwW0p6Tjj5AO^I8T(eD|ya$(b>jeMCImkJlNwY0A=)hhK>`XCkb zF;$Pv)7@37P3&~mmcu>~$7ZQc^=!B%<zXvzY-ZHarNIjf-B(W5_H50XtTr<<B5R3F zk4}4Q*c3eteL<<fX)BW?!<I^|I>_TOLu%5MnLZJGOZGilxKby075k=uqj5f4H=SI% zY~8{<XKks>HHMQVqk2NxSMr1w>U(4bPL1+B<=U7z>FPqGEZ;yY OQbwD4W@S$L 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1b5_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1b5_states.bin.z deleted file mode 100644 index 7750ad78f7722e2078634d4f31850967381f452e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 33164 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 U8mjt1+ZwL_`Tw6`em=_+0F+V9FaQ7m diff --git a/client/resources/hardnested_tables/bitflip_0_1b7_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1b7_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..8d541ff7d5bf9730a5de808f688ea99c23acf52b GIT binary patch literal 1984 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1b7_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1b7_states.bin.z deleted file mode 100644 index 1663d7a5ea36e971fe83a24c8db4ff49e868b9af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17201 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1b9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1b9_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..42269c116bd60f0272e78bf41208d4fe45285bb9 GIT binary patch literal 3840 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 XPjbtVc8U5IyC-QLYH6)m#Cib$e@TBv literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1b9_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1b9_states.bin.z deleted file mode 100644 index f6b102d9af5ae5dabad7ed996a2ea5ab24102ca6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28244 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1bb_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1bb_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f1f353e416336decc3c10ac6b97518cb5dfb97d7 GIT binary patch literal 1940 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1bb_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1bb_states.bin.z deleted file mode 100644 index 0e6675818b878bf3320983ac0486f518bda764f3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15124 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 XtLy%s`#)bFyl%d6-XHs5#W-dFpS&(4 diff --git a/client/resources/hardnested_tables/bitflip_0_1bd_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1bd_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ce30db7beb1ebf3a7c87eb9b28f0d6e0f5224576 GIT binary patch literal 2706 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 AL;wH) literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1bd_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1bd_states.bin.z deleted file mode 100644 index 8e991fcbaf8823d98c7947e7e945b6a5eb2a85c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20510 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 B`-uPm diff --git a/client/resources/hardnested_tables/bitflip_0_1bf_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1bf_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..43164354dedebfbdaf3016b280bf34c44326aa3d GIT binary patch literal 1567 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 aa)x2cG0wyWFaD3^D#5Ls>>gW$9smHbWUFNW literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1bf_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1bf_states.bin.z deleted file mode 100644 index 9fe373bd8ed0f4f54b095ede1757aabba85a1b5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10895 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1c1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1c1_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..a805bf22a96a8a3b6ec7e1221a6c247a8792aafb GIT binary patch literal 5975 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1c1_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1c1_states.bin.z deleted file mode 100644 index 1d6e2df38658903e4f561cf74df7c78021c6c2a5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28780 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 P2icKu=0|<mL_Y}t8;b-Q diff --git a/client/resources/hardnested_tables/bitflip_0_1c3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1c3_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..5ef2b8efa8522205e2694258ff77b3fa942a1567 GIT binary patch literal 2125 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 M&LzZuJcxS%0Iw;jkpKVy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1c3_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1c3_states.bin.z deleted file mode 100644 index c47845644bdd4f2f21e89d5af1dd0b42fb28d9e4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15311 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� z`*Hi{{JYQp@6-JM^85dZkg?ZCmH+g=|G9qV`G2=N^^%Xf|DX7s|M~y3|4;vad--4f zv;VyR@z4I8{=ZiA|JG!~pa1uM2A9L2h6Muy!|PN3{>=YXzq0=Pe?|tGv;XAvpKkxp z`sn^&(DdlZ{~h(P>AQq~>#fYCZU0Z+`={go#Owbrf8Y6U>;GH-cYJa`|9|#>+w_0+ z$A7)w`EU0}Q0oh7Is*ekz-vgY8@<2(<JbDw|NktD{{D~ed;d2ap@!js%Dw-Irl7{n z4C{aIK`pZM-m^tl_kRS9IG_9N{kgvS?Ea~b{>d{uSn_lJ8&K|a`t!UOG|ub%uix}@ z|0B4i5B8S7FaK8afAf_8b@wNOrxI_T?*F0x^!NVnJO0gIcRuLWy8qMeul{!&w0>n} z?s@Ob-~Xf6?_d6D&Aor$-~G=@4*oBGU+qiJ|69NM^Zr*K-~U?v#zW8?S=IZG^-uo( z@A>rIF5dqqkHG(o|4-_lg4atigZwh-%>Rmi_PIX=|3CYGbw6n2`G5Am;%9%>|NMXB z=l`6q`JnMGkU|KKxLUjYZ}r>n*X!=rp4b0h`uF$qY2R1c?T!9*HoeZ0?2+huzvoNO ze!BL5$Kz;lQ}@;L`)SW}&VZLzo&F;Zs=giP{aFlY$AVpQAl>%<|84*7Gk$&lx1OP4 zaccbk+rQU$fEIN9+gkt0{!{&{cu-dv)Ia~T{--^<M;IQ2fB$>`e_8DRe><Pnp1OX% z?sM$g<LiI^zh7Jb{!{$*T~FQr?EhC=^2fe*{_FaA<!^(*Q_^z(>%V>5|NIyK>hJ$o z{Ga&ve*Crlg@3^z33Ar`6aW4!er|vA&E3y)_s;)c@^|(B(AWQ0{;{3+zt(oX_SE~o z?Q5*+H_!jCzjW=t>Nnx9e%2oVP2hh2pVIYT@_oJZfAw|s@Bimd1xL{2|JLUJ*`K8T zwg3L#p!nbMzyEhV{vVWd{Qu_X|Ihq?{_g)woB#QL?XTN!c=ES?+w=dM&etpcGd{k5 z<G!EuKjVMeU)%Bj`=9-wk^dQ=|G2;Zy+3|ly~WBug5U3N{eF7>yTJQ@fA?5rYW~l< zKI4b@f9>Nq%6`qIZ~twa^7mB!zx<fLSLgi?y7ucY1A}$n|L9}y)qDOc*Vlg`X7$eF zyYsQH-kJTXe&N^u`%a3lx$<wi(CvTQ<@O){>-GM}`p&cEA1~dSXL`S$W!-=Ef9JLT zpL%>h=k5HD^*{b>J}+<cKmX7Ee}C_nuKoP|#gCKs{=0&Tocyof>>vGDT)+R%{9pYx z`##PGEoS-EzvBO!-~ZF@|JSVkd;5P?&cEv8fA=eWug|($|8d{-Q~$4TtKa<nf0dMd ze0UCc4W#|rzxP*y229fbEdP7@&cB`iUt9mXlly0W?f=(Tf7So~-}V3UX{0qg_k;Ik zm;H19zy81Y|4$GY4_d>S|L^#p{$JtX0q?!XA?*$DqQm;E_5GLa|G)fm|NG~i`_{dG zUH|K&`ufzU=y>ff|F`ZhfA({Bto`Qya<cXNW7gY(Mt-;d`~O|G{$F(8|979~ADe&c z|Hik$?_XECRnM^nHLFao|KI)j=a+rIy{^Z9`EmV+{`Vi?RaBsc{QW=w*L=GVn)tu+ zf8Njkl8^tNfUJsq_UAv>$Mt_N|C9V*{qOi^`(yu)f!x^NUH=qRMX3K@{{Q=*cE|!* zW`>l@#ebv=|J*%ZZ~8lbue87Y+wJTb{~3Pl{VV(T-_n2i?|;f)2bF1W4F8+`o_7<J zU7!8`bf*4l&;R|l>J8ugZ#$I!fBZB2r~L%*(4~dK_0O5T%j90m*WK#>@a5C?d;k06 z{=dBYqiX4&`Cr!`+5bbn{BOFxy+fGxy861HpI`s~s%Kzm5ZzO~@Ac)+@k_Uym7lsP z{-=N4zwKN9rO(HjGXH1&c>`{D_wW6G{?5Nn&}6#(Py3JdX@AuJo$soD{Qu75|B@f~ zfBF&rbL#&spVnXde?I5GJ7}EH{_6f;`K$i7eyjhZ7QZ3rcf425@B3AMP+BEszyB>> z`sdOAKcCjy{5yN?pXC4c^Y*|090b)@ukZhly>3<C-#7ow-}sWhsr&zh<^Naiv;Xz| z^ncJaiu8ZU|0n;i{@?K{zVPq*$=CM(O8t9z=F{`w^|@C6|E~LUeXIY^_1Ss<{_nfp zR}Wok0P6W#|F4hT__H1~I==-pI)6Uz|Iz)Qvj0!9fAuRLywspR+<qdc3HAEc?*H>` z|6Tw8yzhU<r}ZWO=Yy8)PPhL5eaib;bN^rb|N8$?&;Z>2KmX5P-~YFtp<(JL`EUQ@ zvi@xU^=tXD{g2}Rytn?Z`;YNj$nQV5Ywfpho&W3i)mzUlp8r4h+W+r%;%krh|NG0p zz_5G6|9((2ikV?T_8<Gw|IEMZVZ&EGf710pE89Q|0=hxX%%k=U2VQR4|Nrsd>;JyX z+kRf}|Ni}!clGN3_V4&twGPyhU-}5V9_-uq^=tn>{tJrqGnS3{&+E(P|Ns5!-|b)b z4?jB(svgcf{b~O>zW;muy#Ip#+mG#k{(npTle7P8w}Q&Z>6ZUL)iZvq|M2<$r~lvn zvw%uy1_lNT-|K((+r7~>eDy=y_W!ozpC{LT|7TxcUwVD>-}rOu{_o$v_4WSe|NL*& z&ycRaRo`IxzJC6`^MCh$lz(*ptN#Dhf9J>7{j~pn|5N=j&{#f0!%z9o_Mi5H7eU4U z&i_~c{b&5=|IhyS{)bu!rW!IJ!{_n8Yros>|8xE8`}xuLmRJ3KV}Ac?Rn7bQi`sU| zkM4h!kN!XLZT#zx@%HQg#_z7}eD^<c{lD;C{}!*ezYd--1{=n}uzJ&fWrhPW7k|$$ z_8T1{9vvbc9U^8pk#h7azrR-f^xy9<zTR)Urrvb-xkcAOof!MzKk0h*43B^Pzk4k0 z7i1k!=g<GMe$K!3b#mE>|NVFVKi%?ke^3(ADj?<S{<d#_&JQ|g^?%-f;s1~B|Ea(B z%^$oF<>dd)|Avq4Kh}r+k^ZkP^PhcP{f6J4*PmMdXZ7^@t^exNe%tT*|3CH5%70h? zule==)sMON|4Z)u_r~jW{MESsYmdJ#+<(dXUv|>x*gaderJwyS-}w4}*Z<F__J8_e z9{oH0kG$RgH=o%-9sc$8|ILf+w_f{uJ?%KbbwIcOU;5WS^R<2TPxt5h-~JE2ZhjNA zs^*sc-~T7y{`Y%&e%t@`ALoD55B~l9-}?7Iino9Kum9V*f6f29-~PY7`|m8ag+8nA z*4LGwHf!WT&6@q6f3feL{{PFj_`k3Jr$4WM^8fnI|De&hNAdrnf1dqcU;O8Ho!zz4 z+WG%`?do#>&j0rF>ZkuVKkr|CzTO_b=D+^)|I)wzU;OI+xBJ`vb$|2U*8l%^>(~GC zw=XaMKKJhbwUt<x`%nLG{C_ogS=zNf{h&#?ng4HVfOdK$->&~&|LOls@X*itKlA>7 z{4@XK{y+17eE&25Idtyo%YR8w7yaMS{m=I^G~CHLR=@VVy}R_^KiNnARKI@zcIW@= z=EuA4)c0>ZU%y7~|Kij8tNvvFXDI5rSAXM2{rZ3V%R%)x0|UdN_nrIa{=ZrK@BQpg z^XvZ0Th^!j<7ZHq_xyj+`TDap|MHLgoo=}ANB^GxX8-g5#sABn|L?!y|0h5Hr=HvY z=YG`3cx$oA|L<G>2hE~E%k&NF-kkrx^8fT--~Y%n9Ju)A|Hq)Z-|-6n?*3n0|91YL z{vV)bBv|dU|Er2OU;Jzj>Lkin{sr|>;(xFI+pk^!<<I_~_luwXFJJS2-s}C+;NBEi z3z*mnovHl#TO$5Hs0vcP{{R2eANT6v6D$l241SOP%7;DvE6>od^YQ<A@9X#1UAv(Z z{ui|7j^W9k{U-mnU;h)W`R+d>gWs(GC;$DK|5G2fboR;r2;=`6h>4DS)!*yV&wsb~ z{`vm9ZKiGA+5huFJ@KG@|Ev37|9|;QXX)Et`9Jr*s;>d9U%B;d&y;Qd_kaCWt#$s@ z+xqwa)|;7qt^b(obpFTswf|py+h6`?_rFHjcmL}p*MFD$?|$$9d5!w_pTABy&+xJT zoBzM?fBc}`R3M)!oCK{)zdTL;WB$MRzq9|F|Np=LnSJ`X|Fi!0&;5Ts?Ef>AkZB0L zJJ8cRTcQj9Lxz}@zU`0J{Ga|m{G<NA<FSy9Li(Tu<=^*)|Mb8AKN7U6dP4Zw-}jf= zoRQDn@$Y{9JbT}7e}4PD|3CfHhsxLfObjKm_46$L-GBM_y5RHszv3Uo|9QR_w0iF( zc%b~`|IYv4eu@8o1YU0bbARda|GV$kOa5>E#?SD1{V)5^|KIU4Ffbg8to^(H*8TYp ze_Z>|#$ZuillS-izsLTM<DZKEuRgN>>;J9wC;spJ_w|1VXwB+>pL=uf-}_y^ukOCr z*Y$r+&ENUw{jKlw-u{30G=J^?>+k<R`&s;T{lCSx_P>_8|1UQD9e7CMZ{*vrl9K<| zAJ5hW?QeP%|Fif1?=%1JeE+=BZtC}4*Q_9g$Hkxfmw(=$^lyFk|Nn=7AD{TK{(kPq z@9#cuef#^&>;2pQECzLu?tj05xgeze^)LRL@Bc4)z5m;v>vj9S|9lUfaVYBl|K$JK z|2=E|U;ES__uuR1RQu|m_HVymO8!6p)~7Qu|9{Q~%{?#wyP|5&`fESe-~1Z?yE^LB z=hOe?BmdXer?35g!|LDFfA9DH5AXlmp1%Hnyw|+f_SJu~|M%2St-td*et*sVmru>X za}<y2r~U}910~L%_J8Zo{R8ch`Z(YC-)8&&FFu2oO8x)-)?c%B{r(rv?QQ=r{ioc& z|MqYFz4!k|zWuvj`Ck3qA3y&Gy?V9StUhvfz1`oR|2w|l53Blr|9Abp|K<N5|1*F6 zeDD9{zw+<nU;htVY5)HJ`n&&5gQI%x<o}?xs;}(x|3?4U|NbNY%fI;5>;F&M`)BX- z`mE>ww?+KVeDu41^XLC-Kd0|KJ|8@^@cMuM?Ef48-QV!-|CgWjkN3wsHUFRcxBmQp z)!F~0{`@QT{(U|5zx?a{dBXp%{lEYEr~T*u=}+qyf3CmyJ%0a_?QZA(SNyyG`Tz3u z|My>lw7s|d=LTg<5Z<sj|C{~Ho&UMhum1PnuUYXwpP}LM@%q(o>uZ93)*BZ8cRy19 z>_<4-Li~h(={f)EpZ)Rw_DT7l`?~+PcKzG*`v0C^>-WVmUH^af!vD3PV)px-pZ~AE z{y+QE_GABFf0snb;|%wAyx#^|332QF?)N{Rf;MK{`DAx>dAaxgpJzbZGsO2kGFJK* z`+wtC`J4Z?%KiWP`PTofx2M1OH~;Ia`lYY!fBh;(jPx)tY|#2`&%|)%YW4r(<js4& z$`{tW1~t$f{{FfBW=`)<dj^Ix^)vr7ZK=Oye`0d|6wp{Y$omWo3_teY+k5}+=fCf- zKR36Xy)*G|^?!MW2P;0_fBj?C_h0w5`~UCP+W$RX5c}GlpZ{k<3jY5kdwX|)m+#b< z{r$c#Zr-ipxBufl|9@70e&+x9z5n)W)@T3OUpF6ZZ1cm(+W+78$6nuGpI15m!{yyq zk5q^6w|%|;>#Uzof2=cvx)DTy1~?xE&;2|9@B2OfnHdVMMC3pDeSiIYbF<T-kl|R% qXZ2_PuYDW)ch-Mq1`E&%B<MDknEr44Kkc9VXDIsdpK;0Z)Ib36#R@0@ diff --git a/client/resources/hardnested_tables/bitflip_0_1c5_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1c5_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..abc9ef501c04969917da8fc3cf6f3062badd6578 GIT binary patch literal 472 zcmZ>Y%CIzaj8qGbT%#)F!mw<`|KN)gHZV#yHE>L1U|<wra9|J(5nvEt;NZEy634*6 zz#ws1uqCsBfmtfapx1zbA=$@Ga2W#wPiDs<lLHJ4K|z5_E*S@(lACPgzU0SWR;Seu zM3zLb+Radnf5v)4jP)xw(*qqrJ*J<m2Nu~a=zFlcX&uYlrl0K#{yDSBuvcjB5xt?u z8prsF<zQpeVIDQP1?zXXGgdOKyu+#85Zf4Xpyh>V3`>Df8_Q&-<qkdE4I3hqSsM$i zSsR-QgjqHyGaTsQde8b!j6Wfvy7iSrM1kG`^#`I41P`oy#PN}vAwt!FYc6YJ!qfw+ z7sxO+B`j`iY;0^eaF|VegWN*{zvcz&9>_LXu{=mPaA4(y1V3i3IOa=xYmOHjX1yV& zpvSO>>F^uzClLkg3G)uTQC?8SeLzBw>)?fTtOqQFpQ%3K(K~#iM3&_<`-~W_A0N3x z4jld@VZmSUzfInuuZ8cyUiNnqwZ|Wnck*xWtY6Uig6n|LK?$J^As<;w1TQR_!*NiX z>o7OV0}pu#RY(5@l{Tg+K3uJJO$MS8Y7C-HYczPY3__a{C4y$CiRkbswnlJs9azTM c5D}3W5p*y?LV~sNfA>zMIT{{eLY+zs08`1bp8x;= literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1c5_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1c5_states.bin.z deleted file mode 100644 index fd67e955c4a5c576fb2db4b8f53a04aa00d7de25..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11486 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 O^kV;O{V(^9H2?qucl&$* diff --git a/client/resources/hardnested_tables/bitflip_0_1c9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1c9_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..6d8d002e6a5196416ef18208622169772ec45958 GIT binary patch literal 2501 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 OPr3>gDloImxdH%h3}mnX literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1c9_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1c9_states.bin.z deleted file mode 100644 index 88ab2a968b9a1edec7a88a4e068bb1aee114329d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18237 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1cb_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1cb_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..e9caa94a63d622ff914f025d06bd0661b2da5c6c GIT binary patch literal 1466 zcmZ>Y%CIzaj8qGboN*&y8H48b|Np;+J8tg$;wa)EC?LQf;K0B*gYjd6phHW5B|}38 zgZs?~-1`|2fbp!MQOd=ZgN7yt)EIdL8zuNMJ1494sBv~KV>IAM=;1g}?Bg@jB+<af z*MPIZnI*xEc~(-&$;F&aNtq2kOcKgW1~Qk0)qEv<goS;W5(ExP2sUVHDk)VpToAc6 zZ`Q1e<x?(S`IOYyxqMkh*1RRQQGr~4HpCSg*<O8-w6E#7#KVM_vJ;Y(PDL!^GFq)C zJGW2LShA;NZfnY^HAzV`3<As4w<H;+>TF7#W*FIKv|~p}D$fRqqp8y(1Abih=9$UE z`B`Mg9Lb)Q6D*tswO_b1Z#t|N!}#FL(L*njEW};YVq(H1B~pD751iJKNla`#bXwv~ zcWdnB=0$J9lN)Eu(c@z?ED6>+^zv9*T6$VZPio4UH*>@#(^Ag0%ebZg6AG1B{n++k zZJyo1kMc)9&+~k=T(sr%#{b?2E1S=hD>q-aN`5U<vg%_T^Ur<X?^Rx!$G$79UUmA{ zy5nEVs$TE@7`OEI<tugWH!8ayDnGPMo%&vVOC9&Sh+pBUam)YgXn*i)-p1D)d#`?y z<<nP_PdffZ;`5p~?=RJFzU;d``JiE&oOk;Ud*>VSo&WqVKC%h@D?j;jg|+<M_p2WL z7oE;Nv(7zv^Ob$VyI$To-n4pwkL%xy1xt@~cgAmYS|5Ig^TzLf@y-u21uuTxw|w9y zu}q%ngZ{le$7+_|>9^i7x96QzveEg>nFWs*TI-Y?K3J~a{WhZd{AbD6Ha#;^4SN!* zj$f#LzV5Wa-bpXsRI?S<3;&+K^3uA;JE!w|d|5C0W%;8@8-MZA_wqse4*u#Fty%i1 zzmUK3N%+LK?eDB*<b}#D`mdbUPqF>_BEBg3bGd)vpYvN@+Okjj=I>Cme4EG{d5NRb zjI|}I_~dStRLo<Y<DdQc;fv&#we2rHTQ4s?{x1Gx-T4FWzQtX(o$fAv?nhYd;jgu? zpV<T-IeD}Df%l^ro;mutAN3zt?B;uUKGD4K=$$ujtYR$A9gC@)t9{qnc=1cW!^{2N zoHO_z-n`f@@p$<fx%Tp3@``Wzrf>Ka+drd<ed43N2R>U>=)HbsC%mcZO+91f^>wK) z<X+hHvz3>{T3O8Very%L@ssV=i|>t%($eC}=N`SRz9*$pJ@rXJg>C5z+3AgU-n}d- zsrL6){(EC)Ytk{r3v0O9n*w{(55-NE)!HH1+EvZ>pejuK-onO5dwj%F;+WZlcDbgk z_wv)c8Oyw}#P8k7qcXC0!hC*BQaH7yE49%uRkg<_uw`RcQbI&z8nej3h{zCw6KiH_ z3!OBXa4O4lYHNf<u$WOs%9Y7REs=&|5~)TjjtNB^;4$bn3Z3R9Ic3Q)kF+44LmMY7 zGvv07Q3?(ICun7~C~0Y8;v}PpjR~jOydq8|8%0W_oJdxjrZZDw$&rmSleNWk4BOJu zj5fBmg|-}>+LN*=ENNq#(P15l4U%mUDW{GaHl=Jb77OMvj5sqbSSRUJ>SP|DnGuIg zjjn8Li%iqmbmn2usa0F1gi83=YyMKuIbtjtX|&<cL8Hw&N87X|#dN|9d(IqIHA?cC zDRFX|S87+cq+$1lhds#>8;*$?OR63g7dbe|=+v2{O^L~(DUrs;no|xIOq^jXIpws@ z#<YmVs_NoAZXU-xTc=3|ceTzGGn&RDaq3X2Pg+WZv1He&)m=Lh&ZNjB&FGvVIq7IK zo1e&zRfdsm+FA#V)`T49Id$e(xTvtosmNq8k5iGsMu`UujZXTB8f!(i8L8>`98L2$ zV|3DI#$r#NV9CsoL&rjUHW;M_^RcrT>{xIpGFdlRSuJeIoM0nEnb1`|x<NAxybUF% zDknQL^(3(wq#Wg$;d5fmQEfGmV@4aiPHQ|$m@dhAw5u>>TB=w=$|=zqs);=ZlNpX_ Yt3`IroXXrI|4;8pSHVI>!wn040JoW;)&Kwi literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1cb_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1cb_states.bin.z deleted file mode 100644 index 31bd47cc6437d42c4a53d0f5f85fef1966b00251..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9394 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 Mu=zhTpW~4h0GH=;!~g&Q diff --git a/client/resources/hardnested_tables/bitflip_0_1d0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1d0_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..26a43e303678add8ae61b14c78774bb6217abbba GIT binary patch literal 1281 zcmZ>Y%CIzaj8qGb<a+p9jLD|*PSQsO0R{$z00vP928JdE28{>o@^&k{6hcK*M1+Ez zW~C%0C5c>C78Vv*HdA88j8>BqM~)m34w`a>KX3u7s*2RIS-H-C0)yJmvO2{ptk7A^ z+BhjwchZR!6ITRfXho`KdIl><ty-Donh@bQk!dT#NiV68X%j^juj=;n;TCfCoT9ko z#H0-d+@WD?r<SDjFo%Y%VCz;nxy)N=8rK?b5nYuOtql^LnVL)1OcphnI@Rg4&xTbA zmnNK8IMvx@%b_Ii(3F`v)4X+zB9jbKW~vs5%v4Qb7U_0aa%GaPo3m@ynoe)Wm0X$3 z3RgKhOeB^DPHM4ekXjnXx@zSlF-MLEUW-M&dV*G*P?T60lHw4i8IrLw$UvyJ^nl7& zRclVo1yU1rLw#K)%~ZN5%yeOq*0&X_+?rGil`eTM=~jvIN-~<|!>cw~HzcrerRO(^ zn4p6)%XkgAc5E<;TD4_{l;@VUDzOVAl{>XX`kb};n*L1oziVmoC|>3Aqbjbd$sDJ& zYL@yqTC+B_O){A{MOP`S>!4R;U`YQZ4mVBBsFkc440BH{^}3+tS>a$Ba>QHJHB*>N z%yA`GNzjS|J6+;ZBeg7*GK_dUQh8M;ol4p?)7NKNFk5gitJ^Zy*y=gKKCvN(cv>HI z6|L$Gwb47CJ>gws*)&<zRU02=6}fjBRIpDC_^RfSwSK{5j=2XHoG_Uh#luyqlE}_= zA+ytc!Z-261M3dnndexplBxAgWtCl>N{I724}rQ<Q?(L81O1i;ElqJ~4iQ?mYC%?0 zQ^C@}sVY2E6uYKo7=>gCt4z6=XqYOv=%nZ>ozO%d%~cW8cts9mnq12Ak@DdU40c>; zFl%YpDqYT&H52|#dZJn+5v;UW$Y*M#)*O}@leM%t4JHfKp9u)_oN_Jx^*V+F+7C)4 zY&=*PSQuCX7#I||Oc>ked94iabZS_@rP;s$LBc_kgawyzd3l(cT)F(KQ)&HHCowlM zUbW6CL2gYt9kV7*WjgAt<vGbW<SH*$XIGo5vcp=DrJ)z1rW{O~aOI@q%Biji2O@Zx zQYFNuuN9u)c4d}HR9dfRgx0~N;2=Y0#!1t<GS>KXyCy81b*<INXho{WiQcx5v%!Hz zYkVR$riJO8IJMDGduh;&sa<UvGg%^5s_A+w^9Ba<O!XGHa7sJiXs5?1fx=L27YSX~ zDLSiM3N+mm77I<B>e1t+ajIdBm)nXZJxud5{S&=1*tC4Og_cB3x#%5gpyA%>rJB$h zqjXWNW20DC(w40TDOavF^+>sVF?bZ=t|oOL^cc??wrQ&lWptnP7CaQ@QYh7VVSncO zlc!_CZ)Lyw!hO|Xrq=wFh?Umdq0T|3%BrTyE?bl$1wH<RDj6zCXu5?mRW}7~S;-YE z%Imts*OS-dP_Wh|&WoB7dLnTdsmfD&!$P|xdA+sObY_~IoXj&T!EI*Hx07p%3|4EE zY844Kz4|Gyr~K&psf>?4rjIU9saPh*d`kJMQJedLWkTg)tF<n<Nv(<%+Uh*zu&HRJ z+|e5k)*aqe$-T>MY1~mR`;ad7w*p%GPp#6*5K?*>(s9LM)uGT}MmCXEi(8gtX|V+~ z3x%!Ll$y9ibF%BQl{&K~9Ln@j6LwvixN3&ftSgriS2nw<t#(~>XpOMaMX9Ovnn%<H jR~dSobW>ckTx-!4BdtR-f<^v!?^K$j;bCgFT)Y7Q{&4#c literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1d0_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1d0_states.bin.z deleted file mode 100644 index 8ac5e409937eea627a05e54acd4932d8c64dc28a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15272 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 E0B`q3PXGV_ diff --git a/client/resources/hardnested_tables/bitflip_0_1d4_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1d4_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..15911b954fa9fb84a164f8f4cb57ec46a3b52780 GIT binary patch literal 6278 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 UW6})I|I>TYRj^Rulpu2#0FfJ#zyJUM literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1d4_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1d4_states.bin.z deleted file mode 100644 index ad91ddea9527d5834498e8b654d21ce620f8ba5e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27477 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1dc_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1dc_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ab5149491c274b269f99c2cf4836f92fbe132737 GIT binary patch literal 1436 zcmZ>Y%CIzaj8qGbT)D76jL9XkGVv96*Qurk1{MZJ1}6>%28ITX2mJRL(7*zQ3`rv{ z2DZk@3g}FxNkK|Roy(jv4YgY8D>VO!pVVO%6Iv~%QO)D%!{ZUgrZgw%XwuQ7gFg*} zyM>M>#oz3I@}=JWOSNrF4YO$c&dx%Sf2@wbr-l}U+I4en*wCZnHI18@D<P?~SuinC zCrr~o<H$ydX*?3FogGI*^<6_Aty<%n;F+}IP(VV2gN+EAkasI%tJW9A@P%Ic4rs+O zDTQ_^=(s%E(3OxdnOTS@nB&l)q-A271_lX<VPb4L!6Hekg%S-76B#>_BH9cR4t7iy zINHkDF|XB7TjXG~Xj4M4n5r}T$%6+TwkB;X4AVGtFyYWI`KE$-qFqP3#e_CSbc=S_ zO3Y8+{I~s$?c^K54<tlCB`xP*zc6Ku>rc&=_9g>v(N-Pjn+86HVLTEWk0!N=3D&V6 zl(A8M!2M>WjMMZJ5fKs_J0*ezyLmzq9jX)~Rtk$4tW*{g4Zg4<f{o!rsQ!i^?E@;0 zG^@G7KLoRO8A^m{CCy+H?eb$)ejpUFG@MbqG09+=nqpVN0Sis>2IdQz5fW`Y-U3H? z4BUAHjvQuZ7nay)knpEXtIq#NVU-%2#QG;Y3Th>eu^u_JM~_{&O-#SBFn+_{?(Y`= z*f;I%s1;^E5yAbJThu~Anf=LLey#@zNi!lMHs}P4X?7fK+EGwpqqRqyO^)k9GMmIP z{$$ZZRl?$}6)`b!+}+|VAHrLz_+1JUD`F(}PE!{a<KgkXQCJXTcb@xTt(e@&B!2gs zZ<aSj%<z7)W5<poUn>uMNQz1FpLFO$LSc8Cj^UA`-{RdHAF^LeeAA=aEb>E5>-du$ z`Ul(FM871ynDIk2wDW_EyXfIgcK(!uT^6b~IzACc+jNpFD#Twb-x$}vSt7BTKgo8& zH<^&1;y1qOGwo+OGLMaG{ufdC1EF>eD}Hepc&*|3TU+NKzlPEOkI0Js8<wom3};db zJs7l3$S|Ta(J+~5#+s0%8LN)W=-Q~{6R{*|nyR6WDANO#N6WccdX&Y~G!0foC~cHj z*dvj!VMZ7a%h9G}Pd}y=%-vlo2a+}>1{x$BjR@^J$jp^+G@;?Ipf}fq1CtJ{Z1i}f zE|BDMuqz@WSd3$%n5e|Wh#npvr9%eCM3auTCTTNvMR<#e92QC1m@tDU!dtLgShS5t zA~ER543R?#hY~g%?B<GC*=68#)IhY2&5-3t#6e-!u9YoG+9DE55`ElQB@7KELc4{z zxen}@;gjU!<EG=;aU`)xS)xscYnsT>Ff}#7grf$DJ`yXtxg{hvtWgs=EV7zQu_MA@ z!zG`rHHJxtJ49m?B)q~!RviiFVir|yVCV8-IH>Z_t02h7MUUxF!%>Tat&K@XHY6oI zTBl<m<Kvl>6tTge&|*z!%aJ2T6ASf}o4MI^Bo6IJ?q<{ODvYt%m}Ib;^C*v)#F0KN zmxq2j8i&QiL>mtscqp-9nd-rW>1^!c?1GIw0fjLVa~uyg9`5c*>Jek+@tULM@nBA1 z<6&_znL>Ao!xF~~lcp>aS=}@#Nh3xxOiA_7%7jVNMH!FuXhj5bY*^#yrrNdYXvc<) ziETPb2PBRPGmFM>^~pH1Y4#*`L>x^x*v&0*)F5J-Zf`<T(yBG0Y+46(LK1z#l$@Eo z8F<7b7WODJb2f8qj4(_{I+U1jB<W~tXJW!pUBhf{F$pzot|NwQ!h#KlB$f&C_=NEo zM7U{eRFg2+uwg^QVu=mO%wh%`HXQyVXu~j%X?fFRu8jsxNuB&Gdsy9AAH=a7(FuGI z&L@#*VAyrEo0*yOf%A@|-8|V6aU35Q9v_xC+Q(#g^uUbA2W=Q0ALjnwy;Et9hDXSS H<Et3}bg>`L literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1dc_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1dc_states.bin.z deleted file mode 100644 index f5b1dbb10e19e39f79bf1472a1547d09e9d86304..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18443 zcmb=p_4e+?sgG^=m%iq5J{aPo-gmOhX~oVTebeiA-%^cS!Ws0tGJi|h%Bu#9j0%oj zf9(I?|Nr;b&woGr|F64!{@eff_>HzP`|IlX?Ee3Ke*dKU{6Alx-2X58ceDN9^?Lv7 zYLBk2|NiM`bNzm|-{IHmtA78q|Ns2|pZNcee|z40{CD@C)pqCqxqsOn8}>i>-u~Q8 z-}nEr^8c6r_iy&A_<!R6!~5d@*4h6){lD_({J%Hj|IV-ZbW%P3F9_cMasP+^-}!%g z|M&ba{?q^O>;A9*ArNB4{QsZp|DFF2;l%%Ktod~E{M7uv;=eEd7ybSJ>iz#A_5Y{b z`@jC*zm>cGzyH18>;Lz^^WXpP`F~P9{{Q@cSO0_H)B2C||J{V4->3io`dPKgyY}zr ze{bK%Pp|zadj9->nVNrP|5yB5{dD<j`_F&p@BjCI``@eovtR#T`_KIUkN=zB&;OzR zKjc(?Z~WR{>%Z;4|JMHZ@9Zzf{~xjc*#GC-zwooA^FI2g{oj78?(^FJr%(O={Nw+u zkNKs4mmjzPS-<V;|K!K(zuJG=|7ZO_5S$<TUwwYfr{d@J=hoW)+Vdyyv;EAE^Z#ys zJ3p>I@c(sC;LiWQ`hWEQ+`rvl>#zM^`G59*^Z)w)yZ<XcuJ`>D`hW8O$)D|iZ{GiF z|IhkQC)MpM|K>mY)BSb-v;R-(zt(@1f4u+5NBRGY>;LBet$$s==Ksb2+yC|d|6Kq1 z|EK-G=Kq@iM;{Wf>!1AJe*gE^Yrp#6UjNm<_j&$zP~`u7lE3^({?SkG-`=mTn;m2K zdvks3-__^k>#zO`{9e7b{_X1jzdkSTn-_22{qOv?|5N|(zrF9;>zw!XTmP>Y`X6?^ zzUt3qkO%+P|NVdF$7-;{AMO7o|9i7N2&v!Nzv`dG>%U)qIq&)xeDD9YpY!9seqQzC z_saYAUv`!K-EaH<yw!j8|EK?-{5t>Q=j)rl{ttfk|EK)l?)sgd*8VsCpZ<3~C{!Z< zr~ixpH-G6rbFF{hs{U79mw#IS6O^hz`2Xae|F^{-cwCzQzw!S6y!Su%?w{;$_w(`7 z@4fc(r~fbiZEyeYmG1n%H}_xqcl9@a?9#uhU+vHTyMF86$KUTi`u}JC|L5E8|9E`= z)8+LqAMaoM^>LW(`CI?(Z|%$ayESh0`S~+V|8M{IFZ2s2QjCxN5BwPZ*Z-gYx&Lp@ z|9kcS(f;@PC)Dr%y1)7L{;=5k)W7S$*6;iO{qO4c|Ff^J|NU?N|IYd^{{OuG*8i?w zzpno8|2O|YIqKxw>Hn|(zw-Y{{ZDYhU;oeF?&p*A^ZzaWtLpySy#L?+zx7xDzxhAi z^nd>U`?r3i{*V7!|LNrQ|JVPU|Ihz-|IhwE`v1B?PIz<v-<$LQ=5N{m_us$Lt^bpE z{R>`K`}+9%_x9m?|DTHceg5CS;;;W-{r&&u|J-f=`)lUU{r~p=x6hOJ{FnZ}IREkd zn4g>9{g2)Kf9L1=zP|r<rvKKw`+xiY{!9Pg{?Gsa-|(aVzxkWN!G6lV_EkSTU9bOV zulAprfq{Xc;k9x2-^x8T-`)rRj}HBR_3QDSf8N*GE?fV1zy1CBxBsnuyS%>RzwNX6 z?nmRlP5=M2{+s_+dj<xEp8sKY>M#A+f9T)a=ld)F|CImTT@Nx3jDH;YbN$DA|26e{ zC;eUf|J&dD)&J)I`}g}FKUkLG@vHc6|C9gg{9V5P|EvGDx9?m1U;K|B<ks?kxBumb z&-;J<|Kj>5$Le4Izp?-5zfb$W)}MS_|Ev8^z1{!Y|KtCGobk2(r#!?o+Z|U||69!? z7yEzf->CmvzyEprFXz+E|AG1MU)D#*{m*^7e}8@T`TWWI{-68*@^am;_8;|j|HHw) z0p-o~+aPmZ{eSiU*#Beok&pj}{9lalNlfR}Z~s64J$>fe`M>{GpZ}MC_0!w`>Hk3? zz`(!|v;E)eKi=QYU#kE08&q8Ie~kZ^{{P$0^ymNA*8ZFSPyVm6`M>b>|3Cj*pIiU) z{?GkzZ}j)?f205ZG$@xt%~}`#f9pTh+y6j?$m;*I|F{3JSNk{n|MdS)|3`kZ|GoSs zvNJm$*Wdqt8LE?kf#J;mdGr78`TKkQ_9yxKpS-uN-`zj&+x=<R|3Cg+^6&5M>bluq z{;vP_fAtajU+myeJJ1tyUH<C-&2QiTjo<mN{(t$)um3lHwtw|s;Qy2VrqB1E{lDJs z|N8&#|4$tKW&iEH;lIiMub=sU?f=(I`@hPT|F%E-zv{>7f6(;Q?~?c1)h@pO-|xNq z?eBvM%;yvDZ~y<X@@M__|DV5pzxV0p{J+|7<M;mm5(+9(eqXbXzHMLkzZO(u)aU)~ zwg0DU|96(%zuiy2@BO{DYTnlW^;>GM{>t9FuWSE(|Bv53{`24dJpJtdwfpNu|DOK; z=zq`0`Vf@T^~d~Qf4P4?`Tftn{BQoRU;AHu-M_h}{@L&Q&pv)$`fmBt`PZ^n|6Bcc z{npy6zaG~=n*YQ7->SdsuioCj>fhJ@n}36f5%uly|HA(V|DXK-DYPone_ubz-|lDk z(fVKM^}pg{>%M;d_j~{RTfZy*-}|@k{QdRoE55$3di{USpXuk{|EuNu9lE{#%kS;J zzyF2*hSw^8`5_tqe9!)0|3B^jq5N<1`F~F~+y8tsU!{KD-{oPq|F5e0fA-#|%U|dJ z{C7V7|NFiFH~*?X|FL}a|Fic0{=fOH{_mvy)KAfm!$CfHUk)l0r2c-i|LFfmdH>%3 zp~Z94|4hF5f9<yWHLw3~`t;xC-~O~e(Xszuf-+R@-~Ts$WdH5|qyK+37^YwOKeyh) z?&rDxMgP2eYrdt|Kd-m`U%l?<|INSaw{5Gh`9B*}<GlY9|Cm4gvHkP?%jW)%vi)z6 z4QeK=egSGGr1$(^{Am5J`G4O3DgTyU|F!<({h!@WCcpoq|NQ?R>;F&x%<uYs{-^!? zcmJ*aTPgn!nI9kjwtnr~)z{?z3;#c2|7q_2n9Kjpd=~%uKm0w&uK9QBe#Zax|Lgy6 zI-~)S`S1O2_D?6b|GWN6|MmVG_rLGoT=PHp_ut9y|M$O(zZU-ga}81(;@A=U$NZmq z|9|=a^}q4s_5UDc>#KT5(fVe7O8xJ@EA21TzpIX`tqUyulWY5bW$C~4b-(ui-T$;c z{Hy%${Y%gM|7`!u?BB_$`G4pCw1547&Hv5+&i}Ii{Qu?8`gy<ZulR9W`~R1f_NPGk zb^k9A{6FIlq%>Q1KJ?psJMH;@qrcqW_kZ>GdbOY5UmMoG{r~spzdPUZbM5~+|C#>( zX8gZ+!~dK2e*|gj`TwQ<=KUY%fBdid=l&m@A3?;9cYoghc<+CvKKA6lXZ5xJzt8)> zeE<J_kaC*gz>Z(xUw;}ue!97S+rP{AL9K`Sj{l$Re{Vl;zkc5T<MZv0ff_md*I)eK zwhmh2)W7|c|HuB<U-N(Mf8xdKZ^DYsj{h$|&wny`zE1t0Kj&lquK)5+{`c$u=~w?> zeqDd-{QsZ(zsLXn`v3p;pYPQx`@g^cwEkDkuOIJ!uiXE?;{Uz>?^pk?{PlnB{{3$C zYtM(rKR*e|m%iY9Df4l^+P_u*PyRm%X+hrqZvSMmf8D%4Uw%&C^R@mMIQ)L(|4ILI z{Qryi|Iz>N|B`=Q|K<PM|BwIw0ac6Z|1JLqYEb-{|Nry<?4SSNey`iR^<VPut^bnW z|GZuM>7;tS-Ot;aKchGPss8<a-hH*{=l{KlPyFw{cE0_uKdZm>@4BD;H#`3C_4)So zXX<X7{Ib9OFZ|#Cyx&plH}Cy__1}IkXx8{YzvdID0gElgWc*+C>+zcJmtXV0{N-Qy zKl*un)z$N>AH82*_y6MSTVMZw`(yw552$ITe!br9eEj)q|NUqFe_sDZ|KHP7+y9;a z18emBo&U4`XZ<vA`g#5Lb!`2V|4+g3_O<@&fB$FyZ`U#QU*G$ez3%_+z0be@^RxT; zq<{K-^M5sQ|L(v2|L4c*?KR)h|9kxoe{Wwh_1pSY|Mz{}f9+fU{rYZjwz*yRxWE3i z|NdqD|NE}>M}M`+{{KJY_o}bgtJd1pr(OGV|JU#Ei=f<aUgE#|(fF_SKkY65Z?^xv z`hWNTeft&W*SxMjzwUoj>EEee_h0+}^WXjN>-YU%AG`nE@A`l0|1R49)c*Sa?f<>I zaF&q!f7$<hGI_r3|Hpr(Z~1Zl->?7Q{)hhG{6GHMpZ$O9vmZ|fwSqtm{P_R(|Lp$> zZq)wJ{|9MYZnpnjf9c=1-@mV4{n!8Um;cUhYvuRv{~z=9pLR8<(SH8w|JC3BZ~k9? z>!1Cn+OmJ!|KC3E|LI@;pZ<Nl^+iw5@A_Z<_TTe!|1GWl{l4;J^Da<($Ls(0|NH;` zKYqmiXZ<;Fu;a<LF<+m5{B(1_|KI%3zv0*ApMTo_`|FH--~Rursn7epecSwhivPaP zsFxFkWSg7zSN}0EFc|!cF8uHL_&?Y0?eqUX`}@59js8DIQ04{U2g0A@AMdx{`0uON zx9$IKf3JW4v;Nob_rIa_bkFMgoB#X&ZvHa=-@n!WzvtAy{?q@<9^}@0Kl6X@kFER{ z|G)p=MCt!)|0n+!`+fTVwg0O9|6j^~`v3D!{{Q-)pxk@)|5Iq=<jaGw^}p5|Rh0a_ z{w@3O^?RSU|K5Bu{lEL(z03dSR{q_-_5Z(rZ*BMc{`zPAf4Tqfm-3JP|NIjV_6?}@ zJ3kj>&Wiu5|4aXu{-4_WKlpDy!Y2i)VYmOE|E_O*+y49S^>)Aaho0X4fBs)+SygcN z*ZR-;H|@RuzkClW3+<28|D6B#_Vf93|8M{Hv;J58m;O6H;`jbL|9k(ozfbF*|5t-~ z!`|-Sru~0F4IfZT<MMO+lj`=7|9<?Ozw=l8%fI&DuKz#3>i_cV|F?je)$jLzd;S0a z`_K3NKgqqn|1|#V&o3YEe-Ezz|MB16|M$cHfBy16y1u^mU)22d`_4`NA6@@{*01UR zkN&rOgx2+XUw=Y<{vVs4FF)&7zW(0>&V(O9<!}H0i~Ij=|F{3E{k8uu{zv~m{{QFx zpP;S@Qe|}g)BoG=|5j!HJ^n5G?{QEtKbh?RujbSC;7{9=et!S<-gdvQ9;kbA=->P( z`}!|G!{5r6?!W%)`o3T5?d$)|_`5ChOZ~RL>;L?}`)zAndiDR+f9t3I*uLxE<;U~? z+5dd<`v2?y>Br*#*8hzEBmV#D{~PoF-kksUrv1f#p<j<jzF&S_{?ga^pZ;w>_y5bP z`Qb<J`~Us7`1;n@|KI+szxLDqXZ%0^b^m+j?Vq>y|9qqW=l{Qm|8p9n7W?#H=j;B! zkK3>RzP|gP#{bj*LCswdo__`sr4N4H`NmzdPwwyc>iYV9_Ot(#{JJ*(+U5Vd-~Rvo zw|f7-u)qJp-`hv|uK#w~{>cCD_y4~Fwf^dh{-yuV`OVD0aNvjj%irwZ{{LKg=YRIw zZ}H{-`$hhvG^5{(Utj#c?*04o-~a#nf9(DLBmZpQ?w|K>ebK)x`Ja#f+W-CQe;t}n z+^+3E_TE1A|LUCI)&J8c!5Y@*x75G>^ZC`!|1bXKufMnd+K=<#`fl~N`snNbEB{~L zw*SxmvVZ3P<p2JY{_p&6eK$r6+vDrc$>;X3Ir?+Gz5U7O`=kC}U;g(C|HuEIpZ9<7 z1F2SjUjOa<Hjp!V{?DnOoBn_A=hyLne_#E2|JuLbzqfz?bMOAo`9IVV`DDS=SD<dr z+>`&FfB(Pz-|strR=@whPVoN=P-C5efx$TGzx_A=YoJo#&-3rM{+Iv#|M#c-*ZPk7 zPye+(-~U#>``VxVpl*UVsH=1QhyTBL<NwiMclAH{QUC4l=KrAV0&2RQ{vToce}CP- zGSH~Z{;og2_b;yhw*3Fqr}x(%|Hb{gzJ6c*+i&aF{r~a}G7_`@-|_F0_Z<IS{xiIG z-rxQg`McNrJHDs>cFOzuuch-qmBaNbpvqyr%>G}0>%L9@|M?SmpaN8+`|ks{arS@Q z|8f2=``^<4CI3JFA^-PvJt(n)FvJQ_R~S@LgPY6ye=&n91MU02^uI0tul?=+>iz#$ z{`;r7_kaA~zrm&d?|-kK`tSX3`}_YT|4;Vc_s{+>$XBcXpZ@>I9yETn8BBhkUT<&z z=-c=8_4oGAw=X>V{P^7chO7US{7v8Y|MT_#|F`Y`RiFEJ|JDD`<p0-y`z!qa$$YP$ zYd@|I{eSh}_uYTfLFK^@P!vtPfA9aQo#%}IoqY2@>~{XXul12X>*fB(8~<Co?*Eq` z>i^Gg`&XayXX`)rf1tiRX!vRK>;Is}%DX@3cYbxBKixj-pStnC&Gp;<UVg3r>i;iL zAK`QT*ZSA{*Vb<YwGO}5fBygM|I_-9^(lYWckX{x{|S^K>c55mH~$YB4^UtK|LmOl zjsLFynGYULO8zt5;@{)?FYEuW{h$B0|EvA4|JVM1tpAt)FCL}i@qg-{|KF<j-;4Uc z@o&`sjo<&gwfp&Gvi<x&Z>RiO8}V=NUr=xMbb9@_^&9HH{(QXtmi?=`^<UT5evPmH zcje;e*XbAk-~6`!)Bp0@*Q@5f1@-$vAKicT%fG+=*Z(Jz*Z*Jtf4*e>SCGTw|AhZf zuK$)^|1JH$%kS{3^67i$$JKjWuRrzszSaNBtLx%K>+Qe(?vJ~^?*I1Z|0AD+Mm+3y z{xh!nSGDb5{i#3p{}<PP)DPeHwf-5b&HVcRng6H%Z@%*1?dbiu_wnz4Er$0!R{yUz z`hWi$cg3D}Z|y()zW>&C|MzlGlWxzSeIK8H{`5cZ|MTPVd!KH${~dm7f7SnmtGCpL z{{6o8|JH5wfBr>-lG^_}-=ypRMA!W?t^HHJrS8tE=aIkvyWb99yZ>7D*Pq6lpZ&jf ze}C6MP^29DVXuYU7LEV&{V(g!C(-|_%l=+p^?Lo9|6Bi^|Nehp{nx+sZ-15E|Nq(k zWB<RC@hku5|9^k=>-zum?}Enn?05b}9g4g9A2js#=BNDg{Y#G4f4lyF`~UU7=KuY_ z>Dm9c|D&b%zxlr!G#vEn|F8eg{-6C1>cStb{|G77=l{L=fAY8O_wVmt_pRRNdi|-b z`G0@>{rh~?_xPLH|8L%}U-vJ5@BjIK_h0_@f8zVipZEX0UspHjd;R13FS&mvYu8`< zyFdH8efhuh7eC%#er*2LzxBWWhyU9D_y61f_G<r5{x7};4)&kR{r?8S)AiN=$De>I zdj^Jr+Gnfm`=_7(SNp1d^{f56{#i`_e|P=yFI)eAfBw7p_WrG);&A`*Kc82Ciue70 z&i`Bajh%s^;p6?T-~Lkn!*A^W`^Wsf{r}{8a6bmr=3!u%KjXjD|G%AI*N1P~|MmX9 z|JCRJU%p>||39Qzlo0dx^uPKy^Oyer@;(0V{`B9`&+D)JSNwPK|L1e{xBtIA_4z-f zy^#M`{`dA9@&C5})35yF|9`^&^Uv#lgGWgItpBGE?F21g-(GdKe(J%+ulH|@f4%?P zy#06Q``Z1sfA!Y(Z~p1m``7;c{yqQw&)iGj@Bg%~z2*O3;Q#sOkf91t-h@<E4u9kS zg2uD;v;WM0RsRLlBLn-SL3`t^fA#z7XWsm`^M3u;oB!8F?fd)x&3|@??CWdwbL&t3 zi~QwZ{~uIbDE>SB|IK~7|8M^6-+KQ4W$=jA|5sn@@BQEUR{y{Ce{+~O{(t;9{qIvy z`z;)5)`73D_g~wea{K--`>*w&VnpEo@gv~o@gIBdf9d~CKy@nInT3De|E`CQ+ki&w ze%}B5dH(kL|6iy5c{}|NXe{{R<$t$7{i?5-e-1X(b@gBU)E}_E<&251el7l0zwPhd z|Jv98zyGhd_g{V4Kli`#kLLf`|Lo89pZ~8u|Nr&>3;CT9|BwH(Jy!qe|E!<)f9<z> zyS!fI`2TCrW+SAWoOmL4|B2_XFV^q>{{8uHP+Q36)9-KgcKZL{f2-g3?_M-$6ng33 z)!*mu^ZFfrwf_FE^z7fq-|q)c4xG>3|MB?#r_19nAFtp3XJ7gL(DR$W{qNtlKB|80 z_3)41e{0^eyZ8U)w?Aus?*ICI{UT7KXujdU{x0OwRs4VO{(8mvHTVBNU-#cP{(t!1 zf92EOpRf6U+oo>cmA_m5T&~K!TEF%GR*<oO{Qn65KM}w6|JJJC;aB(nt1tTx>RLYe zcKZLT`d9Uz_WuDp?D_wvfBiv4(Z(PC|KIrkUwwN0zI*lmzXw;#zrTO`{`a51zlyH^ z7n}cg{^b9ke%{@GK5_r6Z~b-uw`Jb{p9QZ~mj8FO`w7bUGe3s^kN+oLf297?&G|Lo z)aU=5{N()R|5vhp$A`Y(e>1vn*FWR?|9`&zzxR86*#GyI|MI@>|9SlX{M!FV?0+r~ zs>}Y91@gh)y#F`v$1k@3r~a?A{>k?5`?J=4?x{EWz5nXB+4+Ct!~V@b{{MPU{p#2D zw*OB4-@Nv}ymbBA{}aIt+^_Xt|M&db|C#@!`u(5r=jvBZJpb>_`#<^5>(871uP^(5 z{@S<x_x0e4eD443KM%A1JpXfj%jfvj&*jswjkL}Ef9~I#_5bw$S=Udj`7{?a%v1h+ z|D6B9AOBhYe}4II{PXzqC-Yx@evLB9w(s-w>|66I|1J9W|J7emJ7Mx|&`8wE|0n-{ z0yiJ*&;GCd?_l@y+W)Bksei?P{|3cneb)Z^Pk;Yk{CoP>tNMBG|JVKxfBApk|IdH# z&-ju4$8q1s`TzF+t55rL_5bw$N9#Yv|Lq62ndkqV{3d_D{a5y1=WEZeKCi#3Z~xlo z_FK>WKNI?Y`~U5K-mm(X{D1qDpY{LT?;o?rn4++^{eM3AzqDw5_0#!wU)_I#YUS|% zASgc>Qkot3y7Sb(%jr)y*LQ=ucVGXVSNV@IR{jYzgQoqg{+l_do!Ibk{y%+i3o8CR zyjjS=z;J!;f7$<kJAba%zIp%8`uG3ueg6OD`~B~ba+*OR{QoMu`m{YY-_C;?kFX{% zXl(iU)zANbd_E3t<UEx6d;c1\T0fA4?y{r`{spYZ?nBmLi?!R0^e|M7pcul+Z< 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1e1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1e1_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7e4c4e5a876efa998dba9e5ddc0d52e073236520 GIT binary patch literal 13795 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1e1_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1e1_states.bin.z deleted file mode 100644 index d475d977845b6af0f9c4c8f1f9a7729dd69e446f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 42909 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 Z1Ue6OrGDwJ`6Wn0vj6`xOGVY3002-KPk8_U diff --git a/client/resources/hardnested_tables/bitflip_0_1e3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1e3_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..887da78ed508beddae7bfe7f297d5781e24624b6 GIT binary patch literal 2971 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1e3_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1e3_states.bin.z deleted file mode 100644 index 64884ba56b2f7ab45637b6a9953a3569978ccd89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24210 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 FRsc2+E0_QP diff --git a/client/resources/hardnested_tables/bitflip_0_1e5_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1e5_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..43b2cee21b78aa1d46490d5965bce370d876b408 GIT binary patch literal 6318 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1e5_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1e5_states.bin.z deleted file mode 100644 index cd80ef830bd265a1658bd0200c666a752b7df5a2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28272 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1e7_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1e7_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..89ebe72a900ed00ed096e9a85346ac3834775ed6 GIT binary patch literal 676 zcmZ>Y%CIzaj8qGbv~?)$V=!;7t+*(_D8M*3P_RLeQGg*dkbyxkfPsVS0b4u+81NVw zsLc>o>|D&u)5E!p<wR1(fy2s7nT<vgvkVMQ9GI2h)27w~SH!Sn$wVXdg+|Po{A!bL ze^v<9e=WrM#%q-_qxbXnMt&xVh<+stpNKxehzH4<Z4xO*j@q>G7`C4%u;$(v%$X3; zew58H^sCd3=A~2COf}dLW+-9claL@0*y^Jr5q{EZonnmA2E%5ZZi!PyCsIxet4=xD ztaaMp&|%fK#5UuwoN_Jirll<vOkOW0UhJ?EGnAMSaaz(KwRKVj^D~PWet`$OIo>I= z95`e!V}@a;O)#_IVXc=_^@X%I25&T!@HAM=lqA8-%_`x>nUomJ&Anlx*J{qrgbfn4 z(|l$YFfT}2wXx$tgba^}gh5CFkH*1-&<k;i-<7{fyb&*u;5jUQK<?u~SvDJ<@V%`) z(;a(!d~|e@yVbcx-tn=sJlNdkYU5wr+^ju6jy>rxo5YFt62{iY<kpAP-Y7hN=M%qS zGmrI=AFWLl&G$H;D4&opw7&7%;*6|NrSm^_c0J~%zfLa_9v-TaJ1pPumA^r*Y2}}l zi3W#`D1PC3!S7^qvMrdiO)@Frm>OHKn9iCFrxGU}Q%zd4nZxK*N=igZ7?070!=lYR zJdCZaojpDYkF@$1By13EkZq0FU~sToDB*}tVw=Q4n=9I#0h^ZW616)OniBFtvnBYB z(2fauhnC)S+R-TAz@`zrQ1;N=g9&q4ju;9{M9es*#@7^3ohqbc+sTx{#rgKAN2tA$ zkydD<1f!urNKyjZQRjdjp(CM98DX5O96OR`baVBvX(V&DF(n+D+RP|%<d{Y>n+`XR TNW%Z4cP9FYsPG5KCN}^89d`hM literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1e7_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1e7_states.bin.z deleted file mode 100644 index 42483bdd523ad97cf57c567a20f51d00808425d4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10545 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1e9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1e9_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64ab8f4cebd1c24d3f9e5bfa4061d15784f3e251 GIT binary patch literal 3842 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1e9_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1e9_states.bin.z deleted file mode 100644 index d133b27a294d5b9fe30050337a3f5f4dde5de500..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 28161 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®5BHe(rz%()v^1_ecHD|6A|> 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1eb_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1eb_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..d76993719f09a579fb5c6d66f5c959d14c725613 GIT binary patch literal 1928 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 F1OOp$N@f56 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1eb_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1eb_states.bin.z deleted file mode 100644 index 7a3b347bba546d927dac6af224d50ab5a92c0c0b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15053 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 E0Dn;gZ~y=R diff --git a/client/resources/hardnested_tables/bitflip_0_1ed_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1ed_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..8574c08f7f7377b2817d99a4b2eab74d1bd2793f GIT binary patch literal 724 zcmZ>Y%CIzaj8qGb^nPFYgu&6{-=9yjW=vp^5D=Ikz#zaN>%!tH=)mB>ARxdad4csG z0~j3OnU!HAp}0)hjfdgnvS!65sU(vGtb&@FN}9iB3flVeYrasp{AH&9_B&mx<_CE> zwrZ{4CiG`s{>&q%Qsy{S@n{}dXZ+Fg!onjbBaN0PO_z+Q75@_NQWkqJvzupG&`Fy~ zHK%-*wpjcTtPN)uiE(p_yjUXq#H(l0jIJXq-U+6B;`r>>=Ci3MSz^W<(I@f`PFY#_ zb-kN$=on8#YM9@v<%yFvtJ#V#`r^E)QXwh!OzfGOzK0Luo6kI2ANr16#G?IEp~cL1 z;xC+cTF)>jc;m6>$YNEWNS${x)n|oE8ftg!P;)sXnL0HkCd{z2wO~_1q>PclhIJN3 z1%=7Yori3XUMlHHI4s=a*Ay%!wETizOEv39?i=<O{+zMkpBNuhrhG88LbXDi=|S+t zFtyO0h0UyOJVq0(l=k0<TcpQj#Z=Bz@_kdp(VsjAkL*aCbmC;YjAxH_)8V#+2dNgz z+}PNxbmof1vL5W~veH)+EA*K<C7Dg=`wWYSkTYUoo{2L~&AsWoo6GN*ob0IwyL8T2 zmG}uSHacD^do`_UZd=4@?h}UH_mcm~$TKfXE3=-=`hib)W5gb=J^CD{jWsu?C4aLo z-|+XG{>%&i#8Y1UU+y>K|M3;^OjRApJi(8={v1k_citFsuuS!%{=*Lyg-4I`HGi{h zlc?l(+9)6N&3<ED`<{h=&+7@U2~WLjblCVK_d;utGArdpyOcM*+2PmjH<zzX!Z2y$ zpC2M2wHqd|-&^c)G^t_o+b&0S&WOOkhTmO`ovk8Ala@-X;aYV}Ah2nT*O3|CiJ@5? zN1H_>8V(&<rr6clb;KZ|$LmnA1dnUOnuuvUO2-(J1roaw4oM{SNKEY(Y-VQvFJ9zo J5ikLiiUHCxJk$UH literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1ed_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1ed_states.bin.z deleted file mode 100644 index db5d216aaacd92d42ab4ad6982d0b02d7f728a45..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10353 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 diff --git a/client/resources/hardnested_tables/bitflip_0_1ef_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1ef_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7a9012f472da88765c2e52c0bacc57dbcd68cd7d GIT binary patch literal 414 zcmZ>Y%CIzaj8qGb3~OuO%)nk+|Nn&mhXsQKhd_gXf&h~N2Lpqkqi7(5prea`gG37h zN5lc9I}8lW47^fO20gQQr80O77%nbc%yDwT#bphLk%YOtCJGq`3o9-@tHK|gX|{aI z7p~PO7DxsyKdiN<=#72wju*1e6R-I2Ew6a+x+M1b+3(Gt<#&8#&-^9a{OZAx9f2o% zW`<7VQCBRRYRD6MBJNN%Pu!#G`|4l*OP;Mg_qch-#|pj8w?e*6epOH)!`@VVW&Vbq zbc4!?rIMa!^;u<3b{&&-db0F}-JBZliwU1(*tr+l`L!!P`e2tI@NC2Dg0%Rw$~kxD z^%Pagu3LKcqZNO}5B;y-;twxA^NW4P*Y+a0txbo{@mPq(NF+|@Hs*ZbwK8tjiV5?c zsfMiCE3$G^n~&GVNo&@yoN>*ZoNy|VTU9c!S=E<WEL6wf)T|{ZwuZ{hh|v+_W{rr5 zOw#5NOpTZral%c4O;RXLGg;K=q|Yg}gn-kWY6&_=BaUol*w`AGH03mF<U)xnH}3z~ OJxTLWOVbt;+Zg~6*RW{- literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1ef_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1ef_states.bin.z deleted file mode 100644 index 15eeba048a286e14b0dcf3a087fdf20c612e0ebd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 4125 zcmb=p_4e-R-rEKO3>Qj{{mXx;;JTrKw}_{VF>-;%x#xRlZ`{ChE<&XJ@zlEiKYx8? z{b1VuvAl2npKkqq|BvbKWB9W7U+ms@X8&FsXJ29T|NO^yzu*4f`LBH6ztj8w?EcrO zpYX4`+V1w=d+~pF|J(n^{a@X|*<a(oey%UIdlTo+obdnjkE7xn{wM$U|M&KP<p0S3 zC-?thp7H<e|4;h=1vdYG|NZ{Petw2)%dh=s__hDn|4-}x=hr^^Grj&NI|B|d@A*&v zjgPed@BB3X@6Y%d|HI?Lt^YqiA!^UCB4U1u{QlRr3IC7(oB!wb|IPn4|C?O@ll{W~ zlXw3|_OAcB|Ev9s|6l(zD!lr-|Mrj7*XtX8+I#)|UiNqC|K<PQ$NZ1}fAfF&U*UL| z%?k4W|I2Fc`!rws|G)q9y*}^1|NnWHJVVGD|4se(zslkA*2e$u|K$_yEd{pk|ApXI z!mNhV?>_&L|Hyi#{>1)|-@8E3!oaZL-^+mWXEuKS`^p}w%;?Mh-uN0uC=Umvwc~fq zudMT%=O@4az4|COSk;C9EARb(DW-qmPyWB_|Jfb>CjWWFz2g6s_)qKqofp)9ZU2!K ztd4<!K|y}M|K$3|;_)^A?JMu*{<+xC&%lsS&-8Qqe`s92s8<3f8JG^@Y5$pre;gGj zN`2N$XPzhbe;gIR|Nr&%yT|1J{$OBW_@+Lg{&zhC!!P?2>!ESX!0`3{%Bs|_pRa_! zs{aZLC<carnfH}X?f(c$-u8RH{r-RBI6DKw2K&Z8xBoLk9Pq_{BFLK%4sm2d@H2xt zXe^ae5=#qa?LMzw_p9<)@tfNJSMTq({~!79e4U+()&KYV)|LG`KT*4mAz-83NxQo1 z)d&9d|F!?Q{eSx3^uOx=Kk+a4KY926%~J8N>tEL!{D1wQ+2P9T`t2XX*Z*huTtDU4 z`?tTm|NH;Fzw_Vrf1Cfm|E0bU;kPFRzy8TDKmPuoJXGvOz4ZPcOi&IQ^`Zaw|89LW zK~(Ms`}6A4K!HehS~*ZY&tC<UntuGN|FrA&kHzxx3=9YUv3$z^&(GlSpZ(|7f9#+4 z|FZ|>2J6uEYwG6x^7^~}A2cO0FfeHC{#||K?*9IoUw^~v-~ao6|5N?9&x)6R{{Qx$ z*~R*Q_;cs)ml+o%{Z0S#i2KI>&Ht1CpZ^!X{!jG(uXg{R#@8@@p8s+8ztj7F1a1HS z{$KrQZbpq@ygYj5=9_o#E5G|!`{eTb{lBWe|NlSj|K|Dp6VLtM{$F0<*3bP`^1J5q zF^Imle=Ht<;NSee^1ti9{jYj@|JVBOKlT4V;-2xp=l<9De@Cb9`dk0~e|K#S!v?#p z|JX15zxscA{onf6!q4~rIgKbh;NCXe@qaq5`~g$+;OCd!$M4%BWiyxz7P{b&Op*d5 zy~po|RJVv?>B4`<y0!lg{#pN@pMhb;f4{5RtLHD@7xaJif21OR#j(HkM~Ev!(e0mS z);?P2Ljz^B&L6Gwp-BNhHCpGRhR<l7j~X6u-e?OR9u!~(#Vz>JIv*U43=9n9*ZK3l Kir*0{`vL$ivSIW9 diff --git a/client/resources/hardnested_tables/bitflip_0_1f0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1f0_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..058cbfd8224ddb270471570d8f18cc296e763c80 GIT binary patch literal 511 zcmZ>Y%CIzaj8qGbeDUz*TSkuqUs7-0T*1)6z{$WE>cDW2frEiT;sUE30|;m^NHH*= z5nNsY!CCWs-R52DnK$_xr}k?O55EN)^bQt?Gp#I8W(jPR;bxRQ@Vmd@U_0Xlu2*7Q zyV+O{HZ~pRQIl^7|0a0AeS@gnf>i}vJ)GK1@3>i;3?jq}ma!bv;W%KR{DJEo_Y)mC z$Hq_M4TlalmNVKp#x=@t&CqAqAo75RndN{DOM?3fZH5=jObG`Yo3xp^VvlbvKfK^D z%Nx<AJ+1$^`4-wVZ-{Md_#p6w>4j+P8y>yGH%j;#Z4bT^zhHmiVDl$~4}yO<Hi$94 zv32Hed{X*GY{dqH)y!N526jyL6WR~Nx>)G&F&)}a5X0S2pub>GW8f8m1g|x$34!_- zG{smGyjc<^HZ9}k60KzNsB=_JV2NRw+8Fws<6uJ50SO%*5ecmWJrWWU5<ENxi3tZI zlr|(RZEV_L5XNy}F;i$=lMRzWXp;}ufi<F92NGteF@*<+tZP`eQ88g_LPTI<L_`Gt zc87f%;tW=5O<%?p68ME{#S9M(1BGQ=j^9|O9uPDT^<i}Wrdc4;-4Id`%;*^*+^AXL zsmIkL&U9!xOE=3Q&Bj(8t%DI^ToG!FiHWU=-mDD?31aO3^qzDTEL6OB`0_0Pc!0T_ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1f0_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1f0_states.bin.z deleted file mode 100644 index fb3df75b7d453231f20ff4957a223419ac060ed5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12014 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 XUGDO4bh!&9%U$-j{by>7`gjlkZ|!xZ diff --git a/client/resources/hardnested_tables/bitflip_0_1f4_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1f4_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..69262a53fdb8a13e507af155ae5d0056251e95b0 GIT binary patch literal 3035 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 CRxJJi literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1f4_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1f4_states.bin.z deleted file mode 100644 index fe2d56c90e1654312abae383cf9801aac27dc870..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21104 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 Nea@f%1*h-m0|0A*B830| diff --git a/client/resources/hardnested_tables/bitflip_0_1fc_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_1fc_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..c3d5507871b8e41bbb6254aa53afcc2c63c3235b GIT binary patch literal 1127 zcmZ>Y%CIzaj8qGb<g0td!_alKH1CyGpWm4zCI$wECMF&R1_w?C1`Y;}2i*1y2q1A; zuqCsBfmtfapx1zbA=$@Ga2W#wPiDs<lLHKly@nEQGZ+}Syj+~rr=;2hD_=@Va*PpK zEf`W?v0{3|M%APVN0uB6<CtHxY8s=3b}NtP!Qej(8i`yVw3cZtGT_mWWlY$pn!tC& znZ?j6QLDh6Sxg}zDd~uzIOoBnGDh})ho*f0rq21!!jH9CNKaTOSZE*X?>>?BO>dHp zJ}A*Y>DRKSRXt_up~j}e!kZ+PwrTxuIFwk`e#P$KjrIvg)}Js`U+`ka%1_*j3M7(t z#K@?rX}?L92)%H$`=^-R!3*<u#($|4|4=3R&R?Y`OqqShjxhe>gMZ|if6Gt)Y3ur{ z`ALlMl_w9j>i8tK_SmKTV&lKD@kYThKJg3TPr4#BZ9OF>ZD<n>6E#@%hMC2WA!*9= z9jY?g3llc17CGvp7_pdZLt@g588a3c8ipEdOzb*zWR1isSr+bvTnG7%y0)@UIN09s zL1KqtNpNe!gM!68?l*MYFGNiJZkKvUuIY=!#%_rn5)Y0Ue39jMs&y^1Vv~qtZ~Du6 z;6Yz&(m(GLyY*TQ%T8loVQ}b;d{FiD)HpZQSNu*pT;J%4AM_J$?Gx?hUi4x|ESo;# zA#2f_atB^S?1+f-KJmh4n&yKzKVdQbqT_B>1~vUhpD(JA2<B&Qd2sZ*UF(~8BWrDu zBL;FucEl(Du!v=UFn>dZeB)>Spf5b~>}P(<ir(xx+Q#2lJ@E@0pSa`UmWLMc7i(F= zH!ySk<X1lFC;XM4u`ImN?|8$DuVUiNa_%=a6ufXVlz;JJj)67*m0$Cf4^;ESFSIB) z&MkM`rNm0Fd6C?MWPzX48)G?d8f<(Q-xT~n<Eu7T^E=TBy{_N|OI|qtdLYR9SBUEm zN0`WJu9Y22TU|TDl*Kf=g;|@Kk~SC`Y)G0Bu`wx3o10Cd$Fnub$4$#1G2y_Gq==1f zI&M1NV%icB2M!4yOboRM*>Guts*H%1>)$T-A3B@~N1YCKdady|*v&1>rlV-k6ES1e zp(8U|4YWm*X6S?*?3&>$vL-Y_Xod@q)&?<#qY0gjnq4|!Iu0A=P6>GvaZKaT0RtX2 z9<4QMTnULh5gXQcb{tXD5!q<4M#5l2!hwy64M#h5v?VqsCK^Ue7U$G>VPJ4DnMWd6 zuq)zdm}Y~v&>W$@27}2wp<-&HNfO#(%v^^KL~NL0u;NgJ*U@0n#AarR88ak~HcM<U zNNnTmidfAe|Df*#_ok!Df;~RT%sh(S5(himbRrUa)C|>hA`Ez(If`7Zh2~B*bd!i^ z(`=sF)W*F~DPp&%k5)meJ4>QB%OS(2q$x*rBn*ALd3ZFt#aVB%8A$Bb3};D5I${_s zywUYaXp6P7(7|RgZ61l8UVYpP%baDD7YZFpm~yZ&VmEh-pJ=ByXP1~x@Paoxyvh<S XV*3~lHbmI}*gZ+}P)kGc_kaWdIZnQ( literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_1fc_states.bin.z b/client/resources/hardnested_tables/bitflip_0_1fc_states.bin.z deleted file mode 100644 index 791352bfd00b694cd9ed228ad5eb5d1c6cbde2cc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14387 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 XSw^S)MyLG9p7LA1;6K0Y#8YwrTL{N7 diff --git a/client/resources/hardnested_tables/bitflip_0_210_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_210_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fe85775bfe7cdafa269bb9b1c2202af269e763c7 GIT binary patch literal 1680 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_210_states.bin.z b/client/resources/hardnested_tables/bitflip_0_210_states.bin.z deleted file mode 100644 index 479bacb03..000000000 --- a/client/resources/hardnested_tables/bitflip_0_210_states.bin.z +++ /dev/null @@ -1 +0,0 @@ -xMnFaWtщ|5o}4Lg ObOjzߟ1$_K߿rK->ɷޥ/~}K?kxzI,t_~[?~O}־}~;nnr|_O?鷷>ޯ_OCe9w}{}zǏa<㯿KŷwKIߧn;7I?鏗O/???O/O{??O_o/_?w_w_w?_?_?oO_w_Ow_?oO_w_OwO_o/_?w_w_w?_??O_o/_?w_w_w?_??_w?_??O_o/_?w_w_Ow_?oO_wO_o/_?w_w_w?_???oO_w_Ow_w?_??O_o/_?w_w__Ow_?oO_w?oO_w_Ow_w?_??O_o/_?w_w__Ow_?oO_wO_o/_?w_w_w?_??OO_ӿO??O??ӿ/?{g{gO??o??_'{???ӿ/???oO_w_Ow_??_oO????O/o?o??Oӿo????/?o?Oӿ/?O??w?_??O_o/_?w_w__o/_?w_w_w?_??O_o/_?w_w_w?_??OoO_w_Ow_?oO_w_Ow_?_oO????O/o?o??Oӿo????/?o?Oӿ/?O???_oO????O/o?o??Oӿo????/?o?Oӿ/?O?????_'{???ӿ/???OO_ӿO??O??ӿ/?{g{gO??o??_'{???ӿ/???OO_ӿO??O??ӿ/?{g{gO??oOw_?oO_w_Ow_?oO_w_O_w_Ow_?o???O/o?o??Oӿo????/?o?Oӿ/?O???_oO?_??O_o/_?w_w_w?_'{???ӿ/???OO_ӿO??O??ӿ/?{g{gO??o??????/?o?Oӿ/?O???_oO????O/o?o??Oӿow_w_w?_??O_o/_?_w_Ow_?oOw_w_w?_??O_o/_?_w_Ow_?oO_??O_o/_?w_w_w?w_?oO_w_O_w_w?_??O_o/_?w_w_Ow_?oO_??O_o/_?w_w_w?_w_w?_??O_o/_?w_w_Ow_?oO_??O_o/_?w_w_w?w_?oO_w_O_w_w?_??O_o/_?w_w_Ow_?oO_??O_o/_?w_w_w?w_?oO_w_O_w_Ow_?oO_??O_o/_?w_w_w?w_?oO_w_Ow_w?_??O_o/_?w_w_Ow_?oO_w_Ow_?oO_??O_o/_?w_w_w?__?oO_w_Ow_w?_??O_o/_?w_w_Ow_?oO_w_?oO_w_Ow_?oO_w_Ow[ \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_0_225_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_225_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..15195d21385b0eede73fd2ebfdf61354647a4812 GIT binary patch literal 12468 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 YuI!ateOk5upWc(Mf`y9w())e@06MU46aWAK literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_225_states.bin.z b/client/resources/hardnested_tables/bitflip_0_225_states.bin.z deleted file mode 100644 index a4cc5d58c54c0b63b9a7a73ca28792535b688a30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77058 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 diff --git a/client/resources/hardnested_tables/bitflip_0_227_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_227_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..18a6d49871207a91671b9bbecd09e0a98f45fb6b GIT binary patch literal 2268 zcmZ>Y%CIzaj8qGbOkrSQU|3*Sf9e0<mAxx(yx{(t>BytV$-w9#z#zfU(9rQfN}d5H zuw16bAj}}lz%YY>v)$y#0j30|1O{OSMuTTFW-$0L_%JXfFsR8~7G~gV;A~*<VPH8t zD=C4|fYE?~vw>lT$dm~!S8a`aC-p8#Tjrc4*K*;DNv5s;ReJ$>h0xF+4F?QNMD&>Y zr!#b|YxG{gbijh8K<L0kKgI((+zbf`d`uE-3?2{o7!ndJI6WT7Fg#Gvzu92V!*^hj zf!6<q`W+Trdk$1HJka6cpI~5Mz{hyNg5SZLsXal0jhX4d2F||^{xsA$UQlN^;Pi$) z!A@a=>J1sz1K|t?`g`~u%x6f@VPkB3%k)6b;Xs50_s`~A{BQUg8yog5h(E*E@Iris zglwY>(*quEhCd9y54>P^*vpvU&X|ypkPsnW5Yt#7wVFwLL4+7<!-3Vz3<(ipOur5m zh%;DlGZu(5)?J8y!^Zrb>4msM8S@VD7mNvfj133oGBzeyaLPT<NZ?^j@L^`MQ?TGj zh+%AOwD&NOUm?TB+z`u@U|_)2zd?S5IHMTLfdu&qyAO2<u}s!X2|Qc}5+sBf8xF`Z zHhf`N#=Jpp!2vx+b;bh;I&92Liy01Z@6fN%{><=#yI~EBeTMu28KynV3{{NJ82TMT z6SNr{BDk5Bu^iaJ8S<B*jb*6?$B)Ku%?<kwBvi1<Ehymp-pnZfj6a}^^@7NO4F)<4 z{~o9}#IIpvearZOhuuN;zy>iUxdj{4m=07mHkLCp#(PMJT5vWR=p9I~PY`#Q!_1Tr z!`v`Kv@s!u;eiax{|N>%EW4W$oOkH3HvCnvdr+rfd*BQ60o5mrPdE>-Ut?Y%*I>oW zm>|K!yn~19zy{R@kaitDrUMq71`@0d1w5RM2{B9s+zsm(8y<kdZU@&69&S*q>Toyg z;CR5tV8P7vt?595fdn^Gf$;aH0`Au=2PD`X_HD3Y`M}0%#j-&{<Um3N8`JlO1J;aX zOurd^GbTjHKVUy1$B+=qaG>8neS$D!<45Mtj13zMgqax(I2)F+9B^lR#eRj4sjBJk zgB_gq1v;#a25hX2p%)A^55%uwZkX`1VGZkB*2eG^;w$(Ae7N`;9$2u-U9eqHAoPY& z_P`pZcbu|}st1BkFh65%P%nsJZb;B)kYM3I$9JGWLV|q<_W}#X3lgjidl%Roe8qS} zsDSYeLqdYafxt!y9&V<kH)I$u2;bsnlyflPW;h_{Ai=(a??Ie{XCo-~nVA`OF(rh) zV?4lLpnr||3cG_1!ycvtH`azVTnD_Fma#S_h%qmaVLYJCkPz%}AZukqf`J4NS3(32 z8@q$8;|o6KAB+b|_!<rz=zqe)y+DWKg#`Boy@m(EJ1m&qu(4V(tYN&v$K=OU9}vUx zyWxOMqkV@S!`uVy7uYXwJdizb;0t3zf`M>@0S`CRJJz3!H4G2*7!zVx8xtf%EI1nq z#8?g#h_US8Y%~yKyr9R-@W6tHYl9jyQ-p*V8yg#IsJ(*d4eoyj4$R>1U}yNj%#<J> zAj8~n;DH|FfxrU>YODuj7!A}I9%wTfSn#m19;jga%~-`y!n{C+wP6S2Gu8vzSJ)U6 ze7G5Um^Y{=#IXK6_==CIgz-Q^0pEdLtOvqBvd<7>FYw<XA$!oky5WTcJL3hLh8G-P zm<~*1wPh@0c%X8i`XGOW`UEwm67DO4&zKwLFuh}E*kHfFPT>>lGnNk=1!4>zI1X&! zW=N22JP^a0;KM#aLhuzE%R6Sq8(g26cUU(zykSq!J5a)TL9a2E@rHbc4MPn>CF23V z#wYv=3I5O67!Sxzjk~W<#@LvkcVKUW6*I$uzJ>z{!Hh5X4Z<CEaPLsxBko|$%+$li zYG5G2!}x~1z@K3UU&C&uAB}$*>lhLe>J%#2C)hAEGyGy$e1`doIKy;?1joi3atCaf z5^5MfH+^9Gv%tSX<p*P<{0$z~{|*Lv59$*l*spMYXMV=~jPV2e9$BUX2KqB3MBlMC z`ZauSs(DbtdLThx!9e>4yMqBUbHjn32QO%RU_ZykdWZRddV>Ym0}1g<jQ<zdeW+r5 z#eIY813TjrKBnEw4OZ+Y<Q`bD|7ZBXeS-S|cf$i2#sg){3-}8R)Mw~$Z!i#JY`h`* z>50gc{taxbpV$}+Bm^594(!*kzaq;h?hx*<V&4TTmR+n3{~Z!!*gvr|sx#i;W6-?A z%&>unn<2DegAO;t28IJ0SPmSJ5MxZ>;o6|tm=Gb%bU>LYL5<Zwhnq=4u+jU3gdAhT zp2mdG3ld_CjX`hN7(TEklyF{<b2w1O#&{sX`G6RsJHvs%GNuE|6Z{?=5NAw?5N71z zW=e=)W;zhT+UR*fhUI|D0UyQ)*2YEy9<J4l2_Xk0I2$H2&ERI*AR)%usLdE5%-HDN zpvP#z^gxU;f}3H38gs)c3GN1w1MQ3r1`?tPK5VQFJ}d_oGd4yDGa0BcB=|5kf(rZt zpn7IvLxLDng2sUvtO*912?ksnq_~{=m=`3J@G%^CAj1qwp%M~&j2Ac)yc-fEcvuc3 z1U=yDdvGAOu`x8<;SH!vlVv<mz*53u!QF7+zy<>~HkQx>EE1v(5uyuLDJA$Xk)OlE z!^V`5P|n82&hS8j2Ljj_7aX`6*zkbw!5SWBCT+$B9ga0@j5lOhV;CDOxEVwn>@G-f zm9w(3cpZ@7>Sj1FvEjg?I0iPBO2)>Z51a`JHH|OW9l9G5Lj4nD4?NH^5KoY6cwoWD z+z`XOz^kfxfo&D5dx5`!1=rF7P_l{OVGV9r*_aU8utBrIKx+mYlYz!NW+ufqObK2) zn3=S`u(A3bXk*$SAyUqGAgDlO1`opwjsuhQm<~7|aAp#DU?3sE#?IJyfE^S835ty- zA_cOH2Vxml?ci)kNML4c1l6nDjExBr%nS($5)u+@EC)7-9w^{zY`kEg!*ziFzj%?W KMZg45YX$&eRqjmy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_227_states.bin.z b/client/resources/hardnested_tables/bitflip_0_227_states.bin.z deleted file mode 100644 index f7bb63eb7878e931d723a7a353d2af818d2cc96b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44320 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 diff --git a/client/resources/hardnested_tables/bitflip_0_22d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_22d_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8 GIT binary patch literal 4981 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_22d_states.bin.z b/client/resources/hardnested_tables/bitflip_0_22d_states.bin.z deleted file mode 100644 index 4e5b2ff279cebc2f552d994ff58cf344c8e4323f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46813 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 N$q63+<$0{LxB<9)=N13} diff --git a/client/resources/hardnested_tables/bitflip_0_22f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_22f_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b6c1eb54c9a47adde8f344c3c51fa06cddd1c782 GIT binary patch literal 1135 zcmZ>Y%CIzaj8qGboE5mHfWcF+{_p?)FaK!%ZRjYSBQWI&1BZqKg98KO8b$^oCx$MD z&Ierg84%#vOi7*@ii<g$OfD`KFgZD~fuY^x#EF!Hyb?Zw%X%dmm-+NCuvjj0b5`TX zIF!(9l5vFBC?$bG@vM=Nq=B=WFiYlQH-*f}$_$KrnG+|RY?3mVq3kPV$m}yyf`LP1 zsz9fazpqb^k-~)wnVl0m7hf@vO8Ml!N5p@>!{kd$)0nuKA~;qyMldWt`gaGbOatp9 z*0>uwTr~}~3^fldnXH&Lu&?9#%y>Y&LbYM<0yzVB1uMqJ(5eFoE(bPnALH7<!`K+Z z*l@r=LbTyPf)B@m?gs0IJqs+E_wYHEF)z?;c)@*>#Xzg?fPaZ-f}g|JgH}wTmdqR2 z11wqJGKD(`pJG48e}advp^q^kLPGR{I72D(ga|Q~2Qp0m80r;d50o(P;C{g#P;;QX zd5>&kf;)p4V`D<#ho-*@Pxvh)xc@XWpW`=>Pq4dC!C1=ji6KMfSL1Vb(SR3hEC=EO z{AciAV|?GVzJae{9ixH%6#g0V76$Sg_`mS~;@-pe!0!VO8yn+8=7w+v31Oz1gaXb3 z5}b_&1`-m&6XZ6?G#*fG*dW0#Aj9~o`3N7w8_xHP2edb6tzkdK!|sq^$=GmUHS>Mu zhLFDwaRG53#2G9YukdpSuh0+Sb7T*YU@GD`u=)X`4a1y91KGxk1N#{G9PJ<2OW0j7 z&|6T#+VFw#0N;nu4~<`%7uY=b&Uk}=fh@x-Hr9U!teAc@);Gl6kZ%z$5O**z(0dT{ zk?~DK0oM+u0|q=y2ZHzT=kPHWaj#Hgtx0$w_?6)aS8YN<xWWdR#soh{19gQBst5Gl z8QK;0Dm+^~A@~aOk0uMI{RT2k>lpqlkP`^L&f1s|A;$WE^)=&T_Jml*N9+s+2A0e# z3?%p(ELkj=&v2h%S6KCm@g94Eje?EB{0rg}_!{;!*f{JBuywF2h+Ck2iu*P54*5Ic z3E>SA5~5Go8R8@C9@sh5F0g5s>v%&vfsgTkO=+wp>pi}P8Di`V^$!a8zp+*`l(61o zzrnZQ3)6?D-;8CfH{=#rFnwlBkYQ$c!oH1ti7Z12>kWPeOZHoQ6O=a?Xuo5<BI|fU zuVI58LjmIfxrSPWD#kZVFW3uY5A1F{!Ji@bL2p4Rdw}28@CR&6FPK+Yusi7RH6+M7 zCKwp7*jjOQ*c_N4zKe~qF*HGkjX^>n!9c5rYhj}f8-syhLl|R%H)F#AH)f{QOdBMa znbxozSlQ5(AR*ew!?i(&X$IE?ZKkV%2@=8%E0q}&L=s$IGBZp)!sTheU%(|H@I;u= z;|Y_5h^<0`#w#{ZLSSqZzuyqNL78b$f)2-l#S9yGm@HTumiq9p1~VNvuz}-%foj8n z2yTZ20|OndtzoPU31O@W%FG}+ZN|oT1uPE)8#YL-W;k#lLPF@k3?6321UIHNY>W*F X20B~^5)ABr?4G1~sHNpnZ*l_wOTmyG literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_22f_states.bin.z b/client/resources/hardnested_tables/bitflip_0_22f_states.bin.z deleted file mode 100644 index f8686dba6fe9851da2a7484b5352f4521b575ab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23650 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 QgLg{ufBS#-Y_;T>00#Gm#Q*>R diff --git a/client/resources/hardnested_tables/bitflip_0_240_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_240_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..6d1908e79244a241457aee82c5587bd1f30ef123 GIT binary patch literal 369 zcmZ>Y%CIzaj8qGb{2#f!mZ4-zEaMdh76t|u76umv4h9B>1B`b{7!=r87!LRbHLEpx zdP=2y@Cub+)cDM@xItA)H7I;u!;}J+#SC610m^%X`kMlkmupRo6m(MwR|(@X)i~+4 zs4vu2zA3O}@r5b1LQ~z7R!kG>QP6kw3T_bU(b853v`bm+DyeZ~v8t5D>xQYE7rYDt zLwZytR3*F&ybM6Js)Wjt2b^w<fia942UO)9m;xVgYFaQY+CO8#n#r1Lo*QkHVywu? zYk0-L#K6GB#J~jd07C-9Jq9M88BJi+uw<!JuD`3Gj)=<!E*%XmE2eISMF&J80+t?h z415t-q0|#twdj=2qEkA71tPIrIvTq~;<%LJTQm|~TSH?7MGKg^ITj0s>aWsSbW|)b zQ;d}>hD%4NB_c3k(V=cuF;+1y9gzr4(GRR*j3NcBVvMejLW11yD!Q;c1Zh9uSo~x6 NB+WxDjcps!DgX`{bqxRj literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_240_states.bin.z b/client/resources/hardnested_tables/bitflip_0_240_states.bin.z deleted file mode 100644 index e4f4b6ac6..000000000 --- a/client/resources/hardnested_tables/bitflip_0_240_states.bin.z +++ /dev/null @@ -1,2 +0,0 @@ -xAP ,Ձ;w!щG -! {4܆.R-W/OOo??_=?ϟݿ_??{o???o??{??_w??㏿_?w?_?ǟ?_??ǟ_??㏿??g???{??_w??㏿_?w???{o???ow??㏿_?w???{o???o??{??_?㏿??g_?ǟ?_??ǟ_??ǟ?_??ǟ_??㏿??g_㏿??g_?ǟ?_??ǟ_???w???{o???o??{??_w??㏿_??{??_w??㏿_?w???{o???o??㏿_?w???{o???o??{??_w?{o???o??{??_w??㏿_?w???㏿_?w???{o???o??{??_w???㏿_?w???{o???o??{??_w?w???{o???o??{??_w??㏿_??g_?ǟ?_??ǟ_??㏿??ǟ_??㏿??g_?ǟ?_?g_?ǟ?_??ǟ_??㏿?????o??{??_w??㏿_?w???{o?㏿_?w???{o???o??{??_w????{o???o??{??_w??㏿_?w?{??_w??㏿_?w???{o???o???{o???o??{??_w??㏿_?w????{o???o??{??_w??㏿_?w??o??{??_w??㏿_?w???{o???_w??㏿_?w???{o???o??{᏿_?w???{o???o??{??_w??㏿㏿??g_?ǟ?_??ǟ_????{o???o??{??_w??㏿_?w??_?ǟ?_??ǟ_??㏿??g?ǟ_??㏿??g_?ǟ?_??㏿??g_?ǟ?_??ǟ_᏿??g_?ǟ?_??ǟ_??㏿??{o???o??{??_w??㏿_?w?_?ǟ?_??ǟ_??㏿??g???{??_w??㏿_?w???{o???ow??㏿_?w???{o???o??{??_?㏿??g_?ǟ?_??ǟ_??ǟ?_??ǟ_??㏿??g_㏿??g_?ǟ?_??ǟ_???w???{o???o??{??_w??㏿_??{??_w??㏿_?w???{o???o??㏿_?w???{o???o??{??_w?{o???o??{??_w??㏿_?w???㏿_?w???{o???o??{??_w???㏿_?w???{o???o??{??_w?w???{o???o??{??_w??㏿_??g_?ǟ?_??ǟ_??㏿??ǟ_??㏿??g_?ǟ?_?g_?ǟ?_??ǟ_??㏿?????o??{??_w??㏿_?w???{o?㏿_?w???{o???o??{??_w????{o???o??{??_w??㏿_?w?{??_w??㏿_?w???{o???o???{o???o??{??_w??㏿_?w????{o???o??{??_w??㏿_?w??o??{??_w??㏿_?w???{o???_w??㏿_?w???{o???o??{᏿_?w???{o???o??{??_w??㏿㏿??g_?ǟ?_??ǟ_????{o???o??{??_w??㏿_?w??_?ǟ?_??ǟ_??㏿??g?ǟ_??㏿??g_?ǟ?_??㏿??g_?ǟ?_??ǟ_᏿??g_?ǟ?;m \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_0_275_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_275_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..15195d21385b0eede73fd2ebfdf61354647a4812 GIT binary patch literal 12468 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 YuI!ateOk5upWc(Mf`y9w())e@06MU46aWAK literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_275_states.bin.z b/client/resources/hardnested_tables/bitflip_0_275_states.bin.z deleted file mode 100644 index a4cc5d58c54c0b63b9a7a73ca28792535b688a30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77058 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 diff --git a/client/resources/hardnested_tables/bitflip_0_277_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_277_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..18a6d49871207a91671b9bbecd09e0a98f45fb6b GIT binary patch literal 2268 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 KMZg45YX$&eRqjmy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_277_states.bin.z b/client/resources/hardnested_tables/bitflip_0_277_states.bin.z deleted file mode 100644 index f7bb63eb7878e931d723a7a353d2af818d2cc96b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44320 zcmb=p^>%LLEN$!Vb>}Z++oU^H&OF@Fy{p43U%#BoQ=!r7_0oB<ugh;;<WOX3;{W&j z|Nr;@t^dEUus`|hr_P_aUwglQz4!ihmCe2L{<ZplUz^Hrt<OJO|GHx9_2qTXkM6(q zbAIXH?eqQz{ro=ff7HLo_44cfSNse4WdG{3<;$;YzwKQ7dEbs-e|qEU<7@vG&e{I| z^#AJrcO`$<%==#_&b9r|-~HA<&-}mrdDHjqKK0M<AOCvu!|r(T)AA?f^82@c^#5M> z^1ZWN+k5qo;j^}!|IP7Pexm-|3(t>Do__zzZ?Th!Ve>wJzJKfF?<xNq;_Z+B{9OI- zd;ZnukAM9w6sxJ9H~qZ*{`v3!f4uqdSO0fT&9AkuzIVO%o?kzw?|k@~{@DNP_x@Y| z>v!?r^y~fI|F(a8zhO;%r~T5;`FHDY{6GHgzwDR$g=JUvU;3xIcm1?IU+UNX3IF{6 z`~A@U=l`FwTmFap@Au`ezQ<i(e*gcuiTC^eZ}}Jg@B8}iXYT$#@!`F}ob%Vu`tPnd zlTrV3hRwexwQ`eo+f6yXy5`yS|Ji4cJT?FG@9TZ<f3=U)OJB#!?f3hCWnDf0zsRra z{r)d~|9#!!Cm)yJ|Nn80)!*q=_Lcv4oeKT)e(jh2<$pGK{FgWXwW0mAUHh_>GykUS z>;G$K^45R-YyHQZe;Z%_nDXua@$|Q!W#4>%yyp3T#R*yelx^&lo$H<-z5UmDzjo38 z|8-*D>r?7YfB*Bp`>AH(_W2r5^!M2Psjb-0UBC9v<sbiNechb-?|f;z?|bu0#-_il zOaJfb6}$g=&!hiV|26ji|NT=w>i?#1bua(kS9|~U-*buj71!<`|Nmd_|9!jv_c#7K zesccQ`f0CY-|XjSR!ytlx6l8!e*W{D3;+I;WAvO?fBokDM?X}5-#q+p^QZHV>RG>) zr~C{3I6w65|A2pszU^1~S3dE%)9?7M|0h4i=l^$>4tA~cDcQfW*S_D&Yu}#ws{a~$ z_i6mQ(_J61`E%Q~j|yp$O;!_?>=&2*bAS0)@r3U^@2AFR^mWhL$JYLt_~-GWulCaa ztzPVZJSX~p@45fY3-Z6!d+ndUHqI&k-y+oy{}nlI1^;)x@af}xra$**J<gZ;|MKYm zu8;G(kN=O6OPx{Aq4dxH&-@?uzyB9~6K1KMx?lf!y1VDxe%<HWi|ZJ^E-tERH?2$F z``_^9kK=3pU;3WC_W!H<^=5y=%m4rSDX;ba!T*E*oBy-_&+iBaQSoQ$Km0#;{`({Q zum4y6w=es*;{W}RRj>XB|2Nm<zw%$dTX}87|Nn0F|3Clxf6D&<PlfOQe;!$WXRpxP z@BGy--hMuRetGSu&!4~jJ9?dczW!s*kEYW<YW^0tnJ53qz2$lQd-+f2uf;n)u>S{x z|Cjx<|NZ~|zsf&$|Ne4%?EY_GFaPHMcB%U9`|V%-J^H@B{@=tq|MTB}^}oNru6+Nw z9shS9sn_}4Z~E_1#Q$uMKPR*QuiNv_T_N-DeYfKOPlN6Bzdil^eSLlW>!*tA|DP<* z`TPIxU&~to|9Zb|x2QW=$9JvthfU_+*+0{-?w|Cp`j<Or{mYgAFMWOg?(zRWcc1@_ zKi~h`UGlH`-uYYVSwD%NyY4z~&)0g5>*v2lY5mWvw%cFt^u+#~ZT<YY@(=z`{6FtI z`+t7N7xf&k^xuGja_OV@5B}eNHeV;;f6%X-UVry<`iFjX&-y%l((BD%#jU^WpEeJg zxo!Vvzx^{m``@+ama~@qZ`b{Q`j~z2Uk1y%AhZA1{uqDyf9%=+(hK#+ZwCGkyHYL} z`+vLFztune|L@=X`~T19)pI95KfV2!^!I1;pZ*HD|9g7Pv+Mg;*6+>!|9RI}{r>pn z^;y^Vv;SZ7D}4F?Pe1E_{yF{~mS5A)|F6EQ|L=R)ulw%*w7=T_sQ>W)$^Xg!{r}nj z{Qu<t`|1Dt|L@=VKY#xJ_YwaeKRJKO{`6P9Z}Yd-*H+Avz4d<8zvrcpp!~Ms|C&FW zf5bQbm7Q51`X@c~xBZm;EB>zU_#gXZ=Y@aMAJuRAbN%*zfuHeL{xAP$|8rmRr}~rs z+ZTAQaQ>hD{<m|$=0EYRe=S1)|GM|M|B1Z#+W$9yTzC90`~1$Y{E~n2EVY~eKmNPd z-2T9S<^Mna3$)lpIPQ12@a3cYhyUAt@c;O~^Q--j|37|;fIRTv|N8yR|L0$s{^0-N z-=KtiU+bUKKl>m5H+}Z{@PFIKhX3sU`TxoP`7iRLKI8l6ctQDOyZ^c`{~JH}6TC`3 z(e8ilo&W4g|M(pRKEkuq$9j%K|BwG~2W7&p=e{YwU9+#3fBOFO-{aGdmoGf}H2z(` z-pzjbzfYIGSN?n4`{U<zpYmn@|ICj4pZ4$U!v98}r@yxUZ|wB{={@@y>#zN)-|}aE z_4WVv9{!29zIW@-p<B=8Cx5(e6}SG6Y`&dr_xk^FzkId--}@YY+J617|A)WIpP&Eg z&&sdQZ+<$MeLZyTJUgrR-K)>vfARJE)$6+-*k^yte(?WXvC*ISCx1geE^Ga`f8}@G zNr%_iJb%7_>*VQY_cQ#TZ^_RL_O<<w|GnSpKm332zuT_)|Nj5Hf9h9%PXF-#?IU|o zqHX@q|8BeRzxY%CuYLKy=AHe_7xyK<{lD@>KRmu((tlrkO5@-7%k@_d*NN{x|5d;A z#s6JJ|IcsGPv7!C-R)n@ul-R!mVf+j`a1pcpZTx%&AOMrBt7d(`Ky1G(z^SeS04Re z`Y*8V|M$=KZeRbKovQx+?|$5$<Nxp9{=fbF|ME5e3qPelo&U5-{P+1=`|WJb^Svz( z{r}nOceKp@6#MEM^<n=a|ExdoukXx$t$&+W{gpozf8}5Jk^g$1Vlw`Ff3y$$caYzC zYT@N;U*pr(|5tn~|Le8%wfe-rX0z)*{1;%!{A~Q^ll`+d^}M+{@0WhsS@oCe^$+Er z$6a67oBadjF3auzr04!;cf9}R|CBoW=)EoX{<wNS`0p&RW%<AM1y3K_U-`fNX#I-+ z_S^q0|7YLwPyL_&pZegR|0n&GZ`$_ld;RNQ%Bw$beEO&C9RGs4kiPdDj^(fUZm%Z& zf5O-IH}>Ck|9^G=|D0dz-~Idg**@eSq^RZpcVA#V+kgIl`)B-r@PF?7_ebkN1#JDB zKY{=EKmH2JEcrolEB?oexkqjMxBtTbpkF#)my7%kZ~JS!{;&Avzsg5nxBlx6`tM!( zzbV}Qxc?uI#Q*oT|L6P_W%>8`KMdx-`oH=A|F`pxzkhsxe#4gE|37~}_^*ET$MWC5 z7vGEj^Y8m}`ICSDe~bJ7<?rkA@2`7)@Av+5eAEAk$NGI=_qQFHzvtWgQ?Kh;CSCiV zYw|tb?&;^G_<i;Ne|_H?C->>se4FFf{@=epe=+aV`x*7!kEg$Ro)Fu9e)6^bGwZ|t zYQNmSynf1u>GOW+$Nqn3_wW4u+I#=M{@GDK<zoG%->%=+`&U*@-(Rp#@6(gD|DAW% zt-Bud)BpD8pMQmw{%?H$^Y@!S4FCK8eBWdLqn^X*zjHu+A}IIji`KLMzi;+GrSaGF zOX=A)Rz-D!*W$0t**_&_{@VRF7XIJ*<<H}inte%iZ+^ySKmQ-|dAr^Diza{VbAHB~ z{hRrU{lv$~n|^M8Hh<!ObF=^JoBvs#>-)8R(Z0_we(ewa6o0n<*Z;S7|DU(N|9Xy1 z{65orJIw#<Twng{-u@@X`~Ug=eI5II{`Ix>m4B@M2Jil7`y>78eyhLJ&;LLD+<srb z{ojB6&#%0+ul{%cb=}AP+b{jM`xL(tT(_$KpZ}-+)BltI)&JM;|5N|x|JlFwzyH)9 z|0S;uO5N+qH~wGq_x0h=Z!Xk@f3;t~dH>Om-rqL2|4n~7|LA|NH}6mUS^da<^{xL4 z|G2)bcm4BT>3r+A{UZM-Kiz-tU;Bywi~iYv{eSYi?BxI6|Lj?Oon(K-SKpU!n)UR* z)|=xie_j7BSFiGaN5<dt$M*C6dT;UkTK(eB{}o=${wx3f{obF9|Kxuj|KG0g<sjED z)~03s{~JK*{lNe8YyThofBgLN1K`F%{a@K1|Cj7z`7eJ@{*V2S|6w1+Km9-WfBM|; zrvKY}+5dp+kO%*lANcRQd;b5f9}=H`=6n91&-i?P&|i+vKl2~|vj>%{O&$N81wPh4 z`hVnq=YMAbP#d7-KfhyuO}^4?{ixmhChtH0T|QpUo>y1ze^GtO$+|x;^!01yU)slY z%`cx?|N6)I_}9P8Kj-uPoj!Aa%>SSB1%K&(|97xv>$U%jpZ>qI``>rI=l^egy!K4| zn%(~yJ^!zLta|#s;`7Uhn!n#K<wrp}0F_t&LwW$u{ny%`pT-}zdtKJoFBdE0V`~4o zt>3?X-#ym<k=^mk|I6o1e)wPM{qinz-Jbuxd-EsCq&>B?|G#$bo}7QIKmMPolz>z` z2mj}90f$oj7s)^W|K>mVA3fK;`G3Cne@1ZOTVJq$?uY+D|F$ptpI-X^q|5(v8~!g} zR=@MtuhSKu{wi_5`9JI5V!3a-f7Gt4U+Mh+`qba`ZMBw*|JoaWdVcBu)kF5Z|JO&_ z&wlnl=KIwzb;`EEi}weAKYu&pqwRU^f9pT@fBL<D{(r+&|F;L;+x`9jw@3E>{@?qz zzxLn$<iGus?X~~wT;F}8{@TB<4=c+u_OJdmpXdf|=O_L;iB&zbx2^kcRQ;Df^Z$kT z`y2jozutcHPxJqF1&`VDA5Q;onEpRIBe_z4>iMg$!y}H%pS0JD`oH-jICt&*djG{A zdyZde|CfLHee;#-muLD>O#kJZ7TA8ZXVI1azwqCF-G9!1K^6Je|B7GiK}lowssGd8 z{1@1=b^rh9>++FU8?x<d>W}|>YxisYzrX31>r20{pZ|a1Cs6GUPKRw3rl5#9`iK4h z`#&}M|APO||MfrldH=8fvg?=sv;SH@`IE!n|C=l>b$$Kc`fvKB^p*BYZ|paEGr#if z{uyuOHRJTZ#83GZzv{R6o?n)AkKDO_|Bw5b{(8N_2l@XnSRed<{@?%k|845z|NmoI za`*rI{runlNB8c(eP90TzenHq+yD1?_ka8MU(4Ue@82Dte&>JeBl~H8k4x1TuK91O z^6$yk`tZ2_$`iKy%U`_n|0m7);=e!r{e6A^`mdiRT>t;Xa@)WE|NhD3YW#PDRD|rW zt!n0N`FHlu=2!8a|84&+ZrT6kO8v`U<=;Qn|9kiO-}>jr|1R$NH~F6auKL<jr+5Ep z{aiXxJ^!!#sjtO*r=6<5HShfU`2s)tYtP?Lf6o4+{>lF5e-Hk57WgIK^o!g2NBxKT zl|QV1{NMIdo%_oEDR$A1FHij3z2V=YXMdJH`IYncDBs`pOP|XxfBaeWbMpEBQP%&T z&)WaBvTxbT|B0vnZ~AyX#NMHA{*<%(P5<}&*}w5;J+xyg`gN}R_5W)p{m=S$`G5ZV zfA#-<#yx-X^V8ao$M*hA-)VRC`#;tBKfmU`ihqCW|DL?RrypN`Isewz_Xq7)|GWBf zf6c#myZ;|+|GfNOZ?oL*|IN?;<Gy$Q-#hi+_lf_#{(>VM)MAA;U4K9Q|M-9YyZ^VJ z|F^#O-{R-yPv?vFcK=O(8!taEz5UznRsSpJ{?+Y^-!$L$4Jcdu3s0zbe-<zLKl187 z{-^p`|Fs|0i&yGx`M>nXe4YPazuCL|69;vI{P(?|@hAS%f5i-;R~P=@`u$Jfiq8M= zM0>xh`}cjv)tIQLe}9($!~YZZ|Lj>7@`qi}7ci;)!~SQ#?my;#^?85!|Jm2svHk-W zrmx>0_^<v|^~e7Y|3Hng?OppPfZ7Ic_6YsipKAjW0<~xDS^vr3`uivR$nhEH>%D*d z=dt)d<(2!4^Yzl-|2KllRhK{VO&$M*|ASg6@=YK9fBdibr=FwfQKj(Bx{J5I&izxn z@BfcaKQc24e@_3s*!$aK_xj40zdinc4EnQY^`GeD_5Y%-@1I#;{9^x^KTm(1|KD?= ze&=`oXREjVlh^(K{NC67<re?1_iZ=Zzv0`@<0*f(_g&YnKR(<4_@meRr`KIRwg3B{ z>z~fA{`bG&@A1#et?IM>R&J~LaH}+Q_4596zaPE&Y+m)Z_Ul)@ALpa~Nd4IVc@EEi z@k;y9J(-Dr@?X_<KQYig|MO@5+b5}?^$+|{KX({X@$mnvU;GywN{h}v`2W71`TzY_ ze<c6Z@BYCL%Ht3IH~)Uy@_+iL{ic8ISO4}``&Hid*WUE+>8sb{k4=6r9+~j}`WN}H z8}1){U;Niw_SgP(cm5l{IW772|ICT@)Bmj(`<MBr{_L-tCjX!BTEFbO^vju2f9LM1 zzvtHdzB2A({oMK~_y7O>(;xVEfA6Pzd;f12|Nrs-_iz8-e*Q1}x_-`|$e-yu?;ZWO z`P+K_^P8Q2$6o!v=iEQB<N7zx%YB<awO;JM_J;k+pVxQ&Uz7E}{ge3C|DqrFciV{H z`XBVie@gv_!vU#xwv_&ze)Dy`$M5!kzuLaWN9;fQO#Y8Oi{q_7Jp2FjTmFuBmOfp* zvSwY}{zF#(JpL74{58K9oV(7g{qOetzvBh--}X!IpAXYtXkLF&=*NEnmbWYaD`x!s z!T<Gt?nn7opo)CufBuF4JO2y+zaR2%f6D*%1#AEQy}#?<iB~l_miy;^W?msb^|AGu zkJ7LI_MbdvpYqrGTmJWp^<UrH&;GZ1cm3Z#{8PbQ2T<eH{K#q$rT@(SNB#5X)gR~o z`hVrWymkGR|L-eoL78Rt6!usDryrddw&uV7m;F=hy#Hz*{Wmr7|C#LnM|1vre5_jd zf6<lyL3j5*xO)Dhuzk>t|KCs9N7u79{{I1ovw!`6^S}Q0^N+uOd{<X^`|tms+718j zXZ^YR@862=;`{&q{pnuxfB)X=_O<_i-TiCz_}_b>{~O=fU;ELW{CB<LNA>l8cYpdN z-?-#!z4Y0?)BS($xiS6y{r&%H*G_NW^H2T!#;^ase}A6g{L}mvc%;WN;`+nSOTOkm zn;-h$>(~32@~VH9F8}9!egE$M|DVg}f3LT-e<z>%W&W4Ci+^7S$K89XKWBZnP37zV z0qf?!-Wu}n^0%70|1Br#-&Fszvj%roZQt|%lW)54U*Jmo4N!1-AH9F@|Ms)?kqiDU z{c=-ke&3w<mapQb&-GQWr@z)Odr_}z``<!#{`wj6)&H*F`e}dt&)W0FCcgjqqyJ6s ztzY(wvFOi|oPTS7ra$@Ld-nh91^@dtFaEc7#e17w|MI8)3I9C*Uw!rW|DVr)w^Bbp zJ-^rd-C6t7Usvw?uK)AQ`ugDiRoDML#~8zV`uYE-pZ)J2`|tn%*s}E3`Fa1p?}`Tx z;r0Ise+7<kP>U7XbiJ?tU;cl6G5QFaefIxfA8f3*+z<VG{`H&u!atM#zDfKa`7{0F zex~2nM*mm+IKS#!y+(cD?|8xgyH6A^{HuTTf6CAG+y5(m+P~tz|KIvgwa1_QpY)&K zadJTWzw7tDw=YQhxu5HI;i`XM_u^_y9RFRNU)S*8{olv`iX62Yn(7)CynJl`0F>T8 z{4ai8|Kb0~&zhjl?!o`@_3Z!bSLz@9-wqn5`L{pxPwSuh5C2o2Pkrz|_c5e>X8+^A z=7;|m-aX&1WOuCQU-YH_=?8u;53xT~^Y8YK|NNkGRpHTp0T<9H8>odM(DJ|kKmWu3 z&H^ImXP@}ieQn+QC+|Q1JwE-ozjOEL{deSJH_6-oI_-Vm{a63=N6%xQ-naVq`TDMZ zXaCH0{-63x|9btu^p=08_tqQ4ul@Qz<EQ=ib^rGs{<*(w&(@!<ThH68J>FlsC+?^9 zy&5aA`2Tyq%ntjv_xb*5^>JVSx4*WZXMgo)@ayxNpEh4#w>rwUw&b38`277BU%y|y zzWiYQwMW+v{Ga<g<;VULzgIr;<$hcr{61QxJ+kuL`TA^i{n_=5|Llw9*uWJ}{fGb3 zZ^7e#;<ar5>;Fst_#gKC{Dc3ukJdv9U->)v>VNi6`M>t%|H!-bMi=)RzxluNW&FB* z|BU9<>_5Tud;hZkE873+)y;n$|LVg3(x?CCC&r)4_<z3V&(1IPTR-?e{-1sA{IZ|+ z*K1Ap-uF0v<;D9ee?OZ=)tvv__5bys#ee?2e_r47>VNK(@9+NZ-}|Hg|NiY%8FpIq zr&+#D>+!O+ulJvc`|o_q{>ydqHUAI&$~F7{;J+frrDy3sp4Oka`CsZ*#69n)#b1Ak zUi;|&slWT$|C~Rd+*O?S*WBtqf78C3|26;CZL8wk`?Gu6f&c9a8UBCy9Zw&xU-3V` z`+vay`n<pXf9pB^`u~~#<NvZx|5bn6v*f;g|Nq)o_ps;5r+>bkBk%Bch0OiL-un^n z>wV1rDZakHv3_^|zt#2sZ+?lt`}g(p`W1gbwL7RSvtKce_n-Wqdc*$*|6AMN@BR-O z2>5^F=i-0$$6v4f@BjDy5}Sbk`*r%ZB>k;l_<!k_$XEWF-`4Z|PLKPopZ43m>pJ&e z@umN!zxv0zzOHZnkBNu=?GOKV^OrWqpX2{w@cxzm>Hq)Vw(q}xe7`+o=J)^4-#7pL zANKhDx9{$I_y73&{=EI9-~Zq4{rB?s_4n_tOMb7P{-Zzj|HfnSGOz1-JMAmq-k*B? zKZnZN|F<*V?XNlY{OG=#|Np+e&)#eE<g0yU-`fBC_uIQmpW1&BQV|~9#W!DlZM`vQ zB=S<d|9_2#`nF%=cm2Ct`)B_C-+TVQ{#p26WAXnb-@D(%&;RsEul`|8?30tx|J#fH z#;jlZY5un7pMR^n{7b(7`TI?9XZ3w0Xke%1U;Bc8hxq=<|B2W7$M<i4?!S{vU-g%s zzxJc#$seUP`&U@jYwom*uHWeVKl|m+<1c^I9Q||S^Zsk+{_lL2UpsGc=CAr2pZ4ec zF}}(_;jwz^=lrww%K!6o{>8KZEuSO%HQ%-N`NgmGtDo$j_5aKN+q?hIuitmwvT|Qd z_MXE0f066_zwWI+nO^sI_OI)^zuB*k{{QJm>96Hwf2%*7UsYfFOMm|V>F4Wf<m-R^ zl|R4oa{aeI`>+3fRG+`}f9;d~LEye3bg&iFbp2oV^Z$?kvw#2p_Va(=S9`yIYyNDG zd7tz@^7r+2(6q$5SM_n};31ZD{@>?M*?0dJy>Wly&+w!5VO#$@|Lnf?zw5_+*LmD; z>oxzWpRV8gmw)1a*T40z{!e~yt@eNVpL&j2EmmLlf7@rzVtV?2=#Bp1uj}92;%ZFX zyI=j8`H%gle$cRXv*;IY7GL@QjG*-1@PB^v|K|Vw^ZgsagQ@?2S%3KNS<Cs)9yCt# z;s4r4`cM8h|JS!(&+<QC8rnWP_}{<re|wqzf6<SI&pzLu^v|C8oc+>Yg3mtRKlZmC zRIaiJ{%==+3<(JTZ&&zJ|EHb<)JLqi=dvw+OIfXY{rva#`)ul@qGJ9%{r6(h-yav_ z<9^v)s^24G|6c3=wU6`nU;CQ>?7qw|edGF_|32F*e~EwhxA|w*+W+pS|L-jS`(F0k z|E-VLp4DGd`_EAF|Jui2Pu>6c?DEDRzuqsszva_=+y7htd|vh6KIZ?&KP%78kE)-i zE5D~K_UfybNHc?bx&Lhz+t2pzy^Z?e|E~A^Mf0O1{?D$uuVi`VRB_$EXzR+Gf4D#V zpZVDUQt>qZzn=jPrTs6AfBgS_|G@w4R`qQE@9X_z1{c2nAJkbt{J->1zVH9@ul`N$ z{5Lo8zrXMQqOV`4e|+-WRqV!p)4%SvZ^}RZj`<(d{%^hZ_y0V<i`;(Kr#(5p^#AJC zda3{Mo9oQZ{@?j-^~=9*Rm<G!m%p38{o<qQdEtNJpUXe}UT^<DIplx-;yvZ>|Gzz2 z|L6Z+sth{`Kb8Mu5F%-w8~Z=?+b{V`{}%4wm-tuwTK?vrpqY>fX7-2m|0kdOcm2Y# zPjOoFS6^Shq0fF&eax1B>5sv=tN8W)i$CiHzMTE%|ML6htKKip#&2QyXV2nT{i>cL z%I=@@-}>l3?Y}@3`K$lVFTkTk=2QRc-~6wbkzN0P`#SqgR`Sv3@}K`<c;)`|2VeG| zV^#l?H+|%f{NMNYcI}t=zrW8f`~T`)y#0UYr=YF_xGlr`F$)wi-9P#N-T(PB?hj}n z;Q#S+@?Za3$N7UYi`vu1U;k4Jmx#Xp&;3__>G_~~uZ{JoH|#&(syDoCAG9a##eR*i z`$N9#S9~r0bEIG7+yA{oW-2Sb<o~ZJ)60KyKYy*{fA5$5l-JLzbf^B`Vmtr7z2YbN z-}CmLKL_fp)}Q|k8rb<_&+=8g3=~{JAIm@d&;9H#wxV9McH6P#%Fo3U|GJ+2>3#C+ z&0pQJzv8{m+xs1VuKn!zy#HIv{+&0ifBjj;_wxV4)BdMEp1-oLLB?Klc766g$)EMf zpTV=7Z&uW6zq0OM_di<o|J6Us|KGp&_y3>Id(WNx{51M;Z}sQ%MYXHm|Mj-}{QCZt z{r9&1ue|$f`tkLb?YF+Z-&`N|clG7^pMUn({CoWS$L06`EBxmE+x-0h-gn~vtF`~W zSN=cs7dXNpgRS7E>-W?DkN>}ahbnUok^f%5t?&4w4;rkWUvuB^=l&=EoiC_dS@?hJ z_rHoOBLA&FR5xc;eeHW(jfs!{?#%|x8iI;AC;2rC;uSJ}{owymAN_~@&;L8W<p0$F zso{bQre43__}~AP_lN%v|AKlD`J(lT|K<PG->g*qQGdGv(mvz=SI_mwe#`Hl>pS`l z=l`Gf<-cUXKh3NC2J`=$z5CA$Dpxyx*s}<NhXm&TuxEMr|M7okP#^K=XSGd#7j1oQ z{quLt|Bp{UUcT_?lm2)2>2Hqr|NC_5`^0~bm;R^>|GB;I|DUbv>W%+DyHG##=jpHW z|4T0XU-Vx7OnCNR`>22C_r9)wU+{0eY<_NC;@i*tCx7J2t`Gm$XFk90==FO2zssi9 zzyG=Z>HP4&{~!M9f9_xU@5-;wIX@q4eZ4BoUw-cQqgS8jfBE(M)$7;~^SAym{ZRkh zQu3evr@B=Ymk<58e+6mv#OY`84gb&2X@^ui@_+uj{RR*9xz0cM|NeirfBUcgH2(3w z3^X(N;Qzt@?B8#5{?~t6pZ%*o?E8G5FYkGN*Ju5jzIy%s9`*bBn-2V2|I+?d;{NXY z&wov~`cfae^MCq{>BhJI8!OlA{f*ZpZjHg>U-i;Y_g4SU*Z=qU|NFO88Fte6|Db*0 zsU4ZGf9Y?&{(r(Z{=Z*&U+>>gH~TDTCZuW0PszHU^2Oiwx0y}*9`rM2Z(VCCNoxq? zU;V%R$o>kbA`kvA?*tw#+Q0Ho{mFm)j?uq=?=Ss3@#@bTMRnHC*#qpgj+aL~Hox{; zesXX9iC^V!?!Q}1`O<;-7xkL8(|!ea{nbAFZ|3!X-8cVDeDu}nzw65XOLx^DTs{A> zdfk!@|KCro-}aA->HkMKH2?bl=KufS&OiSC@x8ypt-t?&{!aM6|LTw3fBy!)*RT8k z`*Z)3fA!Vt>wo?Gy8CzOvA_3K|0Un7U-MD?_^){9NB(iY%b$L=XYzdg-)z=z{rR6N zH|pQtU;p=als<puU;lZ@um8V)fBs_Ir~ED8`Iq7i>kdEne0~3n{px>HzudoU@Abpm z|L^p5_2u&apTD<z|G%p4j{T_@_Amb~`h9)*o;|1IE#k#1KVAF3Fvk9R_R2rY-~Rmb zk8|Sx8{hxbmVrB~)u5>pmWBTnSM1*aYVuF-+TZ*?e|G&Qhrix0H=EkYTJGm~t)F!+ z-fP|YYw>R`{Ew>oS7>DyZ)pGR&-$&O>(~8^p8q^!)<5}efAppQ`+Q}7^277ypXkr$ zPyCmj{U0=Mp6>oPI`DpF$=~~0Ki5CA|NH;jyZ_JUzc2Nhr+;56|IY0CX|IE8-^YKN z8UKITzpv~5o_~F9zfIlTe=B4E%Yg=#=l(nW{QuL>^7oI=uls+z_|=#Bw*TLk?*DN= z`enWR&-GWpeML}<6}(Ph^8fwu|Lp($e@2zL2FPNXC-s4#!TKk^`%eB>{V(67wvg}d z`n~V@9nXHM7yb4)<nQb1ejJU7{_o%KfoBaLgNC&eSpPCPUOrxb0F>Sz{C|G!|AYUJ zp9g~qhvxtL|MC5)4~lR4&kq`>`BT682lvna5B{G%r+x7M?PHMkS^bCq!4Li~ynDXh zwWjCipY2QjpKti=zp}37=b!C`|K&mDs^gLWiXA_|lNLw*D{_G51`hpiSJ0SeKJl&i z+SvOi??3<DuirnvO>BDoPWxRc_H|#TPv6)7MPC2t`Q4}Xm;QOazVz?xpXTlVPM?Wi z_y5m%j=$5Z|0nE=dj0?6r}}rX|Et?S*T1dE{>+^{zuxCq{p*UopUU_AEYaEbull9= z+CSCj>vjL{dG(+Fdc95ks?W=>%}+ngzCJd5Yt^q8d-T`Y)i1t&KRo_@)BiO`*EjyR zK7aB<{lxFVM`w#2`@ihob`QSIpXSW}f6Xt>>_5|=`e!ygkc#KQfAd@5X-oZIJpcax zGym{^?Ya2}|8MX94_QKCzvI5&k9y7j(U<>k-t|9aQGNQ2|G}5{$JG8!wfR{$k@Z`> z@Bcvl-?4w}uJ6CH@c-*mf9((Nn{)Bse9521FaKvfoPX^9^)>T-Ki9AOomI7e;=Gj? z@2~v*Ja@~FdCx`vU;pX;^Y8uh|0S;ezpe59?(h2QkMjTP^QkiI<noi<o+tE}Z}j#0 znS1}WZ>fK=K0o4r>(|>k|3EV#OU|DEaQgp@&HqieY}_;b)bm$gwb$TUl@k2xZ_Zbt zs?XxOjsN)_FU<QT-!!fNf589yV*eNZ`+w)x{9peCe$D@3|M9=?)BoPz>N#%Ry8nOe z>;5(8j!*l1+tR+_SD@v-!&3V<-upiz=a2KX{mK8!<o|~M|F`+&{$0PXpZ^~KYD<Ir z3H8o<q(C#SN&lMvm)GqR{|_1n_`mV9```b4*FiH|`#mcc{Hu?Y$vpb&ztey3mz%H5 z4|)?X`R)9kZ}Dfo^^2?*|E2HsSO4l??zq1)_8*m7|JJYnv-xYdz>og_Ft~r^|MUO; zZ?Biz-(O$Pbm`sy^Y__*|6hCT{@eHcRrMc#-=ANv^8Nqq>c5x2ufKnHz45#MdLQLa z|4Z)OZ*lFvlu-SrTl=-w{}=R#`oI0+o%)|s&Ue@T{P*|u{p(egCtlZol8OFbUtiy6 zHl=<sWd5bORMyTv>VFz&HQ|!~^Zo@Mim!ULzvS=k-#_f@zgPah{`v90K)3&%@5S%# zw|n|D_TQnOyG~5r{*V9Zubpw;PwjKhKmYFE@#pxy=kGUzJFE9U{{s!|{N;E2+ba9V z{>T21KeB)7Z~vLh`YPUQ{@RZ(PyBR^s1Gdu7gSWc?O#&+zw4Ji_h0__v+L)^=k;sn z{x3dz|Cf#X<uCs?JgvX^BYl;;!g2po&+gBvcl&q$#vky!x%I32UBAvPe*Hh}WWDMC zm;bky|F{2Nv%dIK&ChEUkMI5295eq__5Vrd|NJuly1x8vecbkcPd~o?;{W#7_XqPs z|G)YYZ}(q+{{J6#|GxaTpBKFR|C^un>wh2pf6wdx?-TV)|A7`bfLpAPQP=-}KmGss z-~2mO<{GB`ulg;o^uHT4Sg(G++~=SE&;J4@oTV@7-`3W1WKH|OdV~D(SMm3&aWy9P z?En4@G;1jTU%u%AyY>rlj#+m9nE%}u`_Bkk8N>cx-hMt4c(VKd*YXGdC;t-qQ(pn@ zcSRqKKk=Xae|%XS=fC@Aa-dEHs67i({kHC(_M_x8&-bhTt!JB4@AXyr%=7)dzyCXc zN>k8MEYK<e(0mrZBWP|w0MtkPxTiB`f5zKie*f(5*Vk13G1;=?&*{GxReyh6ynoM^ z+9m%hH0$n#{#*OlzJBfN`)BrBeu+=}SM>LJz1xfZcYd>fz8dwvf7<`z_rLC2&-tHy zJbHF~#P2`JM*pIZzn;4P@!93cAHUxB-k<sOe)YfXpU*@8*YEiE_-F83`>p?MqU|c) z?pk&AvitMe!mmH2_x{`Wt4jP&x^5lspZk@5ZU4LX%-6cN#o(X$*L|)<Gp0WO^Jjb6 zr%gY_AN)6do(QRU*#Gap_zyJHSAQ}6!~gI58~^8*{^R+#KlTrF3B|#`WrzNI|GYoz z-~6k8)rJ3BAO1Ig*1xB(Uh6+T`Mq0b!~g7G{Z%*KKl;A&-%`H6@!{|OOMZLW^X>nc z6Z5_Qhjafo`L{pqZ_cd$#dpIm|L*<b)BDfwu6_REqu*`T|JZ-d{?z;bb^ng9_;=r} z^8LO4x4ZxU_+L$(VW(5}KN43M<=xu#@AR9m_DlXc*Vi8YrN8EW+Go&Ah(c~%Tl~M{ zbN;Sh*!y&Eh+X*l_(WM8t5W7)dY`^}`i0s1GdMxhm*1}Z7uZq*8V}e8n$miH?f;ek z?H9lcNb<G*$8Y-YeBs)^fBCWXDW!JX=G;H`lkrObsgJVPe)N9*cRb~>{HA}hzqkK> zvH#ci`M&?J-rZmKul*Fb>i~)o=|@*Vl=x@)Kl?v_-uuHJG!W1~*Z$T2@;&oFnZ@@M z^Vk2UA9-kB`!D`0-fRBSe^ZkFpW0CWZ0rA|ZS_kk_FkwDd{w{lUHpev&wq5vYrgqk z{dE4?{Y?kzLBm*J{NML){kQ-7|9<{a`{%dtgtGtj|Lku3&o}*-S6_eSclZ7O|NbcN z{D1%6>-qcY|Gul6Tll}c^MAxQ`RqSOH~zam;m73b|6(iu_B&kqwZHe-zthWW;@+J8 z{yzTyzH6tQ<Ni;6e&g5w-@l8uEc_$=7CiqVv*z`O%1gh@Kc8P!ulo1<mwustmxBK< zeSQD#@&7+}pZ~pop8WTIqhJ12`(OO~s;U2ebcyTe64%isuA@s_N0+#cE^!@Q;ySv- zb##gA=n_}ZP}cv^C9b1OTt}C<jxKQ>UE(^r#C3Fu>*x~K(Iu{<OI$~nxQ;Gy9bMu& zy2KT{5@d9V>*x~KL33Km=n~h_C9d;Fm$;5DaUEUa>N&c^b##gA=n~h_C9b1OTwx1b z`~QzFaUEUaI=aMlbcrkZJF7>RxQ;Gy9X-W$^c2_8Q(Q++aRu$)96iN#^c2_8Q(Q++ zaUDIyb@UY1(NkPUPjMYR#dY))*U?j4K|8e}c=Qz4(NkPUPjMYR#q~6~mj{iW;yQYY z>*y)2qo=rzp5i)siYxTUmeEsOM^AC3^v1Z+Q(Q++aYft|J9>&M=mad#d=@Dez>c2c zI(mvL?kkZ;PjMYR#dY))*U?j4M^AAbJ;jyZar6||(NkPUPjMYR#r4_zr@un(|DIm+ z?E3zd^?S4bf8O;~zdwF?eb)8;?4awxmjD0sv;OCw<KI6nzyJT^9IL<S=l@sV)&KWB z?ALwwf7)NcV?a;-!!ICsKmC9I|NT3ua%0@4Ki6;n7x)<ux^iuFiR<VR*U=@epdo?L zC9b1OTt}C<jxKQ>UE(^r#C3Fu>*x~K(Iu{<OI$~nxI&h<g2>S&uA@s_N0+#cE^!@Q z;=26b{~JFS|EoX#8gxJ5{UtU5|M%<kZAtoDzwrOkFOjeOHNUOr`JEp3TR-i$d)IaD zzv4^(O@H-|b^YiP*U=@eqf1;zm$;5DaRpCrJorDl#C3Fu>*x~K|BwGW|M)M!a`dy> zroW4}zPA4PyXODLrynn0c=SpCyZiJv$NT?%y7YbGzsE~|REGcD-uM5{)^+v9|DRo` zpZW9j*ZHGMTt}C<n*9wg|NrZ!ycYDda`ykDOI-KtIUR2iFJAfS+W&<y_Sdsl{#pL^ z=bwL^6aU}%{-?IAuHnD?zv_GPf9zQn{vTc9I=aO5{O(ixOaDAyU;20UPxJPFr_aQ% p`~T-W$KUDIqf1;zm$;5DaUEUaI=aM_R!dy@r~UuW{C2~i_W-iV$@2gJ diff --git a/client/resources/hardnested_tables/bitflip_0_27f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_27f_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b6c1eb54c9a47adde8f344c3c51fa06cddd1c782 GIT binary patch literal 1135 zcmZ>Y%CIzaj8qGboE5mHfWcF+{_p?)FaK!%ZRjYSBQWI&1BZqKg98KO8b$^oCx$MD z&Ierg84%#vOi7*@ii<g$OfD`KFgZD~fuY^x#EF!Hyb?Zw%X%dmm-+NCuvjj0b5`TX zIF!(9l5vFBC?$bG@vM=Nq=B=WFiYlQH-*f}$_$KrnG+|RY?3mVq3kPV$m}yyf`LP1 zsz9fazpqb^k-~)wnVl0m7hf@vO8Ml!N5p@>!{kd$)0nuKA~;qyMldWt`gaGbOatp9 z*0>uwTr~}~3^fldnXH&Lu&?9#%y>Y&LbYM<0yzVB1uMqJ(5eFoE(bPnALH7<!`K+Z z*l@r=LbTyPf)B@m?gs0IJqs+E_wYHEF)z?;c)@*>#Xzg?fPaZ-f}g|JgH}wTmdqR2 z11wqJGKD(`pJG48e}advp^q^kLPGR{I72D(ga|Q~2Qp0m80r;d50o(P;C{g#P;;QX zd5>&kf;)p4V`D<#ho-*@Pxvh)xc@XWpW`=>Pq4dC!C1=ji6KMfSL1Vb(SR3hEC=EO z{AciAV|?GVzJae{9ixH%6#g0V76$Sg_`mS~;@-pe!0!VO8yn+8=7w+v31Oz1gaXb3 z5}b_&1`-m&6XZ6?G#*fG*dW0#Aj9~o`3N7w8_xHP2edb6tzkdK!|sq^$=GmUHS>Mu zhLFDwaRG53#2G9YukdpSuh0+Sb7T*YU@GD`u=)X`4a1y91KGxk1N#{G9PJ<2OW0j7 z&|6T#+VFw#0N;nu4~<`%7uY=b&Uk}=fh@x-Hr9U!teAc@);Gl6kZ%z$5O**z(0dT{ zk?~DK0oM+u0|q=y2ZHzT=kPHWaj#Hgtx0$w_?6)aS8YN<xWWdR#soh{19gQBst5Gl z8QK;0Dm+^~A@~aOk0uMI{RT2k>lpqlkP`^L&f1s|A;$WE^)=&T_Jml*N9+s+2A0e# z3?%p(ELkj=&v2h%S6KCm@g94Eje?EB{0rg}_!{;!*f{JBuywF2h+Ck2iu*P54*5Ic z3E>SA5~5Go8R8@C9@sh5F0g5s>v%&vfsgTkO=+wp>pi}P8Di`V^$!a8zp+*`l(61o zzrnZQ3)6?D-;8CfH{=#rFnwlBkYQ$c!oH1ti7Z12>kWPeOZHoQ6O=a?Xuo5<BI|fU zuVI58LjmIfxrSPWD#kZVFW3uY5A1F{!Ji@bL2p4Rdw}28@CR&6FPK+Yusi7RH6+M7 zCKwp7*jjOQ*c_N4zKe~qF*HGkjX^>n!9c5rYhj}f8-syhLl|R%H)F#AH)f{QOdBMa znbxozSlQ5(AR*ew!?i(&X$IE?ZKkV%2@=8%E0q}&L=s$IGBZp)!sTheU%(|H@I;u= z;|Y_5h^<0`#w#{ZLSSqZzuyqNL78b$f)2-l#S9yGm@HTumiq9p1~VNvuz}-%foj8n z2yTZ20|OndtzoPU31O@W%FG}+ZN|oT1uPE)8#YL-W;k#lLPF@k3?6321UIHNY>W*F X20B~^5)ABr?4G1~sHNpnZ*l_wOTmyG literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_27f_states.bin.z b/client/resources/hardnested_tables/bitflip_0_27f_states.bin.z deleted file mode 100644 index f8686dba6fe9851da2a7484b5352f4521b575ab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23650 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 QgLg{ufBS#-Y_;T>00#Gm#Q*>R diff --git a/client/resources/hardnested_tables/bitflip_0_294_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_294_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b01f02208ef4ca4c78fc6566fd6e0c556e11ab30 GIT binary patch literal 5424 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_294_states.bin.z b/client/resources/hardnested_tables/bitflip_0_294_states.bin.z deleted file mode 100644 index c8a8cf4a0..000000000 --- a/client/resources/hardnested_tables/bitflip_0_294_states.bin.z +++ /dev/null @@ -1 +0,0 @@ -xOu3io%VkLSMd9E bJ!HHK{| us~~ןO?y}\כ7t{G{s6~W.כ{vw?~>߻oϿ^珟ϝ8_uܿ?}/~]?|כ>'{߿>kO1W}|p?~==|kymo7ogߏߎ_??6ÿ?_;~o\??G??y/^yXopaߧ{tWMkQ|Xկ|G7___5~9_/ߟkϷ;/? /7?j?4[<ֽ{okOkoG7}g?W˿?o<?cϏv?:v|j?}OG_FwƯ??j񏎿vƯikۿz=}]?3n_}4^]V?O_V_/dU{uSƯn[wo]}߻u?????_?yyOkC1xwouw Ͽ7:coooo_uھ//ko;?7QW^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>} \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_0_2a1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2a1_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..15195d21385b0eede73fd2ebfdf61354647a4812 GIT binary patch literal 12468 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 YuI!ateOk5upWc(Mf`y9w())e@06MU46aWAK literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2a1_states.bin.z b/client/resources/hardnested_tables/bitflip_0_2a1_states.bin.z deleted file mode 100644 index a4cc5d58c54c0b63b9a7a73ca28792535b688a30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77058 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 diff --git a/client/resources/hardnested_tables/bitflip_0_2a3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2a3_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..18a6d49871207a91671b9bbecd09e0a98f45fb6b GIT binary patch literal 2268 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 KMZg45YX$&eRqjmy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2a3_states.bin.z b/client/resources/hardnested_tables/bitflip_0_2a3_states.bin.z deleted file mode 100644 index f7bb63eb7878e931d723a7a353d2af818d2cc96b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44320 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 diff --git a/client/resources/hardnested_tables/bitflip_0_2a9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2a9_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8 GIT binary patch literal 4981 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2a9_states.bin.z b/client/resources/hardnested_tables/bitflip_0_2a9_states.bin.z deleted file mode 100644 index 4e5b2ff279cebc2f552d994ff58cf344c8e4323f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46813 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 N$q63+<$0{LxB<9)=N13} diff --git a/client/resources/hardnested_tables/bitflip_0_2ab_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2ab_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b6c1eb54c9a47adde8f344c3c51fa06cddd1c782 GIT binary patch literal 1135 zcmZ>Y%CIzaj8qGboE5mHfWcF+{_p?)FaK!%ZRjYSBQWI&1BZqKg98KO8b$^oCx$MD z&Ierg84%#vOi7*@ii<g$OfD`KFgZD~fuY^x#EF!Hyb?Zw%X%dmm-+NCuvjj0b5`TX zIF!(9l5vFBC?$bG@vM=Nq=B=WFiYlQH-*f}$_$KrnG+|RY?3mVq3kPV$m}yyf`LP1 zsz9fazpqb^k-~)wnVl0m7hf@vO8Ml!N5p@>!{kd$)0nuKA~;qyMldWt`gaGbOatp9 z*0>uwTr~}~3^fldnXH&Lu&?9#%y>Y&LbYM<0yzVB1uMqJ(5eFoE(bPnALH7<!`K+Z z*l@r=LbTyPf)B@m?gs0IJqs+E_wYHEF)z?;c)@*>#Xzg?fPaZ-f}g|JgH}wTmdqR2 z11wqJGKD(`pJG48e}advp^q^kLPGR{I72D(ga|Q~2Qp0m80r;d50o(P;C{g#P;;QX zd5>&kf;)p4V`D<#ho-*@Pxvh)xc@XWpW`=>Pq4dC!C1=ji6KMfSL1Vb(SR3hEC=EO z{AciAV|?GVzJae{9ixH%6#g0V76$Sg_`mS~;@-pe!0!VO8yn+8=7w+v31Oz1gaXb3 z5}b_&1`-m&6XZ6?G#*fG*dW0#Aj9~o`3N7w8_xHP2edb6tzkdK!|sq^$=GmUHS>Mu zhLFDwaRG53#2G9YukdpSuh0+Sb7T*YU@GD`u=)X`4a1y91KGxk1N#{G9PJ<2OW0j7 z&|6T#+VFw#0N;nu4~<`%7uY=b&Uk}=fh@x-Hr9U!teAc@);Gl6kZ%z$5O**z(0dT{ zk?~DK0oM+u0|q=y2ZHzT=kPHWaj#Hgtx0$w_?6)aS8YN<xWWdR#soh{19gQBst5Gl z8QK;0Dm+^~A@~aOk0uMI{RT2k>lpqlkP`^L&f1s|A;$WE^)=&T_Jml*N9+s+2A0e# z3?%p(ELkj=&v2h%S6KCm@g94Eje?EB{0rg}_!{;!*f{JBuywF2h+Ck2iu*P54*5Ic z3E>SA5~5Go8R8@C9@sh5F0g5s>v%&vfsgTkO=+wp>pi}P8Di`V^$!a8zp+*`l(61o zzrnZQ3)6?D-;8CfH{=#rFnwlBkYQ$c!oH1ti7Z12>kWPeOZHoQ6O=a?Xuo5<BI|fU zuVI58LjmIfxrSPWD#kZVFW3uY5A1F{!Ji@bL2p4Rdw}28@CR&6FPK+Yusi7RH6+M7 zCKwp7*jjOQ*c_N4zKe~qF*HGkjX^>n!9c5rYhj}f8-syhLl|R%H)F#AH)f{QOdBMa znbxozSlQ5(AR*ew!?i(&X$IE?ZKkV%2@=8%E0q}&L=s$IGBZp)!sTheU%(|H@I;u= z;|Y_5h^<0`#w#{ZLSSqZzuyqNL78b$f)2-l#S9yGm@HTumiq9p1~VNvuz}-%foj8n z2yTZ20|OndtzoPU31O@W%FG}+ZN|oT1uPE)8#YL-W;k#lLPF@k3?6321UIHNY>W*F X20B~^5)ABr?4G1~sHNpnZ*l_wOTmyG literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2ab_states.bin.z b/client/resources/hardnested_tables/bitflip_0_2ab_states.bin.z deleted file mode 100644 index f8686dba6fe9851da2a7484b5352f4521b575ab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23650 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 QgLg{ufBS#-Y_;T>00#Gm#Q*>R diff --git a/client/resources/hardnested_tables/bitflip_0_2c4_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2c4_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b01f02208ef4ca4c78fc6566fd6e0c556e11ab30 GIT binary patch literal 5424 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2c4_states.bin.z b/client/resources/hardnested_tables/bitflip_0_2c4_states.bin.z deleted file mode 100644 index c8a8cf4a0..000000000 --- a/client/resources/hardnested_tables/bitflip_0_2c4_states.bin.z +++ /dev/null @@ -1 +0,0 @@ -xOu3io%VkLSMd9E bJ!HHK{| us~~ןO?y}\כ7t{G{s6~W.כ{vw?~>߻oϿ^珟ϝ8_uܿ?}/~]?|כ>'{߿>kO1W}|p?~==|kymo7ogߏߎ_??6ÿ?_;~o\??G??y/^yXopaߧ{tWMkQ|Xկ|G7___5~9_/ߟkϷ;/? /7?j?4[<ֽ{okOkoG7}g?W˿?o<?cϏv?:v|j?}OG_FwƯ??j񏎿vƯikۿz=}]?3n_}4^]V?O_V_/dU{uSƯn[wo]}߻u?????_?yyOkC1xwouw Ͽ7:coooo_uھ//ko;?7QW^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>} \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_0_2f1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2f1_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..15195d21385b0eede73fd2ebfdf61354647a4812 GIT binary patch literal 12468 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 YuI!ateOk5upWc(Mf`y9w())e@06MU46aWAK literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2f1_states.bin.z b/client/resources/hardnested_tables/bitflip_0_2f1_states.bin.z deleted file mode 100644 index a4cc5d58c54c0b63b9a7a73ca28792535b688a30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77058 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 diff --git a/client/resources/hardnested_tables/bitflip_0_2f3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2f3_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..18a6d49871207a91671b9bbecd09e0a98f45fb6b GIT binary patch literal 2268 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 KMZg45YX$&eRqjmy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2f3_states.bin.z b/client/resources/hardnested_tables/bitflip_0_2f3_states.bin.z deleted file mode 100644 index f7bb63eb7878e931d723a7a353d2af818d2cc96b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44320 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 diff --git a/client/resources/hardnested_tables/bitflip_0_2f9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2f9_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8 GIT binary patch literal 4981 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2f9_states.bin.z b/client/resources/hardnested_tables/bitflip_0_2f9_states.bin.z deleted file mode 100644 index 4e5b2ff279cebc2f552d994ff58cf344c8e4323f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46813 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 N$q63+<$0{LxB<9)=N13} diff --git a/client/resources/hardnested_tables/bitflip_0_2fb_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_2fb_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b6c1eb54c9a47adde8f344c3c51fa06cddd1c782 GIT binary patch literal 1135 zcmZ>Y%CIzaj8qGboE5mHfWcF+{_p?)FaK!%ZRjYSBQWI&1BZqKg98KO8b$^oCx$MD z&Ierg84%#vOi7*@ii<g$OfD`KFgZD~fuY^x#EF!Hyb?Zw%X%dmm-+NCuvjj0b5`TX zIF!(9l5vFBC?$bG@vM=Nq=B=WFiYlQH-*f}$_$KrnG+|RY?3mVq3kPV$m}yyf`LP1 zsz9fazpqb^k-~)wnVl0m7hf@vO8Ml!N5p@>!{kd$)0nuKA~;qyMldWt`gaGbOatp9 z*0>uwTr~}~3^fldnXH&Lu&?9#%y>Y&LbYM<0yzVB1uMqJ(5eFoE(bPnALH7<!`K+Z z*l@r=LbTyPf)B@m?gs0IJqs+E_wYHEF)z?;c)@*>#Xzg?fPaZ-f}g|JgH}wTmdqR2 z11wqJGKD(`pJG48e}advp^q^kLPGR{I72D(ga|Q~2Qp0m80r;d50o(P;C{g#P;;QX zd5>&kf;)p4V`D<#ho-*@Pxvh)xc@XWpW`=>Pq4dC!C1=ji6KMfSL1Vb(SR3hEC=EO z{AciAV|?GVzJae{9ixH%6#g0V76$Sg_`mS~;@-pe!0!VO8yn+8=7w+v31Oz1gaXb3 z5}b_&1`-m&6XZ6?G#*fG*dW0#Aj9~o`3N7w8_xHP2edb6tzkdK!|sq^$=GmUHS>Mu zhLFDwaRG53#2G9YukdpSuh0+Sb7T*YU@GD`u=)X`4a1y91KGxk1N#{G9PJ<2OW0j7 z&|6T#+VFw#0N;nu4~<`%7uY=b&Uk}=fh@x-Hr9U!teAc@);Gl6kZ%z$5O**z(0dT{ zk?~DK0oM+u0|q=y2ZHzT=kPHWaj#Hgtx0$w_?6)aS8YN<xWWdR#soh{19gQBst5Gl z8QK;0Dm+^~A@~aOk0uMI{RT2k>lpqlkP`^L&f1s|A;$WE^)=&T_Jml*N9+s+2A0e# z3?%p(ELkj=&v2h%S6KCm@g94Eje?EB{0rg}_!{;!*f{JBuywF2h+Ck2iu*P54*5Ic z3E>SA5~5Go8R8@C9@sh5F0g5s>v%&vfsgTkO=+wp>pi}P8Di`V^$!a8zp+*`l(61o zzrnZQ3)6?D-;8CfH{=#rFnwlBkYQ$c!oH1ti7Z12>kWPeOZHoQ6O=a?Xuo5<BI|fU zuVI58LjmIfxrSPWD#kZVFW3uY5A1F{!Ji@bL2p4Rdw}28@CR&6FPK+Yusi7RH6+M7 zCKwp7*jjOQ*c_N4zKe~qF*HGkjX^>n!9c5rYhj}f8-syhLl|R%H)F#AH)f{QOdBMa znbxozSlQ5(AR*ew!?i(&X$IE?ZKkV%2@=8%E0q}&L=s$IGBZp)!sTheU%(|H@I;u= z;|Y_5h^<0`#w#{ZLSSqZzuyqNL78b$f)2-l#S9yGm@HTumiq9p1~VNvuz}-%foj8n z2yTZ20|OndtzoPU31O@W%FG}+ZN|oT1uPE)8#YL-W;k#lLPF@k3?6321UIHNY>W*F X20B~^5)ABr?4G1~sHNpnZ*l_wOTmyG literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_2fb_states.bin.z b/client/resources/hardnested_tables/bitflip_0_2fb_states.bin.z deleted file mode 100644 index f8686dba6fe9851da2a7484b5352f4521b575ab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23650 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 QgLg{ufBS#-Y_;T>00#Gm#Q*>R diff --git a/client/resources/hardnested_tables/bitflip_0_335_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_335_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..15195d21385b0eede73fd2ebfdf61354647a4812 GIT binary patch literal 12468 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 YuI!ateOk5upWc(Mf`y9w())e@06MU46aWAK literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_335_states.bin.z b/client/resources/hardnested_tables/bitflip_0_335_states.bin.z deleted file mode 100644 index a4cc5d58c54c0b63b9a7a73ca28792535b688a30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77058 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 diff --git a/client/resources/hardnested_tables/bitflip_0_337_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_337_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..18a6d49871207a91671b9bbecd09e0a98f45fb6b GIT binary patch literal 2268 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 KMZg45YX$&eRqjmy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_337_states.bin.z b/client/resources/hardnested_tables/bitflip_0_337_states.bin.z deleted file mode 100644 index f7bb63eb7878e931d723a7a353d2af818d2cc96b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44320 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 diff --git a/client/resources/hardnested_tables/bitflip_0_33d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_33d_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8 GIT binary patch literal 4981 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_33d_states.bin.z b/client/resources/hardnested_tables/bitflip_0_33d_states.bin.z deleted file mode 100644 index 4e5b2ff279cebc2f552d994ff58cf344c8e4323f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46813 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 N$q63+<$0{LxB<9)=N13} diff --git a/client/resources/hardnested_tables/bitflip_0_33f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_33f_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b6c1eb54c9a47adde8f344c3c51fa06cddd1c782 GIT binary patch literal 1135 zcmZ>Y%CIzaj8qGboE5mHfWcF+{_p?)FaK!%ZRjYSBQWI&1BZqKg98KO8b$^oCx$MD z&Ierg84%#vOi7*@ii<g$OfD`KFgZD~fuY^x#EF!Hyb?Zw%X%dmm-+NCuvjj0b5`TX zIF!(9l5vFBC?$bG@vM=Nq=B=WFiYlQH-*f}$_$KrnG+|RY?3mVq3kPV$m}yyf`LP1 zsz9fazpqb^k-~)wnVl0m7hf@vO8Ml!N5p@>!{kd$)0nuKA~;qyMldWt`gaGbOatp9 z*0>uwTr~}~3^fldnXH&Lu&?9#%y>Y&LbYM<0yzVB1uMqJ(5eFoE(bPnALH7<!`K+Z z*l@r=LbTyPf)B@m?gs0IJqs+E_wYHEF)z?;c)@*>#Xzg?fPaZ-f}g|JgH}wTmdqR2 z11wqJGKD(`pJG48e}advp^q^kLPGR{I72D(ga|Q~2Qp0m80r;d50o(P;C{g#P;;QX zd5>&kf;)p4V`D<#ho-*@Pxvh)xc@XWpW`=>Pq4dC!C1=ji6KMfSL1Vb(SR3hEC=EO z{AciAV|?GVzJae{9ixH%6#g0V76$Sg_`mS~;@-pe!0!VO8yn+8=7w+v31Oz1gaXb3 z5}b_&1`-m&6XZ6?G#*fG*dW0#Aj9~o`3N7w8_xHP2edb6tzkdK!|sq^$=GmUHS>Mu zhLFDwaRG53#2G9YukdpSuh0+Sb7T*YU@GD`u=)X`4a1y91KGxk1N#{G9PJ<2OW0j7 z&|6T#+VFw#0N;nu4~<`%7uY=b&Uk}=fh@x-Hr9U!teAc@);Gl6kZ%z$5O**z(0dT{ zk?~DK0oM+u0|q=y2ZHzT=kPHWaj#Hgtx0$w_?6)aS8YN<xWWdR#soh{19gQBst5Gl z8QK;0Dm+^~A@~aOk0uMI{RT2k>lpqlkP`^L&f1s|A;$WE^)=&T_Jml*N9+s+2A0e# z3?%p(ELkj=&v2h%S6KCm@g94Eje?EB{0rg}_!{;!*f{JBuywF2h+Ck2iu*P54*5Ic z3E>SA5~5Go8R8@C9@sh5F0g5s>v%&vfsgTkO=+wp>pi}P8Di`V^$!a8zp+*`l(61o zzrnZQ3)6?D-;8CfH{=#rFnwlBkYQ$c!oH1ti7Z12>kWPeOZHoQ6O=a?Xuo5<BI|fU zuVI58LjmIfxrSPWD#kZVFW3uY5A1F{!Ji@bL2p4Rdw}28@CR&6FPK+Yusi7RH6+M7 zCKwp7*jjOQ*c_N4zKe~qF*HGkjX^>n!9c5rYhj}f8-syhLl|R%H)F#AH)f{QOdBMa znbxozSlQ5(AR*ew!?i(&X$IE?ZKkV%2@=8%E0q}&L=s$IGBZp)!sTheU%(|H@I;u= z;|Y_5h^<0`#w#{ZLSSqZzuyqNL78b$f)2-l#S9yGm@HTumiq9p1~VNvuz}-%foj8n z2yTZ20|OndtzoPU31O@W%FG}+ZN|oT1uPE)8#YL-W;k#lLPF@k3?6321UIHNY>W*F X20B~^5)ABr?4G1~sHNpnZ*l_wOTmyG literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_33f_states.bin.z b/client/resources/hardnested_tables/bitflip_0_33f_states.bin.z deleted file mode 100644 index f8686dba6fe9851da2a7484b5352f4521b575ab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23650 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 QgLg{ufBS#-Y_;T>00#Gm#Q*>R diff --git a/client/resources/hardnested_tables/bitflip_0_350_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_350_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fe85775bfe7cdafa269bb9b1c2202af269e763c7 GIT binary patch literal 1680 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_350_states.bin.z b/client/resources/hardnested_tables/bitflip_0_350_states.bin.z deleted file mode 100644 index 479bacb03..000000000 --- a/client/resources/hardnested_tables/bitflip_0_350_states.bin.z +++ /dev/null @@ -1 +0,0 @@ -xMnFaWtщ|5o}4Lg ObOjzߟ1$_K߿rK->ɷޥ/~}K?kxzI,t_~[?~O}־}~;nnr|_O?鷷>ޯ_OCe9w}{}zǏa<㯿KŷwKIߧn;7I?鏗O/???O/O{??O_o/_?w_w_w?_?_?oO_w_Ow_?oO_w_OwO_o/_?w_w_w?_??O_o/_?w_w_w?_??_w?_??O_o/_?w_w_Ow_?oO_wO_o/_?w_w_w?_???oO_w_Ow_w?_??O_o/_?w_w__Ow_?oO_w?oO_w_Ow_w?_??O_o/_?w_w__Ow_?oO_wO_o/_?w_w_w?_??OO_ӿO??O??ӿ/?{g{gO??o??_'{???ӿ/???oO_w_Ow_??_oO????O/o?o??Oӿo????/?o?Oӿ/?O??w?_??O_o/_?w_w__o/_?w_w_w?_??O_o/_?w_w_w?_??OoO_w_Ow_?oO_w_Ow_?_oO????O/o?o??Oӿo????/?o?Oӿ/?O???_oO????O/o?o??Oӿo????/?o?Oӿ/?O?????_'{???ӿ/???OO_ӿO??O??ӿ/?{g{gO??o??_'{???ӿ/???OO_ӿO??O??ӿ/?{g{gO??oOw_?oO_w_Ow_?oO_w_O_w_Ow_?o???O/o?o??Oӿo????/?o?Oӿ/?O???_oO?_??O_o/_?w_w_w?_'{???ӿ/???OO_ӿO??O??ӿ/?{g{gO??o??????/?o?Oӿ/?O???_oO????O/o?o??Oӿow_w_w?_??O_o/_?_w_Ow_?oOw_w_w?_??O_o/_?_w_Ow_?oO_??O_o/_?w_w_w?w_?oO_w_O_w_w?_??O_o/_?w_w_Ow_?oO_??O_o/_?w_w_w?_w_w?_??O_o/_?w_w_Ow_?oO_??O_o/_?w_w_w?w_?oO_w_O_w_w?_??O_o/_?w_w_Ow_?oO_??O_o/_?w_w_w?w_?oO_w_O_w_Ow_?oO_??O_o/_?w_w_w?w_?oO_w_Ow_w?_??O_o/_?w_w_Ow_?oO_w_Ow_?oO_??O_o/_?w_w_w?__?oO_w_Ow_w?_??O_o/_?w_w_Ow_?oO_w_?oO_w_Ow_?oO_w_Ow[ \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_0_365_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_365_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..15195d21385b0eede73fd2ebfdf61354647a4812 GIT binary patch literal 12468 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 YuI!ateOk5upWc(Mf`y9w())e@06MU46aWAK literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_365_states.bin.z b/client/resources/hardnested_tables/bitflip_0_365_states.bin.z deleted file mode 100644 index a4cc5d58c54c0b63b9a7a73ca28792535b688a30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77058 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 diff --git a/client/resources/hardnested_tables/bitflip_0_367_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_367_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..18a6d49871207a91671b9bbecd09e0a98f45fb6b GIT binary patch literal 2268 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 KMZg45YX$&eRqjmy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_367_states.bin.z b/client/resources/hardnested_tables/bitflip_0_367_states.bin.z deleted file mode 100644 index f7bb63eb7878e931d723a7a353d2af818d2cc96b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44320 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 diff --git a/client/resources/hardnested_tables/bitflip_0_36d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_36d_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8 GIT binary patch literal 4981 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_36d_states.bin.z b/client/resources/hardnested_tables/bitflip_0_36d_states.bin.z deleted file mode 100644 index 4e5b2ff279cebc2f552d994ff58cf344c8e4323f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46813 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 N$q63+<$0{LxB<9)=N13} diff --git a/client/resources/hardnested_tables/bitflip_0_36f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_36f_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b6c1eb54c9a47adde8f344c3c51fa06cddd1c782 GIT binary patch literal 1135 zcmZ>Y%CIzaj8qGboE5mHfWcF+{_p?)FaK!%ZRjYSBQWI&1BZqKg98KO8b$^oCx$MD z&Ierg84%#vOi7*@ii<g$OfD`KFgZD~fuY^x#EF!Hyb?Zw%X%dmm-+NCuvjj0b5`TX zIF!(9l5vFBC?$bG@vM=Nq=B=WFiYlQH-*f}$_$KrnG+|RY?3mVq3kPV$m}yyf`LP1 zsz9fazpqb^k-~)wnVl0m7hf@vO8Ml!N5p@>!{kd$)0nuKA~;qyMldWt`gaGbOatp9 z*0>uwTr~}~3^fldnXH&Lu&?9#%y>Y&LbYM<0yzVB1uMqJ(5eFoE(bPnALH7<!`K+Z z*l@r=LbTyPf)B@m?gs0IJqs+E_wYHEF)z?;c)@*>#Xzg?fPaZ-f}g|JgH}wTmdqR2 z11wqJGKD(`pJG48e}advp^q^kLPGR{I72D(ga|Q~2Qp0m80r;d50o(P;C{g#P;;QX zd5>&kf;)p4V`D<#ho-*@Pxvh)xc@XWpW`=>Pq4dC!C1=ji6KMfSL1Vb(SR3hEC=EO z{AciAV|?GVzJae{9ixH%6#g0V76$Sg_`mS~;@-pe!0!VO8yn+8=7w+v31Oz1gaXb3 z5}b_&1`-m&6XZ6?G#*fG*dW0#Aj9~o`3N7w8_xHP2edb6tzkdK!|sq^$=GmUHS>Mu zhLFDwaRG53#2G9YukdpSuh0+Sb7T*YU@GD`u=)X`4a1y91KGxk1N#{G9PJ<2OW0j7 z&|6T#+VFw#0N;nu4~<`%7uY=b&Uk}=fh@x-Hr9U!teAc@);Gl6kZ%z$5O**z(0dT{ zk?~DK0oM+u0|q=y2ZHzT=kPHWaj#Hgtx0$w_?6)aS8YN<xWWdR#soh{19gQBst5Gl z8QK;0Dm+^~A@~aOk0uMI{RT2k>lpqlkP`^L&f1s|A;$WE^)=&T_Jml*N9+s+2A0e# z3?%p(ELkj=&v2h%S6KCm@g94Eje?EB{0rg}_!{;!*f{JBuywF2h+Ck2iu*P54*5Ic z3E>SA5~5Go8R8@C9@sh5F0g5s>v%&vfsgTkO=+wp>pi}P8Di`V^$!a8zp+*`l(61o zzrnZQ3)6?D-;8CfH{=#rFnwlBkYQ$c!oH1ti7Z12>kWPeOZHoQ6O=a?Xuo5<BI|fU zuVI58LjmIfxrSPWD#kZVFW3uY5A1F{!Ji@bL2p4Rdw}28@CR&6FPK+Yusi7RH6+M7 zCKwp7*jjOQ*c_N4zKe~qF*HGkjX^>n!9c5rYhj}f8-syhLl|R%H)F#AH)f{QOdBMa znbxozSlQ5(AR*ew!?i(&X$IE?ZKkV%2@=8%E0q}&L=s$IGBZp)!sTheU%(|H@I;u= z;|Y_5h^<0`#w#{ZLSSqZzuyqNL78b$f)2-l#S9yGm@HTumiq9p1~VNvuz}-%foj8n z2yTZ20|OndtzoPU31O@W%FG}+ZN|oT1uPE)8#YL-W;k#lLPF@k3?6321UIHNY>W*F X20B~^5)ABr?4G1~sHNpnZ*l_wOTmyG literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_36f_states.bin.z b/client/resources/hardnested_tables/bitflip_0_36f_states.bin.z deleted file mode 100644 index f8686dba6fe9851da2a7484b5352f4521b575ab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23650 zcmb=p_4aP!q}Mk6^B(HhdY{PqtM73(#ZJE5T(?t6anhyI<@aWNIkV9<Qh`IT;=upE z_5a@g=Q^_b*Z;b=``_E{yOh5F@A-S*V|JZ;UVq>2^V{O3+4FzeM%5jj_WS+UpX%q& zPph}T^)LH*#j(%pzv_qoKE3z#_Zk0{-`9V8egE$EDc2T+KYhRd>-*?y`!DU-c5K(9 z&+}{l-M{lM{{Pqi`~IH)|4-e%{zCXe_WIm^&*cAqzkdJqzyIBT_?NQ(c>n)H{Qv*` z|L^|)v;IF%`fY`}p8p5_=1X09|NH0P_wn`b_ka1jyng>R)`wqb-+%o3&qsUtW4}-4 z9)Gv{{QvV$ABTSZ^Zoet%>Db{zW@IDSF*o7+o$=QpFUUa(VG9idPns66^H(5%f7ky z=iI;D*B*ZV`)A%>nJxb}|6Bg^*V}LR-~AV#|9}7W#rFR!ZvQv`Qzy%`=G)KPKb$_D z&;0lNVcwbL@&B&>y8q+1{hj|;Z^u9XJ^#V4Z~u<(HGUWS|Muc993PL^)_ptwKX&8s zbN}Q`Sm(ts7~K5#`JS-Wp8r?g>oYRw{CgCi(Dt+3>|Zd$RO$NV$F47a{6DO^s&v!- zy?^|#Ry2P8E&q4zD!u;^Kh$skyq`F`@cF*=|Gt}^W>h$M{r$D>ExVuZ`ZfL253Ot7 z4-Wmve}Dh__4wRl^>^R?fAwSgx2m0wAOA0V{XXb@{hq(f3=B4U?3UGU)oZPno%{dg z+W*+u|0Vzav){Jw`>*f+Uw*1D-t#~IuZ#F|`-A^a|3CeI^Z(!L|1&T!9Ju_b{@4GB zJNbXrGaQ(3XZOGV+1Kq?^uG|VfBAp?|NZ~|_rLmop7q<c`!TEMNB#PH{kJ_s!lkdz zFZ?u2zy5#kYw>fPmZf&*dq3-6```Ng{<mK<|JF5IOXxTKf1Om%{;fai{rta&r4oK~ zF%*3K<@}%j=lZt4!oU8{`n~-B|Ek(w|2f~<|9*dqb^ZJ2@^$}8r~g_XvHjojkp6GW z<+OMITmA6+>jw*NJ<ost^?&H||5yH(#@5R}{r~Fi`p<v;3u@p0JNKVC>_&6)|3C4^ zD$?&Wr~U8zJ^#yp<LmM(|Fbi6)E}+i@%)dq@c)(d=lb^tKYo4jWBqE|t=Im`pZy=& zE1t3P|AqhdpMQV(&)%RJX8%0i`OkHM`6l1bOV#}Q`Qq3Ae}9kv*#GMz|N8&(X`qnm zKkazw|KZ>DNp(&C>VN-!`5y%P^(wynhrrlp@_+6B+W*~OUjOy~fj`v+Z|46$EusI{ z-XP=uO-2R=hM)C6>ra3K|MdU(qW=xw>lqrprmuSaI-gs*<jws5ufP4dY5!^4{jjY6 z@hi0b_CCK<YWM&5x0(6#Ur&|KoEx<EtM#k;V`uhX{1$J0+<0F7`#;Is{;&SK`}_Oi zuVqhtUM{l!HSLnrmsNlMZvR(%`d7Hr^=lE~HUBoB|3CY7{qBF89ru6R_O$-j`4yMy zr_Hnfd;cM4pumHFGWQ+--aqy0zW;CSm-X8}y_etj<F8HJ)bsys@5~kIT>LHmWdg{f zAbkFO{IB|7|EK<u|7)*y(|_rI_9yl~_HX>x|1bXUX=QGPXSeG2{rTh1(D38>Z+n9? z|IQz)=UPzo`2Ce1RV9D!XZf%9`?h`h|CLhu1$F-y*Z-e<@^}4`_3}6WmNGD?*KGd0 zUh!XchySdvx0}z~%isN<zvkcE|Ff6;zi;rHoq?euhA-%UeZ_zOGyX6B@BjPv*Z<f5 z*Z;SF^8e}or~lvQ{V!e%iX)n(=I#z;@c3JK!v7Ut|J}4-!?<ld1B3W_`!D||{Li{! zzwrP1o%O%|ufM+h|NIO8HveB2`{7sJzlYD`%UAyIDt%q=^);jZ)y7S)_e<67=i^&d z`|n%a|M=2>{(s}IfBhc#Z~eW0R`>t2T>t*={U7^;R$Gg2=l`enlz+2L_%?sXf6xE+ z#eXOMs%L2U5&oyW`rLlwkMn;$|MSDzbf28;|LwPev;Y3T_$U5qMdP$z{D1!&@Av;- z&oCqDYw<tRBlWx=J&XUZIrw~j|GNM0@7MSIUoHRt!>|8|-}o6AKJ1WD`D?%Dzxp%v z7yq~KpZ^a8|G#K*|L+fm_f!8}{D1lX<^R>+!~gT2+0TCb-_QL$A20o9ZvHl3mVtp` z!vE?2+yCqb!~d$^`78djGep!c+qLiCwhfLT#d+uF|5eWaoxAkg|JGfPu2k#AKL5Nw zfBw&JJL7&%yry|IYX9PY>1X~(=l<VXZ1ec%_jC4XzxUtTU;W=MJU{&06un)G^EKBx zu0M6Z{`LLsYwDL4=Ju8zeQy8z&;Ff%x4*WR{*s*^{crjI9<9IWFMnSCFFQ|wmGRyA zkFr<(uU+&1@0R_O{*`P0|M#%_{`tqDKmXi6d{=X#Mb`hReAB>Qo&WFupFd0gFaIBZ z^8dyE$&>zu{Hk~O*Zg1l_5T<DukN?m#E`J=@AK2=|FbZ3)bIVzeE7}(oIlGMw9Nnc z^{#h6{(tSaFRxPStAEa4^^xiMcl%%8?Pu=!@BZu8#JlnA3<ZbGt^Z3s+TZqLN#uUp zAAdey{QLjdtNTCqd;a>*ySbi$q2c&bg|GkHzyCk-r{&-O+xNl6?yvvO|Kk6}|NH;$ zoBj1){0s~XHoE_o|CgWnd%=Hp2A-39U;p1<_P6<0N8QKi|Net=!~Yfk{>LQb|2@0) z*UF{$LC$1Qi>>FID_>mp_x|p>hjV5GKmUBk;(yZL_=^9z>*wEmZ@#1XqtcK4$SJ$S zB5$<V9xb*<i|x^3d$iadEw)En+oP@R(bo28YkRb{J=)qH9V8hYB*8!AH#$f%I!H1) zNHRLMJvz2MI<`GJwmmwwJvz2MIwd(eB}uCZ_R-e%Xlr}4wLRL}9&K%pwzfxG+oP@R z(bo28YkRb{J=)qHT>v<`0C02x;OM&T(RJJUP5(y+Nk#`rMh8ho2T4W;Nk#`rMh8ho z2T4W;Nk#`rMh8ho2T4W;Nk#`rMh8ho2T4W;Nk#`rMmM*QZf+kvlVtQvlF>6sM$aS} zJ(FbgOp?)~q(+aDqT#`4qf?TjQ<9@olA}|Sqf?TjQ<9@olA}|Sqf?TjQ<9@olA}|S QgLg{ufBS#-Y_;T>00#Gm#Q*>R diff --git a/client/resources/hardnested_tables/bitflip_0_384_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_384_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b01f02208ef4ca4c78fc6566fd6e0c556e11ab30 GIT binary patch literal 5424 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_384_states.bin.z b/client/resources/hardnested_tables/bitflip_0_384_states.bin.z deleted file mode 100644 index c8a8cf4a0..000000000 --- a/client/resources/hardnested_tables/bitflip_0_384_states.bin.z +++ /dev/null @@ -1 +0,0 @@ -xOu3io%VkLSMd9E bJ!HHK{| us~~ןO?y}\כ7t{G{s6~W.כ{vw?~>߻oϿ^珟ϝ8_uܿ?}/~]?|כ>'{߿>kO1W}|p?~==|kymo7ogߏߎ_??6ÿ?_;~o\??G??y/^yXopaߧ{tWMkQ|Xկ|G7___5~9_/ߟkϷ;/? /7?j?4[<ֽ{okOkoG7}g?W˿?o<?cϏv?:v|j?}OG_FwƯ??j񏎿vƯikۿz=}]?3n_}4^]V?O_V_/dU{uSƯn[wo]}߻u?????_?yyOkC1xwouw Ͽ7:coooo_uھ//ko;?7QW^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>} \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_0_3b1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3b1_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..15195d21385b0eede73fd2ebfdf61354647a4812 GIT binary patch literal 12468 zcmZ>Y%CIzaj8qGbWL_w5$5=G$Z~MRWhBgMr1FjAXEG#W791I)`KE4gC4-D&S8AKHr zG!`{AXsuNBnzCRO1DAlK!vcl{oU9@uS`MKM3``9{p{@Y}O`$;n3jzW}f+mTGDz$1X zVBlo%TB5ROkx~Flvf4~$wKm6z%UBY7W~K1Vl4Nt6A=qY=Il(9+MN%rkP2%J-hm#8@ zq+~Wqs4ZDC%V$#Nq9mgkzWhE5g1lTj&6Y1=;AM8Gf8zCDWB;4bQeKb!B}V$6d2HI7 zc?=H!W#6>&pZlU$T{bIKzf96~EYy%vO%=K{S?P+2y}(bexQB<IO#LCx6}0~>e^Zz| zv#Myxlq~{ZR+)I6S{(2pG^ydsl2yM{YbNbTY-?+4lN6Jv>60jUk+>r9U7IYA!Qm%0 z{2KL&Zz^mgQev#6q~tGDSk(4u&6_g6qxSHth5r=WdF&px^H2ONv}@rNtDr1N&r7T3 zcwN|Vs`bK)OqZ8_ov9v4YdQG$vc{hjb6R7l?XgK~{X@-5b6uu>bJ-Za#rvk}q&W*? zG@iy!cal|!b9Gm0+2<M-DEgE~qqSn;6qP+Il2$&r;(AzR%8_*vQ`;6k(ra6^CsgyW z)5J?{OKfBXOM;e7F%4Q7$Im9!=K4gm;L_6ilK2N%Z40N&NSts<mzQ5_rRw1&OBYU2 zT(OonC~8%hL`IhD!i5vFq*^<p#H6}TY|&YAC2Zk}NU^qs3o|mJq{LiTtns>VWUbR- zUZ&Mb7p~|m^%YEs<S{rL82`!1^POOI`ypKso+YV{OME>pHLlc5RQY=}_}i3uE2<jB z10KF|{VCNMFJjBff1k&qo+G2~;|E**iS0*h`&X^MDD++Ppy+{qmheV>!Af4fwuOh4 zzG<xADIPTC@4}3_#1z(yD9;sZxjnL4_GdYJh~HZ9-DP2Gd}gSp-NB#jpWAO-_@{g+ z=#^Z+-^0!qzG&^^jA*Ul<y&}IXvfqmCR6tE*s(jeJM(l0eDQj!rkZ&8;BP+F3OkXR z;;Onz2Q`0Bnic&0ifnj@Jk#2MpORv(7rvR;GymXk{2@1GPPa4P!Y;2J8L_S<1~1iC z>T(Bc6>Z<Db;-wbVX5d7yY`UqDPi&^t{26fodZrJit~q9RG8Q$rh4r?>?~B{^ssHh zEA16)10za#c|2FF3H16W@NLN_xs#Ee3)|WkF+W)SXwtln@TC!pgF>g6v`xy=c2>M_ zHG_51EG^egUoWR$UQr$Uo~jFN<qfzR9wdIM>F0vrTb|VpHC|Gl3tu%>$qW3JRr%Dm zWc3|gk(xt4CR~!`v<W%Mv+~tCkqVWM!BY)ZE?M|V<!8vF<-4R>Ux^>l<z5kQ@N>df z?trhnJSHn6gVrieTC>z>jf#&}hURCLeF<AdJEJ<Aoi6N44E{Kk|Fy>vm&8DmWuaXg zovx~EV%F4E*tFs>uhwcF&!xg#n*>sQU6{32UD&izO=yd*sEIDO(?zw`iDIo&R`V!! znK+ANu!UUdRa~eYGOcxCmbTL+sn!cG7FuL@Tvhn)qO>b`6;IPftpj1LOCp2T@_J+~ zxGK8RZQ&#}iKz{1I*cYx%v$Trwy;^#U}<N><bZ>#q<FeRQ=(Q2W=sy@)i|=O)1)z} zr!|bnwV7+#!jv{%p;I%MwKAD5s)ejv;pQ<*Oqy3?O?PPZUj_M-Tw4r&wV(K#*#54) z`H|MV<Es|_JGA;>`zt&4Nh|)o*y`n<%-7D#Cu6Fr-+0AHPpYlGV@JV<f+rCv5h+^V zypF6fS#n~d_K~Qzg$oz1s9&(^%97s!5?O%@xDHKgYhBpZrgY(y#HtL@7X4SYy*!56 z&U~&PynZfxQ5i5xtbL-mP{CEv30G_;C0^Ji%g<#KdQ@VuXl7W*MKRYYcJ6<8`QO+b zcjmt&V^QPGWA72i=lsfZVO?UI^E+ABj401XvfP3NPa^qG{5f<YBT`%Iki?`*b6hJH zRju?{ttrnM6|h)~S5VgDDw}B1nkA`Gsw)G(hDa=Bz7YC5Lx0f}Db)p%VIs?27HtaE zZ=AxuEAT4kJJyPY{};X#7uvfpY{}GG=ZP5wn(+mHYIwXp1=Tt`zjS6=9TL{QNw2Nl z+1XjKOWxp=M5@OR(M0z}-tR;TG-@YSFP!j7Zi$`87E`ai9eWRVF*k%yRjgPU-W1*v z)gEwV!K=<L?SpR3hon|5_h9{ftkK6{YFO7Ysi~n;yrwOjVyJYAGgVn5%qx{U#Fv$a zF-pPIHDT$(tWehP{EsX>FT5xcEwM<630m#EaLQ_@LwZa7&vZYTdSU5_I*yIvXY3|C zRbP?lEttyJ?)<fV!i$<7rRiT6u4-!&jgoS0TlkS@#qveEp`xcG#iXR9#GDr{TsSes zXlay`YDu?qz!jS%F;-IT9y^_<n6!J8icWYG&Z~6c!WNxwXQ!*8i}cTg+PcJXM)GIP zVfn6gG-7p#PGC!@{e)E)rv4YPnA*<OpQ7!dv*c3qC#|ho!Yigu35@HEQhZU;J>k=$ z@KYhxN`E*by1xc37v*zZ5)pJ!{D4<o;v{`ht-pu6Cha%n_6q&k73DR5Cx5{w=K~YJ zEtxmP?v?gY*E)eqa)Pyrm*f;bDxTEZuc5yxbgH4-)C#RQF1xNxYgTI&x+%#t91vb2 z(fL%gil?>d)#?+@&lc_EpJF5*V*mNy|B6-r7Oi$xI;eEj%fvKfEsMcn9uq^ZD~mNv zbi6KX(sfPh<}~U2euDF#WB8NRs@_35Lb|+KfvG}a4!u04OeeIWx-ML}a8<O$TXEr% zD5njJKQ7qM<)-QMG)`#KWT8!~)|ePv@>RMr**QoeBO`I)6w`o*olz^rB&N1a%t#Xb z%70VU(6N2vDv7CWnr;)srmWSHSk2YE(35|vi#>z=+(7P+TAg)FtJd;_8m(9sAgQ#n zj%oEPF;Q2mNj9s5171X}40qL4JP`6EQgo^jv#6<Sspf>f;Dr~wpS8ahG~xPYks0N5 zG{UHLmD7>ctdd$s1xrF(EJch~iM4rb<yka&Ns#_8uT}A%x!iC3Wous){+s`mMcsz~ z5jCOC&YGsqN?$BWY<av6t#;Nl<>?mMq+?>Jy(nC(SLvnrM|pt@hpz@aoHEB^>XCIa zR&oOCL+ln!vU{RY>G3gqRq#YH*M)71wsHqXNr|mW>RCByo!5@QR!LcI9@pRe3%~Pk zJlwvbCNOHz-os9pq{N$7tk2kD%b$G3Qv8T5uhwdhTBqL&UrA(%2S$m>^0Ws=)bu-l zX`k?&|G+PKXMU~r-~6lERBI<~v8d!()%|4Zs<t-92ZvUBY~@>cVwaR^N{rXTE2hpu zn}QD5Pw8%x$VduX*cmC-8rH5D-WvSLj{U?h`GAKDpQ>DV_(NVZ*y)sy(PXD9!cJF= zCM#`7_~{j+RiYQPZc@o)u864}DPe(89s3@Bn`-I#bKwuygW_AlmduzsF>c|B9c>Gz znDVE@bbWJuC9AZzeMhWl_)gL0TiR2mweiSwomkU#B~0<cq1B({lrC)1S#n}6PuGR5 z4ktE>sa)~(c<5QN%Kx0m#7_N|-~(ExBt`a4%ybS}&8u`Is_Vj*_6biSvb4D(MfNCt znGmbx^t&xotYe?j;uQ-km8N-h)m-vfrG3+Rp?Aj~r9<2&x?On!{uL~}vSi*$^+zIm z1?xNNCr%31TD4KzSxd^{s#04>(3;h%_DRY=6?HmH7Omw}3w1iOhG{F;TApsF3q6xA zsWqf32dxQRYO3sF;*#O)p(c?yY1yJ_i?;GQMNPR9x>TwoA=t~1HAA)8B~o-%*O9fF zU50L6CZ0>Bv^Hd_@kq2yTIQM&DLOGybV^uTTWiM_ouv^r0n4WtYQI$GSkAUu(=X(x z%%lq!wOhkvot>2~DPCn;lEuxkEOb@lidli-EbCkgwL40Ag4T3hV&e&lVcP2Q%2iLI zdtsrr(~-5VDN$llT`x7(Kl8fe%Pr)7s!h|g(phOkCd+zH??t-Kfu=k%9l^gB{jUs3 z;!)bP&}WirinFIn)k?Xbd92|NmL$4~WH_rvs&=dnG7Qr=)a%ivbu=p2RZ?u>lo?a9 zx{gHhEb(UJ4NW*QOSIWhSJl@w;YIf;c_BHipekog%~gRb7IsECE3U{2Ik;qU&@6$E z;Z18+UsZ0Ir8w0zTr}Xxw221JLR&oxo!d3T7B)An*9?3WEGS{H_-aV_BDsa$CpFf4 zNqQ!nT9~rhmCb7d+ms{00SB9o*u4t%Pg(1#6SzWjlhf6V)>RXyc#FDRS~FpTM^adz zuE&<{fJ2hp9=(cFxC5h_q8bbxQ+<`DeDq56bZc0%)XjCm)u=B2EdP`>hT6PNSBwHz zWJFBu@^<Fs<>gg5v1w{z=)|~3Qd2%n)V#FH$f^H}YW%%WiPpp=j;kb+!lr5+^tz~( z(#_*AZE0vqsGF3Oq?qf%g-g9ITy$I5#@My$!j+K2JSL_*21g=NgSHqPSu;gy!I5bq zk(!fMc80D<Y?~O>7H~0eVMhEau8@BP{|tV4#UGnk(S0JL(#vLHspyI#(fX6xD+)vx ze(3(-+SbmrS};-jqV|d`DZ!<-irP2BCR$BwjcIe8Sg9H#YBZU(>8j{U=k|ar1_@93 zoAkA`Pf4}$I$velHPx!kwas<HsnCU4t}9Y>q}o;_T;;xEe<dYmY1~Ou&zk;Ua!c&o zn;!)Ibk?YzWXm=oY2A{Yp;sdeDpo$2`k+ECFqU25mH3zTOFH&fO7!EIKM3s?nf#<` zVwOafq~|KBHi=bP605Ij%oIrK(|EOJ%GC&iNYR$Hu32h4QqBQ8O!QlwtOTaEy3Evk z7$%ak`qsizGOkUFHPu%-ALZ|Kz7nYKv1xKh7&n_jb<mupwx_nVK3T>iHRZ}md(H6g zQ){^FM8y~BcLaUw4!9a&(mrX$(r>n0Yq~?GwLd6$6t*PB-myI}jxk>OH=mqhmi8BU zFaHC4i}ri$X{h8f3S1TJU?}+K!l|hx-7D(YCw$VHf2nO@+rn335+<FiHY7G3S+BTo zVwTXSwiT7mJl#qUwG~gS4SBF<$sE@w5(bqnFG8;-7$o(qeB`Z}vh*W=!K0Oxf$<A| zKGA+673`Iea4>5_7>|UV^Q~q4j1S^ME93;L7OwL4s15SdsM4r#JrZ}ZwwF6Fev*Ec z=ZlqLN(aTa3Z^Wrxtg%0^~;ol%|Yv*df80szslEXrz!GDYKh#E`OJ!|wuZ^y2r3Zm z*ig#L>zXBD8oFweglX8SgBQh`CnhdzzRGE<z<e_JpQ@#6mYm2`(M)j>6D=Jh))i}( zMsjU&%35guo@>_{#iU-18H%fvE?ihTk=@JxGmm11#}(BT5n54PNurB%G&7d25*Af< zT5)PqfQhqcYRD#~6jSGbBWo5eT$mCiws472h?{f36_ak4DAx&BjHHxKO-&41v!d78 zIjC*Im4y?oOm_Cv+9c_$IN?O9*CvUD3o{)jErWK*He3k{S*^H~SLv{)Nw>4hTA}iW z(8NW$yxdNQyf*1@Y}D2aHPYqf_R`v-qnQyA%C>;BDOe>kWU;d*vnXdKkJg4uQc_~B z9Sdt$24DE<TBuU+Qk^5JO>6P0RlCF%mIQ>h2SzPCG%?BRN^d~Yx``&v3uHrsS8Za} zQWuI0)#h8YrJHSGn`)-kDPOjQ%>fs-bSt(=igj#NIuX_8k<}h>Nx~qLGbL)#*03%K z)q*5F)r^#|6<HE(yh<-pqFTF_NwxD#*<xa$)2$d|k+p8sD=BB*(6&{FLlakRICN2* zo!!eqLPm^@^HN92>SlH?u_dKpQmd6tY~|@Zc*R00n0ZoP=+uPOp-H;V3k${Bn%0<x zteJ8&X5~^Dso-WWgM@=!Jv<T?GC>8Yq6Zto7M6;Zvhg}AE^OM#CmXsjYmL?}sWz!L z*A<0glCGs;yrIoYVkU>Kx?1SY#y91`)dHztwkZc6s=ipw60Eq$$LmTrud_>p!G$bs zwh2eQrcKP^G74Sks-LBzQ8%S}VVeY~E?>AbG*xs`uWKCttu`r1p)L9kd0jIyG7_~H zCM|2}^-A;(GId;eB2ioMiixRHWnh%Rj}=A>PKkxCatmGQ%aOEJBvEsvq-NI^Z>^I) zD@+}`be3G{RtTGvDCQg(<v7XL<wU}iFU(gatns>_EwpNrr@JCw=&9fk3BfDNMT<he zOjy5Qu?F+Qu%NkG2YIFzay^akykgQd^+<#%uU1%_SNK_Hp$!+VOcu%tOjTAjbvdZ4 z8tE-EW9q85MO#F!=twKAI<nSdD^H*<caXe__A}QdMp7<@+5wkz+NK1zHwPS6)$zLM zEtt4)#oEA#l~K-)3sWpz_AG2!%VT0Hx^Ts6p$!>PZEbB6lfo8uY;+C`bM{#8vYstq z)8hX#7Oa`9x#n)_i=9o%IW`CW8y|3HP<Wu!#N@=JrgnhogT(xO3z$L}SQ#A{L|p|# z8bTRZSv?q)8iYc*gfx^EIWPohurh`!wKA+?@>-x8>MFvp&{2VbV+vC%Cj$cmD~ppO zPoklTgtEYiLy0|VYRxQ3k`g|KEk`aS^f)VXwi(Qr#Ut2}l4#)T>EUt7m*vpxzy&r7 zg1jc23O>}>C^v!E{?)|ar|P?!yEbZm4P9zqlK8|%BC$>WgPo}VH(T+Lz(-4_uT;7s zF4VXvEKpa|NY~l<Bma`6pJePh;~U?4h5ugoW@`J!Rja~9rU}@pO1UPwIiJ+J;_zk3 zsy~zVb;cMRc6N5=>E^L(=dma;xMJ|rnXgSE@r!N0Mt$H1_~6kUq`{-l0sjLIx5*bA zZolxWGX^?%bZAwfw$fouap#3gg_l~XE_4=6X{foP{2}C$a_CZtm6Mu(9(oZQ8u0hX zO#Y(Dw_GR96^zk%8nwb?V$qZm4etl5PATnK*wqm}Nm9uBRGZg4UY8hyNi(J%7TR#d zruD*=@J_FSi$PWsuCzBV(pwaArHvu<!H2{ZDREv?4>PU*x9Gofh$+vK!@SNOTMR0L z7R6WvMHnrS>N>b+TBtUUK`J*JFSp~8NYROjE7o!=9hud2AycfiS#e^*i47@HVv9Cu zv$<x9Nn~n<xi))j6*cH~x?*sc*R}qti|2=lHSJrXLQuzzx|V-Lj2nG37212@i-~<j z;^Cjp&fn#ZFZ^Qgoxk~8`^TVa*ApwA2JPwUSDN0jr>)&N;Nip?k?=d+OTFqvBJ4f3 zI7W)8TnTfXV(JusEZ`LDw-vTeMGRKI300Y&Qn&DL;x`lf8DFOCYM)}?aN&zB*ZPvM z#<*kciiZPZU5lhd_VU>Fwez(}iaB2uJu<87aC`GlzD0ZFp3D^IigIn~{w<gif7feA z(bSrNtNaTmro{3$JAbgB@y(w3(&UL5i5C)8V~q3`?UE>&?5fl4u~D0Us@5f+B`0=u zeUhJe2sCUI;(ADrM~c@uNKbA>!H0xju1mFkNEl7Nr6-Zfr&=o7vc`%>(z7#a$<lg@ znxIPlmNlSJqotwYr{p!dFHNc9bxl}xO43;<OPg)sg;PhkgJx>Ft_o)A`g3L4BK;kc zSFCB9a5B~-&P#lP$oCb~_b}gC*lAFuu$RB!x6G1HZLQ%)B13AGzAc<$)fK07XtmN8 zt3`Xd;#6Mxc%^z&2HKn|3ce%d`ciyLq`1evg<lrF6kGU8N+Lt+)YMd-g_Cr7M7>p_ zT=p%P7c^^Pmx;I5rCGseylS61e_N8VqE}VeD>Y)Zi*Bgu0*Sy0x?To{MMK+yGC5l# zJWQ5NU=CS1F>9)t&?cR!MmlX%PE4C}Qgf+6+iH%a9>p$G#-%3S8cAIjy_HUE)K<F6 ztMsB|!W>f}1NI$SfhTr^CI(LBY1*XYI#uh!rM3WrsVm(UE>V-}I-%_#8Ilo^VqzpE zF_|l>>y%Gh+k`77Iwm@XVwxseo7`6VEJ|eUGUZ4(5+yO!q}xkM%Infh#-%2Wslp+y zOO-u*x}BB6THD_;{96&au>F}l`+FYy78|)oD}TwYYX2b`$75gkrc$f_QFq9a9|kW9 zE<8LO6!gui&Gm4=g^%KVa(pt~Jl#C4@thG;+osGEQ?2L@xME^r%Kt+&YRddnW?nB7 zhqWSGjC6TS48__4js^#W3G9Dk#|s%RdNcK_^M#K}DG@eHVwOB?S?jF$WHO)Y!Gljl z9~8Q2oLUpQ)Szw3fm;4Qy!=1qlNYwX<&&{J%wwMt$G7n3q?GsthXa1|sis6sJ|)vF zSnwpO{YBlxEJ?A2%^|B@W{L;(3r%0;+UzOM8ntRlhO>~nNT${$DV{|el6+X}j<hv3 zz7ef65nt+I;;mq`HYj+(f=gWA3>|)YSt->lSTACK;!AgDyufOwsdb4bwpfU)-|)p= zB)m)gi9ub8sb`qbh8m>@2M;#0EnLdKB9q5t(Y}C0?Mt3Ng?1>-Pl;E!V#OcIzeq>Y zYhRFl<5h){raeo!k9zG{v7Td#EZdZJFQ3jhtzPF-Z7cLvGW}Eb=nm~<=7?I$kQvI^ zwI#GGSVOZ_GE|aV)mLQ0qFD-Sz1V~{YNkY~vVP}(0U9hS(0WmDVpoUJx>bjyf<65f z?90+$6dvfkqK;!r_X~RyOV3wQnwerN3JU5TKC!TC(^UPhk<!Mi8ez)K%f8`CSC!Hg z)uOi6HXcc_g%>VdII)$NYmKC9DL0$5;!~%G2N%2&*C=XRQPdt7)vmN7ON^&m>B1Hx z-M~ntzfQ|nxjyQ;V!P;-;JeVJQK2hz0+%S(aq@E6eOfmqYp2sb1z(4)!Xf+@wT>!U z1x9jdUlm=-@7%GgeTv3s$9R$D3*DC5U1dGg?sP>*Go|~k()@*q!ABIouI}piIca7< z-K1%%{tulWR0e!n(!XQLSH*9tl`iX#@&<h9{_MO;F5r8>gH`)IgTDow*ebfBGGJav z_ydE4OLGDjv@4i;c~A7!v{@OxB2&!u!p9K1mURoiItTnY_=h$8hiH_fm?pQ<Vzy9i z7aoJdygZ@0UZ%n#mwGj)8oI5BbUEZdg=78`(fXy4N=d<iN*69I6$_cPp(P`6ikQdB zENy3JXO}e-b)B6<3_}v#zX$Bw)a&GWHBM7XwKFO-OiCijSLvc!TZqAh3x}OUKm$b) z9UHEMNpw4FE&a-Wk1N%&{opF8uERoZOI9VSP1RO9D)54pUq!WQ)#_gtrrL5%s#?LU zbwzBc(v{GNm7K2xetM-k1y6Br6m~qZ(Q7AXYpg5xQd4EG47Q1>fkz@l3kpg(YXkna z_%!X~laiWhB9XFks#c~m%bJA~Tu+8|6fH3dSr*#r6S^uSMpNYP0+-*Hmels&$f#Ph zf5(63_IL6(Y!^wG3JYA=%O@k(=9(1R9B3pZ=9&?aaAMuWSdlDo!Ft7a5(Zxs4+mNl zX-|x?D5&(BzQjIdQTP*~^_+3eSGuQaUD%MgVy)7ZFrIEDPz_`0yeMqN8kue$*FWt~ zY7f6Dc=*EhV$`C2Y_3y`^w|UB1v9GT*;f?l7kn`cjdcFh{jPn%VUJy1CpNsul66h| zV#|L^&iRQw^Cx>{eir*3f3BE{e)GEU@Igkvr@+pzRY&+mGupILtoT|FP6=zh63(}9 zimB)-Z`IJh96J)*cwIA0MHi-eZ75n9$2EW9n_B)8e-5{`PgHB?Kk#d*Pq$EFr;)D5 zOfhGnq_DR33zIuyHLtR(>{Oi+wrH!f(1xj<;x}q9Ef=br@W<(?(hsjIlLI5BzOWJx zG38ZU@Wb`U`j)unMd2rETo2f}tmSW6=M`aMVllNdV(N;u0S``v{%Y^oq|+^w6vpFq zV$*^P8^tE2sx8{p<*(}b)niGf>Ibhq0d9^>(+}x-q-q@w*eJGWlg`2iB|4^}tvaAF zq6M*n+;2=eGrDh0DO#ehuymoT-AXm5upcXuf?kQYL@e0Tv1LW7^FL1SB|%l5_AE<Z zx&B-D?^shL!<C-ZN^2QTX@ySJ<dNk5b;|#>Qxrq0M@m<uR<KA4*F~=_COX|3Ydl+K zF)r%SI<;nHm#O25i3@oIO{3O^dCd%p6kU;`+OcI}XN1;9p(ATF);dK=DIHlOwAI<^ zio{|~DVHm~0jZIi3m2}E^qMhsVp5oDQkc+&gcBRZTwBB1JC=On>H4#1tCwDniR+22 zqL*}e7L_=MURoPE)sW*!n`_3(6|T)fi!}|rcBmF=uUNODNJ49)wiYk1s@{aKDRUjY z+mxQfbe-6w9T+9%+O}wi#`-s1mwdWI1-~k;S~9&ODXcBP>uXS~V2aUX#f2wa?SFOu zx#%VurDe3x*JaWM=TMgFknol`4f&(4iP|AyA-$q0(}dP)Tv`*@vSw1~gcBK&8W%Q6 zOm=l!vBq`6rA1LvQc_Z$ol#OP8?~~uofqi~d|UWXWZr};OHI9uG*ZF>t{6#aWu&Sc zi40oLe3D0Q#k#JD(3B{>1@1u+o>Rm$E~z`MTis$97J6az0pVL>PHRkEtGq&AEqpO$ zkE-Y^XIEVwO<%=Tjg!_or21%VS*@&eO1>!6e@fVb8B>>Vt~$!iDygznNvBQKM@6dZ zYG9(6(iM}1OQM2I+E$1y+SIaTL8fC$gpj_HPN<g&Ya-{u6oX4E?L6%QBeJx4l}=;^ zPB^hubji|Y9tndaU+$1)9a(NaCe4}hp-cQSi+al{Q?H5tjx7J<7&S2>p%FAnq!qeQ zSxHRPG-_o~2J0$EgM$kvrbJ0et&$9D+Oj%y1rOuGRiIHKBZ<V0tPRRqSCe`j4BCWJ zMNULAT@8)oF}SF$xJn`<B~pCFO0D{gdXKu0>0bi&v_3Ie&l29UTqJ2-ligDpcZIe5 z8T(lx5*~VO6bp=7vCdg>mA29sGcETmrk<suODuWWLOv*7<PM4o_Db}=($43sxNzYm zxf6R<tQR<ukz%V59<*F>VdBCpsil!(f+;55&WcM+Ok7{dKS+rUTHoa>vakIwzn8r8 z!FQUq0jK0e-B)ByO|kU6VkMFINMC9CgimsTvCgYxmHvJBbLj9NKG!#OT3vrs=Cfbr zR%~+?%H(O2(n>LsTOl0CrtzpRbW+rs)k;U!sAg$vnwS{1O)N3eFA%&W(zDPrOS~hi z>y+F}z6p<XR=NfGhqO<Ud&wWDX*<<awN)xObb{PRahJFY7lThkBzA1%tpCXWXW^$s z`&{BW_8yvkB9h0%q`fQ9`%TrPHQlbd{0AOh2@@>%+a~K;$+WNir;N?SEcZ+6r>eea zJSy+CUVvX{;*?%hQ^rNwAE#z`y%JaaA;;db^6!Nci7TpH+uD}Q$Vi-+65iPCbYOZ% zlAK~&>%xMm6JBX6J&6;UtMsX@t-U2C;NgnI6>GW=`E-X&-|$1mX^+tU#Fq6FE^N`| zG14)b%wzDwR_XAGitZB?HcG!1PMQ|*XUUuuRUtML3&l^wCo5eEf6@JDQk7O{$EJxj znqp4tSENKuwHMfMSfhT%)F&ZzFN!?h1^P3GG+$KTxFWGl{#mDGsIJn5Ck9Djpk7>C zn?y#D>xvQ`gTog^_A0PX(*N&jrExS)RAJ$yxm=qT`i6Ba(>Nr>aZxj+<<Q!&fQZFG z-kQ8ZI+7w=HSDh}`Co8~J5X6rSLu|?CD)aKoj!{)g|*b0!W6=IR;;?Jbs~%FQp*)X zo;KH19!as*i77^Ht6Z`qdD<4HbO&tZX<N8bEMzrfXxGFQ87T{=7zSK1S#oeeXqKdN zz!g(o&9H?_dAd1_LJoVS`UEbO3J&cu0p+s^8!q`e9h?$2WuC&S4=LSjt`jqr)^fAx zbRAhWON^(RW7UZ*K_|92tyW@93QP>v<hpQF;fkkjz@^Z(fD0!!=_<8;SM>+=fF>U9 zv|_rD$?_^RrrTqeht}a0YaK5rUGzFCHQ{KC%2jp;E3G-J6^s^@s$3CGyb`uBBgNoK z*vc@KD@Ib1Jl%p>5{U~lx;eIVD^BHAJdw)F%d4o%9TFy`k+o=-ME8m{5>uC$@&;VE zqQ}eau_ffN;$f~RDVc7kL*aZ91y4-cBoaYLN@}V_!7J^B3r}n@)b0o^<&!9yYNXvJ zkr5^4>}e&_?(B5o#ngifTTBeaoF^8FJ9|xSTgmHm#ZpYQ;KGh9ZBW*B=CP6qDlzeT zk-~K(HfUYIg%ep)5>rnUJe-&~Wp%S+o3qo2LNO`Tf(wV8SHyDj7(5E+u@dL8YHMw4 zZSPcHVzg9jVVAFKqL?JFU`FDKENy3vq@~^g8#yDLU4^O_YIW_OW2e|A)pez<%~>>b zQP@<8&<gvhJSGNSC-%?C(q`k4TC`JaVoK0Pu_-gAc81A1yR3Cya5ORKgT__Ij{!-} zfj&~I2}dG>*0Kq0a9y$1=|qx`B)7<F%`m|vAEhIrOJ*uvF%@0P6O^j9urc@ozej6Q z*n(LaQd)rr+Cz(`Txn~v)I1t1TD4$(sB$R7k5!j~yS6B{#&}tn1idf_)$Z70A{nwq zLbO&ROPiNhC{-=cH!zahRX1en6eFEUS=vDoZ6cAHoz5azQ;tTu%nBA-uc1C^S=UBM z7gNy*N21zRO?mj>MB*y%z=)tD5eY}u21bZxwJn^OVj=XAH!#BBU}uEEsw-h_t`iP6 z2O7FfO<Cp|;VhcyzR|sFOY2JcKSx<pX8NXos$lJ5Y*c>6{&OCa1S316h=7oQprILq zctg>jT2=-IR;>on5Z0inj#{jYt^o@e7*$y{R!y2H;<bX4l|_}MG1Otwgk!?Oj!lL< zJ!%q%k}?e36eqSEmhkaq<2YhuFe90>bHPE0HaB6GD^o&_a$H>Oz`zjX<>b)eCQ_Bs zW@`Ut{>%DP7KwGo)_=+8mz+8O-H++Ns*2P*)^D2T-OA&$vg<TYZU0g`nP2{!Z!P}I zpSgZ(M`4)CH{Z}z$p@!|FLi!5-}B6wWXWmimuH?c=J{dVbLLldh5hWu$9qoCNtVC* zcz(O;%lPCEwTJ)nJgeh*e)+}Ra6WCGbt^4R&MfXT^ov=`%&W9tq26@i+OTPXKlNg| z>XeS(>Mu1c(c?2Pn(p*cq{c18M$)T&(n;q7hd#DEQ#C49%lK5--szXrJ?YTr&Qp_B z7luAQmN>oP*{c6b|My6wrez)Nt<aQtWIAP<)QPK+v#w-ErB3EG<~2Fm7HM*At?9BY zmw8Ove9mZ{jx<$U>>D|={pXbKr|ySu9p&+H3sws_G*k4K_Yct*Rf+}A7yU7qcYK+B zvE?71y7&41%c||{-9LnHy`s13qj<;1isT;4=|}tz76t$CtxKC?a^<kEj_?oFMe}#r zHYEIgB~thN$-nf6{ZGCu=VyO&eEE{<-oUqg>oQ)vI#iXuUFNaT)mIi<(rxO+-TRA9 zcXqqlFE#qN@ErftgkP!C<t2XGPrm);%eshjkzUW{Se(=8HOe?YHR<Sbe*WDHADo{x zUG&UlNxi+R*X#U@l;=76uGnOkMMk=A(#0kGPin&3j~wkezAF6SC-qhOQEPc64YM}O zMjeUR=#^>G@%v)SAMV9rVRKbKb3f(!&HBy##*EEZ_2bSTUi#qFK40-G-*xqrPp-Or zx%o(?RZ?d7CA;P7yH38Uo>f#UAN1AWOR|B{T3uZ=6X(DswazaxF0Nc_@+<J4Nd1&6 z%7K!}yq=Sy!rVGnre#HTiyWM?)}ZUktgI;~E_*JUm6*9GbJZD%tPMvqyS+nGGMDul zZ7MvdmnzovJ;e3&(nLd3ZJj8oEi-&1A~GTu3oco+Y<5_(smYqPK54y1H*<A-rb+qo zx*QJLIyutYTXUw-h0`vZ*0?Urh)QPm{iXQlO0wPa<L}bnRDARP^o9RTzvS<|d$j&> zv(}``9Jg$>-I036@X>Rd;%TWf-H)7{v1U`nhQktv|6XjZ<BV+Wa$78wY&cmmQfIN! z|I3dhCrh5bRm<<MvE_PKVX<pZrEk%5o7KldS6!A&T(<h<KZ*ahKRmW~w|sNvufJ@3 z(dAFq?7nO3#K~;g^|JraA2FlT5k@l$_DsGq>&Op7#RXSnrPi$3V%n|oSF_7~Yxuj# zubSQ5)~qa<nyS7{wMJa&$Ks>)<x5X~bPJ6yo@UAXv8uLxQtjK?ms3(BKkB6$8+Lw< zG+kvU*1l?fMTzDQ|L$;ouU|fgAL_TO%4mI>^hr+ZQ)JOey<p~psZTb{S>^xWP~?&| z-KN?qZjw=IO({uHCbN39vYa*6@+|fZRDbY4UAxbs&vLrg#%rs6{JKBIyIzc`^%g(< z&dPR8n2zQ7qfd*UUDW<5F|#c*+kdlQ)r@v+pKDvL9y6S_mMt|_=a|jX>n1NtN-~}n zTs=I~blI$AA1VKn{$3SQd(SD~&AK|}u*dSxs~!Jox0Q+?GV=9V`ZKH}rme%)O?-Lq z>ZAM%<AvYy%-<0k^m4MY=ev+UxB5lv&Ncj*%=}qx$>09=iH|0~5BX~MHBPiv%4YhV zqCM-g9<4t$e`RLddZrI{*S0R_^?J0$^T?HoxU~|`C+u5z^=s6=*WcW~xfz{W9I$oO zMsH(dNgiEagUdcfGo|`>1^j;?|JTq*r|Fp1vLK12$);){J%&9gNxl(>LsH`}#4lU3 zBIZ++$tGjTmED@X-iAHLRx{5unQW4_%uwF_y=K?u$80?(B1Nv6NNo&W$bLritJdEY zOTUWhuT<@srkE7A%J~ido-0j{=4s6;I`L#niR$HGUu`vUwN<az1%9y)iE=+~xGHta zj9}FTm#zdaUG>1Ev)4^R^VF33DGUFJia-37e5F48Tk-e(OW(C6ot(Zs=G)bbGZCjl zr)Bf;b*l&e*gNZdU~%vqi{iPJ?5q9;$XBiUXk#0^G;_^iHL1%!CYN3o8DuX@`KQ18 zL!Hd?)i(})y6o*QW2aM9Q)O9gYpSci=MR5a%EM)atJ`XA?cLiCzxloI%_sd=zuWo` zCC`fzeq|VSX-~q*)zkg9n7nw-8`kTl{deV=vl*w|X7LuuY5uIPwR^wwOvN(GZ?z$p z#gZ<wE?X0k9UoFM*TQ1QRw<JW2N%`pANA8eTf3a|Lt@6^tCyFyO^X+9Kk~JpW}n~E z52hcAOxG41<}ulI@aLYW%x>PqWh*l$2M6<MRV@A%AhrC+p3uxBJ2mgnnMR4rrcd`d ztStDb%H^T($4rTN4@)^8^i2M|YQ^u66Lwv%`usgt`E#}=?Z3CUYx$zztyS^g_J5t2 zVzM<QC27@~RcfhqC3Q)gv>98XTrRGX4DB_!aOK3QEhd{TyYV<X3vFGSn6xHq!&;p% z$*_rSjZ?CPdD*7TNNiT-kvh6IGt<Z9FpoiYRLW(xJzf<Xe)kA(_PorelTnZ!w&jG? zTB&6!*MgD`ybKRL_2jX0=%loTS9zAR6s!A5CAQ5<lMSeM?DkdqHBD2WH!M?YulCAh zG2<oTfA!yWD=QuGb<|lc8os1rUda9)6NA*Kh>bd?iOmdGSNlwxwJ{@VwYSft&89Op z&eG;=+c7VEXN6Z)RA<vwwbg2di_Ua=J0G7oZ}r4x-xBuVz)2Zb3Q7-$&UNpMTO%D> z?R@1+c+2W5r#1^_W%c^>8ZBF!EdDU4rkC3-#5gF!AWGwOP{z{5Tql!`iG?k>axiMm z#I8uT8LMp6CW$FFW==aXU-gr*TgufX$08$Eo6elE=`e5jp@=<G!Zjn<f32$DCFLFA z9GdMd*tkk3Y)eR1*b<#<MyDmNMqJD~v)b#J=FAyaXHGT^Gj<bQIOVFZl$y40w$`zp zV4eLUoOQeYPW|rr?@FbO;e$PX5=HWlED9yQ?K?T^$(k9q?qO?sZAJE8TfA6%wXaP$ zXSZb5`rvhjGf#e-J~d9_OqJHFIjL(lwngfsrkP|bU;I0>G@e`e<-fS4Up~I;Uv>DQ zew5*rmuL6Hd3}6*YFANFeeiqZ-&WPN3x0?E_~je9T1?`anBl9bOR{#Y%gVXT(_?D7 zR%dSJJE4b8S6xy*ZOE+lUV5@I)!(yHKeNiEYQ~1-l)aNX-)7p(PB|(6FaFa$_Cr<v zDK)dUZLCz~KYTSZCHc*Bx5@LD6?|&H{Cnq<#9y_i-)gtN`WW7kaO7x~{)<iP^z7El zvHm`j9s258X0++*(8oq6<0NfNr^Raf8LvKAY7=#R;?ZJhUYljJ`pZvG_$0q3UMh2T z<m%kdSMJ&D+4Iq^ZL#<J;I1#>Q=a^^=Qa4V{HVWYq``bnqxGw!mfy<l{(bd9{H~X_ zOKmoUuc}VYtv87cO*&_+ExC4C?p(E4<9rWWhxN+;PA_bq8me{lXp&mWjI2#k+#CmI zib?neotSmWH0b}K{TG`~=?bd}E;aI5w%BuG7LUi7iEXCZS~E`ehV`7***ICqCs`^| zS0`CYmsfGcthEt7Gu=#Pu9CReldLQ;<EqZG%w-apGg6~AMj4CwW+YZPKK5K|av*i7 zZrGy8v<SC|Sy@~cT9^8|b!_ce%aNM3*;^`grSM11moJLE=lU%<9k65FObe~eZF(YE zx{?v45|-hd*R%z%nz9v~T$8Qswrs|k)NZM3QPaG&rF>;l&RhwLTAiuO9%*IT7A6&S z^4d&OpQ~qll6wt{XYbmWc6PQ|cHrHsXI`5;3=hxqY)`xF8)fzC+0292OrlP%UalS? z*_v|oGT-H`xtliUmBeP0c4RzynP#}!Z*Ez1XtC6>h!<!1u3cC6IrHM}<;}fjvkz7! zgc)qw6m@LrtjoNaDGMhnWM-|jUDaZ*^}}?{TDLVxsgXYG<&UHpO4V!gW=F{yrAQjh zG}^p6aP_neact~IQlpk_l{z^!wb|w3<S^Zgs}UwMw#;zT@r_7I%*r}3Z^BoBlT(sb zE6J>S-8r?nd)1R)D}IG`%JWQ@FezDXvTla+(pf2Ki(jpk>{+H8a^m8O1DTnvi$xc! zoNTzb<d|scs+y@ar`3$q!c0w5-EFeYy7jvGT<ehx3yVrUR2e08Hse~)n$wcAA|sA= YuI!ateOk5upWc(Mf`y9w())e@06MU46aWAK literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3b1_states.bin.z b/client/resources/hardnested_tables/bitflip_0_3b1_states.bin.z deleted file mode 100644 index a4cc5d58c54c0b63b9a7a73ca28792535b688a30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77058 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 diff --git a/client/resources/hardnested_tables/bitflip_0_3b3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3b3_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..18a6d49871207a91671b9bbecd09e0a98f45fb6b GIT binary patch literal 2268 zcmZ>Y%CIzaj8qGbOkrSQU|3*Sf9e0<mAxx(yx{(t>BytV$-w9#z#zfU(9rQfN}d5H zuw16bAj}}lz%YY>v)$y#0j30|1O{OSMuTTFW-$0L_%JXfFsR8~7G~gV;A~*<VPH8t zD=C4|fYE?~vw>lT$dm~!S8a`aC-p8#Tjrc4*K*;DNv5s;ReJ$>h0xF+4F?QNMD&>Y zr!#b|YxG{gbijh8K<L0kKgI((+zbf`d`uE-3?2{o7!ndJI6WT7Fg#Gvzu92V!*^hj zf!6<q`W+Trdk$1HJka6cpI~5Mz{hyNg5SZLsXal0jhX4d2F||^{xsA$UQlN^;Pi$) z!A@a=>J1sz1K|t?`g`~u%x6f@VPkB3%k)6b;Xs50_s`~A{BQUg8yog5h(E*E@Iris zglwY>(*quEhCd9y54>P^*vpvU&X|ypkPsnW5Yt#7wVFwLL4+7<!-3Vz3<(ipOur5m zh%;DlGZu(5)?J8y!^Zrb>4msM8S@VD7mNvfj133oGBzeyaLPT<NZ?^j@L^`MQ?TGj zh+%AOwD&NOUm?TB+z`u@U|_)2zd?S5IHMTLfdu&qyAO2<u}s!X2|Qc}5+sBf8xF`Z zHhf`N#=Jpp!2vx+b;bh;I&92Liy01Z@6fN%{><=#yI~EBeTMu28KynV3{{NJ82TMT z6SNr{BDk5Bu^iaJ8S<B*jb*6?$B)Ku%?<kwBvi1<Ehymp-pnZfj6a}^^@7NO4F)<4 z{~o9}#IIpvearZOhuuN;zy>iUxdj{4m=07mHkLCp#(PMJT5vWR=p9I~PY`#Q!_1Tr z!`v`Kv@s!u;eiax{|N>%EW4W$oOkH3HvCnvdr+rfd*BQ60o5mrPdE>-Ut?Y%*I>oW zm>|K!yn~19zy{R@kaitDrUMq71`@0d1w5RM2{B9s+zsm(8y<kdZU@&69&S*q>Toyg z;CR5tV8P7vt?595fdn^Gf$;aH0`Au=2PD`X_HD3Y`M}0%#j-&{<Um3N8`JlO1J;aX zOurd^GbTjHKVUy1$B+=qaG>8neS$D!<45Mtj13zMgqax(I2)F+9B^lR#eRj4sjBJk zgB_gq1v;#a25hX2p%)A^55%uwZkX`1VGZkB*2eG^;w$(Ae7N`;9$2u-U9eqHAoPY& z_P`pZcbu|}st1BkFh65%P%nsJZb;B)kYM3I$9JGWLV|q<_W}#X3lgjidl%Roe8qS} zsDSYeLqdYafxt!y9&V<kH)I$u2;bsnlyflPW;h_{Ai=(a??Ie{XCo-~nVA`OF(rh) zV?4lLpnr||3cG_1!ycvtH`azVTnD_Fma#S_h%qmaVLYJCkPz%}AZukqf`J4NS3(32 z8@q$8;|o6KAB+b|_!<rz=zqe)y+DWKg#`Boy@m(EJ1m&qu(4V(tYN&v$K=OU9}vUx zyWxOMqkV@S!`uVy7uYXwJdizb;0t3zf`M>@0S`CRJJz3!H4G2*7!zVx8xtf%EI1nq z#8?g#h_US8Y%~yKyr9R-@W6tHYl9jyQ-p*V8yg#IsJ(*d4eoyj4$R>1U}yNj%#<J> zAj8~n;DH|FfxrU>YODuj7!A}I9%wTfSn#m19;jga%~-`y!n{C+wP6S2Gu8vzSJ)U6 ze7G5Um^Y{=#IXK6_==CIgz-Q^0pEdLtOvqBvd<7>FYw<XA$!oky5WTcJL3hLh8G-P zm<~*1wPh@0c%X8i`XGOW`UEwm67DO4&zKwLFuh}E*kHfFPT>>lGnNk=1!4>zI1X&! zW=N22JP^a0;KM#aLhuzE%R6Sq8(g26cUU(zykSq!J5a)TL9a2E@rHbc4MPn>CF23V z#wYv=3I5O67!Sxzjk~W<#@LvkcVKUW6*I$uzJ>z{!Hh5X4Z<CEaPLsxBko|$%+$li zYG5G2!}x~1z@K3UU&C&uAB}$*>lhLe>J%#2C)hAEGyGy$e1`doIKy;?1joi3atCaf z5^5MfH+^9Gv%tSX<p*P<{0$z~{|*Lv59$*l*spMYXMV=~jPV2e9$BUX2KqB3MBlMC z`ZauSs(DbtdLThx!9e>4yMqBUbHjn32QO%RU_ZykdWZRddV>Ym0}1g<jQ<zdeW+r5 z#eIY813TjrKBnEw4OZ+Y<Q`bD|7ZBXeS-S|cf$i2#sg){3-}8R)Mw~$Z!i#JY`h`* z>50gc{taxbpV$}+Bm^594(!*kzaq;h?hx*<V&4TTmR+n3{~Z!!*gvr|sx#i;W6-?A z%&>unn<2DegAO;t28IJ0SPmSJ5MxZ>;o6|tm=Gb%bU>LYL5<Zwhnq=4u+jU3gdAhT zp2mdG3ld_CjX`hN7(TEklyF{<b2w1O#&{sX`G6RsJHvs%GNuE|6Z{?=5NAw?5N71z zW=e=)W;zhT+UR*fhUI|D0UyQ)*2YEy9<J4l2_Xk0I2$H2&ERI*AR)%usLdE5%-HDN zpvP#z^gxU;f}3H38gs)c3GN1w1MQ3r1`?tPK5VQFJ}d_oGd4yDGa0BcB=|5kf(rZt zpn7IvLxLDng2sUvtO*912?ksnq_~{=m=`3J@G%^CAj1qwp%M~&j2Ac)yc-fEcvuc3 z1U=yDdvGAOu`x8<;SH!vlVv<mz*53u!QF7+zy<>~HkQx>EE1v(5uyuLDJA$Xk)OlE z!^V`5P|n82&hS8j2Ljj_7aX`6*zkbw!5SWBCT+$B9ga0@j5lOhV;CDOxEVwn>@G-f zm9w(3cpZ@7>Sj1FvEjg?I0iPBO2)>Z51a`JHH|OW9l9G5Lj4nD4?NH^5KoY6cwoWD z+z`XOz^kfxfo&D5dx5`!1=rF7P_l{OVGV9r*_aU8utBrIKx+mYlYz!NW+ufqObK2) zn3=S`u(A3bXk*$SAyUqGAgDlO1`opwjsuhQm<~7|aAp#DU?3sE#?IJyfE^S835ty- zA_cOH2Vxml?ci)kNML4c1l6nDjExBr%nS($5)u+@EC)7-9w^{zY`kEg!*ziFzj%?W KMZg45YX$&eRqjmy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3b3_states.bin.z b/client/resources/hardnested_tables/bitflip_0_3b3_states.bin.z deleted file mode 100644 index f7bb63eb7878e931d723a7a353d2af818d2cc96b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44320 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 diff --git a/client/resources/hardnested_tables/bitflip_0_3b9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3b9_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8 GIT binary patch literal 4981 zcmZ>Y%CIzaj8qGbbgk-t$#h-h!-xNR7U|Ml3=Ibu7}%K=SUMia*4uf6EYzB+wbUzM zm8X+K0D}hC60M*Wo=#IlJQya1YN;#@bkJa6TA?MN$t>aH%f@lU$Y4e?XXk>05^Zk6 zJc))T63PN64kh-esWr1CNlN$#2L<{1YJ6polw{n>=&31`m9*H+cUJI4TjwiZ?Wa2b zxXAp6VaAmCk5)!3lv=4PG?hnLOE8S-%7jDR3Z0E%N=r7anzX_F-bx*|6>Z{E{Z_Rx z%;#8jiJjv^gl@=zh=^IsC#*g-F>Wc#p*6~(CR!JCCWWcYXgbxb#C=s`qsm2z(AKzB zGeQ@cEO;0u*z{`IimdifZPwPNNw1bQy;^x;wZbkIy9Jw;>{^lG@t|kL!p1_4rvV=W z4(w76HCWBHHJG(E!fjHdXN4HY@0L{08jaakog%zU15ULueG^;79?G}M`xEz(C6Znr zVpiz0Hi-*GX#Kisr)0%_$a87PhNTO`1Q%=#4${`>=?s3gC~Hdfid5$igVhImgPqoj zN-b=Sa9cHhMvORTFl%en^2XBOH#+*PhaRnn4b^s8)*9hh_b^MGJLIaVNEP=gsfAa0 z)K(>idFcsWSnaB(_#%F(|E=YhmT#;Q|0>S?DbTJ<ZK7q!OVuTQAyz9J3qn6RW`sWR zd>Y!doSSP$M9}wOt~i0Ksz+tCKDbX6xN5Rwxn{)F2p#1mc3SldYr1cRzME7Nu=>W* zLsr}iHmqK-x}#4t!Sj%%!^5yu%eb|cHD)bSnI)Rh8ys?qIjBvr>CoDs-av!+NM2E! zm0jUoZ4-8gtz61}BFeE;<*K%p9CvH1#|&lGMGKFH{A<|YekcCLszm)J&o`lO1usf* zFASStH7ROQ*3_m$-X7lEO;@yP9POssYR0jC4rX1I>dd`LHsC35z=2&0PfUEb@YHh6 z&_t<~Es0^CM%-G<R>rY@TU9&7?vRa8wU>UO+|d|SU9K(Mf(8-pCszE_s6F&W-|4{) zJu%krf>Q$%6GGn#E?V_5)HK*d{zm+p7_HE6Vyv$wMhdQ4_(4ZcNiyWBW1W{e$0;>2 zZULjIQ^LBUR{mqUYOvKe*n!_MX<_RNJ?^`~zY1DwI8Fww)sj?5*bw0+CdSRp&2eZk z)1`%P15Pd1nxV65E$f1<!46xvL$3N~^e+wmrZO+&MQGEP)?k)uG4WHYDi)<`AFL2> z;#ct(^=EBudaz-KK4W5d)7n6ORvm7ROYEIN7Tk@Mq81Tug5LyvRi-zlh8!|jktm^~ zBgU=Be>ddkq^OmDxH&#GJ=pINdMY%YF)8R|n3!No!oDd}o31){EDtqxUbW04{JY@a zruFAMHLC(`ud@DKV$j$+)j8B>WrU8yRU@TCrXi*wS46)HwzjrLxQT_Bs`Q2&0QrZT zn>$dvVNtE3X4c9>Rx4ZIu>9NVtLeB<<CCXm0p|hXr65w>Me8T`6Zcl;ivfp3Tc`Le zN|cBUIhfF+pJbt<v#Mz219zr_S#7Jb7V=G*A=a4TnYC<^=%UH0T9u(j3lAnlaEmlE zR<n9Ht>YGQ6a45Z^wH(PR;8?Ep{CBBx&c=-4;@U1TG^PX+S+v0H{g&#q?eDFXxO9( zomDe*#JDy@=mxX4By7>T>eF=9H|W5og)NB*ZXt$Zo(3B>Yzb{$l@XyEaFy3dGUT9W zV?xlWW!xMmLuRr@DSPn-T<8@_3c4uCy2_g+Q|n+x6l?3M#H<-nOB1GqT@<>q=m<CK zs<0JV%T^?~g=#ik6>G^5Te)D1nBb}zZUHl*mWi!w$(j+mDp4YSt}{zbcZk8#1v@nh zRxen+YA)lccFov;OKRMjG2$Fo4YvCK7F;RvWvZx;lXj><aL{7z&s|%6l>f9|wJ(%f ze!;C})lZIZ+#v_HifrkM)RJ%$oC*rTC7TvbS*$U`jkUEUp_geRM~Y@kw^p0rN@gv# zl_3{atFnLTicjkL$n;^UnA2J>uS?CYx~!e5Q+<Vc#8xeAnGw25N>Mt*WNE^tHqpc| zE-ArPVN=Bd4RmxCq-xDrvSCW9v(i)poe-miT`p^sISw5S_|=l?{6O$3k20(Kzfc>& zSE5-Hqck&mS)*2EdYxL?WYm?gAwrC`>A?QPx~4zeM?Jm@L<rhtg<s<iS<BjbDEO$x zsYM$iB6PT)t(vLTenpHWVFP#5l|>a|+^iE=-{>c1O>K=;jB7I35E-=phWIP}D{-u^ zR?S*zmk_o5h%#fr>X5ZsGXwg#--zE@S{d-0^+%}x2|ey_tbbTPt(woZ@M}<H(1sZ0 zS6UD2PAz<?8Ga@7C)a+(@Co9dR#gjL4Q`F$ZZhZ-+2DUA{vG!R@jpyUKZbAy-woRL zAZk%!s%lHAS9_Czo0v;5OG1RMDE}Q%lNAYGf3)U$>U!!5^@}WKI%MQBzfn$0YUK+z zF>#Ug4f_^mE#Dey%k*VM4eNtGrXQ>at635yRwX8Eh=`l&v$S9}(;<UC)~3m<O)s6o zFGT3*Oj%#jxyYC4&>F8ut}PuG^xrSy{_^_=SG?EMRo<L#LOm>7RwQ+82>qa})p?*d zWSY{9Rc@gMkuIlJ`Y-4SR1Xrm5VcZcgVIGFWzEn?&qS_+NmC9@V^t2h5Yco&<<znj ziJ2h=TNT_GqclR_s0J^ZHeuqbSu4CQdb6xtXw)*(>r~@ZAHh{&o+e_Gx;d^YZCDm! z(mBP|?$PhiV9f}frHNr7rq2IYRd8R3n$)u@iH)0M;UCS~qi^E0y!Lg8s2>q)nbsBI z<t`+m?V>XOtPjhE4HKC|OjTVgRQ^5smo>jo&P(Nkf!L}UT8Gwpb;d0UnZY$fa23Z7 z5w1hOSY`=|Zw%{LWFwFeA=a2B_)0UYU2Be5$Qte&d$~_7U$W@ZqDx*?9eRt5nhIR9 zn7vk>3is4w^$RhG2t9P@U{=sBj#4jBK_kw3)!8LO>7i6(k!RP+gNa-ZlNKI26|OZS zXliR~>!e8!cDRXatqkr8Jap*LsbwJs8#Zj%uxaXwrB&QQdfW##MChz)cMUleViEMf zc}g%hcVkw_+E5=(10AuY&a6{{n@)O`274_@m>BOE=HRa)d}C`6*N;^*T^2rY^H{br zYK6{<nOuRbi<ZpLRoUuw=qgW;Xww=oQD?2T0A-QItV?{vLVd(mdM;VaY3j^z=+LTD zQ>XZdbq2O%geFS3aR)3)OiT?pu%TyyVbE5QthNrxKvPxSU~bl>+94)P)v6Lv6aBbb z4+V3xu9~5B)hZ~`>rrECW5Sk&5ju+sy-Y(M=me=Y8HMyHx1I_u=o1rcZAnZ_ELo_{ zx=J)g`HR@9Frf%B(M*vIp({nFGBX)*9oWzt>La>PYT2s5RkId0Y~&H+=2#o-k;$u? zHFZ_kq#hv&*4Cy|Ek?^$>F5M)5xAsuFpQgZg)`GBwV<A*!CDe-V!^9IOH@vXyNWqY z<JOq#TIw5e$cl4H=%KYtSG8G|W<+W|OzIO8TbQw$b%l=Ds>H;Et-irb7gj6mn6NM| z)WoedLO0OVC)7ubJLD4EicGJQA%_lTY6pr+=z2^#bks2-s%dJ%R*z=Z*48B}!~|PI z4joKP3UXuA^$ZN`TH<o3<Dq83lqd%irB6#$OkJ+HHl6Bhy6Um1vuVu&;gy~dL8~Iz znnG9T2ra$P8)_k@s-Lh`$)w}R(i3{(4qG*LvYrx6*c$A#mTUjdF0PYCvrff*Ie3ES zI&*9L&%(nNHv(8#7%U_hSlk&7{$RiXj`{c+%t}g7o57QE<TB?nHKxo4d_qi<f>bVq zNX!oYGH=OOxygTB)?d&TS${=MB}#CWi;hmG=7OZoMQa`1nl5QZt!iCpKVdCf*NjTO zrUT(yJy-gPH?y@d^B8;-Z<@Z;%OpyTr(5Alx2Kfjs>y-ui&lF|s&%`*Fo{$PnJd=K z?(Dkgg^xs%*Mk!!GTjPKxL@&fyog${L#HD`Cg_R2U_z0Pl&%;ruUL1Gk$Yp)@79U( zoN<fVxuV2e8@@@2yolxa$uAOe(nhAE!oa!9NPoh&$rC<#oLahQldiC0v&dGLQ;lD} zF6tMiMCpo8n2{2xaVTTM7Wq3C7NH4;5}#PueO!Fv#mmqbZWSY4f%-j3RwfyjrZ0H0 zC02|_O4n<by3)y5@rA$LfAlY@mTUhaW4AKiWv$l}tBEUPx|<y@>`Rdp@04RxJj{8R z<GX}=Q(~;<#Y*9W!aQE<JiB}(V!a>Pf3iz{H2t9aCjE|eohOQ<^qgJ_FS@Y0^`xJ$ z!@&tD5+)NTrp!oOv}|Hx!l8_5T?fA{T_xwH@=<KT3xiXWpGi6%l~i+m@X*TZV8T`I z4*LfZ`Un1}80<YMFIW?3spdQ}Wx1!6w#&g*sVN2zF0J~pYTv|H>W!ZzOj06BV#QS# z9eA-bu)2G~Q_V#Q7fqrjt}x;iKJfeSyXkl0xW0wfsQl<|S<|g>WsO9<QoPE3#ursG zGBO7COefqVxgT{-n#b6zGJnQD<wYxh^s+CSwkS!zu{~&+vy*(tIx(-qY+5NZwN(@T z8yt3%ND+NuC??n3d?PXNO{B}L)+x()Bq9=<c?>p8V_R6|I^l^yiX=}PPqV^d_Fd`+ z>NMr}To=A-F^D@R?;@v~GLN76puc9E;)BENY%+4poDXJcRVXua2hG!%&UoO{!o%F$ zZ?v|mR7kRk2__~SX5(2k|B$>%FaMLoO2-TT0!zKB+a_&QlZc40YnfrBr?pE;uUXUm zyZBem-$6mPs?{y_Yjv~|Cv1@vX4A?z)h5<-Av5rYm_(w%h7(&RW+WsWI?N`K>3qQJ zSE%5Ehb0Ezxc*JJ5^5S07ZhY6dLTT|ooR>YRi&Et6MIx`1rr0?yiP_$q!=V@_@>8W zB-7qlB4H9Gp*7d#LW-nl!l|H>VF7ZE6AKa&47Cz$oBB8pcIoJMI@x$VxD?jr?7C7) zS8GSYfeQz&^cZAhY}k-8wVBgYna#18jkB4pmsi+X>EH^3gaaowY&ft<$8AZ*#l@<N zd3vOD#ishSaTypWD>id$tkzoQIaN(qDWz96WmYrSg_+*Y$_f|TdQ1|t0>iYnG%jpi zbm3w`6l1gNL?a#}NnT+#F|Q35+aw|lW*KbwyXe9`H!-ghrP_<0=<zw8*s1QiGQ!A@ zPprqJ{>7H5RRJq9MK)ykgk=0xUCjNb-Ti~EykpkFnnN{?ZOuZPx=x9Si8-q#Cb_vz ziqz(2=Ft&b)f4KoYQw?_8@5b2vCP9n*USH|_D9W1hfhIkosPOrRr5NLF>%6G)n<nc zYt*_!RaeX~@fGWK^66}y8s>H2u&R+`r$o?+O$!VR#augC4jnoyu<u|>Ji{&>9ijg( zDuplUXr`>0te9ddtZ*=8H5(5PkA(cf|H+?hT&g@wL~6QUwTU_NiB?QHp~hp7P;=lE z_ZuE=HpYWX!W)~}LYZ$=^9plbS$rWP;l%t;{CDaeANb1bQnTRjEw#pri7AqT1+|CY z3!m8c@TcQfKK={#6Mi~=X#M7KVunS0qD9?=y`uhW;#cestZ4k({79X7(F-eKmltc< z-`Ov)SN!j=_>mCfJK+y(U58Z?OPoGL=ol@H(BY9<SkEBU+Ax2LmB%HwmHI*v5|N(q z6Dzu%FKjs6X~+CVO74O!^CkU;4>9ZqENq(&9WglA%<qvhM~zKPoS8Mkpj2SKV>8d9 z>PcIb6)t9K2W;x>QvcDkx0~ytn8*g@fQ>2#ZMhX=xSb3`JEl3ad7WV2nB?(jYKlS7 zT80xFHhCJkiAoqcyJjdQPPoJ~WldW*uVdnprVMRW?kgIW+8V-aTsl)1Ix9|^Iw>Vs zvFT!#o3mzEXREH5>&i&Y@Ef%WDKm_G)La++OFmG=tFlRAWiyxff90S39iLXjdvz?n zB`KP+R!H4bY1$Ie`V|LyOg*Mt%+y+ZF#bmUiaOS(LVKjx*jg7I4T+nib%2N4Rs29# zk6mNbiuR4Bo~{o)7hFh@=zOWoJ>kKL8FI%LKC#tWvudkHm50UT5I&AAD_6)&UMa(P zVnd=uVzbBGP`}Q`W^O({&Pf^UE=OcNj>t%a6dZ{$@^j`C<}o;>+}zr($lR$XkvQSR zhQmAtCruVr@dP~hV32S^Z-t~{K_AnT)jSqbP8kxSjm;hrMxh6%gtLVPE>!)}9kBRR z&^ME=x>8m4OT1p(7oxnj_;RF#g?c8gQcbwhE6gjV8rYO@NX+S^(~)VsUI!;6T+|MV z2<ztNQ8_VFn{A~xcc_|}7_XK#kC7OgSkR2lrMhA(eY!3MF6NQyTy!;LA6G=C)`N$K z))-_Y%(Ch@X))z6GuxsbN$pNucE(P@rc<h|hbQ@o^XM3CILx<5n5}Da>u+AprY%xB zi?-+lUDa$%4Qy;(keK3Q5ZKJQAY((qp<bzJOIMos3I|1KB}gQkSe26DW2m-j*-{>1 zHeRh6lG-Yp9496wwsRFJ2Uu!d(Pr~{>DSAnw`!BP>x9INz?7_5so=$K%Bl-HG7>H> zcIGjW6kG68CFp~ZPd8iF#SVjniz|J_7NxRDn5s<)Iyj}{aKMVgUY!ORT{8?02YDE5 zXy%bfYS|#TWTLl#(w0Cg)e^5wtwzcx8n%Q@F-QsH<w#j0tg2bknX%N{F@;;;Le~=? pzGlyO4?~wzYLj*~FP@OJdWF@(jD!=L^#6+&xmpBFIH=wJ8UXlT|B3(r literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3b9_states.bin.z b/client/resources/hardnested_tables/bitflip_0_3b9_states.bin.z deleted file mode 100644 index 4e5b2ff279cebc2f552d994ff58cf344c8e4323f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46813 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 N$q63+<$0{LxB<9)=N13} diff --git a/client/resources/hardnested_tables/bitflip_0_3bb_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3bb_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b6c1eb54c9a47adde8f344c3c51fa06cddd1c782 GIT binary patch literal 1135 zcmZ>Y%CIzaj8qGboE5mHfWcF+{_p?)FaK!%ZRjYSBQWI&1BZqKg98KO8b$^oCx$MD z&Ierg84%#vOi7*@ii<g$OfD`KFgZD~fuY^x#EF!Hyb?Zw%X%dmm-+NCuvjj0b5`TX zIF!(9l5vFBC?$bG@vM=Nq=B=WFiYlQH-*f}$_$KrnG+|RY?3mVq3kPV$m}yyf`LP1 zsz9fazpqb^k-~)wnVl0m7hf@vO8Ml!N5p@>!{kd$)0nuKA~;qyMldWt`gaGbOatp9 z*0>uwTr~}~3^fldnXH&Lu&?9#%y>Y&LbYM<0yzVB1uMqJ(5eFoE(bPnALH7<!`K+Z z*l@r=LbTyPf)B@m?gs0IJqs+E_wYHEF)z?;c)@*>#Xzg?fPaZ-f}g|JgH}wTmdqR2 z11wqJGKD(`pJG48e}advp^q^kLPGR{I72D(ga|Q~2Qp0m80r;d50o(P;C{g#P;;QX zd5>&kf;)p4V`D<#ho-*@Pxvh)xc@XWpW`=>Pq4dC!C1=ji6KMfSL1Vb(SR3hEC=EO z{AciAV|?GVzJae{9ixH%6#g0V76$Sg_`mS~;@-pe!0!VO8yn+8=7w+v31Oz1gaXb3 z5}b_&1`-m&6XZ6?G#*fG*dW0#Aj9~o`3N7w8_xHP2edb6tzkdK!|sq^$=GmUHS>Mu zhLFDwaRG53#2G9YukdpSuh0+Sb7T*YU@GD`u=)X`4a1y91KGxk1N#{G9PJ<2OW0j7 z&|6T#+VFw#0N;nu4~<`%7uY=b&Uk}=fh@x-Hr9U!teAc@);Gl6kZ%z$5O**z(0dT{ zk?~DK0oM+u0|q=y2ZHzT=kPHWaj#Hgtx0$w_?6)aS8YN<xWWdR#soh{19gQBst5Gl z8QK;0Dm+^~A@~aOk0uMI{RT2k>lpqlkP`^L&f1s|A;$WE^)=&T_Jml*N9+s+2A0e# z3?%p(ELkj=&v2h%S6KCm@g94Eje?EB{0rg}_!{;!*f{JBuywF2h+Ck2iu*P54*5Ic z3E>SA5~5Go8R8@C9@sh5F0g5s>v%&vfsgTkO=+wp>pi}P8Di`V^$!a8zp+*`l(61o zzrnZQ3)6?D-;8CfH{=#rFnwlBkYQ$c!oH1ti7Z12>kWPeOZHoQ6O=a?Xuo5<BI|fU zuVI58LjmIfxrSPWD#kZVFW3uY5A1F{!Ji@bL2p4Rdw}28@CR&6FPK+Yusi7RH6+M7 zCKwp7*jjOQ*c_N4zKe~qF*HGkjX^>n!9c5rYhj}f8-syhLl|R%H)F#AH)f{QOdBMa znbxozSlQ5(AR*ew!?i(&X$IE?ZKkV%2@=8%E0q}&L=s$IGBZp)!sTheU%(|H@I;u= z;|Y_5h^<0`#w#{ZLSSqZzuyqNL78b$f)2-l#S9yGm@HTumiq9p1~VNvuz}-%foj8n z2yTZ20|OndtzoPU31O@W%FG}+ZN|oT1uPE)8#YL-W;k#lLPF@k3?6321UIHNY>W*F X20B~^5)ABr?4G1~sHNpnZ*l_wOTmyG literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3bb_states.bin.z b/client/resources/hardnested_tables/bitflip_0_3bb_states.bin.z deleted file mode 100644 index f8686dba6fe9851da2a7484b5352f4521b575ab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23650 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 QgLg{ufBS#-Y_;T>00#Gm#Q*>R diff --git a/client/resources/hardnested_tables/bitflip_0_3d4_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3d4_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b01f02208ef4ca4c78fc6566fd6e0c556e11ab30 GIT binary patch literal 5424 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3d4_states.bin.z b/client/resources/hardnested_tables/bitflip_0_3d4_states.bin.z deleted file mode 100644 index c8a8cf4a0..000000000 --- a/client/resources/hardnested_tables/bitflip_0_3d4_states.bin.z +++ /dev/null @@ -1 +0,0 @@ -xOu3io%VkLSMd9E bJ!HHK{| us~~ןO?y}\כ7t{G{s6~W.כ{vw?~>߻oϿ^珟ϝ8_uܿ?}/~]?|כ>'{߿>kO1W}|p?~==|kymo7ogߏߎ_??6ÿ?_;~o\??G??y/^yXopaߧ{tWMkQ|Xկ|G7___5~9_/ߟkϷ;/? /7?j?4[<ֽ{okOkoG7}g?W˿?o<?cϏv?:v|j?}OG_FwƯ??j񏎿vƯikۿz=}]?3n_}4^]V?O_V_/dU{uSƯn[wo]}߻u?????_?yyOkC1xwouw Ͽ7:coooo_uھ//ko;?7QW^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>} \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_0_3e1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3e1_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..15195d21385b0eede73fd2ebfdf61354647a4812 GIT binary patch literal 12468 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 YuI!ateOk5upWc(Mf`y9w())e@06MU46aWAK literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3e1_states.bin.z b/client/resources/hardnested_tables/bitflip_0_3e1_states.bin.z deleted file mode 100644 index a4cc5d58c54c0b63b9a7a73ca28792535b688a30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77058 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 diff --git a/client/resources/hardnested_tables/bitflip_0_3e3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3e3_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..18a6d49871207a91671b9bbecd09e0a98f45fb6b GIT binary patch literal 2268 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 KMZg45YX$&eRqjmy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3e3_states.bin.z b/client/resources/hardnested_tables/bitflip_0_3e3_states.bin.z deleted file mode 100644 index f7bb63eb7878e931d723a7a353d2af818d2cc96b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44320 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 diff --git a/client/resources/hardnested_tables/bitflip_0_3e9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3e9_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8 GIT binary patch literal 4981 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3e9_states.bin.z b/client/resources/hardnested_tables/bitflip_0_3e9_states.bin.z deleted file mode 100644 index 4e5b2ff279cebc2f552d994ff58cf344c8e4323f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46813 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 N$q63+<$0{LxB<9)=N13} diff --git a/client/resources/hardnested_tables/bitflip_0_3eb_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_0_3eb_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b6c1eb54c9a47adde8f344c3c51fa06cddd1c782 GIT binary patch literal 1135 zcmZ>Y%CIzaj8qGboE5mHfWcF+{_p?)FaK!%ZRjYSBQWI&1BZqKg98KO8b$^oCx$MD z&Ierg84%#vOi7*@ii<g$OfD`KFgZD~fuY^x#EF!Hyb?Zw%X%dmm-+NCuvjj0b5`TX zIF!(9l5vFBC?$bG@vM=Nq=B=WFiYlQH-*f}$_$KrnG+|RY?3mVq3kPV$m}yyf`LP1 zsz9fazpqb^k-~)wnVl0m7hf@vO8Ml!N5p@>!{kd$)0nuKA~;qyMldWt`gaGbOatp9 z*0>uwTr~}~3^fldnXH&Lu&?9#%y>Y&LbYM<0yzVB1uMqJ(5eFoE(bPnALH7<!`K+Z z*l@r=LbTyPf)B@m?gs0IJqs+E_wYHEF)z?;c)@*>#Xzg?fPaZ-f}g|JgH}wTmdqR2 z11wqJGKD(`pJG48e}advp^q^kLPGR{I72D(ga|Q~2Qp0m80r;d50o(P;C{g#P;;QX zd5>&kf;)p4V`D<#ho-*@Pxvh)xc@XWpW`=>Pq4dC!C1=ji6KMfSL1Vb(SR3hEC=EO z{AciAV|?GVzJae{9ixH%6#g0V76$Sg_`mS~;@-pe!0!VO8yn+8=7w+v31Oz1gaXb3 z5}b_&1`-m&6XZ6?G#*fG*dW0#Aj9~o`3N7w8_xHP2edb6tzkdK!|sq^$=GmUHS>Mu zhLFDwaRG53#2G9YukdpSuh0+Sb7T*YU@GD`u=)X`4a1y91KGxk1N#{G9PJ<2OW0j7 z&|6T#+VFw#0N;nu4~<`%7uY=b&Uk}=fh@x-Hr9U!teAc@);Gl6kZ%z$5O**z(0dT{ zk?~DK0oM+u0|q=y2ZHzT=kPHWaj#Hgtx0$w_?6)aS8YN<xWWdR#soh{19gQBst5Gl z8QK;0Dm+^~A@~aOk0uMI{RT2k>lpqlkP`^L&f1s|A;$WE^)=&T_Jml*N9+s+2A0e# z3?%p(ELkj=&v2h%S6KCm@g94Eje?EB{0rg}_!{;!*f{JBuywF2h+Ck2iu*P54*5Ic z3E>SA5~5Go8R8@C9@sh5F0g5s>v%&vfsgTkO=+wp>pi}P8Di`V^$!a8zp+*`l(61o zzrnZQ3)6?D-;8CfH{=#rFnwlBkYQ$c!oH1ti7Z12>kWPeOZHoQ6O=a?Xuo5<BI|fU zuVI58LjmIfxrSPWD#kZVFW3uY5A1F{!Ji@bL2p4Rdw}28@CR&6FPK+Yusi7RH6+M7 zCKwp7*jjOQ*c_N4zKe~qF*HGkjX^>n!9c5rYhj}f8-syhLl|R%H)F#AH)f{QOdBMa znbxozSlQ5(AR*ew!?i(&X$IE?ZKkV%2@=8%E0q}&L=s$IGBZp)!sTheU%(|H@I;u= z;|Y_5h^<0`#w#{ZLSSqZzuyqNL78b$f)2-l#S9yGm@HTumiq9p1~VNvuz}-%foj8n z2yTZ20|OndtzoPU31O@W%FG}+ZN|oT1uPE)8#YL-W;k#lLPF@k3?6321UIHNY>W*F X20B~^5)ABr?4G1~sHNpnZ*l_wOTmyG literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_0_3eb_states.bin.z b/client/resources/hardnested_tables/bitflip_0_3eb_states.bin.z deleted file mode 100644 index f8686dba6fe9851da2a7484b5352f4521b575ab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23650 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 QgLg{ufBS#-Y_;T>00#Gm#Q*>R diff --git a/client/resources/hardnested_tables/bitflip_1_002_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_002_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..4c9093b38881be020ebd0aa575671ca422f5c51a GIT binary patch literal 7733 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_002_states.bin.z b/client/resources/hardnested_tables/bitflip_1_002_states.bin.z deleted file mode 100644 index 226c37a2f974e9fc1376217582082e42d3ebd688..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34594 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 VzxBT;Xxpsq@BjbhSD2sE2LM~n3~>Me diff --git a/client/resources/hardnested_tables/bitflip_1_008_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_008_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..89d88b572a733280b375bc66523de7d8ea338bdf GIT binary patch literal 6132 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_008_states.bin.z b/client/resources/hardnested_tables/bitflip_1_008_states.bin.z deleted file mode 100644 index 209bf5e9ee5d792e4a1451835cc1721183fd1bbd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27612 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 diff --git a/client/resources/hardnested_tables/bitflip_1_00a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_00a_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..38af88dffe626c1b4415b38407451f87793ea280 GIT binary patch literal 8688 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_00a_states.bin.z b/client/resources/hardnested_tables/bitflip_1_00a_states.bin.z deleted file mode 100644 index 63f0a7a5ec088ff9bf84c81e022aa8e0adb18738..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 35498 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 diff --git a/client/resources/hardnested_tables/bitflip_1_012_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_012_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..492261923c4d616d11d5ac062798b52ba6eff1ac GIT binary patch literal 2678 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_012_states.bin.z b/client/resources/hardnested_tables/bitflip_1_012_states.bin.z deleted file mode 100644 index 659e697f27e45a3d951a13eeca6f4ef2268b93f2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20925 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 GbpZe|IMW*d diff --git a/client/resources/hardnested_tables/bitflip_1_018_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_018_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..c0a5923785f3eabbbbfee990284b0948b5d123ba GIT binary patch literal 1623 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 F1_0phV$}cu literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_018_states.bin.z b/client/resources/hardnested_tables/bitflip_1_018_states.bin.z deleted file mode 100644 index b825cfd6c178dca91b025caf98c4317da9e09972..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20107 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 diff --git a/client/resources/hardnested_tables/bitflip_1_01a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_01a_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..98093a999bcdf03c47c0e4af1c64f9043b6f795c GIT binary patch literal 3415 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_01a_states.bin.z b/client/resources/hardnested_tables/bitflip_1_01a_states.bin.z deleted file mode 100644 index 61d252b20798926c6ae7a7304f84db6ba4a1c788..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26647 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 HB^Sd1+m(2I diff --git a/client/resources/hardnested_tables/bitflip_1_020_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_020_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..333dab4c5991cf7676aa290c4561dd90ce101966 GIT binary patch literal 1536 zcmZ>Y%CIzaj8qGb^v`_k&-^Xrn(OTX0R}?`2L{;&2L=ZQCyoRTd&W-;3?dU4G#EG* zFbgi5Wun1wBy(9W7lWZx=3=J?9=BN;7ks^f7%nh7ESVB=<wS;2mH!ltpr2e_huFCI zFU(jOYG|Ml!?j_0m!fm0oOnZGvzUZBPdFPNpJ7FplTW~^qajWQRduF#`3X$r2~p}< z>X|TUnv2$^rqx_?OB!WX%4)QPDF$kLg-E(cx=3|Q4L`?G;OWgWWsA_N9-*KkOT!PW zeigC)%Q1sv412^_!j#zzlG)T)TN0BF9p)Bo75}1j@Q{RaYoj06AzLxgD)$c(hu<Z4 ze&?xkzp~;7PlWR;tqpCQiGu&Q_8ofY_4&I{gj-O+QRNUx&J|Nao0d#x*|36*F+t!^ zo7alPQ$%C*oxV69^5;m5m?q3-5O}aknWLb2#ijkp_u7|D+9|2|CN;3gB;%xy@~U+` zVZvS+mzBAdb$W%Bg%8RopY&1Y__W~F)Kp#X%Wn+-%hYh#@@V}KY&x`@<H0(QHOfjd z%8DkFJvQlc965Pn#>}82r=pfJJXjNI>Ud?Vs?;>6LLsARD^@+U@C&pM4b5t0TPeG~ zu3^H4R^gzP!kS*IE_$trh!EzQamb)eG$J%4LYvjmpoi5*nKfaJfX`CTL`hA9o(=<T zuT?24v_7$l)UdK~bsg1|5Yh3hV|4n#)%8I{pZf!6*K*cGnJ^w5i48O4Cngm{Y*>BZ z(1r~w3pRwaas0Hgn6c5&N7YvNLLAqJ2!r_xzleSjzI-9xF+z;>Pven3j=;u*1sfJK ztkFIs;ZqbC6x+xW9<hqo)p2F0Rw}1vGlPzVnwV%9YpZ5!LPVH^k5?NH50BG^9)&~+ zF_9Uei4kGVJgb5^o4i@Gx)LQ_A|jYsb;OpsgsyUInV7JKrM1URjG2u`M`D?((5zLR zs~oe0Ij&5|TBUZ#L|9~z!NjBvpQS6aSPrZWbvdQl(yeIZ8nr}fRcDjygqgy=raHZn znoGM~l!J~cY;bH^7PQo8qK~V`oE7t*X=tmQ%2t0}xyNDM-d!iG^OzWz6gU`|H*hd; zIPx$uKd9B<Vqj%pYG7H^xU9|1#|eXUG}T(H=A)+AG%3*4D05lwieI52s$WD!TX;m| zKOoY7rwc~<UolBdRWnJ2n`O$TDS;M2lO$SJN~&^)s`zqpE@8Q_YMRiFsREZoIZjPl zx=LiL(=;WA4PI)iJZ3PdW-aMlwbc7!_{pUGZia0JtPeIQZIm!<mM}EXQRWsClZaTO zv43G0pTHp*9j<~f!514=U$T4HW6x$Wzv1{VyQA(Wk`BoyhPD`ZbM(In{VvWG{z+wT z(3U2{&`8e(DJoNu6Mi6zrPj)Vz1$c1Ic*eMlOlX14!X0x=utexH%<LxYDHG?)l~j$ zg*j`ZHnoXf*tIdjCpc`=7Nf0GJ5C+>;Li1_O|-RA=*7}WnYQ~L``<i%qWQw1^%Es@ zv<mvTo+=$OT3WDX)mF_Zru<VbWfl3Vt=ckE%}XmrbVaYwOOuXFqg9U<ZSoa}nY`qY zUu)1IQ61F`rRiCdR?TW~ZP74wnx><}+3J%h;moy0Yn6^@(}EdpOv?nDHiU7gd4?MF zEHda>6~>ySk}9ZrHOK=w#W%uI{1=oI|6rqqPDJQ~#E6KH9TD2iEOqDk)O37;IsIL} zh&SyK<59oxL-d3C@&)@?6C%VP@Tn9y^>DMYwo0%j#t9rso+9XeiBo9*6PBZbhC$7r zU0I&23`#h_&Boc<8rqoXl^7u=+9oWtu$h@zV2v_|gd1zCnrK9r=&Hm?3tJ8Zvu1R* zq)bXo;1Ssn<)XC3HBlu(n^7@Yu(jb}GdG)Nr^~X2UXjUO5^fX1Iu>iKaawg~$&nyQ zwaH%1Oj}q|mK<7gYPF{8l*L*rqgHr39E_Z)D{(PQCn8i**DENYnbl{~s;o)Asv7#U RI^V>e6nW_6)TW^O0RW@sN2CA% literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_020_states.bin.z b/client/resources/hardnested_tables/bitflip_1_020_states.bin.z deleted file mode 100644 index cc78af68fa9b6cf1dbe5af5d26a81dc43b0f102d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17327 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 diff --git a/client/resources/hardnested_tables/bitflip_1_028_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_028_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7f2e66c326848a9985b488471b083e066389d016 GIT binary patch literal 3493 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 b^ioIT(7JG;0!#Zpu_r|yIyrKee2)MCQ`8^v literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_028_states.bin.z b/client/resources/hardnested_tables/bitflip_1_028_states.bin.z deleted file mode 100644 index 1137886b1acffbfef9058c5c75018b364e2f8500..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22552 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 diff --git a/client/resources/hardnested_tables/bitflip_1_02a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_02a_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..18c04fa4739a7f9220c05a5b4791308e8a916bcb GIT binary patch literal 6158 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_02a_states.bin.z b/client/resources/hardnested_tables/bitflip_1_02a_states.bin.z deleted file mode 100644 index 12829c1bf19af0970111dd6c2330bcb8160b6fac..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 30656 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 M?f#EnaeI9M03Fvl^8f$< diff --git a/client/resources/hardnested_tables/bitflip_1_02e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_02e_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..2ecb621b35216213e87ace8d2da09f65d36e9910 GIT binary patch literal 2012 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 R`2S<MN^mPD)9pq38~`vijQIcn literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_02e_states.bin.z b/client/resources/hardnested_tables/bitflip_1_02e_states.bin.z deleted file mode 100644 index 44fb65c0d6140c3c3d56721609a07fc07dc74799..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14873 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 diff --git a/client/resources/hardnested_tables/bitflip_1_032_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_032_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..083f1f0a58e4f2902e760bbeb89947f979a759e5 GIT binary patch literal 3614 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 SFsA-b>`9S_PR_3!@_Yb>2yrO@ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_032_states.bin.z b/client/resources/hardnested_tables/bitflip_1_032_states.bin.z deleted file mode 100644 index a8350cc171f42916d6270422c612147e7e81a9d9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27648 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 diff --git a/client/resources/hardnested_tables/bitflip_1_036_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_036_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7fa414bd8b7405f400b7b4a1ef837582843f6607 GIT binary patch literal 1975 zcmZ>Y%CIzaj8qGbtd(PkW>D|0|9e%s@n++^)ACKytrI#W7`PZ`bpCLVIMEOw#h`Wi z^#lI<3~1n)u$x<3n={9S6Pb%0*p$^A3>p$FTP{vqxNyQD6C<gN3yd8nC-5jp@Fkk0 zWMrfm^zyXLGGRzEN@3<;W1itFDJ3PzqwK7>td~KeXC}iT#s+K#a(Q_;1!vhz7WP>- zbA`dI48~<X!j6j-s%FVuwd*fgp!r*5Rg&hvmZ@%DLG{}LgFhrKwRJko!{1mNrv1yC zzhlFjz86M5kz$%tLlTa9e4Bc7YO<P9!l{UZ2V5V<{d#fq;AB0q;MQq|Gaj9sE@oJ0 z^q42LBt_O@u53@|w8)hB*pdw=Cmf7F7WD9_VYe8cz>)pT9Va%6oH%lHQo$nonFn52 zuQ5tJ^y08&;xwL!=@Yv*y;<G7>9AUO(vE`DODFS0Bps`qX>Gi4@?w6DH?caAMuoDc zca=QaY$X<~?q_UlEF*hyj!nDYRDNR>n<IzXXBHeSe6o9G!K!MJmY@DD@l%gKmsk8T zzo1(9q@S9w-tkZR+-GdgJ((kSc$vM#<E7z~KG;Wp+3)#c^1%<H-|o*W*)RM>Z{DXj ze_3zZfBCcgkDTj=i68o1r@mjl=HJmjtL2^EtiEufCjZ(OTTcC?U(cPpuN?j<W`8F6 zV$xUbuY2yQ85}-a@U{O+Rr{~`%D>{APsYc7-k*H<;+=1+_1A2A@Ht*{n(gPEck5rB zXQ~s}G|w?&;?Ic%OOGt>jNh^_{I1|T5oZI*sllqL+{!u!QoRypvI%YU?3uFWV2HsX z*E0Kx&z16mm)q=XYZo6>XTKKbz3XTA%=tUwgyQ<1K3Ml$PIjKp>E@m^$%}VpyuA5S zOrHBqKi6ktoA#A8%qP++t>+s)_-b@UPgX9i@O669;m+<2Z&D9`;y<;|^o#m`xz-zr z4}bRQXPo*e{z2dQM)lFkc^fMwB~G(`p4ZOL`F%b^UHh7M`!+T|s<imwch0{0^M|h+ ze@%Z_?XN7)_3lgcn|CiB{gnHWem8#0J6n+t76pX`=fn&?Tlue=ceU2!+ivyymGkm1 z9lT-3tk3kT^OMew)JwZp>j!VPvP<>fv_~>zug~%`^EO|c+jHJ6T|V^Yg%^*lEi966 z9Qa(j{IbpQ=3Sp<kINdC8C4j)tM+^O?D&j#e#VFU<izw<rwjADrBxl5Nf&Q#PrW%k z`JT17_rjwOWA)jEui0qX-Pn|vU?|43a8hKL<F_l;>yB|7S_$ozo&5ZtP~eYKkwP0% z5`9#Ew9Je#_+U5rLP2-;nHMJyJ+|_wQaU#?<gxe_+b1U;#(mn`KFLaZ$NZ4Gg;vaq z_J}thtW;0hQIi&N<Y<4uC*e)&ANrkoP?(s;vng5Mu;b(hKDC%|G3(aX!rBX82zMo| z=@GMamepS9rxr9P{D!2Af6<rt+*;08cAqNzv-U2jb-tFeZ&J#UBgfSIo~f^_N#}fH zf3<r4hBxz44t{C*<@Hbfa_#e^5A%igsT!Pmw0=eR3)^$^zdXLDdRI++U+R$~c81^Y zTYj5w@l7uKY5bSZ>B+z2@6_b~uDibDxBH2I?Q6atocu8KaGTE2_Y(7e{JrjXzS!>Z z@|I72$1Dm?TNuC7ntnqw(e;xyXU9<;uN@&9!^HGwdLBM_DD`mHZ_O!3j*B^VUfRJY zW3jqh^Y_BZ-C{=F>RgYyJE!?fZ|qakR!uoILwi%9MK~LGTVm%!?hP}=?^YN~^sCq& zE0i=m+S$zY=(JeDX`a-XhLI^om7GTlx^*_CoIILZXxI8KGS#rBz}=hk($Qn;lOEZ~ z6dr7r43pTUyz%Ctmr0wMg?n}+oa}sfQQuIpGbwReXk(JWX`LA}d^Q;+bL(s}I2I{! z>SW6oTh6(CQ{J>G8{FJD^CEx1n}VLgh#lP$i<g{Un%GuoEIU_5R%d2p=jG*YsTb-c zRt3zT8_cuJr~i}1;!feFN2}F@)kG&NC9UeyTC*WBnJvw5g2j%4hZaf4B_vY2j7}Vl zWQ#bmDMCWEv+>Bmw1mRW8DUJDRa2%+7E?%^GIeUQ;S3*%H71Oq|6Y1d7EGBknPd9J z%Xb>~-1OfUDK4?<#EDdkL_d~euH6Egk~S+#@EGeXjS%PP)AZv!G@a=|Bs1rPhui`W zBW9)??Uam&^lnNuS}hr7^e8eWGE6PZ=fN7Cc0TS#Kgr~#hc@lW62}Y^dm_%H#t8<d zbDfq9Ic1QvW~Q;E#A>ZVuUH}L4Qa-j(~G;i#R_&9&Ww??h<J2za=YL(gVcx_8xEyu zwy7t^u)N!mWE5u1<E+@N6LDCgJcvz?Tf6nrO6yHJX^9eNQj*TRTl2W(oRMT<VZ?Dh zv6#R^lAc|U^>hknByY0Pc(=M+SmB+kTgY-3zc-sw3=`YDPTq~Mh&>hCR30>OYNWS} zw!zWVNM@}ANoP_IDo%INF|g2D^WbH;>%nP;sa9UolpaOQxGB1-P-2?voyVOA50)6E zrko1q*d^QDRjB54=)j|y6EE~>%4#mzF)PL=C?#RjsdE|+bY>Pd_pI3%ddz8#VX$PF z(TdYtg+>+$Q%<YKs!2S0=y{x7uq46fB%eW#B%h?KMM9e9!Q-3~M@o+DIM_Gyz?y`O SjXoRB{}(TEwFsC1s;B`s^`3A5 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_036_states.bin.z b/client/resources/hardnested_tables/bitflip_1_036_states.bin.z deleted file mode 100644 index c14426d0ba138f637ce6eca6c82e76a98b6087a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14397 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 Wv*1-nd;ggKXYY8jpYfQkw+#SNANphf diff --git a/client/resources/hardnested_tables/bitflip_1_038_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_038_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..15f739f1b73f21f7825dee226ce83821a7c83b31 GIT binary patch literal 1274 zcmZ>Y%CIzaj8qGbl&oCd#86-H=lcupRSg{rI9NCs7#TPguUNE5frEjefq|ic>jBSy z24s*paoMbtL?Z)V#%7*glgrAS6Pq%4BvLY$&6M!z5q3y8tn6!Y;!sM$EM_)Ismx_= z!pbZcB)Gf+Jm$?3X89C+)ZogO`Rl)EO$~k7)P9_)JyA3E2s2kiNJOZ5NAMM;qy8Ps zSbe;X@G&JFIV!{1>MYpVEMzDn+EozY$J%;mqc<~;ny|3I(WEc~i47Z$ByGG9G}p<q zX)@EQ0|u*ROj_}`>!J6KMGyMKxtd$~6TS%^ys{=_FB`Won_(D_kKw_jb%*#1#NUMU zv1&Y6HI3=Wj5ck-z$<ICSNJi_*x)B}Q2l_xj$o#TmF*3c?KkWnmT|ocvgP{PRj?}2 zo3mTAYhzOIfei@<3f5>IW_?o2zq6-a`NBKDCpL^-{dW$=IsUMgH~KY~uj!A(gAa0> ze_6@8?+`v><Md~`(?c1FV>}TXKQrxc+Nc__uvJB31OEaxEgnT5H-i~I+N@1SW^iw0 zGi>cz_)KK#p->*yMA1sogA#%rYd8)ZIh2$b(b%SHXc&=jSR!JLn`&pnfg=)=)+lp! zE#nrIXyb|SINEVc!bc*pO~=PDu}#C^u&{)Wx5UBLhz*OImRK;X7TU06qt*_u8QRTF z$vjCb4{TU1*fd9E)h@0zp3mYQ?PV4?DiQAJw@{dC<((;Sv}S1Rbz0f!6TGsUn<ufg zwMY3`!45VZH^Ug)rw2RxmNtEo?J5Xn<GgUB#31QtQesaGxA2O@Qi-|j9dWD$0S}xx zyEY^R3to|R?0DF9=z#^F;GqXHI@&KHB&x*seB+;3qA&DQeCDB7ajh5TE%X<x>1^2h z{K-SrCrJqj2aZXEmhau8*QS2uSO14k+8fJ6?Tc^4Z8-YYO5$BC_rjXK<zEVR%TIo1 zcf4WO^d~<i#U1)2roS`k&<nSRrp*#ZTU)zXFZhYEN$5YQ>@WDrZ+K&O8#hnFVRom4 z`419f^aVET?ujVZZ>&E0LHs}!f5+h~`UxME?}+bN`G@tw8V9>WOCnkgS`&1{g!vC9 zC3TA))Mgb^IJAtbV1~Car^BBIB8~r>l)nTsg&assN>oYMaKtCf;4lx5OUsdEDo2tw zY;;XX)NJewY;2Z@SS@mB4UZ3x*MXzmLPwbej&=pJ`uKPyCGtcVB<gqz9TpZj+RWOJ z*v#0J6yeOKawK8Kk%LVJ8zX$g#B>af86<WXCi3VQh8#6aOfonoakR@YVur!0HBN`b zMBBK(9ttREHSjtrVK5`$g%;PsgPJj_h60Hpho&5KZFDm95f<&{=4@;;Xi7MkFk@rW zku`}u5?zixOh=Y+DGPct99cC@G?*(ik>SvygDQsv8@t(fLc2w~4jq&*OpNGB*qA9{ z>LanS$FPl=O(!w2n@u62RVPqP%f~QGN3)xo<Iquwq=Ui2LJ0>JiwVux*maaKu|+4M zCn6&0Xrh|Lh9hDIiJd*kq7q3G5y5QSVmdq#Gd3p8Fbp|bzhI80)<Yj1i5W9Q4?S2c z+%RbeW24uGfQJ^!O-BvATP;Gv*>v1Q4K}(-Op{1#7By6DV>z-hDNMCsvPhpW$Ac9| zcIf!%xJevL<P(svNN!oC*wxu}#2})_>rk)+k88u4h-o}Z#~70Z61x%(NhI~LsTORM TFfge9SgsP>%E>r=R)qop49^4T literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_038_states.bin.z b/client/resources/hardnested_tables/bitflip_1_038_states.bin.z deleted file mode 100644 index ec0b39af2915cf4ec6246ed0a1bfa5d0e5ac339e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15087 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 diff --git a/client/resources/hardnested_tables/bitflip_1_03a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_03a_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..61ef022680304d5eff1863b388b5631e1da6bb29 GIT binary patch literal 2736 zcmZ>Y%CIzaj8qGb<hZf*1w+*0ny(kdLjwgJ1RMky90UYi16_|eOkiMOXwZKkwV(Z} zR)ba$0|Ns?00V=_0uTd%IgZWZWiZO%=`}GlN$fR|Vo13lDV33waabzDgyG}@Ba;h9 zF1DFm$Y7l8kdnEub1~DBWwVyA+;YM#*w<#6;!FMjMo/N5nuCiB`Bu+6mJ{zFk^ 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_03a_states.bin.z b/client/resources/hardnested_tables/bitflip_1_03a_states.bin.z deleted file mode 100644 index e301254b902d2d18ffd50a90b2116d892bf05835..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21014 zcmb=p_4aP`q*ogzt$1ksq|R>gN<{;cdD@E_`$V_iOxQ3nm-F?c`~RInB%?hvmwr<6 z{{O%J-}nE2|IE|d{=aD7y!G4r|HRtIKHFcuzy77>`~Uy7|CeY+|9iV_ZOzy4|2Mw= z|GD@6{HjAge}(`1`Rm`FzhD3VjtTx(^EdeW{q@hU*Zck~emcSa=k|5~|DAkT{L_B_ z{C(yB|9>`Ke*O5m`gQ;Gum0P9d)v4Ax_6V_JUjOKWl-6l^_unj=B@nwyng-1{6EtF zU!DI~zxV(1@^_ujUuXaPy#IgA-<toAr|Vp`U;pR&Z~y7%zfb=E`cJuh`sMxSuZREM zKjlyK=Kt}p=fA37|M~yl|DWHM|5tsU9sT$JLi_qU``G$__vZYo+dHqSuKM%;eZQW+ z+8^|`e)rQ;$N%{MzkcO^<*)Bw|6PB*e*gUc>Hqp||4+96+5O+W|NmOude1|r`UCg< z`9I^^|66~~KmMKi*+2X1`)c2y@BjZyTlIhWpWt=>-mCuKuJT{`*ZnV__r^~9RG<5O z|Ftjw&3@PJ`F*rLZ~NDO-gUpXFZ_S~SN+TT^(DV$tN(xhT>okQr}=OGhh5))C$IFg z{`TnEU*B*4yY|2Ef8&2^|97wYzvy`V(f>#OANl|2*#A>E>VIGVzkT9=(|<SrfBOH( z{?+<_8$a7$t3Mj|-}~Rj$Msw9|6lp--{kNA!~gvK7n%0A-1^)8@Bg)W>)-zu&8UC> zzt;Sp{N4W>|J9xO!~c8!U;Y0e=>Na|(trN{Pk(&skNmIu&;8%WPygT8Kc4?b`J}u< zOwr@}si)%C{|~ygvE)zv{rB<m|MNrt{eHy1^V9j-ci;d1Fa4Xp_b>An<A2+q&p&?Y z|NF1<vHzJF&iw!ScYoQN`p@<ZzxMn6(f9vfm;d*F#z*<j^>2R0|A9dHhClxIel0Hi zWN-Mk{*(EC=RfU#^Zzh2DE+Fx_W$I6<^})vuiVe|;=c3w|J_3WSL^=Y_w0Yw+vER| z|9AfH{?F`i|L1(RYyTtvYyVIG*Zzb5zyBY3h6DeT|8M@!c;Ww}`bYK8>OYzPJ9+=d z`-p$}A5S))mk+G#e>#8t(sTRg%$pv#s^;tcsQ<@{`)&VcR{#9$?{&9+-!z^7f1}GS z_2&Nnw6o^Zd+&cwPp@D4fB)9Hy0?F~uDAYQ`R~u_-E-$#?cW#j`?^(q{z|*(*VA{| zfB)(J{r}e2_C?q2ugv>j^xFRa@AKDl-`4M%lKX$}@A=0r*T1R%xBk=iTmQZ5&i(sm z|M$$-{nP5r|Lg1jvyA$m{(pPnKa;=rC;t=wFZ^HlzqI1N<Nu8Rot*zCy7&C`U2=E- z{kdcJJbUGj^!b1P|NeSj+y3jH=N5%=|CWdRTR-jZ)@}b*{`mj={L?@F+8_VVzi;)e ze)Z4&8Q=E*y#H(cte>y1{rRu)v;JFr&hP$z-Ldtr|0g})|Lte}^3yeYvj6{DzW@Bz z&;P6c8JGV5TQ&3N{~Fz=|F=H+zuoNL?YRFkwSVXT`JeGRKC1h_?9=+U-S%_!mVUCo z_CNan{ieUWum98D`fq>Ozwkfx{(t@}{ttRB-@o<$)BlVMa{d(O|MdU${=wh+d$02U zi+|!*sXwCj>u3BidxnPp+im~btopnETlte`^^6Vw^jFsJ-~P|k>(BW=^2z_y>pzMA zU;cml$@{;&fB&EU^8da6nUDX@k9uEk{^Q^Nulw0g-T(dn-v9hpyT1S5`+xu9x_kfc zKmT9#|Nig)Z|Z;7U)KUl-^{DO@&Eq6|EXX0|NX!B|NZ%hunoWcFZ=7?`p5JC${+kE z{y(t(Yk2+h{YS3-f1>~I`lX-uw|=+p75l&W|NCiwYQFrf-*5k~`eMD|_y4l)|2O_$ zTOV$Rly$8C$NuU6v-rvXoAt-+f8PEt?_g7Qd_Vim|Ei(?YxnP;|F{0l|J?uiM~?o> z|Ms7i;luyFZ~vpV{y+Pl;l+QekNX#Y`+r~Rzm)F3WKen2{T~9E89+cG?BDYhKjQPh zivMR8i2gtQa>~)K>%YtIp7ejl=X(3U{eO@D11bEUKmYIj`~RjtiU0m*{kvEDU;Sy^ zS$8k(|9abhFYSNvgG>VB1LmLRFZa&6zxnsq`S%51zyB)?7G_{zQ1~yr_TTGI_TT<9 z8pQp({jdJhe};w?|KiupH~IDF{C{SJf5-nT)&HyC{kQ+G`ag(?4TUq^bgr-aZx!!7 zx8BfJe`(0iNB@5-P0K$2-!k6a@_%~u-{-$?J};}hb3N*R`M>_p^$!29U;4lPy!PVy z>GkHFv;Uv{|HS_v0|SG=|MRu~tM~s8TwU|&{^S3;KaKxx{cra_f8DeB@BhE~|JCf@ zsi*&+*#G<wb1s91`^~@m-~F$zd-mm5&Ch%FD|P?3$4pN#pL#tc@9(qv<zM4x|F3^v zUw=L_?tg84UH0Go-+st@|9`sgfB34u`P<`e$wQ605b@{sPkYx#{~0c{{X2cuzCXVH z7pMd={y!U3f>=JaUt7;t_HWnE`+xlZJ%TwP!1`bA-}yiE8&3S%KS%9%-@mE<-@E=x zKKK9c7yEDWzro@2fBygD|3R?>vB{w7-}f@@(tkg`^gTYU{@?!R{qxKHw?8Ou`(5*P z@89^>o42vOH~nAp|L3i=|N6WCE&l$OzkmJzYk&Q(Pxb%L2sUFu?~lbl>ia+0$Gdm_ zzqaoGec9*PH$QDZ{(tea`fb<i?f%tGe;hLJ<)8i^_GkV-`(O9z{-^)SPygSn-}u)4 z$gyAcpYFf=KUeQ_o!|an^|$}j@0<4Nf7HkSi~H<f|9AL*z5D;wZ~IT&|MmaGzxtBj zpmJ2e{QqaEdW-n)N9Fg${}ap3tN-(N$ETC?|1|FUcmCz3+&|NA|F6&fdCZ=H;r{0R z=dYJuci;N|{B^rq{0wfF|GU48|7icY{>jhze@@2#vETBK|L?!<U(;p&-<PjHr5|1Q z_G|t6*UwJvsh>D2{oZH)`uV3{e-HY({>!iZ=buhLx&N#B|C!(JZ~bRf`oDgicvQXJ zx!?BQpYQ+Czx6tP`Mmml({%rr{hs#U{@I_;*ZvFF@2`J$YX7u<@zMW7{{Q?lGw=Mh zU-fTaZ#^FW{;m6e&HAN(!@vH$Zg;<4?)l&QZ~vVa{Pw@>zk2Ea^xyR-=V@mCU;lIe z$N2O=*T3z5{ri95*ZF_#AvJE&`~Sh`|E<ogm;C>x{#$*?@9>|e`eW-t{@(Zc`NaR< z*RSXImsR|;`St7Z_y2$Ve&7D`Yw^F-_w|4FE&W#i_wW6z|Fut-zq60E`~Ls${GD&@ z|L^(w)&K7NU;khK*!#c!_WSsK^;Lft+DE_rzx8<i{9o(8f9qfU|4F^l^Zif%-~2!E z?f>w<mAkKA-GBW1{~Mp<HGfWDRiF2N_uX$-?ce<oH~sJZfAarrzur%^{|(BO{{KRs z=3h5tIQr;*>S_DB|5NY$dV1`C^wj@$|9}5}TE8sf&;5V*Iad7dzaF3a^8fc={p<cS zGCceL>tDR}xBWlm8UDtr|0|#JPuKeYm#Tj|f7-wLqyG;A`4!~O)ffKb{%QSR`jP$5 z*Z#jh|L>`1VEBLj=lYB1>RAP%{-@9V|6TU){yMfFmwwhiJYT;~_y66knl=AYXa21J z|M_P98~cy-ANSimdH=`tsrLT;pY7-VfBZ-O`F|Ii|Hpq`e>VTg&#&5c#kco=`*C`0 z{M&EF|6bVt^8dMauKj~Q&fn~R-~VC$Z>s#p|DFFk|Ihq?_W!Z{;I^TAe?7ys|LbDw zEua1Je_fw^y1w?W`(*p1%_aYyo`1jm<Hxt(|F8Ye&hX&(xBcJi7yYVd05zjP_|eh- zH$cVp=KqW*{>#k$zcTm#(|P}|{QhU}{ptUmrpM3!pZVV*^MB+2`G4#g5=#EBzxQ+L z+Ijzz|JO4-sxN(1@Ba3`{NF$6um30i{=fC@{#!r8Kh{65KLyF~4Gll<8~nDPTz~hk z{qEKE5C6K~ma6}M>*4$2oqOl)|L*nb-{qybf2T*+zvch6fBE0}C-48s|EK<c#V2+K z1_z7(>mU5%U;603<kS3^|Gxj0pH^O1v2R&)fy@7V@4w%F)#rZu|Ki{BKkDEz0Yn@- z{r_6^f0uu&d4KM&Tle>$#?Sco|7DH-?ft*}FQnvPV7Pm9|MB(z)1SyQep&Uu&;I}F z?Y}PnXJGg@|L6Tb{0;w>*Pp!q=l=J9<&XY@3b~*2-#@R<x*h+<{?qgNrhoa0|0ch# zudV;j`B<L8VAKEd`S;&H|Le29KmY&#Ki@9aF-%xkpML)T>{sh=zm53&U&H?UzbXGj z|7QpP+kLzK`p@#yU-gau@3-GSb>4x0-MQeF8>7Jg&K>{EfBmxmY5&>&Mg70|KR~U5 z<Nwk@ZN8)bkNiLL|4IIz$@@RrPx~|dntE;A|H6IKtm;du;<6e)nXmgF^nd54^VfHM z4ga_CslC1V)#h{8pBDFhzh3`q=idLz-^E)^uiW?N?c4dg>hJzPxxeqv_AB-4|J=Uv zf9LD{#n<iiuh#E#l{<gG?Emi{w|4*gzx(<6>stTy-n;+bfBWL){qL{)PyhLEpUV8y zpZ8z?|Gu;A&))0yrT_o_y7ke1J^!@d_n)7?^7;1b|2yBGU$b}rw?E(4-oNkt+x>by zsEPM0|6_gMhX4KF_b>WY@BOVl_HXr;|A+srSN*^C{r`2^pjODj|0m=B^#4u&Gui%U z{?__WkNRIf-oN$n{5Sje{CK*3-SxixbJrWLd;YB6>*@cjoAsZ6E_dI1?b!eCb=w60 z*H8cd{3ocP^{+nr=l+Oq^<RF*|5Km(zwT`K^i%)0zxwZf^8e=lNw@32#J~Bp_J8-> z|5301`>fB8{XaeK|Cgw`d4KnZod5c9|Jtvo|E_rpYUE`<|DU|}|K$JuQvY*J|4n~h zzx40b>-Xnd|9^A#f5iX%zxCX&|9`(#zx3JpsGs2<|F8Y^zT?OL?QiRU)-!0VuJ4*! zf8(F_*3;_spV+em|NhZ`45~kG&)Y9^^`CwG?+kke3E%(nOY4vRKl6X$^ZHNf^&kIV z_;vsH`-iXJ|DC<!>Git*yDxtKue|>M*MIe8|3ClR|NVdUtol9w-~au;Y+W^|O?S%v z*uU-n%a8st|MhSG_xi5e|G)j;{(t}9|IwH0@BN1~n7eELrQ7~qfA#zS<lg#k^<O^A zPg!5{^tkT*pZe$iEB;^casRh-|Lw~DUw-k?{`dc5_x^9+`|*DFKk4NE_jmm2|C|4J z_pi<WpF-i{bM+g~*O&h*&iUzH|G)jO`al1F-~O`;bl&~=*zsGv=hgc6@875Xm;YUV z`@eMI#{aYb)-y8v*}wSj{;;>O{?2=iztPqI4FAvm-&_9?3_*F7fgxcFv_WSu;h+AF z|IV6!XHWFK^W&fK&+Aj`^S}0Q`qvC;);0WipYc0>QvKb}`**FbfB2cb$NpD8xV;B4 zC_wLj<@0zso3DRM@4w#s@8dN{;RBNVIp6TJ{qoaW{+-WN`p>M;^lv-398);=XaBwb zlDGeF{;$pOasOgayZC7R&;Ovp8KjMYVS&x%j_0?&#y`(q`B{D0^QBX?;{VjgANf>Q z=lkmS^Vb^B|L3g#Ut|CKj$Z%osMr5fuh)N@^?yb9|Fu8Qmp;8*|HAqIe!KNO|6>2$ zRmuBj4(dHKGcY*(sbBlIa`)74_E}T?|5g9luUfxs|F`?k|DV13=kwqBfA`-z7Qge) z{6FgdVXZO-hNl|4|3_#2U-SKc_5Y>3Kkc9Vs(inB_nu`%ug(8kul;}P&;RQGzpKxE z`t|<z=jhk}w;ul=@k{^vUvOvs>m^X566B!<xkvXOU$>t+x9}f-gWcEoynmH{P|CgY zn*U2Qm({QRZ~lKaC{M~WG^BmD-}<)xoBYr2|Bc|1@AsXz@9m}kGcbJqpZst4`Nf}~ zFYd|z|NqakKmR^|E&jcch2hJp|EFKBH~Lln|GhY<)T=%F|LZMK<6QW^_<#0>eV^^O zey!j0wf<B6v-%7F|JZ*7)t&u+&;Mh0_}>k#(N5m~p<e&EUgxL&QT1Tu6<2;PKJ|X% zpQZ0}-~Ye-xyXC!`hU@{|5xO_;=KG`KK|dI$wA-euU9=?|NmNSpZ9b7dcFC7eow0Z z`6>J5|NOP{<E!i6zD~Wq|Jl6%vG4zUpMO8||K8g_LBk{GAE(y;{{QD$@BS-)?f2h4 z_W#<irSHzy{=4|M{_U^+J74*?KHq=m*ZKedK9@%Sp0AgB`~TN}m!E$ATliJ}_x%5> z|E&G?f71NT`~Umf7yn)V^#0lZr@QO>uKmCHzx1j6-v3`${s$G@NB+BY{NMP$r~Z@r z|FFlOx2|*FZg0Q+{Ld(@e>c<r|F8S|`INuye@nkP)BkHu{l7Z3e(l<Nt$+W27F+(m z?DgmW^X+|q?`QqfpY=EY-}Zm2)Bf!;{crE}Z~kBL+y55-Pr82p*Zvzn*Vq2L|I$eQ z{jL4~UcN7W`{)0>|2}u?_s6CEvyb=wS-<wj|FymUw_Ue)kN>a!-~QIG>DM0ByZ?;; z{m6g0_sT#0U;khGzdhmqyRHAd*8X2V^}p!<`@;Y0Pwc<)>v%G_TmvN@h9e8!{F=`A zD*t~y!<YYxzy9m~FZ}TD{*(NF{Wkw6+k;#AfA&vdw>|Zn|4DrL|NZY?+5h?{&%Xb^ zP1v8s`@ipp)x8V`VweB^{`dCqlwbdrzrXwc|DQ82zyAF6`fa`Yzw^KA?|y&iRr~+n z-pfnB|H)tZSAO~L{<Ck3%XV+A|M&Xi<9eOH)2sjGul%<EZdGPI*j)?^4*VbAe|$av z)VUk~*&XKp(l`HaQ}_2JC{>;RlMhN&&!_y~^6%!q|Ig|_g9fmm-4F+{bM>YFv>ATc z|NpZw?92K;_4=RW^Zvd6^2Zt4Yx%Q3_uKx@>#L{Mzxwklyz=b(;`{G^zJLAN{{DHp z?WZ5_1GTC@`v1QOa|i<i!>JAV|Lb4>zi#9EPZa7rh7<oy0_uPNXW(f1`~S&*P|;ZW z`TxtLf6xCj3jBXuKXL!h{pbIQ-~A{2pZ#zBt~Iasul%@w?|<$1pQqNx|GWSE)4!va zh5V)m{kG57uiy7?<?r{`qjl&1Ik|t|zn|Cn>gS*ScIfl>IM2KFyLw{(*WLdA)i_oE zT)lodc<Auo%HP5N&HwfOKk+#J?@#&jpoaO|y)VDI|6F`e{_g+X|Nq~syZoB}_x_OI z+tdE<zgGYHz5TAgr|#76+Vkpq^7`$@|DXT+XLtMlAOHW`7yj?Rw*OK6v;QYP+y9)r z|3`hu-}tP*{+hqlxBvP2di|C8e^>uW-=B5!yVvu`qR;->=i~ie-d}qE?_1DV;QFWk zr%kF~`RD%IY199EuPu&VRlo9|dHDH#&-Ty1@Be!7_FMDcpZ{M|pZ9b9_wN7eFaPiV zR}UJ+{QgTn^XK)e|6l%k{<Hr5`T8xvv;W#x{qy}d`LC?!fB(0~Z?Db!w{+Uy$<hCV zey+dsE&k9i`;YdI@BcFY<^L!Ak3Sf$U-CCR>(BL5|J`K&zo~!!UnBnKsqO!+|I&Y5 zf71ThpZn*2+fTh;&-MS`|7+)sUiaVL_<!&J=YQ?r|F8V7ANKG5um3Av{|5~)e)<oB z6F>jY{xskH#s8?E|9AYd-}VR8t9<nTiT$2GbL|-yMEu#E^E31B^i6$U$Nzu-_iyXR z|6xz}pa1`_?&tiUb$|Ak{Aa!;`TzLq_1nJuum0<P9aNUq*ZyBG`y1T&Trd3J+Ux(c zx%I!g|IhfJeEvVE5emW#PwGEilkc7Uzccgy<o!S8AKAaDe=N@+aPj}<fBygE4}AD# z|N77V_b>jt|J?a~y50Y*Ge6?1Ki$9kul4+X9fSY%HvcF5J^l|;2;cZQKkeH8)_CYh zp*^0F!r*`2uP58B|8EiRJ=fmAR)3+xPwDIREC0v*e4c&xm-hb~pXSfs{p`>3rNw^V zklLH6#J4x=uY8^#e}4aNP+Rl<`St!=^S%CUJ^w#i>i_3o2|NGS{`0ZjzxUt#-~Z0s z`kj5g{{FAOd$-h={5}5f`Tte_#r{9%`2D})zxJyC;lKZUHv1$0tzP%%b-Vww{)zt= z{4e~!Tk3!Ef64z({QpnywO`l&|5{)DrvINFO~1b@&iY^3zGFM)&4!e`|Ia?3FZVS{ z`v3jkH{JgHkNr3Q`TzDm-ar4ZefmG?=KqV&>wnG<`S;s2K341h{Z;?vRsWv{wcjt+ zZ#=#IpMKfD?6v=m_wFnG8(;PJa`w;4Z~udAuOI)v?VA4g&D;Lpzx8AN-2eSs|M~y3 z&-%0d>W}z&|EGQnkFT$P_h+;D|Kz{>zy8-<^Z$PK|EaU=v!BKv{lERye&t91?{5Q- z9<KSndHWyr|IZ(Mp1<u{eeBP`@AZoHpY^Mf%Kzj~fObFgtN&Dn{H}ld{>0gO28O@! zLI3OC|J|<v8g}S`3_HyKcVF%Q?X~ZIc|VQ*zv`drtNri)zF+!%X8(=)oPVAxf1khZ z^!5JUf8WcpzyF<I_38fgfA9Uh?*9LLJMDjV=>Pfa9oOIfUwHlg&bRT^f1X}jU-nzJ z`fvB|`Wye3IQ;x(pZq_6^ZrG@_HTWC-|OeM|F@Frd+Ps9|2Y3~{r7GE-DCcW+y2x3 zr~Xg<pSbxy(1>I5|9H@d<7N1Wqy16vh-3Qy`#V6b(z|(%-~Vs^pYQh9`|JNrZ~s^A z|670a|0nrV>HjzXe;N;Joxc1p^Vi<*U;Ll`Kg!P`BaZD8_s1S*crrTVI6CAwI^+n- z`=djSqeG6PLyn_Ej-x}4!*a;+_5U}z|4;t6{PAb`+OP59byxnzpSb_0d)^J%|I$zX z*h7XN<?7|G{)_)@UG!O=!Qub(EBo(P|JO&KUH)ITdiTGepV#)Us_*>uzWRUl%i3qk z-{fc42fh0Dd27Jm^7a4s-n~`(fBC#W-?#q%JsGspW82ODQCI&z&%W^bTm7A{<$1ra z%hm7vy83S2@woqw{>gu{*9_SA_xz3jx8JN^@h|`FukAtm{_fv)L;msn|EYhT|G2;R z?SH}W|E~T2yTFqfM|=NY-S+?1jsMqwr2jv@<^R$8EAfA?-v8;p@hhm~e)GS1-k<aT z>bFN<`1}9O|Ji~6gZ}Q%`Mv*M{{Q%I`~S3my7~W2{m<~9^*`%>*}MPmpZs6^zw-YR zKkL8E|LFfO@d;=?=;z1xkTJ{q@872r7_(gQ_y6`|``ys{Vc>p!$JGCpTK}#`|2_Jj z;mEcBPfa2V|GxfveBBdJf71Vd^8byX>CprKZ>RtNzWu-I&+E4TSMUC{-l{%f-Tdu0 z|7Z8tqYPhu=>7Bj<)mBR-_-qmUVh|P^?w$yEes3{C;q#v{=e%_|KECsp6UO$L540@ z{h$6?z1Qyl=l={H|3B_OG5`Ply#Jt8Ads<*gqUT|r!ILE{#_e1bg7>;-Tz<x+yB3I ze*3+5`~Pph&VS#3<?ri%^)>(J+t;gw{>ym&|H|t6FW=mA{>DfDpS1s{{ii?v|2975 zXJBaP_;>$L{8!NYOZ5N!-v9c`e78R6_;-KWulHa7-+J@^;$Q!t{xGL9^c?x}ck=Il z;mc1y`fmU3|I}Uo|Ng&MpXvN>{rv3x_p5*VzusK-_j~n!@4NN;??r)T<d0vfhtED6 zB>k!W^Q+$NpP<8fETcG=_dm)1_x|@EY0&sFL&Kl*-$7%O`rqV#ezte~zg^(}$*=qO z?f>8Mk)J{0=KtS6YyX{p{q^J9|MTyI=3qa4dB6JKp5K+;&zb9@|J$EBzt<i#3V&<L z|99W+SNw}z^)L0=|L@PYUlP6nnj!vJ|Iwb|k-gyc|8Af`v-E%Lf6xCH{?E?v;s1^Q zZ|WJo?Ef+U$NZo3|MY@Z)EuAm|I)7|=U>~OyB_qs-|xJ)Zot1|U*lidhyVK-wf)~I z`)z-oKVMdL;peWJb07cx^0(jq{r{D}-p`HBPv5`yZ}9i^zwLispZI^;ulG~yXaBM< z|6Bg<*Yl;n&Tl{Q_~-3+_44u6*Z<dl|MNBK>HVjFU;Hn(uKM-;@2{6e_wP@CvRUVU z_22(?*ZcN=|F!(x{`h$7f6u=jEc*ZZ&&;a2>c95i|IXa{{rbHB`@a6J&iw!4SO4Gh z|3m-lf@gg{{tFNJpMUb-`qlOQ-|BDt-}+?#*T45mpI-j|$o>l`$3X`!*M9Sl`%_r^ zXM5S7$$zJd@Bee{>#dL5Kbs!=dgqV-%0KbCzw_<>e_3(;){p=9&YL~@|Nhf|oB#Gt z;!pk0*ZnVk`d`1@|I`1Me7e8>=c}Nf|HJ+wFTdIMwSMF0`0T&)Uw&Qt`v0ZZ^W#pR z-~502tDScLwr{Q5Ie+Wl|JRPyzx`9c=4<_@|ACM9uRZqv)1UQQ_W%0zyZHJ1y+7q& z|6lt*Kk@JXxZmrq{E5{5uk~+#=zm$k|NpoB)&I{APMi%AQ+n-rgX@3)2d$x6^Z#Z1 z=l!5QF=&Y0;>bVVzyFwjUcdW){qA4=JO9Vu_<H=}{r_xWoeT^N2O@mF_glrj`@K)M z{{PSF^-JE>|F3`h_x*|g`+w*A+Fh^P|NYzgz5gSkpP!er|3`9){`!~wllXsjh;0Ut zLCJ;<zxF@)S-<p4{>)n!_P;&7fBUa~v;Uj_-vA9Y3jDvD{@?oluJE7B&#jOD^-ts9 z`(Lm;o&V=z{TGn0AjUP+{&`#fZHj%&)_?VL{{COQ9%c^%!zcT5_0#?{3K;*-{crzE zo<ZRJf63y%^Z&*(cKnx>{lEGD{vZ1P=Y!U_d|CH@`}hApKTePS_v>f;->dO||JUAo zZy$fz_|D6qtpCr!$#05%{QoO|zrX(ZH9q)XjO7#me`{awuP^er$xY@G$M3;4UjqLH z{dx2GZ-4xzkpFu=#lN?YwY%^CZ~f={wR3#`+r`Jf{U7ux|Lni|we_q1?>+bb`~UOX z?<dQqjxKL}PtNj2_G$Y+t22mn*H72{@A+T0=3n@#f4}Sg|N2qC`qO>!`V&*@-xYKJ z_<!!dTg2b}w*PIW{i|R9|HUtPhJ=6X-~Zp53|S;p`l!D0*Z1nz|J~8+P5k4R41fRo z{tb2bFIV+1e#(#d+@Ie~|6k7rEg<s$6aPn^;n%tUCL8{p{}m6KB0p09qaHLh|4;t+ z{J;DS;H7NF|0nPN=>P9n{qaxr-Trbl|2jTZ>-?|LE&ccO%buQ~r>p;8`(;0``pr-O z+o$J48Z{|D-{0SLy71+n>F1wLu8;quA77{Y_y5|jpR?buuf6;8{O9NKci;ZG^7HG` zTl=s5toHtTGiv{pzdO&{@A|(!_W#7){}z7xGd=qM&-?ZJ^0NP5UYhg!{oVg2^Zq6O z|6D(H|J8r-pNhYI|Nk<5-T$qBcK@ue{CNK2FZ<v7dp|FK`F|dy3i)xL<D)&eee&df zR?WU^UtfHC{`{L|y!TQ2-*5ikUtb^hbLDgU<DH*B*)RQ6zxB=ftzZ3*{<p8!dtM*a z`Tzf)Ya9PZpZ)K;`TyDf*XpmHiQoPVdCL1&^nY>d|69-hw~l@GIQI8-`@gm8=KjC` zc|K?s;q;mR&$BiEuNVElf9uEl-+n!R@%sOh|L)QMFGc-%ukk-S{?E%2&8h!4f(F3F z-rV2&Eq>+K|64!pfAqil(SQD*)1&@ZtO1v>sgLJZpRT`D&;I`Z=dk+U`zO>Z{8To( zc>cf9KhSK)+n>(^-~QjaU)lUWH^Y~D&%eL-eqA33nn;j<OeEO<-S7MFTKuj5`+fd@ z|K~6L{{NM#|GN)@R;$<s{JZ!6`@j0&>w7^{;Idyo|NC$E|2k;BWBUKw|96M|1WBJS z`+fM||8M{G7yo|?QuYrKw)<~=i(mczzx4k%|2e+x|Iz<z_5NSh|5dmBQ?LKHf7-eK z>-PT7-11}o-}>!Oo-cm?|My?eJb3rc|L-k+f#<;?ZOVFZoAUn8_mAqIfCqk!|DC-5 z??1z%jn@BcPyEwg`Ro1fzklESPyV0(yIxuETm9z$`V0;K%eVZ$zUnV{4(fX6f7z}7 z|6luY9evF&q@>>X$=?0w|Eksdf5<o70Ij3bURS^O|Bb1Cj?el3`(^zb`){C9{YU-p zH~;^A+pqF}*Yo<)@c*ID`Okd)Z1%hU?MKvksC^Uv+r$R_o_BZs|37^Z_3!6HY++zv z_&Go0Yy9;88~^h+eEf9(+yBY`*%@5E{xABw<l^)CfAS0;?f;4Y{QUp+Tkt9+h_;^7 zCP_QX{$BqX_3BUe%Sz3qr^Nr?7vC6D{qOuwt5ZMiZzD~K?f+aq=RfnW{nP%{*TzZy z-Th~`=N-_3o_f%Fo`xUw?|$F^{kK2r>E!=%|MO4If4Tne_n-B}pv8Xa|JQH-7_RqU z{r^csHRWJ=>fQfR$Qt?Qr@#O6&i!fsWS7eBl_bx8AA5BF+<#4>|LhHBU$D-7XZ|hT z@cH`L|Ia|{ZK3sX!>y0`um2yZXLJFz@o$zxrwNPyy<h%+BcwWJ`0@Xb{XbCbKmx1b z;^+O_qgQ@DzPwx}-tOoBlmF}NYIm{DH@@>c`~BPhQS-N&R;>T|{P+3mX20uiewE+* zzP_U7@Ah}~yVljfmZ#<(kw5ysddmNwR$hO$m;L?!&LaNwwEedK<W2u?-uv(K$M3sk zmVfejUVr3&;y?5M-zWc{_FrBTG9RI6cJ2Sf|7HK*m(2WL{Ojuf+t2=g-a6&~^{)T& zrGFy-v;W#3_h<dK|E~Y8{dfQNfAMWlIohz}=lttG4*%Sx|L?=!PunAke?NYIe5(Jy zC;V5w*85G*eZ2q9zyHyv&Hphn{FwK*cHg?)cB}r@?*lD%GMM$x-s^wY|C#@l&x01Q zKKj4#YyFGw@mKag`SJhXkKnqSpR(8guZ}ejfA+Wgip}SF^}l|{#O<Gcs($J9|FwGi zeg3Vr|9O7P|8-xdul)VLc<+T@p9}B(kDT@YS^dSh|5jiBeBPS#bNlV>fBqXjpTGUz z{2#yn8i)Ve`sM$vU(0`;e}2BCdfT=C+41Xb|5fFK7RhP9-M{Mn{%=43eYSZ2Kkqwe z?a}t%_A7te-~R9Y&Byb1{n`J$|E(VH-}XQD{{Q|}|KI%AgiK0Q|DRv=Ek5`6=^vo^ zg~hk`p9-&g^J(#`|6!-p>p!huU;l6G;m^-6UYFnh|9SbX`^&D&f7P%4|M<J^*8i{H z{}229UfaI(|I1H1|G)o#Cinl(=WEy3zxsFOfBf<HfB)aE`~T_h<=6awZ)SlyJ-@Hi z@7-P>^H=@9u;qW<|L6bp=ltLQ>iq4s>;Bp9`+t1if3K7KL;e>3zW;XH`hSJb_pkUF z|7-rA?N{s9|ADL>{Ip)Hes>?EhS-0-=zkx7uYYn)-~8YGRe!$!ynkQ+zwyyW|G)ir zbNE}o=U<lh|NYnNOaAgR82rEf{r|0vh?Uk~@^AiJe*N?Lv;PC1gIDB$`&Azc{&jzj zKXL!(eS!Zc<LhtD|DXPcnc+wMx%%F+f7%TfV3UkrjSoye_n*7|Uvciw_v?Hge%3#I z=Kt^c=l_9vq22$#D%L;O*NXr7ckcg}pp}gl|J5J;v_H4s?7zzS_3<BP-u}1sczoX9 ztnKqZy8pjef9n0)Ka9`iH~qf}TFkiqPsd--#4Tw0-uz#0{p0&T?5qATZ}?aK_Sb2{ z>-ACprKA77er-SNkKpX3pY`kO?0ft3_y5oT3tD@-{r}$o!dF3yv_W%C>i@*`p?e4Z z@;m%{{^E~+?r;6?f0p0-{y%ck|L0;d_W#rWxj*^Q{}((rzxa3k*K_*0U;oJe{?9D% zf3@&`>#YC(Up%*u{x5&~|N7kjSI_P5`fvR|7@FZ(&irq?`G4l0*YEz{jQz{~-u~9L zAHTt~@^8QX*&818eZF4q>-~3rW!GQ$Z~OMY&p+@Q1ox@-3=9m1e%7;ouh$U$e_o^h z@vr<(_OWt>M?ah1ZBqVKAN^|o_5azM|GR&;e`=3dIuZA8`@P@lpW<^*{Qp|~_PhJZ z|5g9rPx$!$ul-v{M~8voh2B5gy1(|y|2Y<f|1JOXGk)*Y`Ts!u)-(T~)iZpt|Lgtl z+5dgt_k$;b8BYAKvHu@@`(M)kiT3}6ztnSooFDW5_3z*Q68{+*CjQ<3`%j(y`}C^X zn&1DQZ}0!c+`#kKy87S!kovoM$6tYGnwNiB|08}jXr6iZx&6`W>SzA^|M%zGFD#(# z6`+<If5Q*|BVYGly#D{>|C#?C|9}2}1hfXi{+s=8d4|9G|J47b|5LAjJpWJc|BX-f zZ?Sv%`B(qvtyg|7zWh0ed&>U8ztex6pIX1~+S>h}`gQ;R+__S&WS`#r;ywHST|WQz zuYKwNOFPeeewv^EA2g)l|F87P{-yt_pWa{g?|kh4xx4>WuKf2|_fy5cZNKjyzkcuQ z|NFM}d&7Q~SK9yjf46VmzuNtEyUu+7uKH8w^#8d3`_FHE{C+QZiN*E4|CO~H?)<l_ zUpDW4-2d~n^=WVaZhgK#|L?!JTlTxaO}wl1-T#YQ{?_mLFM9QV^rru>U)^8)7d-!* zU;Dp2_UD)VKluOp|9eyq-aT}(e)ZqU;`K4||JTa?Px=4!sQ&)ay=8yi*7O$In*R^h z`X7G!-|X}Dwy(CD{oDV2bMKG;yZ_jq2Q{=l{f|EV|LCUwi_ic6WWVyy_w0SULO^|7 zq=i7!^Z&-b`Exz$e|lBz>tFl7{91nf)8{w;msYLo|DU@y{#|-5sF4?M{a-%&@BBaY zSAOKL{<z=fzxLbp`~LmA^D{mF-|=7dum49!{NI25pSEfJwNv}M{^wt<cR%uffA0U& z|Ct>k{|2x5bNE~Q%2>OflkEe#Up%ju1g)99|LxDy72p2<yygCz@j%9}{~CX_|D{6~ z1^w*)-+t}?y?Xxm`uF!;boYPzeZP0#fBDM4>%afs{ChrVx61v?e;)s>fB)aS^e(7P z7yi%i+y1}%wXf~J2$BuH^AEhT@$LWnv;KYl2Oe|z5&!11{p*|cYxn(^&;GOd|Kj=o z7t}n}w$J+sT9wWJ)4liq*7ASfH~yaQ*8l(JfAequ_P_1@ANS?H#P9#duGYV)e|`Td zY^Rt0fBDjX-L?OAf1aOw+WyyXd(hgyPuu_7H+a11ljq;`-+R@+>iT;9-~Vs?zy0ri zNB7_RZ~k*LJoqpB_W#x_cz?(J<^5Zq`+wg5lm7>KzY4=*Sc9(dOZ~yW@?J0R_vAb} z_I>`z{p<czudbi+RUX=`J5uj{`~Rdrujl>08vB=fzI_5(FTUvKdF%h59;|%7{&(E` zul?Jhg%1M*!-@YrGyhx0F8f-aC;U^MK@hZv5wymr@Y(;b|IXj|2kp-<{r~pA{=d`z z)Bkt=hYS%iJe}!g1KqD;Z;05h^8Ism(0zN19V_~~|82hh$9?aw{Im6-RlCmezy5!% zO#Sly(|ff-#8}Fs|JiTP-(I`rKWUp+?g#x&-~0dmZ~fd8{}r#FubzMRsp-_{{Xg$# z{=NR}|NY<h?-x(IUVnf7eb|`c&iDVPX8pgtcKSDHJB{Isz<;^@|5m=~`CQNNW##{( z&*vXsM=tm3{eCX@HvF6YcRzgdipgxyLif%8PsIP>2bX+zp6Av7zxjimVa9*?&-ZKP z=Gx1r*8Kke-2D0X`RnK3?pI}45dJsbuYT&q{lDw?gG#;k+5gsGuX|(vZT^q_KkOO4 z%>BP|?f=JX|4;sJ{J;6%b8u+?sDD%c&7R>`{2%{6=l}TsJ7)h=`hW7tdQH2TQjSZ{ z$%oeUKh>|zul_%O-t=hL7QA5p8Fl}Ee0n~A%C7%4x{?2WZ+}-5WA*=M@y{psr~f%U zJ>L6&efHl!w|-~G>+k+&`u)%Qs^|Mbn=anpJvaYf?Y=rW{ol9$KR3_+v-I8npLfmv zZNH{pTL12I|GWR$*Xy6Gt6yRJ|LL{*f8Xb?zkTa}iRSHp>%Y&}oBzIl_5U0H|HMDd z-}-<0pE-a3*8iIMx?cBx-oN;`KgC=Ao&UF9`~Qo->;1t6xB5SGC)mR6?NamCm)h?7 z`*UaQx$8k6&)fa}|NZs+@VZw&&lf)0105yI&ixzw@&Ebxr+>~5d-UIaf9ae5VV~<S zzN!Db|7*PI=j&^K{tx{0|IPjz-{k*_@BVk~|Iu^xZ$JO{oBp%n`oFLK_4Biz|Ns6c z{nfwUUyVNh{~2}afA-P;`MH0#@BL>9T0H;%;<f!-#Qs~K`hQEj-YVAXY5ki2+yCun z{awEPZ+O<<`n7-7|M)-e$A9O4ORw3>WrNB!aGPC$E%o|-9?&8^<^})xFaFQ}+28#A zzgj(H!_H06pxcB0OKn~R-m6#mzw7t^((wNmzyG)R@%Q=0NAiF7{^tdo!oa}LuyMw_ z```2BmtFa8U;F;w|L5s`>(5V*&;M`zss7&o*ZcUxU;Y06ey-l$=k?xi|6AOx&&iv= z`S#kspX2-G|0loPf9G?(_tyV!uX+E5=2C{Lj{5%i{~=|^{@FA9x>CRM=kt%R{r`hn zWT2J=!!P^gf0lne{|&KZ7vhvn1^-rmj%U2^|L61mt&8fP{;!_+zu<HIa!?x!Jc#(< zf9~f0bL;P}{uBKC`u<bdb@PAMov)9N|Npb@+s;_I?^~~7%uxii)&Bk;{eS<n%unkf zwlFX_{9E4m>-K+k2Z1;L)&KJ|JovwM_J4oz&-VZM8-B?D@BVZ4f9<#ZFTTzHVgKU) z<<!{!zP<n7{*C{6D!lIRr~h`-zw6JNR<LWzt^bwPKR<u<2h9s)!S@pV_#LxN9J)m$ z_06yExBso5uUTFAuX^X>dS9^e`M*G0U)<&XzdHZFV&DJg<yr52*V~_x|N8I6zx#jx zfB!Z+uKvdVrMLE*{{Fx9Uv&Ndi*Li9{k!}$biZ8n-nl>RzkmOJ^WU@jU;BCg)^GVI z`rr7!`@H`r=l?nSfAOpTL9gq*ZrbmBx<0;s>AyGePwjt)p57O3b$-(9`l#xEMPC2) z{=Un9KELQ|z3%_*Q~r2A{hzme&!70LxwnJ<dVk%&v+A4a|G$6gqU85p{Z~`}@A>cI z)Af7f|J2X@SO4YzZ;RRg_Fk{|JiUM2KmY6Y=l@sN|64p4G^6r4|I_?8?>&CiXW8Ea zZGqnUX8xUD(@)hu-S%JT+W*e~lK-#mzgYihKWINM2&=x`AM|*C*gx}EKhpnK|9Ag+ zDtzD9{nzRv|9k&4eEz@e-v5<<{ssT|{(pPjw8;89eShCWRyLmhUBB_u|7-u<WB;H3 zH~l{Z_RskrKl#6n)Bo$I{vW^kf8$gA|L6Y+|5yM2@ag+MoRHmA{;&5>DGjmuxBvV1 z^}YYMYyGeN_x=0n|7X5G{=f9M{DpHr?BnXUF8zQ1wf(MtptAJ!@A|hlz>UxPxj*g) z{@VWL&*k_($N$Jz{}cZYf$R$ZCvX3kG3SrJ&+qwv&i)tppZH(;KWO%8K4{dRq3!zr z$mjoS-N6$#`@j4QPd@hl*5v>1zUkNeOKtr5|MAaucp-e`+<%kJ|MdSrM+*P{1odzk zu#ObY{}dlJ|4ZfH<Dh|!#+Q|xtf%hp_~-ri`6>JO*Vp2I9-sFA&mGg}_PTS6HzBn* zbx3G$E}r-QPu0J>ptk1Uy1Lp`wZWf2%e624n17x9^xyZN(_j63`}O~w@9Ed>#aI9P zeeM1GrGFQ{w*O}TKm70ZANKAy{vZDxANY6wt>^Q%Km5PpfA-1!-+o^Ivj0c_kNH31 zul$hzeg21f{jdEwLw0^9_3!+>Pwju&v(Nv(W$VA!r}}sO=l(gn{-W^i$Mwx~pxw{g zkIyf@^*_7bJ?|eg!;AluetoZg|KAm~{Vn;-|0n+c9{vCF-|Xl8ywdCOTK9j2f7K8C zU;DmZfA9I4Bma^iJK4on{eSm$|MuwJ@Bd$!{D0rKde9i~{QG9V<5&OsU&C8<_h0|+ zf9G=l-+HXSy>9F6_cvb0-}!&|pE~QQ?f)fz*U$bddiDR>*#BXtw*S8__B;8{=lwnZ zW&ZEp{@4D|tNkxN#(%W`X#a8lj*t6qeT$d={a@<;oBuNqBaWKj5l7Hwo8JF7|GzKe z-t~X}-+JR$@vHt%&;5V>_uK!c|4siN0NF~d^<V$L|NrMN{uh4w4;pc_{C^&_{oTIj z&s!@t1^dw<$I&6j(ILmtA;-}n$I&6j(ILmtA;)1m<oG{5|EK@I^9P^X=dS&~>(k<Q z|DFCli~n-u-H-bU&;LV*AAfva@$LVu`x9sXXJGiXf62eU_kP!7%r0+_zWa6hsqOzl z|9W4kzyJHb_j_acjsI^z_Kvo`+F$+m{o8Bre%pV2vVZ;G`=C*m=iATzyT0n5eSCA= z_WzI9?MEEPVEyfv`1k)C{(ClldRu?&-~F_D*RS>2*Y{8T^!ESOqyHrS|IvSJfBgTu z-2eSMe(6_1ccJO${aL^5@AYH<_8+tVZNKcV{=dclUakLkuD)w6Xs_-0fBOp`*MIxJ z`)<>_|LOnl_xzgv>OW}9Y2EMtoBltwpK|_R`v24WPyIjr|MGv!U-fhT?EfME)BW84 z&7i%d{K}yDpcDP|kTJ{Ob@ldy#w_3d-*5WQGzzUB2JY88tod_3@Z<h_uk`=1D{T9x zzx-s^>-hKfWvc%TpZ~A>CI7qsFKF29-+jB^`}hCVKe_+i&-lAn>#zP~F8;gc?7#Tx zKbKJ!A>}`@_n&@cU;6jg_WPBu-Tw_gtij=*deq<RPwU_OXHMAjXFFsHCh+h682ijG zKj;5vclgu)-}T?0|7E}B!Dq05UH90?cD;(|{$25wprdvIch`LSpZ)*(`K|Zg@BO>| zdi}otOW(zR|Nr>+|35#CSAKH0{=Yo#@8a$DNw5Fk`ZfK}S@5>|eqGR*j?0(-&;G9x z|9@WN{;&VBpX#?{uVQuo@_*Zv`t|>>r~U7LSAVLW32Y|=14Dw!viI}veBW;sE4KfC z;s5nl{=WbJ{hzn=r~1D!zyIF5T^}`n>+AjZf5(GHr@%Wy?Wg^_4BvY#`1t<g>;H{E z^)pmm#T><%|4+64bN&72_dEV~|7T`+QonEh|CPD*8~>k}|DW^M{?;G<>;8ZJ`&YfE zp5efWfA`P7|6Cu3bl}AD`uMNU@1BpglK*h~*Z;t}cYihiYX7^w>`(dj|HnSR4;npj zVwj#d0ZyDp7UcZNobl`Se|d(#|5N|^|DW|Ac9zru#c%m9zRRE3|L$M?-K+Iy{{BC- z&c5&8KXb4~5OFMNSN)ZjMfbnw{``IZezj`p|KI<!-`BhU`+v7S`xAJ@aQ)lA$8TBH zfBW%~<P^RBz5N8xz&OYzhK7xhLCKb@|5?xf*IrtG`byis-1vWcuhwt*IUjz^gWd1@ zKd<jSWnWtN_tJOwkM-AKdAj~_|G&kcRn=hA7#Q9>&i}u8`JacYzW#sw=D&RHU(lo~ zSZ>1q!hf6p@Hfo(ng9F$#s3Tq75~o9c>Vv)e=dhV?_d0w|M&mVddNW!4=VogmrdNV F6aZn<fENG& diff --git a/client/resources/hardnested_tables/bitflip_1_03e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_03e_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7dd251575056ef45d9a285da96701d14f2424500 GIT binary patch literal 1515 zcmZ>Y%CIzaj8qGbj9FsG%V5;`|L@Jo%o`Zzii*05GBPj<FbFUSIx;W_UStpuU<kd+ z{eb5`12RZpU|=u-2@t~&nY2h?*+rAg4pZY`Q(L!&V-vSZ)t7oq`G2P4=e<?6nMXew z{dsfdm*inPH+G8;HtLOE_}yEMDWB}0^Tpz8^2LG&zvN`(FQiWMso`gRSikbggKrU= zHl<GAn|iXRR{2IS>qo9%JgW?5DE{QvS$);^{G(s@U;NV#*l+lzf8*cq&+$h8xKCBB zI@-)*uldfuaN^{vGm{_LE6WSdzw+sm;irA-&GH3*9=AXGef>o8o#ppz&#yRb7x?G; zH<{n_p8n6iQTM&|Xj`4*uldSz&gmq#i@&m&=lq$+X3f6BsbA!UU&L#Ciwoadef>q; z@|FMjpUvO%WBQ4|XEtja_jvwuKU4V2``*mD>-O0%Y<X%Go5fYWuhG8!XW#eV`b#To z{V&wIABp?&^!SUI{i6TdpYgB!J@5HjLp#PEyW&Z|CqI?z{+N8@{M1+ZTlZaW`JrQE z{IYgE^TF0XT=kvbCqFgVc=(y!409J`Va{}io#eOQ0XsqdR@)K$LP&hSrJ=jZiD z{>YiH1$AuP7phdB%IwsfteNI!Fh`v);9H`>$v2DQMCBsop6RQrxr_b`J$_J*>y!G1 z7<SPYaqVJ0;fwwpGwkf{Pkg1W^)vWljLe43Y>|f3Hyla%)vgw^F5(OK6`%FY54`M> zrg=?2==q*M)ObSNs)P+kC$qN6tvWPkrdQFvgA-4Fh+kXV{l<U7f79RmDL*e(Uw#ta zJms;lu;MZGgNF8+f2O~!H$GJ@CjPtgefYbY$e-s!PDO^F=>8^O*k7s7X|ykxT}|;X z|Hd!<5B_iby8htP`Gy}N{${_Z<A3$<_+R;j^QXprR#tx=dh~;#@!<!*?);8_@uh0= zjlFC!a|+Hy9=5w^@98bF|ETwao^FPR{%bm0PHglRTCeIYnpo@P^Edxmx?z9gku#5l zjUMYo+6XhxocVB0WMOyDj^{cX&pg&Tlict4V9p+ynL5dRe5r<pev(CoXEr6a1^0AL zKIs=&lsZ}UmEp;*BaueaxK5u+o_JX0(J5Pjy;EPPEB$@^&S*1#(9<HHh#k)jzsu}+ zF3z*Z!l-zrkH7j98}_zvox+q#;i*R=QzxtWg@vm(MY!weMeOYO<kPRLd0P2oVTBy? z!ItCgET5M1>^OP2x$|UYf~}}G%h5y~Zk3smVQ!I${FU$Gd}4eapW4%MG&TH*?c)pk zIA0Y?9JGvy>6Tc0F|5L8(_x+m1}7fNY>G^6OYD(2RxH`hKB>+!XsNwu(A3XMJ>4Ha z3R$)M-<nl{y`G-@|LTj<M5m_d_^gOYJTvu_>TxlK!<yQCg)>fbHg+AH@Iu7-;1q93 z#^B!{pZcqLC7tkbNi_84N)ppJrIQ+QT6F5P(9WrojSMy!?07EOX4JDxM<V4|XivnM zq&8ulFe6Eyz^<@ho@Jp)CwW{BD@vTyaXAsp<8kB|PwLDxZ=Hx>F^QCu(~^aCCUdq$ zCMBh;kvNi=CUII@G9~4(4v(;yVZ_OqlN}q^oH=t^%x7a-vQAn=T5(s=nKN2DPxlz6 zq@31P^V-;IQSe~Hp`;_HwIXJ0OgODG!{?Y$n$aeMQ&Wx^ot8}PSz}~$G~vwDDTj`n z*l@})(wi+=w9T+vXQR<(VWZOuXLL@^Y_lltNu3sSX0pVZW5&it!IF_F(|o3!Nn<li zopEYS%Eq1<M_X1-oUF4kWwYkYa6v!MQ%BW=wK*0~NtcM!Y3_?zdPe2sp&gqJ_9W{_ z95FUhb7M73+GH3wStqe*88`Ek!ny6*n%$aHQ;pW7=q)ttSsAIa(Xz87<kVKBO+M^; zdRkX3vw3zbdTz1s^mJ|>iJjBAB925H6^jfxIaQlynxt0G2A>@dWDNQ&=cu-c?AYLA qu$o8BVAU~YgUE@886JxkYdzyhG;E4U5R?C>_oS;}p~6m&8Yuwi`@4t$ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_03e_states.bin.z b/client/resources/hardnested_tables/bitflip_1_03e_states.bin.z deleted file mode 100644 index 9e5c059f567dde9131f9c3027ee925b4b1317ddd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10863 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 QyWINET=K<!UP9M#01TO(RR910 diff --git a/client/resources/hardnested_tables/bitflip_1_040_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_040_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..87d8693df1453a2c5d4ad7917b0252b1228fc130 GIT binary patch literal 415 zcmZ>Y%CIzaj8qGb6lP}aWnf^4alFVNz`(#TfkD)P!GVM00OKFafQ1YU91IL<OI;Wj zXliOsR=&7TMacip1W&7zq9LW8>WQ9eL7uA`LRYF>a`3$5sPbG><;tWiPg75|C6g5- zRTo97Zt+&xs59wOgl7(?=q7KKO)krKl`eTS)5L2o!$F|~m8&K_^3qGFU9zP=X0n>k ztXY0q>rNW^owQk{eafe^jMHKQzbDJ&TaGFxStkEfn3UwGa=`Q4p^%10T2qB~PFktD zpwqE4U}}x$q)7%UM`i{_c(%-#{IZMdq|vOCv-pn-u%1YJ#MZ&kz`(%Lz_5zJ!Ht3U z-IM?YDFy{82H~I;87CKLY6klU)GfXxuxh8uTuzmfDwi61CPhrptn5(PGO5VZWKznc zOqBz=o|7`wmRw4i>9b(zl8q`cy*gWN2JCS-wDe5Z4)%uSA}hZ%|5+BS{^aVi89SPn z8qL*wr1jBfWr@h6DKbZdVqJuy6ej%^n3Oct(?H}!Ktsx^Q01;rl@l(`B3_|yeHJZd Znz76^BA6>_KI@%{ej+NYfq(un004%Yro{jN literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_040_states.bin.z b/client/resources/hardnested_tables/bitflip_1_040_states.bin.z deleted file mode 100644 index d3f655b0414dcb31d9c59c1909c9d628065cb463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9771 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 diff --git a/client/resources/hardnested_tables/bitflip_1_042_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_042_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b757bce02eb7879fa821e1e1ca573407cdaf1a81 GIT binary patch literal 7642 zcmZ>Y%CIzaj8qGbOjd|o$9Q>n*t@F?0t_My4FU`dQym%v7#bQHIv5x@9_ZB7cr~bm zs;p26^->M>Vro?hSfCZc$`!DHK~PDnk%LQ-V~SAF6s9Q*TtQtL3=E7;4J%f#G-(B> zdIh?2iUc~aDf^ma1Tc17_LUN0NHV$X*2*B!YjSbHtVt6!z6dM3HF|1tXfE<;{2i#t z|69vL^v9&79Di0VS+PHU)rv(Il@gjVj<`vsE|yGf@tGyEajE8%lTwCZ1|o;G!X%cY zPP-fyVRUKJ>8PH})LEGki=s3x^{RPY=G65%#n!C4C}q{DUZpH<r>$(EleQXdT-rJ5 zWS3#YO{J7z&B(xRwkRG`DNRWqF&?d~KxUO*4;@wCP+m<RQC^O#-WpNb4i~hlg!)(i z5aV@oW38_U{5Lzy`NF2DuT~v8bfL)P(#5qQyDnYqV!pH{utKNvQJBW3ESagR0!x%b zBXy@;oMv=%=CrAXCaX=g1JswLMa^8=B^$JT<zlhLfhj(-k`9JXWnC!NqZ8h;&dd3v zbBNJ}t;*bvQEnQU!ops&f>ob#Pg%`$Rn{}EMbi7!X|tJ;M#nvNSQ+bV4l~Ktb{04_ zPjr&5>VgN|t{JC%O(PBzb-kJ^x^$VLaj=`OZe&Il$AgrqhKj8!6>ef(SHyJH#5C3i zTx>GT4mxmY#gi~6yOv+gCcO@)bXH|@vxZI6bmn$lvWc77Yir0QXIIm(B?hh&vwGN+ zGCe0P<5=z5siU$rXscqQPsoK`4b_XbdZuKVY~}Sja`J<&c3_tJqVPp4C-k^%xjNxw zmEt4uNqZ&>HZ~<ma;})V*<0CJ#cye)YK_X-U}aOq$+|o#t8XlN>G2`qw6abNYopbY zt0`;wd9Kb%=?Sgmv<&)mOw!odbZz8}qmpb{8Jh88-NMF6bvYBSNk{8$x_02dvbS$Z z%I@IvpZ^v9%P;!g-}J&w+q2M!`;)=yHDWp|d)ba|_>ip=tfrQ7BeQqP<xCU9M>D1# znD{I4wYcgMzh=)>nO4&ruP(YO6|rvW$t8)Q6B|z&ZVfvXHmhxFYja3;sKM1Iioa#V zdL^duiYBc{$qM6~)OgaP|DlVCfKk9kt!Wymd>ZSuGIdrNX%=RCWd(kn7Rmnn^67H@ zWnb2p968HboFjTzb*<vJq%*N$Q{LMC`S!KS;a9U*)GGa3NBkG9T;krDkR+wCQ?zTj zR#qtgjic{9k6egMy*1ZITz;$YuPL2N0_zo-m$X`Ws=qLpxFV}t;X>QgDN2ug!*$hs zdZkS!JDiG?)O8Nk?37TPsIL{eYEI~+4L;lor-ap96GB&Mi_B7b5xUS~vEwRJHMRv= zr%!U#PV(3@#o4K^DRiPyu*$T~ge{Aeq!g}tv`sQuEUKo}ni0mD>UF_aXw~s+UCE(Q ziBcyGCuRqRC50SZ679NimB|`yZI9C&*K&EYdbNelME0C*%k&MoDYj}Gv%!W_TUXtX z^fo$nDMxZy#_hB%+t&6RUg}U3%6C%A?aJEjs4&;Gj*Xc-8%-x%o493VW@p=!%N(0U zq*8suf{qz3j`Y@P3tib|nvy!jC}rlVt4j`xE(;6e7E_(N%-CCXnXYMAuUly5%$|s& z%fvDlYX?iFU5k{QIa&0()T%>QmwEl3nv#-nVOFYXu#w)`ZC%H<1zj_oIeDh*sv9zs zgL{pI)mEK3y0YhLYO>?3C~L`8g^P3+d<-<XY?>LZn=Ns0<;tE-QBj-DxXqZAv@9|z zX_il>WX4)!(bTA{l$oh1r?wa!*0_~znzU7<V9N~ch}6lab*&6<hZcsMS+mJ=#gR)! z%Oba1rH7j>yLK#S@sW&6mrh2htuPVWvMEY8G}C7r@1$FK;>zBUfs4hqa-3YYMIy;_ zu}IV*(}}v1z1lX+GI29X+S+n;%4t=jqdX~57qT_Bt(KbBY;aaFZEBjBZm?4Bmej3g zMwf#lZq2wjbwgsaPsEw4oxKKUQ>TUHx*472jo7eWbUjPTtYfCDHCL<gOgxshG;_+P zlQY{^oH02kk`tx3COjg!d$n)O<fyhai$f1<dlybQ)@Pb5$+KbQVlSB$S0mQ+Y&<>f z!K0(AuBH?nJspy?Gu1b8)|yjp8In_`onjYA>J?_!?q=7@TzTZmi5(epjZz~r4X&Ja zou+0r!7o@_aAlIEn5og$qU054&h+g%7IQT<d%5?TWW#k6S6!PqD{ZUV#%`ZOr_Rjk zTN>rsb@cFBqfK+#4Gpigxve~29&qK=wQ#>(XDqC)91G_0$+B7+GFSKzuh&kWiqMH? zmzQqO+?t)Xq2%)HY^lQ$*UgIA=AK(^V65y{JmKA~ohz?dC7lhPWjt4^;M7YQnayq{ zd3oEj)2$@toYUL!($b(X)t0NGW96GxDFH*apirHqp_5!LICJzku4K7l)H&s-l*pB4 zkFFDjqM50>?<7;bPP(a7dd-qMxnfOU>xB=Fosp{Vrgo&v_4<_Z!p2YKqiI~IFWU?` zk3B0^FNqYLrrO!MtaF-c>x)aLc4{8b(<)iF;$70yH5)Dc0_41|R&^GME$uk<<U&e} zdMvAqHg~`lf6o%jlq?JWtd<=vaW1?<%UV}lN?J7g!p+4zQEMlqzdbQGV{7J&ZJE7N zQ8B;c^J><WhWFMp{0#Wz;~mNW<f`&o@3647F;}XlZ~QMGd}H3>M_E#m7Rxk#t!e#f zWSVt3I5^TYZFNGjvYL;n+u~rit%c$0(}Ja<P91Asa&(zg#??oAy~2Z%nocb?+BS7j zGEbP4VOGERwJ7OiO}`~YCMzdh(sRvPc<HiRR*D$gs?ejsio(l$W=)Ifo5>TrT6?nK z8n2U+cCJdg+#K-a>Sf=wnQdXyW^LqI=D5m+qr_{IcBo%R(rN9mg$)@QCl_nY6`N8q zX-~5YFXvH?r>mt>3N{<gnzb(Sy4B;}$gHrQO$VN_tyY#5*|DYc%;lJD-{jCW1uyy> zo=y(d(m!%y<Bvao=5JpuHShGhO`A5!q&)V?jO=+|_m}l^%KBMrLcYbHt&wM6@-1n` zh0Q)!E{pu!u=He9u->tqrz}oKtz6kt+M04=t)A3n-dL+=b7BiN94lOBm3X!!<NrZT z!T(D`B|?@7E$h;D(Ggm<)Fo+x#MCIQBNwxdYO7pwI_l$f*+XikYO18*ie=5pDu*tH zMT+?bORE^Qi5aIwP4y0)xMXFbuY}RYEJ>df?Z1D8rrL9AO%rHcvgpdvq*Vt(<-c&c zE(m#}lo=@1vnoQg!N_Ogs)iHGx_VqEoa_w=t)FD~ireErgj$z`(pB|ETe8)nB-Iui zTV<&08x_W@IW@F1(lcpR0&j?JKp%@e!&c?MEH;fg0V_jYeW`4tt7+M~sYjMGT=ki1 zt2t@Yg-`269<g_&`t&U4y0G+QOT@~q3y<2BC8HukW1Smqraqn67PaYEEL%*_LyMix z3y#@d{dbzR>!QxmRXky$lQO!s-2^8^3VS9<d9yFj4-NRXwnryTu4>cO$*x^jW`yZT zY%(;+FbQAz#{Op46QiHJ>c$b7$-!RzUo&UDW;q<TY-_WrVU^y*j7vwK|2Y4#|I2yT z>b3rp9vrIGyc+t%yZ%a#cvx3*h)J(l*tCtArY2doI-4#_Y+CD+vCJns>X^~Nr`-Fy z4!-m)wLLfa<b;p9Hc9$y8zZ%O)`p2q+PL7;!>J2bA3e_9&Q+n>x-{chw{Osv%x2HU zI_aT{ot=F{O|lkGZTfC<a;Z!__s1vGw`8hcit4`0BPsPGnWueH+~idgx6E6V^jPH8 z4EDpycJ}gbAHBNt*R)Rjz`iwlx@=L-&7rG4-~90KVU@@qXYsddeVtFGJPv=^`LsLm zP@&?xUlH-s{;v1<k(l`KWbL&1j*EJddXoM<RsFk4{+8d8b}s*iovEEYt91-dFWS|u zxJsYd>($I;HIoX(_!2i&(GRV$N)hd9TB#8}KC3$|v=>~N+T&)lsWnEwGv{(-WLlJ1 zVs6r=BiUk;Ojl}47@V4ww%BLZrC#4)Z8gmWn{*>HyWepZ`Gn2b>~pel>at}f$Jl1w zI_8rstQPH^wmMRGYE;(Z(4HK&sIZW<W-WEKWvh;wNKI`x<g1flIOAl7;<XLe!j`oy zT)47v(V<ywY-=_y*|@Zy<HVK8nq6nIHiu5~nJgUavoR$}TQ}D@aaAO*(TNjROoTm7 zr6ipeiZnVnS%W9(n9d=Cq?1b$SAE{IW|#P6W92S=O@Gl<SCV49ilV$-POO>Q!}?+} zgQ?J|Uba-8vr$sLAs^CsH5aS7EnaE3GV#&k3w!;TSH0P*lPfLfI61q|<x-T@l}A-Y z1%;9ZCoHs&RBe1FbM?&CnKSz}(`AER78@1CY&>&C=~8T_!L?qKw6kt%N%n>}Hf8om z=9GUn{%N)0-*fd{|AbQdcdpFN-`sk1;<ElXSF86gt2O?Vx%^4Z!ms*Ew$$#L$F2Tw z#s08nDU-u&#!`nPlLKe1%{X;hCh*Fqj5OP2Hw>Sa_(!EJe*4>~F8s~Q$ssR)+aCNX ztnj1SPU1(^lwWD4@>+@CR!-)fm0{)_HfznohRoDS7gx@j876h`*K~=%i7SP5yd^zb zrzW+Zf3ALicJ03}rA4KNk6ylzH#1$C?XPc}94@C7uXSqOe*g5a^^2b#UN_JG>L+9S z)!s9HR_%=w{hk$HDZYI3$?kV{_g0_Q)z{b0_)=wK@hSNB<zv-Vc9(hOFPtjr^Ex_Z z*8cZ<9a^T}m@>aHG)mM*v_*fS&?9FLVWnxJ!J5vl+!Op(i-@fj(dC($sVwZK6EW+8 zso|PUmn9Q>Q|2rb*W%hEav^-ep%sTtn=bqm$QLR&RppXMijdU`_f^87qL~I>S#nD1 zu7L+qn7fR^mxL_UUZB3nX|14%$|lZ5YMrc2D_?rWI2v_Ya`i2m9>}-AZ;JCGFI^Sk zt4?zqbtVQgoD8*DrSxId9;aE%UWS^yLi(HvuQV<!ZC$$L=qevc&uqnvOS9G}doDB! z%ZzA?*mOFyTiItzWXdd~t&1|QY&vw}U^eIE&`Bq5U5?6_*(|lqcjcyS#$glIDn)oM zIqj5oQ&-z)v)bxlLn)(ax}jmAjXl$heG(^&MO<Au=}6Ww<KVCjhptH^_8J^BU73|) zv{|z^>9n)hmaLo7(rQML5vj8^r}fSj4~S(*>RhP0R5LSFOy$yLrDYkXjeM28y>%mv zc#_Vn7VX-stD~*9<kCjN&S}dw7%cX6Tym9L>tq<`(uvc;j5RF<mkJ!Pm>%Y96t!vU zn#ECT5>j4fomSHolXzvabE@8SKW?#EXRh`pN3P8dJd%3qGH<e*RLW&8t5sHOCUys9 zTy@rU7F*NSYcyj`c&Of%Ws!jk4@CO(HTSiqO_fSqo6W7Z>ad!dPj8@!?^>zsu&qm` zt~zkEZI05>Y@g=9E?=*hO(_W*BaKW}TwP(}tF??RDp~0=YgE>(Evdaxx~VB=lA~^1 z?MYr}8M14WDbH##sj!Yj)dQ=Ax>=?NdfwT}*BfQvuCA;c9JD6z)LeG<z-ya5b3%L7 z%4O0*mz>&KEWCQg;XaFpXQDE$1<sVZklOQj;bEUk*Jhr2ERh}_wnp4nd3V9uo!L7c z?JRoiJuO^U;<R5+R9MnE%cxX|R~wE-X7w7%ygXAHY-REEN}t8LS$%UdPaYNyTs>jd z;y$C(p;?Jm$#c#gc`mEBac$6JwaDYKlIwQGrmZoZHtT3xxL8<bvrbBJWSdxDsb!d{ zyJg|A2#bqJJ6QDvrcUwLsxg1pmkHskoOXq|Bvu7)TDwGQL*&L)`kYs1UD|LYL$svm z(#4)7*-00V9*<HFo^)w>G23#{MW?+s8YF8@*45f{EY>;daxl*_Bg2)tQ7LB)3=^(g z+i*-bYfZB85s^c)T%)|F&A61!8?nY<>s8mQ*SvkA436pA|2fK<GSfG83C|W2=0L$< z;}8Z1h5#l8rcfpjU{G$T`~5V?`L))PDIT{oSE>kw9J_JbbkZ!g8CNr|di8E=Y`eMP zgjbiz)-57uqc&w+yA~kAnPAovk?qSR9q6Mri`mC%hOY_Rj8=nL8N7x}%a*FL^#?G_ znlw3(t72J$rmB#ysg#KPFBXq~0WHD5SVZf0xXORx%J4Ex6^lBy=46-z=VaA2A%=}v z7fjdA%y!F6lU#G_*s9eWDUl||p*$vTp(|Tg%#v7jBFbm!YR|T{2A7V`j5rz0ab&Ao zluqVSF-iNKT2DM?b#2njaP8Q%IG|_JiHv1BkuG*z@~eMyvn^I;+CL-kpV^xB)q>T* zI<xqqGA?d)kBTyKsan(ZF=0=z>a*#ZOS)G@n1n6bnz|}2Iwi~G=C-PB+ssS@FKpj+ zI&5X*tjj_31U7PO`^q`JRD7tjY-6Oaj##%~*3^|PM=n0{Q#xs~%k|TeOO>;;jc#6y znQM02*mqh_7<<=IU$H)gQ>jZf9b3yirQ~H)=32Alu(VAEt4e(xO;)8ed^EU{$&+<h zQ@<@!YMZV^=fO$KU(A0Ix#)_U*M*3wOWCG5t(oN`)w<}!Nh59{(|{`pmu7K$MNFOG zD;8?BG{dMnVAf>rCjEv}QZo%Fow{`Sm8r=r{ZQMGq%c>LtCPi-R;W*Wv?bMG#%iUE zX=fu%jaHUaa=%!+vh9*jZg5oiDd7q0)z+LgdgRl2#k5&{+Sysb?k#;2pC#+ANXZEL zm1=6bc3Xby%<YO%vzBdT{@880=4qz2`26#qSO4DYUs~%Y?55q>wExzY=_aNorb*jY zS1dU)%T-t8)V56(H>X-m+RtNqTy51Zlg!17xi_3Rwl3BvYU;{W1!<QPt}PCo+RfW_ zY|pCriKk35u4E)_6->=Il<M)4GyL76X)LokBf8eOPAuYAW?OJ*xpe5t_%&yyzyEyf z-Tc|NA1+Q=m$ED4*7BP@S5NbuzP~=df2w@y>WE2yrCh&roeVyjY8bZ4!az1kWxr0% z#ls<KWpfQJ{&dy{G6zily+Uu*ic*0(HqoptYj`y?Q(Z0H`ZA7%9n6|3k#sdfjag}9 z@Tu;=D_JICi>`)sTvis$TE;dtHt67$#BR~HDc356?5<3-nXuNgMAb0TEyPsKZPkgH z!dg?qoY^L9;+m<;9F($5qs=}_%wXHXS>9n&&L~}L+HzuBaMsDpuCs0tVOu#Rxsx_+ zU3KenO3s?oMr{)&tX-kI*>h>CsdvbxttxMu%_VM^1+Lt(ZD!k)8)}=DZOoMx-JrWV zB3ChO)lFWNt!AEEPCM%gnN3T&meF)st!>lI%q-odOPnsJZrj?rFlFrw!}!8gDOZ;T zzguQ>#%IgHY_GCyH{I6UQeC7n^W@A_>86`U)n+EDWM@pfm9fp+db4lvtQAN02;53D zxOHvYiCNb+ip}y}D{|XotHfr{S*xSPOjoPUHo7?DXwEewz8ROI!?srHU3-;xU~ROa z*+v#&ujeUmcSdUmnjL%`bz0MCjhpDEOGl?1&AO$zHGB4~qsCF%X}7cvIdi*-m`aPB z&biebwOZoT4b#a+YfeUXMr*c;wH!?~%gT+)_H7Nj80nd<8L7*a(Yi?2DC(lvH5Kn{ zU*3lmw;esBQrB#b$h#^PopoxOIOD~fx6+FWZ(Vz^cI$$TM<>V5*zA{WteV;y86m56 z+ij-0xt@&cG~W|XXC=={+cxQ>ab}|0nWf@fM>A4S_gKuF?q(WmWVvi@M6%D7GsY_& zPfM626>VITJ@eALYgTK|l@*+wmYtXzwK-zbnJce)MW<Qb*4ZiZCTnw^&(5u}cXpL& zM;`Jh@fXQz*X$R$c-w5!rcFy_*M({<dG_|&?XqQW%t|}YT0N5u=Ua2_+1uNEdPTQp z9G>Ry@?lATQ|Kygjgwq6IkQ%U1)3-aoa$_yVzM<@;E+y`)T*o85o_P%s3{%Tvnt9q zjBUB{)Cbc-PR&<3ni}ITRq$z-_Nh}Jy?HKHiauGqXhT})WbG)Q6Bpn1%4%NlYo5-$ zJKS`}&LZJM#}CB@9bN2avT07=i|)>D$0c8^c23*r-_d!h@sZF0pJfqSHGN+kGrG8G zzjEHTsIZk89dF;h-)G&gpZG<8*OhJk_mnrBH4c7!`}M88^1NX^g@*DG^DDBWeKodh zTXsoM=yr5uYMyq#QQF$JtS_e{uFd*bEqdtE!d1GtZE6=+uGUT3vtNvN%Y~Sg7h5h) zDGhUaY;@zQTes4#6&IA(q%NIfb?U@xnbe$>z0T8iWbL>fb=W5@<I>eI?Gt{UCNurm zW?eS8G&6Fw$#kB6l{kr2NxPU{osC@eGCAh<%+*;@sWU7yi;}Xf*M%)z;C6eWTl$q# z$#4JHy+2><-+p)6me|Z|*<xq!{r)h2w&>59;;TQ_+RYbVGc7YZI&90-Ua|N&*>kM9 zvZJSoU6VQ&61!ve4$pJXqb|q)a9UdbVrdGq*5XjlB@v8E790#rn6~2N5|bI6i;|p! z9aD9Db%T9)Q;ja&<~np}>eOY78EdX)E|ZG7WdBlA|0PFOh?|G0(y3`I{9m0WhpN0( z%~nhmb4fXrF*Q-Dv(xKe$lsu4D?1HLnw4gRpEz~ntk1O0S>B?{wi;bYG)S4{wMpwJ zyVmMA!J!!!4CFKY!WMg<-I`M{UFp)HeQs*mr;nbPr{-f+uvO(5=cJ_5OZ`^+My|A& z%Y3qOnsMaJE9bZ;9uIkZ{in%RgVZR|sa>a1d{Y~z8c8ivU6uG!eXI7v&HC<Z!=k2z zMQu7P7S*ete&BykpZn<zPqz53xm}mM>}2ZHq^S07YxexJtjxagu=!D`_etM>r^Uk* zS6#W*Gvl!IwXI9n%uLxVs5Qy=*`@baGe2#&Eqv@gah}ogu4`g9lTK`NR&Aftt^0UR zap!}XCL6OouAPp0y>;fKZNbZy?~bslJtux@gI#yXw>2B?OZKeSs<N7r8@|=(ncj@) z$0UEH|IGZi^;-@9YCcorkcZ3G+u1*t(+{b;IQ`k>&?ndYj}%S){N?2D`_osyY_ln> zUGvvK{*>mQ(0bK_vH{uR?@SJ+p5%Yx);0Z#c8Afrl$j}MF*5F9QxZcS)~a30OkM39 z7IbvYm1{S`j=6|z%vif^(-D`WTTWfewr>gNmO9((8?CdY>DpSAi6(1Bj<U{}7P&O* zjGJK5)~v0PI#Ej(WX@QVbYXgKZe(hk(PdNJ#inZ{msQNjS{xjmoE&26Z4%|nIXg4! zjMGiiZJW6{oK#qNmmE9oEcJQM#!H`0x7sZEm~rK3A)jt=$cYV`g{nhWsX2Q#8*NJY zw3_Wq)I*!lSKpq-#?F)6a`TDNt>>x>u3lT`b9}XS$A{{9*>R%RVimT`U2V2)R<y&9 zxklNZi{`$+_wvV`eepMD`0w_PuHCUC>Dv5b{q>UbTR*J#PtKe5d(-^cVw=voEEN*9 zxV?SWd9QxcZB?^Q{;pGh_^a4w&Y!)Z-*iR4R@WN8d}-&uWoPfKD>=T|2`N#VwIipQ z)dlKtzkZ#+e&5ckr{hXL_3b`$-G+bXiuXs~p7~W<c=zeIU;9nJzMrRlZ}s)t`a8dt zW$*h_@!Zb)ZLfWr-g41ts`D>ugz~=<sh=<{NTO%LPfm;OP{*mkj7C$gx;$7nGsNVC zZ^T)z!#>Hpiw;L^dZh74XpeBvyfA^pwKbFamPm!H;acm;C$c_drf9+iHTOv?UUW}6 zB%`x8Xw}rBg|=N&Cq!~wSf;UIsjtht3s$ZsQ%ap;Rulz2>RzI~L@3L}R@85$v(~B% z-k^S!)+hXmVL=C1ER7V|GiC9FM6sC>SEoiK^){{zn-R5T?X;|oTRL?*qM}ufE?c9U z<dmVIbSrIUSXhLI>xwnYmTaAoE#W4nx>4(<Y1T>6&91EzZk?98rt2LYnKErtidxty zmub^Bom|@`I&GQ9WVLBN-JUzNC;D=25S=9E6}l?Y=!)2}ZQZIp*RqZp>-MB<%Q`x3 z>Z(&`qRpl)oawWsby?5K)naKm!IMlDW%_l`*pltILR-klI@@E`P42?QYh;SIX$Oby zP&ZvPCD2E9=G?`ZYkM2l%u1VWa^=cH%dV}3Za!9<R=qa6k+#fO=depg&Zbqzx_u)r z`uZH}oVIGC-esPMG%4k%ur{q((>6zSCN5E3vUSs}%#baUS3FuCk+msVB1KB*k<O~H zKnvwv8=j@ET4!l=ZOYMtUF&46(|DJzSz8`!x>~L0S-GC&xx8x&)?7N`8{>Cvi)==D zp4#2?k{9oGonC8oIO=+2#^yPu6EF8n%gpAz^m0zAx`ox1*RzhR#R{&?P1aS9vNoG+ z-S_fH(6Y{*Yg}a4oV#7{%EhK@twvi&|3BMB`~mBtLKolI?VJ_1(Ku~sMX{Sf){0%0 znHk4K*AzWo8y+)j^3Jw7QJaGftEHx88ArV`yQ${kZ5Fm|#;jYXI?WEB5M33~Ipu9+ c*R{~CeLQ_LeN#Nw|JXfA^H57`mCUCO0BdmRw*UYD literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_042_states.bin.z b/client/resources/hardnested_tables/bitflip_1_042_states.bin.z deleted file mode 100644 index d324368a663ad3401f9747ad9a324ffd5d080d64..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34648 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 H(EkVkx$-}3 diff --git a/client/resources/hardnested_tables/bitflip_1_046_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_046_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b1454b4e802e0f6a5fda39902d7377797fd6109b GIT binary patch literal 2351 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 LxmpBF05y;R=ja8p literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_046_states.bin.z b/client/resources/hardnested_tables/bitflip_1_046_states.bin.z deleted file mode 100644 index ff59e74099cad0e185b4b240c0a7d5e55051a675..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 18495 zcmb=p_4cmqq}LnHEqE9?r%2y(rIEgS;`;P7Zs9Li%tOsH<l|49{78RPX&koQ*IB_q zV8Mz1pZEWN|NqzD|9{@>uitV1-?sCA&5!JyUK_vV|L?VL{-5-(`}F_spPm2T{=f74 zRQ)@{pXc|k`?K|Hea;vE|HZHVr=NfO-|e*g+yCkPr|mEOoBuUli~o1}|2OmhJo>-m z&(iaoOKSf9yY}|}ulK*d+FSiQZ}YGI+s-HUlTXUOz5nO@|Jnc7{y+2onEl_&`~TSg zk2n6ev+MjiyZW!Szvl0*|N8&y=lkpb{P%xY@hj!e-0GY^^MC*T_g(g9^{@XoU)Qhw zd;aR@`t(1sFaO_pE?d9(=l@H8Ze-1${{Q9wKk1wHzj<sQ{qO#-`TsZnR~4(T{ru~D z`u}(T7N5WW&;IxS8};{om6!dWZu?*Rzxsdm|I^L?f8YFk-TzJXANT*-|A+tQ$@!sm zzxNmYuKzXt|LLgzlm1Ju{xA8c{;_@j-}}GocmAFK!@m5l^Z!R+^*`eO&j0^D{{P&C z|Fr(Q|BrnA|B?MS|NoU=_!acme!jndf9>D!w}0GUKeyif@BF#_+spQ<&ieoF@7vk` z8QpH({yXjV|NHqn|JXAe_+x*#W^2@+{D15R{y#tS|LnZ~hX0?>`+sx)9}u)>_*nn; z`}|GU>-XvYTVDU!{z?6j|8L|OCY1k8|3CkiJ;T5K?zK7Fe!t%I{D0c@`q!V$)9ULU z*?*k>Xa662hMMZX$N$BDwf|~=;Me(I{0s~q_y3S*c=G?r|1<xe)qgwx@236l_38Tk zZ<AO5{=WME_5XMNPA|Ip|9$@5f8KAW|M|bI|84&N<JZdn$VTV<+5hX$RGaYm>lgl? z^gI4Vz24vNFZM70pTD<$-<SW@+oRvt_x}2S@w@%@YxiIL{_fVl|K{=k=kJyOcYgnK z{nkI>=l_4-p7($4`}+8^|2zM$t^fMJ?$7<?KknD!`{%FU_%E{ZulcWk4{u(#zxnvT z_TTSy|5o?z&;R`YQ#}a2e)9iF{hRs!UdBiN`R=)IQ|Z6rZ6EJP{|l;2v$lUd`B&ii zAKw4|@2V?%S9|^c;@9;zAJ^x8oj>vI%s2kgf3_F>IsX6YwEO?|-}$;;^1A(Vxz+X4 zYL5M?&-*RE_y5g*_Fw-`{k;F#|6QN`-~Q_V`@i;c{kQ+u=l-|5`Tzdrf7$=^PyhcO z@qb&-|EvEQ7x@1({#6}Szprecy4C-S_J5i8o~ZjT{+pd4;{Vq9{F~4IUp!x(;luxH z^<VP;Ee9o}=l|`m?*IIK(%1KY=P!NQzwiIur2k)EeE+}s{r|83>i2(q{`ddR+xPyz zzyIyuf1BL*|NE!j|NZ~Td&&Qn|9AWR6TScc`#=Ba-{t@Qf4{N+^Z)DL>hJxZ{(tiS z$^TE!`kyWPf9kz@yTiZ#zlr}dU-jSg|BCiMPyRpkf9HSI>HnA4|J?uoPwkh#_ZOeH zKRfS#@xS-CzTUt2_W$j__p_e=U-#_)k^ehi%l{Jp-~IpU|D*q3{r|K7_x-2;U)cZt zZ4XY&_gB_G?`E8#`d{|!^#A|9#r{vT{(t=E{oJpQ|Ky+P`Fy|VcRfSH*Z5;!=l_&v z_^<zey5axif7Ab`{{N!?U;jV9g81`)x9q=u`@i*jwCmILe`~7k{eLa5e{lKZ&FVe# zs_&oQT+h((>->*D@$Y}^Fa3A@4}XH_|M=Z<5?}XU{4Bp|{eQRD_P_pkf1du_?)nem z|DFGz{D1mC{A&HmKNtT+pO=54{y*!}{$1~ve*bHKT+I6a&ySx?pY*@_|M7R<+PgJ{ z@9wYt|KhX#_Zk2CbJzT<zFq(N$Nn$>*57*`pZ5L#=DYu|-TuFQ-~YES|29v)|9@KT zpU?G={;&CT{apBj{WkwZ|9AhtY5)6u>i;K@&^G@6d=5w?{eSn3{hwJGOrri@xwqe> z>i_b;@n7sW)hDQgf8YH5-v9en^_l<e85r*UFZ{>P@Gt(K`@jBwo1a3G@6rDZSL)ra z*SpRC|7G*@dH<{Dv)k?ZxBMUfzyE)KZT<ZJ%6~?N*X#d>?f-xL=YNJD{|$fczj^Ne zeBJ$1b^mAouYdO=|I5$+pZ;eb|NrX${}a(y*8Tl^@qhm<`=2N0$No#M-hbEmU-D{o zf8L*qf9Y4w`{MuK_N)ExpY8Yc>aYC&ZukG~jaT#jf9?EZd%iyT{~P<=f77SgSO2Ns zzc=suH2Yiing6E!`=6WM_5c3F{oDTa=g#|R|NF1~+T-=vKNtUdfBXG^!~dWEFMVwP zs9xSa|8M#~^Z%Fa|DOK;`Txfs?$+hef9rLBdcU^s|32O2{(haW`@=tHX72v_S3mH7 z{k!7V_OJZC=KtS${r_L(<M%V_<7WNu|5v;1-_!b2*XniW{rC8-9s7T;^8c&v?YF(( zYX8;$tN+LURv+tMe-8HkzrVct%X|61f8PGz{J;P2^R@Nq-|KIF-U%ugKGj!#u3!6j zzyG)YU)O+3@*n$S|485c|NHIx{S)T@*?ijm_MiKg|8Jl7fBhr>U(5eb{FPt(FMQ=c z_x=Bi_@?duR#`FsMg5Y$_M4}7?45e5e*e|&|Brv$c-Ht|`sV*{{^{SUfBCcZ=HK~0 z>MQ=<d@jE3fA|0AasRLGvwwSM|LwX>=j#`LonHIr?7RQj*Z;d;um4&9OaAWuAO3&T z|NH+}{=%=I|L*_K+4klC&)>NJ`k#Elod5gp7yYjP{-23q&Hrot|IdPA+44{QmH*f7 z{olXqzd5MnfBGK+8J{fv`rCi=`TsZn+W(#X{~$O?GAQK#J^s)BvpvJV|1<Zmik1I; z^Yyj&>+9-Y{=R(k)&9L-<!k?4{C?lP-~QwLAO8R1|H(6Kx?b=0`+v^w`m6uX{GafD z<G;!OLB&-k*!KFL_CM`E+yC8M|114}_RIf)ak+1&{rmCi_oBb<|Lqt5IWCs%emwlk z@5TG~FZqA}{;u=W|Lynwulq~><@v?G_b>iE|NZvsklN$#+O6OByZ!yY^ZWYx{k#6Z zPGA53kNds--*do~N9@h-piqr||G(p2{k^Jx*}C;BZ7%*>{C<7P=lVzWZ{NI~RI&B= zkN!3Lz3TJ7eZBwUce{K4|2LoSXZ%f-ufPB7|I`1VYU|p`|DFGD*#CWg_5X`Mk6--T zyxn{L|E!<uZ$9b&R=@x2+W#)E>lZ&>U;bqM+W*P3wg1bnoPRaqfB%~Qsi45#`P%;d zmHqu|-+q?QtiSpC|D*kPKF<GDp7-<Z|I@MmwPOE&mH0pL>-ERavya#-U$0lb_TTpH z|J&c})9?RZ{%?O+b;-Z{FTYls{J*mMU-JL@+kfW&{htd?d*9dmKlOk5&GXwqIg<ea z5==Mk|34|V?n&CVzx5Zt>&w~qZ~XQD$bZ*w|NowUzW0A{{=e>X>Pzp7zrFwG``=&h zU;gi{XLz*#`M<^A|H^OP`+v``-}@8(&wM-oU-57I=k=%lZ>;~hf6Y&Os12{|7r&}s z``Z5IQ}*BWSIz#t+`s(a;=lHF^Zx(e_pAQ=Fa6)=*Z#lue82tV`emQ*GeUKtQfHiB z|31HH|MKt8U)oRq7k%3LS0xjQiiWQ{Zq2XAsjct-yZ_7m&!5+Re=c|X#&ga+k6!&d zed)K!&HDTA*+Dvf%3s+3N1lP9;TONxm-<!zJO58C`}_Wn{nvVsEGV~r$^V=GmmkD~ z;RK%k_vLo`=2yHc-Txny=%(+BpBY=X;eT=c{=3P4=2z$Z`CgYk_uuQ6|0DkkR(k!n zxB7Q);`1BNKK@^OzFy;M{g(RQs~`V5{{&QMefv?Ly7-uVL*VQG#pn0_lh>`^QlBlq zq5ebtr~RMmC;XrMpBZBBf`5}Y{!9FCe`EhI`@gIIul{epzJAsJ=PUoGU*7)<7Pt_l zFtQ<X$FBeH)8GHDUi5wX&i_6CvQNeT{`swL9!vq4zV@`P`flGn^`e~A`{Hl+m;4Va z`+4x6{O#l4KuxIoAM0~AetgfT@@u_jeeVDIoX<c0U;Dk^`@4Po+2hal@7i*$ex=>} z?Kl2b_s{SDx9|7b{eO<xGrX<`!JeM~Rrl-j{;Xg6f5rdbD*vAUe_HSG|5H7K!hg+w z%=;GqQ~xKw`v37?w|9R3TEF;p{me)8U;RJc&-o?4_n-Mc#*Y8j@Bg2^_aEyw`^|q( z*RTA4`hVZ-|8M?3|6jen{_TJBe<+C~=JB7!cRnebuf6~O-;+P~@Bgn~T>t+6|J&dG z)$jdp{(tM${_miKYWZk?&hz@}|MG9_*Z;j-pZEXy-};~S-}L`aH~kMz5ey6ov2XsL z*R{V=f93zn_`mo6eE&WB{lD^$@p*q&!y*G5a0p^X>$T_hQ-Xf)Gp(8aFMEH!{8W3d zmp{!B3c##zn|JOtckFlm`se@a{M!H8KeO%Qf7crd+y8!D_Wonk?|nCee!c}eLgByi zfA{~N>aYE0U~u^B{%3#CpL(^`|2zL5{Qv*^ukD}z-vCGW&;4Q+|LwQ`d;6cg!SLs` z)n#wr_y4Om`R`r#DSi6?8~5_RPxyc1)yZJze=GiZ&r|<<x!(Wp_Iv+hcm0d>{kP)3 z{r7L5=KsEbe*W+J|JD3I&)cfipG?1D|NDI2|CvwE%l*Hfzy9{#r~TjJXYF75zy9{j zNB^NkRQjLo_x@Y{{&PR---`d%-?#lT|Nr^F@z4J&{@4E5^L75u`+xjFt*P_>k3W`w zdnfnn|E*8-*Z!aL`@Wsm_5SB_pTX7aZ`q&jzy24`kNzK6AN1?b`Mv+%%Uk|)`~CUS zpZYKFH-FXtAH3~f_QyZ&x8h&^dN2EPeck_!wd?<`tY1~%_5XU;f8~$Wy+7(xs9eiN z!)jUkTmN?+{|f3U-t<0l&+F;_`>$^QPyT)5ndJY?H|xv(f8Tt4Yx+O`Kla6c&p*Eo zu4Ci>pS>cNYk%|k{)@j(+x<)X{(tN1|BGMm|6~8R|6Tka^?#H9FaNLgtNg!dgV)dZ zIp6K4KRcg&zJBk{Q}t`={$CIMvuD@8ga5Cuv9I6#zx=;E!+~Gt|L%WQ&+w;Se$l_} z-~Ro-`gi|N`|p21?NkuvclcAk|7q9%qxE0(|Fi$A@B4cH{Jrm=-^ep0{QF=2Z}nXM zvts|ZpVMb{(ElHQyWaJ0{+I8k|JQE+cmB|yr;(BW7tfy$uJ!f*^E2F!`!D(S|K_*< zgZ~@<Z~ng>Uf&-5&+r4izOAdiYqxDz{r+F|fBmo3Km8oBZlC_G`jvkt{lEWh<KMUc zZ~W@ppWNO1KYafFNzY$>HvJM`^xydJ`KABm{(k@Rf9?14)Bn}KFMIuWec=E5zyE!| z_pAC_?fQ53cSX&Qsr~oy-`b0h^S^!kzxn&!{}-zNW$XUG`uYFgwYTeYe};dre^mcE z{_lSI|KDM?-kSQbxc^gs{V#vCe$t=kZ(h%T^YQ=Gf7SN?uO7R<{U_MzKlhh@st0!t zzO2{%_gf|YrqzGT+dtles`Jfr=YRG5yCVIM>i_y!d+YD}UjM)Nb^n`>`?vi%f8v|Z zx8=J3qAmYD{$F%D|9||uU)OtH&oA!3YVU2A{MUZ_-~N05bN<i&_5ak*_|Nrse=aZk zd;H)3eLwAg|9^e1e*T;P?<4=4{-6HzfAyOB=wtt1{b%?vuikFk#{J8`J_pxYm+b#C z|L^^*H2?bVJzC%R862vk-q+8p{kJ~$z4?FU2mcT6Uw-=e=Jo&2{NMS!{@3}n^*`&s z%ICffd%X3_??r#FZ~K4sY5kr1r8(=r*W13Eud`O(_V@qr=V$jUo}c`C&)>d3fq$pZ zSuVVG|JQ5vSLRQ#`(M2N|8Muc{TKh){Qk{<^Y8x`pZ~kvp8whY*1G@ubN{4Q|BwEo z|F8eZd(%h%C%(P7zy8Z-{oeW2J^xSqdj0Y9#jiIv_Qw9-_<!e{{oDV)-}vwRoBx}h z7eg93pPv1XI$po@`+WDu>o0wNb#woZ_&@jc{{21jFTJn+r2oIGPv+<Td;ju(^!fkc zAJzX}{_pWOe(w3JxBq{&`@ha)|COkJ8ULTlUH|X#yFN`{uv&ZS{%=3~{m;wK`SIuY z#c%WP{&)SYZ>w*x`@isi{`L01{~Y>S|MCBy*ZXJQTKrc1_aF19`kTk^zxlVn>~DR^ z-|7FC|G)UR`~Q*pPyfHfyZ%2X&K#imfA6oK=a+sL-a7Ap)n%*yf`4uI?@#{xfAwqm zKlNvSect~2|E=fyH-b8c_iH}x2XzkZ+yB3>{a2s;-)1*@EBEkU{oJRe|M~x(UsL~N z+1KCe-^~BZ%<$~+-}Skl|39l|SpDPwt$&8E>Z9-f-@fa={M!Gwp2uF__kYt@c%Lxr z>i*yIC;k6bJ}v*>|GWOq|IbN(bnE{2|6X7G`+xc`eaZE@Pu{--H4&iwn%RFp*Z-OS zV}JY~``>@r@9X_Hzw=-B-+Af(o9n;LkF5K=|IhqC^MBfZ{sSH%i9ho1tv=g@jK9XW z|E+lOe*6FKf9~J-dzO6p^Z(lO#b5XBxBC4L>{p)8Q@__UIDq?npf2Ad`(MlJ86sBy zGq(DdRr~+)n}7CE_P@XVn*Yn*=rOoq)bREG)nEBr|IGjVpYg;0<WKdBug5>12X0=z z`&$3)hyTC*XX>u}Kl&eB>p_SFy{Py9HEZilZq>j1H}}n_=D+sa-0%G_-hcF6edQmU zecu1i|I(lO{7&+}|95Wx`k(xJ-p}{x>+Sb>)zxSIf42Yq^?LvR`G1%n{GY#l^V<LJ zr{&-7|Mt5w;s2-jFZ);hpZtH?|K$Il>LWkbL#$)?^rZgn|M34Uzt(^B|NrX0<#YS5 z|L=T^SHo9@f1f{9sJ8y*@AF^cga6$+fBmly)G!E@Rk(j|o_zG1-~DUf{9g2T`n&t5 z^z3hd>V$uN`;%W=|LfN^`?uK4`+wz^|9yY9{{6r4?BoB@@Bi!F{a<4$Kl}fyOHu!q z{(4jU|NhnYyYK%xo&Se<!@uqSw*NbR;z$0Mzt4~TFMn<S>VMSz`rLn${|o;=`9JmS zf5r#@H$Ssq`#<rodH7%dKlWk&`@e24e*gNv+x7oONB_T?|7icsFZNY`^Zzgl{9nKS zzkc;!?l<*mzo-8X`ak`@toi?&|Ih#b9{2wiDD)T_3ct?3xAn`t@Ag;wzAt(Wis^)@ zf8>9s|7U1;AN~L9Ira5s|NHCaF&y|G{r}?rpP<33fAjzU5BYy_fBfJ5|I}aK|Jm<- zI{w$c@8|#RvMUL--}USN>hJdVCI7Ft`~TzLSL;vLuhpOYegC=L_J522E&uX!zwy6w zf4}~)-d1_+{+oaH)z-iNm@l%O{5SJ^?0>8OOV-&uivKkISpE7(tK~k{pZ}q*_5THE z=<{d1_($hYzxUtxAMxKl>F@lL|5MNZKlT6Q|C9fpp8dbI@4wy7|I45M><0}YSt1W1 zX~Kq(?*81r^K<>V|Ixeu&Hnr6zU1-xCH4RO|J)C%`~Cj<`}jZl|HA)^|6l$8^Z)R# zr{w;AU$_6%|BLn0e(nF!|M&8Lt6$~&BpM<=-M?7#^L_sPuld_P*U$NXH_ZOr|6^w? z{_AcB_eN7={?7zuflu|4pY5O3|BV0U|NqnfPyZQ;3g4~&8=U_?zIuOX$iG|Xw}1b< zr2ZGXo$UO*$6xRK{@3O=JHv|qJ?H;_?fW17y#DNehOm$Sx4v!+{4Z_$U-9>^{4M_$ zpWkm%U-_=M7uF}P5B)p+l>FQMU;jAPeOj;ffA#OUs{8+ob2fgSFK-_YYU0W7e}CiF zS@Gxp?*8hx`(NDu^8bxvul8^MyS?wf_xt~^YX7B{{kOmUH-GQn`q#hj&%0-D@$+x~ z&Exj})&HH>s()L<`t$VT_>cR4%>TRjf800!x}WwS___Yv&-s5h*MHmJ@z*+@!C~=N z|F?g=7k{t6_22cs@^5yxqEh?n_kaJd{XG5Ke`baUf90S5XL#`cY5kM`FYKfL`Tsfo z?`8ZSeuuy5C4bYu{Pef4e)n_#_sR#0U)R6-|KR`q_3_sK{r}1{Z20#p|LgDiIsf?^ z{>xAPKl|;U|2IEH-~6=y+yCc%|J~;Q*Z;r2?9cjt|NHm2zP)u{{_p=4e<#oXbMvYF zw(qxXpV)7!`gCQ2{i^?yo_qfPazFV0=K1wM-hOibTmSy^{l2yDe#Xx~asTrl^Ka+> zZN6Qf_H*;`|KD%FF3bP9`0w;*`7i(9FI)EGzwFQK*Z;vyy!-zzSN+*O&HmN@eSiPS zf42W0Z}m_4-}jH7uhl=R{|uc5kngYGQoQ}@|Lc?XZ~6DRqTch%-_t?=t4-%m+ZKKQ zztGqJkZiEz%g_1MfA8BD{ptPoeCf~sFYc$mj{mnj=kN7LKl``rzx4IK^{4p1|B`>l z{SN*g@?Yftdg1@u?d-RLMyTEY|GS7b6EGh>6L8(?-|v+F@t{7l`2X(zw~y|>_;>&P zfB(3Dp0wZnXY<+rwtwqi|NO7@Z%O?x`IY~#J+Ghos{YGw{pSfkv*)*e@BHU}>%Vbz z=Z)x<f4)c8{;toFzisol-t71JcmEgtojxyq#@+v&|J$$6udRFdYyXe>cVFY*{=R(f z?`{GWuD#QLhEI?F&ENmC`1}8!zkA>PXFT@v|8L#x|I7dDGaUGp|M$oJKl}~<=O6y> z{x|>a-~X$B*MF{m_cQ(<1j;+uMeYA@^83&HyZ<lm|0(|mlq8uMK3%JS^WPZMDw_Xu z^{uZP=kLw?`|s8F>HF;GuKjmA`v1k}^0ohKzrZV4MuqCX>0ADv-}XQJ@A*IcKjmNB z{{+=|^C7lR|3CS^@&C*Azn9m4+du7}{L`z~@?Q3@2eo9s{5L*TpR=*7q{el>{jcBN zzyAMS`@81l|J`5iFZw_6pUtlS*1P`ygtdZi-H)pNpMB;3{ObR|zOVkhzwX<w^Yu^u zR-Zq1f8)_(_ovo^LUsSwfBi51K41HM|FuukPYJ)Z|Mkzy?7#ZI>*wz2b%s}iT3D;U zd{2x2-@C8A;>(ZocK>^?#ee(wJ@;SyKmULJ|MKVlnGY(N>f`?QpR@0KXJ5Vh%g^=G z{?GFLm+}95^!;D{TmG3_{i|~Sck7q^ww<5;Py7|x`}O~cU-935-2XFw_rK46e}CV& zW%qyLx9NNT>Hj+|`+sHqbLjlSrLXb*ALS$KZR_^A{V^{3Yo7G?{^fuBbN?5A`&<9& zfA&`Q=l|W-@AvxbzxTEMxBuJE{=fPEz8NU()t~>h{!jhPzctl=*8f8uBneag{agR$ zQ}?{I+yBLD|3CWpSz`5n|3C35|L^~=x%b=t>$CkYYJz^%Ui^2q{{H&^^Zwoc!LIPH z`kj5%{r`ryf1h8y|3CM)`8WT)wBP=}_}}tB^1r8pCJ*3aA;zozUElR@GHBE#JooYZ zf7P$-Z~cG#{OAAotN(vr^MBL-JD@Ss-^M@Ft^UhG>TfjifX$YD|8;&<SJlt^SNwAS z);*v}5EL~L{j2|W9>4be`;GtJ|84E>SJl7U*jqdAfcCm~`*rsEPyYM;ZyiX(g#V0x zPyc6RU|8{gfy@8pzvlmt&%FNs-2Y%`Utayc`~PeIL4A3UYA8PT;YZ!`$G<zD$9?|| zPINDSPX!H$*?<3j+xFQ1oyU*Wzc0V`a{s)4^S{bZT>j<%;>Yi0EBkWg{@?%gr#<Me z`|s`ht=9eb`3EYr`u~TUW&L56*!s`@`<>VSFMe|Wz5N^GZ}$J{|F!?KgGzCzt*`7Q zU(0{{-~4y=|I7P-?f>=v^RMN<>gWBcH^b8~TK)Tf-M4-F)vM}f{yzU=|FS<@=jXqF z&IvUVOeMs=+kXA+i&~}QVc%*m{`3BxpE_Os&Hs(HIrYcyZ~Q9z|G1d+|91|H{?Gb! z{oDWJX8r&3_x|5q^8fSInw)>Dy|e#LfAzVp`|kelKYqTzXdJEo4r&}l{p$a<-~Unl zzxaRbp#Cnyr}>ZUA6UPtfAoLjulhCn=T^u6H{bPdy5_&||04g-F8hD+b^T-ch9C8R z|JL7p9iQ;u`1bxk(|_&%^M1$A^Z)Aq?f?Gk`oH?e@(c_;tN(vlxAgnI|0~P(h{u8_ z$W}l3f5ZMaJ44O=U+c^5D!2Zu|MHoI;otpV{r}GX{{pJz|NLM6tN-8MSO34-NB%!o z9~1TO()a!K->!dMxcb+{tN-Ko{{MOINB!5I$G@+?51N|rzW3km`_8ZOU+tHk|3CL* z`MdSU?}G-H)4u<|dHd$`{eqx*zuoVDUH_?G`c&}$r2QuUszu|!cKokCW*_*|{kwea zzjOb0b;wV;|NrQ}<G=n3zW(p?Prv$KIJkJw&;Pf+^w0N`f9-A0*Qfk{^#9Dq{h-NV z|9|2C&j0n_`3E%V@%Q=rbN|oI{a^g={;jX~-#q_+&f=f)U(giNv`@F|_tzm$67OFX z{_Vy7^1q?~`u}ad^8YAkBJ=vi{hyCAoSF2$@7d}4`rqs7H_!e5_|N-ozY71Erycv5 zzw@s>!+~G=kAIy9mG0C3pPupG@c-%mn?N&))Bm$i=q|2*JHP7p|69M;F8Xx6Zr|Sd z>VGfWe|Y)hjcwfdz3-pjv}bVmn_ly8efgjJR{yjAv2W=5zdn|~=hyugKlyK7uU`zB zCs_LPbn*P`Kb_#d-KYPnU+oY1m+^n?bN)}0>rH>g-~E2+_rLkc-E;r{`SDZgll#~I zKWdL(%iCx1{r$CiP(AGP|F~J$|GjVbm;Q;b`XB!Ov;OAa|8KslfBp7<^!@+ezWh6Q z@_qejyMI6JKh}r+%zmzYB3|x)*Z-sc-^~B}eN+9X)8Izv%>TvbKq8y}yS};qlZioU zZGG1Jc&WYrFaOj3C4bZ2VAAT}H>=<O&!4-0%YS(WhWGz1{<DK-8$siGH=%<OkLnp- z*)M)=zxaIpubai^|L;A|EFTLhHU9sv`+MtW{j2{B4PUR<ufG5P@t=BzKmTX^xu5g= z|M_Y6Pfh#3^}l`jAM;;->VN*<`nVo4S`E&L3=A8jj)z@a2byKu|I6lQ<NtHk-{*hX z_y75gq{s7l&nyO&!sma_pVzzn#1HMi|1SRfUsrwio$Y_u-|PSWyY|ZFa{bAQ+{FL3 zfB##5x-R#B{l3dT*e_`RoBj9S<7*%NvwtprUH{#_>96$v`>X!n{2Tx6&w5DVJo`Vk z!udpn>A#ozm;KA0&wlQIef;13>3^sHeSQsOcFn%$abf?>K?Nt&<;Ya!kDLFuz2APl zKHvAtKcnySFV_41%(lOO@4PUwssp?3<gdSd@wZDKo<7;#MwkDlPuIWw-w!H1tNxe2 z{P%qI&l`Wjr(gS}fA#ravEB9WKYqS=zkL7K>GyxIC;ZL-oBy|e;>Y;+zt8vn-}*)V zYyJEq|Nrd&!~Y`wA3wtr`=j*-%CG!C@;~|O|A>0)@B9Acm;BWa{<Hp{=D*p#{}*5X zf6SiY<Nsg3|8Kg!|G>ZWZS_C(zt;b}U-)_c-~WH=-+x{I7o-Bo9}U^-zNvq^_g~_z z{jdKwpSb7A-G6VlZP)wy>GS@7|55iv9UgNj|KC4;?tR?5<j>T){~7<^|CxQ~OxeHq z{QvL&*fY$0yg&TkvhP3d?|nS~+9&tx|K}gs&w#ZS*nIVW)b;vJr}@9hORhg=|M&Wp z`Yr!o{7;|rKMh`g*1P|kb^iOE)35$N1CKT%xfjAz;9vXxfA_z6_vSDEzwy`l+WT%H z|89M%u$PBO!$_B%x90DFj(K1EbnAcj%%3;^Z<GJN|NB1gi~s6D$|n4u_<wOdc#7z& z{Ku=$=lp*CeEY6{NB^JbflM$nFr4_`d*Z*v|M-8`f5|iKyZ?WF_08|DzxBV~f1+;x z^MBpHJO97czpH&}|9!@v=W*fxZvCnkWxizpxBtrj^Yd>1@116U>;HMV>7ZHD*ZV`{ zz^h1p9{peV(|dmU%OAh~uD!kg>;3Pq>r4L3ul)1>P4UTkwaNCk_Wzv!-~4~{|C#@L z>whh;|5^WUf7+j7(fP5p|6cw6VqgCM)&JMe_s9SIKmX9jFDHLkf4}j={`>d8@2x+5 z|MGwH_5V@7=dXVL|J;w=m;UcOZ~ZUr^Z%tkH(s^V|9|=a&+{quH;>nE`?LS6{r~j; z-a7w&J^T9p{J*<@-RJNBTmS9<#{YZ1zJG&K#J^8JANxP`|D*b^^*`l5O}1bC=Ue^L zZ=j*}>0AG){x=W%Z+ztcvHE+z_J99h^xOVp{kvc7|Biyyf877e{{Q{`|E!%MMfx>J zk-k6t|GWK+2HyX6Pr3KKe(SXIFP~-R{_p=c@BaObKmXsqzwf7f!jipr^LPIJ|99Hy z|I7?${u`eOUwsrb#Pz5C+@Jeze#(QI?(_ei{ttr80{^eq{nxDi`~3E!`d{Y%o&UN2 zIscE5q4IkDxBn|aZTIRc$J2K2*Q@@QU-oyqU48Pm=j#82|DXJS`ako5?bqwy{15#f z{GWNv|26*^7zF-z|7Udg=l}2gpZtHIwOW5S|F8P?=>}}@`TX5_&G5hf|6O~#|4QA- z|M|af{QFj)Q+piL?*6~}eEiAcuRo=J>F@mC`tSLr`u=~_zy4qQ{Twtmzx(UI>nr}t z*Zwcg{@c5+KL5*)*|mTEzp4Fh|7G6)sMGad|J2vN{&xS@zwcN7%>Qx!SNQ+;$N$?N zt55m+^~X=C*Yl@duV4ILeqQb0$+rLYU#frqeE+Q<zs>&ZgV$(n_k;9$=l|P!w0`~* z?da$B>C*rAKGmO^zU}j7yOr`^d-gy1zy5Xl^Lyog?RWi~Zu{?g*ni2J^G^QTa<pFi zc>SMv=<M#S!oS7uHvURKnZD-#^KJhx{+<sSppUowpZ#yW_5UmD{@?h2-~502|N6T> z-%tMg-}d$XXa6_-sqg=qfBHxKUwMXKPwW?i#+tLAS1<Z3|M#-}h3+@s>%n83@xOl> z-2P(^nmGNR|JVKhGiU<;AN<$4UO)2xz5kI>|6csQulp^&zwW>N?|<>{|9_XRzxRLs z?zeyc|I2;<|NP}||Nck(-231E-@K3WKkq;NB>v;y`uG30Y^{I(zrO#k_5b=@$n4rr zd(Z^%{%arOU;ce=yyyS<e@FjEJ_4uV`G3~`ng2V!=qIR=@caCI_xt~CfBm`q=BNGh z|LbD^&%OI^|K0y<%l^I3`sWYo#w@J=xc^7|-}pc4|DFH8`+qE`d9we%^1tN&U;fV> z9kdx8v>6?=86C749kdx8wD~?dXfvz_Z9v@y2tHtX&i<6HebMD#f8YC``~Ughf2&{L z|NY;e`~Ls+-}Rs4qyJX?zyE`Mg7Ux9W&gH+|9|k`=UeuFpF<WUqs|&$JNobcolnkx z-T%)2clH0-`u+QVzN;7i|MVK}6;>Iw|C}|qzK=d!{&N4f-`@g%E}k;49@-OzxQ~IM z;OOJJBgg+vUj6?6lK*#p?Vq&&+vlzS#f?91-k<kfZvEExvvsH5hxCL#*?$79=1Bj` z&%kh{{>XprqyN)4fkqVn{I6eMZ~edjFUaf(|FauE|1W+G(j+lCe{a_HfB#<mcmKTq ziF$q6&;GZ6%lLoxubpQDT3WpSN#!N`zu&Lazy5oF>FfDdpY;FwU!1T1e<ygi#P|K* zC;Y#Y{Aqek+uzOq-+Y@N`R~og|9`*jx*Pp3<Nwm1(ZBw0pR4(=9x|?6d942R-}#%* z|6lvG|JVNF{MGfJ?f=_P{@?%W{_*pmZW3&8tls9|#dCMV{>OX&yY%b)&i`*0m;9}G zX9$@axj(Uf$$xwBV3_*S^Z)O>{{L^{<NPi5`e*;U|F?_&|H(e}^?tGQ^-KOvUHAXq z#Q(3p%isQfYyPk0zn1@~U;D#eX#e$&|L)tUJ2kQ&J~guV@BHeR|H^Ow&)n<sW^Ks7 z-)r~%wciF_T0Hx2`uBSK>ey<~GIZnX|7+^rf+j}(eZBAV_Tsn6wg05o?tk+*zwCef z?tk{X{+<4R`TvW5N9!Ni|E&MDeo_7Rc;*#T{+}!RU!3`G&$mC<XRrQq{MGmR*rVqW zixBF+|7T=a^ZyQL{OiE~?~1SLv)})Zzx#jo|KjuD$wlx4<B|X0qu2e2{{vbi_Tc~X zi2r}z)Y^kOTF?I1Ki_}r=Y^b)^{@XJF?{*-f9v1yEC1c<_y4(H{`$YpnfQ5AzuN!$ z2^&9S`0)1Y{EPqWZ~wFZYX8~(M?HL!Bpxz|hcZb5UpM>z`u~)_;dcE`!OI_S>Hqwn zD}Vd`zy7uFe^_t30UGzzu3Tpq@BCl&yZz<=F~8nltoQ$azv_R@%m3f=w%_|N_4WVW z_x11B?oYq}{nfv<tG}MS`dt3~eJR_2Y4ZQ=tMC8i-wT>4iMItU-~D@iT7Bt%^?%#{ zUH$+2V?AuD;@GeBr(fe&{;ya6r**Ra+`fM&<^IRN-2eS^eD0sx+0YFK(dz%zL7fBt z|F<6P_y06??dSQMd;j12H2swE?VpkJuk=?Pi~sch`q$0H?|1)`kNtmI?tk{`|2;Y9 zQ|fO$+CTNN{XhNff4=>Hx~~50j(?WlBmQoFVtnm?@$LUF{+<W*XxGpAZ~FiG-1;m~ z*Y*AE|C|5sfA{D6$$$UneU1NIANg<p@n73h!E+<;e?Cu^{teoO0iJ3AjeOp>(En7q z_x$Rl{|pRUmVf;>{pR!kx4zba)=As{soqs%_xsoRKl7{qE&qS#*YyA4|1Vz4GmZ1! zuYapP_ji2kzvF*nkAJKBfBo^llb3#7-2A`3^xhfkUzXd>-+q5W{%ZZnN~?>%qVxZ{ z|Mh(N+5Y>l{q;|NNWVS5dH??jcmMa>{m<X>*Yf}3x4-`1K32c&`~IW<AN}|E6Q}%7 z{-)gD-|qJRFa6jFUfV2ZFCRN!_V$gh^1tVw{#X6`zufEpXa4C|+aV7<hgbctH2J4x zyMEr^?*B*szkPJy|4sd~AJhLliTC|?^V$D-|Mq|VQ!iQ%8IrmBGiLAK`1haRdwup^ z`?UXC{ky`y{agO0e-qlcJ?Lll{Qp0`{5jZpzFsC5G{m^&|E14Nn}6GX{Qu$C=JWb7 z|Hc2G-~Vs+O50lm7PE(bd0%75F!j^@)${+yRM`i<{<+?K?PvLm_dox(Hv7LHvD$8Z z?LTSoc9^r`|7U|{^oxJ|zxVwA_HXAm|3;shyz~E3Slsvj7yh65<(?O{|Np6fH|-e` z?C$)(W%fTGGG_f&e(}HUU;oyx{{8>rul2R}O5gt0kA^R9&ky~(`~Sp0Pv(c$egD7X z|M9=}`p51+0x_+&|F2*6f6~WWPXFeC=XIcy(Kqe?AOGL^|M$`VoA1|uc>AgT@ZbB7 z{_pu{|2zHv%%|r6L1WT0{~Mo&k4XPZV(7hQzxi!{*T1^o`(M<j{6FB~b^d>TtzFdn z->Wyj2d`c@YY<=gpPk_eXrey;pZ_2Ae~asXu{UgeWxx3G`fK0q&%XP=`0M8U_5WA? zS2l*sW<~suUHd=m^nc6$@(lm&)&84T{VjdB6Er9IJnnyb|NkfdPrq^h8~+D+Ch*y! zum9#>`tH6Mv|{EYc*RWhlfU-gqu>0Se*FC7-CzE%`5#ny&i2{=^Ly9+x8L@D=Ks2H zzaFoC@_qWZ{C~geKuZRXfp!j5THpRvzva)xf7$!zvwze7@A`lBFZ-YQXp46h{Qq75 zSO3+2#eb>)U)KMdU;Hol|9RQ}sh99o;r}BwFMglC_rDKlocM3e-SaH4svATv5c_`n z^|y^j_x-<d3N$_Z^50s>0;c}ApyF=d<Nr639@}Sa{xaYF|N9g1xBtuEw)waJ>%aGx z{+<v2yz%FHy|rKCSDnB2{eSFVj0Mtepas(P+y5>8xBlzj>(A_eg0{iMU;87^@XtQ` z-{oKO*XoO}Qa;u!5&r*WtoQrc|G{r7^ml<{I_%{CjrHI78Gh{h8vnlLQ`YDIFP?KU z{Mr9i{_pJnFX#Vz`v2#D|F80Ye_#Fox_;BYx&L=;`LpzW{r@-XUpt3?UA+4L{;L0< z=YIVE>U015`2EWDxqqkc`Ckj(HdF64|G)L)_jls^_b1Oz2W>UkynXZedgWWjH|Lk# z|GNIO|Ep8V|5WQU|9scl_e${p_n!JipZed~|N1lcf2p9o%Krb|fBV1wSHAXt<{$73 z!~8$<|HR+>6aV_h`^mrStLFVb@$cyWnU9f%kmkdOkmmlMZT<iGpZ!~3@4tEe|J=eq z?!TV@Kk{Gq>GuD1f02hn>qFPSxmf@H*Xlp=f74g~@BV+o{_pz5qr1mOcaM$k9vj^~ zHoALkbobck?y>j7dH2|X9l!kFM^(N5JwNMs^~JBC39=1d|N8%Ku4g##eeM6M=aa){ z|97|dXL#^`?f)0>T}}0?{=c}t{$Kq6$zR|9IllC%e(nF?>GiSlyH?4^{{4UT_x$%g z|HJ3k*ZltlT2H$F$=~<jT~7alfBm^HS^xZB)gRg0HlR_0`FrQq{*%54n)my?u6}NP zP`KPj{h!{C_lJKB?f<bq{g3d}`jY<_pTGaJzWayb&%g0+>eu|2-}vwRlmDBZ*CX${ zn1AR0<<EcIzv=%wFZ2KO{|WQ|JgI;B|IYs@r~hBx|L1=FzjuG`-vQ03t&RPEw(j5i zp2zl=K<j?<HTVDh{`$NAKk@&o!8_`I{$E{{+W)WmdOT=Pz4zaE(DL1S*}vBDJO^}s zzR%eA=lk~ezszs{v_JPhZ?*jM`sB1Z|EJyl&&;sqztOt?XTZCK_V@gh|GfW?{%_Ef z`OkWWofhA(|695J|N6c6wY2KrKEM4NG$h45zwi9L$6xRKuABFlnc+(PvFHD*j{jf# z8MNgIw0+|1fffII=l!2h``0|`|HbF=v-aD3-+2tSWoiGaf8I~~zum9;r(pjxeDeRR zwfcMC|F_(B<LCMQ`Rf(yL;m;QFVA`Vth@Ms-e33m|92k$QlFFj_5SUD(Z~NU{a*jo z?!VFQ|MTDe+kWrg{;z-Y{ol*a`SWl4o5%D23;$1_y1#5+)1Rjw*Z+tIZKtT$|E&(* zUIE%*@f;*#|2zK3zq$Gh3oiaz{_Wq=i@)vP{$KQe;$LRvoxA4m{r>O&wV&R<|1&at z_}Blrp5eoP@VMT5UC3aB{y+8w|BQG2Gye5w`Fz{&fA0Ub`Ec>8{nz>r|KDF<KllIg zfBXy)^?$ej`fGpgKl_3I{U`sQE&KOB=jYm-pYgx{7ay-*eE$FR|MAxU!of=nL7fy3 zUR{`z3RxPx`ut@1AMf`R|Mz_VyS`7??BC4;HlRJcU-$ffd9$LsXaA-5@^AlxhI8(H zj^FbC*8BXm=ZybO@3}7a?f&Ke`<3h8e*FK+y0@NT@1y-U-`nTO{@*gqe%HV9|H?P^ zfBe7p*ZjMX1^J+@y?emxHbC|xZ|&{x34c8QU-qm0-zp#c`Tzau|LSY?H|z8M?pLlq z`@H&H>eu?uXzN5kCNMBCOlY6~H~)8C_22K;T;A&!|CjuGeailCpWptqLD}xP=Jelh zyJYwJKf%){yD#hU1+<mp-+%Dl+wb+$-_`G%)ql3WG;{6$pxS%+8-IV7vzPx{`#rk; zXKy_NXp!c%{}Ph_zwY~g=SRHv|G@v>J^!5lfBJvJzo-8h9R3CWVXtwgd>aPTryy#_ zv#k20_ka5@{#*QizHi-=XCME*OJ4o^U-`?Q_5JVN>y2PB=lboxUERKtJub)NUw-fZ z_W#`elV@|D|Nr{!|GEFn6D<E#Kh3Y2|NpM_zf9fwlE42w|8Qg7Lu?%VcYWz!_1%9G z{!jdv_2+WE?_c-d{r~EZ{mkD6-+f*FWc|;Y^Ly9)%l`)&Z3ej$6@R+$>)-wt?_d6{ z{3XBo|E=%2E>G9%_J9A35<?6QQ&#`&gpPUV>#qO1f5uEu)E54)e!p7;veA{{r~FU* zU(-QL#{&Kf#@C+PxxcP%_3QXQ{bww|y8;*(8vfkx_|yOS|I_-l{}~sk{^z%UUi<?9 D`0oSR diff --git a/client/resources/hardnested_tables/bitflip_1_048_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_048_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..99563f5db7d28436d7c1bb55872686760a75c4c1 GIT binary patch literal 4419 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 R`v2lZt`-3kCZzH>0ss~bTtNT; literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_048_states.bin.z b/client/resources/hardnested_tables/bitflip_1_048_states.bin.z deleted file mode 100644 index e21985aa386214af1afab6d3e593f5dd8ba3068f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26711 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 diff --git a/client/resources/hardnested_tables/bitflip_1_04a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_04a_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b31851187c14f4aa24da5418dd70af61e1c18302 GIT binary patch literal 13641 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 XD=Ry^i4gvO^v*;-5f#h&bFBveDnTC2 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_04a_states.bin.z b/client/resources/hardnested_tables/bitflip_1_04a_states.bin.z deleted file mode 100644 index 45c58fce2827dea576fb8621e12ab6458a9e62b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43565 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%0DdU%avQO8){#gIUe)l)|kNHpRf7X{hj?ewQ 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 diff --git a/client/resources/hardnested_tables/bitflip_1_04e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_04e_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..d0a946c4ea8962be0c61cd50c8a53e86f4c2011f GIT binary patch literal 2913 zcmZ>Y%CIzaj8qGbTwM9Mh_NTPj`gBQqX6qoMgc}a1_1|_2A2e$2eS9sPcS+)FffQP zDrji1tY82EMh6fH!^c1jG(yu;eWmX!_a%(4j9s`qH9}^J+{$9eu%F&@G@fTcn&-)x z_3eM|tT#vv|2=8{l5nm+o6;mst=VjFEX|nN*r+W`XKB31lQ3aLi5bD#ijtBcab7x0 zc53Wn2-?ziMB2F_AkI}W&R|K%RtCnc+K&$T%vjnZA#pU~sL@QFki?cvNs$Jtb*34d z6#lUP#EJjKnjf`)3aiGS@@8)n(-v%#u<MC2e%a2`&r_(g;iQDo#_-22Pett(h4YEF z1?x;X%@fbf{Cj@)RGU*jbRrWc)dv0JvRHCdQr|#LTjc1ph&7U){XPB1gT0o&`OB+# zHL;s{<+jO9Cm*v*oRUmB>NDeL=%2Qr!(!U4hf<b>YMn?DIL3PFSj3T&I-!5HREwtk zYg(qJ%yMX*U^vUfJ6fxjH%$#Zz)&mCvnE2D&FNrQPb5!UMCxSCZe=we9m5$XBqYSV zg_4DiBx^|2MT8}-i3~{pa9ZM-vHG_p%f$Gn|76^!vAI9(Sp7@XC!Eb|UNCEF$BBOu z#yn3?o!0m#vv0}&NlQ-!{xCW%I(5d;Nk)OS-Xf_wE2e3ytUCWBsO4$k7p<fjD?ciI z3{w3!Vaf6%_97?c*_0(Vov8CkIJ3!nrslCUt)7U8gW-}6Ne7D3>^J_M!_VXYbh@Pd z&HwGfM<-5_zoYTbNk-(KH&^1MU^X3YNyEk-HG?#jQ#@-nb{V!Bty<ry&SDrTWT2yH zG-JXiXVsVqN5oatRAvU8THUgmy+`YV&#E}hHfOF4#|+in44WUU)~IpqiP+?$b;zIN zNt^s#p>VCq4;7B;sQj21#}faPN&CS<ukw!@i!}dF?G}qn>M^hksrL%)lo6>&oUyb` zT-Eth*T0EjMjQY0f2%)y=Jd3f`pKsc9i4Q{uzy8b!pR>Wj~)}Ba_Z#2{?>MJ^*R6D zEEA{6C4Fr9cixVDN@35@`R;s421nbc^DmQ2sndEadQ5oY>BH?7iFG!$HvMl>Y9y>C z|5##|q01Pr5~i?0$HhSIe*x2j-J+XjL_89nvbuAc(K3l}jm1B_!dQ#iJ5HYB7uvMw zX=r7to~v3&kxo(I(~yncEtQgqttYt;*e}pL@?*8uoH)@xIx^D?lakg;OzkV||B%?< zJzer2PmN@oX7{4Q-tOs7zR1quUGmhx|FHUp$h6>|^-n&YIX<W0Q|jrTF+0x{et3HN zp^<#>xk&yVnPjmz!-7pSA`VMR^hBmMAJ>=s@ae~<$H%*W>mNL2la~D8=3?8D%zpD( zPcOV!JY9L}fuhW3>fOg`BaDTQ`TTflaq`IzefGzvA00kwllo|NzeVMoogtt0bWiQr zlvra}Xi#L==imC_xYi73nL@!YC!d@;d0b$}r;U>yO+5M}_5Z;yzbfP9eI9->TCYCM zPTqY^jsA+yuMJQAvQt0!<zdhC4+fJ@YT7mRtEyV9*f1f%-(#Z4ycO0Pjv2N@_Wzza zr)cv3JedzCeKu>e#<9MO3R=fiur!9NVCm8DDV53-e)01J^XP=}uQ;_%LdVawyW_DW zACI2?>gFk*+h@v&>&0wZb#%%zm1ABXJ)c$Vc_hxGFWT_1snB4Jp<<6=W5ki=5^GLM zoLcg0Y9yBt>!c%_nuX%{c#`x&)hE>$AC_5``e999r2CX$%k##T?WzeUdnA3rCG}Fy zB<uL7MJ64K`B0f=v*%Nsn!n~5No|>;oqdMKY?f6dJ&QPVOma@~%$d`5EY2HNJeJt> zc)A+TvxtKQr&4<stDHJ@#&}+3rD0t1l!(QW5lL${9Jc65K3OqC%x9Wm(@CRb&bBa} z&<Tf*cUDIDYoFTK+TK3TkIiD!&eU$r)@kaJGc5Lm85Ml!S>3GDC)zn#=UB{!N5_1O zC5~AZeEQsdOvcjP#_Q8bgCqk($%vy}i3x|2jZU5Bu~|N)=+n`NjW$0Hzvek+q<vzh zWm}BD@nJQaW64uKr5hGbZ4-HF7_7}YL$W6|W>fIg(DU3qktv(Sb%M_uO6shdu`DFv z(DY`bGwBkaKBZ67Ic~Ge%_!oi;gn}_m6oZANvXl748y1FnP#+MwZ<u<r71m~M#rbV zN^9=d7jK?X*tYT9Iys}`^D2KaFu!!asL%DFXtC;%Ig>d%ljf+aSWG?f&`;|`YD{O+ zOr@QYiAjgmBu?xwIww&$v1ip&j|WdaFvxcXepHO-&|%kEEv9JnW5v#ZPeDZ?iCs_D zsU+>toLI0XM&rqvRdQP1r&aAWKSZYbG#0E^)(n0S-zg)0WYLenQ`4_HKU%bJLalb! zp3qwF2ku8!ZV5Z-c30R_?8>AUo+-^@I%1&-hLQdYCv~@e4SqRg<Dr7XuO2;p@Zj^q zo}Og!OCM|G3O*TDJU+kr(J_hCw(z4<KNdauv1i7K=RKQ#?9@p(mD()HekCGh<Hs+j zA3c}+@F=n4N%CYpiKIu5`ywpn6rF6>R@0uU&u5e@e#H4`tD(+@Q=3lB)E0|avtoVM zJ~p0BM)7RgO{c{qCEFy7wO^}WYQNZZDkWGkVPnUqUkCf!RUUR9o-X?3)UO!%@MfKT z!WzfiB!0+qKa6bViTtR3wfoh>DTzIWC-zAi7{z=2SQFZiv|2S~gBZtAZ&jaep~T2A z9W}?P-kcL#yH2HPrJM>sQXB7n>CBmrAC7*gt<_)nOwV#Yzs=|KI{Vtxv<|J)OqjtI zl+xxUW7w_fC#*3e=%k;7(b1`s)wI=&j3#Td@vI3mTGMe@OfqHT#IB-ak*PBcQw+OK z^eq0u5cFGP<&UY7JQLP0SuV7%Cro=v@EM6Dqfi?IHOa(;)yxMEH@ERg7@Trv6M5Qo znp;k@i$_i4B+rx?Q>S`PiqzN`CTJuP%o^#H%qA?VdU9Gw>XZ$sI-3kq3?n9s1nYQq zo!Xe>>C>{u$1AbPjmNOdN20SUnOUSwGezT|5o<$|x2B=$B)JfMP1Tdm2fGd&nW4kO zBax^%)w3%i#_43lhGSmII^sReJgeCx4kRA>n9|NZwJ1(oNn%6FX^9@6WUgmo#`7#J zeZtaGAL|@5o*6uiTSqeGw7Alt)RZ+o5vL~ptTXJH*}p>bsD;7N#4w}zA)UuXC!AS2 z!zghYTYQLMb5EG0V3PY4L&lFv2lgZ#=H^*2Gc3qx%6w7JNsC|lOql6(Wa3eskcv|q zI}E2poY3r9wc^(zyQz(-iIS=M-8zvPX_C!isfI=;Ba(GCoH{e(MC#Ob<(3Vno=)cG zkx1t0<BQp_EYc^^BK5?h2ag^-k@Rs(Qk|@k%#*U=kk6@gsYaU;r%IgGoEB!7I$2oa zv_!JD(2?T?5~tf_jABlt&Wt#gCYhGnBbj=}uXyU5n2pm?XU=%odi3y=jmZYnkFp<< zO!LtZ^Ek07GEAiY_wmEZI;oS^DD79~lbGf+o#oFuk3BwWJWCF99h}(XaK@*HEt2K5 z#AcmS$Fz+l4Vxu(Hl{Yr6qVCg<MG*a_)zevu2ZSqlAX;O$08$UMrx(bRC9}*uv)2& zaa!ce)XB<`ITA-B4I>jy_81tQ<~q%%`sDGcO+H6cr-mg-7_wD9osn>8)5g>}nvcc8 z+$58Z8BRHpYIJ6e&%BC{6*kFYdMSmKX%as)?NyUiXNDPZe>$z$Ejyh@Em)i{#+k=Q zf={b9=uen8PtS(cqNx(A_BD%aSQDDCF(T#UG^5TbNz>dU6SSU6PLY{BX}{K|$rDa| zd|2c@Sz(VmSH<L$e4!ueg6tU{o?0#%?(|2#{c2sZT7<#Te)Z0W4~`bu1<db1X6QGu z)^4Wcj5Em+n-VAUoQX)h>bTCZC)xY>!PXB9pC23RJW#eQP%D1;vFGpu_W2U~|LHyH MDp;uK_W9To0Mu|6UH||9 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_04e_states.bin.z b/client/resources/hardnested_tables/bitflip_1_04e_states.bin.z deleted file mode 100644 index 3966d1b1064ce602c774055f0f37879b3c117248..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23874 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 V>ZA2*|C|43H<12szg9%t8vuVEJV^im diff --git a/client/resources/hardnested_tables/bitflip_1_052_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_052_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..95d0d7af7e9ca9daefb6c8ef8bcd81ab6b1146b6 GIT binary patch literal 2732 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_052_states.bin.z b/client/resources/hardnested_tables/bitflip_1_052_states.bin.z deleted file mode 100644 index f0be53efc8fc89b1527c0ede596b138259295129..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20931 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 diff --git a/client/resources/hardnested_tables/bitflip_1_056_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_056_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..92dee0efa573910fad767a32aa32fd14d1de51c5 GIT binary patch literal 1540 zcmZ>Y%CIzaj8qGbw9nei#~_|x|M%wX#vP3FMP*fG8yOfS7$h1ZA2KiqTx<}KV2S;D z@&WgLhFVpR2BuXG3?RT{xy;R3jU(ewLa#~25niK|1O~;kMn;kb&ThginTy>NGAAoD zF!E(ioN%&9%3y}FuaqIP&rAshj$)slHXnhDEeEACE_O(zoH)SXuu@ax%T1M=w!v3! z`mVTe;j&xfVz*gRnF}s<u&OF4skvN{4o*3hV(YtX;VWJS6S>7#Y?ZJ45r4R3g8xPj zpP>0~yMq3kYR#BZeJWBb(py>SfZam1aGoi4%33{Y9EF85+j(^Md%gAUntr`Q|DRGo z;)hj#5|iq=>cZuxJnWxvPOaw6gYy#`kDn;B@@qe5vn$rPO?k7t=8Z2U6>-gtuS#O# zAJi^?zq`yf;`|TEV-+!l(|MMQMMfH(eh_J~{*126Os*79YmQ?-ZT!rY1&&R0S+eJA z_<>sgo%Oq3);qnmS#`9T$4>dGt$)I!LR--f{l)T}$L~~>8BX007kJ1*@-oBg>N##n zho1B)76*FzPCPgNU~+4(mC(mG3ErGev)C_u-|^TY;y63^3)|<3KaR=n7febQnd~{` z(#$rKXa1W~{7Q}_+4b+LJN!t$`eo{j%9!*=#!LL)*%`NAh+TefzjObEKgTD_PccY( zdvS)y^%R{1RaK28lkWE`znT@yy>h{oDAg6Wy?Hg0N|$@y=G{KEcTb=s)8mqKgGJTB zQ?3{;d)3_)t@dmCwK?%j$NBh+N`B4{UU;#4GygODfcZ=I8B5BFIbO8b<lSoc=k>C9 z&#AA@ytJ5n@afMZCyyT5*!kc8m9fnZ`NF18HrgjE;x4@{nL8!9bIN9A3BS`DPV2RM z$*ob7w20&HG_nZa8atoKO8dY(_gm@?CE=4k73>ujeX&31n4w|8w|+;9)err-9uy{~ z@oY-g59~PksZT8?T+D{`ov`-8sd7Di_YQqqwXvG{@P%VOkGHfZ?OEA$Sj<OEMy~5c z@RC!(UH=#-Y!p{}l<D`&^t@M|)QP>SPxRal#d99DNJ>hvk(l@7$dB_|ZS)VeN*!5f z$E4@E=hU)`ozk8<&OGb1zAyTDf8(G2E034&nBFooUeYm1qxnnGR(|It<&zh-dY_)u z$8zCju~nb3)67XxK_WdbRa<r}O84LR+2U7x^5K)V+y_o~9&WbS+-w&#{o|DN=Ufie zxkN1O40rVwO{{sp@V8rGUw`7E>d2d&GYd{{oqW(RCgSbPxtqK7Bz74+yxgr*ILBzs zarfpcC4PE+>KTvDNqi`<IF*z%r)<Y=zB|^bllhJXZ&phA6x^k!7HJf>SjHzTe5%1l zLyMW=Y<#S#4-JnLq|DJ-e3kpaO!0faX8by{=J1sr>r{?*x635IwvMrQSWvRNz^L$8 zu<)G<=LIjP9_<rz-{7a+5}7(#%}-mq^V09rIuge$l$W+%I(kg`K-IjZm%d8+UHAB+ zr{3Q9z}jG5dmhV|;8QP;UYxx2@`4w0RbRa=*tC3O$R<BENuz>w>SD>lI+L{<HpNJ$ zc6LtMkgTVyb>h)!<sQRnVMZrTwnfN2eh_zAoO7PP)+b@nCp(fhPBz~3eedIw7bOl_ ztP>YZ7OC)Od3^Z5qtiUbE6aG(($ZpN^z?d4cE#wNDJ)DpCV8B>&3L(6a?cBUg{7MR zcLglj&$^IF-mse?amv&gXHr`Z98EZppyQLWCSs<?X3@~YK}_;ZixrJltzj)})%4k4 zE#IiW<!Hnvo=F>Y79~iuPC2EM8gW`FHFauIYRZ`&ogO{8fTfjzp2rz1#IrZ+M9efg zb#l_WI~JM;Z*{FZ(RVz}Fm;+*SW;SKie&3dV}s+#TU@REjD-!Swj7h3W;D|<C28Y~ zGd`=%EECpRcd2ZRY-`{x&s%+>7OUGuy)8Bss*B86D(Q7<(~gw~HW(hXJQ&>77ch6m z;iaNSCLOXW(kcvF66V=(^yr~=B9C?i7IybAcXu~EI5_b*tDZ!+#G=z$GmVxePCBd_ zIE`~UAH#z~#@$U3iQcVEiLDWdhOJ?Sl1*p&c$nL?9&0^jGnjEu$AHuMpWc(Mf`tlo HSJPwwvwO*; literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_056_states.bin.z b/client/resources/hardnested_tables/bitflip_1_056_states.bin.z deleted file mode 100644 index e92d411b762daf008f00f23a650ba966377236c3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10868 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 D*G#_Z diff --git a/client/resources/hardnested_tables/bitflip_1_058_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_058_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ca2fe1a7a020fe5c20f77e1a395d16e40e0ce975 GIT binary patch literal 1573 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 OO!N~`;XN<h$N&Juba}l1 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_058_states.bin.z b/client/resources/hardnested_tables/bitflip_1_058_states.bin.z deleted file mode 100644 index 005459173506359530b9114445a5da5ee53de476..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19459 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 diff --git a/client/resources/hardnested_tables/bitflip_1_05a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_05a_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..2771dced1a435e55080a106988b46d78dd04d33f GIT binary patch literal 4469 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_05a_states.bin.z b/client/resources/hardnested_tables/bitflip_1_05a_states.bin.z deleted file mode 100644 index 1dfa63c7049561e4adb866f37c74cc01e9b11f2f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29724 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 diff --git a/client/resources/hardnested_tables/bitflip_1_05e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_05e_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..94c8612fd3d3e38e229b7568d5f358a385055d60 GIT binary patch literal 2026 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 Spkx0h_N2%|CnqC&uNDB<n~Wv^ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_05e_states.bin.z b/client/resources/hardnested_tables/bitflip_1_05e_states.bin.z deleted file mode 100644 index dc0789685e2c6c56ea2295e7528f09801b89deda..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15828 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 VZ$CfX{}KORyyMA#CMCoCxd1F)NQnRd diff --git a/client/resources/hardnested_tables/bitflip_1_060_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_060_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..edc274c4bbbbb3830da0840d9bbadeb5297d5d5a GIT binary patch literal 1534 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 SB>g{nXQH2oivHe4-v$6cCs1kt literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_060_states.bin.z b/client/resources/hardnested_tables/bitflip_1_060_states.bin.z deleted file mode 100644 index 72477c138b78d8adde2360463bb6c965d94aed5f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17332 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 Cr7{r! diff --git a/client/resources/hardnested_tables/bitflip_1_062_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_062_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..5b50711b397bba925cd5b8e64b7d4909815b1918 GIT binary patch literal 13374 zcmZ>Y%CIzaj8qGblutC!V2&;MdG2b+RgQxJj0_VP7+4sX8W<ZGK=6U_yqcw=A@XTl zQ3i_HL0S!~eL|T+CUJ&n_42APHLwQiZd$?Rv{copL1Tr3hY%N+2m_NB0~fEzLPzgJ zN3V<vQ@H{awU}-$4QkbDW%ObeVc=z8KoA^3nXU{BQW<JX7PU(GnwS{bG<s@uOyn|Q zzLNQ)(|@PdmZ_1`oGyw#3$a?Ew^Cw7inv3j>jBrU{g+nqhAN#1oD$)(X;qukN}EM; z++GGBy;6e%wtD4;oRA8fti-FS>#|J9r(>(jmY|BuC#LM}>iS~aTEX=~HhkrYFI_4# zojkKtwGS~}<uF<i?4@BbH8eGpS7qS=ZVr=`2C7X_t3q};U0J%6*;84It>w^KN1dfU z3sVIbOr6T*^1m{K{lro>tzMCCRj#DKRibPG3$muNsW@gW>Z%l}5&b*)S4QMypM$f` zN=K!wN=}_6xok~BTC~Zrt!qvj9BtpS{;QUe_OF)tSLZXX=1sf1EbXD9ky4}*=cI_H z4|YCDm2%=!md#K<vhwf4h^be_&nynq_mEo5vNbD=C+f)A#8s!A6<6r!23<8sR+D^K zQ#+$(%h}BTQt8_=KH6@zXsi)2@O8C6((uPA{=-zO5Gm118LO@u%~W$ba<EW%mCTAw znwh%FY7x^GoHP;sqoS$b75MK+gZr-~9^s<#Q-hixYi#rNZMqq@%{NO-F-oW-s4HYb zC!6N7lZlDFs}3$s>Rp(YwpDU*l+LwjCOO%XQ*O<;mhE#o(c{vp6TYeo4bymeS{L11 zwP~wV&r>PK`b51g#=aS;6QvGaob1yZIpfS)BhyF|ooiR3lF~${+z#!za_Q>SX}oD` zjgF}u>NPfvx}2G7lGeJ$XlrIh>e3^vhmVFVchUYBYN&PC<Yp9Czo+;`t^FC=Dq)HV z(^Z2{OxPE)yll#;6KCAkYW(}N^qJX=sr`*pCiodnG<BJh;9_(x;^~4-e%h|bRO`A~ z{w$kxD$D8Fv`Lp#A0618w#YIeE&JLXjS7>M)rMEKdA3C=&lYn$xpvmJX{wUkqF&b| zvw1vT`b;WyUFx%u{nj++g==+}EfWqqW4P+F=VZ0WNnV$Z>PjUhXs+rtj+(J1(m3hB z(N(FTO{Qud-Y-2ft{hgKwpdtcgQ-;1#)M^D>lhcViga6PuqA9|l8KS8ujte^H(j5G zBdg?Ah9q`ey2=x=*k`h9<I*X*V#_uyT)FDV%@jkE)5gNLL@PaPl-6jZdN!@Pte6_L zGQ&r)brr9dfq~SN(*e`8RXbZ#W-0yrdHr(8kL-s!6GT+JlhuzD>9KTPmkE!|+7h{J zwdcFJQrZR|SASYrnU&dfRQd3+Wr-(toiw$&&gFlA=UP^;*k-9qr%iN@^dxOC4$Jb% zHqA6#ICJ5Qs8feCC#EK=hHluZ);le8v**g5o(s3cqO^UoZq5{2yJ?fL*sN@w)M;C? zBMxUQTq)&aBDE<?O)JrmwIwxk=1h|)gKJW&PFzW?Yt_0UtkCCGBsJkk!qt^Cr)8Ti zo0c3fQ<*1I(kCtFcCO2*%<h1!#MY#%i`AHUHfyhB=bkz#CE=XYOPMXnIy{?=)uv`n zoO0?|)RoIoIX7~0rLJu_8!hTI*J+l(VkP#Up`ue&GuRyFU0O9ym9^SqWvXW)SJJ`- zMpJsGrh2a8aSQA?xNzDkiMC0ngA$G$)ti1qH?(E5v#~DgvYshtB3Fmb>~)(u<>bm$ z2QxCKMO@96dKj=TQRiCd%vEW<o=IzU-P+fx&SYC;l&o<|ZPHPmrS98%j(^ztr(~Y@ z<K=P2I{IO5o4%c!S#tIA$$7!u$Bl2>%-KBmj&aoKxz@Kn8cGMf_MF~pl~#3d8Lz3g z$*iBNZs{6FtlPS|P3_RGr8i7P_Fa7Q;^@;QH9ecI?bWPW9p!v<LUrkNF_llLQrQtR zmqxX%Hu$MJwPLIA$&?w|DpzJ^^Ozi6tH#;wtgW;8Xvj2=wTzd#n>I~cvD!1qI512~ zbn3#ch!m4)8_oosxMIw6=wgJaw#&7+^T9uU{HgFcknyo8)uv_LhB%(W&g0XvYkvG* z`RMe;kB?6q*2t-?t*X6x+Th31*m!n6x%6r7JyzEWt>?);D%QWW=wGN~JxkwGqmGka zr+7@Ad>JlHO=(<Z=%XuY)U06|YS^R0rnc&sue0jJ)ouon-cFZ;MfQ0uI>q%!S4}8e z+h}c8&!$re8+?4)QqE_sTR3SZFUtifHP3(c_kaD#($$p8xh&PWNo;Gx!j%iorb*76 z?UHgawR2KZWJ+4cZTCkjbpmCTGZ*<ro#8sIvRNoPbTZFIpH*pYQEn-{Vy6vftu{*L zRh<!aXzMgj{#9b9BXz>gF3t?=7AO?WbT_$XI_;9=;)GXP2TKf=8Ep>i4Lh^d=h&IU zS<7Y|^UYivH7lp*+J?)_Zk$usispJP<4IOIIVndqTeXK*t>?69*qSu6Y@?%Xj$6Yf z3$8k|DK*<P*jaJ0R_dh7Y8%tFOiEjeO;$_0W<&?J9W`AwD@*E<a-?x!+ScwU-_)6g zZ3ZS+)+TC4X0vVBa;?{3&6Z?sleH07j<yMl&DywH<e1lKv9)fRscKRwX~71UjGaBR z1($_nGy6!K*fdRI>&i4;O@&XPfr|vT2(3}lt*g(nxpg_>?ukl%cFn0p`>WRLOI@FM zqbD_*jeX+M%q81oESilx1-v~)4otc*;bM-J)638myVDZ8O=orX@@8fxi)OpI8B4B? zN{%`@ZRTpn8P|?YQ%mi-buDWCBG=E7!p>YLTMcHZwJp`_*c-HIZ}Zb%AD=E;6E@T8 z{pX!`rhI+-u42`X(>gOw8~PZ`G_l$AX-%BA!KRXkC`q+txeFJ$t44*U>NWSQl{7ju zqb+d4nT#1ylJcoPHu9|TNl2Xhr%V6UYHiU4ky2B#76&>zhxll&3c0j3Ym=BHvq*}M zPe--zpHrJsR);L>IHfBSD7{G1*&}0WM8dkI5vxTdm6<k$oXj!}3l7#gv5e)Yo5)4& zAoVNET$ffeMg_i;^tD@XLN0XG`eUoUds!u|t*|IqW3*0t%BsCRTEE&?l<4bt&D1(| zGFdlqEpOCflZ&A>iCeSIMqSo=uvYZL!DK17rPDTCm=_QsShQGirBr9H*vcrWl?iLP zc|wb%eA<>;h1zvZpW9=aI&Eu7@3FAOCf6cPD^~I}hh{Ba8muf~5v+RZ(q&_#jghI# zcrJS>)rw8|UCi^CT~AM}^_yl#)@iYBXM;=ptD-dRuFPBN(~%-6RHr%V%BE>k+mtqO zvu3(J3~ai{rsf>Ba?yp0KY87hHA@x;ZOM%2-x@iwWiw~XWu6O{Ls!Oy=mb^FlsINm z$}D`cH)_QxOMypmD%Ya4O{ejkId*eWNQTGaP*-^_WtX5QE)q))`f{r#ISX7!)tR)> zq}gGuut=uYK_kiFpji|C{C~fy;oG9HiDFY+yELwPs!r$@@^#r1eDmA#OP4aP7%n;4 zdZA#AsnwQis+YE0Eo9e8%S>ABa$&iPiQm)}YfSn&JFl*?%DA>NDm6Ui*qn%%^k}nW zZKJC*r)KI1hfZCRDmF9OCn|eZ=G4qnuZ3IHTvxiO$3`4%n{`#TbF#M8IhmbjXPyo= z?lZVHoz3X*x^nB^{7-(y?=#sWH7#2=OwROp*sZLSGv_3pHn6%n^T}M*6GvmVoc1W4 zl=9=cy41|2y^7P;`kW4|j(43I?Q<pb*xbm~I%kuEXP%t1t8~V;saN#XmTfw0(y>Rg z(^OP4FnG$0`PbL)IrZ)Liwm!R@7*(fecDc0gPKbD?%-qo>$gun`E}t(qnYbUOFo8A z*O{)mv})F2e>wJ`I$!n4$K@n4r<rUuTFV%(<II>P7{8Q%%av)fvnr-fY)x9tbTv%F zVCs=QYlU?>_q4ZM&60Fhd6BSH{(^=2L_@WSS&NrQRHUw)uJAGRpebkPl-lrXy{Q$p zk#TGE!`JMTyQ>~jr}1>!*6xK*Lo=n+kMuh2Y!2)=CLfUWlzDaJTE5k*tY>#DZ@J1V z@?-sEp5NNbwj5p7pZLaTOVy)_T_)$c`Z=zqNUWbySlAuB%0Mslz?Pswtu>Pp#YMbd zt!SIjv!s_Lbk(Y0g{c$VxO6}EZu+P0tG2V~XR+~*^M>wgwr!4VoxVNUa7}XLtenSl z)BM(KOnS8@Ug-GNWf2*+eycCLmg<Qw{Kc=W9DL!&rjsc%6Qz1gP2;t1Ri(@*y=Lr_ zI^!76waB%FeKSv=zE#vN#;dcnGF#`VozIF(m)(3K{JV_Y)VFOq?rPJ2)6Z??Z>gxw z$GR#d7khn}v0lgdq{+w0Zd*RQlyg2>Y11`N#9DJr`_8Ycc?_57#axyO+poN4*7ZqG zdk$V(eAwsM%+e>>ktqdNe;CbKBR3<NpJz_N%ecS%$GUlgpPrNN`KWqn>yP=~owZT( z;-vh%`>aB%rF^bNZVdd>P&e_?ii<oQhkAovnY3jcjX3QY)w9?%Q%rNJl+=1PUeC@& zrlt}-OD;}1awy@H$xLNWL#e43ISy5N{hey#80)l7G-6r1miyVqKAUxC%gC#(%s3@w zcd}<$uT|(9)-NWPj<lcnu#4%(Tnj&)<qM}IYx=i*m@`#Q$8oW+*O9CKH`eQNM~Qb9 zCTf0@I=1OdMDnAJ?YEL64omj*tVud1r)ATtec@Y7f6IBU-(tMM%FbR_OxJ8#KZRdt zx!bkLW`<e`E=L6yHI)P|b$YS#z*_B<3sYAZ8Ci;l$oK}O1sk98kagOkx==S@ji|iK zC%=hV8JoMdPP>}ZHtVq1wXW3Eh0`QXYwKRom6Tk%M%(1*^3&I^T?;epwfg5~`KM2B zwN;wwG}~$Rd5f=Gq<_6yz4GPqvbQ^59ox0CX_89fO3oQEiR}v)&9k!lnEAF|Z+XUf zeSRII!gU+Bzg_il;e+E=m4Ab;+&i<=qVC7)zS!fjTcz`@PanMVF6xZ1p^nIrk58I! z@*J?yK7Pt)uXpp|WpR=IJI-r8UGlNIv?6Pd)p7r&XT#6VKHh(#LH3^IhKrgy6E3## zOHN8zS0<l#b+Toz?b^&o+3l9P>n`stT=RL``}qA9nGb%vwmiCY&H4Vbg|}{>_#F0p zeP{d4>%A4%Pd+|)aqB#rqQ6GZ*L|+M?|9YX@E*q(QU_iX<_T`vBU|=t&$g1U@B8v^ zY1Mmd@;GUt<IAnF?IurFW@g&zPf;_a!e$m3E;v)K_34{D&&TSt!x`V>ly847HtC&w z^wafuQf6oNC$3!I>t|%OsPy&mVAIdc#}AdqO0=;|sh$2<?`GPu<2Ca9wfAg(J+IR( zy<R+ROWB)Tnai_|{j^K&=e#nh&0uqItX130wzSU|83mbsUug<|q#4z4F*IXkqpw#g z+mbAA#nve*TS9qVmzpY^=n0%SHMBP{ZL_9N#<ZT(*{0GG$2R+FM`ayT&AQ5_YnaKQ z<D-@p6ztZa77=oFR_csn9n-QrmQCTAaxzoflP7ZJ!WEJp2ctX}CasA$nYHO+>WYN3 zLZ(5ReYm~0sOp63DjhhHU>bGBSyz{Bnd8cZ(}DySbqh=rl$wy>b*XLD(r>C>i)t0? z&SvxarlsXv+d6GicXpKBh1C{^l1@&VFfDS@G_M6JGZj0o+`8;`B6XSRnu*i4wjAx6 zxmLn-rZMki-!+#blO<;^IM|cB<jmEqv)TbO5<S-nWlo(T&6DM}W|EGt?vj}+eY%BG zrGmW<i;1mPxN_M|B_-8OXIk5|$gs53HP<vAc%GOpv?a5#cb0e9wyvAoE=m~ad8~CQ zJ7%_V*4de>raK1z2-<h;Y@Ei0N9(3qY}s(=rAd?_*Q=IGi-S6sx~Xk3TP>BAEp=tn zr5Q$tHhcAE>YVg3FFk3_o-?H=<3+ZlyRc|j*G8iq)~nqjPHUcc9#iym<}}v`qqbtU z%_axe7EL^o8tHS{=xW;x9o7e{mN_r#^~?%$&05&YIWa3v@Zgm#p-U<jxrb_%v_9OD z$>yypk@2c)%bB)ilU~leI(gQ~sR>(VE%rLOEL+_t(xm9(uEl<v7O%*1Gu37H>#}w; z@zvJatT|1)$81q9Q^}Fk!Yfwq0<T(@%uN-$lxbBWHZ}8F&z3W6Nnt6$OE#sPy0&JG zn9jwvh_*#nd6wn+Mr1Czbk@|g>0;-~#ip#s1CLHTwqtEd(xs%Ft!BZxscl(DSEcj3 zIJ24O(hB~+UjA?On?nnh-FZD-aMn$=tZfnp^B&4BUF&&k+G@?!p0loHD?N+7<JLF# z!t<1}+q>SWyen~A)}8XkPDF3tr>nJByUvJjU6>YXo#w{<?{C7odu{FCEz|kj%da?J znf%Cp7u%}8x9i3Dugq9|X~lolDLQ9Nmu)y}bY+8Yu+U}p*IwR&qFIyNKWSf`nrp0V zmX&PNWw*?2&B{7wkvXB$)Vf2bxlIdJ5pDGTzGTB1T_sayuVuYSS(9HaKA6Pja5Xi8 zJJ4#yo~WMQY{gX5z}}F>s*Q_I`Wjuj5)tV->vG6yk%LkOyw0lAM5Z^jam8$%5ws;$ zZA<Ekg)^45x=x%lQ&P&;>r%$)(4?y~wyxw&IM%Y|>eSwBHQy~K!xAogh5Yd}ah%e1 zk$KgU{=^q+g}GgS3TA{xF;4X73boPL<W;SuKVjJ<i!OCnAH~=Z+ez*LU4NIX_@Hv2 z(kV*U)n-b#SDZ`6<fks{nZyrrzL|1lkIUqfTI*V`GL=kq4^Z!7i|7qm9n|gQ-?CoI zjO*H(Bb&H+eN6?@QYWPxOEB81xhYi2Xj4*{kF%O?Sah!DVr?FsW7@hBN6va@Bu<># z+GFgv;=-nl$(lV<YcA_tIvjOv%e6GM!(vx6*PKmOYg^14nXPke4R@x0$Et5p3MV_J z%}UE$791v#a8_HbC)0GzW~0N#aaXn0%iZD)_KE6jV-D7KTQzfu;VOg6QZw9U&N$oa z>$7olmA^OFj0-DQot?Frl~1e3D~V_F4L7fs+Fn})GQD0ItiCbvkyuFQD$$FsPu&+f zcXh8aj9dC@t76v!_f<0(|3k(L{eFa|GVwkA<99v&D#yhDMusU2B5csnLXHQf^J|(` zy4Hj&NangZbHQrgAO^NIw-#LGHR<Zzz{)z~c4ntbYtGuhj8&o`tJ-ccdz%JK2v{Hz zAiCD<07pYuvl+t$uG>P<3}<*WeR+)-7`z>qYJ>(Ptn_I!m@$h-up=eW;Fz$mW0N6I zkDA1xqznT$#fdEkR<3GwyJEz^z`(guW2%ut23zC8We!WGxGeKrYBt${A#?d}NB^%A zC01=Y)^ybU%L+@8IbE5Kt3nU;Iu<R|<^I8-6RNp{S!83-S{Gi$P#dB3S}8hlO0yQ6 zm?509mg`i{T2G!%BUSqwPedMRwyG`B`}Xjq_gPim8iD?acAmDJCBe=2md31pQfL>l zXg&9lgVT>s4dh<m`?&Y>eA}O1Q>IpNbtPz2EDbuLn$S7bP+`VG;nvWwiEJv(6WF?z zEzwnsQcdw#$B`s9k*CAZYpb)DiAaj(Bwxo!7gJWJ`C1dCI+8r2G{ib)ELm`>OH9;p zVo-31r@D)6&ONruX;NEe3YkpG(wUsItV_jPC^||oVRDdCl*eSZrQP8k`_D~E(Z3Z` z_vVY#hHLTje$QJo>E*O@N<N!h*KC_{{>SSt`|~!(z4|myBw5qGRsENz3EwJvflcgN zn5C7|T)1<kE(={~idr*m)iSr0nFh%`#)p3VO8wY#rY`w^{C@py89(ecylSiyk_??N z|89W2%gX;6-YspS1sSU@rJA~_TuGYa^k7|6)`~32V4kdHURNbVe=ijDpXmBOC`kC@ zRW4C`Em5Tkue$j;E1F+6+(^3V+jeob*0q#t)0Qn&T<N2`bY@oO%1vo*Gb7iWT4?B& z>$o;kIoo$hiszP~+-UD?pR2PnRi|y*FyVHvmZ6*Lij-@;KCO~kz00Bn+^spA^WC%x zJJ)QSayZ0TYsRUpO`8r&t~OmcO=7L@)?ni-Uz5m|leujxxlJx-F1zG)T5VI#nyh2D zZh2e^nl<Zaiet7|T2ErvW%p36LYd14oIYsU24-n)O^sZ-)u5%yYktVmda0=ilLKa{ zJQ01gGWeC|-BpHJo0)YM{@t_cv+lI5@_&ne@A<rI%kj3|rrZ0T#opcgM^3KdTiTk{ z(_&2aU;StN`N;AmHNhb-S55ym*=hfVBO5kNEX~RaQ<^8Sc-w}_tC@}EZWpbzndVe& zv_sM~H_G$shC^1<7HK$cj^;JoFzvFhiRi%$?NvP?mj!;Wnkf^u*0;wfY<9%esjEFF zs~LNF9S$+txafptQ`XkCy1c$pH%%lqY-AHj*fMGQtAGtx4u>3b^Y$__jGA%fqPKw6 zlEZ-+CT^3R4yJ6443qF#v&G=bi7;2kH&fM?Ejc<>!c;hnJLJm7EY($6X$nUdPPv(3 zXmTtq_)2J{l1<lYB}vXHs}2Wj+OW(uCA4)ZPs^n(ZIe=0cnb%v%<2(qwflSi*yP7{ zrpaN4P4hDU{JTE$^S-d~>y~yKr|}$%>Yr7VvRQnZz1N<UV>~P3^rdDlJ!LsH@yw%% ze-tCvT$NaJ%^+*jwKW$dTYU{oeXgah4NRFFZL)3FnTbgeTW-!w$(8Vx%$jf`GOX*C zuj|IN&d$V$j44}=<(%;jyBR6j?X%hEvd^*Xu+^zv8%&ZeWThOH2-diwxk4>cWu_$O zl8f7BY{{&f<dHQcQ>B!<F~=y8<=ROlPu<0CMx86AW?Yr@N!zyVw$oOhtc<W_VajTT zDOa^amu)F!cvO^VWSH(1qps_d+H`eowzuN6sjbu28jH<bcI|3zwB*dCYjTA=OEj(q zs4ZIfkJYhhv4auISFg!OLcOnsOb%3I^yyj~7%9}#b;4)TfeQ%<7mlrx3SF^rr9rC6 z;>izYMopYCbH*i!liO~qsQ9XOZsN}A<=G-NZN{;v%{(QIcB_2ONL>@#w8f3hXPNre zl~J42CS)axW~gxoNiux<IOAXZ;cs#A+dV%@{>*xOI%>n-NU77etuil%`>R#@E$>U; zRvE7Iyj<JZ<n{E@mrGYh3(wTG$-HcQjn^P^(q``X&>UUksOeER4=ZQswcavi`8D;; z)2xcC`mM`m&bzQTbgkl}6SlivcMDY-^_s5nxwMvTwZRWDel^VsgD7X#uFP2{BBd@) zNYPQd?DAx)wu`~y1?!qcW_l)Uid-ocq2?piI?Y=vo9Bv7FI(zNDQ~frNv8e&?vEdT zd~AIFcf~&ao;3dlS8F%!mo1(3dRp4gn!3b?{o%*^B_}`nkh<P~*UmI~q3QbF?fk~a z+<SJ;Jo2uhyz|WdQmuN`p!r*xmr4nonsjP4kCM)+)v93v64OFXob-0MBC#^-YU?V) zh&72TvSvzV91A&RvMgeY`i0J=0S_W|g*LlwG3L7L>&C5RXtd_!yeqqSIVYUx_1Y-u z-ZlUE$Ie`X?7*xOo4tG!dbVx4I&n&h&zjr1X06lCPU+5_mT}8dWYVP#7js;voDOVC z)!Ah1a9bnKOSmI=!i^KUQD>$`rc6un&f1tbO?6S!)u@bYX64MaQD;<6w9eRaWP``X zneke;lub9C4Q;r&=_YS-QsmlfQ`d<rO;>JE4{Fx5T()toaZcd2tXy}kX>$!S4rZjB z70%3Y-L~YKc9N@#<~A1>U9oK&MY2>TyKoCjhNYZTN@~m8;5y})QO~T!JS&%ZMs18Z zbw(me<<jl!jEUZ!i=EQUrY^Y}v02hE+h|#vv)h!@A;)@?u6r8#nPhtuN3xmC)-*9o zTe4xJ&%&*1a#MS@q#cP?I_w>FR$1jzn$fYq)j^vBW?VMuxs*CHGGmQN=E7d>Fq5p* zDJiF=Hm=y3WVo_dOyyEfR7#qc6U*#~%-k(*M`pO`q(n@M*c^1$m&NOo!x}A-1Ke6u z)${Jj<nDAc4_j*L61L{{`|fUw6M3w2qAg2z|9(Gx^}Gk4%5GTe@^2|Jiiv-*-e&2O zlC8c9OJ}8Y8Ya1Rt%*PJXMW9;Uk9#SjoPx>;MZ@nt<yZ$u2#*+&PwrEm9yL_HsHjr zlQS+|4)#u6y0)jAJ96zrwk^s^F59-aY&p4R+O<QjE0;x1>rR?<I`t*<FGJ_hri@IT z2sN#f5m_N0rhHjC`C|CjpY?I!Yc{Sp9s1`-<;UOeWl#FA-@fzF>W|YR4W}i|NHof* zOnn-$CoD1LWki(E(#6qPkwNQPj?5Bw?$wppbkHcQ+3QTkS~V%VmEX=P2Wwqja+&{A z$N!Rypi{Gaor83GSuV^HF)>&=B}&xDux(P(K_6v}l$2H9LhVmAb0zW$B~4>GIptMI z?1iv~LsBkAvlgCOE4E@*;FPcx5m7omy@3mtvWaYRoD!vR+Qh3?Aha_v%wtXCi>sN2 zc2`WaKCN;3<LmJ~>q^`sf6eB=Df(`jM>d?=T56JVO0&{U)voi!T-B#jMOR3yU2|); zwy&|zVa?WTDJ^-4Y@ck&wswuAc!_0(6FZkBhx!YxIv99SH|WTk*44@!r?yP?xT@>R z&g|K^(8{ZpF|I7zXl-P+$Ahy4iiS#&!Vx+rdxI*~nl2ftYw=9&=?gX385Nb5CN(WG zIdoRWLjOgV=I15ONqBnn(1m?1SHmJxE~chMO#K?n>Azv#p-8Q*&YbcSQ#Q?VbJJxx z=*!t?!*Xd>!-)f@g*BV`Ph=z+#E7<LoJ?82Y7^%S&yB`9EgQOXRc%}&L?2}t_N1PW zm?v@CB~#YJ()*~?tYep4w@q^OY`f9J6{a<5U(lih%AJf$be%TLnjEm2S>x1<Nhgl1 z7234SGu7*&4==Y<)~a0&JDD~uisFdyl$fO15-c(;WR~mci&e9x`8rD&oGOSF7Sl62 zqs|sls65SdR+QHz6XDLNsV7cJY}5<6vg6Rs)HK0qQ_FlZPn|3|w=L(GaoCzO25Ul& zt!7;qm33KXW_o05v&_0pRzgX$G)}x;En#pu%00^@HQjjia?8zDS!spGq%OVMI8C;A z=l!35>-FFMx8r|SxBQ#5&ppJTDDS3Y)3Rfu*3CM0@Jx1`^OBtstEbJ(<lE#kf7wop zD`#~w)@(XCGil!aGg~fhI<qWh)8mL^X{jr(?V5SqFI(;4(XH&=-bTl^XxdCU7^$&V zW93n){_C$FfByRP=+{3rQhobZ-#+s7<s6yRno9YllaI;A$H~b@#<RJlTNXamm!2-% zx#&w;#K)&G?k`S!_;|cc;<Uu3q%AArb-Xnty5uj0f7vRmyRlNeby0#zaA?ZZEafE? zsgen^k5>3Z@vOS)*S6@?{!|&Q&!Q7k#aNeEOl@zAG<q4{P!t^Mrhd<J>et0l{p_o? zueQGWI$im8=P7%Ir_(m`xlb}xYyC7?X<e3Kgv8+&l2!_@u4Ox~de!&rWk^L&Gs};7 zp3Se;8B5JLeBp~>;_Hcz9`-y@K4P>%V*Qk&!pXr?>WaD#+N{{9S}1TxSJO&pp2~zv z9tQ(kxi&Iv5m+-REHL=#t<$;Y_kPzs`f#v6@%oc{smCYId@YxvpJTdo>1N++k36$g zBW9h<^_^?++Nj`k=+vtw^Mln_`(#F`Z+TS}v0U>~Rs71hFrImbpJW}mDw)d5vnjPE z?)1%7M$ZkGWz4!L;3?$C@n8;L_Qj)ml3~53amK!}>W4!mO)gH>4yjo<A<H(+@JO8d z3q3XQS0<+EZA)!@E-tO`37^*ZRI1`+Tk_!*mHeVlKB|25c(ZJi-1BRZiEA<*&$u?( zp55Tgr*)BO>LxZO*9`k?B4?a<xcWm%(T1wT9vh>=!;`+htTQyaRI~HykMoR0Gk?r? zXZ@O0@!?9rj>nyG$J(+?H*voc_;upZs;reMVyr2vTNiBB*4nt*Gt$Q`>&i0MRwL6m zUTwxjSJ{>|hbGKSOt>l;)z;>?syB3E(Gp+wPX9-(PnjO9yvVD$v}8d^jqJ5qo87LR zUR5(obFoV5SDmbx$*b18EWdPFjishv^n&=2mxqcr`g;rZsQi#)SLGMe+H|mW)mHCU z?!6&rxlfcDaekBRxjJLh@uSK7n~oic=yo}BOWDQJ?9R5}OJ6PJ1?Oq~(sc_CTsQ$V zLK-h%qcvAL%IC%@&xtN4Cbldoa9gtSKupM{xju_^x|Nkz%@r*&nQRhuy(2VS(J-(j zGE|pU-l;Np!qzC?Ql44ct{l?kxVqrvmTR{nl6BT>ciEDXHf_V2%VP86^ZT}KjW}lX z`m4n2uQIXW#Xg^xM<!oQ{;|uy-6H)nY>@QDv0d9XZaJ&7?c&<h(rNMhA-^wP@Al9B zT59c9Sy7odxwo`;e|PBPP|zspZ@Jz#rzf|6e5z+zF7tNbw$FR^$ew$;HaqI9>DF1F zK65{lJ^aRIzsl)Lg>iaO6-R!XW*@w)`sC~J$)OLgS=H)g?aR4mQzytj@5lS1n=7Z8 z+&mX&EZOt?zPZjno4=JY#@7tLZC&0R8}n-Z?YPY6k9*VSZm+4UdD<_2+<4AR)0rQC zU5{P6XT51&)eoazrH|uGKYV;zaO=FBW!;&bulL+5zx356^?lP1+oUg_w)cDwefavi z>C?^2*Vh!+T?ziVD%0bX(K5Hz7124Xt}dOdw&9nWPEXj(Lc<kl_Mw&4{B1>dQx-<N zy0h`xyB&e6rDmS_ao%Rl+O5m4WTu}M56^xOuRneI)_eD7?AdpI-n})ag#&)g@3l^y zEiL=8#`b%~=ht(8nx5M|XEWd3-gd(?*M8b1FYm23xs|>4-uk%vqHph(S3iHqutNW= z6W3oQZLL)scvUtAB}8=`G*z8&=%mV;kT%g(vszNrLZiZ#nDuOQOWV}CS~|7cH|kod zpipFv%f{6T$3k^|vND!*Yc4pWrMg%^O`>zPRN{<dt-&UaJ}M?FCtX?X#bX@otdQu| zn&Pvv;b_llXI-(VHlC}Y2|dSx5;D9@y-d`U6_*%oUA5}8T63_{rcG-NSfg4ERSj9L zuraL(N%H!s{cgp<ZAWhQU2t8xVxz9gl1VCIW?@_VC1;yFnBg<&l-OmDWnIfU1y!<K zvd%8sq|$Ry<+jt!P94WgBj1QklT<DWd7I64iDpZSIJ4Gk%`&0LDbtKLGbi?XTwM}! zCFzD+rrVSgv)Tfe9OlvWY34~?(i<kx%WJkR(%4gHQe?ZP=8?X}snY~kXR92`S)84_ zYPHJ&ORsCU`Gl0Zye?f^tCmv|G=CBQ?QA*L))OV&D<=mwFI%m-D(B(^KUE#i49z6( zpfjtpHZIFtlPx-JWx{E$vs$K0Hme%ky{>Xcc2nTV#S7OY#`uJ$>iF!4Jr-uzvs`&@ z;c=6R#!@CXmvdb5=v7xJjFj>@mUV2IshUfLh}7ySy`e@roeftPT#TANrPONL!Ymt6 ztruD)OFkQ&S<^V_l$cITN9tOwqmzoR?YQ*XWQ(D1u+qV$(>C)NCN7@VduhhY_Dr>f zQzee3#*{K|HCtvR>C2sU*3Bd)aZ}q>!OMbEj|aTo=^pa*Qt6avZsES5lugg38J*=i zv+7K!Rj{_V+NO&uHm3E=Op?%bTsS*eYRy)kS*OLad}jJ=NelI}>eJ~nJ({g7wpclJ za;DL>h_pzPnWrt%BHI!a>JLo(Gx@>MqQ!Zor&nz@n>aJaY;A<^o$gK9p=D~iYEeGd z(o+4BcXwTS_1t-Gb9wHa(u=a^79HkJys?j|`2VS+KbL8Tao@VIne}sd_TtZftmNJw z|FkdK>h;<3f8V~xr=PvQ(B4&^^VgwG{?~4Qmxy;w@_j4t?<sGm+C;U9f?Lvj5>i|L zo>UGLIMrdFSQ8N)mT)#r;yi1-TUf-(pFE8Rlev|3QVlMq21$6?U*r}!afGMqQd{JT zEB;62RJ&GfRh-(!bZWYmzSv^rsH<vf9mkw{!lt&inkIG!r5b8SU0q}lvFNf&YM7eI zqBtQbt(dK|Jfn;zM;V=JoUu$mXSG(;G;PrZCzCF-=|--cwQ4h)Dd#kktTUG`-PU!S zC2>-#&Sj=Y)~abrGE3N3eOVSbanT=FBhf_Fh58CXpF%cG+3OLn)T>ddv3QZMql|0S z5}BZ>-y7x$>M9>l3wD*$m>#gFajE-}RW>WcPc`igi3&d8@xh^FxzoZcE`?5&0;wIR zR%W_fn)IW+Yj!}IvB#CA-QGSP#zrTNk_{xIrrgq!ii|W`I$1Pvve>D$8#yjVr*unY zE?sme;!1{(@4`hwtlNAy<w~iYXv)>;Oq+FW>zYY!!9I&4RklQIyLRNVOSi{nqiw4n zDqlINb+Sb#*;p_w+DSOm*k_~Qq#I{W>zu7xs(tzzw`Z?U$kA2P*6J9lrL0LiqNL{F zGErlj&os0Az*kwq5{oj^&PFbAp3>Hm8ak;e;FOiK)|%F^MHXwBFUW;N25ARPUJ-m~ zeTws>;3-La#aAvcjP<aca^U~ZF0PYCv(8n8tv$h2)c>e#*S{5RT@4&83m6udFz_(2 zFt9MVGo1eXN>ughmWw7AR;_e&nYDm{adD2O)&d5P3=@ti3=AG&TQt~ag)%JeNi;N( zP!>3GD6vOPt(hfBQo_fu<;aDE9%p6FCQ+>_wpp_nE|{=6nrezHU+lB&t1kn?$pt}P zN-n{dvP>8Zd45f*RazYyb!+8{Z;pkI1*;V{`DrE=Xl<$K^6U&_F*@qGAZn`SMZURg ztD<JCI&|dfs$j2KjQ@@c6s-=5@Vxi+h0Uej8df{?Q(vs6hgM&B`QgP6m45ILXGdsk zO}<S2oS*McIR?HB;r7%l2{IBo5hcbN)}%ebIZ#)?LUUEG)1gS81v|6_S0za;x|nik zHEUwR%#aHr`khKwd{#**nR+gCjbw^yxS$!;5U#cE>Dv$2mPNRncG>E4&FgzNhvb6& zRZ)EVPupr$Mf#W6GrJyqKQ&YDX|PyluZ~ezq-65v*LRLztKMYlcSW#_%b=y9Ai%jm ztFZCP;&2~tommoVrTmr_Sm-QW*=-!SaMgx=2219J`hQyyGX1Qp(5uCtv^+oMY&5zZ zbePvv>c}nb$XU_eMzhYQb!4Ran9SO8<+4w9&#HL`kA<ZrE?acX+i=shSu?guPC6^u z+N3cf#mluVYeqstn$)f1N`0!Q^*V!Bh<=@NWY#p1>80G~wDtw87Bq^8W%{sa-_@dL zYgfIB$*Q?kt@CnjRNl^tb*tAsPr4lXWl#3;Q0sZYF(<xetdCr_!O!HfsNYO?37NS& zHLbQtMqSh1xHRT+gxZQzVrLFo`lyE(tjVzD*%_7`Y^H0n$t%})q1(i1TP3@VB(;^2 zUHn_bOrzGUHOkB~Id<fVcI&Jyr>;qD$__S+4%y-r+Y%XRrY+VMDY-b4=h%UZGtAOA zt$fscid*Q!k*KVmt5RyBi7QgoW~uq4L~M2r`15D)*X#9mKP%(cz5JXOZOoH&>#w-! z5}VICuXc;=F48~hE3LU^vr{(D=4{?Hx6El$*EVgs)H5?}>14AMiH*%+(}Z=SPG@JE z@8~jeTQS#pn$~GvqgzWCE?hXXH`sS|)ZvA)rIQyW%}Hc>v1XB&Q=CHBge}2A;i<~2 zykZxHt~BsEp|d!YTUgoaaF}G*rNaivhJ_!~bSLL7I+M68OR-}?N93xG16{k07ETWA zj=P!77Gf54Wzq>Ark%6TW<ASF=F2(BkfTtWZt~ow;Nrt+Ytz!IzRF2fovQ0gdhlZ9 zuj;}DzYP0TA69%l@v+%1T=Z<j)}&(_Ha!)+D5cK4u;tR$l*k3gE}bz=o0f7~(zN>Z z>$>{K#~(jGe!c43$9blYuYG*g`+D~5!q-0*{L2dc9r845nqo`OqLW!&$JT81(UA<B zDQ%c_Iw|Ao)NdgNc5(AJ8~SWH-ZlS&yfJf>x0Kjcl{0K6+r*?&GN)zcZk0G~kg&mI zby28H!=oz^VG<Ejewwjm8Z0|I?Nr3oEz>s6?Ddumow04ji^c8+w@TU8&05yemYUN$ zbIqCLw6lvcGt*4gTuTXy>XlmUtJo{KI9MlTv#+u4%v{r}E6S#2g|jB7hHW#ub#xQY zwTxV8kIig4o372cmYkh+)g*B;+r`bP8)x0<nCG%gOLe8nfyMhXuQ$eYFcz&`)G&)f zb7}aewZ|+rS*+RFy?Xohb${*N?RmB5`eXl#=l{mVc^jsDIBa69Z8$sq|Kd0QYL@&u zbLMc3-NsoqjTf`tM)t1kk?cw1xoLEEwz1)4W1gF9ABAsCI2Igfy5!{2)uI*t!E(pH z&OiS3@zE;bN0Jf+b7n=QoR;`CzgKepo$#YkqNzqH7fl!YXr^qKma=85>5?}qKANmL zb!1bLPR35gC65mCWIQ$5q9YaBHY?SzWvjPWlrP)01%Dc|PG$LUZ#h-lm9?UBT4&|v z)Twf*?2S#AQl|D)ojS(xY1XP=dt)Yjn(S>B9XVM!%%jGtZ{mluKG~r*UR#zF9Jz3C z+Lpq|80C+_=fZZ%mM*)@HY?fV!&RSI%L9z&%)Gjh<y$Y0slHp|tN95jy<&<#eX>r@ zI&~?v^}*UOmou|{v+hS)d8>K9*~D|Ol5<kjx}v;^$J=Hub(^R-W#LE0DWO-jj5hgf zGPsyDb7g|T#Z1%4D5EWNGz#3bOoO6U=`<~K*%alr^v>JNP1g$-8%7oCt!48O_gq!1 z94TY)tXOk~#c|1UnPjuHWM_?QSF_Si&+LuaY}FQFEORVs-MbBEUL0(mR>S+J>;<c; zlz^asn~*{`&$H9do1RIW{&IB2%&nQW|01Uywzjx!dak_m>amLzmrbXHw=QEk74m3H z-T(Ogm!H2l|FPu#eZAvx-{rT>E~(yhnm^jyH-2yR-JFd<Kc>0tUs!d`d*#)|qKi&; zWfX>9H|^&2ms(Tr?)q#Quea!mSCNlR&MiK&qi5yx=WOv&^K6r^#jT06+SPxuaO0&9 zMh0J{7SGB!{n|?Am}$tzRatg+={Ig?=V#wK+gH6S_~>e*ABBr27R9(u(PKGjYN={- zVri?cVk*mtMMp&wy;-fFeE9y$YF2t`;j?W8t51tdt~Mz)czEejrNpVv{k(iJ`{wVe zeEaEIl+M|G)n&(ao}9Tk&u{MK)|kju2R~(2CtZGauJiZOZud2QThi*jT`c9_cK!B- z`*UYknECU(*WDbx@#Ffg+O;pc-)8MuS<g~8>8Y}7)?(MrV^gkWopwu2Il3q2!0C|8 zm5Y@ldv&f!Y}%6X%IWIU;13l`ij>=Y5Bc>^Z1%K^500MtX8En7=VO+)F<(C1YO`^* z)PCkw@j1WN^lh!N*;`O^HD|`p@T2ZrGld;ubwW$#v@Kl6mr~IcvzX;lmao=+@$Lo3 zg$;AIO2*93zH#QP-PT_*JImk48P2=eAHQ63diQ0SI*VjB`*Nv$$<fo7eza>_J^8EG z-uLC_Zs+$$fBo~P`s<wQ{{5C~bBd3jv-x!T{%+g%r{a$;I@WV>$ysCh0~e3m?UytD zVN?8a`SO<^zJ7i@XYF*|S_UoKO|Go}wN~n{S=zB_)uE$dp^Z&!3%2?!(@I(6Im0)T z=UUXU6{@qEdJZZFt@UhMthSa{BH2h+bF*94q?1w-Tf!6#W@=7Z?Q%&<H}I?cnH38% z;@6txZqit>O7PACfrnjcE4rMfoZXbH9C0IUcDB^&uvL;-VY*^TM{^FFWSh-gyuz>b zR7%Q)61ORDb2ly5SbxK6&Hh=X$L5+P#4Me<G%Rd#7;n_8tA~==tdsN9c`~<djk-9o zq%mD^Wm~gn($xo#S9@K2%6d__WzX5PNS@TFbE>VUjjpa1GrT!-dNJR{sJT~V7p~UM zI<qMC9Glc`X^~sKORc7v&XmYjo0S%E*<?mCk7S$FnVp@A|1IKA{m6J~vF)1bwVN|# ziZ||_%eLtozrnLPJO4eh-}~uByK9NFAyaTQ<BAB~C+y#Hx6aCnOsP+F6P0kSXLw<^ zaT8DEjBCfXri3QyAK7YhWW$!QZEMw!e4H>#Y_n>r#q#dJX`K-!HzZRRi=Eo+b#+CW z)a8i4E7Ml!HJP>Prp+|nuvu->q))Dm6V^C)wZ46sIn7>cBadp!C#^lrnpMtEBubX- zSQB{kg{)TmJ<%u2_ywa*Ryv-lm|+*HeL!9`_)1b`(DJFGM-RCR#d7UwGq|!^HDkW! zquIJ*Myfr_QqEjkotD{_YPfP)=FFUJ6F+)<&s{n_!*B7{rD<)c(^OX*oIbuLG;8wF xu!YlXCwnjK(Og+LeZ?N%ps1x+_4!lggkF60<y2+ho0!;>A`hJ$_Wb(q0{|?1r*Z%Q literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_062_states.bin.z b/client/resources/hardnested_tables/bitflip_1_062_states.bin.z deleted file mode 100644 index 53e85964aa5cb51088094a3744f33615fde9cdc4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43839 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 KXHfQC#sC0UdUON; diff --git a/client/resources/hardnested_tables/bitflip_1_066_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_066_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..e599d531831036cfff71c167f4e616f70a2fb1c7 GIT binary patch literal 3290 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 T7HjbT=$(mvA}SUv*`FK$-xAIo literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_066_states.bin.z b/client/resources/hardnested_tables/bitflip_1_066_states.bin.z deleted file mode 100644 index de23de8b35699ade41c23e88e9d27f8f77c05c0a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 25704 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 QskPzakN*tDw{lJb073|ip8x;= diff --git a/client/resources/hardnested_tables/bitflip_1_068_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_068_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..d52f1573d6d267762a2b234a99f07f885130ae00 GIT binary patch literal 3548 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 aGHcOR=cPyH@cIAKd(u^~P?5=~e;WWno+Oe0 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_068_states.bin.z b/client/resources/hardnested_tables/bitflip_1_068_states.bin.z deleted file mode 100644 index 08b3e5439607ec4c417c3556d6d08c13b062b0dd..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22536 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 diff --git a/client/resources/hardnested_tables/bitflip_1_06a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_06a_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..05cdc35567db4620c2bc20ecb115b9f5bbc1a92d GIT binary patch literal 7596 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_06a_states.bin.z b/client/resources/hardnested_tables/bitflip_1_06a_states.bin.z deleted file mode 100644 index 052898c7f15a6c4904221e2ca8f766acbb9932a8..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 34536 zcmb=p^>%Lbw3bzy)}23`cl2fF&m{NUsC{q5QrKlq$`xNN;!@)f%2@F6uW8nmRu>+o zrX7s`|JVQf{@;@SvO)jnAK!mJ-~A_F>e{EwAKKsTzt>rQuWSAK+%T?QZu<Uf|NqtQ z%l&=(*Zc4r|9*>Z<NtdhfBL`k=1c0O{{8!Ye)Ip8|G)pf_3!!anmoDa3;)l5{&ws9 z#sA;=s^7oAY|nf8|Mc|dFYNFAi{Jm_ulTnA*N^?m`N9AH>(l#(*!TZ)ivF?t|IV#{ zxBjy^_WJk#_x}I9Urs;uzwGb+wg2l{|NcLJ<Imjx-hWf~=_lX#Z~Z6c_RslQ_U`}R zSLfcpzx@B-Uw`dC&;OZU{?FO|+xcyEKhkc0di#9ad;9+1Ul0F3{$l#p{klJE_rHC< z;s2qp`7`xD|A>C~`oHdv`-}g*zdT>Mem_X%-{*Jg{=e+0kFPuSVEy}zVV9oneExm= zzv~zDr`Esyb>C96KH~qx|Fb^DtJQCRZ{J`2zW;y!*ZZG-@&A8l|F8Z}{nNMWA78qD z{?pgsU;J<HudaRc-~Y=0(~s@<+5i8mwO#)4zyFUvnaliFeSLl2pR*U^rRpc0`v3dL z|3`n;Pqjb(`~LdhbyN4$OZ@M?yx8<#)s+9o|Ae1k-T(i2$6uw_|Kpz2@BBNx{=fF` z_rHEUKmNa?Ug*Ee|M#Z<Rj=${@~d9|SO1i{x8Ih26aQKN<iFwnlm9oX{a^FD{^S3L z{}2C9zyANa*Z<XL|G!uLclwX}fAxR;|Ji>nod5U#llqPS<^M&0{h#^%|HXU%Q)>VJ z|98Kz&inKJ>P!D`{y+ZD{@eeJ|M`En|0&o0DF3DYOZ}t&NB(#ISN{L~>Hn<#F&Fo_ z{WJe(|07@bU;n@3f7<_-eXVC`h`sWA{!)+A`~O(SKmV^^|9|nn|Nnl(zpBqT`9I>f z`;Ypz|NHa)$bS9Lu%Q3fkI%+W>U-+EKglyNFnpWe_V@baf9HSkGdTQv{p0_wE7PC< zkN)(3!@t{c|3ChJ{Qvm>{{Qj}3D*CDXVrhX@}uANC;$J*|BV0SztlgoXJBCP{wDvk z{>Xnuh7<o^KMmjeC-?KeAOC+n{NMP`{_DTf)?ej+$^Vl7SO4cf14F^~AO8M7>#u#T z@BF{<AM+pk8}&c_GcqtF{9pKg@qcE93IBim|L}j~zr*#<?Ej?yyFdBA=Km+Z=KcQO zpY!te`v2bcZ|`rc{a;*f9+`9e|Hg06H-a)o_Rmk!U)I0%KU_8c@~7`b_9u(HPks9S z?X&K&_;r8p{Lrtg|6lw4g=V(>oBv-eU;ow5zWwvt!~b`G+}~E~`!inr|Jmo~r(e6S zcm8Gl@{|Aj-qrWrt$!MG^Y2&PU-6&+?Y;8H-YI_FzArze9{-Q{=U)4-`P(n`#rF04 zGCco3Kd-O*w*KbN<zi3ef7yRq|Mgq{>;DVqD$D-=_xaY1_}ky-x9x~+`x~zQ|Mp$` zJFEXDd;XvPA%6M)`Nsd=Y5s?#lkY75<$uY4mj8GAS^fEcm1~P$|7)+@bL@ZR`H%H> ze>Z(AKF|Mm|D+%O-9P3p`xoj|zwUqi_4SoHz5l;F_^;nNzjj~t|KES|6aRmg_`i9{ z|IPm<|6eM(|J}uZ+lBtS|KGg!zvBO#%l`l7zx@$D_pkUZ^Gko0r{4G5`A`0s{d7Bz z*Z=GOe189a&j0-S+Pw7tUlaa+xA_12T>Z9r|K0!m*Zg-s?r(kg&G^!P%ga8>fBJv& z|MhG2s=wm9|J0xTq5to{)c^Y3KlT@&tKIkc#hhYLQTF1FiN*JyR^NZ_i@$8Zd(QGX zNSGHS``M!ZoaOU7&wtm|?t4GI_?+)yn{$hcFF&~R{543>_pnI~OxzE|uKfG|<Inwb z?AaPBJ^s$mz2$#;zs$LB|F3PWH~BCB?{GasN#e(U`rrikX8+@l&zHaYzx2!2&i_md z44?M*{>h#GKkMrM<G=Eg|F-}CAphU~(|?Komi6b$e!ux&$@TZ#$#3=BPwanJ_<#S` zKk?uGZ~lM3$ny99oBz-MtN-@@^@a2Q>c9M-{I&jDyxGG4D?t*6fBrvHf9`+!|NUqG zf>Y_k|C<Z{FL(Jr`ELEa_y6jj+5g)A^z;9Z{~heV-0uBf@Spqp{{!{e|Mthd`+v>; z|CLGq`#;xP{@=d+XFdPV^sj&JKR;prrT)|XwcGpu_5bt#GyjME$NDGrGyiO_`@g&N z|NPQ__SygW!6^fjGu|w^^Z(DB&+$cHuJ8SCd%ph3pZs(G*`^)%nQ!#-%+LJ{3=A9o z&jZCjC=*G2yI=bJ|MNfb)Bf16`M>RY{h$9oz*(7{;fBKu`@LSPr~J8pT7G^0|G!>a z_1DUu`hWlX`HS(_|Czk`9&i5%lostB{{7ys|M=VIyV~*g*Ngrgzcu|@|McJUlm9U@ zFev;h-umA^`v3G}^-G@LXJR<8_sM_DkE^|YYFqth{Ov#ef9|jUEB<f#^Jn7b<M7;H z{&fG8e@6dgbN9>sUnu`;zTf|%{ilnj75#hvVYkV?NnPi4?*FUQT={wa<M;dH>!bJm zwRL|V_ec9)-Hm1S_2<6*Te<1S)w<u8euQiPyWaQz{`+13^lR^5d49Whztz9&GxaO~ z-FNzb)#m@DHGkee`DdQ`Q-9xo-Maq=;`fW(vA=QjZ~m;$@;}@EIRAg&{IBfSbHl&? zHNSZO1cm+iKk5JCZT~Nn|1bZ~{!jgy|7O?gpMh#NaIshZf4NEhr@o)_pVS}xANQ%B z@xoNr?6C4v|15(4U3vfC{?+~-`}<Y@Kn39&`)~hm-2TtW;PCJ9|AYV8|L6Yrf8qa( z{~zT4$}>3paX0?Acx^rF7ipXS?o#%<lmGPpuxD8MG5g$q<$wGP3<p;Iz5eM-`rF_2 zx7Pfh^PivL!2j!K{)JflkKgt0j_p6^fBSQP$4CFaZ1-ROzy0_6sP6yI@9D?AtAF=i zrTOotJD-;?%>8|CYpwl@_J7YW?XNjx|3Bsb`w!k;^{+brNuK@vet*3E|E>P-KYr`C z1LYstf7$cvE6RT@eY}79=lhqQFV8){p6mRsNtf1F{*wk(>$U%)m)+m>&%VF#fBK@o z^M9)!dcOYO`b>?_^}6%(Z`XDGTUz_Ze*gdFi9dJVtDhXT{?Pfei>Lg*^{bxq@6M0Y zUy1*(J@mi*?@FV8);s^ZRsZpRxnAx+|IYvIU*&)5$NvBOeCx#h`#;(1P2c!G;(zY? z{~zv~{r~u1`2WdQ_EUoW{`{Z#<@(Y3ZQrL~dB1<n<o(BAz5lDb_rI&w|M!yrt&h#G z`SU*GzxDM`e@&0i-&V8!^Z)f<xBdEC_qX!R+S)(%rr+W-&U^fhFaCG+X8pq-+AsIl z{(hhLdHvk~vwx_6^#AgI_tX7T=Fh*iyLR>8f4Bbn|C9e&f2RJ^|23!VUq1!aKo9?K ze*J&)t9so}|4kq7KT{8?g!lfnFTekv>F<U5@?WOc>vKWAc>K0K_t{(ZAN>DIf9Tu( z*S3kz?DabaYD(q*_dfeGT=(hzEq`x)&bPlm;s5E1*yG=RmH*gTIpy8|PtX0=>=pV| z{Pp|3!y7jpdmsGS-t6DB=Rbblzx{LnCHZspZ$GZL{Xbvj|Eu%=XCL48cmAyZpLdl1 zo9p_s{oi`I`epxmAOC;xfBW|Tv+m9>JN7p_{G9yj*YnN(uj$|a`^5jUkM(bV=zo&` zm%Y9JU;DrI|MLIhU;Tgd&yc~P_5bYO^+9io|M$22zw@8DK`!gjdH+fO@BHUxU|{(D zzUsHX^Z)d}><kRDKj)vWUpIOG+fV;>f7XMe2vUX||Ig2`VbSN)-|X+!{@t$k|DpYB zdxw9E{~LoU@*6C$ra<k_`*zF@YW3dt?d$%@e48)#U;4}bjQ_j8{c!&8{QoexO~IgZ zynf5m{YU@AKdN8zpCRG@!~g6I3=MzV|Mmal2j`;0|BwIT|3CBphxtGM>->9uufOP2 z{pr8w|K3g67(cK2pUIZo`#ZP2|DN+}y8n;w^JRWUTkTtNe)_)uAHQw?JN@@5Tls(Y zyZ`6jzCPuB>Bsw~|D$L9x9R`*ZTZ4Af8T!o{#yS0|MO4xdp)h^|8Bqb`(^#_*O$Nl zKkNAZ`_Bvao{zirf7bW+x?j#Ed(>yu9Xl4kZeRSqx&LoHj-T~k@ofEtxc^JOw4aZE zX@BW|_4E1HzSiG`wFB0E{q*=(_L*HP<>M`@U+(z3_5Z%(Z#O@`Re$R{fA;j~`2Sme zrq}+t8~pF_|HJ>=|G($_XaB|inf;&br|Wb7FE0Ci?d$$s|MH*z-}C%OzWe`AKexSI z{$l>|8ULe&{!cvif6LePLcfat?mss1nPJc8Cy(uIfBaYdxLNGm{<J^mcl|s6E8qHG zu+aZ|$5wCu<a6u)tk37G{>cA5zwMv<pW9}CpZvesSAX?p{ldA*6YKw9y#N1q?7IK^ z<K187pZ<IQ^|k+H-{Sed?SJ-XfBL`8U;o%Y`tPrK{oDV{+n_eU_tl|)+W*vl`oHz_ zf23Bxte=lx-}?0D`0KC#Km64_{-2SdOz^w?nPjIr6Z`*`*XwTnRJHtV{r3NbJW#pA zP&I)m^Y`1oR@wj5Z|7J2tGo3t5mcuf_!kXo*J#(T`e)z&{e?XPL&dB=`@Q}>`k(xF z`<{P?>wonBzrX5F`hV^(r=R`5`MLkw`P_Kx|N3WUXK(%g$o#+lyy@GY{BQlc|H9U1 z^Y_MY`m_J<H`R~ZU;PMI|6Tv+Z~VOaogXs)|E>LX^MCNBf4TLi-n_o^8PtG0w{_Eh z-8J_1kL`b#{|G)+@B1^}DL?Pe(qBur*jLN^zxDLi=lAdaw*OiDck#dW*YE!a*!=JL zyWjd(dB*=A`>((JZ~1%ky?<S=|L=dlfBpae>u#_7>$~=?{j+-h&-?HF%e(x4*SGzt zKhy92@BYsZs$gzE|L^f-zu0emldt;E?0?z++Q03e=kG24zsslm58qP1?9cm!wLkd( zS5L5?pRe<(BKD`5T+}@K+spR-ubclq|Npvl*>zjbzxqGx+vl&-|No!+bL-stt@ca* z%2%(eUl-o@@9F=Qzv?Pq{lEQl_n-eKelLHOf4cVP&DTG!&--6KrM~=q{pwHrzn%5} zU3dO-+v@L&|JT0$pTPg`$H(*E*G=F5`t$Yw-%b9nU0<L31JwUIHow^P%k8QEt6=4c z_qlrg$NT;3EB-S;8udTwcm6y7b1_4M+P}wUZ?ot8ztd*7^8bGOf75@-pUeBt@&EjX z|MABE7%t5JU-fA<|4;eF_uKw}^Z4@g|6gJ46{~;yv!CYA{`!31Kly9*w_k&LcHkBZ zGsBw9e|P>bx^DNU{XfGOvH$vK?f35fdmLiK@xSYjzu5i%?|KG?)t}<){@=I!wBO`V z$)msZ$KKapd$xbg|J!%#Z>IfSUvCF-?Vta9Kh6Iwo;m;9``Z8N-~Ye4eEzTfo&UvR z|9?-hzf+%^`S;}g`2GKbZ~edZ+23n^*?+_T6Y5Xc-`fB9Z+-dl|D50T7yU2(um1V| zyFc4~>|fhMnhVpQ&4v8P|LhDC{!5>oe`jy~3(24JpZve|tbW!%wm<qi{_```{&-v; zZ#QS}|NE9V|NZ~;`~8~d|Ct#WHst)@`2YB-zw8VL{<lMtNHw%PaR1NFAn<>u)xX8d z{+sUn|1<Kr{j$gD&tLxEd+dM5f9Bo)<Y7&RF0lor^_lhG{}+H7BLC<2{Vl)y^Z%u< z&pkoS_O-YESN)2Y{}_JzU;VrPTcrQ<|IV*mpXu?j{&xM9<#u1+$KJQsPW|aM_x~na z`=?#s&ezqy{r1rQ&wIzZKYO3Y|9oCu`}6M0{n`J$_eY=of9Lc0Dp33A{-;0fb<My2 zJD;0BZ5#jp()0D9arH-^@Ao<{|2FfV?%xO3@1HuK`$b9T{MGr#?>))){`LOe|26+l z{9pZa|F%C{^ZsxAxB1`U`rUs({mb*`Q)jgO{X4((?SH%a{rk534f!Yj<?;Uo|JMKc zC9S_&=k(uN9lOW3SH1rK{mJuNaVLMAzp6j=|D_+3L;k%!`v2C4{bB$9*0sO=+c!Vv zPyYYf;Q9IH|F-?%pa1{+@B8;}eX^hWKep<h^UQxUt^X&;-QE^I?|<+A<L_4=t-E>Z zeCeNSH|sP1WuN{p^sD%>e*XWTU)n#%SO1Cb-!J&z<^R%u`|9Rh26y<s?VnP&^6&k1 z{~!PLhP4^`K0m+t>HMz$;-Jj^r{3&uz3x~0m;Z#{{#bwaXaB$R|Kwi<&;Rx2zxw~~ zzyCkn5Bj(L*}uv29>t6Ot^fZi_p|ZZ?*Db`LjP@S`{)19{`dbIp#J}(|4;tk?)|^u zzwm!`aMxh}(;xL#b^Chb<)+4`evE(nV}C5Dhamjl{r}<r{QuYf0u{P}@9XV;|C_k^ zz5dCI_22#)+ur>jByDfA`S0fY`};q#H|+a!eaHXR>Oa>P{+D22U`V+8@A8HJk)VEi zz3k8Ry7kfP?7x3S@Af<VdA{q1zx*%pU-EyB|7ZX3KjT;Zl5f`~pZgnt>idXI{|`;N z|7rQ_|KDHPGcZgzxZhr9O8mK4?f<v0>QCN(qkiwl_-p^&-|zRnd_V2)|Ju6v*Y>~W z=l<pYZ~qD0Cf5JASogo~v;TtslmD`xsDEP*8YW=a@c+X9i(r@issHgm;{QYY&+`9_ z|Ia`AKcwzbmA`kz{}b2he}>!fM*n*J_3!`pKi!wU&40cA>FNB$-`8ILm;L|o*VZqW z>(0ORKm4h9=l+Vl^D`_rr~I`3bH`?z#Q%Svliof*1|G($*Zuxqe6jksoiYEH|601G z_Q(3O_0Ml@+n<|WTerqO^htf-zv9S$+g1Ksy8gGBwlzK|e$xN>r|YMlv(Nmk`{n%C z&98sNe|cK@M>qc8{-@vd>rZ{UFTVF~zJ2NcxSoGU^*pbBKfV2X{?cdl9{2zK=w2&d zeg1cCUH#+xJF{P9udh$v`#<*A{at^Y{~!Oi)vx~Cznhz<-?|~c>)Z6y-}+1cFMlV$ zZu0)Wef3}JCI2t|r0=)C<j>Ui|6Reoi}wHLSN-Sz+y9gQf9_}d_w(&v)$4r!pY_}R z;{S7B^S{0O|90xX)u)zzoG<p#-uJJ*Tz%B%i(bFX<^OyBe{=A^{Ns8F``^E-U%Jo# zulwe|+~fLbU+S;bf7;)7Wc7CYrGMU|3?OWW3?Ov=-K=Xr@Bj48_I0=8zx<l?<N5l3 z^4HG4{{Q>+_nDw}Lw*0}c<X=p+W-51><|5)zy6>7%)g;})0e*PH~HuM&;IBCTff%3 z{LkK4mvt=u<NxPR=l`#s``>>1zcY*B;{gW!^WXpe3LQS!8-LEyocFRp|2a$Ze$XJo zx!Qg2uRs4?XZie&$(hGCR_45)fBf7RKmYx2Q{KxTe(nRS|7-zbKl}Rs`1Aio|0Ecm zDNeOd-#-8F&41T7-v$i^G{`M!IQo14jQ`+XbIQlZ>M#F)uIT^A%+Rp><p0%A^#9pk zt3UnP{!jb=AOF{${(t|E&bj}ao$Y_;^K6@c^1sgA|92n#*)R9~fAsnPssHVN|G)h7 z&HwsKzYhPa|MvfT*tvi8xBvS8R)76}&i}hD|CYb|pZ=f!`Tyvd|L6SA5C0eW{r@9y zyYKwBzw?Fuu0Q&(TkiY++q3?^_#gJQ{?_u^TifOSKl~?t8q^Q}_Wx`7|L<3y&%gEU zf8oFNUq9FXp8fy(gnEC=|JT?3asIFV|1PK&2MrH`%8LBZf6@E@-`(~9yw(5Q_x~Ni zr2{A<eY^1L-wx|}|0gZp|L*Vm(tpa&>$Cgq8NQ_1J>P%z(sA?w1gmfNw|?4Q_qVd` zfBV<_-+uLj`kas<Ja3Mt&y}VxQ&j!`{nPRD8UNpWzYcBJ&G=tm{p|m-=g*_V>dJnn z@3;R98eaT3|MlPc+BN&D{<$+SykInau0Ln<KMVEA`=36yPx$}xll{H=t$+TntzYv0 zcJKaApYt#LzwrOV|HuFLYyV&AU;FC*?tNdPrRqPP&x+d@^xXda-uhMlw$=RJJ;g5b z_u5C{m;O!v^ncCA@^8Ph`|YRxynpfM<XLZLPyIjl&i`dL|Brm%@A+On;h*CF3H4Xr zFWfin-%pWW?{EEo0U9!WX8&3K*GKSJ?eSmv#edWP8ULU8f7;*w3=F$}+t0myetyZj zTYuKS{$zjhf7Ac!FWVpffB!kM-myOW;H;~%xA<@0zy0=K$LsH<pY_B3pZLjC_8C+l z-q`a0#{a|r{23TPjRR0$GV<g9h5rrzKeYd4&(QFrKkbkE`#;Mod0uWW``2Im`{U-^ zpEsY^$BTmo0UWIUorUzD7;Ho{f2S|DkDv0t{O(_SJ6p(rK>6JN`g--H=l)M$XJ6j` zf5QL#-+$_J|N8&_Q@<Nrw@dv$e^mX^)5`+W{14YvzWaIk!nWGyxAw_@asFTYGTv_E zytqlft^Z8AG`}jT!tK+&-|w%VuYY^Fde7g*=iC2(h;RRY=}&&<zr%N5PVf7_>BrZL z|Lmvz|M&A>?LGPV_5Y*Kt>-$uJw4X*<$qgy?Hqge`gQ;A{fs_S|7`!)pZPQEUjO=U zbL{W@%K_8=i`vzHt@m}F`M>yQ&Fyc&U-aK5|Nr^dp7-?mr~hVssS>TrlUw@d`nCVw zFV6Sw5840Yz3@N#H~wco>Yx2T<(U1J<NK%7z5H?hsQv3-|1<tf{wn`-z4HI<=d+dT z>z~%g=q3N(2pXJzxIg#b<NxaaCSR@BSU%^+f903!yZ^8GwEA4#om2l8fBGKrckh1h z7w2#87y4O${>Od8e@`CQyZ^qwbK3j$mjAXqt)Bb8e(m<F@4vr3pPc{p@&A<@|2tK? zfqG2q&;8>*9`E`8?d|&V+4XP#+&^O9S-<H2eck`5()%aA{6FjIt@rEi{(tg+;{W4+ z)c>Df^=ETjAEfQJ`=9;Ff7g{jjb6~Gzx)5|xBnM^|Eqt2|8M#7_~O6Ur~SY5)&5@H zjkJ4pO^^`(eE-nrsX@=%*Pid6|Nh$Xf756E){i<>pZR<1^ZRS($DVVHKEB`Hep-2? zy?Otozw!V6bZ!lI0tJ1!McB0;wORj;AG`la#{Pe`_5bi+hkvfO{kQe`|H)6{|NiX% zd}G`H;Lr7P-{0-usPX^8|ErJBU)f*yNB-~sf8XN6{>6u^v#npVzW&yq&36CZDgVEH z^#9h!`%l#WSbrDVV*XLT@_+a5;|vU<|K5Lo|Nr97|CS5xpZM#4^<RJR`~N%N{ae4} z-<>c2=5P7O?4ZA*)85|m-|fBs`N7i)^Zp+HyPts}!TsO!PxD_t$>05_-W#KR-|;_2 z@c+eY|1bW3VE>2R;r@T+t^2dS*@FiY68`6Y{dMK9#`)|2Q{V5mQLWwYlg-P;z_4!O z|K}&xSN**G?C;0_Ul0FJ{u}>l|DE^sZ$Gv}Mmzr7GcZJS|IavG-wn!65&szv{5uTl zWa1uLSpH}7<qgySZ@hN<()RfO)9Y^SPyYSy`M<nPH~Ri3zdfIP``h-f*FQZqe-VFs ze%sUMRsTPlw0vKvQ=e~tKk3iYTjzWKPx}7-etG}AP2Udxi=V&w-v2lEStn=9|GVD{ z9)I{>`tg3vznaY2x1Z+xE8q6#{7w7tJOAI^_ut=h-!*>T@%x|7o6Eev^sj&G{9X0g z(f92?Ylq&~zkhH4)LH-CU!1-=-7Y@)kNoNXE6zhk9**Cym+Sxf-)7s}|GA#O{;oM~ z|E2y-{Oh;!*Z(_PyIcMH`+V!h{oCH#^A_&r`MuunAN#NA8UIt)f9qHM8-J*N?!WqT zKXxzwa~#~|xG(&t{zd(n`XBkT|J(k4zV+1F-}28sO8tLsd;I^;FQ;#vx3&NB-|LaR z?xXryzrs2H?)>*ZcK@@DCjTxs|KG1t_wDDpzwbZqZ~c2e`Oo=D|IYvN|2IAD&o1}h z_q`wk5AA<8``Z7k-}X4Z^jmz!eUH!cr`1|N{Z%jVKjxRh+W)^lp5MQ}_}~7&Uw6*^ zd%gMZ{l|aaTmQdV^-uoe|K&gGtH1t_O|8HBbN;QP^(X$T|BsLUKlKH4WbViR>_7kC zKKg&o^83$oi{Xt3q)7#f=W{^9CZHz9*~d0k&*v0F8yKLb1!z*jx4C%!dXON#Cd9_6 z`q4jS^z+s2oqm3~y>Cn1o;&~V*!?YiyS*CRHJ#IXp?+K6`6>Ss^Zy6b{(c|6sy6fQ zh5sLa|2tF9z`!7;c(#7$?tk+a|Bv{+_4j^8h6D5doIh&+>Pdd(pToQU9{-hJ{kQ%9 zwx9j~=l}4Z_J2z7KI?t2kJsP)V|%M^_s{<&zo!2=dEWev{>)SVZ$0zBcC`P{_uJO_ z%Ur<)-2Lu)U+0t8>wf?I5xT23^N;tb`js^+U)Mj6+PDANkIPfvzp3A#`~U0t|H1R> z=loaP@_*^K_3wV9|2GE>KDgB9FZ`c9Eqnj|vj5j#o`3yM^5u{CZ|_^q>ulfe^(z1L z_V@KM|7Wy?eUtzEzwdMXY<n%~|F^&+8hd3RJ)W|^^+A92?fxx$c;nCg`TEDduD}2H z|4PW%M*ZG@+H?PZzfunx@OR$-?ALnT|4U!j@A<po?4G|Y{~zw>`+s=vm28tYpZ`wn zfBpWm#O?aM*XAFusQv$cf8+_N=l648-rg6#=g$8a>!13$_Obu}dR^tW|9!n0F__x( z{lCq$dHY|UpC3`J`sMkn_qFZGORxS+uKycU@Gn99xqa5T|LQ0A&-(b@etqo!<<I`x z9DCXxi!zM*ef$4SpZ+f@diyiE_V49q^S^#9m;ZTR@85da|E~WI*T4OC5!@y@T%Y@2 zoZ*08)}QmA%u3JKpSxJU=5N&h{c7h^|MgG%)4x@Jt^U{l*L(LD{bg^63lOfaoAjsu z;{TGLpyDv&cD>Xu``7ji3@=XnkNH<T7c@hafAarfP}GBZ!1Dj?|J5@zOr631eZR+( z&1ZkdKlmT~gMZEMnv~!1@ALi}f?F5N-}kG%G%xzE&A{-p-sj);ZU(an`<LJQ|Gnh5 z|Lp&~zy4qOt$$vw{zd(ZdeCU?{i*-&{O9<4q5l1E`<?&Wf7kE$fBey3&`?M8KmG5Q zp1)uJ{r&3i=Xd58{@=aqkN!e?^M65qAMN-5@qdH8>GA#F{<!~B{D0y9+k5}Z%YV%; z04164^+x~So~u9oW%EDK@a6Ge`IXS7li727h68#_eoihw|6k=l_rL6I{0{cnjxT@y zfBWgb^ql>wyZ)a;Oq3LW<~)A(|7ZU%|EGQ*v?l{<svfCd*Z2R+lKQK6{+E3JT)*Vw z=H17^!yOMm!;#=7yVu+OWzYA&y7&L^&-Dxp3!eVJylwxIf6LWD1;qB;|Jg6<Z+(pa z^Z(9&&p-8Y+aH@>t-t+K{#*UJe>TUC^S`}p_cnX$|DSDd|9`%0Z+!HBt=xaR_x11I zd@KH<pMB%r@AYrnpYQ*20hF(8Pt0E`|L51g&*8C!SN|RU6!Z7#|N3;luWI#6zue#Y ze|ptF|Nk+%|E<664Et<<wXW~qmFlDSs{7@h*?+$O=udmyoBrIt8=h>hk((cTf7jpb zf9mDxPuKq4@B07yivPdAT;KD5>fh_D_UYTt-Mw$m@~`o~{*}L}zgGXGUjNg7ub<t> zD;-Y%+yCp&{7v7!e~wT39)IeV|I>O0`;Ymz{!iV1+u}@BeOJA`kKVt@+xB03zW)FH z$^T#ejz9I}{rkWAs-M7%9_si0h?o9%{nY;Z|M+kJKO1`H=>Ki+=Xd|Nyk7Pv_vib| z|G$4P`tQH~_5HfKe}R8LfB*UW>(aOR-XH!?KT%)*r~O-ZvC;3;`Tu`?s-OSw&X3c# z>u>)n&fEY0%klkRe@K7y|B`S0w!KK_3g_ov(?kBhcl|%{lK$5Jx4-`1W(Qjw;eB*} z?rHni|KdSi`Vaqae*M4o(*GsD{kJ^cU-sPom;LYhjQQU(=l_ZSwEx8a*8kVO|IdQ2 zkC-@r?Wca^)e+}|{>=YVzZ$eW0<t(l`2Tj9|Nh6%|Npmc`hP4#B)l*G-?3+7$arL* zcezes|EhQOmZ$&M|M}bh^Z)P1^(+5BeDkgU!+)Ot|4kqBGyMIzUVZ<s3I7d$<(>c) z-#6;3zQy}PvhUCJkN@uu`?oE!{@v^UiGR26{Rdqk@gLN@_pkhSG5E2)*w^|W=YR2k z_`d);EwcIl2~Y!{VMFV$-^Zg){}226^m}~drvFusAfuF;(f_^Q?{`7WjN}}vuR8UA z^SuAwfBL`5Klp$A-(hgG>No#i&}?D@xa#iz3K|u8X#e^Dyg&X=)z^OC^5(w%C+M(9 z{rmdP-}uHw_WsY<IX`3PQYwy%tesacd-uQ0?*Hd3|Nr~7;m-d5+578Hf4Xn_{=fIx z{}cB8{U{!7|83s)-+%TUtAG1*rs>zM*Y|I}_h0XCe(b-6|C9emEw@kq|K_H5?i>Et z-={bIoqp;6`d$C`@c%x(?VtX`{UQI3zTE%rU-lFGfAXMYwB{FNg7v=H|Ihz^F8+7C z=>Pg{|Aqg)kNKbW{@?w$m-|=6Nd3<g{D1k%|3@E}o64_UQvdnm{4eL_{`@!m*Zy(y z{{7SIzWls@=-+$8f9an8)Bmdff9<iS>UZ#||8j5ZwLjK>vA_LG{?qxg-{6UpsW<Fz ze|r40-tzb3?SEa@>vz`wd-Xr@@1B4A_t(wOgsz|1`uP90PyajqM}PhQ?bZLuH{+ic zMeh3N@!0;!|H=Q?ul?`!Wxv?#<!OIJ|JTR;`?>%6&;P}*&)ZmG8`5}i=l4@WD=3gh zOy<9bsPDgQz&k%b?tgvFKmF(Zj0ti<znA;|&it+3zWMwAD_iTY{A>OHL7pLY%J2L0 zivP=lJL=!=7ykbo{Plm(uc#xS+3cV9z5Z>x{XZRJ6~*<c=wIJnFaIQ;`9JP$@xRA! zU!H$b|L*<&xX<^lStoiua$os*e&4(Oe8=nm{aN+p-)p8{{&)Y+?XHjA{D1kp|3N>4 zum9Kn|NqmUPw)3{`~SVXV&2SqKVFCaJHPmC(e3B<a=)YD!|$>2b^m_KF+od5a! zh5x6&{(t;4e&IjWtN%^E%4`0;_163Me!u_E|Ez~LPyR<fuaB5kf9>ynP{$iSiTm#V zMf?BLL4&bB_y4G0ApfiLf5HFBTYt}gVE@nl+<(*RfBMh=%l4eV|M!pmx&OJU|8G6{ ze?Iy4KmGgj6F|vw^8dWOwV)|rNKvEw|MZjk-9Pfz|GfX>|AYNg|Js8a&!8#G4c$fm zKNp{?KY20!`@iot|0jOlZ~0$3g6aAGlTVDFgVv@T_*V^TB7<f(vv1U2pZkCQ=lV#@ z#a7IT|GsFg4f<5CU%zMH-|yO2_id@u_+NkD-n~Bd_vH=u>;IkrH`f_{zW=|k=l1#X z^)-KEPXCn8j*qgBdsp8FYI8LFIDhq@eeU0Qss9t_)pIj2e4q6H`H}TnPuIWr!~VuT z_TToG{}=x|{pqv&Ig}Pd(67@!%D4P2`_o?cqTcH7>A!lXBTxO@fB5~SA6{B^n`?eQ zU%KR6ec%57b$@eze)}%7xBBDyir<N||NXVR{d@VTN8!KUdOwa|`y<}^U;X~qzxIED z49CCvvEK0i(qHx5f5Sij@!tGt|K#8Ir##*N<KOllf0;q8wf_m?-}h&ptA8T@iU03@ z{$ICW&OiR;|MCm^PeIdUpamKAU;nh%f$}|Qjo9s&|1<xesecA;Hr@R@|I(k6*3arE z{b&7OebS!IAzW-t<Xz3*k9~dy@BjaQ#ebuJHLrg{M*MF4PtO0Z&cFa|eQbaD-}!&? zzr*!k>KPb5%AftwzwMvsh5QeH<TL-g>HBE^=s&}hW9u#dgO+PBFs%L-fBN$Lt?&P5 zZvI#N&z^zdf4uSU;D>+eU;Zlo{)7ML|7~xfBQl@{NT%+;`PKU?cK+YFe=^Uv)5YiK zw{3fCef`_t1@gb<d;kB$`Tx)4zxxmCYyMrS{wv+&Jt$EBT({eM{I>nC8t}4$^|k*V zf`?<~ovZhrKYyF;el45VUS9j3{me%nc<KCB|873V{QbZ7FI#x#|JIs)xxY1kP5-v> z|DS)5KC5rmUM_p{{-A%^um7uld44Q@Rs5gtod4y&EkE_+{gZ#vZ$IiU-Cy;`{>eZ2 zYxPg|m;C)c|GL}1f2aQMh&lEz`S13<{|?vR{&W1l{~z_${{#FiKmK>W6fge&=Dql! z{r@-l{gYe0|NHhY|HN1R*`NOBy+r+|kNX$@eIIlB`*oT6Tc7rx`@jF%?N{G_e|^4j z`?rt(uiU6#Xsi6T{_M~2^#84o*Dv}1?d|^EXZM%=%YQWgi2cR?@2C9_s;kR-|84EJ z-`U^oVGW7RTL0Hf2em!h|DRv?-+$Hrttb9p@A+@^|Kk6P|G$3wf2a08_ZR2?cVAwQ z`M>q){*u4_+vT^-+&=$-{h#X(_ka1b{zJ`DQ!B~!@Bi=L|5xAidHmKX|1W*ZKEMBO zjq^YK$EC8jU*CWD{8`|x|EK5MZ~W%<;{4V7zxj@zlG^Wo_Wz9^(eoZZug`z}->cr@ z|5i{Nxqi~0)%O4M<!*ng&-!=%@x7nrpyh!3tNzUVW#0FH@&Ehx{$-cd-;(^kKGu@x z(U$yo|2?;!|7$PwulPSdLltCbrTD)-0|UdG{jcBJ^ZuRxRi1&N<Vn5W|DAsSww?aJ z{Rw(=<UrRs{oDUbzJI;H>reatHUAkvMIdPEG(q^uf5HFk3=03hKdt}G!!YxYZtedc zKZ|eFSN+Mq@PE<Y_qQJN|K$hG()_DuVAvq@|Kha&V$emK4S(DJg9diL$^QZkX@YVQ z|9|<{p!J%E>!1DK{9}H#{VC1=y5H@;mrp*5GzfWr^UHX<hxhA?p5(v$G086e*T3Vp z?|+Mbr~SR=N4@^P?YZ&6`>r3YzYZFK{A_dV_WZU@-?pE>zrNn)zy0+8T2ueq-ub`f zp8x(k@$>in&zAdNH~;uoyXwsU+4uHuzhK?3_;=+`N$L8Xzv_OL{mbsJ&-~YJ^53!g z@8nDJcJ)jDd;EVtw?69n|I+94qo&lq_<v*jwbT8t*BicGR#)@%&C<u;uK)WjxBdLQ z?Ejhf?bpQS!Fq!JKl{NWd;8UYK-(I6|F{0_zx6iy`u|tI_RszQdEVpwvVTuMzrAh# zqI$XHfBBw&+@=0szP8`%#rd!QrQBy7H#j%BAGBO^`jPWdH~!E1X#e_`{p<a2fB1X; zsg_=U@04-o|Lk-2uc3{NkNLO1O#Yv4{Vz2Ae`{Hv%fG+w_5a_O@BH__PIl#f-S745 zqyOK&S#Nve|E$md=lwi??eqVR|Mp8`ZvS7N3mPW5w>}Is>3j13^>hEHBMp>1>tCOJ z`m_A{>;Dgb-!Ai?o#BS-o&N^?oIfxA`SU#Hck1)$Pu{%W^51zkX!!x-3rDUcZ?}Jc zz2@iqoc%9<{?7c}4yscae&>URe%Ab1`Rl*Uy~Y0-7#?JP`mcrBS6TgO{$KqI`m_J1 zpSQndzrFVDpZx~;>#qLmzW--`Mclnf|HZ%kce*~S{#)J2PyfH&o_^&1s>ktj-~8|V zUSIj|>7nI+zkh$3{@?%PukC*|H?J=~KmRzW%slmP`-Xpidj7w;|IlCazv<I@&b^>@ zX45bIdsFx)dwTZy{ky-*f9n6%|4V+|{{PM&{}_M!|L(>8g?}Iak6Zr#`J3}qzqQx> z|G)45zJLFB=PmzczIEIG8UJn1{IB}G+xP$LTmPp$onQK2A2Mv8GylKx#s5)n_FuTN zf5!h8|6lyS^-CSpbG#q;FaF}cnV<HzLuSbT)$H52;&JKI+Z7p=|8i#k`uDqb-~PY5 z=aufbX1Dr(_O0{R<Ny6He|Ej>-_?IpzSY0k`EO^O<*(`gm%sY`bmjm2=kGuLSAIW# z)qdUYPt(^wj<5cAKk(n(z5myqvVX(B_eVVc$Nbk{7XOdF{@>Z|$K&Jn_jkwrTX#PG z|NYB<w(tA5_2K@Ie_N&N&t1Kc9}b!bhm79pTmIkM^WX08!@tasfq;kqpZ>Cc-p|A^ z>qr0XE$a*a6-)nG0$m?&vHP#`AN#}q>(BmRcBudN`s8{$(Ascm=-Tjkf3G904PQ5P zf9|#Uzkgw@2V3^D_<wiY?+^0-m@h>C*>Cdy%e!yTW~Kc1{c?-n|NFk5iDAvD`k#O6 zpP%@DiQ{tT_y3an|3}XLzv*9o`Tx|}U-$p}332Vm|KCs5zl&c|du#vqzw__>-|TPy z{eQv#^O1kv2mdShzjf(X_4@k1|NJxmXP>v%tiAR3_#fwgivKhI_kI6=ckVy+JNrBS zo&P)kO#SZ9_l^Fp`44IfZu}P=2Wc+sPX#T;{FiT1U-bRo!t^Kglm2JV{-60v`osPQ z|LhsQJna8p`?KKNzxwAXzyF_pzkl;QP`~TIroYGk$*=w<&%gi~_4@Ju%}+>q0P2o8 z{CWQBNB^vU*Pr}*o<8^gjK2AEm;e7R1?uv>`BiTLZ8~U2HC+3<^zYsOhd~XIKlN7N zWxC$i=R*cAvi`q*Szmi3KKJ+ko&PWA{jq<u|LNXkibwzF{tul0>&pJ}+W%{&Jk>7! zclz6(DcZN}fB)SIn$FzM{`2GadG$}{zyJEQeEI)%fA#<7nf@<6Z~yu)sC{($v-~gK zSO57f>!WVj{kd-YKeY0%==}d$w)I<<|J?qiIlf-oe*4Al4L0HRa@CXf>%QDy{eSa6 z<^Sua{lE3;I%sV2{4f6hZ$E*?r|j*gCrW+$UVm-t|KET9{<`!n_-Fiu{{PLt_J4Yv zzh})Ro$uc_{^-eHz3%`0$@8<TRUg}j?+^Ls{n$U~=X&w~*@yo}{rvu0cH4LBx}uN! z|9<za-FNrL?N9bK|L(u9ug^aHKjdHe%b)zIztZ3RX|Bw<U03<f{Ga^(^<uwMwe7Ee zj86Z*^yhkA$ehuhzt1m&mr3T^{&V{y{CE1V-@hvT{!e=KfA5X|LBE!MtKa>v|GPe{ z&0u|Qeme5t!<YYCub>V-tnjaWwfX=2Kl<PPAFlWQd4JY#|EjL~$S?o@p5A`;{1&}` zzjucHJTCRi{^$QU|C9gA|Nh_cfAar)^MB3Y6&m&*>mU7}_W1wHA3x3NDnsg~9<AT{ z_<z~o`fES^|Hy-C(m&f@feYQe|9`&u?S5|GeiirsH@~0%Qu5zB_s@qj-_F<lw>u`! z@at3j<A3YtJ=uTkZ!!Y|LqjQSMW(|4(kJ`3{mI?=@6L7fVMB(G^It!*uYD2!qW**Y zfB6Id7r*>J@m75L9Q%Xd`u^lUZtuF&^Vj{qzxqD|g9F?De;WeoEX&va$q(P}^DpWD z*JJgO|K<1o*YmBP{q_I%pS5fMzo_5#)&9?a(D=tk`Mp2-xBb~Z<G(v-Fhb$~#{VBc zOP3D(bN&xnqoe@d$^cquf2RJ&`9Jky|AT*ezP8nU_*Xgl|I_%NCOI$ruYdo)|GE6s zZTr{mpQgXR^=<U>|K)#<zrKFS|F`XS$h_dAuXT%_o|*LY{fFYuH<JGRKHt4{zV!e7 z@3+?e-+JeNe9yca&x`)fe>MHmw}<=9{?E<6{cqdcuRk~b3z_)e_2>E2pZ6#Ic`owz zbHuee&sxua^?Lt9t^O~0yZwUw_4Df<*I%6e{NwhTpZ}-b-~UJRbbb7nvi*Or{H-?p zCB9n)KGULD`}?u}wz@aA@4x^2+gty9-OBZQ|IPjSul!~G>recD<$qtd`fK?+{d`<j za{Y^2@zdV!pYm`1uKFE*|GruOyZAr#&-7FKE&g8m7{2enIHY&+&we#@HP`mD|M%4Y zTk(J6o&T%f{&)FreSQDU-T$|T|5~p#{aAg}k^d%N_gDPMJnOFg@_x-9^}n0h|JV2Y zPyF-d{rjczwg0wn_+Q=gKl0N5$p0t*TM4bd_ixIl{U~!RckRG)EUMqmZ~Ig6FaF%W zAG!4xUwc2AzyDW#g#G&e@7Lc?zXfVH*q*C@`(yuF&~R$l-~D@k{ZIK8zB6XpI{QnY z{>zj9*{}D5)+PK}DOrE?|NQCo|K6AW`+w(`F=!bEFL=u2uuUCgA%^c^6N~TQ<rqGP zK|>gzJsqIQ81R}5@X$s7=NF*08qdM|KCYYi9ELC70I_FZ|1UrP|LLE}3^UrV{L8#t zckAEDhj0Gcm%f$XTK^C<BPjm#-}dKs{zI4imEZaQC*<$`Df`4e@-r|v{M$Zh|J!f> zBfo+sgh9)MK#R%#*dP19_1?67e}Ap~<9=&@`0qLYE2@7P|D6B(_x|g9wtw}TG3iI( zt3S&Z|6YIi<9z%5T6_QRYWNrYz5e;5`0H=}uYA5g<lmLA|4;qjZ?pf;@AYs0|CODW zzRdhz)ztr=Gj`wk_Ot)^ziHq0fBQ4}((=3Y*Qd{~|HuA(zQ?WSe~iEUFZ%nx;$QfR zde5)*zJJ}l_Lu#>^l$y;|Caw(PyKuR&;G}M>aYEjM{a4n`SpLvulVlY^<U2aPyM&} zfAK&4fATNd>mJ$P`JeLkpZbsf|NWoq&(8aQ`e!}+<Im;xAa3-@{boP^gJyS6e^-x~ zUjO3%ll{^8@_*(3g13=8`hViT5oiYEb~a?ESnB9blF^+ccy^Nf-+R#{=YD;y|0&Jo ze@;HVw0`q#So0#j`+w>$Z@v0W`~KYpwGF1vjh|{~zn1myPS840&_u_lKihrwm;SB) z7@qq#yz`g+cmI~BJAZw?5&ipv{hsY<KW9d*PMSaY+x}<2qMhnN3#(PH`MvqC^|=1~ zznPUjC(fVxoqy^3`HcR0&A;XELDL`mm;JduZU42m_TaU^f3}~k|MUMy{kKoTkDjib zZ_k^1`@F6EFU{q5&UfD0{r}1Lf0GQRDV?mpHM!%T?AhZ_@+0csdxQ3Q{<C{j|Mk!G zQ}%Cv&wupT)e1C2`T6UU|2D@y&kufk{pI|Zf3ENNr=4r>YX9&5j=$TtGGBhY_1r)2 z&+*a!reByZU0?Y-AG8Y46gJ0^{P@@YSAUP+`qe+>pV+VU|NgFj^8e<!|C{apuYLai z=2WzCM}OUG{=R>^!CQ>#@BdW?t+f66<iF_K`G5c2dV9G3$NHo7_FP-%)tmOO{5*ME zBy(aVXoBi||EuKx-oI*AY%0?HzvS)pDgRGzKkHu~^ZWkB^Pa!$zt3Il|LN`J$H(78 zw~Q=#_50~<_@a;dcYohs^vC)C_1^zq1^#dIv;Va}_qTu1zt<B#hZaBI{OWA|>(}wp z|Gb~Z@BVoG-Jf{rPx1QDdCvbbe~;h3|Ed0VeKx4U0&cQg|60$;@Mh7y|260S+F!o# z?cda@|Mjzf*BAY(fBU;W<>O&vP&)Z7QP1$=^#55uK2Ls9-}7(zY0#X>n*X=H&2NKk zD?L%4`}20u-<|6*){{N5zkam-*M<ET{)0wi8~(dr1}y<OXHnk->Te#H^jCb^pK127 z|M!RgXJlyL`S&+*;h&;+Q9tjmtDE`f=)c#!|2O?BU$+djdhG45|G)q2y9ODv|5yJ6 zG$GR;_s2c@U-X&(%Kwi4;-Byz|Atfh?*A+QEcrTb+J}D=*Z%*szD8=>m*cO0|G)pa z-|P1MYw@S2-#_$i?dAX0{~mwMe!2YbJn&+WqWX_j_7{uNPJROI?#VIy_xJfx(29`z z-*4^vANB6PzMKD>;+_Bezj|l>{t!R=|GBNX^|#Oc`V&#V>csy=f1YpplkfSjxa(h~ zPWJvK`&7WA9dqk1eT#lE|8@HHkNaPo{`@0)-=F%^@8kbXdAeV}YWMxRSO4}({OyjN zwCerz{P*|0P$yUZ9ot`g{mS*Y|L3ay@BXsC^k@6O{=eCC|IPWkIbDD2M*EVt`lr9e zd;RynYagRt|6BI|i~mNTG%=^{<qz%q|GWPj|KI$d|Ns0@#Mab%_Vri(N4)!g^;`X- z|8rm8e{=W$ZSB9|Q@tNUmW9OI{M+(u@zgK*cK;^-yV?BT{@8zmx^LgVU+TB}AARG$ z?XmwlFaNLk|D;~FGd#cE>*xK&fAdxU_5Vwc{_p(nX5Rci_P0N-7y6wZU1#%OKfV6X zw*4=@s(w5l|JQ!a{OkX}Uw?1>cE8-4|8mdwm;JdP_D}v}{c7;;RHNUkWAwbQ%V$D& zrhJX>{C7R+@0FhYkN%%OZU6tf)&KguzcbyR&zap;Imi9^vP3!i``=%GuHC;ZQEE>0 z{yD{YQp*zM<`(D4J-=xAe9rHh`|Hnt|66o!XXcFKl_hyn&pv*x-EVjQd$!cFho5V~ z>Yo*Y*k@n=??3<l=^sOeGs)WV+de6VgI7K7F9Y|27qnie-vC+=vheHAP-s!fz`)Qw z;n)0k>;6A~VSml;pE+o&YUuCu)A6sr$-mzJ_A7Yf<-htz_W$1B{&S?_=f!_#ZR@3O zZF?Vc`+K$3-zm|$|4&bj`d+R--}CMNd(Zr*9*zHY{Qvv#s{iRd`(pm?U9akYW_jl9 z&(pf)J@+m7xLWM1DyT(T@qhW}`p1x6m9_u(em?i=*nJb3>V4Dxr2lWu{kgvW-~3H~ zp8w&0`scCSvHef~-hXlY#ec)UIq~)OtLndH|Mz;CzwrORZ}YeO5B?qR{q=c3`ni|q zi$L36vOfMxy|vrr|8(2=KkL8!vDdHv^5)y^E8DeE_Q9)PogcMk{;Xf(pFu5@_~`#j z?7pt7cmG-M`a69;B)qae-tTwPeQxmc`SG9U<7-{BuQ^1_TfP6!|MSo8Y+GOW@9wmH zZ-2{bPXFY8tIqf5{+io=z8v5BU-tK$E&q$}TmDkHe{SVG`)fyk_RsqK-}BS^cYpH( z|1JFg`q=-fj{4~3@_+Ad`}=&o>gt#~+V)!U#pkcj`+x2FezQN*Pwg*ze150YueYb_ z_x{*l_DB3D|Nr7I^7-|r|L6W+`?3Cu{TKT`|3AcE|If;>p^ht}_kSeU+t2fhzsP6r zzxIE9yBIZ!K<@|t#NX97{=f5|H^(Wu{_3^;GeHv-YuxH~{5N&lKk;`wBSYBJ{eS-L zFTN)KJmu5&yMOEbxBuVrbH4TdxTyH5|EbMi>%aeVhB)@e|M#crLG}2(@AXCh`9VV` z{YQV-@A!Xf+n@XQs^{<8UnlkL-OlNtU0&Ld6(2&`>fh?0$$#Si>Av&m@Bi=o{tLg0 zclrPPpZ~M{cYo&3th-hZnstfzue%;R<MR3bvp=Bm!*_MdDt_Ml8GrpLc;4mvi~Pg? ze?4a|n5*;Q{nY(x|Lx1`=WeMxSGR$rF_ahop6{OjfAhVUTg2^ePn%!+?|Ug|66Sy& zY#ilvl*7M&msWrJzi!w6_RsN*3=YTtFR%Z%zvORa5U3bf{cZoef7jjrT;275{%`xv z|JP6c-|#>9ld}5%XB%^WYyPzFuYN54YvFyRzpvA$fA0SOZ~MIYpT2*;^zZrZdBt~{ z{?*Uhe!Z^mpK9COy88M5KKz+3^s9gS|Lgj7|6AYw-@38a>0tej^_u_1?0$Ux`)9(} z@0C3-<Fo%(_FVt||Ni_x(=X{y{r~n?ef0moT)+R%-}uw||MXv{YvRvei~7%Jf4%JA z@>}OG{{J0!`}_Bo_517ogSH>vp8Nko|KH7P_s^H#_V>>E|2os-x5dZbs?*yi@I5~1 z|Jv90jpCnu+<xc!|L70<-T&TSZg2jt?tZ=8_uu(@%U3S{`2O_y9qUc)s_UPY|FL{Y z@&Ot~ckE}a-ar4p%kT2c`9J;(fBpaINB{ft_4`k~J-*}r{~dpLkJq34wN<^o_{;QT z^Ot=3Z})M(#sBQ5=Rf}A|NP(Uo_){%qc1N?)!Ux>pZst2^Q*`I7aysc__bdD)BZdE zPVfIe^>2CY-_MWhA<JmL&-%aVZoT5=|J4`kmwd_IuD^BviT}#~`+xfXn{SG=Q*QUa z{b9f2bN|)re~f=-|I7Yk{U7@a{D0wFX;%IBum0cv?VtMV-~Ye=@B17*>;K)!|IR~> z&*=YKf5ZOC{^-vC3;r*L?xT_axnKW(`0uA(-%LO4|M>r4eKshAKePX14%*fw!LXq7 ze{@&JpVhnmKaKfc|MR!}*Z<#-{}1}_?EUZfE&D_NjsN^Fef)mKe|Co2E63;0SNxy+ zC3+Glr*8Of@@D@$&;|+yhEMUw|6gCW&*uOANf>RN+aKp&`m=cXv3i|T^(gB@A~r$S zhdBI;*Wdr@Y5wf*$NyjF|Ih#B|H|+2_g4Ogt%_%7XxM!eb!Eswf-6IQs$c(pXMcT) z_x-xR@xL<v_r3i+|M%{bN!I`Rx7zpTLK`*<>T~O*uKk`fZU6M&p3|a(rtRN8Ki}|Q z(c9<8>QDau{eHK*f8_7P|Lf03zORqGeQrDd|M$oKZ+n}4>i@1E`F8dDw(Kjb^!sn^ z`>(v@fAO1t+RsnDTc3Xsw1;--v;Ts>ioPyAe_i7L@lW=zKFe>pZZG-w=Vw>%U-tEN znVJ7jpR?ZzTA#eJe(m=9nE(85WnTXHKL7f$f4BDiH#zdw=*@nspZDMWdl>gt-uu`7 zmj70N|IhhYjyW}B_P_eu`Ru9D-|f#lHvM<Ly6^wzm(#b-udaLXf9es)7z=pw?El?$ zXOlDkENA~;@A>D==h)x(pVxE$-hceZeAU16zs~=ofA&Xd|F`{9e?T@X{Y;--_vwGm z@%^vf?7y&Y;xl{Q-({!1{x|ry^NVBD|L>3I*VjM)Q~&#QvGwou?7#OP|9QV0wtMy? zXbs5jQ~y?dw%^+Qf5LzNfBU!n)4upW>dF7?WAz{ZU;hDGbv?KE-RHT8Hp;=B=dbTP z|NZZ*w#)+185*<OGG~Bfk5`tQvwUs`X}^G4F3$?(=FVn&ZWj*{#MeS`e)T`+a$VHF zrv=;oZ(sL!@z4LDq51{f-QVlM3kwte%l6ybhyK@Jy59GXI0M6k|GA(A+u^H0TVbT3 zTVW>tKmOzV&+2Wr)Bm3jeo^kX?f-7qf2IAuLEWEC|L6bxKkYR10FBN6<J;@L{a^fl z{+j=r|8L^_>wowEdC+#nbkLmn@Bg{){zH}?&+q+hulj5Ln}46{zW+D=fAPQW{Qux{ za_;B-Y5yI+<3Ibq=+FPZ7X9D;@8|Mqf9mJ_KmBw6-n0L!PuQ=1{@>31-@^Y`R%h)0 z`uqOc-~ZQq{vY|f9)1Etg80*a&!5kM?t!TU?SU!&XTE{uT>a#e>F55lf_9#NR{_tf zHvGB1;r}}8|Mt)SZ^E2bWjpleWoXpWC;#LARlwHz2K@WKufFf!u5Zf|_y7Mj@jvJ| z1IADH|JO=xpZ`AY=dYd9KHFb|tQ(dAFSq$PfA!z`Tfg?3{8P65FUG*|PWAu!&iK$% z@fUyc->Bd9C;#$)_rKGhKJTAn`wy1;_iO)O`epjZ_Zh$6{^0+60kkgockHyyQ$E+X z-(UK1YDi7m&u{0wJ?H+HssI1?*X>Vl-&<CFe-!`m+hMc6zl*nh_n&%n{kPlGkL{28 zxWDYr|GMj6>tFs}W_LgD&()9d$^X2+{uleT{@KszX;16bzwg&PUH|cK{>R_!|9&lf z@b94ByZXy>{-3aaBLAyi{>%2u_Wdva`!9??1wI_%nf>SguYU6X1<kcQ1nt<~3EoX} z27Kzz?%(!He@-qx16~#SeNsJ7!#bUa&AWoX9iRDWdENj2f&Wwg{JaL<K9d0240{i> zedd$=e}2#*M~DBngAX}+@t=X=k^QWX^0|Mt7u<jF)Be(ro3f8V=MHJ~#utM+1Plxe zVQ=?OTW+6y|NrH*zt8{FGcf$ypZ0C}p`W0wu<t;#qPe&K-}*KG+t2?${_p&MIqHx7 z_qvZo|BLI@CErYcJ`XguP`>W%Z%6wt_S64875?{A{dawPe9*68|1ak=?tudJ=la^J z{_XW&etwYu_xeNp?>~okU)GoXZ#(z@G&}p;>blU1Yg4Dxo&9`&#{V<*uRq^6`g`r` z|H_`<_QG%f-?0~jZHvi9-xl-r-|Q>6w#7{Sc>m;I^IMPOz3RXIs6X-7e$D?A^)G+D zw_o4;=kL`2g*$uDR*;ANUpS}e(f|G>`}O{9-n)NE-T&0Ne{93*-{-&ls~_~Uo=Tfx zmj3y3<=)%qx8JY7tN-->#Q)@flmDlO{)^N<4&GKUKlcCpkpI~e|F4$>k8Cdf|N8C! zoxlHyzi9ur`||po|FTclzx*YiZ=YkFZx3ox9j<@*GydUEuj~?|xcmR>>wm{*o!g(K z`G4u#>+|Y=|7`mcf9$o@w(I*3pFg{}<o|U0`lPp0FU()P|GRA8RMWcov;J@VxZURX z`TzIM{h#`;0JH|+?a%)zKf~+)-3RTHxbkQI@x7nl>zuOxQvdab@z;Er|L*_y@BMrI z&A%<i@8WkC{fmGd&EWoTd-wnB<Mk8&e~8~*3u#w>_#gCN{ChtmgVvw>cm7Y#n*Y0A z<<Ikf@(f=fOTC}}i)Ub9xKV$d$d%rrbK|%DfBEk9{!++!TA$?q&Ib>9s6m#BI{bTo z`u{gc2BV+Rzy5vv{CvazFF)=t`0x7r{#L}HIt&a6me3uvLZBVA48Qq7n_n2-*na^p zXZi#_)aDv!TBiN~ng8h@?Z4Me3H}!iIyOeF8|m1X{ppwY*Bsja|H+B_mp-c2?)&n$ zfBXKo`|pIm`}yI2+@Jj0`<B(L@BY8;=lx56o>%s4x93fLn?HYl{QnB@OpDh4>K*?x z_s*}|x!<n#|8<*xf9?8T*M7V7@A{tl{DtLm&cA{`8=L(r`ug|N+dtRk{$KjTp9wxm zYpH$BKd=82|J}F#zh&M3*RXa#{@UsC*W;6~`TqTJ>ZbScx9k6Yx6PYxd;Q<#ef1H$ z@BI3;{H*=!$M5Gs{P(Bc{{v)`-Tv5r*}vtt-rm0M|JASc)}Spc_13?ppWmKq@A}{7 z*q{58e)OCCTfVk_>V^5Q|C{!i^e4_ym;e9r;D7zj`CB*qH+@`x?Q8wD`r9ApPx|rQ zEN<`A^h^J)&#Axm7&0OD=>E2s>i^G|{aJnPANO0C&Og8V|NXoFzUc4&zg9u@(eM7p zZU47@^Z%+1|4pC&xBWbS?eqVF|LeVWZu{?l8`K8a8^87uWF6?-|N2O+fHU&(*QY(V zk6Zu0{e8aWKYoS{-8=p#$_am3{PXAeo!?HM(?5Che&+vn$l$_-W)Y9u`R}hsezw0^ zclq=8%is7vgO}vo-&J=uIr3-l*Z-A!-2XE&9Ju`Cf9NOi|MIW*Km98I?{NK}|6xz< zf5$I~H~W8nUj3H(yx+He)+gSJS^Zah|Ihl5d-kaQ*MIZBb)D(|H-9HR{r`5me&_zs z<NK{{{uh4#|I?q-t^U8?zrTF`-~35m^M41Y#Xp}1YCx8+oBB6D@$XN`|2Ov^o*(ot z`_zA-s^Z7`SM`_vz4`dZb-nBJ>dW8TKaqbc|J6RG{(t+UpXqP@-@Uls`S<bvd;R{O zzd8TwxA2(%|7-u({{3Hm*Y9n9R_=ep|J5`8fBjZI```7g|8<dPZ|(lOFZ#drM*YH- z^@iY8Ut7QWgEr3YU;JnPqQAyZ>-j<BtM{A#{H#e1JpTIB_Kz1n{kduO_3!uJHTA#C zZC@9xtquEsearmy`~UoZe`fvLKdb+0zWslr_;2yvqA&XY{jYvM9sK|Px%*H5yWg`9 zt&e_p`h48+{onrVU;Jlx_5bLp^*7|JKJJ%$bpP5*_y611{co@NaJ;{MU-{lYvGe!; z+rRv0e(m4v!}TlwWSjq+vwGqEb$_nI%afvi)sp{fe;xkK4yo1;|3Ce;{+v83gULtv z?V0h9|2#MQ;`#Ug-;evR{4Xej9NqVS)<^b+e}Aq|j;}rOU*fOX6MN7)FninI>(ycH zm5={pwd-%MvB%uPpWyrX`9JZ!p!F*33%38L&;0lD?pu4v$!YfQ>TTWb|9xN2$`CR2 z|EJ&o&rSTlRB)N_`~Svu|2LccPyKuU-M`ajuj~JQhHQd){Qv#b|9AF#{N7Uk9<-+< zeSY1${}2Do-~8kL@;?v%WqZH&|M&0L-}#sRU7uGU^lQuSe$b&?|1SQMegA*A^<V!T z^@4xr|F)m`zwG(`)L)U%nd9wypv{HTpiQ!W?q~da^6szm`4j(D{$DryfBB2~gZhJi z>lt1gmjD0z)5AA^|DQYg?f>-q_35^trDzSQzx)5%hrP8&Y`VSq8B!jAR;Yp2!G4rC z{k#6;-}C3K{u|2LTl@ciZ~D*ukNl0V{|o-fe*}$Jhize4``i2X?*HwehRBcqC2#h> z2Jf@=?*i?!z54I^<^R7r_TT#Uzxe<1yFco0)Ss^Qb?*9q``=>FXx95*{~|R{hrjwW z{q0Z9@GbS<erIpz|NpR_|I_35w*ODr-+z7jz2E=X-|@fhX8n6Uum0L^W6*Bn=k{Nu zul$!U`nP3E?T_`<|5ktcrET{=wCZ1m|L6Rd?EC+P)#WV~2hR+AQ>%}@RR8^7`d{~d z@w)%FK3!k>yZ`I_uk!zHKLs6_QeUTc*yPRo|7)`Ue+Td0SpI4M0{Q>!U+bS<zh4oV z8u{*h@<+-0VX^=BtJ`1y=5?%oUERt*;QoBP{=e&O|F?d6|J^$0efgg!kLrKFpZ%+5 z_s8u|>wo;&fB*l#Yt#O({PX_OXZcfK&fodT{`tnXzn}i(|FN%&*Zp=ntZv=o?Whwc z=a<{h`G4#2{i;8`Kh%HefBpXT^PGRGSN~UU{J->z_uKzvf92oD!`ckxbL`I}uiAe3 zKYQhW&+qdyj@Q3ESO2B{+y8+1zpkYJxBnUc=70PDX`l9+exLtE<o~7@|9?-<pFKY_ z_Rsg?wV(P;ztn&Fe-m_o#<%~1|JDEB&-=sv7djz&<iGCm|Cc|0&i(Ug#UHKi|5?ZX zzy0-p&FA?)>_LZ9{>Z-yI@YSY>i_4P-}~p()_eB-+x&k1%a{MA-}>=zCTPy4w#S~~ z%hUbG{>Iy$tndAOoPmLX;Wgc+IP9zb$Ikj^_WJ+(&%dMoU;Ll*y8g%iiQqPI)kpc< zpZSLW`+vxTPU1=?bc)vUPm`}zM;-d@zU|-X{hu;#T#{e^{(t>>d#&91=z87wI_}%s z{r<oI(SLpY()r)2^XjFh%|HG3=<B~Or)R332Ca<Uc=X5j`Qq93=Kt#NXaD|}z4QNm z3EPe5pZ>DHs=xH@;riTv*4MZF&9#30Ir;BOrT^WZ=AZtwU-jpC&0o(quK7FZ*Q7uH zWB#o!`R92%e_{Q)`LW0UFVa8%IREFT|GN9@e+EzczwgD{y5B2*e^2_NU*@@LU;Mtk z_1dQYoqv5h9-s5~M)ke-pMOjLKNlMuU;Wqm_22iG{$GQfzghaL_}lq;d#@b(cVX*( zo!j-Af9*^E7tH<hw*1fH|EEDm8WsLp`gncKe|<>r;!l0pU--_~%Kv`?|0nPKAAb9P z=fCoG^_$E8=db?~AF9{;e@n;z%vbdve_Wo`A9iW~&maE3()s`Wm-v79$Ibiqz3qRY zp1)bD61VrS=F@tV0fgPP-~j}$H}i9Ue*Ck4&fkx>|1G*c{fK@2*Z&*p;{M-{-+z7! zsNGOK=l`vb_0gbx%WHpuHou;Hv%YAjPHg=WQ2zyf0_WFY<9}WM?e+ivx&Qjl|D9jc zK~oq~;PHUA%0G}v4AAhwJIGW<TV=_)ouK)TImPcF^BJctL31I`FM{Sd&VT>=tLFat z%o%O)sSgm_eEolWyZ_TaA7?P&U-`#!_g|TF-}cYDYX?4yNr6@8-v6VZ)kO_|)w|{G zJ^#-?Uj0R$fx*W2U%YDl$N%6ZcMt9V9RHsm`|tm=^umAhWq;kQPu}p?=U@8EfA7Vf z|Npw<|NW|e`oI6*{6AkW{r~^T*W^J*aqiz<^zHxcclEdIBmY1D^Iq+Xed&Mu-}M&% z@1Oef{7?OEq~mtBz5hSuMZNB~_%A#D-@o?9{r~n=|1aCUy}a-15B~4_Bc}cTaDUtX z_4|MCUvKyS$~Mr_iM8|p-@gB6fBT>6Q$P2Yfzr*-_n=xFa?p<b$NJTu?*IDx{u*fI zR(>^T-Ne88AK<+m?P1@K-~IS!y3F6w_x0;P%Uk}BuKvTg!2Gl2|FzTXFa{7d{$DqB z|JT>&jsKvZ!5QJCVK2VZgje(D{^|C0ZtzJE<_m}a{J(Ad-`vjr{-#ghDR}TiK*#@> z_y1of|GoOzo{7PMe}!fJ!#Q7%Th9EWYY#bY^W(qOPygrtRsMTF@6Xiv_07;-@c(0f z`q#b+{(tZ5()*Wwbk~P{{xsF<f93nX!C$vOy?uY_7th=IqWdR(+dt)hdhh<t_v5So ztUU9-@7(+=Irkx_Xg>X^zVE+p)qjT1{6E|OEUx4Ky7kNX<rnI&|8xJpef57(6?Or# zJlg(R{p{DEJsRi#Y=85go#Dpa|1a;<{aaFe{aJnN^#7j!#Q)r1yr1`f{rvO4xPL`+ zUt9C;Lfwsj_wv5G$LwD}yME&@_jBSKW`oySE(5K#{8rDz@Bw@}NBjTtT`2oQO&;4< zJ-0ub?6H6A=lVIf`{(DLK5zH`_pTqHn*7qoeCVlI4_12IwwM0<bJ3suuiyRu`0^oS zK;ZSC`of>9i~sE}`Ma|kG+l7}`Ty+K^|zk?zx@?dw_p8HuV*KyKfi55jTDw08=YUj zOuBRb;q)p0t_UACp7i}*{r<Xt+4Ju`ek)%K${ALFra!Cq{w)8_Z-2?3=||W1fBV1j z&-e4+-+%u1<InH=MRlPO`)pr(dHsL?GcxhFCFlsqbN7?}8UJ5<zW(%==<ENV8@~HL zr)|@p^&ft&{+}&%>d$=W+VV{K-{;@|&y1+k`+j}N_0=DWKWjYQzwKW<WKqS@`uQLJ zC)Q{6)o1=&Zt`!T?Z2g8ypPxG{foT*-~I7?(2#-b&;7M=(m#J||9@O0`Mdw?{cpec z|L1;||8M_s{+fTzmQRoTm-noX{gXa5zVzGUuz&JX!RKzqI@O>1H}%B->SO==KB~+A zx4!lN+}4`<vmcl1g36xky=&|C$JfhMXUqTh@BJ%&%NX2aD*YC3@z3j5{{4TuZ~w`D z{$K5%=O5v}|MPz8-~Q3-^Z&Ze^}71E|J48Y|FM5&|Fb^q>HM!nf9gTwM>oIz_x!qF z?C1Ykka7QC`|tgmzx#cCW8I7W)_-Tc-oNe7^mYG1gIb@z3IA#TZ}n&Ty#HeJ)=#mr z&#A5ZQ?uRf+x{ze>MsWU^S-^__J7{rH${B6tp5G|xpB|wU!<PCSw9DU`sV*$)YCVK z-8TN;`)@pG@9ByU_4Dih_n-TFp7F2SyZTk%>gQDbKVSO2UiItqW#9iV`6|y)<>>q8 zr{|~p@BV_Cq#OQ!d1L<$G%#uX$$t9(81?$wPyb_{%<b^!c^7EUQvW~p{}1gMe*KeQ z`8Ra)|Cyk{1cu-FtFJGA=U%z*pMLfKr<yN+r$%K5FfbJK{;_wjyL$S*+57(g>*fE+ zzy2Te|7qR-?0$R5Xb0$6?gLTCYbO}K$%B?Z;~83bI)6^v-aq}2wRii!T>d9}`@8-3 z^2tZb{>W$7%iV@9{&f6*>z|2^{q^7d%N6(Vr~a(|{Zs6*{`I=NKhyW@|G%&L%apD1 z-~Rua^Yvf)f4vzozd!uX1CKxaS>OHt+2`lpud}B=|FVDc)B1D&c0T%7{=e>5>L0yd zpKSh3tKavqV*0oGHGi-CjlTWs-^}=xzv_N|`?nVB8Qx3n|NZ-1vF88tjk*8xy)V5_ z2W|CB{vVb9f5$)hTb7qV2L|;1-CFxUv*UK^jr!70_80cM{MN7DTCel+ztF$eU;Y;# zyKnmxd<fu=|MMO|H<8``^Zus&`p~?){|)-D|FC~=`S1Ml_-l3VelGkUF7zL~6?H#& zXUO|sru|Dl&X@ZGI=%CJ`P+K5lekPCU$?#WKkN}?;Ni*q++QdEZ<hVPYV&`m-)^)1 zZ+UZD^ZNh8Kb~J=&-{D8zy9Cfxu5^PU4Q=V8^}6|`uni0AxHn;Uj6^Q*6-El{$J5U zK8FiDGI#WU{Nw-m;{VIf?L1$OXha}QDjWoz;!R+c#GKzXb3scdGI2K{`q$RnJoUVy z()y?1spa>-E&clV>A&aSUarsHfA=$JrRM{kmVcW|YnJ`tum0Ws>URD9pts(y+yC|7 z|DOI2bWS2i=D*W-zk*gN-CBS5KQ9Brw<q;_{{q$PPd}DNUn{oh&+<8+?tYB5|9AS? z`-|UhpZ&l5^8P3Ob^9LHoecSR-K>6-UY*Fk`}Zo1bzi;z8|(Bx?oYOq*S>GJ&mUiZ z3AB4L=%4pf?^xIg!|Q6`3nf1NdHjce;a~l&^`*z{fA0rvIaB>r&HXoibIk9*TYvBO ztB?DB-sAZHP4((EX*>Uh2GvLJtNs7@*Kw0AoBq%EUq0vm?LUDxe_Y=N9?^ITD(_(X zR6l++=RN-H|Gyf`b@hMW{r9hhjBULB8vpXo{^kF;|6cen^9$R_!}9Nz#w|{q|9*W< zO#S@hH~zie3c1hW|5>MN7XS0S?|=LI=;^=bw@%h){(kxEefX-nA2;{ki#`S$OikYN z|M|u*e|+oz9l52w&_2BWy|s+?+H>;1Ur%rP%)Z;=e_-)Hd(VGYd+PsJzWrry`v1A1 zp8XrtVbuM9r%(MaJ~jJ1fpdtnfA42tC<}aCKW+QU>VL(3|B~Nc|MlOrQtxy9mM8UV zYBOtBf-WkU`r4l1OB3pfGKbr+0}CDS9x1fuNX?G_u1fQB@BL@`KmSmD!rkY}xBpj_ z|LzBshzI0${5SR74_;Jp;(zj|{jn??8vodS{kMPl?fP4P@-O^fey_gr8~l{w|Lgud z|L6Xq{a^L{|0hAGg&zKEFZTZb!++VgKh^J?ZdYHww?2Mv{khui-}gbAl28u6w*0sC zx&0^ppY8whzyI66`||%5P?FjCe=_LSjOb<aze0y+Ps5r{mY{<i70=G!Q~gi<XZ(lw z&9w}_BDuZJ|IeTP|NetNx)=YJBPL4PKi4xboT&d}|KtCI|DT~f8BkMI;a_p-pXKU* zS3mo=eE0nS%DwaN+Jc8WSV6;);Nw@rv;J?j{vZ1NpZvLcRt5&$|MR!~RsCvjs|h`5 z-1-0IzW<N@KmX_d=>O*(vin#5yM6BehX2K1pBviMfevbjU;X#IdCvd&^Z(7%{P+Iz zkMEWLi_^EyUtAw~_}jhuTzi}UOWQ$1PVXK6>HK|g{rmj=uew%$lb`ndmHz+#*2SyL ze`+uNzwYn;E1&CsJ<s}if8+VBv;MFAR{Ul8J?(Gzs=pZgpZQ<xx&4>q`kdG8s{5aQ z{_*D5wYU49{)b*8@(a8UV*j(h>)-4T`&#?+<(;ojZP)(4^nHIac>hZE#Q))^;z7r` zPrF|Kga7}>|Iy$6Uw!_6%GUk!{|oK@A9Srw>p%0a&ic#$*8jPCEb-d!;6J|;i$2cZ z@^`CU{a?_D3itm9snyrNuh*Q2cGBp#`Wyf9*Cpxw+g|%W=Fj<^+aBkiuAl#J|NiN} z>#Jh_fBXEo|JD5c=kKrA&#jMc`oG`h-|xrvTjJ+TzN!EF&-Lm5e}nek-urj^+x+6+ zf0x_;TYLO|NByGu+nM%Lk{9~TxDGyS^jH5B$YG<~zn+9HkBHa$mm7_AfZ)3S>!<!x zzgxdZ78IEm|KI%Y3_3~p$^S|JUH|F-*}m_8IDCaf|DT+x^>>ihM@)P4|H=Po%wtCX zeJ|hpM<2@&iO2uv{|p%%g#Q=L{>J<>wDkY!$bbJIzpp>@|GxZx@4x)%+v{8Yr~mlB zUb3Fy#rb;MpI6)e^k2+(1{L22{$1YuzY4T_fsx@vz3hL``GRME703VQ2QPg44;sPx z4{CHAsXz6(f1cF;jVt~iuD@2_@ShzzEi&(~J9wzBLHEji`)g7Ewy)CP|Nqpazt@E! zqm<q^f5lh*SB0JQ%fOIe{O@w`zxiLGr;Go$|0WOG&B}129<-m2f#C_b>RtmnTO4%6 z`1dFETK1WHm#6;!HxW84^1u4O_Z@pY<07yBx}W~*a$1*)<09E#|Ga+j@A-|t<>!8W zzux}z-{1J(f1{`UUsw4*KI>omm$&`<Z~WT$eb4>p-%bBzpFh85CE+b9^;iEsuf1Wv z?Q1<J_#DyyrQhR~|9|}d0CZ2yRp<okwx9FApO^n?Kkaw@*1z*#)Ia}aUj6<5H?RMp zPcQv|Tt6b-Z@>0uhU(wh{r{KLe|zx1|D%1+{J($qep!6}zu33>{*U(FphHrA#=Aed zdV7A*zwa6UqdWgE{(tk@{|WWmZbK$cj{LhhP5%7<(>LY!ztyj*_5AZW{6GKe=U@N- z{rcMnx_)B4?Emdk|GWRWzv}<?@c;AA{L`9#`qEc-ssD=q=YtMB3}5trYlOY&<MluO zfBtm-|K4-|=SSB+yNGQ_gYEe}ebC}hd@CrBM@)Xy+y|?#oYR*1qvrFk|BpY{Th{Y1 ze4cR2KKGXYZF|c(d;c$A_jmC({Xgyh8D1>9^Z(nN-~XY9iT3@TKY!K#>6fl6{bOWc zIPpL1)AqanKwE&W)g!N>*bhEt&VK5DkKf<3=6{yY_pev`UtItH`>gNV?r{bS*?Z0X zUsCeF)Z*Xg=iy7g$BSR6fA#Nu%%9h@{@R0<w9nu5FaGEM>CdOv|KIv||Ng_D&wM!+ zzy4FbT<-MScK<)#xDOwGfB);#=kxy`{1Nv2J*U3yU;MiN^5_3^ebrz2Z~e;u9xt!w z#ozj0`pf=#{Z?r6<h<4Y!<+tWe)s<<@+5BI|NehJ!51N%`+xL5^WO{pf7*Y~Uvu|A z%m0s{gGq0K?lyU!Q1kEI^Z$ka^0j|nSNmTN+7bWr9}8&b)cil?uiq~IzZkv}D_-sY z?W6V8Xa67j&;EbyoBxim6Brs|r~IBjzxbbb-@jeo_doyHKj;71pZ5<4S^W1^n{WAF z9CWnc{mHPkR)_!Xe)s49od2gW7h6eld|n=&Id#(i>YtClzTF?c^4rp{&OiVE{%85? z^{x4BfB(I92Onp^exm;W_tZOe`>LP5ejau1f5h)gzd&mO&VagLN9xyo`=9yx|D_-O zU;achFzlHA$6mcIRI}a{a(d~0-~aMo<EPEHFZzbuVwip@{@DJ-Z?`|T|Kj}r^2_*l z<&o!t&i$9In|>@j=;O?%x9#;+OaB%B`TPBK{^{-epTD@<U4Qg8|LrgD&)>XfA1b#0 zR(`zH|E#0`Z+-m#JNEkjrI6wH@Z<HpKlQKvkAAU#*7NvTkYi4D{vZ9m|LA-9AFro3 z{bt|2<G*k5Kjr@u>R<e?y>Q>}zs<7$_N{fA;Ayg%|Ihqi{oMWw<nV<4ulJw*0<AtY z{{QhmGsByA|EE0jzi0S=@*n*l_r3oaGVI!vaQ2noP5Jaw^MCyXtw#CyJo-H3hKA$+ z<g0(%gNpJ$pw`EJUg%13&{Z`Z|1*x&Z~3~up|1J)e~-uM<vpOo1{Rpq!Ok{~*!n+e z-oG`q|NUowoe!C9nRRnM*Yp40*XQp(UVq|0=nOCLh|FV910?(7|2w~rf^L17o3bH( z9{kn^_P-bY$AB(=cs~Elf7v?Em;SaF?H5=6|NH&*^Znmm+TQzj@i}Ol#o_w5pZVW| zhGV{${EPneXUp54p${X&gMOKwuTMrBc=6ftzxcn)k3U!coARdqTmSTP?rr~z`?vJ} zeg6GFxX+p&^g0xDg~zA(=>MqarG*}=SO0z=yp84R<Nu1^|8MxG{D0}|{r~rvefl2$ z@Ay+Av_;;Lf7^>rb^f=X^l#UX^WXkW`t^5uDdf=7rQi2^JpFI`xc>N$$^HLj-@=aa zn+Dp5xAk7w{`>3g`}c0`|G)g$Kkm1ZpyLDfTm9CTsaO5GJ^%mR+<#j?*9-qw`Pccc ze*2&4pFRgyZ_nR)KYsUrSVLld=+E@MGLW6j;Pd;|yZ+ms_6KxEPXE94+y6g*_d9-p z{IB<ZSdZ*m`n<mNx%S$NCqd`*{e4@%((?bRrGKVxi?9Co_PO+@ddc;#Z^ZrQBl)<} zdeDY8@NuQ*_HPC)2SglK`t4i%=HHjk?WliyiohX#NTV&q|NU3hzWYD%!~Ea%3>Tci zLo4%t*MsjHi_QO^`2ut%2Ezj7|HVJgmwwtF`)|K0Msp;rr0(Xw<-6DazxLGrPdey` za_FsRvlSq_x<PA7Z>KYyc#{9}_wn=d5C6OTxW4(H_}lvHh(mRl85*8KchGu+cF-~q zJm&n)??Atw`JiKCX6qmiLeBI3|B3Vezsbt=-p8kZ`FZKP{k?zN{ujmXe17<U^~e3W zzh`~gtM_j=XasWpbHjW8Or~tzU;D4_@8h5Ucm4@q`RDz^f6Kqt{d)TE*O$NXpo<4> z)_uR}{Tp=AS?j$@o|pb-&)@iQ8gyzo=mdQ4&-P1x^51$rf6BiPKehk5|Ehog=kl(9 z>#hG^0c|omzHe(>T}*v%r1{s!+UfeT+xLIF|9wa8x0v7lzyBq^EqV>Tk*4|-c=`B; z|F#FAZH=;@>)+O2$-BSnU-<R^Z~x5yF7yBGi+H>H+y09D{Vegh-usdLr62RRLGC-d zZgI(`t#DoqXu0NomAY$({$20+A9?+M<p12`^<Ize->&!?HqY~SeDS}?en?}ZqyF|X z$c_@L-}+mMRX)A9|Mk0m|LL#)zrXhQo4fOW_1$0h&;5IS@Za@0|G%H9-v+tv?CGt4 z_PL;8k}q{zL6g4z|Mr*t+wTHh!gTb1ym5U^Z1lYU6?^~5@7w?M2k5xNNB`O@eNOa0 zdv5>ymcI3VmGt`Mf91j3yZ9aWgA{W2?~PAC`#<Hk@A>=wx9!1o%8mNhzfAj6pZZ_@ z|NNsI=&l|A$^XMoqV`p${(n>7Sa<V}ef7VK|8~C3e*V9;vUu&c_&?A7AN~Ak+MoR! z{)_Lr_Gj~V?`i+H-`}V5FHH9TtCau#d;XvPtS@f&cK?2V```6m*Y>~lpIJM%`k&3V z-1|GjzU^=Q`aJzl`hUK9ub=BR|9ihU3p##z%D43X$ML&kszFCjOsL;df8~F{-@o!* z&*yLaU+(^&@2&j*?^b{9)9bI@jxYTC|NGzXU;p1Pwcfga<<`H)|GZE9cm4ML++Xq6 z|83Vn+W7JNk348E&i~eB|Bn7~|L^|)`ZfE^`QI}C_kH@`_3iwW|F&BoGvv=d_qxii z*S>$u`Sj=X+gHBdfB*UK+xuVF9NzjZ@^Ad*x_$pX{oilAf7|Ev-<EIrpM3u7`LCxg z?*C&SdSBoFZ@qQ>^#Age|3m)f?$o!hmi>S0^Z!2Z4v^4)iS;jz!gqk|`X~SCpuGLR zpZC6gDzE+b>;JrG`@eo&&-;Jrr}cM#6t8Qm+l|-^SAX*7`_w<*U-G|~cK{#C$Nyjd z`hUxM5rzv#>hCP8?fpFe_62q5`tZXy-^xGyFZu6(_Az;eU!UXs>%J=fPyTXy0%UFY z7nHT(<!k@sZpN~OzrpnE{NM3kZngjaAm4EB(f_4CmzQscH7j@g|0+@YegA(^hJ?_6 zr{Dj#cK<isZHC{T|L1@FJ%8)Z^sn{1f9u~~^Z)C4cd%>w|L+g~SNvb;?d5-a-~WH| zZ+`7B@bRDL9@WqP)c$+D?pphwzh8f^_xc@Q{m=8|<#+aw-5<Zp_xykV?u-4yf39EZ z-~CVdcYE&tX)n|Nf)@1kgRb3#G#7MV|7T$MRKNJ=<lW!-ZI%B|{u6)ukN@TS4gXoc z|7TplU;pR*Y0yb?*6O$a$JhOz`xP|v!Z7Wv{kQ)STmLgKKt{a||4%;;Ee{}zJHwCH zU-`0M?Yq7G>p#a!{=BjIyZ<_9PAB2||HGj9P(}uZh>J{H-s!)64_Zsi&hX&><&FQ> zS^tmU_0I-8a1r`D-v9q=<$qbX|DXRmzwGh<#Q(bQO?fr{<^S&gb!GX#y{~_#FV%@( z`8j^u^W`xY|J{7Q9z30Cd!m2;_dnYIYu4-UxBgrHw*F=L>Ywwg|3$tBc{qCB{|os6 z|LafuybL;f;N8#lr(UoB@hAM{&&9T9_k#`yjsCf_Hx9Dvb@rcJ&;NIS&;Kg_vwkal zAM3UHANkY&|M>s$|IeK~mpAPHzj@u?`_JEBpT2GWssBxNf8?+HpBi8PICX03&i(yI z(`%wjK_d_`x3wkz@BFnC{Rq$Z8}{D+IJx`(+x_{kKEFM7f7<_tpa0kW{~aCuZ~3SF z-skHzF54GBmp_wy``hWy`#=8wQM>hqe)P|sefO<?>z}R9{Ry5kdivIW{y*?C$=4sv zAI*QU|H}RA=ZnGTcOLyW{Sx^6&iXy|ur|Z}!hbf%gAdF8uV0Eb_)z;Q7;(SpssGpR z)L#nzb9&ML_woC3>z0*%ynlY{Df?>|{-6Ax4mv>N#(#IvDW1DAPx0LT@$}+Pt9AaZ zmi@o|_5aQ1>OrI6KmI@5ANn6u=)U@UKK;IZ(YL><mcP#Lt6#SKcYN04_VjJ_-+q5L z{Ks%%`hThK^<P!~o4%80W?*1ga~pQ{F6bEftxxk$W4mdn<A03!|Ci4Ho&Gof|M8#U zpS<t?{wx2i9{=G4FO~BC79a5``d`W4|8bxq+vvyl_SR3QcV<7W-~B7~llbrT=KoIr z`v2l@dFHR%YyR&)|33RK`2Nj@|K0yFGj#laakL(M)tNo`s<WT{1W(aA<sbDvlk>g& z&0qTePc2XMuHUoo|9{*6E4KX2{kyg1r*6)DtH1jn+sEynR(I?D&cEP!LGkt9g>}=X z>D0H+pM6~H@%{R^HGl8?_+PvJ?eFzZ|NT$;a>Q=>>;ED9r)=Z@zxC()nA_jBzg=^_ z|LgLuKl-QY^-lkv_QW1^*Vv|S-mknr{V)Ex{?bqN-2JWpcGi{2{_oyr)4%`e>HpjR z{Cnyj`S16l?Z4kHe|Nw8;{F?|@R=6=m$&8XH-1fiU%CJM`}{xF<-WCVzrJ7deZTkr zXwX3gH}+q9dH$w-^|v7D-_F<nZOZw-^vnM%e-D>_+J66I|3Cf5`$30%PVd|Q>F<8X z*yab&`3~SK6!z!-d;a&c```Yj|KfB1tN*&c^WWKffA{abR3Ez2<lkkbf6G_?Kl<1| z+b+uU|Fg&TFX!9-_@DfT|8aVKz5d@9s7I7vpIGtr+wv*@QRZ0Qegn_3Xl<<D_VoDY z|3%-9=l|}Gix>L;=j#8%zbgOM*Z;M<3~D#LFZ`E%{D1D#|APOwzxx07>VNgk`%gXH zRPuM?G2}zaulb+-q5bdwo<E=K*MI*1{MvlbG7QX(r3ZI@2QSBv0u5n+)^HS`+X-2d z0Ue4!+qY_WAEI7vd7_lv{XPHw|M(MsPM-OI&602av%g*b=FgY@{{PDC|117-gJuMG zX?)*r`}`kt$>09R|Dczpc7S@gpY~7vle_)@`Bk9PhL8P%+^hWLzu~|2U$=dEd)@!3 z{iT0<Z$1BW{PyMfC;#8M|9|hZy=%)4O*zsZ^xR(dZoO>Z|35!NU;e$$`epvE|JLIF zccuOJxBb8L)ADuy!~gw%`t#}i`rQBT-+!<%-uv<T>Ob?{Z$I63zTW2B_AURnKA%6u z?(M(b`~Lj-Y;W=3<&xd=`3wI~fBpaX=lxE9y;uFueq|r@YwPXl-|FZ7JO49&?Hl`N z|7D;5-+b=>2IQ8;_5bQu|3}^VzqtON{%85W^FP;vuVEGb|L~uB_ILY(^`MO-+28)e zpZjkuF@OK>pY?P8-}d^q_2mEg$G82B-)DaibO(?6|GQPcK|_N_{&)Tt{_p;8`pN%g zAMeM3O3;J#+M_#3Mt73n*-7&Meebfw-~V1$2l-h(_1BwTH}@{Qc@gzT|8jiM&&glE zzW4io_xJuce^!0@nW_8Y{MPz!&~>2uQ-7^}{l9yE*6aOVSN`v;SAtxdcB}pW!@Z`b z&tHiW1?_b<y?$Q^bVu1${f%Ww|HCE!@BV%sbkSniz52=f>cO|HLXYn<g<rCEJMRBO z=tU`;r_UGA&;R=;GvjvMyPp^QEuYr;UAgyHegF6AEgMBV|6QKv^5uPoom&0jU)AxT z%hkSp7yQ5a`Tmf9nfL#T$m?GM%}~x;um1nJ;k^HIviAG^_j$hm*w^^X-<rQZ{y+Y9 z|617@a_dXK#n1YG>(l-g$U))YRe+YzISzU0>;FUF+h4m@zvRpI3-w>$*Q@?NU-obQ z*Pr>e|Ie>O8+WYF+E|zMDjt0Q>i^&G>=)X7UAbQU|9Zr&L%RQd2d?<~XLY5|-1%G1 zN^zV9O;FX<g~<Pozx3RB>Qrw~^|kB|sQvNl@vZ-TwSKq$?|d&)J1Kv@oIPyIh&t%} zr*rkND_7s$`wu?AGw;v(_8;3ze_i~ad%J$p=lK3P>t|Wd56%A<9smE<hj^|3w|e)N zJ^z1e0^)we=P&H<{hRjx_P=P*et{SDpeD<@|J)1-;$QzgFMjubX4|&!>#zL&fBVk= z$)Epc-~X@NEkEz(znkyxAOFGZ5dZJ`k@@pg{wII2j|I({B>cU;?Z3&F`fK%|ZKdx2 zvQOWi_WFD+X#Wq&oz4RPck2DS-2SiiAN&80{~7<-&jKw0DLwX67~J2S_GbTvC)@wL z{PlnDFMbAwln?Luxt~rizJBU|+1Jxg^uNXD|C#=Ef3YcO^;qup|M#DN-}(<cX8+;8 z@_$B#BlTY%+28tfKk1+RNBe8_4S$Z~-*6fUJ&L^Ldw<T~>Ge-9Z&+#{cmMzYdG#T; z{%!jgweOGEw*0yO?theDAMb7d_WK>sVvy;-yRZN5oM!Aj4Ya!_x%=aLd;M#5d4K-z zyZ-I(^`igvhE+-PPk*gn74LPs{r{~$<?C{P-!8lM{P?e6*MH(q?WaGj_x?0L_{;g^ z$lt18Rl%bjFaJ#5cHilLjQ#Gu|Bx$Ip8k)n`~PXV&i~qrxBq?%{{H^xi}*K_LTdNd zRR0e{n_MyfH+T24ecyhSU;BN3>HoE-?ZNk}e0lz6zHRl&-oFd8>m#@Q5BgRA>fb}F zpSR!taQ{F3W4zY?M_;^;$N&5nKYBv>bkMykp!2{k6Lms)^v_LG`FBEAJ#Gb^Ybej4 z+w!j&ydY%l`SqtDMJ1>U*mC86N%>!U_x~HeecaE;Fya5&TlUfaqPG7BUs4R(cnP{k z`eXh5XX?jJ_kYWW--31j^2_CSvVO+TyRvJ4^-rIy|KH8(SLyuQWdE;z|E1sd$zPtn zdS9zsnPlgCd(QTlKOUb{d*ipRfE+vj+kWnUY0w71+n?V4em}Q7%p822(AFpRzvXjI z*Z=+ef67z)=k*%T<-Z&J(|!Nn&ED;Q|I75>zkUb)-5mcr+^e4Z@AvKhm;9Z7>wnZL z`*y2hzxrvnLEB!szw2MVr}}IEo1bU?Z+`y2^5^38?e~}Mi$&Q9Z@=>2m88E{kPajL zy3+rz^{M}eb0Fip|JR9RS+<|Fw?9|^@0E7cX0}70z!z4SJ>OQ_`}zI0FS+;Md+eN2 zf9YHHssB%JKU;3U?(h2>&zJn2|NGoU^`B*aU;k{>J6C^Y&VT<&psQlLKk@&KH~$B_ zDt6mj`+D8Tr;p-(2L7B?z3&^I6G-PT{$KGs`d|L<{NDeI|1bRi@PGUNUH|kM8omY} z$og|WC}aNrIpDi+{?*%V>7YUp7{T;?f5Ct5KhOW=CkWsAwR+pXv!JEP38tS8|6MQm ztM|@-E`|+S|DS&UKNoWQ+}n5mt9Sife)j*JpI<Niy7XILdd>gc-{lv99eezLefYm% zKg*}z_x+y?Iy$5McfHQN|A+rx-}dzXw|l>@{QY`)L;3l=TmG9qkLLuh_?RAHz45;> z_`29ry0Gg~lz!P0x-O;YyYbP}=g<A$r3apO+3#L2{qMTHe8cOM#`^VtOn?60`TO;f zuf^Y*Ng6|O`)+^#@1OZ!{g&_jadX?BH=p;f?*>i6lpTbPqg-eD^nH5V)c@sI|Ju*_ v&&9xC_0RtA=l@GzpPvlcpccLL|JN`3?H;Ya_V@pt|Cy%${?}WCw*CSD8a||j diff --git a/client/resources/hardnested_tables/bitflip_1_06e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_06e_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f1087952d9fb6fd1c4a10a676f346e18b3cdd1b8 GIT binary patch literal 1976 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 Gr4|4HkyHr) literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_06e_states.bin.z b/client/resources/hardnested_tables/bitflip_1_06e_states.bin.z deleted file mode 100644 index 5e678bd47a6c5bc6dc5e6813218166e9480ccf9e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17200 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 R8N5n`x##PDMs1e6O971BJ{<r6 diff --git a/client/resources/hardnested_tables/bitflip_1_072_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_072_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..138c17c0f691eb84a5ab05462b1596a3c31e76de GIT binary patch literal 4289 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_072_states.bin.z b/client/resources/hardnested_tables/bitflip_1_072_states.bin.z deleted file mode 100644 index 404b482d852f5062fb94472fb04fcccc8d5b3a58..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29569 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 RCb2s(U5@={|LBmh3;@;Tdo=(6 diff --git a/client/resources/hardnested_tables/bitflip_1_076_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_076_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..db0df90a619cb040ed79a07a45ea510e5e94f7ed GIT binary patch literal 2101 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 E0IL0@)&Kwi literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_076_states.bin.z b/client/resources/hardnested_tables/bitflip_1_076_states.bin.z deleted file mode 100644 index ac58f16e52be3e7de0a0a62869ba0e3bff5aae92..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16139 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 diff --git a/client/resources/hardnested_tables/bitflip_1_078_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_078_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..2c6f9cd4dee91d031c692d7eb4a2cc7151aeb11c GIT binary patch literal 1284 zcmZ>Y%CIzaj8qGb?6{y|%g`{fw)_S6s)mjQ94s6REDRirS1ekjz`?-Kz`)SJ`G8lR z0T~#axa@0WFjGRU;b5EFtjvimCk~ph@few0_UTb`<6K~nIC0smltd!~U&dyhUX#np zoD-Wecvw|cT4uXV_L(`=-l;9C%K!QgQLj}$A1r*?=)6ODPiT_A(B9VOClYNMhe|YW zC?zP_F5aWVFYv~KuYE$?p&gnx-Waxt>F5MYcuOqP3Dd7Uu<@Rsm`*I4;Ef|y5^H=S zHXL`g2zjv~mXEQ5#lX-_OeraNW0^#lj^E)6Rs4c4th>tFgqeP^2{()OL{x~pF{}`0 z|D_-FCZgZ)FOQY@gnf^`$`>u~_%8U9`;nDl*TKf$d?F8yCq0mmP<Op3%e=r&^{u|r zx9JnD^cxG_={J6qV|}FgUcFP}qfTH?gpX=Z;G4a7I4>p{8rENaSAXzHcw+d4KXWu| z{2TioeG=bcSjIoI%zoofyX6JD#h<*lPd@WgDDKf`@e?t6VtO6V8Q19OBpuTh6F;LT z+UoLE)JJ5FsQ-r60&cE}Ng_vEj?}v*b_=r_#t3Z)Oybc>SkBq9(ZbceVbzSFLyHat zZD>dgnb&&H$Kk+?`3*;U+%ygvtVl8lZqf;Pu#DBm>p_HfYtjyFcAhXbVa}EVhlK@> zCWRSDY}jxlY2$^UGJzgVAC)$)spSoI42A)TTuBl=VX7U+xP=m}B#w!R%!m*<8fYkY zXhWY!PmJIpucQ1cJ}EbE*buQMr0$v4!KTEfBS#Li7mD6veXHfpG^HTan=#49S+uL1 z)lf~fD<N*_p&hPWNwP-|ZRBGzObonG+kC)o;UD&y<*emX;}6Ci^b_@QZR~Q>QPbx7 zU>Kt<nsg*$O{hhf@|jAx#aHUnEA7-9!uQzn9sg9zV`ZiNp`e04@tc)(`vKt#e-Gag zXLmhhku1hznEaDzN5G+#9bu|k5*q?Ob9o(fI1r}gzDGt!nX|!=C*)w#jKe&EhCPYh zoNYQjh7krc4kb%;wrM6E^zrfLTBgl$P)%uL&@rBfV>&((M>gt&sc9Y6(TZ5Z#-?!8 z<H1TEhSfqFmTc78;Wa~>ok!x(h9iBftr0yUhXU*^SQY9Y^j}B}?esC2{<>+3h0_eh zu7j-xiw><!jNle+?M%{)SSG~Hve8*0(cl=TN}|Drh-F$EBvu_bn3$L-(Zkr-F+*a? z8lKRkDTfSsgf>QO^lUmN(aqS9aA=L1U}utq!5XEch^bviX3Us$<j9Pqh&4JqYKEPi zZ4$=}6I&x%o4GlXdE9g&!ZZ#`%!pXyBg@saqF|K;GmAE>$|2F#kb|sA8VM2`H9I;E zt?ZiEG?{CX#2OuE*3NFhrlS&vB@V6ZO4^W=l%x};V{ou3P~vEdw$O};Z8~Z?J_g=m zLI<4=F}5hPOcvR&Awptf#1X^9j*Z>SV#0#mj=f16A`Z4097;-TGfeDJn$fDG#@a0+ zF+(fisLEk6HPyscorpGrh{HU|Ts{)oJURv|4jq;_+Hy=Qv8hLbCt_pLful`FUHv}@ zH}%LUS@7tDsi_G~J@kOhf>XQEnQ3Z4pU4h1F^z{YS_M-LeN+uLtTEJ)Fcj1AW=c#H zZkZ9z*|oT7ag&8a#59R14;c@)Jk;z+T9mYrM@(60!<1vpf(hDUs?8i58zPQKB+W2r alUUr?8KdLI!z2GE_N2%|Cnsfx1z!NRe)$&w literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_078_states.bin.z b/client/resources/hardnested_tables/bitflip_1_078_states.bin.z deleted file mode 100644 index 47474d218bac31948211ed2041e6d08d92e78be3..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15066 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 SRbXCT{olFxKjWoK3^@QY7bp_| diff --git a/client/resources/hardnested_tables/bitflip_1_07a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_07a_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ea2f8386bd115eac8c22c27af9eeeeda6c9bc7f9 GIT binary patch literal 2730 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_07a_states.bin.z b/client/resources/hardnested_tables/bitflip_1_07a_states.bin.z deleted file mode 100644 index 8b4d446d63125de9e980577b9e4a57cefa961992..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 21102 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 OtX*LDU!L`FR}KI<zz>@M diff --git a/client/resources/hardnested_tables/bitflip_1_07e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_07e_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..00d59bf75ee928e1ca45f4184056982bdedc274b GIT binary patch literal 1565 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 Z5{50uI1?Kp>VNE>q<N^N;YszP3;-FixQ74$ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_07e_states.bin.z b/client/resources/hardnested_tables/bitflip_1_07e_states.bin.z deleted file mode 100644 index dff5034c551466d873bf7a2b78acd24f314bca99..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10895 zcmb=p_4aOb-eao`8W*g4j775r(p#8}3>oFx|4wGUv;N55<W@m>*K1Mrj@uVss0k0e z^#9-a=l_5I`Ty?x`FuOM`OdXAzv|+CPPMQ8+3))^dfNZj@5BGUvj6m>y#ATofA{JC z|GoMB^ZK{>d;k2}|8M@<zuNo%p7)=>K2|<`|NB>8-~L~BzJC4d#$@U6|AMFLxBlJ# zZ{J_B?SHS&<4;@h-{a~2s@l){Kh}Ty`2W<8-@ht<+kf8wGyd=D`j7RG|9}1J|MuVO zU&XQU|LWg<d~g2ya<cUF`k(9X*MIw&EIs?b)wa@4_32;lFaEptcis7awn@LcZT?L^ zc0BC&o*(Cb|Ml*DZ-41W{kH$R?H||H+uHB1`V;@}@~`_pr|(~H|L*+G@B70~n?L^k z{?Gg$^Z)7ppIiFpwA_Eu|HA);|DTrr-@WBu_q_in?)_i;zxet8qxDnbe_lWLU!#8A z$N0aq|3@D^oOZf?=l}XQKi_k_uK)i3>Dm9g|Ld3kJN!>Q{-5)|<G=3zivM@@kNW@o zKlcCstNxyT^V9!F^{?!U|K0!P|3CbH<tzCUt4se>Z~Kw{_LEz;en<V0zW;|${0sa2 z@A=hF@vD3PGtBs}d?tML+W%+&H+-~D|KtC6_W$(0|F8Z(`v1$`q3KWm@A+5u|6>1L z|GJ*RW9Pr}fBygE4gP&U(eGMazwlRo?El5j|6ja6|Lgp(^MCCBVSnJw=gFV<f2#jf zpYT8ZKRd&<|JVLAJgR?G|E&J={(tNLzyANLe(%4cuz#!nzx!1jU%&NZ{LlUS&%ZQ( zo4vnx@4wZX&%fVZb^U*L`StMs#aHXQU-!%WkDfnY|L_03^=1FQ-v1uIci;MdcYnXm zuKBNgfB*ORzx%h;q|e{~>$m&1|F?c`y!BrHjqSg$_u{9<)qnf^{@VYIr}O{sz4tZx zeSO%i|LeB>m;U?jVZm?t@B2&F{(ti}f7{3SKmLFG|K!j8G5_oQf9wAhU*A9fsC?AX z!&%ece>M*PX)m|&v%Tr3dgbf!`!)Yx{Z&8xf2Y8I{j>Y8#{73b^FKBE|L>c>%2WPX z-TG%A{O|rR{qMid|4{#5oced(+ducSey+dt_kP#o`jda|RR90}(c{|x#dGV+{`vo_ zfA}N+$dCB*f5S8XWFGw-fA0VDyZ^Vx{XbjqFaA&bpW>Mx?|(kc@bSFn>Gl7v+JAZU zFaEDQ!|(kUKR?X+y#Fg}!k_K`ga1GKpYhfkl#J~k|Ia`D{%7^h_3Qty5B+!Xdwu)v z|M!31U-$L>zyCKL@BjV(`uzWQ{@1UqdG~+4#lD^Y_h(hEsh_$(#rEmX`?aU#KmPlF z<+c3z|JVQb{?9yS|NVdW|IYuN|5JPar^f$(`TyGgdH?nQE&g*V|4(q;`~QLeAJxY{ z(rv!~-}cwf<&xj+=lzfV{yy^M&;5IU|9|uNe%AT_TmPMpt$Y6d`tE&S_kZ302Mj;n z|9$`H|10(L{_F<_wfL&~^Ww}+NA@qj{a>y6U;mH&KPT_8`LFx^2Y<ug_+x+P|CBfQ z*Zn_LX8zg#kM{rC|4aP;b~|<k1_p)rKk+{qd+K#RHEul~|M+{%*ZsHt*hl}~{Li?K zfg$0qb=Tke|G)ab{97-2I{wo?mhbx|{`b@~fPq8rpXWD!);<6KG@cPG@N@puQ~VQ5 z|LgwO|Igp>xBsWS!=Lm2y#L<*AN^m`9;D>R2dVX6{&m-U-GBd6UA^t8{r4YjtAGFB z@L%Ge>;JCq|7m~!4=CN(GcY{*AAW7ReE-gM>;IkpX21S_{kQl3^`F*n-*5f<`_13; z|1AHZ4l<B|q0qJZ-_$?h|9{zUv-oPi>yPfO^Ba%m{-5_>eD$C3_3wYSf|Ygr*S1gi zlRxu+SRKQL|AzmWCH}`-{?Gqs{(p7-Q&2!K2>cJLYxwr~{$I)JKc;o(L;tTn`+xIR z``7l5*%=rT{xALmHiv=X^)vhP=jx|F^S75<K7akM_kW`29}f%r|2uc?`~QzW?zO4U zj8C6`Kfmzy{?GCoPrd&Kc4pME*;U8okN$tYs{U!b_P^P-|AV9c?XUP=+xb8FpZWju zQ~po;AFuvD|F8Og|G0DiSN^~Dd;ZjC|F3?lzxsRsbNSi-Bg_7*m;Eoj_kYm;bN|!r z|Ie@dtNxE4>ZAi_Hr@aK=%2h%ciBJx-{JrF9{+#l`~Nv->$m=&cj@!#@YBwfzw5sj zzyBqF@qcz7`_lW%zwv*G`Ja04|E~Yyf8&3L|9`YU^11y-5ZpiKBRHlU{<;5)|JVHW z_y3!p|8A}SdjIqL%)gbN=Y!JUxBHv^#Mkft2D2aPj6X}h{{G+fU+%m8>i>Q7^JDL2 zycdTg43L6n;%{pfecu0S|MTZ_&#P|U{5}3#o&1W={}~t<9@#&te-;0SpTXhZ@n36W z|3?3JzV~<k^ZzIRGc$loyjS=C-Tx;KG6jNPDF6N}f93!4=Nq5?{Z}>R|LgbH{~>IG zs6mhkap~{>@3#N_&-PyZvVYZe`@a6xe}8`CeQ?Zxlx<jd{j=ZV^XI?X{hzw`&x`-R zeSe4luRQ+$+SB{_g{SZT`cwY$=kwK{H~x!{vp@dr?{DjE^Z)Pt`pd}a|9VTgIe+Wk z%5V6;{r~p=iAR2cg8x|kNB+O@fBb)+7yZxt=703s_I1bVqmSFa{Xg-4=JfwNXZ^qY z@AvinU+d?6t^fA({;&5o|6?!JJ^lamf1~Lq`_=RRPyX-nzyJ3Ct@S_aKi=Q=IeyEJ z`&0j3zxsF8kNKbfe*=XW$khx7cx?V_l>a=b`}^<xSNH$^fA>G%Tz=Po`+vXA|NZ~= z81wW0jVE63Kl3~O`~SuNv;V(}|6~68kNQ6loNoLNoaon_{#pOi|4IGU`mgzarvJb4 z|MS}aM%VZM0Ve^lC166J^?Ch@|7Y&UfBVD?7620l?Y}?&J%97md#G}S|I7`4wu4l3 z{Qukc{D1fVTc8MJV7Su1z50LtzF+tAEBEi00|n~s{h#L_v+wzTYyU6v|IcUtzgqw9 z7dwN)pZ}+ReR^zo{p;2GoBy7F{eS-7-~UVhy#H37{@<?p|K$H7|5?B`E9jm7AN>Eg z*z$kw)Azgnw%oSk?fuX4$y5Ko`nq>NCs@hH`lswY|8+m#KgG}R&Hh<E!{h(j&;OtO z|E&J&`acX4(*HjG+x{y4uk*RT{_lU!|60#*=Kue5^?R=~uU`BA==8?WWB-2}hy8i^ z>c0Lz^YXv_^ZvWn*I%o@R{!Y#qyG$>&->4-*ZHshpZ#0?w|a(zzxjXp75=IJOaEsM zs+K{u^Yz#I=}-6ndcV&8``2*k|5N{eF5W+N>-xWD-+rw>XSe_UtJweg_hRG!o)7)6 zyUxDoPkwFPzAyj3|GW9~`uq3G|5w!f|M~CF_ve4ZzW=V@TlezUzc-(chh6*ceY*VH z&(-_uQ-1Ha|NTyX@!bDA?2o@&@3r3k_s{az|8G3q{y*;hueIOpwcpl<-~K<f@Bh~4 z?}tt$&A`CGQS;CBCu31x{U`Zn_D{p>p0YDEe0+WX>bv@Y|H<?Jo5%i~Z2SN45A}bL zcs^j`HUGTo|E+O<uh-nW`Q~Z<#X7Hf^UZ(#yf69MKIrHAIQ!_o;G#j{-}*lc_Wk8I z&-th5+cP|?|84)-KH-o2(Vz9;7OXZn%{$z!>HNMwL%8ANdiT1$-+pBOnYa31`0W4b zHUAfWo&S-Uf#LOij{5$;^}pZ$e)IS1srs{Z-M9a}{of0%6Awsv&9C2n>+{7s^-SP& zc;f#PJ$r|1f3|~*vxNW2|JVioZ~h<j|J(m-^{3z^XswI&|4YCBgns+9_`m$^^M4(G zhyPc8zWCbwdfoc&Z^b#E&(&{z{rJuI*uDGy)$jegzmNU6*}8w#TmEnUbX_j~`|NN0 zM{fU5kN)qjUH|^8{;&FHp!QdP{iFMj>c9PeR3G^m>^_HifBHZF|0I9nf7bt3@&D}O z|K0yH-TMFfzo#J?73^X#k-Vkuf4nBBB%e1w|L>pvjPv2(Py|U{`&e~P^Y-ufP1EK7 z*6+{!|H}UTkNdm+{MOC;89o2Mp6&mdQoC#aPrrWt^>6v{Z=d&XkBfJE@!#}#^XB{O z|1y93|Ly-b`<{sZng3ti|DpeH;s5Ucng4e_s&DvPzxwNit3UEz|5*Ol{*(RNPxj%T z>u=Tn|F!+!`OW{%+x?IJKlk~5?_2Bt?EhoG!R=rA*U$Bz=D+w~_<R31{r~#^ZkPS* z7W=<@)Bjz&;zj=#gR6`P+yBY`r<ea-@^9^Y!T*>4f30U&^WXh!`|7j*uZcH&y#Ei> zNMF2F|LgjHNB{Ty->+N$_H*<)`|Dr7{@;2kzUu$?zm-LG8$bTN{{QRy^!fGQzkl2D z-}cw%`|j8N$FKYU>doilV%z_^%KyLo_svi7qxSKC_ql)Hzxt{4-@mT!_#eLi|KX4E z>;F$)|DSaJ{`~B>_3qQ{4}G=$ul@a>|9|s;>9YSf9j`z7|H%I%|34l3ziIvdFZHkM z&;J+wA6WO){GVq1v5)b8yZ`_FQhEOW+3o*7{@K5)-v7z-|Ecx=@?U?7&;7sjy7|Az z|EKGBK$?cDfBOHs|0CY||GuDq@qhgPrtklM9Nc&5zOw&$H>2aD`<LI=PqzK<{^$N5 z&$xO2r&a%9Kk!fg@xSwb_$B@y{cqHF{#pIU_`e`aqvwN4`U(1=Tyt!{*v|vE9<Tpc zz3x|hE~v{G`CrnWfnmcx*`xpV*Z*~|`hUIaseWaB)9?76`eXK>M8d$Z!0q4XH#Pe| z|NpceEYR@hyw_9q6SMwL`#=3Z`+<MQ|L`mPOaH(0-`oFd|4#we?nxEB;Z^@#QEQ6t z|0Vt#{LB9T>i(bk`TxTI?|d!K!0_?E_UqIA$78OC|4;or|N4LX-{1dF|Fr-1{keaC zzxnI`FZhoz#L^v$Z2x=xTV4NGK6=hC`PhGAZ=c_Iw5|U9|L)L#tFM3m;{;ZA<o{H8 zgMZu4)N9)_-1tA^KV#4T^>hB4|DXN;>V8m##=y`~uWj$}`{Vn6J+}X(_CH_s|LU{< zH*d{{lnERD2iAejVQ47*JU{*Ue(%rA<@+z65C2>KZ|(VH?bZMPZaeq=|HmJ3^Y(99 z59*lhczge6f5g-B|6ph8KK9-Fxc|}r;;Z{Vtrz`&cHVzY-T(1>e(yW--|+wJ|LLdd zPyb&(`TzERlmDyhKmUKF{`KGUUZ4MG{oeoT@BPpHXaDP1|GVDzzxQ7K%KGR3H_!in ze$PMQ|KJ*)fq@|*?dJRX!vFj;U9JBw|GWDCy~p*>e%GISw*OYW|I43GS3h02=kNaC zJInv}gLCPn_rbr}tJeKDdS8F{fA_!jpia^KHJ|7I0KxckKfp1i@L&1A{{Mr&{{DaS z^WUxgzuy1+zUAMZpZ@>i|Hc2#kNmfOfBbKl{g9AhsJry*Z~f8w{@?Sj)*nB=T`zyj z_im^Z0|Ue7?lQZJKjXjN|NQyf^GP>v{?@PF&wu47sMz`_|Iz-d{y%mGh5yNaudVyH z_P^r$fA>HCfAXJ^fdSNL{hI$j|3ADaWnlO+@$XOmSN}hMz5(uJ{Qvqr8{TL_*a%}8 ztl#|o|K0hu|K;A>2miOVzyIs+^zYAaya&e&NKwS~*OkjJK7U>{|Np7Dx-b9#F8jOs z|DMP7uRp!tzT;_r?Z4e${(QdrGvdGg`uWMf|NWJ{eg6Nws#?i~|F6sNpR3#djsM2~ z+y8I>H%R)s{O{`e$NPV@|I`1s{O|Lw|BT=Muf66R{&@e|$Me7aKk<Ld>Hjfj|7ZUH z`}+Pb`}4o-fB(t<TR!i<UgrK!|3CddAoX+p)${*P)-U>h{O$i+`~U3!k$?NAe$=1$ zr~bWuRTui_{LlK|^$ZDL|MdTjzxQ?WukCeifBgSn|IfJLpS-F3I<x=L@eIf6f7^e} z|JQ$Q-xW|d(D>i~ZGX0&&)@kk=KA&j*R|?j{=NVG`N^M0kA08-e|`V_+JATN-+uh> z`-}7S@{#}RcY?+h<fHF=6R-W_|9$iGc#;1#Uw_Np{l9Kn{+I9KJMCNc|3Ccs{F?uh z*Z=pntFK?T^}lTFKaT6)|E$0B+y3wUAM;TMZBFm|clrO?|F-|b|G590djH4rKa$7m zzv}<{e)+lWfAjnQj(`6D>Ywez`TwW?{kebb>H4jIr^ns@k^Wcz|HEIP0g+GZpV|Mc ze_a3e&u_1v^&joO&j0&Q{<Zzz_`mu=|L5tmv2@n^Z~yQ6?T`G&`p@c>mH(pOeFSy> zdmy#H`2W)ucC-H<t^W$LG{2UQfq}tc-;e#Dm?i#4Jz>u7-+%1=&R6wYf7WmNmi{;W z4+F!2U*#gd|Nr|c|MG9V_O$&^{&K#nH~c3FO<xUCKhJOe{P*1d)B7RS|0jFxsqzZh z|DylJ|C49<E&tiR;m7>H(|>LMzx`h@w9Ejdv5d!G_iXwe|9tiTztg_|ejSJ{1A){* zaYN<Z`S<JpRqXly{o0=YK7YUe`4jmwyMF)P{r*rD3<<I8pU-uhKmT>@Kke$D7yo~s z{cZif&wc;bp5A}|(X{<vf4;x;`F!~E<iGp()b+jn{k=TL{(trBuc<Bn;)`u8e*e8? zpYR`)uMT&7o&Rn9zuy0k<bUn|G5_0q?SJey{%?=skL~@xt*`#pf93y|_5K%|{$Kw0 z`}+FV|7~9XfAe|&*ZY<Kb}#vR>i_Bg%-K)s!|ea7|L^=Kzx{vq|4;uP?azI_KjY(m z?ceKH{|^0V|NQ@3P*#SzyrIM9zuRB;s(<&po_>dREud1UR7CUl|0}WfN`9X|_dgqw ze;fYrGkgMd0vHtjeP8`|2DDo;<G*zM=nyHDhe(C5@BcoX!ST`k%}4FCr<+IBIQ~&C z`y=o6ZTqe7_UotpkIMbSe&COM;=ZWdzxn^zd;VKKu77p^kA3l<@c-hVVoK;q{hj|y z{#~`d@jv=Mv%{&c`#;xz`rq(zzk8j|t>4^N>)-s6xBcJ$@86pLYyKbkfAl|N+Wh%* z{!jfs`9Je-```8q8~$wvwXcQ$8~>mE|7-o<`2W}czy3OX^QZW~<=5x`{<XUI|Ed3f zYyI|T#{bTJ^EG~MZQcH>yZ^=S*}d=A{MG-WW9py$xc}=<&CCDq|8D-g{{O!JufEoP zeSa@L{_$`5pa1s$fAxRqQ|sS<uHLub^!NI`{;PHMiSIwI|Nd{)mtULb*KhyVA6xhP z{nvH(tNw4k^sjvD-}^7V^S9srzvKVf?7!*x^_zSDgGO*4)xSRSf6f0d^<U@j{`Xhs z-vuqXu-!HD=kGlA|6|A8|0^f{m)`mBm+#N@*Z%MR<KOb5KJ(w&XTR)|{^{TTb^rXe z{mP%OU;Ore=BNMH>UUnRKW6`PzV_?yInV!xovxqy?thrffA43{@BQB2@4o4u{M$d9 zL4nA9yk7a(|EhQUy&n5(&--8W&;I?t{a=6Ow|)Nq=>Mbnr+fa-i)ZVo_lvCiy8hon z@$dg%{b#uGzjq#g`0W2{^%)-T|2zMe`G5E9_*bCTq2&Mi=(_XwPuJG|tzY}8f8T%W zJAeP5`(L)U{`>#qa{urC-~aE=^MC)dpBDeGKl<_P-~XYflmD*%qxxF&{Qq~+|2n?^ zUmo|r;@|#%`G5S4|Lyz_89CO^{-gi<m;e9m|GxjJ|0w@7yzcS*Pu2hXe~JJ9EtD_$ z=imE_=k3q#`2X?G{ay9vz0UuCd-s33{Qt1(f9t>2zx!lezyIFXwg1=t2Mwh>{onil z-haJ+%m00T@_#KTsP_l_t==agpz_c5?mzRJpX-nOKRf@))1Ub}kJmH2`ET^@|C#>{ zALIY%KmL*PPyGMY|5x|_*#FfMROI}8^#2rp!k_Gk{A;i@{$Ae?eDnYJ_4*~>>(@s7 zoAh0M$N!^0(*J;(&kPI<Sx@ZGpZjk8U;jTB$S8&r|JQ`nHLUrW|FiyQJ;R&&GoUg3 zZ}FfJu3!E?L47QRw(Av3zsEm;R|TNim+JrhANe2e|F-_$+5bPEfzu5mgTVj&oA&*w zI8$2tHGbRw%D?|N*Z;5A{J;C}-JAQ*-~0c>{-{03Kn8{m?OUJMKiU85`u~kbSN^{U z>LmB+=KcQuXMY4}KIgnXcv!^&G!*=}{`8;ipP0d;w+DXwKZVjeZuqhN6Z01N|L@M< z!0Zh${FaA|q%tr>nE$UV`?uSq{?|u~zcp9upWpvwvu)F_`}wbH{>%5jfBMt=x7F`I zpq}&G{~e)q-@(qjV07<_^*@b&_ThiE|3`hi|K{iXOP~H9-TmJCkNoHTKkJwM+5YFh z)zA9Z_CM=C75(%7yZzq(H75VpZ~MRc-hbQwH~yU8^tk@*kNYqFPXAT@&;Iw%|7Tv? ze*`rk!2zE(?e9PF@Bb%6ZuwjfYOvb=OW*hZdCtGpf4@(e7r!q`?$qu7yXRM5|K9<s z05$&FZLMGM{Fnacf7k!+e*qe(690eJ3OtnG`TuDTq`vxO|LOlH`8D_dpP%=B{omF9 z=hgeaK0o{almAcuZ~Z^*>HlB9x5DiQJA&bX`r7;d!~cBW@jvo!`JbBCpWLeVb3mjR z7#IxpXFM04`#<!*t^NBNy_s|O{@?Wdx5HdeOJ3l=;Q!$NkLnp1KG|Q(fBWkGFZoaJ z{@ecd2aSsg{1^To4C+@yn;{?r9prD$|G(g$y?wv#`|sBmV;isqDTCq9R@MLS|GoMB z{l|aCpho!G`}LLeeShsB35bEAp>*%Oa;e(7b>DxkfAiG+|NZ=1`+uFc{<mH4e_eO< zziZF;d!M(DpWFZS|EFJ;+uq;5zwz&%_iL|D7yMO!_Tz&$-?RTW{N4X||6hLPYoOpa z|JPmr;{T)iTlMRH$S3^2pJiKO`tP>Yzs&#rfBbj<Ie+!f{BQU7|6BY2^P2yg&;P$x z|NQ6sN#C?V6ANo5{*V0oXZ|1cU-ftXfrc)+|8JZ7f6>wZ>)z~N_b&YC|2hA+gF+1A zv$O|4-FKe$&%62lf7t(b|I7c^@BVq=@Bfe2>p{b%au)yjUE&}k;qo{}!V_Z8{Xbo= z^nW$D?fz%^zxnxpr|<mt6p{oWwlFX-G-%lTcmA9H@872B;2si0qQUac{P*?e!s?zw zmH(7yc(Q-0JOhKnpZDc9|KtB$2Sp$Q!-Bd!cYoJ^zWTrJ^zXl4HU2{~hY2MUBbEQ= zV@!%jfG0)%`hs1De^R8u=C%BL`;h;y<cr?bSKa@==09`7zyIa`UhkEQ$o;Fok7te1 zzx(qyKJpL$U-xnU&e!!{{@DNez4_nff5QL8|Fh4it^4#R`KSF)`wjm$|7T`+4Vv}@ z_0~Y6ZU3)>YUllN^_JTIuhy6U-MN1Mtsm?E%%A^z?V8%R+c#dXFa7rOZ`k`^^&j8; zdR4#fSAOB&iI3}FfBwAm|Nigi&+V_PxBq+m@$d8BpYOMSzkS#J|F6G#U;myy-+tSs zfALZKHlL6G`&aq)|GziO>m}d*IsVtOtUk2r@6Gf3qyHb*+yD1_)%E<n|06U1@4oeK zeaWBow)I1&k_L5A9(>k6#Xq6=&*c9G|26l2(za({=!yTouIzvFFZthp_P;ze|IJVN zWA-1Ry@6+eziRY;uK)UK|Fh5M()8=QzXgB#v*+UZ|K}q9Pdrus_1Dc;knS^R)ci-~ zp3`M@O4UCZ4gTN$Kl4B1<Nq4x{?Gn@_W!GRa0SKi>Y4YR|E{wcdg^UIy+)cgeEge# z?f)Km28M|LZa=Eu{J&j)KmGms@PFCgqVIgm|DO-56R!pQ`m_7$y#8nZAZ>Jqf9mBw z88<!K4=K)Y^^#sF-}*WI-t+aKamW8R>fZ6++W$-5Qhw{dKiNN{x6DtTUH)%1bP>bX z|F7TvFSW7QR`~V);=l8!?*H~<*ZnQ^3itlm-~MGE^|N|?{l)*r-|N55ul^(aU+n+p z|Kk5oOF;%fKRv0R^MCq(hkxO}!~cK!|MS!TXZ!E`tbYsYz=5+3jF4FT_4j|To&O{M ze*aVR`gy%e^*%@)&%nU2q3`-<znk~|Pa-s*wEq46fu2q}@am`h@BMpTtAEY^+w)`o zzxDr_6aLy~*~R4k+rE#X=l?fQBVB%N?MhG|IsMQ7+@IO=?-%{uxeh!*e(CrA_va^n z?(TiR|KIw0``>?d@85p>@B54M|J!Z)_rK_GI4D!@c&q>G$NYEc=l5&;`}yj-?XLf^ zy7yna*DtE)sQ=&oe17DA_4xnOYySO<$^LJ>>yO~N_dnxzey{(v|D*luAJc9BX+vhM z%>PZV{k!~s^#AIA>wolr(%%2k|EF;uXlCpE^7GaI^7sAifBygK-)bfM|N6f_*GEtP zpY>aR@4k=cf5rbh3~3t1pRND&|JeUqKfh0ftnc{!*Zx}lul>K`m;AGh=iw0gKQHh9 z>^DE{AN_yk|LN18?ROsAGkmL;{9ga8{=g6Yf71(V%>H-(e+9Di{x2C&!CwQ)H3t8- zo?yQwSKoWT`0D?x&;N7Yp8s|J2O~qn*Y_IV{{MY#f9d!BFrE67zlHDoPx@mFo31qd zG(Y|M@45e{*Rz6?)sy-#E%0;!Xp9>&arM#uw?1fu>+f>#6tuwM>^+x$>wiM2Dfa$9 z{-gaPXeRgB|C-PHf1Qv0&%n^}KRz<P&gR*!eZTZ?|KIcP|IPjX_fPqM_usoW_tW3k zf13YjKG;r%BcgAAhJT9x`}+TlM_2y8__RI49yF|7{V#sar}(}5o{NLWGC&h34IlTX z{)_&}2p+vn_*4J%&;FmFDSJ?b2CCAce=^?cum7I@=HvArw&8!*oBcn3?cW-3nb7dJ zA2O24z_4cae;e!nv9s*|R?Ml}_iF#={93u_$iMHmm+t%DfBgHWKTB&t9kZjk|IgJQ z(c1qT?92?w{8zH|BLC;F{x`LL?T`F#fBZ9l{(p4$yXwFGpZEXR2mg!yS3eiD9^#LE zrRD$S|3K?hX8jMp{Xg{m|9SN}|I%-M++X%5|I0t`zt;cf|NT?{?Cbm=(6MR;2IJFp z|GR(JpU}DW)BbJz-|uq&jqm?2Hv50|U$xhH{diser*Hq?J-_#Ly$fj4cS_y-TlN=< z|4y&`|N3A2m-@G$PEp!i@JRlV|3$|j?XaKnKkI+;Uwi*Q{rvaq|E|`b-@p9pb5Q#G z^#4}<=}+~4|K5Vz4~dBnldrx1ul=w3&i^(4tn2obRxaKf4{n=-rDw!%`P_N#|EmA< z=9k+|KXdM0{mtLC3(kRxt&aa4|5w(7rtW{rzusQ<HUBSv<@f*d{;Pw=MLYg?{$E-D z8#FcuHU~s3=znv*KH&fS`NyXbHQqFL@BjDz-u(Vv@qgy8_dkDLd%u5={qZ_*%z%tL zuq*Dob+4WM_1}NOL33E|&ELlVeJ=YydV2l-qq_C4Ki^;aeE#}#$A8sV{*}4?{r&qJ zb^pF!dwrVY@BU{M1>b&etv~P&G|AsC_!<=a(*KXzf2sdy|JFYI5C4Y$`CH|7N&U~2 z{lDeE`@iL}|DI?4^Z)%m{{OZAmDm2?d|v;0|K~sDp1-GpCKj%p_`jy^pZ`DMzxH|m zum5}c|7iW~bM+S=)rWtJ5C6XUQT@69xBoLUtbShq=KrU4^RMjxYW%4F*ZzO}4PXDS z_*t;^=lx$y2LEpVUs?aTe#^I||E});G5_QL?N8U&)}8+PeAm8z`@?>EzyH6_-v6Aw z*}nh3_W%3)=JWf1_vF6scd!5V`^2yRr$OTi|86|mw*STB`d#yF|1bLSeD(eBFaDKp zty#Q(|B1hffBwqPt55qozvgfJr=P!z*ZzI~;*<N1eb4Kk-uwUZ|FQpT9>;(Cu^uwu ze(y*8x3Ba6<^O&EbN?gzQ|td6vwwQt;@|4}kNfA_z5luY=QsO#|HHq(@BH&;|C{sw zb7TLle!Kt6uVePF>wofJ-~Mm=zv=a+|4;sx{-6E)e)y^X-TznqfAjr+#Q&H7U)4|i z^}WVW!Q)T$uD|)4p8xOoKimG~>Cg9z`azxl)H~qXfB%p8V;^t+(f_yl|LXdW^{<OT z@%`!O|Ecl^eq2|QkHE5A=Gy+nH~xQL|KH>N|EP_BRNwm-{O|sF{s(kI;L3^md2`>F z|BL@83Nnge!vDyXe;6V^-v^CxL#AJj{C~6m%KpFmzs`r18K72=^!n#h_x`tv|NDOX zp8N6r*fJ2<KqztM^}j#=J|BPlcmMWhf73w=PtKo;|NZ;z-&$~a22%C9%J#j<uRk&G zKgZuZ-T!a@{Vnxh=a>J<kNx*oZ2O<J=j*4>tKVlO|N8&auf;j{_wP^s{quhGdVS?D z|7SfucoVeh1eB|O%e$@lzXh~}Lj3=Q|409C`5*Jq{=mQeSF2uR{n=jn=kh=KpYzLp z&R_l0{_XzyztR7nNB&Qr|9|cObD!_4z6}Qr4M!;d-~8*R{ZIcd|9AY2|2_S``2Sq% z|E}HtV{g{S-d*4I-x76-!{y0O^H=tlKK~EX*$?YlfINhb4@m9#?~k=ta=*UpU;J!{ f`X}`a6F@7Y7#Ke8kAHg{+AUeI@IUjrc#UTOf|#?n diff --git a/client/resources/hardnested_tables/bitflip_1_080_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_080_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..54b71e2cef53a5594ccb5dbe9a8589c3607d7cb9 GIT binary patch literal 413 zcmZ>Y%CIzaj8qGbl$~w=kFjoTiOWS61_uEK0R~YA2L=WX2gW}ooGi=^EX)o}S)t61 zuUJ(@O>EWXsyc;!RP*vUrQFiwIcen~pA~CV4*7T<)C%!?AXKO@F{zc)=9R}%y--E2 zwT$XPoN68_Gefjion)E(s?f8^vmwc=((k3kGM`CPUQK42l;x{(LDF-j$z)DbmH7)M zt2|YiHBmh@{G*!ZbCr{mwZ*)*@C8MAPnjOD_{y{?GbY6fd4u2sl}8RX9x8JuG5G~~ zu4)LKGAUun<RH%jD*quq>a{lZWBRIf#pNOkvVV53SQ^Oea6utMiYY6^&DmkeRE3K# z&x&+Zigk%D2^VqnoT8^WF-+vpjO9!drgf-nX;~CL)uACl<f+!ARIN!VT8vXxc}}Wz zjQiqRAhFbH&CFCyKhLS2I@44emu!ldwjxvIFRRg9m04c?9`>hFO>NI?x*R;AB3SdO zcu{*`hR>wfCDS~8Rpv3xS<3!ts;6yGqj$@sQw_Z;(^dufs?1@v<KC$>N5dnUZCNA( E04RQ&ivR!s literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_080_states.bin.z b/client/resources/hardnested_tables/bitflip_1_080_states.bin.z deleted file mode 100644 index 372d2d4ad490b57c710077d9a5bc3e86de1eb2e5..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9770 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 diff --git a/client/resources/hardnested_tables/bitflip_1_082_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_082_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..9937ecd2a30f6691f23f21c4e271145f5b262136 GIT binary patch literal 10172 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 Q{~ya$f?GM6oJ!RM03G0Gt^fc4 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_082_states.bin.z b/client/resources/hardnested_tables/bitflip_1_082_states.bin.z deleted file mode 100644 index 5d688299c0f0029b1ea2b83dba172b8bc752b4a6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 41837 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%0AGz&c%&h<a=Y0Op{pZq8`OLr8uRs33_58fW z|MItg{)bPm2W^Zy_dnt;WS{o^E%v|uYrK|!{vUoOZ6<Wh`NKc@;0rB(K~9<QkNWRf z_0RA2zyBZR>wdZWZT{Nz^XLEnU5kBbq}JQ|puazDKi0orjo9HM|9gJlUw`ZW`%C^# f{8iuaU;SS_!@vA%|ChY(-v-~V{a@bTd6^afi^_-@ diff --git a/client/resources/hardnested_tables/bitflip_1_086_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_086_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..30d232f69b44a50cda0e6ef35ffd2620b54e94c1 GIT binary patch literal 2874 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 Jv(}FC7XTPF_vHWp literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_086_states.bin.z b/client/resources/hardnested_tables/bitflip_1_086_states.bin.z deleted file mode 100644 index e640e39c6ae0dd32a8cb061a67e80aee5bac80de..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22500 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 diff --git a/client/resources/hardnested_tables/bitflip_1_088_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_088_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..cf826e4169d117b4959509f12e04ef074716b4f0 GIT binary patch literal 3510 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_088_states.bin.z b/client/resources/hardnested_tables/bitflip_1_088_states.bin.z deleted file mode 100644 index 07dae4760728af2bfa17511848a37e9a2b03b75d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22467 zcmb=p_4aOe;bWT(st<VkEmxXNKKqnygX7PC({y=VC$^~w<TU)9t2I51$GO7fcO&zL zkN^L@|Nr0q^7W_n`}XO@-=DGUW%jS1*RPlS-1Rr_*RFqO&+o54rN6)a`~CNN)Bn$$ zI{j7s-<pF@>+ANv*uVeEzHeLQZ~m*l|M7F>+W(hNeg7U;zt8ah_wt`lKYb`)dt1Nv z|F7Uz|JVNc_Fvj6WB#9$`?-G?&uzc|e*c=9|D`hZTjJOK|NZ;@&X*VdUF)mA@N>WY z|Ig=df8PBk^5^cmU+NeCz4T-IudTP<??2}J|7E??U-P=x{mXxCf4~1)#I*Cb?6d#A zdA<Ml`{gfJ*2w*TZ}30%*#FHR>#zK0exASm*L3fkO8<ZRxBXW>XaE2Fzwb%^`M2!< zVgJv5^MCdFPsjg1{=a2??OXM}|JmQ`v%b$?^tS%(zu>ihxBpN7&;P&w|Mq{||1GY6 zBmaAO?eqFM{{{bd|9@%!xBTDvfA;_Q{~!PV`Tv*s|1Q`6>i>UX-?y#r|K>m6e`5Y0 z<@@!Wb@gfIzvplI{6D|u-M0Vtga5q$YybX#<$wPF`F|JIzPA6k|8M>8|KI-qtp7Iu z@A3Z=?SD?T|2g^pgHP-YdsaN{FVC$%S||G2{Mmo|cmKQp)NlV(U-<X#uD{!#+)wy> z|JP6E7jFNV--L&Mt55xtzWqM~!-4<p>;G4E{r_3dknlhG$NuIw@7MiHclg)-|NPtk zAOHWT|6~78p5e{^J=OnSZ24_3`MCbm^Z$(hmH#dO&%iLD=<oAC^Z$ahI=`tu^3VQX z|NrxQ{`>!X(*OVXf5wKt^A~@wud@0-{qLXkf9?Otf3Uw+|D&FPVZ%S+|J@+@<NqK2 z|55*G`Tr;W|JkShFZW;e{G<QpfBu&r|Lm9C|1%<PmHltEx7qQ(ZMXcd$p83v+Vs*j ze_~&M^L~8))%C3X-j6v!>B8Rc-^K6!`91$Pd^+`edeqtaFMs3p@5jg6|KIpMKljCd z>Brhv*Z=)D;kkX(|Mrdbi_h1W{Z{{Xec#vlKjQz)zx)s6d*slp*ZX<=Q~%s)>Cfdi zov)wue1F;h<@4<Ox9)!mN*~khAOHM+>EG?c`=@`ppZNFw(|_{+&;L(<R?l~5|2w09 z{+s{%|39<;tN*=kbN?6rJO9)E`Tsc}#=m;E|Myk@m(TdS_KUsshyFkI|3RVj`2WZM z?!W69PR#kg`rN-QdHW;wfBdz&^!F40e+;ot{(Dva7yrx7!0>v1`On9fkNs~xBhPT) z<(vPGe~<tF_<!bKQ2hU!|M&a9)^A(i|9OA=`TnvS^)EmDiU0O_|GEE_|Lu!+e*eGs z|NFo7@Bh!P|5$$P`~Ro^>vI33*Zz<HqyOLj@AUuofB*ks|405`|9|_n|CfVO=Hvfc z*Vn$i{lD;k_wV`>_U8Z9|K}I|i~nc;vtIdY{J;Cn&*b6B@yGpt`~TMeoBucc|Ht|# z{{KKo|Gz!M9OM7tvh_A~|EBLhUjOfp{ipiV|9L;zpZc%%U!Q>?;=k<Hf3HpcJqM)% z{)hkjPXCX8S>Ja4|C#^K&;9TF56WR5|1(U``&YkZ{^h%Nxi|l}{>`~t_xhjvcK?4* z_%F2ni@!hff32PV`l;LV_Lu&DY0toL<3Hzv|BD{~PxvRuaNwW+g@68K|N8&?zx{vG ze&?T$|G(9*dhTEQ^{V{Vy0`vs|DAST_e^@*C;R_b|M&j#e|ow;yl?%szjwc_&w9Q; z>|gJ^{n!5X*Zp()TL0zG<lgK5mv8@n@%w()*YQ98GJom+oBaRE`vr9Ye=28v<hT0& z=>L(A_J94?|3B9M|1c;`|DW>@oWbV@|7Se#d;Yn4%m1$b?)`5)^1ePs@BgRWxohR4 z=Kb%h_<#R*Jp)6+U-f_D|Ct$npa1vx|B3m3PR{>xGX4)g!?*f<ezX6l+x_eLS^wn! zv;T_g|4#pZ_MbgC{PzAU{>RUt(Es<n=KuP&|0Qkz+y9?${onqd{Qv&{=S%-RzO^{B z>eYW=`zhMtb+0}}Z2<+-;@j%=pZF)&m;Bp!@wol3Ki8kFzm@oB;m_?a?Em_&`@iz| zeA|Efr}>`$^E~Wt^iQk$fK~sm#{Pctzc~Kvr{c?zw*O<_{%QYpU;J2n)xT}eQn${X zdjI&V_z!=LAD*v&`on!bC?WK3`G4`7`R`x-|NY<nKWV@9&&U5Szt>OE4xhKh=GVVT z8NZ`<|KH;L``iCF{~!MU`2X7fYxUp&onrm}@t^)5@qhgPzuf=1{@eeL^*`+Y&4(n( z%k>|Z|9Z7rKJPz&#{Sa(Fn^@}Tkl%A^56B{Kd<xE{$J|&Z^iZ};kW;_|9oHfWZRE9 z_SZkppSpkb-2a#SGiyTaKYu*){r&bY^-q89u0QYgxBb)7fA04GFaD}m`)&T~Px_Yn zNA+LV{y*}+^LqUo{r~BI-q`={|F2yCNxlA)`hS^E><r)Qcm6;A*Z$rAljZ;UH~csK zeSZ0-|L^{@g7W9%>-8YkiRAyyZ$V|~k>B%w{=Wi_4Nz)kR7m_IpR@na-}<88{{Q~i zZ}|VH{ue(3gXj19IsZ5R=Vy5HKk(cB<$wS8{E`2k|9}3U&!<2U$;|NE{^D=@i{I=Y z|BU}#|HuA8{hI$D{v)LsP>TBqDnL)p|2N<J-*q|P%fbKie=UsJ`6+n%^+lz>*Z!8j zYxi?<{fs|{-^=g+_I~Hzwg2v)y8d{2(BGTpZ@1K~nERjao&Eol)nPmK|NHj-b$R{& zzklnmewMHLe=S$$^m*OCF_r(q_CNPLxxHTg*B|%S|6hE||MK&E-v1;2Pl19f^6~#S z-^_RafBgSu{Wtml?%*=O|KG_U|1<s>?)dxWWBj+D=l}h={_g*q1OMA^fl|+-|F6H* zKl=H9)!)ss*ZwaAdF=oEJO8JD+aLb+M%?fJ55L*}{<r_f`9HVi&u0I}EJ)=~{dc{6 zKk9!l_rLkj!s5q&hX4EwouBJNkIApSU2j}}^4*{6*WXUg|HJs`i~Y~P{a@r67}os% z_jA4YX@BYe{6_T*49hqFXa6ey|M>s(Z~ve8|NBw@&Hn9g{ae@fegFS?-v6_8|MY+T z$$$Ij{=aos{zvcpyg&cw{>;<DKj&Y4{=fJ9t)KnZ_TT#GdS3o-^8Xw5Z~1@zd->wA zeBHmJ|L^@@{(t6I`|m$~)`JVy@Bi%oF8}`}{*Sy|eOCPMTk?nh$zQ08{w;qW6fxr8 zo?G#Ezqj91Q(T`Fd2hwPJ@wP4{@i=&<AR_6m;5dId;fmD{cP=D-yf#G{j<LAz0UgZ z%s=ISZ>{(ru<z^drT^~L|9AUu{>pyp`M2ro&)0AH*Prp<ZT|ly-_HMX{(Y_fQT@mI zqTjRc{{Q$NB|Tq0Eze-|{Qs{WdprMs&v$*i`sx4OQ~!^CEr0#({-pZmul28=^DmJ8 z%fBH$_U8ZoPy2gw|1&Z){O6DV|5fDw=l=``{vH2N&wlfM?BDYZfB65;zx^Lnm4O-z z3@JVT@BV-EPyEw)t@;E1ugtNRt^e!(pON9fuk(M`$H&inSI^4uZNK&J`hfo*>;LTk zegEYAKOg_U+5cO7>-t(m9xMFc|9k!B-}7Jme!ckX`m&mfpWXl8u>a=&`(1q5|Lu^1 z;(y}L=eG6G`b+-W|I78i{QnofvS+aP|N77L&+$**|BXM9_J8y9|KI<~gUZd$|3^V? z-~9iFJvd+2e-i)C-0*jP?e}_6EAFrV;^+S-{-6Dy{ZId&{BK}KzhCin{^xoIh9CPo z{`{Z%Fa5_~`+xT3|H?s4qyO{2{W<>lkMH+?xhLx_>tC&2|L?+A`J$zFHcb7WI@A7X z!?)<~_Pc67ssGn|bA0Rk{ZFSie7bnt{>7i`|K2S7zw~|n6_A6CU+@2@-uK`AynXC# zyPwCO)%Ske|L~`~^`-r%pUUswpKAX<Yk$oD)z-gvKZh2w_BQ{^H~c-j@89G9mw(rP z^49@1)Ihb{_W$v_{|E2>FOvH|`}_Q?xBLIv|E~X0|7ZW#{a+yo_3PaKh5y|D=>J>( z|I7WK_K@2D|9MEzz1;un)#~;8zVDy=U#b36f6f1=lfU~{-THs(ME%|G`^D!+8-6-< z|LwN_@`C?w|Ns7P{`dbM{$JyN75%^S|J(n!|8M_){{QCxZ|wi|gDbK5fBd!T84CVi zU;d}~^>6oC_v3>k>R<m(-?i)i)8?<muR($H>nF2E?f-E9Z}t!V88R?5e0jaU<H!8} z><r)RkNtDM|9{W&|B@5_Km1<|DkQ+gDLcb&`}X($U5@{MWdG^-f5zYP=l@?>w_obX z`~{#!Y1ZFz{rStDe`5LgU*R)5LxB}Eoz<ryw@gc(*KeNxfAjz2|CxX1|84&dYGc`d z-2X$K;RYnns@MPW|M%s8%BTPDPJXfZmwE4hW|hr<!^h_Gr@g<X-(OPuHhX{jH~DwE z`)czNpT3XU9xwGjY=7AASSf!8Q0uMmQ+{#XzpuZfAKS0l^XcE$u+Q}m{=T;_{QT(O zFL1ZxPf_KC>9>By=hnaew|45s|7*Ory|$mC|Nj21OaIM}g|CYL{Z|o`o%xeN+4;>k z|3B-&9e^M9%m0f0|BRZOV?OmimABSCf6hK-{(qD6^>6?A+t$lv*Pnj;f5m_O`eUE} zFa5i{y<Y$6{=>iapZ*J~SI?jMFSDcmZt9=;Y5(W{n_2&Q{+_qi|DXSv|GEC$e@hVK z@Bf~E`@R3YH~1a>vcBwr{LgxD_=Bpm{%`*oCRqLtpZhoSZr#SZ$6v!CMeVK=|EGTX zrw^*xuGPQ)bbNX5fA*R73=NlW{%`)(|NrrS<KLkA^pE}T_kX$HX5asLfBX6Rw;TRn zdirz!o9Fd&|9}2h|E%c!|7uXP^xl8-|Bv4Hy#Igt|KD3b&j0$i|4014`d|A0_kRaB z4*tmhuaElg59(VT|DPTI`_}gVkN=5(|39HV@1Os_`%nJt|5N|zzuT+*fA+JVwf}b? zRvv=;P=D-Enp^+s87$KOt+)DD@#l|zegFSIpeEO}|I$zDr~LQ*7Z2*RSZDpcp84lI zsG%l*=)dgr|NAff=b8V1=Ku3^|I0!f^Nb3yfBt9KFW+5zYtw)3-#2&tz4o_1Z~mW? z@(Z~C?%!wp|94GXoOV8_C3_jv6Z$WF;J@qf{|EmlGc^32zu@ouH-F^+&%gD5a(&Uy z$N%5{4>>>o*Q?d`S$}WMzx8)|d(2t$oTv5wR{xj&I{(!4|LbJpbARuC8-Mj&{n|g$ zw)Ja&%m4k;`s)9SpX$=<|NH0vU;Mtl``Z2wzu8~N|33b2<$cG$3x0eyc`RS@@96)| z$MwJF$Nle>|KI-q@c)nhE&qZmDf{LBm>a&^&;4KYulvv5|J<GT|L=(T_q6<Wl>HW) z|FR$d?f(wyH~#YfqyLYc0lD7<$~<rW*UUBhf4=6A<mdk<{-6Et9QRxQ|LngYul}>H z`uqHkJcEPW@B6|3{zv^cuKHIGDo8;^m;C?vum2q1>VEmlmH)HrG{V>Yx$<;t1}K=o z4SspG|1bU|FYd4Z@^k&!_^pS3IDgK+SpRE&%>Uqi`|3aSy0ho~JiqqW_D`k%7KHp? zz5CnA|Ihc$dis3X=Bj_YZ~f%|x?jI%|Cc|xXHREYYwz#By8prN^h5LipZeHu_y3Rm zZ~4ssi{Ivd`zjA=giNl_`uX_(<@f(J!q?ekR(|=bdhy%#vj3Uw-`@Ve`Ty|$$N$&< zU;7^%pql0Xj{lVZxc>*JvH$%4oBxmhf2jXs4@r{C|3C8odNths4ydk&c3kAu{-632 z-~B1*@A~r3>t%oa^KSkVn16Epw!i$J@BclK`_Zy~-E({G`f%(2OXpwuv8wLb<C*X8 z=fC`a>T~)3dA+~*pL&COC5ylQ_W`%TGX5X=4=#L#*Z;o}|L^<{lopuf6Mlww|BL?j z|E|CDfAaf(@(KU5zs>hg{eSmAHv_}9`s3^W-}%qYFyZ(=_S>L(yyLt5=l?4~J#}zu z233oPzt=B%T>nx2=i~nkfBT=;XI+oy{p5e4o`Jz*>%ZO8{Vx|+HvOod@ROOrV(wr2 z75`DjNI<=?U7z>gJpcdZ|HuCu|8D<x_&+m41GwMK&+x_`JQgz9{;zuduX>}O_1{yf z<o=ty|8HVD@BfUCv-_Ve{k1v&(!Ot7?>qnI|1NglZu^E$;Ble))$yzU>h-EG0M)A& zKet=j|F8Pn`%ykDuJV7?>Yw%>{(Yanqq4C6@89p2zl7B7w0YtE_Rsol`%C{{JN2Xf zn(FPZ@~5VM&(D21G=>H|=KRmjjGy*xXTUu~aiZY!U;bxv{rTr&|2Gu>TNU(s?Qj48 zj0_4(|F3^Czpej2_v8A_wSS};HvG5VdjHnHWzYZr_<!Z!{6CXVgSr>XAO6t{U$^J+ zr`wh*f6iR-bmschpO5Zu{jIM$<yd&D__6rg|AT&qe%|i<SL>(zhd*22)xY>GzV`pk z`}HUC{xAMq@A`WFANieM&;RM}pM3oP!jI2iJeIHhcl7^GNSPAc4{DV^{Qu+s5lBB+ z|DU|kzmWLauaDpSXMDT;U403ticI`8|9Sten14^(cde=UUtc-p-x>RG@Sxt$h)jE> z|96XOPXF5*9H+hi);D|2{m<`5)tsCE`sevm_phF-f4SUb->Uf^{v^xZ{V%offBL5S z#pmnYeyjfrzyHhs&-{wN$Nzn*KX(2fQcLf=B4nJUuYO&gz19EX#6S7l{+s=m*ZY6! zE4(rC;@H3X4gYJje(yK>xA}HG1H*&=hp*QQezXVm(dv8t@^9O}``3KNpYs3gx5K&~ z^$Z>o|9AgC`d9zS`+xZ-GXFO}zW(8>{9ks4hAF@8-_@V3`LE5e;eX;c`x}s$xbuDg z<oY~t3BN-=aAy&s(OU{?^cLU#|8(!y=<iql7oM+u`=|ZYeeTElw)N4UH{CjS>itVl zS*}_BfBWzKM?t+v|NreL<=_7V4Lp3P|MPzXB*;NS4+<ZD#y{Ub=f6_@`~OatzT0mi z*bI*SUVrHG|B!qCO{)IM|J?tx-XrJ#(|S<<l;K)E`}+TL{xdV2$o#+f^Z)C==0E)W z|MUNypCJwZ|688hYkjRZ{J->9{P}O;zi(ZyOZol3_W1edHuWFF{!Lk(yVnLXcDMiE zlwbAQ@z3gCf-|t*oAae|b^HHs`t<jD;h&3jJO90ZzyJ9%=ikxR{~VwH|M%y-{qxGL z&+N79x6l5UzXjUN`g^_Nh5cXu75|Ur|NR*9zj1#2upQKmzHk5O*<bzLpa08$|L^*5 zfAr7&JO1U}{TKZyf5X50zke7@7XN4bwptrC#o8YI|HqzT!+*m+_Z`2LhyOQL_<#8S z^KZ~0-T$D`rF*vZCAa?0@A+u|^Yj0P|APNPO%jit|B68a)eIZ{D}J+2`Va0N--8W% zGaUGL{^D<Y+qwTw*ZsTxPyRpu5Bb;jf51ah(5@Av4*Yo;G_Kox>i=%_%b$NNul&FK z<;OqAd+yih=wF>*JNetz^?&7V)$iH<qwe%+tFV9TN`Ei?nEy3<>;0u4S+@B9dm^v? z|Hbd)=Ev$IDxd!KUi-}c*T41C->+Xk|No8O+s(fG@BKLS)%Cji6QAYR{y%(U|HbF_ zyZ;LR&j#gv{eR~(>p{LpZs6HZ|C9XlxZml`pZRY-w?F$C)Jr-)|M;!@pMKcC`hR-< z$3OL%|KC2m@BQ=rhJWvi{`dcX{@?hsJ^Q=(a>@V8Z~k9i|Lp!R_59z^rZJ?Aoc`Z_ z@&EUe{#&2<7xrtu><@RO(TK%=?HN+e{SQsAkJ=u;=6=QBtDtUReS_Yo`lWmRcmD%b zg!gy<`I!0mzvDB0h6g3z{xA6V`2UapXa0eji~rC6tN!ow`&RkC?{7cHTff;~Qu$B+ z_s{s}|M&c#zw^%T|M&iX2Q|gc?*C!^`1k)$_502KZQl1^|KIfg^Z%U&4fy_%2iLFj zp`GH7|8HI2_wDWf9siI1wSO{y_W#NM%`N}y|DXS7|HNPV|KB@)2F+VsfQ*Xg|G)na zH1UB{cuxN>&v0($|J8l=a`yjE-+ydh4=Ny@{%89s|FnMce{s;@N?+9fQYpybK>LUK z<4^yu|6+gmdHu8h#n0<Oy#~;P0)vP6fBReKU*^r<_U8Ygx^3`bN%j{`|JT1i^WSd% z^y{ahx8L9OA2ed~=0D4a`imdy4gPa5B>Y#;_^)pL|M>sq-~K<DAM@`={croLpO^3Z z^{PK=|F`93|DP&`f98$;IsgBw|89Sme|oxK`*`^6e|f*dw|<V-{_l1^{`Eh1`}&2y z?5qBrJoftk<=g*X{Jy{FtNx#VjK7Zm+gSgqJiuP#pUv4H>~rfs)<60&|KIZK^^ZZ* z6d&sU)cZjicIQ|AXL#_}A6~FN`fjf`z5eIjZP)m9&)2)}`Tzc}J*d9`o#a3s82<<A zyT&g+``=i;{upRb{PX__*Z-aVpY|U-IMo;T-|{~@s6qC9%K!b>{`buLKOfY)0F4A5 z|Nq?Tf8pDUCbnPyFOxqtRolL_Qa1_|Oc&oyw*T3F(%$O-4RAG_{W<)t!M_WCqQA`l zr+)qamB;7h{>PtQmj17J^}n?>bL};*{(rTu_S65J>(hSje7R=c|8-^mod3Q@u40nE z>i_sR^TYG~MSm8b2PFjeTmLhD&#wJ@{J;A5|4-&e{rmC%%WwNrQ?>o0<ZA0ZxBOju zxBk|`+TZox{(t!YqyBaMYkP2jp29!a@FTeP>s9{k|Jk?P-}N8rkNrmfuP@pY^8fYS zKiTd3{$En4zY_gvb?*Pef6DEPqA^+kKP#U7{vQ2n|EE89_opxZ=lnD1|Kj=oGyd97 z{wrPk&-j-8$Nj&q)j#@w<hA{`>Hm%Ekb5lkd_S2Re(%5Y|M5Th@Bg3d{?C5n|E#~y zgKyS<|IftG@b&)3*Y+URla2omg3HiHf6xD^&jPoOL8Dy^6Ab?GZ;OBU&wl4$_4<GE zH|jsygDU+czwOWczX=+{_^<K%{^fu5ZvXoKZ~yQAuktBq&IdFz_TumSjNkJ=5-~A$ zUiE)=|FV}W|C|2}SQqni<>~B;@MfUB&%cM?`{RFqzw<BbfBw_gAH7%pdo#N%%Kpl^ zdiL-0|39(Sz7t>n`}^13`~Uy@xBt~o{=N0D&HA1`pH{cdrhfJP&r6=%-p^nAZ}Hdq z67U%K_WDQlPeH-8=3{*smQll$KlLX6CGOOH`=S5)PkQ~o?C<qu5B@v91*M*k|4V<{ zfBaK__1{gt*Z(ho2O0d|{rCQTe|1^T`oI4Re$NNZI;H=6+y89qf6RiE|LOllZ}Zpw zU&;FaJfuxg|EIp;KYPQGpZm2Q_g{Ovf9C#_@_&0FlVgRy=KuNU4jE|p|L1!5Q`|!h z^S}KSf17>(_y5ZC|I_UMi`V|!UiL4)KK#}HwRe8r-~Q<SmZzP6&cFKn|5*ClKkl#N z-~L$iy#L?E`Zx2xwb%SF`SOw9{{N%;_x~^dKl5vT^`AeGj!X4_P_OTo{y+YHd(eDY ze<EmZV(s7leE3}T(eLt+`*zxI)yWU3zqkMNsXuW~D=z%0zXWOH%s(so_xFd*W>W zmruLC+T`Evy4)-E8ux$w4XS^?zkcz5P$&QSx6Ri<6PNB=K<(S0-|5h4;2-uo|DJvK z{|D+k@XM$C3^PC1*B+Cful~RI?vJdW|MQ;yfAnj2>F@lL`w#xw|MfHbh2DScH`cFv z^WXjF{bSoeeR-nhfQ^p*e^+1lpZjO}RQm_@S?A{W?f<tJJQ4By-}UwDeZKE!V)%U@ z)(O1-_dR4l{r=zXTi5p?^4O05$Nyfx`Pcu;->(;cg<J1?@e?{x{#}3f|7ggl<o^wS zKF<S9NrL9e`Co&^cb5OR{3_2d=YQ$H(?9h;egCJQvibkb&;P6c^MmT0BmW<PCZTWE z|B(mJhui<`{?B;e-}!x@nUnqB{w==<8I556=l;+9H`vkTSAL!UY0tp$C*I}Xf3N?> zfBwmXrq8UwBV7K~{~j0qTUPyl+mros?7v<OuYd82e`iqMjZ^<Oota<c0H0G4|MvLS z`TL)|9e%z54XR|<mtFpU>AU$W&`8S6ulIilAOFAj`TTXc^Zz7&-tYGN{)az{WnbQZ z`l<i^{Y~@hx5lsge|7HPyT#B#R({@p>l^>l;{SjA|MIW>PxWb_$vjZ)cKiSOyZ=|- zt?%0Qf9r4mt>5ndoB!AT4`@W|{x3*E{dMlY#ee00;-FF7_n<j>@VvuwNYH(Wul;&8 z{QmFz=jtcg|8(E?|I^9e>b7s|Q=jaA_xpbL`Lz<2Pv4i_{@>s6|Ly<k|K~vi#;@7G zg64L<froXUqt5K8Pqk;*@&9%3znx$IDxZC?ui3Nz>tEy8yZ=8O{IwH2;q><p<C1;< zSF8V)FZeIPz~J!fYrG3|<SZF9D0T1hf1VTnKm6Z0I@oX>(&8FjhcLPhVRRkB=sE<N zuR}QS@BG8x_7^|y|Iz>FWBq}D$3NR|eZ8LTr}_(f28Jb3|L>k&{&J^{;~)DIe;66& zockw#r5-dTar6IV`=5{he+1RD>UV$Me*+rs{`mjEzv%xD!Ly{$`2f&t!sGuZ=l`2* z|JQ!zpZ(QFw*B?9zSqx^J70h1$JyhbK&uWi<A2|JzwmE+b$9;!=!l=Yuf3gqZ2#5u zSL>!96TSeN5})(u_MG|kd;cB#!LPl3PyODjf8;Cv|MtJLXUG13|9)pyY3+}Z`?9p` zU-<3&yXv!3|Jc8t^!6A3)6>7VZyO>*11jhKZ{4Er{X0ejJQ)O@<=_`s_P_tn!TryR zyX$XQ)`zbAd+jfHo!zDX;h+2uAOGL_asN%bf4mGg{?EOYpId+Vb3Ldx;{WgDQ&9Kf za>2hT+Tr&Kf4-e_<&V#mPiL-gs`>c-*5BzuUXNEF;(omTZT-r>tA5^ISU2?#f5pG3 z@AhAQc3=Dd=DmH&_Wu`u?qBrP|6l)|U+Mpj9zXf`|AimLUqI6%kN)3*tZiC(9MmcY z^@Ecj{b2F`{F3#n*6;gO`0YPpp4;H(`OogLdjCH;$A<0uzu(5I{@Hx(>;M1${a&+X zi~Pj@d6xT9|KHPGKQ%u0_xvgMKj-V(JwN~TPx{mMS<m->36_e#>R<71W8b^_-V6VY zZ-NGP7XKCgzdHY~`al0Y|B~x}+CNVJkJQq8J^?b$a@;<AyZqe$I}QGs->#qipMQG& zQ$%B=B>BJnje5JOf8!<p-+XJ&!0_S!L*#j8$ovQTItCTkI)?K9=1;c#Klm~G$FKf> z%nS~v{>p#fpSJJ6D8r5a2EXNVATjao_x+Rh+rcZ%?)0yS*@<ZM?gBM>cfS4q>E5rk z)vx~Vc)qXfpYzxEtske)+rPFlGB^F{cgPZ`-T!a@z5fW*i(LNy@RR=Ue;)q-09plA z9{~w+(9pw#AAi<=jz3pFasT&v#h1V32{(h+{kDJjvtH|cy_D_${y+Es*sE;&|7ky{ zf6DNBfAjVFbN?9`o^1Jl@#p{Szvn;v{QvX+ou81!pY^vs%TN8af5!iyzw6U~udaQY zZNKU7|9y|27th;Yp<RFK>b5vJ$k<(cz1QFUQ}sXZF9By@@S2wW_v<5n{(EilFJphq z|L@=L7hhiZcdhLI1)uBd|2?1oc~2B*b=Ga)|K_*!d%<%$|FUgBV-{EHA8-FxvFiVU z^ZKXL-_GA!_wDO_@Klan|NrtC|MedKzxl)d)&IuN+oS)UR^7Ho{eS%J|ANow|4;v4 zz41T$t$36I3pDH{eEk2`-}YO7`(OOFzwH0YYyWQl-~7M*|MCCP|D*q3wEx!s_wv5a z_UHb0{67j>0BQX{{Xe82`w3c}@zVb9@%oJT-?zU1+x|KJiT}Te@Atdxx8MByxB1PV z|IO{nZ~uR<`47ArV$c8f|J(n8N73$s7DoOCO)s8DEbFT;_{r=LcjeRZweRICKmVJ4 z_vioq-~W~V-(UMDKBj(q-hbVn<`Mt5*ZpJIb@4yL@2hAjcHX1<fAS1B{!9FOukd^K z>i<|)M!cVAZ}s+{|FIwQ|NN{!@V^7RG;&GIe@l>`7;gL*_$|NjKX@koJyMbW{Ken- z^UnQGwf~>}zaO;t<*Phsz08{b(5@9^E#9A(_CGKGcYON)?&O!1e=hI&fB8$rzvN^2 zcGIT6I={~oH0IC$*8W~}&HksUvfB06cfr<RU#eibrC$H3e{%hozmK6SB9?}ImaqMP z{q*<i*U#6#`5P_$>;JJIUSG5K+dui)f9-$boBJ<5&%gVx^Z!;*-WUJ>e9Qhvp!J1F z<7xA~|84w}y!`3SpY3lx&wut4)JuAPKKX5a<sbR4|DT?(__u${|8F1OFa1*<@xOd0 zc;)rXpYxf&uixGC|MHvvm+e32|DC+O7P>?ivQ~HV|M?gHm!JGEn^v#=_dMSpWyEO2 z|BL^?i>6j>wqJW&|62Z@e_5cVb@mS8KlcaS`|k>_2;ay4`>_Sb+LQGEd+Qh0zP0}U z``gd;vftu&*?<>Ef3Cmx|9s3l&>~&%!iQ(^f98JtTmN%^y!8Lb`~SuNpZ@Rv|LOnl z;N|1({~!PNhjxm8)Pq(>f2+Uq|It7BPv_76Kly+5od47R`~SP|@pt<F?+bn&{~ukS z0T~tF4q8|EAEod-{hy!V`I-Nr$L0Iy|9|@a<9vHi0r9E6`A`3+{U;%_#O`bVTlGQ~ zh&%t-|M=7YaL~+;J!s}<KWGpPyyR<1_ka1f&r7!ZM}MnNv<Hvgf`{{%OBVjWUjD3p z{`u3{PuJegzYAXU_^qDl$Nm>T>}S-oFl_iQyygGox&I&k4+bq{(yRZo|L^=)KZE0I zzq+rD{~f&h|ECG7f3~gtbH4s-{o;SYKR?}{`gnD2{r11BZ~a_9wSMvQ^`-w8&)*;L zSKju2%Hyy9U%svX@;CqDFY&tn4B(Y{U#(Zji`36c`_p`G{}21ZKmPwOzux~5G))1T ztzHgUVEX(@J;R58%i#s<$KUePPw)Se7yY_@+VlO&pwV``>&Mn#e)fN6zkM=jQ2b~8 ziEPBInLBjWEct)+ssHh>>)p=(KMz{v3>pc1{J(ha{~g~lX3hImf0_U3sj2gK?GXb7 z)BhKsm5Ya;$j`0M0awFYf37Z*sL%MP`^*3T<k$7DKBo8oU!Qu}`2Wt(|6%*i$xnGz zUwYl{=l?t5oB!M?2|Ev3La^}PcjPK&<1g`=|2{uH$6Nlp2rev@-_~z|tRb5W3VPl8 zKlQ)<%0E3dRb97#-+q-_|E|5We|upc#tO2h_y-&QtlanORr~G#%(wFI!u%0G^M7_= z+^YXy^ZsphzF(g?!Ty!*&#T-1C;r<lzZ0VcaK6Uo^WWdPf8#6vy}Q3T@c+V^mH#h- z)<Vrc`LEaRzvSEbKjJ}aq3R!fmH&PEza+|19{ct`j0gV4zxxkbKUn|i?tkVt^=JQm zUioJK?|RT0#P>hG&IhqR-T0pXE<->5OaEuT6=g1${r38T|MTzsn{5A|{|#t)2Q!1i zrN8o^HZL>7@A@f!-)H`}SN?ze|Ly<k|M!45gn$-1eEH|U<?s0lA|}S3Px_B<vCD_w z$JhU@&Z}SjfBUDeKbD5nfAh6oE1&gzfAjD2^`GX6zFWWl@9$rC@7LG=kN^6o{oejk z>EoY@z3s#2?Z5iIGU(IW`|WoBFaEOM1sVh2eB1ux{-W3RAM3CEu-}b2YFKad&wf@t zPo91CpXs&#Hrs=$O6w2*7k&e!o*(~r{heR&Z-3VRoc6EvFTk4})W82<`uBaP^|tH( z>UaD-51Mr{{{PMW^R0T!g0%fp{l#zFul>K$^#3`eO=17f{=k1`hev<nr+##Q{q6pl z_)XUT??EQVEdKh}{a1!;c&PvP`sgRzTORy>|LX?ro%z29yppfm?tirP|Lyy=zy1$< z_vd}|$NXELT>hnh{aOEbbJ;)C^`p-F>aBkLXrEvIasT)KFYD9(p0}<02dVG(LfTp4 z|J#qx2Q?gyZvf3rT>Ez%wC&)2>))N{4nO+cuXF#-{HST>tL)$3Pfe{`Uu2W<&ps2< z#yS72>tF4UNbCQr?^~aK9V+!dcE8yx`ziT<>sIdnet-W(@MeSJ-#1@_CN7n4f!en# z|89n~7~=oTzw<Bcdp+vXwEtf|u{WIgx!>+_|M|)Pcjnb>#j~&H|KdOS$?#PR1m}Py zAJ>21zvF-FpUtP_KiHc-_dg#0{~~y?R`LJW*Ta|nj%RH6`ySQ_eE+ZflRC(C@Bg{J z&At!MV@03|l-F<mssH--E938K+4wJiplzz()9?P*{RbYEtdICtc^)(+397%^zk-@s zm;cZC#m{i=zt#Vzf5d-Q{}<nM^Z%Ql|M!9xV}chhgXXW17Ly+R&yesx{XS^sB)<Cp z<rknOde1<+k>D%LvcN0M82;%i{jXp8U$PFg6#}+6Z@KONj~4Zp_tr;$ia$3Ww5qP; zZ+na;XhB`%Gk?nku$6lIxqlbFeV+eQbwSOSkNj5ux7zQ1S^x64^w;_SKobD@e>xxk zzxdhz`ZoW68-K<x{+nO%?_%GV_eDRCzt6vUe*Z1~>;GS!`}Yo3$nu~6FPl@pdHw$% z|G)g3|3~;VXfh8}yS@E?{oVg7@9bS~|G)KjdDQRx|L6b7{{!u;$^Q#k=!}2!*!q3H zUadyjJNEO*-^ug7?Kk=q|NZa#qtC;7_IxVe{r126k^kTR@BRP$ul=9>Uz<TwVc-p9 zZ_!tfPCg~iaOeM5&Hs0P{hRpg`*e|G_kaDHx$a&4&xF5sz!Oe&{}_Vq|Gzr<FaM5u z9tH-5zrXaA{(*P!^l$us@w@%|m-TE<>VN#d10F*M&G&-F;711=>_^uj{6GGGbRELz zI)u@62#;v94k6+H^ACULzxWaV$Nk?A`-K0Gf6l-4HN5$cFlY%)(Axj+o?iYEGf&~4 ze9Aut2EX+G{IBdmdv)LZ2k*T30jg&wzx$K_4Ycj<M}5NowRrZJ`TV<YJ9FM~`?J68 zefyu=r~P@BTnSor0NN4#{ldS)dyj5EuZw+~Ztl7B`{U}9|FlmHzqkKh)<6C||NpAz z#odXo|Nqy-c51vH|F0nH|Eu5T-`&5}=->R(lVyL~KRx{$9X&*b285pfkGeH|X|3KA z@TOGoE=6{Z%m3Z~J-GjQ=TZANbM~*gQuq2Fc%9wL|Jpy7KYaZE(2x5$^8eWw-u(A_ zyM5dKmp|=6y%F{QPd<UV7nv6Ir>1JZ-|?r+FRM;1tMXZP<h~!}Z~u97F8vt#u=V5h zZ~L#*UH$VmV87Qtb{o(RfM0)HU)O*8F2Cva{}+GaFaA>h@1FP9`2VBFPd?UX{IUE6 z+ClWO{vCL2)Bh`vpM$qj{IlN(=?8cJZ|||c8Xo`G;&(k_o_ofh=RX&N7C9}{)4u;d zUT&%V=krrv|Nr-|+Ai!?|B3qTGWR#tzn^mb)cS3I{ZGCBxm|4j=jT=bHh(JL`Z@lW zX7Bn}>Nfu)+`sR4d+~oJcwpz^zs~<xxBnCVuO9b*<NiPMKcZ|KDn0=jXL&q-_3i$1 z|6?Tn&wjiA?Em)D`->2bkzE`A%fGRof9l`*p8s#Y$ultg`2PWUo*A+a6MZkc5NsX8 z?*Gz7xBfr)VOj&;oTl*fU;poT<NN=)7~a&+04?(c$He!)@1M+%2Cp=G=N_`|4x-U} z_y6O6ukU=Tugw2@&Gu{ko#J@w{|kS8KlH=<{QYZt)@<ASsT#5b>hAxy|MDT51pX&} zI$r$`G^G1S{=fYiNRWeu9z1IPUH_^7eE*62zxPl0^0%LGGx+-7`5*q+PyKG+JMX{y zzx;plLbvOG-hTsLV1NJMYy0Q_85oLg{eSW2|JHx$KmPpxQ~&M{Wbvo{+n@bjf8)>8 zul#p?^WUq8V;C&Y$M2bH|1>LFpC2-Ix88o~zx$`A|BNU4{DsQ6wV?IcZ<qa-hRx~x zH<kP4|6lmk{*Tf1HdpH(JfHq_^SAR+_P>9<2T$e9KmOnPO#Sqa|8qctb_agmUi<H< zQ1rdY|JT3$-|-o=pKR}q|IBaoQ3@>3uvh2f|F{0mzx8){#_#yu|3k9>W9-k!y#G`F zdHoT{BI&vRH~)uhmi+@-p7CY=zsL5VGOPOk?VtLe)c>FO9>3`R{F|Tu&VKXfzx4dw zZ~uQ6`43(Vaqs_O*eDukVI;<Wcl#ZG7!~xhem=hTy?;;T|I_dO{6GG;e&YZ4VgK~k z?T_C6f7&1EHUFdS>lyC8sBifD3N6L@L)Vt`{4byI_wH3}D<jI!%g-(Qub%t|v~~DF z{Sole$e?xqp<9RRJO1|H_zyl2;5$;0Ui{^szyI_9o96!qjczdiJN}Cwv|a|@wE}IM z{O|wo%ltnt|1Ti0&+WbLzWbjx^-bNMeYY<2PxRlYx8<2OjG&c=$4}b-`u7pK{UT`f z&;EV?UqAi*`t@`BZ~xZv{;f~0S^8`1efdwIox=v;T`QoS!?!?rzx#jjt@w|i^@T_a zP0y?TkNCIo@~1a{oWK3_{|wqUeC6}=jo-H0{OkYq|5Lin|M*+=)jz%m{j*;4fA^jL zkN^Mtf9B8m#^2XtkNwa5_W$MlpWFYPyuA;yME5ylKikd!=U@Ea{p3I2=KWLurL+H= zh!~CdpYb2OXzJ?C`Pbfxzc!Dn-wN5V)%_=4^Zoxt;N?Q!_3CSG;n?W1`TxEB7xsOd z`@i=0pX+?T^<(FO7f1iJfB!#S54=bhd;r5|{eS0v{M-NM{`%hkYu^9w{{Qs<^8cUy zSA%C7KpU`@LpsIvfA)Xdy1o{)Z=mo$|Ig>o{y+Ked+z_~|LXtqm;5{Zzxu+T$N$&b zZ-I=8W7%{0^gnw;@w5M{9`_$V|NqnXALr+T3W%Tk9sjxiy#EBUTYd4h`nks-3&a)w z+%Nq3UmG;@Gaoebb04%y7qqvP;nLCn{ojgr-CnNyd;f;{h+#>_T^Ihpw*I{T{PU+< zKV5sf{T*o0Bg1cd#y{~Tf8@{DGl7m`xb^?!x&I$Q+lhXvPq+Vf|DXTYKP%Vo`?dJm z`oAmh)>odmT5~w;-}C*y_6Po7S@ZM#sgGB;?Z5pm^zEPPr}kg`e0|sdi|6B4{Og}r zzv<(z|6jh@|N6H*<1hFA`UddIykD|c_`B@=jsH15kN-2@;@|TBFTdXZ0h*=&P5xX4 zt%HJW1g`jh8D6md_}hQ_X?)%GwO^f2f4(mW+GdD%{n+))&;QRHpKk~n6#rxYWGiCU zY%z4!Y~z31r~lV~wO{=F|MUOF&;NsZy&wPYJXar6ZQ|?ycmK=wqNk_)W8=C(!35j& z(tpn03{(yOzx5~7y2sw+zu4d9|4)9k|N3L|@&DI1y`1^~&Z>It_~-myU-$3Ip8u!* z-Rj7?Jge2uK}Q(`{Qr$q#r%%=%e}8&?a$BkGXGzI3(JY$>~BHVke&Q%|8w~?`+xR- z|MeF=JvDin`~7&K-1_YA^UE?YSCAFqJ*h??ynE;HTa?{9>(Bh(s-b`Nf0g<FTMOUs zH#s5yb=se-+y4#z-|fGH(E>=foA>kI-)aBW+th!5e-pHO{mTCrprwuHQ$QPBdq5jp zL2IGxKmO|f`}BX$eB>iV<~#pmc<@jE`+v~-LHnQY{xg2tpZ5P}$hZ4{_k#{YDF5^8 zJcw2KrhWsc4DG4-Zw%T;37?=)>G|LMHhjl_|GfVv=l^H_20CVfkwM|*zkX1gm$Bim z{i%Q7xBQ<!@jqzW<>dOfpRmOaRsYp*{Y$qYVq&cL<bQmJZv6QB`1(KF?fb9(kN#Qp zCuo)Z?`3nZ@o)Wn|KQ)}_Lb+kzF)upulDb|_xtz%Utjgl`ThM}y~#g!E}gG^{{E}) zHkv=by>|vJY?i+Z8Uw!x8Ux??b^Z_g>_7AGVvZWxOa7NXYtOcQzU{x$cK>hA2UV4_ zKmG^&2Bn@q^>_dI+x(B;TEFe^FZ&YkW{1hY|6ls|eU<F(?Em(6{-uLvoo3emUR?Qh zKW0Jd{BwWC@95X{SqJ}rhO{Z<|I0u4&!|xNZ~dtsi%Wm!KhwWCw>}>-IX35?`u_hD zAsZg-|9?&TiF?b#^4kBdplR0nd!Iqu23_a>Upx2z?fX-I)oYjk`@Z&vd2XfB|INSt z?Ee^P{U2rh=wHSA_Oi8q4xiuu<NojeU+g#kdoBk$VFy&Of{tVOGXG!q|HF^{K@ErG z8=$#~?EjB%tJi;ef9PM#^TdyT-KXWh^VdBseRcl#_nVCNhg-^-{GSg!V=BGa^}pSp zHFN)8eLwf<SFPUv>*A%q%AeX^xBtrh-|z3g0B<(f`S;CN(8Q(SThPSim4A`2c{l&O z`pv)XQIE)}ulmXC@a#|g{Ex?<pZp(VzAp;TzMlVq|F&<0uUa592i(x}asTi5JO7>j zMLy;KF@M(Q<&W3@2QBW2_`mc2*Vo#Y|E^~^@UI-!2`v9_{c|$Nb>;sTecSpTp2sXf z6DXx+|AlMoYq$Kn+NWRj54`6!^Zwt{@BWKHj<mAZ`M>8mKXe1};a}j%@_N6&><pl- z+|UigH{aBM`}6<ae`W>-(D_y19roW4$AmnpXV~z6^Lx<D$@;zjGrvG~MKt`M_#bxC z%~tS9Hw^#9CxUle@Be=sG<^m+B<S+I{}prgzr43!_oqJObe~=SoYzf}-u7v~&gbPa z7hop_-EaN7<J;%$e}n?;e*Ivd`~TMbyI=Ny`P=);A3OnI{_n`g|1W+n&%Ukx|Hhy7 z7yp^t{LgUzRlf7j<L}$wJdb}n{dIk5di{4;A>01^Ki{_fH?P<KsjvF)|F09gtRGan zeIs}x82)tz;h?3uNXrarKK=9b{~a&+bN%ms-yaogyT$$7efQgc<wy0P9YCM|$^X0m z%Mmmc2Hw+-aW0tWQ+|eb|9?%X&#V3K@%gtm*W>)!|32a0_t$Kw%LDJOwy$Sc`TqZ_ zlmFQ7*t0P(OsM-SE(qDdbNt5t7r*C!|6<Sl$^K7$9%9qO=wQR6(RB!*Oh38~VRRkB z=sE<@#5zsZA#C_x{Nta0$shfH%JqNbH~jzj$N%lG)sFu-L7SddUaSB9DYHt?UjWBZ zR)0Y2#5~LYng9N24>~$$!+$)7FZ!$fe?QOX{Nwr0{?1=^{Ik4q-RF&aK&uWwbKun( z{~z9abo;qj7-Xp*+BRLY=g;HU?>GE+_>}hh_<Ym<?Dziv6E@d>w|@Wsx>@s1=}%{` zT{-vv)o<J1-H(#|e|}fW?tjidKmA*)J4A*CIzQLzzCC@(P8_l+6|$_U<>i0n`Va4a z-gzWnb}l|N3wi|Mk}v<K{<-|&V?F3-f&O}ChHv%DzeV4^{{_@3MV#tlGROYusj1~L zb=K;p_QG3jK5x~D|FgU7|I(IAKURG>^dtLseAfP~e`PD;RsS=CP9o&5{kQ0={qNuW zH{aHm{9B*#ck+Mb?f+)he=Pj;!`|edOzoe==lB1xF9)w}s(<zIGx$iy|MPD^`oTy4 zJ0F|>YW4cMIe+cp^W646|33c-1TAt3m_GIWfBpVT^M5`+^|ikKzpcFXTlXjXqx<r2 z?k_);{WSdcKlP{I|3r76|5<GNKl119TR-*xPB|9-Rd`<gn#I54mA?>u9Ldbj^;bWh zzxvkwdA(lG|FhrjKl^|9Y5Yz^W906Q|NP)HO2UuTm;L5vVE9x219_eqvJVq|FFPk} z9mC!Kyq0h43;sy$18+{7Q1t)!-}N)!gAN?CKLa}E1RN8;|CN6_uM1jfCjVVoEBqb2 z(Yq7e=*|1Rf6w;1*YkeazuUQf?*D+l)ro(WKF`mN3%ecp(-yp@?CHDzh%?9xem=%} z2APT-;t(>AU;o?*H-lgQ^RM_f|J3jKZs-3i|2O~7-}!bw{1~zakYmU!K}i5~d`=C@ P@i|lf|Bv5vHzfrCH=I2@ diff --git a/client/resources/hardnested_tables/bitflip_1_08a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_08a_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b708bd851f5a361fb3c55758049634652d5ef935 GIT binary patch literal 4415 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_08a_states.bin.z b/client/resources/hardnested_tables/bitflip_1_08a_states.bin.z deleted file mode 100644 index 449c46f3c38132980930af0d5cb0ec0dfc52861f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26137 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 F4**a^2E70P diff --git a/client/resources/hardnested_tables/bitflip_1_08e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_08e_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..79c5eec835299b6f639828cc891fcf7dc186bb0b GIT binary patch literal 1569 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_08e_states.bin.z b/client/resources/hardnested_tables/bitflip_1_08e_states.bin.z deleted file mode 100644 index bdea7a0f151109e9b16d62351147e5b84198b864..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9989 zcmb=p_4cmkBxUmn3<rK5w^955fAY@f%vpX`D}1l%2t@0=Q@?oSsESbogTRAN_5Xi= zwzp@H`L^d>;}7Oz_6!UR-|87o{AWlxzyH(zf9w+V3=Ln|8D7=DsPC|U#NY6z{|7Sz z!?phm7XRJ<T>LLk&ww2~nD;#P_kZ{L-v_=X$Nztx{`u?V|6%^ezS+Ou|NnR8`EUE5 z&wc&B{`YVHw~~ARnSYe8^!wN^`(O5Y|CIkbXaDasU#=YX<wX5A`)~X2uCw3t@BYRA z>EGkEkLMi!JO9_>pZVc6tIqzv`+5Jb`M>7>ieLL{{@3{*_5WS_zrudS|Dx)DJ9qwD z6!&lAzvDmq|MY*A|1|&G<3HS2?oarCrT*sC`ZxA(H9Kqnoxb;{eDi<H|Lha$&(uHC z|JU%5pMjy_ue?J2!$0Zo{{Q~BH|6^GpYwOW{r>a(!{5R$KhM8<|NraH|Eqt`|Nj5< z|4;Sz{`CJ{{wMvf{{QD|>_cMyud3%=V_);{_>b~`*UkR_{ImZr$aV97#n1a1zQn9- zy?x~W=W+j6|IgU}?R(b#`}Hs9{y%#EPya7@i~q}u|84&Nvi9G@@AKFGU;BUV|LFhL z|EK@gkFo#pet-G;|E2x)M?crUwtpP|XYGGRhOhFVP`^^oFyVh=%Fk6dzU!uB@Bh(l zf5G@aW5dtue|Q`I&i}1n_elTWtN*|He_Zd`|1G=z`Jbx`|6bGBn{52KHtW~4ul;}Y z|4Y}uTMPDq^#6$e(*KXyU$Z~9->&WF{U7H44F55{sej`C@p?T2!+~G-f5|%h6R-bR z{!j1UvHd@oFR1=s{QqTr!XHKk28IRyn*W8b+&f=xecivC_4d;CZ?FG*_qP7teS5o$ z|DMNQpC|fue((Pie?{s)&hM(<_}>29y?;0V%&+|~viI+?{U7uHe3$z__xk_kzc0W2 z*75&FaY+3C|I7Zaer&(XKCu5x_5QHulXJf2f8PJc{@1Ux&+C8n|GfW4|KFqa|MdT_ zkNsb9=l90X|8KqifAQ<jm!GHme}4I<W?S<A>QBFxKi+RO|4zkU^WX7bYV4%fzqmgA z|MPG4+VAR@{ITElzxv+CKRb&4PtUb|_~-J^<zMUXe&3(6+Wt=6-+TXy_y4#2Z}@Nb zxBu^c`rC&8^#{ZE_kQy#&HXR^|Jwg+|HY5jf4*OTq3-SVf4APgH~HWF|KX3{|Fk*I zN=*H4V5YsU{?Fd8>%T?+pZ)*r{9o~B_pdLh)BWGQ|9AS|^grGEe=y(pzxY4nCs3AS zcxC^hp5ascy`TH5|B2UIGCZ+oaQG|E@R|Qv{gL~B!~e4%_|yNDU*SJ9DC^z$pZM?i zkK;f3ug3M;-kaHPZ+rjE*Yy9j$G_RXzw`L!KhxiTHm|RL^2^>n`~CVK&%6Hjy-q*% z{NlCb)t_I!`d$3%*Yd~GZ~xi9zjgi3+1Gzf_RTlX``^D${^Yj$({=w>KevBf-@n^l zE^__67ypfaug`yW{oL>UIX}z4|6Bh1*Z-0~yT0$w`56xmj`e<j&;L6AL%ja={}o@4 z-@RTwufEJyZtXwOwSVv4>o2MPTe|q4yyddR&(kHp|G)PCS^abS`@Q|L-|eIRmH*5C zdp-5<^FPu5&i|>Ka{Img>AHWSZ~yuW-rB$G-}d5v>&^D9-ur*&uiyXY{J*~L|Gjt3 z%fH84f8%%lo%#O1eboQW|NHCZHhlgQ{`Y^*-zVSxy#E8v6buXuFP8m&KEL*#^t;}j z`M>rX3YY)$`2MeW{(r`w@(m%s^Iyjs{G0gyO8wja2LG=92W2D%28M>nb6-Fy8OlYa z7MSf1Rr$AOcl|qcNMir7`adJM6hv0%V1Iu0?_b;h+g1N|{O|sMcQNl@`N!+a{+qio zuBm5uET3KcH~x3v|H~k)3=GfZzrI@jYX1rQU-r-JKhOWT{{QvY_U9mS$fiQs3)-*l zcQ^V~bG5EtE&BIM+h_C3*YVd~{{Mf^zn6yE|Mouqzo+{1{}aWpPBS$8UH`55kMpq~ zsom+v|E&L)erDDGmH!!MaKHWk@Y=7-zwZCD5B|UTANx;vhT@q!IoCXWV*fS%FD&pF z7;c>W{{L&9{T-QNyZ@2d|33VzpZ}lzr+mYyop+x9U-<rq`2IT|L;i35@BG*QFF(k6 z1^>cc|2h1V-{SxApY_xK-2eOie(%kDAItxNWkD(+*r9y2eLg}gAa?8h+b(|~W!YEx zBk}(k88-ZL|IhpcT&Xmi`FhR2KivNRoBi|G{?FR~tvvt#=YRh`c7C&ezw6tYjQ=@* z+}|z#(f$AA4|i+(wbwue%HKaWRlj@dAK(A+-u9pM`v3mlm*0LX_<!T`75o1E_x&Ay zyuPG<k=)Ghb!*S5FOOgUGyb3b%>Us};=js&-v2ZH&(Zk5@&Dp?|NFS(d-C)DTd)6L z{QC3d=lb)XUB3A<=lH+xPrmveuP?RR`SDl&xBV}E)|kazT(AHC{M-Lwcm8|)tS|Zh zeb3{cg-`$K->y3JbNOfg*Z+6DuRj@9zvJ((z5k!r{V)EP{HOfw|GS^(SFHorT=Re3 z-}_zK#p=KLKTxr+-}nF7{{M^q-dg{6>+SoQ|HS_v{`mdxbAefgTK^Msmc{@7QC+|O zKd3;t`2W_Q+NGbff5!j0YY(m#j>;eSC;yj!0yqT){CE7%3<-2NdE;T_^?&~_z7H?> zd*k~5pEqm%Chd2hwD9lw-|zp|-P`>4edY6C|L_0%7hLVO{=e@Z_j$p8l8@IP|Em17 z{@t_sM`vGlh}wRd|F{2d{`S}XYyOvi`G528^;3qo3;!?wm+|km==`kD_22)j|F`_# z@_*s0|3M15ulBF_U+up$uRd?x{uR^f*ZeR1r~E(pZ~LF+e=YtqeKiLqy|S<Jzx}Jd zlIH*4Wd8r|oBDJA8SAFc&)*+k_x=9+y!<ae{r^-Sm)DxVUGhJJK)r22)xYrnEH5hm zCHznSXa2vt{`!yA|E>Rjyzw~pZ|Rqxe)Vz7s(<hQ`TKcn_5c6hYK`}Io?pH{{%392 z{X6F;U$>Y2fA!~+W3Tt${J-e==U4OVC;UHt?0DbrdYk{h|Mh2o_H6rCzxnU-*OJ%% zf2x1->-5X7=U-l*Z(Fzf_y5j+=9~Um?EP>2FS-B!o4@<3{{^29{T~d5-Gz3RyZ=S~ zt^Imz|JVIr>*s$5)$-Z<zunJT{G<DS$e)^h98Sh=Pwjioet9il|Ni~g`q%ZJ?SIA3 zCRi)X{5<!5y=8U%(fB_He_j8<-mva9<Np6#3HCc4eVzMn@BXZx|9`yikNx*|;^n{R ze{BC3{6GBvYN`7D|5yCICBOZz;Q9JL|NQ5EoqYel<)7d7b^oLO#aH-;J-__CckciH ztN*Tk{C`jF{r-sy|DUc0Rce;6Q?Kp6mH#*Y&+GrU^8bbZ5B_ib@9ckYEiL_@;r{#j zMSJbDzJ0C!KmEu3J$4hy|404(`=8;)|Ij)AYySyP_<yzj%Ksz#qhS?8eM81)|8HNz zxBYqld;i@3hgbf4_4_{q!~OqU2YUZb|1AG`|KI&TR{vl9|1_*9W?(pAzlU7_lyI-W z#h$}iAaP`TAol$3Z|~jbzyFrMv?Skt@9{sM&wV|Z|Lgz!>-M&3NB5WinO~m&PrlNx zR+3@E|EqNq>Q6}Q&-wUf#{aATdm_Kuf3;^QUijDkPE>u=|J(o5U)5jxukfEaLC@H{ zaqFBv%m1wg<)m--zwJkAA~yWm|EJ#g-{SxEUw_NT)_?w5`#<^hxBL5^-~aM||KGoF zzDKU@s9!qc-8uX1@t@!RE4Th1z5nF@PxjyDzuW(H|DXG7{{<BOUH#8=!@m!I<B#qC zynoxz_0@l`|ARC#^e_L?4wBw|eg2yN#q0lHt=|&=yL#*W_x4}U{eP7I&;2j|od1_C z|KI%o#qR%$irUxpuj`+$e`f#u|EK@UYf2yeT7EwM>i;AAKmXhhZ4@&!`~sJ{uk0C4 z{CC(?6Z+=2*ru)Ve~!w(nE9XKz@O}YYzO|G|0{0)QM~?Z{a^P#*~j94Z{1(~@70C6 z>?!v)&irX-T6_AJ`@iY`d+oo6{o4#;)UWy9TmM-8wfy6F`NMzm|49Fr_|Ndo{?qaw zuk9Ha68`4@<x}|Iz5j=Gy?FiO_&<y<CjGzo|BJoBKTzC(%BR&=?!k)p-ud6M>%V`q zfB#;7e#ZaL>$1;xeLH`w{z+Ze{vZBF_uu#~pPv6e=im8#^<DSs9)sGZ)&2j^z5ajs z@5{34BlT}ASFQhFfBE0lkMeituW*01H-7bJ&uzc9|BU}9Ut7ERXZYXafAT?X*YN+- z|6gBMZ}aZ&ji2>zzy5#m>(7^;r<eaMDYLu1@xN{5-^(B4=lbXE`8WHoewE$)-taH4 zPya9ey<haZeb7JoyZ>$9SJcJq{C|4eyn=r(|6KmH|K0ESO;_df_Se1tzw`e8IsYa8 z$NsMW{%85T)!<@q`M>h_f7vFU``=sty8iY5?#KIozPHZ+wZ-3lE1&iM=>LL0wf{w1 z(t1wSOUxF%ZvXGzukhb%|DXN;%>VEDXZORc_D}nN^#0$?|BU|~jsL^==Ksb23_rmY z^;h{X_6$Gu-~YL9`@eg?48tdRh6Vq)8-B8Xwtw^<lw=eB9sk7+stjJ&Grak4@IU!a z@}J{b>yOL5KXZKky!>y!Hviw3{Cj@+yN@~lXVw0@dELI~@BH~&zlZ-RK3aeLtMSv% z8Lu~9{aNz$uVwAu%O88o{?9LeoBi+E*E*^D=cTv*cfa4Ca(jR3{{L4$&;Ppr_+9z_ zHR1kW{?Gh--TZU*^S|-i{_L*)f4TN=y;a@a-|^dE^}=#ky-<JU*W-7ut<T%<mg^7u z-*xR@-h205d;jeU{NFEg`QqozJ-<N(<o?g|--AkLdENik|F{2pz3E@^Ki&W7b@r#; zexILe|G(?ozvUcn<75Bdw)`J1egEpc|1p36)}Q;IeZ4;a`@ze<*USEHU-);+_y6*1 z|KI$7+@AkN<-gVc>bKPuRsTaYPf9NT{e0f;KkxTrcg+9ZpV4Vuzoh#A&h!5p{_s1j z`n&zBzQq3%^{@7StC#ry3fwedU|=|)ll}{olCk1|+4r@C>aX3k|1QkHz!31?@ejD2 z`5LAfqG`eW=VxpG-mag&_wR!Li~rx<+4ishWBBg>(u*0c**ARb-@5bP`oAmwzXX?j z4WIj~z6O7de<J@^{`35w=YL%P|N5&u?o#o>;aB&SC2RL(?RTHN_U{+D&*!bLv+sZT zzdr8&ml>k}?|rPlxA$lL6U(ou3<v&&|91SRnEYqc(ap*K!v7nmUHyOMKf{^UZ~qIj z|7QNp|381_|H%K%fA|}Ap1H$vt?1MIU+Y0_yBqbl|99<2j2gW9|LOnPAN~LSUwvO+ z^7riZ?|=K(-md>Wum1A?|KGlEzMsBT>EG0(UDp5a)Scb_`~KTM`G3{^pZ<TNe%F6c zZM*%K^U<&Ce_cQD>+tt_$^Ym6-+H$H-Picv_MkHQ>wcft>pgPc#MN*5cYg1`@c$R< z-oC$DxBveY>;K*Rf69NgFZk#G{7?G-%fJ6De*6{Gnwq<R*8e&GPye6)>1yZe`F8c8 z|Aqgbd;b4g{jvQ&qW?29yaM;UR{UpB_|JUuQ|QL`(I>9eeH5=>kp7RE;q&^R(hR@t zzsLVM694Dw|F7~N*GtyFz5egq&(+Sq*9KM{PkZ+J$`{?&@;~GMng6>J{qy`U5M$#% z^MAedYwCOIYk59{I=0Dwm~Z?)G5^u}{|pQbU-y5tZUA*$-~WmI(_8<MeS!Bs_y3pw z9{`Q1FgW~WhqR{|7#JQbdoEkO=hx5l|9_Y7zg~CZa{avT_t!t1{V$*ANaz2Yf4Bes z`oDVr*)RJqKJTCR-~W95v&|8f31;)_jQ{07|9|yy{j;wx|2r)I`v2@#CvXBTx%Yqd z|5g7N{#*W!9hCf5{6Dt0uJtqj^Z&>_kXQD~&;S1dhYLs%I)1YC*LM%M`Ri}JznGFu zqnZ|Kr?K5$`;T9K%lq$--&FluG3fu#&z~>e|5Bf<;P)r}^Zj?%|HuE${rddB`#yi& zsDIyow%@aS@a6k|*AxHu{b%0ruRFZoVsG5aeg9Y=&p-FO{%ibK`zxSC4Kn@f{T<iW z7yNtpNB*b#|Koqs{~7=L`akM#`jbEL|G{AcQUt;O9)3RZX#UHpi@#pKx-X3AAO86A z&*lApk^iSY-oG37{(tMfpZ9;TGca5MHGSg$@-rN$y7J5Z^WW|Nw*PatoAAFEl<_zG zXJ<GdCH|4U2gG~xpJBp(#uJn3pVt572UUu%`5CVKzwlq6{)jxoPx+7R3=C`jGZy^o z|FQVLBDl_kxCn(jV0(V|xBvbBzBRr+zVF}p^Uq$Z|6e<==WYGH`v2cQ&wE>c-ugNy z>&?GqT=h5qk^QGRkL0cYS+A4V{9kPTUpU{-ea(xB|KHTVsox!2pYnJA;{WI0?GNj_ z+4tN2tNZ8s>wbjH{=fTqJtY4{eT8&1*8UHy5BUG|+n?g%zpi`#B>(OIEdNvfwfz(O zx5s~quh_5nf93y8tN-7qzZER>`_J^fKi{YQFaF1`@PEetBk_M2AA{<z-}Vmw4*fiT z=l}P=)hE}z|7>4=`~Bznhrg>|dTzgZ|NraH|ASfs|EK?d`hU+)`QQHF+;u*(e#MS| zq5q{K>VN#{|M>pT`rLn?f7Zjw2OI3=!zIk};qZI=Xz&2r_J8I7^#8~2sQYlg{(ap4 z*K+^626_3gKB(H>Htz4A&HwAn>Ta$7d-wMLJ^Slx7X3ZHd!4QJEqm$z6Mt*|dt@*A zKk0t`oV|ZH|Fr-8Pm}0A@y%EFpVj}Y|MK<hv%%FTUVzpo4u|%M!(#sbsD2&)cKbi` z|FiAC?w?g3|ME}NKk@qSka4Mx>>K{O!$uUY)L;0|@MQlUP(M}wUlGHJdWMEy`V7zH z&;0M$|9kyE{)V6OujL*7v4gVShX05E^ndLCD8G8IT=gDf`TDATH(#Is_q*?H{k@&X zH~-E4_A@>H|B0{lb=U62e>^YxU-tU>Dd!ijJs$S_^40IpzkKySZhq@;{k^U0f6l)C zJF~_<|IR=8TKh@4|EK-^7k<9}+JCw7dYesgwio}We~Z6=X8qjn^*2AgfA`n_``7<3 zf0VwjzxfF|yge5_ydC(ufA{+LHvivL*+l)-j{3cOul&nzzh1ljwJ-8<KY!ln-G5N) z@m&2rX?g2+^;`bD|8xJ>`qRJ8|J?p({?ES}+wa#;`};@x*6;aBTk1>y=0E=vpIZ}N z{lEC@_y3llk<`6++5O+|FMA{3_U-b$|Mgq`rT>@zZ<Fx+=lWm&Z~i*@_UHYdu*%_r z@AvcezyFxukuC-m%WCibOnmqEx!r%}PxcHezumvKKjDw^|CRr5{ZIS@9xMYFT$|^- zL?4y_i-QP<+`82se<I8O-|=T)09A$`!$Cc-HQ)gakODAnsGDd0{cHaJ+Hc>Q|MmYX ze=haQ{#g9mfB8L35&s#E*<XA1YyY>!|CWQaGBBL8e|6RWYW>9eFZE~YpV>c-|G)lv z{TzrK*f><efq!*<f6AAitNzOQZu@q*`i%Yi82LZT{{OH1dpSAmPxbNtmEWKJpZNUB zbVi2X@o(9Gw)cEIEq1=|XZ+vuGeAQD%m(7O{vTfZb@|u*f9se1OaIIN$)4evQL%8u z>67)Z_9NA-8z#U1|N3s-4$EgX|2ALy^YHV3yZ<1?Q;T<=|L=VNqki4a$1DG3|8M^_ z{}-slWO(pr?X{onpXCew^?&}a_jCX6_xq(c?|qCI^@Mt*;ayn$Jvk_cfnmX}to_?N z!F@6YhFA6-`~NXBB>e6F$9@9btYnz^dM#|!KKlRFy0`D|{d@lR?_=S&_4i8OMqd1P z^GE+3|BvGTCx7fOtBYC-E>M0}e)%R18WFf({ii(c|NM9U+ixrXOFkc1`}hCsZ|nR1 zzxd~3YxMqa)LehR{c)f7|EV|nzy8GjSN6~9Kkxt1z5mz#Kl{u6J}!KJ{M`TS_5a<k zKVN=6-tO%3&7W`f{e6G(_58m7uWE`Of4%>v{^IAKIeQkx$N!su`~TV<|0jO>|Ki{K z%Hy9OpZXiW?Q6?t|L60s{V%=$f70521;4*m|3Clt-}67mf4sl-fA@3yuQA}7%l_;B z>i6ayCI9mOfQtQing3_&|GWO)8vi?c`~J&+^#8R#e*gQtqDgYdzr#0t_W%3%{a@UF zP=T`e|JI+sy`EqHwExHMdT_I`+rHti{V#dYI6P$11FgNlu;K9Mb$|aazQ6v#uZ`>f zf8PA_*U`Fu73bgczu*7=cTf87`=8H!1&t6a|JD=tfA)`lo8>=__x<mC?SAV2owNUs z%)TtBUG>ENxBTz>dDrD5|G$6nfAjD4Q<Jwn{^$Sq;-Br>c2}SMe+L_U4}*`fT#>(0 zzti^rotXMS{r?gFAOCUxcl;OsPygSA|5#t;gE}v7UfF+}|82?<yZ@>A|90Q}Kj%O5 zA3gi~b^HIk+kgM=y%(S7|M=c#A7Ynp{Et!LU)6&zf7buwyzu$Y!GGsLedqt{K8F7< z|Mz&~@!h{(zxX`&-yWau-|9bqKfn9izyEK4r_~A1_pjgo>Gzs_JLjvfuebWQ`t!-& z>-C%eyPki3)&9T2|9;T0|Nn}A-~Y;Ae>R!t@Bg&l{@0Dy{D1oY#MkMUU(dh1-oE-z z+4uj#fAdrR7FPXF|8rdK|4r1+wD{wiqO!kRfBk+1=}+6e2lWE3*S+0;)$ODB|CK*} z)(Ap7(=S1t>HDw2a}Hnjn-Q!PjGkNX|6la&U)TO0&0p7l<Y$Pz&Rq9j^gvy~(bv|0 ztLv|R`v391{O&)$m6!jX|1tmX@_+09g`57X`ycpwt9{;Y<$3>q{GD(0T7Ccj;ve7Z z|NPtfXa9$JYtAh{FKzw*fB5h4<Nqsv?~_+{{y+Wyn*VG67hgNQrhe=FU-y4p|G)J< zxO1HTXEta+1vI$9xbOadm+JZ}Z(e`@r~h$(Wv#;de_Mb3{?EAK|7wf>zyGK!{9pZl z#sALw?eL0$;o`ITZ(gs@`Fa0)z4ib0;J;VD|7T>__g}O@`nUdb`)BpP>pzD72aSKg z8?g=b75oaIa$*I%gvCAm(6D=6`P=*bcK6@j_j-A+uB!j%^SQ5^?|=DkzrMceOjrH; zANKF>{jvWv=a&&f!vEEO75+~!th@Q>rs4n9|0OrSs()3_@XYCV{f@2ww*1@v|NNEz zYyLa_V?Pj+mdBKB`O_aX!^ObxX8&8zC?~9m$ndrP=l`@n?*IS4`fk7L-?P`h{~f>f zc7N@8P&fAX@0;&8M+yG-GQ2ytK5zfC+kfAe{o7tQ`Tx`UH}-eyU)TTKAN_aXqhH~F zvlIS4{Jp=Y{&{`w=lJix*25-cmtmijeT6wGd-3Bh(8%by__Our{y+Wi|MS(6um1D* zulnCv|9o^(c63s9bW(P7QkG_uvK#(y`!8CL7&W-^|LOnPALal4Uw!}oi(j+XzyB>C zz5V|;+yBe{|9|^FegF9^*FV}vOUnQ4{5vcE`~KTM@Bi}sH~s&{|0Vy|{(t&E?`wP4 z>-ewh8^5-{|8Mkf?*FZ4>+ina|E(TWM!%|`c`bh8ts8s)rTm>={dfJp#eZ+zU;Vf4 z|H|@z;`N{HU)4YOGymMr^Z%BA|LK1GHK;XZU2po|^8fVz_D@#}U$?LQx9Xqzzq#lC zul?Us|8e_2c7`jU!48Ii|BMd**e5+*opgWugtdPk>Hl*$|A(F7S^Q^nhHv%n_W$Sv z%>li(e-v;0@7DUib3cc-e~VuHrSI&S?<-$MU$g(T|4;s(o!dXn{|aIx{{>AqMEsZd z|4ZT-XtMYC5B3fJC)ytc%^)+pu76$50GiCb|8w^b>Hm-T9j5>3|F`^qBWO$oG!+7A zPlLvAea~BetN8l){J-D+_3QsmSpMJU{r>pF=6~-?bO`^y`Dgp@um8jAXTPjpd|ux6 z|NMFX&!lfGI*?=cH|@{;bN^Q#|9|H7<^PR-um8_}-I@nlRq%4p|M35zh>7ul|Gm|J zxt`0P`;XiMxmxdb?*CVCxPYo(bbKQF>-&j4cJW*9FFtvVMl~(e&a|4U`bRIn+s~`p zpYr{i^OAp`pFdx`|K<N<4s(8-f42Yb`v3cX-F|ice}B#Vs4aiqf9Bs?eBkB#|J@V* z*ZyZu_$$6%uCQuvQ0-stWA<~u|9`drRs9OkN&}GTul5(NkAL{*@K5_s{r~!Zp8u2n z=k@=szs{fdxgRui3{nEae-1zIJZgXW>!PpMukKf8f(bKxc=@;U-ha)1Qy=f&z4zXK z?%L1$K`XRYfSNx0f5|g6d|mOi{@L&RzxjXrYZU%VgE}+`|M?3}|7Xq$%Q+4JBBwK_ diff --git a/client/resources/hardnested_tables/bitflip_1_092_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_092_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..917b8cc2f2aa99f9d5c773b442269cb003fda5d0 GIT binary patch literal 3608 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_092_states.bin.z b/client/resources/hardnested_tables/bitflip_1_092_states.bin.z deleted file mode 100644 index 6147f3fdd26022dcea56e7f8bbdf4cbbc4996552..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27596 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 V16_#__*?#8z00%z>`tY7iUA}AmTdq4 diff --git a/client/resources/hardnested_tables/bitflip_1_096_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_096_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f5b0d1e39fb2caae038e5db32b499c989ae33a8a GIT binary patch literal 2013 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 XBW9pEP4fSvcOJ{Rgjn^gt||ZkLj;`k literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_096_states.bin.z b/client/resources/hardnested_tables/bitflip_1_096_states.bin.z deleted file mode 100644 index 575a383144e15b05c19e402bb9a6d2301d3ce447..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14356 zcmb=p_4clJ(d%8)6fQ^wp51(GNt=br*Bc2gJ3oagU!GR#;`}2wX}xHn^gcTg-iP}c zoBsd)|L6YyuV4Sm9>0ElTkYTNe^>9#{r!9Y+P(EJzh2V+d-HProhAFzf9<c|_h<V5 ziMRJZK5_TodB6I%fBP4&`;+d!|JV9|>DvD<<^TKq_t*1J0iV8KpSJ$iZ~J)t|EGWN zfBx}6q4ezk7ca#}|C?{0zyG-I|Kk_;|I3el^RGVbcX;*xTlMSzU;lSL?|=5K`_EsW z{r~0vulk?*|BwFP`v2?W`Qcx`zxh@E^Zmc;yY_$mzxDS1{b&5=-`>3WU+wK%TlcTG z`~T+GW3%$VuXn87{I7i4|M^?&mwvDRw`cR~{^&QK#Ml0{?`~gPxA({S`_J`t_x<;H z`~T*j_ZE+8>y_8X7yirtd-+HFFMIj=t9}2Kd+W0<+yDNz^|Su(|3%0DU-^IM^?k|P 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 F0|4E`z9Rqt diff --git a/client/resources/hardnested_tables/bitflip_1_098_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_098_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..648c9f2b9307f5c3d0d1f83b1c0ad8b7b1f05155 GIT binary patch literal 1255 zcmZ>Y%CIzaj8qGbth9f8m(eQV&)*l^s~S2Ma4>K<FmP}zUa@GA0s})20}BI##{-`I z3`l^nXI2W&EJ-%E8G>y_nG=jMQY57k+$2seb2zzhLP}<%M6%jUX0<lQiOX0L5lS09 zJr#NV9Yp?2xhd?v%=71eMghK-rDXy<nu&plA@epYujm%FW11mqs4ZZ@*)1$mpeD-W zrpDuOq##W5V4{VXIM-1f9)lS^KF*?@5eJeE9Tx05?lk3%kdMd=(J;o=kRwywSF97+ zeN>#KU`L3IMm76}KE9(#OJ5j7%rNZQkd)ZREn3cD)3CSI<3Ug#*UAJP&yJ*xqOx6w zcC$Rt>}GlBBUF8uyVXEXd`1QPjN0b!dJoopn)obyO>k>4SA<W*n$T{cd92NB%&m!j z68g%|YR@G9<2T+j_lXT-SAS#Ep5`Cc{R^vPWx3xaHy@}v|Ki0P+XM3yABlg973X+x z%pmD#{{qoNqMcetc{CM{Hq<ZR36XG`(UWK}BaEB1(?GnC&9Jp=;R}(eheCN+6GbaU z4@wAjtl>Ct<WN##L}Qz(p<zVAVTp(}ZmOLP2aZTgTBFR_wTxR-qKzlQ<7me*2_K2X zHXR?s#5N6s!@?3i-Vz5}BQ`8<T4KSlT4=+PjaoarW@tAzCG#Y$Jg{N4VAG5#UqpRG zVjr#S^a<W^w6)FP(4k|3pDkjT#grx1$z6JI<apA-ioQp4L=HBUBv~0G9ZgE?iQyLB zkXR-$mp>wowIJYuGiTR^q+r1tvW*=NyAD0D;1fLbKt@OVMTA6^_?9326HDS$Kj|B{ z-q_2%sH)Y*^^+RY_xa5&(<gQ|HZw~khTgBPh?STh{L230lkmcFuKCQj;x-(8Yh`#Z zR^0WowfxCL@9f!c)ID$5E&kxAQ2fS9Zt)u%6HDA4nl?)uZEfvly)Z|I#~?2GLUsF! zD!xbWdBh|Rw()f~)jPHp>~T8uUSh+0{m$y6AH|Q<x}QjVCH}_7<2&nnt;*Jm5vziJ zcZJ3tS}j!D{V4pCM4QH;T_SG;4MG<G(D4aOVr+RYvR{7wbte(Uzb)=Bma(jCICSKY z$HByo8EX>TBqTaHJAFJmjwU8`9XJ%sEVP)J&0u4gW^07R42h|Y-D0X;Y>M3?%eZFD zm~!Nh#D;`J5z|!L)HJ)<xET(!F|!=m(8lB0anP`{nI$o4!wemrh{T?R!vaZ%BqEYl zb|oD;lGtO|Et0g+ATczewM9ppNBnuqf`?oQQ@acj4HjNl#AKnW{lzOu;n2!f&8BXq zmZTYK+G1kD%sh!K2b&HWCbM=%9F{N?X_jE^^bv7Wn#R}}s-v|`WYr<Y3oABw8nh%N z9c&g&I-0a$gBwpon6iXUlpAj_n@%!MV#C31iHM|w9b$^!Et*}Ec|yCnk`5g**ytv) z;X!MnW@o2CqG-X!u7?E+bPQU%1-rR<BG#xJ7L#Z?#$#yMleCz}nVT!&VA9dXZecN< zU^cB8>puv$s>X^OI@sCS7^B_PQy>)XAR)4vl~1_IN=&mWM)T0BT@o85LJl33NQy{o z;|V!3-I*yVVxzXuE|sIoixOo-C8j$a0fmT|z(dC7#WJdfJRv?|icLq7!h~iVNYY_V oI<g^A%z#^>nJ1V{;IK%6p>}J>!N%tQ-8+@$Xn5Gn|M;!}0NGsmw*UYD literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_098_states.bin.z b/client/resources/hardnested_tables/bitflip_1_098_states.bin.z deleted file mode 100644 index dee21c52a5ea886158cfdc76e21f9a01341629eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15035 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 diff --git a/client/resources/hardnested_tables/bitflip_1_09a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_09a_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..261c672decd1c0af1edca2bec1d7856ed299c23e GIT binary patch literal 2287 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_09a_states.bin.z b/client/resources/hardnested_tables/bitflip_1_09a_states.bin.z deleted file mode 100644 index c4d76b453de4d148fe96326bab772f248ad21862..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17264 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 diff --git a/client/resources/hardnested_tables/bitflip_1_09e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_09e_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..bddf5c91fbf6453d992e5e485f396dea0d410a7e GIT binary patch literal 1236 zcmZ>Y%CIzaj8qGbv=NF8XJEZu|Nr;oou3)^iq35iWjx3%z$no$kx|f5KtMiGK-7UD z^o+y<j{giWP`FslO|XMa*s;Nvt#Pti&rBW#!(%-&CEOGweAyUHq}Y6B8KoFB9G5am zNt9?vG?8GrkRfT5adN^TW|@qW6I+rPTP`FBJ1$5$xmeAag9nRo20=kC9LuhJS@=+W z<twvg!fp*o85h`>WNtKAzVh2julZ(LE9^d1X+GnB7`|(6_o5B+73TMpI4{~gy{TY5 z%gKMOhr64Fe;;p{JM}`%Yi@&NZ5_#!W6DR2&hN9BSr`-XPW?!jPGl^9WWbN(dx9Q? z>`i#LOwI4rgXO|nJ1i^&+n75)@${+Lioc8x`g`)Veb8U_Np(NvGT-{lG}vWmE3EZx z{={#Ff8A3)>dZKqnpn|aD?c@&N?TUaZaMdz!uKnm)Nt!qtg%?VOMmX0O8b+Sm#>*# z6w&@be(ulnEp_Sl;_tkicll!S*@8pg=O6ih`H#H!zw<xs*edyrxz#^tJ+gHREBTjx z<nc$l?d6R&-aAfr9&WbS+-#>b{h?-^qJPHxo})?0n*CobPB$KUqkhCqGb!|e$f-5S zI&0e8#P4h0G1%|<t505H@)a5P6RG+l$GHx6HWr-LNjX~CQ)no$X2wiIqokA#Da(wE zzNw2OPI#Cq*Ach1T)1PGY~OQnG3}qhjrCnSN+ewmoSfXev@phRvfwZNf<LM^Q>R57 z)+&$m?iQEmN%<<HC&y;RC#U9p;>eq%)I0Xc2XD-seBk8a&3b2Ir%9YFobH~yv#+PS z<<XmRKiR&SGkuOr8g?d~c(cJ`-7%4a^H`4_@#9(EeDO}nd0~rV@_**eQ+GNR+ws}j zLfBxBTlmcOQ@i|Uq@R1UxPMLk!w2&lkIQeI-tgw@yvEBnUR2#Xdh~9&!THR)2kW-p zcxSy^uP61=KE_Xd+TZ879y(NgYJK3N80Sr=Z>7d<*6R<J`+ZVf^rxFlcv02WOOH~g zoY~ynH|b-%(MRjKlhvCF)@cj=4(C%(?VEnbV)x7lTgfM778|E8`Vgb9-tnkn&8Po; z8gF*<i~hPV_3l%=(dYO#znAZrKjC=l1Do&*=cA49ito_VUiw8we8r1ezSB>u)KBeO zy!%Y;(Ki<1Gj`efP3~@9de|!T!{q)a5;2B$%r|V8@v}Zjz5LlC-0;iJqn|f-e$zKC zOiX@LclEP;z_;a>zMr#+zfm8x_tICTV|Idv7hdF()Gtl^aZ~ZT=cPxxdk*XD(v$jr ztKiK`yQ9CSC-X0Tuq*XN!5;RBPu`V9yxEj`^l10OIVmrWyg4pYP*T`uyqtL#=hrN+ z{<T_OrjFciE`^5Hu3W9_wN(3UP_U7AU^}13Qf<#p&oFi&)oEU?(?mAb?mV*Uw1Upj z&}kt{XPl6XNcCE+8s?hXG9%KkE16}Qu$WHIvS5iYHdD!vqlvnn$r6*bQni(4M(`XB zR#t4<7~0l3S($BWSjL*HU}a@t#%Ym>$y!&Zt~j-tTWhnD(TOu*5y?tMr#5ZUNtzbX zIxW<&XVc1L!<N%p#wu-*!a57iY&vB)<xHqCPpY!PW|qXJ&6>$<5j;kbi8DQp1<njM gj7Zg%3^^m2Xsm1?Cc)bNzk8?B91RaSPQBF)05}RkWB>pF literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_09e_states.bin.z b/client/resources/hardnested_tables/bitflip_1_09e_states.bin.z deleted file mode 100644 index dd57c590eaad1ca7d50b45674b23f2cebeefe374..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8388 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0a0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0a0_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fe09d19cb3fef2a5e9d30bf4b82242deb4a9636e GIT binary patch literal 1303 zcmZ>Y%CIzaj8qGb%<C|gXR>I$n|x70fPsTSfWd)5)PaGag@J*gLE{0te65$tO4Xp1 zjv*p}O0!aul9EI&D+>z?ESo7YV@9jVi6cjj2nS7>B^|h|At<PERTZ!E-vC$syFpCx zs{+JNhH<k^y0AuM%34j=Nt_cUgSb6I6BeavT!>m47Sxo|*r2TFE#eutU_-FhtUzA1 zNzI;J8V6T#E1YUg)mAuR>X2$OZCaGC$1INwT~}Yt2(LBGTs{jkdb|U+xHT=CnYoHv z>%_!~&Kj#Vjjrl?8l=qBndYry6q#g@GAn4yifJyHT5CCdT)aI3vy7y)LsKRit>y?0 zkYt-MquH@5RHBimL279jYr~eQh9RPv9ATk~Q61W%j$ukpn^sNL30iT9Rk^|QYoq!c zPE(N=8p}k(RHiN1G9l!snAfyWBhQfaUJE@gGFf)%1STyx)GZR_l_}+G#v8iiQf6Zg zmxP4MZyrCPOYNGgHeC&ri7=VT=FKK_BKXdVE8&8YN;`U5%U0E?PQO@~deT;P`if5? zpVb6gH9t)?WO*5KRp3NV$0@OiCV`74nurSR5p@jn5S+BsO=+rriKw&7gvnc`hJ_j| zxg?S)%q8ZylB-NJBsI8|`^f5$#go*U6|OpVBt_~h)7G4tbTMOVShpC*nyA34xj&Yx z>0LEwRxDpMXGPemxznAOo+#DX<;|b6#pJ!IrShH`*3E}jR8CegTA!#UXw~dEAyaFM zgveW!M0TzVnVs$pU&I{`tZTe7kFiuGQ|n8|D!cknmieJUq78~!3Ts6=ey{L|-z20s zMJuGAlV!42m%<?j^`xn8tqeyvlDxL)C~XQlrLiT#C(>!tEH8s)3ln`bS4DNRbtRb0 z$~0BuRbyMRa=}&IphG+>wx|hha{lE#Vd{xQpROKHBWDl2P_HDP6>C%u`FQ?^B-y2G zPvRMKibE1XNmc-yTpK`%mCf!K*Fuk_Tnt>=A_o}Yh;wBSgA}W(hSa=ei;K0C<T--o zdtEhJE4Jh!r&~z3#$+ucRUeP66*D}SnmTiGcJi!n)0)<*)T=pR%d!=r-9n+=4n3<w zmT7GWI<zsgYpsXbqKk_zn`9|#hPih7thmUw;Lx;5iBUb>TnD{PXJ}5G>a6AFW$GOf z)j2gO>1emn#x%Fk&V^AzvqU?2M7DDJ1Wa3|Hg(mJki)7$Crk`QS0t_!Nm?Qqs_i17 z%Q|V9lWN9_Fjmo(LYoA&RRtqfYFz0u)zEmrRXNqRWo3($tD#s>%a)ZZ)m*2ztiHst zSV-`sx1vewgsq-kN4rC_va+2PvvJkK$oN?g;N6&SO{Xe-;a&{ZbfC%qMqXuDXr zEvgWIYx>hNyX&`aZQQ}?Wx^csDG@8JTo<{8q`G-!xpk&2iew4=sTE}E<*X5s#MPhS zvPNlAEGMsO%dAOK6I+&rE)hPcDJjmWA7T=C%5AmQg&sF;Z8e>lCMPHJ%*s&qSy_{E z%~B$Cs*Ts2mV`aA$IAt8T`#%#Y)1Ck<r<%TY}%K&?@HzAJ2b=dYSfz5L1C+zDwZUM zbBC@8_+rPs@L()^$QSXDUax&xuJTU;=3aG`VhI+SIBCWD8w>QeENE7B()hGA$fs3A zBE+deRXJ3PC!|?WB2~0A!eh&(nF-T;JrYfp33D#GwBf1`uWweS!IguHCWkJ%m>9-6 qF{9V3SX^l7ku{4&dZr{vIz7<rN(pT>Sf+XCoyT%6A%3O{J_-N{h582o literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0a0_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0a0_states.bin.z deleted file mode 100644 index 32880a5cd5d1204fdc347982692afdc30a34eb3c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15177 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0a2_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0a2_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..8aa9c25424b23905035281b997996390c11fdba6 GIT binary patch literal 7248 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 IJli1!0Icu4Pyhe` literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0a2_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0a2_states.bin.z deleted file mode 100644 index 25d53d5f62e264caae4631add5ec72e8f3739c16..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32901 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0a6_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0a6_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..aa6ec2408583ef23ee00150ebf0b2f9143fe6f47 GIT binary patch literal 2013 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 HpZ);=W!ziM literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0a6_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0a6_states.bin.z deleted file mode 100644 index ca1f5f93e12837994483cf6bdc6b365f23f73ee0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 17054 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0a8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0a8_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..6d8970c2e61e9921d84a83088563daa592586a06 GIT binary patch literal 6270 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�t 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0a8_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0a8_states.bin.z deleted file mode 100644 index c7d501ca457ecf90074fd48bf46cb2a2f7acdec7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27841 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 Yy8lHV_rLjrap{V1+<*Cxds3$Y0KkPSc>n+a diff --git a/client/resources/hardnested_tables/bitflip_1_0aa_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0aa_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..e238085533decf38dc99ee561e6470a9776fe466 GIT binary patch literal 8940 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 R_W$&rbQLUAIQ+nW7XS!5g1Z0! literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0aa_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0aa_states.bin.z deleted file mode 100644 index 5c194d179bd4c0fd1ff9b4c289beb63399c5ce6c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 37384 zcmb=p^>%LTtk*g`Gj=y@p0T+(@{~?u+2y09oO@4Ry>qtZo5@pSwFCnu?lsdZKcxt< zpLTk|?%DDG=l=iK{}=q<{`cqWJLlVr`<MS-Ut9P8_rJ%_Ki1g%|5N+-+5P|jzTbYo zukQb!zrSkV|Nkib?fZ3k|N8ZBw<kYn|GU5L`-lB?#}BjDe~4%PfByaT-;a0ht*_hv z?(h2lumAJb{rD~SWBP;XAO3&0s{8kL*Z)87ZCm~Af5h*9_~Y%v{Qu7NFYLSj{Qh&# z?)Sg-zkk2qSLghr{@=TY?|;|-Y5Dv2>-F!q|Gsb8AM)?J?Eek_ufMPRv%l`|=fCFv z7nj@rk6-`x^Y8b+KGyTqasK~O+<Jb0EdT!Q-v|GH*zfv}z5beg;s1&`hhHoH+5K(% zzJJ~?pZ@rLeDnDq=QIAd-`{TYf9m7wtLr=RSN(tS+W2Mt%g^gA{=KMw@?YoEf3Kh2 z|M~ysM}nN!|6l%py!D@={~N#Ye<*z@{C|J*-}`d^HP_$o`}4o(XY{pr_fOly|9EQs zzux=*<dgoIKc~;{@BhE_<HcF^#;5B4{QpsZE%N`@iT|(t{r~-u{iFFO?BD#){uH0` z?Z3{qev$gzAD6z0|Ez!V|KR^8|05^YU;DfN$NvxiAO7F``v2?H|68B^KQHvZ_5a5I zo&O*IXRQB_{@?y*{G0#n|HA&(-}+s@<-2|4{r~mP_J;qdSNlExZ~dG9$^Yel|Bv`T z;eVd$zvjRFfBpZ=|6%{J{>gvKpY~$=-2R#WvwxAV`>+2m`+w*9=r8|&-gwad_W9$x z_9DNxzPt1P{QbSP65nqA|3B;b`@i?!zRrHw{`dR!zu&*h{ond=|Em30>i>LJtkyrd zU+Ay<@Bh*B_h0+3FS~!<<NKTbO*^$;=+E`+W>Ne98UO2l|5?4cenS0=df#8)r^E;S zU99`x`^Wssf2)u2|8xGQ`2W}C`%3?Ay}$L@zUKeu?dSfz@vPVUQ}h3A)sMS@f7Yk| zy<YrxW$ypzEB}o@{_pyf|MlZ`jsFq<&%XS>+w0%AEA~PE`G3j(1x1hjKTt5+ACUiZ zFkbs#@a+04!T-*S{NJebf1&-a`ZK?bW73b^U;ci()xYvj|C9e8{{LaW?tk-t_1Em5 z?BCK;zw`f^4=4XC|Jz^pXFvac!T<SJ_y0Y<pY>nh|Bc_&KkeWC=X%Hg$N!^4|Hl{q zdwTcr{~Pre<p0}$tp6kbfdAjN&-Kxd>~;VBkNo_9&GY|4|C9gQ|EvG@fAhcO|MtKC zOV+=skN*At<bTEg{J-b_vHvmukNqcb^dA1-{%?QzKlVTT{}2EF_T&Ec4?nkW=Gm5i z_<!*IslWHnpUCyc`ar$S^S1r5-~Tt(zuNx$`Iq!1E%Wc!tIw}j{h|6Nd!BvGJ>{BP z50)QaDrWa3e(pb`AGbcm|Nisw%IEmX*h&9yIsfx7|9Ac5=hsUgudn?V*HwT1LHH~E zz59>-x&G|G_SgB_{#=r)fBmWdEC1{G(;uFG+n@8VKeGPq^@NwDlCSNbe>pEdukdfO z=l_!*uS@^8KC}PpQ~Q7Rf9iky5BvH*@&Cd97w+r*-TJrRIBxs9`iSg5Gym^>te^hK zKIs4EZGS@#?SK07{GROJ|Fa*Z&%gij<15Abw4VQwoBm(?|D-<i*!uLC|IuCllm8q3 zJF@@nBmaN%-~PD%>t}uZ{^Q^Nm))(``}zOG|7gws{^tK@{;_}bU;B4``j`K)n)Rx` zmb?FH|5N|z|HuEYkJf+u@BR1xrmydxZ!bP)`MtvG`JCeZ<;C;wpR28_|7$m||M~p= z=RjrK<DV5)&+p9Nf6nsxoMNzKU0wZOtLJwfznoKi&UW6p+B)m+KmUIHU12wG{{8s< zV8gzHIjO(zC;gf4w)keQ?x%E<KSlF5{=0AY;q|rp3-Z6>Z-03$zrOGPp2zyD|Hr?s ze{pfk>;0etDD<EEzl#}L<o-RizWHCfFW&xV_1mADwIA>Q^<(k>Oyg7az0Z&TZ~wP_ z+5d(1UylFp|FeD0e~v#3f2zOvKU1dO^Iv%XpVyM#|3{zyp9)Gxy7B2C>gNA?aZtkg z#Q%H#ulvrg>hBl*xBp$g;y?fY;Q#ag{x|#n|MCCB|J(ncZ~O0m?mzGI`TimQW&a)j zw><|^dZ_<9{8QiTDagw2|KGU3`akQ-|G@v(%l_2={k32GwEe69_q_gX{HOT;u2IdK z`Zx8D{vY|@`Cs|J^b`B%`)7auAG!Sht&jC@?0?Ar68^vZV#c?q-T!yw|Fv2BOMmMR z>+84w+q?gDeO1ptxBm2%{|j&CU8#?*{*z%MwRT_Nf9vmmuATp%d9pt0-oNFbg!J-r z@c(+YpY8wi?f&1N`YC)-{gQw3U+jO$|2zI4l&|;mz5jn%{-xza`Tza%BmVDsJ*9uX z@h|PAlT$u?|E2$q`QHQnf6@Q8On=}1eB+<~r^`j^_4nJZk*MSRA5^dZ|M2UFpQnGw zZ~k9#>}&tG$KtnwF3A5nulRpk^;En0wO8-vm;PD$Y5)Bn*Z<qi`M-Yem-YYZ{w-hs z`+NWVd4J|N#UEOJ#lE(-y6%VkzwKxKKghrR@BQO?z3=j(^^*?eFaBTq%lmKr&mV`6 z`=9-hef$68KmDa&^S3^>|9`OmUh${zf6L|VP5(Z=zx>^L!~ee@+_(E*edzr6`|G}6 z{Ga^d`tQnhb#=Qx?T`KcZQ}m7U**@V|G(wseY1aG|9U@OZ~K4C+xR#3x4+5%tAAuK z^vnC>`o;GnfBb#H|L;M4`JcZ(_4Z9G`uX`^sC4|vqv?ON*G!+Z`v07|e~<rt{QBd+ z&_4H%>rMXHp84=+&W}GUcm23(Sd;l@wfNuY=l_4N&i#`;-~9XUy3gx-|4sk&|HH4z zU!T`!UfXY?{a@Ykzi;Hf?(_Ah=i7hy8eRSG!KttD)feP{w*NW&@A~om^Z!<!`?sI_ zU(l~)NE!P7>L31pkgCf0|LrUPKiL1_|9|^Q{p+9oU%-j=_Gk5_pZ%@>PyVC-Vm;@7 zx!>`(zW+b7<^TCd|E?F*)Xe#n@mKJ=>+6~S<M;os|9$7#{+j3ctAGA~{B3^ipDXYG z&rbet{QLin|L1?Te_g-y-<$sn|MCA`f3g0}fA@cn{~!F%{x|pM{|)~i)W67|{_o2F z&AI=3SK9|Y|G($>pZAadU$y)1DfK_I^Z(h9|C+7!C;#8u{I9?5f4r3a>&*JBBmX=8 zFaEE4yne-h_doK#&#(LI{%7{D|4;tk?5+PA`Ty(6|EmiB@qhil^1uH-`H%Il{=fe5 zKW){2{j2tue(?YN|Kxx6wg1y^)$9KJZ+!Lt@&D(4&cF8Pzx1){Kl0}nzkc}s&l<a3 zal8IMzA3)1xOP7OpM(GR{rDZ<^3}i3{{8<YKc2snxRzlDim|8rlWWc&wy&;#!T-1P z#roL)1*LzMey(5kEC1)O%)-B`YS(IO{+spn{)74-_pSa%AG^Qnul%+TyJh}-w|n^4 z`|tPkB{A&vyU+c4U#oKe_mi(zf4@)pa(&zX><{{9_utv^W?{?y_s4^a|7FjwH$MDl z`h)w<|JK(0<Nqc9Q-ALN<R|ar*p@#vdTkHNa=&gbwFjj)*Wc~0W7PlEd;hup$o}I` z)wjR(Z$Ejz^Pl_trO)?!JpDiG<No3=n#cd2>)T&!J3qeoU*_rWcHfp4@A~(@?8lG# zsx|*p9<M)HUwf_o=|}0^|1LkXzxiwa5A~1!Z~jmH6#we=@@r53zqo0C>->7#e^35T z{LlV>^8fVEf05tcKY|oo>;C&^{r`I6|Mi~#hyLIAf8&4E@A|O&|C#<h*l+c3*01>J zf8Jl~rT)pKRsLo9yKq0>-=$yoANs5Q``_<hUjKgG{FNR4u0C^R{ng-q-Ve85+yAwM z`~KfQ{67z0uK#a+^WXXj^+6x9KInh7uWJ3#vaPu9fAHt?_tWp!pZ}lu$NowE+n?*t z{x6?Yulu?F&X4!U%kBTY{8cXYRQ}uksy{RTaUcJ`@&EPs|6i@_bC3MY4*%3&`gggn z{p-*9vOn+Z|64En-}Rq!eeRDN^*8E&{9m}A?XTtkNuT8{|6hIg=lLJ`bN?Uyk>CCN z|APOyuj@1a?0o)n|E*8=fBoElqyB___NV@@_ceZRKKE~a=0ETA_orT}zx%oV_ltVo z-|~Ogp9VQ9=<oWC|F-M>kNE%c*Z*TD@7w+SpZ=x)%Kzqn?*AYEhm@K2|M)+!*ME@j z-Cy!Q*#GDHh5y%{u7A=0@BP#NE93jmJ^sJ>-Ty=X+W$YS|8xI=|DXML|3|#DH~YU- zwodx*`^)n|Rc+D#;+_8s|HSA26aJr%SzbMTZokStz4GsJ-~Zb_u74jdRsZ(q^4$MP z|8H*l|Kb1R|H}Wk|2^>k6EF2Y^P~QGmH)cWAg!X`@i+e;{KXHd#wOO^_+R!>{eSx( z`#1HU{y(Vy^#24n_WA$I|GIzfpZ*W|f9?NsKmKp~DEI&E+}APv>)ZE#j(fZK_0r$= z^J*VjU;qB|UGM(?t`+}I&OCqVr|RDQUw)oH+<$!im+)QoU*fy})jrHVRi61LeAa)N zZ69{u`Mm#orOoT#@6TtvpZH&E>VM-o_5bew{IdJ=>&wsUkM4hO_;1$p_eU$*&(C~x z{>mTiulMWsKd*oL^M3pP+n?pPe4Q`y|L@;)ssEq9`s<#ue^Y;L`?dA+x5o#sp8f4- zXq5ik_<C9U_dmbhti4`;>p6e+`TEzt{Abr)dwze`C;9*KpsKF?1H8qQ{=q)$(DuCl zUnT#S{eN!zZ2y`6)^h*KY+LuM{8R4zpLsjp^vCo+|5sWB>HP11WPj^lz2~1b$A85e z|8xH%|2N<AU$F51zNeu&=a)QQuls*3C`rD#RexmvL}>AK@_)5W>d*T1;d}r7|60AQ zzQ*>?{{DZ{*Z$vf{r{{#`>XzKJ`0NF@=yP>e*NEaJwEr}^7Z%QKFWXkfAatJxc{er z#!vgdUh@CZ|Mw5sFI=m8zJAZWfA{U}Kh{h2rtO{jm%ab_)eom@pZx2OeBfOFqQ3O> z_4)sPoV?C&75(2TzP_sT&wGP^FTWl??tiNOg7kl(KSKXXU!VW;i~V2wf8EdapZeVv zUwyIXqE)uq@A{)3Uu)L?{eEui-1y+z^`(Ep<?FxL=eqq||MAa{{}=vW`(pp4{ojxO z6aSyPdG|lhzqfz*|9pLz{p`P`dDj1<cIMi1r<YIpzx`>C?9u(NKK<`|==~_)_EG$- z-}Os=PM_y@{QUmd^#A_5|7O43rTX)K#i@HsK_RyEM`pkLpY}h_{}|)*|F1vu@A|fS zo%jFOM*eU4zy0Qa-Ph-LeGR|&@Bgo<H~+u<>zn)S|Hi+J|IeTJU-~*f_lNDZ|JR<* zFa56%iq#+g-~9To@-4pq=knb8gW%HY)i?DIjr@O(KKU>D!Tof7?hjC-L!thUMayru zb$jHZ&3C^3_-}ID-^0&8KNi1s{c{P=d+V$}(GTRme!m`nzy5FA@7J~aua&?2vHYF% zwXa$a-|s*Fm4E&7eg12i?e?FytzTDPWBbqMF{lME`t<&*$N8cEHvYTN`#<w|{hG)9 zfBXOb*RzlRtiERbJ-zz5w@=@H`_K5}{?fndOZSKT`#QJ&+{rKdOMlkK{)xB#*ZrUW z*Y|e$OZD>NJ?G^Q{5$;b@PGcl>zDsu^L6>PmGw(w>x)HdUO&!H{pbDnxV`+Q^5<V( z+k1bQ{OkYH$JdMhME~KpeciwO!SVG!e!Bnu?|$C?iTtnhW553Ee)3*bzvXE?=YQk# z^;dr!tUqD@ME*ndf$MeG=ly^9d;b2?Z_ihJ%x|o}V*kDN{MY#NUzczDn;-c9{E`3K zr}kexet*%Q<iF<2|G(Gzc{}*O$6xyw^<N-ey#F8n7ylFNb=$qE@L#uH%?tj&>+`m~ z<v+K7%Cq_3GH$)L2Q}7C{XbzZ)f=|>v&H|?cc28ezQ=w|&;M7C=U?Cd`xj63-0IeU z>zn6a|DRa@<$u<v_{Tp#{$Kci?MqM{{PDl?|LB+Je|8^W|99(y<^Sgr^`Js~{>0Du zQa=y>ysq|i|F@rCZ~aj}>R<imf&CNtPy9bt&-=gK=wG=+{hRvR-|YY7&;GymasPjQ zP`>}NKlCrCd-uWqU%gbX+rRg_|5W^+|3}~ZXZ(eDHv28y&rY$X{^$Q4?|<EYPs;!L zyZ`3PJ-;7$?tk0=oBxl4^c?#qpZ$9O#NX@hzh0g6|NOH5H~#w{{@?tc|5x-^NQol< z>vD$4Y~SC1(sO@m+x}l^`_K6LPye4kZoW3Ze(nFY-v5zX{%8KEH+g*hO8w%C8780V z!#eBlDgHA}|2O~8PkYd~!*o0Qui)W@%hUD?{Z)>xpY-2;_5bsie#!s0|M!2=-!nhw zfA9JK`{U>2r}OpQ|5yBZ;a~r2{ayPtQy={=`WpY}muC0@`M-Z|eOPG!WxiwGo_U|+ z?f?J#Sp4+s)sOL|f0nL~`xC$G|BC0JTIcj1{(o$5|IfZMf7+q;f4jcMPyM=n$G`0U zUyC<?xc~h7H%oQ<<oy*K|5xnaZ#VnT+s^;59{2xq{}-?Of9uorU%$%#lK;#9_w6N+ z%k~%4KYv`g=l^Ejx;yuGKK>W<<NeS02mXI%|Fiu0^m<$T{?hs9kEZ|mb9Y_-XJcJ^ z^9s|?`>*T|`{(`GKj`Or@&B)#|A+nj{_ob|>iPCdf8780`B~ll{C`Kk+`s?-b9Fv< z)~Wi;zwK7Pi+9)i{4f0Q`qTc8|DRm5KezN*{_S7-{`I*(<D2U<|A}6&zgU^6_#ag2 ze>8tI|Hl3=_S?>Tf17^g-~80S`bXn;{d;fz@8w6;|NY?Z|NhTkc5eT(`Q87c|J(ob z|DW&sKi>bh|E~Wo*8j4n|KIrk=6~n<Uzg|q{r{wX<A3>I(Wm}jyHjrz{O9zd|L^zz zDE~5V^Tgo&ucy|pN&G+g|M`FR-~Mm>-~Yq@=l`<D_BX)2HR1p2|MD&W&F`Oo{Nw4( zpH}PrTP^#4`|JOk{puh6hcrxVe`U|NU(9>||GU3FbCiF4f0<wVXYKj=mH#bU-oF>F zlaKG;uYYpA&|kOT|BEaB)O`8)|M>UQy}_Ats(b3Y|2v$jPk%SRs`uOdo_X~r?7!?! ztIzxsY4y+eWPR`F<KS%3|IheLJ@4=0Wk2<6Jzp;W_-g0B$*+)_GOPRdyZ$`>%m4cS z<+}CNujE($XaCy|?e>B4di())yASKH{FnMDpZlBpH~+84pz*Nn@BUwo`~N+rzITN^ z<Nw3|%b(SMNdG&r>HU8Gr^#IZVt@bMx#{ownBPCL50v{Q)gQ02+jFn@Px{vXb0^#W z4}E-n^ZswUkNuJV`bWF(e_VaruA<*}mi<5f_&$^U{r#^0mH(SQ{U7>C{QvzmzxL<- z>$m!UuIu0Nf6f1X{Qvl$QU1q)^#A*}{)vD6v;N5c3;#jY(whGt{vWRIvH!L`_Q#X| z6aKgV_5UaT$N!)F&w5zLX!CziQ|96S-=Fs9Km44ZJ~Qur+yD3bt8HHYdVk(yFW<ki zyZ_5||6Kie{yWpZUmqS@zN{CY*Z#zQ|9?Nb|K1<GKimI}dHA{g$NT@EJ|w?6f2iIj z`=RrH$(Q=A|NWl6{r$Hh>-2xYpP$ozE&s6p(=L_&rB{B$SN{9`ynGhF{r=0>AD_SU z(f{E2x%;Ody1(AL=<ngzAAd$${<Ck6U%CIwKdI00v;VKZQh)1{clDpOr|qxFuc_C4 z93S;x=H}_}1M++SZQA$G`c{2pa{bh&@5}!G`13sSy8W~-^IQJeKDj^RXZZgA;y?TU zv;UX>vi;Tn!~dH9FWevdEBm*6`kuVI{|&GIF#hizH~m=sl7H#Bzt^|apZ+|*^7^;` z(;wxp|3BBeH=O^cdGeq0lm7PqQ~&R6Txa|E*ZrVB^8b?mbk^T)_5TMN5t{R}UVryK zwSP0W{onrY$^W(U{+pNo`)vF9f5-pmkN?lT_`f^opVt@ven_wE@&D`H`yc(cpH~0y zf9}8kpMRyV`5XWE|8{ZEP(@jE_a8~#{ddyW{Qv3&s+Qw#KU-zLMF~`Ncm7}KetF%0 zw*QC!hy9fQ>Av`4)sN}#Q~s~FsQdfm{nqE_*MTaK{(sBQYWz2yCl6|+&idE>4>S(= z>3-2a<sauK)-%<}{+RUlzU{03XLtO+U-eJ__y3#!^M6`_sPq5ocmFy5Be_1h(f@D$ zxBv2M>u>yb{#*YFGHg@!4QbdW>HpUm^~Uf1xBuVxU-$ZdcDoOa`R1Tun>qiP|Mvd; zzv6%PrT^}K<8Ocb|MT^KKehipSN?BR{vT04;eQ@zxDhdEbNOR&_w)VHpi!IsbAQ-> zlmEm2xAXty43p}$ckAzLubUV4cWTt1xv$^;pTGE@(%1c^&*gi~oEQJQee1FN;)@wy zdw<>E`FwlbKY#Ckmp^^8|N8&ofA9J8fBiQ;VgIN8^Uwe5rhux8*!o5PFa8Hraew~* z_+MJ_-_-BD)x(TG-~V5p|L;ru=Ka&>$Awk>oHF_U#y>K=^<O?`A8!A5p<e9g!oN|n z|3#16&)L7;_VfRJ-`_udZToY7$$!D~pgMEfPx(K&xBplE|NPB*|Nl*Q|KAa+pLD2v z-Le0FU(Ns4`Sjs@+5ewDFR%Gz^yA#s3-Pc1Pd+BU<?H%w{{yZ6eU|_8;_mtR6YT%g ze%t^1hvlz(-|yGY|J8f$&-usmuL-*U_%8eZ^N0Rl^7qaC-z!&LeSO~Qr+TaYU)xXi zQ{qd%iZA)KpJl&E-KAgr*RI#!`r_Xo-}!Ip$NJ^}EC1@xtuOtWk32&2=;LDhzc2Ua z)W7tWs^`o${k=ct@AJja&wuS-fBe7q$H|A@i|(J)w|~mN#n0})cz%6ez1AQ5+P^2W zAIzTmfAXCF%g)q4`h34?jy=PF#s3rPzg&N}KDGWH>;KT>^1tt|12-QYz?&1kVE%{w zzW=t*`_J+3&HVKL|EJxbd2arlc>DSLL(a{=a_Yazf9_xM5AU<tFRQnyOVnK(`F(%P z=Ktw^f9uP>?{E8f{QUdeH-A7q;^P|+?@F@${NMa{U32`c^TDs;qwFKj|DT`y|EA3E z`ETF-PyWCE?N{d4^{anu{@?z~e($&X>+g@xOaE{GtN-u+6ZL<<g<RwpNIT@d-rtq~ z({KN~yw2X}{h$5&{>}UL)Bn;BfA2r}%YOM+|9SoAz3uD&89)9f|62Aq{o~ioU-!R$ zQ{VeT{$u@@{ZD`JfBoO_Kl%U7t^Ygfga6O}W54_3`b)pmx6Qx(>Hn)&{aJG$*=6#7 z_doN0{kQtJf99+I-e3Do{yG1%|M`E`*Z)hu#qa)K+4t*z+28+j{%4y0+h6JP{bT>} z&o8QeSlh4eUpM{T|B7#|?_=&iXRiOSU;p1f@#wFUE<OJ{U*!KC*~3yNkDsr<v;R+d z&-=<B>F@a=LkmCeU;5L2_2cw&|9AcPdh?_G^#A{U{{2;JVIP10=daM;uM0urGw;7{ z{`SH9$Mj$FSMN9de^~$ePrhXR>u>cp4!tk>aQ}D9cm1#T=T9t>{qxr9_5SY@Yu-=3 z9{zs+<csmQ|E)i`-{gPM<4x^Cb^GQ0&;Hau`+v$Y`?MMVh5l5Z*l+l_UhQA!KlgvH zPy8?ZRIcBAxo9SG3+UtgMSl;Mt`q*hU-e(^$N7IFk3GNMzwwW~cK!LU_P=79>ofmq zPyC;K?Ekro%VqvsTmL)vwWjXu&*i%Jf8UsY?&Yulw;w+K|8nEM$-Vp4{(p`9KlOP2 zn_vF3|EIjJe>DGy{l@>{r|LT&n;ZR(zx?lFUESM{>d-cf{pwHWch!r7nz(=J%l_5} z{a)|>Z-3e!@qfqv9shUz_W#Yl{)vBJ|9|!4^(+5xeTrZ8|MG|L2B%-EgNM2F*ZvoK zXMgfK|Lu43*VAWb{`WrpQ{49Hev!KDzt;ZSKiob4e}cWu-|zb;zx~hkQ=N4^+y9{d zi^DtoGpwKgus8kxr}o?5?|<Zv{dfL%ecu0Df9lnLUN`!Gy!U@y&G*Oi?fxHI^yl!u z@P7Nt^$&m8fBXOI_5MYF_P^L=_CErYnK#@0zc%sz-$(y%eT;u%|K)mH|KIk%?f>O} zWnY;8xjuLP|0TZl=l0M0`e%Ojx&O0X{&_C)Z|P_L>UsaKeE;M6{MGsYncwR@p3eXF zGhX%g&fI@jZ`+@+|MFkwx&5{y^Q-6mU#|OKci#W@zwLiE>wpGo=KZ(5{AYW`Khx*` z7yUQ=`QPu8|Em9{piZRxYx~&$_bq<jR{#IM=ikI%^%wrX0L^3l{|Fw;Nj?0Z^WOve z?tj-i{%72VOghbv{lCBT|NL*i_CNo%I`zNtAO8Q*;3m-IruX~vYyVySJzx5N(f`PY z&%ea4d4Bk{?eY4s-}bHldmv38v;SXf{)rw34Li&K7yIG<_xP>(C;s32^k3^|_y6~N zzxKb`zh>qBw7~z#{~f_D`B2|r|6}w2`%(YafBj?ss2=3L6ZO~XfBb)c6x^%(W)JE? zBtQm)?Lo7c4?*KN|J*^7Y@qSrcHNqPZ*?xez5U_;mGY<mej5ih){Fn>e}3n~_SgUH zKluMG`#<MlrN+a`qrdN;d>+qP$N7KObN>0?Ip&-Fcv-lzmH%(}^8Gyfw*8TxXkWjq z{?*U*d-P7$zg7Id^?d#RKYpJdJ}>`O1!{Y0{@D3>d(e;RzuK=q{=B{DPd(fIp!%18 zO`q*I`yapZ|CXoIzx{}wUcaV3;(t_|{`UW=pX<;3%HGfBz5aB>|F0AGZ~8mkcwN2D zOMA<IRgdf2e{SFR=Qy~5et*?Jd+>b6?WOy-{VzQB`r2Rq>|XoN`^*14_4(ues{Y!x z{a!z|+x(wdp8LPv_s^Tp*0yoBPtNyzwD<mI|7-pq{j)#5_Pnn522GnBoBv~b?4OhW zH_QHyvj6}7_4gb9?yviOUiH8H&wA~r|6e|{2NiJjssG>i{M)bnbiK>}FCG6U{P+K7 z|F3@U5B-1jEC0uD`}g-x**VMSa{kZf6u<je^6vBPo#)@LzkmGm$3LI1@3gO<TWurn z|9sBx&(|$Mb6sG`^Y7QkKc7==Gq?EM&f}MNp3i@7w|{?~{Q2XbKmUGx9c-8!h_gHA ze{>J1i4d(jP5=ESgVMe8|J*pey!^+de=lD@eBbvmzxn?Ae;4F`_2(qkF1=B9=DPf? zSL{c(E?M-x`)haD@%{XNuKe&kULXHo^PTYT^LuLlR>=L9@B4Oso5}nAA2uZYQ2pcm zckh4YJ#u!S<PrU>{`HT`8C%N!Uw-wip7Ve4ht!YzU(f#cQ+@Sg`}aStU#)ljf7#^e zf74Iq^8YvN`{(@s_O<^P?wkGn_+R+H=B4?sW9;YLfBSiVU;X(*?~ng4KYstYe_h@C z@7~Wo?SJ&=<hCCd|NZQHb@ob6{L23qpG*Dee-z)Je)hiMpQ1ln{P9x%CtZryiobR2 z{?2*l*IWMI@^tstzx-)W|EqlcKjmltFZt<D<fs4ePyDy}zw}S`f4x8BtABfE{m;Gy z8NSZ__IX>qo7Mln|K|R+eSJON^zY->A3x9EZZCH}?zR1ode?vbpWRbG$5;Q&k3=8f zUi$q0W6AmTb!Yw`|5J4DpV#}Z{(ldG2aw)=TR-Lh^)2-W<^Q~I-oNbM^=bcu{?2dP z-yRuf?^yq0z4QNqdcTPGr@r$)UA%s=$hE0lug|~zz5j*$we*_a!`b^!*41y1`@36W z|Bs)SuJ5n={^RS!|3N=~{`>fK?SA>yKj4My>E8dx{eAzQMGS~rny>nI<9dGX--D6o z>aRZdZ+&wAw4e5Qf4)E7E&o5F?#9&m8~<N@O#h`X^Z)q2`1-%$Q~ry`UVkPJ8|<|D zv_Jk2Xk6(}`@dTsHvZr6|HFUhdfs2z*Z)WD{Wo>Xzm;WwwR3+(ACIs8=l%D*Vom-0 z57p=6f4|@Uf9q@e=^y&%n;#2)^}ql9_TFIGKYxC_&z!KV`_6y;sr9P=U3=<({XG8j z|Lte-d;d27asHouegBjr^Ot^^@A+@}hxJqAZJ+Ev_UHIN=YNsY>eu{tyE(t~+kc<W z_WAkG-kzWLW%{A~pS9<|&JX#YedGU&`q+Q_C;yrJs=oK@{!&OU)ZFjix0C<v7sF;C zL6i8P=B(xa4!6aH|G1y;cc_11zpC)x_P3w)m;R1l>RbJn{r}<r(|*qXT%TzY_4KFm zoc~q-{!CqYzW%Lny~g+RN9)6m*Y|zgZ}s2*_P<xx=P%R#Z++ta!sq|**8Vkb|0mx2 z|H5Z|_w)8I`a!kN|NpDLJpbeVf&Ks1^Z%bfrwWpv|1bDw`pI5yb@S)fhpWDRto(NA z^L^8&^}PR<{+up7-FC_cPzUf_eeOT^e~SM%{C_*|KWLGI#eeDF^FP}^tltf4iF^T1 z+P|nj{R`X^t^f1iM5_1if7{Q=>F2?X#q*Qu&-|1B_CM=Q{nRV}r*GT#EBfnS@7Mmf zfBygV_5IEN+f)A5fBSzqBkg+qoBumc|2qHcU-qm28~)3~`hG9qeZR{YCbxa-{uNjM z$!GiRUG#5q$^ZG={_ju!lXLXP{L<g^-B$O<2mgPc2Odn`KJmZ%A8-5r{ty3zzuJH3 z|C9fU|1(zovw!<_`j<cHnUG2T>(Bpx`}1G&)&Ix;pa1bc{qg^oKmUJt_Qps3tNT0c z*YDRWe=^rRV2<bi_q=?~=54#Q3ja>|@jd*2{=@(8L#zJz{(tv+{}~4PU(Wv}pPYaG z{oBp&{BO1UkI&!#@V(g&_rIV8M*ojJtF7H&^>20G{`cbh+Do?{3V&6;_lG_E{+9Z8 zJA=;Gw(x`M*(ac(2Ep(B$1V573ERi*-T(D#yqEs*`}Xr{kJY>Vw*Ry5>Cg2t`{VvP z*98A{kDu@P-+O-j(U0!`mH($t{2zWQ{!cwP4t_a<tJbJb^{*b}fA@bH-`lwV{C|e} zNB0ld3)gcdtKNRT_=kVp-=}x#{%$@0-s|-JFF*Cae!9MM^QU;J`bnq$?|fAM{N;VE z|6U(#|DHekf6nBi|CfB$Us6Bg|Ic4C^Zwf|{sWo`axec|zW2{|P&ZPd{!RYw58uB% zK3%tB<NhVkbw@9M?SKEH{qM>D%K!QQssDfP^KZWF&-A<hyCFlDyZ`Nv`!>JiU*_@p zhv0PppaGei|NZ}o|Ng&lf9U`D-~P$J{p)}2`~Ufs??wO5Klv{mwCw1{|KtDccfaQU z^ndNq`VId<tCm2+QT>1JA3q;I|Mt`R*gxgV{^b9uzxFa;AHD?X{9OBo`}ODEFTDQm z_h;`#pNswG*H5yqPY(NW?fCsuf2RNHueVEiulh555ole}>(AE_L(oD0v=8>jfBfA4 z?SDUbFsfhe&pcWVKtKM^VE3VMz3BgyXYHkU<F)@KgXa9c*#8s%^Zy2D5<LI*|K9)e zzq0?-ufDqtIvU0Qd-8wxfA_OK{?C49|MCBvf4rqnzwPw>zx_%4-1hnJ?=Sj4@&Bw( z@yh@D|L3dyjW_?l-sb<Occ2!-i~j%ff7pL$<gdB?bHDCK`OH6=%l_EE{<;4MXlndl zIPyxPd{S2$eZOxzuk`Qz^B#NIu#7`JKd-?_$~aX0+t0^?e}I=BS!MkRJ^$aTvTkq5 zpRMQrdw={d`N!+;((l)2fZFRz|6QIIf9r96?7xlw68>gO{=f9=`H8rFO#fbdo&NRf z{BJ*>Lz-fof2&W}zx}*^;{PA@AO1Vmuf}MJ$rtz9f3AO0nh9x${YNy!H2;13b${oT zimwyujgS4;x%vM^{ippVkFOiA`>%WS|3iClOYFy!|2O;U&(8e+ebejgNAoj(*T44v zcmLJT`r_yI_l^Je|JW~zy(Omo?|<@7@qhQ9{kLCVf9%$O(|`5VkTPxS8hf|H`rjpA z*S}@npZAyj@529EegFTtef8t~@;|B1?XUg1UuE+4^MBBczSe)`{~0Dx{Qp1Aee+-R z`1<*O_I~?wbLz+V+CLZnZ;^bu|Jdip|DFFwU;ckV{@3IG?*C4I;-7o@Y(2}rBR`j4 zsh=ZLfAZh^@IOmM?5)=QSHJf^a#eijje6aa_HQ@-uRiwI{`t56r=RrO{NMiP&+k9` zYix~sf13CHN&mmv^XLA5|LP_GZ~XuN-Jj$C>YvDe`@iGYeWTy;xBpFiUw^gve)6A{ z|5dlzzbpSI{wF{E|L#(hqQTzs|LJr8XKwtb|EK?N{?32;|KvZg*Pr|U=#Tp9=k|{E z#sBP~D~ryT{h9x3|CRq+L7gGc0F~W0`)~Fi!Rv}9{?GkXuT#?tDh@8(_xdCMoBv<? zza#%MO=j)A_RjuYw7vi8f8M(P&VBv%|9oKm#9#NFpWiq7TA#5^`s@8`a`sZaZmaXJ z{6A;A|Lf=as892!ZU4XWKmY&uUw^LrpYQnZ;s4p^|CcZQGxY^@bh#bcvs!=n_x~^M zRen#7|9`B0&HlaB)5p(y{&~Grk^HmwU-$0@`yb8!r`f-K`ulOE&i~|}nn&-S&ga)| zi$Apg%Kg*-KUDqrqx$Fe1N(V}e;5D#(Yj6KOZ&g#6Z_xBEj^zeU-~^-wtnTG_vZh; z?&p90KU@Fr>izTozkL1g@8jj_|Cc|Q{z3DrfBgM<psHB+v;B|T+y4LlG5_>m_oMTd ze7OChe*V9p|M7PJK70%|{&(x!e~bUgv45lA{y1O%Ve$7le`^2VJ?`)O|Ht>0zq8N$ zxBIdE{Qr3$KL6eRy7tR|iC<sq=B=K8f8C$_>-%e;<X8V?fBo7%_t*B``r7}Oeq^7w z&;2d_`~0@Q?f>Wh=x_NK^yl@9a<Mx5U(NPE?#tHK@9SQ_H0Ix)`m4vni#|&J=X$;L z$t(Ni^Z)MvO*rmvc^~*ko420d*v4Mnu6~tXT`5nz)c;qm|F8Z0|1V4W|E=d||L(j0 zCwuY#rGM=A{7d=!Gk(@r{j;b3d!DNgp7#II=lh?Y^Vj^nHqU-X(ckNGUm)$3uOHv1 z*U#Jh|9#W`DgQugJwDj~sW<)K3~sT2W`NDUf_e#u|C{~1U-eJ<@6G?`|NZ~=$MfZ% z%jdvNm+V9PkN=zg?XSJ@+y9$){5O@6mtSrdRez-PV%4+%*WdrYZ@2xY{{5e~v;O_x z@i$%G{_F4m&u;ub1DZA2{4eou_Db;Lxx@dmzsUdo4=ZM(;l+&o*Z(=U>mR@Bzw*=m zz2X1gKkB!hub*_RKI&1u@zr{-hw-2Ge_!)|@x%YqkDaf&HDBtZ{iFXc>Q8@^fAwGR z|M7pDv;PbJU-r-bXMNe@_}XjrwXgOQHIC)|@4wGi@LcEetv|qPAn=W1CH|fK`225s z&3`+s+e~NmgJSIGdx`s>Kb*fO|I4{v_E+|G`xx2!mw)E3{1?5iE-Ge!R{U$PuKj6$ z&40-M+kWo<w2#~K{<rJ?(PRI=*T3R_(Eq=Zn%58BU$^;RwfxENc9peX|5;1^-TL;w z)F1E9`sRAo8V|q!{&;21|69-RpE3Ba`s4eAdhPk3RVe?wpZ}NmxqJG-%$;X`@&E1r z*Z!~UC8z@PzxeN=)%DK*_l5p%`{7?x=lT2JX|tcz>;7L%fB92C=;!{lKksE~Pkr3K z`SJUh^Utr(slWAUZ~xzybJqReFKhR2zT9j3n?JHY#n1m5U-{?Qy8l~#`fvNE{?GG| z@bCJif2RNXwX*c5ebu-AZ=bXK!NU;X#ne;lul?N(nTXl^`v2rx^|qh>n?BzE!Ty{5 zxBd72&A<A6e}nyx^?lfSS@oHJ*BAUhx$pnJeUtXrZToj?>hJidSMgt`{15uE_G`ZF z-9zQ}|DFGR_;UZh-?snSPv(p4k^1BPw?9tNZsFTGkN;o!^ZEPD@Ap5~OZ?~m8DIS` z`}6;~PvTGikvISM`{UjI`d$C#y8dkcyI!t-+5bZy>)-tUdcA({Ie+QGf48RoNsj%W zdHMXWKhf_0zIXr6K3+fZ|AlyIyKnNKHGwbIJJz4u|KyMRx%#cv|1JNwf3COqfBfA~ z`xo`Mf5l7HzpMPWe%qhzb^r9g$$vUO3pAI0>ff5p|I=svzx26$>6iHLf9~7;ia-3% z{r~Gv|K~mdb&A&f2hIM}@A|jD@Y8nxfBz-_Du4aI;Qz({ps6p&(jw+R2j%~`Ki0qd z|4Q(`>=*T~Kgs`E{J;8V{j2MXKmYi@=J);${~y->kpFM~L->FGcl&9-`_I;Aw%>RA z|NDzNs4BhlKjvM%%>V1N{~!4ujagp({MrBNd}Q4J%**?8|GfS^{aAeUzs%eFZ`5yl zYY*y)b^LF#{~`Q;`my?`Kc|gP)^{VCK=m8`9sYkFT#fCI{exqz_4dvGxxwq6qW|nq z+;hCX`nlEh$FCp0-xL1(Mb*oH{ps;P&V8-jSN-^Xz2Ln1qGy{+>O9};*Z%wb;qgc9 zzf<4w|GmDbKK{q7Pq9+}r#`a><(Kb&-q*^V|Ml;;@vZ77`@Nq2=XpN=f4SY?cYl6; z`5FK5eRa?NXFsbA?>#JD_QTlpzt`XI_uqrk!uN;&zx`p){i}YozW)ErWB+UZ26uy2 z^nP9Y_4V_&*RQ-<R$Djqn)mbT@yE|s*VUHY2epX~-}-!i*T2il=70UUeHm<QO7>6v zjrtGvU$%Sym;BQ|>%-dH^|i<L-~C_N|5N|-|GxJ9vHlPBJO6t;uD|syocEvV|9Y)H zk<<Sd|LEWLKVHcG^~QhKd;SalcmE&V_y5X~{mGT0r;T6!$Ua^F8r1gO{Z0O3{u5~N z_36Kyf8@XWuS4_y*Z-aOQa+yl|NF)NQ(xP^{kmW6|N43Vb3hHI|8xKBp9Si|h0p%~ z^7Zy`NGERV_5Vfxra%3keXRcD|Lq_AGqO*AmS4a9|M&C$poP_u`KkX8KCU$VQzXCh zf3g^OZtm`<ugmT0K7DOIcWwW<>+|De|6BLeSN;9?aq=hmFUR(?>~E>R`^$L$zsCO$ z>remb|FigFhN)HlmUFXC{);dCQ*|o-|K8%<=hv@%i<kX>^|<_B|Ji~6vTf}D*?-w@ z`j`LjLi>O9Pxcp=eYbC}xBkyuU;AU$&-!z{x9T^ZKkN1UsqEALxt7W9AJ^~tvp@OA zq#x1!Kc+wXC!hIm>GI1TKj&Y+`Tug>|EOJgp8xFUZ7K(cm}cFr$L#+>Q#c2%-~O+? z`Ty3p@~3~-XJ4~__&@hs{pnwu^ZriV{(pa6>bLr;`rz4r>vQT4{5SqofA?3kbX`Aa zBm%kjW#9Stdh)-_+wqXnYS&-Rng`7FhCl0B|6KeOFKzdw{h#p(d3(Nx`zC6yKYq>k zUDcldOTzzu`1$8Y>({R~vWI{7NrA_BL0#PV{SW_D-CzGT*6QEN-)*IPy?*?DU;Ov* z>z(g|UpJh8UwnT4Yx($o`|}q6xBjem{ki?ukLaoOYwSxN*Wdam|M~}L!SDXl=db_a ze7$=6>G<d0K9%qO@AD@=_P^&#{i*e}&*v8#{mqa47cc(*df)#?|C|5)ec1lx{&CjF zpV>D+hJpUSerccmcV+3T_{{6~Wmxb3`Vl?zf6)Jr=iA@hwfy_*ywIN||LR}<_$u>X z?7#E*Uyn6^eAKS{ck$o<i=X*_w*Q;C@n3!SpGmLebAQGk`hVtgylLGB`A_^m+5gCW z*m{5K^ZFnEp6Ac~YncUJNp-&Veldx=N9NSKEWWrdXU_jc+@QgN)w6SdH-FY&`g6JM ztZ%>g|F!>L`w6;q&E{PF-0DA7r|xS%=GO)-=YRh7{XV<HanIux{(t@8`Pcdz@_+Zw z`g6Ua4%Fe#{spRo|NKAkKkQfWKcx?i`^{?3{kJ?eA5>_kKlwA;?O(yat)4&E*VgSd z`|tVjvYh=7{-5oCnE$PM{(o)Hf7xU5zwdAR%m4p2XrvUfwx9oRekf#oz5oAwx5X3x z|JJj=_h0@0>7ak&U#1`Af7`UP$noa?!~d>d{wl10^MCyI|I3g6ET8sy|HFFFYLWSF zi#Ps1e(P8MlYg(j|5|n9|K^wW-~M0z@c+U8=6_*-Atg%tKNG35X_xK(M@IkiI$xjF z|Nl(szhJw%Z@<oN{kp&OalP2vdZ~Z%XMdP}y`Nzs)%$0D=%e}N9iYzC@`8W-KkGmI zUwYpEZ~deHKmKody58mgiEHzp{6GKd|K=_Kj{oofzdyyk_}_Ee$N%g8{E7Ja{Pab8 zIs0Fi=l{$8&Y!*X$NreV(|6RJ68+$AzuyeB&MSR_{QBpAuAkpu|0kxhw)9W9Z2imC z;{T_=vw!vTVf~N$M*o}lJO2K!_I3Hv4-5C_{S8n3tG(|3t;PRd==}Nqb8qdrljm>f z%N??R^?v<%wfgEu;B6Qa|A(Kh&;6NQ`?vj{`+w*9-Jp#a|Ml<O|5+jT{(nxh{P*&A zJNAqGtNthcL-_x)dcV4#TOVG}zx%xSqojTP_Sd)n_?$k^8+Z1P{@3+W|6lqsIpp8# zqyK+h*dO|D@BVKe?mhR{{8#>G&(8bbXV)A4{r>&`pL@5PW_^l}`oHkpzdP^bFW1Zb z+4U#?kNwWC{lzPP-rn}_^yT>If7c(x&#FKAHNGS+>cszBpYK=w>HVSpP5*EI+s~8! zs&4(C9{Jz<<Meg^fA`i`)xgJZY--=>{$KOE{^Nhp6ioW%|JN`7oBYoHV&DH;PwU^* zfBS!7{y)&Ve8}dpX`l9+exH9v<o~7@|9|WMlim9~=gF1#RZr!!Z~TAqfAjx-&_*)l zfBygW-~GW4>#%i#s)^^1pBMi5wC2yM?*CcG|G)k9f6e9jptS}6>R;sd|GV}4e8%DL z`>XARpL6`H{S_@=|N3+Mt9rhNzkj#fKYso3d+$%HUG`u6_g_ZNUcUCv|Bru*9*0Oh zmwSBwk^O{E_h<fI9=G_f`QqpDpZNc-zZox8KdtY-&!_mue+<FdV)1{T&+&)<&B^@d z9Ut^7b5GT}|4WdXGWTCS&JX;z@!#dI|1(eDpZClC)qltTi=o{<(2f#u(ArGxulwEp zxZnPF=pSfl&zoQW*Zu~rjkUcVul&mY!2b{b=l+!c6Is9H!SDCZKW8-6U;kIPF6Y1X zb-RC3ALdTJaew1H{`KEw{zty8f1Uzb;P~~;`oHT8|GV4%?|Qud`uv6K?$~XA`Tz5e z?FY_(&%gNpM7{6N`l)}8{x@I!Z~g55i_h)fyy*YN{|i9Noa!N?YWceVuUGw(|7Z_d z=lI0_wf&#}ALJkR|IHP*1I@32R(i4j2aO<s*Ajy|MsNOu7SsLszwgic=pTP>M=ra) z{o()L@8!<#0?o0lZw74|i{-8_{quQm!+yIz6@I_&w?0?=dH((W$>;wI{kinV-#+}u zAH{#a_uKrD_`Ugq{Q0OK7wX-9c|Y7AT=~1se%`H5^)CPZ%>1YM2R!2@Yx*yI-v56; z=RP}p{{5G)KQ@>A3I0(0{Qc4o-(OFP`TwD+=3iLfe_Z>^*k8w={xSWUz5BOMq95GX z?_ab2f8V$GYd7Lkf9}3(Z}-3Q+Sh*7zv>I?`G1<H{k!`9zbkZy$J$@;9Uiy-9hY1m z{k{H->Ay4oCthFrQGVtB$lL$4AKw4;C;i^mzyFv1xc$2RdC=pl&i~Fz{NJ4NfARm5 z|1b5#pWpFsyU73c{}T0&?w38B{6F0qwD$4->2>Qn>zBR#zt;X|{p#oc&(8f{a~`xV zI_%GW<6n@aEti%5fmav&`2Y3M`XB%MpT_^FpZ)*;o_~_r|F8e}|Mn<osN(LmP5&f# z!OM!a^8eZORsKu+zw2gyKj()ZufO+k`rQ8!uj^l5+;aYZ^Z$qSt065F+drqvH~kNn z*<bhR`>oIE;m7K~esuqTIc>^+sq_7you|J4o$Fup|Cj%%f7-sp&-}mO58>zYgZ>v5 z{ZakBKmOzNpg%8m{F`6#KYe9gXyX5^D*v|}|My<<`~Nw&|Lae-|Mchnr_b*{|Nr#$ zjLEb6CZFd2U9a}^|F7TwQ~w<Q_kZ_i`QQIREASt`sz3dvKKHl#zW<^8b^RZg|C@g0 z-;Vn~<3H@5`}h4d)K$(;{^(o(Pe1kx)O*_h^w<6$^#|ntSpM(+Jb%r+|15vc!q+9) z-v;fM3HpD1)1TzO&i{6&{s49CLA%I=|GWR&e)9ju52m1{l#cb<pf={{MzYb3WTP9& zP&bmTSO4U{*Y<zd=_#*cp8uM=-uu7XVc7cW>x=5={tY@cKj-~^tADHe>tp|}s`<MG zw8y@`4!TznKAv+OG@i5f%Ke=;A2|R2yVLZcrD<mD*MHV8e`LS94;{?Wv{?Cm>rZ{z z{T`>!Z~N2!=clppnR?EDtNZPL$^TrhiLvVX<NUuderM&MAG`Pe;~Vb%CG{Ub{pip2 zpPoNI@_hQ6WX(x`mMeEkygpI&Gdlk@XsPv0d-p%<=l%=&xxDsYaMeDK=l361zWZ18 zY5%!@C4Oo3ZDk*=*L?i&@&Ekz|I43eBQLF<dcFQ5WTffZ<NPD`8~fMZ{y*!veD-bo zpg+|&_Wydmf71VS>;LDiK-*+DYa_LOuK!oxI=||Lzwd8u@RFqX^8cKFU;5YEg8NVB z*YnE%a<13?_55}G(%0HYzwSTuR~<AN`0Ll|>+kDNUT<HuTW{%nk-F2R@3p({AFh<$ z7qowJU;WF_L;jz*K5||^XZg?ntbP4_P{nuV|1Hoe+V?8|!{qBh-S~L(f9B4AZd?7k z@qgR(`bodmr@vY~?bYU2pluk}+y4dqyq^E>>+1j6&Y;HP*2nu#)W3*7^xx*sjDH`0 zysc$K>>d03yuaqplk@x*)&ElO{!Eto@cP_(jk)qW^Xgwe&aVYcp_e}YKjqx~lc!Nu zYCk{!e`WK1(EbeepnulI|9^e1|MfH94ZJ-ge)E2le>$@NXFjRt`hV%qYt8=;L7N!* z|3wY;X4TJ+_utpM|3Clp&yD(G(Ds1e^$q+r4>te*f9~i0YoPVQ3;%<5cSQbw2yP32 zrbKa!6s7-%3_5>*T7Uo0^ZVzF?(XCLf4}~F#Wm16zAD*2Z+HEFAN6DP<N5Dd|9pLT zy!g_8JsbX$^>zQ}*8H3PVEVKAUpo&y=l^*B|I>%ZZ_ID~UvceF`#<AL@m&Asp1KW6 z(9`}ae|moYi~qy=r=_0%Ua$DL|I?rE=ii&i*VQdwe|-MZ$Mc)!Ti5Hi?vJ1TgwTQ} z`-uNh$M$deXSr$m`Ud-|zp1r<%eVaBbnKrNX!Fm<pXWD&mo<Ur()JsEUSIcL|C9WG ze$WvRSO2&F1swsg`^)uj_U9_@?)sm+?qmAD{yloV|2_Vmzx6Gi^Z&Hx_Mg|i{jY!Y ze%ycS=~C<EKII?#F<<q!{9pfn)6@P`9s9a}=@0uq$A1X_-^M-vkNxeB>n%V3k1MP7 z{bQW_KmYH^|IxPp^WXh>Uj6L9;Q#H9{?EM#nUk3>2ib9U{Qr9K`lJ8rb^agvfBVn> z=U>l9{N8`;f4=@d|HT(`wnpqb@@Zj7t;wH@&`f()?0QqzzVlb)fBkrQ6})Ba|Au|x z7WT#e+LixDdTSq)|NG~I{h$1q|JOeDUwrY_U;ov&|EvBve=z>+f3xtv7eyhnYbL%w z*X!1=UH|{W|7~CGzijud|MUMy{kNSw$A7lxK8}X(-F^S=NAcZPU&H5J*|z`of3@xZ zt<TM0)xAIG=j_72`(vigyz}q8NZrzZ?)7&5I!83mRcasYSE;}BBeegY&@b<&@l}65 z|J?ubx&1r&`2P9-SKN!d{ioXI{M~r}f6@2<Cxrd;5Bl#P`7ijtv*rJYT<|iZ<6r;h z+rN9Oy<c59fB*cg_Wf_`eSf=m)${-UUi)Xs<Ny2qf4%X~KJNdNH|alrZLa-$_3_Ww zYsx$S>hHGyV?XQv@u&TLZTFY&k42rYTlx2jbA8q==wQ;ezn=BKF4w!F7KZI#7apn# z-&bEzAMdWYMqBjSeCt>5*YDr=|JU93@2{<{7k?~ne}CrdpkJO3x5x0m&ToDHa1USn z%KM(j_kYoPs9t$Cpgw2X=Xlc}|NWqcb!_-w`ncZs$o{pD`~T)w|9$@ax|;m<pOg31 zh3%X6ZvEN+*S^NfgF<Ql&*}5xRsXy_RloPg{<1&fKl%T9|Crw{f7xDc|6YBD-~7M% z|J#4LzF>dZ-<4Ni$FIEy8a|r;Kj?ok$Nl^2f9&?j)vu5Jzq6&DuYZ2O-M{}o>UI`t z^%nPk%>O9=WsQB@uKHJ|x9W|n{we;y@c-6VebtZYFMpg@`5*ja`m=cdpZwrayD!&g z{g?Xo+~;%ruSu8uA73s0tA6#r)HnNI@zejq3itl6^Vj|NkN$^w`UrUZ$l`zN=lBKo zU*xY^{J;I}=XBd^{*#vF)`QL)N&WZyPrOubSmi&C=ll6={<|)I`j~(AoG-umZ$IY$ z{k#3|^P~Iq{w?C&@Bi<zwcqhC`<?z@Ke+yN|3C2){||pY?sixnoLaZMj9(S6|JJ_o z-+H_MLXd#@_kZe(^QG&GYu|phhs_4u_-Q|<zV}c6ajojQzmF?R&h0JvWBPMF+y6^{ zPWO6q`Ms(Jcc&lkI{Nv4*zx~-&-Ii37yncLlRy2x?qkqCoOVzzBob+qDe}&L`BR%7 z|2d!iY5%&@;K?`nhxgn6z5Sm4pZ|A#>8t<C&(DADyZ_S9(xrdxFMWQW^Bgp3JK=Br z>udkh|J(O&`}M2;uYK6{`b&TBmwqzeUw7c&e9(^m|BwNT_W$Q+{pSbI0AHzJcrn9l zwhCxB?Ad_-p5SFfbGQBfFKU1L#q7TMZ`b#)|6d#X=lrg}{)=Ug?qB)8{QVF6UboG+ zPyAQ@SGwh2=iBGmpZ@Dv{Ga-3{RjJ>^(X9StpY`x7ks^V@u&K^f7P$r8y|@WZ7E#- z^v8aef4@K4Pm{m>H~#Vd|8FIJRR7%HzJLDy2mJr0ef<BYuk_mM-D~Skz24j||8F1r zKhOaz|M&LIuiq_qy<U>tevQ5Gt@`!nqu=Jd;Q#x4LjC;vx6|+2pW**lQH6G%(filC ztsm%5{a<_B{>}fdyXF6{zkgxhx4(zJpMSq$+qG{$|CaxStUda*^V`;gho1Y^@<Vo| z{E7U3<nQA`zV*wKT+3hQ*Z!S;>Ga3%{ps^R&cFDNe}8`EKkeh|!~YB15BY!bditgR zm!8KL{<--7#Q(@A|EGQu2klwe1l_apZ-3d3r~i`Q%0GC0Nc~?u`|tg>|AOQ8%l`cT z^wah=`}>~cuLligt(X2k`K0{MAJga8%m4R&yx8=A+7$4N(3;KvUMqu!P2L}^KVlE+ zOJ0An|HPaBk#FQR|K0kq^tC={LwEE4lm9oXp|r}bpZ=G9_Wyj<f876*{|o;={-62Z zgY*CDKkdKqpa1XLU;np!|DW-`e$&4H|Ibvf|MB1Fn?2|Rh~uF7TJWJHUVqqs%l`%+ zXY}a*iT}k&>j$Es>j$>Im~UPG2y~p$6s!72>;A5{`ky0H^E~U^{~hmttnd9F`giHS z$MgAbR(t-N`ojL!|NFoGY=sUzPy1Tl|M`C3gZAgbRTd9F_ka7p{rrBb-|Roz|6N~F z@BdTvs{O4``&<6ce7-*mviozr{a@Wj>;JB^{eSqoef{e<;H8G3b3WSd%O3q7b*<j^ z`utnp_PhSI7yiFq1JXk5|9XGUzx}J9<on~8WZU}4e(O(n+o%71KFVu@XW5Rgu|Hgz z_NVq&-Rj5n>i_M(ff^{cKh;0}pZ?eRpZDn>(|@1m0`J{_ef<CL5Aq-XhyA@>4;~Ab z&#qVcUwyj1_lNzz{h?p~n?8@fXZx@JFFSY%?eYJN{~qL9|KG0q@A9Mn^G*MsullF| z(H^uNDgD3wYx{5iH~*ji@%X>(TmR4hBme3DhW{u3gQ8U#vPkSt{fqzA&+89>mp%3W zujQU!Z+$x9x7i>2udzG-|CU^NU_bMp<HdPDZkPU-|FOJocfDV|o7az@f6G7p3~!1* zwEx-9!_RFGE$6MPiphHD{Qv4p{pR($|F@o(_qY8&^}6cM^|nv`mpreZYqLMj>ff#B z@0b4g&QrJa-=*K#XX<nR?GO5&d0PMNNAQsd8~$zOiO>6g`q}>(U$58kPK%qq@n5mu z|342U!CTg3>i2%!fA~*y{J+Pb73%-<L;uTzH$=U?6o31_#pBY~|Jt`6oB#8^^}iyu zf68C&vv0?%{)wLV|IF@f|M#oaefv3AZoS;6bS$l(Z}N}*|J>I52VP9HcK-kGU#oNe z=U@N(eA55^Kl`VC`d{*SKKOj8P5;Z?pa<Pl9jQO@U;V%Q|NU`)#Q*QV@?Sste_fq5 z<n$uQ*+W0y-g*B0`uoQ}EB^g_eP{mubGGyPmlvP=`}6gj;&YbI!IICvUtbSCy~q-D zkkOsz+lxVG7xh1X{PXAEudl&JA%Quu+y3hwgN#-w)kD@N{YP4#wEy47S3k~M|J(HI z|JHx)a=yF&NrRR=KCOQu-|P1JVf?<yfA>H7@pbb4>+|e)8-Y8A^UW4x%yHD8{@H&( zepdaVfAdd%oc^T#>xupI3jgo_`X?Tgj_!Xd1yS?={x5%M|Lwo>{|*0F{<mH7@4N2z z|DgRv|3BD&1?`wC{%;T2Tc7je|C2xW3;z9d`FbC;2J!Sad+<7=NA`36Ck6j=uK!d2 z|9st&f9pN}%YUuUJ^ugt`v27%|1AFZe(e+a*Ycn4>mCMeM^XO=J^=00e#d{s|8`gY zpI`cGz3l(vpxui0;5A$8xBl+`eeL|^RsVy!_ZRQ|`@i@~{E~m)FZ|r@^H+Y>TerX4 zw;u0zTYT}A^w<5x=kx#mnLq8%@~3a>U;RJ)e>!OEbozw)AOD|y{trH#3OeTe5WLFs z<Nwzm{@MSXI8XTJ$NxV%zn<Ui_w$G4;{8EZo^18&|39*O!2j>T{-^%cKmS$8o&FzD z=k@XXr`w0S9!~$D|MmMP`#o}Y^_>6Be)Olu{LiqjTd2$Wcj14TPx-sUUw*zBe)n(K z@pvuJJiy=ghkyRR<^BKF`{(t)cGds?@$%$<%^#{YUVkrN-wxk*z3uIPyMND%{s(?k z*ZgDl>;CfnSN>1$x3BqgrDy-PzxL<;M}+?mgY2HORj<Ea|NUd|W&3}%ul`AW-p~K< z?dSdK;N#ik|Jt|J?VbPp)${Gz|8IZIm;ZS??*GAGzx-$a%Y7Vwf4|AUTc7=J|2z6` zbMF6#|JDB~FWfKk-|E-g*8BaS6PwD9-=F{fQMTrE`}gr%KTeIQIkx{$mFCW0=b`Q7 z|N0NBMgDsozJHkK{Q1uF^H+7p%O0M7Y=70o{iXl*@4t0y|F_EG{qN2H-+EE6`JaEi zePsQ=>1ltxH-D<1^!fgjr~7~W+5YDzbNv3T&-vHI{NKv{cVhhs`#1Hqe}3Pb|NPDW z-4FDaf>wZl%Fy_;|8Z=t^8lUU_J6-^eUR1vEuZaA{%`s>>%;qv|CiSOKkxJVzs|dQ z-s8uQuk61jUl_Y(-p~JEfB)ZpKKI}0@_*ZA{kPBifAhHi-+%ipzuAN4QvQRtoxD2# zPad>xTIw%o$({W_`9Jj+?oWd@ddgn<|FysU?f#Bm%BBC#SD*QB_b>kK=lM%M&Y$+< zzR%bBK|iL$Hqb5oxOv{U<!*oaf7t)JU-YN_SN)Oy8~=mP09pCp|KI$(Kf>pKji3K( zz0~vn0srTNjx`eezx?0+zW@2le*F*ntK9n^w54Q!+TZ$>f3HvaZy)@({tsx+obJE< ziF=O!|7f#I?%%oduaHk$IUxV%efR$Vt`YyA{P_IOzpMUTUt;gG$ItEG#s9ND_TA>s z=I`zQF2uM0yY-bn{CK?8|MXS=r>&nac76S=>$@gBS|9nJ7c`0bd4KAkwYUE#a_>KV zu>QU9z5Q3}>)lS3e%Stc&HsDupZ5C4#qa&^=T@Kldq1SDdRorw$KN^|)93rY{WJ%U zOxZrUe+qPj&cy$he%ibJdzV@erMLN?^Z&)*&Bu@btN#n$QorL|>7)PKkL=g|Cp<s? z(!T$jeE-dRUH>Jr>R)%rzx9&;t=;Dr{dxc9hxPT(KTV&{-&XTJx!!8|>;L)f{r{IA z|K)G?Z`Pmd>3_rJ_HTS`pZjm}+W(#PLjRBai`V?WbYERo?7#kbe;5D#bL%m9uQ#ZT z83r0I*ZT)P9`DVs|4Y8b_y4Is`vbH<vj6Y;?f=ui{?&iL|8Mo<^(+5xeY!v7|MG|L z6Q^DGzaanX^@aGT|JrxzH@)A#e*Kg6^VjY#d-`wsv|r)SJ#o<#?}=MipC0%x@&D@M z^Iz^S_#^+j{_ofL^`9@h&Dme3O2n=>eart7KgYj42R;i!{@nkK)&KZ^-QV_a`Z3Us zx7E7;*Utan4chUh_CMl(?<V`#Z~o7Gw*SkYSk1rJZU1lY|95@E|BL^3fi~)a`c$vM zXAaI^_dkEmpSP3$*Sn#g@$vXSL;VN#{}+FFf4BcS<-gRg`@8<M|9kO2?%(`hUtie# zvw!_h|4sc5&@pkm|Bn2>{kQ+=zvR#Hw;pc4_}>n+qWz!#cl+tT<&XdW`po|0e=&^m zD!T69;$OwnuGioCk}v)L*T1D7ug|N$^-cfV{9I61^Pl~r{SWy69r?fX<9xCIpL{;u zPlB|HHvgacSANa^5C1p+m;c%RH($K|Q~inmhySVn2Q8uR{{xQw5C0ebfBWV?Xea28 z`(pp|CEkC$e{bixuRp4OSiiq&hjcL5`+J~M!Jf~b^HXPT{H5RC^Z(oYsrchnzx22B z|E(|Xi|<=jGyPco(x2x+`Nj5s_59<T_x=CZ^G)vO`k<fohkri*Ki7Z1^?tkBf8l?A z%ROFS`7f@g{Kp*4e?DjT2mSy1y&AMXvi8S*+y9Qy|2;q6zhA%Xqka7UD~tXd{+C{x z{r6YpZ_};2GUvxH{d(!=*XtiY&x@abxBTz&+J76q{n@_m|CX2Owg1*?LVIZC?C=&- zJ=_1qYBjIF#n1nk|GoZR^1su6_CJ1@e?9nz_apmDKjv@y8`@ld^8frU<)feeYy4aM z_W$%F=d0HIH+@`x<p0J0(;nNKetaJhcl48w)xTSx?pMK%V3Ym{Ex!KjKOQ{o|M#k^ zxBtiQPycoN`r-e-U)10H<zM}G{mK8UpWEL)^I!R2z54(4%l`XU|GoOG{@1U!qW=~D z&;L{Z_UryR|5JbdpY<{R&wt%N!nbaH`g8pC+y8$*3xkdUxE6i0{zF9^@BTaP@BYtV z1udir-(K_gW&iw|zY8{hUH|#(^6=yT`5w=YtFQU9<PZDakNOAoAI5M0cV>M(XwkM2 zWYKo-Iq9{V)4-E>^FCd#e;;%Er|H(e;m2{#<h`GB_wV@!_s{)55HG(k?ce<3#oyxJ z6mPy%S?T_>KKk5^z(1??{=b*lr}FQb^1r1!|GUqsfBCZH&!5|+-~Mm8y?@%e=t=+k zm%oVxg;;#o{BN*xb-sT4e+o2<cl^`8`?J3K|EQn+_x`4TYohC)zWu*Ge&*l#_wHXw z`!9c6{=@&CKk?iDU2D6a3|g!c`TalQ#5M4l1Gm13{{fvKv_7w%N&d%yc%OgqjP+ao zTyNw5yYN5Hr{n$3JMy2LdcCo9@@~2J_Ajs6*Vx(DCDz*dAOEm#@iEYWsrB`Lzy7_R zzhnQs@7cA}`|4lqON?DF^zYwq&_MaS-&d?2eExms^YdTFuRlI-4BEC7ANX&r-M_G> z@~`>t{+M6(=QwE8{Ko(HpFW$`ANuv`?WgNI_x`#2&R+O`^!556&{)y^pU>y`{Ewdg z|N7DYTOaTL@qa;m{SU>z-wO}^_`~?d{*C>g{}=vO{W>32pEdVa_^q$z?gzKq{R?{r zJ+`*oZ~wo|EcPq^$6M9e9^ZfT|Ao!}D!A(Ybj`2d^1uGeALoAy>(kc!zpu1^$uIZl zf73tMfBqBR3q3AsKYPvF^0z<b_x=AFonGGuSzlFr|9i~;uQBymxBrWM{qOT<|Dr$9 zwSRO^*<Y(K{`G&|r2V#E(T`|*E`Kp&i?;Oh{Vxu+|GV)2Rod-;5B_*({>$uNw)Y>> zG_k2w|L6GUa{K3f`hM!i;Zr}>+x@HjyL<il4cB*uzxZ$Uqw=r(H~0VR)&8R&NwI(G zzd8FkY96fTo&UMM?<4r=IZ4a^%O={-sm~4impwmz{n`4UKU<DN4&rUt|LSMG_T&0? zP){%S|Kb1Je%`nG_XB)Pt@HortDx>3|NqCJ-1FrBzSI5R|DXK7Y07`rzo{RbcPFfi z3HbJZ!~d@(e~);7`+xoI|CfdT=05$C{{ws&@$!oqZ~kxG_D_1}|6hCeX?^>j13Emw z<d6N2{|olR`d|w|qc=CVoUgw&ZU3du^KU)2FP{5<O8@-5b;Y@V^Y8wc@A`Xw+kbcC zI^VzMQoU}<|I?@bcrN=WzWCXH%{l*_K`klJS)%iQ*#EQ7{i%J?e$!X=pZ_=i`meJV zy!b=^=J`4QE6@MfFK=%j_U~uWm;U4Z|Gq5$f9vnzD9wNR;r~_F%`akwjWPe1d~*D? z<^Qjr-^<&F$HmM34?Q0L>($Z!OMmxQL8sUr<X`x=-}7=NB(f>mu|98FK|80f6 z75D$zy8QXYpNzkCw}0sW_51ballSL=;th1L^wm%C(f^|2|1bQ15qxwmXrDLt_j0>= z$A8=3esKKnT<drGt^eo!XZ?3%|I7K4<Lh#Ne2xD8Gp6R)`TK8wnb}|dRNNeH{NMX; z_S5|)|5T>_ull&(?o0mE`uFQ?_k8~u-1T49KL6eKzt7@*{{Q`JzyJHT1<U?SzgE9u zv;Fqp$G^z4@7Mb;{og<D@8g)Pf7{mn|McbhwEw1{G0?)l;&Z2qecJ!+&vv<b<$s-j zz5gfw-jh=A`SyS0wf{kXmcIU9_jtZsJZx0Q+JAoaY5Ujz;vq*s-2C$Y>z4mZe*15E zyua+H{O|dH?Y}Iy{|nzOw)9W_*}v+>NB8Ue`v0%H-u=C$wB^^`aX*hseY5}hA9`SQ z$N$Oy^UeP?!;Y(d^ncpp|380J%Ivq%-v8>+{#zgGcmK10{YCvBc*Eqc+l%*q`)PdZ z!{7J!&L6RCs-OSw+VT6p{!ITh-}%QsyNBODe*N)#(jTph`CI<mw;w<6F8{y2X8#?F zsmFF6|FQiC|B^rD&;G5vp7H<ei=XYF{iNTfADh4QvHj#f*DdOK{(;V?eqn$3&-D%V zpmo#Jr_@QUpZD5+B~nucv`TVH{hI$Jf9r33+P)lf2S01g1Lpr;f7c8CzqoDx2GD{Z z``!QQUxQZ1)}Q}+z2lcKXuCr?=%jLa%^&}M2iPrpaDVIm`P#StpWE8MpRMM(%C~a( zHvapTH$lrDZGUI)&pz`%@cjNqKi+>$U!lGIeD1IRHve=#eEu8##r{)#@V|J~`j7w5 zuKNG_+5Z)v->-R5|Hl3WXz`OgXcyVH|Iw%aZ=Ltw{SQCr?ChWCfARkZ&EF)0kKEz^ zSr1zO1zJ5n5xo0d{-6C9``_S&-T(IM|Nkv!_rGk~%Wt_q{{P#3eDk{h|9Y;xevp6t zZ~gT{@v{GG^dGF}x1TrpU-`pIkAI(kzkl)>bdbvb%jZSy>O21b)91H8_D|=}@y%j( zU*=B)9oQ9eZ{Pj?<*@DjT>rJ#dw+^|@BKgZ`TqL4<v%}swyw1WO<0Qjx%0DH^UvR1 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 YW_{3KW9L7j;Aytr|NrHuUfKT!0Q@6hY5)KL diff --git a/client/resources/hardnested_tables/bitflip_1_0ae_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0ae_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..bfc6848dd694f730360c4e4797d7630d80c53fef GIT binary patch literal 2675 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0ae_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0ae_states.bin.z deleted file mode 100644 index 2ce45b017e20982b8e76584594399870197be758..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19385 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 QtNwF61NTS!pc1LI0Crio#sB~S diff --git a/client/resources/hardnested_tables/bitflip_1_0b2_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0b2_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..05a4d0fd58f8fb0fe07ca8f744e84f0a3fbe4d00 GIT binary patch literal 2723 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 OlOhkD9Jg)dzXJeyGP_s+ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0b2_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0b2_states.bin.z deleted file mode 100644 index d81106d055ce2bfd05729e12dced63412331132a..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20919 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0b6_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0b6_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..34fd067ec122fd5cfed8dd889b55754c1a5cd948 GIT binary patch literal 1541 zcmZ>Y%CIzaj8qGbJSsMC8v_GN{okvR%`+J1bxR$Z-O#`=gCT-J@<9Uwr$z&Z1dH{% z&IjD}3=FjlFd%ba#w;E+pP5DmGt_3KBqeYpST-7(NchY&N=Y>EH92wQfWU!brlbsm znMNrm4kgUWoY>i**zk<y$c03sl#>%%4w_t67G`i}n6h$#l!>II$pvNwDF!JM28Ja| zT1~E;%4z5|N}0F#a^Nigz-7KX{!Y2>D}V4moTB9SBV_%nrNK<|n<mVd`c5(=(ZKo2 zjx&eb#Nvbga>WGvnCDfO@+aNR_OnHuTe`fmh4KA_!Vj|To)><yFTC`{xJ`Lyf6s?< zo4NhmCkpJ`{rKLb|Lu8f_w=}A!PmK`m;OF?ocV0hsgu*<mQELz`02hN_!;-L!q=e> zZT;{3yua~x9Q&jhn||=CR{OuN5B)QJW8Ko5wp<$%4)bTe^!I#bF~{He>@?epuaoau z{A+Jd>`%UH$1I=lxkh{8|MOeF%{$yaYktP(nzqPi_LF|K%X6QsH+?I=^wPt``4T_p zZI?;smU!^6=J=X7@*IaZ-zcnM)_!bz`ElIAC;MO4v%b@Rv`3Er-apUp^Ilfne{kC1 zm$>9x<0bxIZ6CLvi+fa``qkps{5c<zpYcfSxhvT?Z~KbJi%uI(t$cN^Kyah7+^NP0 z^@d4DWCR^@Tv>jpFGyj3TAQ!_!qE1>_x>d{>M8p#+G~8#uk81ncYMkH=-PbGo7LSi z7Pg+3pVa2HyXhU1<G-eUE$*<SteE3Pi%s6GhTrsN)~bb1HeT|`?|J(<H9tMk9{(4= zea`c--$~fR_v%CJ^_gX{>PbC?M$=M~IdAM{i!8AU_>^dH@}v4op;f5?;_oz5R;KFo zbTj;2<g-qqBBavDHYYB9-%J_p2jMf{xVx4MU$O6)%Xl%4`{1E3YT6g}8A}{FdiYEg z%cJ$R)~g$jw$3m**|VojS^bp7%)*$6cj8-o*0nF$b2Va5^Q8~TYK1oyZ-loRL?oST zI^29{m&i+_DUbF|oOtAOywmsV&;0{`UB6Hzd@p>D`>Z<EI_0i{BS%h@8`^qyzP0cA z6@TK*yrx5c4^^&yS-s{*Kj%m7j>Fnrdo%W1zpq>V+v4Rb)w^opTMiyMV)yt(UEr_z zH)>A*+--c%=9=B}OLgX->)r3wAN(o#Hhkv9$qz#hedqCc`Rr#*t^bX8AN(E5B?~PI z(!~nWUkE?dOcMVtXfS`Gm}XMw#h{}R@iRZ~E4Dc9zT~0ZwlYIwJ;}02>&eWUjjfG0 zy(}zAdU3klPiNz?f>WDiWzQ>KwAf`acjD1GhIbwmPC0Va;?0iT?CE@GHYMIjwU!iC zZ<-TWXmoPYCy7T%oAzk7c6J^)wZou5TkmC`a<j_AR5_2>BPaHKf0_KoXfwakqaBmQ z^kfSAH@w+Vc<8~)vI3*RW5L2#%AFUyoO-lR%zcTUc1vXHWHmo+?aoX8j!xrAmJz&k z=w;Gl!8<nnN-ryUmZx5_Wj*rloppOM=L>5K;S0-KFLy6i_g?OJ(aQVe&4NwKmxgTe z6O%}J7~`jNOf6C^oH1pG(P?2})r4a)ZlM#8PIH$?)>)G}aWc;aTlXD%&cvuy*k~W{ z32%DXb<F47(brYSn->{26~^c(9n*L>_vG>N!lTn9(u3acrlqCD$mr?yl<bPpIa64e zcuev*bDQyUx8$A|cI@{T1uXtxs;V`=S=eCBYQv;dr885zyG28mb2B7PnL6W4YRiG6 z371+!{$J9Gm6+;P;IgCU#~+cOK2wfPn9*@4X`09poxmv(r#4R0*49}qtgV)kn37oV zVbSDWB5TBD7|xyE*rwAnGd1O8n89+sqdgjBfuT3b47+tU8f_LfI<0U<=j6;bYraFW z6Ga}1yqUadLz$;FYv4_H(SntSyStVidNjGyXlhsB)TxERtc?dPio5!_<}9?9INWG) z%1tQNLV04a)|IZ41~M^vqIudLk98&%&Piz(7iVqbv*_cBI1+JGEHdQeRBfJVl3G0* z{A6Mn+XRmuXW3z}^w2?rLu(9X99k{Wb1==Fjq$K(;nc!r37>>%60Gh2yLT$h(eOy> I_K#)&0I@&d-v9sr literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0b6_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0b6_states.bin.z deleted file mode 100644 index e8c99c170a5f279b69f1853dce5e5951e11e028d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10867 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 J<GaWs=>Q47)ad{K diff --git a/client/resources/hardnested_tables/bitflip_1_0b8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0b8_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f638e4e1bc1b2cff3d02a10b5594d2fc107d141b GIT binary patch literal 1630 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 N=qI9Ls405f0RZGHY%u@; literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0b8_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0b8_states.bin.z deleted file mode 100644 index 25e777872ff06ad2c1166f2b06fab3fb3f98192d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20353 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 Za=gL3jcjx|-p66G9Pinmcq56oGXe4<9(Mo$ diff --git a/client/resources/hardnested_tables/bitflip_1_0ba_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0ba_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..7be7169f4659fb3768a359244bcddb3d2adef943 GIT binary patch literal 3614 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0ba_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0ba_states.bin.z deleted file mode 100644 index 240130a6cf61216647b8106c293300706e35fea7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27768 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 SlivFO;eYp(fBcn3`!xXYEDat2 diff --git a/client/resources/hardnested_tables/bitflip_1_0be_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0be_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..91e544e4c3ff6c63ff616062f8a7d8c18a0622d4 GIT binary patch literal 1951 zcmZ>Y%CIzaj8qGb^!!!ui^1^X|Gzhd880%<6%}m}Wfc?@m>|G7Q}Bm_U?78l07K~1 z{|^N08PI@C%E`%soejcjoD-Pc1RE3^9;^Ax=<#8gY2ec!WzfUO!!Bu*awI8%<z!O| z!^M^ajs%O7lhu@k8Pt4)71(-|8Jro9`OGwwn89e2Fq6R~QG!W=Y0@Ntmdr&7%Xs~r z11B8Hxa=Qrap9x(mEWg&tY59_wR~TN`0K*o?i>F4 h#(oaoT@A#8A@fnqKPg>X+ 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 Kg~?wYegOcQfQ2;x literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0be_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0be_states.bin.z deleted file mode 100644 index 05aca3b6c2d5a21bee579edc66d516e968c56ead..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 14338 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0c0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0c0_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..87d8693df1453a2c5d4ad7917b0252b1228fc130 GIT binary patch literal 415 zcmZ>Y%CIzaj8qGb6lP}aWnf^4alFVNz`(#TfkD)P!GVM00OKFafQ1YU91IL<OI;Wj zXliOsR=&7TMacip1W&7zq9LW8>WQ9eL7uA`LRYF>a`3$5sPbG><;tWiPg75|C6g5- zRTo97Zt+&xs59wOgl7(?=q7KKO)krKl`eTS)5L2o!$F|~m8&K_^3qGFU9zP=X0n>k ztXY0q>rNW^owQk{eafe^jMHKQzbDJ&TaGFxStkEfn3UwGa=`Q4p^%10T2qB~PFktD zpwqE4U}}x$q)7%UM`i{_c(%-#{IZMdq|vOCv-pn-u%1YJ#MZ&kz`(%Lz_5zJ!Ht3U z-IM?YDFy{82H~I;87CKLY6klU)GfXxuxh8uTuzmfDwi61CPhrptn5(PGO5VZWKznc zOqBz=o|7`wmRw4i>9b(zl8q`cy*gWN2JCS-wDe5Z4)%uSA}hZ%|5+BS{^aVi89SPn z8qL*wr1jBfWr@h6DKbZdVqJuy6ej%^n3Oct(?H}!Ktsx^Q01;rl@l(`B3_|yeHJZd Znz76^BA6>_KI@%{ej+NYfq(un004%Yro{jN literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0c0_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0c0_states.bin.z deleted file mode 100644 index d3f655b0414dcb31d9c59c1909c9d628065cb463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9771 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0c2_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0c2_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..05f424f307c39bde53668f05871775c7c08e39ba GIT binary patch literal 13885 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 Oldgh=itUVZ*8u<{6+lV= literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0c2_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0c2_states.bin.z deleted file mode 100644 index cbbb637016394a65730ecfa0600555cc54868afc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 43691 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 Bw~GJ( diff --git a/client/resources/hardnested_tables/bitflip_1_0c6_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0c6_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..c104fb1de56c9bf4b40acecc9280d508fc571ccb GIT binary patch literal 3025 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0c6_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0c6_states.bin.z deleted file mode 100644 index 95d162000dcf5778a1996f34054607f37fd6fbf7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 24543 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 YX`n&ky`T19106s&qxZkO?|iN>0D=WNyZ`_I diff --git a/client/resources/hardnested_tables/bitflip_1_0c8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0c8_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..6548e5270c3e85ef190a45a504ea181390f5e11a GIT binary patch literal 3523 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0c8_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0c8_states.bin.z deleted file mode 100644 index 5eca50e2e24516bbe0ec2848cd7e173c128e26af..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22541 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0ca_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0ca_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..8ceab191af1e27ff21fac695a3c814ccc072f571 GIT binary patch literal 7147 zcmZ>Y%CIzaj8qGbbgB)X#n8U9F8OL`fP;uYB*T<Y1_#m55C#?o1_cg|2b%wW39L|H z&}wvGbYNg`VVa_(wP-;oqr-$n4XUm|4M9zfUV<VTEDcT?OkE7Dj6z+ZDhn1VHE1fV zIOc1_=F8Kp?89+b(&U7si4jk)fih3ZWrdUrCyY!E^cYU|X`Jk=aN;tPfv=~>k}Jts z4i}^tZaFNOGQn-atezRpip#R>okBzGZAF~IuXA-Jc?KWqN^xAm8>*P(HH|T}MB&s% zud9+mN0qs{qJrGtO>*>Gy~ttjs!yRyj%>Q>d}70N*FWs+lR4J%@+@}`J{aLunwmJR zXT_@}>7FZ_r3y_F^q41WRm@`J>^fyM<3a0Hj!R2U$g_n_TYNRNn01-stM)0=IbZB# zv*f()lakC6VKpmbpVQupZOejIi?*iB=vlhRm-}k%)=PU@E=H<xrb?{7s(oo+uv(;! z*n}&oX*x+g-Pzh<p%a%Hi776bw&?U7??r8arj98+tev`Aek;Y=Cmgvn%P7v|(pBZ} z+TP-SrhlyzeA63HuUc>PNbZx-k?RM0jO3P7sc))qsh#re;CtcVp6;%XRqZRUMg_Z6 z8lEvo%XUj_ns3av)tSe%J8D+K#fK$xO{|_4l=|%oR-N!oB6W4J`jjn+D<vXVT(z~| zEdS;D-8YNAEz|t8{LJ(zJQ9&n67s5r;VVVI^Y6^~==fM?YuIX~ObL^V37Kk{5^FY2 z+3Gf{C+@Ja)U2LO5m`r<X{Kc^%ewev`jV`;kF^r1sRpNxRk<2Dzq2bkYp5GI<w{mk z(uoU+Nl69s8RRSN*6dsTv2?wsJ?p~@`}$v5{N!1bEK-+$aPoxenaWRp?TL-B>)E$H zu|`aP@pO${%h?0VgQpbBWG3@ZohK<Zv%mStkAAJau68SanOfPsSbs>1A>Ju2Ol`Hu zdZENKQer*vOG9?bs!jUMwz2b^A7AKX?IU|aY&0&U+}fz7u)pibu`r{Eqtim`S&bz9 zzZw7T|1|&Mzc~4K8*L?De6cuuQ>LQAp7B%oCW)UhJC5&u`04rKi(gs#A2~lX4Awf7 zlp231Xp`W?I0v7lDG4bl8!oMtOnNo7;G{E;>NLl;sMWr_MrQ-td^Yx+G35U2#<n4G zjj3v~uhwOqh*`}G=6jn(+)P@_y~Jikgs-oO-b#PfX*~0kk7P<5-&B`bc)I7@BHL-J z!juKGCf{{F65dj^;Av!L*y78#PGqh%G7dFe%WGupZK|WqGjoz}if$6m7DHa6Y-N+S zZqFr~!h)rem3>2(Z9ALTvu1`->ZVP)hH08>+zuJ0uJTDv?GBY%n(QX&Y04EfvEvGl zYQn+RE~Bj`1~a6>L{9olmYOWFHeyXyvT8C<R@HPVV>eSao@GA4JgZ$x{EIdPJ~@#l z_~gTBv5kv1Ce8}jk@aD<{DO%rHH^W(>h66M4XtVpOt~0hxT@u3hv}r#UIr%?O9e}M zN_Bi=IBB)yCnx(vlhAISgR3q}c^(aY$GTFg`_ZDg4v*TVPFp(V%8H~DSs6WQ!eKtE z)=l+U*{G+Hs6U^TdrH<)gUG1v%bxn4Cc5q_&)jAj>t;ormI`h7l-bMrXyO~w-YoYi zlRhojAbc`wRV9y@TF`D0n{B2u=IBiM5X?Psg`ZT!!D~u0!&;=W6kFGF9JrKg7Oq+{ zb<&nsm&G<NTXn>cSEHwG!x57;6E>|nvTCE7VCvMBT^CK3E}a(EwO-jL$~RkL(y|_j zHH#8rSrekzL;0CjyL?QY?XzZP@`62`kHUmqSA{8^7IsY3Svuv^YSolU2R=qz_D$@S zICbJmKul()PS}Pmo);~7cp|Q>_PRJtV$Q@c%~dmI$@K?qjEGz6d@5Y|fcQLTot2Ru zC&V-iwY9FgDK0TeSvl2L)2chPsnRiFruK<$r$eV^gj`HDIO>`)t>M#(Ft=sgE*qm% zu7>QXSaIfv+`)-iD;H^9^wm}|WnFYCWtPLHWt}z)u5zq%T(xRbccL2CfnyV=Y6r~H zlv;5^bHda`ZCWdTP1)daB~s*)6w}4c0-0gcmZmIvk+|Z}n($DIaObJr+*5-O$(>qx zVro@jrq-eP75>Ms>xZgNsQmfwUEjLp&!26zc-($u#kbB6XU=Vsd9s|_Q?5Ge_?8Ow z#bH||eIqXR`fS>?vFB9Q@guA1n-Bg|n;f>@b=9R?`!1~W=udPOjBmLdb*Wurb@S4Q z$(cNtjaHpHp>rt1wCza7)v&Fm-4Po?vjt90_Q|*sk=XT0U1-OawI+!@!b?on=@^O` zO3XN_V<53P=)|Fmt7aq{_M~Y`hGv;cE;H5Uk@QLCO`MjvahqvQwAp68z`Sj<u64b5 z5n~#1ZN{ZzK86t|XC(F{_9S~6PC2V%YC1X6=&-~mFZrg`SJgKyQ-1c>fAQ+@Cv|## zmX-F3A0p@9Ie4aeUcdX)c+;OUbyMSaO;+s4xN_BFOOj~9OwNfD<15tPOcvF;7{-{i ztYumo*O8+hStlp1*fwL!t)wjrgO@~PJBO*JMj1wJ*p_z9*v#RdukehV8!PHnjuu6+ zURtXjbjey<V)gmke}3)X_HAmlj{bxqpUF<MLYMM-E0w5ub^pA&Lhn>>f<e->h@}%# z%w`?RRg<X9x*3%dWwhnA&RHX!88as*uJx%1TeV{TzHa5LWwX|#98=pkwI}P$1drcp z+`Jm=PliluT5(7->SI!`!V9N|tdd>^4c~sP>h<y!6S=gSRhG4AX2_ETg{jjbecF^6 ztaMXMdX^jwejXOdzyEsAyY*{d?45GbZcE85*J&$f2|mkBoAfesCg-E8R?8;5b`Ms0 zEB7z%z55cOUu!kuvzi~QU$|`9QsY<QQ>In~9PxI#5Sl15M_AElVymx9qM@WiqA9ng zv{#ly#8RnAt2Jg!mGoMDQEF<^4sGs^r%R7y==p{RY?MlMo+`RvL(j(Gz!h7g7E6SA z9gx!2xwJ)R(V=FonSpDSk}|GDuI!k#;-u!HWy&r|7pEM$>b6?bXi0`qhEb29GiPSl zile56lMb`GvnJ{~ha{bxlBAQVrTWS{Fw3;#!u&Nh$1?1<9h=|zZ|eMyrh2pgoWE6a z^0&+P=6CzDo~CB@CqMXU@xxa8=gjIJU-{A%zeOJ&zZv>vbAZNG*0)c>Qm3ZPy4iKv zJF05VoFg@lw`{qbbWHjEW4q-%cAqD|wNEwmY2Ty%lw;p4&zZg{XL?t=ZSvXFxv6)t zgKpqTp~Dfg0<O(8b(`inamm%m8YUN`d=_1}92~V+;Hb%!#7P&nhJ`NdW#iV?^>&>c z92OR}Y;ok~lw-*}TNjH3&h(j)YS=bymeGtGhuy+V%%W~YF3p*3bnH^D)X^<B&T2MY z4O`6XYiJa4&2yPaW}C17mQOyZYq!)lzbe?HXY#P-{$jf~e|$~;xS!>3`OVq=Jf<%D zbyT?b%ZPc;JbT5|j3usIJGso*K3G;QE$PO2`Ng{0Y^(mVh#$JRR?RRq>1fs(oi&q{ zJ+A4dx=Cb*B!{}?80&0Yb2V9W>!x{^e#|=KUv&FnAAjYCzX4itZD%EtuI5a(uRSq0 zW7B1$o6CHqqGEpRm#fpB8~WIG|E`}wuk<WWiDktm_pDnMf3%|Tn);IO;eYoXeQURD zbLe~hmaCEymhrEQ=BIqx`g(b3{@2X*$%a?T`qs@Vn6-J=&Si6att>A5OGwg5nJ1ZL zl$ESAYtzMf%iPvRWhEWcF%I1#apYvTo3pQJ#Fk_p|7>r`s8h$>)uzodx!AtStz-VB z)rU5;`z)N=X(f8a-D}sZIlIzBPlvfh?AlO})DyTUqjX_rx2fuk)kfEJO(j<@Tb8>u z(dcC7$|c#3%Mu$Wdt@C8N@kmslH(lJo0T0nEwE?CjihY0RmsA-p3{sjWhKot?ywAt z*mN~nv*=jp#Y2ap3ZCqmrL1*0=+xgY)4LX|f2pdoSDRb2aarR_ZKY*fu1Tzw3dy;0 z=H!Zty~1ismm5o53+(kyu<S}J%W*rZ@$A+*&!(MjC$knETsCvo)~q!%CwB9iNE)0r z@ijELD3#^2)lG9X>oUb@TX}g^yK|#54m&$t=GNYt&GBq=*yb>Y)F6Y*ut`U@Olw<Z zZslic>^&>>)akh)I+spsxjBa#X<d<+CFQJ|ICJ;fwM8X2qXW0(L~AE*)t=h$G}zb3 zCt2dKW*cwFi9@IKwMDZ9ZH$e24fagyGD;0?4onW4m27gxXv>zv>y!=7nr*mr#^jW2 z&@5+{LtG}#Nf%2K53BYVwtI)oDAY|fIBJx*$}lTpYLA+mPQ;curpb|crdAtQ3&sg% zDyvP5$m&_G>3t-)Q{5wI{sF-kk1v&4M)|hRTytrS&M{-HSK3j}jHR}o?9(}OE<MUB z^LW_C>EaSkHf_8twQEh`nHRGbzlm~Qc}iy4G$S3?k2;h6+m9dlBR6YfwfljCiv=Dw zuR0tt<9&X<=g-yrlkd!U^eJju*oyDVPkxLSeX;j^<I#wO9fgM_3=V!cak0Ip;?tZs zgJVWB#h)B1IQ3~pvP|-fW0A?1>^^K<k(yCp8q;fXZHC#cY1_``E>qhQwdKM=W6dlJ zcEKfUU1LLMp4QorEUvR|r{84DtFwxAtX@4_wzxU!8jnPbOu@@!)s?r!Opdvg96V+? zP1areL;Do<Kwo90Kia(BQz{Z)t(h6D`ATA%$<nM<M@+O{yteFnSsZdUEb*4vZJ**@ z+oWz~vu!H5ymr>%DARVIBM%qLWW8J-ae2ma)8f*uYgUPKo}87LV^T1)#3W6!=-IM& zd7GYX+jzBbS#s;SlAX!EVcEQ~#*2&RmK=DoNcjCiEtNejORt7Vb@U1v1(e23^^DUn z)mp=p5Oiqusud9vt%5cPop4(*>BJfboee3oj4qvAqq;!X*jr%gqN8EUrnI@awkd4d z8rfrX<yhj31BYE3TpoxlDN&8}<b1R=jAylK($p2n-onb>uFK3KS8QA;wKAz&YZIHK zSzBa}v6)!fhHH*qmsYOwnX*BQv(r#Z%u`ZSD&yGUVD5-y(Y2XbQO7cu^`<1J^<3Oy z8g%NgvB6p6%uMbeU2TPBx1uuBq#T32-43lWY?~OmKrPTTt!Jy+vXqpBi`~i`LM0}t zMl;q1T+QP3;aMxR<#aIDv~JFbU^O4N&dJ{1LTjU%U5>c5PFC|)oa}6*xop<8jbV}@ zCcc7cCTEQeLK9a9YZ@I>OfoVu4AXWoI<{t`uPL{$c9>fPchs^ql2O;pOcHy$g;F&$ z1EgGM8APTWYn9mQ*)w6ov`N~c-X1etRtJUpgy=Lb4eOGU@;P#98Bf@(Sy>rdmZch9 z*mT;pH!0~z>ZHV!wo4~X7khiI^|=|v%`-96Bsg?ZR9aHcRb#JZD<?{aMn*&(I_zO$ zvS!OPiHM|wOK0<XGlwl(bF|IWO<B^^uqSC_O16>2v1Bz<lhl=|k!e??c{fLzt~%Cp zbIY=0S9^UT&6dr$rjyt+E#cy9wJRqz#g%4tdWZTLZ0zh7*3@<i6G>H^v{ctahok>e zzSgld%^A~@O?lQNOHPrvs_EChpX0M*W@j4jifva{B(`<y9E(~Swdv~A%&y3sO)g)> z7d?y%3o{H(GdiP_v0CTMSz(=%-E2lzXU)huwqmnn>(L1>R8xE|&D^*mP1#q_RBY;E zj$>N<+@U>OA0}%>dYzcDDlC{aDJjCoYi7vRNL_8lhAaC2lA1R8EZe;KnpGL&qc49B zu3DwQprJ5<QDYTDgVw4Q3<81&%<Fyyb@(rg3eH`at&tfLx`DxD$*mQ+n@+m~E!2?6 zj=FU^;l$;%S(l>%w=vy_PR`_Z&fGS!XU42VlOqRw4J1x>E)(|gVY$o*7h?4dnjGxx zHcN_uKR|8ClCI3BOqs8$W-)wa^wi{<x9p+_!)0f;`S(_7dH-LfWZ~Em<;<~klGdh$ zep8kitrlHjqPZd<RjFQ)W7Z1ctEZ*5POO-<Tz+%E&ZMhp(`ELoTw$4+I$QBld+=I6 zU5UvP4=W#AbtLKN<VN3+FxHH?*HTx$@@2}ctPFZm6{8oLw^`@dtT}1%$~UuhT`sP; zYBEbwvvpER)~x2hRgbT4Tbr4*l~*#_Sm@NYP1kg;Bt;nYtk2S!8r5|~mpdqG(Sdbd zYd$XX?Uz)4Zn*rT#k^IA>OTKGx9Ypj>6$d7z229;*@W12-_xIJ@=QNGZpEd{xHUy- zxgEF5kLzS~nP&TDr%scLDSCO`S(|;c#O1KK&}F7>I#;fI{VS(cX=tZ@(x&U=WU17T zMSC57*-hKi_~gLV)U^_ZlBpTj`j(tb-Lh@lG;dZ<pFQGB7eCow7IErJ=Su%0zcMlo z`<h(#k$M^5D*WKz&hPbc_on`gv+Cde#q!IEc{9UmHvLL|ec`v^@0}+~EnbxS>807e zzxF+j-!-1~W9sp<@v9ap*$2eTuvuL%;uE{z@9D_NhNo@#xpwmMY?~3m{77x~w>SQ? z%KXmBx-U28Ut>3I(q*q}^LL3Y$_#G`)0`%mwLQe*#G2HUnaif#x~7|GEXQQ3oa~gg z)i*6NGghlEa*J<4oJhvTnKF})e5ly6`O~hck3)Todi4_@$;m5T$*;Q{9kDs&w%ew& zla3tmZIxJa+wEFc*ru62YfNTEoz2{E=90=}U)^n6&bkE~DF?20b~<a!l%;VsVoR9f zWJ!aK%VtJqOG-QHZt3>bRhSgL%W|dB(VnQjNu^VEKQ`Q~DwFwW=C4%(%YQr#5q`n( zjZr*s)rM0_ry19*xscW|OZ$@6r6+%sgb$|7%A7julvQYz$kiyjfVs>Km(KcZVb<x* z>gkcX*jci)jk#;hjHx=y6thfDd={w`V+#+wY1%v4$W%_}>cmRVS2wp*dc_4T<EWHc zHP4x~bIQ7-{JOnq>N?5?QcrtXWG1sG1#5>$YpgXB4o%IuwM&mJxO8K$j+nM*nC=Xt zEnb(RT1|AkZZ69>A#^Rm+-K40pk%|vY++s}t(KfLnJe;%TlLwtvzc2@RO*YITpVyD zO-iSY$7orwLei&gXRaJ}Qts7t3p?$#%TLF2W2E6)(^yxN8Cz1mR!K$eWvqyOB79zS zt9QsO!3CR^g-z|ckgR1S#qM>n^=UA-_|&jzk`cU-$u5yT6CZNBWzAYGw&J2Vd#C>` zT{X|fsE$j%l0H%^C8Z`lS?0votYYfBGD>XaYRy#<i<u;Rm#k@AF^x0cu~X7iZ0e%k zRnx+f9SXBHWF)<`h>eL^@nL<Ij9^vkq*<Xqx;rk`#V>z;uJqUE%=44to^EE=4SYW9 zeDIN~?2NNvX;ME$|IVq;W?$KBwohnBYc;2#_p@y`)dTgW^DNEH2}{`Kvv#KL)+|k9 zZr?55-qC8tD+>LxvLnO2E<H9BxF*nb+jLEq+EVYR+|Ai5&CMcb%IsQr+hn5PBGsm7 z)hPjUO@iOZt-g```j33x)}M7%pMJ*cU#%BONioTGm}TI)Dk|vWs{JDVPfQjaTri8r z;pEbcQ$g1ZE^XTyx!Idx&Z@1EQ<I%$CYfz(Te4OtnE7N<G4E`l{b!AKng(9Uc(o;V zw(9ejUtj&sPxuzG_jqVlLSo9yC>ie{?N>&jH`b;a97zkDa&+s)?2NvSwc5U!p*kv; zG^0wm4G!O*?XyNVccm0p=<hW?TUozpng&V*Ec5y>T~)hdRmL=~`6coiy^_3aF0U51 zId|w88|%zCvOMhM$|;xRqt49l-!Hp<?~89+YMx7&uDT(Y@j5!BV#})&ul?3o`{&nZ zUwp~@<kZq1Q~t1@3%$}K=D2i;&kFY&n^tQal~U75bzQ8rrFSx~NnlG@v!`#+yeU_b zCw6z9*|F7K%F0bQF(%|hN?LHRv&mHxZLLiwQ<B`AHMi(wdndajnL2i4q#CZ-xHRij z(y}#Khm9n8y@Pc*3nh7@W*n0Wb^5aE#9@<^^$+8+BlX{Ioj>_oeK}wLuirbD--&y* zPk+&_wPD$}ztvj)w&hRr*{A+!(&~Wu{laNxX{MQLt4ikm`mAl7b*+E-;j8NxFF*V~ z(p0}Fexmc|OFpNv)lzb!wsuaNxFzRk&|y~HXm5?1tHq*BBhE&trEJ=wlXGKBX5`eh zVUkf1*Q9h@yE(I?E-QPj){Q#tG0V{C)M=r}MBiZVEKid)YgMzn1+E<tx^h{IE9#<H z)pj3`Yq#oOzkBqdI7U9c>iV6Z?pxnwy<OgPyChm{qv=%5+`<R)Chg~DT{?5-*qSvL zR~_n-@;a;A6fj9Bb(?>^PR;r953ZUIju~Ctbf4q)w9{TIQ(TIx<!U}Z=bIjX?E7@D z=S5RDoOwC_@^Sa&Ti?I=ee1iO)QsfmpHhCsMSZ<qay)ANeZAt6$aT*n=cWh04PA7j zs5f(URKU9jTUV=1y0zJJQE=8K-G$dqnsUlUrlm!FS#?tT*SuiI(+(GxTJniJcr0r< zH)d0&OrL<;HL;>&TfEaQ1x9;^d97VAD@8XkI@_Zu;<V>RMKgyrYu0$Ec=`I~cudRK zI-!qu*(KFUE3a)SUgoy5@amFdrjhkp>zO9MRZM*u5g8GgocHX+!I0LqGrdzL=0u9! zO5HlgquaM*TNZQ2O?6d?1$<h^nK@70$a0g)j=FN@v}U%T+O(sKHm*(7oh&wEi^<w) z*HS{)dh0|kFUr<<ZQ2qwDIzoBYSPJ;*Xqg1n@e}MY|GW!>NCrm+0ADe$9Bu8$CgvB zcAd%+3DYx*Y1=xnXXdP#X~M^}Dsz{dm6HtZSvqanW@D*j(>tqkQ@0eYI+>9b5apd5 zyyh9txviPUuADSd-4rofw@+-gbg$LfBstcpJQ<sk79W(+Ua1=Yr18b`<*^al%&uKI zIdfX_qNlsAOULGwoq5`0nHwJbJu~*iW1X$rw#lh(w5i|se0s^|)#Zz}Sk5(0z4!M= zJ-6-VWj&_0=Wl-cSyhvCMqX0?vg)<)N8w91a?4~FL~UKR>d?y24Yy3!N~)!rTJ)KU zttzpcJw4cZU9L>-#%YDKOx`ZMac#m2-AMn<I#zL}nNjmX6OK)}lsGx(ap9S)lcAHg zie_nEdvomC@z7&4&tBWH&CGXh@#5(wkIt=)yn6TSt+#V!uIpvaTx*=R>*cvkB_8T8 zf)s2*_*BJ0Lyn3~^uIE(lv^;%<HBmM4;&ZxrW$G-)z#u@6OiobH4b$4x$PCr?3*ZX zW?5)hX0JzRfvUz6%}W6l9UHSQWvp?Vk(sqwY;#)H%q6ozTQ(isI&)Lkn$D@FY*P(3 zY+B?Ka8Nfp=d$Ze$!V9ag&pQxb;Q%_Y?|pd({A2vD`wnESY<eMi|LkBuM^sWvyP^& z4U_5!EzVrFjOS$7Oy5;un|;`(E!q-wt;cklX~@~x5xyI?Wh%Q(OUzmsW~A)wkvh>Q z+oxr+B#YW?-DPL9y(1?Xs!jInjn*{@S-NqSB<G?fCsNYVRvKNIIceE6hATaxt6H-} zW-Z7J*6i|$jJk5gG-|VC&qial$Vm}XluTwj8AeP_OHN(8EHqm*;>c;I(9HpBdrfX< zNvSQ;?M+d+<*RaS%0{uRTQ`|>dvxZmnbDLPZ7Qm<?Apo9%%$00K53EDB5oZKcqpY6 zrn)-VH)CnT7AZAXZ!Squ_wV^)GnbkzIva6O^lIZRwM{dpT{|`5nvUDnY#*UZM~<A` zq^=Wl)z~X@+2*KlS(iCHr_xp%nJx|OI+l?g;;)viSm||WV^~|DVQQF<udha`RAf}d U%wWO)kKTDK=Mv&xWajt)0LzN|t^fc4 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0ca_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0ca_states.bin.z deleted file mode 100644 index 500be7d66bec974a1ae641471de252e82f5eb072..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32059 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 L|DW+h`fU#Y&+x`6 diff --git a/client/resources/hardnested_tables/bitflip_1_0ce_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0ce_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..26fc3dcd4eb5a2050245bb37d385960bb2675764 GIT binary patch literal 1663 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 JBU|hN0RST^!W{qr literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0ce_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0ce_states.bin.z deleted file mode 100644 index 583dc35e1df12d4c37aaebeeb375af2fde977a7e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15142 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0d2_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0d2_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..9d6eaefdd50b33e49229cc244d6585d6cd128e0d GIT binary patch literal 4937 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0d2_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0d2_states.bin.z deleted file mode 100644 index a2395d9d70b34e87d9c74eea50cdd0462f267dff..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 29524 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0d6_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0d6_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..d6b2059730a6fd116687dc3b57a7c93b8859772c GIT binary patch literal 2083 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0d6_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0d6_states.bin.z deleted file mode 100644 index b2cc698ad1f1ae1d7c5177307f59e48d1410ba89..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16085 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 D1pL;k diff --git a/client/resources/hardnested_tables/bitflip_1_0d8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0d8_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..3a4e9b14c33d0b78b81f887c38400578c72d2918 GIT binary patch literal 1270 zcmZ>Y%CIzaj8qGb{P}J9JcjAfbu}-zS2c7j;9%fzU|```zGBfL1qOx=1_rJNJog!p z!C_@zlM{zh5@s>8NlIlda}!o(xgcS1;<B%i!AuFYhJ$Txvoa^PoH%I0#$#l1*{4U% zjdOv4$drjfX{z=iw-S_iPW<_wvO=@Q(3A6q@{UzU=3Uz3&HkImStQX)<c**~kn@Q( zhDiy_6eRrDcXZz|h>&x9V8PeEAnwu*%^PnF+r)Hqf+f5qmg$7)J2xgDn4=T1i${55 z$FCV{d?Gd+ceMz4u_2a^v7*Jm&`nG!DR^U<M3|1>;TLwzXKLAt<}tP$*r(X?;Apa# zoT@cXoa(`E`a8>X+|Sf2^R>Rve-NMeU8}l%qWpxt?rw$=2KJ7J=19DWVP<A|u}gVD z3H!=w?+bgEzVPe57h^qr&sRCscOswFcTB177D*Np=1dl;*4JZsu~A~i{-3|+|ELnZ z5&F@dohxqnp5sMd#3v-Zk!N~S@BE>r@6nt1<^zBEXa1TL=lWUvm7X}axJz-vH8C;6 zWYKQ!2jX0Z7S*-}v#PTOvj+U*Sn)wLm@6VA!YfRGM{Dx4*pnR+!ovU9RFVwcI9r_s zo8|~6EoU{*N(yH>6r(MAFv22fqrnUxH8zPEZQ4Q`8;-WNDU0?sP2SLw=#{8q5VCp) z`#Z+2W{zNiBS{-|+zcWnb6z-Ruwlue1Ix5JJ3eZ2JoGqvP)21<z>j_-3u|uHuA}aI zjz$>x7(~pNk?_v7g0b3b;(?_yqCp2DCJP)*ntN!*WTB%5`YQ|82`0^GFM1f!&M2{A z#S6QGkK_fu@=q-1`k=Mf>l;_Wsw5qrAj3q%i15y?hY_pAl#V8?JhV|>@kOosm3s9? zTYrJ|20!Qa-}t{wR#x<njGXd~+H-x6?{R*yzfj3~@M1xq#L;G+h`$Z%L=09XiFSIm z>4?}RdPZnSa2@sd%+AemD1paW)F5J+!C?`fWQn9hiQU3HVLWOEGma@Gc13Im78W|R zvg?q6XUCe5jm=_)-NI~!I^Lq4T^qf*rfD-ab{Ga(XgM=z9a*EP<F!s`8P~zXYzAu# zl^YYolvxdg<SM)t$X{@OVzBDSG70aG2fbtzeFTms9GVgEf-6Br)SK%-#2OuML9e3* z6CzZ*Bo1@78F(slwl*C#3~e|X#>UOf&2c1whsWi>k);Vqt3{Rxb|g&gI@;wUW^g2e zhnY<@(V)j$;9zT_u+Wh;VJb(COjA=iEOaz6A<?kM$H(B9VK<M~5gmyLXNe@kq(d9s zB#s<9nw0RsDU|<YNC6v17?)>@HrL7~t|I{l43mNd1zUqfm08t9RSY8{+PH<qlv%qB z+YDQSMUEyMIdUXoO+;cd%Ob<>g<MCLb4nx~N;-0wWn-cqD>nz5K#!15(4m6~Nk@|f zj<zWs)8UEmanofp?K+suCUKavvrXb?o8cjmhg>mwq6Z>2Ivz?`*(@@dCt}9bHj#}< z5(krc40|*U64n@OIJB6XCs|BbVr3hbL4sk@(QaljZc$PD4SuZ>7A^%65o>&WRJB_# zuvu_wH###-E$Hit5#|;tSl2a2)hC$KM@O5-n~kqyV^V}LH^*F|#8_cbcUE^N3yFwn z5>p;BUOZGV<%nURVMH6ZU}uC^GGoUE(QcuGEfEKFl6VY#B%FBy4;)!1rp(61{~`9I N$U`UR=eOon002r<>IDD* literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0d8_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0d8_states.bin.z deleted file mode 100644 index 4188dbd10d566cb057c2349a6c415e9e9ad53004..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15061 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 Z@f}^_d#rwRi7zdd_&)o`+sLWV2LL+(G3o#S diff --git a/client/resources/hardnested_tables/bitflip_1_0da_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0da_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f59ffec93c62099d44b48d2da86e76bfc82a7797 GIT binary patch literal 2316 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 bl9f?j%qJ$!&e#9Hd#BPI4UY=%of!-Oai=wz literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0da_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0da_states.bin.z deleted file mode 100644 index f4115044a29e12f1cf6dbcb825f2e78d7e39f6c1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16636 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0de_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0de_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..62759b5d1c89d1c7aea59c532353842e47e63a60 GIT binary patch literal 1273 zcmZ>Y%CIzaj8qGb<PU1#WDt1&|Nrl+`m-6gatj`mY=~qKV31&xbQN_K6m?;h5RmAQ zJh|fmM?3=*@FkkCHC$ZGaUsd%$jQzHhfH`HQVu*5cF5qBGU#Pf_VJl9i$~ev1e*_K z3N<~JToB4pcAB|ztBI{I+bo6?7cQ9CI{SMrpYrXhisi{3(XNe`GWO&y_FBEOAX(yK zw^PF2Ye#LhS>tPbLL=61S{m#b_`D+Y+hq2oZwl-_zMKDc^UGwJ2+KRmqd&-Newrh` zCG*<tPxhXl`4%_*WPc#rKe5bkF~8xJXGyONE5etS%`f@kA9$tWUhtg=eFNLWA1&-Z zJWcE`N%l!NrY_u=S=D1Uz4Ff6WZCl@wtO>5T=HPod5s4<^mKKK)(3vEyzVqNjYsoN z<}H20OE0YFTi-9TE7#h2{6J#4)m^pT{n7rK@AXgZD}5dlyyT_K%P+H~tYg<LmYd$# z?bdg!@3F6(u<(jqedU(RJv&>w)A*)dd2QMK!^Da`^LLx}nwqTRr(VP=A2O&f{2j~n z*Kg~;>k*&Lw#+biXZ!e^dPAo5t<3(8PjjE0+dLuT^W0~BY<z6ujs-<KV`NS)-PpXQ zAna<#;XSwhH(%S!?S1WMxYy7A#E0>Qrz(UumKoL=i+-0l&fHXSrzhgz!OXtP(zUJq z%ttOhGn1;Ayzo-uxt-3JX4GcCE_64vjOTn}U;MaGeeJ!N)kiiQne%*Q6;E<5`-%fQ z`aTsz?DXMgGuddiqpkl)vfz=6okyM-Jesle)EdR^iAhH#wrucS)@qZ-YvVTetsdJo zgWuVwl4X2%g_+6nsT=cs&;R(@w$FK{U0eUkig2sLKi4JSlL>FFmNMBH{9)efFV<7u z@e6E;bG2!^^ppKgyyKaDzc<!6f8FEf@<aB#VdoRsY}e=h&THoVdSc1T<E!`d;Kh4q z`C5+@8cNluO@Cj+&v5g?qm8Ft*iB#C|LLh-(G!y&Q(8W*;?GkNUoX_%+1k9|*JQyZ znGy3pRPwddFcpL^I4q{jrW2f5wlXnd>A45VJQ2%}tUp)l`Hz2Xb*#IW-qfcChlSnL zy02Mvy%OdY-mq5A&|)>Gh4OvgWjY2v1~X>Ja8KBweQ3|)$NnpCmFc-WiI`zne{IIM zUHuZ@`tR-cD)8G{-E`z)=fcJ|U7o09iM>ssekX#KzCAT*<&}+z&0;)ZY&x7mRidFu ziV-W0v?_ZUdMcchxzYYF=uuLem{deJH)D}#=$5IQ9TN_A<>nl0?Od8Ln<L?d#Kwpj z&e@q8qTMcMvQ3T3>}_^+I~ieSma}$M#Hw7Ajb=-ihG}lnF$|M1%hhaLlIbgPuq)}v z(bmR{o2}i<f^CKohmwWGn!RQ$Ih?gdt=Vg~?`r0(ZLKX^CTm=B-I|+}*qXG_FyWX^ z#4+6?5(x=MbA1vLHbku2u;Hjd(wg9mvm!UPYFtX-Npx$S5T&dcu|eg?L7j|<Expo7 z8A%CiS1SvgT4UhZEpc>4YS(Hpt&PosUCz!t5>Ck?CL1-5cJ=BoJF`R?Ds4#&O*j&r zb78h&Vy7EV&|zi?(Pc^(4y}n;BQYf-QOZZ_vZ%L@O2#3H3zt^=cwB5b%xf5xq`K`E YlS$^Hiw#@;KYHh}oJ)xDRRE&`0GKCB@Bjb+ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0de_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0de_states.bin.z deleted file mode 100644 index 42dfcc794f65d0f8d0aa7f8c62c1f7034fcee162..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7526 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%0AVyMONXufH-fq^$$>7wsq1f3)7m(D1MSU;Ms5 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 E0E<$wnE(I) diff --git a/client/resources/hardnested_tables/bitflip_1_0e0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0e0_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..904ba404c80c001f9b3561dbbd4f1d8b3f886279 GIT binary patch literal 1292 zcmZ>Y%CIzaj8qGbG%c+B#wb&IrSu}B0D}O7r~?DT0R{#Z28IUC2ki2-Od(4>mQ3Ub zWZ;s@Y+!1emB6rY*$f7a%w-HLSC;zpdq{A31scs?WhU}l)T_VB#Y<OFNn+KccZ}SR zI<%cu>Tm{5@e0=x60eW@(fpEaVJ4RmPf&2slB}*1y$*p7mIgL?S~NSZh~jAucARpk z^~%J5oNpv-J>SUi$Tc@U>WX{Pv(*1#XiJz^1lOxo89SnM#kvDCwj7<3<uh4rO43wQ zlYn<~3&pc$x@?N=(q%oRRmgYvrG&|6Q%lt=bD6t#%$YoSYwUCNM=L5Ot5|VbESf9m zDyO0t>FF55k+5h+XjGt3hI2?$yQtH|Q{p1JN?A>pLdBYnEI2haDcHlOBgM^Q-K(ua z4_y~&UAh{^BgL(7G9goU)rQms(V_we4u;lcP7d}BZFaO2ycJR?@<x27$!9-b%g`%x z)f<*~8uYCUZV7tD)fvaNU^Sz{{(w;4K#^rk{u702nl(jEO<NZ1I4x>g6t}Cd3a_T; zgryx`7lT!JyjFV!B`G_KH7gua)(YiuXq#l<*_bMFl2<EWlf%IfT~X5jUsi9&%)k{B zE=`%S$|Y528qYMhNeNlYW+fbTVRK1zkqYr;REqNQS(VXsqGy7{G>5e&mlYS8xGk8q zWLC3dl4pj_O4XGno2E`k)mBwjI23en%1m7mo@pz1jM{>OHbrn{gr;Z<WOf>?k(lh6 zwN}krH8SbST4lCHT&I?3dpK>?Xu0AT<s{lMVXcZnk=8<wHxoRKRxILg)#`I;@M(6O zkjU1o#qGE%aFsS!s&^>Q!bD$DH`XPqxqLKRO}$maKptNf%;^@)7{=C>a4Es0M?%VH ziJO8m*HrzLmKxy<o7SpqnVKnBAe7{@VvWinAJ6}gR2p5~tHQ{2FC-C>N*h2al+C_o z#VQqnRTHL$XaqAbz>(UL6>SZys+w{$gEP(las{oQvY?q^`5jL2E|;|$D-!~v9Njfm zEuT>zaAKoslvKwoClhZilO^sKHP(hq*(H$@k&)UqO=#XrInECTf0iG3aQH((sm8t_ zqmZ{@U8c%T*4*l9J~IuC(q=7NEUXi{Qgs^hsf$I4!NFHnPAr)8lt1vQ(dN6;g)dgE zdKqi6>!Vp^@h!otM(v4ys(w#Gy^nJB26gp0Z19@lxWZ}Hii|Gh4yC@pl5U|5-L9UQ zz9Op*hB+OX#<fM;#ctwKKd%`}Qk$Kfm99w5;#tkM!OI}kwe}US$u%BBb&;w?g&|+` zORn!c9n(JLV+r@FM4O2PE3F+xDz$=4LzsR!siq2XhX&SlX@AMoiVD`%F<morsY$m> zTgx)7X<k#8L`*oz%jxU1L37oq4GSj*BrTDenziVvuVRvvP`6N6ljfuuBAc{~bUIfC zT$pkqL?U9-tXVUb@#tprxCW%Ui7Kv8<5;Qd)vMVmCAz3>F{jV9j6)mNbf&T`jS5y3 zn{sMmmdT-wp{*&-qERlJ)~M+!tvam4E4AusQdWlOM5)dd#v&IIyRxDrHYTk(9dzN; zR;4gTw}2H#L$rk^PEpzvD7r{1w4{kMPGptmghkC?ru1=jEnV2wwjyz9$YG6Hsx2qB z@Ju<B)p0N@v}J~mTDN9|Pq(j8qO%&;8mX0S%h(q4NX=B0SgCa=$bQkIiHBx|ElF7& b<lV4Lb7Gjtp&83R?4G1~sHL&z^fw0poW}r- literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0e0_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0e0_states.bin.z deleted file mode 100644 index 4af74d9a0cfd8470ba60189fcc0540524ff5eb82..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15173 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 diff --git a/client/resources/hardnested_tables/bitflip_1_0e8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0e8_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..e969ed97c342339ef592226b4f52b10d8770ba8f GIT binary patch literal 4522 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0e8_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0e8_states.bin.z deleted file mode 100644 index 4ff8482ffb199eaaaf9729c89188480985a5afce..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26952 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 MB4@(H_od4`;N8Lvar${>9?{e>4BtEB~8p z```S(a{Z6^*gyL%{!QQa&%WsIRfYd7f0zH)@BJ^m|Lbw7zptMQ@8$iq{?@)<zw$q= zmzT?qw4eW<{pbC+f9!AlpZudd<M*5IXp7%(Vk~~&_xb<RZ~w#Y|5yKa{Qu$qH|t;9 z|FHjixc>9|UEqPs^MCHcSI0osiOz*Iy7sU7x4-t!ckS$hpl<Yz6rCMurWL=BnTNmr ze(QW4XYH4Z?;HP}-Fx)%@7u@jpZXqk`M&i3u>E1b_nOaR0d=!GKjm+(|M&0P>&N!% z?aKaFY5$vF@&EVpJ(Y#^f4@J^w}18j-Yf4Z|5tz6{_cL1<p1ZpQg;9K{rl<PTHU|( z2{qMk7w@0{=}-FW{}!NDYxws1Yw|BZ;|a6>U*EF->2uKZ7}DDM{nP$T{&?K(_3Fp` zSAWJo|Ji@6{?L!gO@Hso{ty1U|G%y5|NGth@BXRQ{Lg&tf9$dUKkEPOH~Lqc^k>)U zpY?OW0rGl2C_uoAg&=(-|3CW|{C_X>-}?N&V}H&w{!m6*j(YQ7eBhK_PupuFZ#|#; z>l%C_C2Qx&wI${M7XFvLR`=y2|GEFO|HOTMUd&zpW8!|T75}ZjM1P00{Nn5WbOlxZ z6+be+ZT|oFJ^vklF+a+``SU!x{Qnn!p8vo3-{<%Iochy`>;Kee{`dcP^eO*;@&B18 z?7zOcS{`HncJi$Eol)<8MqShYC)>OK&EL1Z`d`YA|5*I@{$lw@_Zi<hf3ko0GyCrU zE6??#|F523zasDd=Fj!1ujl`f-};sR|JnZT^Z$dN&j*j~&HjIV-v7)0KmCfY`U4)A zJN{q%+kenX`})uS6`zAwsm?=LrTX8d{>pvL{3|;3cm90Wubi^))$%_<pZ^r^-#Y)5 z{`~*H-$%`#`#;ZeU+RCkmHnsmz5dVqmHlt+(cgb|&f6chPyFfsd)fIl3&ZRFZLE7& zfA#`&E@shR<Nwz|3yk-F_|^aS>Hi+oW%kbhe*WCgcD~-U=HIzT7;VYr&+G3={(ok{ zcj$lphurS^>KePI|Nd*{^Pjcf_Z_nC=-JQ9H|_t~8~?92_$TuXwD4%^$M?4N?YHWG zf%bshO1J&b`T6|1dH-K%Ywd5jzVP+_75~rA`2YF;&R_q%K#36CbvpSYeiP;%iSP27 zU61~Wf8RgB{^xeBcmMTj|EJdc&j|Rx`Fj1A`TxTA{lE5ie^*fX-{=3XZ$I^Y|Fie@ z5;cg`#hd=>_W%F*f9YTQpW@R&TP2SF?Ra%{_y5y>?LqTJ{%e2N->Hwi{ZIe>+WWhf z|C?U@Zt)-gtNX2w?f?EK_hahRbElqv0k1gT{r@(6-5vjAd+h7(9{t(>7qsrK{@~~R zSI_?svHvfB_P_lv&}i)($UYX=jsJ}QuQ&TY{lEJ^d9=|8j{o5zOW*vl|NZazpFj2+ zf6qVkasHFv^Pl{G_J8W3Z}I=O--0f^Lkv*A`48$%&F%T0`uu-C+8SZ|1^?oI?!R8Q z>VIbaMR)nXF2DYNm!ALr^Pi*9KZEtQeMR1EwExWiON^l9PkL|8xAM!sO?&(N^Xk(U z`(EvTw$}U$)}2Q4!n6NH{k)g>YrkWC{vYtre*WWy|G(^C@DEhT_J0$uw~x|!{rpS( z*4nRM?}H1b=b!&G|G5A3Prcc{<-h8c{_|zqZ=Zkv?fKPcP5eceO?>fr|J@(kU;Gig z?Qj3F`HQ~A|MCCB|BwIw_J7;|K^AuI`)mL0{|v}v2xLtnXfp3JB)|RQ2Tz~O{lD#h z_n(vYpZ|D&`#Dqj{QZ#Q|K%&}b^hJI{OA5p`{)1X{BOoPB+fql|Fgfs*UvBit+wsm z{;G@Lmfx+vrup~PAN@~%+&@14{-FBDzq!YL{J;EnzwrP5PwxZ%*>C)3_u$|5_?Q1H zbbsHkfcCrQU-`YiZ%cgO|H--k!;k$h`S1S-I_Jf|aQ@$UfB&4n|NoBp|D0q0(_j3* zR`>X`^Ywc7b@rQ|{}=sR?+;x-%ldZy*ZAc>?t5Yx@{<QGItcso{M=vnwJ(<+t?#-~ z|LOVvhx#AtKZCkH-H-2osDI7>JATc7P#O~dFAiEI@L%Wme8K<ipzhUU$i9`2^<OT! z@BjAie)=O&;QNDTB1HcegJ<_Q{woGeMf@@UzpnHj_Kw#7t>5dx1NEz4{=fbE%InJi z>VJQ{_<#L>?DzVZ4`;9b+WT#DJZPmy^@9C7wpZ+Wn)(;}s=W03_WK~cEd8yI>c9Ps z|9(GS{#pH}ztOLM{Xg*I+b#Ec`=>w8U;AGOUZ0=$e~tZx?f;BHGp(8Rr_X~rk4U3M z^}0XRANSW@3qLNu>hu0{pXGc1w|xAZ@_V;6C}IAuw)(eUyngr3??M0A*Zkkz^Z(=j zKlQ19o*(&9I{ov1tB>`++W%j(FMW9%b>6n#@&A3*f93Q3_WqpD{J|Zu)9e4{zxx+y zlzLzJw`JM>+xtHLT5Sr-Y<DKj{a^3_RGEGF8(;YM{JH;b|6kTe{xz?2-T1Fs%)ajC z&;JU4veWAQch{$Vfv#wMf8pQ!EA^nQF3_ELH|wA4UvR(w?|%FDdRc+`mqq{Mzy96- z?Z4&!_kUJ{rVXtBzyD(oTEt@YU;lsk+t2?&3x6-y|NKAqKXgvw|7pk$7JKkcGV%YQ zh0XOR_FMc@|G)mv{!h>yM*Bf22E1Pj+alKefBttZ>Y4FhyG7pp^ZC*V|DRq5ZJFEs z`Tvt=|0n<7UG*>D6*TLx>RElT$kL*T|8M`bpZN8D_Bq(bqM!dC)?5C#-}&=@@;~(+ z@QQ)I;L+><l9%u6-}_g2;{Tn0(baFa%5VC6wa)Kb?I!=|Z}o}x(eU|)yEppZTz~Oc ze!_qA^Y5RY`E&gF<==IG7yjD+{WmXogHGyS^M8+Cw}1KJZS?om>-`%4#Cz>i&i|kM z@%Xwg`TzE1Dx2@ye!cE}dG&_+i_qY<zx^-$c>OBW<^tzu&=O+#t+ii7d-vaYk~Qz& zwomr|uYpG`r~l{c)A#zn;Ya9{|A9ZvtNulOxBvaq`|AITpZ(3^{_o%O_x!&9y3zkX zy_a854_b#%Tlag(&*!Im>I44G{x1$`Fy#LMZTSMt+P;LXMY#Vn^X=C1fA|0C|K5LM z|AU|R-+WfLo%?@v#lL#F`ajlBZGV5?x3g}>D}Jm0Q|kUf3$x;X=YKg?gLZ>~HWp3% z-~JzEpGx?F|4;u<{=ZS`f4BYr_G9()4$R+u>i=e=f3|=AUije;noBbOfBygJ{~G^i z|JeUi{$KZeu{h-IbfB5$`n_M{+5TM*{`Y?c+QQ-VpZ~r4*X{lH?*9_`S65fpzx?$g zKKs|&-}Av6>wN#+{CV6B)GF(Lw%#h?&&r?MU)cZEU-y6M@%Y+*^(%int$p_6YS{0U zb+Yz1vj5+ct^M?WPixxGeNWednmYBX{_joxQ+@uvSbW&aH8u0r)bIR${)zqnjnIfY zzvchUZ`*(U>i@s~-T#yOH~o3||LJ4<S65f-N6oLT_uTfk_t<>C1^WNg|FQpX{~!H7 z`u|1H(w1QSBYCsyv)1qZ_VU|*79@Wh{1b2f+`lf{{;K_q`nOj;>+^ncw^iA%@mKxx z{n}HxAMNVbJzo#n4z>ULE$R3drt;@)>h>@FuYLah*K)I4_pj)Gwf_w&y28OLX9%{| z-t8~>zxa3jYrFrTCQSeD`d9b<AO64lzoAgQ-Iss+bAHGF{TKh){?Gbt|2F<Ry|;eX z^5^>>{Js9}|I`1wch=XHfc9Q;-?D$bKjn}9O^lrl_J5qJ-)_yf{qMgm{^h^@JN~MJ zmU0D2Ko-i#|I7XJ=>NC<;1w%BK;x63Nr?H0|Es(HhadU>qyA(4r}f&P;apG-K`gS5 zFZ{nAzQ#cQ&;6hEf6VLG-M)u)bZ-B-pZehZs{42UmlwBQzyIg|Yhm2pU(?t1|Jw>* zKX&=a{QCbt-2X4zSGWECtN$VU?dor4+y7qLe2qWwUwOg*pXv8D&;9*+d3}6c^|!su zKjv5czh=_+^!K#7bvE^@_iw)PDc;V%7PK1`93rc4+kdYA3R+SX`uzV@EZb35Km335 zN3!1ESD*L4`m_GuANR-h><|90{Pw-?<NJsI5B~7C`X}EtUv|Sk|6Xu?QTTtq`2V=A z$?ix0e|}s46_S7YuWkJg8VCn3ngcPw8&a1)s=xWo{8jy;*ZxSA1`A|A>fCy8rD6E* z-Yn2$OWw(I^|n8Lus^T2_+KCMzxaLqlK)@!Z}=y@e^JE$zaQeuukC;Hr(OUwhj9J8 zdiCzq|BK(cgK`<D@5A@@zvo|Y{SFyEo&Q(A=AR^J;p6&UpoNe7-~8Pl_|O0T?brW9 z^8deg{(OJa*VaGhUw!_6pnA&xo4>?m<INx=-V5!Y{JebexV_zf&>n5jbk+VJKTuai z-v47?`wz6;oj>uv|APBB{w)U&cpdr|^W($CysH1jd4GLtUPb)}Z9)I1eEa-w^N;!S z;@>MBcl{p?*-{Pb^wih>n_u7mss3wudgb14$Lg=H2kpp<p0EG)`|r=cfA7Ee&;9S6 zx^KTgy;{gz%vMCNR($*ZtAFMHpZ|wEhF<xze0F`-lt1A&f0{>MTz~Gr()oH3`#S!8 z<rDr}n(Wi~C;#;R!awy%e`_=TeH8s=A9wnndEEc)b^mVI|66|g&;Ro`*01<~a@&9H z$Mw7ZtA7MfG|T^Lzi__peBHn2@9W>qt~Y!9-}p;?_WqAQ7rx%Fe0~1S&;Psr?N|RR zfAJr5Z{PahKkrq3SECo3@9cv_j{enuSFc$ADL?Ga|Ja}ZPQUnfnfZ%-^<Q_S2Evzr z0^j$4JGejX+xIPh*}*+d<kckg-}i%e>ffyYuD_^%-|zjPZHV&U|6c)ZFuH#Aum88d zUr}Q8{lC=j^|K)j==!LCmFGbl#n}Hp{@?x;+=%`^>(_dXuD|;s>lM!ZxBCD1&;R6~ zr{li-+5Z{5vFQ1q`HLd{&-@=g8@xJ!A1%-i{@lMvqZPayF8%iZ7k~W^{_uDIZh!Ls z+5g%f<bU4hItpG>^XC6X$b9OH{eMB5)c4zc*f0F~|M5Tm65zE6zd*AxhyM$Iseg1| z<^Ib0=uh#VK&6fRuD`zPro7D8{(su2{uC#C=s^72<4fnk)06+_M%n-R!Tz-VOX&>I zhU3NH4UC`-#~=RGfBADc@Yj?1v;Ujk{{QT`{9E_`|NM4*-~ZkBx8+s;kBydpL3>B{ z-n_32+70`&{@edQf9~&u)G+$*|DW8y0latR?bhpYgx0ma#lNl%WJLAz{cry()qgr~ z^Z(PCpOfc3iWmL3KKoDg$9<;maX;@Re*E9_bN>%;upj)tR(=bpsS9evgPZZlyNC6) z{{Q(sebP(+`@cU6{JowTKllI9`TsTk)i~En9slz=_3xw4w!gQk@4xl~OCNvnukRP$ zuiq23{(rQ6{TuoJ^KaVK{13nK|4Yh$;dk<jA<Y-@^Yw@RY+n7`{#Vy2{fDJ5e(AsZ zZ~W~4pZays#j4<LiqXI6wf{d)L|Y4bc>e`=`M<`0>)rmSSO3fZ=l<`*{#`%n3;*cX z{;hxVYqjG)&R_oj<E8$a*S+pH{dN7kdX+S^L-{1$-sak-I=lb;pZ4GWS-<7K`p5Sd zzTJFp`}2RsfA=S#YUz8@fB#MUKiL1<zX`JT?ePB#?x1~?r{9A1QTqSs|KI+9^Z#r0 zA3zQIXZJx3`sDxffA0TV58v_y>O)#XR_xS={;mK0<9+zGCQyY`crv2kY}SWwy{Jpx zW><GF|GvF<|J3(em+d$Ix3+HWx9WTwPS8BR@YDNg|Ns1bd;NHQT<x2GU&H>`fBg6T zeC6jy|9-tcf4}a^|GihIYy1y?nSXcxR-=FCOHY>lp8f0T-{|Pk9?obF2fV^+w1+d= z!x`=2P~5}euKjY+{__9yBlVk}|9@8hg#Z8Q?*HP)|6jWP-+kSFsVDOn{QvTQ>BsuV z+y6x@uK!!JXuBiiz$D*)Uk@kizJC7szrz3BbN{=87J2jK&i{LF^8fyC^)BGmy!zk% ztNiBv|M<W5Z_uFxKkWbT*M7NJ{%`-CfA?R3))fD!|6%_-|1bOh<@G=E|HV!R4_wat ze;d9!2E0ymKV;<cfB4n^+x!35rRx3wb)%>EuwGxomVf`pv#h_MrEv@U?S9!_*uQgo zMOFRnAJJG(<;nea{{H>C+CR^)9)A~~fAqib`}+TL%=O=`|NrmLTlc^BqiZ`q)ldC* z?QgX9<Nq<!bGGka8Gmp8)}{aXd-B)Ue)%3e4|M**aZs!E)wlD|(`7#YpY?6~pFg1G zNyrCZOsY5fcO$*F^v^=8|F3O8t7atZ{kQGk{kVSB|L^;kKmK3+ar^9g{ipQ@e(gW~ zL;nBy|KZ2#{d(fdE&s0<1_#LB;OYA?4_}CVRR8?u{Tcr)8S0-PEl0f#-aheXgTD9g zJ;C>9!H@gUHQzb)-8uU&`w!ph2OYyuKly(4znZ*<{Pv&1S-;k|*S&_e{7(1B2WqYV z-}K}1htL1#ezf<fcle`g{r@N44JW)mm&fh>)%SXNZO~`iz|*$zr+*#Yzxd<yz5Dlm zZ2k96qJGQ&>MzcJtQXXJ{8P87U;BIhuRp1;>%V^HzxuYm?BDvFzmxwj-uCa|{-1>( zf7ZYHQw$#4`~3gb=lWmqasR#hK}SR#{Qu+sA;^h8`Ty*nfLE!W-;A<Kb^i1IU)E21 zXFcto{r{h8|E2K1Q{uDc)xX>RE%@)#&-MRfUvK_=U-$U-H}{pl27(r^2G^h6zqMk% z{q@h+PkmqX=YBP4cI(u6`)lX_u9t+)#e{FEfA$}|z*s!)|Hl1)=6^&vlp*_sz5V~| z4}Pw1JAXfN4n|w@%b)YskMGMIcl`06e_!s${QmRqAO3fK{k-t!@$b-eM>h3Vpk3<E z{_`K3e;BmzXur|Fz0cnV{PzEU!~UE9?={cu6aU@3`dPl#_388vRwaMMzy6o}T>sBL z{D1sOP$I;AEXw<T%C3Q+bCJY9ss9f<`uG0Q_xpR^%k#df|Msi@-{t?OzTe;VKRoc& zy8n0n{|fv0@A{v=?9H%M_{;wKZ`=R$qy4}ATmGy6e+1qtu|qy^Z`Jquo&S%6=8IOA z{_p?2KKu6nr+dFff4}m-=zQ&z|0{o$AOG=v-hSPEYc56pobwO7;`n?0?*FiLcZr{l zV_$bS=l^!_x;y=ff7^fkod4?i|HVK5yW10YP6PMD|6Plw%>AE!|Nor%|JBR>2V4A` zT=Rc2XwzTNjen>Ahgtsv9cPt<woUKD{>dNrzxne&5N(Yx`<4IN|G(ez|7!nMA9O02 z$N&Fzk3ZMW+h3twf9mMAdv)N&Pw{cpf9JoN{xjZcf&afJ_gnw&{P1w`-8Fw}>PjV# zhyT64=PUAwAp0-<V1N4m>(BZ7&wtK38?Sxe+ULLdi}$_Y4fp?YZNAL^Cw>J~$o{xk z_vpQQck16c|5k5Xzwh5~aKTjbub$!m?m7R@ANwEj-~Y+|#JA7Cect`I@+(>se+xzv z|L>vCp#2|G^{2M|zxX5g%D-;(6ND~+4z-d044DjptVuiwn!5&{u;u^%A!zz!-{<?^ z>L=R&OrKYO($2p4$<NuZe*9;C-+uIe^{oHU{a<*8#Q#6|bbn9%qhCKu?jO1KH(dYL zzb(JdTP=;B``>lme~r37ay9(-_g|LyU%%^r`J?}V|71`7SHE_j{m%by+JEKOr~a3Q z^}8ll{l7kuc88hR|6#8Ea`AlE|2sSXuQ2_)<%hrEZ~uRP?EkR-%l`*D*sAc4^uPSS ziT}I5&Ik3#L1*y&vHv|k^}q3>|Df(w(I4<8TK#|hcE4U+zxV&Q&mVQE`d69YnTSXA z=Rk)|*<Y(a_uu+I^o%pm0Zy15t^MEr@q-8cO#jwb&#$t5|9^?R{NMk-_P_qu&%F<2 zH?8=0G5_s**8Io5D(}tj<IrB#(y%}0_x*qU@AvD&fBg5=XUG1Rm$)DI`^Ed^HlTxO z`aruWuOb~pWBNA#=TA`Q5oxq&y(;MRvGc!P{ctY*cfIo8;*awU>gMItmmmKh^8bCk z|MCCdALX0>k303h;cNZ$kM{rO|6kwpe~!fdcSZl=)&Keb|8W1;a=lu};s@wn3*rCz zFaGa7^8eiC{f7UG8UCF>9PU)V4Kxv)*LiFHwJ+tj&Ex8~f=);Qohc;G2dd2E_x;yi z_y6Y4`!DSO>aT{JDRlnParlWsncvU%*g;pc%HH}v`4>M@W90YyKdirA-2VUj!@u>+ zkMv{T{a?NB|Mh?N&;QS@F9pr!fmZ$=umAi$>iPet|JT+2yZ<NtU;Qur|NB3~j|+^1 z^oQHQJINl|gBCXP{}ey||H=QU|HJ=5cNmHP%ZKjQf)5iT1?lwv@qtqWKi9W@c%1QX zC*P<2f2=@T=F0!gzw@X5Q+@dP|7%bD*Z3cO^-q4+q7c1L^}GM8Z~9k#7IZ2eXk(H7 zfBQfB?EkF||JR@S-vT~WaXDlGs(tdW-$!rT^Z%TGyB@Ue)_L3hTjx*i^Z%B4`k(%r zbol(ke(B#6|4P;VVgB_0+0VUmX8!+CQ+0p6eaQdsb^9GblP>Gm{67|7^LK(=z2~y{ z+P~sQ|1bL3{^lpBfiv~r+56_XPmX>6cI*A$JpOO`R?y&1zy1Hs5C2ls{i%unKud@h zZ|mQ;=;QR+F=sE|5BvB0{x9&T<)`}xKf1n@7u(<U$zJQf8)zSLx_$l1U-ni1P9A&x zfBN?SH^1*seI5VrFY_1BI)p9f^XHrVubKIg|5W|w|A!zAhF;hiD5mf;fUND;?)`S| z|Ly;&|HXfb+x(wh`)|qe&-J3`|DS){U%z}$`u}_8*ZG70IzFF&328HHq<uy{Xg3&W zV-dz~R<0lW|I~l74|`ny@%jG?Kh6vPC=UNwA9iei`+j+;|DK?^q-Xzs*8h}$S}*+H z{Qu$lkCzX<M&3>bnrU9Y{om;W|Eo^@m;Z{oaQMH@|N55~w_d;hcm5aWy;WcJW99#5 z`|dCOzZtZ#Zuv=j>;E^v$0uF<6UyFWZ~9;C@ACggzwZC?WA*v}`lazJuFCAcm1Tc* z{bTm(xA%81_Ww73`vsl*+xJ`rHFf;If;M%$|9Sh-X|1_a&rklU|NY<0KhN#Wpb<Co zoBi#7Ve$Vz{=fRy{%80!`#<|@{<!b0`s(_6^Lzc1+xB1lahdT8#_^`F@Q>tu_J6ze zy4~G>^Bs`<G2{R1XMawD&dp-~ynb%gzom}<R<u76U;01g-){e%y68K<pFN&={QdSX z^-q89{&&vp_v~Lw|E1gize#Ls?f&2C@9InbXWxB(AJl{?{O^DFcm0q0@Ahtw&bQzD zKRx&V>ihq*|F!?Wdd>b?{m$?H-@p73-}C?0-~E5;&A*@T&janf1f5|zz30E`ZH%1_ z?eQ7w_kLUZ{Qt>s+IRnpZ~y<~{Qtx8T#q3KR2|;m8~^A2KXFjWC;T5YJ_(wHFn&|- z|M7p<5BdN4|NQ@zVp(Lb{q8?vjX^V{);M2!8+)a3-SWRHIKM9aKV2@i`tRNUp7vK( zhyTCy_2PcS`mtGmKEId$|Kk3Y>+ios|DFHp`g8s2x9R&!F8oqF^`GyZ{r@x7+luS| zetCa7|NOpkhX29u@6S56vF84z^HZPae=VOD_3!lam7pzMkPs>To&InAJ<!I8SAX{J z!rYEhZ~Dhxy8g`4_}YKrbN^qR|3Bl;bA~_mSO48J{Ac^eUgE#!@&C>rH#1-RzY<(u z=)e2_{n7o^Wp7sesNeT@y&NR}T-@~y%ZAjDKl-=-x&8Go`Fj#kY0Q5B9y?$3xgT6< z9J?P4nru0*d-LadcKQDg{_sEl-~YP)-QRvtqw8Az<8YDJ`{n<=KKE<--2eQCKywJc zex~Gae^bBZFF2R|K{})iHhjAIf9rYs#r^v}{}25RTKG79?|<`C|6f*v+JtZa*Jk{S z-nMVT|H#^Z@)iA`?4$oLdVKmBbX7~cO}*8xAIG2X{|V~X?%(iFTpqSl6}l>N_W$MQ z?Jv5^|5XH?pCEnve+g)<W9*Ij-12s}eBalfTf4v0Klb(gx+~|8*Qflh{IB-!?C009 zPj<Yh*Zv3IQXLHK^sGPs|MUC6f9wCf(^-H0-jDUawqE?VtnT&arT^;c>+1iT-}=8| z{_XQ|;8O*`b1{pMdbN+fZQu3(G3tRC`uhL#KKu7h`mbgEKTZ4B)t~WCe)c~){{G;1 zzEAe;$Hb5RU;M{<%76bg`$3E1oKUxgm(2YCU-Gx;SNoga>Qh07t*ZP3Pc%FK7x;Da z{mt|L|NK2)`}uqt<S;#RJNuHq<xhSYSO1H@`2YKo|H`*ud;3be{?ARR=SM3x@Bel0 zTD0T;(ZBjn{QsTp`n_NKe!b+~`l^P1>FfU^H4ysm$v^sc-R{TrGympo`=0>rasHeC z7rvV0{lD^0>Y#y%_y1hKTrB@T9kdPc@xS>}pbbX5cKtuOZ@(Q%jNaY<=3hRv0quX< z{{2tTF?0{=|NP$o>9ocN{}*-L`2RY1y~6#U@z3k${IA!kzu7$xaqelb$ZPx0|Fb^V zgH|V?9eb*80cr((056Bj`7OWqzox|hmoNUQgZ8ho{!{)Rz3>NUO-(mw)fec1UwP<h zVAt8P9#7l!&;QTtC)Qu{z5jWG>tpBb`%g|a`kVW-KJuBrCH$n&_lN3Ye*FYZPk!DX z{Mudq|AIgL`}i({HXL68Et~>xIG*>ve_p+n*Ze=lpZBNzzW?XX;=eEM-{<`P@B6+? z`{lnh?F^QKPFUDy{=51K^o)}E^Z#34htx1nL5mTmflk?6zW3X$ZUXDtmhT1m5a+r! z(9WW4q(czqS=L_){<B)?Uukc>{=MzbPH5k^*7-Nz@V_`D*njN*+6+E81k{LsgtplC zzw6Wa_5Xv6{=TfPms|AT>h0>!`+t0vKRQ4Eh5zFj_50Su*X&E*|Lw_jssEUL{Nj-R za=-pg4S)T${`K?zzmNYL-v(`h|22Q!oBBh4lfQtQFYg}_d2q<4_w{y{(9g>j|Mg;V z{j&e(JN~Df|9|%X3Hg8F;{Wyg{x4nszdxql^n|_R|Cj&0AOAm=|97L?|6e~{@|z(Y z%GrNjw;zwXcK-Q)$A9J4|NFoFSNSJ<%kKAH_5bp3|961b1;@Sl@A*yq-*Nbv%|GOS zf%j4F1n;Bl{QvPk=p5%?{NM)tpWS-3pnb*0|F{3|{|DRh1?oeBHo5;@{(t?d|M~L& z|DKBa0IHDmB)Qi`^4{C`@htL^xBBAzk6-?6`?&qn-fOV)+TZu8H-hH*7yY^YX8!*D ze}DZrzq<eK{(D{j)$jfPXPF;&C;tE6pSSye?ce@O=;?p0ziWSQ4?FgMr{2xH`r!S0 z>a)E^dpM MB4@(H_od4`;N8LvatMeqq1euk>I4dw%$T`*Z(K|DT8Tr62!4`Vs%@ z*Z&h=!<+vIf0_SpzsbM+KiA~5zpS6{|HbUZ{;c1xUhhA-zpi3U>ff4w@=xlwfBv8G z-~ZA5g>N_Cum1G^;=leApz~?pAN@B!r5<#d1N5-x_WvO3&i$W$`+s!p|M@@U|MUM( z|G)PCga2Rn|DWCe`Vwg167vd&a!8}=|EgdAzkR&Fehn+A8~u3F#s{;mK6opAKW6Ry zZ2RA;ptaoWzs$dj`M=MX#(pZ#{<Hsn{=N;p#o_hZAN7y^zMud3+0nmW@6X@=cg6qe z)%t<|)?d26t3EsR&-~Yu-hMOxdiwYFZD0O3etf&N|6koH(D@6GZ-82@cmG8~PM695 z7k~NRwE6!(qaKeH^~wL3{O>jE`|LxW*UtqVzrgwU`N?nP<$wIY{{Q#A<WIf+zp~Ho zm;T|8_+Kvh|MCBy|4;om-}&*i-t+&Zk3a#kw*J*6%)=M<d;fWF^IQ6}J^O?HKlcA2 z%Y`2PPyY=*eL?<PYUcd%SBPc9E1#-uzjXI!`@ixC&>`Fw|MNdppPheR_s>K3f2$V! zdw(JSE~MpG|MR1^*VC`@0`*dL|MnaIV}Hrtu|M^>y*$1RC(9N8Us)Y~zwqxC|EzuL zSv#L+NACYoZt`!__wDBUF5H)W-2bh<zpkU6eGC7||1Hngm;Mi)zdz^i`nrD$cY&6K zPhDI8ss73}`#<LPdUpT)=hpXu#`g06#aI9H|9={E5I<yK?tlCZ$caB^|F_QpuTrf< zU8VZ@PhkD>J%OA56n?(H|4HDlRr5c2pZ$FP@3p#B`)mHa-=AGu_HXyoAJhI;FR|0w zukkni)%u^?#om8@UiB~PXWW$k)$8|uY>oT*^Z2iw|4p5tb1_}t&i{!AEinFn=(YW~ z>Hm%EkPl_3=l%Ko`F|;!|5rc!wC=`eOU|43zcT&L?8g=y|NkG{uKVxp$DbVk>^Iig znf(8853=rP_H+Mq&@S~q{}28sz5!Zz6b{;&Bb)XACHP?D`CtF2pRwOv^>6X|6@P@{ z+SmPG^v^!|-}(Q~U;Wp<2}*>xk43p#zeJ-8bS{$9zbE%s?fAd@%irlA|1Nff9pU}+ zU-b9?T3&a*&i@^MU+ez=S^NJdd_b%&KKX6C&A;RSr+@qZBtGWfhx(85-<4N|BaZOi z3R<08n)`eIp6zw7=lzO*x3m9~edzypNcSOt57P^N|1TfD?#|xlUj_DccSz?1h1vfP z{`;ri<p2K{pwU|J1v$_E<2k3HUhz+S;FL|D|G)V?|MTbnN8Z(Q9j~ACzJAjG+5f}2 pZrA_3pLHBOd;mZB3dHdLBmb}5=->3Y7?(!WJN^96c+k8!1^`a$lT82s diff --git a/client/resources/hardnested_tables/bitflip_1_0f8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_0f8_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ebb53232e1a0b00cea7b09fbea4c89e7b4a7e721 GIT binary patch literal 1589 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_0f8_states.bin.z b/client/resources/hardnested_tables/bitflip_1_0f8_states.bin.z deleted file mode 100644 index 11466136fba4fb758564212a8ca8616e4d468b67..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19601 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 diff --git a/client/resources/hardnested_tables/bitflip_1_108_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_108_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..2b87ca8f29cea5c6c95f1c9805c1934ee622f802 GIT binary patch literal 3508 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_108_states.bin.z b/client/resources/hardnested_tables/bitflip_1_108_states.bin.z deleted file mode 100644 index 31234583d6b242bb7cdca056f95a2cc0a5066435..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22550 zcmb=p_4e-V(#JL%R3C8qS^mttRv9WVxzpLgv9j*;v{{QhoP{{V4*c3Sefn-*=N%%i zn|L>T`2X+y|9|r@UqAl8rna`G_Hl__?cBP5UrT@e+4b+;pVFVR=hy$AQvc`Q-TM8% z|NNNmS-J9G{r%~`{(t`b`M3Vo^|f!^xBb7L{^!r0EB`Z}{w~(PfB*mNf4_JC`TY3Z z`>5^lQvaXszVbi&=hy$w@2}^(rC$H({h@y`&mMmNY%gy2->A?2mj3nsfB$~JQ<71i zecb-VpZoLvzdZl?v-SVDAG^<fsbBi{(vR!Ew%&NZ|Csatm-SA6&FfzGxBt3+e*cvj z)BSJRXZ?NidjIYB{?FS#W&YWJ@K3qqfB$3u!~U1g*?;y`ech31-=F-?{%!y0&*%Sd z>h-_XyZ`R~|M<W0@A^;b^?&UD`TxFkz3$PE{bm1`m;Kkg_3!#S`>VI=f7gHe|Kb0S z`q%ZZ?SCErx3T_K`M={o<v;HKG5_D?`se@O{D1uaL;WB7|Nj49+W%et{|Eou?D*gJ z{+Iph{&Uj))8FYYzNc@i`LAaE|No)$XTSZg?)ty?|MS20@Bcsizt(<B{$KTf+yCeP zzyHtv|M`EL|NpT6qz-b=C;6Cv3=_n+{`t7<t^SSmNq>+1`G5Ow{iOfz!~XfN+aJCC z|D-?CYyL;u*E8IGQQz?Q)v15_J^x>PlV@P~@&Ciuc>j;~|M?l-)bsq`KKbw6EB|>; z{QvNO=U@AO^8fq)AOFwX@OOUrd3o8g|LVzq{Qv#2e^7tq{}*`%hM;x-=ltIc*4pv6 z|Hl90|3Chp`ThUN`F}qC|6$Lt;s56E|NQ-*|KBwK|5lJW|BnCS|Ig3BaIOAP{YQ}e z5Bopz|NZ}cng8eI{{^4^zdQM|@Xzzi|NhT^f0h@n`@C;YNc|_zTi5q}tIqiU@7|-^ zy85T%x$Cd*g2nBn3MNp>=$~Bw<?mzd$M@In`SfpT*k}3L|JN^nzkdCE{hPnh+Q0rE z`r-98+ur`k&;D!w6W`o_@p=B;f1Urgf`U{0|MM;TAJzYx|2O^r$NDG!|3GNI_rHyQ zl9xZd`Lq4a=lRcmuD|<#<@58&Z}Thv<bVDDa{k9Z^_l<QzPn%iGk?Rs_eKBv|3Ck4 z{Mp|6U3|IZ|K&ITFRy=g|Cf6H?{ohx|3CjT|8qTvk^bL)@&EUe{@*_PFYMQR-XHG& z=Knwb|MCBi|9|}7``4Z!<=p?!^!ljn@oVl^{JpxX_LF*jgWjk5rF;H&|6^uo_<Dc! zpO1-;|2sb8XLwNXt$z8x$Nzu)Kl5+?pOf<c&;P6b@AUgt`M>W^KgUbI*<VumPyhGN z_~-xk{GY$`&hP*C{(t|s|NH;5`+rzJ{{8<`y}kLr#ryv2|C|1Q{=d`z-~X-uBma;8 z|MCCw*ZyCw|K<Px<9|?~zx}`C|IxqpPv+15Kl#78<$wME^Z)Fh_)Gu)d%w^9|F{3U zu<z^qAMt;%q{r$1<r(^B{$Jf^FK7S%^!>;7b^qjl?tl89?Wg?H`pN&r85q|5{}%PX zRO<id{|pEIwSTDp{q+C(FZPF@*FXDT{Jb6-F7*r^;{Wg8KL7cw-P)V~Xa3E(Tle~( z`*#0-Pxvpi{)@ji^M9?K{e10wknrVt28Ip)g%A99J^ugTA7zGyzw;OTo&V;K{Qvp4 z{!gwi`uX_(+y5cw=l^=O+CJ;=t@pS7PTw7K_WJs*f6mu`tzY`j`RAYeQy;I+t>652 z^{t=lr`9iizP|MT;`#dn{>t0_PkH?H|HHTSU;gG_{3TxZpW$!v{~PvStyjp4)XSy) zX+F3AhkfB6|Noa?@BawO;XmyE*)RXU{QsBv|DIo|XZY}M`RDj^^%M7huUGu|TYkR$ z|4+Nuu9c6P_rI^=|NY<f3=9c>)&GhAXJ+_){@>&OC+7b-Isebe_&@v%-|F}A&HkTm z^{?k={geOC{wuEkJN^IJfA$Ov5&z%r{a5^tpFyGj?|aSv^=to2+WxoyKi~R4B-@@Z z{rC9N;>$l5{ty2furB83!qeINqqg7Q_5b4A$@V|nPug4kzwzR+eC@yN&*8ZS|1SKA z{xbic`t|=;9-o){AAicP|IhQNzu7;H>H}8&zZ(1d$^YW`vwxn?+8*^|_pP7&U-$d> z?Ems-?b*{w*4+F1ukL^FJN?l7|EE6o+x`Dz|64xu|Khj#-@eNKpMU57<oc|ikN;nO z|6e0~olR!tm%pkPzilu3pV|EF?f;wq5C4Dsf9?OZ|6j=eKK@S=e{uQ9|LfIo`#b;M zUx1|pdA0wi{={$o6!dp}_~-R+fBo}r{u8Kwa{acy=AZBXJ(2sZ_*aboe(`_n%KmxZ zU-~h$*8jNi-Tm>G|F=GW|IJeS>-$sBf64#-<No^pL~yxq@n7fvtK0tx|5uOuzj6Pc z`5!m`e`Eiz9~>X^{}i8)XSnnK=|B1J|9AXXzyH_%z`yHn?B!4W+YL?9@&9-J7YD@% z|F-?Jf6W(sU;pfX@bCIRkSJkqX!%&b;V;+s|0mzt|NQ*_z`ySQFYOr^RPO#S{CEBz zs6ec~`G4NG|Hhx{|Lp%;|LMFoNGm_XoBuBF|GV7&-}Aiw?f;Me8~$(nclbZ3OaNs+ zeug*p;LJPO{;zuduX>%I@l_>O_Fw+5l0P+7+rFgoZTRbN(ckSsCCYz;pY8YU>t5bZ z{+<1I|1|yM`b&RJ_P>?!H^BP8?4A05lfSPisQ>%*{`B+z{{6oFf7NsQFaOrQws>ZL z{Y&w~pV5Ej?40)h<L?X4?W6v?Z?9i`zP{|Y`oHkJzv}<aOZ`vZzW?T5dDM!@|JZ-` z&;1AAruYBfbiV%E^ZjN2)0zL-U-@Te_)qA6{PzFC=l_Slou9kmAOGF|kN^Mt|K#8P zE&ums9N%{9KmYdsH^2WsTL0|+zl^xw?_uRAxIq2(-}u-6fPeb8{$2Yu|JGOa|K}kk zY5kx2hX3phM}F?tdfb2Q?fx12Q;PrXE&ct({~tr)ulaxex&H#!KmY$+pZv7F_dokg zdxnO?H~-K5)sIxW|DONtulU>S`@jEJp8ua_|6jcJ-}bV9>+8c`{oi`$=l$uA?r(Y8 z`RDwj&;JjdzxA{K+WuP~UC+yd%Y?W5KmWaa@mRj@-_if~{xAPO^Q-;$A3s6mYybc6 z|3G#Am-s*Oa`jp9zi-JO2BqZa-}3kEeon3z|MuL7fAjhKn`=tzv*PZp__w8gKKJM9 ziI4q0|M&a-^w<9V|Le@ezq~&?f9vP{KXy*u6Swr^{V&-||Hb~i_5S&<>fe94|HiNU zA7Hn2{$9KP7k}9=`YT=gZ}Khs*Zgmz|9AdB`v2tH{IdVY|Dz;ne*Joe6LbE*w*B|R z;^+L=$HGtlFW3IBe*OO1+x4FRc(46mJKw$`?~DC`y3*AD_fP#d+xC~8f#IKh&EM<6 zf6jwSEcwI#-=@@?f3;`+WdEl=58Pq^)oKhA4F8q?@BSTs!hZE1#{a>^|4RORl?Um5 zZU23LU2W>F|Dp^x{=a+k-|sJ|;qb0rz5Wx(b?@S@?E7{Xp3RQ`wSTw&+`IZk@7JS- z^zQnbfA51D5`UNf-~Dv{_dgH+f2jXq|F1p*(!4sq@;}3aKkMNo@9e+l=MgGxx842U zx$Xbf@Akd({=5In|0n;!{?q=O|JfNBUhm&~t^VA9MurFfl|KCs|26;N_y0fs-}!m} z<NqJ^f9h|2mjC{_eBal6-+!Nf2FKTaZC_VEUHj>;t<(Oe&a+Q#hvz`OH^-OG-~V(z z<I~0c^%s7w|9j8pzxVw6D?oKc`nCGU{xbjj=hg4pR{N>{?0>1Z^@l(Amo2HEFaQ6? zU(??|!+$^h6@T~Uecj{szd$Y1|L=b8Z-$n%_x?|=Px|@z|Ht}QtJm-Q`~TM8`M3Tq z&-fj``+rFGe~hwr<@-PVpY5UHckchq|HuD7{Qsl=AE>4J%m4q?@c7!Vd;h=vBmQ%8 z{gdDN@AuSSy8JKP?ceKd|80No6jRp!b2shxf5DIY|JJ|%U-_T^fBxSEpa#MHfBXN| z{|40pNOjr&1)ta%zSr+PZNGhA{gR)5Ra-x9-&enE_3!w55%$~j_Je9#`-Usu>%XS_ zXMQKo%)sEW|6g~<|DW{?3ICJd)PMPVKKj>u#-H;4?6<>OP4%D#=I?+0C4cn)DcApz z-|+wAAOE+%Ry+RV1ZDD-*Xp-_y8LsajpHBt6Mq;PWX}D2f2AJO9=Q2`vOPGQ7!v-g z-~D<24X9!M@&AE;(f=R*XJk0=%m0u5KX!(1^8efaKmLDm{=dogf9+@d*<W2$CG)@X z*8j^t|NS}Ma(|D${?++4lfG?T|5xtT{@vSu{QA7-)7B5=Yj5lK)~}84{;SukzM%G# z`hSa`+b!+?*ZiIO@qJia<^QVHKktA1_kI43%Ch>uZ@(}9?ELfj@wxl1oco{jJNtXS zZqNVp*iCW&*VWYhzc%aNeuI5Me{Y@Vul%?8YrVv8^Iw0`x7R<ahh}NZx9fk*|DXQ< zX8j-epOfuD==r32o&Ps7E6e^V{{FMP@?ZA%`d2?cNBoYK`yc(c{#Uxq|M*+=yMKR= z`6s>R|L!~BQuoZC^L@Xs#~%Bi`R)J9`9HV+J9&E_q}2*8Z9%Ey{EPp)pZqV|ynpJy zbmo5(|33#cTtU@Seg1!bhMAx1uil)0?XCE0^SJu0d7wt=g6==@n(zNF`VVT|eAlY4 zx$&cZ!cS%fi#dPqulx^cA#MH-&GGm4U)c9;?*H1Kf3CCr){mX{|8(8I>p$(^|4-Kg zw_Epuny8=k|DF5sZ~veB=X?LJc>llq|I`1=|9|>l{T~!fhyQ>4-~JVphc4Iu+5c_p z`r6<2@9GQx^Z$JQ?EjPhzUTg*{;&Q&f62eo|94;h^BC5d690eu|MvgqQH#W<|JfUo zpZ#C;xc~V1|DV49=${WN3V!Z){OA7j{*(W#(6V6evHyQSRkq@v`*lD6YyUm};phCH z@B+d9pFG2*qyN8u`&_fxKl@vKnte39@x@%S@c;DkXZ7>XpMQP|EDY*Qz4_1bq5k5> zdV~KQpmdq>U)}ou@&C)e{eLn)=HHL{-}YBOFW>j;Re#j}Z@bI>Kh+EW{54zm|L1r} zq5r@9>5r`2_jCTQD*KoH^!|&V*?0fHc&;Dv-~GJ(&5FPE6~E<c|3`26*LvUH;r|W$ zZ~lMzUa=pY-!A!o!Dsz{{xbhB|NrtU{|~4`_OJi{`InIXspVIBhCTmZ{+a$c{>l5l z@g9Hv9e;j&|DU|<*X`4u?^gzOE95~<QBdu|Z~(bSDh}>7u0Q<j|I9x7WKiq>XZ?xn z|4-{d-9?6L_0{YD&-u^Ha3cAC^{M~yuj}2;|3Cl#`8jCqQ9SqmjxR4t>R$X0wV$FL zUiaeDt@YR5Zhu!_0;<UqKlPupH~aO&eg6Mje?p~u>`nfQ{ayb5<X8KzKQ<r#KYi0> z<^Maw{zvUQBR}O;ed%?(pa1WK8~@+=Y^@lmA?W<~z3^jw+xqO!n{J#t^gj8k{*Qk% zKRn-G^k?yTP`}#!*8hy(vupnz|F8c2|C9Mq|9<@c^4tE@RBit#x!QWqEq~YEt-rOP z7Nf6!YVQBSf9`+u|1JOj<^E6m-~T~@`TsnmNA+_5kKo#`SNXU9x88zigzq={e|^oK zkpHi*{>k3G@Bbx*`YYa_R_Fdd`={K#X!hSZcGoYzZ{5Fo?*B{WnKhyJFMss;{{H%x z`iDPv*PiqGyZh75fA04GFaD}m0hbF~>L1mAUHkvY|IX|6Z}k7C|9NBoyZ^s3c!WUx zzYMqp-uWL?pZ-5t{-1xtf79RR+c*7x2T9U@uh)ZECzAg+zkR>#U;2^X^MC%o0v!T) z{Gai_zw_^Y+h6>+|409ykM#%s9sg{<_4RtTpXx8{85ovC{l9z4|M~GxEFb?Xd}e1T zu=u?{`2WZHKlN$<{r^1yjUq5M{GDI&yngfi|C>Q$0l)MAwu9?c`;Ys7$TQr4G?CQn zfBFCW@;`yVSirk`k6xeueCqn4`&;w&oBZ2ar~7TU$-IVdC+Gip{N(<#KYu=d4L`O& zy7KAY*K42EAOC&7{?W6Wf4^?OKmQ#6)A{n{zk;m)cfVbKcmGy{fAdRER{h=m>F3|* z>|aA;q(J4|f79*y#lK@T@<BacNQYQp+5hi<4(@+m+*^OcqCRxx-)n!D|7T#BaOr>e zC;!98|F?eJf5Yw{FT;)hy|?mn>o0$<|5Km!-~Zpqr~Uu8|G!-DZ;E#Ky~3Yg=Un;X zbLG#O>w9Xxf%?do!ZT|^<NbT~Z~MRW+v;ce&A&oF-G2xwT`oM=kNUrP|NjYh|G7W^ z-*wIYr+v}u`9H<w)%*WDKR$mE)I#b0Uwr)k7yG^cmdn}y@Ba@fr91yZ8^QJ|e^&1M z_3HS||FXC8@BV)QioC;5?9a-7{rOSf{>t-1&;L(%e|i2-F}UeFufO%1@~8V}kDI^0 zul;l@D3i?n6#Z}Q&GRpdZU4rBI;Hxx(~pIJm7Q0=X7TTM<uCs|zU6=Uc|PO+k^iqi z?O);b|8K<qJOATm{Wtml?%;7A|9_TGAa&Qr^H<-xKd;y8`G53V{ImaupT_U3%L4~4 zXw2-!fAeqi`BVRkAFD6<&CkH_r~bz;eWicT|1&oH?cezS;J5PN|Hcac5C4Du4b&I} z_4fD~I3L%4-@oI3>z}*-c`e`87yOah_ir&MMvDF)|GR$X`+8P}Z}w;YvERP`1=J|{ z{jdDfd0kMyPyV~IR`|Pr`k+qc@xS&v-~BKAUz+#Ze*gBmxAT74zuUQf?*D+l)k%Mr zKF`mM6T2Px!xr52c>3;t+5hc7;{W*nfBE0w=VRM?PyzI>A3my6{K}p|#qR%Wcya#g zpZm8z|L^^0W?*;?%Z5mS^9bC+dil@4;@|vJzvsK1|F8Vt{6Bx^+x>s?zkwS{`Om-3 z|6I?&VEMMb<lq0O|Hd`{>i^l7{{yuP<p0nA_Q!qczw^)bhx~ti@gJzi)1UKy|M?$3 zEzid9nP&eqDcb(szjdX*mwt@j=lys8wDX_$mt25%h4#<?zw^V->4kqT*6sZF{{8;v z%bb5lTmN%>{{Pz_|9ZdAS-$(l|K%C~jn9OZ0KeCNyiosZe!&0U`@bG9{3mN~uRniF z{gq!guh&B|{^cL_%|G88{hQzOf9=2b7WK2Q{{PdV`~Kwr>)+~+{CxiZ=Kr`i|NFj) z|3Cge{oDU1{{Mc||CtYJ-W~Z^|Ms8%+ke4Z{;t1UziR9MZ~x!?fB667|7-uR)qm;# zoBV$Z{>Jo2dC+(oQfvC+`|~+J|M`~v``<c$_S^s8MgCX+KmWV_-v7h@qw6#7|MCZq zs_p-aHZW<w;}4^Pe%8;&*S`1fsrY~T+2}a$=s54_IPd5<@8~%1=s54_IPd5<@8~#h zz2fLNFUp+S=r}KE40&{%7c{#zI?jtUn>#wrJ37ugI?g*f&O2yVgpH2#j*jz=j`NO= z^Nx=5j;`k&UC%qZo_BOT@928o(e=Ee>v>1l^MZF$jE?h;j`NPL=N(<odwFy{@928o z(e=Ee>v>1l^Nz0P9bL~mx}JA*J@4qb4Ws8ajGo&tdTzt$xeef>G)B*D7(KUP^xTHg za~np_Z5TbbVf5Sv@PQ@v|3=Sk7(KUP^xTGj8|z2UZ5Tbbfi5RJj;`k&UC%ot*7HvN L|Nno<;rb&0(~Z75 diff --git a/client/resources/hardnested_tables/bitflip_1_111_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_111_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_111_states.bin.z b/client/resources/hardnested_tables/bitflip_1_111_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_113_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_113_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_113_states.bin.z b/client/resources/hardnested_tables/bitflip_1_113_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_115_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_115_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_115_states.bin.z b/client/resources/hardnested_tables/bitflip_1_115_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 zcmb=p_4e+~!Z$nk7%oh=JY2ofN6eTr;%d~61k2~ouT44L=GdX&TDtxJ|MUC*|Ng#5 zao>+e+xzXso*Rli|Nrgziv7P<@Bb0_=>A;y&CkzXpa1*y@3ZwEkBZ0tIsdVC|1bal z|JMBezxsZ?$j*QM^?$#7-T&*m`M*c6|G$3s`_BK!|7-uhTL16d|E~}&@6XrodKSO; z|NM3T-~H|R`TqCS`#*lyef|FT*Zd!kcK`of8Tb5a{ki`~#N%t8*Pr`8=fCCu&HuGO z{<;2V`~U6##p7!}9=$Ji|MmVW@qZs*wg2<m-{ybR?*IFLy}$X{?B&1vzyI$$TmSyQ z@xMpi`uqOw|GWRSf6d3E;`XsMf8%RDzWskC{;zSb{e|lfKR^8T{(pB|{l|s*|Hb3~ zGaUFk|Lgr<{4f5C{>uOUFZXZxzt#U<>Dx8@o&V#NzTJ%fkC+?2#@GC2cliJPPyFB5 z`d910(*N}L{p#j_w*R+1!-jv|{0shfumATd|IgL?KUUi_G(4aGZT_R=f4l#^zIOf( z`-S?o{~s|kFg*Bk|L^+G^$ZMe{=cpNd_2BZcGr1>|9Ahtwx98TUHwPH|7-t$`_I7e z;NSVb_6#7<@ZA2B`2DZ!3<>|W>p#{X`~FY<^Zh@<@{iyD5(g2WkYQ)&*!utT&-h2T z|Ihyatp3u+@_+0Jf2Z&Nu?}R$_x+!y@Bhfo!0@~NcRj=3_<x_w|Gm<$|0!J$GQZ%T zT0O)0dV_zTrtkm5$Z+7V{W1HffBE%&KbQY!1Sw!(sQ9M=R?5I|-u?;yg8wJw8D7u- z!}!JiZ}{J*`t?7VLCP9F=R-{d@j!Ul$A98q>qGhj*W^9^aNh9$7m#BZ7z+OB)HD3` z|HqK<ce1_1w13P0OV$589sduch2fn2Q~n1(?T^L(`!wC2fuZ5IJj8SchI#di{;k;m zrx#+#x&2S`|1dIa`0x5R5ag4X|10cY<^N@8U?}(xb`C?sbN%z5?M?aa&fkAl>VN$G z_m;{G4Yd>hme2Vu|GWP4{Xd}4`*Z%^;a~S3|1$soH2>f0|Dbg9Z~yN9?w#xZy^`Pf zf6l*Oul}w4fBt8A*`J%WPhS4n|GWCm-+!T>>rLkWzxaFpM^KWy`~T+u-Ty#o_T$(3 zuj@_!#h=%G^Z!i!*YNrVo#*%OzOUc(J^#BrD0S2`B>XM^pZ=Hq%l|`vuRoWM_&@jm zs{OyZ`574I{l8rgad=A2zsK+Yf2sTT?EQZR29w+WPu>4_|KI(u`t=`U>(A|flK*%6 zzuo_y=Kq@wN+*9V|C9%Z94MW@qM6}K{LkqBhW|d9gQKwE-{IvSzyDm{z5em)^|R}L z$(y|WZ}<P^ul&E^^<UW;7@o&V{1^GT|F7k<`Ty9#hB3^mH!S?~ejneiTd$Aq{dfN> zD6knoai@!jyM}+u|F7Er=c#@@!-jvI>;FA!{;6-r5K%9DY<oS!m;ZDAUjI4&$K3Vu zU&HG^GQRnLB)tCP!9U>a_DkQc0i1c(|9iB0{|^R++;8=9|F!;2`LTMv^Y5C^`yc%| z9cTYp$l?Fif1to=`22tF`T1o}pZ>Z3*&dXR&+lJ!_y3w-wr~HRt^a)ful=+7XP?zS zpZ^vA^Uv?BKXd+HkNEHZ-Tt#Y1H&9hdSQ6*^K|#0z5mR=|ET^e&(QF9|KIXOxDo<0 z!;+izzy6$`^}Bxl|LlLW|MMQZ|I@zVYy7`QyFtnH&i_;K|BlIn^YDMhFZDl9-~X|C z{~vIQWMDY(bM_xboBs!YoR0tZiJgJr`+pz#`uhL5A4_Y#mVWk!CQpVBe*!^fF@RF` z33-SAlkFL<+5cpIQU7cGFQ`ri28QSNKbb?7K_bTI@n8K{|5wN@j<|d5;r!%(FCjVe z!Jo)~48P|8VLb3ly}m)`um68jNQOS}@BXj+KUd|?fI?%<{)vxn+cW&CKlktTAOAn+ zuJ?lqcZP5Epjb%w*S#K;K*i-9{)@-|JsMvB@oIbxLxb6G`}Osr_y67gWBz|~-~ONc z$R*3U|8xKE{?E>^0aQN!&;E1u`oiBlpYQ+O|F8KcsDS!>|5yHheu&eN$PF{k*9ZSs z|2pGaW$e{;|F_#8|8x02SpLAz&7hLyCv(GB|9=dTzvlnT2Bk1qDF9XjC6505V+>)Q zuYbZ1Dl^#`{>p!K|NE4G9jLys&-gRZ=3m9nuNoh(#{d0l|Iz>a{*621ZF>KI`)>6A zC@AmRAOHTB_uc=xzu(_{?BDiZ{^YUz?>pZ9`t|bX_Fs^C?D_BYpY31QKmQv4_v-zh z`#;-%JSx6F|Ig*~^?u*~U)=M*y!KytmYntf@_+09Rery}`JMb(`@iRZbnEZ?!G8Y! zo`2_m&j0bK`~9EuKj(k8e_ro<?*AfC;Q%U%f6IS7DqbJ`|NF1?&;G{$UHe~f|GS^p zXa4<vxxV}D|Goe7&;R-U&;GIgz8{Zn|G)iz_dk%6U-$o8|8M27{ii<Hf4={7|F8Vj z`}f;3F0uXpuI~Tjz4g2QGyILO`OD1kdjD_x*Y*qki@)3d@88a^_kXTOjcR^|YxN)B z$}{}E|GEBa`QMe`YM$ZOen^G)?mxo;SSDS)|6_Rl<MsbQ3H4TeS!ey9_bWiP%<+%q z|9O$q!qoHsk1yOa=YRD-P-XT0XZV)i^F#M9|GWQZ{=c37kN-Je^DpIJ<bUn?_3^#) zKmV6{{r}~^^nc6@4WFTfj!pf?Ki)MA3~%<osXvUbqMJWj(T!Ggpn71mqQg?rbw7`P z#LSTJKlQ(~*}m`pXZ(LQ|A$2V_5EPt@BY8`3=V7l&OiTO<o>_=kTU(VJ;Uq$e~y;_ zWn^I3@qa3$m38C)?f=X#{)5_%;ovF`)I4eUZ2ptE;$QQ}>HGgY<!4}c_uuf}#ZUFW zi_h5qg%<M%KD$Fp>xzGhkk&%Pe^9gW<$h4B^E9NnGN=CZ{U0C`Atg8igF)~2{VV>@ z|9|iA|J6_Tzp~o*YZt5q+VDC3C-aN?Pwe1k=cX_Af3HI;*WdN8L8X(y|1+RAh+9|w ze})(TEkQ;0N9%a|SL^>hV!rVo+BDhsj}g?02bGUsq4gUh!>u>}_xua}qxmsBzWv+J zXZ1&aPTyPiOts-(_Fr+3L!bY*o^Sv5)ajr5pVu=meEUDI-gWo?$gkD6Kn?Brzw6KZ zKl9xG+5E5jKmGiE^@rvE^&9`qe^>tu+US7!je&vTLd*I3kpK4o_x}Dbe)9i~=lwJ5 ze}ODuV6dp4X5a8n9pr(N@(SMnFW2`%8dXTTA<P99^Xu8b%m+XF|1dHz-1*P2;QwM! zv-sdwP&Lv0KmE@}i~fxk|F_$_|GgUj_h`S+|93XCZ1ea1yAyvu{~xGYdQ{){{`b}T zU*FU3{*V9rZ}Ew*^}k*(U;qE={{0`t<NwE(-+%t^Jfv+{{%`$%h?e?)mreh_`uo4+ zZ~6Q5Gxhh^|2ua7`|ADgum3+He*f?N^PjEO|1bWhzVF8)>;J|7o`b5pzww>V_dnYY z>WBS!)UE$-+mE>aOaHx+U;ppn{rX2guiyIn|7!jDdD}g||G)SDd+xvL|B&|d+y8I> z$JT?I;y+$K0=3EW|1bad>VLwYzkfLu-u^8A{@4H8zuf<fzxMz5#m;c8{(JqkdWZk| zck2KCEq=ZKb3AHuQ=VbXe{h>;|MUN^-v0^)HOoITegU^_K>aR6ngCaF$KwAoGT8jz z@?S*$^Zl>!+v=X#Bc+9R^>hD&a#sHT+4lcly}nS}_VfL}`2Pq0l>hDS|C#@H`+rb- zul^ml)y=?Q^M4|w3-&wyXZL^OeR%Ss&>+l<i>rE)N~PNoJwe?05ZpD;tY<h6>U4nn zkqmeKpMa!qh7W&)L5(t`F2rMghK9fTulj$TzW?L#FZaKJ^{*kFJ#gY?u&J+{_kU&K zi+_J|ul@M{tM0rcBg32SH~Syo`F{hH??5Hl^ZIY{*Z#|0-~Us;{&PHdY~btvyMOJy zYQBd5@A&)t%k}W@{(tMw?ce<P{5xg;=l}2CfBf$I`dR-M|NPT`?|;vJP^;|U`G5Dn zf)Z`_`v0rz*M9t8m6!NG{om^SznD`j@wBMy{vY`D{!jQ{Q2UtS!=L;Aq`?kXc>Gzu z{{QmtpUvz4vokEX`7iw6xBuV%udDyr{r*?+Kh^rz`@e$vai8!10rk4(pMx}c!RZ9t zvAyx1dBOiv_kZ<&oWB1js5ou-EN|Dl|9pLHjck1F-9MNAFUb7={pa~>^{@B;T5Zq3 zVDbOZkL4%+zeV(}89w~!?tEPTz4XG>IQ@5D|F5fm3^IrT)ICR(p@^<~!&m>Buj2A& z>OV3b_%+*L-(Thh|DV6vfA0U0_cec4fcmBh|J5PG9FXh=%RJyRl${}C^Z(Dk!apuQ z5??EO>-p^eqR->M{hB$Q;n(`F@ihz#40Ha!ulct{TmSk0dH)$1Zv3zQC;IkZ`qlTD z|MUONu7CI6@W1hV`<eCE{-1h&Km76YKl_jUs^9g0Cb(-09ey|;ANS<_*Zn(>-+%od z+~?Xad>2PTkY`Xh`|tAe`fGRo|NayI`Tn1LgMa7#Gp_j$8A4%r@Gl%R`oX}E@IU`Q z|APOg<NqCt2aRDs0_oiSC;Sh7^20_ScKlEO_2c*Ne0aYZ9Lo$1&-+3BItB)Y4}Y8? zy{--aPRcv{zg&M6I&Q%LikfNQK^KS~1_p)%srU7P|J}bz9DQZR_g@Cy6MTOD6Z?h# zPx!&zzm%8tzt%%5*Khx?f!f^(|7QMYNch_;a{nLWh5yCh;-A+)D&JRkCI0VG_6`4q zLDXkxlm7>#0l)88H>l=g*mCoK<=@pmzTJPe|L6RYKWFQaYx&ZD@BiHYYY*-U@Bb11 zc>O-UyXiCjzx)4H{tT$GFysF<&~Opl`A|l~*_wZ|f7!1*zUBPuRb_vX2Mx~6e+n5K zT2udt{lumJU*aF@*Z+jp_fYK+O5@z~`H;x1_@@l&z<#%9cmW#0(XTJ~3#xD&ANN1` zc>MHw@IcJ^|DE+!|9a2<eU$lU`~K-aAvK-lzW4bB|G&T9pWa`;<?nwFv%1~KbFW|b zKffPZk=fs`pZh=Zzx8^^5aitdo%;KJ)IOeH_pf-@|Ndux_rLzUKlt;FpZh=8e?7nZ z|Gd)w8UJ3^9|H|C+E@I0hCUFPUGz^p^?&+5P*?2s{|^0qKW_ipf4$!H{r^|_fBS!w zp5K4&&HwrTqI3Sg|65=EZ2$NFlJy^tibKb4_WgJiUH_&2tH0^L(0Tu7|3CNtYJK!y zSdI33{+qwI|FXaM|LC<mL&X2P|0Dl1{@q{j|LgbjYyY3C2UX-qQ4Jbw1UGc%{a?NR zwLiF?XTR_t)L}pPr~E&tPK0LCzrFi^NrQ%XKK!}-Z?pHG$Mx=a|Cs-`?%V%6A2}_o zt@&rqN7?AgP;PXNR&=<A4n`}w_!@dvbT<Em<QW)#>;JyL;p5)_$N!lBKXUxX?te!? z1gKri$dL5*f6c$;Kfe8kl<9N-Ge-P>s=x0wKLf*ozw04mkO%(V|0nP8fBODEz5799 ziJ+lM28KENPs$(oEZ?&qG@b?;KIs40Kkff*#26w2!#w*_kT%<a&-{=c7ic(<;jjPy zP{a`ZgFn&W!B0q0&cMLXkh$l->)-!>zQ6k)ulqmr`p2u+&%%0xbL>w;#x_A+zzIwL zzuXV4TyOl3{@=U*SM$&Gf6NVE&4X${vn%Is*3bRldH?6H!1}M^@(2FGnkHZQL9KY^ z7ym)yl&`?EE({ma{y+b^{*iy@{$EyG&YS<&KDYnPS7Uv~FY&KIBgzaG|L_0&lNla& z?!WDSW`+&_zyHy`_4oX$`<KC;-aG%3|E1g28~tDNf9m=D>yMrPS>OBhf60GiXwx0; mIR=IXwVHp6fBpaY{_g+%9{-Np)t{m6Sf$`!_C>FpcLD$)2t2z0 diff --git a/client/resources/hardnested_tables/bitflip_1_117_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_117_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_117_states.bin.z b/client/resources/hardnested_tables/bitflip_1_117_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_118_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_118_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..2b2bf5915736e8fe27d85618b0f31a90c0777bcd GIT binary patch literal 1261 zcmZ>Y%CIzaj8qGbWcd636r)wZpT94-S2c7j;9%fjU|{HYykgNJ1qKct1{MYej|V*W z8IZv-Un4eOo@Qkqj>D2BCnQabczO+#c~UMbq+B>*WOAU#aI#P1WM_pFmzfL@N)Ieq zGGSSgl#i*;Nh4c-mp}g-I@n!SEl&*Xv~4Y)#_w>%&`o%u-$7v!uX(D8-NLMf42Q}m zS}-pRHJGwSK_ckTqC+dKS*?#mth}e$7%a50U`Au3p@qc6j-wK4qCD=bNpr-68x!?J zyAB-YY&mkoFk)&Cn~sj5#F`S3xh=|E!JLYnT73`X93)m4v>HkrN;Fs_#x0bf*ClaG zOqD+~V(CHGgED%e>|AorC;Iq~CM|ts5HZ8BYeQ0EAGc^ZhxLKIOFbS0^>M9C(DCd@ z+9)d9b!a!s1I=!hhdx3z%-pR8dg2#sm|w^z{5`!xd(V<uuWwuhs}j9AyG6S;CIuhZ zkZ_=2jpkw2XEpshd+L>6l~3N&-e4H`B4NG3KfcG$;++>StUXgu!Jqh7R<?bQ@DUrQ z|3@zt^zkIK=|uc&j8TkODY39ANMf(kq#a%h8`dbTSK6V>WGLDwAu+?pM_a()$TBr; z9*Jab(T*b<4J0I*MU|Pw1Y3><vv&13v-TJq(PmSYNHj=nlh|l*<e0F;K^`A(iG!Vq zArDsaFsv5Zuw<jw4zC&7%}pEI3_TBQSS{EzBQTanjJ>0Rk9px&?knrKN`g0bbMqv& zw)QALDcHfLqb*VJUXRD8Oh>%qo#r7O33oT;#iE_vViLz0_Ap6EEan!p7I)@4+Ige; z_=+#`f_H-V7|amAVK7HxP14~5%M-ihSo?!s>{G1j|7GwZ?qS`bf9w}lKC<cf#rjcs zK?x5ZPqJt;^9?I@#*03NhaQBxzKC;Q@O`@Lvv{T-GI~ef>2?0%s&;+m!}@D}bIbIZ zNj*ski3!O(BF8k|@4ch`;P?E(XW>cH7rxWKU|8MPQ!eg$v8M0%iHGI##_#NoH|!RF z@Yhpcv8wx#o;dd+bH+8v+}sj95%B^$!bF9?i~5Mn5%p16fBgCH7fY1nCx+}-S;o;5 z%oK7UF)2|cVZ#xhFoVN9JWLZijwU8`9XJ%sEVP)JO-CoRD`_&bFf-GEqupW}5^Xv` zGqjSDf`vJf4mNWpMNE^J5vC)d!^{(MAYsNdj)Sd+5|bqkwk9TRFi31{<}qxOIHqIJ zrlZ)}rZqz%Vq;>`VToihje~7E5l4<5(n<<$lrUIzB(bBeLW56W8E3>a9ySpx4zGoO zC(UJ5IU3lIq}8LfjALrc(xhNPHX$A@Ekhq+(Qa<e#x{dh5gRrnY*f=p*bruL%rI!e zaR=3d3<p9JRvIQ8?An;L!AB?LU^mwx!)_j(%%r2e!NL+r5eWx7j)LNnBe-d0#Kblo z)o!7~tVxGrbd-)93gZdt6YW?Nv1D?yn3_gni%&$GLBwI6WR?wyJO&#Mb#sdxGi>J3 zNm7$o%*M>kE!Zt`Xyreq5{(B=35iJ?4Glx}L@%&eFsyELZh6qx+Eri?bhISog=^9b zk3&Z`98GMK2zt@Ya%5vLH^Ym`qI#XJGNKZGElG(98;<e`NLU#j3Klr(ax_Uo$4xa+ tvxiOTK$wm<n_x1-#tws{28ld|?#x0vB6=hw?0@W@q<N^Nf&G15005iP>oouX literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_118_states.bin.z b/client/resources/hardnested_tables/bitflip_1_118_states.bin.z deleted file mode 100644 index 10afd75a4225d11d849cbe468a20a160fb5752ca..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15035 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 WLzcTM!6u4V|939_&sfkN8UX+=5o~Ax diff --git a/client/resources/hardnested_tables/bitflip_1_11a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_11a_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f7e2d1674d4fce897625e0221dabbd6710bbdf9b GIT binary patch literal 1788 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 F?Enx7IpP2S literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_11a_states.bin.z b/client/resources/hardnested_tables/bitflip_1_11a_states.bin.z deleted file mode 100644 index e0e985fcf10bb10d009012d4875c141d69b68936..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11330 zcmb=p_4clJ*&3@&3>VCemwjss|GY4MU6`Kya^I#27u1v9pNqV{Z)OC?UnQ15&;S4b zU4MJu+xVmJYM#BAy>0KG-%;}MKd0K4|J+`i^Yiqp#M|DlKfd_B_Eddc&DZt+(%=6- zmz{V!``oi_$Mx!S|KET0XL|hh`}cRhy?#6UZ)C;)ec7r%{?^Z}{rBSi)qh*--^Tx3 zTkqAk;qCLkS+PHF%l-eJvGAY$_Z#o+?|w^vUBB(;|Eq;>Uc9fj*T22*(AWQe<Lkel zxSyVV+y3kQ_xtUC|ND9DfA!P#Z~sTl{l9+wtzU-!UjKLh_W$eO_tn}zD(6Q3m;B%R z|5g0o?*Fg<A20kP+OPj#zW86g>HlIAyKB$pXPqj1|NZIH|5NH$z5O44^8ehk{qy$x zvpbt%_w@g>egD#4|KD!={rS;)yS4vs&Hr!t>;LN4`+uH`zkl9-{{PAUr~EhhKfm<< z>Fd{T{5gI7`kbfn-~ZhHul{fO-`oGEZ~cE-?!V}N;s3(_PfP#LHvYeR|Nr{FKkL8c z|I`1k|8Mc1Q}eC=C;ty$_b>jh^#Al-|I=^$^?&z&|A+hg|K)D^Up?>V{@?$1ZL9zO z-_-X1yZ_Z@|K`{J71sZ+_&@m{*ogo7|JVPIfB$3c_xkStEC1L0tp9BPHvVt=s(OX> zw|;z|@gu$clYQ0ydw;ꢸ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 bJNAEsK4ZuKh5roy3;%Dw`iH+fwfPnRr3d1Y diff --git a/client/resources/hardnested_tables/bitflip_1_11b_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_11b_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_11b_states.bin.z b/client/resources/hardnested_tables/bitflip_1_11b_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_120_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_120_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fed958a7f4de03b7261571d2688c23a283ca5ee3 GIT binary patch literal 1301 zcmZ>Y%CIzaj8qGboMZTGE0aa*-JpvC0t_4s0t^leq7DoUEes7357^~vy;N4J2CZ}q z5eZb9m6DW{Byw3<SXf}$Oo<sYT1`$IIdVieXv!?<z-0|VL5-`bc%A<Sxboi(Vv1iC zAbv88n{CpCH6l~iYPwG1oG2N@?HQV|C{^P^)Y7n^rj*78Wkqih&%gy6g0*G^@~Ta0 z_UzI)xQbihRBNiX!U<D{RFi4bqI^AOd1UCi`f5gat!d`+S(wq|9k9i%Y1z!oRoq%9 zCQfwLSgmPvRoBxXWv0$FZylq^B!iS$L0eW#bIH_N%jx6d?Gcz|B&8jiGSO%?M{s~7 z+k_d-j$NS=jXVufOT$<jwoEk)5zXWX3ssEj&=z$JQ*zq0YN}4qic74@4W3^c)#q@U zioDQRCK{$PZNZiaAxFi$riB`LhOGBm=y8$BvP&m0Y005(ktnZBDPJ?*&?T2L8*{iM zBvgL$_z7KV*Ic#fYM@Mn$xJqHHlY*2cUD{p7nD@m(bHPCs!nzK#lqB+wyM)td=mMr zCfKU^X{sU1%aE%ACwe+giA^*KTr|-{RA`T=W0;5Fq@`|3Q}s(kon0nO-ZC{T)L_Xa zkxXGOF~^l$Wtt(W!L8g!R);K}q}Hr()v+TfQfHaA=G3H%8C%1;#W>bP1y;@dv0P2> zszI}2`Jy>1!dA_l?!5Fwsm?BM{*)~y?@cY0_sp<vKD458vWn6AL^VOHX2%JcT3aMU z-l`<Bb6v>nbZ__~?s#Bb<CS@gr7D?PUpiLV)rYdo4-FD+P|Q+TE7I|Mg-84*A;l?L zA^n^zleM}O4mqeNO?7K!IKq+SwM9p1Q_v}mEfGGEPMc<V87y0v=%cwRs++AV!DLpZ zsT!{u+lrM7uIdII;#sjpO=y$zFYgIcPbB(u^>`XNd+3FFCHbsaqjJc{^FJiP>SV^c zG3FG9fD^0$II%W>5-XeCFRq0iOSu@hv_%duz!B%lAO<N`RSl_m%N7@FDamsL&G))$ zv{r1%MNYSnZjH%WMyfs@Su19EE;V)L<m}{G;ifgMRjF5V!j@$#Lc4`RyB&H~hb+_D z5Oio`XxCZ~vqcvdT{g*5)(ms)^jUF{ZNZ^wlM<tPy15Q|o6gXjIMrFp&CAp~BC2z0 zQqs|Gqm5~9p`8n(gl36$@`!BZ^a+@@Ol|6_BO!-XgHD(jimpgpDU!5AGF00|LYH;Y zGAGrH6=AHRD}^=*YO4xHtkk&DWvZd^fU9z<ZOh6QDOW?Wpq4EwSE{*AaanzdW3iCn zNpD4y)(KlZyN-5;W@TkNEoS4Y<B3_?Qk1x+IV&(`i_uoLX`!o3xKDa39?^EOa9dO% z{?_!TWp>wZ-`co?)ysrA;!`44TDdNA3rThJ%5v*WSro|<_){y$)XP~TB#Em(!)1-q zq*zW~)s|V4q$aj33tb|7P*YNzQ$NHc@RZwXtqVPF+S+P5GfhrT=9!hD?6a~a<(j2L z=u{i8IV}l$Vvm;#-nw3L@!5>*v&%I;``ENEao?57(|2fw=hdh+tAoN;GgT}}4CfAA z6Y#~3d*Q)Y_K+{)A-!Jvv|Qz%1kAnaD#a2kG;z|3^*0viZ&}c+>ZI{$X^>B=h(w4} zg{pF>7EegCphT)@XN1R=O*0dw`FbRpEEDEjbZNs?A70<AOoJ;27flXbbTKiEb7DrX nSFyOz(j#jYi}XxMl5~2Y*_9I7YOqZ6&^wRiTtZBZL97b^msa{d literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_120_states.bin.z b/client/resources/hardnested_tables/bitflip_1_120_states.bin.z deleted file mode 100644 index 750af05d710c3657081a6b9ff4a9e26283bc3759..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15177 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 diff --git a/client/resources/hardnested_tables/bitflip_1_122_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_122_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..0e406a01950d17b502e7f64c8e7f804e77cc0190 GIT binary patch literal 7248 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 I%C8gv0Plmkwg3PC literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_122_states.bin.z b/client/resources/hardnested_tables/bitflip_1_122_states.bin.z deleted file mode 100644 index 6d04a3c0521f40c49329665b81155f5a26de4717..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 32904 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 Xe(|yY-<N_m9)|z^|DR#0X6!)#W}?JU diff --git a/client/resources/hardnested_tables/bitflip_1_128_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_128_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..e02d0729ae55fe61b4c4435644cad4731c825ac5 GIT binary patch literal 6269 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_128_states.bin.z b/client/resources/hardnested_tables/bitflip_1_128_states.bin.z deleted file mode 100644 index 18d333145161edae31460957c3e36bcda2fad7ab..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27841 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�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 X?tjt8{crwYT)HA0_g`L>@y;^<Tz)C2 diff --git a/client/resources/hardnested_tables/bitflip_1_131_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_131_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_131_states.bin.z b/client/resources/hardnested_tables/bitflip_1_131_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_135_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_135_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_135_states.bin.z b/client/resources/hardnested_tables/bitflip_1_135_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_138_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_138_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..c12c2219ad3af5f9cc7b2d7bb00e7706f9bc3c4e GIT binary patch literal 1656 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_138_states.bin.z b/client/resources/hardnested_tables/bitflip_1_138_states.bin.z deleted file mode 100644 index bc154b4f79977594a08477b99b02f60f9918aa53..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20356 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 NcX7^te*OA@I{<tq7Z(5k diff --git a/client/resources/hardnested_tables/bitflip_1_145_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_145_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_145_states.bin.z b/client/resources/hardnested_tables/bitflip_1_145_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_147_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_147_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_147_states.bin.z b/client/resources/hardnested_tables/bitflip_1_147_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_148_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_148_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f9760f6b2ac9557a226725b6d04a38d33b103590 GIT binary patch literal 3546 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 Pol0{wJbVr;yWao+jzTU7 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_148_states.bin.z b/client/resources/hardnested_tables/bitflip_1_148_states.bin.z deleted file mode 100644 index ec5b774c7a3afd255a821a092c9a2cc6b797b59d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22543 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 diff --git a/client/resources/hardnested_tables/bitflip_1_158_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_158_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ceb8298d87e5e8a14ca8c7e0e36695c0e11db33d GIT binary patch literal 1263 zcmZ>Y%CIzaj8qGbY%p2f$uNbr?#m1ARSg{rI2brs7+4q>Iv%fBv`B%2fr0A*&wU1D za9G*b<iw$rgjvjNl2Vz=+=P``E=U-hxa@0WFjGRU;b5EFtjvimCk~ph@few0_UTb` z<6K}MGG$Vx%EyI9hO5$7rF^wrX<L6NL}cF#k<L4z27wh_%RAc)4jpanN)}3H>=y0* zVj*VlRIsr`hV#ae${B`98x4-TT7<mV5X)mBrk-%<jiHs?hdo{o79MC57EL&^Ox0TA zXwtf)2P`5AB-D>=FnH0|ctJktoA`~r+&|S_|A_N5eX&bEvUkzEly8&zGkesys`bmc z7qcAgICAv&{15f%6XRGPIQ^VIxmADS2g5siTHo=+Hou7NKk)zflMmuaf99UQ@UMTS z>Id;Xd%eZP^g5n%u94WVVPj8(UdzLT#HL^UD}L~2{N`tRC!u55%p)tz^6xO$C%taL z);meZi;lmFbNVDc;dlRp!#DH`zD@kV{V3#j>&1vE>g&IR3h!94Vagf>iBR=d4*wht zlal%m_-IM=_()9bIOxZ*F}P`lsG)XaV!@iA2Ww;uBWC!h2{ZHfIE!{h97sBJSg`B3 z)08(tJ|Z(j!x&pb4hF4z8ff9(8R5?5rpNJ6HK~2ZkBJ9wMCgQR*&fq6*p%3G<j7(6 zM$s3n|GFj~SSlkLbRc4~z|o|6j6R;7Ni)PJ7OWFYn$g}^u*SKeCnBUoKHww&f||oG z;uvF3t)Cco&`;FIwXw@hM@^gSqhXA;Xws30HK7(^%4aI&nlIGxJ^3l88290`wfx2( z1}|Q$|5i}ZpZKDrg1<q1=12a57+G<ShdmJnNBeJt#BfSXS&?)=eg~TtkD`yWVAqk2 z5(krff)5-zuuP2AAmBHvYQlm9ZBb>e<r8|;7>*bQvv!NA8n)@ENo+JYnsDGS4`-Wd zQZi@Lj2WTbLNnYr4Mn@A86+JuOiDPW+L^S`FibNs=xBn0A)A&vt49KB#MD;R&d@_4 z2V*QG4jCNjV{MJ-5jo-~wD7{JBlDAfh<@jB7D<fdD&v?jX==HSPhb*b%R3k0Z7dG9 z9;?3cC?<+YO#XZ*R7TN9;K+sq!+--3YjnH?y^b18h*0g4ILz5*;Hk`TXl0U*j+kak zf`J<wx0tY)m|({N35m|ePOk$;!!&)A1rBPn=>#QgY!hSV+K{j&S+LVk$C-`ekeX^| z#2U}eP8}c5Hr1{}2itgflEoyF4)Y{S7#vySbg;F>uuUgo!-frpZW2chcJqX(S&2Bf zaka11?C3bOveV_DYpaTc!A2f2o`@bX&K|?AjS+^1hGN=c5(x)2dXkO=9Wc}|;1-&p z(ZlK{8q5`%wCb>^VWOLkjxx7MVmDu_Ypcozk;Eh&o`^L`5*rRAvo>~fc1uKL8m^Jp zkZ_D!;xL=RhQv05B-W0ghg=0tJ6sDkv}rRH%vhOlV6qrzM542pvY42}#IA!9NrxGd zjwDMQnUSzej5FbA#4;U;4M{T$LyjgX+8<cPw5}^L;mDDrA_Y4%jx(y3h(w62Zh5h^ zxv3yxaciRLg`*vZR&%o)7D+hRHDi~=%FcutQ@a)~@=?5K==EU5(F+?A6Ag}WvsyTm z6wFaI<O%T!Q*1ht6ecv|K#~q?(vb~`Vg}q2%{;+u0*6Hk47FQ34mLLb@7}32N5jKG ID)dML06y>m8UO$Q literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_158_states.bin.z b/client/resources/hardnested_tables/bitflip_1_158_states.bin.z deleted file mode 100644 index 631b39af05e59a7f7b2eb6084d71521ec9d2edde..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15061 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 diff --git a/client/resources/hardnested_tables/bitflip_1_160_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_160_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..6264a1abb57b3e7d7bc2b28e66bbd36d36f706b0 GIT binary patch literal 1300 zcmZ>Y%CIzaj8qGbJbq$L48swlknoF40t^BSq7DuW4J-@{4Gaxj57^~v8AFzOESbm= z$iS63v9q%y*r&(G$7xndQc{x0Wo2Pu0bj3>uRJ}yjGkVcTb)g={1o--uX6FyFA`Gh zTB)~>L9zNGYeuN*f~k@&OUqVx#MfS^QMjV3=;qkvl@-z(7%8}d%SL3Cfv37ahAFq> zgscps83DT{*)OzbY<}l|punKEo%yWDewCi3{vM`YCY`HReBstSl^Ufhw&-GJx5ky3 zYEpq+Ay+Os?<zeKyDCX_(u+kGViqkIcu}*o*?;BAlX^>D$b=qwGH33p_m(zV?K6#> z7fkNbe9@)xUXkmR7uN&Vrmn=$Oc&3Eyg^(tp<M17F#%gTmxxVTu|-UkEo8N*ucDFS zL`kLHtFD9|>UIfTx@wJtiJ0T01DB#h6HYs9)0%MLU}(i<wPmwbvo#edZ&~q3^M?LP zlV8i#=B#?<H~B>HnHlaOD-Q|1Wp!EiG$6ELLVQ9fZ=lHX_Y9N2Dft(qD$NYKaw@~< zbkJ$XjFn3omueb`Y~+m6N@?s2&Ghnd$xynGBH@ziwXj3rk{hRi&Z3!$OTENAB(z!= zEnCI8U}c7`mZ^|b&}31Mo~4rxPC9YPhd1Q1kHm_G6FnNuUY!e6ygfaq`U*x0PGS~1 zA-Zf<iiumt72%M{0U0`;x~x-GwyI4F+QhRoWl4&JSA@}I)kTeyt}?a-oXQIGX7uG+ z)0)I<s3zJhl&KrK<YdZfov5ix60SH#hO}mKge?`A)uHX-v{6WONeiEAh^Fi%PPI@G z$2Us@PfXyPkYU85a3R$(!_>>vHPL5f*1{<|nu}H(*fKTIv(;eP%9K@yW(Hlkaw<{d zRD#xli#}35Y!jQAJ*RXW;YbWx`cYk#>w#G4l4+CHD(Nx#cuo~<nc>-K|4c($<y5wn zQ(OB2#pqLAQ3_5BObkpb7#IW?1Q=r&j=!HO>e3_{B($oPD}e!ySguSJxWKSvsq$s5 zT($oTy+S`t5l9gE-Kg}@W9m{-9WHGTji;g^pZQ-&im9x24ixrq>r8c<((y}Gbk(Hk z&OF_`JR2?@3cjm+(2h-h$`2WdIzGOo;-}oa=B~Qvwj{$nG3Ck0$!cmomqV^3rFLyq z*>s>XO3z0tt7@u|o>0ufS60iysy98V(hrT*UM?P|c3!XA$!b}^8_gpt?{uxKSQxk} zFz|#JXE28;M{p>wpi3c3;3>U{NnwH+D|Iy&O^whx5i#jtSZhZ6C6kpWgGG8aWMrg7 zH3vIRO}NJC#<ODmUdLs#4z{U0>JRbLn%DYn)_2S737_WaHJ19QPtp@r&rs@D^>SO) z5bxo#W|3poD*cPDb-k+IUa3plwoW!#HZfzug(*jaP6lo17Lrt4sJSAH)ig3p#7K)L zq&aA9NYu(DI?hgkNnRIRje?n`xw^SdG}V$4n#tA7EfyRcEOM}QZDPkNo)w3dn6exc zRb3gl)L^mGmVhgXnzPPIgo#enS#V{wSIVMGGlO*9W`t>NSksZT+GAR1%h4sF5h;#~ zL!;LC`Z8@&4m4#;n#E)2>+LM26FM_1N-}JT*8z=Fq7tiGlY)#|!n~BWxO%Od;HZ6Q zs;7}iK;5K?2LnU47+ko@W3p;Ss<6w3nPQETX7~n5=z49K%-M1=Rhx5S<}x3Rl!Kwo zp$1nDTuE#WR#_~n8sX*sB__xs*y~Eq)GW^ek)uXhhh_we{1Y#7wFsCH+nUn?05wz# ASpWb4 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_160_states.bin.z b/client/resources/hardnested_tables/bitflip_1_160_states.bin.z deleted file mode 100644 index 32fb4f59a20bc16f4c3d7d77478123bc933cea6d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15178 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 diff --git a/client/resources/hardnested_tables/bitflip_1_161_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_161_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_161_states.bin.z b/client/resources/hardnested_tables/bitflip_1_161_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_163_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_163_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_163_states.bin.z b/client/resources/hardnested_tables/bitflip_1_163_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_165_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_165_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_165_states.bin.z b/client/resources/hardnested_tables/bitflip_1_165_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_168_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_168_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..e4ee8cdbbe7d5d5be27a0654872136031243fd04 GIT binary patch literal 4419 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 JtPAVh7yxn^JmLTV literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_168_states.bin.z b/client/resources/hardnested_tables/bitflip_1_168_states.bin.z deleted file mode 100644 index af6bf431ed5cabe3862053eeaf13b8834b309554..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26952 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 diff --git a/client/resources/hardnested_tables/bitflip_1_178_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_178_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..ce03d40d3bd8b851971a3d6656797907a1a6ed74 GIT binary patch literal 1617 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 FBmiVfiOB!} literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_178_states.bin.z b/client/resources/hardnested_tables/bitflip_1_178_states.bin.z deleted file mode 100644 index 17eec3aa50a8041155dab564df8c59813ca906a4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19601 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 E0HQq&TL1t6 diff --git a/client/resources/hardnested_tables/bitflip_1_180_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_180_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..87d8693df1453a2c5d4ad7917b0252b1228fc130 GIT binary patch literal 415 zcmZ>Y%CIzaj8qGb6lP}aWnf^4alFVNz`(#TfkD)P!GVM00OKFafQ1YU91IL<OI;Wj zXliOsR=&7TMacip1W&7zq9LW8>WQ9eL7uA`LRYF>a`3$5sPbG><;tWiPg75|C6g5- zRTo97Zt+&xs59wOgl7(?=q7KKO)krKl`eTS)5L2o!$F|~m8&K_^3qGFU9zP=X0n>k ztXY0q>rNW^owQk{eafe^jMHKQzbDJ&TaGFxStkEfn3UwGa=`Q4p^%10T2qB~PFktD zpwqE4U}}x$q)7%UM`i{_c(%-#{IZMdq|vOCv-pn-u%1YJ#MZ&kz`(%Lz_5zJ!Ht3U z-IM?YDFy{82H~I;87CKLY6klU)GfXxuxh8uTuzmfDwi61CPhrptn5(PGO5VZWKznc zOqBz=o|7`wmRw4i>9b(zl8q`cy*gWN2JCS-wDe5Z4)%uSA}hZ%|5+BS{^aVi89SPn z8qL*wr1jBfWr@h6DKbZdVqJuy6ej%^n3Oct(?H}!Ktsx^Q01;rl@l(`B3_|yeHJZd Znz76^BA6>_KI@%{ej+NYfq(un004%Yro{jN literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_180_states.bin.z b/client/resources/hardnested_tables/bitflip_1_180_states.bin.z deleted file mode 100644 index d3f655b0414dcb31d9c59c1909c9d628065cb463..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 9771 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 diff --git a/client/resources/hardnested_tables/bitflip_1_188_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_188_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..e6392a033af47ff223ec5fe7e854e9827ca09e33 GIT binary patch literal 5993 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 C@;pfZ literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_188_states.bin.z b/client/resources/hardnested_tables/bitflip_1_188_states.bin.z deleted file mode 100644 index d5012b1d5b22f8e3237c089c15d2dbc0442baf7b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 27588 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 diff --git a/client/resources/hardnested_tables/bitflip_1_191_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_191_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_191_states.bin.z b/client/resources/hardnested_tables/bitflip_1_191_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_198_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_198_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..f8e066f8211a4bf44eaed3a51d945912ad5f8082 GIT binary patch literal 1605 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_198_states.bin.z b/client/resources/hardnested_tables/bitflip_1_198_states.bin.z deleted file mode 100644 index ca490c4fc778b4efac585fd7a9775ac24b090472..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20107 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 diff --git a/client/resources/hardnested_tables/bitflip_1_199_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_199_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_199_states.bin.z b/client/resources/hardnested_tables/bitflip_1_199_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 zcmb=p_4e+~!Z$nk7%oh=JY2ofN6eTr;%d~61k2~ouT44L=GdX&TDtxJ|MUC*|Ng#5 zao>+e+xzXso*Rli|Nrgziv7P<@Bb0_=>A;y&CkzXpa1*y@3ZwEkBZ0tIsdVC|1bal z|JMBezxsZ?$j*QM^?$#7-T&*m`M*c6|G$3s`_BK!|7-uhTL16d|E~}&@6XrodKSO; z|NM3T-~H|R`TqCS`#*lyef|FT*Zd!kcK`of8Tb5a{ki`~#N%t8*Pr`8=fCCu&HuGO z{<;2V`~U6##p7!}9=$Ji|MmVW@qZs*wg2<m-{ybR?*IFLy}$X{?B&1vzyI$$TmSyQ z@xMpi`uqOw|GWRSf6d3E;`XsMf8%RDzWskC{;zSb{e|lfKR^8T{(pB|{l|s*|Hb3~ zGaUFk|Lgr<{4f5C{>uOUFZXZxzt#U<>Dx8@o&V#NzTJ%fkC+?2#@GC2cliJPPyFB5 z`d910(*N}L{p#j_w*R+1!-jv|{0shfumATd|IgL?KUUi_G(4aGZT_R=f4l#^zIOf( z`-S?o{~s|kFg*Bk|L^+G^$ZMe{=cpNd_2BZcGr1>|9Ahtwx98TUHwPH|7-t$`_I7e z;NSVb_6#7<@ZA2B`2DZ!3<>|W>p#{X`~FY<^Zh@<@{iyD5(g2WkYQ)&*!utT&-h2T z|Ihyatp3u+@_+0Jf2Z&Nu?}R$_x+!y@Bhfo!0@~NcRj=3_<x_w|Gm<$|0!J$GQZ%T zT0O)0dV_zTrtkm5$Z+7V{W1HffBE%&KbQY!1Sw!(sQ9M=R?5I|-u?;yg8wJw8D7u- z!}!JiZ}{J*`t?7VLCP9F=R-{d@j!Ul$A98q>qGhj*W^9^aNh9$7m#BZ7z+OB)HD3` z|HqK<ce1_1w13P0OV$589sduch2fn2Q~n1(?T^L(`!wC2fuZ5IJj8SchI#di{;k;m zrx#+#x&2S`|1dIa`0x5R5ag4X|10cY<^N@8U?}(xb`C?sbN%z5?M?aa&fkAl>VN$G z_m;{G4Yd>hme2Vu|GWP4{Xd}4`*Z%^;a~S3|1$soH2>f0|Dbg9Z~yN9?w#xZy^`Pf zf6l*Oul}w4fBt8A*`J%WPhS4n|GWCm-+!T>>rLkWzxaFpM^KWy`~T+u-Ty#o_T$(3 zuj@_!#h=%G^Z!i!*YNrVo#*%OzOUc(J^#BrD0S2`B>XM^pZ=Hq%l|`vuRoWM_&@jm zs{OyZ`574I{l8rgad=A2zsK+Yf2sTT?EQZR29w+WPu>4_|KI(u`t=`U>(A|flK*%6 zzuo_y=Kq@wN+*9V|C9%Z94MW@qM6}K{LkqBhW|d9gQKwE-{IvSzyDm{z5em)^|R}L z$(y|WZ}<P^ul&E^^<UW;7@o&V{1^GT|F7k<`Ty9#hB3^mH!S?~ejneiTd$Aq{dfN> zD6knoai@!jyM}+u|F7Er=c#@@!-jvI>;FA!{;6-r5K%9DY<oS!m;ZDAUjI4&$K3Vu zU&HG^GQRnLB)tCP!9U>a_DkQc0i1c(|9iB0{|^R++;8=9|F!;2`LTMv^Y5C^`yc%| z9cTYp$l?Fif1to=`22tF`T1o}pZ>Z3*&dXR&+lJ!_y3w-wr~HRt^a)ful=+7XP?zS zpZ^vA^Uv?BKXd+HkNEHZ-Tt#Y1H&9hdSQ6*^K|#0z5mR=|ET^e&(QF9|KIXOxDo<0 z!;+izzy6$`^}Bxl|LlLW|MMQZ|I@zVYy7`QyFtnH&i_;K|BlIn^YDMhFZDl9-~X|C z{~vIQWMDY(bM_xboBs!YoR0tZiJgJr`+pz#`uhL5A4_Y#mVWk!CQpVBe*!^fF@RF` z33-SAlkFL<+5cpIQU7cGFQ`ri28QSNKbb?7K_bTI@n8K{|5wN@j<|d5;r!%(FCjVe z!Jo)~48P|8VLb3ly}m)`um68jNQOS}@BXj+KUd|?fI?%<{)vxn+cW&CKlktTAOAn+ zuJ?lqcZP5Epjb%w*S#K;K*i-9{)@-|JsMvB@oIbxLxb6G`}Osr_y67gWBz|~-~ONc z$R*3U|8xKE{?E>^0aQN!&;E1u`oiBlpYQ+O|F8KcsDS!>|5yHheu&eN$PF{k*9ZSs z|2pGaW$e{;|F_#8|8x02SpLAz&7hLyCv(GB|9=dTzvlnT2Bk1qDF9XjC6505V+>)Q zuYbZ1Dl^#`{>p!K|NE4G9jLys&-gRZ=3m9nuNoh(#{d0l|Iz>a{*621ZF>KI`)>6A zC@AmRAOHTB_uc=xzu(_{?BDiZ{^YUz?>pZ9`t|bX_Fs^C?D_BYpY31QKmQv4_v-zh z`#;-%JSx6F|Ig*~^?u*~U)=M*y!KytmYntf@_+09Rery}`JMb(`@iRZbnEZ?!G8Y! zo`2_m&j0bK`~9EuKj(k8e_ro<?*AfC;Q%U%f6IS7DqbJ`|NF1?&;G{$UHe~f|GS^p zXa4<vxxV}D|Goe7&;R-U&;GIgz8{Zn|G)iz_dk%6U-$o8|8M27{ii<Hf4={7|F8Vj z`}f;3F0uXpuI~Tjz4g2QGyILO`OD1kdjD_x*Y*qki@)3d@88a^_kXTOjcR^|YxN)B z$}{}E|GEBa`QMe`YM$ZOen^G)?mxo;SSDS)|6_Rl<MsbQ3H4TeS!ey9_bWiP%<+%q z|9O$q!qoHsk1yOa=YRD-P-XT0XZV)i^F#M9|GWQZ{=c37kN-Je^DpIJ<bUn?_3^#) zKmV6{{r}~^^nc6@4WFTfj!pf?Ki)MA3~%<osXvUbqMJWj(T!Ggpn71mqQg?rbw7`P z#LSTJKlQ(~*}m`pXZ(LQ|A$2V_5EPt@BY8`3=V7l&OiTO<o>_=kTU(VJ;Uq$e~y;_ zWn^I3@qa3$m38C)?f=X#{)5_%;ovF`)I4eUZ2ptE;$QQ}>HGgY<!4}c_uuf}#ZUFW zi_h5qg%<M%KD$Fp>xzGhkk&%Pe^9gW<$h4B^E9NnGN=CZ{U0C`Atg8igF)~2{VV>@ z|9|iA|J6_Tzp~o*YZt5q+VDC3C-aN?Pwe1k=cX_Af3HI;*WdN8L8X(y|1+RAh+9|w ze})(TEkQ;0N9%a|SL^>hV!rVo+BDhsj}g?02bGUsq4gUh!>u>}_xua}qxmsBzWv+J zXZ1&aPTyPiOts-(_Fr+3L!bY*o^Sv5)ajr5pVu=meEUDI-gWo?$gkD6Kn?Brzw6KZ zKl9xG+5E5jKmGiE^@rvE^&9`qe^>tu+US7!je&vTLd*I3kpK4o_x}Dbe)9i~=lwJ5 ze}ODuV6dp4X5a8n9pr(N@(SMnFW2`%8dXTTA<P99^Xu8b%m+XF|1dHz-1*P2;QwM! zv-sdwP&Lv0KmE@}i~fxk|F_$_|GgUj_h`S+|93XCZ1ea1yAyvu{~xGYdQ{){{`b}T zU*FU3{*V9rZ}Ew*^}k*(U;qE={{0`t<NwE(-+%t^Jfv+{{%`$%h?e?)mreh_`uo4+ zZ~6Q5Gxhh^|2ua7`|ADgum3+He*f?N^PjEO|1bWhzVF8)>;J|7o`b5pzww>V_dnYY z>WBS!)UE$-+mE>aOaHx+U;ppn{rX2guiyIn|7!jDdD}g||G)SDd+xvL|B&|d+y8I> z$JT?I;y+$K0=3EW|1bad>VLwYzkfLu-u^8A{@4H8zuf<fzxMz5#m;c8{(JqkdWZk| zck2KCEq=ZKb3AHuQ=VbXe{h>;|MUN^-v0^)HOoITegU^_K>aR6ngCaF$KwAoGT8jz z@?S*$^Zl>!+v=X#Bc+9R^>hD&a#sHT+4lcly}nS}_VfL}`2Pq0l>hDS|C#@H`+rb- zul^ml)y=?Q^M4|w3-&wyXZL^OeR%Ss&>+l<i>rE)N~PNoJwe?05ZpD;tY<h6>U4nn zkqmeKpMa!qh7W&)L5(t`F2rMghK9fTulj$TzW?L#FZaKJ^{*kFJ#gY?u&J+{_kU&K zi+_J|ul@M{tM0rcBg32SH~Syo`F{hH??5Hl^ZIY{*Z#|0-~Us;{&PHdY~btvyMOJy zYQBd5@A&)t%k}W@{(tMw?ce<P{5xg;=l}2CfBf$I`dR-M|NPT`?|;vJP^;|U`G5Dn zf)Z`_`v0rz*M9t8m6!NG{om^SznD`j@wBMy{vY`D{!jQ{Q2UtS!=L;Aq`?kXc>Gzu z{{QmtpUvz4vokEX`7iw6xBuV%udDyr{r*?+Kh^rz`@e$vai8!10rk4(pMx}c!RZ9t zvAyx1dBOiv_kZ<&oWB1js5ou-EN|Dl|9pLHjck1F-9MNAFUb7={pa~>^{@B;T5Zq3 zVDbOZkL4%+zeV(}89w~!?tEPTz4XG>IQ@5D|F5fm3^IrT)ICR(p@^<~!&m>Buj2A& z>OV3b_%+*L-(Thh|DV6vfA0U0_cec4fcmBh|J5PG9FXh=%RJyRl${}C^Z(Dk!apuQ z5??EO>-p^eqR->M{hB$Q;n(`F@ihz#40Ha!ulct{TmSk0dH)$1Zv3zQC;IkZ`qlTD z|MUONu7CI6@W1hV`<eCE{-1h&Km76YKl_jUs^9g0Cb(-09ey|;ANS<_*Zn(>-+%od z+~?Xad>2PTkY`Xh`|tAe`fGRo|NayI`Tn1LgMa7#Gp_j$8A4%r@Gl%R`oX}E@IU`Q z|APOg<NqCt2aRDs0_oiSC;Sh7^20_ScKlEO_2c*Ne0aYZ9Lo$1&-+3BItB)Y4}Y8? zy{--aPRcv{zg&M6I&Q%LikfNQK^KS~1_p)%srU7P|J}bz9DQZR_g@Cy6MTOD6Z?h# zPx!&zzm%8tzt%%5*Khx?f!f^(|7QMYNch_;a{nLWh5yCh;-A+)D&JRkCI0VG_6`4q zLDXkxlm7>#0l)88H>l=g*mCoK<=@pmzTJPe|L6RYKWFQaYx&ZD@BiHYYY*-U@Bb11 zc>O-UyXiCjzx)4H{tT$GFysF<&~Opl`A|l~*_wZ|f7!1*zUBPuRb_vX2Mx~6e+n5K zT2udt{lumJU*aF@*Z+jp_fYK+O5@z~`H;x1_@@l&z<#%9cmW#0(XTJ~3#xD&ANN1` zc>MHw@IcJ^|DE+!|9a2<eU$lU`~K-aAvK-lzW4bB|G&T9pWa`;<?nwFv%1~KbFW|b zKffPZk=fs`pZh=Zzx8^^5aitdo%;KJ)IOeH_pf-@|Ndux_rLzUKlt;FpZh=8e?7nZ z|Gd)w8UJ3^9|H|C+E@I0hCUFPUGz^p^?&+5P*?2s{|^0qKW_ipf4$!H{r^|_fBS!w zp5K4&&HwrTqI3Sg|65=EZ2$NFlJy^tibKb4_WgJiUH_&2tH0^L(0Tu7|3CNtYJK!y zSdI33{+qwI|FXaM|LC<mL&X2P|0Dl1{@q{j|LgbjYyY3C2UX-qQ4Jbw1UGc%{a?NR zwLiF?XTR_t)L}pPr~E&tPK0LCzrFi^NrQ%XKK!}-Z?pHG$Mx=a|Cs-`?%V%6A2}_o zt@&rqN7?AgP;PXNR&=<A4n`}w_!@dvbT<Em<QW)#>;JyL;p5)_$N!lBKXUxX?te!? z1gKri$dL5*f6c$;Kfe8kl<9N-Ge-P>s=x0wKLf*ozw04mkO%(V|0nP8fBODEz5799 ziJ+lM28KENPs$(oEZ?&qG@b?;KIs40Kkff*#26w2!#w*_kT%<a&-{=c7ic(<;jjPy zP{a`ZgFn&W!B0q0&cMLXkh$l->)-!>zQ6k)ulqmr`p2u+&%%0xbL>w;#x_A+zzIwL zzuXV4TyOl3{@=U*SM$&Gf6NVE&4X${vn%Is*3bRldH?6H!1}M^@(2FGnkHZQL9KY^ z7ym)yl&`?EE({ma{y+b^{*iy@{$EyG&YS<&KDYnPS7Uv~FY&KIBgzaG|L_0&lNla& z?!WDSW`+&_zyHy`_4oX$`<KC;-aG%3|E1g28~tDNf9m=D>yMrPS>OBhf60GiXwx0; mIR=IXwVHp6fBpaY{_g+%9{-Np)t{m6Sf$`!_C>FpcLD$)2t2z0 diff --git a/client/resources/hardnested_tables/bitflip_1_19d_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_19d_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_19d_states.bin.z b/client/resources/hardnested_tables/bitflip_1_19d_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_19f_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_19f_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_19f_states.bin.z b/client/resources/hardnested_tables/bitflip_1_19f_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1a0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1a0_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..da20250ec847167654be230c07844676f1e998a3 GIT binary patch literal 1541 zcmZ>Y%CIzaj8qGb?0UAdp2eo_s{8E%0R}?`2L{;&2L=#y<VfJKXZ*y#ATohLgMnkg z#l?;jq(r1lGK`p=n%#QY95MnjE-pC1%W`F@0xttYke615v%|^BpIW)%C#+bbkg(t{ zXV=tVVW!ptt2rwciC9d0SivS?nAlWsv>@TZWATn9Do452gu3Vm1)X$R@{lv&sFTL2 zkZGKnDNd_3v^K1~?jd+;;-wDPBvGL)OC6^;PH|k(8Cris@t~@XP|yXhRR*5kLQ~_J z)-O!je^}zM1k;BI!H6D-gFO;6!~|Qrxp{QLMB-1ZX6H!c6Jxc|=J*m3`ci&JGXKUt z^&5uY<((EkFihlMu<DS6YK!|ftzX@(+UIY0CQ5obi}VJhs4WT%<C+vBbZCJDYlAbF zq}HOofY5@y+!y&dZ4_IRB77tcy0gCMQ9Q)A*z4!KFSaIAPn`5m*6N<P*v%_ZHnb#Z z!>nMpnG%tbDH$^*=5aif^GcL(pUNJxS~DwdeqjH>;|H2A99rKfp`%sM$MvM^kdfjc zBVkXIZl!lUK65%dr|S4DT@}E`bu>6c);lP0Ws16>vSwD-I^mY5!i}L}D+016{(XHx zNK9Z+R;W^{(E4j!p?Y1RNrw*12stL$VzBDasznDQv^ZN5v=Sw>SreL4wY)h_dbXrE zHb#X8t2%~n&{+ITL_$kjWJyB6M%C}E+|NWsA85ph-w_t|<2q!qMk2y6(ZHVR$b*fE z;f<|{i9rt&*6|4bw6U16(a=ZLR`^03*M|s$`3paZeiFWXAzm>;jP)CHr;Na2rh|@& zZj2G(Ee11QifGm|aje@IBGt8OBUi{Np<p(K2m>D-tu@?S!CVJ6tTC7|l}AECqBT*% z;gErjropO18`iQ(hAb0inZ|Wh<d9Lvh7D|75xQO-t3#SOl@3O5a!d5+u<=Ml82Wgr znuZF8G+j{>T&Zw1#J43wP17Y&>8QX=@1QH3jZv#Qr+9OUIi+-M^)L+;X6aTmQk#_( zDP<JwE!N?-w97G}nKi7#b4pi|mdjI@|Bzh3$**n4TKe{?6DSu5LUREq2gozObO>P3 zU=U$Y72!28GD^ZEIah{C8YLR?h)n9zoa}3o>wam~Lj48cEbzbOsMpHQMyCg%EqlC_ zWIR6XVdjz8aL^)Yhe1JM_feOLhML}j3K1$xr!49`G-bjORgaSzQ7e@)JbV?@T0=HW zJ+h*0!V0&Lsk#A6SBY#CVr>dE4RSdks2!@}8>$u8wa;7hmtl`#gFb7cXve`GiG!Vu zi4qYTHXJ&d==zsyLqVIs!-U|b4gIdIaTCAuB>pfw@`ug-;x{cjXEA}_Tx%4YB3$Z| z*6-L6w11-NtEo!_yH=g@WmZ&KBdW4Pwbj9Zo1sm_s6+8&sCVm&xQ+_XhdkOshZ2r) zS?IeY@(Gk|wC~nF95ipWMs+01)2ypg4A!+??K+e+YwOg7Q`f9<3sY~h2%loGM*GBc zSDne8Z@){`owIY1YZI;MIG7mRQV^~wCOB2QH8pgl&%zZo%O(d;$}|mKa?&U;=)qc- zjOm_BoIR(8i;7OlXnHbNU8qEBn!w6LZAX#aAyY%HFzF~dt`gapnBb$8%yCE}G%++V zVT~xuAp=o^9?_-^jz(T9TT%sEQiC>V2P$iH>aCjO{6NDXBuvxez``W&FI?gWLc$vs zR>Uvx3ANDXc(frg;b_Z&|E!${lMbzC<~np}>7j!$63X8y3JsHzW_VSpFW4jcU_+u^ z`+@b1wzjMvw3!a<XDC!|5=n^A(9t-c&Gn&8SY|<&-2{)R{}t3UI=iOG&(cs=^_omX znh)lg%A>|KL)*niS!FUeL&DOgONye4v@w#r2}{P3SpkPknzpz~h9-%IiK;10IB7B~ zL_&0dvZ|V>T4<z~&Qi%xud7Z`Y+PqfW*qC<m~?2x$*iEsED~BNQ-eb$WokOsT=7qO O=dqkih<S#$g#rLP*GW+T literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1a0_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1a0_states.bin.z deleted file mode 100644 index d6041407c..000000000 --- a/client/resources/hardnested_tables/bitflip_1_1a0_states.bin.z +++ /dev/null @@ -1 +0,0 @@ -xMr,Inྚn<լ%HռE/hih03?_}~]_}M}߬O?=ǷϿ/o???/oӧO?SOOS~}WS>}?__>}gWN>zf~׏?+.wE>?ӧOT?}m/o''wӧO_G9__g7??O_'''[y=7ȧ??sϟz~ռ?g?99y|Z?wZ_O}"}???_%4v nn?޿jo₩_?rrr3?ɭɭoOOO???\/g?iڱ??N2zhmoM4M6m_o_4O~y?n}.Oo?7?>}i%ם4_M3O?ӧOU?Ow?????'͟O_?Xo??7?_>}?SOOC~}WSԏӟ?9m?ݿj[O??ǟU>$m'rINN'???>}y?}c/???/_H8~{//ww{/OOo???}????ӧoO>}OOOzS?~#''oONO?yo?wr????rrV~2e4D.>??JiZoKۏO/՘{_M3?g[o?[oߟo??ӧcO{؏o?_,z]g?7__?>}<ߥ7p]?ӧ_7;??9/?//i?ß_q'<;{_OM5/[c?[g_?i?}sOOCii_/'7?}wgI?Oy~f}????[ϴ_/}??O>}_EO/O_/gg;ϟOE~4w \;ꧯ_?_N4??7?_>}gO_Gӷ_???'y<7rrO?SOϯ?{7/'7?'''oO'WNOO\OO/WW䚦}nߍ|_W 4????ONNng/?99Z/?99/''/??5M;p_Oiiڦߺ7?Ɵ?o?oc?/|~Ͽ??OѧO5d;wg/o''wk_??ӧO]ag\Jiih/>}???ד<99y|s?}?zW _?痤4D.>??ҧO?o~LO~]u<?3gwo~e>};Z/OOo=WQ/''/7~o'g??}5??ӧoW?_Oxo ~_5-nw_On'g?ONN*O㯬֟WSc'99_/'W5Mmi1i¿?/i?ß_3_rrrr_o?[?}oi?Oy~f}????OѧO?~^gK?~~_?}K/|{_49/wg[Q~8~?=5O??;?qD4🜜5ww/;i4????5MNiih4M/4MSSFOn?_?a?>~||{wu3Ϗ7~o'g?KO>Z֟Z??_O_/'ӧ˿/?oSӿߏWY.R|?_WuO>R ߿^_O>}?ӧO_S>}'Wߟo??$~FNN O>j{Ugw??id>ii~??\/}?\Ӵޖӿ/_x1?f'g??5?%'''_????#''WQq?rrgi<:t5_4M۴W[>}9mGZ?o@O??{)_߻]w~Ҵ~5}S|?_O>VL>?_N7>}2 XcYg@O??wK?Oi?? E_/ҧO_OO/WWzS?~#''oONO?tyo?wr????rrVy֟WSc'99_/'O~{؏I￴;o?7?}w!}ro?ӧOTu_?>}????/WOӗ?}W3O????IOA>9}ϟ??}oϞɍ??/[|_$''WS*i-m??m_w߿p{Uc}5O??kYKnONNn}/O?m?a?>~||{wu3Ϗ7~o'g?~)_O+u)ϟ/?|O~~_/OO_k/8l?Ͽǯcw_?rrr9?cȳ>[Ow???'5M3/o?[of'g?ii?? i???߈߭'K=ǷϿ/o???/oӧO?SOOS~}WS>}?__>}g?>}ʟ2ߥ7p]?ӧ_7;??ӧ_OO_//o@O??k?}?ӧO?<ԏӟ?9Om?=j[O??ǟU>_Y;?>Orrr??___Okcq7 _5z7^_ӌ??/?99g[[k'''[??_GN.??4O?=_i/?/_ҧO?gH_~|?>_'?7__?{?E>k{״y޿O֯?uӧߪ?ߧ;߿^ӧo_?_?N>wq)mWSc_??~_Oxo ~Ƕ_5v-nw_On'g?ONN*O__$''WS_I>?ϟ?1?v^??/?O_qM;k????oӧO_G7__g7??O_'''[y=7ȧ??sϟz~ռ?g?99y|Z?wZ_O}"}???_%4v nn?޿jo₩_?rrr3?ɭɭoOOOӿ~=ǷϿ/o???/_?E>izR.wEZ/O_MӜmGu4????ONN/8?WyV~rr?/'俦ieOӌ??/W4ms>9mWS4_4MOO/WW>}u<?3g-?}{igZJiij/>}???ӧO/"'?ӧ/??ÿOѧO_~?~^_fK?~~_}?}K/|{?}?_?O>}3O/#[g_}ד<99y|s?}?W= _?ʧ+k'rINN'???UrMz[~L~>n?/Okg'''7?񟜜[_\G???cx/4K4m^^_OOoKOk{?ߏkx~f}????ӧ_?wIO?~~߻?}[37;??wy5/[c?[g}????ӧ.3?4}K>}??___OIOA>9}ϟ??oɍ??/[KwZ_O}"}????ӧ?a?']Ү|:?go@O??;?q7O>R}ם-o''??7?_>}gO_Gӷ_???'y<7rrO?SOϯ?{7/'7?'''oO'WNOO\OO/WW䚦}nߍ|_W 4????ONNng/?99Z/?>}7u<?3gӧϿ?Mϳ]jץN?c_k>}k{?????qi;-(?r?f'g??ɝ8}"oONN;o?^4_?Xo?igm?4&k?#ӧO~v/z?~X;o?7?ÿ%O~o?LOi??ME_/ҧO_OO/WWWQ?_?)_tO+ˬu)ϟ/:|O~~_/OO/OOs???}????ӧoO>}OOOzS?~#''oONO?yo?wr????rrV~2e4D.>??JiZoKۏO/՘{_M3?g[o?[oߟo??89_??_Ӵc ?eߚf/im߫߿?iI>?|?{6#}m\~-Ϗ7~o'g??}]Kvy;?iZ)gϟ/{?O~~&||{N?O3~o'g?;}%֟_O/~ӧ'???=7ȧ??sռ?g?99y<}~INOO\OO/WW'}O?=t_z]g?7__?;>}9?q7f^ӧ_?__O>}?ӧO_S>}'Wߟo??$~FNN O>j{Ugw??id>ii~??\/}?\Ӵޖӿ/_x1?f'g??5?%'''_????ӧOYz?~X;o?7?}_}/yֿKoOk?ӧOT?}m/o''w/5Ms__1?^;Wӌ??/?99\OYyM[w-w'k_?M3?_]Ӵ֟_OOM4??___Oo%[˷^??i)mWSc_?O>}??_//O_??vן?E>izR.wE_Z/O_WQi/''/7~o'g??}5??ӧoW?_Oxo ~_5-nw_On'g?ONN*O㯬֟WSc'99_/'W5Mmi1i¿?/i?ß_3_rrrr_o?[?rrr_OO_/#'?kvlL_[e/MӴM_{{o???uo/?ӧg~_~?۟˯??/O5?kZ<u'MW?wE:oğ_/OO7/o?[o??/WOϸ_/}??'y<7rrO?cO?7/'7?'''o/Iii~??\/}?/O~OtKOy~f}????ҧ/8?l_?}K]w^z7?ӧ_OO_//o@O??k?}?ӧO?<ԏӟ?9Om?=j[O??ǟU>_Y;?>Orrr??___Okcq7 _5z7^_ӌ??/?99g[[k'''[X??[˷^??/OE?~4?w \;zꧯ_?_Nir_϶q:zjg'''w?<+Oi?99yk^w{??w_42 XcYi?k9Oi_i'???O>~||b|:?go@O??>}3?4}K>}??___OӧO_G_?ߎӧ/?M/]jץN?c>_k>}k{?????>}????/WOӗ?}W3O????IOA>9}ϟ??}oϞɍ??/[|_$''WS*i-m??m_w߿p{Uc}5O??kYKnONNn}/GNN}???oMӎ1ytzCkokiik~//'''}s؏ ws<?3gSӿfwM/ijN?c_g>}};o<}egXןZ??_O_/'$~FNN Ol{Ugw??%i;?>Orrr??___Oş?iWwu3Ϗ7~o'g?C8{O~ο7[?}z?_?O>}3O/#[g_}ד<99y|s?}?W= _?ʧ+k'rINN'???UrMz[~L~>n?/Okg'''7?񟜜[_O>g~||b|:?go@O??SӿhߏW~Y.R|?_WO>R ߿^84_q 9_O{_M3?rs>g7?'''o}Nkf_?4O??wM6Z??M5M??! \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_1_1a8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1a8_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..034c96abd830555113bf0df7fc5f848cf7fbae90 GIT binary patch literal 3543 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 K!j_f0#sL61R1*;Z literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1a8_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1a8_states.bin.z deleted file mode 100644 index 10dd5e6b1e37d1b0a9bd14756b8f12ef84d524ea..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22553 zcmb=p_4aOb*lU{&x(_aIGkIy!u>9_czsHhi9sI|sa=I{Qipw<bqT0y^6Leb^dGFMl zHOc$`=l}n||DU_h&TjucyM6l#t>*9Zv;Y6gs<tk+zWm?%Kc9cSpZ}@<{{G+Z%je6_ zpZqE4@Be-JU+wGb>i#eNwsrmA6W{*-?wLP-`Y-#nHTCbF{{CHmxxRjSecheEv9G^* zKi*$6{a3y2{(t}f{J!e=`-%U**c<at+x)5f_x#ZF_+ua4e?R@TfB*k^v-#fUzx}~J z_y6tB_J1pD>z?1|uHQcM-})`_Qvaj&i~at4z2b%aU;h>VkLCaU81Vns&*@U1KY9Lk zUpv3{Z~5=PFaHGC_5L@X@n7%p|C2xNzxv<zd3)sF^ZhqI&HGcI``>*|{lEEt-yi+= zKBN9){h#`@|Nj4;^#4EpKQsRKEq|H+*WdlW^3LA%_WxUdmq-21|9}3U{6G2s`G52O zy8pjn|IPpRx&IdbmH&zVzg++8{h#@N>;K6A>;M1!|4aM7%m06o|G%*IZT9`&_s`W& zwEyY8@4wLBe`lt>zn}8_fBcV~H~-c9f8785|DONP|JwiA|F!+w+W$xXfBXOT|Ly<J z|KF_tCja04-xGfjYCbK`@M+OB`+Hmdvi=TTbAQJF`rZHiKmEUZ>i@~F<*&cRPpWVJ zTL1bv{{rd1{2St9Z~kxnD1Y}KGXuka`F;OhYyNxwpRwU@|HJ=foA%HCHJ|aP{6G8c z|BwHF{Qu+sAN33y{(pY;bMfJK|5JMYpPc`n{ZIdo`Tv+198P_m|GEAfNGt!w|AN2& z|FHjO|M{Q&&&l@x<o~lXe5?O<@Bhmef8u|A-v90YkNN}uBmO`9&&Y7#m;WFAf9wq3 z<o~z-fBgUC{C|_}|H_B_yKif0+xOq*?f;iG_5YF&<=>k={guC+=kHtB>-gW^zaL$* z`)TUW?1%58wnO7KR?6Q2lrjoG_3x{%N&T~XYWThVS2F$`e*eGf*S}xCe)jLJ&vyME zFA=}8?(Oq-oBtPo+4uaFuKl<9w*ANb;NX1pf6lk?Kj;5%{{P1QU;m$z^FgTir2Vw| zH(PA1|4*p>ciHCu*5CGD|5UE|tK0v7?LYg!#`FH`zukZLZ?)ck-fRD3-~Ipi|4)6| zzx3mOU+X>oZ}R*9m-Bz3|3AsS|I_~Y|2hAQ|D6Xh-uzGh@;~-d{qCFhz5Z`z{D0#A z=l?(I|A2yO|Mvgv4QGDtfAz-y^|$V?((Cs}ZTJ88g#Uu;zx7kT*I%q>VA$}ldaAu$ z&L8^|e;65L&i#9TrT&ln|M@rnPqzR0`2WrN_wgC=zt8>OSMx8s`R{bS^Z!%r|G)k- z|NDRA>DB-5|NejP|M!3Ue~Q<u*ZhzF_g?*Y{gv<kkN*Gk|8o7$|9k)U|3Ccy;r}21 z5C5wF<^TVs{lEC%x32H|EB}4}j{og{ia*zX`mgr<|I`1I|C<N>fBOG!=D&~sugTxq z{!jRSH@5Wn=|A%U!_W0sKOTSly#8nPpX2BMEC1jA=f1-K#eecY{byom_<BF?^?tv{ z_5b7<Zu}Scm%snd|Ed4dfBZTBr~cia_t0?RXL$MOfA#OmeK(hz{<hydf9>u3yZ>K& zJ30Rk<E{(;Pg{T9fByON;-?_t`d|DE4BzURe(Zno!+u6R3&V#0!dw1Np8Nmt|KQ*C zpZxXe|Lp%e|JBdn_}Z`TYvX^%?*3mief7^@Tc`d1x&Gh!EA<-l|L-oU+4?qrTYaeY z|E-_$zx>(yuKvqs@m2p9KcAno=b!zazy16E>qh-Q^j>~J{Tun;%j?*`Ha|LlxTpTY zPx1fieg9w9SN%1w`y>C4|Nrs-&%gZtGXLM@|8suvGu-=M^6&Id{ZHTj>8sTJfBgAz zeBJh~U!6~XzAyOxfAxQU28K2NkNkgB&yeu{X8j-epOZmZ=x6tT#smM(Ur+q}-{;tT zqyPPX?*FlWvi1L`{Wt%!Gcdf~zxR6mx&Mp|Pd5Iyefod>SNp}!|3Cj<{2ZEXcb=<{ zsVcFu|MGv8{Hdwh_9c~X!(V@k{%*gk_LKU5gP-ot<)v%?EIwbK`)?KRG5J~b-TyBC zfAVX7)t{S>|9jtjIq`qY>U!PyXZ&7Y_wUM{|EK=l>Y4vzK8JDFhg<(&`0sn?$LaI- zZ>@~XNq_i#<1g`=|2{uH$6Nlp_<a8V^#96l>$m(pyYJuQ|C2$1uUr48{?}jmr>CZ> z>-O*4uX5|(wRiTp7xw+N|6Tv1{?Goe`@hQnP5ytw{wdz#GXBrXeZO9{-~KOq3ziNJ zKZ&3DKRYaL)&H+q|F*{7ug{!d|4Q}e)ouUN{_U3EdA81P{_B_D58c0duKwk2lYOh+ zzpPmH`+N4U{U83^wM$?6FZO55|HbqFXZ*FF1S%JdZ`ps`|La=)qyI-<+kcz>-?;AE z{J+QlPXx!u<a)lJ%niTy-}(RepZxd#Pj>%jzwv+8-{;OZ>%T*i^uO2kAl8$O{||mE z5B_ib=<oSI^;!Qx^#!OTWtd>_kAGYI!+-WW|EkyjlfO~_(f%(xL&K8a_UHbCBK2Fn z{_p#j|JA$w>;J#~zyH6=ry#A24S(mq_&Y!2_xz84*8jEtC;!3zTKx}jnE=Xuj17N} zgEDXZr{({j`2X)${qNoH_q_dI{8#6lMNixH*8k1ATle~(JE%mFSNs3r_i_Ed)j9QR z|6l*~^vBYW`cIzHYvr?^?{EHnzW&oZ(Rb_j|NH&v=KcEm-|=7nwBOrbDtr9T^I3Iz zHuc@}jjw;Quap1v$NlyH7vJ)~{5+rc|H%JSplT`d@&7m9%y<8Pj9M|B{P92IpW%+b zZ$8F<`+5G~pX=}b=N$Ooe(S#avG_;-Uw^BA^z;9!zngil{a^UI{*V3t`FH+L|F&QJ z?TxVC{~vy{|NU?OkMn<S%b(5uKNnVxf(z7t^=|*=PyKhjeLw1d@a}(4{{MuOr2YT- zKm2EyVDUdZ_0Pp!f5ksf&pEe$d*1v%C*>9V{!hOD-veC#yr2KSYSW($AO9<SW@jj{ z_`N^)KT_?U{{Qm6|BGthR{ytu|MUKv=l>U-|9|b=|F7@8{_dY<{r`8+pV`}NCjO7C z`4|5q()$0!U*XpKUi@4PE))JL-nW;n{d4&I{vY>$|NmmY`QLLndvN*s@&CR5%RyyA z_y5C>{oiKC|4zOEO3B&(AKzB5|MdRQznEu<-+oq4TmR1g>}lz%^S`|>POQ@}x|8|u ze&+s||KGpgKmV-h-`<~_%l?VmmruIB+T`Ety0usKYsdfo8&jXZzkcC=?XU8umVeuP z{keVAfA=l*i_g~w{Z9Y8u=ch6$NfL-cm6&5?*ET^<Rtz7;ZuHwnV;+T9+#I_|6hFf zN7m2(c~Ad8`L(<BxBkif2Y>DV`kDPg??3h%>({;cAN}+Gv2Fhu7!LezU;n?V>;F$s ziIx0g|J*n4m;Fn3_}Bjb{9AB~0aU9o7#;inuD<X;_s{gH_7Cc_&du-J|8Mbs28M*c z&;MOtzuxEjekO+B_vik-zY^4Nxc~S46aRld>c8Fp+kNZ$K14R#@&EYW>o@=UfBE|r zC8TS=>+k*_{YU@b^8a7zxBvM(&mLOx^1p^OuPndHGtBv43M+Y2Hvhl*`9FcucH3|J zi{JKt`?vh!=l>`EpZ(AL&;6hIZ?L1cU;lOfr#%D1pLmyl|GoYj|M@5Xf4=p9>woh9 z`~Uk_|9f2b@7(r(YfskO)xTQ3{@;bK?~9hk?7#MD|C!Ir-&}y@!27L#cYOK0{g3g2 znlB&ut^RMlKl^3<%g@qZL3PEMU-^GJAOFAj+5h@B|9=~Q#xMSxU-9o^-<S8FAItCG zpJx9*Yk$oD)z-gvKmFl8AJj6vZ~MP|1Ei$A3@T}LK-s{*_UqN{|KoT658nM>B=>*z z_xV|G_hXc`U+4ZW{O1k{zxzM!L9Mqx^8e3+TB`p4U+(|)YW4bk-}le`uT=l3zvlnb zx!?V(Zv8)XqW<o;{pt4Clb*Ehzn$~nUg_WV|L_0WzyJU6|62Jgpa#M1|J(oP{|D6q zNOhTf$UlY&;#>a|zy9q$>wbKYME&dE>AQCQf7<)C7+fp;`pNv_*gy9>|F2H|%fF+Z zhk-%i?=O8NXv1{l|BK)4^Iz7pJ*ofk{|-3BL5)*T{rK*;{l$;_fAs(PSbyN(@z3^K zU$1BTss6&AfniD1|GTIBpCA9kf+L?F2en-1mprfEJpcdZ|HuC`|IYv04z624*+rh= z2BfvFUjNJg-<SUhpZ>o)`LgiO^UVML&wqcG7q0ufZx5*Wymfuwx9W`l@9sT%eg5;Q z>xb@d&D(GCZ)=_Ix7{Z58bGa;$4~A*`}61X*YIQeqbr~Oeck)4{`~Lz^^cz2{QGtL z{rTtkpU#&r{}p8Yzx(a_yZg5q{F`5Tvg+^dPe1=gXaD+t=!e(WY<v4BKl`u!PkeL# z#pn5V|8@S~n*Ue*pZNdhTlPN!C4}_<AL}7~fhY65|84w}y!`3SpY3lx&wuuF{oVg7 zpPx^Dn_u}S|Lgyk^FRKn&;0-P-TmU9`5XSdFZvJaj~IWpw|*C2F8P1?&Hu~mpWXkZ zp8xyYf6M>R|IGhf4`QVMw_p7K{iOf5&;AShHJ|r~`@i|nhQ^Qod;i)qq@4R7nqD8Z zJ$}voioaJuZH)Q`y-)Q^_x$hv#|&!jt^V^d@$rAhXZ#Eg3cl4Z|M&R+kN;=>fePmT z=l@mzclv#+{NMMdpW~(9>@TVOr~mtB{PX{N{?Ffe2ikW1{{QU$AJz|l|Nm5PZ~1TW zzW@6FrvIP+@AUuo;7%2&$t8acl6XJ<2Sv%-|2zI4{cHbZ{%laQ)$+go|M`FRPyD6- z|GnSm{{P$mUD)?^{*U-S`Ty_#v;Tko-{${6>_4g3gV6N<@(g`5|F7<|m$UzW`u=14 zx_|ON_dos5_EY|8{pA1Rpyt}QsQ;x>|3Cj{IPkCiL;dfk|JQ%9Km5G@+5h6_^`N8) z?l*ae|G$6x{O7ZFYj6Ia`8Nk%4f9`U{TF|4=Koqd`}x}WAmPiP>ioa(f&Z?@{~!FL z%+T<6{(`^r-+-F<xBgGAFZ%iT|J(l|=jZ==wc0-G@2&T@{!ZT=bN2fBt$)tff308o z&-v${`%@pU&aL14clE8G>!;Q)e!jl+|Kj=k1OCd}{!e-Q_5Z`S^<VzxU;HIr_n!gW z*7|C_LSCd^F6~eAx&1%v3;+24zx;at$H)Ia)PuTl%OQ2u^DFfXAO0=>9DlBU;{NaT ziXVT=&zJxIY4_T-@=^2t_f`DA|GOSkqJxqmGsExm{~rH80q#PbjQ_*W@U4Cy-|YYC zM*pV#tbg+V*?-0Lf2aRH`_G<%A>#krz5j~;@iQp&|9!9dzkcn1N!$PSpz;*dAL{>q zzVzSYON%f6T=+lyZ@{{kp9@cC?~mGkf7kzuZztRTY(Hsl_5a3;$MUuRvOkCC8vMKP zC;H3$f9lu&UwM39?tlC#zy3eZqyA?9G^!6+_5W(@?<fC@<InziK5Ki_kKMO^@_*g$ z-?RVApS5RCCs}jv@4veL!SD1#^Z%dv*l+j$kNt1?%>Rqu=70Mt4{DA~uFv}U`2Xei z|24wb*<@CJ`Kx;I+xD{mna$tc{=fPE@c+mE*ZyDo|AqYT<Nq|v{~iA+|8f71`Ts80 zKmY&cKPWK&*#8IhsQxbh|H%LA)o}Ye|K7tZ19`Ror~brm{uK0gefa0~Z-4#sZvGRf ze{%h{zviFs|2>iWt@u}r|9<g*>&pIl-(UJMwATN)@!kFLm;bjufB(%=`|JBt&wt7P z1+~T|g3E=A|2qF)1(m_-asM~&|1<w1YOnT$Jj0#;PeE<h9skwu|Fu8x@A?~i`BVRP zLz8s;|DFHEK{3L=4KxZM_`d!bsPhD>%>VcQXJ`0rzx(}vm*f8**?&6zpYgZ+`Ttke z?U#Bof5CqSh6!1J%eC$2%AXcK^1u0vJi~#9Z~puJJ^ugW|CxV5t!L<fz@@qW&({4r z|4;ru|C{|^<^Rcp^3oAV*XJWB;m!Z^(*Eb=|IH`=?^a)a{Nw!Pf9>bKKVR?j<LvKG zL4QxGgT`InFZ{c^x_iC-dF^=a`s=&?UixwU*VY^FFI6zzQm_BiKe>MP=g;S_$4mat zdph;|dh=QTZQs}b@0^|f{rdg7dMo=W^>ue%dcXanziofn|7(YS)L&D54GPNd`D<VP z=YFhxb^YHz6F@Df_KlzxRM~I!f7c;p#r(_vK#d;c22{P?&*Pu^=T1w1F2Ct~{jBHv z%l<E)XWzed|I?5Aul`?Nf9&)BrGK~Yu0Q`2)R;Q`*Z$x9|L4#Af3u_hZt9=;Y5(W{ zn_2&Q{+_qih@$rSpZS0P_x#)M{V(7Acl678vj_4&>*00Y_iy0#?e#nR&b%#NxTo~@ z+TZeb?S4+ScbM_-{%7|8^Uj<8OMLt%bm_O~@8CfiumABU?Rn+@iy!-+^!tZ7L&AUa zto>X6`kw#)@&C%d_CM99+yA@&&;Rhx;B_&T$Ddv=4!Ud{_}MuA^QW8pv%klC#e))_ zt>M30|EAwsKWjhltMHTc?V!@ddH(*4zvut`b1wTWKli_O)c+^{Ppqwf7GE>R<{y8r zy}SJX7oYY2otOQ8`TrMCzw(bgxMQsT4b%v}T>tU^gpbRAy;?1w{=Yn9f9e0lpjI&d z<o_o1SDqi=|0iHR_x%6ya!c($pP%~r|G$6Lc4D{sPt=>s-``Wee#-Sz>$m+aKb8M; zdz$_7^IyMIKYX9{eE*kNsrakq75_H&y{qrN@L&1n{)^A;7ylLhzZz6o`tSLdT>sPl zaXNA*`}qV&-F4hPe7pSI|2qx-iQlfD`JaD!{nKAN!GZht4`WI4|NA%U?WX*Vm-v72 ztvv(7hyM>>@9+3AA2i5if9xOo?fbre&o}(x|3CjWbj<9JJ%dWm|GWPm{S*IG{@?t` zmj4GoX8-ur4<0rH4XmW?`!C9H<G;ag`JDR8pX>kBzx#dvr2Y0kAOC-=ztg`WW+$Qr zybII<-ud?bpL@TyR=@hc<N3a_f6iaucOvz`zx4l2{y$~+|J#4>KLYhCm;XQfr2qS$ zhmg{|J_1q(onQH%VZx6;>*2-u%ir>Z+r-O$+duqSul2rO$`&#Rp|TAz2r(Br2(jh= z#h?GP|DONw^Z(EPcYZ>80rj^&%TN7fKl^{s-}UalSJ%GHw%_#kzun{K&rRw-M*W-8 zo%?sk@7>qlPCr)vQ}65lD7*9jFA+P`Yk79H>EE~?yU%{9UkWP$_8)Wp|FYicuX)|; z{`OzxfBx*Lx%4mab$a~&yWouP|M)-ev;C)k)EoWV{%il^Ke=K5KPzwBqy9hs_J2X} zz(w`O|JJwSLDepFWbI=;s4XFU95e>F^|$}UZ~M#sue|o}_W#ZQ+y5W`AN@c2|3&+6 z{eLg-`)q&if5-o$pu}zcKm9*sZ1X2%JnirC`i%JBx4!?|{yF}M|G$av_q*)3-~9Bq z`OTmI#q096{l6dl2i%IT{LlYCAKGF2TmSq2xBov;`)dzAu{Z2l@w7kszWt|1fAwd7 z{-6K-zvsXG(Le2X{>!`j&-+vUhJX2>G`sje<G0n?zxNybTYS5of#Jdb!`JI=kN*E- z&#>XY;h+0{;1LRi|A+rS2aU~w3wcnD9cNo#a^vs(o{#oFKmTv|FZdtSH1XK^ulV2j ze;}=j-|UnA%l|+AKmFc+_4-eswhqIAf9LQ0wwImz-@E?bbx_&<L;kh>A8<9_`Tr=W zjRdI)e_jR+QZ%2!U$+0Q?#|!7N2gx*4|pCR{`K{w{oao`Gv@y}Y47*%;`jdbJ@wl^ zo%%gp>TLawzw!R}<KylBZ~UIW_Qen>y)FNT&;6Tuw{BzI<FDbbK^+9fT_^re{q#>C zG>Cbve*LH8?Y;lmXWBC~9KQK~?yvs;kN+G01~pCp*#Cb2m-}t@{h#-zpRdo|@c+`& zpZniDub=z>^S}CMMWDe%@K~?;|3~jz-v2-S|L>C@{lEV0{}KPM{+Is${ontCD%n5s z|6wJ<@&DQJzi(~-|M;Ky_x}^>^Zxn&yZ_|R{y+7f{=2=}|7XATS^IzYe>wlYR{yB} z<9<+z{9}*O%KKN(V3GE3z16>pKY#S=`~Uv{we+U_mwr+|<-hO0c+kN0?d-qTGyk0b z&&=>!{?Pxo)Bo?k^q*(`|C#^K&;2h89UNm+i2YNaZ-3tW_m;H(>EAYkOI}E|CjP6w zGX3B8pMPrBfonT|&<M^ye}@0!vj5pX_k%`#o4(a=0u`ZI|NZ}+d<q&n3$_J!!dHCF z2GwEjicI78U;AYL|LXs#zxbbit`F~9zwPhYZ|k$3?+^ReJ8%EBzx{RpoW9n7`7^oq z`v3Or|1W;u@A^9a$6sb}!FuKWg1Ue|l`}vc_DBDZe6;`TzyAL**r55Gf1vi>uld3M z84vuPf3Dv0zw5ty|67l|udk{5bNc<ZZFL!y|EwSVt$+WYk)Z+H>ELI0WB<GVzcMIJ zKdIM$v}d^S|EE>XzxgMB1V8&f@&D}q?R&n(!$%&zgGU}3Y`*PZ{^$SJf9YTT{09w_ zL#7Yxum9}FJL31^Px9ja`Y%7%pN-#o@Q3r~{EPL!=EwXG?zgZ0Q?F@l`)Pjm*Y!_N z|8ZRTFTDKi<p1YuO+U}izLy26Qthw&w=?{A>GO6o{qDCqf9%5kH@%<FS^rP_xc#p` zpZ~w9U-Gwq+y0x^>;Kdj{rCU3@@fBn|NZ|L$L##H<mtul(_L=gzx8)H@2&0s)Bp4T z2lcwP|AUN^-T5j1ydKo>`{n<C?*Glu5wbtvX|ehLy6vxq$Nw$(z26zuys4k@NBeXA z*;C$M_s5;xzwPyJecn&*dsX(|`gZ?J{deW<H_yK;wguG(w|?r^PCpj@)mHX=$^Sav z|KjuZ-+sR4%6{$nuj{{jmS6kdeG{lv=k{CuU-<oB{(t6I{5}5fQ~fcN9^iS!dWM4k z(|^~4#(L-1eE-kzJAU*38jauYp-H;_@AH503=KBl>~H+bdsXkY=l{(A{zzkALdX6e z{HA^9zxww7PtN~m{tX(XVqln1^8Yw!q=n(YzxS#Ct8e{3f8zhg|KI+fv|s<{<NqI^ z;#GL>f8pH!#`FGf1r132JN}CwG(7;$ejw=|_J8F6`~Ukg|If?+8=us_y!i6Zh5xJT zG{V>Yx$tyrJZL5aGC^|qiG1DvA4}`|->(1qKWd-M{wc5g?J^gCb$<J&yx{*&|9hJc z{r!5qKHl#4@AvutSI_%@;rI4+k7xXkxqQC$dH%=ZXHox-zjp?WjLYBs*K7Cx=G*x{ z;&*<X|HD4}&-}ap(!STD76kT^|K-oxvu&Sm`|q^f|C{sw-}*bB_s9Q$-@lLi@cvVO z_n*Jb|M;!-+YbJ+F9DA@O#c1<(!cMEWN&Bvx4-i*{r-RP|1;}<FRpyMA2Q$o9eKF< z|NM*p&Oi5O{EmKIpLKoyAJAYbsM7iPpYfkOgV6K;t9tCCw*OE1H|gxp@7F-RL*^qd z>p%ULe+jOC{(g@4pC)hiPd?=z0|Q_B|MFM%|N8%*fAjz3{68Q6zp20VJ$}pj+V}sT z+y0;Z_fPznpZ9P5-2X3j<^StN&+Fs6>Mu`I|772N{y(>UHmFOGbzI!G9$Y4Dv48S= z`QrZiA3w$aSO1^?Fa6s8JCC1(%h!LPkzY`m@Ugz)&&t}j+4Vf2l$`svz6LZ~37*G3 zV^@Fv)78H#D=QcOy8N$J@63DGKI^mpt=~=uHFkgBjJdGiy#Cs`|Bs&geX5#ztp4)) zslUpfX78W>`u*GQ`d`3Z{wsCgz(esJprLsGtp985w}9HY;{VmR@4xw19(7Q|e$O99 zh2nqfzyEmr_(}ab>3H4$_t*ZJA5*_Q@4xC#^N9c3>;5t9y7-^r_tmL?>$U&izVS_- zf#Jvh4`1W`KidE2XLwW3^MCu~zjv?v=Q;8J!~dP2nFw&{&FpaO$Nj(h@9Gu*uldCO z$N%il%O9`Te*t&x?)?Atb?VE1;S34?cW?f0{T0-3*!_R*pOYZh?XC~}eXAUv&1Am+ z-|^pS_y5j)`|YCsBZc()f2rT=yCF@h_tWa{eQt+NS0?@imlyWS|1mdw-VZN%bH3SE z|07V^-YomCe(T@$d;d+UK!ZC!>ks@t@jvZ9*wNpj{#*WMXK47}ed2%o%lfwa{~sfU zbu!P_-#LH(=e7N&KhHn+ul;&ee%HU)byHqnkNP*g^4}E1)YR?`^3&`7O{-^{(r@?A z@%jF5)y9AIYwH&OyIlWke&qjN`@%o=RsUYz`gYRZ?0@!_|GekzZ%zDHTleSj_v>$- z$G@Hay1q2Me!I;77oS1X)4QMl=Yy8CRsa3}b%LjcR<7Uo>)ZeA@AX;V=P!C&|Mp+- z+P|1(E&iryczo^Gt4J-=J)i%1`u~oX{JH-2zwd9JNA>LaP(J(Ze|ON*gT4PDOA(qu zb7bJ=>D&LG|0CCB|C>*Nmm<{X)&BSR{M(!BaenQ8pYZSd_iU`o1C4aK+t)MPz45=} z_x`F){~5pcGcqtNiU03<<Ugcg`py2=zvsG`ov9oDZ`S@-xB4gkf1>?A{u}=*{w**2 zdsX2-3upo@<n{jOpD+JJ%u~RT&%s6O<adAazk${({HRa(zxMwJ@Tfj?;0jcie*{gR zot*zq-iN?SguBr-e=FmDM*RSHUG`sFf3$A;G2sh#KPT7E`Ez^D{Q7<WPW>p?UcaY) z@5MjwEC2uYzhkp||G#g)FaKQl=ksH~_^jvk8~<+oy<P0s|IK=l>+8eq_Sa|oj;>Px zw_QiqDf}H>r!cxsVIbEjB>YeR{&)V1AMt<O|NXE}`2YCl{99kcoBs%dD)peX|MQ+M z|D0Ue^rL>lPi6*-InWtg`^`uL0{*)`@4tEe|IPo8|2O{K{_pUA&?FFOz6I3v0gnSt zw*RYM|Eu2MXZ`mlUo8H8-tvF>=f6MuIrmq_$E~vesREiIx7|`-p8xUd^U9~#mwn|I z*ZuqXOZ)NtwR=AO`|9?2|MS1^?F&D@`S<Jgd;jO{pU(GN*RGuV|LC{t@9sxQ{6D`d zW$(Y(pMU<XHT_$kShMuk*7@?EK*Q$-pcWK(F#~i>Q}M0%k7%<(=T-kl{M&f>)0;oe z-+uak1}$Z{^7;A3Z`*DDZU6QE%lV3b`?vfr`~H6CAM=R+<vaf$|Nr^_%%AgRzpvlj z^Z)Xj|CjAQ=l`9&y%uRn*qr~H|Ifepzx?F?w`uj-f6uf1QT~4(Hh}p59;AIc>-O}W zwR%&w=fTEE**Px%um1Po{^y;?>~rSqUv;JK^*`_+&CCDVKbJpz{QuC8_#FBFYz%My zyS?4MZU4)k_W$g+{#XD1<kRv0xBq8a)SsHF{eH)vD!;5MwXC{l*>QHi%isR<e!1FY z->UWM$Kr4Q5BeSYdAs9Zt)K5dfL1}h_$<Em|IPdLC-VL;{#@_+dj22zonO!Y>F%F= z{Qts_&%qNhNB{49T>oo+-2dQy(9Gb&|3Cg8fpm=Z|H&Ku3yH7&`uNR%zPH=o)t7); z!HJ*dKkNVX=f`yUSH%xM|3AI>OZvZ^MSt(#uRnj>>9^p|_s<^B{{DXIrzp^39>1Tu z|F6Ay{$=O9I{iPfZ~si+=lyu~FTV5k*Dn5DFZioo<+u5-Kj~ZQAJu;aEk^0QUjIh_ zfBGMkhKbB4$QrvJ&tH98{MjBn9IpTQ|HDt~W9%V;JKw$`@6CVd-{;#m{pWsczw0kM z1H(W2n!n<LkcqzIH~uI5-o5g_<b?kZ{}+SStAI!4*&A9u?*AQs=fBgxcmLbwe6zQx z<Bk6hTD0e}^Z(<2*Ux|#I>@K}Z+@F!1?qg%{<r@5d>Uxfz5lo1RBc2HI0oDT-u`#~ z{pkH={(t4a-?@ISe#Jjqq#pRZe;e!H%rE+0k68OK<IhK|YafK>BNjiX)c#i{+$Jvh zuWs|-|LI@<#m^yw5J!*(AwEL}A?AFuw*t@C*&)x@`B(p29P~f^bNs6RUo+~ruCIOT zzU}}0^gn;*JkyUmJ-=w<TKRIwRE_@qrT^kjKmQqT1sc%X&;7f2X8Zl~|6_jqIc@PT z1G3Jg`0~QPYi0j0_*`H8Z@K;Q%B{=rFY4`^KYzOaE&Hs$Z(i?*Wc<uO`w#vpm;CR4 z?0?w*@;Up@zN)V~GVS}5|JlFoAAtuh^uN`+|L#T_S^MYz`_}ckM?dzL{a;@8U-Q<# z>+kHZ-m3py|Ly;W|3B(q*T1&^b^PDP`dj#C`F`+&3a)$q%l>u$Icfjt@AMbn)3??9 zSF`^A|Iqof-~Ly3{Rg+A!7C;p9X8N<iTmi2(DE^m6%&Q8f4j%+`JY<+@BiC>_9y?B zYyVfjet+%lde48n*Z!{srP(j`2kJ^w|BD~1FZs>S!0@O3$FKFvp_3DB|8JiJjZk1& zIkEbAKi}^ElMVlY)}no|e*|7asR<g-2d_o5Kl0BVG==%&|C!(a!Ao=gfYxf>tp2}z z@#p%N=l|dO|M)-S|76@tCh7wSl<oETAKy-!{&aoo{_MMTnSZkXM!hM|v|)TZ+5YG8 zllH&<eVqF7eOO%O|DeS``S<^S{qpzg*U#<0{aY(KL`rX?=l@r2wqJW&|62Z@e_7Ds z%%A&%?)`TK4PyR!ANubH?nP*O>lfC(wf_J6)6ez1-{N=K{Ga~!&-%~x_x_)cc?TLy z1h4CT7XN4Nhrjhd_s^I49|#&mIsM=N|I`29|A8jkK&z`^tD%0>gVN=<`aAz0{geN6 z{_Ovg|7XwnKmEV|zxy74r~fZs{`2_%==u!MkeL2IP>Mub!E^dQKg01e|3i<<_s{?T z^!-P9d(dRir~2kU{h#)q{Ljt6aIL<2?SHG@|KL?&&Oi45{q#Tl*ZhZ{?LYtD`FTHR z0VHTyFT;}V|L@;E|Cu)b+MEAp>b4=OwHHqR_1~ZQZ#RGb`KjOn88m`(<3Hzv|BD{~ zPxvRuaNwW+g@68K|N8&?zx{vGekXXYY!##vzP0Xc`P+Y|W7j<c^~9g=|Fu8p|H7Jo z?@xWax^4f>f1z*xTtBt{;^*tT{$D&Fzv5s2y!uTafBpXe>TYh&_{+V&z5!gY{*t}I z-(}Bl{Lk@u{Ga(2|CaxM`Stz}=%D%h%aHXY#jorcD*j*ossDWciTl6zPx$e-|9pS_ z&%4*I@#~(ici#hA5Ct0ehOW*;TAHK(4>XG&-+uPLv1I+JKlY#MKmVU_{oiT$$U_`> z<YB_`f8VG4-+%3Y&%FQhLBr&rC1%I}Kezf{h<C(qZhg)d&>DuVKUbSc)MxzD{pJ6E z^6UCnAJhB)>!&Vv|5v>B-`1L$_8M3Jzgk!O>Hp64Y5$7PM(cvA)b?MXHJMfau02cL zIJfow@mKL5{u)0#Uk_Vp*1zTd#c$@nfA#<OfA{~S{nkGp|G)fRKSeuy-WHo*|0ZSp zj^6!$i{tNa|KI$7`2XYoYyYo7#>u8w|9||a|3~~E(4sO>?;8}D|K>xMmt3xgOabSi zOaa%Y{#zeex$@uj)jzM7)&5`V_;1DZC*imM&Hnkm?uprN%i49z?}L{iFMWUM$EtnH zAJ2SufBnn<hd!78o&y>sD+Z0`FaG-91Kg_1_<!X8tLXoo|Ap88zY+iM{123!6P8c- z8Q%Rb`ri*4>z(}mpM1jq>~Hh=Q~%$EB<bJl|KIt~%`o9ObdtB@yZvX-v^luuKmMQD z;m{BJ8+EO}|3CRQ|Ig3*1kfmzJOjg|cmFLwlYk62{_lNL@BjP1<WEq2Z~yc8RL}w! z(B6ne-|H8>tv~je@YV?XX@B%>t>()As=vzr^wd=OU3<Q*hEI^x&-iorz5M<!?>GM4 z`Y-<U^vBad%OrBQ)UBBNpYNUh|C7~WJNEzk_5O5v{r|sj>#u&6ulj$jROa*i>|Z-S z{L!sD7jydmkJ=ZYk@3a1LG$Ii{|f)t-u_Sce|qo#&A0Er`Pcs+WyW0n@&Cm?k3aaf z`FQ=!=k~up$L|L1W{}USpD$70`G5WG|DDhOul{!4EaHDVWM@Rt|M*+~<F+J6zy05S z`~REY{~y_Z&aXFF|F;~nF#^1x7c?v``L|x<zj$ta_Fw<Ezb5~G4w*!@|7U;TKeNN5 zKk-vPy1)Jwe<psD<^Ow-6=oKH{p<cKgW74Y_t*b>ee%=cW7t=p%>V2E`(O9Bt?&Q- z-veIn*KPMd+WP<X{n}suN4@*=-uq+ztxqoh(m(#Jf0+LEkNfNRw?7s=?+2F&-`Z>b zmwfriZ~y;M{rmry|DX9azxoe!F#~Ai_j3I&{eS%Z_Mlcze<CO)ul?JfKmX53NaN<_ z^Y@YacG;Wi=ZDna+JC<F=iU>A%YW7{{|j#H+Rx_x_5IoTTR-Ff-0_TCf9Xg5udPA< z*VVlJUi^3O-+!(Dz*`e;osR<##a{#s#e2S;58Vs&=>HQeYp&a;+k=+leU+=Pne*p- z>EqQ;|L>mqfAZ`1*WT_|`Oo(H|F!e-4(7k)6ZY@g^gsV;z4UFOHv*lI_`m!A(ZBjn z=7;`k_`lM!-s&HCNkhZe`M=}$?=!mlpNrv5eK~Y}U;X#}(A_ED^|RuCBeEH2{d|1- zcl(RqucL<a-TiO=<$nY(p!$FJ)A{Oupv7o^<p0~Rfs_}Z<!A-}uER^-v;Wf16Dn<Q zzx(fU`~R)q^W8w3P|W}H|B(NA{|&f5dOz;9{qz3}3?J$RfBx70d;Y_3&^iq0_7nTJ zKl^|Gw7&mqyW0Pse?TLx&e!*!o?7%b>hyo3^Yb?$rl!QdJ-&4Q{-^T|pDrG^fAQyf zUH-EFOV8(D0nPmzzux~*z3;#KdHdMgc0Z3ltMC1`|KU$}>r4C3_t*dVH|y`8)qjir zu7CID{WQ>Wwx9Li>c9WFe-K*IzW;yHe&Zj|)X>+f;rIX5zy0U`_FwRpzw7VTuiE+_ zqpZDxziA3u(fbRjWm<mE{$=KWZRP)^xBt)k8`C{e{9oSYzyCXa-2VsOcGmuXdtCsi zL6HCd{=fZy(UzIk2mEAqh`aLX{Mz^OnRWG^iGS9<pa1gJzv<@J&O_#*K-<lJ%NPC+ z_y1=9;GZD_L&F#3RWt7Q|L<A)AH6d*y2@<OtTG#2r!cxs0eJ{zbe+PmTc_~m|C@dP zg=PPD|34xBpZ!g}4QMx2)`a>d&^pCcU+=H|Q&OknFYuq=sGfnL9X5lT{tanBz_a|H z`R||hpy99$|M6^0<5&Cte%>6p<Ms2t{V&;P|KIST`TNt}U)AR?sePNhzx~_$ce?xj z*{rX@zU(Xa+<E)>dgvD4dl~<}@A>~%J#XIK_<Haj?tecEm+No+y#L0(TYsauAODY> zzUKOV?fLijZ(a6Zzh`~O{%@b1=l#$4D}M~sf&wpQfUIe%_xr8=4{bN~&L{Gx?aQL( z&8<IS_djzUXemS0Kbvd+rXBwu_J96A$@BlGf4l$gpY3!|V@mJ){~z`L?2Z3#e*CX= z`p5cNf9rpx|65!CY1@0)-ihZR#<%~*zy9m}+<*5?{?h+98|sm^tlhs2Y2OzAHrjr^ z_0u)@7%4;Iuln=yf2!@S|7h?196t3{{$0o*&EI;}|0Xqm;wAofzkPh4q2cfS6@RaN zGq?SJ{QvTA|DVi{`S+v#w>|H3|D8ooWv9oV_w+sQa`t@9+0*I&*WInxtetu+{Oi{v zKeB(vXYJ4WXSO0<^}j4=6%>E%zeQi|fB)vc`L@2~-};Qdlm9Dk|2MP#W8tSC_9p*i zYX2-gzyF7QIe4=`{i~0k|AQB#%)bHY7$5!bd~E)!)$8l#{Jp>M@3p`EppAF-KL0NN z2?XsLaIV#>`Bz^#<=+|m@OA%x|9<~7BEw$k|J|CJ&;RxY#c6{U^JwmWdVkj6Id<1C zzi-{YdhY*A<(W01_aFW|Znf*bsnh@dl>ct?|Mz_J|Fa&nB-{Suul~PJ|M$%Qi`2=U z@BEKpg602k+5a(j>q`DT2Mve+PyJ^f^Ka_w=itEo@|pcY@8A05|33r1)hGUO-wxZ; zrt}E1Az1>nD%bq0J@Y5~KlORwRSux>3x){>|H}V&|BgR#|L^??m;bRJU;ps6J!sLM z=J)zL|7ZOKFLXHkrhWrtdG*fs_3HocfJfa6?H3h2MYMol|C9e7|9sp3&(*K5zgzkL z@x0%+e)3=4uYN2Z-UGi3T2>nT?q5E9?F0X0d#r0893CMpepvFpK80YLc=o&hEzke2 z-19&43v>|T24WDR3_1vL`Jel9(7xisDEo>t&)0{%`k(X9`|EzWx9gG4ak%{FX!g%w zy=`9~zk}@1f4ck1|LmVO|Gn8k1A66&^?IK_{Qfzgdw#v-ae2r(m+CyLE&I1VmM{62 zfByfM=O*i~fmU*xUH(7yoA+bz!q5Lw{C}7K=lpvA$69;2SNA`D{yc0CZ^*0tf1>;Q z{+x6F_uu`mj&C34p&$KuptXem`Q!h86@gApe5kj+iESDBjsKNj|6EM`UT<^^ycX@B z`ybE}N`<GO@%-PQ#kuV_{&#>jQT?A^`5(L?s~@yh)4uxs|B{k_`hS1MgUa>?^=oi1 znc&wVP`1C<-FNrXraxOhl&`(5-&?;nzWc9UulfSeR&<M>?)UBY8U4F^O8b3$mdXEz z-|KB_>udl1Ieu^d)<r|4^nUgyzVzGj(%(ma^<Ix(3);!R{zB=0_^IFfK|2v6{_i~{ zk9!f?{_px**4I9-kGK23_2576>CgXf0!`hV|NVdF>Aj%+ZSVhA|G)pId%y6$|N8&G zPkwCw>i7Rg^*{f=-2dnQz5k%y-yiD#{D-cFlK;QH_HFk4fBm2-Dd&GXf7<`7pZxj% zr~fDaORxO@>Hj+u&};_(ThNf$(f^?1L{L}o)c^d?_+ZA*{jYvJ{`h(SAKQPAL6bqz z|MDmN5Bz8TvmSJQNB;V+@ynsB!Z`kKj|Xpvt@)S!&%XR$Id~~~|9|#|l8^uQ{<XRP z=JKq+^KYI9m%QMqKZe*B|DVqNdH?z6&pW}jojqs-=eIrMpZJnL@@MRs7;gOMy!HR& zIn*60U%{R5#n;yVU3a&B=jp38pq}`j@c-ej?5CXnA8Wbq);IIp`&Z5VANA9`>R;4% z`(Hn~ul~RI+21Vgzx=&_?)U$Tt*w9fo&N&3VBO#R%kks$#AEg^{&fErKK}oU{oa4l z_W$_7N0Jmn&cUen`^(PozTWEp(?8-rtN)7&?f?Jr=SThhw{QJg`1I%dj_?2Xg0_po zS7#y}A#(ITL&E>(uQ&XxS9|O~^S}GQ{D1PFZq>s_9_~R#9zNapKkw83>%Zn-{QMs@ zOb(g+{U7t(UJu`h-{Q~xy>|aDKHqOvf0gYq|JnVn|6kS@{q?u~_vYjOrEk8Rs9$$= z|1|y2>`Q;e-`(o}&;I+>Gxh5#SA(n6fd8O1ndk4{+M}~=^M~INf4TS7tNr=89=6hK z;y3$S|I*_BfBb*)ul>*E)9nA*|NYlr^z_u^Y3}#qg>vh&zt1<zxc_hdU;96x)#3Ml zLB`37p4ZR$FZjP3wEMaov|HdGKX?)xbPNV)hzv9ZeE2QO6!7{p|4p^^ul}zx{eNrS z`~4;-<iAe(lXbh^`2XGhI~Y5AzL(fs{`=eXZ+ykSy!o3!qh#y;Up!yG<)8dXP^(T7 zv_uuO)xG}FSNY$k|4X8*RJU*c!+79t{JZ~!pt0UhcmFfLsXzPg^TId#e?yY=|F82w ztWU5>-jAT<3|fT?s`-D^Gk8e+XTQC^;Q#zP|0dgmwy*sFZ?C%aS01$0kD1~3{^@_; zXa2WW{tudESO32Uwl~86%Rm1uf6rGCu{GlOr2k9Zmw$Htzy8<4n4O=Tr(dtz3ZEe1 zpIrar@8jwJY`5*d_CNb)(Vw7I_CJ^OUgO{T`ToJb&+RMEbA7)a|G)O<oA>+o|6O18 z&-wlRU46;_ihb?H=j}gwerEPh`ThL0{}z9(F9FY&Z?At;{}goC#hQ=xWxr?N{r~Yl za(C~4%Ab0Z{}OlVzWvbu{U^QtU-tKUvj_j3-@X@qtpD+U>2Ldwf9kLPyUF(Y{{`^A zHvf13y?@{DF3VZ{_kY3f`L+M!|D^wW+y89qf6xwMa4Q(Z0B<GcfBJvX+x)fvSH{+V z`VTEJj{j!|h4Y;MtBw9;-2K=6)7$L%{b<m+75oCr|DSwczXZHw@B8_B+sL{bI98u* z{-1fj{^GuGd;ib>4qoqf@p*mr^Z&ofLDSB2|JQ2%^NpT&;=hjFfBipe=Kjz4yIMB> z%OA)do_`bG&+oJQ_wafApZ9;kt2B#Yiy1&8zo7BFqyHa%Tn=jW7=jlwZ2kWc-ncRN z{m1rn`1j?{p7y@-|NVWZ!G3YecP9VeZ;1ytcGHU;|KIx)Y5l)@zV*r1p;G^S_lLc@ zKXv`zx^?@v-`{@$yfq>C_s!R!p?Kw6prQDce>cOnDbK%yx#s%+2gs6!dyo73C;#7> zSF`m`{q|4wMSt(^`aAu}{e-{wLA&bR{xiP`5C8Um?VtQ);x__GKCb`1f5-pUKbud< zf3P=w?tdJzq+!Fq;{UI&hcEjb&)D$yJ?tE!_y5X2se@L8zyIg@Hv2w2n-zi9&%b{2 zPyN@wUnn8H@Ave(|8*hfV(pLqS9u<EXioe8$N$^Ef;LcH1|OSq?mxWb-E{N+o1g#j zm$vD*L5HNoSO35K0<;O`*?-3W%KvBo1?{Z<cRTy<^FQ(o4FB|%{?{-4FIo4$A2hE9 z*?zLz_J5&${qyMm*PhtVxBq%Iy#B?n@|{8J;<JCoKl>S62H&0d{!m@aub<KXBm?Yz zfsP!z_5SRa{a=3eg3e5;Py1{B@5smhFMcl1zODZM#-H^U|C!tT&v5_s{pZL2`|+FS z*Kdtq_y6kLzjurNEItofT=ah4f9o5NlJ+HNBjz;F)X?&Mzh2$`zy9w3m3QmAw*BAw z+kfjf%(C_u{)2LALBqv}W5qt5`>k&Kwm$XA{=DD!H_y*D{B-Dk?zaE(g8y&-|Nd|O z_x~UMU*iYQk%7(@+x{Q4-WaJa<JYQZIME&TZ|B#)%4gr}YxeB_`qw!2?*C86P_{@a zzx)5{<UjU1_G}Cc6Y7vx&Aj+MfBP4V&eZ5Cv%#{;Y;>K%=sJZ4<RKLO(RB)tojk*4 zokGLk`FFq9FM3@6QU2%S{|$fppVwzykLUg5f1#d%!DH*c-BahE>wn7m2>S^wkO6_0 z=l-YJ|4#><1@Y}Zo{eb-pZvc&`SRl*=P&=8fA0Hpd$m8$YAaX%dop>;`r5bOFZ{c^ z_vrQc&!?`(y6kKJ*`Gh3zlLt{y)J$B|Ge+}{~tNK`S<Jm{q}R^PubhQ`?9p`pZM+g z-Sydtf9zjR`ueN<>F3|uuYLL7`f=*3>veS}KrN`lH$W{Y&|-#c&=jWrzw?>(pxw{E z&m+z#v7i1Y`R8%J)0;o@-+XR=7POQh`276ix9)!eodkN>{_)TMm;T+pyZ`woP-E)p zKhW_=>CfuR?(BbO^v{3ufB*ky_J8%i_YL!Gviqw4x6l5&_KUsrhkm3jYt_H&89e6v z&(4c~_HAdty<M;|Qh5cR|L=b`*Pnkb^?yU*zg0oM*Zu|%(k%VI{>l8d{{P&M>o?Z^ zk!INNUwZ5PTmP0l|NrCvm4Ea9Og=6DKmY&ohkrD~*X?=y>9ys`mor!VoVmX8=bQUm zf9o$@4_Y8IPoh5ezxUhlv-jD)u70xrFlZIj!t?Q4{-xLdSKR%#|J;Akwe_FspIo#5 ztZ(Nh_rLwveDH=*@&C{Jz=s<8+t&Sq>}MDL4Qd3x-2bEg#E;<GuUGpw|F_<PIF_Y; zmi;Tx>4q!Lx1Rs6-+yWT&*!JU*4O{HmFIrz{$&5`{``CU!%t;D4Zr=*`swyR(VORA zeqQx!?}zfOpW}b&^{#(qZSz0E{ri5m7ypSp(F9a?J)Xb%cK^BmF`(h_{b&BSpWa{e z_YOF4L3`RZ{?7*=bE4n#{{?(cn+tS9a`OM?x7ZFZ6M`LHw)?+y(XIavewfz$b^p)E zpzstluwr~4ywG9BUw-KF>hFKwKbap59(8}`9<uHZq6K{S|KoqJ?|iGT%l~`J_G|r} z;&|)-3x9n-^1~a}1Fr@zD?N4h|6BOlhs00Ev95jas6kr%@a1nm;WqK*zw<x*v7h?g nzIPsE5JKoSVi4jSWDuh0*8dmaeZ@ae_7!XY|6e~RqCNuvoy=>~ diff --git a/client/resources/hardnested_tables/bitflip_1_1b3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1b3_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1b3_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1b3_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1b5_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1b5_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1b5_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1b5_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 zcmb=p_4e+~!Z$nk7%oh=JY2ofN6eTr;%d~61k2~ouT44L=GdX&TDtxJ|MUC*|Ng#5 zao>+e+xzXso*Rli|Nrgziv7P<@Bb0_=>A;y&CkzXpa1*y@3ZwEkBZ0tIsdVC|1bal z|JMBezxsZ?$j*QM^?$#7-T&*m`M*c6|G$3s`_BK!|7-uhTL16d|E~}&@6XrodKSO; z|NM3T-~H|R`TqCS`#*lyef|FT*Zd!kcK`of8Tb5a{ki`~#N%t8*Pr`8=fCCu&HuGO z{<;2V`~U6##p7!}9=$Ji|MmVW@qZs*wg2<m-{ybR?*IFLy}$X{?B&1vzyI$$TmSyQ z@xMpi`uqOw|GWRSf6d3E;`XsMf8%RDzWskC{;zSb{e|lfKR^8T{(pB|{l|s*|Hb3~ zGaUFk|Lgr<{4f5C{>uOUFZXZxzt#U<>Dx8@o&V#NzTJ%fkC+?2#@GC2cliJPPyFB5 z`d910(*N}L{p#j_w*R+1!-jv|{0shfumATd|IgL?KUUi_G(4aGZT_R=f4l#^zIOf( z`-S?o{~s|kFg*Bk|L^+G^$ZMe{=cpNd_2BZcGr1>|9Ahtwx98TUHwPH|7-t$`_I7e z;NSVb_6#7<@ZA2B`2DZ!3<>|W>p#{X`~FY<^Zh@<@{iyD5(g2WkYQ)&*!utT&-h2T z|Ihyatp3u+@_+0Jf2Z&Nu?}R$_x+!y@Bhfo!0@~NcRj=3_<x_w|Gm<$|0!J$GQZ%T zT0O)0dV_zTrtkm5$Z+7V{W1HffBE%&KbQY!1Sw!(sQ9M=R?5I|-u?;yg8wJw8D7u- z!}!JiZ}{J*`t?7VLCP9F=R-{d@j!Ul$A98q>qGhj*W^9^aNh9$7m#BZ7z+OB)HD3` z|HqK<ce1_1w13P0OV$589sduch2fn2Q~n1(?T^L(`!wC2fuZ5IJj8SchI#di{;k;m zrx#+#x&2S`|1dIa`0x5R5ag4X|10cY<^N@8U?}(xb`C?sbN%z5?M?aa&fkAl>VN$G z_m;{G4Yd>hme2Vu|GWP4{Xd}4`*Z%^;a~S3|1$soH2>f0|Dbg9Z~yN9?w#xZy^`Pf zf6l*Oul}w4fBt8A*`J%WPhS4n|GWCm-+!T>>rLkWzxaFpM^KWy`~T+u-Ty#o_T$(3 zuj@_!#h=%G^Z!i!*YNrVo#*%OzOUc(J^#BrD0S2`B>XM^pZ=Hq%l|`vuRoWM_&@jm zs{OyZ`574I{l8rgad=A2zsK+Yf2sTT?EQZR29w+WPu>4_|KI(u`t=`U>(A|flK*%6 zzuo_y=Kq@wN+*9V|C9%Z94MW@qM6}K{LkqBhW|d9gQKwE-{IvSzyDm{z5em)^|R}L z$(y|WZ}<P^ul&E^^<UW;7@o&V{1^GT|F7k<`Ty9#hB3^mH!S?~ejneiTd$Aq{dfN> zD6knoai@!jyM}+u|F7Er=c#@@!-jvI>;FA!{;6-r5K%9DY<oS!m;ZDAUjI4&$K3Vu zU&HG^GQRnLB)tCP!9U>a_DkQc0i1c(|9iB0{|^R++;8=9|F!;2`LTMv^Y5C^`yc%| z9cTYp$l?Fif1to=`22tF`T1o}pZ>Z3*&dXR&+lJ!_y3w-wr~HRt^a)ful=+7XP?zS zpZ^vA^Uv?BKXd+HkNEHZ-Tt#Y1H&9hdSQ6*^K|#0z5mR=|ET^e&(QF9|KIXOxDo<0 z!;+izzy6$`^}Bxl|LlLW|MMQZ|I@zVYy7`QyFtnH&i_;K|BlIn^YDMhFZDl9-~X|C z{~vIQWMDY(bM_xboBs!YoR0tZiJgJr`+pz#`uhL5A4_Y#mVWk!CQpVBe*!^fF@RF` z33-SAlkFL<+5cpIQU7cGFQ`ri28QSNKbb?7K_bTI@n8K{|5wN@j<|d5;r!%(FCjVe z!Jo)~48P|8VLb3ly}m)`um68jNQOS}@BXj+KUd|?fI?%<{)vxn+cW&CKlktTAOAn+ zuJ?lqcZP5Epjb%w*S#K;K*i-9{)@-|JsMvB@oIbxLxb6G`}Osr_y67gWBz|~-~ONc z$R*3U|8xKE{?E>^0aQN!&;E1u`oiBlpYQ+O|F8KcsDS!>|5yHheu&eN$PF{k*9ZSs z|2pGaW$e{;|F_#8|8x02SpLAz&7hLyCv(GB|9=dTzvlnT2Bk1qDF9XjC6505V+>)Q zuYbZ1Dl^#`{>p!K|NE4G9jLys&-gRZ=3m9nuNoh(#{d0l|Iz>a{*621ZF>KI`)>6A zC@AmRAOHTB_uc=xzu(_{?BDiZ{^YUz?>pZ9`t|bX_Fs^C?D_BYpY31QKmQv4_v-zh z`#;-%JSx6F|Ig*~^?u*~U)=M*y!KytmYntf@_+09Rery}`JMb(`@iRZbnEZ?!G8Y! zo`2_m&j0bK`~9EuKj(k8e_ro<?*AfC;Q%U%f6IS7DqbJ`|NF1?&;G{$UHe~f|GS^p zXa4<vxxV}D|Goe7&;R-U&;GIgz8{Zn|G)iz_dk%6U-$o8|8M27{ii<Hf4={7|F8Vj z`}f;3F0uXpuI~Tjz4g2QGyILO`OD1kdjD_x*Y*qki@)3d@88a^_kXTOjcR^|YxN)B z$}{}E|GEBa`QMe`YM$ZOen^G)?mxo;SSDS)|6_Rl<MsbQ3H4TeS!ey9_bWiP%<+%q z|9O$q!qoHsk1yOa=YRD-P-XT0XZV)i^F#M9|GWQZ{=c37kN-Je^DpIJ<bUn?_3^#) zKmV6{{r}~^^nc6@4WFTfj!pf?Ki)MA3~%<osXvUbqMJWj(T!Ggpn71mqQg?rbw7`P z#LSTJKlQ(~*}m`pXZ(LQ|A$2V_5EPt@BY8`3=V7l&OiTO<o>_=kTU(VJ;Uq$e~y;_ zWn^I3@qa3$m38C)?f=X#{)5_%;ovF`)I4eUZ2ptE;$QQ}>HGgY<!4}c_uuf}#ZUFW zi_h5qg%<M%KD$Fp>xzGhkk&%Pe^9gW<$h4B^E9NnGN=CZ{U0C`Atg8igF)~2{VV>@ z|9|iA|J6_Tzp~o*YZt5q+VDC3C-aN?Pwe1k=cX_Af3HI;*WdN8L8X(y|1+RAh+9|w ze})(TEkQ;0N9%a|SL^>hV!rVo+BDhsj}g?02bGUsq4gUh!>u>}_xua}qxmsBzWv+J zXZ1&aPTyPiOts-(_Fr+3L!bY*o^Sv5)ajr5pVu=meEUDI-gWo?$gkD6Kn?Brzw6KZ zKl9xG+5E5jKmGiE^@rvE^&9`qe^>tu+US7!je&vTLd*I3kpK4o_x}Dbe)9i~=lwJ5 ze}ODuV6dp4X5a8n9pr(N@(SMnFW2`%8dXTTA<P99^Xu8b%m+XF|1dHz-1*P2;QwM! zv-sdwP&Lv0KmE@}i~fxk|F_$_|GgUj_h`S+|93XCZ1ea1yAyvu{~xGYdQ{){{`b}T zU*FU3{*V9rZ}Ew*^}k*(U;qE={{0`t<NwE(-+%t^Jfv+{{%`$%h?e?)mreh_`uo4+ zZ~6Q5Gxhh^|2ua7`|ADgum3+He*f?N^PjEO|1bWhzVF8)>;J|7o`b5pzww>V_dnYY z>WBS!)UE$-+mE>aOaHx+U;ppn{rX2guiyIn|7!jDdD}g||G)SDd+xvL|B&|d+y8I> z$JT?I;y+$K0=3EW|1bad>VLwYzkfLu-u^8A{@4H8zuf<fzxMz5#m;c8{(JqkdWZk| zck2KCEq=ZKb3AHuQ=VbXe{h>;|MUN^-v0^)HOoITegU^_K>aR6ngCaF$KwAoGT8jz z@?S*$^Zl>!+v=X#Bc+9R^>hD&a#sHT+4lcly}nS}_VfL}`2Pq0l>hDS|C#@H`+rb- zul^ml)y=?Q^M4|w3-&wyXZL^OeR%Ss&>+l<i>rE)N~PNoJwe?05ZpD;tY<h6>U4nn zkqmeKpMa!qh7W&)L5(t`F2rMghK9fTulj$TzW?L#FZaKJ^{*kFJ#gY?u&J+{_kU&K zi+_J|ul@M{tM0rcBg32SH~Syo`F{hH??5Hl^ZIY{*Z#|0-~Us;{&PHdY~btvyMOJy zYQBd5@A&)t%k}W@{(tMw?ce<P{5xg;=l}2CfBf$I`dR-M|NPT`?|;vJP^;|U`G5Dn zf)Z`_`v0rz*M9t8m6!NG{om^SznD`j@wBMy{vY`D{!jQ{Q2UtS!=L;Aq`?kXc>Gzu z{{QmtpUvz4vokEX`7iw6xBuV%udDyr{r*?+Kh^rz`@e$vai8!10rk4(pMx}c!RZ9t zvAyx1dBOiv_kZ<&oWB1js5ou-EN|Dl|9pLHjck1F-9MNAFUb7={pa~>^{@B;T5Zq3 zVDbOZkL4%+zeV(}89w~!?tEPTz4XG>IQ@5D|F5fm3^IrT)ICR(p@^<~!&m>Buj2A& z>OV3b_%+*L-(Thh|DV6vfA0U0_cec4fcmBh|J5PG9FXh=%RJyRl${}C^Z(Dk!apuQ z5??EO>-p^eqR->M{hB$Q;n(`F@ihz#40Ha!ulct{TmSk0dH)$1Zv3zQC;IkZ`qlTD z|MUONu7CI6@W1hV`<eCE{-1h&Km76YKl_jUs^9g0Cb(-09ey|;ANS<_*Zn(>-+%od z+~?Xad>2PTkY`Xh`|tAe`fGRo|NayI`Tn1LgMa7#Gp_j$8A4%r@Gl%R`oX}E@IU`Q z|APOg<NqCt2aRDs0_oiSC;Sh7^20_ScKlEO_2c*Ne0aYZ9Lo$1&-+3BItB)Y4}Y8? zy{--aPRcv{zg&M6I&Q%LikfNQK^KS~1_p)%srU7P|J}bz9DQZR_g@Cy6MTOD6Z?h# zPx!&zzm%8tzt%%5*Khx?f!f^(|7QMYNch_;a{nLWh5yCh;-A+)D&JRkCI0VG_6`4q zLDXkxlm7>#0l)88H>l=g*mCoK<=@pmzTJPe|L6RYKWFQaYx&ZD@BiHYYY*-U@Bb11 zc>O-UyXiCjzx)4H{tT$GFysF<&~Opl`A|l~*_wZ|f7!1*zUBPuRb_vX2Mx~6e+n5K zT2udt{lumJU*aF@*Z+jp_fYK+O5@z~`H;x1_@@l&z<#%9cmW#0(XTJ~3#xD&ANN1` zc>MHw@IcJ^|DE+!|9a2<eU$lU`~K-aAvK-lzW4bB|G&T9pWa`;<?nwFv%1~KbFW|b zKffPZk=fs`pZh=Zzx8^^5aitdo%;KJ)IOeH_pf-@|Ndux_rLzUKlt;FpZh=8e?7nZ z|Gd)w8UJ3^9|H|C+E@I0hCUFPUGz^p^?&+5P*?2s{|^0qKW_ipf4$!H{r^|_fBS!w zp5K4&&HwrTqI3Sg|65=EZ2$NFlJy^tibKb4_WgJiUH_&2tH0^L(0Tu7|3CNtYJK!y zSdI33{+qwI|FXaM|LC<mL&X2P|0Dl1{@q{j|LgbjYyY3C2UX-qQ4Jbw1UGc%{a?NR zwLiF?XTR_t)L}pPr~E&tPK0LCzrFi^NrQ%XKK!}-Z?pHG$Mx=a|Cs-`?%V%6A2}_o zt@&rqN7?AgP;PXNR&=<A4n`}w_!@dvbT<Em<QW)#>;JyL;p5)_$N!lBKXUxX?te!? z1gKri$dL5*f6c$;Kfe8kl<9N-Ge-P>s=x0wKLf*ozw04mkO%(V|0nP8fBODEz5799 ziJ+lM28KENPs$(oEZ?&qG@b?;KIs40Kkff*#26w2!#w*_kT%<a&-{=c7ic(<;jjPy zP{a`ZgFn&W!B0q0&cMLXkh$l->)-!>zQ6k)ulqmr`p2u+&%%0xbL>w;#x_A+zzIwL zzuXV4TyOl3{@=U*SM$&Gf6NVE&4X${vn%Is*3bRldH?6H!1}M^@(2FGnkHZQL9KY^ z7ym)yl&`?EE({ma{y+b^{*iy@{$EyG&YS<&KDYnPS7Uv~FY&KIBgzaG|L_0&lNla& z?!WDSW`+&_zyHy`_4oX$`<KC;-aG%3|E1g28~tDNf9m=D>yMrPS>OBhf60GiXwx0; mIR=IXwVHp6fBpaY{_g+%9{-Np)t{m6Sf$`!_C>FpcLD$)2t2z0 diff --git a/client/resources/hardnested_tables/bitflip_1_1b7_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1b7_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1b7_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1b7_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1b8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1b8_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..c57b7929b0dcac0147dcc327847d542aa5d335a4 GIT binary patch literal 1284 zcmZ>Y%CIzaj8qGbbhAu;#ZX`I=lcupRSg{rI9NCs7#TPguUNE5frEj8p`n3+>jAGk z12Ql;aoN|%V5Wpx!@)MUS(y`CP8>90<1sS1?9-#>#<{>CapJOBDTzh~zKqR0y(X8H zIVUz{@UW_?G|hIK>?=9d-g8CT@+E)%H-@ZQA0uK{A!6NReKbtvllGAfHHQU`O8B)} zv-q&M?<j9=d?MS<c;Pemk#$^U);x)=-P|I_gpO%;i*`RK&?%qX+AZ$bQf4T(Oj}q? z$MB+`sFjYmb3+^>4^Log$BZd&V%tQ!g*SYaTYRFb@6p_cEeG~BwmdkREGEZl%@fCZ z@L%_h-D1iY>Ye#opXon|JNzc(liVkJ#+r6F!w3U=$3t@@-o!97v%J`)yr6{r#NMON z;vRigcm1d*d-S87^MO6Bb}XM%<y^ZAyE$7ncG=|DGnGX2_{4wt=l{dz)Eli|^3ARK z6F(Z>iA(z4rg!l7^yJ_2&9BP2H`eie{$k5NQ}w;RW6jY+50hT>6-XUAbWA5{V`AOI zf;C#|8&)MOd9bRsMY|y)q+4K_j+*i>ZJvl3nq3d3HgyXm2D4iDsCFLGvSAH5G)+`Y zXle^H*OIS#pOV;Ej{I&@NiuZfY;_iFnj@IBoYg=pDV*t0jJD{(2#chR1~Yur*d%7O zX$x&^INI8#EZWyJc|%L0SE7nR$m%`J?-;w9If4a_ByH4jGl-bXdEuDBh9!p%EYs@j z_^8eC(BtSq8I?5wzxs_Vthrgcj=H}}S|gz*q2uFYP%aqzAnwtU0!??;kPTugM+_sD z7X%9>MJ!`|6QkV{u}tw!jJCi7Wie4%_8T_LujDsWi5G-dhW-|Pq<Ls%#|A@>qb)}h z<Jh!Ylh#CZi*_yNI#R`Ne50EG&3p9|AGm(7ue|Y(e_^}3YwbCH#z(b%eGfmfe6<hw z-g@w2L7&9YW}b+D4C_P;RwapcdbR0@*fLGp5MUtMHSq&GH^-p_9%oU5h-C(cMSPMa zk`5(y3-g5Ws2R*Srj*zfu_0Jk=+MfpLk6B5YeF_Qiy3wcvl;4mi*|Nx^yZqT&Dhvs z7-XU4%%F8-ji!#*I-zA;2M@CutT9w>Obk<IHJHMGjL}2>hw>+h(4=4<)t?WR@(C>C zNZOF-qp@LCL>SZ2#H5I>FwK^xgE|4nBzz2;JSBW|#5B9suxV{Dh=_=AQ)Wm=Qe#uq zW)_WDYS81%vL;L?C}Crp(t!jCgVmfZNfB*4+8i^csU~eyQ&ZV!s3tK@o12-lCn+hh z&9EmTF-$Sx&>@M#g56@GT?WV0#I%LkoffQ;(duJ3$aT=upfxenz%imrf=$OONy%VU z(vpNFhnBQya|;|yN;;CT(aqqP!K$PgYb0jO=oanfF-Vx=W|+uzWSL50H)ppnkI>PU z4FMY(5;+d49M#bgW77#U<cUbqNjh+}<w(+n<cKw528lfeGiD_AL?m-8Q}pI+OghS@ z#x=vx)8J@lXGEg6m|~BZ!C{F*li9cqbMt5!Y&d3^XxKF)VKE!Cm`=n7!-S22!GBmD zEN18EW9Am^>}*+Du!FIW$?HMDfu%9Zt$LiTT^8Y7b5wnTIem1rdA!+pT)Tx1%!qJ# zs3v+SX~lyT5Bk`|RNGW7910#<cqK`!n6bv0wd2SdRl|lO5nM+*6AtMlh#9g;EaOpZ Y(|C{+&Mnx?%>G}z$kifX0;tpj0H}BLKL7v# literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1b8_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1b8_states.bin.z deleted file mode 100644 index add474d02f6375a08b84837dec9fe2fe8c734e6f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15087 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 L`Oi=ybnXfO>K0Vg diff --git a/client/resources/hardnested_tables/bitflip_1_1b9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1b9_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1b9_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1b9_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 zcmb=p_4e+~!Z$nk7%oh=JY2ofN6eTr;%d~61k2~ouT44L=GdX&TDtxJ|MUC*|Ng#5 zao>+e+xzXso*Rli|Nrgziv7P<@Bb0_=>A;y&CkzXpa1*y@3ZwEkBZ0tIsdVC|1bal z|JMBezxsZ?$j*QM^?$#7-T&*m`M*c6|G$3s`_BK!|7-uhTL16d|E~}&@6XrodKSO; z|NM3T-~H|R`TqCS`#*lyef|FT*Zd!kcK`of8Tb5a{ki`~#N%t8*Pr`8=fCCu&HuGO z{<;2V`~U6##p7!}9=$Ji|MmVW@qZs*wg2<m-{ybR?*IFLy}$X{?B&1vzyI$$TmSyQ z@xMpi`uqOw|GWRSf6d3E;`XsMf8%RDzWskC{;zSb{e|lfKR^8T{(pB|{l|s*|Hb3~ zGaUFk|Lgr<{4f5C{>uOUFZXZxzt#U<>Dx8@o&V#NzTJ%fkC+?2#@GC2cliJPPyFB5 z`d910(*N}L{p#j_w*R+1!-jv|{0shfumATd|IgL?KUUi_G(4aGZT_R=f4l#^zIOf( z`-S?o{~s|kFg*Bk|L^+G^$ZMe{=cpNd_2BZcGr1>|9Ahtwx98TUHwPH|7-t$`_I7e z;NSVb_6#7<@ZA2B`2DZ!3<>|W>p#{X`~FY<^Zh@<@{iyD5(g2WkYQ)&*!utT&-h2T z|Ihyatp3u+@_+0Jf2Z&Nu?}R$_x+!y@Bhfo!0@~NcRj=3_<x_w|Gm<$|0!J$GQZ%T zT0O)0dV_zTrtkm5$Z+7V{W1HffBE%&KbQY!1Sw!(sQ9M=R?5I|-u?;yg8wJw8D7u- z!}!JiZ}{J*`t?7VLCP9F=R-{d@j!Ul$A98q>qGhj*W^9^aNh9$7m#BZ7z+OB)HD3` z|HqK<ce1_1w13P0OV$589sduch2fn2Q~n1(?T^L(`!wC2fuZ5IJj8SchI#di{;k;m zrx#+#x&2S`|1dIa`0x5R5ag4X|10cY<^N@8U?}(xb`C?sbN%z5?M?aa&fkAl>VN$G z_m;{G4Yd>hme2Vu|GWP4{Xd}4`*Z%^;a~S3|1$soH2>f0|Dbg9Z~yN9?w#xZy^`Pf zf6l*Oul}w4fBt8A*`J%WPhS4n|GWCm-+!T>>rLkWzxaFpM^KWy`~T+u-Ty#o_T$(3 zuj@_!#h=%G^Z!i!*YNrVo#*%OzOUc(J^#BrD0S2`B>XM^pZ=Hq%l|`vuRoWM_&@jm zs{OyZ`574I{l8rgad=A2zsK+Yf2sTT?EQZR29w+WPu>4_|KI(u`t=`U>(A|flK*%6 zzuo_y=Kq@wN+*9V|C9%Z94MW@qM6}K{LkqBhW|d9gQKwE-{IvSzyDm{z5em)^|R}L z$(y|WZ}<P^ul&E^^<UW;7@o&V{1^GT|F7k<`Ty9#hB3^mH!S?~ejneiTd$Aq{dfN> zD6knoai@!jyM}+u|F7Er=c#@@!-jvI>;FA!{;6-r5K%9DY<oS!m;ZDAUjI4&$K3Vu zU&HG^GQRnLB)tCP!9U>a_DkQc0i1c(|9iB0{|^R++;8=9|F!;2`LTMv^Y5C^`yc%| z9cTYp$l?Fif1to=`22tF`T1o}pZ>Z3*&dXR&+lJ!_y3w-wr~HRt^a)ful=+7XP?zS zpZ^vA^Uv?BKXd+HkNEHZ-Tt#Y1H&9hdSQ6*^K|#0z5mR=|ET^e&(QF9|KIXOxDo<0 z!;+izzy6$`^}Bxl|LlLW|MMQZ|I@zVYy7`QyFtnH&i_;K|BlIn^YDMhFZDl9-~X|C z{~vIQWMDY(bM_xboBs!YoR0tZiJgJr`+pz#`uhL5A4_Y#mVWk!CQpVBe*!^fF@RF` z33-SAlkFL<+5cpIQU7cGFQ`ri28QSNKbb?7K_bTI@n8K{|5wN@j<|d5;r!%(FCjVe z!Jo)~48P|8VLb3ly}m)`um68jNQOS}@BXj+KUd|?fI?%<{)vxn+cW&CKlktTAOAn+ zuJ?lqcZP5Epjb%w*S#K;K*i-9{)@-|JsMvB@oIbxLxb6G`}Osr_y67gWBz|~-~ONc z$R*3U|8xKE{?E>^0aQN!&;E1u`oiBlpYQ+O|F8KcsDS!>|5yHheu&eN$PF{k*9ZSs z|2pGaW$e{;|F_#8|8x02SpLAz&7hLyCv(GB|9=dTzvlnT2Bk1qDF9XjC6505V+>)Q zuYbZ1Dl^#`{>p!K|NE4G9jLys&-gRZ=3m9nuNoh(#{d0l|Iz>a{*621ZF>KI`)>6A zC@AmRAOHTB_uc=xzu(_{?BDiZ{^YUz?>pZ9`t|bX_Fs^C?D_BYpY31QKmQv4_v-zh z`#;-%JSx6F|Ig*~^?u*~U)=M*y!KytmYntf@_+09Rery}`JMb(`@iRZbnEZ?!G8Y! zo`2_m&j0bK`~9EuKj(k8e_ro<?*AfC;Q%U%f6IS7DqbJ`|NF1?&;G{$UHe~f|GS^p zXa4<vxxV}D|Goe7&;R-U&;GIgz8{Zn|G)iz_dk%6U-$o8|8M27{ii<Hf4={7|F8Vj z`}f;3F0uXpuI~Tjz4g2QGyILO`OD1kdjD_x*Y*qki@)3d@88a^_kXTOjcR^|YxN)B z$}{}E|GEBa`QMe`YM$ZOen^G)?mxo;SSDS)|6_Rl<MsbQ3H4TeS!ey9_bWiP%<+%q z|9O$q!qoHsk1yOa=YRD-P-XT0XZV)i^F#M9|GWQZ{=c37kN-Je^DpIJ<bUn?_3^#) zKmV6{{r}~^^nc6@4WFTfj!pf?Ki)MA3~%<osXvUbqMJWj(T!Ggpn71mqQg?rbw7`P z#LSTJKlQ(~*}m`pXZ(LQ|A$2V_5EPt@BY8`3=V7l&OiTO<o>_=kTU(VJ;Uq$e~y;_ zWn^I3@qa3$m38C)?f=X#{)5_%;ovF`)I4eUZ2ptE;$QQ}>HGgY<!4}c_uuf}#ZUFW zi_h5qg%<M%KD$Fp>xzGhkk&%Pe^9gW<$h4B^E9NnGN=CZ{U0C`Atg8igF)~2{VV>@ z|9|iA|J6_Tzp~o*YZt5q+VDC3C-aN?Pwe1k=cX_Af3HI;*WdN8L8X(y|1+RAh+9|w ze})(TEkQ;0N9%a|SL^>hV!rVo+BDhsj}g?02bGUsq4gUh!>u>}_xua}qxmsBzWv+J zXZ1&aPTyPiOts-(_Fr+3L!bY*o^Sv5)ajr5pVu=meEUDI-gWo?$gkD6Kn?Brzw6KZ zKl9xG+5E5jKmGiE^@rvE^&9`qe^>tu+US7!je&vTLd*I3kpK4o_x}Dbe)9i~=lwJ5 ze}ODuV6dp4X5a8n9pr(N@(SMnFW2`%8dXTTA<P99^Xu8b%m+XF|1dHz-1*P2;QwM! zv-sdwP&Lv0KmE@}i~fxk|F_$_|GgUj_h`S+|93XCZ1ea1yAyvu{~xGYdQ{){{`b}T zU*FU3{*V9rZ}Ew*^}k*(U;qE={{0`t<NwE(-+%t^Jfv+{{%`$%h?e?)mreh_`uo4+ zZ~6Q5Gxhh^|2ua7`|ADgum3+He*f?N^PjEO|1bWhzVF8)>;J|7o`b5pzww>V_dnYY z>WBS!)UE$-+mE>aOaHx+U;ppn{rX2guiyIn|7!jDdD}g||G)SDd+xvL|B&|d+y8I> z$JT?I;y+$K0=3EW|1bad>VLwYzkfLu-u^8A{@4H8zuf<fzxMz5#m;c8{(JqkdWZk| zck2KCEq=ZKb3AHuQ=VbXe{h>;|MUN^-v0^)HOoITegU^_K>aR6ngCaF$KwAoGT8jz z@?S*$^Zl>!+v=X#Bc+9R^>hD&a#sHT+4lcly}nS}_VfL}`2Pq0l>hDS|C#@H`+rb- zul^ml)y=?Q^M4|w3-&wyXZL^OeR%Ss&>+l<i>rE)N~PNoJwe?05ZpD;tY<h6>U4nn zkqmeKpMa!qh7W&)L5(t`F2rMghK9fTulj$TzW?L#FZaKJ^{*kFJ#gY?u&J+{_kU&K zi+_J|ul@M{tM0rcBg32SH~Syo`F{hH??5Hl^ZIY{*Z#|0-~Us;{&PHdY~btvyMOJy zYQBd5@A&)t%k}W@{(tMw?ce<P{5xg;=l}2CfBf$I`dR-M|NPT`?|;vJP^;|U`G5Dn zf)Z`_`v0rz*M9t8m6!NG{om^SznD`j@wBMy{vY`D{!jQ{Q2UtS!=L;Aq`?kXc>Gzu z{{QmtpUvz4vokEX`7iw6xBuV%udDyr{r*?+Kh^rz`@e$vai8!10rk4(pMx}c!RZ9t zvAyx1dBOiv_kZ<&oWB1js5ou-EN|Dl|9pLHjck1F-9MNAFUb7={pa~>^{@B;T5Zq3 zVDbOZkL4%+zeV(}89w~!?tEPTz4XG>IQ@5D|F5fm3^IrT)ICR(p@^<~!&m>Buj2A& z>OV3b_%+*L-(Thh|DV6vfA0U0_cec4fcmBh|J5PG9FXh=%RJyRl${}C^Z(Dk!apuQ z5??EO>-p^eqR->M{hB$Q;n(`F@ihz#40Ha!ulct{TmSk0dH)$1Zv3zQC;IkZ`qlTD z|MUONu7CI6@W1hV`<eCE{-1h&Km76YKl_jUs^9g0Cb(-09ey|;ANS<_*Zn(>-+%od z+~?Xad>2PTkY`Xh`|tAe`fGRo|NayI`Tn1LgMa7#Gp_j$8A4%r@Gl%R`oX}E@IU`Q z|APOg<NqCt2aRDs0_oiSC;Sh7^20_ScKlEO_2c*Ne0aYZ9Lo$1&-+3BItB)Y4}Y8? zy{--aPRcv{zg&M6I&Q%LikfNQK^KS~1_p)%srU7P|J}bz9DQZR_g@Cy6MTOD6Z?h# zPx!&zzm%8tzt%%5*Khx?f!f^(|7QMYNch_;a{nLWh5yCh;-A+)D&JRkCI0VG_6`4q zLDXkxlm7>#0l)88H>l=g*mCoK<=@pmzTJPe|L6RYKWFQaYx&ZD@BiHYYY*-U@Bb11 zc>O-UyXiCjzx)4H{tT$GFysF<&~Opl`A|l~*_wZ|f7!1*zUBPuRb_vX2Mx~6e+n5K zT2udt{lumJU*aF@*Z+jp_fYK+O5@z~`H;x1_@@l&z<#%9cmW#0(XTJ~3#xD&ANN1` zc>MHw@IcJ^|DE+!|9a2<eU$lU`~K-aAvK-lzW4bB|G&T9pWa`;<?nwFv%1~KbFW|b zKffPZk=fs`pZh=Zzx8^^5aitdo%;KJ)IOeH_pf-@|Ndux_rLzUKlt;FpZh=8e?7nZ z|Gd)w8UJ3^9|H|C+E@I0hCUFPUGz^p^?&+5P*?2s{|^0qKW_ipf4$!H{r^|_fBS!w zp5K4&&HwrTqI3Sg|65=EZ2$NFlJy^tibKb4_WgJiUH_&2tH0^L(0Tu7|3CNtYJK!y zSdI33{+qwI|FXaM|LC<mL&X2P|0Dl1{@q{j|LgbjYyY3C2UX-qQ4Jbw1UGc%{a?NR zwLiF?XTR_t)L}pPr~E&tPK0LCzrFi^NrQ%XKK!}-Z?pHG$Mx=a|Cs-`?%V%6A2}_o zt@&rqN7?AgP;PXNR&=<A4n`}w_!@dvbT<Em<QW)#>;JyL;p5)_$N!lBKXUxX?te!? z1gKri$dL5*f6c$;Kfe8kl<9N-Ge-P>s=x0wKLf*ozw04mkO%(V|0nP8fBODEz5799 ziJ+lM28KENPs$(oEZ?&qG@b?;KIs40Kkff*#26w2!#w*_kT%<a&-{=c7ic(<;jjPy zP{a`ZgFn&W!B0q0&cMLXkh$l->)-!>zQ6k)ulqmr`p2u+&%%0xbL>w;#x_A+zzIwL zzuXV4TyOl3{@=U*SM$&Gf6NVE&4X${vn%Is*3bRldH?6H!1}M^@(2FGnkHZQL9KY^ z7ym)yl&`?EE({ma{y+b^{*iy@{$EyG&YS<&KDYnPS7Uv~FY&KIBgzaG|L_0&lNla& z?!WDSW`+&_zyHy`_4oX$`<KC;-aG%3|E1g28~tDNf9m=D>yMrPS>OBhf60GiXwx0; mIR=IXwVHp6fBpaY{_g+%9{-Np)t{m6Sf$`!_C>FpcLD$)2t2z0 diff --git a/client/resources/hardnested_tables/bitflip_1_1bd_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1bd_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1bd_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1bd_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1c1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1c1_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1c1_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1c1_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1c3_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1c3_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1c3_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1c3_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1c8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1c8_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..6ced4a199173788446d3e52c7584babdcbcff971 GIT binary patch literal 4359 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1c8_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1c8_states.bin.z deleted file mode 100644 index 3a748e8d0defedf86d6f01ff085bfd0f468a90e6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 26711 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1c9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1c9_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1c9_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1c9_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1cd_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1cd_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1cd_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1cd_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1cf_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1cf_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1cf_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1cf_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1d8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1d8_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..bbc7f1d82fd114e16c54b66b5d41131ce295fa1f GIT binary patch literal 1561 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1d8_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1d8_states.bin.z deleted file mode 100644 index 806157d21596651e53b779a0670b3d58a76f4d9d..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 19459 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1e0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1e0_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..d701fc28569656e2e6c0dc994a11fe21af1282cf GIT binary patch literal 1535 zcmZ>Y%CIzaj8qGbY<bl#z?gC%*7<h91qKF&i3|)3a~l{KCNMB?J>alssO4Az;&3ex zVc=y}b97+1V3dNy<Xq|1V8Xx<<mD;l%hNt3^Ybq)!O$1|3ug3aH-w2KEZCqUu$bdu z#HxZe9X-|q8`fw&I&?JQXtQXum>B<ojTRB^4Lg*%x!E}8=m;L{Sf~HyxJc5xmWOuk z3*$In{A9i{@efn$Z&ugpmL+?%G!v#wQ`w>tTICVS|Ackb;sCK#VSynV91X&_4jG6V z^suZr7~!?*kYTHjVr!UUVxp2;S7^f0pdTMX>LXN3J(|}|^_bz**{E2wB&(H;Yt>fa zEps{#I-Zy{W$IGzmLq|8y;t#R&Cu3#u<-F&nUpazMs4cEBF!ahS`Ha0{t%p`&05eW zYN{`?)oZKcAq%%Dhin8VK1|6-$&!@HIBGD%S8CM<cU6;&6Q>rvIO*r+wa5JA&xf`v z4)Msf81!*j=qE}z-}uc_d(K9%nvM01GDl78p$~035)lS7HXJ%8zN=~VU9ClZA_g1@ zVxkNObwpM6xM=O+)GT*OQCnf?amq`=O)$LCxhcY#YmLys2$3IR0uOmaHXJ&1=#YVq zgibKGgkwZRV{Mznp<mOq_K3a+J@{b5>Wgv@d+c}$?U?0X{F*B7aJ2QS_?^&0Qy*$+ z%4$tg<Is%NnxwWUB=qO0&R?z`^InBSdQCbQ%p$QwZ0RDwEh)=-dcA#3W*jmSX6X(M zH1#lYjpS_U)|j?xQ9{@PUvJH%4j+|>rGgV?Em*dcnd3@uNYm929}%yFghL0L8CyG! z878Rch_+13nvk(%q0tnB-asGGhH1i~Uda+i6C=VzBfJtK+yo4I1Po>*Mu>^F1T!64 zb?Bf$0&6pqPQ+pfgM+PIiv?yxEIG88wW-%LXmzSUmKLw5<ASEe6Euad1g&<}+N8uQ zq>wYk=}1dhtN2qbu1%f}8(LN*tyFIEiqsVG30QTAS)-MYtLuouj0M_XLK~ePgtlx{ zZfES~NjNmeFh;_{;^_Yw3)W25T+?c@<|^Zh>8lpz?(ksXXkcLQJHWu;z*@lkzoC|4 zQNsd;poR%tCMmp9DH(x_6*4X>JM~I3yUmmm$v7cpa^ixo*Q^C>4UC>zDo1S=`)h8s z=a{s#LivJ^o9F>;E`xvwF^<5Ngf*cS&SK(B4<f=u3lozzBpvKJ*v-v;0-OV41Y291 zS^UH}9vlf52j>8nhjzy&#<6^=ZG7SJla>39mi7%*%~K-2A)Tfw2RY_Wahd*9$Us|2 zjpL+8gu)DM)<g-e8E#A=32RhC6D1BU6F9V5V8e!q$|0HwOM@N?t`ga?YNd|~>w-WF zuS24`TuVD`PM)+<*r}$at+j5lN84nllAx`DO9JM4rfe`Y@{LssTX;%p%Bj^{r>1^V z))eD<D5I5WqjJ&PWk)#I6@zslYh_F_F0QyZ<H*)v&ecvIw5OP6ojRc&7VtDR_~7@_ z@R^Bh{7e$=tTN&gC7jRxlB$-e5UgTjeWA=z%X;X8vlx$#gil0bGWQ>^RdJ^j+PNfH z47j-(5~guYifL(i8su`|6<bgeo7d7r3D-ELc9sooq7kZ18#KS@C?1l~Ol)m!ZApkQ zh*&0O(6nJA(|3tv?kgKZAB0Z~XKzdlpJdxCQ7iGNmd*a*tB|^8G4U1qSYtHfUagw4 zkI5@aq@#vq%0?B%R{bX}q4rZ%W~zpOQhbN6T8Oqr)~QR`krIcDRviq=;J7F{WznhC zT$5GR8hW@cEx432qsy6VvcRfMi#1(STCQp<M!HOE=s{2Jt2}*{O1Mmna>{D!n4!(8 zCamf#bxcjPH8Heh8EZ=-Gsi(@&Nk7;#0Xad9j!Gw!fXr?21-|sN+ld-6VvK(N=%x} z)g#7bGL`-76b)Hdl}k*SK`!eYLsph^b+)=(m@rdIRNFI<M<jl$pz0K*Rf%36Nm_iI znyFe7W=vVy!sewUBP!Yz=%&H-N9(}C0<A+46Aw2WZ8J#plUT<iBa`(1=$(mvA}S2; IMIRji0J-H<+W-In literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1e0_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1e0_states.bin.z deleted file mode 100644 index b7f699728..000000000 --- a/client/resources/hardnested_tables/bitflip_1_1e0_states.bin.z +++ /dev/null @@ -1 +0,0 @@ -xmn4In`@WM|$ـCwGCʎbǓBCUeE$?>_?7ҧOo?z?~X;o?7?ÿ%O~o?LOi??ME_/ҧO_OO/WWWQ?_?_;}WOO_?>oOO>R ߿^_O>}?ӧO_S>}'Wߟo??$~FNN O>j{Ugw??id>ii~??\/}?\Ӵޖӿ/_x1?f'g??5?%'''_????#''WQq?rrgi<:t5_4M۴W[>}9mGZ?o@O??{)_߻]w~Ҵ~5}S|?_O>VL>?_N7>}2 XcYg@O??wK?Oi?? E_/ҧO_OO/WWzS?~#''oONO?tyo?wr????rrVy֟WSc'99_/'O~{؏I￴;o?7?}w!}ro?ӧOTu_?>}????/WOӗ?}W3O????IOA>9}ϟ??}oϞɍ??/[|_$''WS*i-m??m_w߿p{Uc}5O??kYKnONNn}/O?m?a?>~x|{wu3Ϗ7~o'g?~)_O+u)ϟ/?|O~~_/OO_k/8l?Ͽǯcw_?rrr9?cȳ>[Ow???'5M3/o?[of'g?ii?? i???߈߭'K=Ͽ/o???/oӧO?SOOS~}WS>}?__>}g?>}ʟ2ߥ7p]?ӧ_7;??ӧ_OO_//o@O??k?}?ӧO?<ԏӟ?9Om?=j[O??ǟU>_Y;?>Orrr??___Okcq7 _5z7^_ӌ??/?99g[[k'''[??_GN.??4O?=_i/?/_ҧO?gH_~~?>_'?7__?{?E>k{״y޿O֯?uӧߪ?ߧ;߿^ӧo_?_?N>wq)mWSc_??~_Oxo ~Ƕ_5v-nw_On'g?ONN*O__$''WS_I>?ϟ?1?v^??/?O_qM;k????oӧO_G7__g7??O_'''[y=7ȧ??sϟz~ռ?g?99y|Z?wZ_O}"}???_%4v nn?޿jo₩_?rrr3?ɭɭoOOOӿ~=Ͽ/o???/_?E>izR.wEZ/O_MӜmGu4????ONN/8?WyV~rr?/'俦ieOӌ??/W4ms>9mWS4_4MOO/WW>}u<?3g-?}{igZJiij/>}???ӧO/"'?ӧ/??ÿOѧO_~?~^_fK?~~_}?}K/|{?}?_?O>}3O/#[g_}ד<99y|s?}?W= _?ʧ+k'rINN'???UrMz[~L~>n?/Okg'''7?񟜜[_\G???cx/4K4m^^_OOoKOk{?kx~f}????ӧ_?wIO?~~߻?}[37;??wy5/[c?[g}????ӧ.3?4}K>}??___OIOA>9}ϟ??oɍ??/[KwZ_O}"}????ӧ?a?']Ү|:?go@O??;?q7O>R}ם-o''??7?_>}gO_Gӷ_???'y<7rrO?SOϯ?{7/'7?'''oO'WNOO\OO/WW䚦}nߍ|_W 4????ONNng/?99Z/?>}7u<?3gӧϿ?Mϳ]jץN?c_k>}k{?????qi;-(?r?f'g??ɝ8}"oONN;o?^4_?Xo?igm?4&k?#ӧO~v/z?~X;o?7?ÿ%O~o?LOi??ME_/ҧO_OO/WWWQ?_?)_tO+ˬu)ϟ/:|O~~_/OO/OOs???}????ӧoO>}OOOzS?~#''oONO?yo?wr????rrV~2e4D.>??JiZoKۏO/՘{_M3?g[o?[oߟo??89_??_Ӵc ?eߚf/im߫߿?iI>?|?{6#}m\~-Ϗ7~o'g??}]Kvy;?iZ)gϟ/{?O~~&||{N?O3~o'g?;}%֟_O/~ӧ'???=7ȧ??sռ?g?99y<}~INOO\OO/WW'}O?=t_z]g?7__?;>}9?q7f^ӧ_?__O>}?ӧO_S>}'Wߟo??$~FNN O>j{Ugw??id>ii~??\/}?\Ӵޖӿ/_x1?f'g??5?%'''_????ӧOYz?~X;o?7?}_}/yֿKoOk?ӧOT?}m/o''w/5Ms__1?^;Wӌ??/?99\OYyM[w-w'k_?M3?_]Ӵ֟_OOM4??___Oo%[ߏ˷^??i)mWSc_?O>}??_//O_??vן?E>izR.wE_Z/O_WQi/''/7~o'g??}5??ӧoW?_Oxo ~_5-nw_On'g?ONN*O㯬֟WSc'99_/'W5Mmi1i¿?/i?ß_3_rrrr_o?[?rrr_OO_/#'?kvlL_[e/MӴM_{{o???uo/?ӧg~_~?۟˯??/O5?kZ<u'MW?wE:oğ_/OO7/o?[o??/WOϸ_/}??'y<7rrO?cO?7/'7?'''o/Iii~??\/}?/O~OtKOy~f}????ҧ/8?l_?}K]w^z7?ӧ_OO_//o@O??k?}?ӧO?<ԏӟ?9Om?=j[O??ǟU>_Y;?>Orrr??___Okcq7 _5z7^_ӌ??/?99g[[k'''[X??[ߏ˷^??/OE?~4?w \;zꧯ_?_Nir_϶q:zjg'''w?<+Oi?99yk^w{??w_42 XcYi?k9Oi_i'???O>~|~b|:?go@O??>}3?4}K>}??___OӧO_G_?ߎӧ/?M/]jץN?c>_k>}k{?????>}????/WOӗ?}W3O????IOA>9}ϟ??}oϞɍ??/[|_$''WS*i-m??m_w߿p{Uc}5O??kYKnONNn}/GNN}???oMӎ1ytzCkokiik~//'''}s؏ ws<?3gSӿfwM/ijN?c_g>}};o<}egXןZ??_O_/'$~FNN Ol{Ugw??%i;?>Orrr??___Oş?iWwu3Ϗ7~o'g?C8{O~ο7[?}z?_?O>}3O/#[g_}ד<99y|s?}?W= _?ʧ+k'rINN'???UrMz[~L~>n?/Okg'''7?񟜜[_O>g~|~b|:?go@O??SӿhߏW~Y.R|?_WO>R ߿^84_q 9_O{_M3?rs>g7?'''o}Nkf_?4O??wM6Z??M5M??ӧ[?Oz{؏o?^,z]g?7__?ӧO7֟_O/~ӧ'????}/??}???_}/:?eֿKoOk?ӧOT?}m/o''wӧO_G9__g7??O_'''[y=7ȧ??sϟz~ռ?g?99y|Z?wZ_O}"}???_%4v nn?޿jo₩_?rrr3?ɭɭoOOO???\/g?iڱ??N2zhmoM4M6m_o_4O~y?n}.Oo?7?>}i%ם4_M3O?ӧOU?Ow?????'͟O_?Xo??7?_>}?SOOC~}WSԏӟ?9m?ݿj[O??ǟU>$m'rINN'???>}y?}c/???/_H8~{//ww{/OOo???}????ӧoO>}OOOzS?~#''oONO?yo?wr????rrV~2e4D.>??JiZoKۏO/՘{_M3?g[o?[oߟo??ӧcO{؏o?^,z]g?7__?>}<ߥ7p]?ӧ_7;??9/?//i?ß_q'<;{_OM5/[c?[g_?i?}sOOCii_/'7?}wgI?NjOy~f}????[ϴ_/}??O>}_EO/O_/gg;ϟOE~4w \;ꧯ_?_N4??7?_>}gO_Gӷ_???'y<7rrO?SOϯ?{7/'7?'''oO'WNOO\OO/WW䚦}nߍ|_W 4????ONNng/?99Z/?99/''/??5M;p_Oiiڦߺ7?Ɵ?o?oc?/|~Ͽ??OѧO5d;wg/o''wk_??ӧO]ag\Jiih/>}???ד<99y|s?}?zW _?痤4D.>??ҧO?o~LO~]u<?3gwo~e>};Z/OOo=WQ/''/7~o'g??}5??ӧoW?_Oxo ~_5-nw_On'g?ONN*O㯬֟WSc'99_/'W5Mmi1i¿?/i?ß_3_rrrr_o?[?}oi?NjOy~f}????OѧO?~^gK?~~_?}K/|{_49/wg[Q~8~?=5O??;?qD4🜜5ww/;i4????5MNiih4M/4MSS{+ \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_1_1e1_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1e1_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1e1_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1e1_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1e5_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1e5_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1e5_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1e5_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1e7_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1e7_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1e7_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1e7_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1e8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1e8_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..19bb1cdac7517c798af3c1c8b80e156d096f18eb GIT binary patch literal 3479 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 E0O@-e*#H0l literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1e8_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1e8_states.bin.z deleted file mode 100644 index a68398e450ebcc0e850e05e09f1f10f85a80a8ba..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 22539 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1e9_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1e9_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1e9_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1e9_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1eb_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1eb_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1eb_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1eb_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1ed_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1ed_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..64619890057767ddd63990d313622510438ecc5f GIT binary patch literal 821 zcmZ>Y%CIzaj8qGb)DYESWDw)1|NGY?&X)rOJUDnb7&!QjA608$U}E4{(ZJxqA#s6C zjsXmkot+)noE;b#7<e)=G8j%|FfcGM_VV&FNb-W@4Hqt4z^u3cB<ShMGC3>LP{L=~ z$%PA)zxaFQ+DCc?{t+*Ys6G5LKIqJRrFZ+xFMO&<=YA^VH;-F=kKM*9w#1TC-}LnN z%nRe2%Qxkd{J*4)A0&_VwKwb39&Vjk7#TUu=vd<XJ(2!8@h1*FI#%Jn;;;9C>i(&f zhDYBUewLlT!B6W!xkQP6ar=XEzk@GgultD}Hr8HP@_1Q{yNu6aV+nUQzv;q8hxr3# zQftomB*nRj7ZhyNd;GxG{j1!=U;Ip8xIXFBI6V4$_|~T7&YQ1n*6GvgiQ{gJ<2xUC z_xLx-FPqNIym?&m(81%0mtK6@Y*f(y%CKPZ|MoLh5<gG&SlKTs)BjZac<F<OH`c2h zs&4(b@|gdYx+jkx%WpK8VWYH1?@Y~^$BHjb8XWDhisjSUcksx`!#&B%B931v*;OT; z-1FhM<lz?<M`~R^_jU6`7|BkHylJs#J)h2*Z`xg(PJQ*~<9~Cy&EoN*Pw_|gJ*o&^ zQl_WzHPM*Ab83yxw4{Ew{>}29Zz^N&PI<k2>XS2X9zE{)V%se8`?Q#T=FFLg-mTv7 zVBe(&)!d8T>@x6o`4Vjw+5fGs|I45AN1wdeZRdF5Sls7b539YODD#Pyt3Qbm=h<c0 zEX=&~=e$oZ<~@9{@EhxQ{i7uo^N(7@H@&RQoECfinSamfM>@6Y2VU$*I__G1yy!!n z@(uAxHuE!n@Sk{4?R_Qrz%SPB&xUo)f9Ke<@=w+J%D>@Hf8z)1ev4U0f8RgZzh<uJ zjn&MzO8mqfj=uF)FP7ygiLfv*>}(ePVpwo^ar-K-y8WLUS@y>Uby+iO2`yXLG{sHe zKZ|B#%Z!a$r+gL|^|*!^g_(4$neg+|iigUaO*a@<g-$VAts1ptgUN)$S~_m7YLX#I zNr^sF5>ng@6&ns}i*c)VPUf1CG)>1%$1thQFqp?pjVt1yj$vR=Xi}oV0fU2`ojnnU YHXN1+O6>GWI{sI@$kifX0w|jR06h(S3IG5A literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1ed_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1ed_states.bin.z deleted file mode 100644 index 9840a5ebe098159ffa63ba9cd5b13a914ff0662f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7078 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 diff --git a/client/resources/hardnested_tables/bitflip_1_1f8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_1f8_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b3ff4701705a8847135aaf38bba721bf3faa1bf8 GIT binary patch literal 1274 zcmZ>Y%CIzaj8qGbyguPgC_}@<+VU6Ns~S2MaIkPNurP2eUa@GA0tW*FLqh`t=L4Sq z49FmH;<8yOiADy#jLkf~CYO~tCpKm9NTg&gn<?SbBkYiHSlQR)#G#agS<GybQkl!# zgq2w?NN{-tc+8t6%<?JtsKJ#l^VfgTni~4)pz~#>_C(FtBg|Y8ArYbK9l=+Wj{0{j zWA*Vm!pD?!<fsg1tFvHdvyh>TXjegmA8YHOjo!>WYQn+-N0Y(~BsOd~lC<$c&|D|a zrpZjJ4j8POF=@r$u7}<`7Cq<_=W1@{PxvNy@XDHyy=>gVY=&VxK86RA)*a$65PuWW z$ExvQ)ikCfGupHT1Fx*nUg5_yV}qZ_LG=R$JA#=WR<<`(w%@RSSjP1($Zl!XQHxN6 zr7cIhjz(<Md=O!fU=b$ru<4Us`<-L<6JM087s)Xkb$^$zUg3{y|IAvycE>uNf(rh~ zzp{Lb?{GenQ>^n|SkT9l%%&6ZvoS_7V$zy`Lz8$S*e@`PvI#6xmhe#%Z916b!+N7x z;?U86&s<&)wc40AbnWSS(8F;gj3pr{(a>Ox!(pKrGu9X+_UMEu3mrL-ki_E|CfIT` zn6<0NnN3F}=}0n<8jrzYF*S(|heae3JA2erdlC+<i3mIxB*PHe84(mQHAdA(^x#3m zHp7qy5uqIi{kTG7S;JI5>lel~b|m#^FIXPX*&6cBt4!2KByM5Ik!6}!j<&WL96EGN z@Uuk>vzW5PI=N2|jvNm<Sjl(PLbI9WMUs_-VbVr}V|uKeR}6Ob_%$EVXWF4rpxAOW z!cep072kp*1xFJLWY{?#7VwFQe$nBv<-S+Veqxt+XHEB+ho$;XFZ=_RckFXH5cm00 z!K6=y1_lYqJX*W&-4k~fepT!Kqf+$7Zm#(|-|9yseVfZuuGe~DpL_5xi`f2?-{q4J z#Cm_K@zhVO<QBiPF|kCsVAjE&q(g^}HoZ{iX66z9U~_y&Rr`!Lv4>gP3=*3c8u))O zSSQ{Q5qnI>disIAkA84Juw_4z_)2_3#l&~q_d@<Ly$Dl~PYlv=n&GrTjGMFl!A3*Z zt_M?_x&;!0SuK22J6jgi6>vHHKPdQ1vr#L-V57k#gNP(GZHdG-HYKN|V4)<#h=@fS z45l17vf{wO9-Yvx#4t8BHr0frqn$~O9Z5$uo0h4m8XC0eNEl30?M&?KN;=qdz~ErR zK|>wIW}zelpQMC?5)o_ExVgn7k|hj|NNi{mlUS8BW5Y&?WS*p>5^H=ULc<gjxw#Ir z{(7ik;WR@vsYk*`qePT7;K7u2LNhuHRwa5REIP1IVi{-G(bkp&hb0^h5;pim983x` zIL70uaEvi2m{qW2X+u(|H`mHmtql!{feDimISw3cX45*_bu=-dM`FVoH-m^RJyOef zB92KMW^5KS*l@I2K*wpCMz^S%#A-2-qpdB8Nj-)MD?2+45(2w9eIkw~HEcK}rsJlg zW0<sIGEYPjw}iowV}@NlhCDi&&8*#GY&t#>8+{~JCGEf9Co;8QnHZ0c57)zjz|I4n zF$@QmMrahw5j>bQW9gweTC1DIl(}X^Eavg%F*w*YW71)!q==2$LOVRW+&NncLXu*{ z)Wno|5;nAR@W>b*3Klr(ax_Uo$4xa+vxiOTK$wm<n_x1-#tws{28ld|?#x0vB6=hw R?0@W@q<N^NZBKjB3IJBR{uTfL literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_1f8_states.bin.z b/client/resources/hardnested_tables/bitflip_1_1f8_states.bin.z deleted file mode 100644 index dc0f16fc4cc08b0fd65511d674592b823d03e35b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 15065 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 diff --git a/client/resources/hardnested_tables/bitflip_1_208_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_208_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b01f02208ef4ca4c78fc6566fd6e0c556e11ab30 GIT binary patch literal 5424 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_208_states.bin.z b/client/resources/hardnested_tables/bitflip_1_208_states.bin.z deleted file mode 100644 index c8a8cf4a0..000000000 --- a/client/resources/hardnested_tables/bitflip_1_208_states.bin.z +++ /dev/null @@ -1 +0,0 @@ -xOu3io%VkLSMd9E bJ!HHK{| us~~ןO?y}\כ7t{G{s6~W.כ{vw?~>߻oϿ^珟ϝ8_uܿ?}/~]?|כ>'{߿>kO1W}|p?~==|kymo7ogߏߎ_??6ÿ?_;~o\??G??y/^yXopaߧ{tWMkQ|Xկ|G7___5~9_/ߟkϷ;/? /7?j?4[<ֽ{okOkoG7}g?W˿?o<?cϏv?:v|j?}OG_FwƯ??j񏎿vƯikۿz=}]?3n_}4^]V?O_V_/dU{uSƯn[wo]}߻u?????_?yyOkC1xwouw Ͽ7:coooo_uھ//ko;?7QW^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>} \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_1_220_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_220_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fe85775bfe7cdafa269bb9b1c2202af269e763c7 GIT binary patch literal 1680 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_220_states.bin.z b/client/resources/hardnested_tables/bitflip_1_220_states.bin.z deleted file mode 100644 index 479bacb03..000000000 --- a/client/resources/hardnested_tables/bitflip_1_220_states.bin.z +++ /dev/null @@ -1 +0,0 @@ -xMnFaWtщ|5o}4Lg ObOjzߟ1$_K߿rK->ɷޥ/~}K?kxzI,t_~[?~O}־}~;nnr|_O?鷷>ޯ_OCe9w}{}zǏa<㯿KŷwKIߧn;7I?鏗O/???O/O{??O_o/_?w_w_w?_?_?oO_w_Ow_?oO_w_OwO_o/_?w_w_w?_??O_o/_?w_w_w?_??_w?_??O_o/_?w_w_Ow_?oO_wO_o/_?w_w_w?_???oO_w_Ow_w?_??O_o/_?w_w__Ow_?oO_w?oO_w_Ow_w?_??O_o/_?w_w__Ow_?oO_wO_o/_?w_w_w?_??OO_ӿO??O??ӿ/?{g{gO??o??_'{???ӿ/???oO_w_Ow_??_oO????O/o?o??Oӿo????/?o?Oӿ/?O??w?_??O_o/_?w_w__o/_?w_w_w?_??O_o/_?w_w_w?_??OoO_w_Ow_?oO_w_Ow_?_oO????O/o?o??Oӿo????/?o?Oӿ/?O???_oO????O/o?o??Oӿo????/?o?Oӿ/?O?????_'{???ӿ/???OO_ӿO??O??ӿ/?{g{gO??o??_'{???ӿ/???OO_ӿO??O??ӿ/?{g{gO??oOw_?oO_w_Ow_?oO_w_O_w_Ow_?o???O/o?o??Oӿo????/?o?Oӿ/?O???_oO?_??O_o/_?w_w_w?_'{???ӿ/???OO_ӿO??O??ӿ/?{g{gO??o??????/?o?Oӿ/?O???_oO????O/o?o??Oӿow_w_w?_??O_o/_?_w_Ow_?oOw_w_w?_??O_o/_?_w_Ow_?oO_??O_o/_?w_w_w?w_?oO_w_O_w_w?_??O_o/_?w_w_Ow_?oO_??O_o/_?w_w_w?_w_w?_??O_o/_?w_w_Ow_?oO_??O_o/_?w_w_w?w_?oO_w_O_w_w?_??O_o/_?w_w_Ow_?oO_??O_o/_?w_w_w?w_?oO_w_O_w_Ow_?oO_??O_o/_?w_w_w?w_?oO_w_Ow_w?_??O_o/_?w_w_Ow_?oO_w_Ow_?oO_??O_o/_?w_w_w?__?oO_w_Ow_w?_??O_o/_?w_w_Ow_?oO_w_?oO_w_Ow_?oO_w_Ow[ \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_1_24a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_24a_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..15195d21385b0eede73fd2ebfdf61354647a4812 GIT binary patch literal 12468 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 YuI!ateOk5upWc(Mf`y9w())e@06MU46aWAK literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_24a_states.bin.z b/client/resources/hardnested_tables/bitflip_1_24a_states.bin.z deleted file mode 100644 index a4cc5d58c54c0b63b9a7a73ca28792535b688a30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77058 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 diff --git a/client/resources/hardnested_tables/bitflip_1_24e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_24e_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..18a6d49871207a91671b9bbecd09e0a98f45fb6b GIT binary patch literal 2268 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 KMZg45YX$&eRqjmy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_24e_states.bin.z b/client/resources/hardnested_tables/bitflip_1_24e_states.bin.z deleted file mode 100644 index f7bb63eb7878e931d723a7a353d2af818d2cc96b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44320 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 diff --git a/client/resources/hardnested_tables/bitflip_1_25a_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_25a_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8 GIT binary patch literal 4981 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_25a_states.bin.z b/client/resources/hardnested_tables/bitflip_1_25a_states.bin.z deleted file mode 100644 index 4e5b2ff279cebc2f552d994ff58cf344c8e4323f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46813 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 N$q63+<$0{LxB<9)=N13} diff --git a/client/resources/hardnested_tables/bitflip_1_25e_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_25e_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b6c1eb54c9a47adde8f344c3c51fa06cddd1c782 GIT binary patch literal 1135 zcmZ>Y%CIzaj8qGboE5mHfWcF+{_p?)FaK!%ZRjYSBQWI&1BZqKg98KO8b$^oCx$MD z&Ierg84%#vOi7*@ii<g$OfD`KFgZD~fuY^x#EF!Hyb?Zw%X%dmm-+NCuvjj0b5`TX zIF!(9l5vFBC?$bG@vM=Nq=B=WFiYlQH-*f}$_$KrnG+|RY?3mVq3kPV$m}yyf`LP1 zsz9fazpqb^k-~)wnVl0m7hf@vO8Ml!N5p@>!{kd$)0nuKA~;qyMldWt`gaGbOatp9 z*0>uwTr~}~3^fldnXH&Lu&?9#%y>Y&LbYM<0yzVB1uMqJ(5eFoE(bPnALH7<!`K+Z z*l@r=LbTyPf)B@m?gs0IJqs+E_wYHEF)z?;c)@*>#Xzg?fPaZ-f}g|JgH}wTmdqR2 z11wqJGKD(`pJG48e}advp^q^kLPGR{I72D(ga|Q~2Qp0m80r;d50o(P;C{g#P;;QX zd5>&kf;)p4V`D<#ho-*@Pxvh)xc@XWpW`=>Pq4dC!C1=ji6KMfSL1Vb(SR3hEC=EO z{AciAV|?GVzJae{9ixH%6#g0V76$Sg_`mS~;@-pe!0!VO8yn+8=7w+v31Oz1gaXb3 z5}b_&1`-m&6XZ6?G#*fG*dW0#Aj9~o`3N7w8_xHP2edb6tzkdK!|sq^$=GmUHS>Mu zhLFDwaRG53#2G9YukdpSuh0+Sb7T*YU@GD`u=)X`4a1y91KGxk1N#{G9PJ<2OW0j7 z&|6T#+VFw#0N;nu4~<`%7uY=b&Uk}=fh@x-Hr9U!teAc@);Gl6kZ%z$5O**z(0dT{ zk?~DK0oM+u0|q=y2ZHzT=kPHWaj#Hgtx0$w_?6)aS8YN<xWWdR#soh{19gQBst5Gl z8QK;0Dm+^~A@~aOk0uMI{RT2k>lpqlkP`^L&f1s|A;$WE^)=&T_Jml*N9+s+2A0e# z3?%p(ELkj=&v2h%S6KCm@g94Eje?EB{0rg}_!{;!*f{JBuywF2h+Ck2iu*P54*5Ic z3E>SA5~5Go8R8@C9@sh5F0g5s>v%&vfsgTkO=+wp>pi}P8Di`V^$!a8zp+*`l(61o zzrnZQ3)6?D-;8CfH{=#rFnwlBkYQ$c!oH1ti7Z12>kWPeOZHoQ6O=a?Xuo5<BI|fU zuVI58LjmIfxrSPWD#kZVFW3uY5A1F{!Ji@bL2p4Rdw}28@CR&6FPK+Yusi7RH6+M7 zCKwp7*jjOQ*c_N4zKe~qF*HGkjX^>n!9c5rYhj}f8-syhLl|R%H)F#AH)f{QOdBMa znbxozSlQ5(AR*ew!?i(&X$IE?ZKkV%2@=8%E0q}&L=s$IGBZp)!sTheU%(|H@I;u= z;|Y_5h^<0`#w#{ZLSSqZzuyqNL78b$f)2-l#S9yGm@HTumiq9p1~VNvuz}-%foj8n z2yTZ20|OndtzoPU31O@W%FG}+ZN|oT1uPE)8#YL-W;k#lLPF@k3?6321UIHNY>W*F X20B~^5)ABr?4G1~sHNpnZ*l_wOTmyG literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_25e_states.bin.z b/client/resources/hardnested_tables/bitflip_1_25e_states.bin.z deleted file mode 100644 index f8686dba6fe9851da2a7484b5352f4521b575ab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23650 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 QgLg{ufBS#-Y_;T>00#Gm#Q*>R diff --git a/client/resources/hardnested_tables/bitflip_1_262_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_262_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..15195d21385b0eede73fd2ebfdf61354647a4812 GIT binary patch literal 12468 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 YuI!ateOk5upWc(Mf`y9w())e@06MU46aWAK literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_262_states.bin.z b/client/resources/hardnested_tables/bitflip_1_262_states.bin.z deleted file mode 100644 index a4cc5d58c54c0b63b9a7a73ca28792535b688a30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77058 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 diff --git a/client/resources/hardnested_tables/bitflip_1_266_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_266_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..18a6d49871207a91671b9bbecd09e0a98f45fb6b GIT binary patch literal 2268 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 KMZg45YX$&eRqjmy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_266_states.bin.z b/client/resources/hardnested_tables/bitflip_1_266_states.bin.z deleted file mode 100644 index f7bb63eb7878e931d723a7a353d2af818d2cc96b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44320 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 diff --git a/client/resources/hardnested_tables/bitflip_1_272_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_272_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8 GIT binary patch literal 4981 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_272_states.bin.z b/client/resources/hardnested_tables/bitflip_1_272_states.bin.z deleted file mode 100644 index 4e5b2ff279cebc2f552d994ff58cf344c8e4323f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46813 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 N$q63+<$0{LxB<9)=N13} diff --git a/client/resources/hardnested_tables/bitflip_1_276_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_276_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b6c1eb54c9a47adde8f344c3c51fa06cddd1c782 GIT binary patch literal 1135 zcmZ>Y%CIzaj8qGboE5mHfWcF+{_p?)FaK!%ZRjYSBQWI&1BZqKg98KO8b$^oCx$MD z&Ierg84%#vOi7*@ii<g$OfD`KFgZD~fuY^x#EF!Hyb?Zw%X%dmm-+NCuvjj0b5`TX zIF!(9l5vFBC?$bG@vM=Nq=B=WFiYlQH-*f}$_$KrnG+|RY?3mVq3kPV$m}yyf`LP1 zsz9fazpqb^k-~)wnVl0m7hf@vO8Ml!N5p@>!{kd$)0nuKA~;qyMldWt`gaGbOatp9 z*0>uwTr~}~3^fldnXH&Lu&?9#%y>Y&LbYM<0yzVB1uMqJ(5eFoE(bPnALH7<!`K+Z z*l@r=LbTyPf)B@m?gs0IJqs+E_wYHEF)z?;c)@*>#Xzg?fPaZ-f}g|JgH}wTmdqR2 z11wqJGKD(`pJG48e}advp^q^kLPGR{I72D(ga|Q~2Qp0m80r;d50o(P;C{g#P;;QX zd5>&kf;)p4V`D<#ho-*@Pxvh)xc@XWpW`=>Pq4dC!C1=ji6KMfSL1Vb(SR3hEC=EO z{AciAV|?GVzJae{9ixH%6#g0V76$Sg_`mS~;@-pe!0!VO8yn+8=7w+v31Oz1gaXb3 z5}b_&1`-m&6XZ6?G#*fG*dW0#Aj9~o`3N7w8_xHP2edb6tzkdK!|sq^$=GmUHS>Mu zhLFDwaRG53#2G9YukdpSuh0+Sb7T*YU@GD`u=)X`4a1y91KGxk1N#{G9PJ<2OW0j7 z&|6T#+VFw#0N;nu4~<`%7uY=b&Uk}=fh@x-Hr9U!teAc@);Gl6kZ%z$5O**z(0dT{ zk?~DK0oM+u0|q=y2ZHzT=kPHWaj#Hgtx0$w_?6)aS8YN<xWWdR#soh{19gQBst5Gl z8QK;0Dm+^~A@~aOk0uMI{RT2k>lpqlkP`^L&f1s|A;$WE^)=&T_Jml*N9+s+2A0e# z3?%p(ELkj=&v2h%S6KCm@g94Eje?EB{0rg}_!{;!*f{JBuywF2h+Ck2iu*P54*5Ic z3E>SA5~5Go8R8@C9@sh5F0g5s>v%&vfsgTkO=+wp>pi}P8Di`V^$!a8zp+*`l(61o zzrnZQ3)6?D-;8CfH{=#rFnwlBkYQ$c!oH1ti7Z12>kWPeOZHoQ6O=a?Xuo5<BI|fU zuVI58LjmIfxrSPWD#kZVFW3uY5A1F{!Ji@bL2p4Rdw}28@CR&6FPK+Yusi7RH6+M7 zCKwp7*jjOQ*c_N4zKe~qF*HGkjX^>n!9c5rYhj}f8-syhLl|R%H)F#AH)f{QOdBMa znbxozSlQ5(AR*ew!?i(&X$IE?ZKkV%2@=8%E0q}&L=s$IGBZp)!sTheU%(|H@I;u= z;|Y_5h^<0`#w#{ZLSSqZzuyqNL78b$f)2-l#S9yGm@HTumiq9p1~VNvuz}-%foj8n z2yTZ20|OndtzoPU31O@W%FG}+ZN|oT1uPE)8#YL-W;k#lLPF@k3?6321UIHNY>W*F X20B~^5)ABr?4G1~sHNpnZ*l_wOTmyG literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_276_states.bin.z b/client/resources/hardnested_tables/bitflip_1_276_states.bin.z deleted file mode 100644 index f8686dba6fe9851da2a7484b5352f4521b575ab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23650 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 QgLg{ufBS#-Y_;T>00#Gm#Q*>R diff --git a/client/resources/hardnested_tables/bitflip_1_280_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_280_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..6d1908e79244a241457aee82c5587bd1f30ef123 GIT binary patch literal 369 zcmZ>Y%CIzaj8qGb{2#f!mZ4-zEaMdh76t|u76umv4h9B>1B`b{7!=r87!LRbHLEpx zdP=2y@Cub+)cDM@xItA)H7I;u!;}J+#SC610m^%X`kMlkmupRo6m(MwR|(@X)i~+4 zs4vu2zA3O}@r5b1LQ~z7R!kG>QP6kw3T_bU(b853v`bm+DyeZ~v8t5D>xQYE7rYDt zLwZytR3*F&ybM6Js)Wjt2b^w<fia942UO)9m;xVgYFaQY+CO8#n#r1Lo*QkHVywu? zYk0-L#K6GB#J~jd07C-9Jq9M88BJi+uw<!JuD`3Gj)=<!E*%XmE2eISMF&J80+t?h z415t-q0|#twdj=2qEkA71tPIrIvTq~;<%LJTQm|~TSH?7MGKg^ITj0s>aWsSbW|)b zQ;d}>hD%4NB_c3k(V=cuF;+1y9gzr4(GRR*j3NcBVvMejLW11yD!Q;c1Zh9uSo~x6 NB+WxDjcps!DgX`{bqxRj literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_280_states.bin.z b/client/resources/hardnested_tables/bitflip_1_280_states.bin.z deleted file mode 100644 index e4f4b6ac6..000000000 --- a/client/resources/hardnested_tables/bitflip_1_280_states.bin.z +++ /dev/null @@ -1,2 +0,0 @@ -xAP ,Ձ;w!щG -! {4܆.R-W/OOo??_=?ϟݿ_??{o???o??{??_w??㏿_?w?_?ǟ?_??ǟ_??㏿??g???{??_w??㏿_?w???{o???ow??㏿_?w???{o???o??{??_?㏿??g_?ǟ?_??ǟ_??ǟ?_??ǟ_??㏿??g_㏿??g_?ǟ?_??ǟ_???w???{o???o??{??_w??㏿_??{??_w??㏿_?w???{o???o??㏿_?w???{o???o??{??_w?{o???o??{??_w??㏿_?w???㏿_?w???{o???o??{??_w???㏿_?w???{o???o??{??_w?w???{o???o??{??_w??㏿_??g_?ǟ?_??ǟ_??㏿??ǟ_??㏿??g_?ǟ?_?g_?ǟ?_??ǟ_??㏿?????o??{??_w??㏿_?w???{o?㏿_?w???{o???o??{??_w????{o???o??{??_w??㏿_?w?{??_w??㏿_?w???{o???o???{o???o??{??_w??㏿_?w????{o???o??{??_w??㏿_?w??o??{??_w??㏿_?w???{o???_w??㏿_?w???{o???o??{᏿_?w???{o???o??{??_w??㏿㏿??g_?ǟ?_??ǟ_????{o???o??{??_w??㏿_?w??_?ǟ?_??ǟ_??㏿??g?ǟ_??㏿??g_?ǟ?_??㏿??g_?ǟ?_??ǟ_᏿??g_?ǟ?_??ǟ_??㏿??{o???o??{??_w??㏿_?w?_?ǟ?_??ǟ_??㏿??g???{??_w??㏿_?w???{o???ow??㏿_?w???{o???o??{??_?㏿??g_?ǟ?_??ǟ_??ǟ?_??ǟ_??㏿??g_㏿??g_?ǟ?_??ǟ_???w???{o???o??{??_w??㏿_??{??_w??㏿_?w???{o???o??㏿_?w???{o???o??{??_w?{o???o??{??_w??㏿_?w???㏿_?w???{o???o??{??_w???㏿_?w???{o???o??{??_w?w???{o???o??{??_w??㏿_??g_?ǟ?_??ǟ_??㏿??ǟ_??㏿??g_?ǟ?_?g_?ǟ?_??ǟ_??㏿?????o??{??_w??㏿_?w???{o?㏿_?w???{o???o??{??_w????{o???o??{??_w??㏿_?w?{??_w??㏿_?w???{o???o???{o???o??{??_w??㏿_?w????{o???o??{??_w??㏿_?w??o??{??_w??㏿_?w???{o???_w??㏿_?w???{o???o??{᏿_?w???{o???o??{??_w??㏿㏿??g_?ǟ?_??ǟ_????{o???o??{??_w??㏿_?w??_?ǟ?_??ǟ_??㏿??g?ǟ_??㏿??g_?ǟ?_??㏿??g_?ǟ?_??ǟ_᏿??g_?ǟ?;m \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_1_2a8_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_2a8_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b01f02208ef4ca4c78fc6566fd6e0c556e11ab30 GIT binary patch literal 5424 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_2a8_states.bin.z b/client/resources/hardnested_tables/bitflip_1_2a8_states.bin.z deleted file mode 100644 index c8a8cf4a0..000000000 --- a/client/resources/hardnested_tables/bitflip_1_2a8_states.bin.z +++ /dev/null @@ -1 +0,0 @@ -xOu3io%VkLSMd9E bJ!HHK{| us~~ןO?y}\כ7t{G{s6~W.כ{vw?~>߻oϿ^珟ϝ8_uܿ?}/~]?|כ>'{߿>kO1W}|p?~==|kymo7ogߏߎ_??6ÿ?_;~o\??G??y/^yXopaߧ{tWMkQ|Xկ|G7___5~9_/ߟkϷ;/? /7?j?4[<ֽ{okOkoG7}g?W˿?o<?cϏv?:v|j?}OG_FwƯ??j񏎿vƯikۿz=}]?3n_}4^]V?O_V_/dU{uSƯn[wo]}߻u?????_?yyOkC1xwouw Ͽ7:coooo_uھ//ko;?7QW^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>} \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_1_2c2_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_2c2_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..15195d21385b0eede73fd2ebfdf61354647a4812 GIT binary patch literal 12468 zcmZ>Y%CIzaj8qGbWL_w5$5=G$Z~MRWhBgMr1FjAXEG#W791I)`KE4gC4-D&S8AKHr zG!`{AXsuNBnzCRO1DAlK!vcl{oU9@uS`MKM3``9{p{@Y}O`$;n3jzW}f+mTGDz$1X zVBlo%TB5ROkx~Flvf4~$wKm6z%UBY7W~K1Vl4Nt6A=qY=Il(9+MN%rkP2%J-hm#8@ zq+~Wqs4ZDC%V$#Nq9mgkzWhE5g1lTj&6Y1=;AM8Gf8zCDWB;4bQeKb!B}V$6d2HI7 zc?=H!W#6>&pZlU$T{bIKzf96~EYy%vO%=K{S?P+2y}(bexQB<IO#LCx6}0~>e^Zz| zv#Myxlq~{ZR+)I6S{(2pG^ydsl2yM{YbNbTY-?+4lN6Jv>60jUk+>r9U7IYA!Qm%0 z{2KL&Zz^mgQev#6q~tGDSk(4u&6_g6qxSHth5r=WdF&px^H2ONv}@rNtDr1N&r7T3 zcwN|Vs`bK)OqZ8_ov9v4YdQG$vc{hjb6R7l?XgK~{X@-5b6uu>bJ-Za#rvk}q&W*? zG@iy!cal|!b9Gm0+2<M-DEgE~qqSn;6qP+Il2$&r;(AzR%8_*vQ`;6k(ra6^CsgyW z)5J?{OKfBXOM;e7F%4Q7$Im9!=K4gm;L_6ilK2N%Z40N&NSts<mzQ5_rRw1&OBYU2 zT(OonC~8%hL`IhD!i5vFq*^<p#H6}TY|&YAC2Zk}NU^qs3o|mJq{LiTtns>VWUbR- zUZ&Mb7p~|m^%YEs<S{rL82`!1^POOI`ypKso+YV{OME>pHLlc5RQY=}_}i3uE2<jB z10KF|{VCNMFJjBff1k&qo+G2~;|E**iS0*h`&X^MDD++Ppy+{qmheV>!Af4fwuOh4 zzG<xADIPTC@4}3_#1z(yD9;sZxjnL4_GdYJh~HZ9-DP2Gd}gSp-NB#jpWAO-_@{g+ z=#^Z+-^0!qzG&^^jA*Ul<y&}IXvfqmCR6tE*s(jeJM(l0eDQj!rkZ&8;BP+F3OkXR z;;Onz2Q`0Bnic&0ifnj@Jk#2MpORv(7rvR;GymXk{2@1GPPa4P!Y;2J8L_S<1~1iC z>T(Bc6>Z<Db;-wbVX5d7yY`UqDPi&^t{26fodZrJit~q9RG8Q$rh4r?>?~B{^ssHh zEA16)10za#c|2FF3H16W@NLN_xs#Ee3)|WkF+W)SXwtln@TC!pgF>g6v`xy=c2>M_ zHG_51EG^egUoWR$UQr$Uo~jFN<qfzR9wdIM>F0vrTb|VpHC|Gl3tu%>$qW3JRr%Dm zWc3|gk(xt4CR~!`v<W%Mv+~tCkqVWM!BY)ZE?M|V<!8vF<-4R>Ux^>l<z5kQ@N>df z?trhnJSHn6gVrieTC>z>jf#&}hURCLeF<AdJEJ<Aoi6N44E{Kk|Fy>vm&8DmWuaXg zovx~EV%F4E*tFs>uhwcF&!xg#n*>sQU6{32UD&izO=yd*sEIDO(?zw`iDIo&R`V!! znK+ANu!UUdRa~eYGOcxCmbTL+sn!cG7FuL@Tvhn)qO>b`6;IPftpj1LOCp2T@_J+~ zxGK8RZQ&#}iKz{1I*cYx%v$Trwy;^#U}<N><bZ>#q<FeRQ=(Q2W=sy@)i|=O)1)z} zr!|bnwV7+#!jv{%p;I%MwKAD5s)ejv;pQ<*Oqy3?O?PPZUj_M-Tw4r&wV(K#*#54) z`H|MV<Es|_JGA;>`zt&4Nh|)o*y`n<%-7D#Cu6Fr-+0AHPpYlGV@JV<f+rCv5h+^V zypF6fS#n~d_K~Qzg$oz1s9&(^%97s!5?O%@xDHKgYhBpZrgY(y#HtL@7X4SYy*!56 z&U~&PynZfxQ5i5xtbL-mP{CEv30G_;C0^Ji%g<#KdQ@VuXl7W*MKRYYcJ6<8`QO+b zcjmt&V^QPGWA72i=lsfZVO?UI^E+ABj401XvfP3NPa^qG{5f<YBT`%Iki?`*b6hJH zRju?{ttrnM6|h)~S5VgDDw}B1nkA`Gsw)G(hDa=Bz7YC5Lx0f}Db)p%VIs?27HtaE zZ=AxuEAT4kJJyPY{};X#7uvfpY{}GG=ZP5wn(+mHYIwXp1=Tt`zjS6=9TL{QNw2Nl z+1XjKOWxp=M5@OR(M0z}-tR;TG-@YSFP!j7Zi$`87E`ai9eWRVF*k%yRjgPU-W1*v z)gEwV!K=<L?SpR3hon|5_h9{ftkK6{YFO7Ysi~n;yrwOjVyJYAGgVn5%qx{U#Fv$a zF-pPIHDT$(tWehP{EsX>FT5xcEwM<630m#EaLQ_@LwZa7&vZYTdSU5_I*yIvXY3|C zRbP?lEttyJ?)<fV!i$<7rRiT6u4-!&jgoS0TlkS@#qveEp`xcG#iXR9#GDr{TsSes zXlay`YDu?qz!jS%F;-IT9y^_<n6!J8icWYG&Z~6c!WNxwXQ!*8i}cTg+PcJXM)GIP zVfn6gG-7p#PGC!@{e)E)rv4YPnA*<OpQ7!dv*c3qC#|ho!Yigu35@HEQhZU;J>k=$ z@KYhxN`E*by1xc37v*zZ5)pJ!{D4<o;v{`ht-pu6Cha%n_6q&k73DR5Cx5{w=K~YJ zEtxmP?v?gY*E)eqa)Pyrm*f;bDxTEZuc5yxbgH4-)C#RQF1xNxYgTI&x+%#t91vb2 z(fL%gil?>d)#?+@&lc_EpJF5*V*mNy|B6-r7Oi$xI;eEj%fvKfEsMcn9uq^ZD~mNv zbi6KX(sfPh<}~U2euDF#WB8NRs@_35Lb|+KfvG}a4!u04OeeIWx-ML}a8<O$TXEr% zD5njJKQ7qM<)-QMG)`#KWT8!~)|ePv@>RMr**QoeBO`I)6w`o*olz^rB&N1a%t#Xb z%70VU(6N2vDv7CWnr;)srmWSHSk2YE(35|vi#>z=+(7P+TAg)FtJd;_8m(9sAgQ#n zj%oEPF;Q2mNj9s5171X}40qL4JP`6EQgo^jv#6<Sspf>f;Dr~wpS8ahG~xPYks0N5 zG{UHLmD7>ctdd$s1xrF(EJch~iM4rb<yka&Ns#_8uT}A%x!iC3Wous){+s`mMcsz~ z5jCOC&YGsqN?$BWY<av6t#;Nl<>?mMq+?>Jy(nC(SLvnrM|pt@hpz@aoHEB^>XCIa zR&oOCL+ln!vU{RY>G3gqRq#YH*M)71wsHqXNr|mW>RCByo!5@QR!LcI9@pRe3%~Pk zJlwvbCNOHz-os9pq{N$7tk2kD%b$G3Qv8T5uhwdhTBqL&UrA(%2S$m>^0Ws=)bu-l zX`k?&|G+PKXMU~r-~6lERBI<~v8d!()%|4Zs<t-92ZvUBY~@>cVwaR^N{rXTE2hpu zn}QD5Pw8%x$VduX*cmC-8rH5D-WvSLj{U?h`GAKDpQ>DV_(NVZ*y)sy(PXD9!cJF= zCM#`7_~{j+RiYQPZc@o)u864}DPe(89s3@Bn`-I#bKwuygW_AlmduzsF>c|B9c>Gz znDVE@bbWJuC9AZzeMhWl_)gL0TiR2mweiSwomkU#B~0<cq1B({lrC)1S#n}6PuGR5 z4ktE>sa)~(c<5QN%Kx0m#7_N|-~(ExBt`a4%ybS}&8u`Is_Vj*_6biSvb4D(MfNCt znGmbx^t&xotYe?j;uQ-km8N-h)m-vfrG3+Rp?Aj~r9<2&x?On!{uL~}vSi*$^+zIm z1?xNNCr%31TD4KzSxd^{s#04>(3;h%_DRY=6?HmH7Omw}3w1iOhG{F;TApsF3q6xA zsWqf32dxQRYO3sF;*#O)p(c?yY1yJ_i?;GQMNPR9x>TwoA=t~1HAA)8B~o-%*O9fF zU50L6CZ0>Bv^Hd_@kq2yTIQM&DLOGybV^uTTWiM_ouv^r0n4WtYQI$GSkAUu(=X(x z%%lq!wOhkvot>2~DPCn;lEuxkEOb@lidli-EbCkgwL40Ag4T3hV&e&lVcP2Q%2iLI zdtsrr(~-5VDN$llT`x7(Kl8fe%Pr)7s!h|g(phOkCd+zH??t-Kfu=k%9l^gB{jUs3 z;!)bP&}WirinFIn)k?Xbd92|NmL$4~WH_rvs&=dnG7Qr=)a%ivbu=p2RZ?u>lo?a9 zx{gHhEb(UJ4NW*QOSIWhSJl@w;YIf;c_BHipekog%~gRb7IsECE3U{2Ik;qU&@6$E z;Z18+UsZ0Ir8w0zTr}Xxw221JLR&oxo!d3T7B)An*9?3WEGS{H_-aV_BDsa$CpFf4 zNqQ!nT9~rhmCb7d+ms{00SB9o*u4t%Pg(1#6SzWjlhf6V)>RXyc#FDRS~FpTM^adz zuE&<{fJ2hp9=(cFxC5h_q8bbxQ+<`DeDq56bZc0%)XjCm)u=B2EdP`>hT6PNSBwHz zWJFBu@^<Fs<>gg5v1w{z=)|~3Qd2%n)V#FH$f^H}YW%%WiPpp=j;kb+!lr5+^tz~( z(#_*AZE0vqsGF3Oq?qf%g-g9ITy$I5#@My$!j+K2JSL_*21g=NgSHqPSu;gy!I5bq zk(!fMc80D<Y?~O>7H~0eVMhEau8@BP{|tV4#UGnk(S0JL(#vLHspyI#(fX6xD+)vx ze(3(-+SbmrS};-jqV|d`DZ!<-irP2BCR$BwjcIe8Sg9H#YBZU(>8j{U=k|ar1_@93 zoAkA`Pf4}$I$velHPx!kwas<HsnCU4t}9Y>q}o;_T;;xEe<dYmY1~Ou&zk;Ua!c&o zn;!)Ibk?YzWXm=oY2A{Yp;sdeDpo$2`k+ECFqU25mH3zTOFH&fO7!EIKM3s?nf#<` zVwOafq~|KBHi=bP605Ij%oIrK(|EOJ%GC&iNYR$Hu32h4QqBQ8O!QlwtOTaEy3Evk z7$%ak`qsizGOkUFHPu%-ALZ|Kz7nYKv1xKh7&n_jb<mupwx_nVK3T>iHRZ}md(H6g zQ){^FM8y~BcLaUw4!9a&(mrX$(r>n0Yq~?GwLd6$6t*PB-myI}jxk>OH=mqhmi8BU zFaHC4i}ri$X{h8f3S1TJU?}+K!l|hx-7D(YCw$VHf2nO@+rn335+<FiHY7G3S+BTo zVwTXSwiT7mJl#qUwG~gS4SBF<$sE@w5(bqnFG8;-7$o(qeB`Z}vh*W=!K0Oxf$<A| zKGA+673`Iea4>5_7>|UV^Q~q4j1S^ME93;L7OwL4s15SdsM4r#JrZ}ZwwF6Fev*Ec z=ZlqLN(aTa3Z^Wrxtg%0^~;ol%|Yv*df80szslEXrz!GDYKh#E`OJ!|wuZ^y2r3Zm z*ig#L>zXBD8oFweglX8SgBQh`CnhdzzRGE<z<e_JpQ@#6mYm2`(M)j>6D=Jh))i}( zMsjU&%35guo@>_{#iU-18H%fvE?ihTk=@JxGmm11#}(BT5n54PNurB%G&7d25*Af< zT5)PqfQhqcYRD#~6jSGbBWo5eT$mCiws472h?{f36_ak4DAx&BjHHxKO-&41v!d78 zIjC*Im4y?oOm_Cv+9c_$IN?O9*CvUD3o{)jErWK*He3k{S*^H~SLv{)Nw>4hTA}iW z(8NW$yxdNQyf*1@Y}D2aHPYqf_R`v-qnQyA%C>;BDOe>kWU;d*vnXdKkJg4uQc_~B z9Sdt$24DE<TBuU+Qk^5JO>6P0RlCF%mIQ>h2SzPCG%?BRN^d~Yx``&v3uHrsS8Za} zQWuI0)#h8YrJHSGn`)-kDPOjQ%>fs-bSt(=igj#NIuX_8k<}h>Nx~qLGbL)#*03%K z)q*5F)r^#|6<HE(yh<-pqFTF_NwxD#*<xa$)2$d|k+p8sD=BB*(6&{FLlakRICN2* zo!!eqLPm^@^HN92>SlH?u_dKpQmd6tY~|@Zc*R00n0ZoP=+uPOp-H;V3k${Bn%0<x zteJ8&X5~^Dso-WWgM@=!Jv<T?GC>8Yq6Zto7M6;Zvhg}AE^OM#CmXsjYmL?}sWz!L z*A<0glCGs;yrIoYVkU>Kx?1SY#y91`)dHztwkZc6s=ipw60Eq$$LmTrud_>p!G$bs zwh2eQrcKP^G74Sks-LBzQ8%S}VVeY~E?>AbG*xs`uWKCttu`r1p)L9kd0jIyG7_~H zCM|2}^-A;(GId;eB2ioMiixRHWnh%Rj}=A>PKkxCatmGQ%aOEJBvEsvq-NI^Z>^I) zD@+}`be3G{RtTGvDCQg(<v7XL<wU}iFU(gatns>_EwpNrr@JCw=&9fk3BfDNMT<he zOjy5Qu?F+Qu%NkG2YIFzay^akykgQd^+<#%uU1%_SNK_Hp$!+VOcu%tOjTAjbvdZ4 z8tE-EW9q85MO#F!=twKAI<nSdD^H*<caXe__A}QdMp7<@+5wkz+NK1zHwPS6)$zLM zEtt4)#oEA#l~K-)3sWpz_AG2!%VT0Hx^Ts6p$!>PZEbB6lfo8uY;+C`bM{#8vYstq z)8hX#7Oa`9x#n)_i=9o%IW`CW8y|3HP<Wu!#N@=JrgnhogT(xO3z$L}SQ#A{L|p|# z8bTRZSv?q)8iYc*gfx^EIWPohurh`!wKA+?@>-x8>MFvp&{2VbV+vC%Cj$cmD~ppO zPoklTgtEYiLy0|VYRxQ3k`g|KEk`aS^f)VXwi(Qr#Ut2}l4#)T>EUt7m*vpxzy&r7 zg1jc23O>}>C^v!E{?)|ar|P?!yEbZm4P9zqlK8|%BC$>WgPo}VH(T+Lz(-4_uT;7s zF4VXvEKpa|NY~l<Bma`6pJePh;~U?4h5ugoW@`J!Rja~9rU}@pO1UPwIiJ+J;_zk3 zsy~zVb;cMRc6N5=>E^L(=dma;xMJ|rnXgSE@r!N0Mt$H1_~6kUq`{-l0sjLIx5*bA zZolxWGX^?%bZAwfw$fouap#3gg_l~XE_4=6X{foP{2}C$a_CZtm6Mu(9(oZQ8u0hX zO#Y(Dw_GR96^zk%8nwb?V$qZm4etl5PATnK*wqm}Nm9uBRGZg4UY8hyNi(J%7TR#d zruD*=@J_FSi$PWsuCzBV(pwaArHvu<!H2{ZDREv?4>PU*x9Gofh$+vK!@SNOTMR0L z7R6WvMHnrS>N>b+TBtUUK`J*JFSp~8NYROjE7o!=9hud2AycfiS#e^*i47@HVv9Cu zv$<x9Nn~n<xi))j6*cH~x?*sc*R}qti|2=lHSJrXLQuzzx|V-Lj2nG37212@i-~<j z;^Cjp&fn#ZFZ^Qgoxk~8`^TVa*ApwA2JPwUSDN0jr>)&N;Nip?k?=d+OTFqvBJ4f3 zI7W)8TnTfXV(JusEZ`LDw-vTeMGRKI300Y&Qn&DL;x`lf8DFOCYM)}?aN&zB*ZPvM z#<*kciiZPZU5lhd_VU>Fwez(}iaB2uJu<87aC`GlzD0ZFp3D^IigIn~{w<gif7feA z(bSrNtNaTmro{3$JAbgB@y(w3(&UL5i5C)8V~q3`?UE>&?5fl4u~D0Us@5f+B`0=u zeUhJe2sCUI;(ADrM~c@uNKbA>!H0xju1mFkNEl7Nr6-Zfr&=o7vc`%>(z7#a$<lg@ znxIPlmNlSJqotwYr{p!dFHNc9bxl}xO43;<OPg)sg;PhkgJx>Ft_o)A`g3L4BK;kc zSFCB9a5B~-&P#lP$oCb~_b}gC*lAFuu$RB!x6G1HZLQ%)B13AGzAc<$)fK07XtmN8 zt3`Xd;#6Mxc%^z&2HKn|3ce%d`ciyLq`1evg<lrF6kGU8N+Lt+)YMd-g_Cr7M7>p_ zT=p%P7c^^Pmx;I5rCGseylS61e_N8VqE}VeD>Y)Zi*Bgu0*Sy0x?To{MMK+yGC5l# zJWQ5NU=CS1F>9)t&?cR!MmlX%PE4C}Qgf+6+iH%a9>p$G#-%3S8cAIjy_HUE)K<F6 ztMsB|!W>f}1NI$SfhTr^CI(LBY1*XYI#uh!rM3WrsVm(UE>V-}I-%_#8Ilo^VqzpE zF_|l>>y%Gh+k`77Iwm@XVwxseo7`6VEJ|eUGUZ4(5+yO!q}xkM%Infh#-%2Wslp+y zOO-u*x}BB6THD_;{96&au>F}l`+FYy78|)oD}TwYYX2b`$75gkrc$f_QFq9a9|kW9 zE<8LO6!gui&Gm4=g^%KVa(pt~Jl#C4@thG;+osGEQ?2L@xME^r%Kt+&YRddnW?nB7 zhqWSGjC6TS48__4js^#W3G9Dk#|s%RdNcK_^M#K}DG@eHVwOB?S?jF$WHO)Y!Gljl z9~8Q2oLUpQ)Szw3fm;4Qy!=1qlNYwX<&&{J%wwMt$G7n3q?GsthXa1|sis6sJ|)vF zSnwpO{YBlxEJ?A2%^|B@W{L;(3r%0;+UzOM8ntRlhO>~nNT${$DV{|el6+X}j<hv3 zz7ef65nt+I;;mq`HYj+(f=gWA3>|)YSt->lSTACK;!AgDyufOwsdb4bwpfU)-|)p= zB)m)gi9ub8sb`qbh8m>@2M;#0EnLdKB9q5t(Y}C0?Mt3Ng?1>-Pl;E!V#OcIzeq>Y zYhRFl<5h){raeo!k9zG{v7Td#EZdZJFQ3jhtzPF-Z7cLvGW}Eb=nm~<=7?I$kQvI^ zwI#GGSVOZ_GE|aV)mLQ0qFD-Sz1V~{YNkY~vVP}(0U9hS(0WmDVpoUJx>bjyf<65f z?90+$6dvfkqK;!r_X~RyOV3wQnwerN3JU5TKC!TC(^UPhk<!Mi8ez)K%f8`CSC!Hg z)uOi6HXcc_g%>VdII)$NYmKC9DL0$5;!~%G2N%2&*C=XRQPdt7)vmN7ON^&m>B1Hx z-M~ntzfQ|nxjyQ;V!P;-;JeVJQK2hz0+%S(aq@E6eOfmqYp2sb1z(4)!Xf+@wT>!U z1x9jdUlm=-@7%GgeTv3s$9R$D3*DC5U1dGg?sP>*Go|~k()@*q!ABIouI}piIca7< z-K1%%{tulWR0e!n(!XQLSH*9tl`iX#@&<h9{_MO;F5r8>gH`)IgTDow*ebfBGGJav z_ydE4OLGDjv@4i;c~A7!v{@OxB2&!u!p9K1mURoiItTnY_=h$8hiH_fm?pQ<Vzy9i z7aoJdygZ@0UZ%n#mwGj)8oI5BbUEZdg=78`(fXy4N=d<iN*69I6$_cPp(P`6ikQdB zENy3JXO}e-b)B6<3_}v#zX$Bw)a&GWHBM7XwKFO-OiCijSLvc!TZqAh3x}OUKm$b) z9UHEMNpw4FE&a-Wk1N%&{opF8uERoZOI9VSP1RO9D)54pUq!WQ)#_gtrrL5%s#?LU zbwzBc(v{GNm7K2xetM-k1y6Br6m~qZ(Q7AXYpg5xQd4EG47Q1>fkz@l3kpg(YXkna z_%!X~laiWhB9XFks#c~m%bJA~Tu+8|6fH3dSr*#r6S^uSMpNYP0+-*Hmels&$f#Ph zf5(63_IL6(Y!^wG3JYA=%O@k(=9(1R9B3pZ=9&?aaAMuWSdlDo!Ft7a5(Zxs4+mNl zX-|x?D5&(BzQjIdQTP*~^_+3eSGuQaUD%MgVy)7ZFrIEDPz_`0yeMqN8kue$*FWt~ zY7f6Dc=*EhV$`C2Y_3y`^w|UB1v9GT*;f?l7kn`cjdcFh{jPn%VUJy1CpNsul66h| zV#|L^&iRQw^Cx>{eir*3f3BE{e)GEU@Igkvr@+pzRY&+mGupILtoT|FP6=zh63(}9 zimB)-Z`IJh96J)*cwIA0MHi-eZ75n9$2EW9n_B)8e-5{`PgHB?Kk#d*Pq$EFr;)D5 zOfhGnq_DR33zIuyHLtR(>{Oi+wrH!f(1xj<;x}q9Ef=br@W<(?(hsjIlLI5BzOWJx zG38ZU@Wb`U`j)unMd2rETo2f}tmSW6=M`aMVllNdV(N;u0S``v{%Y^oq|+^w6vpFq zV$*^P8^tE2sx8{p<*(}b)niGf>Ibhq0d9^>(+}x-q-q@w*eJGWlg`2iB|4^}tvaAF zq6M*n+;2=eGrDh0DO#ehuymoT-AXm5upcXuf?kQYL@e0Tv1LW7^FL1SB|%l5_AE<Z zx&B-D?^shL!<C-ZN^2QTX@ySJ<dNk5b;|#>Qxrq0M@m<uR<KA4*F~=_COX|3Ydl+K zF)r%SI<;nHm#O25i3@oIO{3O^dCd%p6kU;`+OcI}XN1;9p(ATF);dK=DIHlOwAI<^ zio{|~DVHm~0jZIi3m2}E^qMhsVp5oDQkc+&gcBRZTwBB1JC=On>H4#1tCwDniR+22 zqL*}e7L_=MURoPE)sW*!n`_3(6|T)fi!}|rcBmF=uUNODNJ49)wiYk1s@{aKDRUjY z+mxQfbe-6w9T+9%+O}wi#`-s1mwdWI1-~k;S~9&ODXcBP>uXS~V2aUX#f2wa?SFOu zx#%VurDe3x*JaWM=TMgFknol`4f&(4iP|AyA-$q0(}dP)Tv`*@vSw1~gcBK&8W%Q6 zOm=l!vBq`6rA1LvQc_Z$ol#OP8?~~uofqi~d|UWXWZr};OHI9uG*ZF>t{6#aWu&Sc zi40oLe3D0Q#k#JD(3B{>1@1u+o>Rm$E~z`MTis$97J6az0pVL>PHRkEtGq&AEqpO$ zkE-Y^XIEVwO<%=Tjg!_or21%VS*@&eO1>!6e@fVb8B>>Vt~$!iDygznNvBQKM@6dZ zYG9(6(iM}1OQM2I+E$1y+SIaTL8fC$gpj_HPN<g&Ya-{u6oX4E?L6%QBeJx4l}=;^ zPB^hubji|Y9tndaU+$1)9a(NaCe4}hp-cQSi+al{Q?H5tjx7J<7&S2>p%FAnq!qeQ zSxHRPG-_o~2J0$EgM$kvrbJ0et&$9D+Oj%y1rOuGRiIHKBZ<V0tPRRqSCe`j4BCWJ zMNULAT@8)oF}SF$xJn`<B~pCFO0D{gdXKu0>0bi&v_3Ie&l29UTqJ2-ligDpcZIe5 z8T(lx5*~VO6bp=7vCdg>mA29sGcETmrk<suODuWWLOv*7<PM4o_Db}=($43sxNzYm zxf6R<tQR<ukz%V59<*F>VdBCpsil!(f+;55&WcM+Ok7{dKS+rUTHoa>vakIwzn8r8 z!FQUq0jK0e-B)ByO|kU6VkMFINMC9CgimsTvCgYxmHvJBbLj9NKG!#OT3vrs=Cfbr zR%~+?%H(O2(n>LsTOl0CrtzpRbW+rs)k;U!sAg$vnwS{1O)N3eFA%&W(zDPrOS~hi z>y+F}z6p<XR=NfGhqO<Ud&wWDX*<<awN)xObb{PRahJFY7lThkBzA1%tpCXWXW^$s z`&{BW_8yvkB9h0%q`fQ9`%TrPHQlbd{0AOh2@@>%+a~K;$+WNir;N?SEcZ+6r>eea zJSy+CUVvX{;*?%hQ^rNwAE#z`y%JaaA;;db^6!Nci7TpH+uD}Q$Vi-+65iPCbYOZ% zlAK~&>%xMm6JBX6J&6;UtMsX@t-U2C;NgnI6>GW=`E-X&-|$1mX^+tU#Fq6FE^N`| zG14)b%wzDwR_XAGitZB?HcG!1PMQ|*XUUuuRUtML3&l^wCo5eEf6@JDQk7O{$EJxj znqp4tSENKuwHMfMSfhT%)F&ZzFN!?h1^P3GG+$KTxFWGl{#mDGsIJn5Ck9Djpk7>C zn?y#D>xvQ`gTog^_A0PX(*N&jrExS)RAJ$yxm=qT`i6Ba(>Nr>aZxj+<<Q!&fQZFG z-kQ8ZI+7w=HSDh}`Co8~J5X6rSLu|?CD)aKoj!{)g|*b0!W6=IR;;?Jbs~%FQp*)X zo;KH19!as*i77^Ht6Z`qdD<4HbO&tZX<N8bEMzrfXxGFQ87T{=7zSK1S#oeeXqKdN zz!g(o&9H?_dAd1_LJoVS`UEbO3J&cu0p+s^8!q`e9h?$2WuC&S4=LSjt`jqr)^fAx zbRAhWON^(RW7UZ*K_|92tyW@93QP>v<hpQF;fkkjz@^Z(fD0!!=_<8;SM>+=fF>U9 zv|_rD$?_^RrrTqeht}a0YaK5rUGzFCHQ{KC%2jp;E3G-J6^s^@s$3CGyb`uBBgNoK z*vc@KD@Ib1Jl%p>5{U~lx;eIVD^BHAJdw)F%d4o%9TFy`k+o=-ME8m{5>uC$@&;VE zqQ}eau_ffN;$f~RDVc7kL*aZ91y4-cBoaYLN@}V_!7J^B3r}n@)b0o^<&!9yYNXvJ zkr5^4>}e&_?(B5o#ngifTTBeaoF^8FJ9|xSTgmHm#ZpYQ;KGh9ZBW*B=CP6qDlzeT zk-~K(HfUYIg%ep)5>rnUJe-&~Wp%S+o3qo2LNO`Tf(wV8SHyDj7(5E+u@dL8YHMw4 zZSPcHVzg9jVVAFKqL?JFU`FDKENy3vq@~^g8#yDLU4^O_YIW_OW2e|A)pez<%~>>b zQP@<8&<gvhJSGNSC-%?C(q`k4TC`JaVoK0Pu_-gAc81A1yR3Cya5ORKgT__Ij{!-} zfj&~I2}dG>*0Kq0a9y$1=|qx`B)7<F%`m|vAEhIrOJ*uvF%@0P6O^j9urc@ozej6Q z*n(LaQd)rr+Cz(`Txn~v)I1t1TD4$(sB$R7k5!j~yS6B{#&}tn1idf_)$Z70A{nwq zLbO&ROPiNhC{-=cH!zahRX1en6eFEUS=vDoZ6cAHoz5azQ;tTu%nBA-uc1C^S=UBM z7gNy*N21zRO?mj>MB*y%z=)tD5eY}u21bZxwJn^OVj=XAH!#BBU}uEEsw-h_t`iP6 z2O7FfO<Cp|;VhcyzR|sFOY2JcKSx<pX8NXos$lJ5Y*c>6{&OCa1S316h=7oQprILq zctg>jT2=-IR;>on5Z0inj#{jYt^o@e7*$y{R!y2H;<bX4l|_}MG1Otwgk!?Oj!lL< zJ!%q%k}?e36eqSEmhkaq<2YhuFe90>bHPE0HaB6GD^o&_a$H>Oz`zjX<>b)eCQ_Bs zW@`Ut{>%DP7KwGo)_=+8mz+8O-H++Ns*2P*)^D2T-OA&$vg<TYZU0g`nP2{!Z!P}I zpSgZ(M`4)CH{Z}z$p@!|FLi!5-}B6wWXWmimuH?c=J{dVbLLldh5hWu$9qoCNtVC* zcz(O;%lPCEwTJ)nJgeh*e)+}Ra6WCGbt^4R&MfXT^ov=`%&W9tq26@i+OTPXKlNg| z>XeS(>Mu1c(c?2Pn(p*cq{c18M$)T&(n;q7hd#DEQ#C49%lK5--szXrJ?YTr&Qp_B z7luAQmN>oP*{c6b|My6wrez)Nt<aQtWIAP<)QPK+v#w-ErB3EG<~2Fm7HM*At?9BY zmw8Ove9mZ{jx<$U>>D|={pXbKr|ySu9p&+H3sws_G*k4K_Yct*Rf+}A7yU7qcYK+B zvE?71y7&41%c||{-9LnHy`s13qj<;1isT;4=|}tz76t$CtxKC?a^<kEj_?oFMe}#r zHYEIgB~thN$-nf6{ZGCu=VyO&eEE{<-oUqg>oQ)vI#iXuUFNaT)mIi<(rxO+-TRA9 zcXqqlFE#qN@ErftgkP!C<t2XGPrm);%eshjkzUW{Se(=8HOe?YHR<Sbe*WDHADo{x zUG&UlNxi+R*X#U@l;=76uGnOkMMk=A(#0kGPin&3j~wkezAF6SC-qhOQEPc64YM}O zMjeUR=#^>G@%v)SAMV9rVRKbKb3f(!&HBy##*EEZ_2bSTUi#qFK40-G-*xqrPp-Or zx%o(?RZ?d7CA;P7yH38Uo>f#UAN1AWOR|B{T3uZ=6X(DswazaxF0Nc_@+<J4Nd1&6 z%7K!}yq=Sy!rVGnre#HTiyWM?)}ZUktgI;~E_*JUm6*9GbJZD%tPMvqyS+nGGMDul zZ7MvdmnzovJ;e3&(nLd3ZJj8oEi-&1A~GTu3oco+Y<5_(smYqPK54y1H*<A-rb+qo zx*QJLIyutYTXUw-h0`vZ*0?Urh)QPm{iXQlO0wPa<L}bnRDARP^o9RTzvS<|d$j&> zv(}``9Jg$>-I036@X>Rd;%TWf-H)7{v1U`nhQktv|6XjZ<BV+Wa$78wY&cmmQfIN! z|I3dhCrh5bRm<<MvE_PKVX<pZrEk%5o7KldS6!A&T(<h<KZ*ahKRmW~w|sNvufJ@3 z(dAFq?7nO3#K~;g^|JraA2FlT5k@l$_DsGq>&Op7#RXSnrPi$3V%n|oSF_7~Yxuj# zubSQ5)~qa<nyS7{wMJa&$Ks>)<x5X~bPJ6yo@UAXv8uLxQtjK?ms3(BKkB6$8+Lw< zG+kvU*1l?fMTzDQ|L$;ouU|fgAL_TO%4mI>^hr+ZQ)JOey<p~psZTb{S>^xWP~?&| z-KN?qZjw=IO({uHCbN39vYa*6@+|fZRDbY4UAxbs&vLrg#%rs6{JKBIyIzc`^%g(< z&dPR8n2zQ7qfd*UUDW<5F|#c*+kdlQ)r@v+pKDvL9y6S_mMt|_=a|jX>n1NtN-~}n zTs=I~blI$AA1VKn{$3SQd(SD~&AK|}u*dSxs~!Jox0Q+?GV=9V`ZKH}rme%)O?-Lq z>ZAM%<AvYy%-<0k^m4MY=ev+UxB5lv&Ncj*%=}qx$>09=iH|0~5BX~MHBPiv%4YhV zqCM-g9<4t$e`RLddZrI{*S0R_^?J0$^T?HoxU~|`C+u5z^=s6=*WcW~xfz{W9I$oO zMsH(dNgiEagUdcfGo|`>1^j;?|JTq*r|Fp1vLK12$);){J%&9gNxl(>LsH`}#4lU3 zBIZ++$tGjTmED@X-iAHLRx{5unQW4_%uwF_y=K?u$80?(B1Nv6NNo&W$bLritJdEY zOTUWhuT<@srkE7A%J~ido-0j{=4s6;I`L#niR$HGUu`vUwN<az1%9y)iE=+~xGHta zj9}FTm#zdaUG>1Ev)4^R^VF33DGUFJia-37e5F48Tk-e(OW(C6ot(Zs=G)bbGZCjl zr)Bf;b*l&e*gNZdU~%vqi{iPJ?5q9;$XBiUXk#0^G;_^iHL1%!CYN3o8DuX@`KQ18 zL!Hd?)i(})y6o*QW2aM9Q)O9gYpSci=MR5a%EM)atJ`XA?cLiCzxloI%_sd=zuWo` zCC`fzeq|VSX-~q*)zkg9n7nw-8`kTl{deV=vl*w|X7LuuY5uIPwR^wwOvN(GZ?z$p z#gZ<wE?X0k9UoFM*TQ1QRw<JW2N%`pANA8eTf3a|Lt@6^tCyFyO^X+9Kk~JpW}n~E z52hcAOxG41<}ulI@aLYW%x>PqWh*l$2M6<MRV@A%AhrC+p3uxBJ2mgnnMR4rrcd`d ztStDb%H^T($4rTN4@)^8^i2M|YQ^u66Lwv%`usgt`E#}=?Z3CUYx$zztyS^g_J5t2 zVzM<QC27@~RcfhqC3Q)gv>98XTrRGX4DB_!aOK3QEhd{TyYV<X3vFGSn6xHq!&;p% z$*_rSjZ?CPdD*7TNNiT-kvh6IGt<Z9FpoiYRLW(xJzf<Xe)kA(_PorelTnZ!w&jG? zTB&6!*MgD`ybKRL_2jX0=%loTS9zAR6s!A5CAQ5<lMSeM?DkdqHBD2WH!M?YulCAh zG2<oTfA!yWD=QuGb<|lc8os1rUda9)6NA*Kh>bd?iOmdGSNlwxwJ{@VwYSft&89Op z&eG;=+c7VEXN6Z)RA<vwwbg2di_Ua=J0G7oZ}r4x-xBuVz)2Zb3Q7-$&UNpMTO%D> z?R@1+c+2W5r#1^_W%c^>8ZBF!EdDU4rkC3-#5gF!AWGwOP{z{5Tql!`iG?k>axiMm z#I8uT8LMp6CW$FFW==aXU-gr*TgufX$08$Eo6elE=`e5jp@=<G!Zjn<f32$DCFLFA z9GdMd*tkk3Y)eR1*b<#<MyDmNMqJD~v)b#J=FAyaXHGT^Gj<bQIOVFZl$y40w$`zp zV4eLUoOQeYPW|rr?@FbO;e$PX5=HWlED9yQ?K?T^$(k9q?qO?sZAJE8TfA6%wXaP$ zXSZb5`rvhjGf#e-J~d9_OqJHFIjL(lwngfsrkP|bU;I0>G@e`e<-fS4Up~I;Uv>DQ zew5*rmuL6Hd3}6*YFANFeeiqZ-&WPN3x0?E_~je9T1?`anBl9bOR{#Y%gVXT(_?D7 zR%dSJJE4b8S6xy*ZOE+lUV5@I)!(yHKeNiEYQ~1-l)aNX-)7p(PB|(6FaFa$_Cr<v zDK)dUZLCz~KYTSZCHc*Bx5@LD6?|&H{Cnq<#9y_i-)gtN`WW7kaO7x~{)<iP^z7El zvHm`j9s258X0++*(8oq6<0NfNr^Raf8LvKAY7=#R;?ZJhUYljJ`pZvG_$0q3UMh2T z<m%kdSMJ&D+4Iq^ZL#<J;I1#>Q=a^^=Qa4V{HVWYq``bnqxGw!mfy<l{(bd9{H~X_ zOKmoUuc}VYtv87cO*&_+ExC4C?p(E4<9rWWhxN+;PA_bq8me{lXp&mWjI2#k+#CmI zib?neotSmWH0b}K{TG`~=?bd}E;aI5w%BuG7LUi7iEXCZS~E`ehV`7***ICqCs`^| zS0`CYmsfGcthEt7Gu=#Pu9CReldLQ;<EqZG%w-apGg6~AMj4CwW+YZPKK5K|av*i7 zZrGy8v<SC|Sy@~cT9^8|b!_ce%aNM3*;^`grSM11moJLE=lU%<9k65FObe~eZF(YE zx{?v45|-hd*R%z%nz9v~T$8Qswrs|k)NZM3QPaG&rF>;l&RhwLTAiuO9%*IT7A6&S z^4d&OpQ~qll6wt{XYbmWc6PQ|cHrHsXI`5;3=hxqY)`xF8)fzC+0292OrlP%UalS? z*_v|oGT-H`xtliUmBeP0c4RzynP#}!Z*Ez1XtC6>h!<!1u3cC6IrHM}<;}fjvkz7! zgc)qw6m@LrtjoNaDGMhnWM-|jUDaZ*^}}?{TDLVxsgXYG<&UHpO4V!gW=F{yrAQjh zG}^p6aP_neact~IQlpk_l{z^!wb|w3<S^Zgs}UwMw#;zT@r_7I%*r}3Z^BoBlT(sb zE6J>S-8r?nd)1R)D}IG`%JWQ@FezDXvTla+(pf2Ki(jpk>{+H8a^m8O1DTnvi$xc! zoNTzb<d|scs+y@ar`3$q!c0w5-EFeYy7jvGT<ehx3yVrUR2e08Hse~)n$wcAA|sA= YuI!ateOk5upWc(Mf`y9w())e@06MU46aWAK literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_2c2_states.bin.z b/client/resources/hardnested_tables/bitflip_1_2c2_states.bin.z deleted file mode 100644 index a4cc5d58c54c0b63b9a7a73ca28792535b688a30..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 77058 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 diff --git a/client/resources/hardnested_tables/bitflip_1_2c6_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_2c6_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..18a6d49871207a91671b9bbecd09e0a98f45fb6b GIT binary patch literal 2268 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 KMZg45YX$&eRqjmy literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_2c6_states.bin.z b/client/resources/hardnested_tables/bitflip_1_2c6_states.bin.z deleted file mode 100644 index f7bb63eb7878e931d723a7a353d2af818d2cc96b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 44320 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 diff --git a/client/resources/hardnested_tables/bitflip_1_2d2_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_2d2_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fa1be58fd4b26d23f8c0a258942ba3c6ae602cf8 GIT binary patch literal 4981 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_2d2_states.bin.z b/client/resources/hardnested_tables/bitflip_1_2d2_states.bin.z deleted file mode 100644 index 4e5b2ff279cebc2f552d994ff58cf344c8e4323f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 46813 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 N$q63+<$0{LxB<9)=N13} diff --git a/client/resources/hardnested_tables/bitflip_1_2d6_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_2d6_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b6c1eb54c9a47adde8f344c3c51fa06cddd1c782 GIT binary patch literal 1135 zcmZ>Y%CIzaj8qGboE5mHfWcF+{_p?)FaK!%ZRjYSBQWI&1BZqKg98KO8b$^oCx$MD z&Ierg84%#vOi7*@ii<g$OfD`KFgZD~fuY^x#EF!Hyb?Zw%X%dmm-+NCuvjj0b5`TX zIF!(9l5vFBC?$bG@vM=Nq=B=WFiYlQH-*f}$_$KrnG+|RY?3mVq3kPV$m}yyf`LP1 zsz9fazpqb^k-~)wnVl0m7hf@vO8Ml!N5p@>!{kd$)0nuKA~;qyMldWt`gaGbOatp9 z*0>uwTr~}~3^fldnXH&Lu&?9#%y>Y&LbYM<0yzVB1uMqJ(5eFoE(bPnALH7<!`K+Z z*l@r=LbTyPf)B@m?gs0IJqs+E_wYHEF)z?;c)@*>#Xzg?fPaZ-f}g|JgH}wTmdqR2 z11wqJGKD(`pJG48e}advp^q^kLPGR{I72D(ga|Q~2Qp0m80r;d50o(P;C{g#P;;QX zd5>&kf;)p4V`D<#ho-*@Pxvh)xc@XWpW`=>Pq4dC!C1=ji6KMfSL1Vb(SR3hEC=EO z{AciAV|?GVzJae{9ixH%6#g0V76$Sg_`mS~;@-pe!0!VO8yn+8=7w+v31Oz1gaXb3 z5}b_&1`-m&6XZ6?G#*fG*dW0#Aj9~o`3N7w8_xHP2edb6tzkdK!|sq^$=GmUHS>Mu zhLFDwaRG53#2G9YukdpSuh0+Sb7T*YU@GD`u=)X`4a1y91KGxk1N#{G9PJ<2OW0j7 z&|6T#+VFw#0N;nu4~<`%7uY=b&Uk}=fh@x-Hr9U!teAc@);Gl6kZ%z$5O**z(0dT{ zk?~DK0oM+u0|q=y2ZHzT=kPHWaj#Hgtx0$w_?6)aS8YN<xWWdR#soh{19gQBst5Gl z8QK;0Dm+^~A@~aOk0uMI{RT2k>lpqlkP`^L&f1s|A;$WE^)=&T_Jml*N9+s+2A0e# z3?%p(ELkj=&v2h%S6KCm@g94Eje?EB{0rg}_!{;!*f{JBuywF2h+Ck2iu*P54*5Ic z3E>SA5~5Go8R8@C9@sh5F0g5s>v%&vfsgTkO=+wp>pi}P8Di`V^$!a8zp+*`l(61o zzrnZQ3)6?D-;8CfH{=#rFnwlBkYQ$c!oH1ti7Z12>kWPeOZHoQ6O=a?Xuo5<BI|fU zuVI58LjmIfxrSPWD#kZVFW3uY5A1F{!Ji@bL2p4Rdw}28@CR&6FPK+Yusi7RH6+M7 zCKwp7*jjOQ*c_N4zKe~qF*HGkjX^>n!9c5rYhj}f8-syhLl|R%H)F#AH)f{QOdBMa znbxozSlQ5(AR*ew!?i(&X$IE?ZKkV%2@=8%E0q}&L=s$IGBZp)!sTheU%(|H@I;u= z;|Y_5h^<0`#w#{ZLSSqZzuyqNL78b$f)2-l#S9yGm@HTumiq9p1~VNvuz}-%foj8n z2yTZ20|OndtzoPU31O@W%FG}+ZN|oT1uPE)8#YL-W;k#lLPF@k3?6321UIHNY>W*F X20B~^5)ABr?4G1~sHNpnZ*l_wOTmyG literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_2d6_states.bin.z b/client/resources/hardnested_tables/bitflip_1_2d6_states.bin.z deleted file mode 100644 index f8686dba6fe9851da2a7484b5352f4521b575ab0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 23650 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 QgLg{ufBS#-Y_;T>00#Gm#Q*>R diff --git a/client/resources/hardnested_tables/bitflip_1_328_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_328_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b01f02208ef4ca4c78fc6566fd6e0c556e11ab30 GIT binary patch literal 5424 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_328_states.bin.z b/client/resources/hardnested_tables/bitflip_1_328_states.bin.z deleted file mode 100644 index c8a8cf4a0..000000000 --- a/client/resources/hardnested_tables/bitflip_1_328_states.bin.z +++ /dev/null @@ -1 +0,0 @@ -xOu3io%VkLSMd9E bJ!HHK{| us~~ןO?y}\כ7t{G{s6~W.כ{vw?~>߻oϿ^珟ϝ8_uܿ?}/~]?|כ>'{߿>kO1W}|p?~==|kymo7ogߏߎ_??6ÿ?_;~o\??G??y/^yXopaߧ{tWMkQ|Xկ|G7___5~9_/ߟkϷ;/? /7?j?4[<ֽ{okOkoG7}g?W˿?o<?cϏv?:v|j?}OG_FwƯ??j񏎿vƯikۿz=}]?3n_}4^]V?O_V_/dU{uSƯn[wo]}߻u?????_?yyOkC1xwouw Ͽ7:coooo_uھ//ko;?7QW^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>} \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_1_388_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_388_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..b01f02208ef4ca4c78fc6566fd6e0c556e11ab30 GIT binary patch literal 5424 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_388_states.bin.z b/client/resources/hardnested_tables/bitflip_1_388_states.bin.z deleted file mode 100644 index c8a8cf4a0..000000000 --- a/client/resources/hardnested_tables/bitflip_1_388_states.bin.z +++ /dev/null @@ -1 +0,0 @@ -xOu3io%VkLSMd9E bJ!HHK{| us~~ןO?y}\כ7t{G{s6~W.כ{vw?~>߻oϿ^珟ϝ8_uܿ?}/~]?|כ>'{߿>kO1W}|p?~==|kymo7ogߏߎ_??6ÿ?_;~o\??G??y/^yXopaߧ{tWMkQ|Xկ|G7___5~9_/ߟkϷ;/? /7?j?4[<ֽ{okOkoG7}g?W˿?o<?cϏv?:v|j?}OG_FwƯ??j񏎿vƯikۿz=}]?3n_}4^]V?O_V_/dU{uSƯn[wo]}߻u?????_?yyOkC1xwouw Ͽ7:coooo_uھ//ko;?7QW^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>;5z[g?j?߿?{G{s6~Wߚ?O?﷼6~OϮ&~mh<_'g?[nw~p:?Y]/ fWOoi]Yvu2~g;s??[?oOs57777_o/?z{mƯmkM]_$I$I$]W^#NQ??vtu֟o㽿9_+o?o?O?_??[Y_g_o_}4^~;~?8?__.,U?J:w?Q??o?????_?97?]i׶{|/I$I$I.+~~|~_Nͨ֟o;:o7_篍?O?/????o-篍믷w_>/uV?O_V_/dU{uSƯn[wo]}߻\O???o[?/??__כnϮ_kۇ=ZSGח$I$I$Irq?>/f_oϷG]}x[s??O???_~7_{bįmGo_ǟO/a)W-7ϮNlO{O?o?O?oO__7~g_oo?K$I$I$}_3꯷ǎ.Mwt?kwEg?O????/??=o~?k]1k׶ˣu]~vOo?_EjgW_'n|'=G??o[?O?OO?GWW_/g믷?ma|Ͽԟo%I$I$I{u܏>icG?{Q_m&{;:"O???מ{v5kG??y?w__7jK_{7?o?_[??O[z_k6~m|_kϷ$I$I$I:wqe׌mv=p ~|y]kG???kۿz=}?z{Wh|]ן<meu//O_W?evwfZUߟm?[o/??OU/O}m>5wt}I$I$I$wy^{8}2wkF|Ϟ~[<mg5??oyg=m>]+Mxy4O~u???_~'2~u;W*dލ϶Dw?[??Okoooo_uv_>6ךm;$I$I$I<G>} \ No newline at end of file diff --git a/client/resources/hardnested_tables/bitflip_1_3a0_states.bin.bz2 b/client/resources/hardnested_tables/bitflip_1_3a0_states.bin.bz2 new file mode 100644 index 0000000000000000000000000000000000000000..fe85775bfe7cdafa269bb9b1c2202af269e763c7 GIT binary patch literal 1680 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 literal 0 HcmV?d00001 diff --git a/client/resources/hardnested_tables/bitflip_1_3a0_states.bin.z b/client/resources/hardnested_tables/bitflip_1_3a0_states.bin.z deleted file mode 100644 index 479bacb03..000000000 --- a/client/resources/hardnested_tables/bitflip_1_3a0_states.bin.z +++ /dev/null @@ -1 +0,0 @@ -xMnFaWtщ|5o}4Lg ObOjzߟ1$_K߿rK->ɷޥ/~}K?kxzI,t_~[?~O}־}~;nnr|_O?鷷>ޯ_OCe9w}{}zǏa<㯿KŷwKIߧn;7I?鏗O/???O/O{??O_o/_?w_w_w?_?_?oO_w_Ow_?oO_w_OwO_o/_?w_w_w?_??O_o/_?w_w_w?_??_w?_??O_o/_?w_w_Ow_?oO_wO_o/_?w_w_w?_???oO_w_Ow_w?_??O_o/_?w_w__Ow_?oO_w?oO_w_Ow_w?_??O_o/_?w_w__Ow_?oO_wO_o/_?w_w_w?_??OO_ӿO??O??ӿ/?{g{gO??o??_'{???ӿ/???oO_w_Ow_??_oO????O/o?o??Oӿo????/?o?Oӿ/?O??w?_??O_o/_?w_w__o/_?w_w_w?_??O_o/_?w_w_w?_??OoO_w_Ow_?oO_w_Ow_?_oO????O/o?o??Oӿo????/?o?Oӿ/?O???_oO????O/o?o??Oӿo????/?o?Oӿ/?O?????_'{???ӿ/???OO_ӿO??O??ӿ/?{g{gO??o??_'{???ӿ/???OO_ӿO??O??ӿ/?{g{gO??oOw_?oO_w_Ow_?oO_w_O_w_Ow_?o???O/o?o??Oӿo????/?o?Oӿ/?O???_oO?_??O_o/_?w_w_w?_'{???ӿ/???OO_ӿO??O??ӿ/?{g{gO??o??????/?o?Oӿ/?O???_oO????O/o?o??Oӿow_w_w?_??O_o/_?_w_Ow_?oOw_w_w?_??O_o/_?_w_Ow_?oO_??O_o/_?w_w_w?w_?oO_w_O_w_w?_??O_o/_?w_w_Ow_?oO_??O_o/_?w_w_w?_w_w?_??O_o/_?w_w_Ow_?oO_??O_o/_?w_w_w?w_?oO_w_O_w_w?_??O_o/_?w_w_Ow_?oO_??O_o/_?w_w_w?w_?oO_w_O_w_Ow_?oO_??O_o/_?w_w_w?w_?oO_w_Ow_w?_??O_o/_?w_w_Ow_?oO_w_Ow_?oO_??O_o/_?w_w_w?__?oO_w_Ow_w?_??O_o/_?w_w_Ow_?oO_w_?oO_w_Ow_?oO_w_Ow[ \ No newline at end of file diff --git a/client/src/cmdhfmfhard.c b/client/src/cmdhfmfhard.c index ade910002..15eb15ab0 100644 --- a/client/src/cmdhfmfhard.c +++ b/client/src/cmdhfmfhard.c @@ -23,6 +23,7 @@ #include <locale.h> #include <math.h> #include <time.h> // MingW +#include <bzlib.h> #include "commonutil.h" // ARRAYLEN #include "comms.h" @@ -35,7 +36,6 @@ #include "hardnested_bruteforce.h" #include "hardnested_bf_core.h" #include "hardnested_bitarray_core.h" -#include "zlib.h" #include "fileutils.h" #define NUM_CHECK_BITFLIPS_THREADS (num_CPUs()) @@ -44,7 +44,7 @@ #define IGNORE_BITFLIP_THRESHOLD 0.99 // ignore bitflip arrays which have nearly only valid states #define STATE_FILES_DIRECTORY "hardnested_tables/" -#define STATE_FILE_TEMPLATE "bitflip_%d_%03" PRIx16 "_states.bin.z" +#define STATE_FILE_TEMPLATE "bitflip_%d_%03" PRIx16 "_states.bin.bz2" #define DEBUG_KEY_ELIMINATION // #define DEBUG_REDUCTION @@ -207,32 +207,23 @@ static int compare_count_bitflip_bitarrays(const void *b1, const void *b2) { } -static voidpf inflate_malloc(voidpf opaque, uInt items, uInt size) { - return calloc(items * size, sizeof(uint8_t)); -} - - -static void inflate_free(voidpf opaque, voidpf address) { - free(address); -} - #define OUTPUT_BUFFER_LEN 80 #define INPUT_BUFFER_LEN 80 //---------------------------------------------------------------------------- // Initialize decompression of the respective bitflip_bitarray stream //---------------------------------------------------------------------------- -static void init_inflate(z_streamp compressed_stream, uint8_t *input_buffer, uint32_t insize, uint8_t *output_buffer, uint32_t outsize) { +static void init_bunzip2(bz_stream *compressed_stream, char *input_buffer, uint32_t insize, char *output_buffer, uint32_t outsize) { - // initialize z_stream structure for inflate: + // initialize bz_stream structure for bunzip2: compressed_stream->next_in = input_buffer; compressed_stream->avail_in = insize; compressed_stream->next_out = output_buffer; compressed_stream->avail_out = outsize; - compressed_stream->zalloc = &inflate_malloc; - compressed_stream->zfree = &inflate_free; + compressed_stream->bzalloc = NULL; + compressed_stream->bzfree = NULL; - inflateInit2(compressed_stream, 0); + BZ2_bzDecompressInit(compressed_stream, 0, 0); } @@ -242,7 +233,7 @@ static void init_bitflip_bitarrays(void) { uint8_t line = 0; #endif - z_stream compressed_stream; + bz_stream compressed_stream; char state_files_path[strlen(get_my_executable_directory()) + strlen(STATE_FILES_DIRECTORY) + strlen(STATE_FILE_TEMPLATE) + 1]; char state_file_name[strlen(STATE_FILE_TEMPLATE) + 1]; @@ -276,36 +267,36 @@ static void init_bitflip_bitarrays(void) { } uint32_t filesize = (uint32_t)fsize; rewind(statesfile); - uint8_t input_buffer[filesize]; + char input_buffer[filesize]; size_t bytesread = fread(input_buffer, 1, filesize, statesfile); if (bytesread != filesize) { PrintAndLogEx(ERR, "File read error with %s. Aborting...\n", state_file_name); fclose(statesfile); - //inflateEnd(&compressed_stream); + //BZ2_bzDecompressEnd(&compressed_stream); exit(5); } fclose(statesfile); uint32_t count = 0; - init_inflate(&compressed_stream, input_buffer, filesize, (uint8_t *)&count, sizeof(count)); - int res = inflate(&compressed_stream, Z_SYNC_FLUSH); - if (res != Z_OK) { - PrintAndLogEx(ERR, "Inflate error. Aborting...\n"); - inflateEnd(&compressed_stream); + init_bunzip2(&compressed_stream, input_buffer, filesize, (char *)&count, sizeof(count)); + int res = BZ2_bzDecompress(&compressed_stream); + if (res != BZ_OK) { + PrintAndLogEx(ERR, "Bunzip2 error. Aborting...\n"); + BZ2_bzDecompressEnd(&compressed_stream); exit(4); } if ((float)count / (1 << 24) < IGNORE_BITFLIP_THRESHOLD) { uint32_t *bitset = (uint32_t *)malloc_bitarray(sizeof(uint32_t) * (1 << 19)); if (bitset == NULL) { PrintAndLogEx(ERR, "Out of memory error in init_bitflip_statelists(). Aborting...\n"); - inflateEnd(&compressed_stream); + BZ2_bzDecompressEnd(&compressed_stream); exit(4); } - compressed_stream.next_out = (uint8_t *)bitset; + compressed_stream.next_out = (char *)bitset; compressed_stream.avail_out = sizeof(uint32_t) * (1 << 19); - res = inflate(&compressed_stream, Z_SYNC_FLUSH); - if (res != Z_OK && res != Z_STREAM_END) { - PrintAndLogEx(ERR, "Inflate error. Aborting...\n"); - inflateEnd(&compressed_stream); + res = BZ2_bzDecompress(&compressed_stream); + if (res != BZ_OK && res != BZ_STREAM_END) { + PrintAndLogEx(ERR, "Bunzip2 error. Aborting...\n"); + BZ2_bzDecompressEnd(&compressed_stream); exit(4); } effective_bitflip[odd_even][num_effective_bitflips[odd_even]++] = bitflip; @@ -320,7 +311,7 @@ static void init_bitflip_bitarrays(void) { } #endif } - inflateEnd(&compressed_stream); + BZ2_bzDecompressEnd(&compressed_stream); } } effective_bitflip[odd_even][num_effective_bitflips[odd_even]] = 0x400; // EndOfList marker diff --git a/doc/md/Development/Maintainers.md b/doc/md/Development/Maintainers.md index 293fd3999..66c736235 100644 --- a/doc/md/Development/Maintainers.md +++ b/doc/md/Development/Maintainers.md @@ -65,7 +65,6 @@ It's also possible to skip parts even if libraries are present in the compilatio * `make client SKIPLUASYSTEM=1` to skip system Lua lib even if liblua5.2 is present, use embedded Lua lib instead * `make client SKIPJANSSONSYSTEM=1` to skip system Jansson lib even if libjansson is present, use embedded Jansson lib instead * `make client SKIPWHEREAMISYSTEM=1` to skip system Whereami lib even if libwhereami is present, use embedded whereami lib instead -* `make client SKIPZLIBSYSTEM=1` to skip system Zlib even if libz is present, use embedded Zlib instead If you're cross-compiling, these ones might be useful: diff --git a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md index 8cb6b47ff..578bb429d 100644 --- a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md @@ -25,7 +25,7 @@ Install the requirements ```sh sudo apt-get install --no-install-recommends git ca-certificates build-essential pkg-config \ -libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbluetooth-dev +libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev libbz2-dev libbluetooth-dev ``` If you don't need the native Bluetooth support in the client, you can skip the installation of `libbluetooth-dev`. diff --git a/doc/md/Installation_Instructions/Windows-Installation-Instructions.md b/doc/md/Installation_Instructions/Windows-Installation-Instructions.md index 9d94490f5..2741850d5 100644 --- a/doc/md/Installation_Instructions/Windows-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Windows-Installation-Instructions.md @@ -77,7 +77,7 @@ Enter WSL prompt (`wsl`) and from there, follow the [Linux Installation Instruct ```sh sudo apt-get update sudo apt-get install --no-install-recommends git ca-certificates build-essential pkg-config \ -libreadline-dev gcc-arm-none-eabi libnewlib-dev qtbase5-dev +libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev qtbase5-dev ``` If you don't need the graphical components of the Proxmark3 client, you can skip the installation of `qtbase5-dev`. diff --git a/tools/pm3_tests.sh b/tools/pm3_tests.sh index 07e777fae..00af93ba5 100755 --- a/tools/pm3_tests.sh +++ b/tools/pm3_tests.sh @@ -220,7 +220,7 @@ echo "" while true; do if $TESTALL || $TESTCOMMON; then echo -e "\n${C_BLUE}Testing common:${C_NC}" - if ! CheckFileExist "hardnested tables exists" "./client/resources/hardnested_tables/bitflip_0_001_states.bin.z"; then break; fi + if ! CheckFileExist "hardnested tables exists" "./client/resources/hardnested_tables/bitflip_0_001_states.bin.bz2"; then break; fi if ! CheckFileExist "simmodule fw file exists" "./tools/simmodule/sim011.bin"; then break; fi echo -e "\n${C_BLUE}Testing tools:${C_NC}" if ! CheckExecute "xorcheck test" "tools/xorcheck.py 04 00 80 64 ba" "final LRC XOR byte value: 5A"; then break; fi From fa0b658436dfa216182e1e9a5394603f7f6d53c1 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 8 Jun 2020 02:45:09 +0200 Subject: [PATCH 328/527] Remove zlib entirely, no need for fpga_compress anymore to compress hardnested tables, now to be compressed with bzip2 --- CHANGELOG.md | 5 +- common/zlib/ChangeLog | 1515 ----------- common/zlib/FAQ | 368 --- common/zlib/Makefile | 10 - common/zlib/README | 115 - common/zlib/README_proxmark3 | 63 - common/zlib/adler32.c | 187 -- common/zlib/deflate.c | 2257 ----------------- common/zlib/deflate.h | 350 --- common/zlib/inffast.c | 315 --- common/zlib/inffast.h | 12 - common/zlib/inffixed.h | 95 - common/zlib/inflate.c | 1561 ------------ common/zlib/inflate.h | 130 - common/zlib/inftrees.c | 306 --- common/zlib/inftrees.h | 63 - common/zlib/trees.c | 1222 --------- common/zlib/trees.h | 129 - common/zlib/zconf.h | 535 ---- common/zlib/zlib.h | 1924 -------------- common/zlib/zutil.c | 344 --- common/zlib/zutil.h | 272 -- .../Linux-Installation-Instructions.md | 6 +- tools/fpga_compress/fpga_compress.c | 42 +- 24 files changed, 15 insertions(+), 11811 deletions(-) delete mode 100644 common/zlib/ChangeLog delete mode 100644 common/zlib/FAQ delete mode 100644 common/zlib/Makefile delete mode 100644 common/zlib/README delete mode 100644 common/zlib/README_proxmark3 delete mode 100644 common/zlib/adler32.c delete mode 100644 common/zlib/deflate.c delete mode 100644 common/zlib/deflate.h delete mode 100644 common/zlib/inffast.c delete mode 100644 common/zlib/inffast.h delete mode 100644 common/zlib/inffixed.h delete mode 100644 common/zlib/inflate.c delete mode 100644 common/zlib/inflate.h delete mode 100644 common/zlib/inftrees.c delete mode 100644 common/zlib/inftrees.h delete mode 100644 common/zlib/trees.c delete mode 100644 common/zlib/trees.h delete mode 100644 common/zlib/zconf.h delete mode 100644 common/zlib/zlib.h delete mode 100644 common/zlib/zutil.c delete mode 100644 common/zlib/zutil.h diff --git a/CHANGELOG.md b/CHANGELOG.md index f0f70916b..fe1ee7560 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,8 +3,9 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] - - Change pushed some ARM source to compile with THUMB. Saves a lot of space of ARM flash memory @slurdge - - Change from using ZLIB compression of FPGA images in ARM to LZ4. 15%+ speedups when swapping between HF & LF now @slurdge + - Change use system Bzip2 library instead of Zlib for hardnested tables, tables are now 7x smaller (@doegox) + - Change pushed some ARM source to compile with THUMB. Saves a lot of space of ARM flash memory (@slurdge) + - Change from using ZLIB compression of FPGA images in ARM to LZ4. 15%+ speedups when swapping between HF & LF now (@slurdge) - Fix `emv scan -w` - hash mismatch, solution similar to below (@iceman1001) - Fix 'emv roca' - hash mismatch, merged from offical repo (@pwpiwi) - Fix 'lf ti demod' - now calculates correct crc (@iceman1001) diff --git a/common/zlib/ChangeLog b/common/zlib/ChangeLog deleted file mode 100644 index 30199a65a..000000000 --- a/common/zlib/ChangeLog +++ /dev/null @@ -1,1515 +0,0 @@ - - ChangeLog file for zlib - -Changes in 1.2.11 (15 Jan 2017) -- Fix deflate stored bug when pulling last block from window -- Permit immediate deflateParams changes before any deflate input - -Changes in 1.2.10 (2 Jan 2017) -- Avoid warnings on snprintf() return value -- Fix bug in deflate_stored() for zero-length input -- Fix bug in gzwrite.c that produced corrupt gzip files -- Remove files to be installed before copying them in Makefile.in -- Add warnings when compiling with assembler code - -Changes in 1.2.9 (31 Dec 2016) -- Fix contrib/minizip to permit unzipping with desktop API [Zouzou] -- Improve contrib/blast to return unused bytes -- Assure that gzoffset() is correct when appending -- Improve compress() and uncompress() to support large lengths -- Fix bug in test/example.c where error code not saved -- Remedy Coverity warning [Randers-Pehrson] -- Improve speed of gzprintf() in transparent mode -- Fix inflateInit2() bug when windowBits is 16 or 32 -- Change DEBUG macro to ZLIB_DEBUG -- Avoid uninitialized access by gzclose_w() -- Allow building zlib outside of the source directory -- Fix bug that accepted invalid zlib header when windowBits is zero -- Fix gzseek() problem on MinGW due to buggy _lseeki64 there -- Loop on write() calls in gzwrite.c in case of non-blocking I/O -- Add --warn (-w) option to ./configure for more compiler warnings -- Reject a window size of 256 bytes if not using the zlib wrapper -- Fix bug when level 0 used with Z_HUFFMAN or Z_RLE -- Add --debug (-d) option to ./configure to define ZLIB_DEBUG -- Fix bugs in creating a very large gzip header -- Add uncompress2() function, which returns the input size used -- Assure that deflateParams() will not switch functions mid-block -- Dramatically speed up deflation for level 0 (storing) -- Add gzfread(), duplicating the interface of fread() -- Add gzfwrite(), duplicating the interface of fwrite() -- Add deflateGetDictionary() function -- Use snprintf() for later versions of Microsoft C -- Fix *Init macros to use z_ prefix when requested -- Replace as400 with os400 for OS/400 support [Monnerat] -- Add crc32_z() and adler32_z() functions with size_t lengths -- Update Visual Studio project files [AraHaan] - -Changes in 1.2.8 (28 Apr 2013) -- Update contrib/minizip/iowin32.c for Windows RT [Vollant] -- Do not force Z_CONST for C++ -- Clean up contrib/vstudio [Roß] -- Correct spelling error in zlib.h -- Fix mixed line endings in contrib/vstudio - -Changes in 1.2.7.3 (13 Apr 2013) -- Fix version numbers and DLL names in contrib/vstudio/*/zlib.rc - -Changes in 1.2.7.2 (13 Apr 2013) -- Change check for a four-byte type back to hexadecimal -- Fix typo in win32/Makefile.msc -- Add casts in gzwrite.c for pointer differences - -Changes in 1.2.7.1 (24 Mar 2013) -- Replace use of unsafe string functions with snprintf if available -- Avoid including stddef.h on Windows for Z_SOLO compile [Niessink] -- Fix gzgetc undefine when Z_PREFIX set [Turk] -- Eliminate use of mktemp in Makefile (not always available) -- Fix bug in 'F' mode for gzopen() -- Add inflateGetDictionary() function -- Correct comment in deflate.h -- Use _snprintf for snprintf in Microsoft C -- On Darwin, only use /usr/bin/libtool if libtool is not Apple -- Delete "--version" file if created by "ar --version" [Richard G.] -- Fix configure check for veracity of compiler error return codes -- Fix CMake compilation of static lib for MSVC2010 x64 -- Remove unused variable in infback9.c -- Fix argument checks in gzlog_compress() and gzlog_write() -- Clean up the usage of z_const and respect const usage within zlib -- Clean up examples/gzlog.[ch] comparisons of different types -- Avoid shift equal to bits in type (caused endless loop) -- Fix uninitialized value bug in gzputc() introduced by const patches -- Fix memory allocation error in examples/zran.c [Nor] -- Fix bug where gzopen(), gzclose() would write an empty file -- Fix bug in gzclose() when gzwrite() runs out of memory -- Check for input buffer malloc failure in examples/gzappend.c -- Add note to contrib/blast to use binary mode in stdio -- Fix comparisons of differently signed integers in contrib/blast -- Check for invalid code length codes in contrib/puff -- Fix serious but very rare decompression bug in inftrees.c -- Update inflateBack() comments, since inflate() can be faster -- Use underscored I/O function names for WINAPI_FAMILY -- Add _tr_flush_bits to the external symbols prefixed by --zprefix -- Add contrib/vstudio/vc10 pre-build step for static only -- Quote --version-script argument in CMakeLists.txt -- Don't specify --version-script on Apple platforms in CMakeLists.txt -- Fix casting error in contrib/testzlib/testzlib.c -- Fix types in contrib/minizip to match result of get_crc_table() -- Simplify contrib/vstudio/vc10 with 'd' suffix -- Add TOP support to win32/Makefile.msc -- Suport i686 and amd64 assembler builds in CMakeLists.txt -- Fix typos in the use of _LARGEFILE64_SOURCE in zconf.h -- Add vc11 and vc12 build files to contrib/vstudio -- Add gzvprintf() as an undocumented function in zlib -- Fix configure for Sun shell -- Remove runtime check in configure for four-byte integer type -- Add casts and consts to ease user conversion to C++ -- Add man pages for minizip and miniunzip -- In Makefile uninstall, don't rm if preceding cd fails -- Do not return Z_BUF_ERROR if deflateParam() has nothing to write - -Changes in 1.2.7 (2 May 2012) -- Replace use of memmove() with a simple copy for portability -- Test for existence of strerror -- Restore gzgetc_ for backward compatibility with 1.2.6 -- Fix build with non-GNU make on Solaris -- Require gcc 4.0 or later on Mac OS X to use the hidden attribute -- Include unistd.h for Watcom C -- Use __WATCOMC__ instead of __WATCOM__ -- Do not use the visibility attribute if NO_VIZ defined -- Improve the detection of no hidden visibility attribute -- Avoid using __int64 for gcc or solo compilation -- Cast to char * in gzprintf to avoid warnings [Zinser] -- Fix make_vms.com for VAX [Zinser] -- Don't use library or built-in byte swaps -- Simplify test and use of gcc hidden attribute -- Fix bug in gzclose_w() when gzwrite() fails to allocate memory -- Add "x" (O_EXCL) and "e" (O_CLOEXEC) modes support to gzopen() -- Fix bug in test/minigzip.c for configure --solo -- Fix contrib/vstudio project link errors [Mohanathas] -- Add ability to choose the builder in make_vms.com [Schweda] -- Add DESTDIR support to mingw32 win32/Makefile.gcc -- Fix comments in win32/Makefile.gcc for proper usage -- Allow overriding the default install locations for cmake -- Generate and install the pkg-config file with cmake -- Build both a static and a shared version of zlib with cmake -- Include version symbols for cmake builds -- If using cmake with MSVC, add the source directory to the includes -- Remove unneeded EXTRA_CFLAGS from win32/Makefile.gcc [Truta] -- Move obsolete emx makefile to old [Truta] -- Allow the use of -Wundef when compiling or using zlib -- Avoid the use of the -u option with mktemp -- Improve inflate() documentation on the use of Z_FINISH -- Recognize clang as gcc -- Add gzopen_w() in Windows for wide character path names -- Rename zconf.h in CMakeLists.txt to move it out of the way -- Add source directory in CMakeLists.txt for building examples -- Look in build directory for zlib.pc in CMakeLists.txt -- Remove gzflags from zlibvc.def in vc9 and vc10 -- Fix contrib/minizip compilation in the MinGW environment -- Update ./configure for Solaris, support --64 [Mooney] -- Remove -R. from Solaris shared build (possible security issue) -- Avoid race condition for parallel make (-j) running example -- Fix type mismatch between get_crc_table() and crc_table -- Fix parsing of version with "-" in CMakeLists.txt [Snider, Ziegler] -- Fix the path to zlib.map in CMakeLists.txt -- Force the native libtool in Mac OS X to avoid GNU libtool [Beebe] -- Add instructions to win32/Makefile.gcc for shared install [Torri] - -Changes in 1.2.6.1 (12 Feb 2012) -- Avoid the use of the Objective-C reserved name "id" -- Include io.h in gzguts.h for Microsoft compilers -- Fix problem with ./configure --prefix and gzgetc macro -- Include gz_header definition when compiling zlib solo -- Put gzflags() functionality back in zutil.c -- Avoid library header include in crc32.c for Z_SOLO -- Use name in GCC_CLASSIC as C compiler for coverage testing, if set -- Minor cleanup in contrib/minizip/zip.c [Vollant] -- Update make_vms.com [Zinser] -- Remove unnecessary gzgetc_ function -- Use optimized byte swap operations for Microsoft and GNU [Snyder] -- Fix minor typo in zlib.h comments [Rzesniowiecki] - -Changes in 1.2.6 (29 Jan 2012) -- Update the Pascal interface in contrib/pascal -- Fix function numbers for gzgetc_ in zlibvc.def files -- Fix configure.ac for contrib/minizip [Schiffer] -- Fix large-entry detection in minizip on 64-bit systems [Schiffer] -- Have ./configure use the compiler return code for error indication -- Fix CMakeLists.txt for cross compilation [McClure] -- Fix contrib/minizip/zip.c for 64-bit architectures [Dalsnes] -- Fix compilation of contrib/minizip on FreeBSD [Marquez] -- Correct suggested usages in win32/Makefile.msc [Shachar, Horvath] -- Include io.h for Turbo C / Borland C on all platforms [Truta] -- Make version explicit in contrib/minizip/configure.ac [Bosmans] -- Avoid warning for no encryption in contrib/minizip/zip.c [Vollant] -- Minor cleanup up contrib/minizip/unzip.c [Vollant] -- Fix bug when compiling minizip with C++ [Vollant] -- Protect for long name and extra fields in contrib/minizip [Vollant] -- Avoid some warnings in contrib/minizip [Vollant] -- Add -I../.. -L../.. to CFLAGS for minizip and miniunzip -- Add missing libs to minizip linker command -- Add support for VPATH builds in contrib/minizip -- Add an --enable-demos option to contrib/minizip/configure -- Add the generation of configure.log by ./configure -- Exit when required parameters not provided to win32/Makefile.gcc -- Have gzputc return the character written instead of the argument -- Use the -m option on ldconfig for BSD systems [Tobias] -- Correct in zlib.map when deflateResetKeep was added - -Changes in 1.2.5.3 (15 Jan 2012) -- Restore gzgetc function for binary compatibility -- Do not use _lseeki64 under Borland C++ [Truta] -- Update win32/Makefile.msc to build test/*.c [Truta] -- Remove old/visualc6 given CMakefile and other alternatives -- Update AS400 build files and documentation [Monnerat] -- Update win32/Makefile.gcc to build test/*.c [Truta] -- Permit stronger flushes after Z_BLOCK flushes -- Avoid extraneous empty blocks when doing empty flushes -- Permit Z_NULL arguments to deflatePending -- Allow deflatePrime() to insert bits in the middle of a stream -- Remove second empty static block for Z_PARTIAL_FLUSH -- Write out all of the available bits when using Z_BLOCK -- Insert the first two strings in the hash table after a flush - -Changes in 1.2.5.2 (17 Dec 2011) -- fix ld error: unable to find version dependency 'ZLIB_1.2.5' -- use relative symlinks for shared libs -- Avoid searching past window for Z_RLE strategy -- Assure that high-water mark initialization is always applied in deflate -- Add assertions to fill_window() in deflate.c to match comments -- Update python link in README -- Correct spelling error in gzread.c -- Fix bug in gzgets() for a concatenated empty gzip stream -- Correct error in comment for gz_make() -- Change gzread() and related to ignore junk after gzip streams -- Allow gzread() and related to continue after gzclearerr() -- Allow gzrewind() and gzseek() after a premature end-of-file -- Simplify gzseek() now that raw after gzip is ignored -- Change gzgetc() to a macro for speed (~40% speedup in testing) -- Fix gzclose() to return the actual error last encountered -- Always add large file support for windows -- Include zconf.h for windows large file support -- Include zconf.h.cmakein for windows large file support -- Update zconf.h.cmakein on make distclean -- Merge vestigial vsnprintf determination from zutil.h to gzguts.h -- Clarify how gzopen() appends in zlib.h comments -- Correct documentation of gzdirect() since junk at end now ignored -- Add a transparent write mode to gzopen() when 'T' is in the mode -- Update python link in zlib man page -- Get inffixed.h and MAKEFIXED result to match -- Add a ./config --solo option to make zlib subset with no library use -- Add undocumented inflateResetKeep() function for CAB file decoding -- Add --cover option to ./configure for gcc coverage testing -- Add #define ZLIB_CONST option to use const in the z_stream interface -- Add comment to gzdopen() in zlib.h to use dup() when using fileno() -- Note behavior of uncompress() to provide as much data as it can -- Add files in contrib/minizip to aid in building libminizip -- Split off AR options in Makefile.in and configure -- Change ON macro to Z_ARG to avoid application conflicts -- Facilitate compilation with Borland C++ for pragmas and vsnprintf -- Include io.h for Turbo C / Borland C++ -- Move example.c and minigzip.c to test/ -- Simplify incomplete code table filling in inflate_table() -- Remove code from inflate.c and infback.c that is impossible to execute -- Test the inflate code with full coverage -- Allow deflateSetDictionary, inflateSetDictionary at any time (in raw) -- Add deflateResetKeep and fix inflateResetKeep to retain dictionary -- Fix gzwrite.c to accommodate reduced memory zlib compilation -- Have inflate() with Z_FINISH avoid the allocation of a window -- Do not set strm->adler when doing raw inflate -- Fix gzeof() to behave just like feof() when read is not past end of file -- Fix bug in gzread.c when end-of-file is reached -- Avoid use of Z_BUF_ERROR in gz* functions except for premature EOF -- Document gzread() capability to read concurrently written files -- Remove hard-coding of resource compiler in CMakeLists.txt [Blammo] - -Changes in 1.2.5.1 (10 Sep 2011) -- Update FAQ entry on shared builds (#13) -- Avoid symbolic argument to chmod in Makefile.in -- Fix bug and add consts in contrib/puff [Oberhumer] -- Update contrib/puff/zeros.raw test file to have all block types -- Add full coverage test for puff in contrib/puff/Makefile -- Fix static-only-build install in Makefile.in -- Fix bug in unzGetCurrentFileInfo() in contrib/minizip [Kuno] -- Add libz.a dependency to shared in Makefile.in for parallel builds -- Spell out "number" (instead of "nb") in zlib.h for total_in, total_out -- Replace $(...) with `...` in configure for non-bash sh [Bowler] -- Add darwin* to Darwin* and solaris* to SunOS\ 5* in configure [Groffen] -- Add solaris* to Linux* in configure to allow gcc use [Groffen] -- Add *bsd* to Linux* case in configure [Bar-Lev] -- Add inffast.obj to dependencies in win32/Makefile.msc -- Correct spelling error in deflate.h [Kohler] -- Change libzdll.a again to libz.dll.a (!) in win32/Makefile.gcc -- Add test to configure for GNU C looking for gcc in output of $cc -v -- Add zlib.pc generation to win32/Makefile.gcc [Weigelt] -- Fix bug in zlib.h for _FILE_OFFSET_BITS set and _LARGEFILE64_SOURCE not -- Add comment in zlib.h that adler32_combine with len2 < 0 makes no sense -- Make NO_DIVIDE option in adler32.c much faster (thanks to John Reiser) -- Make stronger test in zconf.h to include unistd.h for LFS -- Apply Darwin patches for 64-bit file offsets to contrib/minizip [Slack] -- Fix zlib.h LFS support when Z_PREFIX used -- Add updated as400 support (removed from old) [Monnerat] -- Avoid deflate sensitivity to volatile input data -- Avoid division in adler32_combine for NO_DIVIDE -- Clarify the use of Z_FINISH with deflateBound() amount of space -- Set binary for output file in puff.c -- Use u4 type for crc_table to avoid conversion warnings -- Apply casts in zlib.h to avoid conversion warnings -- Add OF to prototypes for adler32_combine_ and crc32_combine_ [Miller] -- Improve inflateSync() documentation to note indeterminancy -- Add deflatePending() function to return the amount of pending output -- Correct the spelling of "specification" in FAQ [Randers-Pehrson] -- Add a check in configure for stdarg.h, use for gzprintf() -- Check that pointers fit in ints when gzprint() compiled old style -- Add dummy name before $(SHAREDLIBV) in Makefile [Bar-Lev, Bowler] -- Delete line in configure that adds -L. libz.a to LDFLAGS [Weigelt] -- Add debug records in assmebler code [Londer] -- Update RFC references to use http://tools.ietf.org/html/... [Li] -- Add --archs option, use of libtool to configure for Mac OS X [Borstel] - -Changes in 1.2.5 (19 Apr 2010) -- Disable visibility attribute in win32/Makefile.gcc [Bar-Lev] -- Default to libdir as sharedlibdir in configure [Nieder] -- Update copyright dates on modified source files -- Update trees.c to be able to generate modified trees.h -- Exit configure for MinGW, suggesting win32/Makefile.gcc -- Check for NULL path in gz_open [Homurlu] - -Changes in 1.2.4.5 (18 Apr 2010) -- Set sharedlibdir in configure [Torok] -- Set LDFLAGS in Makefile.in [Bar-Lev] -- Avoid mkdir objs race condition in Makefile.in [Bowler] -- Add ZLIB_INTERNAL in front of internal inter-module functions and arrays -- Define ZLIB_INTERNAL to hide internal functions and arrays for GNU C -- Don't use hidden attribute when it is a warning generator (e.g. Solaris) - -Changes in 1.2.4.4 (18 Apr 2010) -- Fix CROSS_PREFIX executable testing, CHOST extract, mingw* [Torok] -- Undefine _LARGEFILE64_SOURCE in zconf.h if it is zero, but not if empty -- Try to use bash or ksh regardless of functionality of /bin/sh -- Fix configure incompatibility with NetBSD sh -- Remove attempt to run under bash or ksh since have better NetBSD fix -- Fix win32/Makefile.gcc for MinGW [Bar-Lev] -- Add diagnostic messages when using CROSS_PREFIX in configure -- Added --sharedlibdir option to configure [Weigelt] -- Use hidden visibility attribute when available [Frysinger] - -Changes in 1.2.4.3 (10 Apr 2010) -- Only use CROSS_PREFIX in configure for ar and ranlib if they exist -- Use CROSS_PREFIX for nm [Bar-Lev] -- Assume _LARGEFILE64_SOURCE defined is equivalent to true -- Avoid use of undefined symbols in #if with && and || -- Make *64 prototypes in gzguts.h consistent with functions -- Add -shared load option for MinGW in configure [Bowler] -- Move z_off64_t to public interface, use instead of off64_t -- Remove ! from shell test in configure (not portable to Solaris) -- Change +0 macro tests to -0 for possibly increased portability - -Changes in 1.2.4.2 (9 Apr 2010) -- Add consistent carriage returns to readme.txt's in masmx86 and masmx64 -- Really provide prototypes for *64 functions when building without LFS -- Only define unlink() in minigzip.c if unistd.h not included -- Update README to point to contrib/vstudio project files -- Move projects/vc6 to old/ and remove projects/ -- Include stdlib.h in minigzip.c for setmode() definition under WinCE -- Clean up assembler builds in win32/Makefile.msc [Rowe] -- Include sys/types.h for Microsoft for off_t definition -- Fix memory leak on error in gz_open() -- Symbolize nm as $NM in configure [Weigelt] -- Use TEST_LDSHARED instead of LDSHARED to link test programs [Weigelt] -- Add +0 to _FILE_OFFSET_BITS and _LFS64_LARGEFILE in case not defined -- Fix bug in gzeof() to take into account unused input data -- Avoid initialization of structures with variables in puff.c -- Updated win32/README-WIN32.txt [Rowe] - -Changes in 1.2.4.1 (28 Mar 2010) -- Remove the use of [a-z] constructs for sed in configure [gentoo 310225] -- Remove $(SHAREDLIB) from LIBS in Makefile.in [Creech] -- Restore "for debugging" comment on sprintf() in gzlib.c -- Remove fdopen for MVS from gzguts.h -- Put new README-WIN32.txt in win32 [Rowe] -- Add check for shell to configure and invoke another shell if needed -- Fix big fat stinking bug in gzseek() on uncompressed files -- Remove vestigial F_OPEN64 define in zutil.h -- Set and check the value of _LARGEFILE_SOURCE and _LARGEFILE64_SOURCE -- Avoid errors on non-LFS systems when applications define LFS macros -- Set EXE to ".exe" in configure for MINGW [Kahle] -- Match crc32() in crc32.c exactly to the prototype in zlib.h [Sherrill] -- Add prefix for cross-compilation in win32/makefile.gcc [Bar-Lev] -- Add DLL install in win32/makefile.gcc [Bar-Lev] -- Allow Linux* or linux* from uname in configure [Bar-Lev] -- Allow ldconfig to be redefined in configure and Makefile.in [Bar-Lev] -- Add cross-compilation prefixes to configure [Bar-Lev] -- Match type exactly in gz_load() invocation in gzread.c -- Match type exactly of zcalloc() in zutil.c to zlib.h alloc_func -- Provide prototypes for *64 functions when building zlib without LFS -- Don't use -lc when linking shared library on MinGW -- Remove errno.h check in configure and vestigial errno code in zutil.h - -Changes in 1.2.4 (14 Mar 2010) -- Fix VER3 extraction in configure for no fourth subversion -- Update zlib.3, add docs to Makefile.in to make .pdf out of it -- Add zlib.3.pdf to distribution -- Don't set error code in gzerror() if passed pointer is NULL -- Apply destination directory fixes to CMakeLists.txt [Lowman] -- Move #cmakedefine's to a new zconf.in.cmakein -- Restore zconf.h for builds that don't use configure or cmake -- Add distclean to dummy Makefile for convenience -- Update and improve INDEX, README, and FAQ -- Update CMakeLists.txt for the return of zconf.h [Lowman] -- Update contrib/vstudio/vc9 and vc10 [Vollant] -- Change libz.dll.a back to libzdll.a in win32/Makefile.gcc -- Apply license and readme changes to contrib/asm686 [Raiter] -- Check file name lengths and add -c option in minigzip.c [Li] -- Update contrib/amd64 and contrib/masmx86/ [Vollant] -- Avoid use of "eof" parameter in trees.c to not shadow library variable -- Update make_vms.com for removal of zlibdefs.h [Zinser] -- Update assembler code and vstudio projects in contrib [Vollant] -- Remove outdated assembler code contrib/masm686 and contrib/asm586 -- Remove old vc7 and vc8 from contrib/vstudio -- Update win32/Makefile.msc, add ZLIB_VER_SUBREVISION [Rowe] -- Fix memory leaks in gzclose_r() and gzclose_w(), file leak in gz_open() -- Add contrib/gcc_gvmat64 for longest_match and inflate_fast [Vollant] -- Remove *64 functions from win32/zlib.def (they're not 64-bit yet) -- Fix bug in void-returning vsprintf() case in gzwrite.c -- Fix name change from inflate.h in contrib/inflate86/inffas86.c -- Check if temporary file exists before removing in make_vms.com [Zinser] -- Fix make install and uninstall for --static option -- Fix usage of _MSC_VER in gzguts.h and zutil.h [Truta] -- Update readme.txt in contrib/masmx64 and masmx86 to assemble - -Changes in 1.2.3.9 (21 Feb 2010) -- Expunge gzio.c -- Move as400 build information to old -- Fix updates in contrib/minizip and contrib/vstudio -- Add const to vsnprintf test in configure to avoid warnings [Weigelt] -- Delete zconf.h (made by configure) [Weigelt] -- Change zconf.in.h to zconf.h.in per convention [Weigelt] -- Check for NULL buf in gzgets() -- Return empty string for gzgets() with len == 1 (like fgets()) -- Fix description of gzgets() in zlib.h for end-of-file, NULL return -- Update minizip to 1.1 [Vollant] -- Avoid MSVC loss of data warnings in gzread.c, gzwrite.c -- Note in zlib.h that gzerror() should be used to distinguish from EOF -- Remove use of snprintf() from gzlib.c -- Fix bug in gzseek() -- Update contrib/vstudio, adding vc9 and vc10 [Kuno, Vollant] -- Fix zconf.h generation in CMakeLists.txt [Lowman] -- Improve comments in zconf.h where modified by configure - -Changes in 1.2.3.8 (13 Feb 2010) -- Clean up text files (tabs, trailing whitespace, etc.) [Oberhumer] -- Use z_off64_t in gz_zero() and gz_skip() to match state->skip -- Avoid comparison problem when sizeof(int) == sizeof(z_off64_t) -- Revert to Makefile.in from 1.2.3.6 (live with the clutter) -- Fix missing error return in gzflush(), add zlib.h note -- Add *64 functions to zlib.map [Levin] -- Fix signed/unsigned comparison in gz_comp() -- Use SFLAGS when testing shared linking in configure -- Add --64 option to ./configure to use -m64 with gcc -- Fix ./configure --help to correctly name options -- Have make fail if a test fails [Levin] -- Avoid buffer overrun in contrib/masmx64/gvmat64.asm [Simpson] -- Remove assembler object files from contrib - -Changes in 1.2.3.7 (24 Jan 2010) -- Always gzopen() with O_LARGEFILE if available -- Fix gzdirect() to work immediately after gzopen() or gzdopen() -- Make gzdirect() more precise when the state changes while reading -- Improve zlib.h documentation in many places -- Catch memory allocation failure in gz_open() -- Complete close operation if seek forward in gzclose_w() fails -- Return Z_ERRNO from gzclose_r() if close() fails -- Return Z_STREAM_ERROR instead of EOF for gzclose() being passed NULL -- Return zero for gzwrite() errors to match zlib.h description -- Return -1 on gzputs() error to match zlib.h description -- Add zconf.in.h to allow recovery from configure modification [Weigelt] -- Fix static library permissions in Makefile.in [Weigelt] -- Avoid warnings in configure tests that hide functionality [Weigelt] -- Add *BSD and DragonFly to Linux case in configure [gentoo 123571] -- Change libzdll.a to libz.dll.a in win32/Makefile.gcc [gentoo 288212] -- Avoid access of uninitialized data for first inflateReset2 call [Gomes] -- Keep object files in subdirectories to reduce the clutter somewhat -- Remove default Makefile and zlibdefs.h, add dummy Makefile -- Add new external functions to Z_PREFIX, remove duplicates, z_z_ -> z_ -- Remove zlibdefs.h completely -- modify zconf.h instead - -Changes in 1.2.3.6 (17 Jan 2010) -- Avoid void * arithmetic in gzread.c and gzwrite.c -- Make compilers happier with const char * for gz_error message -- Avoid unused parameter warning in inflate.c -- Avoid signed-unsigned comparison warning in inflate.c -- Indent #pragma's for traditional C -- Fix usage of strwinerror() in glib.c, change to gz_strwinerror() -- Correct email address in configure for system options -- Update make_vms.com and add make_vms.com to contrib/minizip [Zinser] -- Update zlib.map [Brown] -- Fix Makefile.in for Solaris 10 make of example64 and minizip64 [Torok] -- Apply various fixes to CMakeLists.txt [Lowman] -- Add checks on len in gzread() and gzwrite() -- Add error message for no more room for gzungetc() -- Remove zlib version check in gzwrite() -- Defer compression of gzprintf() result until need to -- Use snprintf() in gzdopen() if available -- Remove USE_MMAP configuration determination (only used by minigzip) -- Remove examples/pigz.c (available separately) -- Update examples/gun.c to 1.6 - -Changes in 1.2.3.5 (8 Jan 2010) -- Add space after #if in zutil.h for some compilers -- Fix relatively harmless bug in deflate_fast() [Exarevsky] -- Fix same problem in deflate_slow() -- Add $(SHAREDLIBV) to LIBS in Makefile.in [Brown] -- Add deflate_rle() for faster Z_RLE strategy run-length encoding -- Add deflate_huff() for faster Z_HUFFMAN_ONLY encoding -- Change name of "write" variable in inffast.c to avoid library collisions -- Fix premature EOF from gzread() in gzio.c [Brown] -- Use zlib header window size if windowBits is 0 in inflateInit2() -- Remove compressBound() call in deflate.c to avoid linking compress.o -- Replace use of errno in gz* with functions, support WinCE [Alves] -- Provide alternative to perror() in minigzip.c for WinCE [Alves] -- Don't use _vsnprintf on later versions of MSVC [Lowman] -- Add CMake build script and input file [Lowman] -- Update contrib/minizip to 1.1 [Svensson, Vollant] -- Moved nintendods directory from contrib to . -- Replace gzio.c with a new set of routines with the same functionality -- Add gzbuffer(), gzoffset(), gzclose_r(), gzclose_w() as part of above -- Update contrib/minizip to 1.1b -- Change gzeof() to return 0 on error instead of -1 to agree with zlib.h - -Changes in 1.2.3.4 (21 Dec 2009) -- Use old school .SUFFIXES in Makefile.in for FreeBSD compatibility -- Update comments in configure and Makefile.in for default --shared -- Fix test -z's in configure [Marquess] -- Build examplesh and minigzipsh when not testing -- Change NULL's to Z_NULL's in deflate.c and in comments in zlib.h -- Import LDFLAGS from the environment in configure -- Fix configure to populate SFLAGS with discovered CFLAGS options -- Adapt make_vms.com to the new Makefile.in [Zinser] -- Add zlib2ansi script for C++ compilation [Marquess] -- Add _FILE_OFFSET_BITS=64 test to make test (when applicable) -- Add AMD64 assembler code for longest match to contrib [Teterin] -- Include options from $SFLAGS when doing $LDSHARED -- Simplify 64-bit file support by introducing z_off64_t type -- Make shared object files in objs directory to work around old Sun cc -- Use only three-part version number for Darwin shared compiles -- Add rc option to ar in Makefile.in for when ./configure not run -- Add -WI,-rpath,. to LDFLAGS for OSF 1 V4* -- Set LD_LIBRARYN32_PATH for SGI IRIX shared compile -- Protect against _FILE_OFFSET_BITS being defined when compiling zlib -- Rename Makefile.in targets allstatic to static and allshared to shared -- Fix static and shared Makefile.in targets to be independent -- Correct error return bug in gz_open() by setting state [Brown] -- Put spaces before ;;'s in configure for better sh compatibility -- Add pigz.c (parallel implementation of gzip) to examples/ -- Correct constant in crc32.c to UL [Leventhal] -- Reject negative lengths in crc32_combine() -- Add inflateReset2() function to work like inflateEnd()/inflateInit2() -- Include sys/types.h for _LARGEFILE64_SOURCE [Brown] -- Correct typo in doc/algorithm.txt [Janik] -- Fix bug in adler32_combine() [Zhu] -- Catch missing-end-of-block-code error in all inflates and in puff - Assures that random input to inflate eventually results in an error -- Added enough.c (calculation of ENOUGH for inftrees.h) to examples/ -- Update ENOUGH and its usage to reflect discovered bounds -- Fix gzerror() error report on empty input file [Brown] -- Add ush casts in trees.c to avoid pedantic runtime errors -- Fix typo in zlib.h uncompress() description [Reiss] -- Correct inflate() comments with regard to automatic header detection -- Remove deprecation comment on Z_PARTIAL_FLUSH (it stays) -- Put new version of gzlog (2.0) in examples with interruption recovery -- Add puff compile option to permit invalid distance-too-far streams -- Add puff TEST command options, ability to read piped input -- Prototype the *64 functions in zlib.h when _FILE_OFFSET_BITS == 64, but - _LARGEFILE64_SOURCE not defined -- Fix Z_FULL_FLUSH to truly erase the past by resetting s->strstart -- Fix deflateSetDictionary() to use all 32K for output consistency -- Remove extraneous #define MIN_LOOKAHEAD in deflate.c (in deflate.h) -- Clear bytes after deflate lookahead to avoid use of uninitialized data -- Change a limit in inftrees.c to be more transparent to Coverity Prevent -- Update win32/zlib.def with exported symbols from zlib.h -- Correct spelling errors in zlib.h [Willem, Sobrado] -- Allow Z_BLOCK for deflate() to force a new block -- Allow negative bits in inflatePrime() to delete existing bit buffer -- Add Z_TREES flush option to inflate() to return at end of trees -- Add inflateMark() to return current state information for random access -- Add Makefile for NintendoDS to contrib [Costa] -- Add -w in configure compile tests to avoid spurious warnings [Beucler] -- Fix typos in zlib.h comments for deflateSetDictionary() -- Fix EOF detection in transparent gzread() [Maier] - -Changes in 1.2.3.3 (2 October 2006) -- Make --shared the default for configure, add a --static option -- Add compile option to permit invalid distance-too-far streams -- Add inflateUndermine() function which is required to enable above -- Remove use of "this" variable name for C++ compatibility [Marquess] -- Add testing of shared library in make test, if shared library built -- Use ftello() and fseeko() if available instead of ftell() and fseek() -- Provide two versions of all functions that use the z_off_t type for - binary compatibility -- a normal version and a 64-bit offset version, - per the Large File Support Extension when _LARGEFILE64_SOURCE is - defined; use the 64-bit versions by default when _FILE_OFFSET_BITS - is defined to be 64 -- Add a --uname= option to configure to perhaps help with cross-compiling - -Changes in 1.2.3.2 (3 September 2006) -- Turn off silly Borland warnings [Hay] -- Use off64_t and define _LARGEFILE64_SOURCE when present -- Fix missing dependency on inffixed.h in Makefile.in -- Rig configure --shared to build both shared and static [Teredesai, Truta] -- Remove zconf.in.h and instead create a new zlibdefs.h file -- Fix contrib/minizip/unzip.c non-encrypted after encrypted [Vollant] -- Add treebuild.xml (see http://treebuild.metux.de/) [Weigelt] - -Changes in 1.2.3.1 (16 August 2006) -- Add watcom directory with OpenWatcom make files [Daniel] -- Remove #undef of FAR in zconf.in.h for MVS [Fedtke] -- Update make_vms.com [Zinser] -- Use -fPIC for shared build in configure [Teredesai, Nicholson] -- Use only major version number for libz.so on IRIX and OSF1 [Reinholdtsen] -- Use fdopen() (not _fdopen()) for Interix in zutil.h [Bäck] -- Add some FAQ entries about the contrib directory -- Update the MVS question in the FAQ -- Avoid extraneous reads after EOF in gzio.c [Brown] -- Correct spelling of "successfully" in gzio.c [Randers-Pehrson] -- Add comments to zlib.h about gzerror() usage [Brown] -- Set extra flags in gzip header in gzopen() like deflate() does -- Make configure options more compatible with double-dash conventions - [Weigelt] -- Clean up compilation under Solaris SunStudio cc [Rowe, Reinholdtsen] -- Fix uninstall target in Makefile.in [Truta] -- Add pkgconfig support [Weigelt] -- Use $(DESTDIR) macro in Makefile.in [Reinholdtsen, Weigelt] -- Replace set_data_type() with a more accurate detect_data_type() in - trees.c, according to the txtvsbin.txt document [Truta] -- Swap the order of #include <stdio.h> and #include "zlib.h" in - gzio.c, example.c and minigzip.c [Truta] -- Shut up annoying VS2005 warnings about standard C deprecation [Rowe, - Truta] (where?) -- Fix target "clean" from win32/Makefile.bor [Truta] -- Create .pdb and .manifest files in win32/makefile.msc [Ziegler, Rowe] -- Update zlib www home address in win32/DLL_FAQ.txt [Truta] -- Update contrib/masmx86/inffas32.asm for VS2005 [Vollant, Van Wassenhove] -- Enable browse info in the "Debug" and "ASM Debug" configurations in - the Visual C++ 6 project, and set (non-ASM) "Debug" as default [Truta] -- Add pkgconfig support [Weigelt] -- Add ZLIB_VER_MAJOR, ZLIB_VER_MINOR and ZLIB_VER_REVISION in zlib.h, - for use in win32/zlib1.rc [Polushin, Rowe, Truta] -- Add a document that explains the new text detection scheme to - doc/txtvsbin.txt [Truta] -- Add rfc1950.txt, rfc1951.txt and rfc1952.txt to doc/ [Truta] -- Move algorithm.txt into doc/ [Truta] -- Synchronize FAQ with website -- Fix compressBound(), was low for some pathological cases [Fearnley] -- Take into account wrapper variations in deflateBound() -- Set examples/zpipe.c input and output to binary mode for Windows -- Update examples/zlib_how.html with new zpipe.c (also web site) -- Fix some warnings in examples/gzlog.c and examples/zran.c (it seems - that gcc became pickier in 4.0) -- Add zlib.map for Linux: "All symbols from zlib-1.1.4 remain - un-versioned, the patch adds versioning only for symbols introduced in - zlib-1.2.0 or later. It also declares as local those symbols which are - not designed to be exported." [Levin] -- Update Z_PREFIX list in zconf.in.h, add --zprefix option to configure -- Do not initialize global static by default in trees.c, add a response - NO_INIT_GLOBAL_POINTERS to initialize them if needed [Marquess] -- Don't use strerror() in gzio.c under WinCE [Yakimov] -- Don't use errno.h in zutil.h under WinCE [Yakimov] -- Move arguments for AR to its usage to allow replacing ar [Marot] -- Add HAVE_VISIBILITY_PRAGMA in zconf.in.h for Mozilla [Randers-Pehrson] -- Improve inflateInit() and inflateInit2() documentation -- Fix structure size comment in inflate.h -- Change configure help option from --h* to --help [Santos] - -Changes in 1.2.3 (18 July 2005) -- Apply security vulnerability fixes to contrib/infback9 as well -- Clean up some text files (carriage returns, trailing space) -- Update testzlib, vstudio, masmx64, and masmx86 in contrib [Vollant] - -Changes in 1.2.2.4 (11 July 2005) -- Add inflatePrime() function for starting inflation at bit boundary -- Avoid some Visual C warnings in deflate.c -- Avoid more silly Visual C warnings in inflate.c and inftrees.c for 64-bit - compile -- Fix some spelling errors in comments [Betts] -- Correct inflateInit2() error return documentation in zlib.h -- Add zran.c example of compressed data random access to examples - directory, shows use of inflatePrime() -- Fix cast for assignments to strm->state in inflate.c and infback.c -- Fix zlibCompileFlags() in zutil.c to use 1L for long shifts [Oberhumer] -- Move declarations of gf2 functions to right place in crc32.c [Oberhumer] -- Add cast in trees.c t avoid a warning [Oberhumer] -- Avoid some warnings in fitblk.c, gun.c, gzjoin.c in examples [Oberhumer] -- Update make_vms.com [Zinser] -- Initialize state->write in inflateReset() since copied in inflate_fast() -- Be more strict on incomplete code sets in inflate_table() and increase - ENOUGH and MAXD -- this repairs a possible security vulnerability for - invalid inflate input. Thanks to Tavis Ormandy and Markus Oberhumer for - discovering the vulnerability and providing test cases. -- Add ia64 support to configure for HP-UX [Smith] -- Add error return to gzread() for format or i/o error [Levin] -- Use malloc.h for OS/2 [Necasek] - -Changes in 1.2.2.3 (27 May 2005) -- Replace 1U constants in inflate.c and inftrees.c for 64-bit compile -- Typecast fread() return values in gzio.c [Vollant] -- Remove trailing space in minigzip.c outmode (VC++ can't deal with it) -- Fix crc check bug in gzread() after gzungetc() [Heiner] -- Add the deflateTune() function to adjust internal compression parameters -- Add a fast gzip decompressor, gun.c, to examples (use of inflateBack) -- Remove an incorrect assertion in examples/zpipe.c -- Add C++ wrapper in infback9.h [Donais] -- Fix bug in inflateCopy() when decoding fixed codes -- Note in zlib.h how much deflateSetDictionary() actually uses -- Remove USE_DICT_HEAD in deflate.c (would mess up inflate if used) -- Add _WIN32_WCE to define WIN32 in zconf.in.h [Spencer] -- Don't include stderr.h or errno.h for _WIN32_WCE in zutil.h [Spencer] -- Add gzdirect() function to indicate transparent reads -- Update contrib/minizip [Vollant] -- Fix compilation of deflate.c when both ASMV and FASTEST [Oberhumer] -- Add casts in crc32.c to avoid warnings [Oberhumer] -- Add contrib/masmx64 [Vollant] -- Update contrib/asm586, asm686, masmx86, testzlib, vstudio [Vollant] - -Changes in 1.2.2.2 (30 December 2004) -- Replace structure assignments in deflate.c and inflate.c with zmemcpy to - avoid implicit memcpy calls (portability for no-library compilation) -- Increase sprintf() buffer size in gzdopen() to allow for large numbers -- Add INFLATE_STRICT to check distances against zlib header -- Improve WinCE errno handling and comments [Chang] -- Remove comment about no gzip header processing in FAQ -- Add Z_FIXED strategy option to deflateInit2() to force fixed trees -- Add updated make_vms.com [Coghlan], update README -- Create a new "examples" directory, move gzappend.c there, add zpipe.c, - fitblk.c, gzlog.[ch], gzjoin.c, and zlib_how.html. -- Add FAQ entry and comments in deflate.c on uninitialized memory access -- Add Solaris 9 make options in configure [Gilbert] -- Allow strerror() usage in gzio.c for STDC -- Fix DecompressBuf in contrib/delphi/ZLib.pas [ManChesTer] -- Update contrib/masmx86/inffas32.asm and gvmat32.asm [Vollant] -- Use z_off_t for adler32_combine() and crc32_combine() lengths -- Make adler32() much faster for small len -- Use OS_CODE in deflate() default gzip header - -Changes in 1.2.2.1 (31 October 2004) -- Allow inflateSetDictionary() call for raw inflate -- Fix inflate header crc check bug for file names and comments -- Add deflateSetHeader() and gz_header structure for custom gzip headers -- Add inflateGetheader() to retrieve gzip headers -- Add crc32_combine() and adler32_combine() functions -- Add alloc_func, free_func, in_func, out_func to Z_PREFIX list -- Use zstreamp consistently in zlib.h (inflate_back functions) -- Remove GUNZIP condition from definition of inflate_mode in inflate.h - and in contrib/inflate86/inffast.S [Truta, Anderson] -- Add support for AMD64 in contrib/inflate86/inffas86.c [Anderson] -- Update projects/README.projects and projects/visualc6 [Truta] -- Update win32/DLL_FAQ.txt [Truta] -- Avoid warning under NO_GZCOMPRESS in gzio.c; fix typo [Truta] -- Deprecate Z_ASCII; use Z_TEXT instead [Truta] -- Use a new algorithm for setting strm->data_type in trees.c [Truta] -- Do not define an exit() prototype in zutil.c unless DEBUG defined -- Remove prototype of exit() from zutil.c, example.c, minigzip.c [Truta] -- Add comment in zlib.h for Z_NO_FLUSH parameter to deflate() -- Fix Darwin build version identification [Peterson] - -Changes in 1.2.2 (3 October 2004) -- Update zlib.h comments on gzip in-memory processing -- Set adler to 1 in inflateReset() to support Java test suite [Walles] -- Add contrib/dotzlib [Ravn] -- Update win32/DLL_FAQ.txt [Truta] -- Update contrib/minizip [Vollant] -- Move contrib/visual-basic.txt to old/ [Truta] -- Fix assembler builds in projects/visualc6/ [Truta] - -Changes in 1.2.1.2 (9 September 2004) -- Update INDEX file -- Fix trees.c to update strm->data_type (no one ever noticed!) -- Fix bug in error case in inflate.c, infback.c, and infback9.c [Brown] -- Add "volatile" to crc table flag declaration (for DYNAMIC_CRC_TABLE) -- Add limited multitasking protection to DYNAMIC_CRC_TABLE -- Add NO_vsnprintf for VMS in zutil.h [Mozilla] -- Don't declare strerror() under VMS [Mozilla] -- Add comment to DYNAMIC_CRC_TABLE to use get_crc_table() to initialize -- Update contrib/ada [Anisimkov] -- Update contrib/minizip [Vollant] -- Fix configure to not hardcode directories for Darwin [Peterson] -- Fix gzio.c to not return error on empty files [Brown] -- Fix indentation; update version in contrib/delphi/ZLib.pas and - contrib/pascal/zlibpas.pas [Truta] -- Update mkasm.bat in contrib/masmx86 [Truta] -- Update contrib/untgz [Truta] -- Add projects/README.projects [Truta] -- Add project for MS Visual C++ 6.0 in projects/visualc6 [Cadieux, Truta] -- Update win32/DLL_FAQ.txt [Truta] -- Update list of Z_PREFIX symbols in zconf.h [Randers-Pehrson, Truta] -- Remove an unnecessary assignment to curr in inftrees.c [Truta] -- Add OS/2 to exe builds in configure [Poltorak] -- Remove err dummy parameter in zlib.h [Kientzle] - -Changes in 1.2.1.1 (9 January 2004) -- Update email address in README -- Several FAQ updates -- Fix a big fat bug in inftrees.c that prevented decoding valid - dynamic blocks with only literals and no distance codes -- - Thanks to "Hot Emu" for the bug report and sample file -- Add a note to puff.c on no distance codes case. - -Changes in 1.2.1 (17 November 2003) -- Remove a tab in contrib/gzappend/gzappend.c -- Update some interfaces in contrib for new zlib functions -- Update zlib version number in some contrib entries -- Add Windows CE definition for ptrdiff_t in zutil.h [Mai, Truta] -- Support shared libraries on Hurd and KFreeBSD [Brown] -- Fix error in NO_DIVIDE option of adler32.c - -Changes in 1.2.0.8 (4 November 2003) -- Update version in contrib/delphi/ZLib.pas and contrib/pascal/zlibpas.pas -- Add experimental NO_DIVIDE #define in adler32.c - - Possibly faster on some processors (let me know if it is) -- Correct Z_BLOCK to not return on first inflate call if no wrap -- Fix strm->data_type on inflate() return to correctly indicate EOB -- Add deflatePrime() function for appending in the middle of a byte -- Add contrib/gzappend for an example of appending to a stream -- Update win32/DLL_FAQ.txt [Truta] -- Delete Turbo C comment in README [Truta] -- Improve some indentation in zconf.h [Truta] -- Fix infinite loop on bad input in configure script [Church] -- Fix gzeof() for concatenated gzip files [Johnson] -- Add example to contrib/visual-basic.txt [Michael B.] -- Add -p to mkdir's in Makefile.in [vda] -- Fix configure to properly detect presence or lack of printf functions -- Add AS400 support [Monnerat] -- Add a little Cygwin support [Wilson] - -Changes in 1.2.0.7 (21 September 2003) -- Correct some debug formats in contrib/infback9 -- Cast a type in a debug statement in trees.c -- Change search and replace delimiter in configure from % to # [Beebe] -- Update contrib/untgz to 0.2 with various fixes [Truta] -- Add build support for Amiga [Nikl] -- Remove some directories in old that have been updated to 1.2 -- Add dylib building for Mac OS X in configure and Makefile.in -- Remove old distribution stuff from Makefile -- Update README to point to DLL_FAQ.txt, and add comment on Mac OS X -- Update links in README - -Changes in 1.2.0.6 (13 September 2003) -- Minor FAQ updates -- Update contrib/minizip to 1.00 [Vollant] -- Remove test of gz functions in example.c when GZ_COMPRESS defined [Truta] -- Update POSTINC comment for 68060 [Nikl] -- Add contrib/infback9 with deflate64 decoding (unsupported) -- For MVS define NO_vsnprintf and undefine FAR [van Burik] -- Add pragma for fdopen on MVS [van Burik] - -Changes in 1.2.0.5 (8 September 2003) -- Add OF to inflateBackEnd() declaration in zlib.h -- Remember start when using gzdopen in the middle of a file -- Use internal off_t counters in gz* functions to properly handle seeks -- Perform more rigorous check for distance-too-far in inffast.c -- Add Z_BLOCK flush option to return from inflate at block boundary -- Set strm->data_type on return from inflate - - Indicate bits unused, if at block boundary, and if in last block -- Replace size_t with ptrdiff_t in crc32.c, and check for correct size -- Add condition so old NO_DEFLATE define still works for compatibility -- FAQ update regarding the Windows DLL [Truta] -- INDEX update: add qnx entry, remove aix entry [Truta] -- Install zlib.3 into mandir [Wilson] -- Move contrib/zlib_dll_FAQ.txt to win32/DLL_FAQ.txt; update [Truta] -- Adapt the zlib interface to the new DLL convention guidelines [Truta] -- Introduce ZLIB_WINAPI macro to allow the export of functions using - the WINAPI calling convention, for Visual Basic [Vollant, Truta] -- Update msdos and win32 scripts and makefiles [Truta] -- Export symbols by name, not by ordinal, in win32/zlib.def [Truta] -- Add contrib/ada [Anisimkov] -- Move asm files from contrib/vstudio/vc70_32 to contrib/asm386 [Truta] -- Rename contrib/asm386 to contrib/masmx86 [Truta, Vollant] -- Add contrib/masm686 [Truta] -- Fix offsets in contrib/inflate86 and contrib/masmx86/inffas32.asm - [Truta, Vollant] -- Update contrib/delphi; rename to contrib/pascal; add example [Truta] -- Remove contrib/delphi2; add a new contrib/delphi [Truta] -- Avoid inclusion of the nonstandard <memory.h> in contrib/iostream, - and fix some method prototypes [Truta] -- Fix the ZCR_SEED2 constant to avoid warnings in contrib/minizip - [Truta] -- Avoid the use of backslash (\) in contrib/minizip [Vollant] -- Fix file time handling in contrib/untgz; update makefiles [Truta] -- Update contrib/vstudio/vc70_32 to comply with the new DLL guidelines - [Vollant] -- Remove contrib/vstudio/vc15_16 [Vollant] -- Rename contrib/vstudio/vc70_32 to contrib/vstudio/vc7 [Truta] -- Update README.contrib [Truta] -- Invert the assignment order of match_head and s->prev[...] in - INSERT_STRING [Truta] -- Compare TOO_FAR with 32767 instead of 32768, to avoid 16-bit warnings - [Truta] -- Compare function pointers with 0, not with NULL or Z_NULL [Truta] -- Fix prototype of syncsearch in inflate.c [Truta] -- Introduce ASMINF macro to be enabled when using an ASM implementation - of inflate_fast [Truta] -- Change NO_DEFLATE to NO_GZCOMPRESS [Truta] -- Modify test_gzio in example.c to take a single file name as a - parameter [Truta] -- Exit the example.c program if gzopen fails [Truta] -- Add type casts around strlen in example.c [Truta] -- Remove casting to sizeof in minigzip.c; give a proper type - to the variable compared with SUFFIX_LEN [Truta] -- Update definitions of STDC and STDC99 in zconf.h [Truta] -- Synchronize zconf.h with the new Windows DLL interface [Truta] -- Use SYS16BIT instead of __32BIT__ to distinguish between - 16- and 32-bit platforms [Truta] -- Use far memory allocators in small 16-bit memory models for - Turbo C [Truta] -- Add info about the use of ASMV, ASMINF and ZLIB_WINAPI in - zlibCompileFlags [Truta] -- Cygwin has vsnprintf [Wilson] -- In Windows16, OS_CODE is 0, as in MSDOS [Truta] -- In Cygwin, OS_CODE is 3 (Unix), not 11 (Windows32) [Wilson] - -Changes in 1.2.0.4 (10 August 2003) -- Minor FAQ updates -- Be more strict when checking inflateInit2's windowBits parameter -- Change NO_GUNZIP compile option to NO_GZIP to cover deflate as well -- Add gzip wrapper option to deflateInit2 using windowBits -- Add updated QNX rule in configure and qnx directory [Bonnefoy] -- Make inflate distance-too-far checks more rigorous -- Clean up FAR usage in inflate -- Add casting to sizeof() in gzio.c and minigzip.c - -Changes in 1.2.0.3 (19 July 2003) -- Fix silly error in gzungetc() implementation [Vollant] -- Update contrib/minizip and contrib/vstudio [Vollant] -- Fix printf format in example.c -- Correct cdecl support in zconf.in.h [Anisimkov] -- Minor FAQ updates - -Changes in 1.2.0.2 (13 July 2003) -- Add ZLIB_VERNUM in zlib.h for numerical preprocessor comparisons -- Attempt to avoid warnings in crc32.c for pointer-int conversion -- Add AIX to configure, remove aix directory [Bakker] -- Add some casts to minigzip.c -- Improve checking after insecure sprintf() or vsprintf() calls -- Remove #elif's from crc32.c -- Change leave label to inf_leave in inflate.c and infback.c to avoid - library conflicts -- Remove inflate gzip decoding by default--only enable gzip decoding by - special request for stricter backward compatibility -- Add zlibCompileFlags() function to return compilation information -- More typecasting in deflate.c to avoid warnings -- Remove leading underscore from _Capital #defines [Truta] -- Fix configure to link shared library when testing -- Add some Windows CE target adjustments [Mai] -- Remove #define ZLIB_DLL in zconf.h [Vollant] -- Add zlib.3 [Rodgers] -- Update RFC URL in deflate.c and algorithm.txt [Mai] -- Add zlib_dll_FAQ.txt to contrib [Truta] -- Add UL to some constants [Truta] -- Update minizip and vstudio [Vollant] -- Remove vestigial NEED_DUMMY_RETURN from zconf.in.h -- Expand use of NO_DUMMY_DECL to avoid all dummy structures -- Added iostream3 to contrib [Schwardt] -- Replace rewind() with fseek() for WinCE [Truta] -- Improve setting of zlib format compression level flags - - Report 0 for huffman and rle strategies and for level == 0 or 1 - - Report 2 only for level == 6 -- Only deal with 64K limit when necessary at compile time [Truta] -- Allow TOO_FAR check to be turned off at compile time [Truta] -- Add gzclearerr() function [Souza] -- Add gzungetc() function - -Changes in 1.2.0.1 (17 March 2003) -- Add Z_RLE strategy for run-length encoding [Truta] - - When Z_RLE requested, restrict matches to distance one - - Update zlib.h, minigzip.c, gzopen(), gzdopen() for Z_RLE -- Correct FASTEST compilation to allow level == 0 -- Clean up what gets compiled for FASTEST -- Incorporate changes to zconf.in.h [Vollant] - - Refine detection of Turbo C need for dummy returns - - Refine ZLIB_DLL compilation - - Include additional header file on VMS for off_t typedef -- Try to use _vsnprintf where it supplants vsprintf [Vollant] -- Add some casts in inffast.c -- Enchance comments in zlib.h on what happens if gzprintf() tries to - write more than 4095 bytes before compression -- Remove unused state from inflateBackEnd() -- Remove exit(0) from minigzip.c, example.c -- Get rid of all those darn tabs -- Add "check" target to Makefile.in that does the same thing as "test" -- Add "mostlyclean" and "maintainer-clean" targets to Makefile.in -- Update contrib/inflate86 [Anderson] -- Update contrib/testzlib, contrib/vstudio, contrib/minizip [Vollant] -- Add msdos and win32 directories with makefiles [Truta] -- More additions and improvements to the FAQ - -Changes in 1.2.0 (9 March 2003) -- New and improved inflate code - - About 20% faster - - Does not allocate 32K window unless and until needed - - Automatically detects and decompresses gzip streams - - Raw inflate no longer needs an extra dummy byte at end - - Added inflateBack functions using a callback interface--even faster - than inflate, useful for file utilities (gzip, zip) - - Added inflateCopy() function to record state for random access on - externally generated deflate streams (e.g. in gzip files) - - More readable code (I hope) -- New and improved crc32() - - About 50% faster, thanks to suggestions from Rodney Brown -- Add deflateBound() and compressBound() functions -- Fix memory leak in deflateInit2() -- Permit setting dictionary for raw deflate (for parallel deflate) -- Fix const declaration for gzwrite() -- Check for some malloc() failures in gzio.c -- Fix bug in gzopen() on single-byte file 0x1f -- Fix bug in gzread() on concatenated file with 0x1f at end of buffer - and next buffer doesn't start with 0x8b -- Fix uncompress() to return Z_DATA_ERROR on truncated input -- Free memory at end of example.c -- Remove MAX #define in trees.c (conflicted with some libraries) -- Fix static const's in deflate.c, gzio.c, and zutil.[ch] -- Declare malloc() and free() in gzio.c if STDC not defined -- Use malloc() instead of calloc() in zutil.c if int big enough -- Define STDC for AIX -- Add aix/ with approach for compiling shared library on AIX -- Add HP-UX support for shared libraries in configure -- Add OpenUNIX support for shared libraries in configure -- Use $cc instead of gcc to build shared library -- Make prefix directory if needed when installing -- Correct Macintosh avoidance of typedef Byte in zconf.h -- Correct Turbo C memory allocation when under Linux -- Use libz.a instead of -lz in Makefile (assure use of compiled library) -- Update configure to check for snprintf or vsnprintf functions and their - return value, warn during make if using an insecure function -- Fix configure problem with compile-time knowledge of HAVE_UNISTD_H that - is lost when library is used--resolution is to build new zconf.h -- Documentation improvements (in zlib.h): - - Document raw deflate and inflate - - Update RFCs URL - - Point out that zlib and gzip formats are different - - Note that Z_BUF_ERROR is not fatal - - Document string limit for gzprintf() and possible buffer overflow - - Note requirement on avail_out when flushing - - Note permitted values of flush parameter of inflate() -- Add some FAQs (and even answers) to the FAQ -- Add contrib/inflate86/ for x86 faster inflate -- Add contrib/blast/ for PKWare Data Compression Library decompression -- Add contrib/puff/ simple inflate for deflate format description - -Changes in 1.1.4 (11 March 2002) -- ZFREE was repeated on same allocation on some error conditions. - This creates a security problem described in - http://www.zlib.org/advisory-2002-03-11.txt -- Returned incorrect error (Z_MEM_ERROR) on some invalid data -- Avoid accesses before window for invalid distances with inflate window - less than 32K. -- force windowBits > 8 to avoid a bug in the encoder for a window size - of 256 bytes. (A complete fix will be available in 1.1.5). - -Changes in 1.1.3 (9 July 1998) -- fix "an inflate input buffer bug that shows up on rare but persistent - occasions" (Mark) -- fix gzread and gztell for concatenated .gz files (Didier Le Botlan) -- fix gzseek(..., SEEK_SET) in write mode -- fix crc check after a gzeek (Frank Faubert) -- fix miniunzip when the last entry in a zip file is itself a zip file - (J Lillge) -- add contrib/asm586 and contrib/asm686 (Brian Raiter) - See http://www.muppetlabs.com/~breadbox/software/assembly.html -- add support for Delphi 3 in contrib/delphi (Bob Dellaca) -- add support for C++Builder 3 and Delphi 3 in contrib/delphi2 (Davide Moretti) -- do not exit prematurely in untgz if 0 at start of block (Magnus Holmgren) -- use macro EXTERN instead of extern to support DLL for BeOS (Sander Stoks) -- added a FAQ file - -- Support gzdopen on Mac with Metrowerks (Jason Linhart) -- Do not redefine Byte on Mac (Brad Pettit & Jason Linhart) -- define SEEK_END too if SEEK_SET is not defined (Albert Chin-A-Young) -- avoid some warnings with Borland C (Tom Tanner) -- fix a problem in contrib/minizip/zip.c for 16-bit MSDOS (Gilles Vollant) -- emulate utime() for WIN32 in contrib/untgz (Gilles Vollant) -- allow several arguments to configure (Tim Mooney, Frodo Looijaard) -- use libdir and includedir in Makefile.in (Tim Mooney) -- support shared libraries on OSF1 V4 (Tim Mooney) -- remove so_locations in "make clean" (Tim Mooney) -- fix maketree.c compilation error (Glenn, Mark) -- Python interface to zlib now in Python 1.5 (Jeremy Hylton) -- new Makefile.riscos (Rich Walker) -- initialize static descriptors in trees.c for embedded targets (Nick Smith) -- use "foo-gz" in example.c for RISCOS and VMS (Nick Smith) -- add the OS/2 files in Makefile.in too (Andrew Zabolotny) -- fix fdopen and halloc macros for Microsoft C 6.0 (Tom Lane) -- fix maketree.c to allow clean compilation of inffixed.h (Mark) -- fix parameter check in deflateCopy (Gunther Nikl) -- cleanup trees.c, use compressed_len only in debug mode (Christian Spieler) -- Many portability patches by Christian Spieler: - . zutil.c, zutil.h: added "const" for zmem* - . Make_vms.com: fixed some typos - . Make_vms.com: msdos/Makefile.*: removed zutil.h from some dependency lists - . msdos/Makefile.msc: remove "default rtl link library" info from obj files - . msdos/Makefile.*: use model-dependent name for the built zlib library - . msdos/Makefile.emx, nt/Makefile.emx, nt/Makefile.gcc: - new makefiles, for emx (DOS/OS2), emx&rsxnt and mingw32 (Windows 9x / NT) -- use define instead of typedef for Bytef also for MSC small/medium (Tom Lane) -- replace __far with _far for better portability (Christian Spieler, Tom Lane) -- fix test for errno.h in configure (Tim Newsham) - -Changes in 1.1.2 (19 March 98) -- added contrib/minzip, mini zip and unzip based on zlib (Gilles Vollant) - See http://www.winimage.com/zLibDll/unzip.html -- preinitialize the inflate tables for fixed codes, to make the code - completely thread safe (Mark) -- some simplifications and slight speed-up to the inflate code (Mark) -- fix gzeof on non-compressed files (Allan Schrum) -- add -std1 option in configure for OSF1 to fix gzprintf (Martin Mokrejs) -- use default value of 4K for Z_BUFSIZE for 16-bit MSDOS (Tim Wegner + Glenn) -- added os2/Makefile.def and os2/zlib.def (Andrew Zabolotny) -- add shared lib support for UNIX_SV4.2MP (MATSUURA Takanori) -- do not wrap extern "C" around system includes (Tom Lane) -- mention zlib binding for TCL in README (Andreas Kupries) -- added amiga/Makefile.pup for Amiga powerUP SAS/C PPC (Andreas Kleinert) -- allow "make install prefix=..." even after configure (Glenn Randers-Pehrson) -- allow "configure --prefix $HOME" (Tim Mooney) -- remove warnings in example.c and gzio.c (Glenn Randers-Pehrson) -- move Makefile.sas to amiga/Makefile.sas - -Changes in 1.1.1 (27 Feb 98) -- fix macros _tr_tally_* in deflate.h for debug mode (Glenn Randers-Pehrson) -- remove block truncation heuristic which had very marginal effect for zlib - (smaller lit_bufsize than in gzip 1.2.4) and degraded a little the - compression ratio on some files. This also allows inlining _tr_tally for - matches in deflate_slow. -- added msdos/Makefile.w32 for WIN32 Microsoft Visual C++ (Bob Frazier) - -Changes in 1.1.0 (24 Feb 98) -- do not return STREAM_END prematurely in inflate (John Bowler) -- revert to the zlib 1.0.8 inflate to avoid the gcc 2.8.0 bug (Jeremy Buhler) -- compile with -DFASTEST to get compression code optimized for speed only -- in minigzip, try mmap'ing the input file first (Miguel Albrecht) -- increase size of I/O buffers in minigzip.c and gzio.c (not a big gain - on Sun but significant on HP) - -- add a pointer to experimental unzip library in README (Gilles Vollant) -- initialize variable gcc in configure (Chris Herborth) - -Changes in 1.0.9 (17 Feb 1998) -- added gzputs and gzgets functions -- do not clear eof flag in gzseek (Mark Diekhans) -- fix gzseek for files in transparent mode (Mark Diekhans) -- do not assume that vsprintf returns the number of bytes written (Jens Krinke) -- replace EXPORT with ZEXPORT to avoid conflict with other programs -- added compress2 in zconf.h, zlib.def, zlib.dnt -- new asm code from Gilles Vollant in contrib/asm386 -- simplify the inflate code (Mark): - . Replace ZALLOC's in huft_build() with single ZALLOC in inflate_blocks_new() - . ZALLOC the length list in inflate_trees_fixed() instead of using stack - . ZALLOC the value area for huft_build() instead of using stack - . Simplify Z_FINISH check in inflate() - -- Avoid gcc 2.8.0 comparison bug a little differently than zlib 1.0.8 -- in inftrees.c, avoid cc -O bug on HP (Farshid Elahi) -- in zconf.h move the ZLIB_DLL stuff earlier to avoid problems with - the declaration of FAR (Gilles VOllant) -- install libz.so* with mode 755 (executable) instead of 644 (Marc Lehmann) -- read_buf buf parameter of type Bytef* instead of charf* -- zmemcpy parameters are of type Bytef*, not charf* (Joseph Strout) -- do not redeclare unlink in minigzip.c for WIN32 (John Bowler) -- fix check for presence of directories in "make install" (Ian Willis) - -Changes in 1.0.8 (27 Jan 1998) -- fixed offsets in contrib/asm386/gvmat32.asm (Gilles Vollant) -- fix gzgetc and gzputc for big endian systems (Markus Oberhumer) -- added compress2() to allow setting the compression level -- include sys/types.h to get off_t on some systems (Marc Lehmann & QingLong) -- use constant arrays for the static trees in trees.c instead of computing - them at run time (thanks to Ken Raeburn for this suggestion). To create - trees.h, compile with GEN_TREES_H and run "make test". -- check return code of example in "make test" and display result -- pass minigzip command line options to file_compress -- simplifying code of inflateSync to avoid gcc 2.8 bug - -- support CC="gcc -Wall" in configure -s (QingLong) -- avoid a flush caused by ftell in gzopen for write mode (Ken Raeburn) -- fix test for shared library support to avoid compiler warnings -- zlib.lib -> zlib.dll in msdos/zlib.rc (Gilles Vollant) -- check for TARGET_OS_MAC in addition to MACOS (Brad Pettit) -- do not use fdopen for Metrowerks on Mac (Brad Pettit)) -- add checks for gzputc and gzputc in example.c -- avoid warnings in gzio.c and deflate.c (Andreas Kleinert) -- use const for the CRC table (Ken Raeburn) -- fixed "make uninstall" for shared libraries -- use Tracev instead of Trace in infblock.c -- in example.c use correct compressed length for test_sync -- suppress +vnocompatwarnings in configure for HPUX (not always supported) - -Changes in 1.0.7 (20 Jan 1998) -- fix gzseek which was broken in write mode -- return error for gzseek to negative absolute position -- fix configure for Linux (Chun-Chung Chen) -- increase stack space for MSC (Tim Wegner) -- get_crc_table and inflateSyncPoint are EXPORTed (Gilles Vollant) -- define EXPORTVA for gzprintf (Gilles Vollant) -- added man page zlib.3 (Rick Rodgers) -- for contrib/untgz, fix makedir() and improve Makefile - -- check gzseek in write mode in example.c -- allocate extra buffer for seeks only if gzseek is actually called -- avoid signed/unsigned comparisons (Tim Wegner, Gilles Vollant) -- add inflateSyncPoint in zconf.h -- fix list of exported functions in nt/zlib.dnt and mdsos/zlib.def - -Changes in 1.0.6 (19 Jan 1998) -- add functions gzprintf, gzputc, gzgetc, gztell, gzeof, gzseek, gzrewind and - gzsetparams (thanks to Roland Giersig and Kevin Ruland for some of this code) -- Fix a deflate bug occurring only with compression level 0 (thanks to - Andy Buckler for finding this one). -- In minigzip, pass transparently also the first byte for .Z files. -- return Z_BUF_ERROR instead of Z_OK if output buffer full in uncompress() -- check Z_FINISH in inflate (thanks to Marc Schluper) -- Implement deflateCopy (thanks to Adam Costello) -- make static libraries by default in configure, add --shared option. -- move MSDOS or Windows specific files to directory msdos -- suppress the notion of partial flush to simplify the interface - (but the symbol Z_PARTIAL_FLUSH is kept for compatibility with 1.0.4) -- suppress history buffer provided by application to simplify the interface - (this feature was not implemented anyway in 1.0.4) -- next_in and avail_in must be initialized before calling inflateInit or - inflateInit2 -- add EXPORT in all exported functions (for Windows DLL) -- added Makefile.nt (thanks to Stephen Williams) -- added the unsupported "contrib" directory: - contrib/asm386/ by Gilles Vollant <info@winimage.com> - 386 asm code replacing longest_match(). - contrib/iostream/ by Kevin Ruland <kevin@rodin.wustl.edu> - A C++ I/O streams interface to the zlib gz* functions - contrib/iostream2/ by Tyge Løvset <Tyge.Lovset@cmr.no> - Another C++ I/O streams interface - contrib/untgz/ by "Pedro A. Aranda Guti\irrez" <paag@tid.es> - A very simple tar.gz file extractor using zlib - contrib/visual-basic.txt by Carlos Rios <c_rios@sonda.cl> - How to use compress(), uncompress() and the gz* functions from VB. -- pass params -f (filtered data), -h (huffman only), -1 to -9 (compression - level) in minigzip (thanks to Tom Lane) - -- use const for rommable constants in deflate -- added test for gzseek and gztell in example.c -- add undocumented function inflateSyncPoint() (hack for Paul Mackerras) -- add undocumented function zError to convert error code to string - (for Tim Smithers) -- Allow compilation of gzio with -DNO_DEFLATE to avoid the compression code. -- Use default memcpy for Symantec MSDOS compiler. -- Add EXPORT keyword for check_func (needed for Windows DLL) -- add current directory to LD_LIBRARY_PATH for "make test" -- create also a link for libz.so.1 -- added support for FUJITSU UXP/DS (thanks to Toshiaki Nomura) -- use $(SHAREDLIB) instead of libz.so in Makefile.in (for HPUX) -- added -soname for Linux in configure (Chun-Chung Chen, -- assign numbers to the exported functions in zlib.def (for Windows DLL) -- add advice in zlib.h for best usage of deflateSetDictionary -- work around compiler bug on Atari (cast Z_NULL in call of s->checkfn) -- allow compilation with ANSI keywords only enabled for TurboC in large model -- avoid "versionString"[0] (Borland bug) -- add NEED_DUMMY_RETURN for Borland -- use variable z_verbose for tracing in debug mode (L. Peter Deutsch). -- allow compilation with CC -- defined STDC for OS/2 (David Charlap) -- limit external names to 8 chars for MVS (Thomas Lund) -- in minigzip.c, use static buffers only for 16-bit systems -- fix suffix check for "minigzip -d foo.gz" -- do not return an error for the 2nd of two consecutive gzflush() (Felix Lee) -- use _fdopen instead of fdopen for MSC >= 6.0 (Thomas Fanslau) -- added makelcc.bat for lcc-win32 (Tom St Denis) -- in Makefile.dj2, use copy and del instead of install and rm (Frank Donahoe) -- Avoid expanded $Id$. Use "rcs -kb" or "cvs admin -kb" to avoid Id expansion. -- check for unistd.h in configure (for off_t) -- remove useless check parameter in inflate_blocks_free -- avoid useless assignment of s->check to itself in inflate_blocks_new -- do not flush twice in gzclose (thanks to Ken Raeburn) -- rename FOPEN as F_OPEN to avoid clash with /usr/include/sys/file.h -- use NO_ERRNO_H instead of enumeration of operating systems with errno.h -- work around buggy fclose on pipes for HP/UX -- support zlib DLL with BORLAND C++ 5.0 (thanks to Glenn Randers-Pehrson) -- fix configure if CC is already equal to gcc - -Changes in 1.0.5 (3 Jan 98) -- Fix inflate to terminate gracefully when fed corrupted or invalid data -- Use const for rommable constants in inflate -- Eliminate memory leaks on error conditions in inflate -- Removed some vestigial code in inflate -- Update web address in README - -Changes in 1.0.4 (24 Jul 96) -- In very rare conditions, deflate(s, Z_FINISH) could fail to produce an EOF - bit, so the decompressor could decompress all the correct data but went - on to attempt decompressing extra garbage data. This affected minigzip too. -- zlibVersion and gzerror return const char* (needed for DLL) -- port to RISCOS (no fdopen, no multiple dots, no unlink, no fileno) -- use z_error only for DEBUG (avoid problem with DLLs) - -Changes in 1.0.3 (2 Jul 96) -- use z_streamp instead of z_stream *, which is now a far pointer in MSDOS - small and medium models; this makes the library incompatible with previous - versions for these models. (No effect in large model or on other systems.) -- return OK instead of BUF_ERROR if previous deflate call returned with - avail_out as zero but there is nothing to do -- added memcmp for non STDC compilers -- define NO_DUMMY_DECL for more Mac compilers (.h files merged incorrectly) -- define __32BIT__ if __386__ or i386 is defined (pb. with Watcom and SCO) -- better check for 16-bit mode MSC (avoids problem with Symantec) - -Changes in 1.0.2 (23 May 96) -- added Windows DLL support -- added a function zlibVersion (for the DLL support) -- fixed declarations using Bytef in infutil.c (pb with MSDOS medium model) -- Bytef is define's instead of typedef'd only for Borland C -- avoid reading uninitialized memory in example.c -- mention in README that the zlib format is now RFC1950 -- updated Makefile.dj2 -- added algorithm.doc - -Changes in 1.0.1 (20 May 96) [1.0 skipped to avoid confusion] -- fix array overlay in deflate.c which sometimes caused bad compressed data -- fix inflate bug with empty stored block -- fix MSDOS medium model which was broken in 0.99 -- fix deflateParams() which could generate bad compressed data. -- Bytef is define'd instead of typedef'ed (work around Borland bug) -- added an INDEX file -- new makefiles for DJGPP (Makefile.dj2), 32-bit Borland (Makefile.b32), - Watcom (Makefile.wat), Amiga SAS/C (Makefile.sas) -- speed up adler32 for modern machines without auto-increment -- added -ansi for IRIX in configure -- static_init_done in trees.c is an int -- define unlink as delete for VMS -- fix configure for QNX -- add configure branch for SCO and HPUX -- avoid many warnings (unused variables, dead assignments, etc...) -- no fdopen for BeOS -- fix the Watcom fix for 32 bit mode (define FAR as empty) -- removed redefinition of Byte for MKWERKS -- work around an MWKERKS bug (incorrect merge of all .h files) - -Changes in 0.99 (27 Jan 96) -- allow preset dictionary shared between compressor and decompressor -- allow compression level 0 (no compression) -- add deflateParams in zlib.h: allow dynamic change of compression level - and compression strategy. -- test large buffers and deflateParams in example.c -- add optional "configure" to build zlib as a shared library -- suppress Makefile.qnx, use configure instead -- fixed deflate for 64-bit systems (detected on Cray) -- fixed inflate_blocks for 64-bit systems (detected on Alpha) -- declare Z_DEFLATED in zlib.h (possible parameter for deflateInit2) -- always return Z_BUF_ERROR when deflate() has nothing to do -- deflateInit and inflateInit are now macros to allow version checking -- prefix all global functions and types with z_ with -DZ_PREFIX -- make falloc completely reentrant (inftrees.c) -- fixed very unlikely race condition in ct_static_init -- free in reverse order of allocation to help memory manager -- use zlib-1.0/* instead of zlib/* inside the tar.gz -- make zlib warning-free with "gcc -O3 -Wall -Wwrite-strings -Wpointer-arith - -Wconversion -Wstrict-prototypes -Wmissing-prototypes" -- allow gzread on concatenated .gz files -- deflateEnd now returns Z_DATA_ERROR if it was premature -- deflate is finally (?) fully deterministic (no matches beyond end of input) -- Document Z_SYNC_FLUSH -- add uninstall in Makefile -- Check for __cpluplus in zlib.h -- Better test in ct_align for partial flush -- avoid harmless warnings for Borland C++ -- initialize hash_head in deflate.c -- avoid warning on fdopen (gzio.c) for HP cc -Aa -- include stdlib.h for STDC compilers -- include errno.h for Cray -- ignore error if ranlib doesn't exist -- call ranlib twice for NeXTSTEP -- use exec_prefix instead of prefix for libz.a -- renamed ct_* as _tr_* to avoid conflict with applications -- clear z->msg in inflateInit2 before any error return -- initialize opaque in example.c, gzio.c, deflate.c and inflate.c -- fixed typo in zconf.h (_GNUC__ => __GNUC__) -- check for WIN32 in zconf.h and zutil.c (avoid farmalloc in 32-bit mode) -- fix typo in Make_vms.com (f$trnlnm -> f$getsyi) -- in fcalloc, normalize pointer if size > 65520 bytes -- don't use special fcalloc for 32 bit Borland C++ -- use STDC instead of __GO32__ to avoid redeclaring exit, calloc, etc... -- use Z_BINARY instead of BINARY -- document that gzclose after gzdopen will close the file -- allow "a" as mode in gzopen. -- fix error checking in gzread -- allow skipping .gz extra-field on pipes -- added reference to Perl interface in README -- put the crc table in FAR data (I dislike more and more the medium model :) -- added get_crc_table -- added a dimension to all arrays (Borland C can't count). -- workaround Borland C bug in declaration of inflate_codes_new & inflate_fast -- guard against multiple inclusion of *.h (for precompiled header on Mac) -- Watcom C pretends to be Microsoft C small model even in 32 bit mode. -- don't use unsized arrays to avoid silly warnings by Visual C++: - warning C4746: 'inflate_mask' : unsized array treated as '__far' - (what's wrong with far data in far model?). -- define enum out of inflate_blocks_state to allow compilation with C++ - -Changes in 0.95 (16 Aug 95) -- fix MSDOS small and medium model (now easier to adapt to any compiler) -- inlined send_bits -- fix the final (:-) bug for deflate with flush (output was correct but - not completely flushed in rare occasions). -- default window size is same for compression and decompression - (it's now sufficient to set MAX_WBITS in zconf.h). -- voidp -> voidpf and voidnp -> voidp (for consistency with other - typedefs and because voidnp was not near in large model). - -Changes in 0.94 (13 Aug 95) -- support MSDOS medium model -- fix deflate with flush (could sometimes generate bad output) -- fix deflateReset (zlib header was incorrectly suppressed) -- added support for VMS -- allow a compression level in gzopen() -- gzflush now calls fflush -- For deflate with flush, flush even if no more input is provided. -- rename libgz.a as libz.a -- avoid complex expression in infcodes.c triggering Turbo C bug -- work around a problem with gcc on Alpha (in INSERT_STRING) -- don't use inline functions (problem with some gcc versions) -- allow renaming of Byte, uInt, etc... with #define. -- avoid warning about (unused) pointer before start of array in deflate.c -- avoid various warnings in gzio.c, example.c, infblock.c, adler32.c, zutil.c -- avoid reserved word 'new' in trees.c - -Changes in 0.93 (25 June 95) -- temporarily disable inline functions -- make deflate deterministic -- give enough lookahead for PARTIAL_FLUSH -- Set binary mode for stdin/stdout in minigzip.c for OS/2 -- don't even use signed char in inflate (not portable enough) -- fix inflate memory leak for segmented architectures - -Changes in 0.92 (3 May 95) -- don't assume that char is signed (problem on SGI) -- Clear bit buffer when starting a stored block -- no memcpy on Pyramid -- suppressed inftest.c -- optimized fill_window, put longest_match inline for gcc -- optimized inflate on stored blocks. -- untabify all sources to simplify patches - -Changes in 0.91 (2 May 95) -- Default MEM_LEVEL is 8 (not 9 for Unix) as documented in zlib.h -- Document the memory requirements in zconf.h -- added "make install" -- fix sync search logic in inflateSync -- deflate(Z_FULL_FLUSH) now works even if output buffer too short -- after inflateSync, don't scare people with just "lo world" -- added support for DJGPP - -Changes in 0.9 (1 May 95) -- don't assume that zalloc clears the allocated memory (the TurboC bug - was Mark's bug after all :) -- let again gzread copy uncompressed data unchanged (was working in 0.71) -- deflate(Z_FULL_FLUSH), inflateReset and inflateSync are now fully implemented -- added a test of inflateSync in example.c -- moved MAX_WBITS to zconf.h because users might want to change that. -- document explicitly that zalloc(64K) on MSDOS must return a normalized - pointer (zero offset) -- added Makefiles for Microsoft C, Turbo C, Borland C++ -- faster crc32() - -Changes in 0.8 (29 April 95) -- added fast inflate (inffast.c) -- deflate(Z_FINISH) now returns Z_STREAM_END when done. Warning: this - is incompatible with previous versions of zlib which returned Z_OK. -- work around a TurboC compiler bug (bad code for b << 0, see infutil.h) - (actually that was not a compiler bug, see 0.81 above) -- gzread no longer reads one extra byte in certain cases -- In gzio destroy(), don't reference a freed structure -- avoid many warnings for MSDOS -- avoid the ERROR symbol which is used by MS Windows - -Changes in 0.71 (14 April 95) -- Fixed more MSDOS compilation problems :( There is still a bug with - TurboC large model. - -Changes in 0.7 (14 April 95) -- Added full inflate support. -- Simplified the crc32() interface. The pre- and post-conditioning - (one's complement) is now done inside crc32(). WARNING: this is - incompatible with previous versions; see zlib.h for the new usage. - -Changes in 0.61 (12 April 95) -- workaround for a bug in TurboC. example and minigzip now work on MSDOS. - -Changes in 0.6 (11 April 95) -- added minigzip.c -- added gzdopen to reopen a file descriptor as gzFile -- added transparent reading of non-gziped files in gzread. -- fixed bug in gzread (don't read crc as data) -- fixed bug in destroy (gzio.c) (don't return Z_STREAM_END for gzclose). -- don't allocate big arrays in the stack (for MSDOS) -- fix some MSDOS compilation problems - -Changes in 0.5: -- do real compression in deflate.c. Z_PARTIAL_FLUSH is supported but - not yet Z_FULL_FLUSH. -- support decompression but only in a single step (forced Z_FINISH) -- added opaque object for zalloc and zfree. -- added deflateReset and inflateReset -- added a variable zlib_version for consistency checking. -- renamed the 'filter' parameter of deflateInit2 as 'strategy'. - Added Z_FILTERED and Z_HUFFMAN_ONLY constants. - -Changes in 0.4: -- avoid "zip" everywhere, use zlib instead of ziplib. -- suppress Z_BLOCK_FLUSH, interpret Z_PARTIAL_FLUSH as block flush - if compression method == 8. -- added adler32 and crc32 -- renamed deflateOptions as deflateInit2, call one or the other but not both -- added the method parameter for deflateInit2. -- added inflateInit2 -- simplied considerably deflateInit and inflateInit by not supporting - user-provided history buffer. This is supported only in deflateInit2 - and inflateInit2. - -Changes in 0.3: -- prefix all macro names with Z_ -- use Z_FINISH instead of deflateEnd to finish compression. -- added Z_HUFFMAN_ONLY -- added gzerror() diff --git a/common/zlib/FAQ b/common/zlib/FAQ deleted file mode 100644 index 99b7cf92e..000000000 --- a/common/zlib/FAQ +++ /dev/null @@ -1,368 +0,0 @@ - - Frequently Asked Questions about zlib - - -If your question is not there, please check the zlib home page -http://zlib.net/ which may have more recent information. -The lastest zlib FAQ is at http://zlib.net/zlib_faq.html - - - 1. Is zlib Y2K-compliant? - - Yes. zlib doesn't handle dates. - - 2. Where can I get a Windows DLL version? - - The zlib sources can be compiled without change to produce a DLL. See the - file win32/DLL_FAQ.txt in the zlib distribution. Pointers to the - precompiled DLL are found in the zlib web site at http://zlib.net/ . - - 3. Where can I get a Visual Basic interface to zlib? - - See - * http://marknelson.us/1997/01/01/zlib-engine/ - * win32/DLL_FAQ.txt in the zlib distribution - - 4. compress() returns Z_BUF_ERROR. - - Make sure that before the call of compress(), the length of the compressed - buffer is equal to the available size of the compressed buffer and not - zero. For Visual Basic, check that this parameter is passed by reference - ("as any"), not by value ("as long"). - - 5. deflate() or inflate() returns Z_BUF_ERROR. - - Before making the call, make sure that avail_in and avail_out are not zero. - When setting the parameter flush equal to Z_FINISH, also make sure that - avail_out is big enough to allow processing all pending input. Note that a - Z_BUF_ERROR is not fatal--another call to deflate() or inflate() can be - made with more input or output space. A Z_BUF_ERROR may in fact be - unavoidable depending on how the functions are used, since it is not - possible to tell whether or not there is more output pending when - strm.avail_out returns with zero. See http://zlib.net/zlib_how.html for a - heavily annotated example. - - 6. Where's the zlib documentation (man pages, etc.)? - - It's in zlib.h . Examples of zlib usage are in the files test/example.c - and test/minigzip.c, with more in examples/ . - - 7. Why don't you use GNU autoconf or libtool or ...? - - Because we would like to keep zlib as a very small and simple package. - zlib is rather portable and doesn't need much configuration. - - 8. I found a bug in zlib. - - Most of the time, such problems are due to an incorrect usage of zlib. - Please try to reproduce the problem with a small program and send the - corresponding source to us at zlib@gzip.org . Do not send multi-megabyte - data files without prior agreement. - - 9. Why do I get "undefined reference to gzputc"? - - If "make test" produces something like - - example.o(.text+0x154): undefined reference to `gzputc' - - check that you don't have old files libz.* in /usr/lib, /usr/local/lib or - /usr/X11R6/lib. Remove any old versions, then do "make install". - -10. I need a Delphi interface to zlib. - - See the contrib/delphi directory in the zlib distribution. - -11. Can zlib handle .zip archives? - - Not by itself, no. See the directory contrib/minizip in the zlib - distribution. - -12. Can zlib handle .Z files? - - No, sorry. You have to spawn an uncompress or gunzip subprocess, or adapt - the code of uncompress on your own. - -13. How can I make a Unix shared library? - - By default a shared (and a static) library is built for Unix. So: - - make distclean - ./configure - make - -14. How do I install a shared zlib library on Unix? - - After the above, then: - - make install - - However, many flavors of Unix come with a shared zlib already installed. - Before going to the trouble of compiling a shared version of zlib and - trying to install it, you may want to check if it's already there! If you - can #include <zlib.h>, it's there. The -lz option will probably link to - it. You can check the version at the top of zlib.h or with the - ZLIB_VERSION symbol defined in zlib.h . - -15. I have a question about OttoPDF. - - We are not the authors of OttoPDF. The real author is on the OttoPDF web - site: Joel Hainley, jhainley@myndkryme.com. - -16. Can zlib decode Flate data in an Adobe PDF file? - - Yes. See http://www.pdflib.com/ . To modify PDF forms, see - http://sourceforge.net/projects/acroformtool/ . - -17. Why am I getting this "register_frame_info not found" error on Solaris? - - After installing zlib 1.1.4 on Solaris 2.6, running applications using zlib - generates an error such as: - - ld.so.1: rpm: fatal: relocation error: file /usr/local/lib/libz.so: - symbol __register_frame_info: referenced symbol not found - - The symbol __register_frame_info is not part of zlib, it is generated by - the C compiler (cc or gcc). You must recompile applications using zlib - which have this problem. This problem is specific to Solaris. See - http://www.sunfreeware.com for Solaris versions of zlib and applications - using zlib. - -18. Why does gzip give an error on a file I make with compress/deflate? - - The compress and deflate functions produce data in the zlib format, which - is different and incompatible with the gzip format. The gz* functions in - zlib on the other hand use the gzip format. Both the zlib and gzip formats - use the same compressed data format internally, but have different headers - and trailers around the compressed data. - -19. Ok, so why are there two different formats? - - The gzip format was designed to retain the directory information about a - single file, such as the name and last modification date. The zlib format - on the other hand was designed for in-memory and communication channel - applications, and has a much more compact header and trailer and uses a - faster integrity check than gzip. - -20. Well that's nice, but how do I make a gzip file in memory? - - You can request that deflate write the gzip format instead of the zlib - format using deflateInit2(). You can also request that inflate decode the - gzip format using inflateInit2(). Read zlib.h for more details. - -21. Is zlib thread-safe? - - Yes. However any library routines that zlib uses and any application- - provided memory allocation routines must also be thread-safe. zlib's gz* - functions use stdio library routines, and most of zlib's functions use the - library memory allocation routines by default. zlib's *Init* functions - allow for the application to provide custom memory allocation routines. - - Of course, you should only operate on any given zlib or gzip stream from a - single thread at a time. - -22. Can I use zlib in my commercial application? - - Yes. Please read the license in zlib.h. - -23. Is zlib under the GNU license? - - No. Please read the license in zlib.h. - -24. The license says that altered source versions must be "plainly marked". So - what exactly do I need to do to meet that requirement? - - You need to change the ZLIB_VERSION and ZLIB_VERNUM #defines in zlib.h. In - particular, the final version number needs to be changed to "f", and an - identification string should be appended to ZLIB_VERSION. Version numbers - x.x.x.f are reserved for modifications to zlib by others than the zlib - maintainers. For example, if the version of the base zlib you are altering - is "1.2.3.4", then in zlib.h you should change ZLIB_VERNUM to 0x123f, and - ZLIB_VERSION to something like "1.2.3.f-zachary-mods-v3". You can also - update the version strings in deflate.c and inftrees.c. - - For altered source distributions, you should also note the origin and - nature of the changes in zlib.h, as well as in ChangeLog and README, along - with the dates of the alterations. The origin should include at least your - name (or your company's name), and an email address to contact for help or - issues with the library. - - Note that distributing a compiled zlib library along with zlib.h and - zconf.h is also a source distribution, and so you should change - ZLIB_VERSION and ZLIB_VERNUM and note the origin and nature of the changes - in zlib.h as you would for a full source distribution. - -25. Will zlib work on a big-endian or little-endian architecture, and can I - exchange compressed data between them? - - Yes and yes. - -26. Will zlib work on a 64-bit machine? - - Yes. It has been tested on 64-bit machines, and has no dependence on any - data types being limited to 32-bits in length. If you have any - difficulties, please provide a complete problem report to zlib@gzip.org - -27. Will zlib decompress data from the PKWare Data Compression Library? - - No. The PKWare DCL uses a completely different compressed data format than - does PKZIP and zlib. However, you can look in zlib's contrib/blast - directory for a possible solution to your problem. - -28. Can I access data randomly in a compressed stream? - - No, not without some preparation. If when compressing you periodically use - Z_FULL_FLUSH, carefully write all the pending data at those points, and - keep an index of those locations, then you can start decompression at those - points. You have to be careful to not use Z_FULL_FLUSH too often, since it - can significantly degrade compression. Alternatively, you can scan a - deflate stream once to generate an index, and then use that index for - random access. See examples/zran.c . - -29. Does zlib work on MVS, OS/390, CICS, etc.? - - It has in the past, but we have not heard of any recent evidence. There - were working ports of zlib 1.1.4 to MVS, but those links no longer work. - If you know of recent, successful applications of zlib on these operating - systems, please let us know. Thanks. - -30. Is there some simpler, easier to read version of inflate I can look at to - understand the deflate format? - - First off, you should read RFC 1951. Second, yes. Look in zlib's - contrib/puff directory. - -31. Does zlib infringe on any patents? - - As far as we know, no. In fact, that was originally the whole point behind - zlib. Look here for some more information: - - http://www.gzip.org/#faq11 - -32. Can zlib work with greater than 4 GB of data? - - Yes. inflate() and deflate() will process any amount of data correctly. - Each call of inflate() or deflate() is limited to input and output chunks - of the maximum value that can be stored in the compiler's "unsigned int" - type, but there is no limit to the number of chunks. Note however that the - strm.total_in and strm_total_out counters may be limited to 4 GB. These - counters are provided as a convenience and are not used internally by - inflate() or deflate(). The application can easily set up its own counters - updated after each call of inflate() or deflate() to count beyond 4 GB. - compress() and uncompress() may be limited to 4 GB, since they operate in a - single call. gzseek() and gztell() may be limited to 4 GB depending on how - zlib is compiled. See the zlibCompileFlags() function in zlib.h. - - The word "may" appears several times above since there is a 4 GB limit only - if the compiler's "long" type is 32 bits. If the compiler's "long" type is - 64 bits, then the limit is 16 exabytes. - -33. Does zlib have any security vulnerabilities? - - The only one that we are aware of is potentially in gzprintf(). If zlib is - compiled to use sprintf() or vsprintf(), then there is no protection - against a buffer overflow of an 8K string space (or other value as set by - gzbuffer()), other than the caller of gzprintf() assuring that the output - will not exceed 8K. On the other hand, if zlib is compiled to use - snprintf() or vsnprintf(), which should normally be the case, then there is - no vulnerability. The ./configure script will display warnings if an - insecure variation of sprintf() will be used by gzprintf(). Also the - zlibCompileFlags() function will return information on what variant of - sprintf() is used by gzprintf(). - - If you don't have snprintf() or vsnprintf() and would like one, you can - find a portable implementation here: - - http://www.ijs.si/software/snprintf/ - - Note that you should be using the most recent version of zlib. Versions - 1.1.3 and before were subject to a double-free vulnerability, and versions - 1.2.1 and 1.2.2 were subject to an access exception when decompressing - invalid compressed data. - -34. Is there a Java version of zlib? - - Probably what you want is to use zlib in Java. zlib is already included - as part of the Java SDK in the java.util.zip package. If you really want - a version of zlib written in the Java language, look on the zlib home - page for links: http://zlib.net/ . - -35. I get this or that compiler or source-code scanner warning when I crank it - up to maximally-pedantic. Can't you guys write proper code? - - Many years ago, we gave up attempting to avoid warnings on every compiler - in the universe. It just got to be a waste of time, and some compilers - were downright silly as well as contradicted each other. So now, we simply - make sure that the code always works. - -36. Valgrind (or some similar memory access checker) says that deflate is - performing a conditional jump that depends on an uninitialized value. - Isn't that a bug? - - No. That is intentional for performance reasons, and the output of deflate - is not affected. This only started showing up recently since zlib 1.2.x - uses malloc() by default for allocations, whereas earlier versions used - calloc(), which zeros out the allocated memory. Even though the code was - correct, versions 1.2.4 and later was changed to not stimulate these - checkers. - -37. Will zlib read the (insert any ancient or arcane format here) compressed - data format? - - Probably not. Look in the comp.compression FAQ for pointers to various - formats and associated software. - -38. How can I encrypt/decrypt zip files with zlib? - - zlib doesn't support encryption. The original PKZIP encryption is very - weak and can be broken with freely available programs. To get strong - encryption, use GnuPG, http://www.gnupg.org/ , which already includes zlib - compression. For PKZIP compatible "encryption", look at - http://www.info-zip.org/ - -39. What's the difference between the "gzip" and "deflate" HTTP 1.1 encodings? - - "gzip" is the gzip format, and "deflate" is the zlib format. They should - probably have called the second one "zlib" instead to avoid confusion with - the raw deflate compressed data format. While the HTTP 1.1 RFC 2616 - correctly points to the zlib specification in RFC 1950 for the "deflate" - transfer encoding, there have been reports of servers and browsers that - incorrectly produce or expect raw deflate data per the deflate - specification in RFC 1951, most notably Microsoft. So even though the - "deflate" transfer encoding using the zlib format would be the more - efficient approach (and in fact exactly what the zlib format was designed - for), using the "gzip" transfer encoding is probably more reliable due to - an unfortunate choice of name on the part of the HTTP 1.1 authors. - - Bottom line: use the gzip format for HTTP 1.1 encoding. - -40. Does zlib support the new "Deflate64" format introduced by PKWare? - - No. PKWare has apparently decided to keep that format proprietary, since - they have not documented it as they have previous compression formats. In - any case, the compression improvements are so modest compared to other more - modern approaches, that it's not worth the effort to implement. - -41. I'm having a problem with the zip functions in zlib, can you help? - - There are no zip functions in zlib. You are probably using minizip by - Giles Vollant, which is found in the contrib directory of zlib. It is not - part of zlib. In fact none of the stuff in contrib is part of zlib. The - files in there are not supported by the zlib authors. You need to contact - the authors of the respective contribution for help. - -42. The match.asm code in contrib is under the GNU General Public License. - Since it's part of zlib, doesn't that mean that all of zlib falls under the - GNU GPL? - - No. The files in contrib are not part of zlib. They were contributed by - other authors and are provided as a convenience to the user within the zlib - distribution. Each item in contrib has its own license. - -43. Is zlib subject to export controls? What is its ECCN? - - zlib is not subject to export controls, and so is classified as EAR99. - -44. Can you please sign these lengthy legal documents and fax them back to us - so that we can use your software in our product? - - No. Go away. Shoo. diff --git a/common/zlib/Makefile b/common/zlib/Makefile deleted file mode 100644 index 2f68e0ea2..000000000 --- a/common/zlib/Makefile +++ /dev/null @@ -1,10 +0,0 @@ -MYSRCPATHS = ../../common/zlib -MYSRCS = deflate.c adler32.c trees.c zutil.c inflate.c inffast.c inftrees.c -MYINCLUDES = -I../../common/zlib -MYCFLAGS = -Wno-strict-prototypes -Wno-missing-prototypes -Wno-missing-declarations -Wno-old-style-definition -Wno-implicit-fallthrough -MYDEFS = -DZ_SOLO -DNO_GZIP -DZLIB_PM3_TUNED -#-DDEBUG -Dverbose=1 - -LIB_A = libz.a - -include ../../Makefile.host diff --git a/common/zlib/README b/common/zlib/README deleted file mode 100644 index 51106de47..000000000 --- a/common/zlib/README +++ /dev/null @@ -1,115 +0,0 @@ -ZLIB DATA COMPRESSION LIBRARY - -zlib 1.2.11 is a general purpose data compression library. All the code is -thread safe. The data format used by the zlib library is described by RFCs -(Request for Comments) 1950 to 1952 in the files -http://tools.ietf.org/html/rfc1950 (zlib format), rfc1951 (deflate format) and -rfc1952 (gzip format). - -All functions of the compression library are documented in the file zlib.h -(volunteer to write man pages welcome, contact zlib@gzip.org). A usage example -of the library is given in the file test/example.c which also tests that -the library is working correctly. Another example is given in the file -test/minigzip.c. The compression library itself is composed of all source -files in the root directory. - -To compile all files and run the test program, follow the instructions given at -the top of Makefile.in. In short "./configure; make test", and if that goes -well, "make install" should work for most flavors of Unix. For Windows, use -one of the special makefiles in win32/ or contrib/vstudio/ . For VMS, use -make_vms.com. - -Questions about zlib should be sent to <zlib@gzip.org>, or to Gilles Vollant -<info@winimage.com> for the Windows DLL version. The zlib home page is -http://zlib.net/ . Before reporting a problem, please check this site to -verify that you have the latest version of zlib; otherwise get the latest -version and check whether the problem still exists or not. - -PLEASE read the zlib FAQ http://zlib.net/zlib_faq.html before asking for help. - -Mark Nelson <markn@ieee.org> wrote an article about zlib for the Jan. 1997 -issue of Dr. Dobb's Journal; a copy of the article is available at -http://marknelson.us/1997/01/01/zlib-engine/ . - -The changes made in version 1.2.11 are documented in the file ChangeLog. - -Unsupported third party contributions are provided in directory contrib/ . - -zlib is available in Java using the java.util.zip package, documented at -http://java.sun.com/developer/technicalArticles/Programming/compression/ . - -A Perl interface to zlib written by Paul Marquess <pmqs@cpan.org> is available -at CPAN (Comprehensive Perl Archive Network) sites, including -http://search.cpan.org/~pmqs/IO-Compress-Zlib/ . - -A Python interface to zlib written by A.M. Kuchling <amk@amk.ca> is -available in Python 1.5 and later versions, see -http://docs.python.org/library/zlib.html . - -zlib is built into tcl: http://wiki.tcl.tk/4610 . - -An experimental package to read and write files in .zip format, written on top -of zlib by Gilles Vollant <info@winimage.com>, is available in the -contrib/minizip directory of zlib. - - -Notes for some targets: - -- For Windows DLL versions, please see win32/DLL_FAQ.txt - -- For 64-bit Irix, deflate.c must be compiled without any optimization. With - -O, one libpng test fails. The test works in 32 bit mode (with the -n32 - compiler flag). The compiler bug has been reported to SGI. - -- zlib doesn't work with gcc 2.6.3 on a DEC 3000/300LX under OSF/1 2.1 it works - when compiled with cc. - -- On Digital Unix 4.0D (formely OSF/1) on AlphaServer, the cc option -std1 is - necessary to get gzprintf working correctly. This is done by configure. - -- zlib doesn't work on HP-UX 9.05 with some versions of /bin/cc. It works with - other compilers. Use "make test" to check your compiler. - -- gzdopen is not supported on RISCOS or BEOS. - -- For PalmOs, see http://palmzlib.sourceforge.net/ - - -Acknowledgments: - - The deflate format used by zlib was defined by Phil Katz. The deflate and - zlib specifications were written by L. Peter Deutsch. Thanks to all the - people who reported problems and suggested various improvements in zlib; they - are too numerous to cite here. - -Copyright notice: - - (C) 1995-2017 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - -If you use the zlib library in a product, we would appreciate *not* receiving -lengthy legal documents to sign. The sources are provided for free but without -warranty of any kind. The library has been entirely written by Jean-loup -Gailly and Mark Adler; it does not include third-party code. - -If you redistribute modified sources, we would appreciate that you include in -the file ChangeLog history information documenting your changes. Please read -the FAQ for more information on the distribution of modified source versions. diff --git a/common/zlib/README_proxmark3 b/common/zlib/README_proxmark3 deleted file mode 100644 index 0c7babf57..000000000 --- a/common/zlib/README_proxmark3 +++ /dev/null @@ -1,63 +0,0 @@ -This version of zlib is modified for use within the Proxmark3 project. -Files from the original distribution which are not required for this -purpose are not included. All modifications can easily be found -by searching for #ifdef ZLIB_PM3_TUNED and #ifndef ZLIB_PM3_TUNED. - -Current zlib base version is 1.2.11 - -ChangeLog for Proxmark3 project only ------------------------------------- - -Changes in 1.2.11.f-Proxmark3 (26 May 2015) -- port 1.2.11 upstream changes to 1.2.8.f-Proxmark3 - -Changes in 1.2.8.f-Proxmark3 (26 May 2015) -- disable decoding of fixed code blocks in deflate (eliminates the need - to store the fixed tree in RAM or ROM) -- disable generating fixed code blocks in inflate -- look harder for local optimum of consecutive matches and single literals - in inflate. -- stripped down version - unnecessary files from original distribution - are not included - -Notes on porting 1.2.11 upstream changes to 1.2.8.f-Proxmark3 -------------------------------------------------------------- - -mkdir zlib-1.2.8-stripped -for f in adler32.c ChangeLog deflate.c deflate.h FAQ inffast.c inffast.h inffixed.h inflate.c inflate.h inftrees.c inftrees.h README trees.c trees.h zconf.h zlib.h zutil.c zutil.h; do - cp zlib-1.2.8/$f zlib-1.2.8-stripped -done -# make style -find zlib-1.2.8-stripped -name "*.[ch]" \ - -exec perl -pi -e 's/[ \t]+$$//' {} \; \ - -exec sh -c "tail -c1 {} | xxd -p | tail -1 | grep -q -v 0a$$" \; \ - -exec sh -c "echo >> {}" \; \ - -exec astyle --formatted --mode=c --suffix=none \ - --indent=spaces=4 --indent-switches \ - --keep-one-line-blocks --max-instatement-indent=60 \ - --style=google --pad-oper --unpad-paren --pad-header \ - --align-pointer=name {} \; -diff -Naur zlib-1.2.8-stripped zlib > zlib-1.2.8-pm3.diff - -mkdir zlib-1.2.11-stripped -for f in adler32.c ChangeLog deflate.c deflate.h FAQ inffast.c inffast.h inffixed.h inflate.c inflate.h inftrees.c inftrees.h README trees.c trees.h zconf.h zlib.h zutil.c zutil.h; do - cp zlib-1.2.11/$f zlib-1.2.11-stripped -done -# make style -find zlib-1.2.11-stripped -name "*.[ch]" \ - -exec perl -pi -e 's/[ \t]+$$//' {} \; \ - -exec sh -c "tail -c1 {} | xxd -p | tail -1 | grep -q -v 0a$$" \; \ - -exec sh -c "echo >> {}" \; \ - -exec astyle --formatted --mode=c --suffix=none \ - --indent=spaces=4 --indent-switches \ - --keep-one-line-blocks --max-instatement-indent=60 \ - --style=google --pad-oper --unpad-paren --pad-header \ - --align-pointer=name {} \; - -diff -Naur zlib-1.2.8-stripped zlib-1.2.11-stripped > zlib-1.2.8-to-1.2.11.diff - -cd zlib -patch -p1 < ../zlib-1.2.8-to-1.2.11.diff -# fix .rej files manually... - -diff -Naur zlib-1.2.11-stripped zlib > zlib-1.2.11-pm3.diff diff --git a/common/zlib/adler32.c b/common/zlib/adler32.c deleted file mode 100644 index 962e1ee91..000000000 --- a/common/zlib/adler32.c +++ /dev/null @@ -1,187 +0,0 @@ -/* adler32.c -- compute the Adler-32 checksum of a data stream - * Copyright (C) 1995-2011, 2016 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#include "zutil.h" - -local uLong adler32_combine_ OF((uLong adler1, uLong adler2, z_off64_t len2)); - -#define BASE 65521U /* largest prime smaller than 65536 */ -#define NMAX 5552 -/* NMAX is the largest n such that 255n(n+1)/2 + (n+1)(BASE-1) <= 2^32-1 */ - -#define DO1(buf,i) {adler += (buf)[i]; sum2 += adler;} -#define DO2(buf,i) DO1(buf,i); DO1(buf,i+1); -#define DO4(buf,i) DO2(buf,i); DO2(buf,i+2); -#define DO8(buf,i) DO4(buf,i); DO4(buf,i+4); -#define DO16(buf) DO8(buf,0); DO8(buf,8); - -/* use NO_DIVIDE if your processor does not do division in hardware -- - try it both ways to see which is faster */ -#ifdef NO_DIVIDE -/* note that this assumes BASE is 65521, where 65536 % 65521 == 15 - (thank you to John Reiser for pointing this out) */ -# define CHOP(a) \ - do { \ - unsigned long tmp = a >> 16; \ - a &= 0xffffUL; \ - a += (tmp << 4) - tmp; \ - } while (0) -# define MOD28(a) \ - do { \ - CHOP(a); \ - if (a >= BASE) a -= BASE; \ - } while (0) -# define MOD(a) \ - do { \ - CHOP(a); \ - MOD28(a); \ - } while (0) -# define MOD63(a) \ - do { /* this assumes a is not negative */ \ - z_off64_t tmp = a >> 32; \ - a &= 0xffffffffL; \ - a += (tmp << 8) - (tmp << 5) + tmp; \ - tmp = a >> 16; \ - a &= 0xffffL; \ - a += (tmp << 4) - tmp; \ - tmp = a >> 16; \ - a &= 0xffffL; \ - a += (tmp << 4) - tmp; \ - if (a >= BASE) a -= BASE; \ - } while (0) -#else -# define MOD(a) a %= BASE -# define MOD28(a) a %= BASE -# define MOD63(a) a %= BASE -#endif - -/* ========================================================================= */ -uLong ZEXPORT adler32_z(adler, buf, len) -uLong adler; -const Bytef *buf; -z_size_t len; -{ - unsigned long sum2; - unsigned n; - - /* split Adler-32 into component sums */ - sum2 = (adler >> 16) & 0xffff; - adler &= 0xffff; - - /* in case user likes doing a byte at a time, keep it fast */ - if (len == 1) { - adler += buf[0]; - if (adler >= BASE) - adler -= BASE; - sum2 += adler; - if (sum2 >= BASE) - sum2 -= BASE; - return adler | (sum2 << 16); - } - - /* initial Adler-32 value (deferred check for len == 1 speed) */ - if (buf == Z_NULL) - return 1L; - - /* in case short lengths are provided, keep it somewhat fast */ - if (len < 16) { - while (len--) { - adler += *buf++; - sum2 += adler; - } - if (adler >= BASE) - adler -= BASE; - MOD28(sum2); /* only added so many BASE's */ - return adler | (sum2 << 16); - } - - /* do length NMAX blocks -- requires just one modulo operation */ - while (len >= NMAX) { - len -= NMAX; - n = NMAX / 16; /* NMAX is divisible by 16 */ - do { - DO16(buf); /* 16 sums unrolled */ - buf += 16; - } while (--n); - MOD(adler); - MOD(sum2); - } - - /* do remaining bytes (less than NMAX, still just one modulo) */ - if (len) { /* avoid modulos if none remaining */ - while (len >= 16) { - len -= 16; - DO16(buf); - buf += 16; - } - while (len--) { - adler += *buf++; - sum2 += adler; - } - MOD(adler); - MOD(sum2); - } - - /* return recombined sums */ - return adler | (sum2 << 16); -} - -/* ========================================================================= */ -uLong ZEXPORT adler32(adler, buf, len) -uLong adler; -const Bytef *buf; -uInt len; -{ - return adler32_z(adler, buf, len); -} - -/* ========================================================================= */ -local uLong adler32_combine_(adler1, adler2, len2) -uLong adler1; -uLong adler2; -z_off64_t len2; -{ - unsigned long sum1; - unsigned long sum2; - unsigned rem; - - /* for negative len, return invalid adler32 as a clue for debugging */ - if (len2 < 0) - return 0xffffffffUL; - - /* the derivation of this formula is left as an exercise for the reader */ - MOD63(len2); /* assumes len2 >= 0 */ - rem = (unsigned)len2; - sum1 = adler1 & 0xffff; - sum2 = rem * sum1; - MOD(sum2); - sum1 += (adler2 & 0xffff) + BASE - 1; - sum2 += ((adler1 >> 16) & 0xffff) + ((adler2 >> 16) & 0xffff) + BASE - rem; - if (sum1 >= BASE) sum1 -= BASE; - if (sum1 >= BASE) sum1 -= BASE; - if (sum2 >= ((unsigned long)BASE << 1)) sum2 -= ((unsigned long)BASE << 1); - if (sum2 >= BASE) sum2 -= BASE; - return sum1 | (sum2 << 16); -} - -/* ========================================================================= */ -uLong ZEXPORT adler32_combine(adler1, adler2, len2) -uLong adler1; -uLong adler2; -z_off_t len2; -{ - return adler32_combine_(adler1, adler2, len2); -} - -uLong ZEXPORT adler32_combine64(adler1, adler2, len2) -uLong adler1; -uLong adler2; -z_off64_t len2; -{ - return adler32_combine_(adler1, adler2, len2); -} - diff --git a/common/zlib/deflate.c b/common/zlib/deflate.c deleted file mode 100644 index f06654f95..000000000 --- a/common/zlib/deflate.c +++ /dev/null @@ -1,2257 +0,0 @@ -/* deflate.c -- compress data using the deflation algorithm - * Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - * ALGORITHM - * - * The "deflation" process depends on being able to identify portions - * of the input text which are identical to earlier input (within a - * sliding window trailing behind the input currently being processed). - * - * The most straightforward technique turns out to be the fastest for - * most input files: try all possible matches and select the longest. - * The key feature of this algorithm is that insertions into the string - * dictionary are very simple and thus fast, and deletions are avoided - * completely. Insertions are performed at each input character, whereas - * string matches are performed only when the previous match ends. So it - * is preferable to spend more time in matches to allow very fast string - * insertions and avoid deletions. The matching algorithm for small - * strings is inspired from that of Rabin & Karp. A brute force approach - * is used to find longer strings when a small match has been found. - * A similar algorithm is used in comic (by Jan-Mark Wams) and freeze - * (by Leonid Broukhis). - * A previous version of this file used a more sophisticated algorithm - * (by Fiala and Greene) which is guaranteed to run in linear amortized - * time, but has a larger average cost, uses more memory and is patented. - * However the F&G algorithm may be faster for some highly redundant - * files if the parameter max_chain_length (described below) is too large. - * - * ACKNOWLEDGEMENTS - * - * The idea of lazy evaluation of matches is due to Jan-Mark Wams, and - * I found it in 'freeze' written by Leonid Broukhis. - * Thanks to many people for bug reports and testing. - * - * REFERENCES - * - * Deutsch, L.P.,"DEFLATE Compressed Data Format Specification". - * Available in http://tools.ietf.org/html/rfc1951 - * - * A description of the Rabin and Karp algorithm is given in the book - * "Algorithms" by R. Sedgewick, Addison-Wesley, p252. - * - * Fiala,E.R., and Greene,D.H. - * Data Compression with Finite Windows, Comm.ACM, 32,4 (1989) 490-595 - * - */ - -/* @(#) $Id$ */ - -#include "deflate.h" - -const char deflate_copyright[] = -#ifdef ZLIB_PM3_TUNED - " deflate 1.2.11.f-Proxmark3 Copyright 1995-2017 Jean-loup Gailly and Mark Adler "; -#else - " deflate 1.2.11 Copyright 1995-2017 Jean-loup Gailly and Mark Adler "; -#endif -/* - If you use the zlib library in a product, an acknowledgment is welcome - in the documentation of your product. If for some reason you cannot - include such an acknowledgment, I would appreciate that you keep this - copyright string in the executable of your product. - */ - -/* =========================================================================== - * Function prototypes. - */ -typedef enum { - need_more, /* block not completed, need more input or more output */ - block_done, /* block flush performed */ - finish_started, /* finish started, need only more output at next deflate */ - finish_done /* finish done, accept no more input or output */ -} block_state; - -typedef block_state(*compress_func) OF((deflate_state *s, int flush)); -/* Compression function. Returns the block state after the call. */ - -local int deflateStateCheck OF((z_streamp strm)); -local void slide_hash OF((deflate_state *s)); -local void fill_window OF((deflate_state *s)); -local block_state deflate_stored OF((deflate_state *s, int flush)); -local block_state deflate_fast OF((deflate_state *s, int flush)); -#ifdef ZLIB_PM3_TUNED -local uInt try_harder OF((deflate_state *s, uInt strstart, uInt lookahead, IPos hash_head)); -#endif -#ifndef FASTEST -local block_state deflate_slow OF((deflate_state *s, int flush)); -#endif -local block_state deflate_rle OF((deflate_state *s, int flush)); -local block_state deflate_huff OF((deflate_state *s, int flush)); -local void lm_init OF((deflate_state *s)); -local void putShortMSB OF((deflate_state *s, uInt b)); -local void flush_pending OF((z_streamp strm)); -local unsigned read_buf OF((z_streamp strm, Bytef *buf, unsigned size)); -#ifdef ASMV -# pragma message("Assembler code may have bugs -- use at your own risk") -void match_init OF((void)); /* asm code initialization */ -uInt longest_match OF((deflate_state *s, IPos cur_match)); -#else -local uInt longest_match OF((deflate_state *s, IPos cur_match)); -#endif - -#ifdef ZLIB_DEBUG -local void check_match OF((deflate_state *s, IPos start, IPos match, - int length)); -#endif - -/* =========================================================================== - * Local data - */ - -#define NIL 0 -/* Tail of hash chains */ - -#ifndef TOO_FAR -# define TOO_FAR 4096 -#endif -/* Matches of length 3 are discarded if their distance exceeds TOO_FAR */ - -/* Values for max_lazy_match, good_match and max_chain_length, depending on - * the desired pack level (0..9). The values given below have been tuned to - * exclude worst case performance for pathological files. Better values may be - * found for specific files. - */ -typedef struct config_s { - ush good_length; /* reduce lazy search above this match length */ - ush max_lazy; /* do not perform lazy search above this match length */ - ush nice_length; /* quit search above this match length */ - ush max_chain; - compress_func func; -} config; - -#ifdef FASTEST -local const config configuration_table[2] = { - /* good lazy nice chain */ - /* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */ - /* 1 */ {4, 4, 8, 4, deflate_fast} -}; /* max speed, no lazy matches */ -#else -local const config configuration_table[10] = { - /* good lazy nice chain */ - /* 0 */ {0, 0, 0, 0, deflate_stored}, /* store only */ - /* 1 */ {4, 4, 8, 4, deflate_fast}, /* max speed, no lazy matches */ - /* 2 */ {4, 5, 16, 8, deflate_fast}, - /* 3 */ {4, 6, 32, 32, deflate_fast}, - - /* 4 */ {4, 4, 16, 16, deflate_slow}, /* lazy matches */ - /* 5 */ {8, 16, 32, 32, deflate_slow}, - /* 6 */ {8, 16, 128, 128, deflate_slow}, - /* 7 */ {8, 32, 128, 256, deflate_slow}, - /* 8 */ {32, 128, 258, 1024, deflate_slow}, - /* 9 */ {32, 258, 258, 4096, deflate_slow} -}; /* max compression */ -#endif - -/* Note: the deflate() code requires max_lazy >= MIN_MATCH and max_chain >= 4 - * For deflate_fast() (levels <= 3) good is ignored and lazy has a different - * meaning. - */ - -/* rank Z_BLOCK between Z_NO_FLUSH and Z_PARTIAL_FLUSH */ -#define RANK(f) (((f) * 2) - ((f) > 4 ? 9 : 0)) - -/* =========================================================================== - * Update a hash value with the given input byte - * IN assertion: all calls to UPDATE_HASH are made with consecutive input - * characters, so that a running hash key can be computed from the previous - * key instead of complete recalculation each time. - */ -#define UPDATE_HASH(s,h,c) (h = (((h)<<s->hash_shift) ^ (c)) & s->hash_mask) - - -/* =========================================================================== - * Insert string str in the dictionary and set match_head to the previous head - * of the hash chain (the most recent string with same hash key). Return - * the previous length of the hash chain. - * If this file is compiled with -DFASTEST, the compression level is forced - * to 1, and no hash chains are maintained. - * IN assertion: all calls to INSERT_STRING are made with consecutive input - * characters and the first MIN_MATCH bytes of str are valid (except for - * the last MIN_MATCH-1 bytes of the input file). - */ -#ifdef FASTEST -#define INSERT_STRING(s, str, match_head) \ - (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ - match_head = s->head[s->ins_h], \ - s->head[s->ins_h] = (Pos)(str)) -#else -#define INSERT_STRING(s, str, match_head) \ - (UPDATE_HASH(s, s->ins_h, s->window[(str) + (MIN_MATCH-1)]), \ - match_head = s->prev[(str) & s->w_mask] = s->head[s->ins_h], \ - s->head[s->ins_h] = (Pos)(str)) -#endif - -/* =========================================================================== - * Initialize the hash table (avoiding 64K overflow for 16 bit systems). - * prev[] will be initialized on the fly. - */ -#define CLEAR_HASH(s) {\ - s->head[s->hash_size-1] = NIL; \ - zmemzero((Bytef *)s->head, (unsigned)(s->hash_size-1)*sizeof(*s->head)); \ -} - -/* =========================================================================== - * Slide the hash table when sliding the window down (could be avoided with 32 - * bit values at the expense of memory usage). We slide even when level == 0 to - * keep the hash table consistent if we switch back to level > 0 later. - */ -local void slide_hash(s) -deflate_state *s; -{ - unsigned n, m; - Posf *p; - uInt wsize = s->w_size; - - n = s->hash_size; - p = &s->head[n]; - do { - m = *--p; - *p = (Pos)(m >= wsize ? m - wsize : NIL); - } while (--n); - n = wsize; -#ifndef FASTEST - p = &s->prev[n]; - do { - m = *--p; - *p = (Pos)(m >= wsize ? m - wsize : NIL); - /* If n is not on any hash chain, prev[n] is garbage but - * its value will never be used. - */ - } while (--n); -#endif -} - -/* ========================================================================= */ -int ZEXPORT deflateInit_(strm, level, version, stream_size) -z_streamp strm; -int level; -const char *version; -int stream_size; -{ - return deflateInit2_(strm, level, Z_DEFLATED, MAX_WBITS, DEF_MEM_LEVEL, - Z_DEFAULT_STRATEGY, version, stream_size); - /* To do: ignore strm->next_in if we use it as window */ -} - -/* ========================================================================= */ -int ZEXPORT deflateInit2_(strm, level, method, windowBits, memLevel, strategy, - version, stream_size) -z_streamp strm; -int level; -int method; -int windowBits; -int memLevel; -int strategy; -const char *version; -int stream_size; -{ - deflate_state *s; - int wrap = 1; - static const char my_version[] = ZLIB_VERSION; - - ushf *overlay; - /* We overlay pending_buf and d_buf+l_buf. This works since the average - * output size for (length,distance) codes is <= 24 bits. - */ - - if (version == Z_NULL || version[0] != my_version[0] || - stream_size != sizeof(z_stream)) { - return Z_VERSION_ERROR; - } - if (strm == Z_NULL) return Z_STREAM_ERROR; - - strm->msg = Z_NULL; - if (strm->zalloc == (alloc_func)0) { -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zalloc = zcalloc; - strm->opaque = (voidpf)0; -#endif - } - if (strm->zfree == (free_func)0) -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zfree = zcfree; -#endif - -#ifdef FASTEST - if (level != 0) level = 1; -#else - if (level == Z_DEFAULT_COMPRESSION) level = 6; -#endif - - if (windowBits < 0) { /* suppress zlib wrapper */ - wrap = 0; - windowBits = -windowBits; - } -#ifdef GZIP - else if (windowBits > 15) { - wrap = 2; /* write gzip wrapper instead */ - windowBits -= 16; - } -#endif - if (memLevel < 1 || memLevel > MAX_MEM_LEVEL || method != Z_DEFLATED || - windowBits < 8 || windowBits > 15 || level < 0 || level > 9 || - strategy < 0 || strategy > Z_FIXED || (windowBits == 8 && wrap != 1)) { - return Z_STREAM_ERROR; - } - if (windowBits == 8) windowBits = 9; /* until 256-byte window bug fixed */ - s = (deflate_state *) ZALLOC(strm, 1, sizeof(deflate_state)); - if (s == Z_NULL) return Z_MEM_ERROR; - strm->state = (struct internal_state FAR *)s; - s->strm = strm; - s->status = INIT_STATE; /* to pass state test in deflateReset() */ - - s->wrap = wrap; - s->gzhead = Z_NULL; - s->w_bits = (uInt)windowBits; - s->w_size = 1 << s->w_bits; - s->w_mask = s->w_size - 1; - - s->hash_bits = (uInt)memLevel + 7; - s->hash_size = 1 << s->hash_bits; - s->hash_mask = s->hash_size - 1; - s->hash_shift = ((s->hash_bits + MIN_MATCH - 1) / MIN_MATCH); - - s->window = (Bytef *) ZALLOC(strm, s->w_size, 2 * sizeof(Byte)); - s->prev = (Posf *) ZALLOC(strm, s->w_size, sizeof(Pos)); - s->head = (Posf *) ZALLOC(strm, s->hash_size, sizeof(Pos)); - - s->high_water = 0; /* nothing written to s->window yet */ - - s->lit_bufsize = 1 << (memLevel + 6); /* 16K elements by default */ - - overlay = (ushf *) ZALLOC(strm, s->lit_bufsize, sizeof(ush) + 2); - s->pending_buf = (uchf *) overlay; - s->pending_buf_size = (ulg)s->lit_bufsize * (sizeof(ush) + 2L); - - if (s->window == Z_NULL || s->prev == Z_NULL || s->head == Z_NULL || - s->pending_buf == Z_NULL) { - s->status = FINISH_STATE; - strm->msg = ERR_MSG(Z_MEM_ERROR); - deflateEnd(strm); - return Z_MEM_ERROR; - } - s->d_buf = overlay + s->lit_bufsize / sizeof(ush); - s->l_buf = s->pending_buf + (1 + sizeof(ush)) * s->lit_bufsize; - - s->level = level; - s->strategy = strategy; - s->method = (Byte)method; - - return deflateReset(strm); -} - -/* ========================================================================= - * Check for a valid deflate stream state. Return 0 if ok, 1 if not. - */ -local int deflateStateCheck(strm) -z_streamp strm; -{ - deflate_state *s; - if (strm == Z_NULL || - strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) - return 1; - s = strm->state; - if (s == Z_NULL || s->strm != strm || (s->status != INIT_STATE && -#ifdef GZIP - s->status != GZIP_STATE && -#endif - s->status != EXTRA_STATE && - s->status != NAME_STATE && - s->status != COMMENT_STATE && - s->status != HCRC_STATE && - s->status != BUSY_STATE && - s->status != FINISH_STATE)) - return 1; - return 0; -} - -/* ========================================================================= */ -int ZEXPORT deflateSetDictionary(strm, dictionary, dictLength) -z_streamp strm; -const Bytef *dictionary; -uInt dictLength; -{ - deflate_state *s; - uInt str, n; - int wrap; - unsigned avail; - z_const unsigned char *next; - - if (deflateStateCheck(strm) || dictionary == Z_NULL) - return Z_STREAM_ERROR; - s = strm->state; - wrap = s->wrap; - if (wrap == 2 || (wrap == 1 && s->status != INIT_STATE) || s->lookahead) - return Z_STREAM_ERROR; - - /* when using zlib wrappers, compute Adler-32 for provided dictionary */ - if (wrap == 1) - strm->adler = adler32(strm->adler, dictionary, dictLength); - s->wrap = 0; /* avoid computing Adler-32 in read_buf */ - - /* if dictionary would fill window, just replace the history */ - if (dictLength >= s->w_size) { - if (wrap == 0) { /* already empty otherwise */ - CLEAR_HASH(s); - s->strstart = 0; - s->block_start = 0L; - s->insert = 0; - } - dictionary += dictLength - s->w_size; /* use the tail */ - dictLength = s->w_size; - } - - /* insert dictionary into window and hash */ - avail = strm->avail_in; - next = strm->next_in; - strm->avail_in = dictLength; - strm->next_in = (z_const Bytef *)dictionary; - fill_window(s); - while (s->lookahead >= MIN_MATCH) { - str = s->strstart; - n = s->lookahead - (MIN_MATCH - 1); - do { - UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH - 1]); -#ifndef FASTEST - s->prev[str & s->w_mask] = s->head[s->ins_h]; -#endif - s->head[s->ins_h] = (Pos)str; - str++; - } while (--n); - s->strstart = str; - s->lookahead = MIN_MATCH - 1; - fill_window(s); - } - s->strstart += s->lookahead; - s->block_start = (long)s->strstart; - s->insert = s->lookahead; - s->lookahead = 0; - s->match_length = s->prev_length = MIN_MATCH - 1; - s->match_available = 0; - strm->next_in = next; - strm->avail_in = avail; - s->wrap = wrap; - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflateGetDictionary(strm, dictionary, dictLength) -z_streamp strm; -Bytef *dictionary; -uInt *dictLength; -{ - deflate_state *s; - uInt len; - - if (deflateStateCheck(strm)) - return Z_STREAM_ERROR; - s = strm->state; - len = s->strstart + s->lookahead; - if (len > s->w_size) - len = s->w_size; - if (dictionary != Z_NULL && len) - zmemcpy(dictionary, s->window + s->strstart + s->lookahead - len, len); - if (dictLength != Z_NULL) - *dictLength = len; - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflateResetKeep(strm) -z_streamp strm; -{ - deflate_state *s; - - if (deflateStateCheck(strm)) { - return Z_STREAM_ERROR; - } - - strm->total_in = strm->total_out = 0; - strm->msg = Z_NULL; /* use zfree if we ever allocate msg dynamically */ - strm->data_type = Z_UNKNOWN; - - s = (deflate_state *)strm->state; - s->pending = 0; - s->pending_out = s->pending_buf; - - if (s->wrap < 0) { - s->wrap = -s->wrap; /* was made negative by deflate(..., Z_FINISH); */ - } - s->status = -#ifdef GZIP - s->wrap == 2 ? GZIP_STATE : -#endif - s->wrap ? INIT_STATE : BUSY_STATE; - strm->adler = -#ifdef GZIP - s->wrap == 2 ? crc32(0L, Z_NULL, 0) : -#endif - adler32(0L, Z_NULL, 0); - s->last_flush = Z_NO_FLUSH; - - _tr_init(s); - - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflateReset(strm) -z_streamp strm; -{ - int ret; - - ret = deflateResetKeep(strm); - if (ret == Z_OK) - lm_init(strm->state); - return ret; -} - -/* ========================================================================= */ -int ZEXPORT deflateSetHeader(strm, head) -z_streamp strm; -gz_headerp head; -{ - if (deflateStateCheck(strm) || strm->state->wrap != 2) - return Z_STREAM_ERROR; - strm->state->gzhead = head; - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflatePending(strm, pending, bits) -unsigned *pending; -int *bits; -z_streamp strm; -{ - if (deflateStateCheck(strm)) return Z_STREAM_ERROR; - if (pending != Z_NULL) - *pending = strm->state->pending; - if (bits != Z_NULL) - *bits = strm->state->bi_valid; - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflatePrime(strm, bits, value) -z_streamp strm; -int bits; -int value; -{ - deflate_state *s; - int put; - - if (deflateStateCheck(strm)) return Z_STREAM_ERROR; - s = strm->state; - if ((Bytef *)(s->d_buf) < s->pending_out + ((Buf_size + 7) >> 3)) - return Z_BUF_ERROR; - do { - put = Buf_size - s->bi_valid; - if (put > bits) - put = bits; - s->bi_buf |= (ush)((value & ((1 << put) - 1)) << s->bi_valid); - s->bi_valid += put; - _tr_flush_bits(s); - value >>= put; - bits -= put; - } while (bits); - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflateParams(strm, level, strategy) -z_streamp strm; -int level; -int strategy; -{ - deflate_state *s; - compress_func func; - - if (deflateStateCheck(strm)) return Z_STREAM_ERROR; - s = strm->state; - -#ifdef FASTEST - if (level != 0) level = 1; -#else - if (level == Z_DEFAULT_COMPRESSION) level = 6; -#endif - if (level < 0 || level > 9 || strategy < 0 || strategy > Z_FIXED) { - return Z_STREAM_ERROR; - } - func = configuration_table[s->level].func; - - if ((strategy != s->strategy || func != configuration_table[level].func) && - s->high_water) { - /* Flush the last buffer: */ - int err = deflate(strm, Z_BLOCK); - if (err == Z_STREAM_ERROR) - return err; - if (strm->avail_out == 0) - return Z_BUF_ERROR; - } - if (s->level != level) { - if (s->level == 0 && s->matches != 0) { - if (s->matches == 1) - slide_hash(s); - else - CLEAR_HASH(s); - s->matches = 0; - } - s->level = level; - s->max_lazy_match = configuration_table[level].max_lazy; - s->good_match = configuration_table[level].good_length; - s->nice_match = configuration_table[level].nice_length; - s->max_chain_length = configuration_table[level].max_chain; - } - s->strategy = strategy; - return Z_OK; -} - -/* ========================================================================= */ -int ZEXPORT deflateTune(strm, good_length, max_lazy, nice_length, max_chain) -z_streamp strm; -int good_length; -int max_lazy; -int nice_length; -int max_chain; -{ - deflate_state *s; - - if (deflateStateCheck(strm)) return Z_STREAM_ERROR; - s = strm->state; - s->good_match = (uInt)good_length; - s->max_lazy_match = (uInt)max_lazy; - s->nice_match = nice_length; - s->max_chain_length = (uInt)max_chain; - return Z_OK; -} - -/* ========================================================================= - * For the default windowBits of 15 and memLevel of 8, this function returns - * a close to exact, as well as small, upper bound on the compressed size. - * They are coded as constants here for a reason--if the #define's are - * changed, then this function needs to be changed as well. The return - * value for 15 and 8 only works for those exact settings. - * - * For any setting other than those defaults for windowBits and memLevel, - * the value returned is a conservative worst case for the maximum expansion - * resulting from using fixed blocks instead of stored blocks, which deflate - * can emit on compressed data for some combinations of the parameters. - * - * This function could be more sophisticated to provide closer upper bounds for - * every combination of windowBits and memLevel. But even the conservative - * upper bound of about 14% expansion does not seem onerous for output buffer - * allocation. - */ -uLong ZEXPORT deflateBound(strm, sourceLen) -z_streamp strm; -uLong sourceLen; -{ - deflate_state *s; - uLong complen, wraplen; - - /* conservative upper bound for compressed data */ - complen = sourceLen + - ((sourceLen + 7) >> 3) + ((sourceLen + 63) >> 6) + 5; - - /* if can't get parameters, return conservative bound plus zlib wrapper */ - if (deflateStateCheck(strm)) - return complen + 6; - - /* compute wrapper length */ - s = strm->state; - switch (s->wrap) { - case 0: /* raw deflate */ - wraplen = 0; - break; - case 1: /* zlib wrapper */ - wraplen = 6 + (s->strstart ? 4 : 0); - break; -#ifdef GZIP - case 2: /* gzip wrapper */ - wraplen = 18; - if (s->gzhead != Z_NULL) { /* user-supplied gzip header */ - Bytef *str; - if (s->gzhead->extra != Z_NULL) - wraplen += 2 + s->gzhead->extra_len; - str = s->gzhead->name; - if (str != Z_NULL) - do { - wraplen++; - } while (*str++); - str = s->gzhead->comment; - if (str != Z_NULL) - do { - wraplen++; - } while (*str++); - if (s->gzhead->hcrc) - wraplen += 2; - } - break; -#endif - default: /* for compiler happiness */ - wraplen = 6; - } - - /* if not default parameters, return conservative bound */ - if (s->w_bits != 15 || s->hash_bits != 8 + 7) - return complen + wraplen; - - /* default settings: return tight bound for that case */ - return sourceLen + (sourceLen >> 12) + (sourceLen >> 14) + - (sourceLen >> 25) + 13 - 6 + wraplen; -} - -/* ========================================================================= - * Put a short in the pending buffer. The 16-bit value is put in MSB order. - * IN assertion: the stream state is correct and there is enough room in - * pending_buf. - */ -local void putShortMSB(s, b) -deflate_state *s; -uInt b; -{ - put_byte(s, (Byte)(b >> 8)); - put_byte(s, (Byte)(b & 0xff)); -} - -/* ========================================================================= - * Flush as much pending output as possible. All deflate() output, except for - * some deflate_stored() output, goes through this function so some - * applications may wish to modify it to avoid allocating a large - * strm->next_out buffer and copying into it. (See also read_buf()). - */ -local void flush_pending(strm) -z_streamp strm; -{ - unsigned len; - deflate_state *s = strm->state; - - _tr_flush_bits(s); - len = s->pending; - if (len > strm->avail_out) len = strm->avail_out; - if (len == 0) return; - - zmemcpy(strm->next_out, s->pending_out, len); - strm->next_out += len; - s->pending_out += len; - strm->total_out += len; - strm->avail_out -= len; - s->pending -= len; - if (s->pending == 0) { - s->pending_out = s->pending_buf; - } -} - -/* =========================================================================== - * Update the header CRC with the bytes s->pending_buf[beg..s->pending - 1]. - */ -#define HCRC_UPDATE(beg) \ - do { \ - if (s->gzhead->hcrc && s->pending > (beg)) \ - strm->adler = crc32(strm->adler, s->pending_buf + (beg), \ - s->pending - (beg)); \ - } while (0) - -/* ========================================================================= */ -int ZEXPORT deflate(strm, flush) -z_streamp strm; -int flush; -{ - int old_flush; /* value of flush param for previous deflate call */ - deflate_state *s; - - if (deflateStateCheck(strm) || flush > Z_BLOCK || flush < 0) { - return Z_STREAM_ERROR; - } - s = strm->state; - - if (strm->next_out == Z_NULL || - (strm->avail_in != 0 && strm->next_in == Z_NULL) || - (s->status == FINISH_STATE && flush != Z_FINISH)) { - ERR_RETURN(strm, Z_STREAM_ERROR); - } - if (strm->avail_out == 0) ERR_RETURN(strm, Z_BUF_ERROR); - - old_flush = s->last_flush; - s->last_flush = flush; - - /* Flush as much pending output as possible */ - if (s->pending != 0) { - flush_pending(strm); - if (strm->avail_out == 0) { - /* Since avail_out is 0, deflate will be called again with - * more output space, but possibly with both pending and - * avail_in equal to zero. There won't be anything to do, - * but this is not an error situation so make sure we - * return OK instead of BUF_ERROR at next call of deflate: - */ - s->last_flush = -1; - return Z_OK; - } - - /* Make sure there is something to do and avoid duplicate consecutive - * flushes. For repeated and useless calls with Z_FINISH, we keep - * returning Z_STREAM_END instead of Z_BUF_ERROR. - */ - } else if (strm->avail_in == 0 && RANK(flush) <= RANK(old_flush) && - flush != Z_FINISH) { - ERR_RETURN(strm, Z_BUF_ERROR); - } - - /* User must not provide more input after the first FINISH: */ - if (s->status == FINISH_STATE && strm->avail_in != 0) { - ERR_RETURN(strm, Z_BUF_ERROR); - } - - /* Write the header */ - if (s->status == INIT_STATE) { - /* zlib header */ - uInt header = (Z_DEFLATED + ((s->w_bits - 8) << 4)) << 8; - uInt level_flags; - - if (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2) - level_flags = 0; - else if (s->level < 6) - level_flags = 1; - else if (s->level == 6) - level_flags = 2; - else - level_flags = 3; - header |= (level_flags << 6); - if (s->strstart != 0) header |= PRESET_DICT; - header += 31 - (header % 31); - - putShortMSB(s, header); - - /* Save the adler32 of the preset dictionary: */ - if (s->strstart != 0) { - putShortMSB(s, (uInt)(strm->adler >> 16)); - putShortMSB(s, (uInt)(strm->adler & 0xffff)); - } - strm->adler = adler32(0L, Z_NULL, 0); - s->status = BUSY_STATE; - - /* Compression must start with an empty pending buffer */ - flush_pending(strm); - if (s->pending != 0) { - s->last_flush = -1; - return Z_OK; - } - } -#ifdef GZIP - if (s->status == GZIP_STATE) { - /* gzip header */ - strm->adler = crc32(0L, Z_NULL, 0); - put_byte(s, 31); - put_byte(s, 139); - put_byte(s, 8); - if (s->gzhead == Z_NULL) { - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, 0); - put_byte(s, s->level == 9 ? 2 : - (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ? - 4 : 0)); - put_byte(s, OS_CODE); - s->status = BUSY_STATE; - - /* Compression must start with an empty pending buffer */ - flush_pending(strm); - if (s->pending != 0) { - s->last_flush = -1; - return Z_OK; - } - } else { - put_byte(s, (s->gzhead->text ? 1 : 0) + - (s->gzhead->hcrc ? 2 : 0) + - (s->gzhead->extra == Z_NULL ? 0 : 4) + - (s->gzhead->name == Z_NULL ? 0 : 8) + - (s->gzhead->comment == Z_NULL ? 0 : 16) - ); - put_byte(s, (Byte)(s->gzhead->time & 0xff)); - put_byte(s, (Byte)((s->gzhead->time >> 8) & 0xff)); - put_byte(s, (Byte)((s->gzhead->time >> 16) & 0xff)); - put_byte(s, (Byte)((s->gzhead->time >> 24) & 0xff)); - put_byte(s, s->level == 9 ? 2 : - (s->strategy >= Z_HUFFMAN_ONLY || s->level < 2 ? - 4 : 0)); - put_byte(s, s->gzhead->os & 0xff); - if (s->gzhead->extra != Z_NULL) { - put_byte(s, s->gzhead->extra_len & 0xff); - put_byte(s, (s->gzhead->extra_len >> 8) & 0xff); - } - if (s->gzhead->hcrc) - strm->adler = crc32(strm->adler, s->pending_buf, - s->pending); - s->gzindex = 0; - s->status = EXTRA_STATE; - } - } - if (s->status == EXTRA_STATE) { - if (s->gzhead->extra != Z_NULL) { - ulg beg = s->pending; /* start of bytes to update crc */ - uInt left = (s->gzhead->extra_len & 0xffff) - s->gzindex; - while (s->pending + left > s->pending_buf_size) { - uInt copy = s->pending_buf_size - s->pending; - zmemcpy(s->pending_buf + s->pending, - s->gzhead->extra + s->gzindex, copy); - s->pending = s->pending_buf_size; - HCRC_UPDATE(beg); - s->gzindex += copy; - flush_pending(strm); - if (s->pending != 0) { - s->last_flush = -1; - return Z_OK; - } - beg = 0; - left -= copy; - } - zmemcpy(s->pending_buf + s->pending, - s->gzhead->extra + s->gzindex, left); - s->pending += left; - HCRC_UPDATE(beg); - s->gzindex = 0; - } - s->status = NAME_STATE; - } - if (s->status == NAME_STATE) { - if (s->gzhead->name != Z_NULL) { - ulg beg = s->pending; /* start of bytes to update crc */ - int val; - do { - if (s->pending == s->pending_buf_size) { - HCRC_UPDATE(beg); - flush_pending(strm); - if (s->pending != 0) { - s->last_flush = -1; - return Z_OK; - } - beg = 0; - } - val = s->gzhead->name[s->gzindex++]; - put_byte(s, val); - } while (val != 0); - HCRC_UPDATE(beg); - s->gzindex = 0; - } - s->status = COMMENT_STATE; - } - if (s->status == COMMENT_STATE) { - if (s->gzhead->comment != Z_NULL) { - ulg beg = s->pending; /* start of bytes to update crc */ - int val; - do { - if (s->pending == s->pending_buf_size) { - HCRC_UPDATE(beg); - flush_pending(strm); - if (s->pending != 0) { - s->last_flush = -1; - return Z_OK; - } - beg = 0; - } - val = s->gzhead->comment[s->gzindex++]; - put_byte(s, val); - } while (val != 0); - HCRC_UPDATE(beg); - } - s->status = HCRC_STATE; - } - if (s->status == HCRC_STATE) { - if (s->gzhead->hcrc) { - if (s->pending + 2 > s->pending_buf_size) { - flush_pending(strm); - if (s->pending != 0) { - s->last_flush = -1; - return Z_OK; - } - } - put_byte(s, (Byte)(strm->adler & 0xff)); - put_byte(s, (Byte)((strm->adler >> 8) & 0xff)); - strm->adler = crc32(0L, Z_NULL, 0); - } - s->status = BUSY_STATE; - - /* Compression must start with an empty pending buffer */ - flush_pending(strm); - if (s->pending != 0) { - s->last_flush = -1; - return Z_OK; - } - } -#endif - - /* Start a new block or continue the current one. - */ - if (strm->avail_in != 0 || s->lookahead != 0 || - (flush != Z_NO_FLUSH && s->status != FINISH_STATE)) { - block_state bstate; - - bstate = s->level == 0 ? deflate_stored(s, flush) : - s->strategy == Z_HUFFMAN_ONLY ? deflate_huff(s, flush) : - s->strategy == Z_RLE ? deflate_rle(s, flush) : - (*(configuration_table[s->level].func))(s, flush); - - if (bstate == finish_started || bstate == finish_done) { - s->status = FINISH_STATE; - } - if (bstate == need_more || bstate == finish_started) { - if (strm->avail_out == 0) { - s->last_flush = -1; /* avoid BUF_ERROR next call, see above */ - } - return Z_OK; - /* If flush != Z_NO_FLUSH && avail_out == 0, the next call - * of deflate should use the same flush parameter to make sure - * that the flush is complete. So we don't have to output an - * empty block here, this will be done at next call. This also - * ensures that for a very small output buffer, we emit at most - * one empty block. - */ - } - if (bstate == block_done) { - if (flush == Z_PARTIAL_FLUSH) { - _tr_align(s); - } else if (flush != Z_BLOCK) { /* FULL_FLUSH or SYNC_FLUSH */ - _tr_stored_block(s, (char *)0, 0L, 0); - /* For a full flush, this empty block will be recognized - * as a special marker by inflate_sync(). - */ - if (flush == Z_FULL_FLUSH) { - CLEAR_HASH(s); /* forget history */ - if (s->lookahead == 0) { - s->strstart = 0; - s->block_start = 0L; - s->insert = 0; - } - } - } - flush_pending(strm); - if (strm->avail_out == 0) { - s->last_flush = -1; /* avoid BUF_ERROR at next call, see above */ - return Z_OK; - } - } - } - - if (flush != Z_FINISH) return Z_OK; - if (s->wrap <= 0) return Z_STREAM_END; - - /* Write the trailer */ -#ifdef GZIP - if (s->wrap == 2) { - put_byte(s, (Byte)(strm->adler & 0xff)); - put_byte(s, (Byte)((strm->adler >> 8) & 0xff)); - put_byte(s, (Byte)((strm->adler >> 16) & 0xff)); - put_byte(s, (Byte)((strm->adler >> 24) & 0xff)); - put_byte(s, (Byte)(strm->total_in & 0xff)); - put_byte(s, (Byte)((strm->total_in >> 8) & 0xff)); - put_byte(s, (Byte)((strm->total_in >> 16) & 0xff)); - put_byte(s, (Byte)((strm->total_in >> 24) & 0xff)); - } else -#endif - { - putShortMSB(s, (uInt)(strm->adler >> 16)); - putShortMSB(s, (uInt)(strm->adler & 0xffff)); - } - flush_pending(strm); - /* If avail_out is zero, the application will call deflate again - * to flush the rest. - */ - if (s->wrap > 0) s->wrap = -s->wrap; /* write the trailer only once! */ - return s->pending != 0 ? Z_OK : Z_STREAM_END; -} - -/* ========================================================================= */ -int ZEXPORT deflateEnd(strm) -z_streamp strm; -{ - int status; - - if (deflateStateCheck(strm)) return Z_STREAM_ERROR; - - status = strm->state->status; - - /* Deallocate in reverse order of allocations: */ - TRY_FREE(strm, strm->state->pending_buf); - TRY_FREE(strm, strm->state->head); - TRY_FREE(strm, strm->state->prev); - TRY_FREE(strm, strm->state->window); - - ZFREE(strm, strm->state); - strm->state = Z_NULL; - - return status == BUSY_STATE ? Z_DATA_ERROR : Z_OK; -} - -/* ========================================================================= - * Copy the source state to the destination state. - * To simplify the source, this is not supported for 16-bit MSDOS (which - * doesn't have enough memory anyway to duplicate compression states). - */ -int ZEXPORT deflateCopy(dest, source) -z_streamp dest; -z_streamp source; -{ -#ifdef MAXSEG_64K - return Z_STREAM_ERROR; -#else - deflate_state *ds; - deflate_state *ss; - ushf *overlay; - - - if (deflateStateCheck(source) || dest == Z_NULL) { - return Z_STREAM_ERROR; - } - - ss = source->state; - - zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); - - ds = (deflate_state *) ZALLOC(dest, 1, sizeof(deflate_state)); - if (ds == Z_NULL) return Z_MEM_ERROR; - dest->state = (struct internal_state FAR *) ds; - zmemcpy((voidpf)ds, (voidpf)ss, sizeof(deflate_state)); - ds->strm = dest; - - ds->window = (Bytef *) ZALLOC(dest, ds->w_size, 2 * sizeof(Byte)); - ds->prev = (Posf *) ZALLOC(dest, ds->w_size, sizeof(Pos)); - ds->head = (Posf *) ZALLOC(dest, ds->hash_size, sizeof(Pos)); - overlay = (ushf *) ZALLOC(dest, ds->lit_bufsize, sizeof(ush) + 2); - ds->pending_buf = (uchf *) overlay; - - if (ds->window == Z_NULL || ds->prev == Z_NULL || ds->head == Z_NULL || - ds->pending_buf == Z_NULL) { - deflateEnd(dest); - return Z_MEM_ERROR; - } - /* following zmemcpy do not work for 16-bit MSDOS */ - zmemcpy(ds->window, ss->window, ds->w_size * 2 * sizeof(Byte)); - zmemcpy((voidpf)ds->prev, (voidpf)ss->prev, ds->w_size * sizeof(Pos)); - zmemcpy((voidpf)ds->head, (voidpf)ss->head, ds->hash_size * sizeof(Pos)); - zmemcpy(ds->pending_buf, ss->pending_buf, (uInt)ds->pending_buf_size); - - ds->pending_out = ds->pending_buf + (ss->pending_out - ss->pending_buf); - ds->d_buf = overlay + ds->lit_bufsize / sizeof(ush); - ds->l_buf = ds->pending_buf + (1 + sizeof(ush)) * ds->lit_bufsize; - - ds->l_desc.dyn_tree = ds->dyn_ltree; - ds->d_desc.dyn_tree = ds->dyn_dtree; - ds->bl_desc.dyn_tree = ds->bl_tree; - - return Z_OK; -#endif /* MAXSEG_64K */ -} - -/* =========================================================================== - * Read a new buffer from the current input stream, update the adler32 - * and total number of bytes read. All deflate() input goes through - * this function so some applications may wish to modify it to avoid - * allocating a large strm->next_in buffer and copying from it. - * (See also flush_pending()). - */ -local unsigned read_buf(strm, buf, size) -z_streamp strm; -Bytef *buf; -unsigned size; -{ - unsigned len = strm->avail_in; - - if (len > size) len = size; - if (len == 0) return 0; - - strm->avail_in -= len; - - zmemcpy(buf, strm->next_in, len); - if (strm->state->wrap == 1) { - strm->adler = adler32(strm->adler, buf, len); - } -#ifdef GZIP - else if (strm->state->wrap == 2) { - strm->adler = crc32(strm->adler, buf, len); - } -#endif - strm->next_in += len; - strm->total_in += len; - - return len; -} - -/* =========================================================================== - * Initialize the "longest match" routines for a new zlib stream - */ -local void lm_init(s) -deflate_state *s; -{ - s->window_size = (ulg)2L * s->w_size; - - CLEAR_HASH(s); - - /* Set the default configuration parameters: - */ - s->max_lazy_match = configuration_table[s->level].max_lazy; - s->good_match = configuration_table[s->level].good_length; - s->nice_match = configuration_table[s->level].nice_length; - s->max_chain_length = configuration_table[s->level].max_chain; - - s->strstart = 0; - s->block_start = 0L; - s->lookahead = 0; - s->insert = 0; - s->match_length = s->prev_length = MIN_MATCH - 1; - s->match_available = 0; - s->ins_h = 0; -#ifndef FASTEST -#ifdef ASMV - match_init(); /* initialize the asm code */ -#endif -#endif -} - -#ifndef FASTEST -/* =========================================================================== - * Set match_start to the longest match starting at the given string and - * return its length. Matches shorter or equal to prev_length are discarded, - * in which case the result is equal to prev_length and match_start is - * garbage. - * IN assertions: cur_match is the head of the hash chain for the current - * string (strstart) and its distance is <= MAX_DIST, and prev_length >= 1 - * OUT assertion: the match length is not greater than s->lookahead. - */ -#ifndef ASMV -/* For 80x86 and 680x0, an optimized version will be provided in match.asm or - * match.S. The code will be functionally equivalent. - */ -local uInt longest_match(s, cur_match) -deflate_state *s; -IPos cur_match; /* current match */ -{ - unsigned chain_length = s->max_chain_length;/* max hash chain length */ - register Bytef *scan = s->window + s->strstart; /* current string */ - register Bytef *match; /* matched string */ - register int len; /* length of current match */ -#ifdef ZLIB_PM3_TUNED - int best_len = MIN_MATCH - 1; /* lift the restriction on prev-length */ -#else - int best_len = (int)s->prev_length; /* best match length so far */ -#endif - int nice_match = s->nice_match; /* stop if match long enough */ - IPos limit = s->strstart > (IPos)MAX_DIST(s) ? - s->strstart - (IPos)MAX_DIST(s) : NIL; - /* Stop when cur_match becomes <= limit. To simplify the code, - * we prevent matches with the string of window index 0. - */ - Posf *prev = s->prev; - uInt wmask = s->w_mask; - -#ifdef UNALIGNED_OK - /* Compare two bytes at a time. Note: this is not always beneficial. - * Try with and without -DUNALIGNED_OK to check. - */ - register Bytef *strend = s->window + s->strstart + MAX_MATCH - 1; - register ush scan_start = *(ushf *)scan; - register ush scan_end = *(ushf *)(scan + best_len - 1); -#else - register Bytef *strend = s->window + s->strstart + MAX_MATCH; - register Byte scan_end1 = scan[best_len - 1]; - register Byte scan_end = scan[best_len]; -#endif - - /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. - * It is easy to get rid of this optimization if necessary. - */ - Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); - - /* Do not waste too much time if we already have a good match: */ - if (s->prev_length >= s->good_match) { - chain_length >>= 2; - } - /* Do not look for matches beyond the end of the input. This is necessary - * to make deflate deterministic. - */ - if ((uInt)nice_match > s->lookahead) nice_match = (int)s->lookahead; - - Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, "need lookahead"); - - do { - Assert(cur_match < s->strstart, "no future"); - match = s->window + cur_match; - - /* Skip to next match if the match length cannot increase - * or if the match length is less than 2. Note that the checks below - * for insufficient lookahead only occur occasionally for performance - * reasons. Therefore uninitialized memory will be accessed, and - * conditional jumps will be made that depend on those values. - * However the length of the match is limited to the lookahead, so - * the output of deflate is not affected by the uninitialized values. - */ -#if (defined(UNALIGNED_OK) && MAX_MATCH == 258) - /* This code assumes sizeof(unsigned short) == 2. Do not use - * UNALIGNED_OK if your compiler uses a different size. - */ - if (*(ushf *)(match + best_len - 1) != scan_end || - *(ushf *)match != scan_start) continue; - - /* It is not necessary to compare scan[2] and match[2] since they are - * always equal when the other bytes match, given that the hash keys - * are equal and that HASH_BITS >= 8. Compare 2 bytes at a time at - * strstart+3, +5, ... up to strstart+257. We check for insufficient - * lookahead only every 4th comparison; the 128th check will be made - * at strstart+257. If MAX_MATCH-2 is not a multiple of 8, it is - * necessary to put more guard bytes at the end of the window, or - * to check more often for insufficient lookahead. - */ - Assert(scan[2] == match[2], "scan[2]?"); - scan++, match++; - do { - } while (*(ushf *)(scan += 2) == *(ushf *)(match += 2) && - *(ushf *)(scan += 2) == *(ushf *)(match += 2) && - *(ushf *)(scan += 2) == *(ushf *)(match += 2) && - *(ushf *)(scan += 2) == *(ushf *)(match += 2) && - scan < strend); - /* The funny "do {}" generates better code on most compilers */ - - /* Here, scan <= window+strstart+257 */ - Assert(scan <= s->window + (unsigned)(s->window_size - 1), "wild scan"); - if (*scan == *match) scan++; - - len = (MAX_MATCH - 1) - (int)(strend - scan); - scan = strend - (MAX_MATCH - 1); - -#else /* UNALIGNED_OK */ - - if (match[best_len] != scan_end || - match[best_len - 1] != scan_end1 || - *match != *scan || - *++match != scan[1]) continue; - - /* The check at best_len-1 can be removed because it will be made - * again later. (This heuristic is not always a win.) - * It is not necessary to compare scan[2] and match[2] since they - * are always equal when the other bytes match, given that - * the hash keys are equal and that HASH_BITS >= 8. - */ - scan += 2, match++; - Assert(*scan == *match, "match[2]?"); - - /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. - */ - do { - } while (*++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - scan < strend); - - Assert(scan <= s->window + (unsigned)(s->window_size - 1), "wild scan"); - - len = MAX_MATCH - (int)(strend - scan); - scan = strend - MAX_MATCH; - -#endif /* UNALIGNED_OK */ - - if (len > best_len) { - s->match_start = cur_match; - best_len = len; - if (len >= nice_match) break; -#ifdef UNALIGNED_OK - scan_end = *(ushf *)(scan + best_len - 1); -#else - scan_end1 = scan[best_len - 1]; - scan_end = scan[best_len]; -#endif - } - } while ((cur_match = prev[cur_match & wmask]) > limit - && --chain_length != 0); - - if ((uInt)best_len <= s->lookahead) return (uInt)best_len; - return s->lookahead; -} -#endif /* ASMV */ - -#else /* FASTEST */ - -/* --------------------------------------------------------------------------- - * Optimized version for FASTEST only - */ -local uInt longest_match(s, cur_match) -deflate_state *s; -IPos cur_match; /* current match */ -{ - register Bytef *scan = s->window + s->strstart; /* current string */ - register Bytef *match; /* matched string */ - register int len; /* length of current match */ - register Bytef *strend = s->window + s->strstart + MAX_MATCH; - - /* The code is optimized for HASH_BITS >= 8 and MAX_MATCH-2 multiple of 16. - * It is easy to get rid of this optimization if necessary. - */ - Assert(s->hash_bits >= 8 && MAX_MATCH == 258, "Code too clever"); - - Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, "need lookahead"); - - Assert(cur_match < s->strstart, "no future"); - - match = s->window + cur_match; - - /* Return failure if the match length is less than 2: - */ - if (match[0] != scan[0] || match[1] != scan[1]) return MIN_MATCH - 1; - - /* The check at best_len-1 can be removed because it will be made - * again later. (This heuristic is not always a win.) - * It is not necessary to compare scan[2] and match[2] since they - * are always equal when the other bytes match, given that - * the hash keys are equal and that HASH_BITS >= 8. - */ - scan += 2, match += 2; - Assert(*scan == *match, "match[2]?"); - - /* We check for insufficient lookahead only every 8th comparison; - * the 256th check will be made at strstart+258. - */ - do { - } while (*++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - *++scan == *++match && *++scan == *++match && - scan < strend); - - Assert(scan <= s->window + (unsigned)(s->window_size - 1), "wild scan"); - - len = MAX_MATCH - (int)(strend - scan); - - if (len < MIN_MATCH) return MIN_MATCH - 1; - - s->match_start = cur_match; - return (uInt)len <= s->lookahead ? (uInt)len : s->lookahead; -} - -#endif /* FASTEST */ - -#ifdef ZLIB_DEBUG - -#define EQUAL 0 -/* result of memcmp for equal strings */ - -/* =========================================================================== - * Check that the match at match_start is indeed a match. - */ -local void check_match(s, start, match, length) -deflate_state *s; -IPos start, match; -int length; -{ - /* check that the match is indeed a match */ - if (zmemcmp(s->window + match, - s->window + start, length) != EQUAL) { - fprintf(stderr, " start %u, match %u, length %d\n", - start, match, length); - do { - fprintf(stderr, "%c%c", s->window[match++], s->window[start++]); - } while (--length != 0); - z_error("invalid match"); - } - if (z_verbose > 1) { - fprintf(stderr, "\\[%d,%d]", start - match, length); - do { putc(s->window[start++], stderr); } - while (--length != 0); - } -} -#else -# define check_match(s, start, match, length) -#endif /* ZLIB_DEBUG */ - -/* =========================================================================== - * Fill the window when the lookahead becomes insufficient. - * Updates strstart and lookahead. - * - * IN assertion: lookahead < MIN_LOOKAHEAD - * OUT assertions: strstart <= window_size-MIN_LOOKAHEAD - * At least one byte has been read, or avail_in == 0; reads are - * performed for at least two bytes (required for the zip translate_eol - * option -- not supported here). - */ -local void fill_window(s) -deflate_state *s; -{ - unsigned n; - unsigned more; /* Amount of free space at the end of the window. */ - uInt wsize = s->w_size; - - Assert(s->lookahead < MIN_LOOKAHEAD, "already enough lookahead"); - - do { - more = (unsigned)(s->window_size - (ulg)s->lookahead - (ulg)s->strstart); - - /* Deal with !@#$% 64K limit: */ - if (sizeof(int) <= 2) { - if (more == 0 && s->strstart == 0 && s->lookahead == 0) { - more = wsize; - - } else if (more == (unsigned)(-1)) { - /* Very unlikely, but possible on 16 bit machine if - * strstart == 0 && lookahead == 1 (input done a byte at time) - */ - more--; - } - } - - /* If the window is almost full and there is insufficient lookahead, - * move the upper half to the lower one to make room in the upper half. - */ - if (s->strstart >= wsize + MAX_DIST(s)) { - - zmemcpy(s->window, s->window + wsize, (unsigned)wsize - more); - s->match_start -= wsize; - s->strstart -= wsize; /* we now have strstart >= MAX_DIST */ - s->block_start -= (long) wsize; - slide_hash(s); - more += wsize; - } - if (s->strm->avail_in == 0) break; - - /* If there was no sliding: - * strstart <= WSIZE+MAX_DIST-1 && lookahead <= MIN_LOOKAHEAD - 1 && - * more == window_size - lookahead - strstart - * => more >= window_size - (MIN_LOOKAHEAD-1 + WSIZE + MAX_DIST-1) - * => more >= window_size - 2*WSIZE + 2 - * In the BIG_MEM or MMAP case (not yet supported), - * window_size == input_size + MIN_LOOKAHEAD && - * strstart + s->lookahead <= input_size => more >= MIN_LOOKAHEAD. - * Otherwise, window_size == 2*WSIZE so more >= 2. - * If there was sliding, more >= WSIZE. So in all cases, more >= 2. - */ - Assert(more >= 2, "more < 2"); - - n = read_buf(s->strm, s->window + s->strstart + s->lookahead, more); - s->lookahead += n; - - /* Initialize the hash value now that we have some input: */ - if (s->lookahead + s->insert >= MIN_MATCH) { - uInt str = s->strstart - s->insert; - s->ins_h = s->window[str]; - UPDATE_HASH(s, s->ins_h, s->window[str + 1]); -#if MIN_MATCH != 3 - Call UPDATE_HASH() MIN_MATCH - 3 more times -#endif - while (s->insert) { - UPDATE_HASH(s, s->ins_h, s->window[str + MIN_MATCH - 1]); -#ifndef FASTEST - s->prev[str & s->w_mask] = s->head[s->ins_h]; -#endif - s->head[s->ins_h] = (Pos)str; - str++; - s->insert--; - if (s->lookahead + s->insert < MIN_MATCH) - break; - } - } - /* If the whole input has less than MIN_MATCH bytes, ins_h is garbage, - * but this is not important since only literal bytes will be emitted. - */ - - } while (s->lookahead < MIN_LOOKAHEAD && s->strm->avail_in != 0); - - /* If the WIN_INIT bytes after the end of the current data have never been - * written, then zero those bytes in order to avoid memory check reports of - * the use of uninitialized (or uninitialised as Julian writes) bytes by - * the longest match routines. Update the high water mark for the next - * time through here. WIN_INIT is set to MAX_MATCH since the longest match - * routines allow scanning to strstart + MAX_MATCH, ignoring lookahead. - */ - if (s->high_water < s->window_size) { - ulg curr = s->strstart + (ulg)(s->lookahead); - ulg init; - - if (s->high_water < curr) { - /* Previous high water mark below current data -- zero WIN_INIT - * bytes or up to end of window, whichever is less. - */ - init = s->window_size - curr; - if (init > WIN_INIT) - init = WIN_INIT; - zmemzero(s->window + curr, (unsigned)init); - s->high_water = curr + init; - } else if (s->high_water < (ulg)curr + WIN_INIT) { - /* High water mark at or above current data, but below current data - * plus WIN_INIT -- zero out to current data plus WIN_INIT, or up - * to end of window, whichever is less. - */ - init = (ulg)curr + WIN_INIT - s->high_water; - if (init > s->window_size - s->high_water) - init = s->window_size - s->high_water; - zmemzero(s->window + s->high_water, (unsigned)init); - s->high_water += init; - } - } - - Assert((ulg)s->strstart <= s->window_size - MIN_LOOKAHEAD, - "not enough room for search"); -} - -/* =========================================================================== - * Flush the current block, with given end-of-file flag. - * IN assertion: strstart is set to the end of the current match. - */ -#define FLUSH_BLOCK_ONLY(s, last) { \ - _tr_flush_block(s, (s->block_start >= 0L ? \ - (charf *)&s->window[(unsigned)s->block_start] : \ - (charf *)Z_NULL), \ - (ulg)((long)s->strstart - s->block_start), \ - (last)); \ - s->block_start = s->strstart; \ - flush_pending(s->strm); \ - Tracev((stderr,"[FLUSH]")); \ -} - -/* Same but force premature exit if necessary. */ -#define FLUSH_BLOCK(s, last) { \ - FLUSH_BLOCK_ONLY(s, last); \ - if (s->strm->avail_out == 0) return (last) ? finish_started : need_more; \ -} - -/* Maximum stored block length in deflate format (not including header). */ -#define MAX_STORED 65535 - -/* Minimum of a and b. */ -#define MIN(a, b) ((a) > (b) ? (b) : (a)) - -/* =========================================================================== - * Copy without compression as much as possible from the input stream, return - * the current block state. - * - * In case deflateParams() is used to later switch to a non-zero compression - * level, s->matches (otherwise unused when storing) keeps track of the number - * of hash table slides to perform. If s->matches is 1, then one hash table - * slide will be done when switching. If s->matches is 2, the maximum value - * allowed here, then the hash table will be cleared, since two or more slides - * is the same as a clear. - * - * deflate_stored() is written to minimize the number of times an input byte is - * copied. It is most efficient with large input and output buffers, which - * maximizes the opportunites to have a single copy from next_in to next_out. - */ -local block_state deflate_stored(s, flush) -deflate_state *s; -int flush; -{ - /* Smallest worthy block size when not flushing or finishing. By default - * this is 32K. This can be as small as 507 bytes for memLevel == 1. For - * large input and output buffers, the stored block size will be larger. - */ - unsigned min_block = MIN(s->pending_buf_size - 5, s->w_size); - - /* Copy as many min_block or larger stored blocks directly to next_out as - * possible. If flushing, copy the remaining available input to next_out as - * stored blocks, if there is enough space. - */ - unsigned len, left, have, last = 0; - unsigned used = s->strm->avail_in; - do { - /* Set len to the maximum size block that we can copy directly with the - * available input data and output space. Set left to how much of that - * would be copied from what's left in the window. - */ - len = MAX_STORED; /* maximum deflate stored block length */ - have = (s->bi_valid + 42) >> 3; /* number of header bytes */ - if (s->strm->avail_out < have) /* need room for header */ - break; - /* maximum stored block length that will fit in avail_out: */ - have = s->strm->avail_out - have; - left = s->strstart - s->block_start; /* bytes left in window */ - if (len > (ulg)left + s->strm->avail_in) - len = left + s->strm->avail_in; /* limit len to the input */ - if (len > have) - len = have; /* limit len to the output */ - - /* If the stored block would be less than min_block in length, or if - * unable to copy all of the available input when flushing, then try - * copying to the window and the pending buffer instead. Also don't - * write an empty block when flushing -- deflate() does that. - */ - if (len < min_block && ((len == 0 && flush != Z_FINISH) || - flush == Z_NO_FLUSH || - len != left + s->strm->avail_in)) - break; - - /* Make a dummy stored block in pending to get the header bytes, - * including any pending bits. This also updates the debugging counts. - */ - last = flush == Z_FINISH && len == left + s->strm->avail_in ? 1 : 0; - _tr_stored_block(s, (char *)0, 0L, last); - - /* Replace the lengths in the dummy stored block with len. */ - s->pending_buf[s->pending - 4] = len; - s->pending_buf[s->pending - 3] = len >> 8; - s->pending_buf[s->pending - 2] = ~len; - s->pending_buf[s->pending - 1] = ~len >> 8; - - /* Write the stored block header bytes. */ - flush_pending(s->strm); - -#ifdef ZLIB_DEBUG - /* Update debugging counts for the data about to be copied. */ - s->compressed_len += len << 3; - s->bits_sent += len << 3; -#endif - - /* Copy uncompressed bytes from the window to next_out. */ - if (left) { - if (left > len) - left = len; - zmemcpy(s->strm->next_out, s->window + s->block_start, left); - s->strm->next_out += left; - s->strm->avail_out -= left; - s->strm->total_out += left; - s->block_start += left; - len -= left; - } - - /* Copy uncompressed bytes directly from next_in to next_out, updating - * the check value. - */ - if (len) { - read_buf(s->strm, s->strm->next_out, len); - s->strm->next_out += len; - s->strm->avail_out -= len; - s->strm->total_out += len; - } - } while (last == 0); - - /* Update the sliding window with the last s->w_size bytes of the copied - * data, or append all of the copied data to the existing window if less - * than s->w_size bytes were copied. Also update the number of bytes to - * insert in the hash tables, in the event that deflateParams() switches to - * a non-zero compression level. - */ - used -= s->strm->avail_in; /* number of input bytes directly copied */ - if (used) { - /* If any input was used, then no unused input remains in the window, - * therefore s->block_start == s->strstart. - */ - if (used >= s->w_size) { /* supplant the previous history */ - s->matches = 2; /* clear hash */ - zmemcpy(s->window, s->strm->next_in - s->w_size, s->w_size); - s->strstart = s->w_size; - } else { - if (s->window_size - s->strstart <= used) { - /* Slide the window down. */ - s->strstart -= s->w_size; - zmemcpy(s->window, s->window + s->w_size, s->strstart); - if (s->matches < 2) - s->matches++; /* add a pending slide_hash() */ - } - zmemcpy(s->window + s->strstart, s->strm->next_in - used, used); - s->strstart += used; - } - s->block_start = s->strstart; - s->insert += MIN(used, s->w_size - s->insert); - } - if (s->high_water < s->strstart) - s->high_water = s->strstart; - - /* If the last block was written to next_out, then done. */ - if (last) - return finish_done; - - /* If flushing and all input has been consumed, then done. */ - if (flush != Z_NO_FLUSH && flush != Z_FINISH && - s->strm->avail_in == 0 && (long)s->strstart == s->block_start) - return block_done; - - /* Fill the window with any remaining input. */ - have = s->window_size - s->strstart - 1; - if (s->strm->avail_in > have && s->block_start >= (long)s->w_size) { - /* Slide the window down. */ - s->block_start -= s->w_size; - s->strstart -= s->w_size; - zmemcpy(s->window, s->window + s->w_size, s->strstart); - if (s->matches < 2) - s->matches++; /* add a pending slide_hash() */ - have += s->w_size; /* more space now */ - } - if (have > s->strm->avail_in) - have = s->strm->avail_in; - if (have) { - read_buf(s->strm, s->window + s->strstart, have); - s->strstart += have; - } - if (s->high_water < s->strstart) - s->high_water = s->strstart; - - /* There was not enough avail_out to write a complete worthy or flushed - * stored block to next_out. Write a stored block to pending instead, if we - * have enough input for a worthy block, or if flushing and there is enough - * room for the remaining input as a stored block in the pending buffer. - */ - have = (s->bi_valid + 42) >> 3; /* number of header bytes */ - /* maximum stored block length that will fit in pending: */ - have = MIN(s->pending_buf_size - have, MAX_STORED); - min_block = MIN(have, s->w_size); - left = s->strstart - s->block_start; - if (left >= min_block || - ((left || flush == Z_FINISH) && flush != Z_NO_FLUSH && - s->strm->avail_in == 0 && left <= have)) { - len = MIN(left, have); - last = flush == Z_FINISH && s->strm->avail_in == 0 && - len == left ? 1 : 0; - _tr_stored_block(s, (charf *)s->window + s->block_start, len, last); - s->block_start += len; - flush_pending(s->strm); - } - - /* We've done all we can with the available input and output. */ - return last ? finish_started : need_more; -} - -/* =========================================================================== - * Compress as much as possible from the input stream, return the current - * block state. - * This function does not perform lazy evaluation of matches and inserts - * new strings in the dictionary only for unmatched strings or for short - * matches. It is used only for the fast compression options. - */ -local block_state deflate_fast(s, flush) -deflate_state *s; -int flush; -{ - IPos hash_head; /* head of the hash chain */ - int bflush; /* set if current block must be flushed */ - - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - if (s->lookahead < MIN_LOOKAHEAD) { - fill_window(s); - if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) { - return need_more; - } - if (s->lookahead == 0) break; /* flush the current block */ - } - - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - hash_head = NIL; - if (s->lookahead >= MIN_MATCH) { - INSERT_STRING(s, s->strstart, hash_head); - } - - /* Find the longest match, discarding those <= prev_length. - * At this point we have always match_length < MIN_MATCH - */ - if (hash_head != NIL && s->strstart - hash_head <= MAX_DIST(s)) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - s->match_length = longest_match(s, hash_head); - /* longest_match() sets match_start */ - } - if (s->match_length >= MIN_MATCH) { - check_match(s, s->strstart, s->match_start, s->match_length); - - _tr_tally_dist(s, s->strstart - s->match_start, - s->match_length - MIN_MATCH, bflush); - - s->lookahead -= s->match_length; - - /* Insert new strings in the hash table only if the match length - * is not too large. This saves time but degrades compression. - */ -#ifndef FASTEST - if (s->match_length <= s->max_insert_length && - s->lookahead >= MIN_MATCH) { - s->match_length--; /* string at strstart already in table */ - do { - s->strstart++; - INSERT_STRING(s, s->strstart, hash_head); - /* strstart never exceeds WSIZE-MAX_MATCH, so there are - * always MIN_MATCH bytes ahead. - */ - } while (--s->match_length != 0); - s->strstart++; - } else -#endif - { - s->strstart += s->match_length; - s->match_length = 0; - s->ins_h = s->window[s->strstart]; - UPDATE_HASH(s, s->ins_h, s->window[s->strstart + 1]); -#if MIN_MATCH != 3 - Call UPDATE_HASH() MIN_MATCH - 3 more times -#endif - /* If lookahead < MIN_MATCH, ins_h is garbage, but it does not - * matter since it will be recomputed at next deflate call. - */ - } - } else { - /* No match, output a literal byte */ - Tracevv((stderr, "%c", s->window[s->strstart])); - _tr_tally_lit(s, s->window[s->strstart], bflush); - s->lookahead--; - s->strstart++; - } - if (bflush) FLUSH_BLOCK(s, 0); - } - s->insert = s->strstart < MIN_MATCH - 1 ? s->strstart : MIN_MATCH - 1; - if (flush == Z_FINISH) { - FLUSH_BLOCK(s, 1); - return finish_done; - } - if (s->last_lit) - FLUSH_BLOCK(s, 0); - return block_done; -} - - -#ifdef ZLIB_PM3_TUNED -local uInt try_harder(s, strstart, lookahead, hash_head) -deflate_state *s; -uInt strstart; -uInt lookahead; -IPos hash_head; -{ - uInt strstart_save = s->strstart; - s->strstart = strstart; - uInt lookahead_save = s->lookahead; - s->lookahead = lookahead; - uInt ins_h_save = s->ins_h; - uInt combined_gain; - uInt best_combined_gain = 0; - uInt match_length; - uInt prev_length = s->prev_length < MIN_MATCH ? 1 : s->prev_length; - uInt best_prev_length = prev_length; - uInt current_match_start = s->match_start; - uInt current_match_length = s->match_length; - - do { - if (hash_head != NIL && s->strstart - hash_head <= MAX_DIST(s)) { - match_length = longest_match(s, hash_head); - /* longest_match() sets match_start */ - } else { - match_length = MIN_MATCH - 1; - } -#if TOO_FAR <= 32767 - if (match_length == MIN_MATCH && s->strstart - s->match_start > TOO_FAR) { - match_length = MIN_MATCH - 1; - } -#endif - if (s->strstart == strstart) { // store match at current position - current_match_length = match_length; - current_match_start = s->match_start; - } - if (s->strstart - strstart + 1 < MIN_MATCH) { // previous match reduced to one or two literals - combined_gain = 0; // need one literal per byte: no gain (assuming 8 bits per literal) - } else { - combined_gain = s->strstart - strstart + 1 - MIN_MATCH; // (possibly truncated) previous_length - 3 literals - } - if (match_length < MIN_MATCH) { - combined_gain += 0; // no gain - } else { - combined_gain += match_length - MIN_MATCH; // match_length bytes are coded as three literals - } - if (combined_gain >= best_combined_gain) { // in case of a tie we prefer the longer prev_length - best_combined_gain = combined_gain; - best_prev_length = s->strstart - strstart + 1; - } - s->strstart++; - s->lookahead--; - UPDATE_HASH(s, s->ins_h, s->window[(s->strstart) + (MIN_MATCH - 1)]); - hash_head = s->head[s->ins_h]; - } while (s->strstart <= strstart - 1 + prev_length // try to truncate the previous match to 1, 3, ... prev_length - && s->strstart <= s->window_size - MIN_LOOKAHEAD); // watch out for the end of the input - - s->strstart = strstart_save; - s->lookahead = lookahead_save; - s->ins_h = ins_h_save; - s->match_length = current_match_length; - s->match_start = current_match_start; - if (best_prev_length >= MIN_MATCH) { - s->prev_length = best_prev_length; - s->match_length = MIN_MATCH - 1; - } else { - s->prev_length = MIN_MATCH - 1; - } - return best_combined_gain; -} -#endif - - - -#ifndef FASTEST -/* =========================================================================== - * Same as above, but achieves better compression. We use a lazy - * evaluation for matches: a match is finally adopted only if there is - * no better match at the next window position. - */ -local block_state deflate_slow(s, flush) -deflate_state *s; -int flush; -{ - IPos hash_head; /* head of hash chain */ - int bflush; /* set if current block must be flushed */ - - /* Process the input block. */ - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the next match, plus MIN_MATCH bytes to insert the - * string following the next match. - */ - if (s->lookahead < MIN_LOOKAHEAD) { - fill_window(s); - if (s->lookahead < MIN_LOOKAHEAD && flush == Z_NO_FLUSH) { - return need_more; - } - if (s->lookahead == 0) break; /* flush the current block */ - } - - /* Insert the string window[strstart .. strstart+2] in the - * dictionary, and set hash_head to the head of the hash chain: - */ - hash_head = NIL; - if (s->lookahead >= MIN_MATCH) { - INSERT_STRING(s, s->strstart, hash_head); - } - - /* Find the longest match, discarding those <= prev_length. - */ - s->prev_length = s->match_length, s->prev_match = s->match_start; - s->match_length = MIN_MATCH - 1; - -#ifdef ZLIB_PM3_TUNED - if (s->prev_length < s->max_lazy_match) { - try_harder(s, s->strstart, s->lookahead, hash_head); - } - -#else - if (hash_head != NIL && s->prev_length < s->max_lazy_match && - s->strstart - hash_head <= MAX_DIST(s)) { - /* To simplify the code, we prevent matches with the string - * of window index 0 (in particular we have to avoid a match - * of the string with itself at the start of the input file). - */ - s->match_length = longest_match(s, hash_head); - /* longest_match() sets match_start */ - - if (s->match_length <= 5 && (s->strategy == Z_FILTERED -#if TOO_FAR <= 32767 - || (s->match_length == MIN_MATCH && - s->strstart - s->match_start > TOO_FAR) -#endif - )) { - - /* If prev_match is also MIN_MATCH, match_start is garbage - * but we will ignore the current match anyway. - */ - s->match_length = MIN_MATCH - 1; - } - } -#endif /* ZLIB_PM3_TUNED */ - /* If there was a match at the previous step and the current - * match is not better, output the previous match: - */ - if (s->prev_length >= MIN_MATCH && s->match_length <= s->prev_length) { - uInt max_insert = s->strstart + s->lookahead - MIN_MATCH; - /* Do not insert strings in hash table beyond this. */ - - check_match(s, s->strstart - 1, s->prev_match, s->prev_length); - - _tr_tally_dist(s, s->strstart - 1 - s->prev_match, - s->prev_length - MIN_MATCH, bflush); - - /* Insert in hash table all strings up to the end of the match. - * strstart-1 and strstart are already inserted. If there is not - * enough lookahead, the last two strings are not inserted in - * the hash table. - */ - s->lookahead -= s->prev_length - 1; - s->prev_length -= 2; - do { - if (++s->strstart <= max_insert) { - INSERT_STRING(s, s->strstart, hash_head); - } - } while (--s->prev_length != 0); - s->match_available = 0; - s->match_length = MIN_MATCH - 1; - s->strstart++; - - if (bflush) FLUSH_BLOCK(s, 0); - - } else if (s->match_available) { - /* If there was no match at the previous position, output a - * single literal. If there was a match but the current match - * is longer, truncate the previous match to a single literal. - */ - Tracevv((stderr, "%c", s->window[s->strstart - 1])); - _tr_tally_lit(s, s->window[s->strstart - 1], bflush); - if (bflush) { - FLUSH_BLOCK_ONLY(s, 0); - } - s->strstart++; - s->lookahead--; - if (s->strm->avail_out == 0) return need_more; - } else { - /* There is no previous match to compare with, wait for - * the next step to decide. - */ - s->match_available = 1; - s->strstart++; - s->lookahead--; - } - } - Assert(flush != Z_NO_FLUSH, "no flush?"); - if (s->match_available) { - Tracevv((stderr, "%c", s->window[s->strstart - 1])); - _tr_tally_lit(s, s->window[s->strstart - 1], bflush); - s->match_available = 0; - } - s->insert = s->strstart < MIN_MATCH - 1 ? s->strstart : MIN_MATCH - 1; - if (flush == Z_FINISH) { - FLUSH_BLOCK(s, 1); - return finish_done; - } - if (s->last_lit) - FLUSH_BLOCK(s, 0); - return block_done; -} -#endif /* FASTEST */ - -/* =========================================================================== - * For Z_RLE, simply look for runs of bytes, generate matches only of distance - * one. Do not maintain a hash table. (It will be regenerated if this run of - * deflate switches away from Z_RLE.) - */ -local block_state deflate_rle(s, flush) -deflate_state *s; -int flush; -{ - int bflush; /* set if current block must be flushed */ - uInt prev; /* byte at distance one to match */ - Bytef *scan, *strend; /* scan goes up to strend for length of run */ - - for (;;) { - /* Make sure that we always have enough lookahead, except - * at the end of the input file. We need MAX_MATCH bytes - * for the longest run, plus one for the unrolled loop. - */ - if (s->lookahead <= MAX_MATCH) { - fill_window(s); - if (s->lookahead <= MAX_MATCH && flush == Z_NO_FLUSH) { - return need_more; - } - if (s->lookahead == 0) break; /* flush the current block */ - } - - /* See how many times the previous byte repeats */ - s->match_length = 0; - if (s->lookahead >= MIN_MATCH && s->strstart > 0) { - scan = s->window + s->strstart - 1; - prev = *scan; - if (prev == *++scan && prev == *++scan && prev == *++scan) { - strend = s->window + s->strstart + MAX_MATCH; - do { - } while (prev == *++scan && prev == *++scan && - prev == *++scan && prev == *++scan && - prev == *++scan && prev == *++scan && - prev == *++scan && prev == *++scan && - scan < strend); - s->match_length = MAX_MATCH - (uInt)(strend - scan); - if (s->match_length > s->lookahead) - s->match_length = s->lookahead; - } - Assert(scan <= s->window + (uInt)(s->window_size - 1), "wild scan"); - } - - /* Emit match if have run of MIN_MATCH or longer, else emit literal */ - if (s->match_length >= MIN_MATCH) { - check_match(s, s->strstart, s->strstart - 1, s->match_length); - - _tr_tally_dist(s, 1, s->match_length - MIN_MATCH, bflush); - - s->lookahead -= s->match_length; - s->strstart += s->match_length; - s->match_length = 0; - } else { - /* No match, output a literal byte */ - Tracevv((stderr, "%c", s->window[s->strstart])); - _tr_tally_lit(s, s->window[s->strstart], bflush); - s->lookahead--; - s->strstart++; - } - if (bflush) FLUSH_BLOCK(s, 0); - } - s->insert = 0; - if (flush == Z_FINISH) { - FLUSH_BLOCK(s, 1); - return finish_done; - } - if (s->last_lit) - FLUSH_BLOCK(s, 0); - return block_done; -} - -/* =========================================================================== - * For Z_HUFFMAN_ONLY, do not look for matches. Do not maintain a hash table. - * (It will be regenerated if this run of deflate switches away from Huffman.) - */ -local block_state deflate_huff(s, flush) -deflate_state *s; -int flush; -{ - int bflush; /* set if current block must be flushed */ - - for (;;) { - /* Make sure that we have a literal to write. */ - if (s->lookahead == 0) { - fill_window(s); - if (s->lookahead == 0) { - if (flush == Z_NO_FLUSH) - return need_more; - break; /* flush the current block */ - } - } - - /* Output a literal byte */ - s->match_length = 0; - Tracevv((stderr, "%c", s->window[s->strstart])); - _tr_tally_lit(s, s->window[s->strstart], bflush); - s->lookahead--; - s->strstart++; - if (bflush) FLUSH_BLOCK(s, 0); - } - s->insert = 0; - if (flush == Z_FINISH) { - FLUSH_BLOCK(s, 1); - return finish_done; - } - if (s->last_lit) - FLUSH_BLOCK(s, 0); - return block_done; -} - diff --git a/common/zlib/deflate.h b/common/zlib/deflate.h deleted file mode 100644 index 10956218e..000000000 --- a/common/zlib/deflate.h +++ /dev/null @@ -1,350 +0,0 @@ -/* deflate.h -- internal compression state - * Copyright (C) 1995-2016 Jean-loup Gailly - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* @(#) $Id$ */ - -#ifndef DEFLATE_H -#define DEFLATE_H - -#include "zutil.h" - -/* define NO_GZIP when compiling if you want to disable gzip header and - trailer creation by deflate(). NO_GZIP would be used to avoid linking in - the crc code when it is not needed. For shared libraries, gzip encoding - should be left enabled. */ -#ifndef NO_GZIP -# define GZIP -#endif - -/* =========================================================================== - * Internal compression state. - */ - -#define LENGTH_CODES 29 -/* number of length codes, not counting the special END_BLOCK code */ - -#define LITERALS 256 -/* number of literal bytes 0..255 */ - -#define L_CODES (LITERALS+1+LENGTH_CODES) -/* number of Literal or Length codes, including the END_BLOCK code */ - -#define D_CODES 30 -/* number of distance codes */ - -#define BL_CODES 19 -/* number of codes used to transfer the bit lengths */ - -#define HEAP_SIZE (2*L_CODES+1) -/* maximum heap size */ - -#define MAX_BITS 15 -/* All codes must not exceed MAX_BITS bits */ - -#define Buf_size 16 -/* size of bit buffer in bi_buf */ - -#define INIT_STATE 42 /* zlib header -> BUSY_STATE */ -#ifdef GZIP -# define GZIP_STATE 57 /* gzip header -> BUSY_STATE | EXTRA_STATE */ -#endif -#define EXTRA_STATE 69 /* gzip extra block -> NAME_STATE */ -#define NAME_STATE 73 /* gzip file name -> COMMENT_STATE */ -#define COMMENT_STATE 91 /* gzip comment -> HCRC_STATE */ -#define HCRC_STATE 103 /* gzip header CRC -> BUSY_STATE */ -#define BUSY_STATE 113 /* deflate -> FINISH_STATE */ -#define FINISH_STATE 666 /* stream complete */ -/* Stream status */ - - -/* Data structure describing a single value and its code string. */ -typedef struct ct_data_s { - union { - ush freq; /* frequency count */ - ush code; /* bit string */ - } fc; - union { - ush dad; /* father node in Huffman tree */ - ush len; /* length of bit string */ - } dl; -} FAR ct_data; - -#define Freq fc.freq -#define Code fc.code -#define Dad dl.dad -#define Len dl.len - -typedef struct static_tree_desc_s static_tree_desc; - -typedef struct tree_desc_s { - ct_data *dyn_tree; /* the dynamic tree */ - int max_code; /* largest code with non zero frequency */ - const static_tree_desc *stat_desc; /* the corresponding static tree */ -} FAR tree_desc; - -typedef ush Pos; -typedef Pos FAR Posf; -typedef unsigned IPos; - -/* A Pos is an index in the character window. We use short instead of int to - * save space in the various tables. IPos is used only for parameter passing. - */ - -typedef struct internal_state { - z_streamp strm; /* pointer back to this zlib stream */ - int status; /* as the name implies */ - Bytef *pending_buf; /* output still pending */ - ulg pending_buf_size; /* size of pending_buf */ - Bytef *pending_out; /* next pending byte to output to the stream */ - ulg pending; /* nb of bytes in the pending buffer */ - int wrap; /* bit 0 true for zlib, bit 1 true for gzip */ - gz_headerp gzhead; /* gzip header information to write */ - ulg gzindex; /* where in extra, name, or comment */ - Byte method; /* can only be DEFLATED */ - int last_flush; /* value of flush param for previous deflate call */ - - /* used by deflate.c: */ - - uInt w_size; /* LZ77 window size (32K by default) */ - uInt w_bits; /* log2(w_size) (8..16) */ - uInt w_mask; /* w_size - 1 */ - - Bytef *window; - /* Sliding window. Input bytes are read into the second half of the window, - * and move to the first half later to keep a dictionary of at least wSize - * bytes. With this organization, matches are limited to a distance of - * wSize-MAX_MATCH bytes, but this ensures that IO is always - * performed with a length multiple of the block size. Also, it limits - * the window size to 64K, which is quite useful on MSDOS. - * To do: use the user input buffer as sliding window. - */ - - ulg window_size; - /* Actual size of window: 2*wSize, except when the user input buffer - * is directly used as sliding window. - */ - - Posf *prev; - /* Link to older string with same hash index. To limit the size of this - * array to 64K, this link is maintained only for the last 32K strings. - * An index in this array is thus a window index modulo 32K. - */ - - Posf *head; /* Heads of the hash chains or NIL. */ - - uInt ins_h; /* hash index of string to be inserted */ - uInt hash_size; /* number of elements in hash table */ - uInt hash_bits; /* log2(hash_size) */ - uInt hash_mask; /* hash_size-1 */ - - uInt hash_shift; - /* Number of bits by which ins_h must be shifted at each input - * step. It must be such that after MIN_MATCH steps, the oldest - * byte no longer takes part in the hash key, that is: - * hash_shift * MIN_MATCH >= hash_bits - */ - - long block_start; - /* Window position at the beginning of the current output block. Gets - * negative when the window is moved backwards. - */ - - uInt match_length; /* length of best match */ - IPos prev_match; /* previous match */ - int match_available; /* set if previous match exists */ - uInt strstart; /* start of string to insert */ - uInt match_start; /* start of matching string */ - uInt lookahead; /* number of valid bytes ahead in window */ - - uInt prev_length; - /* Length of the best match at previous step. Matches not greater than this - * are discarded. This is used in the lazy match evaluation. - */ - - uInt max_chain_length; - /* To speed up deflation, hash chains are never searched beyond this - * length. A higher limit improves compression ratio but degrades the - * speed. - */ - - uInt max_lazy_match; - /* Attempt to find a better match only when the current match is strictly - * smaller than this value. This mechanism is used only for compression - * levels >= 4. - */ -# define max_insert_length max_lazy_match - /* Insert new strings in the hash table only if the match length is not - * greater than this length. This saves time but degrades compression. - * max_insert_length is used only for compression levels <= 3. - */ - - int level; /* compression level (1..9) */ - int strategy; /* favor or force Huffman coding*/ - - uInt good_match; - /* Use a faster search when the previous match is longer than this */ - - int nice_match; /* Stop searching when current match exceeds this */ - - /* used by trees.c: */ - /* Didn't use ct_data typedef below to suppress compiler warning */ - struct ct_data_s dyn_ltree[HEAP_SIZE]; /* literal and length tree */ - struct ct_data_s dyn_dtree[2 * D_CODES + 1]; /* distance tree */ - struct ct_data_s bl_tree[2 * BL_CODES + 1]; /* Huffman tree for bit lengths */ - - struct tree_desc_s l_desc; /* desc. for literal tree */ - struct tree_desc_s d_desc; /* desc. for distance tree */ - struct tree_desc_s bl_desc; /* desc. for bit length tree */ - - ush bl_count[MAX_BITS + 1]; - /* number of codes at each bit length for an optimal tree */ - - int heap[2 * L_CODES + 1]; /* heap used to build the Huffman trees */ - int heap_len; /* number of elements in the heap */ - int heap_max; /* element of largest frequency */ - /* The sons of heap[n] are heap[2*n] and heap[2*n+1]. heap[0] is not used. - * The same heap array is used to build all trees. - */ - - uch depth[2 * L_CODES + 1]; - /* Depth of each subtree used as tie breaker for trees of equal frequency - */ - - uchf *l_buf; /* buffer for literals or lengths */ - - uInt lit_bufsize; - /* Size of match buffer for literals/lengths. There are 4 reasons for - * limiting lit_bufsize to 64K: - * - frequencies can be kept in 16 bit counters - * - if compression is not successful for the first block, all input - * data is still in the window so we can still emit a stored block even - * when input comes from standard input. (This can also be done for - * all blocks if lit_bufsize is not greater than 32K.) - * - if compression is not successful for a file smaller than 64K, we can - * even emit a stored file instead of a stored block (saving 5 bytes). - * This is applicable only for zip (not gzip or zlib). - * - creating new Huffman trees less frequently may not provide fast - * adaptation to changes in the input data statistics. (Take for - * example a binary file with poorly compressible code followed by - * a highly compressible string table.) Smaller buffer sizes give - * fast adaptation but have of course the overhead of transmitting - * trees more frequently. - * - I can't count above 4 - */ - - uInt last_lit; /* running index in l_buf */ - - ushf *d_buf; - /* Buffer for distances. To simplify the code, d_buf and l_buf have - * the same number of elements. To use different lengths, an extra flag - * array would be necessary. - */ - - ulg opt_len; /* bit length of current block with optimal trees */ - ulg static_len; /* bit length of current block with static trees */ - uInt matches; /* number of string matches in current block */ - uInt insert; /* bytes at end of window left to insert */ - -#ifdef ZLIB_DEBUG - ulg compressed_len; /* total bit length of compressed file mod 2^32 */ - ulg bits_sent; /* bit length of compressed data sent mod 2^32 */ -#endif - - ush bi_buf; - /* Output buffer. bits are inserted starting at the bottom (least - * significant bits). - */ - int bi_valid; - /* Number of valid bits in bi_buf. All bits above the last valid bit - * are always zero. - */ - - ulg high_water; - /* High water mark offset in window for initialized bytes -- bytes above - * this are set to zero in order to avoid memory check warnings when - * longest match routines access bytes past the input. This is then - * updated to the new high water mark. - */ - -} FAR deflate_state; - -/* Output a byte on the stream. - * IN assertion: there is enough room in pending_buf. - */ -#define put_byte(s, c) {s->pending_buf[s->pending++] = (Bytef)(c);} - - -#define MIN_LOOKAHEAD (MAX_MATCH+MIN_MATCH+1) -/* Minimum amount of lookahead, except at the end of the input file. - * See deflate.c for comments about the MIN_MATCH+1. - */ - -#define MAX_DIST(s) ((s)->w_size-MIN_LOOKAHEAD) -/* In order to simplify the code, particularly on 16 bit machines, match - * distances are limited to MAX_DIST instead of WSIZE. - */ - -#define WIN_INIT MAX_MATCH -/* Number of bytes after end of data in window to initialize in order to avoid - memory checker errors from longest match routines */ - -/* in trees.c */ -void ZLIB_INTERNAL _tr_init OF((deflate_state *s)); -int ZLIB_INTERNAL _tr_tally OF((deflate_state *s, unsigned dist, unsigned lc)); -void ZLIB_INTERNAL _tr_flush_block OF((deflate_state *s, charf *buf, - ulg stored_len, int last)); -void ZLIB_INTERNAL _tr_flush_bits OF((deflate_state *s)); -void ZLIB_INTERNAL _tr_align OF((deflate_state *s)); -void ZLIB_INTERNAL _tr_stored_block OF((deflate_state *s, charf *buf, - ulg stored_len, int last)); - -#define d_code(dist) \ - ((dist) < 256 ? _dist_code[dist] : _dist_code[256+((dist)>>7)]) -/* Mapping from a distance to a distance code. dist is the distance - 1 and - * must not have side effects. _dist_code[256] and _dist_code[257] are never - * used. - */ - -#ifndef ZLIB_DEBUG -/* Inline versions of _tr_tally for speed: */ - -#if defined(GEN_TREES_H) || !defined(STDC) -extern uch ZLIB_INTERNAL _length_code[]; -extern uch ZLIB_INTERNAL _dist_code[]; -#else -extern const uch ZLIB_INTERNAL _length_code[]; -extern const uch ZLIB_INTERNAL _dist_code[]; -#endif - -# define _tr_tally_lit(s, c, flush) \ - { uch cc = (c); \ - s->d_buf[s->last_lit] = 0; \ - s->l_buf[s->last_lit++] = cc; \ - s->dyn_ltree[cc].Freq++; \ - flush = (s->last_lit == s->lit_bufsize-1); \ - } -# define _tr_tally_dist(s, distance, length, flush) \ - { uch len = (uch)(length); \ - ush dist = (ush)(distance); \ - s->d_buf[s->last_lit] = dist; \ - s->l_buf[s->last_lit++] = len; \ - dist--; \ - s->dyn_ltree[_length_code[len]+LITERALS+1].Freq++; \ - s->dyn_dtree[d_code(dist)].Freq++; \ - flush = (s->last_lit == s->lit_bufsize-1); \ - } -#else -# define _tr_tally_lit(s, c, flush) flush = _tr_tally(s, 0, c) -# define _tr_tally_dist(s, distance, length, flush) \ - flush = _tr_tally(s, distance, length) -#endif - -#endif /* DEFLATE_H */ - diff --git a/common/zlib/inffast.c b/common/zlib/inffast.c deleted file mode 100644 index 874ecc02c..000000000 --- a/common/zlib/inffast.c +++ /dev/null @@ -1,315 +0,0 @@ -/* inffast.c -- fast decoding - * Copyright (C) 1995-2017 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "inftrees.h" -#include "inflate.h" -#include "inffast.h" - -#ifdef ASMINF -# pragma message("Assembler code may have bugs -- use at your own risk") -#else - -/* - Decode literal, length, and distance codes and write out the resulting - literal and match bytes until either not enough input or output is - available, an end-of-block is encountered, or a data error is encountered. - When large enough input and output buffers are supplied to inflate(), for - example, a 16K input buffer and a 64K output buffer, more than 95% of the - inflate execution time is spent in this routine. - - Entry assumptions: - - state->mode == LEN - strm->avail_in >= 6 - strm->avail_out >= 258 - start >= strm->avail_out - state->bits < 8 - - On return, state->mode is one of: - - LEN -- ran out of enough output space or enough available input - TYPE -- reached end of block code, inflate() to interpret next block - BAD -- error in block data - - Notes: - - - The maximum input bits used by a length/distance pair is 15 bits for the - length code, 5 bits for the length extra, 15 bits for the distance code, - and 13 bits for the distance extra. This totals 48 bits, or six bytes. - Therefore if strm->avail_in >= 6, then there is enough input to avoid - checking for available input while decoding. - - - The maximum bytes that a single length/distance pair can output is 258 - bytes, which is the maximum length that can be coded. inflate_fast() - requires strm->avail_out >= 258 for each loop to avoid checking for - output space. - */ -void ZLIB_INTERNAL inflate_fast(strm, start) -z_streamp strm; -unsigned start; /* inflate()'s starting value for strm->avail_out */ -{ - struct inflate_state FAR *state; - z_const unsigned char FAR *in; /* local strm->next_in */ - z_const unsigned char FAR *last; /* have enough input while in < last */ - unsigned char FAR *out; /* local strm->next_out */ - unsigned char FAR *beg; /* inflate()'s initial strm->next_out */ - unsigned char FAR *end; /* while out < end, enough space available */ -#ifdef INFLATE_STRICT - unsigned dmax; /* maximum distance from zlib header */ -#endif - unsigned wsize; /* window size or zero if not using window */ - unsigned whave; /* valid bytes in the window */ - unsigned wnext; /* window write index */ - unsigned char FAR *window; /* allocated sliding window, if wsize != 0 */ - unsigned long hold; /* local strm->hold */ - unsigned bits; /* local strm->bits */ - code const FAR *lcode; /* local strm->lencode */ - code const FAR *dcode; /* local strm->distcode */ - unsigned lmask; /* mask for first level of length codes */ - unsigned dmask; /* mask for first level of distance codes */ - code here; /* retrieved table entry */ - unsigned op; /* code bits, operation, extra bits, or */ - /* window position, window bytes to copy */ - unsigned len; /* match length, unused bytes */ - unsigned dist; /* match distance */ - unsigned char FAR *from; /* where to copy match from */ - - /* copy state to local variables */ - state = (struct inflate_state FAR *)strm->state; - in = strm->next_in; - last = in + (strm->avail_in - 5); - out = strm->next_out; - beg = out - (start - strm->avail_out); - end = out + (strm->avail_out - 257); -#ifdef INFLATE_STRICT - dmax = state->dmax; -#endif - wsize = state->wsize; - whave = state->whave; - wnext = state->wnext; - window = state->window; - hold = state->hold; - bits = state->bits; - lcode = state->lencode; - dcode = state->distcode; - lmask = (1U << state->lenbits) - 1; - dmask = (1U << state->distbits) - 1; - - /* decode literals and length/distances until end-of-block or not enough - input data or output space */ - do { - if (bits < 15) { - hold += (unsigned long)(*in++) << bits; - bits += 8; - hold += (unsigned long)(*in++) << bits; - bits += 8; - } - here = lcode[hold & lmask]; -dolen: - op = (unsigned)(here.bits); - hold >>= op; - bits -= op; - op = (unsigned)(here.op); - if (op == 0) { /* literal */ - Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? - "inflate: literal '%c'\n" : - "inflate: literal 0x%02x\n", here.val)); - *out++ = (unsigned char)(here.val); - } else if (op & 16) { /* length base */ - len = (unsigned)(here.val); - op &= 15; /* number of extra bits */ - if (op) { - if (bits < op) { - hold += (unsigned long)(*in++) << bits; - bits += 8; - } - len += (unsigned)hold & ((1U << op) - 1); - hold >>= op; - bits -= op; - } - Tracevv((stderr, "inflate: length %u\n", len)); - if (bits < 15) { - hold += (unsigned long)(*in++) << bits; - bits += 8; - hold += (unsigned long)(*in++) << bits; - bits += 8; - } - here = dcode[hold & dmask]; -dodist: - op = (unsigned)(here.bits); - hold >>= op; - bits -= op; - op = (unsigned)(here.op); - if (op & 16) { /* distance base */ - dist = (unsigned)(here.val); - op &= 15; /* number of extra bits */ - if (bits < op) { - hold += (unsigned long)(*in++) << bits; - bits += 8; - if (bits < op) { - hold += (unsigned long)(*in++) << bits; - bits += 8; - } - } - dist += (unsigned)hold & ((1U << op) - 1); -#ifdef INFLATE_STRICT - if (dist > dmax) { - strm->msg = (char *)"invalid distance too far back"; - state->mode = BAD; - break; - } -#endif - hold >>= op; - bits -= op; - Tracevv((stderr, "inflate: distance %u\n", dist)); - op = (unsigned)(out - beg); /* max distance in output */ - if (dist > op) { /* see if copy from window */ - op = dist - op; /* distance back in window */ - if (op > whave) { - if (state->sane) { - strm->msg = - (char *)"invalid distance too far back"; - state->mode = BAD; - break; - } -#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - if (len <= op - whave) { - do { - *out++ = 0; - } while (--len); - continue; - } - len -= op - whave; - do { - *out++ = 0; - } while (--op > whave); - if (op == 0) { - from = out - dist; - do { - *out++ = *from++; - } while (--len); - continue; - } -#endif - } - from = window; - if (wnext == 0) { /* very common case */ - from += wsize - op; - if (op < len) { /* some from window */ - len -= op; - do { - *out++ = *from++; - } while (--op); - from = out - dist; /* rest from output */ - } - } else if (wnext < op) { /* wrap around window */ - from += wsize + wnext - op; - op -= wnext; - if (op < len) { /* some from end of window */ - len -= op; - do { - *out++ = *from++; - } while (--op); - from = window; - if (wnext < len) { /* some from start of window */ - op = wnext; - len -= op; - do { - *out++ = *from++; - } while (--op); - from = out - dist; /* rest from output */ - } - } - } else { /* contiguous in window */ - from += wnext - op; - if (op < len) { /* some from window */ - len -= op; - do { - *out++ = *from++; - } while (--op); - from = out - dist; /* rest from output */ - } - } - while (len > 2) { - *out++ = *from++; - *out++ = *from++; - *out++ = *from++; - len -= 3; - } - if (len) { - *out++ = *from++; - if (len > 1) - *out++ = *from++; - } - } else { - from = out - dist; /* copy direct from output */ - do { /* minimum length is three */ - *out++ = *from++; - *out++ = *from++; - *out++ = *from++; - len -= 3; - } while (len > 2); - if (len) { - *out++ = *from++; - if (len > 1) - *out++ = *from++; - } - } - } else if ((op & 64) == 0) { /* 2nd level distance code */ - here = dcode[here.val + (hold & ((1U << op) - 1))]; - goto dodist; - } else { - strm->msg = (char *)"invalid distance code"; - state->mode = BAD; - break; - } - } else if ((op & 64) == 0) { /* 2nd level length code */ - here = lcode[here.val + (hold & ((1U << op) - 1))]; - goto dolen; - } else if (op & 32) { /* end-of-block */ - Tracevv((stderr, "inflate: end of block\n")); - state->mode = TYPE; - break; - } else { - strm->msg = (char *)"invalid literal/length code"; - state->mode = BAD; - break; - } - } while (in < last && out < end); - - /* return unused bytes (on entry, bits < 8, so in won't go too far back) */ - len = bits >> 3; - in -= len; - bits -= len << 3; - hold &= (1U << bits) - 1; - - /* update state and return */ - strm->next_in = in; - strm->next_out = out; - strm->avail_in = (unsigned)(in < last ? 5 + (last - in) : 5 - (in - last)); - strm->avail_out = (unsigned)(out < end ? - 257 + (end - out) : 257 - (out - end)); - state->hold = hold; - state->bits = bits; - return; -} - -/* - inflate_fast() speedups that turned out slower (on a PowerPC G3 750CXe): - - Using bit fields for code structure - - Different op definition to avoid & for extra bits (do & for table bits) - - Three separate decoding do-loops for direct, window, and wnext == 0 - - Special case for distance > 1 copies to do overlapped load and store copy - - Explicit branch predictions (based on measured branch probabilities) - - Deferring match copy and interspersed it with decoding subsequent codes - - Swapping literal/length else - - Swapping window/direct else - - Larger unrolled copy loops (three is about right) - - Moving len -= 3 statement into middle of loop - */ - -#endif /* !ASMINF */ - diff --git a/common/zlib/inffast.h b/common/zlib/inffast.h deleted file mode 100644 index 131f157a1..000000000 --- a/common/zlib/inffast.h +++ /dev/null @@ -1,12 +0,0 @@ -/* inffast.h -- header to use inffast.c - * Copyright (C) 1995-2003, 2010 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -void ZLIB_INTERNAL inflate_fast OF((z_streamp strm, unsigned start)); - diff --git a/common/zlib/inffixed.h b/common/zlib/inffixed.h deleted file mode 100644 index fec0606fd..000000000 --- a/common/zlib/inffixed.h +++ /dev/null @@ -1,95 +0,0 @@ -/* inffixed.h -- table for decoding fixed codes - * Generated automatically by makefixed(). - */ - -/* WARNING: this file should *not* be used by applications. - It is part of the implementation of this library and is - subject to change. Applications should only use zlib.h. - */ - -static const code lenfix[512] = { - {96, 7, 0}, {0, 8, 80}, {0, 8, 16}, {20, 8, 115}, {18, 7, 31}, {0, 8, 112}, {0, 8, 48}, - {0, 9, 192}, {16, 7, 10}, {0, 8, 96}, {0, 8, 32}, {0, 9, 160}, {0, 8, 0}, {0, 8, 128}, - {0, 8, 64}, {0, 9, 224}, {16, 7, 6}, {0, 8, 88}, {0, 8, 24}, {0, 9, 144}, {19, 7, 59}, - {0, 8, 120}, {0, 8, 56}, {0, 9, 208}, {17, 7, 17}, {0, 8, 104}, {0, 8, 40}, {0, 9, 176}, - {0, 8, 8}, {0, 8, 136}, {0, 8, 72}, {0, 9, 240}, {16, 7, 4}, {0, 8, 84}, {0, 8, 20}, - {21, 8, 227}, {19, 7, 43}, {0, 8, 116}, {0, 8, 52}, {0, 9, 200}, {17, 7, 13}, {0, 8, 100}, - {0, 8, 36}, {0, 9, 168}, {0, 8, 4}, {0, 8, 132}, {0, 8, 68}, {0, 9, 232}, {16, 7, 8}, - {0, 8, 92}, {0, 8, 28}, {0, 9, 152}, {20, 7, 83}, {0, 8, 124}, {0, 8, 60}, {0, 9, 216}, - {18, 7, 23}, {0, 8, 108}, {0, 8, 44}, {0, 9, 184}, {0, 8, 12}, {0, 8, 140}, {0, 8, 76}, - {0, 9, 248}, {16, 7, 3}, {0, 8, 82}, {0, 8, 18}, {21, 8, 163}, {19, 7, 35}, {0, 8, 114}, - {0, 8, 50}, {0, 9, 196}, {17, 7, 11}, {0, 8, 98}, {0, 8, 34}, {0, 9, 164}, {0, 8, 2}, - {0, 8, 130}, {0, 8, 66}, {0, 9, 228}, {16, 7, 7}, {0, 8, 90}, {0, 8, 26}, {0, 9, 148}, - {20, 7, 67}, {0, 8, 122}, {0, 8, 58}, {0, 9, 212}, {18, 7, 19}, {0, 8, 106}, {0, 8, 42}, - {0, 9, 180}, {0, 8, 10}, {0, 8, 138}, {0, 8, 74}, {0, 9, 244}, {16, 7, 5}, {0, 8, 86}, - {0, 8, 22}, {64, 8, 0}, {19, 7, 51}, {0, 8, 118}, {0, 8, 54}, {0, 9, 204}, {17, 7, 15}, - {0, 8, 102}, {0, 8, 38}, {0, 9, 172}, {0, 8, 6}, {0, 8, 134}, {0, 8, 70}, {0, 9, 236}, - {16, 7, 9}, {0, 8, 94}, {0, 8, 30}, {0, 9, 156}, {20, 7, 99}, {0, 8, 126}, {0, 8, 62}, - {0, 9, 220}, {18, 7, 27}, {0, 8, 110}, {0, 8, 46}, {0, 9, 188}, {0, 8, 14}, {0, 8, 142}, - {0, 8, 78}, {0, 9, 252}, {96, 7, 0}, {0, 8, 81}, {0, 8, 17}, {21, 8, 131}, {18, 7, 31}, - {0, 8, 113}, {0, 8, 49}, {0, 9, 194}, {16, 7, 10}, {0, 8, 97}, {0, 8, 33}, {0, 9, 162}, - {0, 8, 1}, {0, 8, 129}, {0, 8, 65}, {0, 9, 226}, {16, 7, 6}, {0, 8, 89}, {0, 8, 25}, - {0, 9, 146}, {19, 7, 59}, {0, 8, 121}, {0, 8, 57}, {0, 9, 210}, {17, 7, 17}, {0, 8, 105}, - {0, 8, 41}, {0, 9, 178}, {0, 8, 9}, {0, 8, 137}, {0, 8, 73}, {0, 9, 242}, {16, 7, 4}, - {0, 8, 85}, {0, 8, 21}, {16, 8, 258}, {19, 7, 43}, {0, 8, 117}, {0, 8, 53}, {0, 9, 202}, - {17, 7, 13}, {0, 8, 101}, {0, 8, 37}, {0, 9, 170}, {0, 8, 5}, {0, 8, 133}, {0, 8, 69}, - {0, 9, 234}, {16, 7, 8}, {0, 8, 93}, {0, 8, 29}, {0, 9, 154}, {20, 7, 83}, {0, 8, 125}, - {0, 8, 61}, {0, 9, 218}, {18, 7, 23}, {0, 8, 109}, {0, 8, 45}, {0, 9, 186}, {0, 8, 13}, - {0, 8, 141}, {0, 8, 77}, {0, 9, 250}, {16, 7, 3}, {0, 8, 83}, {0, 8, 19}, {21, 8, 195}, - {19, 7, 35}, {0, 8, 115}, {0, 8, 51}, {0, 9, 198}, {17, 7, 11}, {0, 8, 99}, {0, 8, 35}, - {0, 9, 166}, {0, 8, 3}, {0, 8, 131}, {0, 8, 67}, {0, 9, 230}, {16, 7, 7}, {0, 8, 91}, - {0, 8, 27}, {0, 9, 150}, {20, 7, 67}, {0, 8, 123}, {0, 8, 59}, {0, 9, 214}, {18, 7, 19}, - {0, 8, 107}, {0, 8, 43}, {0, 9, 182}, {0, 8, 11}, {0, 8, 139}, {0, 8, 75}, {0, 9, 246}, - {16, 7, 5}, {0, 8, 87}, {0, 8, 23}, {64, 8, 0}, {19, 7, 51}, {0, 8, 119}, {0, 8, 55}, - {0, 9, 206}, {17, 7, 15}, {0, 8, 103}, {0, 8, 39}, {0, 9, 174}, {0, 8, 7}, {0, 8, 135}, - {0, 8, 71}, {0, 9, 238}, {16, 7, 9}, {0, 8, 95}, {0, 8, 31}, {0, 9, 158}, {20, 7, 99}, - {0, 8, 127}, {0, 8, 63}, {0, 9, 222}, {18, 7, 27}, {0, 8, 111}, {0, 8, 47}, {0, 9, 190}, - {0, 8, 15}, {0, 8, 143}, {0, 8, 79}, {0, 9, 254}, {96, 7, 0}, {0, 8, 80}, {0, 8, 16}, - {20, 8, 115}, {18, 7, 31}, {0, 8, 112}, {0, 8, 48}, {0, 9, 193}, {16, 7, 10}, {0, 8, 96}, - {0, 8, 32}, {0, 9, 161}, {0, 8, 0}, {0, 8, 128}, {0, 8, 64}, {0, 9, 225}, {16, 7, 6}, - {0, 8, 88}, {0, 8, 24}, {0, 9, 145}, {19, 7, 59}, {0, 8, 120}, {0, 8, 56}, {0, 9, 209}, - {17, 7, 17}, {0, 8, 104}, {0, 8, 40}, {0, 9, 177}, {0, 8, 8}, {0, 8, 136}, {0, 8, 72}, - {0, 9, 241}, {16, 7, 4}, {0, 8, 84}, {0, 8, 20}, {21, 8, 227}, {19, 7, 43}, {0, 8, 116}, - {0, 8, 52}, {0, 9, 201}, {17, 7, 13}, {0, 8, 100}, {0, 8, 36}, {0, 9, 169}, {0, 8, 4}, - {0, 8, 132}, {0, 8, 68}, {0, 9, 233}, {16, 7, 8}, {0, 8, 92}, {0, 8, 28}, {0, 9, 153}, - {20, 7, 83}, {0, 8, 124}, {0, 8, 60}, {0, 9, 217}, {18, 7, 23}, {0, 8, 108}, {0, 8, 44}, - {0, 9, 185}, {0, 8, 12}, {0, 8, 140}, {0, 8, 76}, {0, 9, 249}, {16, 7, 3}, {0, 8, 82}, - {0, 8, 18}, {21, 8, 163}, {19, 7, 35}, {0, 8, 114}, {0, 8, 50}, {0, 9, 197}, {17, 7, 11}, - {0, 8, 98}, {0, 8, 34}, {0, 9, 165}, {0, 8, 2}, {0, 8, 130}, {0, 8, 66}, {0, 9, 229}, - {16, 7, 7}, {0, 8, 90}, {0, 8, 26}, {0, 9, 149}, {20, 7, 67}, {0, 8, 122}, {0, 8, 58}, - {0, 9, 213}, {18, 7, 19}, {0, 8, 106}, {0, 8, 42}, {0, 9, 181}, {0, 8, 10}, {0, 8, 138}, - {0, 8, 74}, {0, 9, 245}, {16, 7, 5}, {0, 8, 86}, {0, 8, 22}, {64, 8, 0}, {19, 7, 51}, - {0, 8, 118}, {0, 8, 54}, {0, 9, 205}, {17, 7, 15}, {0, 8, 102}, {0, 8, 38}, {0, 9, 173}, - {0, 8, 6}, {0, 8, 134}, {0, 8, 70}, {0, 9, 237}, {16, 7, 9}, {0, 8, 94}, {0, 8, 30}, - {0, 9, 157}, {20, 7, 99}, {0, 8, 126}, {0, 8, 62}, {0, 9, 221}, {18, 7, 27}, {0, 8, 110}, - {0, 8, 46}, {0, 9, 189}, {0, 8, 14}, {0, 8, 142}, {0, 8, 78}, {0, 9, 253}, {96, 7, 0}, - {0, 8, 81}, {0, 8, 17}, {21, 8, 131}, {18, 7, 31}, {0, 8, 113}, {0, 8, 49}, {0, 9, 195}, - {16, 7, 10}, {0, 8, 97}, {0, 8, 33}, {0, 9, 163}, {0, 8, 1}, {0, 8, 129}, {0, 8, 65}, - {0, 9, 227}, {16, 7, 6}, {0, 8, 89}, {0, 8, 25}, {0, 9, 147}, {19, 7, 59}, {0, 8, 121}, - {0, 8, 57}, {0, 9, 211}, {17, 7, 17}, {0, 8, 105}, {0, 8, 41}, {0, 9, 179}, {0, 8, 9}, - {0, 8, 137}, {0, 8, 73}, {0, 9, 243}, {16, 7, 4}, {0, 8, 85}, {0, 8, 21}, {16, 8, 258}, - {19, 7, 43}, {0, 8, 117}, {0, 8, 53}, {0, 9, 203}, {17, 7, 13}, {0, 8, 101}, {0, 8, 37}, - {0, 9, 171}, {0, 8, 5}, {0, 8, 133}, {0, 8, 69}, {0, 9, 235}, {16, 7, 8}, {0, 8, 93}, - {0, 8, 29}, {0, 9, 155}, {20, 7, 83}, {0, 8, 125}, {0, 8, 61}, {0, 9, 219}, {18, 7, 23}, - {0, 8, 109}, {0, 8, 45}, {0, 9, 187}, {0, 8, 13}, {0, 8, 141}, {0, 8, 77}, {0, 9, 251}, - {16, 7, 3}, {0, 8, 83}, {0, 8, 19}, {21, 8, 195}, {19, 7, 35}, {0, 8, 115}, {0, 8, 51}, - {0, 9, 199}, {17, 7, 11}, {0, 8, 99}, {0, 8, 35}, {0, 9, 167}, {0, 8, 3}, {0, 8, 131}, - {0, 8, 67}, {0, 9, 231}, {16, 7, 7}, {0, 8, 91}, {0, 8, 27}, {0, 9, 151}, {20, 7, 67}, - {0, 8, 123}, {0, 8, 59}, {0, 9, 215}, {18, 7, 19}, {0, 8, 107}, {0, 8, 43}, {0, 9, 183}, - {0, 8, 11}, {0, 8, 139}, {0, 8, 75}, {0, 9, 247}, {16, 7, 5}, {0, 8, 87}, {0, 8, 23}, - {64, 8, 0}, {19, 7, 51}, {0, 8, 119}, {0, 8, 55}, {0, 9, 207}, {17, 7, 15}, {0, 8, 103}, - {0, 8, 39}, {0, 9, 175}, {0, 8, 7}, {0, 8, 135}, {0, 8, 71}, {0, 9, 239}, {16, 7, 9}, - {0, 8, 95}, {0, 8, 31}, {0, 9, 159}, {20, 7, 99}, {0, 8, 127}, {0, 8, 63}, {0, 9, 223}, - {18, 7, 27}, {0, 8, 111}, {0, 8, 47}, {0, 9, 191}, {0, 8, 15}, {0, 8, 143}, {0, 8, 79}, - {0, 9, 255} -}; - -static const code distfix[32] = { - {16, 5, 1}, {23, 5, 257}, {19, 5, 17}, {27, 5, 4097}, {17, 5, 5}, {25, 5, 1025}, - {21, 5, 65}, {29, 5, 16385}, {16, 5, 3}, {24, 5, 513}, {20, 5, 33}, {28, 5, 8193}, - {18, 5, 9}, {26, 5, 2049}, {22, 5, 129}, {64, 5, 0}, {16, 5, 2}, {23, 5, 385}, - {19, 5, 25}, {27, 5, 6145}, {17, 5, 7}, {25, 5, 1537}, {21, 5, 97}, {29, 5, 24577}, - {16, 5, 4}, {24, 5, 769}, {20, 5, 49}, {28, 5, 12289}, {18, 5, 13}, {26, 5, 3073}, - {22, 5, 193}, {64, 5, 0} -}; - diff --git a/common/zlib/inflate.c b/common/zlib/inflate.c deleted file mode 100644 index 753671080..000000000 --- a/common/zlib/inflate.c +++ /dev/null @@ -1,1561 +0,0 @@ -/* inflate.c -- zlib decompression - * Copyright (C) 1995-2016 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - * Change history: - * - * 1.2.beta0 24 Nov 2002 - * - First version -- complete rewrite of inflate to simplify code, avoid - * creation of window when not needed, minimize use of window when it is - * needed, make inffast.c even faster, implement gzip decoding, and to - * improve code readability and style over the previous zlib inflate code - * - * 1.2.beta1 25 Nov 2002 - * - Use pointers for available input and output checking in inffast.c - * - Remove input and output counters in inffast.c - * - Change inffast.c entry and loop from avail_in >= 7 to >= 6 - * - Remove unnecessary second byte pull from length extra in inffast.c - * - Unroll direct copy to three copies per loop in inffast.c - * - * 1.2.beta2 4 Dec 2002 - * - Change external routine names to reduce potential conflicts - * - Correct filename to inffixed.h for fixed tables in inflate.c - * - Make hbuf[] unsigned char to match parameter type in inflate.c - * - Change strm->next_out[-state->offset] to *(strm->next_out - state->offset) - * to avoid negation problem on Alphas (64 bit) in inflate.c - * - * 1.2.beta3 22 Dec 2002 - * - Add comments on state->bits assertion in inffast.c - * - Add comments on op field in inftrees.h - * - Fix bug in reuse of allocated window after inflateReset() - * - Remove bit fields--back to byte structure for speed - * - Remove distance extra == 0 check in inflate_fast()--only helps for lengths - * - Change post-increments to pre-increments in inflate_fast(), PPC biased? - * - Add compile time option, POSTINC, to use post-increments instead (Intel?) - * - Make MATCH copy in inflate() much faster for when inflate_fast() not used - * - Use local copies of stream next and avail values, as well as local bit - * buffer and bit count in inflate()--for speed when inflate_fast() not used - * - * 1.2.beta4 1 Jan 2003 - * - Split ptr - 257 statements in inflate_table() to avoid compiler warnings - * - Move a comment on output buffer sizes from inffast.c to inflate.c - * - Add comments in inffast.c to introduce the inflate_fast() routine - * - Rearrange window copies in inflate_fast() for speed and simplification - * - Unroll last copy for window match in inflate_fast() - * - Use local copies of window variables in inflate_fast() for speed - * - Pull out common wnext == 0 case for speed in inflate_fast() - * - Make op and len in inflate_fast() unsigned for consistency - * - Add FAR to lcode and dcode declarations in inflate_fast() - * - Simplified bad distance check in inflate_fast() - * - Added inflateBackInit(), inflateBack(), and inflateBackEnd() in new - * source file infback.c to provide a call-back interface to inflate for - * programs like gzip and unzip -- uses window as output buffer to avoid - * window copying - * - * 1.2.beta5 1 Jan 2003 - * - Improved inflateBack() interface to allow the caller to provide initial - * input in strm. - * - Fixed stored blocks bug in inflateBack() - * - * 1.2.beta6 4 Jan 2003 - * - Added comments in inffast.c on effectiveness of POSTINC - * - Typecasting all around to reduce compiler warnings - * - Changed loops from while (1) or do {} while (1) to for (;;), again to - * make compilers happy - * - Changed type of window in inflateBackInit() to unsigned char * - * - * 1.2.beta7 27 Jan 2003 - * - Changed many types to unsigned or unsigned short to avoid warnings - * - Added inflateCopy() function - * - * 1.2.0 9 Mar 2003 - * - Changed inflateBack() interface to provide separate opaque descriptors - * for the in() and out() functions - * - Changed inflateBack() argument and in_func typedef to swap the length - * and buffer address return values for the input function - * - Check next_in and next_out for Z_NULL on entry to inflate() - * - * The history for versions after 1.2.0 are in ChangeLog in zlib distribution. - */ - -#include "zutil.h" -#include "inftrees.h" -#include "inflate.h" -#include "inffast.h" - -#ifdef MAKEFIXED -# ifndef BUILDFIXED -# define BUILDFIXED -# endif -#endif - -/* function prototypes */ -local int inflateStateCheck OF((z_streamp strm)); -#ifdef ZLIB_PM3_TUNED -extern void Dbprintf(const char *fmt, ...); -#else -local void fixedtables OF((struct inflate_state FAR *state)); -#endif -local int updatewindow OF((z_streamp strm, const unsigned char FAR *end, - unsigned copy)); -#ifdef BUILDFIXED -void makefixed OF((void)); -#endif -local unsigned syncsearch OF((unsigned FAR *have, const unsigned char FAR *buf, - unsigned len)); - -local int inflateStateCheck(strm) -z_streamp strm; -{ - struct inflate_state FAR *state; - if (strm == Z_NULL || - strm->zalloc == (alloc_func)0 || strm->zfree == (free_func)0) - return 1; - state = (struct inflate_state FAR *)strm->state; - if (state == Z_NULL || state->strm != strm || - state->mode < HEAD || state->mode > SYNC) - return 1; - return 0; -} - -int ZEXPORT inflateResetKeep(strm) -z_streamp strm; -{ - struct inflate_state FAR *state; - - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - strm->total_in = strm->total_out = state->total = 0; - strm->msg = Z_NULL; - if (state->wrap) /* to support ill-conceived Java test suite */ - strm->adler = state->wrap & 1; - state->mode = HEAD; - state->last = 0; - state->havedict = 0; - state->dmax = 32768U; - state->head = Z_NULL; - state->hold = 0; - state->bits = 0; - state->lencode = state->distcode = state->next = state->codes; - state->sane = 1; - state->back = -1; - Tracev((stderr, "inflate: reset\n")); - return Z_OK; -} - -int ZEXPORT inflateReset(strm) -z_streamp strm; -{ - struct inflate_state FAR *state; - - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - state->wsize = 0; - state->whave = 0; - state->wnext = 0; - return inflateResetKeep(strm); -} - -int ZEXPORT inflateReset2(strm, windowBits) -z_streamp strm; -int windowBits; -{ - int wrap; - struct inflate_state FAR *state; - - /* get the state */ - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - - /* extract wrap request from windowBits parameter */ - if (windowBits < 0) { - wrap = 0; - windowBits = -windowBits; - } else { - wrap = (windowBits >> 4) + 5; -#ifdef GUNZIP - if (windowBits < 48) - windowBits &= 15; -#endif - } - - /* set number of window bits, free window if different */ - if (windowBits && (windowBits < 8 || windowBits > 15)) - return Z_STREAM_ERROR; - if (state->window != Z_NULL && state->wbits != (unsigned)windowBits) { - ZFREE(strm, state->window); - state->window = Z_NULL; - } - - /* update state and reset the rest of it */ - state->wrap = wrap; - state->wbits = (unsigned)windowBits; - return inflateReset(strm); -} - -int ZEXPORT inflateInit2_(strm, windowBits, version, stream_size) -z_streamp strm; -int windowBits; -const char *version; -int stream_size; -{ - int ret; - struct inflate_state FAR *state; - - if (version == Z_NULL || version[0] != ZLIB_VERSION[0] || - stream_size != (int)(sizeof(z_stream))) - return Z_VERSION_ERROR; - if (strm == Z_NULL) return Z_STREAM_ERROR; - strm->msg = Z_NULL; /* in case we return an error */ - if (strm->zalloc == (alloc_func)0) { -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zalloc = zcalloc; - strm->opaque = (voidpf)0; -#endif - } - if (strm->zfree == (free_func)0) -#ifdef Z_SOLO - return Z_STREAM_ERROR; -#else - strm->zfree = zcfree; -#endif - state = (struct inflate_state FAR *) - ZALLOC(strm, 1, sizeof(struct inflate_state)); - if (state == Z_NULL) return Z_MEM_ERROR; - Tracev((stderr, "inflate: allocated\n")); - strm->state = (struct internal_state FAR *)state; - state->strm = strm; - state->window = Z_NULL; - state->mode = HEAD; /* to pass state test in inflateReset2() */ - ret = inflateReset2(strm, windowBits); - if (ret != Z_OK) { - ZFREE(strm, state); - strm->state = Z_NULL; - } - return ret; -} - -int ZEXPORT inflateInit_(strm, version, stream_size) -z_streamp strm; -const char *version; -int stream_size; -{ - return inflateInit2_(strm, DEF_WBITS, version, stream_size); -} - -int ZEXPORT inflatePrime(strm, bits, value) -z_streamp strm; -int bits; -int value; -{ - struct inflate_state FAR *state; - - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if (bits < 0) { - state->hold = 0; - state->bits = 0; - return Z_OK; - } - if (bits > 16 || state->bits + (uInt)bits > 32) return Z_STREAM_ERROR; - value &= (1L << bits) - 1; - state->hold += (unsigned)value << state->bits; - state->bits += (uInt)bits; - return Z_OK; -} - -/* - Return state with length and distance decoding tables and index sizes set to - fixed code decoding. Normally this returns fixed tables from inffixed.h. - If BUILDFIXED is defined, then instead this routine builds the tables the - first time it's called, and returns those tables the first time and - thereafter. This reduces the size of the code by about 2K bytes, in - exchange for a little execution time. However, BUILDFIXED should not be - used for threaded applications, since the rewriting of the tables and virgin - may not be thread-safe. - */ -#ifndef ZLIB_PM3_TUNED -local void fixedtables(state) -struct inflate_state FAR *state; -{ -#ifdef BUILDFIXED - static int virgin = 1; - static code *lenfix, *distfix; - static code fixed[544]; - - /* build fixed huffman tables if first call (may not be thread safe) */ - if (virgin) { - unsigned sym, bits; - static code *next; - - /* literal/length table */ - sym = 0; - while (sym < 144) state->lens[sym++] = 8; - while (sym < 256) state->lens[sym++] = 9; - while (sym < 280) state->lens[sym++] = 7; - while (sym < 288) state->lens[sym++] = 8; - next = fixed; - lenfix = next; - bits = 9; - inflate_table(LENS, state->lens, 288, &(next), &(bits), state->work); - - /* distance table */ - sym = 0; - while (sym < 32) state->lens[sym++] = 5; - distfix = next; - bits = 5; - inflate_table(DISTS, state->lens, 32, &(next), &(bits), state->work); - - /* do this just once */ - virgin = 0; - } -#else /* !BUILDFIXED */ -# include "inffixed.h" -#endif /* BUILDFIXED */ - state->lencode = lenfix; - state->lenbits = 9; - state->distcode = distfix; - state->distbits = 5; -} - -#ifdef MAKEFIXED -#include <stdio.h> - -/* - Write out the inffixed.h that is #include'd above. Defining MAKEFIXED also - defines BUILDFIXED, so the tables are built on the fly. makefixed() writes - those tables to stdout, which would be piped to inffixed.h. A small program - can simply call makefixed to do this: - - void makefixed(void); - - int main(void) - { - makefixed(); - return 0; - } - - Then that can be linked with zlib built with MAKEFIXED defined and run: - - a.out > inffixed.h - */ -void makefixed() { - unsigned low, size; - struct inflate_state state; - - fixedtables(&state); - puts(" /* inffixed.h -- table for decoding fixed codes"); - puts(" * Generated automatically by makefixed()."); - puts(" */"); - puts(""); - puts(" /* WARNING: this file should *not* be used by applications."); - puts(" It is part of the implementation of this library and is"); - puts(" subject to change. Applications should only use zlib.h."); - puts(" */"); - puts(""); - size = 1U << 9; - printf(" static const code lenfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 7) == 0) printf("\n "); - printf("{%u,%u,%d}", (low & 127) == 99 ? 64 : state.lencode[low].op, - state.lencode[low].bits, state.lencode[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n };"); - size = 1U << 5; - printf("\n static const code distfix[%u] = {", size); - low = 0; - for (;;) { - if ((low % 6) == 0) printf("\n "); - printf("{%u,%u,%d}", state.distcode[low].op, state.distcode[low].bits, - state.distcode[low].val); - if (++low == size) break; - putchar(','); - } - puts("\n };"); -} -#endif /* MAKEFIXED */ -#endif /* ZLIB_PM3_TUNED */ -/* - Update the window with the last wsize (normally 32K) bytes written before - returning. If window does not exist yet, create it. This is only called - when a window is already in use, or when output has been written during this - inflate call, but the end of the deflate stream has not been reached yet. - It is also called to create a window for dictionary data when a dictionary - is loaded. - - Providing output buffers larger than 32K to inflate() should provide a speed - advantage, since only the last 32K of output is copied to the sliding window - upon return from inflate(), and since all distances after the first 32K of - output will fall in the output data, making match copies simpler and faster. - The advantage may be dependent on the size of the processor's data caches. - */ -local int updatewindow(strm, end, copy) -z_streamp strm; -const Bytef *end; -unsigned copy; -{ - struct inflate_state FAR *state; - unsigned dist; - - state = (struct inflate_state FAR *)strm->state; - - /* if it hasn't been done already, allocate space for the window */ - if (state->window == Z_NULL) { - state->window = (unsigned char FAR *) - ZALLOC(strm, 1U << state->wbits, - sizeof(unsigned char)); - if (state->window == Z_NULL) return 1; - } - - /* if window not in use yet, initialize */ - if (state->wsize == 0) { - state->wsize = 1U << state->wbits; - state->wnext = 0; - state->whave = 0; - } - - /* copy state->wsize or less output bytes into the circular window */ - if (copy >= state->wsize) { - zmemcpy(state->window, end - state->wsize, state->wsize); - state->wnext = 0; - state->whave = state->wsize; - } else { - dist = state->wsize - state->wnext; - if (dist > copy) dist = copy; - zmemcpy(state->window + state->wnext, end - copy, dist); - copy -= dist; - if (copy) { - zmemcpy(state->window, end - copy, copy); - state->wnext = copy; - state->whave = state->wsize; - } else { - state->wnext += dist; - if (state->wnext == state->wsize) state->wnext = 0; - if (state->whave < state->wsize) state->whave += dist; - } - } - return 0; -} - -/* Macros for inflate(): */ - -/* check function to use adler32() for zlib or crc32() for gzip */ -#ifdef GUNZIP -# define UPDATE(check, buf, len) \ - (state->flags ? crc32(check, buf, len) : adler32(check, buf, len)) -#else -# define UPDATE(check, buf, len) adler32(check, buf, len) -#endif - -/* check macros for header crc */ -#ifdef GUNZIP -# define CRC2(check, word) \ - do { \ - hbuf[0] = (unsigned char)(word); \ - hbuf[1] = (unsigned char)((word) >> 8); \ - check = crc32(check, hbuf, 2); \ - } while (0) - -# define CRC4(check, word) \ - do { \ - hbuf[0] = (unsigned char)(word); \ - hbuf[1] = (unsigned char)((word) >> 8); \ - hbuf[2] = (unsigned char)((word) >> 16); \ - hbuf[3] = (unsigned char)((word) >> 24); \ - check = crc32(check, hbuf, 4); \ - } while (0) -#endif - -/* Load registers with state in inflate() for speed */ -#define LOAD() \ - do { \ - put = strm->next_out; \ - left = strm->avail_out; \ - next = strm->next_in; \ - have = strm->avail_in; \ - hold = state->hold; \ - bits = state->bits; \ - } while (0) - -/* Restore state from registers in inflate() */ -#define RESTORE() \ - do { \ - strm->next_out = put; \ - strm->avail_out = left; \ - strm->next_in = next; \ - strm->avail_in = have; \ - state->hold = hold; \ - state->bits = bits; \ - } while (0) - -/* Clear the input bit accumulator */ -#define INITBITS() \ - do { \ - hold = 0; \ - bits = 0; \ - } while (0) - -/* Get a byte of input into the bit accumulator, or return from inflate() - if there is no input available. */ -#define PULLBYTE() \ - do { \ - if (have == 0) goto inf_leave; \ - have--; \ - hold += (unsigned long)(*next++) << bits; \ - bits += 8; \ - } while (0) - -/* Assure that there are at least n bits in the bit accumulator. If there is - not enough available input to do that, then return from inflate(). */ -#define NEEDBITS(n) \ - do { \ - while (bits < (unsigned)(n)) \ - PULLBYTE(); \ - } while (0) - -/* Return the low n bits of the bit accumulator (n < 16) */ -#define BITS(n) \ - ((unsigned)hold & ((1U << (n)) - 1)) - -/* Remove n bits from the bit accumulator */ -#define DROPBITS(n) \ - do { \ - hold >>= (n); \ - bits -= (unsigned)(n); \ - } while (0) - -/* Remove zero to seven bits as needed to go to a byte boundary */ -#define BYTEBITS() \ - do { \ - hold >>= bits & 7; \ - bits -= bits & 7; \ - } while (0) - -/* - inflate() uses a state machine to process as much input data and generate as - much output data as possible before returning. The state machine is - structured roughly as follows: - - for (;;) switch (state) { - ... - case STATEn: - if (not enough input data or output space to make progress) - return; - ... make progress ... - state = STATEm; - break; - ... - } - - so when inflate() is called again, the same case is attempted again, and - if the appropriate resources are provided, the machine proceeds to the - next state. The NEEDBITS() macro is usually the way the state evaluates - whether it can proceed or should return. NEEDBITS() does the return if - the requested bits are not available. The typical use of the BITS macros - is: - - NEEDBITS(n); - ... do something with BITS(n) ... - DROPBITS(n); - - where NEEDBITS(n) either returns from inflate() if there isn't enough - input left to load n bits into the accumulator, or it continues. BITS(n) - gives the low n bits in the accumulator. When done, DROPBITS(n) drops - the low n bits off the accumulator. INITBITS() clears the accumulator - and sets the number of available bits to zero. BYTEBITS() discards just - enough bits to put the accumulator on a byte boundary. After BYTEBITS() - and a NEEDBITS(8), then BITS(8) would return the next byte in the stream. - - NEEDBITS(n) uses PULLBYTE() to get an available byte of input, or to return - if there is no input available. The decoding of variable length codes uses - PULLBYTE() directly in order to pull just enough bytes to decode the next - code, and no more. - - Some states loop until they get enough input, making sure that enough - state information is maintained to continue the loop where it left off - if NEEDBITS() returns in the loop. For example, want, need, and keep - would all have to actually be part of the saved state in case NEEDBITS() - returns: - - case STATEw: - while (want < need) { - NEEDBITS(n); - keep[want++] = BITS(n); - DROPBITS(n); - } - state = STATEx; - case STATEx: - - As shown above, if the next state is also the next case, then the break - is omitted. - - A state may also return if there is not enough output space available to - complete that state. Those states are copying stored data, writing a - literal byte, and copying a matching string. - - When returning, a "goto inf_leave" is used to update the total counters, - update the check value, and determine whether any progress has been made - during that inflate() call in order to return the proper return code. - Progress is defined as a change in either strm->avail_in or strm->avail_out. - When there is a window, goto inf_leave will update the window with the last - output written. If a goto inf_leave occurs in the middle of decompression - and there is no window currently, goto inf_leave will create one and copy - output to the window for the next call of inflate(). - - In this implementation, the flush parameter of inflate() only affects the - return code (per zlib.h). inflate() always writes as much as possible to - strm->next_out, given the space available and the provided input--the effect - documented in zlib.h of Z_SYNC_FLUSH. Furthermore, inflate() always defers - the allocation of and copying into a sliding window until necessary, which - provides the effect documented in zlib.h for Z_FINISH when the entire input - stream available. So the only thing the flush parameter actually does is: - when flush is set to Z_FINISH, inflate() cannot return Z_OK. Instead it - will return Z_BUF_ERROR if it has not reached the end of the stream. - */ - -int ZEXPORT inflate(strm, flush) -z_streamp strm; -int flush; -{ - struct inflate_state FAR *state; - z_const unsigned char FAR *next; /* next input */ - unsigned char FAR *put; /* next output */ - unsigned have, left; /* available input and output */ - unsigned long hold; /* bit buffer */ - unsigned bits; /* bits in bit buffer */ - unsigned in, out; /* save starting available input and output */ - unsigned copy; /* number of stored or match bytes to copy */ - unsigned char FAR *from; /* where to copy match bytes from */ - code here; /* current decoding table entry */ - code last; /* parent table entry */ - unsigned len; /* length to copy for repeats, bits to drop */ - int ret; /* return code */ -#ifdef GUNZIP - unsigned char hbuf[4]; /* buffer for gzip header crc calculation */ -#endif - static const unsigned short order[19] = /* permutation of code lengths */ - {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; - - if (inflateStateCheck(strm) || strm->next_out == Z_NULL || - (strm->next_in == Z_NULL && strm->avail_in != 0)) - return Z_STREAM_ERROR; - - state = (struct inflate_state FAR *)strm->state; - if (state->mode == TYPE) state->mode = TYPEDO; /* skip check */ - LOAD(); - in = have; - out = left; - ret = Z_OK; - for (;;) - switch (state->mode) { - case HEAD: - if (state->wrap == 0) { - state->mode = TYPEDO; - break; - } - NEEDBITS(16); -#ifdef GUNZIP - if ((state->wrap & 2) && hold == 0x8b1f) { /* gzip header */ - if (state->wbits == 0) - state->wbits = 15; - state->check = crc32(0L, Z_NULL, 0); - CRC2(state->check, hold); - INITBITS(); - state->mode = FLAGS; - break; - } - state->flags = 0; /* expect zlib header */ - if (state->head != Z_NULL) - state->head->done = -1; - if (!(state->wrap & 1) || /* check if zlib header allowed */ -#else - if ( -#endif - ((BITS(8) << 8) + (hold >> 8)) % 31) { - strm->msg = (char *)"incorrect header check"; - state->mode = BAD; - break; - } - if (BITS(4) != Z_DEFLATED) { - strm->msg = (char *)"unknown compression method"; - state->mode = BAD; - break; - } - DROPBITS(4); - len = BITS(4) + 8; - if (state->wbits == 0) - state->wbits = len; - if (len > 15 || len > state->wbits) { - strm->msg = (char *)"invalid window size"; - state->mode = BAD; - break; - } - state->dmax = 1U << len; - Tracev((stderr, "inflate: zlib header ok\n")); - strm->adler = state->check = adler32(0L, Z_NULL, 0); - state->mode = hold & 0x200 ? DICTID : TYPE; - INITBITS(); - break; -#ifdef GUNZIP - case FLAGS: - NEEDBITS(16); - state->flags = (int)(hold); - if ((state->flags & 0xff) != Z_DEFLATED) { - strm->msg = (char *)"unknown compression method"; - state->mode = BAD; - break; - } - if (state->flags & 0xe000) { - strm->msg = (char *)"unknown header flags set"; - state->mode = BAD; - break; - } - if (state->head != Z_NULL) - state->head->text = (int)((hold >> 8) & 1); - if ((state->flags & 0x0200) && (state->wrap & 4)) - CRC2(state->check, hold); - INITBITS(); - state->mode = TIME; - case TIME: - NEEDBITS(32); - if (state->head != Z_NULL) - state->head->time = hold; - if ((state->flags & 0x0200) && (state->wrap & 4)) - CRC4(state->check, hold); - INITBITS(); - state->mode = OS; - case OS: - NEEDBITS(16); - if (state->head != Z_NULL) { - state->head->xflags = (int)(hold & 0xff); - state->head->os = (int)(hold >> 8); - } - if ((state->flags & 0x0200) && (state->wrap & 4)) - CRC2(state->check, hold); - INITBITS(); - state->mode = EXLEN; - case EXLEN: - if (state->flags & 0x0400) { - NEEDBITS(16); - state->length = (unsigned)(hold); - if (state->head != Z_NULL) - state->head->extra_len = (unsigned)hold; - if ((state->flags & 0x0200) && (state->wrap & 4)) - CRC2(state->check, hold); - INITBITS(); - } else if (state->head != Z_NULL) - state->head->extra = Z_NULL; - state->mode = EXTRA; - case EXTRA: - if (state->flags & 0x0400) { - copy = state->length; - if (copy > have) copy = have; - if (copy) { - if (state->head != Z_NULL && - state->head->extra != Z_NULL) { - len = state->head->extra_len - state->length; - zmemcpy(state->head->extra + len, next, - len + copy > state->head->extra_max ? - state->head->extra_max - len : copy); - } - if ((state->flags & 0x0200) && (state->wrap & 4)) - state->check = crc32(state->check, next, copy); - have -= copy; - next += copy; - state->length -= copy; - } - if (state->length) goto inf_leave; - } - state->length = 0; - state->mode = NAME; - case NAME: - if (state->flags & 0x0800) { - if (have == 0) goto inf_leave; - copy = 0; - do { - len = (unsigned)(next[copy++]); - if (state->head != Z_NULL && - state->head->name != Z_NULL && - state->length < state->head->name_max) - state->head->name[state->length++] = (Bytef)len; - } while (len && copy < have); - if ((state->flags & 0x0200) && (state->wrap & 4)) - state->check = crc32(state->check, next, copy); - have -= copy; - next += copy; - if (len) goto inf_leave; - } else if (state->head != Z_NULL) - state->head->name = Z_NULL; - state->length = 0; - state->mode = COMMENT; - case COMMENT: - if (state->flags & 0x1000) { - if (have == 0) goto inf_leave; - copy = 0; - do { - len = (unsigned)(next[copy++]); - if (state->head != Z_NULL && - state->head->comment != Z_NULL && - state->length < state->head->comm_max) - state->head->comment[state->length++] = (Bytef)len; - } while (len && copy < have); - if ((state->flags & 0x0200) && (state->wrap & 4)) - state->check = crc32(state->check, next, copy); - have -= copy; - next += copy; - if (len) goto inf_leave; - } else if (state->head != Z_NULL) - state->head->comment = Z_NULL; - state->mode = HCRC; - case HCRC: - if (state->flags & 0x0200) { - NEEDBITS(16); - if ((state->wrap & 4) && hold != (state->check & 0xffff)) { - strm->msg = (char *)"header crc mismatch"; - state->mode = BAD; - break; - } - INITBITS(); - } - if (state->head != Z_NULL) { - state->head->hcrc = (int)((state->flags >> 9) & 1); - state->head->done = 1; - } - strm->adler = state->check = crc32(0L, Z_NULL, 0); - state->mode = TYPE; - break; -#endif - case DICTID: - NEEDBITS(32); - strm->adler = state->check = ZSWAP32(hold); - INITBITS(); - state->mode = DICT; - case DICT: - if (state->havedict == 0) { - RESTORE(); - return Z_NEED_DICT; - } - strm->adler = state->check = adler32(0L, Z_NULL, 0); - state->mode = TYPE; - case TYPE: - if (flush == Z_BLOCK || flush == Z_TREES) goto inf_leave; - case TYPEDO: - if (state->last) { - BYTEBITS(); - state->mode = CHECK; - break; - } - NEEDBITS(3); - state->last = BITS(1); - DROPBITS(1); - switch (BITS(2)) { - case 0: /* stored block */ - Tracev((stderr, "inflate: stored block%s\n", - state->last ? " (last)" : "")); - state->mode = STORED; - break; - case 1: /* fixed block */ -#ifdef ZLIB_PM3_TUNED - strm->msg = (char *)"fixed block coding not supported"; - state->mode = BAD; -#else - fixedtables(state); - Tracev((stderr, "inflate: fixed codes block%s\n", - state->last ? " (last)" : "")); - state->mode = LEN_; /* decode codes */ - if (flush == Z_TREES) { - DROPBITS(2); - goto inf_leave; - } -#endif - break; - case 2: /* dynamic block */ - Tracev((stderr, "inflate: dynamic codes block%s\n", - state->last ? " (last)" : "")); - state->mode = TABLE; - break; - case 3: - strm->msg = (char *)"invalid block type"; - state->mode = BAD; - } - DROPBITS(2); - break; - case STORED: - BYTEBITS(); /* go to byte boundary */ - NEEDBITS(32); - if ((hold & 0xffff) != ((hold >> 16) ^ 0xffff)) { - strm->msg = (char *)"invalid stored block lengths"; - state->mode = BAD; - break; - } - state->length = (unsigned)hold & 0xffff; - Tracev((stderr, "inflate: stored length %u\n", - state->length)); - INITBITS(); - state->mode = COPY_; - if (flush == Z_TREES) goto inf_leave; - case COPY_: - state->mode = COPY; - case COPY: - copy = state->length; - if (copy) { - if (copy > have) copy = have; - if (copy > left) copy = left; - if (copy == 0) goto inf_leave; - zmemcpy(put, next, copy); - have -= copy; - next += copy; - left -= copy; - put += copy; - state->length -= copy; - break; - } - Tracev((stderr, "inflate: stored end\n")); - state->mode = TYPE; - break; - case TABLE: - NEEDBITS(14); - state->nlen = BITS(5) + 257; - DROPBITS(5); - state->ndist = BITS(5) + 1; - DROPBITS(5); - state->ncode = BITS(4) + 4; - DROPBITS(4); -#ifndef PKZIP_BUG_WORKAROUND - if (state->nlen > 286 || state->ndist > 30) { - strm->msg = (char *)"too many length or distance symbols"; - state->mode = BAD; - break; - } -#endif - Tracev((stderr, "inflate: table sizes ok\n")); - state->have = 0; - state->mode = LENLENS; - case LENLENS: - while (state->have < state->ncode) { - NEEDBITS(3); - state->lens[order[state->have++]] = (unsigned short)BITS(3); - DROPBITS(3); - } - while (state->have < 19) - state->lens[order[state->have++]] = 0; - state->next = state->codes; - state->lencode = (const code FAR *)(state->next); - state->lenbits = 7; - ret = inflate_table(CODES, state->lens, 19, &(state->next), - &(state->lenbits), state->work); - if (ret) { - strm->msg = (char *)"invalid code lengths set"; - state->mode = BAD; - break; - } - Tracev((stderr, "inflate: code lengths ok\n")); - state->have = 0; - state->mode = CODELENS; - case CODELENS: - while (state->have < state->nlen + state->ndist) { - for (;;) { - here = state->lencode[BITS(state->lenbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if (here.val < 16) { - DROPBITS(here.bits); - state->lens[state->have++] = here.val; - } else { - if (here.val == 16) { - NEEDBITS(here.bits + 2); - DROPBITS(here.bits); - if (state->have == 0) { - strm->msg = (char *)"invalid bit length repeat"; - state->mode = BAD; - break; - } - len = state->lens[state->have - 1]; - copy = 3 + BITS(2); - DROPBITS(2); - } else if (here.val == 17) { - NEEDBITS(here.bits + 3); - DROPBITS(here.bits); - len = 0; - copy = 3 + BITS(3); - DROPBITS(3); - } else { - NEEDBITS(here.bits + 7); - DROPBITS(here.bits); - len = 0; - copy = 11 + BITS(7); - DROPBITS(7); - } - if (state->have + copy > state->nlen + state->ndist) { - strm->msg = (char *)"invalid bit length repeat"; - state->mode = BAD; - break; - } - while (copy--) - state->lens[state->have++] = (unsigned short)len; - } - } - - /* handle error breaks in while */ - if (state->mode == BAD) break; - - /* check for end-of-block code (better have one) */ - if (state->lens[256] == 0) { - strm->msg = (char *)"invalid code -- missing end-of-block"; - state->mode = BAD; - break; - } - - /* build code tables -- note: do not change the lenbits or distbits - values here (9 and 6) without reading the comments in inftrees.h - concerning the ENOUGH constants, which depend on those values */ - state->next = state->codes; - state->lencode = (const code FAR *)(state->next); - state->lenbits = 9; - ret = inflate_table(LENS, state->lens, state->nlen, &(state->next), - &(state->lenbits), state->work); - if (ret) { - strm->msg = (char *)"invalid literal/lengths set"; - state->mode = BAD; - break; - } - state->distcode = (const code FAR *)(state->next); - state->distbits = 6; - ret = inflate_table(DISTS, state->lens + state->nlen, state->ndist, - &(state->next), &(state->distbits), state->work); - if (ret) { - strm->msg = (char *)"invalid distances set"; - state->mode = BAD; - break; - } - Tracev((stderr, "inflate: codes ok\n")); - state->mode = LEN_; - if (flush == Z_TREES) goto inf_leave; - case LEN_: - state->mode = LEN; - case LEN: - if (have >= 6 && left >= 258) { - RESTORE(); - inflate_fast(strm, out); - LOAD(); - if (state->mode == TYPE) - state->back = -1; - break; - } - state->back = 0; - for (;;) { - here = state->lencode[BITS(state->lenbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if (here.op && (here.op & 0xf0) == 0) { - last = here; - for (;;) { - here = state->lencode[last.val + - (BITS(last.bits + last.op) >> last.bits)]; - if ((unsigned)(last.bits + here.bits) <= bits) break; - PULLBYTE(); - } - DROPBITS(last.bits); - state->back += last.bits; - } - DROPBITS(here.bits); - state->back += here.bits; - state->length = (unsigned)here.val; - if ((int)(here.op) == 0) { - Tracevv((stderr, here.val >= 0x20 && here.val < 0x7f ? - "inflate: literal '%c'\n" : - "inflate: literal 0x%02x\n", here.val)); - state->mode = LIT; - break; - } - if (here.op & 32) { - Tracevv((stderr, "inflate: end of block\n")); - state->back = -1; - state->mode = TYPE; - break; - } - if (here.op & 64) { - strm->msg = (char *)"invalid literal/length code"; - state->mode = BAD; - break; - } - state->extra = (unsigned)(here.op) & 15; - state->mode = LENEXT; - case LENEXT: - if (state->extra) { - NEEDBITS(state->extra); - state->length += BITS(state->extra); - DROPBITS(state->extra); - state->back += state->extra; - } - Tracevv((stderr, "inflate: length %u\n", state->length)); - state->was = state->length; - state->mode = DIST; - case DIST: - for (;;) { - here = state->distcode[BITS(state->distbits)]; - if ((unsigned)(here.bits) <= bits) break; - PULLBYTE(); - } - if ((here.op & 0xf0) == 0) { - last = here; - for (;;) { - here = state->distcode[last.val + - (BITS(last.bits + last.op) >> last.bits)]; - if ((unsigned)(last.bits + here.bits) <= bits) break; - PULLBYTE(); - } - DROPBITS(last.bits); - state->back += last.bits; - } - DROPBITS(here.bits); - state->back += here.bits; - if (here.op & 64) { - strm->msg = (char *)"invalid distance code"; - state->mode = BAD; - break; - } - state->offset = (unsigned)here.val; - state->extra = (unsigned)(here.op) & 15; - state->mode = DISTEXT; - case DISTEXT: - if (state->extra) { - NEEDBITS(state->extra); - state->offset += BITS(state->extra); - DROPBITS(state->extra); - state->back += state->extra; - } -#ifdef INFLATE_STRICT - if (state->offset > state->dmax) { - strm->msg = (char *)"invalid distance too far back"; - state->mode = BAD; - break; - } -#endif - Tracevv((stderr, "inflate: distance %u\n", state->offset)); - state->mode = MATCH; - case MATCH: - if (left == 0) goto inf_leave; - copy = out - left; - if (state->offset > copy) { /* copy from window */ - copy = state->offset - copy; - if (copy > state->whave) { - if (state->sane) { - strm->msg = (char *)"invalid distance too far back"; - state->mode = BAD; - break; - } -#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - Trace((stderr, "inflate.c too far\n")); - copy -= state->whave; - if (copy > state->length) copy = state->length; - if (copy > left) copy = left; - left -= copy; - state->length -= copy; - do { - *put++ = 0; - } while (--copy); - if (state->length == 0) state->mode = LEN; - break; -#endif - } - if (copy > state->wnext) { - copy -= state->wnext; - from = state->window + (state->wsize - copy); - } else - from = state->window + (state->wnext - copy); - if (copy > state->length) copy = state->length; - } else { /* copy from output */ - from = put - state->offset; - copy = state->length; - } - if (copy > left) copy = left; - left -= copy; - state->length -= copy; - do { - *put++ = *from++; - } while (--copy); - if (state->length == 0) state->mode = LEN; - break; - case LIT: - if (left == 0) goto inf_leave; - *put++ = (unsigned char)(state->length); - left--; - state->mode = LEN; - break; - case CHECK: - if (state->wrap) { - NEEDBITS(32); - out -= left; - strm->total_out += out; - state->total += out; - if ((state->wrap & 4) && out) - strm->adler = state->check = - UPDATE(state->check, put - out, out); - out = left; - if ((state->wrap & 4) && ( -#ifdef GUNZIP - state->flags ? hold : -#endif - ZSWAP32(hold)) != state->check) { - strm->msg = (char *)"incorrect data check"; - state->mode = BAD; - break; - } - INITBITS(); - Tracev((stderr, "inflate: check matches trailer\n")); - } -#ifdef GUNZIP - state->mode = LENGTH; - case LENGTH: - if (state->wrap && state->flags) { - NEEDBITS(32); - if (hold != (state->total & 0xffffffffUL)) { - strm->msg = (char *)"incorrect length check"; - state->mode = BAD; - break; - } - INITBITS(); - Tracev((stderr, "inflate: length matches trailer\n")); - } -#endif - state->mode = DONE; - case DONE: - ret = Z_STREAM_END; - goto inf_leave; - case BAD: - ret = Z_DATA_ERROR; - goto inf_leave; - case MEM: - return Z_MEM_ERROR; - case SYNC: - default: - return Z_STREAM_ERROR; - } - - /* - Return from inflate(), updating the total counts and the check value. - If there was no progress during the inflate() call, return a buffer - error. Call updatewindow() to create and/or update the window state. - Note: a memory error from inflate() is non-recoverable. - */ -inf_leave: - RESTORE(); - if (state->wsize || (out != strm->avail_out && state->mode < BAD && - (state->mode < CHECK || flush != Z_FINISH))) - if (updatewindow(strm, strm->next_out, out - strm->avail_out)) { - state->mode = MEM; - return Z_MEM_ERROR; - } - in -= strm->avail_in; - out -= strm->avail_out; - strm->total_in += in; - strm->total_out += out; - state->total += out; - if ((state->wrap & 4) && out) - strm->adler = state->check = - UPDATE(state->check, strm->next_out - out, out); - strm->data_type = (int)state->bits + (state->last ? 64 : 0) + - (state->mode == TYPE ? 128 : 0) + - (state->mode == LEN_ || state->mode == COPY_ ? 256 : 0); - if (((in == 0 && out == 0) || flush == Z_FINISH) && ret == Z_OK) - ret = Z_BUF_ERROR; - return ret; -} - -int ZEXPORT inflateEnd(strm) -z_streamp strm; -{ - struct inflate_state FAR *state; - if (inflateStateCheck(strm)) - return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if (state->window != Z_NULL) ZFREE(strm, state->window); - ZFREE(strm, strm->state); - strm->state = Z_NULL; - Tracev((stderr, "inflate: end\n")); - return Z_OK; -} - -int ZEXPORT inflateGetDictionary(strm, dictionary, dictLength) -z_streamp strm; -Bytef *dictionary; -uInt *dictLength; -{ - struct inflate_state FAR *state; - - /* check state */ - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - - /* copy dictionary */ - if (state->whave && dictionary != Z_NULL) { - zmemcpy(dictionary, state->window + state->wnext, - state->whave - state->wnext); - zmemcpy(dictionary + state->whave - state->wnext, - state->window, state->wnext); - } - if (dictLength != Z_NULL) - *dictLength = state->whave; - return Z_OK; -} - -int ZEXPORT inflateSetDictionary(strm, dictionary, dictLength) -z_streamp strm; -const Bytef *dictionary; -uInt dictLength; -{ - struct inflate_state FAR *state; - unsigned long dictid; - int ret; - - /* check state */ - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if (state->wrap != 0 && state->mode != DICT) - return Z_STREAM_ERROR; - - /* check for correct dictionary identifier */ - if (state->mode == DICT) { - dictid = adler32(0L, Z_NULL, 0); - dictid = adler32(dictid, dictionary, dictLength); - if (dictid != state->check) - return Z_DATA_ERROR; - } - - /* copy dictionary to window using updatewindow(), which will amend the - existing dictionary if appropriate */ - ret = updatewindow(strm, dictionary + dictLength, dictLength); - if (ret) { - state->mode = MEM; - return Z_MEM_ERROR; - } - state->havedict = 1; - Tracev((stderr, "inflate: dictionary set\n")); - return Z_OK; -} - -int ZEXPORT inflateGetHeader(strm, head) -z_streamp strm; -gz_headerp head; -{ - struct inflate_state FAR *state; - - /* check state */ - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if ((state->wrap & 2) == 0) return Z_STREAM_ERROR; - - /* save header structure */ - state->head = head; - head->done = 0; - return Z_OK; -} - -/* - Search buf[0..len-1] for the pattern: 0, 0, 0xff, 0xff. Return when found - or when out of input. When called, *have is the number of pattern bytes - found in order so far, in 0..3. On return *have is updated to the new - state. If on return *have equals four, then the pattern was found and the - return value is how many bytes were read including the last byte of the - pattern. If *have is less than four, then the pattern has not been found - yet and the return value is len. In the latter case, syncsearch() can be - called again with more data and the *have state. *have is initialized to - zero for the first call. - */ -local unsigned syncsearch(have, buf, len) -unsigned FAR *have; -const unsigned char FAR *buf; -unsigned len; -{ - unsigned got; - unsigned next; - - got = *have; - next = 0; - while (next < len && got < 4) { - if ((int)(buf[next]) == (got < 2 ? 0 : 0xff)) - got++; - else if (buf[next]) - got = 0; - else - got = 4 - got; - next++; - } - *have = got; - return next; -} - -int ZEXPORT inflateSync(strm) -z_streamp strm; -{ - unsigned len; /* number of bytes to look at or looked at */ - unsigned long in, out; /* temporary to save total_in and total_out */ - unsigned char buf[4]; /* to restore bit buffer to byte string */ - struct inflate_state FAR *state; - - /* check parameters */ - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if (strm->avail_in == 0 && state->bits < 8) return Z_BUF_ERROR; - - /* if first time, start search in bit buffer */ - if (state->mode != SYNC) { - state->mode = SYNC; - state->hold <<= state->bits & 7; - state->bits -= state->bits & 7; - len = 0; - while (state->bits >= 8) { - buf[len++] = (unsigned char)(state->hold); - state->hold >>= 8; - state->bits -= 8; - } - state->have = 0; - syncsearch(&(state->have), buf, len); - } - - /* search available input */ - len = syncsearch(&(state->have), strm->next_in, strm->avail_in); - strm->avail_in -= len; - strm->next_in += len; - strm->total_in += len; - - /* return no joy or set up to restart inflate() on a new block */ - if (state->have != 4) return Z_DATA_ERROR; - in = strm->total_in; - out = strm->total_out; - inflateReset(strm); - strm->total_in = in; - strm->total_out = out; - state->mode = TYPE; - return Z_OK; -} - -/* - Returns true if inflate is currently at the end of a block generated by - Z_SYNC_FLUSH or Z_FULL_FLUSH. This function is used by one PPP - implementation to provide an additional safety check. PPP uses - Z_SYNC_FLUSH but removes the length bytes of the resulting empty stored - block. When decompressing, PPP checks that at the end of input packet, - inflate is waiting for these length bytes. - */ -int ZEXPORT inflateSyncPoint(strm) -z_streamp strm; -{ - struct inflate_state FAR *state; - - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - return state->mode == STORED && state->bits == 0; -} - -int ZEXPORT inflateCopy(dest, source) -z_streamp dest; -z_streamp source; -{ - struct inflate_state FAR *state; - struct inflate_state FAR *copy; - unsigned char FAR *window; - unsigned wsize; - - /* check input */ - if (inflateStateCheck(source) || dest == Z_NULL) - return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)source->state; - - /* allocate space */ - copy = (struct inflate_state FAR *) - ZALLOC(source, 1, sizeof(struct inflate_state)); - if (copy == Z_NULL) return Z_MEM_ERROR; - window = Z_NULL; - if (state->window != Z_NULL) { - window = (unsigned char FAR *) - ZALLOC(source, 1U << state->wbits, sizeof(unsigned char)); - if (window == Z_NULL) { - ZFREE(source, copy); - return Z_MEM_ERROR; - } - } - - /* copy state */ - zmemcpy((voidpf)dest, (voidpf)source, sizeof(z_stream)); - zmemcpy((voidpf)copy, (voidpf)state, sizeof(struct inflate_state)); - copy->strm = dest; - if (state->lencode >= state->codes && - state->lencode <= state->codes + ENOUGH - 1) { - copy->lencode = copy->codes + (state->lencode - state->codes); - copy->distcode = copy->codes + (state->distcode - state->codes); - } - copy->next = copy->codes + (state->next - state->codes); - if (window != Z_NULL) { - wsize = 1U << state->wbits; - zmemcpy(window, state->window, wsize); - } - copy->window = window; - dest->state = (struct internal_state FAR *)copy; - return Z_OK; -} - -int ZEXPORT inflateUndermine(strm, subvert) -z_streamp strm; -int subvert; -{ - struct inflate_state FAR *state; - - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; -#ifdef INFLATE_ALLOW_INVALID_DISTANCE_TOOFAR_ARRR - state->sane = !subvert; - return Z_OK; -#else - (void)subvert; - state->sane = 1; - return Z_DATA_ERROR; -#endif -} - -int ZEXPORT inflateValidate(strm, check) -z_streamp strm; -int check; -{ - struct inflate_state FAR *state; - - if (inflateStateCheck(strm)) return Z_STREAM_ERROR; - state = (struct inflate_state FAR *)strm->state; - if (check) - state->wrap |= 4; - else - state->wrap &= ~4; - return Z_OK; -} - -long ZEXPORT inflateMark(strm) -z_streamp strm; -{ - struct inflate_state FAR *state; - - if (inflateStateCheck(strm)) - return -(1L << 16); - state = (struct inflate_state FAR *)strm->state; - return (long)(((unsigned long)((long)state->back)) << 16) + - (state->mode == COPY ? state->length : - (state->mode == MATCH ? state->was - state->length : 0)); -} - -unsigned long ZEXPORT inflateCodesUsed(strm) -z_streamp strm; -{ - struct inflate_state FAR *state; - if (inflateStateCheck(strm)) return (unsigned long) - 1; - state = (struct inflate_state FAR *)strm->state; - return (unsigned long)(state->next - state->codes); -} diff --git a/common/zlib/inflate.h b/common/zlib/inflate.h deleted file mode 100644 index f91e0aa78..000000000 --- a/common/zlib/inflate.h +++ /dev/null @@ -1,130 +0,0 @@ -/* inflate.h -- internal inflate state definition - * Copyright (C) 1995-2016 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* define NO_GZIP when compiling if you want to disable gzip header and - trailer decoding by inflate(). NO_GZIP would be used to avoid linking in - the crc code when it is not needed. For shared libraries, gzip decoding - should be left enabled. */ -#ifndef NO_GZIP -# define GUNZIP -#endif - -/* Possible inflate modes between inflate() calls */ -typedef enum { - HEAD = 16180, /* i: waiting for magic header */ -#ifdef GUNZIP - FLAGS, /* i: waiting for method and flags (gzip) */ - TIME, /* i: waiting for modification time (gzip) */ - OS, /* i: waiting for extra flags and operating system (gzip) */ - EXLEN, /* i: waiting for extra length (gzip) */ - EXTRA, /* i: waiting for extra bytes (gzip) */ - NAME, /* i: waiting for end of file name (gzip) */ - COMMENT, /* i: waiting for end of comment (gzip) */ - HCRC, /* i: waiting for header crc (gzip) */ -#endif - DICTID, /* i: waiting for dictionary check value */ - DICT, /* waiting for inflateSetDictionary() call */ - TYPE, /* i: waiting for type bits, including last-flag bit */ - TYPEDO, /* i: same, but skip check to exit inflate on new block */ - STORED, /* i: waiting for stored size (length and complement) */ - COPY_, /* i/o: same as COPY below, but only first time in */ - COPY, /* i/o: waiting for input or output to copy stored block */ - TABLE, /* i: waiting for dynamic block table lengths */ - LENLENS, /* i: waiting for code length code lengths */ - CODELENS, /* i: waiting for length/lit and distance code lengths */ - LEN_, /* i: same as LEN below, but only first time in */ - LEN, /* i: waiting for length/lit/eob code */ - LENEXT, /* i: waiting for length extra bits */ - DIST, /* i: waiting for distance code */ - DISTEXT, /* i: waiting for distance extra bits */ - MATCH, /* o: waiting for output space to copy string */ - LIT, /* o: waiting for output space to write literal */ - CHECK, /* i: waiting for 32-bit check value */ -#ifdef GUNZIP - LENGTH, /* i: waiting for 32-bit length (gzip) */ -#endif - DONE, /* finished check, done -- remain here until reset */ - BAD, /* got a data error -- remain here until reset */ - MEM, /* got an inflate() memory error -- remain here until reset */ - SYNC /* looking for synchronization bytes to restart inflate() */ -} inflate_mode; - -/* - State transitions between above modes - - - (most modes can go to BAD or MEM on error -- not shown for clarity) - - Process header: - HEAD -> (gzip) or (zlib) or (raw) - (gzip) -> FLAGS -> TIME -> OS -> EXLEN -> EXTRA -> NAME -> COMMENT -> - HCRC -> TYPE - (zlib) -> DICTID or TYPE - DICTID -> DICT -> TYPE - (raw) -> TYPEDO - Read deflate blocks: - TYPE -> TYPEDO -> STORED or TABLE or LEN_ or CHECK - STORED -> COPY_ -> COPY -> TYPE - TABLE -> LENLENS -> CODELENS -> LEN_ - LEN_ -> LEN - Read deflate codes in fixed or dynamic block: - LEN -> LENEXT or LIT or TYPE - LENEXT -> DIST -> DISTEXT -> MATCH -> LEN - LIT -> LEN - Process trailer: - CHECK -> LENGTH -> DONE - */ - -/* State maintained between inflate() calls -- approximately 7K bytes, not - including the allocated sliding window, which is up to 32K bytes. */ -struct inflate_state { - z_streamp strm; /* pointer back to this zlib stream */ - inflate_mode mode; /* current inflate mode */ - int last; /* true if processing last block */ - int wrap; /* bit 0 true for zlib, bit 1 true for gzip, - bit 2 true to validate check value */ - int havedict; /* true if dictionary provided */ - int flags; /* gzip header method and flags (0 if zlib) */ - unsigned dmax; /* zlib header max distance (INFLATE_STRICT) */ - unsigned long check; /* protected copy of check value */ - unsigned long total; /* protected copy of output count */ - gz_headerp head; /* where to save gzip header information */ - /* sliding window */ - unsigned wbits; /* log base 2 of requested window size */ - unsigned wsize; /* window size or zero if not using window */ - unsigned whave; /* valid bytes in the window */ - unsigned wnext; /* window write index */ - unsigned char FAR *window; /* allocated sliding window, if needed */ - /* bit accumulator */ - unsigned long hold; /* input bit accumulator */ - unsigned bits; /* number of bits in "in" */ - /* for string and stored block copying */ - unsigned length; /* literal or length of data to copy */ - unsigned offset; /* distance back to copy string from */ - /* for table and code decoding */ - unsigned extra; /* extra bits needed */ - /* fixed and dynamic code tables */ - code const FAR *lencode; /* starting table for length/literal codes */ - code const FAR *distcode; /* starting table for distance codes */ - unsigned lenbits; /* index bits for lencode */ - unsigned distbits; /* index bits for distcode */ - /* dynamic table building */ - unsigned ncode; /* number of code length code lengths */ - unsigned nlen; /* number of length code lengths */ - unsigned ndist; /* number of distance code lengths */ - unsigned have; /* number of code lengths in lens[] */ - code FAR *next; /* next available space in codes[] */ - unsigned short lens[320]; /* temporary storage for code lengths */ - unsigned short work[288]; /* work area for code table building */ - code codes[ENOUGH]; /* space for code tables */ - int sane; /* if false, allow invalid distance too far */ - int back; /* bits back of last unprocessed length/lit */ - unsigned was; /* initial length of match */ -}; - diff --git a/common/zlib/inftrees.c b/common/zlib/inftrees.c deleted file mode 100644 index 3dae7e534..000000000 --- a/common/zlib/inftrees.c +++ /dev/null @@ -1,306 +0,0 @@ -/* inftrees.c -- generate Huffman trees for efficient decoding - * Copyright (C) 1995-2017 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -#include "zutil.h" -#include "inftrees.h" - -#define MAXBITS 15 - -const char inflate_copyright[] = -#ifdef ZLIB_PM3_TUNED - " inflate 1.2.11.f-Proxmark3 Copyright 1995-2017 Mark Adler "; -#else - " inflate 1.2.11 Copyright 1995-2017 Mark Adler "; -#endif -/* - If you use the zlib library in a product, an acknowledgment is welcome - in the documentation of your product. If for some reason you cannot - include such an acknowledgment, I would appreciate that you keep this - copyright string in the executable of your product. - */ - -/* - Build a set of tables to decode the provided canonical Huffman code. - The code lengths are lens[0..codes-1]. The result starts at *table, - whose indices are 0..2^bits-1. work is a writable array of at least - lens shorts, which is used as a work area. type is the type of code - to be generated, CODES, LENS, or DISTS. On return, zero is success, - -1 is an invalid code, and +1 means that ENOUGH isn't enough. table - on return points to the next available entry's address. bits is the - requested root table index bits, and on return it is the actual root - table index bits. It will differ if the request is greater than the - longest code or if it is less than the shortest code. - */ -int ZLIB_INTERNAL inflate_table(codetype type, unsigned short FAR *lens, - unsigned codes, code FAR *FAR *table, - unsigned FAR *bits, unsigned short FAR *work) { - unsigned len; /* a code's length in bits */ - unsigned sym; /* index of code symbols */ - unsigned min, max; /* minimum and maximum code lengths */ - unsigned root; /* number of index bits for root table */ - unsigned curr; /* number of index bits for current table */ - unsigned drop; /* code bits to drop for sub-table */ - int left; /* number of prefix codes available */ - unsigned used; /* code entries in table used */ - unsigned huff; /* Huffman code */ - unsigned incr; /* for incrementing code, index */ - unsigned fill; /* index for replicating entries */ - unsigned low; /* low bits for current root entry */ - unsigned mask; /* mask for low root bits */ - code here; /* table entry for duplication */ - code FAR *next; /* next available space in table */ - const unsigned short FAR *base; /* base value table to use */ - const unsigned short FAR *extra; /* extra bits table to use */ - unsigned match; /* use base and extra for symbol >= match */ - unsigned short count[MAXBITS + 1]; /* number of codes of each length */ - unsigned short offs[MAXBITS + 1]; /* offsets in table for each length */ - static const unsigned short lbase[31] = { /* Length codes 257..285 base */ - 3, 4, 5, 6, 7, 8, 9, 10, 11, 13, 15, 17, 19, 23, 27, 31, - 35, 43, 51, 59, 67, 83, 99, 115, 131, 163, 195, 227, 258, 0, 0 - }; - static const unsigned short lext[31] = { /* Length codes 257..285 extra */ - 16, 16, 16, 16, 16, 16, 16, 16, 17, 17, 17, 17, 18, 18, 18, 18, - 19, 19, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 16, 77, 202 - }; - static const unsigned short dbase[32] = { /* Distance codes 0..29 base */ - 1, 2, 3, 4, 5, 7, 9, 13, 17, 25, 33, 49, 65, 97, 129, 193, - 257, 385, 513, 769, 1025, 1537, 2049, 3073, 4097, 6145, - 8193, 12289, 16385, 24577, 0, 0 - }; - static const unsigned short dext[32] = { /* Distance codes 0..29 extra */ - 16, 16, 16, 16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, - 23, 23, 24, 24, 25, 25, 26, 26, 27, 27, - 28, 28, 29, 29, 64, 64 - }; - - /* - Process a set of code lengths to create a canonical Huffman code. The - code lengths are lens[0..codes-1]. Each length corresponds to the - symbols 0..codes-1. The Huffman code is generated by first sorting the - symbols by length from short to long, and retaining the symbol order - for codes with equal lengths. Then the code starts with all zero bits - for the first code of the shortest length, and the codes are integer - increments for the same length, and zeros are appended as the length - increases. For the deflate format, these bits are stored backwards - from their more natural integer increment ordering, and so when the - decoding tables are built in the large loop below, the integer codes - are incremented backwards. - - This routine assumes, but does not check, that all of the entries in - lens[] are in the range 0..MAXBITS. The caller must assure this. - 1..MAXBITS is interpreted as that code length. zero means that that - symbol does not occur in this code. - - The codes are sorted by computing a count of codes for each length, - creating from that a table of starting indices for each length in the - sorted table, and then entering the symbols in order in the sorted - table. The sorted table is work[], with that space being provided by - the caller. - - The length counts are used for other purposes as well, i.e. finding - the minimum and maximum length codes, determining if there are any - codes at all, checking for a valid set of lengths, and looking ahead - at length counts to determine sub-table sizes when building the - decoding tables. - */ - - /* accumulate lengths for codes (assumes lens[] all in 0..MAXBITS) */ - for (len = 0; len <= MAXBITS; len++) - count[len] = 0; - for (sym = 0; sym < codes; sym++) - count[lens[sym]]++; - - /* bound code lengths, force root to be within code lengths */ - root = *bits; - for (max = MAXBITS; max >= 1; max--) - if (count[max] != 0) break; - if (root > max) root = max; - if (max == 0) { /* no symbols to code at all */ - here.op = (unsigned char)64; /* invalid code marker */ - here.bits = (unsigned char)1; - here.val = (unsigned short)0; - *(*table)++ = here; /* make a table to force an error */ - *(*table)++ = here; - *bits = 1; - return 0; /* no symbols, but wait for decoding to report error */ - } - for (min = 1; min < max; min++) - if (count[min] != 0) break; - if (root < min) root = min; - - /* check for an over-subscribed or incomplete set of lengths */ - left = 1; - for (len = 1; len <= MAXBITS; len++) { - left <<= 1; - left -= count[len]; - if (left < 0) return -1; /* over-subscribed */ - } - if (left > 0 && (type == CODES || max != 1)) - return -1; /* incomplete set */ - - /* generate offsets into symbol table for each length for sorting */ - offs[1] = 0; - for (len = 1; len < MAXBITS; len++) - offs[len + 1] = offs[len] + count[len]; - - /* sort symbols by length, by symbol order within each length */ - for (sym = 0; sym < codes; sym++) - if (lens[sym] != 0) work[offs[lens[sym]]++] = (unsigned short)sym; - - /* - Create and fill in decoding tables. In this loop, the table being - filled is at next and has curr index bits. The code being used is huff - with length len. That code is converted to an index by dropping drop - bits off of the bottom. For codes where len is less than drop + curr, - those top drop + curr - len bits are incremented through all values to - fill the table with replicated entries. - - root is the number of index bits for the root table. When len exceeds - root, sub-tables are created pointed to by the root entry with an index - of the low root bits of huff. This is saved in low to check for when a - new sub-table should be started. drop is zero when the root table is - being filled, and drop is root when sub-tables are being filled. - - When a new sub-table is needed, it is necessary to look ahead in the - code lengths to determine what size sub-table is needed. The length - counts are used for this, and so count[] is decremented as codes are - entered in the tables. - - used keeps track of how many table entries have been allocated from the - provided *table space. It is checked for LENS and DIST tables against - the constants ENOUGH_LENS and ENOUGH_DISTS to guard against changes in - the initial root table size constants. See the comments in inftrees.h - for more information. - - sym increments through all symbols, and the loop terminates when - all codes of length max, i.e. all codes, have been processed. This - routine permits incomplete codes, so another loop after this one fills - in the rest of the decoding tables with invalid code markers. - */ - - /* set up for code type */ - switch (type) { - case CODES: - base = extra = work; /* dummy value--not used */ - match = 20; - break; - case LENS: - base = lbase; - extra = lext; - match = 257; - break; - case DISTS: - default: - base = dbase; - extra = dext; - match = 0; - } - - /* initialize state for loop */ - huff = 0; /* starting code */ - sym = 0; /* starting code symbol */ - len = min; /* starting code length */ - next = *table; /* current table to fill in */ - curr = root; /* current table index bits */ - drop = 0; /* current bits to drop from code for index */ - low = (unsigned)(-1); /* trigger new sub-table when len > root */ - used = 1U << root; /* use root table entries */ - mask = used - 1; /* mask for comparing low */ - - /* check available table space */ - if ((type == LENS && used > ENOUGH_LENS) || - (type == DISTS && used > ENOUGH_DISTS)) - return 1; - - /* process all codes and make table entries */ - for (;;) { - /* create table entry */ - here.bits = (unsigned char)(len - drop); - if (work[sym] + 1U < match) { - here.op = (unsigned char)0; - here.val = work[sym]; - } else if (work[sym] >= match) { - here.op = (unsigned char)(extra[work[sym] - match]); - here.val = base[work[sym] - match]; - } else { - here.op = (unsigned char)(32 + 64); /* end of block */ - here.val = 0; - } - - /* replicate for those indices with low len bits equal to huff */ - incr = 1U << (len - drop); - fill = 1U << curr; - min = fill; /* save offset to next table */ - do { - fill -= incr; - next[(huff >> drop) + fill] = here; - } while (fill != 0); - - /* backwards increment the len-bit code huff */ - incr = 1U << (len - 1); - while (huff & incr) - incr >>= 1; - if (incr != 0) { - huff &= incr - 1; - huff += incr; - } else - huff = 0; - - /* go to next symbol, update count, len */ - sym++; - if (--(count[len]) == 0) { - if (len == max) break; - len = lens[work[sym]]; - } - - /* create new sub-table if needed */ - if (len > root && (huff & mask) != low) { - /* if first time, transition to sub-tables */ - if (drop == 0) - drop = root; - - /* increment past last table */ - next += min; /* here min is 1 << curr */ - - /* determine length of next table */ - curr = len - drop; - left = (int)(1 << curr); - while (curr + drop < max) { - left -= count[curr + drop]; - if (left <= 0) break; - curr++; - left <<= 1; - } - - /* check for enough space */ - used += 1U << curr; - if ((type == LENS && used > ENOUGH_LENS) || - (type == DISTS && used > ENOUGH_DISTS)) - return 1; - - /* point entry in root table to sub-table */ - low = huff & mask; - (*table)[low].op = (unsigned char)curr; - (*table)[low].bits = (unsigned char)root; - (*table)[low].val = (unsigned short)(next - *table); - } - } - - /* fill in remaining table entry if code is incomplete (guaranteed to have - at most one remaining entry, since if the code is incomplete, the - maximum code length that was allowed to get this far is one bit) */ - if (huff != 0) { - here.op = (unsigned char)64; /* invalid code marker */ - here.bits = (unsigned char)(len - drop); - here.val = (unsigned short)0; - next[huff] = here; - } - - /* set return parameters */ - *table += used; - *bits = root; - return 0; -} - diff --git a/common/zlib/inftrees.h b/common/zlib/inftrees.h deleted file mode 100644 index 33584c58d..000000000 --- a/common/zlib/inftrees.h +++ /dev/null @@ -1,63 +0,0 @@ -/* inftrees.h -- header to use inftrees.c - * Copyright (C) 1995-2005, 2010 Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* Structure for decoding tables. Each entry provides either the - information needed to do the operation requested by the code that - indexed that table entry, or it provides a pointer to another - table that indexes more bits of the code. op indicates whether - the entry is a pointer to another table, a literal, a length or - distance, an end-of-block, or an invalid code. For a table - pointer, the low four bits of op is the number of index bits of - that table. For a length or distance, the low four bits of op - is the number of extra bits to get after the code. bits is - the number of bits in this code or part of the code to drop off - of the bit buffer. val is the actual byte to output in the case - of a literal, the base length or distance, or the offset from - the current table to the next table. Each entry is four bytes. */ -typedef struct { - unsigned char op; /* operation, extra bits, table bits */ - unsigned char bits; /* bits in this part of the code */ - unsigned short val; /* offset in table or code value */ -} code; - -/* op values as set by inflate_table(): - 00000000 - literal - 0000tttt - table link, tttt != 0 is the number of table index bits - 0001eeee - length or distance, eeee is the number of extra bits - 01100000 - end of block - 01000000 - invalid code - */ - -/* Maximum size of the dynamic table. The maximum number of code structures is - 1444, which is the sum of 852 for literal/length codes and 592 for distance - codes. These values were found by exhaustive searches using the program - examples/enough.c found in the zlib distribtution. The arguments to that - program are the number of symbols, the initial root table size, and the - maximum bit length of a code. "enough 286 9 15" for literal/length codes - returns returns 852, and "enough 30 6 15" for distance codes returns 592. - The initial root table size (9 or 6) is found in the fifth argument of the - inflate_table() calls in inflate.c and infback.c. If the root table size is - changed, then these maximum sizes would be need to be recalculated and - updated. */ -#define ENOUGH_LENS 852 -#define ENOUGH_DISTS 592 -#define ENOUGH (ENOUGH_LENS+ENOUGH_DISTS) - -/* Type of code to build for inflate_table() */ -typedef enum { - CODES, - LENS, - DISTS -} codetype; - -int ZLIB_INTERNAL inflate_table OF((codetype type, unsigned short FAR *lens, - unsigned codes, code FAR *FAR *table, - unsigned FAR *bits, unsigned short FAR *work)); - diff --git a/common/zlib/trees.c b/common/zlib/trees.c deleted file mode 100644 index 1ef49d00d..000000000 --- a/common/zlib/trees.c +++ /dev/null @@ -1,1222 +0,0 @@ -/* trees.c -- output deflated data using Huffman coding - * Copyright (C) 1995-2017 Jean-loup Gailly - * detect_data_type() function provided freely by Cosmin Truta, 2006 - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* - * ALGORITHM - * - * The "deflation" process uses several Huffman trees. The more - * common source values are represented by shorter bit sequences. - * - * Each code tree is stored in a compressed form which is itself - * a Huffman encoding of the lengths of all the code strings (in - * ascending order by source values). The actual code strings are - * reconstructed from the lengths in the inflate process, as described - * in the deflate specification. - * - * REFERENCES - * - * Deutsch, L.P.,"'Deflate' Compressed Data Format Specification". - * Available in ftp.uu.net:/pub/archiving/zip/doc/deflate-1.1.doc - * - * Storer, James A. - * Data Compression: Methods and Theory, pp. 49-50. - * Computer Science Press, 1988. ISBN 0-7167-8156-5. - * - * Sedgewick, R. - * Algorithms, p290. - * Addison-Wesley, 1983. ISBN 0-201-06672-6. - */ - -/* @(#) $Id$ */ - -/* #define GEN_TREES_H */ - -#include "deflate.h" - -#ifdef ZLIB_DEBUG -# include <ctype.h> -#endif - -/* =========================================================================== - * Constants - */ - -#define MAX_BL_BITS 7 -/* Bit length codes must not exceed MAX_BL_BITS bits */ - -#define END_BLOCK 256 -/* end of block literal code */ - -#define REP_3_6 16 -/* repeat previous bit length 3-6 times (2 bits of repeat count) */ - -#define REPZ_3_10 17 -/* repeat a zero length 3-10 times (3 bits of repeat count) */ - -#define REPZ_11_138 18 -/* repeat a zero length 11-138 times (7 bits of repeat count) */ - -local const int extra_lbits[LENGTH_CODES] /* extra bits for each length code */ - = {0, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 1, 2, 2, 2, 2, 3, 3, 3, 3, 4, 4, 4, 4, 5, 5, 5, 5, 0}; - -local const int extra_dbits[D_CODES] /* extra bits for each distance code */ - = {0, 0, 0, 0, 1, 1, 2, 2, 3, 3, 4, 4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 13, 13}; - -local const int extra_blbits[BL_CODES]/* extra bits for each bit length code */ - = {0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 2, 3, 7}; - -local const uch bl_order[BL_CODES] - = {16, 17, 18, 0, 8, 7, 9, 6, 10, 5, 11, 4, 12, 3, 13, 2, 14, 1, 15}; -/* The lengths of the bit length codes are sent in order of decreasing - * probability, to avoid transmitting the lengths for unused bit length codes. - */ - -/* =========================================================================== - * Local data. These are initialized only once. - */ - -#define DIST_CODE_LEN 512 /* see definition of array dist_code below */ - -#if defined(GEN_TREES_H) || !defined(STDC) -/* non ANSI compilers may not accept trees.h */ - -local ct_data static_ltree[L_CODES + 2]; -/* The static literal tree. Since the bit lengths are imposed, there is no - * need for the L_CODES extra codes used during heap construction. However - * The codes 286 and 287 are needed to build a canonical tree (see _tr_init - * below). - */ - -local ct_data static_dtree[D_CODES]; -/* The static distance tree. (Actually a trivial tree since all codes use - * 5 bits.) - */ - -uch _dist_code[DIST_CODE_LEN]; -/* Distance codes. The first 256 values correspond to the distances - * 3 .. 258, the last 256 values correspond to the top 8 bits of - * the 15 bit distances. - */ - -uch _length_code[MAX_MATCH - MIN_MATCH + 1]; -/* length code for each normalized match length (0 == MIN_MATCH) */ - -local int base_length[LENGTH_CODES]; -/* First normalized length for each code (0 = MIN_MATCH) */ - -local int base_dist[D_CODES]; -/* First normalized distance for each code (0 = distance of 1) */ - -#else -# include "trees.h" -#endif /* GEN_TREES_H */ - -struct static_tree_desc_s { - const ct_data *static_tree; /* static tree or NULL */ - const intf *extra_bits; /* extra bits for each code or NULL */ - int extra_base; /* base index for extra_bits */ - int elems; /* max number of elements in the tree */ - int max_length; /* max bit length for the codes */ -}; - -local const static_tree_desc static_l_desc = -{static_ltree, extra_lbits, LITERALS + 1, L_CODES, MAX_BITS}; - -local const static_tree_desc static_d_desc = -{static_dtree, extra_dbits, 0, D_CODES, MAX_BITS}; - -local const static_tree_desc static_bl_desc = -{(const ct_data *)0, extra_blbits, 0, BL_CODES, MAX_BL_BITS}; - -/* =========================================================================== - * Local (static) routines in this file. - */ - -local void tr_static_init OF((void)); -local void init_block OF((deflate_state *s)); -local void pqdownheap OF((deflate_state *s, ct_data *tree, int k)); -local void gen_bitlen OF((deflate_state *s, tree_desc *desc)); -local void gen_codes OF((ct_data *tree, int max_code, ushf *bl_count)); -local void build_tree OF((deflate_state *s, tree_desc *desc)); -local void scan_tree OF((deflate_state *s, ct_data *tree, int max_code)); -local void send_tree OF((deflate_state *s, ct_data *tree, int max_code)); -local int build_bl_tree OF((deflate_state *s)); -local void send_all_trees OF((deflate_state *s, int lcodes, int dcodes, - int blcodes)); -local void compress_block OF((deflate_state *s, const ct_data *ltree, - const ct_data *dtree)); -local int detect_data_type OF((deflate_state *s)); -local unsigned bi_reverse OF((unsigned value, int length)); -local void bi_windup OF((deflate_state *s)); -local void bi_flush OF((deflate_state *s)); - -#ifdef GEN_TREES_H -local void gen_trees_header OF((void)); -#endif - -#ifndef ZLIB_DEBUG -# define send_code(s, c, tree) send_bits(s, tree[c].Code, tree[c].Len) -/* Send a code of the given tree. c and tree must not have side effects */ - -#else /* !ZLIB_DEBUG */ -# define send_code(s, c, tree) \ - { if (z_verbose>2) fprintf(stderr,"\ncd %3d ",(c)); \ - send_bits(s, tree[c].Code, tree[c].Len); } -#endif - -/* =========================================================================== - * Output a short LSB first on the stream. - * IN assertion: there is enough room in pendingBuf. - */ -#define put_short(s, w) { \ - put_byte(s, (uch)((w) & 0xff)); \ - put_byte(s, (uch)((ush)(w) >> 8)); \ -} - -/* =========================================================================== - * Send a value on a given number of bits. - * IN assertion: length <= 16 and value fits in length bits. - */ -#ifdef ZLIB_DEBUG -local void send_bits OF((deflate_state *s, int value, int length)); - -local void send_bits(s, value, length) -deflate_state *s; -int value; /* value to send */ -int length; /* number of bits */ -{ - Tracevv((stderr, " l %2d v %4x ", length, value)); - Assert(length > 0 && length <= 15, "invalid length"); - s->bits_sent += (ulg)length; - - /* If not enough room in bi_buf, use (valid) bits from bi_buf and - * (16 - bi_valid) bits from value, leaving (width - (16-bi_valid)) - * unused bits in value. - */ - if (s->bi_valid > (int)Buf_size - length) { - s->bi_buf |= (ush)value << s->bi_valid; - put_short(s, s->bi_buf); - s->bi_buf = (ush)value >> (Buf_size - s->bi_valid); - s->bi_valid += length - Buf_size; - } else { - s->bi_buf |= (ush)value << s->bi_valid; - s->bi_valid += length; - } -} -#else /* !ZLIB_DEBUG */ - -#define send_bits(s, value, length) \ -{ int len = length;\ - if (s->bi_valid > (int)Buf_size - len) {\ - int val = (int)value;\ - s->bi_buf |= (ush)val << s->bi_valid;\ - put_short(s, s->bi_buf);\ - s->bi_buf = (ush)val >> (Buf_size - s->bi_valid);\ - s->bi_valid += len - Buf_size;\ - } else {\ - s->bi_buf |= (ush)(value) << s->bi_valid;\ - s->bi_valid += len;\ - }\ -} -#endif /* ZLIB_DEBUG */ - - -/* the arguments must not have side effects */ - -/* =========================================================================== - * Initialize the various 'constant' tables. - */ -local void tr_static_init() { -#if defined(GEN_TREES_H) || !defined(STDC) - static int static_init_done = 0; - int n; /* iterates over tree elements */ - int bits; /* bit counter */ - int length; /* length value */ - int code; /* code value */ - int dist; /* distance index */ - ush bl_count[MAX_BITS + 1]; - /* number of codes at each bit length for an optimal tree */ - - if (static_init_done) return; - - /* For some embedded targets, global variables are not initialized: */ -#ifdef NO_INIT_GLOBAL_POINTERS - static_l_desc.static_tree = static_ltree; - static_l_desc.extra_bits = extra_lbits; - static_d_desc.static_tree = static_dtree; - static_d_desc.extra_bits = extra_dbits; - static_bl_desc.extra_bits = extra_blbits; -#endif - - /* Initialize the mapping length (0..255) -> length code (0..28) */ - length = 0; - for (code = 0; code < LENGTH_CODES - 1; code++) { - base_length[code] = length; - for (n = 0; n < (1 << extra_lbits[code]); n++) { - _length_code[length++] = (uch)code; - } - } - Assert(length == 256, "tr_static_init: length != 256"); - /* Note that the length 255 (match length 258) can be represented - * in two different ways: code 284 + 5 bits or code 285, so we - * overwrite length_code[255] to use the best encoding: - */ - _length_code[length - 1] = (uch)code; - - /* Initialize the mapping dist (0..32K) -> dist code (0..29) */ - dist = 0; - for (code = 0 ; code < 16; code++) { - base_dist[code] = dist; - for (n = 0; n < (1 << extra_dbits[code]); n++) { - _dist_code[dist++] = (uch)code; - } - } - Assert(dist == 256, "tr_static_init: dist != 256"); - dist >>= 7; /* from now on, all distances are divided by 128 */ - for (; code < D_CODES; code++) { - base_dist[code] = dist << 7; - for (n = 0; n < (1 << (extra_dbits[code] - 7)); n++) { - _dist_code[256 + dist++] = (uch)code; - } - } - Assert(dist == 256, "tr_static_init: 256+dist != 512"); - - /* Construct the codes of the static literal tree */ - for (bits = 0; bits <= MAX_BITS; bits++) bl_count[bits] = 0; - n = 0; - while (n <= 143) static_ltree[n++].Len = 8, bl_count[8]++; - while (n <= 255) static_ltree[n++].Len = 9, bl_count[9]++; - while (n <= 279) static_ltree[n++].Len = 7, bl_count[7]++; - while (n <= 287) static_ltree[n++].Len = 8, bl_count[8]++; - /* Codes 286 and 287 do not exist, but we must include them in the - * tree construction to get a canonical Huffman tree (longest code - * all ones) - */ - gen_codes((ct_data *)static_ltree, L_CODES + 1, bl_count); - - /* The static distance tree is trivial: */ - for (n = 0; n < D_CODES; n++) { - static_dtree[n].Len = 5; - static_dtree[n].Code = bi_reverse((unsigned)n, 5); - } - static_init_done = 1; - -# ifdef GEN_TREES_H - gen_trees_header(); -# endif -#endif /* defined(GEN_TREES_H) || !defined(STDC) */ -} - -/* =========================================================================== - * Genererate the file trees.h describing the static trees. - */ -#ifdef GEN_TREES_H -# ifndef ZLIB_DEBUG -# include <stdio.h> -# endif - -# define SEPARATOR(i, last, width) \ - ((i) == (last)? "\n};\n\n" : \ - ((i) % (width) == (width)-1 ? ",\n" : ", ")) - -void gen_trees_header() { - FILE *header = fopen("trees.h", "w"); - int i; - - Assert(header != NULL, "Can't open trees.h"); - fprintf(header, - "/* header created automatically with -DGEN_TREES_H */\n\n"); - - fprintf(header, "local const ct_data static_ltree[L_CODES+2] = {\n"); - for (i = 0; i < L_CODES + 2; i++) { - fprintf(header, "{{%3u},{%3u}}%s", static_ltree[i].Code, - static_ltree[i].Len, SEPARATOR(i, L_CODES + 1, 5)); - } - - fprintf(header, "local const ct_data static_dtree[D_CODES] = {\n"); - for (i = 0; i < D_CODES; i++) { - fprintf(header, "{{%2u},{%2u}}%s", static_dtree[i].Code, - static_dtree[i].Len, SEPARATOR(i, D_CODES - 1, 5)); - } - - fprintf(header, "const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = {\n"); - for (i = 0; i < DIST_CODE_LEN; i++) { - fprintf(header, "%2u%s", _dist_code[i], - SEPARATOR(i, DIST_CODE_LEN - 1, 20)); - } - - fprintf(header, - "const uch ZLIB_INTERNAL _length_code[MAX_MATCH-MIN_MATCH+1]= {\n"); - for (i = 0; i < MAX_MATCH - MIN_MATCH + 1; i++) { - fprintf(header, "%2u%s", _length_code[i], - SEPARATOR(i, MAX_MATCH - MIN_MATCH, 20)); - } - - fprintf(header, "local const int base_length[LENGTH_CODES] = {\n"); - for (i = 0; i < LENGTH_CODES; i++) { - fprintf(header, "%1u%s", base_length[i], - SEPARATOR(i, LENGTH_CODES - 1, 20)); - } - - fprintf(header, "local const int base_dist[D_CODES] = {\n"); - for (i = 0; i < D_CODES; i++) { - fprintf(header, "%5u%s", base_dist[i], - SEPARATOR(i, D_CODES - 1, 10)); - } - - fclose(header); -} -#endif /* GEN_TREES_H */ - -/* =========================================================================== - * Initialize the tree data structures for a new zlib stream. - */ -void ZLIB_INTERNAL _tr_init(s) -deflate_state *s; -{ - tr_static_init(); - - s->l_desc.dyn_tree = s->dyn_ltree; - s->l_desc.stat_desc = &static_l_desc; - - s->d_desc.dyn_tree = s->dyn_dtree; - s->d_desc.stat_desc = &static_d_desc; - - s->bl_desc.dyn_tree = s->bl_tree; - s->bl_desc.stat_desc = &static_bl_desc; - - s->bi_buf = 0; - s->bi_valid = 0; -#ifdef ZLIB_DEBUG - s->compressed_len = 0L; - s->bits_sent = 0L; -#endif - - /* Initialize the first block of the first file: */ - init_block(s); -} - -/* =========================================================================== - * Initialize a new block. - */ -local void init_block(s) -deflate_state *s; -{ - int n; /* iterates over tree elements */ - - /* Initialize the trees. */ - for (n = 0; n < L_CODES; n++) s->dyn_ltree[n].Freq = 0; - for (n = 0; n < D_CODES; n++) s->dyn_dtree[n].Freq = 0; - for (n = 0; n < BL_CODES; n++) s->bl_tree[n].Freq = 0; - - s->dyn_ltree[END_BLOCK].Freq = 1; - s->opt_len = s->static_len = 0L; - s->last_lit = s->matches = 0; -} - -#define SMALLEST 1 -/* Index within the heap array of least frequent node in the Huffman tree */ - - -/* =========================================================================== - * Remove the smallest element from the heap and recreate the heap with - * one less element. Updates heap and heap_len. - */ -#define pqremove(s, tree, top) \ -{\ - top = s->heap[SMALLEST]; \ - s->heap[SMALLEST] = s->heap[s->heap_len--]; \ - pqdownheap(s, tree, SMALLEST); \ -} - -/* =========================================================================== - * Compares to subtrees, using the tree depth as tie breaker when - * the subtrees have equal frequency. This minimizes the worst case length. - */ -#define smaller(tree, n, m, depth) \ - (tree[n].Freq < tree[m].Freq || \ - (tree[n].Freq == tree[m].Freq && depth[n] <= depth[m])) - -/* =========================================================================== - * Restore the heap property by moving down the tree starting at node k, - * exchanging a node with the smallest of its two sons if necessary, stopping - * when the heap property is re-established (each father smaller than its - * two sons). - */ -local void pqdownheap(s, tree, k) -deflate_state *s; -ct_data *tree; /* the tree to restore */ -int k; /* node to move down */ -{ - int v = s->heap[k]; - int j = k << 1; /* left son of k */ - while (j <= s->heap_len) { - /* Set j to the smallest of the two sons: */ - if (j < s->heap_len && - smaller(tree, s->heap[j + 1], s->heap[j], s->depth)) { - j++; - } - /* Exit if v is smaller than both sons */ - if (smaller(tree, v, s->heap[j], s->depth)) break; - - /* Exchange v with the smallest son */ - s->heap[k] = s->heap[j]; - k = j; - - /* And continue down the tree, setting j to the left son of k */ - j <<= 1; - } - s->heap[k] = v; -} - -/* =========================================================================== - * Compute the optimal bit lengths for a tree and update the total bit length - * for the current block. - * IN assertion: the fields freq and dad are set, heap[heap_max] and - * above are the tree nodes sorted by increasing frequency. - * OUT assertions: the field len is set to the optimal bit length, the - * array bl_count contains the frequencies for each bit length. - * The length opt_len is updated; static_len is also updated if stree is - * not null. - */ -local void gen_bitlen(s, desc) -deflate_state *s; -tree_desc *desc; /* the tree descriptor */ -{ - ct_data *tree = desc->dyn_tree; - int max_code = desc->max_code; - const ct_data *stree = desc->stat_desc->static_tree; - const intf *extra = desc->stat_desc->extra_bits; - int base = desc->stat_desc->extra_base; - int max_length = desc->stat_desc->max_length; - int h; /* heap index */ - int n, m; /* iterate over the tree elements */ - int bits; /* bit length */ - int xbits; /* extra bits */ - ush f; /* frequency */ - int overflow = 0; /* number of elements with bit length too large */ - - for (bits = 0; bits <= MAX_BITS; bits++) s->bl_count[bits] = 0; - - /* In a first pass, compute the optimal bit lengths (which may - * overflow in the case of the bit length tree). - */ - tree[s->heap[s->heap_max]].Len = 0; /* root of the heap */ - - for (h = s->heap_max + 1; h < HEAP_SIZE; h++) { - n = s->heap[h]; - bits = tree[tree[n].Dad].Len + 1; - if (bits > max_length) bits = max_length, overflow++; - tree[n].Len = (ush)bits; - /* We overwrite tree[n].Dad which is no longer needed */ - - if (n > max_code) continue; /* not a leaf node */ - - s->bl_count[bits]++; - xbits = 0; - if (n >= base) xbits = extra[n - base]; - f = tree[n].Freq; - s->opt_len += (ulg)f * (unsigned)(bits + xbits); - if (stree) s->static_len += (ulg)f * (unsigned)(stree[n].Len + xbits); - } - if (overflow == 0) return; - - Tracev((stderr, "\nbit length overflow\n")); - /* This happens for example on obj2 and pic of the Calgary corpus */ - - /* Find the first bit length which could increase: */ - do { - bits = max_length - 1; - while (s->bl_count[bits] == 0) bits--; - s->bl_count[bits]--; /* move one leaf down the tree */ - s->bl_count[bits + 1] += 2; /* move one overflow item as its brother */ - s->bl_count[max_length]--; - /* The brother of the overflow item also moves one step up, - * but this does not affect bl_count[max_length] - */ - overflow -= 2; - } while (overflow > 0); - - /* Now recompute all bit lengths, scanning in increasing frequency. - * h is still equal to HEAP_SIZE. (It is simpler to reconstruct all - * lengths instead of fixing only the wrong ones. This idea is taken - * from 'ar' written by Haruhiko Okumura.) - */ - for (bits = max_length; bits != 0; bits--) { - n = s->bl_count[bits]; - while (n != 0) { - m = s->heap[--h]; - if (m > max_code) continue; - if ((unsigned) tree[m].Len != (unsigned) bits) { - Tracev((stderr, "code %d bits %d->%d\n", m, tree[m].Len, bits)); - s->opt_len += ((ulg)bits - tree[m].Len) * tree[m].Freq; - tree[m].Len = (ush)bits; - } - n--; - } - } -} - -/* =========================================================================== - * Generate the codes for a given tree and bit counts (which need not be - * optimal). - * IN assertion: the array bl_count contains the bit length statistics for - * the given tree and the field len is set for all tree elements. - * OUT assertion: the field code is set for all tree elements of non - * zero code length. - */ -local void gen_codes(tree, max_code, bl_count) -ct_data *tree; /* the tree to decorate */ -int max_code; /* largest code with non zero frequency */ -ushf *bl_count; /* number of codes at each bit length */ -{ - ush next_code[MAX_BITS + 1]; /* next code value for each bit length */ - unsigned code = 0; /* running code value */ - int bits; /* bit index */ - int n; /* code index */ - - /* The distribution counts are first used to generate the code values - * without bit reversal. - */ - for (bits = 1; bits <= MAX_BITS; bits++) { - code = (code + bl_count[bits - 1]) << 1; - next_code[bits] = (ush)code; - } - /* Check that the bit counts in bl_count are consistent. The last code - * must be all ones. - */ - Assert(code + bl_count[MAX_BITS] - 1 == (1 << MAX_BITS) - 1, - "inconsistent bit counts"); - Tracev((stderr, "\ngen_codes: max_code %d ", max_code)); - - for (n = 0; n <= max_code; n++) { - int len = tree[n].Len; - if (len == 0) continue; - /* Now reverse the bits */ - tree[n].Code = (ush)bi_reverse(next_code[len]++, len); - - Tracecv(tree != static_ltree, (stderr, "\nn %3d %c l %2d c %4x (%x) ", - n, (isgraph(n) ? n : ' '), len, tree[n].Code, next_code[len] - 1)); - } -} - -/* =========================================================================== - * Construct one Huffman tree and assigns the code bit strings and lengths. - * Update the total bit length for the current block. - * IN assertion: the field freq is set for all tree elements. - * OUT assertions: the fields len and code are set to the optimal bit length - * and corresponding code. The length opt_len is updated; static_len is - * also updated if stree is not null. The field max_code is set. - */ -local void build_tree(s, desc) -deflate_state *s; -tree_desc *desc; /* the tree descriptor */ -{ - ct_data *tree = desc->dyn_tree; - const ct_data *stree = desc->stat_desc->static_tree; - int elems = desc->stat_desc->elems; - int n, m; /* iterate over heap elements */ - int max_code = -1; /* largest code with non zero frequency */ - int node; /* new node being created */ - - /* Construct the initial heap, with least frequent element in - * heap[SMALLEST]. The sons of heap[n] are heap[2*n] and heap[2*n+1]. - * heap[0] is not used. - */ - s->heap_len = 0, s->heap_max = HEAP_SIZE; - - for (n = 0; n < elems; n++) { - if (tree[n].Freq != 0) { - s->heap[++(s->heap_len)] = max_code = n; - s->depth[n] = 0; - } else { - tree[n].Len = 0; - } - } - - /* The pkzip format requires that at least one distance code exists, - * and that at least one bit should be sent even if there is only one - * possible code. So to avoid special checks later on we force at least - * two codes of non zero frequency. - */ - while (s->heap_len < 2) { - node = s->heap[++(s->heap_len)] = (max_code < 2 ? ++max_code : 0); - tree[node].Freq = 1; - s->depth[node] = 0; - s->opt_len--; - if (stree) s->static_len -= stree[node].Len; - /* node is 0 or 1 so it does not have extra bits */ - } - desc->max_code = max_code; - - /* The elements heap[heap_len/2+1 .. heap_len] are leaves of the tree, - * establish sub-heaps of increasing lengths: - */ - for (n = s->heap_len / 2; n >= 1; n--) pqdownheap(s, tree, n); - - /* Construct the Huffman tree by repeatedly combining the least two - * frequent nodes. - */ - node = elems; /* next internal node of the tree */ - do { - pqremove(s, tree, n); /* n = node of least frequency */ - m = s->heap[SMALLEST]; /* m = node of next least frequency */ - - s->heap[--(s->heap_max)] = n; /* keep the nodes sorted by frequency */ - s->heap[--(s->heap_max)] = m; - - /* Create a new node father of n and m */ - tree[node].Freq = tree[n].Freq + tree[m].Freq; - s->depth[node] = (uch)((s->depth[n] >= s->depth[m] ? - s->depth[n] : s->depth[m]) + 1); - tree[n].Dad = tree[m].Dad = (ush)node; -#ifdef DUMP_BL_TREE - if (tree == s->bl_tree) { - fprintf(stderr, "\nnode %d(%d), sons %d(%d) %d(%d)", - node, tree[node].Freq, n, tree[n].Freq, m, tree[m].Freq); - } -#endif - /* and insert the new node in the heap */ - s->heap[SMALLEST] = node++; - pqdownheap(s, tree, SMALLEST); - - } while (s->heap_len >= 2); - - s->heap[--(s->heap_max)] = s->heap[SMALLEST]; - - /* At this point, the fields freq and dad are set. We can now - * generate the bit lengths. - */ - gen_bitlen(s, (tree_desc *)desc); - - /* The field len is now set, we can generate the bit codes */ - gen_codes((ct_data *)tree, max_code, s->bl_count); -} - -/* =========================================================================== - * Scan a literal or distance tree to determine the frequencies of the codes - * in the bit length tree. - */ -local void scan_tree(s, tree, max_code) -deflate_state *s; -ct_data *tree; /* the tree to be scanned */ -int max_code; /* and its largest code of non zero frequency */ -{ - int n; /* iterates over all tree elements */ - int prevlen = -1; /* last emitted length */ - int curlen; /* length of current code */ - int nextlen = tree[0].Len; /* length of next code */ - int count = 0; /* repeat count of the current code */ - int max_count = 7; /* max repeat count */ - int min_count = 4; /* min repeat count */ - - if (nextlen == 0) max_count = 138, min_count = 3; - tree[max_code + 1].Len = (ush)0xffff; /* guard */ - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[n + 1].Len; - if (++count < max_count && curlen == nextlen) { - continue; - } else if (count < min_count) { - s->bl_tree[curlen].Freq += count; - } else if (curlen != 0) { - if (curlen != prevlen) s->bl_tree[curlen].Freq++; - s->bl_tree[REP_3_6].Freq++; - } else if (count <= 10) { - s->bl_tree[REPZ_3_10].Freq++; - } else { - s->bl_tree[REPZ_11_138].Freq++; - } - count = 0; - prevlen = curlen; - if (nextlen == 0) { - max_count = 138, min_count = 3; - } else if (curlen == nextlen) { - max_count = 6, min_count = 3; - } else { - max_count = 7, min_count = 4; - } - } -} - -/* =========================================================================== - * Send a literal or distance tree in compressed form, using the codes in - * bl_tree. - */ -local void send_tree(s, tree, max_code) -deflate_state *s; -ct_data *tree; /* the tree to be scanned */ -int max_code; /* and its largest code of non zero frequency */ -{ - int n; /* iterates over all tree elements */ - int prevlen = -1; /* last emitted length */ - int curlen; /* length of current code */ - int nextlen = tree[0].Len; /* length of next code */ - int count = 0; /* repeat count of the current code */ - int max_count = 7; /* max repeat count */ - int min_count = 4; /* min repeat count */ - - /* tree[max_code+1].Len = -1; */ /* guard already set */ - if (nextlen == 0) max_count = 138, min_count = 3; - - for (n = 0; n <= max_code; n++) { - curlen = nextlen; - nextlen = tree[n + 1].Len; - if (++count < max_count && curlen == nextlen) { - continue; - } else if (count < min_count) { - do { send_code(s, curlen, s->bl_tree); } - while (--count != 0); - - } else if (curlen != 0) { - if (curlen != prevlen) { - send_code(s, curlen, s->bl_tree); - count--; - } - Assert(count >= 3 && count <= 6, " 3_6?"); - send_code(s, REP_3_6, s->bl_tree); - send_bits(s, count - 3, 2); - - } else if (count <= 10) { - send_code(s, REPZ_3_10, s->bl_tree); - send_bits(s, count - 3, 3); - - } else { - send_code(s, REPZ_11_138, s->bl_tree); - send_bits(s, count - 11, 7); - } - count = 0; - prevlen = curlen; - if (nextlen == 0) { - max_count = 138, min_count = 3; - } else if (curlen == nextlen) { - max_count = 6, min_count = 3; - } else { - max_count = 7, min_count = 4; - } - } -} - -/* =========================================================================== - * Construct the Huffman tree for the bit lengths and return the index in - * bl_order of the last bit length code to send. - */ -local int build_bl_tree(s) -deflate_state *s; -{ - int max_blindex; /* index of last bit length code of non zero freq */ - - /* Determine the bit length frequencies for literal and distance trees */ - scan_tree(s, (ct_data *)s->dyn_ltree, s->l_desc.max_code); - scan_tree(s, (ct_data *)s->dyn_dtree, s->d_desc.max_code); - - /* Build the bit length tree: */ - build_tree(s, (tree_desc *)(&(s->bl_desc))); - /* opt_len now includes the length of the tree representations, except - * the lengths of the bit lengths codes and the 5+5+4 bits for the counts. - */ - - /* Determine the number of bit length codes to send. The pkzip format - * requires that at least 4 bit length codes be sent. (appnote.txt says - * 3 but the actual value used is 4.) - */ - for (max_blindex = BL_CODES - 1; max_blindex >= 3; max_blindex--) { - if (s->bl_tree[bl_order[max_blindex]].Len != 0) break; - } - /* Update opt_len to include the bit length tree and counts */ - s->opt_len += 3 * ((ulg)max_blindex + 1) + 5 + 5 + 4; - Tracev((stderr, "\ndyn trees: dyn %ld, stat %ld", - s->opt_len, s->static_len)); - - return max_blindex; -} - -/* =========================================================================== - * Send the header for a block using dynamic Huffman trees: the counts, the - * lengths of the bit length codes, the literal tree and the distance tree. - * IN assertion: lcodes >= 257, dcodes >= 1, blcodes >= 4. - */ -local void send_all_trees(s, lcodes, dcodes, blcodes) -deflate_state *s; -int lcodes, dcodes, blcodes; /* number of codes for each tree */ -{ - int rank; /* index in bl_order */ - - Assert(lcodes >= 257 && dcodes >= 1 && blcodes >= 4, "not enough codes"); - Assert(lcodes <= L_CODES && dcodes <= D_CODES && blcodes <= BL_CODES, - "too many codes"); - Tracev((stderr, "\nbl counts: ")); - send_bits(s, lcodes - 257, 5); /* not +255 as stated in appnote.txt */ - send_bits(s, dcodes - 1, 5); - send_bits(s, blcodes - 4, 4); /* not -3 as stated in appnote.txt */ - for (rank = 0; rank < blcodes; rank++) { - Tracev((stderr, "\nbl code %2d ", bl_order[rank])); - send_bits(s, s->bl_tree[bl_order[rank]].Len, 3); - } - Tracev((stderr, "\nbl tree: sent %ld", s->bits_sent)); - - send_tree(s, (ct_data *)s->dyn_ltree, lcodes - 1); /* literal tree */ - Tracev((stderr, "\nlit tree: sent %ld", s->bits_sent)); - - send_tree(s, (ct_data *)s->dyn_dtree, dcodes - 1); /* distance tree */ - Tracev((stderr, "\ndist tree: sent %ld", s->bits_sent)); -} - -/* =========================================================================== - * Send a stored block - */ -void ZLIB_INTERNAL _tr_stored_block(s, buf, stored_len, last) -deflate_state *s; -charf *buf; /* input block */ -ulg stored_len; /* length of input block */ -int last; /* one if this is the last block for a file */ -{ - send_bits(s, (STORED_BLOCK << 1) + last, 3); /* send block type */ - bi_windup(s); /* align on byte boundary */ - put_short(s, (ush)stored_len); - put_short(s, (ush)~stored_len); - zmemcpy(s->pending_buf + s->pending, (Bytef *)buf, stored_len); - s->pending += stored_len; -#ifdef ZLIB_DEBUG - s->compressed_len = (s->compressed_len + 3 + 7) & (ulg)~7L; - s->compressed_len += (stored_len + 4) << 3; - s->bits_sent += 2 * 16; - s->bits_sent += stored_len << 3; -#endif -} - -/* =========================================================================== - * Flush the bits in the bit buffer to pending output (leaves at most 7 bits) - */ -void ZLIB_INTERNAL _tr_flush_bits(s) -deflate_state *s; -{ - bi_flush(s); -} - -/* =========================================================================== - * Send one empty static block to give enough lookahead for inflate. - * This takes 10 bits, of which 7 may remain in the bit buffer. - */ -void ZLIB_INTERNAL _tr_align(s) -deflate_state *s; -{ - send_bits(s, STATIC_TREES << 1, 3); - send_code(s, END_BLOCK, static_ltree); -#ifdef ZLIB_DEBUG - s->compressed_len += 10L; /* 3 for block type, 7 for EOB */ -#endif - bi_flush(s); -} - -/* =========================================================================== - * Determine the best encoding for the current block: dynamic trees, static - * trees or store, and write out the encoded block. - */ -void ZLIB_INTERNAL _tr_flush_block(s, buf, stored_len, last) -deflate_state *s; -charf *buf; /* input block, or NULL if too old */ -ulg stored_len; /* length of input block */ -int last; /* one if this is the last block for a file */ -{ -#ifdef ZLIB_PM3_TUNED - (void) buf; - (void) stored_len; -#endif - int max_blindex = 0; /* index of last bit length code of non zero freq */ -#ifndef ZLIB_PM3_TUNED - ulg opt_lenb, static_lenb; /* opt_len and static_len in bytes */ - - /* Build the Huffman trees unless a stored block is forced */ - if (s->level > 0) { -#endif - /* Check if the file is binary or text */ - if (s->strm->data_type == Z_UNKNOWN) - s->strm->data_type = detect_data_type(s); - - /* Construct the literal and distance trees */ - build_tree(s, (tree_desc *)(&(s->l_desc))); - Tracev((stderr, "\nlit data: dyn %ld, stat %ld", s->opt_len, - s->static_len)); - - build_tree(s, (tree_desc *)(&(s->d_desc))); - Tracev((stderr, "\ndist data: dyn %ld, stat %ld", s->opt_len, - s->static_len)); - /* At this point, opt_len and static_len are the total bit lengths of - * the compressed block data, excluding the tree representations. - */ - - /* Build the bit length tree for the above two trees, and get the index - * in bl_order of the last bit length code to send. - */ - max_blindex = build_bl_tree(s); - -#ifndef ZLIB_PM3_TUNED - /* Determine the best encoding. Compute the block lengths in bytes. */ - opt_lenb = (s->opt_len + 3 + 7) >> 3; - static_lenb = (s->static_len + 3 + 7) >> 3; - - Tracev((stderr, "\nopt %" PRIu32 "(%" PRIu32 ") stat %" PRIu32 "(%" PRIu32 ") stored %" PRIu32 " lit %u ", - opt_lenb, s->opt_len, static_lenb, s->static_len, stored_len, - s->last_lit)); - - if (static_lenb <= opt_lenb) opt_lenb = static_lenb; - - } else { - Assert(buf != (char *)0, "lost buf"); - opt_lenb = static_lenb = stored_len + 5; /* force a stored block */ - } - -#ifdef FORCE_STORED - if (buf != (char *)0) { /* force stored block */ -#else - if (stored_len + 4 <= opt_lenb && buf != (char *)0) { - /* 4: two words for the lengths */ -#endif - /* The test buf != NULL is only necessary if LIT_BUFSIZE > WSIZE. - * Otherwise we can't have processed more than WSIZE input bytes since - * the last block flush, because compression would have been - * successful. If LIT_BUFSIZE <= WSIZE, it is never too late to - * transform a block into a stored block. - */ - _tr_stored_block(s, buf, stored_len, last); - -#ifdef FORCE_STATIC - } else if (static_lenb >= 0) { /* force static trees */ -#else - } else if (s->strategy == Z_FIXED || static_lenb == opt_lenb) { -#endif - send_bits(s, (STATIC_TREES << 1) + last, 3); - compress_block(s, (const ct_data *)static_ltree, - (const ct_data *)static_dtree); -#ifdef ZLIB_DEBUG - s->compressed_len += 3 + s->static_len; -#endif - } else { -#endif /* !ZLIB_PM3_TUNED */ - send_bits(s, (DYN_TREES << 1) + last, 3); - send_all_trees(s, s->l_desc.max_code + 1, s->d_desc.max_code + 1, - max_blindex + 1); - compress_block(s, (const ct_data *)s->dyn_ltree, - (const ct_data *)s->dyn_dtree); -#ifdef ZLIB_DEBUG - s->compressed_len += 3 + s->opt_len; -#endif -#ifndef ZLIB_PM3_TUNED - } -#endif - Assert(s->compressed_len == s->bits_sent, "bad compressed size"); - /* The above check is made mod 2^32, for files larger than 512 MB - * and uLong implemented on 32 bits. - */ - init_block(s); - - if (last) { - bi_windup(s); -#ifdef ZLIB_DEBUG - s->compressed_len += 7; /* align on byte boundary */ -#endif - } - Tracev((stderr, "\ncomprlen %lu(%lu) ", s->compressed_len >> 3, - s->compressed_len - 7 * last)); -} - -/* =========================================================================== - * Save the match info and tally the frequency counts. Return true if - * the current block must be flushed. - */ -int ZLIB_INTERNAL _tr_tally(s, dist, lc) -deflate_state *s; -unsigned dist; /* distance of matched string */ -unsigned lc; /* match length-MIN_MATCH or unmatched char (if dist==0) */ -{ - s->d_buf[s->last_lit] = (ush)dist; - s->l_buf[s->last_lit++] = (uch)lc; - if (dist == 0) { - /* lc is the unmatched char */ - s->dyn_ltree[lc].Freq++; - } else { - s->matches++; - /* Here, lc is the match length - MIN_MATCH */ - dist--; /* dist = match distance - 1 */ - Assert((ush)dist < (ush)MAX_DIST(s) && - (ush)lc <= (ush)(MAX_MATCH - MIN_MATCH) && - (ush)d_code(dist) < (ush)D_CODES, "_tr_tally: bad match"); - - s->dyn_ltree[_length_code[lc] + LITERALS + 1].Freq++; - s->dyn_dtree[d_code(dist)].Freq++; - } - -#ifdef TRUNCATE_BLOCK - /* Try to guess if it is profitable to stop the current block here */ - if ((s->last_lit & 0x1fff) == 0 && s->level > 2) { - /* Compute an upper bound for the compressed length */ - ulg out_length = (ulg)s->last_lit * 8L; - ulg in_length = (ulg)((long)s->strstart - s->block_start); - int dcode; - for (dcode = 0; dcode < D_CODES; dcode++) { - out_length += (ulg)s->dyn_dtree[dcode].Freq * - (5L + extra_dbits[dcode]); - } - out_length >>= 3; - Tracev((stderr, "\nlast_lit %u, in %ld, out ~%ld(%ld%%) ", - s->last_lit, in_length, out_length, - 100L - out_length * 100L / in_length)); - if (s->matches < s->last_lit / 2 && out_length < in_length / 2) return 1; - } -#endif - return (s->last_lit == s->lit_bufsize - 1); - /* We avoid equality with lit_bufsize because of wraparound at 64K - * on 16 bit machines and because stored blocks are restricted to - * 64K-1 bytes. - */ -} - -/* =========================================================================== - * Send the block data compressed using the given Huffman trees - */ -local void compress_block(s, ltree, dtree) -deflate_state *s; -const ct_data *ltree; /* literal tree */ -const ct_data *dtree; /* distance tree */ -{ - unsigned dist; /* distance of matched string */ - int lc; /* match length or unmatched char (if dist == 0) */ - unsigned lx = 0; /* running index in l_buf */ - unsigned code; /* the code to send */ - int extra; /* number of extra bits to send */ - - if (s->last_lit != 0) do { - dist = s->d_buf[lx]; - lc = s->l_buf[lx++]; - if (dist == 0) { - send_code(s, lc, ltree); /* send a literal byte */ - Tracecv(isgraph(lc), (stderr, " '%c' ", lc)); - } else { - /* Here, lc is the match length - MIN_MATCH */ - code = _length_code[lc]; - send_code(s, code + LITERALS + 1, ltree); /* send the length code */ - extra = extra_lbits[code]; - if (extra != 0) { - lc -= base_length[code]; - send_bits(s, lc, extra); /* send the extra length bits */ - } - dist--; /* dist is now the match distance - 1 */ - code = d_code(dist); - Assert(code < D_CODES, "bad d_code"); - - send_code(s, code, dtree); /* send the distance code */ - extra = extra_dbits[code]; - if (extra != 0) { - dist -= (unsigned)base_dist[code]; - send_bits(s, dist, extra); /* send the extra distance bits */ - } - } /* literal or match pair ? */ - - /* Check that the overlay between pending_buf and d_buf+l_buf is ok: */ - Assert((uInt)(s->pending) < s->lit_bufsize + 2 * lx, - "pendingBuf overflow"); - - } while (lx < s->last_lit); - - send_code(s, END_BLOCK, ltree); -} - -/* =========================================================================== - * Check if the data type is TEXT or BINARY, using the following algorithm: - * - TEXT if the two conditions below are satisfied: - * a) There are no non-portable control characters belonging to the - * "black list" (0..6, 14..25, 28..31). - * b) There is at least one printable character belonging to the - * "white list" (9 {TAB}, 10 {LF}, 13 {CR}, 32..255). - * - BINARY otherwise. - * - The following partially-portable control characters form a - * "gray list" that is ignored in this detection algorithm: - * (7 {BEL}, 8 {BS}, 11 {VT}, 12 {FF}, 26 {SUB}, 27 {ESC}). - * IN assertion: the fields Freq of dyn_ltree are set. - */ -local int detect_data_type(s) -deflate_state *s; -{ - /* black_mask is the bit mask of black-listed bytes - * set bits 0..6, 14..25, and 28..31 - * 0xf3ffc07f = binary 11110011111111111100000001111111 - */ - unsigned long black_mask = 0xf3ffc07fUL; - int n; - - /* Check for non-textual ("black-listed") bytes. */ - for (n = 0; n <= 31; n++, black_mask >>= 1) - if ((black_mask & 1) && (s->dyn_ltree[n].Freq != 0)) - return Z_BINARY; - - /* Check for textual ("white-listed") bytes. */ - if (s->dyn_ltree[9].Freq != 0 || s->dyn_ltree[10].Freq != 0 - || s->dyn_ltree[13].Freq != 0) - return Z_TEXT; - for (n = 32; n < LITERALS; n++) - if (s->dyn_ltree[n].Freq != 0) - return Z_TEXT; - - /* There are no "black-listed" or "white-listed" bytes: - * this stream either is empty or has tolerated ("gray-listed") bytes only. - */ - return Z_BINARY; -} - -/* =========================================================================== - * Reverse the first len bits of a code, using straightforward code (a faster - * method would use a table) - * IN assertion: 1 <= len <= 15 - */ -local unsigned bi_reverse(code, len) -unsigned code; /* the value to invert */ -int len; /* its bit length */ -{ - register unsigned res = 0; - do { - res |= code & 1; - code >>= 1, res <<= 1; - } while (--len > 0); - return res >> 1; -} - -/* =========================================================================== - * Flush the bit buffer, keeping at most 7 bits in it. - */ -local void bi_flush(s) -deflate_state *s; -{ - if (s->bi_valid == 16) { - put_short(s, s->bi_buf); - s->bi_buf = 0; - s->bi_valid = 0; - } else if (s->bi_valid >= 8) { - put_byte(s, (Byte)s->bi_buf); - s->bi_buf >>= 8; - s->bi_valid -= 8; - } -} - -/* =========================================================================== - * Flush the bit buffer and align the output on a byte boundary - */ -local void bi_windup(s) -deflate_state *s; -{ - if (s->bi_valid > 8) { - put_short(s, s->bi_buf); - } else if (s->bi_valid > 0) { - put_byte(s, (Byte)s->bi_buf); - } - s->bi_buf = 0; - s->bi_valid = 0; -#ifdef ZLIB_DEBUG - s->bits_sent = (s->bits_sent + 7) & ~7; -#endif -} - diff --git a/common/zlib/trees.h b/common/zlib/trees.h deleted file mode 100644 index 74383d7c2..000000000 --- a/common/zlib/trees.h +++ /dev/null @@ -1,129 +0,0 @@ -/* header created automatically with -DGEN_TREES_H */ - -local const ct_data static_ltree[L_CODES + 2] = { - {{ 12}, { 8}}, {{140}, { 8}}, {{ 76}, { 8}}, {{204}, { 8}}, {{ 44}, { 8}}, - {{172}, { 8}}, {{108}, { 8}}, {{236}, { 8}}, {{ 28}, { 8}}, {{156}, { 8}}, - {{ 92}, { 8}}, {{220}, { 8}}, {{ 60}, { 8}}, {{188}, { 8}}, {{124}, { 8}}, - {{252}, { 8}}, {{ 2}, { 8}}, {{130}, { 8}}, {{ 66}, { 8}}, {{194}, { 8}}, - {{ 34}, { 8}}, {{162}, { 8}}, {{ 98}, { 8}}, {{226}, { 8}}, {{ 18}, { 8}}, - {{146}, { 8}}, {{ 82}, { 8}}, {{210}, { 8}}, {{ 50}, { 8}}, {{178}, { 8}}, - {{114}, { 8}}, {{242}, { 8}}, {{ 10}, { 8}}, {{138}, { 8}}, {{ 74}, { 8}}, - {{202}, { 8}}, {{ 42}, { 8}}, {{170}, { 8}}, {{106}, { 8}}, {{234}, { 8}}, - {{ 26}, { 8}}, {{154}, { 8}}, {{ 90}, { 8}}, {{218}, { 8}}, {{ 58}, { 8}}, - {{186}, { 8}}, {{122}, { 8}}, {{250}, { 8}}, {{ 6}, { 8}}, {{134}, { 8}}, - {{ 70}, { 8}}, {{198}, { 8}}, {{ 38}, { 8}}, {{166}, { 8}}, {{102}, { 8}}, - {{230}, { 8}}, {{ 22}, { 8}}, {{150}, { 8}}, {{ 86}, { 8}}, {{214}, { 8}}, - {{ 54}, { 8}}, {{182}, { 8}}, {{118}, { 8}}, {{246}, { 8}}, {{ 14}, { 8}}, - {{142}, { 8}}, {{ 78}, { 8}}, {{206}, { 8}}, {{ 46}, { 8}}, {{174}, { 8}}, - {{110}, { 8}}, {{238}, { 8}}, {{ 30}, { 8}}, {{158}, { 8}}, {{ 94}, { 8}}, - {{222}, { 8}}, {{ 62}, { 8}}, {{190}, { 8}}, {{126}, { 8}}, {{254}, { 8}}, - {{ 1}, { 8}}, {{129}, { 8}}, {{ 65}, { 8}}, {{193}, { 8}}, {{ 33}, { 8}}, - {{161}, { 8}}, {{ 97}, { 8}}, {{225}, { 8}}, {{ 17}, { 8}}, {{145}, { 8}}, - {{ 81}, { 8}}, {{209}, { 8}}, {{ 49}, { 8}}, {{177}, { 8}}, {{113}, { 8}}, - {{241}, { 8}}, {{ 9}, { 8}}, {{137}, { 8}}, {{ 73}, { 8}}, {{201}, { 8}}, - {{ 41}, { 8}}, {{169}, { 8}}, {{105}, { 8}}, {{233}, { 8}}, {{ 25}, { 8}}, - {{153}, { 8}}, {{ 89}, { 8}}, {{217}, { 8}}, {{ 57}, { 8}}, {{185}, { 8}}, - {{121}, { 8}}, {{249}, { 8}}, {{ 5}, { 8}}, {{133}, { 8}}, {{ 69}, { 8}}, - {{197}, { 8}}, {{ 37}, { 8}}, {{165}, { 8}}, {{101}, { 8}}, {{229}, { 8}}, - {{ 21}, { 8}}, {{149}, { 8}}, {{ 85}, { 8}}, {{213}, { 8}}, {{ 53}, { 8}}, - {{181}, { 8}}, {{117}, { 8}}, {{245}, { 8}}, {{ 13}, { 8}}, {{141}, { 8}}, - {{ 77}, { 8}}, {{205}, { 8}}, {{ 45}, { 8}}, {{173}, { 8}}, {{109}, { 8}}, - {{237}, { 8}}, {{ 29}, { 8}}, {{157}, { 8}}, {{ 93}, { 8}}, {{221}, { 8}}, - {{ 61}, { 8}}, {{189}, { 8}}, {{125}, { 8}}, {{253}, { 8}}, {{ 19}, { 9}}, - {{275}, { 9}}, {{147}, { 9}}, {{403}, { 9}}, {{ 83}, { 9}}, {{339}, { 9}}, - {{211}, { 9}}, {{467}, { 9}}, {{ 51}, { 9}}, {{307}, { 9}}, {{179}, { 9}}, - {{435}, { 9}}, {{115}, { 9}}, {{371}, { 9}}, {{243}, { 9}}, {{499}, { 9}}, - {{ 11}, { 9}}, {{267}, { 9}}, {{139}, { 9}}, {{395}, { 9}}, {{ 75}, { 9}}, - {{331}, { 9}}, {{203}, { 9}}, {{459}, { 9}}, {{ 43}, { 9}}, {{299}, { 9}}, - {{171}, { 9}}, {{427}, { 9}}, {{107}, { 9}}, {{363}, { 9}}, {{235}, { 9}}, - {{491}, { 9}}, {{ 27}, { 9}}, {{283}, { 9}}, {{155}, { 9}}, {{411}, { 9}}, - {{ 91}, { 9}}, {{347}, { 9}}, {{219}, { 9}}, {{475}, { 9}}, {{ 59}, { 9}}, - {{315}, { 9}}, {{187}, { 9}}, {{443}, { 9}}, {{123}, { 9}}, {{379}, { 9}}, - {{251}, { 9}}, {{507}, { 9}}, {{ 7}, { 9}}, {{263}, { 9}}, {{135}, { 9}}, - {{391}, { 9}}, {{ 71}, { 9}}, {{327}, { 9}}, {{199}, { 9}}, {{455}, { 9}}, - {{ 39}, { 9}}, {{295}, { 9}}, {{167}, { 9}}, {{423}, { 9}}, {{103}, { 9}}, - {{359}, { 9}}, {{231}, { 9}}, {{487}, { 9}}, {{ 23}, { 9}}, {{279}, { 9}}, - {{151}, { 9}}, {{407}, { 9}}, {{ 87}, { 9}}, {{343}, { 9}}, {{215}, { 9}}, - {{471}, { 9}}, {{ 55}, { 9}}, {{311}, { 9}}, {{183}, { 9}}, {{439}, { 9}}, - {{119}, { 9}}, {{375}, { 9}}, {{247}, { 9}}, {{503}, { 9}}, {{ 15}, { 9}}, - {{271}, { 9}}, {{143}, { 9}}, {{399}, { 9}}, {{ 79}, { 9}}, {{335}, { 9}}, - {{207}, { 9}}, {{463}, { 9}}, {{ 47}, { 9}}, {{303}, { 9}}, {{175}, { 9}}, - {{431}, { 9}}, {{111}, { 9}}, {{367}, { 9}}, {{239}, { 9}}, {{495}, { 9}}, - {{ 31}, { 9}}, {{287}, { 9}}, {{159}, { 9}}, {{415}, { 9}}, {{ 95}, { 9}}, - {{351}, { 9}}, {{223}, { 9}}, {{479}, { 9}}, {{ 63}, { 9}}, {{319}, { 9}}, - {{191}, { 9}}, {{447}, { 9}}, {{127}, { 9}}, {{383}, { 9}}, {{255}, { 9}}, - {{511}, { 9}}, {{ 0}, { 7}}, {{ 64}, { 7}}, {{ 32}, { 7}}, {{ 96}, { 7}}, - {{ 16}, { 7}}, {{ 80}, { 7}}, {{ 48}, { 7}}, {{112}, { 7}}, {{ 8}, { 7}}, - {{ 72}, { 7}}, {{ 40}, { 7}}, {{104}, { 7}}, {{ 24}, { 7}}, {{ 88}, { 7}}, - {{ 56}, { 7}}, {{120}, { 7}}, {{ 4}, { 7}}, {{ 68}, { 7}}, {{ 36}, { 7}}, - {{100}, { 7}}, {{ 20}, { 7}}, {{ 84}, { 7}}, {{ 52}, { 7}}, {{116}, { 7}}, - {{ 3}, { 8}}, {{131}, { 8}}, {{ 67}, { 8}}, {{195}, { 8}}, {{ 35}, { 8}}, - {{163}, { 8}}, {{ 99}, { 8}}, {{227}, { 8}} -}; - -local const ct_data static_dtree[D_CODES] = { - {{ 0}, { 5}}, {{16}, { 5}}, {{ 8}, { 5}}, {{24}, { 5}}, {{ 4}, { 5}}, - {{20}, { 5}}, {{12}, { 5}}, {{28}, { 5}}, {{ 2}, { 5}}, {{18}, { 5}}, - {{10}, { 5}}, {{26}, { 5}}, {{ 6}, { 5}}, {{22}, { 5}}, {{14}, { 5}}, - {{30}, { 5}}, {{ 1}, { 5}}, {{17}, { 5}}, {{ 9}, { 5}}, {{25}, { 5}}, - {{ 5}, { 5}}, {{21}, { 5}}, {{13}, { 5}}, {{29}, { 5}}, {{ 3}, { 5}}, - {{19}, { 5}}, {{11}, { 5}}, {{27}, { 5}}, {{ 7}, { 5}}, {{23}, { 5}} -}; - -const uch ZLIB_INTERNAL _dist_code[DIST_CODE_LEN] = { - 0, 1, 2, 3, 4, 4, 5, 5, 6, 6, 6, 6, 7, 7, 7, 7, 8, 8, 8, 8, - 8, 8, 8, 8, 9, 9, 9, 9, 9, 9, 9, 9, 10, 10, 10, 10, 10, 10, 10, 10, - 10, 10, 10, 10, 10, 10, 10, 10, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, 11, - 11, 11, 11, 11, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, - 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 12, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, 13, - 13, 13, 13, 13, 13, 13, 13, 13, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, - 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 14, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, - 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 15, 0, 0, 16, 17, - 18, 18, 19, 19, 20, 20, 20, 20, 21, 21, 21, 21, 22, 22, 22, 22, 22, 22, 22, 22, - 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, 28, - 28, 28, 28, 28, 28, 28, 28, 28, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, - 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29, 29 -}; - -const uch ZLIB_INTERNAL _length_code[MAX_MATCH - MIN_MATCH + 1] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 8, 9, 9, 10, 10, 11, 11, 12, 12, 12, 12, - 13, 13, 13, 13, 14, 14, 14, 14, 15, 15, 15, 15, 16, 16, 16, 16, 16, 16, 16, 16, - 17, 17, 17, 17, 17, 17, 17, 17, 18, 18, 18, 18, 18, 18, 18, 18, 19, 19, 19, 19, - 19, 19, 19, 19, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, 20, - 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 21, 22, 22, 22, 22, - 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 22, 23, 23, 23, 23, 23, 23, 23, 23, - 23, 23, 23, 23, 23, 23, 23, 23, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, 24, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, - 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 25, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, 26, - 26, 26, 26, 26, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, - 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 27, 28 -}; - -local const int base_length[LENGTH_CODES] = { - 0, 1, 2, 3, 4, 5, 6, 7, 8, 10, 12, 14, 16, 20, 24, 28, 32, 40, 48, 56, - 64, 80, 96, 112, 128, 160, 192, 224, 0 -}; - -local const int base_dist[D_CODES] = { - 0, 1, 2, 3, 4, 6, 8, 12, 16, 24, - 32, 48, 64, 96, 128, 192, 256, 384, 512, 768, - 1024, 1536, 2048, 3072, 4096, 6144, 8192, 12288, 16384, 24576 -}; - - diff --git a/common/zlib/zconf.h b/common/zlib/zconf.h deleted file mode 100644 index 2cf63398b..000000000 --- a/common/zlib/zconf.h +++ /dev/null @@ -1,535 +0,0 @@ -/* zconf.h -- configuration of the zlib compression library - * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#ifndef ZCONF_H -#define ZCONF_H - -/* - * If you *really* need a unique prefix for all types and library functions, - * compile with -DZ_PREFIX. The "standard" zlib should be compiled without it. - * Even better than compiling with -DZ_PREFIX would be to use configure to set - * this permanently in zconf.h using "./configure --zprefix". - */ -#ifdef Z_PREFIX /* may be set to #if 1 by ./configure */ -# define Z_PREFIX_SET - -/* all linked symbols and init macros */ -# define _dist_code z__dist_code -# define _length_code z__length_code -# define _tr_align z__tr_align -# define _tr_flush_bits z__tr_flush_bits -# define _tr_flush_block z__tr_flush_block -# define _tr_init z__tr_init -# define _tr_stored_block z__tr_stored_block -# define _tr_tally z__tr_tally -# define adler32 z_adler32 -# define adler32_combine z_adler32_combine -# define adler32_combine64 z_adler32_combine64 -# define adler32_z z_adler32_z -# ifndef Z_SOLO -# define compress z_compress -# define compress2 z_compress2 -# define compressBound z_compressBound -# endif -# define crc32 z_crc32 -# define crc32_combine z_crc32_combine -# define crc32_combine64 z_crc32_combine64 -# define crc32_z z_crc32_z -# define deflate z_deflate -# define deflateBound z_deflateBound -# define deflateCopy z_deflateCopy -# define deflateEnd z_deflateEnd -# define deflateGetDictionary z_deflateGetDictionary -# define deflateInit z_deflateInit -# define deflateInit2 z_deflateInit2 -# define deflateInit2_ z_deflateInit2_ -# define deflateInit_ z_deflateInit_ -# define deflateParams z_deflateParams -# define deflatePending z_deflatePending -# define deflatePrime z_deflatePrime -# define deflateReset z_deflateReset -# define deflateResetKeep z_deflateResetKeep -# define deflateSetDictionary z_deflateSetDictionary -# define deflateSetHeader z_deflateSetHeader -# define deflateTune z_deflateTune -# define deflate_copyright z_deflate_copyright -# define get_crc_table z_get_crc_table -# ifndef Z_SOLO -# define gz_error z_gz_error -# define gz_intmax z_gz_intmax -# define gz_strwinerror z_gz_strwinerror -# define gzbuffer z_gzbuffer -# define gzclearerr z_gzclearerr -# define gzclose z_gzclose -# define gzclose_r z_gzclose_r -# define gzclose_w z_gzclose_w -# define gzdirect z_gzdirect -# define gzdopen z_gzdopen -# define gzeof z_gzeof -# define gzerror z_gzerror -# define gzflush z_gzflush -# define gzfread z_gzfread -# define gzfwrite z_gzfwrite -# define gzgetc z_gzgetc -# define gzgetc_ z_gzgetc_ -# define gzgets z_gzgets -# define gzoffset z_gzoffset -# define gzoffset64 z_gzoffset64 -# define gzopen z_gzopen -# define gzopen64 z_gzopen64 -# ifdef _WIN32 -# define gzopen_w z_gzopen_w -# endif -# define gzprintf z_gzprintf -# define gzputc z_gzputc -# define gzputs z_gzputs -# define gzread z_gzread -# define gzrewind z_gzrewind -# define gzseek z_gzseek -# define gzseek64 z_gzseek64 -# define gzsetparams z_gzsetparams -# define gztell z_gztell -# define gztell64 z_gztell64 -# define gzungetc z_gzungetc -# define gzvprintf z_gzvprintf -# define gzwrite z_gzwrite -# endif -# define inflate z_inflate -# define inflateBack z_inflateBack -# define inflateBackEnd z_inflateBackEnd -# define inflateBackInit z_inflateBackInit -# define inflateBackInit_ z_inflateBackInit_ -# define inflateCodesUsed z_inflateCodesUsed -# define inflateCopy z_inflateCopy -# define inflateEnd z_inflateEnd -# define inflateGetDictionary z_inflateGetDictionary -# define inflateGetHeader z_inflateGetHeader -# define inflateInit z_inflateInit -# define inflateInit2 z_inflateInit2 -# define inflateInit2_ z_inflateInit2_ -# define inflateInit_ z_inflateInit_ -# define inflateMark z_inflateMark -# define inflatePrime z_inflatePrime -# define inflateReset z_inflateReset -# define inflateReset2 z_inflateReset2 -# define inflateResetKeep z_inflateResetKeep -# define inflateSetDictionary z_inflateSetDictionary -# define inflateSync z_inflateSync -# define inflateSyncPoint z_inflateSyncPoint -# define inflateUndermine z_inflateUndermine -# define inflateValidate z_inflateValidate -# define inflate_copyright z_inflate_copyright -# define inflate_fast z_inflate_fast -# define inflate_table z_inflate_table -# ifndef Z_SOLO -# define uncompress z_uncompress -# define uncompress2 z_uncompress2 -# endif -# define zError z_zError -# ifndef Z_SOLO -# define zcalloc z_zcalloc -# define zcfree z_zcfree -# endif -# define zlibCompileFlags z_zlibCompileFlags -# define zlibVersion z_zlibVersion - -/* all zlib typedefs in zlib.h and zconf.h */ -# define Byte z_Byte -# define Bytef z_Bytef -# define alloc_func z_alloc_func -# define charf z_charf -# define free_func z_free_func -# ifndef Z_SOLO -# define gzFile z_gzFile -# endif -# define gz_header z_gz_header -# define gz_headerp z_gz_headerp -# define in_func z_in_func -# define intf z_intf -# define out_func z_out_func -# define uInt z_uInt -# define uIntf z_uIntf -# define uLong z_uLong -# define uLongf z_uLongf -# define voidp z_voidp -# define voidpc z_voidpc -# define voidpf z_voidpf - -/* all zlib structs in zlib.h and zconf.h */ -# define gz_header_s z_gz_header_s -# define internal_state z_internal_state - -#endif - -#if defined(__MSDOS__) && !defined(MSDOS) -# define MSDOS -#endif -#if (defined(OS_2) || defined(__OS2__)) && !defined(OS2) -# define OS2 -#endif -#if defined(_WINDOWS) && !defined(WINDOWS) -# define WINDOWS -#endif -#if defined(_WIN32) || defined(_WIN32_WCE) || defined(__WIN32__) -# ifndef WIN32 -# define WIN32 -# endif -#endif -#if (defined(MSDOS) || defined(OS2) || defined(WINDOWS)) && !defined(WIN32) -# if !defined(__GNUC__) && !defined(__FLAT__) && !defined(__386__) -# ifndef SYS16BIT -# define SYS16BIT -# endif -# endif -#endif - -/* - * Compile with -DMAXSEG_64K if the alloc function cannot allocate more - * than 64k bytes at a time (needed on systems with 16-bit int). - */ -#ifdef SYS16BIT -# define MAXSEG_64K -#endif -#ifdef MSDOS -# define UNALIGNED_OK -#endif - -#ifdef __STDC_VERSION__ -# ifndef STDC -# define STDC -# endif -# if __STDC_VERSION__ >= 199901L -# ifndef STDC99 -# define STDC99 -# endif -# endif -#endif -#if !defined(STDC) && (defined(__STDC__) || defined(__cplusplus)) -# define STDC -#endif -#if !defined(STDC) && (defined(__GNUC__) || defined(__BORLANDC__)) -# define STDC -#endif -#if !defined(STDC) && (defined(MSDOS) || defined(WINDOWS) || defined(WIN32)) -# define STDC -#endif -#if !defined(STDC) && (defined(OS2) || defined(__HOS_AIX__)) -# define STDC -#endif - -#if defined(__OS400__) && !defined(STDC) /* iSeries (formerly AS/400). */ -# define STDC -#endif - -#ifndef STDC -# ifndef const /* cannot use !defined(STDC) && !defined(const) on Mac */ -# define const /* note: need a more gentle solution here */ -# endif -#endif - -#if defined(ZLIB_CONST) && !defined(z_const) -# define z_const const -#else -# define z_const -#endif - -#ifdef Z_SOLO -typedef unsigned long z_size_t; -#else -# define z_longlong long long -# if defined(NO_SIZE_T) -typedef unsigned NO_SIZE_T z_size_t; -# elif defined(STDC) -# include <stddef.h> -typedef size_t z_size_t; -# else -typedef unsigned long z_size_t; -# endif -# undef z_longlong -#endif - -/* Maximum value for memLevel in deflateInit2 */ -#ifndef MAX_MEM_LEVEL -# ifdef MAXSEG_64K -# define MAX_MEM_LEVEL 8 -# else -# define MAX_MEM_LEVEL 9 -# endif -#endif - -/* Maximum value for windowBits in deflateInit2 and inflateInit2. - * WARNING: reducing MAX_WBITS makes minigzip unable to extract .gz files - * created by gzip. (Files created by minigzip can still be extracted by - * gzip.) - */ -#ifndef MAX_WBITS -# define MAX_WBITS 15 /* 32K LZ77 window */ -#endif - -/* The memory requirements for deflate are (in bytes): - (1 << (windowBits+2)) + (1 << (memLevel+9)) - that is: 128K for windowBits=15 + 128K for memLevel = 8 (default values) - plus a few kilobytes for small objects. For example, if you want to reduce - the default memory requirements from 256K to 128K, compile with - make CFLAGS="-O -DMAX_WBITS=14 -DMAX_MEM_LEVEL=7" - Of course this will generally degrade compression (there's no free lunch). - - The memory requirements for inflate are (in bytes) 1 << windowBits - that is, 32K for windowBits=15 (default value) plus about 7 kilobytes - for small objects. -*/ - -/* Type declarations */ - -#ifndef OF /* function prototypes */ -# ifdef STDC -# define OF(args) args -# else -# define OF(args) () -# endif -#endif - -#ifndef Z_ARG /* function prototypes for stdarg */ -# if defined(STDC) || defined(Z_HAVE_STDARG_H) -# define Z_ARG(args) args -# else -# define Z_ARG(args) () -# endif -#endif - -/* The following definitions for FAR are needed only for MSDOS mixed - * model programming (small or medium model with some far allocations). - * This was tested only with MSC; for other MSDOS compilers you may have - * to define NO_MEMCPY in zutil.h. If you don't need the mixed model, - * just define FAR to be empty. - */ -#ifdef SYS16BIT -# if defined(M_I86SM) || defined(M_I86MM) -/* MSC small or medium model */ -# define SMALL_MEDIUM -# ifdef _MSC_VER -# define FAR _far -# else -# define FAR far -# endif -# endif -# if (defined(__SMALL__) || defined(__MEDIUM__)) -/* Turbo C small or medium model */ -# define SMALL_MEDIUM -# ifdef __BORLANDC__ -# define FAR _far -# else -# define FAR far -# endif -# endif -#endif - -#if defined(WINDOWS) || defined(WIN32) -/* If building or using zlib as a DLL, define ZLIB_DLL. - * This is not mandatory, but it offers a little performance increase. - */ -# ifdef ZLIB_DLL -# if defined(WIN32) && (!defined(__BORLANDC__) || (__BORLANDC__ >= 0x500)) -# ifdef ZLIB_INTERNAL -# define ZEXTERN extern __declspec(dllexport) -# else -# define ZEXTERN extern __declspec(dllimport) -# endif -# endif -# endif /* ZLIB_DLL */ -/* If building or using zlib with the WINAPI/WINAPIV calling convention, - * define ZLIB_WINAPI. - * Caution: the standard ZLIB1.DLL is NOT compiled using ZLIB_WINAPI. - */ -# ifdef ZLIB_WINAPI -# ifdef FAR -# undef FAR -# endif -# include <windows.h> -/* No need for _export, use ZLIB.DEF instead. */ -/* For complete Windows compatibility, use WINAPI, not __stdcall. */ -# define ZEXPORT WINAPI -# ifdef WIN32 -# define ZEXPORTVA WINAPIV -# else -# define ZEXPORTVA FAR CDECL -# endif -# endif -#endif - -#if defined (__BEOS__) -# ifdef ZLIB_DLL -# ifdef ZLIB_INTERNAL -# define ZEXPORT __declspec(dllexport) -# define ZEXPORTVA __declspec(dllexport) -# else -# define ZEXPORT __declspec(dllimport) -# define ZEXPORTVA __declspec(dllimport) -# endif -# endif -#endif - -#ifndef ZEXTERN -# define ZEXTERN extern -#endif -#ifndef ZEXPORT -# define ZEXPORT -#endif -#ifndef ZEXPORTVA -# define ZEXPORTVA -#endif - -#ifndef FAR -# define FAR -#endif - -#if !defined(__MACTYPES__) -typedef unsigned char Byte; /* 8 bits */ -#endif -typedef unsigned int uInt; /* 16 bits or more */ -typedef unsigned long uLong; /* 32 bits or more */ - -#ifdef SMALL_MEDIUM -/* Borland C/C++ and some old MSC versions ignore FAR inside typedef */ -# define Bytef Byte FAR -#else -typedef Byte FAR Bytef; -#endif -typedef char FAR charf; -typedef int FAR intf; -typedef uInt FAR uIntf; -typedef uLong FAR uLongf; - -#ifdef STDC -typedef void const *voidpc; -typedef void FAR *voidpf; -typedef void *voidp; -#else -typedef Byte const *voidpc; -typedef Byte FAR *voidpf; -typedef Byte *voidp; -#endif - -#if !defined(Z_U4) && !defined(Z_SOLO) && defined(STDC) -# include <limits.h> -# if (UINT_MAX == 0xffffffffUL) -# define Z_U4 unsigned -# elif (ULONG_MAX == 0xffffffffUL) -# define Z_U4 unsigned long -# elif (USHRT_MAX == 0xffffffffUL) -# define Z_U4 unsigned short -# endif -#endif - -#ifdef Z_U4 -typedef Z_U4 z_crc_t; -#else -typedef unsigned long z_crc_t; -#endif - -#ifdef HAVE_UNISTD_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_UNISTD_H -#endif - -#ifdef HAVE_STDARG_H /* may be set to #if 1 by ./configure */ -# define Z_HAVE_STDARG_H -#endif - -#ifdef STDC -# ifndef Z_SOLO -# include <sys/types.h> /* for off_t */ -# endif -#endif - -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -# include <stdarg.h> /* for va_list */ -# endif -#endif - -#ifdef _WIN32 -# ifndef Z_SOLO -# include <stddef.h> /* for wchar_t */ -# endif -#endif - -/* a little trick to accommodate both "#define _LARGEFILE64_SOURCE" and - * "#define _LARGEFILE64_SOURCE 1" as requesting 64-bit operations, (even - * though the former does not conform to the LFS document), but considering - * both "#undef _LARGEFILE64_SOURCE" and "#define _LARGEFILE64_SOURCE 0" as - * equivalently requesting no 64-bit operations - */ -#if defined(_LARGEFILE64_SOURCE) && -_LARGEFILE64_SOURCE - -1 == 1 -# undef _LARGEFILE64_SOURCE -#endif - -#if defined(__WATCOMC__) && !defined(Z_HAVE_UNISTD_H) -# define Z_HAVE_UNISTD_H -#endif -#ifndef Z_SOLO -# if defined(Z_HAVE_UNISTD_H) || defined(_LARGEFILE64_SOURCE) -# include <unistd.h> /* for SEEK_*, off_t, and _LFS64_LARGEFILE */ -# ifdef VMS -# include <unixio.h> /* for off_t */ -# endif -# ifndef z_off_t -# define z_off_t off_t -# endif -# endif -#endif - -#if defined(_LFS64_LARGEFILE) && _LFS64_LARGEFILE-0 -# define Z_LFS64 -#endif - -#if defined(_LARGEFILE64_SOURCE) && defined(Z_LFS64) -# define Z_LARGE64 -#endif - -#if defined(_FILE_OFFSET_BITS) && _FILE_OFFSET_BITS-0 == 64 && defined(Z_LFS64) -# define Z_WANT64 -#endif - -#if !defined(SEEK_SET) && !defined(Z_SOLO) -# define SEEK_SET 0 /* Seek from beginning of file. */ -# define SEEK_CUR 1 /* Seek from current position. */ -# define SEEK_END 2 /* Set file pointer to EOF plus "offset" */ -#endif - -#ifndef z_off_t -# define z_off_t long -#endif - -#if !defined(_WIN32) && defined(Z_LARGE64) -# define z_off64_t off64_t -#else -# if defined(_WIN32) && !defined(__GNUC__) && !defined(Z_SOLO) -# define z_off64_t __int64 -# else -# define z_off64_t z_off_t -# endif -#endif - -/* MVS linker does not support external names larger than 8 bytes */ -#if defined(__MVS__) -#pragma map(deflateInit_,"DEIN") -#pragma map(deflateInit2_,"DEIN2") -#pragma map(deflateEnd,"DEEND") -#pragma map(deflateBound,"DEBND") -#pragma map(inflateInit_,"ININ") -#pragma map(inflateInit2_,"ININ2") -#pragma map(inflateEnd,"INEND") -#pragma map(inflateSync,"INSY") -#pragma map(inflateSetDictionary,"INSEDI") -#pragma map(compressBound,"CMBND") -#pragma map(inflate_table,"INTABL") -#pragma map(inflate_fast,"INFA") -#pragma map(inflate_copyright,"INCOPY") -#endif - -#endif /* ZCONF_H */ - diff --git a/common/zlib/zlib.h b/common/zlib/zlib.h deleted file mode 100644 index ca35828f0..000000000 --- a/common/zlib/zlib.h +++ /dev/null @@ -1,1924 +0,0 @@ -/* zlib.h -- interface of the 'zlib' general purpose compression library - version 1.2.11, January 15th, 2017 - - Copyright (C) 1995-2017 Jean-loup Gailly and Mark Adler - - This software is provided 'as-is', without any express or implied - warranty. In no event will the authors be held liable for any damages - arising from the use of this software. - - Permission is granted to anyone to use this software for any purpose, - including commercial applications, and to alter it and redistribute it - freely, subject to the following restrictions: - - 1. The origin of this software must not be misrepresented; you must not - claim that you wrote the original software. If you use this software - in a product, an acknowledgment in the product documentation would be - appreciated but is not required. - 2. Altered source versions must be plainly marked as such, and must not be - misrepresented as being the original software. - 3. This notice may not be removed or altered from any source distribution. - - Jean-loup Gailly Mark Adler - jloup@gzip.org madler@alumni.caltech.edu - - - The data format used by the zlib library is described by RFCs (Request for - Comments) 1950 to 1952 in the files http://tools.ietf.org/html/rfc1950 - (zlib format), rfc1951 (deflate format) and rfc1952 (gzip format). -*/ - -#ifndef ZLIB_H -#define ZLIB_H - -#include "zconf.h" - -#ifdef __cplusplus -extern "C" { -#endif - -#ifndef ZLIB_PM3_TUNED -#define ZLIB_VERSION "1.2.11" -#define ZLIB_VERNUM 0x12b0 -#define ZLIB_VER_MAJOR 1 -#define ZLIB_VER_MINOR 2 -#define ZLIB_VER_REVISION 11 -#define ZLIB_VER_SUBREVISION 0 -#else -#define ZLIB_VERSION "1.2.11.f-Proxmark3" -#define ZLIB_VERNUM 0x12bf -#define ZLIB_VER_MAJOR 1 -#define ZLIB_VER_MINOR 2 -#define ZLIB_VER_REVISION 11 -#define ZLIB_VER_SUBREVISION f -#endif - - - -/* - The 'zlib' compression library provides in-memory compression and - decompression functions, including integrity checks of the uncompressed data. - This version of the library supports only one compression method (deflation) - but other algorithms will be added later and will have the same stream - interface. - - Compression can be done in a single step if the buffers are large enough, - or can be done by repeated calls of the compression function. In the latter - case, the application must provide more input and/or consume the output - (providing more output space) before each call. - - The compressed data format used by default by the in-memory functions is - the zlib format, which is a zlib wrapper documented in RFC 1950, wrapped - around a deflate stream, which is itself documented in RFC 1951. - - The library also supports reading and writing files in gzip (.gz) format - with an interface similar to that of stdio using the functions that start - with "gz". The gzip format is different from the zlib format. gzip is a - gzip wrapper, documented in RFC 1952, wrapped around a deflate stream. - - This library can optionally read and write gzip and raw deflate streams in - memory as well. - - The zlib format was designed to be compact and fast for use in memory - and on communications channels. The gzip format was designed for single- - file compression on file systems, has a larger header than zlib to maintain - directory information, and uses a different, slower check method than zlib. - - The library does not install any signal handler. The decoder checks - the consistency of the compressed data, so the library should never crash - even in the case of corrupted input. -*/ - -typedef voidpf(*alloc_func) OF((voidpf opaque, uInt items, uInt size)); -typedef void (*free_func) OF((voidpf opaque, voidpf address)); - -struct internal_state; - -typedef struct z_stream_s { - z_const Bytef *next_in; /* next input byte */ - uInt avail_in; /* number of bytes available at next_in */ - uLong total_in; /* total number of input bytes read so far */ - - Bytef *next_out; /* next output byte will go here */ - uInt avail_out; /* remaining free space at next_out */ - uLong total_out; /* total number of bytes output so far */ - - z_const char *msg; /* last error message, NULL if no error */ - struct internal_state FAR *state; /* not visible by applications */ - - alloc_func zalloc; /* used to allocate the internal state */ - free_func zfree; /* used to free the internal state */ - voidpf opaque; /* private data object passed to zalloc and zfree */ - - int data_type; /* best guess about the data type: binary or text - for deflate, or the decoding state for inflate */ - uLong adler; /* Adler-32 or CRC-32 value of the uncompressed data */ - uLong reserved; /* reserved for future use */ -} z_stream; - -typedef z_stream FAR *z_streamp; - -/* - gzip header information passed to and from zlib routines. See RFC 1952 - for more details on the meanings of these fields. -*/ -typedef struct gz_header_s { - int text; /* true if compressed data believed to be text */ - uLong time; /* modification time */ - int xflags; /* extra flags (not used when writing a gzip file) */ - int os; /* operating system */ - Bytef *extra; /* pointer to extra field or Z_NULL if none */ - uInt extra_len; /* extra field length (valid if extra != Z_NULL) */ - uInt extra_max; /* space at extra (only when reading header) */ - Bytef *name; /* pointer to zero-terminated file name or Z_NULL */ - uInt name_max; /* space at name (only when reading header) */ - Bytef *comment; /* pointer to zero-terminated comment or Z_NULL */ - uInt comm_max; /* space at comment (only when reading header) */ - int hcrc; /* true if there was or will be a header crc */ - int done; /* true when done reading gzip header (not used - when writing a gzip file) */ -} gz_header; - -typedef gz_header FAR *gz_headerp; - -/* - The application must update next_in and avail_in when avail_in has dropped - to zero. It must update next_out and avail_out when avail_out has dropped - to zero. The application must initialize zalloc, zfree and opaque before - calling the init function. All other fields are set by the compression - library and must not be updated by the application. - - The opaque value provided by the application will be passed as the first - parameter for calls of zalloc and zfree. This can be useful for custom - memory management. The compression library attaches no meaning to the - opaque value. - - zalloc must return Z_NULL if there is not enough memory for the object. - If zlib is used in a multi-threaded application, zalloc and zfree must be - thread safe. In that case, zlib is thread-safe. When zalloc and zfree are - Z_NULL on entry to the initialization function, they are set to internal - routines that use the standard library functions malloc() and free(). - - On 16-bit systems, the functions zalloc and zfree must be able to allocate - exactly 65536 bytes, but will not be required to allocate more than this if - the symbol MAXSEG_64K is defined (see zconf.h). WARNING: On MSDOS, pointers - returned by zalloc for objects of exactly 65536 bytes *must* have their - offset normalized to zero. The default allocation function provided by this - library ensures this (see zutil.c). To reduce memory requirements and avoid - any allocation of 64K objects, at the expense of compression ratio, compile - the library with -DMAX_WBITS=14 (see zconf.h). - - The fields total_in and total_out can be used for statistics or progress - reports. After compression, total_in holds the total size of the - uncompressed data and may be saved for use by the decompressor (particularly - if the decompressor wants to decompress everything in a single step). -*/ - -/* constants */ - -#define Z_NO_FLUSH 0 -#define Z_PARTIAL_FLUSH 1 -#define Z_SYNC_FLUSH 2 -#define Z_FULL_FLUSH 3 -#define Z_FINISH 4 -#define Z_BLOCK 5 -#define Z_TREES 6 -/* Allowed flush values; see deflate() and inflate() below for details */ - -#define Z_OK 0 -#define Z_STREAM_END 1 -#define Z_NEED_DICT 2 -#define Z_ERRNO (-1) -#define Z_STREAM_ERROR (-2) -#define Z_DATA_ERROR (-3) -#define Z_MEM_ERROR (-4) -#define Z_BUF_ERROR (-5) -#define Z_VERSION_ERROR (-6) -/* Return codes for the compression/decompression functions. Negative values - * are errors, positive values are used for special but normal events. - */ - -#define Z_NO_COMPRESSION 0 -#define Z_BEST_SPEED 1 -#define Z_BEST_COMPRESSION 9 -#define Z_DEFAULT_COMPRESSION (-1) -/* compression levels */ - -#define Z_FILTERED 1 -#define Z_HUFFMAN_ONLY 2 -#define Z_RLE 3 -#define Z_FIXED 4 -#define Z_DEFAULT_STRATEGY 0 -/* compression strategy; see deflateInit2() below for details */ - -#define Z_BINARY 0 -#define Z_TEXT 1 -#define Z_ASCII Z_TEXT /* for compatibility with 1.2.2 and earlier */ -#define Z_UNKNOWN 2 -/* Possible values of the data_type field for deflate() */ - -#define Z_DEFLATED 8 -/* The deflate compression method (the only one supported in this version) */ - -#define Z_NULL 0 /* for initializing zalloc, zfree, opaque */ - -#define zlib_version zlibVersion() -/* for compatibility with versions < 1.0.2 */ - - -/* basic functions */ - -ZEXTERN const char *ZEXPORT zlibVersion OF((void)); -/* The application can compare zlibVersion and ZLIB_VERSION for consistency. - If the first character differs, the library code actually used is not - compatible with the zlib.h header file used by the application. This check - is automatically made by deflateInit and inflateInit. - */ - -/* -ZEXTERN int ZEXPORT deflateInit OF((z_streamp strm, int level)); - - Initializes the internal stream state for compression. The fields - zalloc, zfree and opaque must be initialized before by the caller. If - zalloc and zfree are set to Z_NULL, deflateInit updates them to use default - allocation functions. - - The compression level must be Z_DEFAULT_COMPRESSION, or between 0 and 9: - 1 gives best speed, 9 gives best compression, 0 gives no compression at all - (the input data is simply copied a block at a time). Z_DEFAULT_COMPRESSION - requests a default compromise between speed and compression (currently - equivalent to level 6). - - deflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if level is not a valid compression level, or - Z_VERSION_ERROR if the zlib library version (zlib_version) is incompatible - with the version assumed by the caller (ZLIB_VERSION). msg is set to null - if there is no error message. deflateInit does not perform any compression: - this will be done by deflate(). -*/ - - -ZEXTERN int ZEXPORT deflate OF((z_streamp strm, int flush)); -/* - deflate compresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce - some output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. deflate performs one or both of the - following actions: - - - Compress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), next_in and avail_in are updated and - processing will resume at this point for the next call of deflate(). - - - Generate more output starting at next_out and update next_out and avail_out - accordingly. This action is forced if the parameter flush is non zero. - Forcing flush frequently degrades the compression ratio, so this parameter - should be set only when necessary. Some output may be provided even if - flush is zero. - - Before the call of deflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming more - output, and updating avail_in or avail_out accordingly; avail_out should - never be zero before the call. The application can consume the compressed - output when it wants, for example when the output buffer is full (avail_out - == 0), or after each call of deflate(). If deflate returns Z_OK and with - zero avail_out, it must be called again after making room in the output - buffer because there might be more output pending. See deflatePending(), - which can be used if desired to determine whether or not there is more ouput - in that case. - - Normally the parameter flush is set to Z_NO_FLUSH, which allows deflate to - decide how much data to accumulate before producing output, in order to - maximize compression. - - If the parameter flush is set to Z_SYNC_FLUSH, all pending output is - flushed to the output buffer and the output is aligned on a byte boundary, so - that the decompressor can get all input data available so far. (In - particular avail_in is zero after the call if enough output space has been - provided before the call.) Flushing may degrade compression for some - compression algorithms and so it should be used only when necessary. This - completes the current deflate block and follows it with an empty stored block - that is three bits plus filler bits to the next byte, followed by four bytes - (00 00 ff ff). - - If flush is set to Z_PARTIAL_FLUSH, all pending output is flushed to the - output buffer, but the output is not aligned to a byte boundary. All of the - input data so far will be available to the decompressor, as for Z_SYNC_FLUSH. - This completes the current deflate block and follows it with an empty fixed - codes block that is 10 bits long. This assures that enough bytes are output - in order for the decompressor to finish the block before the empty fixed - codes block. - - If flush is set to Z_BLOCK, a deflate block is completed and emitted, as - for Z_SYNC_FLUSH, but the output is not aligned on a byte boundary, and up to - seven bits of the current block are held to be written as the next byte after - the next deflate block is completed. In this case, the decompressor may not - be provided enough bits at this point in order to complete decompression of - the data provided so far to the compressor. It may need to wait for the next - block to be emitted. This is for advanced applications that need to control - the emission of deflate blocks. - - If flush is set to Z_FULL_FLUSH, all output is flushed as with - Z_SYNC_FLUSH, and the compression state is reset so that decompression can - restart from this point if previous compressed data has been damaged or if - random access is desired. Using Z_FULL_FLUSH too often can seriously degrade - compression. - - If deflate returns with avail_out == 0, this function must be called again - with the same value of the flush parameter and more output space (updated - avail_out), until the flush is complete (deflate returns with non-zero - avail_out). In the case of a Z_FULL_FLUSH or Z_SYNC_FLUSH, make sure that - avail_out is greater than six to avoid repeated flush markers due to - avail_out == 0 on return. - - If the parameter flush is set to Z_FINISH, pending input is processed, - pending output is flushed and deflate returns with Z_STREAM_END if there was - enough output space. If deflate returns with Z_OK or Z_BUF_ERROR, this - function must be called again with Z_FINISH and more output space (updated - avail_out) but no more input data, until it returns with Z_STREAM_END or an - error. After deflate has returned Z_STREAM_END, the only possible operations - on the stream are deflateReset or deflateEnd. - - Z_FINISH can be used in the first deflate call after deflateInit if all the - compression is to be done in a single step. In order to complete in one - call, avail_out must be at least the value returned by deflateBound (see - below). Then deflate is guaranteed to return Z_STREAM_END. If not enough - output space is provided, deflate will not return Z_STREAM_END, and it must - be called again as described above. - - deflate() sets strm->adler to the Adler-32 checksum of all input read - so far (that is, total_in bytes). If a gzip stream is being generated, then - strm->adler will be the CRC-32 checksum of the input read so far. (See - deflateInit2 below.) - - deflate() may update strm->data_type if it can make a good guess about - the input data type (Z_BINARY or Z_TEXT). If in doubt, the data is - considered binary. This field is only for information purposes and does not - affect the compression algorithm in any manner. - - deflate() returns Z_OK if some progress has been made (more input - processed or more output produced), Z_STREAM_END if all input has been - consumed and all output has been produced (only when flush is set to - Z_FINISH), Z_STREAM_ERROR if the stream state was inconsistent (for example - if next_in or next_out was Z_NULL or the state was inadvertently written over - by the application), or Z_BUF_ERROR if no progress is possible (for example - avail_in or avail_out was zero). Note that Z_BUF_ERROR is not fatal, and - deflate() can be called again with more input and more output space to - continue compressing. -*/ - - -ZEXTERN int ZEXPORT deflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any pending - output. - - deflateEnd returns Z_OK if success, Z_STREAM_ERROR if the - stream state was inconsistent, Z_DATA_ERROR if the stream was freed - prematurely (some input or output was discarded). In the error case, msg - may be set but then points to a static string (which must not be - deallocated). -*/ - - -/* -ZEXTERN int ZEXPORT inflateInit OF((z_streamp strm)); - - Initializes the internal stream state for decompression. The fields - next_in, avail_in, zalloc, zfree and opaque must be initialized before by - the caller. In the current version of inflate, the provided input is not - read or consumed. The allocation of a sliding window will be deferred to - the first call of inflate (if the decompression does not complete on the - first call). If zalloc and zfree are set to Z_NULL, inflateInit updates - them to use default allocation functions. - - inflateInit returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller, or Z_STREAM_ERROR if the parameters are - invalid, such as a null pointer to the structure. msg is set to null if - there is no error message. inflateInit does not perform any decompression. - Actual decompression will be done by inflate(). So next_in, and avail_in, - next_out, and avail_out are unused and unchanged. The current - implementation of inflateInit() does not process any header information -- - that is deferred until inflate() is called. -*/ - - -ZEXTERN int ZEXPORT inflate OF((z_streamp strm, int flush)); -/* - inflate decompresses as much data as possible, and stops when the input - buffer becomes empty or the output buffer becomes full. It may introduce - some output latency (reading input without producing any output) except when - forced to flush. - - The detailed semantics are as follows. inflate performs one or both of the - following actions: - - - Decompress more input starting at next_in and update next_in and avail_in - accordingly. If not all input can be processed (because there is not - enough room in the output buffer), then next_in and avail_in are updated - accordingly, and processing will resume at this point for the next call of - inflate(). - - - Generate more output starting at next_out and update next_out and avail_out - accordingly. inflate() provides as much output as possible, until there is - no more input data or no more space in the output buffer (see below about - the flush parameter). - - Before the call of inflate(), the application should ensure that at least - one of the actions is possible, by providing more input and/or consuming more - output, and updating the next_* and avail_* values accordingly. If the - caller of inflate() does not provide both available input and available - output space, it is possible that there will be no progress made. The - application can consume the uncompressed output when it wants, for example - when the output buffer is full (avail_out == 0), or after each call of - inflate(). If inflate returns Z_OK and with zero avail_out, it must be - called again after making room in the output buffer because there might be - more output pending. - - The flush parameter of inflate() can be Z_NO_FLUSH, Z_SYNC_FLUSH, Z_FINISH, - Z_BLOCK, or Z_TREES. Z_SYNC_FLUSH requests that inflate() flush as much - output as possible to the output buffer. Z_BLOCK requests that inflate() - stop if and when it gets to the next deflate block boundary. When decoding - the zlib or gzip format, this will cause inflate() to return immediately - after the header and before the first block. When doing a raw inflate, - inflate() will go ahead and process the first block, and will return when it - gets to the end of that block, or when it runs out of data. - - The Z_BLOCK option assists in appending to or combining deflate streams. - To assist in this, on return inflate() always sets strm->data_type to the - number of unused bits in the last byte taken from strm->next_in, plus 64 if - inflate() is currently decoding the last block in the deflate stream, plus - 128 if inflate() returned immediately after decoding an end-of-block code or - decoding the complete header up to just before the first byte of the deflate - stream. The end-of-block will not be indicated until all of the uncompressed - data from that block has been written to strm->next_out. The number of - unused bits may in general be greater than seven, except when bit 7 of - data_type is set, in which case the number of unused bits will be less than - eight. data_type is set as noted here every time inflate() returns for all - flush options, and so can be used to determine the amount of currently - consumed input in bits. - - The Z_TREES option behaves as Z_BLOCK does, but it also returns when the - end of each deflate block header is reached, before any actual data in that - block is decoded. This allows the caller to determine the length of the - deflate block header for later use in random access within a deflate block. - 256 is added to the value of strm->data_type when inflate() returns - immediately after reaching the end of the deflate block header. - - inflate() should normally be called until it returns Z_STREAM_END or an - error. However if all decompression is to be performed in a single step (a - single call of inflate), the parameter flush should be set to Z_FINISH. In - this case all pending input is processed and all pending output is flushed; - avail_out must be large enough to hold all of the uncompressed data for the - operation to complete. (The size of the uncompressed data may have been - saved by the compressor for this purpose.) The use of Z_FINISH is not - required to perform an inflation in one step. However it may be used to - inform inflate that a faster approach can be used for the single inflate() - call. Z_FINISH also informs inflate to not maintain a sliding window if the - stream completes, which reduces inflate's memory footprint. If the stream - does not complete, either because not all of the stream is provided or not - enough output space is provided, then a sliding window will be allocated and - inflate() can be called again to continue the operation as if Z_NO_FLUSH had - been used. - - In this implementation, inflate() always flushes as much output as - possible to the output buffer, and always uses the faster approach on the - first call. So the effects of the flush parameter in this implementation are - on the return value of inflate() as noted below, when inflate() returns early - when Z_BLOCK or Z_TREES is used, and when inflate() avoids the allocation of - memory for a sliding window when Z_FINISH is used. - - If a preset dictionary is needed after this call (see inflateSetDictionary - below), inflate sets strm->adler to the Adler-32 checksum of the dictionary - chosen by the compressor and returns Z_NEED_DICT; otherwise it sets - strm->adler to the Adler-32 checksum of all output produced so far (that is, - total_out bytes) and returns Z_OK, Z_STREAM_END or an error code as described - below. At the end of the stream, inflate() checks that its computed Adler-32 - checksum is equal to that saved by the compressor and returns Z_STREAM_END - only if the checksum is correct. - - inflate() can decompress and check either zlib-wrapped or gzip-wrapped - deflate data. The header type is detected automatically, if requested when - initializing with inflateInit2(). Any information contained in the gzip - header is not retained unless inflateGetHeader() is used. When processing - gzip-wrapped deflate data, strm->adler32 is set to the CRC-32 of the output - produced so far. The CRC-32 is checked against the gzip trailer, as is the - uncompressed length, modulo 2^32. - - inflate() returns Z_OK if some progress has been made (more input processed - or more output produced), Z_STREAM_END if the end of the compressed data has - been reached and all uncompressed output has been produced, Z_NEED_DICT if a - preset dictionary is needed at this point, Z_DATA_ERROR if the input data was - corrupted (input stream not conforming to the zlib format or incorrect check - value, in which case strm->msg points to a string with a more specific - error), Z_STREAM_ERROR if the stream structure was inconsistent (for example - next_in or next_out was Z_NULL, or the state was inadvertently written over - by the application), Z_MEM_ERROR if there was not enough memory, Z_BUF_ERROR - if no progress was possible or if there was not enough room in the output - buffer when Z_FINISH is used. Note that Z_BUF_ERROR is not fatal, and - inflate() can be called again with more input and more output space to - continue decompressing. If Z_DATA_ERROR is returned, the application may - then call inflateSync() to look for a good compression block if a partial - recovery of the data is to be attempted. -*/ - - -ZEXTERN int ZEXPORT inflateEnd OF((z_streamp strm)); -/* - All dynamically allocated data structures for this stream are freed. - This function discards any unprocessed input and does not flush any pending - output. - - inflateEnd returns Z_OK if success, or Z_STREAM_ERROR if the stream state - was inconsistent. -*/ - - -/* Advanced functions */ - -/* - The following functions are needed only in some special applications. -*/ - -/* -ZEXTERN int ZEXPORT deflateInit2 OF((z_streamp strm, - int level, - int method, - int windowBits, - int memLevel, - int strategy)); - - This is another version of deflateInit with more compression options. The - fields next_in, zalloc, zfree and opaque must be initialized before by the - caller. - - The method parameter is the compression method. It must be Z_DEFLATED in - this version of the library. - - The windowBits parameter is the base two logarithm of the window size - (the size of the history buffer). It should be in the range 8..15 for this - version of the library. Larger values of this parameter result in better - compression at the expense of memory usage. The default value is 15 if - deflateInit is used instead. - - For the current implementation of deflate(), a windowBits value of 8 (a - window size of 256 bytes) is not supported. As a result, a request for 8 - will result in 9 (a 512-byte window). In that case, providing 8 to - inflateInit2() will result in an error when the zlib header with 9 is - checked against the initialization of inflate(). The remedy is to not use 8 - with deflateInit2() with this initialization, or at least in that case use 9 - with inflateInit2(). - - windowBits can also be -8..-15 for raw deflate. In this case, -windowBits - determines the window size. deflate() will then generate raw deflate data - with no zlib header or trailer, and will not compute a check value. - - windowBits can also be greater than 15 for optional gzip encoding. Add - 16 to windowBits to write a simple gzip header and trailer around the - compressed data instead of a zlib wrapper. The gzip header will have no - file name, no extra data, no comment, no modification time (set to zero), no - header crc, and the operating system will be set to the appropriate value, - if the operating system was determined at compile time. If a gzip stream is - being written, strm->adler is a CRC-32 instead of an Adler-32. - - For raw deflate or gzip encoding, a request for a 256-byte window is - rejected as invalid, since only the zlib header provides a means of - transmitting the window size to the decompressor. - - The memLevel parameter specifies how much memory should be allocated - for the internal compression state. memLevel=1 uses minimum memory but is - slow and reduces compression ratio; memLevel=9 uses maximum memory for - optimal speed. The default value is 8. See zconf.h for total memory usage - as a function of windowBits and memLevel. - - The strategy parameter is used to tune the compression algorithm. Use the - value Z_DEFAULT_STRATEGY for normal data, Z_FILTERED for data produced by a - filter (or predictor), Z_HUFFMAN_ONLY to force Huffman encoding only (no - string match), or Z_RLE to limit match distances to one (run-length - encoding). Filtered data consists mostly of small values with a somewhat - random distribution. In this case, the compression algorithm is tuned to - compress them better. The effect of Z_FILTERED is to force more Huffman - coding and less string matching; it is somewhat intermediate between - Z_DEFAULT_STRATEGY and Z_HUFFMAN_ONLY. Z_RLE is designed to be almost as - fast as Z_HUFFMAN_ONLY, but give better compression for PNG image data. The - strategy parameter only affects the compression ratio but not the - correctness of the compressed output even if it is not set appropriately. - Z_FIXED prevents the use of dynamic Huffman codes, allowing for a simpler - decoder for special applications. - - deflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_STREAM_ERROR if any parameter is invalid (such as an invalid - method), or Z_VERSION_ERROR if the zlib library version (zlib_version) is - incompatible with the version assumed by the caller (ZLIB_VERSION). msg is - set to null if there is no error message. deflateInit2 does not perform any - compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the compression dictionary from the given byte sequence - without producing any compressed output. When using the zlib format, this - function must be called immediately after deflateInit, deflateInit2 or - deflateReset, and before any call of deflate. When doing raw deflate, this - function must be called either before any call of deflate, or immediately - after the completion of a deflate block, i.e. after all input has been - consumed and all output has been delivered when using any of the flush - options Z_BLOCK, Z_PARTIAL_FLUSH, Z_SYNC_FLUSH, or Z_FULL_FLUSH. The - compressor and decompressor must use exactly the same dictionary (see - inflateSetDictionary). - - The dictionary should consist of strings (byte sequences) that are likely - to be encountered later in the data to be compressed, with the most commonly - used strings preferably put towards the end of the dictionary. Using a - dictionary is most useful when the data to be compressed is short and can be - predicted with good accuracy; the data can then be compressed better than - with the default empty dictionary. - - Depending on the size of the compression data structures selected by - deflateInit or deflateInit2, a part of the dictionary may in effect be - discarded, for example if the dictionary is larger than the window size - provided in deflateInit or deflateInit2. Thus the strings most likely to be - useful should be put at the end of the dictionary, not at the front. In - addition, the current implementation of deflate will use at most the window - size minus 262 bytes of the provided dictionary. - - Upon return of this function, strm->adler is set to the Adler-32 value - of the dictionary; the decompressor may later use this value to determine - which dictionary has been used by the compressor. (The Adler-32 value - applies to the whole dictionary even if only a subset of the dictionary is - actually used by the compressor.) If a raw deflate was requested, then the - Adler-32 value is not computed and strm->adler is not set. - - deflateSetDictionary returns Z_OK if success, or Z_STREAM_ERROR if a - parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is - inconsistent (for example if deflate has already been called for this stream - or if not at a block boundary for raw deflate). deflateSetDictionary does - not perform any compression: this will be done by deflate(). -*/ - -ZEXTERN int ZEXPORT deflateGetDictionary OF((z_streamp strm, - Bytef *dictionary, - uInt *dictLength)); -/* - Returns the sliding dictionary being maintained by deflate. dictLength is - set to the number of bytes in the dictionary, and that many bytes are copied - to dictionary. dictionary must have enough space, where 32768 bytes is - always enough. If deflateGetDictionary() is called with dictionary equal to - Z_NULL, then only the dictionary length is returned, and nothing is copied. - Similary, if dictLength is Z_NULL, then it is not set. - - deflateGetDictionary() may return a length less than the window size, even - when more than the window size in input has been provided. It may return up - to 258 bytes less in that case, due to how zlib's implementation of deflate - manages the sliding window and lookahead for matches, where matches can be - up to 258 bytes long. If the application needs the last window-size bytes of - input, then that would need to be saved by the application outside of zlib. - - deflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the - stream state is inconsistent. -*/ - -ZEXTERN int ZEXPORT deflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when several compression strategies will be - tried, for example when there are several ways of pre-processing the input - data with a filter. The streams that will be discarded should then be freed - by calling deflateEnd. Note that deflateCopy duplicates the internal - compression state which can be quite large, so this strategy is slow and can - consume lots of memory. - - deflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being Z_NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT deflateReset OF((z_streamp strm)); -/* - This function is equivalent to deflateEnd followed by deflateInit, but - does not free and reallocate the internal compression state. The stream - will leave the compression level and any other attributes that may have been - set unchanged. - - deflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL). -*/ - -ZEXTERN int ZEXPORT deflateParams OF((z_streamp strm, - int level, - int strategy)); -/* - Dynamically update the compression level and compression strategy. The - interpretation of level and strategy is as in deflateInit2(). This can be - used to switch between compression and straight copy of the input data, or - to switch to a different kind of input data requiring a different strategy. - If the compression approach (which is a function of the level) or the - strategy is changed, and if any input has been consumed in a previous - deflate() call, then the input available so far is compressed with the old - level and strategy using deflate(strm, Z_BLOCK). There are three approaches - for the compression levels 0, 1..3, and 4..9 respectively. The new level - and strategy will take effect at the next call of deflate(). - - If a deflate(strm, Z_BLOCK) is performed by deflateParams(), and it does - not have enough output space to complete, then the parameter change will not - take effect. In this case, deflateParams() can be called again with the - same parameters and more output space to try again. - - In order to assure a change in the parameters on the first try, the - deflate stream should be flushed using deflate() with Z_BLOCK or other flush - request until strm.avail_out is not zero, before calling deflateParams(). - Then no more input data should be provided before the deflateParams() call. - If this is done, the old level and strategy will be applied to the data - compressed before deflateParams(), and the new level and strategy will be - applied to the the data compressed after deflateParams(). - - deflateParams returns Z_OK on success, Z_STREAM_ERROR if the source stream - state was inconsistent or if a parameter was invalid, or Z_BUF_ERROR if - there was not enough output space to complete the compression of the - available input data before a change in the strategy or approach. Note that - in the case of a Z_BUF_ERROR, the parameters are not changed. A return - value of Z_BUF_ERROR is not fatal, in which case deflateParams() can be - retried with more output space. -*/ - -ZEXTERN int ZEXPORT deflateTune OF((z_streamp strm, - int good_length, - int max_lazy, - int nice_length, - int max_chain)); -/* - Fine tune deflate's internal compression parameters. This should only be - used by someone who understands the algorithm used by zlib's deflate for - searching for the best matching string, and even then only by the most - fanatic optimizer trying to squeeze out the last compressed bit for their - specific input data. Read the deflate.c source code for the meaning of the - max_lazy, good_length, nice_length, and max_chain parameters. - - deflateTune() can be called after deflateInit() or deflateInit2(), and - returns Z_OK on success, or Z_STREAM_ERROR for an invalid deflate stream. - */ - -ZEXTERN uLong ZEXPORT deflateBound OF((z_streamp strm, - uLong sourceLen)); -/* - deflateBound() returns an upper bound on the compressed size after - deflation of sourceLen bytes. It must be called after deflateInit() or - deflateInit2(), and after deflateSetHeader(), if used. This would be used - to allocate an output buffer for deflation in a single pass, and so would be - called before deflate(). If that first deflate() call is provided the - sourceLen input bytes, an output buffer allocated to the size returned by - deflateBound(), and the flush value Z_FINISH, then deflate() is guaranteed - to return Z_STREAM_END. Note that it is possible for the compressed size to - be larger than the value returned by deflateBound() if flush options other - than Z_FINISH or Z_NO_FLUSH are used. -*/ - -ZEXTERN int ZEXPORT deflatePending OF((z_streamp strm, - unsigned *pending, - int *bits)); -/* - deflatePending() returns the number of bytes and bits of output that have - been generated, but not yet provided in the available output. The bytes not - provided would be due to the available output space having being consumed. - The number of bits of output not provided are between 0 and 7, where they - await more bits to join them in order to fill out a full byte. If pending - or bits are Z_NULL, then those values are not set. - - deflatePending returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. - */ - -ZEXTERN int ZEXPORT deflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - deflatePrime() inserts bits in the deflate output stream. The intent - is that this function is used to start off the deflate output with the bits - leftover from a previous deflate stream when appending to it. As such, this - function can only be used for raw deflate, and must be used before the first - deflate() call after a deflateInit2() or deflateReset(). bits must be less - than or equal to 16, and that many of the least significant bits of value - will be inserted in the output. - - deflatePrime returns Z_OK if success, Z_BUF_ERROR if there was not enough - room in the internal buffer to insert the bits, or Z_STREAM_ERROR if the - source stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT deflateSetHeader OF((z_streamp strm, - gz_headerp head)); -/* - deflateSetHeader() provides gzip header information for when a gzip - stream is requested by deflateInit2(). deflateSetHeader() may be called - after deflateInit2() or deflateReset() and before the first call of - deflate(). The text, time, os, extra field, name, and comment information - in the provided gz_header structure are written to the gzip header (xflag is - ignored -- the extra flags are set according to the compression level). The - caller must assure that, if not Z_NULL, name and comment are terminated with - a zero byte, and that if extra is not Z_NULL, that extra_len bytes are - available there. If hcrc is true, a gzip header crc is included. Note that - the current versions of the command-line version of gzip (up through version - 1.3.x) do not support header crc's, and will report that it is a "multi-part - gzip file" and give up. - - If deflateSetHeader is not used, the default gzip header has text false, - the time set to zero, and os set to 255, with no extra, name, or comment - fields. The gzip header is returned to the default state by deflateReset(). - - deflateSetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateInit2 OF((z_streamp strm, - int windowBits)); - - This is another version of inflateInit with an extra parameter. The - fields next_in, avail_in, zalloc, zfree and opaque must be initialized - before by the caller. - - The windowBits parameter is the base two logarithm of the maximum window - size (the size of the history buffer). It should be in the range 8..15 for - this version of the library. The default value is 15 if inflateInit is used - instead. windowBits must be greater than or equal to the windowBits value - provided to deflateInit2() while compressing, or it must be equal to 15 if - deflateInit2() was not used. If a compressed stream with a larger window - size is given as input, inflate() will return with the error code - Z_DATA_ERROR instead of trying to allocate a larger window. - - windowBits can also be zero to request that inflate use the window size in - the zlib header of the compressed stream. - - windowBits can also be -8..-15 for raw inflate. In this case, -windowBits - determines the window size. inflate() will then process raw deflate data, - not looking for a zlib or gzip header, not generating a check value, and not - looking for any check values for comparison at the end of the stream. This - is for use with other formats that use the deflate compressed data format - such as zip. Those formats provide their own check values. If a custom - format is developed using the raw deflate format for compressed data, it is - recommended that a check value such as an Adler-32 or a CRC-32 be applied to - the uncompressed data as is done in the zlib, gzip, and zip formats. For - most applications, the zlib format should be used as is. Note that comments - above on the use in deflateInit2() applies to the magnitude of windowBits. - - windowBits can also be greater than 15 for optional gzip decoding. Add - 32 to windowBits to enable zlib and gzip decoding with automatic header - detection, or add 16 to decode only the gzip format (the zlib format will - return a Z_DATA_ERROR). If a gzip stream is being decoded, strm->adler is a - CRC-32 instead of an Adler-32. Unlike the gunzip utility and gzread() (see - below), inflate() will not automatically decode concatenated gzip streams. - inflate() will return Z_STREAM_END at the end of the gzip stream. The state - would need to be reset to continue decoding a subsequent gzip stream. - - inflateInit2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_VERSION_ERROR if the zlib library version is incompatible with the - version assumed by the caller, or Z_STREAM_ERROR if the parameters are - invalid, such as a null pointer to the structure. msg is set to null if - there is no error message. inflateInit2 does not perform any decompression - apart from possibly reading the zlib header if present: actual decompression - will be done by inflate(). (So next_in and avail_in may be modified, but - next_out and avail_out are unused and unchanged.) The current implementation - of inflateInit2() does not process any header information -- that is - deferred until inflate() is called. -*/ - -ZEXTERN int ZEXPORT inflateSetDictionary OF((z_streamp strm, - const Bytef *dictionary, - uInt dictLength)); -/* - Initializes the decompression dictionary from the given uncompressed byte - sequence. This function must be called immediately after a call of inflate, - if that call returned Z_NEED_DICT. The dictionary chosen by the compressor - can be determined from the Adler-32 value returned by that call of inflate. - The compressor and decompressor must use exactly the same dictionary (see - deflateSetDictionary). For raw inflate, this function can be called at any - time to set the dictionary. If the provided dictionary is smaller than the - window and there is already data in the window, then the provided dictionary - will amend what's there. The application must insure that the dictionary - that was used for compression is provided. - - inflateSetDictionary returns Z_OK if success, Z_STREAM_ERROR if a - parameter is invalid (e.g. dictionary being Z_NULL) or the stream state is - inconsistent, Z_DATA_ERROR if the given dictionary doesn't match the - expected one (incorrect Adler-32 value). inflateSetDictionary does not - perform any decompression: this will be done by subsequent calls of - inflate(). -*/ - -ZEXTERN int ZEXPORT inflateGetDictionary OF((z_streamp strm, - Bytef *dictionary, - uInt *dictLength)); -/* - Returns the sliding dictionary being maintained by inflate. dictLength is - set to the number of bytes in the dictionary, and that many bytes are copied - to dictionary. dictionary must have enough space, where 32768 bytes is - always enough. If inflateGetDictionary() is called with dictionary equal to - Z_NULL, then only the dictionary length is returned, and nothing is copied. - Similary, if dictLength is Z_NULL, then it is not set. - - inflateGetDictionary returns Z_OK on success, or Z_STREAM_ERROR if the - stream state is inconsistent. -*/ - -ZEXTERN int ZEXPORT inflateSync OF((z_streamp strm)); -/* - Skips invalid compressed data until a possible full flush point (see above - for the description of deflate with Z_FULL_FLUSH) can be found, or until all - available input is skipped. No output is provided. - - inflateSync searches for a 00 00 FF FF pattern in the compressed data. - All full flush points have this pattern, but not all occurrences of this - pattern are full flush points. - - inflateSync returns Z_OK if a possible full flush point has been found, - Z_BUF_ERROR if no more input was provided, Z_DATA_ERROR if no flush point - has been found, or Z_STREAM_ERROR if the stream structure was inconsistent. - In the success case, the application may save the current current value of - total_in which indicates where valid compressed data was found. In the - error case, the application may repeatedly call inflateSync, providing more - input each time, until success or end of the input data. -*/ - -ZEXTERN int ZEXPORT inflateCopy OF((z_streamp dest, - z_streamp source)); -/* - Sets the destination stream as a complete copy of the source stream. - - This function can be useful when randomly accessing a large stream. The - first pass through the stream can periodically record the inflate state, - allowing restarting inflate at those points when randomly accessing the - stream. - - inflateCopy returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_STREAM_ERROR if the source stream state was inconsistent - (such as zalloc being Z_NULL). msg is left unchanged in both source and - destination. -*/ - -ZEXTERN int ZEXPORT inflateReset OF((z_streamp strm)); -/* - This function is equivalent to inflateEnd followed by inflateInit, - but does not free and reallocate the internal decompression state. The - stream will keep attributes that may have been set by inflateInit2. - - inflateReset returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL). -*/ - -ZEXTERN int ZEXPORT inflateReset2 OF((z_streamp strm, - int windowBits)); -/* - This function is the same as inflateReset, but it also permits changing - the wrap and window size requests. The windowBits parameter is interpreted - the same as it is for inflateInit2. If the window size is changed, then the - memory allocated for the window is freed, and the window will be reallocated - by inflate() if needed. - - inflateReset2 returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent (such as zalloc or state being Z_NULL), or if - the windowBits parameter is invalid. -*/ - -ZEXTERN int ZEXPORT inflatePrime OF((z_streamp strm, - int bits, - int value)); -/* - This function inserts bits in the inflate input stream. The intent is - that this function is used to start inflating at a bit position in the - middle of a byte. The provided bits will be used before any bytes are used - from next_in. This function should only be used with raw inflate, and - should be used before the first inflate() call after inflateInit2() or - inflateReset(). bits must be less than or equal to 16, and that many of the - least significant bits of value will be inserted in the input. - - If bits is negative, then the input stream bit buffer is emptied. Then - inflatePrime() can be called again to put bits in the buffer. This is used - to clear out bits leftover after feeding inflate a block description prior - to feeding inflate codes. - - inflatePrime returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -ZEXTERN long ZEXPORT inflateMark OF((z_streamp strm)); -/* - This function returns two values, one in the lower 16 bits of the return - value, and the other in the remaining upper bits, obtained by shifting the - return value down 16 bits. If the upper value is -1 and the lower value is - zero, then inflate() is currently decoding information outside of a block. - If the upper value is -1 and the lower value is non-zero, then inflate is in - the middle of a stored block, with the lower value equaling the number of - bytes from the input remaining to copy. If the upper value is not -1, then - it is the number of bits back from the current bit position in the input of - the code (literal or length/distance pair) currently being processed. In - that case the lower value is the number of bytes already emitted for that - code. - - A code is being processed if inflate is waiting for more input to complete - decoding of the code, or if it has completed decoding but is waiting for - more output space to write the literal or match data. - - inflateMark() is used to mark locations in the input data for random - access, which may be at bit positions, and to note those cases where the - output of a code may span boundaries of random access blocks. The current - location in the input stream can be determined from avail_in and data_type - as noted in the description for the Z_BLOCK flush parameter for inflate. - - inflateMark returns the value noted above, or -65536 if the provided - source stream state was inconsistent. -*/ - -ZEXTERN int ZEXPORT inflateGetHeader OF((z_streamp strm, - gz_headerp head)); -/* - inflateGetHeader() requests that gzip header information be stored in the - provided gz_header structure. inflateGetHeader() may be called after - inflateInit2() or inflateReset(), and before the first call of inflate(). - As inflate() processes the gzip stream, head->done is zero until the header - is completed, at which time head->done is set to one. If a zlib stream is - being decoded, then head->done is set to -1 to indicate that there will be - no gzip header information forthcoming. Note that Z_BLOCK or Z_TREES can be - used to force inflate() to return immediately after header processing is - complete and before any actual data is decompressed. - - The text, time, xflags, and os fields are filled in with the gzip header - contents. hcrc is set to true if there is a header CRC. (The header CRC - was valid if done is set to one.) If extra is not Z_NULL, then extra_max - contains the maximum number of bytes to write to extra. Once done is true, - extra_len contains the actual extra field length, and extra contains the - extra field, or that field truncated if extra_max is less than extra_len. - If name is not Z_NULL, then up to name_max characters are written there, - terminated with a zero unless the length is greater than name_max. If - comment is not Z_NULL, then up to comm_max characters are written there, - terminated with a zero unless the length is greater than comm_max. When any - of extra, name, or comment are not Z_NULL and the respective field is not - present in the header, then that field is set to Z_NULL to signal its - absence. This allows the use of deflateSetHeader() with the returned - structure to duplicate the header. However if those fields are set to - allocated memory, then the application will need to save those pointers - elsewhere so that they can be eventually freed. - - If inflateGetHeader is not used, then the header information is simply - discarded. The header is always checked for validity, including the header - CRC if present. inflateReset() will reset the process to discard the header - information. The application would need to call inflateGetHeader() again to - retrieve the header from the next gzip stream. - - inflateGetHeader returns Z_OK if success, or Z_STREAM_ERROR if the source - stream state was inconsistent. -*/ - -/* -ZEXTERN int ZEXPORT inflateBackInit OF((z_streamp strm, int windowBits, - unsigned char FAR *window)); - - Initialize the internal stream state for decompression using inflateBack() - calls. The fields zalloc, zfree and opaque in strm must be initialized - before the call. If zalloc and zfree are Z_NULL, then the default library- - derived memory allocation routines are used. windowBits is the base two - logarithm of the window size, in the range 8..15. window is a caller - supplied buffer of that size. Except for special applications where it is - assured that deflate was used with small window sizes, windowBits must be 15 - and a 32K byte window must be supplied to be able to decompress general - deflate streams. - - See inflateBack() for the usage of these routines. - - inflateBackInit will return Z_OK on success, Z_STREAM_ERROR if any of - the parameters are invalid, Z_MEM_ERROR if the internal state could not be - allocated, or Z_VERSION_ERROR if the version of the library does not match - the version of the header file. -*/ - -typedef unsigned(*in_func) OF((void FAR *, - z_const unsigned char FAR *FAR *)); -typedef int (*out_func) OF((void FAR *, unsigned char FAR *, unsigned)); - -ZEXTERN int ZEXPORT inflateBack OF((z_streamp strm, - in_func in, void FAR *in_desc, - out_func out, void FAR *out_desc)); -/* - inflateBack() does a raw inflate with a single call using a call-back - interface for input and output. This is potentially more efficient than - inflate() for file i/o applications, in that it avoids copying between the - output and the sliding window by simply making the window itself the output - buffer. inflate() can be faster on modern CPUs when used with large - buffers. inflateBack() trusts the application to not change the output - buffer passed by the output function, at least until inflateBack() returns. - - inflateBackInit() must be called first to allocate the internal state - and to initialize the state with the user-provided window buffer. - inflateBack() may then be used multiple times to inflate a complete, raw - deflate stream with each call. inflateBackEnd() is then called to free the - allocated state. - - A raw deflate stream is one with no zlib or gzip header or trailer. - This routine would normally be used in a utility that reads zip or gzip - files and writes out uncompressed files. The utility would decode the - header and process the trailer on its own, hence this routine expects only - the raw deflate stream to decompress. This is different from the default - behavior of inflate(), which expects a zlib header and trailer around the - deflate stream. - - inflateBack() uses two subroutines supplied by the caller that are then - called by inflateBack() for input and output. inflateBack() calls those - routines until it reads a complete deflate stream and writes out all of the - uncompressed data, or until it encounters an error. The function's - parameters and return types are defined above in the in_func and out_func - typedefs. inflateBack() will call in(in_desc, &buf) which should return the - number of bytes of provided input, and a pointer to that input in buf. If - there is no input available, in() must return zero -- buf is ignored in that - case -- and inflateBack() will return a buffer error. inflateBack() will - call out(out_desc, buf, len) to write the uncompressed data buf[0..len-1]. - out() should return zero on success, or non-zero on failure. If out() - returns non-zero, inflateBack() will return with an error. Neither in() nor - out() are permitted to change the contents of the window provided to - inflateBackInit(), which is also the buffer that out() uses to write from. - The length written by out() will be at most the window size. Any non-zero - amount of input may be provided by in(). - - For convenience, inflateBack() can be provided input on the first call by - setting strm->next_in and strm->avail_in. If that input is exhausted, then - in() will be called. Therefore strm->next_in must be initialized before - calling inflateBack(). If strm->next_in is Z_NULL, then in() will be called - immediately for input. If strm->next_in is not Z_NULL, then strm->avail_in - must also be initialized, and then if strm->avail_in is not zero, input will - initially be taken from strm->next_in[0 .. strm->avail_in - 1]. - - The in_desc and out_desc parameters of inflateBack() is passed as the - first parameter of in() and out() respectively when they are called. These - descriptors can be optionally used to pass any information that the caller- - supplied in() and out() functions need to do their job. - - On return, inflateBack() will set strm->next_in and strm->avail_in to - pass back any unused input that was provided by the last in() call. The - return values of inflateBack() can be Z_STREAM_END on success, Z_BUF_ERROR - if in() or out() returned an error, Z_DATA_ERROR if there was a format error - in the deflate stream (in which case strm->msg is set to indicate the nature - of the error), or Z_STREAM_ERROR if the stream was not properly initialized. - In the case of Z_BUF_ERROR, an input or output error can be distinguished - using strm->next_in which will be Z_NULL only if in() returned an error. If - strm->next_in is not Z_NULL, then the Z_BUF_ERROR was due to out() returning - non-zero. (in() will always be called before out(), so strm->next_in is - assured to be defined if out() returns non-zero.) Note that inflateBack() - cannot return Z_OK. -*/ - -ZEXTERN int ZEXPORT inflateBackEnd OF((z_streamp strm)); -/* - All memory allocated by inflateBackInit() is freed. - - inflateBackEnd() returns Z_OK on success, or Z_STREAM_ERROR if the stream - state was inconsistent. -*/ - -ZEXTERN uLong ZEXPORT zlibCompileFlags OF((void)); -/* Return flags indicating compile-time options. - - Type sizes, two bits each, 00 = 16 bits, 01 = 32, 10 = 64, 11 = other: - 1.0: size of uInt - 3.2: size of uLong - 5.4: size of voidpf (pointer) - 7.6: size of z_off_t - - Compiler, assembler, and debug options: - 8: ZLIB_DEBUG - 9: ASMV or ASMINF -- use ASM code - 10: ZLIB_WINAPI -- exported functions use the WINAPI calling convention - 11: 0 (reserved) - - One-time table building (smaller code, but not thread-safe if true): - 12: BUILDFIXED -- build static block decoding tables when needed - 13: DYNAMIC_CRC_TABLE -- build CRC calculation tables when needed - 14,15: 0 (reserved) - - Library content (indicates missing functionality): - 16: NO_GZCOMPRESS -- gz* functions cannot compress (to avoid linking - deflate code when not needed) - 17: NO_GZIP -- deflate can't write gzip streams, and inflate can't detect - and decode gzip streams (to avoid linking crc code) - 18-19: 0 (reserved) - - Operation variations (changes in library functionality): - 20: PKZIP_BUG_WORKAROUND -- slightly more permissive inflate - 21: FASTEST -- deflate algorithm with only one, lowest compression level - 22,23: 0 (reserved) - - The sprintf variant used by gzprintf (zero is best): - 24: 0 = vs*, 1 = s* -- 1 means limited to 20 arguments after the format - 25: 0 = *nprintf, 1 = *printf -- 1 means gzprintf() not secure! - 26: 0 = returns value, 1 = void -- 1 means inferred string length returned - - Remainder: - 27-31: 0 (reserved) - */ - -#ifndef Z_SOLO - -/* utility functions */ - -/* - The following utility functions are implemented on top of the basic - stream-oriented functions. To simplify the interface, some default options - are assumed (compression level and memory usage, standard memory allocation - functions). The source code of these utility functions can be modified if - you need special options. -*/ - -ZEXTERN int ZEXPORT compress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Compresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total size - of the destination buffer, which must be at least the value returned by - compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed data. compress() is equivalent to compress2() with a level - parameter of Z_DEFAULT_COMPRESSION. - - compress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer. -*/ - -ZEXTERN int ZEXPORT compress2 OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen, - int level)); -/* - Compresses the source buffer into the destination buffer. The level - parameter has the same meaning as in deflateInit. sourceLen is the byte - length of the source buffer. Upon entry, destLen is the total size of the - destination buffer, which must be at least the value returned by - compressBound(sourceLen). Upon exit, destLen is the actual size of the - compressed data. - - compress2 returns Z_OK if success, Z_MEM_ERROR if there was not enough - memory, Z_BUF_ERROR if there was not enough room in the output buffer, - Z_STREAM_ERROR if the level parameter is invalid. -*/ - -ZEXTERN uLong ZEXPORT compressBound OF((uLong sourceLen)); -/* - compressBound() returns an upper bound on the compressed size after - compress() or compress2() on sourceLen bytes. It would be used before a - compress() or compress2() call to allocate the destination buffer. -*/ - -ZEXTERN int ZEXPORT uncompress OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong sourceLen)); -/* - Decompresses the source buffer into the destination buffer. sourceLen is - the byte length of the source buffer. Upon entry, destLen is the total size - of the destination buffer, which must be large enough to hold the entire - uncompressed data. (The size of the uncompressed data must have been saved - previously by the compressor and transmitted to the decompressor by some - mechanism outside the scope of this compression library.) Upon exit, destLen - is the actual size of the uncompressed data. - - uncompress returns Z_OK if success, Z_MEM_ERROR if there was not - enough memory, Z_BUF_ERROR if there was not enough room in the output - buffer, or Z_DATA_ERROR if the input data was corrupted or incomplete. In - the case where there is not enough room, uncompress() will fill the output - buffer with the uncompressed data up to that point. -*/ - -ZEXTERN int ZEXPORT uncompress2 OF((Bytef *dest, uLongf *destLen, - const Bytef *source, uLong *sourceLen)); -/* - Same as uncompress, except that sourceLen is a pointer, where the - length of the source is *sourceLen. On return, *sourceLen is the number of - source bytes consumed. -*/ - -/* gzip file access functions */ - -/* - This library supports reading and writing files in gzip (.gz) format with - an interface similar to that of stdio, using the functions that start with - "gz". The gzip format is different from the zlib format. gzip is a gzip - wrapper, documented in RFC 1952, wrapped around a deflate stream. -*/ - -typedef struct gzFile_s *gzFile; /* semi-opaque gzip file descriptor */ - -/* -ZEXTERN gzFile ZEXPORT gzopen OF((const char *path, const char *mode)); - - Opens a gzip (.gz) file for reading or writing. The mode parameter is as - in fopen ("rb" or "wb") but can also include a compression level ("wb9") or - a strategy: 'f' for filtered data as in "wb6f", 'h' for Huffman-only - compression as in "wb1h", 'R' for run-length encoding as in "wb1R", or 'F' - for fixed code compression as in "wb9F". (See the description of - deflateInit2 for more information about the strategy parameter.) 'T' will - request transparent writing or appending with no compression and not using - the gzip format. - - "a" can be used instead of "w" to request that the gzip stream that will - be written be appended to the file. "+" will result in an error, since - reading and writing to the same gzip file is not supported. The addition of - "x" when writing will create the file exclusively, which fails if the file - already exists. On systems that support it, the addition of "e" when - reading or writing will set the flag to close the file on an execve() call. - - These functions, as well as gzip, will read and decode a sequence of gzip - streams in a file. The append function of gzopen() can be used to create - such a file. (Also see gzflush() for another way to do this.) When - appending, gzopen does not test whether the file begins with a gzip stream, - nor does it look for the end of the gzip streams to begin appending. gzopen - will simply append a gzip stream to the existing file. - - gzopen can be used to read a file which is not in gzip format; in this - case gzread will directly read from the file without decompression. When - reading, this will be detected automatically by looking for the magic two- - byte gzip header. - - gzopen returns NULL if the file could not be opened, if there was - insufficient memory to allocate the gzFile state, or if an invalid mode was - specified (an 'r', 'w', or 'a' was not provided, or '+' was provided). - errno can be checked to determine if the reason gzopen failed was that the - file could not be opened. -*/ - -ZEXTERN gzFile ZEXPORT gzdopen OF((int fd, const char *mode)); -/* - gzdopen associates a gzFile with the file descriptor fd. File descriptors - are obtained from calls like open, dup, creat, pipe or fileno (if the file - has been previously opened with fopen). The mode parameter is as in gzopen. - - The next call of gzclose on the returned gzFile will also close the file - descriptor fd, just like fclose(fdopen(fd, mode)) closes the file descriptor - fd. If you want to keep fd open, use fd = dup(fd_keep); gz = gzdopen(fd, - mode);. The duplicated descriptor should be saved to avoid a leak, since - gzdopen does not close fd if it fails. If you are using fileno() to get the - file descriptor from a FILE *, then you will have to use dup() to avoid - double-close()ing the file descriptor. Both gzclose() and fclose() will - close the associated file descriptor, so they need to have different file - descriptors. - - gzdopen returns NULL if there was insufficient memory to allocate the - gzFile state, if an invalid mode was specified (an 'r', 'w', or 'a' was not - provided, or '+' was provided), or if fd is -1. The file descriptor is not - used until the next gz* read, write, seek, or close operation, so gzdopen - will not detect if fd is invalid (unless fd is -1). -*/ - -ZEXTERN int ZEXPORT gzbuffer OF((gzFile file, unsigned size)); -/* - Set the internal buffer size used by this library's functions. The - default buffer size is 8192 bytes. This function must be called after - gzopen() or gzdopen(), and before any other calls that read or write the - file. The buffer memory allocation is always deferred to the first read or - write. Three times that size in buffer space is allocated. A larger buffer - size of, for example, 64K or 128K bytes will noticeably increase the speed - of decompression (reading). - - The new buffer size also affects the maximum length for gzprintf(). - - gzbuffer() returns 0 on success, or -1 on failure, such as being called - too late. -*/ - -ZEXTERN int ZEXPORT gzsetparams OF((gzFile file, int level, int strategy)); -/* - Dynamically update the compression level or strategy. See the description - of deflateInit2 for the meaning of these parameters. Previously provided - data is flushed before the parameter change. - - gzsetparams returns Z_OK if success, Z_STREAM_ERROR if the file was not - opened for writing, Z_ERRNO if there is an error writing the flushed data, - or Z_MEM_ERROR if there is a memory allocation error. -*/ - -ZEXTERN int ZEXPORT gzread OF((gzFile file, voidp buf, unsigned len)); -/* - Reads the given number of uncompressed bytes from the compressed file. If - the input file is not in gzip format, gzread copies the given number of - bytes into the buffer directly from the file. - - After reaching the end of a gzip stream in the input, gzread will continue - to read, looking for another gzip stream. Any number of gzip streams may be - concatenated in the input file, and will all be decompressed by gzread(). - If something other than a gzip stream is encountered after a gzip stream, - that remaining trailing garbage is ignored (and no error is returned). - - gzread can be used to read a gzip file that is being concurrently written. - Upon reaching the end of the input, gzread will return with the available - data. If the error code returned by gzerror is Z_OK or Z_BUF_ERROR, then - gzclearerr can be used to clear the end of file indicator in order to permit - gzread to be tried again. Z_OK indicates that a gzip stream was completed - on the last gzread. Z_BUF_ERROR indicates that the input file ended in the - middle of a gzip stream. Note that gzread does not return -1 in the event - of an incomplete gzip stream. This error is deferred until gzclose(), which - will return Z_BUF_ERROR if the last gzread ended in the middle of a gzip - stream. Alternatively, gzerror can be used before gzclose to detect this - case. - - gzread returns the number of uncompressed bytes actually read, less than - len for end of file, or -1 for error. If len is too large to fit in an int, - then nothing is read, -1 is returned, and the error state is set to - Z_STREAM_ERROR. -*/ - -ZEXTERN z_size_t ZEXPORT gzfread OF((voidp buf, z_size_t size, z_size_t nitems, - gzFile file)); -/* - Read up to nitems items of size size from file to buf, otherwise operating - as gzread() does. This duplicates the interface of stdio's fread(), with - size_t request and return types. If the library defines size_t, then - z_size_t is identical to size_t. If not, then z_size_t is an unsigned - integer type that can contain a pointer. - - gzfread() returns the number of full items read of size size, or zero if - the end of the file was reached and a full item could not be read, or if - there was an error. gzerror() must be consulted if zero is returned in - order to determine if there was an error. If the multiplication of size and - nitems overflows, i.e. the product does not fit in a z_size_t, then nothing - is read, zero is returned, and the error state is set to Z_STREAM_ERROR. - - In the event that the end of file is reached and only a partial item is - available at the end, i.e. the remaining uncompressed data length is not a - multiple of size, then the final partial item is nevetheless read into buf - and the end-of-file flag is set. The length of the partial item read is not - provided, but could be inferred from the result of gztell(). This behavior - is the same as the behavior of fread() implementations in common libraries, - but it prevents the direct use of gzfread() to read a concurrently written - file, reseting and retrying on end-of-file, when size is not 1. -*/ - -ZEXTERN int ZEXPORT gzwrite OF((gzFile file, - voidpc buf, unsigned len)); -/* - Writes the given number of uncompressed bytes into the compressed file. - gzwrite returns the number of uncompressed bytes written or 0 in case of - error. -*/ - -ZEXTERN z_size_t ZEXPORT gzfwrite OF((voidpc buf, z_size_t size, - z_size_t nitems, gzFile file)); -/* - gzfwrite() writes nitems items of size size from buf to file, duplicating - the interface of stdio's fwrite(), with size_t request and return types. If - the library defines size_t, then z_size_t is identical to size_t. If not, - then z_size_t is an unsigned integer type that can contain a pointer. - - gzfwrite() returns the number of full items written of size size, or zero - if there was an error. If the multiplication of size and nitems overflows, - i.e. the product does not fit in a z_size_t, then nothing is written, zero - is returned, and the error state is set to Z_STREAM_ERROR. -*/ - -ZEXTERN int ZEXPORTVA gzprintf Z_ARG((gzFile file, const char *format, ...)); -/* - Converts, formats, and writes the arguments to the compressed file under - control of the format string, as in fprintf. gzprintf returns the number of - uncompressed bytes actually written, or a negative zlib error code in case - of error. The number of uncompressed bytes written is limited to 8191, or - one less than the buffer size given to gzbuffer(). The caller should assure - that this limit is not exceeded. If it is exceeded, then gzprintf() will - return an error (0) with nothing written. In this case, there may also be a - buffer overflow with unpredictable consequences, which is possible only if - zlib was compiled with the insecure functions sprintf() or vsprintf() - because the secure snprintf() or vsnprintf() functions were not available. - This can be determined using zlibCompileFlags(). -*/ - -ZEXTERN int ZEXPORT gzputs OF((gzFile file, const char *s)); -/* - Writes the given null-terminated string to the compressed file, excluding - the terminating null character. - - gzputs returns the number of characters written, or -1 in case of error. -*/ - -ZEXTERN char *ZEXPORT gzgets OF((gzFile file, char *buf, int len)); -/* - Reads bytes from the compressed file until len-1 characters are read, or a - newline character is read and transferred to buf, or an end-of-file - condition is encountered. If any characters are read or if len == 1, the - string is terminated with a null character. If no characters are read due - to an end-of-file or len < 1, then the buffer is left untouched. - - gzgets returns buf which is a null-terminated string, or it returns NULL - for end-of-file or in case of error. If there was an error, the contents at - buf are indeterminate. -*/ - -ZEXTERN int ZEXPORT gzputc OF((gzFile file, int c)); -/* - Writes c, converted to an unsigned char, into the compressed file. gzputc - returns the value that was written, or -1 in case of error. -*/ - -ZEXTERN int ZEXPORT gzgetc OF((gzFile file)); -/* - Reads one byte from the compressed file. gzgetc returns this byte or -1 - in case of end of file or error. This is implemented as a macro for speed. - As such, it does not do all of the checking the other functions do. I.e. - it does not check to see if file is NULL, nor whether the structure file - points to has been clobbered or not. -*/ - -ZEXTERN int ZEXPORT gzungetc OF((int c, gzFile file)); -/* - Push one character back onto the stream to be read as the first character - on the next read. At least one character of push-back is allowed. - gzungetc() returns the character pushed, or -1 on failure. gzungetc() will - fail if c is -1, and may fail if a character has been pushed but not read - yet. If gzungetc is used immediately after gzopen or gzdopen, at least the - output buffer size of pushed characters is allowed. (See gzbuffer above.) - The pushed character will be discarded if the stream is repositioned with - gzseek() or gzrewind(). -*/ - -ZEXTERN int ZEXPORT gzflush OF((gzFile file, int flush)); -/* - Flushes all pending output into the compressed file. The parameter flush - is as in the deflate() function. The return value is the zlib error number - (see function gzerror below). gzflush is only permitted when writing. - - If the flush parameter is Z_FINISH, the remaining data is written and the - gzip stream is completed in the output. If gzwrite() is called again, a new - gzip stream will be started in the output. gzread() is able to read such - concatenated gzip streams. - - gzflush should be called only when strictly necessary because it will - degrade compression if called too often. -*/ - -/* -ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile file, - z_off_t offset, int whence)); - - Sets the starting position for the next gzread or gzwrite on the given - compressed file. The offset represents a number of bytes in the - uncompressed data stream. The whence parameter is defined as in lseek(2); - the value SEEK_END is not supported. - - If the file is opened for reading, this function is emulated but can be - extremely slow. If the file is opened for writing, only forward seeks are - supported; gzseek then compresses a sequence of zeroes up to the new - starting position. - - gzseek returns the resulting offset location as measured in bytes from - the beginning of the uncompressed stream, or -1 in case of error, in - particular if the file is opened for writing and the new starting position - would be before the current position. -*/ - -ZEXTERN int ZEXPORT gzrewind OF((gzFile file)); -/* - Rewinds the given file. This function is supported only for reading. - - gzrewind(file) is equivalent to (int)gzseek(file, 0L, SEEK_SET) -*/ - -/* -ZEXTERN z_off_t ZEXPORT gztell OF((gzFile file)); - - Returns the starting position for the next gzread or gzwrite on the given - compressed file. This position represents a number of bytes in the - uncompressed data stream, and is zero when starting, even if appending or - reading a gzip stream from the middle of a file using gzdopen(). - - gztell(file) is equivalent to gzseek(file, 0L, SEEK_CUR) -*/ - -/* -ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile file)); - - Returns the current offset in the file being read or written. This offset - includes the count of bytes that precede the gzip stream, for example when - appending or when using gzdopen() for reading. When reading, the offset - does not include as yet unused buffered input. This information can be used - for a progress indicator. On error, gzoffset() returns -1. -*/ - -ZEXTERN int ZEXPORT gzeof OF((gzFile file)); -/* - Returns true (1) if the end-of-file indicator has been set while reading, - false (0) otherwise. Note that the end-of-file indicator is set only if the - read tried to go past the end of the input, but came up short. Therefore, - just like feof(), gzeof() may return false even if there is no more data to - read, in the event that the last read request was for the exact number of - bytes remaining in the input file. This will happen if the input file size - is an exact multiple of the buffer size. - - If gzeof() returns true, then the read functions will return no more data, - unless the end-of-file indicator is reset by gzclearerr() and the input file - has grown since the previous end of file was detected. -*/ - -ZEXTERN int ZEXPORT gzdirect OF((gzFile file)); -/* - Returns true (1) if file is being copied directly while reading, or false - (0) if file is a gzip stream being decompressed. - - If the input file is empty, gzdirect() will return true, since the input - does not contain a gzip stream. - - If gzdirect() is used immediately after gzopen() or gzdopen() it will - cause buffers to be allocated to allow reading the file to determine if it - is a gzip file. Therefore if gzbuffer() is used, it should be called before - gzdirect(). - - When writing, gzdirect() returns true (1) if transparent writing was - requested ("wT" for the gzopen() mode), or false (0) otherwise. (Note: - gzdirect() is not needed when writing. Transparent writing must be - explicitly requested, so the application already knows the answer. When - linking statically, using gzdirect() will include all of the zlib code for - gzip file reading and decompression, which may not be desired.) -*/ - -ZEXTERN int ZEXPORT gzclose OF((gzFile file)); -/* - Flushes all pending output if necessary, closes the compressed file and - deallocates the (de)compression state. Note that once file is closed, you - cannot call gzerror with file, since its structures have been deallocated. - gzclose must not be called more than once on the same file, just as free - must not be called more than once on the same allocation. - - gzclose will return Z_STREAM_ERROR if file is not valid, Z_ERRNO on a - file operation error, Z_MEM_ERROR if out of memory, Z_BUF_ERROR if the - last read ended in the middle of a gzip stream, or Z_OK on success. -*/ - -ZEXTERN int ZEXPORT gzclose_r OF((gzFile file)); -ZEXTERN int ZEXPORT gzclose_w OF((gzFile file)); -/* - Same as gzclose(), but gzclose_r() is only for use when reading, and - gzclose_w() is only for use when writing or appending. The advantage to - using these instead of gzclose() is that they avoid linking in zlib - compression or decompression code that is not used when only reading or only - writing respectively. If gzclose() is used, then both compression and - decompression code will be included the application when linking to a static - zlib library. -*/ - -ZEXTERN const char *ZEXPORT gzerror OF((gzFile file, int *errnum)); -/* - Returns the error message for the last error which occurred on the given - compressed file. errnum is set to zlib error number. If an error occurred - in the file system and not in the compression library, errnum is set to - Z_ERRNO and the application may consult errno to get the exact error code. - - The application must not modify the returned string. Future calls to - this function may invalidate the previously returned string. If file is - closed, then the string previously returned by gzerror will no longer be - available. - - gzerror() should be used to distinguish errors from end-of-file for those - functions above that do not distinguish those cases in their return values. -*/ - -ZEXTERN void ZEXPORT gzclearerr OF((gzFile file)); -/* - Clears the error and end-of-file flags for file. This is analogous to the - clearerr() function in stdio. This is useful for continuing to read a gzip - file that is being written concurrently. -*/ - -#endif /* !Z_SOLO */ - -/* checksum functions */ - -/* - These functions are not related to compression but are exported - anyway because they might be useful in applications using the compression - library. -*/ - -ZEXTERN uLong ZEXPORT adler32 OF((uLong adler, const Bytef *buf, uInt len)); -/* - Update a running Adler-32 checksum with the bytes buf[0..len-1] and - return the updated checksum. If buf is Z_NULL, this function returns the - required initial value for the checksum. - - An Adler-32 checksum is almost as reliable as a CRC-32 but can be computed - much faster. - - Usage example: - - uLong adler = adler32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - adler = adler32(adler, buffer, length); - } - if (adler != original_adler) error(); -*/ - -ZEXTERN uLong ZEXPORT adler32_z OF((uLong adler, const Bytef *buf, - z_size_t len)); -/* - Same as adler32(), but with a size_t length. -*/ - -/* -ZEXTERN uLong ZEXPORT adler32_combine OF((uLong adler1, uLong adler2, - z_off_t len2)); - - Combine two Adler-32 checksums into one. For two sequences of bytes, seq1 - and seq2 with lengths len1 and len2, Adler-32 checksums were calculated for - each, adler1 and adler2. adler32_combine() returns the Adler-32 checksum of - seq1 and seq2 concatenated, requiring only adler1, adler2, and len2. Note - that the z_off_t type (like off_t) is a signed integer. If len2 is - negative, the result has no meaning or utility. -*/ - -ZEXTERN uLong ZEXPORT crc32 OF((uLong crc, const Bytef *buf, uInt len)); -/* - Update a running CRC-32 with the bytes buf[0..len-1] and return the - updated CRC-32. If buf is Z_NULL, this function returns the required - initial value for the crc. Pre- and post-conditioning (one's complement) is - performed within this function so it shouldn't be done by the application. - - Usage example: - - uLong crc = crc32(0L, Z_NULL, 0); - - while (read_buffer(buffer, length) != EOF) { - crc = crc32(crc, buffer, length); - } - if (crc != original_crc) error(); -*/ - -ZEXTERN uLong ZEXPORT crc32_z OF((uLong adler, const Bytef *buf, - z_size_t len)); -/* - Same as crc32(), but with a size_t length. -*/ - -/* -ZEXTERN uLong ZEXPORT crc32_combine OF((uLong crc1, uLong crc2, z_off_t len2)); - - Combine two CRC-32 check values into one. For two sequences of bytes, - seq1 and seq2 with lengths len1 and len2, CRC-32 check values were - calculated for each, crc1 and crc2. crc32_combine() returns the CRC-32 - check value of seq1 and seq2 concatenated, requiring only crc1, crc2, and - len2. -*/ - - -/* various hacks, don't look :) */ - -/* deflateInit and inflateInit are macros to allow checking the zlib version - * and the compiler's view of z_stream: - */ -ZEXTERN int ZEXPORT deflateInit_ OF((z_streamp strm, int level, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateInit_ OF((z_streamp strm, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT deflateInit2_ OF((z_streamp strm, int level, int method, - int windowBits, int memLevel, - int strategy, const char *version, - int stream_size)); -ZEXTERN int ZEXPORT inflateInit2_ OF((z_streamp strm, int windowBits, - const char *version, int stream_size)); -ZEXTERN int ZEXPORT inflateBackInit_ OF((z_streamp strm, int windowBits, - unsigned char FAR *window, - const char *version, - int stream_size)); -#ifdef Z_PREFIX_SET -# define z_deflateInit(strm, level) \ - deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) -# define z_inflateInit(strm) \ - inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) -# define z_deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ - deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ - (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) -# define z_inflateInit2(strm, windowBits) \ - inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ - (int)sizeof(z_stream)) -# define z_inflateBackInit(strm, windowBits, window) \ - inflateBackInit_((strm), (windowBits), (window), \ - ZLIB_VERSION, (int)sizeof(z_stream)) -#else -# define deflateInit(strm, level) \ - deflateInit_((strm), (level), ZLIB_VERSION, (int)sizeof(z_stream)) -# define inflateInit(strm) \ - inflateInit_((strm), ZLIB_VERSION, (int)sizeof(z_stream)) -# define deflateInit2(strm, level, method, windowBits, memLevel, strategy) \ - deflateInit2_((strm),(level),(method),(windowBits),(memLevel),\ - (strategy), ZLIB_VERSION, (int)sizeof(z_stream)) -# define inflateInit2(strm, windowBits) \ - inflateInit2_((strm), (windowBits), ZLIB_VERSION, \ - (int)sizeof(z_stream)) -# define inflateBackInit(strm, windowBits, window) \ - inflateBackInit_((strm), (windowBits), (window), \ - ZLIB_VERSION, (int)sizeof(z_stream)) -#endif - -#ifndef Z_SOLO - -/* gzgetc() macro and its supporting function and exposed data structure. Note - * that the real internal state is much larger than the exposed structure. - * This abbreviated structure exposes just enough for the gzgetc() macro. The - * user should not mess with these exposed elements, since their names or - * behavior could change in the future, perhaps even capriciously. They can - * only be used by the gzgetc() macro. You have been warned. - */ -struct gzFile_s { - unsigned have; - unsigned char *next; - z_off64_t pos; -}; -ZEXTERN int ZEXPORT gzgetc_ OF((gzFile file)); /* backward compatibility */ -#ifdef Z_PREFIX_SET -# undef z_gzgetc -# define z_gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) -#else -# define gzgetc(g) \ - ((g)->have ? ((g)->have--, (g)->pos++, *((g)->next)++) : (gzgetc)(g)) -#endif - -/* provide 64-bit offset functions if _LARGEFILE64_SOURCE defined, and/or - * change the regular functions to 64 bits if _FILE_OFFSET_BITS is 64 (if - * both are true, the application gets the *64 functions, and the regular - * functions are changed to 64 bits) -- in case these are set on systems - * without large file support, _LFS64_LARGEFILE must also be true - */ -#ifdef Z_LARGE64 -ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); -ZEXTERN z_off64_t ZEXPORT gzseek64 OF((gzFile, z_off64_t, int)); -ZEXTERN z_off64_t ZEXPORT gztell64 OF((gzFile)); -ZEXTERN z_off64_t ZEXPORT gzoffset64 OF((gzFile)); -ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off64_t)); -ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off64_t)); -#endif - -#if !defined(ZLIB_INTERNAL) && defined(Z_WANT64) -# ifdef Z_PREFIX_SET -# define z_gzopen z_gzopen64 -# define z_gzseek z_gzseek64 -# define z_gztell z_gztell64 -# define z_gzoffset z_gzoffset64 -# define z_adler32_combine z_adler32_combine64 -# define z_crc32_combine z_crc32_combine64 -# else -# define gzopen gzopen64 -# define gzseek gzseek64 -# define gztell gztell64 -# define gzoffset gzoffset64 -# define adler32_combine adler32_combine64 -# define crc32_combine crc32_combine64 -# endif -# ifndef Z_LARGE64 -ZEXTERN gzFile ZEXPORT gzopen64 OF((const char *, const char *)); -ZEXTERN z_off_t ZEXPORT gzseek64 OF((gzFile, z_off_t, int)); -ZEXTERN z_off_t ZEXPORT gztell64 OF((gzFile)); -ZEXTERN z_off_t ZEXPORT gzoffset64 OF((gzFile)); -ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); -ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); -# endif -#else -ZEXTERN gzFile ZEXPORT gzopen OF((const char *, const char *)); -ZEXTERN z_off_t ZEXPORT gzseek OF((gzFile, z_off_t, int)); -ZEXTERN z_off_t ZEXPORT gztell OF((gzFile)); -ZEXTERN z_off_t ZEXPORT gzoffset OF((gzFile)); -ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); -ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); -#endif - -#else /* Z_SOLO */ - -ZEXTERN uLong ZEXPORT adler32_combine OF((uLong, uLong, z_off_t)); -ZEXTERN uLong ZEXPORT crc32_combine OF((uLong, uLong, z_off_t)); - -#endif /* !Z_SOLO */ - -/* undocumented functions */ -ZEXTERN const char *ZEXPORT zError OF((int)); -ZEXTERN int ZEXPORT inflateSyncPoint OF((z_streamp)); -ZEXTERN const z_crc_t FAR *ZEXPORT get_crc_table OF((void)); -ZEXTERN int ZEXPORT inflateUndermine OF((z_streamp, int)); -ZEXTERN int ZEXPORT inflateValidate OF((z_streamp, int)); -ZEXTERN unsigned long ZEXPORT inflateCodesUsed OF((z_streamp)); -ZEXTERN int ZEXPORT inflateResetKeep OF((z_streamp)); -ZEXTERN int ZEXPORT deflateResetKeep OF((z_streamp)); -#if (defined(_WIN32) || defined(__CYGWIN__)) && !defined(Z_SOLO) -ZEXTERN gzFile ZEXPORT gzopen_w OF((const wchar_t *path, - const char *mode)); -#endif -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifndef Z_SOLO -ZEXTERN int ZEXPORTVA gzvprintf Z_ARG((gzFile file, - const char *format, - va_list va)); -# endif -#endif - -#ifdef __cplusplus -} -#endif - -#endif /* ZLIB_H */ - diff --git a/common/zlib/zutil.c b/common/zlib/zutil.c deleted file mode 100644 index 2d70d74c9..000000000 --- a/common/zlib/zutil.c +++ /dev/null @@ -1,344 +0,0 @@ -/* zutil.c -- target dependent utility functions for the compression library - * Copyright (C) 1995-2017 Jean-loup Gailly - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* @(#) $Id$ */ - -#include "zutil.h" -#ifndef Z_SOLO -# include "gzguts.h" -#endif - -z_const char *const z_errmsg[10] = { - (z_const char *)"need dictionary", /* Z_NEED_DICT 2 */ - (z_const char *)"stream end", /* Z_STREAM_END 1 */ - (z_const char *)"", /* Z_OK 0 */ - (z_const char *)"file error", /* Z_ERRNO (-1) */ - (z_const char *)"stream error", /* Z_STREAM_ERROR (-2) */ - (z_const char *)"data error", /* Z_DATA_ERROR (-3) */ - (z_const char *)"insufficient memory", /* Z_MEM_ERROR (-4) */ - (z_const char *)"buffer error", /* Z_BUF_ERROR (-5) */ - (z_const char *)"incompatible version",/* Z_VERSION_ERROR (-6) */ - (z_const char *)"" -}; - - -const char *ZEXPORT zlibVersion() { - return ZLIB_VERSION; -} - -uLong ZEXPORT zlibCompileFlags() { - uLong flags; - - flags = 0; - switch ((int)(sizeof(uInt))) { - case 2: - break; - case 4: - flags += 1; - break; - case 8: - flags += 2; - break; - default: - flags += 3; - } - switch ((int)(sizeof(uLong))) { - case 2: - break; - case 4: - flags += 1 << 2; - break; - case 8: - flags += 2 << 2; - break; - default: - flags += 3 << 2; - } - switch ((int)(sizeof(voidpf))) { - case 2: - break; - case 4: - flags += 1 << 4; - break; - case 8: - flags += 2 << 4; - break; - default: - flags += 3 << 4; - } - switch ((int)(sizeof(z_off_t))) { - case 2: - break; - case 4: - flags += 1 << 6; - break; - case 8: - flags += 2 << 6; - break; - default: - flags += 3 << 6; - } -#ifdef ZLIB_DEBUG - flags += 1 << 8; -#endif -#if defined(ASMV) || defined(ASMINF) - flags += 1 << 9; -#endif -#ifdef ZLIB_WINAPI - flags += 1 << 10; -#endif -#ifdef BUILDFIXED - flags += 1 << 12; -#endif -#ifdef DYNAMIC_CRC_TABLE - flags += 1 << 13; -#endif -#ifdef NO_GZCOMPRESS - flags += 1L << 16; -#endif -#ifdef NO_GZIP - flags += 1L << 17; -#endif -#ifdef PKZIP_BUG_WORKAROUND - flags += 1L << 20; -#endif -#ifdef FASTEST - flags += 1L << 21; -#endif -#if defined(STDC) || defined(Z_HAVE_STDARG_H) -# ifdef NO_vsnprintf - flags += 1L << 25; -# ifdef HAS_vsprintf_void - flags += 1L << 26; -# endif -# else -# ifdef HAS_vsnprintf_void - flags += 1L << 26; -# endif -# endif -#else - flags += 1L << 24; -# ifdef NO_snprintf - flags += 1L << 25; -# ifdef HAS_sprintf_void - flags += 1L << 26; -# endif -# else -# ifdef HAS_snprintf_void - flags += 1L << 26; -# endif -# endif -#endif - return flags; -} - -#ifdef ZLIB_DEBUG -#include <stdlib.h> -# ifndef verbose -# define verbose 0 -# endif -int ZLIB_INTERNAL z_verbose = verbose; - -void ZLIB_INTERNAL z_error(m) -char *m; -{ - fprintf(stderr, "%s\n", m); - exit(1); -} -#endif - -/* exported to allow conversion of error code to string for compress() and - * uncompress() - */ -const char *ZEXPORT zError(err) -int err; -{ - return ERR_MSG(err); -} - -#if defined(_WIN32_WCE) -/* The Microsoft C Run-Time Library for Windows CE doesn't have - * errno. We define it as a global variable to simplify porting. - * Its value is always 0 and should not be used. - */ -int errno = 0; -#endif - -#ifndef HAVE_MEMCPY - -void ZLIB_INTERNAL zmemcpy(dest, source, len) -Bytef *dest; -const Bytef *source; -uInt len; -{ - if (len == 0) return; - do { - *dest++ = *source++; /* ??? to be unrolled */ - } while (--len != 0); -} - -int ZLIB_INTERNAL zmemcmp(s1, s2, len) -const Bytef *s1; -const Bytef *s2; -uInt len; -{ - uInt j; - - for (j = 0; j < len; j++) { - if (s1[j] != s2[j]) return 2 * (s1[j] > s2[j]) - 1; - } - return 0; -} - -void ZLIB_INTERNAL zmemzero(dest, len) -Bytef *dest; -uInt len; -{ - if (len == 0) return; - do { - *dest++ = 0; /* ??? to be unrolled */ - } while (--len != 0); -} -#endif - -#ifndef Z_SOLO - -#ifdef SYS16BIT - -#ifdef __TURBOC__ -/* Turbo C in 16-bit mode */ - -# define MY_ZCALLOC - -/* Turbo C malloc() does not allow dynamic allocation of 64K bytes - * and farmalloc(64K) returns a pointer with an offset of 8, so we - * must fix the pointer. Warning: the pointer must be put back to its - * original form in order to free it, use zcfree(). - */ - -#define MAX_PTR 10 -/* 10*64K = 640K */ - -local int next_ptr = 0; - -typedef struct ptr_table_s { - voidpf org_ptr; - voidpf new_ptr; -} ptr_table; - -local ptr_table table[MAX_PTR]; -/* This table is used to remember the original form of pointers - * to large buffers (64K). Such pointers are normalized with a zero offset. - * Since MSDOS is not a preemptive multitasking OS, this table is not - * protected from concurrent access. This hack doesn't work anyway on - * a protected system like OS/2. Use Microsoft C instead. - */ - -voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, unsigned items, unsigned size) { - voidpf buf; - ulg bsize = (ulg)items * size; - - (void)opaque; - - /* If we allocate less than 65520 bytes, we assume that farmalloc - * will return a usable pointer which doesn't have to be normalized. - */ - if (bsize < 65520L) { - buf = farmalloc(bsize); - if (*(ush *)&buf != 0) return buf; - } else { - buf = farmalloc(bsize + 16L); - } - if (buf == NULL || next_ptr >= MAX_PTR) return NULL; - table[next_ptr].org_ptr = buf; - - /* Normalize the pointer to seg:0 */ - *((ush *)&buf + 1) += ((ush)((uch *)buf - 0) + 15) >> 4; - *(ush *)&buf = 0; - table[next_ptr++].new_ptr = buf; - return buf; -} - -void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) { - int n; - - (void)opaque; - - if (*(ush *)&ptr != 0) { /* object < 64K */ - farfree(ptr); - return; - } - /* Find the original pointer */ - for (n = 0; n < next_ptr; n++) { - if (ptr != table[n].new_ptr) continue; - - farfree(table[n].org_ptr); - while (++n < next_ptr) { - table[n - 1] = table[n]; - } - next_ptr--; - return; - } - Assert(0, "zcfree: ptr not found"); -} - -#endif /* __TURBOC__ */ - - -#ifdef M_I86 -/* Microsoft C in 16-bit mode */ - -# define MY_ZCALLOC - -#if (!defined(_MSC_VER) || (_MSC_VER <= 600)) -# define _halloc halloc -# define _hfree hfree -#endif - -voidpf ZLIB_INTERNAL zcalloc(voidpf opaque, uInt items, uInt size) { - (void)opaque; - return _halloc((long)items, size); -} - -void ZLIB_INTERNAL zcfree(voidpf opaque, voidpf ptr) { - (void)opaque; - _hfree(ptr); -} - -#endif /* M_I86 */ - -#endif /* SYS16BIT */ - - -#ifndef MY_ZCALLOC /* Any system without a special alloc function */ - -#ifndef STDC -extern voidp malloc OF((uInt size)); -extern voidp calloc OF((uInt items, uInt size)); -extern void free OF((voidpf ptr)); -#endif - -voidpf ZLIB_INTERNAL zcalloc(opaque, items, size) -voidpf opaque; -unsigned items; -unsigned size; -{ - (void)opaque; - return sizeof(uInt) > 2 ? (voidpf)malloc(items * size) : - (voidpf)calloc(items, size); -} - -void ZLIB_INTERNAL zcfree(opaque, ptr) -voidpf opaque; -voidpf ptr; -{ - (void)opaque; - free(ptr); -} - -#endif /* MY_ZCALLOC */ - -#endif /* !Z_SOLO */ - diff --git a/common/zlib/zutil.h b/common/zlib/zutil.h deleted file mode 100644 index a5bf91366..000000000 --- a/common/zlib/zutil.h +++ /dev/null @@ -1,272 +0,0 @@ -/* zutil.h -- internal interface and configuration of the compression library - * Copyright (C) 1995-2016 Jean-loup Gailly, Mark Adler - * For conditions of distribution and use, see copyright notice in zlib.h - */ - -/* WARNING: this file should *not* be used by applications. It is - part of the implementation of the compression library and is - subject to change. Applications should only use zlib.h. - */ - -/* @(#) $Id$ */ - -#ifndef ZUTIL_H -#define ZUTIL_H - -#ifdef HAVE_HIDDEN -# define ZLIB_INTERNAL __attribute__((visibility ("hidden"))) -#else -# define ZLIB_INTERNAL -#endif - -#include "zlib.h" - -#if defined(STDC) && !defined(Z_SOLO) -# if !(defined(_WIN32_WCE) && defined(_MSC_VER)) -# include <stddef.h> -# endif -# include <string.h> -# include <stdlib.h> -#endif - -#ifdef Z_SOLO -typedef long ptrdiff_t; /* guess -- will be caught if guess is wrong */ -#endif - -#ifndef local -# define local static -#endif -/* since "static" is used to mean two completely different things in C, we - define "local" for the non-static meaning of "static", for readability - (compile with -Dlocal if your debugger can't find static symbols) */ - -typedef unsigned char uch; -typedef uch FAR uchf; -typedef unsigned short ush; -typedef ush FAR ushf; -typedef unsigned long ulg; - -extern z_const char *const z_errmsg[10]; /* indexed by 2-zlib_error */ -/* (size given to avoid silly warnings with Visual C++) */ - -#define ERR_MSG(err) z_errmsg[Z_NEED_DICT-(err)] - -#define ERR_RETURN(strm,err) \ - return (strm->msg = ERR_MSG(err), (err)) -/* To be used only when the state is known to be valid */ - -/* common constants */ - -#ifndef DEF_WBITS -# define DEF_WBITS MAX_WBITS -#endif -/* default windowBits for decompression. MAX_WBITS is for compression only */ - -#if MAX_MEM_LEVEL >= 8 -# define DEF_MEM_LEVEL 8 -#else -# define DEF_MEM_LEVEL MAX_MEM_LEVEL -#endif -/* default memLevel */ - -#define STORED_BLOCK 0 -#define STATIC_TREES 1 -#define DYN_TREES 2 -/* The three kinds of block type */ - -#define MIN_MATCH 3 -#define MAX_MATCH 258 -/* The minimum and maximum match lengths */ - -#define PRESET_DICT 0x20 /* preset dictionary flag in zlib header */ - -/* target dependencies */ - -#if defined(MSDOS) || (defined(WINDOWS) && !defined(WIN32)) -# define OS_CODE 0x00 -# ifndef Z_SOLO -# if defined(__TURBOC__) || defined(__BORLANDC__) -# if (__STDC__ == 1) && (defined(__LARGE__) || defined(__COMPACT__)) -/* Allow compilation with ANSI keywords only enabled */ -void _Cdecl farfree(void *block); -void *_Cdecl farmalloc(unsigned long nbytes); -# else -# include <alloc.h> -# endif -# else /* MSC or DJGPP */ -# include <malloc.h> -# endif -# endif -#endif - -#ifdef AMIGA -# define OS_CODE 1 -#endif - -#if defined(VAXC) || defined(VMS) -# define OS_CODE 2 -# define F_OPEN(name, mode) \ - fopen((name), (mode), "mbc=60", "ctx=stm", "rfm=fix", "mrs=512") -#endif - -#ifdef __370__ -# if __TARGET_LIB__ < 0x20000000 -# define OS_CODE 4 -# elif __TARGET_LIB__ < 0x40000000 -# define OS_CODE 11 -# else -# define OS_CODE 8 -# endif -#endif - -#if defined(ATARI) || defined(atarist) -# define OS_CODE 5 -#endif - -#ifdef OS2 -# define OS_CODE 6 -# if defined(M_I86) && !defined(Z_SOLO) -# include <malloc.h> -# endif -#endif - -#if defined(MACOS) || defined(TARGET_OS_MAC) -# define OS_CODE 7 -# ifndef Z_SOLO -# if defined(__MWERKS__) && __dest_os != __be_os && __dest_os != __win32_os -# include <unix.h> /* for fdopen */ -# else -# ifndef fdopen -# define fdopen(fd,mode) NULL /* No fdopen() */ -# endif -# endif -# endif -#endif - -#ifdef __acorn -# define OS_CODE 13 -#endif - -#if defined(WIN32) && !defined(__CYGWIN__) -# define OS_CODE 10 -#endif - -#ifdef _BEOS_ -# define OS_CODE 16 -#endif - -#ifdef __TOS_OS400__ -# define OS_CODE 18 -#endif - -#ifdef __APPLE__ -# define OS_CODE 19 -#endif - -#if defined(_BEOS_) || defined(RISCOS) -# define fdopen(fd,mode) NULL /* No fdopen() */ -#endif - -#if (defined(_MSC_VER) && (_MSC_VER > 600)) && !defined __INTERIX -# if defined(_WIN32_WCE) -# define fdopen(fd,mode) NULL /* No fdopen() */ -# ifndef _PTRDIFF_T_DEFINED -typedef int ptrdiff_t; -# define _PTRDIFF_T_DEFINED -# endif -# else -# define fdopen(fd,type) _fdopen(fd,type) -# endif -#endif - -#if defined(__BORLANDC__) && !defined(MSDOS) -#pragma warn -8004 -#pragma warn -8008 -#pragma warn -8066 -#endif - -/* provide prototypes for these when building zlib without LFS */ -#if !defined(_WIN32) && \ - (!defined(_LARGEFILE64_SOURCE) || _LFS64_LARGEFILE-0 == 0) -ZEXTERN uLong ZEXPORT adler32_combine64 OF((uLong, uLong, z_off_t)); -ZEXTERN uLong ZEXPORT crc32_combine64 OF((uLong, uLong, z_off_t)); -#endif - -/* common defaults */ - -#ifndef OS_CODE -# define OS_CODE 3 /* assume Unix */ -#endif - -#ifndef F_OPEN -# define F_OPEN(name, mode) fopen((name), (mode)) -#endif - -/* functions */ - -#if defined(pyr) || defined(Z_SOLO) -# define NO_MEMCPY -#endif -#if defined(SMALL_MEDIUM) && !defined(_MSC_VER) && !defined(__SC__) -/* Use our own functions for small and medium model with MSC <= 5.0. - * You may have to use the same strategy for Borland C (untested). - * The __SC__ check is for Symantec. - */ -# define NO_MEMCPY -#endif -#if defined(STDC) && !defined(HAVE_MEMCPY) && !defined(NO_MEMCPY) -# define HAVE_MEMCPY -#endif -#ifdef HAVE_MEMCPY -# ifdef SMALL_MEDIUM /* MSDOS small or medium model */ -# define zmemcpy _fmemcpy -# define zmemcmp _fmemcmp -# define zmemzero(dest, len) _fmemset(dest, 0, len) -# else -# define zmemcpy memcpy -# define zmemcmp memcmp -# define zmemzero(dest, len) memset(dest, 0, len) -# endif -#else -void ZLIB_INTERNAL zmemcpy OF((Bytef *dest, const Bytef *source, uInt len)); -int ZLIB_INTERNAL zmemcmp OF((const Bytef *s1, const Bytef *s2, uInt len)); -void ZLIB_INTERNAL zmemzero OF((Bytef *dest, uInt len)); -#endif - -/* Diagnostic functions */ -#ifdef ZLIB_DEBUG -# include <stdio.h> -extern int ZLIB_INTERNAL z_verbose; -extern void ZLIB_INTERNAL z_error OF((char *m)); -# define Assert(cond,msg) {if(!(cond)) z_error(msg);} -# define Trace(x) {if (z_verbose>=0) fprintf x ;} -# define Tracev(x) {if (z_verbose>0) fprintf x ;} -# define Tracevv(x) {if (z_verbose>1) fprintf x ;} -# define Tracec(c,x) {if (z_verbose>0 && (c)) fprintf x ;} -# define Tracecv(c,x) {if (z_verbose>1 && (c)) fprintf x ;} -#else -# define Assert(cond,msg) -# define Trace(x) -# define Tracev(x) -# define Tracevv(x) -# define Tracec(c,x) -# define Tracecv(c,x) -#endif - -#ifndef Z_SOLO -voidpf ZLIB_INTERNAL zcalloc OF((voidpf opaque, unsigned items, - unsigned size)); -void ZLIB_INTERNAL zcfree OF((voidpf opaque, voidpf ptr)); -#endif - -#define ZALLOC(strm, items, size) \ - (*((strm)->zalloc))((strm)->opaque, (items), (size)) -#define ZFREE(strm, addr) (*((strm)->zfree))((strm)->opaque, (voidpf)(addr)) -#define TRY_FREE(s, p) {if (p) ZFREE(s, p);} - -/* Reverse the bytes in a 32-bit value */ -#define ZSWAP32(q) ((((q) >> 24) & 0xff) + (((q) >> 8) & 0xff00) + \ - (((q) & 0xff00) << 8) + (((q) & 0xff) << 24)) - -#endif /* ZUTIL_H */ - diff --git a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md index 578bb429d..688091ee8 100644 --- a/doc/md/Installation_Instructions/Linux-Installation-Instructions.md +++ b/doc/md/Installation_Instructions/Linux-Installation-Instructions.md @@ -37,7 +37,7 @@ If you get some (non blocking) error at runtime such as _Gtk-Message: Failed to ## On ArchLinux ```sh -sudo pacman -Sy git base-devel readline arm-none-eabi-gcc arm-none-eabi-newlib qt5-base bluez --needed +sudo pacman -Sy git base-devel readline bzip2 arm-none-eabi-gcc arm-none-eabi-newlib qt5-base bluez --needed ``` If you don't need the native Bluetooth support in the client, you can skip the installation of `bluez`. @@ -47,7 +47,7 @@ If you don't need the graphical components of the Proxmark3 client (such as in ` ## On Fedora ```sh -sudo dnf install git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib readline-devel qt5-qtbase-devel bluez-libs-devel libatomic +sudo dnf install git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib readline-devel bzip2-devel qt5-qtbase-devel bluez-libs-devel libatomic ``` If you don't need the native Bluetooth support in the client, you can skip the installation of `bluez-libs-devel`. @@ -57,7 +57,7 @@ If you don't need the graphical components of the Proxmark3 client (such as in ` ## On openSUSE ```sh -sudo zypper install git patterns-devel-base-devel_basis gcc-c++ readline-devel cross-arm-none-gcc9 cross-arm-none-newlib-devel libqt5-qtbase-devel +sudo zypper install git patterns-devel-base-devel_basis gcc-c++ readline-devel libbz2-devel cross-arm-none-gcc9 cross-arm-none-newlib-devel libqt5-qtbase-devel ``` If you don't need the graphical components of the Proxmark3 client (such as in `hw tune`), you can skip the installation of `libqt5-qtbase-devel`. diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index 7d574fb38..0d218300f 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -21,8 +21,6 @@ #include "fpga.h" #include "lz4hc.h" -#define HARDNESTED_TABLE_SIZE (uint32_t)(sizeof(uint32_t) * ((1L<<19)+1)) - static void usage(void) { fprintf(stdout, "Usage: fpga_compress <infile1> <infile2> ... <infile_n> <outfile>\n"); fprintf(stdout, " Combine n FPGA bitstream files and compress them into one.\n\n"); @@ -30,8 +28,6 @@ static void usage(void) { fprintf(stdout, " Extract Version Information from FPGA bitstream files and write it to <outfile>\n\n"); fprintf(stdout, " fpga_compress -d <infile> <outfile>\n"); fprintf(stdout, " Decompress <infile>. Write result to <outfile>\n\n"); - fprintf(stdout, " fpga_compress -t <infile> <outfile>\n"); - fprintf(stdout, " Compress hardnested table <infile>. Write result to <outfile>\n\n"); } static bool all_feof(FILE *infile[], uint8_t num_infiles) { @@ -43,30 +39,18 @@ static bool all_feof(FILE *infile[], uint8_t num_infiles) { return true; } -static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile, bool hardnested_mode) { +static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile) { uint8_t *fpga_config; - if (hardnested_mode) { - fpga_config = calloc(num_infiles * HARDNESTED_TABLE_SIZE, sizeof(uint8_t)); - } else { - fpga_config = calloc(num_infiles * FPGA_CONFIG_SIZE, sizeof(uint8_t)); - } - + fpga_config = calloc(num_infiles * FPGA_CONFIG_SIZE, sizeof(uint8_t)); // read the input files. Interleave them into fpga_config[] uint32_t total_size = 0; do { - if (total_size >= num_infiles * (hardnested_mode ? HARDNESTED_TABLE_SIZE : FPGA_CONFIG_SIZE)) { - if (hardnested_mode) { - fprintf(stderr, - "Input file too big (> %" PRIu32 " bytes). This is probably not a hardnested bitflip state table.\n" - , HARDNESTED_TABLE_SIZE); - - } else { - fprintf(stderr, - "Input files too big (total > %li bytes). These are probably not PM3 FPGA config files.\n" - , num_infiles * FPGA_CONFIG_SIZE); - } + if (total_size >= num_infiles * FPGA_CONFIG_SIZE) { + fprintf(stderr, + "Input files too big (total > %li bytes). These are probably not PM3 FPGA config files.\n" + , num_infiles * FPGA_CONFIG_SIZE); for (uint16_t j = 0; j < num_infiles; j++) { fclose(infile[j]); } @@ -376,17 +360,9 @@ int main(int argc, char **argv) { } else { // Compress or generate version info - bool hardnested_mode = false; bool generate_version_file = false; int num_input_files = 0; - if (!strcmp(argv[1], "-t")) { // compress one hardnested table - if (argc != 4) { - usage(); - return (EXIT_FAILURE); - } - hardnested_mode = true; - num_input_files = 1; - } else if (!strcmp(argv[1], "-v")) { // generate version info + if (!strcmp(argv[1], "-v")) { // generate version info generate_version_file = true; num_input_files = argc - 3; } else { // compress 1..n fpga files @@ -396,7 +372,7 @@ int main(int argc, char **argv) { FILE **infiles = calloc(num_input_files, sizeof(FILE *)); char **infile_names = calloc(num_input_files, sizeof(char *)); for (uint16_t i = 0; i < num_input_files; i++) { - infile_names[i] = argv[i + ((hardnested_mode || generate_version_file) ? 2 : 1)]; + infile_names[i] = argv[i + (generate_version_file ? 2 : 1)]; infiles[i] = fopen(infile_names[i], "rb"); if (infiles[i] == NULL) { fprintf(stderr, "Error. Cannot open input file %s\n\n", infile_names[i]); @@ -419,7 +395,7 @@ int main(int argc, char **argv) { return (EXIT_FAILURE); } } else { - int ret = zlib_compress(infiles, num_input_files, outfile, hardnested_mode); + int ret = zlib_compress(infiles, num_input_files, outfile); free(infile_names); free(infiles); return (ret); From e5a97f3e801d3665dee49c245d171ca46e180faf Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 8 Jun 2020 02:53:13 +0200 Subject: [PATCH 329/527] dockerfiles for tests --- docker/archlinux/Dockerfile | 19 +++++++++++++++++++ docker/archlinux/docker_build.sh | 3 +++ docker/archlinux/docker_run.sh | 3 +++ docker/debian/Dockerfile | 19 +++++++++++++++++++ docker/debian/docker_build.sh | 3 +++ docker/debian/docker_run.sh | 3 +++ docker/fedora/Dockerfile | 15 +++++++++++++++ docker/fedora/docker_build.sh | 3 +++ docker/fedora/docker_run.sh | 3 +++ docker/opensuse/Dockerfile | 16 ++++++++++++++++ docker/opensuse/docker_build.sh | 3 +++ docker/opensuse/docker_run.sh | 3 +++ docker/ubuntu/Dockerfile | 19 +++++++++++++++++++ docker/ubuntu/docker_build.sh | 3 +++ docker/ubuntu/docker_run.sh | 3 +++ 15 files changed, 118 insertions(+) create mode 100644 docker/archlinux/Dockerfile create mode 100755 docker/archlinux/docker_build.sh create mode 100755 docker/archlinux/docker_run.sh create mode 100644 docker/debian/Dockerfile create mode 100755 docker/debian/docker_build.sh create mode 100755 docker/debian/docker_run.sh create mode 100644 docker/fedora/Dockerfile create mode 100755 docker/fedora/docker_build.sh create mode 100755 docker/fedora/docker_run.sh create mode 100644 docker/opensuse/Dockerfile create mode 100755 docker/opensuse/docker_build.sh create mode 100755 docker/opensuse/docker_run.sh create mode 100644 docker/ubuntu/Dockerfile create mode 100755 docker/ubuntu/docker_build.sh create mode 100755 docker/ubuntu/docker_run.sh diff --git a/docker/archlinux/Dockerfile b/docker/archlinux/Dockerfile new file mode 100644 index 000000000..c5517c0fb --- /dev/null +++ b/docker/archlinux/Dockerfile @@ -0,0 +1,19 @@ +FROM archlinux/base + +ENV LANG C +RUN pacman -Syy +RUN pacman-db-upgrade +# qt5-base skipped +RUN pacman -S --noconfirm sudo git base-devel cmake libusb readline bzip2 arm-none-eabi-gcc arm-none-eabi-newlib --needed + +# Create rrg user +RUN useradd -ms /bin/bash rrg +RUN passwd -d rrg +RUN printf 'rrg ALL=(ALL) ALL\n' | tee -a /etc/sudoers + +USER rrg +WORKDIR "/home/rrg" + +RUN git clone https://aur.archlinux.org/package-query.git && cd package-query && makepkg -si --noconfirm --needed && cd .. && rm -rf package-query + +CMD ["/bin/bash"] diff --git a/docker/archlinux/docker_build.sh b/docker/archlinux/docker_build.sh new file mode 100755 index 000000000..be92402d6 --- /dev/null +++ b/docker/archlinux/docker_build.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker build -t "pm3-arch:1.0" . diff --git a/docker/archlinux/docker_run.sh b/docker/archlinux/docker_run.sh new file mode 100755 index 000000000..eac7e1378 --- /dev/null +++ b/docker/archlinux/docker_run.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker run --volume=$(pwd)/../..:/home/rrg/proxmark3 -it pm3-arch:1.0 diff --git a/docker/debian/Dockerfile b/docker/debian/Dockerfile new file mode 100644 index 000000000..030611739 --- /dev/null +++ b/docker/debian/Dockerfile @@ -0,0 +1,19 @@ +FROM debian:buster-slim + +ENV LANG C +ENV DEBIAN_FRONTEND noninteractive +# qtbase5-dev skipped +RUN apt-get update && \ + apt-get dist-upgrade -y && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev libbluetooth-dev sudo && \ + apt-get clean + +# Create rrg user +RUN useradd -ms /bin/bash rrg +RUN passwd -d rrg +RUN printf 'rrg ALL=(ALL) ALL\n' | tee -a /etc/sudoers + +USER rrg +WORKDIR "/home/rrg" + +CMD ["/bin/bash"] diff --git a/docker/debian/docker_build.sh b/docker/debian/docker_build.sh new file mode 100755 index 000000000..b051aaf7c --- /dev/null +++ b/docker/debian/docker_build.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker build -t "pm3-debian:1.0" . diff --git a/docker/debian/docker_run.sh b/docker/debian/docker_run.sh new file mode 100755 index 000000000..faf35d849 --- /dev/null +++ b/docker/debian/docker_run.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker run --volume=$(pwd)/../..:/home/rrg/proxmark3 -it pm3-debian:1.0 diff --git a/docker/fedora/Dockerfile b/docker/fedora/Dockerfile new file mode 100644 index 000000000..db634fc0d --- /dev/null +++ b/docker/fedora/Dockerfile @@ -0,0 +1,15 @@ +FROM fedora:31 + +ENV LANG C +# qt5-qtbase-devel skipped +RUN dnf install -y passwd sudo git make gcc gcc-c++ arm-none-eabi-gcc-cs arm-none-eabi-newlib readline-devel bzip2-devel bluez-libs-devel libatomic + +# Create rrg user +RUN useradd -ms /bin/bash rrg +RUN passwd -d rrg +RUN printf 'rrg ALL=(ALL) ALL\n' | tee -a /etc/sudoers + +USER rrg +WORKDIR "/home/rrg" + +CMD ["/bin/bash"] diff --git a/docker/fedora/docker_build.sh b/docker/fedora/docker_build.sh new file mode 100755 index 000000000..e4ef2258a --- /dev/null +++ b/docker/fedora/docker_build.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker build -t "pm3-fedora:1.0" . diff --git a/docker/fedora/docker_run.sh b/docker/fedora/docker_run.sh new file mode 100755 index 000000000..79718b831 --- /dev/null +++ b/docker/fedora/docker_run.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker run --volume=$(pwd)/../..:/home/rrg/proxmark3 -it pm3-fedora:1.0 diff --git a/docker/opensuse/Dockerfile b/docker/opensuse/Dockerfile new file mode 100644 index 000000000..4fa4e93a8 --- /dev/null +++ b/docker/opensuse/Dockerfile @@ -0,0 +1,16 @@ +#FROM opensuse/leap +FROM opensuse/tumbleweed + +ENV LANG C +# libqt5-qtbase-devel skipped +RUN zypper --non-interactive install --no-recommends shadow sudo git patterns-devel-base-devel_basis gcc-c++ readline-devel libbz2-devel cross-arm-none-gcc9 cross-arm-none-newlib-devel + +# Create rrg user +RUN useradd -ms /bin/bash rrg +RUN passwd -d rrg +RUN printf 'rrg ALL=(ALL) NOPASSWD: ALL\n' | tee -a /etc/sudoers + +USER rrg +WORKDIR "/home/rrg" + +CMD ["/bin/bash"] diff --git a/docker/opensuse/docker_build.sh b/docker/opensuse/docker_build.sh new file mode 100755 index 000000000..e25149697 --- /dev/null +++ b/docker/opensuse/docker_build.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker build -t "pm3-suse:1.0" . diff --git a/docker/opensuse/docker_run.sh b/docker/opensuse/docker_run.sh new file mode 100755 index 000000000..9b346bf69 --- /dev/null +++ b/docker/opensuse/docker_run.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker run --volume=$(pwd)/../..:/home/rrg/proxmark3 -it pm3-suse:1.0 diff --git a/docker/ubuntu/Dockerfile b/docker/ubuntu/Dockerfile new file mode 100644 index 000000000..673120e0e --- /dev/null +++ b/docker/ubuntu/Dockerfile @@ -0,0 +1,19 @@ +FROM ubuntu:20.04 + +ENV LANG C +ENV DEBIAN_FRONTEND noninteractive +# qtbase5-dev skipped +RUN apt-get update && \ + apt-get dist-upgrade -y && \ + apt-get install -y --no-install-recommends git ca-certificates build-essential cmake pkg-config libreadline-dev gcc-arm-none-eabi libnewlib-dev libbz2-dev libbluetooth-dev sudo && \ + apt-get clean + +# Create rrg user +RUN useradd -ms /bin/bash rrg +RUN passwd -d rrg +RUN printf 'rrg ALL=(ALL) ALL\n' | tee -a /etc/sudoers + +USER rrg +WORKDIR "/home/rrg" + +CMD ["/bin/bash"] diff --git a/docker/ubuntu/docker_build.sh b/docker/ubuntu/docker_build.sh new file mode 100755 index 000000000..9c09b3aad --- /dev/null +++ b/docker/ubuntu/docker_build.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker build -t "pm3-ubuntu:1.0" . diff --git a/docker/ubuntu/docker_run.sh b/docker/ubuntu/docker_run.sh new file mode 100755 index 000000000..6d43e4d15 --- /dev/null +++ b/docker/ubuntu/docker_run.sh @@ -0,0 +1,3 @@ +#!/bin/bash + +docker run --volume=$(pwd)/../..:/home/rrg/proxmark3 -it pm3-ubuntu:1.0 From a1eb8e78b6ebc55516d072238864a0ce1316cb3a Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 8 Jun 2020 03:11:16 +0200 Subject: [PATCH 330/527] adapt get_lz4.sh --- common/get_lz4.sh | 23 ++++++++++++++++++++--- 1 file changed, 20 insertions(+), 3 deletions(-) diff --git a/common/get_lz4.sh b/common/get_lz4.sh index 0daa62a80..6c2dcf3cb 100755 --- a/common/get_lz4.sh +++ b/common/get_lz4.sh @@ -5,9 +5,26 @@ unzip -o -j v$version "lz4-$version/LICENSE" "lz4-$version/lib/lz4.h" "lz4-$vers rm v$version.zip patch -p0 << EOF diff -Naur lz4/lz4.c lz4/lz4.c ---- lz4/lz4.c 2019-08-15 13:59:59.000000000 +0200 -+++ lz4/lz4.c 2020-06-07 12:50:11.788924953 +0200 -@@ -1650,7 +1650,7 @@ +--- lz4/lz4.c ++++ lz4/lz4.c +@@ -1270,6 +1270,7 @@ int LZ4_compress_default(const char* src, char* dst, int srcSize, int maxOutputS + } + + ++int LZ4_compress_fast_force(const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); + /* hidden debug function */ + /* strangely enough, gcc generates faster code when this function is uncommented, even if unused */ + int LZ4_compress_fast_force(const char* src, char* dst, int srcSize, int dstCapacity, int acceleration) +@@ -1644,13 +1645,16 @@ read_variable_length(const BYTE**ip, const BYTE* lencheck, int loop_check, int i + return length; + } + ++int LZ4_decompress_generic(const char* const src, char* const dst, int srcSize, int outputSize, endCondition_directive endOnInput, earlyEnd_directive partialDecoding, ++ dict_directive dict, const BYTE* const lowPrefix, const BYTE* const dictStart, const size_t dictSize ); ++ + /*! LZ4_decompress_generic() : + * This generic decompression function covers all use cases. + * It shall be instantiated several times, using different sets of directives. * Note that it is important for performance that this function really get inlined, * in order to remove useless branches during compilation optimization. */ From 224cb2ffd7432824cec132a97fa02fc9106e4f92 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 8 Jun 2020 03:15:10 +0200 Subject: [PATCH 331/527] make style --- armsrc/Standalone/hf_colin.c | 8 +- armsrc/Standalone/hf_mattyrun.c | 8 +- armsrc/fpgaloader.c | 16 +- armsrc/start.c | 2 +- armsrc/string.c | 26 +- armsrc/string.h | 2 +- client/android/pm3_main.c | 20 +- client/deps/tinycbor/cbor.h | 4 +- client/luascripts/test_t55x7.lua | 2 +- client/luascripts/tracetest.lua | 2 +- client/pyscripts/xorcheck.py | 2 +- client/src/cmdhf15.c | 8 +- client/src/cmdhflto.c | 6 +- client/src/cmdhfmf.c | 10 +- client/src/cmdhfmfdes.c | 20 +- client/src/cmdhfmfu.c | 70 +- client/src/cmdlffdx.c | 4 +- client/src/cmdscript.c | 6 +- client/src/cmdsmartcard.c | 8 +- client/src/cmdtrace.c | 24 +- client/src/emv/cmdemv.c | 108 +-- client/src/emv/emvcore.c | 54 +- client/src/emv/test/sda_test.c | 4 +- client/src/fileutils.c | 38 +- client/src/fileutils.h | 2 +- client/src/jansson_path.c | 8 +- client/src/loclass/cipherutils.c | 12 +- client/src/loclass/elite_crack.c | 12 +- client/src/loclass/ikeys.c | 14 +- client/src/preferences.c | 2 +- common/lz4/lz4.c | 1156 ++++++++++++------------ common/lz4/lz4.h | 94 +- common/lz4/lz4hc.c | 1195 +++++++++++++------------ common/lz4/lz4hc.h | 106 ++- tools/fpga_compress/Makefile | 2 +- tools/fpga_compress/fpga_compress.c | 18 +- tools/hitag2crack/hitag2_gen_nRaR.py | 2 +- tools/mf_nonce_brute/mf_nonce_brute.c | 6 +- 38 files changed, 1531 insertions(+), 1550 deletions(-) diff --git a/armsrc/Standalone/hf_colin.c b/armsrc/Standalone/hf_colin.c index ba5c21cab..8e20ae414 100644 --- a/armsrc/Standalone/hf_colin.c +++ b/armsrc/Standalone/hf_colin.c @@ -330,11 +330,11 @@ void ModInfo(void) { void RunMod(void) { StandAloneMode(); FpgaDownloadAndGo(FPGA_BITSTREAM_HF); - Dbprintf(">> HF Mifare ultra fast sniff/sim/clone a.k.a VIGIKPWN Started <<"); + Dbprintf(">> HF Mifare ultra fast sniff/sim/clone a.k.a VIGIKPWN Started <<"); // turn off all debugging. DBGLEVEL = DBG_NONE; - + // add_schema(Schemas, Noralsy, &total_schemas); // add_schema(Schemas, InfiHexact, &total_schemas); // add_schema_from_json_in_spiffs((char *)HFCOLIN_URMETCAPTIVE_JSON); @@ -504,7 +504,7 @@ failtag: SpinOff(50); FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - + vtsend_cursor_position_restore(NULL); DbprintfEx(FLAG_NEWLINE, "\t\t\t%s[ GOT a Tag ! ]%s", _XGREEN_, _XWHITE_); cjSetCursLeft(); @@ -854,7 +854,7 @@ int cjat91_saMifareChkKeys(uint8_t blockNo, uint8_t keyType, bool clearTrace, pcs = &mpcs; int retval = -1; - + for (uint8_t i = 0; i < keyCount; i++) { /* no need for anticollision. just verify tag is still here */ diff --git a/armsrc/Standalone/hf_mattyrun.c b/armsrc/Standalone/hf_mattyrun.c index e6e099d7c..c0d603fbd 100644 --- a/armsrc/Standalone/hf_mattyrun.c +++ b/armsrc/Standalone/hf_mattyrun.c @@ -263,7 +263,7 @@ static int saMifareECardLoad(uint32_t numofsectors, uint8_t keytype) { retval = PM3_ESOFT; break; }; - + if (blockNo < NumBlocksPerSector(s) - 1) { emlSetMem(dataoutbuf, FirstBlockOfSector(s) + blockNo, 1); } else { @@ -356,7 +356,7 @@ void RunMod(void) { 0x89347350bd36, // INFINEON B 0B 0x66d2b7dc39ef, // INFINEON B 0C 0x6bc1e1ae547d, // INFINEON B 0D - 0x22729a9bd40f, // INFINEON B 0E + 0x22729a9bd40f, // INFINEON B 0E 0xd2ece8b9395e, // lib / Nat Bieb 0x1494E81663D7, // # NSCP default key 0x569369c5a0e5, // # kiev @@ -505,10 +505,10 @@ void RunMod(void) { if (ecfill) { int filled; Dbprintf("\tFilling in with key A."); - + filled = saMifareECardLoad(sectorsCnt, 0); if (filled != PM3_SUCCESS) { - + Dbprintf("\t [✕] Failed filling with A."); Dbprintf("\tFilling in with key B."); filled = saMifareECardLoad(sectorsCnt, 1); diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index bb50375f9..d0607d28d 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -23,12 +23,12 @@ #include "lz4.h" // uncompress typedef struct lz4_stream_s { - LZ4_streamDecode_t* lz4StreamDecode; - char * next_in; + LZ4_streamDecode_t *lz4StreamDecode; + char *next_in; int avail_in; } lz4_stream; -typedef lz4_stream* lz4_streamp; +typedef lz4_stream *lz4_streamp; // remember which version of the bitstream we have already downloaded to the FPGA static int downloaded_bitstream = 0; @@ -194,9 +194,9 @@ static int get_from_fpga_combined_stream(lz4_streamp compressed_fpga_stream, uin memcpy(&cmp_bytes, compressed_fpga_stream->next_in, sizeof(int)); compressed_fpga_stream->next_in += 4; compressed_fpga_stream->avail_in -= cmp_bytes + 4; - int res = LZ4_decompress_safe_continue(compressed_fpga_stream->lz4StreamDecode, + int res = LZ4_decompress_safe_continue(compressed_fpga_stream->lz4StreamDecode, compressed_fpga_stream->next_in, - (char*)output_buffer, + (char *)output_buffer, cmp_bytes, FPGA_RING_BUFFER_BYTES); if (res <= 0) { @@ -232,9 +232,9 @@ static bool reset_fpga_stream(int bitstream_version, lz4_streamp compressed_fpga uncompressed_bytes_cnt = 0; // initialize z_stream structure for inflate: - compressed_fpga_stream->next_in = (char*)&_binary_obj_fpga_all_bit_z_start; + compressed_fpga_stream->next_in = (char *)&_binary_obj_fpga_all_bit_z_start; compressed_fpga_stream->avail_in = &_binary_obj_fpga_all_bit_z_end - &_binary_obj_fpga_all_bit_z_start; - + int res = LZ4_setStreamDecode(compressed_fpga_stream->lz4StreamDecode, NULL, 0); if (res == 0) return false; @@ -415,7 +415,7 @@ void FpgaDownloadAndGo(int bitstream_version) { lz4_stream compressed_fpga_stream; LZ4_streamDecode_t lz4StreamDecode_body = {{ 0 }}; compressed_fpga_stream.lz4StreamDecode = &lz4StreamDecode_body; - uint8_t * output_buffer = BigBuf_malloc(FPGA_RING_BUFFER_BYTES); + uint8_t *output_buffer = BigBuf_malloc(FPGA_RING_BUFFER_BYTES); if (!reset_fpga_stream(bitstream_version, &compressed_fpga_stream, output_buffer)) return; diff --git a/armsrc/start.c b/armsrc/start.c index 11b1064ba..e2904f6e1 100644 --- a/armsrc/start.c +++ b/armsrc/start.c @@ -29,7 +29,7 @@ static void uncompress_data_section(void) { int avail_out = &__data_end__ - &__data_start__; // uncompressed size. Correct. // uncompress data segment to RAM uintptr_t p = (uintptr_t)&__data_src_start__; - int res = LZ4_decompress_safe((char*)p + 4, &__data_start__, avail_in, avail_out); + int res = LZ4_decompress_safe((char *)p + 4, &__data_start__, avail_in, avail_out); if (res < 0) return; diff --git a/armsrc/string.c b/armsrc/string.c index 300e911df..a3b49dcb1 100644 --- a/armsrc/string.c +++ b/armsrc/string.c @@ -20,21 +20,19 @@ void *memcpy(void *dest, const void *src, int len) { return dest; } -void *memmove (void *dest, const void *src, size_t len) -{ - char *d = dest; - const char *s = src; - if (d < s) - while (len--) - *d++ = *s++; - else - { - char *lasts = (char*)s + (len-1); - char *lastd = d + (len-1); - while (len--) - *lastd-- = *lasts--; +void *memmove(void *dest, const void *src, size_t len) { + char *d = dest; + const char *s = src; + if (d < s) + while (len--) + *d++ = *s++; + else { + char *lasts = (char *)s + (len - 1); + char *lastd = d + (len - 1); + while (len--) + *lastd-- = *lasts--; } - return dest; + return dest; } void *memset(void *dest, int c, int len) { diff --git a/armsrc/string.h b/armsrc/string.h index 53f8e8f71..f4d6e3fc1 100644 --- a/armsrc/string.h +++ b/armsrc/string.h @@ -16,7 +16,7 @@ int strlen(const char *str); void *memcpy(void *dest, const void *src, int len); -void *memmove (void *dest, const void *src, size_t len); +void *memmove(void *dest, const void *src, size_t len); void *memset(void *dest, int c, int len); int memcmp(const void *av, const void *bv, int len); void memxor(uint8_t *dest, uint8_t *src, size_t len); diff --git a/client/android/pm3_main.c b/client/android/pm3_main.c index 5d8d51059..f5f8cc7d7 100644 --- a/client/android/pm3_main.c +++ b/client/android/pm3_main.c @@ -88,7 +88,7 @@ jint Console(JNIEnv *env, jobject instance, jstring cmd_) { PrintAndLogEx(NORMAL, ""); - char *cmd = (char *) ((*env)->GetStringUTFChars(env, cmd_, 0)); + char *cmd = (char *)((*env)->GetStringUTFChars(env, cmd_, 0)); int ret = CommandReceived(cmd); if (ret == 99) { // exit / quit @@ -104,7 +104,7 @@ jint Console(JNIEnv *env, jobject instance, jstring cmd_) { * Is client running! * */ jboolean IsClientRunning(JNIEnv *env, jobject instance) { - return (jboolean) ((jboolean) conn.run); + return (jboolean)((jboolean) conn.run); } /* @@ -116,7 +116,7 @@ jboolean TestPm3(JNIEnv *env, jobject instance) { return false; } bool ret = (TestProxmark() == PM3_SUCCESS); - return (jboolean) (ret); + return (jboolean)(ret); } /* @@ -129,8 +129,8 @@ void ClosePm3(JNIEnv *env, jobject instance) { /* * native function map to jvm * */ - - //iceman: todo, pm3:ify java class root. Return codes, should match PM3_E* codes. + +//iceman: todo, pm3:ify java class root. Return codes, should match PM3_E* codes. JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { JNIEnv *jniEnv = NULL; if ((*vm)->GetEnv(vm, (void **) &jniEnv, JNI_VERSION_1_4) != JNI_OK) { @@ -143,14 +143,14 @@ JNIEXPORT jint JNI_OnLoad(JavaVM *vm, void *reserved) { } jclass clz_test = (*jniEnv)->FindClass(jniEnv, "cn/rrg/devices/Proxmark3RRGRdv4"); JNINativeMethod methods[] = { - {"startExecute", "(Ljava/lang/String;)I", (void *) Console}, - {"stopExecute", "()V", (void *) ClosePm3}, - {"isExecuting", "()Z", (void *) IsClientRunning} + {"startExecute", "(Ljava/lang/String;)I", (void *) Console}, + {"stopExecute", "()V", (void *) ClosePm3}, + {"isExecuting", "()Z", (void *) IsClientRunning} }; JNINativeMethod methods1[] = { - {"testPm3", "()Z", (void *) TestPm3}, - {"closePm3", "()V", ClosePm3} + {"testPm3", "()Z", (void *) TestPm3}, + {"closePm3", "()V", ClosePm3} }; if ((*jniEnv)->RegisterNatives(jniEnv, clazz, methods, sizeof(methods) / sizeof(methods[0])) != JNI_OK) { diff --git a/client/deps/tinycbor/cbor.h b/client/deps/tinycbor/cbor.h index 6890ee597..e595caeb1 100644 --- a/client/deps/tinycbor/cbor.h +++ b/client/deps/tinycbor/cbor.h @@ -558,9 +558,9 @@ enum CborPrettyFlags { /* cf https://sourceforge.net/p/mingw-w64/wiki2/gnu%20printf/ */ typedef CborError(*CborStreamFunction)(void *token, const char *fmt, ...) #if defined(__MINGW32__) || defined(__MINGW64__) - __attribute__((format (__MINGW_PRINTF_FORMAT, 2, 3))); +__attribute__((format(__MINGW_PRINTF_FORMAT, 2, 3))); #elif defined(__GNUC__) - __attribute__((__format__(printf, 2, 3))) +__attribute__((__format__(printf, 2, 3))) #endif ; diff --git a/client/luascripts/test_t55x7.lua b/client/luascripts/test_t55x7.lua index f6e0e1ca2..4be0ed4b6 100644 --- a/client/luascripts/test_t55x7.lua +++ b/client/luascripts/test_t55x7.lua @@ -39,7 +39,7 @@ script run test_t55x7 [-h] [-t <modulation type> ]] arguments = [[ -h this help - -t (optional, defaults to ASK) 'PSK1', 'PSK2', 'PSK3', + -t (optional, defaults to ASK) 'PSK1', 'PSK2', 'PSK3', 'FSK1', 'FSK2', 'FSK1A', 'FSK2A', 'ASK', 'BI' ]] diff --git a/client/luascripts/tracetest.lua b/client/luascripts/tracetest.lua index e45d1ceba..b7e931b99 100644 --- a/client/luascripts/tracetest.lua +++ b/client/luascripts/tracetest.lua @@ -79,7 +79,7 @@ local function main(args) local cmdDataLoad = 'data load %s'; local cwd = core.cwd(); - + local tracesEM = "find '"..cwd.."/traces/ ' -iname 'em*.pm3' -type f" local tracesMOD = "find '"..cwd.."/traces/' -iname 'modulation*.pm3' -type f" diff --git a/client/pyscripts/xorcheck.py b/client/pyscripts/xorcheck.py index f4605a5e7..a10c3bba6 100755 --- a/client/pyscripts/xorcheck.py +++ b/client/pyscripts/xorcheck.py @@ -48,4 +48,4 @@ def main(): print('\nTarget (%02X) requires final LRC XOR byte value: %02X\n' % (target,lrc)) if __name__ == "__main__": - main() \ No newline at end of file + main() diff --git a/client/src/cmdhf15.c b/client/src/cmdhf15.c index 65946b7d5..627e7e4bc 100644 --- a/client/src/cmdhf15.c +++ b/client/src/cmdhf15.c @@ -1683,7 +1683,7 @@ static int CmdHF15Restore(const char *Cmd) { PrintAndLogEx(WARNING, "Could not find file " _YELLOW_("%s"), filename); return PM3_EFILE; } - + if ((datalen % blocksize) != 0) { PrintAndLogEx(WARNING, "Datalen %zu isn't dividable with blocksize %zu", datalen, blocksize); free(data); @@ -1704,7 +1704,7 @@ static int CmdHF15Restore(const char *Cmd) { if (addressed_mode) { char uidhex[17] = {0x00}; hex_to_buffer((uint8_t *)uidhex, uid, sizeof(uid), sizeof(uidhex) - 1, 0, false, true); - hex_to_buffer((uint8_t *)hex, data + i, blocksize, sizeof(hex) - 1, 0, false, true); + hex_to_buffer((uint8_t *)hex, data + i, blocksize, sizeof(hex) - 1, 0, false, true); snprintf(tmpCmd, sizeof(tmpCmd), "%s %s %u %s", newPrefix, uidhex, i, hex); } else { hex_to_buffer((uint8_t *)hex, data + i, blocksize, sizeof(hex) - 1, 0, false, true); @@ -1718,7 +1718,7 @@ static int CmdHF15Restore(const char *Cmd) { break; } } - + if (tried >= retries) { free(data); PrintAndLogEx(FAILED, "Restore failed. Too many retries."); @@ -1729,7 +1729,7 @@ static int CmdHF15Restore(const char *Cmd) { } free(data); PrintAndLogEx(INFO, "done"); - PrintAndLogEx(HINT, "Try reading your card to verify with " _YELLOW_("`hf 15 dump`") ); + PrintAndLogEx(HINT, "Try reading your card to verify with " _YELLOW_("`hf 15 dump`")); return PM3_SUCCESS; } diff --git a/client/src/cmdhflto.c b/client/src/cmdhflto.c index 5add871b1..c62289108 100644 --- a/client/src/cmdhflto.c +++ b/client/src/cmdhflto.c @@ -586,7 +586,7 @@ static int CmdHfLTRestore(const char *Cmd) { } } - if (errors || strlen(Cmd) == 0 ) { + if (errors || strlen(Cmd) == 0) { return usage_lto_restore(); } @@ -597,7 +597,7 @@ static int CmdHfLTRestore(const char *Cmd) { if (str_endswith(lowstr, ".bin")) { uint8_t *dump = NULL; - if (loadFile_safe(filename, "", (void**)&dump, &dump_len) == PM3_SUCCESS) { + if (loadFile_safe(filename, "", (void **)&dump, &dump_len) == PM3_SUCCESS) { restoreLTO(dump, true); } free(dump); @@ -605,7 +605,7 @@ static int CmdHfLTRestore(const char *Cmd) { } else if (str_endswith(lowstr, ".eml")) { uint8_t *dump = NULL; - if (loadFileEML_safe(filename, (void**)&dump, &dump_len) == PM3_SUCCESS) { + if (loadFileEML_safe(filename, (void **)&dump, &dump_len) == PM3_SUCCESS) { restoreLTO(dump, true); } free(dump); diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 7fe84f55e..983055924 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3533,7 +3533,7 @@ int CmdHF14AMfELoad(const char *Cmd) { PrintAndLogEx(WARNING, "Fail, cannot allocate memory"); return PM3_EMALLOC; } - + size_t datalen = 0; //int res = loadFile(filename, ".bin", data, maxdatalen, &datalen); int res = loadFileEML(filename, data, &datalen); @@ -3552,24 +3552,24 @@ int CmdHF14AMfELoad(const char *Cmd) { // convert plain or old mfu format to new format if (blockWidth == 4) { - res = convert_mfu_dump_format(&data, &datalen, true); + res = convert_mfu_dump_format(&data, &datalen, true); if (res != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Failed convert on load to new Ultralight/NTAG format"); free(data); return res; } - + mfu_dump_t *mfu_dump = (mfu_dump_t *)data; PrintAndLogEx(INFO, _CYAN_("MFU dump file information")); PrintAndLogEx(INFO, " version %s", sprint_hex(mfu_dump->version, sizeof(mfu_dump->version))); PrintAndLogEx(INFO, " tb 0 %s", sprint_hex(mfu_dump->tbo, sizeof(mfu_dump->tbo))); PrintAndLogEx(INFO, " tb 1 %s", sprint_hex(mfu_dump->tbo1, sizeof(mfu_dump->tbo1))); - for(uint8_t m = 0; m < 3; m++) { + for (uint8_t m = 0; m < 3; m++) { PrintAndLogEx(INFO, " counter %d %s - tearing 0x%02x", m + 1, sprint_hex(mfu_dump->counter_tearing[m], 3), mfu_dump->counter_tearing[m][3]); } PrintAndLogEx(INFO, " signature %s", sprint_hex(mfu_dump->signature, sizeof(mfu_dump->signature))); - PrintAndLogEx(INFO, " data %s... (only first 8 bytes showing)", sprint_hex(mfu_dump->data, 8)); + PrintAndLogEx(INFO, " data %s... (only first 8 bytes showing)", sprint_hex(mfu_dump->data, 8)); PrintAndLogEx(INFO, " max data page %d, data len %d bytes", mfu_dump->pages, (mfu_dump->pages + 1) * 4); PrintAndLogEx(INFO, " file header size %d", MFU_DUMP_PREFIX_LENGTH); PrintAndLogEx(INFO, "----------------------------------------------"); diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index d56218e4b..0f383fd0a 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -3577,9 +3577,9 @@ static int CmdHF14ADesAuth(const char *Cmd) { } static void DesFill2bPattern( - uint8_t deskeyList[MAX_KEYS_LIST_LEN][8], uint32_t *deskeyListLen, - uint8_t aeskeyList[MAX_KEYS_LIST_LEN][16], uint32_t *aeskeyListLen, - uint8_t k3kkeyList[MAX_KEYS_LIST_LEN][24], uint32_t *k3kkeyListLen, uint32_t *startPattern) { + uint8_t deskeyList[MAX_KEYS_LIST_LEN][8], uint32_t *deskeyListLen, + uint8_t aeskeyList[MAX_KEYS_LIST_LEN][16], uint32_t *aeskeyListLen, + uint8_t k3kkeyList[MAX_KEYS_LIST_LEN][24], uint32_t *k3kkeyListLen, uint32_t *startPattern) { for (uint32_t pt = *startPattern; pt < 0x10000; pt++) { if (*deskeyListLen != MAX_KEYS_LIST_LEN) { @@ -3618,10 +3618,10 @@ static void DesFill2bPattern( } static int AuthCheckDesfire(uint8_t *aid, - uint8_t deskeyList[MAX_KEYS_LIST_LEN][8], uint32_t deskeyListLen, - uint8_t aeskeyList[MAX_KEYS_LIST_LEN][16], uint32_t aeskeyListLen, - uint8_t k3kkeyList[MAX_KEYS_LIST_LEN][24], uint32_t k3kkeyListLen, - uint8_t foundKeys[4][0xE][24 + 1], bool *result) { + uint8_t deskeyList[MAX_KEYS_LIST_LEN][8], uint32_t deskeyListLen, + uint8_t aeskeyList[MAX_KEYS_LIST_LEN][16], uint32_t aeskeyListLen, + uint8_t k3kkeyList[MAX_KEYS_LIST_LEN][24], uint32_t k3kkeyListLen, + uint8_t foundKeys[4][0xE][24 + 1], bool *result) { uint32_t curaid = (aid[0] & 0xFF) + ((aid[1] & 0xFF) << 8) + ((aid[2] & 0xFF) << 16); @@ -4078,17 +4078,17 @@ static int CmdHF14aDesChk(const char *Cmd) { res = loadFileDICTIONARYEx((char *)dict_filename, deskeyList, sizeof(deskeyList), NULL, 16, &keycnt, endFilePosition, &endFilePosition, false); if (res == PM3_SUCCESS && endFilePosition) deskeyListLen = keycnt; - + keycnt = 0; res = loadFileDICTIONARYEx((char *)dict_filename, aeskeyList, sizeof(aeskeyList), NULL, 16, &keycnt, endFilePosition, &endFilePosition, false); if (res == PM3_SUCCESS && endFilePosition) aeskeyListLen = keycnt; - + keycnt = 0; res = loadFileDICTIONARYEx((char *)dict_filename, k3kkeyList, sizeof(k3kkeyList), NULL, 16, &keycnt, endFilePosition, &endFilePosition, false); if (res == PM3_SUCCESS && endFilePosition) k3kkeyListLen = keycnt; - + continue; } } diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index ed7e7d358..dece50f3b 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -1055,39 +1055,39 @@ uint32_t GetHF14AMfU_Type(void) { case 0x0A: { /* MF0UL1001DUx 0004030100000B03 -MF0UL1101DUx 0004030101000B03 -MF0ULH1101DUx 0004030201000B03 -MF0UL1141DUF 0004030301000B03 -MF0UL2101Dxy 0004030101000E03 -MF0UL2101DUx 0004030201000E03 -MF0UL3101DUx 0004030101001103 -MF0ULH3101DUx 0004030201001103 -MF0UL5101DUx 0004030101001303 -NT2L1011F0DUx 0004040101000B03 -NT2H1011G0DUD 0004040201000B03 -NT2L1211F0DUx 0004040101000E03 -NT2H1311G0DUx 0004040201000F03 -NT2H1311F0Dxy 0004040401000F03 -NT2H1411G0DUx 0004040201011103 -NT2H1511G0DUx 0004040201001103 -NT2H1511F0Dxy 0004040401001103 -NT2H1611G0DUx 0004040201001303 -NT2H1611F0Dxy 0004040401001303 -NT2H1311C1DTL 0004040201010F03 -NT2H1311TTDUx 0004040203000F03 -NT3H1101W0FHK 0004040502001303 -NT3H1201W0FHK 0004040502001503 -NT3H1101W0FHK_Variant 0004040502011303 -NT3H1201 0004040502011503 -NT3H2111 0004040502021303 -NT3H2211 0004040502021503 -nhs 0004040600001303 -MF0UN0001DUx 0004030102000B03 -MF0UNH0001DUx 0004030202000B03 -MF0UN1001DUx 0004030103000B03 -MF0UNH1001DUx 0004030203000B03 -NT2L1001G0DUx 0004040102000B03 -NT2H1001G0DUx 0004040202000B03 + MF0UL1101DUx 0004030101000B03 + MF0ULH1101DUx 0004030201000B03 + MF0UL1141DUF 0004030301000B03 + MF0UL2101Dxy 0004030101000E03 + MF0UL2101DUx 0004030201000E03 + MF0UL3101DUx 0004030101001103 + MF0ULH3101DUx 0004030201001103 + MF0UL5101DUx 0004030101001303 + NT2L1011F0DUx 0004040101000B03 + NT2H1011G0DUD 0004040201000B03 + NT2L1211F0DUx 0004040101000E03 + NT2H1311G0DUx 0004040201000F03 + NT2H1311F0Dxy 0004040401000F03 + NT2H1411G0DUx 0004040201011103 + NT2H1511G0DUx 0004040201001103 + NT2H1511F0Dxy 0004040401001103 + NT2H1611G0DUx 0004040201001303 + NT2H1611F0Dxy 0004040401001303 + NT2H1311C1DTL 0004040201010F03 + NT2H1311TTDUx 0004040203000F03 + NT3H1101W0FHK 0004040502001303 + NT3H1201W0FHK 0004040502001503 + NT3H1101W0FHK_Variant 0004040502011303 + NT3H1201 0004040502011503 + NT3H2111 0004040502021303 + NT3H2211 0004040502021503 + nhs 0004040600001303 + MF0UN0001DUx 0004030102000B03 + MF0UNH0001DUx 0004030202000B03 + MF0UN1001DUx 0004030103000B03 + MF0UNH1001DUx 0004030203000B03 + NT2L1001G0DUx 0004040102000B03 + NT2H1001G0DUx 0004040202000B03 */ if (memcmp(version, "\x00\x04\x03\x01\x01\x00\x0B", 7) == 0) { tagtype = UL_EV1_48; break; } @@ -2189,7 +2189,7 @@ static int CmdHF14AMfURestore(const char *Cmd) { uint8_t *dump = NULL; size_t bytes_read = 0; - if (loadFile_safe(filename, "", (void**)&dump, &bytes_read) != PM3_SUCCESS) { + if (loadFile_safe(filename, "", (void **)&dump, &bytes_read) != PM3_SUCCESS) { PrintAndLogEx(WARNING, "Could not find file " _YELLOW_("%s"), filename); return PM3_EIO; } @@ -2200,7 +2200,7 @@ static int CmdHF14AMfURestore(const char *Cmd) { return PM3_ESOFT; } - int res = convert_mfu_dump_format(&dump, &bytes_read, verbose); + int res = convert_mfu_dump_format(&dump, &bytes_read, verbose); if (res != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Failed convert on load to new Ultralight/NTAG format"); free(dump); diff --git a/client/src/cmdlffdx.c b/client/src/cmdlffdx.c index def872fde..c9af2fffc 100644 --- a/client/src/cmdlffdx.c +++ b/client/src/cmdlffdx.c @@ -266,8 +266,8 @@ int demodFDX(void) { } uint8_t bt_par = (extended & 0x100) >> 8; - uint8_t bt_temperature = extended & 0xff; - uint8_t bt_calc_parity = (bitcount(bt_temperature) & 0x1) ? 0 : 1; + uint8_t bt_temperature = extended & 0xff; + uint8_t bt_calc_parity = (bitcount(bt_temperature) & 0x1) ? 0 : 1; uint8_t is_bt_temperature = (bt_calc_parity == bt_par) && !(extended & 0xe00) ; if (is_bt_temperature) { diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index 4e9c5fc1f..24fd5ec37 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -84,7 +84,7 @@ static void set_python_path(char *path) { } if (PySys_SetObject("path", syspath)) { - PrintAndLogEx(WARNING,"Error setting sys.path object"); + PrintAndLogEx(WARNING, "Error setting sys.path object"); } } @@ -300,10 +300,10 @@ static int CmdScriptRun(const char *Cmd) { wchar_t *py_args[argc]; py_args[0] = Py_DecodeLocale(preferredName, NULL); for (int i = 0; i < argc; i++) { - py_args[i+1] = Py_DecodeLocale(argv[i], NULL); + py_args[i + 1] = Py_DecodeLocale(argv[i], NULL); } - PySys_SetArgv(argc+1, py_args); + PySys_SetArgv(argc + 1, py_args); // clean up for (int i = 0; i < argc; ++i) { diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index 63b32890e..2931b33fd 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -509,11 +509,11 @@ static int CmdSmartRaw(const char *Cmd) { TLVPrintFromBuffer(buf, len - 2); else { if (len > 16) { - for (int i=0; i<len; i += 16) { + for (int i = 0; i < len; i += 16) { PrintAndLogEx(SUCCESS, "%s", sprint_hex_ascii(buf + i, 16)) ; } } else { - PrintAndLogEx(SUCCESS, "%s", sprint_hex_ascii(buf, len)) ; + PrintAndLogEx(SUCCESS, "%s", sprint_hex_ascii(buf, len)) ; } } @@ -577,7 +577,7 @@ static int CmdSmartUpgrade(const char *Cmd) { // load firmware file size_t firmware_size = 0; uint8_t *firmware = NULL; - if (loadFile_safe(filename, "", (void**)&firmware, &firmware_size) != PM3_SUCCESS) { + if (loadFile_safe(filename, "", (void **)&firmware, &firmware_size) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Firmware file " _YELLOW_("%s") " not found or locked.", filename); return PM3_EFILE; } @@ -585,7 +585,7 @@ static int CmdSmartUpgrade(const char *Cmd) { // load sha512 file size_t sha512_size = 0; char *hashstring = NULL; - if (loadFile_safe(sha512filename, "", (void**)&hashstring, &sha512_size) != PM3_SUCCESS) { + if (loadFile_safe(sha512filename, "", (void **)&hashstring, &sha512_size) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "SHA-512 file not found or locked."); free(firmware); return PM3_EFILE; diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index c142973d9..04b71d677 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -95,7 +95,7 @@ static bool merge_topaz_reader_frames(uint32_t timestamp, uint32_t *duration, ui while (!is_last_record(*tracepos, traceLen) && !next_record_is_response(*tracepos, trace)) { tracelog_hdr_t *hdr = (tracelog_hdr_t *)(trace + *tracepos); - + *tracepos += TRACELOG_HDR_LEN + hdr->data_len; if ((hdr->data_len == 1) && (*data_len + hdr->data_len <= MAX_TOPAZ_READER_CMD_LEN)) { @@ -153,7 +153,7 @@ static uint16_t printHexLine(uint16_t tracepos, uint16_t traceLen, uint8_t *trac char data_len_str[5]; char temp_str1[3] = {0}; char temp_str2[3] = {0}; - + sprintf(data_len_str, "%04x", hdr->data_len); strncat(temp_str1, data_len_str, 2); temp_str1[2] = '\0'; @@ -257,10 +257,10 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr //1 CRC-command, CRC ok //2 Not crc-command - //--- Draw the data column + //--- Draw the data column char line[18][120] = {{0}}; - if (data_len == 0) { + if (data_len == 0) { sprintf(line[0], "<empty trace - possible error>"); return tracepos; } @@ -401,9 +401,9 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr if (is_last_record(tracepos, traceLen)) return traceLen; if (showWaitCycles && !hdr->isResponse && next_record_is_response(tracepos, trace)) { - + tracelog_hdr_t *next_hdr = (tracelog_hdr_t *)(trace + tracepos); - + PrintAndLogEx(NORMAL, " %10u | %10u | %s |fdt (Frame Delay Time): %d", (EndOfTransmissionTimestamp - first_hdr->timestamp), (next_hdr->timestamp - first_hdr->timestamp), @@ -415,7 +415,7 @@ static uint16_t printTraceLine(uint16_t tracepos, uint16_t traceLen, uint8_t *tr } static int download_trace(void) { - + if (!IfPm3Present()) { PrintAndLogEx(FAILED, "You requested a trace upload in offline mode, consider using parameter '1' for working from Tracebuffer"); return PM3_EINVARG; @@ -487,23 +487,23 @@ static int CmdTraceLoad(const char *Cmd) { free(g_trace); size_t len = 0; - if (loadFile_safe(filename, ".trace", (void**)&g_trace, &len) != PM3_SUCCESS) { + if (loadFile_safe(filename, ".trace", (void **)&g_trace, &len) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "Could not open file " _YELLOW_("%s"), filename); return PM3_EIO; } - + g_traceLen = (long)len; - + PrintAndLogEx(SUCCESS, "Recorded Activity (TraceLen = " _YELLOW_("%lu") " bytes) loaded from " _YELLOW_("%s"), g_traceLen, filename); return PM3_SUCCESS; } static int CmdTraceSave(const char *Cmd) { - + if (g_traceLen == 0) { download_trace(); } - + if (g_traceLen == 0) { PrintAndLogEx(WARNING, "trace is empty, nothing to save"); return PM3_SUCCESS; diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index f1e047c15..f2a99add1 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -1380,7 +1380,7 @@ static int CmdEMVScan(const char *Cmd) { uint8_t buf[APDU_RES_LEN] = {0}; size_t len = 0; uint8_t ODAI_list[4096]; - size_t ODAI_listlen = 0; + size_t ODAI_listlen = 0; uint16_t sw = 0; int res; json_t *root; @@ -1683,24 +1683,24 @@ static int CmdEMVScan(const char *Cmd) { } // Build Input list for Offline Data Authentication - // EMV 4.3 book3 10.3, page 96 - if (first_time && SFIoffline) { - if (SFI < 11) { - const unsigned char *abuf = buf; - size_t elmlen = len; - struct tlv e; - if (tlv_parse_tl(&abuf, &elmlen, &e)) { - memcpy(ODAI_list + ODAI_listlen, &buf[len - elmlen], elmlen); - ODAI_listlen += elmlen; - } else { - PrintAndLogEx(WARNING, "Error SFI[%02x]. Creating input list for Offline Data Authentication error", SFI); - } - } else { - memcpy(ODAI_list + ODAI_listlen, buf, len); - ODAI_listlen += len; - } - first_time = false; - } + // EMV 4.3 book3 10.3, page 96 + if (first_time && SFIoffline) { + if (SFI < 11) { + const unsigned char *abuf = buf; + size_t elmlen = len; + struct tlv e; + if (tlv_parse_tl(&abuf, &elmlen, &e)) { + memcpy(ODAI_list + ODAI_listlen, &buf[len - elmlen], elmlen); + ODAI_listlen += elmlen; + } else { + PrintAndLogEx(WARNING, "Error SFI[%02x]. Creating input list for Offline Data Authentication error", SFI); + } + } else { + memcpy(ODAI_list + ODAI_listlen, buf, len); + ODAI_listlen += len; + } + first_time = false; + } if (decodeTLV) { TLVPrintFromBuffer(buf, len); @@ -1720,18 +1720,18 @@ static int CmdEMVScan(const char *Cmd) { else JsonSaveTLVTreeElm(jsonelm, "$.Data", rsfi, true, true, false); - tlvdb_free(rsfi); + tlvdb_free(rsfi); } } break; } // copy Input list for Offline Data Authentication - if (ODAI_listlen) { - struct tlvdb *oda = tlvdb_fixed(0x21, ODAI_listlen, ODAI_list); // not a standard tag - tlvdb_add(tlvRoot, oda); - PrintAndLogEx(INFO, "Input list for Offline Data Authentication added to TLV [%zu bytes]", ODAI_listlen); - } + if (ODAI_listlen) { + struct tlvdb *oda = tlvdb_fixed(0x21, ODAI_listlen, ODAI_list); // not a standard tag + tlvdb_add(tlvRoot, oda); + PrintAndLogEx(INFO, "Input list for Offline Data Authentication added to TLV [%zu bytes]", ODAI_listlen); + } // getting certificates if (tlvdb_get(tlvRoot, 0x90, NULL)) { @@ -1791,7 +1791,7 @@ static int CmdEMVRoca(const char *Cmd) { size_t len = 0; uint16_t sw = 0; uint8_t ODAI_list[4096]; - size_t ODAI_listlen = 0; + size_t ODAI_listlen = 0; int res; CLIParserContext *ctx; @@ -1955,26 +1955,26 @@ static int CmdEMVRoca(const char *Cmd) { PrintAndLogEx(ERR, "SFI[%02x]. APDU error %4x", SFI, sw); continue; } - - // Build Input list for Offline Data Authentication - // EMV 4.3 book3 10.3, page 96 - if (SFIoffline > 0) { - if (SFI < 11) { - const unsigned char *abuf = buf; - size_t elmlen = len; - struct tlv e; - if (tlv_parse_tl(&abuf, &elmlen, &e)) { - memcpy(ODAI_list + ODAI_listlen, &buf[len - elmlen], elmlen); - ODAI_listlen += elmlen; - } else { - PrintAndLogEx(WARNING, "Error SFI[%02x]. Creating input list for Offline Data Authentication error", SFI); - } - } else { - memcpy(ODAI_list + ODAI_listlen, buf, len); - ODAI_listlen += len; - } - SFIoffline--; - } + + // Build Input list for Offline Data Authentication + // EMV 4.3 book3 10.3, page 96 + if (SFIoffline > 0) { + if (SFI < 11) { + const unsigned char *abuf = buf; + size_t elmlen = len; + struct tlv e; + if (tlv_parse_tl(&abuf, &elmlen, &e)) { + memcpy(ODAI_list + ODAI_listlen, &buf[len - elmlen], elmlen); + ODAI_listlen += elmlen; + } else { + PrintAndLogEx(WARNING, "Error SFI[%02x]. Creating input list for Offline Data Authentication error", SFI); + } + } else { + memcpy(ODAI_list + ODAI_listlen, buf, len); + ODAI_listlen += len; + } + SFIoffline--; + } } } break; @@ -1982,14 +1982,14 @@ static int CmdEMVRoca(const char *Cmd) { // getting certificates int ret = PM3_SUCCESS; - + // copy Input list for Offline Data Authentication - if (ODAI_listlen) { - struct tlvdb *oda = tlvdb_fixed(0x21, ODAI_listlen, ODAI_list); // not a standard tag - tlvdb_add(tlvRoot, oda); - PrintAndLogEx(INFO, "Input list for Offline Data Authentication added to TLV [%zu bytes]", ODAI_listlen); - } - + if (ODAI_listlen) { + struct tlvdb *oda = tlvdb_fixed(0x21, ODAI_listlen, ODAI_list); // not a standard tag + tlvdb_add(tlvRoot, oda); + PrintAndLogEx(INFO, "Input list for Offline Data Authentication added to TLV [%zu bytes]", ODAI_listlen); + } + if (tlvdb_get(tlvRoot, 0x90, NULL)) { PrintAndLogEx(INFO, "Recovering certificates"); PKISetStrictExecution(false); @@ -2025,7 +2025,7 @@ static int CmdEMVRoca(const char *Cmd) { ret = PM3_ESOFT; goto out; } - + PrintAndLogEx(SUCCESS, "ICC Public key recovered RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), sprint_hex(icc_pk->rid, 5), icc_pk->index, diff --git a/client/src/emv/emvcore.c b/client/src/emv/emvcore.c index 2f9c82b1d..23de78c7d 100644 --- a/client/src/emv/emvcore.c +++ b/client/src/emv/emvcore.c @@ -309,7 +309,7 @@ static int EMVExchangeEx(EMVCommandChannel channel, bool ActivateField, bool Lea res = 1; if (IfPm3Smartcard()) res = ExchangeAPDUSC(true, data, datalen, ActivateField, LeaveFieldON, Result, (int)MaxResultLen, (int *)ResultLen); - + if (res) { return res; } @@ -677,12 +677,12 @@ int trSDA(struct tlvdb *tlv) { PrintAndLogEx(ERR, "Error: Issuer certificate not found, exiting"); return 2; } - + PrintAndLogEx(SUCCESS, "Issuer Public key recovered RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), - sprint_hex(issuer_pk->rid, 5), - issuer_pk->index, - sprint_hex(issuer_pk->serial, 3) - ); + sprint_hex(issuer_pk->rid, 5), + issuer_pk->index, + sprint_hex(issuer_pk->serial, 3) + ); const struct tlv *sda_tlv = tlvdb_get(tlv, 0x21, NULL); if (!sda_tlv || sda_tlv->len < 1) { @@ -736,12 +736,12 @@ int trDDA(EMVCommandChannel channel, bool decodeTLV, struct tlvdb *tlv) { PrintAndLogEx(ERR, "Error: Issuer certificate not found, exiting"); return 2; } - + PrintAndLogEx(SUCCESS, "Issuer Public key recovered RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), - sprint_hex(issuer_pk->rid, 5), - issuer_pk->index, - sprint_hex(issuer_pk->serial, 3) - ); + sprint_hex(issuer_pk->rid, 5), + issuer_pk->index, + sprint_hex(issuer_pk->serial, 3) + ); struct emv_pk *icc_pk = emv_pki_recover_icc_cert(issuer_pk, tlv, sda_tlv); if (!icc_pk) { @@ -765,7 +765,7 @@ int trDDA(EMVCommandChannel channel, bool decodeTLV, struct tlvdb *tlv) { PrintAndLogEx(SUCCESS, "ICC PE Public key recovered. RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), sprint_hex(icc_pe_pk->rid, 5), icc_pe_pk->index, - sprint_hex(icc_pe_pk->serial,3) + sprint_hex(icc_pe_pk->serial, 3) ); } } else { @@ -943,12 +943,12 @@ int trCDA(struct tlvdb *tlv, struct tlvdb *ac_tlv, struct tlv *pdol_data_tlv, st emv_pk_free(pk); return 2; } - + PrintAndLogEx(SUCCESS, "Issuer Public key recovered RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), - sprint_hex(issuer_pk->rid, 5), - issuer_pk->index, - sprint_hex(issuer_pk->serial, 3) - ); + sprint_hex(issuer_pk->rid, 5), + issuer_pk->index, + sprint_hex(issuer_pk->serial, 3) + ); struct emv_pk *icc_pk = emv_pki_recover_icc_cert(issuer_pk, tlv, sda_tlv); if (!icc_pk) { @@ -961,7 +961,7 @@ int trCDA(struct tlvdb *tlv, struct tlvdb *ac_tlv, struct tlv *pdol_data_tlv, st PrintAndLogEx(SUCCESS, "ICC Public key recovered. RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), sprint_hex(icc_pk->rid, 5), icc_pk->index, - sprint_hex(icc_pk->serial,3) + sprint_hex(icc_pk->serial, 3) ); struct tlvdb *dac_db = emv_pki_recover_dac(issuer_pk, tlv, sda_tlv); @@ -1013,10 +1013,10 @@ int RecoveryCertificates(struct tlvdb *tlvRoot, json_t *root) { } PrintAndLogEx(SUCCESS, "Issuer Public key recovered RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), - sprint_hex(issuer_pk->rid, 5), - issuer_pk->index, - sprint_hex(issuer_pk->serial, 3) - ); + sprint_hex(issuer_pk->rid, 5), + issuer_pk->index, + sprint_hex(issuer_pk->serial, 3) + ); JsonSaveBufAsHex(root, "$.ApplicationData.RID", issuer_pk->rid, 5); @@ -1033,12 +1033,12 @@ int RecoveryCertificates(struct tlvdb *tlvRoot, json_t *root) { PrintAndLogEx(WARNING, "WARNING: ICC certificate not found, exiting"); return 2; } - + PrintAndLogEx(SUCCESS, "ICC Public key recovered RID " _YELLOW_("%s") " IDX " _YELLOW_("%02hhx") " CSN " _YELLOW_("%s"), - sprint_hex(icc_pk->rid, 5), - icc_pk->index, - sprint_hex(icc_pk->serial, 3) - ); + sprint_hex(icc_pk->rid, 5), + icc_pk->index, + sprint_hex(icc_pk->serial, 3) + ); char *icc_pk_c = emv_pk_dump_pk(icc_pk); JsonSaveStr(root, "$.ApplicationData.ICCPublicKeyDec", icc_pk_c); diff --git a/client/src/emv/test/sda_test.c b/client/src/emv/test/sda_test.c index 3907027ad..04f3b70ae 100644 --- a/client/src/emv/test/sda_test.c +++ b/client/src/emv/test/sda_test.c @@ -219,7 +219,7 @@ static int sda_test_pk(bool verbose) { struct emv_pk *ipk = emv_pki_recover_issuer_cert(pk, db); if (!ipk) { - PrintAndLogEx(WARNING, "Could not recover Issuer certificate!"); + PrintAndLogEx(WARNING, "Could not recover Issuer certificate!"); tlvdb_free(db); return 2; } @@ -269,4 +269,4 @@ int exec_sda_test(bool verbose) { } PrintAndLogEx(SUCCESS, "SDA test pk: %s", _GREEN_("passed")); return 0; -} \ No newline at end of file +} diff --git a/client/src/fileutils.c b/client/src/fileutils.c index c27dc0a15..93689d2fa 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -832,7 +832,7 @@ int loadFileEML(const char *preferredName, void *data, size_t *datalen) { continue; strcleanrn(line, sizeof(line)); - + int res = param_gethex_to_eol(line, 0, buf, sizeof(buf), &hexlen); if (res == 0) { memcpy(udata + counter, buf, hexlen); @@ -884,7 +884,7 @@ int loadFileEML_safe(const char *preferredName, void **pdata, size_t *datalen) { fclose(f); return PM3_EMALLOC; } - + // 128 + 2 newline chars + 1 null terminator char line[131]; memset(line, 0, sizeof(line)); @@ -911,10 +911,10 @@ int loadFileEML_safe(const char *preferredName, void **pdata, size_t *datalen) { continue; strcleanrn(line, sizeof(line)); - + res = param_gethex_to_eol(line, 0, buf, sizeof(buf), &hexlen); if (res == 0) { - memcpy( tmp + counter, buf, hexlen); + memcpy(tmp + counter, buf, hexlen); counter += hexlen; } else { retval = PM3_ESOFT; @@ -1286,11 +1286,11 @@ mfu_df_e detect_mfu_dump_format(uint8_t **dump, size_t *dumplen, bool verbose) { mfu_df_e retval = MFU_DF_UNKNOWN; uint8_t bcc0, bcc1; uint8_t ct = 0x88; - + // detect new mfu_dump_t *new = (mfu_dump_t *)*dump; bcc0 = ct ^ new->data[0] ^ new->data[1] ^ new->data[2]; - bcc1 = new->data[4] ^ new->data[5] ^ new->data[6] ^ new->data[7]; + bcc1 = new->data[4] ^ new->data[5] ^ new->data[6] ^ new->data[7]; if (bcc0 == new->data[3] && bcc1 == new->data[8]) { retval = MFU_DF_NEWBIN; } @@ -1316,8 +1316,8 @@ mfu_df_e detect_mfu_dump_format(uint8_t **dump, size_t *dumplen, bool verbose) { } if (verbose) { - switch(retval) { - case MFU_DF_NEWBIN: + switch (retval) { + case MFU_DF_NEWBIN: PrintAndLogEx(INFO, "detected " _GREEN_("new") " mfu dump format"); break; case MFU_DF_OLDBIN: @@ -1335,8 +1335,8 @@ mfu_df_e detect_mfu_dump_format(uint8_t **dump, size_t *dumplen, bool verbose) { } static int convert_plain_mfu_dump(uint8_t **dump, size_t *dumplen, bool verbose) { - - mfu_dump_t *mfu = (mfu_dump_t *) calloc( sizeof(mfu_dump_t), sizeof(uint8_t)); + + mfu_dump_t *mfu = (mfu_dump_t *) calloc(sizeof(mfu_dump_t), sizeof(uint8_t)); if (mfu == NULL) { return PM3_EMALLOC; } @@ -1344,11 +1344,11 @@ static int convert_plain_mfu_dump(uint8_t **dump, size_t *dumplen, bool verbose) memcpy(mfu->data, *dump, *dumplen); mfu->pages = *dumplen / 4 - 1; - + if (verbose) { PrintAndLogEx(SUCCESS, "plain mfu dump format was converted to " _GREEN_("%d") " blocks", mfu->pages + 1); } - + *dump = (uint8_t *)mfu; *dumplen += MFU_DUMP_PREFIX_LENGTH ; return PM3_SUCCESS; @@ -1361,8 +1361,8 @@ static int convert_old_mfu_dump(uint8_t **dump, size_t *dumplen, bool verbose) { size_t old_data_len = *dumplen - OLD_MFU_DUMP_PREFIX_LENGTH; size_t new_dump_len = old_data_len + MFU_DUMP_PREFIX_LENGTH; - - mfu_dump_t *mfu_dump = (mfu_dump_t *) calloc( sizeof(mfu_dump_t), sizeof(uint8_t)); + + mfu_dump_t *mfu_dump = (mfu_dump_t *) calloc(sizeof(mfu_dump_t), sizeof(uint8_t)); if (mfu_dump == NULL) { return PM3_EMALLOC; } @@ -1370,7 +1370,7 @@ static int convert_old_mfu_dump(uint8_t **dump, size_t *dumplen, bool verbose) { memcpy(mfu_dump->version, old_mfu_dump->version, sizeof(mfu_dump->version)); memcpy(mfu_dump->tbo, old_mfu_dump->tbo, sizeof(mfu_dump->tbo)); memcpy(mfu_dump->signature, old_mfu_dump->signature, sizeof(mfu_dump->signature)); - + mfu_dump->tbo1[0] = old_mfu_dump->tbo1[0]; for (int i = 0; i < 3; i++) { @@ -1381,7 +1381,7 @@ static int convert_old_mfu_dump(uint8_t **dump, size_t *dumplen, bool verbose) { mfu_dump->pages = old_data_len / 4 - 1; - if (verbose) { + if (verbose) { PrintAndLogEx(SUCCESS, "old mfu dump format was converted to " _GREEN_("%d") " blocks", mfu_dump->pages + 1); } @@ -1396,11 +1396,11 @@ int convert_mfu_dump_format(uint8_t **dump, size_t *dumplen, bool verbose) { if (!dump || !dumplen || *dumplen < OLD_MFU_DUMP_PREFIX_LENGTH) { return PM3_EINVARG; } - + mfu_df_e res = detect_mfu_dump_format(dump, dumplen, verbose); - switch(res) { - case MFU_DF_NEWBIN: + switch (res) { + case MFU_DF_NEWBIN: return PM3_SUCCESS; case MFU_DF_OLDBIN: return convert_old_mfu_dump(dump, dumplen, verbose); diff --git a/client/src/fileutils.h b/client/src/fileutils.h index 30dc00251..d9bad1364 100644 --- a/client/src/fileutils.h +++ b/client/src/fileutils.h @@ -264,7 +264,7 @@ typedef enum { * @return PM3_SUCCESS for ok, PM3_ESOFT for fails */ int convert_mfu_dump_format(uint8_t **dump, size_t *dumplen, bool verbose); -mfu_df_e detect_mfu_dump_format(uint8_t **dump, size_t *dumplen, bool verbose); +mfu_df_e detect_mfu_dump_format(uint8_t **dump, size_t *dumplen, bool verbose); int searchAndList(const char *pm3dir, const char *ext); int searchFile(char **foundpath, const char *pm3dir, const char *searchname, const char *suffix, bool silent); diff --git a/client/src/jansson_path.c b/client/src/jansson_path.c index 0c0d76a05..b0db54675 100644 --- a/client/src/jansson_path.c +++ b/client/src/jansson_path.c @@ -85,8 +85,8 @@ static void jsonp_error_init(json_error_t *error, const char *source) { } static void jsonp_error_vset(json_error_t *error, int line, int column, - size_t position, enum json_error_code code, - const char *msg, va_list ap) { + size_t position, enum json_error_code code, + const char *msg, va_list ap) { if (!error) return; @@ -105,8 +105,8 @@ static void jsonp_error_vset(json_error_t *error, int line, int column, } static void jsonp_error_set(json_error_t *error, int line, int column, - size_t position, enum json_error_code code, - const char *msg, ...) { + size_t position, enum json_error_code code, + const char *msg, ...) { va_list ap; va_start(ap, msg); jsonp_error_vset(error, line, column, position, code, msg, ap); diff --git a/client/src/loclass/cipherutils.c b/client/src/loclass/cipherutils.c index 31ff90e50..76415b74f 100644 --- a/client/src/loclass/cipherutils.c +++ b/client/src/loclass/cipherutils.c @@ -174,7 +174,7 @@ void printarr_human_readable(const char *title, uint8_t *arr, int len) { PrintAndLogEx(INFO, "%s", title); for (i = 0; i < len; i++) { if (i % 16 == 0) { - + if (i == 0) cx += snprintf(output + cx, outsize - cx, "%02x| ", i); else @@ -204,9 +204,9 @@ static int testBitStream(void) { } if (memcmp(input, output, sizeof(input)) == 0) { - PrintAndLogEx(SUCCESS, " Bitstream test 1 (%s)", _GREEN_("ok") ); + PrintAndLogEx(SUCCESS, " Bitstream test 1 (%s)", _GREEN_("ok")); } else { - PrintAndLogEx(FAILED, " Bitstream test 1 (%s)", _RED_("failed") ); + PrintAndLogEx(FAILED, " Bitstream test 1 (%s)", _RED_("failed")); uint8_t i; for (i = 0 ; i < ARRAYLEN(input) ; i++) { PrintAndLogEx(NORMAL, " IN %02x, OUT %02x", input[i], output[i]); @@ -234,9 +234,9 @@ static int testReversedBitstream(void) { } if (memcmp(input, output, sizeof(input)) == 0) { - PrintAndLogEx(SUCCESS, " Bitstream test 2 (%s)", _GREEN_("ok") ); + PrintAndLogEx(SUCCESS, " Bitstream test 2 (%s)", _GREEN_("ok")); } else { - PrintAndLogEx(FAILED, " Bitstream test 2 (%s)", _RED_("failed") ); + PrintAndLogEx(FAILED, " Bitstream test 2 (%s)", _RED_("failed")); uint8_t i; for (i = 0 ; i < ARRAYLEN(input) ; i++) { PrintAndLogEx(NORMAL, " IN %02x, MIDDLE: %02x, OUT %02x", input[i], reverse[i], output[i]); @@ -251,7 +251,7 @@ int testCipherUtils(void) { int retval = testBitStream(); if (retval == PM3_SUCCESS) retval = testReversedBitstream(); - + return retval; } #endif diff --git a/client/src/loclass/elite_crack.c b/client/src/loclass/elite_crack.c index 83e2a9146..a811106d3 100644 --- a/client/src/loclass/elite_crack.c +++ b/client/src/loclass/elite_crack.c @@ -481,7 +481,7 @@ int calculateMasterKey(uint8_t first16bytes[], uint64_t master_key[]) { if (memcmp(z_0, result, 4) != 0) { PrintAndLogEx(WARNING, _RED_("Failed to verify") " calculated master key (k_cus)! Something is wrong."); return PM3_ESOFT; - } + } PrintAndLogEx(SUCCESS, _GREEN_("Key verified ok!")); return PM3_SUCCESS; @@ -501,9 +501,9 @@ int bruteforceDump(uint8_t dump[], size_t dumpsize, uint16_t keytable[]) { dumpdata *attack = (dumpdata *) calloc(itemsize, sizeof(uint8_t)); if (attack == NULL) { PrintAndLogEx(WARNING, "failed to allocate memory"); - return PM3_EMALLOC; + return PM3_EMALLOC; } - + int res = 0; for (i = 0 ; i * itemsize < dumpsize ; i++) { memcpy(attack, dump + i * itemsize, itemsize); @@ -670,13 +670,13 @@ int testElite(bool slowtests) { int res = PM3_SUCCESS; PrintAndLogEx(INFO, "Testing hash1..."); res += _testHash1(); - PrintAndLogEx(INFO, " hash1 (%s)", (res == PM3_SUCCESS) ? _GREEN_("ok") : _RED_("fail") ); + PrintAndLogEx(INFO, " hash1 (%s)", (res == PM3_SUCCESS) ? _GREEN_("ok") : _RED_("fail")); PrintAndLogEx(INFO, "Testing key diversification..."); res += _test_iclass_key_permutation(); if (res == PM3_SUCCESS) - PrintAndLogEx(INFO, " key diversification (%s)", (res == PM3_SUCCESS) ? _GREEN_("ok") : _RED_("fail") ); - + PrintAndLogEx(INFO, " key diversification (%s)", (res == PM3_SUCCESS) ? _GREEN_("ok") : _RED_("fail")); + if (slowtests) res += _testBruteforce(); diff --git a/client/src/loclass/ikeys.c b/client/src/loclass/ikeys.c index cf14450bd..3adcd97bb 100644 --- a/client/src/loclass/ikeys.c +++ b/client/src/loclass/ikeys.c @@ -228,13 +228,13 @@ static void printState(const char *desc, uint64_t c) { return; char s[60] = {0}; snprintf(s, sizeof(s), "%s : ", desc); - + uint8_t x = (c & 0xFF00000000000000) >> 56; uint8_t y = (c & 0x00FF000000000000) >> 48; - + snprintf(s + strlen(s), sizeof(s) - strlen(s), " %02x %02x", x, y); - for (uint8_t i = 0; i < 8; i++) + for (uint8_t i = 0; i < 8; i++) snprintf(s + strlen(s), sizeof(s) - strlen(s), " %02x", getSixBitByte(c, i)); PrintAndLogEx(DEBUG, "%s", s); @@ -353,7 +353,7 @@ void hash0(uint64_t c, uint8_t k[8]) { * @param key * @param div_key */ -void diversifyKey(uint8_t* csn, uint8_t* key, uint8_t* div_key) { +void diversifyKey(uint8_t *csn, uint8_t *key, uint8_t *div_key) { // Prepare the DES key mbedtls_des_setkey_enc(&ctx_enc, key); @@ -581,7 +581,7 @@ static int testCryptedCSN(uint64_t crypted_csn, uint64_t expected) { PrintAndLogEx(DEBUG, ""); PrintAndLogEx(DEBUG, " {csn} %"PRIx64, crypted_csn); PrintAndLogEx(DEBUG, " {csn-revz} %"PRIx64, crypted_csn_swapped); - PrintAndLogEx(DEBUG, " hash0 %"PRIx64 " (%s)", resultbyte, (resultbyte == expected) ? _GREEN_("OK") : _RED_("FAIL") ); + PrintAndLogEx(DEBUG, " hash0 %"PRIx64 " (%s)", resultbyte, (resultbyte == expected) ? _GREEN_("OK") : _RED_("FAIL")); if (resultbyte != expected) { PrintAndLogEx(DEBUG, " expected " _YELLOW_("%"PRIx64), expected); @@ -602,7 +602,7 @@ static int testDES2(uint64_t csn, uint64_t expected) { uint64_t crypt_csn = x_bytes_to_num(result, 8); PrintAndLogEx(DEBUG, " {csn} %"PRIx64, crypt_csn); - PrintAndLogEx(DEBUG, " expected %"PRIx64 " (%s)", expected, (expected == crypt_csn) ? _GREEN_("OK") : _RED_("FAIL") ); + PrintAndLogEx(DEBUG, " expected %"PRIx64 " (%s)", expected, (expected == crypt_csn) ? _GREEN_("OK") : _RED_("FAIL")); if (expected != crypt_csn) return PM3_ESOFT; @@ -635,7 +635,7 @@ static int doTestsWithKnownInputs(void) { res += testCryptedCSN(0x21ba6565071f9299, 0x34e80f88d5cf39ea); res += testCryptedCSN(0x14e2adfc5bb7e134, 0x6ac90c6508bd9ea3); - if (res != PM3_SUCCESS) { + if (res != PM3_SUCCESS) { PrintAndLogEx(FAILED, "%d res occurred (9 testcases)", res); res = PM3_ESOFT; } else { diff --git a/client/src/preferences.c b/client/src/preferences.c index b5599f1ba..4313c9456 100644 --- a/client/src/preferences.c +++ b/client/src/preferences.c @@ -912,7 +912,7 @@ static int CmdPrefShow(const char *Cmd) { char *fn = prefGetFilename(); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, _CYAN_("Preferences loaded from " _YELLOW_("%s")), fn); - free(fn); + free(fn); } else { PrintAndLogEx(ERR, "Preferences not loaded"); return PM3_ESOFT; diff --git a/common/lz4/lz4.c b/common/lz4/lz4.c index 9de0c00db..5bca93e08 100644 --- a/common/lz4/lz4.c +++ b/common/lz4/lz4.c @@ -193,7 +193,7 @@ #define MFLIMIT 12 /* see ../doc/lz4_Block_format.md#parsing-restrictions */ #define MATCH_SAFEGUARD_DISTANCE ((2*WILDCOPYLENGTH) - MINMATCH) /* ensure it's possible to write 2 x wildcopyLength without overflowing output buffer */ #define FASTLOOP_SAFE_DISTANCE 64 -static const int LZ4_minLength = (MFLIMIT+1); +static const int LZ4_minLength = (MFLIMIT + 1); #define KB *(1 <<10) #define MB *(1 <<20) @@ -242,25 +242,25 @@ static int g_debuglog_enable = 1; **************************************/ #if defined(__cplusplus) || (defined (__STDC_VERSION__) && (__STDC_VERSION__ >= 199901L) /* C99 */) # include <stdint.h> - typedef uint8_t BYTE; - typedef uint16_t U16; - typedef uint32_t U32; - typedef int32_t S32; - typedef uint64_t U64; - typedef uintptr_t uptrval; +typedef uint8_t BYTE; +typedef uint16_t U16; +typedef uint32_t U32; +typedef int32_t S32; +typedef uint64_t U64; +typedef uintptr_t uptrval; #else - typedef unsigned char BYTE; - typedef unsigned short U16; - typedef unsigned int U32; - typedef signed int S32; - typedef unsigned long long U64; - typedef size_t uptrval; /* generally true, except OpenVMS-64 */ +typedef unsigned char BYTE; +typedef unsigned short U16; +typedef unsigned int U32; +typedef signed int S32; +typedef unsigned long long U64; +typedef size_t uptrval; /* generally true, except OpenVMS-64 */ #endif #if defined(__x86_64__) - typedef U64 reg_t; /* 64-bits in x32 mode */ +typedef U64 reg_t; /* 64-bits in x32 mode */ #else - typedef size_t reg_t; /* 32-bits in x32 mode */ +typedef size_t reg_t; /* 32-bits in x32 mode */ #endif typedef enum { @@ -273,8 +273,7 @@ typedef enum { /*-************************************ * Reading and writing into memory **************************************/ -static unsigned LZ4_isLittleEndian(void) -{ +static unsigned LZ4_isLittleEndian(void) { const union { U32 u; BYTE c[4]; } one = { 1 }; /* don't use static : performance detrimental */ return one.c[0]; } @@ -283,12 +282,12 @@ static unsigned LZ4_isLittleEndian(void) #if defined(LZ4_FORCE_MEMORY_ACCESS) && (LZ4_FORCE_MEMORY_ACCESS==2) /* lie to the compiler about data alignment; use with caution */ -static U16 LZ4_read16(const void* memPtr) { return *(const U16*) memPtr; } -static U32 LZ4_read32(const void* memPtr) { return *(const U32*) memPtr; } -static reg_t LZ4_read_ARCH(const void* memPtr) { return *(const reg_t*) memPtr; } +static U16 LZ4_read16(const void *memPtr) { return *(const U16 *) memPtr; } +static U32 LZ4_read32(const void *memPtr) { return *(const U32 *) memPtr; } +static reg_t LZ4_read_ARCH(const void *memPtr) { return *(const reg_t *) memPtr; } -static void LZ4_write16(void* memPtr, U16 value) { *(U16*)memPtr = value; } -static void LZ4_write32(void* memPtr, U32 value) { *(U32*)memPtr = value; } +static void LZ4_write16(void *memPtr, U16 value) { *(U16 *)memPtr = value; } +static void LZ4_write32(void *memPtr, U32 value) { *(U32 *)memPtr = value; } #elif defined(LZ4_FORCE_MEMORY_ACCESS) && (LZ4_FORCE_MEMORY_ACCESS==1) @@ -296,73 +295,72 @@ static void LZ4_write32(void* memPtr, U32 value) { *(U32*)memPtr = value; } /* currently only defined for gcc and icc */ typedef union { U16 u16; U32 u32; reg_t uArch; } __attribute__((packed)) unalign; -static U16 LZ4_read16(const void* ptr) { return ((const unalign*)ptr)->u16; } -static U32 LZ4_read32(const void* ptr) { return ((const unalign*)ptr)->u32; } -static reg_t LZ4_read_ARCH(const void* ptr) { return ((const unalign*)ptr)->uArch; } +static U16 LZ4_read16(const void *ptr) { return ((const unalign *)ptr)->u16; } +static U32 LZ4_read32(const void *ptr) { return ((const unalign *)ptr)->u32; } +static reg_t LZ4_read_ARCH(const void *ptr) { return ((const unalign *)ptr)->uArch; } -static void LZ4_write16(void* memPtr, U16 value) { ((unalign*)memPtr)->u16 = value; } -static void LZ4_write32(void* memPtr, U32 value) { ((unalign*)memPtr)->u32 = value; } +static void LZ4_write16(void *memPtr, U16 value) { ((unalign *)memPtr)->u16 = value; } +static void LZ4_write32(void *memPtr, U32 value) { ((unalign *)memPtr)->u32 = value; } #else /* safe and portable access using memcpy() */ -static U16 LZ4_read16(const void* memPtr) -{ - U16 val; memcpy(&val, memPtr, sizeof(val)); return val; +static U16 LZ4_read16(const void *memPtr) { + U16 val; + memcpy(&val, memPtr, sizeof(val)); + return val; } -static U32 LZ4_read32(const void* memPtr) -{ - U32 val; memcpy(&val, memPtr, sizeof(val)); return val; +static U32 LZ4_read32(const void *memPtr) { + U32 val; + memcpy(&val, memPtr, sizeof(val)); + return val; } -static reg_t LZ4_read_ARCH(const void* memPtr) -{ - reg_t val; memcpy(&val, memPtr, sizeof(val)); return val; +static reg_t LZ4_read_ARCH(const void *memPtr) { + reg_t val; + memcpy(&val, memPtr, sizeof(val)); + return val; } -static void LZ4_write16(void* memPtr, U16 value) -{ +static void LZ4_write16(void *memPtr, U16 value) { memcpy(memPtr, &value, sizeof(value)); } -static void LZ4_write32(void* memPtr, U32 value) -{ +static void LZ4_write32(void *memPtr, U32 value) { memcpy(memPtr, &value, sizeof(value)); } #endif /* LZ4_FORCE_MEMORY_ACCESS */ -static U16 LZ4_readLE16(const void* memPtr) -{ +static U16 LZ4_readLE16(const void *memPtr) { if (LZ4_isLittleEndian()) { return LZ4_read16(memPtr); } else { - const BYTE* p = (const BYTE*)memPtr; - return (U16)((U16)p[0] + (p[1]<<8)); + const BYTE *p = (const BYTE *)memPtr; + return (U16)((U16)p[0] + (p[1] << 8)); } } -static void LZ4_writeLE16(void* memPtr, U16 value) -{ +static void LZ4_writeLE16(void *memPtr, U16 value) { if (LZ4_isLittleEndian()) { LZ4_write16(memPtr, value); } else { - BYTE* p = (BYTE*)memPtr; + BYTE *p = (BYTE *)memPtr; p[0] = (BYTE) value; - p[1] = (BYTE)(value>>8); + p[1] = (BYTE)(value >> 8); } } /* customized variant of memcpy, which can overwrite up to 8 bytes beyond dstEnd */ LZ4_FORCE_O2_INLINE_GCC_PPC64LE -void LZ4_wildCopy8(void* dstPtr, const void* srcPtr, void* dstEnd) -{ - BYTE* d = (BYTE*)dstPtr; - const BYTE* s = (const BYTE*)srcPtr; - BYTE* const e = (BYTE*)dstEnd; +void LZ4_wildCopy8(void *dstPtr, const void *srcPtr, void *dstEnd) { + BYTE *d = (BYTE *)dstPtr; + const BYTE *s = (const BYTE *)srcPtr; + BYTE *const e = (BYTE *)dstEnd; - do { memcpy(d,s,8); d+=8; s+=8; } while (d<e); + do { memcpy(d, s, 8); d += 8; s += 8; } + while (d < e); } static const unsigned inc32table[8] = {0, 1, 2, 1, 0, 4, 4, 4}; @@ -373,9 +371,9 @@ static const int dec64table[8] = {0, 0, 0, -1, -4, 1, 2, 3}; # if defined(__i386__) || defined(__x86_64__) # define LZ4_FAST_DEC_LOOP 1 # elif defined(__aarch64__) && !defined(__clang__) - /* On aarch64, we disable this optimization for clang because on certain - * mobile chipsets and clang, it reduces performance. For more information - * refer to https://github.com/lz4/lz4/pull/707. */ +/* On aarch64, we disable this optimization for clang because on certain + * mobile chipsets and clang, it reduces performance. For more information + * refer to https://github.com/lz4/lz4/pull/707. */ # define LZ4_FAST_DEC_LOOP 1 # else # define LZ4_FAST_DEC_LOOP 0 @@ -385,15 +383,14 @@ static const int dec64table[8] = {0, 0, 0, -1, -4, 1, 2, 3}; #if LZ4_FAST_DEC_LOOP LZ4_FORCE_O2_INLINE_GCC_PPC64LE void -LZ4_memcpy_using_offset_base(BYTE* dstPtr, const BYTE* srcPtr, BYTE* dstEnd, const size_t offset) -{ +LZ4_memcpy_using_offset_base(BYTE *dstPtr, const BYTE *srcPtr, BYTE *dstEnd, const size_t offset) { if (offset < 8) { dstPtr[0] = srcPtr[0]; dstPtr[1] = srcPtr[1]; dstPtr[2] = srcPtr[2]; dstPtr[3] = srcPtr[3]; srcPtr += inc32table[offset]; - memcpy(dstPtr+4, srcPtr, 4); + memcpy(dstPtr + 4, srcPtr, 4); srcPtr -= dec64table[offset]; dstPtr += 8; } else { @@ -409,42 +406,41 @@ LZ4_memcpy_using_offset_base(BYTE* dstPtr, const BYTE* srcPtr, BYTE* dstEnd, con * this version copies two times 16 bytes (instead of one time 32 bytes) * because it must be compatible with offsets >= 16. */ LZ4_FORCE_O2_INLINE_GCC_PPC64LE void -LZ4_wildCopy32(void* dstPtr, const void* srcPtr, void* dstEnd) -{ - BYTE* d = (BYTE*)dstPtr; - const BYTE* s = (const BYTE*)srcPtr; - BYTE* const e = (BYTE*)dstEnd; +LZ4_wildCopy32(void *dstPtr, const void *srcPtr, void *dstEnd) { + BYTE *d = (BYTE *)dstPtr; + const BYTE *s = (const BYTE *)srcPtr; + BYTE *const e = (BYTE *)dstEnd; - do { memcpy(d,s,16); memcpy(d+16,s+16,16); d+=32; s+=32; } while (d<e); + do { memcpy(d, s, 16); memcpy(d + 16, s + 16, 16); d += 32; s += 32; } + while (d < e); } /* LZ4_memcpy_using_offset() presumes : * - dstEnd >= dstPtr + MINMATCH * - there is at least 8 bytes available to write after dstEnd */ LZ4_FORCE_O2_INLINE_GCC_PPC64LE void -LZ4_memcpy_using_offset(BYTE* dstPtr, const BYTE* srcPtr, BYTE* dstEnd, const size_t offset) -{ +LZ4_memcpy_using_offset(BYTE *dstPtr, const BYTE *srcPtr, BYTE *dstEnd, const size_t offset) { BYTE v[8]; assert(dstEnd >= dstPtr + MINMATCH); LZ4_write32(dstPtr, 0); /* silence an msan warning when offset==0 */ - switch(offset) { - case 1: - memset(v, *srcPtr, 8); - break; - case 2: - memcpy(v, srcPtr, 2); - memcpy(&v[2], srcPtr, 2); - memcpy(&v[4], &v[0], 4); - break; - case 4: - memcpy(v, srcPtr, 4); - memcpy(&v[4], srcPtr, 4); - break; - default: - LZ4_memcpy_using_offset_base(dstPtr, srcPtr, dstEnd, offset); - return; + switch (offset) { + case 1: + memset(v, *srcPtr, 8); + break; + case 2: + memcpy(v, srcPtr, 2); + memcpy(&v[2], srcPtr, 2); + memcpy(&v[4], &v[0], 4); + break; + case 4: + memcpy(v, srcPtr, 4); + memcpy(&v[4], srcPtr, 4); + break; + default: + LZ4_memcpy_using_offset_base(dstPtr, srcPtr, dstEnd, offset); + return; } memcpy(dstPtr, v, 8); @@ -460,14 +456,13 @@ LZ4_memcpy_using_offset(BYTE* dstPtr, const BYTE* srcPtr, BYTE* dstEnd, const si /*-************************************ * Common functions **************************************/ -static unsigned LZ4_NbCommonBytes (reg_t val) -{ +static unsigned LZ4_NbCommonBytes(reg_t val) { if (LZ4_isLittleEndian()) { - if (sizeof(val)==8) { + if (sizeof(val) == 8) { # if defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT) unsigned long r = 0; - _BitScanForward64( &r, (U64)val ); - return (int)(r>>3); + _BitScanForward64(&r, (U64)val); + return (int)(r >> 3); # elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT) return (unsigned)__builtin_ctzll((U64)val) >> 3; # else @@ -478,52 +473,57 @@ static unsigned LZ4_NbCommonBytes (reg_t val) 7, 0, 1, 2, 3, 3, 4, 6, 2, 6, 5, 5, 3, 4, 5, 6, 7, 1, 2, 4, 6, 4, 4, 5, - 7, 2, 6, 5, 7, 6, 7, 7 }; + 7, 2, 6, 5, 7, 6, 7, 7 + }; return DeBruijnBytePos[((U64)((val & -(long long)val) * 0x0218A392CDABBD3FULL)) >> 58]; # endif } else /* 32 bits */ { # if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT) unsigned long r; - _BitScanForward( &r, (U32)val ); - return (int)(r>>3); + _BitScanForward(&r, (U32)val); + return (int)(r >> 3); # elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT) return (unsigned)__builtin_ctz((U32)val) >> 3; # else static const int DeBruijnBytePos[32] = { 0, 0, 3, 0, 3, 1, 3, 0, 3, 2, 2, 1, 3, 2, 0, 1, 3, 3, 1, 2, 2, 2, 2, 0, - 3, 1, 2, 0, 1, 0, 1, 1 }; + 3, 1, 2, 0, 1, 0, 1, 1 + }; return DeBruijnBytePos[((U32)((val & -(S32)val) * 0x077CB531U)) >> 27]; # endif } - } else /* Big Endian CPU */ { - if (sizeof(val)==8) { /* 64-bits */ + } else { /* Big Endian CPU */ + if (sizeof(val) == 8) { /* 64-bits */ # if defined(_MSC_VER) && defined(_WIN64) && !defined(LZ4_FORCE_SW_BITCOUNT) unsigned long r = 0; - _BitScanReverse64( &r, val ); - return (unsigned)(r>>3); + _BitScanReverse64(&r, val); + return (unsigned)(r >> 3); # elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT) return (unsigned)__builtin_clzll((U64)val) >> 3; # else - static const U32 by32 = sizeof(val)*4; /* 32 on 64 bits (goal), 16 on 32 bits. + static const U32 by32 = sizeof(val) * 4; /* 32 on 64 bits (goal), 16 on 32 bits. Just to avoid some static analyzer complaining about shift by 32 on 32-bits target. Note that this code path is never triggered in 32-bits mode. */ unsigned r; - if (!(val>>by32)) { r=4; } else { r=0; val>>=by32; } - if (!(val>>16)) { r+=2; val>>=8; } else { val>>=24; } + if (!(val >> by32)) { r = 4; } + else { r = 0; val >>= by32; } + if (!(val >> 16)) { r += 2; val >>= 8; } + else { val >>= 24; } r += (!val); return r; # endif } else /* 32 bits */ { # if defined(_MSC_VER) && !defined(LZ4_FORCE_SW_BITCOUNT) unsigned long r = 0; - _BitScanReverse( &r, (unsigned long)val ); - return (unsigned)(r>>3); + _BitScanReverse(&r, (unsigned long)val); + return (unsigned)(r >> 3); # elif (defined(__clang__) || (defined(__GNUC__) && (__GNUC__>=3))) && !defined(LZ4_FORCE_SW_BITCOUNT) return (unsigned)__builtin_clz((U32)val) >> 3; # else unsigned r; - if (!(val>>16)) { r=2; val>>=8; } else { r=0; val>>=24; } + if (!(val >> 16)) { r = 2; val >>= 8; } + else { r = 0; val >>= 24; } r += (!val); return r; # endif @@ -533,28 +533,29 @@ static unsigned LZ4_NbCommonBytes (reg_t val) #define STEPSIZE sizeof(reg_t) LZ4_FORCE_INLINE -unsigned LZ4_count(const BYTE* pIn, const BYTE* pMatch, const BYTE* pInLimit) -{ - const BYTE* const pStart = pIn; +unsigned LZ4_count(const BYTE *pIn, const BYTE *pMatch, const BYTE *pInLimit) { + const BYTE *const pStart = pIn; - if (likely(pIn < pInLimit-(STEPSIZE-1))) { + if (likely(pIn < pInLimit - (STEPSIZE - 1))) { reg_t const diff = LZ4_read_ARCH(pMatch) ^ LZ4_read_ARCH(pIn); if (!diff) { - pIn+=STEPSIZE; pMatch+=STEPSIZE; + pIn += STEPSIZE; + pMatch += STEPSIZE; } else { return LZ4_NbCommonBytes(diff); - } } + } + } - while (likely(pIn < pInLimit-(STEPSIZE-1))) { + while (likely(pIn < pInLimit - (STEPSIZE - 1))) { reg_t const diff = LZ4_read_ARCH(pMatch) ^ LZ4_read_ARCH(pIn); - if (!diff) { pIn+=STEPSIZE; pMatch+=STEPSIZE; continue; } + if (!diff) { pIn += STEPSIZE; pMatch += STEPSIZE; continue; } pIn += LZ4_NbCommonBytes(diff); return (unsigned)(pIn - pStart); } - if ((STEPSIZE==8) && (pIn<(pInLimit-3)) && (LZ4_read32(pMatch) == LZ4_read32(pIn))) { pIn+=4; pMatch+=4; } - if ((pIn<(pInLimit-1)) && (LZ4_read16(pMatch) == LZ4_read16(pIn))) { pIn+=2; pMatch+=2; } - if ((pIn<pInLimit) && (*pMatch == *pIn)) pIn++; + if ((STEPSIZE == 8) && (pIn < (pInLimit - 3)) && (LZ4_read32(pMatch) == LZ4_read32(pIn))) { pIn += 4; pMatch += 4; } + if ((pIn < (pInLimit - 1)) && (LZ4_read16(pMatch) == LZ4_read16(pIn))) { pIn += 2; pMatch += 2; } + if ((pIn < pInLimit) && (*pMatch == *pIn)) pIn++; return (unsigned)(pIn - pStart); } @@ -563,7 +564,7 @@ unsigned LZ4_count(const BYTE* pIn, const BYTE* pMatch, const BYTE* pInLimit) /*-************************************ * Local Constants **************************************/ -static const int LZ4_64Klimit = ((64 KB) + (MFLIMIT-1)); +static const int LZ4_64Klimit = ((64 KB) + (MFLIMIT - 1)); static const U32 LZ4_skipTrigger = 6; /* Increase this value ==> compression run slower on incompressible data */ @@ -602,8 +603,8 @@ typedef enum { noDictIssue = 0, dictSmall } dictIssue_directive; /*-************************************ * Local Utils **************************************/ -int LZ4_versionNumber (void) { return LZ4_VERSION_NUMBER; } -const char* LZ4_versionString(void) { return LZ4_VERSION_STRING; } +int LZ4_versionNumber(void) { return LZ4_VERSION_NUMBER; } +const char *LZ4_versionString(void) { return LZ4_VERSION_STRING; } int LZ4_compressBound(int isize) { return LZ4_COMPRESSBOUND(isize); } int LZ4_sizeofState() { return LZ4_STREAMSIZE; } @@ -615,11 +616,11 @@ int LZ4_sizeofState() { return LZ4_STREAMSIZE; } extern "C" { #endif -int LZ4_compress_forceExtDict (LZ4_stream_t* LZ4_dict, const char* source, char* dest, int srcSize); +int LZ4_compress_forceExtDict(LZ4_stream_t *LZ4_dict, const char *source, char *dest, int srcSize); -int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, +int LZ4_decompress_safe_forceExtDict(const char *source, char *dest, int compressedSize, int maxOutputSize, - const void* dictStart, size_t dictSize); + const void *dictStart, size_t dictSize); #if defined (__cplusplus) } @@ -628,17 +629,15 @@ int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, /*-****************************** * Compression functions ********************************/ -static U32 LZ4_hash4(U32 sequence, tableType_t const tableType) -{ +static U32 LZ4_hash4(U32 sequence, tableType_t const tableType) { if (tableType == byU16) - return ((sequence * 2654435761U) >> ((MINMATCH*8)-(LZ4_HASHLOG+1))); + return ((sequence * 2654435761U) >> ((MINMATCH * 8) - (LZ4_HASHLOG + 1))); else - return ((sequence * 2654435761U) >> ((MINMATCH*8)-LZ4_HASHLOG)); + return ((sequence * 2654435761U) >> ((MINMATCH * 8) - LZ4_HASHLOG)); } -static U32 LZ4_hash5(U64 sequence, tableType_t const tableType) -{ - const U32 hashLog = (tableType == byU16) ? LZ4_HASHLOG+1 : LZ4_HASHLOG; +static U32 LZ4_hash5(U64 sequence, tableType_t const tableType) { + const U32 hashLog = (tableType == byU16) ? LZ4_HASHLOG + 1 : LZ4_HASHLOG; if (LZ4_isLittleEndian()) { const U64 prime5bytes = 889523592379ULL; return (U32)(((sequence << 24) * prime5bytes) >> (64 - hashLog)); @@ -648,51 +647,51 @@ static U32 LZ4_hash5(U64 sequence, tableType_t const tableType) } } -LZ4_FORCE_INLINE U32 LZ4_hashPosition(const void* const p, tableType_t const tableType) -{ - if ((sizeof(reg_t)==8) && (tableType != byU16)) return LZ4_hash5(LZ4_read_ARCH(p), tableType); +LZ4_FORCE_INLINE U32 LZ4_hashPosition(const void *const p, tableType_t const tableType) { + if ((sizeof(reg_t) == 8) && (tableType != byU16)) return LZ4_hash5(LZ4_read_ARCH(p), tableType); return LZ4_hash4(LZ4_read32(p), tableType); } -static void LZ4_clearHash(U32 h, void* tableBase, tableType_t const tableType) -{ - switch (tableType) - { - default: /* fallthrough */ - case clearedTable: { /* illegal! */ assert(0); return; } - case byPtr: { const BYTE** hashTable = (const BYTE**)tableBase; hashTable[h] = NULL; return; } - case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = 0; return; } - case byU16: { U16* hashTable = (U16*) tableBase; hashTable[h] = 0; return; } +static void LZ4_clearHash(U32 h, void *tableBase, tableType_t const tableType) { + switch (tableType) { + default: /* fallthrough */ + case clearedTable: { /* illegal! */ assert(0); return; } + case byPtr: + { const BYTE **hashTable = (const BYTE **)tableBase; hashTable[h] = NULL; return; } + case byU32: + { U32 *hashTable = (U32 *) tableBase; hashTable[h] = 0; return; } + case byU16: + { U16 *hashTable = (U16 *) tableBase; hashTable[h] = 0; return; } } } -static void LZ4_putIndexOnHash(U32 idx, U32 h, void* tableBase, tableType_t const tableType) -{ - switch (tableType) - { - default: /* fallthrough */ - case clearedTable: /* fallthrough */ - case byPtr: { /* illegal! */ assert(0); return; } - case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = idx; return; } - case byU16: { U16* hashTable = (U16*) tableBase; assert(idx < 65536); hashTable[h] = (U16)idx; return; } +static void LZ4_putIndexOnHash(U32 idx, U32 h, void *tableBase, tableType_t const tableType) { + switch (tableType) { + default: /* fallthrough */ + case clearedTable: /* fallthrough */ + case byPtr: { /* illegal! */ assert(0); return; } + case byU32: + { U32 *hashTable = (U32 *) tableBase; hashTable[h] = idx; return; } + case byU16: + { U16 *hashTable = (U16 *) tableBase; assert(idx < 65536); hashTable[h] = (U16)idx; return; } } } -static void LZ4_putPositionOnHash(const BYTE* p, U32 h, - void* tableBase, tableType_t const tableType, - const BYTE* srcBase) -{ - switch (tableType) - { - case clearedTable: { /* illegal! */ assert(0); return; } - case byPtr: { const BYTE** hashTable = (const BYTE**)tableBase; hashTable[h] = p; return; } - case byU32: { U32* hashTable = (U32*) tableBase; hashTable[h] = (U32)(p-srcBase); return; } - case byU16: { U16* hashTable = (U16*) tableBase; hashTable[h] = (U16)(p-srcBase); return; } +static void LZ4_putPositionOnHash(const BYTE *p, U32 h, + void *tableBase, tableType_t const tableType, + const BYTE *srcBase) { + switch (tableType) { + case clearedTable: { /* illegal! */ assert(0); return; } + case byPtr: + { const BYTE **hashTable = (const BYTE **)tableBase; hashTable[h] = p; return; } + case byU32: + { U32 *hashTable = (U32 *) tableBase; hashTable[h] = (U32)(p - srcBase); return; } + case byU16: + { U16 *hashTable = (U16 *) tableBase; hashTable[h] = (U16)(p - srcBase); return; } } } -LZ4_FORCE_INLINE void LZ4_putPosition(const BYTE* p, void* tableBase, tableType_t tableType, const BYTE* srcBase) -{ +LZ4_FORCE_INLINE void LZ4_putPosition(const BYTE *p, void *tableBase, tableType_t tableType, const BYTE *srcBase) { U32 const h = LZ4_hashPosition(p, tableType); LZ4_putPositionOnHash(p, h, tableBase, tableType, srcBase); } @@ -703,42 +702,40 @@ LZ4_FORCE_INLINE void LZ4_putPosition(const BYTE* p, void* tableBase, tableType_ * Assumption 1 : only valid if tableType == byU32 or byU16. * Assumption 2 : h is presumed valid (within limits of hash table) */ -static U32 LZ4_getIndexOnHash(U32 h, const void* tableBase, tableType_t tableType) -{ +static U32 LZ4_getIndexOnHash(U32 h, const void *tableBase, tableType_t tableType) { LZ4_STATIC_ASSERT(LZ4_MEMORY_USAGE > 2); if (tableType == byU32) { - const U32* const hashTable = (const U32*) tableBase; - assert(h < (1U << (LZ4_MEMORY_USAGE-2))); + const U32 *const hashTable = (const U32 *) tableBase; + assert(h < (1U << (LZ4_MEMORY_USAGE - 2))); return hashTable[h]; } if (tableType == byU16) { - const U16* const hashTable = (const U16*) tableBase; - assert(h < (1U << (LZ4_MEMORY_USAGE-1))); + const U16 *const hashTable = (const U16 *) tableBase; + assert(h < (1U << (LZ4_MEMORY_USAGE - 1))); return hashTable[h]; } - assert(0); return 0; /* forbidden case */ + assert(0); + return 0; /* forbidden case */ } -static const BYTE* LZ4_getPositionOnHash(U32 h, const void* tableBase, tableType_t tableType, const BYTE* srcBase) -{ - if (tableType == byPtr) { const BYTE* const* hashTable = (const BYTE* const*) tableBase; return hashTable[h]; } - if (tableType == byU32) { const U32* const hashTable = (const U32*) tableBase; return hashTable[h] + srcBase; } - { const U16* const hashTable = (const U16*) tableBase; return hashTable[h] + srcBase; } /* default, to ensure a return */ +static const BYTE *LZ4_getPositionOnHash(U32 h, const void *tableBase, tableType_t tableType, const BYTE *srcBase) { + if (tableType == byPtr) { const BYTE *const *hashTable = (const BYTE * const *) tableBase; return hashTable[h]; } + if (tableType == byU32) { const U32 *const hashTable = (const U32 *) tableBase; return hashTable[h] + srcBase; } + { const U16 *const hashTable = (const U16 *) tableBase; return hashTable[h] + srcBase; } /* default, to ensure a return */ } -LZ4_FORCE_INLINE const BYTE* -LZ4_getPosition(const BYTE* p, - const void* tableBase, tableType_t tableType, - const BYTE* srcBase) -{ +LZ4_FORCE_INLINE const BYTE * +LZ4_getPosition(const BYTE *p, + const void *tableBase, tableType_t tableType, + const BYTE *srcBase) { U32 const h = LZ4_hashPosition(p, tableType); return LZ4_getPositionOnHash(h, tableBase, tableType, srcBase); } LZ4_FORCE_INLINE void -LZ4_prepareTable(LZ4_stream_t_internal* const cctx, - const int inputSize, - const tableType_t tableType) { +LZ4_prepareTable(LZ4_stream_t_internal *const cctx, + const int inputSize, + const tableType_t tableType) { /* If compression failed during the previous step, then the context * is marked as dirty, therefore, it has to be fully reset. */ @@ -755,11 +752,10 @@ LZ4_prepareTable(LZ4_stream_t_internal* const cctx, if (cctx->tableType != clearedTable) { assert(inputSize >= 0); if (cctx->tableType != tableType - || ((tableType == byU16) && cctx->currentOffset + (unsigned)inputSize >= 0xFFFFU) - || ((tableType == byU32) && cctx->currentOffset > 1 GB) - || tableType == byPtr - || inputSize >= 4 KB) - { + || ((tableType == byU16) && cctx->currentOffset + (unsigned)inputSize >= 0xFFFFU) + || ((tableType == byU32) && cctx->currentOffset > 1 GB) + || tableType == byPtr + || inputSize >= 4 KB) { DEBUGLOG(4, "LZ4_prepareTable: Resetting table in %p", cctx); MEM_INIT(cctx->hashTable, 0, LZ4_HASHTABLESIZE); cctx->currentOffset = 0; @@ -787,27 +783,26 @@ LZ4_prepareTable(LZ4_stream_t_internal* const cctx, /** LZ4_compress_generic() : inlined, to ensure branches are decided at compilation time */ LZ4_FORCE_INLINE int LZ4_compress_generic( - LZ4_stream_t_internal* const cctx, - const char* const source, - char* const dest, - const int inputSize, - int *inputConsumed, /* only written when outputDirective == fillOutput */ - const int maxOutputSize, - const limitedOutput_directive outputDirective, - const tableType_t tableType, - const dict_directive dictDirective, - const dictIssue_directive dictIssue, - const int acceleration) -{ + LZ4_stream_t_internal *const cctx, + const char *const source, + char *const dest, + const int inputSize, + int *inputConsumed, /* only written when outputDirective == fillOutput */ + const int maxOutputSize, + const limitedOutput_directive outputDirective, + const tableType_t tableType, + const dict_directive dictDirective, + const dictIssue_directive dictIssue, + const int acceleration) { int result; - const BYTE* ip = (const BYTE*) source; + const BYTE *ip = (const BYTE *) source; U32 const startIndex = cctx->currentOffset; - const BYTE* base = (const BYTE*) source - startIndex; - const BYTE* lowLimit; + const BYTE *base = (const BYTE *) source - startIndex; + const BYTE *lowLimit; - const LZ4_stream_t_internal* dictCtx = (const LZ4_stream_t_internal*) cctx->dictCtx; - const BYTE* const dictionary = + const LZ4_stream_t_internal *dictCtx = (const LZ4_stream_t_internal *) cctx->dictCtx; + const BYTE *const dictionary = dictDirective == usingDictCtx ? dictCtx->dictionary : cctx->dictionary; const U32 dictSize = dictDirective == usingDictCtx ? dictCtx->dictSize : cctx->dictSize; @@ -815,20 +810,20 @@ LZ4_FORCE_INLINE int LZ4_compress_generic( int const maybe_extMem = (dictDirective == usingExtDict) || (dictDirective == usingDictCtx); U32 const prefixIdxLimit = startIndex - dictSize; /* used when dictDirective == dictSmall */ - const BYTE* const dictEnd = dictionary + dictSize; - const BYTE* anchor = (const BYTE*) source; - const BYTE* const iend = ip + inputSize; - const BYTE* const mflimitPlusOne = iend - MFLIMIT + 1; - const BYTE* const matchlimit = iend - LASTLITERALS; + const BYTE *const dictEnd = dictionary + dictSize; + const BYTE *anchor = (const BYTE *) source; + const BYTE *const iend = ip + inputSize; + const BYTE *const mflimitPlusOne = iend - MFLIMIT + 1; + const BYTE *const matchlimit = iend - LASTLITERALS; /* the dictCtx currentOffset is indexed on the start of the dictionary, * while a dictionary in the current context precedes the currentOffset */ - const BYTE* dictBase = (dictDirective == usingDictCtx) ? - dictionary + dictSize - dictCtx->currentOffset : - dictionary + dictSize - startIndex; + const BYTE *dictBase = (dictDirective == usingDictCtx) ? + dictionary + dictSize - dictCtx->currentOffset : + dictionary + dictSize - startIndex; - BYTE* op = (BYTE*) dest; - BYTE* const olimit = op + maxOutputSize; + BYTE *op = (BYTE *) dest; + BYTE *const olimit = op + maxOutputSize; U32 offset = 0; U32 forwardH; @@ -838,11 +833,11 @@ LZ4_FORCE_INLINE int LZ4_compress_generic( * as having dirty context, since no action was taken yet */ if (outputDirective == fillOutput && maxOutputSize < 1) { return 0; } /* Impossible to store anything */ if ((U32)inputSize > (U32)LZ4_MAX_INPUT_SIZE) { return 0; } /* Unsupported inputSize, too large (or negative) */ - if ((tableType == byU16) && (inputSize>=LZ4_64Klimit)) { return 0; } /* Size too large (not within 64K limit) */ - if (tableType==byPtr) assert(dictDirective==noDict); /* only supported use case with byPtr */ + if ((tableType == byU16) && (inputSize >= LZ4_64Klimit)) { return 0; } /* Size too large (not within 64K limit) */ + if (tableType == byPtr) assert(dictDirective == noDict); /* only supported use case with byPtr */ assert(acceleration >= 1); - lowLimit = (const BYTE*)source - (dictDirective == withPrefix64k ? dictSize : 0); + lowLimit = (const BYTE *)source - (dictDirective == withPrefix64k ? dictSize : 0); /* Update context state */ if (dictDirective == usingDictCtx) { @@ -856,21 +851,22 @@ LZ4_FORCE_INLINE int LZ4_compress_generic( cctx->currentOffset += (U32)inputSize; cctx->tableType = (U16)tableType; - if (inputSize<LZ4_minLength) goto _last_literals; /* Input too small, no compression (all literals) */ + if (inputSize < LZ4_minLength) goto _last_literals; /* Input too small, no compression (all literals) */ /* First Byte */ LZ4_putPosition(ip, cctx->hashTable, tableType, base); - ip++; forwardH = LZ4_hashPosition(ip, tableType); + ip++; + forwardH = LZ4_hashPosition(ip, tableType); /* Main Loop */ - for ( ; ; ) { - const BYTE* match; - BYTE* token; - const BYTE* filledIp; + for (; ;) { + const BYTE *match; + BYTE *token; + const BYTE *filledIp; /* Find a match */ if (tableType == byPtr) { - const BYTE* forwardIp = ip; + const BYTE *forwardIp = ip; int step = 1; int searchMatchNb = acceleration << LZ4_skipTrigger; do { @@ -886,12 +882,12 @@ LZ4_FORCE_INLINE int LZ4_compress_generic( forwardH = LZ4_hashPosition(forwardIp, tableType); LZ4_putPositionOnHash(ip, h, cctx->hashTable, tableType, base); - } while ( (match+LZ4_DISTANCE_MAX < ip) - || (LZ4_read32(match) != LZ4_read32(ip)) ); + } while ((match + LZ4_DISTANCE_MAX < ip) + || (LZ4_read32(match) != LZ4_read32(ip))); } else { /* byU32, byU16 */ - const BYTE* forwardIp = ip; + const BYTE *forwardIp = ip; int step = 1; int searchMatchNb = acceleration << LZ4_skipTrigger; do { @@ -917,9 +913,9 @@ LZ4_FORCE_INLINE int LZ4_compress_generic( lowLimit = dictionary; } else { match = base + matchIndex; - lowLimit = (const BYTE*)source; + lowLimit = (const BYTE *)source; } - } else if (dictDirective==usingExtDict) { + } else if (dictDirective == usingExtDict) { if (matchIndex < startIndex) { DEBUGLOG(7, "extDict candidate: matchIndex=%5u < startIndex=%5u", matchIndex, startIndex); assert(startIndex - matchIndex >= MINMATCH); @@ -927,7 +923,7 @@ LZ4_FORCE_INLINE int LZ4_compress_generic( lowLimit = dictionary; } else { match = base + matchIndex; - lowLimit = (const BYTE*)source; + lowLimit = (const BYTE *)source; } } else { /* single continuous memory segment */ match = base + matchIndex; @@ -938,8 +934,8 @@ LZ4_FORCE_INLINE int LZ4_compress_generic( DEBUGLOG(7, "candidate at pos=%u (offset=%u \n", matchIndex, current - matchIndex); if ((dictIssue == dictSmall) && (matchIndex < prefixIdxLimit)) { continue; } /* match outside of valid area */ assert(matchIndex < current); - if ( ((tableType != byU16) || (LZ4_DISTANCE_MAX < LZ4_DISTANCE_ABSOLUTE_MAX)) - && (matchIndex+LZ4_DISTANCE_MAX < current)) { + if (((tableType != byU16) || (LZ4_DISTANCE_MAX < LZ4_DISTANCE_ABSOLUTE_MAX)) + && (matchIndex + LZ4_DISTANCE_MAX < current)) { continue; } /* too far */ assert((current - matchIndex) <= LZ4_DISTANCE_MAX); /* match now expected within distance */ @@ -949,38 +945,38 @@ LZ4_FORCE_INLINE int LZ4_compress_generic( break; /* match found */ } - } while(1); + } while (1); } /* Catch up */ filledIp = ip; - while (((ip>anchor) & (match > lowLimit)) && (unlikely(ip[-1]==match[-1]))) { ip--; match--; } + while (((ip > anchor) & (match > lowLimit)) && (unlikely(ip[-1] == match[-1]))) { ip--; match--; } /* Encode Literals */ - { unsigned const litLength = (unsigned)(ip - anchor); + { + unsigned const litLength = (unsigned)(ip - anchor); token = op++; if ((outputDirective == limitedOutput) && /* Check output buffer overflow */ - (unlikely(op + litLength + (2 + 1 + LASTLITERALS) + (litLength/255) > olimit)) ) { + (unlikely(op + litLength + (2 + 1 + LASTLITERALS) + (litLength / 255) > olimit))) { return 0; /* cannot compress within `dst` budget. Stored indexes in hash table are nonetheless fine */ } if ((outputDirective == fillOutput) && - (unlikely(op + (litLength+240)/255 /* litlen */ + litLength /* literals */ + 2 /* offset */ + 1 /* token */ + MFLIMIT - MINMATCH /* min last literals so last match is <= end - MFLIMIT */ > olimit))) { + (unlikely(op + (litLength + 240) / 255 /* litlen */ + litLength /* literals */ + 2 /* offset */ + 1 /* token */ + MFLIMIT - MINMATCH /* min last literals so last match is <= end - MFLIMIT */ > olimit))) { op--; goto _last_literals; } if (litLength >= RUN_MASK) { int len = (int)(litLength - RUN_MASK); - *token = (RUN_MASK<<ML_BITS); - for(; len >= 255 ; len-=255) *op++ = 255; + *token = (RUN_MASK << ML_BITS); + for (; len >= 255 ; len -= 255) * op++ = 255; *op++ = (BYTE)len; - } - else *token = (BYTE)(litLength<<ML_BITS); + } else *token = (BYTE)(litLength << ML_BITS); /* Copy Literals */ - LZ4_wildCopy8(op, anchor, op+litLength); - op+=litLength; + LZ4_wildCopy8(op, anchor, op + litLength); + op += litLength; DEBUGLOG(6, "seq.start:%i, literals=%u, match.start:%i", - (int)(anchor-(const BYTE*)source), litLength, (int)(ip-(const BYTE*)source)); + (int)(anchor - (const BYTE *)source), litLength, (int)(ip - (const BYTE *)source)); } _next_match: @@ -993,7 +989,7 @@ _next_match: */ if ((outputDirective == fillOutput) && - (op + 2 /* offset */ + 1 /* token */ + MFLIMIT - MINMATCH /* min last literals so last match is <= end - MFLIMIT */ > olimit)) { + (op + 2 /* offset */ + 1 /* token */ + MFLIMIT - MINMATCH /* min last literals so last match is <= end - MFLIMIT */ > olimit)) { /* the match was too close to the end, rewind and go to last literals */ op = token; goto _last_literals; @@ -1001,39 +997,42 @@ _next_match: /* Encode Offset */ if (maybe_extMem) { /* static test */ - DEBUGLOG(6, " with offset=%u (ext if > %i)", offset, (int)(ip - (const BYTE*)source)); + DEBUGLOG(6, " with offset=%u (ext if > %i)", offset, (int)(ip - (const BYTE *)source)); assert(offset <= LZ4_DISTANCE_MAX && offset > 0); - LZ4_writeLE16(op, (U16)offset); op+=2; + LZ4_writeLE16(op, (U16)offset); + op += 2; } else { DEBUGLOG(6, " with offset=%u (same segment)", (U32)(ip - match)); - assert(ip-match <= LZ4_DISTANCE_MAX); - LZ4_writeLE16(op, (U16)(ip - match)); op+=2; + assert(ip - match <= LZ4_DISTANCE_MAX); + LZ4_writeLE16(op, (U16)(ip - match)); + op += 2; } /* Encode MatchLength */ - { unsigned matchCode; + { + unsigned matchCode; - if ( (dictDirective==usingExtDict || dictDirective==usingDictCtx) - && (lowLimit==dictionary) /* match within extDict */ ) { - const BYTE* limit = ip + (dictEnd-match); + if ((dictDirective == usingExtDict || dictDirective == usingDictCtx) + && (lowLimit == dictionary) /* match within extDict */) { + const BYTE *limit = ip + (dictEnd - match); assert(dictEnd > match); if (limit > matchlimit) limit = matchlimit; - matchCode = LZ4_count(ip+MINMATCH, match+MINMATCH, limit); + matchCode = LZ4_count(ip + MINMATCH, match + MINMATCH, limit); ip += (size_t)matchCode + MINMATCH; - if (ip==limit) { - unsigned const more = LZ4_count(limit, (const BYTE*)source, matchlimit); + if (ip == limit) { + unsigned const more = LZ4_count(limit, (const BYTE *)source, matchlimit); matchCode += more; ip += more; } - DEBUGLOG(6, " with matchLength=%u starting in extDict", matchCode+MINMATCH); + DEBUGLOG(6, " with matchLength=%u starting in extDict", matchCode + MINMATCH); } else { - matchCode = LZ4_count(ip+MINMATCH, match+MINMATCH, matchlimit); + matchCode = LZ4_count(ip + MINMATCH, match + MINMATCH, matchlimit); ip += (size_t)matchCode + MINMATCH; - DEBUGLOG(6, " with matchLength=%u", matchCode+MINMATCH); + DEBUGLOG(6, " with matchLength=%u", matchCode + MINMATCH); } if ((outputDirective) && /* Check output buffer overflow */ - (unlikely(op + (1 + LASTLITERALS) + (matchCode+240)/255 > olimit)) ) { + (unlikely(op + (1 + LASTLITERALS) + (matchCode + 240) / 255 > olimit))) { if (outputDirective == fillOutput) { /* Match description too long : reduce it */ U32 newMatchCode = 15 /* in token */ - 1 /* to avoid needing a zero byte */ + ((U32)(olimit - op) - 1 - LASTLITERALS) * 255; @@ -1046,7 +1045,7 @@ _next_match: * a problem if we reuse the hash table. So we have to remove these positions * from the hash table. */ - const BYTE* ptr; + const BYTE *ptr; DEBUGLOG(5, "Clearing %u positions", (U32)(filledIp - ip)); for (ptr = ip; ptr <= filledIp; ++ptr) { U32 const h = LZ4_hashPosition(ptr, tableType); @@ -1062,10 +1061,10 @@ _next_match: *token += ML_MASK; matchCode -= ML_MASK; LZ4_write32(op, 0xFFFFFFFF); - while (matchCode >= 4*255) { - op+=4; + while (matchCode >= 4 * 255) { + op += 4; LZ4_write32(op, 0xFFFFFFFF); - matchCode -= 4*255; + matchCode -= 4 * 255; } op += matchCode / 255; *op++ = (BYTE)(matchCode % 255); @@ -1081,21 +1080,21 @@ _next_match: if (ip >= mflimitPlusOne) break; /* Fill table */ - LZ4_putPosition(ip-2, cctx->hashTable, tableType, base); + LZ4_putPosition(ip - 2, cctx->hashTable, tableType, base); /* Test next position */ if (tableType == byPtr) { match = LZ4_getPosition(ip, cctx->hashTable, tableType, base); LZ4_putPosition(ip, cctx->hashTable, tableType, base); - if ( (match+LZ4_DISTANCE_MAX >= ip) - && (LZ4_read32(match) == LZ4_read32(ip)) ) - { token=op++; *token=0; goto _next_match; } + if ((match + LZ4_DISTANCE_MAX >= ip) + && (LZ4_read32(match) == LZ4_read32(ip))) + { token = op++; *token = 0; goto _next_match; } } else { /* byU32, byU16 */ U32 const h = LZ4_hashPosition(ip, tableType); - U32 const current = (U32)(ip-base); + U32 const current = (U32)(ip - base); U32 matchIndex = LZ4_getIndexOnHash(h, cctx->hashTable, tableType); assert(matchIndex < current); if (dictDirective == usingDictCtx) { @@ -1107,29 +1106,29 @@ _next_match: matchIndex += dictDelta; } else { match = base + matchIndex; - lowLimit = (const BYTE*)source; /* required for match length counter */ + lowLimit = (const BYTE *)source; /* required for match length counter */ } - } else if (dictDirective==usingExtDict) { + } else if (dictDirective == usingExtDict) { if (matchIndex < startIndex) { match = dictBase + matchIndex; lowLimit = dictionary; /* required for match length counter */ } else { match = base + matchIndex; - lowLimit = (const BYTE*)source; /* required for match length counter */ + lowLimit = (const BYTE *)source; /* required for match length counter */ } } else { /* single memory segment */ match = base + matchIndex; } LZ4_putIndexOnHash(current, h, cctx->hashTable, tableType); assert(matchIndex < current); - if ( ((dictIssue==dictSmall) ? (matchIndex >= prefixIdxLimit) : 1) - && (((tableType==byU16) && (LZ4_DISTANCE_MAX == LZ4_DISTANCE_ABSOLUTE_MAX)) ? 1 : (matchIndex+LZ4_DISTANCE_MAX >= current)) - && (LZ4_read32(match) == LZ4_read32(ip)) ) { - token=op++; - *token=0; + if (((dictIssue == dictSmall) ? (matchIndex >= prefixIdxLimit) : 1) + && (((tableType == byU16) && (LZ4_DISTANCE_MAX == LZ4_DISTANCE_ABSOLUTE_MAX)) ? 1 : (matchIndex + LZ4_DISTANCE_MAX >= current)) + && (LZ4_read32(match) == LZ4_read32(ip))) { + token = op++; + *token = 0; if (maybe_extMem) offset = current - matchIndex; DEBUGLOG(6, "seq.start:%i, literals=%u, match.start:%i", - (int)(anchor-(const BYTE*)source), 0, (int)(ip-(const BYTE*)source)); + (int)(anchor - (const BYTE *)source), 0, (int)(ip - (const BYTE *)source)); goto _next_match; } } @@ -1141,14 +1140,15 @@ _next_match: _last_literals: /* Encode Last Literals */ - { size_t lastRun = (size_t)(iend - anchor); - if ( (outputDirective) && /* Check output buffer overflow */ - (op + lastRun + 1 + ((lastRun+255-RUN_MASK)/255) > olimit)) { + { + size_t lastRun = (size_t)(iend - anchor); + if ((outputDirective) && /* Check output buffer overflow */ + (op + lastRun + 1 + ((lastRun + 255 - RUN_MASK) / 255) > olimit)) { if (outputDirective == fillOutput) { /* adapt lastRun to fill 'dst' */ assert(olimit >= op); - lastRun = (size_t)(olimit-op) - 1; - lastRun -= (lastRun+240)/255; + lastRun = (size_t)(olimit - op) - 1; + lastRun -= (lastRun + 240) / 255; } else { assert(outputDirective == limitedOutput); return 0; /* cannot compress within `dst` budget. Stored indexes in hash table are nonetheless fine */ @@ -1157,10 +1157,10 @@ _last_literals: if (lastRun >= RUN_MASK) { size_t accumulator = lastRun - RUN_MASK; *op++ = RUN_MASK << ML_BITS; - for(; accumulator >= 255 ; accumulator-=255) *op++ = 255; + for (; accumulator >= 255 ; accumulator -= 255) * op++ = 255; *op++ = (BYTE) accumulator; } else { - *op++ = (BYTE)(lastRun<<ML_BITS); + *op++ = (BYTE)(lastRun << ML_BITS); } memcpy(op, anchor, lastRun); ip = anchor + lastRun; @@ -1168,32 +1168,31 @@ _last_literals: } if (outputDirective == fillOutput) { - *inputConsumed = (int) (((const char*)ip)-source); + *inputConsumed = (int)(((const char *)ip) - source); } - DEBUGLOG(5, "LZ4_compress_generic: compressed %i bytes into %i bytes", inputSize, (int)(((char*)op) - dest)); - result = (int)(((char*)op) - dest); + DEBUGLOG(5, "LZ4_compress_generic: compressed %i bytes into %i bytes", inputSize, (int)(((char *)op) - dest)); + result = (int)(((char *)op) - dest); assert(result > 0); return result; } -int LZ4_compress_fast_extState(void* state, const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration) -{ - LZ4_stream_t_internal* const ctx = & LZ4_initStream(state, sizeof(LZ4_stream_t)) -> internal_donotuse; +int LZ4_compress_fast_extState(void *state, const char *source, char *dest, int inputSize, int maxOutputSize, int acceleration) { + LZ4_stream_t_internal *const ctx = & LZ4_initStream(state, sizeof(LZ4_stream_t)) -> internal_donotuse; assert(ctx != NULL); if (acceleration < 1) acceleration = ACCELERATION_DEFAULT; if (maxOutputSize >= LZ4_compressBound(inputSize)) { if (inputSize < LZ4_64Klimit) { return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, 0, notLimited, byU16, noDict, noDictIssue, acceleration); } else { - const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)source > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + const tableType_t tableType = ((sizeof(void *) == 4) && ((uptrval)source > LZ4_DISTANCE_MAX)) ? byPtr : byU32; return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, 0, notLimited, tableType, noDict, noDictIssue, acceleration); } } else { if (inputSize < LZ4_64Klimit) { return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, byU16, noDict, noDictIssue, acceleration); } else { - const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)source > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + const tableType_t tableType = ((sizeof(void *) == 4) && ((uptrval)source > LZ4_DISTANCE_MAX)) ? byPtr : byU32; return LZ4_compress_generic(ctx, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, noDict, noDictIssue, acceleration); } } @@ -1208,9 +1207,8 @@ int LZ4_compress_fast_extState(void* state, const char* source, char* dest, int * (see comment in lz4.h on LZ4_resetStream_fast() for a definition of * "correctly initialized"). */ -int LZ4_compress_fast_extState_fastReset(void* state, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration) -{ - LZ4_stream_t_internal* ctx = &((LZ4_stream_t*)state)->internal_donotuse; +int LZ4_compress_fast_extState_fastReset(void *state, const char *src, char *dst, int srcSize, int dstCapacity, int acceleration) { + LZ4_stream_t_internal *ctx = &((LZ4_stream_t *)state)->internal_donotuse; if (acceleration < 1) acceleration = ACCELERATION_DEFAULT; if (dstCapacity >= LZ4_compressBound(srcSize)) { @@ -1223,7 +1221,7 @@ int LZ4_compress_fast_extState_fastReset(void* state, const char* src, char* dst return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, 0, notLimited, tableType, noDict, noDictIssue, acceleration); } } else { - const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + const tableType_t tableType = ((sizeof(void *) == 4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; LZ4_prepareTable(ctx, srcSize, tableType); return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, 0, notLimited, tableType, noDict, noDictIssue, acceleration); } @@ -1237,7 +1235,7 @@ int LZ4_compress_fast_extState_fastReset(void* state, const char* src, char* dst return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, dstCapacity, limitedOutput, tableType, noDict, noDictIssue, acceleration); } } else { - const tableType_t tableType = ((sizeof(void*)==4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + const tableType_t tableType = ((sizeof(void *) == 4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; LZ4_prepareTable(ctx, srcSize, tableType); return LZ4_compress_generic(ctx, src, dst, srcSize, NULL, dstCapacity, limitedOutput, tableType, noDict, noDictIssue, acceleration); } @@ -1245,15 +1243,14 @@ int LZ4_compress_fast_extState_fastReset(void* state, const char* src, char* dst } -int LZ4_compress_fast(const char* source, char* dest, int inputSize, int maxOutputSize, int acceleration) -{ +int LZ4_compress_fast(const char *source, char *dest, int inputSize, int maxOutputSize, int acceleration) { int result; #if (LZ4_HEAPMODE) - LZ4_stream_t* ctxPtr = ALLOC(sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */ + LZ4_stream_t *ctxPtr = ALLOC(sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */ if (ctxPtr == NULL) return 0; #else LZ4_stream_t ctx; - LZ4_stream_t* const ctxPtr = &ctx; + LZ4_stream_t *const ctxPtr = &ctx; #endif result = LZ4_compress_fast_extState(ctxPtr, source, dest, inputSize, maxOutputSize, acceleration); @@ -1264,24 +1261,22 @@ int LZ4_compress_fast(const char* source, char* dest, int inputSize, int maxOutp } -int LZ4_compress_default(const char* src, char* dst, int srcSize, int maxOutputSize) -{ +int LZ4_compress_default(const char *src, char *dst, int srcSize, int maxOutputSize) { return LZ4_compress_fast(src, dst, srcSize, maxOutputSize, 1); } -int LZ4_compress_fast_force(const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); +int LZ4_compress_fast_force(const char *src, char *dst, int srcSize, int dstCapacity, int acceleration); /* hidden debug function */ /* strangely enough, gcc generates faster code when this function is uncommented, even if unused */ -int LZ4_compress_fast_force(const char* src, char* dst, int srcSize, int dstCapacity, int acceleration) -{ +int LZ4_compress_fast_force(const char *src, char *dst, int srcSize, int dstCapacity, int acceleration) { LZ4_stream_t ctx; LZ4_initStream(&ctx, sizeof(ctx)); if (srcSize < LZ4_64Klimit) { return LZ4_compress_generic(&ctx.internal_donotuse, src, dst, srcSize, NULL, dstCapacity, limitedOutput, byU16, noDict, noDictIssue, acceleration); } else { - tableType_t const addrMode = (sizeof(void*) > 4) ? byU32 : byPtr; + tableType_t const addrMode = (sizeof(void *) > 4) ? byU32 : byPtr; return LZ4_compress_generic(&ctx.internal_donotuse, src, dst, srcSize, NULL, dstCapacity, limitedOutput, addrMode, noDict, noDictIssue, acceleration); } } @@ -1290,10 +1285,10 @@ int LZ4_compress_fast_force(const char* src, char* dst, int srcSize, int dstCapa /* Note!: This function leaves the stream in an unclean/broken state! * It is not safe to subsequently use the same state with a _fastReset() or * _continue() call without resetting it. */ -static int LZ4_compress_destSize_extState (LZ4_stream_t* state, const char* src, char* dst, int* srcSizePtr, int targetDstSize) -{ - void* const s = LZ4_initStream(state, sizeof (*state)); - assert(s != NULL); (void)s; +static int LZ4_compress_destSize_extState(LZ4_stream_t *state, const char *src, char *dst, int *srcSizePtr, int targetDstSize) { + void *const s = LZ4_initStream(state, sizeof(*state)); + assert(s != NULL); + (void)s; if (targetDstSize >= LZ4_compressBound(*srcSizePtr)) { /* compression success is guaranteed */ return LZ4_compress_fast_extState(state, src, dst, *srcSizePtr, targetDstSize, 1); @@ -1301,20 +1296,20 @@ static int LZ4_compress_destSize_extState (LZ4_stream_t* state, const char* src, if (*srcSizePtr < LZ4_64Klimit) { return LZ4_compress_generic(&state->internal_donotuse, src, dst, *srcSizePtr, srcSizePtr, targetDstSize, fillOutput, byU16, noDict, noDictIssue, 1); } else { - tableType_t const addrMode = ((sizeof(void*)==4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; + tableType_t const addrMode = ((sizeof(void *) == 4) && ((uptrval)src > LZ4_DISTANCE_MAX)) ? byPtr : byU32; return LZ4_compress_generic(&state->internal_donotuse, src, dst, *srcSizePtr, srcSizePtr, targetDstSize, fillOutput, addrMode, noDict, noDictIssue, 1); - } } + } + } } -int LZ4_compress_destSize(const char* src, char* dst, int* srcSizePtr, int targetDstSize) -{ +int LZ4_compress_destSize(const char *src, char *dst, int *srcSizePtr, int targetDstSize) { #if (LZ4_HEAPMODE) - LZ4_stream_t* ctx = (LZ4_stream_t*)ALLOC(sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */ + LZ4_stream_t *ctx = (LZ4_stream_t *)ALLOC(sizeof(LZ4_stream_t)); /* malloc-calloc always properly aligned */ if (ctx == NULL) return 0; #else LZ4_stream_t ctxBody; - LZ4_stream_t* ctx = &ctxBody; + LZ4_stream_t *ctx = &ctxBody; #endif int result = LZ4_compress_destSize_extState(ctx, src, dst, srcSizePtr, targetDstSize); @@ -1331,9 +1326,8 @@ int LZ4_compress_destSize(const char* src, char* dst, int* srcSizePtr, int targe * Streaming functions ********************************/ -LZ4_stream_t* LZ4_createStream(void) -{ - LZ4_stream_t* const lz4s = (LZ4_stream_t*)ALLOC(sizeof(LZ4_stream_t)); +LZ4_stream_t *LZ4_createStream(void) { + LZ4_stream_t *const lz4s = (LZ4_stream_t *)ALLOC(sizeof(LZ4_stream_t)); LZ4_STATIC_ASSERT(LZ4_STREAMSIZE >= sizeof(LZ4_stream_t_internal)); /* A compilation error here means LZ4_STREAMSIZE is not large enough */ DEBUGLOG(4, "LZ4_createStream %p", lz4s); if (lz4s == NULL) return NULL; @@ -1344,15 +1338,13 @@ LZ4_stream_t* LZ4_createStream(void) #ifndef _MSC_VER /* for some reason, Visual fails the aligment test on 32-bit x86 : it reports an aligment of 8-bytes, while actually aligning LZ4_stream_t on 4 bytes. */ -static size_t LZ4_stream_t_alignment(void) -{ +static size_t LZ4_stream_t_alignment(void) { struct { char c; LZ4_stream_t t; } t_a; return sizeof(t_a) - sizeof(t_a.t); } #endif -LZ4_stream_t* LZ4_initStream (void* buffer, size_t size) -{ +LZ4_stream_t *LZ4_initStream(void *buffer, size_t size) { DEBUGLOG(5, "LZ4_initStream"); if (buffer == NULL) { return NULL; } if (size < sizeof(LZ4_stream_t)) { return NULL; } @@ -1362,23 +1354,21 @@ LZ4_stream_t* LZ4_initStream (void* buffer, size_t size) if (((size_t)buffer) & (LZ4_stream_t_alignment() - 1)) { return NULL; } /* alignment check */ #endif MEM_INIT(buffer, 0, sizeof(LZ4_stream_t)); - return (LZ4_stream_t*)buffer; + return (LZ4_stream_t *)buffer; } /* resetStream is now deprecated, * prefer initStream() which is more general */ -void LZ4_resetStream (LZ4_stream_t* LZ4_stream) -{ +void LZ4_resetStream(LZ4_stream_t *LZ4_stream) { DEBUGLOG(5, "LZ4_resetStream (ctx:%p)", LZ4_stream); MEM_INIT(LZ4_stream, 0, sizeof(LZ4_stream_t)); } -void LZ4_resetStream_fast(LZ4_stream_t* ctx) { +void LZ4_resetStream_fast(LZ4_stream_t *ctx) { LZ4_prepareTable(&(ctx->internal_donotuse), 0, byU32); } -int LZ4_freeStream (LZ4_stream_t* LZ4_stream) -{ +int LZ4_freeStream(LZ4_stream_t *LZ4_stream) { if (!LZ4_stream) return 0; /* support free on NULL */ DEBUGLOG(5, "LZ4_freeStream %p", LZ4_stream); FREEMEM(LZ4_stream); @@ -1387,13 +1377,12 @@ int LZ4_freeStream (LZ4_stream_t* LZ4_stream) #define HASH_UNIT sizeof(reg_t) -int LZ4_loadDict (LZ4_stream_t* LZ4_dict, const char* dictionary, int dictSize) -{ - LZ4_stream_t_internal* dict = &LZ4_dict->internal_donotuse; +int LZ4_loadDict(LZ4_stream_t *LZ4_dict, const char *dictionary, int dictSize) { + LZ4_stream_t_internal *dict = &LZ4_dict->internal_donotuse; const tableType_t tableType = byU32; - const BYTE* p = (const BYTE*)dictionary; - const BYTE* const dictEnd = p + dictSize; - const BYTE* base; + const BYTE *p = (const BYTE *)dictionary; + const BYTE *const dictEnd = p + dictSize; + const BYTE *base; DEBUGLOG(4, "LZ4_loadDict (%i bytes from %p into %p)", dictSize, dictionary, LZ4_dict); @@ -1421,17 +1410,17 @@ int LZ4_loadDict (LZ4_stream_t* LZ4_dict, const char* dictionary, int dictSize) dict->dictSize = (U32)(dictEnd - p); dict->tableType = tableType; - while (p <= dictEnd-HASH_UNIT) { + while (p <= dictEnd - HASH_UNIT) { LZ4_putPosition(p, dict->hashTable, tableType, base); - p+=3; + p += 3; } return (int)dict->dictSize; } -void LZ4_attach_dictionary(LZ4_stream_t* workingStream, const LZ4_stream_t* dictionaryStream) { - const LZ4_stream_t_internal* dictCtx = dictionaryStream == NULL ? NULL : - &(dictionaryStream->internal_donotuse); +void LZ4_attach_dictionary(LZ4_stream_t *workingStream, const LZ4_stream_t *dictionaryStream) { + const LZ4_stream_t_internal *dictCtx = dictionaryStream == NULL ? NULL : + &(dictionaryStream->internal_donotuse); DEBUGLOG(4, "LZ4_attach_dictionary (%p, %p, size %u)", workingStream, dictionaryStream, @@ -1463,17 +1452,16 @@ void LZ4_attach_dictionary(LZ4_stream_t* workingStream, const LZ4_stream_t* dict } -static void LZ4_renormDictT(LZ4_stream_t_internal* LZ4_dict, int nextSize) -{ +static void LZ4_renormDictT(LZ4_stream_t_internal *LZ4_dict, int nextSize) { assert(nextSize >= 0); if (LZ4_dict->currentOffset + (unsigned)nextSize > 0x80000000) { /* potential ptrdiff_t overflow (32-bits mode) */ /* rescale hash table */ U32 const delta = LZ4_dict->currentOffset - 64 KB; - const BYTE* dictEnd = LZ4_dict->dictionary + LZ4_dict->dictSize; + const BYTE *dictEnd = LZ4_dict->dictionary + LZ4_dict->dictSize; int i; DEBUGLOG(4, "LZ4_renormDictT"); - for (i=0; i<LZ4_HASH_SIZE_U32; i++) { - if (LZ4_dict->hashTable[i] < delta) LZ4_dict->hashTable[i]=0; + for (i = 0; i < LZ4_HASH_SIZE_U32; i++) { + if (LZ4_dict->hashTable[i] < delta) LZ4_dict->hashTable[i] = 0; else LZ4_dict->hashTable[i] -= delta; } LZ4_dict->currentOffset = 64 KB; @@ -1483,14 +1471,13 @@ static void LZ4_renormDictT(LZ4_stream_t_internal* LZ4_dict, int nextSize) } -int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream, - const char* source, char* dest, - int inputSize, int maxOutputSize, - int acceleration) -{ +int LZ4_compress_fast_continue(LZ4_stream_t *LZ4_stream, + const char *source, char *dest, + int inputSize, int maxOutputSize, + int acceleration) { const tableType_t tableType = byU32; - LZ4_stream_t_internal* streamPtr = &LZ4_stream->internal_donotuse; - const BYTE* dictEnd = streamPtr->dictionary + streamPtr->dictSize; + LZ4_stream_t_internal *streamPtr = &LZ4_stream->internal_donotuse; + const BYTE *dictEnd = streamPtr->dictionary + streamPtr->dictSize; DEBUGLOG(5, "LZ4_compress_fast_continue (inputSize=%i)", inputSize); @@ -1499,16 +1486,17 @@ int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream, if (acceleration < 1) acceleration = ACCELERATION_DEFAULT; /* invalidate tiny dictionaries */ - if ( (streamPtr->dictSize-1 < 4-1) /* intentional underflow */ - && (dictEnd != (const BYTE*)source) ) { + if ((streamPtr->dictSize - 1 < 4 - 1) /* intentional underflow */ + && (dictEnd != (const BYTE *)source)) { DEBUGLOG(5, "LZ4_compress_fast_continue: dictSize(%u) at addr:%p is too small", streamPtr->dictSize, streamPtr->dictionary); streamPtr->dictSize = 0; - streamPtr->dictionary = (const BYTE*)source; - dictEnd = (const BYTE*)source; + streamPtr->dictionary = (const BYTE *)source; + dictEnd = (const BYTE *)source; } /* Check overlapping input/dictionary space */ - { const BYTE* sourceEnd = (const BYTE*) source + inputSize; + { + const BYTE *sourceEnd = (const BYTE *) source + inputSize; if ((sourceEnd > streamPtr->dictionary) && (sourceEnd < dictEnd)) { streamPtr->dictSize = (U32)(dictEnd - sourceEnd); if (streamPtr->dictSize > 64 KB) streamPtr->dictSize = 64 KB; @@ -1518,7 +1506,7 @@ int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream, } /* prefix mode : source data follows dictionary */ - if (dictEnd == (const BYTE*)source) { + if (dictEnd == (const BYTE *)source) { if ((streamPtr->dictSize < 64 KB) && (streamPtr->dictSize < streamPtr->currentOffset)) return LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, withPrefix64k, dictSmall, acceleration); else @@ -1526,7 +1514,8 @@ int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream, } /* external dictionary mode */ - { int result; + { + int result; if (streamPtr->dictCtx) { /* We depend here on the fact that dictCtx'es (produced by * LZ4_loadDict) guarantee that their tables contain no references @@ -1551,7 +1540,7 @@ int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream, result = LZ4_compress_generic(streamPtr, source, dest, inputSize, NULL, maxOutputSize, limitedOutput, tableType, usingExtDict, noDictIssue, acceleration); } } - streamPtr->dictionary = (const BYTE*)source; + streamPtr->dictionary = (const BYTE *)source; streamPtr->dictSize = (U32)inputSize; return result; } @@ -1559,9 +1548,8 @@ int LZ4_compress_fast_continue (LZ4_stream_t* LZ4_stream, /* Hidden debug function, to force-test external dictionary mode */ -int LZ4_compress_forceExtDict (LZ4_stream_t* LZ4_dict, const char* source, char* dest, int srcSize) -{ - LZ4_stream_t_internal* streamPtr = &LZ4_dict->internal_donotuse; +int LZ4_compress_forceExtDict(LZ4_stream_t *LZ4_dict, const char *source, char *dest, int srcSize) { + LZ4_stream_t_internal *streamPtr = &LZ4_dict->internal_donotuse; int result; LZ4_renormDictT(streamPtr, srcSize); @@ -1572,7 +1560,7 @@ int LZ4_compress_forceExtDict (LZ4_stream_t* LZ4_dict, const char* source, char* result = LZ4_compress_generic(streamPtr, source, dest, srcSize, NULL, 0, notLimited, byU32, usingExtDict, noDictIssue, 1); } - streamPtr->dictionary = (const BYTE*)source; + streamPtr->dictionary = (const BYTE *)source; streamPtr->dictSize = (U32)srcSize; return result; @@ -1586,17 +1574,16 @@ int LZ4_compress_forceExtDict (LZ4_stream_t* LZ4_dict, const char* source, char* * dictionary is immediately usable, you can therefore call LZ4_compress_fast_continue(). * Return : saved dictionary size in bytes (necessarily <= dictSize), or 0 if error. */ -int LZ4_saveDict (LZ4_stream_t* LZ4_dict, char* safeBuffer, int dictSize) -{ - LZ4_stream_t_internal* const dict = &LZ4_dict->internal_donotuse; - const BYTE* const previousDictEnd = dict->dictionary + dict->dictSize; +int LZ4_saveDict(LZ4_stream_t *LZ4_dict, char *safeBuffer, int dictSize) { + LZ4_stream_t_internal *const dict = &LZ4_dict->internal_donotuse; + const BYTE *const previousDictEnd = dict->dictionary + dict->dictSize; if ((U32)dictSize > 64 KB) { dictSize = 64 KB; } /* useless to define a dictionary > 64 KB */ if ((U32)dictSize > dict->dictSize) { dictSize = (int)dict->dictSize; } memmove(safeBuffer, previousDictEnd - dictSize, dictSize); - dict->dictionary = (const BYTE*)safeBuffer; + dict->dictionary = (const BYTE *)safeBuffer; dict->dictSize = (U32)dictSize; return dictSize; @@ -1624,29 +1611,28 @@ typedef enum { decode_full_block = 0, partial_decode = 1 } earlyEnd_directive; */ typedef enum { loop_error = -2, initial_error = -1, ok = 0 } variable_length_error; LZ4_FORCE_INLINE unsigned -read_variable_length(const BYTE**ip, const BYTE* lencheck, int loop_check, int initial_check, variable_length_error* error) -{ - unsigned length = 0; - unsigned s; - if (initial_check && unlikely((*ip) >= lencheck)) { /* overflow detection */ - *error = initial_error; - return length; - } - do { - s = **ip; - (*ip)++; - length += s; - if (loop_check && unlikely((*ip) >= lencheck)) { /* overflow detection */ - *error = loop_error; - return length; +read_variable_length(const BYTE **ip, const BYTE *lencheck, int loop_check, int initial_check, variable_length_error *error) { + unsigned length = 0; + unsigned s; + if (initial_check && unlikely((*ip) >= lencheck)) { /* overflow detection */ + *error = initial_error; + return length; } - } while (s==255); + do { + s = **ip; + (*ip)++; + length += s; + if (loop_check && unlikely((*ip) >= lencheck)) { /* overflow detection */ + *error = loop_error; + return length; + } + } while (s == 255); - return length; + return length; } -int LZ4_decompress_generic(const char* const src, char* const dst, int srcSize, int outputSize, endCondition_directive endOnInput, earlyEnd_directive partialDecoding, - dict_directive dict, const BYTE* const lowPrefix, const BYTE* const dictStart, const size_t dictSize ); +int LZ4_decompress_generic(const char *const src, char *const dst, int srcSize, int outputSize, endCondition_directive endOnInput, earlyEnd_directive partialDecoding, + dict_directive dict, const BYTE *const lowPrefix, const BYTE *const dictStart, const size_t dictSize); /*! LZ4_decompress_generic() : * This generic decompression function covers all use cases. @@ -1656,39 +1642,39 @@ int LZ4_decompress_generic(const char* const src, char* const dst, int srcSize, */ int LZ4_decompress_generic( - const char* const src, - char* const dst, - int srcSize, - int outputSize, /* If endOnInput==endOnInputSize, this value is `dstCapacity` */ + const char *const src, + char *const dst, + int srcSize, + int outputSize, /* If endOnInput==endOnInputSize, this value is `dstCapacity` */ - endCondition_directive endOnInput, /* endOnOutputSize, endOnInputSize */ - earlyEnd_directive partialDecoding, /* full, partial */ - dict_directive dict, /* noDict, withPrefix64k, usingExtDict */ - const BYTE* const lowPrefix, /* always <= dst, == dst when no prefix */ - const BYTE* const dictStart, /* only if dict==usingExtDict */ - const size_t dictSize /* note : = 0 if noDict */ - ) -{ + endCondition_directive endOnInput, /* endOnOutputSize, endOnInputSize */ + earlyEnd_directive partialDecoding, /* full, partial */ + dict_directive dict, /* noDict, withPrefix64k, usingExtDict */ + const BYTE *const lowPrefix, /* always <= dst, == dst when no prefix */ + const BYTE *const dictStart, /* only if dict==usingExtDict */ + const size_t dictSize /* note : = 0 if noDict */ +) { if (src == NULL) { return -1; } - { const BYTE* ip = (const BYTE*) src; - const BYTE* const iend = ip + srcSize; + { + const BYTE *ip = (const BYTE *) src; + const BYTE *const iend = ip + srcSize; - BYTE* op = (BYTE*) dst; - BYTE* const oend = op + outputSize; - BYTE* cpy; + BYTE *op = (BYTE *) dst; + BYTE *const oend = op + outputSize; + BYTE *cpy; - const BYTE* const dictEnd = (dictStart == NULL) ? NULL : dictStart + dictSize; + const BYTE *const dictEnd = (dictStart == NULL) ? NULL : dictStart + dictSize; - const int safeDecode = (endOnInput==endOnInputSize); + const int safeDecode = (endOnInput == endOnInputSize); const int checkOffset = ((safeDecode) && (dictSize < (int)(64 KB))); /* Set up the "end" pointers for the shortcut. */ - const BYTE* const shortiend = iend - (endOnInput ? 14 : 8) /*maxLL*/ - 2 /*offset*/; - const BYTE* const shortoend = oend - (endOnInput ? 14 : 8) /*maxLL*/ - 18 /*maxML*/; + const BYTE *const shortiend = iend - (endOnInput ? 14 : 8) /*maxLL*/ - 2 /*offset*/; + const BYTE *const shortoend = oend - (endOnInput ? 14 : 8) /*maxLL*/ - 18 /*maxML*/; - const BYTE* match; + const BYTE *match; size_t offset; unsigned token; size_t length; @@ -1698,15 +1684,15 @@ LZ4_decompress_generic( /* Special cases */ assert(lowPrefix <= op); - if ((endOnInput) && (unlikely(outputSize==0))) { + if ((endOnInput) && (unlikely(outputSize == 0))) { /* Empty output buffer */ if (partialDecoding) return 0; - return ((srcSize==1) && (*ip==0)) ? 0 : -1; + return ((srcSize == 1) && (*ip == 0)) ? 0 : -1; } - if ((!endOnInput) && (unlikely(outputSize==0))) { return (*ip==0 ? 1 : -1); } - if ((endOnInput) && unlikely(srcSize==0)) { return -1; } + if ((!endOnInput) && (unlikely(outputSize == 0))) { return (*ip == 0 ? 1 : -1); } + if ((endOnInput) && unlikely(srcSize == 0)) { return -1; } - /* Currently the fast loop shows a regression on qualcomm arm chips. */ + /* Currently the fast loop shows a regression on qualcomm arm chips. */ #if LZ4_FAST_DEC_LOOP if ((oend - op) < FASTLOOP_SAFE_DISTANCE) { DEBUGLOG(6, "skip fast decode loop"); @@ -1726,42 +1712,45 @@ LZ4_decompress_generic( /* decode literal length */ if (length == RUN_MASK) { variable_length_error error = ok; - length += read_variable_length(&ip, iend-RUN_MASK, endOnInput, endOnInput, &error); + length += read_variable_length(&ip, iend - RUN_MASK, endOnInput, endOnInput, &error); if (error == initial_error) { goto _output_error; } - if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)(op))) { goto _output_error; } /* overflow detection */ - if ((safeDecode) && unlikely((uptrval)(ip)+length<(uptrval)(ip))) { goto _output_error; } /* overflow detection */ + if ((safeDecode) && unlikely((uptrval)(op) + length < (uptrval)(op))) { goto _output_error; } /* overflow detection */ + if ((safeDecode) && unlikely((uptrval)(ip) + length < (uptrval)(ip))) { goto _output_error; } /* overflow detection */ /* copy literals */ - cpy = op+length; + cpy = op + length; LZ4_STATIC_ASSERT(MFLIMIT >= WILDCOPYLENGTH); if (endOnInput) { /* LZ4_decompress_safe() */ - if ((cpy>oend-32) || (ip+length>iend-32)) { goto safe_literal_copy; } + if ((cpy > oend - 32) || (ip + length > iend - 32)) { goto safe_literal_copy; } LZ4_wildCopy32(op, ip, cpy); } else { /* LZ4_decompress_fast() */ - if (cpy>oend-8) { goto safe_literal_copy; } + if (cpy > oend - 8) { goto safe_literal_copy; } LZ4_wildCopy8(op, ip, cpy); /* LZ4_decompress_fast() cannot copy more than 8 bytes at a time : * it doesn't know input length, and only relies on end-of-block properties */ } - ip += length; op = cpy; + ip += length; + op = cpy; } else { - cpy = op+length; + cpy = op + length; if (endOnInput) { /* LZ4_decompress_safe() */ DEBUGLOG(7, "copy %u bytes in a 16-bytes stripe", (unsigned)length); /* We don't need to check oend, since we check it once for each loop below */ - if (ip > iend-(16 + 1/*max lit + offset + nextToken*/)) { goto safe_literal_copy; } + if (ip > iend - (16 + 1/*max lit + offset + nextToken*/)) { goto safe_literal_copy; } /* Literals can only be 14, but hope compilers optimize if we copy by a register size */ memcpy(op, ip, 16); } else { /* LZ4_decompress_fast() */ /* LZ4_decompress_fast() cannot copy more than 8 bytes at a time : * it doesn't know input length, and relies on end-of-block properties */ memcpy(op, ip, 8); - if (length > 8) { memcpy(op+8, ip+8, 8); } + if (length > 8) { memcpy(op + 8, ip + 8, 8); } } - ip += length; op = cpy; + ip += length; + op = cpy; } /* get offset */ - offset = LZ4_readLE16(ip); ip+=2; + offset = LZ4_readLE16(ip); + ip += 2; match = op - offset; assert(match <= op); @@ -1769,11 +1758,11 @@ LZ4_decompress_generic( length = token & ML_MASK; if (length == ML_MASK) { - variable_length_error error = ok; - if ((checkOffset) && (unlikely(match + dictSize < lowPrefix))) { goto _output_error; } /* Error : offset outside buffers */ - length += read_variable_length(&ip, iend - LASTLITERALS + 1, endOnInput, 0, &error); - if (error != ok) { goto _output_error; } - if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)op)) { goto _output_error; } /* overflow detection */ + variable_length_error error = ok; + if ((checkOffset) && (unlikely(match + dictSize < lowPrefix))) { goto _output_error; } /* Error : offset outside buffers */ + length += read_variable_length(&ip, iend - LASTLITERALS + 1, endOnInput, 0, &error); + if (error != ok) { goto _output_error; } + if ((safeDecode) && unlikely((uptrval)(op) + length < (uptrval)op)) { goto _output_error; } /* overflow detection */ length += MINMATCH; if (op + length >= oend - FASTLOOP_SAFE_DISTANCE) { goto safe_match_copy; @@ -1792,25 +1781,28 @@ LZ4_decompress_generic( assert(op + 18 <= oend); memcpy(op, match, 8); - memcpy(op+8, match+8, 8); - memcpy(op+16, match+16, 2); + memcpy(op + 8, match + 8, 8); + memcpy(op + 16, match + 16, 2); op += length; continue; - } } } + } + } + } if ((checkOffset) && (unlikely(match + dictSize < lowPrefix))) { goto _output_error; } /* Error : offset outside buffers */ /* match starting within external dictionary */ - if ((dict==usingExtDict) && (match < lowPrefix)) { - if (unlikely(op+length > oend-LASTLITERALS)) { + if ((dict == usingExtDict) && (match < lowPrefix)) { + if (unlikely(op + length > oend - LASTLITERALS)) { if (partialDecoding) { - length = MIN(length, (size_t)(oend-op)); /* reach end of buffer */ + length = MIN(length, (size_t)(oend - op)); /* reach end of buffer */ } else { goto _output_error; /* end-of-block condition violated */ - } } + } + } - if (length <= (size_t)(lowPrefix-match)) { + if (length <= (size_t)(lowPrefix - match)) { /* match fits entirely within external dictionary : just copy */ - memmove(op, dictEnd - (lowPrefix-match), length); + memmove(op, dictEnd - (lowPrefix - match), length); op += length; } else { /* match stretches into both external dictionary and current block */ @@ -1819,21 +1811,22 @@ LZ4_decompress_generic( memcpy(op, dictEnd - copySize, copySize); op += copySize; if (restSize > (size_t)(op - lowPrefix)) { /* overlap copy */ - BYTE* const endOfMatch = op + restSize; - const BYTE* copyFrom = lowPrefix; + BYTE *const endOfMatch = op + restSize; + const BYTE *copyFrom = lowPrefix; while (op < endOfMatch) { *op++ = *copyFrom++; } } else { memcpy(op, lowPrefix, restSize); op += restSize; - } } + } + } continue; } /* copy match within block */ cpy = op + length; - assert((op <= oend) && (oend-op >= 32)); - if (unlikely(offset<16)) { + assert((op <= oend) && (oend - op >= 32)); + if (unlikely(offset < 16)) { LZ4_memcpy_using_offset(op, match, cpy, offset); } else { LZ4_wildCopy32(op, match, cpy); @@ -1841,7 +1834,7 @@ LZ4_decompress_generic( op = cpy; /* wildcopy correction */ } - safe_decode: +safe_decode: #endif /* Main Loop : decode remaining sequences where output < FASTLOOP_SAFE_DISTANCE */ @@ -1860,28 +1853,30 @@ LZ4_decompress_generic( * those 18 bytes earlier, upon entering the shortcut (in other words, * there is a combined check for both stages). */ - if ( (endOnInput ? length != RUN_MASK : length <= 8) - /* strictly "less than" on input, to re-enter the loop with at least one byte */ - && likely((endOnInput ? ip < shortiend : 1) & (op <= shortoend)) ) { + if ((endOnInput ? length != RUN_MASK : length <= 8) + /* strictly "less than" on input, to re-enter the loop with at least one byte */ + && likely((endOnInput ? ip < shortiend : 1) & (op <= shortoend))) { /* Copy the literals */ memcpy(op, ip, endOnInput ? 16 : 8); - op += length; ip += length; + op += length; + ip += length; /* The second stage: prepare for match copying, decode full info. * If it doesn't work out, the info won't be wasted. */ length = token & ML_MASK; /* match length */ - offset = LZ4_readLE16(ip); ip += 2; + offset = LZ4_readLE16(ip); + ip += 2; match = op - offset; assert(match <= op); /* check overflow */ /* Do not deal with overlapping matches. */ - if ( (length != ML_MASK) - && (offset >= 8) - && (dict==withPrefix64k || match >= lowPrefix) ) { + if ((length != ML_MASK) + && (offset >= 8) + && (dict == withPrefix64k || match >= lowPrefix)) { /* Copy the match. */ memcpy(op + 0, match + 0, 8); memcpy(op + 8, match + 8, 8); - memcpy(op +16, match +16, 2); + memcpy(op + 16, match + 16, 2); op += length + MINMATCH; /* Both stages worked, load the next token. */ continue; @@ -1895,21 +1890,20 @@ LZ4_decompress_generic( /* decode literal length */ if (length == RUN_MASK) { variable_length_error error = ok; - length += read_variable_length(&ip, iend-RUN_MASK, endOnInput, endOnInput, &error); + length += read_variable_length(&ip, iend - RUN_MASK, endOnInput, endOnInput, &error); if (error == initial_error) { goto _output_error; } - if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)(op))) { goto _output_error; } /* overflow detection */ - if ((safeDecode) && unlikely((uptrval)(ip)+length<(uptrval)(ip))) { goto _output_error; } /* overflow detection */ + if ((safeDecode) && unlikely((uptrval)(op) + length < (uptrval)(op))) { goto _output_error; } /* overflow detection */ + if ((safeDecode) && unlikely((uptrval)(ip) + length < (uptrval)(ip))) { goto _output_error; } /* overflow detection */ } /* copy literals */ - cpy = op+length; + cpy = op + length; #if LZ4_FAST_DEC_LOOP - safe_literal_copy: +safe_literal_copy: #endif LZ4_STATIC_ASSERT(MFLIMIT >= WILDCOPYLENGTH); - if ( ((endOnInput) && ((cpy>oend-MFLIMIT) || (ip+length>iend-(2+1+LASTLITERALS))) ) - || ((!endOnInput) && (cpy>oend-WILDCOPYLENGTH)) ) - { + if (((endOnInput) && ((cpy > oend - MFLIMIT) || (ip + length > iend - (2 + 1 + LASTLITERALS)))) + || ((!endOnInput) && (cpy > oend - WILDCOPYLENGTH))) { /* We've either hit the input parsing restriction or the output parsing restriction. * If we've hit the input parsing condition then this must be the last sequence. * If we've hit the output parsing condition then we are either using partialDecoding @@ -1923,26 +1917,26 @@ LZ4_decompress_generic( /* If we're in this block because of the input parsing condition, then we must be on the * last sequence (or invalid), so we must check that we exactly consume the input. */ - if ((ip+length>iend-(2+1+LASTLITERALS)) && (ip+length != iend)) { goto _output_error; } - assert(ip+length <= iend); + if ((ip + length > iend - (2 + 1 + LASTLITERALS)) && (ip + length != iend)) { goto _output_error; } + assert(ip + length <= iend); /* We are finishing in the middle of a literals segment. * Break after the copy. */ if (cpy > oend) { cpy = oend; - assert(op<=oend); - length = (size_t)(oend-op); + assert(op <= oend); + length = (size_t)(oend - op); } - assert(ip+length <= iend); + assert(ip + length <= iend); } else { /* We must be on the last sequence because of the parsing limitations so check * that we exactly regenerate the original size (must be exact when !endOnInput). */ if ((!endOnInput) && (cpy != oend)) { goto _output_error; } - /* We must be on the last sequence (or invalid) because of the parsing limitations - * so check that we exactly consume the input and don't overrun the output buffer. - */ - if ((endOnInput) && ((ip+length != iend) || (cpy > oend))) { goto _output_error; } + /* We must be on the last sequence (or invalid) because of the parsing limitations + * so check that we exactly consume the input and don't overrun the output buffer. + */ + if ((endOnInput) && ((ip + length != iend) || (cpy > oend))) { goto _output_error; } } memmove(op, ip, length); /* supports overlapping memory regions, which only matters for in-place decompression scenarios */ ip += length; @@ -1956,39 +1950,41 @@ LZ4_decompress_generic( } } else { LZ4_wildCopy8(op, ip, cpy); /* may overwrite up to WILDCOPYLENGTH beyond cpy */ - ip += length; op = cpy; + ip += length; + op = cpy; } /* get offset */ - offset = LZ4_readLE16(ip); ip+=2; + offset = LZ4_readLE16(ip); + ip += 2; match = op - offset; /* get matchlength */ length = token & ML_MASK; - _copy_match: +_copy_match: if (length == ML_MASK) { - variable_length_error error = ok; - length += read_variable_length(&ip, iend - LASTLITERALS + 1, endOnInput, 0, &error); - if (error != ok) goto _output_error; - if ((safeDecode) && unlikely((uptrval)(op)+length<(uptrval)op)) goto _output_error; /* overflow detection */ + variable_length_error error = ok; + length += read_variable_length(&ip, iend - LASTLITERALS + 1, endOnInput, 0, &error); + if (error != ok) goto _output_error; + if ((safeDecode) && unlikely((uptrval)(op) + length < (uptrval)op)) goto _output_error; /* overflow detection */ } length += MINMATCH; #if LZ4_FAST_DEC_LOOP - safe_match_copy: +safe_match_copy: #endif if ((checkOffset) && (unlikely(match + dictSize < lowPrefix))) goto _output_error; /* Error : offset outside buffers */ /* match starting within external dictionary */ - if ((dict==usingExtDict) && (match < lowPrefix)) { - if (unlikely(op+length > oend-LASTLITERALS)) { - if (partialDecoding) length = MIN(length, (size_t)(oend-op)); + if ((dict == usingExtDict) && (match < lowPrefix)) { + if (unlikely(op + length > oend - LASTLITERALS)) { + if (partialDecoding) length = MIN(length, (size_t)(oend - op)); else goto _output_error; /* doesn't respect parsing restriction */ } - if (length <= (size_t)(lowPrefix-match)) { + if (length <= (size_t)(lowPrefix - match)) { /* match fits entirely within external dictionary : just copy */ - memmove(op, dictEnd - (lowPrefix-match), length); + memmove(op, dictEnd - (lowPrefix - match), length); op += length; } else { /* match stretches into both external dictionary and current block */ @@ -1997,13 +1993,14 @@ LZ4_decompress_generic( memcpy(op, dictEnd - copySize, copySize); op += copySize; if (restSize > (size_t)(op - lowPrefix)) { /* overlap copy */ - BYTE* const endOfMatch = op + restSize; - const BYTE* copyFrom = lowPrefix; + BYTE *const endOfMatch = op + restSize; + const BYTE *copyFrom = lowPrefix; while (op < endOfMatch) *op++ = *copyFrom++; } else { memcpy(op, lowPrefix, restSize); op += restSize; - } } + } + } continue; } assert(match >= lowPrefix); @@ -2012,11 +2009,11 @@ LZ4_decompress_generic( cpy = op + length; /* partialDecoding : may end anywhere within the block */ - assert(op<=oend); - if (partialDecoding && (cpy > oend-MATCH_SAFEGUARD_DISTANCE)) { - size_t const mlen = MIN(length, (size_t)(oend-op)); - const BYTE* const matchEnd = match + mlen; - BYTE* const copyEnd = op + mlen; + assert(op <= oend); + if (partialDecoding && (cpy > oend - MATCH_SAFEGUARD_DISTANCE)) { + size_t const mlen = MIN(length, (size_t)(oend - op)); + const BYTE *const matchEnd = match + mlen; + BYTE *const copyEnd = op + mlen; if (matchEnd > op) { /* overlap copy */ while (op < copyEnd) { *op++ = *match++; } } else { @@ -2027,14 +2024,14 @@ LZ4_decompress_generic( continue; } - if (unlikely(offset<8)) { + if (unlikely(offset < 8)) { LZ4_write32(op, 0); /* silence msan warning when offset==0 */ op[0] = match[0]; op[1] = match[1]; op[2] = match[2]; op[3] = match[3]; match += inc32table[offset]; - memcpy(op+4, match, 4); + memcpy(op + 4, match, 4); match -= dec64table[offset]; } else { memcpy(op, match, 8); @@ -2042,9 +2039,9 @@ LZ4_decompress_generic( } op += 8; - if (unlikely(cpy > oend-MATCH_SAFEGUARD_DISTANCE)) { - BYTE* const oCopyLimit = oend - (WILDCOPYLENGTH-1); - if (cpy > oend-LASTLITERALS) { goto _output_error; } /* Error : last LASTLITERALS bytes must be literals (uncompressed) */ + if (unlikely(cpy > oend - MATCH_SAFEGUARD_DISTANCE)) { + BYTE *const oCopyLimit = oend - (WILDCOPYLENGTH - 1); + if (cpy > oend - LASTLITERALS) { goto _output_error; } /* Error : last LASTLITERALS bytes must be literals (uncompressed) */ if (op < oCopyLimit) { LZ4_wildCopy8(op, match, oCopyLimit); match += oCopyLimit - op; @@ -2053,21 +2050,21 @@ LZ4_decompress_generic( while (op < cpy) { *op++ = *match++; } } else { memcpy(op, match, 8); - if (length > 16) { LZ4_wildCopy8(op+8, match+8, cpy); } + if (length > 16) { LZ4_wildCopy8(op + 8, match + 8, cpy); } } op = cpy; /* wildcopy correction */ } /* end of decoding */ if (endOnInput) { - return (int) (((char*)op)-dst); /* Nb of output bytes decoded */ - } else { - return (int) (((const char*)ip)-src); /* Nb of input bytes read */ - } + return (int)(((char *)op) - dst); /* Nb of output bytes decoded */ + } else { + return (int)(((const char *)ip) - src); /* Nb of input bytes read */ + } /* Overflow error detected */ - _output_error: - return (int) (-(((const char*)ip)-src))-1; +_output_error: + return (int)(-(((const char *)ip) - src)) - 1; } } @@ -2075,74 +2072,66 @@ LZ4_decompress_generic( /*===== Instantiate the API decoding functions. =====*/ LZ4_FORCE_O2_GCC_PPC64LE -int LZ4_decompress_safe(const char* source, char* dest, int compressedSize, int maxDecompressedSize) -{ +int LZ4_decompress_safe(const char *source, char *dest, int compressedSize, int maxDecompressedSize) { return LZ4_decompress_generic(source, dest, compressedSize, maxDecompressedSize, endOnInputSize, decode_full_block, noDict, - (BYTE*)dest, NULL, 0); + (BYTE *)dest, NULL, 0); } LZ4_FORCE_O2_GCC_PPC64LE -int LZ4_decompress_safe_partial(const char* src, char* dst, int compressedSize, int targetOutputSize, int dstCapacity) -{ +int LZ4_decompress_safe_partial(const char *src, char *dst, int compressedSize, int targetOutputSize, int dstCapacity) { dstCapacity = MIN(targetOutputSize, dstCapacity); return LZ4_decompress_generic(src, dst, compressedSize, dstCapacity, endOnInputSize, partial_decode, - noDict, (BYTE*)dst, NULL, 0); + noDict, (BYTE *)dst, NULL, 0); } LZ4_FORCE_O2_GCC_PPC64LE -int LZ4_decompress_fast(const char* source, char* dest, int originalSize) -{ +int LZ4_decompress_fast(const char *source, char *dest, int originalSize) { return LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, decode_full_block, withPrefix64k, - (BYTE*)dest - 64 KB, NULL, 0); + (BYTE *)dest - 64 KB, NULL, 0); } /*===== Instantiate a few more decoding cases, used more than once. =====*/ LZ4_FORCE_O2_GCC_PPC64LE /* Exported, an obsolete API function. */ -int LZ4_decompress_safe_withPrefix64k(const char* source, char* dest, int compressedSize, int maxOutputSize) -{ +int LZ4_decompress_safe_withPrefix64k(const char *source, char *dest, int compressedSize, int maxOutputSize) { return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, decode_full_block, withPrefix64k, - (BYTE*)dest - 64 KB, NULL, 0); + (BYTE *)dest - 64 KB, NULL, 0); } /* Another obsolete API function, paired with the previous one. */ -int LZ4_decompress_fast_withPrefix64k(const char* source, char* dest, int originalSize) -{ +int LZ4_decompress_fast_withPrefix64k(const char *source, char *dest, int originalSize) { /* LZ4_decompress_fast doesn't validate match offsets, * and thus serves well with any prefixed dictionary. */ return LZ4_decompress_fast(source, dest, originalSize); } LZ4_FORCE_O2_GCC_PPC64LE -static int LZ4_decompress_safe_withSmallPrefix(const char* source, char* dest, int compressedSize, int maxOutputSize, - size_t prefixSize) -{ +static int LZ4_decompress_safe_withSmallPrefix(const char *source, char *dest, int compressedSize, int maxOutputSize, + size_t prefixSize) { return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, decode_full_block, noDict, - (BYTE*)dest-prefixSize, NULL, 0); + (BYTE *)dest - prefixSize, NULL, 0); } LZ4_FORCE_O2_GCC_PPC64LE -int LZ4_decompress_safe_forceExtDict(const char* source, char* dest, +int LZ4_decompress_safe_forceExtDict(const char *source, char *dest, int compressedSize, int maxOutputSize, - const void* dictStart, size_t dictSize) -{ + const void *dictStart, size_t dictSize) { return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, decode_full_block, usingExtDict, - (BYTE*)dest, (const BYTE*)dictStart, dictSize); + (BYTE *)dest, (const BYTE *)dictStart, dictSize); } LZ4_FORCE_O2_GCC_PPC64LE -static int LZ4_decompress_fast_extDict(const char* source, char* dest, int originalSize, - const void* dictStart, size_t dictSize) -{ +static int LZ4_decompress_fast_extDict(const char *source, char *dest, int originalSize, + const void *dictStart, size_t dictSize) { return LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, decode_full_block, usingExtDict, - (BYTE*)dest, (const BYTE*)dictStart, dictSize); + (BYTE *)dest, (const BYTE *)dictStart, dictSize); } /* The "double dictionary" mode, for use with e.g. ring buffers: the first part @@ -2150,34 +2139,30 @@ static int LZ4_decompress_fast_extDict(const char* source, char* dest, int origi * These routines are used only once, in LZ4_decompress_*_continue(). */ LZ4_FORCE_INLINE -int LZ4_decompress_safe_doubleDict(const char* source, char* dest, int compressedSize, int maxOutputSize, - size_t prefixSize, const void* dictStart, size_t dictSize) -{ +int LZ4_decompress_safe_doubleDict(const char *source, char *dest, int compressedSize, int maxOutputSize, + size_t prefixSize, const void *dictStart, size_t dictSize) { return LZ4_decompress_generic(source, dest, compressedSize, maxOutputSize, endOnInputSize, decode_full_block, usingExtDict, - (BYTE*)dest-prefixSize, (const BYTE*)dictStart, dictSize); + (BYTE *)dest - prefixSize, (const BYTE *)dictStart, dictSize); } LZ4_FORCE_INLINE -int LZ4_decompress_fast_doubleDict(const char* source, char* dest, int originalSize, - size_t prefixSize, const void* dictStart, size_t dictSize) -{ +int LZ4_decompress_fast_doubleDict(const char *source, char *dest, int originalSize, + size_t prefixSize, const void *dictStart, size_t dictSize) { return LZ4_decompress_generic(source, dest, 0, originalSize, endOnOutputSize, decode_full_block, usingExtDict, - (BYTE*)dest-prefixSize, (const BYTE*)dictStart, dictSize); + (BYTE *)dest - prefixSize, (const BYTE *)dictStart, dictSize); } /*===== streaming decompression functions =====*/ -LZ4_streamDecode_t* LZ4_createStreamDecode(void) -{ - LZ4_streamDecode_t* lz4s = (LZ4_streamDecode_t*) ALLOC_AND_ZERO(sizeof(LZ4_streamDecode_t)); +LZ4_streamDecode_t *LZ4_createStreamDecode(void) { + LZ4_streamDecode_t *lz4s = (LZ4_streamDecode_t *) ALLOC_AND_ZERO(sizeof(LZ4_streamDecode_t)); LZ4_STATIC_ASSERT(LZ4_STREAMDECODESIZE >= sizeof(LZ4_streamDecode_t_internal)); /* A compilation error here means LZ4_STREAMDECODESIZE is not large enough */ return lz4s; } -int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream) -{ +int LZ4_freeStreamDecode(LZ4_streamDecode_t *LZ4_stream) { if (LZ4_stream == NULL) { return 0; } /* support free on NULL */ FREEMEM(LZ4_stream); return 0; @@ -2189,11 +2174,10 @@ int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream) * Loading a size of 0 is allowed (same effect as no dictionary). * @return : 1 if OK, 0 if error */ -int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize) -{ - LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; +int LZ4_setStreamDecode(LZ4_streamDecode_t *LZ4_streamDecode, const char *dictionary, int dictSize) { + LZ4_streamDecode_t_internal *lz4sd = &LZ4_streamDecode->internal_donotuse; lz4sd->prefixSize = (size_t) dictSize; - lz4sd->prefixEnd = (const BYTE*) dictionary + dictSize; + lz4sd->prefixEnd = (const BYTE *) dictionary + dictSize; lz4sd->externalDict = NULL; lz4sd->extDictSize = 0; return 1; @@ -2210,8 +2194,7 @@ int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dicti * @return : minimum ring buffer size, * or 0 if there is an error (invalid maxBlockSize). */ -int LZ4_decoderRingBufferSize(int maxBlockSize) -{ +int LZ4_decoderRingBufferSize(int maxBlockSize) { if (maxBlockSize < 0) return 0; if (maxBlockSize > LZ4_MAX_INPUT_SIZE) return 0; if (maxBlockSize < 16) maxBlockSize = 16; @@ -2226,9 +2209,8 @@ int LZ4_decoderRingBufferSize(int maxBlockSize) and indicate where it stands using LZ4_setStreamDecode() */ LZ4_FORCE_O2_GCC_PPC64LE -int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int compressedSize, int maxOutputSize) -{ - LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; +int LZ4_decompress_safe_continue(LZ4_streamDecode_t *LZ4_streamDecode, const char *source, char *dest, int compressedSize, int maxOutputSize) { + LZ4_streamDecode_t_internal *lz4sd = &LZ4_streamDecode->internal_donotuse; int result; if (lz4sd->prefixSize == 0) { @@ -2237,8 +2219,8 @@ int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const ch result = LZ4_decompress_safe(source, dest, compressedSize, maxOutputSize); if (result <= 0) return result; lz4sd->prefixSize = (size_t)result; - lz4sd->prefixEnd = (BYTE*)dest + result; - } else if (lz4sd->prefixEnd == (BYTE*)dest) { + lz4sd->prefixEnd = (BYTE *)dest + result; + } else if (lz4sd->prefixEnd == (BYTE *)dest) { /* They're rolling the current segment. */ if (lz4sd->prefixSize >= 64 KB - 1) result = LZ4_decompress_safe_withPrefix64k(source, dest, compressedSize, maxOutputSize); @@ -2259,16 +2241,15 @@ int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const ch lz4sd->externalDict, lz4sd->extDictSize); if (result <= 0) return result; lz4sd->prefixSize = (size_t)result; - lz4sd->prefixEnd = (BYTE*)dest + result; + lz4sd->prefixEnd = (BYTE *)dest + result; } return result; } LZ4_FORCE_O2_GCC_PPC64LE -int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* source, char* dest, int originalSize) -{ - LZ4_streamDecode_t_internal* lz4sd = &LZ4_streamDecode->internal_donotuse; +int LZ4_decompress_fast_continue(LZ4_streamDecode_t *LZ4_streamDecode, const char *source, char *dest, int originalSize) { + LZ4_streamDecode_t_internal *lz4sd = &LZ4_streamDecode->internal_donotuse; int result; assert(originalSize >= 0); @@ -2277,8 +2258,8 @@ int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const ch result = LZ4_decompress_fast(source, dest, originalSize); if (result <= 0) return result; lz4sd->prefixSize = (size_t)originalSize; - lz4sd->prefixEnd = (BYTE*)dest + originalSize; - } else if (lz4sd->prefixEnd == (BYTE*)dest) { + lz4sd->prefixEnd = (BYTE *)dest + originalSize; + } else if (lz4sd->prefixEnd == (BYTE *)dest) { if (lz4sd->prefixSize >= 64 KB - 1 || lz4sd->extDictSize == 0) result = LZ4_decompress_fast(source, dest, originalSize); else @@ -2294,7 +2275,7 @@ int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const ch lz4sd->externalDict, lz4sd->extDictSize); if (result <= 0) return result; lz4sd->prefixSize = (size_t)originalSize; - lz4sd->prefixEnd = (BYTE*)dest + originalSize; + lz4sd->prefixEnd = (BYTE *)dest + originalSize; } return result; @@ -2308,11 +2289,10 @@ Advanced decoding functions : the dictionary must be explicitly provided within parameters */ -int LZ4_decompress_safe_usingDict(const char* source, char* dest, int compressedSize, int maxOutputSize, const char* dictStart, int dictSize) -{ - if (dictSize==0) +int LZ4_decompress_safe_usingDict(const char *source, char *dest, int compressedSize, int maxOutputSize, const char *dictStart, int dictSize) { + if (dictSize == 0) return LZ4_decompress_safe(source, dest, compressedSize, maxOutputSize); - if (dictStart+dictSize == dest) { + if (dictStart + dictSize == dest) { if (dictSize >= 64 KB - 1) { return LZ4_decompress_safe_withPrefix64k(source, dest, compressedSize, maxOutputSize); } @@ -2323,9 +2303,8 @@ int LZ4_decompress_safe_usingDict(const char* source, char* dest, int compressed return LZ4_decompress_safe_forceExtDict(source, dest, compressedSize, maxOutputSize, dictStart, (size_t)dictSize); } -int LZ4_decompress_fast_usingDict(const char* source, char* dest, int originalSize, const char* dictStart, int dictSize) -{ - if (dictSize==0 || dictStart+dictSize == dest) +int LZ4_decompress_fast_usingDict(const char *source, char *dest, int originalSize, const char *dictStart, int dictSize) { + if (dictSize == 0 || dictStart + dictSize == dest) return LZ4_decompress_fast(source, dest, originalSize); assert(dictSize >= 0); return LZ4_decompress_fast_extDict(source, dest, originalSize, dictStart, (size_t)dictSize); @@ -2336,28 +2315,22 @@ int LZ4_decompress_fast_usingDict(const char* source, char* dest, int originalSi * Obsolete Functions ***************************************************/ /* obsolete compression functions */ -int LZ4_compress_limitedOutput(const char* source, char* dest, int inputSize, int maxOutputSize) -{ +int LZ4_compress_limitedOutput(const char *source, char *dest, int inputSize, int maxOutputSize) { return LZ4_compress_default(source, dest, inputSize, maxOutputSize); } -int LZ4_compress(const char* src, char* dest, int srcSize) -{ +int LZ4_compress(const char *src, char *dest, int srcSize) { return LZ4_compress_default(src, dest, srcSize, LZ4_compressBound(srcSize)); } -int LZ4_compress_limitedOutput_withState (void* state, const char* src, char* dst, int srcSize, int dstSize) -{ +int LZ4_compress_limitedOutput_withState(void *state, const char *src, char *dst, int srcSize, int dstSize) { return LZ4_compress_fast_extState(state, src, dst, srcSize, dstSize, 1); } -int LZ4_compress_withState (void* state, const char* src, char* dst, int srcSize) -{ +int LZ4_compress_withState(void *state, const char *src, char *dst, int srcSize) { return LZ4_compress_fast_extState(state, src, dst, srcSize, LZ4_compressBound(srcSize), 1); } -int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_stream, const char* src, char* dst, int srcSize, int dstCapacity) -{ +int LZ4_compress_limitedOutput_continue(LZ4_stream_t *LZ4_stream, const char *src, char *dst, int srcSize, int dstCapacity) { return LZ4_compress_fast_continue(LZ4_stream, src, dst, srcSize, dstCapacity, 1); } -int LZ4_compress_continue (LZ4_stream_t* LZ4_stream, const char* source, char* dest, int inputSize) -{ +int LZ4_compress_continue(LZ4_stream_t *LZ4_stream, const char *source, char *dest, int inputSize) { return LZ4_compress_fast_continue(LZ4_stream, source, dest, inputSize, LZ4_compressBound(inputSize), 1); } @@ -2367,12 +2340,10 @@ They are only provided here for compatibility with older user programs. - LZ4_uncompress is totally equivalent to LZ4_decompress_fast - LZ4_uncompress_unknownOutputSize is totally equivalent to LZ4_decompress_safe */ -int LZ4_uncompress (const char* source, char* dest, int outputSize) -{ +int LZ4_uncompress(const char *source, char *dest, int outputSize) { return LZ4_decompress_fast(source, dest, outputSize); } -int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize) -{ +int LZ4_uncompress_unknownOutputSize(const char *source, char *dest, int isize, int maxOutputSize) { return LZ4_decompress_safe(source, dest, isize, maxOutputSize); } @@ -2380,23 +2351,20 @@ int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int LZ4_sizeofStreamState() { return LZ4_STREAMSIZE; } -int LZ4_resetStreamState(void* state, char* inputBuffer) -{ +int LZ4_resetStreamState(void *state, char *inputBuffer) { (void)inputBuffer; - LZ4_resetStream((LZ4_stream_t*)state); + LZ4_resetStream((LZ4_stream_t *)state); return 0; } -void* LZ4_create (char* inputBuffer) -{ +void *LZ4_create(char *inputBuffer) { (void)inputBuffer; return LZ4_createStream(); } -char* LZ4_slideInputBuffer (void* state) -{ +char *LZ4_slideInputBuffer(void *state) { /* avoid const char * -> char * conversion warning */ - return (char *)(uptrval)((LZ4_stream_t*)state)->internal_donotuse.dictionary; + return (char *)(uptrval)((LZ4_stream_t *)state)->internal_donotuse.dictionary; } #endif /* LZ4_COMMONDEFS_ONLY */ diff --git a/common/lz4/lz4.h b/common/lz4/lz4.h index 32108e232..82e8008e1 100644 --- a/common/lz4/lz4.h +++ b/common/lz4/lz4.h @@ -109,8 +109,8 @@ extern "C" { #define LZ4_EXPAND_AND_QUOTE(str) LZ4_QUOTE(str) #define LZ4_VERSION_STRING LZ4_EXPAND_AND_QUOTE(LZ4_LIB_VERSION) -LZ4LIB_API int LZ4_versionNumber (void); /**< library version number; useful to check dll version */ -LZ4LIB_API const char* LZ4_versionString (void); /**< library version string; useful to check dll version */ +LZ4LIB_API int LZ4_versionNumber(void); /**< library version number; useful to check dll version */ +LZ4LIB_API const char *LZ4_versionString(void); /**< library version string; useful to check dll version */ /*-************************************ @@ -145,7 +145,7 @@ LZ4LIB_API const char* LZ4_versionString (void); /**< library version string; * or 0 if compression fails * Note : This function is protected against buffer overflow scenarios (never writes outside 'dst' buffer, nor read outside 'source' buffer). */ -LZ4LIB_API int LZ4_compress_default(const char* src, char* dst, int srcSize, int dstCapacity); +LZ4LIB_API int LZ4_compress_default(const char *src, char *dst, int srcSize, int dstCapacity); /*! LZ4_decompress_safe() : * compressedSize : is the exact complete size of the compressed block. @@ -161,7 +161,7 @@ LZ4LIB_API int LZ4_compress_default(const char* src, char* dst, int srcSize, int * The implementation is free to send / store / derive this information in whichever way is most beneficial. * If there is a need for a different format which bundles together both compressed data and its metadata, consider looking at lz4frame.h instead. */ -LZ4LIB_API int LZ4_decompress_safe (const char* src, char* dst, int compressedSize, int dstCapacity); +LZ4LIB_API int LZ4_decompress_safe(const char *src, char *dst, int compressedSize, int dstCapacity); /*-************************************ @@ -188,7 +188,7 @@ LZ4LIB_API int LZ4_compressBound(int inputSize); An acceleration value of "1" is the same as regular LZ4_compress_default() Values <= 0 will be replaced by ACCELERATION_DEFAULT (currently == 1, see lz4.c). */ -LZ4LIB_API int LZ4_compress_fast (const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); +LZ4LIB_API int LZ4_compress_fast(const char *src, char *dst, int srcSize, int dstCapacity, int acceleration); /*! LZ4_compress_fast_extState() : @@ -198,7 +198,7 @@ LZ4LIB_API int LZ4_compress_fast (const char* src, char* dst, int srcSize, int d * Then, provide this buffer as `void* state` to compression function. */ LZ4LIB_API int LZ4_sizeofState(void); -LZ4LIB_API int LZ4_compress_fast_extState (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); +LZ4LIB_API int LZ4_compress_fast_extState(void *state, const char *src, char *dst, int srcSize, int dstCapacity, int acceleration); /*! LZ4_compress_destSize() : @@ -213,7 +213,7 @@ LZ4LIB_API int LZ4_compress_fast_extState (void* state, const char* src, char* d * @return : Nb bytes written into 'dst' (necessarily <= targetDestSize) * or 0 if compression fails. */ -LZ4LIB_API int LZ4_compress_destSize (const char* src, char* dst, int* srcSizePtr, int targetDstSize); +LZ4LIB_API int LZ4_compress_destSize(const char *src, char *dst, int *srcSizePtr, int targetDstSize); /*! LZ4_decompress_safe_partial() : @@ -240,7 +240,7 @@ LZ4LIB_API int LZ4_compress_destSize (const char* src, char* dst, int* srcSizePt * This is no longer necessary. * The function nonetheless keeps its signature, in an effort to not break API. */ -LZ4LIB_API int LZ4_decompress_safe_partial (const char* src, char* dst, int srcSize, int targetOutputSize, int dstCapacity); +LZ4LIB_API int LZ4_decompress_safe_partial(const char *src, char *dst, int srcSize, int targetOutputSize, int dstCapacity); /*-********************************************* @@ -248,8 +248,8 @@ LZ4LIB_API int LZ4_decompress_safe_partial (const char* src, char* dst, int srcS ***********************************************/ typedef union LZ4_stream_u LZ4_stream_t; /* incomplete type (defined later) */ -LZ4LIB_API LZ4_stream_t* LZ4_createStream(void); -LZ4LIB_API int LZ4_freeStream (LZ4_stream_t* streamPtr); +LZ4LIB_API LZ4_stream_t *LZ4_createStream(void); +LZ4LIB_API int LZ4_freeStream(LZ4_stream_t *streamPtr); /*! LZ4_resetStream_fast() : v1.9.0+ * Use this to prepare an LZ4_stream_t for a new chain of dependent blocks @@ -273,7 +273,7 @@ LZ4LIB_API int LZ4_freeStream (LZ4_stream_t* streamPtr); * The *extState* functions perform their own resets. * Invoking LZ4_resetStream_fast() before is redundant, and even counterproductive. */ -LZ4LIB_API void LZ4_resetStream_fast (LZ4_stream_t* streamPtr); +LZ4LIB_API void LZ4_resetStream_fast(LZ4_stream_t *streamPtr); /*! LZ4_loadDict() : * Use this function to reference a static dictionary into LZ4_stream_t. @@ -286,7 +286,7 @@ LZ4LIB_API void LZ4_resetStream_fast (LZ4_stream_t* streamPtr); * Loading a size of 0 is allowed, and is the same as reset. * @return : loaded dictionary size, in bytes (necessarily <= 64 KB) */ -LZ4LIB_API int LZ4_loadDict (LZ4_stream_t* streamPtr, const char* dictionary, int dictSize); +LZ4LIB_API int LZ4_loadDict(LZ4_stream_t *streamPtr, const char *dictionary, int dictSize); /*! LZ4_compress_fast_continue() : * Compress 'src' content using data from previously compressed blocks, for better compression ratio. @@ -311,7 +311,7 @@ LZ4LIB_API int LZ4_loadDict (LZ4_stream_t* streamPtr, const char* dictionary, in * * Note 5 : After an error, the stream status is undefined (invalid), it can only be reset or freed. */ -LZ4LIB_API int LZ4_compress_fast_continue (LZ4_stream_t* streamPtr, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); +LZ4LIB_API int LZ4_compress_fast_continue(LZ4_stream_t *streamPtr, const char *src, char *dst, int srcSize, int dstCapacity, int acceleration); /*! LZ4_saveDict() : * If last 64KB data cannot be guaranteed to remain available at its current memory location, @@ -320,7 +320,7 @@ LZ4LIB_API int LZ4_compress_fast_continue (LZ4_stream_t* streamPtr, const char* * but is much faster, because LZ4_saveDict() doesn't need to rebuild tables. * @return : saved dictionary size in bytes (necessarily <= maxDictSize), or 0 if error. */ -LZ4LIB_API int LZ4_saveDict (LZ4_stream_t* streamPtr, char* safeBuffer, int maxDictSize); +LZ4LIB_API int LZ4_saveDict(LZ4_stream_t *streamPtr, char *safeBuffer, int maxDictSize); /*-********************************************** @@ -333,8 +333,8 @@ typedef union LZ4_streamDecode_u LZ4_streamDecode_t; /* tracking context */ * creation / destruction of streaming decompression tracking context. * A tracking context can be re-used multiple times. */ -LZ4LIB_API LZ4_streamDecode_t* LZ4_createStreamDecode(void); -LZ4LIB_API int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_stream); +LZ4LIB_API LZ4_streamDecode_t *LZ4_createStreamDecode(void); +LZ4LIB_API int LZ4_freeStreamDecode(LZ4_streamDecode_t *LZ4_stream); /*! LZ4_setStreamDecode() : * An LZ4_streamDecode_t context can be allocated once and re-used multiple times. @@ -343,7 +343,7 @@ LZ4LIB_API int LZ4_freeStreamDecode (LZ4_streamDecode_t* LZ4_str * Dictionary is presumed stable : it must remain accessible and unmodified during next decompression. * @return : 1 if OK, 0 if error */ -LZ4LIB_API int LZ4_setStreamDecode (LZ4_streamDecode_t* LZ4_streamDecode, const char* dictionary, int dictSize); +LZ4LIB_API int LZ4_setStreamDecode(LZ4_streamDecode_t *LZ4_streamDecode, const char *dictionary, int dictSize); /*! LZ4_decoderRingBufferSize() : v1.8.2+ * Note : in a ring buffer scenario (optional), @@ -384,7 +384,7 @@ LZ4LIB_API int LZ4_decoderRingBufferSize(int maxBlockSize); * save the last 64KB of decoded data into a safe buffer where it can't be modified during decompression, * then indicate where this data is saved using LZ4_setStreamDecode(), before decompressing next block. */ -LZ4LIB_API int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* src, char* dst, int srcSize, int dstCapacity); +LZ4LIB_API int LZ4_decompress_safe_continue(LZ4_streamDecode_t *LZ4_streamDecode, const char *src, char *dst, int srcSize, int dstCapacity); /*! LZ4_decompress_*_usingDict() : @@ -395,7 +395,7 @@ LZ4LIB_API int LZ4_decompress_safe_continue (LZ4_streamDecode_t* LZ4_streamDecod * Performance tip : Decompression speed can be substantially increased * when dst == dictStart + dictSize. */ -LZ4LIB_API int LZ4_decompress_safe_usingDict (const char* src, char* dst, int srcSize, int dstCapcity, const char* dictStart, int dictSize); +LZ4LIB_API int LZ4_decompress_safe_usingDict(const char *src, char *dst, int srcSize, int dstCapcity, const char *dictStart, int dictSize); #endif /* LZ4_H_2983827168210 */ @@ -446,7 +446,7 @@ LZ4LIB_API int LZ4_decompress_safe_usingDict (const char* src, char* dst, int sr * this function initializes the provided state with a call to something like LZ4_resetStream_fast() * while LZ4_compress_fast_extState() starts with a call to LZ4_resetStream(). */ -LZ4LIB_STATIC_API int LZ4_compress_fast_extState_fastReset (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int acceleration); +LZ4LIB_STATIC_API int LZ4_compress_fast_extState_fastReset(void *state, const char *src, char *dst, int srcSize, int dstCapacity, int acceleration); /*! LZ4_attach_dictionary() : * This is an experimental API that allows @@ -474,7 +474,7 @@ LZ4LIB_STATIC_API int LZ4_compress_fast_extState_fastReset (void* state, const c * stream (and source buffer) must remain in-place / accessible / unchanged * through the completion of the first compression call on the stream. */ -LZ4LIB_STATIC_API void LZ4_attach_dictionary(LZ4_stream_t* workingStream, const LZ4_stream_t* dictionaryStream); +LZ4LIB_STATIC_API void LZ4_attach_dictionary(LZ4_stream_t *workingStream, const LZ4_stream_t *dictionaryStream); /*! In-place compression and decompression @@ -566,15 +566,15 @@ struct LZ4_stream_t_internal { uint32_t currentOffset; uint16_t dirty; uint16_t tableType; - const uint8_t* dictionary; - const LZ4_stream_t_internal* dictCtx; + const uint8_t *dictionary; + const LZ4_stream_t_internal *dictCtx; uint32_t dictSize; }; typedef struct { - const uint8_t* externalDict; + const uint8_t *externalDict; size_t extDictSize; - const uint8_t* prefixEnd; + const uint8_t *prefixEnd; size_t prefixSize; } LZ4_streamDecode_t_internal; @@ -586,14 +586,14 @@ struct LZ4_stream_t_internal { unsigned int currentOffset; unsigned short dirty; unsigned short tableType; - const unsigned char* dictionary; - const LZ4_stream_t_internal* dictCtx; + const unsigned char *dictionary; + const LZ4_stream_t_internal *dictCtx; unsigned int dictSize; }; typedef struct { - const unsigned char* externalDict; - const unsigned char* prefixEnd; + const unsigned char *externalDict; + const unsigned char *prefixEnd; size_t extDictSize; size_t prefixSize; } LZ4_streamDecode_t_internal; @@ -630,7 +630,7 @@ union LZ4_stream_u { * Note2: An LZ4_stream_t structure guarantees correct alignment and size. * Note3: Before v1.9.0, use LZ4_resetStream() instead */ -LZ4LIB_API LZ4_stream_t* LZ4_initStream (void* buffer, size_t size); +LZ4LIB_API LZ4_stream_t *LZ4_initStream(void *buffer, size_t size); /*! LZ4_streamDecode_t : @@ -683,16 +683,16 @@ union LZ4_streamDecode_u { #endif /* LZ4_DISABLE_DEPRECATE_WARNINGS */ /* Obsolete compression functions */ -LZ4_DEPRECATED("use LZ4_compress_default() instead") LZ4LIB_API int LZ4_compress (const char* src, char* dest, int srcSize); -LZ4_DEPRECATED("use LZ4_compress_default() instead") LZ4LIB_API int LZ4_compress_limitedOutput (const char* src, char* dest, int srcSize, int maxOutputSize); -LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") LZ4LIB_API int LZ4_compress_withState (void* state, const char* source, char* dest, int inputSize); -LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") LZ4LIB_API int LZ4_compress_limitedOutput_withState (void* state, const char* source, char* dest, int inputSize, int maxOutputSize); -LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") LZ4LIB_API int LZ4_compress_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize); -LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") LZ4LIB_API int LZ4_compress_limitedOutput_continue (LZ4_stream_t* LZ4_streamPtr, const char* source, char* dest, int inputSize, int maxOutputSize); +LZ4_DEPRECATED("use LZ4_compress_default() instead") LZ4LIB_API int LZ4_compress(const char *src, char *dest, int srcSize); +LZ4_DEPRECATED("use LZ4_compress_default() instead") LZ4LIB_API int LZ4_compress_limitedOutput(const char *src, char *dest, int srcSize, int maxOutputSize); +LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") LZ4LIB_API int LZ4_compress_withState(void *state, const char *source, char *dest, int inputSize); +LZ4_DEPRECATED("use LZ4_compress_fast_extState() instead") LZ4LIB_API int LZ4_compress_limitedOutput_withState(void *state, const char *source, char *dest, int inputSize, int maxOutputSize); +LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") LZ4LIB_API int LZ4_compress_continue(LZ4_stream_t *LZ4_streamPtr, const char *source, char *dest, int inputSize); +LZ4_DEPRECATED("use LZ4_compress_fast_continue() instead") LZ4LIB_API int LZ4_compress_limitedOutput_continue(LZ4_stream_t *LZ4_streamPtr, const char *source, char *dest, int inputSize, int maxOutputSize); /* Obsolete decompression functions */ -LZ4_DEPRECATED("use LZ4_decompress_fast() instead") LZ4LIB_API int LZ4_uncompress (const char* source, char* dest, int outputSize); -LZ4_DEPRECATED("use LZ4_decompress_safe() instead") LZ4LIB_API int LZ4_uncompress_unknownOutputSize (const char* source, char* dest, int isize, int maxOutputSize); +LZ4_DEPRECATED("use LZ4_decompress_fast() instead") LZ4LIB_API int LZ4_uncompress(const char *source, char *dest, int outputSize); +LZ4_DEPRECATED("use LZ4_decompress_safe() instead") LZ4LIB_API int LZ4_uncompress_unknownOutputSize(const char *source, char *dest, int isize, int maxOutputSize); /* Obsolete streaming functions; degraded functionality; do not use! * @@ -703,14 +703,14 @@ LZ4_DEPRECATED("use LZ4_decompress_safe() instead") LZ4LIB_API int LZ4_uncompres * achieved will therefore be no better than compressing each chunk * independently. */ -LZ4_DEPRECATED("Use LZ4_createStream() instead") LZ4LIB_API void* LZ4_create (char* inputBuffer); +LZ4_DEPRECATED("Use LZ4_createStream() instead") LZ4LIB_API void *LZ4_create(char *inputBuffer); LZ4_DEPRECATED("Use LZ4_createStream() instead") LZ4LIB_API int LZ4_sizeofStreamState(void); -LZ4_DEPRECATED("Use LZ4_resetStream() instead") LZ4LIB_API int LZ4_resetStreamState(void* state, char* inputBuffer); -LZ4_DEPRECATED("Use LZ4_saveDict() instead") LZ4LIB_API char* LZ4_slideInputBuffer (void* state); +LZ4_DEPRECATED("Use LZ4_resetStream() instead") LZ4LIB_API int LZ4_resetStreamState(void *state, char *inputBuffer); +LZ4_DEPRECATED("Use LZ4_saveDict() instead") LZ4LIB_API char *LZ4_slideInputBuffer(void *state); /* Obsolete streaming decoding functions */ -LZ4_DEPRECATED("use LZ4_decompress_safe_usingDict() instead") LZ4LIB_API int LZ4_decompress_safe_withPrefix64k (const char* src, char* dst, int compressedSize, int maxDstSize); -LZ4_DEPRECATED("use LZ4_decompress_fast_usingDict() instead") LZ4LIB_API int LZ4_decompress_fast_withPrefix64k (const char* src, char* dst, int originalSize); +LZ4_DEPRECATED("use LZ4_decompress_safe_usingDict() instead") LZ4LIB_API int LZ4_decompress_safe_withPrefix64k(const char *src, char *dst, int compressedSize, int maxDstSize); +LZ4_DEPRECATED("use LZ4_decompress_fast_usingDict() instead") LZ4LIB_API int LZ4_decompress_fast_withPrefix64k(const char *src, char *dst, int originalSize); /*! LZ4_decompress_fast() : **unsafe!** * These functions used to be faster than LZ4_decompress_safe(), @@ -741,11 +741,11 @@ LZ4_DEPRECATED("use LZ4_decompress_fast_usingDict() instead") LZ4LIB_API int LZ4 */ LZ4_DEPRECATED("This function is deprecated and unsafe. Consider using LZ4_decompress_safe() instead") -LZ4LIB_API int LZ4_decompress_fast (const char* src, char* dst, int originalSize); +LZ4LIB_API int LZ4_decompress_fast(const char *src, char *dst, int originalSize); LZ4_DEPRECATED("This function is deprecated and unsafe. Consider using LZ4_decompress_safe_continue() instead") -LZ4LIB_API int LZ4_decompress_fast_continue (LZ4_streamDecode_t* LZ4_streamDecode, const char* src, char* dst, int originalSize); +LZ4LIB_API int LZ4_decompress_fast_continue(LZ4_streamDecode_t *LZ4_streamDecode, const char *src, char *dst, int originalSize); LZ4_DEPRECATED("This function is deprecated and unsafe. Consider using LZ4_decompress_safe_usingDict() instead") -LZ4LIB_API int LZ4_decompress_fast_usingDict (const char* src, char* dst, int originalSize, const char* dictStart, int dictSize); +LZ4LIB_API int LZ4_decompress_fast_usingDict(const char *src, char *dst, int originalSize, const char *dictStart, int dictSize); /*! LZ4_resetStream() : * An LZ4_stream_t structure must be initialized at least once. @@ -753,7 +753,7 @@ LZ4LIB_API int LZ4_decompress_fast_usingDict (const char* src, char* dst, int or * Consider switching to LZ4_initStream(), * invoking LZ4_resetStream() will trigger deprecation warnings in the future. */ -LZ4LIB_API void LZ4_resetStream (LZ4_stream_t* streamPtr); +LZ4LIB_API void LZ4_resetStream(LZ4_stream_t *streamPtr); #endif /* LZ4_H_98237428734687 */ diff --git a/common/lz4/lz4hc.c b/common/lz4/lz4hc.c index 5922ed7b1..a12cddccc 100644 --- a/common/lz4/lz4hc.c +++ b/common/lz4/lz4hc.c @@ -84,20 +84,18 @@ typedef enum { noDictCtx, usingDictCtxHc } dictCtx_directive; /* Make fields passed to, and updated by LZ4HC_encodeSequence explicit */ #define UPDATABLE(ip, op, anchor) &ip, &op, &anchor -static U32 LZ4HC_hashPtr(const void* ptr) { return HASH_FUNCTION(LZ4_read32(ptr)); } +static U32 LZ4HC_hashPtr(const void *ptr) { return HASH_FUNCTION(LZ4_read32(ptr)); } /************************************** * HC Compression **************************************/ -static void LZ4HC_clearTables (LZ4HC_CCtx_internal* hc4) -{ - MEM_INIT((void*)hc4->hashTable, 0, sizeof(hc4->hashTable)); +static void LZ4HC_clearTables(LZ4HC_CCtx_internal *hc4) { + MEM_INIT((void *)hc4->hashTable, 0, sizeof(hc4->hashTable)); MEM_INIT(hc4->chainTable, 0xFF, sizeof(hc4->chainTable)); } -static void LZ4HC_init_internal (LZ4HC_CCtx_internal* hc4, const BYTE* start) -{ +static void LZ4HC_init_internal(LZ4HC_CCtx_internal *hc4, const BYTE *start) { uptrval startingOffset = (uptrval)(hc4->end - hc4->base); if (startingOffset > 1 GB) { LZ4HC_clearTables(hc4); @@ -114,18 +112,17 @@ static void LZ4HC_init_internal (LZ4HC_CCtx_internal* hc4, const BYTE* start) /* Update chains up to ip (excluded) */ -LZ4_FORCE_INLINE void LZ4HC_Insert (LZ4HC_CCtx_internal* hc4, const BYTE* ip) -{ - U16* const chainTable = hc4->chainTable; - U32* const hashTable = hc4->hashTable; - const BYTE* const base = hc4->base; +LZ4_FORCE_INLINE void LZ4HC_Insert(LZ4HC_CCtx_internal *hc4, const BYTE *ip) { + U16 *const chainTable = hc4->chainTable; + U32 *const hashTable = hc4->hashTable; + const BYTE *const base = hc4->base; U32 const target = (U32)(ip - base); U32 idx = hc4->nextToUpdate; while (idx < target) { - U32 const h = LZ4HC_hashPtr(base+idx); + U32 const h = LZ4HC_hashPtr(base + idx); size_t delta = idx - hashTable[h]; - if (delta>LZ4_DISTANCE_MAX) delta = LZ4_DISTANCE_MAX; + if (delta > LZ4_DISTANCE_MAX) delta = LZ4_DISTANCE_MAX; DELTANEXTU16(chainTable, idx) = (U16)delta; hashTable[h] = idx; idx++; @@ -137,17 +134,18 @@ LZ4_FORCE_INLINE void LZ4HC_Insert (LZ4HC_CCtx_internal* hc4, const BYTE* ip) /** LZ4HC_countBack() : * @return : negative value, nb of common bytes before ip/match */ LZ4_FORCE_INLINE -int LZ4HC_countBack(const BYTE* const ip, const BYTE* const match, - const BYTE* const iMin, const BYTE* const mMin) -{ +int LZ4HC_countBack(const BYTE *const ip, const BYTE *const match, + const BYTE *const iMin, const BYTE *const mMin) { int back = 0; int const min = (int)MAX(iMin - ip, mMin - match); assert(min <= 0); - assert(ip >= iMin); assert((size_t)(ip-iMin) < (1U<<31)); - assert(match >= mMin); assert((size_t)(match - mMin) < (1U<<31)); - while ( (back > min) - && (ip[back-1] == match[back-1]) ) - back--; + assert(ip >= iMin); + assert((size_t)(ip - iMin) < (1U << 31)); + assert(match >= mMin); + assert((size_t)(match - mMin) < (1U << 31)); + while ((back > min) + && (ip[back - 1] == match[back - 1])) + back--; return back; } @@ -158,8 +156,7 @@ int LZ4HC_countBack(const BYTE* const ip, const BYTE* const match, #endif -static U32 LZ4HC_rotatePattern(size_t const rotate, U32 const pattern) -{ +static U32 LZ4HC_rotatePattern(size_t const rotate, U32 const pattern) { size_t const bitsToRotate = (rotate & (sizeof(pattern) - 1)) << 3; if (bitsToRotate == 0) return pattern; @@ -169,29 +166,30 @@ static U32 LZ4HC_rotatePattern(size_t const rotate, U32 const pattern) /* LZ4HC_countPattern() : * pattern32 must be a sample of repetitive pattern of length 1, 2 or 4 (but not 3!) */ static unsigned -LZ4HC_countPattern(const BYTE* ip, const BYTE* const iEnd, U32 const pattern32) -{ - const BYTE* const iStart = ip; - reg_t const pattern = (sizeof(pattern)==8) ? (reg_t)pattern32 + (((reg_t)pattern32) << 32) : pattern32; +LZ4HC_countPattern(const BYTE *ip, const BYTE *const iEnd, U32 const pattern32) { + const BYTE *const iStart = ip; + reg_t const pattern = (sizeof(pattern) == 8) ? (reg_t)pattern32 + (((reg_t)pattern32) << 32) : pattern32; - while (likely(ip < iEnd-(sizeof(pattern)-1))) { + while (likely(ip < iEnd - (sizeof(pattern) - 1))) { reg_t const diff = LZ4_read_ARCH(ip) ^ pattern; - if (!diff) { ip+=sizeof(pattern); continue; } + if (!diff) { ip += sizeof(pattern); continue; } ip += LZ4_NbCommonBytes(diff); return (unsigned)(ip - iStart); } if (LZ4_isLittleEndian()) { reg_t patternByte = pattern; - while ((ip<iEnd) && (*ip == (BYTE)patternByte)) { - ip++; patternByte >>= 8; + while ((ip < iEnd) && (*ip == (BYTE)patternByte)) { + ip++; + patternByte >>= 8; } } else { /* big endian */ - U32 bitOffset = (sizeof(pattern)*8) - 8; + U32 bitOffset = (sizeof(pattern) * 8) - 8; while (ip < iEnd) { BYTE const byte = (BYTE)(pattern >> bitOffset); if (*ip != byte) break; - ip ++; bitOffset -= 8; + ip ++; + bitOffset -= 8; } } @@ -202,19 +200,21 @@ LZ4HC_countPattern(const BYTE* ip, const BYTE* const iEnd, U32 const pattern32) * pattern must be a sample of repetitive pattern of length 1, 2 or 4 (but not 3!) * read using natural platform endianess */ static unsigned -LZ4HC_reverseCountPattern(const BYTE* ip, const BYTE* const iLow, U32 pattern) -{ - const BYTE* const iStart = ip; +LZ4HC_reverseCountPattern(const BYTE *ip, const BYTE *const iLow, U32 pattern) { + const BYTE *const iStart = ip; - while (likely(ip >= iLow+4)) { - if (LZ4_read32(ip-4) != pattern) break; + while (likely(ip >= iLow + 4)) { + if (LZ4_read32(ip - 4) != pattern) break; ip -= 4; } - { const BYTE* bytePtr = (const BYTE*)(&pattern) + 3; /* works for any endianess */ - while (likely(ip>iLow)) { + { + const BYTE *bytePtr = (const BYTE *)(&pattern) + 3; /* works for any endianess */ + while (likely(ip > iLow)) { if (ip[-1] != *bytePtr) break; - ip--; bytePtr--; - } } + ip--; + bytePtr--; + } + } return (unsigned)(iStart - ip); } @@ -223,39 +223,37 @@ LZ4HC_reverseCountPattern(const BYTE* ip, const BYTE* const iLow, U32 pattern) * 4 byte MINMATCH would overflow. * @returns true if the match index is okay. */ -static int LZ4HC_protectDictEnd(U32 const dictLimit, U32 const matchIndex) -{ +static int LZ4HC_protectDictEnd(U32 const dictLimit, U32 const matchIndex) { return ((U32)((dictLimit - 1) - matchIndex) >= 3); } typedef enum { rep_untested, rep_not, rep_confirmed } repeat_state_e; -typedef enum { favorCompressionRatio=0, favorDecompressionSpeed } HCfavor_e; +typedef enum { favorCompressionRatio = 0, favorDecompressionSpeed } HCfavor_e; LZ4_FORCE_INLINE int -LZ4HC_InsertAndGetWiderMatch ( - LZ4HC_CCtx_internal* hc4, - const BYTE* const ip, - const BYTE* const iLowLimit, - const BYTE* const iHighLimit, +LZ4HC_InsertAndGetWiderMatch( + LZ4HC_CCtx_internal *hc4, + const BYTE *const ip, + const BYTE *const iLowLimit, + const BYTE *const iHighLimit, int longest, - const BYTE** matchpos, - const BYTE** startpos, + const BYTE **matchpos, + const BYTE **startpos, const int maxNbAttempts, const int patternAnalysis, const int chainSwap, const dictCtx_directive dict, - const HCfavor_e favorDecSpeed) -{ - U16* const chainTable = hc4->chainTable; - U32* const HashTable = hc4->hashTable; - const LZ4HC_CCtx_internal * const dictCtx = hc4->dictCtx; - const BYTE* const base = hc4->base; + const HCfavor_e favorDecSpeed) { + U16 *const chainTable = hc4->chainTable; + U32 *const HashTable = hc4->hashTable; + const LZ4HC_CCtx_internal *const dictCtx = hc4->dictCtx; + const BYTE *const base = hc4->base; const U32 dictLimit = hc4->dictLimit; - const BYTE* const lowPrefixPtr = base + dictLimit; + const BYTE *const lowPrefixPtr = base + dictLimit; const U32 ipIndex = (U32)(ip - base); const U32 lowestMatchIndex = (hc4->lowLimit + (LZ4_DISTANCE_MAX + 1) > ipIndex) ? hc4->lowLimit : ipIndex - LZ4_DISTANCE_MAX; - const BYTE* const dictBase = hc4->dictBase; - int const lookBackLength = (int)(ip-iLowLimit); + const BYTE *const dictBase = hc4->dictBase; + int const lookBackLength = (int)(ip - iLowLimit); int nbAttempts = maxNbAttempts; U32 matchChainPos = 0; U32 const pattern = LZ4_read32(ip); @@ -268,49 +266,53 @@ LZ4HC_InsertAndGetWiderMatch ( LZ4HC_Insert(hc4, ip); matchIndex = HashTable[LZ4HC_hashPtr(ip)]; DEBUGLOG(7, "First match at index %u / %u (lowestMatchIndex)", - matchIndex, lowestMatchIndex); + matchIndex, lowestMatchIndex); - while ((matchIndex>=lowestMatchIndex) && (nbAttempts)) { - int matchLength=0; + while ((matchIndex >= lowestMatchIndex) && (nbAttempts)) { + int matchLength = 0; nbAttempts--; assert(matchIndex < ipIndex); if (favorDecSpeed && (ipIndex - matchIndex < 8)) { /* do nothing */ } else if (matchIndex >= dictLimit) { /* within current Prefix */ - const BYTE* const matchPtr = base + matchIndex; + const BYTE *const matchPtr = base + matchIndex; assert(matchPtr >= lowPrefixPtr); assert(matchPtr < ip); assert(longest >= 1); if (LZ4_read16(iLowLimit + longest - 1) == LZ4_read16(matchPtr - lookBackLength + longest - 1)) { if (LZ4_read32(matchPtr) == pattern) { int const back = lookBackLength ? LZ4HC_countBack(ip, matchPtr, iLowLimit, lowPrefixPtr) : 0; - matchLength = MINMATCH + (int)LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, iHighLimit); + matchLength = MINMATCH + (int)LZ4_count(ip + MINMATCH, matchPtr + MINMATCH, iHighLimit); matchLength -= back; if (matchLength > longest) { longest = matchLength; *matchpos = matchPtr + back; *startpos = ip + back; - } } } + } + } + } } else { /* lowestMatchIndex <= matchIndex < dictLimit */ - const BYTE* const matchPtr = dictBase + matchIndex; + const BYTE *const matchPtr = dictBase + matchIndex; if (LZ4_read32(matchPtr) == pattern) { - const BYTE* const dictStart = dictBase + hc4->lowLimit; + const BYTE *const dictStart = dictBase + hc4->lowLimit; int back = 0; - const BYTE* vLimit = ip + (dictLimit - matchIndex); + const BYTE *vLimit = ip + (dictLimit - matchIndex); if (vLimit > iHighLimit) vLimit = iHighLimit; - matchLength = (int)LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, vLimit) + MINMATCH; - if ((ip+matchLength == vLimit) && (vLimit < iHighLimit)) - matchLength += LZ4_count(ip+matchLength, lowPrefixPtr, iHighLimit); + matchLength = (int)LZ4_count(ip + MINMATCH, matchPtr + MINMATCH, vLimit) + MINMATCH; + if ((ip + matchLength == vLimit) && (vLimit < iHighLimit)) + matchLength += LZ4_count(ip + matchLength, lowPrefixPtr, iHighLimit); back = lookBackLength ? LZ4HC_countBack(ip, matchPtr, iLowLimit, dictStart) : 0; matchLength -= back; if (matchLength > longest) { longest = matchLength; *matchpos = base + matchIndex + back; /* virtual pos, relative to ip, to retrieve offset */ *startpos = ip + back; - } } } + } + } + } - if (chainSwap && matchLength==longest) { /* better match => select a better chain */ - assert(lookBackLength==0); /* search forward only */ + if (chainSwap && matchLength == longest) { /* better match => select a better chain */ + assert(lookBackLength == 0); /* search forward only */ if (matchIndex + (U32)longest <= ipIndex) { int const kTrigger = 4; U32 distanceToNextMatch = 1; @@ -331,33 +333,38 @@ LZ4HC_InsertAndGetWiderMatch ( if (distanceToNextMatch > matchIndex) break; /* avoid overflow */ matchIndex -= distanceToNextMatch; continue; - } } } + } + } + } - { U32 const distNextMatch = DELTANEXTU16(chainTable, matchIndex); - if (patternAnalysis && distNextMatch==1 && matchChainPos==0) { - U32 const matchCandidateIdx = matchIndex-1; + { + U32 const distNextMatch = DELTANEXTU16(chainTable, matchIndex); + if (patternAnalysis && distNextMatch == 1 && matchChainPos == 0) { + U32 const matchCandidateIdx = matchIndex - 1; /* may be a repeated pattern */ if (repeat == rep_untested) { - if ( ((pattern & 0xFFFF) == (pattern >> 16)) - & ((pattern & 0xFF) == (pattern >> 24)) ) { + if (((pattern & 0xFFFF) == (pattern >> 16)) + & ((pattern & 0xFF) == (pattern >> 24))) { repeat = rep_confirmed; - srcPatternLength = LZ4HC_countPattern(ip+sizeof(pattern), iHighLimit, pattern) + sizeof(pattern); + srcPatternLength = LZ4HC_countPattern(ip + sizeof(pattern), iHighLimit, pattern) + sizeof(pattern); } else { repeat = rep_not; - } } - if ( (repeat == rep_confirmed) && (matchCandidateIdx >= lowestMatchIndex) - && LZ4HC_protectDictEnd(dictLimit, matchCandidateIdx) ) { + } + } + if ((repeat == rep_confirmed) && (matchCandidateIdx >= lowestMatchIndex) + && LZ4HC_protectDictEnd(dictLimit, matchCandidateIdx)) { const int extDict = matchCandidateIdx < dictLimit; - const BYTE* const matchPtr = (extDict ? dictBase : base) + matchCandidateIdx; + const BYTE *const matchPtr = (extDict ? dictBase : base) + matchCandidateIdx; if (LZ4_read32(matchPtr) == pattern) { /* good candidate */ - const BYTE* const dictStart = dictBase + hc4->lowLimit; - const BYTE* const iLimit = extDict ? dictBase + dictLimit : iHighLimit; - size_t forwardPatternLength = LZ4HC_countPattern(matchPtr+sizeof(pattern), iLimit, pattern) + sizeof(pattern); + const BYTE *const dictStart = dictBase + hc4->lowLimit; + const BYTE *const iLimit = extDict ? dictBase + dictLimit : iHighLimit; + size_t forwardPatternLength = LZ4HC_countPattern(matchPtr + sizeof(pattern), iLimit, pattern) + sizeof(pattern); if (extDict && matchPtr + forwardPatternLength == iLimit) { U32 const rotatedPattern = LZ4HC_rotatePattern(forwardPatternLength, pattern); forwardPatternLength += LZ4HC_countPattern(lowPrefixPtr, iHighLimit, rotatedPattern); } - { const BYTE* const lowestMatchPtr = extDict ? dictStart : lowPrefixPtr; + { + const BYTE *const lowestMatchPtr = extDict ? dictStart : lowPrefixPtr; size_t backLength = LZ4HC_reverseCountPattern(matchPtr, lowestMatchPtr, pattern); size_t currentSegmentLength; if (!extDict && matchPtr - backLength == lowPrefixPtr && hc4->lowLimit < dictLimit) { @@ -369,8 +376,8 @@ LZ4HC_InsertAndGetWiderMatch ( assert(matchCandidateIdx - backLength >= lowestMatchIndex); currentSegmentLength = backLength + forwardPatternLength; /* Adjust to end of pattern if the source pattern fits, otherwise the beginning of the pattern */ - if ( (currentSegmentLength >= srcPatternLength) /* current pattern segment large enough to contain full srcPatternLength */ - && (forwardPatternLength <= srcPatternLength) ) { /* haven't reached this position yet */ + if ((currentSegmentLength >= srcPatternLength) /* current pattern segment large enough to contain full srcPatternLength */ + && (forwardPatternLength <= srcPatternLength)) { /* haven't reached this position yet */ U32 const newMatchIndex = matchCandidateIdx + (U32)forwardPatternLength - (U32)srcPatternLength; /* best position, full pattern, might be followed by more match */ if (LZ4HC_protectDictEnd(dictLimit, newMatchIndex)) matchIndex = newMatchIndex; @@ -386,105 +393,114 @@ LZ4HC_InsertAndGetWiderMatch ( matchIndex = dictLimit; } else { matchIndex = newMatchIndex; - if (lookBackLength==0) { /* no back possible */ + if (lookBackLength == 0) { /* no back possible */ size_t const maxML = MIN(currentSegmentLength, srcPatternLength); if ((size_t)longest < maxML) { assert(base + matchIndex < ip); - if (ip - (base+matchIndex) > LZ4_DISTANCE_MAX) break; + if (ip - (base + matchIndex) > LZ4_DISTANCE_MAX) break; assert(maxML < 2 GB); longest = (int)maxML; *matchpos = base + matchIndex; /* virtual pos, relative to ip, to retrieve offset */ *startpos = ip; } - { U32 const distToNextPattern = DELTANEXTU16(chainTable, matchIndex); + { + U32 const distToNextPattern = DELTANEXTU16(chainTable, matchIndex); if (distToNextPattern > matchIndex) break; /* avoid overflow */ matchIndex -= distToNextPattern; - } } } } } + } + } + } + } + } continue; - } } - } } /* PA optimization */ + } + } + } + } /* PA optimization */ /* follow current chain */ matchIndex -= DELTANEXTU16(chainTable, matchIndex + matchChainPos); } /* while ((matchIndex>=lowestMatchIndex) && (nbAttempts)) */ - if ( dict == usingDictCtxHc - && nbAttempts - && ipIndex - lowestMatchIndex < LZ4_DISTANCE_MAX) { + if (dict == usingDictCtxHc + && nbAttempts + && ipIndex - lowestMatchIndex < LZ4_DISTANCE_MAX) { size_t const dictEndOffset = (size_t)(dictCtx->end - dictCtx->base); U32 dictMatchIndex = dictCtx->hashTable[LZ4HC_hashPtr(ip)]; assert(dictEndOffset <= 1 GB); matchIndex = dictMatchIndex + lowestMatchIndex - (U32)dictEndOffset; while (ipIndex - matchIndex <= LZ4_DISTANCE_MAX && nbAttempts--) { - const BYTE* const matchPtr = dictCtx->base + dictMatchIndex; + const BYTE *const matchPtr = dictCtx->base + dictMatchIndex; if (LZ4_read32(matchPtr) == pattern) { int mlt; int back = 0; - const BYTE* vLimit = ip + (dictEndOffset - dictMatchIndex); + const BYTE *vLimit = ip + (dictEndOffset - dictMatchIndex); if (vLimit > iHighLimit) vLimit = iHighLimit; - mlt = (int)LZ4_count(ip+MINMATCH, matchPtr+MINMATCH, vLimit) + MINMATCH; + mlt = (int)LZ4_count(ip + MINMATCH, matchPtr + MINMATCH, vLimit) + MINMATCH; back = lookBackLength ? LZ4HC_countBack(ip, matchPtr, iLowLimit, dictCtx->base + dictCtx->dictLimit) : 0; mlt -= back; if (mlt > longest) { longest = mlt; *matchpos = base + matchIndex + back; *startpos = ip + back; - } } + } + } - { U32 const nextOffset = DELTANEXTU16(dictCtx->chainTable, dictMatchIndex); + { + U32 const nextOffset = DELTANEXTU16(dictCtx->chainTable, dictMatchIndex); dictMatchIndex -= nextOffset; matchIndex -= nextOffset; - } } } + } + } + } return longest; } LZ4_FORCE_INLINE -int LZ4HC_InsertAndFindBestMatch(LZ4HC_CCtx_internal* const hc4, /* Index table will be updated */ - const BYTE* const ip, const BYTE* const iLimit, - const BYTE** matchpos, +int LZ4HC_InsertAndFindBestMatch(LZ4HC_CCtx_internal *const hc4, /* Index table will be updated */ + const BYTE *const ip, const BYTE *const iLimit, + const BYTE **matchpos, const int maxNbAttempts, const int patternAnalysis, - const dictCtx_directive dict) -{ - const BYTE* uselessPtr = ip; + const dictCtx_directive dict) { + const BYTE *uselessPtr = ip; /* note : LZ4HC_InsertAndGetWiderMatch() is able to modify the starting position of a match (*startpos), * but this won't be the case here, as we define iLowLimit==ip, * so LZ4HC_InsertAndGetWiderMatch() won't be allowed to search past ip */ - return LZ4HC_InsertAndGetWiderMatch(hc4, ip, ip, iLimit, MINMATCH-1, matchpos, &uselessPtr, maxNbAttempts, patternAnalysis, 0 /*chainSwap*/, dict, favorCompressionRatio); + return LZ4HC_InsertAndGetWiderMatch(hc4, ip, ip, iLimit, MINMATCH - 1, matchpos, &uselessPtr, maxNbAttempts, patternAnalysis, 0 /*chainSwap*/, dict, favorCompressionRatio); } /* LZ4HC_encodeSequence() : * @return : 0 if ok, * 1 if buffer issue detected */ -LZ4_FORCE_INLINE int LZ4HC_encodeSequence ( - const BYTE** ip, - BYTE** op, - const BYTE** anchor, +LZ4_FORCE_INLINE int LZ4HC_encodeSequence( + const BYTE **ip, + BYTE **op, + const BYTE **anchor, int matchLength, - const BYTE* const match, + const BYTE *const match, limitedOutput_directive limit, - BYTE* oend) -{ + BYTE *oend) { size_t length; - BYTE* const token = (*op)++; + BYTE *const token = (*op)++; #if defined(LZ4_DEBUG) && (LZ4_DEBUG >= 6) - static const BYTE* start = NULL; + static const BYTE *start = NULL; static U32 totalCost = 0; - U32 const pos = (start==NULL) ? 0 : (U32)(*anchor - start); + U32 const pos = (start == NULL) ? 0 : (U32)(*anchor - start); U32 const ll = (U32)(*ip - *anchor); - U32 const llAdd = (ll>=15) ? ((ll-15) / 255) + 1 : 0; - U32 const mlAdd = (matchLength>=19) ? ((matchLength-19) / 255) + 1 : 0; + U32 const llAdd = (ll >= 15) ? ((ll - 15) / 255) + 1 : 0; + U32 const mlAdd = (matchLength >= 19) ? ((matchLength - 19) / 255) + 1 : 0; U32 const cost = 1 + llAdd + ll + 2 + mlAdd; - if (start==NULL) start = *anchor; /* only works for single segment */ + if (start == NULL) start = *anchor; /* only works for single segment */ /* g_debuglog_enable = (pos >= 2228) & (pos <= 2262); */ DEBUGLOG(6, "pos:%7u -- literals:%3u, match:%4i, offset:%5u, cost:%3u + %u", - pos, - (U32)(*ip - *anchor), matchLength, (U32)(*ip-match), - cost, totalCost); + pos, + (U32)(*ip - *anchor), matchLength, (U32)(*ip - match), + cost, totalCost); totalCost += cost; #endif @@ -494,7 +510,7 @@ LZ4_FORCE_INLINE int LZ4HC_encodeSequence ( if (length >= RUN_MASK) { size_t len = length - RUN_MASK; *token = (RUN_MASK << ML_BITS); - for(; len >= 255 ; len -= 255) *(*op)++ = 255; + for (; len >= 255 ; len -= 255) * (*op)++ = 255; *(*op)++ = (BYTE)len; } else { *token = (BYTE)(length << ML_BITS); @@ -505,8 +521,9 @@ LZ4_FORCE_INLINE int LZ4HC_encodeSequence ( *op += length; /* Encode Offset */ - assert( (*ip - match) <= LZ4_DISTANCE_MAX ); /* note : consider providing offset as a value, rather than as a pointer difference */ - LZ4_writeLE16(*op, (U16)(*ip-match)); *op += 2; + assert((*ip - match) <= LZ4_DISTANCE_MAX); /* note : consider providing offset as a value, rather than as a pointer difference */ + LZ4_writeLE16(*op, (U16)(*ip - match)); + *op += 2; /* Encode MatchLength */ assert(matchLength >= MINMATCH); @@ -515,7 +532,7 @@ LZ4_FORCE_INLINE int LZ4HC_encodeSequence ( if (length >= ML_MASK) { *token += ML_MASK; length -= ML_MASK; - for(; length >= 510 ; length -= 510) { *(*op)++ = 255; *(*op)++ = 255; } + for (; length >= 510 ; length -= 510) { *(*op)++ = 255; *(*op)++ = 255; } if (length >= 255) { length -= 255; *(*op)++ = 255; } *(*op)++ = (BYTE)length; } else { @@ -529,38 +546,37 @@ LZ4_FORCE_INLINE int LZ4HC_encodeSequence ( return 0; } -LZ4_FORCE_INLINE int LZ4HC_compress_hashChain ( - LZ4HC_CCtx_internal* const ctx, - const char* const source, - char* const dest, - int* srcSizePtr, +LZ4_FORCE_INLINE int LZ4HC_compress_hashChain( + LZ4HC_CCtx_internal *const ctx, + const char *const source, + char *const dest, + int *srcSizePtr, int const maxOutputSize, unsigned maxNbAttempts, const limitedOutput_directive limit, const dictCtx_directive dict - ) -{ +) { const int inputSize = *srcSizePtr; const int patternAnalysis = (maxNbAttempts > 128); /* levels 9+ */ - const BYTE* ip = (const BYTE*) source; - const BYTE* anchor = ip; - const BYTE* const iend = ip + inputSize; - const BYTE* const mflimit = iend - MFLIMIT; - const BYTE* const matchlimit = (iend - LASTLITERALS); + const BYTE *ip = (const BYTE *) source; + const BYTE *anchor = ip; + const BYTE *const iend = ip + inputSize; + const BYTE *const mflimit = iend - MFLIMIT; + const BYTE *const matchlimit = (iend - LASTLITERALS); - BYTE* optr = (BYTE*) dest; - BYTE* op = (BYTE*) dest; - BYTE* oend = op + maxOutputSize; + BYTE *optr = (BYTE *) dest; + BYTE *op = (BYTE *) dest; + BYTE *oend = op + maxOutputSize; int ml0, ml, ml2, ml3; - const BYTE* start0; - const BYTE* ref0; - const BYTE* ref = NULL; - const BYTE* start2 = NULL; - const BYTE* ref2 = NULL; - const BYTE* start3 = NULL; - const BYTE* ref3 = NULL; + const BYTE *start0; + const BYTE *ref0; + const BYTE *ref = NULL; + const BYTE *start2 = NULL; + const BYTE *ref2 = NULL; + const BYTE *start3 = NULL; + const BYTE *ref3 = NULL; /* init */ *srcSizePtr = 0; @@ -570,16 +586,18 @@ LZ4_FORCE_INLINE int LZ4HC_compress_hashChain ( /* Main Loop */ while (ip <= mflimit) { ml = LZ4HC_InsertAndFindBestMatch(ctx, ip, matchlimit, &ref, maxNbAttempts, patternAnalysis, dict); - if (ml<MINMATCH) { ip++; continue; } + if (ml < MINMATCH) { ip++; continue; } /* saved, in case we would skip too much */ - start0 = ip; ref0 = ref; ml0 = ml; + start0 = ip; + ref0 = ref; + ml0 = ml; _Search2: - if (ip+ml <= mflimit) { + if (ip + ml <= mflimit) { ml2 = LZ4HC_InsertAndGetWiderMatch(ctx, - ip + ml - 2, ip + 0, matchlimit, ml, &ref2, &start2, - maxNbAttempts, patternAnalysis, 0, dict, favorCompressionRatio); + ip + ml - 2, ip + 0, matchlimit, ml, &ref2, &start2, + maxNbAttempts, patternAnalysis, 0, dict, favorCompressionRatio); } else { ml2 = ml; } @@ -592,14 +610,17 @@ _Search2: if (start0 < ip) { /* first match was skipped at least once */ if (start2 < ip + ml0) { /* squeezing ML1 between ML0(original ML1) and ML2 */ - ip = start0; ref = ref0; ml = ml0; /* restore initial ML1 */ - } } + ip = start0; + ref = ref0; + ml = ml0; /* restore initial ML1 */ + } + } /* Here, start0==ip */ if ((start2 - ip) < 3) { /* First Match too small : removed */ ml = ml2; ip = start2; - ref =ref2; + ref = ref2; goto _Search2; } @@ -611,7 +632,7 @@ _Search3: int correction; int new_ml = ml; if (new_ml > OPTIMAL_ML) new_ml = OPTIMAL_ML; - if (ip+new_ml > start2 + ml2 - MINMATCH) new_ml = (int)(start2 - ip) + ml2 - MINMATCH; + if (ip + new_ml > start2 + ml2 - MINMATCH) new_ml = (int)(start2 - ip) + ml2 - MINMATCH; correction = new_ml - (int)(start2 - ip); if (correction > 0) { start2 += correction; @@ -623,15 +644,15 @@ _Search3: if (start2 + ml2 <= mflimit) { ml3 = LZ4HC_InsertAndGetWiderMatch(ctx, - start2 + ml2 - 3, start2, matchlimit, ml2, &ref3, &start3, - maxNbAttempts, patternAnalysis, 0, dict, favorCompressionRatio); + start2 + ml2 - 3, start2, matchlimit, ml2, &ref3, &start3, + maxNbAttempts, patternAnalysis, 0, dict, favorCompressionRatio); } else { ml3 = ml2; } if (ml3 == ml2) { /* No better match => encode ML1 and ML2 */ /* ip & ref are known; Now for ml */ - if (start2 < ip+ml) ml = (int)(start2 - ip); + if (start2 < ip + ml) ml = (int)(start2 - ip); /* Now, encode 2 sequences */ optr = op; if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; @@ -641,10 +662,10 @@ _Search3: continue; } - if (start3 < ip+ml+3) { /* Not enough space for match 2 : remove it */ - if (start3 >= (ip+ml)) { /* can write Seq1 immediately ==> Seq2 is removed, so Seq3 becomes Seq1 */ - if (start2 < ip+ml) { - int correction = (int)(ip+ml - start2); + if (start3 < ip + ml + 3) { /* Not enough space for match 2 : remove it */ + if (start3 >= (ip + ml)) { /* can write Seq1 immediately ==> Seq2 is removed, so Seq3 becomes Seq1 */ + if (start2 < ip + ml) { + int correction = (int)(ip + ml - start2); start2 += correction; ref2 += correction; ml2 -= correction; @@ -678,7 +699,7 @@ _Search3: * let's write the first one ML1. * ip & ref are known; Now decide ml. */ - if (start2 < ip+ml) { + if (start2 < ip + ml) { if ((start2 - ip) < OPTIMAL_ML) { int correction; if (ml > OPTIMAL_ML) ml = OPTIMAL_ML; @@ -697,10 +718,14 @@ _Search3: if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ref, limit, oend)) goto _dest_overflow; /* ML2 becomes ML1 */ - ip = start2; ref = ref2; ml = ml2; + ip = start2; + ref = ref2; + ml = ml2; /* ML3 becomes ML2 */ - start2 = start3; ref2 = ref3; ml2 = ml3; + start2 = start3; + ref2 = ref3; + ml2 = ml3; /* let's find a new ML3 */ goto _Search3; @@ -708,7 +733,8 @@ _Search3: _last_literals: /* Encode Last Literals */ - { size_t lastRunSize = (size_t)(iend - anchor); /* literals */ + { + size_t lastRunSize = (size_t)(iend - anchor); /* literals */ size_t litLength = (lastRunSize + 255 - RUN_MASK) / 255; size_t const totalSize = 1 + litLength + lastRunSize; if (limit == fillOutput) oend += LASTLITERALS; /* restore correct value */ @@ -724,7 +750,7 @@ _last_literals: if (lastRunSize >= RUN_MASK) { size_t accumulator = lastRunSize - RUN_MASK; *op++ = (RUN_MASK << ML_BITS); - for(; accumulator >= 255 ; accumulator -= 255) *op++ = 255; + for (; accumulator >= 255 ; accumulator -= 255) * op++ = 255; *op++ = (BYTE) accumulator; } else { *op++ = (BYTE)(lastRunSize << ML_BITS); @@ -734,8 +760,8 @@ _last_literals: } /* End */ - *srcSizePtr = (int) (((const char*)ip) - source); - return (int) (((char*)op)-dest); + *srcSizePtr = (int)(((const char *)ip) - source); + return (int)(((char *)op) - dest); _dest_overflow: if (limit == fillOutput) { @@ -746,33 +772,32 @@ _dest_overflow: } -static int LZ4HC_compress_optimal( LZ4HC_CCtx_internal* ctx, - const char* const source, char* dst, - int* srcSizePtr, int dstCapacity, - int const nbSearches, size_t sufficient_len, - const limitedOutput_directive limit, int const fullUpdate, - const dictCtx_directive dict, - HCfavor_e favorDecSpeed); +static int LZ4HC_compress_optimal(LZ4HC_CCtx_internal *ctx, + const char *const source, char *dst, + int *srcSizePtr, int dstCapacity, + int const nbSearches, size_t sufficient_len, + const limitedOutput_directive limit, int const fullUpdate, + const dictCtx_directive dict, + HCfavor_e favorDecSpeed); -LZ4_FORCE_INLINE int LZ4HC_compress_generic_internal ( - LZ4HC_CCtx_internal* const ctx, - const char* const src, - char* const dst, - int* const srcSizePtr, +LZ4_FORCE_INLINE int LZ4HC_compress_generic_internal( + LZ4HC_CCtx_internal *const ctx, + const char *const src, + char *const dst, + int *const srcSizePtr, int const dstCapacity, int cLevel, const limitedOutput_directive limit, const dictCtx_directive dict - ) -{ +) { typedef enum { lz4hc, lz4opt } lz4hc_strat_e; typedef struct { lz4hc_strat_e strat; U32 nbSearches; U32 targetLength; } cParams_t; - static const cParams_t clTable[LZ4HC_CLEVEL_MAX+1] = { + static const cParams_t clTable[LZ4HC_CLEVEL_MAX + 1] = { { lz4hc, 2, 16 }, /* 0, unused */ { lz4hc, 2, 16 }, /* 1, unused */ { lz4hc, 2, 16 }, /* 2, unused */ @@ -784,8 +809,8 @@ LZ4_FORCE_INLINE int LZ4HC_compress_generic_internal ( { lz4hc, 128, 16 }, /* 8 */ { lz4hc, 256, 16 }, /* 9 */ { lz4opt, 96, 64 }, /*10==LZ4HC_CLEVEL_OPT_MIN*/ - { lz4opt, 512,128 }, /*11 */ - { lz4opt,16384,LZ4_OPT_NUM }, /* 12==LZ4HC_CLEVEL_MAX */ + { lz4opt, 512, 128 }, /*11 */ + { lz4opt, 16384, LZ4_OPT_NUM }, /* 12==LZ4HC_CLEVEL_MAX */ }; DEBUGLOG(4, "LZ4HC_compress_generic(ctx=%p, src=%p, srcSize=%d)", ctx, src, *srcSizePtr); @@ -796,55 +821,54 @@ LZ4_FORCE_INLINE int LZ4HC_compress_generic_internal ( ctx->end += *srcSizePtr; if (cLevel < 1) cLevel = LZ4HC_CLEVEL_DEFAULT; /* note : convention is different from lz4frame, maybe something to review */ cLevel = MIN(LZ4HC_CLEVEL_MAX, cLevel); - { cParams_t const cParam = clTable[cLevel]; + { + cParams_t const cParam = clTable[cLevel]; HCfavor_e const favor = ctx->favorDecSpeed ? favorDecompressionSpeed : favorCompressionRatio; int result; if (cParam.strat == lz4hc) { result = LZ4HC_compress_hashChain(ctx, - src, dst, srcSizePtr, dstCapacity, - cParam.nbSearches, limit, dict); + src, dst, srcSizePtr, dstCapacity, + cParam.nbSearches, limit, dict); } else { assert(cParam.strat == lz4opt); result = LZ4HC_compress_optimal(ctx, - src, dst, srcSizePtr, dstCapacity, - (int)cParam.nbSearches, cParam.targetLength, limit, - cLevel == LZ4HC_CLEVEL_MAX, /* ultra mode */ - dict, favor); + src, dst, srcSizePtr, dstCapacity, + (int)cParam.nbSearches, cParam.targetLength, limit, + cLevel == LZ4HC_CLEVEL_MAX, /* ultra mode */ + dict, favor); } if (result <= 0) ctx->dirty = 1; return result; } } -static void LZ4HC_setExternalDict(LZ4HC_CCtx_internal* ctxPtr, const BYTE* newBlock); +static void LZ4HC_setExternalDict(LZ4HC_CCtx_internal *ctxPtr, const BYTE *newBlock); static int -LZ4HC_compress_generic_noDictCtx ( - LZ4HC_CCtx_internal* const ctx, - const char* const src, - char* const dst, - int* const srcSizePtr, - int const dstCapacity, - int cLevel, - limitedOutput_directive limit - ) -{ +LZ4HC_compress_generic_noDictCtx( + LZ4HC_CCtx_internal *const ctx, + const char *const src, + char *const dst, + int *const srcSizePtr, + int const dstCapacity, + int cLevel, + limitedOutput_directive limit +) { assert(ctx->dictCtx == NULL); return LZ4HC_compress_generic_internal(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit, noDictCtx); } static int -LZ4HC_compress_generic_dictCtx ( - LZ4HC_CCtx_internal* const ctx, - const char* const src, - char* const dst, - int* const srcSizePtr, - int const dstCapacity, - int cLevel, - limitedOutput_directive limit - ) -{ +LZ4HC_compress_generic_dictCtx( + LZ4HC_CCtx_internal *const ctx, + const char *const src, + char *const dst, + int *const srcSizePtr, + int const dstCapacity, + int cLevel, + limitedOutput_directive limit +) { const size_t position = (size_t)(ctx->end - ctx->base) - ctx->lowLimit; assert(ctx->dictCtx != NULL); if (position >= 64 KB) { @@ -861,16 +885,15 @@ LZ4HC_compress_generic_dictCtx ( } static int -LZ4HC_compress_generic ( - LZ4HC_CCtx_internal* const ctx, - const char* const src, - char* const dst, - int* const srcSizePtr, - int const dstCapacity, - int cLevel, - limitedOutput_directive limit - ) -{ +LZ4HC_compress_generic( + LZ4HC_CCtx_internal *const ctx, + const char *const src, + char *const dst, + int *const srcSizePtr, + int const dstCapacity, + int cLevel, + limitedOutput_directive limit +) { if (ctx->dictCtx == NULL) { return LZ4HC_compress_generic_noDictCtx(ctx, src, dst, srcSizePtr, dstCapacity, cLevel, limit); } else { @@ -884,8 +907,7 @@ int LZ4_sizeofStateHC(void) { return (int)sizeof(LZ4_streamHC_t); } #ifndef _MSC_VER /* for some reason, Visual fails the aligment test on 32-bit x86 : * it reports an aligment of 8-bytes, * while actually aligning LZ4_streamHC_t on 4 bytes. */ -static size_t LZ4_streamHC_t_alignment(void) -{ +static size_t LZ4_streamHC_t_alignment(void) { struct { char c; LZ4_streamHC_t t; } t_a; return sizeof(t_a) - sizeof(t_a.t); } @@ -893,37 +915,34 @@ static size_t LZ4_streamHC_t_alignment(void) /* state is presumed correctly initialized, * in which case its size and alignment have already been validate */ -int LZ4_compress_HC_extStateHC_fastReset (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel) -{ - LZ4HC_CCtx_internal* const ctx = &((LZ4_streamHC_t*)state)->internal_donotuse; +int LZ4_compress_HC_extStateHC_fastReset(void *state, const char *src, char *dst, int srcSize, int dstCapacity, int compressionLevel) { + LZ4HC_CCtx_internal *const ctx = &((LZ4_streamHC_t *)state)->internal_donotuse; #ifndef _MSC_VER /* for some reason, Visual fails the aligment test on 32-bit x86 : * it reports an aligment of 8-bytes, * while actually aligning LZ4_streamHC_t on 4 bytes. */ assert(((size_t)state & (LZ4_streamHC_t_alignment() - 1)) == 0); /* check alignment */ #endif - if (((size_t)(state)&(sizeof(void*)-1)) != 0) return 0; /* Error : state is not aligned for pointers (32 or 64 bits) */ - LZ4_resetStreamHC_fast((LZ4_streamHC_t*)state, compressionLevel); - LZ4HC_init_internal (ctx, (const BYTE*)src); + if (((size_t)(state) & (sizeof(void *) -1)) != 0) return 0; /* Error : state is not aligned for pointers (32 or 64 bits) */ + LZ4_resetStreamHC_fast((LZ4_streamHC_t *)state, compressionLevel); + LZ4HC_init_internal(ctx, (const BYTE *)src); if (dstCapacity < LZ4_compressBound(srcSize)) - return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, limitedOutput); + return LZ4HC_compress_generic(ctx, src, dst, &srcSize, dstCapacity, compressionLevel, limitedOutput); else - return LZ4HC_compress_generic (ctx, src, dst, &srcSize, dstCapacity, compressionLevel, notLimited); + return LZ4HC_compress_generic(ctx, src, dst, &srcSize, dstCapacity, compressionLevel, notLimited); } -int LZ4_compress_HC_extStateHC (void* state, const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel) -{ - LZ4_streamHC_t* const ctx = LZ4_initStreamHC(state, sizeof(*ctx)); - if (ctx==NULL) return 0; /* init failure */ +int LZ4_compress_HC_extStateHC(void *state, const char *src, char *dst, int srcSize, int dstCapacity, int compressionLevel) { + LZ4_streamHC_t *const ctx = LZ4_initStreamHC(state, sizeof(*ctx)); + if (ctx == NULL) return 0; /* init failure */ return LZ4_compress_HC_extStateHC_fastReset(state, src, dst, srcSize, dstCapacity, compressionLevel); } -int LZ4_compress_HC(const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel) -{ +int LZ4_compress_HC(const char *src, char *dst, int srcSize, int dstCapacity, int compressionLevel) { #if defined(LZ4HC_HEAPMODE) && LZ4HC_HEAPMODE==1 - LZ4_streamHC_t* const statePtr = (LZ4_streamHC_t*)ALLOC(sizeof(LZ4_streamHC_t)); + LZ4_streamHC_t *const statePtr = (LZ4_streamHC_t *)ALLOC(sizeof(LZ4_streamHC_t)); #else LZ4_streamHC_t state; - LZ4_streamHC_t* const statePtr = &state; + LZ4_streamHC_t *const statePtr = &state; #endif int const cSize = LZ4_compress_HC_extStateHC(statePtr, src, dst, srcSize, dstCapacity, compressionLevel); #if defined(LZ4HC_HEAPMODE) && LZ4HC_HEAPMODE==1 @@ -933,11 +952,10 @@ int LZ4_compress_HC(const char* src, char* dst, int srcSize, int dstCapacity, in } /* state is presumed sized correctly (>= sizeof(LZ4_streamHC_t)) */ -int LZ4_compress_HC_destSize(void* state, const char* source, char* dest, int* sourceSizePtr, int targetDestSize, int cLevel) -{ - LZ4_streamHC_t* const ctx = LZ4_initStreamHC(state, sizeof(*ctx)); - if (ctx==NULL) return 0; /* init failure */ - LZ4HC_init_internal(&ctx->internal_donotuse, (const BYTE*) source); +int LZ4_compress_HC_destSize(void *state, const char *source, char *dest, int *sourceSizePtr, int targetDestSize, int cLevel) { + LZ4_streamHC_t *const ctx = LZ4_initStreamHC(state, sizeof(*ctx)); + if (ctx == NULL) return 0; /* init failure */ + LZ4HC_init_internal(&ctx->internal_donotuse, (const BYTE *) source); LZ4_setCompressionLevel(ctx, cLevel); return LZ4HC_compress_generic(&ctx->internal_donotuse, source, dest, sourceSizePtr, targetDestSize, cLevel, fillOutput); } @@ -948,16 +966,14 @@ int LZ4_compress_HC_destSize(void* state, const char* source, char* dest, int* s * Streaming Functions **************************************/ /* allocation */ -LZ4_streamHC_t* LZ4_createStreamHC(void) -{ - LZ4_streamHC_t* const LZ4_streamHCPtr = (LZ4_streamHC_t*)ALLOC(sizeof(LZ4_streamHC_t)); - if (LZ4_streamHCPtr==NULL) return NULL; +LZ4_streamHC_t *LZ4_createStreamHC(void) { + LZ4_streamHC_t *const LZ4_streamHCPtr = (LZ4_streamHC_t *)ALLOC(sizeof(LZ4_streamHC_t)); + if (LZ4_streamHCPtr == NULL) return NULL; LZ4_initStreamHC(LZ4_streamHCPtr, sizeof(*LZ4_streamHCPtr)); /* full initialization, malloc'ed buffer can be full of garbage */ return LZ4_streamHCPtr; } -int LZ4_freeStreamHC (LZ4_streamHC_t* LZ4_streamHCPtr) -{ +int LZ4_freeStreamHC(LZ4_streamHC_t *LZ4_streamHCPtr) { DEBUGLOG(4, "LZ4_freeStreamHC(%p)", LZ4_streamHCPtr); if (!LZ4_streamHCPtr) return 0; /* support free on NULL */ FREEMEM(LZ4_streamHCPtr); @@ -965,9 +981,8 @@ int LZ4_freeStreamHC (LZ4_streamHC_t* LZ4_streamHCPtr) } -LZ4_streamHC_t* LZ4_initStreamHC (void* buffer, size_t size) -{ - LZ4_streamHC_t* const LZ4_streamHCPtr = (LZ4_streamHC_t*)buffer; +LZ4_streamHC_t *LZ4_initStreamHC(void *buffer, size_t size) { + LZ4_streamHC_t *const LZ4_streamHCPtr = (LZ4_streamHC_t *)buffer; if (buffer == NULL) return NULL; if (size < sizeof(LZ4_streamHC_t)) return NULL; #ifndef _MSC_VER /* for some reason, Visual fails the aligment test on 32-bit x86 : @@ -979,7 +994,7 @@ LZ4_streamHC_t* LZ4_initStreamHC (void* buffer, size_t size) LZ4_STATIC_ASSERT(sizeof(LZ4HC_CCtx_internal) <= LZ4_STREAMHCSIZE); DEBUGLOG(4, "LZ4_initStreamHC(%p, %u)", LZ4_streamHCPtr, (unsigned)size); /* end-base will trigger a clearTable on starting compression */ - LZ4_streamHCPtr->internal_donotuse.end = (const BYTE *)(ptrdiff_t)-1; + LZ4_streamHCPtr->internal_donotuse.end = (const BYTE *)(ptrdiff_t) -1; LZ4_streamHCPtr->internal_donotuse.base = NULL; LZ4_streamHCPtr->internal_donotuse.dictCtx = NULL; LZ4_streamHCPtr->internal_donotuse.favorDecSpeed = 0; @@ -989,14 +1004,12 @@ LZ4_streamHC_t* LZ4_initStreamHC (void* buffer, size_t size) } /* just a stub */ -void LZ4_resetStreamHC (LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel) -{ +void LZ4_resetStreamHC(LZ4_streamHC_t *LZ4_streamHCPtr, int compressionLevel) { LZ4_initStreamHC(LZ4_streamHCPtr, sizeof(*LZ4_streamHCPtr)); LZ4_setCompressionLevel(LZ4_streamHCPtr, compressionLevel); } -void LZ4_resetStreamHC_fast (LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel) -{ +void LZ4_resetStreamHC_fast(LZ4_streamHC_t *LZ4_streamHCPtr, int compressionLevel) { DEBUGLOG(4, "LZ4_resetStreamHC_fast(%p, %d)", LZ4_streamHCPtr, compressionLevel); if (LZ4_streamHCPtr->internal_donotuse.dirty) { LZ4_initStreamHC(LZ4_streamHCPtr, sizeof(*LZ4_streamHCPtr)); @@ -1009,25 +1022,22 @@ void LZ4_resetStreamHC_fast (LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLev LZ4_setCompressionLevel(LZ4_streamHCPtr, compressionLevel); } -void LZ4_setCompressionLevel(LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel) -{ +void LZ4_setCompressionLevel(LZ4_streamHC_t *LZ4_streamHCPtr, int compressionLevel) { DEBUGLOG(5, "LZ4_setCompressionLevel(%p, %d)", LZ4_streamHCPtr, compressionLevel); if (compressionLevel < 1) compressionLevel = LZ4HC_CLEVEL_DEFAULT; if (compressionLevel > LZ4HC_CLEVEL_MAX) compressionLevel = LZ4HC_CLEVEL_MAX; LZ4_streamHCPtr->internal_donotuse.compressionLevel = (short)compressionLevel; } -void LZ4_favorDecompressionSpeed(LZ4_streamHC_t* LZ4_streamHCPtr, int favor) -{ - LZ4_streamHCPtr->internal_donotuse.favorDecSpeed = (favor!=0); +void LZ4_favorDecompressionSpeed(LZ4_streamHC_t *LZ4_streamHCPtr, int favor) { + LZ4_streamHCPtr->internal_donotuse.favorDecSpeed = (favor != 0); } /* LZ4_loadDictHC() : * LZ4_streamHCPtr is presumed properly initialized */ -int LZ4_loadDictHC (LZ4_streamHC_t* LZ4_streamHCPtr, - const char* dictionary, int dictSize) -{ - LZ4HC_CCtx_internal* const ctxPtr = &LZ4_streamHCPtr->internal_donotuse; +int LZ4_loadDictHC(LZ4_streamHC_t *LZ4_streamHCPtr, + const char *dictionary, int dictSize) { + LZ4HC_CCtx_internal *const ctxPtr = &LZ4_streamHCPtr->internal_donotuse; DEBUGLOG(4, "LZ4_loadDictHC(%p, %p, %d)", LZ4_streamHCPtr, dictionary, dictSize); assert(LZ4_streamHCPtr != NULL); if (dictSize > 64 KB) { @@ -1035,13 +1045,14 @@ int LZ4_loadDictHC (LZ4_streamHC_t* LZ4_streamHCPtr, dictSize = 64 KB; } /* need a full initialization, there are bad side-effects when using resetFast() */ - { int const cLevel = ctxPtr->compressionLevel; + { + int const cLevel = ctxPtr->compressionLevel; LZ4_initStreamHC(LZ4_streamHCPtr, sizeof(*LZ4_streamHCPtr)); LZ4_setCompressionLevel(LZ4_streamHCPtr, cLevel); } - LZ4HC_init_internal (ctxPtr, (const BYTE*)dictionary); - ctxPtr->end = (const BYTE*)dictionary + dictSize; - if (dictSize >= 4) LZ4HC_Insert (ctxPtr, ctxPtr->end-3); + LZ4HC_init_internal(ctxPtr, (const BYTE *)dictionary); + ctxPtr->end = (const BYTE *)dictionary + dictSize; + if (dictSize >= 4) LZ4HC_Insert(ctxPtr, ctxPtr->end - 3); return dictSize; } @@ -1051,11 +1062,10 @@ void LZ4_attach_HC_dictionary(LZ4_streamHC_t *working_stream, const LZ4_streamHC /* compression */ -static void LZ4HC_setExternalDict(LZ4HC_CCtx_internal* ctxPtr, const BYTE* newBlock) -{ +static void LZ4HC_setExternalDict(LZ4HC_CCtx_internal *ctxPtr, const BYTE *newBlock) { DEBUGLOG(4, "LZ4HC_setExternalDict(%p, %p)", ctxPtr, newBlock); if (ctxPtr->end >= ctxPtr->base + ctxPtr->dictLimit + 4) - LZ4HC_Insert (ctxPtr, ctxPtr->end-3); /* Referencing remaining dictionary content */ + LZ4HC_Insert(ctxPtr, ctxPtr->end - 3); /* Referencing remaining dictionary content */ /* Only one memory segment for extDict, so any previous extDict is lost at this stage */ ctxPtr->lowLimit = ctxPtr->dictLimit; @@ -1069,53 +1079,51 @@ static void LZ4HC_setExternalDict(LZ4HC_CCtx_internal* ctxPtr, const BYTE* newBl ctxPtr->dictCtx = NULL; } -static int LZ4_compressHC_continue_generic (LZ4_streamHC_t* LZ4_streamHCPtr, - const char* src, char* dst, - int* srcSizePtr, int dstCapacity, - limitedOutput_directive limit) -{ - LZ4HC_CCtx_internal* const ctxPtr = &LZ4_streamHCPtr->internal_donotuse; +static int LZ4_compressHC_continue_generic(LZ4_streamHC_t *LZ4_streamHCPtr, + const char *src, char *dst, + int *srcSizePtr, int dstCapacity, + limitedOutput_directive limit) { + LZ4HC_CCtx_internal *const ctxPtr = &LZ4_streamHCPtr->internal_donotuse; DEBUGLOG(4, "LZ4_compressHC_continue_generic(ctx=%p, src=%p, srcSize=%d)", - LZ4_streamHCPtr, src, *srcSizePtr); + LZ4_streamHCPtr, src, *srcSizePtr); assert(ctxPtr != NULL); /* auto-init if forgotten */ - if (ctxPtr->base == NULL) LZ4HC_init_internal (ctxPtr, (const BYTE*) src); + if (ctxPtr->base == NULL) LZ4HC_init_internal(ctxPtr, (const BYTE *) src); /* Check overflow */ if ((size_t)(ctxPtr->end - ctxPtr->base) > 2 GB) { size_t dictSize = (size_t)(ctxPtr->end - ctxPtr->base) - ctxPtr->dictLimit; if (dictSize > 64 KB) dictSize = 64 KB; - LZ4_loadDictHC(LZ4_streamHCPtr, (const char*)(ctxPtr->end) - dictSize, (int)dictSize); + LZ4_loadDictHC(LZ4_streamHCPtr, (const char *)(ctxPtr->end) - dictSize, (int)dictSize); } /* Check if blocks follow each other */ - if ((const BYTE*)src != ctxPtr->end) - LZ4HC_setExternalDict(ctxPtr, (const BYTE*)src); + if ((const BYTE *)src != ctxPtr->end) + LZ4HC_setExternalDict(ctxPtr, (const BYTE *)src); /* Check overlapping input/dictionary space */ - { const BYTE* sourceEnd = (const BYTE*) src + *srcSizePtr; - const BYTE* const dictBegin = ctxPtr->dictBase + ctxPtr->lowLimit; - const BYTE* const dictEnd = ctxPtr->dictBase + ctxPtr->dictLimit; - if ((sourceEnd > dictBegin) && ((const BYTE*)src < dictEnd)) { + { + const BYTE *sourceEnd = (const BYTE *) src + *srcSizePtr; + const BYTE *const dictBegin = ctxPtr->dictBase + ctxPtr->lowLimit; + const BYTE *const dictEnd = ctxPtr->dictBase + ctxPtr->dictLimit; + if ((sourceEnd > dictBegin) && ((const BYTE *)src < dictEnd)) { if (sourceEnd > dictEnd) sourceEnd = dictEnd; ctxPtr->lowLimit = (U32)(sourceEnd - ctxPtr->dictBase); if (ctxPtr->dictLimit - ctxPtr->lowLimit < 4) ctxPtr->lowLimit = ctxPtr->dictLimit; } } - return LZ4HC_compress_generic (ctxPtr, src, dst, srcSizePtr, dstCapacity, ctxPtr->compressionLevel, limit); + return LZ4HC_compress_generic(ctxPtr, src, dst, srcSizePtr, dstCapacity, ctxPtr->compressionLevel, limit); } -int LZ4_compress_HC_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* src, char* dst, int srcSize, int dstCapacity) -{ +int LZ4_compress_HC_continue(LZ4_streamHC_t *LZ4_streamHCPtr, const char *src, char *dst, int srcSize, int dstCapacity) { if (dstCapacity < LZ4_compressBound(srcSize)) - return LZ4_compressHC_continue_generic (LZ4_streamHCPtr, src, dst, &srcSize, dstCapacity, limitedOutput); + return LZ4_compressHC_continue_generic(LZ4_streamHCPtr, src, dst, &srcSize, dstCapacity, limitedOutput); else - return LZ4_compressHC_continue_generic (LZ4_streamHCPtr, src, dst, &srcSize, dstCapacity, notLimited); + return LZ4_compressHC_continue_generic(LZ4_streamHCPtr, src, dst, &srcSize, dstCapacity, notLimited); } -int LZ4_compress_HC_continue_destSize (LZ4_streamHC_t* LZ4_streamHCPtr, const char* src, char* dst, int* srcSizePtr, int targetDestSize) -{ +int LZ4_compress_HC_continue_destSize(LZ4_streamHC_t *LZ4_streamHCPtr, const char *src, char *dst, int *srcSizePtr, int targetDestSize) { return LZ4_compressHC_continue_generic(LZ4_streamHCPtr, src, dst, srcSizePtr, targetDestSize, fillOutput); } @@ -1123,17 +1131,17 @@ int LZ4_compress_HC_continue_destSize (LZ4_streamHC_t* LZ4_streamHCPtr, const ch /* dictionary saving */ -int LZ4_saveDictHC (LZ4_streamHC_t* LZ4_streamHCPtr, char* safeBuffer, int dictSize) -{ - LZ4HC_CCtx_internal* const streamPtr = &LZ4_streamHCPtr->internal_donotuse; +int LZ4_saveDictHC(LZ4_streamHC_t *LZ4_streamHCPtr, char *safeBuffer, int dictSize) { + LZ4HC_CCtx_internal *const streamPtr = &LZ4_streamHCPtr->internal_donotuse; int const prefixSize = (int)(streamPtr->end - (streamPtr->base + streamPtr->dictLimit)); DEBUGLOG(4, "LZ4_saveDictHC(%p, %p, %d)", LZ4_streamHCPtr, safeBuffer, dictSize); if (dictSize > 64 KB) dictSize = 64 KB; if (dictSize < 4) dictSize = 0; if (dictSize > prefixSize) dictSize = prefixSize; memmove(safeBuffer, streamPtr->end - dictSize, dictSize); - { U32 const endIndex = (U32)(streamPtr->end - streamPtr->base); - streamPtr->end = (const BYTE*)safeBuffer + dictSize; + { + U32 const endIndex = (U32)(streamPtr->end - streamPtr->base); + streamPtr->end = (const BYTE *)safeBuffer + dictSize; streamPtr->base = streamPtr->end - endIndex; streamPtr->dictLimit = endIndex - (U32)dictSize; streamPtr->lowLimit = endIndex - (U32)dictSize; @@ -1150,16 +1158,16 @@ int LZ4_saveDictHC (LZ4_streamHC_t* LZ4_streamHCPtr, char* safeBuffer, int dictS /* These functions currently generate deprecation warnings */ /* Wrappers for deprecated compression functions */ -int LZ4_compressHC(const char* src, char* dst, int srcSize) { return LZ4_compress_HC (src, dst, srcSize, LZ4_compressBound(srcSize), 0); } -int LZ4_compressHC_limitedOutput(const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC(src, dst, srcSize, maxDstSize, 0); } -int LZ4_compressHC2(const char* src, char* dst, int srcSize, int cLevel) { return LZ4_compress_HC (src, dst, srcSize, LZ4_compressBound(srcSize), cLevel); } -int LZ4_compressHC2_limitedOutput(const char* src, char* dst, int srcSize, int maxDstSize, int cLevel) { return LZ4_compress_HC(src, dst, srcSize, maxDstSize, cLevel); } -int LZ4_compressHC_withStateHC (void* state, const char* src, char* dst, int srcSize) { return LZ4_compress_HC_extStateHC (state, src, dst, srcSize, LZ4_compressBound(srcSize), 0); } -int LZ4_compressHC_limitedOutput_withStateHC (void* state, const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC_extStateHC (state, src, dst, srcSize, maxDstSize, 0); } -int LZ4_compressHC2_withStateHC (void* state, const char* src, char* dst, int srcSize, int cLevel) { return LZ4_compress_HC_extStateHC(state, src, dst, srcSize, LZ4_compressBound(srcSize), cLevel); } -int LZ4_compressHC2_limitedOutput_withStateHC (void* state, const char* src, char* dst, int srcSize, int maxDstSize, int cLevel) { return LZ4_compress_HC_extStateHC(state, src, dst, srcSize, maxDstSize, cLevel); } -int LZ4_compressHC_continue (LZ4_streamHC_t* ctx, const char* src, char* dst, int srcSize) { return LZ4_compress_HC_continue (ctx, src, dst, srcSize, LZ4_compressBound(srcSize)); } -int LZ4_compressHC_limitedOutput_continue (LZ4_streamHC_t* ctx, const char* src, char* dst, int srcSize, int maxDstSize) { return LZ4_compress_HC_continue (ctx, src, dst, srcSize, maxDstSize); } +int LZ4_compressHC(const char *src, char *dst, int srcSize) { return LZ4_compress_HC(src, dst, srcSize, LZ4_compressBound(srcSize), 0); } +int LZ4_compressHC_limitedOutput(const char *src, char *dst, int srcSize, int maxDstSize) { return LZ4_compress_HC(src, dst, srcSize, maxDstSize, 0); } +int LZ4_compressHC2(const char *src, char *dst, int srcSize, int cLevel) { return LZ4_compress_HC(src, dst, srcSize, LZ4_compressBound(srcSize), cLevel); } +int LZ4_compressHC2_limitedOutput(const char *src, char *dst, int srcSize, int maxDstSize, int cLevel) { return LZ4_compress_HC(src, dst, srcSize, maxDstSize, cLevel); } +int LZ4_compressHC_withStateHC(void *state, const char *src, char *dst, int srcSize) { return LZ4_compress_HC_extStateHC(state, src, dst, srcSize, LZ4_compressBound(srcSize), 0); } +int LZ4_compressHC_limitedOutput_withStateHC(void *state, const char *src, char *dst, int srcSize, int maxDstSize) { return LZ4_compress_HC_extStateHC(state, src, dst, srcSize, maxDstSize, 0); } +int LZ4_compressHC2_withStateHC(void *state, const char *src, char *dst, int srcSize, int cLevel) { return LZ4_compress_HC_extStateHC(state, src, dst, srcSize, LZ4_compressBound(srcSize), cLevel); } +int LZ4_compressHC2_limitedOutput_withStateHC(void *state, const char *src, char *dst, int srcSize, int maxDstSize, int cLevel) { return LZ4_compress_HC_extStateHC(state, src, dst, srcSize, maxDstSize, cLevel); } +int LZ4_compressHC_continue(LZ4_streamHC_t *ctx, const char *src, char *dst, int srcSize) { return LZ4_compress_HC_continue(ctx, src, dst, srcSize, LZ4_compressBound(srcSize)); } +int LZ4_compressHC_limitedOutput_continue(LZ4_streamHC_t *ctx, const char *src, char *dst, int srcSize, int maxDstSize) { return LZ4_compress_HC_continue(ctx, src, dst, srcSize, maxDstSize); } /* Deprecated streaming functions */ @@ -1167,42 +1175,36 @@ int LZ4_sizeofStreamStateHC(void) { return LZ4_STREAMHCSIZE; } /* state is presumed correctly sized, aka >= sizeof(LZ4_streamHC_t) * @return : 0 on success, !=0 if error */ -int LZ4_resetStreamStateHC(void* state, char* inputBuffer) -{ - LZ4_streamHC_t* const hc4 = LZ4_initStreamHC(state, sizeof(*hc4)); +int LZ4_resetStreamStateHC(void *state, char *inputBuffer) { + LZ4_streamHC_t *const hc4 = LZ4_initStreamHC(state, sizeof(*hc4)); if (hc4 == NULL) return 1; /* init failed */ - LZ4HC_init_internal (&hc4->internal_donotuse, (const BYTE*)inputBuffer); + LZ4HC_init_internal(&hc4->internal_donotuse, (const BYTE *)inputBuffer); return 0; } -void* LZ4_createHC (const char* inputBuffer) -{ - LZ4_streamHC_t* const hc4 = LZ4_createStreamHC(); +void *LZ4_createHC(const char *inputBuffer) { + LZ4_streamHC_t *const hc4 = LZ4_createStreamHC(); if (hc4 == NULL) return NULL; /* not enough memory */ - LZ4HC_init_internal (&hc4->internal_donotuse, (const BYTE*)inputBuffer); + LZ4HC_init_internal(&hc4->internal_donotuse, (const BYTE *)inputBuffer); return hc4; } -int LZ4_freeHC (void* LZ4HC_Data) -{ +int LZ4_freeHC(void *LZ4HC_Data) { if (!LZ4HC_Data) return 0; /* support free on NULL */ FREEMEM(LZ4HC_Data); return 0; } -int LZ4_compressHC2_continue (void* LZ4HC_Data, const char* src, char* dst, int srcSize, int cLevel) -{ - return LZ4HC_compress_generic (&((LZ4_streamHC_t*)LZ4HC_Data)->internal_donotuse, src, dst, &srcSize, 0, cLevel, notLimited); +int LZ4_compressHC2_continue(void *LZ4HC_Data, const char *src, char *dst, int srcSize, int cLevel) { + return LZ4HC_compress_generic(&((LZ4_streamHC_t *)LZ4HC_Data)->internal_donotuse, src, dst, &srcSize, 0, cLevel, notLimited); } -int LZ4_compressHC2_limitedOutput_continue (void* LZ4HC_Data, const char* src, char* dst, int srcSize, int dstCapacity, int cLevel) -{ - return LZ4HC_compress_generic (&((LZ4_streamHC_t*)LZ4HC_Data)->internal_donotuse, src, dst, &srcSize, dstCapacity, cLevel, limitedOutput); +int LZ4_compressHC2_limitedOutput_continue(void *LZ4HC_Data, const char *src, char *dst, int srcSize, int dstCapacity, int cLevel) { + return LZ4HC_compress_generic(&((LZ4_streamHC_t *)LZ4HC_Data)->internal_donotuse, src, dst, &srcSize, dstCapacity, cLevel, limitedOutput); } -char* LZ4_slideInputBufferHC(void* LZ4HC_Data) -{ - LZ4_streamHC_t *ctx = (LZ4_streamHC_t*)LZ4HC_Data; +char *LZ4_slideInputBufferHC(void *LZ4HC_Data) { + LZ4_streamHC_t *ctx = (LZ4_streamHC_t *)LZ4HC_Data; const BYTE *bufferStart = ctx->internal_donotuse.base + ctx->internal_donotuse.lowLimit; LZ4_resetStreamHC_fast(ctx, ctx->internal_donotuse.compressionLevel); /* avoid const char * -> char * conversion warning :( */ @@ -1221,27 +1223,25 @@ typedef struct { } LZ4HC_optimal_t; /* price in bytes */ -LZ4_FORCE_INLINE int LZ4HC_literalsPrice(int const litlen) -{ +LZ4_FORCE_INLINE int LZ4HC_literalsPrice(int const litlen) { int price = litlen; assert(litlen >= 0); if (litlen >= (int)RUN_MASK) - price += 1 + ((litlen-(int)RUN_MASK) / 255); + price += 1 + ((litlen - (int)RUN_MASK) / 255); return price; } /* requires mlen >= MINMATCH */ -LZ4_FORCE_INLINE int LZ4HC_sequencePrice(int litlen, int mlen) -{ +LZ4_FORCE_INLINE int LZ4HC_sequencePrice(int litlen, int mlen) { int price = 1 + 2 ; /* token + 16-bit offset */ assert(litlen >= 0); assert(mlen >= MINMATCH); price += LZ4HC_literalsPrice(litlen); - if (mlen >= (int)(ML_MASK+MINMATCH)) - price += 1 + ((mlen-(int)(ML_MASK+MINMATCH)) / 255); + if (mlen >= (int)(ML_MASK + MINMATCH)) + price += 1 + ((mlen - (int)(ML_MASK + MINMATCH)) / 255); return price; } @@ -1253,286 +1253,303 @@ typedef struct { } LZ4HC_match_t; LZ4_FORCE_INLINE LZ4HC_match_t -LZ4HC_FindLongerMatch(LZ4HC_CCtx_internal* const ctx, - const BYTE* ip, const BYTE* const iHighLimit, +LZ4HC_FindLongerMatch(LZ4HC_CCtx_internal *const ctx, + const BYTE *ip, const BYTE *const iHighLimit, int minLen, int nbSearches, const dictCtx_directive dict, - const HCfavor_e favorDecSpeed) -{ - LZ4HC_match_t match = { 0 , 0 }; - const BYTE* matchPtr = NULL; + const HCfavor_e favorDecSpeed) { + LZ4HC_match_t match = { 0, 0 }; + const BYTE *matchPtr = NULL; /* note : LZ4HC_InsertAndGetWiderMatch() is able to modify the starting position of a match (*startpos), * but this won't be the case here, as we define iLowLimit==ip, * so LZ4HC_InsertAndGetWiderMatch() won't be allowed to search past ip */ int matchLength = LZ4HC_InsertAndGetWiderMatch(ctx, ip, ip, iHighLimit, minLen, &matchPtr, &ip, nbSearches, 1 /*patternAnalysis*/, 1 /*chainSwap*/, dict, favorDecSpeed); if (matchLength <= minLen) return match; if (favorDecSpeed) { - if ((matchLength>18) & (matchLength<=36)) matchLength=18; /* favor shortcut */ + if ((matchLength > 18) & (matchLength <= 36)) matchLength = 18; /* favor shortcut */ } match.len = matchLength; - match.off = (int)(ip-matchPtr); + match.off = (int)(ip - matchPtr); return match; } -static int LZ4HC_compress_optimal ( LZ4HC_CCtx_internal* ctx, - const char* const source, - char* dst, - int* srcSizePtr, - int dstCapacity, - int const nbSearches, - size_t sufficient_len, - const limitedOutput_directive limit, - int const fullUpdate, - const dictCtx_directive dict, - const HCfavor_e favorDecSpeed) -{ +static int LZ4HC_compress_optimal(LZ4HC_CCtx_internal *ctx, + const char *const source, + char *dst, + int *srcSizePtr, + int dstCapacity, + int const nbSearches, + size_t sufficient_len, + const limitedOutput_directive limit, + int const fullUpdate, + const dictCtx_directive dict, + const HCfavor_e favorDecSpeed) { #define TRAILING_LITERALS 3 LZ4HC_optimal_t opt[LZ4_OPT_NUM + TRAILING_LITERALS]; /* ~64 KB, which is a bit large for stack... */ - const BYTE* ip = (const BYTE*) source; - const BYTE* anchor = ip; - const BYTE* const iend = ip + *srcSizePtr; - const BYTE* const mflimit = iend - MFLIMIT; - const BYTE* const matchlimit = iend - LASTLITERALS; - BYTE* op = (BYTE*) dst; - BYTE* opSaved = (BYTE*) dst; - BYTE* oend = op + dstCapacity; + const BYTE *ip = (const BYTE *) source; + const BYTE *anchor = ip; + const BYTE *const iend = ip + *srcSizePtr; + const BYTE *const mflimit = iend - MFLIMIT; + const BYTE *const matchlimit = iend - LASTLITERALS; + BYTE *op = (BYTE *) dst; + BYTE *opSaved = (BYTE *) dst; + BYTE *oend = op + dstCapacity; /* init */ DEBUGLOG(5, "LZ4HC_compress_optimal(dst=%p, dstCapa=%u)", dst, (unsigned)dstCapacity); *srcSizePtr = 0; if (limit == fillOutput) oend -= LASTLITERALS; /* Hack for support LZ4 format restriction */ - if (sufficient_len >= LZ4_OPT_NUM) sufficient_len = LZ4_OPT_NUM-1; + if (sufficient_len >= LZ4_OPT_NUM) sufficient_len = LZ4_OPT_NUM - 1; /* Main Loop */ assert(ip - anchor < LZ4_MAX_INPUT_SIZE); while (ip <= mflimit) { - int const llen = (int)(ip - anchor); - int best_mlen, best_off; - int cur, last_match_pos = 0; + int const llen = (int)(ip - anchor); + int best_mlen, best_off; + int cur, last_match_pos = 0; - LZ4HC_match_t const firstMatch = LZ4HC_FindLongerMatch(ctx, ip, matchlimit, MINMATCH-1, nbSearches, dict, favorDecSpeed); - if (firstMatch.len==0) { ip++; continue; } + LZ4HC_match_t const firstMatch = LZ4HC_FindLongerMatch(ctx, ip, matchlimit, MINMATCH - 1, nbSearches, dict, favorDecSpeed); + if (firstMatch.len == 0) { ip++; continue; } - if ((size_t)firstMatch.len > sufficient_len) { - /* good enough solution : immediate encoding */ - int const firstML = firstMatch.len; - const BYTE* const matchPos = ip - firstMatch.off; - opSaved = op; - if ( LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), firstML, matchPos, limit, oend) ) /* updates ip, op and anchor */ - goto _dest_overflow; - continue; - } + if ((size_t)firstMatch.len > sufficient_len) { + /* good enough solution : immediate encoding */ + int const firstML = firstMatch.len; + const BYTE *const matchPos = ip - firstMatch.off; + opSaved = op; + if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), firstML, matchPos, limit, oend)) /* updates ip, op and anchor */ + goto _dest_overflow; + continue; + } - /* set prices for first positions (literals) */ - { int rPos; - for (rPos = 0 ; rPos < MINMATCH ; rPos++) { - int const cost = LZ4HC_literalsPrice(llen + rPos); - opt[rPos].mlen = 1; - opt[rPos].off = 0; - opt[rPos].litlen = llen + rPos; - opt[rPos].price = cost; - DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i) -- initial setup", - rPos, cost, opt[rPos].litlen); - } } - /* set prices using initial match */ - { int mlen = MINMATCH; - int const matchML = firstMatch.len; /* necessarily < sufficient_len < LZ4_OPT_NUM */ - int const offset = firstMatch.off; - assert(matchML < LZ4_OPT_NUM); - for ( ; mlen <= matchML ; mlen++) { - int const cost = LZ4HC_sequencePrice(llen, mlen); - opt[mlen].mlen = mlen; - opt[mlen].off = offset; - opt[mlen].litlen = llen; - opt[mlen].price = cost; - DEBUGLOG(7, "rPos:%3i => price:%3i (matchlen=%i) -- initial setup", - mlen, cost, mlen); - } } - last_match_pos = firstMatch.len; - { int addLit; - for (addLit = 1; addLit <= TRAILING_LITERALS; addLit ++) { - opt[last_match_pos+addLit].mlen = 1; /* literal */ - opt[last_match_pos+addLit].off = 0; - opt[last_match_pos+addLit].litlen = addLit; - opt[last_match_pos+addLit].price = opt[last_match_pos].price + LZ4HC_literalsPrice(addLit); - DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i) -- initial setup", - last_match_pos+addLit, opt[last_match_pos+addLit].price, addLit); - } } + /* set prices for first positions (literals) */ + { + int rPos; + for (rPos = 0 ; rPos < MINMATCH ; rPos++) { + int const cost = LZ4HC_literalsPrice(llen + rPos); + opt[rPos].mlen = 1; + opt[rPos].off = 0; + opt[rPos].litlen = llen + rPos; + opt[rPos].price = cost; + DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i) -- initial setup", + rPos, cost, opt[rPos].litlen); + } + } + /* set prices using initial match */ + { + int mlen = MINMATCH; + int const matchML = firstMatch.len; /* necessarily < sufficient_len < LZ4_OPT_NUM */ + int const offset = firstMatch.off; + assert(matchML < LZ4_OPT_NUM); + for (; mlen <= matchML ; mlen++) { + int const cost = LZ4HC_sequencePrice(llen, mlen); + opt[mlen].mlen = mlen; + opt[mlen].off = offset; + opt[mlen].litlen = llen; + opt[mlen].price = cost; + DEBUGLOG(7, "rPos:%3i => price:%3i (matchlen=%i) -- initial setup", + mlen, cost, mlen); + } + } + last_match_pos = firstMatch.len; + { + int addLit; + for (addLit = 1; addLit <= TRAILING_LITERALS; addLit ++) { + opt[last_match_pos + addLit].mlen = 1; /* literal */ + opt[last_match_pos + addLit].off = 0; + opt[last_match_pos + addLit].litlen = addLit; + opt[last_match_pos + addLit].price = opt[last_match_pos].price + LZ4HC_literalsPrice(addLit); + DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i) -- initial setup", + last_match_pos + addLit, opt[last_match_pos + addLit].price, addLit); + } + } - /* check further positions */ - for (cur = 1; cur < last_match_pos; cur++) { - const BYTE* const curPtr = ip + cur; - LZ4HC_match_t newMatch; + /* check further positions */ + for (cur = 1; cur < last_match_pos; cur++) { + const BYTE *const curPtr = ip + cur; + LZ4HC_match_t newMatch; - if (curPtr > mflimit) break; - DEBUGLOG(7, "rPos:%u[%u] vs [%u]%u", - cur, opt[cur].price, opt[cur+1].price, cur+1); - if (fullUpdate) { - /* not useful to search here if next position has same (or lower) cost */ - if ( (opt[cur+1].price <= opt[cur].price) - /* in some cases, next position has same cost, but cost rises sharply after, so a small match would still be beneficial */ - && (opt[cur+MINMATCH].price < opt[cur].price + 3/*min seq price*/) ) - continue; - } else { - /* not useful to search here if next position has same (or lower) cost */ - if (opt[cur+1].price <= opt[cur].price) continue; - } + if (curPtr > mflimit) break; + DEBUGLOG(7, "rPos:%u[%u] vs [%u]%u", + cur, opt[cur].price, opt[cur + 1].price, cur + 1); + if (fullUpdate) { + /* not useful to search here if next position has same (or lower) cost */ + if ((opt[cur + 1].price <= opt[cur].price) + /* in some cases, next position has same cost, but cost rises sharply after, so a small match would still be beneficial */ + && (opt[cur + MINMATCH].price < opt[cur].price + 3/*min seq price*/)) + continue; + } else { + /* not useful to search here if next position has same (or lower) cost */ + if (opt[cur + 1].price <= opt[cur].price) continue; + } - DEBUGLOG(7, "search at rPos:%u", cur); - if (fullUpdate) - newMatch = LZ4HC_FindLongerMatch(ctx, curPtr, matchlimit, MINMATCH-1, nbSearches, dict, favorDecSpeed); - else - /* only test matches of minimum length; slightly faster, but misses a few bytes */ - newMatch = LZ4HC_FindLongerMatch(ctx, curPtr, matchlimit, last_match_pos - cur, nbSearches, dict, favorDecSpeed); - if (!newMatch.len) continue; + DEBUGLOG(7, "search at rPos:%u", cur); + if (fullUpdate) + newMatch = LZ4HC_FindLongerMatch(ctx, curPtr, matchlimit, MINMATCH - 1, nbSearches, dict, favorDecSpeed); + else + /* only test matches of minimum length; slightly faster, but misses a few bytes */ + newMatch = LZ4HC_FindLongerMatch(ctx, curPtr, matchlimit, last_match_pos - cur, nbSearches, dict, favorDecSpeed); + if (!newMatch.len) continue; - if ( ((size_t)newMatch.len > sufficient_len) - || (newMatch.len + cur >= LZ4_OPT_NUM) ) { - /* immediate encoding */ - best_mlen = newMatch.len; - best_off = newMatch.off; - last_match_pos = cur + 1; - goto encode; - } + if (((size_t)newMatch.len > sufficient_len) + || (newMatch.len + cur >= LZ4_OPT_NUM)) { + /* immediate encoding */ + best_mlen = newMatch.len; + best_off = newMatch.off; + last_match_pos = cur + 1; + goto encode; + } - /* before match : set price with literals at beginning */ - { int const baseLitlen = opt[cur].litlen; - int litlen; - for (litlen = 1; litlen < MINMATCH; litlen++) { - int const price = opt[cur].price - LZ4HC_literalsPrice(baseLitlen) + LZ4HC_literalsPrice(baseLitlen+litlen); - int const pos = cur + litlen; - if (price < opt[pos].price) { - opt[pos].mlen = 1; /* literal */ - opt[pos].off = 0; - opt[pos].litlen = baseLitlen+litlen; - opt[pos].price = price; - DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i)", - pos, price, opt[pos].litlen); - } } } + /* before match : set price with literals at beginning */ + { + int const baseLitlen = opt[cur].litlen; + int litlen; + for (litlen = 1; litlen < MINMATCH; litlen++) { + int const price = opt[cur].price - LZ4HC_literalsPrice(baseLitlen) + LZ4HC_literalsPrice(baseLitlen + litlen); + int const pos = cur + litlen; + if (price < opt[pos].price) { + opt[pos].mlen = 1; /* literal */ + opt[pos].off = 0; + opt[pos].litlen = baseLitlen + litlen; + opt[pos].price = price; + DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i)", + pos, price, opt[pos].litlen); + } + } + } - /* set prices using match at position = cur */ - { int const matchML = newMatch.len; - int ml = MINMATCH; + /* set prices using match at position = cur */ + { + int const matchML = newMatch.len; + int ml = MINMATCH; - assert(cur + newMatch.len < LZ4_OPT_NUM); - for ( ; ml <= matchML ; ml++) { - int const pos = cur + ml; - int const offset = newMatch.off; - int price; - int ll; - DEBUGLOG(7, "testing price rPos %i (last_match_pos=%i)", - pos, last_match_pos); - if (opt[cur].mlen == 1) { - ll = opt[cur].litlen; - price = ((cur > ll) ? opt[cur - ll].price : 0) - + LZ4HC_sequencePrice(ll, ml); - } else { - ll = 0; - price = opt[cur].price + LZ4HC_sequencePrice(0, ml); - } + assert(cur + newMatch.len < LZ4_OPT_NUM); + for (; ml <= matchML ; ml++) { + int const pos = cur + ml; + int const offset = newMatch.off; + int price; + int ll; + DEBUGLOG(7, "testing price rPos %i (last_match_pos=%i)", + pos, last_match_pos); + if (opt[cur].mlen == 1) { + ll = opt[cur].litlen; + price = ((cur > ll) ? opt[cur - ll].price : 0) + + LZ4HC_sequencePrice(ll, ml); + } else { + ll = 0; + price = opt[cur].price + LZ4HC_sequencePrice(0, ml); + } assert((U32)favorDecSpeed <= 1); - if (pos > last_match_pos+TRAILING_LITERALS - || price <= opt[pos].price - (int)favorDecSpeed) { - DEBUGLOG(7, "rPos:%3i => price:%3i (matchlen=%i)", - pos, price, ml); - assert(pos < LZ4_OPT_NUM); - if ( (ml == matchML) /* last pos of last match */ - && (last_match_pos < pos) ) - last_match_pos = pos; - opt[pos].mlen = ml; - opt[pos].off = offset; - opt[pos].litlen = ll; - opt[pos].price = price; - } } } - /* complete following positions with literals */ - { int addLit; - for (addLit = 1; addLit <= TRAILING_LITERALS; addLit ++) { - opt[last_match_pos+addLit].mlen = 1; /* literal */ - opt[last_match_pos+addLit].off = 0; - opt[last_match_pos+addLit].litlen = addLit; - opt[last_match_pos+addLit].price = opt[last_match_pos].price + LZ4HC_literalsPrice(addLit); - DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i)", last_match_pos+addLit, opt[last_match_pos+addLit].price, addLit); - } } - } /* for (cur = 1; cur <= last_match_pos; cur++) */ + if (pos > last_match_pos + TRAILING_LITERALS + || price <= opt[pos].price - (int)favorDecSpeed) { + DEBUGLOG(7, "rPos:%3i => price:%3i (matchlen=%i)", + pos, price, ml); + assert(pos < LZ4_OPT_NUM); + if ((ml == matchML) /* last pos of last match */ + && (last_match_pos < pos)) + last_match_pos = pos; + opt[pos].mlen = ml; + opt[pos].off = offset; + opt[pos].litlen = ll; + opt[pos].price = price; + } + } + } + /* complete following positions with literals */ + { + int addLit; + for (addLit = 1; addLit <= TRAILING_LITERALS; addLit ++) { + opt[last_match_pos + addLit].mlen = 1; /* literal */ + opt[last_match_pos + addLit].off = 0; + opt[last_match_pos + addLit].litlen = addLit; + opt[last_match_pos + addLit].price = opt[last_match_pos].price + LZ4HC_literalsPrice(addLit); + DEBUGLOG(7, "rPos:%3i => price:%3i (litlen=%i)", last_match_pos + addLit, opt[last_match_pos + addLit].price, addLit); + } + } + } /* for (cur = 1; cur <= last_match_pos; cur++) */ - assert(last_match_pos < LZ4_OPT_NUM + TRAILING_LITERALS); - best_mlen = opt[last_match_pos].mlen; - best_off = opt[last_match_pos].off; - cur = last_match_pos - best_mlen; + assert(last_match_pos < LZ4_OPT_NUM + TRAILING_LITERALS); + best_mlen = opt[last_match_pos].mlen; + best_off = opt[last_match_pos].off; + cur = last_match_pos - best_mlen; - encode: /* cur, last_match_pos, best_mlen, best_off must be set */ - assert(cur < LZ4_OPT_NUM); - assert(last_match_pos >= 1); /* == 1 when only one candidate */ - DEBUGLOG(6, "reverse traversal, looking for shortest path (last_match_pos=%i)", last_match_pos); - { int candidate_pos = cur; - int selected_matchLength = best_mlen; - int selected_offset = best_off; - while (1) { /* from end to beginning */ - int const next_matchLength = opt[candidate_pos].mlen; /* can be 1, means literal */ - int const next_offset = opt[candidate_pos].off; - DEBUGLOG(7, "pos %i: sequence length %i", candidate_pos, selected_matchLength); - opt[candidate_pos].mlen = selected_matchLength; - opt[candidate_pos].off = selected_offset; - selected_matchLength = next_matchLength; - selected_offset = next_offset; - if (next_matchLength > candidate_pos) break; /* last match elected, first match to encode */ - assert(next_matchLength > 0); /* can be 1, means literal */ - candidate_pos -= next_matchLength; - } } +encode: /* cur, last_match_pos, best_mlen, best_off must be set */ + assert(cur < LZ4_OPT_NUM); + assert(last_match_pos >= 1); /* == 1 when only one candidate */ + DEBUGLOG(6, "reverse traversal, looking for shortest path (last_match_pos=%i)", last_match_pos); + { + int candidate_pos = cur; + int selected_matchLength = best_mlen; + int selected_offset = best_off; + while (1) { /* from end to beginning */ + int const next_matchLength = opt[candidate_pos].mlen; /* can be 1, means literal */ + int const next_offset = opt[candidate_pos].off; + DEBUGLOG(7, "pos %i: sequence length %i", candidate_pos, selected_matchLength); + opt[candidate_pos].mlen = selected_matchLength; + opt[candidate_pos].off = selected_offset; + selected_matchLength = next_matchLength; + selected_offset = next_offset; + if (next_matchLength > candidate_pos) break; /* last match elected, first match to encode */ + assert(next_matchLength > 0); /* can be 1, means literal */ + candidate_pos -= next_matchLength; + } + } - /* encode all recorded sequences in order */ - { int rPos = 0; /* relative position (to ip) */ - while (rPos < last_match_pos) { - int const ml = opt[rPos].mlen; - int const offset = opt[rPos].off; - if (ml == 1) { ip++; rPos++; continue; } /* literal; note: can end up with several literals, in which case, skip them */ - rPos += ml; - assert(ml >= MINMATCH); - assert((offset >= 1) && (offset <= LZ4_DISTANCE_MAX)); - opSaved = op; - if ( LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ip - offset, limit, oend) ) /* updates ip, op and anchor */ - goto _dest_overflow; - } } - } /* while (ip <= mflimit) */ + /* encode all recorded sequences in order */ + { + int rPos = 0; /* relative position (to ip) */ + while (rPos < last_match_pos) { + int const ml = opt[rPos].mlen; + int const offset = opt[rPos].off; + if (ml == 1) { ip++; rPos++; continue; } /* literal; note: can end up with several literals, in which case, skip them */ + rPos += ml; + assert(ml >= MINMATCH); + assert((offset >= 1) && (offset <= LZ4_DISTANCE_MAX)); + opSaved = op; + if (LZ4HC_encodeSequence(UPDATABLE(ip, op, anchor), ml, ip - offset, limit, oend)) /* updates ip, op and anchor */ + goto _dest_overflow; + } + } + } /* while (ip <= mflimit) */ - _last_literals: - /* Encode Last Literals */ - { size_t lastRunSize = (size_t)(iend - anchor); /* literals */ - size_t litLength = (lastRunSize + 255 - RUN_MASK) / 255; - size_t const totalSize = 1 + litLength + lastRunSize; - if (limit == fillOutput) oend += LASTLITERALS; /* restore correct value */ - if (limit && (op + totalSize > oend)) { - if (limit == limitedOutput) return 0; /* Check output limit */ - /* adapt lastRunSize to fill 'dst' */ - lastRunSize = (size_t)(oend - op) - 1; - litLength = (lastRunSize + 255 - RUN_MASK) / 255; - lastRunSize -= litLength; - } - ip = anchor + lastRunSize; +_last_literals: + /* Encode Last Literals */ + { + size_t lastRunSize = (size_t)(iend - anchor); /* literals */ + size_t litLength = (lastRunSize + 255 - RUN_MASK) / 255; + size_t const totalSize = 1 + litLength + lastRunSize; + if (limit == fillOutput) oend += LASTLITERALS; /* restore correct value */ + if (limit && (op + totalSize > oend)) { + if (limit == limitedOutput) return 0; /* Check output limit */ + /* adapt lastRunSize to fill 'dst' */ + lastRunSize = (size_t)(oend - op) - 1; + litLength = (lastRunSize + 255 - RUN_MASK) / 255; + lastRunSize -= litLength; + } + ip = anchor + lastRunSize; - if (lastRunSize >= RUN_MASK) { - size_t accumulator = lastRunSize - RUN_MASK; - *op++ = (RUN_MASK << ML_BITS); - for(; accumulator >= 255 ; accumulator -= 255) *op++ = 255; - *op++ = (BYTE) accumulator; - } else { - *op++ = (BYTE)(lastRunSize << ML_BITS); - } - memcpy(op, anchor, lastRunSize); - op += lastRunSize; - } + if (lastRunSize >= RUN_MASK) { + size_t accumulator = lastRunSize - RUN_MASK; + *op++ = (RUN_MASK << ML_BITS); + for (; accumulator >= 255 ; accumulator -= 255) * op++ = 255; + *op++ = (BYTE) accumulator; + } else { + *op++ = (BYTE)(lastRunSize << ML_BITS); + } + memcpy(op, anchor, lastRunSize); + op += lastRunSize; + } - /* End */ - *srcSizePtr = (int) (((const char*)ip) - source); - return (int) ((char*)op-dst); + /* End */ + *srcSizePtr = (int)(((const char *)ip) - source); + return (int)((char *)op - dst); - _dest_overflow: - if (limit == fillOutput) { - op = opSaved; /* restore correct out pointer */ - goto _last_literals; - } - return 0; - } +_dest_overflow: + if (limit == fillOutput) { + op = opSaved; /* restore correct out pointer */ + goto _last_literals; + } + return 0; +} diff --git a/common/lz4/lz4hc.h b/common/lz4/lz4hc.h index 44e35bbf6..be39e08a3 100644 --- a/common/lz4/lz4hc.h +++ b/common/lz4/lz4hc.h @@ -63,7 +63,7 @@ extern "C" { * @return : the number of bytes written into 'dst' * or 0 if compression fails. */ -LZ4LIB_API int LZ4_compress_HC (const char* src, char* dst, int srcSize, int dstCapacity, int compressionLevel); +LZ4LIB_API int LZ4_compress_HC(const char *src, char *dst, int srcSize, int dstCapacity, int compressionLevel); /* Note : @@ -77,7 +77,7 @@ LZ4LIB_API int LZ4_compress_HC (const char* src, char* dst, int srcSize, int dst * Memory segment must be aligned on 8-bytes boundaries (which a normal malloc() should do properly). */ LZ4LIB_API int LZ4_sizeofStateHC(void); -LZ4LIB_API int LZ4_compress_HC_extStateHC(void* stateHC, const char* src, char* dst, int srcSize, int maxDstSize, int compressionLevel); +LZ4LIB_API int LZ4_compress_HC_extStateHC(void *stateHC, const char *src, char *dst, int srcSize, int maxDstSize, int compressionLevel); /*! LZ4_compress_HC_destSize() : v1.9.0+ @@ -88,9 +88,9 @@ LZ4LIB_API int LZ4_compress_HC_extStateHC(void* stateHC, const char* src, char* * or 0 if compression fails. * `srcSizePtr` : on success, *srcSizePtr is updated to indicate how much bytes were read from `src` */ -LZ4LIB_API int LZ4_compress_HC_destSize(void* stateHC, - const char* src, char* dst, - int* srcSizePtr, int targetDstSize, +LZ4LIB_API int LZ4_compress_HC_destSize(void *stateHC, + const char *src, char *dst, + int *srcSizePtr, int targetDstSize, int compressionLevel); @@ -98,7 +98,7 @@ LZ4LIB_API int LZ4_compress_HC_destSize(void* stateHC, * Streaming Compression * Bufferless synchronous API **************************************/ - typedef union LZ4_streamHC_u LZ4_streamHC_t; /* incomplete type (defined later) */ +typedef union LZ4_streamHC_u LZ4_streamHC_t; /* incomplete type (defined later) */ /*! LZ4_createStreamHC() and LZ4_freeStreamHC() : * These functions create and release memory for LZ4 HC streaming state. @@ -106,8 +106,8 @@ LZ4LIB_API int LZ4_compress_HC_destSize(void* stateHC, * A same state can be used multiple times consecutively, * starting with LZ4_resetStreamHC_fast() to start a new stream of blocks. */ -LZ4LIB_API LZ4_streamHC_t* LZ4_createStreamHC(void); -LZ4LIB_API int LZ4_freeStreamHC (LZ4_streamHC_t* streamHCPtr); +LZ4LIB_API LZ4_streamHC_t *LZ4_createStreamHC(void); +LZ4LIB_API int LZ4_freeStreamHC(LZ4_streamHC_t *streamHCPtr); /* These functions compress data in successive blocks of any size, @@ -152,12 +152,12 @@ LZ4LIB_API int LZ4_freeStreamHC (LZ4_streamHC_t* streamHCPtr); just by resetting it, using LZ4_resetStreamHC_fast(). */ -LZ4LIB_API void LZ4_resetStreamHC_fast(LZ4_streamHC_t* streamHCPtr, int compressionLevel); /* v1.9.0+ */ -LZ4LIB_API int LZ4_loadDictHC (LZ4_streamHC_t* streamHCPtr, const char* dictionary, int dictSize); +LZ4LIB_API void LZ4_resetStreamHC_fast(LZ4_streamHC_t *streamHCPtr, int compressionLevel); /* v1.9.0+ */ +LZ4LIB_API int LZ4_loadDictHC(LZ4_streamHC_t *streamHCPtr, const char *dictionary, int dictSize); -LZ4LIB_API int LZ4_compress_HC_continue (LZ4_streamHC_t* streamHCPtr, - const char* src, char* dst, - int srcSize, int maxDstSize); +LZ4LIB_API int LZ4_compress_HC_continue(LZ4_streamHC_t *streamHCPtr, + const char *src, char *dst, + int srcSize, int maxDstSize); /*! LZ4_compress_HC_continue_destSize() : v1.9.0+ * Similar to LZ4_compress_HC_continue(), @@ -169,11 +169,11 @@ LZ4LIB_API int LZ4_compress_HC_continue (LZ4_streamHC_t* streamHCPtr, * `srcSizePtr` : on success, *srcSizePtr will be updated to indicate how much bytes were read from `src`. * Note that this function may not consume the entire input. */ -LZ4LIB_API int LZ4_compress_HC_continue_destSize(LZ4_streamHC_t* LZ4_streamHCPtr, - const char* src, char* dst, - int* srcSizePtr, int targetDstSize); +LZ4LIB_API int LZ4_compress_HC_continue_destSize(LZ4_streamHC_t *LZ4_streamHCPtr, + const char *src, char *dst, + int *srcSizePtr, int targetDstSize); -LZ4LIB_API int LZ4_saveDictHC (LZ4_streamHC_t* streamHCPtr, char* safeBuffer, int maxDictSize); +LZ4LIB_API int LZ4_saveDictHC(LZ4_streamHC_t *streamHCPtr, char *safeBuffer, int maxDictSize); @@ -202,13 +202,12 @@ LZ4LIB_API int LZ4_saveDictHC (LZ4_streamHC_t* streamHCPtr, char* safeBuffer, in #include <stdint.h> typedef struct LZ4HC_CCtx_internal LZ4HC_CCtx_internal; -struct LZ4HC_CCtx_internal -{ +struct LZ4HC_CCtx_internal { uint32_t hashTable[LZ4HC_HASHTABLESIZE]; uint16_t chainTable[LZ4HC_MAXD]; - const uint8_t* end; /* next block here to continue on current prefix */ - const uint8_t* base; /* All index relative to this position */ - const uint8_t* dictBase; /* alternate base for extDict */ + const uint8_t *end; /* next block here to continue on current prefix */ + const uint8_t *base; /* All index relative to this position */ + const uint8_t *dictBase; /* alternate base for extDict */ uint32_t dictLimit; /* below that point, need extDict */ uint32_t lowLimit; /* below that point, no more dict */ uint32_t nextToUpdate; /* index from which to continue dictionary update */ @@ -216,19 +215,18 @@ struct LZ4HC_CCtx_internal int8_t favorDecSpeed; /* favor decompression speed if this flag set, otherwise, favor compression ratio */ int8_t dirty; /* stream has to be fully reset if this flag is set */ - const LZ4HC_CCtx_internal* dictCtx; + const LZ4HC_CCtx_internal *dictCtx; }; #else typedef struct LZ4HC_CCtx_internal LZ4HC_CCtx_internal; -struct LZ4HC_CCtx_internal -{ +struct LZ4HC_CCtx_internal { unsigned int hashTable[LZ4HC_HASHTABLESIZE]; unsigned short chainTable[LZ4HC_MAXD]; - const unsigned char* end; /* next block here to continue on current prefix */ - const unsigned char* base; /* All index relative to this position */ - const unsigned char* dictBase; /* alternate base for extDict */ + const unsigned char *end; /* next block here to continue on current prefix */ + const unsigned char *base; /* All index relative to this position */ + const unsigned char *dictBase; /* alternate base for extDict */ unsigned int dictLimit; /* below that point, need extDict */ unsigned int lowLimit; /* below that point, no more dict */ unsigned int nextToUpdate; /* index from which to continue dictionary update */ @@ -236,7 +234,7 @@ struct LZ4HC_CCtx_internal char favorDecSpeed; /* favor decompression speed if this flag set, otherwise, favor compression ratio */ char dirty; /* stream has to be fully reset if this flag is set */ - const LZ4HC_CCtx_internal* dictCtx; + const LZ4HC_CCtx_internal *dictCtx; }; #endif @@ -269,7 +267,7 @@ union LZ4_streamHC_u { * Required before first use of a statically allocated LZ4_streamHC_t. * Before v1.9.0 : use LZ4_resetStreamHC() instead */ -LZ4LIB_API LZ4_streamHC_t* LZ4_initStreamHC (void* buffer, size_t size); +LZ4LIB_API LZ4_streamHC_t *LZ4_initStreamHC(void *buffer, size_t size); /*-************************************ @@ -278,16 +276,16 @@ LZ4LIB_API LZ4_streamHC_t* LZ4_initStreamHC (void* buffer, size_t size); /* see lz4.h LZ4_DISABLE_DEPRECATE_WARNINGS to turn off deprecation warnings */ /* deprecated compression functions */ -LZ4_DEPRECATED("use LZ4_compress_HC() instead") LZ4LIB_API int LZ4_compressHC (const char* source, char* dest, int inputSize); -LZ4_DEPRECATED("use LZ4_compress_HC() instead") LZ4LIB_API int LZ4_compressHC_limitedOutput (const char* source, char* dest, int inputSize, int maxOutputSize); -LZ4_DEPRECATED("use LZ4_compress_HC() instead") LZ4LIB_API int LZ4_compressHC2 (const char* source, char* dest, int inputSize, int compressionLevel); -LZ4_DEPRECATED("use LZ4_compress_HC() instead") LZ4LIB_API int LZ4_compressHC2_limitedOutput(const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel); -LZ4_DEPRECATED("use LZ4_compress_HC_extStateHC() instead") LZ4LIB_API int LZ4_compressHC_withStateHC (void* state, const char* source, char* dest, int inputSize); -LZ4_DEPRECATED("use LZ4_compress_HC_extStateHC() instead") LZ4LIB_API int LZ4_compressHC_limitedOutput_withStateHC (void* state, const char* source, char* dest, int inputSize, int maxOutputSize); -LZ4_DEPRECATED("use LZ4_compress_HC_extStateHC() instead") LZ4LIB_API int LZ4_compressHC2_withStateHC (void* state, const char* source, char* dest, int inputSize, int compressionLevel); -LZ4_DEPRECATED("use LZ4_compress_HC_extStateHC() instead") LZ4LIB_API int LZ4_compressHC2_limitedOutput_withStateHC(void* state, const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel); -LZ4_DEPRECATED("use LZ4_compress_HC_continue() instead") LZ4LIB_API int LZ4_compressHC_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* source, char* dest, int inputSize); -LZ4_DEPRECATED("use LZ4_compress_HC_continue() instead") LZ4LIB_API int LZ4_compressHC_limitedOutput_continue (LZ4_streamHC_t* LZ4_streamHCPtr, const char* source, char* dest, int inputSize, int maxOutputSize); +LZ4_DEPRECATED("use LZ4_compress_HC() instead") LZ4LIB_API int LZ4_compressHC(const char *source, char *dest, int inputSize); +LZ4_DEPRECATED("use LZ4_compress_HC() instead") LZ4LIB_API int LZ4_compressHC_limitedOutput(const char *source, char *dest, int inputSize, int maxOutputSize); +LZ4_DEPRECATED("use LZ4_compress_HC() instead") LZ4LIB_API int LZ4_compressHC2(const char *source, char *dest, int inputSize, int compressionLevel); +LZ4_DEPRECATED("use LZ4_compress_HC() instead") LZ4LIB_API int LZ4_compressHC2_limitedOutput(const char *source, char *dest, int inputSize, int maxOutputSize, int compressionLevel); +LZ4_DEPRECATED("use LZ4_compress_HC_extStateHC() instead") LZ4LIB_API int LZ4_compressHC_withStateHC(void *state, const char *source, char *dest, int inputSize); +LZ4_DEPRECATED("use LZ4_compress_HC_extStateHC() instead") LZ4LIB_API int LZ4_compressHC_limitedOutput_withStateHC(void *state, const char *source, char *dest, int inputSize, int maxOutputSize); +LZ4_DEPRECATED("use LZ4_compress_HC_extStateHC() instead") LZ4LIB_API int LZ4_compressHC2_withStateHC(void *state, const char *source, char *dest, int inputSize, int compressionLevel); +LZ4_DEPRECATED("use LZ4_compress_HC_extStateHC() instead") LZ4LIB_API int LZ4_compressHC2_limitedOutput_withStateHC(void *state, const char *source, char *dest, int inputSize, int maxOutputSize, int compressionLevel); +LZ4_DEPRECATED("use LZ4_compress_HC_continue() instead") LZ4LIB_API int LZ4_compressHC_continue(LZ4_streamHC_t *LZ4_streamHCPtr, const char *source, char *dest, int inputSize); +LZ4_DEPRECATED("use LZ4_compress_HC_continue() instead") LZ4LIB_API int LZ4_compressHC_limitedOutput_continue(LZ4_streamHC_t *LZ4_streamHCPtr, const char *source, char *dest, int inputSize, int maxOutputSize); /* Obsolete streaming functions; degraded functionality; do not use! * @@ -297,13 +295,13 @@ LZ4_DEPRECATED("use LZ4_compress_HC_continue() instead") LZ4LIB_API int LZ4_comp * LZ4_slideInputBufferHC() will truncate the history of the stream, rather * than preserve a window-sized chunk of history. */ -LZ4_DEPRECATED("use LZ4_createStreamHC() instead") LZ4LIB_API void* LZ4_createHC (const char* inputBuffer); -LZ4_DEPRECATED("use LZ4_saveDictHC() instead") LZ4LIB_API char* LZ4_slideInputBufferHC (void* LZ4HC_Data); -LZ4_DEPRECATED("use LZ4_freeStreamHC() instead") LZ4LIB_API int LZ4_freeHC (void* LZ4HC_Data); -LZ4_DEPRECATED("use LZ4_compress_HC_continue() instead") LZ4LIB_API int LZ4_compressHC2_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int compressionLevel); -LZ4_DEPRECATED("use LZ4_compress_HC_continue() instead") LZ4LIB_API int LZ4_compressHC2_limitedOutput_continue (void* LZ4HC_Data, const char* source, char* dest, int inputSize, int maxOutputSize, int compressionLevel); +LZ4_DEPRECATED("use LZ4_createStreamHC() instead") LZ4LIB_API void *LZ4_createHC(const char *inputBuffer); +LZ4_DEPRECATED("use LZ4_saveDictHC() instead") LZ4LIB_API char *LZ4_slideInputBufferHC(void *LZ4HC_Data); +LZ4_DEPRECATED("use LZ4_freeStreamHC() instead") LZ4LIB_API int LZ4_freeHC(void *LZ4HC_Data); +LZ4_DEPRECATED("use LZ4_compress_HC_continue() instead") LZ4LIB_API int LZ4_compressHC2_continue(void *LZ4HC_Data, const char *source, char *dest, int inputSize, int compressionLevel); +LZ4_DEPRECATED("use LZ4_compress_HC_continue() instead") LZ4LIB_API int LZ4_compressHC2_limitedOutput_continue(void *LZ4HC_Data, const char *source, char *dest, int inputSize, int maxOutputSize, int compressionLevel); LZ4_DEPRECATED("use LZ4_createStreamHC() instead") LZ4LIB_API int LZ4_sizeofStreamStateHC(void); -LZ4_DEPRECATED("use LZ4_initStreamHC() instead") LZ4LIB_API int LZ4_resetStreamStateHC(void* state, char* inputBuffer); +LZ4_DEPRECATED("use LZ4_initStreamHC() instead") LZ4LIB_API int LZ4_resetStreamStateHC(void *state, char *inputBuffer); /* LZ4_resetStreamHC() is now replaced by LZ4_initStreamHC(). @@ -314,7 +312,7 @@ LZ4_DEPRECATED("use LZ4_initStreamHC() instead") LZ4LIB_API int LZ4_resetStre * It is recommended to switch to LZ4_initStreamHC(). * LZ4_resetStreamHC() will generate deprecation warnings in a future version. */ -LZ4LIB_API void LZ4_resetStreamHC (LZ4_streamHC_t* streamHCPtr, int compressionLevel); +LZ4LIB_API void LZ4_resetStreamHC(LZ4_streamHC_t *streamHCPtr, int compressionLevel); #if defined (__cplusplus) @@ -349,14 +347,14 @@ extern "C" { * for dynamic adaptation. */ LZ4LIB_STATIC_API void LZ4_setCompressionLevel( - LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel); + LZ4_streamHC_t *LZ4_streamHCPtr, int compressionLevel); /*! LZ4_favorDecompressionSpeed() : v1.8.2+ (experimental) * Opt. Parser will favor decompression speed over compression ratio. * Only applicable to levels >= LZ4HC_CLEVEL_OPT_MIN. */ LZ4LIB_STATIC_API void LZ4_favorDecompressionSpeed( - LZ4_streamHC_t* LZ4_streamHCPtr, int favor); + LZ4_streamHC_t *LZ4_streamHCPtr, int favor); /*! LZ4_resetStreamHC_fast() : v1.9.0+ * When an LZ4_streamHC_t is known to be in a internally coherent state, @@ -382,7 +380,7 @@ LZ4LIB_STATIC_API void LZ4_favorDecompressionSpeed( * clear any existing history and settings from the context. */ LZ4LIB_STATIC_API void LZ4_resetStreamHC_fast( - LZ4_streamHC_t* LZ4_streamHCPtr, int compressionLevel); + LZ4_streamHC_t *LZ4_streamHCPtr, int compressionLevel); /*! LZ4_compress_HC_extStateHC_fastReset() : * A variant of LZ4_compress_HC_extStateHC(). @@ -395,9 +393,9 @@ LZ4LIB_STATIC_API void LZ4_resetStreamHC_fast( * LZ4_resetStreamHC_fast() while LZ4_compress_HC_extStateHC() starts with a * call to LZ4_resetStreamHC(). */ -LZ4LIB_STATIC_API int LZ4_compress_HC_extStateHC_fastReset ( - void* state, - const char* src, char* dst, +LZ4LIB_STATIC_API int LZ4_compress_HC_extStateHC_fastReset( + void *state, + const char *src, char *dst, int srcSize, int dstCapacity, int compressionLevel); @@ -427,7 +425,7 @@ LZ4LIB_STATIC_API int LZ4_compress_HC_extStateHC_fastReset ( * through the lifetime of the stream session. */ LZ4LIB_STATIC_API void LZ4_attach_HC_dictionary( - LZ4_streamHC_t *working_stream, + LZ4_streamHC_t *working_stream, const LZ4_streamHC_t *dictionary_stream); #if defined (__cplusplus) diff --git a/tools/fpga_compress/Makefile b/tools/fpga_compress/Makefile index 26b34ba61..4a97776b2 100644 --- a/tools/fpga_compress/Makefile +++ b/tools/fpga_compress/Makefile @@ -1,4 +1,4 @@ -MYSRCPATHS = +MYSRCPATHS = MYINCLUDES = -I../../common_fpga MYCFLAGS = -std=c99 -D_ISOC99_SOURCE MYDEFS = diff --git a/tools/fpga_compress/fpga_compress.c b/tools/fpga_compress/fpga_compress.c index 0d218300f..b03caabf4 100644 --- a/tools/fpga_compress/fpga_compress.c +++ b/tools/fpga_compress/fpga_compress.c @@ -61,7 +61,7 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile) { for (uint16_t j = 0; j < num_infiles; j++) { for (uint16_t k = 0; k < FPGA_INTERLEAVE_SIZE; k++) { uint8_t c = (uint8_t)fgetc(infile[j]); - + if (!feof(infile[j])) { fpga_config[total_size++] = c; } else if (num_infiles > 1) { @@ -81,12 +81,12 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile) { char *outbuf = calloc(outsize_max, sizeof(char)); - LZ4_streamHC_t* lz4_streamhc = LZ4_createStreamHC(); + LZ4_streamHC_t *lz4_streamhc = LZ4_createStreamHC(); LZ4_resetStreamHC_fast(lz4_streamhc, LZ4HC_CLEVEL_MAX); int current_in = 0; int current_out = 0; - char * ring_buffer = calloc(buffer_size, sizeof(char)); + char *ring_buffer = calloc(buffer_size, sizeof(char)); while (current_in < total_size) { int bytes_to_copy = FPGA_RING_BUFFER_BYTES; if (total_size - current_in < FPGA_RING_BUFFER_BYTES) @@ -105,13 +105,13 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile) { free(ring_buffer); free(outbuf); free(fpga_config); - - fclose(outfile); + + fclose(outfile); for (uint16_t j = 0; j < num_infiles; j++) { fclose(infile[j]); } LZ4_freeStreamHC(lz4_streamhc); - + fprintf(stdout, "compressed %u input bytes to %u output bytes\n", total_size, current_out); if (current_out == 0) { @@ -122,8 +122,8 @@ static int zlib_compress(FILE *infile[], uint8_t num_infiles, FILE *outfile) { } typedef struct lz4_stream_s { - LZ4_streamDecode_t* lz4StreamDecode; - char* next_in; + LZ4_streamDecode_t *lz4StreamDecode; + char *next_in; int avail_in; } lz4_stream; @@ -143,7 +143,7 @@ static int zlib_decompress(FILE *infile, FILE *outfile) { return (EXIT_FAILURE); } - char* inbuf = calloc(infile_size, sizeof(char)); + char *inbuf = calloc(infile_size, sizeof(char)); size_t num_read = fread(inbuf, sizeof(char), infile_size, infile); if (num_read != infile_size) { diff --git a/tools/hitag2crack/hitag2_gen_nRaR.py b/tools/hitag2crack/hitag2_gen_nRaR.py index 14f48a26d..232add1f3 100755 --- a/tools/hitag2crack/hitag2_gen_nRaR.py +++ b/tools/hitag2crack/hitag2_gen_nRaR.py @@ -43,7 +43,7 @@ def lfsr_bs(state, i): def f20a_bs(a,b,c,d): return (~(((a|b)&c)^(a|d)^b)) # 6 ops -def f20b_bs(a,b,c,d): +def f20b_bs(a,b,c,d): return (~(((d|c)&(a^b))^(d|a|b))) # 7 ops def f20c_bs(a,b,c,d,e): return (~((((((c^e)|d)&a)^b)&(c^b))^(((d^e)|a)&((d^b)|c)))) # 13 ops diff --git a/tools/mf_nonce_brute/mf_nonce_brute.c b/tools/mf_nonce_brute/mf_nonce_brute.c index 8e769b5b5..93a3025ea 100644 --- a/tools/mf_nonce_brute/mf_nonce_brute.c +++ b/tools/mf_nonce_brute/mf_nonce_brute.c @@ -1,9 +1,9 @@ #define __STDC_FORMAT_MACROS #if !defined(_WIN64) - #if defined(_WIN32) || defined(__WIN32__) - # define _USE_32BIT_TIME_T 1 - #endif +#if defined(_WIN32) || defined(__WIN32__) +# define _USE_32BIT_TIME_T 1 +#endif #endif #include <inttypes.h> From e0371987ace55e03d8fe87557353f366a3bcd85d Mon Sep 17 00:00:00 2001 From: Iceman <iceman@iuse.se> Date: Mon, 8 Jun 2020 09:11:13 +0200 Subject: [PATCH 332/527] Update CMakeLists.txt We swapped from zlib to bz2 --- client/android/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/android/CMakeLists.txt b/client/android/CMakeLists.txt index ddaae2cd2..2bddd4662 100644 --- a/client/android/CMakeLists.txt +++ b/client/android/CMakeLists.txt @@ -165,11 +165,11 @@ find_library(pm3rrg_rdv4_tinycbor REQUIRED) find_library(pm3rrg_rdv4_lua REQUIRED) find_library(pm3rrg_rdv4_mbedtls REQUIRED) find_library(pm3rrg_rdv4_reveng REQUIRED) -find_library(pm3rrg_rdv4_z REQUIRED) find_library(pm3rrg_rdv4_hardnested REQUIRED) find_library(pm3rrg_rdv4_whereami REQUIRED) target_link_libraries( + bz2 pm3rrg_rdv4 pm3rrg_rdv4_hardnested pm3rrg_rdv4_mbedtls @@ -180,6 +180,5 @@ target_link_libraries( pm3rrg_rdv4_amiibo pm3rrg_rdv4_reveng pm3rrg_rdv4_whereami - pm3rrg_rdv4_z android log) From 8f8d42652b2465c3e9e17529e97b8c2c4b33868a Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 8 Jun 2020 09:23:08 +0200 Subject: [PATCH 333/527] remove dependency --- client/CMakeLists.txt | 1 - 1 file changed, 1 deletion(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 336cac4c1..94a8415f9 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -283,7 +283,6 @@ find_library(pm3rrg_rdv4_tinycbor REQUIRED) find_library(pm3rrg_rdv4_lua REQUIRED) find_library(pm3rrg_rdv4_mbedtls REQUIRED) find_library(pm3rrg_rdv4_reveng REQUIRED) -find_library(pm3rrg_rdv4_z REQUIRED) find_library(pm3rrg_rdv4_hardnested REQUIRED) find_library(pm3rrg_rdv4_whereami REQUIRED) From 990d33e109c35bd69fb5d0e32dac9b9e65b3e30b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 8 Jun 2020 10:21:17 +0200 Subject: [PATCH 334/527] fix: appveyor checks for bz2 --- appveyor.yml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 777dcb86d..a97a65276 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -204,7 +204,7 @@ build_script: } - if(!(Test-Path C:\ProxSpace\pm3\client\resources\hardnested_tables\*.bin.z)){ + if(!(Test-Path C:\ProxSpace\pm3\client\resources\hardnested_tables\*.bin.bz2)){ throw "Files in client\resources\hardnested_tables is not exists." @@ -371,7 +371,7 @@ test_script: ExecTest "arm recovery image exists" "proxmark3_recovery.bin" {Test-Path C:\ProxSpace\pm3\Release\share\proxmark3\firmware\proxmark3_recovery.bin} - ExecTest "hardnested tables exists" "hardnested" {Test-Path C:\ProxSpace\pm3\Release\share\proxmark3\resources\hardnested_tables\*.z} + ExecTest "hardnested tables exists" "hardnested" {Test-Path C:\ProxSpace\pm3\Release\share\proxmark3\resources\hardnested_tables\*.bz2} ExecTest "release exists" "release.zip" {Test-Path C:\ProxSpace\release.zip} From e756b9c908c8339cf0fb67903bb235eb72377c23 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 8 Jun 2020 10:38:32 +0200 Subject: [PATCH 335/527] chg: swap from xenial to bionic as build --- .travis.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.travis.yml b/.travis.yml index c8d6c8dfd..fbf7e1df3 100644 --- a/.travis.yml +++ b/.travis.yml @@ -8,7 +8,7 @@ os: - linux - osx -dist: xenial +dist: bionic osx_image: xcode11 From 90775638b1f2b6d29d14c484c056ab74157a7ebd Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 8 Jun 2020 11:07:45 +0200 Subject: [PATCH 336/527] Revert "fix: osx doesn't like target directive" This reverts commit 690db96a7d732e3eaf4c8b9ecab87f31a95e6a9e. --- include/common.h | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/include/common.h b/include/common.h index cb0962b56..3c6245e52 100644 --- a/include/common.h +++ b/include/common.h @@ -72,12 +72,8 @@ extern int DBGLEVEL; #endif -#if defined(__APPLE__) -#define RAMFUNC __attribute((long_call, section(".ramfunc"))) -#else +//#define RAMFUNC __attribute((long_call, section(".ramfunc"))) #define RAMFUNC __attribute((long_call, section(".ramfunc"))) __attribute__((target("arm"))) -#endif - #ifndef ROTR # define ROTR(x,n) (((uintmax_t)(x) >> (n)) | ((uintmax_t)(x) << ((sizeof(x) * 8) - (n)))) From 7f17b9243cb9fc80714664dcc20a9d6c2bf951d2 Mon Sep 17 00:00:00 2001 From: Iceman <iceman@iuse.se> Date: Mon, 8 Jun 2020 11:17:33 +0200 Subject: [PATCH 337/527] Update Troubleshooting.md --- .../Troubleshooting.md | 40 ++++++++++++++++++- 1 file changed, 38 insertions(+), 2 deletions(-) diff --git a/doc/md/Installation_Instructions/Troubleshooting.md b/doc/md/Installation_Instructions/Troubleshooting.md index c81d3bea7..dac35cd74 100644 --- a/doc/md/Installation_Instructions/Troubleshooting.md +++ b/doc/md/Installation_Instructions/Troubleshooting.md @@ -18,9 +18,10 @@ Always use the latest repository commits from *master* branch. There are always * [File not found](#file-not-found) * [Pixmap / pixbuf warnings](#pixmap--pixbuf-warnings) * [Usb cable](#usb-cable) - * [WSL 2 explorer.exe . doesnt work](#WSL-2) + * [WSL explorer.exe . doesnt work](#WSL) * [Troubles with running the Proxmark3 client](#troubles-with-running-the-proxmark3-client) * [libQt5Core.so.5 not found](#libQt5Coreso5-not-found) + * [Target attribute is not supported on this machine](#target-attribute-is-not-supported-on-this-machine) ## `pm3` or `pm3-flash*` doesn't see my Proxmark @@ -168,7 +169,7 @@ It's needed to have a good USB cable to connect Proxmark3 to USB. If you have st - check your cable with a USB tester (or try to change it). It needs to have a resistance smaller or equal to 0.3 Ohm. -## WSL 2 +## WSL When ```explorer.exe .``` doesn't work. Trying to access the dump files created in WSL, you will need to run ```explorer.exe .``` but sometimes this doesn't work. [As seen here](https://github.com/microsoft/WSL/issues/4027) they suggest checking the following registry value for *P9NP* @@ -187,3 +188,38 @@ The following steps is needed to make the development environment happy again. sudo apt reinstall qtbase5-dev sudo strip --remove-section=.note.ABI-tag /usr/lib/x86_64-linux-gnu/libQt5Core.so.5 ``` + +## target attribute is not supported on this machine +If you get the message ```error: target attribute is not supported on this machine [-Werror=attributes]``` +when trying to compile, its because you have an older arm-none-eabi tool chain. + +On OSX/Homebrew, the solution is to reinstall the brew. It will trigger a new download of a later tool chain. +``` +brew remove proxmark3 +brew reinstall proxmark3 +``` + +On Ubuntu 16.04 (xenial) you should either conside a later release or you can install a later toolchain. + + +sample error output: +``` +[*] MAKE armsrc/all +compiler version: arm-none-eabi-gcc (GNU Tools for ARM Embedded Processors) 5.4.1 20160919 (release) [ARM/embedded-5-branch revision 240496] + +[-] CC start.c +In file included from start.c:18:0: +BigBuf.h:41:1: error: target attribute is not supported on this machine [-Werror=attributes] + bool RAMFUNC LogTrace(const uint8_t *btBytes, uint16_t iLen, uint32_t timestamp_start, uint32_t timestamp_end, uint8_t *parity, bool readerToTag); + ^ +cc1: all warnings being treated as errors +In file included from iso15693.c:72:0: +ticks.h:25:1: error: target attribute is not supported on this machine [-Werror=attributes] + uint32_t RAMFUNC GetTickCount(void); + ^ +ticks.h:26:1: error: target attribute is not supported on this machine [-Werror=attributes] + uint32_t RAMFUNC GetTickCountDelta(uint32_t start_ticks); + ^ +``` + + From 689474997816a359feccb7c426dcc5711178182d Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 8 Jun 2020 12:43:25 +0200 Subject: [PATCH 338/527] Android: Fix bug introduced in e0371987ace55e03d8fe87557353f366a3bcd85d --- client/android/CMakeLists.txt | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/client/android/CMakeLists.txt b/client/android/CMakeLists.txt index 2bddd4662..11da2f5e4 100644 --- a/client/android/CMakeLists.txt +++ b/client/android/CMakeLists.txt @@ -168,9 +168,8 @@ find_library(pm3rrg_rdv4_reveng REQUIRED) find_library(pm3rrg_rdv4_hardnested REQUIRED) find_library(pm3rrg_rdv4_whereami REQUIRED) -target_link_libraries( +target_link_libraries(pm3rrg_rdv4 bz2 - pm3rrg_rdv4 pm3rrg_rdv4_hardnested pm3rrg_rdv4_mbedtls pm3rrg_rdv4_cliparser From 618a945e55714600aaf62ccf2c62ccd89bd9b8ca Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 8 Jun 2020 13:19:01 +0200 Subject: [PATCH 339/527] fix missing semi --- client/android/pm3_main.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/android/pm3_main.c b/client/android/pm3_main.c index f5f8cc7d7..af45725cd 100644 --- a/client/android/pm3_main.c +++ b/client/android/pm3_main.c @@ -51,7 +51,7 @@ const char *get_executable_directory(void) { if (g_android_executable_directory == NULL) { char buf[FILE_PATH_SIZE] = {0}; getcwd(buf, sizeof(buf)); - strncat(buf, PATHSEP, 1) + strncat(buf, PATHSEP, 1); g_android_executable_directory = strdup(buf); } return g_android_executable_directory; From 86c649f9555d03bf66e76d7ceb994fbaeec0cba0 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 8 Jun 2020 18:43:34 +0200 Subject: [PATCH 340/527] chg: "lf viking demod" - prepping for lib --- client/src/cmdlf.c | 1 + client/src/cmdlfviking.c | 19 +++++++++++-------- 2 files changed, 12 insertions(+), 8 deletions(-) diff --git a/client/src/cmdlf.c b/client/src/cmdlf.c index 1e91b490f..9403dc208 100644 --- a/client/src/cmdlf.c +++ b/client/src/cmdlf.c @@ -1344,6 +1344,7 @@ out: // identify chipset if (CheckChipType(isOnline) == false) { PrintAndLogEx(DEBUG, "Automatic chip type detection " _RED_("failed")); + retval = false; } return retval; } diff --git a/client/src/cmdlfviking.c b/client/src/cmdlfviking.c index 153c1d54d..5dd29a95f 100644 --- a/client/src/cmdlfviking.c +++ b/client/src/cmdlfviking.c @@ -1,4 +1,5 @@ //----------------------------------------------------------------------------- +// Marshmellow, // // This code is licensed to you under the terms of the GNU GPL, version 2 or, // at your option, any later version. See the LICENSE.txt file for the text of @@ -51,19 +52,25 @@ static int usage_lf_viking_sim(void) { return PM3_SUCCESS; } -//by marshmellow -//see ASKDemod for what args are accepted static int CmdVikingDemod(const char *Cmd) { - if (ASKDemod(Cmd, false, false, 1) != PM3_SUCCESS) { + return demodViking(); +} + +//see ASKDemod for what args are accepted +int demodViking(void) { + + if (ASKDemod("", false, false, 1) != PM3_SUCCESS) { PrintAndLogEx(DEBUG, "DEBUG: Error - Viking ASKDemod failed"); return PM3_ESOFT; } - size_t size = DemodBufferLen; + + size_t size = DemodBufferLen; int ans = detectViking(DemodBuffer, &size); if (ans < 0) { PrintAndLogEx(DEBUG, "DEBUG: Error - Viking Demod %d %s", ans, (ans == -5) ? _RED_("[chksum error]") : ""); return PM3_ESOFT; } + //got a good demod uint32_t raw1 = bytebits_to_byte(DemodBuffer + ans, 32); uint32_t raw2 = bytebits_to_byte(DemodBuffer + ans + 32, 32); @@ -76,7 +83,6 @@ static int CmdVikingDemod(const char *Cmd) { return PM3_SUCCESS; } -//by marshmellow //see ASKDemod for what args are accepted static int CmdVikingRead(const char *Cmd) { lf_read(false, 10000); @@ -211,7 +217,4 @@ int detectViking(uint8_t *src, size_t *size) { return (int)startIdx; } -int demodViking(void) { - return CmdVikingDemod(""); -} From 526407ed5c219e263b4bdd31bea53f072109ee19 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 8 Jun 2020 19:06:26 +0200 Subject: [PATCH 341/527] Fix deps/liblua Android cross-compilation --- client/deps/lua.cmake | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 679147124..5ccf22c33 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -38,6 +38,11 @@ target_compile_definitions(pm3rrg_rdv4_lua PRIVATE LUA_COMPAT_ALL) if (NOT MINGW) if (APPLE) target_compile_definitions(pm3rrg_rdv4_lua PRIVATE LUA_USE_MACOSX) + elseif (ANDROID) + # Required: + target_compile_definitions(pm3rrg_rdv4_lua PRIVATE LUA_USE_MKSTEMP) + # Same as for LUA_USE_LINUX except LUA_USE_POSIX and client-specific LUA_USE_READLINE and LUA_USE_ISATTY + target_compile_definitions(pm3rrg_rdv4_lua PRIVATE LUA_USE_DLOPEN LUA_USE_STRTODHEX LUA_USE_AFORMAT LUA_USE_LONGLONG LUA_USE_POPEN LUA_USE_ULONGJMP LUA_USE_GMTIME_R) else (APPLE) target_compile_definitions(pm3rrg_rdv4_lua PRIVATE LUA_USE_LINUX) target_link_libraries(pm3rrg_rdv4_lua INTERFACE dl) From c76b3061da799f0d50471d6c0931f664876e86e5 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 8 Jun 2020 20:20:16 +0200 Subject: [PATCH 342/527] Fix more deps/liblua Android cross-compilation --- client/deps/lua.cmake | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/client/deps/lua.cmake b/client/deps/lua.cmake index 5ccf22c33..12870342e 100644 --- a/client/deps/lua.cmake +++ b/client/deps/lua.cmake @@ -40,9 +40,11 @@ if (NOT MINGW) target_compile_definitions(pm3rrg_rdv4_lua PRIVATE LUA_USE_MACOSX) elseif (ANDROID) # Required: - target_compile_definitions(pm3rrg_rdv4_lua PRIVATE LUA_USE_MKSTEMP) - # Same as for LUA_USE_LINUX except LUA_USE_POSIX and client-specific LUA_USE_READLINE and LUA_USE_ISATTY - target_compile_definitions(pm3rrg_rdv4_lua PRIVATE LUA_USE_DLOPEN LUA_USE_STRTODHEX LUA_USE_AFORMAT LUA_USE_LONGLONG LUA_USE_POPEN LUA_USE_ULONGJMP LUA_USE_GMTIME_R) + add_definitions(-D"getlocaledecpoint\(\)='.'") + # Same as for LUA_USE_LINUX except LUA_USE_POSIX and client-specific LUA_USE_READLINE + target_compile_definitions(pm3rrg_rdv4_lua PRIVATE LUA_USE_DLOPEN LUA_USE_STRTODHEX LUA_USE_AFORMAT LUA_USE_LONGLONG) + # Same as for LUA_USE_POSIX except client-specific LUA_USE_ISATTY. LUA_USE_MKSTEMP is needed. + target_compile_definitions(pm3rrg_rdv4_lua PRIVATE LUA_USE_MKSTEMP LUA_USE_POPEN LUA_USE_ULONGJMP LUA_USE_GMTIME_R) else (APPLE) target_compile_definitions(pm3rrg_rdv4_lua PRIVATE LUA_USE_LINUX) target_link_libraries(pm3rrg_rdv4_lua INTERFACE dl) From 45b5bbed7be5c206ea31269c9f5b7a970b031e79 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 9 Jun 2020 00:16:42 +0200 Subject: [PATCH 343/527] Add SKIPBT support to cmake --- client/CMakeLists.txt | 27 +++++++++++++++++++++------ 1 file changed, 21 insertions(+), 6 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 94a8415f9..5ccf73d19 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -38,7 +38,9 @@ foreach(_qt_package IN LISTS QT_PACKAGELIST) endforeach() find_package(PkgConfig) -pkg_search_module(BLUEZ QUIET bluez) +if (NOT SKIPBT EQUAL 1) + pkg_search_module(BLUEZ QUIET bluez) +endif() pkg_search_module(PYTHON3 QUIET python3) pkg_search_module(PYTHON3EMBED QUIET python3-embed) @@ -220,11 +222,12 @@ else (Qt5_FOUND) ${TARGET_SOURCES}) endif (Qt5_FOUND) -if (BLUEZ_FOUND) - message("Bluez library found, building native Bluetooth support :)") - add_definitions("-DHAVE_BLUEZ") - set(ADDITIONAL_LNK ${BLUEZ_LIBRARIES} ${ADDITIONAL_LNK}) -endif (BLUEZ_FOUND) +if (NOT SKIPBT EQUAL 1) + if (BLUEZ_FOUND) + add_definitions("-DHAVE_BLUEZ") + set(ADDITIONAL_LNK ${BLUEZ_LIBRARIES} ${ADDITIONAL_LNK}) + endif (BLUEZ_FOUND) +endif(NOT SKIPBT EQUAL 1) if (PYTHON3EMBED_FOUND) message("Python3-embed library found, building with python3 support :)") @@ -240,6 +243,18 @@ elseif (PYTHON3_FOUND) set(ADDITIONAL_LNKDIRS ${PYTHON3_LIBRARY_DIRS} ${ADDITIONAL_LNKDIRS}) endif (PYTHON3EMBED_FOUND) +message(" ===================================================================)") +if (SKIPBT EQUAL 1) + message("native BT support: skipped") +else (SKIPBT EQUAL 1) + if (BLUEZ_FOUND) + message("native BT support: Bluez found, enabled") + else (BLUEZ_FOUND) + message("native BT support: Bluez not found, disabled") + endif (BLUEZ_FOUND) +endif(SKIPBT EQUAL 1) +message(" ===================================================================)") + add_executable(proxmark3 ${PM3_ROOT}/client/src/proxmark3.c ${TARGET_SOURCES} From 6358c07ec1a2393def55e7ecca4d8829e48a5cef Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 9 Jun 2020 00:34:41 +0200 Subject: [PATCH 344/527] Add SKIPQT support to cmake --- client/CMakeLists.txt | 70 ++++++++++++++++++++++++------------------- 1 file changed, 40 insertions(+), 30 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 5ccf73d19..d85cfaf00 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -13,29 +13,31 @@ if(CMAKE_VERSION VERSION_LESS "3.7.0") set(CMAKE_INCLUDE_CURRENT_DIR ON) endif() -if(APPLE AND EXISTS /usr/local/opt/qt5) - # Homebrew installs Qt5 (up to at least 5.11.0) in - # /usr/local/qt5. Ensure that it can be found by CMake - # since it is not in the default /usr/local prefix. - # Add it to PATHS so that it doesn't override the - # CMAKE_PREFIX_PATH environment variable. - # QT_FIND_PACKAGE_OPTIONS should be passed to find_package, - # e.g. find_package(Qt5Core ${QT_FIND_PACKAGE_OPTIONS}) - list(APPEND QT_FIND_PACKAGE_OPTIONS PATHS /usr/local/opt/qt5) -endif() -set(QT_PACKAGELIST - Qt5Core - Qt5Widgets - Qt5Gui -) -set(Qt5_FOUND ON) -foreach(_qt_package IN LISTS QT_PACKAGELIST) - find_package(${_qt_package} QUIET ${QT_FIND_PACKAGE_OPTIONS}) - set(Qt5_LIBRARIES ${${_qt_package}_LIBRARIES} ${Qt5_LIBRARIES}) - if(NOT ${_qt_package}_FOUND) - set(Qt5_FOUND OFF) - endif(NOT ${_qt_package}_FOUND) -endforeach() +if (NOT SKIPQT EQUAL 1) + if(APPLE AND EXISTS /usr/local/opt/qt5) + # Homebrew installs Qt5 (up to at least 5.11.0) in + # /usr/local/qt5. Ensure that it can be found by CMake + # since it is not in the default /usr/local prefix. + # Add it to PATHS so that it doesn't override the + # CMAKE_PREFIX_PATH environment variable. + # QT_FIND_PACKAGE_OPTIONS should be passed to find_package, + # e.g. find_package(Qt5Core ${QT_FIND_PACKAGE_OPTIONS}) + list(APPEND QT_FIND_PACKAGE_OPTIONS PATHS /usr/local/opt/qt5) + endif(APPLE AND EXISTS /usr/local/opt/qt5) + set(QT_PACKAGELIST + Qt5Core + Qt5Widgets + Qt5Gui + ) + set(Qt5_FOUND ON) + foreach(_qt_package IN LISTS QT_PACKAGELIST) + find_package(${_qt_package} QUIET ${QT_FIND_PACKAGE_OPTIONS}) + set(Qt5_LIBRARIES ${${_qt_package}_LIBRARIES} ${Qt5_LIBRARIES}) + if(NOT ${_qt_package}_FOUND) + set(Qt5_FOUND OFF) + endif(NOT ${_qt_package}_FOUND) + endforeach() +endif (NOT SKIPQT EQUAL 1) find_package(PkgConfig) if (NOT SKIPBT EQUAL 1) @@ -203,8 +205,7 @@ if (APPLE) set(ADDITIONAL_LNK "-framework Foundation" "-framework AppKit") endif (APPLE) -if (Qt5_FOUND) - message("Qt5 library found, building gui :)") +if ((NOT SKIPQT EQUAL 1) AND (Qt5_FOUND)) set(CMAKE_AUTOMOC ON) set(CMAKE_AUTORCC ON) set(CMAKE_AUTOUIC ON) @@ -215,12 +216,11 @@ if (Qt5_FOUND) add_definitions("-DHAVE_GUI") set(ADDITIONAL_LNK ${Qt5_LIBRARIES} ${ADDITIONAL_LNK}) -else (Qt5_FOUND) - message("Qt5 library not found, not building gui") +else ((NOT SKIPQT EQUAL 1) AND (Qt5_FOUND)) set(TARGET_SOURCES ${PM3_ROOT}/client/src/guidummy.cpp ${TARGET_SOURCES}) -endif (Qt5_FOUND) +endif ((NOT SKIPQT EQUAL 1) AND (Qt5_FOUND)) if (NOT SKIPBT EQUAL 1) if (BLUEZ_FOUND) @@ -243,7 +243,17 @@ elseif (PYTHON3_FOUND) set(ADDITIONAL_LNKDIRS ${PYTHON3_LIBRARY_DIRS} ${ADDITIONAL_LNKDIRS}) endif (PYTHON3EMBED_FOUND) -message(" ===================================================================)") +message("===================================================================") +if (SKIPQT EQUAL 1) + message("GUI support: skipped") +else (SKIPQT EQUAL 1) + if (Qt5_FOUND) + message("GUI support: QT5 found, enabled") + else (Qt5_FOUND) + message("GUI support: QT5 not found, disabled") + endif (Qt5_FOUND) +endif (SKIPQT EQUAL 1) + if (SKIPBT EQUAL 1) message("native BT support: skipped") else (SKIPBT EQUAL 1) @@ -253,7 +263,7 @@ else (SKIPBT EQUAL 1) message("native BT support: Bluez not found, disabled") endif (BLUEZ_FOUND) endif(SKIPBT EQUAL 1) -message(" ===================================================================)") +message("===================================================================") add_executable(proxmark3 ${PM3_ROOT}/client/src/proxmark3.c From 66505988a2662a154d1a60f77b73acf322c91b8d Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 9 Jun 2020 00:39:35 +0200 Subject: [PATCH 345/527] Add SKIPPTHREAD support to cmake --- client/CMakeLists.txt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index d85cfaf00..c24ef34d5 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -314,7 +314,6 @@ find_library(pm3rrg_rdv4_whereami REQUIRED) target_link_libraries(proxmark3 PRIVATE bz2 readline - pthread m pm3rrg_rdv4_mbedtls pm3rrg_rdv4_cliparser @@ -327,6 +326,10 @@ target_link_libraries(proxmark3 PRIVATE pm3rrg_rdv4_whereami ${ADDITIONAL_LNK}) +if (NOT SKIPPTHREAD EQUAL 1) + target_link_libraries(proxmark3 PRIVATE pthread) +endif (NOT SKIPPTHREAD EQUAL 1) + # OSX have a hard time compiling python3 dependency with older cmake. if (PYTHON3EMBED_FOUND OR PYTHON3_FOUND) if (NOT CMAKE_VERSION VERSION_LESS 3.13) From de100fc8e77647b1ee870375b0cdf56e14ee5b51 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 9 Jun 2020 00:47:34 +0200 Subject: [PATCH 346/527] Add SKIPPYTHON support to cmake --- client/CMakeLists.txt | 65 +++++++++++++++++++++++++++---------------- 1 file changed, 41 insertions(+), 24 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index c24ef34d5..449b4fdbe 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -42,9 +42,12 @@ endif (NOT SKIPQT EQUAL 1) find_package(PkgConfig) if (NOT SKIPBT EQUAL 1) pkg_search_module(BLUEZ QUIET bluez) -endif() -pkg_search_module(PYTHON3 QUIET python3) -pkg_search_module(PYTHON3EMBED QUIET python3-embed) +endif (NOT SKIPBT EQUAL 1) + +if (NOT SKIPPYTHON EQUAL 1) + pkg_search_module(PYTHON3 QUIET python3) + pkg_search_module(PYTHON3EMBED QUIET python3-embed) +endif (NOT SKIPPYTHON EQUAL 1) add_subdirectory(${PM3_ROOT}/client/deps deps) @@ -229,19 +232,19 @@ if (NOT SKIPBT EQUAL 1) endif (BLUEZ_FOUND) endif(NOT SKIPBT EQUAL 1) -if (PYTHON3EMBED_FOUND) - message("Python3-embed library found, building with python3 support :)") - add_definitions(-DHAVE_PYTHON) - set(ADDITIONAL_DIRS ${PYTHON3EMBED_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) - set(ADDITIONAL_LNK ${PYTHON3EMBED_LIBRARIES} ${ADDITIONAL_LNK}) - set(ADDITIONAL_LNKDIRS ${PYTHON3EMBED_LIBRARY_DIRS} ${ADDITIONAL_LNKDIRS}) -elseif (PYTHON3_FOUND) - message("Python3 library found, building with python3 support :)") - add_definitions(-DHAVE_PYTHON) - set(ADDITIONAL_DIRS ${PYTHON3_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) - set(ADDITIONAL_LNK ${PYTHON3_LIBRARIES} ${ADDITIONAL_LNK}) - set(ADDITIONAL_LNKDIRS ${PYTHON3_LIBRARY_DIRS} ${ADDITIONAL_LNKDIRS}) -endif (PYTHON3EMBED_FOUND) +if (NOT SKIPPYTHON EQUAL 1) + if (PYTHON3EMBED_FOUND) + add_definitions(-DHAVE_PYTHON) + set(ADDITIONAL_DIRS ${PYTHON3EMBED_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) + set(ADDITIONAL_LNK ${PYTHON3EMBED_LIBRARIES} ${ADDITIONAL_LNK}) + set(ADDITIONAL_LNKDIRS ${PYTHON3EMBED_LIBRARY_DIRS} ${ADDITIONAL_LNKDIRS}) + elseif (PYTHON3_FOUND) + add_definitions(-DHAVE_PYTHON) + set(ADDITIONAL_DIRS ${PYTHON3_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) + set(ADDITIONAL_LNK ${PYTHON3_LIBRARIES} ${ADDITIONAL_LNK}) + set(ADDITIONAL_LNKDIRS ${PYTHON3_LIBRARY_DIRS} ${ADDITIONAL_LNKDIRS}) + endif (PYTHON3EMBED_FOUND) +endif (NOT SKIPPYTHON EQUAL 1) message("===================================================================") if (SKIPQT EQUAL 1) @@ -263,6 +266,18 @@ else (SKIPBT EQUAL 1) message("native BT support: Bluez not found, disabled") endif (BLUEZ_FOUND) endif(SKIPBT EQUAL 1) + +if (SKIPPYTHON EQUAL 1) + message("Python3 library: skipped") +else (SKIPPYTHON EQUAL 1) + if (PYTHON3EMBED_FOUND) + message("Python3 library: Python3 embed found, enabled") + elseif (PYTHON_FOUND) + message("Python3 library: Python3 found, enabled") + else (PYTHON3EMBED_FOUND) + message("Python3 library: Python3 not found, disabled") + endif (PYTHON3EMBED_FOUND) +endif(SKIPPYTHON EQUAL 1) message("===================================================================") add_executable(proxmark3 @@ -330,14 +345,16 @@ if (NOT SKIPPTHREAD EQUAL 1) target_link_libraries(proxmark3 PRIVATE pthread) endif (NOT SKIPPTHREAD EQUAL 1) -# OSX have a hard time compiling python3 dependency with older cmake. -if (PYTHON3EMBED_FOUND OR PYTHON3_FOUND) - if (NOT CMAKE_VERSION VERSION_LESS 3.13) - target_link_directories(proxmark3 PRIVATE ${ADDITIONAL_LNKDIRS}) - elseif (APPLE) - message( SEND_ERROR "Your CMAKE version is too old for Apple platform, please update to a version >=3.13" ) - endif (NOT CMAKE_VERSION VERSION_LESS 3.13) -endif (PYTHON3EMBED_FOUND OR PYTHON3_FOUND) +if (NOT SKIPPYTHON EQUAL 1) + # OSX have a hard time compiling python3 dependency with older cmake. + if (PYTHON3EMBED_FOUND OR PYTHON3_FOUND) + if (NOT CMAKE_VERSION VERSION_LESS 3.13) + target_link_directories(proxmark3 PRIVATE ${ADDITIONAL_LNKDIRS}) + elseif (APPLE) + message( SEND_ERROR "Your CMAKE version is too old for Apple platform, please update to a version >=3.13" ) + endif (NOT CMAKE_VERSION VERSION_LESS 3.13) + endif (PYTHON3EMBED_FOUND OR PYTHON3_FOUND) +endif (NOT SKIPPYTHON EQUAL 1) install(TARGETS proxmark3 DESTINATION "bin") install(DIRECTORY cmdscripts lualibs luascripts pyscripts resources dictionaries DESTINATION "share/proxmark3") From eb35636f49b4f4f9d78f57c13bf3b29e0405c3dd Mon Sep 17 00:00:00 2001 From: Lukas Kuzmiak <lukash@backstep.net> Date: Mon, 8 Jun 2020 17:26:03 -0700 Subject: [PATCH 347/527] remove duplicated key (first occurrence kept) --- client/dictionaries/mfc_default_keys.dic | 4 ---- 1 file changed, 4 deletions(-) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 6e2a2f4da..26f1f938e 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -741,7 +741,6 @@ D3A297DC2698 9EA3387A63C1 A3FAA6DAFF67 A7141147D430 -AAFB06045877 ACFFFFFFFFFF AFCEF64C9913 B27ADDFB64B0 @@ -763,7 +762,6 @@ FD8705E721B0 00ada2cd516d # # -D3F7D3F7D3F7 ## 237a4d0d9119 0ed7846c2bc9 @@ -1068,7 +1066,6 @@ a2a3cca2a3cc 385efa542907 3864fcba5937 3f3865fccb69 -5c8ff9990da2 6291b3860fc8 63fca9492f38 863fcb959373 @@ -1114,7 +1111,6 @@ fe04ecfe5577 5a7a52d5e20d # Bosch Solution 6000 # # Found in TagInfo app -8A19D40CF2B5 # Hotel key card key C1E51C63B8F5 # RATB key 1DB710648A65 18F34C92A56E # E-GO card key From e3d16649b87f93876dbe65f49cdc96f9ffa8bb79 Mon Sep 17 00:00:00 2001 From: Lukas Kuzmiak <lukash@backstep.net> Date: Mon, 8 Jun 2020 21:19:36 -0700 Subject: [PATCH 348/527] MAD application code & cluster code were swapped --- client/src/mifare/mad.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index ffacba3a7..0761317fe 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -129,9 +129,9 @@ static int madCRCCheck(uint8_t *sector, bool verbose, int MADver) { static uint16_t madGetAID(uint8_t *sector, int MADver, int sectorNo) { if (MADver == 1) - return (sector[16 + 2 + (sectorNo - 1) * 2] << 8) + (sector[16 + 2 + (sectorNo - 1) * 2 + 1]); + return (sector[16 + 2 + (sectorNo - 1) * 2 + 1] << 8) + (sector[16 + 2 + (sectorNo - 1) * 2]); else - return (sector[2 + (sectorNo - 1) * 2] << 8) + (sector[2 + (sectorNo - 1) * 2 + 1]); + return (sector[2 + (sectorNo - 1) * 2 + 1] << 8) + (sector[2 + (sectorNo - 1) * 2]); } int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) { From a0cbaee1385b127226303159fbae8610ed933591 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 08:51:12 +0200 Subject: [PATCH 349/527] chg: mad makeover --- client/src/cmdhfmf.c | 33 +++++++------- client/src/cmdhfmfp.c | 38 ++++++++-------- client/src/mifare/mad.c | 96 +++++++++++++++++++++++------------------ 3 files changed, 89 insertions(+), 78 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 983055924..b3ccbbe3b 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4496,7 +4496,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_lit0("vV", "verbose", "show technical data"), - arg_str0("aA", "aid", "print all sectors with aid", NULL), + arg_str0("aA", "aid", "print all sectors with specified aid", NULL), arg_str0("kK", "key", "key for printing sectors", NULL), arg_lit0("bB", "keyb", "use key B for access printing sectors (by default: key A)"), arg_param_end @@ -4543,7 +4543,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { if (aidlen == 2) { uint16_t aaid = (aid[0] << 8) + aid[1]; - PrintAndLogEx(NORMAL, "\n-------------- AID 0x%04x ---------------", aaid); + PrintAndLogEx(INFO, "-------------- " _CYAN_("AID 0x%04x") " ---------------", aaid); uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; @@ -4621,58 +4621,57 @@ static int CmdHFMFNDEF(const char *Cmd) { uint8_t data[4096] = {0}; int datalen = 0; - PrintAndLogEx(NORMAL, ""); - if (mfReadSector(MF_MAD1_SECTOR, MF_KEY_A, (uint8_t *)g_mifare_mad_key, sector0)) { - PrintAndLogEx(ERR, "read sector 0 error. card don't have MAD or don't have MAD on default keys."); + PrintAndLogEx(ERR, "error, read sector 0. card don't have MAD or don't have MAD on default keys"); return PM3_ESOFT; } bool haveMAD2 = false; int res = MADCheck(sector0, NULL, verbose, &haveMAD2); - if (res) { - PrintAndLogEx(ERR, "MAD error %d.", res); + if (res != PM3_SUCCESS) { + PrintAndLogEx(ERR, "MAD error %d", res); return res; } if (haveMAD2) { if (mfReadSector(MF_MAD2_SECTOR, MF_KEY_A, (uint8_t *)g_mifare_mad_key, sector10)) { - PrintAndLogEx(ERR, "read sector 0x10 error. card don't have MAD or don't have MAD on default keys."); + PrintAndLogEx(ERR, "error, read sector 0x10. card don't have MAD or don't have MAD on default keys"); return PM3_ESOFT; } } uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; - if (MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen)) { - PrintAndLogEx(ERR, "can't decode mad."); - return PM3_ESOFT; + res = MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen); + if (res != PM3_SUCCESS) { + PrintAndLogEx(ERR, "can't decode MAD"); + return res; } - printf("data reading:"); + PrintAndLogEx(INFO, "data reading:"); for (int i = 0; i < madlen; i++) { if (ndefAID == mad[i]) { uint8_t vsector[16 * 4] = {0}; if (mfReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, ndefkey, vsector)) { - PrintAndLogEx(ERR, "read sector %d error.", i + 1); + PrintAndLogEx(ERR, "error, reading sector %d ", i + 1); return PM3_ESOFT; } memcpy(&data[datalen], vsector, 16 * 3); datalen += 16 * 3; - printf("."); + PrintAndLogEx(INPLACE, "."); } } - printf(" OK\n"); + PrintAndLogEx(NORMAL, ""); if (!datalen) { - PrintAndLogEx(ERR, "no NDEF data."); + PrintAndLogEx(WARNING, "no NDEF data"); return PM3_SUCCESS; } if (verbose2) { - PrintAndLogEx(NORMAL, "NDEF data:"); + PrintAndLogEx(SUCCESS, "NDEF data:"); dump_buffer(data, datalen, stdout, 1); } diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index f39ba5c2e..36e847fa1 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1423,63 +1423,61 @@ static int CmdHFMFPNDEF(const char *Cmd) { uint8_t data[4096] = {0}; int datalen = 0; - PrintAndLogEx(NORMAL, ""); - if (mfpReadSector(MF_MAD1_SECTOR, MF_KEY_A, (uint8_t *)g_mifarep_mad_key, sector0, verbose)) { - PrintAndLogEx(ERR, "read sector 0 error. card don't have MAD or don't have MAD on default keys."); - return 2; + PrintAndLogEx(ERR, "error, read sector 0. card don't have MAD or don't have MAD on default keys"); + return PM3_ESOFT; } bool haveMAD2 = false; int res = MADCheck(sector0, NULL, verbose, &haveMAD2); - if (res) { - PrintAndLogEx(ERR, "MAD error %d.", res); + if (res != PM3_SUCCESS) { + PrintAndLogEx(ERR, "MAD error %d", res); return res; } if (haveMAD2) { if (mfpReadSector(MF_MAD2_SECTOR, MF_KEY_A, (uint8_t *)g_mifarep_mad_key, sector10, verbose)) { - PrintAndLogEx(ERR, "read sector 0x10 error. card don't have MAD or don't have MAD on default keys."); - return 2; + PrintAndLogEx(ERR, "error, read sector 0x10. card don't have MAD or don't have MAD on default keys"); + return PM3_ESOFT; } } uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; - if (MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen)) { - PrintAndLogEx(ERR, "can't decode mad."); - return 10; + res = MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen); + if (res != PM3_SUCCESS) { + PrintAndLogEx(ERR, "can't decode MAD"); + return res; } - printf("data reading:"); + PrintAndLogEx(INFO, "data reading:"); for (int i = 0; i < madlen; i++) { if (ndefAID == mad[i]) { uint8_t vsector[16 * 4] = {0}; if (mfpReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, ndefkey, vsector, false)) { - PrintAndLogEx(ERR, "read sector %d error.", i + 1); - return 2; + PrintAndLogEx(ERR, "error, reading sector %d", i + 1); + return PM3_ESOFT; } memcpy(&data[datalen], vsector, 16 * 3); datalen += 16 * 3; - printf("."); + PrintAndLogEx(INPLACE, "."); } } - printf(" OK\n"); + PrintAndLogEx(NORMAL, ""); if (!datalen) { - PrintAndLogEx(ERR, "no NDEF data."); - return 11; + PrintAndLogEx(ERR, "no NDEF data"); + return PM3_SUCCESS; } if (verbose2) { - PrintAndLogEx(NORMAL, "NDEF data:"); + PrintAndLogEx(INFO, "NDEF data:"); dump_buffer(data, datalen, stdout, 1); } NDEFDecodeAndPrint(data, datalen, verbose); - return PM3_SUCCESS; } diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index ffacba3a7..47240b6f2 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -11,7 +11,7 @@ #include "mad.h" #include "ui.h" #include "commonutil.h" // ARRAYLEN - +#include "pm3_cmd.h" #include "crc.h" #include "util.h" @@ -110,21 +110,20 @@ static const char *GetAIDDescription(uint16_t AID) { } static int madCRCCheck(uint8_t *sector, bool verbose, int MADver) { - if (MADver == 1) { + if (MADver == 2) { uint8_t crc = CRC8Mad(§or[16 + 1], 15 + 16); if (crc != sector[16]) { - PrintAndLogEx(WARNING, "Wrong MAD%d CRC. Calculated: 0x%02x, from card: 0x%02x", MADver, crc, sector[16]); - return 3; + PrintAndLogEx(WARNING, _RED_("Wrong MAD %d CRC") " calculated: 0x%02x != 0x%02x", MADver, crc, sector[16]); + return PM3_ESOFT; }; } else { uint8_t crc = CRC8Mad(§or[1], 15 + 16 + 16); if (crc != sector[0]) { - PrintAndLogEx(WARNING, "Wrong MAD%d CRC. Calculated: 0x%02x, from card: 0x%02x", MADver, crc, sector[16]); - return 3; + PrintAndLogEx(WARNING, _RED_("Wrong MAD %d CRC") " calculated: 0x%02x != 0x%02x", MADver, crc, sector[16]); + return PM3_ESOFT; }; } - - return 0; + return PM3_SUCCESS; } static uint16_t madGetAID(uint8_t *sector, int MADver, int sectorNo) { @@ -135,54 +134,53 @@ static uint16_t madGetAID(uint8_t *sector, int MADver, int sectorNo) { } int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) { - int res = 0; - if (!sector0) - return 1; + if (sector0 == NULL) + return PM3_EINVARG; uint8_t GPB = sector0[3 * 16 + 9]; if (verbose) - PrintAndLogEx(NORMAL, "GPB: 0x%02x", GPB); + PrintAndLogEx(INFO, "GPB: 0x%02x", GPB); // DA (MAD available) if (!(GPB & 0x80)) { PrintAndLogEx(ERR, "DA=0! MAD not available."); - return 1; + return PM3_ESOFT; } // MA (multi-application card) if (verbose) { if (GPB & 0x40) - PrintAndLogEx(NORMAL, "Multi application card."); + PrintAndLogEx(INFO, "Multi application card."); else - PrintAndLogEx(NORMAL, "Single application card."); + PrintAndLogEx(INFO, "Single application card."); } uint8_t MADVer = GPB & 0x03; if (verbose) - PrintAndLogEx(NORMAL, "MAD version: %d", MADVer); + PrintAndLogEx(INFO, "MAD version: %d", MADVer); // MAD version if ((MADVer != 0x01) && (MADVer != 0x02)) { PrintAndLogEx(ERR, "Wrong MAD version: 0x%02x", MADVer); - return 2; + return PM3_ESOFT; }; if (haveMAD2) *haveMAD2 = (MADVer == 2); - res = madCRCCheck(sector0, true, 1); + int res = madCRCCheck(sector0, true, 1); - if (verbose && !res) - PrintAndLogEx(NORMAL, "CRC8-MAD1 OK."); + if (verbose && res == PM3_SUCCESS) + PrintAndLogEx(INFO, "CRC8-MAD1 (%s)", _GREEN_("ok")); if (MADVer == 2 && sector10) { int res2 = madCRCCheck(sector10, true, 2); - if (!res) + if (res == PM3_SUCCESS) res = res2; if (verbose && !res2) - PrintAndLogEx(NORMAL, "CRC8-MAD2 OK."); + PrintAndLogEx(INFO, "CRC8-MAD2 (%)", _GREEN_("ok")); } return res; @@ -191,7 +189,11 @@ int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen) { *madlen = 0; bool haveMAD2 = false; - MADCheck(sector0, sector10, false, &haveMAD2); + int res = MADCheck(sector0, sector10, false, &haveMAD2); + if (res != PM3_SUCCESS) { + PrintAndLogEx(INFO, "Not a valid MAD"); + return res; + } for (int i = 1; i < 16; i++) { mad[*madlen] = madGetAID(sector0, 1, i); @@ -208,51 +210,63 @@ int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen (*madlen)++; } } - - return 0; + return PM3_SUCCESS; } - int MAD1DecodeAndPrint(uint8_t *sector, bool verbose, bool *haveMAD2) { // check MAD1 only - MADCheck(sector, NULL, verbose, haveMAD2); + int res = MADCheck(sector, NULL, verbose, haveMAD2); + if (verbose) { + if (res == PM3_SUCCESS) + PrintAndLogEx(INFO, "CRC8-MAD1 (%s)", _GREEN_("ok")); + else + PrintAndLogEx(INFO, "CRC8-MAD1 (%s)", _RED_("fail")); + } // info byte uint8_t InfoByte = sector[16 + 1] & 0x3f; if (InfoByte) { - PrintAndLogEx(NORMAL, "Card publisher sector: 0x%02x", InfoByte); + PrintAndLogEx(INFO, "Card publisher sector: " _GREEN_("0x%02x"), InfoByte); } else { if (verbose) - PrintAndLogEx(NORMAL, "Card publisher sector not present."); + PrintAndLogEx(WARNING, "Card publisher sector not present"); } if (InfoByte == 0x10 || InfoByte >= 0x28) PrintAndLogEx(WARNING, "Info byte error"); - PrintAndLogEx(NORMAL, "00 MAD1"); + PrintAndLogEx(INFO, " 00 MAD 1"); for (int i = 1; i < 16; i++) { uint16_t AID = madGetAID(sector, 1, i); - PrintAndLogEx(NORMAL, "%02d [%04X] %s", i, AID, GetAIDDescription(AID)); - }; + PrintAndLogEx(INFO, " %02d [%04X] %s", i, AID, GetAIDDescription(AID)); + } - return 0; + return PM3_SUCCESS; } int MAD2DecodeAndPrint(uint8_t *sector, bool verbose) { - PrintAndLogEx(NORMAL, "16 MAD2"); + PrintAndLogEx(INFO, " 16 MAD 2"); int res = madCRCCheck(sector, true, 2); - - if (verbose && !res) - PrintAndLogEx(NORMAL, "CRC8-MAD2 OK."); + if (verbose) { + if (res == PM3_SUCCESS) + PrintAndLogEx(INFO, "CRC8-MAD2 (%s)", _GREEN_("ok")); + else + PrintAndLogEx(INFO, "CRC8-MAD2 (%s)", _RED_("fail")); + } uint8_t InfoByte = sector[1] & 0x3f; - PrintAndLogEx(NORMAL, "MAD2 Card publisher sector: 0x%02x", InfoByte); + if (InfoByte) { + PrintAndLogEx(INFO, "MAD2 Card publisher sector: " _GREEN_("0x%02x"), InfoByte); + } else { + if (verbose) + PrintAndLogEx(WARNING, "Card publisher sector not present"); + } for (int i = 1; i < 8 + 8 + 7 + 1; i++) { uint16_t AID = madGetAID(sector, 2, i); - PrintAndLogEx(NORMAL, "%02d [%04X] %s", i + 16, AID, GetAIDDescription(AID)); - }; + PrintAndLogEx(INFO, "%02d [%04X] %s", i + 16, AID, GetAIDDescription(AID)); + } - return 0; + return PM3_SUCCESS; } From 849be2376ca81f3a4139316c1aa23a2238aea808 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 09:19:25 +0200 Subject: [PATCH 350/527] textual --- client/src/cmdhf14a.c | 60 +++++++++++++++++++++++++++---------------- 1 file changed, 38 insertions(+), 22 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index baa2c66cf..7703fe849 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -1256,7 +1256,7 @@ int CmdHF14A(const char *Cmd) { } static void printTag(const char *tag) { - PrintAndLogEx(SUCCESS, "POSSIBLE TYPE:" _YELLOW_(" %s"), tag); + PrintAndLogEx(SUCCESS, " " _YELLOW_("%s"), tag); } @@ -1274,6 +1274,8 @@ typedef enum { static int detect_nxp_card(uint8_t sak, uint16_t atqa) { int type = MTNONE; + PrintAndLogEx(SUCCESS, "Possible types:"); + if (sak == 0x00) { printTag("NTAG 20x / 21x / 21x TT / I2C plus"); printTag("MIFARE Ultralight / C / EV1 / Nano"); @@ -1284,10 +1286,12 @@ static int detect_nxp_card(uint8_t sak, uint16_t atqa) { printTag("TNP3xxx (Activision Game Appliance)"); type = MTCLASSIC; } + if ((sak & 0x04) == 0x04) { printTag("Any MIFARE CL1 / NTAG424DNA"); type |= MTDESFIRE; } + if ((sak & 0x08) == 0x08) { printTag("MIFARE Classic 1K / Classic 1K CL2"); printTag("MIFARE Plus 2K / Plus EV1 2K"); @@ -1295,18 +1299,22 @@ static int detect_nxp_card(uint8_t sak, uint16_t atqa) { type |= MTCLASSIC; type |= MTPLUS; } + if ((sak & 0x09) == 0x09) { printTag("MIFARE Mini 0.3K / Mini CL2 0.3K"); type |= MTMINI; } + if ((sak & 0x10) == 0x10) { printTag("MIFARE Plus 2K / Plus CL2 2K"); type |= MTPLUS; } + if ((sak & 0x11) == 0x11) { printTag("MIFARE Plus 4K / Plus CL2 4K"); type |= MTPLUS; } + if ((sak & 0x18) == 0x18) { if (atqa == 0x0042) { printTag("MIFARE Plus 4K / Plus EV1 4K"); @@ -1316,8 +1324,8 @@ static int detect_nxp_card(uint8_t sak, uint16_t atqa) { printTag("MIFARE Classic 4K / Classic 4K CL2"); type |= MTCLASSIC; } - } + if ((sak & 0x20) == 0x20) { if (atqa == 0x0344) { printTag("MIFARE DESFire EV1 2K/4K/8K / DESFire EV1 CL2 2K/4K/8K"); @@ -1332,18 +1340,25 @@ static int detect_nxp_card(uint8_t sak, uint16_t atqa) { type |= MTPLUS; } } + if ((sak & 0x24) == 0x24) { if (atqa == 0x0344) { printTag("MIFARE DESFire CL1 / DESFire EV1 CL1"); type |= MTDESFIRE; } } + if ((sak & 0x28) == 0x28) { if (atqa == 0x0344) { printTag("MIFARE DESFire CL1 / DESFire EV1 CL1"); type |= MTDESFIRE; } } + + if (type == MTNONE) { + PrintAndLogEx(WARNING, " failed to fingerprint"); + } + return type; } @@ -1351,9 +1366,9 @@ typedef struct { uint8_t uid0; uint8_t uid1; const char *desc; -} uidname; +} uid_label_name; -const uidname uidmap[] = { +const uid_label_name uid_label_map[] = { // UID0, UID1, TEXT {0x02, 0x84, "M24SR64-Y"}, {0x02, 0xA3, "25TA02KB-P"}, @@ -1367,14 +1382,13 @@ const uidname uidmap[] = { static void getTagLabel(uint8_t uid0, uint8_t uid1) { int i = 0; - while (uidmap[i].uid0 != 0x00) { - if ((uidmap[i].uid0 == uid0) && (uidmap[i].uid1 == uid1)) { - PrintAndLogEx(SUCCESS, _YELLOW_(" %s"), uidmap[i].desc); + while (uid_label_map[i].uid0 != 0x00) { + if ((uid_label_map[i].uid0 == uid0) && (uid_label_map[i].uid1 == uid1)) { + PrintAndLogEx(SUCCESS, _YELLOW_(" %s"), uid_label_map[i].desc); return; } i += 1; } - return; } int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { @@ -1414,7 +1428,7 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { } if (verbose) { - PrintAndLogEx(SUCCESS, "-- ISO14443-a Information -----------------------------------"); + PrintAndLogEx(SUCCESS, "------ " _CYAN_("ISO14443-a Information") "------------------"); PrintAndLogEx(SUCCESS, "-------------------------------------------------------------"); } PrintAndLogEx(SUCCESS, " UID: " _GREEN_("%s"), sprint_hex(card.uid, card.uidlen)); @@ -1426,7 +1440,7 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { bool isMifarePlus = false; bool isMifareUltralight = false; int nxptype = MTNONE; - // Double & triple sized UID, can be mapped to a manufacturer. + if (card.uidlen <= 4) { nxptype = detect_nxp_card(card.sak, ((card.atqa[1] << 8) + card.atqa[0])); @@ -1437,9 +1451,12 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { if ((nxptype & MTOTHER) == MTOTHER) isMifareClassic = true; - } - if (card.uidlen > 4) { + + } else { + + // Double & triple sized UID, can be mapped to a manufacturer. PrintAndLogEx(SUCCESS, "MANUFACTURER: " _YELLOW_("%s"), getTagInfo(card.uid[0])); + switch (card.uid[0]) { case 0x04: // NXP nxptype = detect_nxp_card(card.sak, ((card.atqa[1] << 8) + card.atqa[0])); @@ -1756,16 +1773,6 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { PrintAndLogEx(INFO, "proprietary non iso14443-4 card found, RATS not supported"); } - if (isMifareUltralight) { - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf mfu info`")); - } - if (isMifarePlus) { - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf mfp info`")); - } - if (isMifareDESFire) { - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf mfdes info`")); - } - if (isMifareClassic || isMifareUltralight) { detect_classic_magic(); @@ -1790,6 +1797,15 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { } } + if (isMifareUltralight) + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf mfu info`")); + + if (isMifarePlus) + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf mfp info`")); + + if (isMifareDESFire) + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf mfdes info`")); + DropField(); return select_status; } From d12606cb26b5ad5b3bb6cd27e173c3d7fbe10d4d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 11:14:40 +0200 Subject: [PATCH 351/527] reverse crc check --- client/src/mifare/mad.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index 9e8974365..a746406c5 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -110,7 +110,7 @@ static const char *GetAIDDescription(uint16_t AID) { } static int madCRCCheck(uint8_t *sector, bool verbose, int MADver) { - if (MADver == 2) { + if (MADver == 1) { uint8_t crc = CRC8Mad(§or[16 + 1], 15 + 16); if (crc != sector[16]) { PrintAndLogEx(WARNING, _RED_("Wrong MAD %d CRC") " calculated: 0x%02x != 0x%02x", MADver, crc, sector[16]); From 5b10df9b4cfba25a0aafce48e849913f81305f52 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 11:32:19 +0200 Subject: [PATCH 352/527] textual --- client/src/cmdhfmf.c | 15 +++++++++------ client/src/cmdhfmfp.c | 17 ++++++++++------- client/src/mifare/mad.c | 34 ++++++++++++++-------------------- 3 files changed, 33 insertions(+), 33 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index b3ccbbe3b..24a7c9844 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4499,6 +4499,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { arg_str0("aA", "aid", "print all sectors with specified aid", NULL), arg_str0("kK", "key", "key for printing sectors", NULL), arg_lit0("bB", "keyb", "use key B for access printing sectors (by default: key A)"), + arg_lit0("", "be", "(optional, try BigEndian"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -4510,23 +4511,25 @@ static int CmdHF14AMfMAD(const char *Cmd) { int keylen; CLIGetHexWithReturn(ctx, 3, key, &keylen); bool keyB = arg_get_lit(4); +// bool use_be = arg_get_lit(5); CLIParserFree(ctx); if (aidlen != 2 && keylen > 0) { - PrintAndLogEx(WARNING, "do not need a key without aid."); + PrintAndLogEx(WARNING, "do not need a key without aid"); } uint8_t sector0[16 * 4] = {0}; uint8_t sector10[16 * 4] = {0}; if (mfReadSector(MF_MAD1_SECTOR, MF_KEY_A, (uint8_t *)g_mifare_mad_key, sector0)) { - PrintAndLogEx(ERR, "read sector 0 error. card don't have MAD or don't have MAD on default keys."); + PrintAndLogEx(ERR, "error, read sector 0. card don't have MAD or don't have MAD on default keys"); return PM3_ESOFT; } if (verbose) { + PrintAndLogEx(SUCCESS, "Raw:"); for (int i = 0; i < 4; i ++) - PrintAndLogEx(NORMAL, "[%d] %s", i, sprint_hex(§or0[i * 16], 16)); + PrintAndLogEx(INFO, "[%d] %s", i, sprint_hex(§or0[i * 16], 16)); } bool haveMAD2 = false; @@ -4534,7 +4537,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { if (haveMAD2) { if (mfReadSector(MF_MAD2_SECTOR, MF_KEY_A, (uint8_t *)g_mifare_mad_key, sector10)) { - PrintAndLogEx(ERR, "read sector 0x10 error. card don't have MAD or don't have MAD on default keys."); + PrintAndLogEx(ERR, "error, read sector 0x10. card don't have MAD or don't have MAD on default keys"); return PM3_ESOFT; } @@ -4548,7 +4551,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; if (MADDecode(sector0, sector10, mad, &madlen)) { - PrintAndLogEx(ERR, "can't decode mad."); + PrintAndLogEx(ERR, "can't decode MAD"); return PM3_ESOFT; } @@ -4563,7 +4566,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { uint8_t vsector[16 * 4] = {0}; if (mfReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, akey, vsector)) { PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(ERR, "read sector %d error.", i + 1); + PrintAndLogEx(ERR, "error, read sector %d", i + 1); return PM3_ESOFT; } diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 36e847fa1..b4cf4907f 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1297,6 +1297,7 @@ static int CmdHFMFPMAD(const char *Cmd) { arg_str0("aA", "aid", "print all sectors with aid", NULL), arg_str0("kK", "key", "key for printing sectors", NULL), arg_lit0("bB", "keyb", "use key B for access printing sectors (by default: key A)"), + arg_lit0("", "be", "(optional, try BigEndian"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -1309,11 +1310,12 @@ static int CmdHFMFPMAD(const char *Cmd) { int keylen; CLIGetHexWithReturn(ctx, 3, key, &keylen); bool keyB = arg_get_lit(4); +// bool use_be = arg_get_lit(5); CLIParserFree(ctx); if (aidlen != 2 && keylen > 0) { - PrintAndLogEx(WARNING, "do not need a key without aid."); + PrintAndLogEx(WARNING, "do not need a key without aid"); } uint8_t sector0[16 * 4] = {0}; @@ -1321,13 +1323,14 @@ static int CmdHFMFPMAD(const char *Cmd) { if (mfpReadSector(MF_MAD1_SECTOR, MF_KEY_A, (uint8_t *)g_mifarep_mad_key, sector0, verbose)) { PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(ERR, "read sector 0 error. card don't have MAD or don't have MAD on default keys."); + PrintAndLogEx(ERR, "error, read sector 0. card don't have MAD or don't have MAD on default keys"); return 2; } if (verbose) { + PrintAndLogEx(SUCCESS, "Raw:"); for (int i = 0; i < 4; i ++) - PrintAndLogEx(NORMAL, "[%d] %s", i, sprint_hex(§or0[i * 16], 16)); + PrintAndLogEx(INFO, "[%d] %s", i, sprint_hex(§or0[i * 16], 16)); } bool haveMAD2 = false; @@ -1336,7 +1339,7 @@ static int CmdHFMFPMAD(const char *Cmd) { if (haveMAD2) { if (mfpReadSector(MF_MAD2_SECTOR, MF_KEY_A, (uint8_t *)g_mifarep_mad_key, sector10, verbose)) { PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(ERR, "read sector 0x10 error. card don't have MAD or don't have MAD on default keys."); + PrintAndLogEx(ERR, "error, read sector 0x10. card don't have MAD or don't have MAD on default keys"); return 2; } @@ -1345,12 +1348,12 @@ static int CmdHFMFPMAD(const char *Cmd) { if (aidlen == 2) { uint16_t aaid = (aid[0] << 8) + aid[1]; - PrintAndLogEx(NORMAL, "\n-------------- AID 0x%04x ---------------", aaid); + PrintAndLogEx(INFO, "-------------- " _CYAN_("AID 0x%04x") " ---------------", aaid); uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; if (MADDecode(sector0, sector10, mad, &madlen)) { - PrintAndLogEx(ERR, "can't decode mad."); + PrintAndLogEx(ERR, "can't decode MAD"); return 10; } @@ -1365,7 +1368,7 @@ static int CmdHFMFPMAD(const char *Cmd) { uint8_t vsector[16 * 4] = {0}; if (mfpReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, akey, vsector, false)) { PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(ERR, "read sector %d error.", i + 1); + PrintAndLogEx(ERR, "error, read sector %d error", i + 1); return 2; } diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index a746406c5..9887f0a77 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -140,29 +140,29 @@ int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) uint8_t GPB = sector0[3 * 16 + 9]; if (verbose) - PrintAndLogEx(INFO, "GPB: 0x%02x", GPB); + PrintAndLogEx(SUCCESS, "GPB: " _GREEN_("0x%02x"), GPB); // DA (MAD available) if (!(GPB & 0x80)) { - PrintAndLogEx(ERR, "DA=0! MAD not available."); + PrintAndLogEx(ERR, "DA = 0! MAD not available"); return PM3_ESOFT; } // MA (multi-application card) if (verbose) { if (GPB & 0x40) - PrintAndLogEx(INFO, "Multi application card."); + PrintAndLogEx(SUCCESS, "Multi application card"); else - PrintAndLogEx(INFO, "Single application card."); + PrintAndLogEx(SUCCESS, "Single application card"); } uint8_t MADVer = GPB & 0x03; if (verbose) - PrintAndLogEx(INFO, "MAD version: %d", MADVer); + PrintAndLogEx(SUCCESS, "MAD version: " _GREEN_("%d"), MADVer); // MAD version if ((MADVer != 0x01) && (MADVer != 0x02)) { - PrintAndLogEx(ERR, "Wrong MAD version: 0x%02x", MADVer); + PrintAndLogEx(ERR, "Wrong MAD version: " _RED_("0x%02x"), MADVer); return PM3_ESOFT; }; @@ -172,7 +172,7 @@ int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) int res = madCRCCheck(sector0, true, 1); if (verbose && res == PM3_SUCCESS) - PrintAndLogEx(INFO, "CRC8-MAD1 (%s)", _GREEN_("ok")); + PrintAndLogEx(SUCCESS, "CRC8-MAD1 (%s)", _GREEN_("ok")); if (MADVer == 2 && sector10) { int res2 = madCRCCheck(sector10, true, 2); @@ -180,7 +180,7 @@ int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) res = res2; if (verbose && !res2) - PrintAndLogEx(INFO, "CRC8-MAD2 (%)", _GREEN_("ok")); + PrintAndLogEx(SUCCESS, "CRC8-MAD2 (%)", _GREEN_("ok")); } return res; @@ -191,7 +191,7 @@ int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen bool haveMAD2 = false; int res = MADCheck(sector0, sector10, false, &haveMAD2); if (res != PM3_SUCCESS) { - PrintAndLogEx(INFO, "Not a valid MAD"); + PrintAndLogEx(WARNING, "Not a valid MAD"); return res; } @@ -216,18 +216,12 @@ int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen int MAD1DecodeAndPrint(uint8_t *sector, bool verbose, bool *haveMAD2) { // check MAD1 only - int res = MADCheck(sector, NULL, verbose, haveMAD2); - if (verbose) { - if (res == PM3_SUCCESS) - PrintAndLogEx(INFO, "CRC8-MAD1 (%s)", _GREEN_("ok")); - else - PrintAndLogEx(INFO, "CRC8-MAD1 (%s)", _RED_("fail")); - } + MADCheck(sector, NULL, verbose, haveMAD2); // info byte uint8_t InfoByte = sector[16 + 1] & 0x3f; if (InfoByte) { - PrintAndLogEx(INFO, "Card publisher sector: " _GREEN_("0x%02x"), InfoByte); + PrintAndLogEx(SUCCESS, "Card publisher sector: " _GREEN_("0x%02x"), InfoByte); } else { if (verbose) PrintAndLogEx(WARNING, "Card publisher sector not present"); @@ -250,14 +244,14 @@ int MAD2DecodeAndPrint(uint8_t *sector, bool verbose) { int res = madCRCCheck(sector, true, 2); if (verbose) { if (res == PM3_SUCCESS) - PrintAndLogEx(INFO, "CRC8-MAD2 (%s)", _GREEN_("ok")); + PrintAndLogEx(SUCCESS, "CRC8-MAD2 (%s)", _GREEN_("ok")); else - PrintAndLogEx(INFO, "CRC8-MAD2 (%s)", _RED_("fail")); + PrintAndLogEx(WARNING, "CRC8-MAD2 (%s)", _RED_("fail")); } uint8_t InfoByte = sector[1] & 0x3f; if (InfoByte) { - PrintAndLogEx(INFO, "MAD2 Card publisher sector: " _GREEN_("0x%02x"), InfoByte); + PrintAndLogEx(SUCCESS, "MAD2 Card publisher sector: " _GREEN_("0x%02x"), InfoByte); } else { if (verbose) PrintAndLogEx(WARNING, "Card publisher sector not present"); From bfc6a2c513ec0efb795588ba35f6f075137eb48c Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 13:31:09 +0200 Subject: [PATCH 353/527] add: a MAD Directory in json --- client/resources/mad.json | 13547 ++++++++++++++++++++++++++++++++++++ 1 file changed, 13547 insertions(+) create mode 100644 client/resources/mad.json diff --git a/client/resources/mad.json b/client/resources/mad.json new file mode 100644 index 000000000..7911599f2 --- /dev/null +++ b/client/resources/mad.json @@ -0,0 +1,13547 @@ +[ + { + "application": "Card holders personal data", + "company": "Rosan Finance", + "mad": "0x0004", + "service_provider": "", + "system_integrator": "Rosan Finance" + }, + { + "application": "Card ID: ISO No., expiry date and other identification data", + "company": "Rosan Finance", + "mad": "0x0005", + "service_provider": "Rosan Finance", + "system_integrator": "Rosan Finance" + }, + { + "application": "Private Rovalty programs, discount programs for card holders", + "company": "Rosan Finance", + "mad": "0x0006", + "service_provider": "Retail Trade and Service Org.", + "system_integrator": "Rosan Finance" + }, + { + "application": "Card Holder Data/ Card Management Data/ Access Control & Security", + "company": "House of Representatives of States General", + "mad": "0x0007", + "service_provider": "House of Representatives of States General", + "system_integrator": "Paul Sas" + }, + { + "application": "Card Holder Data/ Card Management Data/ Access Control & Security", + "company": "House of Representatives of States General", + "mad": "0x0008", + "service_provider": "House of Representatives of States General", + "system_integrator": "Paul Sas" + }, + { + "application": "Card and Reader Configuration", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x0009", + "service_provider": "PBV Kaufmann AG", + "system_integrator": "PBV Kaufmann AG" + }, + { + "application": "Card and Reader Configuration", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x000A", + "service_provider": "PBV Kaufmann AG", + "system_integrator": "PBV Kaufmann AG" + }, + { + "application": "Card and Reader Configuration", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x000B", + "service_provider": "PBV Kaufmann AG", + "system_integrator": "PBV Kaufmann AG" + }, + { + "application": "Card and Reader Configuration", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x000C", + "service_provider": "PBV Kaufmann AG", + "system_integrator": "PBV Kaufmann AG" + }, + { + "application": "Access Control, payment, ID, time registration", + "company": "Sagio A/S", + "mad": "0x000F", + "service_provider": "Sagio A/S", + "system_integrator": "Sagio A/S" + }, + { + "application": "Card administration", + "company": "Emcard a.s.", + "mad": "0x0010", + "service_provider": "EMCARD, a.s.", + "system_integrator": "EMTEST, a.s." + }, + { + "application": "Card publisher data", + "company": "Haguess s.r.o.", + "mad": "0x0011", + "service_provider": "Haguess", + "system_integrator": "Haguess" + }, + { + "application": "Card publisher data", + "company": "Haguess s.r.o.", + "mad": "0x0012", + "service_provider": "Haguess", + "system_integrator": "Haguess" + }, + { + "application": "Card publisher data", + "company": "Haguess s.r.o.", + "mad": "0x0013", + "service_provider": "Haguess", + "system_integrator": "Haguess" + }, + { + "application": "Card publisher data", + "company": "Haguess s.r.o.", + "mad": "0x0014", + "service_provider": "Haguess", + "system_integrator": "Haguess" + }, + { + "application": "Card publisher information", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x0015", + "service_provider": "MIKROELEKTRONIKA spol.s.v.o.", + "system_integrator": "MIKROELEKTRONIKA spol.s.v.o." + }, + { + "application": "Issuer information", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x0016", + "service_provider": "Mikroelektronika spol.s.r.o., Kpt. Poplera 55, Vysoke Myto 566 01, Czech Republic", + "system_integrator": "Mikroelektronika spol.s.r.o., Kpt. Poplera 55, Vysoke Myto 566 01, Czech Republic" + }, + { + "application": "Personal information", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x0017", + "service_provider": "Transmetro Guatemala", + "system_integrator": "SIEMENS Itron Business services S.A. - Cordoba, Rep. Argentina" + }, + { + "application": "Customer profile - card holder information", + "company": "CSAD SVT Praha", + "mad": "0x0018", + "service_provider": "", + "system_integrator": "Mikroelektronika, EMTEST" + }, + { + "application": "Card information - provider, status, validity", + "company": "CSAD SVT Praha", + "mad": "0x0019", + "service_provider": "", + "system_integrator": "Mikroelektronika, EMTEST" + }, + { + "application": "Access control", + "company": "Custom Micro Products Ltd.", + "mad": "0x001B", + "service_provider": "Custom Micro Products", + "system_integrator": "Custom Micro Products" + }, + { + "application": "Interoperable Contactless Card for multimode transport in the area of Arava Province and the city of Vitoria-Gasteiz", + "company": "Eusko Tren", + "mad": "0x001D", + "service_provider": "Idom Ingeniera y Consultoria, S.A.", + "system_integrator": "Idom Ingeniera y Consultoria, S.A." + }, + { + "application": "Interoperable Contactless Card for multimode transport in the area of Arava Province and the city of Vitoria-Gasteiz", + "company": "Eusko Tren", + "mad": "0x001E", + "service_provider": "Idom Ingeniera y Consultoria, S.A.", + "system_integrator": "Idom Ingeniera y Consultoria, S.A." + }, + { + "application": "Interoperable Contactless Card for multimode transport in the area of Arava Province and the city of Vitoria-Gasteiz", + "company": "Eusko Tren", + "mad": "0x001F", + "service_provider": "Idom Ingeniera y Consultoria, S.A.", + "system_integrator": "Idom Ingeniera y Consultoria, S.A." + }, + { + "application": "Interoperable Contactless Card for multimode transport in the area of Arava Province and the city of Vitoria-Gasteiz", + "company": "Eusko Tren", + "mad": "0x0020", + "service_provider": "Idom Ingeniera y Consultoria, S.A.", + "system_integrator": "Idom Ingeniera y Consultoria, S.A." + }, + { + "application": "Card certificate", + "company": "Tidomat AB", + "mad": "0x0021", + "service_provider": "Tidomat AB", + "system_integrator": "Tidomat AB" + }, + { + "application": "Card administration", + "company": "Emcard a.s.", + "mad": "0x0022", + "service_provider": "Emcard", + "system_integrator": "Emcard" + }, + { + "application": "Interoperable Contactless Card for multimode transport in the area of Bizkaia Province", + "company": "BISCAY TRANSPORT CONSORTIUM - Consorcio de transportes de Bizkaia", + "mad": "0x0023", + "service_provider": "Idom Ingenieria y Consultoria, S.A.", + "system_integrator": "Idom Ingenieria y Consultoria, S.A." + }, + { + "application": "Interoperable Contactless Card for multimode transport in the area of Bizkaia Province", + "company": "BISCAY TRANSPORT CONSORTIUM - Consorcio de transportes de Bizkaia", + "mad": "0x0024", + "service_provider": "Idom Ingenieria y Consultoria, S.A.", + "system_integrator": "Idom Ingenieria y Consultoria, S.A." + }, + { + "application": "Interoperable Contactless Card for multimode transport in the area of Bizkaia Province", + "company": "BISCAY TRANSPORT CONSORTIUM - Consorcio de transportes de Bizkaia", + "mad": "0x0025", + "service_provider": "Idom Ingenieria y Consultoria, S.A.", + "system_integrator": "Idom Ingenieria y Consultoria, S.A." + }, + { + "application": "Interoperable Contactless Card for multimode transport in the area of Bizkaia Province", + "company": "BISCAY TRANSPORT CONSORTIUM - Consorcio de transportes de Bizkaia", + "mad": "0x0026", + "service_provider": "Idom Ingenieria y Consultoria, S.A.", + "system_integrator": "Idom Ingenieria y Consultoria, S.A." + }, + { + "application": "Card publisher data, card holder profile", + "company": "Koordinator ODIS s.r.o.", + "mad": "0x0027", + "service_provider": "KOORDINATOR ODIS s.r.o.", + "system_integrator": "KOORDINATOR ODIS s.r.o." + }, + { + "application": "Card administration for municipal chip card - card issuer (information)", + "company": "Plzeňské Městské Dopravní Podniky A.S.", + "mad": "0x0028", + "service_provider": "Plzeňské Městské Dopravní Podniky A.S.", + "system_integrator": "Plzeňské Městské Dopravní Podniky A.S." + }, + { + "application": "Card information", + "company": "BULL POLSKA Sp. z o.o.", + "mad": "0x0029", + "service_provider": "BULL POLSKA", + "system_integrator": "BULL POLSKA" + }, + { + "application": "Card administration", + "company": "Sportdata SP. Z.0.0.", + "mad": "0x002A", + "service_provider": "Sportdata SP. 2 0.0.", + "system_integrator": "Sportdata SP. 2 0.0." + }, + { + "application": "Card administration; Issuer information", + "company": "ODP-software s.r.o.", + "mad": "0x002B", + "service_provider": "ODP-software", + "system_integrator": "ODP-software" + }, + { + "application": "Card administration; Issuer information", + "company": "ODP-software s.r.o.", + "mad": "0x002C", + "service_provider": "ODP-software", + "system_integrator": "ODP-software" + }, + { + "application": "Card publisher data, card holder profile", + "company": "OREDO s.r.o", + "mad": "0x002D", + "service_provider": "OREDO s.r.o", + "system_integrator": "OREDO s.r.o" + }, + { + "application": "Card publisher data, card holder profile", + "company": "Ústecky kraj", + "mad": "0x002E", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Internal use (Tests, Demos...)", + "company": "Ascom Monétel", + "mad": "0x0101", + "service_provider": "Monétel R&D Fare Collection Systems Departement", + "system_integrator": "Monétel S.A." + }, + { + "application": "Benefit services", + "company": "Scheidt & Bachmann", + "mad": "0x0102", + "service_provider": "Scheidt & Bachmann", + "system_integrator": "Scheidt & Bachmann" + }, + { + "application": "Benefit services", + "company": "Scheidt & Bachmann", + "mad": "0x0103", + "service_provider": "Scheidt & Bachmann", + "system_integrator": "Scheidt & Bachmann" + }, + { + "application": "Benefit services", + "company": "Scheidt & Bachmann", + "mad": "0x0104", + "service_provider": "Scheidt & Bachmann", + "system_integrator": "Scheidt & Bachmann" + }, + { + "application": "Shipping company", + "company": "Scheidt & Bachmann", + "mad": "0x0105", + "service_provider": "Scheidt & Bachmann", + "system_integrator": "Scheidt & Bachmann" + }, + { + "application": "Shipping company", + "company": "Scheidt & Bachmann", + "mad": "0x0106", + "service_provider": "Scheidt & Bachmann", + "system_integrator": "Scheidt & Bachmann" + }, + { + "application": "Shipping company", + "company": "Scheidt & Bachmann", + "mad": "0x0107", + "service_provider": "Scheidt & Bachmann", + "system_integrator": "Scheidt & Bachmann" + }, + { + "application": "Shipping company", + "company": "Scheidt & Bachmann", + "mad": "0x0108", + "service_provider": "Scheidt & Bachmann", + "system_integrator": "Scheidt & Bachmann" + }, + { + "application": "Cure management", + "company": "Scheidt & Bachmann", + "mad": "0x0109", + "service_provider": "Scheidt & Bachmann", + "system_integrator": "Scheidt & Bachmann" + }, + { + "application": "Cure management", + "company": "Scheidt & Bachmann", + "mad": "0x010A", + "service_provider": "Scheidt & Bachmann", + "system_integrator": "Scheidt & Bachmann" + }, + { + "application": "MIFARE Micro Module (MMM) easy test card for antenna calibration", + "company": "Philips Semiconductors Gratkorn GmbH", + "mad": "0x010B", + "service_provider": "Mikron GmbH", + "system_integrator": "Mikron GmbH" + }, + { + "application": "MIFARE Windows Application Demo", + "company": "Philips Semiconductors Gratkorn GmbH", + "mad": "0x010C", + "service_provider": "Mikron GmbH", + "system_integrator": "Mikron GmbH" + }, + { + "application": "MIFARE Windows Application Demo", + "company": "Philips Semiconductors Gratkorn GmbH", + "mad": "0x010D", + "service_provider": "Mikron GmbH", + "system_integrator": "Mikron GmbH" + }, + { + "application": "MIFARE Windows Application Demo", + "company": "Philips Semiconductors Gratkorn GmbH", + "mad": "0x010E", + "service_provider": "Mikron GmbH", + "system_integrator": "Mikron GmbH" + }, + { + "application": "MIFARE Windows Application Demo", + "company": "Philips Semiconductors Gratkorn GmbH", + "mad": "0x010F", + "service_provider": "Mikron GmbH", + "system_integrator": "Mikron GmbH" + }, + { + "application": "MIFARE Windows Application Demo", + "company": "Philips Semiconductors Gratkorn GmbH", + "mad": "0x0110", + "service_provider": "Mikron GmbH", + "system_integrator": "Mikron GmbH" + }, + { + "application": "MIFARE Windows Application Demo", + "company": "Philips Semiconductors Gratkorn GmbH", + "mad": "0x0111", + "service_provider": "Mikron GmbH", + "system_integrator": "Mikron GmbH" + }, + { + "application": "MIFARE Windows Application Demo", + "company": "Philips Semiconductors Gratkorn GmbH", + "mad": "0x0112", + "service_provider": "Mikron GmbH", + "system_integrator": "Mikron GmbH" + }, + { + "application": "Employer indentification card", + "company": "VFJ Technology Pty Ltd", + "mad": "0x0113", + "service_provider": "VFJ Electronics Pty Ltd.", + "system_integrator": "VFJ Electronics PTy Ltd." + }, + { + "application": "City Transport (Metro ticketing, bus ticket)", + "company": "VFJ Technology Pty Ltd", + "mad": "0x0114", + "service_provider": "VFJ Electronic Pty Ltd.", + "system_integrator": "Cubic - VFJ" + }, + { + "application": "Card Administratin, cardholder adminstration, access control & security, company services, miscellaneous applications", + "company": "Ministry of Defense", + "mad": "0x0115", + "service_provider": "Ministry of Defence", + "system_integrator": "" + }, + { + "application": "City transport bus, ferry, administration", + "company": "VFJ Technology Pty Ltd", + "mad": "0x0116", + "service_provider": "VFJ Technology", + "system_integrator": "Cubic - VFJ" + }, + { + "application": "Busticketing System", + "company": "VFJ Technology Pty Ltd", + "mad": "0x0117", + "service_provider": "King Man County Public Traffic", + "system_integrator": "Barouh Electronic Co." + }, + { + "application": "", + "company": "Reserved for MAD", + "mad": "0x0118", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Bus services, access control, diverse (service)", + "company": "IEM - Intenierie Electronique Mecanique S.A.", + "mad": "0x0119", + "service_provider": "IEM SA", + "system_integrator": "IEM SA" + }, + { + "application": "Bus services, access control, diverse (service)", + "company": "IEM - Intenierie Electronique Mecanique S.A.", + "mad": "0x011A", + "service_provider": "IEM SA", + "system_integrator": "IEM SA" + }, + { + "application": "Bus services, access control, diverse (service)", + "company": "IEM - Intenierie Electronique Mecanique S.A.", + "mad": "0x011B", + "service_provider": "IEM SA", + "system_integrator": "IEM SA" + }, + { + "application": "Bus services, access control, diverse (service)", + "company": "IEM - Intenierie Electronique Mecanique S.A.", + "mad": "0x011C", + "service_provider": "IEM SA", + "system_integrator": "IEM SA" + }, + { + "application": "Bus services, access control, diverse (service)", + "company": "IEM - Intenierie Electronique Mecanique S.A.", + "mad": "0x011D", + "service_provider": "IEM SA", + "system_integrator": "IEM SA" + }, + { + "application": "Bus services, access control, diverse (service)", + "company": "IEM - Intenierie Electronique Mecanique S.A.", + "mad": "0x011E", + "service_provider": "IEM SA", + "system_integrator": "IEM SA" + }, + { + "application": "Bus services, access control, diverse (service)", + "company": "IEM - Intenierie Electronique Mecanique S.A.", + "mad": "0x011F", + "service_provider": "IEM SA", + "system_integrator": "IEM SA" + }, + { + "application": "Weighbridge for trucks", + "company": "VFJ Technology Pty Ltd", + "mad": "0x0130", + "service_provider": "Hardware Systems Sales", + "system_integrator": "" + }, + { + "application": "Bus services, access control, diverse (service)", + "company": "IEM - Intenierie Electronique Mecanique S.A.", + "mad": "0x0131", + "service_provider": "IEM SA", + "system_integrator": "IEM SA" + }, + { + "application": "Miscellaneous Application", + "company": "BOSCH Telecom GmbH", + "mad": "0x0140", + "service_provider": "Bosch Telecom GmbH", + "system_integrator": "Bosch Telecom GmbH" + }, + { + "application": "Configuration Master Card for MIFARE reader/writers", + "company": "Integrated Engineering", + "mad": "0x0141", + "service_provider": "IE Holding", + "system_integrator": "IE Holding" + }, + { + "application": "Photo copier controll, access controll, time & attendance", + "company": "Beka Elektronik", + "mad": "0x014B", + "service_provider": "BEKA Elektronik", + "system_integrator": "BEKA Elektronik" + }, + { + "application": "Access control & security, city traffic, sports & entertainment", + "company": "IP Core", + "mad": "0x014C", + "service_provider": "IP Core", + "system_integrator": "IP Core" + }, + { + "application": "E-ticketing", + "company": "highQ Computerlösungen GmbH", + "mad": "0x014D", + "service_provider": "", + "system_integrator": "high Q" + }, + { + "application": "E-ticketing", + "company": "highQ Computerlösungen GmbH", + "mad": "0x014E", + "service_provider": "", + "system_integrator": "high Q" + }, + { + "application": "E-ticketing", + "company": "highQ Computerlösungen GmbH", + "mad": "0x014F", + "service_provider": "", + "system_integrator": "high Q" + }, + { + "application": "E-ticketing", + "company": "highQ Computerlösungen GmbH", + "mad": "0x0150", + "service_provider": "", + "system_integrator": "high Q" + }, + { + "application": "E-ticketing", + "company": "highQ Computerlösungen GmbH", + "mad": "0x0151", + "service_provider": "", + "system_integrator": "high Q" + }, + { + "application": "Admin profile", + "company": "KORID LK, spol. s r.o", + "mad": "0x0153", + "service_provider": "KORID LK, spol.s.r.o.", + "system_integrator": "KORID LK, spol.s.r.o." + }, + { + "application": "Details of the card issuer", + "company": "Scheidt & Bachmann", + "mad": "0x0201", + "service_provider": "Scheidt & Bachmann", + "system_integrator": "Scheidt & Bachmann" + }, + { + "application": "Details of the card issuer", + "company": "Scheidt & Bachmann", + "mad": "0x0202", + "service_provider": "Scheidt & Bachmann", + "system_integrator": "Scheidt & Bachmann" + }, + { + "application": "MIFARE Demonstration Software, G&D - F&E Dept.", + "company": "*Giesecke & Devrient GmbH", + "mad": "0x0203", + "service_provider": "G&D", + "system_integrator": "G&D" + }, + { + "application": "MIFARE Demonstration Software, G&D - F&E Dept.", + "company": "*Giesecke & Devrient GmbH", + "mad": "0x0204", + "service_provider": "G&D", + "system_integrator": "G&D" + }, + { + "application": "MIFARE Demonstration Software, G&D - F&E Dept.", + "company": "*Giesecke & Devrient GmbH", + "mad": "0x0205", + "service_provider": "G&D", + "system_integrator": "G&D" + }, + { + "application": "MIFARE Demonstration Software, G&D - F&E Dept.", + "company": "*Giesecke & Devrient GmbH", + "mad": "0x0206", + "service_provider": "G&D", + "system_integrator": "G&D" + }, + { + "application": "Watch service, owner id, electronical service book, messaging system for news", + "company": "Junghans Uhren GmbH", + "mad": "0x0207", + "service_provider": "Junghans Uhren GmbH", + "system_integrator": "" + }, + { + "application": "Card Touch Smart Card Applications", + "company": "Touch Technology International Inc.", + "mad": "0x0208", + "service_provider": "Touch Technology International", + "system_integrator": "Touch Technology International" + }, + { + "application": "Miscellaneous application, city traffic, access controll & security entertainment, car parking, electronic trade", + "company": "KFAP S.A.", + "mad": "0x0209", + "service_provider": "KFPA", + "system_integrator": "KFPA" + }, + { + "application": "Computer, car parking, elec. purse, access control & security", + "company": "DECA Engineering", + "mad": "0x020A", + "service_provider": "Deca Engineering", + "system_integrator": "Deca Engineering" + }, + { + "application": "Social identification no. of card holder", + "company": "Rosan Finance", + "mad": "0x0301", + "service_provider": "Social Protection Org.", + "system_integrator": "Rosan Finance" + }, + { + "application": "Miscellaneous applications: customer profile, card administration", + "company": "ODP-software s.r.o.", + "mad": "0x0302", + "service_provider": "ODP-software", + "system_integrator": "ODP-software" + }, + { + "application": "Miscellaneous applications: customer profile, card administration", + "company": "ODP-software s.r.o.", + "mad": "0x0303", + "service_provider": "ODP-software", + "system_integrator": "ODP-software" + }, + { + "application": "Access Control, payment, ID, time registration", + "company": "Sagio A/S", + "mad": "0x0401", + "service_provider": "Sagio A/S", + "system_integrator": "Sagio A/S" + }, + { + "application": "Multifunctional appplications", + "company": "Braincon Technologies GmbH", + "mad": "0x054D", + "service_provider": "Braincon", + "system_integrator": "Braincon" + }, + { + "application": "Miscellaneous application", + "company": "Ústecky kraj", + "mad": "0x054E", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Miscellaneous application", + "company": "Ústecky kraj", + "mad": "0x054F", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Miscellaneous application", + "company": "Ústecky kraj", + "mad": "0x0550", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Miscellaneous application", + "company": "Ústecky kraj", + "mad": "0x0551", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Miscellaneous application", + "company": "Ústecky kraj", + "mad": "0x0552", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Miscellaneous application", + "company": "BULL POLSKA Sp. z o.o.", + "mad": "0x0601", + "service_provider": "BULL POLSKA", + "system_integrator": "BULL POLSKA" + }, + { + "application": "Miscellaneous application", + "company": "BULL POLSKA Sp. z o.o.", + "mad": "0x0602", + "service_provider": "BULL POLSKA", + "system_integrator": "BULL POLSKA" + }, + { + "application": "Card administration", + "company": "MCF RF TECH SRL", + "mad": "0x0701", + "service_provider": "MCF", + "system_integrator": "MCF" + }, + { + "application": "City traffic, electronic purse, micellaneous applications", + "company": "Koordinator ODIS s.r.o.", + "mad": "0x0702", + "service_provider": "Koordinator", + "system_integrator": "PVT" + }, + { + "application": "Access control, electronic purse, parking, city cards", + "company": "ARD", + "mad": "0x0703", + "service_provider": "ARD", + "system_integrator": "ARD" + }, + { + "application": "Company services, access & sec control, electronic purse...", + "company": "Cominfo a.s.", + "mad": "0x0704", + "service_provider": "Cominfo", + "system_integrator": "Cominfo" + }, + { + "application": "Application containing card holder information", + "company": "DOPRAVNI PODNIK mest Mostu a Litvinova, a.s.", + "mad": "0x0705", + "service_provider": "Dopravni Podnik mest Mostu a Litvinova, a.s.", + "system_integrator": "Mikroelektronika, spol. sr. o., Kpt. Poplera 55, 565 01 Vysoké Mýto, CZ" + }, + { + "application": "Service Application containing information about driver and inspector", + "company": "DOPRAVNI PODNIK mest Mostu a Litvinova, a.s.", + "mad": "0x0706", + "service_provider": "Dopravni Podnik mest Mostu a Litvinova, a.s.", + "system_integrator": "Mikroelektronika, spol. sr. o., Kpt. Poplera 55, 565 01 Vysoké Mýto, CZ" + }, + { + "application": "Bonus counter", + "company": "DOPRAVNI PODNIK mest Mostu a Litvinova, a.s.", + "mad": "0x0707", + "service_provider": "Dopravni Podnik mest Mostu a Litvinova, a.s.", + "system_integrator": "Mikroelektronika, spol. sr.o. Kpt. Poplera 55, 565 01 Vysoké Mýto, CZ" + }, + { + "application": "Liberec City Card - loyalty check", + "company": "Liberecká IS, a.s.", + "mad": "0x0708", + "service_provider": "Liverecká IS, a.s.", + "system_integrator": "Accenture Central Europe" + }, + { + "application": "Electronic purse, city traffic, customer profile, service application, check-in/out application", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x0709", + "service_provider": "Mikroelektronika", + "system_integrator": "Mikroelektronika" + }, + { + "application": "Electronic purse, city traffic, customer profile, service application, check-in/out application", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x070A", + "service_provider": "Mikroelektronika", + "system_integrator": "Mikroelektronika" + }, + { + "application": "Bonus Counter", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x070B", + "service_provider": "Mikroelektronika spol s.r.o.", + "system_integrator": "Mikroelektronika spol s.r.o." + }, + { + "application": "Card Administration", + "company": "MCF RF TECH SRL", + "mad": "0x070C", + "service_provider": "MCF RF TECH S.R.L.", + "system_integrator": "MCF RF TECH S.R.L." + }, + { + "application": "Loyalty/Gift Card application for Cinemas, Resorts, Retails chains", + "company": "VERIFONE ITALIA SRL", + "mad": "0x070D", + "service_provider": "VeriFone Italia", + "system_integrator": "VeriFone Italia" + }, + { + "application": "Transaction log 3S", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x070E", + "service_provider": "Transmetro Guatemala", + "system_integrator": "SIEMENS Itron Business services S.A. - Cordoba, Rep. Argentina" + }, + { + "application": "Multifunctional ID card", + "company": "Micros-Fidelio GmbH", + "mad": "0x070F", + "service_provider": "Micros-Fidelio GmbH", + "system_integrator": "Micros-Fidelio GmbH" + }, + { + "application": "Multifunctional ID card", + "company": "Micros-Fidelio GmbH", + "mad": "0x0710", + "service_provider": "Micros-Fidelio GmbH", + "system_integrator": "Micros-Fidelio GmbH" + }, + { + "application": "Multifunctional ID card", + "company": "Micros-Fidelio GmbH", + "mad": "0x0711", + "service_provider": "Micros-Fidelio GmbH", + "system_integrator": "Micros-Fidelio GmbH" + }, + { + "application": "Dedicated to marina users, to improve data consistancy", + "company": "MARINAPASS", + "mad": "0x0712", + "service_provider": "MARINAPASS", + "system_integrator": "Philippe FONTENOY" + }, + { + "application": "Customer profile", + "company": "KORID LK, spol. s r.o", + "mad": "0x0713", + "service_provider": "KORID LK, spol.s.r.o.", + "system_integrator": "KORID LK, spol.s.r.o." + }, + { + "application": "Cashless Payment; access and time control", + "company": "EVIS AG", + "mad": "0x0714", + "service_provider": "EVIS AG", + "system_integrator": "EVIS AG" + }, + { + "application": "Cashless Payment; access and time control", + "company": "EVIS AG", + "mad": "0x0715", + "service_provider": "EVIS AG", + "system_integrator": "EVIS AG" + }, + { + "application": "Cashless Payment; access and time control", + "company": "EVIS AG", + "mad": "0x0716", + "service_provider": "EVIS AG", + "system_integrator": "EVIS AG" + }, + { + "application": "Cashless Payment; access and time control", + "company": "EVIS AG", + "mad": "0x0717", + "service_provider": "EVIS AG", + "system_integrator": "EVIS AG" + }, + { + "application": "Cashless Payment; access and time control", + "company": "EVIS AG", + "mad": "0x0718", + "service_provider": "EVIS AG", + "system_integrator": "EVIS AG" + }, + { + "application": "Cashless Payment; access and time control", + "company": "EVIS AG", + "mad": "0x0719", + "service_provider": "EVIS AG", + "system_integrator": "EVIS AG" + }, + { + "application": "Cashless Payment; access and time control", + "company": "EVIS AG", + "mad": "0x071A", + "service_provider": "EVIS AG", + "system_integrator": "EVIS AG" + }, + { + "application": "Cashless Payment; access and time control", + "company": "EVIS AG", + "mad": "0x071B", + "service_provider": "EVIS AG", + "system_integrator": "EVIS AG" + }, + { + "application": "Customer profile", + "company": "Mikroelektronika GmbH", + "mad": "0x071C", + "service_provider": "MIKROELEKTRONIKA spol.s.r.o., Draby 849, Vysoke Myto 56601, Czech Republic", + "system_integrator": "MIKROELEKTRONIKA spol.s.r.o., Draby 849, Vysoke Myto 56601, Czech Republic" + }, + { + "application": "Customer profile", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x071D", + "service_provider": "ZAGREBACKI Holding d.o.o.", + "system_integrator": "MIKROELEKTRONIKA spol.s.r.o." + }, + { + "application": "Bonus counter", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x071E", + "service_provider": "ZAGREBACKI Holding d.o.o.", + "system_integrator": "MIKROELEKTRONIKA spol.s.r.o." + }, + { + "application": "Authentication of Casino Staff members", + "company": "Atronic Austria GmbH", + "mad": "0x071F", + "service_provider": "ATRONIC Austria GmBH", + "system_integrator": "ATRONIC Austria GmBH" + }, + { + "application": "Authentication of Casino Staff members", + "company": "Atronic Austria GmbH", + "mad": "0x0720", + "service_provider": "ATRONIC Austria GmBH", + "system_integrator": "ATRONIC Austria GmBH" + }, + { + "application": "Operator Card for Automated-Fare Collection System", + "company": "ACS Solutions Switzerland Ltd. a Xerox Company", + "mad": "0x0721", + "service_provider": "ACS Solutions Switzerland Ltd.", + "system_integrator": "ACS Solutions Switzerland Ltd." + }, + { + "application": "Multi-application Card-Access Control, Ticketing payment", + "company": "APPLICAM", + "mad": "0x0722", + "service_provider": "APPLICAM", + "system_integrator": "APPLICAM" + }, + { + "application": "Multi-application Card-Access Control, Ticketing payment", + "company": "APPLICAM", + "mad": "0x0723", + "service_provider": "APPLICAM", + "system_integrator": "APPLICAM" + }, + { + "application": "Multi-application Card-Access Control, Ticketing payment", + "company": "APPLICAM", + "mad": "0x0724", + "service_provider": "APPLICAM", + "system_integrator": "APPLICAM" + }, + { + "application": "Multi-application Card-Access Control, Ticketing payment", + "company": "APPLICAM", + "mad": "0x0725", + "service_provider": "APPLICAM", + "system_integrator": "APPLICAM" + }, + { + "application": "Multi-application Card-Access Control, Ticketing payment", + "company": "APPLICAM", + "mad": "0x0726", + "service_provider": "APPLICAM", + "system_integrator": "APPLICAM" + }, + { + "application": "Multi-application Card-Access Control, Ticketing payment", + "company": "APPLICAM", + "mad": "0x0727", + "service_provider": "APPLICAM", + "system_integrator": "APPLICAM" + }, + { + "application": "Bonus Counter", + "company": "Mikroelektronika GmbH", + "mad": "0x0728", + "service_provider": "MIKROELEKTRONIKA spol.s.r.o.", + "system_integrator": "MIKROELEKTRONIKA spol.s.r.o." + }, + { + "application": "Info-Customer profile", + "company": "Mikroelektronika GmbH", + "mad": "0x0729", + "service_provider": "MIKROELEKTRONIKA spol.s.r.o.", + "system_integrator": "MIKROELEKTRONIKA spol.s.r.o." + }, + { + "application": "Micropayments, access control and gift control", + "company": "METAPAY LTD.", + "mad": "0x072A", + "service_provider": "METAPAY LTD.", + "system_integrator": "EPAM Systems Ltd." + }, + { + "application": "Customer profile", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x072B", + "service_provider": "Mikroelektronika spol.s r.o", + "system_integrator": "Mikroelektronika spol.s r.o" + }, + { + "application": "Biometric data", + "company": "Alphatronics", + "mad": "0x072C", + "service_provider": "", + "system_integrator": "Alphatronics" + }, + { + "application": "Hotel, Access control, entertainement, NFC, Academic, Comoany Service, Healt service", + "company": "USSEN Limited", + "mad": "0x072D", + "service_provider": "Ussen Limited", + "system_integrator": "Ussen Limited" + }, + { + "application": "Gangway Access Control for ships", + "company": "LabelCraft AS", + "mad": "0x072E", + "service_provider": "LabelCraft AS", + "system_integrator": "LabelCraft AS" + }, + { + "application": "Gangway Access Control for ships", + "company": "LabelCraft AS", + "mad": "0x072F", + "service_provider": "LabelCraft AS", + "system_integrator": "LabelCraft AS" + }, + { + "application": "E-ticketing ID card", + "company": "Monet+ a.s.", + "mad": "0x0730", + "service_provider": "Monet+ a.s.", + "system_integrator": "Monet+ a.s." + }, + { + "application": "Europe", + "company": "Monet+ a.s.", + "mad": "0x0731", + "service_provider": "Monet+ a.s.", + "system_integrator": "Monet+ a.s." + }, + { + "application": "Identification card", + "company": "Monet+ a.s.", + "mad": "0x0732", + "service_provider": "Monet+ a.s.", + "system_integrator": "Monet+ a.s." + }, + { + "application": "Access control with point store systems for facility integration purpose", + "company": "Unicard S.A.", + "mad": "0x0733", + "service_provider": "UNICARD S.A.", + "system_integrator": "UNICARD S.A." + }, + { + "application": "Configuration, control and initialization", + "company": "INID BV", + "mad": "0x0734", + "service_provider": "INID", + "system_integrator": "INID" + }, + { + "application": "Public transport sytems. Parking systems. Catering. Electronic wallet. Reservation system. Access services. Attendance services. Industrial identification. City card.", + "company": "Duha systém s.r.o.", + "mad": "0x0735", + "service_provider": "DUHA systém s.r.o.", + "system_integrator": "DUHA systém s.r.o." + }, + { + "application": "Public transport sytems. Parking systems. Catering. Electronic wallet. Reservation system. Access services. Attendance services. Industrial identification. City card.", + "company": "Duha systém s.r.o.", + "mad": "0x0736", + "service_provider": "DUHA systém s.r.o.", + "system_integrator": "DUHA systém s.r.o." + }, + { + "application": "Public transport sytems. Parking systems. Catering. Electronic wallet. Reservation system. Access services. Attendance services. Industrial identification. City card.", + "company": "Duha systém s.r.o.", + "mad": "0x0737", + "service_provider": "DUHA systém s.r.o.", + "system_integrator": "DUHA systém s.r.o." + }, + { + "application": "Public transport sytems. Parking systems. Catering. Electronic wallet. Reservation system. Access services. Attendance services. Industrial identification. City card.", + "company": "Duha systém s.r.o.", + "mad": "0x0738", + "service_provider": "DUHA systém s.r.o.", + "system_integrator": "DUHA systém s.r.o." + }, + { + "application": "Customer profile", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x0739", + "service_provider": "Jamaica Urban Transit Company Ltd", + "system_integrator": "Mikroelektronika spol.s r.o." + }, + { + "application": "Card Holder Information", + "company": "BULL POLSKA Sp. z o.o.", + "mad": "0x073A", + "service_provider": "BULL POLSKA", + "system_integrator": "BULL POLSKA" + }, + { + "application": "PAAC transit services", + "company": "Scheidt & Bachmann GmbH", + "mad": "0x073B", + "service_provider": "Scheidt & Bachmann GmbH", + "system_integrator": "Scheidt & Bachmann GmbH" + }, + { + "application": "Customer loyalty", + "company": "K-Plus Oy", + "mad": "0x073C", + "service_provider": "K-Plus Oy", + "system_integrator": "" + }, + { + "application": "Customer loyalty", + "company": "K-Plus Oy", + "mad": "0x073D", + "service_provider": "K-Plus Oy", + "system_integrator": "" + }, + { + "application": "Customer loyalty", + "company": "K-Plus Oy", + "mad": "0x073E", + "service_provider": "K-Plus Oy", + "system_integrator": "" + }, + { + "application": "Bonus counter", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x073F", + "service_provider": "Jamaica Urban Transit Company Ltd", + "system_integrator": "Mikroelektronika spol.s r.o." + }, + { + "application": "Transaction log 2S", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x0740", + "service_provider": "Mikroelektronika spol.s r.o.", + "system_integrator": "Mikroelektronika spol.s r.o." + }, + { + "application": "JIS", + "company": "eko TIP ID s.r.o", + "mad": "0x0741", + "service_provider": "University of West Bohemia in Pilsen", + "system_integrator": "eko TIP ID s.r.o" + }, + { + "application": "Mobile Ticket/Picticket", + "company": "MATRIX Solutions GmbH & Co.KG", + "mad": "0x0742", + "service_provider": "MATRIX Solutions GmbH & Co.KG", + "system_integrator": "MATRIX Solutions GmbH & Co.KG" + }, + { + "application": "Miscellaneous applications", + "company": "OREDO s.r.o", + "mad": "0x0743", + "service_provider": "OREDO s.r.o", + "system_integrator": "OREDO s.r.o" + }, + { + "application": "Miscellaneous applications", + "company": "OREDO s.r.o", + "mad": "0x0744", + "service_provider": "OREDO s.r.o", + "system_integrator": "OREDO s.r.o" + }, + { + "application": "Miscellaneous applications", + "company": "OREDO s.r.o", + "mad": "0x0745", + "service_provider": "OREDO s.r.o", + "system_integrator": "OREDO s.r.o" + }, + { + "application": "Miscellaneous applications", + "company": "OREDO s.r.o", + "mad": "0x0746", + "service_provider": "OREDO s.r.o", + "system_integrator": "OREDO s.r.o" + }, + { + "application": "Miscellaneous applications", + "company": "OREDO s.r.o", + "mad": "0x0747", + "service_provider": "OREDO s.r.o", + "system_integrator": "OREDO s.r.o" + }, + { + "application": "Public Library User Identification", + "company": "Plasticard-ZFT GmbH", + "mad": "0x0748", + "service_provider": "Plasticard-ZFT GmbH", + "system_integrator": "Bibliotheca RFID Library Systems GmbH" + }, + { + "application": "Multiapplication", + "company": "IMA s.r.o.", + "mad": "0x0749", + "service_provider": "Ima Ltd", + "system_integrator": "" + }, + { + "application": "Supplementary information for other applications - bonus counters, logs", + "company": "TELMAX s.r.o.", + "mad": "0x074A", + "service_provider": "TELMAX s.r.o.", + "system_integrator": "TELMAX s.r.o." + }, + { + "application": "Cafeteria services", + "company": "Netlock Kft.", + "mad": "0x074B", + "service_provider": "Netlock Kft.", + "system_integrator": "Netlock Kft." + }, + { + "application": "Loyalty services", + "company": "Netlock Kft.", + "mad": "0x074C", + "service_provider": "Netlock Kft.", + "system_integrator": "Netlock Kft." + }, + { + "application": "Access control, miscellaneous applications", + "company": "TAGGER SYSTEMS Co Ltd", + "mad": "0x074D", + "service_provider": "TAGGER SYSTEMS Co Ltd", + "system_integrator": "" + }, + { + "application": "Fuel card for International Diesel Sevice", + "company": "Kuwait Petroleum Belgium", + "mad": "0x074E", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Fuel card for International Diesel Sevice", + "company": "Kuwait Petroleum Belgium", + "mad": "0x074F", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Fuel card for International Diesel Sevice", + "company": "Kuwait Petroleum Belgium", + "mad": "0x0750", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Identification for airline related services", + "company": "Lufthansa German Airlines", + "mad": "0x0801", + "service_provider": "Deutsche Lufthansa AG", + "system_integrator": "Deutsche Lufthansa AG" + }, + { + "application": "Airlines", + "company": "KLM-Royal Dutch Airlines", + "mad": "0x0803", + "service_provider": "KLM", + "system_integrator": "KLM" + }, + { + "application": "Ticketing for ferry trafic", + "company": "Pay Vend Solutions", + "mad": "0x0901", + "service_provider": "Payvend Solutions", + "system_integrator": "Payvend Solutions" + }, + { + "application": "Bus services with extension to rail and taxi", + "company": "Questek Marketing", + "mad": "0x1001", + "service_provider": "Questek Marketing", + "system_integrator": "Questek Marketing" + }, + { + "application": "Railway Transit in Moscow region", + "company": "Moscow Railway Federal State Unitary Enterprize", + "mad": "0x1003", + "service_provider": "Moscow railway", + "system_integrator": "Express Card" + }, + { + "application": "Fare collection", + "company": "Tehran Urban & Suburban Railway Co.", + "mad": "0x1004", + "service_provider": "Processing World Corp", + "system_integrator": "Processing World Corp" + }, + { + "application": "Fare collection", + "company": "Ascom", + "mad": "0x1005", + "service_provider": "TUSRC", + "system_integrator": "Ascom Monetel" + }, + { + "application": "Mass Transportation Ticketing", + "company": "Omnifare", + "mad": "0x1006", + "service_provider": "MBS", + "system_integrator": "MBS" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x1007", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x1008", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x1009", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x100A", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x100B", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x100C", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x100D", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x100E", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x100F", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x1010", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x1011", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x1012", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x1013", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x1014", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x1015", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x1016", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x1017", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x1018", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x1019", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x101A", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x101B", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x101C", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x101D", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway pass, univers pass, library", + "company": "Emcard a.s.", + "mad": "0x101E", + "service_provider": "Emcard", + "system_integrator": "Emtest" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x101F", + "service_provider": "Zeleznicna Spolocnost", + "system_integrator": "Prosoft SPDL" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x1020", + "service_provider": "Zeleznicna Spolocnost", + "system_integrator": "Prosoft SPDL" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x1021", + "service_provider": "Zeleznicna Spolocnost", + "system_integrator": "Prosoft SPDL" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x1022", + "service_provider": "Zeleznicna Spolocnost", + "system_integrator": "Prosoft SPDL" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x1023", + "service_provider": "Zeleznicna Spolocnost", + "system_integrator": "Prosoft SPDL" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x1024", + "service_provider": "Zeleznicna Spolocnost", + "system_integrator": "Prosoft SPDL" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x1025", + "service_provider": "Zeleznicna Spolocnost", + "system_integrator": "Prosoft SPDL" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x1026", + "service_provider": "Zeleznicna Spolocnost", + "system_integrator": "Prosoft SPDL" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x1027", + "service_provider": "Zeleznicna", + "system_integrator": "Prosoft SPOL" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x1028", + "service_provider": "Zeleznicna", + "system_integrator": "Prosoft SPOL" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x1029", + "service_provider": "Zeleznicna", + "system_integrator": "Prosoft SPOL" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x102A", + "service_provider": "Zeleznicna", + "system_integrator": "Prosoft SPOL" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x102B", + "service_provider": "Zeleznicna", + "system_integrator": "Prosoft SPOL" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x102C", + "service_provider": "Zeleznicna", + "system_integrator": "Prosoft SPOL" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x102D", + "service_provider": "Zeleznicna", + "system_integrator": "Prosoft" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x102E", + "service_provider": "Zeleznicna", + "system_integrator": "Prosoft" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x102F", + "service_provider": "Zeleznicna", + "system_integrator": "Prosoft" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x1030", + "service_provider": "Zeleznicna", + "system_integrator": "Prosoft" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x1031", + "service_provider": "Zeleznicna", + "system_integrator": "Prosoft" + }, + { + "application": "Railway services", + "company": "Prosoft Zilina", + "mad": "0x1032", + "service_provider": "Zeleznicna", + "system_integrator": "Prosoft" + }, + { + "application": "Railway services, fare collection", + "company": "ODP-software s.r.o.", + "mad": "0x1033", + "service_provider": "ODP-software", + "system_integrator": "ODP-software" + }, + { + "application": "Railway services, fare collection", + "company": "ODP-software s.r.o.", + "mad": "0x1034", + "service_provider": "ODP-software", + "system_integrator": "ODP-software" + }, + { + "application": "Ticketing and reservation for Egyptian Railways", + "company": "ENR Egyptian National Railways", + "mad": "0x1035", + "service_provider": "ENR Egyptian National Railways", + "system_integrator": "TransIT- Transportation Information Technology system, Elsag Datamat" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x1103", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x1104", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Transport ticketing", + "company": "Koordinator ODIS s.r.o.", + "mad": "0x1105", + "service_provider": "KOORDINATOR ODIS s.r.o.", + "system_integrator": "KOORDINATOR ODIS s.r.o." + }, + { + "application": "Transport ticketing", + "company": "Koordinator ODIS s.r.o.", + "mad": "0x1106", + "service_provider": "KOORDINATOR ODIS s.r.o.", + "system_integrator": "KOORDINATOR ODIS s.r.o." + }, + { + "application": "Transport ticketing", + "company": "Koordinator ODIS s.r.o.", + "mad": "0x1107", + "service_provider": "KOORDINATOR ODIS s.r.o.", + "system_integrator": "KOORDINATOR ODIS s.r.o." + }, + { + "application": "Miscellaneous applications", + "company": "Koordinator ODIS s.r.o.", + "mad": "0x1108", + "service_provider": "KOORDINATOR ODIS s.r.o.", + "system_integrator": "KOORDINATOR ODIS s.r.o." + }, + { + "application": "Miscellaneous applications", + "company": "Koordinator ODIS s.r.o.", + "mad": "0x1109", + "service_provider": "KOORDINATOR ODIS s.r.o.", + "system_integrator": "KOORDINATOR ODIS s.r.o." + }, + { + "application": "Miscellaneous applications", + "company": "Koordinator ODIS s.r.o.", + "mad": "0x110A", + "service_provider": "KOORDINATOR ODIS s.r.o.", + "system_integrator": "KOORDINATOR ODIS s.r.o." + }, + { + "application": "Digital registration of attendance of persons", + "company": "Simac QUADCORE", + "mad": "0x110B", + "service_provider": "Simac QUADCORE B.V.", + "system_integrator": "Simac QUADCORE B.V." + }, + { + "application": "Transport ticketing", + "company": "Koordinator ODIS s.r.o.", + "mad": "0x1201", + "service_provider": "KOORDINATOR ODIS s.r.o.", + "system_integrator": "KOORDINATOR ODIS s.r.o." + }, + { + "application": "Transport ticketing", + "company": "Koordinator ODIS s.r.o.", + "mad": "0x1202", + "service_provider": "KOORDINATOR ODIS s.r.o.", + "system_integrator": "KOORDINATOR ODIS s.r.o." + }, + { + "application": "Transport ticketing", + "company": "Koordinator ODIS s.r.o.", + "mad": "0x1203", + "service_provider": "KOORDINATOR ODIS s.r.o.", + "system_integrator": "KOORDINATOR ODIS s.r.o." + }, + { + "application": "ACS - Almex Card Scheme", + "company": "Höft & Wessel AG", + "mad": "0x1204", + "service_provider": "", + "system_integrator": "Höft & Wessel AG" + }, + { + "application": "Public transport ticket", + "company": "MENNICA POLSKA s.a.", + "mad": "0x1205", + "service_provider": "MPK LODZ", + "system_integrator": "MENNICA POLSKA s.a." + }, + { + "application": "Transport ticketing", + "company": "OREDO s.r.o", + "mad": "0x1206", + "service_provider": "OREDO s.r.o", + "system_integrator": "OREDO s.r.o" + }, + { + "application": "Transport ticketing", + "company": "OREDO s.r.o", + "mad": "0x1207", + "service_provider": "OREDO s.r.o", + "system_integrator": "OREDO s.r.o" + }, + { + "application": "Transport ticketing", + "company": "OREDO s.r.o", + "mad": "0x1208", + "service_provider": "OREDO s.r.o", + "system_integrator": "OREDO s.r.o" + }, + { + "application": "Transport ticketing", + "company": "Ústecky kraj", + "mad": "0x1209", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Transport ticketing", + "company": "Ústecky kraj", + "mad": "0x120A", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Transport ticketing", + "company": "Ústecky kraj", + "mad": "0x120B", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Public Transportation System ticketing e-wallet", + "company": "Ministry of Justice of Georgia", + "mad": "0x120C", + "service_provider": "Ministry of Justice of Georgia", + "system_integrator": "" + }, + { + "application": "Electronic tickets for public transpor", + "company": "TELMAX s.r.o.", + "mad": "0x120D", + "service_provider": "TELMAX s.r.o.", + "system_integrator": "TELMAX s.r.o." + }, + { + "application": "City transportation card for Subway, Bus & Minibus", + "company": "AzRy LLC", + "mad": "0x120E", + "service_provider": "Metro service LLC", + "system_integrator": "AzRy LLC" + }, + { + "application": "Interoperable fare management system for transport in Basque Country", + "company": "IDOM INGENIERIA Y CONSULTORIA", + "mad": "0x120F", + "service_provider": "Mugitu", + "system_integrator": "Mugitu" + }, + { + "application": "City Transport (Metro ticketing, bus ticket)", + "company": "VFJ Technology Pty Ltd", + "mad": "0x1801", + "service_provider": "VFJ Electronic Pty Ltd.", + "system_integrator": "Cubic - VFJ" + }, + { + "application": "Public transport fare collection", + "company": "Buscom Oy", + "mad": "0x1802", + "service_provider": "City of Vaasa", + "system_integrator": "Buscom" + }, + { + "application": "Busticketing System", + "company": "VFJ Technology Pty Ltd", + "mad": "0x1803", + "service_provider": "King Man County Public Traffic", + "system_integrator": "Barouh Electronic Co." + }, + { + "application": "Payment for transit by metro", + "company": "Moscow Metro", + "mad": "0x1808", + "service_provider": "Moscow Metro", + "system_integrator": "Express Card" + }, + { + "application": "Transit/public transport", + "company": "Rosan Finance", + "mad": "0x1809", + "service_provider": "Moscow street public transport org.", + "system_integrator": "Rosan Finance" + }, + { + "application": "Multiapplication car for industry & trafic, parking, swimming pool", + "company": "ASEC S.A.", + "mad": "0x180A", + "service_provider": "ASEC S.A", + "system_integrator": "ASEC S.A" + }, + { + "application": "Miscellaneous application, city traffic, access control & security, entertainment, car parking, electronic trade", + "company": "KFAP S.A.", + "mad": "0x180B", + "service_provider": "KFPA", + "system_integrator": "KFPA" + }, + { + "application": "Electronic purse, city traffic", + "company": "Plzeňské Městské Dopravní Podniky A.S.", + "mad": "0x180C", + "service_provider": "Plzenske Mestske", + "system_integrator": "Plzenske Mestske" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x180D", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x180E", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x180F", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x1810", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x1811", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x1812", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x1813", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x1814", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x1815", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x1816", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x1817", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x1818", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x1819", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Subway payment system", + "company": "LOT Ltd", + "mad": "0x181A", + "service_provider": "LOT", + "system_integrator": "LOT" + }, + { + "application": "Subway payment system", + "company": "LOT Ltd", + "mad": "0x181B", + "service_provider": "LOT", + "system_integrator": "LOT" + }, + { + "application": "City traffic, electronic purse, micellaneous applications", + "company": "Koordinator ODIS s.r.o.", + "mad": "0x181C", + "service_provider": "Koordinator", + "system_integrator": "PVT" + }, + { + "application": "City traffic, electronic purse, micellaneous applications", + "company": "Koordinator ODIS s.r.o.", + "mad": "0x181D", + "service_provider": "Koordinator", + "system_integrator": "PVT" + }, + { + "application": "Access control & security, city traffic, sports & entertainment", + "company": "IP Core", + "mad": "0x181F", + "service_provider": "IP Core", + "system_integrator": "IP Core" + }, + { + "application": "Electronic purse, car-parking system, single use ticket, period pass", + "company": "Emcard a.s.", + "mad": "0x1820", + "service_provider": "Emcard", + "system_integrator": "Emtest" + }, + { + "application": "Electronic purse, car-parking system, single use ticket, period pass", + "company": "Emcard a.s.", + "mad": "0x1821", + "service_provider": "Emcard", + "system_integrator": "Emtest" + }, + { + "application": "Liberec City Card - Public transport application", + "company": "Liberecká IS, a.s.", + "mad": "0x1822", + "service_provider": "Liberecká IS, a.s.", + "system_integrator": "Accenture Central Europe" + }, + { + "application": "Season ticket", + "company": "DOPRAVNI PODNIK mest Mostu a Litvinova, a.s.", + "mad": "0x1823", + "service_provider": "Dopravni Pdnik mest Mostu a Litvinova, a.s.", + "system_integrator": "Mikroelectronika, spol. sr. o., Kpt. Poplera 55, 565 01 Vysoké Mýto, CZ" + }, + { + "application": "Check in/out application", + "company": "DOPRAVNI PODNIK mest Mostu a Litvinova, a.s.", + "mad": "0x1824", + "service_provider": "Dopravni Podnik mest Mostu a Litvinova, a.s.", + "system_integrator": "Mikroelektronika, spol. sr.o., Kpt. Poplera 55, 565 01 Vysoké Mýto, CZ" + }, + { + "application": "Car Parking, Electronic Purse", + "company": "Haguess s.r.o.", + "mad": "0x1825", + "service_provider": "Haguess, s.r.o.", + "system_integrator": "Haguess, s.r.o." + }, + { + "application": "EFC-single-use ticket", + "company": "Emcard a.s.", + "mad": "0x1826", + "service_provider": "EMCARD, a.s.", + "system_integrator": "EMTEST, a.s." + }, + { + "application": "EFC period pass", + "company": "Emcard a.s.", + "mad": "0x1827", + "service_provider": "EMCARD, a.s.", + "system_integrator": "EMTEST, a.s." + }, + { + "application": "Liberec City Card - Season Pass Transport Tariffs", + "company": "Liberecká IS, a.s.", + "mad": "0x1828", + "service_provider": "Liberecká IS, a.s.", + "system_integrator": "Accenture Central Europe" + }, + { + "application": "Liberec City Card - Pre-pay Transport Tariffs", + "company": "Liberecká IS, a.s.", + "mad": "0x1829", + "service_provider": "Liberecká IS, a.s.", + "system_integrator": "Accenture Central Europe" + }, + { + "application": "Electronic purse, city traffic, customer profile, service applic, check-in/out applic", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x182A", + "service_provider": "Mikroelektronika", + "system_integrator": "Mikroelektronika" + }, + { + "application": "Prepaid ticket", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x182B", + "service_provider": "S.C. TRANSPORT PUBLICS A., Bacau, Romania", + "system_integrator": "MIKROELEKTRONIKA spol. s.r.i." + }, + { + "application": "Credit 2S", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x182C", + "service_provider": "Transmetro Guatemala", + "system_integrator": "SIEMENS Itron Business Services S.A. - Cordoba, Republica Argentina" + }, + { + "application": "Prepaid coupon 1S", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x182D", + "service_provider": "Transmetro Guatemala", + "system_integrator": "SIEMENS Itron Business services S.A. - Cordoba, Rep. Argentina" + }, + { + "application": "Prepaid ticket", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x182E", + "service_provider": "Panturist d.d., Croatia", + "system_integrator": "MIKROELEKTRONIKA spol.s.r.o., Vysoke Myto, Czech Republic" + }, + { + "application": "Prepaid coupon", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x182F", + "service_provider": "Mikroelektronika spol.s r.o.", + "system_integrator": "Mikroelektronika spol.s r.o." + }, + { + "application": "City traffic", + "company": "MENNICA POLSKA S.A.", + "mad": "0x1830", + "service_provider": "MENNICA POLSKA S.A.", + "system_integrator": "MENNICA POLSKA S.A." + }, + { + "application": "City traffic", + "company": "MENNICA POLSKA S.A.", + "mad": "0x1831", + "service_provider": "MENNICA POLSKA S.A.", + "system_integrator": "MENNICA POLSKA S.A." + }, + { + "application": "Prepaid coupon", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x1832", + "service_provider": "Mikroelektronika spol.s r.o.", + "system_integrator": "Mikroelektronika spol.s r.o." + }, + { + "application": "Prepaid coupon", + "company": "KORID LK, spol. s r.o", + "mad": "0x1834", + "service_provider": "KORID LK, spol.s.r.o.", + "system_integrator": "KORID LK, spol.s.r.o." + }, + { + "application": "Eticket", + "company": "KORID LK, spol. s r.o", + "mad": "0x1835", + "service_provider": "KORID LK, spol.s.r.o.", + "system_integrator": "KORID LK, spol.s.r.o." + }, + { + "application": "Prepaid coupon 1S", + "company": "Mikroelektronika GmbH", + "mad": "0x1836", + "service_provider": "MIKROELEKTRONIKA spol.s.r.o., Draby 849, Vysoke Myto 56601, Czech Republic", + "system_integrator": "MIKROELEKTRONIKA spol.s.r.o., Draby 849, Vysoke Myto 56601, Czech Republic" + }, + { + "application": "Prepaid coupon", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x1837", + "service_provider": "ZAGREBACKI Holding d.o.o.", + "system_integrator": "MIKROELEKTRONIKA spol.s.r.o." + }, + { + "application": "Prepaid coupon", + "company": "Mikroelektronika GmbH", + "mad": "0x1838", + "service_provider": "MIKROELEKTRONIKA spol.s.r.o.", + "system_integrator": "MIKROELEKTRONIKA spol.s.r.o." + }, + { + "application": "Prepaid coupon", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x1839", + "service_provider": "Mikroelektronika spol.s r.o", + "system_integrator": "Mikroelektronika spol.s r.o" + }, + { + "application": "City traffic services - ticket control, city card for Polish municipal services", + "company": "Unicard S.A.", + "mad": "0x183B", + "service_provider": "UNICARD S.A.", + "system_integrator": "UNICARD S.A." + }, + { + "application": "City traffic services - ticket control, city card for Polish municipal services", + "company": "Unicard S.A.", + "mad": "0x183C", + "service_provider": "UNICARD S.A.", + "system_integrator": "UNICARD S.A." + }, + { + "application": "City traffic services - ticket control, city card for Polish municipal services", + "company": "Unicard S.A.", + "mad": "0x183D", + "service_provider": "UNICARD S.A.", + "system_integrator": "UNICARD S.A." + }, + { + "application": "City traffic services - ticket control, city card for Polish municipal services", + "company": "Unicard S.A.", + "mad": "0x183E", + "service_provider": "UNICARD S.A.", + "system_integrator": "UNICARD S.A." + }, + { + "application": "Public transportation", + "company": "OY MATKAHUOLTO AB", + "mad": "0x183F", + "service_provider": "OY MATKAHUOLTO AB", + "system_integrator": "OY MATKAHUOLTO AB" + }, + { + "application": "Public transportation", + "company": "OY MATKAHUOLTO AB", + "mad": "0x1840", + "service_provider": "OY MATKAHUOLTO AB", + "system_integrator": "OY MATKAHUOLTO AB" + }, + { + "application": "City traffic, prepaid ticket, check in/out", + "company": "ODP-software s.r.o.", + "mad": "0x1841", + "service_provider": "ODP-software", + "system_integrator": "ODP-software" + }, + { + "application": "City traffic, prepaid ticket, check in/out", + "company": "ODP-software s.r.o.", + "mad": "0x1842", + "service_provider": "ODP-software", + "system_integrator": "ODP-software" + }, + { + "application": "Car authentication for telematics", + "company": "NXP Semiconductors", + "mad": "0x1843", + "service_provider": "NXP Semiconductors", + "system_integrator": "NXP Semiconductors" + }, + { + "application": "Public transport ticketing services", + "company": "Netlock Ltd", + "mad": "0x1844", + "service_provider": "Netlock Kft.", + "system_integrator": "Netlock Kft." + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x1903", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services", + "company": "Czech Railways", + "mad": "0x1904", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Bus fare collection", + "company": "Ascom Monétel", + "mad": "0x2001", + "service_provider": "C.T.A.V.", + "system_integrator": "Monétel S.A." + }, + { + "application": "Bus fare collection", + "company": "Ascom Monétel", + "mad": "0x2002", + "service_provider": "Conseil Général du TARN", + "system_integrator": "Ascom Monétel" + }, + { + "application": "Bus service, ÖPNV", + "company": "Scheidt & Bachmann", + "mad": "0x2003", + "service_provider": "Scheidt & Bachmann", + "system_integrator": "Scheidt & Bachmann" + }, + { + "application": "Bus service, ÖPNV", + "company": "Scheidt & Bachmann", + "mad": "0x2004", + "service_provider": "Scheidt & Bachmann", + "system_integrator": "Scheidt & Bachmann" + }, + { + "application": "Bus Fare Collection", + "company": "Ascom Monétel", + "mad": "0x2005", + "service_provider": "Forbus Intercity", + "system_integrator": "Ascom Monétel S.A." + }, + { + "application": "Public transport", + "company": "Scan Coin AB", + "mad": "0x2006", + "service_provider": "Scan Coin AB", + "system_integrator": "" + }, + { + "application": "Ticketing system for public transport in Sweden, used primarily on buses", + "company": "CPT Nordic AB", + "mad": "0x2007", + "service_provider": "Country traffic in Sweden", + "system_integrator": "CPI Nordic AB" + }, + { + "application": "Bus Fare collection", + "company": "Ascom Monétel", + "mad": "0x2008", + "service_provider": "Setrans P", + "system_integrator": "As om Monetél SA" + }, + { + "application": "Automatic Fare Collection city and intercity bus traffic electronic purse", + "company": "Trgovina in Informatika d.o.o.", + "mad": "0x2009", + "service_provider": "Fourth Way - Alpetour", + "system_integrator": "Fourth Way" + }, + { + "application": "", + "company": "Reserved for MAD", + "mad": "0x200A", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Transport Ticketing, E-Purse, Citycard", + "company": "CJS Consultancy Ltd", + "mad": "0x200B", + "service_provider": "", + "system_integrator": "Transmo Citycard Ltd." + }, + { + "application": "Bus fare collection", + "company": "Ascom Monétel", + "mad": "0x200C", + "service_provider": "Maybus", + "system_integrator": "Ascom Monetel" + }, + { + "application": "Bus services with extension to rail and taxi", + "company": "Questek Marketing", + "mad": "0x200D", + "service_provider": "Questek Marketing", + "system_integrator": "Questek Marketing" + }, + { + "application": "Bus fare colection", + "company": "Ascom Monétel", + "mad": "0x200E", + "service_provider": "Oestfold", + "system_integrator": "Ascom Monétel" + }, + { + "application": "Bus Fare Collection", + "company": "Ascom Monétel", + "mad": "0x200F", + "service_provider": "SATAR", + "system_integrator": "Ascom Monetel S.A." + }, + { + "application": "Bus Fare Collection", + "company": "Ascom Monétel", + "mad": "0x2010", + "service_provider": "Atam Arezzo", + "system_integrator": "Ascom Monetel - SA" + }, + { + "application": "Collect fare system for transit authority", + "company": "Soprin ADS", + "mad": "0x2011", + "service_provider": "Soprin ADS - Ascom Monetel", + "system_integrator": "Soprin ADS" + }, + { + "application": "Busticketing System", + "company": "VFJ Technology Pty Ltd", + "mad": "0x2012", + "service_provider": "King Man County Public Traffic", + "system_integrator": "Barouh Electronic Co." + }, + { + "application": "Bus, Tramway, Underground Services", + "company": "Ascom Monétel", + "mad": "0x2013", + "service_provider": "ZTM (Transport Company of Marsaw)", + "system_integrator": "Ascom Monetel (porject leader Mr. Pascal Valette)" + }, + { + "application": "Electronic transportation voucher", + "company": "GRUPO VR", + "mad": "0x2014", + "service_provider": "Grupo VR", + "system_integrator": "" + }, + { + "application": "Electronic fee collection", + "company": "EFKON AG", + "mad": "0x2015", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Electronic fee collection", + "company": "EFKON AG", + "mad": "0x2016", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Electronic fee collection", + "company": "EFKON AG", + "mad": "0x2017", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Electronic fee collection", + "company": "EFKON AG", + "mad": "0x2018", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Electronic fee collection", + "company": "EFKON AG", + "mad": "0x2019", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Electronic fee collection", + "company": "EFKON AG", + "mad": "0x201A", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Electronic fee collection", + "company": "EFKON AG", + "mad": "0x201B", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Electronic fee collection", + "company": "EFKON AG", + "mad": "0x201C", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Electronic fee collection", + "company": "EFKON AG", + "mad": "0x201D", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Electronic fee collection", + "company": "EFKON AG", + "mad": "0x201E", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Electronic fee collection", + "company": "EFKON AG", + "mad": "0x201F", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Electronic fee collection", + "company": "EFKON AG", + "mad": "0x2020", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Electronic fee collection", + "company": "EFKON AG", + "mad": "0x2021", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Electronic fee collection", + "company": "EFKON AG", + "mad": "0x2022", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Electronic fee collection", + "company": "EFKON AG", + "mad": "0x2023", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Bus & tramway fare collection", + "company": "Ascom", + "mad": "0x2030", + "service_provider": "SMTU - Montpellier", + "system_integrator": "Ascom Monétel" + }, + { + "application": "City transport bus, ferry, administration", + "company": "VFJ Technology Pty Ltd", + "mad": "0x2031", + "service_provider": "VFJ Technology", + "system_integrator": "Cubic - VFJ" + }, + { + "application": "Bus fare collection", + "company": "Ascom Monétel", + "mad": "0x2032", + "service_provider": "", + "system_integrator": "Ascom Monétel" + }, + { + "application": "Bus fare collection", + "company": "Ascom Monétel", + "mad": "0x2035", + "service_provider": "TCL", + "system_integrator": "Ascom Monétel" + }, + { + "application": "Bus Fare Collection", + "company": "Ascom Monétel", + "mad": "0x2036", + "service_provider": "TCL", + "system_integrator": "Ascom Monétel" + }, + { + "application": "Bus fare collection", + "company": "Ascom", + "mad": "0x2037", + "service_provider": "Tarragone (Spain)", + "system_integrator": "Ascom Monétel" + }, + { + "application": "Bus fare collection", + "company": "Ascom", + "mad": "0x2038", + "service_provider": "Tarragone (Spain)", + "system_integrator": "Ascom Monétel" + }, + { + "application": "Bus fare collection", + "company": "Ascom", + "mad": "0x2039", + "service_provider": "Tarragone (Spain)", + "system_integrator": "Ascom Monétel" + }, + { + "application": "Bus fare collection", + "company": "Ascom", + "mad": "0x203A", + "service_provider": "Tarragone (Spain)", + "system_integrator": "Ascom Monétel" + }, + { + "application": "Bus fare collection", + "company": "Ascom", + "mad": "0x203F", + "service_provider": "Salineira Ltda", + "system_integrator": "Ascom Monetel" + }, + { + "application": "Bus Fare Collection", + "company": "Ascom Monétel", + "mad": "0x2040", + "service_provider": "Ascom Monétel", + "system_integrator": "Ascom Monétel" + }, + { + "application": "Bus Fare Collection", + "company": "Ascom Monétel", + "mad": "0x2041", + "service_provider": "Ascom Monétel", + "system_integrator": "Ascom Meonétel" + }, + { + "application": "Bus Fare Collection", + "company": "Ascom Monétel", + "mad": "0x2042", + "service_provider": "Ascom Monétel", + "system_integrator": "Ascom Monétel" + }, + { + "application": "Bus Fare Collection", + "company": "Ascom Monétel", + "mad": "0x2043", + "service_provider": "Systas", + "system_integrator": "Ascom Monétel" + }, + { + "application": "Bus Fare Collection", + "company": "Ascom Monétel", + "mad": "0x2044", + "service_provider": "Systas", + "system_integrator": "Ascom Moétel" + }, + { + "application": "Access control, time attendance, bus ticket, hotel room card, VIP card f. club", + "company": "Giga-TMS Inc", + "mad": "0x2045", + "service_provider": "Giga TMS", + "system_integrator": "Giga TMS" + }, + { + "application": "Bus fare collection", + "company": "Ascom", + "mad": "0x2046", + "service_provider": "Burulas", + "system_integrator": "Burulas" + }, + { + "application": "Mass Transportation Ticketing", + "company": "Omnifare", + "mad": "0x2047", + "service_provider": "MBS", + "system_integrator": "MBS" + }, + { + "application": "Bus fare collection", + "company": "Ascom", + "mad": "0x2048", + "service_provider": "Eskisehir", + "system_integrator": "EAS" + }, + { + "application": "Bus fare collection", + "company": "Ascom", + "mad": "0x2049", + "service_provider": "Metro Ciudad Mexico", + "system_integrator": "Ascom" + }, + { + "application": "Elec ticketing, access control, electronic purse", + "company": "Empresa 1 Sistemas de Automacao e Comercio", + "mad": "0x204D", + "service_provider": "Empresa 1", + "system_integrator": "Empresa 1" + }, + { + "application": "City card, prepaid ticket, cardholder, servicespass", + "company": "Emcard a.s.", + "mad": "0x204E", + "service_provider": "Emcard", + "system_integrator": "Emtest" + }, + { + "application": "Fidelity, student, period pass, single-use ticket", + "company": "Emcard a.s.", + "mad": "0x204F", + "service_provider": "emcard", + "system_integrator": "emtest" + }, + { + "application": "Fidelity, student, period pass, single-use ticket", + "company": "Emcard a.s.", + "mad": "0x2050", + "service_provider": "emcard", + "system_integrator": "emtest" + }, + { + "application": "Fidelity, student, period pass, single-use ticket", + "company": "Emcard a.s.", + "mad": "0x2051", + "service_provider": "emcard", + "system_integrator": "emtest" + }, + { + "application": "Fidelity, student, period pass, single-use ticket", + "company": "Emcard a.s.", + "mad": "0x2052", + "service_provider": "emcard", + "system_integrator": "emtest" + }, + { + "application": "Bus, Underground", + "company": "ACS - Affiliated Computer Services", + "mad": "0x2053", + "service_provider": "Tisseo", + "system_integrator": "ACS" + }, + { + "application": "Bus Fare Collection", + "company": "A.C.S. SAS France", + "mad": "0x2054", + "service_provider": "ACS", + "system_integrator": "MetropolitanTransitAuthority of Harris Country" + }, + { + "application": "Public Transport Fare Collection", + "company": "Dublin Bus", + "mad": "0x2055", + "service_provider": "Dublin Bus", + "system_integrator": "Dublin Bus" + }, + { + "application": "Fidelity pass", + "company": "Emcard a.s.", + "mad": "0x2056", + "service_provider": "EMCARD, a.s.", + "system_integrator": "EMTEST, a.s." + }, + { + "application": "Service pass", + "company": "Emcard a.s.", + "mad": "0x2057", + "service_provider": "EMCARD, a.s.", + "system_integrator": "EMTEST, a.s." + }, + { + "application": "EFC-single-use ticket", + "company": "Emcard a.s.", + "mad": "0x2058", + "service_provider": "EMCARD, a.s.", + "system_integrator": "EMTEST, a.s." + }, + { + "application": "EFC-time ticket", + "company": "Emcard a.s.", + "mad": "0x2059", + "service_provider": "EMCARD, a.s.", + "system_integrator": "EMTEST, a.s." + }, + { + "application": "Bus Ticketing", + "company": "Krauth Technology", + "mad": "0x205A", + "service_provider": "Prof.A.Krauth Apparatebau", + "system_integrator": "Prof.A.Krauth Apparatebau" + }, + { + "application": "Transit SmartCard System, City E-purse System", + "company": "Intelligent Transaction Systems de Mexico S.A. de C.V.", + "mad": "0x205B", + "service_provider": "St. John's Transportation Commission", + "system_integrator": "Intelligent Transaction Systems de Mexico" + }, + { + "application": "Bus fare collection system", + "company": "PENTA d.o.o.", + "mad": "0x205C", + "service_provider": "PENTA", + "system_integrator": "PENTA" + }, + { + "application": "Bus fare collection system", + "company": "PENTA d.o.o.", + "mad": "0x205D", + "service_provider": "PENTA", + "system_integrator": "PENTA" + }, + { + "application": "Bus fare collection system", + "company": "PENTA d.o.o.", + "mad": "0x205E", + "service_provider": "PENTA", + "system_integrator": "PENTA" + }, + { + "application": "Bus e-ticketing system for different provinces of Iran", + "company": "Processing World Co.", + "mad": "0x205F", + "service_provider": "Processing world co.", + "system_integrator": "Processing world co." + }, + { + "application": "Bus", + "company": "ACS - Affiliated Computer Services", + "mad": "0x2060", + "service_provider": "ACS", + "system_integrator": "ACS" + }, + { + "application": "Electronic ticket", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x2061", + "service_provider": "Mikroelektronika spol.s r.o.", + "system_integrator": "Mikroelektronika spol.s r.o." + }, + { + "application": "Electronic tiicket", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x2062", + "service_provider": "ZAGREBACKI Holding d.o.o.", + "system_integrator": "MIKROELEKTRONIKA spol.s.r.o" + }, + { + "application": "Electronic ticket", + "company": "Mikroelektronika GmbH", + "mad": "0x2063", + "service_provider": "MIKROELEKTRONIKA spol.s.r.o.", + "system_integrator": "MIKROELEKTRONIKA spol.s.r.o." + }, + { + "application": "BUS", + "company": "ACS - Affiliated Computer Services", + "mad": "0x2064", + "service_provider": "ACS", + "system_integrator": "ACS" + }, + { + "application": "Transit ridership", + "company": "FARE Logistics", + "mad": "0x2065", + "service_provider": "", + "system_integrator": "Fare Logistics" + }, + { + "application": "BUS FARE COLLECTION", + "company": "ACS - Affiliated Computer Services", + "mad": "0x2066", + "service_provider": "BRESCIATRASPORTI", + "system_integrator": "ACS" + }, + { + "application": "Bus", + "company": "ACS - Affiliated Computer Services", + "mad": "0x2067", + "service_provider": "ACS", + "system_integrator": "ACS" + }, + { + "application": "Electronic ticket", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x2068", + "service_provider": "Jamaica Urban Transit Company Ltd", + "system_integrator": "Mikroelektronika spol.s r.o." + }, + { + "application": "Electronic couponticket for public transport", + "company": "BULL POLSKA Sp. z o.o.", + "mad": "0x2069", + "service_provider": "BULL POLSKA", + "system_integrator": "BULL POLSKA" + }, + { + "application": "Electronic ticket for public transport", + "company": "BULL POLSKA Sp. z o.o.", + "mad": "0x206A", + "service_provider": "BULL POLSKA", + "system_integrator": "BULL POLSKA" + }, + { + "application": "Bus Rail Fare Collection", + "company": "ACS - Affiliated Computer Services", + "mad": "0x206B", + "service_provider": "DTEI", + "system_integrator": "ACS" + }, + { + "application": "Bus", + "company": "ACS - Affiliated Computer Services", + "mad": "0x206C", + "service_provider": "STO", + "system_integrator": "ACS" + }, + { + "application": "Bus services, bus fare collection", + "company": "ODP-software s.r.o.", + "mad": "0x206D", + "service_provider": "ODP-software", + "system_integrator": "ODP-software" + }, + { + "application": "Bus services, bus fare collection", + "company": "ODP-software s.r.o.", + "mad": "0x206E", + "service_provider": "ODP-software", + "system_integrator": "ODP-software" + }, + { + "application": "Automatic Fare Collection System", + "company": "ACS Solution France", + "mad": "0x206F", + "service_provider": "Briansk", + "system_integrator": "ACS" + }, + { + "application": "Bus fare collection", + "company": "ACS - Affiliated Computer Services", + "mad": "0x2070", + "service_provider": "DOT", + "system_integrator": "ACS" + }, + { + "application": "Bus", + "company": "Xerox", + "mad": "0x2071", + "service_provider": "SEMITAN", + "system_integrator": "TAN" + }, + { + "application": "Card Touch Smart Card Applications", + "company": "Touch Technology International Inc.", + "mad": "0x2101", + "service_provider": "Touch Technology International", + "system_integrator": "Touch Technology International" + }, + { + "application": "Transport Ticketing", + "company": "Ascom", + "mad": "0x2102", + "service_provider": "SBME Milano", + "system_integrator": "A.I.I." + }, + { + "application": "Multi-Modal Transit", + "company": "ERG Transit Systems", + "mad": "0x2103", + "service_provider": "ERG Transit Systems", + "system_integrator": "ERG Transit Systems" + }, + { + "application": "Multi-Modal Transit", + "company": "ERG Transit Systems", + "mad": "0x2104", + "service_provider": "ERG Transit Systems", + "system_integrator": "ERG Transit Systems" + }, + { + "application": "Mass Transportation Ticketing", + "company": "Omnifare", + "mad": "0x2108", + "service_provider": "MBS", + "system_integrator": "MBS" + }, + { + "application": "Pre-paid bus card, passanger ID bus card", + "company": "Intelligent Transaction Systems de Mexico S.A. de C.V.", + "mad": "0x2109", + "service_provider": "Intelligent Transaction", + "system_integrator": "Intelligent Transcation" + }, + { + "application": "Pre-paid bus card, passanger ID bus card", + "company": "Intelligent Transaction Systems de Mexico S.A. de C.V.", + "mad": "0x210A", + "service_provider": "Intelligent Transaction", + "system_integrator": "Intelligent Transcation" + }, + { + "application": "Pre-paid bus card, passanger ID bus card", + "company": "Intelligent Transaction Systems de Mexico S.A. de C.V.", + "mad": "0x210B", + "service_provider": "Intelligent Transaction", + "system_integrator": "Intelligent Transcation" + }, + { + "application": "City card, prepaid ticket, cardholder, servicespass", + "company": "Emcard a.s.", + "mad": "0x210C", + "service_provider": "Emcard", + "system_integrator": "Emtest" + }, + { + "application": "City card, prepaid ticket, cardholder, servicespass", + "company": "Emcard a.s.", + "mad": "0x210D", + "service_provider": "Emcard", + "system_integrator": "Emtest" + }, + { + "application": "Integrated multi-modal transport ticketing system", + "company": "Keane Australia PTY Limited", + "mad": "0x210F", + "service_provider": "TTA", + "system_integrator": "KAMCO" + }, + { + "application": "Integrated multi-modal transport ticketing system", + "company": "Keane Australia PTY Limited", + "mad": "0x2110", + "service_provider": "TTA", + "system_integrator": "KAMCO" + }, + { + "application": "Card holder", + "company": "Emcard a.s.", + "mad": "0x2111", + "service_provider": "EMCARD, a.s.", + "system_integrator": "EMTEST, a.s." + }, + { + "application": "Prepaid ticket", + "company": "Emcard a.s.", + "mad": "0x2112", + "service_provider": "EMCARD, a.s.", + "system_integrator": "EMTEST, a.s." + }, + { + "application": "Electronic purse, city traffic, customer profile, service applic, check-in/out applic", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x2113", + "service_provider": "Mikroelektronika", + "system_integrator": "Mikroelektronika" + }, + { + "application": "Electronic ticketing for city of Friedrichshafen", + "company": "T-Systems GEI GmbH", + "mad": "0x2114", + "service_provider": "T-Systems GEI", + "system_integrator": "T-Systems GEI" + }, + { + "application": "Transportation ticket", + "company": "Haguess s.r.o.", + "mad": "0x2115", + "service_provider": "HAGUESS, a.s.", + "system_integrator": "HAGUESS, a.s" + }, + { + "application": "Bus and rail fare collection", + "company": "ACS - Affiliated Computer Services", + "mad": "0x2116", + "service_provider": "GCRTA", + "system_integrator": "ACS" + }, + { + "application": "Prepaid coupon - prepaid ticket for multimodal transport", + "company": "CSAD SVT Praha", + "mad": "0x2117", + "service_provider": "", + "system_integrator": "Mikroelektronika, EMTEST" + }, + { + "application": "Epurse - electronic purse intended for payment of fare in multimodal public transport", + "company": "CSAD SVT Praha", + "mad": "0x2118", + "service_provider": "", + "system_integrator": "Mikroelektronika, EMTEST" + }, + { + "application": "Automatic fare payment system for multi-modal transit", + "company": "Cubic Corporation", + "mad": "0x2119", + "service_provider": "", + "system_integrator": "Cubic Transportation Systems" + }, + { + "application": "Public transport smartcard integrated ticketing scheme for the Republic of Ireland", + "company": "Railway Procurement Agency", + "mad": "0x211A", + "service_provider": "Dublin Bus, Irish Rail, Bus Eireann, private-bus-operators", + "system_integrator": "RPA" + }, + { + "application": "General Ticketing Solution for Mas Transit", + "company": "Parkeon", + "mad": "0x211B", + "service_provider": "PARKEON", + "system_integrator": "PARKEON" + }, + { + "application": "General Ticketing Solution for Mas Transit", + "company": "Parkeon", + "mad": "0x211C", + "service_provider": "PARKEON", + "system_integrator": "PARKEON" + }, + { + "application": "Multi-modal Transit", + "company": "Västra Götalandsregionen", + "mad": "0x211D", + "service_provider": "Västtrafik AB", + "system_integrator": "Vix ERG" + }, + { + "application": "Transport application", + "company": "Unicard Limited UK", + "mad": "0x211E", + "service_provider": "Unicard Limited", + "system_integrator": "Unicard Limited" + }, + { + "application": "Transit fare collection, transit purse, transit ID", + "company": "GFI Genfare", + "mad": "0x211F", + "service_provider": "", + "system_integrator": "GFI Genfare, an SPX Division" + }, + { + "application": "Transit fare collection, transit purse, transit ID", + "company": "GFI Genfare", + "mad": "0x2120", + "service_provider": "", + "system_integrator": "GFI Genfare, an SPX Division" + }, + { + "application": "Transit fare collection, transit purse, transit ID", + "company": "GFI Genfare", + "mad": "0x2121", + "service_provider": "", + "system_integrator": "GFI Genfare, an SPX Division" + }, + { + "application": "Bus and rail fare collection", + "company": "ACS - Affiliated Computer Services", + "mad": "0x2122", + "service_provider": "RTD", + "system_integrator": "ACS" + }, + { + "application": "Bus services with extension to rail and taxi", + "company": "Questek Marketing", + "mad": "0x2801", + "service_provider": "Questek Marketing", + "system_integrator": "Questek Marketing" + }, + { + "application": "Mass Transportation Ticketing", + "company": "Omnifare", + "mad": "0x2803", + "service_provider": "MBS", + "system_integrator": "MBS" + }, + { + "application": "Tollway system", + "company": "VFJ Technology Pty Ltd", + "mad": "0x3001", + "service_provider": "VFJ Technology Pty Ltd", + "system_integrator": "Chendu Shuguang Optical Fibre Network (Ltd. China)" + }, + { + "application": "Tollway system", + "company": "VFJ Technology Pty Ltd", + "mad": "0x3002", + "service_provider": "VFJ Technology Pty Ltd", + "system_integrator": "Chendu Shuguang Optical Fibre Network (Ltd. China)" + }, + { + "application": "Toll collection", + "company": "Philips Projects", + "mad": "0x3003", + "service_provider": "Concepa (Concecionaria da Rodovia Oso Rio - Porto Alegre)", + "system_integrator": "Philips Projects Brazil" + }, + { + "application": "Toll collection", + "company": "Philips Projects", + "mad": "0x3004", + "service_provider": "Concepa (Concecionaria da Rodovia Oso Rio - Porto Alegre)", + "system_integrator": "Philips Projects Brazil" + }, + { + "application": "Toll collection", + "company": "Philips Projects", + "mad": "0x3005", + "service_provider": "Concepa (Concecionaria da Rodovia Oso Rio - Porto Alegre)", + "system_integrator": "Philips Projects Brazil" + }, + { + "application": "Toll collection", + "company": "Philips Projects", + "mad": "0x3006", + "service_provider": "Concepa (Concecionaria da Rodovia Oso Rio - Porto Alegre)", + "system_integrator": "Philips Projects Brazil" + }, + { + "application": "Toll collection", + "company": "Philips Projects", + "mad": "0x3007", + "service_provider": "Concepa (Concecionaria da Rodovia Oso Rio - Porto Alegre)", + "system_integrator": "Philips Projects Brazil" + }, + { + "application": "Road Tolling Application", + "company": "EFKON AG", + "mad": "0x3008", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Tolling Application", + "company": "EFKON AG", + "mad": "0x3009", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Tolling Application", + "company": "EFKON AG", + "mad": "0x300A", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Tolling Application", + "company": "EFKON AG", + "mad": "0x300B", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Tolling Application", + "company": "EFKON AG", + "mad": "0x300C", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Tolling Application", + "company": "EFKON AG", + "mad": "0x300D", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road toll application", + "company": "EFKON AG", + "mad": "0x300E", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Tollway", + "company": "VFJ Technology Pty Ltd", + "mad": "0x300F", + "service_provider": "VFJ HK", + "system_integrator": "" + }, + { + "application": "Tollway", + "company": "VFJ Technology Pty Ltd", + "mad": "0x3010", + "service_provider": "Xiamto Lintong Tollway", + "system_integrator": "" + }, + { + "application": "Tollway", + "company": "VFJ Technology Pty Ltd", + "mad": "0x3011", + "service_provider": "Xiamto Lintong Tollway", + "system_integrator": "" + }, + { + "application": "Tollway", + "company": "VFJ Technology Pty Ltd", + "mad": "0x3012", + "service_provider": "Xiamto Lintong Tollway", + "system_integrator": "" + }, + { + "application": "Tollway", + "company": "VFJ Technology Pty Ltd", + "mad": "0x3013", + "service_provider": "Xiamto Lintong Tollway", + "system_integrator": "" + }, + { + "application": "Tollway", + "company": "VFJ Technology Pty Ltd", + "mad": "0x3014", + "service_provider": "Austream", + "system_integrator": "Austream" + }, + { + "application": "Road toll application", + "company": "EFKON AG", + "mad": "0x3015", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Road toll application", + "company": "EFKON AG", + "mad": "0x3016", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Road toll application", + "company": "EFKON AG", + "mad": "0x3017", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Road toll application", + "company": "EFKON AG", + "mad": "0x3018", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Road toll application", + "company": "EFKON AG", + "mad": "0x3019", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Road toll application", + "company": "EFKON AG", + "mad": "0x301A", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Road Toll Application", + "company": "EFKON AG", + "mad": "0x301B", + "service_provider": "Efkon", + "system_integrator": "Philips Projects" + }, + { + "application": "Road Toll Application", + "company": "EFKON AG", + "mad": "0x301C", + "service_provider": "Efkon", + "system_integrator": "Philips Projects" + }, + { + "application": "Road Toll Application", + "company": "EFKON AG", + "mad": "0x301D", + "service_provider": "Efkon", + "system_integrator": "Philips Projects" + }, + { + "application": "Road Toll Application", + "company": "EFKON AG", + "mad": "0x301E", + "service_provider": "Efkon", + "system_integrator": "Philips Projects" + }, + { + "application": "Road Toll Application", + "company": "EFKON AG", + "mad": "0x301F", + "service_provider": "Efkon", + "system_integrator": "Philips Projects" + }, + { + "application": "Weighbridge for trucks", + "company": "VFJ Technology Pty Ltd", + "mad": "0x3020", + "service_provider": "Hardware Systems Sales", + "system_integrator": "" + }, + { + "application": "Road toll", + "company": "EFKON AG", + "mad": "0x3021", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Road toll", + "company": "EFKON AG", + "mad": "0x3022", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Road toll", + "company": "EFKON AG", + "mad": "0x3023", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Road toll", + "company": "EFKON AG", + "mad": "0x3024", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Road toll", + "company": "EFKON AG", + "mad": "0x3025", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Road toll", + "company": "EFKON AG", + "mad": "0x3026", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Road toll", + "company": "EFKON AG", + "mad": "0x3027", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Road Toll", + "company": "EFKON AG", + "mad": "0x3028", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Toll", + "company": "EFKON AG", + "mad": "0x3029", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Toll", + "company": "EFKON AG", + "mad": "0x302A", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Toll", + "company": "EFKON AG", + "mad": "0x302B", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Toll", + "company": "EFKON AG", + "mad": "0x302C", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road toll", + "company": "EFKON AG", + "mad": "0x302D", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Road toll", + "company": "EFKON AG", + "mad": "0x302E", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Road toll", + "company": "EFKON AG", + "mad": "0x302F", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Road toll", + "company": "EFKON AG", + "mad": "0x3030", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Road toll", + "company": "EFKON AG", + "mad": "0x3031", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Road Toll Application", + "company": "EFKON AG", + "mad": "0x3032", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Toll Application", + "company": "EFKON AG", + "mad": "0x3033", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Toll Application", + "company": "EFKON AG", + "mad": "0x3034", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Toll Application", + "company": "EFKON AG", + "mad": "0x3035", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Toll Application", + "company": "EFKON AG", + "mad": "0x3036", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Toll Application", + "company": "EFKON AG", + "mad": "0x3037", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Toll Application", + "company": "EFKON AG", + "mad": "0x3038", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Toll Application", + "company": "EFKON AG", + "mad": "0x3039", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Road Toll Application", + "company": "EFKON AG", + "mad": "0x303A", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Road Toll Application", + "company": "EFKON AG", + "mad": "0x303B", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Road Toll Application", + "company": "EFKON AG", + "mad": "0x303C", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Road Toll Application", + "company": "Compsis Comp. Sist. Ind. Com. LTDA", + "mad": "0x303E", + "service_provider": "Compsis", + "system_integrator": "Compsis" + }, + { + "application": "Road Toll Application", + "company": "Compsis Comp. Sist. Ind. Com. LTDA", + "mad": "0x303F", + "service_provider": "Compsis", + "system_integrator": "Compsis" + }, + { + "application": "Road Toll Application", + "company": "Compsis Comp. Sist. Ind. Com. LTDA", + "mad": "0x3040", + "service_provider": "Compsis", + "system_integrator": "Compsis" + }, + { + "application": "Road Toll Application", + "company": "Compsis Comp. Sist. Ind. Com. LTDA", + "mad": "0x3041", + "service_provider": "Compsis", + "system_integrator": "Compsis" + }, + { + "application": "Road Toll Application", + "company": "Compsis Comp. Sist. Ind. Com. LTDA", + "mad": "0x3042", + "service_provider": "Compsis", + "system_integrator": "Compsis" + }, + { + "application": "Road Toll", + "company": "EFKON AG", + "mad": "0x3043", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Toll", + "company": "EFKON AG", + "mad": "0x3046", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Road Toll", + "company": "EFKON AG", + "mad": "0x3047", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Toll payment", + "company": "GPS Tecnologia Ltda.", + "mad": "0x3048", + "service_provider": "GPS", + "system_integrator": "GPS" + }, + { + "application": "Electronic toll collection", + "company": "Cetrta Pot d.o.o.", + "mad": "0x3049", + "service_provider": "Dars d.d.", + "system_integrator": "Cetrta POT d.o.o." + }, + { + "application": "Road toll", + "company": "Diners Club Adriatic d.d.", + "mad": "0x305A", + "service_provider": "Diners Club", + "system_integrator": "Diners Club" + }, + { + "application": "Road toll", + "company": "Diners Club Adriatic d.d.", + "mad": "0x305B", + "service_provider": "Diners Club", + "system_integrator": "Diners Club" + }, + { + "application": "Intelligent Transport Services", + "company": "EFKON AG", + "mad": "0x3102", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Intelligent Transport Services", + "company": "EFKON AG", + "mad": "0x3103", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Intelligent Transport Services", + "company": "EFKON AG", + "mad": "0x3104", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Intelligent Transport Services", + "company": "EFKON AG", + "mad": "0x3105", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Intelligent Transport Services", + "company": "EFKON AG", + "mad": "0x3106", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Intelligent Transport Services", + "company": "EFKON AG", + "mad": "0x3107", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Intelligent Transport Services", + "company": "EFKON AG", + "mad": "0x3108", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Intelligent Transport Services", + "company": "EFKON AG", + "mad": "0x3109", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Intelligent Transport Services", + "company": "EFKON AG", + "mad": "0x310A", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Intelligent Transport Services", + "company": "EFKON AG", + "mad": "0x310B", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Stored value card payment system", + "company": "GiroVend Cashless Systems PLC", + "mad": "0x3801", + "service_provider": "GiroVend", + "system_integrator": "GiroVend" + }, + { + "application": "Card Administratin, cardholder adminstration, access control & security, company services, miscellaneous applications", + "company": "Ministry of Defense", + "mad": "0x3802", + "service_provider": "Ministry of Defence", + "system_integrator": "" + }, + { + "application": "Company Payment System, Company Facility Services, Company Identification Services", + "company": "Maas Systems B.V.", + "mad": "0x3803", + "service_provider": "Maas Systems B.V.", + "system_integrator": "Mass Systems B.V." + }, + { + "application": "Company Payment System, Company Facility Services, Company Identification Services", + "company": "Maas Systems B.V.", + "mad": "0x3804", + "service_provider": "Maas Systems B.V.", + "system_integrator": "Mass Systems B.V." + }, + { + "application": "Company Payment System, Company Facility Services, Company Identification Services", + "company": "Maas Systems B.V.", + "mad": "0x3805", + "service_provider": "Maas Systems B.V.", + "system_integrator": "Mass Systems B.V." + }, + { + "application": "Access control, company service", + "company": "Automaten Seitz GmbH", + "mad": "0x3807", + "service_provider": "Automaten Seitz", + "system_integrator": "Automaten Seitz" + }, + { + "application": "Access controll security payment", + "company": "Matsushita Communication Industrial", + "mad": "0x3808", + "service_provider": "Matsushita Communication", + "system_integrator": "Matsushita Communication" + }, + { + "application": "Multi functional badge, private application", + "company": "Microtronic AG", + "mad": "0x3809", + "service_provider": "Microtronic AG", + "system_integrator": "Microtronic AG" + }, + { + "application": "", + "company": "InterCard GmbH Kartensysteme", + "mad": "0x380A", + "service_provider": "Inter Card GmbH", + "system_integrator": "Inter Card GmbH" + }, + { + "application": "", + "company": "InterCard GmbH Kartensysteme", + "mad": "0x380B", + "service_provider": "Inter Card GmbH", + "system_integrator": "Inter Card GmbH" + }, + { + "application": "", + "company": "InterCard GmbH Kartensysteme", + "mad": "0x380C", + "service_provider": "Inter Card GmbH", + "system_integrator": "Inter Card GmbH" + }, + { + "application": "Identification service", + "company": "Pink Roccade", + "mad": "0x380D", + "service_provider": "Pink Roccade", + "system_integrator": "Pink Roccade" + }, + { + "application": "Multiapplication car for industry & trafic, parking, swimming pool", + "company": "ASEC S.A.", + "mad": "0x380E", + "service_provider": "ASEC S.A", + "system_integrator": "ASEC S.A" + }, + { + "application": "Payment and registration system", + "company": "Magna Carta B.U.", + "mad": "0x380F", + "service_provider": "Magna Carta", + "system_integrator": "Magna Carta" + }, + { + "application": "Identification service", + "company": "Pink Roccade", + "mad": "0x3810", + "service_provider": "Pink Roccade", + "system_integrator": "Pink Roccade" + }, + { + "application": "Company Facility Service", + "company": "Deister Electronic", + "mad": "0x3811", + "service_provider": "Deister Electronic GmbH", + "system_integrator": "Deister Electronic GmbH" + }, + { + "application": "Company Facility Service", + "company": "Deister Electronic", + "mad": "0x3812", + "service_provider": "Deister Electronic GmbH", + "system_integrator": "Deister Electronic GmbH" + }, + { + "application": "Multi functional badge for private application", + "company": "Microtronic AG", + "mad": "0x3813", + "service_provider": "Microtronic", + "system_integrator": "Microtronic" + }, + { + "application": "Multi functional badge for private application", + "company": "Microtronic AG", + "mad": "0x3814", + "service_provider": "Microtronic", + "system_integrator": "Microtronic" + }, + { + "application": "Multi functional badge for private application", + "company": "Microtronic AG", + "mad": "0x3815", + "service_provider": "Microtronic", + "system_integrator": "Microtronic" + }, + { + "application": "Multi functional badge for private application", + "company": "Microtronic AG", + "mad": "0x3816", + "service_provider": "Microtronic", + "system_integrator": "Microtronic" + }, + { + "application": "Multi functional badge for private application", + "company": "Microtronic AG", + "mad": "0x3817", + "service_provider": "Microtronic", + "system_integrator": "Microtronic" + }, + { + "application": "Multi functional badge for private application", + "company": "Microtronic AG", + "mad": "0x3818", + "service_provider": "Microtronic", + "system_integrator": "Microtronic" + }, + { + "application": "Multi functional badge for private application", + "company": "Microtronic AG", + "mad": "0x3819", + "service_provider": "Microtronic", + "system_integrator": "Microtronic" + }, + { + "application": "Cashless payment and others", + "company": "GPI GmbH", + "mad": "0x3827", + "service_provider": "GPI GmbH", + "system_integrator": "GPI GmbH" + }, + { + "application": "Company services", + "company": "Deutsche Lufthansa AG FFM", + "mad": "0x3828", + "service_provider": "Deutsche Lufthansa AG", + "system_integrator": "Deutsche Lufthansa AG" + }, + { + "application": "Access control, time management, electronic wallet", + "company": "Universitaire Ziekenhuizen Leuven", + "mad": "0x3829", + "service_provider": "", + "system_integrator": "GET NV" + }, + { + "application": "Company services", + "company": "Card3 GmbH", + "mad": "0x382A", + "service_provider": "Card3 GmbH", + "system_integrator": "Card3 GmbH" + }, + { + "application": "Computer, car parking, elec. purse, access control & security", + "company": "DECA Engineering", + "mad": "0x382B", + "service_provider": "Deca Engineering", + "system_integrator": "Deca Engineering" + }, + { + "application": "", + "company": "Horoquartz Gestion des Temps", + "mad": "0x382C", + "service_provider": "Horoquartz", + "system_integrator": "Horoquartz" + }, + { + "application": "", + "company": "Horoquartz Gestion des Temps", + "mad": "0x382D", + "service_provider": "Horoquartz", + "system_integrator": "Horoquartz" + }, + { + "application": "", + "company": "Horoquartz Gestion des Temps", + "mad": "0x382E", + "service_provider": "Horoquartz", + "system_integrator": "Horoquartz" + }, + { + "application": "", + "company": "Horoquartz Gestion des Temps", + "mad": "0x382F", + "service_provider": "Horoquartz", + "system_integrator": "Horoquartz" + }, + { + "application": "", + "company": "Horoquartz Gestion des Temps", + "mad": "0x3830", + "service_provider": "Horoquartz", + "system_integrator": "Horoquartz" + }, + { + "application": "Road toll", + "company": "Diners Club Adriatic d.d.", + "mad": "0x3831", + "service_provider": "Diners Club", + "system_integrator": "Diners Club" + }, + { + "application": "Company services, access & sec control, electronic purse...", + "company": "Cominfo a.s.", + "mad": "0x3832", + "service_provider": "Cominfo", + "system_integrator": "Cominfo" + }, + { + "application": "Company services", + "company": "Cash Card Automaten GmbH", + "mad": "0x3833", + "service_provider": "Cash Card", + "system_integrator": "Cash Card" + }, + { + "application": "Access control, computer application, company services", + "company": "Volvo Car Corporation", + "mad": "0x3834", + "service_provider": "Volvo Car", + "system_integrator": "Volvo Car" + }, + { + "application": "Time attendnace, fuel, access control", + "company": "Emcard a.s.", + "mad": "0x3835", + "service_provider": "Emtest", + "system_integrator": "Emtest" + }, + { + "application": "Company services", + "company": "Emcard a.s.", + "mad": "0x3836", + "service_provider": "EMCARD, a.s.", + "system_integrator": "EMTEST, a.s." + }, + { + "application": "Multiple Company Services", + "company": "Viessmann Werke GmbH & Co KG", + "mad": "0x3837", + "service_provider": "Viessmann Werke", + "system_integrator": "Viessmann Werke" + }, + { + "application": "E.purse", + "company": "GTI", + "mad": "0x3839", + "service_provider": "Mr. Eric Houri", + "system_integrator": "Mr. Francois Bodard" + }, + { + "application": "Company services", + "company": "MENNICA POLSKA S.A.", + "mad": "0x383A", + "service_provider": "MENNICA POLSKA S.A.", + "system_integrator": "MENNICA POLSKA S.A." + }, + { + "application": "Company Services", + "company": "Scheidt & Bachmann GmbH", + "mad": "0x383B", + "service_provider": "Scheidt & Bachmann GmbH", + "system_integrator": "Scheidt & Bachmann GmbH" + }, + { + "application": "", + "company": "Reac BV", + "mad": "0x383C", + "service_provider": "", + "system_integrator": "REAC" + }, + { + "application": "Follow me printing system", + "company": "N.V. EPZ", + "mad": "0x383D", + "service_provider": "EPZ", + "system_integrator": "Xerox Corporation" + }, + { + "application": "Registration of received radiation dose in nuclear power plant", + "company": "N.V. EPZ", + "mad": "0x383E", + "service_provider": "EPZ", + "system_integrator": "Mirion Technologies/MGP" + }, + { + "application": "Access control, identification", + "company": "Swedish Social Isurance Agency", + "mad": "0x383F", + "service_provider": "Swedish Social Isurance Agency", + "system_integrator": "Swedish Social Isurance Agency" + }, + { + "application": "Payment and registration", + "company": "PAYCULT GMBH", + "mad": "0x3840", + "service_provider": "PAYCULT", + "system_integrator": "PAYCULT" + }, + { + "application": "City transport bus, ferry, administration", + "company": "VFJ Technology Pty Ltd", + "mad": "0x4001", + "service_provider": "VFJ Technology", + "system_integrator": "Cubic - VFJ" + }, + { + "application": "Transport Ticketing, E-Purse, Citycard", + "company": "CJS Consultancy Ltd", + "mad": "0x4002", + "service_provider": "", + "system_integrator": "Transmo Citycard Ltd." + }, + { + "application": "Combined application for access control, ferry and rail ticketing for the Island of Langegeoog", + "company": "Companion GmbH", + "mad": "0x4003", + "service_provider": "Companion GmbH", + "system_integrator": "Companion GmbH, Krups Consultants GmbH, Gemplus GmbH" + }, + { + "application": "User needs and preference", + "company": "University of Newcastle", + "mad": "0x4004", + "service_provider": "Distinct", + "system_integrator": "University of Newcastle" + }, + { + "application": "User needs and preference", + "company": "University of Newcastle", + "mad": "0x4005", + "service_provider": "Distinct", + "system_integrator": "University of Newcastle" + }, + { + "application": "User needs and preference", + "company": "University of Newcastle", + "mad": "0x4006", + "service_provider": "Distinct", + "system_integrator": "University of Newcastle" + }, + { + "application": "User needs and preference", + "company": "University of Newcastle", + "mad": "0x4007", + "service_provider": "Distinct", + "system_integrator": "University of Newcastle" + }, + { + "application": "User needs and preference", + "company": "University of Newcastle", + "mad": "0x4008", + "service_provider": "Distinct", + "system_integrator": "University of Newcastle" + }, + { + "application": "City card services", + "company": "Rosan Finance", + "mad": "0x4009", + "service_provider": "Retail Trade and Services in Moscow", + "system_integrator": "Express card" + }, + { + "application": "City card services", + "company": "Moscow Government Department For Retail Trade and Services", + "mad": "0x400B", + "service_provider": "Retail Trade and Service", + "system_integrator": "Express Card" + }, + { + "application": "Identification of cardholder", + "company": "Rosan Finance", + "mad": "0x400C", + "service_provider": "Retail Trade and Services", + "system_integrator": "Rosan Finance" + }, + { + "application": "Mass Transportation Ticketing", + "company": "Omnifare", + "mad": "0x400D", + "service_provider": "MBS", + "system_integrator": "MBS" + }, + { + "application": "Access control", + "company": "Connex Solutions Limited", + "mad": "0x400E", + "service_provider": "Connex", + "system_integrator": "Connex" + }, + { + "application": "Acess Control, Time and Attendance", + "company": "Milenio 3 Systemas Electonicos", + "mad": "0x400F", + "service_provider": "Milenio3", + "system_integrator": "Milenio3" + }, + { + "application": "City card services", + "company": "Axess AG", + "mad": "0x4010", + "service_provider": "Axess", + "system_integrator": "Axess" + }, + { + "application": "Provision of citizen services", + "company": "UK National Smartcard Project", + "mad": "0x4011", + "service_provider": "English Local Authorities", + "system_integrator": "" + }, + { + "application": "Provision of citizen services", + "company": "UK National Smartcard Project", + "mad": "0x4012", + "service_provider": "English Local Authorities", + "system_integrator": "" + }, + { + "application": "Provision of citizen services", + "company": "UK National Smartcard Project", + "mad": "0x4013", + "service_provider": "English Local Authorities", + "system_integrator": "" + }, + { + "application": "City card, prepaid ticket, cardholder, servicespass", + "company": "Emcard a.s.", + "mad": "0x4014", + "service_provider": "Emcard", + "system_integrator": "Emtest" + }, + { + "application": "Liberec City Car, Card manag center", + "company": "Liberecká IS, a.s.", + "mad": "0x4015", + "service_provider": "Liberecka", + "system_integrator": "Accenture Central Europe" + }, + { + "application": "City Card Services", + "company": "Centro Informatico Municipal", + "mad": "0x4016", + "service_provider": "Donostiako Udala/Ayuntamiento de San Sebastian", + "system_integrator": "Centro Informatico Municipal" + }, + { + "application": "City Card Services", + "company": "Centro Informatico Municipal", + "mad": "0x4017", + "service_provider": "Donostiako Udala/Ayuntamiento de San Sebastian", + "system_integrator": "Centro Informatico Municipal" + }, + { + "application": "City Card Services", + "company": "Centro Informatico Municipal", + "mad": "0x4018", + "service_provider": "Donostiako Udala/Ayuntamiento de San Sebastian", + "system_integrator": "Centro Informatico Municipal" + }, + { + "application": "City Card Services", + "company": "Centro Informatico Municipal", + "mad": "0x4019", + "service_provider": "Donostiako Udala/Ayuntamiento de San Sebastian", + "system_integrator": "Centro Informatico Municipal" + }, + { + "application": "City Card Services", + "company": "Centro Informatico Municipal", + "mad": "0x401A", + "service_provider": "Donostiako Udala/Ayuntamiento de San Sebastian", + "system_integrator": "Centro Informatico Municipal" + }, + { + "application": "City Card Services", + "company": "Centro Informatico Municipal", + "mad": "0x401B", + "service_provider": "Donostiako Udala/Ayuntamiento de San Sebastian", + "system_integrator": "Centro Informatico Municipal" + }, + { + "application": "City Card Services", + "company": "Centro Informatico Municipal", + "mad": "0x401C", + "service_provider": "Donostiako Udala/Ayuntamiento de San Sebastian", + "system_integrator": "Centro Informatico Municipal" + }, + { + "application": "City Card Services", + "company": "Centro Informatico Municipal", + "mad": "0x401D", + "service_provider": "Donostiako Udala/Ayuntamiento de San Sebastian", + "system_integrator": "Centro Informatico Municipal" + }, + { + "application": "City Card Services", + "company": "Centro Informatico Municipal", + "mad": "0x401E", + "service_provider": "Donostiako Udala/Ayuntamiento de San Sebastian", + "system_integrator": "Centro Informatico Municipal" + }, + { + "application": "City Card Services", + "company": "Centro Informatico Municipal", + "mad": "0x401F", + "service_provider": "Donostiako Udala/Ayuntamiento de San Sebastian", + "system_integrator": "Centro Informatico Municipal" + }, + { + "application": "City card", + "company": "Emcard a.s.", + "mad": "0x4020", + "service_provider": "EMCARD, a.s.", + "system_integrator": "EMTEST, a.s." + }, + { + "application": "Programa Informatico para Fidelazcion Clientes", + "company": "LAI Sistemas Informaticos S.L.", + "mad": "0x4021", + "service_provider": "LAI Sistemas Informaticos S.L.", + "system_integrator": "Luis Maria Ortiz Gorraiz" + }, + { + "application": "Programa Informatico para Fidelazcion Clientes", + "company": "LAI Sistemas Informaticos S.L.", + "mad": "0x4022", + "service_provider": "LAI Sistemas Informaticos S.L.", + "system_integrator": "Luis Maria Ortiz Gorraiz" + }, + { + "application": "Programa Informatico para Fidelazcion Clientes", + "company": "LAI Sistemas Informaticos S.L.", + "mad": "0x4023", + "service_provider": "LAI Sistemas Informaticos S.L.", + "system_integrator": "Luis Maria Ortiz Gorraiz" + }, + { + "application": "Programa Informatico para Fidelazcion Clientes", + "company": "LAI Sistemas Informaticos S.L.", + "mad": "0x4024", + "service_provider": "LAI Sistemas Informaticos S.L.", + "system_integrator": "Luis Maria Ortiz Gorraiz" + }, + { + "application": "Programa Informatico para Fidelazcion Clientes", + "company": "LAI Sistemas Informaticos S.L.", + "mad": "0x4025", + "service_provider": "LAI Sistemas Informaticos S.L.", + "system_integrator": "Luis Maria Ortiz Gorraiz" + }, + { + "application": "City card services", + "company": "Monet+ a.s.", + "mad": "0x4026", + "service_provider": "MONET+, a.s.", + "system_integrator": "MONET+, a.s." + }, + { + "application": "Fare collection & access control", + "company": "Pusatec Oy", + "mad": "0x4027", + "service_provider": "PUSATEC", + "system_integrator": "PUSATEC" + }, + { + "application": "Security management; card management; access control", + "company": "NISCAYAH B.V.", + "mad": "0x4028", + "service_provider": "NISCAYAH", + "system_integrator": "NISCAYAH" + }, + { + "application": "Security management; card management; access control", + "company": "NISCAYAH B.V.", + "mad": "0x4029", + "service_provider": "NISCAYAH", + "system_integrator": "NISCAYAH" + }, + { + "application": "City card services", + "company": "Gantner Electronic GmbH", + "mad": "0x402A", + "service_provider": "GANTNER Electronic", + "system_integrator": "GANTNER Electronic" + }, + { + "application": "National ID Card for Bogota City", + "company": "Bogota Distrito Capital", + "mad": "0x402B", + "service_provider": "Tarjeta Ciudadana Bogota Capital - TCBC", + "system_integrator": "SMARTCHIP S.A." + }, + { + "application": "City card services", + "company": "SIT Solution for IT Payment GmbH", + "mad": "0x402C", + "service_provider": "SIT Solution for IT Payment GmbH", + "system_integrator": "SIT Solution for IT Payment GmbH" + }, + { + "application": "Access control, Time attendanc, job control", + "company": "EM Group", + "mad": "0x4701", + "service_provider": "EM Group", + "system_integrator": "EM Group" + }, + { + "application": "Access control", + "company": "One Security PTY Ltd", + "mad": "0x4702", + "service_provider": "One Security", + "system_integrator": "One Security" + }, + { + "application": "Access control & security, entertainment and sports", + "company": "Giga-TMS Inc", + "mad": "0x4703", + "service_provider": "Giga", + "system_integrator": "Giga" + }, + { + "application": "Various Access Control Applications", + "company": "Honeywell Access Systems", + "mad": "0x4707", + "service_provider": "", + "system_integrator": "HAS - Reston, VA; HAS - Oak Creek; HAS - Austin Texas" + }, + { + "application": "Various Access Control Applications", + "company": "Honeywell Access Systems", + "mad": "0x4708", + "service_provider": "", + "system_integrator": "HAS - Reston, VA; HAS - Oak Creek; HAS - Austin Texas" + }, + { + "application": "Various Access Control Applications", + "company": "Honeywell Access Systems", + "mad": "0x4709", + "service_provider": "", + "system_integrator": "HAS - Reston, VA; HAS - Oak Creek; HAS - Austin Texas" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x470A", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x470B", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x470C", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x470D", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x470E", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x470F", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x4710", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x4711", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x4712", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x4713", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x4714", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x4715", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x4716", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x4717", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x4718", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x4719", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x471A", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x471B", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x471C", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x471D", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x471E", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x471F", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x4720", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x4721", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Access Control", + "company": "IOLAN BV", + "mad": "0x4722", + "service_provider": "IOLAN BV", + "system_integrator": "IOLAN BV" + }, + { + "application": "Application COBALT access control ", + "company": "TECHNICOB", + "mad": "0x4723", + "service_provider": "TECHNICOB", + "system_integrator": "TECHNICOB" + }, + { + "application": "Access control, benefits", + "company": "Ústecky kraj", + "mad": "0x4724", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Access control", + "company": "ASCOM", + "mad": "0x4725", + "service_provider": "ASCOM", + "system_integrator": "ASCOM" + }, + { + "application": "Lockers, access control and switch system integration", + "company": "ENKOA System", + "mad": "0x4726", + "service_provider": "Enkoa", + "system_integrator": "Juan Cruz Iriondo" + }, + { + "application": "Lockers, access control and switch system integration", + "company": "ENKOA System", + "mad": "0x4727", + "service_provider": "Enkoa", + "system_integrator": "Juan Cruz Iriondo" + }, + { + "application": "Lockers, access control and switch system integration", + "company": "ENKOA System", + "mad": "0x4728", + "service_provider": "Enkoa", + "system_integrator": "Juan Cruz Iriondo" + }, + { + "application": "Trade fair card Deutsche Messe AG, Hannover", + "company": "Systemform GmbH", + "mad": "0x4801", + "service_provider": "Systemform", + "system_integrator": "Systemform" + }, + { + "application": "Scheidt & Bachmann basis dutes", + "company": "Scheidt & Bachmann", + "mad": "0x4802", + "service_provider": "Scheidt & Bachmann", + "system_integrator": "Scheidt & Bachmann" + }, + { + "application": "Scheidt & Bachmann basis dutes", + "company": "Scheidt & Bachmann", + "mad": "0x4803", + "service_provider": "Scheidt & Bachmann", + "system_integrator": "Scheidt & Bachmann" + }, + { + "application": "Scheidt & Bachmann basis dutes", + "company": "Scheidt & Bachmann", + "mad": "0x4804", + "service_provider": "Scheidt & Bachmann", + "system_integrator": "Scheidt & Bachmann" + }, + { + "application": "Access control & security time management", + "company": "Gelma", + "mad": "0x4805", + "service_provider": "Gelma Industrieelektronik GmbH", + "system_integrator": "" + }, + { + "application": "", + "company": "Systemform GmbH", + "mad": "0x4806", + "service_provider": "Systemform", + "system_integrator": "Systemform" + }, + { + "application": "Zutritt, Zeit- u. Betriebsdatenerfassung", + "company": "Interflex Datensysteme GmbH", + "mad": "0x4807", + "service_provider": "", + "system_integrator": "Interflex Datensysteme GmbH" + }, + { + "application": "Employer indentification card", + "company": "VFJ Technology Pty Ltd", + "mad": "0x4808", + "service_provider": "VFJ Electronics Pty Ltd.", + "system_integrator": "VFJ Electronics PTy Ltd." + }, + { + "application": "City Transport (Metro ticketing, bus ticket)", + "company": "VFJ Technology Pty Ltd", + "mad": "0x4809", + "service_provider": "VFJ Electronic Pty Ltd.", + "system_integrator": "Cubic - VFJ" + }, + { + "application": "Access control & security", + "company": "Ing. Büro Schrick", + "mad": "0x480A", + "service_provider": "Büro Schrick", + "system_integrator": "Büro Schrick" + }, + { + "application": "Michronos Time Attendance System", + "company": "MICOS GmbH", + "mad": "0x480B", + "service_provider": "Micos GmbH", + "system_integrator": "Micos GmbH" + }, + { + "application": "Access control system", + "company": "MICOS GmbH", + "mad": "0x480C", + "service_provider": "Micos", + "system_integrator": "Micos" + }, + { + "application": "Access Controll, Security Electronic Purse, Ski-Ticketing, Ticketing", + "company": "*Siemens ANL", + "mad": "0x480D", + "service_provider": "", + "system_integrator": "Siemens AG" + }, + { + "application": "Card Administratin, cardholder adminstration, access control & security, company services, miscellaneous applications", + "company": "Ministry of Defense", + "mad": "0x480E", + "service_provider": "Ministry of Defence", + "system_integrator": "" + }, + { + "application": "Academic Services, Electronic Purse, Access control & security", + "company": "CNA Limited/Rax-Comm Systems Ltd.", + "mad": "0x480F", + "service_provider": "CNA Limited", + "system_integrator": "CNA Limited" + }, + { + "application": "Time attandence, access control + security, electronic purse, plant data collection", + "company": "LNI Ingenieurgesellschaft für Kommunikationstechnik mbH", + "mad": "0x4810", + "service_provider": "LNI GmbH", + "system_integrator": "LNI GmbH" + }, + { + "application": "Security and Access Control", + "company": "PEC (New Zealand) Ltd.", + "mad": "0x4811", + "service_provider": "Cardax", + "system_integrator": "" + }, + { + "application": "Security and Access Control", + "company": "PEC (New Zealand) Ltd.", + "mad": "0x4812", + "service_provider": "Cardax", + "system_integrator": "" + }, + { + "application": "University & Staff identification", + "company": "VFJ Technology Pty Ltd", + "mad": "0x4813", + "service_provider": "VFJ Hong Kong", + "system_integrator": "" + }, + { + "application": "University & Staff identification", + "company": "VFJ Technology Pty Ltd", + "mad": "0x4814", + "service_provider": "VFJ Hong Kong", + "system_integrator": "" + }, + { + "application": "University & Staff identification", + "company": "VFJ Technology Pty Ltd", + "mad": "0x4815", + "service_provider": "VFJ Hong Kong", + "system_integrator": "" + }, + { + "application": "University & Staff identification", + "company": "VFJ Technology Pty Ltd", + "mad": "0x4816", + "service_provider": "VFJ Hong Kong", + "system_integrator": "" + }, + { + "application": "University & Staff identification", + "company": "VFJ Technology Pty Ltd", + "mad": "0x4817", + "service_provider": "VFJ Hong Kong", + "system_integrator": "" + }, + { + "application": "University & Staff identification", + "company": "VFJ Technology Pty Ltd", + "mad": "0x4818", + "service_provider": "VFJ Hong Kong", + "system_integrator": "" + }, + { + "application": "University & Staff identification", + "company": "VFJ Technology Pty Ltd", + "mad": "0x4819", + "service_provider": "VFJ Hong Kong", + "system_integrator": "" + }, + { + "application": "", + "company": "Reserved for MAD", + "mad": "0x481A", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Access control/security", + "company": "VFJ Technology Pty Ltd", + "mad": "0x481B", + "service_provider": "Taiwan Microcode Co Ltd.", + "system_integrator": "Taiwan Microcode Co Ltd." + }, + { + "application": "Access control/security", + "company": "VFJ Technology Pty Ltd", + "mad": "0x481C", + "service_provider": "Taiwan Microcode Co Ltd.", + "system_integrator": "Taiwan Microcode Co Ltd." + }, + { + "application": "DEM Komponenten für Zutrittskontrolle, Zeiterfassung, Betribsdatenerfassung, Kantine, Automaten, Tankdatenerf.", + "company": "Phg Peter Hengstler GmbH", + "mad": "0x481D", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "OEM-Komponenten für Zutrittskontrolle, Zeiterfassung, elektr. Geldbörse,...", + "company": "Peter Hengstler GmbH + Co KG", + "mad": "0x481E", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "OEM-Komponenten für Zutrittskontrolle, Zeiterfassung, elektr. Geldbörse,...", + "company": "Peter Hengstler GmbH + Co KG", + "mad": "0x481F", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "OEM-Komponenten für Zutrittskontrolle, Zeiterfassung, elektr. Geldbörse,...", + "company": "Peter Hengstler GmbH + Co KG", + "mad": "0x4820", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "OEM-Komponenten für Zutrittskontrolle, Zeiterfassung, elektr. Geldbörse,...", + "company": "Peter Hengstler GmbH + Co KG", + "mad": "0x4821", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "OEM-Komponenten für Zutrittskontrolle, Zeiterfassung, elektr. Geldbörse,...", + "company": "Peter Hengstler GmbH + Co KG", + "mad": "0x4822", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Access control, time management, high security, time attendence", + "company": "Winkhaus Intras Datensysteme GmbH", + "mad": "0x4823", + "service_provider": "Winkhaus Intras Datensysteme GmbH", + "system_integrator": "Winkhaus Intras Datensysteme GmbH" + }, + { + "application": "Access control system, time & attendance system", + "company": "Custom Micro Products Ltd.", + "mad": "0x4824", + "service_provider": "Custom Micro Products Ltd", + "system_integrator": "Custom Micro Products Ltd" + }, + { + "application": "Acess Control", + "company": "CYNAPS", + "mad": "0x4825", + "service_provider": "Cynaps", + "system_integrator": "" + }, + { + "application": "Access control and time managemnet", + "company": "Primion Technology GmbH", + "mad": "0x4826", + "service_provider": "BEL Computer Systems GmbH", + "system_integrator": "BEL Computer Systems GmbH" + }, + { + "application": "Access control and time managemnet", + "company": "Primion Technology GmbH", + "mad": "0x4827", + "service_provider": "BEL Computer Systems GmbH", + "system_integrator": "BEL Computer Systems GmbH" + }, + { + "application": "Access control and time managemnet", + "company": "Primion Technology GmbH", + "mad": "0x4828", + "service_provider": "BEL Computer Systems GmbH", + "system_integrator": "BEL Computer Systems GmbH" + }, + { + "application": "Access control and time managemnet", + "company": "Primion Technology GmbH", + "mad": "0x4829", + "service_provider": "BEL Computer Systems GmbH", + "system_integrator": "BEL Computer Systems GmbH" + }, + { + "application": "Access Control, Time and Attendance, Paid parking, cards and tags", + "company": "Integrated Engineering", + "mad": "0x482A", + "service_provider": "Intesraten Engineering, IE Keyprocessor", + "system_integrator": "IE Keyprocessor" + }, + { + "application": "Access Control", + "company": "Deister Electronic", + "mad": "0x482B", + "service_provider": "Deister Electronic GmbH", + "system_integrator": "Deister Electronic GmbH" + }, + { + "application": "Zutrittskontrolle, Zeiterfassung", + "company": "ZHS Zeitmanagementsysteme GmbH", + "mad": "0x482C", + "service_provider": "", + "system_integrator": "ZHS" + }, + { + "application": "Various", + "company": "BALTECH AG", + "mad": "0x482D", + "service_provider": "PCS GmbH", + "system_integrator": "PCS GmbH, Baltech AG" + }, + { + "application": "Access Control", + "company": "Deister Electronic", + "mad": "0x482E", + "service_provider": "Deister Electronic GmbH", + "system_integrator": "Deister Electronic GmbH" + }, + { + "application": "Access Control & Time Attendence", + "company": "Gelma", + "mad": "0x482F", + "service_provider": "MBB Gelma Industrieelektronik GmbH", + "system_integrator": "MBB Gelma" + }, + { + "application": "Building Management System", + "company": "VFJ Technology Pty Ltd", + "mad": "0x4830", + "service_provider": "VFJ Hong Kong", + "system_integrator": "VFJ Hong Kong" + }, + { + "application": "Combined application for access control, ferry and rail ticketing for the Island of Langegeoog", + "company": "Companion GmbH", + "mad": "0x4831", + "service_provider": "Companion GmbH", + "system_integrator": "Companion GmbH, Krups Consultants GmbH, Gemplus GmbH" + }, + { + "application": "Access control & Security", + "company": "MADA Marx Datentechnik GmbH", + "mad": "0x4832", + "service_provider": "MADA", + "system_integrator": "MADA" + }, + { + "application": "Access Control, time attendance", + "company": "Saubermacher Dienstleistungs GmbH", + "mad": "0x4833", + "service_provider": "AZS Technology AG", + "system_integrator": "AZS Technology AG" + }, + { + "application": "Access control", + "company": "Deister Electronic", + "mad": "0x4834", + "service_provider": "deister electronic GmbH", + "system_integrator": "deister electronic GmbH" + }, + { + "application": "Access control", + "company": "Deister Electronic", + "mad": "0x4835", + "service_provider": "deister electronic GmbH", + "system_integrator": "deister electronic GmbH" + }, + { + "application": "Access control", + "company": "Deister Electronic", + "mad": "0x4836", + "service_provider": "deister electronic GmbH", + "system_integrator": "deister electronic GmbH" + }, + { + "application": "Access control, time & attendance systems", + "company": "Cotag International", + "mad": "0x4837", + "service_provider": "Bewator Cotag Ltd", + "system_integrator": "Bewator Cotag Ltd" + }, + { + "application": "XSkey providing secure access in Rottermdam harbour", + "company": "Secure Logistics", + "mad": "0x4838", + "service_provider": "Secure Logistics", + "system_integrator": "Secure Logistics" + }, + { + "application": "Access control, time attendance, bus ticket, hotel room card, VIP card f. club", + "company": "Giga-TMS Inc", + "mad": "0x4839", + "service_provider": "Giga TMS", + "system_integrator": "Giga TMS" + }, + { + "application": "Access contr, time & attendance, multifunc card", + "company": "Horoquartz Gestion des Temps", + "mad": "0x4840", + "service_provider": "Horoquartz", + "system_integrator": "Horoquartz" + }, + { + "application": "Access controll", + "company": "GRUPO VR", + "mad": "0x4841", + "service_provider": "Grupo VR", + "system_integrator": "" + }, + { + "application": "Access control & security", + "company": "Tyco Integrated Systems B.V.", + "mad": "0x4842", + "service_provider": "Tyco Integrated Systems", + "system_integrator": "Tyco Integrated Systems" + }, + { + "application": "Access controll & security", + "company": "Hi Sec International A/S", + "mad": "0x4843", + "service_provider": "", + "system_integrator": "Hi Sec International A/S" + }, + { + "application": "Access Control, Time & Attendance, E-Purse", + "company": "BALTECH AG", + "mad": "0x4844", + "service_provider": "Baltech", + "system_integrator": "Baltech" + }, + { + "application": "Access Control, Time & Attendance, E-Purse", + "company": "BALTECH AG", + "mad": "0x4845", + "service_provider": "Baltech", + "system_integrator": "Baltech" + }, + { + "application": "Access Control, Time & Attendance, E-Purse", + "company": "BALTECH AG", + "mad": "0x4846", + "service_provider": "Baltech", + "system_integrator": "Baltech" + }, + { + "application": "Access Control, Time & Attendance, E-Purse", + "company": "BALTECH AG", + "mad": "0x4847", + "service_provider": "Baltech", + "system_integrator": "Baltech" + }, + { + "application": "Access Control, Time & Attendance, E-Purse", + "company": "BALTECH AG", + "mad": "0x4848", + "service_provider": "Baltech", + "system_integrator": "Baltech" + }, + { + "application": "Access Control, Time & Attendance, E-Purse", + "company": "BALTECH AG", + "mad": "0x4849", + "service_provider": "Baltech", + "system_integrator": "Baltech" + }, + { + "application": "Access control, payment system", + "company": "Maas Systems B.V.", + "mad": "0x484A", + "service_provider": "Maas Systems B.V.", + "system_integrator": "Maas Systems B.V." + }, + { + "application": "Access control & security", + "company": "BOSCH Telecom GmbH", + "mad": "0x484B", + "service_provider": "Bosch Telecom", + "system_integrator": "Bosch Telecom" + }, + { + "application": "Biometric - access controll & security", + "company": "BOSCH Telecom GmbH", + "mad": "0x484C", + "service_provider": "Bosch Telecom", + "system_integrator": "Bosch Telecom" + }, + { + "application": "Access Control", + "company": "HID Global", + "mad": "0x484D", + "service_provider": "HID Corporation", + "system_integrator": "HID Corporation" + }, + { + "application": "Access Control", + "company": "HID Global", + "mad": "0x484E", + "service_provider": "HID Corporation", + "system_integrator": "HID Corporation" + }, + { + "application": "Access control & security", + "company": "AIE Etudes", + "mad": "0x484F", + "service_provider": "AIE - ID", + "system_integrator": "AIE Etudes" + }, + { + "application": "Access control & security", + "company": "AIE Etudes", + "mad": "0x4850", + "service_provider": "AIE - ID", + "system_integrator": "AIE Etudes" + }, + { + "application": "Access control, company service", + "company": "Automaten Seitz GmbH", + "mad": "0x4851", + "service_provider": "Automaten Seitz", + "system_integrator": "Automaten Seitz" + }, + { + "application": "Access control and securitiy", + "company": "Hitachi Information Technology Co. Ltd.", + "mad": "0x4852", + "service_provider": "Hitachi Information", + "system_integrator": "Hitachi Information" + }, + { + "application": "Access control", + "company": "Petroleos Mexicanos", + "mad": "0x4853", + "service_provider": "Intraproc de Mexico", + "system_integrator": "" + }, + { + "application": "Access controll security payment", + "company": "Matsushita Communication Industrial", + "mad": "0x4854", + "service_provider": "Matsushita Communication", + "system_integrator": "Matsushita Communication" + }, + { + "application": "Storing Resident Info Access Control", + "company": "ITE Smartcard Solutions Limited", + "mad": "0x4855", + "service_provider": "ITE Smartcard", + "system_integrator": "ITE Smartcard" + }, + { + "application": "Storing Resident Info Access Control", + "company": "ITE Smartcard Solutions Limited", + "mad": "0x4856", + "service_provider": "ITE Smartcard", + "system_integrator": "ITE Smartcard" + }, + { + "application": "Access control biometric reader", + "company": "Precise Biometrics AB", + "mad": "0x4857", + "service_provider": "Precise Biometrics AB", + "system_integrator": "Precise Biometrics AB" + }, + { + "application": "Contactless Smartcard Access Controll", + "company": "BQT Solutions Limited", + "mad": "0x4858", + "service_provider": "Banque-Tec", + "system_integrator": "Banque-Tec" + }, + { + "application": "Access control", + "company": "OASys GmbH", + "mad": "0x4859", + "service_provider": "Oasys GmbH", + "system_integrator": "Oasys GmbH" + }, + { + "application": "Access control", + "company": "OASys GmbH", + "mad": "0x486A", + "service_provider": "Oasys GmbH", + "system_integrator": "Oasys GmbH" + }, + { + "application": "Access control & security", + "company": "Third Millennium Systems Ltd", + "mad": "0x486B", + "service_provider": "Third Millenium", + "system_integrator": "Third Millenium" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x486C", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x486D", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x486E", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x486F", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x4870", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x4871", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x4872", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x4873", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x4874", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x4875", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x4876", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x4877", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x4878", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x4879", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x487A", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x487B", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x487C", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x487E", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x487F", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x4880", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x4881", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x4882", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x4883", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control", + "company": "IoLAN", + "mad": "0x4884", + "service_provider": "Iolan BV", + "system_integrator": "Iolan BV" + }, + { + "application": "Access control & security", + "company": "TechID Engineering bv", + "mad": "0x4885", + "service_provider": "TechID", + "system_integrator": "TechID" + }, + { + "application": "Access control & security", + "company": "N.V. Luchthaven", + "mad": "0x4886", + "service_provider": "N.V. Luchthaven Schiphol", + "system_integrator": "" + }, + { + "application": "Access control & security", + "company": "N.V. Luchthaven", + "mad": "0x4887", + "service_provider": "N.V. Luchthaven Schiphol", + "system_integrator": "" + }, + { + "application": "Access control & security", + "company": "N.V. Luchthaven", + "mad": "0x4888", + "service_provider": "N.V. Luchthaven Schiphol", + "system_integrator": "" + }, + { + "application": "Multi functional badge, private application", + "company": "Microtronic AG", + "mad": "0x4889", + "service_provider": "Microtronic AG", + "system_integrator": "Microtronic AG" + }, + { + "application": "Fingerprint infos compared to user's fingerprint for authentication", + "company": "Biocentric Solutions Inc.", + "mad": "0x489A", + "service_provider": "Biocentric Solutions Inc.", + "system_integrator": "Biocentric Solutions Inc." + }, + { + "application": "Access control application", + "company": "Lenel Systems International", + "mad": "0x489B", + "service_provider": "Lenel Systems International Inc.", + "system_integrator": "Lenel Systems International Inc." + }, + { + "application": "Access control application", + "company": "Lenel Systems International", + "mad": "0x489C", + "service_provider": "Lenel Systems International Inc.", + "system_integrator": "Lenel Systems International Inc." + }, + { + "application": "Access control", + "company": "Interlogix B.V.", + "mad": "0x489D", + "service_provider": "Ge Interlogix", + "system_integrator": "Ge Interlogix" + }, + { + "application": "Biometrial and specific access control data storage", + "company": "Tecisa74", + "mad": "0x489E", + "service_provider": "Tecisa74", + "system_integrator": "Tecisa74" + }, + { + "application": "Biometrial and specific access control data storage", + "company": "Tecisa74", + "mad": "0x489F", + "service_provider": "Tecisa74", + "system_integrator": "Tecisa74" + }, + { + "application": "Biometrial and specific access control data storage", + "company": "Tecisa74", + "mad": "0x48A0", + "service_provider": "Tecisa74", + "system_integrator": "Tecisa74" + }, + { + "application": "Card Holder Data/Card Management Data/Access Control & Security", + "company": "House of Representatives of States General", + "mad": "0x48A1", + "service_provider": "House of Representatives of States General", + "system_integrator": "Paul Sas" + }, + { + "application": "Book and pay system, Access control", + "company": "ADC Systems AB", + "mad": "0x48A2", + "service_provider": "ADC Systems", + "system_integrator": "ADC Systems" + }, + { + "application": "Access contr, time & attendance, multifunc card", + "company": "Horoquartz Gestion des Temps", + "mad": "0x48A3", + "service_provider": "Horoquartz", + "system_integrator": "Horoquartz" + }, + { + "application": "Multiapplication car for industry & trafic, parking, swimming pool", + "company": "ASEC S.A.", + "mad": "0x48A4", + "service_provider": "ASEC S.A", + "system_integrator": "ASEC S.A" + }, + { + "application": "Access control", + "company": "Miditec Datensysteme GmbH", + "mad": "0x48A5", + "service_provider": "Miditec", + "system_integrator": "Miditec" + }, + { + "application": "Acess control", + "company": "Miditec Datensysteme GmbH", + "mad": "0x48A6", + "service_provider": "Miditec", + "system_integrator": "Miditec" + }, + { + "application": "Access control, time & attendence, job control", + "company": "Captor N.V.", + "mad": "0x48A7", + "service_provider": "Captor NV", + "system_integrator": "Captor NV" + }, + { + "application": "Access contr, time & attendance, multifunc card", + "company": "Horoquartz Gestion des Temps", + "mad": "0x48A8", + "service_provider": "Horoquartz", + "system_integrator": "Horoquartz" + }, + { + "application": "Access control & security", + "company": "DATASEC Electronic GmbH", + "mad": "0x48A9", + "service_provider": "Datasec Electronic", + "system_integrator": "Datasec Electronic" + }, + { + "application": "Miscellaneous application, city traffic, access controll & security entertainment, car parking, electronic trade", + "company": "KFAP S.A.", + "mad": "0x48AA", + "service_provider": "KFPA", + "system_integrator": "KFPA" + }, + { + "application": "Access control", + "company": "Electronic Application Laboratory", + "mad": "0x48AB", + "service_provider": "EAL", + "system_integrator": "EAL" + }, + { + "application": "Access control, time management, electronic wallet", + "company": "Universitaire Ziekenhuizen Leuven", + "mad": "0x48AC", + "service_provider": "", + "system_integrator": "GET NV" + }, + { + "application": "Access control, Time and hendance", + "company": "Kaba Benzing GmbH", + "mad": "0x48AD", + "service_provider": "Kaba Benzing", + "system_integrator": "Kaba Benzing" + }, + { + "application": "Attendance-time rading, access control", + "company": "PDTS Gesellschaft für industrielle Datenverarbeitung Ges.mbH", + "mad": "0x48AE", + "service_provider": "PDTS", + "system_integrator": "PDTS" + }, + { + "application": "Access control, Time and attendance", + "company": "Vicking Electronics", + "mad": "0x48AF", + "service_provider": "Vicking Electronics", + "system_integrator": "Vicking Electronics" + }, + { + "application": "", + "company": "Gemplus Nv", + "mad": "0x48B0", + "service_provider": "ING Bank", + "system_integrator": "" + }, + { + "application": "Belgium", + "company": "Gemplus Nv", + "mad": "0x48B1", + "service_provider": "ING Bank", + "system_integrator": "" + }, + { + "application": "Belgium", + "company": "Gemplus Nv", + "mad": "0x48B2", + "service_provider": "ING Bank", + "system_integrator": "" + }, + { + "application": "Access Control", + "company": "IDESCO OY", + "mad": "0x48B3", + "service_provider": "Idesco Oy", + "system_integrator": "Idesco Oy" + }, + { + "application": "Access contr, time & attendance, multifunc card", + "company": "Horoquartz Gestion des Temps", + "mad": "0x48B4", + "service_provider": "Horoquartz", + "system_integrator": "Horoquartz" + }, + { + "application": "Access contr, time & attendance, multifunc card", + "company": "Horoquartz Gestion des Temps", + "mad": "0x48B5", + "service_provider": "Horoquartz", + "system_integrator": "Horoquartz" + }, + { + "application": "Storage of identification data", + "company": "SDS - Security Data Systems", + "mad": "0x48CF", + "service_provider": "SDS", + "system_integrator": "SDS" + }, + { + "application": "Storage of biometric data f. access contr. purposes", + "company": "SDS - Security Data Systems", + "mad": "0x48D0", + "service_provider": "SDS", + "system_integrator": "SDS" + }, + { + "application": "Storage of biometric data f. access contr. purposes", + "company": "SDS - Security Data Systems", + "mad": "0x48D1", + "service_provider": "SDS", + "system_integrator": "SDS" + }, + { + "application": "Storage of biometric data f. access contr. purposes", + "company": "SDS - Security Data Systems", + "mad": "0x48D2", + "service_provider": "SDS", + "system_integrator": "SDS" + }, + { + "application": "Storage of biometric data f. access contr. purposes", + "company": "SDS - Security Data Systems", + "mad": "0x48D3", + "service_provider": "SDS", + "system_integrator": "SDS" + }, + { + "application": "Storage of biometric data f. access contr. purposes", + "company": "SDS - Security Data Systems", + "mad": "0x48D4", + "service_provider": "SDS", + "system_integrator": "SDS" + }, + { + "application": "Storage of biometric data f. access contr. purposes", + "company": "SDS - Security Data Systems", + "mad": "0x48D5", + "service_provider": "SDS", + "system_integrator": "SDS" + }, + { + "application": "Access control & security", + "company": "Hi Sec International A/S", + "mad": "0x48D6", + "service_provider": "HI SEC International", + "system_integrator": "HI SEC International" + }, + { + "application": "Identification for access control", + "company": "Quality Equipment Benelux B.V.", + "mad": "0x48D7", + "service_provider": "Quality Equipment", + "system_integrator": "Quality Equipment" + }, + { + "application": "Physical access conrtol, biometrics, point of sale", + "company": "Procter and Gamble Company", + "mad": "0x48D8", + "service_provider": "Procter and Gamble Company", + "system_integrator": "Procter and Gamble Company" + }, + { + "application": "Physical access conrtol, biometrics, point of sale", + "company": "Procter and Gamble Company", + "mad": "0x48D9", + "service_provider": "Procter and Gamble Company", + "system_integrator": "Procter and Gamble Company" + }, + { + "application": "Physical access conrtol, biometrics, point of sale", + "company": "Procter and Gamble Company", + "mad": "0x48DA", + "service_provider": "Procter and Gamble Company", + "system_integrator": "Procter and Gamble Company" + }, + { + "application": "Physical access conrtol, biometrics, point of sale", + "company": "Procter and Gamble Company", + "mad": "0x48DB", + "service_provider": "Procter and Gamble Company", + "system_integrator": "Procter and Gamble Company" + }, + { + "application": "Physical access conrtol, biometrics, point of sale", + "company": "Procter and Gamble Company", + "mad": "0x48DC", + "service_provider": "Procter and Gamble Company", + "system_integrator": "Procter and Gamble Company" + }, + { + "application": "Physical access conrtol, biometrics, point of sale", + "company": "Procter and Gamble Company", + "mad": "0x48DD", + "service_provider": "Procter and Gamble Company", + "system_integrator": "Procter and Gamble Company" + }, + { + "application": "Physical access conrtol, biometrics, point of sale", + "company": "Procter and Gamble Company", + "mad": "0x48DE", + "service_provider": "Procter and Gamble Company", + "system_integrator": "Procter and Gamble Company" + }, + { + "application": "Physical access conrtol, biometrics, point of sale", + "company": "Procter and Gamble Company", + "mad": "0x48DF", + "service_provider": "Procter and Gamble Company", + "system_integrator": "Procter and Gamble Company" + }, + { + "application": "Physical access conrtol, biometrics, point of sale", + "company": "Procter and Gamble Company", + "mad": "0x48E0", + "service_provider": "Procter and Gamble Company", + "system_integrator": "Procter and Gamble Company" + }, + { + "application": "Physical access conrtol, biometrics, point of sale", + "company": "Procter and Gamble Company", + "mad": "0x48E1", + "service_provider": "Procter and Gamble Company", + "system_integrator": "Procter and Gamble Company" + }, + { + "application": "Physical access conrtol, biometrics, point of sale", + "company": "Procter and Gamble Company", + "mad": "0x48E2", + "service_provider": "Procter and Gamble Company", + "system_integrator": "Procter and Gamble Company" + }, + { + "application": "Physical access conrtol, biometrics, point of sale", + "company": "Procter and Gamble Company", + "mad": "0x48E3", + "service_provider": "Procter and Gamble Company", + "system_integrator": "Procter and Gamble Company" + }, + { + "application": "Physical access conrtol, biometrics, point of sale", + "company": "Procter and Gamble Company", + "mad": "0x48E4", + "service_provider": "Procter and Gamble Company", + "system_integrator": "Procter and Gamble Company" + }, + { + "application": "Physical access conrtol, biometrics, point of sale", + "company": "Procter and Gamble Company", + "mad": "0x48E5", + "service_provider": "Procter and Gamble Company", + "system_integrator": "Procter and Gamble Company" + }, + { + "application": "Physical access conrtol, biometrics, point of sale", + "company": "Procter and Gamble Company", + "mad": "0x48E6", + "service_provider": "Procter and Gamble Company", + "system_integrator": "Procter and Gamble Company" + }, + { + "application": "Finger Print Application", + "company": "Rexroth the identity company GmbH", + "mad": "0x48E7", + "service_provider": "Rexroth", + "system_integrator": "Rexroth" + }, + { + "application": "Finger Print Application", + "company": "Rexroth the identity company GmbH", + "mad": "0x48E8", + "service_provider": "Rexroth", + "system_integrator": "Rexroth" + }, + { + "application": "Access control and identification", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x48E9", + "service_provider": "PBV Kaufmann", + "system_integrator": "PBV Kaufmann" + }, + { + "application": "Access control and identification", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x48EA", + "service_provider": "PBV Kaufmann", + "system_integrator": "PBV Kaufmann" + }, + { + "application": "Access control and identification", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x48EB", + "service_provider": "PBV Kaufmann", + "system_integrator": "PBV Kaufmann" + }, + { + "application": "Access control and identification", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x48EC", + "service_provider": "PBV Kaufmann", + "system_integrator": "PBV Kaufmann" + }, + { + "application": "Computer, car parking, elec. purse, access control & security", + "company": "DECA Engineering", + "mad": "0x48ED", + "service_provider": "Deca Engineering", + "system_integrator": "Deca Engineering" + }, + { + "application": "Computer, car parking, elec. purse, access control & security", + "company": "DECA Engineering", + "mad": "0x48EE", + "service_provider": "Deca Engineering", + "system_integrator": "Deca Engineering" + }, + { + "application": "Access Control", + "company": "Salto Systems", + "mad": "0x48EF", + "service_provider": "Salto Systems", + "system_integrator": "Salto Systems" + }, + { + "application": "Electronic locks", + "company": "IR Security & Safety GmbH", + "mad": "0x48F0", + "service_provider": "IR Security & Safety", + "system_integrator": "IR Security & Safety" + }, + { + "application": "Access Control & Security", + "company": "CDV International", + "mad": "0x48F1", + "service_provider": "CDV", + "system_integrator": "CDV" + }, + { + "application": "Access Control & Security", + "company": "CDV International", + "mad": "0x48F2", + "service_provider": "CDV", + "system_integrator": "CDV" + }, + { + "application": "Access Control & Security", + "company": "CDV International", + "mad": "0x48F3", + "service_provider": "CDV", + "system_integrator": "CDV" + }, + { + "application": "Access Control & Security", + "company": "CDV International", + "mad": "0x48F4", + "service_provider": "CDV", + "system_integrator": "CDV" + }, + { + "application": "Access Control & Security", + "company": "CDV International", + "mad": "0x48F5", + "service_provider": "CDV", + "system_integrator": "CDV" + }, + { + "application": "Access Control & Security", + "company": "CDV International", + "mad": "0x48F6", + "service_provider": "CDV", + "system_integrator": "CDV" + }, + { + "application": "Access Control & Security", + "company": "CDV International", + "mad": "0x48F7", + "service_provider": "CDV", + "system_integrator": "CDV" + }, + { + "application": "Access Control & Security", + "company": "CDV International", + "mad": "0x48F8", + "service_provider": "CDV", + "system_integrator": "CDV" + }, + { + "application": "Access Control & Security", + "company": "CDV International", + "mad": "0x48F9", + "service_provider": "CDV", + "system_integrator": "CDV" + }, + { + "application": "Access Control & Security", + "company": "CDV International", + "mad": "0x48FA", + "service_provider": "CDV", + "system_integrator": "CDV" + }, + { + "application": "Access control, card contains, biometric data", + "company": "Spica International", + "mad": "0x48FB", + "service_provider": "Spica", + "system_integrator": "Spica" + }, + { + "application": "Access control & scecurity", + "company": "Adasoft AG", + "mad": "0x48FC", + "service_provider": "Adasoft AG", + "system_integrator": "Adasoft AG" + }, + { + "application": "Access control & scecurity", + "company": "Adasoft AG", + "mad": "0x48FD", + "service_provider": "Adasoft AG", + "system_integrator": "Adasoft AG" + }, + { + "application": "Access control & scecurity", + "company": "Adasoft AG", + "mad": "0x48FE", + "service_provider": "Adasoft AG", + "system_integrator": "Adasoft AG" + }, + { + "application": "Access control & scecurity", + "company": "Adasoft AG", + "mad": "0x48FF", + "service_provider": "Adasoft AG", + "system_integrator": "Adasoft AG" + }, + { + "application": "VIGIK", + "company": "Immotec Systemes", + "mad": "0x4902", + "service_provider": "Immotec", + "system_integrator": "Immotec" + }, + { + "application": "VIGIK", + "company": "Immotec Systemes", + "mad": "0x4903", + "service_provider": "Immotec", + "system_integrator": "Immotec" + }, + { + "application": "(access control and security) VIGIK", + "company": "CDV International", + "mad": "0x4904", + "service_provider": "CDVI", + "system_integrator": "CDVI" + }, + { + "application": "(access control and security) VIGIK", + "company": "CDV International", + "mad": "0x4905", + "service_provider": "CDVI", + "system_integrator": "CDVI" + }, + { + "application": "(access control and security) VIGIK", + "company": "CDV International", + "mad": "0x4906", + "service_provider": "CDVI", + "system_integrator": "CDVI" + }, + { + "application": "(access control and security) VIGIK", + "company": "CDV International", + "mad": "0x4907", + "service_provider": "CDVI", + "system_integrator": "CDVI" + }, + { + "application": "(access control and security) VIGIK", + "company": "CDV International", + "mad": "0x4908", + "service_provider": "CDVI", + "system_integrator": "CDVI" + }, + { + "application": "(access control and security) VIGIK", + "company": "CDV International", + "mad": "0x4909", + "service_provider": "CDVI", + "system_integrator": "CDVI" + }, + { + "application": "(access control and security) VIGIK", + "company": "CDV International", + "mad": "0x490A", + "service_provider": "CDVI", + "system_integrator": "CDVI" + }, + { + "application": "(access control and security) VIGIK", + "company": "CDV International", + "mad": "0x490B", + "service_provider": "CDVI", + "system_integrator": "CDVI" + }, + { + "application": "(access control and security) VIGIK", + "company": "CDV International", + "mad": "0x490C", + "service_provider": "CDVI", + "system_integrator": "CDVI" + }, + { + "application": "(access control and security) VIGIK", + "company": "CDV International", + "mad": "0x490D", + "service_provider": "CDVI", + "system_integrator": "CDVI" + }, + { + "application": "(access control and security) VIGIK", + "company": "CDV International", + "mad": "0x490E", + "service_provider": "CDVI", + "system_integrator": "CDVI" + }, + { + "application": "(access control and security) VIGIK", + "company": "CDV International", + "mad": "0x490F", + "service_provider": "CDVI", + "system_integrator": "CDVI" + }, + { + "application": "(access control and security) VIGIK", + "company": "CDV International", + "mad": "0x4910", + "service_provider": "CDVI", + "system_integrator": "CDVI" + }, + { + "application": "(access control and security) VIGIK", + "company": "CDV International", + "mad": "0x4911", + "service_provider": "CDVI", + "system_integrator": "CDVI" + }, + { + "application": "(access control and security) VIGIK", + "company": "CDV International", + "mad": "0x4912", + "service_provider": "CDVI", + "system_integrator": "CDVI" + }, + { + "application": "(access control and security) VIGIK", + "company": "CDV International", + "mad": "0x4913", + "service_provider": "CDVI", + "system_integrator": "CDVI" + }, + { + "application": "Card Administratin, cardholder adminstration, access control & security, company services, miscellaneous applications", + "company": "Ministry of Defense", + "mad": "0x4A01", + "service_provider": "Ministry of Defence", + "system_integrator": "" + }, + { + "application": "Card Administratin, cardholder adminstration, access control & security, company services, miscellaneous applications", + "company": "Ministry of Defense", + "mad": "0x4A02", + "service_provider": "Ministry of Defence", + "system_integrator": "" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C01", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C02", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C03", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C04", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C05", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C06", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C07", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C08", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C09", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C0A", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C0B", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C0C", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C0D", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C0E", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C0F", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C10", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C11", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C12", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C13", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C14", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C15", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C16", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C17", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C18", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C19", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C1A", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C1B", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C1C", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C1D", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C1E", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C1F", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C20", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C21", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C22", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C23", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C24", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C25", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C26", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C27", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Physical Access Control Systems (PACS) of the major European Union Institues", + "company": "European Commission", + "mad": "0x4C28", + "service_provider": "Various", + "system_integrator": "Various" + }, + { + "application": "Ski ticketing", + "company": "ADI Ltd.", + "mad": "0x5001", + "service_provider": "BO RROC Sigulda", + "system_integrator": "ADI Ltd." + }, + { + "application": "Ski ticketing, member card, ski association, discounts", + "company": "Cetrta Pot d.o.o.", + "mad": "0x5002", + "service_provider": "Slovenian Ski Association", + "system_integrator": "Cetrta Pot" + }, + { + "application": "Ski ticketing system based on electronic purse", + "company": "ADI Ltd.", + "mad": "0x5003", + "service_provider": "Ramkalni Ltd", + "system_integrator": "ADI Ltd" + }, + { + "application": "Ski ticketing", + "company": "ADI Ltd.", + "mad": "0x5004", + "service_provider": "K-Kalins Ltd.", + "system_integrator": "ADI Ltd" + }, + { + "application": "Entertainment and Sports, Stadiums, Parking, Ski Ticketing", + "company": "Axess AG", + "mad": "0x5005", + "service_provider": "Axess", + "system_integrator": "Axess" + }, + { + "application": "Access control & security, city traffic, sports & entertainment", + "company": "IP Core", + "mad": "0x5006", + "service_provider": "IP Core", + "system_integrator": "IP Core" + }, + { + "application": "Ski ticketing", + "company": "ADI Ltd", + "mad": "0x5007", + "service_provider": "FROKS Ltd", + "system_integrator": "ADI" + }, + { + "application": "Ski ticketing", + "company": "ADI Ltd", + "mad": "0x5008", + "service_provider": "Kalnzaki", + "system_integrator": "ADI" + }, + { + "application": "Local Ski Ticketing Sysem based on electronic purse", + "company": "ADI Ltd", + "mad": "0x5009", + "service_provider": "Mezezers Ltd.", + "system_integrator": "ADI Ltd." + }, + { + "application": "Access Control", + "company": "NEDAP NV", + "mad": "0x5101", + "service_provider": "Nedap Ideas", + "system_integrator": "Nedap Ideas" + }, + { + "application": "Access Control & Security", + "company": "NOVO GmbH", + "mad": "0x5102", + "service_provider": "1. FC Köln GmbH&Co KG", + "system_integrator": "" + }, + { + "application": "Access control and security", + "company": "GPS Tecnologia Ltda.", + "mad": "0x5103", + "service_provider": "GPS Tec", + "system_integrator": "GPS Tec" + }, + { + "application": "Access control and security", + "company": "GPS Tecnologia Ltda.", + "mad": "0x5104", + "service_provider": "GPS Tec", + "system_integrator": "GPS Tec" + }, + { + "application": "Access control", + "company": "Custom Micro Products Ltd.", + "mad": "0x5105", + "service_provider": "Custom Micro Products", + "system_integrator": "Custom Micro Products" + }, + { + "application": "Biometric Access Control", + "company": "CYNAPS", + "mad": "0x5106", + "service_provider": "Cynaps", + "system_integrator": "Cynaps" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x5107", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x5108", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x5109", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x510A", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x510B", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x510C", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x510D", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x510E", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x510F", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x5110", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x5111", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x5112", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x5113", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x5114", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x5115", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x5116", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x5117", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x5118", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x5119", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x511A", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x511B", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x511C", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x511D", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x511E", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control and security", + "company": "Alfapass", + "mad": "0x511F", + "service_provider": "Alfapass", + "system_integrator": "Alfapass" + }, + { + "application": "Access control", + "company": "Tyco Software House", + "mad": "0x5120", + "service_provider": "Tyco Software House", + "system_integrator": "Tyco Software House" + }, + { + "application": "Access control", + "company": "Connex Solutions Limited", + "mad": "0x5121", + "service_provider": "Connex", + "system_integrator": "Connex" + }, + { + "application": "Acess Control, Time and Attendance", + "company": "Milenio 3 Systemas Electonicos", + "mad": "0x5122", + "service_provider": "Milenio3", + "system_integrator": "Milenio3" + }, + { + "application": "Access control & security", + "company": "CORESTREET", + "mad": "0x5123", + "service_provider": "Corestreet", + "system_integrator": "Corestreet" + }, + { + "application": "Access control & security", + "company": "Honeywell", + "mad": "0x5124", + "service_provider": "Honeywell", + "system_integrator": "Honeywell" + }, + { + "application": "Access control & security", + "company": "Honeywell", + "mad": "0x5125", + "service_provider": "Honeywell", + "system_integrator": "Honeywell" + }, + { + "application": "Access control & security", + "company": "Honeywell", + "mad": "0x5126", + "service_provider": "Honeywell", + "system_integrator": "Honeywell" + }, + { + "application": "Access control & security", + "company": "Honeywell", + "mad": "0x5127", + "service_provider": "Honeywell", + "system_integrator": "Honeywell" + }, + { + "application": "Access control & security", + "company": "Honeywell", + "mad": "0x5128", + "service_provider": "Honeywell", + "system_integrator": "Honeywell" + }, + { + "application": "Access control & security", + "company": "Honeywell", + "mad": "0x5129", + "service_provider": "Honeywell", + "system_integrator": "Honeywell" + }, + { + "application": "Access control & security", + "company": "Honeywell", + "mad": "0x512A", + "service_provider": "Honeywell", + "system_integrator": "Honeywell" + }, + { + "application": "Access control & security", + "company": "Honeywell", + "mad": "0x512B", + "service_provider": "Honeywell", + "system_integrator": "Honeywell" + }, + { + "application": "Biometrics strong authentication", + "company": "LabCal", + "mad": "0x512C", + "service_provider": "Labcal", + "system_integrator": "Labcal" + }, + { + "application": "Access control & security", + "company": "GOB Software&System GmbH Co. KG", + "mad": "0x512D", + "service_provider": "GOB", + "system_integrator": "GOB" + }, + { + "application": "Access control & security", + "company": "Suprema Inc", + "mad": "0x512E", + "service_provider": "Suprema", + "system_integrator": "Suprema" + }, + { + "application": "Access control & security", + "company": "Suprema Inc", + "mad": "0x512F", + "service_provider": "Suprema", + "system_integrator": "Suprema" + }, + { + "application": "Access control & security", + "company": "Suprema Inc", + "mad": "0x5130", + "service_provider": "Suprema", + "system_integrator": "Suprema" + }, + { + "application": "Access control & security", + "company": "Suprema Inc", + "mad": "0x5131", + "service_provider": "Suprema", + "system_integrator": "Suprema" + }, + { + "application": "Access control & security", + "company": "Suprema Inc", + "mad": "0x5132", + "service_provider": "Suprema", + "system_integrator": "Suprema" + }, + { + "application": "Access control & security", + "company": "Suprema Inc", + "mad": "0x5133", + "service_provider": "Suprema", + "system_integrator": "Suprema" + }, + { + "application": "Access control & security", + "company": "Suprema Inc", + "mad": "0x5134", + "service_provider": "Suprema", + "system_integrator": "Suprema" + }, + { + "application": "Access control & security", + "company": "Suprema Inc", + "mad": "0x5135", + "service_provider": "Suprema", + "system_integrator": "Suprema" + }, + { + "application": "Compelete system for lockers, access control & electr. payment", + "company": "Ojmar S. A.", + "mad": "0x5136", + "service_provider": "", + "system_integrator": "Enkoa System S.L." + }, + { + "application": "Access control", + "company": "Honeywell Building Solutions", + "mad": "0x5137", + "service_provider": "Honeywell", + "system_integrator": "Honeywell" + }, + { + "application": "Electronic purse, access control for buliding automation", + "company": "CDE Communication Data Engineering GmbH", + "mad": "0x5138", + "service_provider": "CDE", + "system_integrator": "CDE" + }, + { + "application": "Electronic purse, access control for buliding automation", + "company": "CDE Communication Data Engineering GmbH", + "mad": "0x5139", + "service_provider": "CDE", + "system_integrator": "CDE" + }, + { + "application": "Company services, access & sec control, electronic purse...", + "company": "Cominfo a.s.", + "mad": "0x513A", + "service_provider": "Cominfo", + "system_integrator": "Cominfo" + }, + { + "application": "Access control, card management", + "company": "ID-WARE", + "mad": "0x513B", + "service_provider": "ID-WARE b.v.", + "system_integrator": "" + }, + { + "application": "Access control, card management", + "company": "ID-WARE", + "mad": "0x513C", + "service_provider": "ID-WARE b.v.", + "system_integrator": "" + }, + { + "application": "Access control & security, city traffic, sports & entertainment", + "company": "IP Core", + "mad": "0x513D", + "service_provider": "IP Core", + "system_integrator": "IP Core" + }, + { + "application": "Access control, computer application, company services", + "company": "Volvo Car Corporation", + "mad": "0x513E", + "service_provider": "Volvo Car", + "system_integrator": "Volvo Car" + }, + { + "application": "Access contr, time and attendance", + "company": "Nisus nv", + "mad": "0x513F", + "service_provider": "Nisus NV", + "system_integrator": "NIsus NV" + }, + { + "application": "Time & attendance", + "company": "Flora Holland", + "mad": "0x5140", + "service_provider": "Interflex Datasystems", + "system_integrator": "Interflex Datasystems" + }, + { + "application": "Elec ticketing, access control, electronic purse", + "company": "Empresa 1 Sistemas de Automacao e Comercio", + "mad": "0x5141", + "service_provider": "Empresa 1", + "system_integrator": "Empresa 1" + }, + { + "application": "Biometric Terminal", + "company": "Recognition Systems LLC", + "mad": "0x5142", + "service_provider": "Recognition Systems", + "system_integrator": "" + }, + { + "application": "Access control & security", + "company": "Evotech B.V.", + "mad": "0x5143", + "service_provider": "Evotech B.V., GTI NV", + "system_integrator": "Evotech B.V." + }, + { + "application": "Time attendnace, fuel, access control", + "company": "Emcard a.s.", + "mad": "0x5144", + "service_provider": "Emtest", + "system_integrator": "Emtest" + }, + { + "application": "Access control and security", + "company": "Scotcomms Technology Group Ltd.", + "mad": "0x5145", + "service_provider": "Various", + "system_integrator": "Scotcomms Technology Group Ltd." + }, + { + "application": "Debit Card, Door Acces Control, Computer Identification", + "company": "Netcard", + "mad": "0x5146", + "service_provider": "Netcard", + "system_integrator": "Netcard" + }, + { + "application": "MES Manufactoring Execution System", + "company": "gbo datacomp GmbH", + "mad": "0x5148", + "service_provider": "Gbo datacomp GmbH", + "system_integrator": "gbo datacomp GmbH" + }, + { + "application": "MES Manufactoring Execution System", + "company": "gbo datacomp GmbH", + "mad": "0x5149", + "service_provider": "Gbo datacomp GmbH", + "system_integrator": "gbo datacomp GmbH" + }, + { + "application": "Access control & security", + "company": "Farpointe Data Inc", + "mad": "0x514A", + "service_provider": "Farpointe", + "system_integrator": "" + }, + { + "application": "Fingerprint Recognition Application", + "company": "ESCO Biometric BVBA", + "mad": "0x514B", + "service_provider": "ESCO Biometric", + "system_integrator": "ESCO Biometric" + }, + { + "application": "Access Control", + "company": "Interflex Datensysteme GmbH", + "mad": "0x514C", + "service_provider": "", + "system_integrator": "Interflex Datensysteme GmbH & CoKG" + }, + { + "application": "Access Control", + "company": "Interflex Datensysteme GmbH", + "mad": "0x514D", + "service_provider": "", + "system_integrator": "Interflex Datensysteme GmbH & CoKG" + }, + { + "application": "Access Control", + "company": "Interflex Datensysteme GmbH", + "mad": "0x514E", + "service_provider": "", + "system_integrator": "Interflex Datensysteme GmbH & CoKG" + }, + { + "application": "Access Control", + "company": "Interflex Datensysteme GmbH", + "mad": "0x514F", + "service_provider": "", + "system_integrator": "Interflex Datensysteme GmbH & CoKG" + }, + { + "application": "Fidelity Card", + "company": "Sogedex", + "mad": "0x5150", + "service_provider": "Sogedex", + "system_integrator": "Sogedex" + }, + { + "application": "Fidelity Card", + "company": "Sogedex", + "mad": "0x5151", + "service_provider": "Sogedex", + "system_integrator": "Sogedex" + }, + { + "application": "Identification and authentification system", + "company": "Sogedex", + "mad": "0x5152", + "service_provider": "Sogedex", + "system_integrator": "Sogedex" + }, + { + "application": "Identification and authentification system", + "company": "Sogedex", + "mad": "0x5153", + "service_provider": "Sogedex", + "system_integrator": "Sogedex" + }, + { + "application": "Access Control, Time Attendance, Job Costing, Ticketing", + "company": "Hectrix Limited", + "mad": "0x5154", + "service_provider": "Hectrix Ltd.", + "system_integrator": "Hectrix. Ltd." + }, + { + "application": "Access Control, Time Attendance, Job Costing, Ticketing", + "company": "Hectrix Limited", + "mad": "0x5155", + "service_provider": "Hectrix Ltd.", + "system_integrator": "Hectrix. Ltd." + }, + { + "application": "Access control & security", + "company": "Roger Dariusz Wensker", + "mad": "0x5156", + "service_provider": "Roger", + "system_integrator": "Roger" + }, + { + "application": "Access control & security", + "company": "Roger Dariusz Wensker", + "mad": "0x5157", + "service_provider": "Roger", + "system_integrator": "Roger" + }, + { + "application": "Access control & security", + "company": "Roger Dariusz Wensker", + "mad": "0x5158", + "service_provider": "Roger", + "system_integrator": "Roger" + }, + { + "application": "Access control & security", + "company": "Roger Dariusz Wensker", + "mad": "0x5159", + "service_provider": "Roger", + "system_integrator": "Roger" + }, + { + "application": "Access & parking control, electronic purse", + "company": "General Meters Corp", + "mad": "0x515A", + "service_provider": "General Meters", + "system_integrator": "General Meters" + }, + { + "application": "Car parking, sport applic, hotel, access control systems", + "company": "DATASEC Electronic GmbH", + "mad": "0x515B", + "service_provider": "Datasec", + "system_integrator": "Datatsec" + }, + { + "application": "Car parking, sport applic, hotel, access control systems", + "company": "DATASEC Electronic GmbH", + "mad": "0x515C", + "service_provider": "Datasec", + "system_integrator": "Datatsec" + }, + { + "application": "Access & Inventory conrtol", + "company": "Shockfish SA", + "mad": "0x515D", + "service_provider": "Shockfish", + "system_integrator": "Shockfish" + }, + { + "application": "Access & Inventory conrtol", + "company": "Shockfish SA", + "mad": "0x515E", + "service_provider": "Shockfish", + "system_integrator": "Shockfish" + }, + { + "application": "Access & Inventory conrtol", + "company": "Shockfish SA", + "mad": "0x515F", + "service_provider": "Shockfish", + "system_integrator": "Shockfish" + }, + { + "application": "Access & Inventory conrtol", + "company": "Shockfish SA", + "mad": "0x5160", + "service_provider": "Shockfish", + "system_integrator": "Shockfish" + }, + { + "application": "Access control", + "company": "EAL Apeldoorn B.V.", + "mad": "0x5161", + "service_provider": "EAL", + "system_integrator": "EAL" + }, + { + "application": "Access Control, E-purse", + "company": "Gemalto", + "mad": "0x5162", + "service_provider": "Gemplus", + "system_integrator": "Gemplus" + }, + { + "application": "Access Control, E-purse", + "company": "Gemalto", + "mad": "0x5163", + "service_provider": "Gemplus", + "system_integrator": "Gemplus" + }, + { + "application": "Ausweiskarte", + "company": "Allgemeine Unfallversicherungsanstalt (AUVA)", + "mad": "0x5164", + "service_provider": "AUVA", + "system_integrator": "AUVA" + }, + { + "application": "Ausweiskarte", + "company": "Allgemeine Unfallversicherungsanstalt (AUVA)", + "mad": "0x5165", + "service_provider": "AUVA", + "system_integrator": "AUVA" + }, + { + "application": "Ausweiskarte", + "company": "Allgemeine Unfallversicherungsanstalt (AUVA)", + "mad": "0x5166", + "service_provider": "AUVA", + "system_integrator": "AUVA" + }, + { + "application": "Access Control & Security", + "company": "Nsecure B.V.", + "mad": "0x5167", + "service_provider": "Nsecure", + "system_integrator": "Nsecure" + }, + { + "application": "Fingerprint application, access control & security", + "company": "Shenzhen Ideal Microelectronics Co. Ltd.", + "mad": "0x5168", + "service_provider": "Shenzhen Ideal Microelectronics Co. Ltd.", + "system_integrator": "Shenzhen Ideal Microelectronics Co. Ltd." + }, + { + "application": "Fingerprint application, access control & security", + "company": "Shenzhen Ideal Microelectronics Co. Ltd.", + "mad": "0x5169", + "service_provider": "Shenzhen Ideal Microelectronics Co. Ltd.", + "system_integrator": "Shenzhen Ideal Microelectronics Co. Ltd." + }, + { + "application": "Fingerprint application, access control & security", + "company": "Shenzhen Ideal Microelectronics Co. Ltd.", + "mad": "0x516A", + "service_provider": "Shenzhen Ideal Microelectronics Co. Ltd.", + "system_integrator": "Shenzhen Ideal Microelectronics Co. Ltd." + }, + { + "application": "Fingerprint application, access control & security", + "company": "Shenzhen Ideal Microelectronics Co. Ltd.", + "mad": "0x516B", + "service_provider": "Shenzhen Ideal Microelectronics Co. Ltd.", + "system_integrator": "Shenzhen Ideal Microelectronics Co. Ltd." + }, + { + "application": "Access Control Reader", + "company": "Access Control Technology", + "mad": "0x516C", + "service_provider": "ACT", + "system_integrator": "ACT" + }, + { + "application": "Access control", + "company": "Cogelec", + "mad": "0x516D", + "service_provider": "Cogelec", + "system_integrator": "Cogelec" + }, + { + "application": "Access control", + "company": "Cogelec", + "mad": "0x516E", + "service_provider": "Cogelec", + "system_integrator": "Cogelec" + }, + { + "application": "Access control", + "company": "Cogelec", + "mad": "0x516F", + "service_provider": "Cogelec", + "system_integrator": "Cogelec" + }, + { + "application": "Access control", + "company": "Cogelec", + "mad": "0x5170", + "service_provider": "Cogelec", + "system_integrator": "Cogelec" + }, + { + "application": "Access control", + "company": "Cogelec", + "mad": "0x5171", + "service_provider": "Cogelec", + "system_integrator": "Cogelec" + }, + { + "application": "Access control", + "company": "Cogelec", + "mad": "0x5172", + "service_provider": "Cogelec", + "system_integrator": "Cogelec" + }, + { + "application": "Access control", + "company": "Cogelec", + "mad": "0x5173", + "service_provider": "Cogelec", + "system_integrator": "Cogelec" + }, + { + "application": "Access control", + "company": "Cogelec", + "mad": "0x5174", + "service_provider": "Cogelec", + "system_integrator": "Cogelec" + }, + { + "application": "Access control", + "company": "Cogelec", + "mad": "0x5175", + "service_provider": "Cogelec", + "system_integrator": "Cogelec" + }, + { + "application": "Access control", + "company": "Cogelec", + "mad": "0x5176", + "service_provider": "Cogelec", + "system_integrator": "Cogelec" + }, + { + "application": "Uhlmann & Zacher Clex prime, online and offline electronic locking and access control systems", + "company": "Uhlmann & Zacher GmbH", + "mad": "0x5177", + "service_provider": "Uhlmann & Zacher GmbH", + "system_integrator": "" + }, + { + "application": "Hotel, acces control & security", + "company": "Talleres De Escoriaza S.A.", + "mad": "0x5178", + "service_provider": "Talleres", + "system_integrator": "Talleres" + }, + { + "application": "Energy Saving System For Hotels, Access Control", + "company": "ENKOA System", + "mad": "0x5179", + "service_provider": "Enkoa System S.L.", + "system_integrator": "Enkoa System S.L." + }, + { + "application": "Access conrol function & security", + "company": "Tyco Fire & Security", + "mad": "0x517A", + "service_provider": "Tyco", + "system_integrator": "Tyco" + }, + { + "application": "Logical & Physical access control", + "company": "Pin Cash International B.V.", + "mad": "0x517B", + "service_provider": "PinCash", + "system_integrator": "PinCash" + }, + { + "application": "VIGIK", + "company": "Immotec Systemes", + "mad": "0x517C", + "service_provider": "Immotec", + "system_integrator": "Immotec" + }, + { + "application": "VIGIK", + "company": "Immotec Systemes", + "mad": "0x517D", + "service_provider": "Immotec", + "system_integrator": "Immotec" + }, + { + "application": "VIGIK", + "company": "Immotec Systemes", + "mad": "0x517E", + "service_provider": "Immotec", + "system_integrator": "Immotec" + }, + { + "application": "MIFARE Booster config", + "company": "NEDAP NV", + "mad": "0x517F", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "MIFARE Booster config", + "company": "NEDAP NV", + "mad": "0x5180", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Access control for centrally managed waste treatment", + "company": "Alphatronics", + "mad": "0x5181", + "service_provider": "Alphatronics", + "system_integrator": "Alphatronics" + }, + { + "application": "Access control and identification", + "company": "CEM Systems", + "mad": "0x5182", + "service_provider": "CEM Systems Ltd", + "system_integrator": "CEM Systems Ltd" + }, + { + "application": "Access control and identification", + "company": "CEM Systems", + "mad": "0x5183", + "service_provider": "CEM Systems Ltd", + "system_integrator": "CEM Systems Ltd" + }, + { + "application": "Access control and identification", + "company": "CEM Systems", + "mad": "0x5184", + "service_provider": "CEM Systems Ltd", + "system_integrator": "CEM Systems Ltd" + }, + { + "application": "Hotel, access contr. & sec", + "company": "Vingcard a.s.", + "mad": "0x5185", + "service_provider": "Vingcard", + "system_integrator": "Vingcard" + }, + { + "application": "Hotel, access contr. & sec", + "company": "Vingcard a.s.", + "mad": "0x5186", + "service_provider": "Vingcard", + "system_integrator": "Vingcard" + }, + { + "application": "Zeiterfassung, Werks- bzw. Gebäudezutritt", + "company": "Voestalpine Informationstechnologie GmbH", + "mad": "0x5187", + "service_provider": "Voestalpine Informationstechnologie GmbH", + "system_integrator": "Voestalpine Informationstechnologie GmbH" + }, + { + "application": "Admiral Ausweiskarte (ID-Card)", + "company": "PDTS Gesellschaft für industrielle Datenverarbeitung Ges.mbH", + "mad": "0x5188", + "service_provider": "Admiral Sportwetten GmbH", + "system_integrator": "" + }, + { + "application": "Personal ID and Reporting of Attendance", + "company": "The Swedish Construction Federation", + "mad": "0x5189", + "service_provider": "Sveriges Byggindustrier", + "system_integrator": "" + }, + { + "application": "Personal ID and Reporting of Attendance", + "company": "The Swedish Construction Federation", + "mad": "0x518A", + "service_provider": "Sveriges Byggindustrier", + "system_integrator": "" + }, + { + "application": "Personal ID and Reporting of Attendance", + "company": "The Swedish Construction Federation", + "mad": "0x518B", + "service_provider": "Sveriges Byggindustrier", + "system_integrator": "" + }, + { + "application": "Personal ID and Reporting of Attendance", + "company": "The Swedish Construction Federation", + "mad": "0x518C", + "service_provider": "Sveriges Byggindustrier", + "system_integrator": "" + }, + { + "application": "Personal identification & reporting of attendance", + "company": "The Swedish Construction Federation", + "mad": "0x518D", + "service_provider": "Swedish Construction Fed", + "system_integrator": "" + }, + { + "application": "Personal identification & reporting of attendance", + "company": "The Swedish Construction Federation", + "mad": "0x518E", + "service_provider": "Swedish Construction Fed", + "system_integrator": "" + }, + { + "application": "Security", + "company": "Telenot Electronic GmbH", + "mad": "0x518F", + "service_provider": "Telenot Electronic GmbH", + "system_integrator": "" + }, + { + "application": "Access Control & Security", + "company": "Kaba-Ilco, Inc.", + "mad": "0x5190", + "service_provider": "Kaba Ilco", + "system_integrator": "Kaba Ilco" + }, + { + "application": "Access Control & Security", + "company": "Blue Systems International", + "mad": "0x5191", + "service_provider": "Blue Products.com", + "system_integrator": "Blue Systems International" + }, + { + "application": "Access Control & Security", + "company": "XceedID Corporation", + "mad": "0x5192", + "service_provider": "Xceed ID Corporation", + "system_integrator": "Xceed ID Corporation" + }, + { + "application": "Access Control & Security", + "company": "XceedID Corporation", + "mad": "0x5193", + "service_provider": "Xceed ID Corporation", + "system_integrator": "Xceed ID Corporation" + }, + { + "application": "Arcelor", + "company": "EM Group", + "mad": "0x5194", + "service_provider": "EMGROUP", + "system_integrator": "EMGROUP" + }, + { + "application": "Identification and authentification system", + "company": "Sogedex", + "mad": "0x5195", + "service_provider": "SOGEDEX", + "system_integrator": "SOGEDEX" + }, + { + "application": "Identification and authentification system", + "company": "Sogedex", + "mad": "0x5196", + "service_provider": "SOGEDEX", + "system_integrator": "SOGEDEX" + }, + { + "application": "Identification and authentification system", + "company": "Sogedex", + "mad": "0x5197", + "service_provider": "SOGEDEX", + "system_integrator": "SOGEDEX" + }, + { + "application": "Identification and authentification system", + "company": "Sogedex", + "mad": "0x5198", + "service_provider": "SOGEDEX", + "system_integrator": "SOGEDEX" + }, + { + "application": "Identification and authentification system", + "company": "Sogedex", + "mad": "0x5199", + "service_provider": "SOGEDEX", + "system_integrator": "SOGEDEX" + }, + { + "application": "Identification and authentification system", + "company": "Sogedex", + "mad": "0x519A", + "service_provider": "SOGEDEX", + "system_integrator": "SOGEDEX" + }, + { + "application": "Identification and authentification system", + "company": "Sogedex", + "mad": "0x519B", + "service_provider": "SOGEDEX", + "system_integrator": "SOGEDEX" + }, + { + "application": "Identification and authentification system", + "company": "Sogedex", + "mad": "0x519C", + "service_provider": "SOGEDEX", + "system_integrator": "SOGEDEX" + }, + { + "application": "Identification and authentification system", + "company": "Sogedex", + "mad": "0x519D", + "service_provider": "SOGEDEX", + "system_integrator": "SOGEDEX" + }, + { + "application": "Identification and authentification system", + "company": "Sogedex", + "mad": "0x519E", + "service_provider": "SOGEDEX", + "system_integrator": "SOGEDEX" + }, + { + "application": "Electronic ticketing system", + "company": "CDE Communication Data Engineering GmbH", + "mad": "0x519F", + "service_provider": "CDE-Competence Center for embedded solutions", + "system_integrator": "CDE - Competence Center for embedded solutions" + }, + { + "application": "Electronic ticketing system", + "company": "CDE Communication Data Engineering GmbH", + "mad": "0x51A0", + "service_provider": "CDE-Competence Center for embedded solutions", + "system_integrator": "CDE - Competence Center for embedded solutions" + }, + { + "application": "Access control & security", + "company": "Shenzhen Ideal Microelectronics Co. Ltd.", + "mad": "0x51A1", + "service_provider": "Shenzen IDEAL Microelectronics Co., Ltd.", + "system_integrator": "Shenzen IDEAL Microelectronics Co., Ltd." + }, + { + "application": "Access control & security", + "company": "Shenzhen Ideal Microelectronics Co. Ltd.", + "mad": "0x51A2", + "service_provider": "Shenzen IDEAL Microelectronics Co., Ltd.", + "system_integrator": "Shenzen IDEAL Microelectronics Co., Ltd." + }, + { + "application": "Access control & security", + "company": "Shenzhen Ideal Microelectronics Co. Ltd.", + "mad": "0x51A3", + "service_provider": "Shenzen IDEAL Microelectronics Co., Ltd.", + "system_integrator": "Shenzen IDEAL Microelectronics Co., Ltd." + }, + { + "application": "Access control & security", + "company": "Shenzhen Ideal Microelectronics Co. Ltd.", + "mad": "0x51A4", + "service_provider": "Shenzen IDEAL Microelectronics Co., Ltd.", + "system_integrator": "Shenzen IDEAL Microelectronics Co., Ltd." + }, + { + "application": "Access control & security", + "company": "Shenzhen Ideal Microelectronics Co. Ltd.", + "mad": "0x51A5", + "service_provider": "Shenzen IDEAL Microelectronics Co., Ltd.", + "system_integrator": "Shenzen IDEAL Microelectronics Co., Ltd." + }, + { + "application": "Access control & security", + "company": "Shenzhen Ideal Microelectronics Co. Ltd.", + "mad": "0x51A6", + "service_provider": "Shenzen IDEAL Microelectronics Co., Ltd.", + "system_integrator": "Shenzen IDEAL Microelectronics Co., Ltd." + }, + { + "application": "Access control & security", + "company": "Shenzhen Ideal Microelectronics Co. Ltd.", + "mad": "0x51A7", + "service_provider": "Shenzen IDEAL Microelectronics Co., Ltd.", + "system_integrator": "Shenzen IDEAL Microelectronics Co., Ltd." + }, + { + "application": "Access control & security", + "company": "Shenzhen Ideal Microelectronics Co. Ltd.", + "mad": "0x51A8", + "service_provider": "Shenzen IDEAL Microelectronics Co., Ltd.", + "system_integrator": "Shenzen IDEAL Microelectronics Co., Ltd." + }, + { + "application": "TIME AND ATTENDANCE, ACCESS CONTROL", + "company": "Pyrescom", + "mad": "0x51A9", + "service_provider": "PYRESCOM", + "system_integrator": "PYRESCOM" + }, + { + "application": "Attendance registration and access control", + "company": "Simac QUADCORE", + "mad": "0x51AA", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Access services (to all buildings of Belgian regional and federal political assembles) and Time and Attendances Services", + "company": "Vlaams Parlement", + "mad": "0x51AB", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Physical Access Control", + "company": "General Motors", + "mad": "0x51AC", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Access Control", + "company": "BEKA Elektronik", + "mad": "0x51AD", + "service_provider": "BEKA Electronik", + "system_integrator": "BEKA Electronik" + }, + { + "application": "Access Control & Security for Ericsson world wide", + "company": "Coor Service Management AB", + "mad": "0x51AE", + "service_provider": "Telefonaktiebolaget LM Ericsson", + "system_integrator": "Coor Service Management AB, PAS, Card and Know IT" + }, + { + "application": "Access Control & Security for Ericsson world wide", + "company": "Coor Service Management AB", + "mad": "0x51AF", + "service_provider": "Telefonaktiebolaget LM Ericsson", + "system_integrator": "Coor Service Management AB, PAS, Card and Know IT" + }, + { + "application": "Access Control & Security for Ericsson world wide", + "company": "Coor Service Management AB", + "mad": "0x51B0", + "service_provider": "Telefonaktiebolaget LM Ericsson", + "system_integrator": "Coor Service Management AB, PAS, Card and Know IT" + }, + { + "application": "Access Control & Security for Ericsson world wide", + "company": "Coor Service Management AB", + "mad": "0x51B1", + "service_provider": "Telefonaktiebolaget LM Ericsson", + "system_integrator": "Coor Service Management AB, PAS, Card and Know IT" + }, + { + "application": "Access Control & Security for Ericsson world wide", + "company": "Coor Service Management AB", + "mad": "0x51B2", + "service_provider": "Telefonaktiebolaget LM Ericsson", + "system_integrator": "Coor Service Management AB, PAS, Card and Know IT" + }, + { + "application": "Access Control & Security for Ericsson world wide", + "company": "Coor Service Management AB", + "mad": "0x51B3", + "service_provider": "Telefonaktiebolaget LM Ericsson", + "system_integrator": "Coor Service Management AB, PAS, Card and Know IT" + }, + { + "application": "Access Control & Security for Ericsson world wide", + "company": "Coor Service Management AB", + "mad": "0x51B4", + "service_provider": "Telefonaktiebolaget LM Ericsson", + "system_integrator": "Coor Service Management AB, PAS, Card and Know IT" + }, + { + "application": "Access Control & Security for Ericsson world wide", + "company": "Coor Service Management AB", + "mad": "0x51B5", + "service_provider": "Telefonaktiebolaget LM Ericsson", + "system_integrator": "Coor Service Management AB, PAS, Card and Know IT" + }, + { + "application": "Access Control & Security for Ericsson world wide", + "company": "Coor Service Management AB", + "mad": "0x51B6", + "service_provider": "Telefonaktiebolaget LM Ericsson", + "system_integrator": "Coor Service Management AB, PAS, Card and Know IT" + }, + { + "application": "Access Control & Security for Ericsson world wide", + "company": "Coor Service Management AB", + "mad": "0x51B7", + "service_provider": "Telefonaktiebolaget LM Ericsson", + "system_integrator": "Coor Service Management AB, PAS, Card and Know IT" + }, + { + "application": "Access Control & Security for Ericsson world wide", + "company": "Coor Service Management AB", + "mad": "0x51B8", + "service_provider": "Telefonaktiebolaget LM Ericsson", + "system_integrator": "Coor Service Management AB, PAS, Card and Know IT" + }, + { + "application": "Access Control & Security for Ericsson world wide", + "company": "Coor Service Management AB", + "mad": "0x51B9", + "service_provider": "Telefonaktiebolaget LM Ericsson", + "system_integrator": "Coor Service Management AB, PAS, Card and Know IT" + }, + { + "application": "Access Control & Security for Ericsson world wide", + "company": "Coor Service Management AB", + "mad": "0x51BA", + "service_provider": "Telefonaktiebolaget LM Ericsson", + "system_integrator": "Coor Service Management AB, PAS, Card and Know IT" + }, + { + "application": "Access control, Time and Attendance", + "company": "Bodet S.A.", + "mad": "0x51BB", + "service_provider": "Bodet SA", + "system_integrator": "Bodet SA" + }, + { + "application": "Access control and security", + "company": "STid Electronic Identification", + "mad": "0x51BC", + "service_provider": "STid", + "system_integrator": "STid" + }, + { + "application": "Access Control- Time stamping", + "company": "MCF RF TECH SRL", + "mad": "0x51BD", + "service_provider": "MCF RF TECH S.R.L.", + "system_integrator": "MCF RF TECH S.R.L." + }, + { + "application": "ID-cards for logistic company", + "company": "PNL - Pan Nordic Logistics", + "mad": "0x51BE", + "service_provider": "Combiport AB", + "system_integrator": "DAS Card AB" + }, + { + "application": "ID-cards for logistic company", + "company": "PNL - Pan Nordic Logistics", + "mad": "0x51BF", + "service_provider": "Combiport AB", + "system_integrator": "DAS Card AB" + }, + { + "application": "Accesss Control; biometric Identification", + "company": "SYTEL", + "mad": "0x51C0", + "service_provider": "SYTEL", + "system_integrator": "SYTEL" + }, + { + "application": "Accesss Control; biometric Identification", + "company": "SYTEL", + "mad": "0x51C1", + "service_provider": "SYTEL", + "system_integrator": "SYTEL" + }, + { + "application": "Accesss Control; biometric Identification", + "company": "SYTEL", + "mad": "0x51C2", + "service_provider": "SYTEL", + "system_integrator": "SYTEL" + }, + { + "application": "Access control and security application - physical security", + "company": "INID BV", + "mad": "0x51C3", + "service_provider": "INID", + "system_integrator": "INID" + }, + { + "application": "Access control Telectronic locks", + "company": "Deister electronic GmbH", + "mad": "0x51C4", + "service_provider": "Deister electronic GmbH", + "system_integrator": "Deister electronic GmbH" + }, + { + "application": "Access control Telectronic locks", + "company": "Deister electronic GmbH", + "mad": "0x51C5", + "service_provider": "Deister electronic GmbH", + "system_integrator": "Deister electronic GmbH" + }, + { + "application": "Access control", + "company": "INSYS MICROELECTRONICS GmbH", + "mad": "0x51C6", + "service_provider": "INSYS MICROELECTRONICS GmbH", + "system_integrator": "INSYS MICROELECTRONICS GmbH" + }, + { + "application": "Access control", + "company": "INSYS MICROELECTRONICS GmbH", + "mad": "0x51C7", + "service_provider": "INSYS MICROELECTRONICS GmbH", + "system_integrator": "INSYS MICROELECTRONICS GmbH" + }, + { + "application": "Access control", + "company": "INSYS MICROELECTRONICS GmbH", + "mad": "0x51C8", + "service_provider": "INSYS MICROELECTRONICS GmbH", + "system_integrator": "INSYS MICROELECTRONICS GmbH" + }, + { + "application": "Access control", + "company": "INSYS MICROELECTRONICS GmbH", + "mad": "0x51C9", + "service_provider": "INSYS MICROELECTRONICS GmbH", + "system_integrator": "INSYS MICROELECTRONICS GmbH" + }, + { + "application": "Access control", + "company": "INSYS MICROELECTRONICS GmbH", + "mad": "0x51CA", + "service_provider": "INSYS MICROELECTRONICS GmbH", + "system_integrator": "INSYS MICROELECTRONICS GmbH" + }, + { + "application": "Access control, security and monitoring", + "company": "Atelei Engineering SLU", + "mad": "0x51CB", + "service_provider": "Atelei Engineering", + "system_integrator": "Atelei Engineering" + }, + { + "application": "Access & biometrics application", + "company": "Manufacture Francaise des Pneumatiques MICHELIN", + "mad": "0x5202", + "service_provider": "MICHELIN", + "system_integrator": "" + }, + { + "application": "Access & biometrics application", + "company": "Manufacture Francaise des Pneumatiques MICHELIN", + "mad": "0x5203", + "service_provider": "MICHELIN", + "system_integrator": "" + }, + { + "application": "Access & biometrics application", + "company": "Manufacture Francaise des Pneumatiques MICHELIN", + "mad": "0x5204", + "service_provider": "MICHELIN", + "system_integrator": "" + }, + { + "application": "Access & biometrics application", + "company": "Manufacture Francaise des Pneumatiques MICHELIN", + "mad": "0x5205", + "service_provider": "MICHELIN", + "system_integrator": "" + }, + { + "application": "Access & biometrics application", + "company": "Manufacture Francaise des Pneumatiques MICHELIN", + "mad": "0x5206", + "service_provider": "MICHELIN", + "system_integrator": "" + }, + { + "application": "Access Control", + "company": "Triple Eye BV", + "mad": "0x5207", + "service_provider": "Triple Eye B.V.", + "system_integrator": "Triple Eye B.V." + }, + { + "application": "Access Control", + "company": "Triple Eye BV", + "mad": "0x5208", + "service_provider": "Triple Eye B.V.", + "system_integrator": "Triple Eye B.V." + }, + { + "application": "Access Control", + "company": "Triple Eye BV", + "mad": "0x5209", + "service_provider": "Triple Eye B.V.", + "system_integrator": "Triple Eye B.V." + }, + { + "application": "Access Control", + "company": "Triple Eye BV", + "mad": "0x520A", + "service_provider": "Triple Eye B.V.", + "system_integrator": "Triple Eye B.V." + }, + { + "application": "Access Control", + "company": "Triple Eye BV", + "mad": "0x520B", + "service_provider": "Triple Eye B.V.", + "system_integrator": "Triple Eye B.V." + }, + { + "application": "Access Control", + "company": "Triple Eye BV", + "mad": "0x520C", + "service_provider": "Triple Eye B.V.", + "system_integrator": "Triple Eye B.V." + }, + { + "application": "Access Control", + "company": "Triple Eye BV", + "mad": "0x520D", + "service_provider": "Triple Eye B.V.", + "system_integrator": "Triple Eye B.V." + }, + { + "application": "Access Control", + "company": "Triple Eye BV", + "mad": "0x520E", + "service_provider": "Triple Eye B.V.", + "system_integrator": "Triple Eye B.V." + }, + { + "application": "A ticketing application for transport systems", + "company": "VERIFONE ITALIA SRL", + "mad": "0x520F", + "service_provider": "VeriFone Italia", + "system_integrator": "VeriFone Italia" + }, + { + "application": "Access control", + "company": "KABA", + "mad": "0x5210", + "service_provider": "Kaba AG", + "system_integrator": "Kaba AG" + }, + { + "application": "Access control", + "company": "KABA", + "mad": "0x5211", + "service_provider": "Kaba AG", + "system_integrator": "Kaba AG" + }, + { + "application": "Access control", + "company": "KABA", + "mad": "0x5212", + "service_provider": "Kaba AG", + "system_integrator": "Kaba AG" + }, + { + "application": "Access control", + "company": "KABA", + "mad": "0x5213", + "service_provider": "Kaba AG", + "system_integrator": "Kaba AG" + }, + { + "application": "Access control", + "company": "KABA", + "mad": "0x5214", + "service_provider": "Kaba AG", + "system_integrator": "Kaba AG" + }, + { + "application": "Access control", + "company": "KABA", + "mad": "0x5215", + "service_provider": "Kaba AG", + "system_integrator": "Kaba AG" + }, + { + "application": "Access control", + "company": "KABA", + "mad": "0x5216", + "service_provider": "Kaba AG", + "system_integrator": "Kaba AG" + }, + { + "application": "Access control & security", + "company": "Keyprocessor B.V.", + "mad": "0x5217", + "service_provider": "Keyprocessor", + "system_integrator": "" + }, + { + "application": "Access control & Security for Ericsson world wide", + "company": "Coor Service Management AB", + "mad": "0x5218", + "service_provider": "Telefonaktiebolaget LM Ericsson", + "system_integrator": " Coor Service Management AB, PAS CARD and Know IT" + }, + { + "application": "Access control", + "company": "MBB Gelma GmbH", + "mad": "0x5229", + "service_provider": "MBB Gelma GmbH", + "system_integrator": "MBB Gelma" + }, + { + "application": "Access control", + "company": "MBB Gelma GmbH", + "mad": "0x522A", + "service_provider": "MBB Gelma GmbH", + "system_integrator": "MBB Gelma" + }, + { + "application": "Access Control, Time & Attendance", + "company": "GRUPO SPEC", + "mad": "0x522B", + "service_provider": "GRUPO SPEC", + "system_integrator": "GRUPO SPEC" + }, + { + "application": "Access Control & Security", + "company": "AB Angpanneföreningen", + "mad": "0x522D", + "service_provider": "AB Angpanneföreningen", + "system_integrator": "AB Angpanneföreningen" + }, + { + "application": "Access control & security", + "company": "Scheidt & Bachmann GmbH", + "mad": "0x522E", + "service_provider": "Scheidt & Bachmann GmbH", + "system_integrator": "Scheidt & Bachmann GmbH" + }, + { + "application": "Access control", + "company": "AMS ENGINEERING Sticht GmbH", + "mad": "0x522F", + "service_provider": "AMS-Engineering", + "system_integrator": "AMS-Engineering" + }, + { + "application": "Access control", + "company": "AMS ENGINEERING Sticht GmbH", + "mad": "0x5230", + "service_provider": "AMS-Engineering", + "system_integrator": "AMS-Engineering" + }, + { + "application": "Security and Access Control", + "company": "Integrated Control Technology Limited", + "mad": "0x5231", + "service_provider": "Integrated Control Technology Limited", + "system_integrator": "Integrated Control Technology Limited" + }, + { + "application": "Centralized access control system", + "company": "National Control Systems S.A.", + "mad": "0x5232", + "service_provider": "National Control Systems S.A.", + "system_integrator": "National Control Systems S.A." + }, + { + "application": "Access control for Pas Card AB and our customers", + "company": "PAS Card AB", + "mad": "0x5233", + "service_provider": "Pas Card AB", + "system_integrator": "Pas Card AB" + }, + { + "application": "Access control for Pas Card AB and our customers", + "company": "PAS Card AB", + "mad": "0x5234", + "service_provider": "Pas Card AB", + "system_integrator": "Pas Card AB" + }, + { + "application": "Access control for Pas Card AB and our customers", + "company": "PAS Card AB", + "mad": "0x5235", + "service_provider": "Pas Card AB", + "system_integrator": "Pas Card AB" + }, + { + "application": "Access control for Pas Card AB and our customers", + "company": "PAS Card AB", + "mad": "0x5236", + "service_provider": "Pas Card AB", + "system_integrator": "Pas Card AB" + }, + { + "application": "Access control for Pas Card AB and our customers", + "company": "PAS Card AB", + "mad": "0x5237", + "service_provider": "Pas Card AB", + "system_integrator": "Pas Card AB" + }, + { + "application": "Access services (to all buildings of Belgian and federal political assemblees) and time and attendance services", + "company": "Vlaams Parlement", + "mad": "0x5238", + "service_provider": "", + "system_integrator": "None" + }, + { + "application": "Access Control & Security Fabricom (GDF SUEZ)", + "company": "Fabricom (GDF SUEZ)", + "mad": "0x5239", + "service_provider": "Fabricom (GDF SUEZ)/Belgian Operations/Communication & Security/Security", + "system_integrator": "Fabricom (GDF SUEZ)/Belgian Operations/Communication & Security/Security" + }, + { + "application": "Access Control & Security Fabricom (GDF SUEZ)", + "company": "Fabricom (GDF SUEZ)", + "mad": "0x523A", + "service_provider": "Fabricom (GDF SUEZ)/Belgian Operations/Communication & Security/Security", + "system_integrator": "Fabricom (GDF SUEZ)/Belgian Operations/Communication & Security/Security" + }, + { + "application": "Access control and security", + "company": "ESTIS", + "mad": "0x523B", + "service_provider": "ESTIS", + "system_integrator": "ESTIS" + }, + { + "application": "Key diversification container", + "company": "KABA", + "mad": "0x523C", + "service_provider": "Kaba AG", + "system_integrator": "Kaba AG" + }, + { + "application": "Key diversification container", + "company": "KABA", + "mad": "0x523D", + "service_provider": "Kaba AG", + "system_integrator": "Kaba AG" + }, + { + "application": "Access control, security and monitoring", + "company": "Atelei Engineering SLU", + "mad": "0x523D", + "service_provider": "Atelei Engineering", + "system_integrator": "Atelei Engineering" + }, + { + "application": "", + "company": "Bombardier Transportation", + "mad": "0x5306", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Access control & security", + "company": "BTICINO s.p.a.", + "mad": "0x5307", + "service_provider": "BTICINO", + "system_integrator": "BTICINO" + }, + { + "application": "Access control & security", + "company": "BTICINO s.p.a.", + "mad": "0x5308", + "service_provider": "BTICINO", + "system_integrator": "BTICINO" + }, + { + "application": "Access control & security", + "company": "BTICINO s.p.a.", + "mad": "0x5309", + "service_provider": "BTICINO", + "system_integrator": "BTICINO" + }, + { + "application": "Access control & security", + "company": "BTICINO s.p.a.", + "mad": "0x530A", + "service_provider": "BTICINO", + "system_integrator": "BTICINO" + }, + { + "application": "Access control & security", + "company": "BTICINO s.p.a.", + "mad": "0x530B", + "service_provider": "BTICINO", + "system_integrator": "BTICINO" + }, + { + "application": "Access Control & Security", + "company": "BSB Electronics Ltd.", + "mad": "0x530C", + "service_provider": "BSB Electronics Ltd.", + "system_integrator": "BSB Electronics Ltd." + }, + { + "application": "Access control security for Uppsala University", + "company": "Uppsala University", + "mad": "0x530D", + "service_provider": "Uppsala University", + "system_integrator": "Uppsala University" + }, + { + "application": "Corporate Access Control application", + "company": "NXP Semiconductors Eindhoven", + "mad": "0x530E", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Corporate Access Control application", + "company": "NXP Semiconductors Eindhoven", + "mad": "0x530F", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Corporate Access Control application", + "company": "NXP Semiconductors Eindhoven", + "mad": "0x5310", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Corporate Access Control application", + "company": "NXP Semiconductors Eindhoven", + "mad": "0x5311", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Corporate Access Control application", + "company": "NXP Semiconductors Eindhoven", + "mad": "0x5312", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Corporate Access Control application", + "company": "NXP Semiconductors Eindhoven", + "mad": "0x5313", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Corporate Access Control application", + "company": "NXP Semiconductors Eindhoven", + "mad": "0x5314", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Corporate Access Control application", + "company": "NXP Semiconductors Eindhoven", + "mad": "0x5315", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Corporate Access Control application", + "company": "NXP Semiconductors Eindhoven", + "mad": "0x5316", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Corporate Access Control application", + "company": "NXP Semiconductors Eindhoven", + "mad": "0x5317", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Access Control", + "company": "EAL Apeldoorn B.V.", + "mad": "0x5318", + "service_provider": "EAL (Apeldoorn) BV", + "system_integrator": "EAL (Apeldoorn) BV" + }, + { + "application": "Access Control reader", + "company": "TIL Technologies", + "mad": "0x5319", + "service_provider": "TIL Technologies", + "system_integrator": "TIL Technologies" + }, + { + "application": "Access Control reader", + "company": "TIL Technologies", + "mad": "0x531A", + "service_provider": "TIL Technologies", + "system_integrator": "TIL Technologies" + }, + { + "application": "Access control", + "company": "BECKMANN GmbH", + "mad": "0x531B", + "service_provider": "BECKMANN GmbH", + "system_integrator": "BECKMANN GmbH" + }, + { + "application": "Access Control using DESFire EV1", + "company": "SIEMENS BT FSP SP PLAC", + "mad": "0x531C", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "", + "company": "DE NEDERLANDSCHE BANK", + "mad": "0x531D", + "service_provider": "AET Europe", + "system_integrator": "EAL NL" + }, + { + "application": "", + "company": "DE NEDERLANDSCHE BANK", + "mad": "0x531E", + "service_provider": "AET Europe", + "system_integrator": "EAL NL" + }, + { + "application": "Standalone Access Control", + "company": "Kimaldi Electronics s.l.", + "mad": "0x531F", + "service_provider": "", + "system_integrator": "KIMALDI Electronics" + }, + { + "application": "Access control & security system", + "company": "Haguess s.r.o.", + "mad": "0x5320", + "service_provider": "Haguess", + "system_integrator": "Haguess" + }, + { + "application": "Centralized access control system", + "company": "National Control Systems S.A", + "mad": "0x5321", + "service_provider": "National Control Systems S.A", + "system_integrator": "National Control Systems S.A" + }, + { + "application": "Centralized access control system", + "company": "National Control Systems S.A", + "mad": "0x5322", + "service_provider": "National Control Systems S.A", + "system_integrator": "National Control Systems S.A" + }, + { + "application": "Access/security", + "company": "ANTWERP WORLD DIAMOND CENTRE", + "mad": "0x5323", + "service_provider": "ANTWERP WORLD DIAMOND CENTRE", + "system_integrator": "Deister + Card Solutions Group" + }, + { + "application": "Acccess Control & security, Resource Acceptability and personnel identity verification", + "company": "Salamander Technologies, Inc.", + "mad": "0x5324", + "service_provider": "N/a", + "system_integrator": "n/a" + }, + { + "application": "High performance physical Accesss Control (reacting and writing on ccard in real time)", + "company": "Qontinuum Plus", + "mad": "0x5325", + "service_provider": "the users themselves", + "system_integrator": "Qontinuum Plus" + }, + { + "application": "Physical access control system", + "company": "Kaba-Ilco, Inc.", + "mad": "0x5327", + "service_provider": "KABA ILCO INC", + "system_integrator": "KABA ILCO INC" + }, + { + "application": "Physical access control system", + "company": "Kaba-Ilco, Inc.", + "mad": "0x5328", + "service_provider": "KABA ILCO INC", + "system_integrator": "KABA ILCO INC" + }, + { + "application": "Physical access control system", + "company": "Kaba-Ilco, Inc.", + "mad": "0x5329", + "service_provider": "KABA ILCO INC", + "system_integrator": "KABA ILCO INC" + }, + { + "application": "Physical access control system", + "company": "Kaba-Ilco, Inc.", + "mad": "0x532A", + "service_provider": "KABA ILCO INC", + "system_integrator": "KABA ILCO INC" + }, + { + "application": "Access Control, Biometrics, Time & attendance, network on card", + "company": "XceedID Corporation", + "mad": "0x532B", + "service_provider": "Ingersoll Rand", + "system_integrator": "Ingersoll Rand, Geoffrey Industries, Schlage, Recognition Systems" + }, + { + "application": "Access Control, Biometrics, Time & attendance, network on card", + "company": "XceedID Corporation", + "mad": "0x532C", + "service_provider": "Ingersoll Rand", + "system_integrator": "Ingersoll Rand, Geoffrey Industries, Schlage, Recognition Systems" + }, + { + "application": "Access Control, Biometrics, Time & attendance, network on card", + "company": "XceedID Corporation", + "mad": "0x532D", + "service_provider": "Ingersoll Rand", + "system_integrator": "Ingersoll Rand, Geoffrey Industries, Schlage, Recognition Systems" + }, + { + "application": "Access control & security", + "company": "Gantner Electronic GmbH", + "mad": "0x532E", + "service_provider": "GANTNER Electronic", + "system_integrator": "GANTNER Electronic" + }, + { + "application": "Standard physical access", + "company": "NXP Semiconductors Columbia PA", + "mad": "0x532F", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Access Control & Electronic security", + "company": "Gunnebo Electronic Security", + "mad": "0x5330", + "service_provider": "Competence Center", + "system_integrator": "GUNNEBO GES" + }, + { + "application": "Access Control & Electronic security", + "company": "Gunnebo Electronic Security", + "mad": "0x5331", + "service_provider": "Competence Center", + "system_integrator": "GUNNEBO GES" + }, + { + "application": "Access Control & Electronic security", + "company": "Gunnebo Electronic Security", + "mad": "0x5332", + "service_provider": "Competence Center", + "system_integrator": "GUNNEBO GES" + }, + { + "application": "Access Control ID", + "company": "EM Group", + "mad": "0x5333", + "service_provider": "EM GROUP", + "system_integrator": "EM GROUP" + }, + { + "application": "Access Control", + "company": "DOM Sicherheitstechnik GmbH & Co. KG", + "mad": "0x5334", + "service_provider": "DOM Sicherheitstechnik GmbH & Co.KG", + "system_integrator": "DOM Sicherheitstechnik GmbH & Co.KG" + }, + { + "application": "Access Control", + "company": "DOM Sicherheitstechnik GmbH & Co. KG", + "mad": "0x5335", + "service_provider": "DOM Sicherheitstechnik GmbH & Co.KG", + "system_integrator": "DOM Sicherheitstechnik GmbH & Co.KG" + }, + { + "application": "Access Control", + "company": "DOM Sicherheitstechnik GmbH & Co. KG", + "mad": "0x5336", + "service_provider": "DOM Sicherheitstechnik GmbH & Co.KG", + "system_integrator": "DOM Sicherheitstechnik GmbH & Co.KG" + }, + { + "application": "Access Control", + "company": "DOM Sicherheitstechnik GmbH & Co. KG", + "mad": "0x5337", + "service_provider": "DOM Sicherheitstechnik GmbH & Co.KG", + "system_integrator": "DOM Sicherheitstechnik GmbH & Co.KG" + }, + { + "application": "Access Control", + "company": "DOM Sicherheitstechnik GmbH & Co. KG", + "mad": "0x5338", + "service_provider": "DOM Sicherheitstechnik GmbH & Co.KG", + "system_integrator": "DOM Sicherheitstechnik GmbH & Co.KG" + }, + { + "application": "Access Control", + "company": "WIGOTEK, Hardware Software Beratung", + "mad": "0x5339", + "service_provider": "WIGOTEK", + "system_integrator": "WIGOTEK" + }, + { + "application": "Access Control", + "company": "WIGOTEK, Hardware Software Beratung", + "mad": "0x533A", + "service_provider": "WIGOTEK", + "system_integrator": "WIGOTEK" + }, + { + "application": "ZKS, Personalnummer, IDs, Nutzerdaten", + "company": "Primion Technology AG", + "mad": "0x533B", + "service_provider": "HDW", + "system_integrator": "Primion" + }, + { + "application": "ZKS, Personalnummer, IDs, Nutzerdaten", + "company": "Primion Technology AG", + "mad": "0x533C", + "service_provider": "HDW", + "system_integrator": "Primion" + }, + { + "application": "ZKS, Personalnummer, IDs, Nutzerdaten", + "company": "Primion Technology AG", + "mad": "0x533D", + "service_provider": "HDW", + "system_integrator": "Primion" + }, + { + "application": "ZKS, Personalnummer, IDs, Nutzerdaten", + "company": "Primion Technology AG", + "mad": "0x533E", + "service_provider": "HDW", + "system_integrator": "Primion" + }, + { + "application": "", + "company": "EVVA-Werk Gesellschaft m.b.H. & Co. KG", + "mad": "0x533F", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Access control and time attendance systems", + "company": "Unicard S.A.", + "mad": "0x5340", + "service_provider": "UNICARD S.A.", + "system_integrator": "UNICARD S.A." + }, + { + "application": "Access control and time attendance systems", + "company": "Unicard S.A.", + "mad": "0x5341", + "service_provider": "UNICARD S.A.", + "system_integrator": "UNICARD S.A." + }, + { + "application": "Access control and time attendance systems", + "company": "Unicard S.A.", + "mad": "0x5342", + "service_provider": "UNICARD S.A.", + "system_integrator": "UNICARD S.A." + }, + { + "application": "Access control", + "company": "TNO ICT", + "mad": "0x5343", + "service_provider": "TNO", + "system_integrator": "TNO" + }, + { + "application": "Access control", + "company": "TNO ICT", + "mad": "0x5344", + "service_provider": "TNO", + "system_integrator": "TNO" + }, + { + "application": "Access control", + "company": "REMSDAQ LIMITED", + "mad": "0x5345", + "service_provider": "", + "system_integrator": "REMSDAQ Limited" + }, + { + "application": "Access control benefits", + "company": "Koordinator ODIS s.r.o.", + "mad": "0x5346", + "service_provider": "KOORDINATOR ODIS s.r.o.", + "system_integrator": "KOORDINATOR ODIS s.r.o." + }, + { + "application": "Access control & security", + "company": "Coor Service Management AB", + "mad": "0x5347", + "service_provider": "SKANDINAVISKA ENSKILDA BANKEN AB", + "system_integrator": "Coor Service Management AB" + }, + { + "application": "Access control & security", + "company": "Coor Service Management AB", + "mad": "0x5348", + "service_provider": "SKANDINAVISKA ENSKILDA BANKEN AB", + "system_integrator": "Coor Service Management AB" + }, + { + "application": "Access control & security", + "company": "Coor Service Management AB", + "mad": "0x5349", + "service_provider": "SKANDINAVISKA ENSKILDA BANKEN AB", + "system_integrator": "Coor Service Management AB" + }, + { + "application": "Access control & security", + "company": "Coor Service Management AB", + "mad": "0x534A", + "service_provider": "SKANDINAVISKA ENSKILDA BANKEN AB", + "system_integrator": "Coor Service Management AB" + }, + { + "application": "Access control & security", + "company": "Coor Service Management AB", + "mad": "0x534B", + "service_provider": "SKANDINAVISKA ENSKILDA BANKEN AB", + "system_integrator": "Coor Service Management AB" + }, + { + "application": "Access control & security", + "company": "Coor Service Management AB", + "mad": "0x534C", + "service_provider": "SKANDINAVISKA ENSKILDA BANKEN AB", + "system_integrator": "Coor Service Management AB" + }, + { + "application": "Access control, user identification, access counter", + "company": "Nordic Alarm AB", + "mad": "0x534D", + "service_provider": "Nordic Alarm AB", + "system_integrator": "Nordic Alarm AB" + }, + { + "application": "Access control, user identification, access counter", + "company": "Nordic Alarm AB", + "mad": "0x534E", + "service_provider": "Nordic Alarm AB", + "system_integrator": "Nordic Alarm AB" + }, + { + "application": "Access control security", + "company": "Mobotix AG Security Vision Systems", + "mad": "0x534F", + "service_provider": "Mobotix AG Security Vision Systems", + "system_integrator": "Mobotix AG Security Vision Systems" + }, + { + "application": "Access Control + Security", + "company": "PKE Electronics AG", + "mad": "0x5350", + "service_provider": "PKE Electronics AG", + "system_integrator": "PKE Electronics AG" + }, + { + "application": "Access Control + Security", + "company": "PKE Electronics AG", + "mad": "0x5351", + "service_provider": "PKE Electronics AG", + "system_integrator": "PKE Electronics AG" + }, + { + "application": "Access Control + Security", + "company": "PKE Electronics AG", + "mad": "0x5352", + "service_provider": "PKE Electronics AG", + "system_integrator": "PKE Electronics AG" + }, + { + "application": "Corporate ID Card BASF", + "company": "Cosmo.id GmbH", + "mad": "0x5353", + "service_provider": "Cosmo.ID", + "system_integrator": "Cosmo.ID" + }, + { + "application": "Corporate ID Crad Daimler", + "company": "Cosmo.id GmbH", + "mad": "0x5354", + "service_provider": "Cosmo.ID", + "system_integrator": "Cosmo.ID" + }, + { + "application": "Access control; Biometric template storage; Offline access control authorization storage; Cash-on card", + "company": "Siemens Building Technologies - Security Solutions - International Headquarters", + "mad": "0x5355", + "service_provider": "Siemens Building Technologies - Security Solutions -worldwide", + "system_integrator": "Siemens Building Technologies - Security Solutions -worldwide" + }, + { + "application": "Access control; Biometric template storage; Offline access control authorization storage; Cash-on card", + "company": "Siemens Building Technologies - Security Solutions - International Headquarters", + "mad": "0x5356", + "service_provider": "Siemens Building Technologies - Security Solutions -worldwide", + "system_integrator": "Siemens Building Technologies - Security Solutions -worldwide" + }, + { + "application": "Access control; Biometric template storage; Offline access control authorization storage; Cash-on card", + "company": "Siemens Building Technologies - Security Solutions - International Headquarters", + "mad": "0x5357", + "service_provider": "Siemens Building Technologies - Security Solutions -worldwide", + "system_integrator": "Siemens Building Technologies - Security Solutions -worldwide" + }, + { + "application": "Access control; Biometric template storage; Offline access control authorization storage; Cash-on card", + "company": "Siemens Building Technologies - Security Solutions - International Headquarters", + "mad": "0x5358", + "service_provider": "Siemens Building Technologies - Security Solutions -worldwide", + "system_integrator": "Siemens Building Technologies - Security Solutions -worldwide" + }, + { + "application": "Access control, security", + "company": "Westec AS", + "mad": "0x5359", + "service_provider": "Westec AS", + "system_integrator": "Westec" + }, + { + "application": "Access control, security", + "company": "Westec AS", + "mad": "0x535A", + "service_provider": "Westec AS", + "system_integrator": "Westec" + }, + { + "application": "Access control, security", + "company": "Westec AS", + "mad": "0x535B", + "service_provider": "Westec AS", + "system_integrator": "Westec" + }, + { + "application": "Access control, security", + "company": "Westec AS", + "mad": "0x535C", + "service_provider": "Westec AS", + "system_integrator": "Westec" + }, + { + "application": "Access control, security", + "company": "Avinor AS", + "mad": "0x535D", + "service_provider": "Avinor AS", + "system_integrator": "Westec AS" + }, + { + "application": "Access Control", + "company": "AMC - Academic Hospital", + "mad": "0x535E", + "service_provider": "EAL (Apeldoorn) B.V.", + "system_integrator": "EAL (Apeldoorn) B.V." + }, + { + "application": "Access control & security", + "company": "Axel Springer AG", + "mad": "0x535F", + "service_provider": "Axel Springer AG", + "system_integrator": "Axel Springer AG" + }, + { + "application": "Access control & security", + "company": "Axel Springer AG", + "mad": "0x5360", + "service_provider": "Axel Springer AG", + "system_integrator": "Axel Springer AG" + }, + { + "application": "Access control & security", + "company": "Axel Springer AG", + "mad": "0x5361", + "service_provider": "Axel Springer AG", + "system_integrator": "Axel Springer AG" + }, + { + "application": "Access Control", + "company": "Universite de Luxembourg", + "mad": "0x5362", + "service_provider": "EAL (Apeldoorn) B.V.", + "system_integrator": "EAL (Apeldoorn) B.V." + }, + { + "application": "Access control, intruder alarm, time & attendance", + "company": "Novar GmbH- Honeywell Security", + "mad": "0x5363", + "service_provider": "NOVAR, HONEYWELL", + "system_integrator": "" + }, + { + "application": "Access Control & Security", + "company": "Vattenfall Research & Development AB", + "mad": "0x5364", + "service_provider": "Vattenfall AB", + "system_integrator": "Coor Service Vattenfall AB" + }, + { + "application": "Access control system", + "company": "ISEO/ATG", + "mad": "0x5365", + "service_provider": "ISEO/ATG", + "system_integrator": "ISEO/ATG" + }, + { + "application": "Access control system", + "company": "ISEO/ATG", + "mad": "0x5366", + "service_provider": "ISEO/ATG", + "system_integrator": "ISEO/ATG" + }, + { + "application": "Access control system", + "company": "ISEO/ATG", + "mad": "0x5367", + "service_provider": "ISEO/ATG", + "system_integrator": "ISEO/ATG" + }, + { + "application": "Access Control, ID Badge, Payment", + "company": "Danfoss A/S", + "mad": "0x5368", + "service_provider": "Vitani A/S", + "system_integrator": "Vitani A/S" + }, + { + "application": "Access control, security and monitoring", + "company": "Atelei Engineering SLU", + "mad": "0x5369", + "service_provider": "Atelei Engineering", + "system_integrator": "Atelei Engineering" + }, + { + "application": "Access Control", + "company": "Teratron GmbH", + "mad": "0x536A", + "service_provider": "Teratron GmbH", + "system_integrator": "Teratron GmbH" + }, + { + "application": "Access Control", + "company": "Assa Abloy (Switzerland)", + "mad": "0x536B", + "service_provider": "Assa Abloy (Switzerland)", + "system_integrator": "Assa Abloy (Switzerland)" + }, + { + "application": "Servicios de Identificacion/Presenncia Corporation; control de Accesos y seguridad", + "company": "IZENPE", + "mad": "0x5401", + "service_provider": "IZENPE", + "system_integrator": "IZENPE" + }, + { + "application": "Servicios de Identificacion/Presenncia Corporation; control de Accesos y seguridad", + "company": "IZENPE", + "mad": "0x5402", + "service_provider": "IZENPE", + "system_integrator": "IZENPE" + }, + { + "application": "Servicios de Identificacion/Presenncia Corporation; control de Accesos y seguridad", + "company": "IZENPE", + "mad": "0x5403", + "service_provider": "IZENPE", + "system_integrator": "IZENPE" + }, + { + "application": "Servicios de Identificacion/Presenncia Corporation; control de Accesos y seguridad", + "company": "IZENPE", + "mad": "0x5404", + "service_provider": "IZENPE", + "system_integrator": "IZENPE" + }, + { + "application": "Corporate ID Card BASF", + "company": "Cosmo.id GmbH", + "mad": "0x5405", + "service_provider": "Cosmo.id", + "system_integrator": "Cosmo.id" + }, + { + "application": "Electrical vehicle charging", + "company": "EnBW Energie Baden-Württemberg AG", + "mad": "0x5406", + "service_provider": "EnBW Systeme Infrastruktur Support GmbH", + "system_integrator": "EnBW Systeme Infrastruktur Support GmbH" + }, + { + "application": "Electronic Access Control Systems EZK", + "company": "Franz Schneider Brakel GmbH + Co KG", + "mad": "0x5407", + "service_provider": "", + "system_integrator": "Franz Schneider Brakel GmbH + Co KG" + }, + { + "application": "Access control & security", + "company": "SCM Microsystems Gmbh", + "mad": "0x5408", + "service_provider": "SCM Microsystems Gmbh", + "system_integrator": "" + }, + { + "application": "Access control and key management system", + "company": "ALCEA", + "mad": "0x5409", + "service_provider": "ALCEA", + "system_integrator": "ALCEA" + }, + { + "application": "Access control and key management system", + "company": "ALCEA", + "mad": "0x540A", + "service_provider": "ALCEA", + "system_integrator": "ALCEA" + }, + { + "application": "Smart City Card \\Schwabencard\"\"", + "company": "Cosmo.id GmbH", + "mad": "0x540B", + "service_provider": "Cosmo.id", + "system_integrator": "Cosmo.id" + }, + { + "application": "Physical access control; Photo; Biometrics data; hourly management; Canteen", + "company": "France Telecom SA", + "mad": "0x540C", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Physical access control; Photo; Biometrics data; hourly management; Canteen", + "company": "France Telecom SA", + "mad": "0x540D", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Physical access control; Photo; Biometrics data; hourly management; Canteen", + "company": "France Telecom SA", + "mad": "0x540E", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Physical access control; Photo; Biometrics data; hourly management; Canteen", + "company": "France Telecom SA", + "mad": "0x540F", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Physical access control; Photo; Biometrics data; hourly management; Canteen", + "company": "France Telecom SA", + "mad": "0x5410", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Access control", + "company": "Medisch Centrum Alkmaar", + "mad": "0x5411", + "service_provider": "EAL (Apeldoorn) B.V.", + "system_integrator": "EAL (Apeldoorn) B.V." + }, + { + "application": "Access control, benefits", + "company": "OREDO s.r.o", + "mad": "0x5412", + "service_provider": "OREDO s.r.o", + "system_integrator": "OREDO s.r.o" + }, + { + "application": "Access control", + "company": "Synchronic", + "mad": "0x5413", + "service_provider": "R&D Synchronic", + "system_integrator": "SYNCHRONIC" + }, + { + "application": "Access Control System", + "company": "Glutz AG, Swiss Access Systems", + "mad": "0x5414", + "service_provider": "Glutz AG", + "system_integrator": "Glutz AG" + }, + { + "application": "Access Control System", + "company": "Glutz AG, Swiss Access Systems", + "mad": "0x5415", + "service_provider": "Glutz AG", + "system_integrator": "Glutz AG" + }, + { + "application": "Access control, security, identification and business services", + "company": "Amtac Professional Services Ptv Ltd", + "mad": "0x5416", + "service_provider": "Amtac Professional Services Ptv Ltd", + "system_integrator": "Amtac Professional Services Ptv Ltd" + }, + { + "application": "Access control, security, identification and business services", + "company": "Amtac Professional Services Ptv Ltd", + "mad": "0x5417", + "service_provider": "Amtac Professional Services Ptv Ltd", + "system_integrator": "Amtac Professional Services Ptv Ltd" + }, + { + "application": "Identification services", + "company": "EasyCheck GmbH", + "mad": "0x5418", + "service_provider": "Stadt Duisburg", + "system_integrator": "Stadt Duisburg" + }, + { + "application": "Access Control, ID Badge, Payment & Hotel", + "company": "Danish Defence", + "mad": "0x5419", + "service_provider": "Vitani A/S", + "system_integrator": "Vitani A/S" + }, + { + "application": "Access control, security and monitoring", + "company": "Atelei Engineering SLU", + "mad": "0x541A", + "service_provider": "Atelei Engineering", + "system_integrator": "Atelei Engineering" + }, + { + "application": "Access to datacenter, cass, rows, disable alarm+security system, employee ID-card", + "company": "VegaSystems", + "mad": "0x541B", + "service_provider": "VegaSystems", + "system_integrator": "VegaSystems" + }, + { + "application": "Academic Services, Electronic Purse, Access control & security", + "company": "CNA Limited/Rax-Comm Systems Ltd.", + "mad": "0x5801", + "service_provider": "CNA Limited", + "system_integrator": "CNA Limited" + }, + { + "application": "Universitz Student & Staff Identification", + "company": "CNA Limited/Rax-Comm Systems Ltd.", + "mad": "0x5802", + "service_provider": "CNA Limited", + "system_integrator": "CNA Limited" + }, + { + "application": "Student/stuff ID Card Travel Pass, Library Card, Photocopy Control & Meal Payment", + "company": "University of Warwick", + "mad": "0x5803", + "service_provider": "University of Warwick", + "system_integrator": "University of Warwick" + }, + { + "application": "Student/stuff ID Card Travel Pass, Library Card, Photocopy Control & Meal Payment", + "company": "University of Warwick", + "mad": "0x5804", + "service_provider": "University of Warwick", + "system_integrator": "University of Warwick" + }, + { + "application": "Student/stuff ID Card Travel Pass, Library Card, Photocopy Control & Meal Payment", + "company": "University of Warwick", + "mad": "0x5805", + "service_provider": "University of Warwick", + "system_integrator": "University of Warwick" + }, + { + "application": "Student/stuff ID Card Travel Pass, Library Card, Photocopy Control & Meal Payment", + "company": "University of Warwick", + "mad": "0x5806", + "service_provider": "University of Warwick", + "system_integrator": "University of Warwick" + }, + { + "application": "Student/stuff ID Card Travel Pass, Library Card, Photocopy Control & Meal Payment", + "company": "University of Warwick", + "mad": "0x5807", + "service_provider": "University of Warwick", + "system_integrator": "University of Warwick" + }, + { + "application": "Accademic services", + "company": "Innolab Private Ltd", + "mad": "0x5809", + "service_provider": "National University of Singapore", + "system_integrator": "Innolab Private Ltd" + }, + { + "application": "Accademic services", + "company": "Innolab Private Ltd", + "mad": "0x580A", + "service_provider": "National University of Singapore", + "system_integrator": "Innolab Private Ltd" + }, + { + "application": "Accademic services", + "company": "Innolab Private Ltd", + "mad": "0x580B", + "service_provider": "National University of Singapore", + "system_integrator": "Innolab Private Ltd" + }, + { + "application": "Accademic services", + "company": "Innolab Private Ltd", + "mad": "0x580C", + "service_provider": "National University of Singapore", + "system_integrator": "Innolab Private Ltd" + }, + { + "application": "Accademic services", + "company": "Innolab Private Ltd", + "mad": "0x580D", + "service_provider": "National University of Singapore", + "system_integrator": "Innolab Private Ltd" + }, + { + "application": "Accademic services", + "company": "Innolab Private Ltd", + "mad": "0x580E", + "service_provider": "National University of Singapore", + "system_integrator": "Innolab Private Ltd" + }, + { + "application": "Academic identity cards", + "company": "Maximus", + "mad": "0x580F", + "service_provider": "Maximus Inc", + "system_integrator": "Maximus Inc" + }, + { + "application": "Basic cardholder info", + "company": "Cambridge University - Institute for Manufacturing", + "mad": "0x5810", + "service_provider": "Cambridge University", + "system_integrator": "Cambridge University" + }, + { + "application": "Basic cardholder info", + "company": "Cambridge University - Institute for Manufacturing", + "mad": "0x5811", + "service_provider": "Cambridge University", + "system_integrator": "Cambridge University" + }, + { + "application": "Basic cardholder info", + "company": "Cambridge University - Institute for Manufacturing", + "mad": "0x5812", + "service_provider": "Cambridge University", + "system_integrator": "Cambridge University" + }, + { + "application": "Basic cardholder info", + "company": "Cambridge University - Institute for Manufacturing", + "mad": "0x5813", + "service_provider": "Cambridge University", + "system_integrator": "Cambridge University" + }, + { + "application": "Academic services", + "company": "Invest Solutions Limited", + "mad": "0x5814", + "service_provider": "Invest Solutions", + "system_integrator": "Invest Solutions" + }, + { + "application": "Academic services", + "company": "Invest Solutions Limited", + "mad": "0x5815", + "service_provider": "Invest Solutions", + "system_integrator": "Invest Solutions" + }, + { + "application": "Access control & security, city traffic, sports & entertainment", + "company": "IP Core", + "mad": "0x5816", + "service_provider": "IP Core", + "system_integrator": "IP Core" + }, + { + "application": "Student, staff ID card", + "company": "University of Bolton", + "mad": "0x5817", + "service_provider": "University of Bolton", + "system_integrator": "University of Bolton" + }, + { + "application": "Student, staff ID card", + "company": "University of Bolton", + "mad": "0x5818", + "service_provider": "University of Bolton", + "system_integrator": "University of Bolton" + }, + { + "application": "Student, staff ID card", + "company": "University of Bolton", + "mad": "0x5819", + "service_provider": "University of Bolton", + "system_integrator": "University of Bolton" + }, + { + "application": "Student, staff ID card", + "company": "University of Bolton", + "mad": "0x581A", + "service_provider": "University of Bolton", + "system_integrator": "University of Bolton" + }, + { + "application": "Railway pass, univers pass, library", + "company": "Emcard a.s.", + "mad": "0x581B", + "service_provider": "Emcard", + "system_integrator": "Emtest" + }, + { + "application": "Railway pass, univers pass, library", + "company": "Emcard a.s.", + "mad": "0x581C", + "service_provider": "Emcard", + "system_integrator": "Emtest" + }, + { + "application": "University Card", + "company": "Faculty of Electrical Engineering and Computing", + "mad": "0x581D", + "service_provider": "Faculty of EE & Computing, Ministry of Science, Technolgoy and Education", + "system_integrator": "Faculty of EE & Computing" + }, + { + "application": "University Card", + "company": "Faculty of Electrical Engineering and Computing", + "mad": "0x581E", + "service_provider": "Faculty of EE & Computing, Ministry of Science, Technolgoy and Education", + "system_integrator": "Faculty of EE & Computing" + }, + { + "application": "University Card", + "company": "Faculty of Electrical Engineering and Computing", + "mad": "0x581F", + "service_provider": "Faculty of EE & Computing, Ministry of Science, Technolgoy and Education", + "system_integrator": "Faculty of EE & Computing" + }, + { + "application": "University Campus Card", + "company": "Smartchip S.A.", + "mad": "0x5820", + "service_provider": "Universidad U.P.B.", + "system_integrator": "Smartchip S.A." + }, + { + "application": "High school pass", + "company": "Emcard a.s.", + "mad": "0x5821", + "service_provider": "EMCARD, a.s.", + "system_integrator": "EMTEST, a.s." + }, + { + "application": "Academic services", + "company": "University of Bath", + "mad": "0x5822", + "service_provider": "University Bath", + "system_integrator": "Royall Security Systems" + }, + { + "application": "Student/stuff ID, library ID, access control, purse 1, purse 2, electroral rights indicator", + "company": "Universität Ulm", + "mad": "0x5823", + "service_provider": "University of Ulm", + "system_integrator": "University of Ulm" + }, + { + "application": "Student/stuff ID, library ID, access control, purse 1, purse 2, electroral rights indicator", + "company": "Universität Ulm", + "mad": "0x5824", + "service_provider": "University of Ulm", + "system_integrator": "University of Ulm" + }, + { + "application": "Student/stuff ID, library ID, access control, purse 1, purse 2, electroral rights indicator", + "company": "Universität Ulm", + "mad": "0x5825", + "service_provider": "University of Ulm", + "system_integrator": "University of Ulm" + }, + { + "application": "Student/stuff ID, library ID, access control, purse 1, purse 2, electroral rights indicator", + "company": "Universität Ulm", + "mad": "0x5826", + "service_provider": "University of Ulm", + "system_integrator": "University of Ulm" + }, + { + "application": "Student/stuff ID, library ID, access control, purse 1, purse 2, electroral rights indicator", + "company": "Universität Ulm", + "mad": "0x5827", + "service_provider": "University of Ulm", + "system_integrator": "University of Ulm" + }, + { + "application": "Student/stuff ID, library ID, access control, purse 1, purse 2, electroral rights indicator", + "company": "Universität Ulm", + "mad": "0x5828", + "service_provider": "University of Ulm", + "system_integrator": "University of Ulm" + }, + { + "application": "University Card (Academic Applications)", + "company": "Faculty of Electrical Engineering and Computing", + "mad": "0x5829", + "service_provider": "Faculty of EE & Computing", + "system_integrator": "Faculty of EE & Computing" + }, + { + "application": "University Card (Academic Applications)", + "company": "Faculty of Electrical Engineering and Computing", + "mad": "0x582A", + "service_provider": "Faculty of EE & Computing", + "system_integrator": "Faculty of EE & Computing" + }, + { + "application": "University Card (Academic Applications)", + "company": "Faculty of Electrical Engineering and Computing", + "mad": "0x582B", + "service_provider": "Faculty of EE & Computing", + "system_integrator": "Faculty of EE & Computing" + }, + { + "application": "University Card (Academic Applications)", + "company": "Faculty of Electrical Engineering and Computing", + "mad": "0x582C", + "service_provider": "Faculty of EE & Computing", + "system_integrator": "Faculty of EE & Computing" + }, + { + "application": "University Card (Academic Applications)", + "company": "Faculty of Electrical Engineering and Computing", + "mad": "0x582D", + "service_provider": "Faculty of EE & Computing", + "system_integrator": "Faculty of EE & Computing" + }, + { + "application": "Academic services, food", + "company": "FH Studienbetriebs GmbH", + "mad": "0x582E", + "service_provider": "FH 00E Studienbetriebs GmbH, HSSE", + "system_integrator": "FH 00E Studienbetriebs GmbH, HSSE" + }, + { + "application": "Library card", + "company": "Technical University Of Szczecin", + "mad": "0x582F", + "service_provider": "techn University Szczecin", + "system_integrator": "techn University Szczecin" + }, + { + "application": "Student/Staff IC Card", + "company": "University of Chester", + "mad": "0x5830", + "service_provider": "University of Chester", + "system_integrator": "University of Chester" + }, + { + "application": "Student/Staff IC Card", + "company": "University of Chester", + "mad": "0x5831", + "service_provider": "University of Chester", + "system_integrator": "University of Chester" + }, + { + "application": "Student/Staff IC Card", + "company": "University of Chester", + "mad": "0x5832", + "service_provider": "University of Chester", + "system_integrator": "University of Chester" + }, + { + "application": "Student/Staff IC Card", + "company": "University of Chester", + "mad": "0x5833", + "service_provider": "University of Chester", + "system_integrator": "University of Chester" + }, + { + "application": "Student/Staff IC Card", + "company": "University of Chester", + "mad": "0x5834", + "service_provider": "University of Chester", + "system_integrator": "University of Chester" + }, + { + "application": "University Campus Card", + "company": "Smartchip S.A.", + "mad": "0x5835", + "service_provider": "Universidad EAFIT", + "system_integrator": "Smartchip S.A." + }, + { + "application": "Online Activity Registration and Ticketing (education)", + "company": "PinCash International", + "mad": "0x5836", + "service_provider": "Pincash international BV", + "system_integrator": "Pincash international BV" + }, + { + "application": "University Card, Library Card, Studen/Staff ID, Academic services", + "company": "Stockholm University", + "mad": "0x5837", + "service_provider": "Stockholm University", + "system_integrator": "Stockholm University" + }, + { + "application": "University Card, Library Card, Studen/Staff ID, Academic services", + "company": "Stockholm University", + "mad": "0x5838", + "service_provider": "Stockholm University", + "system_integrator": "Stockholm University" + }, + { + "application": "University Card, Library Card, Studen/Staff ID, Academic services", + "company": "Stockholm University", + "mad": "0x5839", + "service_provider": "Stockholm University", + "system_integrator": "Stockholm University" + }, + { + "application": "University Card, Library Card, Studen/Staff ID, Academic services", + "company": "Stockholm University", + "mad": "0x583A", + "service_provider": "Stockholm University", + "system_integrator": "Stockholm University" + }, + { + "application": "University Campus Card", + "company": "Smartchip S.A.", + "mad": "0x583B", + "service_provider": "Colegiatura Colombiana", + "system_integrator": "SMARTCHIP S.A." + }, + { + "application": "Student/personnel authentication & identification card", + "company": "Hogeschool Gent", + "mad": "0x583C", + "service_provider": "Associatie Universiteit Gent", + "system_integrator": "Universiteit Gent, Hogeschool Gent, Arteveldeschool, Hogeschool West-Vlaanderen" + }, + { + "application": "Student/personnel authentication & identification card", + "company": "Hogeschool Gent", + "mad": "0x583D", + "service_provider": "Associatie Universiteit Gent", + "system_integrator": "Universiteit Gent, Hogeschool Gent, Arteveldeschool, Hogeschool West-Vlaanderen" + }, + { + "application": "Student/personnel authentication & identification card", + "company": "Hogeschool Gent", + "mad": "0x583E", + "service_provider": "Associatie Universiteit Gent", + "system_integrator": "Universiteit Gent, Hogeschool Gent, Arteveldeschool, Hogeschool West-Vlaanderen" + }, + { + "application": "Student/personnel authentication & identification card", + "company": "Hogeschool Gent", + "mad": "0x583F", + "service_provider": "Associatie Universiteit Gent", + "system_integrator": "Universiteit Gent, Hogeschool Gent, Arteveldeschool, Hogeschool West-Vlaanderen" + }, + { + "application": "Studen/personnel authentication & identification card", + "company": "Hogeschool Gent", + "mad": "0x5840", + "service_provider": "Associatie Universiteit Gent", + "system_integrator": "Associatie Universiteit Gent" + }, + { + "application": "Academic services", + "company": "Group Capmonetique", + "mad": "0x5841", + "service_provider": "MONECARTE", + "system_integrator": "MONECARTE" + }, + { + "application": "Academic services", + "company": "Group Capmonetique", + "mad": "0x5842", + "service_provider": "MONECARTE", + "system_integrator": "MONECARTE" + }, + { + "application": "Academic services", + "company": "Group Capmonetique", + "mad": "0x5843", + "service_provider": "MONECARTE", + "system_integrator": "MONECARTE" + }, + { + "application": "Academic services", + "company": "Group Capmonetique", + "mad": "0x5844", + "service_provider": "MONECARTE", + "system_integrator": "MONECARTE" + }, + { + "application": "Multifunctional IT", + "company": "InterCard AG Informationssysteme", + "mad": "0x5845", + "service_provider": "InterCard", + "system_integrator": "InterCard" + }, + { + "application": "Multifunctional IT", + "company": "InterCard AG Informationssysteme", + "mad": "0x5846", + "service_provider": "InterCard", + "system_integrator": "InterCard" + }, + { + "application": "Multifunctional IT", + "company": "InterCard AG Informationssysteme", + "mad": "0x5847", + "service_provider": "InterCard", + "system_integrator": "InterCard" + }, + { + "application": "Multifunctional IT", + "company": "InterCard AG Informationssysteme", + "mad": "0x5848", + "service_provider": "InterCard", + "system_integrator": "InterCard" + }, + { + "application": "Student and staff identification, access control, attendance monitoring, cashless vending", + "company": "Computer Centre, Lancaster University", + "mad": "0x5849", + "service_provider": "Lancaster University", + "system_integrator": "Lancaster University" + }, + { + "application": "Student and staff identification, access control, attendance monitoring, cashless vending", + "company": "Computer Centre, Lancaster University", + "mad": "0x584A", + "service_provider": "Lancaster University", + "system_integrator": "Lancaster University" + }, + { + "application": "Student and staff identification, access control, attendance monitoring, cashless vending", + "company": "Computer Centre, Lancaster University", + "mad": "0x584B", + "service_provider": "Lancaster University", + "system_integrator": "Lancaster University" + }, + { + "application": "Student and staff identification, access control, attendance monitoring, cashless vending", + "company": "Computer Centre, Lancaster University", + "mad": "0x584C", + "service_provider": "Lancaster University", + "system_integrator": "Lancaster University" + }, + { + "application": "Academic services", + "company": "Gantner Electronic GmbH", + "mad": "0x584D", + "service_provider": "GANTNER Electronic", + "system_integrator": "GANTNER Electronic" + }, + { + "application": "Library card", + "company": "Vienna University of Economics", + "mad": "0x584E", + "service_provider": "Vienna University of Economics", + "system_integrator": "Vienna University of Economics" + }, + { + "application": "University campus card", + "company": "Smartchip S.A.", + "mad": "0x584F", + "service_provider": "Universidad de Antioquia - UedA", + "system_integrator": "Smartchip SA" + }, + { + "application": "Sttuden/personnel access control", + "company": "Caja General de Ahorros de Canarias", + "mad": "0x5850", + "service_provider": "Universidad de La laguna-ULL", + "system_integrator": "CajaCanarias" + }, + { + "application": "Academic services", + "company": "Emtest a.s.", + "mad": "0x5851", + "service_provider": "Ministry of Education of Slovak republic", + "system_integrator": "EMtest-SK, s.r.o." + }, + { + "application": "Internal identification", + "company": "HUB-EHSAL VZW", + "mad": "0x5852", + "service_provider": "HUB", + "system_integrator": "" + }, + { + "application": "University/Campus applications", + "company": "Burall InfoSmart Ltd", + "mad": "0x5853", + "service_provider": "Burall InfoSmart Ltd", + "system_integrator": "Burall InfoSmart Ltd" + }, + { + "application": "University student identification", + "company": "Pro Active", + "mad": "0x5854", + "service_provider": "CNOUS", + "system_integrator": "Pro Active SAS" + }, + { + "application": "University student identification", + "company": "Pro Active", + "mad": "0x5855", + "service_provider": "CNOUS", + "system_integrator": "Pro Active SAS" + }, + { + "application": "University student identification", + "company": "Pro Active", + "mad": "0x5856", + "service_provider": "CNOUS", + "system_integrator": "Pro Active SAS" + }, + { + "application": "University student identification", + "company": "Pro Active", + "mad": "0x5857", + "service_provider": "CNOUS", + "system_integrator": "Pro Active SAS" + }, + { + "application": "University student identification", + "company": "Pro Active", + "mad": "0x5858", + "service_provider": "CNOUS", + "system_integrator": "Pro Active SAS" + }, + { + "application": "University student identification", + "company": "Pro Active", + "mad": "0x5859", + "service_provider": "CNOUS", + "system_integrator": "Pro Active SAS" + }, + { + "application": "University student identification", + "company": "Pro Active", + "mad": "0x585A", + "service_provider": "CNOUS", + "system_integrator": "Pro Active SAS" + }, + { + "application": "University student identification", + "company": "Pro Active", + "mad": "0x585B", + "service_provider": "CNOUS", + "system_integrator": "Pro Active SAS" + }, + { + "application": "Wittenborg Caterchip 2002", + "company": "Ing. Büro Schrick", + "mad": "0x6001", + "service_provider": "Wittenborg Automaten GmbH", + "system_integrator": "Ing. Büro Schrick" + }, + { + "application": "Elecronic food voucher", + "company": "GRUPO VR", + "mad": "0x6002", + "service_provider": "Grupo VR", + "system_integrator": "" + }, + { + "application": "Elecronic supermarket voucher", + "company": "GRUPO VR", + "mad": "0x6003", + "service_provider": "Gruop VR", + "system_integrator": "" + }, + { + "application": "Access controll security payment", + "company": "Matsushita Communication Industrial", + "mad": "0x6004", + "service_provider": "Matsushita Communication", + "system_integrator": "Matsushita Communication" + }, + { + "application": "Electronic food voucher", + "company": "Smart Net Brasil LTDA", + "mad": "0x6005", + "service_provider": "Smart.net Brasil LTDA", + "system_integrator": "Smart.net Brasil LTDA" + }, + { + "application": "Electronic food voucher", + "company": "Smart Net Brasil LTDA", + "mad": "0x6006", + "service_provider": "Smart.net Brasil LTDA", + "system_integrator": "Smart.net Brasil LTDA" + }, + { + "application": "Electronic food voucher", + "company": "Smart Net Brasil LTDA", + "mad": "0x6007", + "service_provider": "Smart.net Brasil LTDA", + "system_integrator": "Smart.net Brasil LTDA" + }, + { + "application": "Electronic food voucher", + "company": "Smart Net Brasil LTDA", + "mad": "0x6008", + "service_provider": "Smart.net Brasil LTDA", + "system_integrator": "Smart.net Brasil LTDA" + }, + { + "application": "Company services, access & sec control, electronic purse...", + "company": "Cominfo a.s.", + "mad": "0x6009", + "service_provider": "Cominfo", + "system_integrator": "Cominfo" + }, + { + "application": "Cshless Payment f. catering/vending", + "company": "VMC House", + "mad": "0x600A", + "service_provider": "VMC", + "system_integrator": "VMC" + }, + { + "application": "Food services", + "company": "Emcard a.s.", + "mad": "0x600B", + "service_provider": "EMCARD, a.s.", + "system_integrator": "EMTEST, a.s." + }, + { + "application": "Academic services, food", + "company": "FH Studienbetriebs GmbH", + "mad": "0x600C", + "service_provider": "FH 00E Studienbetriebs GmbH, HSSE", + "system_integrator": "FH 00E Studienbetriebs GmbH, HSSE" + }, + { + "application": "Academic services, food", + "company": "FH Studienbetriebs GmbH", + "mad": "0x600D", + "service_provider": "FH 00E Studienbetriebs GmbH, HSSE", + "system_integrator": "FH 00E Studienbetriebs GmbH, HSSE" + }, + { + "application": "Menue@web", + "company": "Hofmann Menü-Manufaktur GmbH", + "mad": "0x600F", + "service_provider": "Hofmann Menü-Manufaktur GmbH", + "system_integrator": "Hofmann Menü-Manufaktur GmbH" + }, + { + "application": "Food, Payment in restaurant for employees", + "company": "AB Angpanneföreningen", + "mad": "0x6010", + "service_provider": "AB Angpanneföreningen", + "system_integrator": "AB Angpanneföreningen" + }, + { + "application": "Vending", + "company": "Dallmayr Card Systeme Gmbh", + "mad": "0x6011", + "service_provider": "Dallmayr Card Systeme Gmbh", + "system_integrator": "Dallmayr Card Systeme Gmbh" + }, + { + "application": "Vending", + "company": "Dallmayr Card Systeme Gmbh", + "mad": "0x6012", + "service_provider": "Dallmayr Card Systeme Gmbh", + "system_integrator": "Dallmayr Card Systeme Gmbh" + }, + { + "application": "Vending", + "company": "Dallmayr Card Systeme Gmbh", + "mad": "0x6013", + "service_provider": "Dallmayr Card Systeme Gmbh", + "system_integrator": "Dallmayr Card Systeme Gmbh" + }, + { + "application": "Vending", + "company": "Dallmayr Card Systeme Gmbh", + "mad": "0x6014", + "service_provider": "Dallmayr Card Systeme Gmbh", + "system_integrator": "Dallmayr Card Systeme Gmbh" + }, + { + "application": "Food Vending and control", + "company": "N&W Innovative Solutions", + "mad": "0x6015", + "service_provider": "N&W", + "system_integrator": "N&W" + }, + { + "application": "Food Vending and control", + "company": "N&W Innovative Solutions", + "mad": "0x6016", + "service_provider": "N&W", + "system_integrator": "N&W" + }, + { + "application": "Food Vending and control", + "company": "N&W Innovative Solutions", + "mad": "0x6017", + "service_provider": "N&W", + "system_integrator": "N&W" + }, + { + "application": "Food Vending and control", + "company": "N&W Innovative Solutions", + "mad": "0x6018", + "service_provider": "N&W", + "system_integrator": "N&W" + }, + { + "application": "Retail identification and customer loyalty", + "company": "Unisys New Zealand Ltd", + "mad": "0x6801", + "service_provider": "Unisys", + "system_integrator": "Unisys" + }, + { + "application": "Access control, time attendance, bus ticket, hotel room card, VIP card f. club", + "company": "Giga-TMS Inc", + "mad": "0x7001", + "service_provider": "Giga TMS", + "system_integrator": "Giga TMS" + }, + { + "application": "Company services, access & sec control, electronic purse...", + "company": "Cominfo a.s.", + "mad": "0x7002", + "service_provider": "Cominfo", + "system_integrator": "Cominfo" + }, + { + "application": "Car parking, sport applic, hotel, access control systems", + "company": "DATASEC Electronic GmbH", + "mad": "0x7003", + "service_provider": "Datasec", + "system_integrator": "Datatsec" + }, + { + "application": "Hotel, acces control & security", + "company": "Talleres De Escoriaza S.A.", + "mad": "0x7004", + "service_provider": "Talleres", + "system_integrator": "Talleres" + }, + { + "application": "Energy Saving System For Hotels, Access Control", + "company": "ENKOA System", + "mad": "0x7005", + "service_provider": "Enkoa System S.L.", + "system_integrator": "Enkoa System S.L." + }, + { + "application": "Hotel, access contr. & sec", + "company": "Vingcard a.s.", + "mad": "0x7006", + "service_provider": "Vingcard", + "system_integrator": "Vingcard" + }, + { + "application": "Hotel, access contr. & sec", + "company": "Vingcard a.s.", + "mad": "0x7007", + "service_provider": "Vingcard", + "system_integrator": "Vingcard" + }, + { + "application": "Multi Application Purse - Access-Parking", + "company": "MCF RF TECH SRL", + "mad": "0x7008", + "service_provider": "MCF RF TECH S.R.L.", + "system_integrator": "MCF RF TECH S.R.L." + }, + { + "application": "Access control data for electronic locks", + "company": "Timelox AB", + "mad": "0x7009", + "service_provider": "Timelox AB", + "system_integrator": "Timelox AB" + }, + { + "application": "Energy Saving System", + "company": "ENKOA System", + "mad": "0x700A", + "service_provider": "ENKOA System S.L.", + "system_integrator": "ENKOA System S.L." + }, + { + "application": "Energy Saving System", + "company": "ENKOA System", + "mad": "0x700B", + "service_provider": "ENKOA System S.L.", + "system_integrator": "ENKOA System S.L." + }, + { + "application": "Energy Saving System", + "company": "ENKOA System", + "mad": "0x700C", + "service_provider": "ENKOA System S.L.", + "system_integrator": "ENKOA System S.L." + }, + { + "application": "Hotel", + "company": "SIT Solution for IT Payment GmbH", + "mad": "0x700D", + "service_provider": "SIT Solution for IT Payment GmbH", + "system_integrator": "SIT Solution for IT Payment GmbH" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7502", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7503", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7504", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7505", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7506", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7507", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7508", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7509", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x750A", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x750B", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x750C", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x750D", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x750E", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x750F", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7510", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7511", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7512", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7513", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7514", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7515", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7516", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7517", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7518", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7519", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x751A", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x751B", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x751C", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x751D", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x751E", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x751F", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7520", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional id card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7521", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7522", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7523", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7524", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7525", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7526", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7527", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7528", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7529", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x752A", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x752B", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x752C", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x752D", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x752E", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x752F", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7530", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7531", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7532", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7533", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7534", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7535", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7536", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7537", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7538", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7539", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x753A", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x753B", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x753C", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x753D", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x753E", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x753F", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7540", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Multifunctional ID Card", + "company": "Fraport AG - Frankfurt Airport Services Worldwide", + "mad": "0x7541", + "service_provider": "Fraport AG", + "system_integrator": "Fraport AG" + }, + { + "application": "Access and tiketting system for car sharing", + "company": "Mobility Car Sharing", + "mad": "0x7801", + "service_provider": "Bw-digitronik ag", + "system_integrator": "bw-digitronik ag" + }, + { + "application": "Rijkspas an accescard for Dutch governemental ministries and agencies", + "company": "ICTU", + "mad": "0x7901", + "service_provider": "ICTU", + "system_integrator": "ICTU" + }, + { + "application": "Rijkspas an accescard for Dutch governemental ministries and agencies", + "company": "ICTU", + "mad": "0x7902", + "service_provider": "ICTU", + "system_integrator": "ICTU" + }, + { + "application": "Rijkspas an accescard for Dutch governemental ministries and agencies", + "company": "ICTU", + "mad": "0x7903", + "service_provider": "ICTU", + "system_integrator": "ICTU" + }, + { + "application": "Rijkspas an accescard for Dutch governemental ministries and agencies", + "company": "ICTU", + "mad": "0x7904", + "service_provider": "ICTU", + "system_integrator": "ICTU" + }, + { + "application": "Rijkspas an accescard for Dutch governemental ministries and agencies", + "company": "ICTU", + "mad": "0x7905", + "service_provider": "ICTU", + "system_integrator": "ICTU" + }, + { + "application": "Rijkspas an accescard for Dutch governemental ministries and agencies", + "company": "ICTU", + "mad": "0x7906", + "service_provider": "ICTU", + "system_integrator": "ICTU" + }, + { + "application": "Rijkspas an accescard for Dutch governemental ministries and agencies", + "company": "ICTU", + "mad": "0x7907", + "service_provider": "ICTU", + "system_integrator": "ICTU" + }, + { + "application": "Rijkspas an accescard for Dutch governemental ministries and agencies", + "company": "ICTU", + "mad": "0x7908", + "service_provider": "ICTU", + "system_integrator": "ICTU" + }, + { + "application": "Rijkspas an accescard for Dutch governemental ministries and agencies", + "company": "ICTU", + "mad": "0x7909", + "service_provider": "ICTU", + "system_integrator": "ICTU" + }, + { + "application": "Rijkspas an accescard for Dutch governemental ministries and agencies", + "company": "ICTU", + "mad": "0x790A", + "service_provider": "ICTU", + "system_integrator": "ICTU" + }, + { + "application": "Rijkspas an accescard for Dutch governemental ministries and agencies", + "company": "ICTU", + "mad": "0x790B", + "service_provider": "ICTU", + "system_integrator": "ICTU" + }, + { + "application": "Rijkspas an accescard for Dutch governemental ministries and agencies", + "company": "ICTU", + "mad": "0x790C", + "service_provider": "ICTU", + "system_integrator": "ICTU" + }, + { + "application": "Rijkspas an accescard for Dutch governemental ministries and agencies", + "company": "ICTU", + "mad": "0x790D", + "service_provider": "ICTU", + "system_integrator": "ICTU" + }, + { + "application": "Rijkspas an accescard for Dutch governemental ministries and agencies", + "company": "ICTU", + "mad": "0x790E", + "service_provider": "ICTU", + "system_integrator": "ICTU" + }, + { + "application": "Rijkspas an accescard for Dutch governemental ministries and agencies", + "company": "ICTU", + "mad": "0x790F", + "service_provider": "ICTU", + "system_integrator": "ICTU" + }, + { + "application": "Rijkspas an accescard for Dutch governemental ministries and agencies", + "company": "ICTU", + "mad": "0x7910", + "service_provider": "ICTU", + "system_integrator": "ICTU" + }, + { + "application": "Tollway", + "company": "VFJ Technology Pty Ltd", + "mad": "0x8001", + "service_provider": "Austream", + "system_integrator": "Austream" + }, + { + "application": "Access control system, time & attendance system", + "company": "Custom Micro Products Ltd.", + "mad": "0x8002", + "service_provider": "Custom Micro Products Ltd", + "system_integrator": "Custom Micro Products Ltd" + }, + { + "application": "Busticketing System", + "company": "VFJ Technology Pty Ltd", + "mad": "0x8003", + "service_provider": "King Man County Public Traffic", + "system_integrator": "Barouh Electronic Co." + }, + { + "application": "Building Management System", + "company": "VFJ Technology Pty Ltd", + "mad": "0x8004", + "service_provider": "VFJ Hong Kong", + "system_integrator": "VFJ Hong Kong" + }, + { + "application": "Security and safty services", + "company": "Staat der Nederlanden, Ministerie van Financien Belastingdienst/Centrum voor facilitaire dienstverlening", + "mad": "0x8006", + "service_provider": "Siemens Nederland BV", + "system_integrator": "Siemens Nederland BV" + }, + { + "application": "Zeiterfassung, Werks- bzw. Gebäudezutritt", + "company": "Voestalpine Informationstechnologie GmbH", + "mad": "0x8007", + "service_provider": "Voestalpine Informationstechnologie GmbH", + "system_integrator": "Voestalpine Informationstechnologie GmbH" + }, + { + "application": "Accesss control in sport stadiums and e-purse", + "company": "FortressGb", + "mad": "0x8008", + "service_provider": "FORTRESSGB", + "system_integrator": "FORTRESSGB" + }, + { + "application": "Personal social status information", + "company": "Civil Registry Agency of the Ministry of Justice of Georgia", + "mad": "0x8009", + "service_provider": "Civil Registry Agency of the Ministry of Justice of Georgia", + "system_integrator": "" + }, + { + "application": "Bargeldlose Abrechnungs-Systeme für Casino- u. Gemeinschaftsverpflegung", + "company": "EKS GmbH", + "mad": "0x8801", + "service_provider": "", + "system_integrator": "EKS GmbH" + }, + { + "application": "Tollway system", + "company": "VFJ Technology Pty Ltd", + "mad": "0x8802", + "service_provider": "VFJ Technology Pty Ltd", + "system_integrator": "Chendu Shuguang Optical Fibre Network (Ltd. China)" + }, + { + "application": "Tollway system", + "company": "VFJ Technology Pty Ltd", + "mad": "0x8803", + "service_provider": "VFJ Technology Pty Ltd", + "system_integrator": "Chendu Shuguang Optical Fibre Network (Ltd. China)" + }, + { + "application": "Automatic Fare Collection city and intercity bus traffic electronic purse", + "company": "Trgovina in Informatika d.o.o.", + "mad": "0x8804", + "service_provider": "Fourth Way - Alpetour", + "system_integrator": "Fourth Way" + }, + { + "application": "Employer indentification card", + "company": "VFJ Technology Pty Ltd", + "mad": "0x8805", + "service_provider": "VFJ Electronics Pty Ltd.", + "system_integrator": "VFJ Electronics PTy Ltd." + }, + { + "application": "City Transport (Metro ticketing, bus ticket)", + "company": "VFJ Technology Pty Ltd", + "mad": "0x8806", + "service_provider": "VFJ Electronic Pty Ltd.", + "system_integrator": "Cubic - VFJ" + }, + { + "application": "Time attandence, access control + security, electronic purse, plant data collection", + "company": "LNI Ingenieurgesellschaft für Kommunikationstechnik mbH", + "mad": "0x8807", + "service_provider": "LNI GmbH", + "system_integrator": "LNI GmbH" + }, + { + "application": "Intelligent Estate Management System", + "company": "Rax Comm Systems Limited", + "mad": "0x8808", + "service_provider": "Rax Comm Systems Limited", + "system_integrator": "Rax Comm Systems Limited" + }, + { + "application": "Tollway", + "company": "VFJ Technology Pty Ltd", + "mad": "0x8809", + "service_provider": "Xiamto Lintong Tollway", + "system_integrator": "" + }, + { + "application": "Tollway", + "company": "VFJ Technology Pty Ltd", + "mad": "0x880A", + "service_provider": "Xiamto Lintong Tollway", + "system_integrator": "" + }, + { + "application": "Access Controll, Security Electronic Purse, Ski-Ticketing, Ticketing", + "company": "*Siemens ANL", + "mad": "0x880B", + "service_provider": "", + "system_integrator": "Siemens AG" + }, + { + "application": "DEM Komponenten für Zutrittskontrolle, Zeiterfassung, Betribsdatenerfassung, Kantine, Automaten, Tankdatenerf.", + "company": "Phg Peter Hengstler GmbH", + "mad": "0x880C", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Electronic Purse for Casino and comon catering", + "company": "EKS GmbH", + "mad": "0x880D", + "service_provider": "", + "system_integrator": "EKS" + }, + { + "application": "OEM-Komponenten für Zutrittskontrolle, Zeiterfassung, elektr. Geldbörse,...", + "company": "Peter Hengstler GmbH + Co KG", + "mad": "0x880E", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "OEM-Komponenten für Zutrittskontrolle, Zeiterfassung, elektr. Geldbörse,...", + "company": "Peter Hengstler GmbH + Co KG", + "mad": "0x880F", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "OEM-Komponenten für Zutrittskontrolle, Zeiterfassung, elektr. Geldbörse,...", + "company": "Peter Hengstler GmbH + Co KG", + "mad": "0x8810", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "OEM-Komponenten für Zutrittskontrolle, Zeiterfassung, elektr. Geldbörse,...", + "company": "Peter Hengstler GmbH + Co KG", + "mad": "0x8811", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "OEM-Komponenten für Zutrittskontrolle, Zeiterfassung, elektr. Geldbörse,...", + "company": "Peter Hengstler GmbH + Co KG", + "mad": "0x8812", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Tollway", + "company": "VFJ Technology Pty Ltd", + "mad": "0x8813", + "service_provider": "Austream", + "system_integrator": "Austream" + }, + { + "application": "Transport Ticketing, E-Purse, Citycard", + "company": "CJS Consultancy Ltd", + "mad": "0x8814", + "service_provider": "", + "system_integrator": "Transmo Citycard Ltd." + }, + { + "application": "Academic Services, Electronic Purse, Access control & security", + "company": "CNA Limited/Rax-Comm Systems Ltd.", + "mad": "0x8815", + "service_provider": "CNA Limited", + "system_integrator": "CNA Limited" + }, + { + "application": "Busticketing System", + "company": "VFJ Technology Pty Ltd", + "mad": "0x8816", + "service_provider": "King Man County Public Traffic", + "system_integrator": "Barouh Electronic Co." + }, + { + "application": "Electronic Purse", + "company": "Counter Solutions Ltd.", + "mad": "0x8817", + "service_provider": "Counter Solutions", + "system_integrator": "Counter Solutions" + }, + { + "application": "Building Management System", + "company": "VFJ Technology Pty Ltd", + "mad": "0x8818", + "service_provider": "VFJ Hong Kong", + "system_integrator": "VFJ Hong Kong" + }, + { + "application": "Weighbridge for trucks", + "company": "VFJ Technology Pty Ltd", + "mad": "0x8819", + "service_provider": "Hardware Systems Sales", + "system_integrator": "" + }, + { + "application": "Access Control, Time & Attendance, E-Purse", + "company": "BALTECH AG", + "mad": "0x881A", + "service_provider": "Baltech", + "system_integrator": "Baltech" + }, + { + "application": "Access control, payment system", + "company": "Maas Systems B.V.", + "mad": "0x881B", + "service_provider": "Maas Systems B.V.", + "system_integrator": "Maas Systems B.V." + }, + { + "application": "Access controll security payment", + "company": "Matsushita Communication Industrial", + "mad": "0x881C", + "service_provider": "Matsushita Communication", + "system_integrator": "Matsushita Communication" + }, + { + "application": "Electronic Purse", + "company": "ITE Smartcard Solutions Limited", + "mad": "0x881D", + "service_provider": "ITE Smartcard", + "system_integrator": "ITE Smartcard" + }, + { + "application": "Electronic purse", + "company": "ADI Ltd.", + "mad": "0x881E", + "service_provider": "Kakitis Ltd", + "system_integrator": "ADI Ltd" + }, + { + "application": "Contactless e-purse", + "company": "Banrisul Processamento de Dados Ltda.", + "mad": "0x881F", + "service_provider": "Banco do Estado do Rio Grande do Sul S/A", + "system_integrator": "Banco do Estado do Rio Grande do Sul S/A" + }, + { + "application": "Contactless e-purse", + "company": "Banrisul Processamento de Dados Ltda.", + "mad": "0x8820", + "service_provider": "Banco do Estado do Rio Grande do Sul S/A", + "system_integrator": "Banco do Estado do Rio Grande do Sul S/A" + }, + { + "application": "Multi functional badge, private application", + "company": "Microtronic AG", + "mad": "0x8821", + "service_provider": "Microtronic AG", + "system_integrator": "Microtronic AG" + }, + { + "application": "Prepaid Electronic Purse", + "company": "Rosan Finance", + "mad": "0x8822", + "service_provider": "Retail Trade & services, Entertainments, Fastfoods, Gazolines etc", + "system_integrator": "Rosan Finance" + }, + { + "application": "Payment Catering", + "company": "Pecusoft Software-Entwicklungsgesellschaft mbH", + "mad": "0x8823", + "service_provider": "Pecusoft GmbH", + "system_integrator": "Pecusoft GmbH" + }, + { + "application": "Access control, time management, electronic wallet", + "company": "Universitaire Ziekenhuizen Leuven", + "mad": "0x8825", + "service_provider": "", + "system_integrator": "GET NV" + }, + { + "application": "Vending cashless prepaid", + "company": "MCF RF TECH SRL", + "mad": "0x8826", + "service_provider": "MCF", + "system_integrator": "MCF" + }, + { + "application": "Electronic purse", + "company": "IPC Systems BV", + "mad": "0x8827", + "service_provider": "IPC", + "system_integrator": "IPC" + }, + { + "application": "Vending System", + "company": "Quality Equipment Benelux B.V.", + "mad": "0x8828", + "service_provider": "Quality Equipment", + "system_integrator": "Quality Equipment" + }, + { + "application": "Electronic purse", + "company": "Hör GmbH & Co.", + "mad": "0x8829", + "service_provider": "Hör GmbH", + "system_integrator": "Hör GmbH" + }, + { + "application": "Electronic purse", + "company": "Tietoenator Energy Components", + "mad": "0x882A", + "service_provider": "Tietoenator", + "system_integrator": "Tietoenator" + }, + { + "application": "Electronic purse", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x882B", + "service_provider": "PBV Kaufmann", + "system_integrator": "PBV Kaufmann" + }, + { + "application": "Electronic purse", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x882C", + "service_provider": "PBV Kaufmann", + "system_integrator": "PBV Kaufmann" + }, + { + "application": "Electronic purse", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x882D", + "service_provider": "PBV Kaufmann", + "system_integrator": "PBV Kaufmann" + }, + { + "application": "Electronic purse", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x882E", + "service_provider": "PBV Kaufmann", + "system_integrator": "PBV Kaufmann" + }, + { + "application": "Electronic purse", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x882F", + "service_provider": "PBV Kaufmann", + "system_integrator": "PBV Kaufmann" + }, + { + "application": "Electronic purse", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x8830", + "service_provider": "PBV Kaufmann", + "system_integrator": "PBV Kaufmann" + }, + { + "application": "Electronic purse", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x8831", + "service_provider": "PBV Kaufmann", + "system_integrator": "PBV Kaufmann" + }, + { + "application": "Electronic purse", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x8832", + "service_provider": "PBV Kaufmann", + "system_integrator": "PBV Kaufmann" + }, + { + "application": "Electronic purse", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x8833", + "service_provider": "PBV Kaufmann", + "system_integrator": "PBV Kaufmann" + }, + { + "application": "Electronic purse", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x8834", + "service_provider": "PBV Kaufmann", + "system_integrator": "PBV Kaufmann" + }, + { + "application": "Computer, car parking, elec. purse, access control & security", + "company": "DECA Engineering", + "mad": "0x8835", + "service_provider": "Deca Engineering", + "system_integrator": "Deca Engineering" + }, + { + "application": "Electronic purse, city traffic", + "company": "Plzeňské Městské Dopravní Podniky A.S.", + "mad": "0x8836", + "service_provider": "Plzenske Mestske", + "system_integrator": "Plzenske Mestske" + }, + { + "application": "", + "company": "TechID Engineering bv", + "mad": "0x8837", + "service_provider": "Tech ID", + "system_integrator": "Tech ID" + }, + { + "application": "Access control, Time attendanc, job control", + "company": "EM Group", + "mad": "0x8838", + "service_provider": "EM Group", + "system_integrator": "EM Group" + }, + { + "application": "Mass Transportation Ticketing", + "company": "Omnifare", + "mad": "0x8839", + "service_provider": "MBS", + "system_integrator": "MBS" + }, + { + "application": "Electronic purse", + "company": "Copie Monnaie France", + "mad": "0x883A", + "service_provider": "Copie Monnaie France", + "system_integrator": "Copie Monnaie France" + }, + { + "application": "Electronic purse", + "company": "Monet+ a.s.", + "mad": "0x883B", + "service_provider": "Monet+", + "system_integrator": "Monet+" + }, + { + "application": "LUAS - light rail", + "company": "Scheidt & Bachmann", + "mad": "0x883C", + "service_provider": "Scheidt & Bachmann", + "system_integrator": "Scheidt & Bachmann" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x883D", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Railway services, city traffic, electronic purse", + "company": "Czech Railways", + "mad": "0x883E", + "service_provider": "Czech Railways", + "system_integrator": "Czech Railways" + }, + { + "application": "Electronic purse, washing card", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x883F", + "service_provider": "BICA AG", + "system_integrator": "BICA AG" + }, + { + "application": "Electronic purse, washing card", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0x8840", + "service_provider": "BICA AG", + "system_integrator": "BICA AG" + }, + { + "application": "Compelete system for lockers, access control & electr. payment", + "company": "Ojmar S. A.", + "mad": "0x8841", + "service_provider": "", + "system_integrator": "Enkoa System S.L." + }, + { + "application": "City traffic, electronic purse, micellaneous applications", + "company": "Koordinator ODIS s.r.o.", + "mad": "0x8842", + "service_provider": "Koordinator", + "system_integrator": "PVT" + }, + { + "application": "Electronic purse, access control for buliding automation", + "company": "CDE Communication Data Engineering GmbH", + "mad": "0x8843", + "service_provider": "CDE", + "system_integrator": "CDE" + }, + { + "application": "Electronic purse, access control for buliding automation", + "company": "CDE Communication Data Engineering GmbH", + "mad": "0x8844", + "service_provider": "CDE", + "system_integrator": "CDE" + }, + { + "application": "Company services, access & sec control, electronic purse...", + "company": "Cominfo a.s.", + "mad": "0x8845", + "service_provider": "Cominfo", + "system_integrator": "Cominfo" + }, + { + "application": "Cashless payment", + "company": "Contidata Datensysteme GmbH", + "mad": "0x8847", + "service_provider": "Contidata", + "system_integrator": "Contidata" + }, + { + "application": "Electronic purse", + "company": "ADE S.r.l.", + "mad": "0x8848", + "service_provider": "ADE", + "system_integrator": "ADE" + }, + { + "application": "Electronic purse", + "company": "ADE S.r.l.", + "mad": "0x8849", + "service_provider": "ADE", + "system_integrator": "ADE" + }, + { + "application": "Electronic purse", + "company": "ADE S.r.l.", + "mad": "0x884A", + "service_provider": "ADE", + "system_integrator": "ADE" + }, + { + "application": "Electronic purse", + "company": "ADE S.r.l.", + "mad": "0x884B", + "service_provider": "ADE", + "system_integrator": "ADE" + }, + { + "application": "Electronic purse", + "company": "Vesiel SPA", + "mad": "0x884C", + "service_provider": "Vesiel", + "system_integrator": "Vesiel" + }, + { + "application": "Electronic purse", + "company": "Vesiel SPA", + "mad": "0x884D", + "service_provider": "Vesiel", + "system_integrator": "Vesiel" + }, + { + "application": "Electronic purse", + "company": "Vesiel SPA", + "mad": "0x884E", + "service_provider": "Vesiel", + "system_integrator": "Vesiel" + }, + { + "application": "Elec ticketing, access control, electronic purse", + "company": "Empresa 1 Sistemas de Automacao e Comercio", + "mad": "0x884F", + "service_provider": "Empresa 1", + "system_integrator": "Empresa 1" + }, + { + "application": "Electronic purse/loyalty", + "company": "Premier Retail Services LTD", + "mad": "0x8850", + "service_provider": "Premier Retail", + "system_integrator": "Premier Retail" + }, + { + "application": "Electronic purse/loyalty", + "company": "Premier Retail Services LTD", + "mad": "0x8851", + "service_provider": "Premier Retail", + "system_integrator": "Premier Retail" + }, + { + "application": "Electronic purse, carparking system, single use ticket, period pass", + "company": "Emcard a.s.", + "mad": "0x8852", + "service_provider": "Emcard", + "system_integrator": "Emtest" + }, + { + "application": "Access & parking control, electronic purse", + "company": "General Meters Corp", + "mad": "0x8853", + "service_provider": "General Meters", + "system_integrator": "General Meters" + }, + { + "application": "Electronic purse", + "company": "DOPRAVNI PODNIK mest Mostu a Litvinova, a.s.", + "mad": "0x8854", + "service_provider": "Dopravni Podnik mest Mostu a Litvinova, a.s.", + "system_integrator": "Mikroelektronika, spol. sr.o., Kpt. Poplera 55, 565 01 Vysoké Myto, CZ" + }, + { + "application": "Privateive Payment System", + "company": "Aztek", + "mad": "0x8855", + "service_provider": "Aztek", + "system_integrator": "Aztek" + }, + { + "application": "Car Parking, Electronic Purse", + "company": "Haguess s.r.o.", + "mad": "0x8856", + "service_provider": "Haguess, s.r.o.", + "system_integrator": "Haguess, s.r.o." + }, + { + "application": "Electronic purse", + "company": "Emcard a.s.", + "mad": "0x8857", + "service_provider": "EMCARD, a.s.", + "system_integrator": "EMTEST, a.s." + }, + { + "application": "MulitApplicaton Purse", + "company": "MCF RF TECH SRL", + "mad": "0x8858", + "service_provider": "MCF Vending", + "system_integrator": "MCF Vending" + }, + { + "application": "Electr purse f. health services", + "company": "QSI", + "mad": "0x8859", + "service_provider": "QSI", + "system_integrator": "QSI" + }, + { + "application": "Closed elc. purse", + "company": "Siemens AG Österreich", + "mad": "0x885A", + "service_provider": "Siemens", + "system_integrator": "Siemens" + }, + { + "application": "Copy machine", + "company": "BCM Bureautique", + "mad": "0x885B", + "service_provider": "BCM Bureautique", + "system_integrator": "BCM Bureautique, Mr. Larbi Seridj" + }, + { + "application": "Transit SmartCard System, City E-purse System", + "company": "Intelligent Transaction Systems de Mexico S.A. de C.V.", + "mad": "0x885C", + "service_provider": "St. John's Transportation Commission", + "system_integrator": "Intelligent Transaction Systems de Mexico" + }, + { + "application": "Electronic purse, city traffic, customer profile, service applic, check-in/out applic", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x885D", + "service_provider": "Mikroelektronika", + "system_integrator": "Mikroelektronika" + }, + { + "application": "Payment, payment OEM, payment partner, entertainment, OEM data", + "company": "Payment Solution AG", + "mad": "0x885E", + "service_provider": "Payment Solution AG", + "system_integrator": "Payment Solution AG" + }, + { + "application": "Payment, payment OEM, payment partner, entertainment, OEM data", + "company": "Payment Solution AG", + "mad": "0x885F", + "service_provider": "Payment Solution AG", + "system_integrator": "Payment Solution AG" + }, + { + "application": "Payment, payment OEM, payment partner, entertainment, OEM data", + "company": "Payment Solution AG", + "mad": "0x8860", + "service_provider": "Payment Solution AG", + "system_integrator": "Payment Solution AG" + }, + { + "application": "E-Purse", + "company": "PT Visionet Internasional", + "mad": "0x8861", + "service_provider": "Visionet", + "system_integrator": "Multipolar" + }, + { + "application": "E-Purse", + "company": "PT Visionet Internasional", + "mad": "0x8862", + "service_provider": "Visionet", + "system_integrator": "Multipolar" + }, + { + "application": "E-Purse", + "company": "PT Visionet Internasional", + "mad": "0x8863", + "service_provider": "Visionet", + "system_integrator": "Multipolar" + }, + { + "application": "Electronic purse", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x8864", + "service_provider": "Siemens Itron Business Services S.A. - Cordoba, Republica Argentina", + "system_integrator": "Siemens Itron Business Services S.A. - Cordoba, Republica Argentina" + }, + { + "application": "Cashless Payment System", + "company": "Infineer", + "mad": "0x8865", + "service_provider": "Infineer", + "system_integrator": "" + }, + { + "application": "Cashless Payment System", + "company": "Infineer", + "mad": "0x8866", + "service_provider": "Infineer", + "system_integrator": "" + }, + { + "application": "Self service kiosk application (ordering and printing photos)", + "company": "CeWe Color AG & Co OHG", + "mad": "0x8867", + "service_provider": "CeWe Color AG & Co OHG", + "system_integrator": "CeWe Color AG & Co OHG" + }, + { + "application": "Self service kiosk application (ordering and printing photos)", + "company": "CeWe Color AG & Co OHG", + "mad": "0x8868", + "service_provider": "CeWe Color AG & Co OHG", + "system_integrator": "CeWe Color AG & Co OHG" + }, + { + "application": "Multiapplication Purse", + "company": "MCF RF TECH SRL", + "mad": "0x8869", + "service_provider": "MCF RF TECH S.R.L.", + "system_integrator": "MCF RF TECH S.R.L." + }, + { + "application": "Vending-Cashless_prepaid", + "company": "MCF RF TECH SRL", + "mad": "0x886A", + "service_provider": "MCF RF TECH S.R.L.", + "system_integrator": "MCF RF TECH S.R.L." + }, + { + "application": "Online Electronic Payment System", + "company": "PinCash International", + "mad": "0x886B", + "service_provider": "Pincash international BV", + "system_integrator": "Pincash international BV" + }, + { + "application": "E-Money Application", + "company": "SQuidcard Ltd", + "mad": "0x886C", + "service_provider": "Squidcard Limited", + "system_integrator": "Applied Card Technologies Ltd" + }, + { + "application": "E-purse", + "company": "Asdion Berhad", + "mad": "0x886D", + "service_provider": "Asdion Berhad", + "system_integrator": "Asdion Berhad" + }, + { + "application": "MIFARE based payment system", + "company": "supercard as", + "mad": "0x886E", + "service_provider": "Supercard as", + "system_integrator": "supercard as" + }, + { + "application": "Electronic purse", + "company": "Group Capmonetique", + "mad": "0x886F", + "service_provider": "CARTAX", + "system_integrator": "MONECARTE" + }, + { + "application": "Electronic purse", + "company": "Group Capmonetique", + "mad": "0x8870", + "service_provider": "SEDECO", + "system_integrator": "MONECARTE" + }, + { + "application": "Electronic purse", + "company": "Group Capmonetique", + "mad": "0x8871", + "service_provider": "MONECARTE", + "system_integrator": "MONECARTE" + }, + { + "application": "Eectronic purse for CROUS", + "company": "Group Capmonetique", + "mad": "0x8872", + "service_provider": "MONECARTE", + "system_integrator": "MONECARTE" + }, + { + "application": "Copier vending Follow-Me Printing", + "company": "Xafax Nederland BV", + "mad": "0x8873", + "service_provider": "Xafax Nederland", + "system_integrator": "Xafax Nederland" + }, + { + "application": "Copier vending Follow-Me Printing", + "company": "Xafax Nederland BV", + "mad": "0x8874", + "service_provider": "Xafax Nederland", + "system_integrator": "Xafax Nederland" + }, + { + "application": "Epurse", + "company": "KORID LK, spol. s r.o", + "mad": "0x8875", + "service_provider": "KORID LK, spol.s.r.o.", + "system_integrator": "KORID LK, spol.s.r.o." + }, + { + "application": "Electronic purse", + "company": "Mikroelektronika GmbH", + "mad": "0x8876", + "service_provider": "MIKROELEKTRONIKA spol.s.r.o., Draby 849, Vysoke Myto 56601, Czech Republic", + "system_integrator": "MIKROELEKTRONIKA spol.s.r.o., Draby 849, Vysoke Myto 56601, Czech Republic" + }, + { + "application": "Electronic payment", + "company": "Dallmayr Card Systeme Gmbh", + "mad": "0x8877", + "service_provider": "Dallmayr Card Systeme Gmbh", + "system_integrator": "Dallmayr Card Systeme Gmbh" + }, + { + "application": "Electronic payment", + "company": "Dallmayr Card Systeme Gmbh", + "mad": "0x8878", + "service_provider": "Dallmayr Card Systeme Gmbh", + "system_integrator": "Dallmayr Card Systeme Gmbh" + }, + { + "application": "Electronic payment", + "company": "Dallmayr Card Systeme Gmbh", + "mad": "0x8879", + "service_provider": "Dallmayr Card Systeme Gmbh", + "system_integrator": "Dallmayr Card Systeme Gmbh" + }, + { + "application": "Electronic payment", + "company": "Dallmayr Card Systeme Gmbh", + "mad": "0x887A", + "service_provider": "Dallmayr Card Systeme Gmbh", + "system_integrator": "Dallmayr Card Systeme Gmbh" + }, + { + "application": "Electronic purse", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x887B", + "service_provider": "ZAGREBACKI Holding d.o.o.", + "system_integrator": "MIKROELEKTRONIKA spol.s.r.o." + }, + { + "application": "Electronic purse", + "company": "Mikroelektronika GmbH", + "mad": "0x887C", + "service_provider": "MIKROELEKTRONIKA spol.s.r.o.", + "system_integrator": "MIKROELEKTRONIKA spol.s.r.o." + }, + { + "application": "Electronic purse", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x887D", + "service_provider": "Mikroelektronika spol.s r.o", + "system_integrator": "Mikroelektronika spol.s r.o" + }, + { + "application": "Electronic Purse", + "company": "Electronic and Software Engineering Limited (EASEL)", + "mad": "0x887E", + "service_provider": "EASEL", + "system_integrator": "EASEL" + }, + { + "application": "Contactless payment", + "company": "Chess embedded Technology", + "mad": "0x887F", + "service_provider": "Chess", + "system_integrator": "Chess" + }, + { + "application": "Electronic purse", + "company": "WIGOTEK, Hardware Software Beratung", + "mad": "0x8880", + "service_provider": "WIGOTEK", + "system_integrator": "WIGOTEK" + }, + { + "application": "Electronic purse", + "company": "WIGOTEK, Hardware Software Beratung", + "mad": "0x8881", + "service_provider": "WIGOTEK", + "system_integrator": "WIGOTEK" + }, + { + "application": "Electronic purse", + "company": "ENKOA System", + "mad": "0x8882", + "service_provider": "ENKOA System S.L.", + "system_integrator": "ENKOA System S.L." + }, + { + "application": "Electronic payment", + "company": "Alcatel-Lucent Bell NV", + "mad": "0x8883", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Electronic payment", + "company": "Alcatel-Lucent Bell NV", + "mad": "0x8884", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Electronic payment", + "company": "Alcatel-Lucent Bell NV", + "mad": "0x8885", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Vending control systems - point, cash purse", + "company": "Unicard S.A.", + "mad": "0x8886", + "service_provider": "UNICARD S.A.", + "system_integrator": "UNICARD S.A." + }, + { + "application": "Vending control systems - point, cash purse", + "company": "Unicard S.A.", + "mad": "0x8887", + "service_provider": "UNICARD S.A.", + "system_integrator": "UNICARD S.A." + }, + { + "application": "Vending control systems - point, cash purse", + "company": "Unicard S.A.", + "mad": "0x8888", + "service_provider": "UNICARD S.A.", + "system_integrator": "UNICARD S.A." + }, + { + "application": "Electronic purse", + "company": "Inepro BV", + "mad": "0x8889", + "service_provider": "Inepro BV", + "system_integrator": "" + }, + { + "application": "Electronic purse", + "company": "Inepro BV", + "mad": "0x888A", + "service_provider": "Inepro BV", + "system_integrator": "" + }, + { + "application": "Electronic purse", + "company": "Inepro BV", + "mad": "0x888B", + "service_provider": "Inepro BV", + "system_integrator": "" + }, + { + "application": "Electronic purse", + "company": "Inepro BV", + "mad": "0x888C", + "service_provider": "Inepro BV", + "system_integrator": "" + }, + { + "application": "Electronic purse", + "company": "Inepro BV", + "mad": "0x888D", + "service_provider": "Inepro BV", + "system_integrator": "" + }, + { + "application": "Electronic purse", + "company": "Inepro BV", + "mad": "0x888E", + "service_provider": "Inepro BV", + "system_integrator": "" + }, + { + "application": "Electronic purse", + "company": "Inepro BV", + "mad": "0x888F", + "service_provider": "Inepro BV", + "system_integrator": "" + }, + { + "application": "Electronic purse", + "company": "Inepro BV", + "mad": "0x8890", + "service_provider": "Inepro BV", + "system_integrator": "" + }, + { + "application": "Electronic purse", + "company": "Inepro BV", + "mad": "0x8891", + "service_provider": "Inepro BV", + "system_integrator": "" + }, + { + "application": "Electronic purse", + "company": "Inepro BV", + "mad": "0x8892", + "service_provider": "Inepro BV", + "system_integrator": "" + }, + { + "application": "Electronic purse for use in proprietary closed system", + "company": "Absec Malaysia SDN BHD", + "mad": "0x8893", + "service_provider": "Absec Malaysia SDN BHD", + "system_integrator": "MLGN Solutions Ltd" + }, + { + "application": "Electronic purse for use in proprietary closed system", + "company": "Absec Malaysia SDN BHD", + "mad": "0x8894", + "service_provider": "Absec Malaysia SDN BHD", + "system_integrator": "MLGN Solutions Ltd" + }, + { + "application": "Electronic purse", + "company": "Koordinator ODIS s.r.o.", + "mad": "0x8895", + "service_provider": "KOORDINATOR ODIS s.r.o.", + "system_integrator": "KOORDINATOR ODIS s.r.o." + }, + { + "application": "Service application for municipal chip card - customer profile (registration) - validity of card (registration)", + "company": "Plzeňské Městské Dopravní Podniky A.S.", + "mad": "0x8896", + "service_provider": "Plzeňské Městské Dopravní Podniky A.S.", + "system_integrator": "Plzeňské Městské Dopravní Podniky A.S." + }, + { + "application": "Electronic purse", + "company": "Mikroelektronika spol.s r.o.", + "mad": "0x8897", + "service_provider": "Jamaica Urban Transit Company Ltd", + "system_integrator": "Mikroelektronika spol.s r.o" + }, + { + "application": "Open cashfile electronic purse", + "company": "Ingenieurbüro Ludwig - Ib Ludwig", + "mad": "0x8898", + "service_provider": "OCF open Cashfile", + "system_integrator": "OCF open Cashfile members" + }, + { + "application": "Open cashfile electronic purse", + "company": "Ingenieurbüro Ludwig - Ib Ludwig", + "mad": "0x8899", + "service_provider": "OCF open Cashfile", + "system_integrator": "OCF open Cashfile members" + }, + { + "application": "Open cashfile electronic purse", + "company": "Ingenieurbüro Ludwig - Ib Ludwig", + "mad": "0x889A", + "service_provider": "OCF open Cashfile", + "system_integrator": "OCF open Cashfile members" + }, + { + "application": "Open cashfile electronic purse", + "company": "Ingenieurbüro Ludwig - Ib Ludwig", + "mad": "0x889B", + "service_provider": "OCF open Cashfile", + "system_integrator": "OCF open Cashfile members" + }, + { + "application": "Open cashfile electronic purse", + "company": "Ingenieurbüro Ludwig - Ib Ludwig", + "mad": "0x889C", + "service_provider": "OCF open Cashfile", + "system_integrator": "OCF open Cashfile members" + }, + { + "application": "Open cashfile electronic purse", + "company": "Ingenieurbüro Ludwig - Ib Ludwig", + "mad": "0x889D", + "service_provider": "OCF open Cashfile", + "system_integrator": "OCF open Cashfile members" + }, + { + "application": "Payment system - electronic purse", + "company": "N&W Innovative Solutions", + "mad": "0x889E", + "service_provider": "N&W", + "system_integrator": "N&W" + }, + { + "application": "Payment system - electronic purse", + "company": "N&W Innovative Solutions", + "mad": "0x889F", + "service_provider": "N&W", + "system_integrator": "N&W" + }, + { + "application": "Payment system - electronic purse", + "company": "N&W Innovative Solutions", + "mad": "0x88A0", + "service_provider": "N&W", + "system_integrator": "N&W" + }, + { + "application": "Payment system - electronic purse", + "company": "N&W Innovative Solutions", + "mad": "0x88A1", + "service_provider": "N&W", + "system_integrator": "N&W" + }, + { + "application": "Contactless payment", + "company": "Rabobank International", + "mad": "0x88A2", + "service_provider": "Rabobank", + "system_integrator": "Rabobank" + }, + { + "application": "Contactless payment", + "company": "Amsterdam Arena", + "mad": "0x88A3", + "service_provider": "Amsterdam Arena", + "system_integrator": "Amsterdam Arena" + }, + { + "application": "Contactless payment", + "company": "Multicard", + "mad": "0x88A4", + "service_provider": "MULTICARD", + "system_integrator": "MULTICARD" + }, + { + "application": "Electronic purse", + "company": "ODP-software s.r.o.", + "mad": "0x88A5", + "service_provider": "ODP-software", + "system_integrator": "ODP-software" + }, + { + "application": "Electronic purse", + "company": "ODP-software s.r.o.", + "mad": "0x88A6", + "service_provider": "ODP-software", + "system_integrator": "ODP-software" + }, + { + "application": "Electronic purse", + "company": "SIT Solution for IT Payment GmbH", + "mad": "0x88A7", + "service_provider": "SIT Solution for IT Payment GmbH", + "system_integrator": "SIT Solution for IT Payment GmbH" + }, + { + "application": "Accesss control in sport stadiums and e-purse", + "company": "FortressGb", + "mad": "0x88AB", + "service_provider": "FORTRESSGB", + "system_integrator": "FORTRESSGB" + }, + { + "application": "Smart City Card \\Schwabencard\"\"", + "company": "Cosmo.id GmbH", + "mad": "0x88AC", + "service_provider": "Cosmo.id", + "system_integrator": "Cosmo.id" + }, + { + "application": "Electronic purse", + "company": "OREDO s.r.o", + "mad": "0x88AD", + "service_provider": "OREDO s.r.o", + "system_integrator": "OREDO s.r.o" + }, + { + "application": "Electronic purse", + "company": "OREDO s.r.o", + "mad": "0x88AE", + "service_provider": "OREDO s.r.o", + "system_integrator": "OREDO s.r.o" + }, + { + "application": "Electronic purse", + "company": "Ústecky kraj", + "mad": "0x88AF", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Electronic purse", + "company": "Ústecky kraj", + "mad": "0x88B0", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Electronic purse", + "company": "TELMAX s.r.o.", + "mad": "0x88B1", + "service_provider": "TELMAX s.r.o.", + "system_integrator": "TELMAX s.r.o." + }, + { + "application": "Contactless Card for payment operations in Kiosk Payment system", + "company": "Sistemas Tecnicos de Cobro S.L.", + "mad": "0x88B2", + "service_provider": "Sistemas Tecnicos de Cobro S.L.", + "system_integrator": "Sistemas Tecnicos de Cobro S.L." + }, + { + "application": "Access control, canteen functionality", + "company": "Elektroniske Betalings Systemer AS", + "mad": "0x88B3", + "service_provider": "Elektroniske Betalings Systemer AS", + "system_integrator": "Elektroniske Betalings Systemer AS" + }, + { + "application": "Electronic purse", + "company": "HUG-Witschi AG", + "mad": "0x88B4", + "service_provider": "HUG-Witschi AG", + "system_integrator": "HUG-Witschi AG" + }, + { + "application": "Electronic purse", + "company": "HUG-Witschi AG", + "mad": "0x88B5", + "service_provider": "HUG-Witschi AG", + "system_integrator": "HUG-Witschi AG" + }, + { + "application": "Electronic purse", + "company": "HUG-Witschi AG", + "mad": "0x88B6", + "service_provider": "HUG-Witschi AG", + "system_integrator": "HUG-Witschi AG" + }, + { + "application": "Electronic purse", + "company": "HUG-Witschi AG", + "mad": "0x88B7", + "service_provider": "HUG-Witschi AG", + "system_integrator": "HUG-Witschi AG" + }, + { + "application": "FIDELIO CRUISE ship property management system, - materials management system, - meal counting system", + "company": "FIDELIO CRUISE SOFTWARE GMBH", + "mad": "0x9101", + "service_provider": "FIDELIO CRUISE SOFTWARE GMBH", + "system_integrator": "FIDELIO CRUISE SOFTWARE GMBH" + }, + { + "application": "FIDELIO CRUISE ship property management system, - materials management system, - meal counting system", + "company": "FIDELIO CRUISE SOFTWARE GMBH", + "mad": "0x9102", + "service_provider": "FIDELIO CRUISE SOFTWARE GMBH", + "system_integrator": "FIDELIO CRUISE SOFTWARE GMBH" + }, + { + "application": "FIDELIO CRUISE ship property management system, - materials management system, - meal counting system", + "company": "FIDELIO CRUISE SOFTWARE GMBH", + "mad": "0x9103", + "service_provider": "FIDELIO CRUISE SOFTWARE GMBH", + "system_integrator": "FIDELIO CRUISE SOFTWARE GMBH" + }, + { + "application": "General / NXP Test / Graz", + "company": "Philips Semiconductors Gratkorn GmbH", + "mad": "0x9502", + "service_provider": "NXP", + "system_integrator": "NXP" + }, + { + "application": "General / NXP Test / Graz", + "company": "Philips Semiconductors Gratkorn GmbH", + "mad": "0x9503", + "service_provider": "NXP", + "system_integrator": "NXP" + }, + { + "application": "General / NXP Test / Graz", + "company": "Philips Semiconductors Gratkorn GmbH", + "mad": "0x9504", + "service_provider": "NXP", + "system_integrator": "NXP" + }, + { + "application": "Prepaid Meteringh, service functions of technical systems", + "company": "Engelmann Sensor GmbH", + "mad": "0x9702", + "service_provider": "Engelmann Sensor GmbH", + "system_integrator": "Engelmann Sensor GmbH" + }, + { + "application": "Prepaid Meteringh, service functions of technical systems", + "company": "Engelmann Sensor GmbH", + "mad": "0x9703", + "service_provider": "Engelmann Sensor GmbH", + "system_integrator": "Engelmann Sensor GmbH" + }, + { + "application": "Prepaid Meteringh, service functions of technical systems", + "company": "Engelmann Sensor GmbH", + "mad": "0x9704", + "service_provider": "Engelmann Sensor GmbH", + "system_integrator": "Engelmann Sensor GmbH" + }, + { + "application": "Prepaid Meteringh, service functions of technical systems", + "company": "Engelmann Sensor GmbH", + "mad": "0x9705", + "service_provider": "Engelmann Sensor GmbH", + "system_integrator": "Engelmann Sensor GmbH" + }, + { + "application": "Prepaid Meteringh, service functions of technical systems", + "company": "Engelmann Sensor GmbH", + "mad": "0x9706", + "service_provider": "Engelmann Sensor GmbH", + "system_integrator": "Engelmann Sensor GmbH" + }, + { + "application": "Prepaid Meteringh, service functions of technical systems", + "company": "Engelmann Sensor GmbH", + "mad": "0x9707", + "service_provider": "Engelmann Sensor GmbH", + "system_integrator": "Engelmann Sensor GmbH" + }, + { + "application": "Prepaid Meteringh, service functions of technical systems", + "company": "Engelmann Sensor GmbH", + "mad": "0x9708", + "service_provider": "Engelmann Sensor GmbH", + "system_integrator": "Engelmann Sensor GmbH" + }, + { + "application": "Health services", + "company": "Rosan Finance", + "mad": "0xA001", + "service_provider": "Express Card", + "system_integrator": "Express Card" + }, + { + "application": "Card holders vital medical data", + "company": "Rosan Finance", + "mad": "0xA002", + "service_provider": "Medical Org.", + "system_integrator": "Rosan Finance" + }, + { + "application": "Identification of card holder", + "company": "Rosan Finance", + "mad": "0xA003", + "service_provider": "Hospitals Cllinics Drug Stores", + "system_integrator": "Rosan Finance" + }, + { + "application": "Medical information", + "company": "CYNAPS", + "mad": "0xA004", + "service_provider": "Cynaps", + "system_integrator": "Cynaps" + }, + { + "application": "Medical information", + "company": "CYNAPS", + "mad": "0xA005", + "service_provider": "Cynaps", + "system_integrator": "Cynaps" + }, + { + "application": "Medical information", + "company": "CYNAPS", + "mad": "0xA006", + "service_provider": "Cynaps", + "system_integrator": "Cynaps" + }, + { + "application": "Medical information", + "company": "CYNAPS", + "mad": "0xA007", + "service_provider": "Cynaps", + "system_integrator": "Cynaps" + }, + { + "application": "Medical information", + "company": "CYNAPS", + "mad": "0xA008", + "service_provider": "Cynaps", + "system_integrator": "Cynaps" + }, + { + "application": "Access control & security, city traffic, sports & entertainment", + "company": "IP Core", + "mad": "0xA009", + "service_provider": "IP Core", + "system_integrator": "IP Core" + }, + { + "application": "Self service, pharmacy, medicine issue", + "company": "EnzoSystems BV", + "mad": "0xA00A", + "service_provider": "EnzoSystems", + "system_integrator": "EnzoSystems" + }, + { + "application": "Health Services", + "company": "QSI", + "mad": "0xA00B", + "service_provider": "QSI", + "system_integrator": "QSI" + }, + { + "application": "Health services", + "company": "Carelink AB", + "mad": "0xA00C", + "service_provider": "Carelink AB", + "system_integrator": "Carelink AB" + }, + { + "application": "Debit card, door access control, computer identification", + "company": "Netcard", + "mad": "0xB001", + "service_provider": "Netcard", + "system_integrator": "Netcard" + }, + { + "application": "Multiapplication car for industry & trafic, parking, swimming pool", + "company": "ASEC S.A.", + "mad": "0xB002", + "service_provider": "ASEC S.A", + "system_integrator": "ASEC S.A" + }, + { + "application": "Miscellaneous application, city traffic, access controll & securitym entertainment, car parking, electronic trade", + "company": "KFAP S.A.", + "mad": "0xB003", + "service_provider": "KFPA", + "system_integrator": "KFPA" + }, + { + "application": "", + "company": "Reac BV", + "mad": "0xB004", + "service_provider": "", + "system_integrator": "REAC" + }, + { + "application": "Electronic purse", + "company": "BULL POLSKA Sp. z o.o.", + "mad": "0xB005", + "service_provider": "BULL POLSKA", + "system_integrator": "BULL POLSKA" + }, + { + "application": "Electronic trade", + "company": "SIT Solution for IT Payment GmbH", + "mad": "0xB006", + "service_provider": "SIT Solution for IT Payment GmbH", + "system_integrator": "SIT Solution for IT Payment GmbH" + }, + { + "application": "Electronic voucher system, loyalty application, electronic wallet, transport", + "company": "Prosoft SPOL S.R.O", + "mad": "0xB007", + "service_provider": "Prosoft SPOL S.R.O", + "system_integrator": "Prosoft SPOL S.R.O" + }, + { + "application": "Electronic voucher system, loyalty application, electronic wallet, transport", + "company": "Prosoft SPOL S.R.O", + "mad": "0xB008", + "service_provider": "Prosoft SPOL S.R.O", + "system_integrator": "Prosoft SPOL S.R.O" + }, + { + "application": "Electronic voucher system, loyalty application, electronic wallet, transport", + "company": "Prosoft SPOL S.R.O", + "mad": "0xB009", + "service_provider": "Prosoft SPOL S.R.O", + "system_integrator": "Prosoft SPOL S.R.O" + }, + { + "application": "Electronic voucher system, loyalty application, electronic wallet, transport", + "company": "Prosoft SPOL S.R.O", + "mad": "0xB00A", + "service_provider": "Prosoft SPOL S.R.O", + "system_integrator": "Prosoft SPOL S.R.O" + }, + { + "application": "Point of sale", + "company": "VFJ Technology Pty Ltd", + "mad": "0xB801", + "service_provider": "VFJ Technology", + "system_integrator": "" + }, + { + "application": "An electronic purse application for Educational Institutions (Universities etc...)", + "company": "VERIFONE ITALIA SRL", + "mad": "0xB802", + "service_provider": "VeriFone Italy", + "system_integrator": "VeriFone Italy" + }, + { + "application": "Banking electronic purse", + "company": "ETC Electronic Technology Communication Company Limited", + "mad": "0xB803", + "service_provider": "Electronic Technology Communication Co Ltd.", + "system_integrator": "Electronic Technology Communication Co Ltd." + }, + { + "application": "Banking prepaid payment", + "company": "ETC Electronic Technology Communication Company Limited", + "mad": "0xB804", + "service_provider": "Vietnam Joint Stock Commercial Bank for Industry and trade (VietinBank)", + "system_integrator": "Electronic Technology Communication Co Ltd (E.T.C)" + }, + { + "application": "Multichip and Multiapplication Credit Card for banking, electronic purse, access control, payment and identification", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0xB805", + "service_provider": "CCC Credit Card Center AG", + "system_integrator": "" + }, + { + "application": "Gaming industry, cashless operation for slotmachines, tables and other Facilities (ID, cashless, offline, purse)", + "company": "Grips Electronic GmbH", + "mad": "0xC001", + "service_provider": "Sun International", + "system_integrator": "Grips, Sun International" + }, + { + "application": "Gaming industry, cashless operation for slotmachines, tables and other Facilities (ID, cashless, offline, purse)", + "company": "Grips Electronic GmbH", + "mad": "0xC002", + "service_provider": "Sun International", + "system_integrator": "Grips, Sun International" + }, + { + "application": "Gaming industry, cashless operation for slotmachines, tables and other Facilities (ID, cashless, offline, purse)", + "company": "Grips Electronic GmbH", + "mad": "0xC003", + "service_provider": "Sun International", + "system_integrator": "Grips, Sun International" + }, + { + "application": "Gaming industry, cashless operation for slotmachines, tables and other Facilities (ID, cashless, offline, purse)", + "company": "Grips Electronic GmbH", + "mad": "0xC004", + "service_provider": "Sun International", + "system_integrator": "Grips, Sun International" + }, + { + "application": "Access Controll, Security Electronic Purse, Ski-Ticketing, Ticketing", + "company": "*Siemens ANL", + "mad": "0xC005", + "service_provider": "", + "system_integrator": "Siemens AG" + }, + { + "application": "Security and safty services", + "company": "Staat der Nederlanden, Ministerie van Financien Belastingdienst/Centrum voor facilitaire dienstverlening", + "mad": "0xC006", + "service_provider": "Siemens Nederland BV", + "system_integrator": "Siemens Nederland BV" + }, + { + "application": "Event ticketing", + "company": "Just Access", + "mad": "0xC007", + "service_provider": "Just Access Inc.", + "system_integrator": "" + }, + { + "application": "Entertainment & Sports", + "company": "A&A Company", + "mad": "0xC008", + "service_provider": "A&A Company", + "system_integrator": "A&A Company" + }, + { + "application": "Miscellaneous application, city traffic, access control & security, entertainment, car parking, electronic trade", + "company": "KFAP S.A.", + "mad": "0xC009", + "service_provider": "KFPA", + "system_integrator": "KFPA" + }, + { + "application": "Access control, time attendance, bus ticket, hotel room card, VIP card f. club", + "company": "Giga-TMS Inc", + "mad": "0xC01A", + "service_provider": "Giga TMS", + "system_integrator": "Giga TMS" + }, + { + "application": "Access control & security, entertainment and sports", + "company": "Giga-TMS Inc", + "mad": "0xC01B", + "service_provider": "Giga", + "system_integrator": "Giga" + }, + { + "application": "Entertainment and Sports, Stadiums, Parking, Ski Ticketing", + "company": "Axess AG", + "mad": "0xC01C", + "service_provider": "Axess", + "system_integrator": "Axess" + }, + { + "application": "Entertainment and Sports, Stadiums, Parking, Ski Ticketing", + "company": "Axess AG", + "mad": "0xC01D", + "service_provider": "Axess", + "system_integrator": "Axess" + }, + { + "application": "Entertainment and Sports, Stadiums, Parking, Ski Ticketing", + "company": "Axess AG", + "mad": "0xC01E", + "service_provider": "Axess", + "system_integrator": "Axess" + }, + { + "application": "Gaming industry, Retail Loyalty, Access Control, Point of Sale", + "company": "Worldsamrt Technology Pty Ltd", + "mad": "0xC01F", + "service_provider": "", + "system_integrator": "Worldsmart Technology" + }, + { + "application": "Gaming industry, Retail Loyalty, Access Control, Point of Sale", + "company": "Worldsamrt Technology Pty Ltd", + "mad": "0xC020", + "service_provider": "", + "system_integrator": "Worldsmart Technology" + }, + { + "application": "Gaming industry, Retail Loyalty, Access Control, Point of Sale", + "company": "Worldsamrt Technology Pty Ltd", + "mad": "0xC021", + "service_provider": "", + "system_integrator": "Worldsmart Technology" + }, + { + "application": "Gaming industry, Retail Loyalty, Access Control, Point of Sale", + "company": "Worldsamrt Technology Pty Ltd", + "mad": "0xC022", + "service_provider": "", + "system_integrator": "Worldsmart Technology" + }, + { + "application": "Gaming industry, Retail Loyalty, Access Control, Point of Sale", + "company": "Worldsamrt Technology Pty Ltd", + "mad": "0xC023", + "service_provider": "", + "system_integrator": "Worldsmart Technology" + }, + { + "application": "Gaming industry, Retail Loyalty, Access Control, Point of Sale", + "company": "Worldsamrt Technology Pty Ltd", + "mad": "0xC024", + "service_provider": "", + "system_integrator": "Worldsmart Technology" + }, + { + "application": "Gaming industry, Retail Loyalty, Access Control, Point of Sale", + "company": "Worldsamrt Technology Pty Ltd", + "mad": "0xC025", + "service_provider": "", + "system_integrator": "Worldsmart Technology" + }, + { + "application": "Gaming industry, Retail Loyalty, Access Control, Point of Sale", + "company": "Worldsamrt Technology Pty Ltd", + "mad": "0xC026", + "service_provider": "", + "system_integrator": "Worldsmart Technology" + }, + { + "application": "Gaming industry, Retail Loyalty, Access Control, Point of Sale", + "company": "Worldsamrt Technology Pty Ltd", + "mad": "0xC027", + "service_provider": "", + "system_integrator": "Worldsmart Technology" + }, + { + "application": "Gaming industry, Retail Loyalty, Access Control, Point of Sale", + "company": "Worldsamrt Technology Pty Ltd", + "mad": "0xC028", + "service_provider": "", + "system_integrator": "Worldsmart Technology" + }, + { + "application": "Gaming industry, Retail Loyalty, Access Control, Point of Sale", + "company": "Worldsamrt Technology Pty Ltd", + "mad": "0xC029", + "service_provider": "", + "system_integrator": "Worldsmart Technology" + }, + { + "application": "Gaming industry, Retail Loyalty, Access Control, Point of Sale", + "company": "Worldsamrt Technology Pty Ltd", + "mad": "0xC02A", + "service_provider": "", + "system_integrator": "Worldsmart Technology" + }, + { + "application": "Gaming industry, Retail Loyalty, Access Control, Point of Sale", + "company": "Worldsamrt Technology Pty Ltd", + "mad": "0xC02B", + "service_provider": "", + "system_integrator": "Worldsmart Technology" + }, + { + "application": "Gaming industry, Retail Loyalty, Access Control, Point of Sale", + "company": "Worldsamrt Technology Pty Ltd", + "mad": "0xC02C", + "service_provider": "", + "system_integrator": "Worldsmart Technology" + }, + { + "application": "Gaming industry, Retail Loyalty, Access Control, Point of Sale", + "company": "Worldsamrt Technology Pty Ltd", + "mad": "0xC02D", + "service_provider": "", + "system_integrator": "Worldsmart Technology" + }, + { + "application": "Compelete system for lockers, access control & electr. payment", + "company": "Ojmar S. A.", + "mad": "0xC02E", + "service_provider": "", + "system_integrator": "Enkoa System S.L." + }, + { + "application": "Company services, access & sec control, electronic purse...", + "company": "Cominfo a.s.", + "mad": "0xC02F", + "service_provider": "Cominfo", + "system_integrator": "Cominfo" + }, + { + "application": "Entertainment & sports", + "company": "n-tree Solutions Ticketsysteme", + "mad": "0xC030", + "service_provider": "n-tree", + "system_integrator": "n-tree" + }, + { + "application": "Access control & security, city traffic, sports & entertainment", + "company": "IP Core", + "mad": "0xC031", + "service_provider": "IP Core", + "system_integrator": "IP Core" + }, + { + "application": "StadiumTicketing & Access Contr", + "company": "T-Systems GEI GmbH", + "mad": "0xC032", + "service_provider": "T-Systems GEI GmbH", + "system_integrator": "T-Systems GEI GmbH" + }, + { + "application": "Car parking, sport applic, hotel, access control systems", + "company": "DATASEC Electronic GmbH", + "mad": "0xC033", + "service_provider": "Datasec", + "system_integrator": "Datatsec" + }, + { + "application": "Gaming Industry", + "company": "Systems in Progress", + "mad": "0xC040", + "service_provider": "Systems in Progress", + "system_integrator": "Systems in Progress" + }, + { + "application": "Gaming Industry", + "company": "Systems in Progress", + "mad": "0xC041", + "service_provider": "Systems in Progress", + "system_integrator": "Systems in Progress" + }, + { + "application": "Gaming Industry", + "company": "Systems in Progress", + "mad": "0xC042", + "service_provider": "Systems in Progress", + "system_integrator": "Systems in Progress" + }, + { + "application": "Gaming Industry", + "company": "Systems in Progress", + "mad": "0xC043", + "service_provider": "Systems in Progress", + "system_integrator": "Systems in Progress" + }, + { + "application": "Payment, payment OEM, payment partner, entertainment, OEM data", + "company": "Payment Solution AG", + "mad": "0xC044", + "service_provider": "Payment Solution AG", + "system_integrator": "Payment Solution AG" + }, + { + "application": "Scorecard for golf, payment solution for golf", + "company": "Gobex", + "mad": "0xC045", + "service_provider": "Gobex", + "system_integrator": "Gobex" + }, + { + "application": "Scorecard for golf, payment solution for golf", + "company": "Gobex", + "mad": "0xC046", + "service_provider": "Gobex", + "system_integrator": "Gobex" + }, + { + "application": "Leisure Management Application. inc. bookings, access control, e-purse and Electronic Point of Sale", + "company": "Gladstone Health & Leisure", + "mad": "0xC047", + "service_provider": "Gladstone", + "system_integrator": "Gladstone" + }, + { + "application": "Leisure Management Application. inc. bookings, access control, e-purse and Electronic Point of Sale", + "company": "Gladstone Health & Leisure", + "mad": "0xC048", + "service_provider": "Gladstone", + "system_integrator": "Gladstone" + }, + { + "application": "Event ticketing", + "company": "IMA ltd.", + "mad": "0xC049", + "service_provider": "IMA LTD.", + "system_integrator": "IMA LTD." + }, + { + "application": "Soccer stadium ticketing and e-purse application", + "company": "Smartchip S.A.", + "mad": "0xC04A", + "service_provider": "Corporacion Dim", + "system_integrator": "Smartchip S.A." + }, + { + "application": "Entertainment & spports", + "company": "Gantner Electronic GmbH", + "mad": "0xC04B", + "service_provider": "GANTNER Electronic", + "system_integrator": "GANTNER Electronic" + }, + { + "application": "Multi-purpose application for sport facilities - access control, purse etc for stadiums, sport centers etc", + "company": "Unicard S.A.", + "mad": "0xC04C", + "service_provider": "UNICARD S.A.", + "system_integrator": "UNICARD S.A." + }, + { + "application": "Multi-purpose application for sport facilities - access control, purse etc for stadiums, sport centers etc", + "company": "Unicard S.A.", + "mad": "0xC04D", + "service_provider": "UNICARD S.A.", + "system_integrator": "UNICARD S.A." + }, + { + "application": "Multi-purpose application for sport facilities - access control, purse etc for stadiums, sport centers etc", + "company": "Unicard S.A.", + "mad": "0xC04E", + "service_provider": "UNICARD S.A.", + "system_integrator": "UNICARD S.A." + }, + { + "application": "Multi-purpose application for sport facilities - access control, purse etc for stadiums, sport centers etc", + "company": "Unicard S.A.", + "mad": "0xC04F", + "service_provider": "UNICARD S.A.", + "system_integrator": "UNICARD S.A." + }, + { + "application": "", + "company": "Reac BV", + "mad": "0xC050", + "service_provider": "", + "system_integrator": "REAC" + }, + { + "application": "Access control and ticketing for entertainment and sports", + "company": "Mosrir Szczecin", + "mad": "0xC051", + "service_provider": "Mosrir Szczecin", + "system_integrator": "Sportdata Sp. 2 0.0." + }, + { + "application": "Accesss control in sport stadiums and e-purse", + "company": "FortressGb", + "mad": "0xC052", + "service_provider": "FORTRESSGB", + "system_integrator": "FORTRESSGB" + }, + { + "application": "Car parking", + "company": "Scheidt & Bachmann", + "mad": "0xC801", + "service_provider": "Scheidt & Bachmann GmbH", + "system_integrator": "" + }, + { + "application": "Car parking", + "company": "Scheidt & Bachmann", + "mad": "0xC802", + "service_provider": "Scheidt & Bachmann GmbH", + "system_integrator": "" + }, + { + "application": "", + "company": "Reserved for MAD", + "mad": "0xC803", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "Car parking systems", + "company": "Eden", + "mad": "0xC805", + "service_provider": "", + "system_integrator": "Eden" + }, + { + "application": "Car Parking", + "company": "MADA Marx Datentechnik GmbH", + "mad": "0xC806", + "service_provider": "MADA", + "system_integrator": "MADA" + }, + { + "application": "Car parking", + "company": "Scheidt & Bachmann", + "mad": "0xC810", + "service_provider": "Scheidt & Bachmann GmbH", + "system_integrator": "" + }, + { + "application": "Car parking", + "company": "CNA Limited/Rax-Comm Systems Ltd.", + "mad": "0xC811", + "service_provider": "CNA Limited", + "system_integrator": "CNA Limited" + }, + { + "application": "Park access application", + "company": "EFKON AG", + "mad": "0xC812", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Park access application", + "company": "EFKON AG", + "mad": "0xC813", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Park access application", + "company": "EFKON AG", + "mad": "0xC814", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Park access application", + "company": "EFKON AG", + "mad": "0xC815", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Park access application", + "company": "EFKON AG", + "mad": "0xC816", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Park access application", + "company": "EFKON AG", + "mad": "0xC817", + "service_provider": "efkon", + "system_integrator": "efkon" + }, + { + "application": "Security and safty services", + "company": "Staat der Nederlanden, Ministerie van Financien Belastingdienst/Centrum voor facilitaire dienstverlening", + "mad": "0xC819", + "service_provider": "Siemens Nederland BV", + "system_integrator": "Siemens Nederland BV" + }, + { + "application": "Car Parking System", + "company": "Edward Keller Ltd.", + "mad": "0xC81A", + "service_provider": "Edward Keller Ltd", + "system_integrator": "Edward Keller Ltd" + }, + { + "application": "Multiapplication car for industry & trafic, parking, swimming pool", + "company": "ASEC S.A.", + "mad": "0xC81B", + "service_provider": "ASEC S.A", + "system_integrator": "ASEC S.A" + }, + { + "application": "Miscellaneous application, city traffic, access control & security entertainment, car parking, electronic trade", + "company": "KFAP S.A.", + "mad": "0xC81C", + "service_provider": "KFPA", + "system_integrator": "KFPA" + }, + { + "application": "Computer, car parking, elec. purse, access control & security", + "company": "DECA Engineering", + "mad": "0xC81D", + "service_provider": "Deca Engineering", + "system_integrator": "Deca Engineering" + }, + { + "application": "", + "company": "TechID Engineering bv", + "mad": "0xC81E", + "service_provider": "Tech ID", + "system_integrator": "Tech ID" + }, + { + "application": "Entertainment and Sports, Stadiums, Parking, Ski Ticketing", + "company": "Axess AG", + "mad": "0xC81F", + "service_provider": "Axess", + "system_integrator": "Axess" + }, + { + "application": "Road toll", + "company": "Diners Club Adriatic d.d.", + "mad": "0xC820", + "service_provider": "Diners Club", + "system_integrator": "Diners Club" + }, + { + "application": "Company services, access & sec control, electronic purse...", + "company": "Cominfo a.s.", + "mad": "0xC821", + "service_provider": "Cominfo", + "system_integrator": "Cominfo" + }, + { + "application": "Access control & security, city traffic, sports & entertainment", + "company": "IP Core", + "mad": "0xC822", + "service_provider": "IP Core", + "system_integrator": "IP Core" + }, + { + "application": "Electronic purse, carparking system, single use ticket, period pass", + "company": "Emcard a.s.", + "mad": "0xC823", + "service_provider": "Emcard", + "system_integrator": "Emtest" + }, + { + "application": "Car parking, sport applic, hotel, access control systems", + "company": "DATASEC Electronic GmbH", + "mad": "0xC824", + "service_provider": "Datasec", + "system_integrator": "Datatsec" + }, + { + "application": "Car parking", + "company": "Parkeon", + "mad": "0xC825", + "service_provider": "Parkeon", + "system_integrator": "Parkeon" + }, + { + "application": "Car parking", + "company": "Parkeon", + "mad": "0xC826", + "service_provider": "Parkeon", + "system_integrator": "Parkeon" + }, + { + "application": "Car parking", + "company": "Parkeon", + "mad": "0xC827", + "service_provider": "Parkeon", + "system_integrator": "Parkeon" + }, + { + "application": "Car parking", + "company": "Parkeon", + "mad": "0xC828", + "service_provider": "Parkeon", + "system_integrator": "Parkeon" + }, + { + "application": "Car parking", + "company": "Parkeon", + "mad": "0xC829", + "service_provider": "Parkeon", + "system_integrator": "Parkeon" + }, + { + "application": "Car parking", + "company": "Parkeon", + "mad": "0xC82A", + "service_provider": "Parkeon", + "system_integrator": "Parkeon" + }, + { + "application": "Car parking", + "company": "Parkeon", + "mad": "0xC82B", + "service_provider": "Parkeon", + "system_integrator": "Parkeon" + }, + { + "application": "Car parking", + "company": "Parkeon", + "mad": "0xC82C", + "service_provider": "Parkeon", + "system_integrator": "Parkeon" + }, + { + "application": "Car parking system", + "company": "PENTA d.o.o.", + "mad": "0xC82D", + "service_provider": "PENTA", + "system_integrator": "PENTA" + }, + { + "application": "Car wash", + "company": "Group Capmonetique", + "mad": "0xC82E", + "service_provider": "MONEPARC, Parc Technologique Les moulins 2, 2791 Chemin St. Bernard, 06220 Vallauris, France", + "system_integrator": "MONECARTE" + }, + { + "application": "Car parking system: storage of entrance and payment information", + "company": "DEC S.R.L", + "mad": "0xC82F", + "service_provider": "DEC S.R.L", + "system_integrator": "DEC S.R.L" + }, + { + "application": "Car parking system: storage of subscription data", + "company": "DEC S.R.L", + "mad": "0xC830", + "service_provider": "DEC S.R.L", + "system_integrator": "DEC S.R.L" + }, + { + "application": "Car parking", + "company": "Cards & Devices GmbH", + "mad": "0xC831", + "service_provider": "Cards & Devices GmbH", + "system_integrator": "Cards & Devices GmbH" + }, + { + "application": "RF Loyalty/Fleet Card System", + "company": "Panasonic Industrial Company", + "mad": "0xC902", + "service_provider": "Panasonic Loyalty", + "system_integrator": "Panasonic Industrial Company" + }, + { + "application": "RF Loyalty/Fleet Card System", + "company": "Panasonic Industrial Company", + "mad": "0xC903", + "service_provider": "Panasonic Loyalty", + "system_integrator": "Panasonic Industrial Company" + }, + { + "application": "Payment, loyalty and vehicle card", + "company": "Tokheim", + "mad": "0xD001", + "service_provider": "Retail Petroleum Systems", + "system_integrator": "Retail Petroleum Systems" + }, + { + "application": "Payment, loyalty and vehicle card", + "company": "Tokheim", + "mad": "0xD002", + "service_provider": "Retail Petroleum Systems", + "system_integrator": "Retail Petroleum Systems" + }, + { + "application": "Payment, loyalty and vehicle card", + "company": "Tokheim", + "mad": "0xD003", + "service_provider": "Retail Petroleum Systems", + "system_integrator": "Retail Petroleum Systems" + }, + { + "application": "Driver Vehicle Indentification / fueling", + "company": "Nedap - CTP B.V.", + "mad": "0xD004", + "service_provider": "Nedap CTP B.V.", + "system_integrator": "D.V.I / Nedap - CTP B.V." + }, + { + "application": "Fuel, Gasoline", + "company": "MADA Marx Datentechnik GmbH", + "mad": "0xD005", + "service_provider": "MADA", + "system_integrator": "MADA" + }, + { + "application": "Electronic fuel voucher", + "company": "GRUPO VR", + "mad": "0xD006", + "service_provider": "Grupo VR", + "system_integrator": "" + }, + { + "application": "Attended and unattended operation", + "company": "Postec Data Systems Limited", + "mad": "0xD007", + "service_provider": "Unisys Marconi Commerce", + "system_integrator": "Postec Data Systems" + }, + { + "application": "Attended and unattended operation", + "company": "Postec Data Systems Limited", + "mad": "0xD008", + "service_provider": "Unisys Marconi Commerce", + "system_integrator": "Postec Data Systems" + }, + { + "application": "Attended and unattended operation", + "company": "Postec Data Systems Limited", + "mad": "0xD009", + "service_provider": "Unisys Marconi Commerce", + "system_integrator": "Postec Data Systems" + }, + { + "application": "Attended and unattended operation", + "company": "Postec Data Systems Limited", + "mad": "0xD00A", + "service_provider": "Unisys Marconi Commerce", + "system_integrator": "Postec Data Systems" + }, + { + "application": "Attended and unattended operation", + "company": "Postec Data Systems Limited", + "mad": "0xD00B", + "service_provider": "Unisys Marconi Commerce", + "system_integrator": "Postec Data Systems" + }, + { + "application": "Attended and unattended operation", + "company": "Postec Data Systems Limited", + "mad": "0xD00C", + "service_provider": "Unisys Marconi Commerce", + "system_integrator": "Postec Data Systems" + }, + { + "application": "Attended and unattended operation", + "company": "Postec Data Systems Limited", + "mad": "0xD00D", + "service_provider": "Unisys Marconi Commerce", + "system_integrator": "Postec Data Systems" + }, + { + "application": "Attended and unattended operation", + "company": "Postec Data Systems Limited", + "mad": "0xD00E", + "service_provider": "Unisys Marconi Commerce", + "system_integrator": "Postec Data Systems" + }, + { + "application": "Attended and unattended operation", + "company": "Postec Data Systems Limited", + "mad": "0xD00F", + "service_provider": "Unisys Marconi Commerce", + "system_integrator": "Postec Data Systems" + }, + { + "application": "Attended and unattended operation", + "company": "Postec Data Systems Limited", + "mad": "0xD010", + "service_provider": "Unisys Marconi Commerce", + "system_integrator": "Postec Data Systems" + }, + { + "application": "Fuel gasoline", + "company": "R&D Solutionz Ltd.", + "mad": "0xD038", + "service_provider": "", + "system_integrator": "R&D" + }, + { + "application": "Fuel gasoline", + "company": "R&D Solutionz Ltd.", + "mad": "0xD039", + "service_provider": "", + "system_integrator": "R&D" + }, + { + "application": "Fuel gasoline", + "company": "R&D Solutionz Ltd.", + "mad": "0xD03A", + "service_provider": "", + "system_integrator": "R&D" + }, + { + "application": "Fuel gasoline", + "company": "R&D Solutionz Ltd.", + "mad": "0xD03B", + "service_provider": "", + "system_integrator": "R&D" + }, + { + "application": "Fuel gasoline", + "company": "R&D Solutionz Ltd.", + "mad": "0xD03C", + "service_provider": "", + "system_integrator": "R&D" + }, + { + "application": "Fuel gasoline", + "company": "R&D Solutionz Ltd.", + "mad": "0xD03D", + "service_provider": "", + "system_integrator": "R&D" + }, + { + "application": "Fuel gasoline", + "company": "R&D Solutionz Ltd.", + "mad": "0xD03E", + "service_provider": "", + "system_integrator": "R&D" + }, + { + "application": "Fuel gasoline", + "company": "R&D Solutionz Ltd.", + "mad": "0xD03F", + "service_provider": "", + "system_integrator": "R&D" + }, + { + "application": "Fuel gasoline", + "company": "R&D Solutionz Ltd.", + "mad": "0xD040", + "service_provider": "", + "system_integrator": "R&D" + }, + { + "application": "Fuel, Gasoline", + "company": "EFKON AG", + "mad": "0xD041", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel, Gasoline", + "company": "EFKON AG", + "mad": "0xD042", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel, Gasoline", + "company": "EFKON AG", + "mad": "0xD043", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel, Gasoline", + "company": "EFKON AG", + "mad": "0xD044", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel, Gasoline", + "company": "EFKON AG", + "mad": "0xD045", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel, Gasoline", + "company": "EFKON AG", + "mad": "0xD046", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel, Gasoline", + "company": "EFKON AG", + "mad": "0xD047", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel, Gasoline", + "company": "EFKON AG", + "mad": "0xD048", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel, Gasoline", + "company": "EFKON AG", + "mad": "0xD049", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel, Gasoline", + "company": "EFKON AG", + "mad": "0xD04A", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel, Gasoline", + "company": "EFKON AG", + "mad": "0xD04B", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel, Gasoline", + "company": "EFKON AG", + "mad": "0xD04C", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel, Gasoline", + "company": "EFKON AG", + "mad": "0xD04D", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel, Gasoline", + "company": "EFKON AG", + "mad": "0xD04E", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel, Gasoline", + "company": "EFKON AG", + "mad": "0xD04F", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD050", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD051", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD052", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD053", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD054", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD055", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD056", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD057", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD058", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD059", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD05A", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD05B", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD05C", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD05D", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD05E", + "service_provider": "Efkon", + "system_integrator": "Efkon" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD05F", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD060", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD061", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD062", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD063", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD064", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD065", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD066", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD067", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD068", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD069", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD06A", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD06B", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD06C", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Fuel Gasoline India", + "company": "EFKON AG", + "mad": "0xD06D", + "service_provider": "Efkon AG", + "system_integrator": "Efkon AG" + }, + { + "application": "Applications for oil and gas", + "company": "Tietoenator Energy Components", + "mad": "0xD06E", + "service_provider": "Tietoenator", + "system_integrator": "Tietoenator" + }, + { + "application": "Applications for oil and gas", + "company": "Tietoenator Energy Components", + "mad": "0xD06F", + "service_provider": "Tietoenator", + "system_integrator": "Tietoenator" + }, + { + "application": "Applications for oil and gas", + "company": "Tietoenator Energy Components", + "mad": "0xD070", + "service_provider": "Tietoenator", + "system_integrator": "Tietoenator" + }, + { + "application": "Applications for oil and gas", + "company": "Tietoenator Energy Components", + "mad": "0xD071", + "service_provider": "Tietoenator", + "system_integrator": "Tietoenator" + }, + { + "application": "Fuel, gasoline station", + "company": "Hectronic GmbH", + "mad": "0xD072", + "service_provider": "Hectronic GmbH", + "system_integrator": "Hectronic GmbH" + }, + { + "application": "Fuel, gasoline", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0xD073", + "service_provider": "BICA AG", + "system_integrator": "BICA AG" + }, + { + "application": "Fuel, gasoline", + "company": "PBV Kaufmann Systeme GmbH", + "mad": "0xD074", + "service_provider": "BICA AG", + "system_integrator": "BICA AG" + }, + { + "application": "", + "company": "Hectronic GmbH", + "mad": "0xD075", + "service_provider": "", + "system_integrator": "Hectronic GmbH" + }, + { + "application": "", + "company": "Hectronic GmbH", + "mad": "0xD076", + "service_provider": "", + "system_integrator": "Hectronic GmbH" + }, + { + "application": "", + "company": "Hectronic GmbH", + "mad": "0xD077", + "service_provider": "", + "system_integrator": "Hectronic GmbH" + }, + { + "application": "Time attendance, fuel, access control", + "company": "Emcard a.s.", + "mad": "0xD078", + "service_provider": "Emtest", + "system_integrator": "Emtest" + }, + { + "application": "Identification", + "company": "Honeywell Automation India Limited", + "mad": "0xD079", + "service_provider": "Honeywell Automation India Limited", + "system_integrator": "Honeywell Automation India Limited" + }, + { + "application": "Security and safty services", + "company": "Staat der Nederlanden, Ministerie van Financien Belastingdienst/Centrum voor facilitaire dienstverlening", + "mad": "0xD801", + "service_provider": "Siemens Nederland BV", + "system_integrator": "Siemens Nederland BV" + }, + { + "application": "", + "company": "X-Ident GmbH", + "mad": "0xE101", + "service_provider": "", + "system_integrator": "" + }, + { + "application": "NFC applications", + "company": "Philips Semiconductors Gratkorn GmbH", + "mad": "0xE102", + "service_provider": "Philips Semiconductors", + "system_integrator": "Philips Semiconductors" + }, + { + "application": "NFC applications", + "company": "NXP Semiconductors", + "mad": "0xE103", + "service_provider": "Philips SC", + "system_integrator": "Philps SC" + }, + { + "application": "Global purse", + "company": "Microtronic AG", + "mad": "0xE104", + "service_provider": "Microtronic AG", + "system_integrator": "Microtronic AG" + }, + { + "application": "Global purse", + "company": "Microtronic AG", + "mad": "0xE105", + "service_provider": "Microtronic AG", + "system_integrator": "Microtronic AG" + }, + { + "application": "Global purse", + "company": "Microtronic AG", + "mad": "0xE106", + "service_provider": "Microtronic AG", + "system_integrator": "Microtronic AG" + }, + { + "application": "Global purse", + "company": "Microtronic AG", + "mad": "0xE107", + "service_provider": "Microtronic AG", + "system_integrator": "Microtronic AG" + }, + { + "application": "MS-Windows Logon and security facilities", + "company": "Integrated Engineering", + "mad": "0xE801", + "service_provider": "IE Holding", + "system_integrator": "IE Holding" + }, + { + "application": "Security and safty services", + "company": "Staat der Nederlanden, Ministerie van Financien Belastingdienst/Centrum voor facilitaire dienstverlening", + "mad": "0xE802", + "service_provider": "Siemens Nederland BV", + "system_integrator": "Siemens Nederland BV" + }, + { + "application": "Safeguard Security Products Family", + "company": "Utimaco Safeware AG - Österreich", + "mad": "0xE803", + "service_provider": "Utimaco Safeware AG", + "system_integrator": "Ultimaco Safeware AG" + }, + { + "application": "Safeguard Security Products Family", + "company": "Utimaco Safeware AG - Österreich", + "mad": "0xE804", + "service_provider": "Utimaco Safeware AG", + "system_integrator": "Ultimaco Safeware AG" + }, + { + "application": "Safeguard Security Products Family", + "company": "Utimaco Safeware AG - Österreich", + "mad": "0xE805", + "service_provider": "Utimaco Safeware AG", + "system_integrator": "Ultimaco Safeware AG" + }, + { + "application": "Computer, car parking, elec. purse, access control & security", + "company": "DECA Engineering", + "mad": "0xE806", + "service_provider": "Deca Engineering", + "system_integrator": "Deca Engineering" + }, + { + "application": "", + "company": "TechID Engineering bv", + "mad": "0xE807", + "service_provider": "Tech ID", + "system_integrator": "Tech ID" + }, + { + "application": "", + "company": "Horoquartz Gestion des Temps", + "mad": "0xE808", + "service_provider": "Horoquartz", + "system_integrator": "Horoquartz" + }, + { + "application": "", + "company": "Horoquartz Gestion des Temps", + "mad": "0xE809", + "service_provider": "Horoquartz", + "system_integrator": "Horoquartz" + }, + { + "application": "", + "company": "Horoquartz Gestion des Temps", + "mad": "0xE80A", + "service_provider": "Horoquartz", + "system_integrator": "Horoquartz" + }, + { + "application": "", + "company": "Horoquartz Gestion des Temps", + "mad": "0xE80B", + "service_provider": "Horoquartz", + "system_integrator": "Horoquartz" + }, + { + "application": "", + "company": "Horoquartz Gestion des Temps", + "mad": "0xE80C", + "service_provider": "Horoquartz", + "system_integrator": "Horoquartz" + }, + { + "application": "PC log on via MIFARE & DESfire", + "company": "Tx Systems Inc", + "mad": "0xE80D", + "service_provider": "TX Systems", + "system_integrator": "TX Systems" + }, + { + "application": "Access control, computer application, company services", + "company": "Volvo Car Corporation", + "mad": "0xE80E", + "service_provider": "Volvo Car", + "system_integrator": "Volvo Car" + }, + { + "application": "Software Licensing Application", + "company": "OmniCard Group B.V.", + "mad": "0xE80F", + "service_provider": "OmniCard Group B.V.", + "system_integrator": "OmniCard Group B.V." + }, + { + "application": "Computer logon", + "company": "Igel Technology GmbH", + "mad": "0xE810", + "service_provider": "Igel Technology GmbH", + "system_integrator": "Igel Technology GmbH" + }, + { + "application": "MS-Windows PC Logon", + "company": "United Access GmbH", + "mad": "0xE811", + "service_provider": "United Access GmbH", + "system_integrator": "United Access GmbH" + }, + { + "application": "Computer Technical Event - Membercard access control", + "company": "Strawberry AG", + "mad": "0xE812", + "service_provider": "Strawberry AG", + "system_integrator": "" + }, + { + "application": "Payment, payment OEM, payment partner, entertainment, OEM data", + "company": "Payment Solution AG", + "mad": "0xE814", + "service_provider": "Payment Solution AG", + "system_integrator": "Payment Solution AG" + }, + { + "application": "MIFARE PC Logon & Security", + "company": "PinCash International", + "mad": "0xE815", + "service_provider": "Pincash international BV", + "system_integrator": "Pincash international BV" + }, + { + "application": "Logical Access control and software licensing", + "company": "INID BV", + "mad": "0xE816", + "service_provider": "INID", + "system_integrator": "INID" + }, + { + "application": "Miscellaneous applications", + "company": "TechID Engineering bv", + "mad": "0xF001", + "service_provider": "Tech ID", + "system_integrator": "Tech ID" + } +] \ No newline at end of file From 158251b2d902e95321265622624f929f53ec8c57 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 16:21:54 +0200 Subject: [PATCH 354/527] look up mad directory json --- client/src/mifare/mad.c | 163 ++++++++++++++++++++++++++++++++++------ client/src/mifare/mad.h | 5 -- 2 files changed, 140 insertions(+), 28 deletions(-) diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index 9887f0a77..169833994 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -14,20 +14,14 @@ #include "pm3_cmd.h" #include "crc.h" #include "util.h" +#include "fileutils.h" +#include "jansson.h" // https://www.nxp.com/docs/en/application-note/AN10787.pdf -static madAIDDescr madKnownAIDs[] = { - {0x0000, "free"}, - {0x0001, "defect, e.g. access keys are destroyed or unknown"}, - {0x0002, "reserved"}, - {0x0003, "contains additional directory info"}, - {0x0004, "contains card holder information in ASCII format."}, - {0x0005, "not applicable (above memory size)"}, +static json_t* mad_known_aids = NULL; - {0x03e1, "NDEF"}, -}; - -static madAIDDescr madKnownClusterCodes[] = { +/* +static madAID_t madKnownClusterCodes[] = { {0x00, "cluster: card administration"}, {0x01, "cluster: miscellaneous applications"}, {0x02, "cluster: miscellaneous applications"}, @@ -95,18 +89,141 @@ static madAIDDescr madKnownClusterCodes[] = { {0xF8, "cluster: miscellaneous applications"}, }; -static const char unknownAID[] = ""; +*/ -static const char *GetAIDDescription(uint16_t AID) { - for (int i = 0; i < ARRAYLEN(madKnownAIDs); i++) - if (madKnownAIDs[i].AID == AID) - return madKnownAIDs[i].Description; - for (int i = 0; i < ARRAYLEN(madKnownClusterCodes); i++) - if (madKnownClusterCodes[i].AID == (AID >> 8)) // high byte - cluster code - return madKnownClusterCodes[i].Description; +static int open_mad_file(json_t **root, bool verbose) { - return unknownAID; + char *path; + int res = searchFile(&path, RESOURCES_SUBDIR, "mad", ".json", true); + if (res != PM3_SUCCESS) { + return PM3_EFILE; + } + + int retval = PM3_SUCCESS; + json_error_t error; + + *root = json_load_file(path, 0, &error); + if (!*root) { + PrintAndLogEx(ERR, "json (%s) error on line %d: %s", path, error.line, error.text); + retval = PM3_ESOFT; + goto out; + } + + if (!json_is_array(*root)) { + PrintAndLogEx(ERR, "Invalid json (%s) format. root must be an array.", path); + retval = PM3_ESOFT; + goto out; + } + + if (verbose) + PrintAndLogEx(SUCCESS, "Loaded file (%s) OK. %zu records.", path, json_array_size(*root)); +out: + free(path); + return retval; +} + +static int close_mad_file(json_t *root) { + json_decref(root); + return PM3_SUCCESS; +} + + +static const char *mad_json_get_str(json_t *data, const char *name) { + + json_t *jstr = json_object_get(data, name); + if (jstr == NULL) + return NULL; + + if (!json_is_string(jstr)) { + PrintAndLogEx(WARNING, _YELLOW_("`%s`") " is not a string", name); + return NULL; + } + + const char *cstr = json_string_value(jstr); + if (strlen(cstr) == 0) + return NULL; + + return cstr; +} + +static int mad_print(json_t **xroot, char *mad, bool verbose, char *out) { + + json_t *root = *xroot; + if (root == NULL) { + int res = open_mad_file(&root, verbose); + if (res != PM3_SUCCESS) + return res; + + *xroot = root; + } + + int retval = PM3_EUNDEF; + + if (root == NULL) + goto out; + + json_t *elm = NULL; + + for (uint32_t idx = 0; idx < json_array_size(root); idx++) { + + json_t *data = json_array_get(root, idx); + if (!json_is_object(data)) { + PrintAndLogEx(ERR, "data [%d] is not an object\n", idx); + continue; + } + + const char *fmad = mad_json_get_str(data, "mad"); + if (strcmp(mad, fmad) == 0) { + elm = data; + break; + } + } + + if (elm == NULL) + goto out; + + retval = PM3_SUCCESS; + + // print here + const char *application = mad_json_get_str(elm, "application"); + const char *company = mad_json_get_str(elm, "company"); + const char *vmad = mad_json_get_str(elm, "mad"); + const char *provider = mad_json_get_str(elm, "service_provider"); + const char *integrator = mad_json_get_str(elm, "system_integrator"); + + sprintf(out, "%s [%s]", application, company); + + if (verbose) { + PrintAndLogEx(SUCCESS, "MAD %s", vmad); + if (application) + PrintAndLogEx(SUCCESS, "Application %s", application); + if (company) + PrintAndLogEx(SUCCESS, "Company %s", company); + if (provider) + PrintAndLogEx(SUCCESS, "Service provider %s", provider); + if (integrator) + PrintAndLogEx(SUCCESS, "System integrator %s", integrator); + } + +out: + if (*xroot == NULL) { + close_mad_file(root); + } + return retval; +} + +static const char *get_aid_description(uint16_t aid) { + + char result[200]; + char s[7] = {0}; + sprintf(s, "0x%04x", aid); + int res = mad_print(&mad_known_aids, s, false, result); + if (res != PM3_SUCCESS) { + return ""; + } + + return ""; } static int madCRCCheck(uint8_t *sector, bool verbose, int MADver) { @@ -232,7 +349,7 @@ int MAD1DecodeAndPrint(uint8_t *sector, bool verbose, bool *haveMAD2) { PrintAndLogEx(INFO, " 00 MAD 1"); for (int i = 1; i < 16; i++) { uint16_t AID = madGetAID(sector, 1, i); - PrintAndLogEx(INFO, " %02d [%04X] %s", i, AID, GetAIDDescription(AID)); + PrintAndLogEx(INFO, " %02d [%04X] %s", i, AID, get_aid_description(AID)); } return PM3_SUCCESS; @@ -258,8 +375,8 @@ int MAD2DecodeAndPrint(uint8_t *sector, bool verbose) { } for (int i = 1; i < 8 + 8 + 7 + 1; i++) { - uint16_t AID = madGetAID(sector, 2, i); - PrintAndLogEx(INFO, "%02d [%04X] %s", i + 16, AID, GetAIDDescription(AID)); + uint16_t aid = madGetAID(sector, 2, i); + PrintAndLogEx(INFO, "%02d [%04X] %s", i + 16, aid, get_aid_description(aid)); } return PM3_SUCCESS; diff --git a/client/src/mifare/mad.h b/client/src/mifare/mad.h index ce5ed4131..e6e960005 100644 --- a/client/src/mifare/mad.h +++ b/client/src/mifare/mad.h @@ -13,11 +13,6 @@ #include "common.h" -typedef struct { - uint16_t AID; - const char *Description; -} madAIDDescr; - int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2); int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen); int MAD1DecodeAndPrint(uint8_t *sector, bool verbose, bool *haveMAD2); From 76791bde0ade2d945025c15002a68a28e3fb64dc Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 16:22:35 +0200 Subject: [PATCH 355/527] textual --- client/src/emv/emvjson.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/emv/emvjson.c b/client/src/emv/emvjson.c index ebf42704f..43f5095e2 100644 --- a/client/src/emv/emvjson.c +++ b/client/src/emv/emvjson.c @@ -325,7 +325,7 @@ bool ParamLoadFromJson(struct tlvdb *tlv) { return false; } - PrintAndLogEx(SUCCESS, "Load params: json(%zu) " _GREEN_("OK"), json_array_size(root)); + PrintAndLogEx(SUCCESS, "Load params: json(%zu) (%s)", json_array_size(root), _GREEN_("OK")); for (int i = 0; i < json_array_size(root); i++) { json_t *data, *jtag, *jlength, *jvalue; From e9fba1991593032871c5afa7587ea81be81f16d3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 16:23:28 +0200 Subject: [PATCH 356/527] fileutils should be searching for json --- client/src/fileutils.c | 58 ++++++++++++++++++++++++------------------ 1 file changed, 33 insertions(+), 25 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 93689d2fa..8528fa770 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -944,22 +944,31 @@ int loadFileJSON(const char *preferredName, void *data, size_t maxdatalen, size_ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, size_t *datalen, bool verbose, void (*callback)(json_t *)) { if (data == NULL) return PM3_EINVARG; - char *fileName = filenamemcopy(preferredName, ".json"); - if (fileName == NULL) return PM3_EMALLOC; *datalen = 0; - json_error_t error; int retval = PM3_SUCCESS; - json_t *root = json_load_file(fileName, 0, &error); + char *path; + int res = searchFile(&path, RESOURCES_SUBDIR, preferredName, ".json", false); + if (res != PM3_SUCCESS) { + return PM3_EFILE; + } + + json_error_t error; + json_t *root = json_load_file(path, 0, &error); + if (verbose) + PrintAndLogEx(SUCCESS, "loaded from JSON file " _YELLOW_("%s"), path); + + free(path); + if (!root) { - PrintAndLogEx(ERR, "ERROR: json " _YELLOW_("%s") " error on line %d: %s", fileName, error.line, error.text); + PrintAndLogEx(ERR, "ERROR: json " _YELLOW_("%s") " error on line %d: %s", preferredName, error.line, error.text); retval = PM3_ESOFT; goto out; } if (!json_is_object(root)) { - PrintAndLogEx(ERR, "ERROR: Invalid json " _YELLOW_("%s") " format. root must be an object.", fileName); + PrintAndLogEx(ERR, "ERROR: Invalid json " _YELLOW_("%s") " format. root must be an object.", preferredName); retval = PM3_ESOFT; goto out; } @@ -980,11 +989,11 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz goto out; } - char path[30] = {0}; - sprintf(path, "$.blocks.%d", i); + char blocks[30] = {0}; + sprintf(blocks, "$.blocks.%d", i); size_t len = 0; - JsonLoadBufAsHex(root, path, &udata[sptr], 16, &len); + JsonLoadBufAsHex(root, blocks, &udata[sptr], 16, &len); if (!len) break; @@ -1002,11 +1011,11 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz goto out; } - char path[30] = {0}; - sprintf(path, "$.blocks.%d", i); + char blocks[30] = {0}; + sprintf(blocks, "$.blocks.%d", i); size_t len = 0; - JsonLoadBufAsHex(root, path, &udata[sptr], 4, &len); + JsonLoadBufAsHex(root, blocks, &udata[sptr], 4, &len); if (!len) break; @@ -1024,11 +1033,11 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz goto out; } - char path[30] = {0}; - sprintf(path, "$.blocks.%zu", i); + char blocks[30] = {0}; + sprintf(blocks, "$.blocks.%zu", i); size_t len = 0; - JsonLoadBufAsHex(root, path, &udata[sptr], 4, &len); + JsonLoadBufAsHex(root, blocks, &udata[sptr], 4, &len); if (!len) break; @@ -1046,11 +1055,11 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz goto out; } - char path[30] = {0}; - sprintf(path, "$.blocks.%zu", i); + char blocks[30] = {0}; + sprintf(blocks, "$.blocks.%zu", i); size_t len = 0; - JsonLoadBufAsHex(root, path, &udata[sptr], 8, &len); + JsonLoadBufAsHex(root, blocks, &udata[sptr], 8, &len); if (!len) break; @@ -1067,11 +1076,11 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz goto out; } - char path[30] = {0}; - sprintf(path, "$.blocks.%zu", i); + char blocks[30] = {0}; + sprintf(blocks, "$.blocks.%zu", i); size_t len = 0; - JsonLoadBufAsHex(root, path, &udata[sptr], 4, &len); + JsonLoadBufAsHex(root, blocks, &udata[sptr], 4, &len); if (!len) break; @@ -1079,15 +1088,14 @@ int loadFileJSONex(const char *preferredName, void *data, size_t maxdatalen, siz } *datalen = sptr; } - if (verbose) - PrintAndLogEx(SUCCESS, "loaded from JSON file " _YELLOW_("%s"), fileName); + +out: if (callback != NULL) { (*callback)(root); } -out: + json_decref(root); - free(fileName); return retval; } From 33965f51d8c1f53618eaa80949cfe3c88ad6cc78 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 16:24:12 +0200 Subject: [PATCH 357/527] minor <> --- client/src/aidsearch.c | 2 -- client/src/aidsearch.h | 3 +-- 2 files changed, 1 insertion(+), 4 deletions(-) diff --git a/client/src/aidsearch.c b/client/src/aidsearch.c index 7361442b0..47c64e77b 100644 --- a/client/src/aidsearch.c +++ b/client/src/aidsearch.c @@ -43,7 +43,6 @@ out: } static int closeAIDFile(json_t *root) { - json_decref(root); return PM3_SUCCESS; } @@ -67,7 +66,6 @@ json_t *AIDSearchGetElm(json_t *root, int elmindx) { } int AIDSearchFree(json_t *root) { - return closeAIDFile(root); } diff --git a/client/src/aidsearch.h b/client/src/aidsearch.h index 528146766..585e173c6 100644 --- a/client/src/aidsearch.h +++ b/client/src/aidsearch.h @@ -15,8 +15,7 @@ #include <stdint.h> #include <stdbool.h> - -#include <jansson.h> +#include "jansson.h" int PrintAIDDescription(json_t *xroot, char *aid, bool verbose); int PrintAIDDescriptionBuf(json_t *root, uint8_t *aid, size_t aidlen, bool verbose); From 241309291b0f7d480d0a58c7d5568c2636bf2fdc Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 16:25:56 +0200 Subject: [PATCH 358/527] chg: hf iclass , use fileutils --- client/src/cmdhficlass.c | 90 +++++++++++++--------------------------- 1 file changed, 29 insertions(+), 61 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index d67deda5a..80390424e 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -752,11 +752,9 @@ static int CmdHFiClassELoad(const char *Cmd) { //Validations if (errors || cmdp == 0) { - usage_hf_iclass_eload(); - return PM3_EINVARG; + return usage_hf_iclass_eload(); } - uint8_t *dump = calloc(2048, sizeof(uint8_t)); if (!dump) { PrintAndLogEx(ERR, "error, cannot allocate memory "); @@ -772,7 +770,7 @@ static int CmdHFiClassELoad(const char *Cmd) { break; } case EML: { - res = loadFileEML(filename, dump, &bytes_read); + res = loadFileEML_safe(filename, (void**)&dump, &bytes_read); break; } case JSON: { @@ -1592,6 +1590,7 @@ static int CmdHFiClassCloneTag(const char *Cmd) { bool errors = false; bool verbose = false; uint8_t cmdp = 0; + while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { switch (tolower(param_getchar(Cmd, cmdp))) { case 'h': @@ -1675,32 +1674,34 @@ static int CmdHFiClassCloneTag(const char *Cmd) { return PM3_EINVARG; } - // file handling and reading - FILE *f = fopen(filename, "rb"); - if (!f) { + uint8_t *dump = NULL; + size_t bytes_read = 0; + if (loadFile_safe(filename, "", (void**)&dump, &bytes_read) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "File: " _YELLOW_("%s") ": not found or locked.", filename); return PM3_EFILE; } - iclass_block_t tag_data[PM3_CMD_DATA_SIZE / 12]; + if (bytes_read == 0) { + PrintAndLogEx(ERR, "file reading error"); + return PM3_EFILE; + } + if (bytes_read < sizeof(iclass_block_t) * (endblock - startblock + 1)) { + PrintAndLogEx(ERR, "file wrong size"); + return PM3_EFILE; + } // read data from file from block 6 --- 19 // we will use this struct [data 8 bytes][MAC 4 bytes] for each block calculate all mac number for each data // then copy to usbcommand->asbytes; // max is 32 - 6 = 28 block. 28 x 12 bytes gives 336 bytes - int i; - fseek(f, startblock * 8, SEEK_SET); - size_t bytes_read = fread(tag_data, sizeof(iclass_block_t), endblock - startblock + 1, f); - fclose(f); - - if (bytes_read == 0) { - PrintAndLogEx(ERR, "file reading error."); - return PM3_EFILE; - } + iclass_block_t tag_data[PM3_CMD_DATA_SIZE / 12]; + memcpy(tag_data, dump + startblock * 8, sizeof(iclass_block_t) * (endblock - startblock + 1)); + uint8_t MAC[4] = {0x00, 0x00, 0x00, 0x00}; uint8_t div_key[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; + int i; int numberAuthRetries = ICLASS_AUTH_RETRY; do { if (select_and_auth(KEY, MAC, div_key, use_credit_key, elite, rawkey, verbose)) @@ -1729,9 +1730,9 @@ static int CmdHFiClassCloneTag(const char *Cmd) { } if (verbose) { - PrintAndLogEx(NORMAL, "------+--------------------------+-------------"); - PrintAndLogEx(NORMAL, "block | data | mac"); - PrintAndLogEx(NORMAL, "------+--------------------------+-------------"); + PrintAndLogEx(INFO, "------+--------------------------+-------------"); + PrintAndLogEx(INFO, "block | data | mac"); + PrintAndLogEx(INFO, "------+--------------------------+-------------"); uint8_t p[12]; for (i = 0; i <= endblock - startblock; i++) { memcpy(p, data + (i * 12), 12); @@ -2032,30 +2033,12 @@ static int CmdHFiClassReadTagFile(const char *Cmd) { if (errors || (strlen(Cmd) == 0)) return usage_hf_iclass_readtagfile(); - // file handling and reading - FILE *f = fopen(filename, "rb"); - if (!f) { + uint8_t *dump = NULL; + size_t bytes_read = 0; + if (loadFile_safe(filename, "", (void**)&dump, &bytes_read) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "File: " _YELLOW_("%s") ": not found or locked.", filename); return PM3_EFILE; } - fseek(f, 0, SEEK_END); - long fsize = ftell(f); - fseek(f, 0, SEEK_SET); - - if (fsize <= 0) { - PrintAndLogEx(ERR, "Error, when getting filesize"); - fclose(f); - return PM3_EFILE; - } - - uint8_t *dump = calloc(fsize, sizeof(uint8_t)); - if (!dump) { - PrintAndLogEx(WARNING, "Failed to allocate memory"); - fclose(f); - return PM3_EMALLOC; - } - size_t bytes_read = fread(dump, 1, fsize, f); - fclose(f); if (verbose) { PrintAndLogEx(INFO, "File: " _YELLOW_("%s"), filename); @@ -2063,6 +2046,7 @@ static int CmdHFiClassReadTagFile(const char *Cmd) { PrintAndLogEx(INFO, "Printing blocks from"); PrintAndLogEx(INFO, "start " _YELLOW_("0x%02x") " end " _YELLOW_("0x%02x"), (startblock == 0) ? 6 : startblock, endblock); } + uint8_t *csn = dump; PrintAndLogEx(INFO, "------+--+-------------------------+----------"); PrintAndLogEx(INFO, " CSN |00| " _GREEN_("%s") " |", sprint_hex(csn, 8)); @@ -2198,30 +2182,14 @@ static int CmdHFiClassCalcNewKey(const char *Cmd) { } static int loadKeys(char *filename) { - FILE *f; - f = fopen(filename, "rb"); - if (!f) { + + uint8_t *dump = NULL; + size_t bytes_read = 0; + if (loadFile_safe(filename, "", (void**)&dump, &bytes_read) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "File: " _YELLOW_("%s") ": not found or locked.", filename); return PM3_EFILE; } - fseek(f, 0, SEEK_END); - long fsize = ftell(f); - fseek(f, 0, SEEK_SET); - if (fsize <= 0) { - PrintAndLogEx(ERR, "Error, when getting filesize"); - fclose(f); - return PM3_EFILE; - } - - uint8_t *dump = calloc(fsize, sizeof(uint8_t)); - if (!dump) { - PrintAndLogEx(WARNING, "Failed to allocate memory"); - fclose(f); - return PM3_EMALLOC; - } - size_t bytes_read = fread(dump, 1, fsize, f); - fclose(f); if (bytes_read > ICLASS_KEYS_MAX * 8) { PrintAndLogEx(WARNING, "File is too long to load - bytes: %zu", bytes_read); free(dump); From 5ada65bb204798f02a6f883d00cd2d1c8f6bb4bd Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 16:46:46 +0200 Subject: [PATCH 359/527] textual --- client/src/cmdhfmf.c | 5 +++++ client/src/cmdhfmfp.c | 4 ++++ 2 files changed, 9 insertions(+) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 24a7c9844..98d8ea42a 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4525,6 +4525,11 @@ static int CmdHF14AMfMAD(const char *Cmd) { PrintAndLogEx(ERR, "error, read sector 0. card don't have MAD or don't have MAD on default keys"); return PM3_ESOFT; } + + + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "--- " _CYAN_("MAD Information") " ---------------------------"); + PrintAndLogEx(INFO, "-------------------------------------------------------------"); if (verbose) { PrintAndLogEx(SUCCESS, "Raw:"); diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index b4cf4907f..51b7a1555 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1327,6 +1327,10 @@ static int CmdHFMFPMAD(const char *Cmd) { return 2; } + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "--- " _CYAN_("MAD Information") " ---------------------------"); + PrintAndLogEx(INFO, "-------------------------------------------------------------"); + if (verbose) { PrintAndLogEx(SUCCESS, "Raw:"); for (int i = 0; i < 4; i ++) From 17f56479ea96bf6cb53f4d394adb4fc34213ed94 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 16:59:20 +0200 Subject: [PATCH 360/527] fix coverity --- client/src/mifare/mad.c | 75 +---------------------------------------- 1 file changed, 1 insertion(+), 74 deletions(-) diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index 169833994..c55c8d9a1 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -20,78 +20,6 @@ // https://www.nxp.com/docs/en/application-note/AN10787.pdf static json_t* mad_known_aids = NULL; -/* -static madAID_t madKnownClusterCodes[] = { - {0x00, "cluster: card administration"}, - {0x01, "cluster: miscellaneous applications"}, - {0x02, "cluster: miscellaneous applications"}, - {0x03, "cluster: miscellaneous applications"}, - {0x04, "cluster: miscellaneous applications"}, - {0x05, "cluster: miscellaneous applications"}, - {0x06, "cluster: miscellaneous applications"}, - {0x07, "cluster: miscellaneous applications"}, - {0x08, "cluster: airlines"}, - {0x09, "cluster: ferry traffic"}, - {0x10, "cluster: railway services"}, - {0x11, "cluster: miscellaneous applications"}, - {0x12, "cluster: transport"}, - {0x14, "cluster: security solutions"}, - {0x18, "cluster: city traffic"}, - {0x19, "cluster: Czech Railways"}, - {0x20, "cluster: bus services"}, - {0x21, "cluster: multi modal transit"}, - {0x28, "cluster: taxi"}, - {0x30, "cluster: road toll"}, - {0x31, "cluster: generic transport"}, - {0x38, "cluster: company services"}, - {0x40, "cluster: city card services"}, - {0x47, "cluster: access control & security"}, - {0x48, "cluster: access control & security"}, - {0x49, "cluster: VIGIK"}, - {0x4A, "cluster: Ministry of Defence, Netherlands"}, - {0x4B, "cluster: Bosch Telecom, Germany"}, - {0x4C, "cluster: European Union Institutions"}, - {0x50, "cluster: ski ticketing"}, - {0x51, "cluster: access control & security"}, - {0x52, "cluster: access control & security"}, - {0x53, "cluster: access control & security"}, - {0x54, "cluster: access control & security"}, - {0x55, "cluster: SOAA standard for offline access standard"}, - {0x56, "cluster: access control & security"}, - {0x58, "cluster: academic services"}, - {0x60, "cluster: food"}, - {0x68, "cluster: non-food trade"}, - {0x70, "cluster: hotel"}, - {0x71, "cluster: loyalty"}, - {0x75, "cluster: airport services"}, - {0x78, "cluster: car rental"}, - {0x79, "cluster: Dutch government"}, - {0x80, "cluster: administration services"}, - {0x88, "cluster: electronic purse"}, - {0x90, "cluster: television"}, - {0x91, "cluster: cruise ship"}, - {0x95, "cluster: IOPTA"}, - {0x97, "cluster: metering"}, - {0x98, "cluster: telephone"}, - {0xA0, "cluster: health services"}, - {0xA8, "cluster: warehouse"}, - {0xB0, "cluster: electronic trade"}, - {0xB8, "cluster: banking"}, - {0xC0, "cluster: entertainment & sports"}, - {0xC8, "cluster: car parking"}, - {0xC9, "cluster: fleet management"}, - {0xD0, "cluster: fuel, gasoline"}, - {0xD8, "cluster: info services"}, - {0xE0, "cluster: press"}, - {0xE1, "cluster: NFC Forum"}, - {0xE8, "cluster: computer"}, - {0xF0, "cluster: mail"}, - {0xF8, "cluster: miscellaneous applications"}, -}; - -*/ - - static int open_mad_file(json_t **root, bool verbose) { char *path; @@ -128,7 +56,6 @@ static int close_mad_file(json_t *root) { return PM3_SUCCESS; } - static const char *mad_json_get_str(json_t *data, const char *name) { json_t *jstr = json_object_get(data, name); @@ -297,7 +224,7 @@ int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) res = res2; if (verbose && !res2) - PrintAndLogEx(SUCCESS, "CRC8-MAD2 (%)", _GREEN_("ok")); + PrintAndLogEx(SUCCESS, "CRC8-MAD2 (%s)", _GREEN_("ok")); } return res; From a71f4cd47545c401717d4868660094de22ed8746 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 17:01:31 +0200 Subject: [PATCH 361/527] fix coverity resource leak --- client/src/cmdhficlass.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 80390424e..82ef2d852 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -1683,10 +1683,13 @@ static int CmdHFiClassCloneTag(const char *Cmd) { if (bytes_read == 0) { PrintAndLogEx(ERR, "file reading error"); + free(dump); return PM3_EFILE; } + if (bytes_read < sizeof(iclass_block_t) * (endblock - startblock + 1)) { PrintAndLogEx(ERR, "file wrong size"); + free(dump); return PM3_EFILE; } @@ -1697,7 +1700,9 @@ static int CmdHFiClassCloneTag(const char *Cmd) { iclass_block_t tag_data[PM3_CMD_DATA_SIZE / 12]; memcpy(tag_data, dump + startblock * 8, sizeof(iclass_block_t) * (endblock - startblock + 1)); - + + free(dump); + uint8_t MAC[4] = {0x00, 0x00, 0x00, 0x00}; uint8_t div_key[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; From cb4369f3ec891d7064dcd89c77eac09550d89b6b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 17:38:29 +0200 Subject: [PATCH 362/527] fix: hf mf mad - return value --- client/src/mifare/mad.c | 14 ++++++++++---- 1 file changed, 10 insertions(+), 4 deletions(-) diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index c55c8d9a1..5f50b3a4e 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -105,6 +105,13 @@ static int mad_print(json_t **xroot, char *mad, bool verbose, char *out) { elm = data; break; } + char low[strlen(fmad)]; + strcpy(low, fmad); + str_lower(low); + if (strcmp(mad, low) == 0) { + elm = data; + break; + } } if (elm == NULL) @@ -142,15 +149,14 @@ out: static const char *get_aid_description(uint16_t aid) { - char result[200]; + static char result[200]; char s[7] = {0}; - sprintf(s, "0x%04x", aid); + sprintf(s, "0x%04X", aid); int res = mad_print(&mad_known_aids, s, false, result); if (res != PM3_SUCCESS) { return ""; } - - return ""; + return result; } static int madCRCCheck(uint8_t *sector, bool verbose, int MADver) { From a93e54374e5902629cf206e6004eaa0046d92889 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 17:52:32 +0200 Subject: [PATCH 363/527] working case-insense --- client/src/mifare/mad.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index 5f50b3a4e..d0838877a 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -105,10 +105,10 @@ static int mad_print(json_t **xroot, char *mad, bool verbose, char *out) { elm = data; break; } - char low[strlen(fmad)]; - strcpy(low, fmad); - str_lower(low); - if (strcmp(mad, low) == 0) { + char lmad[strlen(mad)]; + strcpy(lmad, mad); + str_lower(lmad); + if (strcmp(lmad, fmad) == 0) { elm = data; break; } From 242c276bfb66b6ff79f3276b945f0693a1a29018 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 9 Jun 2020 18:45:37 +0200 Subject: [PATCH 364/527] mfc mad_print compare --- client/src/mifare/mad.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index d0838877a..c3007026b 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -99,19 +99,23 @@ static int mad_print(json_t **xroot, char *mad, bool verbose, char *out) { PrintAndLogEx(ERR, "data [%d] is not an object\n", idx); continue; } - + const char *fmad = mad_json_get_str(data, "mad"); if (strcmp(mad, fmad) == 0) { elm = data; break; } - char lmad[strlen(mad)]; + + char lfmad[strlen(fmad) + 1]; + strcpy(lfmad, fmad); + str_lower(lfmad); + char lmad[strlen(mad) + 1]; strcpy(lmad, mad); str_lower(lmad); - if (strcmp(lmad, fmad) == 0) { + if (strcmp(lmad, lfmad) == 0) { elm = data; break; - } + } } if (elm == NULL) From 33144d1be864818fbe920f69bd9936d1c372dc75 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 9 Jun 2020 18:46:07 +0200 Subject: [PATCH 365/527] mfc mad get_aid_description: add verbose passthru --- client/src/mifare/mad.c | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index c3007026b..ead395773 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -151,12 +151,12 @@ out: return retval; } -static const char *get_aid_description(uint16_t aid) { +static const char *get_aid_description(uint16_t aid, bool verbose) { static char result[200]; char s[7] = {0}; sprintf(s, "0x%04X", aid); - int res = mad_print(&mad_known_aids, s, false, result); + int res = mad_print(&mad_known_aids, s, verbose, result); if (res != PM3_SUCCESS) { return ""; } @@ -286,7 +286,7 @@ int MAD1DecodeAndPrint(uint8_t *sector, bool verbose, bool *haveMAD2) { PrintAndLogEx(INFO, " 00 MAD 1"); for (int i = 1; i < 16; i++) { uint16_t AID = madGetAID(sector, 1, i); - PrintAndLogEx(INFO, " %02d [%04X] %s", i, AID, get_aid_description(AID)); + PrintAndLogEx(INFO, " %02d [%04X] %s", i, AID, get_aid_description(AID, verbose)); } return PM3_SUCCESS; @@ -313,7 +313,7 @@ int MAD2DecodeAndPrint(uint8_t *sector, bool verbose) { for (int i = 1; i < 8 + 8 + 7 + 1; i++) { uint16_t aid = madGetAID(sector, 2, i); - PrintAndLogEx(INFO, "%02d [%04X] %s", i + 16, aid, get_aid_description(aid)); + PrintAndLogEx(INFO, "%02d [%04X] %s", i + 16, aid, get_aid_description(aid, verbose)); } return PM3_SUCCESS; From 35c6ee1bbba0193ae9a8234fad6a3cb8181ef519 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 9 Jun 2020 19:12:29 +0200 Subject: [PATCH 366/527] rework a bit mfc mad --- client/src/mifare/mad.c | 122 ++++++++++++++++++---------------------- 1 file changed, 56 insertions(+), 66 deletions(-) diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index ead395773..cc8037f6a 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -18,7 +18,7 @@ #include "jansson.h" // https://www.nxp.com/docs/en/application-note/AN10787.pdf -static json_t* mad_known_aids = NULL; +static json_t *mad_known_aids = NULL; static int open_mad_file(json_t **root, bool verbose) { @@ -44,7 +44,7 @@ static int open_mad_file(json_t **root, bool verbose) { goto out; } - if (verbose) + if (verbose) PrintAndLogEx(SUCCESS, "Loaded file (%s) OK. %zu records.", path, json_array_size(*root)); out: free(path); @@ -74,93 +74,52 @@ static const char *mad_json_get_str(json_t *data, const char *name) { return cstr; } -static int mad_print(json_t **xroot, char *mad, bool verbose, char *out) { - - json_t *root = *xroot; - if (root == NULL) { - int res = open_mad_file(&root, verbose); - if (res != PM3_SUCCESS) - return res; - - *xroot = root; - } - - int retval = PM3_EUNDEF; - - if (root == NULL) - goto out; +static int print_aid_description(json_t *root, uint16_t aid, char *fmt, bool verbose) { + char lmad[7] = {0}; + sprintf(lmad, "0x%04x", BSWAP_16(aid)); // must be lowercase json_t *elm = NULL; - - for (uint32_t idx = 0; idx < json_array_size(root); idx++) { + for (uint32_t idx = 0; idx < json_array_size(root); idx++) { json_t *data = json_array_get(root, idx); if (!json_is_object(data)) { PrintAndLogEx(ERR, "data [%d] is not an object\n", idx); continue; } - const char *fmad = mad_json_get_str(data, "mad"); - if (strcmp(mad, fmad) == 0) { - elm = data; - break; - } - char lfmad[strlen(fmad) + 1]; strcpy(lfmad, fmad); str_lower(lfmad); - char lmad[strlen(mad) + 1]; - strcpy(lmad, mad); - str_lower(lmad); if (strcmp(lmad, lfmad) == 0) { elm = data; break; } } - if (elm == NULL) - goto out; - - retval = PM3_SUCCESS; - - // print here + if (elm == NULL) { + PrintAndLogEx(INFO, fmt, " (unknown)"); + return PM3_ENODATA; + } + const char *vmad = mad_json_get_str(elm, "mad"); const char *application = mad_json_get_str(elm, "application"); const char *company = mad_json_get_str(elm, "company"); - const char *vmad = mad_json_get_str(elm, "mad"); const char *provider = mad_json_get_str(elm, "service_provider"); const char *integrator = mad_json_get_str(elm, "system_integrator"); - - sprintf(out, "%s [%s]", application, company); - + char result[4 + strlen(application) + strlen(company)]; + sprintf(result, " %s [%s]", application, company); + PrintAndLogEx(INFO, fmt, result); if (verbose) { - PrintAndLogEx(SUCCESS, "MAD %s", vmad); + PrintAndLogEx(SUCCESS, " MAD: %s", vmad); if (application) - PrintAndLogEx(SUCCESS, "Application %s", application); + PrintAndLogEx(SUCCESS, " Application: %s", application); if (company) - PrintAndLogEx(SUCCESS, "Company %s", company); + PrintAndLogEx(SUCCESS, " Company: %s", company); if (provider) - PrintAndLogEx(SUCCESS, "Service provider %s", provider); + PrintAndLogEx(SUCCESS, " Service provider: %s", provider); if (integrator) - PrintAndLogEx(SUCCESS, "System integrator %s", integrator); + PrintAndLogEx(SUCCESS, " System integrator: %s", integrator); } - -out: - if (*xroot == NULL) { - close_mad_file(root); - } - return retval; -} - -static const char *get_aid_description(uint16_t aid, bool verbose) { - - static char result[200]; - char s[7] = {0}; - sprintf(s, "0x%04X", aid); - int res = mad_print(&mad_known_aids, s, verbose, result); - if (res != PM3_SUCCESS) { - return ""; - } - return result; + return PM3_SUCCESS; } static int madCRCCheck(uint8_t *sector, bool verbose, int MADver) { @@ -267,7 +226,17 @@ int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen return PM3_SUCCESS; } +static const char *aid_admin[] = { + "free", + "defect", + "reserved", + "additional directory info", + "card holder info", + "not applicable" +}; + int MAD1DecodeAndPrint(uint8_t *sector, bool verbose, bool *haveMAD2) { + open_mad_file(&mad_known_aids, verbose); // check MAD1 only MADCheck(sector, NULL, verbose, haveMAD2); @@ -284,15 +253,26 @@ int MAD1DecodeAndPrint(uint8_t *sector, bool verbose, bool *haveMAD2) { PrintAndLogEx(WARNING, "Info byte error"); PrintAndLogEx(INFO, " 00 MAD 1"); + uint32_t prev_aid = 0xFFFFFFFF; for (int i = 1; i < 16; i++) { - uint16_t AID = madGetAID(sector, 1, i); - PrintAndLogEx(INFO, " %02d [%04X] %s", i, AID, get_aid_description(AID, verbose)); + uint16_t aid = madGetAID(sector, 1, i); + if (aid < 6) { + PrintAndLogEx(INFO, " %02d [%04X] (%s)", i, aid, aid_admin[aid]); + } else if (prev_aid == aid) { + PrintAndLogEx(INFO, " %02d [%04X] (continuation)", i, aid); + } else { + char fmt[20]; + sprintf(fmt, " %02d [%04X]%s", i, aid, "%s"); + print_aid_description(mad_known_aids, aid, fmt, verbose); + prev_aid = aid; + } } - + close_mad_file(mad_known_aids); return PM3_SUCCESS; } int MAD2DecodeAndPrint(uint8_t *sector, bool verbose) { + open_mad_file(&mad_known_aids, verbose); PrintAndLogEx(INFO, " 16 MAD 2"); int res = madCRCCheck(sector, true, 2); @@ -310,11 +290,21 @@ int MAD2DecodeAndPrint(uint8_t *sector, bool verbose) { if (verbose) PrintAndLogEx(WARNING, "Card publisher sector not present"); } - + uint32_t prev_aid = 0xFFFFFFFF; for (int i = 1; i < 8 + 8 + 7 + 1; i++) { uint16_t aid = madGetAID(sector, 2, i); - PrintAndLogEx(INFO, "%02d [%04X] %s", i + 16, aid, get_aid_description(aid, verbose)); + if (aid < 6) { + PrintAndLogEx(INFO, " %02d [%04X] (%s)", i + 16, aid, aid_admin[aid]); + } else if (prev_aid == aid) { + PrintAndLogEx(INFO, " %02d [%04X] (continuation)", i + 16, aid); + } else { + char fmt[20]; + sprintf(fmt, " %02d [%04X]%s", i + 16, aid, "%s"); + print_aid_description(mad_known_aids, aid, fmt, verbose); + prev_aid = aid; + } } + close_mad_file(mad_known_aids); return PM3_SUCCESS; } From 9a156326894933ac788551eca50713866df8b4d7 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 9 Jun 2020 20:53:33 +0200 Subject: [PATCH 367/527] MAD swap again --- client/src/cmdhfmf.c | 12 ++++++------ client/src/cmdhfmfp.c | 12 ++++++------ client/src/mifare/mad.c | 28 +++++++++++++++++----------- client/src/mifare/mad.h | 6 +++--- 4 files changed, 32 insertions(+), 26 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 98d8ea42a..bd8d158b1 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4499,7 +4499,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { arg_str0("aA", "aid", "print all sectors with specified aid", NULL), arg_str0("kK", "key", "key for printing sectors", NULL), arg_lit0("bB", "keyb", "use key B for access printing sectors (by default: key A)"), - arg_lit0("", "be", "(optional, try BigEndian"), + arg_lit0("", "be", "(optional, BigEndian)"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -4511,7 +4511,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { int keylen; CLIGetHexWithReturn(ctx, 3, key, &keylen); bool keyB = arg_get_lit(4); -// bool use_be = arg_get_lit(5); + bool swapmad = arg_get_lit(5); CLIParserFree(ctx); @@ -4538,7 +4538,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { } bool haveMAD2 = false; - MAD1DecodeAndPrint(sector0, verbose, &haveMAD2); + MAD1DecodeAndPrint(sector0, swapmad, verbose, &haveMAD2); if (haveMAD2) { if (mfReadSector(MF_MAD2_SECTOR, MF_KEY_A, (uint8_t *)g_mifare_mad_key, sector10)) { @@ -4546,7 +4546,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { return PM3_ESOFT; } - MAD2DecodeAndPrint(sector10, verbose); + MAD2DecodeAndPrint(sector10, swapmad, verbose); } if (aidlen == 2) { @@ -4555,7 +4555,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; - if (MADDecode(sector0, sector10, mad, &madlen)) { + if (MADDecode(sector0, sector10, mad, &madlen, swapmad)) { PrintAndLogEx(ERR, "can't decode MAD"); return PM3_ESOFT; } @@ -4650,7 +4650,7 @@ static int CmdHFMFNDEF(const char *Cmd) { uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; - res = MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen); + res = MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen, false); if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "can't decode MAD"); return res; diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 51b7a1555..5332c0f1a 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1297,7 +1297,7 @@ static int CmdHFMFPMAD(const char *Cmd) { arg_str0("aA", "aid", "print all sectors with aid", NULL), arg_str0("kK", "key", "key for printing sectors", NULL), arg_lit0("bB", "keyb", "use key B for access printing sectors (by default: key A)"), - arg_lit0("", "be", "(optional, try BigEndian"), + arg_lit0("", "be", "(optional, BigEndian)"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -1310,7 +1310,7 @@ static int CmdHFMFPMAD(const char *Cmd) { int keylen; CLIGetHexWithReturn(ctx, 3, key, &keylen); bool keyB = arg_get_lit(4); -// bool use_be = arg_get_lit(5); + bool swapmad = arg_get_lit(5); CLIParserFree(ctx); @@ -1338,7 +1338,7 @@ static int CmdHFMFPMAD(const char *Cmd) { } bool haveMAD2 = false; - MAD1DecodeAndPrint(sector0, verbose, &haveMAD2); + MAD1DecodeAndPrint(sector0, swapmad, verbose, &haveMAD2); if (haveMAD2) { if (mfpReadSector(MF_MAD2_SECTOR, MF_KEY_A, (uint8_t *)g_mifarep_mad_key, sector10, verbose)) { @@ -1347,7 +1347,7 @@ static int CmdHFMFPMAD(const char *Cmd) { return 2; } - MAD2DecodeAndPrint(sector10, verbose); + MAD2DecodeAndPrint(sector10, swapmad, verbose); } if (aidlen == 2) { @@ -1356,7 +1356,7 @@ static int CmdHFMFPMAD(const char *Cmd) { uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; - if (MADDecode(sector0, sector10, mad, &madlen)) { + if (MADDecode(sector0, sector10, mad, &madlen, swapmad)) { PrintAndLogEx(ERR, "can't decode MAD"); return 10; } @@ -1451,7 +1451,7 @@ static int CmdHFMFPNDEF(const char *Cmd) { uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; - res = MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen); + res = MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen, false); if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "can't decode MAD"); return res; diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index cc8037f6a..f85dd9cbe 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -76,7 +76,7 @@ static const char *mad_json_get_str(json_t *data, const char *name) { static int print_aid_description(json_t *root, uint16_t aid, char *fmt, bool verbose) { char lmad[7] = {0}; - sprintf(lmad, "0x%04x", BSWAP_16(aid)); // must be lowercase + sprintf(lmad, "0x%04x", aid); // must be lowercase json_t *elm = NULL; @@ -139,11 +139,17 @@ static int madCRCCheck(uint8_t *sector, bool verbose, int MADver) { return PM3_SUCCESS; } -static uint16_t madGetAID(uint8_t *sector, int MADver, int sectorNo) { +static uint16_t madGetAID(uint8_t *sector, bool swapmad, int MADver, int sectorNo) { + uint16_t mad; if (MADver == 1) - return (sector[16 + 2 + (sectorNo - 1) * 2 + 1] << 8) + (sector[16 + 2 + (sectorNo - 1) * 2]); + mad = (sector[16 + 2 + (sectorNo - 1) * 2 + 1] << 8) + (sector[16 + 2 + (sectorNo - 1) * 2]); else - return (sector[2 + (sectorNo - 1) * 2 + 1] << 8) + (sector[2 + (sectorNo - 1) * 2]); + mad = (sector[2 + (sectorNo - 1) * 2 + 1] << 8) + (sector[2 + (sectorNo - 1) * 2]); + if (swapmad) { + return BSWAP_16(mad); + } else { + return mad; + } } int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) { @@ -199,7 +205,7 @@ int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) return res; } -int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen) { +int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen, bool swapmad) { *madlen = 0; bool haveMAD2 = false; int res = MADCheck(sector0, sector10, false, &haveMAD2); @@ -209,7 +215,7 @@ int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen } for (int i = 1; i < 16; i++) { - mad[*madlen] = madGetAID(sector0, 1, i); + mad[*madlen] = madGetAID(sector0, swapmad, 1, i); (*madlen)++; } @@ -219,7 +225,7 @@ int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen (*madlen)++; for (int i = 1; i < 24; i++) { - mad[*madlen] = madGetAID(sector10, 2, i); + mad[*madlen] = madGetAID(sector10, swapmad, 2, i); (*madlen)++; } } @@ -235,7 +241,7 @@ static const char *aid_admin[] = { "not applicable" }; -int MAD1DecodeAndPrint(uint8_t *sector, bool verbose, bool *haveMAD2) { +int MAD1DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose, bool *haveMAD2) { open_mad_file(&mad_known_aids, verbose); // check MAD1 only @@ -255,7 +261,7 @@ int MAD1DecodeAndPrint(uint8_t *sector, bool verbose, bool *haveMAD2) { PrintAndLogEx(INFO, " 00 MAD 1"); uint32_t prev_aid = 0xFFFFFFFF; for (int i = 1; i < 16; i++) { - uint16_t aid = madGetAID(sector, 1, i); + uint16_t aid = madGetAID(sector, swapmad, 1, i); if (aid < 6) { PrintAndLogEx(INFO, " %02d [%04X] (%s)", i, aid, aid_admin[aid]); } else if (prev_aid == aid) { @@ -271,7 +277,7 @@ int MAD1DecodeAndPrint(uint8_t *sector, bool verbose, bool *haveMAD2) { return PM3_SUCCESS; } -int MAD2DecodeAndPrint(uint8_t *sector, bool verbose) { +int MAD2DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose) { open_mad_file(&mad_known_aids, verbose); PrintAndLogEx(INFO, " 16 MAD 2"); @@ -292,7 +298,7 @@ int MAD2DecodeAndPrint(uint8_t *sector, bool verbose) { } uint32_t prev_aid = 0xFFFFFFFF; for (int i = 1; i < 8 + 8 + 7 + 1; i++) { - uint16_t aid = madGetAID(sector, 2, i); + uint16_t aid = madGetAID(sector, swapmad, 2, i); if (aid < 6) { PrintAndLogEx(INFO, " %02d [%04X] (%s)", i + 16, aid, aid_admin[aid]); } else if (prev_aid == aid) { diff --git a/client/src/mifare/mad.h b/client/src/mifare/mad.h index e6e960005..e5f23ea0f 100644 --- a/client/src/mifare/mad.h +++ b/client/src/mifare/mad.h @@ -14,9 +14,9 @@ #include "common.h" int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2); -int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen); -int MAD1DecodeAndPrint(uint8_t *sector, bool verbose, bool *haveMAD2); -int MAD2DecodeAndPrint(uint8_t *sector, bool verbose); +int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen, bool swapmad); +int MAD1DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose, bool *haveMAD2); +int MAD2DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose); #endif // _MAD_H_ From 92f4c445e401198512c144f1648e8210489c5053 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 9 Jun 2020 21:07:53 +0200 Subject: [PATCH 368/527] mfc ndef needs swapped mad according to our default way to treat mad... --- client/src/cmdhfmf.c | 6 +++--- client/src/cmdhfmfp.c | 6 +++--- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index bd8d158b1..1badd75e3 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4528,8 +4528,8 @@ static int CmdHF14AMfMAD(const char *Cmd) { PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "--- " _CYAN_("MAD Information") " ---------------------------"); - PrintAndLogEx(INFO, "-------------------------------------------------------------"); + PrintAndLogEx(INFO, "--- " _CYAN_("MAD Information") " -------------------------------"); + PrintAndLogEx(INFO, "---------------------------------------------------"); if (verbose) { PrintAndLogEx(SUCCESS, "Raw:"); @@ -4650,7 +4650,7 @@ static int CmdHFMFNDEF(const char *Cmd) { uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; - res = MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen, false); + res = MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen, true); if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "can't decode MAD"); return res; diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 5332c0f1a..027fba209 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1328,8 +1328,8 @@ static int CmdHFMFPMAD(const char *Cmd) { } PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "--- " _CYAN_("MAD Information") " ---------------------------"); - PrintAndLogEx(INFO, "-------------------------------------------------------------"); + PrintAndLogEx(INFO, "--- " _CYAN_("MAD Information") " -------------------------------"); + PrintAndLogEx(INFO, "---------------------------------------------------"); if (verbose) { PrintAndLogEx(SUCCESS, "Raw:"); @@ -1451,7 +1451,7 @@ static int CmdHFMFPNDEF(const char *Cmd) { uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; - res = MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen, false); + res = MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen, true); if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "can't decode MAD"); return res; From 4372a728f7287446139d4e96a2325ddd28c6b6c9 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Tue, 9 Jun 2020 21:19:31 +0200 Subject: [PATCH 369/527] mad ndef no swap and restore official AID 0xE103 --- client/src/cmdhfmf.c | 4 ++-- client/src/cmdhfmfp.c | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 1badd75e3..ffc07099b 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4614,7 +4614,7 @@ static int CmdHFMFNDEF(const char *Cmd) { CLIParserFree(ctx); - uint16_t ndefAID = 0x03e1; + uint16_t ndefAID = 0xe103; if (aidlen == 2) ndefAID = (aid[0] << 8) + aid[1]; @@ -4650,7 +4650,7 @@ static int CmdHFMFNDEF(const char *Cmd) { uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; - res = MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen, true); + res = MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen, false); if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "can't decode MAD"); return res; diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 027fba209..f0d90b495 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1415,7 +1415,7 @@ static int CmdHFMFPNDEF(const char *Cmd) { CLIParserFree(ctx); - uint16_t ndefAID = 0x03e1; + uint16_t ndefAID = 0xe103; if (aidlen == 2) ndefAID = (aid[0] << 8) + aid[1]; @@ -1451,7 +1451,7 @@ static int CmdHFMFPNDEF(const char *Cmd) { uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; - res = MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen, true); + res = MADDecode(sector0, (haveMAD2 ? sector10 : NULL), mad, &madlen, false); if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "can't decode MAD"); return res; From def475e747fecbbf74770a4594efb9a103173f75 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 8 Jun 2020 22:15:47 +0200 Subject: [PATCH 370/527] Add SKIPREADLINE support to make and cmake It's mostly for headless support. At the moment, for interactive uage without readline, some commands will exit the client prematurely if they use kbd_enter_pressed(). --- client/CMakeLists.txt | 41 +++++++++++++++++++++++++++++++++++------ client/Makefile | 25 +++++++++++++++++++++---- client/src/cmdhflegic.c | 33 ++++++++++++++++++++++----------- client/src/proxmark3.c | 31 ++++++++++++++++++++++++++++--- client/src/ui.c | 6 +++--- 5 files changed, 109 insertions(+), 27 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 449b4fdbe..8db8ebf9c 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -49,6 +49,21 @@ if (NOT SKIPPYTHON EQUAL 1) pkg_search_module(PYTHON3EMBED QUIET python3-embed) endif (NOT SKIPPYTHON EQUAL 1) +if (NOT SKIPREADLINE EQUAL 1) + if (APPLE) + find_path(READLINE_INCLUDE_DIRS readline/readline.h /usr/local/opt/readline/include /opt/local/include /opt/include /usr/local/include /usr/include NO_DEFAULT_PATH) + endif (APPLE) + find_path(READLINE_INCLUDE_DIRS readline/readline.h) + + if (APPLE) + find_library(READLINE_LIBRARIES readline /usr/local/opt/readline/lib /opt/local/lib /opt/lib /usr/local/lib /usr/lib NO_DEFAULT_PATH) + endif (APPLE) + find_library(READLINE_LIBRARIES readline) + if (READLINE_INCLUDE_DIRS AND READLINE_LIBRARIES) + set(READLINE_FOUND ON) + endif (READLINE_INCLUDE_DIRS AND READLINE_LIBRARIES) +endif (NOT SKIPREADLINE EQUAL 1) + add_subdirectory(${PM3_ROOT}/client/deps deps) set (TARGET_SOURCES @@ -246,6 +261,14 @@ if (NOT SKIPPYTHON EQUAL 1) endif (PYTHON3EMBED_FOUND) endif (NOT SKIPPYTHON EQUAL 1) +if (NOT SKIPREADLINE EQUAL 1) + if (READLINE_FOUND) + add_definitions("-DHAVE_READLINE") + set(ADDITIONAL_DIRS ${READLINE_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) + set(ADDITIONAL_LNK ${READLINE_LIBRARIES} ${ADDITIONAL_LNK}) + endif (READLINE_FOUND) +endif(NOT SKIPREADLINE EQUAL 1) + message("===================================================================") if (SKIPQT EQUAL 1) message("GUI support: skipped") @@ -278,6 +301,16 @@ else (SKIPPYTHON EQUAL 1) message("Python3 library: Python3 not found, disabled") endif (PYTHON3EMBED_FOUND) endif(SKIPPYTHON EQUAL 1) + +if (SKIPREADLINE EQUAL 1) + message("Readline library: skipped") +else (SKIPREADLINE EQUAL 1) + if (READLINE_FOUND) + message("Readline library: enabled") + else (READLINE_FOUND) + message("Readline library: Readline not found, disabled") + endif (READLINE_FOUND) +endif(SKIPREADLINE EQUAL 1) message("===================================================================") add_executable(proxmark3 @@ -308,13 +341,10 @@ target_include_directories(proxmark3 PRIVATE ${ADDITIONAL_DIRS} ) -if (APPLE) - set_target_properties(proxmark3 PROPERTIES LINK_FLAGS "-Wl,-F/Library/Frameworks, -L/usr/local/opt/readline/lib") - set_target_properties(proxmark3 PROPERTIES COMPILE_FLAGS "-I/usr/local/opt/readline/include") -else (APPLE) +if (NOT APPLE) # required for Raspberry Pi, but breaks with clang (OSX). Need to be at the end of the linker line. set(ADDITIONAL_LNK ${ADDITIONAL_LNK} -Wl,--as-needed -latomic -Wl,--no-as-needed) -endif (APPLE) +endif (NOT APPLE) find_library(pm3rrg_rdv4_cliparser REQUIRED) @@ -328,7 +358,6 @@ find_library(pm3rrg_rdv4_whereami REQUIRED) target_link_libraries(proxmark3 PRIVATE bz2 - readline m pm3rrg_rdv4_mbedtls pm3rrg_rdv4_cliparser diff --git a/client/Makefile b/client/Makefile index 102bf62dd..3bd059318 100644 --- a/client/Makefile +++ b/client/Makefile @@ -256,11 +256,14 @@ LDLIBS += $(QTLDLIBS) CXXINCLUDES += $(QTINCLUDES) ## Readline -ifeq ($(platform),Darwin) - LDLIBS += -L/usr/local/opt/readline/lib - INCLUDES += -I/usr/local/opt/readline/include +ifneq ($(SKIPREADLINE),1) + ifeq ($(platform),Darwin) + LDLIBS += -L/usr/local/opt/readline/lib + INCLUDES += -I/usr/local/opt/readline/include + endif + LDLIBS += -lreadline + READLINE_FOUND = 1 endif -LDLIBS += -lreadline ####################################################################################################### CFLAGS ?= $(DEFCFLAGS) @@ -280,6 +283,10 @@ ifneq (,$(findstring MINGW,$(platform))) PM3CFLAGS += -mno-ms-bitfields -fexec-charset=cp850 endif +ifeq ($(READLINE_FOUND),1) + PM3CFLAGS += -DHAVE_READLINE +endif + ifeq ($(BT_FOUND),1) PM3CFLAGS += -DHAVE_BLUEZ endif @@ -366,6 +373,16 @@ else endif endif +ifeq ($(SKIPREADLINE),1) + $(info Readline library: skipped) +else + ifeq ($(READLINE_FOUND),1) + $(info Readline library: enabled) + else + $(info Readline library: Readline not found, disabled) + endif +endif + ifeq ($(SKIPWHEREAMISYSTEM),1) $(info Whereami library: local library forced) else diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index a97d13d3f..f5ba787ad 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -73,12 +73,13 @@ static int usage_legic_sim(void) { } static int usage_legic_wrbl(void) { PrintAndLogEx(NORMAL, "Write data to a LEGIC Prime tag. It autodetects tagsize to make sure size\n"); - PrintAndLogEx(NORMAL, "Usage: hf legic wrbl [h] [o <offset>] [d <data (hex symbols)>]\n"); + PrintAndLogEx(NORMAL, "Usage: hf legic wrbl [h] [o <offset>] [d <data (hex symbols)>] [y]\n"); PrintAndLogEx(NORMAL, "Options:"); PrintAndLogEx(NORMAL, " h : this help"); PrintAndLogEx(NORMAL, " o <offset> : (hex) offset in data array to start writing"); //PrintAndLogEx(NORMAL, " <IV> : (optional) Initialization vector to use (ODD and 7bits)"); PrintAndLogEx(NORMAL, " d <data> : (hex symbols) bytes to write "); + PrintAndLogEx(NORMAL, " y : Auto-confirm dangerous operations "); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); PrintAndLogEx(NORMAL, _YELLOW_(" hf legic wrbl o 10 d 11223344 - Write 0x11223344 starting from offset 0x10")); @@ -596,6 +597,7 @@ static int CmdLegicWrbl(const char *Cmd) { uint8_t *data = NULL; uint8_t cmdp = 0; bool errors = false; + bool autoconfirm = false; int len = 0, bg, en; uint32_t offset = 0, IV = 0x55; @@ -655,6 +657,10 @@ static int CmdLegicWrbl(const char *Cmd) { errors = true; break; } + case 'y': { + autoconfirm = true; + break; + } default: { PrintAndLogEx(WARNING, "Unknown parameter '%c'", param_getchar(Cmd, cmdp)); errors = true; @@ -693,23 +699,28 @@ static int CmdLegicWrbl(const char *Cmd) { return PM3_EOUTOFBOUND; } - if (offset == 5 || offset == 6) { + if ((offset == 5 || offset == 6) && (! autoconfirm)) { PrintAndLogEx(NORMAL, "############# DANGER ################"); PrintAndLogEx(NORMAL, "# changing the DCF is irreversible #"); PrintAndLogEx(NORMAL, "#####################################"); - -#ifndef ANDROID - char *answer = readline("do you really want to continue? y(es) n(o) : "); - bool overwrite = (answer[0] == 'y' || answer[0] == 'Y'); + const char *confirm = "Do you really want to continue? y(es)/n(o) : "; + bool overwrite = false; +#ifdef HAVE_READLINE + char *answer = readline(confirm); + overwrite = (answer[0] == 'y' || answer[0] == 'Y'); +#else + printf("%s", confirm); + char *answer = NULL; + size_t anslen = 0; + if (getline(&answer, &anslen, stdin) > 0) { + overwrite = (answer[0] == 'y' || answer[0] == 'Y'); + } +#endif + free(answer); if (!overwrite) { PrintAndLogEx(NORMAL, "command cancelled"); return PM3_EOPABORTED; } -#else - PrintAndLogEx(NORMAL, "\n No interactive support on Android. "); - PrintAndLogEx(NORMAL, " So no confirmation asked, beware! "); -#endif - } legic_chk_iv(&IV); diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index eb34393ae..eea1718c3 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -15,8 +15,11 @@ #include <stdio.h> // for Mingw readline #include <limits.h> #include <unistd.h> +#ifdef HAVE_READLINE #include <readline/readline.h> #include <readline/history.h> +#endif +#include <ctype.h> #include "usart_defs.h" #include "util_posix.h" #include "proxgui.h" @@ -117,6 +120,7 @@ static void prompt_compose(char *buf, size_t buflen, const char *promptctx, cons snprintf(buf, buflen - 1, PROXPROMPT_COMPOSE, promptdev, promptctx); } +#ifdef HAVE_READLINE static int check_comm(void) { // If communications thread goes down. Device disconnected then this should hook up PM3 again. if (IsCommunicationThreadDead() && session.pm3_present) { @@ -132,6 +136,7 @@ static int check_comm(void) { } return 0; } +#endif // first slot is always NULL, indicating absence of script when idx=0 static FILE *cmdscriptfile[MAX_NESTED_CMDSCRIPT + 1] = {0}; @@ -208,6 +213,7 @@ main_loop(char *script_cmds_file, char *script_cmd, bool stayInCommandLoop) { } } +#ifdef HAVE_READLINE char *my_history_path = NULL; if (searchHomeFilePath(&my_history_path, NULL, PROXHISTORY, true) != PM3_SUCCESS) { PrintAndLogEx(ERR, "No history will be recorded"); @@ -215,6 +221,7 @@ main_loop(char *script_cmds_file, char *script_cmd, bool stayInCommandLoop) { } else { read_history(my_history_path); } +#endif // loops every time enter is pressed... while (1) { bool printprompt = false; @@ -290,12 +297,25 @@ check_script: } else { prompt_ctx = PROXPROMPT_CTX_INTERACTIVE; - rl_event_hook = check_comm; char prompt[PROXPROMPT_MAX_SIZE] = {0}; prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev); char prompt_filtered[PROXPROMPT_MAX_SIZE] = {0}; memcpy_filter_ansi(prompt_filtered, prompt, sizeof(prompt_filtered), !session.supports_colors); +#ifdef HAVE_READLINE + rl_event_hook = check_comm; cmd = readline(prompt_filtered); +#else + printf("%s", prompt_filtered); + cmd = NULL; + size_t len = 0; + int ret; + if ((ret = getline(&cmd, &len, stdin)) < 0) { + // TODO this happens also when kbd_enter_pressed() is used, with a key pressed or not + printf("GETLINE ERR %i", ret); + free(cmd); + cmd = NULL; + } +#endif fflush(NULL); } } @@ -333,6 +353,7 @@ check_script: PrintAndLogEx(NORMAL, "%s%s", prompt_filtered, cmd); g_printAndLog = PRINTANDLOG_PRINT | PRINTANDLOG_LOG; +#ifdef HAVE_READLINE // add to history if not from a script if (!current_cmdscriptfile()) { HIST_ENTRY *entry = history_get(history_length); @@ -341,6 +362,7 @@ check_script: add_history(cmd); } } +#endif // process cmd int ret = CommandReceived(cmd); // exit or quit @@ -367,11 +389,12 @@ check_script: while (current_cmdscriptfile()) pop_cmdscriptfile(); +#ifdef HAVE_READLINE if (my_history_path) { write_history(my_history_path); free(my_history_path); } - +#endif if (cmd) { free(cmd); cmd = NULL; @@ -681,12 +704,14 @@ int main(int argc, char *argv[]) { char *port = NULL; uint32_t speed = 0; +#ifdef HAVE_READLINE /* initialize history */ using_history(); #ifdef RL_STATE_READCMD rl_extend_line_buffer(1024); -#endif +#endif // RL_STATE_READCMD +#endif // HAVE_READLINE char *exec_name = argv[0]; #if defined(_WIN32) diff --git a/client/src/ui.c b/client/src/ui.c index 0f4e28a62..68f0eab24 100644 --- a/client/src/ui.c +++ b/client/src/ui.c @@ -22,7 +22,7 @@ #include <stdarg.h> #include <stdlib.h> -#ifndef ANDROID +#ifdef HAVE_READLINE #include <readline/readline.h> #endif @@ -297,8 +297,6 @@ void PrintAndLogEx(logLevel_t level, const char *fmt, ...) { } static void fPrintAndLog(FILE *stream, const char *fmt, ...) { - char *saved_line; - int saved_point; va_list argptr; static FILE *logfile = NULL; static int logging = 1; @@ -344,6 +342,8 @@ static void fPrintAndLog(FILE *stream, const char *fmt, ...) { #ifdef RL_STATE_READCMD // We are using GNU readline. libedit (OSX) doesn't support this flag. int need_hack = (rl_readline_state & RL_STATE_READCMD) > 0; + char *saved_line; + int saved_point; if (need_hack) { saved_point = rl_point; From dcabb7e37d956142aa78bc701affb1d5a8b81c25 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 21:29:59 +0200 Subject: [PATCH 371/527] chg: hf 14a info - dont print some hints if magic --- client/src/cmdhf14a.c | 19 ++++++++++--------- client/src/mifare/mifarehost.c | 3 ++- client/src/mifare/mifarehost.h | 2 +- 3 files changed, 13 insertions(+), 11 deletions(-) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 7703fe849..50d3fd30a 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -296,7 +296,7 @@ static int CmdHF14AReader(const char *Cmd) { break; default: PrintAndLogEx(WARNING, "Unknown command."); - return 1; + return PM3_EINVARG; } cmdp++; } @@ -312,7 +312,7 @@ static int CmdHF14AReader(const char *Cmd) { if (!WaitForResponseTimeout(CMD_ACK, &resp, 2500)) { if (!silent) PrintAndLogEx(WARNING, "iso14443a card select failed"); DropField(); - return 1; + return PM3_ESOFT; } iso14a_card_select_t card; @@ -329,14 +329,14 @@ static int CmdHF14AReader(const char *Cmd) { if (select_status == 0) { if (!silent) PrintAndLogEx(WARNING, "iso14443a card select failed"); DropField(); - return 1; + return PM3_ESOFT; } if (select_status == 3) { PrintAndLogEx(INFO, "Card doesn't support standard iso14443-3 anticollision"); PrintAndLogEx(SUCCESS, "ATQA: %02x %02x", card.atqa[1], card.atqa[0]); DropField(); - return 1; + return PM3_ESOFT; } PrintAndLogEx(SUCCESS, " UID: " _GREEN_("%s"), sprint_hex(card.uid, card.uidlen)); @@ -356,7 +356,7 @@ static int CmdHF14AReader(const char *Cmd) { if (!silent) PrintAndLogEx(INFO, "field dropped."); } - return 0; + return PM3_SUCCESS; } static int CmdHF14AInfo(const char *Cmd) { @@ -385,7 +385,7 @@ static int CmdHF14AInfo(const char *Cmd) { CLIParserFree(ctx); infoHF14A(verbose, do_nack_test, do_aid_search); - return 0; + return PM3_SUCCESS; } // Collect ISO14443 Type A UIDs @@ -1773,8 +1773,9 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { PrintAndLogEx(INFO, "proprietary non iso14443-4 card found, RATS not supported"); } + int isMagic = 0; if (isMifareClassic || isMifareUltralight) { - detect_classic_magic(); + isMagic = detect_classic_magic(); if (isMifareClassic) { int res = detect_classic_prng(); @@ -1800,10 +1801,10 @@ int infoHF14A(bool verbose, bool do_nack_test, bool do_aid_search) { if (isMifareUltralight) PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf mfu info`")); - if (isMifarePlus) + if (isMifarePlus && isMagic == 0) PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf mfp info`")); - if (isMifareDESFire) + if (isMifareDESFire && isMagic == 0) PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`hf mfdes info`")); DropField(); diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index 8e476a424..cf8a414c9 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -1117,7 +1117,7 @@ int detect_classic_static_nonce(void) { } /* try to see if card responses to "chinese magic backdoor" commands. */ -void detect_classic_magic(void) { +int detect_classic_magic(void) { uint8_t isGeneration = 0; PacketResponseNG resp; @@ -1144,4 +1144,5 @@ void detect_classic_magic(void) { default: break; } + return isGeneration; } diff --git a/client/src/mifare/mifarehost.h b/client/src/mifare/mifarehost.h index fc3a571be..f8205732f 100644 --- a/client/src/mifare/mifarehost.h +++ b/client/src/mifare/mifarehost.h @@ -84,7 +84,7 @@ int tryDecryptWord(uint32_t nt, uint32_t ar_enc, uint32_t at_enc, uint8_t *data, int detect_classic_prng(void); int detect_classic_nackbug(bool verbose); -void detect_classic_magic(void); +int detect_classic_magic(void); int detect_classic_static_nonce(void); void mf_crypto1_decrypt(struct Crypto1State *pcs, uint8_t *data, int len, bool isEncrypted); #endif From 61f09d0ec407339c534e12e12440cc59c7e05d55 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 22:16:35 +0200 Subject: [PATCH 372/527] add theremin.py script, (@rosco) --- client/pyscripts/theremin.py | 78 ++++++++++++++++++++++++++++++++++++ 1 file changed, 78 insertions(+) create mode 100644 client/pyscripts/theremin.py diff --git a/client/pyscripts/theremin.py b/client/pyscripts/theremin.py new file mode 100644 index 000000000..a84ff3adf --- /dev/null +++ b/client/pyscripts/theremin.py @@ -0,0 +1,78 @@ +#!/usr/bin/python3 + +### Parameters +# Sound output parameters +volume = 1.0 +sample_buf_size = 44 +sampling_freq = 44100 #Hz + +# Frequency generator parameters +min_freq = 200 #Hz +max_freq = 2000 #Hz + +# Proxmark3 parameters +pm3_client="/usr/local/bin/proxmark3" +pm3_reader_dev_file="/dev/ttyACM0" +pm3_tune_cmd="hf tune" + + +### Modules +import numpy +import pyaudio +from select import select +from subprocess import Popen, DEVNULL, PIPE + + +### Main program +p = pyaudio.PyAudio() + +# For paFloat32 sample values must be in range [-1.0, 1.0] +stream = p.open(format=pyaudio.paFloat32, + channels=1, + rate=sampling_freq, + output=True) + +# Initial voltage to frequency values +min_v = 100.0 +max_v = 0.0 +v = 0 +out_freq = min_freq + +# Spawn the Proxmark3 client +pm3_proc = Popen([pm3_client, pm3_reader_dev_file, "-c", pm3_tune_cmd], + bufsize=0, env={}, stdin=DEVNULL, stdout=PIPE, stderr=DEVNULL) +mv_recbuf = "" + +# Read voltages from the Proxmark3, generate the sine wave, output to soundcard +sample_buf = [0.0 for x in range(0, sample_buf_size)] +i = 0 +sinev = 0 +while True: + + # Read Proxmark3 client's stdout and extract voltage values + if(select([pm3_proc.stdout], [], [], 0)[0]): + + b = pm3_proc.stdout.read(256).decode("ascii") + for c in b: + if c in "0123456789 mV": + mv_recbuf += c + else: + mv_recbuf = "" + if mv_recbuf[-3:] == " mV": + v = int(mv_recbuf[:-3]) / 1000 + if v < min_v: + min_v = v - 0.001 + if v > max_v: + max_v = v + + # Recalculate the audio frequency to generate + out_freq = (max_freq - min_freq) * (max_v - v) / (max_v - min_v) + min_freq + + # Generate the samples and write them to the soundcard + sinevs = out_freq / sampling_freq * numpy.pi * 2 + sample_buf[i] = sinev + sinev += sinevs + sinev = sinev if sinev < numpy.pi * 2 else sinev - numpy.pi * 2 + i = (i + 1) % sample_buf_size + if not i: + stream.write((numpy.sin(sample_buf) * volume).astype(numpy.float32).tobytes()) From 9189dc85635af754556b2803033574d425b67146 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 9 Jun 2020 23:37:56 +0200 Subject: [PATCH 373/527] applied theremin patch, adc values are summed, remember to divide when read --- armsrc/appmain.c | 33 ++++++++++++++++----------------- armsrc/appmain.h | 2 +- armsrc/iso14443b.c | 4 ++-- armsrc/lfops.c | 2 +- armsrc/mifaresim.c | 4 ++-- armsrc/thinfilm.c | 4 ++-- 6 files changed, 24 insertions(+), 25 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 3793182ce..9e51d0f76 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -108,7 +108,7 @@ void ToSendStuffBit(int b) { //----------------------------------------------------------------------------- // Read an ADC channel and block till it completes, then return the result -// in ADC units (0 to 1023). Also a routine to average 32 samples and +// in ADC units (0 to 1023). Also a routine to sum up a number of samples and // return that. //----------------------------------------------------------------------------- static uint16_t ReadAdc(int ch) { @@ -137,13 +137,12 @@ static uint16_t ReadAdc(int ch) { } // was static - merlok -uint16_t AvgAdc(int ch) { +uint16_t SumAdc(int ch, int NbSamples) { uint16_t a = 0; - for (uint8_t i = 0; i < 32; i++) + for (uint8_t i = 0; i < NbSamples; i++) a += ReadAdc(ch); - //division by 32 - return (a + 15) >> 5; + return (a + (NbSamples >> 1) - 1); } static void MeasureAntennaTuning(void) { @@ -186,7 +185,7 @@ static void MeasureAntennaTuning(void) { WDT_HIT(); FpgaSendCommand(FPGA_CMD_SET_DIVISOR, i); SpinDelay(20); - uint32_t adcval = ((MAX_ADC_LF_VOLTAGE * AvgAdc(ADC_CHAN_LF)) >> 10); + uint32_t adcval = ((MAX_ADC_LF_VOLTAGE * (SumAdc(ADC_CHAN_LF, 32) >> 1)) >> 14); if (i == LF_DIVISOR_125) payload.v_lf125 = adcval; // voltage at 125kHz @@ -212,9 +211,9 @@ static void MeasureAntennaTuning(void) { SpinDelay(50); #if defined RDV4 - payload.v_hf = (MAX_ADC_HF_VOLTAGE_RDV40 * AvgAdc(ADC_CHAN_HF_RDV40)) >> 10; + payload.v_hf = (MAX_ADC_HF_VOLTAGE_RDV40 * SumAdc(ADC_CHAN_HF_RDV40, 32)) >> 15; #else - payload.v_hf = (MAX_ADC_HF_VOLTAGE * AvgAdc(ADC_CHAN_HF)) >> 10; + payload.v_hf = (MAX_ADC_HF_VOLTAGE * SumAdc(ADC_CHAN_HF, 32)) >> 15; #endif FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); @@ -226,16 +225,16 @@ static void MeasureAntennaTuning(void) { static uint16_t MeasureAntennaTuningHfData(void) { #if defined RDV4 - return (MAX_ADC_HF_VOLTAGE_RDV40 * AvgAdc(ADC_CHAN_HF_RDV40)) >> 10; + return (MAX_ADC_HF_VOLTAGE_RDV40 * SumAdc(ADC_CHAN_HF_RDV40, 64)) >> 16; #else - return (MAX_ADC_HF_VOLTAGE * AvgAdc(ADC_CHAN_HF)) >> 10; + return (MAX_ADC_HF_VOLTAGE * SumAdc(ADC_CHAN_HF, 64)) >> 16; #endif } // Measure LF in milliVolt static uint32_t MeasureAntennaTuningLfData(void) { - return (MAX_ADC_LF_VOLTAGE * AvgAdc(ADC_CHAN_LF)) >> 10; + return (MAX_ADC_LF_VOLTAGE * (SumAdc(ADC_CHAN_LF, 32) >> 1)) >> 14; } void ReadMem(int addr) { @@ -541,7 +540,7 @@ void ListenReaderField(uint8_t limit) { LEDsoff(); if (limit == LF_ONLY) { - lf_av = lf_max = AvgAdc(ADC_CHAN_LF); + lf_av = lf_max = SumAdc(ADC_CHAN_LF, 32) >> 5; Dbprintf("LF 125/134kHz Baseline: %dmV", (MAX_ADC_LF_VOLTAGE * lf_av) >> 10); lf_baseline = lf_av; } @@ -550,9 +549,9 @@ void ListenReaderField(uint8_t limit) { #if defined RDV4 // iceman, useless, since we are measuring readerfield, not our field. My tests shows a max of 20v from a reader. - hf_av = hf_max = AvgAdc(ADC_CHAN_HF_RDV40); + hf_av = hf_max = SumAdc(ADC_CHAN_HF_RDV40, 32) >> 5; #else - hf_av = hf_max = AvgAdc(ADC_CHAN_HF); + hf_av = hf_max = SumAdc(ADC_CHAN_HF, 32) >> 5; #endif Dbprintf("HF 13.56MHz Baseline: %dmV", (MAX_ADC_HF_VOLTAGE * hf_av) >> 10); hf_baseline = hf_av; @@ -586,7 +585,7 @@ void ListenReaderField(uint8_t limit) { LED_D_OFF(); } - lf_av_new = AvgAdc(ADC_CHAN_LF); + lf_av_new = SumAdc(ADC_CHAN_LF, 32) >> 5; // see if there's a significant change if (ABS(lf_av - lf_av_new) > REPORT_CHANGE) { Dbprintf("LF 125/134kHz Field Change: %5dmV", (MAX_ADC_LF_VOLTAGE * lf_av_new) >> 10); @@ -605,9 +604,9 @@ void ListenReaderField(uint8_t limit) { } #if defined RDV4 - hf_av_new = AvgAdc(ADC_CHAN_HF_RDV40); + hf_av_new = SumAdc(ADC_CHAN_HF_RDV40, 32) >> 5; #else - hf_av_new = AvgAdc(ADC_CHAN_HF); + hf_av_new = SumAdc(ADC_CHAN_HF, 32) >> 5; #endif // see if there's a significant change if (ABS(hf_av - hf_av_new) > REPORT_CHANGE) { diff --git a/armsrc/appmain.h b/armsrc/appmain.h index 5aece8388..15f3d5ffd 100644 --- a/armsrc/appmain.h +++ b/armsrc/appmain.h @@ -30,7 +30,7 @@ void send_wtx(uint16_t wtx); void ReadMem(int addr); void __attribute__((noreturn)) AppMain(void); -uint16_t AvgAdc(int ch); +uint16_t SumAdc(int ch, int NbSamples); //void PrintToSendBuffer(void); void ToSendStuffBit(int b); diff --git a/armsrc/iso14443b.c b/armsrc/iso14443b.c index bbca137fc..4999c4d85 100644 --- a/armsrc/iso14443b.c +++ b/armsrc/iso14443b.c @@ -641,9 +641,9 @@ void SimulateIso14443bTag(uint32_t pupi) { if (cardSTATE == SIM_NOFIELD) { #if defined RDV4 - vHf = (MAX_ADC_HF_VOLTAGE_RDV40 * AvgAdc(ADC_CHAN_HF_RDV40)) >> 10; + vHf = (MAX_ADC_HF_VOLTAGE_RDV40 * SumAdc(ADC_CHAN_HF_RDV40, 32)) >> 15; #else - vHf = (MAX_ADC_HF_VOLTAGE * AvgAdc(ADC_CHAN_HF)) >> 10; + vHf = (MAX_ADC_HF_VOLTAGE * SumAdc(ADC_CHAN_HF, 32)) >> 15; #endif if (vHf > MF_MINFIELDV) { cardSTATE = SIM_IDLE; diff --git a/armsrc/lfops.c b/armsrc/lfops.c index 9ef3a34a8..72559a7b9 100644 --- a/armsrc/lfops.c +++ b/armsrc/lfops.c @@ -1571,7 +1571,7 @@ void TurnReadLFOn(uint32_t delay) { FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_READER | FPGA_LF_ADC_READER_FIELD); // measure antenna strength. - //int adcval = ((MAX_ADC_LF_VOLTAGE * AvgAdc(ADC_CHAN_LF)) >> 10); + //int adcval = ((MAX_ADC_LF_VOLTAGE * (SumAdc(ADC_CHAN_LF, 32) >> 1)) >> 14); WaitUS(delay); } static void TurnReadLF_off(uint32_t delay) { diff --git a/armsrc/mifaresim.c b/armsrc/mifaresim.c index ecc0ee505..60f9a7810 100644 --- a/armsrc/mifaresim.c +++ b/armsrc/mifaresim.c @@ -539,9 +539,9 @@ void Mifare1ksim(uint16_t flags, uint8_t exitAfterNReads, uint8_t *datain, uint1 if (cardSTATE == MFEMUL_NOFIELD) { #if defined RDV4 - vHf = (MAX_ADC_HF_VOLTAGE_RDV40 * AvgAdc(ADC_CHAN_HF_RDV40)) >> 10; + vHf = (MAX_ADC_HF_VOLTAGE_RDV40 * SumAdc(ADC_CHAN_HF_RDV40, 32)) >> 15; #else - vHf = (MAX_ADC_HF_VOLTAGE * AvgAdc(ADC_CHAN_HF)) >> 10; + vHf = (MAX_ADC_HF_VOLTAGE * SumAdc(ADC_CHAN_HF, 32)) >> 15; #endif if (vHf > MF_MINFIELDV) { diff --git a/armsrc/thinfilm.c b/armsrc/thinfilm.c index a77a70744..14dd1155a 100644 --- a/armsrc/thinfilm.c +++ b/armsrc/thinfilm.c @@ -53,9 +53,9 @@ static uint16_t FpgaSendQueueDelay; static uint16_t ReadReaderField(void) { #if defined RDV4 - return AvgAdc(ADC_CHAN_HF_RDV40); + return SumAdc(ADC_CHAN_HF_RDV40, 32) >> 5; #else - return AvgAdc(ADC_CHAN_HF); + return SumAdc(ADC_CHAN_HF, 32) >> 5; #endif } From 33662bdd598d7dc78e066fd2d921d29400911fca Mon Sep 17 00:00:00 2001 From: Lukas Kuzmiak <lukash@backstep.net> Date: Tue, 9 Jun 2020 14:43:00 -0700 Subject: [PATCH 374/527] Decode MAD Info Byte and show info about sector it points to --- client/src/mifare/mad.c | 51 +++++++++++++++++++++++++++-------------- 1 file changed, 34 insertions(+), 17 deletions(-) diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index f85dd9cbe..10359a756 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -241,22 +241,44 @@ static const char *aid_admin[] = { "not applicable" }; +static int MADInfoByteDecode(uint8_t *sector, bool swapmad, int MADver, bool verbose) { + uint8_t InfoByte; + if (MADver == 1) { + InfoByte = sector[16 + 1] & 0x3f; + if (InfoByte >= 0xF) { + PrintAndLogEx(WARNING, "Invalid Info byte (MAD1) value " _YELLOW_("0x%02x"), InfoByte); + if (verbose) + // I understand the spec in a way that MAD1 InfoByte should not point into MAD2 sectors, @lukaskuzmiak + PrintAndLogEx(WARNING, "MAD1 Info byte points outside of MAD1 sector space (0x%02x), report a bug?", InfoByte); + return PM3_ESOFT; + } + } else { + InfoByte = sector[1] & 0x3f; + if (InfoByte == 0x10 || InfoByte >= 0x28) { + PrintAndLogEx(WARNING, "Invalid Info byte (MAD2) value " _YELLOW_("0x%02x"), InfoByte); + return PM3_ESOFT; + } + } + + if (InfoByte) { + uint16_t aid = madGetAID(sector, swapmad, MADver, InfoByte); + char fmt[50]; + sprintf(fmt, "Card publisher sector: %02d, AID 0x%04X%s", InfoByte, aid, "%s"); + print_aid_description(mad_known_aids, aid, fmt, verbose); + return PM3_SUCCESS; + } else { + PrintAndLogEx(WARNING, "Card publisher not present " _YELLOW_("0x%02x"), InfoByte); + return PM3_ESOFT; + } +} + int MAD1DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose, bool *haveMAD2) { open_mad_file(&mad_known_aids, verbose); // check MAD1 only MADCheck(sector, NULL, verbose, haveMAD2); - // info byte - uint8_t InfoByte = sector[16 + 1] & 0x3f; - if (InfoByte) { - PrintAndLogEx(SUCCESS, "Card publisher sector: " _GREEN_("0x%02x"), InfoByte); - } else { - if (verbose) - PrintAndLogEx(WARNING, "Card publisher sector not present"); - } - if (InfoByte == 0x10 || InfoByte >= 0x28) - PrintAndLogEx(WARNING, "Info byte error"); + MADInfoByteDecode(sector, swapmad, 1, verbose); PrintAndLogEx(INFO, " 00 MAD 1"); uint32_t prev_aid = 0xFFFFFFFF; @@ -289,13 +311,8 @@ int MAD2DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose) { PrintAndLogEx(WARNING, "CRC8-MAD2 (%s)", _RED_("fail")); } - uint8_t InfoByte = sector[1] & 0x3f; - if (InfoByte) { - PrintAndLogEx(SUCCESS, "MAD2 Card publisher sector: " _GREEN_("0x%02x"), InfoByte); - } else { - if (verbose) - PrintAndLogEx(WARNING, "Card publisher sector not present"); - } + MADInfoByteDecode(sector, swapmad, 2, verbose); + uint32_t prev_aid = 0xFFFFFFFF; for (int i = 1; i < 8 + 8 + 7 + 1; i++) { uint16_t aid = madGetAID(sector, swapmad, 2, i); From 0ce3be2f3431e9652d7831650c7f916e3d8afe2e Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Wed, 10 Jun 2020 00:06:18 +0200 Subject: [PATCH 375/527] Reintroduce AvgAdv, avoid *64 as it could easily overflow This reverts partly commit 9189dc85635af754556b2803033574d425b67146. --- armsrc/appmain.c | 21 ++++++++++++--------- armsrc/appmain.h | 1 + armsrc/thinfilm.c | 4 ++-- 3 files changed, 15 insertions(+), 11 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 9e51d0f76..c5cdc5dc7 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -137,11 +137,14 @@ static uint16_t ReadAdc(int ch) { } // was static - merlok +uint16_t AvgAdc(int ch) { + return SumAdc(ch, 32) >> 5; +} + uint16_t SumAdc(int ch, int NbSamples) { uint16_t a = 0; for (uint8_t i = 0; i < NbSamples; i++) a += ReadAdc(ch); - return (a + (NbSamples >> 1) - 1); } @@ -225,9 +228,9 @@ static void MeasureAntennaTuning(void) { static uint16_t MeasureAntennaTuningHfData(void) { #if defined RDV4 - return (MAX_ADC_HF_VOLTAGE_RDV40 * SumAdc(ADC_CHAN_HF_RDV40, 64)) >> 16; + return (MAX_ADC_HF_VOLTAGE_RDV40 * SumAdc(ADC_CHAN_HF_RDV40, 32)) >> 15; #else - return (MAX_ADC_HF_VOLTAGE * SumAdc(ADC_CHAN_HF, 64)) >> 16; + return (MAX_ADC_HF_VOLTAGE * SumAdc(ADC_CHAN_HF, 32)) >> 15; #endif } @@ -540,7 +543,7 @@ void ListenReaderField(uint8_t limit) { LEDsoff(); if (limit == LF_ONLY) { - lf_av = lf_max = SumAdc(ADC_CHAN_LF, 32) >> 5; + lf_av = lf_max = AvgAdc(ADC_CHAN_LF); Dbprintf("LF 125/134kHz Baseline: %dmV", (MAX_ADC_LF_VOLTAGE * lf_av) >> 10); lf_baseline = lf_av; } @@ -549,9 +552,9 @@ void ListenReaderField(uint8_t limit) { #if defined RDV4 // iceman, useless, since we are measuring readerfield, not our field. My tests shows a max of 20v from a reader. - hf_av = hf_max = SumAdc(ADC_CHAN_HF_RDV40, 32) >> 5; + hf_av = hf_max = AvgAdc(ADC_CHAN_HF_RDV40); #else - hf_av = hf_max = SumAdc(ADC_CHAN_HF, 32) >> 5; + hf_av = hf_max = AvgAdc(ADC_CHAN_HF); #endif Dbprintf("HF 13.56MHz Baseline: %dmV", (MAX_ADC_HF_VOLTAGE * hf_av) >> 10); hf_baseline = hf_av; @@ -585,7 +588,7 @@ void ListenReaderField(uint8_t limit) { LED_D_OFF(); } - lf_av_new = SumAdc(ADC_CHAN_LF, 32) >> 5; + lf_av_new = AvgAdc(ADC_CHAN_LF); // see if there's a significant change if (ABS(lf_av - lf_av_new) > REPORT_CHANGE) { Dbprintf("LF 125/134kHz Field Change: %5dmV", (MAX_ADC_LF_VOLTAGE * lf_av_new) >> 10); @@ -604,9 +607,9 @@ void ListenReaderField(uint8_t limit) { } #if defined RDV4 - hf_av_new = SumAdc(ADC_CHAN_HF_RDV40, 32) >> 5; + hf_av_new = AvgAdc(ADC_CHAN_HF_RDV40); #else - hf_av_new = SumAdc(ADC_CHAN_HF, 32) >> 5; + hf_av_new = AvgAdc(ADC_CHAN_HF); #endif // see if there's a significant change if (ABS(hf_av - hf_av_new) > REPORT_CHANGE) { diff --git a/armsrc/appmain.h b/armsrc/appmain.h index 15f3d5ffd..6a650f163 100644 --- a/armsrc/appmain.h +++ b/armsrc/appmain.h @@ -30,6 +30,7 @@ void send_wtx(uint16_t wtx); void ReadMem(int addr); void __attribute__((noreturn)) AppMain(void); +uint16_t AvgAdc(int ch); uint16_t SumAdc(int ch, int NbSamples); //void PrintToSendBuffer(void); diff --git a/armsrc/thinfilm.c b/armsrc/thinfilm.c index 14dd1155a..a77a70744 100644 --- a/armsrc/thinfilm.c +++ b/armsrc/thinfilm.c @@ -53,9 +53,9 @@ static uint16_t FpgaSendQueueDelay; static uint16_t ReadReaderField(void) { #if defined RDV4 - return SumAdc(ADC_CHAN_HF_RDV40, 32) >> 5; + return AvgAdc(ADC_CHAN_HF_RDV40); #else - return SumAdc(ADC_CHAN_HF, 32) >> 5; + return AvgAdc(ADC_CHAN_HF); #endif } From ca30ff9bc2ae142cf518f3dca07d0190e519ddd3 Mon Sep 17 00:00:00 2001 From: Lukas Kuzmiak <lukash@backstep.net> Date: Tue, 9 Jun 2020 15:39:17 -0700 Subject: [PATCH 376/527] highlight sector line instead of printing it twice, update Changelog --- CHANGELOG.md | 1 + client/src/mifare/mad.c | 27 ++++++++++++--------------- 2 files changed, 13 insertions(+), 15 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index fe1ee7560..77e501555 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added Mifare MAD Info Byte decoding. Easier to identify Card Publisher (@lukaskuzmiak) - Change use system Bzip2 library instead of Zlib for hardnested tables, tables are now 7x smaller (@doegox) - Change pushed some ARM source to compile with THUMB. Saves a lot of space of ARM flash memory (@slurdge) - Change from using ZLIB compression of FPGA images in ARM to LZ4. 15%+ speedups when swapping between HF & LF now (@slurdge) diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index 10359a756..c4569b274 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -261,11 +261,8 @@ static int MADInfoByteDecode(uint8_t *sector, bool swapmad, int MADver, bool ver } if (InfoByte) { - uint16_t aid = madGetAID(sector, swapmad, MADver, InfoByte); - char fmt[50]; - sprintf(fmt, "Card publisher sector: %02d, AID 0x%04X%s", InfoByte, aid, "%s"); - print_aid_description(mad_known_aids, aid, fmt, verbose); - return PM3_SUCCESS; + PrintAndLogEx(SUCCESS, "Card publisher sector: " _MAGENTA_("0x%02x"), InfoByte); + return InfoByte; } else { PrintAndLogEx(WARNING, "Card publisher not present " _YELLOW_("0x%02x"), InfoByte); return PM3_ESOFT; @@ -278,19 +275,19 @@ int MAD1DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose, bool *haveMA // check MAD1 only MADCheck(sector, NULL, verbose, haveMAD2); - MADInfoByteDecode(sector, swapmad, 1, verbose); + int InfoByteSector = MADInfoByteDecode(sector, swapmad, 1, verbose); PrintAndLogEx(INFO, " 00 MAD 1"); uint32_t prev_aid = 0xFFFFFFFF; for (int i = 1; i < 16; i++) { uint16_t aid = madGetAID(sector, swapmad, 1, i); if (aid < 6) { - PrintAndLogEx(INFO, " %02d [%04X] (%s)", i, aid, aid_admin[aid]); + PrintAndLogEx(INFO, (InfoByteSector == i) ? _MAGENTA_(" %02d [%04X] (%s)") : " %02d [%04X] (%s)", i, aid, aid_admin[aid]); } else if (prev_aid == aid) { - PrintAndLogEx(INFO, " %02d [%04X] (continuation)", i, aid); + PrintAndLogEx(INFO, (InfoByteSector == i) ? _MAGENTA_(" %02d [%04X] (continuation)") : " %02d [%04X] (continuation)", i, aid); } else { - char fmt[20]; - sprintf(fmt, " %02d [%04X]%s", i, aid, "%s"); + char fmt[30]; + sprintf(fmt, (InfoByteSector == i) ? _MAGENTA_(" %02d [%04X]%s") : " %02d [%04X]%s", i, aid, "%s"); print_aid_description(mad_known_aids, aid, fmt, verbose); prev_aid = aid; } @@ -311,18 +308,18 @@ int MAD2DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose) { PrintAndLogEx(WARNING, "CRC8-MAD2 (%s)", _RED_("fail")); } - MADInfoByteDecode(sector, swapmad, 2, verbose); + int InfoByteSector = MADInfoByteDecode(sector, swapmad, 2, verbose); uint32_t prev_aid = 0xFFFFFFFF; for (int i = 1; i < 8 + 8 + 7 + 1; i++) { uint16_t aid = madGetAID(sector, swapmad, 2, i); if (aid < 6) { - PrintAndLogEx(INFO, " %02d [%04X] (%s)", i + 16, aid, aid_admin[aid]); + PrintAndLogEx(INFO, (InfoByteSector == i) ? _MAGENTA_(" %02d [%04X] (%s)") : " %02d [%04X] (%s)", i + 16, aid, aid_admin[aid]); } else if (prev_aid == aid) { - PrintAndLogEx(INFO, " %02d [%04X] (continuation)", i + 16, aid); + PrintAndLogEx(INFO, (InfoByteSector == i) ? _MAGENTA_(" %02d [%04X] (continuation)") : " %02d [%04X] (continuation)", i + 16, aid); } else { - char fmt[20]; - sprintf(fmt, " %02d [%04X]%s", i + 16, aid, "%s"); + char fmt[30]; + sprintf(fmt, (InfoByteSector == i) ? _MAGENTA_(" %02d [%04X]%s") : " %02d [%04X]%s", i + 16, aid, "%s"); print_aid_description(mad_known_aids, aid, fmt, verbose); prev_aid = aid; } From ed06f72c3f14f9e59e9112a5fef424a6eab0e56f Mon Sep 17 00:00:00 2001 From: Lukas Kuzmiak <lukash@backstep.net> Date: Tue, 9 Jun 2020 15:57:06 -0700 Subject: [PATCH 377/527] add *.tmp to .gitignore, my git client goes insane during compilation --- .gitignore | 3 +++ 1 file changed, 3 insertions(+) diff --git a/.gitignore b/.gitignore index a89e3f6e9..4ee047c9e 100644 --- a/.gitignore +++ b/.gitignore @@ -100,3 +100,6 @@ client/lualibs/pm3_cmd.lua fpga_version_info.c .proxmark3/* + +# .tmp files are created during compilation +*.tmp From e3e33a650195929b2413abce8e7e0dcb64bd11dd Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Wed, 10 Jun 2020 01:08:49 +0200 Subject: [PATCH 378/527] Use SumAdc also in ListenReaderField --- armsrc/appmain.c | 22 +++++++++++----------- 1 file changed, 11 insertions(+), 11 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index c5cdc5dc7..fd5b4853c 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -529,7 +529,7 @@ at the same place! :-) void ListenReaderField(uint8_t limit) { #define LF_ONLY 1 #define HF_ONLY 2 -#define REPORT_CHANGE 10 // report new values only if they have changed at least by REPORT_CHANGE +#define REPORT_CHANGE 1000 // report new values only if they have changed at least by REPORT_CHANGE mV uint16_t lf_av = 0, lf_av_new, lf_baseline = 0, lf_max = 0; uint16_t hf_av = 0, hf_av_new, hf_baseline = 0, hf_max = 0; @@ -543,8 +543,8 @@ void ListenReaderField(uint8_t limit) { LEDsoff(); if (limit == LF_ONLY) { - lf_av = lf_max = AvgAdc(ADC_CHAN_LF); - Dbprintf("LF 125/134kHz Baseline: %dmV", (MAX_ADC_LF_VOLTAGE * lf_av) >> 10); + lf_av = lf_max = (MAX_ADC_LF_VOLTAGE * SumAdc(ADC_CHAN_LF, 32)) >> 15; + Dbprintf("LF 125/134kHz Baseline: %dmV", lf_av); lf_baseline = lf_av; } @@ -552,11 +552,11 @@ void ListenReaderField(uint8_t limit) { #if defined RDV4 // iceman, useless, since we are measuring readerfield, not our field. My tests shows a max of 20v from a reader. - hf_av = hf_max = AvgAdc(ADC_CHAN_HF_RDV40); + hf_av = hf_max = (MAX_ADC_HF_VOLTAGE_RDV40 * SumAdc(ADC_CHAN_HF_RDV40, 32)) >> 15; #else - hf_av = hf_max = AvgAdc(ADC_CHAN_HF); + hf_av = hf_max = (MAX_ADC_HF_VOLTAGE * SumAdc(ADC_CHAN_HF, 32)) >> 15; #endif - Dbprintf("HF 13.56MHz Baseline: %dmV", (MAX_ADC_HF_VOLTAGE * hf_av) >> 10); + Dbprintf("HF 13.56MHz Baseline: %dmV", hf_av); hf_baseline = hf_av; } @@ -588,10 +588,10 @@ void ListenReaderField(uint8_t limit) { LED_D_OFF(); } - lf_av_new = AvgAdc(ADC_CHAN_LF); + lf_av_new = (MAX_ADC_LF_VOLTAGE * SumAdc(ADC_CHAN_LF, 32)) >> 15; // see if there's a significant change if (ABS(lf_av - lf_av_new) > REPORT_CHANGE) { - Dbprintf("LF 125/134kHz Field Change: %5dmV", (MAX_ADC_LF_VOLTAGE * lf_av_new) >> 10); + Dbprintf("LF 125/134kHz Field Change: %5dmV", lf_av_new); lf_av = lf_av_new; if (lf_av > lf_max) lf_max = lf_av; @@ -607,13 +607,13 @@ void ListenReaderField(uint8_t limit) { } #if defined RDV4 - hf_av_new = AvgAdc(ADC_CHAN_HF_RDV40); + hf_av_new = (MAX_ADC_HF_VOLTAGE_RDV40 * SumAdc(ADC_CHAN_HF_RDV40, 32)) >> 15; #else - hf_av_new = AvgAdc(ADC_CHAN_HF); + hf_av_new = (MAX_ADC_HF_VOLTAGE * SumAdc(ADC_CHAN_HF, 32)) >> 15; #endif // see if there's a significant change if (ABS(hf_av - hf_av_new) > REPORT_CHANGE) { - Dbprintf("HF 13.56MHz Field Change: %5dmV", (MAX_ADC_HF_VOLTAGE * hf_av_new) >> 10); + Dbprintf("HF 13.56MHz Field Change: %5dmV", hf_av_new); hf_av = hf_av_new; if (hf_av > hf_max) hf_max = hf_av; From b55c186b3a52cbfe542a787243d3e8d3a1bbf49f Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Wed, 10 Jun 2020 01:17:49 +0200 Subject: [PATCH 379/527] make style --- client/pyscripts/theremin.py | 16 +++++++++------- client/src/cmdhf14a.c | 2 +- client/src/cmdhficlass.c | 10 +++++----- client/src/cmdhfmf.c | 4 ++-- client/src/cmdlfviking.c | 10 +++++----- 5 files changed, 22 insertions(+), 20 deletions(-) mode change 100644 => 100755 client/pyscripts/theremin.py diff --git a/client/pyscripts/theremin.py b/client/pyscripts/theremin.py old mode 100644 new mode 100755 index a84ff3adf..2bd1681ac --- a/client/pyscripts/theremin.py +++ b/client/pyscripts/theremin.py @@ -28,9 +28,9 @@ p = pyaudio.PyAudio() # For paFloat32 sample values must be in range [-1.0, 1.0] stream = p.open(format=pyaudio.paFloat32, - channels=1, - rate=sampling_freq, - output=True) + channels=1, + rate=sampling_freq, + output=True) # Initial voltage to frequency values min_v = 100.0 @@ -38,9 +38,9 @@ max_v = 0.0 v = 0 out_freq = min_freq -# Spawn the Proxmark3 client +# Spawn the Proxmark3 client pm3_proc = Popen([pm3_client, pm3_reader_dev_file, "-c", pm3_tune_cmd], - bufsize=0, env={}, stdin=DEVNULL, stdout=PIPE, stderr=DEVNULL) + bufsize=0, env={}, stdin=DEVNULL, stdout=PIPE, stderr=DEVNULL) mv_recbuf = "" # Read voltages from the Proxmark3, generate the sine wave, output to soundcard @@ -66,7 +66,8 @@ while True: max_v = v # Recalculate the audio frequency to generate - out_freq = (max_freq - min_freq) * (max_v - v) / (max_v - min_v) + min_freq + out_freq = (max_freq - min_freq) * (max_v - v) / (max_v - min_v) \ + + min_freq # Generate the samples and write them to the soundcard sinevs = out_freq / sampling_freq * numpy.pi * 2 @@ -75,4 +76,5 @@ while True: sinev = sinev if sinev < numpy.pi * 2 else sinev - numpy.pi * 2 i = (i + 1) % sample_buf_size if not i: - stream.write((numpy.sin(sample_buf) * volume).astype(numpy.float32).tobytes()) + stream.write((numpy.sin(sample_buf) * volume). + astype(numpy.float32).tobytes()) diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 50d3fd30a..2a8fe5485 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -1354,7 +1354,7 @@ static int detect_nxp_card(uint8_t sak, uint16_t atqa) { type |= MTDESFIRE; } } - + if (type == MTNONE) { PrintAndLogEx(WARNING, " failed to fingerprint"); } diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 82ef2d852..396511efd 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -770,7 +770,7 @@ static int CmdHFiClassELoad(const char *Cmd) { break; } case EML: { - res = loadFileEML_safe(filename, (void**)&dump, &bytes_read); + res = loadFileEML_safe(filename, (void **)&dump, &bytes_read); break; } case JSON: { @@ -1676,7 +1676,7 @@ static int CmdHFiClassCloneTag(const char *Cmd) { uint8_t *dump = NULL; size_t bytes_read = 0; - if (loadFile_safe(filename, "", (void**)&dump, &bytes_read) != PM3_SUCCESS) { + if (loadFile_safe(filename, "", (void **)&dump, &bytes_read) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "File: " _YELLOW_("%s") ": not found or locked.", filename); return PM3_EFILE; } @@ -1702,7 +1702,7 @@ static int CmdHFiClassCloneTag(const char *Cmd) { memcpy(tag_data, dump + startblock * 8, sizeof(iclass_block_t) * (endblock - startblock + 1)); free(dump); - + uint8_t MAC[4] = {0x00, 0x00, 0x00, 0x00}; uint8_t div_key[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; @@ -2040,7 +2040,7 @@ static int CmdHFiClassReadTagFile(const char *Cmd) { uint8_t *dump = NULL; size_t bytes_read = 0; - if (loadFile_safe(filename, "", (void**)&dump, &bytes_read) != PM3_SUCCESS) { + if (loadFile_safe(filename, "", (void **)&dump, &bytes_read) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "File: " _YELLOW_("%s") ": not found or locked.", filename); return PM3_EFILE; } @@ -2190,7 +2190,7 @@ static int loadKeys(char *filename) { uint8_t *dump = NULL; size_t bytes_read = 0; - if (loadFile_safe(filename, "", (void**)&dump, &bytes_read) != PM3_SUCCESS) { + if (loadFile_safe(filename, "", (void **)&dump, &bytes_read) != PM3_SUCCESS) { PrintAndLogEx(FAILED, "File: " _YELLOW_("%s") ": not found or locked.", filename); return PM3_EFILE; } diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index ffc07099b..9cd0b282e 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4525,8 +4525,8 @@ static int CmdHF14AMfMAD(const char *Cmd) { PrintAndLogEx(ERR, "error, read sector 0. card don't have MAD or don't have MAD on default keys"); return PM3_ESOFT; } - - + + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("MAD Information") " -------------------------------"); PrintAndLogEx(INFO, "---------------------------------------------------"); diff --git a/client/src/cmdlfviking.c b/client/src/cmdlfviking.c index 5dd29a95f..dccdb16c5 100644 --- a/client/src/cmdlfviking.c +++ b/client/src/cmdlfviking.c @@ -1,5 +1,5 @@ //----------------------------------------------------------------------------- -// Marshmellow, +// Marshmellow, // // This code is licensed to you under the terms of the GNU GPL, version 2 or, // at your option, any later version. See the LICENSE.txt file for the text of @@ -53,18 +53,18 @@ static int usage_lf_viking_sim(void) { } static int CmdVikingDemod(const char *Cmd) { - return demodViking(); + return demodViking(); } //see ASKDemod for what args are accepted int demodViking(void) { - + if (ASKDemod("", false, false, 1) != PM3_SUCCESS) { PrintAndLogEx(DEBUG, "DEBUG: Error - Viking ASKDemod failed"); return PM3_ESOFT; } - - size_t size = DemodBufferLen; + + size_t size = DemodBufferLen; int ans = detectViking(DemodBuffer, &size); if (ans < 0) { PrintAndLogEx(DEBUG, "DEBUG: Error - Viking Demod %d %s", ans, (ans == -5) ? _RED_("[chksum error]") : ""); From 2a29a1431de7ec622918d31091e7d1885d73af01 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Wed, 10 Jun 2020 01:18:26 +0200 Subject: [PATCH 380/527] theremin.py: quit when pm3 button is pressed --- client/pyscripts/theremin.py | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/pyscripts/theremin.py b/client/pyscripts/theremin.py index 2bd1681ac..a286d6193 100755 --- a/client/pyscripts/theremin.py +++ b/client/pyscripts/theremin.py @@ -53,6 +53,8 @@ while True: if(select([pm3_proc.stdout], [], [], 0)[0]): b = pm3_proc.stdout.read(256).decode("ascii") + if "Done" in b: + break; for c in b: if c in "0123456789 mV": mv_recbuf += c From d189ac7b451d653891bd0546c7adf5bcf8009033 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Wed, 10 Jun 2020 01:31:37 +0200 Subject: [PATCH 381/527] changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 77e501555..d0cdd77d7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Change Better precision for HF and LF voltage measurements and Add theremin.py script (@rosco) - Added Mifare MAD Info Byte decoding. Easier to identify Card Publisher (@lukaskuzmiak) - Change use system Bzip2 library instead of Zlib for hardnested tables, tables are now 7x smaller (@doegox) - Change pushed some ARM source to compile with THUMB. Saves a lot of space of ARM flash memory (@slurdge) From 8d1027e0c90cb90eda1c31c4fafd121490824b28 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Wed, 10 Jun 2020 02:15:16 +0200 Subject: [PATCH 382/527] typo --- client/resources/mad.json | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/resources/mad.json b/client/resources/mad.json index 7911599f2..535407ab4 100644 --- a/client/resources/mad.json +++ b/client/resources/mad.json @@ -13360,7 +13360,7 @@ "company": "NXP Semiconductors", "mad": "0xE103", "service_provider": "Philips SC", - "system_integrator": "Philps SC" + "system_integrator": "Philips SC" }, { "application": "Global purse", From 9d71f66d1617c5d7082b61d32b174b02e2b3df7b Mon Sep 17 00:00:00 2001 From: Lukas Kuzmiak <lukash@backstep.net> Date: Tue, 9 Jun 2020 18:34:59 -0700 Subject: [PATCH 383/527] Mifare MAD Card Holder Information --- CHANGELOG.md | 1 + client/src/cmdhfmf.c | 65 +++++++++++++++++++++++++++++++---------- client/src/mifare/mad.c | 35 +++++++++++++++++----- client/src/mifare/mad.h | 2 +- 4 files changed, 79 insertions(+), 24 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d0cdd77d7..4c4ec4c2c 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added Mifare MAD Card Holder Information decoding (@lukaskuzmiak) - Change Better precision for HF and LF voltage measurements and Add theremin.py script (@rosco) - Added Mifare MAD Info Byte decoding. Easier to identify Card Publisher (@lukaskuzmiak) - Change use system Bzip2 library instead of Zlib for hardnested tables, tables are now 7x smaller (@doegox) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 9cd0b282e..ae0c26a76 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4500,6 +4500,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { arg_str0("kK", "key", "key for printing sectors", NULL), arg_lit0("bB", "keyb", "use key B for access printing sectors (by default: key A)"), arg_lit0("", "be", "(optional, BigEndian)"), + arg_lit0("", "dch", "decode Card Holder information"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -4512,11 +4513,12 @@ static int CmdHF14AMfMAD(const char *Cmd) { CLIGetHexWithReturn(ctx, 3, key, &keylen); bool keyB = arg_get_lit(4); bool swapmad = arg_get_lit(5); + bool decodeholder = arg_get_lit(6); CLIParserFree(ctx); - if (aidlen != 2 && keylen > 0) { - PrintAndLogEx(WARNING, "do not need a key without aid"); + if (aidlen != 2 && !decodeholder && keylen > 0) { + PrintAndLogEx(WARNING, "do not need a key without aid/decode card holder"); } uint8_t sector0[16 * 4] = {0}; @@ -4549,10 +4551,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { MAD2DecodeAndPrint(sector10, swapmad, verbose); } - if (aidlen == 2) { - uint16_t aaid = (aid[0] << 8) + aid[1]; - PrintAndLogEx(INFO, "-------------- " _CYAN_("AID 0x%04x") " ---------------", aaid); - + if (aidlen == 2 || decodeholder) { uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; if (MADDecode(sector0, sector10, mad, &madlen, swapmad)) { @@ -4566,19 +4565,53 @@ static int CmdHF14AMfMAD(const char *Cmd) { memcpy(akey, key, 6); } - for (int i = 0; i < madlen; i++) { - if (aaid == mad[i]) { - uint8_t vsector[16 * 4] = {0}; - if (mfReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, akey, vsector)) { - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(ERR, "error, read sector %d", i + 1); - return PM3_ESOFT; - } + if (aidlen == 2) { + uint16_t aaid = (aid[0] << 8) + aid[1]; + PrintAndLogEx(INFO, "-------------- " _CYAN_("AID 0x%04x") " ---------------", aaid); - for (int j = 0; j < (verbose ? 4 : 3); j ++) - PrintAndLogEx(NORMAL, " [%03d] %s", (i + 1) * 4 + j, sprint_hex(&vsector[j * 16], 16)); + for (int i = 0; i < madlen; i++) { + if (aaid == mad[i]) { + uint8_t vsector[16 * 4] = {0}; + if (mfReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, akey, vsector)) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(ERR, "error, read sector %d", i + 1); + return PM3_ESOFT; + } + + for (int j = 0; j < (verbose ? 4 : 3); j ++) + PrintAndLogEx(NORMAL, " [%03d] %s", (i + 1) * 4 + j, sprint_hex(&vsector[j * 16], 16)); + } } } + + if (decodeholder) { + uint16_t aaid = 0x0004; + PrintAndLogEx(INFO, "-------- " _CYAN_("Card Holder Info 0x%04x") " --------", aaid); + + uint8_t data[4096] = {0}; + int datalen = 0; + + for (int i = 0; i < madlen; i++) { + if (aaid == mad[i]) { + uint8_t vsector[16 * 4] = {0}; + if (mfReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, akey, vsector)) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(ERR, "error, read sector %d", i + 1); + return PM3_ESOFT; + } + + memcpy(&data[datalen], vsector, 16 * 3); + datalen += 16 * 3; + } + } + + if (!datalen) { + PrintAndLogEx(WARNING, "no Card Holder Info data"); + return PM3_SUCCESS; + } + + MADCardHolderInfoDecode(data, datalen, verbose); + } } return PM3_SUCCESS; diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index c4569b274..dad6d6ea6 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -232,15 +232,27 @@ int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen return PM3_SUCCESS; } -static const char *aid_admin[] = { - "free", - "defect", - "reserved", - "additional directory info", - "card holder info", - "not applicable" +static const char *holder_info_type[] = { + "Surname", + "Given name", + "Sex", + "Other" }; +int MADCardHolderInfoDecode(uint8_t *data, size_t dataLen, bool verbose) { + size_t idx = 0; + while (idx < dataLen) { + uint8_t len = data[idx] & 0x3f; + uint8_t type = data[idx] >> 6; + idx++; + if (len > 0) { + PrintAndLogEx(INFO, "%s: %.*s", holder_info_type[type], len, &data[idx]); + idx += len; + } else break; + } + return PM3_SUCCESS; +} + static int MADInfoByteDecode(uint8_t *sector, bool swapmad, int MADver, bool verbose) { uint8_t InfoByte; if (MADver == 1) { @@ -269,6 +281,15 @@ static int MADInfoByteDecode(uint8_t *sector, bool swapmad, int MADver, bool ver } } +static const char *aid_admin[] = { + "free", + "defect", + "reserved", + "additional directory info", + "card holder info", + "not applicable" +}; + int MAD1DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose, bool *haveMAD2) { open_mad_file(&mad_known_aids, verbose); diff --git a/client/src/mifare/mad.h b/client/src/mifare/mad.h index e5f23ea0f..bb1b3800c 100644 --- a/client/src/mifare/mad.h +++ b/client/src/mifare/mad.h @@ -17,6 +17,6 @@ int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2); int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen, bool swapmad); int MAD1DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose, bool *haveMAD2); int MAD2DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose); - +int MADCardHolderInfoDecode(uint8_t *data, size_t dataLen, bool verbose); #endif // _MAD_H_ From cb2200463589f9bc888d57ffd581da605c343d9c Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 10 Jun 2020 08:43:29 +0200 Subject: [PATCH 384/527] chg "hf mf cwipe" - textual and also use magic wipe card --- client/src/mifare/mifarehost.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index cf8a414c9..8e15cb509 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -883,8 +883,11 @@ int mfCWipe(uint8_t *uid, uint8_t *atqa, uint8_t *sak) { int res; for (int blockNo = 0; blockNo < 4 * 16; blockNo++) { for (int retry = 0; retry < 3; retry++) { + + PrintAndLogEx(INPLACE, "wipe block %d", blockNo); + if (blockNo == 0) { - res = mfCSetBlock(blockNo, block0, NULL, params); + res = mfCSetBlock(blockNo, block0, NULL, (params | MAGIC_WIPE)); } else { if (mfIsSectorTrailer(blockNo)) res = mfCSetBlock(blockNo, blockK, NULL, params); @@ -894,16 +897,17 @@ int mfCWipe(uint8_t *uid, uint8_t *atqa, uint8_t *sak) { if (res == PM3_SUCCESS) break; - PrintAndLogEx(WARNING, "Retry block[%d]...", blockNo); + + PrintAndLogEx(WARNING, "retry block %d ...", blockNo); } if (res) { - PrintAndLogEx(ERR, "Error setting block[%d]: %d", blockNo, res); + PrintAndLogEx(ERR, "error setting block %d (%d)", blockNo, res); return res; } } DropField(); - + PrintAndLogEx(NORMAL, ""); return PM3_SUCCESS; } From cd9b26af17c222e15f19575e8cabe8ef17997961 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 10 Jun 2020 08:44:13 +0200 Subject: [PATCH 385/527] helptext --- client/src/cmdhfmf.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index ae0c26a76..135872627 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4490,8 +4490,10 @@ static int CmdHF14AMfMAD(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf mad", "Checks and prints Mifare Application Directory (MAD)", - "Usage:\n\thf mf mad -> shows MAD if exists\n" - "\thf mf mad -a 03e1 -k ffffffffffff -b -> shows NDEF data if exists. read card with custom key and key B\n"); + "Usage:\n" + "\thf mf mad -> shows MAD if exists\n" + "\thf mf mad -a 03e1 -k ffffffffffff -b -> shows NDEF data if exists. read card with custom key and key B\n" + "\thf mf mad -a 0004 -k ffffffffffff --dch -> decode CardHolder information\n"); void *argtable[] = { arg_param_begin, @@ -4518,7 +4520,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { CLIParserFree(ctx); if (aidlen != 2 && !decodeholder && keylen > 0) { - PrintAndLogEx(WARNING, "do not need a key without aid/decode card holder"); + PrintAndLogEx(WARNING, "Using default MAD keys instead"); } uint8_t sector0[16 * 4] = {0}; From 9d1cbaddf914cb60a8e7565884c122985ac91433 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 10 Jun 2020 08:56:45 +0200 Subject: [PATCH 386/527] text --- armsrc/lfsampling.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/lfsampling.c b/armsrc/lfsampling.c index 6365a0967..db73ce385 100644 --- a/armsrc/lfsampling.c +++ b/armsrc/lfsampling.c @@ -32,7 +32,7 @@ static sample_config config = { 1, 8, 1, LF_DIVISOR_125, 0, 0, 1} ; void printConfig(void) { uint32_t d = config.divisor; DbpString(_BLUE_("LF Sampling config")); - Dbprintf(" [q] divisor.............%d ( "_GREEN_("%d.%02d kHz")")", d, 12000 / (d + 1), ((1200000 + (d + 1) / 2) / (d + 1)) - ((12000 / (d + 1)) * 100)); + Dbprintf(" [q] divisor.............%d ( "_GREEN_("%d.%02d kHz")" )", d, 12000 / (d + 1), ((1200000 + (d + 1) / 2) / (d + 1)) - ((12000 / (d + 1)) * 100)); Dbprintf(" [b] bits per sample.....%d", config.bits_per_sample); Dbprintf(" [d] decimation..........%d", config.decimation); Dbprintf(" [a] averaging...........%s", (config.averaging) ? "Yes" : "No"); From ea73746d323e0d57a1f4291f45ea2acf51e9cdf2 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 10 Jun 2020 09:02:58 +0200 Subject: [PATCH 387/527] text --- armsrc/Standalone/hf_msdsal.c | 42 +++++++++++++++++------------------ 1 file changed, 21 insertions(+), 21 deletions(-) diff --git a/armsrc/Standalone/hf_msdsal.c b/armsrc/Standalone/hf_msdsal.c index e9f700a01..f97dc0d7c 100644 --- a/armsrc/Standalone/hf_msdsal.c +++ b/armsrc/Standalone/hf_msdsal.c @@ -119,7 +119,7 @@ static uint8_t treatPDOL(uint8_t *apdu) { //Generate GET PROCES void RunMod(void) { StandAloneMode(); - Dbprintf(_YELLOW_(">>") "Reading Visa cards & Emulating a Visa MSD Transaction a.k.a. MSDSal Started<<"); + DbpString(_YELLOW_(">>") "Reading Visa cards & Emulating a Visa MSD Transaction a.k.a. MSDSal Started " _YELLOW_("<<")); FpgaDownloadAndGo(FPGA_BITSTREAM_HF); //For reading process @@ -206,10 +206,10 @@ void RunMod(void) { //Checking if the user wants to go directly to emulation mode using a hardcoded track 2 if (chktoken == true && token[0] != 0x00) { state = STATE_EMU; - Dbprintf(_YELLOW_("[") "Initialized emulation mode " _YELLOW_("]")); + DbpString(_YELLOW_("[ ") "Initialized emulation mode" _YELLOW_(" ]")); DbpString("\n"_YELLOW_("!!") "Waiting for a card reader..."); } else { - DbpString(_YELLOW_("[") "Initialized reading mode " _YELLOW_("]")); + DbpString(_YELLOW_("[ ") "Initialized reading mode" _YELLOW_(" ]")); DbpString("\n"_YELLOW_("!!") "Waiting for a Visa card..."); } @@ -228,12 +228,12 @@ void RunMod(void) { if (state == STATE_READ) { if (chktoken == true && token[0] != 0x00) { //Only change to emulation if it saved a track 2 in memory state = STATE_EMU; - Dbprintf(_YELLOW_("[") "In emulation mode " _YELLOW_("]")); + DbpString(_YELLOW_("[ ") "In emulation mode" _YELLOW_(" ]")); } else - Dbprintf(_YELLOW_("!!") "Nothing in memory to emulate"); + DbpString(_YELLOW_("!!") "Nothing in memory to emulate"); } else { state = STATE_READ; - Dbprintf(_YELLOW_("[") "In reading mode " _YELLOW_("]")); + DbpString(_YELLOW_("[ ") "In reading mode" _YELLOW_(" ]")); } } @@ -248,7 +248,7 @@ void RunMod(void) { if (iso14443a_select_card(NULL, &card_a_info, NULL, true, 0, false)) { - Dbprintf(_YELLOW_("+") "Found ISO 14443 Type A!"); + DbpString(_YELLOW_("+") "Found ISO 14443 Type A!"); for (uint8_t i = 0; i < 4; i++) { chktoken = false; @@ -257,11 +257,11 @@ void RunMod(void) { uint8_t apdulen = iso14_apdu(apdus[i], (uint16_t) apdusLen[i], false, apdubuffer, NULL); if (apdulen > 0) { - Dbprintf(_YELLOW_("[") "Proxmark command " _YELLOW_("]")); + DbpString(_YELLOW_("[ ") "Proxmark command" _YELLOW_(" ]")); Dbhexdump(apdusLen[i], apdus[i], false); - Dbprintf(_GREEN_("[") "Card answer " _GREEN_("]")); + DbpString(_GREEN_("[ ") "Card answer" _GREEN_(" ]")); Dbhexdump(apdulen - 2, apdubuffer, false); - Dbprintf("----"); + DbpString("----"); for (uint8_t u = 0; u < apdulen; u++) { if (i == 1) { @@ -284,24 +284,24 @@ void RunMod(void) { } if (i == 1) { - Dbprintf(_GREEN_("[") "Challenge generated " _GREEN_("]")); + DbpString(_GREEN_("[ ") "Challenge generated" _GREEN_(" ]")); Dbhexdump(plen, existpdol ? ppdol : processing, false); } } else { - Dbprintf(_YELLOW_("!!") "Error reading the card"); + DbpString(_YELLOW_("!!") "Error reading the card"); } LED_B_OFF(); } if (chktoken) { - Dbprintf(_RED_("[") "Track 2 " _RED_("]")); + DbpString(_RED_("[ ") "Track 2" _RED_(" ]")); Dbhexdump(19, (uint8_t *)token, false); - Dbprintf(_YELLOW_("!!") "Card number"); + DbpString(_YELLOW_("!!") "Card number"); Dbhexdump(8, (uint8_t *)token, false); DbpString("---"); LED_C_ON(); state = STATE_EMU; - Dbprintf(_YELLOW_("[") "Initialized emulation mode " _YELLOW_("]")); + DbpString(_YELLOW_("[ ") "Initialized emulation mode" _YELLOW_(" ]")); DbpString("\n"_YELLOW_("!!") "Waiting for a card reader..."); } } @@ -318,7 +318,7 @@ void RunMod(void) { DbpString(_YELLOW_("!!") "Error initializing the emulation process!"); SpinDelay(500); state = STATE_READ; - DbpString(_YELLOW_("[") "Initialized reading mode " _YELLOW_("]")); + DbpString(_YELLOW_("[ ") "Initialized reading mode" _YELLOW_(" ]")); DbpString("\n" _YELLOW_("!!") "Waiting for a Visa card..."); break; } @@ -336,7 +336,7 @@ void RunMod(void) { LED_B_OFF(); // Clean receive command buffer if (!GetIso14443aCommandFromReader(receivedCmd, receivedCmdPar, &len)) { - Dbprintf(_YELLOW_("!!") "Emulator stopped"); + DbpString(_YELLOW_("!!") "Emulator stopped"); retval = PM3_EOPABORTED; break; } @@ -367,7 +367,7 @@ void RunMod(void) { DbpString(_YELLOW_("+") "Request for RATS"); p_response = &responses[RATS]; } else { - Dbprintf(_YELLOW_("[") "Card reader command " _YELLOW_("]")); + DbpString(_YELLOW_("[ ") "Card reader command" _YELLOW_(" ]")); Dbhexdump(len, receivedCmd, false); if (receivedCmd[0] == 0x02 || receivedCmd[0] == 0x03) { //Emulate a Visa MSD(Magnetic stripe data) card @@ -408,7 +408,7 @@ void RunMod(void) { } } } else { - Dbprintf(_YELLOW_("!!") "Received unknown command!"); + DbpString(_YELLOW_("!!") "Received unknown command!"); if (prevCmd < 4) { memcpy(dynamic_response_info.response, receivedCmd, len); dynamic_response_info.response_n = len; @@ -418,9 +418,9 @@ void RunMod(void) { } } if (dynamic_response_info.response_n > 0) { - Dbprintf(_GREEN_("[") "Proxmark3 answer " _GREEN_("]")); + DbpString(_GREEN_("[ ") "Proxmark3 answer" _GREEN_(" ]")); Dbhexdump(dynamic_response_info.response_n, dynamic_response_info.response, false); - Dbprintf("----"); + DbpString("----"); // Add CRC bytes, always used in ISO 14443A-4 compliant cards AddCrc14A(dynamic_response_info.response, dynamic_response_info.response_n); From 569107579eafcdd181260880c7ea051bfe5c9322 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Wed, 10 Jun 2020 11:33:15 +0200 Subject: [PATCH 388/527] Fix cliparser buffer allocation --- client/deps/cliparser/cliparser.c | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/client/deps/cliparser/cliparser.c b/client/deps/cliparser/cliparser.c index f0ba57d40..3eaec2b55 100644 --- a/client/deps/cliparser/cliparser.c +++ b/client/deps/cliparser/cliparser.c @@ -11,6 +11,9 @@ #include "cliparser.h" #include <string.h> #include <stdlib.h> +#ifndef ARRAYLEN +# define ARRAYLEN(x) (sizeof(x)/sizeof((x)[0])) +#endif int CLIParserInit(CLIParserContext **ctx, const char *vprogramName, const char *vprogramHint, const char *vprogramHelp) { *ctx = malloc(sizeof(CLIParserContext)); @@ -88,15 +91,14 @@ int CLIParserParseStringEx(CLIParserContext *ctx, const char *str, void *vargtab char *argv[200] = {NULL}; int len = strlen(str); - char buf[500] = {0}; - memset(ctx->buf, 0x00, 500); - char *bufptr = buf; + memset(ctx->buf, 0x00, ARRAYLEN(ctx->buf)); + char *bufptr = ctx->buf; char *spaceptr = NULL; enum ParserState state = PS_FIRST; argv[argc++] = bufptr; // param0 = program name - memcpy(buf, ctx->programName, strlen(ctx->programName) + 1); // with 0x00 + memcpy(ctx->buf, ctx->programName, strlen(ctx->programName) + 1); // with 0x00 bufptr += strlen(ctx->programName) + 1; if (len) argv[argc++] = bufptr; From cb614f3f1133e86b32c632de8c272bfc1efef9ff Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Wed, 10 Jun 2020 11:34:33 +0200 Subject: [PATCH 389/527] cliparser: generalize ctx usage --- client/deps/cliparser/cliparser.h | 18 ++-- client/src/cmdhf14a.c | 26 +++--- client/src/cmdhffido.c | 42 ++++----- client/src/cmdhfmf.c | 20 ++-- client/src/cmdhfmfdes.c | 34 +++---- client/src/cmdhfmfp.c | 64 ++++++------- client/src/cmdhfmfu.c | 2 +- client/src/cmdlfindala.c | 10 +- client/src/emv/cmdemv.c | 146 +++++++++++++++--------------- 9 files changed, 181 insertions(+), 181 deletions(-) diff --git a/client/deps/cliparser/cliparser.h b/client/deps/cliparser/cliparser.h index 990e6d8d6..f51d338df 100644 --- a/client/deps/cliparser/cliparser.h +++ b/client/deps/cliparser/cliparser.h @@ -18,21 +18,21 @@ #define arg_param_end arg_end(20) #define arg_getsize(a) (sizeof(a) / sizeof(a[0])) -#define arg_get_lit(n) (((struct arg_lit*)argtable[n])->count) -#define arg_get_int_count(n)(((struct arg_int*)argtable[n])->count) -#define arg_get_int(n) (((struct arg_int*)argtable[n])->ival[0]) -#define arg_get_int_def(n, def)(arg_get_int_count(n) ? (arg_get_int(n)) : (def)) -#define arg_get_str(n) ((struct arg_str*)argtable[n]) -#define arg_get_str_len(n) (strlen(((struct arg_str*)argtable[n])->sval[0])) +#define arg_get_lit(ctx, n) (((struct arg_lit*)((ctx)->argtable)[n])->count) +#define arg_get_int_count(ctx, n)(((struct arg_int*)((ctx)->argtable)[n])->count) +#define arg_get_int(ctx, n) (((struct arg_int*)((ctx)->argtable)[n])->ival[0]) +#define arg_get_int_def(ctx, n, def)(arg_get_int_count((ctx), n) ? (arg_get_int((ctx), n)) : (def)) +#define arg_get_str(ctx, n) ((struct arg_str*)((ctx)->argtable)[n]) +#define arg_get_str_len(ctx, n) (strlen(((struct arg_str*)((ctx)->argtable)[n])->sval[0])) #define arg_strx1(shortopts, longopts, datatype, glossary) (arg_strn((shortopts), (longopts), (datatype), 1, 250, (glossary))) #define arg_strx0(shortopts, longopts, datatype, glossary) (arg_strn((shortopts), (longopts), (datatype), 0, 250, (glossary))) #define CLIParserFree(ctx) if ((ctx)) {arg_freetable(ctx->argtable, ctx->argtableLen); free((ctx)); (ctx)=NULL;} #define CLIExecWithReturn(ctx, cmd, atbl, ifempty) if (CLIParserParseString(ctx, cmd, atbl, arg_getsize(atbl), ifempty)) {CLIParserFree((ctx)); return PM3_ESOFT;} -#define CLIGetHexBLessWithReturn(ctx, paramnum, data, datalen, delta) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data) - (delta), datalen)) {CLIParserFree((ctx)); return PM3_ESOFT;} -#define CLIGetHexWithReturn(ctx, paramnum, data, datalen) if (CLIParamHexToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {CLIParserFree((ctx)); return PM3_ESOFT;} -#define CLIGetStrWithReturn(ctx, paramnum, data, datalen) if (CLIParamStrToBuf(arg_get_str(paramnum), data, sizeof(data), datalen)) {CLIParserFree((ctx)); return PM3_ESOFT;} +#define CLIGetHexBLessWithReturn(ctx, paramnum, data, datalen, delta) if (CLIParamHexToBuf(arg_get_str(ctx, paramnum), data, sizeof(data) - (delta), datalen)) {CLIParserFree((ctx)); return PM3_ESOFT;} +#define CLIGetHexWithReturn(ctx, paramnum, data, datalen) if (CLIParamHexToBuf(arg_get_str(ctx, paramnum), data, sizeof(data), datalen)) {CLIParserFree((ctx)); return PM3_ESOFT;} +#define CLIGetStrWithReturn(ctx, paramnum, data, datalen) if (CLIParamStrToBuf(arg_get_str(ctx, paramnum), data, sizeof(data), datalen)) {CLIParserFree((ctx)); return PM3_ESOFT;} typedef struct { void **argtable; diff --git a/client/src/cmdhf14a.c b/client/src/cmdhf14a.c index 2a8fe5485..b41dabb7f 100644 --- a/client/src/cmdhf14a.c +++ b/client/src/cmdhf14a.c @@ -378,9 +378,9 @@ static int CmdHF14AInfo(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - verbose = arg_get_lit(1); - do_nack_test = arg_get_lit(2); - do_aid_search = arg_get_lit(3); + verbose = arg_get_lit(ctx, 1); + do_nack_test = arg_get_lit(ctx, 2); + do_aid_search = arg_get_lit(ctx, 3); CLIParserFree(ctx); @@ -903,10 +903,10 @@ static int CmdHF14AAPDU(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, false); - activateField = arg_get_lit(1); - leaveSignalON = arg_get_lit(2); - decodeTLV = arg_get_lit(3); - decodeAPDU = arg_get_lit(4); + activateField = arg_get_lit(ctx, 1); + leaveSignalON = arg_get_lit(ctx, 2); + decodeTLV = arg_get_lit(ctx, 3); + decodeAPDU = arg_get_lit(ctx, 4); CLIGetHexWithReturn(ctx, 5, header, &headerlen); makeAPDU = headerlen > 0; @@ -915,8 +915,8 @@ static int CmdHF14AAPDU(const char *Cmd) { CLIParserFree(ctx); return 1; } - extendedAPDU = arg_get_lit(6); - le = arg_get_int_def(7, 0); + extendedAPDU = arg_get_lit(ctx, 6); + le = arg_get_int_def(ctx, 7, 0); if (makeAPDU) { uint8_t apdudata[PM3_CMD_DATA_SIZE] = {0}; @@ -1186,9 +1186,9 @@ static int CmdHF14AAntiFuzz(const char *Cmd) { CLIExecWithReturn(ctx, Cmd, argtable, false); uint8_t arg0 = FLAG_4B_UID_IN_DATA; - if (arg_get_lit(2)) + if (arg_get_lit(ctx, 2)) arg0 = FLAG_7B_UID_IN_DATA; - if (arg_get_lit(3)) + if (arg_get_lit(ctx, 3)) arg0 = FLAG_10B_UID_IN_DATA; CLIParserFree(ctx); @@ -1213,8 +1213,8 @@ static int CmdHF14AChaining(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - struct arg_str *str = arg_get_str(1); - int len = arg_get_str_len(1); + struct arg_str *str = arg_get_str(ctx, 1); + int len = arg_get_str_len(ctx, 1); if (len && (!strcmp(str->sval[0], "enable") || !strcmp(str->sval[0], "1"))) APDUInFramingEnable = true; diff --git a/client/src/cmdhffido.c b/client/src/cmdhffido.c index 1458c1f14..50c1495c8 100644 --- a/client/src/cmdhffido.c +++ b/client/src/cmdhffido.c @@ -117,7 +117,7 @@ static json_t *OpenJson(CLIParserContext *ctx, int paramnum, char *fname, void * int jsonnamelen = 0; // CLIGetStrWithReturn(ctx, paramnum, jsonname, &jsonnamelen); - if (CLIParamStrToBuf(arg_get_str(paramnum), jsonname, sizeof(jsonname), &jsonnamelen)) { + if (CLIParamStrToBuf(arg_get_str(ctx, paramnum), jsonname, sizeof(jsonname), &jsonnamelen)) { return NULL; } @@ -177,11 +177,11 @@ static int CmdHFFidoRegister(const char *cmd) { }; CLIExecWithReturn(ctx, cmd, argtable, true); - bool APDULogging = arg_get_lit(1); - bool verbose = arg_get_lit(2); - bool verbose2 = arg_get_lit(2) > 1; - bool paramsPlain = arg_get_lit(3); - bool showDERTLV = arg_get_lit(4); + bool APDULogging = arg_get_lit(ctx, 1); + bool verbose = arg_get_lit(ctx, 2); + bool verbose2 = arg_get_lit(ctx, 2) > 1; + bool paramsPlain = arg_get_lit(ctx, 3); + bool showDERTLV = arg_get_lit(ctx, 4); char fname[FILE_PATH_SIZE] = {0}; bool err; @@ -418,13 +418,13 @@ static int CmdHFFidoAuthenticate(const char *cmd) { }; CLIExecWithReturn(ctx, cmd, argtable, true); - bool APDULogging = arg_get_lit(1); - bool verbose = arg_get_lit(2); - bool paramsPlain = arg_get_lit(3); + bool APDULogging = arg_get_lit(ctx, 1); + bool verbose = arg_get_lit(ctx, 2); + bool paramsPlain = arg_get_lit(ctx, 3); uint8_t controlByte = 0x08; - if (arg_get_lit(5)) + if (arg_get_lit(ctx, 5)) controlByte = 0x03; - if (arg_get_lit(6)) + if (arg_get_lit(ctx, 6)) controlByte = 0x07; char fname[250] = {0}; @@ -673,11 +673,11 @@ static int CmdHFFido2MakeCredential(const char *cmd) { }; CLIExecWithReturn(ctx, cmd, argtable, true); - bool APDULogging = arg_get_lit(1); - bool verbose = arg_get_lit(2); - bool verbose2 = arg_get_lit(2) > 1; - bool showDERTLV = arg_get_lit(3); - bool showCBOR = arg_get_lit(4); + bool APDULogging = arg_get_lit(ctx, 1); + bool verbose = arg_get_lit(ctx, 2); + bool verbose2 = arg_get_lit(ctx, 2) > 1; + bool showDERTLV = arg_get_lit(ctx, 3); + bool showCBOR = arg_get_lit(ctx, 4); uint8_t jsonname[FILE_PATH_SIZE] = {0}; char *cjsonname = (char *)jsonname; @@ -798,11 +798,11 @@ static int CmdHFFido2GetAssertion(const char *cmd) { }; CLIExecWithReturn(ctx, cmd, argtable, true); - bool APDULogging = arg_get_lit(1); - bool verbose = arg_get_lit(2); - bool verbose2 = arg_get_lit(2) > 1; - bool showCBOR = arg_get_lit(3); - bool createAllowList = arg_get_lit(4); + bool APDULogging = arg_get_lit(ctx, 1); + bool verbose = arg_get_lit(ctx, 2); + bool verbose2 = arg_get_lit(ctx, 2) > 1; + bool showCBOR = arg_get_lit(ctx, 3); + bool createAllowList = arg_get_lit(ctx, 4); uint8_t jsonname[FILE_PATH_SIZE] = {0}; char *cjsonname = (char *)jsonname; diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 135872627..cdbe29e96 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4506,16 +4506,16 @@ static int CmdHF14AMfMAD(const char *Cmd) { arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool verbose = arg_get_lit(1); + bool verbose = arg_get_lit(ctx, 1); uint8_t aid[2] = {0}; int aidlen; CLIGetHexWithReturn(ctx, 2, aid, &aidlen); uint8_t key[6] = {0}; int keylen; CLIGetHexWithReturn(ctx, 3, key, &keylen); - bool keyB = arg_get_lit(4); - bool swapmad = arg_get_lit(5); - bool decodeholder = arg_get_lit(6); + bool keyB = arg_get_lit(ctx, 4); + bool swapmad = arg_get_lit(ctx, 5); + bool decodeholder = arg_get_lit(ctx, 6); CLIParserFree(ctx); @@ -4637,15 +4637,15 @@ static int CmdHFMFNDEF(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool verbose = arg_get_lit(1); - bool verbose2 = arg_get_lit(1) > 1; + bool verbose = arg_get_lit(ctx, 1); + bool verbose2 = arg_get_lit(ctx, 1) > 1; uint8_t aid[2] = {0}; int aidlen; CLIGetHexWithReturn(ctx, 2, aid, &aidlen); uint8_t key[6] = {0}; int keylen; CLIGetHexWithReturn(ctx, 3, key, &keylen); - bool keyB = arg_get_lit(4); + bool keyB = arg_get_lit(ctx, 4); CLIParserFree(ctx); @@ -4746,7 +4746,7 @@ static int CmdHFMFPersonalize(const char *cmd) { char keytypestr[2] = "a"; uint8_t keytype = 0x00; int keytypestr_len; - int res = CLIParamStrToBuf(arg_get_str(1), (uint8_t *)keytypestr, 1, &keytypestr_len); + int res = CLIParamStrToBuf(arg_get_str(ctx, 1), (uint8_t *)keytypestr, 1, &keytypestr_len); str_lower(keytypestr); if (res || (keytypestr[0] != 'a' && keytypestr[0] != 'b')) { @@ -4760,7 +4760,7 @@ static int CmdHFMFPersonalize(const char *cmd) { uint8_t key[6] = {0xff, 0xff, 0xff, 0xff, 0xff, 0xff}; int key_len; - res = CLIParamHexToBuf(arg_get_str(2), key, 6, &key_len); + res = CLIParamHexToBuf(arg_get_str(ctx, 2), key, 6, &key_len); if (res || (!res && key_len > 0 && key_len != 6)) { PrintAndLogEx(ERR, "ERROR: not a valid key. Key must be 12 hex digits"); CLIParserFree(ctx); @@ -4770,7 +4770,7 @@ static int CmdHFMFPersonalize(const char *cmd) { char pers_optionstr[6]; int opt_len; uint8_t pers_option; - res = CLIParamStrToBuf(arg_get_str(3), (uint8_t *)pers_optionstr, 5, &opt_len); + res = CLIParamStrToBuf(arg_get_str(ctx, 3), (uint8_t *)pers_optionstr, 5, &opt_len); str_lower(pers_optionstr); if (res || (!res && opt_len > 0 && opt_len != 5) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index 0f383fd0a..d1c38373a 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -2100,7 +2100,7 @@ static int CmdHF14ADesCreateFile(const char *Cmd) { uint8_t fid[2] = {0}; CLIGetHexWithReturn(ctx, 3, fid, &fidlength); - uint8_t comset = arg_get_int(4); + uint8_t comset = arg_get_int(ctx, 4); int arlength = 0; uint8_t ar[2] = {0}; CLIGetHexWithReturn(ctx, 5, ar, &arlength); @@ -2109,7 +2109,7 @@ static int CmdHF14ADesCreateFile(const char *Cmd) { uint8_t filesize[3] = {0}; CLIGetHexWithReturn(ctx, 6, filesize, &fsizelen); - bool isbackup = arg_get_lit(7); + bool isbackup = arg_get_lit(ctx, 7); CLIParserFree(ctx); swap24(aid); @@ -2281,7 +2281,7 @@ static int CmdHF14ADesReadData(const char *Cmd) { uint8_t filesize[3] = {0}; CLIGetHexWithReturn(ctx, 4, filesize, &flength); - int type = arg_get_int(5); + int type = arg_get_int(ctx, 5); CLIParserFree(ctx); if (type > 1) { @@ -2385,7 +2385,7 @@ static int CmdHF14ADesChangeValue(const char *Cmd) { int vlength = 0x0; CLIGetHexWithReturn(ctx, 3, value.value, &vlength); - int mode = arg_get_int(4); + int mode = arg_get_int(ctx, 4); CLIParserFree(ctx); swap24(aid); @@ -2485,13 +2485,13 @@ static int CmdHF14ADesWriteData(const char *Cmd) { CLIParserFree(ctx); return PM3_EMALLOC; } - if (CLIParamHexToBuf(arg_get_str(4), data, dlength, &dlength)) { + if (CLIParamHexToBuf(arg_get_str(ctx, 4), data, dlength, &dlength)) { free(data); CLIParserFree(ctx); return PM3_ESOFT; } - int type = arg_get_int(5); + int type = arg_get_int(ctx, 5); CLIParserFree(ctx); @@ -2597,7 +2597,7 @@ static int CmdHF14ADesCreateRecordFile(const char *Cmd) { uint8_t fid[2] = {0}; CLIGetHexWithReturn(ctx, 3, fid, &fidlength); - uint8_t comset = arg_get_int(4); + uint8_t comset = arg_get_int(ctx, 4); int arlength = 0; uint8_t ar[2] = {0}; CLIGetHexWithReturn(ctx, 5, ar, &arlength); @@ -2610,7 +2610,7 @@ static int CmdHF14ADesCreateRecordFile(const char *Cmd) { uint8_t maxnumrecords[3] = {0}; CLIGetHexWithReturn(ctx, 7, maxnumrecords, &msizelen); - bool cyclic = arg_get_lit(8); + bool cyclic = arg_get_lit(ctx, 8); CLIParserFree(ctx); swap24(aid); @@ -2724,7 +2724,7 @@ static int CmdHF14ADesCreateValueFile(const char *Cmd) { uint8_t _fileno[1] = {0}; CLIGetHexWithReturn(ctx, 2, _fileno, &filenolen); - uint8_t comset = arg_get_int(3); + uint8_t comset = arg_get_int(ctx, 3); int arlength = 0; uint8_t ar[2] = {0}; CLIGetHexWithReturn(ctx, 4, ar, &arlength); @@ -3452,14 +3452,14 @@ static int CmdHF14ADesAuth(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, false); - uint8_t cmdAuthMode = arg_get_int_def(1, 0); - uint8_t cmdAuthAlgo = arg_get_int_def(2, 0); + uint8_t cmdAuthMode = arg_get_int_def(ctx, 1, 0); + uint8_t cmdAuthAlgo = arg_get_int_def(ctx, 2, 0); int aidlength = 3; uint8_t aid[3] = {0}; CLIGetHexWithReturn(ctx, 3, aid, &aidlength); swap24(aid); - uint8_t cmdKeyNo = arg_get_int_def(4, 0); + uint8_t cmdKeyNo = arg_get_int_def(ctx, 4, 0); uint8_t key[24] = {0}; int keylen = 0; @@ -3925,14 +3925,14 @@ static int CmdHF14aDesChk(const char *Cmd) { uint8_t dict_filename[FILE_PATH_SIZE + 2] = {0}; int dict_filenamelen = 0; - if (CLIParamStrToBuf(arg_get_str(3), dict_filename, FILE_PATH_SIZE, &dict_filenamelen)) { + if (CLIParamStrToBuf(arg_get_str(ctx, 3), dict_filename, FILE_PATH_SIZE, &dict_filenamelen)) { PrintAndLogEx(FAILED, "File name too long or invalid."); CLIParserFree(ctx); return PM3_EINVARG; } - bool pattern1b = arg_get_lit(4); - bool pattern2b = arg_get_lit(5); + bool pattern1b = arg_get_lit(ctx, 4); + bool pattern2b = arg_get_lit(ctx, 5); if (pattern1b && pattern2b) { PrintAndLogEx(ERR, "Pattern search mode must be 2-byte or 1-byte only."); @@ -3964,14 +3964,14 @@ static int CmdHF14aDesChk(const char *Cmd) { uint8_t jsonname[250] = {0}; int jsonnamelen = 0; - if (CLIParamStrToBuf(arg_get_str(7), jsonname, sizeof(jsonname), &jsonnamelen)) { + if (CLIParamStrToBuf(arg_get_str(ctx, 7), jsonname, sizeof(jsonname), &jsonnamelen)) { PrintAndLogEx(ERR, "Invalid json name."); CLIParserFree(ctx); return PM3_EINVARG; } jsonname[jsonnamelen] = 0; - bool verbose = arg_get_lit(8); + bool verbose = arg_get_lit(ctx, 8); CLIParserFree(ctx); diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index f0d90b495..1403948c8 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -439,7 +439,7 @@ static int CmdHFMFPWritePerso(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool verbose = arg_get_lit(1); + bool verbose = arg_get_lit(ctx, 1); CLIGetHexWithReturn(ctx, 2, keyNum, &keyNumLen); CLIGetHexWithReturn(ctx, 3, key, &keyLen); CLIParserFree(ctx); @@ -505,8 +505,8 @@ static int CmdHFMFPInitPerso(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool verbose = arg_get_lit(1); - bool verbose2 = arg_get_lit(1) > 1; + bool verbose = arg_get_lit(ctx, 1); + bool verbose2 = arg_get_lit(ctx, 1) > 1; CLIGetHexWithReturn(ctx, 2, key, &keyLen); CLIParserFree(ctx); @@ -572,7 +572,7 @@ static int CmdHFMFPCommitPerso(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool verbose = arg_get_lit(1); + bool verbose = arg_get_lit(ctx, 1); CLIParserFree(ctx); mfpSetVerboseMode(verbose); @@ -621,7 +621,7 @@ static int CmdHFMFPAuth(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool verbose = arg_get_lit(1); + bool verbose = arg_get_lit(ctx, 1); CLIGetHexWithReturn(ctx, 2, keyn, &keynlen); CLIGetHexWithReturn(ctx, 3, key, &keylen); CLIParserFree(ctx); @@ -662,11 +662,11 @@ static int CmdHFMFPRdbl(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, false); - bool verbose = arg_get_lit(1); - int blocksCount = arg_get_int_def(2, 1); - bool keyB = arg_get_lit(3); - int plain = arg_get_lit(4); - uint32_t blockn = arg_get_int(5); + bool verbose = arg_get_lit(ctx, 1); + int blocksCount = arg_get_int_def(ctx, 2, 1); + bool keyB = arg_get_lit(ctx, 3); + int plain = arg_get_lit(ctx, 4); + uint32_t blockn = arg_get_int(ctx, 5); CLIGetHexWithReturn(ctx, 6, key, &keylen); CLIParserFree(ctx); @@ -774,10 +774,10 @@ static int CmdHFMFPRdsc(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, false); - bool verbose = arg_get_lit(1); - bool keyB = arg_get_lit(2); - bool plain = arg_get_lit(3); - uint32_t sectorNum = arg_get_int(4); + bool verbose = arg_get_lit(ctx, 1); + bool keyB = arg_get_lit(ctx, 2); + bool plain = arg_get_lit(ctx, 3); + uint32_t sectorNum = arg_get_int(ctx, 4); CLIGetHexWithReturn(ctx, 5, key, &keylen); CLIParserFree(ctx); @@ -873,9 +873,9 @@ static int CmdHFMFPWrbl(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, false); - bool verbose = arg_get_lit(1); - bool keyB = arg_get_lit(2); - uint32_t blockNum = arg_get_int(3); + bool verbose = arg_get_lit(ctx, 1); + bool keyB = arg_get_lit(ctx, 2); + uint32_t blockNum = arg_get_int(ctx, 3); CLIGetHexWithReturn(ctx, 4, datain, &datainlen); CLIGetHexWithReturn(ctx, 5, key, &keylen); CLIParserFree(ctx); @@ -1081,10 +1081,10 @@ static int CmdHFMFPChk(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool keyA = arg_get_lit(1); - bool keyB = arg_get_lit(2); - uint8_t startSector = arg_get_int_def(3, 0); - uint8_t endSector = arg_get_int_def(4, 0); + bool keyA = arg_get_lit(ctx, 1); + bool keyB = arg_get_lit(ctx, 2); + uint8_t startSector = arg_get_int_def(ctx, 3, 0); + uint8_t endSector = arg_get_int_def(ctx, 4, 0); uint8_t vkey[16] = {0}; int vkeylen = 0; @@ -1102,14 +1102,14 @@ static int CmdHFMFPChk(const char *Cmd) { uint8_t dict_filename[FILE_PATH_SIZE + 2] = {0}; int dict_filenamelen = 0; - if (CLIParamStrToBuf(arg_get_str(6), dict_filename, FILE_PATH_SIZE, &dict_filenamelen)) { + if (CLIParamStrToBuf(arg_get_str(ctx, 6), dict_filename, FILE_PATH_SIZE, &dict_filenamelen)) { PrintAndLogEx(FAILED, "File name too long or invalid."); CLIParserFree(ctx); return PM3_EINVARG; } - bool pattern1b = arg_get_lit(7); - bool pattern2b = arg_get_lit(8); + bool pattern1b = arg_get_lit(ctx, 7); + bool pattern2b = arg_get_lit(ctx, 8); if (pattern1b && pattern2b) { PrintAndLogEx(ERR, "Pattern search mode must be 2-byte or 1-byte only."); @@ -1141,14 +1141,14 @@ static int CmdHFMFPChk(const char *Cmd) { uint8_t jsonname[250] = {0}; int jsonnamelen = 0; - if (CLIParamStrToBuf(arg_get_str(10), jsonname, sizeof(jsonname), &jsonnamelen)) { + if (CLIParamStrToBuf(arg_get_str(ctx, 10), jsonname, sizeof(jsonname), &jsonnamelen)) { PrintAndLogEx(ERR, "Invalid json name."); CLIParserFree(ctx); return PM3_EINVARG; } jsonname[jsonnamelen] = 0; - bool verbose = arg_get_lit(11); + bool verbose = arg_get_lit(ctx, 11); CLIParserFree(ctx); @@ -1302,15 +1302,15 @@ static int CmdHFMFPMAD(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool verbose = arg_get_lit(1); + bool verbose = arg_get_lit(ctx, 1); uint8_t aid[2] = {0}; int aidlen; CLIGetHexWithReturn(ctx, 2, aid, &aidlen); uint8_t key[16] = {0}; int keylen; CLIGetHexWithReturn(ctx, 3, key, &keylen); - bool keyB = arg_get_lit(4); - bool swapmad = arg_get_lit(5); + bool keyB = arg_get_lit(ctx, 4); + bool swapmad = arg_get_lit(ctx, 5); CLIParserFree(ctx); @@ -1403,15 +1403,15 @@ static int CmdHFMFPNDEF(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool verbose = arg_get_lit(1); - bool verbose2 = arg_get_lit(1) > 1; + bool verbose = arg_get_lit(ctx, 1); + bool verbose2 = arg_get_lit(ctx, 1) > 1; uint8_t aid[2] = {0}; int aidlen; CLIGetHexWithReturn(ctx, 2, aid, &aidlen); uint8_t key[16] = {0}; int keylen; CLIGetHexWithReturn(ctx, 3, key, &keylen); - bool keyB = arg_get_lit(4); + bool keyB = arg_get_lit(ctx, 4); CLIParserFree(ctx); diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index dece50f3b..2a361cbb7 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -2911,7 +2911,7 @@ static int CmdHF14MfuNDEF(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); CLIGetHexWithReturn(ctx, 1, key, &keylen); - swapEndian = arg_get_lit(2); + swapEndian = arg_get_lit(ctx, 2); CLIParserFree(ctx); switch (keylen) { diff --git a/client/src/cmdlfindala.c b/client/src/cmdlfindala.c index d9d24bfdd..6457bf671 100644 --- a/client/src/cmdlfindala.c +++ b/client/src/cmdlfindala.c @@ -581,22 +581,22 @@ static int CmdIndalaClone(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, false); - is_long_uid = arg_get_lit(1); + is_long_uid = arg_get_lit(ctx, 1); // raw param CLIGetHexWithReturn(ctx, 3, data, &datalen); - is_t5555 = arg_get_lit(4); + is_t5555 = arg_get_lit(ctx, 4); if (is_long_uid == false) { // Heden param - cardnumber = arg_get_int_def(2, -1); + cardnumber = arg_get_int_def(ctx, 2, -1); got_cn = (cardnumber != -1); // 26b FC/CN param - fc = arg_get_int_def(5, 0); - cn = arg_get_int_def(6, 0); + fc = arg_get_int_def(ctx, 5, 0); + cn = arg_get_int_def(ctx, 6, 0); got_26 = (fc != 0 && cn != 0); } diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index f2a99add1..65c9cafb2 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -85,12 +85,12 @@ static int CmdEMVSelect(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool activateField = arg_get_lit(1); - bool leaveSignalON = arg_get_lit(2); - bool APDULogging = arg_get_lit(3); - bool decodeTLV = arg_get_lit(4); + bool activateField = arg_get_lit(ctx, 1); + bool leaveSignalON = arg_get_lit(ctx, 2); + bool APDULogging = arg_get_lit(ctx, 3); + bool decodeTLV = arg_get_lit(ctx, 4); EMVCommandChannel channel = ECC_CONTACTLESS; - if (arg_get_lit(5)) + if (arg_get_lit(ctx, 5)) channel = ECC_CONTACT; PrintChannel(channel); CLIGetHexWithReturn(ctx, 6, data, &datalen); @@ -134,12 +134,12 @@ static int CmdEMVSearch(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool activateField = arg_get_lit(1); - bool leaveSignalON = arg_get_lit(2); - bool APDULogging = arg_get_lit(3); - bool decodeTLV = arg_get_lit(4); + bool activateField = arg_get_lit(ctx, 1); + bool leaveSignalON = arg_get_lit(ctx, 2); + bool APDULogging = arg_get_lit(ctx, 3); + bool decodeTLV = arg_get_lit(ctx, 4); EMVCommandChannel channel = ECC_CONTACTLESS; - if (arg_get_lit(5)) + if (arg_get_lit(ctx, 5)) channel = ECC_CONTACT; PrintChannel(channel); CLIParserFree(ctx); @@ -186,17 +186,17 @@ static int CmdEMVPPSE(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool activateField = arg_get_lit(1); - bool leaveSignalON = arg_get_lit(2); + bool activateField = arg_get_lit(ctx, 1); + bool leaveSignalON = arg_get_lit(ctx, 2); uint8_t PSENum = 2; - if (arg_get_lit(3)) + if (arg_get_lit(ctx, 3)) PSENum = 1; - if (arg_get_lit(4)) + if (arg_get_lit(ctx, 4)) PSENum = 2; - bool APDULogging = arg_get_lit(5); - bool decodeTLV = arg_get_lit(6); + bool APDULogging = arg_get_lit(ctx, 5); + bool decodeTLV = arg_get_lit(ctx, 6); EMVCommandChannel channel = ECC_CONTACTLESS; - if (arg_get_lit(7)) + if (arg_get_lit(ctx, 7)) channel = ECC_CONTACT; PrintChannel(channel); CLIParserFree(ctx); @@ -245,13 +245,13 @@ static int CmdEMVGPO(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool leaveSignalON = arg_get_lit(1); - bool paramsLoadFromFile = arg_get_lit(2); - bool dataMakeFromPDOL = arg_get_lit(3); - bool APDULogging = arg_get_lit(4); - bool decodeTLV = arg_get_lit(5); + bool leaveSignalON = arg_get_lit(ctx, 1); + bool paramsLoadFromFile = arg_get_lit(ctx, 2); + bool dataMakeFromPDOL = arg_get_lit(ctx, 3); + bool APDULogging = arg_get_lit(ctx, 4); + bool decodeTLV = arg_get_lit(ctx, 5); EMVCommandChannel channel = ECC_CONTACTLESS; - if (arg_get_lit(6)) + if (arg_get_lit(ctx, 6)) channel = ECC_CONTACT; PrintChannel(channel); CLIGetHexWithReturn(ctx, 7, data, &datalen); @@ -350,11 +350,11 @@ static int CmdEMVReadRecord(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool leaveSignalON = arg_get_lit(1); - bool APDULogging = arg_get_lit(2); - bool decodeTLV = arg_get_lit(3); + bool leaveSignalON = arg_get_lit(ctx, 1); + bool APDULogging = arg_get_lit(ctx, 2); + bool decodeTLV = arg_get_lit(ctx, 3); EMVCommandChannel channel = ECC_CONTACTLESS; - if (arg_get_lit(4)) + if (arg_get_lit(ctx, 4)) channel = ECC_CONTACT; PrintChannel(channel); CLIGetHexWithReturn(ctx, 5, data, &datalen); @@ -413,19 +413,19 @@ static int CmdEMVAC(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, false); - bool leaveSignalON = arg_get_lit(1); - bool trTypeCDA = arg_get_lit(2); + bool leaveSignalON = arg_get_lit(ctx, 1); + bool trTypeCDA = arg_get_lit(ctx, 2); uint8_t termDecision = 0xff; - if (arg_get_str_len(3)) { - if (!strncmp(arg_get_str(3)->sval[0], "aac", 4)) + if (arg_get_str_len(ctx, 3)) { + if (!strncmp(arg_get_str(ctx, 3)->sval[0], "aac", 4)) termDecision = EMVAC_AAC; - if (!strncmp(arg_get_str(3)->sval[0], "tc", 4)) + if (!strncmp(arg_get_str(ctx, 3)->sval[0], "tc", 4)) termDecision = EMVAC_TC; - if (!strncmp(arg_get_str(3)->sval[0], "arqc", 4)) + if (!strncmp(arg_get_str(ctx, 3)->sval[0], "arqc", 4)) termDecision = EMVAC_ARQC; if (termDecision == 0xff) { - PrintAndLogEx(ERR, "ERROR: can't find terminal decision '%s'", arg_get_str(3)->sval[0]); + PrintAndLogEx(ERR, "ERROR: can't find terminal decision '%s'", arg_get_str(ctx, 3)->sval[0]); CLIParserFree(ctx); return PM3_EINVARG; } @@ -434,13 +434,13 @@ static int CmdEMVAC(const char *Cmd) { } if (trTypeCDA) termDecision = termDecision | EMVAC_CDAREQ; - bool paramsLoadFromFile = arg_get_lit(4); - bool dataMakeFromCDOL = arg_get_lit(5); - bool APDULogging = arg_get_lit(6); - bool decodeTLV = arg_get_lit(7); + bool paramsLoadFromFile = arg_get_lit(ctx, 4); + bool dataMakeFromCDOL = arg_get_lit(ctx, 5); + bool APDULogging = arg_get_lit(ctx, 6); + bool decodeTLV = arg_get_lit(ctx, 7); EMVCommandChannel channel = ECC_CONTACTLESS; - if (arg_get_lit(8)) + if (arg_get_lit(ctx, 8)) channel = ECC_CONTACT; PrintChannel(channel); @@ -527,10 +527,10 @@ static int CmdEMVGenerateChallenge(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool leaveSignalON = arg_get_lit(1); - bool APDULogging = arg_get_lit(2); + bool leaveSignalON = arg_get_lit(ctx, 1); + bool APDULogging = arg_get_lit(ctx, 2); EMVCommandChannel channel = ECC_CONTACTLESS; - if (arg_get_lit(3)) + if (arg_get_lit(ctx, 3)) channel = ECC_CONTACT; PrintChannel(channel); CLIParserFree(ctx); @@ -584,13 +584,13 @@ static int CmdEMVInternalAuthenticate(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, false); - bool leaveSignalON = arg_get_lit(1); - bool paramsLoadFromFile = arg_get_lit(2); - bool dataMakeFromDDOL = arg_get_lit(3); - bool APDULogging = arg_get_lit(4); - bool decodeTLV = arg_get_lit(5); + bool leaveSignalON = arg_get_lit(ctx, 1); + bool paramsLoadFromFile = arg_get_lit(ctx, 2); + bool dataMakeFromDDOL = arg_get_lit(ctx, 3); + bool APDULogging = arg_get_lit(ctx, 4); + bool decodeTLV = arg_get_lit(ctx, 5); EMVCommandChannel channel = ECC_CONTACTLESS; - if (arg_get_lit(6)) + if (arg_get_lit(ctx, 6)) channel = ECC_CONTACT; PrintChannel(channel); CLIGetHexWithReturn(ctx, 7, data, &datalen); @@ -816,23 +816,23 @@ static int CmdEMVExec(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool activateField = arg_get_lit(1); - bool showAPDU = arg_get_lit(2); - bool decodeTLV = arg_get_lit(3); - bool paramLoadJSON = arg_get_lit(4); - bool forceSearch = arg_get_lit(5); + bool activateField = arg_get_lit(ctx, 1); + bool showAPDU = arg_get_lit(ctx, 2); + bool decodeTLV = arg_get_lit(ctx, 3); + bool paramLoadJSON = arg_get_lit(ctx, 4); + bool forceSearch = arg_get_lit(ctx, 5); enum TransactionType TrType = TT_MSD; - if (arg_get_lit(7)) + if (arg_get_lit(ctx, 7)) TrType = TT_QVSDCMCHIP; - if (arg_get_lit(8)) + if (arg_get_lit(ctx, 8)) TrType = TT_CDA; - if (arg_get_lit(9)) + if (arg_get_lit(ctx, 9)) TrType = TT_VSDC; - bool GenACGPO = arg_get_lit(10); + bool GenACGPO = arg_get_lit(ctx, 10); EMVCommandChannel channel = ECC_CONTACTLESS; - if (arg_get_lit(11)) + if (arg_get_lit(ctx, 11)) channel = ECC_CONTACT; PrintChannel(channel); uint8_t psenum = (channel == ECC_CONTACT) ? 1 : 2; @@ -1411,23 +1411,23 @@ static int CmdEMVScan(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool showAPDU = arg_get_lit(1); - bool decodeTLV = arg_get_lit(2); - bool extractTLVElements = arg_get_lit(3); - bool paramLoadJSON = arg_get_lit(4); + bool showAPDU = arg_get_lit(ctx, 1); + bool decodeTLV = arg_get_lit(ctx, 2); + bool extractTLVElements = arg_get_lit(ctx, 3); + bool paramLoadJSON = arg_get_lit(ctx, 4); enum TransactionType TrType = TT_MSD; - if (arg_get_lit(6)) + if (arg_get_lit(ctx, 6)) TrType = TT_QVSDCMCHIP; - if (arg_get_lit(7)) + if (arg_get_lit(ctx, 7)) TrType = TT_CDA; - if (arg_get_lit(8)) + if (arg_get_lit(ctx, 8)) TrType = TT_VSDC; - bool GenACGPO = arg_get_lit(9); - bool MergeJSON = arg_get_lit(10); + bool GenACGPO = arg_get_lit(ctx, 9); + bool MergeJSON = arg_get_lit(ctx, 10); EMVCommandChannel channel = ECC_CONTACTLESS; - if (arg_get_lit(11)) + if (arg_get_lit(ctx, 11)) channel = ECC_CONTACT; PrintChannel(channel); uint8_t psenum = (channel == ECC_CONTACT) ? 1 : 2; @@ -1777,8 +1777,8 @@ static int CmdEMVTest(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - bool ignoreTimeTest = arg_get_lit(1); - bool runSlowTests = arg_get_lit(2); + bool ignoreTimeTest = arg_get_lit(ctx, 1); + bool runSlowTests = arg_get_lit(ctx, 2); CLIParserFree(ctx); return ExecuteCryptoTests(true, ignoreTimeTest, runSlowTests); @@ -1811,15 +1811,15 @@ static int CmdEMVRoca(const char *Cmd) { }; CLIExecWithReturn(ctx, Cmd, argtable, true); - if (arg_get_lit(1)) { + if (arg_get_lit(ctx, 1)) { CLIParserFree(ctx); return roca_self_test(); } - bool show_apdu = arg_get_lit(2); + bool show_apdu = arg_get_lit(ctx, 2); EMVCommandChannel channel = ECC_CONTACTLESS; - if (arg_get_lit(3)) + if (arg_get_lit(ctx, 3)) channel = ECC_CONTACT; CLIParserFree(ctx); From c89fc81fcff94f0d99ab34814d1a8a0405e239a5 Mon Sep 17 00:00:00 2001 From: slurdge <slurdge@slurdge.org> Date: Wed, 10 Jun 2020 12:41:18 +0200 Subject: [PATCH 390/527] Make BigBuf take dynamically the available space with a fixed (4K) stack --- armsrc/BigBuf.c | 38 ++++++++++++++++++++++++++------------ armsrc/BigBuf.h | 3 ++- armsrc/appmain.c | 6 +++--- common_arm/ldscript.common | 4 ++++ 4 files changed, 35 insertions(+), 16 deletions(-) diff --git a/armsrc/BigBuf.c b/armsrc/BigBuf.c index 07f32239f..20e2e3e2d 100644 --- a/armsrc/BigBuf.c +++ b/armsrc/BigBuf.c @@ -14,34 +14,48 @@ #include "dbprint.h" #include "pm3_cmd.h" +extern uint8_t _stack_start, __bss_end__; + // BigBuf is the large multi-purpose buffer, typically used to hold A/D samples or traces. // Also used to hold various smaller buffers and the Mifare Emulator Memory. -// declare it as uint32_t to achieve alignment to 4 Byte boundary -static uint32_t BigBuf[BIGBUF_SIZE / sizeof(uint32_t)]; +// We know that bss is aligned to 4 bytes. +static uint8_t* BigBuf = &__bss_end__; /* BigBuf memory layout: Pointer to highest available memory: BigBuf_hi - - high BIGBUF_SIZE + high BigBuf_size reserved = BigBuf_malloc() subtracts amount from BigBuf_hi, low 0x00 */ +static uint32_t BigBuf_size = 0; + // High memory mark -static uint16_t BigBuf_hi = BIGBUF_SIZE; +static uint32_t BigBuf_hi = 0; // pointer to the emulator memory. static uint8_t *emulator_memory = NULL; // trace related variables static uint32_t traceLen = 0; -static bool tracing = true; //todo static? +static bool tracing = true; + +// compute the available size for BigBuf +void BigBuf_initialize(void) { + BigBuf_size = (uint32_t)&_stack_start - (uint32_t)&__bss_end__; + BigBuf_hi = BigBuf_size; + traceLen = 0; +} // get the address of BigBuf uint8_t *BigBuf_get_addr(void) { return (uint8_t *)BigBuf; } +uint32_t BigBuf_get_size(void) { + return BigBuf_size; +} + // get the address of the emulator memory. Allocate part of Bigbuf for it, if not yet done uint8_t *BigBuf_get_EM_addr(void) { // not yet allocated @@ -58,9 +72,9 @@ void BigBuf_Clear(void) { // clear ALL of BigBuf void BigBuf_Clear_ext(bool verbose) { - memset(BigBuf, 0, BIGBUF_SIZE); + memset(BigBuf, 0, BigBuf_size); if (verbose) - Dbprintf("Buffer cleared (%i bytes)", BIGBUF_SIZE); + Dbprintf("Buffer cleared (%i bytes)", BigBuf_size); } void BigBuf_Clear_EM(void) { @@ -74,7 +88,7 @@ void BigBuf_Clear_keep_EM(void) { // allocate a chunk of memory from BigBuf. We allocate high memory first. The unallocated memory // at the beginning of BigBuf is always for traces/samples uint8_t *BigBuf_malloc(uint16_t chunksize) { - if (BigBuf_hi - chunksize < 0) + if (BigBuf_hi < chunksize) return NULL; // no memory left chunksize = (chunksize + 3) & 0xfffc; // round to next multiple of 4 @@ -84,7 +98,7 @@ uint8_t *BigBuf_malloc(uint16_t chunksize) { // free ALL allocated chunks. The whole BigBuf is available for traces or samples again. void BigBuf_free(void) { - BigBuf_hi = BIGBUF_SIZE; + BigBuf_hi = BigBuf_size; emulator_memory = NULL; // shouldn't this empty BigBuf also? } @@ -94,14 +108,14 @@ void BigBuf_free_keep_EM(void) { if (emulator_memory != NULL) BigBuf_hi = emulator_memory - (uint8_t *)BigBuf; else - BigBuf_hi = BIGBUF_SIZE; + BigBuf_hi = BigBuf_size; // shouldn't this empty BigBuf also? } void BigBuf_print_status(void) { DbpString(_BLUE_("Memory")); - Dbprintf(" BIGBUF_SIZE.............%d", BIGBUF_SIZE); + Dbprintf(" BigBuf_size.............%d", BigBuf_size); Dbprintf(" Available memory........%d", BigBuf_hi); DbpString(_BLUE_("Tracing")); Dbprintf(" tracing ................%d", tracing); diff --git a/armsrc/BigBuf.h b/armsrc/BigBuf.h index ad967c4c7..60857e82a 100644 --- a/armsrc/BigBuf.h +++ b/armsrc/BigBuf.h @@ -14,7 +14,6 @@ #include "common.h" -#define BIGBUF_SIZE 40000 #define MAX_FRAME_SIZE 256 // maximum allowed ISO14443 frame #define MAX_PARITY_SIZE ((MAX_FRAME_SIZE + 7) / 8) #define MAX_MIFARE_FRAME_SIZE 18 // biggest Mifare frame is answer to a read (one block = 16 Bytes) + 2 Bytes CRC @@ -23,8 +22,10 @@ #define DMA_BUFFER_SIZE 256 //128 (how big is the dma?!? uint8_t *BigBuf_get_addr(void); +uint32_t BigBuf_get_size(void); uint8_t *BigBuf_get_EM_addr(void); uint16_t BigBuf_max_traceLen(void); +void BigBuf_initialize(void); void BigBuf_Clear(void); void BigBuf_Clear_ext(bool verbose); void BigBuf_Clear_keep_EM(void); diff --git a/armsrc/appmain.c b/armsrc/appmain.c index fd5b4853c..96f133f49 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -1659,12 +1659,12 @@ static void PacketReceived(PacketCommandNG *packet) { } // offset should not be over buffer - if (payload->offset >= BIGBUF_SIZE) { + if (payload->offset >= BigBuf_get_size()) { reply_ng(CMD_LF_UPLOAD_SIM_SAMPLES, PM3_EOVFLOW, NULL, 0); break; } // ensure len bytes copied wont go past end of bigbuf - uint16_t len = MIN(BIGBUF_SIZE - payload->offset, sizeof(payload->data)); + uint16_t len = MIN(BigBuf_get_size() - payload->offset, sizeof(payload->data)); uint8_t *mem = BigBuf_get_addr(); @@ -2054,7 +2054,7 @@ static void PacketReceived(PacketCommandNG *packet) { void __attribute__((noreturn)) AppMain(void) { SpinDelay(100); - clear_trace(); + BigBuf_initialize(); if (common_area.magic != COMMON_AREA_MAGIC || common_area.version != 1) { /* Initialize common area */ diff --git a/common_arm/ldscript.common b/common_arm/ldscript.common index 1be33df95..c94d0dcff 100644 --- a/common_arm/ldscript.common +++ b/common_arm/ldscript.common @@ -9,6 +9,8 @@ ms of the GNU GPL, version 2 or, ----------------------------------------------------------------------------- */ +stacksize = DEFINED(stacksize) ? stacksize : 4K; + /* AT91SAM7S256 has 256k Flash and 64k RAM */ /* AT91SAM7S512 has 512k Flash and 64k RAM */ /* boot space = 8192bytes (0x2000) */ @@ -19,6 +21,7 @@ MEMORY bootphase2 : ORIGIN = 0x00100200, LENGTH = 0x2000 - 0x200 /* Main bootloader code, stored in Flash, executed from RAM */ osimage : ORIGIN = 0x00102000, LENGTH = 512K - 0x2000 /* Place where the main OS will end up */ ram : ORIGIN = 0x00200000, LENGTH = 64K - 0x20 /* RAM, minus small common area */ + stack : ORIGIN = 0x00200000 + 64K - 4K - 0x20, LENGTH = stacksize /* Stack */ commonarea : ORIGIN = 0x00200000 + 64K - 0x20, LENGTH = 0x20 /* Communication between bootloader and main OS */ } @@ -29,4 +32,5 @@ _bootrom_start = ORIGIN(bootphase1); _bootrom_end = ORIGIN(bootphase2) + LENGTH(bootphase2); _flash_start = ORIGIN(bootphase1); _flash_end = ORIGIN(osimage) + LENGTH(osimage); +_stack_start = ORIGIN(stack); _stack_end = ORIGIN(ram) + LENGTH(ram) - 8; From 61be7c7c30bb8c7f636ccdcbafc78c634194a022 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 10 Jun 2020 13:31:57 +0200 Subject: [PATCH 391/527] chg: cliparse should have atleast same file_max_path_len --- client/deps/cliparser/cliparser.h | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/deps/cliparser/cliparser.h b/client/deps/cliparser/cliparser.h index f51d338df..86ed21977 100644 --- a/client/deps/cliparser/cliparser.h +++ b/client/deps/cliparser/cliparser.h @@ -40,7 +40,7 @@ typedef struct { const char *programName; const char *programHint; const char *programHelp; - char buf[500]; + char buf[1024 + 60]; } CLIParserContext; int CLIParserInit(CLIParserContext **ctx, const char *vprogramName, const char *vprogramHint, const char *vprogramHelp); int CLIParserParseString(CLIParserContext *ctx, const char *str, void *vargtable[], size_t vargtableLen, bool allowEmptyExec); From d7377e7cccec0f05187695fdf01afdd1e1bc07f4 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 10 Jun 2020 13:33:08 +0200 Subject: [PATCH 392/527] textual --- client/src/cmdhfmf.c | 67 +++++++++------ client/src/cmdhfmfp.c | 109 +++++++++++++++++------- client/src/mifare/mad.c | 178 ++++++++++++++++++++++----------------- client/src/mifare/ndef.c | 2 +- 4 files changed, 223 insertions(+), 133 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index cdbe29e96..ea09db66c 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4492,14 +4492,14 @@ static int CmdHF14AMfMAD(const char *Cmd) { "Checks and prints Mifare Application Directory (MAD)", "Usage:\n" "\thf mf mad -> shows MAD if exists\n" - "\thf mf mad -a 03e1 -k ffffffffffff -b -> shows NDEF data if exists. read card with custom key and key B\n" - "\thf mf mad -a 0004 -k ffffffffffff --dch -> decode CardHolder information\n"); + "\thf mf mad --aid 03e1 -k ffffffffffff -b -> shows NDEF data if exists. read card with custom key and key B\n" + "\thf mf mad --dch -k ffffffffffff -> decode CardHolder information\n"); void *argtable[] = { arg_param_begin, arg_lit0("vV", "verbose", "show technical data"), - arg_str0("aA", "aid", "print all sectors with specified aid", NULL), - arg_str0("kK", "key", "key for printing sectors", NULL), + arg_str0("", "aid", "<aid>", "print all sectors with specified aid"), + arg_str0("kK", "key", "<key>", "key for printing sectors"), arg_lit0("bB", "keyb", "use key B for access printing sectors (by default: key A)"), arg_lit0("", "be", "(optional, BigEndian)"), arg_lit0("", "dch", "decode Card Holder information"), @@ -4530,16 +4530,9 @@ static int CmdHF14AMfMAD(const char *Cmd) { return PM3_ESOFT; } - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "--- " _CYAN_("MAD Information") " -------------------------------"); - PrintAndLogEx(INFO, "---------------------------------------------------"); - - if (verbose) { - PrintAndLogEx(SUCCESS, "Raw:"); - for (int i = 0; i < 4; i ++) - PrintAndLogEx(INFO, "[%d] %s", i, sprint_hex(§or0[i * 16], 16)); - } + PrintAndLogEx(INFO, "--- " _CYAN_("Mifare App Directory Information") " ----------------"); + PrintAndLogEx(INFO, "-----------------------------------------------------"); bool haveMAD2 = false; MAD1DecodeAndPrint(sector0, swapmad, verbose, &haveMAD2); @@ -4561,14 +4554,21 @@ static int CmdHF14AMfMAD(const char *Cmd) { return PM3_ESOFT; } + // copy default NDEF key uint8_t akey[6] = {0}; memcpy(akey, g_mifare_ndef_key, 6); + + // user specified key if (keylen == 6) { memcpy(akey, key, 6); } + uint16_t aaid = 0x0004; if (aidlen == 2) { - uint16_t aaid = (aid[0] << 8) + aid[1]; + + aaid = (aid[0] << 8) + aid[1]; + + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "-------------- " _CYAN_("AID 0x%04x") " ---------------", aaid); for (int i = 0; i < madlen; i++) { @@ -4587,7 +4587,8 @@ static int CmdHF14AMfMAD(const char *Cmd) { } if (decodeholder) { - uint16_t aaid = 0x0004; + + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "-------- " _CYAN_("Card Holder Info 0x%04x") " --------", aaid); uint8_t data[4096] = {0}; @@ -4595,6 +4596,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { for (int i = 0; i < madlen; i++) { if (aaid == mad[i]) { + uint8_t vsector[16 * 4] = {0}; if (mfReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, akey, vsector)) { PrintAndLogEx(NORMAL, ""); @@ -4611,11 +4613,17 @@ static int CmdHF14AMfMAD(const char *Cmd) { PrintAndLogEx(WARNING, "no Card Holder Info data"); return PM3_SUCCESS; } - MADCardHolderInfoDecode(data, datalen, verbose); } } + if (verbose) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "------------ " _CYAN_("MAD sector raw") " -------------"); + for (int i = 0; i < 4; i ++) + PrintAndLogEx(INFO, "[%d] %s", i, sprint_hex(§or0[i * 16], 16)); + } + return PM3_SUCCESS; } @@ -4624,14 +4632,15 @@ static int CmdHFMFNDEF(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mf ndef", "Prints NFC Data Exchange Format (NDEF)", - "Usage:\n\thf mf ndef -> shows NDEF data\n" - "\thf mf ndef -a 03e1 -k ffffffffffff -b -> shows NDEF data with custom AID, key and with key B\n"); + "Usage:\n\thf mf ndef -> shows NDEF parsed data\n" + "\thf mf ndef -vv -> shows NDEF parsed and raw data\n" + "\thf mf ndef --aid 03e1 -k ffffffffffff -b -> shows NDEF data with custom AID, key and with key B\n"); void *argtable[] = { arg_param_begin, arg_litn("vV", "verbose", 0, 2, "show technical data"), - arg_str0("aA", "aid", "replace default aid for NDEF", NULL), - arg_str0("kK", "key", "replace default key for NDEF", NULL), + arg_str0("", "aid", "<aid>", "replace default aid for NDEF"), + arg_str0("kK", "key", "<key>", "replace default key for NDEF"), arg_lit0("bB", "keyb", "use key B for access sectors (by default: key A)"), arg_param_end }; @@ -4664,11 +4673,15 @@ static int CmdHFMFNDEF(const char *Cmd) { uint8_t data[4096] = {0}; int datalen = 0; + if (verbose) + PrintAndLogEx(INFO, "reading MAD v1 sector"); + if (mfReadSector(MF_MAD1_SECTOR, MF_KEY_A, (uint8_t *)g_mifare_mad_key, sector0)) { PrintAndLogEx(ERR, "error, read sector 0. card don't have MAD or don't have MAD on default keys"); + PrintAndLogEx(HINT, "Try " _YELLOW_("`hf mf ndef -k `") " with your custom key"); return PM3_ESOFT; } - + bool haveMAD2 = false; int res = MADCheck(sector0, NULL, verbose, &haveMAD2); if (res != PM3_SUCCESS) { @@ -4677,8 +4690,12 @@ static int CmdHFMFNDEF(const char *Cmd) { } if (haveMAD2) { + if (verbose) + PrintAndLogEx(INFO, "reading MAD v2 sector"); + if (mfReadSector(MF_MAD2_SECTOR, MF_KEY_A, (uint8_t *)g_mifare_mad_key, sector10)) { PrintAndLogEx(ERR, "error, read sector 0x10. card don't have MAD or don't have MAD on default keys"); + PrintAndLogEx(HINT, "Try " _YELLOW_("`hf mf ndef -k `") " with your custom key"); return PM3_ESOFT; } } @@ -4691,7 +4708,7 @@ static int CmdHFMFNDEF(const char *Cmd) { return res; } - PrintAndLogEx(INFO, "data reading:"); + PrintAndLogEx(INFO, "reading data from tag"); for (int i = 0; i < madlen; i++) { if (ndefAID == mad[i]) { uint8_t vsector[16 * 4] = {0}; @@ -4703,7 +4720,7 @@ static int CmdHFMFNDEF(const char *Cmd) { memcpy(&data[datalen], vsector, 16 * 3); datalen += 16 * 3; - PrintAndLogEx(INPLACE, "."); + PrintAndLogEx(INPLACE, "%d", i); } } PrintAndLogEx(NORMAL, ""); @@ -4714,12 +4731,14 @@ static int CmdHFMFNDEF(const char *Cmd) { } if (verbose2) { - PrintAndLogEx(SUCCESS, "NDEF data:"); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "--- " _CYAN_("MFC NDEF raw") " ----------------"); dump_buffer(data, datalen, stdout, 1); } NDEFDecodeAndPrint(data, datalen, verbose); + PrintAndLogEx(HINT, "Try " _YELLOW_("`hf mf ndef -vv`") " for more details"); return PM3_SUCCESS; } diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 1403948c8..6b330878c 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1288,16 +1288,17 @@ static int CmdHFMFPMAD(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mfp mad", "Checks and prints Mifare Application Directory (MAD)", - "Usage:\n\thf mfp mad -> shows MAD if exists\n" + "Usage:\n\thf mfp mad -> shows MAD if exists\n" "\thf mfp mad -a 03e1 -k d3f7d3f7d3f7d3f7d3f7d3f7d3f7d3f7 -> shows NDEF data if exists\n"); void *argtable[] = { arg_param_begin, arg_lit0("vV", "verbose", "show technical data"), - arg_str0("aA", "aid", "print all sectors with aid", NULL), - arg_str0("kK", "key", "key for printing sectors", NULL), + arg_str0("", "aid", "<aid>", "print all sectors with aid"), + arg_str0("kK", "key", "<key>", "key for printing sectors"), arg_lit0("bB", "keyb", "use key B for access printing sectors (by default: key A)"), arg_lit0("", "be", "(optional, BigEndian)"), + arg_lit0("", "dch", "decode Card Holder information"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, true); @@ -1311,11 +1312,12 @@ static int CmdHFMFPMAD(const char *Cmd) { CLIGetHexWithReturn(ctx, 3, key, &keylen); bool keyB = arg_get_lit(ctx, 4); bool swapmad = arg_get_lit(ctx, 5); + bool decodeholder = arg_get_lit(ctx, 6); CLIParserFree(ctx); - if (aidlen != 2 && keylen > 0) { - PrintAndLogEx(WARNING, "do not need a key without aid"); + if (aidlen != 2 && !decodeholder && keylen > 0) { + PrintAndLogEx(WARNING, "Using default MAD keys instead"); } uint8_t sector0[16 * 4] = {0}; @@ -1328,8 +1330,8 @@ static int CmdHFMFPMAD(const char *Cmd) { } PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(INFO, "--- " _CYAN_("MAD Information") " -------------------------------"); - PrintAndLogEx(INFO, "---------------------------------------------------"); + PrintAndLogEx(INFO, "--- " _CYAN_("Mifare App Directory Information") " ----------------"); + PrintAndLogEx(INFO, "-----------------------------------------------------"); if (verbose) { PrintAndLogEx(SUCCESS, "Raw:"); @@ -1350,10 +1352,7 @@ static int CmdHFMFPMAD(const char *Cmd) { MAD2DecodeAndPrint(sector10, swapmad, verbose); } - if (aidlen == 2) { - uint16_t aaid = (aid[0] << 8) + aid[1]; - PrintAndLogEx(INFO, "-------------- " _CYAN_("AID 0x%04x") " ---------------", aaid); - + if (aidlen == 2 || decodeholder) { uint16_t mad[7 + 8 + 8 + 8 + 8] = {0}; size_t madlen = 0; if (MADDecode(sector0, sector10, mad, &madlen, swapmad)) { @@ -1361,27 +1360,66 @@ static int CmdHFMFPMAD(const char *Cmd) { return 10; } + // copy default NDEF key uint8_t akey[16] = {0}; memcpy(akey, g_mifarep_ndef_key, 16); + + // user specified key if (keylen == 16) { memcpy(akey, key, 16); } - for (int i = 0; i < madlen; i++) { - if (aaid == mad[i]) { - uint8_t vsector[16 * 4] = {0}; - if (mfpReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, akey, vsector, false)) { - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(ERR, "error, read sector %d error", i + 1); - return 2; - } + uint16_t aaid = 0x0004; + if (aidlen == 2) { + aaid = (aid[0] << 8) + aid[1]; + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "-------------- " _CYAN_("AID 0x%04x") " ---------------", aaid); - for (int j = 0; j < (verbose ? 4 : 3); j ++) - PrintAndLogEx(NORMAL, " [%03d] %s", (i + 1) * 4 + j, sprint_hex(&vsector[j * 16], 16)); + for (int i = 0; i < madlen; i++) { + if (aaid == mad[i]) { + uint8_t vsector[16 * 4] = {0}; + if (mfpReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, akey, vsector, false)) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(ERR, "error, read sector %d error", i + 1); + return PM3_ESOFT; + } + + for (int j = 0; j < (verbose ? 4 : 3); j ++) + PrintAndLogEx(NORMAL, " [%03d] %s", (i + 1) * 4 + j, sprint_hex(&vsector[j * 16], 16)); + } } } - } + if (decodeholder) { + + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "-------- " _CYAN_("Card Holder Info 0x%04x") " --------", aaid); + + uint8_t data[4096] = {0}; + int datalen = 0; + + for (int i = 0; i < madlen; i++) { + if (aaid == mad[i]) { + + uint8_t vsector[16 * 4] = {0}; + if (mfReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, akey, vsector)) { + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(ERR, "error, read sector %d", i + 1); + return PM3_ESOFT; + } + + memcpy(&data[datalen], vsector, 16 * 3); + datalen += 16 * 3; + } + } + + if (!datalen) { + PrintAndLogEx(WARNING, "no Card Holder Info data"); + return PM3_SUCCESS; + } + MADCardHolderInfoDecode(data, datalen, verbose); + } + } return PM3_SUCCESS; } @@ -1390,14 +1428,16 @@ static int CmdHFMFPNDEF(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mfp ndef", "Prints NFC Data Exchange Format (NDEF)", - "Usage:\n\thf mfp ndef -> shows NDEF data\n" - "\thf mfp ndef -a 03e1 -k d3f7d3f7d3f7d3f7d3f7d3f7d3f7d3f7 -> shows NDEF data with custom AID and key\n"); + "Usage:\n" + "\thf mfp ndef -> shows NDEF data\n" + "\thf mfp ndef -vv -> shows NDEF parsed and raw data\n" + "\thf mfp ndef -a 03e1 -k d3f7d3f7d3f7d3f7d3f7d3f7d3f7d3f7 -> shows NDEF data with custom AID and key\n"); void *argtable[] = { arg_param_begin, arg_litn("vV", "verbose", 0, 2, "show technical data"), - arg_str0("aA", "aid", "replace default aid for NDEF", NULL), - arg_str0("kK", "key", "replace default key for NDEF", NULL), + arg_str0("", "aid", "<aid>", "replace default aid for NDEF"), + arg_str0("kK", "key", "<key>", "replace default key for NDEF"), arg_lit0("bB", "keyb", "use key B for access sectors (by default: key A)"), arg_param_end }; @@ -1430,8 +1470,12 @@ static int CmdHFMFPNDEF(const char *Cmd) { uint8_t data[4096] = {0}; int datalen = 0; + if (verbose) + PrintAndLogEx(INFO, "reading MAD v1 sector"); + if (mfpReadSector(MF_MAD1_SECTOR, MF_KEY_A, (uint8_t *)g_mifarep_mad_key, sector0, verbose)) { PrintAndLogEx(ERR, "error, read sector 0. card don't have MAD or don't have MAD on default keys"); + PrintAndLogEx(HINT, "Try " _YELLOW_("`hf mfp ndef -k `") " with your custom key"); return PM3_ESOFT; } @@ -1443,8 +1487,13 @@ static int CmdHFMFPNDEF(const char *Cmd) { } if (haveMAD2) { + + if (verbose) + PrintAndLogEx(INFO, "reading MAD v2 sector"); + if (mfpReadSector(MF_MAD2_SECTOR, MF_KEY_A, (uint8_t *)g_mifarep_mad_key, sector10, verbose)) { PrintAndLogEx(ERR, "error, read sector 0x10. card don't have MAD or don't have MAD on default keys"); + PrintAndLogEx(HINT, "Try " _YELLOW_("`hf mf ndef -k `") " with your custom key"); return PM3_ESOFT; } } @@ -1457,7 +1506,7 @@ static int CmdHFMFPNDEF(const char *Cmd) { return res; } - PrintAndLogEx(INFO, "data reading:"); + PrintAndLogEx(INFO, "reading data from tag"); for (int i = 0; i < madlen; i++) { if (ndefAID == mad[i]) { uint8_t vsector[16 * 4] = {0}; @@ -1469,7 +1518,7 @@ static int CmdHFMFPNDEF(const char *Cmd) { memcpy(&data[datalen], vsector, 16 * 3); datalen += 16 * 3; - PrintAndLogEx(INPLACE, "."); + PrintAndLogEx(INPLACE, "%d", i); } } PrintAndLogEx(NORMAL, ""); @@ -1480,11 +1529,13 @@ static int CmdHFMFPNDEF(const char *Cmd) { } if (verbose2) { - PrintAndLogEx(INFO, "NDEF data:"); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "--- " _CYAN_("MFC NDEF raw") " ----------------"); dump_buffer(data, datalen, stdout, 1); } NDEFDecodeAndPrint(data, datalen, verbose); + PrintAndLogEx(HINT, "Try " _YELLOW_("`hf mf ndef -vv`") " for more details"); return PM3_SUCCESS; } diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index dad6d6ea6..96ac4f1d1 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -20,6 +20,22 @@ // https://www.nxp.com/docs/en/application-note/AN10787.pdf static json_t *mad_known_aids = NULL; +static const char *holder_info_type[] = { + "Surname", + "Given name", + "Sex", + "Other" +}; + +static const char *aid_admin[] = { + "free", + "defect", + "reserved", + "additional directory info", + "card holder info", + "not applicable" +}; + static int open_mad_file(json_t **root, bool verbose) { char *path; @@ -45,7 +61,7 @@ static int open_mad_file(json_t **root, bool verbose) { } if (verbose) - PrintAndLogEx(SUCCESS, "Loaded file (%s) OK. %zu records.", path, json_array_size(*root)); + PrintAndLogEx(SUCCESS, "Loaded file " _YELLOW_("`%s`") " (%s) %zu records.", path, _GREEN_("ok"), json_array_size(*root)); out: free(path); return retval; @@ -157,9 +173,9 @@ int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) if (sector0 == NULL) return PM3_EINVARG; - uint8_t GPB = sector0[3 * 16 + 9]; + uint8_t GPB = sector0[3 * 16 + 9]; if (verbose) - PrintAndLogEx(SUCCESS, "GPB: " _GREEN_("0x%02x"), GPB); + PrintAndLogEx(SUCCESS, "%14s " _GREEN_("0x%02x"), "GPB", GPB); // DA (MAD available) if (!(GPB & 0x80)) { @@ -167,6 +183,33 @@ int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) return PM3_ESOFT; } + uint8_t mad_ver = GPB & 0x03; + if (verbose) + PrintAndLogEx(SUCCESS, "%14s " _GREEN_("%d"), "MAD version", mad_ver); + + // MAD version + if ((mad_ver != 0x01) && (mad_ver != 0x02)) { + PrintAndLogEx(ERR, "Wrong MAD version " _RED_("0x%02x"), mad_ver); + return PM3_ESOFT; + }; + + if (haveMAD2) + *haveMAD2 = (mad_ver == 2); + + int res = madCRCCheck(sector0, true, 1); + + if (verbose && res == PM3_SUCCESS) + PrintAndLogEx(SUCCESS, "%14s " _GREEN_("0x%02x") " (%s)", "CRC8", sector0[16], _GREEN_("ok")); + + if (mad_ver == 2 && sector10) { + int res2 = madCRCCheck(sector10, true, 2); + if (res == PM3_SUCCESS) + res = res2; + + if (verbose && !res2) + PrintAndLogEx(SUCCESS, "%14s " _GREEN_("0x%02x") " (%s)", "CRC8", sector10[0], _GREEN_("ok")); + } + // MA (multi-application card) if (verbose) { if (GPB & 0x40) @@ -174,34 +217,6 @@ int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) else PrintAndLogEx(SUCCESS, "Single application card"); } - - uint8_t MADVer = GPB & 0x03; - if (verbose) - PrintAndLogEx(SUCCESS, "MAD version: " _GREEN_("%d"), MADVer); - - // MAD version - if ((MADVer != 0x01) && (MADVer != 0x02)) { - PrintAndLogEx(ERR, "Wrong MAD version: " _RED_("0x%02x"), MADVer); - return PM3_ESOFT; - }; - - if (haveMAD2) - *haveMAD2 = (MADVer == 2); - - int res = madCRCCheck(sector0, true, 1); - - if (verbose && res == PM3_SUCCESS) - PrintAndLogEx(SUCCESS, "CRC8-MAD1 (%s)", _GREEN_("ok")); - - if (MADVer == 2 && sector10) { - int res2 = madCRCCheck(sector10, true, 2); - if (res == PM3_SUCCESS) - res = res2; - - if (verbose && !res2) - PrintAndLogEx(SUCCESS, "CRC8-MAD2 (%s)", _GREEN_("ok")); - } - return res; } @@ -232,83 +247,78 @@ int MADDecode(uint8_t *sector0, uint8_t *sector10, uint16_t *mad, size_t *madlen return PM3_SUCCESS; } -static const char *holder_info_type[] = { - "Surname", - "Given name", - "Sex", - "Other" -}; - -int MADCardHolderInfoDecode(uint8_t *data, size_t dataLen, bool verbose) { +int MADCardHolderInfoDecode(uint8_t *data, size_t datalen, bool verbose) { size_t idx = 0; - while (idx < dataLen) { + while (idx < datalen) { uint8_t len = data[idx] & 0x3f; uint8_t type = data[idx] >> 6; idx++; if (len > 0) { - PrintAndLogEx(INFO, "%s: %.*s", holder_info_type[type], len, &data[idx]); + PrintAndLogEx(INFO, "%14s " _GREEN_("%.*s"), holder_info_type[type], len, &data[idx]); idx += len; - } else break; + } else { + break; + } } return PM3_SUCCESS; } -static int MADInfoByteDecode(uint8_t *sector, bool swapmad, int MADver, bool verbose) { - uint8_t InfoByte; - if (MADver == 1) { - InfoByte = sector[16 + 1] & 0x3f; - if (InfoByte >= 0xF) { - PrintAndLogEx(WARNING, "Invalid Info byte (MAD1) value " _YELLOW_("0x%02x"), InfoByte); +static int MADInfoByteDecode(uint8_t *sector, bool swapmad, int mad_ver, bool verbose) { + uint8_t info; + if (mad_ver == 1) { + info = sector[16 + 1] & 0x3f; + if (info >= 0xF) { + PrintAndLogEx(WARNING, "Invalid Info byte (MAD1) value " _YELLOW_("0x%02x"), info); if (verbose) // I understand the spec in a way that MAD1 InfoByte should not point into MAD2 sectors, @lukaskuzmiak - PrintAndLogEx(WARNING, "MAD1 Info byte points outside of MAD1 sector space (0x%02x), report a bug?", InfoByte); + PrintAndLogEx(WARNING, "MAD1 Info byte points outside of MAD1 sector space (0x%02x), report a bug?", info); return PM3_ESOFT; } } else { - InfoByte = sector[1] & 0x3f; - if (InfoByte == 0x10 || InfoByte >= 0x28) { - PrintAndLogEx(WARNING, "Invalid Info byte (MAD2) value " _YELLOW_("0x%02x"), InfoByte); + info = sector[1] & 0x3f; + if (info == 0x10 || info >= 0x28) { + PrintAndLogEx(WARNING, "Invalid Info byte (MAD2) value " _YELLOW_("0x%02x"), info); return PM3_ESOFT; } } - if (InfoByte) { - PrintAndLogEx(SUCCESS, "Card publisher sector: " _MAGENTA_("0x%02x"), InfoByte); - return InfoByte; - } else { - PrintAndLogEx(WARNING, "Card publisher not present " _YELLOW_("0x%02x"), InfoByte); - return PM3_ESOFT; + if (info) { + return info; } + return PM3_ESOFT; } -static const char *aid_admin[] = { - "free", - "defect", - "reserved", - "additional directory info", - "card holder info", - "not applicable" -}; - int MAD1DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose, bool *haveMAD2) { open_mad_file(&mad_known_aids, verbose); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "------------ " _CYAN_("MAD v1 details") " -------------"); + // check MAD1 only MADCheck(sector, NULL, verbose, haveMAD2); - int InfoByteSector = MADInfoByteDecode(sector, swapmad, 1, verbose); + int ibs = MADInfoByteDecode(sector, swapmad, 1, verbose); - PrintAndLogEx(INFO, " 00 MAD 1"); + if (ibs) { + PrintAndLogEx(SUCCESS, "Card publisher sector " _MAGENTA_("0x%02x"), ibs); + } else { + PrintAndLogEx(WARNING, "Card publisher " _RED_("not") " present " _YELLOW_("0x%02x"), ibs); + } + + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "---------------- " _CYAN_("Listing") " ----------------"); + + PrintAndLogEx(INFO, " 00 MAD v1"); uint32_t prev_aid = 0xFFFFFFFF; for (int i = 1; i < 16; i++) { uint16_t aid = madGetAID(sector, swapmad, 1, i); if (aid < 6) { - PrintAndLogEx(INFO, (InfoByteSector == i) ? _MAGENTA_(" %02d [%04X] (%s)") : " %02d [%04X] (%s)", i, aid, aid_admin[aid]); + PrintAndLogEx(INFO, (ibs == i) ? _MAGENTA_(" %02d [%04X] (%s)") : " %02d [%04X] (%s)", i, aid, aid_admin[aid]); } else if (prev_aid == aid) { - PrintAndLogEx(INFO, (InfoByteSector == i) ? _MAGENTA_(" %02d [%04X] (continuation)") : " %02d [%04X] (continuation)", i, aid); + PrintAndLogEx(INFO, (ibs == i) ? _MAGENTA_(" %02d [%04X] (continuation)") : " %02d [%04X] (continuation)", i, aid); } else { char fmt[30]; - sprintf(fmt, (InfoByteSector == i) ? _MAGENTA_(" %02d [%04X]%s") : " %02d [%04X]%s", i, aid, "%s"); + sprintf(fmt, (ibs == i) ? _MAGENTA_(" %02d [%04X]%s") : " %02d [%04X]%s", i, aid, "%s"); print_aid_description(mad_known_aids, aid, fmt, verbose); prev_aid = aid; } @@ -319,28 +329,38 @@ int MAD1DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose, bool *haveMA int MAD2DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose) { open_mad_file(&mad_known_aids, verbose); - PrintAndLogEx(INFO, " 16 MAD 2"); + + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "------------ " _CYAN_("MAD v2 details") " -------------"); + + PrintAndLogEx(INFO, " 16 MAD v2"); int res = madCRCCheck(sector, true, 2); if (verbose) { if (res == PM3_SUCCESS) - PrintAndLogEx(SUCCESS, "CRC8-MAD2 (%s)", _GREEN_("ok")); + PrintAndLogEx(SUCCESS, "CRC8 (%s)", _GREEN_("ok")); else - PrintAndLogEx(WARNING, "CRC8-MAD2 (%s)", _RED_("fail")); + PrintAndLogEx(WARNING, "CRC8 (%s)", _RED_("fail")); + } + + int ibs = MADInfoByteDecode(sector, swapmad, 2, verbose); + if (ibs) { + PrintAndLogEx(SUCCESS, "Card publisher sector " _MAGENTA_("0x%02x"), ibs); + } else { + PrintAndLogEx(WARNING, "Card publisher " _RED_("not") " present " _YELLOW_("0x%02x"), ibs); } - int InfoByteSector = MADInfoByteDecode(sector, swapmad, 2, verbose); uint32_t prev_aid = 0xFFFFFFFF; for (int i = 1; i < 8 + 8 + 7 + 1; i++) { uint16_t aid = madGetAID(sector, swapmad, 2, i); if (aid < 6) { - PrintAndLogEx(INFO, (InfoByteSector == i) ? _MAGENTA_(" %02d [%04X] (%s)") : " %02d [%04X] (%s)", i + 16, aid, aid_admin[aid]); + PrintAndLogEx(INFO, (ibs == i) ? _MAGENTA_(" %02d [%04X] (%s)") : " %02d [%04X] (%s)", i + 16, aid, aid_admin[aid]); } else if (prev_aid == aid) { - PrintAndLogEx(INFO, (InfoByteSector == i) ? _MAGENTA_(" %02d [%04X] (continuation)") : " %02d [%04X] (continuation)", i + 16, aid); + PrintAndLogEx(INFO, (ibs == i) ? _MAGENTA_(" %02d [%04X] (continuation)") : " %02d [%04X] (continuation)", i + 16, aid); } else { char fmt[30]; - sprintf(fmt, (InfoByteSector == i) ? _MAGENTA_(" %02d [%04X]%s") : " %02d [%04X]%s", i + 16, aid, "%s"); + sprintf(fmt, (ibs == i) ? _MAGENTA_(" %02d [%04X]%s") : " %02d [%04X]%s", i + 16, aid, "%s"); print_aid_description(mad_known_aids, aid, fmt, verbose); prev_aid = aid; } diff --git a/client/src/mifare/ndef.c b/client/src/mifare/ndef.c index 58b9b0a25..2aab01634 100644 --- a/client/src/mifare/ndef.c +++ b/client/src/mifare/ndef.c @@ -437,7 +437,7 @@ int NDEFDecodeAndPrint(uint8_t *ndef, size_t ndefLen, bool verbose) { size_t indx = 0; PrintAndLogEx(INFO, ""); - PrintAndLogEx(INFO, "NDEF parsing"); + PrintAndLogEx(INFO, "--- " _CYAN_("NDEF parsing") " ----------------"); while (indx < ndefLen) { PrintAndLogEx(INFO, "-----------------------------------------------------"); From 8ccc592ca07ede0cc9835c2aa1885f28b0508376 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Wed, 10 Jun 2020 14:02:14 +0200 Subject: [PATCH 393/527] mf ndef examples 03e1 -> e103 --- client/src/cmdhfmf.c | 8 ++++---- client/src/cmdhfmfp.c | 10 +++++----- 2 files changed, 9 insertions(+), 9 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index ea09db66c..1050992f0 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4491,9 +4491,9 @@ static int CmdHF14AMfMAD(const char *Cmd) { CLIParserInit(&ctx, "hf mf mad", "Checks and prints Mifare Application Directory (MAD)", "Usage:\n" - "\thf mf mad -> shows MAD if exists\n" - "\thf mf mad --aid 03e1 -k ffffffffffff -b -> shows NDEF data if exists. read card with custom key and key B\n" - "\thf mf mad --dch -k ffffffffffff -> decode CardHolder information\n"); + "\thf mf mad -> shows MAD if exists\n" + "\thf mf mad --aid e103 -k ffffffffffff -b -> shows NDEF data if exists. read card with custom key and key B\n" + "\thf mf mad --dch -k ffffffffffff -> decode CardHolder information\n"); void *argtable[] = { arg_param_begin, @@ -4634,7 +4634,7 @@ static int CmdHFMFNDEF(const char *Cmd) { "Prints NFC Data Exchange Format (NDEF)", "Usage:\n\thf mf ndef -> shows NDEF parsed data\n" "\thf mf ndef -vv -> shows NDEF parsed and raw data\n" - "\thf mf ndef --aid 03e1 -k ffffffffffff -b -> shows NDEF data with custom AID, key and with key B\n"); + "\thf mf ndef --aid e103 -k ffffffffffff -b -> shows NDEF data with custom AID, key and with key B\n"); void *argtable[] = { arg_param_begin, diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 6b330878c..7fc0f0bf7 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1288,8 +1288,8 @@ static int CmdHFMFPMAD(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "hf mfp mad", "Checks and prints Mifare Application Directory (MAD)", - "Usage:\n\thf mfp mad -> shows MAD if exists\n" - "\thf mfp mad -a 03e1 -k d3f7d3f7d3f7d3f7d3f7d3f7d3f7d3f7 -> shows NDEF data if exists\n"); + "Usage:\n\thf mfp mad -> shows MAD if exists\n" + "\thf mfp mad -a e103 -k d3f7d3f7d3f7d3f7d3f7d3f7d3f7d3f7 -> shows NDEF data if exists\n"); void *argtable[] = { arg_param_begin, @@ -1429,9 +1429,9 @@ static int CmdHFMFPNDEF(const char *Cmd) { CLIParserInit(&ctx, "hf mfp ndef", "Prints NFC Data Exchange Format (NDEF)", "Usage:\n" - "\thf mfp ndef -> shows NDEF data\n" - "\thf mfp ndef -vv -> shows NDEF parsed and raw data\n" - "\thf mfp ndef -a 03e1 -k d3f7d3f7d3f7d3f7d3f7d3f7d3f7d3f7 -> shows NDEF data with custom AID and key\n"); + "\thf mfp ndef -> shows NDEF data\n" + "\thf mfp ndef -vv -> shows NDEF parsed and raw data\n" + "\thf mfp ndef -a e103 -k d3f7d3f7d3f7d3f7d3f7d3f7d3f7d3f7 -> shows NDEF data with custom AID and key\n"); void *argtable[] = { arg_param_begin, From cba76ca1674dc20a1b8704c48e4e4f6bfe613a9f Mon Sep 17 00:00:00 2001 From: slurdge <slurdge@slurdge.org> Date: Wed, 10 Jun 2020 14:06:45 +0200 Subject: [PATCH 394/527] Fix stacksize & make common area size a variable --- common_arm/ldscript.common | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/common_arm/ldscript.common b/common_arm/ldscript.common index c94d0dcff..8400f740a 100644 --- a/common_arm/ldscript.common +++ b/common_arm/ldscript.common @@ -10,6 +10,7 @@ ms of the GNU GPL, version 2 or, */ stacksize = DEFINED(stacksize) ? stacksize : 4K; +commonareasize = 0x20; /* AT91SAM7S256 has 256k Flash and 64k RAM */ /* AT91SAM7S512 has 512k Flash and 64k RAM */ @@ -17,12 +18,12 @@ stacksize = DEFINED(stacksize) ? stacksize : 4K; /* osimage space = (512k - 0x2000 == 524288 - 8192 == 516096bytes == 0x7E000 ) */ MEMORY { - bootphase1 : ORIGIN = 0x00100000, LENGTH = 0x200 /* Phase 1 bootloader: Copies real bootloader to RAM */ - bootphase2 : ORIGIN = 0x00100200, LENGTH = 0x2000 - 0x200 /* Main bootloader code, stored in Flash, executed from RAM */ - osimage : ORIGIN = 0x00102000, LENGTH = 512K - 0x2000 /* Place where the main OS will end up */ - ram : ORIGIN = 0x00200000, LENGTH = 64K - 0x20 /* RAM, minus small common area */ - stack : ORIGIN = 0x00200000 + 64K - 4K - 0x20, LENGTH = stacksize /* Stack */ - commonarea : ORIGIN = 0x00200000 + 64K - 0x20, LENGTH = 0x20 /* Communication between bootloader and main OS */ + bootphase1 : ORIGIN = 0x00100000, LENGTH = 0x200 /* Phase 1 bootloader: Copies real bootloader to RAM */ + bootphase2 : ORIGIN = 0x00100200, LENGTH = 0x2000 - 0x200 /* Main bootloader code, stored in Flash, executed from RAM */ + osimage : ORIGIN = 0x00102000, LENGTH = 512K - 0x2000 /* Place where the main OS will end up */ + ram : ORIGIN = 0x00200000, LENGTH = 64K - commonareasize /* RAM, minus small common area */ + stack : ORIGIN = 0x00200000 + 64K - stacksize - commonareasize, LENGTH = stacksize /* Stack */ + commonarea : ORIGIN = 0x00200000 + 64K - commonareasize, LENGTH = commonareasize /* Communication between bootloader and main OS */ } /* Export some information that can be used from within the firmware */ From df4bdc89ea9499e2ac0d2389e17ec546d62f0bf3 Mon Sep 17 00:00:00 2001 From: slurdge <slurdge@slurdge.org> Date: Wed, 10 Jun 2020 19:06:40 +0200 Subject: [PATCH 395/527] Fix BIGBUF_SIZE used in #WITH_FLASH --- armsrc/mifarecmd.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/mifarecmd.c b/armsrc/mifarecmd.c index ef1a15864..9e19cbc53 100644 --- a/armsrc/mifarecmd.c +++ b/armsrc/mifarecmd.c @@ -1392,7 +1392,7 @@ void MifareChkKeys_fast(uint32_t arg0, uint32_t arg1, uint32_t arg2, uint8_t *da // limit size of availlable for keys in bigbuff // a key is 6bytes - uint16_t key_mem_available = MIN(BIGBUF_SIZE, keyCount * 6); + uint16_t key_mem_available = MIN(BigBuf_get_size(), keyCount * 6); keyCount = key_mem_available / 6; From 6f1c074801782e7c9b82ee899c447a8926d81e90 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 10 Jun 2020 22:47:47 +0200 Subject: [PATCH 396/527] textual --- client/src/cmdlfem4x.c | 76 ++++++++++++++++++++++-------------------- 1 file changed, 39 insertions(+), 37 deletions(-) diff --git a/client/src/cmdlfem4x.c b/client/src/cmdlfem4x.c index 2f003c8d5..ebb3fe2e4 100644 --- a/client/src/cmdlfem4x.c +++ b/client/src/cmdlfem4x.c @@ -931,11 +931,11 @@ int EM4x50Read(const char *Cmd, bool verbose) { // report back if (verbose || g_debugMode) { if (start >= 0) { - PrintAndLogEx(NORMAL, "\nNote: one block = 50 bits (32 data, 12 parity, 6 marker)"); + PrintAndLogEx(INFO, "\nNote: one block = 50 bits (32 data, 12 parity, 6 marker)"); } else { - PrintAndLogEx(NORMAL, "No data found!, clock tried: " _YELLOW_("%d"), clk); - PrintAndLogEx(NORMAL, "Try again with more samples."); - PrintAndLogEx(NORMAL, " or after a " _YELLOW_("'data askedge'") " command to clean up the read"); + PrintAndLogEx(INFO, "No data found!, clock tried: " _YELLOW_("%d"), clk); + PrintAndLogEx(HINT, "Try again with more samples"); + PrintAndLogEx(HINT, " or after a " _YELLOW_("'data askedge'") " command to clean up the read"); return PM3_ESOFT; } } else if (start < 0) { @@ -1002,20 +1002,22 @@ int EM4x50Read(const char *Cmd, bool verbose) { //print full code: if (verbose || g_debugMode || AllPTest) { if (!complete) { - PrintAndLogEx(NORMAL, _RED_("* **Warning!")); - PrintAndLogEx(NORMAL, "Partial data - no end found!"); - PrintAndLogEx(NORMAL, "Try again with more samples."); + PrintAndLogEx(WARNING, _RED_("* **Warning!")); + PrintAndLogEx(INFO, "Partial data - no end found!"); + PrintAndLogEx(HINT, "Try again with more samples."); } - PrintAndLogEx(NORMAL, "Found data at sample: %i - using clock: %i", start, clk); + PrintAndLogEx(INFO, "Found data at sample: %i - using clock: %i", start, clk); end = block; + PrintAndLogEx(INFO, "blk | data"); + PrintAndLogEx(INFO, "----+--------------"); for (block = 0; block < end; block++) { - PrintAndLogEx(NORMAL, "Block %d: %08x", block, Code[block]); + PrintAndLogEx(INFO, "%03d | %08x", block, Code[block]); } - - PrintAndLogEx(NORMAL, "Parities checks | %s", (AllPTest) ? _GREEN_("Passed") : _RED_("Fail")); + PrintAndLogEx(INFO, "----+--------------"); + PrintAndLogEx( (AllPTest) ? SUCCESS : WARNING, "Parities checks | %s", (AllPTest) ? _GREEN_("Passed") : _RED_("Fail")); if (AllPTest == false) { - PrintAndLogEx(NORMAL, "Try cleaning the read samples with " _YELLOW_("'data askedge'")); + PrintAndLogEx(HINT, "Try cleaning the read samples with " _YELLOW_("'data askedge'")); } } @@ -1607,21 +1609,21 @@ static void printEM4x05config(uint32_t wordData) { uint8_t disable = (wordData & EM4x05_DISABLE_ALLOWED) >> 23; uint8_t rtf = (wordData & EM4x05_READER_TALK_FIRST) >> 24; uint8_t pigeon = (wordData & (1 << 26)) >> 26; - PrintAndLogEx(NORMAL, "ConfigWord: %08X (Word 4)\n", wordData); - PrintAndLogEx(NORMAL, "Config Breakdown:"); - PrintAndLogEx(NORMAL, " Data Rate: %02u | "_YELLOW_("RF/%u"), wordData & 0x3F, datarate); - PrintAndLogEx(NORMAL, " Encoder: %u | " _YELLOW_("%s"), encoder, enc); - PrintAndLogEx(NORMAL, " PSK CF: %u | %s", PSKcf, cf); - PrintAndLogEx(NORMAL, " Delay: %u | %s", delay, cdelay); - PrintAndLogEx(NORMAL, " LastWordR: %02u | Address of last word for default read - meaning %u blocks are output", LWR, numblks); - PrintAndLogEx(NORMAL, " ReadLogin: %u | Read login is %s", readLogin, readLogin ? _YELLOW_("required") : _GREEN_("not required")); - PrintAndLogEx(NORMAL, " ReadHKL: %u | Read housekeeping words login is %s", readHKL, readHKL ? _YELLOW_("required") : _GREEN_("not required")); - PrintAndLogEx(NORMAL, "WriteLogin: %u | Write login is %s", writeLogin, writeLogin ? _YELLOW_("required") : _GREEN_("not required")); - PrintAndLogEx(NORMAL, " WriteHKL: %u | Write housekeeping words login is %s", writeHKL, writeHKL ? _YELLOW_("required") : _GREEN_("not Required")); - PrintAndLogEx(NORMAL, " R.A.W.: %u | Read after write is %s", raw, raw ? "on" : "off"); - PrintAndLogEx(NORMAL, " Disable: %u | Disable command is %s", disable, disable ? "accepted" : "not accepted"); - PrintAndLogEx(NORMAL, " R.T.F.: %u | Reader talk first is %s", rtf, rtf ? _YELLOW_("enabled") : "disabled"); - PrintAndLogEx(NORMAL, " Pigeon: %u | Pigeon mode is %s\n", pigeon, pigeon ? _YELLOW_("enabled") : "disabled"); + PrintAndLogEx(INFO, "ConfigWord: %08X (Word 4)\n", wordData); + PrintAndLogEx(INFO, "Config Breakdown:"); + PrintAndLogEx(INFO, " Data Rate: %02u | "_YELLOW_("RF/%u"), wordData & 0x3F, datarate); + PrintAndLogEx(INFO, " Encoder: %u | " _YELLOW_("%s"), encoder, enc); + PrintAndLogEx(INFO, " PSK CF: %u | %s", PSKcf, cf); + PrintAndLogEx(INFO, " Delay: %u | %s", delay, cdelay); + PrintAndLogEx(INFO, " LastWordR: %02u | Address of last word for default read - meaning %u blocks are output", LWR, numblks); + PrintAndLogEx(INFO, " ReadLogin: %u | Read login is %s", readLogin, readLogin ? _YELLOW_("required") : _GREEN_("not required")); + PrintAndLogEx(INFO, " ReadHKL: %u | Read housekeeping words login is %s", readHKL, readHKL ? _YELLOW_("required") : _GREEN_("not required")); + PrintAndLogEx(INFO, "WriteLogin: %u | Write login is %s", writeLogin, writeLogin ? _YELLOW_("required") : _GREEN_("not required")); + PrintAndLogEx(INFO, " WriteHKL: %u | Write housekeeping words login is %s", writeHKL, writeHKL ? _YELLOW_("required") : _GREEN_("not Required")); + PrintAndLogEx(INFO, " R.A.W.: %u | Read after write is %s", raw, raw ? "on" : "off"); + PrintAndLogEx(INFO, " Disable: %u | Disable command is %s", disable, disable ? "accepted" : "not accepted"); + PrintAndLogEx(INFO, " R.T.F.: %u | Reader talk first is %s", rtf, rtf ? _YELLOW_("enabled") : "disabled"); + PrintAndLogEx(INFO, " Pigeon: %u | Pigeon mode is %s\n", pigeon, pigeon ? _YELLOW_("enabled") : "disabled"); } static void printEM4x05info(uint32_t block0, uint32_t serial) { @@ -1650,36 +1652,36 @@ static void printEM4x05info(uint32_t block0, uint32_t serial) { snprintf(ctstr + strlen(ctstr), sizeof(ctstr) - strlen(ctstr), _YELLOW_("%s"), "Unknown"); break; } - PrintAndLogEx(NORMAL, "%s", ctstr); + PrintAndLogEx(SUCCESS, "%s", ctstr); switch (cap) { case 3: - PrintAndLogEx(NORMAL, " Cap Type: %u | 330pF", cap); + PrintAndLogEx(SUCCESS, " Cap Type: %u | 330pF", cap); break; case 2: - PrintAndLogEx(NORMAL, " Cap Type: %u | %spF", cap, (chipType == 2) ? "75" : "210"); + PrintAndLogEx(SUCCESS, " Cap Type: %u | %spF", cap, (chipType == 2) ? "75" : "210"); break; case 1: - PrintAndLogEx(NORMAL, " Cap Type: %u | 250pF", cap); + PrintAndLogEx(SUCCESS, " Cap Type: %u | 250pF", cap); break; case 0: - PrintAndLogEx(NORMAL, " Cap Type: %u | no resonant capacitor", cap); + PrintAndLogEx(SUCCESS, " Cap Type: %u | no resonant capacitor", cap); break; default: - PrintAndLogEx(NORMAL, " Cap Type: %u | unknown", cap); + PrintAndLogEx(SUCCESS, " Cap Type: %u | unknown", cap); break; } - PrintAndLogEx(NORMAL, " Cust Code: %03u | %s", custCode, (custCode == 0x200) ? "Default" : "Unknown"); + PrintAndLogEx(SUCCESS, " Cust Code: %03u | %s", custCode, (custCode == 0x200) ? "Default" : "Unknown"); if (serial != 0) - PrintAndLogEx(NORMAL, "\n Serial #: " _YELLOW_("%08X") "\n", serial); + PrintAndLogEx(SUCCESS, "\n Serial #: " _YELLOW_("%08X"), serial); } static void printEM4x05ProtectionBits(uint32_t word) { for (uint8_t i = 0; i < 15; i++) { - PrintAndLogEx(NORMAL, " Word: %02u | %s", i, (((1 << i) & word) || i < 2) ? _RED_("write Locked") : "unlocked"); + PrintAndLogEx(INFO, " Word: %02u | %s", i, (((1 << i) & word) || i < 2) ? _RED_("write Locked") : "unlocked"); if (i == 14) - PrintAndLogEx(NORMAL, " Word: %02u | %s", i + 1, (((1 << i) & word) || i < 2) ? _RED_("write locked") : "unlocked"); + PrintAndLogEx(INFO, " Word: %02u | %s", i + 1, (((1 << i) & word) || i < 2) ? _RED_("write locked") : "unlocked"); } } From c11c7ab54533aae7f2640225b8137b7f8ba45de2 Mon Sep 17 00:00:00 2001 From: slurdge <slurdge@slurdge.org> Date: Wed, 10 Jun 2020 23:03:03 +0200 Subject: [PATCH 397/527] Add support for client getting bigbufsize --- armsrc/appmain.c | 9 +++++++++ client/src/cmddata.c | 14 ++++++++------ client/src/cmddata.h | 1 - client/src/cmdlft55xx.c | 2 +- include/pm3_cmd.h | 3 ++- 5 files changed, 20 insertions(+), 9 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 96f133f49..7ba6158c7 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -392,6 +392,7 @@ static void SendCapabilities(void) { capabilities.version = CAPABILITIES_VERSION; capabilities.via_fpc = g_reply_via_fpc; capabilities.via_usb = g_reply_via_usb; + capabilities.bigbuf_size = BigBuf_get_size(); capabilities.baudrate = 0; // no real baudrate for USB-CDC #ifdef WITH_FPC_USART if (g_reply_via_fpc) @@ -2051,11 +2052,15 @@ static void PacketReceived(PacketCommandNG *packet) { } } +extern uint32_t _stack_start; + void __attribute__((noreturn)) AppMain(void) { SpinDelay(100); BigBuf_initialize(); + _stack_start = 0xdeadbeef; + if (common_area.magic != COMMON_AREA_MAGIC || common_area.version != 1) { /* Initialize common area */ memset(&common_area, 0, sizeof(common_area)); @@ -2121,6 +2126,10 @@ void __attribute__((noreturn)) AppMain(void) { for (;;) { WDT_HIT(); + if (_stack_start != 0xdeadbeef) { + Dbprintf("Stack overflow detected! Please increase stack size."); + } + // Check if there is a packet available PacketCommandNG rx; memset(&rx.data, 0, sizeof(rx.data)); diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 326e0d457..99908d1ea 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -567,7 +567,7 @@ int ASKDemod_ext(const char *Cmd, bool verbose, bool emSearch, uint8_t askType, sscanf(Cmd, "%i %i %i %zu %c", &clk, &invert, &maxErr, &maxLen, &); - if (!maxLen) maxLen = BIGBUF_SIZE; + if (!maxLen) maxLen = pm3_capabilities.bigbuf_size; if (invert != 0 && invert != 1) { PrintAndLogEx(WARNING, "Invalid argument: %s", Cmd); @@ -1517,16 +1517,18 @@ static int CmdHexsamples(const char *Cmd) { uint32_t offset = 0; char string_buf[25]; char *string_ptr = string_buf; - uint8_t got[BIGBUF_SIZE]; + uint8_t got[512*1024]; sscanf(Cmd, "%u %u", &requested, &offset); /* if no args send something */ if (requested == 0) requested = 8; + if (requested > pm3_capabilities.bigbuf_size) + requested = pm3_capabilities.bigbuf_size; if (offset + requested > sizeof(got)) { - PrintAndLogEx(NORMAL, "Tried to read past end of buffer, <bytes> + <offset> > %d", BIGBUF_SIZE); + PrintAndLogEx(NORMAL, "Tried to read past end of buffer, <bytes> + <offset> > %d", pm3_capabilities.bigbuf_size); return PM3_EINVARG; } @@ -1595,10 +1597,10 @@ int getSamples(uint32_t n, bool verbose) { // we don't have to worry about remaining trash // in the last byte in case the bits-per-sample // does not line up on byte boundaries - uint8_t got[BIGBUF_SIZE - 1] = { 0 }; + uint8_t got[512*1024] = { 0 }; - if (n == 0 || n > sizeof(got)) - n = sizeof(got); + if (n == 0 || n > pm3_capabilities.bigbuf_size) + n = pm3_capabilities.bigbuf_size; if (verbose) PrintAndLogEx(INFO, "Reading " _YELLOW_("%u") " bytes from device memory", n); diff --git a/client/src/cmddata.h b/client/src/cmddata.h index a7a69e430..abef8fde8 100644 --- a/client/src/cmddata.h +++ b/client/src/cmddata.h @@ -79,7 +79,6 @@ int AskEdgeDetect(const int *in, int *out, int len, int threshold); int demodIdteck(void); #define MAX_DEMOD_BUF_LEN (1024*128) -#define BIGBUF_SIZE 40000 extern uint8_t DemodBuffer[MAX_DEMOD_BUF_LEN]; extern size_t DemodBufferLen; diff --git a/client/src/cmdlft55xx.c b/client/src/cmdlft55xx.c index 6294ffef6..b2f048665 100644 --- a/client/src/cmdlft55xx.c +++ b/client/src/cmdlft55xx.c @@ -2837,7 +2837,7 @@ static int CmdResetRead(const char *Cmd) { if (resp.status == PM3_SUCCESS) { - uint16_t gotsize = BIGBUF_SIZE - 1; + uint16_t gotsize = pm3_capabilities.bigbuf_size - 1; uint8_t *got = calloc(gotsize, sizeof(uint8_t)); if (got == NULL) { PrintAndLogEx(WARNING, "failed to allocate memory"); diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index b6de6f292..3cafb9df1 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -175,6 +175,7 @@ typedef struct { typedef struct { uint8_t version; uint32_t baudrate; + uint32_t bigbuf_size; bool via_fpc : 1; bool via_usb : 1; // rdv4 @@ -203,7 +204,7 @@ typedef struct { bool hw_available_flash : 1; bool hw_available_smartcard : 1; } PACKED capabilities_t; -#define CAPABILITIES_VERSION 4 +#define CAPABILITIES_VERSION 5 extern capabilities_t pm3_capabilities; // For CMD_LF_T55XX_WRITEBL From 3b757a627bed6dfab479651c438fd93099decd4e Mon Sep 17 00:00:00 2001 From: slurdge <slurdge@slurdge.org> Date: Wed, 10 Jun 2020 23:03:17 +0200 Subject: [PATCH 398/527] Increase stack to 5KiB --- common_arm/ldscript.common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common_arm/ldscript.common b/common_arm/ldscript.common index 8400f740a..9e53d8436 100644 --- a/common_arm/ldscript.common +++ b/common_arm/ldscript.common @@ -9,7 +9,7 @@ ms of the GNU GPL, version 2 or, ----------------------------------------------------------------------------- */ -stacksize = DEFINED(stacksize) ? stacksize : 4K; +stacksize = DEFINED(stacksize) ? stacksize : 5K; commonareasize = 0x20; /* AT91SAM7S256 has 256k Flash and 64k RAM */ From edff230d551236e7341a8f3aebc8aca8e5358714 Mon Sep 17 00:00:00 2001 From: Lukas Kuzmiak <lukash@backstep.net> Date: Wed, 10 Jun 2020 14:59:53 -0700 Subject: [PATCH 399/527] fix a bug in MADInfoByteDecode (did not return 0x00), textual fixes --- client/src/mifare/mad.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index 96ac4f1d1..9a8e20353 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -148,7 +148,7 @@ static int madCRCCheck(uint8_t *sector, bool verbose, int MADver) { } else { uint8_t crc = CRC8Mad(§or[1], 15 + 16 + 16); if (crc != sector[0]) { - PrintAndLogEx(WARNING, _RED_("Wrong MAD %d CRC") " calculated: 0x%02x != 0x%02x", MADver, crc, sector[16]); + PrintAndLogEx(WARNING, _RED_("Wrong MAD %d CRC") " calculated: 0x%02x != 0x%02x", MADver, crc, sector[0]); return PM3_ESOFT; }; } @@ -282,10 +282,7 @@ static int MADInfoByteDecode(uint8_t *sector, bool swapmad, int mad_ver, bool ve } } - if (info) { - return info; - } - return PM3_ESOFT; + return info; } int MAD1DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose, bool *haveMAD2) { @@ -333,8 +330,6 @@ int MAD2DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "------------ " _CYAN_("MAD v2 details") " -------------"); - PrintAndLogEx(INFO, " 16 MAD v2"); - int res = madCRCCheck(sector, true, 2); if (verbose) { if (res == PM3_SUCCESS) @@ -350,6 +345,10 @@ int MAD2DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose) { PrintAndLogEx(WARNING, "Card publisher " _RED_("not") " present " _YELLOW_("0x%02x"), ibs); } + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "---------------- " _CYAN_("Listing") " ----------------"); + + PrintAndLogEx(INFO, " 16 MAD v2"); uint32_t prev_aid = 0xFFFFFFFF; for (int i = 1; i < 8 + 8 + 7 + 1; i++) { From 73b6138f7f53d441bc18c538e8587de425a3165d Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 11 Jun 2020 01:18:50 +0200 Subject: [PATCH 400/527] cmddata: Adjust bigbuf size on client side as before but fix 1b overflow --- client/src/cmddata.c | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 99908d1ea..007c32c8a 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -1517,7 +1517,7 @@ static int CmdHexsamples(const char *Cmd) { uint32_t offset = 0; char string_buf[25]; char *string_ptr = string_buf; - uint8_t got[512*1024]; + uint8_t got[pm3_capabilities.bigbuf_size]; sscanf(Cmd, "%u %u", &requested, &offset); @@ -1597,10 +1597,11 @@ int getSamples(uint32_t n, bool verbose) { // we don't have to worry about remaining trash // in the last byte in case the bits-per-sample // does not line up on byte boundaries - uint8_t got[512*1024] = { 0 }; + uint8_t got[pm3_capabilities.bigbuf_size - 1]; + memset(got, 0x00, sizeof(got)); - if (n == 0 || n > pm3_capabilities.bigbuf_size) - n = pm3_capabilities.bigbuf_size; + if (n == 0 || n > pm3_capabilities.bigbuf_size - 1) + n = pm3_capabilities.bigbuf_size - 1; if (verbose) PrintAndLogEx(INFO, "Reading " _YELLOW_("%u") " bytes from device memory", n); From 35857f535d42b8e42f40675abea1de31e5ff16aa Mon Sep 17 00:00:00 2001 From: slurdge <slurdge@slurdge.org> Date: Thu, 11 Jun 2020 11:14:53 +0200 Subject: [PATCH 401/527] Compute the max usage --- armsrc/appmain.c | 16 ++++++++++++---- 1 file changed, 12 insertions(+), 4 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 7ba6158c7..b9225bed5 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -71,6 +71,8 @@ uint8_t ToSend[TOSEND_BUFFER_SIZE]; int ToSendMax = -1; +extern uint32_t _stack_start, _stack_end; + static int ToSendBit; struct common_area common_area __attribute__((section(".commonarea"))); @@ -359,6 +361,12 @@ static void SendStatus(void) { #endif printConnSpeed(); DbpString(_BLUE_("Various")); + for (uint32_t *p = &_stack_start; ; ++p) { + if (*p != 0xdeadbeef) { + Dbprintf(" Max stack usage.........%d", (&_stack_end - p)*4); + break; + } + } Dbprintf(" DBGLEVEL................%d", DBGLEVEL); Dbprintf(" ToSendMax...............%d", ToSendMax); Dbprintf(" ToSendBit...............%d", ToSendBit); @@ -2052,15 +2060,15 @@ static void PacketReceived(PacketCommandNG *packet) { } } -extern uint32_t _stack_start; - void __attribute__((noreturn)) AppMain(void) { SpinDelay(100); BigBuf_initialize(); - _stack_start = 0xdeadbeef; - + for (uint32_t * p = &_stack_start; p < (&_stack_end) - 0x80; ++p) { + *p = 0xdeadbeef; + } + if (common_area.magic != COMMON_AREA_MAGIC || common_area.version != 1) { /* Initialize common area */ memset(&common_area, 0, sizeof(common_area)); From 53c5456f7ac7607b4eff516d559f8aae013608c8 Mon Sep 17 00:00:00 2001 From: slurdge <slurdge@slurdge.org> Date: Thu, 11 Jun 2020 11:35:15 +0200 Subject: [PATCH 402/527] Fix ptr arithmetic hopefully --- armsrc/appmain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index b9225bed5..a4b5fc6a7 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -2065,7 +2065,7 @@ void __attribute__((noreturn)) AppMain(void) { SpinDelay(100); BigBuf_initialize(); - for (uint32_t * p = &_stack_start; p < (&_stack_end) - 0x80; ++p) { + for (uint32_t * p = &_stack_start; p < ((uint32_t *)(uintptr_t)&_stack_end) - 0x80; ++p) { *p = 0xdeadbeef; } From 05ed3f7018207b350887f7a4ce17a558e994fdad Mon Sep 17 00:00:00 2001 From: slurdge <slurdge@slurdge.org> Date: Thu, 11 Jun 2020 12:12:20 +0200 Subject: [PATCH 403/527] Second try to fix appveyor --- armsrc/appmain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index a4b5fc6a7..28e2d9625 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -2065,7 +2065,7 @@ void __attribute__((noreturn)) AppMain(void) { SpinDelay(100); BigBuf_initialize(); - for (uint32_t * p = &_stack_start; p < ((uint32_t *)(uintptr_t)&_stack_end) - 0x80; ++p) { + for (uint32_t * p = &_stack_start; p < (uint32_t *)((uintptr_t)&_stack_end - 0x200); ++p) { *p = 0xdeadbeef; } From 54cbaf5b879e150ca3bd721746085bfac9944c75 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 11 Jun 2020 13:24:55 +0200 Subject: [PATCH 404/527] textual --- armsrc/appmain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 28e2d9625..9897cefc1 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -363,7 +363,7 @@ static void SendStatus(void) { DbpString(_BLUE_("Various")); for (uint32_t *p = &_stack_start; ; ++p) { if (*p != 0xdeadbeef) { - Dbprintf(" Max stack usage.........%d", (&_stack_end - p)*4); + Dbprintf(" Max stack usage so far..%d", (&_stack_end - p)*4); break; } } From 688d3388ba1a4ec38a5eb030aa5de896a9fb9401 Mon Sep 17 00:00:00 2001 From: slurdge <slurdge@users.noreply.github.com> Date: Thu, 11 Jun 2020 13:55:34 +0200 Subject: [PATCH 405/527] Add stack size to CHANGELOG --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4c4ec4c2c..3975e12cb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fix stack size and automatically use available space for BigBuf. Stack is now 5K (@slurdge) - Added Mifare MAD Card Holder Information decoding (@lukaskuzmiak) - Change Better precision for HF and LF voltage measurements and Add theremin.py script (@rosco) - Added Mifare MAD Info Byte decoding. Easier to identify Card Publisher (@lukaskuzmiak) From 5f148bb8353533fadeb1ac11a844faacd9e79122 Mon Sep 17 00:00:00 2001 From: slurdge <slurdge@slurdge.org> Date: Thu, 11 Jun 2020 16:21:27 +0200 Subject: [PATCH 406/527] Happy colors for messages coming from pm3 --- client/src/comms.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/src/comms.c b/client/src/comms.c index d67fccc11..9763504d4 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -289,7 +289,7 @@ static void PacketResponseReceived(PacketResponseNG *packet) { } if (flag & FLAG_LOG) { - PrintAndLogEx(NORMAL, "#db# %s", s); + PrintAndLogEx(NORMAL, "[" _MAGENTA_("pm3") "] ["_BLUE_("#")"] " "%s", s); } else { if (flag & FLAG_INPLACE) printf("\r"); @@ -303,7 +303,7 @@ static void PacketResponseReceived(PacketResponseNG *packet) { } case CMD_DEBUG_PRINT_INTEGERS: { if (! packet->ng) - PrintAndLogEx(NORMAL, "#db# %" PRIx64 ", %" PRIx64 ", %" PRIx64 "", packet->oldarg[0], packet->oldarg[1], packet->oldarg[2]); + PrintAndLogEx(NORMAL, "[" _MAGENTA_("pm3") "] ["_BLUE_("#")"] " "%" PRIx64 ", %" PRIx64 ", %" PRIx64 "", packet->oldarg[0], packet->oldarg[1], packet->oldarg[2]); break; } // iceman: hw status - down the path on device, runs printusbspeed which starts sending a lot of From 3832cf26fd24492a076380ed6297786f24405e0b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 11 Jun 2020 19:20:59 +0200 Subject: [PATCH 407/527] color --- armsrc/BigBuf.c | 4 ++-- armsrc/appmain.c | 6 +++--- armsrc/flashmem.c | 4 ++-- armsrc/fpgaloader.c | 2 +- armsrc/i2c.c | 40 +++++++++++++++++++++++++--------------- armsrc/lfops.c | 2 +- armsrc/lfsampling.c | 2 +- armsrc/spiffs.c | 6 +++--- 8 files changed, 38 insertions(+), 28 deletions(-) diff --git a/armsrc/BigBuf.c b/armsrc/BigBuf.c index 20e2e3e2d..6d272f571 100644 --- a/armsrc/BigBuf.c +++ b/armsrc/BigBuf.c @@ -114,10 +114,10 @@ void BigBuf_free_keep_EM(void) { } void BigBuf_print_status(void) { - DbpString(_BLUE_("Memory")); + DbpString(_CYAN_("Memory")); Dbprintf(" BigBuf_size.............%d", BigBuf_size); Dbprintf(" Available memory........%d", BigBuf_hi); - DbpString(_BLUE_("Tracing")); + DbpString(_CYAN_("Tracing")); Dbprintf(" tracing ................%d", tracing); Dbprintf(" traceLen ...............%d", traceLen); } diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 9897cefc1..afa822c7f 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -320,7 +320,7 @@ static void TimingIntervalAcquisition(void) { // measure the Connection Speed by sending SpeedTestBufferSize bytes to client and measuring the elapsed time. // Note: this mimics GetFromBigbuf(), i.e. we have the overhead of the PacketCommandNG structure included. static void printConnSpeed(void) { - DbpString(_BLUE_("Transfer Speed")); + DbpString(_CYAN_("Transfer Speed")); Dbprintf(" Sending packets to client..."); #define CONN_SPEED_TEST_MIN_TIME 500 // in milliseconds @@ -360,7 +360,7 @@ static void SendStatus(void) { printT55xxConfig(); // LF T55XX Config #endif printConnSpeed(); - DbpString(_BLUE_("Various")); + DbpString(_CYAN_("Various")); for (uint32_t *p = &_stack_start; ; ++p) { if (*p != 0xdeadbeef) { Dbprintf(" Max stack usage so far..%d", (&_stack_end - p)*4); @@ -385,7 +385,7 @@ static void SendStatus(void) { Dbprintf(_YELLOW_(" Slow Clock actual speed seems closer to %d kHz"), (16 * MAINCK / 1000) / mainf * delta_time / SLCK_CHECK_MS); } - DbpString(_BLUE_("Installed StandAlone Mode")); + DbpString(_CYAN_("Installed StandAlone Mode")); ModInfo(); #ifdef WITH_FLASH diff --git a/armsrc/flashmem.c b/armsrc/flashmem.c index 66b4813e4..f09ae8c40 100644 --- a/armsrc/flashmem.c +++ b/armsrc/flashmem.c @@ -523,7 +523,7 @@ void Flash_EraseChip(void) { */ void Flashmem_print_status(void) { - DbpString(_BLUE_("Flash memory")); + DbpString(_CYAN_("Flash memory")); Dbprintf(" Baudrate................" _GREEN_("%d MHz"), FLASHMEM_SPIBAUDRATE / 1000000); if (!FlashInit()) { @@ -562,7 +562,7 @@ void Flashmem_print_info(void) { if (!FlashInit()) return; - DbpString(_BLUE_("Flash memory dictionary loaded")); + DbpString(_CYAN_("Flash memory dictionary loaded")); // load dictionary offsets. uint8_t keysum[2]; diff --git a/armsrc/fpgaloader.c b/armsrc/fpgaloader.c index d0607d28d..f1f157eec 100644 --- a/armsrc/fpgaloader.c +++ b/armsrc/fpgaloader.c @@ -507,7 +507,7 @@ void SetAdcMuxFor(uint32_t whichGpio) { } void Fpga_print_status(void) { - DbpString(_BLUE_("Currently loaded FPGA image")); + DbpString(_CYAN_("Current FPGA image")); Dbprintf(" mode....................%s", g_fpga_version_information[downloaded_bitstream - 1]); } diff --git a/armsrc/i2c.c b/armsrc/i2c.c index e3e84690e..7e7ba4605 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -27,12 +27,12 @@ #define SDA_H HIGH(GPIO_SDA) #define SDA_L LOW(GPIO_SDA) -#define SCL_read (AT91C_BASE_PIOA->PIO_PDSR & GPIO_SCL) -#define SDA_read (AT91C_BASE_PIOA->PIO_PDSR & GPIO_SDA) +#define SCL_read ((AT91C_BASE_PIOA->PIO_PDSR & GPIO_SCL) == GPIO_SCL) +#define SDA_read ((AT91C_BASE_PIOA->PIO_PDSR & GPIO_SDA) == GPIO_SDA) #define I2C_ERROR "I2C_WaitAck Error" -static volatile unsigned long c; +static volatile uint32_t c; // Direct use the loop to delay. 6 instructions loop, Masterclock 48MHz, // delay=1 is about 200kbps @@ -47,6 +47,12 @@ static void __attribute__((optimize("O0"))) I2CSpinDelayClk(uint16_t delay) { #define I2C_DELAY_2CLK I2CSpinDelayClk(2) #define I2C_DELAY_XCLK(x) I2CSpinDelayClk((x)) +#define I2C_DELAY_100us I2CSpinDelayClk( 100 / 3) +#define I2C_DELAY_600us I2CSpinDelayClk( 600 / 3) +#define I2C_DELAY_10ms I2CSpinDelayClk( 10 * 1000 / 3 ) +#define I2C_DELAY_30ms I2CSpinDelayClk( 30 * 1000 / 3 ) +#define I2C_DELAY_100ms I2CSpinDelayClk( 100 * 1000 / 3) + #define ISO7618_MAX_FRAME 255 // try i2c bus recovery at 100kHz = 5us high, 5us low @@ -69,6 +75,7 @@ void I2C_recovery(void) { //a STOP signal (SDA from low to high while CLK is high) SDA_L; WaitUS(5); + SCL_H; WaitUS(2); SDA_H; @@ -127,11 +134,11 @@ void I2C_Reset_EnterMainProgram(void) { StartTicks(); I2C_init(); I2C_SetResetStatus(0, 0, 0); - WaitMS(30); + I2C_DELAY_30ms; I2C_SetResetStatus(1, 0, 0); - WaitMS(30); + I2C_DELAY_30ms; I2C_SetResetStatus(1, 1, 1); - WaitMS(10); + I2C_DELAY_10ms; } // Reset the SIM_Adapter, then enter the bootloader program @@ -140,9 +147,9 @@ void I2C_Reset_EnterBootloader(void) { StartTicks(); I2C_init(); I2C_SetResetStatus(0, 1, 1); - WaitMS(100); + I2C_DELAY_100ms; I2C_SetResetStatus(1, 1, 1); - WaitMS(10); + I2C_DELAY_10ms; } // Wait for the clock to go High. @@ -180,13 +187,13 @@ static bool WaitSCL_L(void) { // It timeout reading response from card // Which ever comes first static bool WaitSCL_L_timeout(void) { - volatile uint16_t delay = 1800; + volatile uint32_t delay = 18000; while (delay--) { // exit on SCL LOW if (!SCL_read) return true; - WaitMS(1); + I2C_DELAY_100us; } return (delay == 0); } @@ -218,7 +225,7 @@ static bool I2C_WaitForSim(void) { // 8051 speaks with smart card. // 1000*50*3.07 = 153.5ms // 1byte transfer == 1ms with max frame being 256bytes - if (!WaitSCL_H_delay(10 * 1000 * 50)) + if (!WaitSCL_H_delay(20 * 1000 * 50)) return false; return true; @@ -433,7 +440,9 @@ int16_t I2C_BufferRead(uint8_t *data, uint8_t len, uint8_t device_cmd, uint8_t d // extra wait 500us (514us measured) // 200us (xx measured) - WaitUS(600); +// WaitUS(600); + I2C_DELAY_600us; + bool bBreak = true; uint16_t readcount = 0; @@ -474,7 +483,7 @@ int16_t I2C_BufferRead(uint8_t *data, uint8_t len, uint8_t device_cmd, uint8_t d *data = (uint8_t)tmp & 0xFF; len--; - // 读取的第一个字节为后续长度 + // The first byte in response is the message length if (!readcount && (len > *data)) { len = *data; @@ -601,7 +610,7 @@ bool I2C_WriteFW(uint8_t *data, uint8_t len, uint8_t msb, uint8_t lsb, uint8_t d } void I2C_print_status(void) { - DbpString(_BLUE_("Smart card module (ISO 7816)")); + DbpString(_CYAN_("Smart card module (ISO 7816)")); uint8_t maj, min; if (I2C_get_version(&maj, &min) == PM3_SUCCESS) Dbprintf(" version................." _YELLOW_("v%x.%02d"), maj, min); @@ -799,7 +808,8 @@ void SmartCardUpgrade(uint64_t arg0) { } // writing takes time. - WaitMS(50); +// WaitMS(50); + I2C_DELAY_100ms; // read res = I2C_ReadFW(verfiydata, size, msb, lsb, I2C_DEVICE_ADDRESS_BOOT); diff --git a/armsrc/lfops.c b/armsrc/lfops.c index 72559a7b9..03c6c5164 100644 --- a/armsrc/lfops.c +++ b/armsrc/lfops.c @@ -198,7 +198,7 @@ void printT55xxConfig(void) { #define PRN_NA sprintf(s + strlen(s), _RED_("N/A") " | "); - DbpString(_BLUE_("LF T55XX config")); + DbpString(_CYAN_("LF T55XX config")); Dbprintf(" [r] [a] [b] [c] [d] [e] [f] [g]"); Dbprintf(" mode |start|write|write|write| read|write|write"); Dbprintf(" | gap | gap | 0 | 1 | gap | 2 | 3"); diff --git a/armsrc/lfsampling.c b/armsrc/lfsampling.c index db73ce385..f74101573 100644 --- a/armsrc/lfsampling.c +++ b/armsrc/lfsampling.c @@ -31,7 +31,7 @@ static sample_config config = { 1, 8, 1, LF_DIVISOR_125, 0, 0, 1} ; void printConfig(void) { uint32_t d = config.divisor; - DbpString(_BLUE_("LF Sampling config")); + DbpString(_CYAN_("LF Sampling config")); Dbprintf(" [q] divisor.............%d ( "_GREEN_("%d.%02d kHz")" )", d, 12000 / (d + 1), ((1200000 + (d + 1) / 2) / (d + 1)) - ((12000 / (d + 1)) * 100)); Dbprintf(" [b] bits per sample.....%d", config.bits_per_sample); Dbprintf(" [d] decimation..........%d", config.decimation); diff --git a/armsrc/spiffs.c b/armsrc/spiffs.c index 4267412c5..025146b55 100644 --- a/armsrc/spiffs.c +++ b/armsrc/spiffs.c @@ -536,13 +536,13 @@ int rdv40_spiffs_read_as_filetype(char *filename, uint8_t *dst, uint32_t size, R //////////////////////////////////////////////////////////////////////////////// ///////// MISC HIGH LEVEL FUNCTIONS //////////////////////////////////////////// -#define SPIFFS_BANNER DbpString(_BLUE_("Flash Memory FileSystem tree (SPIFFS)")); +#define SPIFFS_BANNER DbpString(_CYAN_("Flash Memory FileSystem tree (SPIFFS)")); void rdv40_spiffs_safe_print_fsinfo(void) { rdv40_spiffs_fsinfo fsinfo; rdv40_spiffs_getfsinfo(&fsinfo, RDV40_SPIFFS_SAFETY_SAFE); - DbpString(_BLUE_("Flash Memory FileSystem Info (SPIFFS)")); + DbpString(_CYAN_("Flash Memory FileSystem Info (SPIFFS)")); Dbprintf(" Logical Block Size........." _YELLOW_("%d")" bytes", fsinfo.blockSize); @@ -570,7 +570,7 @@ void rdv40_spiffs_safe_print_fsinfo(void) { void rdv40_spiffs_safe_print_tree(uint8_t banner) { if (banner) { - DbpString(_BLUE_("Flash Memory FileSystem tree (SPIFFS)")); + DbpString(_CYAN_("Flash Memory FileSystem tree (SPIFFS)")); Dbprintf("-------------------------------------"); } From fc5feffa4b691e437d7be1e59cccbe434d0eace3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 11 Jun 2020 19:23:15 +0200 Subject: [PATCH 408/527] color --- client/src/cmdsmartcard.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdsmartcard.c b/client/src/cmdsmartcard.c index 2931b33fd..009e876c8 100644 --- a/client/src/cmdsmartcard.c +++ b/client/src/cmdsmartcard.c @@ -712,7 +712,7 @@ static int CmdSmartInfo(const char *Cmd) { memcpy(&card, (smart_card_atr_t *)resp.data.asBytes, sizeof(smart_card_atr_t)); // print header - PrintAndLogEx(INFO, "--- Smartcard Information ---------"); + PrintAndLogEx(INFO, "--- " _CYAN_("Smartcard Information") " ---------"); PrintAndLogEx(INFO, "-------------------------------------------------------------"); PrintAndLogEx(INFO, "ISO7618-3 ATR : %s", sprint_hex(card.atr, card.atr_len)); PrintAndLogEx(INFO, "http://smartcard-atr.apdu.fr/parse?ATR=%s", sprint_hex_inrow(card.atr, card.atr_len)); From 6a8ea64feb5caecc3020687cae2c87ec44821aa0 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 11 Jun 2020 19:53:21 +0200 Subject: [PATCH 409/527] text --- client/src/cmdhficlass.c | 46 +++++++++++++++++++++------------------- 1 file changed, 24 insertions(+), 22 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 396511efd..1960eb426 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -465,27 +465,27 @@ static void mem_app_config(const picopass_hdr *hdr) { if (applimit < 6) applimit = 26; if (kb == 2 && (applimit > 0x1f)) applimit = 26; - PrintAndLogEx(NORMAL, " Mem: %u KBits/%u App Areas (%u * 8 bytes) [%02X]", kb, app_areas, max_blk, mem); - PrintAndLogEx(NORMAL, " AA1: blocks 06-%02X", applimit); - PrintAndLogEx(NORMAL, " AA2: blocks %02X-%02X", applimit + 1, max_blk); - PrintAndLogEx(NORMAL, " OTP: 0x%02X%02X", hdr->conf.otp[1], hdr->conf.otp[0]); - PrintAndLogEx(NORMAL, " KeyAccess:"); + PrintAndLogEx(INFO, " Mem: %u KBits/%u App Areas (%u * 8 bytes) [%02X]", kb, app_areas, max_blk, mem); + PrintAndLogEx(INFO, " AA1: blocks 06-%02X", applimit); + PrintAndLogEx(INFO, " AA2: blocks %02X-%02X", applimit + 1, max_blk); + PrintAndLogEx(INFO, " OTP: 0x%02X%02X", hdr->conf.otp[1], hdr->conf.otp[0]); + PrintAndLogEx(INFO, " KeyAccess:"); uint8_t book = isset(mem, 0x20); if (book) { - PrintAndLogEx(NORMAL, " Read A - Kd"); - PrintAndLogEx(NORMAL, " Read B - Kc"); - PrintAndLogEx(NORMAL, " Write A - Kd"); - PrintAndLogEx(NORMAL, " Write B - Kc"); - PrintAndLogEx(NORMAL, " Debit - Kd or Kc"); - PrintAndLogEx(NORMAL, " Credit - Kc"); + PrintAndLogEx(INFO, " Read A - Kd"); + PrintAndLogEx(INFO, " Read B - Kc"); + PrintAndLogEx(INFO, " Write A - Kd"); + PrintAndLogEx(INFO, " Write B - Kc"); + PrintAndLogEx(INFO, " Debit - Kd or Kc"); + PrintAndLogEx(INFO, " Credit - Kc"); } else { - PrintAndLogEx(NORMAL, " Read A - Kd or Kc"); - PrintAndLogEx(NORMAL, " Read B - Kd or Kc"); - PrintAndLogEx(NORMAL, " Write A - Kc"); - PrintAndLogEx(NORMAL, " Write B - Kc"); - PrintAndLogEx(NORMAL, " Debit - Kd or Kc"); - PrintAndLogEx(NORMAL, " Credit - Kc"); + PrintAndLogEx(INFO, " Read A - Kd or Kc"); + PrintAndLogEx(INFO, " Read B - Kd or Kc"); + PrintAndLogEx(INFO, " Write A - Kc"); + PrintAndLogEx(INFO, " Write B - Kc"); + PrintAndLogEx(INFO, " Debit - Kd or Kc"); + PrintAndLogEx(INFO, " Credit - Kc"); } } @@ -2943,7 +2943,7 @@ int readIclass(bool loop, bool verbose) { if (readStatus & FLAG_ICLASS_READER_CSN) { PrintAndLogEx(NORMAL, "\n"); - PrintAndLogEx(SUCCESS, " CSN: %s", sprint_hex(data, 8)); + PrintAndLogEx(SUCCESS, " CSN: " _YELLOW_("%s"), sprint_hex(data, 8)); tagFound = true; } @@ -2964,17 +2964,19 @@ int readIclass(bool loop, bool verbose) { bool se_enabled = (memcmp((uint8_t *)(data + 8 * 5), "\xff\xff\xff\x00\x06\xff\xff\xff", 8) == 0); PrintAndLogEx(SUCCESS, " App IA: %s", sprint_hex(data + 8 * 5, 8)); + PrintAndLogEx(INFO, "------ " _CYAN_("fingerprint") " ------"); if (isHidRange) { + PrintAndLogEx(SUCCESS, _YELLOW_(" iClass")" (CSN is in HID range)"); + if (legacy) - PrintAndLogEx(SUCCESS, " : Possible iClass - "_YELLOW_("legacy")" credential tag"); + PrintAndLogEx(SUCCESS, " possible "_YELLOW_("iClass legacy")" credential"); if (se_enabled) - PrintAndLogEx(SUCCESS, " : Possible iClass - "_YELLOW_("SE")" credential tag"); + PrintAndLogEx(SUCCESS, " possible "_YELLOW_("iClass SE")" credential"); - PrintAndLogEx(SUCCESS, " : Tag is "_YELLOW_("iClass")", CSN is in HID range"); } else { - PrintAndLogEx(SUCCESS, " : Tag is "_YELLOW_("PicoPass")", CSN is not in HID range"); + PrintAndLogEx(SUCCESS, _YELLOW_(" PicoPass")" (CSN is not in HID range)"); } } From c716bb9e3176d2b2883255eea401c2c95ab21c2e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 11 Jun 2020 20:11:44 +0200 Subject: [PATCH 410/527] textual, color, and "hf iclass info" does something --- client/src/cmdhficlass.c | 61 ++++++++++++++++++++-------------------- 1 file changed, 31 insertions(+), 30 deletions(-) diff --git a/client/src/cmdhficlass.c b/client/src/cmdhficlass.c index 1960eb426..98fd29562 100644 --- a/client/src/cmdhficlass.c +++ b/client/src/cmdhficlass.c @@ -388,34 +388,34 @@ static void fuse_config(const picopass_hdr *hdr) { uint8_t fuses = hdr->conf.fuses; if (isset(fuses, FUSE_FPERS)) - PrintAndLogEx(SUCCESS, " Mode: Personalization [Programmable]"); + PrintAndLogEx(SUCCESS, " Mode: " _GREEN_("Personalization [programmable]")); else - PrintAndLogEx(SUCCESS, " Mode: Application [Locked]"); + PrintAndLogEx(SUCCESS, " Mode: " _YELLOW_("Application [locked]")); if (isset(fuses, FUSE_CODING1)) { - PrintAndLogEx(SUCCESS, " Coding: RFU"); + PrintAndLogEx(SUCCESS, "Coding: RFU"); } else { if (isset(fuses, FUSE_CODING0)) - PrintAndLogEx(SUCCESS, " Coding: ISO 14443-2 B/ISO 15693"); + PrintAndLogEx(SUCCESS, "Coding: " _YELLOW_("ISO 14443-2 B / 15693")); else - PrintAndLogEx(SUCCESS, " Coding: ISO 14443B only"); + PrintAndLogEx(SUCCESS, "Coding: " _YELLOW_("ISO 14443-B only")); } // 1 1 - if (isset(fuses, FUSE_CRYPT1) && isset(fuses, FUSE_CRYPT0)) PrintAndLogEx(SUCCESS, " Crypt: Secured page, keys not locked"); + if (isset(fuses, FUSE_CRYPT1) && isset(fuses, FUSE_CRYPT0)) PrintAndLogEx(SUCCESS, " Crypt: Secured page, " _GREEN_("keys not locked")); // 1 0 - if (isset(fuses, FUSE_CRYPT1) && notset(fuses, FUSE_CRYPT0)) PrintAndLogEx(NORMAL, " Crypt: Secured page, keys locked"); + if (isset(fuses, FUSE_CRYPT1) && notset(fuses, FUSE_CRYPT0)) PrintAndLogEx(INFO, " Crypt: Secured page, keys locked"); // 0 1 - if (notset(fuses, FUSE_CRYPT1) && isset(fuses, FUSE_CRYPT0)) PrintAndLogEx(SUCCESS, " Crypt: Non secured page"); + if (notset(fuses, FUSE_CRYPT1) && isset(fuses, FUSE_CRYPT0)) PrintAndLogEx(SUCCESS, " Crypt: Non secured page"); // 0 0 - if (notset(fuses, FUSE_CRYPT1) && notset(fuses, FUSE_CRYPT0)) PrintAndLogEx(NORMAL, " Crypt: No auth possible. Read only if RA is enabled"); + if (notset(fuses, FUSE_CRYPT1) && notset(fuses, FUSE_CRYPT0)) PrintAndLogEx(INFO, " Crypt: No auth possible. Read only if RA is enabled"); if (isset(fuses, FUSE_RA)) PrintAndLogEx(SUCCESS, " RA: Read access enabled"); else - PrintAndLogEx(WARNING, " RA: Read access not enabled"); + PrintAndLogEx(INFO, " RA: Read access not enabled"); - PrintAndLogEx(INFO, " Block write lock: %02x", hdr->conf.block_writelock); - PrintAndLogEx(INFO, " EAS: %02x", hdr->conf.eas); + PrintAndLogEx(INFO, " Block write lock 0x%02X", hdr->conf.block_writelock); + PrintAndLogEx(INFO, " EAS 0x%02X", hdr->conf.eas); } @@ -465,27 +465,28 @@ static void mem_app_config(const picopass_hdr *hdr) { if (applimit < 6) applimit = 26; if (kb == 2 && (applimit > 0x1f)) applimit = 26; - PrintAndLogEx(INFO, " Mem: %u KBits/%u App Areas (%u * 8 bytes) [%02X]", kb, app_areas, max_blk, mem); - PrintAndLogEx(INFO, " AA1: blocks 06-%02X", applimit); - PrintAndLogEx(INFO, " AA2: blocks %02X-%02X", applimit + 1, max_blk); - PrintAndLogEx(INFO, " OTP: 0x%02X%02X", hdr->conf.otp[1], hdr->conf.otp[0]); - PrintAndLogEx(INFO, " KeyAccess:"); + PrintAndLogEx(INFO, "------ " _CYAN_("Memory") "------"); + PrintAndLogEx(INFO, " %u KBits/%u App Areas (%u * 8 bytes) [%02X]", kb, app_areas, max_blk, mem); + PrintAndLogEx(INFO, " AA1 blocks 06-%02X", applimit); + PrintAndLogEx(INFO, " AA2 blocks %02X-%02X", applimit + 1, max_blk); + PrintAndLogEx(INFO, " OTP 0x%02X%02X", hdr->conf.otp[1], hdr->conf.otp[0]); + PrintAndLogEx(INFO, "------ " _CYAN_("KeyAccess") "------"); uint8_t book = isset(mem, 0x20); if (book) { - PrintAndLogEx(INFO, " Read A - Kd"); - PrintAndLogEx(INFO, " Read B - Kc"); + PrintAndLogEx(INFO, " Read A - Kd"); + PrintAndLogEx(INFO, " Read B - Kc"); PrintAndLogEx(INFO, " Write A - Kd"); PrintAndLogEx(INFO, " Write B - Kc"); - PrintAndLogEx(INFO, " Debit - Kd or Kc"); - PrintAndLogEx(INFO, " Credit - Kc"); + PrintAndLogEx(INFO, " Debit - Kd or Kc"); + PrintAndLogEx(INFO, " Credit - Kc"); } else { - PrintAndLogEx(INFO, " Read A - Kd or Kc"); - PrintAndLogEx(INFO, " Read B - Kd or Kc"); + PrintAndLogEx(INFO, " Read A - Kd or Kc"); + PrintAndLogEx(INFO, " Read B - Kd or Kc"); PrintAndLogEx(INFO, " Write A - Kc"); PrintAndLogEx(INFO, " Write B - Kc"); - PrintAndLogEx(INFO, " Debit - Kd or Kc"); - PrintAndLogEx(INFO, " Credit - Kc"); + PrintAndLogEx(INFO, " Debit - Kd or Kc"); + PrintAndLogEx(INFO, " Credit - Kc"); } } @@ -689,14 +690,14 @@ static int CmdHFiClassSim(const char *Cmd) { } static int CmdHFiClassInfo(const char *Cmd) { - return PM3_SUCCESS; + return readIclass(false, true); } static int CmdHFiClassReader(const char *Cmd) { char cmdp = tolower(param_getchar(Cmd, 0)); if (cmdp == 'h') return usage_hf_iclass_reader(); - bool findone = (cmdp == '1') ? false : true; - return readIclass(findone, true); + bool loop_read = (cmdp == '1') ? false : true; + return readIclass(loop_read, true); } static int CmdHFiClassReader_Replay(const char *Cmd) { @@ -2967,7 +2968,7 @@ int readIclass(bool loop, bool verbose) { PrintAndLogEx(INFO, "------ " _CYAN_("fingerprint") " ------"); if (isHidRange) { - PrintAndLogEx(SUCCESS, _YELLOW_(" iClass")" (CSN is in HID range)"); + PrintAndLogEx(SUCCESS, _YELLOW_("iClass")" (CSN is in HID range)"); if (legacy) PrintAndLogEx(SUCCESS, " possible "_YELLOW_("iClass legacy")" credential"); @@ -2976,7 +2977,7 @@ int readIclass(bool loop, bool verbose) { PrintAndLogEx(SUCCESS, " possible "_YELLOW_("iClass SE")" credential"); } else { - PrintAndLogEx(SUCCESS, _YELLOW_(" PicoPass")" (CSN is not in HID range)"); + PrintAndLogEx(SUCCESS, _YELLOW_("PicoPass")" (CSN is not in HID range)"); } } From 6dc0aa53c70ff5959f3548809af92675b52f22bf Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 11 Jun 2020 20:58:31 +0200 Subject: [PATCH 411/527] textual... --- client/src/comms.c | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/client/src/comms.c b/client/src/comms.c index 9763504d4..df4c404df 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -115,11 +115,11 @@ void SendCommandOLD(uint64_t cmd, uint64_t arg0, uint64_t arg1, uint64_t arg2, v static void SendCommandNG_internal(uint16_t cmd, uint8_t *data, size_t len, bool ng) { #ifdef COMMS_DEBUG - PrintAndLogEx(NORMAL, "Sending %s", ng ? "NG" : "MIX"); + PrintAndLogEx(INFO, "Sending %s", ng ? "NG" : "MIX"); #endif if (!session.pm3_present) { - PrintAndLogEx(NORMAL, "Sending bytes to proxmark failed - offline"); + PrintAndLogEx(INFO, "Sending bytes to proxmark failed - offline"); return; } if (len > PM3_CMD_DATA_SIZE) { @@ -289,7 +289,8 @@ static void PacketResponseReceived(PacketResponseNG *packet) { } if (flag & FLAG_LOG) { - PrintAndLogEx(NORMAL, "[" _MAGENTA_("pm3") "] ["_BLUE_("#")"] " "%s", s); + //PrintAndLogEx(NORMAL, "[" _MAGENTA_("pm3") "] ["_BLUE_("#")"] " "%s", s); + PrintAndLogEx(NORMAL, "[" _BLUE_("#") "] %s", s); } else { if (flag & FLAG_INPLACE) printf("\r"); From c460dcf12d22961811c67ed83245641cbe5447e5 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 12 Jun 2020 00:37:48 +0200 Subject: [PATCH 412/527] test prox --- client/dictionaries/t55xx_default_pwds.dic | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/dictionaries/t55xx_default_pwds.dic b/client/dictionaries/t55xx_default_pwds.dic index 511be26d1..c35014d79 100644 --- a/client/dictionaries/t55xx_default_pwds.dic +++ b/client/dictionaries/t55xx_default_pwds.dic @@ -24,6 +24,8 @@ A5B4C3D2 575F4F4B # 50520901 +# default PROX +50524F58 # Default pwd, simple: 00000000 11111111 From 47262ce1e936936e5a640f86377861f8b5bb5fcf Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 12 Jun 2020 01:34:42 +0200 Subject: [PATCH 413/527] fix #777 thanks @doegox --- pm3 | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/pm3 b/pm3 index 73f2cac46..59960fe7c 100755 --- a/pm3 +++ b/pm3 @@ -115,7 +115,7 @@ function get_pm3_list_Windows { # Need to look for this first, the call to Win32_serialport "crashes" then native bt serial port. Don't ask why. #BT direct SERIAL PORTS (COM) if $FINDBTRFCOMM; then - for DEV in $(powershell.exe -command "Get-CimInstance -ClassName Win32_PnPEntity | Where-Object Caption -like 'Standard Serial over Bluetooth link (COM*' | Select Name" 2> /dev/null | awk '$0 ~ /COM/{print substr($6,2,4)}'); do + for DEV in $(powershell.exe -command "Get-CimInstance -ClassName Win32_PnPEntity | Where-Object Caption -like 'Standard Serial over Bluetooth link (COM*' | Select Name" 2> /dev/null | awk '$0 ~ /COM/{print substr($6,2,5)}'); do DEV=${DEV/ */} PM3LIST+=("$DEV") if [ ${#PM3LIST[*]} -ge "$N" ]; then @@ -152,7 +152,7 @@ function get_pm3_list_WSL { # Need to look for this first, the call to Win32_serialport "crashes" then native bt serial port. Don't ask why. #BT direct SERIAL PORTS (COM) if $FINDBTRFCOMM; then - for DEV in $(powershell.exe -command "Get-CimInstance -ClassName Win32_PnPEntity | Where-Object Caption -like 'Standard Serial over Bluetooth link (COM*' | Select Name" 2> /dev/null | awk '$0 ~ /COM/{print substr($6,2,4)}'); do + for DEV in $(powershell.exe -command "Get-CimInstance -ClassName Win32_PnPEntity | Where-Object Caption -like 'Standard Serial over Bluetooth link (COM*' | Select Name" 2> /dev/null | awk '$0 ~ /COM/{print substr($6,2,5)}'); do DEV=${DEV/ */} DEV="/dev/ttyS${DEV#COM}" From d229364a2143b4448fc6bceb0f843d8430206332 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Fri, 12 Jun 2020 02:00:55 +0200 Subject: [PATCH 414/527] Variant for fix #777 independent of sentence and nr of com port digits --- pm3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pm3 b/pm3 index 59960fe7c..c3829b796 100755 --- a/pm3 +++ b/pm3 @@ -115,7 +115,7 @@ function get_pm3_list_Windows { # Need to look for this first, the call to Win32_serialport "crashes" then native bt serial port. Don't ask why. #BT direct SERIAL PORTS (COM) if $FINDBTRFCOMM; then - for DEV in $(powershell.exe -command "Get-CimInstance -ClassName Win32_PnPEntity | Where-Object Caption -like 'Standard Serial over Bluetooth link (COM*' | Select Name" 2> /dev/null | awk '$0 ~ /COM/{print substr($6,2,5)}'); do + for DEV in $(powershell.exe -command "Get-CimInstance -ClassName Win32_PnPEntity | Where-Object Caption -like 'Standard Serial over Bluetooth link (COM*' | Select Name" 2> /dev/null | awk 'match($0,/COM([0-9]+)/,m){print m[1]}'); do DEV=${DEV/ */} PM3LIST+=("$DEV") if [ ${#PM3LIST[*]} -ge "$N" ]; then From def55011be606f1a8ddb7b819c0f270c0222f580 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Fri, 12 Jun 2020 02:02:53 +0200 Subject: [PATCH 415/527] and the other one... --- pm3 | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/pm3 b/pm3 index c3829b796..771dce77d 100755 --- a/pm3 +++ b/pm3 @@ -152,7 +152,7 @@ function get_pm3_list_WSL { # Need to look for this first, the call to Win32_serialport "crashes" then native bt serial port. Don't ask why. #BT direct SERIAL PORTS (COM) if $FINDBTRFCOMM; then - for DEV in $(powershell.exe -command "Get-CimInstance -ClassName Win32_PnPEntity | Where-Object Caption -like 'Standard Serial over Bluetooth link (COM*' | Select Name" 2> /dev/null | awk '$0 ~ /COM/{print substr($6,2,5)}'); do + for DEV in $(powershell.exe -command "Get-CimInstance -ClassName Win32_PnPEntity | Where-Object Caption -like 'Standard Serial over Bluetooth link (COM*' | Select Name" 2> /dev/null | awk 'match($0,/COM([0-9]+)/,m){print m[1]}'); do DEV=${DEV/ */} DEV="/dev/ttyS${DEV#COM}" From cdbe6bc35ba57fa5f42a8fa6750294c760238f08 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 12 Jun 2020 09:27:55 +0200 Subject: [PATCH 416/527] fix: "emv scan" - now dont save in execution folder --- client/src/emv/cmdemv.c | 36 +++++++++++++++++++++++++++--------- 1 file changed, 27 insertions(+), 9 deletions(-) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 65c9cafb2..c5b01e450 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -26,6 +26,7 @@ #include "dol.h" #include "ui.h" #include "emv_tags.h" +#include "fileutils.h" static int CmdHelp(const char *Cmd); @@ -1426,15 +1427,19 @@ static int CmdEMVScan(const char *Cmd) { bool GenACGPO = arg_get_lit(ctx, 9); bool MergeJSON = arg_get_lit(ctx, 10); + EMVCommandChannel channel = ECC_CONTACTLESS; if (arg_get_lit(ctx, 11)) channel = ECC_CONTACT; + PrintChannel(channel); + uint8_t psenum = (channel == ECC_CONTACT) ? 1 : 2; - uint8_t relfname[250] = {0}; - char *crelfname = (char *)relfname; - int relfnamelen = 0; - CLIGetStrWithReturn(ctx, 12, relfname, &relfnamelen); + + uint8_t filename[FILE_PATH_SIZE] = {0}; + int filenamelen = 0; + CLIGetStrWithReturn(ctx, 12, filename, &filenamelen); + CLIParserFree(ctx); if (!IfPm3Smartcard()) { @@ -1447,22 +1452,23 @@ static int CmdEMVScan(const char *Cmd) { SetAPDULogging(showAPDU); // current path + file name - if (!strstr(crelfname, ".json")) - strcat(crelfname, ".json"); + char *fname = newfilenamemcopy((char*)filename, ".json"); + if (fname == NULL) { + return PM3_EMALLOC; + } - char fname[strlen(get_my_executable_directory()) + strlen(crelfname) + 1]; - strcpy(fname, get_my_executable_directory()); - strcat(fname, crelfname); if (MergeJSON) { root = json_load_file(fname, 0, &error); if (!root) { PrintAndLogEx(ERR, "Json error on line %d: %s", error.line, error.text); + free(fname); return PM3_EFILE; } if (!json_is_object(root)) { PrintAndLogEx(ERR, "Invalid json format. root must be an object"); + free(fname); return PM3_EFILE; } } else { @@ -1480,6 +1486,7 @@ static int CmdEMVScan(const char *Cmd) { iso14a_card_select_t card; if (Hf14443_4aGetCardData(&card)) { + free(fname); return PM3_ERFTRANS; } @@ -1495,6 +1502,7 @@ static int CmdEMVScan(const char *Cmd) { smart_select(true, &card); if (!card.atr_len) { PrintAndLogEx(ERR, "Can't get ATR from a smart card."); + free(fname); return PM3_ERFTRANS; } @@ -1538,6 +1546,7 @@ static int CmdEMVScan(const char *Cmd) { PrintAndLogEx(ERR, "Can't found any of EMV AID, exiting..."); tlvdb_free(tlvSelect); DropFieldEx(channel); + free(fname); return PM3_ERFTRANS; } @@ -1554,6 +1563,7 @@ static int CmdEMVScan(const char *Cmd) { if (!AIDlen) { PrintAndLogEx(INFO, "Can't select AID. EMV AID not found, exiting..."); DropFieldEx(channel); + free(fname); return PM3_ERFTRANS; } @@ -1573,6 +1583,7 @@ static int CmdEMVScan(const char *Cmd) { PrintAndLogEx(ERR, "Can't select AID (%d), exiting...", res); tlvdb_free(tlvRoot); DropFieldEx(channel); + free(fname); return PM3_ERFTRANS; } @@ -1589,6 +1600,7 @@ static int CmdEMVScan(const char *Cmd) { JsonSaveTLVTree(root, root, "$.Application.FCITemplate", fci); else JsonSaveTLVTreeElm(root, "$.Application.FCITemplate", fci, true, true, false); + tlvdb_free(fci); // create transaction parameters @@ -1601,6 +1613,7 @@ static int CmdEMVScan(const char *Cmd) { PrintAndLogEx(ERR, "Can't create PDOL TLV"); tlvdb_free(tlvRoot); DropFieldEx(channel); + free(fname); return PM3_ESOFT; } @@ -1611,6 +1624,7 @@ static int CmdEMVScan(const char *Cmd) { tlvdb_free(tlvRoot); free(pdol_data_tlv); DropFieldEx(channel); + free(fname); return PM3_ESOFT; } PrintAndLogEx(INFO, "PDOL data[%zu]: %s", pdol_data_tlv_data_len, sprint_hex(pdol_data_tlv_data, pdol_data_tlv_data_len)); @@ -1625,6 +1639,7 @@ static int CmdEMVScan(const char *Cmd) { PrintAndLogEx(ERR, "GPO error(%d): %4x, exiting...", res, sw); tlvdb_free(tlvRoot); DropFieldEx(channel); + free(fname); return PM3_ERFTRANS; } ProcessGPOResponseFormat1(tlvRoot, buf, len, decodeTLV); @@ -1749,9 +1764,12 @@ static int CmdEMVScan(const char *Cmd) { res = json_dump_file(root, fname, JSON_INDENT(2)); if (res) { PrintAndLogEx(ERR, "Can't save the file: %s", fname); + free(fname); return PM3_EFILE; } + PrintAndLogEx(SUCCESS, "File " _YELLOW_("`%s`") " saved.", fname); + free(fname); // free json object json_decref(root); From 9ba03aec741c11ec9c56a99783a0c0e36310686f Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 12 Jun 2020 09:44:50 +0200 Subject: [PATCH 417/527] fix: "emv scan" - better fix for filename --- client/src/emv/cmdemv.c | 43 ++++++++++++++++++----------------------- 1 file changed, 19 insertions(+), 24 deletions(-) diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index c5b01e450..2f754ffc4 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -1384,8 +1384,6 @@ static int CmdEMVScan(const char *Cmd) { size_t ODAI_listlen = 0; uint16_t sw = 0; int res; - json_t *root; - json_error_t error; CLIParserContext *ctx; CLIParserInit(&ctx, "emv scan", @@ -1451,24 +1449,20 @@ static int CmdEMVScan(const char *Cmd) { SetAPDULogging(showAPDU); + json_t *root; + json_error_t error; + // current path + file name - char *fname = newfilenamemcopy((char*)filename, ".json"); - if (fname == NULL) { - return PM3_EMALLOC; - } - - if (MergeJSON) { - root = json_load_file(fname, 0, &error); + + root = json_load_file( (char*)filename, 0, &error); if (!root) { PrintAndLogEx(ERR, "Json error on line %d: %s", error.line, error.text); - free(fname); return PM3_EFILE; } if (!json_is_object(root)) { PrintAndLogEx(ERR, "Invalid json format. root must be an object"); - free(fname); return PM3_EFILE; } } else { @@ -1486,7 +1480,6 @@ static int CmdEMVScan(const char *Cmd) { iso14a_card_select_t card; if (Hf14443_4aGetCardData(&card)) { - free(fname); return PM3_ERFTRANS; } @@ -1502,7 +1495,6 @@ static int CmdEMVScan(const char *Cmd) { smart_select(true, &card); if (!card.atr_len) { PrintAndLogEx(ERR, "Can't get ATR from a smart card."); - free(fname); return PM3_ERFTRANS; } @@ -1546,7 +1538,6 @@ static int CmdEMVScan(const char *Cmd) { PrintAndLogEx(ERR, "Can't found any of EMV AID, exiting..."); tlvdb_free(tlvSelect); DropFieldEx(channel); - free(fname); return PM3_ERFTRANS; } @@ -1563,7 +1554,6 @@ static int CmdEMVScan(const char *Cmd) { if (!AIDlen) { PrintAndLogEx(INFO, "Can't select AID. EMV AID not found, exiting..."); DropFieldEx(channel); - free(fname); return PM3_ERFTRANS; } @@ -1583,7 +1573,6 @@ static int CmdEMVScan(const char *Cmd) { PrintAndLogEx(ERR, "Can't select AID (%d), exiting...", res); tlvdb_free(tlvRoot); DropFieldEx(channel); - free(fname); return PM3_ERFTRANS; } @@ -1613,7 +1602,6 @@ static int CmdEMVScan(const char *Cmd) { PrintAndLogEx(ERR, "Can't create PDOL TLV"); tlvdb_free(tlvRoot); DropFieldEx(channel); - free(fname); return PM3_ESOFT; } @@ -1624,7 +1612,6 @@ static int CmdEMVScan(const char *Cmd) { tlvdb_free(tlvRoot); free(pdol_data_tlv); DropFieldEx(channel); - free(fname); return PM3_ESOFT; } PrintAndLogEx(INFO, "PDOL data[%zu]: %s", pdol_data_tlv_data_len, sprint_hex(pdol_data_tlv_data, pdol_data_tlv_data_len)); @@ -1639,7 +1626,6 @@ static int CmdEMVScan(const char *Cmd) { PrintAndLogEx(ERR, "GPO error(%d): %4x, exiting...", res, sw); tlvdb_free(tlvRoot); DropFieldEx(channel); - free(fname); return PM3_ERFTRANS; } ProcessGPOResponseFormat1(tlvRoot, buf, len, decodeTLV); @@ -1761,15 +1747,24 @@ static int CmdEMVScan(const char *Cmd) { DropFieldEx(channel); - res = json_dump_file(root, fname, JSON_INDENT(2)); - if (res) { - PrintAndLogEx(ERR, "Can't save the file: %s", fname); + + if (MergeJSON == false) { + // create unique new name + char *fname = newfilenamemcopy((char*)filename, ".json"); + if (fname == NULL) { + return PM3_EMALLOC; + } + strcpy((char*)filename, fname); free(fname); + } + + res = json_dump_file(root, (char*)filename, JSON_INDENT(2)); + if (res) { + PrintAndLogEx(ERR, "Can't save the file: %s", filename); return PM3_EFILE; } - PrintAndLogEx(SUCCESS, "File " _YELLOW_("`%s`") " saved.", fname); - free(fname); + PrintAndLogEx(SUCCESS, "File " _YELLOW_("`%s`") " saved.", filename); // free json object json_decref(root); From 09188221a8239f1eac4d62fc1be7f06fda5c7f31 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 12 Jun 2020 09:51:24 +0200 Subject: [PATCH 418/527] textual --- CHANGELOG.md | 2 ++ 1 file changed, 2 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 3975e12cb..494f1c01b 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,8 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fix `emv scan` - now saves in current folder and uses unique names (@iceman1001) + - Fix pm3.sh - parse COM ports larger than one digit (@doegox) - Fix stack size and automatically use available space for BigBuf. Stack is now 5K (@slurdge) - Added Mifare MAD Card Holder Information decoding (@lukaskuzmiak) - Change Better precision for HF and LF voltage measurements and Add theremin.py script (@rosco) From 60c47a7e7d75d56c7f3a9bf7e6464a160d0241f3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 12 Jun 2020 17:29:34 +0200 Subject: [PATCH 419/527] textual --- client/src/ui.c | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) diff --git a/client/src/ui.c b/client/src/ui.c index 68f0eab24..05172c789 100644 --- a/client/src/ui.c +++ b/client/src/ui.c @@ -44,6 +44,7 @@ session_arg_t session; double CursorScaleFactor = 1; int PlotGridX = 0, PlotGridY = 0, PlotGridXdefault = 64, PlotGridYdefault = 64; uint32_t CursorCPos = 0, CursorDPos = 0; +double GraphPixelsPerPoint = 1.f; // How many visual pixels are between each sample point (x axis) static bool flushAfterWrite = 0; int GridOffset = 0; bool GridLocked = false; @@ -201,34 +202,34 @@ void PrintAndLogEx(logLevel_t level, const char *fmt, ...) { switch (level) { case ERR: if (session.emoji_mode == EMOJI) - strncpy(prefix, _RED_("[!!]") " :rotating_light: ", sizeof(prefix) - 1); + strncpy(prefix, "[" _RED_("!!") "] :rotating_light: ", sizeof(prefix) - 1); else - strncpy(prefix, _RED_("[!!] "), sizeof(prefix) - 1); + strncpy(prefix, "[" _RED_("!!") "] ", sizeof(prefix) - 1); stream = stderr; break; case FAILED: if (session.emoji_mode == EMOJI) - strncpy(prefix, _RED_("[-]") " :no_entry: ", sizeof(prefix) - 1); + strncpy(prefix, "[" _RED_("-") "] :no_entry: ", sizeof(prefix) - 1); else - strncpy(prefix, _RED_("[-] "), sizeof(prefix) - 1); + strncpy(prefix, "[" _RED_("-") "] ", sizeof(prefix) - 1); break; case DEBUG: - strncpy(prefix, _BLUE_("[#] "), sizeof(prefix) - 1); + strncpy(prefix, "[" _BLUE_("#") "] ", sizeof(prefix) - 1); break; case HINT: - strncpy(prefix, _YELLOW_("[?] "), sizeof(prefix) - 1); + strncpy(prefix, "[" _YELLOW_("?") "] ", sizeof(prefix) - 1); break; case SUCCESS: - strncpy(prefix, _GREEN_("[+] "), sizeof(prefix) - 1); + strncpy(prefix, "[" _GREEN_("+") "] ", sizeof(prefix) - 1); break; case WARNING: if (session.emoji_mode == EMOJI) - strncpy(prefix, _CYAN_("[!]") " :warning: ", sizeof(prefix) - 1); + strncpy(prefix, "[" _CYAN_("!") "] :warning: ", sizeof(prefix) - 1); else - strncpy(prefix, _CYAN_("[!] "), sizeof(prefix) - 1); + strncpy(prefix, "[" _CYAN_("!") "] ", sizeof(prefix) - 1); break; case INFO: - strncpy(prefix, _YELLOW_("[=] "), sizeof(prefix) - 1); + strncpy(prefix, "[" _YELLOW_("=") "] ", sizeof(prefix) - 1); break; case INPLACE: if (session.emoji_mode == EMOJI) { From 20c46d1af5c398e637b9164a9a48f590cee0c59d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 12 Jun 2020 17:49:52 +0200 Subject: [PATCH 420/527] chg: in order to be able to upgrade fw on smartcard it must be available --- client/src/cmdmain.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdmain.c b/client/src/cmdmain.c index 1e9c8d257..2664ed3a1 100644 --- a/client/src/cmdmain.c +++ b/client/src/cmdmain.c @@ -258,7 +258,7 @@ static command_t CommandTable[] = { {"lf", CmdLF, AlwaysAvailable, "{ Low frequency commands... }"}, {"mem", CmdFlashMem, IfPm3Flash, "{ Flash Memory manipulation... }"}, {"reveng", CmdRev, AlwaysAvailable, "{ CRC calculations from RevEng software }"}, - {"sc", CmdSmartcard, IfPm3Smartcard, "{ Smart card ISO-7816 commands... }"}, + {"sc", CmdSmartcard, AlwaysAvailable, "{ Smart card ISO-7816 commands... }"}, {"script", CmdScript, AlwaysAvailable, "{ Scripting commands }"}, {"trace", CmdTrace, AlwaysAvailable, "{ Trace manipulation... }"}, {"usart", CmdUsart, IfPm3FpcUsartFromUsb, "{ USART commands... }"}, From e71e70bd9d9c3abf675e9a7a8cd325501b077df1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 12 Jun 2020 17:50:11 +0200 Subject: [PATCH 421/527] minor --- armsrc/i2c.c | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/armsrc/i2c.c b/armsrc/i2c.c index 7e7ba4605..82b4fdb10 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -626,9 +626,8 @@ int I2C_get_version(uint8_t *maj, uint8_t *min) { *maj = resp[0]; *min = resp[1]; return PM3_SUCCESS; - } else { - return PM3_EDEVNOTSUPP; } + return PM3_EDEVNOTSUPP; } // Will read response from smart card module, retries 3 times to get the data. From ce61b67910f216b7402dc0178decfb3ab0960a32 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Fri, 12 Jun 2020 18:01:06 +0200 Subject: [PATCH 422/527] Remove spurious color --- client/src/ui.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/ui.c b/client/src/ui.c index 05172c789..815d4a9d7 100644 --- a/client/src/ui.c +++ b/client/src/ui.c @@ -328,7 +328,7 @@ static void fPrintAndLog(FILE *stream, const char *fmt, ...) { if (session.supports_colors) { printf(_YELLOW_("[=]") " Session log " _YELLOW_("%s") "\n", my_logfile_path); } else { - printf(_YELLOW_("[=]") " Session log %s\n", my_logfile_path); + printf("[=] Session log %s\n", my_logfile_path); } } From bb5c5889355bb8316cedcfa910fb18587628b333 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Fri, 12 Jun 2020 18:17:39 +0200 Subject: [PATCH 423/527] Fix colors detection under Windows (when no ref & when redirected IOs) --- client/src/proxmark3.c | 35 +++++++---------------------------- 1 file changed, 7 insertions(+), 28 deletions(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index eea1718c3..621b09d22 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -32,9 +32,6 @@ #include "flash.h" #include "preferences.h" -// Used to enable/disable use of preferences json file -#define USE_PREFERENCE_FILE - #define BANNERMSG1 " :snowflake: iceman@icesql.net" #define BANNERMSG2 " https://github.com/rfidresearchgroup/proxmark3/" #define BANNERMSG3 " bleeding edge :coffee:" @@ -632,8 +629,7 @@ finish2: return ret; } -#ifndef USE_PREFERENCE_FILE - +/* // Check if windows AnsiColor Support is enabled in the registery // [HKEY_CURRENT_USER\Console] // "VirtualTerminalLevel"=dword:00000001 @@ -688,8 +684,7 @@ static bool DetectWindowsAnsiSupport(void) { #endif return ret; } - -#endif +*/ int main(int argc, char *argv[]) { srand(time(0)); @@ -912,7 +907,6 @@ int main(int argc, char *argv[]) { return 1; } -#ifdef USE_PREFERENCE_FILE // Load Settings and assign // This will allow the command line to override the settings.json values preferences_load(); @@ -921,28 +915,24 @@ int main(int argc, char *argv[]) { g_debugMode = session.client_debug_level; // settings_save (); // End Settings -#endif - -#ifndef USE_PREFERENCE_FILE - // comment next 2 lines to use session values set from settings_load - session.supports_colors = DetectWindowsAnsiSupport(); - session.emoji_mode = ALTTEXT; -#endif session.stdinOnTTY = isatty(STDIN_FILENO); session.stdoutOnTTY = isatty(STDOUT_FILENO); -#if defined(__linux__) || defined(__APPLE__) // it's okay to use color if: // * Linux or OSX // * Not redirected to a file but printed to term // For info, grep --color=auto is doing sth like this, plus test getenv("TERM") != "dumb": // struct stat tmp_stat; // if ((fstat (STDOUT_FILENO, &tmp_stat) == 0) && (S_ISCHR (tmp_stat.st_mode)) && isatty(STDIN_FILENO)) -#ifdef USE_PREFERENCE_FILE if (!session.preferences_loaded) { if (session.stdinOnTTY && session.stdoutOnTTY) { +#if defined(__linux__) || defined(__APPLE__) session.supports_colors = true; session.emoji_mode = EMOJI; +#else + session.supports_colors = DetectWindowsAnsiSupport(); + session.emoji_mode = ALTTEXT; +#endif } } else { // even if prefs, we disable colors if stdin or stdout is not a TTY @@ -951,14 +941,7 @@ int main(int argc, char *argv[]) { session.emoji_mode = ALTTEXT; } } -#else - if (session.stdinOnTTY && session.stdoutOnTTY) { - session.supports_colors = true; - session.emoji_mode = EMOJI; - } -#endif -#endif // Let's take a baudrate ok for real UART, USB-CDC & BT don't use that info anyway if (speed == 0) speed = USART_BAUD_RATE; @@ -1013,7 +996,6 @@ int main(int argc, char *argv[]) { if (!script_cmds_file && !script_cmd && session.stdinOnTTY && session.stdoutOnTTY && !flash_mode) showBanner(); -#ifdef USE_PREFERENCE_FILE // Save settings if not loaded from settings json file. // Doing this here will ensure other checks and updates are saved to over rule default // e.g. Linux color use check @@ -1034,7 +1016,6 @@ int main(int argc, char *argv[]) { PrintAndLogEx(WARNING,"Proxmark3 not ready to set debug level"); } */ -#endif #ifdef HAVE_GUI @@ -1061,9 +1042,7 @@ int main(int argc, char *argv[]) { CloseProxmark(); } -#ifdef USE_PREFERENCE_FILE if (session.window_changed) // Plot/Overlay moved or resized preferences_save(); -#endif exit(EXIT_SUCCESS); } From 30c0345c31dc93d9f3f5d47f6dc81f57f5d0f888 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Fri, 12 Jun 2020 18:21:03 +0200 Subject: [PATCH 424/527] Fix fix colors --- client/src/proxmark3.c | 11 ++++++----- 1 file changed, 6 insertions(+), 5 deletions(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 621b09d22..8228429b0 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -629,7 +629,6 @@ finish2: return ret; } -/* // Check if windows AnsiColor Support is enabled in the registery // [HKEY_CURRENT_USER\Console] // "VirtualTerminalLevel"=dword:00000001 @@ -637,9 +636,9 @@ finish2: // [HKEY_CURRENT_USER\Console] // "ForceV2"=dword:00000001 +#if defined(_WIN32) static bool DetectWindowsAnsiSupport(void) { bool ret = false; -#if defined(_WIN32) HKEY hKey = NULL; bool virtualTerminalLevelSet = false; bool forceV2Set = false; @@ -681,10 +680,9 @@ static bool DetectWindowsAnsiSupport(void) { } // If both VirtualTerminalLevel and ForceV2 is set, AnsiColor should work ret = virtualTerminalLevelSet && forceV2Set; -#endif return ret; } -*/ +#endif int main(int argc, char *argv[]) { srand(time(0)); @@ -929,9 +927,12 @@ int main(int argc, char *argv[]) { #if defined(__linux__) || defined(__APPLE__) session.supports_colors = true; session.emoji_mode = EMOJI; -#else +#elif defined(_WIN32) session.supports_colors = DetectWindowsAnsiSupport(); session.emoji_mode = ALTTEXT; +#else + session.supports_colors = false; + session.emoji_mode = ALTTEXT; #endif } } else { From 8c5be2678fdb5de384181e38e04c8dc812712a7f Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Fri, 12 Jun 2020 19:45:18 +0200 Subject: [PATCH 425/527] Yet another color management, settings autodetection done earlier --- client/src/preferences.c | 2 -- client/src/proxmark3.c | 53 ++++++++++++++++++++-------------------- 2 files changed, 26 insertions(+), 29 deletions(-) diff --git a/client/src/preferences.c b/client/src/preferences.c index 4313c9456..8ddd0f150 100644 --- a/client/src/preferences.c +++ b/client/src/preferences.c @@ -52,9 +52,7 @@ int preferences_load(void) { session.overlay.y = 60 + session.plot.y + session.plot.h; session.overlay.h = 200; session.overlay.w = session.plot.w; - session.emoji_mode = ALIAS; session.show_hints = false; - session.supports_colors = false; // setDefaultPath (spDefault, ""); // setDefaultPath (spDump, ""); diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index 8228429b0..e13c79591 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -726,6 +726,28 @@ int main(int argc, char *argv[]) { set_my_executable_path(); set_my_user_directory(); + // color management: + // 1. default = no color + // 2. enable colors if OS seems to support colors and if stdin/stdout aren't redirected + // 3. load prefs if available, overwrite colors choice if needed + // 4. disable colors anyway if stdin/stdout are redirected + // + // For info, grep --color=auto is doing sth like this, plus test getenv("TERM") != "dumb": + // struct stat tmp_stat; + // if ((fstat (STDOUT_FILENO, &tmp_stat) == 0) && (S_ISCHR (tmp_stat.st_mode)) && isatty(STDIN_FILENO)) + session.stdinOnTTY = isatty(STDIN_FILENO); + session.stdoutOnTTY = isatty(STDOUT_FILENO); + session.supports_colors = false; + session.emoji_mode = ALTTEXT; + if (session.stdinOnTTY && session.stdoutOnTTY) { +#if defined(__linux__) || defined(__APPLE__) + session.supports_colors = true; + session.emoji_mode = EMOJI; +#elif defined(_WIN32) + session.supports_colors = DetectWindowsAnsiSupport(); + session.emoji_mode = ALTTEXT; +#endif + } for (int i = 1; i < argc; i++) { if (argv[i][0] != '-') { @@ -914,33 +936,10 @@ int main(int argc, char *argv[]) { // settings_save (); // End Settings - session.stdinOnTTY = isatty(STDIN_FILENO); - session.stdoutOnTTY = isatty(STDOUT_FILENO); - // it's okay to use color if: - // * Linux or OSX - // * Not redirected to a file but printed to term - // For info, grep --color=auto is doing sth like this, plus test getenv("TERM") != "dumb": - // struct stat tmp_stat; - // if ((fstat (STDOUT_FILENO, &tmp_stat) == 0) && (S_ISCHR (tmp_stat.st_mode)) && isatty(STDIN_FILENO)) - if (!session.preferences_loaded) { - if (session.stdinOnTTY && session.stdoutOnTTY) { -#if defined(__linux__) || defined(__APPLE__) - session.supports_colors = true; - session.emoji_mode = EMOJI; -#elif defined(_WIN32) - session.supports_colors = DetectWindowsAnsiSupport(); - session.emoji_mode = ALTTEXT; -#else - session.supports_colors = false; - session.emoji_mode = ALTTEXT; -#endif - } - } else { - // even if prefs, we disable colors if stdin or stdout is not a TTY - if ((! session.stdinOnTTY) || (! session.stdoutOnTTY)) { - session.supports_colors = false; - session.emoji_mode = ALTTEXT; - } + // even if prefs, we disable colors if stdin or stdout is not a TTY + if ((! session.stdinOnTTY) || (! session.stdoutOnTTY)) { + session.supports_colors = false; + session.emoji_mode = ALTTEXT; } // Let's take a baudrate ok for real UART, USB-CDC & BT don't use that info anyway From 020c6882ce42440ef49e5fe48010469f44f3b0d8 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Fri, 12 Jun 2020 19:52:13 +0200 Subject: [PATCH 426/527] colors --- client/src/ui.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/ui.c b/client/src/ui.c index 815d4a9d7..04e002950 100644 --- a/client/src/ui.c +++ b/client/src/ui.c @@ -326,7 +326,7 @@ static void fPrintAndLog(FILE *stream, const char *fmt, ...) { } else { if (session.supports_colors) { - printf(_YELLOW_("[=]") " Session log " _YELLOW_("%s") "\n", my_logfile_path); + printf("["_YELLOW_("=")"] Session log " _YELLOW_("%s") "\n", my_logfile_path); } else { printf("[=] Session log %s\n", my_logfile_path); } From 9c6ce5be50f78992ca317219011f01a9386c279e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 12 Jun 2020 22:35:08 +0200 Subject: [PATCH 427/527] chg: "hf mf cwipe" - speed up using backdoor wipe cmd --- client/src/mifare/mifarehost.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/mifare/mifarehost.c b/client/src/mifare/mifarehost.c index 8e15cb509..393495152 100644 --- a/client/src/mifare/mifarehost.c +++ b/client/src/mifare/mifarehost.c @@ -865,7 +865,7 @@ int mfCSetUID(uint8_t *uid, uint8_t *atqa, uint8_t *sak, uint8_t *oldUID, uint8_ int mfCWipe(uint8_t *uid, uint8_t *atqa, uint8_t *sak) { uint8_t block0[16] = {0x01, 0x02, 0x03, 0x04, 0x04, 0x08, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xBE, 0xAF}; - uint8_t blockD[16] = {0x00}; + //uint8_t blockD[16] = {0x00}; uint8_t blockK[16] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x08, 0x77, 0x8F, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; uint8_t params = MAGIC_SINGLE; @@ -891,8 +891,8 @@ int mfCWipe(uint8_t *uid, uint8_t *atqa, uint8_t *sak) { } else { if (mfIsSectorTrailer(blockNo)) res = mfCSetBlock(blockNo, blockK, NULL, params); - else - res = mfCSetBlock(blockNo, blockD, NULL, params); +// else +// res = mfCSetBlock(blockNo, blockD, NULL, params); } if (res == PM3_SUCCESS) From 94403bee598407eca83c900a525548cc6499e1cf Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Fri, 12 Jun 2020 22:49:42 +0200 Subject: [PATCH 428/527] textual --- client/src/emv/emv_pk.c | 29 ++++++++++++++--------------- 1 file changed, 14 insertions(+), 15 deletions(-) diff --git a/client/src/emv/emv_pk.c b/client/src/emv/emv_pk.c index 3331e50a5..ee354e24d 100644 --- a/client/src/emv/emv_pk.c +++ b/client/src/emv/emv_pk.c @@ -32,8 +32,7 @@ #include "fileutils.h" #include "pm3_cmd.h" -#define BCD(c) (((c) >= '0' && (c) <= '9') ? ((c) - '0') : \ - -1) +#define BCD(c) (((c) >= '0' && (c) <= '9') ? ((c) - '0') : -1) #define HEX(c) (((c) >= '0' && (c) <= '9') ? ((c) - '0') : \ ((c) >= 'A' && (c) <= 'F') ? ((c) - 'A' + 10) : \ @@ -93,7 +92,6 @@ static ssize_t emv_pk_read_ymv(char *buf, size_t buflen, unsigned *ymv) { if (buf == NULL) return 0; - int i; unsigned char temp[3]; char *p = buf; @@ -102,7 +100,7 @@ static ssize_t emv_pk_read_ymv(char *buf, size_t buflen, unsigned *ymv) { while ((*p == ' ') && (p < (buf + buflen - 1))) p++; - for (i = 0; i < 3; i++) { + for (int i = 0; i < 3; i++) { int c1, c2; c1 = BCD(*p); if (c1 == -1) @@ -164,7 +162,6 @@ static ssize_t emv_pk_read_string(char *buf, size_t buflen, char *str, size_t si return (p - buf); } - struct emv_pk *emv_pk_parse_pk(char *buf, size_t buflen) { struct emv_pk *r = calloc(1, sizeof(*r)); ssize_t l; @@ -264,22 +261,22 @@ static size_t emv_pk_write_str(char *out, size_t outlen, const char *str) { } char *emv_pk_dump_pk(const struct emv_pk *pk) { + size_t outpos = 0; size_t outsize = 1024; /* should be enough */ char *out = malloc(outsize); /* should be enough */ - size_t outpos = 0; - size_t rc; - if (!out) return NULL; - rc = emv_pk_write_bin(out + outpos, outsize - outpos, pk->rid, 5); + size_t rc = emv_pk_write_bin(out + outpos, outsize - outpos, pk->rid, 5); if (rc == 0) goto err; + outpos += rc; rc = emv_pk_write_bin(out + outpos, outsize - outpos, &pk->index, 1); if (rc == 0) goto err; + outpos += rc; if (outpos + 7 > outsize) @@ -504,21 +501,23 @@ struct emv_pk *emv_pk_get_ca_pk(const unsigned char *rid, unsigned char idx) { if (!pk) return NULL; - printf("Verifying CA PK for %02hhx:%02hhx:%02hhx:%02hhx:%02hhx IDX %02hhx %zu bits...", + bool isok = emv_pk_verify(pk); + + PrintAndLogEx(INFO, "Verifying CA PK for %02hhx:%02hhx:%02hhx:%02hhx:%02hhx IDX %02hhx %zu bits. ( %s )", pk->rid[0], pk->rid[1], pk->rid[2], pk->rid[3], pk->rid[4], pk->index, - pk->mlen * 8); + pk->mlen * 8, + (isok) ? _GREEN_("ok") : _RED_("failed") + ); - if (emv_pk_verify(pk)) { - printf("OK\n"); + if (isok) { return pk; - } + } - printf("Failed!\n"); emv_pk_free(pk); return NULL; } From 25fb6df229bc3a34cfd20ab092f510c200f5c25f Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 11 Jun 2020 12:38:07 +0200 Subject: [PATCH 429/527] Android cross-compilation to client cmake --- CHANGELOG.md | 1 + client/CMakeLists.txt | 84 ++++++++++++++++++++++++++++++++++++++--- client/src/cmdhflegic.c | 2 +- 3 files changed, 80 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 494f1c01b..7f3d8c886 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Add Android cross-compilation to client cmake (@dxl, @doegox) - Fix `emv scan` - now saves in current folder and uses unique names (@iceman1001) - Fix pm3.sh - parse COM ports larger than one digit (@doegox) - Fix stack size and automatically use available space for BigBuf. Stack is now 5K (@slurdge) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 8db8ebf9c..0de34d58f 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -4,6 +4,13 @@ # On Proxspace 3.3 or less, you need to install cmake: # pacman -S mingw-w64-x86_64-cmake # /mingw64/bin/cmake -G"MSYS Makefiles" .. +# +# Android cross-compilation: +# cmake \ +# -DCMAKE_TOOLCHAIN_FILE=<path-to-your-android-ndk>/build/cmake/android.toolchain.cmake \ +# -DANDROID_ABI=armeabi-v7a \ +# -DANDROID_NATIVE_API_LEVEL=android-19 \ +# -DSKIPBT=1 -DSKIPPYTHON=1 -DSKIPPTHREAD=1 .. cmake_minimum_required(VERSION 3.10) project(proxmark3) @@ -49,21 +56,75 @@ if (NOT SKIPPYTHON EQUAL 1) pkg_search_module(PYTHON3EMBED QUIET python3-embed) endif (NOT SKIPPYTHON EQUAL 1) +# If build on android cross, we need to init source and build. +if (ANDROID) + set(CFLAGS_EXTERNAL_LIB CFLAGS=--target=${CMAKE_C_COMPILER_TARGET}) + include(ExternalProject) +endif (ANDROID) + if (NOT SKIPREADLINE EQUAL 1) if (APPLE) find_path(READLINE_INCLUDE_DIRS readline/readline.h /usr/local/opt/readline/include /opt/local/include /opt/include /usr/local/include /usr/include NO_DEFAULT_PATH) - endif (APPLE) - find_path(READLINE_INCLUDE_DIRS readline/readline.h) - - if (APPLE) find_library(READLINE_LIBRARIES readline /usr/local/opt/readline/lib /opt/local/lib /opt/lib /usr/local/lib /usr/lib NO_DEFAULT_PATH) endif (APPLE) - find_library(READLINE_LIBRARIES readline) + if (ANDROID) + ExternalProject_Add(ncurses + URL http://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.0.tar.gz + PREFIX deps/ncurses + DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/ncurses + CONFIGURE_COMMAND ./configure CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} LD=${CMAKE_C_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} ${CFLAGS_EXTERNAL_LIB} --host=arm + BUILD_IN_SOURCE ON + BUILD_COMMAND make -j2 libs + INSTALL_COMMAND "" + LOG_DOWNLOAD ON + ) + ExternalProject_Add_StepTargets(ncurses configure build install) + + ExternalProject_Add(readline + URL ftp://ftp.gnu.org/gnu/readline/readline-7.0.tar.gz + PREFIX deps/readline + DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/readline + CONFIGURE_COMMAND ./configure CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} LD=${CMAKE_C_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} ${CFLAGS_EXTERNAL_LIB} --host=arm --enable-static + BUILD_IN_SOURCE ON + BUILD_COMMAND make -j2 + INSTALL_COMMAND "" + LOG_DOWNLOAD ON + ) + ExternalProject_Add_StepTargets(readline configure build install) + set(READLINE_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/deps/readline/src/) + set(READLINE_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/deps/readline/src/readline/libreadline.a ${CMAKE_CURRENT_BINARY_DIR}/deps/ncurses/src/ncurses/lib/libncurses.a) + else (ANDROID) + find_path(READLINE_INCLUDE_DIRS readline/readline.h) + find_library(READLINE_LIBRARIES readline) + endif (ANDROID) if (READLINE_INCLUDE_DIRS AND READLINE_LIBRARIES) set(READLINE_FOUND ON) endif (READLINE_INCLUDE_DIRS AND READLINE_LIBRARIES) endif (NOT SKIPREADLINE EQUAL 1) +if(ANDROID) + set(BZIP2_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/bzip2/src/bzip2) + ExternalProject_Add(bzip2 + GIT_REPOSITORY https://android.googlesource.com/platform/external/bzip2 + GIT_TAG platform-tools-30.0.2 + PREFIX deps/bzip2 + SOURCE_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/bzip2 + CONFIGURE_COMMAND mkdir -p ${BZIP2_BUILD_DIR} && git archive --format tar HEAD | tar -C ${BZIP2_BUILD_DIR} -x + BUILD_IN_SOURCE ON + BUILD_COMMAND make -C ${BZIP2_BUILD_DIR} -j4 CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} LD=${CMAKE_C_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} ${CFLAGS_EXTERNAL_LIB} libbz2.a + INSTALL_COMMAND "" + LOG_DOWNLOAD ON + ) + ExternalProject_Add_StepTargets(bzip2 configure build install) + set(BZIP2_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/deps/bzip2/src/bzip2) + set(BZIP2_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/deps/bzip2/src/bzip2/libbz2.a) +else() + set(BZIP2_LIBRARIES bz2) +endif(ANDROID) +if (BZIP2_LIBRARIES) + set(BZIP2_FOUND ON) +endif (BZIP2_LIBRARIES) + add_subdirectory(${PM3_ROOT}/client/deps deps) set (TARGET_SOURCES @@ -268,6 +329,12 @@ if (NOT SKIPREADLINE EQUAL 1) set(ADDITIONAL_LNK ${READLINE_LIBRARIES} ${ADDITIONAL_LNK}) endif (READLINE_FOUND) endif(NOT SKIPREADLINE EQUAL 1) +if (BZIP2_FOUND) + set(ADDITIONAL_DIRS ${BZIP2_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) + set(ADDITIONAL_LNK ${BZIP2_LIBRARIES} ${ADDITIONAL_LNK}) +else (BZIP2_FOUND) + message(FATAL_ERROR "Bzip2 not found") +endif (BZIP2_FOUND) message("===================================================================") if (SKIPQT EQUAL 1) @@ -320,6 +387,12 @@ add_executable(proxmark3 ) target_compile_options(proxmark3 PUBLIC -Wall -Werror -O3) +if (ANDROID) + if (NOT SKIPREADLINE EQUAL 1) + add_dependencies(proxmark3 ncurses readline) + endif (NOT SKIPREADLINE EQUAL 1) + add_dependencies(proxmark3 bzip2) +endif (ANDROID) if (MINGW) # Mingw uses by default Microsoft printf, we want the GNU printf (e.g. for %z) @@ -357,7 +430,6 @@ find_library(pm3rrg_rdv4_hardnested REQUIRED) find_library(pm3rrg_rdv4_whereami REQUIRED) target_link_libraries(proxmark3 PRIVATE - bz2 m pm3rrg_rdv4_mbedtls pm3rrg_rdv4_cliparser diff --git a/client/src/cmdhflegic.c b/client/src/cmdhflegic.c index f5ba787ad..a91c1a418 100644 --- a/client/src/cmdhflegic.c +++ b/client/src/cmdhflegic.c @@ -12,7 +12,7 @@ #include <stdio.h> // for Mingw readline #include <ctype.h> // tolower -#ifndef ANDROID +#ifdef HAVE_READLINE #include <readline/readline.h> #endif From e8c88d47ef69d2975cf161a06d2145f9adb9bf74 Mon Sep 17 00:00:00 2001 From: Conlan <HeroCC@users.noreply.github.com> Date: Fri, 12 Jun 2020 20:01:55 -0400 Subject: [PATCH 430/527] Additional CharlieCard Key --- client/dictionaries/mfc_default_keys.dic | 1 + 1 file changed, 1 insertion(+) diff --git a/client/dictionaries/mfc_default_keys.dic b/client/dictionaries/mfc_default_keys.dic index 26f1f938e..cc68b0d88 100644 --- a/client/dictionaries/mfc_default_keys.dic +++ b/client/dictionaries/mfc_default_keys.dic @@ -605,6 +605,7 @@ d58023ba2bdc # charlie 62ced42a6d87 # charlie 2548a443df28 # charlie 2ed3b15e7c0f # charlie +f66224ee1e89 # charlie # 60012e9ba3fa # From 5adc8e876a0d3e3f5b69ac228430a01cc510eab9 Mon Sep 17 00:00:00 2001 From: Bjoern Kerler <info@revskills.de> Date: Sat, 13 Jun 2020 14:19:21 +0200 Subject: [PATCH 431/527] Fix DES authentification and format picc --- client/src/cmdhfmfdes.c | 1416 +++++++++++++++++----------- client/src/mifare/desfire_crypto.c | 84 +- client/src/mifare/desfire_crypto.h | 6 +- include/protocols.h | 1 + 4 files changed, 963 insertions(+), 544 deletions(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index d8185e96b..520a73fe6 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -7,6 +7,8 @@ //----------------------------------------------------------------------------- // High frequency MIFARE Desfire commands //----------------------------------------------------------------------------- +// Code heavily modified by B.Kerler :) + #include "cmdhfmfdes.h" #include <stdio.h> @@ -32,13 +34,22 @@ #define MAX_KEY_LEN 24 #define MAX_KEYS_LIST_LEN 1024 -struct desfire_key defaultkey = {0}; -static desfirekey_t sessionkey = &defaultkey; +struct desfire_key default_key = {0}; -uint8_t key_zero_data[16] = { 0x00 }; -uint8_t key_ones_data[16] = { 0x01 }; -uint8_t key_defa_data[16] = { 0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f }; -uint8_t key_picc_data[16] = { 0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f }; +uint8_t desdefaultkeys[3][8]= {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, //Official + {0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47}, + {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07}}; + +uint8_t aesdefaultkeys[5][16]= {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, //Official, TRF7970A + {0x79, 0x70, 0x25, 0x53, 0x79, 0x70, 0x25, 0x53, 0x79, 0x70, 0x25, 0x53, 0x79, 0x70, 0x25, 0x53}, // TRF7970A + {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF}, // TRF7970A + {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}, + {0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f}}; + +uint8_t k3kdefaultkeys[1][24]= {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; + +struct desfire_tag mf_state={.session_key=NULL,.authentication_scheme=AS_LEGACY,.authenticated_key_no=NOT_YET_AUTHENTICATED,.crypto_buffer=NULL,.crypto_buffer_size=0,.selected_application=0}; +static desfiretag_t tag=&mf_state; typedef struct { uint8_t mode; @@ -48,6 +59,8 @@ typedef struct { uint8_t key[24]; } PACKED mfdes_authinput_t; +static mfdes_authinput_t currentauth[0xF]={{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1}}; + typedef struct mfdes_auth_res { uint8_t sessionkeylen; uint8_t sessionkey[24]; @@ -557,10 +570,6 @@ static int send_desfire_cmd(sAPDU *apdu, bool select, uint8_t *dest, int *recv_l PrintAndLogEx(DEBUG, "APDU=NULL"); return PM3_EINVARG; } - /*if (dest == NULL) { - PrintAndLogEx(DEBUG, "DEST=NULL"); - return PM3_EINVARG; - }*/ if (sw == NULL) { PrintAndLogEx(DEBUG, "SW=NULL"); return PM3_EINVARG; @@ -642,10 +651,12 @@ static nxp_cardtype_t getCardType(uint8_t major, uint8_t minor) { return DESFIRE_UNKNOWN; } -int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rpayload, bool defaultkey) { +int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rpayload) { // 3 different way to authenticate AUTH (CRC16) , AUTH_ISO (CRC32) , AUTH_AES (CRC32) // 4 different crypto arg1 DES, 3DES, 3K3DES, AES // 3 different communication modes, PLAIN,MAC,CRYPTO + tag->authenticated_key_no=NOT_YET_AUTHENTICATED; + tag->session_key = NULL; mbedtls_aes_context ctx; @@ -669,27 +680,8 @@ int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rpayload, value = prng_successor(ng, 32); num_to_bytes(value, 4, &RndA[12]); - // Default Keys - uint8_t PICC_MASTER_KEY8[8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}; - uint8_t PICC_MASTER_KEY16[16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - uint8_t PICC_MASTER_KEY24[24] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }; - //uint8_t null_key_data16[16] = {0x00}; - //uint8_t new_key_data8[8] = { 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77}; - //uint8_t new_key_data16[16] = { 0x00,0x11,0x22,0x33,0x44,0x55,0x66,0x77,0x88,0x99,0xAA,0xBB,0xCC,0xDD,0xEE,0xFF}; - - // Part 1 - if (defaultkey) { - if (payload->algo == MFDES_AUTH_DES) { - memcpy(keybytes, PICC_MASTER_KEY8, 8); - } else if (payload->algo == MFDES_ALGO_AES || payload->algo == MFDES_ALGO_3DES) { - memcpy(keybytes, PICC_MASTER_KEY16, 16); - } else if (payload->algo == MFDES_ALGO_3DES) { - memcpy(keybytes, PICC_MASTER_KEY24, 24); - } - } else { - memcpy(keybytes, payload->key, payload->keylen); - } + memcpy(keybytes, payload->key, payload->keylen); struct desfire_key dkey = {0}; desfirekey_t key = &dkey; @@ -706,11 +698,17 @@ int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rpayload, } uint8_t subcommand = MFDES_AUTHENTICATE; + tag->authentication_scheme=AS_LEGACY; if (payload->mode == MFDES_AUTH_AES) + { subcommand = MFDES_AUTHENTICATE_AES; - else if (payload->mode == MFDES_AUTH_ISO) + tag->authentication_scheme=AS_NEW; + } + else if (payload->mode == MFDES_AUTH_ISO) { subcommand = MFDES_AUTHENTICATE_ISO; + tag->authentication_scheme = AS_NEW; + } int recv_len = 0; uint16_t sw = 0; @@ -756,7 +754,6 @@ int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rpayload, memcpy(encRndB, recv_data + 2, rndlen); } - // Part 3 if (payload->algo == MFDES_ALGO_AES) { if (mbedtls_aes_setkey_dec(&ctx, key->data, 128) != 0) { @@ -875,7 +872,8 @@ int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rpayload, } // Part 4 - Desfire_session_key_new(RndA, RndB, key, sessionkey); + tag->session_key=&default_key; + Desfire_session_key_new(RndA, RndB, key, tag->session_key); if (payload->mode != MFDES_AUTH_PICC) { memcpy(encRndA, recv_data, rndlen); @@ -909,7 +907,12 @@ int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rpayload, } rpayload->sessionkeylen = payload->keylen; - memcpy(rpayload->sessionkey, sessionkey->data, rpayload->sessionkeylen); + memcpy(rpayload->sessionkey, tag->session_key->data, rpayload->sessionkeylen); + memset(tag->ivect, 0, MAX_CRYPTO_BLOCK_SIZE); + tag->authenticated_key_no=payload->keyno; + if (tag->authentication_scheme==AS_NEW) { + cmac_generate_subkeys(tag->session_key); + } return PM3_SUCCESS; } @@ -952,6 +955,8 @@ void AuthToError(int error) { break; } } + + // -- test if card supports 0x0A static int test_desfire_authenticate() { uint8_t data[] = {0x00}; @@ -1012,11 +1017,19 @@ static int handler_desfire_freemem(uint32_t *free_mem) { uint16_t sw = 0; uint8_t fmem[4] = {0}; + size_t plen=apdu.Lc; + uint8_t *p=mifare_cryto_preprocess_data(tag,(uint8_t *)apdu.data,&plen,0,MDCM_PLAIN|CMAC_COMMAND); + apdu.Lc=(uint8_t)plen; + apdu.data=p; + int res = send_desfire_cmd(&apdu, true, fmem, &recv_len, &sw, 0, true); if (res != PM3_SUCCESS) return res; + size_t dlen=recv_len; + p=mifare_cryto_postprocess_data(tag, apdu.data, &dlen, MDCM_PLAIN | CMAC_COMMAND | CMAC_VERIFY); + if (sw != status(MFDES_S_OPERATION_OK)) return PM3_ESOFT; @@ -1024,6 +1037,121 @@ static int handler_desfire_freemem(uint32_t *free_mem) { return res; } +static int mifare_desfire_change_key(uint8_t key_no, uint8_t* new_key, int new_algo, uint8_t* old_key, int old_algo, int aes_version) +{ + key_no &= 0x0F; + + /* + * Because new crypto methods can be setup only at application creation, + * changing the card master key to one of them require a key_no tweak. + */ + if (0x000000 == tag->selected_application) { + switch (new_algo) { + case MFDES_ALGO_DES: + break; + case MFDES_ALGO_3K3DES: + key_no |= 0x40; + break; + case MFDES_ALGO_AES: + key_no |= 0x80; + break; + } + } + + uint8_t data[24*4] = {key_no}; + sAPDU apdu = {0x90, MFDES_CHANGE_KEY, 0x00, 0x00, 0x01, data}; // 0xC4 + + int new_key_length; + switch (new_algo) { + case MFDES_ALGO_DES: + case MFDES_ALGO_AES: + new_key_length = 16; + break; + case MFDES_ALGO_3K3DES: + new_key_length = 24; + break; + } + + int __cmd_n=0; + memcpy(data + __cmd_n + 1, new_key, new_key_length); + + if ((tag->authenticated_key_no & 0x0f) != (key_no & 0x0f)) { + if (old_key) { + for (int n = 0; n < new_key_length; n++) { + data[__cmd_n + 1 + n] ^= old_key[n]; + } + } + } + + __cmd_n += new_key_length; + + if (new_algo == MFDES_ALGO_AES){ + data[__cmd_n+1] = aes_version; + __cmd_n+=1; + } + + if ((tag->authenticated_key_no & 0x0f) != (key_no & 0x0f)) { + switch (tag->authentication_scheme) { + case AS_LEGACY: + iso14443a_crc_append(data + 1, __cmd_n); + __cmd_n += 2; + iso14443a_crc(new_key, new_key_length, data + __cmd_n); + __cmd_n += 2; + break; + case AS_NEW: + desfire_crc32_append(data+1, __cmd_n); + __cmd_n += 4; + + desfire_crc32(new_key, new_key_length, data + __cmd_n); + __cmd_n += 4; + break; + } + } else { + switch (tag->authentication_scheme) { + case AS_LEGACY: + iso14443a_crc_append(data + 1, __cmd_n); + __cmd_n += 2; + break; + case AS_NEW: + desfire_crc32_append(data, __cmd_n); + __cmd_n += 4; + break; + } + } + + uint8_t *p = mifare_cryto_preprocess_data(tag, data+1, (size_t*)&__cmd_n, 0, MDCM_ENCIPHERED | ENC_COMMAND | NO_CRC); + apdu.Lc=(uint8_t)__cmd_n+1; + apdu.data=p; + + int recv_len = 0; + uint16_t sw = 0; + int res = send_desfire_cmd(&apdu, true, NULL, &recv_len, &sw, 0, true); + + if (res != PM3_SUCCESS) + { + PrintAndLogEx(WARNING, _RED_(" Can't change key -> %s"),GetErrorString(res, &sw)); + DropField(); + return res; + } + + size_t sn = recv_len; + p = mifare_cryto_postprocess_data(tag, data, &sn, MDCM_PLAIN | CMAC_COMMAND | CMAC_VERIFY); + + if (!p) + return PM3_ESOFT; + + /* + * If we changed the current authenticated key, we are not authenticated + * anymore. + */ + if (key_no == tag->authenticated_key_no) { + free(tag->session_key); + tag->session_key = NULL; + } + + return 0; +} + // --- GET SIGNATURE static int desfire_print_signature(uint8_t *uid, uint8_t *signature, size_t signature_len, nxp_cardtype_t card_type) { (void)card_type; @@ -1098,6 +1226,7 @@ static int handler_desfire_signature(uint8_t *signature, size_t *signature_len) uint8_t c[] = {0x00}; sAPDU apdu = {0x90, MFDES_READSIG, 0x00, 0x00, sizeof(c), c}; // 0x3C + int recv_len = 0; uint16_t sw = 0; int res = send_desfire_cmd(&apdu, true, signature, &recv_len, &sw, 0, true); @@ -1114,24 +1243,16 @@ static int handler_desfire_signature(uint8_t *signature, size_t *signature_len) } // --- KEY SETTING -static int desfire_print_keysetting(uint8_t key_settings, uint8_t num_keys) { +static int desfire_print_keysetting(uint8_t key_settings, mifare_des_authalgo_t algo) { PrintAndLogEx(SUCCESS, " AID Key settings : 0x%02x", key_settings); // 2 MSB denotes const char *str = " Max key number and type : %d, " _YELLOW_("%s"); - switch (num_keys >> 6) { - case 0: - PrintAndLogEx(SUCCESS, str, num_keys & 0x3F, "(3)DES"); - break; - case 1: - PrintAndLogEx(SUCCESS, str, num_keys & 0x3F, "3K3DES"); - break; - case 2: - PrintAndLogEx(SUCCESS, str, num_keys & 0x3F, "AES"); - break; - default: - break; - } + + if (algo==MFDES_ALGO_DES) PrintAndLogEx(SUCCESS, str, "(3)DES"); + else if (algo==MFDES_ALGO_AES) PrintAndLogEx(SUCCESS, str, "AES"); + else if (algo==MFDES_ALGO_3K3DES) PrintAndLogEx(SUCCESS, str, "3K3DES"); + //PrintAndLogEx(SUCCESS, " Max number of keys in AID : %d", num_keys & 0x3F); PrintAndLogEx(INFO, "-------------------------------------------------------------"); PrintAndLogEx(SUCCESS, " Changekey Access rights"); @@ -1160,7 +1281,7 @@ static int desfire_print_keysetting(uint8_t key_settings, uint8_t num_keys) { return PM3_SUCCESS; } -static int handler_desfire_keysettings(uint8_t *key_settings, uint8_t *num_keys) { +static int handler_desfire_getkeysettings(uint8_t *key_settings, uint8_t *num_keys) { if (key_settings == NULL) { PrintAndLogEx(DEBUG, "KEY_SETTINGS=NULL"); return PM3_EINVARG; @@ -1170,6 +1291,7 @@ static int handler_desfire_keysettings(uint8_t *key_settings, uint8_t *num_keys) return PM3_EINVARG; } sAPDU apdu = {0x90, MFDES_GET_KEY_SETTINGS, 0x00, 0x00, 0x00, NULL}; //0x45 + int recv_len = 0; uint16_t sw = 0; uint8_t data[2] = {0}; @@ -1210,6 +1332,25 @@ static int handler_desfire_keyversion(uint8_t curr_key, uint8_t *num_versions) { return res; } +static int handler_desfire_getuid(uint8_t *uid) { + if (uid == NULL) { + PrintAndLogEx(DEBUG, "UID=NULL"); + return PM3_EINVARG; + } + sAPDU apdu = {0x90, MFDES_GET_UID, 0x00, 0x00, 0x00, NULL}; //0x51 + int recv_len = 0; + uint16_t sw = 0; + int res = send_desfire_cmd(&apdu, false, uid, &recv_len, &sw, 0, true); + + if (res != PM3_SUCCESS) + return res; + + if (sw != status(MFDES_S_OPERATION_OK)) + return PM3_ESOFT; + + return res; +} + static int handler_desfire_commit_transaction() { sAPDU apdu = {0x90, MFDES_COMMIT_TRANSACTION, 0x00, 0x00, 0x00, NULL}; //0xC7 int recv_len = 0; @@ -1303,10 +1444,32 @@ static int handler_desfire_select_application(uint8_t *aid) { DropField(); return res; } + memcpy(&tag->selected_application,aid,3); return PM3_SUCCESS; } -// none, verified +static int key_setting_to_algo(uint8_t aid[3],uint8_t* key_setting, mifare_des_authalgo_t* algo){ + int res = handler_desfire_select_application(aid); + if (res != PM3_SUCCESS) return res; + + uint8_t num_keys = 0; + res = handler_desfire_getkeysettings(key_setting, &num_keys); + if (res==PM3_SUCCESS){ + switch (num_keys >> 6){ + case 0: + *algo=MFDES_ALGO_DES; + break; + case 1: + *algo=MFDES_ALGO_3K3DES; + break; + case 2: + *algo=MFDES_ALGO_AES; + break; + } + } + return res; +} + static int handler_desfire_fileids(uint8_t *dest, uint8_t *file_ids_len) { if (g_debugMode > 1) { if (dest == NULL) PrintAndLogEx(ERR, "DEST=NULL"); @@ -1399,10 +1562,16 @@ static int handler_desfire_deleteapp(uint8_t *aid) { return res; } -static int handler_desfire_credit(mfdes_value_t *value) { +static int handler_desfire_credit(mfdes_value_t *value, uint8_t cs) { sAPDU apdu = {0x90, MFDES_CREDIT, 0x00, 0x00, 1 + 4, (uint8_t *)value}; // 0x0C uint16_t sw = 0; int recvlen = 0; + + size_t plen=apdu.Lc; + uint8_t *p=mifare_cryto_preprocess_data(tag,(uint8_t *)apdu.data,&plen,0,cs | MAC_COMMAND | CMAC_COMMAND | ENC_COMMAND); + apdu.Lc=(uint8_t)plen; + apdu.data=p; + int res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, _RED_(" Can't credit value -> %s"), GetErrorString(res, &sw)); @@ -1412,10 +1581,16 @@ static int handler_desfire_credit(mfdes_value_t *value) { return res; } -static int handler_desfire_limitedcredit(mfdes_value_t *value) { +static int handler_desfire_limitedcredit(mfdes_value_t *value, uint8_t cs) { sAPDU apdu = {0x90, MFDES_LIMITED_CREDIT, 0x00, 0x00, 1 + 4, (uint8_t *)value}; // 0x1C uint16_t sw = 0; int recvlen = 0; + + size_t plen=apdu.Lc; + uint8_t *p=mifare_cryto_preprocess_data(tag,(uint8_t *)apdu.data,&plen,0,cs | MAC_COMMAND | CMAC_COMMAND | ENC_COMMAND); + apdu.Lc=(uint8_t)plen; + apdu.data=p; + int res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, _RED_(" Can't credit limited value -> %s"), GetErrorString(res, &sw)); @@ -1425,10 +1600,16 @@ static int handler_desfire_limitedcredit(mfdes_value_t *value) { return res; } -static int handler_desfire_debit(mfdes_value_t *value) { +static int handler_desfire_debit(mfdes_value_t *value, uint8_t cs) { sAPDU apdu = {0x90, MFDES_DEBIT, 0x00, 0x00, 1 + 4, (uint8_t *)value}; // 0xDC uint16_t sw = 0; int recvlen = 0; + + size_t plen=apdu.Lc; + uint8_t *p=mifare_cryto_preprocess_data(tag,(uint8_t *)apdu.data,&plen,0,cs | MAC_COMMAND | CMAC_COMMAND | ENC_COMMAND); + apdu.Lc=(uint8_t)plen; + apdu.data=p; + int res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, _RED_(" Can't debit value -> %s"), GetErrorString(res, &sw)); @@ -1438,42 +1619,59 @@ static int handler_desfire_debit(mfdes_value_t *value) { return res; } -static int handler_desfire_readdata(mfdes_data_t *data, MFDES_FILE_TYPE_T type) { +static int handler_desfire_readdata(mfdes_data_t *data, MFDES_FILE_TYPE_T type, uint8_t cs) { if (data->fileno > 0x1F) return PM3_EINVARG; sAPDU apdu = {0x90, MFDES_READ_DATA, 0x00, 0x00, 1 + 3 + 3, (uint8_t *)data}; // 0xBD if (type == MFDES_RECORD_FILE) apdu.INS = MFDES_READ_RECORDS; //0xBB uint16_t sw = 0; int resplen = 0; + + size_t plen=apdu.Lc; + uint8_t *p=mifare_cryto_preprocess_data(tag,(uint8_t *)data,&plen,0,MDCM_PLAIN|CMAC_COMMAND); + apdu.Lc=(uint8_t)plen; + apdu.data=p; + int res = send_desfire_cmd(&apdu, false, data->data, &resplen, &sw, 0, true); if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, _RED_(" Can't read data -> %s"), GetErrorString(res, &sw)); DropField(); return res; } - data->length[2] = (uint8_t)(resplen & 0xFF); - data->length[1] = (uint8_t)((resplen >> 8) & 0xFF); - data->length[0] = (uint8_t)((resplen >> 16) & 0xFF); + + size_t dlen=resplen; + p=mifare_cryto_postprocess_data(tag, data->data, &dlen, cs|CMAC_COMMAND|CMAC_VERIFY|MAC_VERIFY); + if (dlen!=-1) resplen=dlen; memcpy(data->length, &resplen, 3); + + return res; } -static int handler_desfire_getvalue(mfdes_value_t *value, int *resplen) { +static int handler_desfire_getvalue(mfdes_value_t *value, int *resplen, uint8_t cs) { if (value->fileno > 0x1F) return PM3_EINVARG; sAPDU apdu = {0x90, MFDES_GET_VALUE, 0x00, 0x00, 0x01, &value->fileno}; // 0xBD uint16_t sw = 0; *resplen = 0; + + size_t plen=apdu.Lc; + uint8_t *p=mifare_cryto_preprocess_data(tag,(uint8_t *)apdu.data,&plen,0,MDCM_PLAIN|CMAC_COMMAND); + apdu.Lc=(uint8_t)plen; + apdu.data=p; + int res = send_desfire_cmd(&apdu, false, value->value, resplen, &sw, 0, true); if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, _RED_(" Can't read data -> %s"), GetErrorString(res, &sw)); DropField(); return res; } + size_t dlen=(size_t)resplen; + p=mifare_cryto_postprocess_data(tag, value->value, &dlen, cs|CMAC_COMMAND|CMAC_VERIFY|MAC_VERIFY); return res; } -static int handler_desfire_writedata(mfdes_data_t *data, MFDES_FILE_TYPE_T type) { +static int handler_desfire_writedata(mfdes_data_t *data, MFDES_FILE_TYPE_T type, uint8_t cs) { /* LC FN OF OF OF LN LN LN DD DD DD 90 3d 00 00 16 01 00 00 00 0f 00 00 00 0f 20 00 3b 00 34 04 06 e1 04 0f fe 00 00 00 90 3d 00 00 09 02 00 00 00 02 00 00 00 00 00 @@ -1507,9 +1705,15 @@ static int handler_desfire_writedata(mfdes_data_t *data, MFDES_FILE_TYPE_T type) tmp[5] = (datasize >> 8) & 0xFF; tmp[6] = (datasize >> 16) & 0xFF; - memcpy(&tmp[7], &data->data[pos], datasize); + + size_t plen=datasize; + uint8_t *p=mifare_cryto_preprocess_data(tag,(uint8_t *)&data->data[pos],&plen,0,cs | MAC_COMMAND | CMAC_COMMAND | ENC_COMMAND); + if (plen!=-1) datasize=(uint8_t)plen; + memcpy(&tmp[7], p, datasize); + apdu.Lc = datasize + 1 + 3 + 3; + res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, _RED_(" Can't write data -> %s"), GetErrorString(res, &sw)); @@ -1653,13 +1857,13 @@ int getKeySettings(uint8_t *aid) { // CARD MASTER KEY //PrintAndLogEx(INFO, "--- " _CYAN_("CMK - PICC, Card Master Key settings")); - res = handler_desfire_select_application(aid); - if (res != PM3_SUCCESS) return res; // KEY Settings - AMK uint8_t num_keys = 0; uint8_t key_setting = 0; - res = handler_desfire_keysettings(&key_setting, &num_keys); + mifare_des_authalgo_t algo; + res=key_setting_to_algo(aid,&key_setting,&algo); + if (res == PM3_SUCCESS) { // number of Master keys (0x01) PrintAndLogEx(SUCCESS, " Number of Masterkeys : " _YELLOW_("%u"), (num_keys & 0x3F)); @@ -1674,20 +1878,9 @@ int getKeySettings(uint8_t *aid) { const char *str = " Operation of PICC master key : " _YELLOW_("%s"); - // 2 MSB denotes - switch (num_keys >> 6) { - case 0: - PrintAndLogEx(SUCCESS, str, "(3)DES"); - break; - case 1: - PrintAndLogEx(SUCCESS, str, "3K3DES"); - break; - case 2: - PrintAndLogEx(SUCCESS, str, "AES"); - break; - default: - break; - } + if (algo==MFDES_ALGO_DES) PrintAndLogEx(SUCCESS, str, "(3)DES"); + else if (algo==MFDES_ALGO_AES) PrintAndLogEx(SUCCESS, str, "AES"); + else if (algo==MFDES_ALGO_3K3DES) PrintAndLogEx(SUCCESS, str, "3K3DES"); uint8_t cmk_num_versions = 0; if (handler_desfire_keyversion(0, &cmk_num_versions) == PM3_SUCCESS) { @@ -1720,9 +1913,10 @@ int getKeySettings(uint8_t *aid) { // KEY Settings - AMK uint8_t num_keys = 0; uint8_t key_setting = 0; - res = handler_desfire_keysettings(&key_setting, &num_keys); + mifare_des_authalgo_t algo; + res=key_setting_to_algo(aid,&key_setting,&algo); if (res == PM3_SUCCESS) { - desfire_print_keysetting(key_setting, num_keys); + desfire_print_keysetting(key_setting, algo); } else { PrintAndLogEx(WARNING, _RED_(" Can't read Application Master key settings")); } @@ -1778,6 +1972,129 @@ static void swap16(uint8_t *data) { data[1] = tmp; }; +int desfire_authenticate(int cmdAuthMode, int cmdAuthAlgo, uint8_t* aid, uint8_t* key, int cmdKeyNo, mfdes_auth_res_t* rpayload) +{ + switch (cmdAuthMode) { + case MFDES_AUTH_DES: + if (cmdAuthAlgo != MFDES_ALGO_DES && cmdAuthAlgo != MFDES_ALGO_3DES) { + PrintAndLogEx(NORMAL, "Crypto algo not valid for the auth des mode"); + return PM3_EINVARG; + } + break; + case MFDES_AUTH_ISO: + if (cmdAuthAlgo != MFDES_ALGO_3DES && cmdAuthAlgo != MFDES_ALGO_3K3DES) { + PrintAndLogEx(NORMAL, "Crypto algo not valid for the auth iso mode"); + return PM3_EINVARG; + } + break; + case MFDES_AUTH_AES: + if (cmdAuthAlgo != MFDES_ALGO_AES) { + PrintAndLogEx(NORMAL, "Crypto algo not valid for the auth aes mode"); + return PM3_EINVARG; + } + break; + case MFDES_AUTH_PICC: + if (cmdAuthAlgo != MFDES_AUTH_DES) { + PrintAndLogEx(NORMAL, "Crypto algo not valid for the auth picc mode"); + return PM3_EINVARG; + } + break; + default: + PrintAndLogEx(WARNING, "Wrong Auth mode (%d) -> (1=normal, 2=iso, 3=aes)", cmdAuthMode); + return PM3_EINVARG; + } + + int keylength=16; + + switch (cmdAuthAlgo) { + case MFDES_ALGO_3DES: + keylength = 16; + break; + case MFDES_ALGO_3K3DES: + keylength = 24; + break; + case MFDES_ALGO_AES: + keylength = 16; + break; + default: + cmdAuthAlgo = MFDES_ALGO_DES; + keylength = 8; + break; + } + + // KEY + int res = handler_desfire_select_application(aid); + if (res != PM3_SUCCESS) return res; + + if (memcmp(aid, "\x00\x00\x00", 3) != 0) { + uint8_t file_ids[33] = {0}; + uint8_t file_ids_len = 0; + res = handler_desfire_fileids(file_ids, &file_ids_len); + if (res != PM3_SUCCESS) return res; + } + + mfdes_authinput_t payload; + payload.keylen = keylength; + memcpy(payload.key, key, keylength); + payload.mode = cmdAuthMode; + payload.algo = cmdAuthAlgo; + payload.keyno = cmdKeyNo; + + int error = handler_desfire_auth(&payload, rpayload); + if (error == PM3_SUCCESS) { + memcpy(¤tauth[payload.keyno], &payload, sizeof(mfdes_authinput_t)); + } + return error; +} + +static int CmdHF14ADesGetUID(const char *Cmd) { + (void)Cmd; + + uint8_t uid[16]={0}; + int res = handler_desfire_getuid(uid); + if (res != PM3_SUCCESS) { + DropField(); + PrintAndLogEx(ERR, "Error on getting uid."); + return res; + } + PrintAndLogEx(SUCCESS, " UID: " _GREEN_("%s"), sprint_hex(uid, sizeof(uid))); + return res; +} + +static int CmdHF14ADesSelectApp(const char *Cmd) { + CLIParserInit("hf mfdes selectaid", + "Select Application ID", + "Usage:\n\thf mfdes selectaid -a 123456\n" + ); + + void *argtable[] = { + arg_param_begin, + arg_strx0("aA", "aid", "<aid>", "App ID to select as hex bytes (3 bytes,big endian)"), + arg_param_end + }; + CLIExecWithReturn(Cmd, argtable, false); + int aidlength = 3; + uint8_t aid[3] = {0}; + CLIGetHexWithReturn(1, aid, &aidlength); + CLIParserFree(); + + swap24(aid); + + if (aidlength != 3) { + PrintAndLogEx(ERR, "AID must have 3 bytes length"); + return PM3_EINVARG; + } + + int res = handler_desfire_select_application(aid); + if (res != PM3_SUCCESS) { + DropField(); + PrintAndLogEx(ERR, "Error on selecting aid."); + return res; + } + PrintAndLogEx(SUCCESS, "Successfully selected aid."); + return res; +} + static int CmdHF14ADesCreateApp(const char *Cmd) { CLIParserInit("hf mfdes createaid", @@ -1848,7 +2165,7 @@ static int CmdHF14ADesCreateApp(const char *Cmd) { return PM3_EINVARG; } - if (fidlength != 2) { + if (fidlength != 2 && fidlength!=0) { PrintAndLogEx(ERR, "FID must have 2 bytes length"); return PM3_EINVARG; } @@ -1902,6 +2219,7 @@ static int CmdHF14ADesCreateApp(const char *Cmd) { res = handler_desfire_createapp(&aidhdr, usename, usefid); DropField(); + PrintAndLogEx(SUCCESS, "Successfully created aid."); return res; } @@ -1938,6 +2256,36 @@ static int CmdHF14ADesDeleteApp(const char *Cmd) { if (res != PM3_SUCCESS) { DropField(); return res;} res = handler_desfire_deleteapp(aid); DropField(); + PrintAndLogEx(SUCCESS, "Successfully deleted aid."); + return res; +} + +static int selectfile(uint8_t* aid, int fileno, uint8_t* cs){ + if (handler_desfire_select_application(aid)!=PM3_SUCCESS) { + PrintAndLogEx(ERR, _RED_(" Couldn't select aid.")); + return PM3_ESOFT; + } + + uint8_t filesettings[20] = {0}; + int fileset_len = 0; + int res = handler_desfire_filesettings(fileno, filesettings, &fileset_len); + + if (tag->session_key!=NULL) + { + mfdes_auth_res_t rpayload; + int keyno=(filesettings[0]>>4)&0xF; + if (keyno!=0xE && currentauth[keyno].keyno==keyno) { + if (handler_desfire_auth(¤tauth[keyno], &rpayload) != PM3_SUCCESS) { + PrintAndLogEx(ERR, _RED_(" Couldn't authenticate key.")); + return PM3_ESOFT; + } + } else if (keyno!=0xE) + { + PrintAndLogEx(ERR, _RED_(" Please authenticate first.")); + return PM3_ESOFT; + } + } + *cs=filesettings[1]; return res; } @@ -1946,27 +2294,25 @@ static int CmdHF14ADesClearRecordFile(const char *Cmd) { CLIParserInit("hf mfdes clearrecord", "Clear record file", "Usage:\n\t" - "hf mfdes clearrecord -a 123456 -n 01\n" + "hf mfdes clearrecord -n 01\n" + "Make sure to select aid or authenticate aid before running this command.\n" ); void *argtable[] = { arg_param_begin, - arg_strx0("aA", "aid", "<aid>", "AID for file (3 hex bytes, big endian)"), arg_strx0("nN", "fileno", "<fileno>", "File Number (1 hex byte, 0x00 - 0x1F)"), + arg_strx0("aA", "aid", "<aid>", "App ID to select as hex bytes (3 bytes,big endian,optional)"), arg_param_end }; CLIExecWithReturn(Cmd, argtable, false); - int aidlength = 0; - uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); int filenolen = 0; uint8_t fileno[1] = {0}; - CLIGetHexWithReturn(2, fileno, &filenolen); - - int fidlength = 0; - uint8_t fid[2] = {0}; - CLIParamHexToBuf(arg_get_str(3), fid, 2, &fidlength); + CLIGetHexWithReturn(1, fileno, &filenolen); + int aidlength = 3; + uint8_t aid[3] = {0}; + CLIGetHexWithReturn(2, aid, &aidlength); + swap24(aid); CLIParserFree(); if (filenolen != 1) { @@ -1979,20 +2325,24 @@ static int CmdHF14ADesClearRecordFile(const char *Cmd) { return PM3_EINVARG; } - // AID - if (aidlength != 3) { - PrintAndLogEx(WARNING, "aid must include %d HEX symbols", 3); - return PM3_EINVARG; + if (aidlength != 3 && aidlength != 0) { + PrintAndLogEx(ERR, _RED_(" The given aid must have 3 bytes (big endian).")); + return PM3_ESOFT; + } else if (aidlength == 0) { + if (memcmp(&tag->selected_application, aid, 3) == 0) { + PrintAndLogEx(ERR, _RED_(" You need to select an aid first.")); + return PM3_ESOFT; + } + memcpy(aid,(uint8_t *)&tag->selected_application,3); } - swap24(aid); - int res = handler_desfire_select_application(aid); - if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Couldn't select aid."); - DropField(); - return res; + uint8_t cs=0; + if (selectfile(aid,fileno[0],&cs)!=PM3_SUCCESS) + { + PrintAndLogEx(ERR, _RED_(" Error on selecting file.")); + return PM3_ESOFT; } - res = handler_desfire_clearrecordfile(fileno[0]); + int res = handler_desfire_clearrecordfile(fileno[0]); if (res == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "Successfully cleared record file."); } else { @@ -2006,27 +2356,24 @@ static int CmdHF14ADesDeleteFile(const char *Cmd) { CLIParserInit("hf mfdes deletefile", "Delete File", "Usage:\n\t" - "hf mfdes deletefile -a 123456 -n 01\n" + "hf mfdes deletefile -n 01\n" + "Make sure to select aid or authenticate aid before running this command.\n" ); void *argtable[] = { arg_param_begin, - arg_strx0("aA", "aid", "<aid>", "AID for file (3 hex bytes, big endian)"), arg_strx0("nN", "fileno", "<fileno>", "File Number (1 hex byte, 0x00 - 0x1F)"), + arg_strx0("aA", "aid", "<aid>", "App ID to select as hex bytes (3 bytes,big endian,optional)"), arg_param_end }; CLIExecWithReturn(Cmd, argtable, false); - int aidlength = 0; - uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); - int filenolen = 0; uint8_t fileno[1] = {0}; - CLIGetHexWithReturn(2, fileno, &filenolen); - - int fidlength = 0; - uint8_t fid[2] = {0}; - CLIParamHexToBuf(arg_get_str(3), fid, 2, &fidlength); + CLIGetHexWithReturn(1, fileno, &filenolen); + int aidlength = 3; + uint8_t aid[3] = {0}; + CLIGetHexWithReturn(2, aid, &aidlength); + swap24(aid); CLIParserFree(); if (filenolen != 1) { @@ -2039,20 +2386,24 @@ static int CmdHF14ADesDeleteFile(const char *Cmd) { return PM3_EINVARG; } - // AID - if (aidlength != 3) { - PrintAndLogEx(WARNING, "aid must include %d HEX symbols", 3); - return PM3_EINVARG; + if (aidlength != 3 && aidlength != 0) { + PrintAndLogEx(ERR, _RED_(" The given aid must have 3 bytes (big endian).")); + return PM3_ESOFT; + } else if (aidlength == 0) { + if (memcmp(&tag->selected_application, aid, 3) == 0) { + PrintAndLogEx(ERR, _RED_(" You need to select an aid first.")); + return PM3_ESOFT; + } + memcpy(aid,(uint8_t *)&tag->selected_application,3); } - swap24(aid); - int res = handler_desfire_select_application(aid); - if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Couldn't select aid."); - DropField(); - return res; + uint8_t cs=0; + if (selectfile(aid,fileno[0],&cs)!=PM3_SUCCESS) + { + PrintAndLogEx(ERR, _RED_(" Error on selecting file.")); + return PM3_ESOFT; } - res = handler_desfire_deletefile(fileno[0]); + int res = handler_desfire_deletefile(fileno[0]); if (res == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "Successfully deleted file.."); } else { @@ -2066,46 +2417,45 @@ static int CmdHF14ADesCreateFile(const char *Cmd) { CLIParserInit("hf mfdes createfile", "Create Standard/Backup File", "Usage:" - "\n\thf mfdes createfile -a 123456 -f 1111 -n 01 -c 0 -r EEEE -s 000100\n" + "\n\thf mfdes createfile -f 0001 -n 01 -c 0 -r EEEE -s 000100 -a 123456\n" ); void *argtable[] = { arg_param_begin, - arg_strx0("aA", "aid", "<aid>", "AID for file (3 hex bytes, big endian)"), arg_strx0("nN", "fileno", "<fileno>", "File Number (1 hex byte, 0x00 - 0x1F)"), arg_strx0("fF", "fileid", "<fileid>", "ISO FID (2 hex bytes, big endian)"), arg_int0("cC", "com.set", "<comset>", "Communication setting (0=Plain,1=Plain+MAC,3=Enciphered)"), - arg_strx0("rR", "accessrights", "<accessrights>", "Access rights (2 hex bytes -> R/W/RW/Chg, 0-D Key, E Free, F Denied)"), + arg_strx0("rR", "accessrights", "<accessrights>", "Access rights (2 hex bytes -> RW/Chg/R/W, 0-D Key, E Free, F Denied)"), arg_strx0("sS", "filesize", "<filesize>", "File size (3 hex bytes, big endian)"), arg_lit0("bB", "backup", "Create backupfile instead of standard file"), + arg_strx0("aA", "aid", "<aid>", "App ID to select as hex bytes (3 bytes,big endian)"), arg_param_end }; CLIExecWithReturn(Cmd, argtable, false); - int aidlength = 0; - uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); - int filenolen = 0; uint8_t fileno[1] = {0}; - CLIGetHexWithReturn(2, fileno, &filenolen); + CLIGetHexWithReturn(1, fileno, &filenolen); int fidlength = 0; uint8_t fid[2] = {0}; - CLIParamHexToBuf(arg_get_str(3), fid, 2, &fidlength); + CLIParamHexToBuf(arg_get_str(2), fid, 2, &fidlength); - uint8_t comset = arg_get_int(4); + uint8_t comset = arg_get_int(3); int arlength = 0; uint8_t ar[2] = {0}; - CLIGetHexWithReturn(5, ar, &arlength); + CLIGetHexWithReturn(4, ar, &arlength); int fsizelen = 0; uint8_t filesize[3] = {0}; - CLIGetHexWithReturn(6, filesize, &fsizelen); + CLIGetHexWithReturn(5, filesize, &fsizelen); - bool isbackup = arg_get_lit(7); + bool isbackup = arg_get_lit(6); + int aidlength = 3; + uint8_t aid[3] = {0}; + CLIGetHexWithReturn(7, aid, &aidlength); + swap24(aid); CLIParserFree(); - swap24(aid); swap16(fid); swap24(filesize); @@ -2138,19 +2488,6 @@ static int CmdHF14ADesCreateFile(const char *Cmd) { return PM3_EINVARG; } - // AID - if (aidlength != 3) { - PrintAndLogEx(WARNING, "aid must include %d HEX symbols", 3); - return PM3_EINVARG; - } - - int res = handler_desfire_select_application(aid); - if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Couldn't select aid."); - DropField(); - return res; - } - mfdes_file_t ft; memcpy(ft.fid, fid, 2); memcpy(ft.filesize, filesize, 3); @@ -2158,6 +2495,27 @@ static int CmdHF14ADesCreateFile(const char *Cmd) { ft.comset = comset; memcpy(ft.access_rights, ar, 2); + if (aidlength != 3 && aidlength != 0) { + PrintAndLogEx(ERR, _RED_(" The given aid must have 3 bytes (big endian).")); + DropField(); + return PM3_ESOFT; + } else if (aidlength == 0) { + if (memcmp(&tag->selected_application, aid, 3) == 0) { + PrintAndLogEx(ERR, _RED_(" You need to select an aid first.")); + DropField(); + return PM3_ESOFT; + } + memcpy(aid,(uint8_t *)&tag->selected_application,3); + } + + int res=handler_desfire_select_application(aid); + if (res!=PM3_SUCCESS){ + PrintAndLogEx(ERR, "Couldn't select aid. Error %d", res); + DropField(); + return res; + } + + if (isbackup) res = handler_desfire_create_backup_file(&ft); else res = handler_desfire_create_std_file(&ft); @@ -2174,24 +2532,26 @@ static int CmdHF14ADesGetValueData(const char *Cmd) { CLIParserInit("hf mfdes getvalue", "Get value from value file", "Usage:" - "\n\thf mfdes getvalue -a 123456 -n 03\n" + "\n\thf mfdes getvalue -n 03\n" + "Make sure to select aid or authenticate aid before running this command.\n" ); void *argtable[] = { arg_param_begin, - arg_strx0("aA", "aid", "<aid>", "AID for file (3 hex bytes, big endian)"), arg_strx0("nN", "fileno", "<fileno>", "File Number (1 hex byte, 0x00 - 0x1F)"), + arg_strx0("aA", "aid", "<aid>", "App ID to select as hex bytes (3 bytes,big endian)"), arg_param_end }; CLIExecWithReturn(Cmd, argtable, false); - int aidlength = 0; - uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); - int filenolen = 0; uint8_t fileno[1] = {0}; - CLIGetHexWithReturn(2, fileno, &filenolen); + CLIGetHexWithReturn(1, fileno, &filenolen); + int aidlength = 3; + uint8_t aid[3] = {0}; + CLIGetHexWithReturn(2, aid, &aidlength); + swap24(aid); + CLIParserFree(); if (filenolen != 1) { @@ -2204,25 +2564,28 @@ static int CmdHF14ADesGetValueData(const char *Cmd) { return PM3_EINVARG; } - // AID - if (aidlength != 3) { - PrintAndLogEx(WARNING, "aid must include %d HEX symbols", 3); - return PM3_EINVARG; - } - - swap24(aid); - - int res = handler_desfire_select_application(aid); - if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Couldn't select aid."); - DropField(); - return res; - } mfdes_value_t value; value.fileno = fileno[0]; + if (aidlength != 3 && aidlength != 0) { + PrintAndLogEx(ERR, _RED_(" The given aid must have 3 bytes (big endian).")); + return PM3_ESOFT; + } else if (aidlength == 0) { + if (memcmp(&tag->selected_application, aid, 3) == 0) { + PrintAndLogEx(ERR, _RED_(" You need to select an aid first.")); + return PM3_ESOFT; + } + memcpy(aid,(uint8_t *)&tag->selected_application,3); + } + uint8_t cs=0; + if (selectfile(aid,value.fileno,&cs)!=PM3_SUCCESS) + { + PrintAndLogEx(ERR, _RED_(" Error on selecting file.")); + return PM3_ESOFT; + } + int len = 0; - res = handler_desfire_getvalue(&value, &len); + int res = handler_desfire_getvalue(&value, &len, cs); if (res == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "Successfully read value from File %u:", fileno[0]); PrintAndLogEx(NORMAL, "\nOffset | Data | Ascii"); @@ -2242,36 +2605,40 @@ static int CmdHF14ADesReadData(const char *Cmd) { CLIParserInit("hf mfdes readdata", "Read data from File", "Usage:" - "\n\thf mfdes readdata -a 123456 -n 01 -t 0 -o 000000 -l 000000\n" - ); + "\n\thf mfdes readdata -n 01 -t 0 -o 000000 -l 000000 -a 123456\n" + "\thf mfdes readdata -n 01 -t 0 (Read all data from standard file, fileno 01)\n" + "Make sure to select aid or authenticate aid before running this command.\n" + ); void *argtable[] = { - arg_param_begin, - arg_strx0("aA", "aid", "<aid>", "AID for file (3 hex bytes, big endian)"), - arg_strx0("nN", "fileno", "<fileno>", "File Number (1 hex byte, 0x00 - 0x1F)"), - arg_strx0("oO", "offset", "<offset>", "File Offset (3 hex bytes, big endian), optional"), - arg_strx0("lL", "length", "<length>", "Length to read (3 hex bytes, big endian -> 000000 = Read all data),optional"), - arg_int0("type", "type", "<type>", "File Type (0=Standard/Backup, 1=Record)"), - arg_param_end + arg_param_begin, + arg_strx0("nN", "fileno", "<fileno>", "File Number (1 hex byte, 0x00 - 0x1F)"), + arg_strx0("oO", "offset", "<offset>", "File Offset (3 hex bytes, big endian), optional"), + arg_strx0("lL", "length", "<length>", + "Length to read (3 hex bytes, big endian -> 000000 = Read all data),optional"), + arg_int0("tT", "type", "<type>", "File Type (0=Standard/Backup, 1=Record)"), + arg_strx0("aA", "aid", "<aid>", "App ID to select as hex bytes (3 bytes,big endian,optional)"), + arg_param_end }; CLIExecWithReturn(Cmd, argtable, false); - int aidlength = 0; - uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); - int filenolen = 0; uint8_t fileno[1] = {0}; - CLIGetHexWithReturn(2, fileno, &filenolen); + CLIGetHexWithReturn(1, fileno, &filenolen); int offsetlength = 0; uint8_t offset[3] = {0}; - CLIParamHexToBuf(arg_get_str(3), offset, 3, &offsetlength); + CLIParamHexToBuf(arg_get_str(2), offset, 3, &offsetlength); int flength = 0; uint8_t filesize[3] = {0}; - CLIParamHexToBuf(arg_get_str(4), filesize, 3, &flength); + CLIParamHexToBuf(arg_get_str(3), filesize, 3, &flength); - int type = arg_get_int(5); + int type = arg_get_int(4); + + int aidlength = 3; + uint8_t aid[3] = {0}; + CLIGetHexWithReturn(5, aid, &aidlength); + swap24(aid); CLIParserFree(); if (type > 1) { @@ -2294,23 +2661,9 @@ static int CmdHF14ADesReadData(const char *Cmd) { return PM3_EINVARG; } - // AID - if (aidlength != 3) { - PrintAndLogEx(WARNING, "aid must include %d HEX symbols", 3); - return PM3_EINVARG; - } - - swap24(aid); swap24(filesize); swap24(offset); - int res = handler_desfire_select_application(aid); - if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Couldn't select aid."); - DropField(); - return res; - } - mfdes_data_t ft; memcpy(ft.offset, offset, 3); memcpy(ft.length, filesize, 3); @@ -2320,20 +2673,41 @@ static int CmdHF14ADesReadData(const char *Cmd) { if (bytestoread == 0) bytestoread = 0xFFFFFF; + if (aidlength != 3 && aidlength != 0) { + PrintAndLogEx(ERR, _RED_(" The given aid must have 3 bytes (big endian).")); + return PM3_ESOFT; + } else if (aidlength == 0) { + if (memcmp(&tag->selected_application, aid, 3) == 0) { + PrintAndLogEx(ERR, _RED_(" You need to select an aid first.")); + return PM3_ESOFT; + } + memcpy(aid,(uint8_t *)&tag->selected_application,3); + } + uint8_t cs=0; + if (selectfile(aid,ft.fileno,&cs)!=PM3_SUCCESS) + { + PrintAndLogEx(ERR, _RED_(" Error on selecting file.")); + return PM3_ESOFT; + } + uint8_t *data = (uint8_t *)calloc(bytestoread, sizeof(uint8_t)); + int res=PM3_ESOFT; if (data != NULL) { ft.data = data; - res = handler_desfire_readdata(&ft, type); + res = handler_desfire_readdata(&ft, type,cs); if (res == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "Successfully read data from file %d:", ft.fileno); PrintAndLogEx(NORMAL, "\nOffset | Data | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); int len = le24toh(ft.length); for (int i = 0; i < len; i += 16) { - PrintAndLogEx(NORMAL, "%02d/0x%02X | %s| %s", i, i, sprint_hex(&ft.data[i], len > 16 ? 16 : len), sprint_ascii(&ft.data[i], len > 16 ? 16 : len)); + int l=len-i; + PrintAndLogEx(NORMAL, "%02d/0x%02X | %s| %s", i, i, sprint_hex(&ft.data[i], l > 16 ? 16 : l), sprint_ascii(&ft.data[i], l > 16 ? 16 : l)); } } else { PrintAndLogEx(ERR, "Couldn't read data. Error %d", res); + DropField(); + return res; } free(data); } @@ -2345,37 +2719,38 @@ static int CmdHF14ADesChangeValue(const char *Cmd) { CLIParserInit("hf mfdes changevalue", "Change value (credit/limitedcredit/debit)", "Usage:" - "\n\thf mfdes changevalue -a 123456 -n 03 -m 0 -d 00000001\n" + "\n\thf mfdes changevalue -n 03 -m 0 -d 00000001\n" + "Make sure to select aid or authenticate aid before running this command.\n" ); void *argtable[] = { arg_param_begin, - arg_strx0("aA", "aid", "<aid>", "AID for file (3 hex bytes, big endian)"), arg_strx0("nN", "fileno", "<fileno>", "File Number (1 hex byte, 0x00 - 0x1F)"), arg_strx0("dD", "value", "<value>", "Value to increase (4 hex bytes, big endian)"), arg_int0("mM", "mode", "<mode>", "Mode (0=Credit, 1=LimitedCredit, 2=Debit)"), + arg_strx0("aA", "aid", "<aid>", "App ID to select as hex bytes (3 bytes,big endian)"), arg_param_end }; mfdes_value_t value; CLIExecWithReturn(Cmd, argtable, false); - int aidlength = 0; - uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); - int filenolen = 0; uint8_t fileno[1] = {0}; - CLIGetHexWithReturn(2, fileno, &filenolen); + CLIGetHexWithReturn(1, fileno, &filenolen); value.fileno = fileno[0]; int vlength = 0x0; - CLIParamHexToBuf(arg_get_str(3), value.value, 4, &vlength); + CLIParamHexToBuf(arg_get_str(2), value.value, 4, &vlength); - int mode = arg_get_int(4); - CLIParserFree(); + int mode = arg_get_int(3); + int aidlength = 3; + uint8_t aid[3] = {0}; + CLIGetHexWithReturn(4, aid, &aidlength); swap24(aid); + CLIParserFree(); + if (mode > 2) { PrintAndLogEx(ERR, "Invalid mode (0=Credit, 1=LimitedCredit, 2=Debit)."); return PM3_EINVARG; @@ -2397,25 +2772,31 @@ static int CmdHF14ADesChangeValue(const char *Cmd) { return PM3_EINVARG; } - // AID - if (aidlength != 3) { - PrintAndLogEx(WARNING, "aid must include %d HEX symbols", 3); - return PM3_EINVARG; + if (aidlength != 3 && aidlength != 0) { + PrintAndLogEx(ERR, _RED_(" The given aid must have 3 bytes (big endian).")); + return PM3_ESOFT; + } else if (aidlength == 0) { + if (memcmp(&tag->selected_application, aid, 3) == 0) { + PrintAndLogEx(ERR, _RED_(" You need to select an aid first.")); + return PM3_ESOFT; + } + memcpy(aid,(uint8_t *)&tag->selected_application,3); + } + uint8_t cs=0; + if (selectfile(aid,fileno[0],&cs)!=PM3_SUCCESS) + { + PrintAndLogEx(ERR, _RED_(" Error on selecting file.")); + return PM3_ESOFT; } - int res = handler_desfire_select_application(aid); - if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Couldn't select aid."); - DropField(); - return res; - } + int res=PM3_ESOFT; if (mode == 0) { - res = handler_desfire_credit(&value); + res = handler_desfire_credit(&value,cs); } else if (mode == 1) { - res = handler_desfire_limitedcredit(&value); + res = handler_desfire_limitedcredit(&value,cs); } else if (mode == 2) { - res = handler_desfire_debit(&value); + res = handler_desfire_debit(&value,cs); } if (res == PM3_SUCCESS) { @@ -2437,32 +2818,29 @@ static int CmdHF14ADesWriteData(const char *Cmd) { CLIParserInit("hf mfdes writedata", "Write data to File", "Usage:" - "\n\thf mfdes writedata -a 123456 -n 01 -t 0 -o 000000 -d 3132333435363738\n" + "\n\thf mfdes writedata -n 01 -t 0 -o 000000 -d 3132333435363738\n" + "Make sure to select aid or authenticate aid before running this command.\n" ); void *argtable[] = { arg_param_begin, - arg_strx0("aA", "aid", "<aid>", "AID for file (3 hex bytes, big endian)"), arg_strx0("nN", "fileno", "<fileno>", "File Number (1 hex byte, 0x00 - 0x1F)"), arg_strx0("oO", "offset", "<offset>", "File Offset (3 hex bytes, big endian), optional"), arg_strx0("dD", "data", "<data>", "Data to write (hex bytes, 0xFFFF bytes max.)"), arg_int0("type", "type", "<type>", "File Type (0=Standard/Backup, 1=Record)"), + arg_strx0("aA", "aid", "<aid>", "App ID to select as hex bytes (3 bytes,big endian, optional)"), arg_param_end }; CLIExecWithReturn(Cmd, argtable, false); - int aidlength = 0; - uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); - int filenolen = 0; uint8_t fileno[1] = {0}; - CLIGetHexWithReturn(2, fileno, &filenolen); + CLIGetHexWithReturn(1, fileno, &filenolen); int offsetlength = 0; uint8_t offset[3] = {0}; - CLIParamHexToBuf(arg_get_str(3), offset, 3, &offsetlength); + CLIParamHexToBuf(arg_get_str(2), offset, 3, &offsetlength); int dlength = 0xFFFF; uint8_t *data = (uint8_t *)calloc(0xFFFF, sizeof(uint8_t)); @@ -2470,13 +2848,16 @@ static int CmdHF14ADesWriteData(const char *Cmd) { PrintAndLogEx(ERR, "failed to allocate memory"); return PM3_EMALLOC; } - CLIParamHexToBuf(arg_get_str(4), data, 0xFFFF, &dlength); + CLIParamHexToBuf(arg_get_str(3), data, 0xFFFF, &dlength); - int type = arg_get_int(5); + int type = arg_get_int(4); + int aidlength = 3; + uint8_t aid[3] = {0}; + CLIGetHexWithReturn(5, aid, &aidlength); + swap24(aid); CLIParserFree(); - swap24(aid); swap24(offset); if (type < 0 || type > 1) { @@ -2509,30 +2890,33 @@ static int CmdHF14ADesWriteData(const char *Cmd) { return PM3_EINVARG; } - // AID - if (aidlength != 3) { - PrintAndLogEx(WARNING, "aid must include %d HEX symbols", 3); - if (data) free(data); - return PM3_EINVARG; - } - - int res = handler_desfire_select_application(aid); - if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Couldn't select aid"); - DropField(); - if (data) free(data); - return res; - } - mfdes_data_t ft; memcpy(ft.offset, offset, 3); htole24(dlength, ft.length); ft.fileno = fileno[0]; + if (aidlength != 3 && aidlength != 0) { + PrintAndLogEx(ERR, _RED_(" The given aid must have 3 bytes (big endian).")); + return PM3_ESOFT; + } else if (aidlength == 0) { + if (memcmp(&tag->selected_application, aid, 3) == 0) { + PrintAndLogEx(ERR, _RED_(" You need to select an aid first.")); + return PM3_ESOFT; + } + memcpy(aid,(uint8_t *)&tag->selected_application,3); + } + uint8_t cs=0; + if (selectfile(aid,fileno[0],&cs)!=PM3_SUCCESS) + { + PrintAndLogEx(ERR, _RED_(" Error on selecting file.")); + return PM3_ESOFT; + } + + int res=PM3_ESOFT; if (data != NULL) { ft.data = data; - res = handler_desfire_writedata(&ft, type); + res = handler_desfire_writedata(&ft, type,cs); if (res == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "Successfully wrote data"); } else { @@ -2549,51 +2933,51 @@ static int CmdHF14ADesCreateRecordFile(const char *Cmd) { CLIParserInit("hf mfdes createrecordfile", "Create Linear/Cyclic Record File", "Usage:" - "\n\thf mfdes createrecordfile -a 123456 -f 1122 -n 02 -c 0 -r EEEE -s 000010 -m 000005\n" + "\n\thf mfdes createrecordfile -f 1122 -n 02 -c 0 -r EEEE -s 000010 -m 000005 -a 123456\n" + "Make sure to select aid or authenticate aid before running this command.\n" ); void *argtable[] = { arg_param_begin, - arg_strx0("aA", "aid", "<aid>", "AID for file (3 hex bytes, big endian)"), arg_strx0("nN", "fileno", "<fileno>", "File Number (1 hex byte, 0x00 - 0x1F)"), arg_strx0("fF", "fileid", "<fileid>", "ISO FID (2 hex bytes, big endian)"), arg_int0("cC", "com.set", "<comset>", "Communication setting (0=Plain,1=Plain+MAC,3=Enciphered)"), - arg_strx0("rR", "accessrights", "<accessrights>", "Access rights (2 hex bytes -> R/W/RW/Chg, 0-D Key, E Free, F Denied)"), + arg_strx0("rR", "accessrights", "<accessrights>", "Access rights (2 hex bytes -> RW/Chg/R/W, 0-D Key, E Free, F Denied)"), arg_strx0("sS", "recordsize", "<recordsize>", "Record size (3 hex bytes, big endian, 000001 to FFFFFF)"), arg_strx0("mM", "maxnumrecord", "<maxnumrecord>", "Max. Number of Records (3 hex bytes, big endian)"), arg_lit0("bB", "cyclic", "Create cyclic record file instead of linear record file"), + arg_strx0("aA", "aid", "<aid>", "App ID to select as hex bytes (3 bytes,big endian,optional)"), arg_param_end }; CLIExecWithReturn(Cmd, argtable, false); - int aidlength = 0; - uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); - int filenolen = 0; uint8_t fileno[1] = {0}; - CLIGetHexWithReturn(2, fileno, &filenolen); + CLIGetHexWithReturn(1, fileno, &filenolen); int fidlength = 0; uint8_t fid[2] = {0}; - CLIParamHexToBuf(arg_get_str(3), fid, 2, &fidlength); + CLIParamHexToBuf(arg_get_str(2), fid, 2, &fidlength); - uint8_t comset = arg_get_int(4); + uint8_t comset = arg_get_int(3); int arlength = 0; uint8_t ar[2] = {0}; - CLIGetHexWithReturn(5, ar, &arlength); + CLIGetHexWithReturn(4, ar, &arlength); int rsizelen = 0; uint8_t recordsize[3] = {0}; - CLIGetHexWithReturn(6, recordsize, &rsizelen); + CLIGetHexWithReturn(5, recordsize, &rsizelen); int msizelen = 0; uint8_t maxnumrecords[3] = {0}; - CLIGetHexWithReturn(7, maxnumrecords, &msizelen); + CLIGetHexWithReturn(6, maxnumrecords, &msizelen); - bool cyclic = arg_get_lit(8); + bool cyclic = arg_get_lit(7); + int aidlength = 3; + uint8_t aid[3] = {0}; + CLIGetHexWithReturn(8, aid, &aidlength); + swap24(aid); CLIParserFree(); - swap24(aid); swap16(fid); swap24(recordsize); swap24(maxnumrecords); @@ -2638,19 +3022,6 @@ static int CmdHF14ADesCreateRecordFile(const char *Cmd) { return PM3_EINVARG; } - // AID - if (aidlength != 3) { - PrintAndLogEx(WARNING, "aid must include %d HEX symbols", 3); - return PM3_EINVARG; - } - - int res = handler_desfire_select_application(aid); - if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Couldn't select aid."); - DropField(); - return res; - } - mfdes_linear_t ft; ft.fileno = fileno[0]; memcpy(ft.fid, fid, 2); @@ -2659,6 +3030,23 @@ static int CmdHF14ADesCreateRecordFile(const char *Cmd) { memcpy(ft.recordsize, recordsize, 3); memcpy(ft.maxnumrecords, maxnumrecords, 3); + if (aidlength != 3 && aidlength != 0) { + PrintAndLogEx(ERR, _RED_(" The given aid must have 3 bytes (big endian).")); + return PM3_ESOFT; + } else if (aidlength == 0) { + if (memcmp(&tag->selected_application, aid, 3) == 0) { + PrintAndLogEx(ERR, _RED_(" You need to select an aid first.")); + return PM3_ESOFT; + } + memcpy(aid,(uint8_t *)&tag->selected_application,3); + } + if (handler_desfire_select_application(aid)!=PM3_SUCCESS) + { + PrintAndLogEx(ERR, _RED_(" Error on selecting aid.")); + return PM3_ESOFT; + } + + int res=PM3_SUCCESS; if (cyclic) res = handler_desfire_create_cyclicrecordfile(&ft); else res = handler_desfire_create_linearrecordfile(&ft); if (res == PM3_SUCCESS) { @@ -2674,54 +3062,53 @@ static int CmdHF14ADesCreateValueFile(const char *Cmd) { CLIParserInit("hf mfdes createvaluefile", "Create Value File", "Usage:" - "\n\thf mfdes createvaluefile -a 123456 -n 03 -c 0 -r EEEE -l 00000000 -u 00002000 -v 00000001 -m 02\n" + "\n\thf mfdes createvaluefile -n 03 -c 0 -r EEEE -l 00000000 -u 00002000 -v 00000001 -m 02 -a 123456\n" + "Make sure to select aid or authenticate aid before running this command.\n" ); void *argtable[] = { arg_param_begin, - arg_strx0("aA", "aid", "<aid>", "AID for file (3 hex bytes, big endian)"), arg_strx0("nN", "fileno", "<fileno>", "File Number (1 hex byte, 0x00 - 0x1F)"), arg_int0("cC", "com.set", "<comset>", "Communication setting (0=Plain,1=Plain+MAC,3=Enciphered)"), - arg_strx0("rR", "accessrights", "<accessrights>", "Access rights (2 hex bytes -> R/W/RW/Chg, 0-D Key, E Free, F Denied)"), + arg_strx0("rR", "accessrights", "<accessrights>", "Access rights (2 hex bytes -> RW/Chg/R/W, 0-D Key, E Free, F Denied)"), arg_strx0("lL", "lowerlimit", "<lowerlimit>", "Lower limit (4 hex bytes, big endian)"), arg_strx0("uU", "upperlimit", "<upperlimit>", "Upper limit (4 hex bytes, big endian)"), arg_strx0("vV", "value", "<value>", "Value (4 hex bytes, big endian)"), arg_strx0("mM", "limitcredit", "<limitcredit>", "Limited Credit enabled (1 hex byte [Bit 0=LimitedCredit, 1=FreeValue])"), + arg_strx0("aA", "aid", "<aid>", "App ID to select as hex bytes (3 bytes,big endian,optional)"), arg_param_end }; CLIExecWithReturn(Cmd, argtable, false); - int aidlength = 0; - uint8_t aid[3] = {0}; - CLIGetHexWithReturn(1, aid, &aidlength); - int filenolen = 0; uint8_t fileno[1] = {0}; - CLIGetHexWithReturn(2, fileno, &filenolen); + CLIGetHexWithReturn(1, fileno, &filenolen); - uint8_t comset = arg_get_int(3); + uint8_t comset = arg_get_int(2); int arlength = 0; uint8_t ar[2] = {0}; - CLIGetHexWithReturn(4, ar, &arlength); + CLIGetHexWithReturn(3, ar, &arlength); int lllen = 0; uint8_t lowerlimit[4] = {0}; - CLIGetHexWithReturn(5, lowerlimit, &lllen); + CLIGetHexWithReturn(4, lowerlimit, &lllen); int ullen = 0; uint8_t upperlimit[4] = {0}; - CLIGetHexWithReturn(6, upperlimit, &ullen); + CLIGetHexWithReturn(5, upperlimit, &ullen); int vllen = 0; uint8_t value[4] = {0}; - CLIGetHexWithReturn(7, value, &vllen); + CLIGetHexWithReturn(6, value, &vllen); int limitedlen = 0; uint8_t limited[1] = {0}; - CLIGetHexWithReturn(8, limited, &limitedlen); - + CLIGetHexWithReturn(7, limited, &limitedlen); + int aidlength = 3; + uint8_t aid[3] = {0}; + CLIGetHexWithReturn(8, aid, &aidlength); + swap24(aid); CLIParserFree(); - swap24(aid); swap32(lowerlimit); swap32(upperlimit); swap32(value); @@ -2765,18 +3152,6 @@ static int CmdHF14ADesCreateValueFile(const char *Cmd) { PrintAndLogEx(WARNING, "Limited Credit Enabled must have 1 hex byte"); return PM3_EINVARG; } - // AID - if (aidlength != 3) { - PrintAndLogEx(WARNING, "aid must include %d HEX symbols", 3); - return PM3_EINVARG; - } - - int res = handler_desfire_select_application(aid); - if (res != PM3_SUCCESS) { - PrintAndLogEx(ERR, "Couldn't select aid."); - DropField(); - return res; - } mfdes_value_file_t ft; ft.fileno = fileno[0]; @@ -2787,7 +3162,24 @@ static int CmdHF14ADesCreateValueFile(const char *Cmd) { memcpy(ft.value, value, 4); ft.limitedcreditenabled = limited[0]; - res = handler_desfire_create_value_file(&ft); + if (aidlength != 3 && aidlength != 0) { + PrintAndLogEx(ERR, _RED_(" The given aid must have 3 bytes (big endian).")); + return PM3_ESOFT; + } else if (aidlength == 0) { + if (memcmp(&tag->selected_application, aid, 3) == 0) { + PrintAndLogEx(ERR, _RED_(" You need to select an aid first.")); + return PM3_ESOFT; + } + memcpy(aid,(uint8_t *)&tag->selected_application,3); + } + + if (handler_desfire_select_application(aid)!=PM3_SUCCESS) + { + PrintAndLogEx(ERR, _RED_(" Error on selecting aid.")); + return PM3_ESOFT; + } + + int res = handler_desfire_create_value_file(&ft); if (res == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "Successfully created value file."); } else { @@ -2800,79 +3192,23 @@ static int CmdHF14ADesCreateValueFile(const char *Cmd) { static int CmdHF14ADesFormatPICC(const char *Cmd) { CLIParserInit("hf mfdes formatpicc", "Formats MIFARE DESFire PICC to factory state", - "Usage:\n\t-k PICC key (8 bytes)\n\n" - "Example:\n\thf mfdes formatpicc -k 0000000000000000\n" + "Usage:" + "\n\thf mfdes formatpicc\n" + "Make sure to authenticate picc before running this command.\n" ); - void *argtable[] = { - arg_param_begin, - arg_str0("kK", "key", "<Key>", "Key for checking (HEX 16 bytes)"), - arg_param_end - }; - CLIExecWithReturn(Cmd, argtable, false); - - uint8_t key[8] = {0}; - int keylen = 8; - CLIGetHexWithReturn(1, key, &keylen); - CLIParserFree(); - - if ((keylen < 8) || (keylen > 8)) { - PrintAndLogEx(ERR, "Specified key must have 8 bytes length"); - return PM3_EINVARG; - } - - DropField(); - uint8_t aid[3] = {0}; - int res = handler_desfire_select_application(aid); - if (res != PM3_SUCCESS) return res; - - mfdes_authinput_t payload; - payload.keylen = keylen; - memcpy(payload.key, key, keylen); - payload.mode = MFDES_AUTH_PICC; - payload.algo = MFDES_ALGO_DES; - payload.keyno = 0; - - SendCommandNG(CMD_HF_DESFIRE_AUTH1, (uint8_t *)&payload, sizeof(payload)); - PacketResponseNG resp; - - if (!WaitForResponseTimeout(CMD_HF_DESFIRE_AUTH1, &resp, 3000)) { - PrintAndLogEx(WARNING, "Client command execute timeout"); + sAPDU apdu = {0x90, MFDES_FORMAT_PICC, 0x00, 0x00, 0, NULL}; // 0xDF + uint16_t sw = 0; + int recvlen = 0; + int res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); + if (res != PM3_SUCCESS) { + PrintAndLogEx(WARNING, _RED_(" Can't format picc -> %s"), GetErrorString(res, &sw)); DropField(); - return PM3_ETIMEOUT; - } - - uint8_t isOK = (resp.status == PM3_SUCCESS); - if (isOK) { - struct { - uint8_t flags; - uint8_t datalen; - uint8_t datain[FRAME_PAYLOAD_SIZE]; - } PACKED payload_raw; - - payload_raw.datain[0] = 0xFC; - payload_raw.flags = NONE; - payload_raw.datalen = 1; - - SendCommandNG(CMD_HF_DESFIRE_COMMAND, (uint8_t *)&payload_raw, sizeof(payload_raw)); - - if (!WaitForResponseTimeout(CMD_HF_DESFIRE_COMMAND, &resp, 3000)) { - PrintAndLogEx(WARNING, "Client reset command execute timeout"); - DropField(); - return PM3_ETIMEOUT; - } - if (resp.status == PM3_SUCCESS) { - /*struct r { - uint8_t len; - uint8_t data[RECEIVE_SIZE]; - } PACKED; - struct r *rpayload = (struct r *)&resp.data.asBytes;*/ + return res; + } else { PrintAndLogEx(INFO, "Card successfully reset"); return PM3_SUCCESS; } - } else { - PrintAndLogEx(WARNING, _RED_("Auth command failed")); - } DropField(); return PM3_SUCCESS; } @@ -3183,7 +3519,7 @@ static int CmdHF14ADesDump(const char *Cmd) { uint8_t num_keys = 0; uint8_t key_setting = 0; - res = handler_desfire_keysettings(&key_setting, &num_keys); + res = handler_desfire_getkeysettings(&key_setting, &num_keys); if (res != PM3_SUCCESS) return res; res = handler_desfire_select_application(aid); @@ -3196,11 +3532,10 @@ static int CmdHF14ADesDump(const char *Cmd) { int fileset_len = 0; res = handler_desfire_filesettings(file_ids[j], filesettings, &fileset_len); - int maclen = 0; // To be implemented if (res == PM3_SUCCESS) { //if (DecodeFileSettings(filesettings, fileset_len, maclen) != PM3_SUCCESS) { - if (fileset_len == 1 + 1 + 2 + 3 + maclen) { + if (fileset_len == 1 + 1 + 2 + 3) { int filesize = (filesettings[6] << 16) + (filesettings[5] << 8) + filesettings[4]; mfdes_data_t fdata; fdata.fileno = file_ids[j]; @@ -3210,7 +3545,7 @@ static int CmdHF14ADesDump(const char *Cmd) { uint8_t *data = (uint8_t *)malloc(filesize); fdata.data = data; if (data) { - res = handler_desfire_readdata(&fdata, MFDES_DATA_FILE); + res = handler_desfire_readdata(&fdata, MFDES_DATA_FILE,filesettings[1]); if (res == PM3_SUCCESS) { PrintAndLogEx(NORMAL, "\nOffset | Data | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); @@ -3224,12 +3559,12 @@ static int CmdHF14ADesDump(const char *Cmd) { res = handler_desfire_select_application(aid); } } - } else if (fileset_len == 1 + 1 + 2 + 4 + 4 + 4 + 1 + maclen) { + } else if (fileset_len == 1 + 1 + 2 + 4 + 4 + 4 + 1) { PrintAndLogEx(NORMAL, "\n\nValue file: 0x%0x", file_ids[j]); mfdes_value_t value; value.fileno = file_ids[j]; int len = 0; - res = handler_desfire_getvalue(&value, &len); + res = handler_desfire_getvalue(&value, &len,filesettings[1]); if (res == PM3_SUCCESS) { PrintAndLogEx(NORMAL, "\nOffset | Value | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); @@ -3240,7 +3575,7 @@ static int CmdHF14ADesDump(const char *Cmd) { PrintAndLogEx(ERR, "Couldn't read value. Error %d", res); res = handler_desfire_select_application(aid); } - } else if (fileset_len == 1 + 1 + 2 + 3 + 3 + 3 + maclen) { + } else if (fileset_len == 1 + 1 + 2 + 3 + 3 + 3) { int maxrecords = (filesettings[9] << 16) + (filesettings[8] << 8) + filesettings[7]; int filesize = (filesettings[6] << 16) + (filesettings[5] << 8) + filesettings[4]; mfdes_data_t fdata; @@ -3256,7 +3591,7 @@ static int CmdHF14ADesDump(const char *Cmd) { fdata.offset[0] = offset & 0xFF; fdata.offset[1] = (offset >> 8) & 0xFF; fdata.offset[2] = (offset >> 16) & 0xFF; - res = handler_desfire_readdata(&fdata, MFDES_RECORD_FILE); + res = handler_desfire_readdata(&fdata, MFDES_RECORD_FILE,filesettings[1]); if (res == PM3_SUCCESS) { PrintAndLogEx(NORMAL, "\nOffset | Data | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); @@ -3390,12 +3725,104 @@ static int CmdHF14ADesEnumApplications(const char *Cmd) { return PM3_SUCCESS; } +static int CmdHF14ADesChangeKey(const char *Cmd) { + //DropField(); + // NR DESC KEYLENGHT + // ------------------------ + // 1 = DES 8 + // 2 = 3DES 16 + // 3 = 3K 3DES 24 + // 4 = AES 16 + uint8_t keylength = 8; + uint8_t newkeylength = 8; + + CLIParserInit("hf mfdes changekey", + "Changes Mifare DESFire Key", + "Usage:" + "\n\thf mfdes changekey -n 0 -t 1 -k 0000000000000000 -u 1 -j 0102030405060708 (DES,keynumber 0)\n" + "Make sure to select aid or authenticate aid before running this command.\n" + ); + + void *argtable[] = { + arg_param_begin, + arg_int0("nN", "keyno", "<keyno>", "Key number used for authentification"), + arg_int0("tT", "algo", "<algo>", "Current key algo (1=DES, 2=3DES(2K2DES), 3=3K3DES, 4=AES)"), + arg_str0("kK", "key", "<Key>", "Current Key (HEX 8-24 bytes)"), + arg_int0("uU", "newalgo", "<newalgo>", "New key algo (1=DES, 2=3DES(2K2DES), 3=3K3DES, 4=AES)"), + arg_str0("jJ", "newkey", "<newkey>", "New Key (HEX 8-24 bytes)"), + arg_int0("vV", "aesversion", "<aesversion>", "Aes version (if aes is used)"), + arg_param_end + }; + CLIExecWithReturn(Cmd, argtable, false); + + uint8_t cmdKeyNo = arg_get_int_def(1, 0); + uint8_t cmdAuthAlgo = arg_get_int_def(2, 0); + uint8_t key[24] = {0}; + int keylen = 0; + CLIParamHexToBuf(arg_get_str(3), key, 24, &keylen); + uint8_t newcmdAuthAlgo = arg_get_int_def(4, 0); + uint8_t newkey[24] = {0}; + int newkeylen = 0; + CLIParamHexToBuf(arg_get_str(5), newkey, 24, &newkeylen); + uint8_t aesversion = arg_get_int_def(6, 0); + CLIParserFree(); + + if (cmdAuthAlgo == MFDES_ALGO_AES) { + keylength=16; + } else if (cmdAuthAlgo == MFDES_ALGO_3DES) { + keylength=16; + } else if (cmdAuthAlgo == MFDES_ALGO_DES) { + keylength=8; + } else if (cmdAuthAlgo == MFDES_ALGO_3K3DES) { + keylength=24; + } + + if (newcmdAuthAlgo == MFDES_ALGO_AES) { + newkeylength=16; + } else if (newcmdAuthAlgo == MFDES_ALGO_3DES) { + newkeylength=16; + } else if (newcmdAuthAlgo == MFDES_ALGO_DES) { + newkeylength=8; + } else if (newcmdAuthAlgo == MFDES_ALGO_3K3DES) { + newkeylength=24; + } + + if ((keylen < 8) || (keylen > 24)) { + PrintAndLogEx(ERR, "Specified key must have %d bytes length.", keylen); + return PM3_EINVARG; + } + + if ((newkeylen < 8) || (newkeylen > 24)) { + PrintAndLogEx(ERR, "Specified key must have %d bytes length.", newkeylen); + return PM3_EINVARG; + } + + if (keylen != keylength) { + PrintAndLogEx(WARNING, "Key must include %d HEX symbols", keylength); + return PM3_EINVARG; + } + + if (newkeylen != newkeylength) { + PrintAndLogEx(WARNING, "New key must include %d HEX symbols", keylength); + return PM3_EINVARG; + } + + int error=mifare_desfire_change_key(cmdKeyNo,newkey,newcmdAuthAlgo,key,cmdAuthAlgo,aesversion); + if (error==PM3_SUCCESS) { + PrintAndLogEx(SUCCESS, " Successfully changed key."); + } else { + PrintAndLogEx(SUCCESS, " Error on changing key."); + return PM3_ESOFT; + } + return PM3_SUCCESS; +} + + // MIAFRE DESFire Authentication // #define BUFSIZE 256 static int CmdHF14ADesAuth(const char *Cmd) { - int res = 0; - DropField(); + //DropField(); // NR DESC KEYLENGHT // ------------------------ // 1 = DES 8 @@ -3403,20 +3830,23 @@ static int CmdHF14ADesAuth(const char *Cmd) { // 3 = 3K 3DES 24 // 4 = AES 16 uint8_t keylength = 8; - bool usedefaultkey = false; CLIParserInit("hf mfdes auth", "Authenticates Mifare DESFire using Key", "Usage:" - "\n\thf mfdes auth -m 3 -t 4 -a 808301 -n 0 -k 00000000000000000000000000000000 (AES)" - "\n\thf mfdes auth -m 2 -t 2 -a 000000 -n 0 -k 00000000000000000000000000000000 (3DES)" - "\n\thf mfdes auth -m 1 -t 1 -a 000000 -n 0 -k 0000000000000000 (DES)" + "\n\thf mfdes auth -m 3 -t 4 -a 808301 -n 0 -k 00000000000000000000000000000000 (AES,keynumber 0, aid 0x803201)" + "\n\thf mfdes auth -m 2 -t 2 -a 000000 -n 1 -k 00000000000000000000000000000000 (3DES,keynumber 1, aid 0x000000)" + "\n\thf mfdes auth -m 1 -t 1 -a 000000 -n 2 -k 0000000000000000 (DES,keynumber 2, aid 0x000000)" + "\n\thf mfdes auth -m 1 -t 1 -a 000000 -n 0 (DES, defaultkey, aid 0x000000)" + "\n\thf mfdes auth -m 2 -t 2 -a 000000 -n 0 (3DES, defaultkey, aid 0x000000)" + "\n\thf mfdes auth -m 3 -t 4 -a 000000 -n 0 (3K3DES, defaultkey, aid 0x000000)" + "\n\thf mfdes auth -m 3 -t 4 -a 000000 -n 0 (AES, defaultkey, aid 0x000000)" ); void *argtable[] = { arg_param_begin, - arg_int0("mM", "type", "<type>", "Auth type (1=normal, 2=iso, 3=aes, 4=picc)"), - arg_int0("tT", "algo", "<algo>", "Crypt algo (1=DES, 2=3DES(2K2DES), 4=3K3DES, 5=AES)"), + arg_int0("mM", "type", "<type>", "Auth type (1=normal, 2=iso, 3=aes)"), + arg_int0("tT", "algo", "<algo>", "Crypt algo (1=DES, 2=3DES(2K2DES), 3=3K3DES, 4=AES)"), arg_strx0("aA", "aid", "<aid>", "AID used for authentification (HEX 3 bytes)"), arg_int0("nN", "keyno", "<keyno>", "Key number used for authentification"), arg_str0("kK", "key", "<Key>", "Key for checking (HEX 8-24 bytes)"), @@ -3438,105 +3868,48 @@ static int CmdHF14ADesAuth(const char *Cmd) { CLIParamHexToBuf(arg_get_str(5), key, 24, &keylen); CLIParserFree(); + if (cmdAuthAlgo == MFDES_ALGO_AES) { + keylength=16; + } else if (cmdAuthAlgo == MFDES_ALGO_3DES) { + keylength=16; + } else if (cmdAuthAlgo == MFDES_ALGO_DES) { + keylength=8; + } else if (cmdAuthAlgo == MFDES_ALGO_3K3DES) { + keylength=24; + } if (keylen == 0) { - usedefaultkey = true; + if (cmdAuthAlgo == MFDES_ALGO_AES) { + keylen=16; + memcpy(key,aesdefaultkeys[0],keylen); + } else if (cmdAuthAlgo == MFDES_ALGO_3DES) { + keylen=16; + memcpy(key,aesdefaultkeys[0],keylen); + } else if (cmdAuthAlgo == MFDES_ALGO_DES) { + keylen=8; + memcpy(key,desdefaultkeys[0],keylen); + } else if (cmdAuthAlgo == MFDES_ALGO_3K3DES) { + keylen=24; + memcpy(key,k3kdefaultkeys[0],keylen); + } } else if ((keylen < 8) || (keylen > 24)) { PrintAndLogEx(ERR, "Specified key must have %d bytes length.", keylen); return PM3_EINVARG; } + if (keylen != keylength) { + PrintAndLogEx(WARNING, "Key must include %d HEX symbols", keylength); + return PM3_EINVARG; + } + // AID if (aidlength != 3) { PrintAndLogEx(WARNING, "aid must include %d HEX symbols", 3); return PM3_EINVARG; } - switch (cmdAuthMode) { - case MFDES_AUTH_DES: - if (cmdAuthAlgo != MFDES_ALGO_DES && cmdAuthAlgo != MFDES_ALGO_3DES) { - PrintAndLogEx(NORMAL, "Crypto algo not valid for the auth des mode"); - return PM3_EINVARG; - } - break; - case MFDES_AUTH_ISO: - if (cmdAuthAlgo != MFDES_ALGO_3DES && cmdAuthAlgo != MFDES_ALGO_3K3DES) { - PrintAndLogEx(NORMAL, "Crypto algo not valid for the auth iso mode"); - return PM3_EINVARG; - } - break; - case MFDES_AUTH_AES: - if (cmdAuthAlgo != MFDES_ALGO_AES) { - PrintAndLogEx(NORMAL, "Crypto algo not valid for the auth aes mode"); - return PM3_EINVARG; - } - break; - case MFDES_AUTH_PICC: - if (cmdAuthAlgo != MFDES_AUTH_DES) { - PrintAndLogEx(NORMAL, "Crypto algo not valid for the auth picc mode"); - return PM3_EINVARG; - } - break; - default: - PrintAndLogEx(WARNING, "Wrong Auth mode (%d) -> (1=normal, 2=iso, 3=aes)", cmdAuthMode); - return PM3_EINVARG; - } - - switch (cmdAuthAlgo) { - case MFDES_ALGO_3DES: - keylength = 16; - PrintAndLogEx(NORMAL, "2 key 3DES selected"); - break; - case MFDES_ALGO_3K3DES: - keylength = 24; - PrintAndLogEx(NORMAL, "3 key 3DES selected"); - break; - case MFDES_ALGO_AES: - keylength = 16; - PrintAndLogEx(NORMAL, "AES selected"); - break; - default: - cmdAuthAlgo = MFDES_ALGO_DES; - keylength = 8; - PrintAndLogEx(NORMAL, "DES selected"); - break; - } - - // KEY - if (keylen != keylength) { - PrintAndLogEx(WARNING, "Key must include %d HEX symbols", keylength); - return PM3_EINVARG; - } - - - res = handler_desfire_select_application(aid); - if (res != PM3_SUCCESS) return res; - - if (memcmp(aid, "\x00\x00\x00", 3) != 0) { - uint8_t file_ids[33] = {0}; - uint8_t file_ids_len = 0; - res = handler_desfire_fileids(file_ids, &file_ids_len); - if (res != PM3_SUCCESS) return res; - } - - mfdes_authinput_t payload; - payload.keylen = keylength; - memcpy(payload.key, key, keylength); - payload.mode = cmdAuthMode; - payload.algo = cmdAuthAlgo; - payload.keyno = cmdKeyNo; - /*SendCommandNG(CMD_HF_DESFIRE_AUTH1, (uint8_t *)&payload, sizeof(payload)); - - PacketResponseNG resp; - - if (!WaitForResponseTimeout(CMD_HF_DESFIRE_AUTH1, &resp, 3000)) { - PrintAndLogEx(WARNING, "Client command execute timeout"); - DropField(); - return PM3_ETIMEOUT; - } - */ mfdes_auth_res_t rpayload; - int error = handler_desfire_auth(&payload, &rpayload, usedefaultkey); - if (error == PM3_SUCCESS) { + int error=desfire_authenticate(cmdAuthMode,cmdAuthAlgo,aid,key,cmdKeyNo,&rpayload); + if (error==PM3_SUCCESS) { PrintAndLogEx(SUCCESS, " Key : " _GREEN_("%s"), sprint_hex(key, keylength)); PrintAndLogEx(SUCCESS, " SESSION : " _GREEN_("%s"), sprint_hex(rpayload.sessionkey, keylength)); PrintAndLogEx(INFO, "-------------------------------------------------------------"); @@ -3649,19 +4022,14 @@ static int AuthCheckDesfire(uint8_t *aid, uint8_t deskeyList[MAX_KEYS_LIST_LEN][ } else des = true; int error = PM3_SUCCESS; bool badlen = false; - mfdes_authinput_t payload; + uint32_t curaid = (aid[0] & 0xFF) + ((aid[1] & 0xFF) << 8) + ((aid[2] & 0xFF) << 16); if (des) { for (int keyno = 0; keyno < 0xE; keyno++) if (usedkeys[keyno] == 1 && foundKeys[0][keyno][0] == 0) { for (int curkey = 0; curkey < deskeyListLen; curkey++) { - payload.keylen = 8; - memcpy(payload.key, deskeyList[curkey], 8); - payload.mode = MFDES_AUTH_DES; - payload.algo = MFDES_ALGO_DES; - payload.keyno = keyno; mfdes_auth_res_t rpayload; - error = handler_desfire_auth(&payload, &rpayload, false); + error=desfire_authenticate(MFDES_AUTH_DES,MFDES_ALGO_DES,aid,deskeyList[curkey],keyno,&rpayload); if (error == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "AID 0x%06X, Found DES Key %d : " _GREEN_("%s"), curaid, keyno, sprint_hex(deskeyList[curkey], 8)); foundKeys[0][keyno][0] = 0x01; @@ -3689,13 +4057,9 @@ static int AuthCheckDesfire(uint8_t *aid, uint8_t deskeyList[MAX_KEYS_LIST_LEN][ for (int keyno = 0; keyno < 0xE; keyno++) if (usedkeys[keyno] == 1 && foundKeys[1][keyno][0] == 0) { for (int curkey = 0; curkey < aeskeyListLen; curkey++) { - payload.keylen = 16; - memcpy(payload.key, aeskeyList[curkey], 16); - payload.mode = MFDES_AUTH_DES; - payload.algo = MFDES_ALGO_3DES; - payload.keyno = keyno; mfdes_auth_res_t rpayload; - error = handler_desfire_auth(&payload, &rpayload, false); + error=desfire_authenticate(MFDES_AUTH_DES,MFDES_ALGO_3DES,aid,aeskeyList[curkey],keyno,&rpayload); + if (error == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "AID 0x%06X, Found 3DES Key %d : " _GREEN_("%s"), curaid, keyno, sprint_hex(aeskeyList[curkey], 16)); foundKeys[1][keyno][0] = 0x01; @@ -3724,13 +4088,8 @@ static int AuthCheckDesfire(uint8_t *aid, uint8_t deskeyList[MAX_KEYS_LIST_LEN][ for (int keyno = 0; keyno < 0xE; keyno++) if (usedkeys[keyno] == 1 && foundKeys[2][keyno][0] == 0) { for (int curkey = 0; curkey < aeskeyListLen; curkey++) { - payload.keylen = 16; - memcpy(payload.key, aeskeyList[curkey], 16); - payload.mode = MFDES_AUTH_AES; - payload.algo = MFDES_ALGO_AES; - payload.keyno = keyno; mfdes_auth_res_t rpayload; - error = handler_desfire_auth(&payload, &rpayload, false); + error=desfire_authenticate(MFDES_AUTH_AES,MFDES_ALGO_AES,aid,aeskeyList[curkey],keyno,&rpayload); if (error == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "AID 0x%06X, Found AES Key %d : " _GREEN_("%s"), curaid, keyno, sprint_hex(aeskeyList[curkey], 16)); foundKeys[2][keyno][0] = 0x01; @@ -3759,13 +4118,8 @@ static int AuthCheckDesfire(uint8_t *aid, uint8_t deskeyList[MAX_KEYS_LIST_LEN][ for (int keyno = 0; keyno < 0xE; keyno++) if (usedkeys[keyno] == 1 && foundKeys[3][keyno][0] == 0) { for (int curkey = 0; curkey < k3kkeyListLen; curkey++) { - payload.keylen = 24; - memcpy(payload.key, k3kkeyList[curkey], 24); - payload.mode = MFDES_AUTH_ISO; - payload.algo = MFDES_ALGO_3K3DES; - payload.keyno = keyno; mfdes_auth_res_t rpayload; - error = handler_desfire_auth(&payload, &rpayload, false); + error=desfire_authenticate(MFDES_AUTH_ISO,MFDES_ALGO_3K3DES,aid,k3kkeyList[curkey],keyno,&rpayload); if (error == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "AID 0x%06X, Found 3K3 Key %d : " _GREEN_("%s"), curaid, keyno, sprint_hex(k3kkeyList[curkey], 24)); foundKeys[3][keyno][0] = 0x01; @@ -4088,6 +4442,8 @@ static command_t CommandTable[] = { {"list", CmdHF14ADesList, AlwaysAvailable, "List DESFire (ISO 14443A) history"}, {"enum", CmdHF14ADesEnumApplications, IfPm3Iso14443a, "Tries enumerate all applications"}, {"auth", CmdHF14ADesAuth, IfPm3Iso14443a, "Tries a MIFARE DesFire Authentication"}, + {"getuid", CmdHF14ADesGetUID, IfPm3Iso14443a, "Get random uid"}, + {"selectaid", CmdHF14ADesSelectApp, IfPm3Iso14443a, "Select Application ID"}, {"createaid", CmdHF14ADesCreateApp, IfPm3Iso14443a, "Create Application ID"}, {"deleteaid", CmdHF14ADesDeleteApp, IfPm3Iso14443a, "Delete Application ID"}, {"createfile", CmdHF14ADesCreateFile, IfPm3Iso14443a, "Create Standard/Backup File"}, @@ -4099,31 +4455,10 @@ static command_t CommandTable[] = { {"writedata", CmdHF14ADesWriteData, IfPm3Iso14443a, "Write data to standard/backup/record file"}, {"getvalue", CmdHF14ADesGetValueData, IfPm3Iso14443a, "Get value of file"}, {"changevalue", CmdHF14ADesChangeValue, IfPm3Iso14443a, "Write value of a value file (credit/debit/clear)"}, + {"changekey", CmdHF14ADesChangeKey, IfPm3Iso14443a, "Change Key"}, {"formatpicc", CmdHF14ADesFormatPICC, IfPm3Iso14443a, "Format PICC"}, {"dump", CmdHF14ADesDump, IfPm3Iso14443a, "Dump all files"}, {"chk", CmdHF14aDesChk, IfPm3Iso14443a, "Check keys"}, - /* - ToDo: - - Native Cmds - ChangeKeySettings - ChangeKey - SetConfiguration - GetISOFileIDs - GetCardUID - ChangeFileSettings - Handling CMAC/Encryption after authorization - - ISO/IEC 7816 Cmds - 'A4' Select - 'B0' Read Binary - 'D6' Update Binary - 'B2' Read Records - 'E2' Append Records - '84' Get Challenge - '88' Internal Authenticate - '82' External Authenticate - */ {NULL, NULL, NULL, NULL} }; @@ -4137,3 +4472,26 @@ int CmdHFMFDes(const char *Cmd) { clearCommandBuffer(); return CmdsParse(CommandTable, Cmd); } + +/* + ToDo: + + Native Cmds + ----------- + ChangeKeySettings 0x5F + SetConfiguration + GetISOFileIDs + GetCardUID + ChangeFileSettings + + ISO/IEC 7816 Cmds + ----------------- + 'A4' Select + 'B0' Read Binary + 'D6' Update Binary + 'B2' Read Records + 'E2' Append Records + '84' Get Challenge + '88' Internal Authenticate + '82' External Authenticate +*/ diff --git a/client/src/mifare/desfire_crypto.c b/client/src/mifare/desfire_crypto.c index a0e066b44..85270f57a 100644 --- a/client/src/mifare/desfire_crypto.c +++ b/client/src/mifare/desfire_crypto.c @@ -28,6 +28,7 @@ #include "desfire_crypto.h" #include <stdlib.h> #include <string.h> +#include <util.h> #include "commonutil.h" #include "mbedtls/aes.h" #include "mbedtls/des.h" @@ -406,6 +407,8 @@ void *mifare_cryto_preprocess_data(desfiretag_t tag, void *data, size_t *nbytes, /* pass through */ case MDCM_MACED: + communication_settings|=NO_CRC; + switch (DESFIRE(tag)->authentication_scheme) { case AS_LEGACY: if (!(communication_settings & MAC_COMMAND)) @@ -508,6 +511,9 @@ void *mifare_cryto_preprocess_data(desfiretag_t tag, void *data, size_t *nbytes, void *mifare_cryto_postprocess_data(desfiretag_t tag, void *data, size_t *nbytes, int communication_settings) { void *res = data; void *edata = NULL; + tag->crypto_buffer_size=*nbytes*2; + tag->crypto_buffer=(uint8_t*)malloc(tag->crypto_buffer_size); + uint8_t first_cmac_byte = 0x00; desfirekey_t key = DESFIRE(tag)->session_key; @@ -527,6 +533,7 @@ void *mifare_cryto_postprocess_data(desfiretag_t tag, void *data, size_t *nbytes /* pass through */ case MDCM_MACED: + communication_settings|=NO_CRC; switch (DESFIRE(tag)->authentication_scheme) { case AS_LEGACY: if (communication_settings & MAC_VERIFY) { @@ -540,18 +547,20 @@ void *mifare_cryto_postprocess_data(desfiretag_t tag, void *data, size_t *nbytes break; } - size_t edl = enciphered_data_length(tag, *nbytes - 1, communication_settings); + size_t edl = enciphered_data_length(tag, *nbytes, communication_settings); edata = malloc(edl); - memcpy(edata, data, *nbytes - 1); - memset((uint8_t *)edata + *nbytes - 1, 0, edl - *nbytes + 1); + memcpy(edata, data, *nbytes); + memset((uint8_t *)edata + *nbytes , 0, edl - *nbytes); mifare_cypher_blocks_chained(tag, NULL, NULL, edata, edl, MCD_SEND, MCO_ENCYPHER); - if (0 != memcmp((uint8_t *)data + *nbytes - 1, (uint8_t *)edata + edl - 8, 4)) { + if (0 != memcmp((uint8_t *)data + *nbytes, (uint8_t *)edata + edl - 8, 4)) { + PrintAndLogEx(NORMAL, "Expected MAC %s", sprint_hex(data+*nbytes, key_macing_length(key))); + PrintAndLogEx(NORMAL, "Actual MAC %s", sprint_hex(edata + edl - 8, key_macing_length(key))); #ifdef WITH_DEBUG Dbprintf("MACing not verified"); - hexdump((uint8_t *)data + *nbytes - 1, key_macing_length(key), "Expect ", 0); + hexdump((uint8_t *)data + *nbytes, key_macing_length(key), "Expect ", 0); hexdump((uint8_t *)edata + edl - 8, key_macing_length(key), "Actual ", 0); #endif DESFIRE(tag)->last_pcd_error = CRYPTO_ERROR; @@ -644,17 +653,19 @@ void *mifare_cryto_postprocess_data(desfiretag_t tag, void *data, size_t *nbytes case AS_NEW: /* Move status between payload and CRC */ res = DESFIRE(tag)->crypto_buffer; - memcpy(res, data, *nbytes); + if (res!=NULL) { + memcpy(res, data, *nbytes); - crc_pos = (*nbytes) - 16 - 3; - if (crc_pos < 0) { - /* Single block */ - crc_pos = 0; + crc_pos = (*nbytes) - 16 - 3; + if (crc_pos < 0) { + /* Single block */ + crc_pos = 0; + } + memcpy((uint8_t *) res + crc_pos + 1, (uint8_t *) res + crc_pos, *nbytes - crc_pos); + ((uint8_t *) res)[crc_pos] = 0x00; + crc_pos++; + *nbytes += 1; } - memcpy((uint8_t *)res + crc_pos + 1, (uint8_t *)res + crc_pos, *nbytes - crc_pos); - ((uint8_t *)res)[crc_pos] = 0x00; - crc_pos++; - *nbytes += 1; break; } @@ -725,6 +736,9 @@ void *mifare_cryto_postprocess_data(desfiretag_t tag, void *data, size_t *nbytes break; } + free(tag->crypto_buffer); + tag->crypto_buffer_size=0; + tag->crypto_buffer=NULL; return res; } @@ -854,3 +868,45 @@ void mifare_cypher_blocks_chained(desfiretag_t tag, desfirekey_t key, uint8_t *i offset += block_size; } } + +#define CRC32_PRESET 0xFFFFFFFF + +static void +desfire_crc32_byte(uint32_t *crc, const uint8_t value) +{ + /* x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1 */ + const uint32_t poly = 0xEDB88320; + + *crc ^= value; + for (int current_bit = 7; current_bit >= 0; current_bit--) { + int bit_out = (*crc) & 0x00000001; + *crc >>= 1; + if (bit_out) + *crc ^= poly; + } +} + +void desfire_crc32(const uint8_t *data, const size_t len, uint8_t *crc) +{ + uint32_t desfire_crc = CRC32_PRESET; + for (size_t i = 0; i < len; i++) { + desfire_crc32_byte(&desfire_crc, data[i]); + } + + *((uint32_t *)(crc)) = htole32(desfire_crc); +} + +void desfire_crc32_append(uint8_t *data, const size_t len) +{ + desfire_crc32(data, len, data + len); +} + +void iso14443a_crc_append(uint8_t* data, size_t len) +{ + return compute_crc(CRC_14443_A, data, len, data+len, data+len+1); +} + +void iso14443a_crc(uint8_t* data, size_t len, uint8_t* pbtCrc) +{ + return compute_crc(CRC_14443_A, data, len, pbtCrc, pbtCrc+1); +} \ No newline at end of file diff --git a/client/src/mifare/desfire_crypto.h b/client/src/mifare/desfire_crypto.h index 1dc5316ae..2e044c11d 100644 --- a/client/src/mifare/desfire_crypto.h +++ b/client/src/mifare/desfire_crypto.h @@ -129,4 +129,8 @@ size_t enciphered_data_length(const desfiretag_t tag, const size_t nbytes, int c void cmac_generate_subkeys(desfirekey_t key); void cmac(const desfirekey_t key, uint8_t *ivect, const uint8_t *data, size_t len, uint8_t *cmac); -#endif +void desfire_crc32(const uint8_t *data, const size_t len, uint8_t *crc); +void desfire_crc32_append(uint8_t *data, const size_t len); +void iso14443a_crc_append(uint8_t* data, size_t len); +void iso14443a_crc(uint8_t* data, size_t len, uint8_t* pbtCrc); +#endif \ No newline at end of file diff --git a/include/protocols.h b/include/protocols.h index b927058b0..682f57eff 100644 --- a/include/protocols.h +++ b/include/protocols.h @@ -359,6 +359,7 @@ ISO 7816-4 Basic interindustry commands. For command APDU's. #define MFDES_READSIG 0x3C #define MFDES_WRITE_DATA 0x3D #define MFDES_GET_KEY_SETTINGS 0x45 +#define MFDES_GET_UID 0x51 #define MFDES_CHANGE_KEY_SETTINGS 0x54 #define MFDES_SELECT_APPLICATION 0x5A #define MFDES_CHANGE_FILE_SETTINGS 0x5F From e0bf636aafbbe314be286ef607a87b9a85e4c3ae Mon Sep 17 00:00:00 2001 From: Bjoern Kerler <info@revskills.de> Date: Sat, 13 Jun 2020 14:25:40 +0200 Subject: [PATCH 432/527] Make style --- client/src/cmdhfmfdes.c | 393 ++++++++++++++--------------- client/src/mifare/desfire_crypto.c | 41 ++- client/src/mifare/desfire_crypto.h | 6 +- 3 files changed, 211 insertions(+), 229 deletions(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index 520a73fe6..f8536c38f 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -36,20 +36,22 @@ struct desfire_key default_key = {0}; -uint8_t desdefaultkeys[3][8]= {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, //Official - {0x40,0x41,0x42,0x43,0x44,0x45,0x46,0x47}, - {0x00,0x01,0x02,0x03,0x04,0x05,0x06,0x07}}; +uint8_t desdefaultkeys[3][8] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //Official + {0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47}, + {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07} +}; -uint8_t aesdefaultkeys[5][16]= {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}, //Official, TRF7970A - {0x79, 0x70, 0x25, 0x53, 0x79, 0x70, 0x25, 0x53, 0x79, 0x70, 0x25, 0x53, 0x79, 0x70, 0x25, 0x53}, // TRF7970A - {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF}, // TRF7970A - {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}, - {0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f}}; +uint8_t aesdefaultkeys[5][16] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}, //Official, TRF7970A + {0x79, 0x70, 0x25, 0x53, 0x79, 0x70, 0x25, 0x53, 0x79, 0x70, 0x25, 0x53, 0x79, 0x70, 0x25, 0x53}, // TRF7970A + {0x00, 0x11, 0x22, 0x33, 0x44, 0x55, 0x66, 0x77, 0x88, 0x99, 0xAA, 0xBB, 0xCC, 0xDD, 0xEE, 0xFF}, // TRF7970A + {0x00, 0x01, 0x02, 0x03, 0x04, 0x05, 0x06, 0x07, 0x08, 0x09, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f}, + {0x40, 0x41, 0x42, 0x43, 0x44, 0x45, 0x46, 0x47, 0x48, 0x49, 0x4a, 0x4b, 0x4c, 0x4d, 0x4e, 0x4f} +}; -uint8_t k3kdefaultkeys[1][24]= {{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00}}; +uint8_t k3kdefaultkeys[1][24] = {{0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00}}; -struct desfire_tag mf_state={.session_key=NULL,.authentication_scheme=AS_LEGACY,.authenticated_key_no=NOT_YET_AUTHENTICATED,.crypto_buffer=NULL,.crypto_buffer_size=0,.selected_application=0}; -static desfiretag_t tag=&mf_state; +struct desfire_tag mf_state = {.session_key = NULL, .authentication_scheme = AS_LEGACY, .authenticated_key_no = NOT_YET_AUTHENTICATED, .crypto_buffer = NULL, .crypto_buffer_size = 0, .selected_application = 0}; +static desfiretag_t tag = &mf_state; typedef struct { uint8_t mode; @@ -59,7 +61,7 @@ typedef struct { uint8_t key[24]; } PACKED mfdes_authinput_t; -static mfdes_authinput_t currentauth[0xF]={{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1},{.keyno=-1}}; +static mfdes_authinput_t currentauth[0xF] = {{.keyno = -1}, {.keyno = -1}, {.keyno = -1}, {.keyno = -1}, {.keyno = -1}, {.keyno = -1}, {.keyno = -1}, {.keyno = -1}, {.keyno = -1}, {.keyno = -1}, {.keyno = -1}, {.keyno = -1}, {.keyno = -1}, {.keyno = -1}, {.keyno = -1}}; typedef struct mfdes_auth_res { uint8_t sessionkeylen; @@ -655,7 +657,7 @@ int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rpayload) // 3 different way to authenticate AUTH (CRC16) , AUTH_ISO (CRC32) , AUTH_AES (CRC32) // 4 different crypto arg1 DES, 3DES, 3K3DES, AES // 3 different communication modes, PLAIN,MAC,CRYPTO - tag->authenticated_key_no=NOT_YET_AUTHENTICATED; + tag->authenticated_key_no = NOT_YET_AUTHENTICATED; tag->session_key = NULL; mbedtls_aes_context ctx; @@ -698,14 +700,12 @@ int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rpayload) } uint8_t subcommand = MFDES_AUTHENTICATE; - tag->authentication_scheme=AS_LEGACY; + tag->authentication_scheme = AS_LEGACY; - if (payload->mode == MFDES_AUTH_AES) - { + if (payload->mode == MFDES_AUTH_AES) { subcommand = MFDES_AUTHENTICATE_AES; - tag->authentication_scheme=AS_NEW; - } - else if (payload->mode == MFDES_AUTH_ISO) { + tag->authentication_scheme = AS_NEW; + } else if (payload->mode == MFDES_AUTH_ISO) { subcommand = MFDES_AUTHENTICATE_ISO; tag->authentication_scheme = AS_NEW; } @@ -872,7 +872,7 @@ int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rpayload) } // Part 4 - tag->session_key=&default_key; + tag->session_key = &default_key; Desfire_session_key_new(RndA, RndB, key, tag->session_key); if (payload->mode != MFDES_AUTH_PICC) { @@ -909,8 +909,8 @@ int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rpayload) rpayload->sessionkeylen = payload->keylen; memcpy(rpayload->sessionkey, tag->session_key->data, rpayload->sessionkeylen); memset(tag->ivect, 0, MAX_CRYPTO_BLOCK_SIZE); - tag->authenticated_key_no=payload->keyno; - if (tag->authentication_scheme==AS_NEW) { + tag->authenticated_key_no = payload->keyno; + if (tag->authentication_scheme == AS_NEW) { cmac_generate_subkeys(tag->session_key); } return PM3_SUCCESS; @@ -1017,18 +1017,18 @@ static int handler_desfire_freemem(uint32_t *free_mem) { uint16_t sw = 0; uint8_t fmem[4] = {0}; - size_t plen=apdu.Lc; - uint8_t *p=mifare_cryto_preprocess_data(tag,(uint8_t *)apdu.data,&plen,0,MDCM_PLAIN|CMAC_COMMAND); - apdu.Lc=(uint8_t)plen; - apdu.data=p; + size_t plen = apdu.Lc; + uint8_t *p = mifare_cryto_preprocess_data(tag, (uint8_t *)apdu.data, &plen, 0, MDCM_PLAIN | CMAC_COMMAND); + apdu.Lc = (uint8_t)plen; + apdu.data = p; int res = send_desfire_cmd(&apdu, true, fmem, &recv_len, &sw, 0, true); if (res != PM3_SUCCESS) return res; - size_t dlen=recv_len; - p=mifare_cryto_postprocess_data(tag, apdu.data, &dlen, MDCM_PLAIN | CMAC_COMMAND | CMAC_VERIFY); + size_t dlen = recv_len; + p = mifare_cryto_postprocess_data(tag, apdu.data, &dlen, MDCM_PLAIN | CMAC_COMMAND | CMAC_VERIFY); if (sw != status(MFDES_S_OPERATION_OK)) return PM3_ESOFT; @@ -1037,8 +1037,7 @@ static int handler_desfire_freemem(uint32_t *free_mem) { return res; } -static int mifare_desfire_change_key(uint8_t key_no, uint8_t* new_key, int new_algo, uint8_t* old_key, int old_algo, int aes_version) -{ +static int mifare_desfire_change_key(uint8_t key_no, uint8_t *new_key, int new_algo, uint8_t *old_key, int old_algo, int aes_version) { key_no &= 0x0F; /* @@ -1058,7 +1057,7 @@ static int mifare_desfire_change_key(uint8_t key_no, uint8_t* new_key, int new_a } } - uint8_t data[24*4] = {key_no}; + uint8_t data[24 * 4] = {key_no}; sAPDU apdu = {0x90, MFDES_CHANGE_KEY, 0x00, 0x00, 0x01, data}; // 0xC4 int new_key_length; @@ -1072,7 +1071,7 @@ static int mifare_desfire_change_key(uint8_t key_no, uint8_t* new_key, int new_a break; } - int __cmd_n=0; + int __cmd_n = 0; memcpy(data + __cmd_n + 1, new_key, new_key_length); if ((tag->authenticated_key_no & 0x0f) != (key_no & 0x0f)) { @@ -1085,9 +1084,9 @@ static int mifare_desfire_change_key(uint8_t key_no, uint8_t* new_key, int new_a __cmd_n += new_key_length; - if (new_algo == MFDES_ALGO_AES){ - data[__cmd_n+1] = aes_version; - __cmd_n+=1; + if (new_algo == MFDES_ALGO_AES) { + data[__cmd_n + 1] = aes_version; + __cmd_n += 1; } if ((tag->authenticated_key_no & 0x0f) != (key_no & 0x0f)) { @@ -1099,7 +1098,7 @@ static int mifare_desfire_change_key(uint8_t key_no, uint8_t* new_key, int new_a __cmd_n += 2; break; case AS_NEW: - desfire_crc32_append(data+1, __cmd_n); + desfire_crc32_append(data + 1, __cmd_n); __cmd_n += 4; desfire_crc32(new_key, new_key_length, data + __cmd_n); @@ -1119,19 +1118,18 @@ static int mifare_desfire_change_key(uint8_t key_no, uint8_t* new_key, int new_a } } - uint8_t *p = mifare_cryto_preprocess_data(tag, data+1, (size_t*)&__cmd_n, 0, MDCM_ENCIPHERED | ENC_COMMAND | NO_CRC); - apdu.Lc=(uint8_t)__cmd_n+1; - apdu.data=p; + uint8_t *p = mifare_cryto_preprocess_data(tag, data + 1, (size_t *)&__cmd_n, 0, MDCM_ENCIPHERED | ENC_COMMAND | NO_CRC); + apdu.Lc = (uint8_t)__cmd_n + 1; + apdu.data = p; int recv_len = 0; uint16_t sw = 0; int res = send_desfire_cmd(&apdu, true, NULL, &recv_len, &sw, 0, true); - if (res != PM3_SUCCESS) - { - PrintAndLogEx(WARNING, _RED_(" Can't change key -> %s"),GetErrorString(res, &sw)); - DropField(); - return res; + if (res != PM3_SUCCESS) { + PrintAndLogEx(WARNING, _RED_(" Can't change key -> %s"), GetErrorString(res, &sw)); + DropField(); + return res; } size_t sn = recv_len; @@ -1249,9 +1247,9 @@ static int desfire_print_keysetting(uint8_t key_settings, mifare_des_authalgo_t // 2 MSB denotes const char *str = " Max key number and type : %d, " _YELLOW_("%s"); - if (algo==MFDES_ALGO_DES) PrintAndLogEx(SUCCESS, str, "(3)DES"); - else if (algo==MFDES_ALGO_AES) PrintAndLogEx(SUCCESS, str, "AES"); - else if (algo==MFDES_ALGO_3K3DES) PrintAndLogEx(SUCCESS, str, "3K3DES"); + if (algo == MFDES_ALGO_DES) PrintAndLogEx(SUCCESS, str, "(3)DES"); + else if (algo == MFDES_ALGO_AES) PrintAndLogEx(SUCCESS, str, "AES"); + else if (algo == MFDES_ALGO_3K3DES) PrintAndLogEx(SUCCESS, str, "3K3DES"); //PrintAndLogEx(SUCCESS, " Max number of keys in AID : %d", num_keys & 0x3F); PrintAndLogEx(INFO, "-------------------------------------------------------------"); @@ -1409,7 +1407,7 @@ static int handler_desfire_appids(uint8_t *dest, uint8_t *app_ids_len) { // --- GET DF NAMES static int handler_desfire_dfnames(dfname_t *dest, uint8_t *dfname_count) { - *dfname_count=0; + *dfname_count = 0; if (g_debugMode > 1) { if (dest == NULL) PrintAndLogEx(ERR, "DEST=NULL"); if (dfname_count == NULL) PrintAndLogEx(ERR, "DFNAME_COUNT=NULL"); @@ -1419,7 +1417,7 @@ static int handler_desfire_dfnames(dfname_t *dest, uint8_t *dfname_count) { int recv_len = 0; uint16_t sw = 0; int res = send_desfire_cmd(&apdu, true, (uint8_t *)dest, &recv_len, &sw, sizeof(dfname_t), true); - if (res != PM3_SUCCESS){ + if (res != PM3_SUCCESS) { if (sw == status(MFDES_E_ILLEGAL_COMMAND_CODE)) return PM3_SUCCESS; return res; } @@ -1444,26 +1442,26 @@ static int handler_desfire_select_application(uint8_t *aid) { DropField(); return res; } - memcpy(&tag->selected_application,aid,3); + memcpy(&tag->selected_application, aid, 3); return PM3_SUCCESS; } -static int key_setting_to_algo(uint8_t aid[3],uint8_t* key_setting, mifare_des_authalgo_t* algo){ +static int key_setting_to_algo(uint8_t aid[3], uint8_t *key_setting, mifare_des_authalgo_t *algo) { int res = handler_desfire_select_application(aid); if (res != PM3_SUCCESS) return res; uint8_t num_keys = 0; res = handler_desfire_getkeysettings(key_setting, &num_keys); - if (res==PM3_SUCCESS){ - switch (num_keys >> 6){ + if (res == PM3_SUCCESS) { + switch (num_keys >> 6) { case 0: - *algo=MFDES_ALGO_DES; + *algo = MFDES_ALGO_DES; break; case 1: - *algo=MFDES_ALGO_3K3DES; + *algo = MFDES_ALGO_3K3DES; break; case 2: - *algo=MFDES_ALGO_AES; + *algo = MFDES_ALGO_AES; break; } } @@ -1567,10 +1565,10 @@ static int handler_desfire_credit(mfdes_value_t *value, uint8_t cs) { uint16_t sw = 0; int recvlen = 0; - size_t plen=apdu.Lc; - uint8_t *p=mifare_cryto_preprocess_data(tag,(uint8_t *)apdu.data,&plen,0,cs | MAC_COMMAND | CMAC_COMMAND | ENC_COMMAND); - apdu.Lc=(uint8_t)plen; - apdu.data=p; + size_t plen = apdu.Lc; + uint8_t *p = mifare_cryto_preprocess_data(tag, (uint8_t *)apdu.data, &plen, 0, cs | MAC_COMMAND | CMAC_COMMAND | ENC_COMMAND); + apdu.Lc = (uint8_t)plen; + apdu.data = p; int res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); if (res != PM3_SUCCESS) { @@ -1586,10 +1584,10 @@ static int handler_desfire_limitedcredit(mfdes_value_t *value, uint8_t cs) { uint16_t sw = 0; int recvlen = 0; - size_t plen=apdu.Lc; - uint8_t *p=mifare_cryto_preprocess_data(tag,(uint8_t *)apdu.data,&plen,0,cs | MAC_COMMAND | CMAC_COMMAND | ENC_COMMAND); - apdu.Lc=(uint8_t)plen; - apdu.data=p; + size_t plen = apdu.Lc; + uint8_t *p = mifare_cryto_preprocess_data(tag, (uint8_t *)apdu.data, &plen, 0, cs | MAC_COMMAND | CMAC_COMMAND | ENC_COMMAND); + apdu.Lc = (uint8_t)plen; + apdu.data = p; int res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); if (res != PM3_SUCCESS) { @@ -1605,10 +1603,10 @@ static int handler_desfire_debit(mfdes_value_t *value, uint8_t cs) { uint16_t sw = 0; int recvlen = 0; - size_t plen=apdu.Lc; - uint8_t *p=mifare_cryto_preprocess_data(tag,(uint8_t *)apdu.data,&plen,0,cs | MAC_COMMAND | CMAC_COMMAND | ENC_COMMAND); - apdu.Lc=(uint8_t)plen; - apdu.data=p; + size_t plen = apdu.Lc; + uint8_t *p = mifare_cryto_preprocess_data(tag, (uint8_t *)apdu.data, &plen, 0, cs | MAC_COMMAND | CMAC_COMMAND | ENC_COMMAND); + apdu.Lc = (uint8_t)plen; + apdu.data = p; int res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); if (res != PM3_SUCCESS) { @@ -1627,10 +1625,10 @@ static int handler_desfire_readdata(mfdes_data_t *data, MFDES_FILE_TYPE_T type, uint16_t sw = 0; int resplen = 0; - size_t plen=apdu.Lc; - uint8_t *p=mifare_cryto_preprocess_data(tag,(uint8_t *)data,&plen,0,MDCM_PLAIN|CMAC_COMMAND); - apdu.Lc=(uint8_t)plen; - apdu.data=p; + size_t plen = apdu.Lc; + uint8_t *p = mifare_cryto_preprocess_data(tag, (uint8_t *)data, &plen, 0, MDCM_PLAIN | CMAC_COMMAND); + apdu.Lc = (uint8_t)plen; + apdu.data = p; int res = send_desfire_cmd(&apdu, false, data->data, &resplen, &sw, 0, true); if (res != PM3_SUCCESS) { @@ -1639,9 +1637,9 @@ static int handler_desfire_readdata(mfdes_data_t *data, MFDES_FILE_TYPE_T type, return res; } - size_t dlen=resplen; - p=mifare_cryto_postprocess_data(tag, data->data, &dlen, cs|CMAC_COMMAND|CMAC_VERIFY|MAC_VERIFY); - if (dlen!=-1) resplen=dlen; + size_t dlen = resplen; + p = mifare_cryto_postprocess_data(tag, data->data, &dlen, cs | CMAC_COMMAND | CMAC_VERIFY | MAC_VERIFY); + if (dlen != -1) resplen = dlen; memcpy(data->length, &resplen, 3); @@ -1655,10 +1653,10 @@ static int handler_desfire_getvalue(mfdes_value_t *value, int *resplen, uint8_t uint16_t sw = 0; *resplen = 0; - size_t plen=apdu.Lc; - uint8_t *p=mifare_cryto_preprocess_data(tag,(uint8_t *)apdu.data,&plen,0,MDCM_PLAIN|CMAC_COMMAND); - apdu.Lc=(uint8_t)plen; - apdu.data=p; + size_t plen = apdu.Lc; + uint8_t *p = mifare_cryto_preprocess_data(tag, (uint8_t *)apdu.data, &plen, 0, MDCM_PLAIN | CMAC_COMMAND); + apdu.Lc = (uint8_t)plen; + apdu.data = p; int res = send_desfire_cmd(&apdu, false, value->value, resplen, &sw, 0, true); if (res != PM3_SUCCESS) { @@ -1666,8 +1664,8 @@ static int handler_desfire_getvalue(mfdes_value_t *value, int *resplen, uint8_t DropField(); return res; } - size_t dlen=(size_t)resplen; - p=mifare_cryto_postprocess_data(tag, value->value, &dlen, cs|CMAC_COMMAND|CMAC_VERIFY|MAC_VERIFY); + size_t dlen = (size_t)resplen; + p = mifare_cryto_postprocess_data(tag, value->value, &dlen, cs | CMAC_COMMAND | CMAC_VERIFY | MAC_VERIFY); return res; } @@ -1706,9 +1704,9 @@ static int handler_desfire_writedata(mfdes_data_t *data, MFDES_FILE_TYPE_T type, tmp[6] = (datasize >> 16) & 0xFF; - size_t plen=datasize; - uint8_t *p=mifare_cryto_preprocess_data(tag,(uint8_t *)&data->data[pos],&plen,0,cs | MAC_COMMAND | CMAC_COMMAND | ENC_COMMAND); - if (plen!=-1) datasize=(uint8_t)plen; + size_t plen = datasize; + uint8_t *p = mifare_cryto_preprocess_data(tag, (uint8_t *)&data->data[pos], &plen, 0, cs | MAC_COMMAND | CMAC_COMMAND | ENC_COMMAND); + if (plen != -1) datasize = (uint8_t)plen; memcpy(&tmp[7], p, datasize); apdu.Lc = datasize + 1 + 3 + 3; @@ -1862,7 +1860,7 @@ int getKeySettings(uint8_t *aid) { uint8_t num_keys = 0; uint8_t key_setting = 0; mifare_des_authalgo_t algo; - res=key_setting_to_algo(aid,&key_setting,&algo); + res = key_setting_to_algo(aid, &key_setting, &algo); if (res == PM3_SUCCESS) { // number of Master keys (0x01) @@ -1878,9 +1876,9 @@ int getKeySettings(uint8_t *aid) { const char *str = " Operation of PICC master key : " _YELLOW_("%s"); - if (algo==MFDES_ALGO_DES) PrintAndLogEx(SUCCESS, str, "(3)DES"); - else if (algo==MFDES_ALGO_AES) PrintAndLogEx(SUCCESS, str, "AES"); - else if (algo==MFDES_ALGO_3K3DES) PrintAndLogEx(SUCCESS, str, "3K3DES"); + if (algo == MFDES_ALGO_DES) PrintAndLogEx(SUCCESS, str, "(3)DES"); + else if (algo == MFDES_ALGO_AES) PrintAndLogEx(SUCCESS, str, "AES"); + else if (algo == MFDES_ALGO_3K3DES) PrintAndLogEx(SUCCESS, str, "3K3DES"); uint8_t cmk_num_versions = 0; if (handler_desfire_keyversion(0, &cmk_num_versions) == PM3_SUCCESS) { @@ -1914,7 +1912,7 @@ int getKeySettings(uint8_t *aid) { uint8_t num_keys = 0; uint8_t key_setting = 0; mifare_des_authalgo_t algo; - res=key_setting_to_algo(aid,&key_setting,&algo); + res = key_setting_to_algo(aid, &key_setting, &algo); if (res == PM3_SUCCESS) { desfire_print_keysetting(key_setting, algo); } else { @@ -1972,8 +1970,7 @@ static void swap16(uint8_t *data) { data[1] = tmp; }; -int desfire_authenticate(int cmdAuthMode, int cmdAuthAlgo, uint8_t* aid, uint8_t* key, int cmdKeyNo, mfdes_auth_res_t* rpayload) -{ +int desfire_authenticate(int cmdAuthMode, int cmdAuthAlgo, uint8_t *aid, uint8_t *key, int cmdKeyNo, mfdes_auth_res_t *rpayload) { switch (cmdAuthMode) { case MFDES_AUTH_DES: if (cmdAuthAlgo != MFDES_ALGO_DES && cmdAuthAlgo != MFDES_ALGO_3DES) { @@ -2004,7 +2001,7 @@ int desfire_authenticate(int cmdAuthMode, int cmdAuthAlgo, uint8_t* aid, uint8_t return PM3_EINVARG; } - int keylength=16; + int keylength = 16; switch (cmdAuthAlgo) { case MFDES_ALGO_3DES: @@ -2050,7 +2047,7 @@ int desfire_authenticate(int cmdAuthMode, int cmdAuthAlgo, uint8_t* aid, uint8_t static int CmdHF14ADesGetUID(const char *Cmd) { (void)Cmd; - uint8_t uid[16]={0}; + uint8_t uid[16] = {0}; int res = handler_desfire_getuid(uid); if (res != PM3_SUCCESS) { DropField(); @@ -2065,12 +2062,12 @@ static int CmdHF14ADesSelectApp(const char *Cmd) { CLIParserInit("hf mfdes selectaid", "Select Application ID", "Usage:\n\thf mfdes selectaid -a 123456\n" - ); + ); void *argtable[] = { - arg_param_begin, - arg_strx0("aA", "aid", "<aid>", "App ID to select as hex bytes (3 bytes,big endian)"), - arg_param_end + arg_param_begin, + arg_strx0("aA", "aid", "<aid>", "App ID to select as hex bytes (3 bytes,big endian)"), + arg_param_end }; CLIExecWithReturn(Cmd, argtable, false); int aidlength = 3; @@ -2165,7 +2162,7 @@ static int CmdHF14ADesCreateApp(const char *Cmd) { return PM3_EINVARG; } - if (fidlength != 2 && fidlength!=0) { + if (fidlength != 2 && fidlength != 0) { PrintAndLogEx(ERR, "FID must have 2 bytes length"); return PM3_EINVARG; } @@ -2215,7 +2212,7 @@ static int CmdHF14ADesCreateApp(const char *Cmd) { if (res != PM3_SUCCESS) { DropField(); return res; - } + } res = handler_desfire_createapp(&aidhdr, usename, usefid); DropField(); @@ -2260,8 +2257,8 @@ static int CmdHF14ADesDeleteApp(const char *Cmd) { return res; } -static int selectfile(uint8_t* aid, int fileno, uint8_t* cs){ - if (handler_desfire_select_application(aid)!=PM3_SUCCESS) { +static int selectfile(uint8_t *aid, int fileno, uint8_t *cs) { + if (handler_desfire_select_application(aid) != PM3_SUCCESS) { PrintAndLogEx(ERR, _RED_(" Couldn't select aid.")); return PM3_ESOFT; } @@ -2270,22 +2267,20 @@ static int selectfile(uint8_t* aid, int fileno, uint8_t* cs){ int fileset_len = 0; int res = handler_desfire_filesettings(fileno, filesettings, &fileset_len); - if (tag->session_key!=NULL) - { + if (tag->session_key != NULL) { mfdes_auth_res_t rpayload; - int keyno=(filesettings[0]>>4)&0xF; - if (keyno!=0xE && currentauth[keyno].keyno==keyno) { + int keyno = (filesettings[0] >> 4) & 0xF; + if (keyno != 0xE && currentauth[keyno].keyno == keyno) { if (handler_desfire_auth(¤tauth[keyno], &rpayload) != PM3_SUCCESS) { PrintAndLogEx(ERR, _RED_(" Couldn't authenticate key.")); return PM3_ESOFT; } - } else if (keyno!=0xE) - { + } else if (keyno != 0xE) { PrintAndLogEx(ERR, _RED_(" Please authenticate first.")); return PM3_ESOFT; } } - *cs=filesettings[1]; + *cs = filesettings[1]; return res; } @@ -2333,11 +2328,10 @@ static int CmdHF14ADesClearRecordFile(const char *Cmd) { PrintAndLogEx(ERR, _RED_(" You need to select an aid first.")); return PM3_ESOFT; } - memcpy(aid,(uint8_t *)&tag->selected_application,3); + memcpy(aid, (uint8_t *)&tag->selected_application, 3); } - uint8_t cs=0; - if (selectfile(aid,fileno[0],&cs)!=PM3_SUCCESS) - { + uint8_t cs = 0; + if (selectfile(aid, fileno[0], &cs) != PM3_SUCCESS) { PrintAndLogEx(ERR, _RED_(" Error on selecting file.")); return PM3_ESOFT; } @@ -2394,11 +2388,10 @@ static int CmdHF14ADesDeleteFile(const char *Cmd) { PrintAndLogEx(ERR, _RED_(" You need to select an aid first.")); return PM3_ESOFT; } - memcpy(aid,(uint8_t *)&tag->selected_application,3); + memcpy(aid, (uint8_t *)&tag->selected_application, 3); } - uint8_t cs=0; - if (selectfile(aid,fileno[0],&cs)!=PM3_SUCCESS) - { + uint8_t cs = 0; + if (selectfile(aid, fileno[0], &cs) != PM3_SUCCESS) { PrintAndLogEx(ERR, _RED_(" Error on selecting file.")); return PM3_ESOFT; } @@ -2505,11 +2498,11 @@ static int CmdHF14ADesCreateFile(const char *Cmd) { DropField(); return PM3_ESOFT; } - memcpy(aid,(uint8_t *)&tag->selected_application,3); + memcpy(aid, (uint8_t *)&tag->selected_application, 3); } - int res=handler_desfire_select_application(aid); - if (res!=PM3_SUCCESS){ + int res = handler_desfire_select_application(aid); + if (res != PM3_SUCCESS) { PrintAndLogEx(ERR, "Couldn't select aid. Error %d", res); DropField(); return res; @@ -2575,11 +2568,10 @@ static int CmdHF14ADesGetValueData(const char *Cmd) { PrintAndLogEx(ERR, _RED_(" You need to select an aid first.")); return PM3_ESOFT; } - memcpy(aid,(uint8_t *)&tag->selected_application,3); + memcpy(aid, (uint8_t *)&tag->selected_application, 3); } - uint8_t cs=0; - if (selectfile(aid,value.fileno,&cs)!=PM3_SUCCESS) - { + uint8_t cs = 0; + if (selectfile(aid, value.fileno, &cs) != PM3_SUCCESS) { PrintAndLogEx(ERR, _RED_(" Error on selecting file.")); return PM3_ESOFT; } @@ -2608,17 +2600,17 @@ static int CmdHF14ADesReadData(const char *Cmd) { "\n\thf mfdes readdata -n 01 -t 0 -o 000000 -l 000000 -a 123456\n" "\thf mfdes readdata -n 01 -t 0 (Read all data from standard file, fileno 01)\n" "Make sure to select aid or authenticate aid before running this command.\n" - ); + ); void *argtable[] = { - arg_param_begin, - arg_strx0("nN", "fileno", "<fileno>", "File Number (1 hex byte, 0x00 - 0x1F)"), - arg_strx0("oO", "offset", "<offset>", "File Offset (3 hex bytes, big endian), optional"), - arg_strx0("lL", "length", "<length>", - "Length to read (3 hex bytes, big endian -> 000000 = Read all data),optional"), - arg_int0("tT", "type", "<type>", "File Type (0=Standard/Backup, 1=Record)"), - arg_strx0("aA", "aid", "<aid>", "App ID to select as hex bytes (3 bytes,big endian,optional)"), - arg_param_end + arg_param_begin, + arg_strx0("nN", "fileno", "<fileno>", "File Number (1 hex byte, 0x00 - 0x1F)"), + arg_strx0("oO", "offset", "<offset>", "File Offset (3 hex bytes, big endian), optional"), + arg_strx0("lL", "length", "<length>", + "Length to read (3 hex bytes, big endian -> 000000 = Read all data),optional"), + arg_int0("tT", "type", "<type>", "File Type (0=Standard/Backup, 1=Record)"), + arg_strx0("aA", "aid", "<aid>", "App ID to select as hex bytes (3 bytes,big endian,optional)"), + arg_param_end }; CLIExecWithReturn(Cmd, argtable, false); int filenolen = 0; @@ -2681,27 +2673,26 @@ static int CmdHF14ADesReadData(const char *Cmd) { PrintAndLogEx(ERR, _RED_(" You need to select an aid first.")); return PM3_ESOFT; } - memcpy(aid,(uint8_t *)&tag->selected_application,3); + memcpy(aid, (uint8_t *)&tag->selected_application, 3); } - uint8_t cs=0; - if (selectfile(aid,ft.fileno,&cs)!=PM3_SUCCESS) - { + uint8_t cs = 0; + if (selectfile(aid, ft.fileno, &cs) != PM3_SUCCESS) { PrintAndLogEx(ERR, _RED_(" Error on selecting file.")); return PM3_ESOFT; } uint8_t *data = (uint8_t *)calloc(bytestoread, sizeof(uint8_t)); - int res=PM3_ESOFT; + int res = PM3_ESOFT; if (data != NULL) { ft.data = data; - res = handler_desfire_readdata(&ft, type,cs); + res = handler_desfire_readdata(&ft, type, cs); if (res == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "Successfully read data from file %d:", ft.fileno); PrintAndLogEx(NORMAL, "\nOffset | Data | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); int len = le24toh(ft.length); for (int i = 0; i < len; i += 16) { - int l=len-i; + int l = len - i; PrintAndLogEx(NORMAL, "%02d/0x%02X | %s| %s", i, i, sprint_hex(&ft.data[i], l > 16 ? 16 : l), sprint_ascii(&ft.data[i], l > 16 ? 16 : l)); } } else { @@ -2780,23 +2771,22 @@ static int CmdHF14ADesChangeValue(const char *Cmd) { PrintAndLogEx(ERR, _RED_(" You need to select an aid first.")); return PM3_ESOFT; } - memcpy(aid,(uint8_t *)&tag->selected_application,3); + memcpy(aid, (uint8_t *)&tag->selected_application, 3); } - uint8_t cs=0; - if (selectfile(aid,fileno[0],&cs)!=PM3_SUCCESS) - { + uint8_t cs = 0; + if (selectfile(aid, fileno[0], &cs) != PM3_SUCCESS) { PrintAndLogEx(ERR, _RED_(" Error on selecting file.")); return PM3_ESOFT; } - int res=PM3_ESOFT; + int res = PM3_ESOFT; if (mode == 0) { - res = handler_desfire_credit(&value,cs); + res = handler_desfire_credit(&value, cs); } else if (mode == 1) { - res = handler_desfire_limitedcredit(&value,cs); + res = handler_desfire_limitedcredit(&value, cs); } else if (mode == 2) { - res = handler_desfire_debit(&value,cs); + res = handler_desfire_debit(&value, cs); } if (res == PM3_SUCCESS) { @@ -2904,19 +2894,18 @@ static int CmdHF14ADesWriteData(const char *Cmd) { PrintAndLogEx(ERR, _RED_(" You need to select an aid first.")); return PM3_ESOFT; } - memcpy(aid,(uint8_t *)&tag->selected_application,3); + memcpy(aid, (uint8_t *)&tag->selected_application, 3); } - uint8_t cs=0; - if (selectfile(aid,fileno[0],&cs)!=PM3_SUCCESS) - { + uint8_t cs = 0; + if (selectfile(aid, fileno[0], &cs) != PM3_SUCCESS) { PrintAndLogEx(ERR, _RED_(" Error on selecting file.")); return PM3_ESOFT; } - int res=PM3_ESOFT; + int res = PM3_ESOFT; if (data != NULL) { ft.data = data; - res = handler_desfire_writedata(&ft, type,cs); + res = handler_desfire_writedata(&ft, type, cs); if (res == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "Successfully wrote data"); } else { @@ -3038,15 +3027,14 @@ static int CmdHF14ADesCreateRecordFile(const char *Cmd) { PrintAndLogEx(ERR, _RED_(" You need to select an aid first.")); return PM3_ESOFT; } - memcpy(aid,(uint8_t *)&tag->selected_application,3); + memcpy(aid, (uint8_t *)&tag->selected_application, 3); } - if (handler_desfire_select_application(aid)!=PM3_SUCCESS) - { + if (handler_desfire_select_application(aid) != PM3_SUCCESS) { PrintAndLogEx(ERR, _RED_(" Error on selecting aid.")); return PM3_ESOFT; } - int res=PM3_SUCCESS; + int res = PM3_SUCCESS; if (cyclic) res = handler_desfire_create_cyclicrecordfile(&ft); else res = handler_desfire_create_linearrecordfile(&ft); if (res == PM3_SUCCESS) { @@ -3170,11 +3158,10 @@ static int CmdHF14ADesCreateValueFile(const char *Cmd) { PrintAndLogEx(ERR, _RED_(" You need to select an aid first.")); return PM3_ESOFT; } - memcpy(aid,(uint8_t *)&tag->selected_application,3); + memcpy(aid, (uint8_t *)&tag->selected_application, 3); } - if (handler_desfire_select_application(aid)!=PM3_SUCCESS) - { + if (handler_desfire_select_application(aid) != PM3_SUCCESS) { PrintAndLogEx(ERR, _RED_(" Error on selecting aid.")); return PM3_ESOFT; } @@ -3206,9 +3193,9 @@ static int CmdHF14ADesFormatPICC(const char *Cmd) { DropField(); return res; } else { - PrintAndLogEx(INFO, "Card successfully reset"); - return PM3_SUCCESS; - } + PrintAndLogEx(INFO, "Card successfully reset"); + return PM3_SUCCESS; + } DropField(); return PM3_SUCCESS; } @@ -3545,7 +3532,7 @@ static int CmdHF14ADesDump(const char *Cmd) { uint8_t *data = (uint8_t *)malloc(filesize); fdata.data = data; if (data) { - res = handler_desfire_readdata(&fdata, MFDES_DATA_FILE,filesettings[1]); + res = handler_desfire_readdata(&fdata, MFDES_DATA_FILE, filesettings[1]); if (res == PM3_SUCCESS) { PrintAndLogEx(NORMAL, "\nOffset | Data | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); @@ -3564,7 +3551,7 @@ static int CmdHF14ADesDump(const char *Cmd) { mfdes_value_t value; value.fileno = file_ids[j]; int len = 0; - res = handler_desfire_getvalue(&value, &len,filesettings[1]); + res = handler_desfire_getvalue(&value, &len, filesettings[1]); if (res == PM3_SUCCESS) { PrintAndLogEx(NORMAL, "\nOffset | Value | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); @@ -3591,7 +3578,7 @@ static int CmdHF14ADesDump(const char *Cmd) { fdata.offset[0] = offset & 0xFF; fdata.offset[1] = (offset >> 8) & 0xFF; fdata.offset[2] = (offset >> 16) & 0xFF; - res = handler_desfire_readdata(&fdata, MFDES_RECORD_FILE,filesettings[1]); + res = handler_desfire_readdata(&fdata, MFDES_RECORD_FILE, filesettings[1]); if (res == PM3_SUCCESS) { PrintAndLogEx(NORMAL, "\nOffset | Data | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); @@ -3741,17 +3728,17 @@ static int CmdHF14ADesChangeKey(const char *Cmd) { "Usage:" "\n\thf mfdes changekey -n 0 -t 1 -k 0000000000000000 -u 1 -j 0102030405060708 (DES,keynumber 0)\n" "Make sure to select aid or authenticate aid before running this command.\n" - ); + ); void *argtable[] = { - arg_param_begin, - arg_int0("nN", "keyno", "<keyno>", "Key number used for authentification"), - arg_int0("tT", "algo", "<algo>", "Current key algo (1=DES, 2=3DES(2K2DES), 3=3K3DES, 4=AES)"), - arg_str0("kK", "key", "<Key>", "Current Key (HEX 8-24 bytes)"), - arg_int0("uU", "newalgo", "<newalgo>", "New key algo (1=DES, 2=3DES(2K2DES), 3=3K3DES, 4=AES)"), - arg_str0("jJ", "newkey", "<newkey>", "New Key (HEX 8-24 bytes)"), - arg_int0("vV", "aesversion", "<aesversion>", "Aes version (if aes is used)"), - arg_param_end + arg_param_begin, + arg_int0("nN", "keyno", "<keyno>", "Key number used for authentification"), + arg_int0("tT", "algo", "<algo>", "Current key algo (1=DES, 2=3DES(2K2DES), 3=3K3DES, 4=AES)"), + arg_str0("kK", "key", "<Key>", "Current Key (HEX 8-24 bytes)"), + arg_int0("uU", "newalgo", "<newalgo>", "New key algo (1=DES, 2=3DES(2K2DES), 3=3K3DES, 4=AES)"), + arg_str0("jJ", "newkey", "<newkey>", "New Key (HEX 8-24 bytes)"), + arg_int0("vV", "aesversion", "<aesversion>", "Aes version (if aes is used)"), + arg_param_end }; CLIExecWithReturn(Cmd, argtable, false); @@ -3768,23 +3755,23 @@ static int CmdHF14ADesChangeKey(const char *Cmd) { CLIParserFree(); if (cmdAuthAlgo == MFDES_ALGO_AES) { - keylength=16; + keylength = 16; } else if (cmdAuthAlgo == MFDES_ALGO_3DES) { - keylength=16; + keylength = 16; } else if (cmdAuthAlgo == MFDES_ALGO_DES) { - keylength=8; + keylength = 8; } else if (cmdAuthAlgo == MFDES_ALGO_3K3DES) { - keylength=24; + keylength = 24; } if (newcmdAuthAlgo == MFDES_ALGO_AES) { - newkeylength=16; + newkeylength = 16; } else if (newcmdAuthAlgo == MFDES_ALGO_3DES) { - newkeylength=16; + newkeylength = 16; } else if (newcmdAuthAlgo == MFDES_ALGO_DES) { - newkeylength=8; + newkeylength = 8; } else if (newcmdAuthAlgo == MFDES_ALGO_3K3DES) { - newkeylength=24; + newkeylength = 24; } if ((keylen < 8) || (keylen > 24)) { @@ -3807,8 +3794,8 @@ static int CmdHF14ADesChangeKey(const char *Cmd) { return PM3_EINVARG; } - int error=mifare_desfire_change_key(cmdKeyNo,newkey,newcmdAuthAlgo,key,cmdAuthAlgo,aesversion); - if (error==PM3_SUCCESS) { + int error = mifare_desfire_change_key(cmdKeyNo, newkey, newcmdAuthAlgo, key, cmdAuthAlgo, aesversion); + if (error == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, " Successfully changed key."); } else { PrintAndLogEx(SUCCESS, " Error on changing key."); @@ -3869,27 +3856,27 @@ static int CmdHF14ADesAuth(const char *Cmd) { CLIParserFree(); if (cmdAuthAlgo == MFDES_ALGO_AES) { - keylength=16; + keylength = 16; } else if (cmdAuthAlgo == MFDES_ALGO_3DES) { - keylength=16; + keylength = 16; } else if (cmdAuthAlgo == MFDES_ALGO_DES) { - keylength=8; + keylength = 8; } else if (cmdAuthAlgo == MFDES_ALGO_3K3DES) { - keylength=24; + keylength = 24; } if (keylen == 0) { if (cmdAuthAlgo == MFDES_ALGO_AES) { - keylen=16; - memcpy(key,aesdefaultkeys[0],keylen); + keylen = 16; + memcpy(key, aesdefaultkeys[0], keylen); } else if (cmdAuthAlgo == MFDES_ALGO_3DES) { - keylen=16; - memcpy(key,aesdefaultkeys[0],keylen); + keylen = 16; + memcpy(key, aesdefaultkeys[0], keylen); } else if (cmdAuthAlgo == MFDES_ALGO_DES) { - keylen=8; - memcpy(key,desdefaultkeys[0],keylen); + keylen = 8; + memcpy(key, desdefaultkeys[0], keylen); } else if (cmdAuthAlgo == MFDES_ALGO_3K3DES) { - keylen=24; - memcpy(key,k3kdefaultkeys[0],keylen); + keylen = 24; + memcpy(key, k3kdefaultkeys[0], keylen); } } else if ((keylen < 8) || (keylen > 24)) { PrintAndLogEx(ERR, "Specified key must have %d bytes length.", keylen); @@ -3908,8 +3895,8 @@ static int CmdHF14ADesAuth(const char *Cmd) { } mfdes_auth_res_t rpayload; - int error=desfire_authenticate(cmdAuthMode,cmdAuthAlgo,aid,key,cmdKeyNo,&rpayload); - if (error==PM3_SUCCESS) { + int error = desfire_authenticate(cmdAuthMode, cmdAuthAlgo, aid, key, cmdKeyNo, &rpayload); + if (error == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, " Key : " _GREEN_("%s"), sprint_hex(key, keylength)); PrintAndLogEx(SUCCESS, " SESSION : " _GREEN_("%s"), sprint_hex(rpayload.sessionkey, keylength)); PrintAndLogEx(INFO, "-------------------------------------------------------------"); @@ -4029,7 +4016,7 @@ static int AuthCheckDesfire(uint8_t *aid, uint8_t deskeyList[MAX_KEYS_LIST_LEN][ if (usedkeys[keyno] == 1 && foundKeys[0][keyno][0] == 0) { for (int curkey = 0; curkey < deskeyListLen; curkey++) { mfdes_auth_res_t rpayload; - error=desfire_authenticate(MFDES_AUTH_DES,MFDES_ALGO_DES,aid,deskeyList[curkey],keyno,&rpayload); + error = desfire_authenticate(MFDES_AUTH_DES, MFDES_ALGO_DES, aid, deskeyList[curkey], keyno, &rpayload); if (error == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "AID 0x%06X, Found DES Key %d : " _GREEN_("%s"), curaid, keyno, sprint_hex(deskeyList[curkey], 8)); foundKeys[0][keyno][0] = 0x01; @@ -4058,7 +4045,7 @@ static int AuthCheckDesfire(uint8_t *aid, uint8_t deskeyList[MAX_KEYS_LIST_LEN][ if (usedkeys[keyno] == 1 && foundKeys[1][keyno][0] == 0) { for (int curkey = 0; curkey < aeskeyListLen; curkey++) { mfdes_auth_res_t rpayload; - error=desfire_authenticate(MFDES_AUTH_DES,MFDES_ALGO_3DES,aid,aeskeyList[curkey],keyno,&rpayload); + error = desfire_authenticate(MFDES_AUTH_DES, MFDES_ALGO_3DES, aid, aeskeyList[curkey], keyno, &rpayload); if (error == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "AID 0x%06X, Found 3DES Key %d : " _GREEN_("%s"), curaid, keyno, sprint_hex(aeskeyList[curkey], 16)); @@ -4089,7 +4076,7 @@ static int AuthCheckDesfire(uint8_t *aid, uint8_t deskeyList[MAX_KEYS_LIST_LEN][ if (usedkeys[keyno] == 1 && foundKeys[2][keyno][0] == 0) { for (int curkey = 0; curkey < aeskeyListLen; curkey++) { mfdes_auth_res_t rpayload; - error=desfire_authenticate(MFDES_AUTH_AES,MFDES_ALGO_AES,aid,aeskeyList[curkey],keyno,&rpayload); + error = desfire_authenticate(MFDES_AUTH_AES, MFDES_ALGO_AES, aid, aeskeyList[curkey], keyno, &rpayload); if (error == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "AID 0x%06X, Found AES Key %d : " _GREEN_("%s"), curaid, keyno, sprint_hex(aeskeyList[curkey], 16)); foundKeys[2][keyno][0] = 0x01; @@ -4119,7 +4106,7 @@ static int AuthCheckDesfire(uint8_t *aid, uint8_t deskeyList[MAX_KEYS_LIST_LEN][ if (usedkeys[keyno] == 1 && foundKeys[3][keyno][0] == 0) { for (int curkey = 0; curkey < k3kkeyListLen; curkey++) { mfdes_auth_res_t rpayload; - error=desfire_authenticate(MFDES_AUTH_ISO,MFDES_ALGO_3K3DES,aid,k3kkeyList[curkey],keyno,&rpayload); + error = desfire_authenticate(MFDES_AUTH_ISO, MFDES_ALGO_3K3DES, aid, k3kkeyList[curkey], keyno, &rpayload); if (error == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "AID 0x%06X, Found 3K3 Key %d : " _GREEN_("%s"), curaid, keyno, sprint_hex(k3kkeyList[curkey], 24)); foundKeys[3][keyno][0] = 0x01; diff --git a/client/src/mifare/desfire_crypto.c b/client/src/mifare/desfire_crypto.c index 85270f57a..386fbbd4e 100644 --- a/client/src/mifare/desfire_crypto.c +++ b/client/src/mifare/desfire_crypto.c @@ -283,7 +283,7 @@ void cmac_generate_subkeys(desfirekey_t key) { void cmac(const desfirekey_t key, uint8_t *ivect, const uint8_t *data, size_t len, uint8_t *cmac) { int kbs = key_block_size(key); if (kbs == 0) { - return; + return; } uint8_t *buffer = malloc(padded_data_length(len, kbs)); @@ -407,7 +407,7 @@ void *mifare_cryto_preprocess_data(desfiretag_t tag, void *data, size_t *nbytes, /* pass through */ case MDCM_MACED: - communication_settings|=NO_CRC; + communication_settings |= NO_CRC; switch (DESFIRE(tag)->authentication_scheme) { case AS_LEGACY: @@ -511,8 +511,8 @@ void *mifare_cryto_preprocess_data(desfiretag_t tag, void *data, size_t *nbytes, void *mifare_cryto_postprocess_data(desfiretag_t tag, void *data, size_t *nbytes, int communication_settings) { void *res = data; void *edata = NULL; - tag->crypto_buffer_size=*nbytes*2; - tag->crypto_buffer=(uint8_t*)malloc(tag->crypto_buffer_size); + tag->crypto_buffer_size = *nbytes * 2; + tag->crypto_buffer = (uint8_t *)malloc(tag->crypto_buffer_size); uint8_t first_cmac_byte = 0x00; @@ -533,7 +533,7 @@ void *mifare_cryto_postprocess_data(desfiretag_t tag, void *data, size_t *nbytes /* pass through */ case MDCM_MACED: - communication_settings|=NO_CRC; + communication_settings |= NO_CRC; switch (DESFIRE(tag)->authentication_scheme) { case AS_LEGACY: if (communication_settings & MAC_VERIFY) { @@ -551,12 +551,12 @@ void *mifare_cryto_postprocess_data(desfiretag_t tag, void *data, size_t *nbytes edata = malloc(edl); memcpy(edata, data, *nbytes); - memset((uint8_t *)edata + *nbytes , 0, edl - *nbytes); + memset((uint8_t *)edata + *nbytes, 0, edl - *nbytes); mifare_cypher_blocks_chained(tag, NULL, NULL, edata, edl, MCD_SEND, MCO_ENCYPHER); if (0 != memcmp((uint8_t *)data + *nbytes, (uint8_t *)edata + edl - 8, 4)) { - PrintAndLogEx(NORMAL, "Expected MAC %s", sprint_hex(data+*nbytes, key_macing_length(key))); + PrintAndLogEx(NORMAL, "Expected MAC %s", sprint_hex(data + *nbytes, key_macing_length(key))); PrintAndLogEx(NORMAL, "Actual MAC %s", sprint_hex(edata + edl - 8, key_macing_length(key))); #ifdef WITH_DEBUG Dbprintf("MACing not verified"); @@ -653,7 +653,7 @@ void *mifare_cryto_postprocess_data(desfiretag_t tag, void *data, size_t *nbytes case AS_NEW: /* Move status between payload and CRC */ res = DESFIRE(tag)->crypto_buffer; - if (res!=NULL) { + if (res != NULL) { memcpy(res, data, *nbytes); crc_pos = (*nbytes) - 16 - 3; @@ -737,8 +737,8 @@ void *mifare_cryto_postprocess_data(desfiretag_t tag, void *data, size_t *nbytes } free(tag->crypto_buffer); - tag->crypto_buffer_size=0; - tag->crypto_buffer=NULL; + tag->crypto_buffer_size = 0; + tag->crypto_buffer = NULL; return res; } @@ -872,8 +872,7 @@ void mifare_cypher_blocks_chained(desfiretag_t tag, desfirekey_t key, uint8_t *i #define CRC32_PRESET 0xFFFFFFFF static void -desfire_crc32_byte(uint32_t *crc, const uint8_t value) -{ +desfire_crc32_byte(uint32_t *crc, const uint8_t value) { /* x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1 */ const uint32_t poly = 0xEDB88320; @@ -886,8 +885,7 @@ desfire_crc32_byte(uint32_t *crc, const uint8_t value) } } -void desfire_crc32(const uint8_t *data, const size_t len, uint8_t *crc) -{ +void desfire_crc32(const uint8_t *data, const size_t len, uint8_t *crc) { uint32_t desfire_crc = CRC32_PRESET; for (size_t i = 0; i < len; i++) { desfire_crc32_byte(&desfire_crc, data[i]); @@ -896,17 +894,14 @@ void desfire_crc32(const uint8_t *data, const size_t len, uint8_t *crc) *((uint32_t *)(crc)) = htole32(desfire_crc); } -void desfire_crc32_append(uint8_t *data, const size_t len) -{ +void desfire_crc32_append(uint8_t *data, const size_t len) { desfire_crc32(data, len, data + len); } -void iso14443a_crc_append(uint8_t* data, size_t len) -{ - return compute_crc(CRC_14443_A, data, len, data+len, data+len+1); +void iso14443a_crc_append(uint8_t *data, size_t len) { + return compute_crc(CRC_14443_A, data, len, data + len, data + len + 1); } -void iso14443a_crc(uint8_t* data, size_t len, uint8_t* pbtCrc) -{ - return compute_crc(CRC_14443_A, data, len, pbtCrc, pbtCrc+1); -} \ No newline at end of file +void iso14443a_crc(uint8_t *data, size_t len, uint8_t *pbtCrc) { + return compute_crc(CRC_14443_A, data, len, pbtCrc, pbtCrc + 1); +} diff --git a/client/src/mifare/desfire_crypto.h b/client/src/mifare/desfire_crypto.h index 2e044c11d..fb36ea991 100644 --- a/client/src/mifare/desfire_crypto.h +++ b/client/src/mifare/desfire_crypto.h @@ -131,6 +131,6 @@ void cmac(const desfirekey_t key, uint8_t *ivect, const uint8_t *data, size_t l void desfire_crc32(const uint8_t *data, const size_t len, uint8_t *crc); void desfire_crc32_append(uint8_t *data, const size_t len); -void iso14443a_crc_append(uint8_t* data, size_t len); -void iso14443a_crc(uint8_t* data, size_t len, uint8_t* pbtCrc); -#endif \ No newline at end of file +void iso14443a_crc_append(uint8_t *data, size_t len); +void iso14443a_crc(uint8_t *data, size_t len, uint8_t *pbtCrc); +#endif From 797fa7d01a3e9e2405d3ef3ad86a730f4573f41f Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Sat, 13 Jun 2020 14:41:34 +0200 Subject: [PATCH 433/527] Tolerate exit-like calls from embedded Python script Now sys.exit(0) is silently accepted, while quit() / raise SystemExit / sys.exit() / sys.exit(n) / exit() will output sth a warning such as "Script terminated by SystemExit -1" Still, don't call os._exit(0), it immediately exits. --- client/src/cmdscript.c | 75 +++++++++++++++++++++++++++++++++++++++--- 1 file changed, 70 insertions(+), 5 deletions(-) diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index 24fd5ec37..4fb87cc27 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -19,7 +19,6 @@ #include <wchar.h> #endif - #include "cmdparser.h" // command_t #include "scripting.h" #include "comms.h" @@ -33,6 +32,68 @@ #include "ui.h" #include "fileutils.h" +#ifdef HAVE_PYTHON +// Partly ripped from PyRun_SimpleFileExFlags +// but does not terminate client on sys.exit +// and print exit code only if != 0 +static int Pm3PyRun_SimpleFileNoExit(FILE *fp, const char *filename) +{ + PyObject *m, *d, *v; + int set_file_name = 0, ret = -1; + m = PyImport_AddModule("__main__"); + if (m == NULL) + return -1; + Py_INCREF(m); + d = PyModule_GetDict(m); + if (PyDict_GetItemString(d, "__file__") == NULL) { + PyObject *f; + f = PyUnicode_DecodeFSDefault(filename); + if (f == NULL) + goto done; + if (PyDict_SetItemString(d, "__file__", f) < 0) { + Py_DECREF(f); + goto done; + } + if (PyDict_SetItemString(d, "__cached__", Py_None) < 0) { + Py_DECREF(f); + goto done; + } + set_file_name = 1; + Py_DECREF(f); + } + v = PyRun_FileExFlags(fp, filename, Py_file_input, d, d, 1, NULL); + if (v == NULL) { + Py_CLEAR(m); + if (PyErr_ExceptionMatches(PyExc_SystemExit)) { + // PyErr_Print() exists if SystemExit so we've to handle it ourselves + PyObject *ty = 0, *er = 0, *tr = 0; + PyErr_Fetch(&ty, &er, &tr); + long err = PyLong_AsLong(er); + if (err) { + PrintAndLogEx(WARNING, "\nScript terminated by " _YELLOW_("SystemExit %li"), err); + } else { + ret = 0; + } + Py_DECREF(ty); + Py_DECREF(er); + Py_DECREF(er); + PyErr_Clear(); + goto done; + } else { + PyErr_Print(); + } + goto done; + } + Py_DECREF(v); + ret = 0; + done: + if (set_file_name && PyDict_DelItemString(d, "__file__")) + PyErr_Clear(); + Py_XDECREF(m); + return ret; +} +#endif // HAVE_PYTHON + typedef enum { PM3_UNSPECIFIED, PM3_LUA, @@ -319,13 +380,17 @@ static int CmdScriptRun(const char *Cmd) { free(script_path); return PM3_ESOFT; } - - PyRun_SimpleFileExFlags(f, preferredName, 1, NULL); + int ret = Pm3PyRun_SimpleFileNoExit(f, preferredName); Py_Finalize(); PyMem_RawFree(program); free(script_path); - PrintAndLogEx(SUCCESS, "\nfinished " _YELLOW_("%s"), preferredName); - return PM3_SUCCESS; + if (ret) { + PrintAndLogEx(WARNING, "\nfinished " _YELLOW_("%s") " with exception", preferredName); + return PM3_ESOFT; + } else { + PrintAndLogEx(SUCCESS, "\nfinished " _YELLOW_("%s"), preferredName); + return PM3_SUCCESS; + } } #endif From b0d969da24cf8f330c7a829978be8ef79cb938f7 Mon Sep 17 00:00:00 2001 From: Bjoern Kerler <info@revskills.de> Date: Sat, 13 Jun 2020 16:55:30 +0200 Subject: [PATCH 434/527] Fix unsigned vs. signed --- client/src/cmdhfmfdes.c | 348 ++++++++++++++++++++-------------------- 1 file changed, 175 insertions(+), 173 deletions(-) diff --git a/client/src/cmdhfmfdes.c b/client/src/cmdhfmfdes.c index 9c4fea49a..920fcaba8 100644 --- a/client/src/cmdhfmfdes.c +++ b/client/src/cmdhfmfdes.c @@ -340,8 +340,8 @@ static char *getCardSizeStr(uint8_t fsize) { static char buf[40] = {0x00}; char *retStr = buf; - uint16_t usize = 1 << ((fsize >> 1) + 1); - uint16_t lsize = 1 << (fsize >> 1); + uint16_t usize = 1 << (((uint16_t)fsize >> 1) + 1); + uint16_t lsize = 1 << ((uint16_t)fsize >> 1); // is LSB set? if (fsize & 1) @@ -390,7 +390,7 @@ static char *getVersionStr(uint8_t major, uint8_t minor) { } -static int DESFIRESendApdu(bool activate_field, bool leavefield_on, sAPDU apdu, uint8_t *result, int max_result_len, int *result_len, uint16_t *sw) { +static int DESFIRESendApdu(bool activate_field, bool leavefield_on, sAPDU apdu, uint8_t *result, uint32_t max_result_len, uint32_t *result_len, uint16_t *sw) { *result_len = 0; if (sw) *sw = 0; @@ -417,7 +417,7 @@ static int DESFIRESendApdu(bool activate_field, bool leavefield_on, sAPDU apdu, if (GetAPDULogging() || (g_debugMode > 1)) PrintAndLogEx(SUCCESS, ">>>> %s", sprint_hex(data, datalen)); - res = ExchangeAPDU14a(data, datalen, activate_field, leavefield_on, result, max_result_len, result_len); + res = ExchangeAPDU14a(data, datalen, activate_field, leavefield_on, result, max_result_len, (int *)result_len); if (res) { return res; } @@ -567,7 +567,7 @@ static const char *GetErrorString(int res, uint16_t *sw) { return ""; } -static int send_desfire_cmd(sAPDU *apdu, bool select, uint8_t *dest, int *recv_len, uint16_t *sw, int splitbysize, bool readalldata) { +static int send_desfire_cmd(sAPDU *apdu, bool select, uint8_t *dest, uint32_t *recv_len, uint16_t *sw, uint32_t splitbysize, bool readalldata) { if (apdu == NULL) { PrintAndLogEx(DEBUG, "APDU=NULL"); return PM3_EINVARG; @@ -583,9 +583,9 @@ static int send_desfire_cmd(sAPDU *apdu, bool select, uint8_t *dest, int *recv_l *sw = 0; uint8_t data[255 * 5] = {0x00}; - int resplen = 0; - int pos = 0; - int i = 1; + uint32_t resplen = 0; + uint32_t pos = 0; + uint32_t i = 1; int res = DESFIRESendApdu(select, true, *apdu, data, sizeof(data), &resplen, sw); if (res != PM3_SUCCESS) { PrintAndLogEx(DEBUG, "%s", GetErrorString(res, sw)); @@ -710,7 +710,7 @@ static int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rp tag->authentication_scheme = AS_NEW; } - int recv_len = 0; + uint32_t recv_len = 0; uint16_t sw = 0; uint8_t recv_data[256] = {0}; @@ -737,7 +737,7 @@ static int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rp return 3; } - int expectedlen = 8; + uint32_t expectedlen = 8; if (payload->algo == MFDES_ALGO_AES || payload->algo == MFDES_ALGO_3K3DES) { expectedlen = 16; } @@ -745,7 +745,7 @@ static int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rp if (recv_len != expectedlen) { return 4; } - int rndlen = recv_len; + uint32_t rndlen = recv_len; // Part 2 if (payload->mode != MFDES_AUTH_PICC) { @@ -784,7 +784,7 @@ static int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rp des_decrypt(encRndA, RndA, key->data); memcpy(both, encRndA, rndlen); - for (int x = 0; x < rndlen; x++) { + for (uint32_t x = 0; x < rndlen; x++) { rotRndB[x] = rotRndB[x] ^ encRndA[x]; } @@ -835,7 +835,7 @@ static int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rp } } - int bothlen = 16; + uint32_t bothlen = 16; if (payload->algo == MFDES_ALGO_AES || payload->algo == MFDES_ALGO_3K3DES) { bothlen = 32; } @@ -896,7 +896,7 @@ static int handler_desfire_auth(mfdes_authinput_t *payload, mfdes_auth_res_t *rp } rol(RndA, rndlen); - for (int x = 0; x < rndlen; x++) { + for (uint32_t x = 0; x < rndlen; x++) { if (RndA[x] != encRndA[x]) { if (g_debugMode > 1) { PrintAndLogEx(INFO, "Expected_RndA : %s", sprint_hex(RndA, rndlen)); @@ -961,7 +961,7 @@ static void AuthToError(int error) { static int test_desfire_authenticate(void) { uint8_t data[] = {0x00}; sAPDU apdu = {0x90, MFDES_AUTHENTICATE, 0x00, 0x00, 0x01, data}; // 0x0A, KEY 0 - int recv_len = 0; + uint32_t recv_len = 0; uint16_t sw = 0; int res = send_desfire_cmd(&apdu, true, NULL, &recv_len, &sw, 0, false); if (res == PM3_SUCCESS) @@ -976,7 +976,7 @@ static int test_desfire_authenticate(void) { static int test_desfire_authenticate_iso(void) { uint8_t data[] = {0x00}; sAPDU apdu = {0x90, MFDES_AUTHENTICATE_ISO, 0x00, 0x00, 0x01, data}; // 0x1A, KEY 0 - int recv_len = 0; + uint32_t recv_len = 0; uint16_t sw = 0; int res = send_desfire_cmd(&apdu, true, NULL, &recv_len, &sw, 0, false); if (res == PM3_SUCCESS) @@ -991,7 +991,7 @@ static int test_desfire_authenticate_iso(void) { static int test_desfire_authenticate_aes(void) { uint8_t data[] = {0x00}; sAPDU apdu = {0x90, MFDES_AUTHENTICATE_AES, 0x00, 0x00, 0x01, data}; // 0xAA, KEY 0 - int recv_len = 0; + uint32_t recv_len = 0; uint16_t sw = 0; int res = send_desfire_cmd(&apdu, true, NULL, &recv_len, &sw, 0, false); if (res == PM3_SUCCESS) @@ -1013,7 +1013,7 @@ static int handler_desfire_freemem(uint32_t *free_mem) { sAPDU apdu = {0x90, MFDES_GET_FREE_MEMORY, 0x00, 0x00, 0x00, NULL}; // 0x6E *free_mem = 0; - int recv_len = 0; + uint32_t recv_len = 0; uint16_t sw = 0; uint8_t fmem[4] = {0}; @@ -1037,7 +1037,7 @@ static int handler_desfire_freemem(uint32_t *free_mem) { return res; } -static int mifare_desfire_change_key(uint8_t key_no, uint8_t *new_key, int new_algo, uint8_t *old_key, int old_algo, int aes_version) { +static int mifare_desfire_change_key(uint8_t key_no, uint8_t *new_key, uint8_t new_algo, uint8_t *old_key, uint8_t old_algo, uint8_t aes_version) { key_no &= 0x0F; /* @@ -1060,7 +1060,7 @@ static int mifare_desfire_change_key(uint8_t key_no, uint8_t *new_key, int new_a uint8_t data[24 * 4] = {key_no}; sAPDU apdu = {0x90, MFDES_CHANGE_KEY, 0x00, 0x00, 0x01, data}; // 0xC4 - int new_key_length=16; + uint8_t new_key_length = 16; switch (new_algo) { case MFDES_ALGO_DES: case MFDES_ALGO_AES: @@ -1071,58 +1071,58 @@ static int mifare_desfire_change_key(uint8_t key_no, uint8_t *new_key, int new_a break; } - int __cmd_n = 0; - memcpy(data + __cmd_n + 1, new_key, new_key_length); + uint32_t cmdcnt = 0; + memcpy(data + cmdcnt + 1, new_key, new_key_length); if ((tag->authenticated_key_no & 0x0f) != (key_no & 0x0f)) { if (old_key) { - for (int n = 0; n < new_key_length; n++) { - data[__cmd_n + 1 + n] ^= old_key[n]; + for (uint32_t n = 0; n < new_key_length; n++) { + data[cmdcnt + 1 + n] ^= old_key[n]; } } } - __cmd_n += new_key_length; + cmdcnt += new_key_length; if (new_algo == MFDES_ALGO_AES) { - data[__cmd_n + 1] = aes_version; - __cmd_n += 1; + data[cmdcnt + 1] = aes_version; + cmdcnt += 1; } if ((tag->authenticated_key_no & 0x0f) != (key_no & 0x0f)) { switch (tag->authentication_scheme) { case AS_LEGACY: - iso14443a_crc_append(data + 1, __cmd_n); - __cmd_n += 2; - iso14443a_crc(new_key, new_key_length, data + __cmd_n); - __cmd_n += 2; + iso14443a_crc_append(data + 1, cmdcnt); + cmdcnt += 2; + iso14443a_crc(new_key, new_key_length, data + cmdcnt); + cmdcnt += 2; break; case AS_NEW: - desfire_crc32_append(data + 1, __cmd_n); - __cmd_n += 4; + desfire_crc32_append(data + 1, cmdcnt); + cmdcnt += 4; - desfire_crc32(new_key, new_key_length, data + __cmd_n); - __cmd_n += 4; + desfire_crc32(new_key, new_key_length, data + cmdcnt); + cmdcnt += 4; break; } } else { switch (tag->authentication_scheme) { case AS_LEGACY: - iso14443a_crc_append(data + 1, __cmd_n); - __cmd_n += 2; + iso14443a_crc_append(data + 1, cmdcnt); + cmdcnt += 2; break; case AS_NEW: - desfire_crc32_append(data, __cmd_n); - __cmd_n += 4; + desfire_crc32_append(data, cmdcnt); + cmdcnt += 4; break; } } - uint8_t *p = mifare_cryto_preprocess_data(tag, data + 1, (size_t *)&__cmd_n, 0, MDCM_ENCIPHERED | ENC_COMMAND | NO_CRC); - apdu.Lc = (uint8_t)__cmd_n + 1; + uint8_t *p = mifare_cryto_preprocess_data(tag, data + 1, (size_t *)&cmdcnt, 0, MDCM_ENCIPHERED | ENC_COMMAND | NO_CRC); + apdu.Lc = (uint8_t)cmdcnt + 1; apdu.data = p; - int recv_len = 0; + uint32_t recv_len = 0; uint16_t sw = 0; int res = send_desfire_cmd(&apdu, true, NULL, &recv_len, &sw, 0, true); @@ -1175,7 +1175,7 @@ static int desfire_print_signature(uint8_t *uid, uint8_t *signature, size_t sign {"Mifare Plus EV1", "044409ADC42F91A8394066BA83D872FB1D16803734E911170412DDF8BAD1A4DADFD0416291AFE1C748253925DA39A5F39A1C557FFACD34C62E"} }; - uint8_t i; + uint32_t i; bool is_valid = false; for (i = 0; i < ARRAYLEN(nxp_desfire_public_keys); i++) { @@ -1224,7 +1224,7 @@ static int handler_desfire_signature(uint8_t *signature, size_t *signature_len) uint8_t c[] = {0x00}; sAPDU apdu = {0x90, MFDES_READSIG, 0x00, 0x00, sizeof(c), c}; // 0x3C - int recv_len = 0; + uint32_t recv_len = 0; uint16_t sw = 0; int res = send_desfire_cmd(&apdu, true, signature, &recv_len, &sw, 0, true); if (res == PM3_SUCCESS) { @@ -1289,7 +1289,7 @@ static int handler_desfire_getkeysettings(uint8_t *key_settings, uint8_t *num_ke } sAPDU apdu = {0x90, MFDES_GET_KEY_SETTINGS, 0x00, 0x00, 0x00, NULL}; //0x45 - int recv_len = 0; + uint32_t recv_len = 0; uint16_t sw = 0; uint8_t data[2] = {0}; int res = send_desfire_cmd(&apdu, false, data, &recv_len, &sw, 0, true); @@ -1316,7 +1316,7 @@ static int handler_desfire_keyversion(uint8_t curr_key, uint8_t *num_versions) { return PM3_EINVARG; } sAPDU apdu = {0x90, MFDES_GET_KEY_VERSION, 0x00, 0x00, 0x01, &curr_key}; //0x64 - int recv_len = 0; + uint32_t recv_len = 0; uint16_t sw = 0; int res = send_desfire_cmd(&apdu, false, num_versions, &recv_len, &sw, 0, true); @@ -1335,7 +1335,7 @@ static int handler_desfire_getuid(uint8_t *uid) { return PM3_EINVARG; } sAPDU apdu = {0x90, MFDES_GET_UID, 0x00, 0x00, 0x00, NULL}; //0x51 - int recv_len = 0; + uint32_t recv_len = 0; uint16_t sw = 0; int res = send_desfire_cmd(&apdu, false, uid, &recv_len, &sw, 0, true); @@ -1350,7 +1350,7 @@ static int handler_desfire_getuid(uint8_t *uid) { static int handler_desfire_commit_transaction(void) { sAPDU apdu = {0x90, MFDES_COMMIT_TRANSACTION, 0x00, 0x00, 0x00, NULL}; //0xC7 - int recv_len = 0; + uint32_t recv_len = 0; uint16_t sw = 0; int res = send_desfire_cmd(&apdu, false, NULL, &recv_len, &sw, 0, true); @@ -1365,7 +1365,7 @@ static int handler_desfire_commit_transaction(void) { /*static int handler_desfire_abort_transaction(void) { sAPDU apdu = {0x90, MFDES_ABORT_TRANSACTION, 0x00, 0x00, 0x00, NULL}; //0xA7 - int recv_len = 0; + uint32_t recv_len = 0; uint16_t sw = 0; int res = send_desfire_cmd(&apdu, false, NULL, &recv_len, &sw, 0, true); @@ -1379,7 +1379,7 @@ static int handler_desfire_commit_transaction(void) { }*/ // --- GET APPIDS -static int handler_desfire_appids(uint8_t *dest, uint8_t *app_ids_len) { +static int handler_desfire_appids(uint8_t *dest, uint32_t *app_ids_len) { if (dest == NULL) { PrintAndLogEx(DEBUG, "DEST=NULL"); return PM3_EINVARG; @@ -1390,7 +1390,7 @@ static int handler_desfire_appids(uint8_t *dest, uint8_t *app_ids_len) { } sAPDU apdu = {0x90, MFDES_GET_APPLICATION_IDS, 0x00, 0x00, 0x00, NULL}; //0x6a - int recv_len = 0; + uint32_t recv_len = 0; uint16_t sw = 0; int res = send_desfire_cmd(&apdu, true, dest, &recv_len, &sw, 0, true); @@ -1400,7 +1400,7 @@ static int handler_desfire_appids(uint8_t *dest, uint8_t *app_ids_len) { if (sw != status(MFDES_S_OPERATION_OK)) return PM3_ESOFT; - *app_ids_len = (uint8_t)recv_len & 0xFF; + *app_ids_len = (uint8_t)(recv_len & 0xFF); return res; } @@ -1417,11 +1417,10 @@ static int handler_desfire_dfnames(dfname_t *dest, uint8_t *dfname_count) { *dfname_count = 0; sAPDU apdu = {0x90, MFDES_GET_DF_NAMES, 0x00, 0x00, 0x00, NULL}; //0x6d - int recv_len = 0; + uint32_t recv_len = 0; uint16_t sw = 0; int res = send_desfire_cmd(&apdu, true, (uint8_t *)dest, &recv_len, &sw, sizeof(dfname_t), true); if (res != PM3_SUCCESS) { - if (sw == status(MFDES_E_ILLEGAL_COMMAND_CODE)) return PM3_SUCCESS; return res; } @@ -1438,7 +1437,7 @@ static int handler_desfire_select_application(uint8_t *aid) { } if (aid == NULL) return PM3_EINVARG; sAPDU apdu = {0x90, MFDES_SELECT_APPLICATION, 0x00, 0x00, 0x03, aid}; //0x5a - int recv_len = 0; + uint32_t recv_len = 0; uint16_t sw = 0; int res = send_desfire_cmd(&apdu, true, NULL, &recv_len, &sw, sizeof(dfname_t), true); if (res != PM3_SUCCESS) { @@ -1472,14 +1471,14 @@ static int key_setting_to_algo(uint8_t aid[3], uint8_t *key_setting, mifare_des_ return res; } -static int handler_desfire_fileids(uint8_t *dest, uint8_t *file_ids_len) { +static int handler_desfire_fileids(uint8_t *dest, uint32_t *file_ids_len) { if (g_debugMode > 1) { if (dest == NULL) PrintAndLogEx(ERR, "DEST=NULL"); if (file_ids_len == NULL) PrintAndLogEx(ERR, "FILE_IDS_LEN=NULL"); } if (dest == NULL || file_ids_len == NULL) return PM3_EINVARG; sAPDU apdu = {0x90, MFDES_GET_FILE_IDS, 0x00, 0x00, 0x00, NULL}; //0x6f - int recv_len = 0; + uint32_t recv_len = 0; uint16_t sw = 0; *file_ids_len = 0; int res = send_desfire_cmd(&apdu, false, dest, &recv_len, &sw, 0, true); @@ -1493,7 +1492,7 @@ static int handler_desfire_fileids(uint8_t *dest, uint8_t *file_ids_len) { } // none, verified -static int handler_desfire_filesettings(uint8_t file_id, uint8_t *dest, int *destlen) { +static int handler_desfire_filesettings(uint8_t file_id, uint8_t *dest, uint32_t *destlen) { if (g_debugMode > 1) { if (dest == NULL) PrintAndLogEx(ERR, "DEST=NULL"); if (destlen == NULL) PrintAndLogEx(ERR, "DESTLEN=NULL"); @@ -1538,7 +1537,7 @@ static int handler_desfire_createapp(aidhdr_t *aidhdr, bool usename, bool usefid } uint16_t sw = 0; - int recvlen = 0; + uint32_t recvlen = 0; int res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); if (data != NULL) free(data); if (res != PM3_SUCCESS) { @@ -1550,11 +1549,11 @@ static int handler_desfire_createapp(aidhdr_t *aidhdr, bool usename, bool usefid return res; } -static int handler_desfire_deleteapp(uint8_t *aid) { +static int handler_desfire_deleteapp(const uint8_t *aid) { if (aid == NULL) return PM3_EINVARG; - sAPDU apdu = {0x90, MFDES_DELETE_APPLICATION, 0x00, 0x00, 3, aid}; // 0xDA + sAPDU apdu = {0x90, MFDES_DELETE_APPLICATION, 0x00, 0x00, 3, (uint8_t *)aid}; // 0xDA uint16_t sw = 0; - int recvlen = 0; + uint32_t recvlen = 0; int res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, _RED_(" Can't delete aid -> %s"), GetErrorString(res, &sw)); @@ -1567,7 +1566,7 @@ static int handler_desfire_deleteapp(uint8_t *aid) { static int handler_desfire_credit(mfdes_value_t *value, uint8_t cs) { sAPDU apdu = {0x90, MFDES_CREDIT, 0x00, 0x00, 1 + 4, (uint8_t *)value}; // 0x0C uint16_t sw = 0; - int recvlen = 0; + uint32_t recvlen = 0; size_t plen = apdu.Lc; uint8_t *p = mifare_cryto_preprocess_data(tag, (uint8_t *)apdu.data, &plen, 0, cs | MAC_COMMAND | CMAC_COMMAND | ENC_COMMAND); @@ -1586,7 +1585,7 @@ static int handler_desfire_credit(mfdes_value_t *value, uint8_t cs) { static int handler_desfire_limitedcredit(mfdes_value_t *value, uint8_t cs) { sAPDU apdu = {0x90, MFDES_LIMITED_CREDIT, 0x00, 0x00, 1 + 4, (uint8_t *)value}; // 0x1C uint16_t sw = 0; - int recvlen = 0; + uint32_t recvlen = 0; size_t plen = apdu.Lc; uint8_t *p = mifare_cryto_preprocess_data(tag, (uint8_t *)apdu.data, &plen, 0, cs | MAC_COMMAND | CMAC_COMMAND | ENC_COMMAND); @@ -1605,7 +1604,7 @@ static int handler_desfire_limitedcredit(mfdes_value_t *value, uint8_t cs) { static int handler_desfire_debit(mfdes_value_t *value, uint8_t cs) { sAPDU apdu = {0x90, MFDES_DEBIT, 0x00, 0x00, 1 + 4, (uint8_t *)value}; // 0xDC uint16_t sw = 0; - int recvlen = 0; + uint32_t recvlen = 0; size_t plen = apdu.Lc; uint8_t *p = mifare_cryto_preprocess_data(tag, (uint8_t *)apdu.data, &plen, 0, cs | MAC_COMMAND | CMAC_COMMAND | ENC_COMMAND); @@ -1627,7 +1626,7 @@ static int handler_desfire_readdata(mfdes_data_t *data, MFDES_FILE_TYPE_T type, if (type == MFDES_RECORD_FILE) apdu.INS = MFDES_READ_RECORDS; //0xBB uint16_t sw = 0; - int resplen = 0; + uint32_t resplen = 0; size_t plen = apdu.Lc; uint8_t *p = mifare_cryto_preprocess_data(tag, (uint8_t *)data, &plen, 0, MDCM_PLAIN | CMAC_COMMAND); @@ -1651,7 +1650,7 @@ static int handler_desfire_readdata(mfdes_data_t *data, MFDES_FILE_TYPE_T type, } -static int handler_desfire_getvalue(mfdes_value_t *value, int *resplen, uint8_t cs) { +static int handler_desfire_getvalue(mfdes_value_t *value, uint32_t *resplen, uint8_t cs) { if (value->fileno > 0x1F) return PM3_EINVARG; sAPDU apdu = {0x90, MFDES_GET_VALUE, 0x00, 0x00, 0x01, &value->fileno}; // 0xBD uint16_t sw = 0; @@ -1682,9 +1681,9 @@ static int handler_desfire_writedata(mfdes_data_t *data, MFDES_FILE_TYPE_T type, if (data->fileno > 0x1F) return PM3_EINVARG; uint32_t datatowrite = le24toh(data->length); uint32_t offset = le24toh(data->offset); - int datasize; - int pos = 0; - int recvlen = 0; + uint32_t datasize; + uint32_t pos = 0; + uint32_t recvlen = 0; int res = PM3_SUCCESS; uint16_t sw = 0; uint8_t tmp[59] = {0}; @@ -1742,7 +1741,7 @@ static int handler_desfire_deletefile(uint8_t fileno) { if (fileno > 0x1F) return PM3_EINVARG; sAPDU apdu = {0x90, MFDES_DELETE_FILE, 0x00, 0x00, 1, &fileno}; // 0xDF uint16_t sw = 0; - int recvlen = 0; + uint32_t recvlen = 0; int res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, _RED_(" Can't delete file -> %s"), GetErrorString(res, &sw)); @@ -1756,7 +1755,7 @@ static int handler_desfire_clearrecordfile(uint8_t fileno) { if (fileno > 0x1F) return PM3_EINVARG; sAPDU apdu = {0x90, MFDES_CLEAR_RECORD_FILE, 0x00, 0x00, 1, &fileno}; // 0xEB uint16_t sw = 0; - int recvlen = 0; + uint32_t recvlen = 0; int res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, _RED_(" Can't clear record file -> %s"), GetErrorString(res, &sw)); @@ -1779,7 +1778,7 @@ static int handler_desfire_create_value_file(mfdes_value_file_t *value) { sAPDU apdu = {0x90, MFDES_CREATE_VALUE_FILE, 0x00, 0x00, sizeof(mfdes_value_file_t), (uint8_t *)value}; // 0xCc uint16_t sw = 0; - int recvlen = 0; + uint32_t recvlen = 0; int res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, _RED_(" Can't create value -> %s"), GetErrorString(res, &sw)); @@ -1794,7 +1793,7 @@ static int handler_desfire_create_std_file(mfdes_file_t *file) { sAPDU apdu = {0x90, MFDES_CREATE_STD_DATA_FILE, 0x00, 0x00, sizeof(mfdes_file_t), (uint8_t *)file}; // 0xCD uint16_t sw = 0; - int recvlen = 0; + uint32_t recvlen = 0; int res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, _RED_(" Can't create file -> %s"), GetErrorString(res, &sw)); @@ -1810,7 +1809,7 @@ static int handler_desfire_create_linearrecordfile(mfdes_linear_t *file) { sAPDU apdu = {0x90, MFDES_CREATE_LINEAR_RECORD_FILE, 0x00, 0x00, sizeof(mfdes_linear_t), (uint8_t *)file}; // 0xC1 uint16_t sw = 0; - int recvlen = 0; + uint32_t recvlen = 0; int res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, _RED_(" Can't create linear record file -> %s"), GetErrorString(res, &sw)); @@ -1826,7 +1825,7 @@ static int handler_desfire_create_cyclicrecordfile(mfdes_linear_t *file) { sAPDU apdu = {0x90, MFDES_CREATE_CYCLIC_RECORD_FILE, 0x00, 0x00, sizeof(mfdes_linear_t), (uint8_t *)file}; // 0xC0 uint16_t sw = 0; - int recvlen = 0; + uint32_t recvlen = 0; int res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, _RED_(" Can't create cyclic record file -> %s"), GetErrorString(res, &sw)); @@ -1842,7 +1841,7 @@ static int handler_desfire_create_backup_file(mfdes_file_t *file) { sAPDU apdu = {0x90, MFDES_CREATE_BACKUP_DATA_FILE, 0x00, 0x00, sizeof(mfdes_file_t), (uint8_t *)file}; // 0xCB uint16_t sw = 0; - int recvlen = 0; + uint32_t recvlen = 0; int res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, _RED_(" Can't create backup file -> %s"), GetErrorString(res, &sw)); @@ -2030,7 +2029,7 @@ static int desfire_authenticate(int cmdAuthMode, int cmdAuthAlgo, uint8_t *aid, if (memcmp(aid, "\x00\x00\x00", 3) != 0) { uint8_t file_ids[33] = {0}; - uint8_t file_ids_len = 0; + uint32_t file_ids_len = 0; res = handler_desfire_fileids(file_ids, &file_ids_len); if (res != PM3_SUCCESS) return res; } @@ -2272,12 +2271,12 @@ static int selectfile(uint8_t *aid, uint32_t fileno, uint8_t *cs) { } uint8_t filesettings[20] = {0}; - int fileset_len = 0; + uint32_t fileset_len = 0; int res = handler_desfire_filesettings(fileno, filesettings, &fileset_len); if (tag->session_key != NULL) { mfdes_auth_res_t rpayload; - int keyno = (filesettings[0] >> 4) & 0xF; + uint8_t keyno = (uint8_t)((filesettings[0] >> 4) & 0xF); if (keyno != 0xE && currentauth[keyno].keyno == keyno) { if (handler_desfire_auth(¤tauth[keyno], &rpayload) != PM3_SUCCESS) { PrintAndLogEx(ERR, _RED_(" Couldn't authenticate key.")); @@ -2312,10 +2311,10 @@ static int CmdHF14ADesClearRecordFile(const char *Cmd) { int filenolen = 0; uint8_t _fileno[1] = {0}; - CLIGetHexWithReturn(ctx,1, _fileno, &filenolen); + CLIGetHexWithReturn(ctx, 1, _fileno, &filenolen); int aidlength = 3; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(ctx,2, aid, &aidlength); + CLIGetHexWithReturn(ctx, 2, aid, &aidlength); swap24(aid); CLIParserFree(ctx); @@ -2437,25 +2436,25 @@ static int CmdHF14ADesCreateFile(const char *Cmd) { arg_param_end }; - CLIExecWithReturn(ctx,Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); int filenolen = 0; uint8_t _fileno[1] = {0}; - CLIGetHexWithReturn(ctx,1, _fileno, &filenolen); + CLIGetHexWithReturn(ctx, 1, _fileno, &filenolen); int fidlength = 0; uint8_t fid[2] = {0}; - CLIParamHexToBuf(arg_get_str(ctx,2), fid, 2, &fidlength); + CLIParamHexToBuf(arg_get_str(ctx, 2), fid, 2, &fidlength); - uint8_t comset = arg_get_int(ctx,3); + uint8_t comset = arg_get_int(ctx, 3); int arlength = 0; uint8_t ar[2] = {0}; - CLIGetHexWithReturn(ctx,4, ar, &arlength); + CLIGetHexWithReturn(ctx, 4, ar, &arlength); int fsizelen = 0; uint8_t filesize[3] = {0}; - CLIGetHexWithReturn(ctx,5, filesize, &fsizelen); + CLIGetHexWithReturn(ctx, 5, filesize, &fsizelen); - bool isbackup = arg_get_lit(ctx,6); + bool isbackup = arg_get_lit(ctx, 6); int aidlength = 3; uint8_t aid[3] = {0}; CLIGetHexWithReturn(ctx, 7, aid, &aidlength); @@ -2591,13 +2590,13 @@ static int CmdHF14ADesGetValueData(const char *Cmd) { return PM3_ESOFT; } - int len = 0; + uint32_t len = 0; int res = handler_desfire_getvalue(&value, &len, cs); if (res == PM3_SUCCESS) { PrintAndLogEx(SUCCESS, "Successfully read value from File %u:", _fileno[0]); PrintAndLogEx(NORMAL, "\nOffset | Data | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); - for (int i = 0; i < len; i += 16) { + for (uint32_t i = 0; i < len; i += 16) { PrintAndLogEx(NORMAL, "%02d/0x%02X | %s| %s", i, i, sprint_hex(&value.value[i], len > 16 ? 16 : len), sprint_ascii(&value.value[i], len > 16 ? 16 : len)); } } else { @@ -2628,24 +2627,24 @@ static int CmdHF14ADesReadData(const char *Cmd) { arg_param_end }; - CLIExecWithReturn(ctx,Cmd, argtable, false); + CLIExecWithReturn(ctx, Cmd, argtable, false); int filenolen = 0; uint8_t _fileno[1] = {0}; - CLIGetHexWithReturn(ctx,1, _fileno, &filenolen); + CLIGetHexWithReturn(ctx, 1, _fileno, &filenolen); int offsetlength = 0; uint8_t offset[3] = {0}; - CLIParamHexToBuf(arg_get_str(ctx,2), offset, 3, &offsetlength); + CLIParamHexToBuf(arg_get_str(ctx, 2), offset, 3, &offsetlength); int flength = 0; uint8_t filesize[3] = {0}; - CLIParamHexToBuf(arg_get_str(ctx,3), filesize, 3, &flength); + CLIParamHexToBuf(arg_get_str(ctx, 3), filesize, 3, &flength); - int type = arg_get_int(ctx,4); + int type = arg_get_int(ctx, 4); int aidlength = 3; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(ctx,5, aid, &aidlength); + CLIGetHexWithReturn(ctx, 5, aid, &aidlength); swap24(aid); CLIParserFree(ctx); @@ -2677,7 +2676,7 @@ static int CmdHF14ADesReadData(const char *Cmd) { memcpy(ft.length, filesize, 3); ft.fileno = _fileno[0]; - uint32_t bytestoread = le24toh(filesize); + uint32_t bytestoread = (uint32_t)le24toh(filesize); bytestoread &= 0xFFFFFF; if (bytestoread == 0) @@ -2748,16 +2747,16 @@ static int CmdHF14ADesChangeValue(const char *Cmd) { int filenolen = 0; uint8_t _fileno[1] = {0}; - CLIGetHexWithReturn(ctx,1, _fileno, &filenolen); + CLIGetHexWithReturn(ctx, 1, _fileno, &filenolen); value.fileno = _fileno[0]; int vlength = 0x0; - CLIParamHexToBuf(arg_get_str(ctx,2), value.value, 4, &vlength); + CLIParamHexToBuf(arg_get_str(ctx, 2), value.value, 4, &vlength); - int mode = arg_get_int(ctx,3); + int mode = arg_get_int(ctx, 3); int aidlength = 3; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(ctx,4, aid, &aidlength); + CLIGetHexWithReturn(ctx, 4, aid, &aidlength); swap24(aid); CLIParserFree(ctx); @@ -2851,7 +2850,7 @@ static int CmdHF14ADesWriteData(const char *Cmd) { int offsetlength = 0; uint8_t offset[3] = {0}; - CLIParamHexToBuf(arg_get_str(ctx,2), offset, 3, &offsetlength); + CLIParamHexToBuf(arg_get_str(ctx, 2), offset, 3, &offsetlength); int dlength = 0xFFFF; uint8_t *data = (uint8_t *)calloc(dlength, sizeof(uint8_t)); @@ -2860,12 +2859,12 @@ static int CmdHF14ADesWriteData(const char *Cmd) { CLIParserFree(ctx); return PM3_EMALLOC; } - CLIParamHexToBuf(arg_get_str(ctx,3), data, 0xFFFF, &dlength); + CLIParamHexToBuf(arg_get_str(ctx, 3), data, 0xFFFF, &dlength); - int type = arg_get_int(ctx,4); + int type = arg_get_int(ctx, 4); int aidlength = 3; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(ctx,5, aid, &aidlength); + CLIGetHexWithReturn(ctx, 5, aid, &aidlength); swap24(aid); CLIParserFree(ctx); @@ -2969,25 +2968,25 @@ static int CmdHF14ADesCreateRecordFile(const char *Cmd) { int fidlength = 0; uint8_t fid[2] = {0}; - CLIParamHexToBuf(arg_get_str(ctx,2), fid, 2, &fidlength); + CLIParamHexToBuf(arg_get_str(ctx, 2), fid, 2, &fidlength); - uint8_t comset = arg_get_int(ctx,3); + uint8_t comset = arg_get_int(ctx, 3); int arlength = 0; uint8_t ar[2] = {0}; - CLIGetHexWithReturn(ctx,4, ar, &arlength); + CLIGetHexWithReturn(ctx, 4, ar, &arlength); int rsizelen = 0; uint8_t recordsize[3] = {0}; - CLIGetHexWithReturn(ctx,5, recordsize, &rsizelen); + CLIGetHexWithReturn(ctx, 5, recordsize, &rsizelen); int msizelen = 0; uint8_t maxnumrecords[3] = {0}; - CLIGetHexWithReturn(ctx,6, maxnumrecords, &msizelen); + CLIGetHexWithReturn(ctx, 6, maxnumrecords, &msizelen); - bool cyclic = arg_get_lit(ctx,7); + bool cyclic = arg_get_lit(ctx, 7); int aidlength = 3; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(ctx,8, aid, &aidlength); + CLIGetHexWithReturn(ctx, 8, aid, &aidlength); swap24(aid); CLIParserFree(ctx); @@ -3102,29 +3101,29 @@ static int CmdHF14ADesCreateValueFile(const char *Cmd) { uint8_t _fileno[1] = {0}; CLIGetHexWithReturn(ctx, 1, _fileno, &filenolen); - uint8_t comset = arg_get_int(ctx,2); + uint8_t comset = arg_get_int(ctx, 2); int arlength = 0; uint8_t ar[2] = {0}; - CLIGetHexWithReturn(ctx,3, ar, &arlength); + CLIGetHexWithReturn(ctx, 3, ar, &arlength); int lllen = 0; uint8_t lowerlimit[4] = {0}; - CLIGetHexWithReturn(ctx,4, lowerlimit, &lllen); + CLIGetHexWithReturn(ctx, 4, lowerlimit, &lllen); int ullen = 0; uint8_t upperlimit[4] = {0}; - CLIGetHexWithReturn(ctx,5, upperlimit, &ullen); + CLIGetHexWithReturn(ctx, 5, upperlimit, &ullen); int vllen = 0; uint8_t value[4] = {0}; - CLIGetHexWithReturn(ctx,6, value, &vllen); + CLIGetHexWithReturn(ctx, 6, value, &vllen); int limitedlen = 0; uint8_t limited[1] = {0}; - CLIGetHexWithReturn(ctx,7, limited, &limitedlen); + CLIGetHexWithReturn(ctx, 7, limited, &limitedlen); int aidlength = 3; uint8_t aid[3] = {0}; - CLIGetHexWithReturn(ctx,8, aid, &aidlength); + CLIGetHexWithReturn(ctx, 8, aid, &aidlength); swap24(aid); CLIParserFree(ctx); @@ -3219,7 +3218,7 @@ static int CmdHF14ADesFormatPICC(const char *Cmd) { sAPDU apdu = {0x90, MFDES_FORMAT_PICC, 0x00, 0x00, 0, NULL}; // 0xDF uint16_t sw = 0; - int recvlen = 0; + uint32_t recvlen = 0; int res = send_desfire_cmd(&apdu, false, NULL, &recvlen, &sw, 0, true); if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, _RED_(" Can't format picc -> %s"), GetErrorString(res, &sw)); @@ -3491,9 +3490,9 @@ static int DecodeFileSettings(uint8_t *src, int src_len, int maclen) { PrintAndLogEx(INFO, " Lower limit: %d (0x%X) - Upper limit: %d (0x%X) - limited credit value: %d (0x%X) - limited credit enabled: %d", lowerlimit, lowerlimit, upperlimit, upperlimit, limitcredvalue, limitcredvalue, limited_credit_enabled); return PM3_SUCCESS; } else if (src_len == 1 + 1 + 2 + 3 + 3 + 3 + maclen) { - int recordsize = (src[6] << 16) + (src[5] << 8) + src[4]; - int maxrecords = (src[9] << 16) + (src[8] << 8) + src[7]; - int currentrecord = (src[12] << 16) + (src[11] << 8) + src[10]; + uint32_t recordsize = (src[6] << 16) + (src[5] << 8) + src[4]; + uint32_t maxrecords = (src[9] << 16) + (src[8] << 8) + src[7]; + uint32_t currentrecord = (src[12] << 16) + (src[11] << 8) + src[10]; DecodeFileType(filetype); DecodeComSet(comset); DecodeAccessRights(accrights); @@ -3509,10 +3508,10 @@ static int CmdHF14ADesDump(const char *Cmd) { uint8_t aid[3] = {0}; uint8_t app_ids[78] = {0}; - uint8_t app_ids_len = 0; + uint32_t app_ids_len = 0; uint8_t file_ids[33] = {0}; - uint8_t file_ids_len = 0; + uint32_t file_ids_len = 0; dfname_t dfnames[255]; uint8_t dfname_count = 0; @@ -3533,7 +3532,7 @@ static int CmdHF14ADesDump(const char *Cmd) { PrintAndLogEx(INFO, "-- Mifare DESFire Dump ----------------------"); PrintAndLogEx(INFO, "-------------------------------------------------------------"); - for (int i = 0; i < app_ids_len; i += 3) { + for (uint32_t i = 0; i < app_ids_len; i += 3) { aid[0] = app_ids[i]; aid[1] = app_ids[i + 1]; @@ -3542,7 +3541,7 @@ static int CmdHF14ADesDump(const char *Cmd) { PrintAndLogEx(SUCCESS, " AID : " _GREEN_("%02X%02X%02X"), aid[2], aid[1], aid[0]); PrintAndLogEx(SUCCESS, " AID Function Cluster 0x%02X: " _YELLOW_("%s"), aid[2], cluster_to_text(aid[2])); - for (int m = 0; m < dfname_count; m++) { + for (uint8_t m = 0; m < dfname_count; m++) { if (dfnames[m].aid[0] == aid[0] && dfnames[m].aid[1] == aid[1] && dfnames[m].aid[2] == aid[2]) { PrintAndLogEx(SUCCESS, " - DF " _YELLOW_("%02X%02X") " Name : " _YELLOW_("%s"), dfnames[m].fid[1], dfnames[m].fid[0], dfnames[m].name); } @@ -3559,11 +3558,11 @@ static int CmdHF14ADesDump(const char *Cmd) { res = handler_desfire_fileids(file_ids, &file_ids_len); if (res != PM3_SUCCESS) continue; - for (int j = file_ids_len - 1; j >= 0; j--) { + for (int j = (int)file_ids_len - 1; j >= 0; j--) { PrintAndLogEx(SUCCESS, "\n\n Fileid %d (0x%02x)", file_ids[j], file_ids[j]); uint8_t filesettings[20] = {0}; - int fileset_len = 0; + uint32_t fileset_len = 0; res = handler_desfire_filesettings(file_ids[j], filesettings, &fileset_len); if (res != PM3_SUCCESS) continue; @@ -3584,7 +3583,7 @@ static int CmdHF14ADesDump(const char *Cmd) { } fdata.data = data; - res = handler_desfire_readdata(&fdata, MFDES_DATA_FILE,filesettings[1]); + res = handler_desfire_readdata(&fdata, MFDES_DATA_FILE, filesettings[1]); if (res == PM3_SUCCESS) { PrintAndLogEx(NORMAL, "\nOffset | Data | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); @@ -3604,12 +3603,12 @@ static int CmdHF14ADesDump(const char *Cmd) { PrintAndLogEx(NORMAL, "\n\nValue file: 0x%0x", file_ids[j]); mfdes_value_t value; value.fileno = file_ids[j]; - int len = 0; - res = handler_desfire_getvalue(&value, &len,filesettings[1]); + uint32_t len = 0; + res = handler_desfire_getvalue(&value, &len, filesettings[1]); if (res == PM3_SUCCESS) { PrintAndLogEx(NORMAL, "\nOffset | Value | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); - for (int n = 0; n < len; n += 16) { + for (uint32_t n = 0; n < len; n += 16) { PrintAndLogEx(NORMAL, "%02d/0x%02X | %s| %s", n, n, sprint_hex(&value.value[n], len > 16 ? 16 : len), sprint_ascii(&value.value[n], len > 16 ? 16 : len)); } } else { @@ -3619,8 +3618,8 @@ static int CmdHF14ADesDump(const char *Cmd) { } } else if (fileset_len == 1 + 1 + 2 + 3 + 3 + 3 + maclen) { - int maxrecords = (filesettings[9] << 16) + (filesettings[8] << 8) + filesettings[7]; - int filesize = (filesettings[6] << 16) + (filesettings[5] << 8) + filesettings[4]; + uint32_t maxrecords = (filesettings[9] << 16) + (filesettings[8] << 8) + filesettings[7]; + uint32_t filesize = (filesettings[6] << 16) + (filesettings[5] << 8) + filesettings[4]; mfdes_data_t fdata; fdata.fileno = file_ids[j]; memset(fdata.length, 0, 3); @@ -3631,13 +3630,13 @@ static int CmdHF14ADesDump(const char *Cmd) { } fdata.data = data; - for (int offset = 0; offset < maxrecords; offset++) { + for (uint32_t offset = 0; offset < maxrecords; offset++) { PrintAndLogEx(NORMAL, "\n\nRecord offset: %024x", offset); memset(data, 0, filesize); fdata.offset[0] = offset & 0xFF; fdata.offset[1] = (offset >> 8) & 0xFF; fdata.offset[2] = (offset >> 16) & 0xFF; - res = handler_desfire_readdata(&fdata, MFDES_RECORD_FILE,filesettings[1]); + res = handler_desfire_readdata(&fdata, MFDES_RECORD_FILE, filesettings[1]); if (res == PM3_SUCCESS) { PrintAndLogEx(NORMAL, "\nOffset | Data | Ascii"); PrintAndLogEx(NORMAL, "----------------------------------------------------------------------------"); @@ -3667,10 +3666,10 @@ static int CmdHF14ADesEnumApplications(const char *Cmd) { uint8_t aid[3] = {0}; uint8_t app_ids[78] = {0}; - uint8_t app_ids_len = 0; + uint32_t app_ids_len = 0; uint8_t file_ids[33] = {0}; - uint8_t file_ids_len = 0; + uint32_t file_ids_len = 0; dfname_t dfnames[255]; uint8_t dfname_count = 0; @@ -3690,7 +3689,7 @@ static int CmdHF14ADesEnumApplications(const char *Cmd) { PrintAndLogEx(INFO, "-------------------------------------------------------------"); PrintAndLogEx(SUCCESS, " Tag report " _GREEN_("%d") " application%c", app_ids_len / 3, (app_ids_len == 3) ? ' ' : 's'); - for (int i = 0; i < app_ids_len; i += 3) { + for (uint32_t i = 0; i < app_ids_len; i += 3) { aid[0] = app_ids[i]; aid[1] = app_ids[i + 1]; @@ -3708,7 +3707,7 @@ static int CmdHF14ADesEnumApplications(const char *Cmd) { PrintAndLogEx(SUCCESS, " AID : " _GREEN_("%02X%02X%02X"), aid[2], aid[1], aid[0]); PrintAndLogEx(SUCCESS, " AID Function Cluster 0x%02X: " _YELLOW_("%s"), aid[2], cluster_to_text(aid[2])); - for (int m = 0; m < dfname_count; m++) { + for (uint8_t m = 0; m < dfname_count; m++) { if (dfnames[m].aid[0] == aid[0] && dfnames[m].aid[1] == aid[1] && dfnames[m].aid[2] == aid[2]) { PrintAndLogEx(SUCCESS, " - DF " _YELLOW_("%02X%02X") " Name : " _YELLOW_("%s"), dfnames[m].fid[1], dfnames[m].fid[0], dfnames[m].name); } @@ -3724,12 +3723,12 @@ static int CmdHF14ADesEnumApplications(const char *Cmd) { if (res != PM3_SUCCESS) continue; PrintAndLogEx(SUCCESS, " Tag report " _GREEN_("%d") " file%c", file_ids_len, (file_ids_len == 1) ? ' ' : 's'); - for (int j = file_ids_len - 1; j >= 0; j--) { + for (int j = (int)file_ids_len - 1; j >= 0; j--) { PrintAndLogEx(SUCCESS, " Fileid %d (0x%02x)", file_ids[j], file_ids[j]); uint8_t filesettings[20] = {0}; - int fileset_len = 0; - int maclen = 0; // To be implemented + uint32_t fileset_len = 0; + uint32_t maclen = 0; // To be implemented res = handler_desfire_filesettings(file_ids[j], filesettings, &fileset_len); if (res != PM3_SUCCESS) continue; @@ -3890,29 +3889,32 @@ static int CmdHF14ADesAuth(const char *Cmd) { CLIParserFree(ctx); if (cmdAuthAlgo == MFDES_ALGO_AES) { + if (keylen == 0) { + keylen = 16; + memcpy(key, aesdefaultkeys[0], keylen); + } keylength = 16; } else if (cmdAuthAlgo == MFDES_ALGO_3DES) { + if (keylen == 0) { + keylen = 16; + memcpy(key, aesdefaultkeys[0], keylen); + } keylength = 16; } else if (cmdAuthAlgo == MFDES_ALGO_DES) { - keylength = 8; - } else if (cmdAuthAlgo == MFDES_ALGO_3K3DES) { - keylength = 24; - } - if (keylen == 0) { - if (cmdAuthAlgo == MFDES_ALGO_AES) { - keylen = 16; - memcpy(key, aesdefaultkeys[0], keylen); - } else if (cmdAuthAlgo == MFDES_ALGO_3DES) { - keylen = 16; - memcpy(key, aesdefaultkeys[0], keylen); - } else if (cmdAuthAlgo == MFDES_ALGO_DES) { + if (keylen == 0) { keylen = 8; memcpy(key, desdefaultkeys[0], keylen); - } else if (cmdAuthAlgo == MFDES_ALGO_3K3DES) { + } + keylength = 8; + } else if (cmdAuthAlgo == MFDES_ALGO_3K3DES) { + if (keylen == 0) { keylen = 24; memcpy(key, k3kdefaultkeys[0], keylen); } - } else if ((keylen < 8) || (keylen > 24)) { + keylength = 24; + } + + if ((keylen < 8) || (keylen > 24)) { PrintAndLogEx(ERR, "Specified key must have %d bytes length.", keylen); return PM3_EINVARG; } @@ -4005,23 +4007,23 @@ static int AuthCheckDesfire(uint8_t *aid, if (memcmp(aid, "\x00\x00\x00", 3) != 0) { uint8_t file_ids[33] = {0}; - uint8_t file_ids_len = 0; + uint32_t file_ids_len = 0; // Get File IDs if (handler_desfire_fileids(file_ids, &file_ids_len) == PM3_SUCCESS) { - for (int j = file_ids_len - 1; j >= 0; j--) { + for (int j = (int)file_ids_len - 1; j >= 0; j--) { uint8_t filesettings[20] = {0}; - int fileset_len = 0; + uint32_t fileset_len = 0; res = handler_desfire_filesettings(file_ids[j], filesettings, &fileset_len); if (res == PM3_SUCCESS) { uint16_t accrights = (filesettings[3] << 8) + filesettings[2]; - int change_access_rights = accrights & 0xF; - int read_write_access = (accrights >> 4) & 0xF; - int write_access = (accrights >> 8) & 0xF; - int read_access = (accrights >> 12) & 0xF; + uint8_t change_access_rights = accrights & 0xF; + uint8_t read_write_access = (accrights >> 4) & 0xF; + uint8_t write_access = (accrights >> 8) & 0xF; + uint8_t read_access = (accrights >> 12) & 0xF; if (change_access_rights == 0xE) change_access_rights = 0x0; if (read_write_access == 0xE) read_write_access = 0x0; @@ -4053,7 +4055,7 @@ static int AuthCheckDesfire(uint8_t *aid, } if (file_ids_len == 0) { - for (int z = 0; z < 0xE; z++) { + for (uint8_t z = 0; z < 0xE; z++) { usedkeys[z] = 1; des = true; tdes = true; @@ -4074,7 +4076,7 @@ static int AuthCheckDesfire(uint8_t *aid, for (uint8_t keyno = 0; keyno < 0xE; keyno++) { if (usedkeys[keyno] == 1 && foundKeys[0][keyno][0] == 0) { - for (int curkey = 0; curkey < deskeyListLen; curkey++) { + for (uint32_t curkey = 0; curkey < deskeyListLen; curkey++) { mfdes_auth_res_t rpayload; error = desfire_authenticate(MFDES_AUTH_DES, MFDES_ALGO_DES, aid, deskeyList[curkey], keyno, &rpayload); if (error == PM3_SUCCESS) { @@ -4313,11 +4315,11 @@ static int CmdHF14aDesChk(const char *Cmd) { // 1-byte pattern search mode if (pattern1b) { - for (int i = 0; i < 0x100; i++) + for (uint32_t i = 0; i < 0x100; i++) memset(aeskeyList[i], i, 16); - for (int i = 0; i < 0x100; i++) + for (uint32_t i = 0; i < 0x100; i++) memset(deskeyList[i], i, 8); - for (int i = 0; i < 0x100; i++) + for (uint32_t i = 0; i < 0x100; i++) memset(k3kkeyList[i], i, 24); aeskeyListLen = 0x100; deskeyListLen = 0x100; @@ -4376,7 +4378,7 @@ static int CmdHF14aDesChk(const char *Cmd) { bool result = false; uint8_t app_ids[78] = {0}; - uint8_t app_ids_len = 0; + uint32_t app_ids_len = 0; if (handler_desfire_appids(app_ids, &app_ids_len) != PM3_SUCCESS) { PrintAndLogEx(ERR, "Can't get list of applications on tag"); @@ -4389,7 +4391,7 @@ static int CmdHF14aDesChk(const char *Cmd) { app_ids_len = 1; } - for (int x = 0; x < app_ids_len / 3; x++) { + for (uint32_t x = 0; x < app_ids_len / 3; x++) { uint32_t curaid = (app_ids[x * 3] & 0xFF) + ((app_ids[(x * 3) + 1] & 0xFF) << 8) + ((app_ids[(x * 3) + 2] & 0xFF) << 16); PrintAndLogEx(ERR, "Checking aid 0x%06X...", curaid); res = AuthCheckDesfire(&app_ids[x * 3], deskeyList, deskeyListLen, aeskeyList, aeskeyListLen, k3kkeyList, k3kkeyListLen, foundKeys, &result); From 9a07c06596c1234fe2b7ff78d818f07546005de4 Mon Sep 17 00:00:00 2001 From: Bjoern Kerler <info@revskills.de> Date: Sat, 13 Jun 2020 17:16:17 +0200 Subject: [PATCH 435/527] Fix htole32 issue --- client/src/mifare/desfire_crypto.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/client/src/mifare/desfire_crypto.c b/client/src/mifare/desfire_crypto.c index b9ccddf77..95784aaa7 100644 --- a/client/src/mifare/desfire_crypto.c +++ b/client/src/mifare/desfire_crypto.c @@ -560,7 +560,7 @@ void *mifare_cryto_postprocess_data(desfiretag_t tag, void *data, size_t *nbytes PrintAndLogEx(NORMAL, "Expected MAC %s", sprint_hex(data + *nbytes, key_macing_length(key))); PrintAndLogEx(NORMAL, "Actual MAC %s", sprint_hex(edata + edl - 8, key_macing_length(key))); #endif - #ifdef WITH_DEBUG +#ifdef WITH_DEBUG Dbprintf("MACing not verified"); hexdump((uint8_t *)data + *nbytes, key_macing_length(key), "Expect ", 0); hexdump((uint8_t *)edata + edl - 8, key_macing_length(key), "Actual ", 0); @@ -897,6 +897,10 @@ desfire_crc32_byte(uint32_t *crc, const uint8_t value) { } } +#ifndef htole32 + #define htole32(x) (x) +#endif + void desfire_crc32(const uint8_t *data, const size_t len, uint8_t *crc) { uint32_t desfire_crc = CRC32_PRESET; for (size_t i = 0; i < len; i++) { From 6f336832dabd9ca8b3137af45e42fe8a1b40f3c8 Mon Sep 17 00:00:00 2001 From: Bjoern Kerler <info@revskills.de> Date: Sat, 13 Jun 2020 17:20:48 +0200 Subject: [PATCH 436/527] Add Changelog --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7f3d8c886..ce186a2b0 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fix `hf mfdes` authentification issues, DES working (@bkerler) - Add Android cross-compilation to client cmake (@dxl, @doegox) - Fix `emv scan` - now saves in current folder and uses unique names (@iceman1001) - Fix pm3.sh - parse COM ports larger than one digit (@doegox) From a9bfcb015c24443bdd9c8b45c2b1d5710df61921 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 13 Jun 2020 17:49:33 +0200 Subject: [PATCH 437/527] style --- client/src/fileutils.c | 22 ++++++++++++++-------- 1 file changed, 14 insertions(+), 8 deletions(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 8528fa770..3e2f252cb 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -228,17 +228,20 @@ static char *filenamemcopy(const char *preferredName, const char *suffix) { char *newfilenamemcopy(const char *preferredName, const char *suffix) { if (preferredName == NULL) return NULL; if (suffix == NULL) return NULL; - uint16_t preferredNameLen = strlen(preferredName); + + uint16_t p_namelen = strlen(preferredName); if (str_endswith(preferredName, suffix)) - preferredNameLen -= strlen(suffix); - char *fileName = (char *) calloc(preferredNameLen + strlen(suffix) + 1 + 10, sizeof(uint8_t)); // 10: room for filenum to ensure new filename + p_namelen -= strlen(suffix); + + char *fileName = (char *) calloc(p_namelen + strlen(suffix) + 1 + 10, sizeof(uint8_t)); // 10: room for filenum to ensure new filename if (fileName == NULL) { return NULL; } + int num = 1; - sprintf(fileName, "%.*s%s", preferredNameLen, preferredName, suffix); + sprintf(fileName, "%.*s%s", p_namelen, preferredName, suffix); while (fileExists(fileName)) { - sprintf(fileName, "%.*s-%d%s", preferredNameLen, preferredName, num, suffix); + sprintf(fileName, "%.*s-%d%s", p_namelen, preferredName, num, suffix); num++; } return fileName; @@ -475,7 +478,7 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, } break; } - case jsfMfPlusKeys: + case jsfMfPlusKeys: { JsonSaveStr(root, "FileType", "mfp"); JsonSaveBufAsHexCompact(root, "$.Card.UID", &data[0], 7); JsonSaveBufAsHexCompact(root, "$.Card.SAK", &data[10], 1); @@ -503,7 +506,8 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, } } break; - case jsfMfDesfireKeys: + } + case jsfMfDesfireKeys: { JsonSaveStr(root, "FileType", "mfdes"); JsonSaveBufAsHexCompact(root, "$.Card.UID", &data[0], 7); JsonSaveBufAsHexCompact(root, "$.Card.SAK", &data[10], 1); @@ -541,9 +545,11 @@ int saveFileJSONex(const char *preferredName, JSONFileType ftype, uint8_t *data, } } break; - case jsfCustom: + } + case jsfCustom: { (*callback)(root); break; + } default: break; } From e7b2dbd5e84b46eb8794d6d911e7c83af23bc1d7 Mon Sep 17 00:00:00 2001 From: Bjoern Kerler <info@revskills.de> Date: Sat, 13 Jun 2020 17:58:47 +0200 Subject: [PATCH 438/527] Remove unnecessary crc --- client/src/mifare/desfire_crypto.c | 29 ++--------------------------- 1 file changed, 2 insertions(+), 27 deletions(-) diff --git a/client/src/mifare/desfire_crypto.c b/client/src/mifare/desfire_crypto.c index 95784aaa7..0ec6bd70d 100644 --- a/client/src/mifare/desfire_crypto.c +++ b/client/src/mifare/desfire_crypto.c @@ -881,37 +881,12 @@ void mifare_cypher_blocks_chained(desfiretag_t tag, desfirekey_t key, uint8_t *i } } -#define CRC32_PRESET 0xFFFFFFFF - -static void -desfire_crc32_byte(uint32_t *crc, const uint8_t value) { - /* x32 + x26 + x23 + x22 + x16 + x12 + x11 + x10 + x8 + x7 + x5 + x4 + x2 + x + 1 */ - const uint32_t poly = 0xEDB88320; - - *crc ^= value; - for (int current_bit = 7; current_bit >= 0; current_bit--) { - int bit_out = (*crc) & 0x00000001; - *crc >>= 1; - if (bit_out) - *crc ^= poly; - } -} - -#ifndef htole32 - #define htole32(x) (x) -#endif - void desfire_crc32(const uint8_t *data, const size_t len, uint8_t *crc) { - uint32_t desfire_crc = CRC32_PRESET; - for (size_t i = 0; i < len; i++) { - desfire_crc32_byte(&desfire_crc, data[i]); - } - - *((uint32_t *)(crc)) = htole32(desfire_crc); + crc32_ex(data,len,crc); } void desfire_crc32_append(uint8_t *data, const size_t len) { - desfire_crc32(data, len, data + len); + crc32_ex(data, len, data + len); } void iso14443a_crc_append(uint8_t *data, size_t len) { From ae36cc6e1b10033ebf637c9993675d54b48125b7 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 13 Jun 2020 18:05:31 +0200 Subject: [PATCH 439/527] color document --- doc/colors_notes.md | 50 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 50 insertions(+) create mode 100644 doc/colors_notes.md diff --git a/doc/colors_notes.md b/doc/colors_notes.md new file mode 100644 index 000000000..7756addd9 --- /dev/null +++ b/doc/colors_notes.md @@ -0,0 +1,50 @@ +<a id="Top"></a> +# Notes on Color usage. + +## Table of Contents + * [style/color](#style_color) + * [Proxspace](#proxspace) + * [](#) + +The client should autodetect color support when starting. + +You can also use the command `pref show` to see and set your personal setting. + +Why use colors in the Proxmark client? When evertyhing is white it is hard to extract the important information fast. You also need new-lines for extra space to be easier to read. +We have gradually been introducing this color scheme into the client since we got decent color support on all systems: OSX, Linux, WSL, Proxspace. + + +## style/color +^[Top](#top) +The following definition has be crystalized out from these experiments. Its not set in stone yet so take this document as a guideline for how to create unified system scheme. + +### Definition +^[Top](#top) +- blue - system related headers, banner +- white - normal +- cyan - headers +- red - warning, error, catastrophic failures +- yellow - informative (to make things stick out from white blob) +- green - successful, (to make things stick out from white blob) +- magenta - device side messages + + +### Styled header +^[Top](#top) +``` + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(INFO, "--- " _CYAN_("Tag Information") " ---------------------------"); + PrintAndLogEx(INFO, "-------------------------------------------------------------"); +``` +For more examples, see also all **-h** helptext now in the LUA scripts. +For the command help texts using _YELLOW_ for the example makes it very easy to see what is the command vs the description. + +### non styled header +^[Top](#top) +Most commands doesn't use a header yet. We added it to make it standout (ie: yellow, green) of the informative tidbits in the output of a command. + + +## Proxspace +^[Top](#top) +Proxspace has support for colors. + From 675da483ad5a25184cd08f0f4a0fbde93c8cc96b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sat, 13 Jun 2020 18:07:03 +0200 Subject: [PATCH 440/527] link --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 9d69ba832..1a1a06699 100644 --- a/README.md +++ b/README.md @@ -33,7 +33,7 @@ |[Notes on external flash](/doc/ext_flash_notes.md)|[Notes on loclass](/doc/loclass_notes.md)|[Notes on Coverity Scan Config & Run](/doc/md/Development/Coverity-Scan-Config-%26-Run.md)| |[Notes on file formats used with Proxmark3](/doc/extensions_notes.md)|[Notes on MFU binary format](/doc/mfu_binary_format_notes.md)|[Notes on FPGA & ARM](/doc/fpga_arm_notes.md)| |[Developing standalone mode](/armsrc/Standalone/readme.md)|[Wiki about standalone mode](https://github.com/RfidResearchGroup/proxmark3/wiki/Standalone-mode)|| - +|[Notes on Color usage](/doc/colors_notes.md)|| ## Build for non-RDV4 Proxmark3 platforms From 88a42c610873e546adb3dc5aea7bdf6f7fb3117d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 14 Jun 2020 07:41:21 +0200 Subject: [PATCH 441/527] chg: ntag215/amiibo, empty header, use hardcoded values --- armsrc/iso14443a.c | 18 +++++++++++++++--- 1 file changed, 15 insertions(+), 3 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index a657dff35..fd146c23e 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -980,14 +980,26 @@ bool SimulateIso14443aInit(int tagType, int flags, uint8_t *data, tag_response_i // some first pages of UL/NTAG dump is special data mfu_dump_t *mfu_header = (mfu_dump_t *) BigBuf_get_EM_addr(); *pages = MAX(mfu_header->pages, 19); + // counters and tearing flags - for (int i = 0; i < 3; i++) { + // for old dumps with all zero headers, we need to set default values. + for (uint8_t i = 0; i < 3; i++) { + counters[i] = le24toh(mfu_header->counter_tearing[i]); - tearings[i] = mfu_header->counter_tearing[i][3]; + + if (mfu_header->counter_tearing[i][3] != 0x00) { + tearings[i] = mfu_header->counter_tearing[i][3]; + } } + // GET_VERSION - memcpy(rVERSION, mfu_header->version, 8); + if (memcmp(mfu_header->version, "\x00\x00\x00\x00\x00\x00\x00\x00", 8) == 0) { + memcpy(rVERSION, "\x00\x04\x04\x02\x01\x00\x11\x03", 8); + } else { + memcpy(rVERSION, mfu_header->version, 8); + } AddCrc14A(rVERSION, sizeof(rVERSION) - 2); + // READ_SIG memcpy(rSIGN, mfu_header->signature, 32); AddCrc14A(rSIGN, sizeof(rSIGN) - 2); From aeb8e5beb7466e06298202441a5a4213ccfac57a Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 14 Jun 2020 08:16:19 +0200 Subject: [PATCH 442/527] chg, "hf mf eload" - uses same dump printer --- client/src/cmdhfmf.c | 14 +------------- client/src/cmdhfmfu.c | 38 +++++++++++++++++++++----------------- 2 files changed, 22 insertions(+), 30 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 1050992f0..005e9eee0 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3560,19 +3560,7 @@ int CmdHF14AMfELoad(const char *Cmd) { } mfu_dump_t *mfu_dump = (mfu_dump_t *)data; - - PrintAndLogEx(INFO, _CYAN_("MFU dump file information")); - PrintAndLogEx(INFO, " version %s", sprint_hex(mfu_dump->version, sizeof(mfu_dump->version))); - PrintAndLogEx(INFO, " tb 0 %s", sprint_hex(mfu_dump->tbo, sizeof(mfu_dump->tbo))); - PrintAndLogEx(INFO, " tb 1 %s", sprint_hex(mfu_dump->tbo1, sizeof(mfu_dump->tbo1))); - for (uint8_t m = 0; m < 3; m++) { - PrintAndLogEx(INFO, " counter %d %s - tearing 0x%02x", m + 1, sprint_hex(mfu_dump->counter_tearing[m], 3), mfu_dump->counter_tearing[m][3]); - } - PrintAndLogEx(INFO, " signature %s", sprint_hex(mfu_dump->signature, sizeof(mfu_dump->signature))); - PrintAndLogEx(INFO, " data %s... (only first 8 bytes showing)", sprint_hex(mfu_dump->data, 8)); - PrintAndLogEx(INFO, " max data page %d, data len %d bytes", mfu_dump->pages, (mfu_dump->pages + 1) * 4); - PrintAndLogEx(INFO, " file header size %d", MFU_DUMP_PREFIX_LENGTH); - PrintAndLogEx(INFO, "----------------------------------------------"); + printMFUdumpEx(mfu_dump, mfu_dump->pages, 0); // update expected blocks to match converted data. if (numBlocks != datalen / 4) { diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index 2a361cbb7..ebfc6a72b 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -1699,21 +1699,25 @@ void printMFUdump(mfu_dump_t *card) { } void printMFUdumpEx(mfu_dump_t *card, uint16_t pages, uint8_t startpage) { - PrintAndLogEx(NORMAL, "\n*special* data\n"); - PrintAndLogEx(NORMAL, "\nDataType | Data | Ascii"); - PrintAndLogEx(NORMAL, "----------+-------------------------+---------"); - PrintAndLogEx(NORMAL, "Version | %s| %s", sprint_hex(card->version, sizeof(card->version)), sprint_ascii(card->version, sizeof(card->version))); - PrintAndLogEx(NORMAL, "TBD | %-24s| %s", sprint_hex(card->tbo, sizeof(card->tbo)), sprint_ascii(card->tbo, sizeof(card->tbo))); - PrintAndLogEx(NORMAL, "TBD | %-24s| %s", sprint_hex(card->tbo1, sizeof(card->tbo1)), sprint_ascii(card->tbo1, sizeof(card->tbo1))); - PrintAndLogEx(NORMAL, "Signature1| %s| %s", sprint_hex(card->signature, 16), sprint_ascii(card->signature, 16)); - PrintAndLogEx(NORMAL, "Signature2| %s| %s", sprint_hex(card->signature + 16, 16), sprint_ascii(card->signature + 16, 16)); + + PrintAndLogEx(INFO, _CYAN_("MFU dump file information")); + PrintAndLogEx(INFO, "-------------------------------------------------------------"); + PrintAndLogEx(INFO, " Version | " _YELLOW_("%s"), sprint_hex(card->version, sizeof(card->version))); + PrintAndLogEx(INFO, " TBD 0 | %s", sprint_hex(card->tbo, sizeof(card->tbo))); + PrintAndLogEx(INFO, " TBD 1 | %s", sprint_hex(card->tbo1, sizeof(card->tbo1))); + PrintAndLogEx(INFO, " Signature | %s", sprint_hex(card->signature, sizeof(card->signature))); for (uint8_t i = 0; i < 3; i ++) { - PrintAndLogEx(NORMAL, "Counter%d | %-24s| %s", i, sprint_hex(card->counter_tearing[i], 3), sprint_ascii(card->counter_tearing[i], 3)); - PrintAndLogEx(NORMAL, "Tearing%d | %-24s| %s", i, sprint_hex(card->counter_tearing[i] + 3, 1), sprint_ascii(card->counter_tearing[i] + 3, 1)); + PrintAndLogEx(INFO, " Counter %d | %s", i, sprint_hex(card->counter_tearing[i], 3)); + + + PrintAndLogEx(INFO, " Tearing %d | %s", i, sprint_hex(card->counter_tearing[i] + 3, 1)); } - PrintAndLogEx(NORMAL, "-------------------------------------------------------------"); - PrintAndLogEx(NORMAL, "\nBlock# | Data |lck| Ascii"); - PrintAndLogEx(NORMAL, "---------+-------------+---+------"); + + PrintAndLogEx(INFO, "Max data page | " _YELLOW_("%d") " (" _YELLOW_("%d") " bytes)", card->pages, (card->pages + 1) * 4); + PrintAndLogEx(INFO, " Header size | %d", MFU_DUMP_PREFIX_LENGTH); + PrintAndLogEx(INFO, "-------------------------------------------------------------"); + PrintAndLogEx(INFO, "block# | data |lck| ascii"); + PrintAndLogEx(INFO, "---------+-------------+---+------"); uint8_t j = 0; bool lckbit = false; @@ -1739,12 +1743,12 @@ void printMFUdumpEx(mfu_dump_t *card, uint16_t pages, uint8_t startpage) { for (j = 0; j < 16; j++) { bit_dyn[j] = lockbytes_dyn[j / 8] & (1 << (7 - j % 8)); } - PrintAndLogEx(NORMAL, "DYNAMIC LOCK: %s\n", sprint_hex(lockbytes_dyn, 3)); + PrintAndLogEx(INFO, "DYNAMIC LOCK: %s", sprint_hex(lockbytes_dyn, 3)); } for (uint8_t i = 0; i < pages; ++i) { if (i < 3) { - PrintAndLogEx(NORMAL, "%3d/0x%02X | %s| | %s", i + startpage, i + startpage, sprint_hex(data + i * 4, 4), sprint_ascii(data + i * 4, 4)); + PrintAndLogEx(INFO, "%3d/0x%02X | %s| | %s", i + startpage, i + startpage, sprint_hex(data + i * 4, 4), sprint_ascii(data + i * 4, 4)); continue; } switch (i) { @@ -1838,9 +1842,9 @@ void printMFUdumpEx(mfu_dump_t *card, uint16_t pages, uint8_t startpage) { default: break; } - PrintAndLogEx(NORMAL, "%3d/0x%02X | %s| %d | %s", i + startpage, i + startpage, sprint_hex(data + i * 4, 4), lckbit, sprint_ascii(data + i * 4, 4)); + PrintAndLogEx(INFO, "%3d/0x%02X | %s| %s | %s", i + startpage, i + startpage, sprint_hex(data + i * 4, 4), (lckbit) ? _RED_("1") : "0", sprint_ascii(data + i * 4, 4)); } - PrintAndLogEx(NORMAL, "---------------------------------"); + PrintAndLogEx(INFO, "---------------------------------"); } // From fef8ef6aa47982eba4a519e3aed235731cce7b8f Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 14 Jun 2020 08:17:10 +0200 Subject: [PATCH 443/527] chg: fileutils tries to add pack when converting old -> new dump format --- client/src/fileutils.c | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/client/src/fileutils.c b/client/src/fileutils.c index 3e2f252cb..ceeca97e5 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1369,6 +1369,17 @@ static int convert_plain_mfu_dump(uint8_t **dump, size_t *dumplen, bool verbose) } static int convert_old_mfu_dump(uint8_t **dump, size_t *dumplen, bool verbose) { +/* For reference +typedef struct { + uint8_t version[8]; + uint8_t tbo[2]; + uint8_t tearing[3]; + uint8_t pack[2]; + uint8_t tbo1[1]; + uint8_t signature[32]; + uint8_t data[1024]; +} PACKED old_mfu_dump_t; +*/ // convert old format old_mfu_dump_t *old_mfu_dump = (old_mfu_dump_t *)*dump; @@ -1392,8 +1403,10 @@ static int convert_old_mfu_dump(uint8_t **dump, size_t *dumplen, bool verbose) { } memcpy(mfu_dump->data, old_mfu_dump->data, sizeof(mfu_dump->data)); - mfu_dump->pages = old_data_len / 4 - 1; + + // Add PACK to last block of memory. + memcpy(mfu_dump->data + (mfu_dump->pages * 4 + MFU_DUMP_PREFIX_LENGTH), old_mfu_dump->pack, 2); if (verbose) { PrintAndLogEx(SUCCESS, "old mfu dump format was converted to " _GREEN_("%d") " blocks", mfu_dump->pages + 1); From 4f50591784f2fb964feec6412956fdb4e8dfd5d5 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 14 Jun 2020 10:47:40 +0200 Subject: [PATCH 444/527] chg; pages is not offset --- client/src/cmdhfmf.c | 2 +- client/src/cmdhfmfu.c | 8 +------- 2 files changed, 2 insertions(+), 8 deletions(-) diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 005e9eee0..21086b70a 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -3560,7 +3560,7 @@ int CmdHF14AMfELoad(const char *Cmd) { } mfu_dump_t *mfu_dump = (mfu_dump_t *)data; - printMFUdumpEx(mfu_dump, mfu_dump->pages, 0); + printMFUdumpEx(mfu_dump, mfu_dump->pages + 1, 0); // update expected blocks to match converted data. if (numBlocks != datalen / 4) { diff --git a/client/src/cmdhfmfu.c b/client/src/cmdhfmfu.c index ebfc6a72b..a93caf510 100644 --- a/client/src/cmdhfmfu.c +++ b/client/src/cmdhfmfu.c @@ -1694,10 +1694,6 @@ static int CmdHF14AMfURdBl(const char *Cmd) { return 0; } -void printMFUdump(mfu_dump_t *card) { - printMFUdumpEx(card, 255, 0); -} - void printMFUdumpEx(mfu_dump_t *card, uint16_t pages, uint8_t startpage) { PrintAndLogEx(INFO, _CYAN_("MFU dump file information")); @@ -1708,12 +1704,10 @@ void printMFUdumpEx(mfu_dump_t *card, uint16_t pages, uint8_t startpage) { PrintAndLogEx(INFO, " Signature | %s", sprint_hex(card->signature, sizeof(card->signature))); for (uint8_t i = 0; i < 3; i ++) { PrintAndLogEx(INFO, " Counter %d | %s", i, sprint_hex(card->counter_tearing[i], 3)); - - PrintAndLogEx(INFO, " Tearing %d | %s", i, sprint_hex(card->counter_tearing[i] + 3, 1)); } - PrintAndLogEx(INFO, "Max data page | " _YELLOW_("%d") " (" _YELLOW_("%d") " bytes)", card->pages, (card->pages + 1) * 4); + PrintAndLogEx(INFO, "Max data page | " _YELLOW_("%d") " (" _YELLOW_("%d") " bytes)", card->pages - 1, card->pages * 4); PrintAndLogEx(INFO, " Header size | %d", MFU_DUMP_PREFIX_LENGTH); PrintAndLogEx(INFO, "-------------------------------------------------------------"); PrintAndLogEx(INFO, "block# | data |lck| ascii"); From 4c2483cd3f63b4e525a706d7d85007c888f4a7d3 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 14 Jun 2020 11:05:43 +0200 Subject: [PATCH 445/527] helptext --- client/src/cmdtrace.c | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/client/src/cmdtrace.c b/client/src/cmdtrace.c index 04b71d677..5b397805f 100644 --- a/client/src/cmdtrace.c +++ b/client/src/cmdtrace.c @@ -53,22 +53,23 @@ static int usage_trace_list(void) { PrintAndLogEx(NORMAL, " lto - interpret data as LTO-CM communications"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " trace list 14a f"); - PrintAndLogEx(NORMAL, " trace list iclass"); + PrintAndLogEx(NORMAL, _YELLOW_(" trace list 14a f")); + PrintAndLogEx(NORMAL, _YELLOW_(" trace list iclass")); + PrintAndLogEx(NORMAL, _YELLOW_(" trace list 14a 1")); return PM3_SUCCESS; } static int usage_trace_load(void) { - PrintAndLogEx(NORMAL, "Load protocol data from file to trace buffer."); + PrintAndLogEx(NORMAL, "Load protocol data from binary file to trace buffer"); PrintAndLogEx(NORMAL, "Usage: trace load <filename>"); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " trace load mytracefile.bin"); + PrintAndLogEx(NORMAL, _YELLOW_(" trace load mytracefile.trace")); return PM3_SUCCESS; } static int usage_trace_save(void) { - PrintAndLogEx(NORMAL, "Save protocol data from trace buffer to file."); + PrintAndLogEx(NORMAL, "Save protocol data from trace buffer to binary file"); PrintAndLogEx(NORMAL, "Usage: trace save <filename>"); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " trace save mytracefile.bin"); + PrintAndLogEx(NORMAL, _YELLOW_(" trace save mytracefile.trace")); return PM3_SUCCESS; } From 62ce1cdf13b5568d6ef3debeab550cacba2663e8 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 14 Jun 2020 12:16:27 +0200 Subject: [PATCH 446/527] chg: increase stack size - hf mfu simlation needs it --- armsrc/appmain.c | 3 ++- common_arm/ldscript.common | 2 +- 2 files changed, 3 insertions(+), 2 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index afa822c7f..80eb673f2 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -361,9 +361,10 @@ static void SendStatus(void) { #endif printConnSpeed(); DbpString(_CYAN_("Various")); + // pointer arithmetic is times 4. (two shifts to the left) for (uint32_t *p = &_stack_start; ; ++p) { if (*p != 0xdeadbeef) { - Dbprintf(" Max stack usage so far..%d", (&_stack_end - p)*4); + Dbprintf(" Max stack usage.........%d / %d bytes", (&_stack_end - p) << 2, (&_stack_end - &_stack_start) << 2); break; } } diff --git a/common_arm/ldscript.common b/common_arm/ldscript.common index 9e53d8436..c1fb5e848 100644 --- a/common_arm/ldscript.common +++ b/common_arm/ldscript.common @@ -9,7 +9,7 @@ ms of the GNU GPL, version 2 or, ----------------------------------------------------------------------------- */ -stacksize = DEFINED(stacksize) ? stacksize : 5K; +stacksize = DEFINED(stacksize) ? stacksize : 6K; commonareasize = 0x20; /* AT91SAM7S256 has 256k Flash and 64k RAM */ From 4d292d3ca0c09a05b1f3e92e7bc90290225f340d Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Sun, 14 Jun 2020 14:51:48 +0200 Subject: [PATCH 447/527] fixed: first bit of em4x50 word was skipped in case of a "0" -> first transition in raw Manchester decoding is now taken into account --- common/lfdemod.c | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/common/lfdemod.c b/common/lfdemod.c index ee6d6afe0..89910488d 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -1537,6 +1537,11 @@ static uint16_t cleanAskRawDemod(uint8_t *bits, size_t *size, int clk, int inver getNextHigh(bits, *size, high, &pos); // getNextLow(bits, *size, low, &pos); + // do not skip first transition + if ((pos > cl_2 - cl_4 - 1) && (pos <= clk + cl_4 + 1)) { + bits[bitCnt++] = invert ^ 1; + } + // sample counts, like clock = 32.. it tries to find 32/4 = 8, 32/2 = 16 for (size_t i = pos; i < *size; i++) { if (bits[i] >= high && waveHigh) { From 7335d16cdb98301dd0e4807afe43ab7eea5d4fb2 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 15 Jun 2020 13:48:10 +0200 Subject: [PATCH 448/527] Makefile-vs-CMake.md --- doc/md/Development/Makefile-vs-CMake.md | 87 +++++++++++++++++++++++++ 1 file changed, 87 insertions(+) create mode 100644 doc/md/Development/Makefile-vs-CMake.md diff --git a/doc/md/Development/Makefile-vs-CMake.md b/doc/md/Development/Makefile-vs-CMake.md new file mode 100644 index 000000000..ecf5288ec --- /dev/null +++ b/doc/md/Development/Makefile-vs-CMake.md @@ -0,0 +1,87 @@ +# Makefile vs CMake + +## Client + +The client can be compiled both with the historical Makefile and with a newer CMakeLists.txt. +At the moment both are maintained because they don't perfectly overlap yet. + +* *in_common*: src in /common +* *in_deps*: src in /client/deps +* *opt*: optional dependency +* *pc*: use pkg-config +* *sys*: system library + +| Feature | Makefile | CMake | Remarks | +|-----|---|---|---| +| verbose | V=1 | VERBOSE=1 | | +| warnings management | yes (1) | **no** | (1) cf Makefile.defs | +| compilation | in place | in build dir (1) | | +| user `CFLAGS`/`LDFLAGS` | honored (1) | **no/auto?** | (1) also `LDLIBS` and `INCLUDES_CLIENT` as envvars for more tuning | +| `PKG_CONFIG_ENV` | yes | **no/auto?** | | +| Mingw gnu printf | `_ISOC99_SOURCE` | `_ISOC99_SOURCE` | | +| C++ | c++11 | gnu++14 | | +| dep amiibo | in_deps | in_deps | | +| dep atomic | sys, for RPiZ | sys, for RPiZ | `-Wl,--as-needed -latomic -Wl,--no-as-needed` unless OSX | +| atomic detection | **none** | **none** | | +| dep bluez | opt, sys | opt, sys | | +| bluez detection | pc | pkg_search_module | | +| `SKIPBT` | yes | yes | | +| dep bzip2 | sys | sys | | +| bzip2 detection | **none** | **none**, Android:gitclone | | +| dep cliparser | in_deps | in_deps | | +| dep hardnested | in_deps | in_deps | | +| arch autodetection | (1) | (2) | (1) uname -m == 86|amd64; gcc -E -mavx512f? +-AVX512 (2) CMAKE_SYSTEM_PROCESSOR == x86|x86_64|i686|AMD64 (always incl. AVX512) | +| `cpu_arch` | yes | **no/auto?** | e.g. cpu_arch=generic for cross-compilation +| dep jansson | sys / in_deps | **in_deps only** | | +| jansson detection | pc | **none** | | +| `SKIPJANSSONSYSTEM` | yes | **no** | | +| dep lua | sys / in_deps(1) | **in_deps only**(2) | (1) manual def of `LUAPLATFORM` for mingw/macosx/linux (2) manual, different?, for Android too | +| lua detection | pc | **none** | | +| `SKIPLUASYSTEM` | yes | **no** | | +| lualibs/pm3_cmd.lua | yes | **add_custom_command used?** | +| lualibs/mfc_default_keys.lua | yes | **add_custom_command used?** | +| dep lz4 | | | (common) not yet used, future | +| dep libm | sys | sys | | +| libm detection | none | **none/auto?** | | +| dep mbedtls | in_common | in_common | no sys lib: missing support for CMAC in def conf (btw no .pc available) | +| dep python3 | opt, sys, <3.8 & 3.8 | opt, sys, <3.8 & 3.8 | | +| python3 detection | pc | pkg_search_module | | +| `SKIPPYTHON` | yes | yes | | +| dep pthread | sys | sys | | +| pthread detection | **none** | **none** | | +| `SKIPPTHREAD` | yes | yes | e.g. for termux | +| dep Qt | opt, sys, Qt5 & Qt4 | opt, sys, Qt5 | | +| Qt detection | pc(qt5)/pc(qt4)/`QTDIR`(1) (2) | find_package(qt5) (3) | (1) if `QTDIR`: hardcode path (2) OSX: pkg-config hook for Brew (3) OSX: add search path| +| `SKIPQT` | yes | yes | | +| dep readline | sys | sys | | +| readline detection | **none** (1) | find*(2), Android:getzip | (1) OSX: hardcoded path (2) additional paths for OSX | +| `SKIPREADLINE` | yes | yes | CLI not fully functional without Readline | +| dep reveng | in_deps | in_deps | | +| `SKIPREVENGTEST` | yes(1) | **no**(2) | (1) e.g. if cross-compilation (2) tests aren't compiled/ran with cmake | +| dep tinycbor | in_deps | in_deps | | +| dep whereami | sys / in_deps | **in_deps only** | | +| whereami detection | **search /usr/include/whereami.h** | **none** | no .pc available | +| `SKIPWHEREAMISYSTEM` | yes | **no** | | +| version | mkversion | mkversion | | +| install | yes (1) | **no** | (1) supports `DESTDIR`, `PREFIX`, `UDEV_PREFIX`. Installs resources as well, `INSTALL*RELPATH` | +| deb | no | partial? | | +| tarbin | yes, unused? | no | | +| Android cross- | **no** | yes | | +| SWIG Lua+Python embedded | **no** | *ongoing* | cf libpm3_experiments branch | +| libpm3 with SWIG Lua+Python| **no** | *ongoing* | cf libpm3_experiments branch | + +## Tools + +`makefile` only at the moment + +`SKIPGPU` + +## ARM + +`makefile` only at the moment + +`PLATFORM`, `PLATFORM_EXTRAS`, `DESTDIR`, `PREFIX`, `FWTAG` + +## Global + +`makefile` only at the moment From d75073590fbcc69d5afad71da3aedcae790356cc Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 15 Jun 2020 14:26:43 +0200 Subject: [PATCH 449/527] doc: minor --- doc/md/Development/Makefile-vs-CMake.md | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/doc/md/Development/Makefile-vs-CMake.md b/doc/md/Development/Makefile-vs-CMake.md index ecf5288ec..6c2432c70 100644 --- a/doc/md/Development/Makefile-vs-CMake.md +++ b/doc/md/Development/Makefile-vs-CMake.md @@ -15,10 +15,10 @@ At the moment both are maintained because they don't perfectly overlap yet. |-----|---|---|---| | verbose | V=1 | VERBOSE=1 | | | warnings management | yes (1) | **no** | (1) cf Makefile.defs | -| compilation | in place | in build dir (1) | | +| compilation | in place | in build dir | | | user `CFLAGS`/`LDFLAGS` | honored (1) | **no/auto?** | (1) also `LDLIBS` and `INCLUDES_CLIENT` as envvars for more tuning | | `PKG_CONFIG_ENV` | yes | **no/auto?** | | -| Mingw gnu printf | `_ISOC99_SOURCE` | `_ISOC99_SOURCE` | | +| Mingw gnu printf | `_ISOC99_SOURCE` | `_ISOC99_SOURCE` | and in cbor.h: `__attribute__((format (__MINGW_PRINTF_FORMAT, 2, 3)))`| | C++ | c++11 | gnu++14 | | | dep amiibo | in_deps | in_deps | | | dep atomic | sys, for RPiZ | sys, for RPiZ | `-Wl,--as-needed -latomic -Wl,--no-as-needed` unless OSX | @@ -30,8 +30,8 @@ At the moment both are maintained because they don't perfectly overlap yet. | bzip2 detection | **none** | **none**, Android:gitclone | | | dep cliparser | in_deps | in_deps | | | dep hardnested | in_deps | in_deps | | -| arch autodetection | (1) | (2) | (1) uname -m == 86|amd64; gcc -E -mavx512f? +-AVX512 (2) CMAKE_SYSTEM_PROCESSOR == x86|x86_64|i686|AMD64 (always incl. AVX512) | -| `cpu_arch` | yes | **no/auto?** | e.g. cpu_arch=generic for cross-compilation +| hardn arch autodetect | (1) | (2) | (1) uname -m == 86 or amd64; gcc -E -mavx512f? +-AVX512 (2) CMAKE_SYSTEM_PROCESSOR == x86 or x86_64 or i686 or AMD64 (always incl. AVX512) | +| `cpu_arch` | yes | **no/auto?** | e.g. `cpu_arch=generic` for cross-compilation | dep jansson | sys / in_deps | **in_deps only** | | | jansson detection | pc | **none** | | | `SKIPJANSSONSYSTEM` | yes | **no** | | @@ -40,7 +40,7 @@ At the moment both are maintained because they don't perfectly overlap yet. | `SKIPLUASYSTEM` | yes | **no** | | | lualibs/pm3_cmd.lua | yes | **add_custom_command used?** | | lualibs/mfc_default_keys.lua | yes | **add_custom_command used?** | -| dep lz4 | | | (common) not yet used, future | +| dep lz4 | | | (in_common) not yet used, future | | dep libm | sys | sys | | | libm detection | none | **none/auto?** | | | dep mbedtls | in_common | in_common | no sys lib: missing support for CMAC in def conf (btw no .pc available) | From b99f7213e857ff70c1c1f50ad39485bdef2476c1 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Mon, 15 Jun 2020 14:30:18 +0200 Subject: [PATCH 450/527] added EM4x50 info function --- include/pm3_cmd.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index 3cafb9df1..e2087d0f4 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -187,6 +187,7 @@ typedef struct { // lf bool compiled_with_lf : 1; bool compiled_with_hitag : 1; + bool compiled_with_em4x50 : 1; // hf bool compiled_with_hfsniff : 1; bool compiled_with_hfplot : 1; @@ -401,6 +402,7 @@ typedef struct { #define CMD_LF_EM4X_WRITEWORD 0x0219 #define CMD_LF_IO_DEMOD 0x021A #define CMD_LF_EM410X_DEMOD 0x021C +#define CMD_LF_EM4X50_INFO 0x0240 // Sampling configuration for LF reader/sniffer #define CMD_LF_SAMPLING_SET_CONFIG 0x021D #define CMD_LF_FSK_SIMULATE 0x021E From 1adc0de21d3e01a81ada1b78bae76a2d82ee694c Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Mon, 15 Jun 2020 14:30:50 +0200 Subject: [PATCH 451/527] added EM4x50 info function --- include/em4x50.h | 37 +++++++++++++++++++++++++++++++++++++ 1 file changed, 37 insertions(+) create mode 100644 include/em4x50.h diff --git a/include/em4x50.h b/include/em4x50.h new file mode 100644 index 000000000..11b2509b7 --- /dev/null +++ b/include/em4x50.h @@ -0,0 +1,37 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2020 tharexde +// +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// Low frequency EM4x50 structs +//----------------------------------------------------------------------------- + +#ifndef EM4X50_H__ +#define EM4X50_H__ + +typedef struct { + bool fwr_given; + bool lwr_given; + bool pwd_given; + bool newpwd_given; + uint8_t password[4]; + uint8_t new_password[4]; + uint8_t addresses[4]; + uint8_t address; + uint8_t word[4]; +} em4x50_data_t; + +typedef struct { + uint8_t byte[4]; + uint8_t row_parity[4]; + uint8_t col_parity; + uint8_t stopbit; + bool rparity[4]; + bool cparity[8]; + bool stopparity; + bool parity; +} em4x50_word_t; + +#endif /* EM4X50_H__ */ From 6cd927d6d487934070b3af681c9a8e0f83a1c08c Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Mon, 15 Jun 2020 14:31:15 +0200 Subject: [PATCH 452/527] added EM4x50 info function --- common_arm/Makefile.hal | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/common_arm/Makefile.hal b/common_arm/Makefile.hal index 455672e5f..0ae8b2d19 100644 --- a/common_arm/Makefile.hal +++ b/common_arm/Makefile.hal @@ -81,7 +81,8 @@ endif # common LF support PLATFORM_DEFS += \ -DWITH_LF \ - -DWITH_HITAG + -DWITH_HITAG \ + -DWITH_EM4x50 # common HF support PLATFORM_DEFS += \ From dfe6941a8d02b0d00de0316c80d99820117680a0 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Mon, 15 Jun 2020 14:31:27 +0200 Subject: [PATCH 453/527] added EM4x50 info function --- client/src/cmdlfem4x.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/client/src/cmdlfem4x.c b/client/src/cmdlfem4x.c index ebb3fe2e4..a43e624a4 100644 --- a/client/src/cmdlfem4x.c +++ b/client/src/cmdlfem4x.c @@ -9,6 +9,7 @@ //----------------------------------------------------------------------------- #include "cmdlfem4x.h" +#include "cmdlfem4x50.h" #include <stdio.h> #include <string.h> @@ -1765,6 +1766,7 @@ static command_t CommandTable[] = { {"4x50_dump", CmdEM4x50Dump, IfPm3Lf, "dump EM4x50 tag"}, {"4x50_read", CmdEM4x50Read, IfPm3Lf, "read word data from EM4x50"}, {"4x50_write", CmdEM4x50Write, IfPm3Lf, "write word data to EM4x50"}, + {"4x50_info", CmdEM4x50Info, IfPm3Lf, "read complete data from EM4x50"}, {NULL, NULL, NULL, NULL} }; From 79b20a35c1b30a454fa8374411fb9c11d099423f Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Mon, 15 Jun 2020 14:31:34 +0200 Subject: [PATCH 454/527] added EM4x50 info function --- client/src/cmdlfem4x50.c | 441 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 441 insertions(+) create mode 100644 client/src/cmdlfem4x50.c diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c new file mode 100644 index 000000000..74432c36c --- /dev/null +++ b/client/src/cmdlfem4x50.c @@ -0,0 +1,441 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2020 tharexde +// +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// Low frequency EM4x50 commands +//----------------------------------------------------------------------------- + +#include "cmdlfem4x50.h" +#include <ctype.h> +#include "fileutils.h" +#include "comms.h" +#include "em4x50.h" + +#define EM4x50_FCT_STDREAD 0 +#define EM4x50_FCT_LOGIN 1 +#define EM4x50_FCT_WRITE 2 + +int usage_lf_em4x50_info(void) { + PrintAndLogEx(NORMAL, "Read all information of EM4x50. Tag nust be on antenna."); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(NORMAL, "Usage: lf em 4x50_info [h] [v] [p <pwd>]"); + PrintAndLogEx(NORMAL, "Options:"); + PrintAndLogEx(NORMAL, " h - this help"); + PrintAndLogEx(NORMAL, " v - verbose output"); + PrintAndLogEx(NORMAL, " p <pwd> - password (hex) (optional)"); + PrintAndLogEx(NORMAL, "Examples:"); + PrintAndLogEx(NORMAL, " lf em 4x50_info"); + PrintAndLogEx(NORMAL, " lf em 4x50_info p fa225de1\n"); + PrintAndLogEx(NORMAL, " lf em 4x50_info v p fa225de1\n"); + return PM3_SUCCESS; +} + +static uint8_t msb2lsb(uint8_t byte) { + + // convert given byte (msb) into lsb format + + uint8_t tmp = 0; + + for (int i = 0; i < 8; i++) + tmp |= ((byte >> (7-i)) & 1) << i; + + return tmp; +} + +static bool check_bit_in_byte(uint8_t pos, uint8_t byte) { + + // return true if bit at position <pos> is "1" + + return (((byte >> pos) & 1) == 1) ? true : false; +} + +static void prepare_result(const uint8_t *byte, int fwr, int lwr, em4x50_word_t *words) { + + // restructure received result in "em4x50_word_t" structure and check all + // parities including stop bit; result of each check is stored in structure + + int p = 0, c[8] = {0, 0, 0, 0, 0, 0, 0, 0}; + + for (int i = fwr; i <= lwr; i++) { + + words[i].stopparity = true; + words[i].parity = true; + + for (int j = 0; j < 8; j++) + c[j] = 0; + + for (int j = 0; j < 4; j++) { + words[i].byte[j] = byte[i*7+j]; + words[i].row_parity[j] = (byte[i*7+4] >> (3-j)) & 1; + + // collect parities + p = 0; + + for (int k = 0; k < 8; k++) { + + // row parity + p ^= (words[i].byte[j] >> k) & 1; + + // column parity + c[k] ^= (words[i].byte[j] >> (7-k)) & 1; + } + + // check row parities + words[i].rparity[j] = (words[i].row_parity[j] == p) ? true : false; + + if (!words[i].rparity[j]) + words[i].parity = false; + } + + // check column parities + words[i].col_parity = byte[i*7+5] ; + + for (int j = 0; j < 8; j++) { + words[i].cparity[j] = (((words[i].col_parity >> (7-j)) & 1) == c[j]) ? true : false; + + if (!words[i].cparity[j]) + words[i].parity = false; + } + + // check stop bit + words[i].stopbit = byte[i*7+6] & 1; + + if (words[i].stopbit == 1) + words[i].stopparity = false; + + } +} + +static void print_bit_table(const em4x50_word_t word) { + + // generate output in table form for each word including parities, stop + // bit, result of parity checks and hex notation of each row in msb/lsb + // notation + // individual parity errors will be highlighted in red + + int bit = 0; + char string[400] = {0}; + char pstring[100] = {0}; + + // print binary data + for (int j = 0; j < 4; j++) { + + strcat(string, " "); + + // lsb notation + for (int k = 0; k < 8; k++) { + sprintf(pstring, "%i", (word.byte[j] >> (7-k)) & 1); + strcat(string, pstring); + } + + strcat(string, " | "); + + // binary row parities + hex bytes of word + sprintf(pstring, (word.rparity[j]) ? "%i" : _RED_("%i"), word.row_parity[j]); + strcat(string, pstring); + + if (j == 0) + sprintf(pstring, " msb: 0x%02x lsb: 0x%02x", word.byte[j], msb2lsb(word.byte[j])); + else + sprintf(pstring, " 0x%02x 0x%02x", word.byte[j], msb2lsb(word.byte[j])); + + strcat(string, pstring); + PrintAndLogEx(NORMAL,string); + + string[0] = '\0'; + } + + strcat(string, " ------------ --------------------\n "); + + // binary column parities + for (int k = 0; k < 8; k++) { + + bit = (word.col_parity >> (7-k)) & 1; + + // if column parity is false -> highlight bit in red + sprintf(pstring, (word.cparity[k]) ? "%i" : _RED_("%i"), bit); + strcat(string, pstring); + } + + // binary stop bit + strcat(string, " | "); + sprintf(pstring, (word.stopparity) ? "%i" : _RED_("%i"), word.stopbit); + strcat(pstring, " parities "); + strcat(string, pstring); + + // parities passed/failed + sprintf(pstring, (word.parity) ? _GREEN_("passed") : _RED_("failed")); + strcat(string, pstring); + + PrintAndLogEx(NORMAL,string); + + string[0] = '\0'; +} + +static void print_result(const em4x50_word_t *words, int fwr, int lwr) { + + // print available information for given word from fwr to lwr, i.e. + // bit table + summary lines with hex notation of word (msb + lsb) + + char string[400] = {0}; + char pstring[100] = {0}; + + for (int i = fwr; i <= lwr; i++) { + + // blank line before each bit table + PrintAndLogEx(NORMAL, ""); + + // print bit table + print_bit_table(words[i]); + + // final result + sprintf(pstring, "\n word[%i] msb: " _BLUE_("0x"), i); + strcat(string, pstring); + + for (int j = 0; j < 4; j++) { + sprintf(pstring, _BLUE_("%02x"), words[i].byte[j]); + strcat(string, pstring); + } + + sprintf(pstring, "\n word[%i] lsb: " _BLUE_("0x"), i); + strcat(string, pstring); + + for (int j = 0; j < 4; j++) { + sprintf(pstring, _BLUE_("%02x"), msb2lsb(words[i].byte[3-j])); + strcat(string, pstring); + } + + PrintAndLogEx(NORMAL,string); + + string[0] = '\0'; + } +} + +static void print_info_result(PacketResponseNG *resp, const em4x50_data_t *etd, bool bverbose) { + + // displays all information info result in structured format + + bool bpwd_given = etd->pwd_given; + bool bsuccess = (bool)resp->oldarg[0]; + bool blogin = (bool)resp->oldarg[1]; + bool bpwc, braw; + int fwr, lwr, fwrp, lwrp, fwwi, lwwi; + uint8_t *data = resp->data.asBytes; + em4x50_word_t words[34]; + char pstring[100] = {0}; + char string[200] = {0}; + + prepare_result(data, 0, 33, words); + + bpwc = check_bit_in_byte(7, words[2].byte[2]); // password check + braw = check_bit_in_byte(6, words[2].byte[2]); // read after write + fwr = msb2lsb(words[2].byte[0]); // first word read + lwr = msb2lsb(words[2].byte[1]); // last word read + fwrp = msb2lsb(words[1].byte[0]); // first word read protected + lwrp = msb2lsb(words[1].byte[1]); // last word read protected + fwwi = msb2lsb(words[1].byte[2]); // first word write inhibited + lwwi = msb2lsb(words[1].byte[3]); // last word write inhibited + + // data section + PrintAndLogEx(NORMAL, _YELLOW_("\n em4x50 data:")); + + if (bverbose) { + + // detailed data section + print_result(words, 0, 33); + + } else { + + // condensed data section + for (int i = 0; i <= 33; i++) { + + sprintf(pstring, " word[%2i]: ", i); + strcat(string, pstring); + + for (int j = 0; j < 4; j++) { + sprintf(pstring, "%02x", words[i].byte[j]); + strcat(string, pstring); + } + + switch(i) { + case 0: + sprintf(pstring, _BLUE_(" password, write only")); + break; + case 1: + sprintf(pstring, _BLUE_(" protection word, write inhibited")); + break; + case 2: + sprintf(pstring, _BLUE_(" control word, write inhibited")); + break; + case 32: + sprintf(pstring, _BLUE_(" device serial number, read only")); + break; + case 33: + sprintf(pstring, _BLUE_(" device identification, read only")); + break; + default: + sprintf(pstring, " user data"); + break; + } + + strcat(string, pstring); + PrintAndLogEx(NORMAL,"%s", string); + string[0] = '\0'; + } + } + + // configuration section + PrintAndLogEx(NORMAL, _YELLOW_("\n em4x50 configuration")); + PrintAndLogEx(NORMAL," control: | protection:"); + + sprintf(pstring, " first word read: %3i |", fwr); + strcat(string, pstring); + sprintf(pstring, " first word read protected: %3i", fwrp); + strcat(string, pstring); + PrintAndLogEx(NORMAL,"%s", string); + string[0] = '\0'; + + sprintf(pstring, " last word read: %3i |", lwr); + strcat(string, pstring); + sprintf(pstring, " last word read protected: %3i", lwrp); + strcat(string, pstring); + PrintAndLogEx(NORMAL,"%s", string); + string[0] = '\0'; + + sprintf(pstring, " password check: %3s |", (bpwc) ? "on" : "off"); + strcat(string, pstring); + sprintf(pstring, " first word write inhibited: %3i", fwwi); + strcat(string, pstring); + PrintAndLogEx(NORMAL,"%s", string); + string[0] = '\0'; + + sprintf(pstring, " read after write: %3s |", (braw) ? "on" : "off"); + strcat(string, pstring); + sprintf(pstring, " last word write inhibited: %3i", lwwi); + strcat(string, pstring); + PrintAndLogEx(NORMAL,"%s", string); + string[0] = '\0'; + + PrintAndLogEx(NORMAL, "\n Zero values may indicate read protection!"); + + // status line + sprintf(pstring, "\n reading "); + strcat(string, pstring); + + if (!bsuccess) { + + sprintf(pstring, _RED_("failed")); + strcat(string, pstring); + + } else { + + sprintf(pstring, _GREEN_("successful ")); + strcat(string, pstring); + + if (blogin) { + + if (bpwd_given) { + + sprintf(pstring, "(login with 0x%02x%02x%02x%02x)", + etd->password[0], etd->password[1], + etd->password[2], etd->password[3]); + strcat(string, pstring); + + } else { + + sprintf(pstring, "(login with default password)"); + strcat(string, pstring); + + } + + } else { + + if (bpwd_given) { + + sprintf(pstring, "(login failed)"); + strcat(string, pstring); + + } else { + + sprintf(pstring, "(no login)"); + strcat(string, pstring); + + } + } + + } + + PrintAndLogEx(NORMAL,"%s\n", string); +} + +int CmdEM4x50Info(const char *Cmd) { + + // envokes reading of a EM4x50 tag which has to be on the antenna because + // decoding is done by the device (not on client side) + + bool errors = false, verbose = false; + char password[20] = {0x00}, tmpbuff[3]; + uint8_t cmdp = 0; + em4x50_data_t etd; + PacketResponseNG resp; + + while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { + switch (tolower(param_getchar(Cmd, cmdp))) { + + case 'h': + return usage_lf_em4x50_info(); + + case 'p': + param_getstr(Cmd, cmdp + 1, password, sizeof(password)); + + // validation + if (strlen(password) != 8) { + + PrintAndLogEx(WARNING, "\n error, password has to be 4 bytes\n"); + errors = true; + break; + } + + // prepare given password + etd.pwd_given = true; + for (int i = 0; i < 4; i++) + sscanf(strncpy(tmpbuff, password+2*i, 2), "%2hhx", &etd.password[i]); + + cmdp += 2; + break; + + case 'v': + verbose = true; + cmdp += 1; + break; + + default: + PrintAndLogEx(WARNING, " Unknown parameter '%c'", param_getchar(Cmd, cmdp)); + errors = true; + break; + } + } + + // validation + if (errors) { + return usage_lf_em4x50_info(); + } + + // call info command + clearCommandBuffer(); + SendCommandMIX(CMD_LF_EM4X50_INFO, 0, 0, 0, &etd, sizeof(etd)); + + // get result + if (!WaitForResponse(CMD_ACK, &resp)) { + PrintAndLogEx(WARNING, " timeout while waiting for reply."); + return PM3_ESOFT; + } + + // prepare result + print_info_result(&resp, &etd, verbose); + + return ((bool)resp.oldarg[0]) ? PM3_SUCCESS : PM3_ESOFT; +} From 2b1bfc58f9f05dc77c7a070423b8d5297e9c019d Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Mon, 15 Jun 2020 14:31:43 +0200 Subject: [PATCH 455/527] added EM4x50 info function --- client/src/cmdlfem4x50.h | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 client/src/cmdlfem4x50.h diff --git a/client/src/cmdlfem4x50.h b/client/src/cmdlfem4x50.h new file mode 100644 index 000000000..3868e6113 --- /dev/null +++ b/client/src/cmdlfem4x50.h @@ -0,0 +1,18 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2020 tharexde +// +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// Low frequency EM4x50 commands +//----------------------------------------------------------------------------- + +#ifndef CMDLFEM4X50_H__ +#define CMDLFEM4X50_H__ + +int usage_lf_em4x50_info(void); + +int CmdEM4x50Info(const char *Cmd); + +#endif From e707ceb906aeae6ae8c3ebfcd532a54f41f14776 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Mon, 15 Jun 2020 14:32:11 +0200 Subject: [PATCH 456/527] added EM4x50 info function --- client/Makefile | 1 + 1 file changed, 1 insertion(+) diff --git a/client/Makefile b/client/Makefile index 3bd059318..a4e8b193d 100644 --- a/client/Makefile +++ b/client/Makefile @@ -439,6 +439,7 @@ SRCS = aidsearch.c \ cmdlfawid.c \ cmdlfcotag.c \ cmdlfem4x.c \ + cmdlfem4x50.c \ cmdlffdx.c \ cmdlfguard.c \ cmdlfgallagher.c \ From ffec9d5a1846e59f7ed86d9786b64f5c6c6e017a Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Mon, 15 Jun 2020 14:32:23 +0200 Subject: [PATCH 457/527] added EM4x50 info function --- armsrc/Makefile | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/armsrc/Makefile b/armsrc/Makefile index f4eb19963..1bbbf2ba7 100644 --- a/armsrc/Makefile +++ b/armsrc/Makefile @@ -63,6 +63,12 @@ else SRC_HITAG = endif +ifneq (,$(findstring WITH_EM4x50,$(APP_CFLAGS))) + SRC_EM4x50 = em4x50.c +else + SRC_EM4x50 = +endif + ifneq (,$(findstring WITH_LCD,$(APP_CFLAGS))) SRC_LCD = fonts.c LCD.c else @@ -99,6 +105,7 @@ THUMBSRC = start.c \ $(SRC_SMARTCARD) \ $(SRC_FPC) \ $(SRC_HITAG) \ + $(SRC_EM4x50) \ $(SRC_SPIFFS) \ $(SRC_ISO14443a) \ $(SRC_ISO14443b) \ From 1fe83eaf254ec39f8537d20f21742deb9eebf8e5 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Mon, 15 Jun 2020 14:32:34 +0200 Subject: [PATCH 458/527] added EM4x50 info function --- armsrc/appmain.c | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 80eb673f2..0d05222de 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -29,6 +29,7 @@ #include "felica.h" #include "hitag2.h" #include "hitagS.h" +#include "em4x50.h" #include "iclass.h" #include "legicrfsim.h" #include "epa.h" @@ -448,6 +449,11 @@ static void SendCapabilities(void) { #else capabilities.compiled_with_hitag = false; #endif +#ifdef WITH_EM4x50 + capabilities.compiled_with_em4x50 = true; +#else + capabilities.compiled_with_em4x50 = false; +#endif #ifdef WITH_HFSNIFF capabilities.compiled_with_hfsniff = true; #else @@ -983,6 +989,13 @@ static void PacketReceived(PacketCommandNG *packet) { } #endif +#ifdef WITH_EM4x50 + case CMD_LF_EM4X50_INFO: { + em4x50_info((em4x50_data_t *)packet->data.asBytes); + break; + } +#endif + #ifdef WITH_ISO15693 case CMD_HF_ISO15693_ACQ_RAW_ADC: { AcquireRawAdcSamplesIso15693(); From f5ff2c12ebf83e5ea31e74f2d30b25780e33b8fb Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Mon, 15 Jun 2020 14:32:44 +0200 Subject: [PATCH 459/527] added EM4x50 info function --- armsrc/em4x50.h | 22 ++++++++++++++++++++++ 1 file changed, 22 insertions(+) create mode 100644 armsrc/em4x50.h diff --git a/armsrc/em4x50.h b/armsrc/em4x50.h new file mode 100644 index 000000000..76e9b7525 --- /dev/null +++ b/armsrc/em4x50.h @@ -0,0 +1,22 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2020 tharexde +// +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// Low frequency EM4x50 commands +//----------------------------------------------------------------------------- + +#ifndef EM4X50_H +#define EM4X50_H + +#include "../include/em4x50.h" + +typedef struct { + uint8_t sectors[34][7]; +} em4x50_tag_t; + +void em4x50_info(em4x50_data_t *etd); + +#endif /* EM4X50_H */ From ef9ccde512b7dc6a0a82a2ed2038b28946bd8e03 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Mon, 15 Jun 2020 14:32:51 +0200 Subject: [PATCH 460/527] added EM4x50 info function --- armsrc/em4x50.c | 672 ++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 672 insertions(+) create mode 100644 armsrc/em4x50.c diff --git a/armsrc/em4x50.c b/armsrc/em4x50.c new file mode 100644 index 000000000..ba4a1b89d --- /dev/null +++ b/armsrc/em4x50.c @@ -0,0 +1,672 @@ +//----------------------------------------------------------------------------- +// Copyright (C) 2020 tharexde +// +// This code is licensed to you under the terms of the GNU GPL, version 2 or, +// at your option, any later version. See the LICENSE.txt file for the text of +// the license. +//----------------------------------------------------------------------------- +// Low frequency EM4x50 commands +//----------------------------------------------------------------------------- + +#include "fpgaloader.h" +#include "ticks.h" +#include "dbprint.h" +#include "lfadc.h" +#include "em4x50.h" + +// 4 data bytes +// + byte with row parities +// + column parity byte +// + byte with stop bit + +static em4x50_tag_t tag = { + .sectors = { + [0] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // password + [1] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // protection word + [2] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // control word + [3] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [4] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [5] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [6] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [7] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [8] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [9] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [10] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [11] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [12] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [13] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [14] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [15] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [16] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [17] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [18] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [19] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [20] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [21] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [22] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [23] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [24] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [25] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [26] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [27] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [28] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [29] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [30] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [31] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // user + [32] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // device serial number + [33] = { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 }, // device identification + }, +}; + +// Sam7s has several timers, we will use the source TIMER_CLOCK1 (aka AT91C_TC_CLKS_TIMER_DIV1_CLOCK) +// TIMER_CLOCK1 = MCK/2, MCK is running at 48 MHz, Timer is running at 48/2 = 24 MHz +// EM4x50 units (T0) have duration of 8 microseconds (us), which is 1/125000 per second (carrier) +// T0 = TIMER_CLOCK1 / 125000 = 192 + +#ifndef T0 +#define T0 192 +#endif + +#define EM4X50_T_TAG_QUARTER_PERIOD 16 +#define EM4X50_T_TAG_HALF_PERIOD 32 +#define EM4X50_T_TAG_THREE_QUARTER_PERIOD 48 +#define EM4X50_T_TAG_FULL_PERIOD 64 +#define EM4X50_T_WAITING_FOR_LIW 500 + +#define EM4X50_TAG_TOLERANCE 8 +#define EM4X50_TAG_WORD 45 + +#define EM4X50_BIT_0 0 +#define EM4X50_BIT_1 1 +#define EM4X50_BIT_OTHER 2 + +#define EM4X50_COMMAND_LOGIN 0x01 +#define EM4X50_COMMAND_WRITE 0x12 +#define EM4X50_COMMAND_SELECTIVE_READ 0x0A + +#define FPGA_TIMER_0 0 + +// auxiliary functions + +static void init_tag(void) { + + // initialize global tag structure + + for (int i = 0; i < 34; i++) + for (int j = 0; j < 7; j++) + tag.sectors[i][j] = 0x00; +} + +static uint8_t bits2byte(uint8_t bits[8], int length) { + + // converts <length> separate bits into a single "byte" + + uint8_t byte = 0; + + for (int i = 0; i < length; i++) { + + byte |= bits[i]; + + if (i != length-1) + byte <<= 1; + } + + return byte; +} + +static void save_word(int pos, uint8_t bits[EM4X50_TAG_WORD]) { + + // split "raw" word into data, row and column parity bits and stop bit and + // save them in global tag structure + + uint8_t row_parity[4]; + uint8_t col_parity[8]; + + // data and row parities + for (int i = 0; i < 4; i++) { + tag.sectors[pos][i] = bits2byte(&bits[9*i],8); + row_parity[i] = bits[9*i+8]; + } + + tag.sectors[pos][4] = bits2byte(row_parity,4); + + // column parities + for (int i = 0; i < 8; i++) + col_parity[i] = bits[36+i]; + + tag.sectors[pos][5] = bits2byte(col_parity,8); + + // stop bit + tag.sectors[pos][6] = bits[44]; +} + +static void wait_timer(int timer, uint32_t period) { + + // do nothing for <period> using timer <timer> + + if (timer == FPGA_TIMER_0) { + + AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG; + while (AT91C_BASE_TC0->TC_CV < period); + + } else { + + AT91C_BASE_TC1->TC_CCR = AT91C_TC_SWTRG; + while (AT91C_BASE_TC1->TC_CV < period); + + } +} + +static void em4x50_setup_read(void) { + + FpgaDownloadAndGo(FPGA_BITSTREAM_LF); + + FpgaWriteConfWord(FPGA_MAJOR_MODE_LF_ADC | FPGA_LF_ADC_READER_FIELD); + + // 50ms for the resonant antenna to settle. + SpinDelay(50); + // Now set up the SSC to get the ADC samples that are now streaming at us. + FpgaSetupSsc(); + // start a 1.5ticks is 1us + StartTicks(); + + FpgaSendCommand(FPGA_CMD_SET_DIVISOR, LF_DIVISOR_125); + + // Connect the A/D to the peak-detected low-frequency path. + SetAdcMuxFor(GPIO_MUXSEL_LOPKD); + + // Steal this pin from the SSP (SPI communication channel with fpga) and + // use it to control the modulation + AT91C_BASE_PIOA->PIO_PER = GPIO_SSC_DOUT; + AT91C_BASE_PIOA->PIO_OER = GPIO_SSC_DOUT; + + // Disable modulation at default, which means enable the field + LOW(GPIO_SSC_DOUT); + + // Enable Peripheral Clock for + // TIMER_CLOCK0, used to measure exact timing before answering + // TIMER_CLOCK1, used to capture edges of the tag frames + AT91C_BASE_PMC->PMC_PCER |= (1 << AT91C_ID_TC0) | (1 << AT91C_ID_TC1); + AT91C_BASE_PIOA->PIO_BSR = GPIO_SSC_FRAME; // wofür ist das? + + // Disable timer during configuration + AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKDIS; + AT91C_BASE_TC1->TC_CCR = AT91C_TC_CLKDIS; + + // TC0: Capture mode, default timer source = MCK/2 (TIMER_CLOCK1), no triggers + AT91C_BASE_TC0->TC_CMR = AT91C_TC_CLKS_TIMER_DIV1_CLOCK; + + // TC1: Capture mode, default timer source = MCK/2 (TIMER_CLOCK1), no triggers + AT91C_BASE_TC1->TC_CMR = AT91C_TC_CLKS_TIMER_DIV1_CLOCK; + + // Enable and reset counters + AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKEN | AT91C_TC_SWTRG; + AT91C_BASE_TC1->TC_CCR = AT91C_TC_CLKEN | AT91C_TC_SWTRG; + + // synchronized startup procedure + while (AT91C_BASE_TC0->TC_CV > 0) {}; // wait until TC1 returned to zero + + // Watchdog hit + WDT_HIT(); +} + +// functions for "reader" use case + +static int get_next_bit(void) { + + // returns bit value (or EM4X50_BIT_OTHER -> no bit pattern) by evaluating + // a single sample within a bit period (given there is no LIW, ACK or NAK) + // This function is not used for decoding, it is only used for identifying + // a listen window (return value = EM4X50_BIT_OTHER) in functions + // "find_double_listen_window" and "check_ack" + + int dhigh = 230; // 90% of maximum sample value (255) + int dlow = 25; // 10% of maximum sample value (255) + uint8_t sample; + + // get sample at 3/4 of bit period + wait_timer(0, T0 * EM4X50_T_TAG_THREE_QUARTER_PERIOD); + sample = (uint8_t)AT91C_BASE_SSC->SSC_RHR; + + // wait until end of bit period + wait_timer(0, T0 * EM4X50_T_TAG_QUARTER_PERIOD); + + // decide wether "0" or "1" + if (sample > dhigh) + return EM4X50_BIT_0; + else if (sample < dlow) + return EM4X50_BIT_1; + + return EM4X50_BIT_OTHER; +} + +static uint32_t get_pulse_length(void) { + + // + + uint8_t sample = 0, high = 192, low = 64; + + sample = (uint8_t)AT91C_BASE_SSC->SSC_RHR; + + while (sample > low) + sample = (uint8_t)AT91C_BASE_SSC->SSC_RHR; + + AT91C_BASE_TC1->TC_CCR = AT91C_TC_SWTRG; + + while (sample < high) + sample = (uint8_t)AT91C_BASE_SSC->SSC_RHR; + + while (sample > low) + sample = (uint8_t)AT91C_BASE_SSC->SSC_RHR; + + return (uint32_t)AT91C_BASE_TC1->TC_CV; +} + +static bool check_pulse_length(uint32_t pl, int length) { + + // check if pulse length <pl> corresponds to given length <length> + + if ((pl >= T0 * (length - EM4X50_TAG_TOLERANCE)) & + (pl <= T0 * (length + EM4X50_TAG_TOLERANCE))) + return true; + else + return false; +} + +static void em4x50_send_bit(int bit) { + + // send single bit according to EM4x50 application note and datasheet + + // reset clock for the next bit + AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG; + + if (bit == 0) { + + // disable modulation (drop the field) for 7 cycles of carrier + // period (Opt64) + LOW(GPIO_SSC_DOUT); + while (AT91C_BASE_TC0->TC_CV < T0 * 7); + + // enable modulation (activates the field) for remaining first + // half of bit period + HIGH(GPIO_SSC_DOUT); + while (AT91C_BASE_TC0->TC_CV < T0 * EM4X50_T_TAG_HALF_PERIOD); + + // disable modulation for second half of bit period + LOW(GPIO_SSC_DOUT); + while (AT91C_BASE_TC0->TC_CV < T0 * EM4X50_T_TAG_FULL_PERIOD); + + } else { + + // bit = "1" means disable modulation for full bit period + LOW(GPIO_SSC_DOUT); + while (AT91C_BASE_TC0->TC_CV < T0 * EM4X50_T_TAG_FULL_PERIOD); + } +} + +static void em4x50_send_byte(uint8_t byte) { + + // send byte (without parity) + + int mask = 0x80; + + for (int i = 0; i < 8; i++) { + + if ((byte & mask) == 0) + em4x50_send_bit(0); + else + em4x50_send_bit(1); + + mask >>= 1; + } +} + +static void em4x50_send_byte_with_parity(uint8_t byte) { + + // send byte followed by its (equal) parity bit + + int parity = 0; + int mask = 0x80; + + for (int i = 0; i < 8; i++) { + + if ((byte & mask) == 0) { + em4x50_send_bit(0); + parity ^= 0; + } else { + em4x50_send_bit(1); + parity ^= 1; + } + + mask >>= 1; + } + + em4x50_send_bit(parity); +} + +static void em4x50_send_word(const uint8_t bytes[4]) { + + // send 32 bit word with parity bits according to EM4x50 datasheet + + for (int i = 0; i < 4; i++) + em4x50_send_byte_with_parity(bytes[i]); + + // send column parities + em4x50_send_byte(bytes[0] ^ bytes[1] ^ bytes[2] ^ bytes[3]); + + // send final stop bit (always "0") + em4x50_send_bit(0); +} + +static bool find_double_listen_window(bool bcommand) { + + // find two successive listen windows that indicate the beginning of + // data transmission + + AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG; + while (AT91C_BASE_TC0->TC_CV < T0 * EM4X50_T_WAITING_FOR_LIW) { + + // identification of listen window is done via evaluation of + // pulse lengths + if (check_pulse_length(get_pulse_length(), 3 * EM4X50_T_TAG_FULL_PERIOD)) { + + if (check_pulse_length(get_pulse_length(), 2 * EM4X50_T_TAG_FULL_PERIOD)) { + + // first listen window found + + if (bcommand) { + + // data transmission from card has to be stopped, because + // a commamd shall be issued + + // unfortunately the posititon in listen window (where + // command request has to be sent) has gone, so if a + // second window follows - sync on this to issue a command + + // skip the next bit... + wait_timer(FPGA_TIMER_0, T0 * EM4X50_T_TAG_FULL_PERIOD); + + // ...and check if the following bit does make sense + // (if not it is the correct position within the second + // listen window) + if (get_next_bit() == EM4X50_BIT_OTHER) { + + // send RM for request mode + em4x50_send_bit(0); + em4x50_send_bit(0); + + return true; + } + + } + + if (check_pulse_length(get_pulse_length(), 3 * EM4X50_T_TAG_FULL_PERIOD)) { + + // return although second listen window consists of one + // more bit period but this period is necessary for + // evaluating further pulse lengths + return true; + } + } + } + } + + return false; +} + +static bool request_receive_mode(void) { + + // To issue a command we have to find a listen window first. + // Because identification and sychronization at the same time is not + // possible when using pulse lengths a double listen window is used. + + bool bcommand = true; + + return find_double_listen_window(bcommand); +} + +static bool check_ack(bool bliw) { + + // returns true if signal structue corresponds to ACK, anything else is + // counted as NAK (-> false) + // Only relevant for pasword writing function: + // If <bliw> is true then within the single listen window right after the + // ack signal a RM request has to be sent. + + AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG; + while (AT91C_BASE_TC0->TC_CV < T0 * 4 * EM4X50_T_TAG_FULL_PERIOD) { + + if (check_pulse_length(get_pulse_length(), 2 * EM4X50_T_TAG_FULL_PERIOD)) { + + // The received signal is either ACK or NAK. + + if (check_pulse_length(get_pulse_length(), 2 * EM4X50_T_TAG_FULL_PERIOD)) { + + // Now the signal must be ACK. + + if (!bliw) { + + return true; + + } else { + + // send RM request after ack signal + + // wait for 2 bits (remaining "bit" of ACK signal + first + // "bit" of listen window) + wait_timer(FPGA_TIMER_0, T0 * 2 * EM4X50_T_TAG_FULL_PERIOD); + + // check for listen window (if first bit cannot be inerpreted + // as a valid bit it must belong to a listen window) + if (get_next_bit() == EM4X50_BIT_OTHER) { + + // send RM for request mode + em4x50_send_bit(0); + em4x50_send_bit(0); + + return true; + } + } + } + } + } + + return false; +} + +static int get_word_from_bitstream(uint8_t bits[EM4X50_TAG_WORD]) { + + // decodes one word by evaluating pulse lengths and previous bit; + // word must have 45 bits in total: + // 32 data bits + 4 row parity bits + 8 column parity bits + 1 stop bit + + bool bbitchange = false; + int i = 0; + uint32_t pl = 0; + + // initial bit value depends on last pulse length of listen window + pl = get_pulse_length(); + if (check_pulse_length(pl, 3 * EM4X50_T_TAG_HALF_PERIOD)) { + + // pulse length = 1.5 + bits[0] = 1; + + } else if (check_pulse_length(pl, 2 * EM4X50_T_TAG_FULL_PERIOD)) { + + // pulse length = 2 + bits[0] = 0; + bbitchange = true; + + } else { + + // pulse length = 2.5 + bits[0] = 0; + bits[1] = 1; + i++; + } + + // identify remaining bits based on pulse lengths + // between two listen windows only pulse lengths of 1, 1.5 and 2 are possible + while (true) { + + i++; + pl = get_pulse_length(); + + if (check_pulse_length(pl, EM4X50_T_TAG_FULL_PERIOD)) { + + // pulse length = 1 -> keep former bit value + bits[i] = bits[i-1]; + + } else if (check_pulse_length(pl, 3 * EM4X50_T_TAG_HALF_PERIOD)) { + + // pulse length = 1.5 -> decision on bit change + + if (bbitchange) { + + // if number of pulse lengths with 1.5 periods is even -> add bit + bits[i] = (bits[i-1] == 1) ? 1 : 0; + + // pulse length of 1.5 changes bit value + bits[i+1] = (bits[i] == 1) ? 0 : 1; + i++; + + // next time add only one bit + bbitchange = false; + + } else { + + bits[i] = (bits[i-1] == 1) ? 0 : 1; + + // next time two bits have to be added + bbitchange = true; + } + + } else if (check_pulse_length(pl, 2 * EM4X50_T_TAG_FULL_PERIOD)) { + + // pulse length of 2 means: adding 2 bits "01" + bits[i] = 0; + bits[i+1] = 1; + i++; + + } else if (check_pulse_length(pl, 3 * EM4X50_T_TAG_FULL_PERIOD)) { + + // pulse length of 3 indicates listen window -> clear last + // bit (= 0) and return + return --i; + + } + } +} + +// login function + +static bool login(uint8_t password[4]) { + + if (request_receive_mode ()) { + + // send login command + em4x50_send_byte_with_parity(EM4X50_COMMAND_LOGIN); + + // send password + em4x50_send_word(password); + + // check if ACK is returned + if (check_ack(false)) + return true; + + } else { + Dbprintf("error in command request"); + } + + return false; +} + +// read functions + +static bool standard_read(int *now) { + + // reads data that tag transmits when exposed to reader field + // (standard read mode); number of read words is saved in <now> + + uint8_t bits[EM4X50_TAG_WORD] = {0}; + + // start with the identification of two succsessive listening windows + if (find_double_listen_window(false)) { + + // read and save words until following double listen window is detected + while (get_word_from_bitstream(bits) == EM4X50_TAG_WORD) + save_word((*now)++, bits); + + return true; + + } else { + Dbprintf("didn't find a listen window"); + } + + return false; +} + +static bool selective_read(uint8_t addresses[4]) { + + // reads from "first word read" (fwr = addresses[3]) to "last word read" + // (lwr = addresses[2]) + // result is verified by "standard read mode" result + + int fwr = addresses[3]; // first word read + int lwr = addresses[2]; // last word read + int now = 0; // number of words + + if (request_receive_mode()) { + + // send selective read command + em4x50_send_byte_with_parity(EM4X50_COMMAND_SELECTIVE_READ); + + // send address data + em4x50_send_word(addresses); + + // look for ACK sequence + if (check_ack(false)) + + // save and verifiy via standard read mode (compare number of words) + if (standard_read(&now)) + if (now == (lwr - fwr + 1)) + return true; + + } else { + Dbprintf("error in command request"); + } + + return false; +} + +void em4x50_info(em4x50_data_t *etd) { + + // collects as much information as possible via selective read mode + // if no password is given -> try with standard password "0x00000000" + // otherwise continue without login + + bool bsuccess = false, blogin = false; + uint8_t addresses[] = {0x00, 0x00, 0x21, 0x00}; // fwr = 0, lwr = 33 + uint8_t password[] = {0x00, 0x00, 0x00, 0x00}; // default password + + init_tag(); + em4x50_setup_read(); + + + if (etd->pwd_given) { + + // try to login with given password + blogin = login(etd->password); + + } else { + + // if no password is given, try to login with "0x00000000" + blogin = login(password); + + } + + bsuccess = selective_read(addresses); + + lf_finalize(); + reply_mix(CMD_ACK, bsuccess, blogin, 0, (uint8_t *)tag.sectors, 238); +} From db9e0249133574ca68ccda6b5b355fe005e54fd6 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Mon, 15 Jun 2020 14:41:42 +0200 Subject: [PATCH 461/527] new entry regarding em4x40 demodulation --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index ce186a2b0..899d79a53 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Fix em4x50 demodulation error (@tharexde) - Fix `hf mfdes` authentification issues, DES working (@bkerler) - Add Android cross-compilation to client cmake (@dxl, @doegox) - Fix `emv scan` - now saves in current folder and uses unique names (@iceman1001) From 141c75bfb3f3ec24facb86da884971e95b5cf5e5 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Mon, 15 Jun 2020 18:51:45 +0300 Subject: [PATCH 462/527] a1 --- appveyor.yml | 204 +-------------------------------------------------- 1 file changed, 1 insertion(+), 203 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index a97a65276..571737ab5 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -7,7 +7,6 @@ init: #Get-ChildItem Env: - $releasename="" $env:APPVEYOR_REPO_COMMIT_SHORT = $env:APPVEYOR_REPO_COMMIT.Substring(0, 8) @@ -23,7 +22,6 @@ init: Add-AppveyorMessage -Message "[$env:APPVEYOR_REPO_COMMIT_SHORT]$env:appveyor_repo_name($env:APPVEYOR_REPO_BRANCH)" -Category Information -Details "repository: $env:appveyor_repo_name branch: $env:APPVEYOR_REPO_BRANCH release: $releasename" - # iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) clone_script: - ps: >- @@ -156,21 +154,10 @@ clone_script: Write-Host "[ OK ]" -ForegroundColor Green install: -- ps: >- - function Exec-External { - param( - [Parameter(Position=0,Mandatory=1)][scriptblock] $command - ) - & $command - if ($LASTEXITCODE -ne 0) { - throw ("Command returned non-zero error-code ${LASTEXITCODE}: $command") - } - } build_script: - ps: >- "C:\ProxSpace\msys2\usr\bin;C:\ProxSpace\msys2\mingw32\bin;C:\ProxSpace\gcc-arm-none-eabi\bin;$env:Path" - $env:MINGW_HOME="C:\ProxSpace\msys2\mingw32" $env:MSYS_HOME="C:\ProxSpace\msys2" @@ -198,72 +185,6 @@ build_script: } - if(!(Test-Path C:\ProxSpace\pm3\armsrc\obj\fullimage.elf)){ - - throw "ARM file fullimage.elf not exists." - - } - - if(!(Test-Path C:\ProxSpace\pm3\client\resources\hardnested_tables\*.bin.bz2)){ - - throw "Files in client\resources\hardnested_tables is not exists." - - } - - - #install - - Write-Host "Installing..." -NoNewLine -ForegroundColor Yellow - - New-Item -ItemType Directory -Force -Path C:\ProxSpace\pm3\Release\bin - - bash -c -i 'make install DESTDIR=Release PREFIX=' - - # dll files - - Copy-Item C:\ProxSpace\msys2\mingw32\bin\libgcc_s_dw2-1.dll C:\ProxSpace\pm3\Release\bin - - Copy-Item C:\ProxSpace\msys2\mingw32\bin\libstdc++-6.dll C:\ProxSpace\pm3\Release\bin - - Copy-Item C:\ProxSpace\msys2\mingw32\bin\libwinpthread-1.dll C:\ProxSpace\pm3\Release\bin - - Copy-Item C:\ProxSpace\msys2\mingw32\bin\Qt5Core.dll C:\ProxSpace\pm3\Release\bin - - Copy-Item C:\ProxSpace\msys2\mingw32\bin\Qt5Gui.dll C:\ProxSpace\pm3\Release\bin - - Copy-Item C:\ProxSpace\msys2\mingw32\bin\Qt5Widgets.dll C:\ProxSpace\pm3\Release\bin - - Copy-Item C:\ProxSpace\msys2\mingw32\bin\libreadline*.dll C:\ProxSpace\pm3\Release\bin - - Copy-Item C:\ProxSpace\msys2\mingw32\bin\libtermcap-0.dll C:\ProxSpace\pm3\Release\bin - - Write-Host "[ OK ]" -ForegroundColor Green - - - #archive and push - - $releasename="" - - if ($env:appveyor_repo_tag -match "true"){ - - $releasename=$env:APPVEYOR_REPO_TAG_NAME + "/" - - } - - $releasename+=$env:APPVEYOR_BUILD_VERSION + " [" + $env:APPVEYOR_REPO_COMMIT.Substring(0, 7) + "]" - - - Write-Host "Archive and publish release files ($releasename)..." -NoNewLine -ForegroundColor Yellow - - cd C:\ProxSpace - - 7z a release.zip C:\ProxSpace\pm3\Release - - Push-AppveyorArtifact release.zip -DeploymentName "$releasename" - - Write-Host "[ OK ]" -ForegroundColor Green - - Write-Host "Builded..." -ForegroundColor Yellow test_script: - ps: >- @@ -271,133 +192,10 @@ test_script: cd c:\ProxSpace\pm3 + bash -c -i 'make check' $global:TestsPassed=$true - - Function ExecTest($Name, $File, $Cmd, $CheckResult) { - - #--- begin Job - - $Job = Start-Job -ScriptBlock { - [bool]$res=$false - $TestTime=[System.Environment]::TickCount - $env:Path = "C:\ProxSpace\msys\bin;$env:Path" - Set-Location $using:PWD - - $sb=[scriptblock]::Create("$using:Cmd") - #execute scriptblock - Write-host "Test [$using:Name] job: $using:Cmd" - $Cond=&$sb - - if ($Cond -eq $null){ - } ElseIf($using:CheckResult -ne $null) { - [String]$searchstr="" - if ($Cond -is [Object]){ - ForEach($line in $Cond){ - Write-host $line -ForegroundColor Gray - $searchstr += $line - } - }else{ - Write-host "$Cond" -ForegroundColor Gray - $searchstr = $Cond - } - If($searchstr -like "*$using:CheckResult*") { - $res=$true - } - $Cond="*$using:CheckResult*" - } Else { - If (!($Cond -is [bool] -or $Cond -is [byte] -or $Cond -is [int16] -or $Cond -is [int32] -or $Cond -is [int64] -or $Cond -is [float])){ - if ($Cond -is "String" -and $Cond -like "*passed*"){ - $res= $true - } - if ($Cond -is "String" -and $Cond -like "*true*"){ - $res= $true - } - ForEach($line in $Cond){ - if ($line -like "*passed*"){ - $res = $true - $Cond = $line - break - } - } - } Else { - $res=$Cond - } - } - - If ($res) { - Write-host "Result[$using:Name]: $Cond" -ForegroundColor Green - Add-AppveyorTest -Name "$using:Name" -Framework NUnit -Filename "$using:File" -Outcome Passed -Duration "$([System.Environment]::TickCount-$TestTime)" - }Else { - Write-host "Result[$using:Name]: $Cond" -ForegroundColor Red - Add-AppveyorTest -Name "$using:Name" -Framework NUnit -Filename "$using:File" -Outcome Failed -Duration "$([System.Environment]::TickCount-$TestTime)" -ErrorMessage "command:$using:Cmd`nresult:$Cond" - } - return $res - } - - #--- end Job - - [bool]$res=$false - # Wait 180 sec timeout for Job - if(Wait-Job $Job -Timeout 180){ - $Results = $Job | Receive-Job - if($Results -like "true"){ - $res=$true - } - } else { - Write-host "Test [$Name] timeout" -ForegroundColor Red - Add-AppveyorTest -Name "$Name" -Framework NUnit -Filename "$File" -Outcome Failed -Duration 60000 -ErrorMessage "timeout" - } - Remove-Job -Force $Job - - if(!$res){ - Write-host "--------------------- tests fail" -ForegroundColor Red - $global:TestsPassed=$false - } - } - - - Write-Host "Running tests..." -ForegroundColor Yellow - - - #file test - - ExecTest "proxmark3 exists" "proxmark3.exe" {Test-Path C:\ProxSpace\pm3\Release\bin\proxmark3.exe} - - ExecTest "arm bootrom exists" "bootrom.elf" {Test-Path C:\ProxSpace\pm3\Release\share\proxmark3\firmware\bootrom.elf} - - ExecTest "arm image exists" "fullimage.elf" {Test-Path C:\ProxSpace\pm3\Release\share\proxmark3\firmware\fullimage.elf} - - ExecTest "arm recovery image exists" "proxmark3_recovery.bin" {Test-Path C:\ProxSpace\pm3\Release\share\proxmark3\firmware\proxmark3_recovery.bin} - - ExecTest "hardnested tables exists" "hardnested" {Test-Path C:\ProxSpace\pm3\Release\share\proxmark3\resources\hardnested_tables\*.bz2} - - ExecTest "release exists" "release.zip" {Test-Path C:\ProxSpace\release.zip} - - - #proxmark logic tests - - ExecTest "proxmark help" "proxmark3 -h" {bash -lc 'cd ~/client;./proxmark3 -h 2>&1 | grep -q wait && echo passed || echo failed'} - - ExecTest "proxmark help text ISO7816" "proxmark3 -t" {bash -lc 'cd ~/client;./proxmark3 -t 2>&1 | grep -q ISO7816 && echo passed || echo failed'} - - ExecTest "proxmark help text hardnested" "proxmark3 -t" {bash -lc 'cd ~/client;./proxmark3 -t 2>&1 | grep -q hardnested && echo passed || echo failed'} - - - ExecTest "hf mf offline text" "hf mf" {bash -lc "cd ~/client;./proxmark3 -c 'hf mf'"} "at_enc" - - #proxmark crypto tests - - # Long tests: - # ExecTest "hf mf hardnested" "hf mf hardnested" {bash -lc "cd ~/client;./proxmark3 -c 'hf mf hardnested t 1 000000000000'"} "found:" - # ExecTest "hf mf iclass" "hf mf iclass" {bash -lc "cd ~/client;./proxmark3 -c 'hf iclass loclass t l'"} "verified ok" - # ExecTest "emv test" "emv test" {bash -lc "cd ~/client;./proxmark3 -c 'emv test -i -l'"} "Test?s? ? OK" - # Short tests: - ExecTest "hf mf iclass" "hf mf iclass" {bash -lc "cd ~/client;./proxmark3 -c 'hf iclass loclass t'"} "OK!" - ExecTest "emv test" "emv test" {bash -lc "cd ~/client;./proxmark3 -c 'emv test -i'"} "Test?s? ? OK" - - if ($global:TestsPassed) { Write-Host "Tests [ OK ]" -ForegroundColor Green } else { From fd5f821a46edb6fdce15f9bc04c1c4ee567fe3d8 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 16 Jun 2020 09:13:30 +0200 Subject: [PATCH 463/527] helptext --- client/src/cmdlfem4x.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/client/src/cmdlfem4x.c b/client/src/cmdlfem4x.c index ebb3fe2e4..a98b5669b 100644 --- a/client/src/cmdlfem4x.c +++ b/client/src/cmdlfem4x.c @@ -1745,6 +1745,7 @@ static int CmdEM4x05Info(const char *Cmd) { static command_t CommandTable[] = { {"help", CmdHelp, AlwaysAvailable, "This help"}, + {"----------", CmdHelp, AlwaysAvailable, "----------------------- " _CYAN_("EM 410x") " -----------------------"}, //{"410x_demod", CmdEMdemodASK, IfPm3Lf, "Extract ID from EM410x tag on antenna)"}, {"410x_demod", CmdEM410xDemod, AlwaysAvailable, "demodulate a EM410x tag from the GraphBuffer"}, {"410x_read", CmdEM410xRead, IfPm3Lf, "attempt to read and extract tag data"}, @@ -1753,14 +1754,14 @@ static command_t CommandTable[] = { {"410x_watch", CmdEM410xWatch, IfPm3Lf, "watches for EM410x 125/134 kHz tags (option 'h' for 134)"}, {"410x_spoof", CmdEM410xWatchnSpoof, IfPm3Lf, "watches for EM410x 125/134 kHz tags, and replays them. (option 'h' for 134)" }, {"410x_write", CmdEM410xWrite, IfPm3Lf, "write EM410x UID to T5555(Q5) or T55x7 tag"}, - + {"----------", CmdHelp, AlwaysAvailable, "-------------------- " _CYAN_("EM 4x05 / 4x69") " -------------------"}, {"4x05_demod", CmdEM4x05Demod, AlwaysAvailable, "demodulate a EM4x05/EM4x69 tag from the GraphBuffer"}, {"4x05_dump", CmdEM4x05Dump, IfPm3Lf, "dump EM4x05/EM4x69 tag"}, {"4x05_wipe", CmdEM4x05Wipe, IfPm3Lf, "wipe EM4x05/EM4x69 tag"}, {"4x05_info", CmdEM4x05Info, IfPm3Lf, "tag information EM4x05/EM4x69"}, {"4x05_read", CmdEM4x05Read, IfPm3Lf, "read word data from EM4x05/EM4x69"}, {"4x05_write", CmdEM4x05Write, IfPm3Lf, "write word data to EM4x05/EM4x69"}, - + {"----------", CmdHelp, AlwaysAvailable, "----------------------- " _CYAN_("EM 4x50") " -----------------------"}, {"4x50_demod", CmdEM4x50Demod, AlwaysAvailable, "demodulate a EM4x50 tag from the GraphBuffer"}, {"4x50_dump", CmdEM4x50Dump, IfPm3Lf, "dump EM4x50 tag"}, {"4x50_read", CmdEM4x50Read, IfPm3Lf, "read word data from EM4x50"}, From 2555f463282dc925f61e2088d3dc704ff6d29119 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Tue, 16 Jun 2020 09:24:39 +0200 Subject: [PATCH 464/527] chg: "lf em 4x50_read" - acquire data is useful... --- client/src/cmdlfem4x.c | 1 + 1 file changed, 1 insertion(+) diff --git a/client/src/cmdlfem4x.c b/client/src/cmdlfem4x.c index a98b5669b..f53ccae20 100644 --- a/client/src/cmdlfem4x.c +++ b/client/src/cmdlfem4x.c @@ -1035,6 +1035,7 @@ static int CmdEM4x50Demod(const char *Cmd) { static int CmdEM4x50Read(const char *Cmd) { uint8_t ctmp = tolower(param_getchar(Cmd, 0)); if (ctmp == 'h') return usage_lf_em4x50_read(); + lf_read(false, 24000); return EM4x50Read(Cmd, true); } From b1b6f0d8b748f8cd8d1261db15fe3a8f265e32ca Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Tue, 16 Jun 2020 23:24:35 +0200 Subject: [PATCH 465/527] added write and write_password functions --- armsrc/em4x50.c | 215 ++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 210 insertions(+), 5 deletions(-) diff --git a/armsrc/em4x50.c b/armsrc/em4x50.c index ba4a1b89d..9e7f0c57f 100644 --- a/armsrc/em4x50.c +++ b/armsrc/em4x50.c @@ -72,6 +72,8 @@ static em4x50_tag_t tag = { #define EM4X50_T_TAG_THREE_QUARTER_PERIOD 48 #define EM4X50_T_TAG_FULL_PERIOD 64 #define EM4X50_T_WAITING_FOR_LIW 500 +#define EM4X50_T_TAG_TPP 64 +#define EM4X50_T_TAG_TWA 64 #define EM4X50_TAG_TOLERANCE 8 #define EM4X50_TAG_WORD 45 @@ -81,7 +83,9 @@ static em4x50_tag_t tag = { #define EM4X50_BIT_OTHER 2 #define EM4X50_COMMAND_LOGIN 0x01 +#define EM4X50_COMMAND_RESET 0x80 #define EM4X50_COMMAND_WRITE 0x12 +#define EM4X50_COMMAND_WRITE_PASSWORD 0x11 #define EM4X50_COMMAND_SELECTIVE_READ 0x0A #define FPGA_TIMER_0 0 @@ -114,6 +118,35 @@ static uint8_t bits2byte(uint8_t bits[8], int length) { return byte; } +static uint8_t msb2lsb(uint8_t byte) { + + // returns byte with bit positions in reverse order + + uint8_t tmp = 0; + + for (int i = 0; i < 8; i++) + tmp |= ((byte >> (7-i)) & 1) << i; + + return tmp; +} + +static void msb2lsb_word(uint8_t *word) { + + // reorders given <word> according to EM4x50 datasheet (msb -> lsb) + + uint8_t buff[4]; + + buff[0] = msb2lsb(word[3]); + buff[1] = msb2lsb(word[2]); + buff[2] = msb2lsb(word[1]); + buff[3] = msb2lsb(word[0]); + + word[0] = buff[0]; + word[1] = buff[1]; + word[2] = buff[2]; + word[3] = buff[3]; +} + static void save_word(int pos, uint8_t bits[EM4X50_TAG_WORD]) { // split "raw" word into data, row and column parity bits and stop bit and @@ -242,7 +275,7 @@ static int get_next_bit(void) { static uint32_t get_pulse_length(void) { - // + // iterates pulse length (low -> high -> low) uint8_t sample = 0, high = 192, low = 64; @@ -562,6 +595,9 @@ static int get_word_from_bitstream(uint8_t bits[EM4X50_TAG_WORD]) { static bool login(uint8_t password[4]) { + // simple login to EM4x50, + // used in operations that require authentication + if (request_receive_mode ()) { // send login command @@ -581,6 +617,27 @@ static bool login(uint8_t password[4]) { return false; } +// reset function + +static bool reset(void) { + + // resets EM4x50 tag (used by write function) + + if (request_receive_mode ()) { + + // send login command + em4x50_send_byte_with_parity(EM4X50_COMMAND_RESET); + + if (check_ack(false)) + return true; + + } else { + Dbprintf("error in command request"); + } + + return false; +} + // read functions static bool standard_read(int *now) { @@ -588,6 +645,7 @@ static bool standard_read(int *now) { // reads data that tag transmits when exposed to reader field // (standard read mode); number of read words is saved in <now> + int fwr = *now; uint8_t bits[EM4X50_TAG_WORD] = {0}; // start with the identification of two succsessive listening windows @@ -597,6 +655,9 @@ static bool standard_read(int *now) { while (get_word_from_bitstream(bits) == EM4X50_TAG_WORD) save_word((*now)++, bits); + // number of detected words + *now -= fwr; + return true; } else { @@ -610,11 +671,11 @@ static bool selective_read(uint8_t addresses[4]) { // reads from "first word read" (fwr = addresses[3]) to "last word read" // (lwr = addresses[2]) - // result is verified by "standard read mode" result + // result is verified by "standard read mode" int fwr = addresses[3]; // first word read int lwr = addresses[2]; // last word read - int now = 0; // number of words + int now = fwr; // number of words if (request_receive_mode()) { @@ -627,11 +688,11 @@ static bool selective_read(uint8_t addresses[4]) { // look for ACK sequence if (check_ack(false)) - // save and verifiy via standard read mode (compare number of words) + // save and verify via standard read mode (compare number of words) if (standard_read(&now)) if (now == (lwr - fwr + 1)) return true; - + } else { Dbprintf("error in command request"); } @@ -670,3 +731,147 @@ void em4x50_info(em4x50_data_t *etd) { lf_finalize(); reply_mix(CMD_ACK, bsuccess, blogin, 0, (uint8_t *)tag.sectors, 238); } + +// write functions + +static bool write(uint8_t word[4], uint8_t address) { + + // writes <word> to specified <address> + + if (request_receive_mode()) { + + // send selective read command + em4x50_send_byte_with_parity(EM4X50_COMMAND_WRITE); + + // send address data + em4x50_send_byte_with_parity(address); + + // send data + em4x50_send_word(word); + + // wait for T0 * EM4X50_T_TAG_TWA (write access time) + wait_timer(FPGA_TIMER_0, T0 * EM4X50_T_TAG_TWA); + + // look for ACK sequence + if (check_ack(false)) { + + // now EM4x50 needs T0 * EM4X50_T_TAG_TWEE (EEPROM write time) + // for saving data and should return with ACK + if (check_ack(false)) + return true; + + } + + } else { + Dbprintf("error in command request"); + } + + return false; +} + +static bool write_password(uint8_t password[4], uint8_t new_password[4]) { + + // changes password from <password> to <new_password> + + if (request_receive_mode()) { + + // send selective read command + em4x50_send_byte_with_parity(EM4X50_COMMAND_WRITE_PASSWORD); + + // send address data + em4x50_send_word(password); + + // wait for T0 * EM4x50_T_TAG_TPP (processing pause time) + wait_timer(FPGA_TIMER_0, T0 * EM4X50_T_TAG_TPP); + + // look for ACK sequence and send rm request + // during following listen window + if (check_ack(true)) { + + // send new password + em4x50_send_word(new_password); + + // wait for T0 * EM4X50_T_TAG_TWA (write access time) + wait_timer(FPGA_TIMER_0, T0 * EM4X50_T_TAG_TWA); + + if (check_ack(false)) + if (check_ack(false)) + return true; + + } + + } else { + Dbprintf("error in command request"); + } + + return false; +} + +void em4x50_write(em4x50_data_t *etd) { + + // write operation process for EM4x50 tag, + // single word is written to given address, verified by selective read operation + + bool bsuccess = true, blogin = false; + uint8_t word[4] = {0x00, 0x00, 0x00, 0x00}; + uint8_t addresses[4] = {0x00, 0x00, 0x00, 0x00}; + + init_tag(); + em4x50_setup_read(); + + // reorder word according to datasheet + msb2lsb_word(etd->word); + + // if password is given try to login first + if (etd->pwd_given) + blogin = login(etd->password); + + // write word to given address + if (write(etd->word, etd->address)) { + + // to verify result reset EM4x50 + if (reset()) { + + // if password is given login + if (etd->pwd_given) + blogin &= login(etd->password); + + // perform a selective read + addresses[2] = addresses[3] = etd->address; + if (selective_read(addresses)) { + + // compare with given word + word[0] = tag.sectors[etd->address][0]; + word[1] = tag.sectors[etd->address][1]; + word[2] = tag.sectors[etd->address][2]; + word[3] = tag.sectors[etd->address][3]; + msb2lsb_word(word); + + for (int i = 0; i < 4; i++) + bsuccess &= (word[i] == etd->word[i]) ? true : false; + + } + } + } + + lf_finalize(); + reply_mix(CMD_ACK, bsuccess, blogin, 0, (uint8_t *)tag.sectors, 238); +} + +void em4x50_write_password(em4x50_data_t *etd) { + + // sinmple change of password + + bool bsuccess = false; + + init_tag(); + em4x50_setup_read(); + + // login and change password + if (login(etd->password)) { + bsuccess = write_password(etd->password, etd->new_password); + } + + lf_finalize(); + reply_mix(CMD_ACK, bsuccess, 0, 0, 0, 0); +} From f930e78650d85ea5f29d0e5456fb03665c00092a Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Tue, 16 Jun 2020 23:24:44 +0200 Subject: [PATCH 466/527] added write and write_password functions --- armsrc/em4x50.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/armsrc/em4x50.h b/armsrc/em4x50.h index 76e9b7525..746ca4811 100644 --- a/armsrc/em4x50.h +++ b/armsrc/em4x50.h @@ -18,5 +18,7 @@ typedef struct { } em4x50_tag_t; void em4x50_info(em4x50_data_t *etd); +void em4x50_write(em4x50_data_t *etd); +void em4x50_write_password(em4x50_data_t *etd); #endif /* EM4X50_H */ From bf85108f2fd643da6b666ba72528cf2afb8f47c3 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Tue, 16 Jun 2020 23:25:07 +0200 Subject: [PATCH 467/527] added write and write_password functions --- armsrc/appmain.c | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 0d05222de..81c6a233a 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -994,6 +994,14 @@ static void PacketReceived(PacketCommandNG *packet) { em4x50_info((em4x50_data_t *)packet->data.asBytes); break; } + case CMD_LF_EM4X50_WRITE: { + em4x50_write((em4x50_data_t *)packet->data.asBytes); + break; + } + case CMD_LF_EM4X50_WRITE_PASSWORD: { + em4x50_write_password((em4x50_data_t *)packet->data.asBytes); + break; + } #endif #ifdef WITH_ISO15693 From 0ddcab51aa0dc2f99ac1981ae6d8abd6fe3453e1 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Tue, 16 Jun 2020 23:25:17 +0200 Subject: [PATCH 468/527] added write and write_password functions --- client/src/cmdlfem4x50.h | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/client/src/cmdlfem4x50.h b/client/src/cmdlfem4x50.h index 3868e6113..732d05d5b 100644 --- a/client/src/cmdlfem4x50.h +++ b/client/src/cmdlfem4x50.h @@ -12,7 +12,11 @@ #define CMDLFEM4X50_H__ int usage_lf_em4x50_info(void); +int usage_lf_em4x50_write(void); +int usage_lf_em4x50_write_password(void); int CmdEM4x50Info(const char *Cmd); +int CmdEM4x50Write(const char *Cmd); +int CmdEM4x50WritePassword(const char *Cmd); #endif From 4023c2b8f9ecb41f32976ac61daa289fdf823bd0 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Tue, 16 Jun 2020 23:25:27 +0200 Subject: [PATCH 469/527] added write and write_password functions --- client/src/cmdlfem4x50.c | 289 ++++++++++++++++++++++++++++++++++++++- 1 file changed, 284 insertions(+), 5 deletions(-) diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index 74432c36c..b20e420cc 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -32,6 +32,31 @@ int usage_lf_em4x50_info(void) { PrintAndLogEx(NORMAL, " lf em 4x50_info v p fa225de1\n"); return PM3_SUCCESS; } +int usage_lf_em4x50_write(void) { + PrintAndLogEx(NORMAL, "Write EM4x50 word. Tag must be on antenna. "); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(NORMAL, "Usage: lf em 4x50_write [h] a <address> w <data>"); + PrintAndLogEx(NORMAL, "Options:"); + PrintAndLogEx(NORMAL, " h - this help"); + PrintAndLogEx(NORMAL, " a <addr> - memory address to write to (dec)"); + PrintAndLogEx(NORMAL, " w <word> - word to write (hex)"); + PrintAndLogEx(NORMAL, " p <pwd> - password (hex) (optional)"); + PrintAndLogEx(NORMAL, "Examples:"); + PrintAndLogEx(NORMAL, " lf em 4x50_write a 3 w deadc0de"); + return PM3_SUCCESS; +} +int usage_lf_em4x50_write_password(void) { + PrintAndLogEx(NORMAL, "Write EM4x50 password. Tag must be on antenna. "); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(NORMAL, "Usage: lf em 4x50_write_password [h] p <pwd> n <pwd>"); + PrintAndLogEx(NORMAL, "Options:"); + PrintAndLogEx(NORMAL, " h - this help"); + PrintAndLogEx(NORMAL, " p <pwd> - password (hex)"); + PrintAndLogEx(NORMAL, " n <pwd> - new password (hex)"); + PrintAndLogEx(NORMAL, "Examples:"); + PrintAndLogEx(NORMAL, " lf em 4x50_write_password p 11223344 n 01020304"); + return PM3_SUCCESS; +} static uint8_t msb2lsb(uint8_t byte) { @@ -216,7 +241,7 @@ static void print_result(const em4x50_word_t *words, int fwr, int lwr) { static void print_info_result(PacketResponseNG *resp, const em4x50_data_t *etd, bool bverbose) { - // displays all information info result in structured format + // display all information info result in structured format bool bpwd_given = etd->pwd_given; bool bsuccess = (bool)resp->oldarg[0]; @@ -319,10 +344,10 @@ static void print_info_result(PacketResponseNG *resp, const em4x50_data_t *etd, PrintAndLogEx(NORMAL,"%s", string); string[0] = '\0'; - PrintAndLogEx(NORMAL, "\n Zero values may indicate read protection!"); + PrintAndLogEx(NORMAL, "\n zero values may indicate read protection!"); // status line - sprintf(pstring, "\n reading "); + sprintf(pstring, " reading "); strcat(string, pstring); if (!bsuccess) { @@ -346,7 +371,7 @@ static void print_info_result(PacketResponseNG *resp, const em4x50_data_t *etd, } else { - sprintf(pstring, "(login with default password)"); + sprintf(pstring, "(login with default password 0x00000000)"); strcat(string, pstring); } @@ -373,7 +398,7 @@ static void print_info_result(PacketResponseNG *resp, const em4x50_data_t *etd, int CmdEM4x50Info(const char *Cmd) { - // envokes reading of a EM4x50 tag which has to be on the antenna because + // envoke reading of a EM4x50 tag which has to be on the antenna because // decoding is done by the device (not on client side) bool errors = false, verbose = false; @@ -382,6 +407,9 @@ int CmdEM4x50Info(const char *Cmd) { em4x50_data_t etd; PacketResponseNG resp; + // init + etd.pwd_given = false; + while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { switch (tolower(param_getchar(Cmd, cmdp))) { @@ -439,3 +467,254 @@ int CmdEM4x50Info(const char *Cmd) { return ((bool)resp.oldarg[0]) ? PM3_SUCCESS : PM3_ESOFT; } + +static void print_write_result(PacketResponseNG *resp, const em4x50_data_t *etd) { + + // display result of writing operation in structured format + + bool pwd_given = etd->pwd_given; + bool success = (bool)resp->oldarg[0]; + bool login = (bool)resp->oldarg[1]; + uint8_t *data = resp->data.asBytes; + char string[400] = {0}; + char pstring[100] = {0}; + em4x50_word_t word[1]; + + if (!success) { + + sprintf(pstring, "\n writing " _RED_("failed")); + strcat(string, pstring); + + } else { + + prepare_result(data, etd->address, etd->address, &word[0]); + print_result(word, etd->address, etd->address); + + sprintf(pstring, "\n writing " _GREEN_("successful ")); + strcat(string, pstring); + + if (pwd_given) { + + if (login) { + sprintf(pstring, "(login with 0x%02x%02x%02x%02x)", + etd->password[0], etd->password[1], + etd->password[2], etd->password[3]); + strcat(string, pstring); + } else { + sprintf(pstring, "(login failed)"); + strcat(string, pstring); + } + + } else { + sprintf(pstring, "(no login)"); + strcat(string, pstring); + } + } + + PrintAndLogEx(NORMAL,"%s\n", string); +} + +int CmdEM4x50Write(const char *Cmd) { + + // envoke writing a single word (32 bit) to a EM4x50 tag + + bool errors = false, baddress = false, bword = false; + char password[20] = {0x00}, word[20] = {0x00}, tmpbuff[3]; + int address = 0; + uint8_t cmdp = 0; + em4x50_data_t etd; + PacketResponseNG resp; + + // init + etd.pwd_given = false; + + while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { + + switch (tolower(param_getchar(Cmd, cmdp))) { + case 'h': + return usage_lf_em4x50_write(); + + case 'p': + param_getstr(Cmd, cmdp + 1, password, sizeof(password)); + + // validation + if (strlen(password) != 8) { + PrintAndLogEx(WARNING, "\n error, password has to be 4 bytes\n"); + errors = true; + break; + } + + // prepare given password + etd.pwd_given = true; + for (int i = 0; i < 4; i++) + sscanf(strncpy(tmpbuff, password+2*i, 2), "%2hhx", &etd.password[i]); + + cmdp += 2; + break; + + case 'w': + param_getstr(Cmd, cmdp + 1, word, sizeof(word)); + + // validation + if (strlen(word) != 8) { + PrintAndLogEx(WARNING, "\n error, word has to be 4 bytes\n"); + errors = true; + break; + } else { + bword = true; + } + + // prepare given word + for (int i = 0; i < 4; i++) + sscanf(strncpy(tmpbuff, word+2*i, 2), "%2hhx", &etd.word[i]); + + cmdp += 2; + break; + + case 'a': + param_getstr(Cmd, cmdp + 1, tmpbuff, sizeof(address)); + address = atoi(tmpbuff); + + // validation + if (address < 1 || address > 31) { + PrintAndLogEx(WARNING, "\n error, address has to be in range [1-31]\n"); + errors = true; + break; + } else { + baddress = true; + } + + etd.address = address; + + cmdp += 2; + break; + + default: + PrintAndLogEx(WARNING, "\n Unknown parameter '%c'\n", param_getchar(Cmd, cmdp)); + errors = true; + break; + } + } + + if (errors || !baddress || !bword) + return usage_lf_em4x50_write(); + + clearCommandBuffer(); + SendCommandMIX(CMD_LF_EM4X50_WRITE, 0, 0, 0, &etd, sizeof(etd)); + + if (!WaitForResponse(CMD_ACK, &resp)) { + PrintAndLogEx(WARNING, "\n timeout while waiting for reply.\n"); + return PM3_ESOFT; + } + + // get, prepare and print response + print_write_result(&resp, &etd); + + return ((bool)resp.oldarg[0]) ? PM3_SUCCESS : PM3_ESOFT; +} + +static void print_write_password_result(PacketResponseNG *resp, const em4x50_data_t *etd) { + + // display result of password changing operation + + bool success = (bool)resp->oldarg[0]; + char string[400] = {0}; + char pstring[100] = {0}; + + if (!success) { + + sprintf(pstring, "\n writing new password " _RED_("failed")); + strcat(string, pstring); + + } else { + + sprintf(pstring, "\n writing new password " _GREEN_("successful")); + strcat(string, pstring); + } + + PrintAndLogEx(NORMAL,"%s\n", string); +} + +int CmdEM4x50WritePassword(const char *Cmd) { + + // envokes changing the password of EM4x50 tag + + bool errors = false, bpwd = false, bnewpwd = false; + char password[20] = {0x00}, new_password[20] = {0x00}, tmpbuff[3]; + uint8_t cmdp = 0; + em4x50_data_t etd; + PacketResponseNG resp; + + // init + etd.pwd_given = false; + etd.newpwd_given = false; + + while (param_getchar(Cmd, cmdp) != 0x00 && !errors) { + + switch (tolower(param_getchar(Cmd, cmdp))) { + case 'h': + return usage_lf_em4x50_write_password(); + + case 'p': + param_getstr(Cmd, cmdp + 1, password, sizeof(password)); + + // validation + if (strlen(password) != 8) { + PrintAndLogEx(WARNING, "\n error, passwords has to be 4 bytes\n"); + errors = true; + break; + } else { + bpwd = true; + } + + // prepare given password + etd.pwd_given = true; + for (int i = 0; i < 4; i++) + sscanf(strncpy(tmpbuff, password+2*i, 2), "%2hhx", &etd.password[i]); + + cmdp += 2; + break; + + case 'n': + param_getstr(Cmd, cmdp + 1, new_password, sizeof(new_password)); + + // validation + if (strlen(new_password) != 8) { + PrintAndLogEx(WARNING, "\n error, passwords have to be 4 bytes\n"); + errors = true; + break; + } else { + bnewpwd = true; + } + + // prepare given password + etd.newpwd_given = true; + for (int i = 0; i < 4; i++) + sscanf(strncpy(tmpbuff, new_password+2*i, 2), "%2hhx", &etd.new_password[i]); + + cmdp += 2; + break; + + default: + PrintAndLogEx(WARNING, "\n Unknown parameter '%c'\n", param_getchar(Cmd, cmdp)); + errors = true; + break; + } + } + + if (errors || !bpwd || !bnewpwd) + return usage_lf_em4x50_write_password(); + + clearCommandBuffer(); + SendCommandMIX(CMD_LF_EM4X50_WRITE_PASSWORD, 0, 0, 0, &etd, sizeof(etd)); + + if (!WaitForResponse(CMD_ACK, &resp)) { + PrintAndLogEx(WARNING, "\n timeout while waiting for reply.\n"); + return PM3_ESOFT; + } + + // get, prepare and print response + print_write_password_result(&resp, &etd); + + return ((bool)resp.oldarg[0]) ? PM3_SUCCESS : PM3_ESOFT; +} From cfeb869dabac5c295b3631f09db7357bf59f31b0 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Tue, 16 Jun 2020 23:26:28 +0200 Subject: [PATCH 470/527] added write and write_password functions --- include/pm3_cmd.h | 2 ++ 1 file changed, 2 insertions(+) diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index e2087d0f4..d8336bd65 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -403,6 +403,8 @@ typedef struct { #define CMD_LF_IO_DEMOD 0x021A #define CMD_LF_EM410X_DEMOD 0x021C #define CMD_LF_EM4X50_INFO 0x0240 +#define CMD_LF_EM4X50_WRITE 0x0241 +#define CMD_LF_EM4X50_WRITE_PASSWORD 0x0242 // Sampling configuration for LF reader/sniffer #define CMD_LF_SAMPLING_SET_CONFIG 0x021D #define CMD_LF_FSK_SIMULATE 0x021E From e81999da1a652e7b97b856af31b4b0d235c279d0 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Tue, 16 Jun 2020 23:28:09 +0200 Subject: [PATCH 471/527] added write and write_password functions --- client/src/cmdlfem4x.c | 27 ++------------------------- 1 file changed, 2 insertions(+), 25 deletions(-) diff --git a/client/src/cmdlfem4x.c b/client/src/cmdlfem4x.c index a43e624a4..a241488ae 100644 --- a/client/src/cmdlfem4x.c +++ b/client/src/cmdlfem4x.c @@ -139,20 +139,6 @@ static int usage_lf_em4x50_read(void) { PrintAndLogEx(NORMAL, " lf em 4x50_read 1 11223344"); return PM3_SUCCESS; } -static int usage_lf_em4x50_write(void) { - PrintAndLogEx(NORMAL, "Write EM 4x50/4x69. Tag must be on antenna. "); - PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(NORMAL, "Usage: lf em 4x50_write [h] <address> <data> <pwd>"); - PrintAndLogEx(NORMAL, "Options:"); - PrintAndLogEx(NORMAL, " h - this help"); - PrintAndLogEx(NORMAL, " address - memory address to write to. (0-15)"); - PrintAndLogEx(NORMAL, " data - data to write (hex)"); - PrintAndLogEx(NORMAL, " pwd - password (hex) (optional)"); - PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " lf em 4x50_write 1 deadc0de"); - PrintAndLogEx(NORMAL, " lf em 4x50_write 1 deadc0de 11223344"); - return PM3_SUCCESS; -} //////////////// 4205 / 4305 commands static int usage_lf_em4x05_dump(void) { @@ -1039,16 +1025,6 @@ static int CmdEM4x50Read(const char *Cmd) { return EM4x50Read(Cmd, true); } -static int CmdEM4x50Write(const char *Cmd) { - uint8_t ctmp = tolower(param_getchar(Cmd, 0)); - if (ctmp == 'h') return usage_lf_em4x50_write(); - PrintAndLogEx(NORMAL, "no implemented yet"); -// -// PrintAndLogEx(SUCCESS, "Done"); -// PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf em 4x50_read`") " to verify"); - return PM3_SUCCESS; -} - static int CmdEM4x50Dump(const char *Cmd) { uint8_t ctmp = tolower(param_getchar(Cmd, 0)); if (ctmp == 'h') return usage_lf_em4x50_dump(); @@ -1765,8 +1741,9 @@ static command_t CommandTable[] = { {"4x50_demod", CmdEM4x50Demod, AlwaysAvailable, "demodulate a EM4x50 tag from the GraphBuffer"}, {"4x50_dump", CmdEM4x50Dump, IfPm3Lf, "dump EM4x50 tag"}, {"4x50_read", CmdEM4x50Read, IfPm3Lf, "read word data from EM4x50"}, - {"4x50_write", CmdEM4x50Write, IfPm3Lf, "write word data to EM4x50"}, {"4x50_info", CmdEM4x50Info, IfPm3Lf, "read complete data from EM4x50"}, + {"4x50_write", CmdEM4x50Write, IfPm3Lf, "write word data to EM4x50"}, + {"4x50_write_password", CmdEM4x50WritePassword, IfPm3Lf, "change passwword of EM4x50 tag"}, {NULL, NULL, NULL, NULL} }; From 187a1cdd9670fd684963b01a110e2ad6b737bf89 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Tue, 16 Jun 2020 23:28:43 +0200 Subject: [PATCH 472/527] added info, write and write_password functions --- CHANGELOG.md | 1 + 1 file changed, 1 insertion(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 899d79a53..6791e748a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,6 +3,7 @@ All notable changes to this project will be documented in this file. This project uses the changelog in accordance with [keepchangelog](http://keepachangelog.com/). Please use this to write notable changes, which is not the same as git commit log... ## [unreleased][unreleased] + - Added lf em functions: 4x50_info, 4x50_write, 4x50_write_password (@tharexde) - Fix em4x50 demodulation error (@tharexde) - Fix `hf mfdes` authentification issues, DES working (@bkerler) - Add Android cross-compilation to client cmake (@dxl, @doegox) From 5cb732d620cce62f045edb903a0d3ce39a412b9e Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Wed, 17 Jun 2020 23:06:57 +0200 Subject: [PATCH 473/527] simplified functions for byte sending --- armsrc/em4x50.c | 34 +++++++++------------------------- 1 file changed, 9 insertions(+), 25 deletions(-) diff --git a/armsrc/em4x50.c b/armsrc/em4x50.c index 9e7f0c57f..3feed884b 100644 --- a/armsrc/em4x50.c +++ b/armsrc/em4x50.c @@ -341,39 +341,23 @@ static void em4x50_send_byte(uint8_t byte) { // send byte (without parity) - int mask = 0x80; + for (int i = 0; i < 8; i++) + em4x50_send_bit((byte >> (7-i)) & 1); - for (int i = 0; i < 8; i++) { - - if ((byte & mask) == 0) - em4x50_send_bit(0); - else - em4x50_send_bit(1); - - mask >>= 1; - } } static void em4x50_send_byte_with_parity(uint8_t byte) { // send byte followed by its (equal) parity bit - int parity = 0; - int mask = 0x80; - - for (int i = 0; i < 8; i++) { - - if ((byte & mask) == 0) { - em4x50_send_bit(0); - parity ^= 0; - } else { - em4x50_send_bit(1); - parity ^= 1; - } - - mask >>= 1; - } + int parity = 0, bit = 0; + for (int i = 0; i < 8; i++) { + bit = (byte >> (7-i)) & 1; + em4x50_send_bit(bit); + parity ^= bit; + } + em4x50_send_bit(parity); } From 8e29bb7a563ea849821f8589a9f49f9396866793 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Wed, 17 Jun 2020 23:08:02 +0200 Subject: [PATCH 474/527] deleted german comment --- armsrc/em4x50.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/em4x50.c b/armsrc/em4x50.c index 3feed884b..60f271c21 100644 --- a/armsrc/em4x50.c +++ b/armsrc/em4x50.c @@ -220,7 +220,7 @@ static void em4x50_setup_read(void) { // TIMER_CLOCK0, used to measure exact timing before answering // TIMER_CLOCK1, used to capture edges of the tag frames AT91C_BASE_PMC->PMC_PCER |= (1 << AT91C_ID_TC0) | (1 << AT91C_ID_TC1); - AT91C_BASE_PIOA->PIO_BSR = GPIO_SSC_FRAME; // wofür ist das? + AT91C_BASE_PIOA->PIO_BSR = GPIO_SSC_FRAME; // Disable timer during configuration AT91C_BASE_TC0->TC_CCR = AT91C_TC_CLKDIS; From d68434742974517923f703c2e2d1f2550f7f0ec6 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Wed, 17 Jun 2020 23:13:13 +0200 Subject: [PATCH 475/527] changed timeout return value from PM3_ESOFT to PM3_ETIMEOUT --- client/src/cmdlfem4x50.c | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index b20e420cc..52f6355f1 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -459,7 +459,7 @@ int CmdEM4x50Info(const char *Cmd) { // get result if (!WaitForResponse(CMD_ACK, &resp)) { PrintAndLogEx(WARNING, " timeout while waiting for reply."); - return PM3_ESOFT; + return PM3_ETIMEOUT; } // prepare result @@ -604,7 +604,7 @@ int CmdEM4x50Write(const char *Cmd) { if (!WaitForResponse(CMD_ACK, &resp)) { PrintAndLogEx(WARNING, "\n timeout while waiting for reply.\n"); - return PM3_ESOFT; + return PM3_ETIMEOUT; } // get, prepare and print response @@ -710,7 +710,7 @@ int CmdEM4x50WritePassword(const char *Cmd) { if (!WaitForResponse(CMD_ACK, &resp)) { PrintAndLogEx(WARNING, "\n timeout while waiting for reply.\n"); - return PM3_ESOFT; + return PM3_ETIMEOUT; } // get, prepare and print response From 25b0c2e1eb701663e968a77f9fd893b0a8ace187 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Wed, 17 Jun 2020 23:20:10 +0200 Subject: [PATCH 476/527] replaced blue color by green or yellow --- client/src/cmdlfem4x50.c | 18 +++++++++--------- 1 file changed, 9 insertions(+), 9 deletions(-) diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index 52f6355f1..a3deb1417 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -217,19 +217,19 @@ static void print_result(const em4x50_word_t *words, int fwr, int lwr) { print_bit_table(words[i]); // final result - sprintf(pstring, "\n word[%i] msb: " _BLUE_("0x"), i); + sprintf(pstring, "\n word[%i] msb: " _GREEN_("0x"), i); strcat(string, pstring); for (int j = 0; j < 4; j++) { - sprintf(pstring, _BLUE_("%02x"), words[i].byte[j]); + sprintf(pstring, _GREEN_("%02x"), words[i].byte[j]); strcat(string, pstring); } - sprintf(pstring, "\n word[%i] lsb: " _BLUE_("0x"), i); + sprintf(pstring, "\n word[%i] lsb: " _GREEN_("0x"), i); strcat(string, pstring); for (int j = 0; j < 4; j++) { - sprintf(pstring, _BLUE_("%02x"), msb2lsb(words[i].byte[3-j])); + sprintf(pstring, _GREEN_("%02x"), msb2lsb(words[i].byte[3-j])); strcat(string, pstring); } @@ -287,19 +287,19 @@ static void print_info_result(PacketResponseNG *resp, const em4x50_data_t *etd, switch(i) { case 0: - sprintf(pstring, _BLUE_(" password, write only")); + sprintf(pstring, _YELLOW_(" password, write only")); break; case 1: - sprintf(pstring, _BLUE_(" protection word, write inhibited")); + sprintf(pstring, _YELLOW_(" protection word, write inhibited")); break; case 2: - sprintf(pstring, _BLUE_(" control word, write inhibited")); + sprintf(pstring, _YELLOW_(" control word, write inhibited")); break; case 32: - sprintf(pstring, _BLUE_(" device serial number, read only")); + sprintf(pstring, _YELLOW_(" device serial number, read only")); break; case 33: - sprintf(pstring, _BLUE_(" device identification, read only")); + sprintf(pstring, _YELLOW_(" device identification, read only")); break; default: sprintf(pstring, " user data"); From 572cc7c63e0b95cefa152370bfbcce10941ea2b4 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Wed, 17 Jun 2020 23:22:03 +0200 Subject: [PATCH 477/527] replaced "passed" by "ok" --- client/src/cmdlfem4x50.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index a3deb1417..522cece58 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -192,7 +192,7 @@ static void print_bit_table(const em4x50_word_t word) { strcat(string, pstring); // parities passed/failed - sprintf(pstring, (word.parity) ? _GREEN_("passed") : _RED_("failed")); + sprintf(pstring, (word.parity) ? _GREEN_("ok") : _RED_("failed")); strcat(string, pstring); PrintAndLogEx(NORMAL,string); From 601da777ad2719eb3cc413a5bf1c46be2b10df47 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Wed, 17 Jun 2020 23:38:49 +0200 Subject: [PATCH 478/527] replaced function msb2lsb(...) by already existing function reflect8(...) --- armsrc/em4x50.c | 21 +++++---------------- 1 file changed, 5 insertions(+), 16 deletions(-) diff --git a/armsrc/em4x50.c b/armsrc/em4x50.c index 60f271c21..eb2704a2c 100644 --- a/armsrc/em4x50.c +++ b/armsrc/em4x50.c @@ -12,6 +12,7 @@ #include "ticks.h" #include "dbprint.h" #include "lfadc.h" +#include "commonutil.h" #include "em4x50.h" // 4 data bytes @@ -118,28 +119,16 @@ static uint8_t bits2byte(uint8_t bits[8], int length) { return byte; } -static uint8_t msb2lsb(uint8_t byte) { - - // returns byte with bit positions in reverse order - - uint8_t tmp = 0; - - for (int i = 0; i < 8; i++) - tmp |= ((byte >> (7-i)) & 1) << i; - - return tmp; -} - static void msb2lsb_word(uint8_t *word) { // reorders given <word> according to EM4x50 datasheet (msb -> lsb) uint8_t buff[4]; - buff[0] = msb2lsb(word[3]); - buff[1] = msb2lsb(word[2]); - buff[2] = msb2lsb(word[1]); - buff[3] = msb2lsb(word[0]); + buff[0] = reflect8(word[3]); + buff[1] = reflect8(word[2]); + buff[2] = reflect8(word[1]); + buff[3] = reflect8(word[0]); word[0] = buff[0]; word[1] = buff[1]; From daa39dff0ebcedcc2e1a1deff3625899ac5271e8 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Wed, 17 Jun 2020 23:39:00 +0200 Subject: [PATCH 479/527] replaced function msb2lsb(...) by already existing function reflect8(...) --- client/src/cmdlfem4x50.c | 22 ++++++++++++---------- 1 file changed, 12 insertions(+), 10 deletions(-) diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index 522cece58..28f4f124e 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -12,6 +12,7 @@ #include <ctype.h> #include "fileutils.h" #include "comms.h" +#include "commonutil.h" #include "em4x50.h" #define EM4x50_FCT_STDREAD 0 @@ -58,6 +59,7 @@ int usage_lf_em4x50_write_password(void) { return PM3_SUCCESS; } +/* static uint8_t msb2lsb(uint8_t byte) { // convert given byte (msb) into lsb format @@ -69,7 +71,7 @@ static uint8_t msb2lsb(uint8_t byte) { return tmp; } - +*/ static bool check_bit_in_byte(uint8_t pos, uint8_t byte) { // return true if bit at position <pos> is "1" @@ -163,9 +165,9 @@ static void print_bit_table(const em4x50_word_t word) { strcat(string, pstring); if (j == 0) - sprintf(pstring, " msb: 0x%02x lsb: 0x%02x", word.byte[j], msb2lsb(word.byte[j])); + sprintf(pstring, " msb: 0x%02x lsb: 0x%02x", word.byte[j], reflect8(word.byte[j])); else - sprintf(pstring, " 0x%02x 0x%02x", word.byte[j], msb2lsb(word.byte[j])); + sprintf(pstring, " 0x%02x 0x%02x", word.byte[j], reflect8(word.byte[j])); strcat(string, pstring); PrintAndLogEx(NORMAL,string); @@ -229,7 +231,7 @@ static void print_result(const em4x50_word_t *words, int fwr, int lwr) { strcat(string, pstring); for (int j = 0; j < 4; j++) { - sprintf(pstring, _GREEN_("%02x"), msb2lsb(words[i].byte[3-j])); + sprintf(pstring, _GREEN_("%02x"), reflect8(words[i].byte[3-j])); strcat(string, pstring); } @@ -257,12 +259,12 @@ static void print_info_result(PacketResponseNG *resp, const em4x50_data_t *etd, bpwc = check_bit_in_byte(7, words[2].byte[2]); // password check braw = check_bit_in_byte(6, words[2].byte[2]); // read after write - fwr = msb2lsb(words[2].byte[0]); // first word read - lwr = msb2lsb(words[2].byte[1]); // last word read - fwrp = msb2lsb(words[1].byte[0]); // first word read protected - lwrp = msb2lsb(words[1].byte[1]); // last word read protected - fwwi = msb2lsb(words[1].byte[2]); // first word write inhibited - lwwi = msb2lsb(words[1].byte[3]); // last word write inhibited + fwr = reflect8(words[2].byte[0]); // first word read + lwr = reflect8(words[2].byte[1]); // last word read + fwrp = reflect8(words[1].byte[0]); // first word read protected + lwrp = reflect8(words[1].byte[1]); // last word read protected + fwwi = reflect8(words[1].byte[2]); // first word write inhibited + lwwi = reflect8(words[1].byte[3]); // last word write inhibited // data section PrintAndLogEx(NORMAL, _YELLOW_("\n em4x50 data:")); From a53c4a8a5bbc2c034d3f4341a5821f222b0d0e2e Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Wed, 17 Jun 2020 23:42:21 +0200 Subject: [PATCH 480/527] chg: adapt stack , run "lf search" on a blank t55xx now ok --- common_arm/ldscript.common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common_arm/ldscript.common b/common_arm/ldscript.common index c1fb5e848..443d9825d 100644 --- a/common_arm/ldscript.common +++ b/common_arm/ldscript.common @@ -9,7 +9,7 @@ ms of the GNU GPL, version 2 or, ----------------------------------------------------------------------------- */ -stacksize = DEFINED(stacksize) ? stacksize : 6K; +stacksize = DEFINED(stacksize) ? stacksize : 9K; commonareasize = 0x20; /* AT91SAM7S256 has 256k Flash and 64k RAM */ From 0d61572f6dc5821c90ba4f1916dc43f35ca7906f Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Wed, 17 Jun 2020 23:50:52 +0200 Subject: [PATCH 481/527] replaced old "SendCommandMIX" by "SendCommandNG" --- client/src/cmdlfem4x50.c | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index 28f4f124e..6a17796cd 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -456,7 +456,8 @@ int CmdEM4x50Info(const char *Cmd) { // call info command clearCommandBuffer(); - SendCommandMIX(CMD_LF_EM4X50_INFO, 0, 0, 0, &etd, sizeof(etd)); + SendCommandNG(CMD_LF_EM4X50_INFO, (uint8_t *)&etd, sizeof(etd)); + // get result if (!WaitForResponse(CMD_ACK, &resp)) { @@ -602,7 +603,8 @@ int CmdEM4x50Write(const char *Cmd) { return usage_lf_em4x50_write(); clearCommandBuffer(); - SendCommandMIX(CMD_LF_EM4X50_WRITE, 0, 0, 0, &etd, sizeof(etd)); + SendCommandNG(CMD_LF_EM4X50_WRITE, (uint8_t *)&etd, sizeof(etd)); + if (!WaitForResponse(CMD_ACK, &resp)) { PrintAndLogEx(WARNING, "\n timeout while waiting for reply.\n"); @@ -708,7 +710,7 @@ int CmdEM4x50WritePassword(const char *Cmd) { return usage_lf_em4x50_write_password(); clearCommandBuffer(); - SendCommandMIX(CMD_LF_EM4X50_WRITE_PASSWORD, 0, 0, 0, &etd, sizeof(etd)); + SendCommandNG(CMD_LF_EM4X50_WRITE_PASSWORD, (uint8_t *)&etd, sizeof(etd)); if (!WaitForResponse(CMD_ACK, &resp)) { PrintAndLogEx(WARNING, "\n timeout while waiting for reply.\n"); From 9393ecc823112a233e0e15a8bac2b1d18ba811a0 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Thu, 18 Jun 2020 00:07:40 +0200 Subject: [PATCH 482/527] added debug level for error messages --- armsrc/em4x50.c | 18 ++++++++++++------ 1 file changed, 12 insertions(+), 6 deletions(-) diff --git a/armsrc/em4x50.c b/armsrc/em4x50.c index eb2704a2c..692b17419 100644 --- a/armsrc/em4x50.c +++ b/armsrc/em4x50.c @@ -584,7 +584,8 @@ static bool login(uint8_t password[4]) { return true; } else { - Dbprintf("error in command request"); + if (DBGLEVEL >= DBG_ERROR) + Dbprintf("error in command request"); } return false; @@ -605,7 +606,8 @@ static bool reset(void) { return true; } else { - Dbprintf("error in command request"); + if (DBGLEVEL >= DBG_ERROR) + Dbprintf("error in command request"); } return false; @@ -634,7 +636,8 @@ static bool standard_read(int *now) { return true; } else { - Dbprintf("didn't find a listen window"); + if (DBGLEVEL >= DBG_ERROR) + Dbprintf("didn't find a listen window"); } return false; @@ -667,7 +670,8 @@ static bool selective_read(uint8_t addresses[4]) { return true; } else { - Dbprintf("error in command request"); + if (DBGLEVEL >= DBG_ERROR) + Dbprintf("error in command request"); } return false; @@ -736,7 +740,8 @@ static bool write(uint8_t word[4], uint8_t address) { } } else { - Dbprintf("error in command request"); + if (DBGLEVEL >= DBG_ERROR) + Dbprintf("error in command request"); } return false; @@ -774,7 +779,8 @@ static bool write_password(uint8_t password[4], uint8_t new_password[4]) { } } else { - Dbprintf("error in command request"); + if (DBGLEVEL >= DBG_ERROR) + Dbprintf("error in command request"); } return false; From e6be31529ac101db5e475bd286010767e11b75c9 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 18 Jun 2020 00:50:52 +0200 Subject: [PATCH 483/527] cmake: find bzip2 --- client/CMakeLists.txt | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 0de34d58f..5cfe0e4df 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -118,12 +118,10 @@ if(ANDROID) ExternalProject_Add_StepTargets(bzip2 configure build install) set(BZIP2_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/deps/bzip2/src/bzip2) set(BZIP2_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/deps/bzip2/src/bzip2/libbz2.a) -else() - set(BZIP2_LIBRARIES bz2) -endif(ANDROID) -if (BZIP2_LIBRARIES) set(BZIP2_FOUND ON) -endif (BZIP2_LIBRARIES) +else() + find_package (BZip2 REQUIRED) +endif(ANDROID) add_subdirectory(${PM3_ROOT}/client/deps deps) From 873724aefbd17f949ca4a6c5d47688af7d5e9d10 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 18 Jun 2020 00:51:26 +0200 Subject: [PATCH 484/527] update Makefile-vs-CMake table --- doc/md/Development/Makefile-vs-CMake.md | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/doc/md/Development/Makefile-vs-CMake.md b/doc/md/Development/Makefile-vs-CMake.md index 6c2432c70..6f17eca87 100644 --- a/doc/md/Development/Makefile-vs-CMake.md +++ b/doc/md/Development/Makefile-vs-CMake.md @@ -16,8 +16,7 @@ At the moment both are maintained because they don't perfectly overlap yet. | verbose | V=1 | VERBOSE=1 | | | warnings management | yes (1) | **no** | (1) cf Makefile.defs | | compilation | in place | in build dir | | -| user `CFLAGS`/`LDFLAGS` | honored (1) | **no/auto?** | (1) also `LDLIBS` and `INCLUDES_CLIENT` as envvars for more tuning | -| `PKG_CONFIG_ENV` | yes | **no/auto?** | | +| user `CFLAGS`/`LDFLAGS` | envvars honored (1) | envvars honored (2) | (1) also `LDLIBS` and `INCLUDES_CLIENT` for more tuning (2) only at first cmake call | | Mingw gnu printf | `_ISOC99_SOURCE` | `_ISOC99_SOURCE` | and in cbor.h: `__attribute__((format (__MINGW_PRINTF_FORMAT, 2, 3)))`| | C++ | c++11 | gnu++14 | | | dep amiibo | in_deps | in_deps | | @@ -27,10 +26,10 @@ At the moment both are maintained because they don't perfectly overlap yet. | bluez detection | pc | pkg_search_module | | | `SKIPBT` | yes | yes | | | dep bzip2 | sys | sys | | -| bzip2 detection | **none** | **none**, Android:gitclone | | +| bzip2 detection | **none** | find_package, Android:gitclone | | | dep cliparser | in_deps | in_deps | | | dep hardnested | in_deps | in_deps | | -| hardn arch autodetect | (1) | (2) | (1) uname -m == 86 or amd64; gcc -E -mavx512f? +-AVX512 (2) CMAKE_SYSTEM_PROCESSOR == x86 or x86_64 or i686 or AMD64 (always incl. AVX512) | +| hardn arch autodetect | `uname -m` =? 86 or amd64; `$(CC) -E -mavx512f`? +AVX512` | `CMAKE_SYSTEM_PROCESSOR` =? x86 or x86_64 or i686 or AMD64 (1) | (1) currently it always includes AVX512 on Intel arch | | `cpu_arch` | yes | **no/auto?** | e.g. `cpu_arch=generic` for cross-compilation | dep jansson | sys / in_deps | **in_deps only** | | | jansson detection | pc | **none** | | @@ -38,17 +37,17 @@ At the moment both are maintained because they don't perfectly overlap yet. | dep lua | sys / in_deps(1) | **in_deps only**(2) | (1) manual def of `LUAPLATFORM` for mingw/macosx/linux (2) manual, different?, for Android too | | lua detection | pc | **none** | | | `SKIPLUASYSTEM` | yes | **no** | | -| lualibs/pm3_cmd.lua | yes | **add_custom_command used?** | -| lualibs/mfc_default_keys.lua | yes | **add_custom_command used?** | -| dep lz4 | | | (in_common) not yet used, future | +| lualibs/pm3_cmd.lua | yes | add_custom_command **but unused** | | +| lualibs/mfc_default_keys.lua | yes | add_custom_command **but unused** | | +| dep lz4 | | | (in_common) not yet used, future. See `get_lz4.sh` for upstream fetch & patch | | dep libm | sys | sys | | -| libm detection | none | **none/auto?** | | +| libm detection | **none** | **none** (1) | (1) cf https://cmake.org/pipermail/cmake/2019-March/069168.html ? | | dep mbedtls | in_common | in_common | no sys lib: missing support for CMAC in def conf (btw no .pc available) | | dep python3 | opt, sys, <3.8 & 3.8 | opt, sys, <3.8 & 3.8 | | | python3 detection | pc | pkg_search_module | | | `SKIPPYTHON` | yes | yes | | | dep pthread | sys | sys | | -| pthread detection | **none** | **none** | | +| pthread detection | **none** | **none** (1) | (1) cf https://stackoverflow.com/questions/1620918/cmake-and-libpthread ? | | `SKIPPTHREAD` | yes | yes | e.g. for termux | | dep Qt | opt, sys, Qt5 & Qt4 | opt, sys, Qt5 | | | Qt detection | pc(qt5)/pc(qt4)/`QTDIR`(1) (2) | find_package(qt5) (3) | (1) if `QTDIR`: hardcode path (2) OSX: pkg-config hook for Brew (3) OSX: add search path| From cdf1bc3ce78380af647acac4696a7520c3c90ca5 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 18 Jun 2020 01:51:36 +0200 Subject: [PATCH 485/527] cmake: use system libwhereami if available --- client/CMakeLists.txt | 33 ++++++++++++++++++++++--- doc/md/Development/Makefile-vs-CMake.md | 6 ++--- 2 files changed, 32 insertions(+), 7 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 5cfe0e4df..21fa6f83d 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -123,6 +123,14 @@ else() find_package (BZip2 REQUIRED) endif(ANDROID) +if (NOT SKIPWHEREAMISYSTEM EQUAL 1) + find_path(WHEREAMI_INCLUDE_DIRS whereami.h) + find_library(WHEREAMI_LIBRARIES whereami) + if (WHEREAMI_INCLUDE_DIRS AND WHEREAMI_LIBRARIES) + set(WHEREAMI_FOUND ON) + endif (WHEREAMI_INCLUDE_DIRS AND WHEREAMI_LIBRARIES) +endif (NOT SKIPWHEREAMISYSTEM EQUAL 1) + add_subdirectory(${PM3_ROOT}/client/deps deps) set (TARGET_SOURCES @@ -327,13 +335,17 @@ if (NOT SKIPREADLINE EQUAL 1) set(ADDITIONAL_LNK ${READLINE_LIBRARIES} ${ADDITIONAL_LNK}) endif (READLINE_FOUND) endif(NOT SKIPREADLINE EQUAL 1) + if (BZIP2_FOUND) set(ADDITIONAL_DIRS ${BZIP2_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) set(ADDITIONAL_LNK ${BZIP2_LIBRARIES} ${ADDITIONAL_LNK}) -else (BZIP2_FOUND) - message(FATAL_ERROR "Bzip2 not found") endif (BZIP2_FOUND) +if (WHEREAMI_FOUND) + set(ADDITIONAL_DIRS ${WHEREAMI_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) + set(ADDITIONAL_LNK ${WHEREAMI_LIBRARIES} ${ADDITIONAL_LNK}) +endif (WHEREAMI_FOUND) + message("===================================================================") if (SKIPQT EQUAL 1) message("GUI support: skipped") @@ -376,6 +388,16 @@ else (SKIPREADLINE EQUAL 1) message("Readline library: Readline not found, disabled") endif (READLINE_FOUND) endif(SKIPREADLINE EQUAL 1) + +if (SKIPWHEREAMISYSTEM EQUAL 1) + message("Whereami library: local library forced") +else (SKIPWHEREAMISYSTEM EQUAL 1) + if (WHEREAMI_FOUND) + message("Whereami library: system library found") + else (WHEREAMI_FOUND) + message("Whereami library: system library not found, using local library") + endif (WHEREAMI_FOUND) +endif (SKIPWHEREAMISYSTEM EQUAL 1) message("===================================================================") add_executable(proxmark3 @@ -425,7 +447,11 @@ find_library(pm3rrg_rdv4_lua REQUIRED) find_library(pm3rrg_rdv4_mbedtls REQUIRED) find_library(pm3rrg_rdv4_reveng REQUIRED) find_library(pm3rrg_rdv4_hardnested REQUIRED) -find_library(pm3rrg_rdv4_whereami REQUIRED) + +if (NOT WHEREAMI_FOUND) + find_library(pm3rrg_rdv4_whereami REQUIRED) + set(ADDITIONAL_LNK pm3rrg_rdv4_whereami ${ADDITIONAL_LNK}) +endif (NOT WHEREAMI_FOUND) target_link_libraries(proxmark3 PRIVATE m @@ -437,7 +463,6 @@ target_link_libraries(proxmark3 PRIVATE pm3rrg_rdv4_amiibo pm3rrg_rdv4_reveng pm3rrg_rdv4_hardnested - pm3rrg_rdv4_whereami ${ADDITIONAL_LNK}) if (NOT SKIPPTHREAD EQUAL 1) diff --git a/doc/md/Development/Makefile-vs-CMake.md b/doc/md/Development/Makefile-vs-CMake.md index 6f17eca87..2cdc969bd 100644 --- a/doc/md/Development/Makefile-vs-CMake.md +++ b/doc/md/Development/Makefile-vs-CMake.md @@ -58,9 +58,9 @@ At the moment both are maintained because they don't perfectly overlap yet. | dep reveng | in_deps | in_deps | | | `SKIPREVENGTEST` | yes(1) | **no**(2) | (1) e.g. if cross-compilation (2) tests aren't compiled/ran with cmake | | dep tinycbor | in_deps | in_deps | | -| dep whereami | sys / in_deps | **in_deps only** | | -| whereami detection | **search /usr/include/whereami.h** | **none** | no .pc available | -| `SKIPWHEREAMISYSTEM` | yes | **no** | | +| dep whereami | sys / in_deps | sys / in_deps | | +| whereami detection | **search /usr/include/whereami.h** | find* | no .pc available | +| `SKIPWHEREAMISYSTEM` | yes | yes | | | version | mkversion | mkversion | | | install | yes (1) | **no** | (1) supports `DESTDIR`, `PREFIX`, `UDEV_PREFIX`. Installs resources as well, `INSTALL*RELPATH` | | deb | no | partial? | | From 3106fa3d3dfd6e8856b163ef746cf822b96c7f3a Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 18 Jun 2020 02:06:03 +0200 Subject: [PATCH 486/527] cmake: use system libjansson if available --- client/CMakeLists.txt | 37 +++++++++++++++++++++++-- doc/md/Development/Makefile-vs-CMake.md | 6 ++-- 2 files changed, 37 insertions(+), 6 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 21fa6f83d..12f709caf 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -20,6 +20,8 @@ if(CMAKE_VERSION VERSION_LESS "3.7.0") set(CMAKE_INCLUDE_CURRENT_DIR ON) endif() +find_package(PkgConfig) + if (NOT SKIPQT EQUAL 1) if(APPLE AND EXISTS /usr/local/opt/qt5) # Homebrew installs Qt5 (up to at least 5.11.0) in @@ -46,7 +48,6 @@ if (NOT SKIPQT EQUAL 1) endforeach() endif (NOT SKIPQT EQUAL 1) -find_package(PkgConfig) if (NOT SKIPBT EQUAL 1) pkg_search_module(BLUEZ QUIET bluez) endif (NOT SKIPBT EQUAL 1) @@ -102,6 +103,19 @@ if (NOT SKIPREADLINE EQUAL 1) endif (READLINE_INCLUDE_DIRS AND READLINE_LIBRARIES) endif (NOT SKIPREADLINE EQUAL 1) +if (NOT SKIPJANSSONSYSTEM EQUAL 1) + pkg_check_modules(PC_JANSSON QUIET jansson) + find_path(JANSSON_INCLUDE_DIRS + NAMES jansson.h + HINTS ${PC_JANSSON_INCLUDEDIR} ${PC_JANSSON_INCLUDE_DIRS}) + find_library(JANSSON_LIBRARIES + NAMES jansson libjansson + HINTS ${PC_JANSSON_LIBDIR} ${PC_JANSSON_LIBRARY_DIRS}) + if (JANSSON_INCLUDE_DIRS AND JANSSON_LIBRARIES) + set(JANSSON_FOUND ON) + endif (JANSSON_INCLUDE_DIRS AND JANSSON_LIBRARIES) +endif (NOT SKIPJANSSONSYSTEM EQUAL 1) + if(ANDROID) set(BZIP2_BUILD_DIR ${CMAKE_CURRENT_BINARY_DIR}/deps/bzip2/src/bzip2) ExternalProject_Add(bzip2 @@ -314,6 +328,11 @@ if (NOT SKIPBT EQUAL 1) endif (BLUEZ_FOUND) endif(NOT SKIPBT EQUAL 1) +if (JANSSON_FOUND) + set(ADDITIONAL_DIRS ${JANSSON_INCLUDE_DIRS} ${ADDITIONAL_DIRS}) + set(ADDITIONAL_LNK ${JANSSON_LIBRARIES} ${ADDITIONAL_LNK}) +endif (JANSSON_FOUND) + if (NOT SKIPPYTHON EQUAL 1) if (PYTHON3EMBED_FOUND) add_definitions(-DHAVE_PYTHON) @@ -367,6 +386,16 @@ else (SKIPBT EQUAL 1) endif (BLUEZ_FOUND) endif(SKIPBT EQUAL 1) +if (SKIPJANSSONSYSTEM EQUAL 1) + message("Jansson library: local library forced") +else (SKIPJANSSONSYSTEM EQUAL 1) + if (JANSSON_FOUND) + message("Jansson library: system library found") + else (JANSSON_FOUND) + message("Jansson library: system library not found, using local library") + endif (JANSSON_FOUND) +endif (SKIPJANSSONSYSTEM EQUAL 1) + if (SKIPPYTHON EQUAL 1) message("Python3 library: skipped") else (SKIPPYTHON EQUAL 1) @@ -441,13 +470,16 @@ endif (NOT APPLE) find_library(pm3rrg_rdv4_cliparser REQUIRED) -find_library(pm3rrg_rdv4_jansson REQUIRED) find_library(pm3rrg_rdv4_tinycbor REQUIRED) find_library(pm3rrg_rdv4_lua REQUIRED) find_library(pm3rrg_rdv4_mbedtls REQUIRED) find_library(pm3rrg_rdv4_reveng REQUIRED) find_library(pm3rrg_rdv4_hardnested REQUIRED) +if (NOT JANSSON_FOUND) + find_library(pm3rrg_rdv4_jansson REQUIRED) + set(ADDITIONAL_LNK pm3rrg_rdv4_jansson ${ADDITIONAL_LNK}) +endif (NOT JANSSON_FOUND) if (NOT WHEREAMI_FOUND) find_library(pm3rrg_rdv4_whereami REQUIRED) set(ADDITIONAL_LNK pm3rrg_rdv4_whereami ${ADDITIONAL_LNK}) @@ -457,7 +489,6 @@ target_link_libraries(proxmark3 PRIVATE m pm3rrg_rdv4_mbedtls pm3rrg_rdv4_cliparser - pm3rrg_rdv4_jansson pm3rrg_rdv4_lua pm3rrg_rdv4_tinycbor pm3rrg_rdv4_amiibo diff --git a/doc/md/Development/Makefile-vs-CMake.md b/doc/md/Development/Makefile-vs-CMake.md index 2cdc969bd..98a7b0dde 100644 --- a/doc/md/Development/Makefile-vs-CMake.md +++ b/doc/md/Development/Makefile-vs-CMake.md @@ -31,9 +31,9 @@ At the moment both are maintained because they don't perfectly overlap yet. | dep hardnested | in_deps | in_deps | | | hardn arch autodetect | `uname -m` =? 86 or amd64; `$(CC) -E -mavx512f`? +AVX512` | `CMAKE_SYSTEM_PROCESSOR` =? x86 or x86_64 or i686 or AMD64 (1) | (1) currently it always includes AVX512 on Intel arch | | `cpu_arch` | yes | **no/auto?** | e.g. `cpu_arch=generic` for cross-compilation -| dep jansson | sys / in_deps | **in_deps only** | | -| jansson detection | pc | **none** | | -| `SKIPJANSSONSYSTEM` | yes | **no** | | +| dep jansson | sys / in_deps | sys / in_deps | | +| jansson detection | pc | pc/find* | | +| `SKIPJANSSONSYSTEM` | yes | yes | | | dep lua | sys / in_deps(1) | **in_deps only**(2) | (1) manual def of `LUAPLATFORM` for mingw/macosx/linux (2) manual, different?, for Android too | | lua detection | pc | **none** | | | `SKIPLUASYSTEM` | yes | **no** | | From 8bcdecb7f968aaee8166387eae3c4083df84ed11 Mon Sep 17 00:00:00 2001 From: dxl <64101226@qq.com> Date: Thu, 18 Jun 2020 15:46:44 +0800 Subject: [PATCH 487/527] Disable external libary compile warnning. --- client/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 12f709caf..ce73135dc 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -59,7 +59,7 @@ endif (NOT SKIPPYTHON EQUAL 1) # If build on android cross, we need to init source and build. if (ANDROID) - set(CFLAGS_EXTERNAL_LIB CFLAGS=--target=${CMAKE_C_COMPILER_TARGET}) + set(CFLAGS_EXTERNAL_LIB "CFLAGS=--target=${CMAKE_C_COMPILER_TARGET} -w") include(ExternalProject) endif (ANDROID) From 490d5d26aedaa097c7ab99700ff9b125265c7d61 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 18 Jun 2020 09:57:50 +0200 Subject: [PATCH 488/527] minor --- client/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 12f709caf..ff4bd2ae3 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -5,7 +5,7 @@ # pacman -S mingw-w64-x86_64-cmake # /mingw64/bin/cmake -G"MSYS Makefiles" .. # -# Android cross-compilation: +# Android cross-compilation: (ANDROID_ABI=arm64-v8a for a 64b version) # cmake \ # -DCMAKE_TOOLCHAIN_FILE=<path-to-your-android-ndk>/build/cmake/android.toolchain.cmake \ # -DANDROID_ABI=armeabi-v7a \ From 04517b3fe1395ade4a7e11cabca203df99a32ff4 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 18 Jun 2020 10:00:44 +0200 Subject: [PATCH 489/527] minor --- client/CMakeLists.txt | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index ff4bd2ae3..e0dbc4a9e 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -1,3 +1,9 @@ +# Usage: +# mkdir build +# cd build +# cmake .. (see below for options) +# make (VERBOSE=1 if needed) +# # MINGW: # On ProxSpace 3.4: # cmake -G"MSYS Makefiles" .. From be9a5920d8fd12d36ea3f9f0b681caf27f232d02 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 18 Jun 2020 11:05:21 +0200 Subject: [PATCH 490/527] chg: downloading samples more fine grained --- client/src/cmddata.c | 21 +++++++++++++++++---- client/src/cmddata.h | 3 +++ 2 files changed, 20 insertions(+), 4 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 007c32c8a..ce767da09 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -1593,6 +1593,16 @@ static uint8_t getByte(uint8_t bits_per_sample, BitstreamOut *b) { } int getSamples(uint32_t n, bool verbose) { + return getSamplesEx(0, n, verbose); +} + +int getSamplesEx(uint32_t start, uint32_t end, bool verbose) { + + if (end < start) { + PrintAndLogEx(WARNING, "error, end (%u) is smaller than start (%u)", end, start); + return PM3_EINVARG; + } + //If we get all but the last byte in bigbuf, // we don't have to worry about remaining trash // in the last byte in case the bits-per-sample @@ -1600,13 +1610,16 @@ int getSamples(uint32_t n, bool verbose) { uint8_t got[pm3_capabilities.bigbuf_size - 1]; memset(got, 0x00, sizeof(got)); - if (n == 0 || n > pm3_capabilities.bigbuf_size - 1) + uint32_t n = end - start; + + if (n <= 0 || n > pm3_capabilities.bigbuf_size - 1) n = pm3_capabilities.bigbuf_size - 1; - if (verbose) PrintAndLogEx(INFO, "Reading " _YELLOW_("%u") " bytes from device memory", n); + if (verbose) + PrintAndLogEx(INFO, "Reading " _YELLOW_("%u") " bytes from device memory", n); PacketResponseNG response; - if (!GetFromDevice(BIG_BUF, got, n, 0, NULL, 0, &response, 10000, true)) { + if (!GetFromDevice(BIG_BUF, got, n, start, NULL, 0, &response, 10000, true)) { PrintAndLogEx(WARNING, "timeout while waiting for reply."); return PM3_ETIMEOUT; } @@ -2305,7 +2318,7 @@ static int CmdDataNDEF(const char *Cmd) { arg_strx0("dD", "data", "<hex>", "NDEF data to decode"), arg_param_end }; - CLIExecWithReturn(ctx, Cmd, argtable, true); + CLIExecWithReturn(ctx, Cmd, argtable, false); int datalen = 0; uint8_t data[MAX_NDEF_LEN] = {0}; diff --git a/client/src/cmddata.h b/client/src/cmddata.h index abef8fde8..acda950a5 100644 --- a/client/src/cmddata.h +++ b/client/src/cmddata.h @@ -72,7 +72,10 @@ void setDemodBuff(uint8_t *buff, size_t size, size_t start_idx); bool getDemodBuff(uint8_t *buff, size_t *size); void save_restoreDB(uint8_t saveOpt);// option '1' to save DemodBuffer any other to restore int AutoCorrelate(const int *in, int *out, size_t len, size_t window, bool SaveGrph, bool verbose); + int getSamples(uint32_t n, bool verbose); +int getSamplesEx(uint32_t start, uint32_t end, bool verbose); + void setClockGrid(uint32_t clk, int offset); int directionalThreshold(const int *in, int *out, size_t len, int8_t up, int8_t down); int AskEdgeDetect(const int *in, int *out, int len, int threshold); From e1f0f89240f7e90403c87b6692ca469030d0a907 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 18 Jun 2020 11:54:19 +0200 Subject: [PATCH 491/527] chg: 'hf sniff' - remake to mallc and report back size, also use NG --- armsrc/hfsnoop.c | 68 +++++++++++++++++++++++++++++----------------- armsrc/hfsnoop.h | 4 ++- client/src/cmdhf.c | 50 ++++++++++++++++++++++++++++++++-- 3 files changed, 93 insertions(+), 29 deletions(-) diff --git a/armsrc/hfsnoop.c b/armsrc/hfsnoop.c index 770280b9b..b21ca2f83 100644 --- a/armsrc/hfsnoop.c +++ b/armsrc/hfsnoop.c @@ -18,29 +18,21 @@ #include "appmain.h" #include "cmd.h" -static void RAMFUNC optimizedSniff(void) { - int n = BigBuf_max_traceLen() / sizeof(uint16_t); // take all memory - - uint16_t *dest = (uint16_t *)BigBuf_get_addr(); - uint16_t *destend = dest + n - 1; - - // Reading data loop - while (dest <= destend) { +static void RAMFUNC optimizedSniff(uint16_t *dest, uint16_t dsize) { + for (;dsize > 0; dsize -= sizeof(dsize)) { if (AT91C_BASE_SSC->SSC_SR & AT91C_SSC_RXRDY) { *dest = (uint16_t)(AT91C_BASE_SSC->SSC_RHR); dest++; } } - //setting tracelen - important! it was set by buffer overflow before - set_tracelen(BigBuf_max_traceLen()); + Dbprintf("collected %u samples", dsize); } -void HfSniff(int samplesToSkip, int triggersToSkip) { +int HfSniff(uint32_t samplesToSkip, uint32_t triggersToSkip, uint16_t *len) { BigBuf_free(); - BigBuf_Clear(); + BigBuf_Clear_ext(false); - Dbprintf("Skipping first %d sample pairs, Skipping %d triggers.\n", samplesToSkip, triggersToSkip); - int trigger_cnt = 0; + Dbprintf("Skipping first %d sample pairs, Skipping %d triggers", samplesToSkip, triggersToSkip); LED_D_ON(); @@ -57,37 +49,63 @@ void HfSniff(int samplesToSkip, int triggersToSkip) { FpgaWriteConfWord(FPGA_MAJOR_MODE_HF_SNOOP); SpinDelay(100); - uint16_t r = 0; - while (!BUTTON_PRESS() && !data_available()) { + *len = (BigBuf_max_traceLen() & 0xFFFE); + uint8_t *mem = BigBuf_malloc(*len); + + int trigger_cnt = 0; + uint16_t r = 0, interval = 0; + + + bool pressed = false; + while (pressed == false) { WDT_HIT(); + // cancel w usb command. + if (interval == 1000) { + if (data_available()) + break; + interval = 0; + } else { + interval++; + } + + // check if trigger is reached if (AT91C_BASE_SSC->SSC_SR & (AT91C_SSC_RXRDY)) { r = (uint16_t)AT91C_BASE_SSC->SSC_RHR; - r = MAX(r & 0xff, r >> 8); - if (r >= 180) { // 0xB4 ?? + + r = MAX(r & 0xFF, r >> 8); + + // 180 (0xB4) arbitary value to see if a strong RF field is near. + if (r > 180) { if (++trigger_cnt > triggersToSkip) break; } } + + pressed = BUTTON_PRESS(); } - if (!BUTTON_PRESS()) { - int waitcount = samplesToSkip; // lets wait 40000 ticks of pck0 + if (pressed == false) { + + // skip samples loop + int waitcount = samplesToSkip; while (waitcount != 0) { if (AT91C_BASE_SSC->SSC_SR & (AT91C_SSC_RXRDY)) waitcount--; } - optimizedSniff(); - Dbprintf("Trigger kicked! Value: %d, Dumping Samples Hispeed now.", r); + + optimizedSniff((uint16_t*)mem, (*len) >> 2); + + Dbprintf("Trigger kicked in (%d >= 180)", r); } //Resetting Frame mode (First set in fpgaloader.c) AT91C_BASE_SSC->SSC_RFMR = SSC_FRAME_MODE_BITS_IN_WORD(8) | AT91C_SSC_MSBF | SSC_FRAME_MODE_WORDS_PER_TRANSFER(0); - - DbpString("HF Sniffing end"); - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); LED_D_OFF(); + FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + BigBuf_free(); + return (pressed) ? PM3_EOPABORTED : PM3_SUCCESS; } void HfPlotDownload(void) { diff --git a/armsrc/hfsnoop.h b/armsrc/hfsnoop.h index 049536940..8ed263fa5 100644 --- a/armsrc/hfsnoop.h +++ b/armsrc/hfsnoop.h @@ -12,6 +12,8 @@ #ifndef __HFSNOOP_H #define __HFSNOOP_H -void HfSniff(int, int); +#include "proxmark3_arm.h" + +int HfSniff(uint32_t samplesToSkip, uint32_t triggersToSkip, uint16_t *len); void HfPlotDownload(void); #endif diff --git a/client/src/cmdhf.c b/client/src/cmdhf.c index 6b11a30da..1579e39c6 100644 --- a/client/src/cmdhf.c +++ b/client/src/cmdhf.c @@ -241,15 +241,59 @@ int CmdHFTune(const char *Cmd) { return PM3_SUCCESS; } +// Collects pars of u8, +// uses 16bit transfers from FPGA for speed +// Takes all available bigbuff memory +// data sample to download? Not sure what we can do with the data. int CmdHFSniff(const char *Cmd) { char cmdp = tolower(param_getchar(Cmd, 0)); if (cmdp == 'h') return usage_hf_sniff(); - int skippairs = param_get32ex(Cmd, 0, 0, 10); - int skiptriggers = param_get32ex(Cmd, 1, 0, 10); + struct { + uint32_t samplesToSkip; + uint32_t triggersToSkip; + } PACKED params; + + params.samplesToSkip = param_get32ex(Cmd, 0, 0, 10); + params.triggersToSkip = param_get32ex(Cmd, 1, 0, 10); clearCommandBuffer(); - SendCommandMIX(CMD_HF_SNIFF, skippairs, skiptriggers, 0, NULL, 0); + SendCommandNG(CMD_HF_SNIFF, (uint8_t*)¶ms, sizeof(params)); + + for (;;) { + + if (kbd_enter_pressed()) { + PrintAndLogEx(INFO, "User aborted"); + break; + } + + PacketResponseNG resp; + if (WaitForResponseTimeout(CMD_HF_SNIFF, &resp, 4000)) { + + if (resp.status == PM3_EOPABORTED) { + break; + } + if (resp.status == PM3_SUCCESS) { + + uint16_t len = resp.data.asDwords[0] & 0xFFFF; + PrintAndLogEx(INFO, "HF sniff len %u bytes", len); + PrintAndLogEx(HINT, "Use `" _YELLOW_("data plot") "` to view"); + PrintAndLogEx(HINT, "Use `" _YELLOW_("data save") "` to save"); + + // download bigbuf_malloced.. + // it reservs mem from the higher range. ie we can't start from beginning idx 0. + // but from + uint32_t start = pm3_capabilities.bigbuf_size - len; + int res = getSamplesEx(start, start + len, false); + if (res != PM3_SUCCESS) { + PrintAndLogEx(WARNING, "failed to download samples to client"); + return res; + } + break; + } + } + } + PrintAndLogEx(INFO, "Done."); return PM3_SUCCESS; } From da00cc040518dd8fabaf5f2dc36e87ff172c3c4d Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Thu, 18 Jun 2020 11:55:27 +0200 Subject: [PATCH 492/527] chg: print stack fct and hfsniff --- armsrc/appmain.c | 30 ++++++++++++++++++++++-------- armsrc/appmain.h | 1 + 2 files changed, 23 insertions(+), 8 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 80eb673f2..38f8dcec5 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -242,6 +242,16 @@ static uint32_t MeasureAntennaTuningLfData(void) { return (MAX_ADC_LF_VOLTAGE * (SumAdc(ADC_CHAN_LF, 32) >> 1)) >> 14; } +void print_stack_usage(void) { + // pointer arithmetic is times 4. (two shifts to the left) + for (uint32_t *p = &_stack_start; ; ++p) { + if (*p != 0xdeadbeef) { + Dbprintf(" Max stack usage.........%d / %d bytes", (&_stack_end - p) << 2, (&_stack_end - &_stack_start) << 2); + break; + } + } +} + void ReadMem(int addr) { const uint8_t *data = ((uint8_t *)addr); @@ -361,13 +371,9 @@ static void SendStatus(void) { #endif printConnSpeed(); DbpString(_CYAN_("Various")); - // pointer arithmetic is times 4. (two shifts to the left) - for (uint32_t *p = &_stack_start; ; ++p) { - if (*p != 0xdeadbeef) { - Dbprintf(" Max stack usage.........%d / %d bytes", (&_stack_end - p) << 2, (&_stack_end - &_stack_start) << 2); - break; - } - } + + print_stack_usage(); + Dbprintf(" DBGLEVEL................%d", DBGLEVEL); Dbprintf(" ToSendMax...............%d", ToSendMax); Dbprintf(" ToSendBit...............%d", ToSendBit); @@ -1410,7 +1416,15 @@ static void PacketReceived(PacketCommandNG *packet) { #ifdef WITH_HFSNIFF case CMD_HF_SNIFF: { - HfSniff(packet->oldarg[0], packet->oldarg[1]); + struct p { + uint32_t samplesToSkip; + uint32_t triggersToSkip; + } PACKED; + struct p *payload = (struct p *)packet->data.asBytes; + + uint16_t len = 0; + int res = HfSniff(payload->samplesToSkip, payload->triggersToSkip, &len); + reply_ng(CMD_HF_SNIFF, res, (uint8_t *)&len, sizeof(len)); break; } #endif diff --git a/armsrc/appmain.h b/armsrc/appmain.h index 6a650f163..594723983 100644 --- a/armsrc/appmain.h +++ b/armsrc/appmain.h @@ -39,5 +39,6 @@ void ToSendReset(void); void ListenReaderField(uint8_t limit); void StandAloneMode(void); void printStandAloneModes(void); +void print_stack_usage(void); #endif From 171bf6912bfeb405e6fb00aaada5641874008893 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Thu, 18 Jun 2020 13:53:25 +0200 Subject: [PATCH 493/527] deleted function msb2lsb --- client/src/cmdlfem4x50.c | 13 ------------- 1 file changed, 13 deletions(-) diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index 6a17796cd..44103da05 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -59,19 +59,6 @@ int usage_lf_em4x50_write_password(void) { return PM3_SUCCESS; } -/* -static uint8_t msb2lsb(uint8_t byte) { - - // convert given byte (msb) into lsb format - - uint8_t tmp = 0; - - for (int i = 0; i < 8; i++) - tmp |= ((byte >> (7-i)) & 1) << i; - - return tmp; -} -*/ static bool check_bit_in_byte(uint8_t pos, uint8_t byte) { // return true if bit at position <pos> is "1" From 94edc41c3c794e7a1b9b2f5e1cde3fdef6c69835 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 18 Jun 2020 16:01:41 +0200 Subject: [PATCH 494/527] cmake android: add statically terminfo stuff, so no need for termux or similar to be installed --- client/CMakeLists.txt | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index bfdcbb982..a03199b5f 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -79,7 +79,7 @@ if (NOT SKIPREADLINE EQUAL 1) URL http://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.0.tar.gz PREFIX deps/ncurses DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/ncurses - CONFIGURE_COMMAND ./configure CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} LD=${CMAKE_C_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} ${CFLAGS_EXTERNAL_LIB} --host=arm + CONFIGURE_COMMAND ./configure CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} LD=${CMAKE_C_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} ${CFLAGS_EXTERNAL_LIB} --host=arm --disable-database --with-fallbacks=ansi-generic,ansi-mini,color_xterm,dtterm,dumb,Eterm,Eterm-256color,Eterm-88color,eterm-color,gnome,gnome-256color,guru,hurd,iTerm.app,konsole,konsole-16color,konsole-256color,konsole-base,konsole-linux,konsole-solaris,konsole-vt100,kterm,kterm-color,linux,linux-16color,linux-basic,mac,mlterm,mlterm-256color,mrxvt,mrxvt-256color,mterm,mterm-ansi,mvterm,nsterm,nsterm-16color,nsterm-256color,pty,putty,putty-256color,putty-vt100,rxvt,rxvt-16color,rxvt-256color,rxvt-88color,rxvt-basic,rxvt-color,screen,screen-16color,screen-256color,simpleterm,st-16color,st-256color,st52,st52-color,stv52,tt,tt52,unknown,vt100,vt102,vte,vte-256color,xterm,xterm-16color,xterm-256color,xterm-88color,xterm-basic,xterm-bold,xterm-color,xterm-utf8,xterm-vt220,xterm-vt52,xterm1,xtermc,xtermm --enable-termcap --without-ada --without-debug --without-dlsym --without-gpm --without-develop --without-tests --without-cxx-binding BUILD_IN_SOURCE ON BUILD_COMMAND make -j2 libs INSTALL_COMMAND "" From f70b94c4aa9095162ed67eb685bda9b5f819eb1f Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 18 Jun 2020 16:02:27 +0200 Subject: [PATCH 495/527] cmake android: remove make -j2 overruling main make --- client/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index a03199b5f..562721a73 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -81,7 +81,7 @@ if (NOT SKIPREADLINE EQUAL 1) DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/ncurses CONFIGURE_COMMAND ./configure CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} LD=${CMAKE_C_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} ${CFLAGS_EXTERNAL_LIB} --host=arm --disable-database --with-fallbacks=ansi-generic,ansi-mini,color_xterm,dtterm,dumb,Eterm,Eterm-256color,Eterm-88color,eterm-color,gnome,gnome-256color,guru,hurd,iTerm.app,konsole,konsole-16color,konsole-256color,konsole-base,konsole-linux,konsole-solaris,konsole-vt100,kterm,kterm-color,linux,linux-16color,linux-basic,mac,mlterm,mlterm-256color,mrxvt,mrxvt-256color,mterm,mterm-ansi,mvterm,nsterm,nsterm-16color,nsterm-256color,pty,putty,putty-256color,putty-vt100,rxvt,rxvt-16color,rxvt-256color,rxvt-88color,rxvt-basic,rxvt-color,screen,screen-16color,screen-256color,simpleterm,st-16color,st-256color,st52,st52-color,stv52,tt,tt52,unknown,vt100,vt102,vte,vte-256color,xterm,xterm-16color,xterm-256color,xterm-88color,xterm-basic,xterm-bold,xterm-color,xterm-utf8,xterm-vt220,xterm-vt52,xterm1,xtermc,xtermm --enable-termcap --without-ada --without-debug --without-dlsym --without-gpm --without-develop --without-tests --without-cxx-binding BUILD_IN_SOURCE ON - BUILD_COMMAND make -j2 libs + BUILD_COMMAND make libs INSTALL_COMMAND "" LOG_DOWNLOAD ON ) @@ -93,7 +93,7 @@ if (NOT SKIPREADLINE EQUAL 1) DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/readline CONFIGURE_COMMAND ./configure CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} LD=${CMAKE_C_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} ${CFLAGS_EXTERNAL_LIB} --host=arm --enable-static BUILD_IN_SOURCE ON - BUILD_COMMAND make -j2 + BUILD_COMMAND make INSTALL_COMMAND "" LOG_DOWNLOAD ON ) From 0c17413a9668ae4c2d561756409c52dfcfdea4e8 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 18 Jun 2020 16:19:54 +0200 Subject: [PATCH 496/527] cmake android: we only need libtinfo, not full libncurses --- client/CMakeLists.txt | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 562721a73..3529754a5 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -79,7 +79,7 @@ if (NOT SKIPREADLINE EQUAL 1) URL http://ftp.gnu.org/pub/gnu/ncurses/ncurses-6.0.tar.gz PREFIX deps/ncurses DOWNLOAD_DIR ${CMAKE_CURRENT_SOURCE_DIR}/deps/ncurses - CONFIGURE_COMMAND ./configure CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} LD=${CMAKE_C_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} ${CFLAGS_EXTERNAL_LIB} --host=arm --disable-database --with-fallbacks=ansi-generic,ansi-mini,color_xterm,dtterm,dumb,Eterm,Eterm-256color,Eterm-88color,eterm-color,gnome,gnome-256color,guru,hurd,iTerm.app,konsole,konsole-16color,konsole-256color,konsole-base,konsole-linux,konsole-solaris,konsole-vt100,kterm,kterm-color,linux,linux-16color,linux-basic,mac,mlterm,mlterm-256color,mrxvt,mrxvt-256color,mterm,mterm-ansi,mvterm,nsterm,nsterm-16color,nsterm-256color,pty,putty,putty-256color,putty-vt100,rxvt,rxvt-16color,rxvt-256color,rxvt-88color,rxvt-basic,rxvt-color,screen,screen-16color,screen-256color,simpleterm,st-16color,st-256color,st52,st52-color,stv52,tt,tt52,unknown,vt100,vt102,vte,vte-256color,xterm,xterm-16color,xterm-256color,xterm-88color,xterm-basic,xterm-bold,xterm-color,xterm-utf8,xterm-vt220,xterm-vt52,xterm1,xtermc,xtermm --enable-termcap --without-ada --without-debug --without-dlsym --without-gpm --without-develop --without-tests --without-cxx-binding + CONFIGURE_COMMAND ./configure CC=${CMAKE_C_COMPILER} CXX=${CMAKE_CXX_COMPILER} LD=${CMAKE_C_COMPILER} AR=${CMAKE_AR} RANLIB=${CMAKE_RANLIB} ${CFLAGS_EXTERNAL_LIB} --host=arm --disable-database --with-fallbacks=ansi-generic,ansi-mini,color_xterm,dtterm,dumb,Eterm,Eterm-256color,Eterm-88color,eterm-color,gnome,gnome-256color,guru,hurd,iTerm.app,konsole,konsole-16color,konsole-256color,konsole-base,konsole-linux,konsole-solaris,konsole-vt100,kterm,kterm-color,linux,linux-16color,linux-basic,mac,mlterm,mlterm-256color,mrxvt,mrxvt-256color,mterm,mterm-ansi,mvterm,nsterm,nsterm-16color,nsterm-256color,pty,putty,putty-256color,putty-vt100,rxvt,rxvt-16color,rxvt-256color,rxvt-88color,rxvt-basic,rxvt-color,screen,screen-16color,screen-256color,simpleterm,st-16color,st-256color,st52,st52-color,stv52,tt,tt52,unknown,vt100,vt102,vte,vte-256color,xterm,xterm-16color,xterm-256color,xterm-88color,xterm-basic,xterm-bold,xterm-color,xterm-utf8,xterm-vt220,xterm-vt52,xterm1,xtermc,xtermm --enable-termcap --without-ada --without-debug --without-dlsym --without-gpm --without-develop --without-tests --without-cxx-binding --with-termlib BUILD_IN_SOURCE ON BUILD_COMMAND make libs INSTALL_COMMAND "" @@ -99,7 +99,7 @@ if (NOT SKIPREADLINE EQUAL 1) ) ExternalProject_Add_StepTargets(readline configure build install) set(READLINE_INCLUDE_DIRS ${CMAKE_CURRENT_BINARY_DIR}/deps/readline/src/) - set(READLINE_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/deps/readline/src/readline/libreadline.a ${CMAKE_CURRENT_BINARY_DIR}/deps/ncurses/src/ncurses/lib/libncurses.a) + set(READLINE_LIBRARIES ${CMAKE_CURRENT_BINARY_DIR}/deps/readline/src/readline/libreadline.a ${CMAKE_CURRENT_BINARY_DIR}/deps/ncurses/src/ncurses/lib/libtinfo.a) else (ANDROID) find_path(READLINE_INCLUDE_DIRS readline/readline.h) find_library(READLINE_LIBRARIES readline) From 35cfd4931faebe807c3ecc7758b1eed72e8f65a8 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 18 Jun 2020 17:55:09 +0200 Subject: [PATCH 497/527] remove debug statement --- client/src/proxmark3.c | 1 - 1 file changed, 1 deletion(-) diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index e13c79591..d2840a1f7 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -477,7 +477,6 @@ static void set_my_user_directory(void) { free(cwd_buffer); return; } - PrintAndLogEx(NORMAL, "Len... %d", pathLen); } if (!error) { From b2a6fca0ee1d26ba68a32bd2b8017d7c252837a6 Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 18 Jun 2020 19:27:33 +0200 Subject: [PATCH 498/527] Fix bug when cmake android and CMAKE_BUILD_TYPE=Release, see comments: The presence of "filter" from crypto1.c as an exported function depends on the chosen compilation optimization level. So if the common/crapto1/ and the code using it (here hardnested) are not using the same level, there will be a mismatch, in this case hardnested_bruteforce.c expecting crypto1.c to provide filter() --- client/deps/hardnested.cmake | 1 + 1 file changed, 1 insertion(+) diff --git a/client/deps/hardnested.cmake b/client/deps/hardnested.cmake index 9efff1445..6ec4f0297 100644 --- a/client/deps/hardnested.cmake +++ b/client/deps/hardnested.cmake @@ -107,6 +107,7 @@ add_library(pm3rrg_rdv4_hardnested STATIC hardnested/hardnested_bruteforce.c $<TARGET_OBJECTS:pm3rrg_rdv4_hardnested_nosimd> ${SIMD_TARGETS}) +target_compile_options(pm3rrg_rdv4_hardnested PRIVATE -Wall -Werror -O3) set_property(TARGET pm3rrg_rdv4_hardnested PROPERTY POSITION_INDEPENDENT_CODE ON) target_include_directories(pm3rrg_rdv4_hardnested PRIVATE ../../common From 0840c0d5d1054bcb2c5931eee57b4a145f1cf0f2 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Thu, 18 Jun 2020 19:28:44 +0200 Subject: [PATCH 499/527] changed bits[8] to *bits --- armsrc/em4x50.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/armsrc/em4x50.c b/armsrc/em4x50.c index 692b17419..25e7caf4f 100644 --- a/armsrc/em4x50.c +++ b/armsrc/em4x50.c @@ -102,7 +102,7 @@ static void init_tag(void) { tag.sectors[i][j] = 0x00; } -static uint8_t bits2byte(uint8_t bits[8], int length) { +static uint8_t bits2byte(uint8_t *bits, int length) { // converts <length> separate bits into a single "byte" From f1ae469cd7678f5546e1a90e8ab8891eb038920e Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Thu, 18 Jun 2020 21:04:57 +0200 Subject: [PATCH 500/527] readline tuning --- client/src/comms.c | 2 +- client/src/proxmark3.c | 12 ++++++++---- client/src/ui.c | 4 ---- 3 files changed, 9 insertions(+), 9 deletions(-) diff --git a/client/src/comms.c b/client/src/comms.c index df4c404df..5976cfcc1 100644 --- a/client/src/comms.c +++ b/client/src/comms.c @@ -349,7 +349,7 @@ __attribute__((force_align_arg_pointer)) // main thread will kill and restart this thread. if (commfailed) { if (conn.last_command != CMD_HARDWARE_RESET) { - PrintAndLogEx(WARNING, "Communicating with Proxmark3 device " _RED_("failed")); + PrintAndLogEx(WARNING, "\nCommunicating with Proxmark3 device " _RED_("failed")); } __atomic_test_and_set(&comm_thread_dead, __ATOMIC_SEQ_CST); break; diff --git a/client/src/proxmark3.c b/client/src/proxmark3.c index d2840a1f7..d820e297d 100644 --- a/client/src/proxmark3.c +++ b/client/src/proxmark3.c @@ -117,23 +117,23 @@ static void prompt_compose(char *buf, size_t buflen, const char *promptctx, cons snprintf(buf, buflen - 1, PROXPROMPT_COMPOSE, promptdev, promptctx); } -#ifdef HAVE_READLINE static int check_comm(void) { // If communications thread goes down. Device disconnected then this should hook up PM3 again. if (IsCommunicationThreadDead() && session.pm3_present) { + PrintAndLogEx(INFO, "Running in " _YELLOW_("OFFLINE") " mode. Use "_YELLOW_("\"hw connect\"") " to reconnect\n"); prompt_dev = PROXPROMPT_DEV_OFFLINE; +#ifdef HAVE_READLINE char prompt[PROXPROMPT_MAX_SIZE] = {0}; prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev); char prompt_filtered[PROXPROMPT_MAX_SIZE] = {0}; memcpy_filter_ansi(prompt_filtered, prompt, sizeof(prompt_filtered), !session.supports_colors); rl_set_prompt(prompt_filtered); rl_forced_update_display(); +#endif CloseProxmark(); - PrintAndLogEx(INFO, "Running in " _YELLOW_("OFFLINE") " mode. Use "_YELLOW_("\"hw connect\"") " to reconnect\n"); } return 0; } -#endif // first slot is always NULL, indicating absence of script when idx=0 static FILE *cmdscriptfile[MAX_NESTED_CMDSCRIPT + 1] = {0}; @@ -293,13 +293,17 @@ check_script: printprompt = true; } else { +#ifdef HAVE_READLINE + rl_event_hook = check_comm; +#else + check_comm(); +#endif prompt_ctx = PROXPROMPT_CTX_INTERACTIVE; char prompt[PROXPROMPT_MAX_SIZE] = {0}; prompt_compose(prompt, sizeof(prompt), prompt_ctx, prompt_dev); char prompt_filtered[PROXPROMPT_MAX_SIZE] = {0}; memcpy_filter_ansi(prompt_filtered, prompt, sizeof(prompt_filtered), !session.supports_colors); #ifdef HAVE_READLINE - rl_event_hook = check_comm; cmd = readline(prompt_filtered); #else printf("%s", prompt_filtered); diff --git a/client/src/ui.c b/client/src/ui.c index 04e002950..e84d4203c 100644 --- a/client/src/ui.c +++ b/client/src/ui.c @@ -22,10 +22,6 @@ #include <stdarg.h> #include <stdlib.h> -#ifdef HAVE_READLINE -#include <readline/readline.h> -#endif - #include <complex.h> #include "util.h" #include "proxmark3.h" // PROXLOG From d8d56d9e74cbf210ff048df8cda153b6b3dcb949 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Fri, 19 Jun 2020 01:19:01 +0200 Subject: [PATCH 501/527] corrected comments used param_gethex(...) and param_getdec(...) instead of scanf and strncpy constructs --- client/src/cmdlfem4x50.c | 124 ++++++++++----------------------------- 1 file changed, 32 insertions(+), 92 deletions(-) diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index 44103da05..f1ffdf828 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -391,7 +391,6 @@ int CmdEM4x50Info(const char *Cmd) { // decoding is done by the device (not on client side) bool errors = false, verbose = false; - char password[20] = {0x00}, tmpbuff[3]; uint8_t cmdp = 0; em4x50_data_t etd; PacketResponseNG resp; @@ -406,21 +405,11 @@ int CmdEM4x50Info(const char *Cmd) { return usage_lf_em4x50_info(); case 'p': - param_getstr(Cmd, cmdp + 1, password, sizeof(password)); - - // validation - if (strlen(password) != 8) { - - PrintAndLogEx(WARNING, "\n error, password has to be 4 bytes\n"); - errors = true; - break; - } - - // prepare given password + if (param_gethex(Cmd, cmdp + 1, etd.password, 8)) { + PrintAndLogEx(FAILED, "\n password has to be 8 hex symbols\n"); + return PM3_EINVARG; + } etd.pwd_given = true; - for (int i = 0; i < 4; i++) - sscanf(strncpy(tmpbuff, password+2*i, 2), "%2hhx", &etd.password[i]); - cmdp += 2; break; @@ -437,9 +426,8 @@ int CmdEM4x50Info(const char *Cmd) { } // validation - if (errors) { + if (errors) return usage_lf_em4x50_info(); - } // call info command clearCommandBuffer(); @@ -508,9 +496,7 @@ int CmdEM4x50Write(const char *Cmd) { // envoke writing a single word (32 bit) to a EM4x50 tag - bool errors = false, baddress = false, bword = false; - char password[20] = {0x00}, word[20] = {0x00}, tmpbuff[3]; - int address = 0; + bool errors = false, bword = false, baddr = false; uint8_t cmdp = 0; em4x50_data_t etd; PacketResponseNG resp; @@ -525,57 +511,32 @@ int CmdEM4x50Write(const char *Cmd) { return usage_lf_em4x50_write(); case 'p': - param_getstr(Cmd, cmdp + 1, password, sizeof(password)); - - // validation - if (strlen(password) != 8) { - PrintAndLogEx(WARNING, "\n error, password has to be 4 bytes\n"); - errors = true; - break; - } - - // prepare given password + if (param_gethex(Cmd, cmdp + 1, etd.password, 8)) { + PrintAndLogEx(FAILED, "\n password has to be 8 hex symbols\n"); + return PM3_EINVARG; + } etd.pwd_given = true; - for (int i = 0; i < 4; i++) - sscanf(strncpy(tmpbuff, password+2*i, 2), "%2hhx", &etd.password[i]); - cmdp += 2; break; case 'w': - param_getstr(Cmd, cmdp + 1, word, sizeof(word)); - - // validation - if (strlen(word) != 8) { - PrintAndLogEx(WARNING, "\n error, word has to be 4 bytes\n"); - errors = true; - break; - } else { - bword = true; + if (param_gethex(Cmd, cmdp + 1, etd.word, 8)) { + PrintAndLogEx(FAILED, "\n word has to be 8 hex symbols\n"); + return PM3_EINVARG; } - - // prepare given word - for (int i = 0; i < 4; i++) - sscanf(strncpy(tmpbuff, word+2*i, 2), "%2hhx", &etd.word[i]); - + bword = true; cmdp += 2; break; case 'a': - param_getstr(Cmd, cmdp + 1, tmpbuff, sizeof(address)); - address = atoi(tmpbuff); - + param_getdec(Cmd, cmdp + 1, &etd.address); + // validation - if (address < 1 || address > 31) { - PrintAndLogEx(WARNING, "\n error, address has to be in range [1-31]\n"); - errors = true; - break; - } else { - baddress = true; + if (etd.address < 1 || etd.address > 31) { + PrintAndLogEx(FAILED, "\n error, address has to be in range [1-31]\n"); + return PM3_EINVARG; } - - etd.address = address; - + baddr = true; cmdp += 2; break; @@ -586,7 +547,7 @@ int CmdEM4x50Write(const char *Cmd) { } } - if (errors || !baddress || !bword) + if (errors || !bword || !baddr) return usage_lf_em4x50_write(); clearCommandBuffer(); @@ -630,8 +591,7 @@ int CmdEM4x50WritePassword(const char *Cmd) { // envokes changing the password of EM4x50 tag - bool errors = false, bpwd = false, bnewpwd = false; - char password[20] = {0x00}, new_password[20] = {0x00}, tmpbuff[3]; + bool errors = false, bpwd = false, bnpwd = false; uint8_t cmdp = 0; em4x50_data_t etd; PacketResponseNG resp; @@ -647,42 +607,22 @@ int CmdEM4x50WritePassword(const char *Cmd) { return usage_lf_em4x50_write_password(); case 'p': - param_getstr(Cmd, cmdp + 1, password, sizeof(password)); - - // validation - if (strlen(password) != 8) { - PrintAndLogEx(WARNING, "\n error, passwords has to be 4 bytes\n"); - errors = true; - break; - } else { - bpwd = true; + if (param_gethex(Cmd, cmdp + 1, etd.password, 8)) { + PrintAndLogEx(FAILED, "\n password has to be 8 hex symbols\n"); + return PM3_EINVARG; } - - // prepare given password + bpwd = true; etd.pwd_given = true; - for (int i = 0; i < 4; i++) - sscanf(strncpy(tmpbuff, password+2*i, 2), "%2hhx", &etd.password[i]); - cmdp += 2; break; case 'n': - param_getstr(Cmd, cmdp + 1, new_password, sizeof(new_password)); - - // validation - if (strlen(new_password) != 8) { - PrintAndLogEx(WARNING, "\n error, passwords have to be 4 bytes\n"); - errors = true; - break; - } else { - bnewpwd = true; - } - - // prepare given password + if (param_gethex(Cmd, cmdp + 1, etd.new_password, 8)) { + PrintAndLogEx(FAILED, "\n password has to be 8 hex symbols\n"); + return PM3_EINVARG; + } + bnpwd = true; etd.newpwd_given = true; - for (int i = 0; i < 4; i++) - sscanf(strncpy(tmpbuff, new_password+2*i, 2), "%2hhx", &etd.new_password[i]); - cmdp += 2; break; @@ -693,7 +633,7 @@ int CmdEM4x50WritePassword(const char *Cmd) { } } - if (errors || !bpwd || !bnewpwd) + if (errors || !bpwd || !bnpwd) return usage_lf_em4x50_write_password(); clearCommandBuffer(); From 274996da1f5e3820ce3c208cc8769a2f877fc192 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Fri, 19 Jun 2020 01:24:57 +0200 Subject: [PATCH 502/527] corrected comments --- armsrc/em4x50.c | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/armsrc/em4x50.c b/armsrc/em4x50.c index 25e7caf4f..5071ac085 100644 --- a/armsrc/em4x50.c +++ b/armsrc/em4x50.c @@ -717,7 +717,7 @@ static bool write(uint8_t word[4], uint8_t address) { if (request_receive_mode()) { - // send selective read command + // send write command em4x50_send_byte_with_parity(EM4X50_COMMAND_WRITE); // send address data @@ -753,7 +753,7 @@ static bool write_password(uint8_t password[4], uint8_t new_password[4]) { if (request_receive_mode()) { - // send selective read command + // send write password command em4x50_send_byte_with_parity(EM4X50_COMMAND_WRITE_PASSWORD); // send address data From 73dfe44c6f531dd94db38bdd40c036c92494214f Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Fri, 19 Jun 2020 01:39:12 +0200 Subject: [PATCH 503/527] fixed return value bsuccess, which was true although function calls failed --- armsrc/em4x50.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/armsrc/em4x50.c b/armsrc/em4x50.c index 5071ac085..7b2260ecd 100644 --- a/armsrc/em4x50.c +++ b/armsrc/em4x50.c @@ -791,7 +791,7 @@ void em4x50_write(em4x50_data_t *etd) { // write operation process for EM4x50 tag, // single word is written to given address, verified by selective read operation - bool bsuccess = true, blogin = false; + bool bsuccess = false, blogin = false; uint8_t word[4] = {0x00, 0x00, 0x00, 0x00}; uint8_t addresses[4] = {0x00, 0x00, 0x00, 0x00}; @@ -826,6 +826,7 @@ void em4x50_write(em4x50_data_t *etd) { word[3] = tag.sectors[etd->address][3]; msb2lsb_word(word); + bsuccess = true; for (int i = 0; i < 4; i++) bsuccess &= (word[i] == etd->word[i]) ? true : false; From 1a833ea6831b2dcaf1ad021361fbf6bf0b311171 Mon Sep 17 00:00:00 2001 From: merlokk <807634+merlokk@users.noreply.github.com> Date: Tue, 16 Jun 2020 15:43:24 +0300 Subject: [PATCH 504/527] appveyour rework --- appveyor.yml | 89 ++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 80 insertions(+), 9 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index 571737ab5..e166d9694 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -1,5 +1,5 @@ version: 3.0.1.{build} -image: Visual Studio 2017 +image: Visual Studio 2019 clone_folder: C:\ProxSpace\pm3 init: - ps: >- @@ -26,6 +26,8 @@ init: clone_script: - ps: >- Write-Host "Removing ProxSpace..." -NoNewLine + + $CloneTime=[System.Environment]::TickCount cd \ @@ -150,13 +152,15 @@ clone_script: ExecUpdate "update2" "C:\ProxSpace\msys2\msys2_shell.cmd -mingw32 -defterm -no-start /dev/null" "terminate?MSYS2" + Add-AppveyorMessage -Message "ProxSpace download and update took $(([System.Environment]::TickCount-$CloneTime) / 1000) sec" -Category Information + Write-Host "Update " -NoNewLine Write-Host "[ OK ]" -ForegroundColor Green install: build_script: - ps: >- - "C:\ProxSpace\msys2\usr\bin;C:\ProxSpace\msys2\mingw32\bin;C:\ProxSpace\gcc-arm-none-eabi\bin;$env:Path" + $env:Path="C:\ProxSpace\msys2\usr\bin;C:\ProxSpace\msys2\mingw32\bin;C:\ProxSpace\gcc-arm-none-eabi\bin;c:\Python38;c:\Python38\Scripts;$env:Path" $env:MINGW_HOME="C:\ProxSpace\msys2\mingw32" @@ -172,9 +176,13 @@ build_script: cd C:\ProxSpace\pm3 + Write-Host "---------- make ----------" -ForegroundColor Yellow + + $TestTime=[System.Environment]::TickCount + #make - bash -c -i 'pwd;make clean;make V=1' + bash -c -i 'echo $PATH;pwd;make clean;make V=1' #some checks @@ -185,17 +193,80 @@ build_script: } - Write-Host "Builded..." -ForegroundColor Yellow -test_script: -- ps: >- - $env:Path = "C:\ProxSpace\msys\bin;$env:Path" + cd c:\ProxSpace\pm3 + + bash -c -i 'make check' + + $testspass = ($LASTEXITCODE -eq 0) + + $global:TestsPassed=$testspass + + if ($testspass) { + Add-AppveyorTest -Name "make Tests" -Framework NUnit -Filename "make check" -Outcome Passed -Duration "$([System.Environment]::TickCount-$TestTime)" + Write-Host "make Tests [ OK ]" -ForegroundColor Green + } else { + Add-AppveyorTest -Name "make Tests" -Framework NUnit -Filename "make check" -Outcome Failed -Duration "$([System.Environment]::TickCount-$TestTime)" + Write-Host "make Tests [ ERROR ]" -ForegroundColor Red + throw "Tests error." + } + + Write-Host "---------- btaddon ----------" -ForegroundColor Yellow + + $TestTime=[System.Environment]::TickCount + + bash -c -i 'pwd;make clean;make PLATFORM_EXTRAS=BTADDON' cd c:\ProxSpace\pm3 bash -c -i 'make check' - $global:TestsPassed=$true + $testspass = ($LASTEXITCODE -eq 0) + $global:TestsPassed=(($global:TestsPassed) -and ($testspass)) + + if ($testspass) { + Add-AppveyorTest -Name "BTaddon Tests" -Framework NUnit -Filename "make check" -Outcome Passed -Duration "$([System.Environment]::TickCount-$TestTime)" + Write-Host "BTaddon Tests [ OK ]" -ForegroundColor Green + } else { + Add-AppveyorTest -Name "BTaddon Tests" -Framework NUnit -Filename "make check" -Outcome Failed -Duration "$([System.Environment]::TickCount-$TestTime)" + Write-Host "BTaddon Tests [ ERROR ]" -ForegroundColor Red + } + + Write-Host "---------- make clean ----------" -ForegroundColor Yellow + + bash -c -i 'make clean' + + #Write-Host "---------- cmake ----------" -ForegroundColor Yellow + + #$TestTime=[System.Environment]::TickCount + + #$script='C:\ProxSpace\msys2\msys2_shell.cmd -mingw32 -defterm -no-start -c "mkdir -p client/build; cd client/build; pwd; cmake -G`"MSYS Makefiles`" ..; ls; make VERBOSE=1;"' + + #$script="$script" + + #$scriptblk=[scriptblock]::Create("$script") + + #$res=&$scriptblk + + + #Write-Host "---------- make ok ----------" -ForegroundColor Yellow + + #bash -c -i 'make check CHECKARGS="--clientbin ./client/build/proxmark3"' + + #$testspass = ($LASTEXITCODE -eq 0) + + #$global:TestsPassed=(($global:TestsPassed) -and ($testspass)) + + if ($testspass) { + Add-AppveyorTest -Name "cmake Tests" -Framework NUnit -Filename "make client/check" -Outcome Passed -Duration "$([System.Environment]::TickCount-$TestTime)" + Write-Host "cmake Tests [ OK ]" -ForegroundColor Green + } else { + Add-AppveyorTest -Name "cmake Tests" -Framework NUnit -Filename "make client/check" -Outcome Failed -Duration "$([System.Environment]::TickCount-$TestTime)" + Write-Host "cmake Tests [ ERROR ]" -ForegroundColor Red + } + +test_script: +- ps: >- if ($global:TestsPassed) { Write-Host "Tests [ OK ]" -ForegroundColor Green } else { @@ -207,4 +278,4 @@ on_success: on_failure: - ps: Write-Host "Build error." -ForegroundColor Red on_finish: -- ps: # $blockRdp = $false; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) +- ps: # $blockRdp = $true; iex ((new-object net.webclient).DownloadString('https://raw.githubusercontent.com/appveyor/ci/master/scripts/enable-rdp.ps1')) From 5787f07617d729ff0c4b6fd90e107b9f88a604f9 Mon Sep 17 00:00:00 2001 From: Oleg Moiseenko <807634+merlokk@users.noreply.github.com> Date: Fri, 19 Jun 2020 16:56:48 +0300 Subject: [PATCH 505/527] Appveyour cmake (#805) appveyour cmake --- appveyor.yml | 21 ++++++++------------- 1 file changed, 8 insertions(+), 13 deletions(-) diff --git a/appveyor.yml b/appveyor.yml index e166d9694..240724d80 100644 --- a/appveyor.yml +++ b/appveyor.yml @@ -236,26 +236,21 @@ build_script: bash -c -i 'make clean' - #Write-Host "---------- cmake ----------" -ForegroundColor Yellow + Write-Host "---------- cmake ----------" -ForegroundColor Yellow - #$TestTime=[System.Environment]::TickCount + $TestTime=[System.Environment]::TickCount - #$script='C:\ProxSpace\msys2\msys2_shell.cmd -mingw32 -defterm -no-start -c "mkdir -p client/build; cd client/build; pwd; cmake -G`"MSYS Makefiles`" ..; ls; make VERBOSE=1;"' + cmd.exe /c 'C:\ProxSpace\msys2\msys2_shell.cmd -mingw32 -defterm -no-start -c "mkdir -p client/build; cd client/build; cmake -G""MSYS Makefiles"" ..; make VERBOSE=1;"' - #$script="$script" + Write-Host "---------- cmake tests ----------" -ForegroundColor Yellow - #$scriptblk=[scriptblock]::Create("$script") - - #$res=&$scriptblk + cd c:\ProxSpace\pm3 + bash -c -i './tools/pm3_tests.sh --clientbin client/build/proxmark3.exe client' - #Write-Host "---------- make ok ----------" -ForegroundColor Yellow + $testspass = ($LASTEXITCODE -eq 0) - #bash -c -i 'make check CHECKARGS="--clientbin ./client/build/proxmark3"' - - #$testspass = ($LASTEXITCODE -eq 0) - - #$global:TestsPassed=(($global:TestsPassed) -and ($testspass)) + $global:TestsPassed=(($global:TestsPassed) -and ($testspass)) if ($testspass) { Add-AppveyorTest -Name "cmake Tests" -Framework NUnit -Filename "make client/check" -Outcome Passed -Duration "$([System.Environment]::TickCount-$TestTime)" From f69739da7918752a8db82fd013c7d52cf43d6b4b Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Fri, 19 Jun 2020 18:34:47 +0200 Subject: [PATCH 506/527] make style --- armsrc/BigBuf.c | 2 +- armsrc/appmain.c | 4 ++-- armsrc/hfsnoop.c | 12 ++++++------ armsrc/i2c.c | 4 ++-- armsrc/iso14443a.c | 2 +- client/src/cmdhf.c | 12 ++++++------ client/src/cmdhfmf.c | 8 ++++---- client/src/cmdhfmfp.c | 6 +++--- client/src/cmdlfem4x.c | 2 +- client/src/cmdscript.c | 5 ++--- client/src/emv/cmdemv.c | 8 ++++---- client/src/emv/emv_pk.c | 20 ++++++++++---------- client/src/fileutils.c | 26 +++++++++++++------------- client/src/mifare/desfire_crypto.c | 2 +- client/src/mifare/mad.c | 10 +++++----- common/lfdemod.c | 2 +- 16 files changed, 62 insertions(+), 63 deletions(-) diff --git a/armsrc/BigBuf.c b/armsrc/BigBuf.c index 6d272f571..f41801a26 100644 --- a/armsrc/BigBuf.c +++ b/armsrc/BigBuf.c @@ -19,7 +19,7 @@ extern uint8_t _stack_start, __bss_end__; // BigBuf is the large multi-purpose buffer, typically used to hold A/D samples or traces. // Also used to hold various smaller buffers and the Mifare Emulator Memory. // We know that bss is aligned to 4 bytes. -static uint8_t* BigBuf = &__bss_end__; +static uint8_t *BigBuf = &__bss_end__; /* BigBuf memory layout: Pointer to highest available memory: BigBuf_hi diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 38f8dcec5..f49452514 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -2080,10 +2080,10 @@ void __attribute__((noreturn)) AppMain(void) { SpinDelay(100); BigBuf_initialize(); - for (uint32_t * p = &_stack_start; p < (uint32_t *)((uintptr_t)&_stack_end - 0x200); ++p) { + for (uint32_t *p = &_stack_start; p < (uint32_t *)((uintptr_t)&_stack_end - 0x200); ++p) { *p = 0xdeadbeef; } - + if (common_area.magic != COMMON_AREA_MAGIC || common_area.version != 1) { /* Initialize common area */ memset(&common_area, 0, sizeof(common_area)); diff --git a/armsrc/hfsnoop.c b/armsrc/hfsnoop.c index b21ca2f83..c3e63876c 100644 --- a/armsrc/hfsnoop.c +++ b/armsrc/hfsnoop.c @@ -19,7 +19,7 @@ #include "cmd.h" static void RAMFUNC optimizedSniff(uint16_t *dest, uint16_t dsize) { - for (;dsize > 0; dsize -= sizeof(dsize)) { + for (; dsize > 0; dsize -= sizeof(dsize)) { if (AT91C_BASE_SSC->SSC_SR & AT91C_SSC_RXRDY) { *dest = (uint16_t)(AT91C_BASE_SSC->SSC_RHR); dest++; @@ -30,7 +30,7 @@ static void RAMFUNC optimizedSniff(uint16_t *dest, uint16_t dsize) { int HfSniff(uint32_t samplesToSkip, uint32_t triggersToSkip, uint16_t *len) { BigBuf_free(); - BigBuf_Clear_ext(false); + BigBuf_Clear_ext(false); Dbprintf("Skipping first %d sample pairs, Skipping %d triggers", samplesToSkip, triggersToSkip); @@ -52,10 +52,10 @@ int HfSniff(uint32_t samplesToSkip, uint32_t triggersToSkip, uint16_t *len) { *len = (BigBuf_max_traceLen() & 0xFFFE); uint8_t *mem = BigBuf_malloc(*len); - int trigger_cnt = 0; + int trigger_cnt = 0; uint16_t r = 0, interval = 0; - - + + bool pressed = false; while (pressed == false) { WDT_HIT(); @@ -95,7 +95,7 @@ int HfSniff(uint32_t samplesToSkip, uint32_t triggersToSkip, uint16_t *len) { waitcount--; } - optimizedSniff((uint16_t*)mem, (*len) >> 2); + optimizedSniff((uint16_t *)mem, (*len) >> 2); Dbprintf("Trigger kicked in (%d >= 180)", r); } diff --git a/armsrc/i2c.c b/armsrc/i2c.c index 82b4fdb10..23ae07f10 100644 --- a/armsrc/i2c.c +++ b/armsrc/i2c.c @@ -47,7 +47,7 @@ static void __attribute__((optimize("O0"))) I2CSpinDelayClk(uint16_t delay) { #define I2C_DELAY_2CLK I2CSpinDelayClk(2) #define I2C_DELAY_XCLK(x) I2CSpinDelayClk((x)) -#define I2C_DELAY_100us I2CSpinDelayClk( 100 / 3) +#define I2C_DELAY_100us I2CSpinDelayClk( 100 / 3) #define I2C_DELAY_600us I2CSpinDelayClk( 600 / 3) #define I2C_DELAY_10ms I2CSpinDelayClk( 10 * 1000 / 3 ) #define I2C_DELAY_30ms I2CSpinDelayClk( 30 * 1000 / 3 ) @@ -440,7 +440,7 @@ int16_t I2C_BufferRead(uint8_t *data, uint8_t len, uint8_t device_cmd, uint8_t d // extra wait 500us (514us measured) // 200us (xx measured) -// WaitUS(600); +// WaitUS(600); I2C_DELAY_600us; bool bBreak = true; diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index fd146c23e..2a2c7e528 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -988,7 +988,7 @@ bool SimulateIso14443aInit(int tagType, int flags, uint8_t *data, tag_response_i counters[i] = le24toh(mfu_header->counter_tearing[i]); if (mfu_header->counter_tearing[i][3] != 0x00) { - tearings[i] = mfu_header->counter_tearing[i][3]; + tearings[i] = mfu_header->counter_tearing[i][3]; } } diff --git a/client/src/cmdhf.c b/client/src/cmdhf.c index 1579e39c6..f94fd7b6d 100644 --- a/client/src/cmdhf.c +++ b/client/src/cmdhf.c @@ -241,7 +241,7 @@ int CmdHFTune(const char *Cmd) { return PM3_SUCCESS; } -// Collects pars of u8, +// Collects pars of u8, // uses 16bit transfers from FPGA for speed // Takes all available bigbuff memory // data sample to download? Not sure what we can do with the data. @@ -258,7 +258,7 @@ int CmdHFSniff(const char *Cmd) { params.triggersToSkip = param_get32ex(Cmd, 1, 0, 10); clearCommandBuffer(); - SendCommandNG(CMD_HF_SNIFF, (uint8_t*)¶ms, sizeof(params)); + SendCommandNG(CMD_HF_SNIFF, (uint8_t *)¶ms, sizeof(params)); for (;;) { @@ -279,10 +279,10 @@ int CmdHFSniff(const char *Cmd) { PrintAndLogEx(INFO, "HF sniff len %u bytes", len); PrintAndLogEx(HINT, "Use `" _YELLOW_("data plot") "` to view"); PrintAndLogEx(HINT, "Use `" _YELLOW_("data save") "` to save"); - - // download bigbuf_malloced.. - // it reservs mem from the higher range. ie we can't start from beginning idx 0. - // but from + + // download bigbuf_malloced.. + // it reservs mem from the higher range. ie we can't start from beginning idx 0. + // but from uint32_t start = pm3_capabilities.bigbuf_size - len; int res = getSamplesEx(start, start + len, false); if (res != PM3_SUCCESS) { diff --git a/client/src/cmdhfmf.c b/client/src/cmdhfmf.c index 21086b70a..eb9670b70 100644 --- a/client/src/cmdhfmf.c +++ b/client/src/cmdhfmf.c @@ -4545,7 +4545,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { // copy default NDEF key uint8_t akey[6] = {0}; memcpy(akey, g_mifare_ndef_key, 6); - + // user specified key if (keylen == 6) { memcpy(akey, key, 6); @@ -4584,7 +4584,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { for (int i = 0; i < madlen; i++) { if (aaid == mad[i]) { - + uint8_t vsector[16 * 4] = {0}; if (mfReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, akey, vsector)) { PrintAndLogEx(NORMAL, ""); @@ -4611,7 +4611,7 @@ static int CmdHF14AMfMAD(const char *Cmd) { for (int i = 0; i < 4; i ++) PrintAndLogEx(INFO, "[%d] %s", i, sprint_hex(§or0[i * 16], 16)); } - + return PM3_SUCCESS; } @@ -4669,7 +4669,7 @@ static int CmdHFMFNDEF(const char *Cmd) { PrintAndLogEx(HINT, "Try " _YELLOW_("`hf mf ndef -k `") " with your custom key"); return PM3_ESOFT; } - + bool haveMAD2 = false; int res = MADCheck(sector0, NULL, verbose, &haveMAD2); if (res != PM3_SUCCESS) { diff --git a/client/src/cmdhfmfp.c b/client/src/cmdhfmfp.c index 7fc0f0bf7..a3c9d195c 100644 --- a/client/src/cmdhfmfp.c +++ b/client/src/cmdhfmfp.c @@ -1400,7 +1400,7 @@ static int CmdHFMFPMAD(const char *Cmd) { for (int i = 0; i < madlen; i++) { if (aaid == mad[i]) { - + uint8_t vsector[16 * 4] = {0}; if (mfReadSector(i + 1, keyB ? MF_KEY_B : MF_KEY_A, akey, vsector)) { PrintAndLogEx(NORMAL, ""); @@ -1472,7 +1472,7 @@ static int CmdHFMFPNDEF(const char *Cmd) { if (verbose) PrintAndLogEx(INFO, "reading MAD v1 sector"); - + if (mfpReadSector(MF_MAD1_SECTOR, MF_KEY_A, (uint8_t *)g_mifarep_mad_key, sector0, verbose)) { PrintAndLogEx(ERR, "error, read sector 0. card don't have MAD or don't have MAD on default keys"); PrintAndLogEx(HINT, "Try " _YELLOW_("`hf mfp ndef -k `") " with your custom key"); @@ -1487,7 +1487,7 @@ static int CmdHFMFPNDEF(const char *Cmd) { } if (haveMAD2) { - + if (verbose) PrintAndLogEx(INFO, "reading MAD v2 sector"); diff --git a/client/src/cmdlfem4x.c b/client/src/cmdlfem4x.c index f53ccae20..40caf367b 100644 --- a/client/src/cmdlfem4x.c +++ b/client/src/cmdlfem4x.c @@ -1014,7 +1014,7 @@ int EM4x50Read(const char *Cmd, bool verbose) { PrintAndLogEx(INFO, "%03d | %08x", block, Code[block]); } PrintAndLogEx(INFO, "----+--------------"); - PrintAndLogEx( (AllPTest) ? SUCCESS : WARNING, "Parities checks | %s", (AllPTest) ? _GREEN_("Passed") : _RED_("Fail")); + PrintAndLogEx((AllPTest) ? SUCCESS : WARNING, "Parities checks | %s", (AllPTest) ? _GREEN_("Passed") : _RED_("Fail")); if (AllPTest == false) { PrintAndLogEx(HINT, "Try cleaning the read samples with " _YELLOW_("'data askedge'")); diff --git a/client/src/cmdscript.c b/client/src/cmdscript.c index 4fb87cc27..89301e1f4 100644 --- a/client/src/cmdscript.c +++ b/client/src/cmdscript.c @@ -36,8 +36,7 @@ // Partly ripped from PyRun_SimpleFileExFlags // but does not terminate client on sys.exit // and print exit code only if != 0 -static int Pm3PyRun_SimpleFileNoExit(FILE *fp, const char *filename) -{ +static int Pm3PyRun_SimpleFileNoExit(FILE *fp, const char *filename) { PyObject *m, *d, *v; int set_file_name = 0, ret = -1; m = PyImport_AddModule("__main__"); @@ -86,7 +85,7 @@ static int Pm3PyRun_SimpleFileNoExit(FILE *fp, const char *filename) } Py_DECREF(v); ret = 0; - done: +done: if (set_file_name && PyDict_DelItemString(d, "__file__")) PyErr_Clear(); Py_XDECREF(m); diff --git a/client/src/emv/cmdemv.c b/client/src/emv/cmdemv.c index 2f754ffc4..57f898425 100644 --- a/client/src/emv/cmdemv.c +++ b/client/src/emv/cmdemv.c @@ -1455,7 +1455,7 @@ static int CmdEMVScan(const char *Cmd) { // current path + file name if (MergeJSON) { - root = json_load_file( (char*)filename, 0, &error); + root = json_load_file((char *)filename, 0, &error); if (!root) { PrintAndLogEx(ERR, "Json error on line %d: %s", error.line, error.text); return PM3_EFILE; @@ -1750,15 +1750,15 @@ static int CmdEMVScan(const char *Cmd) { if (MergeJSON == false) { // create unique new name - char *fname = newfilenamemcopy((char*)filename, ".json"); + char *fname = newfilenamemcopy((char *)filename, ".json"); if (fname == NULL) { return PM3_EMALLOC; } - strcpy((char*)filename, fname); + strcpy((char *)filename, fname); free(fname); } - res = json_dump_file(root, (char*)filename, JSON_INDENT(2)); + res = json_dump_file(root, (char *)filename, JSON_INDENT(2)); if (res) { PrintAndLogEx(ERR, "Can't save the file: %s", filename); return PM3_EFILE; diff --git a/client/src/emv/emv_pk.c b/client/src/emv/emv_pk.c index ee354e24d..1a783ef12 100644 --- a/client/src/emv/emv_pk.c +++ b/client/src/emv/emv_pk.c @@ -504,19 +504,19 @@ struct emv_pk *emv_pk_get_ca_pk(const unsigned char *rid, unsigned char idx) { bool isok = emv_pk_verify(pk); PrintAndLogEx(INFO, "Verifying CA PK for %02hhx:%02hhx:%02hhx:%02hhx:%02hhx IDX %02hhx %zu bits. ( %s )", - pk->rid[0], - pk->rid[1], - pk->rid[2], - pk->rid[3], - pk->rid[4], - pk->index, - pk->mlen * 8, - (isok) ? _GREEN_("ok") : _RED_("failed") - ); + pk->rid[0], + pk->rid[1], + pk->rid[2], + pk->rid[3], + pk->rid[4], + pk->index, + pk->mlen * 8, + (isok) ? _GREEN_("ok") : _RED_("failed") + ); if (isok) { return pk; - } + } emv_pk_free(pk); return NULL; diff --git a/client/src/fileutils.c b/client/src/fileutils.c index ceeca97e5..e222e54da 100644 --- a/client/src/fileutils.c +++ b/client/src/fileutils.c @@ -1369,17 +1369,17 @@ static int convert_plain_mfu_dump(uint8_t **dump, size_t *dumplen, bool verbose) } static int convert_old_mfu_dump(uint8_t **dump, size_t *dumplen, bool verbose) { -/* For reference -typedef struct { - uint8_t version[8]; - uint8_t tbo[2]; - uint8_t tearing[3]; - uint8_t pack[2]; - uint8_t tbo1[1]; - uint8_t signature[32]; - uint8_t data[1024]; -} PACKED old_mfu_dump_t; -*/ + /* For reference + typedef struct { + uint8_t version[8]; + uint8_t tbo[2]; + uint8_t tearing[3]; + uint8_t pack[2]; + uint8_t tbo1[1]; + uint8_t signature[32]; + uint8_t data[1024]; + } PACKED old_mfu_dump_t; + */ // convert old format old_mfu_dump_t *old_mfu_dump = (old_mfu_dump_t *)*dump; @@ -1404,8 +1404,8 @@ typedef struct { memcpy(mfu_dump->data, old_mfu_dump->data, sizeof(mfu_dump->data)); mfu_dump->pages = old_data_len / 4 - 1; - - // Add PACK to last block of memory. + + // Add PACK to last block of memory. memcpy(mfu_dump->data + (mfu_dump->pages * 4 + MFU_DUMP_PREFIX_LENGTH), old_mfu_dump->pack, 2); if (verbose) { diff --git a/client/src/mifare/desfire_crypto.c b/client/src/mifare/desfire_crypto.c index 0ec6bd70d..7260f4731 100644 --- a/client/src/mifare/desfire_crypto.c +++ b/client/src/mifare/desfire_crypto.c @@ -882,7 +882,7 @@ void mifare_cypher_blocks_chained(desfiretag_t tag, desfirekey_t key, uint8_t *i } void desfire_crc32(const uint8_t *data, const size_t len, uint8_t *crc) { - crc32_ex(data,len,crc); + crc32_ex(data, len, crc); } void desfire_crc32_append(uint8_t *data, const size_t len) { diff --git a/client/src/mifare/mad.c b/client/src/mifare/mad.c index 9a8e20353..badc4b813 100644 --- a/client/src/mifare/mad.c +++ b/client/src/mifare/mad.c @@ -173,7 +173,7 @@ int MADCheck(uint8_t *sector0, uint8_t *sector10, bool verbose, bool *haveMAD2) if (sector0 == NULL) return PM3_EINVARG; - uint8_t GPB = sector0[3 * 16 + 9]; + uint8_t GPB = sector0[3 * 16 + 9]; if (verbose) PrintAndLogEx(SUCCESS, "%14s " _GREEN_("0x%02x"), "GPB", GPB); @@ -304,7 +304,7 @@ int MAD1DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose, bool *haveMA PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "---------------- " _CYAN_("Listing") " ----------------"); - + PrintAndLogEx(INFO, " 00 MAD v1"); uint32_t prev_aid = 0xFFFFFFFF; for (int i = 1; i < 16; i++) { @@ -326,10 +326,10 @@ int MAD1DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose, bool *haveMA int MAD2DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose) { open_mad_file(&mad_known_aids, verbose); - + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "------------ " _CYAN_("MAD v2 details") " -------------"); - + int res = madCRCCheck(sector, true, 2); if (verbose) { if (res == PM3_SUCCESS) @@ -347,7 +347,7 @@ int MAD2DecodeAndPrint(uint8_t *sector, bool swapmad, bool verbose) { PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "---------------- " _CYAN_("Listing") " ----------------"); - + PrintAndLogEx(INFO, " 16 MAD v2"); uint32_t prev_aid = 0xFFFFFFFF; diff --git a/common/lfdemod.c b/common/lfdemod.c index 89910488d..e952ed59c 100644 --- a/common/lfdemod.c +++ b/common/lfdemod.c @@ -1541,7 +1541,7 @@ static uint16_t cleanAskRawDemod(uint8_t *bits, size_t *size, int clk, int inver if ((pos > cl_2 - cl_4 - 1) && (pos <= clk + cl_4 + 1)) { bits[bitCnt++] = invert ^ 1; } - + // sample counts, like clock = 32.. it tries to find 32/4 = 8, 32/2 = 16 for (size_t i = pos; i < *size; i++) { if (bits[i] >= high && waveHigh) { From de20270532c995ecba1ada768be855868b44c220 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Sat, 20 Jun 2020 14:32:57 +0200 Subject: [PATCH 507/527] replaced reply_mix(...) by reply_ng(...) --- armsrc/em4x50.c | 12 +++++++++--- 1 file changed, 9 insertions(+), 3 deletions(-) diff --git a/armsrc/em4x50.c b/armsrc/em4x50.c index 7b2260ecd..9a3cb818c 100644 --- a/armsrc/em4x50.c +++ b/armsrc/em4x50.c @@ -684,6 +684,7 @@ void em4x50_info(em4x50_data_t *etd) { // otherwise continue without login bool bsuccess = false, blogin = false; + uint8_t status = 0; uint8_t addresses[] = {0x00, 0x00, 0x21, 0x00}; // fwr = 0, lwr = 33 uint8_t password[] = {0x00, 0x00, 0x00, 0x00}; // default password @@ -705,8 +706,10 @@ void em4x50_info(em4x50_data_t *etd) { bsuccess = selective_read(addresses); + status = (bsuccess << 1) + blogin; + lf_finalize(); - reply_mix(CMD_ACK, bsuccess, blogin, 0, (uint8_t *)tag.sectors, 238); + reply_ng(CMD_ACK, status, (uint8_t *)tag.sectors, 238); } // write functions @@ -792,6 +795,7 @@ void em4x50_write(em4x50_data_t *etd) { // single word is written to given address, verified by selective read operation bool bsuccess = false, blogin = false; + uint8_t status = 0; uint8_t word[4] = {0x00, 0x00, 0x00, 0x00}; uint8_t addresses[4] = {0x00, 0x00, 0x00, 0x00}; @@ -834,8 +838,10 @@ void em4x50_write(em4x50_data_t *etd) { } } + status = (bsuccess << 1) + blogin; + lf_finalize(); - reply_mix(CMD_ACK, bsuccess, blogin, 0, (uint8_t *)tag.sectors, 238); + reply_ng(CMD_ACK, status, (uint8_t *)tag.sectors, 238); } void em4x50_write_password(em4x50_data_t *etd) { @@ -853,5 +859,5 @@ void em4x50_write_password(em4x50_data_t *etd) { } lf_finalize(); - reply_mix(CMD_ACK, bsuccess, 0, 0, 0, 0); + reply_ng(CMD_ACK, bsuccess, 0, 0); } From 9e2e1db6e10edc942b218b8088e62f07facaa783 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Sat, 20 Jun 2020 14:33:49 +0200 Subject: [PATCH 508/527] changes due to replaced reply command (reply_mix(...) -> reply_ng(...)) --- client/src/cmdlfem4x50.c | 26 ++++++++++++++------------ 1 file changed, 14 insertions(+), 12 deletions(-) diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index f1ffdf828..ad874618c 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -233,8 +233,8 @@ static void print_info_result(PacketResponseNG *resp, const em4x50_data_t *etd, // display all information info result in structured format bool bpwd_given = etd->pwd_given; - bool bsuccess = (bool)resp->oldarg[0]; - bool blogin = (bool)resp->oldarg[1]; + bool bsuccess = (bool)(resp->status & 0x2); + bool blogin = (bool)(resp->status & 0x1); bool bpwc, braw; int fwr, lwr, fwrp, lwrp, fwwi, lwwi; uint8_t *data = resp->data.asBytes; @@ -390,7 +390,7 @@ int CmdEM4x50Info(const char *Cmd) { // envoke reading of a EM4x50 tag which has to be on the antenna because // decoding is done by the device (not on client side) - bool errors = false, verbose = false; + bool errors = false, verbose = false, success = false; uint8_t cmdp = 0; em4x50_data_t etd; PacketResponseNG resp; @@ -440,10 +440,11 @@ int CmdEM4x50Info(const char *Cmd) { return PM3_ETIMEOUT; } - // prepare result + // print result print_info_result(&resp, &etd, verbose); - - return ((bool)resp.oldarg[0]) ? PM3_SUCCESS : PM3_ESOFT; + + success = resp.status & 0x2; + return (success) ? PM3_SUCCESS : PM3_ESOFT; } static void print_write_result(PacketResponseNG *resp, const em4x50_data_t *etd) { @@ -451,8 +452,8 @@ static void print_write_result(PacketResponseNG *resp, const em4x50_data_t *etd) // display result of writing operation in structured format bool pwd_given = etd->pwd_given; - bool success = (bool)resp->oldarg[0]; - bool login = (bool)resp->oldarg[1]; + bool success = (bool)(resp->status & 0x2); + bool login = (bool)(resp->status & 0x1); uint8_t *data = resp->data.asBytes; char string[400] = {0}; char pstring[100] = {0}; @@ -496,7 +497,7 @@ int CmdEM4x50Write(const char *Cmd) { // envoke writing a single word (32 bit) to a EM4x50 tag - bool errors = false, bword = false, baddr = false; + bool errors = false, bword = false, baddr = false, success = false; uint8_t cmdp = 0; em4x50_data_t etd; PacketResponseNG resp; @@ -562,14 +563,15 @@ int CmdEM4x50Write(const char *Cmd) { // get, prepare and print response print_write_result(&resp, &etd); - return ((bool)resp.oldarg[0]) ? PM3_SUCCESS : PM3_ESOFT; + success = (bool)(resp.status & 0x2); + return (success) ? PM3_SUCCESS : PM3_ESOFT; } static void print_write_password_result(PacketResponseNG *resp, const em4x50_data_t *etd) { // display result of password changing operation - bool success = (bool)resp->oldarg[0]; + bool success = (bool)resp->status; char string[400] = {0}; char pstring[100] = {0}; @@ -647,5 +649,5 @@ int CmdEM4x50WritePassword(const char *Cmd) { // get, prepare and print response print_write_password_result(&resp, &etd); - return ((bool)resp.oldarg[0]) ? PM3_SUCCESS : PM3_ESOFT; + return ((bool)resp.status) ? PM3_SUCCESS : PM3_ESOFT; } From dc698808017d1130fafb284a08722a13eb06f856 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Sat, 20 Jun 2020 14:44:24 +0200 Subject: [PATCH 509/527] minor text and color changes --- client/src/cmdlfem4x50.c | 14 +++++++------- 1 file changed, 7 insertions(+), 7 deletions(-) diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index ad874618c..5f796a5e3 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -214,11 +214,11 @@ static void print_result(const em4x50_word_t *words, int fwr, int lwr) { strcat(string, pstring); } - sprintf(pstring, "\n word[%i] lsb: " _GREEN_("0x"), i); + sprintf(pstring, "\n word[%i] lsb: 0x", i); strcat(string, pstring); for (int j = 0; j < 4; j++) { - sprintf(pstring, _GREEN_("%02x"), reflect8(words[i].byte[3-j])); + sprintf(pstring, "%02x", reflect8(words[i].byte[3-j])); strcat(string, pstring); } @@ -346,14 +346,14 @@ static void print_info_result(PacketResponseNG *resp, const em4x50_data_t *etd, } else { - sprintf(pstring, _GREEN_("successful ")); + sprintf(pstring, _GREEN_("ok ")); strcat(string, pstring); if (blogin) { if (bpwd_given) { - sprintf(pstring, "(login with 0x%02x%02x%02x%02x)", + sprintf(pstring, "(login with password 0x%02x%02x%02x%02x)", etd->password[0], etd->password[1], etd->password[2], etd->password[3]); strcat(string, pstring); @@ -469,13 +469,13 @@ static void print_write_result(PacketResponseNG *resp, const em4x50_data_t *etd) prepare_result(data, etd->address, etd->address, &word[0]); print_result(word, etd->address, etd->address); - sprintf(pstring, "\n writing " _GREEN_("successful ")); + sprintf(pstring, "\n writing " _GREEN_("ok ")); strcat(string, pstring); if (pwd_given) { if (login) { - sprintf(pstring, "(login with 0x%02x%02x%02x%02x)", + sprintf(pstring, "(login with password 0x%02x%02x%02x%02x)", etd->password[0], etd->password[1], etd->password[2], etd->password[3]); strcat(string, pstring); @@ -582,7 +582,7 @@ static void print_write_password_result(PacketResponseNG *resp, const em4x50_dat } else { - sprintf(pstring, "\n writing new password " _GREEN_("successful")); + sprintf(pstring, "\n writing new password " _GREEN_("ok")); strcat(string, pstring); } From d38711aea69199081b13ed9f613afa317bee3f0a Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Sat, 20 Jun 2020 15:37:56 +0200 Subject: [PATCH 510/527] added cmdlfem4x50.c --- client/CMakeLists.txt | 1 + 1 file changed, 1 insertion(+) diff --git a/client/CMakeLists.txt b/client/CMakeLists.txt index 0de34d58f..16860aeae 100644 --- a/client/CMakeLists.txt +++ b/client/CMakeLists.txt @@ -214,6 +214,7 @@ set (TARGET_SOURCES ${PM3_ROOT}/client/src/cmdlfawid.c ${PM3_ROOT}/client/src/cmdlfcotag.c ${PM3_ROOT}/client/src/cmdlfem4x.c + ${PM3_ROOT}/client/src/cmdlfem4x50.c ${PM3_ROOT}/client/src/cmdlffdx.c ${PM3_ROOT}/client/src/cmdlfgallagher.c ${PM3_ROOT}/client/src/cmdlfguard.c From 26b7c667b718b834c42f123f6efc5c7978153dd5 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Sat, 20 Jun 2020 18:38:44 +0200 Subject: [PATCH 511/527] deleted function check_bit_in_byte(...) -> overhead --- client/src/cmdlfem4x50.c | 23 ++++++++--------------- 1 file changed, 8 insertions(+), 15 deletions(-) diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index 5f796a5e3..6b889f969 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -59,13 +59,6 @@ int usage_lf_em4x50_write_password(void) { return PM3_SUCCESS; } -static bool check_bit_in_byte(uint8_t pos, uint8_t byte) { - - // return true if bit at position <pos> is "1" - - return (((byte >> pos) & 1) == 1) ? true : false; -} - static void prepare_result(const uint8_t *byte, int fwr, int lwr, em4x50_word_t *words) { // restructure received result in "em4x50_word_t" structure and check all @@ -244,14 +237,14 @@ static void print_info_result(PacketResponseNG *resp, const em4x50_data_t *etd, prepare_result(data, 0, 33, words); - bpwc = check_bit_in_byte(7, words[2].byte[2]); // password check - braw = check_bit_in_byte(6, words[2].byte[2]); // read after write - fwr = reflect8(words[2].byte[0]); // first word read - lwr = reflect8(words[2].byte[1]); // last word read - fwrp = reflect8(words[1].byte[0]); // first word read protected - lwrp = reflect8(words[1].byte[1]); // last word read protected - fwwi = reflect8(words[1].byte[2]); // first word write inhibited - lwwi = reflect8(words[1].byte[3]); // last word write inhibited + bpwc = (bool)(words[2].byte[2] & 128); // password check (bit 7) + braw = (bool)(words[2].byte[2] & 64); // read after write (bit 6) + fwr = reflect8(words[2].byte[0]); // first word read + lwr = reflect8(words[2].byte[1]); // last word read + fwrp = reflect8(words[1].byte[0]); // first word read protected + lwrp = reflect8(words[1].byte[1]); // last word read protected + fwwi = reflect8(words[1].byte[2]); // first word write inhibited + lwwi = reflect8(words[1].byte[3]); // last word write inhibited // data section PrintAndLogEx(NORMAL, _YELLOW_("\n em4x50 data:")); From 1a9ca5a1e34fcbee291bfadd2a660e7ac7ae5ac8 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Sun, 21 Jun 2020 01:09:47 +0200 Subject: [PATCH 512/527] former hardcoded signal properties (high, low) are now set dynamically by functionalists get_signalproperties(...) --- armsrc/em4x50.c | 66 ++++++++++++++++++++++++++++++++++++++++++------- 1 file changed, 57 insertions(+), 9 deletions(-) diff --git a/armsrc/em4x50.c b/armsrc/em4x50.c index 9a3cb818c..b9295e9ed 100644 --- a/armsrc/em4x50.c +++ b/armsrc/em4x50.c @@ -91,6 +91,9 @@ static em4x50_tag_t tag = { #define FPGA_TIMER_0 0 +int gHigh = 0; +int gLow = 0; + // auxiliary functions static void init_tag(void) { @@ -234,6 +237,45 @@ static void em4x50_setup_read(void) { // functions for "reader" use case +static void get_signalproperties(void) { + + // calculate signal properties (mean amplitudes) from measured data: + // 32 amplitudes (maximum values) -> mean amplitude value -> gHigh -> gLow + + int no_periods = 32, pct = 75, noise = 140; + uint8_t sample = 0, sample_ref = 127; + uint8_t sample_max_mean = 0; + uint8_t sample_max[no_periods]; + uint32_t sample_max_sum = 0; + + // wait until signal/noise > 1 + while (AT91C_BASE_SSC->SSC_RHR < noise); + + // calculate mean maximum value of 32 periods, each period has a length of + // 3 single "full periods" to eliminate the influence of a listen window + for (int i = 0; i < no_periods; i++) { + + AT91C_BASE_TC0->TC_CCR = AT91C_TC_SWTRG; + while (AT91C_BASE_TC0->TC_CV < T0 * 3 * EM4X50_T_TAG_FULL_PERIOD) { + + sample = (uint8_t)AT91C_BASE_SSC->SSC_RHR; + + if (sample > sample_max[i]) + sample_max[i] = sample; + + } + + sample_max_sum += sample_max[i]; + } + + sample_max_mean = sample_max_sum / no_periods; + + // set global envelope variables + gHigh = sample_ref + pct * (sample_max_mean - sample_ref) / 100; + gLow = sample_ref - pct * (sample_max_mean - sample_ref) / 100; + +} + static int get_next_bit(void) { // returns bit value (or EM4X50_BIT_OTHER -> no bit pattern) by evaluating @@ -242,8 +284,6 @@ static int get_next_bit(void) { // a listen window (return value = EM4X50_BIT_OTHER) in functions // "find_double_listen_window" and "check_ack" - int dhigh = 230; // 90% of maximum sample value (255) - int dlow = 25; // 10% of maximum sample value (255) uint8_t sample; // get sample at 3/4 of bit period @@ -254,9 +294,9 @@ static int get_next_bit(void) { wait_timer(0, T0 * EM4X50_T_TAG_QUARTER_PERIOD); // decide wether "0" or "1" - if (sample > dhigh) + if (sample > gHigh) return EM4X50_BIT_0; - else if (sample < dlow) + else if (sample < gLow) return EM4X50_BIT_1; return EM4X50_BIT_OTHER; @@ -266,19 +306,19 @@ static uint32_t get_pulse_length(void) { // iterates pulse length (low -> high -> low) - uint8_t sample = 0, high = 192, low = 64; + uint8_t sample = 0; sample = (uint8_t)AT91C_BASE_SSC->SSC_RHR; - while (sample > low) + while (sample > gLow) sample = (uint8_t)AT91C_BASE_SSC->SSC_RHR; AT91C_BASE_TC1->TC_CCR = AT91C_TC_SWTRG; - while (sample < high) + while (sample < gHigh) sample = (uint8_t)AT91C_BASE_SSC->SSC_RHR; - while (sample > low) + while (sample > gLow) sample = (uint8_t)AT91C_BASE_SSC->SSC_RHR; return (uint32_t)AT91C_BASE_TC1->TC_CV; @@ -690,8 +730,10 @@ void em4x50_info(em4x50_data_t *etd) { init_tag(); em4x50_setup_read(); - + // set gHigh and gLow + get_signalproperties(); + if (etd->pwd_given) { // try to login with given password @@ -802,6 +844,9 @@ void em4x50_write(em4x50_data_t *etd) { init_tag(); em4x50_setup_read(); + // set gHigh and gLow + get_signalproperties(); + // reorder word according to datasheet msb2lsb_word(etd->word); @@ -852,6 +897,9 @@ void em4x50_write_password(em4x50_data_t *etd) { init_tag(); em4x50_setup_read(); + + // set gHigh and gLow + get_signalproperties(); // login and change password if (login(etd->password)) { From 56e171b9dc0a3ddd903bd558d442c14ee16d907f Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 21 Jun 2020 16:34:56 +0200 Subject: [PATCH 513/527] chg: data ndef - now decodes w and wo NDEF header --- client/src/cmddata.c | 11 +++++-- client/src/mifare/ndef.c | 65 +++++++++++++++++++++++----------------- 2 files changed, 46 insertions(+), 30 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index ce767da09..49338becc 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -2316,6 +2316,7 @@ static int CmdDataNDEF(const char *Cmd) { void *argtable[] = { arg_param_begin, arg_strx0("dD", "data", "<hex>", "NDEF data to decode"), + arg_lit0("vV", "verbose", "verbose mode"), arg_param_end }; CLIExecWithReturn(ctx, Cmd, argtable, false); @@ -2323,12 +2324,18 @@ static int CmdDataNDEF(const char *Cmd) { int datalen = 0; uint8_t data[MAX_NDEF_LEN] = {0}; CLIGetHexWithReturn(ctx, 1, data, &datalen); + bool verbose = arg_get_lit(ctx, 2); + CLIParserFree(ctx); if (datalen == 0) return PM3_EINVARG; - PrintAndLogEx(INFO, "Parsed NDEF Records"); - return NDEFRecordsDecodeAndPrint(data, datalen); + int res = NDEFDecodeAndPrint(data, datalen, verbose); + if (res != PM3_SUCCESS) { + PrintAndLogEx(INFO, "Trying to parse NDEF records w/o NDEF header"); + res = NDEFRecordsDecodeAndPrint(data, datalen); + } + return res; } static command_t CommandTable[] = { diff --git a/client/src/mifare/ndef.c b/client/src/mifare/ndef.c index 2aab01634..9e480cde4 100644 --- a/client/src/mifare/ndef.c +++ b/client/src/mifare/ndef.c @@ -418,7 +418,7 @@ int NDEFRecordsDecodeAndPrint(uint8_t *ndefRecord, size_t ndefRecordLen) { } PrintAndLogEx(NORMAL, ""); - PrintAndLogEx(SUCCESS, "Record " _YELLOW_("%zu"), counter); + PrintAndLogEx(SUCCESS, _CYAN_("Record") " " _YELLOW_("%zu"), counter); PrintAndLogEx(INFO, "-----------------------------------------------------"); ndefRecordDecodeAndPrint(&ndefRecord[len], NDEFHeader.RecLen); @@ -436,7 +436,7 @@ int NDEFDecodeAndPrint(uint8_t *ndef, size_t ndefLen, bool verbose) { size_t indx = 0; - PrintAndLogEx(INFO, ""); + PrintAndLogEx(NORMAL, ""); PrintAndLogEx(INFO, "--- " _CYAN_("NDEF parsing") " ----------------"); while (indx < ndefLen) { @@ -445,7 +445,7 @@ int NDEFDecodeAndPrint(uint8_t *ndef, size_t ndefLen, bool verbose) { case 0x00: { indx++; uint16_t len = ndefTLVGetLength(&ndef[indx], &indx); - PrintAndLogEx(SUCCESS, "-- NDEF NULL block."); + PrintAndLogEx(SUCCESS, "--- " _CYAN_("NDEF NULL block") " ---"); if (len) PrintAndLogEx(WARNING, "NDEF NULL block size must be 0, got %d bytes", len); indx += len; @@ -454,20 +454,21 @@ int NDEFDecodeAndPrint(uint8_t *ndef, size_t ndefLen, bool verbose) { case 0x01: { indx++; uint16_t len = ndefTLVGetLength(&ndef[indx], &indx); - PrintAndLogEx(INFO, "-- NDEF Lock Control."); + PrintAndLogEx(SUCCESS, "--- " _CYAN_("NDEF Lock Control") " ---"); if (len != 3) { PrintAndLogEx(WARNING, "NDEF Lock Control block size must be 3 instead of %d.", len); } else { - uint8_t PagesAddr = (ndef[indx] >> 4) & 0x0f; - uint8_t ByteOffset = ndef[indx] & 0x0f; + uint8_t pages_addr = (ndef[indx] >> 4) & 0x0f; + uint8_t byte_offset = ndef[indx] & 0x0f; uint8_t Size = ndef[indx + 1]; uint8_t BytesLockedPerLockBit = (ndef[indx + 2] >> 4) & 0x0f; - uint8_t BytesPerPage = ndef[indx + 2] & 0x0f; - PrintAndLogEx(SUCCESS, "PagesAddr. number of pages: %d", PagesAddr); - PrintAndLogEx(SUCCESS, "ByteOffset. number of bytes: %d", ByteOffset); - PrintAndLogEx(SUCCESS, "Size. size in bits of the lock area: %d. bytes approx: %d", Size, Size / 8); - PrintAndLogEx(SUCCESS, "BytesPerPage. number of bytes per page: %d", BytesPerPage); - PrintAndLogEx(SUCCESS, "BytesLockedPerLockBit. number of bytes that each dynamic lock bit is able to lock: %d", BytesLockedPerLockBit); + uint8_t bytes_per_page = ndef[indx + 2] & 0x0f; + PrintAndLogEx(SUCCESS, " Pages addr (number of pages) : %d", pages_addr); + PrintAndLogEx(SUCCESS, "Byte offset (number of bytes) : %d", byte_offset); + PrintAndLogEx(SUCCESS, "Size in bits of the lock area : %d. bytes approx: %d", Size, Size / 8); + PrintAndLogEx(SUCCESS, " Number of bytes / page : %d", bytes_per_page); + PrintAndLogEx(SUCCESS, "Bytes Locked Per LockBit."); + PrintAndLogEx(SUCCESS, " number of bytes that each dynamic lock bit is able to lock: %d", BytesLockedPerLockBit); } indx += len; break; @@ -475,18 +476,18 @@ int NDEFDecodeAndPrint(uint8_t *ndef, size_t ndefLen, bool verbose) { case 0x02: { indx++; uint16_t len = ndefTLVGetLength(&ndef[indx], &indx); - PrintAndLogEx(INFO, "-- NDEF Memory Control."); + PrintAndLogEx(SUCCESS, "--- " _CYAN_("NDEF Memory Control") " ---"); if (len != 3) { PrintAndLogEx(WARNING, "NDEF Memory Control block size must be 3 instead of %d.", len); } else { - uint8_t PagesAddr = (ndef[indx] >> 4) & 0x0f; - uint8_t ByteOffset = ndef[indx] & 0x0f; + uint8_t pages_addr = (ndef[indx] >> 4) & 0x0f; + uint8_t byte_offset = ndef[indx] & 0x0f; uint8_t Size = ndef[indx + 1]; - uint8_t BytesPerPage = ndef[indx + 2] & 0x0f; - PrintAndLogEx(SUCCESS, "PagesAddr. number of pages: %d", PagesAddr); - PrintAndLogEx(SUCCESS, "ByteOffset. number of bytes: %d", ByteOffset); - PrintAndLogEx(SUCCESS, "Size. size in bits of the reserved area: %d. bytes approx: %d", Size, Size / 8); - PrintAndLogEx(SUCCESS, "BytesPerPage. number of bytes per page: %d", BytesPerPage); + uint8_t bytes_per_page = ndef[indx + 2] & 0x0f; + PrintAndLogEx(SUCCESS, " Pages addr (number of pages) : %d", pages_addr); + PrintAndLogEx(SUCCESS, "Byte offset (number of bytes) : %d", byte_offset); + PrintAndLogEx(SUCCESS, "Size in bits of the reserved area : %d. bytes approx: %d", Size, Size / 8); + PrintAndLogEx(SUCCESS, " Number of bytes / page : %d", bytes_per_page); } indx += len; break; @@ -494,28 +495,36 @@ int NDEFDecodeAndPrint(uint8_t *ndef, size_t ndefLen, bool verbose) { case 0x03: { indx++; uint16_t len = ndefTLVGetLength(&ndef[indx], &indx); - PrintAndLogEx(SUCCESS, "Found NDEF message (%d bytes)", len); - - int res = NDEFRecordsDecodeAndPrint(&ndef[indx], len); - if (res != PM3_SUCCESS) - return res; + PrintAndLogEx(SUCCESS, "--- " _CYAN_("NDEF Message") " ---"); + if (len == 0) { + PrintAndLogEx(SUCCESS, "Found NDEF message w zero length"); + } else { + PrintAndLogEx(SUCCESS, "Found NDEF message (%d bytes)", len); + int res = NDEFRecordsDecodeAndPrint(&ndef[indx], len); + if (res != PM3_SUCCESS) + return res; + } + indx += len; break; } case 0xfd: { indx++; uint16_t len = ndefTLVGetLength(&ndef[indx], &indx); - PrintAndLogEx(SUCCESS, "-- NDEF proprietary info. Skipped %d bytes.", len); + PrintAndLogEx(SUCCESS, "--- " _CYAN_("Proprietary info") " ---"); + PrintAndLogEx(SUCCESS, " Can't decode, skipping %d bytes", len); indx += len; break; } case 0xfe: { - PrintAndLogEx(SUCCESS, "-- NDEF Terminator. Done."); + PrintAndLogEx(SUCCESS, "NDEF Terminator detected"); return PM3_SUCCESS; } default: { - PrintAndLogEx(ERR, "unknown tag 0x%02x", ndef[indx]); + if (verbose) + PrintAndLogEx(ERR, "unknown tag 0x%02x", ndef[indx]); + return PM3_ESOFT; } } From 2bc64e997fb85a610634db60d319841bd1102d73 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 21 Jun 2020 16:36:12 +0200 Subject: [PATCH 514/527] renamed sc to smart, and colors. --- client/src/cmdmain.c | 13 ++++++++----- 1 file changed, 8 insertions(+), 5 deletions(-) diff --git a/client/src/cmdmain.c b/client/src/cmdmain.c index 2664ed3a1..0ca9826d8 100644 --- a/client/src/cmdmain.c +++ b/client/src/cmdmain.c @@ -248,8 +248,9 @@ static int CmdPref(const char *Cmd) { } static command_t CommandTable[] = { - {"help", CmdHelp, AlwaysAvailable, "This help. Use '<command> help' for details of a particular command."}, - {"auto", CmdAuto, IfPm3Present, "Automated detection process for unknown tags"}, + + {"--------",CmdHelp, AlwaysAvailable, "----------------------- " _CYAN_("sub") " -----------------------"}, + {"analyse", CmdAnalyse, AlwaysAvailable, "{ Analyse utils... }"}, {"data", CmdData, AlwaysAvailable, "{ Plot window / data buffer manipulation... }"}, {"emv", CmdEMV, AlwaysAvailable, "{ EMV ISO-14443 / ISO-7816... }"}, @@ -258,15 +259,17 @@ static command_t CommandTable[] = { {"lf", CmdLF, AlwaysAvailable, "{ Low frequency commands... }"}, {"mem", CmdFlashMem, IfPm3Flash, "{ Flash Memory manipulation... }"}, {"reveng", CmdRev, AlwaysAvailable, "{ CRC calculations from RevEng software }"}, - {"sc", CmdSmartcard, AlwaysAvailable, "{ Smart card ISO-7816 commands... }"}, + {"smart", CmdSmartcard, AlwaysAvailable, "{ Smart card ISO-7816 commands... }"}, {"script", CmdScript, AlwaysAvailable, "{ Scripting commands }"}, {"trace", CmdTrace, AlwaysAvailable, "{ Trace manipulation... }"}, {"usart", CmdUsart, IfPm3FpcUsartFromUsb, "{ USART commands... }"}, {"wiegand", CmdWiegand, AlwaysAvailable, "{ Wiegand format manipulation... }"}, - {"", CmdHelp, AlwaysAvailable, ""}, + {"--------",CmdHelp, AlwaysAvailable, "----------------------- " _CYAN_("sub") " -----------------------"}, + {"auto", CmdAuto, IfPm3Present, "Automated detection process for unknown tags"}, + {"help", CmdHelp, AlwaysAvailable, "This help. Use " _YELLOW_("'<command> help'") " for details of a particular command."}, {"hints", CmdHints, AlwaysAvailable, "Turn hints on / off"}, - {"pref", CmdPref, AlwaysAvailable, "Edit preferences"}, {"msleep", CmdMsleep, AlwaysAvailable, "Add a pause in milliseconds"}, + {"pref", CmdPref, AlwaysAvailable, "Edit preferences"}, {"rem", CmdRem, AlwaysAvailable, "Add a text line in log file"}, {"quit", CmdQuit, AlwaysAvailable, ""}, {"exit", CmdQuit, AlwaysAvailable, "Exit program"}, From a93053c5736f07a5aa568cd2b7dc4943c9dd0c32 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 21 Jun 2020 16:40:12 +0200 Subject: [PATCH 515/527] textual --- client/src/cmddata.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/client/src/cmddata.c b/client/src/cmddata.c index 49338becc..b1f43244b 100644 --- a/client/src/cmddata.c +++ b/client/src/cmddata.c @@ -2310,8 +2310,11 @@ static int CmdDataNDEF(const char *Cmd) { CLIParserContext *ctx; CLIParserInit(&ctx, "data ndef", - "Prints NFC Data Exchange Format (NDEF)", - "Usage:\n\tdata ndef -d 9101085402656e48656c6c6f5101085402656e576f726c64\n"); + "Decode and print NFC Data Exchange Format (NDEF)", + "Samples:\n" + _YELLOW_("\tdata ndef -d 9101085402656e48656c6c6f5101085402656e576f726c64\n") + _YELLOW_("\tdata ndef -d 0103d020240203e02c040300fe\n") + ); void *argtable[] = { arg_param_begin, From 18da534554c50efdf5439056b58a17db04a393d8 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 21 Jun 2020 18:13:14 +0200 Subject: [PATCH 516/527] chg: 'hf sniff' - now malloc and is interupable --- armsrc/appmain.c | 7 ++++++- armsrc/hfsnoop.c | 29 +++++++++++++++++------------ client/src/cmdhf.c | 39 ++++++++++++++++++++++++++------------- 3 files changed, 49 insertions(+), 26 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index f49452514..ab18aa168 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -1424,7 +1424,12 @@ static void PacketReceived(PacketCommandNG *packet) { uint16_t len = 0; int res = HfSniff(payload->samplesToSkip, payload->triggersToSkip, &len); - reply_ng(CMD_HF_SNIFF, res, (uint8_t *)&len, sizeof(len)); + + struct { + uint16_t len; + } PACKED retval; + retval.len = len; + reply_ng(CMD_HF_SNIFF, res, (uint8_t *)&retval, sizeof(retval)); break; } #endif diff --git a/armsrc/hfsnoop.c b/armsrc/hfsnoop.c index c3e63876c..177a1f99e 100644 --- a/armsrc/hfsnoop.c +++ b/armsrc/hfsnoop.c @@ -19,13 +19,13 @@ #include "cmd.h" static void RAMFUNC optimizedSniff(uint16_t *dest, uint16_t dsize) { - for (; dsize > 0; dsize -= sizeof(dsize)) { + while (dsize > 0) { if (AT91C_BASE_SSC->SSC_SR & AT91C_SSC_RXRDY) { *dest = (uint16_t)(AT91C_BASE_SSC->SSC_RHR); dest++; + dsize -= sizeof(dsize); } } - Dbprintf("collected %u samples", dsize); } int HfSniff(uint32_t samplesToSkip, uint32_t triggersToSkip, uint16_t *len) { @@ -52,18 +52,18 @@ int HfSniff(uint32_t samplesToSkip, uint32_t triggersToSkip, uint16_t *len) { *len = (BigBuf_max_traceLen() & 0xFFFE); uint8_t *mem = BigBuf_malloc(*len); - int trigger_cnt = 0; + uint32_t trigger_cnt = 0; uint16_t r = 0, interval = 0; - bool pressed = false; while (pressed == false) { WDT_HIT(); // cancel w usb command. - if (interval == 1000) { + if (interval == 2000) { if (data_available()) break; + interval = 0; } else { interval++; @@ -77,8 +77,10 @@ int HfSniff(uint32_t samplesToSkip, uint32_t triggersToSkip, uint16_t *len) { // 180 (0xB4) arbitary value to see if a strong RF field is near. if (r > 180) { - if (++trigger_cnt > triggersToSkip) + + if (++trigger_cnt > triggersToSkip) { break; + } } } @@ -88,16 +90,19 @@ int HfSniff(uint32_t samplesToSkip, uint32_t triggersToSkip, uint16_t *len) { if (pressed == false) { // skip samples loop - int waitcount = samplesToSkip; - while (waitcount != 0) { + while (samplesToSkip != 0) { - if (AT91C_BASE_SSC->SSC_SR & (AT91C_SSC_RXRDY)) - waitcount--; + if (AT91C_BASE_SSC->SSC_SR & (AT91C_SSC_RXRDY)) { + samplesToSkip--; + } } - optimizedSniff((uint16_t *)mem, (*len) >> 2); + optimizedSniff((uint16_t*)mem, *len); - Dbprintf("Trigger kicked in (%d >= 180)", r); + if (DBGLEVEL >= DBG_INFO) { + Dbprintf("Trigger kicked in (%d >= 180)", r); + Dbprintf("Collected %u samples", *len); + } } //Resetting Frame mode (First set in fpgaloader.c) diff --git a/client/src/cmdhf.c b/client/src/cmdhf.c index f94fd7b6d..26723ca6a 100644 --- a/client/src/cmdhf.c +++ b/client/src/cmdhf.c @@ -46,7 +46,8 @@ static int CmdHelp(const char *Cmd); static int usage_hf_search(void) { PrintAndLogEx(NORMAL, "Usage: hf search"); - PrintAndLogEx(NORMAL, "Will try to find a HF read out of the unknown tag. Stops when found."); + PrintAndLogEx(NORMAL, "Will try to find a HF read out of the unknown tag."); + PrintAndLogEx(NORMAL, "Continues to search for all different HF protocols"); PrintAndLogEx(NORMAL, "Options:"); PrintAndLogEx(NORMAL, " h - This help"); PrintAndLogEx(NORMAL, ""); @@ -64,18 +65,21 @@ static int usage_hf_sniff(void) { PrintAndLogEx(NORMAL, " <skip triggers> - skip number of triggers"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " hf sniff"); - PrintAndLogEx(NORMAL, " hf sniff 1000 0"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf sniff")); + PrintAndLogEx(NORMAL, _YELLOW_(" hf sniff 1000 0")); + PrintAndLogEx(NORMAL, ""); return PM3_SUCCESS; } static int usage_hf_tune(void) { PrintAndLogEx(NORMAL, "Continuously measure HF antenna tuning."); - PrintAndLogEx(NORMAL, "Press button or Enter to interrupt."); + PrintAndLogEx(NORMAL, "Press button or `enter` to interrupt."); PrintAndLogEx(NORMAL, "Usage: hf tune [h] [<iter>]"); PrintAndLogEx(NORMAL, "Options:"); PrintAndLogEx(NORMAL, " h - This help"); PrintAndLogEx(NORMAL, " <iter> - number of iterations (default: 0=infinite)"); + PrintAndLogEx(NORMAL, "Examples:"); + PrintAndLogEx(NORMAL, _YELLOW_(" hf tune 1")); PrintAndLogEx(NORMAL, ""); return PM3_SUCCESS; } @@ -195,7 +199,7 @@ int CmdHFSearch(const char *Cmd) { int CmdHFTune(const char *Cmd) { char cmdp = tolower(param_getchar(Cmd, 0)); if (cmdp == 'h') return usage_hf_tune(); - int iter = param_get32ex(Cmd, 0, 0, 10); + int iter = param_get32ex(Cmd, 0, 0, 10); PrintAndLogEx(INFO, "Measuring HF antenna, click " _GREEN_("pm3 button") " or press " _GREEN_("Enter") " to exit"); PacketResponseNG resp; @@ -263,28 +267,37 @@ int CmdHFSniff(const char *Cmd) { for (;;) { if (kbd_enter_pressed()) { + SendCommandNG(CMD_BREAK_LOOP, NULL, 0); PrintAndLogEx(INFO, "User aborted"); break; } PacketResponseNG resp; - if (WaitForResponseTimeout(CMD_HF_SNIFF, &resp, 4000)) { + if (WaitForResponseTimeout(CMD_HF_SNIFF, &resp, 1000)) { if (resp.status == PM3_EOPABORTED) { + PrintAndLogEx(INFO, "Button pressed, user aborted"); break; } if (resp.status == PM3_SUCCESS) { - uint16_t len = resp.data.asDwords[0] & 0xFFFF; - PrintAndLogEx(INFO, "HF sniff len %u bytes", len); + struct r { + uint16_t len; + } PACKED; + struct r *retval = (struct r *)resp.data.asBytes; + + PrintAndLogEx(INFO, "HF sniff (%u samples)", retval->len); + + PrintAndLogEx(HINT, "Use `" _YELLOW_("data hpf") "` to remove offset"); PrintAndLogEx(HINT, "Use `" _YELLOW_("data plot") "` to view"); PrintAndLogEx(HINT, "Use `" _YELLOW_("data save") "` to save"); - // download bigbuf_malloced.. - // it reservs mem from the higher range. ie we can't start from beginning idx 0. - // but from - uint32_t start = pm3_capabilities.bigbuf_size - len; - int res = getSamplesEx(start, start + len, false); + // download bigbuf_malloc:d. + // it reserve memory from the higher end. + // At the moment, sniff takes all free memory in bigbuff. If this changes, + // we can't start from beginning idx 0 but from that hi-to-start-of-allocated. + uint32_t start = pm3_capabilities.bigbuf_size - retval->len; + int res = getSamplesEx(start, start, false); if (res != PM3_SUCCESS) { PrintAndLogEx(WARNING, "failed to download samples to client"); return res; From 37359df25aa5690d4c10b17b9749684a7935de3b Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Sun, 21 Jun 2020 18:14:30 +0200 Subject: [PATCH 517/527] textual --- armsrc/iso14443a.c | 9 +-------- 1 file changed, 1 insertion(+), 8 deletions(-) diff --git a/armsrc/iso14443a.c b/armsrc/iso14443a.c index 2a2c7e528..3b7b096a4 100644 --- a/armsrc/iso14443a.c +++ b/armsrc/iso14443a.c @@ -889,7 +889,7 @@ bool prepare_tag_modulation(tag_response_info_t *response_info, size_t max_buffe // Make sure we do not exceed the free buffer space if (ToSendMax > max_buffer_size) { - Dbprintf("Out of memory, when modulating bits for tag answer:"); + Dbprintf("ToSend buffer, Out-of-bound, when modulating bits for tag answer:"); Dbhexdump(response_info->response_n, response_info->response, false); return false; } @@ -2027,13 +2027,6 @@ int EmSendPrecompiledCmd(tag_response_info_t *p_response) { LastTimeProxToAirStart * 16 + DELAY_ARM2AIR_AS_TAG, (LastTimeProxToAirStart + p_response->ProxToAirDuration) * 16 + DELAY_ARM2AIR_AS_TAG, par); - - if (DBGLEVEL >= DBG_EXTENDED) { - Dbprintf("response_info->response %02X", p_response->response); - Dbprintf("response_info->response_n %02X", p_response->response_n); - Dbprintf("response_info->par %02X", &(p_response->par)); - } - return ret; } From b0c5ade65a58a516f593e4af155d692bba3b6203 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 22 Jun 2020 12:22:52 +0200 Subject: [PATCH 518/527] adapt standalone to dynamic stack --- armsrc/Standalone/lf_icehid.c | 19 +++++++++++-------- 1 file changed, 11 insertions(+), 8 deletions(-) diff --git a/armsrc/Standalone/lf_icehid.c b/armsrc/Standalone/lf_icehid.c index 7ac91d126..d125b0c03 100644 --- a/armsrc/Standalone/lf_icehid.c +++ b/armsrc/Standalone/lf_icehid.c @@ -231,7 +231,8 @@ static uint32_t IceHIDDemod(void) { uint32_t hi2 = 0, hi = 0, lo = 0; // large enough to catch 2 sequences of largest format - size_t size = 50 * 128 * 2; // 12800 bytes +// size_t size = 50 * 128 * 2; // 12800 bytes + size_t size = MIN(12800, BigBuf_max_traceLen()); //uint8_t *dest = BigBuf_malloc(size); uint8_t *dest = BigBuf_get_addr(); @@ -350,30 +351,32 @@ void RunMod(void) { uint32_t res; - // since we steal 12800 from bigbuffer, no need to sample it. - DoAcquisition_config(false, 28000); + // since we steal 12800 from bigbuffer, no need to sample it. + size_t size = MIN(28000, BigBuf_max_traceLen()); + DoAcquisition_config(false, size); res = IceHIDDemod(); if (res == PM3_SUCCESS) { LED_A_OFF(); continue; } - DoAcquisition_config(false, 28000); + DoAcquisition_config(false, size); res = IceAWIDdemod(); if (res == PM3_SUCCESS) { LED_A_OFF(); continue; } - DoAcquisition_config(false, 20000); - res = IceEM410xdemod(); + DoAcquisition_config(false, size); + res = IceIOdemod(); if (res == PM3_SUCCESS) { LED_A_OFF(); continue; } - DoAcquisition_config(false, 28000); - res = IceIOdemod(); + size = MIN(20000, BigBuf_max_traceLen()); + DoAcquisition_config(false, size); + res = IceEM410xdemod(); if (res == PM3_SUCCESS) { LED_A_OFF(); continue; From ba6bc0ecefcdc8ce13d9f7ea10aec401fd0168f5 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 22 Jun 2020 12:57:28 +0200 Subject: [PATCH 519/527] chg: 'lf io watch' - uses NG and reports back to client --- armsrc/appmain.c | 5 +++-- armsrc/lfops.c | 46 +++++++++++++++++++++++++++----------------- armsrc/lfops.h | 3 ++- armsrc/lfsampling.c | 7 ++++--- client/src/cmdlfio.c | 7 +++++-- include/pm3_cmd.h | 2 +- 6 files changed, 43 insertions(+), 27 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index ab18aa168..162783489 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -818,9 +818,10 @@ static void PacketReceived(PacketCommandNG *packet) { CopyHIDtoT55x7(packet->oldarg[0], packet->oldarg[1], packet->oldarg[2], packet->data.asBytes[0]); break; } - case CMD_LF_IO_DEMOD: { + case CMD_LF_IO_WATCH: { uint32_t high, low; - CmdIOdemodFSK(0, &high, &low, 1); + int res = lf_io_watch(0, &high, &low); + reply_ng(CMD_LF_IO_WATCH, res, NULL, 0); break; } case CMD_LF_EM410X_DEMOD: { diff --git a/armsrc/lfops.c b/armsrc/lfops.c index 03c6c5164..3f8d8bafc 100644 --- a/armsrc/lfops.c +++ b/armsrc/lfops.c @@ -1467,29 +1467,41 @@ void CmdEM410xdemod(int findone, uint32_t *high, uint64_t *low, int ledcontrol) if (ledcontrol) LED_A_OFF(); } -void CmdIOdemodFSK(int findone, uint32_t *high, uint32_t *low, int ledcontrol) { - - uint8_t *dest = BigBuf_get_addr(); +int lf_io_watch(int findone, uint32_t *high, uint32_t *low) { int dummyIdx = 0; uint32_t code = 0, code2 = 0; uint8_t version = 0, facilitycode = 0, crc = 0; uint16_t number = 0, calccrc = 0; - size_t size = BigBuf_max_traceLen(); + size_t size = 12000; + uint8_t *dest = BigBuf_malloc(size); BigBuf_Clear_keep_EM(); // Configure to go in 125kHz listen mode LFSetupFPGAForADC(LF_DIVISOR_125, true); - while (!BUTTON_PRESS() && !data_available()) { + int res = PM3_SUCCESS; + uint16_t interval = 0; + while (BUTTON_PRESS() == false) { + WDT_HIT(); - if (ledcontrol) LED_A_ON(); + + // cancel w usb command. + if (interval == 2000) { + if (data_available()) { + res = PM3_EOPABORTED; + break; + } + interval = 0; + } else { + interval++; + } DoAcquisition_default(-1, false); - size = MIN(12000, BigBuf_max_traceLen()); + size = 12000; //fskdemod and get start index int idx = detectIOProx(dest, &size, &dummyIdx); @@ -1530,17 +1542,17 @@ void CmdIOdemodFSK(int findone, uint32_t *high, uint32_t *low, int ledcontrol) { number = (bytebits_to_byte(dest + idx + 36, 8) << 8) | (bytebits_to_byte(dest + idx + 45, 8)); //36,9 crc = bytebits_to_byte(dest + idx + 54, 8); - for (uint8_t i = 1; i < 6; ++i) + for (uint8_t i = 1; i < 6; ++i) { calccrc += bytebits_to_byte(dest + idx + 9 * i, 8); + } calccrc &= 0xff; calccrc = 0xff - calccrc; - const char *crcStr = (crc == calccrc) ? "ok" : "!crc"; + const char *crcStr = (crc == calccrc) ? _GREEN_("ok") : _RED_("fail"); - Dbprintf("IO Prox XSF(%02d)%02x:%05d (%08x%08x) [%02x %s]", version, facilitycode, number, code, code2, crc, crcStr); + Dbprintf("IO Prox XSF(%02d)%02x:%05d (%08x%08x) (%s)", version, facilitycode, number, code, code2, crcStr); // if we're only looking for one tag if (findone) { - if (ledcontrol) LED_A_OFF(); *high = code; *low = code2; break; @@ -1550,10 +1562,8 @@ void CmdIOdemodFSK(int findone, uint32_t *high, uint32_t *low, int ledcontrol) { number = 0; calccrc = 0; } - FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - DbpString("IOProx fsk demod stopped"); - if (ledcontrol) LED_A_OFF(); + return res; } /*------------------------------ @@ -2006,12 +2016,12 @@ void T55xx_ChkPwds(uint8_t flags) { DbpString("[+] T55XX Check pwds using flashmemory starting"); - uint8_t ret = 0; // First get baseline and setup LF mode. // tends to mess up BigBuf - uint8_t *buf = BigBuf_get_addr(); - uint32_t b1, baseline = 0; - uint8_t downlink_mode = (flags >> 3) & 0x03; + uint8_t *buf = BigBuf_get_addr(); + uint8_t ret = 0; + uint8_t downlink_mode = (flags >> 3) & 0x03; + uint32_t b1, baseline = 0; // collect baseline for failed attempt uint8_t x = 32; diff --git a/armsrc/lfops.h b/armsrc/lfops.h index eb31e54a6..4bc04bf8c 100644 --- a/armsrc/lfops.h +++ b/armsrc/lfops.h @@ -38,7 +38,8 @@ void CmdNRZsimTAG(uint8_t invert, uint8_t separator, uint8_t clk, uint16_t size, void CmdHIDdemodFSK(int findone, uint32_t *high, uint32_t *low, int ledcontrol); void CmdAWIDdemodFSK(int findone, uint32_t *high, uint32_t *low, int ledcontrol); // Realtime demodulation mode for AWID26 void CmdEM410xdemod(int findone, uint32_t *high, uint64_t *low, int ledcontrol); -void CmdIOdemodFSK(int findone, uint32_t *high, uint32_t *low, int ledcontrol); +int lf_io_watch(int findone, uint32_t *high, uint32_t *low); + void CopyHIDtoT55x7(uint32_t hi2, uint32_t hi, uint32_t lo, uint8_t longFMT); // Clone an HID card to T5557/T5567 void CopyVikingtoT55xx(uint8_t *blocks, uint8_t Q5); void WriteEM410x(uint32_t card, uint32_t id_hi, uint32_t id_lo); diff --git a/armsrc/lfsampling.c b/armsrc/lfsampling.c index f74101573..40ad29f93 100644 --- a/armsrc/lfsampling.c +++ b/armsrc/lfsampling.c @@ -132,6 +132,8 @@ void initSampleBufferEx(uint32_t *sample_size, bool use_malloc) { } else { if (*sample_size == 0) { *sample_size = BigBuf_max_traceLen(); + } else { + *sample_size = MIN(*sample_size, BigBuf_max_traceLen()); } data.buffer = BigBuf_get_addr(); } @@ -256,11 +258,11 @@ uint32_t DoAcquisition(uint8_t decimation, uint8_t bits_per_sample, bool avg, in uint32_t cancel_counter = 0; int16_t checked = 0; - while (!BUTTON_PRESS()) { + while (BUTTON_PRESS() == false) { // only every 1000th times, in order to save time when collecting samples. // interruptible only when logging not yet triggered - if ((checked == 1000) && (trigger_threshold > 0)) { + if ((checked == 2000) && (trigger_threshold > 0)) { if (data_available()) { checked = -1; break; @@ -273,7 +275,6 @@ uint32_t DoAcquisition(uint8_t decimation, uint8_t bits_per_sample, bool avg, in WDT_HIT(); if (AT91C_BASE_SSC->SSC_SR & AT91C_SSC_TXRDY) { -// AT91C_BASE_SSC->SSC_THR = 0x43; LED_D_ON(); } diff --git a/client/src/cmdlfio.c b/client/src/cmdlfio.c index e93a7cde3..a754e5aa4 100644 --- a/client/src/cmdlfio.c +++ b/client/src/cmdlfio.c @@ -79,8 +79,11 @@ static int CmdIOProxWatch(const char *Cmd) { uint8_t ctmp = tolower(param_getchar(Cmd, 0)); if (ctmp == 'h') return usage_lf_io_watch(); clearCommandBuffer(); - SendCommandNG(CMD_LF_IO_DEMOD, NULL, 0); - return PM3_SUCCESS; + SendCommandNG(CMD_LF_IO_WATCH, NULL, 0); + PacketResponseNG resp; + WaitForResponse(CMD_LF_IO_WATCH, &resp); + PrintAndLogEx(INFO, "Done"); + return resp.status; } //by marshmellow diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index 3cafb9df1..daa05d8fe 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -399,7 +399,7 @@ typedef struct { #define CMD_LF_PCF7931_WRITE 0x0223 #define CMD_LF_EM4X_READWORD 0x0218 #define CMD_LF_EM4X_WRITEWORD 0x0219 -#define CMD_LF_IO_DEMOD 0x021A +#define CMD_LF_IO_WATCH 0x021A #define CMD_LF_EM410X_DEMOD 0x021C // Sampling configuration for LF reader/sniffer #define CMD_LF_SAMPLING_SET_CONFIG 0x021D From 683954316a29375b99108cd042745f429831aef8 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 22 Jun 2020 13:24:33 +0200 Subject: [PATCH 520/527] chg: 'lf em 410x_watch' - now uses NG and on deviceside only --- armsrc/Standalone/lf_em4100rswb.c | 2 +- armsrc/Standalone/lf_em4100rwc.c | 2 +- armsrc/appmain.c | 5 +- armsrc/lfops.c | 43 +++++++++++------ armsrc/lfops.h | 2 +- client/src/cmdlfem4x.c | 79 ++++++++++++++----------------- include/pm3_cmd.h | 2 +- 7 files changed, 71 insertions(+), 64 deletions(-) diff --git a/armsrc/Standalone/lf_em4100rswb.c b/armsrc/Standalone/lf_em4100rswb.c index ac470ce29..b1a246e28 100644 --- a/armsrc/Standalone/lf_em4100rswb.c +++ b/armsrc/Standalone/lf_em4100rswb.c @@ -256,7 +256,7 @@ static int ExecuteMode(int mode, int slot) { //default first mode is simulate case LF_RWSB_MODE_READ: Dbprintf("[=] >> Read mode started <<"); - CmdEM410xdemod(1, &high[slot], &low[slot], 0); + CmdEM410xdemod(1, &high[slot], &low[slot]); LED_Update(mode, slot); Dbprintf("[=] >> Tag found. Saving. <<"); FlashLEDs(100, 5); diff --git a/armsrc/Standalone/lf_em4100rwc.c b/armsrc/Standalone/lf_em4100rwc.c index f69820513..0ae7e7444 100644 --- a/armsrc/Standalone/lf_em4100rwc.c +++ b/armsrc/Standalone/lf_em4100rwc.c @@ -161,7 +161,7 @@ void RunMod(void) { state = 3; } else if (button_pressed == BUTTON_SINGLE_CLICK) { // Click - exit to select mode - CmdEM410xdemod(1, &high[selected], &low[selected], 0); + CmdEM410xdemod(1, &high[selected], &low[selected]); FlashLEDs(100, 5); #ifdef WITH_FLASH SaveIDtoFlash(selected, low[selected]); diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 162783489..daab76e78 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -824,10 +824,11 @@ static void PacketReceived(PacketCommandNG *packet) { reply_ng(CMD_LF_IO_WATCH, res, NULL, 0); break; } - case CMD_LF_EM410X_DEMOD: { + case CMD_LF_EM410X_WATCH: { uint32_t high; uint64_t low; - CmdEM410xdemod(packet->oldarg[0], &high, &low, 1); + int res = lf_em410x_watch(0, &high, &low); + reply_ng(CMD_LF_EM410X_WATCH, res, NULL, 0); break; } case CMD_LF_EM410X_WRITE: { diff --git a/armsrc/lfops.c b/armsrc/lfops.c index 3f8d8bafc..3a20bf335 100644 --- a/armsrc/lfops.c +++ b/armsrc/lfops.c @@ -1405,22 +1405,35 @@ void CmdAWIDdemodFSK(int findone, uint32_t *high, uint32_t *low, int ledcontrol) if (ledcontrol) LED_A_OFF(); } -void CmdEM410xdemod(int findone, uint32_t *high, uint64_t *low, int ledcontrol) { - uint8_t *dest = BigBuf_get_addr(); +int lf_em410x_watch(int findone, uint32_t *high, uint64_t *low) { size_t size, idx = 0; int clk = 0, invert = 0, maxErr = 20; uint32_t hi = 0; uint64_t lo = 0; + uint8_t *dest = BigBuf_get_addr(); + clear_trace(); + set_tracing(false); BigBuf_Clear_keep_EM(); LFSetupFPGAForADC(LF_DIVISOR_125, true); - while (!BUTTON_PRESS() && !data_available()) { - + int res = PM3_SUCCESS; + uint16_t interval = 0; + while (BUTTON_PRESS() == false) { WDT_HIT(); - if (ledcontrol) LED_A_ON(); + + // cancel w usb command. + if (interval == 2000) { + if (data_available()) { + res = PM3_EOPABORTED; + break; + } + interval = 0; + } else { + interval++; + } DoAcquisition_default(-1, false); @@ -1428,10 +1441,10 @@ void CmdEM410xdemod(int findone, uint32_t *high, uint64_t *low, int ledcontrol) //askdemod and manchester decode int errCnt = askdemod(dest, &size, &clk, &invert, maxErr, 0, 1); - WDT_HIT(); - if (errCnt > 50) continue; + WDT_HIT(); + errCnt = Em410xDecode(dest, &size, &idx, &hi, &lo); if (errCnt == 1) { if (size == 128) { @@ -1452,7 +1465,6 @@ void CmdEM410xdemod(int findone, uint32_t *high, uint64_t *low, int ledcontrol) } if (findone) { - if (ledcontrol) LED_A_OFF(); *high = hi; *low = lo; break; @@ -1463,8 +1475,9 @@ void CmdEM410xdemod(int findone, uint32_t *high, uint64_t *low, int ledcontrol) } FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - DbpString("EM man/ask demod stopped"); - if (ledcontrol) LED_A_OFF(); + BigBuf_free(); + LEDsoff(); + return res; } int lf_io_watch(int findone, uint32_t *high, uint32_t *low) { @@ -1474,10 +1487,10 @@ int lf_io_watch(int findone, uint32_t *high, uint32_t *low) { uint8_t version = 0, facilitycode = 0, crc = 0; uint16_t number = 0, calccrc = 0; - size_t size = 12000; - uint8_t *dest = BigBuf_malloc(size); - + uint8_t *dest = BigBuf_get_addr(); BigBuf_Clear_keep_EM(); + clear_trace(); + set_tracing(false); // Configure to go in 125kHz listen mode LFSetupFPGAForADC(LF_DIVISOR_125, true); @@ -1501,7 +1514,7 @@ int lf_io_watch(int findone, uint32_t *high, uint32_t *low) { DoAcquisition_default(-1, false); - size = 12000; + size_t size = MIN(12000, BigBuf_max_traceLen()); //fskdemod and get start index int idx = detectIOProx(dest, &size, &dummyIdx); @@ -1563,6 +1576,8 @@ int lf_io_watch(int findone, uint32_t *high, uint32_t *low) { calccrc = 0; } FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); + BigBuf_free(); + LEDsoff(); return res; } diff --git a/armsrc/lfops.h b/armsrc/lfops.h index 4bc04bf8c..f7a0230c8 100644 --- a/armsrc/lfops.h +++ b/armsrc/lfops.h @@ -37,7 +37,7 @@ void CmdNRZsimTAG(uint8_t invert, uint8_t separator, uint8_t clk, uint16_t size, void CmdHIDdemodFSK(int findone, uint32_t *high, uint32_t *low, int ledcontrol); void CmdAWIDdemodFSK(int findone, uint32_t *high, uint32_t *low, int ledcontrol); // Realtime demodulation mode for AWID26 -void CmdEM410xdemod(int findone, uint32_t *high, uint64_t *low, int ledcontrol); +int lf_em410x_watch(int findone, uint32_t *high, uint64_t *low); int lf_io_watch(int findone, uint32_t *high, uint32_t *low); void CopyHIDtoT55x7(uint32_t hi2, uint32_t hi, uint32_t lo, uint8_t longFMT); // Clone an HID card to T5557/T5567 diff --git a/client/src/cmdlfem4x.c b/client/src/cmdlfem4x.c index 40caf367b..baea5aa5d 100644 --- a/client/src/cmdlfem4x.c +++ b/client/src/cmdlfem4x.c @@ -44,13 +44,24 @@ static int usage_lf_em410x_demod(void) { PrintAndLogEx(NORMAL, " maxerror - set maximum allowed errors, default = 100."); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " lf em 410x_demod = demod an EM410x Tag ID from GraphBuffer"); - PrintAndLogEx(NORMAL, " lf em 410x_demod 32 = demod an EM410x Tag ID from GraphBuffer using a clock of RF/32"); - PrintAndLogEx(NORMAL, " lf em 410x_demod 32 1 = demod an EM410x Tag ID from GraphBuffer using a clock of RF/32 and inverting data"); - PrintAndLogEx(NORMAL, " lf em 410x_demod 1 = demod an EM410x Tag ID from GraphBuffer while inverting data"); - PrintAndLogEx(NORMAL, " lf em 410x_demod 64 1 0 = demod an EM410x Tag ID from GraphBuffer using a clock of RF/64 and inverting data and allowing 0 demod errors"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf em 410x_demod") " = demod an EM410x Tag ID from GraphBuffer"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf em 410x_demod 32") " = demod an EM410x Tag ID from GraphBuffer using a clock of RF/32"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf em 410x_demod 32 1") " = demod an EM410x Tag ID from GraphBuffer using a clock of RF/32 and inverting data"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf em 410x_demod 1") " = demod an EM410x Tag ID from GraphBuffer while inverting data"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf em 410x_demod 64 1 0") " = demod an EM410x Tag ID from GraphBuffer using a clock of RF/64 and inverting data and allowing 0 demod errors"); return PM3_SUCCESS; } +static int usage_lf_em410x_watch(void) { + PrintAndLogEx(NORMAL, "Enables IOProx compatible reader mode printing details of scanned tags."); + PrintAndLogEx(NORMAL, "By default, values are printed and logged until the button is pressed or another USB command is issued."); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(NORMAL, "Usage: lf em 410x_watch"); + PrintAndLogEx(NORMAL, ""); + PrintAndLogEx(NORMAL, "Examples:"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf em 410x_watch")); + return PM3_SUCCESS; +} + static int usage_lf_em410x_write(void) { PrintAndLogEx(NORMAL, "Writes EM410x ID to a T55x7 / T5555 (Q5) tag"); PrintAndLogEx(NORMAL, ""); @@ -61,7 +72,7 @@ static int usage_lf_em410x_write(void) { PrintAndLogEx(NORMAL, " <card> - 0|1 T5555 (Q5) / T55x7"); PrintAndLogEx(NORMAL, " <clock> - 16|32|40|64, optional, set R/F clock rate, defaults to 64"); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " lf em 410x_write 0F0368568B 1 = write ID to t55x7 card"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf em 410x_write 0F0368568B 1") " = write ID to t55x7 card"); return PM3_SUCCESS; } static int usage_lf_em410x_ws(void) { @@ -71,7 +82,7 @@ static int usage_lf_em410x_ws(void) { PrintAndLogEx(NORMAL, "Options:"); PrintAndLogEx(NORMAL, " h - this help"); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " lf em 410x_spoof"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf em 410x_spoof")); return PM3_SUCCESS; } static int usage_lf_em410x_sim(void) { @@ -83,8 +94,8 @@ static int usage_lf_em410x_sim(void) { PrintAndLogEx(NORMAL, " uid - uid (10 HEX symbols)"); PrintAndLogEx(NORMAL, " clock - clock (32|64) (optional)"); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " lf em 410x_sim 0F0368568B"); - PrintAndLogEx(NORMAL, " lf em 410x_sim 0F0368568B 32"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf em 410x_sim 0F0368568B")); + PrintAndLogEx(NORMAL, _YELLOW_(" lf em 410x_sim 0F0368568B 32")); return PM3_SUCCESS; } static int usage_lf_em410x_brute(void) { @@ -97,10 +108,10 @@ static int usage_lf_em410x_brute(void) { PrintAndLogEx(NORMAL, " d (2000) - pause delay in milliseconds between UIDs simulation, default 1000 ms (optional)"); PrintAndLogEx(NORMAL, " c (32) - clock (32|64), default 64 (optional)"); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " lf em 410x_brute ids.txt"); - PrintAndLogEx(NORMAL, " lf em 410x_brute ids.txt c 32"); - PrintAndLogEx(NORMAL, " lf em 410x_brute ids.txt d 3000"); - PrintAndLogEx(NORMAL, " lf em 410x_brute ids.txt d 3000 c 32"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf em 410x_brute ids.txt")); + PrintAndLogEx(NORMAL, _YELLOW_(" lf em 410x_brute ids.txt c 32")); + PrintAndLogEx(NORMAL, _YELLOW_( " lf em 410x_brute ids.txt d 3000")); + PrintAndLogEx(NORMAL, _YELLOW_(" lf em 410x_brute ids.txt d 3000 c 32")); return PM3_SUCCESS; } @@ -439,16 +450,20 @@ int AskEm410xDemod(const char *Cmd, uint32_t *hi, uint64_t *lo, bool verbose) { return PM3_ESOFT; return AskEm410xDecode(verbose, hi, lo); } -/* + // this read loops on device side. // uses the demod in lfops.c -static int CmdEM410xRead_device(const char *Cmd) { - char cmdp = tolower(param_getchar(Cmd, 0)); - uint8_t findone = (cmdp == '1') ? 1 : 0; - SendCommandMIX(CMD_LF_EM410X_DEMOD, findone, 0, 0, NULL, 0); - return PM3_SUCCESS; +static int CmdEM410xWatch(const char *Cmd) { + uint8_t ctmp = tolower(param_getchar(Cmd, 0)); + if (ctmp == 'h') return usage_lf_em410x_watch(); + clearCommandBuffer(); + SendCommandNG(CMD_LF_EM410X_WATCH, NULL, 0); + PacketResponseNG resp; + WaitForResponse(CMD_LF_EM410X_WATCH, &resp); + PrintAndLogEx(INFO, "Done"); + return resp.status; } -*/ + //by marshmellow //takes 3 arguments - clock, invert and maxErr as integers //attempts to demodulate ask while decoding manchester @@ -608,30 +623,6 @@ static int CmdEM410xBrute(const char *Cmd) { return PM3_SUCCESS; } -/* Function is equivalent of lf read + data samples + em410xread - * looped until an EM410x tag is detected - * - * Why is CmdSamples("16000")? - * TBD: Auto-grow sample size based on detected sample rate. IE: If the - * rate gets lower, then grow the number of samples - * Changed by martin, 4000 x 4 = 16000, - * see http://www.proxmark.org/forum/viewtopic.php?pid=7235#p7235 - * - * EDIT -- capture enough to get 2 complete preambles at the slowest data rate known to be used (rf/64) (64*64*2+9 = 8201) marshmellow -*/ -static int CmdEM410xWatch(const char *Cmd) { - (void)Cmd; // Cmd is not used so far - do { - if (kbd_enter_pressed()) { - PrintAndLogEx(WARNING, "\naborted via keyboard!\n"); - break; - } - lf_read(false, 12288); - - } while (CmdEM410xRead("") != PM3_SUCCESS); - return PM3_SUCCESS; -} - //currently only supports manchester modulations static int CmdEM410xWatchnSpoof(const char *Cmd) { diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index daa05d8fe..1fbc97e22 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -400,7 +400,7 @@ typedef struct { #define CMD_LF_EM4X_READWORD 0x0218 #define CMD_LF_EM4X_WRITEWORD 0x0219 #define CMD_LF_IO_WATCH 0x021A -#define CMD_LF_EM410X_DEMOD 0x021C +#define CMD_LF_EM410X_WATCH 0x021C // Sampling configuration for LF reader/sniffer #define CMD_LF_SAMPLING_SET_CONFIG 0x021D #define CMD_LF_FSK_SIMULATE 0x021E From b5345eb0bd83d53a0f4241ce6c726c238dec32a1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 22 Jun 2020 13:25:29 +0200 Subject: [PATCH 521/527] use 8488 bytes stack like before --- common_arm/ldscript.common | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/common_arm/ldscript.common b/common_arm/ldscript.common index 443d9825d..610e5c0b4 100644 --- a/common_arm/ldscript.common +++ b/common_arm/ldscript.common @@ -9,7 +9,7 @@ ms of the GNU GPL, version 2 or, ----------------------------------------------------------------------------- */ -stacksize = DEFINED(stacksize) ? stacksize : 9K; +stacksize = DEFINED(stacksize) ? stacksize : 8488; commonareasize = 0x20; /* AT91SAM7S256 has 256k Flash and 64k RAM */ From b59131d3491cb2da2c169bb579eef2fa3e809077 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 22 Jun 2020 14:56:13 +0200 Subject: [PATCH 522/527] chg: 'lf em/hid/io/awid watch' - colors, unified, NG --- armsrc/appmain.c | 21 +++++-- armsrc/lfops.c | 128 +++++++++++++++++++++++++---------------- armsrc/lfops.h | 9 ++- client/src/cmdlfawid.c | 30 ++++++---- client/src/cmdlfem4x.c | 76 +++++++++++++++--------- client/src/cmdlfhid.c | 16 ++++-- client/src/cmdlfio.c | 13 +++-- include/pm3_cmd.h | 4 +- 8 files changed, 187 insertions(+), 110 deletions(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index daab76e78..17893e84b 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -784,9 +784,10 @@ static void PacketReceived(PacketCommandNG *packet) { reply_mix(CMD_ACK, bits, 0, 0, 0, 0); break; } - case CMD_LF_HID_DEMOD: { + case CMD_LF_HID_WATCH: { uint32_t high, low; - CmdHIDdemodFSK(0, &high, &low, 1); + int res = lf_hid_watch(0, &high, &low); + reply_ng(CMD_LF_HID_WATCH, res, NULL, 0); break; } case CMD_LF_HID_SIMULATE: { @@ -832,7 +833,15 @@ static void PacketReceived(PacketCommandNG *packet) { break; } case CMD_LF_EM410X_WRITE: { - WriteEM410x(packet->oldarg[0], packet->oldarg[1], packet->oldarg[2]); + struct p { + uint8_t card; + uint8_t clock; + uint32_t high; + uint32_t low; + } PACKED; + struct p *payload = (struct p *)packet->data.asBytes; + int res = copy_em410x_to_t55xx(payload->card, payload->clock, payload->high, payload->low); + reply_ng(CMD_LF_EM410X_WRITE, res, NULL, 0); break; } case CMD_LF_TI_READ: { @@ -934,10 +943,10 @@ static void PacketReceived(PacketCommandNG *packet) { EM4xWriteWord(payload->address, payload->data, payload->password, payload->usepwd); break; } - case CMD_LF_AWID_DEMOD: { + case CMD_LF_AWID_WATCH: { uint32_t high, low; - // Set realtime AWID demodulation - CmdAWIDdemodFSK(0, &high, &low, 1); + int res = lf_awid_watch(0, &high, &low); + reply_ng(CMD_LF_AWID_WATCH, res, NULL, 0); break; } case CMD_LF_VIKING_CLONE: { diff --git a/armsrc/lfops.c b/armsrc/lfops.c index 3a20bf335..7e907da09 100644 --- a/armsrc/lfops.c +++ b/armsrc/lfops.c @@ -171,7 +171,7 @@ t55xx_configurations_t T55xx_Timing = { #define T55XX_LONGLEADINGREFERENCE 4 // Value to tell Write Bit to send long reference // ATA55xx shared presets & routines -static uint32_t GetT55xxClockBit(uint32_t clock) { +static uint32_t GetT55xxClockBit(uint8_t clock) { switch (clock) { case 128: return T55x7_BITRATE_RF_128; @@ -1224,32 +1224,52 @@ void CmdNRZsimTAG(uint8_t invert, uint8_t separator, uint8_t clk, uint16_t size, } // loop to get raw HID waveform then FSK demodulate the TAG ID from it -void CmdHIDdemodFSK(int findone, uint32_t *high, uint32_t *low, int ledcontrol) { - uint8_t *dest = BigBuf_get_addr(); +int lf_hid_watch(int findone, uint32_t *high, uint32_t *low) { + size_t size; uint32_t hi2 = 0, hi = 0, lo = 0; int dummyIdx = 0; // Configure to go in 125kHz listen mode LFSetupFPGAForADC(LF_DIVISOR_125, true); + uint8_t *dest = BigBuf_get_addr(); + BigBuf_Clear_keep_EM(); + clear_trace(); + set_tracing(false); + //clear read buffer BigBuf_Clear_keep_EM(); - while (!BUTTON_PRESS() && !data_available()) { + int res = PM3_SUCCESS; + uint16_t interval = 0; + while (BUTTON_PRESS() == false) { WDT_HIT(); - if (ledcontrol) LED_A_ON(); + + // cancel w usb command. + if (interval == 4000) { + if (data_available()) { + res = PM3_EOPABORTED; + break; + } + interval = 0; + } else { + interval++; + } DoAcquisition_default(-1, false); + // FSK demodulator - size = 50 * 128 * 2; //big enough to catch 2 sequences of largest format + // 50 * 128 * 2 - big enough to catch 2 sequences of largest format + size = MIN(12800, BigBuf_max_traceLen()); + int idx = HIDdemodFSK(dest, &size, &hi2, &hi, &lo, &dummyIdx); if (idx < 0) continue; if (idx > 0 && lo > 0 && (size == 96 || size == 192)) { // go over previously decoded manchester data and decode into usable tag ID if (hi2 != 0) { //extra large HID tags 88/192 bits - Dbprintf("TAG ID: %x%08x%08x (%d)", + Dbprintf("TAG ID: " _GREEN_("%x%08x%08x") " (%d)", hi2, hi, lo, @@ -1311,25 +1331,40 @@ void CmdHIDdemodFSK(int findone, uint32_t *high, uint32_t *low, int ledcontrol) hi2 = hi = lo = idx = 0; } FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - DbpString("HID fsk demod stopped"); - if (ledcontrol) LED_A_OFF(); + BigBuf_free(); + LEDsoff(); + return res; } // loop to get raw HID waveform then FSK demodulate the TAG ID from it -void CmdAWIDdemodFSK(int findone, uint32_t *high, uint32_t *low, int ledcontrol) { +int lf_awid_watch(int findone, uint32_t *high, uint32_t *low) { - uint8_t *dest = BigBuf_get_addr(); size_t size; int dummyIdx = 0; + uint8_t *dest = BigBuf_get_addr(); BigBuf_Clear_keep_EM(); + clear_trace(); + set_tracing(false); LFSetupFPGAForADC(LF_DIVISOR_125, true); - while (!BUTTON_PRESS() && !data_available()) { + int res = PM3_SUCCESS; + uint16_t interval = 0; + while (BUTTON_PRESS() == false) { WDT_HIT(); - if (ledcontrol) LED_A_ON(); + + // cancel w usb command. + if (interval == 4000) { + if (data_available()) { + res = PM3_EOPABORTED; + break; + } + interval = 0; + } else { + interval++; + } DoAcquisition_default(-1, false); // FSK demodulator @@ -1380,20 +1415,19 @@ void CmdAWIDdemodFSK(int findone, uint32_t *high, uint32_t *low, int ledcontrol) uint32_t fac = bytebits_to_byte(dest + 9, 8); uint32_t cardnum = bytebits_to_byte(dest + 17, 16); uint32_t code1 = bytebits_to_byte(dest + 8, fmtLen); - Dbprintf("AWID Found - BitLength: %d, FC: %d, Card: %d - Wiegand: %x, Raw: %08x%08x%08x", fmtLen, fac, cardnum, code1, rawHi2, rawHi, rawLo); + Dbprintf("AWID Found - Bit length: " _GREEN_("%d") ", FC: " _GREEN_("%d") ", Card: " _GREEN_("%d") " - Wiegand: %x, Raw: %08x%08x%08x", fmtLen, fac, cardnum, code1, rawHi2, rawHi, rawLo); } else { uint32_t cardnum = bytebits_to_byte(dest + 8 + (fmtLen - 17), 16); if (fmtLen > 32) { uint32_t code1 = bytebits_to_byte(dest + 8, fmtLen - 32); uint32_t code2 = bytebits_to_byte(dest + 8 + (fmtLen - 32), 32); - Dbprintf("AWID Found - BitLength: %d -unknown BitLength- (%d) - Wiegand: %x%08x, Raw: %08x%08x%08x", fmtLen, cardnum, code1, code2, rawHi2, rawHi, rawLo); + Dbprintf("AWID Found - Bit length: " _GREEN_("%d") " -unknown bit length- (%d) - Wiegand: %x%08x, Raw: %08x%08x%08x", fmtLen, cardnum, code1, code2, rawHi2, rawHi, rawLo); } else { uint32_t code1 = bytebits_to_byte(dest + 8, fmtLen); - Dbprintf("AWID Found - BitLength: %d -unknown BitLength- (%d) - Wiegand: %x, Raw: %08x%08x%08x", fmtLen, cardnum, code1, rawHi2, rawHi, rawLo); + Dbprintf("AWID Found - Bit length: " _GREEN_("%d") " -unknown bit length- (%d) - Wiegand: %x, Raw: %08x%08x%08x", fmtLen, cardnum, code1, rawHi2, rawHi, rawLo); } } if (findone) { - if (ledcontrol) LED_A_OFF(); *high = rawHi; *low = rawLo; break; @@ -1401,8 +1435,9 @@ void CmdAWIDdemodFSK(int findone, uint32_t *high, uint32_t *low, int ledcontrol) } FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); - DbpString("AWID fsk demod stopped"); - if (ledcontrol) LED_A_OFF(); + BigBuf_free(); + LEDsoff(); + return res; } int lf_em410x_watch(int findone, uint32_t *high, uint64_t *low) { @@ -1425,7 +1460,7 @@ int lf_em410x_watch(int findone, uint32_t *high, uint64_t *low) { WDT_HIT(); // cancel w usb command. - if (interval == 2000) { + if (interval == 4000) { if (data_available()) { res = PM3_EOPABORTED; break; @@ -1448,7 +1483,7 @@ int lf_em410x_watch(int findone, uint32_t *high, uint64_t *low) { errCnt = Em410xDecode(dest, &size, &idx, &hi, &lo); if (errCnt == 1) { if (size == 128) { - Dbprintf("EM XL TAG ID: %06x%08x%08x - (%05d_%03d_%08d)", + Dbprintf("EM XL TAG ID: " _GREEN_("%06x%08x%08x") " - ( %05d_%03d_%08d )", hi, (uint32_t)(lo >> 32), (uint32_t)lo, @@ -1456,7 +1491,7 @@ int lf_em410x_watch(int findone, uint32_t *high, uint64_t *low) { (uint32_t)((lo >> 16LL) & 0xFF), (uint32_t)(lo & 0xFFFFFF)); } else { - Dbprintf("EM TAG ID: %02x%08x - (%05d_%03d_%08d)", + Dbprintf("EM TAG ID: " _GREEN_("%02x%08x") " - ( %05d_%03d_%08d )", (uint32_t)(lo >> 32), (uint32_t)lo, (uint32_t)(lo & 0xFFFF), @@ -1484,8 +1519,8 @@ int lf_io_watch(int findone, uint32_t *high, uint32_t *low) { int dummyIdx = 0; uint32_t code = 0, code2 = 0; - uint8_t version = 0, facilitycode = 0, crc = 0; - uint16_t number = 0, calccrc = 0; + uint8_t version = 0, facilitycode = 0; + uint16_t number = 0; uint8_t *dest = BigBuf_get_addr(); BigBuf_Clear_keep_EM(); @@ -1502,7 +1537,7 @@ int lf_io_watch(int findone, uint32_t *high, uint32_t *low) { WDT_HIT(); // cancel w usb command. - if (interval == 2000) { + if (interval == 4000) { if (data_available()) { res = PM3_EOPABORTED; break; @@ -1554,17 +1589,8 @@ int lf_io_watch(int findone, uint32_t *high, uint32_t *low) { facilitycode = bytebits_to_byte(dest + idx + 18, 8); number = (bytebits_to_byte(dest + idx + 36, 8) << 8) | (bytebits_to_byte(dest + idx + 45, 8)); //36,9 - crc = bytebits_to_byte(dest + idx + 54, 8); - for (uint8_t i = 1; i < 6; ++i) { - calccrc += bytebits_to_byte(dest + idx + 9 * i, 8); - } - calccrc &= 0xff; - calccrc = 0xff - calccrc; + Dbprintf("IO Prox " _GREEN_("XSF(%02d)%02x:%05d") " (%08x%08x) (%s)", version, facilitycode, number, code, code2); - const char *crcStr = (crc == calccrc) ? _GREEN_("ok") : _RED_("fail"); - - Dbprintf("IO Prox XSF(%02d)%02x:%05d (%08x%08x) (%s)", version, facilitycode, number, code, code2, crcStr); - // if we're only looking for one tag if (findone) { *high = code; *low = code2; @@ -1573,7 +1599,6 @@ int lf_io_watch(int findone, uint32_t *high, uint32_t *low) { code = code2 = 0; version = facilitycode = 0; number = 0; - calccrc = 0; } FpgaWriteConfWord(FPGA_MAJOR_MODE_OFF); BigBuf_free(); @@ -2215,17 +2240,26 @@ void CopyVikingtoT55xx(uint8_t *blocks, uint8_t Q5) { reply_ng(CMD_LF_VIKING_CLONE, PM3_SUCCESS, NULL, 0); } +int copy_em410x_to_t55xx(uint8_t card, uint8_t clock, uint32_t id_hi, uint32_t id_lo) { + // Define 9bit header for EM410x tags #define EM410X_HEADER 0x1FF #define EM410X_ID_LENGTH 40 -void WriteEM410x(uint32_t card, uint32_t id_hi, uint32_t id_lo) { + uint32_t clockbits = 0; + if (card == 1) { //t55x7 + clockbits = GetT55xxClockBit(clock); + if (clockbits == 0) { + Dbprintf("Invalid clock rate: %d", clock); + return PM3_EINVARG; + } + } + int i; uint64_t id = EM410X_HEADER; uint64_t rev_id = 0; // reversed ID int c_parity[4]; // column parity int r_parity = 0; // row parity - uint32_t clock = 0; // Reverse ID bits given as parameter (for simpler operations) for (i = 0; i < EM410X_ID_LENGTH; ++i) { @@ -2275,33 +2309,29 @@ void WriteEM410x(uint32_t card, uint32_t id_hi, uint32_t id_lo) { // Add stop bit id <<= 1; - Dbprintf("Started writing %s tag ...", card ? "T55x7" : "T5555"); LED_D_ON(); // Write EM410x ID uint32_t data[] = {0, (uint32_t)(id >> 32), (uint32_t)(id & 0xFFFFFFFF)}; - clock = (card & 0xFF00) >> 8; + // default to 64 clock = (clock == 0) ? 64 : clock; Dbprintf("Clock rate: %d", clock); - if (card & 0xFF) { //t55x7 - clock = GetT55xxClockBit(clock); - if (clock == 0) { - Dbprintf("Invalid clock rate: %d", clock); - return; - } - data[0] = clock | T55x7_MODULATION_MANCHESTER | (2 << T55x7_MAXBLOCK_SHIFT); - } else { //t5555 (Q5) + + if (card == 1) { // T55x7 + data[0] = clockbits | T55x7_MODULATION_MANCHESTER | (2 << T55x7_MAXBLOCK_SHIFT); + } else { // T5555 (Q5) data[0] = T5555_SET_BITRATE(clock) | T5555_MODULATION_MANCHESTER | (2 << T5555_MAXBLOCK_SHIFT); } WriteT55xx(data, 0, 3); - LED_D_OFF(); + LEDsoff(); Dbprintf("Tag %s written with 0x%08x%08x\n", card ? "T55x7" : "T5555", (uint32_t)(id >> 32), (uint32_t)id); + return PM3_SUCCESS; } //----------------------------------- diff --git a/armsrc/lfops.h b/armsrc/lfops.h index f7a0230c8..2d76bef48 100644 --- a/armsrc/lfops.h +++ b/armsrc/lfops.h @@ -35,14 +35,17 @@ void CmdASKsimTAG(uint8_t encoding, uint8_t invert, uint8_t separator, uint8_t c void CmdPSKsimTAG(uint8_t carrier, uint8_t invert, uint8_t clk, uint16_t size, uint8_t *bits, bool ledcontrol); void CmdNRZsimTAG(uint8_t invert, uint8_t separator, uint8_t clk, uint16_t size, uint8_t *bits, bool ledcontrol); -void CmdHIDdemodFSK(int findone, uint32_t *high, uint32_t *low, int ledcontrol); -void CmdAWIDdemodFSK(int findone, uint32_t *high, uint32_t *low, int ledcontrol); // Realtime demodulation mode for AWID26 +int lf_hid_watch(int findone, uint32_t *high, uint32_t *low); +int lf_awid_watch(int findone, uint32_t *high, uint32_t *low); // Realtime demodulation mode for AWID26 int lf_em410x_watch(int findone, uint32_t *high, uint64_t *low); int lf_io_watch(int findone, uint32_t *high, uint32_t *low); void CopyHIDtoT55x7(uint32_t hi2, uint32_t hi, uint32_t lo, uint8_t longFMT); // Clone an HID card to T5557/T5567 + void CopyVikingtoT55xx(uint8_t *blocks, uint8_t Q5); -void WriteEM410x(uint32_t card, uint32_t id_hi, uint32_t id_lo); + +int copy_em410x_to_t55xx(uint8_t card, uint8_t clock, uint32_t id_hi, uint32_t id_lo); + void T55xxResetRead(uint8_t flags); //id T55xxWriteBlock(uint32_t data, uint8_t blockno, uint32_t pwd, uint8_t flags); void T55xxWriteBlock(uint8_t *data); diff --git a/client/src/cmdlfawid.c b/client/src/cmdlfawid.c index 36658bbdf..c42c719f0 100644 --- a/client/src/cmdlfawid.c +++ b/client/src/cmdlfawid.c @@ -38,7 +38,7 @@ static int usage_lf_awid_watch(void) { PrintAndLogEx(NORMAL, "Usage: lf awid watch"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " lf awid watch"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf awid watch")); return PM3_SUCCESS; } @@ -54,8 +54,8 @@ static int usage_lf_awid_sim(void) { PrintAndLogEx(NORMAL, " <card number> : 16|32-bit value card number"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " lf awid sim 26 224 1337"); - PrintAndLogEx(NORMAL, " lf awid sim 50 2001 13371337"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf awid sim 26 224 1337")); + PrintAndLogEx(NORMAL, _YELLOW_(" lf awid sim 50 2001 13371337")); return PM3_SUCCESS; } @@ -72,8 +72,8 @@ static int usage_lf_awid_clone(void) { PrintAndLogEx(NORMAL, " Q5 : optional - clone to Q5 (T5555) instead of T55x7 chip"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " lf awid clone 26 224 1337"); - PrintAndLogEx(NORMAL, " lf awid clone 50 2001 13371337"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf awid clone 26 224 1337")); + PrintAndLogEx(NORMAL, _YELLOW_(" lf awid clone 50 2001 13371337")); return PM3_SUCCESS; } @@ -92,9 +92,9 @@ static int usage_lf_awid_brute(void) { PrintAndLogEx(NORMAL, " v : verbose logging, show all tries"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " lf awid brute a 26 f 224"); - PrintAndLogEx(NORMAL, " lf awid brute a 50 f 2001 d 2000"); - PrintAndLogEx(NORMAL, " lf awid brute v a 50 f 2001 c 200 d 2000"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf awid brute a 26 f 224")); + PrintAndLogEx(NORMAL, _YELLOW_(" lf awid brute a 50 f 2001 d 2000")); + PrintAndLogEx(NORMAL, _YELLOW_(" lf awid brute v a 50 f 2001 c 200 d 2000")); return PM3_SUCCESS; } @@ -180,11 +180,17 @@ static void verify_values(uint8_t *fmtlen, uint32_t *fc, uint32_t *cn) { // this read loops on device side. // uses the demod in lfops.c static int CmdAWIDWatch(const char *Cmd) { - uint8_t ctmp = tolower(param_getchar(Cmd, 0)); - if (ctmp == 'h') return usage_lf_awid_watch(); + uint8_t c = tolower(param_getchar(Cmd, 0)); + if (c == 'h') return usage_lf_awid_watch(); + + PrintAndLogEx(SUCCESS, "Watching for AWID cards - place tag on antenna"); + PrintAndLogEx(INFO, "Press pm3-button to stop reading cards"); clearCommandBuffer(); - SendCommandNG(CMD_LF_AWID_DEMOD, NULL, 0); - return PM3_SUCCESS; + SendCommandNG(CMD_LF_AWID_WATCH, NULL, 0); + PacketResponseNG resp; + WaitForResponse(CMD_LF_AWID_WATCH, &resp); + PrintAndLogEx(INFO, "Done"); + return resp.status; } //by marshmellow diff --git a/client/src/cmdlfem4x.c b/client/src/cmdlfem4x.c index baea5aa5d..9d7cdd8b6 100644 --- a/client/src/cmdlfem4x.c +++ b/client/src/cmdlfem4x.c @@ -454,8 +454,11 @@ int AskEm410xDemod(const char *Cmd, uint32_t *hi, uint64_t *lo, bool verbose) { // this read loops on device side. // uses the demod in lfops.c static int CmdEM410xWatch(const char *Cmd) { - uint8_t ctmp = tolower(param_getchar(Cmd, 0)); - if (ctmp == 'h') return usage_lf_em410x_watch(); + uint8_t c = tolower(param_getchar(Cmd, 0)); + if (c == 'h') return usage_lf_em410x_watch(); + + PrintAndLogEx(SUCCESS, "Watching for EM410x cards - place tag on antenna"); + PrintAndLogEx(INFO, "Press pm3-button to stop reading cards"); clearCommandBuffer(); SendCommandNG(CMD_LF_EM410X_WATCH, NULL, 0); PacketResponseNG resp; @@ -640,29 +643,26 @@ static int CmdEM410xWrite(const char *Cmd) { char cmdp = tolower(param_getchar(Cmd, 0)); if (cmdp == 0x00 || cmdp == 'h') return usage_lf_em410x_write(); - uint64_t id = 0xFFFFFFFFFFFFFFFF; // invalid id value - int card = 0xFF; // invalid card value - uint32_t clock1 = 0; // invalid clock value - - sscanf(Cmd, "%" SCNx64 " %d %d", &id, &card, &clock1); + uint64_t id = param_get64ex(Cmd, 0, -1, 16); + uint8_t card = param_get8ex(Cmd, 1, 0xFF, 10); + uint8_t clock1 = param_get8ex(Cmd, 2, 0, 10); // Check ID if (id == 0xFFFFFFFFFFFFFFFF) { - PrintAndLogEx(ERR, "Error! ID is required.\n"); + PrintAndLogEx(ERR, "error, ID is required\n"); + usage_lf_em410x_write(); return PM3_EINVARG; } if (id >= 0x10000000000) { - PrintAndLogEx(ERR, "Error! Given EM410x ID is longer than 40 bits.\n"); + PrintAndLogEx(ERR, "error, given EM410x ID is longer than 40 bits\n"); + usage_lf_em410x_write(); return PM3_EINVARG; } // Check Card - if (card == 0xFF) { - PrintAndLogEx(ERR, "Error! Card type required.\n"); - return PM3_EINVARG; - } - if (card < 0) { - PrintAndLogEx(ERR, "Error! Bad card type selected.\n"); + if (card > 1) { + PrintAndLogEx(FAILED, "error, bad card type selected\n"); + usage_lf_em410x_write(); return PM3_EINVARG; } @@ -672,29 +672,51 @@ static int CmdEM410xWrite(const char *Cmd) { // Allowed clock rates: 16, 32, 40 and 64 if ((clock1 != 16) && (clock1 != 32) && (clock1 != 64) && (clock1 != 40)) { - PrintAndLogEx(ERR, "Error! Clock rate" _YELLOW_("%d")" not valid. Supported clock rates are 16, 32, 40 and 64.\n", clock1); + PrintAndLogEx(ERR, "error, clock rate" _RED_("%d")" not valid"); + PrintAndLogEx(INFO, "supported clock rates: " _YELLOW_("16, 32, 40, 60") "\n", clock1); + usage_lf_em410x_write(); return PM3_EINVARG; } if (card == 1) { - PrintAndLogEx(SUCCESS, "Writing %s tag with UID 0x%010" PRIx64 " (clock rate: %d)", "T55x7", id, clock1); + PrintAndLogEx(SUCCESS, "Writing %s tag with UID 0x%010" PRIx64 " (clock rate: %d)", _GREEN_("T55x7"), id, clock1); // NOTE: We really should pass the clock in as a separate argument, but to // provide for backwards-compatibility for older firmware, and to avoid // having to add another argument to CMD_LF_EM410X_WRITE, we just store // the clock rate in bits 8-15 of the card value - card = (card & 0xFF) | ((clock1 << 8) & 0xFF00); } else if (card == 0) { - PrintAndLogEx(SUCCESS, "Writing %s tag with UID 0x%010" PRIx64 "(clock rate: %d)", "T5555", id, clock1); - card = (card & 0xFF) | ((clock1 << 8) & 0xFF00); - } else { - PrintAndLogEx(FAILED, "Error! Bad card type selected.\n"); - return PM3_ESOFT; + PrintAndLogEx(SUCCESS, "Writing %s tag with UID 0x%010" PRIx64 "(clock rate: %d)", _GREEN_("T5555"), id, clock1); } + + struct { + uint8_t card; + uint8_t clock; + uint32_t high; + uint32_t low; + } PACKED params; - SendCommandMIX(CMD_LF_EM410X_WRITE, card, (uint32_t)(id >> 32), (uint32_t)id, NULL, 0); - PrintAndLogEx(SUCCESS, "Done"); - PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf em 410x_read`") " to verify"); - return PM3_SUCCESS; + params.card = card; + params.clock = clock1; + params.high = (uint32_t)(id >> 32); + params.low = (uint32_t)id; + + clearCommandBuffer(); + SendCommandNG(CMD_LF_EM410X_WRITE, (uint8_t *)¶ms, sizeof(params)); + + PacketResponseNG resp; + WaitForResponse(CMD_LF_EM410X_WRITE, &resp); + switch(resp.status) { + case PM3_SUCCESS: { + PrintAndLogEx(SUCCESS, "Done"); + PrintAndLogEx(HINT, "Hint: try " _YELLOW_("`lf em 410x_read`") " to verify"); + break; + } + default: { + PrintAndLogEx(WARNING, "Something went wrong"); + break; + } + } + return resp.status; } //**************** Start of EM4x50 Code ************************ diff --git a/client/src/cmdlfhid.c b/client/src/cmdlfhid.c index 5c88c881b..83a97c41d 100644 --- a/client/src/cmdlfhid.c +++ b/client/src/cmdlfhid.c @@ -264,13 +264,17 @@ static int CmdHIDRead(const char *Cmd) { // this read loops on device side. // uses the demod in lfops.c static int CmdHIDWatch(const char *Cmd) { - uint8_t ctmp = tolower(param_getchar(Cmd, 0)); - if (ctmp == 'h') return usage_lf_hid_watch(); + uint8_t c = tolower(param_getchar(Cmd, 0)); + if (c == 'h') return usage_lf_hid_watch(); + + PrintAndLogEx(SUCCESS, "Watching for HID Prox cards - place tag on antenna"); + PrintAndLogEx(INFO, "Press pm3-button to stop reading cards"); clearCommandBuffer(); - SendCommandNG(CMD_LF_HID_DEMOD, NULL, 0); - PrintAndLogEx(SUCCESS, "Watching for new HID cards - place tag on antenna"); - PrintAndLogEx(INFO, "Press pm3-button to stop reading new cards"); - return PM3_SUCCESS; + SendCommandNG(CMD_LF_HID_WATCH, NULL, 0); + PacketResponseNG resp; + WaitForResponse(CMD_LF_HID_WATCH, &resp); + PrintAndLogEx(INFO, "Done"); + return resp.status; } static int CmdHIDSim(const char *Cmd) { diff --git a/client/src/cmdlfio.c b/client/src/cmdlfio.c index a754e5aa4..92f914059 100644 --- a/client/src/cmdlfio.c +++ b/client/src/cmdlfio.c @@ -36,7 +36,7 @@ static int usage_lf_io_watch(void) { PrintAndLogEx(NORMAL, "Usage: lf io watch"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " lf io watch"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf io watch")); return PM3_SUCCESS; } @@ -52,7 +52,7 @@ static int usage_lf_io_sim(void) { PrintAndLogEx(NORMAL, " <card number> : 16bit value card number (decimal)"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " lf io sim 26 101 1337"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf io sim 26 101 1337")); return PM3_SUCCESS; } @@ -69,15 +69,18 @@ static int usage_lf_io_clone(void) { PrintAndLogEx(NORMAL, " Q5 : optional - clone to Q5 (T5555) instead of T55x7 chip"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " lf io clone 26 101 1337"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf io clone 26 101 1337")); return PM3_SUCCESS; } // this read loops on device side. // uses the demod in lfops.c static int CmdIOProxWatch(const char *Cmd) { - uint8_t ctmp = tolower(param_getchar(Cmd, 0)); - if (ctmp == 'h') return usage_lf_io_watch(); + uint8_t c = tolower(param_getchar(Cmd, 0)); + if (c == 'h') return usage_lf_io_watch(); + + PrintAndLogEx(SUCCESS, "Watching for IO Prox cards - place tag on antenna"); + PrintAndLogEx(INFO, "Press pm3-button to stop reading cards"); clearCommandBuffer(); SendCommandNG(CMD_LF_IO_WATCH, NULL, 0); PacketResponseNG resp; diff --git a/include/pm3_cmd.h b/include/pm3_cmd.h index 1fbc97e22..ecdef4b86 100644 --- a/include/pm3_cmd.h +++ b/include/pm3_cmd.h @@ -385,7 +385,7 @@ typedef struct { #define CMD_DOWNLOADED_BIGBUF 0x0208 #define CMD_LF_UPLOAD_SIM_SAMPLES 0x0209 #define CMD_LF_SIMULATE 0x020A -#define CMD_LF_HID_DEMOD 0x020B +#define CMD_LF_HID_WATCH 0x020B #define CMD_LF_HID_SIMULATE 0x020C #define CMD_LF_SET_DIVISOR 0x020D #define CMD_LF_SIMULATE_BIDIR 0x020E @@ -407,7 +407,7 @@ typedef struct { #define CMD_LF_ASK_SIMULATE 0x021F #define CMD_LF_PSK_SIMULATE 0x0220 #define CMD_LF_NRZ_SIMULATE 0x0232 -#define CMD_LF_AWID_DEMOD 0x0221 +#define CMD_LF_AWID_WATCH 0x0221 #define CMD_LF_VIKING_CLONE 0x0222 #define CMD_LF_T55XX_WAKEUP 0x0224 #define CMD_LF_COTAG_READ 0x0225 From f900b1078ec9d299a8045146d8fdbeb4e241c535 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 22 Jun 2020 18:00:20 +0200 Subject: [PATCH 523/527] textual --- client/src/cmdlfpyramid.c | 16 ++++++++-------- client/src/cmdlfsecurakey.c | 12 ++++++------ 2 files changed, 14 insertions(+), 14 deletions(-) diff --git a/client/src/cmdlfpyramid.c b/client/src/cmdlfpyramid.c index ed2895ecb..03a9a751c 100644 --- a/client/src/cmdlfpyramid.c +++ b/client/src/cmdlfpyramid.c @@ -1,5 +1,7 @@ //----------------------------------------------------------------------------- // +// by marshmellow +// // This code is licensed to you under the terms of the GNU GPL, version 2 or, // at your option, any later version. See the LICENSE.txt file for the text of // the license. @@ -62,11 +64,14 @@ static int usage_lf_pyramid_sim(void) { return PM3_SUCCESS; } -//by marshmellow -//Pyramid Prox demod - FSK RF/50 with preamble of 0000000000000001 (always a 128 bit data stream) -//print full Farpointe Data/Pyramid Prox ID and some bit format details if found static int CmdPyramidDemod(const char *Cmd) { (void)Cmd; // Cmd is not used so far + return demodPyramid(); +} + +//Pyramid Prox demod - FSK RF/50 with preamble of 0000000000000001 (always a 128 bit data stream) +//print full Farpointe Data/Pyramid Prox ID and some bit format details if found +int demodPyramid(void) { //raw fsk demod no manchester decoding no start bit finding just get binary from wave uint8_t bits[MAX_GRAPH_TRACE_LEN] = {0}; size_t size = getFromGraphBuf(bits); @@ -350,11 +355,6 @@ int getPyramidBits(uint32_t fc, uint32_t cn, uint8_t *pyramidBits) { return PM3_SUCCESS; } -int demodPyramid(void) { - return CmdPyramidDemod(""); -} - -// by marshmellow // FSK Demod then try to locate a Farpointe Data (pyramid) ID int detectPyramid(uint8_t *dest, size_t *size, int *waveStartIdx) { //make sure buffer has data diff --git a/client/src/cmdlfsecurakey.c b/client/src/cmdlfsecurakey.c index 108e9125c..4b01afe2d 100644 --- a/client/src/cmdlfsecurakey.c +++ b/client/src/cmdlfsecurakey.c @@ -34,13 +34,17 @@ static int usage_lf_securakey_clone(void) { PrintAndLogEx(NORMAL, " b <raw hex> : raw hex data. 12 bytes max"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " lf securakey clone 7FCB400001ADEA5344300000"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf securakey clone b 7FCB400001ADEA5344300000")); return PM3_SUCCESS; } -//see ASKDemod for what args are accepted static int CmdSecurakeyDemod(const char *Cmd) { (void)Cmd; // Cmd is not used so far + return demodSecurakey(); +} + +//see ASKDemod for what args are accepted +int demodSecurakey(void) { //ASK / Manchester bool st = false; @@ -212,7 +216,3 @@ int detectSecurakey(uint8_t *dest, size_t *size) { return (int)startIdx; } -int demodSecurakey(void) { - return CmdSecurakeyDemod(""); -} - From fddf8ae6aafbe3a66b3e9509753b10bceb05d7c1 Mon Sep 17 00:00:00 2001 From: iceman1001 <iceman@iuse.se> Date: Mon, 22 Jun 2020 18:04:40 +0200 Subject: [PATCH 524/527] textual --- client/src/cmdlfvisa2000.c | 17 ++++++++--------- 1 file changed, 8 insertions(+), 9 deletions(-) diff --git a/client/src/cmdlfvisa2000.c b/client/src/cmdlfvisa2000.c index a90e5ddce..91ad70490 100644 --- a/client/src/cmdlfvisa2000.c +++ b/client/src/cmdlfvisa2000.c @@ -41,7 +41,7 @@ static int usage_lf_visa2k_clone(void) { PrintAndLogEx(NORMAL, " <Q5> : specify write to Q5 (t5555 instead of t55x7)"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " lf visa2000 clone 112233"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf visa2000 clone 112233")); return PM3_SUCCESS; } @@ -55,7 +55,7 @@ static int usage_lf_visa2k_sim(void) { PrintAndLogEx(NORMAL, " <card ID> : Visa2k card ID"); PrintAndLogEx(NORMAL, ""); PrintAndLogEx(NORMAL, "Examples:"); - PrintAndLogEx(NORMAL, " lf visa2000 sim 112233"); + PrintAndLogEx(NORMAL, _YELLOW_(" lf visa2000 sim 112233")); return PM3_SUCCESS; } @@ -86,6 +86,10 @@ static uint8_t visa_parity(uint32_t id) { return par; } +static int CmdVisa2kDemod(const char *Cmd) { + (void)Cmd; // Cmd is not used so far + return demodVisa2k(); +} /** * * 56495332 00096ebd 00000077 —> tag id 618173 @@ -98,9 +102,7 @@ static uint8_t visa_parity(uint32_t id) { * **/ //see ASKDemod for what args are accepted -static int CmdVisa2kDemod(const char *Cmd) { - (void)Cmd; // Cmd is not used so far - +int demodVisa2k(void) { save_restoreGB(GRAPH_SAVE); //CmdAskEdgeDetect(""); @@ -153,7 +155,7 @@ static int CmdVisa2kDemod(const char *Cmd) { save_restoreGB(GRAPH_RESTORE); return PM3_ESOFT; } - PrintAndLogEx(SUCCESS, "Visa2000 Tag Found: Card ID %u, Raw: %08X%08X%08X", raw2, raw1, raw2, raw3); + PrintAndLogEx(SUCCESS, "Visa2000 Tag Found: Card ID " _GREEN_("%u") " Raw: %08X%08X%08X", raw2, raw1, raw2, raw3); return PM3_SUCCESS; } @@ -260,7 +262,4 @@ int detectVisa2k(uint8_t *dest, size_t *size) { return (int)startIdx; } -int demodVisa2k(void) { - return CmdVisa2kDemod(""); -} From bc00b29a64f0c799fff3f4c56e8345c870e7631b Mon Sep 17 00:00:00 2001 From: Philippe Teuwen <phil@teuwen.org> Date: Mon, 22 Jun 2020 20:02:19 +0200 Subject: [PATCH 525/527] Deadloop in case of stackoverflow, better than flooding console --- armsrc/appmain.c | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/armsrc/appmain.c b/armsrc/appmain.c index 17893e84b..5c82ebbe8 100644 --- a/armsrc/appmain.c +++ b/armsrc/appmain.c @@ -2166,7 +2166,9 @@ void __attribute__((noreturn)) AppMain(void) { WDT_HIT(); if (_stack_start != 0xdeadbeef) { - Dbprintf("Stack overflow detected! Please increase stack size."); + Dbprintf("Stack overflow detected! Please increase stack size, currently %d bytes", (&_stack_end - &_stack_start) << 2); + Dbprintf("Unplug your device now."); + while (1); } // Check if there is a packet available From 99734474fb5236ca4ba0da7379101b6481ae46c1 Mon Sep 17 00:00:00 2001 From: Aram Verstegen <aram@factorit.nl> Date: Mon, 22 Jun 2020 22:34:05 +0200 Subject: [PATCH 526/527] Little optimization for hitag2hell attack --- tools/hitag2crack/crack5/ht2crack5.c | 23 ++++++++++------------- 1 file changed, 10 insertions(+), 13 deletions(-) diff --git a/tools/hitag2crack/crack5/ht2crack5.c b/tools/hitag2crack/crack5/ht2crack5.c index a92afc854..196f16420 100644 --- a/tools/hitag2crack/crack5/ht2crack5.c +++ b/tools/hitag2crack/crack5/ht2crack5.c @@ -330,7 +330,6 @@ static void *find_state(void *thread_d) { const bitslice_value_t filter4 = f_c_bs(filter4_0, filter4_1, filter4_2, filter4_3, filter4_4); bitslice_t results4; results4.value = results3.value & (filter4 ^ keystream[4].value); - if (results4.bytes64[0] == 0 && results4.bytes64[1] == 0 && results4.bytes64[2] == 0 @@ -339,7 +338,9 @@ static void *find_state(void *thread_d) { continue; } + state[-2 + 56].value = lfsr_bs(8); const bitslice_value_t filter5_3 = f_b_bs(state[-2 + 33].value, state[-2 + 34].value, state[-2 + 36].value, state[-2 + 38].value); + const bitslice_value_t filter10_4 = f_a_bs(state[-2 + 44].value, state[-2 + 53].value, state[-2 + 54].value, state[-2 + 56].value); const bitslice_value_t filter12_2 = f_b_bs(state[-2 + 29].value, state[-2 + 33].value, state[-2 + 35].value, state[-2 + 38].value); for (uint8_t i5 = 0; i5 < (1 << bits[5]); i5++) { @@ -358,8 +359,9 @@ static void *find_state(void *thread_d) { continue; } + state[-2 + 57].value = lfsr_bs(9); const bitslice_value_t filter6_3 = f_b_bs(state[-2 + 34].value, state[-2 + 35].value, state[-2 + 37].value, state[-2 + 39].value); - + const bitslice_value_t filter11_4 = f_a_bs(state[-2 + 45].value, state[-2 + 54].value, state[-2 + 55].value, state[-2 + 57].value); for (uint8_t i6 = 0; i6 < (1 << bits[6]); i6++) { state[-2 + 40].value = ((bool)(i6 & 0x1)) ? bs_ones.value : bs_zeroes.value; // 0xffe7ffffffff @@ -376,8 +378,9 @@ static void *find_state(void *thread_d) { continue; } + state[-2 + 58].value = lfsr_bs(10); const bitslice_value_t filter7_3 = f_b_bs(state[-2 + 35].value, state[-2 + 36].value, state[-2 + 38].value, state[-2 + 40].value); - + const bitslice_value_t filter12_4 = f_a_bs(state[-2 + 46].value, state[-2 + 55].value, state[-2 + 56].value, state[-2 + 58].value); for (uint8_t i7 = 0; i7 < (1 << bits[7]); i7++) { state[-2 + 41].value = ((bool)(i7 & 0x1)) ? bs_ones.value : bs_zeroes.value; // 0xfff7ffffffff @@ -393,16 +396,14 @@ static void *find_state(void *thread_d) { continue; } + state[-2 + 59].value = lfsr_bs(11); const bitslice_value_t filter8_3 = f_b_bs(state[-2 + 36].value, state[-2 + 37].value, state[-2 + 39].value, state[-2 + 41].value); const bitslice_value_t filter10_3 = f_b_bs(state[-2 + 38].value, state[-2 + 39].value, state[-2 + 41].value, state[-2 + 43].value); const bitslice_value_t filter12_3 = f_b_bs(state[-2 + 40].value, state[-2 + 41].value, state[-2 + 43].value, state[-2 + 45].value); - for (uint8_t i8 = 0; i8 < (1 << bits[8]); i8++) { state[-2 + 42].value = ((bool)(i8 & 0x1)) ? bs_ones.value : bs_zeroes.value; // 0xffffffffffff const bitslice_value_t filter8_4 = f_a_bs(state[-2 + 42].value, state[-2 + 51].value, state[-2 + 52].value, state[-2 + 54].value); - const bitslice_value_t filter9_3 = f_b_bs(state[-2 + 37].value, state[-2 + 38].value, state[-2 + 40].value, state[-2 + 42].value); - const bitslice_value_t filter11_3 = f_b_bs(state[-2 + 39].value, state[-2 + 40].value, state[-2 + 42].value, state[-2 + 44].value); const bitslice_value_t filter8 = f_c_bs(filter8_0, filter8_1, filter8_2, filter8_3, filter8_4); bitslice_t results8; results8.value = results7.value & (filter8 ^ keystream[8].value); @@ -415,6 +416,7 @@ static void *find_state(void *thread_d) { continue; } + const bitslice_value_t filter9_3 = f_b_bs(state[-2 + 37].value, state[-2 + 38].value, state[-2 + 40].value, state[-2 + 42].value); const bitslice_value_t filter9 = f_c_bs(filter9_0, filter9_1, filter9_2, filter9_3, filter9_4); results8.value &= (filter9 ^ keystream[9].value); @@ -425,8 +427,7 @@ static void *find_state(void *thread_d) { ) { continue; } - state[-2 + 56].value = lfsr_bs(8); - const bitslice_value_t filter10_4 = f_a_bs(state[-2 + 44].value, state[-2 + 53].value, state[-2 + 54].value, state[-2 + 56].value); + const bitslice_value_t filter10 = f_c_bs(filter10_0, filter10_1, filter10_2, filter10_3, filter10_4); results8.value &= (filter10 ^ keystream[10].value); @@ -438,8 +439,7 @@ static void *find_state(void *thread_d) { continue; } - state[-2 + 57].value = lfsr_bs(9); - const bitslice_value_t filter11_4 = f_a_bs(state[-2 + 45].value, state[-2 + 54].value, state[-2 + 55].value, state[-2 + 57].value); + const bitslice_value_t filter11_3 = f_b_bs(state[-2 + 39].value, state[-2 + 40].value, state[-2 + 42].value, state[-2 + 44].value); const bitslice_value_t filter11 = f_c_bs(filter11_0, filter11_1, filter11_2, filter11_3, filter11_4); results8.value &= (filter11 ^ keystream[11].value); @@ -451,8 +451,6 @@ static void *find_state(void *thread_d) { continue; } - state[-2 + 58].value = lfsr_bs(10); - const bitslice_value_t filter12_4 = f_a_bs(state[-2 + 46].value, state[-2 + 55].value, state[-2 + 56].value, state[-2 + 58].value); const bitslice_value_t filter12 = f_c_bs(filter12_0, filter12_1, filter12_2, filter12_3, filter12_4); results8.value &= (filter12 ^ keystream[12].value); @@ -464,7 +462,6 @@ static void *find_state(void *thread_d) { continue; } - state[-2 + 59].value = lfsr_bs(11); const bitslice_value_t filter13_0 = f_a_bs(state[-2 + 15].value, state[-2 + 16].value, state[-2 + 18].value, state[-2 + 19].value); const bitslice_value_t filter13_1 = f_b_bs(state[-2 + 21].value, state[-2 + 25].value, state[-2 + 27].value, state[-2 + 28].value); const bitslice_value_t filter13_2 = f_b_bs(state[-2 + 30].value, state[-2 + 34].value, state[-2 + 36].value, state[-2 + 39].value); From 3b7d654553cd63a29c1aa235c85342c7e5cbc2e5 Mon Sep 17 00:00:00 2001 From: tharexde <joerg.classen@bowsky.de> Date: Tue, 23 Jun 2020 00:36:19 +0200 Subject: [PATCH 527/527] increased readability by introducing defines --- client/src/cmdlfem4x50.c | 107 +++++++++++++++++++++++---------------- 1 file changed, 62 insertions(+), 45 deletions(-) diff --git a/client/src/cmdlfem4x50.c b/client/src/cmdlfem4x50.c index 6b889f969..1f4420c5b 100644 --- a/client/src/cmdlfem4x50.c +++ b/client/src/cmdlfem4x50.c @@ -15,9 +15,32 @@ #include "commonutil.h" #include "em4x50.h" -#define EM4x50_FCT_STDREAD 0 -#define EM4x50_FCT_LOGIN 1 -#define EM4x50_FCT_WRITE 2 +#define EM4X50_NO_WORDS 34 + +// special words +#define EM4X50_DEVICE_PASSWORD 0 +#define EM4X50_PROTECTION 1 +#define EM4X50_CONTROL 2 +#define EM4X50_DEVICE_SERIAL 32 +#define EM4X50_DEVICE_ID 33 + +// control word (word = 4 bytes) +#define FIRST_WORD_READ 0 // first byte +#define LAST_WORD_READ 1 // second byte +#define CONFIG_BLOCK 2 // third byte +#define PASSWORD_CHECK 0x80 // first bit in third byte +#define READ_AFTER_WRITE 0x40 // second bit in third byte + +// protection word +#define FIRST_WORD_READ_PROTECTED 0 // first byte +#define LAST_WORD_READ_PROTECTED 1 // second byte +#define FIRST_WORD_WRITE_INHIBITED 2 // third byte +#define LAST_WORD_WRITE_INHIBITED 3 // fourth byte + +// misc +#define STATUS_SUCCESS 0x2 +#define STATUS_LOGIN 0x1 +#define NO_CHARS_MAX 400 int usage_lf_em4x50_info(void) { PrintAndLogEx(NORMAL, "Read all information of EM4x50. Tag nust be on antenna."); @@ -124,8 +147,7 @@ static void print_bit_table(const em4x50_word_t word) { // individual parity errors will be highlighted in red int bit = 0; - char string[400] = {0}; - char pstring[100] = {0}; + char string[NO_CHARS_MAX] = {0}, pstring[NO_CHARS_MAX] = {0}; // print binary data for (int j = 0; j < 4; j++) { @@ -187,8 +209,7 @@ static void print_result(const em4x50_word_t *words, int fwr, int lwr) { // print available information for given word from fwr to lwr, i.e. // bit table + summary lines with hex notation of word (msb + lsb) - char string[400] = {0}; - char pstring[100] = {0}; + char string[NO_CHARS_MAX] = {0}, pstring[NO_CHARS_MAX] = {0}; for (int i = fwr; i <= lwr; i++) { @@ -223,28 +244,26 @@ static void print_result(const em4x50_word_t *words, int fwr, int lwr) { static void print_info_result(PacketResponseNG *resp, const em4x50_data_t *etd, bool bverbose) { - // display all information info result in structured format - - bool bpwd_given = etd->pwd_given; - bool bsuccess = (bool)(resp->status & 0x2); - bool blogin = (bool)(resp->status & 0x1); - bool bpwc, braw; - int fwr, lwr, fwrp, lwrp, fwwi, lwwi; + // display all information of info result in structured format + uint8_t *data = resp->data.asBytes; - em4x50_word_t words[34]; - char pstring[100] = {0}; - char string[200] = {0}; + em4x50_word_t words[EM4X50_NO_WORDS]; + char pstring[NO_CHARS_MAX] = {0}, string[NO_CHARS_MAX] = {0}; - prepare_result(data, 0, 33, words); + bool bpwd_given = etd->pwd_given; + bool bsuccess = resp->status & STATUS_SUCCESS; + bool blogin = resp->status & STATUS_LOGIN; - bpwc = (bool)(words[2].byte[2] & 128); // password check (bit 7) - braw = (bool)(words[2].byte[2] & 64); // read after write (bit 6) - fwr = reflect8(words[2].byte[0]); // first word read - lwr = reflect8(words[2].byte[1]); // last word read - fwrp = reflect8(words[1].byte[0]); // first word read protected - lwrp = reflect8(words[1].byte[1]); // last word read protected - fwwi = reflect8(words[1].byte[2]); // first word write inhibited - lwwi = reflect8(words[1].byte[3]); // last word write inhibited + prepare_result(data, 0, EM4X50_NO_WORDS - 1, words); + + bool bpwc = words[EM4X50_CONTROL].byte[CONFIG_BLOCK] & PASSWORD_CHECK; + bool braw = words[EM4X50_CONTROL].byte[CONFIG_BLOCK] & READ_AFTER_WRITE; + int fwr = reflect8(words[EM4X50_CONTROL].byte[FIRST_WORD_READ]); + int lwr = reflect8(words[EM4X50_CONTROL].byte[LAST_WORD_READ]); + int fwrp = reflect8(words[EM4X50_PROTECTION].byte[FIRST_WORD_READ_PROTECTED]); + int lwrp = reflect8(words[EM4X50_PROTECTION].byte[LAST_WORD_READ_PROTECTED]); + int fwwi = reflect8(words[EM4X50_PROTECTION].byte[FIRST_WORD_WRITE_INHIBITED]); + int lwwi = reflect8(words[EM4X50_PROTECTION].byte[LAST_WORD_WRITE_INHIBITED]); // data section PrintAndLogEx(NORMAL, _YELLOW_("\n em4x50 data:")); @@ -252,12 +271,12 @@ static void print_info_result(PacketResponseNG *resp, const em4x50_data_t *etd, if (bverbose) { // detailed data section - print_result(words, 0, 33); + print_result(words, 0, EM4X50_NO_WORDS - 1); } else { // condensed data section - for (int i = 0; i <= 33; i++) { + for (int i = 0; i < EM4X50_NO_WORDS; i++) { sprintf(pstring, " word[%2i]: ", i); strcat(string, pstring); @@ -268,19 +287,19 @@ static void print_info_result(PacketResponseNG *resp, const em4x50_data_t *etd, } switch(i) { - case 0: + case EM4X50_DEVICE_PASSWORD: sprintf(pstring, _YELLOW_(" password, write only")); break; - case 1: + case EM4X50_PROTECTION: sprintf(pstring, _YELLOW_(" protection word, write inhibited")); break; - case 2: + case EM4X50_CONTROL: sprintf(pstring, _YELLOW_(" control word, write inhibited")); break; - case 32: + case EM4X50_DEVICE_SERIAL: sprintf(pstring, _YELLOW_(" device serial number, read only")); break; - case 33: + case EM4X50_DEVICE_ID: sprintf(pstring, _YELLOW_(" device identification, read only")); break; default: @@ -436,7 +455,7 @@ int CmdEM4x50Info(const char *Cmd) { // print result print_info_result(&resp, &etd, verbose); - success = resp.status & 0x2; + success = resp.status & STATUS_SUCCESS; return (success) ? PM3_SUCCESS : PM3_ESOFT; } @@ -445,12 +464,11 @@ static void print_write_result(PacketResponseNG *resp, const em4x50_data_t *etd) // display result of writing operation in structured format bool pwd_given = etd->pwd_given; - bool success = (bool)(resp->status & 0x2); - bool login = (bool)(resp->status & 0x1); + bool success = resp->status & STATUS_SUCCESS; + bool login = resp->status & STATUS_LOGIN; uint8_t *data = resp->data.asBytes; - char string[400] = {0}; - char pstring[100] = {0}; - em4x50_word_t word[1]; + char string[NO_CHARS_MAX] = {0}, pstring[NO_CHARS_MAX] = {0}; + em4x50_word_t word; if (!success) { @@ -459,8 +477,8 @@ static void print_write_result(PacketResponseNG *resp, const em4x50_data_t *etd) } else { - prepare_result(data, etd->address, etd->address, &word[0]); - print_result(word, etd->address, etd->address); + prepare_result(data, etd->address, etd->address, &word); + print_result(&word, etd->address, etd->address); sprintf(pstring, "\n writing " _GREEN_("ok ")); strcat(string, pstring); @@ -556,7 +574,7 @@ int CmdEM4x50Write(const char *Cmd) { // get, prepare and print response print_write_result(&resp, &etd); - success = (bool)(resp.status & 0x2); + success = resp.status & STATUS_SUCCESS; return (success) ? PM3_SUCCESS : PM3_ESOFT; } @@ -564,9 +582,8 @@ static void print_write_password_result(PacketResponseNG *resp, const em4x50_dat // display result of password changing operation - bool success = (bool)resp->status; - char string[400] = {0}; - char pstring[100] = {0}; + bool success = resp->status; + char string[NO_CHARS_MAX] = {0}, pstring[NO_CHARS_MAX] = {0}; if (!success) {