From 5e4551a1dd8f7c45b6396151f12a80d5fd18d269 Mon Sep 17 00:00:00 2001 From: Marc Kirchner Date: Sat, 9 Dec 2023 22:38:24 +0400 Subject: [PATCH 01/17] Add simple pool allocator, no fallback --- src/hamt.c | 130 +++++++++++++++++++++++++++++++++++++++++++++-- test/test_hamt.c | 10 +++- 2 files changed, 133 insertions(+), 7 deletions(-) diff --git a/src/hamt.c b/src/hamt.c index c00020a..e2aedd4 100644 --- a/src/hamt.c +++ b/src/hamt.c @@ -7,6 +7,8 @@ #include #include +#include + /* #include "mem.h" */ /* Pointer tagging */ @@ -28,7 +30,7 @@ /* Memory management */ #define mem_alloc(ator, size) (ator)->malloc(size) -#define mem_realloc(ator, ptr, size) (ator)->realloc(ptr, size) +// #define mem_realloc(ator, ptr, size) (ator)->realloc(ptr, size) #define mem_free(ator, ptr) (ator)->free(ptr) /* Default allocator uses system malloc */ struct hamt_allocator hamt_allocator_default = {malloc, realloc, free}; @@ -46,12 +48,16 @@ typedef struct hamt_node { } as; } hamt_node; +struct pool_allocator; + struct hamt { struct hamt_node *root; size_t size; hamt_key_hash_fn key_hash; hamt_cmp_fn key_cmp; struct hamt_allocator *ator; + struct pool_allocator *table_ator; + int table_pool_initialized; }; /* hashing w/ state management */ @@ -123,14 +129,122 @@ static inline bool has_index(const hamt_node *anchor, size_t index) return INDEX(anchor) & (1 << index); } +/* table memory management */ + +typedef enum { + POOL_ALLOCATOR_SUCCESS, + POOL_ALLOCATOR_ERROR +} pool_allocator_status; + +struct pool_allocator_stats { + size_t alloc_count; + size_t free_count; +}; + +struct pool_freelist { + struct pool_freelist *next; +}; + +struct pool_allocator { + hamt_node *buf; /* backing buffer */ + size_t rsize; /* reserved size in number of nodes */ + size_t table_size; + size_t size; /* total size == high water mark */ + struct pool_freelist *fl; /* free list head */ + struct pool_allocator_stats stats; /* statistics storage */ +}; + +pool_allocator_status pool_allocator_create( + struct pool_allocator *pool, + size_t rsize, + size_t table_size) +{ + // FIXME: align rsize to pagesize + if ((pool->buf = (hamt_node *) mmap( + 0, rsize * sizeof(struct hamt_node) * table_size, + PROT_READ|PROT_WRITE, + MAP_ANON|MAP_PRIVATE, -1, 0)) == MAP_FAILED) { + return POOL_ALLOCATOR_ERROR; + } + pool->rsize = rsize; + pool->table_size = table_size; + pool->size = 0; + pool->fl = NULL; + pool->stats.alloc_count = 0; + pool->stats.free_count = 0; + return POOL_ALLOCATOR_SUCCESS; +} + +void pool_allocator_delete(struct pool_allocator *pool) +{ + munmap(pool->buf, pool->rsize * pool->table_size * sizeof(hamt_node)); +} + +hamt_node *pool_allocator_alloc(struct pool_allocator *pool) +{ + /* maintains a free list that minimizes fragmentation when + * memory is returned */ + pool->stats.alloc_count++; + /* attempt to return from the freelist */ + if (pool->fl) { + //printf("fl: %p\n", pool->fl); + struct pool_freelist *f = pool->fl; + // printf("Allocating from freelist: %p, new head: %p\n", f, pool->fl->next); + pool->fl = pool->fl->next; + return (hamt_node *)f; + } + /* fall back to backing store if the freelist is empty */ + hamt_node *p = &pool->buf[pool->size * pool->table_size]; + pool->size++; + // printf("Allocating from mmap: %p\n", p); + return p; +} + +void pool_allocator_free(struct pool_allocator *pool, void *p) +{ + // FIXME: boundary checks for pointer pos? + void *start = pool->buf; + void *end = &pool->buf[pool->size*pool->table_size]; + if (p) { + // printf("Bucket %lu boundaries: [%p <= %p < %p)\n", pool->table_size, start, p, end); + assert((start <= p && p < end) && "Invalid free"); + pool->stats.free_count++; + /* insert returned memory at the front of the freelist */ + struct pool_freelist *new_head = (struct pool_freelist *)p; + // printf("Freeing to freelist: new head: %p in front of %p\n", p, pool->fl); + new_head->next = pool->fl; + pool->fl = new_head; + } +} + +int pool_initialized = 0; + +void table_pools_init(struct pool_allocator *pools) +{ + // printf("initializing table pool..."); + for (size_t i = 0; i < 32; ++i) { + pool_allocator_create(&pools[i], 1024*1024*1024, i+1); + } +} + +void table_pools_destroy(struct pool_allocator *pools) +{ + for (size_t i = 0; i < 32; ++i) { + pool_allocator_delete(&pools[i]); + } +} + hamt_node *table_allocate(const struct hamt *h, size_t size) { - return (hamt_node *)mem_alloc(h->ator, (size * sizeof(hamt_node))); + if (size == 0) return NULL; + // printf("Allocating from bucket %lu, size %lu\n", size-1, size); + return pool_allocator_alloc(&h->table_ator[size-1]); } void table_free(struct hamt *h, hamt_node *ptr, size_t size) { - mem_free(h->ator, ptr); + // printf("De-allocating to bucket %lu, size %lu\n", size-1, size); + if (size) pool_allocator_free(&h->table_ator[size-1], ptr); } hamt_node *table_extend(struct hamt *h, hamt_node *anchor, size_t n_rows, @@ -218,6 +332,8 @@ struct hamt *hamt_create(hamt_key_hash_fn key_hash, hamt_cmp_fn key_cmp, trie->size = 0; trie->key_hash = key_hash; trie->key_cmp = key_cmp; + trie->table_ator = mem_alloc(ator, sizeof(struct pool_allocator) * 32); + table_pools_init(trie->table_ator); return trie; } @@ -229,6 +345,7 @@ struct hamt *hamt_dup(const struct hamt *h) trie->size = h->size; trie->key_hash = h->key_hash; trie->key_cmp = h->key_cmp; + trie->table_ator = h->table_ator; /* shallow duplication! */ return trie; } @@ -412,7 +529,7 @@ static path_result search(const struct hamt *h, hamt_node *anchor, hash_state *hash, hamt_cmp_fn cmp_eq, const void *key) { path_result pr; - pr.root = mem_alloc(h->ator, sizeof(hamt_node)); + pr.root = table_allocate(h, 1); pr.sr = search_recursive(h, anchor, hash, cmp_eq, key, pr.root); return pr; } @@ -527,7 +644,7 @@ static path_result rem(struct hamt *h, hamt_node *root, hamt_node *anchor, hash_state *hash, hamt_cmp_fn cmp_eq, const void *key) { path_result pr; - pr.root = mem_alloc(h->ator, sizeof(hamt_node)); + pr.root = table_allocate(h, 1); pr.rr = rem_recursive(h, pr.root, anchor, hash, cmp_eq, key, pr.root); return pr; } @@ -567,6 +684,7 @@ const struct hamt *hamt_premove(const struct hamt *trie, void *key) /* delete recursively from anchor */ void delete_recursive(struct hamt *h, hamt_node *anchor) { + // FIXME: n is the wrong n? if (TABLE(anchor)) { assert(!is_value(VALUE(anchor)) && "delete requires an internal node"); size_t n = get_popcount(INDEX(anchor)); @@ -583,6 +701,8 @@ void delete_recursive(struct hamt *h, hamt_node *anchor) void hamt_delete(struct hamt *h) { delete_recursive(h, h->root); + table_pools_destroy(h->table_ator); + mem_free(h->ator, h->table_ator); mem_free(h->ator, h->root); mem_free(h->ator, h); } diff --git a/test/test_hamt.c b/test/test_hamt.c index 31bc761..a17c5aa 100644 --- a/test/test_hamt.c +++ b/test/test_hamt.c @@ -233,7 +233,7 @@ MU_TEST_CASE(test_set_with_collisions) char keys[] = "028"; int values[] = {0, 2, 8}; - hamt_node *t_root = (hamt_node *)calloc(sizeof(hamt_node), 3); + hamt_node *t_root = table_allocate(t, 2); t_root[0].as.kv.key = &keys[0]; t_root[0].as.kv.value = tagged(&values[0]); t_root[1].as.kv.key = &keys[1]; @@ -242,6 +242,8 @@ MU_TEST_CASE(test_set_with_collisions) t->root->as.table.ptr = t_root; t->root->as.table.index = (1 << 23) | (1 << 31); + printf("root: %p\n", t_root); + /* insert value and find it again */ const hamt_node *new_node = set(t, t->root, t->key_hash, t->key_cmp, &keys[2], &values[2]); @@ -841,11 +843,15 @@ MU_TEST_SUITE(test_suite) MU_RUN_TEST(test_size); MU_RUN_TEST(test_iterators); MU_RUN_TEST(test_iterators_1m); + MU_RUN_TEST(test_tree_depth); // persistent data structure tests + /* + * disable persistent data structure tests for allocator pool testing + * MU_RUN_TEST(test_persistent_set); MU_RUN_TEST(test_persistent_aspell_dict_en); MU_RUN_TEST(test_persistent_remove_aspell_dict_en); - MU_RUN_TEST(test_tree_depth); + */ return 0; } From e4303ed2f6b17d7a18858e2356e7a99b8edcfb25 Mon Sep 17 00:00:00 2001 From: Marc Kirchner Date: Sat, 16 Dec 2023 21:51:30 +0400 Subject: [PATCH 02/17] Add allocation stats --- test/test_hamt.c | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/test/test_hamt.c b/test/test_hamt.c index a17c5aa..0c88aa1 100644 --- a/test/test_hamt.c +++ b/test/test_hamt.c @@ -779,7 +779,7 @@ MU_TEST_CASE(test_persistent_remove_aspell_dict_en) MU_TEST_CASE(test_tree_depth) { - printf(". testing tree depth log32 assumptions"); + printf(". testing tree depth log32 assumptions\n"); size_t n_items = 1e6; char **words = NULL; @@ -816,6 +816,24 @@ MU_TEST_CASE(test_tree_depth) } } + printf("Allocation stats\n"); + size_t total_size = 0; + size_t total_allocated_items = 0; + for (size_t l = 0; l<32; ++l) { + total_size += t->table_ator[l].size; + total_allocated_items += t->table_ator[l].size * l; + } + for (size_t l = 0; l<32; ++l) { + printf(" %2lu: size=%8lu (%5.2f%%), n_allocs=%8lu, n_frees=%8lu, fill=%5.2f%%\n", + l, + t->table_ator[l].size, + 100 * t->table_ator[l].size / (float) total_size, + t->table_ator[l].stats.alloc_count, + t->table_ator[l].stats.free_count, + 100*(1.0 - (t->table_ator[l].stats.free_count / + (float) t->table_ator[l].stats.alloc_count))); + } + printf("Alloc overhead: %f\n", total_allocated_items / 1000000.0); hamt_delete(t); words_free(words, n_items); printf(" (avg tree depth w/ %lu items: %f, expected %f, max: %lu)\n", From 79e5caa3ad01946d148614414f3cde88afa4f760 Mon Sep 17 00:00:00 2001 From: Marc Kirchner Date: Thu, 21 Dec 2023 21:59:37 +0400 Subject: [PATCH 03/17] ongoing unit test failures; wip --- Makefile | 2 +- src/hamt.c | 213 +++++++++++++++++++++++++++++------------------ test/test_hamt.c | 8 +- 3 files changed, 137 insertions(+), 86 deletions(-) diff --git a/Makefile b/Makefile index e696f94..8581669 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ TEST_MURMUR_SRCS := test/test_murmur.c TEST_MURMUR_OBJS := $(TEST_MURMUR_SRCS:%=$(BUILD_DIR)/%.o) TEST_MURMUR_DEPS := $(TEST_MURMUR_OBJS:.o=.d) -CPPFLAGS ?= $(INC_FLAGS) -MMD -MP -O3 # -g -O0 +CPPFLAGS ?= $(INC_FLAGS) -MMD -MP -O0 -g #-O0 lib: $(BUILD_DIR)/src/libhamt.dylib diff --git a/src/hamt.c b/src/hamt.c index 1f8a3fe..cd14654 100644 --- a/src/hamt.c +++ b/src/hamt.c @@ -30,8 +30,8 @@ /* Memory management */ #define mem_alloc(ator, size) (ator)->malloc(size) -// #define mem_realloc(ator, ptr, size) (ator)->realloc(ptr, size) #define mem_free(ator, ptr) (ator)->free(ptr) + /* Default allocator uses system malloc */ struct hamt_allocator hamt_allocator_default = {malloc, realloc, free}; @@ -48,7 +48,7 @@ typedef struct hamt_node { } as; } hamt_node; -struct pool_allocator; +struct table_allocator; struct hamt { struct hamt_node *root; @@ -56,8 +56,7 @@ struct hamt { hamt_key_hash_fn key_hash; hamt_cmp_fn key_cmp; struct hamt_allocator *ator; - struct pool_allocator *table_ator; - int table_pool_initialized; + struct table_allocator *table_ator; }; /* hashing w/ state management */ @@ -129,122 +128,172 @@ static inline bool has_index(const hamt_node *anchor, size_t index) return INDEX(anchor) & (1 << index); } -/* table memory management */ +/* + * Table memory management + * + * Table memory is managed using an array of fixed-size pool allocators with a + * freelist. + */ -typedef enum { - POOL_ALLOCATOR_SUCCESS, - POOL_ALLOCATOR_ERROR -} pool_allocator_status; +#define ALLOCATOR_STATS 1 -struct pool_allocator_stats { +#ifdef ALLOCATOR_STATS +struct table_allocator_stats { size_t alloc_count; size_t free_count; }; +#endif -struct pool_freelist { - struct pool_freelist *next; +struct table_allocator_freelist { + struct table_allocator_freelist *next; }; -struct pool_allocator { - hamt_node *buf; /* backing buffer */ - size_t rsize; /* reserved size in number of nodes */ - size_t table_size; - size_t size; /* total size == high water mark */ - struct pool_freelist *fl; /* free list head */ - struct pool_allocator_stats stats; /* statistics storage */ +struct table_allocator_chunk { + struct table_allocator_chunk *next; + ptrdiff_t size; + struct hamt_node *buf; }; -pool_allocator_status pool_allocator_create( - struct pool_allocator *pool, - size_t rsize, - size_t table_size) -{ - // FIXME: align rsize to pagesize - if ((pool->buf = (hamt_node *) mmap( - 0, rsize * sizeof(struct hamt_node) * table_size, - PROT_READ|PROT_WRITE, - MAP_ANON|MAP_PRIVATE, -1, 0)) == MAP_FAILED) { - return POOL_ALLOCATOR_ERROR; - } - pool->rsize = rsize; - pool->table_size = table_size; - pool->size = 0; - pool->fl = NULL; - pool->stats.alloc_count = 0; - pool->stats.free_count = 0; - return POOL_ALLOCATOR_SUCCESS; -} +struct table_allocator { + struct table_allocator_chunk *chunk; /* backing buffer (chain of chunks) */ + ptrdiff_t ix; /* high water mark in current chunk */ + size_t chunk_count; /* number of chunks in the pool */ + ptrdiff_t table_size; /* number of rows in table */ + struct table_allocator_freelist *fl; /* head of the free list */ +#ifdef ALLOCATOR_STATS + struct table_allocator_stats stats; /* statistics */ +#endif +}; -void pool_allocator_delete(struct pool_allocator *pool) -{ - munmap(pool->buf, pool->rsize * pool->table_size * sizeof(hamt_node)); +int table_allocator_create(struct table_allocator *pool, + ptrdiff_t initial_cache_size, ptrdiff_t table_size, + struct hamt_allocator *backing_allocator) +{ + /* pool config */ + *pool = (struct table_allocator){ + .ix = 0, .chunk_count = 1, .table_size = table_size, .fl = NULL}; +#ifdef ALLOCATOR_STATS + pool->stats = + (struct table_allocator_stats){.alloc_count = 0, .free_count = 0}; +#endif + /* set up initial chunk */ + pool->chunk = + backing_allocator->malloc(sizeof(struct table_allocator_chunk)); + if (!pool->chunk) + goto err_no_cleanup; + pool->chunk->size = initial_cache_size * table_size; + pool->chunk->buf = (struct hamt_node *)backing_allocator->malloc( + pool->chunk->size * sizeof(struct hamt_node)); + if (!pool->chunk->buf) + goto err_free_chunk; + pool->chunk->next = NULL; + return 0; +err_free_chunk: + backing_allocator->free(pool->chunk); + pool->chunk = NULL; +err_no_cleanup: + pool->chunk_count = 0; + return -1; +} + +void table_allocator_delete(struct table_allocator *pool, + struct hamt_allocator *backing_allocator) +{ + struct table_allocator_chunk *current_chunk = pool->chunk, *next_chunk; + /* free all buffers in all chunks */ + while (current_chunk) { + backing_allocator->free(current_chunk->buf); + next_chunk = current_chunk->next; + backing_allocator->free(current_chunk); + current_chunk = next_chunk; + } } -hamt_node *pool_allocator_alloc(struct pool_allocator *pool) +struct hamt_node * +table_allocator_alloc(struct table_allocator *pool, + struct hamt_allocator *backing_allocator) { - /* maintains a free list that minimizes fragmentation when - * memory is returned */ +#ifdef ALLOCATOR_STATS pool->stats.alloc_count++; +#endif /* attempt to return from the freelist */ if (pool->fl) { - //printf("fl: %p\n", pool->fl); - struct pool_freelist *f = pool->fl; - // printf("Allocating from freelist: %p, new head: %p\n", f, pool->fl->next); + struct table_allocator_freelist *f = pool->fl; pool->fl = pool->fl->next; - return (hamt_node *)f; + return (struct hamt_node *)f; + } + /* freelist is empty, serve from chunk */ + /* make sure chunk is not empty or create new one */ + if (pool->ix == pool->chunk->size) { + struct table_allocator_chunk *chunk = + backing_allocator->malloc(sizeof(struct table_allocator_chunk)); + if (!chunk) + goto err_no_cleanup; + /* create new chunk w/ same size as previous */ + chunk->size = pool->chunk->size; + chunk->buf = (struct hamt_node *)backing_allocator->malloc( + chunk->size * sizeof(struct hamt_node)); + if (!chunk->buf) + goto err_free_chunk; + chunk->next = pool->chunk; + pool->chunk = chunk; + pool->ix = 0; + pool->chunk_count++; } - /* fall back to backing store if the freelist is empty */ - hamt_node *p = &pool->buf[pool->size * pool->table_size]; - pool->size++; - // printf("Allocating from mmap: %p\n", p); + /* serve from chunk */ + struct hamt_node *p = &pool->chunk->buf[pool->ix]; + pool->ix++; return p; +err_free_chunk: + backing_allocator->free(pool->chunk); + pool->chunk = NULL; +err_no_cleanup: + return NULL; } -void pool_allocator_free(struct pool_allocator *pool, void *p) -{ - // FIXME: boundary checks for pointer pos? - void *start = pool->buf; - void *end = &pool->buf[pool->size*pool->table_size]; - if (p) { - // printf("Bucket %lu boundaries: [%p <= %p < %p)\n", pool->table_size, start, p, end); - assert((start <= p && p < end) && "Invalid free"); - pool->stats.free_count++; - /* insert returned memory at the front of the freelist */ - struct pool_freelist *new_head = (struct pool_freelist *)p; - // printf("Freeing to freelist: new head: %p in front of %p\n", p, pool->fl); - new_head->next = pool->fl; - pool->fl = new_head; - } +void table_allocator_free(struct table_allocator *pool, void *p) +{ +#ifdef ALLOCATOR_STATS + pool->stats.free_count++; +#endif + /* insert returned memory at the front of the freelist */ + struct table_allocator_freelist *head = + (struct table_allocator_freelist *)p; + head->next = pool->fl; + pool->fl = head; } -int pool_initialized = 0; - -void table_pools_init(struct pool_allocator *pools) +void table_allocators_init(struct table_allocator *pools, + struct hamt_allocator *backing_allocator) { - // printf("initializing table pool..."); for (size_t i = 0; i < 32; ++i) { - pool_allocator_create(&pools[i], 1024*1024*1024, i+1); + // FIXME: sizes need to be parameters + table_allocator_create(&pools[i], 1024 * 1024 * 1024, i + 1, + backing_allocator); } } -void table_pools_destroy(struct pool_allocator *pools) +void table_allocators_destroy(struct table_allocator *pools, + struct hamt_allocator *backing_allocator) { for (size_t i = 0; i < 32; ++i) { - pool_allocator_delete(&pools[i]); + table_allocator_delete(&pools[i], backing_allocator); } } hamt_node *table_allocate(const struct hamt *h, size_t size) { - if (size == 0) return NULL; + if (size == 0) + return NULL; // printf("Allocating from bucket %lu, size %lu\n", size-1, size); - return pool_allocator_alloc(&h->table_ator[size-1]); + return table_allocator_alloc(&h->table_ator[size - 1], h->ator); } void table_free(struct hamt *h, hamt_node *ptr, size_t size) { - // printf("De-allocating to bucket %lu, size %lu\n", size-1, size); - if (size) pool_allocator_free(&h->table_ator[size-1], ptr); + // printf("De-allocating to bucket %lu, size %lu\n", size-1, size); + if (size) + table_allocator_free(&h->table_ator[size - 1], ptr); } hamt_node *table_extend(struct hamt *h, hamt_node *anchor, size_t n_rows, @@ -332,8 +381,8 @@ struct hamt *hamt_create(hamt_key_hash_fn key_hash, hamt_cmp_fn key_cmp, trie->size = 0; trie->key_hash = key_hash; trie->key_cmp = key_cmp; - trie->table_ator = mem_alloc(ator, sizeof(struct pool_allocator) * 32); - table_pools_init(trie->table_ator); + trie->table_ator = mem_alloc(ator, sizeof(struct table_allocator) * 32); + table_allocators_init(trie->table_ator, trie->ator); return trie; } @@ -701,7 +750,7 @@ void delete_recursive(struct hamt *h, hamt_node *anchor) void hamt_delete(struct hamt *h) { delete_recursive(h, h->root); - table_pools_destroy(h->table_ator); + table_allocators_destroy(h->table_ator, h->ator); mem_free(h->ator, h->table_ator); mem_free(h->ator, h->root); mem_free(h->ator, h); diff --git a/test/test_hamt.c b/test/test_hamt.c index f8d548e..a98cd8e 100644 --- a/test/test_hamt.c +++ b/test/test_hamt.c @@ -787,8 +787,9 @@ static uint32_t my_keyhash_universal(const void *key, const size_t gen) static void print_allocation_stats(struct hamt *t) { - size_t total_size = 0; - size_t total_allocated_items = 0; + /* + ptrdiff_t total_size = 0; + ptrdiff_t total_allocated_items = 0; for (size_t l = 0; l < 32; ++l) { total_size += t->table_ator[l].size; total_allocated_items += t->table_ator[l].size * l; @@ -807,13 +808,14 @@ static void print_allocation_stats(struct hamt *t) 100 * (1.0 - (t->table_ator[l].stats.free_count / (float)t->table_ator[l].stats.alloc_count))); } + */ } MU_TEST_CASE(test_tree_depth) { printf(". creating tree statistics\n"); - size_t n_items = 1e7; + size_t n_items = 1e5; char **words = NULL; struct hamt *t; From 3e9d6fc4ffe2ce2d438c7190f24b4a4a462ffda7 Mon Sep 17 00:00:00 2001 From: Marc Kirchner Date: Fri, 22 Dec 2023 13:57:59 +0400 Subject: [PATCH 04/17] Fixed segfault --- src/hamt.c | 44 +++++++++++++++++++++++--------------------- test/test_hamt.c | 6 +----- 2 files changed, 24 insertions(+), 26 deletions(-) diff --git a/src/hamt.c b/src/hamt.c index cd14654..e0bd33f 100644 --- a/src/hamt.c +++ b/src/hamt.c @@ -149,14 +149,15 @@ struct table_allocator_freelist { }; struct table_allocator_chunk { - struct table_allocator_chunk *next; - ptrdiff_t size; - struct hamt_node *buf; + struct table_allocator_chunk *next; /* pointer to next chunk */ + ptrdiff_t size; /* buffer size in count */ + struct hamt_node *buf; /* pointer to the actual buffer */ }; struct table_allocator { struct table_allocator_chunk *chunk; /* backing buffer (chain of chunks) */ - ptrdiff_t ix; /* high water mark in current chunk */ + ptrdiff_t size; /* count of allocated tables */ + ptrdiff_t buf_ix; /* high water mark in current chunk */ size_t chunk_count; /* number of chunks in the pool */ ptrdiff_t table_size; /* number of rows in table */ struct table_allocator_freelist *fl; /* head of the free list */ @@ -171,22 +172,22 @@ int table_allocator_create(struct table_allocator *pool, { /* pool config */ *pool = (struct table_allocator){ - .ix = 0, .chunk_count = 1, .table_size = table_size, .fl = NULL}; -#ifdef ALLOCATOR_STATS - pool->stats = - (struct table_allocator_stats){.alloc_count = 0, .free_count = 0}; -#endif + .chunk = NULL, .size = 0, .buf_ix = 0, .chunk_count = 1, .table_size = table_size, .fl = NULL}; /* set up initial chunk */ pool->chunk = backing_allocator->malloc(sizeof(struct table_allocator_chunk)); if (!pool->chunk) goto err_no_cleanup; pool->chunk->size = initial_cache_size * table_size; - pool->chunk->buf = (struct hamt_node *)backing_allocator->malloc( - pool->chunk->size * sizeof(struct hamt_node)); + pool->chunk->buf = (struct hamt_node *)backing_allocator->malloc(pool->chunk->size * sizeof(struct hamt_node)); if (!pool->chunk->buf) goto err_free_chunk; pool->chunk->next = NULL; +#ifdef ALLOCATOR_STATS + /* set up stats storage */ + pool->stats = + (struct table_allocator_stats){.alloc_count = 0, .free_count = 0}; +#endif return 0; err_free_chunk: backing_allocator->free(pool->chunk); @@ -209,6 +210,9 @@ void table_allocator_delete(struct table_allocator *pool, } } +/** + * Return a pointer to a hamt_node array of size table_size. + */ struct hamt_node * table_allocator_alloc(struct table_allocator *pool, struct hamt_allocator *backing_allocator) @@ -223,26 +227,26 @@ table_allocator_alloc(struct table_allocator *pool, return (struct hamt_node *)f; } /* freelist is empty, serve from chunk */ - /* make sure chunk is not empty or create new one */ - if (pool->ix == pool->chunk->size) { + if (pool->buf_ix == pool->chunk->size) { + /* if chunk has no capacity left, create new one */ struct table_allocator_chunk *chunk = backing_allocator->malloc(sizeof(struct table_allocator_chunk)); if (!chunk) goto err_no_cleanup; /* create new chunk w/ same size as previous */ chunk->size = pool->chunk->size; - chunk->buf = (struct hamt_node *)backing_allocator->malloc( - chunk->size * sizeof(struct hamt_node)); + chunk->buf = (struct hamt_node *)backing_allocator->malloc(chunk->size * sizeof(struct hamt_node)); if (!chunk->buf) goto err_free_chunk; chunk->next = pool->chunk; pool->chunk = chunk; - pool->ix = 0; + pool->buf_ix = 0; pool->chunk_count++; } /* serve from chunk */ - struct hamt_node *p = &pool->chunk->buf[pool->ix]; - pool->ix++; + struct hamt_node *p = &pool->chunk->buf[pool->buf_ix]; + pool->buf_ix += pool->table_size; + pool->size++; return p; err_free_chunk: backing_allocator->free(pool->chunk); @@ -285,14 +289,12 @@ hamt_node *table_allocate(const struct hamt *h, size_t size) { if (size == 0) return NULL; - // printf("Allocating from bucket %lu, size %lu\n", size-1, size); return table_allocator_alloc(&h->table_ator[size - 1], h->ator); } void table_free(struct hamt *h, hamt_node *ptr, size_t size) { - // printf("De-allocating to bucket %lu, size %lu\n", size-1, size); - if (size) + if (ptr && size) table_allocator_free(&h->table_ator[size - 1], ptr); } diff --git a/test/test_hamt.c b/test/test_hamt.c index a98cd8e..7e4b717 100644 --- a/test/test_hamt.c +++ b/test/test_hamt.c @@ -245,8 +245,6 @@ MU_TEST_CASE(test_set_with_collisions) t->root->as.table.ptr = t_root; t->root->as.table.index = (1 << 23) | (1 << 31); - printf("root: %p\n", t_root); - /* insert value and find it again */ const hamt_node *new_node = set(t, t->root, t->key_hash, t->key_cmp, &keys[2], &values[2]); @@ -787,7 +785,6 @@ static uint32_t my_keyhash_universal(const void *key, const size_t gen) static void print_allocation_stats(struct hamt *t) { - /* ptrdiff_t total_size = 0; ptrdiff_t total_allocated_items = 0; for (size_t l = 0; l < 32; ++l) { @@ -808,7 +805,6 @@ static void print_allocation_stats(struct hamt *t) 100 * (1.0 - (t->table_ator[l].stats.free_count / (float)t->table_ator[l].stats.alloc_count))); } - */ } MU_TEST_CASE(test_tree_depth) @@ -874,6 +870,7 @@ int mu_tests_run = 0; MU_TEST_SUITE(test_suite) { + MU_RUN_TEST(test_aspell_dict_en); MU_RUN_TEST(test_popcount); MU_RUN_TEST(test_compact_index); MU_RUN_TEST(test_tagging); @@ -881,7 +878,6 @@ MU_TEST_SUITE(test_suite) MU_RUN_TEST(test_set_with_collisions); MU_RUN_TEST(test_set_whole_enchilada_00); MU_RUN_TEST(test_set_stringkeys); - MU_RUN_TEST(test_aspell_dict_en); MU_RUN_TEST(test_setget_large_scale); MU_RUN_TEST(test_shrink_table); MU_RUN_TEST(test_gather_table); From 7cb61862e6a0afd1271bba8ad1b4df3a4baf3975 Mon Sep 17 00:00:00 2001 From: Marc Kirchner Date: Sun, 24 Dec 2023 15:39:22 +0400 Subject: [PATCH 05/17] Make table cache optional at compile time --- Makefile | 2 +- src/hamt.c | 34 +++++++++++++++++++++++++++------- test/test_hamt.c | 12 ++++++++---- 3 files changed, 36 insertions(+), 12 deletions(-) diff --git a/Makefile b/Makefile index 8581669..ab6272b 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ TEST_MURMUR_SRCS := test/test_murmur.c TEST_MURMUR_OBJS := $(TEST_MURMUR_SRCS:%=$(BUILD_DIR)/%.o) TEST_MURMUR_DEPS := $(TEST_MURMUR_OBJS:.o=.d) -CPPFLAGS ?= $(INC_FLAGS) -MMD -MP -O0 -g #-O0 +CPPFLAGS ?= $(INC_FLAGS) -MMD -MP -O0 -g # -DWITH_TABLE_CACHE -DWITH_TABLE_CACHE_STATS lib: $(BUILD_DIR)/src/libhamt.dylib diff --git a/src/hamt.c b/src/hamt.c index e0bd33f..f614a65 100644 --- a/src/hamt.c +++ b/src/hamt.c @@ -48,7 +48,9 @@ typedef struct hamt_node { } as; } hamt_node; +#ifdef WITH_TABLE_CACHE struct table_allocator; +#endif struct hamt { struct hamt_node *root; @@ -56,7 +58,9 @@ struct hamt { hamt_key_hash_fn key_hash; hamt_cmp_fn key_cmp; struct hamt_allocator *ator; +#ifdef WITH_TABLE_CACHE struct table_allocator *table_ator; +#endif }; /* hashing w/ state management */ @@ -135,9 +139,9 @@ static inline bool has_index(const hamt_node *anchor, size_t index) * freelist. */ -#define ALLOCATOR_STATS 1 +#ifdef WITH_TABLE_CACHE -#ifdef ALLOCATOR_STATS +#ifdef WITH_TABLE_CACHE_STATS struct table_allocator_stats { size_t alloc_count; size_t free_count; @@ -161,7 +165,7 @@ struct table_allocator { size_t chunk_count; /* number of chunks in the pool */ ptrdiff_t table_size; /* number of rows in table */ struct table_allocator_freelist *fl; /* head of the free list */ -#ifdef ALLOCATOR_STATS +#ifdef WITH_TABLE_CACHE_STATS struct table_allocator_stats stats; /* statistics */ #endif }; @@ -183,7 +187,7 @@ int table_allocator_create(struct table_allocator *pool, if (!pool->chunk->buf) goto err_free_chunk; pool->chunk->next = NULL; -#ifdef ALLOCATOR_STATS +#ifdef WITH_TABLE_CACHE_STATS /* set up stats storage */ pool->stats = (struct table_allocator_stats){.alloc_count = 0, .free_count = 0}; @@ -217,7 +221,7 @@ struct hamt_node * table_allocator_alloc(struct table_allocator *pool, struct hamt_allocator *backing_allocator) { -#ifdef ALLOCATOR_STATS +#ifdef WITH_TABLE_CACHE_STATS pool->stats.alloc_count++; #endif /* attempt to return from the freelist */ @@ -257,7 +261,7 @@ table_allocator_alloc(struct table_allocator *pool, void table_allocator_free(struct table_allocator *pool, void *p) { -#ifdef ALLOCATOR_STATS +#ifdef WITH_TABLE_CACHE_STATS pool->stats.free_count++; #endif /* insert returned memory at the front of the freelist */ @@ -284,18 +288,27 @@ void table_allocators_destroy(struct table_allocator *pools, table_allocator_delete(&pools[i], backing_allocator); } } +#endif /* WITH_TABLE_CACHE */ hamt_node *table_allocate(const struct hamt *h, size_t size) { if (size == 0) return NULL; +#ifdef WITH_TABLE_CACHE return table_allocator_alloc(&h->table_ator[size - 1], h->ator); +#else + return mem_alloc(h->ator, size * sizeof(struct hamt_node)); +#endif } void table_free(struct hamt *h, hamt_node *ptr, size_t size) { if (ptr && size) +#ifdef WITH_TABLE_CACHE table_allocator_free(&h->table_ator[size - 1], ptr); +#else + mem_free(h->ator, ptr); +#endif } hamt_node *table_extend(struct hamt *h, hamt_node *anchor, size_t n_rows, @@ -383,8 +396,10 @@ struct hamt *hamt_create(hamt_key_hash_fn key_hash, hamt_cmp_fn key_cmp, trie->size = 0; trie->key_hash = key_hash; trie->key_cmp = key_cmp; +#ifdef WITH_TABLE_CACHE trie->table_ator = mem_alloc(ator, sizeof(struct table_allocator) * 32); table_allocators_init(trie->table_ator, trie->ator); +#endif return trie; } @@ -396,7 +411,9 @@ struct hamt *hamt_dup(const struct hamt *h) trie->size = h->size; trie->key_hash = h->key_hash; trie->key_cmp = h->key_cmp; +#ifdef WITH_TABLE_CACHE trie->table_ator = h->table_ator; /* shallow duplication! */ +#endif return trie; } @@ -735,7 +752,6 @@ const struct hamt *hamt_premove(const struct hamt *trie, void *key) /* delete recursively from anchor */ void delete_recursive(struct hamt *h, hamt_node *anchor) { - // FIXME: n is the wrong n? if (TABLE(anchor)) { assert(!is_value(VALUE(anchor)) && "delete requires an internal node"); size_t n = get_popcount(INDEX(anchor)); @@ -751,9 +767,13 @@ void delete_recursive(struct hamt *h, hamt_node *anchor) void hamt_delete(struct hamt *h) { + // FIXME: cannot delete the hamt when persistent since that will + // delete the ator and table_ator of all hamts delete_recursive(h, h->root); +#ifdef WITH_TABLE_CACHE table_allocators_destroy(h->table_ator, h->ator); mem_free(h->ator, h->table_ator); +#endif mem_free(h->ator, h->root); mem_free(h->ator, h); } diff --git a/test/test_hamt.c b/test/test_hamt.c index 7e4b717..88a524e 100644 --- a/test/test_hamt.c +++ b/test/test_hamt.c @@ -783,6 +783,8 @@ static uint32_t my_keyhash_universal(const void *key, const size_t gen) return sedgewick_universal_hash((const char *)key, 0x8fffffff - (gen << 8)); } +#ifdef WITH_TABLE_CACHE +#ifdef WITH_TABLE_CACHE_STATS static void print_allocation_stats(struct hamt *t) { ptrdiff_t total_size = 0; @@ -806,6 +808,8 @@ static void print_allocation_stats(struct hamt *t) (float)t->table_ator[l].stats.alloc_count))); } } +#endif +#endif MU_TEST_CASE(test_tree_depth) { @@ -827,7 +831,11 @@ MU_TEST_CASE(test_tree_depth) hamt_set(t, words[i], words[i]); } printf("\n [ %s ]\n", hash_names[k]); +#ifdef WITH_TABLE_CACHE +#ifdef WITH_TABLE_CACHE_STATS print_allocation_stats(t); +#endif +#endif /* Calculate the avg tree depth across all items */ double avg_depth = 0.0; @@ -888,13 +896,9 @@ MU_TEST_SUITE(test_suite) MU_RUN_TEST(test_iterators_1m); MU_RUN_TEST(test_tree_depth); // persistent data structure tests - /* - * disable persistent data structure tests for allocator pool testing - * MU_RUN_TEST(test_persistent_set); MU_RUN_TEST(test_persistent_aspell_dict_en); MU_RUN_TEST(test_persistent_remove_aspell_dict_en); - */ return 0; } From 7efa88111aea8441147dec5e6f727d5173f4a1cc Mon Sep 17 00:00:00 2001 From: Marc Kirchner Date: Sun, 24 Dec 2023 21:44:36 +0400 Subject: [PATCH 06/17] Change preprocessor directive style --- src/hamt.c | 38 +++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 19 deletions(-) diff --git a/src/hamt.c b/src/hamt.c index f614a65..2fe6e1f 100644 --- a/src/hamt.c +++ b/src/hamt.c @@ -48,7 +48,7 @@ typedef struct hamt_node { } as; } hamt_node; -#ifdef WITH_TABLE_CACHE +#if defined(WITH_TABLE_CACHE) struct table_allocator; #endif @@ -58,7 +58,7 @@ struct hamt { hamt_key_hash_fn key_hash; hamt_cmp_fn key_cmp; struct hamt_allocator *ator; -#ifdef WITH_TABLE_CACHE +#if defined(WITH_TABLE_CACHE) struct table_allocator *table_ator; #endif }; @@ -139,14 +139,14 @@ static inline bool has_index(const hamt_node *anchor, size_t index) * freelist. */ -#ifdef WITH_TABLE_CACHE +#if defined(WITH_TABLE_CACHE) -#ifdef WITH_TABLE_CACHE_STATS +# if defined(WITH_TABLE_CACHE_STATS) struct table_allocator_stats { size_t alloc_count; size_t free_count; }; -#endif +# endif struct table_allocator_freelist { struct table_allocator_freelist *next; @@ -165,9 +165,9 @@ struct table_allocator { size_t chunk_count; /* number of chunks in the pool */ ptrdiff_t table_size; /* number of rows in table */ struct table_allocator_freelist *fl; /* head of the free list */ -#ifdef WITH_TABLE_CACHE_STATS +# if defined(WITH_TABLE_CACHE_STATS) struct table_allocator_stats stats; /* statistics */ -#endif +# endif }; int table_allocator_create(struct table_allocator *pool, @@ -187,11 +187,11 @@ int table_allocator_create(struct table_allocator *pool, if (!pool->chunk->buf) goto err_free_chunk; pool->chunk->next = NULL; -#ifdef WITH_TABLE_CACHE_STATS +# if defined(WITH_TABLE_CACHE_STATS) /* set up stats storage */ pool->stats = (struct table_allocator_stats){.alloc_count = 0, .free_count = 0}; -#endif +# endif return 0; err_free_chunk: backing_allocator->free(pool->chunk); @@ -221,9 +221,9 @@ struct hamt_node * table_allocator_alloc(struct table_allocator *pool, struct hamt_allocator *backing_allocator) { -#ifdef WITH_TABLE_CACHE_STATS +# if defined(WITH_TABLE_CACHE_STATS) pool->stats.alloc_count++; -#endif +# endif /* attempt to return from the freelist */ if (pool->fl) { struct table_allocator_freelist *f = pool->fl; @@ -261,9 +261,9 @@ table_allocator_alloc(struct table_allocator *pool, void table_allocator_free(struct table_allocator *pool, void *p) { -#ifdef WITH_TABLE_CACHE_STATS +# if defined(WITH_TABLE_CACHE_STATS) pool->stats.free_count++; -#endif +# endif /* insert returned memory at the front of the freelist */ struct table_allocator_freelist *head = (struct table_allocator_freelist *)p; @@ -288,13 +288,13 @@ void table_allocators_destroy(struct table_allocator *pools, table_allocator_delete(&pools[i], backing_allocator); } } -#endif /* WITH_TABLE_CACHE */ +#endif /* if defined(WITH_TABLE_CACHE) */ hamt_node *table_allocate(const struct hamt *h, size_t size) { if (size == 0) return NULL; -#ifdef WITH_TABLE_CACHE +#if defined(WITH_TABLE_CACHE) return table_allocator_alloc(&h->table_ator[size - 1], h->ator); #else return mem_alloc(h->ator, size * sizeof(struct hamt_node)); @@ -304,7 +304,7 @@ hamt_node *table_allocate(const struct hamt *h, size_t size) void table_free(struct hamt *h, hamt_node *ptr, size_t size) { if (ptr && size) -#ifdef WITH_TABLE_CACHE +#if defined(WITH_TABLE_CACHE) table_allocator_free(&h->table_ator[size - 1], ptr); #else mem_free(h->ator, ptr); @@ -396,7 +396,7 @@ struct hamt *hamt_create(hamt_key_hash_fn key_hash, hamt_cmp_fn key_cmp, trie->size = 0; trie->key_hash = key_hash; trie->key_cmp = key_cmp; -#ifdef WITH_TABLE_CACHE +#if defined(WITH_TABLE_CACHE) trie->table_ator = mem_alloc(ator, sizeof(struct table_allocator) * 32); table_allocators_init(trie->table_ator, trie->ator); #endif @@ -411,7 +411,7 @@ struct hamt *hamt_dup(const struct hamt *h) trie->size = h->size; trie->key_hash = h->key_hash; trie->key_cmp = h->key_cmp; -#ifdef WITH_TABLE_CACHE +#if defined(WITH_TABLE_CACHE) trie->table_ator = h->table_ator; /* shallow duplication! */ #endif return trie; @@ -770,7 +770,7 @@ void hamt_delete(struct hamt *h) // FIXME: cannot delete the hamt when persistent since that will // delete the ator and table_ator of all hamts delete_recursive(h, h->root); -#ifdef WITH_TABLE_CACHE +#if defined(WITH_TABLE_CACHE) table_allocators_destroy(h->table_ator, h->ator); mem_free(h->ator, h->table_ator); #endif From 429097aed9c1a2e4356f6c052e78dbad26a42000 Mon Sep 17 00:00:00 2001 From: Marc Kirchner Date: Wed, 27 Dec 2023 21:55:26 +0400 Subject: [PATCH 07/17] Unify struct typedef style --- src/hamt.c | 189 ++++++++++++++++++++++++----------------------- test/test_hamt.c | 110 +++++++++++++++++++-------- 2 files changed, 173 insertions(+), 126 deletions(-) diff --git a/src/hamt.c b/src/hamt.c index 2fe6e1f..33e184e 100644 --- a/src/hamt.c +++ b/src/hamt.c @@ -14,8 +14,8 @@ /* Pointer tagging */ #define HAMT_TAG_MASK 0x3 /* last two bits */ #define HAMT_TAG_VALUE 0x1 -#define tagged(__p) (hamt_node *)((uintptr_t)__p | HAMT_TAG_VALUE) -#define untagged(__p) (hamt_node *)((uintptr_t)__p & ~HAMT_TAG_MASK) +#define tagged(__p) (struct hamt_node *)((uintptr_t)__p | HAMT_TAG_VALUE) +#define untagged(__p) (struct hamt_node *)((uintptr_t)__p & ~HAMT_TAG_MASK) #define is_value(__p) (((uintptr_t)__p & HAMT_TAG_MASK) == HAMT_TAG_VALUE) /* Bit fiddling */ @@ -35,7 +35,7 @@ /* Default allocator uses system malloc */ struct hamt_allocator hamt_allocator_default = {malloc, realloc, free}; -typedef struct hamt_node { +struct hamt_node { union { struct { void *value; /* tagged pointer */ @@ -46,7 +46,7 @@ typedef struct hamt_node { uint32_t index; } table; } as; -} hamt_node; +}; #if defined(WITH_TABLE_CACHE) struct table_allocator; @@ -64,13 +64,13 @@ struct hamt { }; /* hashing w/ state management */ -typedef struct hash_state { +struct hash_state { const void *key; hamt_key_hash_fn hash_fn; uint32_t hash; size_t depth; size_t shift; -} hash_state; +}; /* Search results */ typedef enum { @@ -79,30 +79,30 @@ typedef enum { SEARCH_FAIL_KEYMISMATCH } search_status; -typedef struct search_result { +struct search_result { search_status status; - hamt_node *anchor; - hamt_node *value; - hash_state *hash; -} search_result; + struct hamt_node *anchor; + struct hamt_node *value; + struct hash_state *hash; +}; /* Removal results */ typedef enum { REMOVE_SUCCESS, REMOVE_GATHERED, REMOVE_NOTFOUND } remove_status; -typedef struct remove_result { +struct remove_result { remove_status status; void *value; -} remove_result; +}; -typedef struct path_result { +struct path_result { union { - search_result sr; - remove_result rr; + struct search_result sr; + struct remove_result rr; }; - hamt_node *root; -} path_result; + struct hamt_node *root; +}; -static inline hash_state *hash_next(hash_state *h) +static inline struct hash_state *hash_next(struct hash_state *h) { h->depth += 1; h->shift += 5; @@ -113,7 +113,7 @@ static inline hash_state *hash_next(hash_state *h) return h; } -static inline uint32_t hash_get_index(const hash_state *h) +static inline uint32_t hash_get_index(const struct hash_state *h) { return (h->hash >> h->shift) & 0x1f; } @@ -125,7 +125,7 @@ static int get_pos(uint32_t sparse_index, uint32_t bitmap) return get_popcount(bitmap & ((1 << sparse_index) - 1)); } -static inline bool has_index(const hamt_node *anchor, size_t index) +static inline bool has_index(const struct hamt_node *anchor, size_t index) { assert(anchor && "anchor must not be NULL"); assert(index < 32 && "index must not be larger than 31"); @@ -290,7 +290,7 @@ void table_allocators_destroy(struct table_allocator *pools, } #endif /* if defined(WITH_TABLE_CACHE) */ -hamt_node *table_allocate(const struct hamt *h, size_t size) +struct hamt_node *table_allocate(const struct hamt *h, size_t size) { if (size == 0) return NULL; @@ -301,7 +301,7 @@ hamt_node *table_allocate(const struct hamt *h, size_t size) #endif } -void table_free(struct hamt *h, hamt_node *ptr, size_t size) +void table_free(struct hamt *h, struct hamt_node *ptr, size_t size) { if (ptr && size) #if defined(WITH_TABLE_CACHE) @@ -311,20 +311,20 @@ void table_free(struct hamt *h, hamt_node *ptr, size_t size) #endif } -hamt_node *table_extend(struct hamt *h, hamt_node *anchor, size_t n_rows, +struct hamt_node *table_extend(struct hamt *h, struct hamt_node *anchor, size_t n_rows, uint32_t index, uint32_t pos) { - hamt_node *new_table = table_allocate(h, n_rows + 1); + struct hamt_node *new_table = table_allocate(h, n_rows + 1); if (!new_table) return NULL; if (n_rows > 0) { /* copy over table */ - memcpy(&new_table[0], &TABLE(anchor)[0], pos * sizeof(hamt_node)); + memcpy(&new_table[0], &TABLE(anchor)[0], pos * sizeof(struct hamt_node)); /* note: this works since (n_rows - pos) == 0 for cases * where we're adding the new k/v pair at the end (i.e. memcpy(a, b, 0) * is a nop) */ memcpy(&new_table[pos + 1], &TABLE(anchor)[pos], - (n_rows - pos) * sizeof(hamt_node)); + (n_rows - pos) * sizeof(struct hamt_node)); } assert(!is_value(VALUE(anchor)) && "URGS"); table_free(h, TABLE(anchor), n_rows); @@ -333,7 +333,7 @@ hamt_node *table_extend(struct hamt *h, hamt_node *anchor, size_t n_rows, return anchor; } -hamt_node *table_shrink(struct hamt *h, hamt_node *anchor, size_t n_rows, +struct hamt_node *table_shrink(struct hamt *h, struct hamt_node *anchor, size_t n_rows, uint32_t index, uint32_t pos) { /* debug assertions */ @@ -341,16 +341,15 @@ hamt_node *table_shrink(struct hamt *h, hamt_node *anchor, size_t n_rows, assert(!is_value(VALUE(anchor)) && "Invariant: shrinking a table requires an internal node"); - hamt_node *new_table = NULL; + struct hamt_node *new_table = NULL; uint32_t new_index = 0; if (n_rows > 0) { new_table = table_allocate(h, n_rows - 1); - if (!new_table) - return NULL; + if (!new_table) return NULL; new_index = INDEX(anchor) & ~(1 << index); - memcpy(&new_table[0], &TABLE(anchor)[0], pos * sizeof(hamt_node)); + memcpy(&new_table[0], &TABLE(anchor)[0], pos * sizeof(struct hamt_node)); memcpy(&new_table[pos], &TABLE(anchor)[pos + 1], - (n_rows - pos - 1) * sizeof(hamt_node)); + (n_rows - pos - 1) * sizeof(struct hamt_node)); } table_free(h, TABLE(anchor), n_rows); INDEX(anchor) = new_index; @@ -358,7 +357,7 @@ hamt_node *table_shrink(struct hamt *h, hamt_node *anchor, size_t n_rows, return anchor; } -hamt_node *table_gather(struct hamt *h, hamt_node *anchor, uint32_t pos) +struct hamt_node *table_gather(struct hamt *h, struct hamt_node *anchor, uint32_t pos) { /* debug assertions */ assert(anchor && "Anchor cannot be NULL"); @@ -369,19 +368,19 @@ hamt_node *table_gather(struct hamt *h, hamt_node *anchor, uint32_t pos) int n_rows = get_popcount(INDEX(anchor)); assert((n_rows == 2 || n_rows == 1) && "Table must have size 1 or 2 to gather"); - hamt_node *table = TABLE(anchor); + struct hamt_node *table = TABLE(anchor); KEY(anchor) = table[pos].as.kv.key; VALUE(anchor) = table[pos].as.kv.value; /* already tagged */ table_free(h, table, n_rows); return anchor; } -hamt_node *table_dup(const struct hamt *h, hamt_node *anchor) +struct hamt_node *table_dup(const struct hamt *h, struct hamt_node *anchor) { int n_rows = get_popcount(INDEX(anchor)); - hamt_node *new_table = table_allocate(h, n_rows); + struct hamt_node *new_table = table_allocate(h, n_rows); if (new_table) { - memcpy(&new_table[0], &TABLE(anchor)[0], n_rows * sizeof(hamt_node)); + memcpy(&new_table[0], &TABLE(anchor)[0], n_rows * sizeof(struct hamt_node)); } return new_table; } @@ -391,8 +390,8 @@ struct hamt *hamt_create(hamt_key_hash_fn key_hash, hamt_cmp_fn key_cmp, { struct hamt *trie = mem_alloc(ator, sizeof(struct hamt)); trie->ator = ator; - trie->root = mem_alloc(ator, sizeof(hamt_node)); - memset(trie->root, 0, sizeof(hamt_node)); + trie->root = mem_alloc(ator, sizeof(struct hamt_node)); + memset(trie->root, 0, sizeof(struct hamt_node)); trie->size = 0; trie->key_hash = key_hash; trie->key_cmp = key_cmp; @@ -417,8 +416,8 @@ struct hamt *hamt_dup(const struct hamt *h) return trie; } -static const hamt_node *insert_kv(struct hamt *h, hamt_node *anchor, - hash_state *hash, void *key, void *value) +static const struct hamt_node *insert_kv(struct hamt *h, struct hamt_node *anchor, + struct hash_state *hash, void *key, void *value) { /* calculate position in new table */ uint32_t ix = hash_get_index(hash); @@ -429,7 +428,7 @@ static const hamt_node *insert_kv(struct hamt *h, hamt_node *anchor, anchor = table_extend(h, anchor, n_rows, ix, pos); if (!anchor) return NULL; - hamt_node *new_table = TABLE(anchor); + struct hamt_node *new_table = TABLE(anchor); /* set new k/v pair */ new_table[pos].as.kv.key = key; new_table[pos].as.kv.value = tagged(value); @@ -437,15 +436,15 @@ static const hamt_node *insert_kv(struct hamt *h, hamt_node *anchor, return &new_table[pos]; } -static const hamt_node *insert_table(struct hamt *h, hamt_node *anchor, - hash_state *hash, void *key, void *value) +static const struct hamt_node *insert_table(struct hamt *h, struct hamt_node *anchor, + struct hash_state *hash, void *key, void *value) { /* FIXME: check for alloc failure and bail out correctly (deleting the * incomplete subtree */ /* Collect everything we know about the existing value */ - hash_state *x_hash = - &(hash_state){.key = KEY(anchor), + struct hash_state *x_hash = + &(struct hash_state){.key = KEY(anchor), .hash_fn = hash->hash_fn, .hash = hash->hash_fn(KEY(anchor), hash->depth / 5), .depth = hash->depth, @@ -453,8 +452,8 @@ static const hamt_node *insert_table(struct hamt *h, hamt_node *anchor, void *x_value = VALUE(anchor); /* tagged (!) value ptr */ /* increase depth until the hashes diverge, building a list * of tables along the way */ - hash_state *next_hash = hash_next(hash); - hash_state *x_next_hash = hash_next(x_hash); + struct hash_state *next_hash = hash_next(hash); + struct hash_state *x_next_hash = hash_next(x_hash); uint32_t next_index = hash_get_index(next_hash); uint32_t x_next_index = hash_get_index(x_next_hash); while (x_next_index == next_index) { @@ -485,13 +484,13 @@ static const hamt_node *insert_table(struct hamt *h, hamt_node *anchor, return &TABLE(anchor)[pos]; } -static search_result search_recursive(const struct hamt *h, hamt_node *anchor, - hash_state *hash, hamt_cmp_fn cmp_eq, - const void *key, hamt_node *path) +static struct search_result search_recursive(const struct hamt *h, struct hamt_node *anchor, + struct hash_state *hash, hamt_cmp_fn cmp_eq, + const void *key, struct hamt_node *path) { assert(!is_value(VALUE(anchor)) && "Invariant: path copy requires an internal node"); - hamt_node *copy = path; + struct hamt_node *copy = path; if (path) { /* copy the table we're pointing to */ TABLE(copy) = table_dup(h, anchor); @@ -508,18 +507,18 @@ static search_result search_recursive(const struct hamt *h, hamt_node *anchor, /* if yes, get the compact index to address the array */ int pos = get_pos(expected_index, INDEX(copy)); /* index into the table and check what type of entry we're looking at */ - hamt_node *next = &TABLE(copy)[pos]; + struct hamt_node *next = &TABLE(copy)[pos]; if (is_value(VALUE(next))) { if ((*cmp_eq)(key, KEY(next)) == 0) { /* keys match */ - search_result result = {.status = SEARCH_SUCCESS, + struct search_result result = {.status = SEARCH_SUCCESS, .anchor = copy, .value = next, .hash = hash}; return result; } /* not found: same hash but different key */ - search_result result = {.status = SEARCH_FAIL_KEYMISMATCH, + struct search_result result = {.status = SEARCH_FAIL_KEYMISMATCH, .anchor = copy, .value = next, .hash = hash}; @@ -533,7 +532,7 @@ static search_result search_recursive(const struct hamt *h, hamt_node *anchor, } } /* expected index is not set, terminate search */ - search_result result = {.status = SEARCH_FAIL_NOTFOUND, + struct search_result result = {.status = SEARCH_FAIL_NOTFOUND, .anchor = copy, .value = NULL, .hash = hash}; @@ -542,12 +541,12 @@ static search_result search_recursive(const struct hamt *h, hamt_node *anchor, const void *hamt_get(const struct hamt *trie, void *key) { - hash_state *hash = &(hash_state){.key = key, + struct hash_state *hash = &(struct hash_state){.key = key, .hash_fn = trie->key_hash, .hash = trie->key_hash(key, 0), .depth = 0, .shift = 0}; - search_result sr = + struct search_result sr = search_recursive(trie, trie->root, hash, trie->key_cmp, key, NULL); if (sr.status == SEARCH_SUCCESS) { return untagged(sr.VALUE(value)); @@ -555,17 +554,17 @@ const void *hamt_get(const struct hamt *trie, void *key) return NULL; } -static const hamt_node *set(struct hamt *h, hamt_node *anchor, +static const struct hamt_node *set(struct hamt *h, struct hamt_node *anchor, hamt_key_hash_fn hash_fn, hamt_cmp_fn cmp_fn, void *key, void *value) { - hash_state *hash = &(hash_state){.key = key, + struct hash_state *hash = &(struct hash_state){.key = key, .hash_fn = hash_fn, .hash = hash_fn(key, 0), .depth = 0, .shift = 0}; - search_result sr = search_recursive(h, anchor, hash, cmp_fn, key, NULL); - const hamt_node *inserted; + struct search_result sr = search_recursive(h, anchor, hash, cmp_fn, key, NULL); + const struct hamt_node *inserted; switch (sr.status) { case SEARCH_SUCCESS: sr.VALUE(value) = tagged(value); @@ -588,15 +587,15 @@ static const hamt_node *set(struct hamt *h, hamt_node *anchor, const void *hamt_set(struct hamt *trie, void *key, void *value) { - const hamt_node *n = + const struct hamt_node *n = set(trie, trie->root, trie->key_hash, trie->key_cmp, key, value); return VALUE(n); } -static path_result search(const struct hamt *h, hamt_node *anchor, - hash_state *hash, hamt_cmp_fn cmp_eq, const void *key) +static struct path_result search(const struct hamt *h, struct hamt_node *anchor, + struct hash_state *hash, hamt_cmp_fn cmp_eq, const void *key) { - path_result pr; + struct path_result pr; pr.root = table_allocate(h, 1); pr.sr = search_recursive(h, anchor, hash, cmp_eq, key, pr.root); return pr; @@ -604,12 +603,12 @@ static path_result search(const struct hamt *h, hamt_node *anchor, const struct hamt *hamt_pset(const struct hamt *h, void *key, void *value) { - hash_state *hash = &(hash_state){.key = key, + struct hash_state *hash = &(struct hash_state){.key = key, .hash_fn = h->key_hash, .hash = h->key_hash(key, 0), .depth = 0, .shift = 0}; - path_result pr = search(h, h->root, hash, h->key_cmp, key); + struct path_result pr = search(h, h->root, hash, h->key_cmp, key); struct hamt *cp = hamt_dup(h); cp->root = pr.root; switch (pr.sr.status) { @@ -630,15 +629,15 @@ const struct hamt *hamt_pset(const struct hamt *h, void *key, void *value) return cp; } -static remove_result rem_recursive(struct hamt *h, hamt_node *root, - hamt_node *anchor, hash_state *hash, +static struct remove_result rem_recursive(struct hamt *h, struct hamt_node *root, + struct hamt_node *anchor, struct hash_state *hash, hamt_cmp_fn cmp_eq, const void *key, - hamt_node *path) + struct hamt_node *path) { assert(!is_value(VALUE(anchor)) && "Invariant: removal requires an internal node"); /* copy the table we're pointing to */ - hamt_node *copy = path; + struct hamt_node *copy = path; if (path) { TABLE(copy) = table_dup(h, anchor); INDEX(copy) = INDEX(anchor); @@ -653,7 +652,7 @@ static remove_result rem_recursive(struct hamt *h, hamt_node *root, /* if yes, get the compact index to address the array */ int pos = get_pos(expected_index, INDEX(copy)); /* index into the table and check what type of entry we're looking at */ - hamt_node *next = &TABLE(copy)[pos]; + struct hamt_node *next = &TABLE(copy)[pos]; if (is_value(VALUE(next))) { if ((*cmp_eq)(key, KEY(next)) == 0) { uint32_t n_rows = get_popcount(INDEX(copy)); @@ -664,14 +663,16 @@ static remove_result rem_recursive(struct hamt *h, hamt_node *root, * zero. */ if (n_rows > 2 || (n_rows >= 1 && root == copy)) { + // FIXME: this sets copy to NULL when n_rows == 1 + // i.e. when we remove the last entry from the trie copy = table_shrink(h, copy, n_rows, expected_index, pos); } else if (n_rows == 2) { /* if both rows are value rows, gather, dropping the current * row */ - hamt_node *other = &TABLE(copy)[!pos]; + struct hamt_node *other = &TABLE(copy)[!pos]; if (is_value(VALUE(other))) { copy = table_gather(h, copy, !pos); - return (remove_result){.status = REMOVE_GATHERED, + return (struct remove_result){.status = REMOVE_GATHERED, .value = value}; } else { /* otherwise shrink the node to n_rows == 1 */ @@ -679,16 +680,16 @@ static remove_result rem_recursive(struct hamt *h, hamt_node *root, table_shrink(h, copy, n_rows, expected_index, pos); } } - return (remove_result){.status = REMOVE_SUCCESS, + return (struct remove_result){.status = REMOVE_SUCCESS, .value = value}; } /* not found: same hash but different key */ - return (remove_result){.status = REMOVE_NOTFOUND, .value = NULL}; + return (struct remove_result){.status = REMOVE_NOTFOUND, .value = NULL}; } else { /* For table entries, recurse to the next level */ assert(TABLE(next) != NULL && "invariant: table ptrs must not be NULL"); - remove_result result = + struct remove_result result = rem_recursive(h, root, next, hash_next(hash), cmp_eq, key, path ? next : NULL); if (next != TABLE(root) && result.status == REMOVE_GATHERED) { @@ -697,21 +698,21 @@ static remove_result rem_recursive(struct hamt *h, hamt_node *root, int n_rows = get_popcount(INDEX(copy)); if (n_rows == 1) { copy = table_gather(h, copy, 0); - return (remove_result){.status = REMOVE_GATHERED, + return (struct remove_result){.status = REMOVE_GATHERED, .value = result.value}; } } - return (remove_result){.status = REMOVE_SUCCESS, + return (struct remove_result){.status = REMOVE_SUCCESS, .value = result.value}; } } - return (remove_result){.status = REMOVE_NOTFOUND, .value = NULL}; + return (struct remove_result){.status = REMOVE_NOTFOUND, .value = NULL}; } -static path_result rem(struct hamt *h, hamt_node *root, hamt_node *anchor, - hash_state *hash, hamt_cmp_fn cmp_eq, const void *key) +static struct path_result rem(struct hamt *h, struct hamt_node *root, struct hamt_node *anchor, + struct hash_state *hash, hamt_cmp_fn cmp_eq, const void *key) { - path_result pr; + struct path_result pr; pr.root = table_allocate(h, 1); pr.rr = rem_recursive(h, pr.root, anchor, hash, cmp_eq, key, pr.root); return pr; @@ -719,12 +720,12 @@ static path_result rem(struct hamt *h, hamt_node *root, hamt_node *anchor, void *hamt_remove(struct hamt *trie, void *key) { - hash_state *hash = &(hash_state){.key = key, + struct hash_state *hash = &(struct hash_state){.key = key, .hash_fn = trie->key_hash, .hash = trie->key_hash(key, 0), .depth = 0, .shift = 0}; - remove_result rr = rem_recursive(trie, trie->root, trie->root, hash, + struct remove_result rr = rem_recursive(trie, trie->root, trie->root, hash, trie->key_cmp, key, NULL); if (rr.status == REMOVE_SUCCESS || rr.status == REMOVE_GATHERED) { trie->size -= 1; @@ -735,13 +736,13 @@ void *hamt_remove(struct hamt *trie, void *key) const struct hamt *hamt_premove(const struct hamt *trie, void *key) { - hash_state *hash = &(hash_state){.key = key, + struct hash_state *hash = &(struct hash_state){.key = key, .hash_fn = trie->key_hash, .hash = trie->key_hash(key, 0), .depth = 0, .shift = 0}; struct hamt *cp = hamt_dup(trie); - path_result pr = rem(cp, cp->root, cp->root, hash, cp->key_cmp, key); + struct path_result pr = rem(cp, cp->root, cp->root, hash, cp->key_cmp, key); cp->root = pr.root; if (pr.rr.status == REMOVE_SUCCESS || pr.rr.status == REMOVE_GATHERED) { cp->size -= 1; @@ -750,7 +751,7 @@ const struct hamt *hamt_premove(const struct hamt *trie, void *key) } /* delete recursively from anchor */ -void delete_recursive(struct hamt *h, hamt_node *anchor) +void delete_recursive(struct hamt *h, struct hamt_node *anchor) { if (TABLE(anchor)) { assert(!is_value(VALUE(anchor)) && "delete requires an internal node"); @@ -794,19 +795,19 @@ size_t hamt_size(const struct hamt *trie) { return trie->size; } */ struct hamt_iterator_item { - hamt_node *anchor; + struct hamt_node *anchor; size_t pos; struct hamt_iterator_item *next; }; struct hamt_iterator { struct hamt *trie; - hamt_node *cur; + struct hamt_node *cur; struct hamt_iterator_item *tos; /* top of stack */ }; static struct hamt_iterator_item * -iterator_push_item(struct hamt_iterator *it, hamt_node *anchor, size_t pos) +iterator_push_item(struct hamt_iterator *it, struct hamt_node *anchor, size_t pos) { /* push new item onto top of stack */ struct hamt_iterator_item *new_item = @@ -871,7 +872,7 @@ struct hamt_iterator *hamt_it_next(struct hamt_iterator *it) /* start from the table index we left off from */ while (p->pos < n_pos) { /* get a pointer to the current subtrie */ - hamt_node *cur = &TABLE(p->anchor)[p->pos]; + struct hamt_node *cur = &TABLE(p->anchor)[p->pos]; /* increment the row count */ p->pos++; /* check if we have a subtable or a value */ diff --git a/test/test_hamt.c b/test/test_hamt.c index 88a524e..361616d 100644 --- a/test/test_hamt.c +++ b/test/test_hamt.c @@ -20,11 +20,11 @@ * @param node Pointer to the anchor node * @param depth Tree depth as a parameter */ -static void debug_print_string(size_t ix, const hamt_node *node, size_t depth) +static void debug_print_string(size_t ix, const struct hamt_node *node, size_t depth) { /* print node*/ if (!is_value(node->as.kv.value)) { - printf("%*s +- (%lu): %s", (int)depth * 2, "", ix, "[ "); + printf("%*s +- (%lu) @%p: %s", (int)depth * 2, "", ix, node, "[ "); for (size_t i = 0; i < 32; ++i) { if (node->as.table.index & (1 << i)) { printf("%2lu(%i) ", i, get_pos(i, node->as.table.index)); @@ -38,7 +38,7 @@ static void debug_print_string(size_t ix, const hamt_node *node, size_t depth) } } else { /* print value */ - printf("%*s +- (%lu): (%s, %i)\n", (int)depth * 2, "", ix, + printf("%*s +- (%lu) @%p: (%s, %i)\n", (int)depth * 2, "", ix, node, (char *)node->as.kv.key, *(int *)untagged(node->as.kv.value)); } } @@ -82,8 +82,8 @@ MU_TEST_CASE(test_compact_index) MU_TEST_CASE(test_tagging) { printf(". testing pointer tagging\n"); - hamt_node n; - hamt_node *p = &n; + struct hamt_node n; + struct hamt_node *p = &n; MU_ASSERT(!is_value(p), "Raw pointer must not be tagged"); p = tagged(p); MU_ASSERT(is_value(p), @@ -158,19 +158,19 @@ MU_TEST_CASE(test_search) int values[] = {0, 2, 4, 7, 8}; - hamt_node *t_8 = (hamt_node *)calloc(sizeof(hamt_node), 2); + struct hamt_node *t_8 = (struct hamt_node *)calloc(sizeof(struct hamt_node), 2); t_8[0].as.kv.key = &keys[2]; t_8[0].as.kv.value = tagged(&values[2]); t_8[1].as.kv.key = &keys[3]; t_8[1].as.kv.value = tagged(&values[3]); - hamt_node *t_23 = (hamt_node *)calloc(sizeof(hamt_node), 2); + struct hamt_node *t_23 = (struct hamt_node *)calloc(sizeof(struct hamt_node), 2); t_23[0].as.kv.key = &keys[4]; t_23[0].as.kv.value = tagged(&values[4]); t_23[1].as.kv.key = &keys[1]; t_23[1].as.kv.value = tagged(&values[1]); - hamt_node *t_root = (hamt_node *)calloc(sizeof(hamt_node), 3); + struct hamt_node *t_root = (struct hamt_node *)calloc(sizeof(struct hamt_node), 3); t_root[0].as.table.index = (1 << 4) | (1 << 17); t_root[0].as.table.ptr = t_8; t_root[1].as.table.index = (1 << 0) | (1 << 16); @@ -181,7 +181,7 @@ MU_TEST_CASE(test_search) struct hamt t; t.key_cmp = my_strncmp_1; t.ator = &hamt_allocator_default; - t.root = mem_alloc(t.ator, sizeof(hamt_node)); + t.root = mem_alloc(t.ator, sizeof(struct hamt_node)); t.root->as.table.index = (1 << 8) | (1 << 23) | (1 << 31); t.root->as.table.ptr = t_root; @@ -197,13 +197,13 @@ MU_TEST_CASE(test_search) {"8", SEARCH_SUCCESS, 8}, {"c", SEARCH_FAIL_KEYMISMATCH, 0}}; for (size_t i = 0; i < 10; ++i) { - hash_state *hash = - &(hash_state){.key = test_cases[i].key, + struct hash_state *hash = + &(struct hash_state){.key = test_cases[i].key, .hash_fn = my_hash_1, .hash = my_hash_1(test_cases[i].key, 0), .depth = 0, .shift = 0}; - search_result sr = search_recursive(&t, t.root, hash, my_strncmp_1, + struct search_result sr = search_recursive(&t, t.root, hash, my_strncmp_1, test_cases[i].key, NULL); MU_ASSERT(sr.status == test_cases[i].expected_status, "Unexpected search result status"); @@ -236,7 +236,7 @@ MU_TEST_CASE(test_set_with_collisions) char keys[] = "028"; int values[] = {0, 2, 8}; - hamt_node *t_root = table_allocate(t, 2); + struct hamt_node *t_root = table_allocate(t, 2); t_root[0].as.kv.key = &keys[0]; t_root[0].as.kv.value = tagged(&values[0]); t_root[1].as.kv.key = &keys[1]; @@ -246,14 +246,14 @@ MU_TEST_CASE(test_set_with_collisions) t->root->as.table.index = (1 << 23) | (1 << 31); /* insert value and find it again */ - const hamt_node *new_node = + const struct hamt_node *new_node = set(t, t->root, t->key_hash, t->key_cmp, &keys[2], &values[2]); - hash_state *hash = &(hash_state){.key = &keys[2], + struct hash_state *hash = &(struct hash_state){.key = &keys[2], .hash_fn = t->key_hash, .hash = t->key_hash(&keys[2], 0), .depth = 0, .shift = 0}; - search_result sr = + struct search_result sr = search_recursive(t, t->root, hash, t->key_cmp, &keys[2], NULL); MU_ASSERT(sr.status == SEARCH_SUCCESS, "failed to find inserted value"); MU_ASSERT(new_node == sr.value, "Query result points to the wrong node"); @@ -278,12 +278,12 @@ MU_TEST_CASE(test_set_whole_enchilada_00) } for (size_t i = 0; i < 5; ++i) { - hash_state *hash = &(hash_state){.key = &data[i].key, + struct hash_state *hash = &(struct hash_state){.key = &data[i].key, .hash_fn = t->key_hash, .hash = t->key_hash(&data[i].key, 0), .depth = 0, .shift = 0}; - search_result sr = + struct search_result sr = search_recursive(t, t->root, hash, t->key_cmp, &data[i].key, NULL); MU_ASSERT(sr.status == SEARCH_SUCCESS, "failed to find inserted value"); int *value = (int *)untagged(sr.value->as.kv.value); @@ -330,12 +330,12 @@ MU_TEST_CASE(test_set_stringkeys) for (size_t i = 0; i < 6; ++i) { // printf("querying (%s, %d)\n", data[i].key, data[i].value); - hash_state *hash = &(hash_state){.key = data[i].key, + struct hash_state *hash = &(struct hash_state){.key = data[i].key, .hash_fn = t->key_hash, .hash = t->key_hash(data[i].key, 0), .depth = 0, .shift = 0}; - search_result sr = + struct search_result sr = search_recursive(t, t->root, hash, t->key_cmp, data[i].key, NULL); MU_ASSERT(sr.status == SEARCH_SUCCESS, "failed to find inserted value"); int *value = (int *)untagged(sr.value->as.kv.value); @@ -370,12 +370,12 @@ MU_TEST_CASE(test_aspell_dict_en) /* Check if "bluism" has search depth 6 */ char target[] = "bluism"; - hash_state *hash = &(hash_state){.key = target, + struct hash_state *hash = &(struct hash_state){.key = target, .hash_fn = my_keyhash_string, .hash = my_keyhash_string(target, 0), .depth = 0, .shift = 0}; - search_result sr = + struct search_result sr = search_recursive(t, t->root, hash, t->key_cmp, target, NULL); MU_ASSERT(sr.status == SEARCH_SUCCESS, "fail"); char *value = (char *)untagged(sr.value->as.kv.value); @@ -442,10 +442,10 @@ MU_TEST_CASE(test_shrink_table) &hamt_allocator_default); /* create table w/ 5 entries and delete each position */ - hamt_node *a0; + struct hamt_node *a0; for (size_t delete_pos = 0; delete_pos < N; delete_pos++) { - a0 = mem_alloc(t->ator, sizeof(hamt_node)); - memset(a0, 0, sizeof(hamt_node)); + a0 = mem_alloc(t->ator, sizeof(struct hamt_node)); + memset(a0, 0, sizeof(struct hamt_node)); TABLE(a0) = table_allocate(t, N); for (size_t i = 0; i < N; ++i) { INDEX(a0) |= (1 << data[i].index); @@ -489,7 +489,7 @@ MU_TEST_CASE(test_gather_table) struct hamt *t = hamt_create(my_keyhash_string, my_keycmp_string, &hamt_allocator_default); - hamt_node *a0 = mem_alloc(t->ator, sizeof(hamt_node)); + struct hamt_node *a0 = mem_alloc(t->ator, sizeof(struct hamt_node)); a0->as.table.index = 0; a0->as.table.ptr = table_allocate(t, N); for (size_t i = 0; i < N; ++i) { @@ -498,7 +498,7 @@ MU_TEST_CASE(test_gather_table) a0->as.table.ptr[i].as.kv.value = tagged(&data[i].value); } - hamt_node *a1 = table_gather(t, a0, 0); + struct hamt_node *a1 = table_gather(t, a0, 0); MU_ASSERT(a1->as.kv.key == data[0].key, "wrong key in gather"); MU_ASSERT(untagged(a1->as.kv.value) == (void *)&data[0].value, @@ -526,13 +526,13 @@ MU_TEST_CASE(test_remove) &data[i].value); } for (size_t i = 0; i < N; ++i) { - hash_state *hash = - &(hash_state){.key = data[i].key, + struct hash_state *hash = + &(struct hash_state){.key = data[i].key, .hash_fn = t->key_hash, .hash = t->key_hash(data[i].key, 0), .depth = 0, .shift = 0}; - path_result pr = + struct path_result pr = rem(t, t->root, t->root, hash, t->key_cmp, data[i].key); MU_ASSERT(pr.rr.status == REMOVE_SUCCESS || pr.rr.status == REMOVE_GATHERED, @@ -738,6 +738,41 @@ MU_TEST_CASE(test_persistent_aspell_dict_en) return 0; } +MU_TEST_CASE(test_persistent_add_remove_one) +{ + printf(". testing add/remove of a single element w/ structural sharing\n"); + + /* create a standard HAMT with string keys */ + const struct hamt *t; + t = hamt_create(my_keyhash_string, my_keycmp_string, + &hamt_allocator_default); + /* add a single key and make sure it gets added */ + char *word = "the_key"; + t = hamt_pset(t, word, word); + debug_print_string(0, t->root, 0); + MU_ASSERT(hamt_get(t, word) != NULL, "key should be present"); + + /* remove the key and make sure (1) it is gone from the new + * copy returned by hamt_premove(); and (2) it is still present in + * the original tree. + */ + const struct hamt *s; + s = hamt_premove(t, word); + printf("t:\n"); + // debug_print_string(0, t->root, 0); + MU_ASSERT(hamt_get(t, word) != NULL, + "key should not have been removed from original trie"); + printf("s:\n"); + // debug_print_string(0, s->root, 0); + MU_ASSERT(hamt_get(s, word) == NULL, + "key should have been removed from copy"); + /* + * There is no way to cleanly free the structurally shared + * tries without garbage collection. Leak them. + */ + return 0; +} + MU_TEST_CASE(test_persistent_remove_aspell_dict_en) { printf(". testing large-scale remove w/ structural sharing\n"); @@ -762,8 +797,16 @@ MU_TEST_CASE(test_persistent_remove_aspell_dict_en) for (size_t i = 0; i < WORDS_MAX; i++) { /* structural sharing */ s = hamt_premove(t, words[i]); + // printf("i=%lu of %lu (pre-size=%lu, post-size=%lu)\n", i, WORDS_MAX, hamt_size(t), hamt_size(s)); MU_ASSERT(hamt_get(t, words[i]) != NULL, "key should not have been removed from original trie"); + /* + if (i > (WORDS_MAX - 5)) { + printf("--- remainder at size %lu:\n", hamt_size(s)); + debug_print_string(0, s->root, 0); + } + */ + MU_ASSERT(hamt_get(s, words[i]) == NULL, "key should have been removed from copy"); /* leak the previous version */ @@ -841,12 +884,12 @@ MU_TEST_CASE(test_tree_depth) double avg_depth = 0.0; size_t max_depth = 0; for (size_t i = 0; i < n_items; i++) { - hash_state *hash = &(hash_state){.key = words[i], + struct hash_state *hash = &(struct hash_state){.key = words[i], .hash_fn = hash_fns[k], .hash = hash_fns[k](words[i], 0), .depth = 0, .shift = 0}; - search_result sr = + struct search_result sr = search_recursive(t, t->root, hash, t->key_cmp, words[i], NULL); if (sr.status != SEARCH_SUCCESS) { printf("tree search failed for: %s\n", words[i]); @@ -878,6 +921,7 @@ int mu_tests_run = 0; MU_TEST_SUITE(test_suite) { + MU_RUN_TEST(test_aspell_dict_en); MU_RUN_TEST(test_popcount); MU_RUN_TEST(test_compact_index); @@ -898,7 +942,9 @@ MU_TEST_SUITE(test_suite) // persistent data structure tests MU_RUN_TEST(test_persistent_set); MU_RUN_TEST(test_persistent_aspell_dict_en); + MU_RUN_TEST(test_persistent_remove_aspell_dict_en); + MU_RUN_TEST(test_persistent_add_remove_one); return 0; } From db710eae290a46a8f532e29e2358355bd2d36013 Mon Sep 17 00:00:00 2001 From: Marc Kirchner Date: Wed, 27 Dec 2023 21:56:45 +0400 Subject: [PATCH 08/17] clang-format --- src/hamt.c | 202 ++++++++++++++++++++++++++++++----------------------- src/uh.c | 1 - 2 files changed, 113 insertions(+), 90 deletions(-) diff --git a/src/hamt.c b/src/hamt.c index 33e184e..ad7280f 100644 --- a/src/hamt.c +++ b/src/hamt.c @@ -141,21 +141,21 @@ static inline bool has_index(const struct hamt_node *anchor, size_t index) #if defined(WITH_TABLE_CACHE) -# if defined(WITH_TABLE_CACHE_STATS) +#if defined(WITH_TABLE_CACHE_STATS) struct table_allocator_stats { size_t alloc_count; size_t free_count; }; -# endif +#endif struct table_allocator_freelist { struct table_allocator_freelist *next; }; struct table_allocator_chunk { - struct table_allocator_chunk *next; /* pointer to next chunk */ - ptrdiff_t size; /* buffer size in count */ - struct hamt_node *buf; /* pointer to the actual buffer */ + struct table_allocator_chunk *next; /* pointer to next chunk */ + ptrdiff_t size; /* buffer size in count */ + struct hamt_node *buf; /* pointer to the actual buffer */ }; struct table_allocator { @@ -165,9 +165,9 @@ struct table_allocator { size_t chunk_count; /* number of chunks in the pool */ ptrdiff_t table_size; /* number of rows in table */ struct table_allocator_freelist *fl; /* head of the free list */ -# if defined(WITH_TABLE_CACHE_STATS) +#if defined(WITH_TABLE_CACHE_STATS) struct table_allocator_stats stats; /* statistics */ -# endif +#endif }; int table_allocator_create(struct table_allocator *pool, @@ -175,23 +175,28 @@ int table_allocator_create(struct table_allocator *pool, struct hamt_allocator *backing_allocator) { /* pool config */ - *pool = (struct table_allocator){ - .chunk = NULL, .size = 0, .buf_ix = 0, .chunk_count = 1, .table_size = table_size, .fl = NULL}; + *pool = (struct table_allocator){.chunk = NULL, + .size = 0, + .buf_ix = 0, + .chunk_count = 1, + .table_size = table_size, + .fl = NULL}; /* set up initial chunk */ pool->chunk = backing_allocator->malloc(sizeof(struct table_allocator_chunk)); if (!pool->chunk) goto err_no_cleanup; pool->chunk->size = initial_cache_size * table_size; - pool->chunk->buf = (struct hamt_node *)backing_allocator->malloc(pool->chunk->size * sizeof(struct hamt_node)); + pool->chunk->buf = (struct hamt_node *)backing_allocator->malloc( + pool->chunk->size * sizeof(struct hamt_node)); if (!pool->chunk->buf) goto err_free_chunk; pool->chunk->next = NULL; -# if defined(WITH_TABLE_CACHE_STATS) +#if defined(WITH_TABLE_CACHE_STATS) /* set up stats storage */ pool->stats = (struct table_allocator_stats){.alloc_count = 0, .free_count = 0}; -# endif +#endif return 0; err_free_chunk: backing_allocator->free(pool->chunk); @@ -221,9 +226,9 @@ struct hamt_node * table_allocator_alloc(struct table_allocator *pool, struct hamt_allocator *backing_allocator) { -# if defined(WITH_TABLE_CACHE_STATS) +#if defined(WITH_TABLE_CACHE_STATS) pool->stats.alloc_count++; -# endif +#endif /* attempt to return from the freelist */ if (pool->fl) { struct table_allocator_freelist *f = pool->fl; @@ -239,7 +244,8 @@ table_allocator_alloc(struct table_allocator *pool, goto err_no_cleanup; /* create new chunk w/ same size as previous */ chunk->size = pool->chunk->size; - chunk->buf = (struct hamt_node *)backing_allocator->malloc(chunk->size * sizeof(struct hamt_node)); + chunk->buf = (struct hamt_node *)backing_allocator->malloc( + chunk->size * sizeof(struct hamt_node)); if (!chunk->buf) goto err_free_chunk; chunk->next = pool->chunk; @@ -261,9 +267,9 @@ table_allocator_alloc(struct table_allocator *pool, void table_allocator_free(struct table_allocator *pool, void *p) { -# if defined(WITH_TABLE_CACHE_STATS) +#if defined(WITH_TABLE_CACHE_STATS) pool->stats.free_count++; -# endif +#endif /* insert returned memory at the front of the freelist */ struct table_allocator_freelist *head = (struct table_allocator_freelist *)p; @@ -311,15 +317,16 @@ void table_free(struct hamt *h, struct hamt_node *ptr, size_t size) #endif } -struct hamt_node *table_extend(struct hamt *h, struct hamt_node *anchor, size_t n_rows, - uint32_t index, uint32_t pos) +struct hamt_node *table_extend(struct hamt *h, struct hamt_node *anchor, + size_t n_rows, uint32_t index, uint32_t pos) { struct hamt_node *new_table = table_allocate(h, n_rows + 1); if (!new_table) return NULL; if (n_rows > 0) { /* copy over table */ - memcpy(&new_table[0], &TABLE(anchor)[0], pos * sizeof(struct hamt_node)); + memcpy(&new_table[0], &TABLE(anchor)[0], + pos * sizeof(struct hamt_node)); /* note: this works since (n_rows - pos) == 0 for cases * where we're adding the new k/v pair at the end (i.e. memcpy(a, b, 0) * is a nop) */ @@ -333,8 +340,8 @@ struct hamt_node *table_extend(struct hamt *h, struct hamt_node *anchor, size_t return anchor; } -struct hamt_node *table_shrink(struct hamt *h, struct hamt_node *anchor, size_t n_rows, - uint32_t index, uint32_t pos) +struct hamt_node *table_shrink(struct hamt *h, struct hamt_node *anchor, + size_t n_rows, uint32_t index, uint32_t pos) { /* debug assertions */ assert(anchor && "Anchor cannot be NULL"); @@ -345,9 +352,11 @@ struct hamt_node *table_shrink(struct hamt *h, struct hamt_node *anchor, size_t uint32_t new_index = 0; if (n_rows > 0) { new_table = table_allocate(h, n_rows - 1); - if (!new_table) return NULL; + if (!new_table) + return NULL; new_index = INDEX(anchor) & ~(1 << index); - memcpy(&new_table[0], &TABLE(anchor)[0], pos * sizeof(struct hamt_node)); + memcpy(&new_table[0], &TABLE(anchor)[0], + pos * sizeof(struct hamt_node)); memcpy(&new_table[pos], &TABLE(anchor)[pos + 1], (n_rows - pos - 1) * sizeof(struct hamt_node)); } @@ -357,7 +366,8 @@ struct hamt_node *table_shrink(struct hamt *h, struct hamt_node *anchor, size_t return anchor; } -struct hamt_node *table_gather(struct hamt *h, struct hamt_node *anchor, uint32_t pos) +struct hamt_node *table_gather(struct hamt *h, struct hamt_node *anchor, + uint32_t pos) { /* debug assertions */ assert(anchor && "Anchor cannot be NULL"); @@ -380,7 +390,8 @@ struct hamt_node *table_dup(const struct hamt *h, struct hamt_node *anchor) int n_rows = get_popcount(INDEX(anchor)); struct hamt_node *new_table = table_allocate(h, n_rows); if (new_table) { - memcpy(&new_table[0], &TABLE(anchor)[0], n_rows * sizeof(struct hamt_node)); + memcpy(&new_table[0], &TABLE(anchor)[0], + n_rows * sizeof(struct hamt_node)); } return new_table; } @@ -416,8 +427,10 @@ struct hamt *hamt_dup(const struct hamt *h) return trie; } -static const struct hamt_node *insert_kv(struct hamt *h, struct hamt_node *anchor, - struct hash_state *hash, void *key, void *value) +static const struct hamt_node *insert_kv(struct hamt *h, + struct hamt_node *anchor, + struct hash_state *hash, void *key, + void *value) { /* calculate position in new table */ uint32_t ix = hash_get_index(hash); @@ -436,19 +449,21 @@ static const struct hamt_node *insert_kv(struct hamt *h, struct hamt_node *ancho return &new_table[pos]; } -static const struct hamt_node *insert_table(struct hamt *h, struct hamt_node *anchor, - struct hash_state *hash, void *key, void *value) +static const struct hamt_node *insert_table(struct hamt *h, + struct hamt_node *anchor, + struct hash_state *hash, void *key, + void *value) { /* FIXME: check for alloc failure and bail out correctly (deleting the * incomplete subtree */ /* Collect everything we know about the existing value */ - struct hash_state *x_hash = - &(struct hash_state){.key = KEY(anchor), - .hash_fn = hash->hash_fn, - .hash = hash->hash_fn(KEY(anchor), hash->depth / 5), - .depth = hash->depth, - .shift = hash->shift}; + struct hash_state *x_hash = &(struct hash_state){ + .key = KEY(anchor), + .hash_fn = hash->hash_fn, + .hash = hash->hash_fn(KEY(anchor), hash->depth / 5), + .depth = hash->depth, + .shift = hash->shift}; void *x_value = VALUE(anchor); /* tagged (!) value ptr */ /* increase depth until the hashes diverge, building a list * of tables along the way */ @@ -484,9 +499,10 @@ static const struct hamt_node *insert_table(struct hamt *h, struct hamt_node *an return &TABLE(anchor)[pos]; } -static struct search_result search_recursive(const struct hamt *h, struct hamt_node *anchor, - struct hash_state *hash, hamt_cmp_fn cmp_eq, - const void *key, struct hamt_node *path) +static struct search_result +search_recursive(const struct hamt *h, struct hamt_node *anchor, + struct hash_state *hash, hamt_cmp_fn cmp_eq, const void *key, + struct hamt_node *path) { assert(!is_value(VALUE(anchor)) && "Invariant: path copy requires an internal node"); @@ -512,16 +528,16 @@ static struct search_result search_recursive(const struct hamt *h, struct hamt_n if ((*cmp_eq)(key, KEY(next)) == 0) { /* keys match */ struct search_result result = {.status = SEARCH_SUCCESS, - .anchor = copy, - .value = next, - .hash = hash}; + .anchor = copy, + .value = next, + .hash = hash}; return result; } /* not found: same hash but different key */ struct search_result result = {.status = SEARCH_FAIL_KEYMISMATCH, - .anchor = copy, - .value = next, - .hash = hash}; + .anchor = copy, + .value = next, + .hash = hash}; return result; } else { /* For table entries, recurse to the next level */ @@ -533,19 +549,20 @@ static struct search_result search_recursive(const struct hamt *h, struct hamt_n } /* expected index is not set, terminate search */ struct search_result result = {.status = SEARCH_FAIL_NOTFOUND, - .anchor = copy, - .value = NULL, - .hash = hash}; + .anchor = copy, + .value = NULL, + .hash = hash}; return result; } const void *hamt_get(const struct hamt *trie, void *key) { - struct hash_state *hash = &(struct hash_state){.key = key, - .hash_fn = trie->key_hash, - .hash = trie->key_hash(key, 0), - .depth = 0, - .shift = 0}; + struct hash_state *hash = + &(struct hash_state){.key = key, + .hash_fn = trie->key_hash, + .hash = trie->key_hash(key, 0), + .depth = 0, + .shift = 0}; struct search_result sr = search_recursive(trie, trie->root, hash, trie->key_cmp, key, NULL); if (sr.status == SEARCH_SUCCESS) { @@ -555,15 +572,16 @@ const void *hamt_get(const struct hamt *trie, void *key) } static const struct hamt_node *set(struct hamt *h, struct hamt_node *anchor, - hamt_key_hash_fn hash_fn, hamt_cmp_fn cmp_fn, - void *key, void *value) + hamt_key_hash_fn hash_fn, hamt_cmp_fn cmp_fn, + void *key, void *value) { struct hash_state *hash = &(struct hash_state){.key = key, - .hash_fn = hash_fn, - .hash = hash_fn(key, 0), - .depth = 0, - .shift = 0}; - struct search_result sr = search_recursive(h, anchor, hash, cmp_fn, key, NULL); + .hash_fn = hash_fn, + .hash = hash_fn(key, 0), + .depth = 0, + .shift = 0}; + struct search_result sr = + search_recursive(h, anchor, hash, cmp_fn, key, NULL); const struct hamt_node *inserted; switch (sr.status) { case SEARCH_SUCCESS: @@ -593,7 +611,8 @@ const void *hamt_set(struct hamt *trie, void *key, void *value) } static struct path_result search(const struct hamt *h, struct hamt_node *anchor, - struct hash_state *hash, hamt_cmp_fn cmp_eq, const void *key) + struct hash_state *hash, hamt_cmp_fn cmp_eq, + const void *key) { struct path_result pr; pr.root = table_allocate(h, 1); @@ -604,10 +623,10 @@ static struct path_result search(const struct hamt *h, struct hamt_node *anchor, const struct hamt *hamt_pset(const struct hamt *h, void *key, void *value) { struct hash_state *hash = &(struct hash_state){.key = key, - .hash_fn = h->key_hash, - .hash = h->key_hash(key, 0), - .depth = 0, - .shift = 0}; + .hash_fn = h->key_hash, + .hash = h->key_hash(key, 0), + .depth = 0, + .shift = 0}; struct path_result pr = search(h, h->root, hash, h->key_cmp, key); struct hamt *cp = hamt_dup(h); cp->root = pr.root; @@ -629,10 +648,10 @@ const struct hamt *hamt_pset(const struct hamt *h, void *key, void *value) return cp; } -static struct remove_result rem_recursive(struct hamt *h, struct hamt_node *root, - struct hamt_node *anchor, struct hash_state *hash, - hamt_cmp_fn cmp_eq, const void *key, - struct hamt_node *path) +static struct remove_result +rem_recursive(struct hamt *h, struct hamt_node *root, struct hamt_node *anchor, + struct hash_state *hash, hamt_cmp_fn cmp_eq, const void *key, + struct hamt_node *path) { assert(!is_value(VALUE(anchor)) && "Invariant: removal requires an internal node"); @@ -673,7 +692,7 @@ static struct remove_result rem_recursive(struct hamt *h, struct hamt_node *root if (is_value(VALUE(other))) { copy = table_gather(h, copy, !pos); return (struct remove_result){.status = REMOVE_GATHERED, - .value = value}; + .value = value}; } else { /* otherwise shrink the node to n_rows == 1 */ copy = @@ -681,10 +700,11 @@ static struct remove_result rem_recursive(struct hamt *h, struct hamt_node *root } } return (struct remove_result){.status = REMOVE_SUCCESS, - .value = value}; + .value = value}; } /* not found: same hash but different key */ - return (struct remove_result){.status = REMOVE_NOTFOUND, .value = NULL}; + return (struct remove_result){.status = REMOVE_NOTFOUND, + .value = NULL}; } else { /* For table entries, recurse to the next level */ assert(TABLE(next) != NULL && @@ -699,18 +719,19 @@ static struct remove_result rem_recursive(struct hamt *h, struct hamt_node *root if (n_rows == 1) { copy = table_gather(h, copy, 0); return (struct remove_result){.status = REMOVE_GATHERED, - .value = result.value}; + .value = result.value}; } } return (struct remove_result){.status = REMOVE_SUCCESS, - .value = result.value}; + .value = result.value}; } } return (struct remove_result){.status = REMOVE_NOTFOUND, .value = NULL}; } -static struct path_result rem(struct hamt *h, struct hamt_node *root, struct hamt_node *anchor, - struct hash_state *hash, hamt_cmp_fn cmp_eq, const void *key) +static struct path_result rem(struct hamt *h, struct hamt_node *root, + struct hamt_node *anchor, struct hash_state *hash, + hamt_cmp_fn cmp_eq, const void *key) { struct path_result pr; pr.root = table_allocate(h, 1); @@ -720,13 +741,14 @@ static struct path_result rem(struct hamt *h, struct hamt_node *root, struct ham void *hamt_remove(struct hamt *trie, void *key) { - struct hash_state *hash = &(struct hash_state){.key = key, - .hash_fn = trie->key_hash, - .hash = trie->key_hash(key, 0), - .depth = 0, - .shift = 0}; + struct hash_state *hash = + &(struct hash_state){.key = key, + .hash_fn = trie->key_hash, + .hash = trie->key_hash(key, 0), + .depth = 0, + .shift = 0}; struct remove_result rr = rem_recursive(trie, trie->root, trie->root, hash, - trie->key_cmp, key, NULL); + trie->key_cmp, key, NULL); if (rr.status == REMOVE_SUCCESS || rr.status == REMOVE_GATHERED) { trie->size -= 1; return untagged(rr.value); @@ -736,11 +758,12 @@ void *hamt_remove(struct hamt *trie, void *key) const struct hamt *hamt_premove(const struct hamt *trie, void *key) { - struct hash_state *hash = &(struct hash_state){.key = key, - .hash_fn = trie->key_hash, - .hash = trie->key_hash(key, 0), - .depth = 0, - .shift = 0}; + struct hash_state *hash = + &(struct hash_state){.key = key, + .hash_fn = trie->key_hash, + .hash = trie->key_hash(key, 0), + .depth = 0, + .shift = 0}; struct hamt *cp = hamt_dup(trie); struct path_result pr = rem(cp, cp->root, cp->root, hash, cp->key_cmp, key); cp->root = pr.root; @@ -806,8 +829,9 @@ struct hamt_iterator { struct hamt_iterator_item *tos; /* top of stack */ }; -static struct hamt_iterator_item * -iterator_push_item(struct hamt_iterator *it, struct hamt_node *anchor, size_t pos) +static struct hamt_iterator_item *iterator_push_item(struct hamt_iterator *it, + struct hamt_node *anchor, + size_t pos) { /* push new item onto top of stack */ struct hamt_iterator_item *new_item = diff --git a/src/uh.c b/src/uh.c index 55aad2f..3574fdc 100644 --- a/src/uh.c +++ b/src/uh.c @@ -20,4 +20,3 @@ uint32_t sedgewick_universal_hash(const char *str, uint32_t M) h = (a * h + *str) % M; return h; } - From a88f025d4cab0e8236640ac0734812a2a2be701a Mon Sep 17 00:00:00 2001 From: Marc Kirchner Date: Fri, 29 Dec 2023 22:53:39 +0400 Subject: [PATCH 09/17] cleanup --- Makefile | 2 +- src/hamt.c | 7 +-- test/minunit.h | 4 +- test/test_hamt.c | 137 ++++++++++++++++++++++++++++++++++----------- test/test_murmur.c | 2 +- 5 files changed, 110 insertions(+), 42 deletions(-) diff --git a/Makefile b/Makefile index ab6272b..f8c3ceb 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ TEST_MURMUR_SRCS := test/test_murmur.c TEST_MURMUR_OBJS := $(TEST_MURMUR_SRCS:%=$(BUILD_DIR)/%.o) TEST_MURMUR_DEPS := $(TEST_MURMUR_OBJS:.o=.d) -CPPFLAGS ?= $(INC_FLAGS) -MMD -MP -O0 -g # -DWITH_TABLE_CACHE -DWITH_TABLE_CACHE_STATS +CPPFLAGS ?= $(INC_FLAGS) -std=c11 -Wall -pedantic -MMD -MP -O0 -g # -DWITH_TABLE_CACHE -DWITH_TABLE_CACHE_STATS lib: $(BUILD_DIR)/src/libhamt.dylib diff --git a/src/hamt.c b/src/hamt.c index ad7280f..b257d8a 100644 --- a/src/hamt.c +++ b/src/hamt.c @@ -350,10 +350,9 @@ struct hamt_node *table_shrink(struct hamt *h, struct hamt_node *anchor, struct hamt_node *new_table = NULL; uint32_t new_index = 0; - if (n_rows > 0) { + if (n_rows > 1) { new_table = table_allocate(h, n_rows - 1); - if (!new_table) - return NULL; + if (!new_table) return NULL; /* mem allocation error */ new_index = INDEX(anchor) & ~(1 << index); memcpy(&new_table[0], &TABLE(anchor)[0], pos * sizeof(struct hamt_node)); @@ -607,7 +606,7 @@ const void *hamt_set(struct hamt *trie, void *key, void *value) { const struct hamt_node *n = set(trie, trie->root, trie->key_hash, trie->key_cmp, key, value); - return VALUE(n); + return untagged(VALUE(n)); } static struct path_result search(const struct hamt *h, struct hamt_node *anchor, diff --git a/test/minunit.h b/test/minunit.h index c7efb2b..87e5018 100644 --- a/test/minunit.h +++ b/test/minunit.h @@ -18,8 +18,8 @@ return message; \ } while (0) -#define MU_TEST_CASE(name) static char *name() -#define MU_TEST_SUITE(name) static char *name() +#define MU_TEST_CASE(name) static char *name(void) +#define MU_TEST_SUITE(name) static char *name(void) extern int mu_tests_run; diff --git a/test/test_hamt.c b/test/test_hamt.c index 361616d..994d7f9 100644 --- a/test/test_hamt.c +++ b/test/test_hamt.c @@ -18,27 +18,32 @@ * * @param ix Index of `node` in its table (for illustratrion only) * @param node Pointer to the anchor node - * @param depth Tree depth as a parameter + * @param depth Tree depth as a parameter, 0-based */ static void debug_print_string(size_t ix, const struct hamt_node *node, size_t depth) { - /* print node*/ + if (!node) { + printf("debug_print_string called on a NULL node\n"); + return; + } + /* node can either be a internal (table) node or a leaf (value) node */ if (!is_value(node->as.kv.value)) { - printf("%*s +- (%lu) @%p: %s", (int)depth * 2, "", ix, node, "[ "); + /* this is an internal/table node */ + int n = get_popcount(node->as.table.index); + printf("%*s \\- [ ix=%2lu sz=%2d p=%p: ", (int)depth * 2, "", ix, n, (void *) node); for (size_t i = 0; i < 32; ++i) { if (node->as.table.index & (1 << i)) { - printf("%2lu(%i) ", i, get_pos(i, node->as.table.index)); + printf("%2lu(%2i) ", i, get_pos(i, node->as.table.index)); } } - printf("%s", "]\n"); - /* print table */ - int n = get_popcount(node->as.table.index); + printf("\n"); + /* recursively descent into subtables */ for (int i = 0; i < n; ++i) { debug_print_string(i, &node->as.table.ptr[i], depth + 1); } } else { - /* print value */ - printf("%*s +- (%lu) @%p: (%s, %i)\n", (int)depth * 2, "", ix, node, + /* this is a leaf/value node */ + printf("%*s \\_ (%2lu) @%p: (%s -> %d)\n", (int)depth * 2, "", ix, (void *) node, (char *)node->as.kv.key, *(int *)untagged(node->as.kv.value)); } } @@ -416,7 +421,7 @@ MU_TEST_SUITE(test_setget_large_scale) &hamt_allocator_default); for (size_t i = 0; i < n_items; i++) { hamt_set(t, words[i], words[i]); - MU_ASSERT(hamt_get(t, words[i]), "Failed to get key we just pushed"); + MU_ASSERT(hamt_get(t, words[i]) == words[i], "Failed to get key we just pushed"); } for (size_t i = 0; i < n_items; i++) { MU_ASSERT(hamt_get(t, words[i]), "Failed to get key we pushed earlier"); @@ -738,33 +743,96 @@ MU_TEST_CASE(test_persistent_aspell_dict_en) return 0; } -MU_TEST_CASE(test_persistent_add_remove_one) +MU_TEST_CASE(test_table_extend) { - printf(". testing add/remove of a single element w/ structural sharing\n"); + printf(". testing table_extend\n"); + struct hamt *t = hamt_create(my_keyhash_string, my_keycmp_string, + &hamt_allocator_default); + MU_ASSERT(get_popcount(INDEX(t->root)) == 0, + "root should have zero descendants"); + /* + printf("-0--\n"); + debug_print_string(0, t->root, 0); + printf("-0--\n"); + */ + struct hamt_node *n = table_extend(t, t->root, 0, 0, 0); + MU_ASSERT(get_popcount(INDEX(n)) == 1, "size did not increase by 1"); + MU_ASSERT(n == t->root, "anchor should not change"); + /* + printf("-1--\n"); + debug_print_string(0, t->root, 0); + printf("-1--\n"); + */ + n = table_shrink(t, t->root, 1, 0, 0); + MU_ASSERT(get_popcount(INDEX(n)) == 0, "size did not decrease by 1"); + MU_ASSERT(n == t->root, "anchor should not change"); + /* + printf("-2--\n"); + debug_print_string(0, t->root, 0); + printf("-2--\n"); + */ + return 0; +} + +MU_TEST_CASE(test_setget_zero) +{ + printf(". testing setget for a size 0 tree\n"); /* create a standard HAMT with string keys */ - const struct hamt *t; + struct hamt *t; t = hamt_create(my_keyhash_string, my_keycmp_string, &hamt_allocator_default); - /* add a single key and make sure it gets added */ - char *word = "the_key"; - t = hamt_pset(t, word, word); + /* + printf("-0--\n"); debug_print_string(0, t->root, 0); - MU_ASSERT(hamt_get(t, word) != NULL, "key should be present"); + printf("-0--\n"); + */ - /* remove the key and make sure (1) it is gone from the new - * copy returned by hamt_premove(); and (2) it is still present in - * the original tree. - */ + /* add a single key */ + char key[] = "the_key"; + char value[] = "the_value"; + const char *val = hamt_set(t, key, value); + MU_ASSERT(hamt_size(t) == 1, "wrong size after set"); + MU_ASSERT(val == value, "value should point to the original value"); + /* make sure we can find it */ + val = hamt_get(t, key); + MU_ASSERT(val != NULL, "key should be present"); + MU_ASSERT(val == value, "found value should point to the original value"); + /* delete it */ + val = hamt_remove(t, key); + MU_ASSERT(hamt_size(t) == 0, "wrong size after remove"); + MU_ASSERT(val != NULL, "key should be present"); + MU_ASSERT(val == value, "remove return value should point to the original value"); + /* make sure it's gone */ + val = hamt_get(t, key); + MU_ASSERT(val == NULL, "key should not be present anymore"); + + return 0; +} +MU_TEST_CASE(test_persistent_setget_one) +{ + printf(". testing add/remove of a single element w/ structural sharing\n"); + + /* create a standard HAMT with string keys */ + const struct hamt *t; + t = hamt_create(my_keyhash_string, my_keycmp_string, + &hamt_allocator_default); + /* add a single key */ + char key[] = "the_key"; + char value[] = "the_value"; + t = hamt_pset(t, key, value); + MU_ASSERT(hamt_size(t) == 1, "wrong size after set"); + /* make sure we can find it */ + char *val = (char *) hamt_get(t, key); + MU_ASSERT(val != NULL, "key should be present"); + MU_ASSERT(val == value, "value should point to the original value"); + /* remove it and make sure (1) it's gone from the new copy and + * still present in the old */ const struct hamt *s; - s = hamt_premove(t, word); - printf("t:\n"); - // debug_print_string(0, t->root, 0); - MU_ASSERT(hamt_get(t, word) != NULL, - "key should not have been removed from original trie"); - printf("s:\n"); - // debug_print_string(0, s->root, 0); - MU_ASSERT(hamt_get(s, word) == NULL, + s = hamt_premove(t, key); + MU_ASSERT(hamt_get(t, key) != NULL, + "key should still be present original trie"); + MU_ASSERT(hamt_get(s, key) == NULL, "key should have been removed from copy"); /* * There is no way to cleanly free the structurally shared @@ -921,7 +989,6 @@ int mu_tests_run = 0; MU_TEST_SUITE(test_suite) { - MU_RUN_TEST(test_aspell_dict_en); MU_RUN_TEST(test_popcount); MU_RUN_TEST(test_compact_index); @@ -930,6 +997,7 @@ MU_TEST_SUITE(test_suite) MU_RUN_TEST(test_set_with_collisions); MU_RUN_TEST(test_set_whole_enchilada_00); MU_RUN_TEST(test_set_stringkeys); + MU_RUN_TEST(test_setget_zero); MU_RUN_TEST(test_setget_large_scale); MU_RUN_TEST(test_shrink_table); MU_RUN_TEST(test_gather_table); @@ -938,17 +1006,18 @@ MU_TEST_SUITE(test_suite) MU_RUN_TEST(test_size); MU_RUN_TEST(test_iterators); MU_RUN_TEST(test_iterators_1m); - MU_RUN_TEST(test_tree_depth); // persistent data structure tests MU_RUN_TEST(test_persistent_set); MU_RUN_TEST(test_persistent_aspell_dict_en); - MU_RUN_TEST(test_persistent_remove_aspell_dict_en); - MU_RUN_TEST(test_persistent_add_remove_one); + MU_RUN_TEST(test_table_extend); + MU_RUN_TEST(test_persistent_setget_one); + // tree statistics + MU_RUN_TEST(test_tree_depth); return 0; } -int main() +int main(void) { printf("---=[ Hash array mapped trie tests\n"); char *result = test_suite(); diff --git a/test/test_murmur.c b/test/test_murmur.c index 78807e0..082a0f9 100644 --- a/test/test_murmur.c +++ b/test/test_murmur.c @@ -40,7 +40,7 @@ MU_TEST_SUITE(test_suite) return 0; } -int main() +int main(void) { printf("---=[ Murmur hash function test suite\n"); char *result = test_suite(); From 6102b8e32f5c3c0a8f9df8bb8d35336cbf3b900a Mon Sep 17 00:00:00 2001 From: Marc Kirchner Date: Fri, 29 Dec 2023 22:54:33 +0400 Subject: [PATCH 10/17] clang-format --- src/hamt.c | 3 +- test/test_hamt.c | 108 ++++++++++++++++++++++++++--------------------- 2 files changed, 63 insertions(+), 48 deletions(-) diff --git a/src/hamt.c b/src/hamt.c index b257d8a..ff79ed5 100644 --- a/src/hamt.c +++ b/src/hamt.c @@ -352,7 +352,8 @@ struct hamt_node *table_shrink(struct hamt *h, struct hamt_node *anchor, uint32_t new_index = 0; if (n_rows > 1) { new_table = table_allocate(h, n_rows - 1); - if (!new_table) return NULL; /* mem allocation error */ + if (!new_table) + return NULL; /* mem allocation error */ new_index = INDEX(anchor) & ~(1 << index); memcpy(&new_table[0], &TABLE(anchor)[0], pos * sizeof(struct hamt_node)); diff --git a/test/test_hamt.c b/test/test_hamt.c index 994d7f9..9db08ef 100644 --- a/test/test_hamt.c +++ b/test/test_hamt.c @@ -20,7 +20,8 @@ * @param node Pointer to the anchor node * @param depth Tree depth as a parameter, 0-based */ -static void debug_print_string(size_t ix, const struct hamt_node *node, size_t depth) +static void debug_print_string(size_t ix, const struct hamt_node *node, + size_t depth) { if (!node) { printf("debug_print_string called on a NULL node\n"); @@ -30,7 +31,8 @@ static void debug_print_string(size_t ix, const struct hamt_node *node, size_t d if (!is_value(node->as.kv.value)) { /* this is an internal/table node */ int n = get_popcount(node->as.table.index); - printf("%*s \\- [ ix=%2lu sz=%2d p=%p: ", (int)depth * 2, "", ix, n, (void *) node); + printf("%*s \\- [ ix=%2lu sz=%2d p=%p: ", (int)depth * 2, "", ix, n, + (void *)node); for (size_t i = 0; i < 32; ++i) { if (node->as.table.index & (1 << i)) { printf("%2lu(%2i) ", i, get_pos(i, node->as.table.index)); @@ -43,8 +45,9 @@ static void debug_print_string(size_t ix, const struct hamt_node *node, size_t d } } else { /* this is a leaf/value node */ - printf("%*s \\_ (%2lu) @%p: (%s -> %d)\n", (int)depth * 2, "", ix, (void *) node, - (char *)node->as.kv.key, *(int *)untagged(node->as.kv.value)); + printf("%*s \\_ (%2lu) @%p: (%s -> %d)\n", (int)depth * 2, "", ix, + (void *)node, (char *)node->as.kv.key, + *(int *)untagged(node->as.kv.value)); } } @@ -163,19 +166,22 @@ MU_TEST_CASE(test_search) int values[] = {0, 2, 4, 7, 8}; - struct hamt_node *t_8 = (struct hamt_node *)calloc(sizeof(struct hamt_node), 2); + struct hamt_node *t_8 = + (struct hamt_node *)calloc(sizeof(struct hamt_node), 2); t_8[0].as.kv.key = &keys[2]; t_8[0].as.kv.value = tagged(&values[2]); t_8[1].as.kv.key = &keys[3]; t_8[1].as.kv.value = tagged(&values[3]); - struct hamt_node *t_23 = (struct hamt_node *)calloc(sizeof(struct hamt_node), 2); + struct hamt_node *t_23 = + (struct hamt_node *)calloc(sizeof(struct hamt_node), 2); t_23[0].as.kv.key = &keys[4]; t_23[0].as.kv.value = tagged(&values[4]); t_23[1].as.kv.key = &keys[1]; t_23[1].as.kv.value = tagged(&values[1]); - struct hamt_node *t_root = (struct hamt_node *)calloc(sizeof(struct hamt_node), 3); + struct hamt_node *t_root = + (struct hamt_node *)calloc(sizeof(struct hamt_node), 3); t_root[0].as.table.index = (1 << 4) | (1 << 17); t_root[0].as.table.ptr = t_8; t_root[1].as.table.index = (1 << 0) | (1 << 16); @@ -204,12 +210,12 @@ MU_TEST_CASE(test_search) for (size_t i = 0; i < 10; ++i) { struct hash_state *hash = &(struct hash_state){.key = test_cases[i].key, - .hash_fn = my_hash_1, - .hash = my_hash_1(test_cases[i].key, 0), - .depth = 0, - .shift = 0}; - struct search_result sr = search_recursive(&t, t.root, hash, my_strncmp_1, - test_cases[i].key, NULL); + .hash_fn = my_hash_1, + .hash = my_hash_1(test_cases[i].key, 0), + .depth = 0, + .shift = 0}; + struct search_result sr = search_recursive( + &t, t.root, hash, my_strncmp_1, test_cases[i].key, NULL); MU_ASSERT(sr.status == test_cases[i].expected_status, "Unexpected search result status"); if (test_cases[i].expected_status == SEARCH_SUCCESS) { @@ -253,11 +259,12 @@ MU_TEST_CASE(test_set_with_collisions) /* insert value and find it again */ const struct hamt_node *new_node = set(t, t->root, t->key_hash, t->key_cmp, &keys[2], &values[2]); - struct hash_state *hash = &(struct hash_state){.key = &keys[2], - .hash_fn = t->key_hash, - .hash = t->key_hash(&keys[2], 0), - .depth = 0, - .shift = 0}; + struct hash_state *hash = + &(struct hash_state){.key = &keys[2], + .hash_fn = t->key_hash, + .hash = t->key_hash(&keys[2], 0), + .depth = 0, + .shift = 0}; struct search_result sr = search_recursive(t, t->root, hash, t->key_cmp, &keys[2], NULL); MU_ASSERT(sr.status == SEARCH_SUCCESS, "failed to find inserted value"); @@ -283,11 +290,12 @@ MU_TEST_CASE(test_set_whole_enchilada_00) } for (size_t i = 0; i < 5; ++i) { - struct hash_state *hash = &(struct hash_state){.key = &data[i].key, - .hash_fn = t->key_hash, - .hash = t->key_hash(&data[i].key, 0), - .depth = 0, - .shift = 0}; + struct hash_state *hash = + &(struct hash_state){.key = &data[i].key, + .hash_fn = t->key_hash, + .hash = t->key_hash(&data[i].key, 0), + .depth = 0, + .shift = 0}; struct search_result sr = search_recursive(t, t->root, hash, t->key_cmp, &data[i].key, NULL); MU_ASSERT(sr.status == SEARCH_SUCCESS, "failed to find inserted value"); @@ -335,11 +343,12 @@ MU_TEST_CASE(test_set_stringkeys) for (size_t i = 0; i < 6; ++i) { // printf("querying (%s, %d)\n", data[i].key, data[i].value); - struct hash_state *hash = &(struct hash_state){.key = data[i].key, - .hash_fn = t->key_hash, - .hash = t->key_hash(data[i].key, 0), - .depth = 0, - .shift = 0}; + struct hash_state *hash = + &(struct hash_state){.key = data[i].key, + .hash_fn = t->key_hash, + .hash = t->key_hash(data[i].key, 0), + .depth = 0, + .shift = 0}; struct search_result sr = search_recursive(t, t->root, hash, t->key_cmp, data[i].key, NULL); MU_ASSERT(sr.status == SEARCH_SUCCESS, "failed to find inserted value"); @@ -375,11 +384,12 @@ MU_TEST_CASE(test_aspell_dict_en) /* Check if "bluism" has search depth 6 */ char target[] = "bluism"; - struct hash_state *hash = &(struct hash_state){.key = target, - .hash_fn = my_keyhash_string, - .hash = my_keyhash_string(target, 0), - .depth = 0, - .shift = 0}; + struct hash_state *hash = + &(struct hash_state){.key = target, + .hash_fn = my_keyhash_string, + .hash = my_keyhash_string(target, 0), + .depth = 0, + .shift = 0}; struct search_result sr = search_recursive(t, t->root, hash, t->key_cmp, target, NULL); MU_ASSERT(sr.status == SEARCH_SUCCESS, "fail"); @@ -421,7 +431,8 @@ MU_TEST_SUITE(test_setget_large_scale) &hamt_allocator_default); for (size_t i = 0; i < n_items; i++) { hamt_set(t, words[i], words[i]); - MU_ASSERT(hamt_get(t, words[i]) == words[i], "Failed to get key we just pushed"); + MU_ASSERT(hamt_get(t, words[i]) == words[i], + "Failed to get key we just pushed"); } for (size_t i = 0; i < n_items; i++) { MU_ASSERT(hamt_get(t, words[i]), "Failed to get key we pushed earlier"); @@ -533,10 +544,10 @@ MU_TEST_CASE(test_remove) for (size_t i = 0; i < N; ++i) { struct hash_state *hash = &(struct hash_state){.key = data[i].key, - .hash_fn = t->key_hash, - .hash = t->key_hash(data[i].key, 0), - .depth = 0, - .shift = 0}; + .hash_fn = t->key_hash, + .hash = t->key_hash(data[i].key, 0), + .depth = 0, + .shift = 0}; struct path_result pr = rem(t, t->root, t->root, hash, t->key_cmp, data[i].key); MU_ASSERT(pr.rr.status == REMOVE_SUCCESS || @@ -802,7 +813,8 @@ MU_TEST_CASE(test_setget_zero) val = hamt_remove(t, key); MU_ASSERT(hamt_size(t) == 0, "wrong size after remove"); MU_ASSERT(val != NULL, "key should be present"); - MU_ASSERT(val == value, "remove return value should point to the original value"); + MU_ASSERT(val == value, + "remove return value should point to the original value"); /* make sure it's gone */ val = hamt_get(t, key); MU_ASSERT(val == NULL, "key should not be present anymore"); @@ -823,11 +835,11 @@ MU_TEST_CASE(test_persistent_setget_one) t = hamt_pset(t, key, value); MU_ASSERT(hamt_size(t) == 1, "wrong size after set"); /* make sure we can find it */ - char *val = (char *) hamt_get(t, key); + char *val = (char *)hamt_get(t, key); MU_ASSERT(val != NULL, "key should be present"); MU_ASSERT(val == value, "value should point to the original value"); /* remove it and make sure (1) it's gone from the new copy and - * still present in the old */ + * still present in the old */ const struct hamt *s; s = hamt_premove(t, key); MU_ASSERT(hamt_get(t, key) != NULL, @@ -865,7 +877,8 @@ MU_TEST_CASE(test_persistent_remove_aspell_dict_en) for (size_t i = 0; i < WORDS_MAX; i++) { /* structural sharing */ s = hamt_premove(t, words[i]); - // printf("i=%lu of %lu (pre-size=%lu, post-size=%lu)\n", i, WORDS_MAX, hamt_size(t), hamt_size(s)); + // printf("i=%lu of %lu (pre-size=%lu, post-size=%lu)\n", i, WORDS_MAX, + // hamt_size(t), hamt_size(s)); MU_ASSERT(hamt_get(t, words[i]) != NULL, "key should not have been removed from original trie"); /* @@ -952,11 +965,12 @@ MU_TEST_CASE(test_tree_depth) double avg_depth = 0.0; size_t max_depth = 0; for (size_t i = 0; i < n_items; i++) { - struct hash_state *hash = &(struct hash_state){.key = words[i], - .hash_fn = hash_fns[k], - .hash = hash_fns[k](words[i], 0), - .depth = 0, - .shift = 0}; + struct hash_state *hash = + &(struct hash_state){.key = words[i], + .hash_fn = hash_fns[k], + .hash = hash_fns[k](words[i], 0), + .depth = 0, + .shift = 0}; struct search_result sr = search_recursive(t, t->root, hash, t->key_cmp, words[i], NULL); if (sr.status != SEARCH_SUCCESS) { From 0656396ce32ddef93de27e47d00a6d9f0cddf3e4 Mon Sep 17 00:00:00 2001 From: Marc Kirchner Date: Sat, 30 Dec 2023 13:59:57 +0400 Subject: [PATCH 11/17] wip --- include/hamt.h | 16 +++++++++++++--- 1 file changed, 13 insertions(+), 3 deletions(-) diff --git a/include/hamt.h b/include/hamt.h index 2a88539..e2c8532 100644 --- a/include/hamt.h +++ b/include/hamt.h @@ -10,10 +10,20 @@ typedef uint32_t (*hamt_key_hash_fn)(const void *key, const size_t gen); struct hamt; +/* + * A custom allocator interface. This is similar to the function + * pointer callback allocator interface exposed in e.g. libavl but + * additionally enables (1) a user-defined context pointer to allow + * for user state management; and (2) passing current and/or new size + * information to free() and realloc() functions for (optional) sized + * deallocation. + */ struct hamt_allocator { - void *(*malloc)(const size_t size); - void *(*realloc)(void *chunk, const size_t size); - void (*free)(void *chunk); + void *(*malloc)(const ptrdiff_t size, void *ctx); + void *(*realloc)(void *ptr, const ptrdiff_t old_size, + const ptrdiff_t new_size, void *ctx); + void (*free)(void *ptr, const ptrdiff_t size, void *ctx); + void *ctx; }; extern struct hamt_allocator hamt_allocator_default; From a0a4ec7fb95c0c0aa69aa1411fa04c8cb6cfd4a4 Mon Sep 17 00:00:00 2001 From: Marc Kirchner Date: Sat, 30 Dec 2023 15:25:45 +0400 Subject: [PATCH 12/17] Implement new allocator interface --- Makefile | 2 +- src/hamt.c | 76 +++++++++++++++++++++++++++++++++--------------- test/test_hamt.c | 2 +- 3 files changed, 55 insertions(+), 25 deletions(-) diff --git a/Makefile b/Makefile index f8c3ceb..3d2e043 100644 --- a/Makefile +++ b/Makefile @@ -26,7 +26,7 @@ TEST_MURMUR_SRCS := test/test_murmur.c TEST_MURMUR_OBJS := $(TEST_MURMUR_SRCS:%=$(BUILD_DIR)/%.o) TEST_MURMUR_DEPS := $(TEST_MURMUR_OBJS:.o=.d) -CPPFLAGS ?= $(INC_FLAGS) -std=c11 -Wall -pedantic -MMD -MP -O0 -g # -DWITH_TABLE_CACHE -DWITH_TABLE_CACHE_STATS +CPPFLAGS ?= $(INC_FLAGS) -std=c11 -Wall -pedantic -MMD -MP -O0 -g -DWITH_TABLE_CACHE -DWITH_TABLE_CACHE_STATS lib: $(BUILD_DIR)/src/libhamt.dylib diff --git a/src/hamt.c b/src/hamt.c index ff79ed5..a612049 100644 --- a/src/hamt.c +++ b/src/hamt.c @@ -29,11 +29,35 @@ #define KEY(a) a->as.kv.key /* Memory management */ -#define mem_alloc(ator, size) (ator)->malloc(size) -#define mem_free(ator, ptr) (ator)->free(ptr) +#define mem_alloc(ator, size) (ator)->malloc(size, (ator)->ctx) +#define mem_realloc(ator, ptr, size_old, size_new) \ + (ator)->realloc(ptr, size_old, size_new, (ator)->ctx) +#define mem_free(ator, ptr, size) (ator)->free(ptr, size, (ator)->ctx) /* Default allocator uses system malloc */ -struct hamt_allocator hamt_allocator_default = {malloc, realloc, free}; +static void *stdlib_malloc(const ptrdiff_t size, void *ctx) +{ + (void)ctx; + return malloc(size); +} + +static void *stdlib_realloc(void *ptr, const ptrdiff_t old_size, + const ptrdiff_t new_size, void *ctx) +{ + (void)ctx; + (void)old_size; + return realloc(ptr, new_size); +} + +void stdlib_free(void *ptr, const ptrdiff_t size, void *ctx) +{ + (void)ctx; + (void)size; + free(ptr); +} + +struct hamt_allocator hamt_allocator_default = {stdlib_malloc, stdlib_realloc, + stdlib_free}; struct hamt_node { union { @@ -182,13 +206,13 @@ int table_allocator_create(struct table_allocator *pool, .table_size = table_size, .fl = NULL}; /* set up initial chunk */ - pool->chunk = - backing_allocator->malloc(sizeof(struct table_allocator_chunk)); + pool->chunk = backing_allocator->malloc( + sizeof(struct table_allocator_chunk), backing_allocator->ctx); if (!pool->chunk) goto err_no_cleanup; pool->chunk->size = initial_cache_size * table_size; pool->chunk->buf = (struct hamt_node *)backing_allocator->malloc( - pool->chunk->size * sizeof(struct hamt_node)); + pool->chunk->size * sizeof(struct hamt_node), backing_allocator->ctx); if (!pool->chunk->buf) goto err_free_chunk; pool->chunk->next = NULL; @@ -199,7 +223,8 @@ int table_allocator_create(struct table_allocator *pool, #endif return 0; err_free_chunk: - backing_allocator->free(pool->chunk); + backing_allocator->free(pool->chunk, sizeof(struct table_allocator_chunk), + backing_allocator->ctx); pool->chunk = NULL; err_no_cleanup: pool->chunk_count = 0; @@ -212,9 +237,13 @@ void table_allocator_delete(struct table_allocator *pool, struct table_allocator_chunk *current_chunk = pool->chunk, *next_chunk; /* free all buffers in all chunks */ while (current_chunk) { - backing_allocator->free(current_chunk->buf); + backing_allocator->free(current_chunk->buf, + current_chunk->size * sizeof(struct hamt_node), + backing_allocator->ctx); next_chunk = current_chunk->next; - backing_allocator->free(current_chunk); + backing_allocator->free(current_chunk, + sizeof(struct table_allocator_chunk), + backing_allocator->ctx); current_chunk = next_chunk; } } @@ -238,14 +267,14 @@ table_allocator_alloc(struct table_allocator *pool, /* freelist is empty, serve from chunk */ if (pool->buf_ix == pool->chunk->size) { /* if chunk has no capacity left, create new one */ - struct table_allocator_chunk *chunk = - backing_allocator->malloc(sizeof(struct table_allocator_chunk)); + struct table_allocator_chunk *chunk = backing_allocator->malloc( + sizeof(struct table_allocator_chunk), backing_allocator->ctx); if (!chunk) goto err_no_cleanup; /* create new chunk w/ same size as previous */ chunk->size = pool->chunk->size; chunk->buf = (struct hamt_node *)backing_allocator->malloc( - chunk->size * sizeof(struct hamt_node)); + chunk->size * sizeof(struct hamt_node), backing_allocator->ctx); if (!chunk->buf) goto err_free_chunk; chunk->next = pool->chunk; @@ -259,7 +288,8 @@ table_allocator_alloc(struct table_allocator *pool, pool->size++; return p; err_free_chunk: - backing_allocator->free(pool->chunk); + backing_allocator->free(pool->chunk, sizeof(struct table_allocator_chunk), + backing_allocator->ctx); pool->chunk = NULL; err_no_cleanup: return NULL; @@ -307,13 +337,13 @@ struct hamt_node *table_allocate(const struct hamt *h, size_t size) #endif } -void table_free(struct hamt *h, struct hamt_node *ptr, size_t size) +void table_free(struct hamt *h, struct hamt_node *ptr, size_t n_rows) { - if (ptr && size) + if (ptr && n_rows) #if defined(WITH_TABLE_CACHE) - table_allocator_free(&h->table_ator[size - 1], ptr); + table_allocator_free(&h->table_ator[n_rows - 1], ptr); #else - mem_free(h->ator, ptr); + mem_free(h->ator, ptr, n_rows * sizeof(struct hamt_node)); #endif } @@ -796,10 +826,10 @@ void hamt_delete(struct hamt *h) delete_recursive(h, h->root); #if defined(WITH_TABLE_CACHE) table_allocators_destroy(h->table_ator, h->ator); - mem_free(h->ator, h->table_ator); + mem_free(h->ator, h->table_ator, sizeof(struct table_allocator)); #endif - mem_free(h->ator, h->root); - mem_free(h->ator, h); + mem_free(h->ator, h->root, sizeof(struct hamt_node)); + mem_free(h->ator, h, sizeof(struct hamt)); } size_t hamt_size(const struct hamt *trie) { return trie->size; } @@ -880,9 +910,9 @@ void hamt_it_delete(struct hamt_iterator *it) while (p) { tmp = p; p = p->next; - mem_free(it->trie->ator, tmp); + mem_free(it->trie->ator, tmp, sizeof(struct hamt_iterator_item)); } - mem_free(it->trie->ator, it); + mem_free(it->trie->ator, it, sizeof(struct hamt_iterator)); } inline bool hamt_it_valid(struct hamt_iterator *it) { return it->cur != NULL; } @@ -913,7 +943,7 @@ struct hamt_iterator *hamt_it_next(struct hamt_iterator *it) } /* remove table from stack when all rows have been dealt with */ iterator_pop_item(it); - mem_free(it->trie->ator, p); + mem_free(it->trie->ator, p, sizeof(struct hamt_iterator_item)); } if (it) it->cur = NULL; diff --git a/test/test_hamt.c b/test/test_hamt.c index 9db08ef..2537ab6 100644 --- a/test/test_hamt.c +++ b/test/test_hamt.c @@ -484,7 +484,7 @@ MU_TEST_CASE(test_shrink_table) "unexpected value in shrunk table"); } table_free(t, TABLE(a0), 4); - mem_free(t->ator, a0); + mem_free(t->ator, a0, sizeof(struct hamt_node)); } hamt_delete(t); return 0; From 0422e3d4e0af28348d165529ff81751da52d07d7 Mon Sep 17 00:00:00 2001 From: Marc Kirchner Date: Sat, 30 Dec 2023 21:19:18 +0400 Subject: [PATCH 13/17] Move cache config to global var. Ok for now. --- include/hamt.h | 13 +++++++++++++ src/hamt.c | 16 +++++++++++----- 2 files changed, 24 insertions(+), 5 deletions(-) diff --git a/include/hamt.h b/include/hamt.h index e2c8532..e987bb0 100644 --- a/include/hamt.h +++ b/include/hamt.h @@ -28,6 +28,19 @@ struct hamt_allocator { extern struct hamt_allocator hamt_allocator_default; +#if defined(WITH_TABLE_CACHE) +/* + * Configuration options for the table cache; this allows the user to + * control cache behavior beyond default settings. + */ +struct hamt_cache_config { + ptrdiff_t initial_cache_sizes[32]; /* in # of tables */ +}; + +extern struct hamt_cache_config hamt_cache_config_default; + +#endif + struct hamt *hamt_create(hamt_key_hash_fn key_hash, hamt_cmp_fn key_cmp, struct hamt_allocator *ator); void hamt_delete(struct hamt *trie); diff --git a/src/hamt.c b/src/hamt.c index a612049..fc95066 100644 --- a/src/hamt.c +++ b/src/hamt.c @@ -74,6 +74,12 @@ struct hamt_node { #if defined(WITH_TABLE_CACHE) struct table_allocator; +struct hamt_cache_config hamt_cache_config_default = { + .initial_cache_sizes = { + 10000, 338900, 220200, 155800, 86700, 39500, 15000, 4900, 4900, 5200, + 5000, 4900, 4700, 4600, 4600, 4600, 4200, 4600, 4700, 4300, 4600, 4800, + 4500, 5100, 5100, 5300, 5500, 5900, 7000, 8000, 9900, 6900 } +}; #endif struct hamt { @@ -271,8 +277,8 @@ table_allocator_alloc(struct table_allocator *pool, sizeof(struct table_allocator_chunk), backing_allocator->ctx); if (!chunk) goto err_no_cleanup; - /* create new chunk w/ same size as previous */ - chunk->size = pool->chunk->size; + /* double size of new chunk compared to previous */ + chunk->size = pool->chunk->size * 2; chunk->buf = (struct hamt_node *)backing_allocator->malloc( chunk->size * sizeof(struct hamt_node), backing_allocator->ctx); if (!chunk->buf) @@ -311,9 +317,9 @@ void table_allocators_init(struct table_allocator *pools, struct hamt_allocator *backing_allocator) { for (size_t i = 0; i < 32; ++i) { - // FIXME: sizes need to be parameters - table_allocator_create(&pools[i], 1024 * 1024 * 1024, i + 1, - backing_allocator); + table_allocator_create(&pools[i], + hamt_cache_config_default.initial_cache_sizes[i], + i + 1, backing_allocator); } } From 5605145f4ee2f39c3fab8dabc1e5b68e543f5176 Mon Sep 17 00:00:00 2001 From: Marc Kirchner Date: Tue, 2 Jan 2024 22:46:17 +0400 Subject: [PATCH 14/17] Adding benchmark info --- README.md | 20 +++++++++++++++++++- 1 file changed, 19 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 83ff604..45fe156 100644 --- a/README.md +++ b/README.md @@ -35,10 +35,28 @@ In order to use `libhamt` in your own projects, copy `include/hamt.h` and ### Benchmarks -For basic performance comparison with AVL and red-black trees (from `libavl`) +![Benchmark results](./doc/img/benchmark.png) + +The current HAMT implementation consistently outperforms the `libavl` AVL-tree +and red-black tree implementations by 5x for querying, 1.5x-4x for node insert, +and 1.5x-5x for node removal. Persistent insert and remove implementations +scale roughly similar to the classic trees, with more favorable scaling +behavior for HAMT. Where table caching is an option, the persistent HAMT +implementation reaches better insert performance than red-black trees and +better removal performance than red-black and AVL trees at appoximately 10e5 +elements. + +Compared to hash tables, HAMT query times start at 2x vs. GLib's `HashTable` +and 20x vs. `hsearch(3)` (the latter still being investigated) and then get +progressively worse. This makes sense, given the O(1) vs. O(log N) expectations +between the different approaches. + +For detailed performance comparison with AVL and red-black trees (from `libavl`) and the HashTree from GLib, see [the benchmarking repo][hamt_bench_github]. + + # Introduction A *hash array mapped trie (HAMT)* is a data structure that can be used to From 20ead338a728de04ffdc635505db96ec2451580a Mon Sep 17 00:00:00 2001 From: Marc Kirchner Date: Tue, 2 Jan 2024 22:46:50 +0400 Subject: [PATCH 15/17] Add benchmark plot --- doc/img/benchmark.png | Bin 0 -> 584961 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 doc/img/benchmark.png diff --git a/doc/img/benchmark.png b/doc/img/benchmark.png new file mode 100644 index 0000000000000000000000000000000000000000..d5d6673f250a057d2091e4ab2616185d5d791da6 GIT binary patch literal 584961 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

cyjI#*<T`h@(k?a>1h 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

KE9H_v9=v(waQG(u-H`70)ZUza)6?kN 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 literal 0 HcmV?d00001 From 2c65f7354e4b3afc821592969fdef96660c02215 Mon Sep 17 00:00:00 2001 From: Marc Kirchner Date: Tue, 2 Jan 2024 22:50:14 +0400 Subject: [PATCH 16/17] readme update --- README.md | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 45fe156..0f268a0 100644 --- a/README.md +++ b/README.md @@ -51,12 +51,14 @@ and 20x vs. `hsearch(3)` (the latter still being investigated) and then get progressively worse. This makes sense, given the O(1) vs. O(log N) expectations between the different approaches. +Note that benchmarking and optimization is an ongoing effort and please take +all numbers with a pinch of salt. All measurements have so far been collected +on a single system (Apple MBP M2 Max under Ventura 13.4.1). + For detailed performance comparison with AVL and red-black trees (from `libavl`) and the HashTree from GLib, see [the benchmarking repo][hamt_bench_github]. - - # Introduction A *hash array mapped trie (HAMT)* is a data structure that can be used to From a0eb2a44db499422b0394f4b0bf7ed7a6ed37ecf Mon Sep 17 00:00:00 2001 From: Marc Kirchner Date: Fri, 5 Jan 2024 13:55:14 +0400 Subject: [PATCH 17/17] add alignment guarantees to static char arrays --- test/test_hamt.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/test/test_hamt.c b/test/test_hamt.c index 2537ab6..af9537f 100644 --- a/test/test_hamt.c +++ b/test/test_hamt.c @@ -800,10 +800,11 @@ MU_TEST_CASE(test_setget_zero) */ /* add a single key */ - char key[] = "the_key"; - char value[] = "the_value"; + char key[] __attribute__ ((aligned (8))) = "the_key"; + char value[] __attribute__ ((aligned (8))) = "the_value"; const char *val = hamt_set(t, key, value); MU_ASSERT(hamt_size(t) == 1, "wrong size after set"); + MU_ASSERT(strcmp(val, value) == 0, "values are not the same"); MU_ASSERT(val == value, "value should point to the original value"); /* make sure we can find it */ val = hamt_get(t, key);

%5((#+ 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ⅅ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%0A$^~Qf= z`12PT{RSI^7iR_XcUf167@G~)9jBXHdjmA%#jlHKh(>~gSfNobdX*~V3uwDBj}e>S zK#8$455l=LkB&ZvgdK$yFMR$-j$#5sXUIMpKWfe!#P>CVvBZSR_H*63B$HssE;~3a~&~f2LOrd&hKELXsvB-PJf@ZwkjRr zI=C}OM8GuF!D^i{3tAA%G#)0PqOF6a{1bO)gGMe47tmgzr5wu$-nNBbttD32BfjD}l&}Dl>=YDP3)9ZnR%h(I6M& zR`DCQRs!i4mC5uXw!|05=lLCdQ$b4({>p{56n&7|9p<`id=uD`p)cGSuj7=6_SU^6 zGQx5pyNt}|_li+a*WX}{-+zLLqVyMlzL~{sBRhZnVL4_>Tk!>n&gS z(#JeYJz`0@w&5LKm^;603ZLQ~IUL44%2;dQ1gA;;=2cnq?55{Da%%8Q%Ro_9WNWx+ zJ>m(-Yk{uKHeK{gb(Bnj7d`ppwdSPPAqV2n$t1&=$Dze(%~;)}J(d}r<)^A+Npqt` z)bTpNut*ms;O^>clc`wx(tOertoWNcPcf_SuUTY5Z{SXcBXNCE2A&1njggR%L*8=L zmW)0tC+fH9d>mDA6-v3;O)Wg7GCh25x_jc)G)nx=%j`dLEYmGM(>vMB)U?WOfvetr zX$V*lGgobbXl7x}oTPHv;JHA@3i9&0jN~34?!C6sEC_`CecLL* zj%%U@o@)q2{2Mpd*G_vC4JV5(^?JlyS@-YGS^Qs1&h|#~gNg*@+79(823d zXrai~EO2YkK;>_80G;GZe#UGIuEWu>+0l8zw%?#xF=zTbKVY>d8KT=C!#?J&<*p40CYt!~Ea`H{rL{~SA6?!F%OLc6htv!)q(EJh+;!@OXT4?5S zcmYokDCv@(LV?=FCQX+cv6uG`gQp!{Fkxkxi#vfMMT&e*paPyJXR|!@Nz-G?k^=Y2 zoi1qZgHZNVPU;(NrD?5wD(s!f!y@Nlydu`-nToJmZ>Hu~C9zwq!C_T9esh8twwwvy z!m<5!-EQK=b5sXQ0JKnpv7Fah{L83(Y&gRSLpWN&!Ep|~$_1)WQ&U4yAN=(zi{-EH z*8LAD+CRs6B^1UlwH9cAy4Ugm;Bdsj#b&dS3d&nQ#iYTu9yN~=HNL#OK5Tps{%xJ( z?l|%*sSF$l|nI?Bz)*=g&F*Tikg^D{- ze!4Q)QnB?K52q7YkzJs(%R90Py(0vdaREn|R}!}|RSP(^qgu~rbZwWKlSW2HBs-SV zIc-u|jGkRzS30m9E;c2URW^qYCQ!3mjFFt(G{dBA*wRt~JIm?Ts0*Q{fx#Fex$n;y z;fH~7;m46GqwZbTtmK19x3IhV+3SvskIx~E$9Fs!(b8}nyS^WP4ITkWK&rGE_jPWF zGXfsSA_ko#5+>cqg~H)n4>wKY#V3k%%nW^_u^aK_hdmne3`n?0fNII=1%+Ljla)oQ z>&b_0IWjzIg^TC>l> z)v`xtgniS0(xonFS~(qxQ=1lvNS1(O$Wum0qYLff*g z#^7W>TV`JjD$;7;m2?qIG}Fe^eyL__rl8=qgbn6Ub!x@o-_x@wy*JZftk!yUb0n}u znl6?0=lGj-xPC;FBf-{P#D|gxe)XMGU>rPh<}lP}RCsMs_BlDH)0sj4f;oy?6(5_G5$x=BLR5`&vvCf3jqbsb3=!i%XYP9 zm?^)sv~>RX`}a5V^>(t#%CD`gtmbU%Rqa-MPti6vH}8PWcExH3jAOM6Fuj2La|WHd z;(4biNijV=lEA>gckkaTtEf1aGBPvA0FSH2xEGnJ^{C7HE|IZ6owBL*qTi?p25mrE z`$OOC^Iscdkuw5P1a6t7bP3``&B?H$bp^|L!_ifJWGjr!xY^ZaBMxceNCky1jWqyc zAt6ii@LE?cmKz`=M}NBKk`biwWF4=H{65HtK7XWVpH5CKJ+EJL3(Gh8fKH)IZBkmt zKGXxB*x}hW2VFMlY}QBooegvK^W_2YMSlny^dYHh8ZBOkmk((Pco!iU>(~Q`7Lr ze%O6lxVagR9gQ3-1M*@wn^f@WUbsUpVb)30u(jbbh+Tx4h}E)LxT zb+pgp|G2vH#ADKvHZr1UafiL7r48HIFgXSN1B=(ApXi*AfZNKA}*i=5o~$*D!xB(schDdG}tz%qDYPX8+yU-CPVR&X;6sNUk}ZM>%bi!VeB=Shn=e|Nq^Yi3P5ic+6u>j(UiTO%&Ss^yv_%U{jq>BBCUfLJ& zK#1R4@!TL+92&6Om?JrwA~?^+(6eG?NYV3=twG@>kg_U)&FFW>Yqrt$OWSNrJbcMz z7DBR)YIVar$^m5<(34e+7FxFxTZjX+7x8pr^gi^}(FxGHQT5tW12Y%2`pr{TkyJdX zSD^NuUkdRmM8UnUd^$qp4@HdfCaX%Hkp@fM(a4`ZD=tRG`~h2*4GY>ereTv8z&g9vI5@7m=ZGau49qlcM327x1UE0Pri45x#+2b-IQ?;P z-n^__Gr-}{)7BsVM5-QM_eJgfWv2nG|Flt6NMh;{ZQdPL@}Y{AAfDc9NO?w7fH+=4P1&uAm4u1&;&WB zB_>Y2nH?A&hTLDSfZT1zGI=@M-`p=?D++Yx1Uw8jyX`%pp`~3LnstjN(y=R}lXb5-miUz#Ou~}KLD#my3 zz5+dNmUmljaik`8ZD#h~{J^I|@nMT{%j|z3ib(!GexIH0w8>@-7Z{-izf{7hN_Oi{ z^g#$O@U97x(FNR%gw1dI)hkE|SGHux_<*%nt=-lbc<_9}Gi>S)AhB8KTa(~mz}>Vq z7oCtn3B5I~Dh0T>Gbew;4F@h0`ba`%~}XK4f7*)n$ujBQ6vfPZ!_{FnO>K1 zK~30P3eefE8*hGIvWJ#|+DqN{I{+UyUD6(-fn+qvAh7#Yv5kqI9#WL!@BF8zz}uo% zS%bvcU~se22u85de=Y_$r~rZqaPNUu&7!cJC8zhWee4cD+nJtK{Sek2s(WbqyX+7s zHayfxYTBL~{ep|^4w@BVCH^lN9rR`+#_e~Q!%8f|-t%W9er(8;kyE#VQ75SAzbm|v zB)s0+T3h_%p#kohViJ0pd~x^=$ij^xaEvX4zez>Sc32_>6fYR3GwQ4Wt1Ol(v3AKs zSJvag;KHyzbsX^J3~h*yw6Qg%Do!vkqnYRV;0tX15Efn+dL#ic=?n1G;C*Kx zP8LR~_4zrZjgGBqXO4>y;>+94^CeQAA_}Ok2UB5a88bX~hkiSouI-M+lkT5SPMkF= zoU<4C-1oKW<`ZsBEHW4tvtqy0a+E0u8MH3**3XQaQ;ewty@0lhjqs!W`EEx?U5}Y@ z=@O2l`n(+hyM0M^YH3X#hJKL4E%%aw9E@--=nz<4gCEiX|B>*kVet=6k8=**o?iRU zXhg#XdZV+JCg`ugP+c%pAze7K>ccArT91>@DOvd8x2qbKxcQ~q(ENZ(xBss zJ^vDl*GXMNnogaiGI$nv+mlP#O6Y4!%Y}Ma$?Ts$e{BEM^jh5kybq9D_|KaGYD>>` zLc(5u?~IkvwOZFj_PjrkVOiI0(dxEJVNHNb5)T=k7(_X^(hMWEdd$H!z&P^t?wSuz zja8PeAH2FOEMF)3n}EbCCOA%B1zUO&$3WRHvVfOF^5@UY1;RwHAi246JRmSbypSw> z`G8f|i%2A-C&lMnIAuhR54T4V73&eSv!}MRh)QaYizg&R8^aFw{I6lto)LG!m~NCV zHWRVYhjT+1<3f@E<9_-kDLjH|WvrP0K16k)1?PQ$nIvE)x@f!Q5ZE!}=No$Ki@q%A14yu=dJj&(w3ufRwXH9{Tmh%3Tmeyy z$4lq^25INZm&O(4-M0xkekTEL-`TeR9F$2q#b4n}6bj-msoYwegyYh)5JjOcG`quO z`X529Hr4dNjI>;P?=H)XRQ^^3ncY#6531-?#7IR(^!7F|XV(GlI);8Wo;4XF6_Z#O zo1^2qZ$XG!5%FCZ?E@G;I&jmB%~xwNPp6{@Uw(fw!LAJ#L-?a#cLjpY&8)JfW;a8O z;o6ZrslZ$Y?fP!!-mkvzFOi{J=N<0@49)iaVpfT9^lVx&<)bEyO=b>}7VoY#*knnVzdvLE4$7V3mXjse^DwlF z<6p0Ocj|1o6P$-lZM~=yA~_7W_RVKeX6_f%kGtw_uj@w9rlS=@QH>1_FJ4%hb+%y2 z2ai-ph$-U)!#W;^^0*CqjGZ3{LF}GR)A@>%k0)iOlVOtet^s%u;YDfV_PvfI3eqku z-$zVf0hBkedoLxAW@FSpq^rp#tFO4V&FcP7k>}+Oq}qwohLC@)Uw1X=^wTW&r?PCC zA2dpF`P6p$ufk+0fqhW7j~P{sQlyw4wqcXoRmQy4{?uB;baPc`3~x{5E4KObvL;l#A6vm#K3GhTZZ`m97`$3b1g=c- zlSi^`U%njWm3Im0uCnLj&n2G9S~1fpjQrGde0`*NQmT^^;jzbjY;})j?I%(Joy|3~ zp4HW6bE1XtM@m)17Z}5{3T9ElHMqF!tUK8Eu}cHpZb(#QO{vFx>(W1J|8tMdZFg~e9 z!<}0mS385s+T1TAou@GqCQ83%OM=tC$dS|`iIBLQn4k$eB8uUug(_+Ux85x?`q4 zd~}R?j!mjMXr4G$3kI2 z{pIrt;Tz1H)3MXl;&cj$KnT6j0WJ&FnCFaG>Ar2yK4@LsA^riC+Rcq%GtJ=h?F#?d z@v*qjEh?!d={ zY`Kz|^mpt0u8!7TARs)g;sB+_OlBH7=*SUhN({Z!0{l+EwaLzja7`t}FLocY4Ka); z1>IH=QkKZHJvZr-r`*!aU{&4E`c}9wQZ}7%>DxU1j*k1J~?F)7LY0j(_hA zW9SGdxP`%-c+X#8D9__U$-puXpasdZge~lD$*U|!m~Q7Q{M8EOJLCOuJ*=i$jcnzg zSYOpZGme=7Jq=)+H<=t?X;G)e1=iBM zM$K@|P?N!hGDM7y!RIC(N+EOmW7rx`rsx_S#1R3H2Bmk!J65jxn(4AZ&ut?PD%FZ= zK12FsI6LT&x3)2!CiZYk&SR$u z-{5#8)Q)ek-KosU&P7k6_lkHW*tY-hqegyuo=H0n>1C(6bK6chr4T;)JJTVYyKiV> zo1Z3e53>bdd7X$j7YgoI1q{^2eA;LIjK(YsIRn-ZM&<*rx6Z16v;)>Um|9ry+oGVM zZFW6AHYBQ9t#^uzarf@xuXekT=GnAmW9GR7SVRX48A~fGLpnMoP*+TTd#Q2Mw7z@s z*>kJpgq+vmqn~L5aFV+^)j*t|r10yW`(5P}gAdeuts%JmBb|yY@7$%A0tkR86%ECc z-kR+q{S)@SJk=*Qelfv@IsVIKZTm?;u#UvT}uWJ;jeXeTcip=!pu3q|~ zQp)2&I?iYTxTEJX3{-4v7g!9J)8{h$o#I1bNb0v3vB$rtGT$c-s~AAh&; z;^uOI>uV05xzhd!Y$@<{?o%|tge`6o+XOC-$ty?2YrPPV&?aPp@agj;0$WtSDmcJJ z$3nP~4;Z&I#c5f7QKX;B3~U!M5B|((0aNZsCDFi3$8i~;?B}Yi?*GO zGfJ>8I~M?m&2k;^kku_9#7tO&;j2EgW5v@(o&Nm9%=$Lo+#quJWoi*z#k_zA_P94uSemWV=f zhEjZPmWQL39K?&<{T%+Sgt!v}jvY6ncdWkmzJWrn4rd-?n+iYNjHf1J zNx%pGKWx2qP?deuE{uVQlqiU_f`Bwgw@OKOcXxNINT>9s1?lc?0cnx$*mP~W*__|T z=Y8ipbH00qzt9=xUia$jy4J9$fk7O7pzLUjY40Q#Qy8@Y=`W4#-7jf(!6f70lf5}h zOj44@u9KyuWy+;Y;;MtvrA^(Da+(@#8LCd zzzXTRE=9o%_3C`L=znFhFn~-JWdQCY;f@O<6K)xXNuBLR3&n{~03XP4Pdn=661Crg zm*`$W3D+HAXPf?-kz}dv0~?-_aOsW1c{K`lQgpDBwMN~V-rsY-d%GgWnt}AyT6}zn`S(`Z(Zy!D?y8Hv@WNO8#ZSAzJPgY zJte5e2L-vF4#~1hIibAUpuk*V*OSHy)ju$6vAI?dgrU^ z1P~pLq6;U5sCf0R-V!YNNV{@w^SE17WvBDFcO~uWSL(FW`u&NY^-=Ynsaw||rwe!5 zwXohVhW%a%k7qmGzgu?mepFs$69gM)Jd^Xw%kjJx@vQclnWXaacRA~hj{V);D6#q0 z4Y#TM?4lD~&q=+Gu`7%R%p)D##H;zg`VpqUoTs?{rUAXl4@Jc@J_d+j1}flpE&Lqo z6Z8mF!5L{w1wiXEsniu~AJ+g8QKp@>ymRCLRzUnS<%M)A@tz*>vl9)Ku(1OX?(K;a zW7nL0bpzp!JV3=8n~x5mK7qfG^{o>^F{*Op4HGYlv{xgliSR=0YsvTdMWg&edoo(p zCNGjoNa1eVm=<(X0N3waC)KZ+0#o`*b&-XeS6Tt$?OF!!Gol zh)aFylB-M?!FUD)1+;ZF{>M0n=JMJ>u5LL?vVaSb*O2c+5uq{nRB!>}bY}`$DwQ+B z?0#&D)Z9n2cty7!@{ZK(c~9V<&*~*q-)z%BMKL~G|5x2@>vkqzpJ`1~Oijsip!IKc zB+JVx6#^Qq*VW~ztu5@zck*h2q}7jNrUK z-0apcnW_mS#aku%8aR%PgyQR!JfEH@l$&Bt4e_tP%N~*5B()Qb|^9-ttW1qBOlRt*MLryzF8FjAHu zL|XBz)d+?S)SO8sU?5Z_k3s7nw&0yvmo7qp()EF-vuOf*YT+0#1tTLB_HKt2qs; zQUW8I;qf9Np~v}M0wJL)s7`#HIjp){1xI(DVtbjdl9+2R>(s335}8FVHYP`QC<@QFF|f)qK2G=G1?>y$UH2IOmz4S@k(_(RhzIGu?WuQ^D6QVs(JuXpNU{!oY zL(`Ak!Mq-EU${?cqn4BrJ@+>jL*~sW+CjwQ)BnZ~OKRoMs_?nJsE8}3G}j#xB**Yx za!#iJTXH==oA+RRPFb6V^u+f1+^)EOEB{elGdV5Rsx7QhE1~d|`^4k0ycm7+<@l$6 z-NDnU?-x#>2dZ%d+}b%GI^&UR8|H?K(mX(Pe#ySce*IODz|HX^Ycbe$BwX})ADWAW zBfT7_PUa}y7B+m}(MTFxFIT86{^G`;`SrafMw6I?V0FF06pllyvx0o$)ZD7Wy~v}V z?*gB$zl3P?%}x^=Az#qB-nbn`J=f~0+MJ7^B}oiw6Mgm?p-Sc1z!tmiBh#wykb3@@ zs$jIm*-FOq_;6!5T0EYS3Od}~x_3RLurea^-19~VD}0OS=UZFLi=LmOF=1>;yRwOE zQcKu6p?*#}tob3~l&*i@d@XKxA@%>QMtp5;cLu0n$#_OIa2D$2#E*u4rH!TsOWT@(p9XOfTa3HtEcwfG?u@ z7LuSm+RkQc;U^S7%)gUih`sFvlqlTDu8TIg|#qqIN{Rfz*7xbOlhKhsDDwr^gW zoxl{_84jEXt<0Zt|2Us6U_QDzP@++P?2Dp$vD&?olU0jLihx#|o&BlT7(&Pyg%z|L zu69xcoO^4S7nRL(W5{UF$Aa~^*x|BT`s8lR%?X|xtT}*-8nvkf*+FbB-#=MjMJ^qa z`$Rr#vTmqvaKv}eBBAZcYhH0gJy$Gs8e~A{2}K68SFNrSd@nBY?Aajo%mdH^kO1Hz z3mO)ak4b$WXPA2DbAtvZt4|sb7dO?ZtuaI1cMmKF3)qEtPhY-{wmx0V9b{&weRKT; z^nu9_*pj4Zf~C*p9sBVtl;##}8m~^s4G#^kMZ<)$tZKUtfoG3#G2$q&XuCCBlkYK|B>|tfHD=;RTa@Z@)+yMpENIV zY$Wp$gen}7#C1{OdhNg1S$nFu^+a)cnnUM-sY&4a!4DZby?#FoZtJ_U$Sw*%fyS?= zqk&wuo);yd4_Ek@q2Pz5Pv^?))i=l?*{2?iYZ>`RauzHp8<26F8F(H&Put*d@s z=4HUUuYid6ACt8Zer2t6;%xl?L3Bv(vTqZR-qJf}JUWEq38klaBvCL@6OY;I8$ByO`%G;_w91a?KZm^-JEm{Xjrwx+Dv}x zdVuw{bD5R$`bWUyCaZiDQ724hmG(UwJ<#CEv)KIx+LZgbj1*$?Z>zbLtNxgyzGU%_ z?5SCtD^PiWQCklfrSb@sRRax<^M5-_IVsCWuB11W8?zuX%^hiQ9RMNocCZj2gk229~&%i-POglA$Ke1*k}+d0qEE z5TGhpGdZrt^0eHp<_{3B3R5cI!k*@#$P5k@R2mgp-IDjbzOvZ0sJYbZuLrnj4kQMV zKBz0y_lZP8@OTZT5Z;)fGVRKs5sTyHAlv3*O%&Wa8tF+Mp0JlnYC()W?TEWMNl5WyKEeCnZQ7wRCz;KcF|MM<*HF7pqyqdp7+$^Ld6Hq>vqmw1mn` zq_!6S-*SKo-N-8$^E56yuUt-f6nAIUG6#%{7hvSP4Npm8 zRp-oj`()_J)P|0Dcp$WGMyh3ez>2_V+L1SHa{-oJ+U~S`2la!Drfs}Z(_J;g z)u@j0UhsO$@Jyj&uPMH?0d@#{89Uam)C$w`3Wo+QpN;y7;>ydnyvq{8aVjY?Mc@p? z#^p9@^QMTSoE!$*GJ*ZGh-jys-}om3-0lg>Wwk?# zCtTOzkhsV<;!6!rO&o?R5O_l*XiVd{j8kzJTIMlgbKy?5qLQ^QZCKblxU)#)cTn4> z#fY$2KJ{cUcK{ctCe+ghoCuI~D!Lt>#St~8Rqgtui>qi`_(-U6NUBYwPhS7IKXS0F z?wBj9$H^F)aF8Oq$!fxi!0&-E&3D9@CWXhP_>`NiYAw8_IGKc$lr$n!l=-bG+lJ!)3C{S^77Z z1XkuL#Az?dam}1`W^Zi>D#C^`Z)$5*BHU9%AKRVw%+{OH_6#f?UFC3DHr(7WJ`T0L zZAohY;##z8p6}bIWB=)wU6z?V4zUS$CV0g@^gD3t~5!a}U+5~kBMYh=H5x;xX;(_=UJf`Fjc4NtRm07d>cGmmuR zp>n}RqbT8ZZ!eziRTqN%-eyRvNg6k&89AfHVzRDzcKtS(Nj- z)>|bdX@jp+3qa#2;x}yFrY=Ai+E5Bm5p<(IWr}&!+-njCsHB$J^*-_Y#JmZ>QU}EE z9>%KA$&wd?Q!8M}AU0c-@^g;olYnEo_Ie+KNtlYIVHV6~c1hrISN@91H{yMJE z{05N(o=#pa-8U+LRWg$^`}^m7)CPL^$%*q8|NLzxPw4j{`@8&!6@B50JnefU6F+lyYyRy(s1sP%aeY-Cx z{(}C#$H|Ib)nK?xBen*_zx?MVRTjL6^CQjj697G*RlhEJ#TSNLGL-R#YQ{)&;x(S# zrWRKE*fv7#n2M|AYXiI{nw+b+U`+JU%X3$GpUX~U4^zYCh5TpFJ~iE7?%?7A%UU;n z`AwA?Y53yvD1GS?F=u_Dh=S6O@Qlpnn4j*xP1d(XijN+AQPCFry`sV7xHI|Qx2Q*- z{W};8|I*_5G~JZ)w{i9nPtDW@Z=Ku4;c7y%;_B{v6A#t>4p$qWs1bN{reGZd4Ulxh z`B*Co>f;dcmOSm72LlJ!{7(Gy>SFtNcQpwiB8%qHq}Ukma6l@} zE3~v}is2ik{Sh}K7_8+>4U?zy6THVpqf7HBJ6+WGNm?`ZL#?@cRod+G2;hfM-^!qO(e|v z552v?)gHe1^U));fRYdPzwZn>ND1(SGGYSBtu;VYe5+)=Ha3Ca*+?SlP-Fip7B5Xu z-f}X4a|u{V80|D{&x%W?{1J!~ARz$1ATb>1Bfs*)<6?HEqdgz!g(BOVv@oKn$Lv8{1klS>5AT)(v5P&a+^E$iHfbH~;G>^dBCoxTJPQ8Yblv3EEGX$4D))E^{NWt*>Q*96 zmjU@sQ3-dPR=XD6+fK!#EKOS6}NVO@W%0B(2n8Y01yRxbJB;bMheYpcl z{#pNfVaihbRm7;NlVZ;l5U+iBSqu!bomOL2ls#@b@pNj(Y)-bu-ca0BK&=c7-{5K5 zei=Cj03z%cFPyiW^!3Rs#tZGX)pH`uuFu!%{*-DszQ4Jw$=5-gn*x(aA25Ro%L5Qf zBhu!9h@pWujBIt|t|{>x9h7rjD-#P;#iAu$r0GBxyQcs5t`2PRK<7+BuevT2f!mv+ zzi~78Xmj1hzzDD zcmUs8t81P+7vpHJ_VeRg|J!7|Di&e^>8;V3(%2ZzFjOKRiX!8Ik6G3~BD}0#Odj!h z@;+{Ex%apFxW zy}#X()He|!Z8GRpQwHvyeVVNzE|{`A`Ro65K3glyfITTJ3vg?8SxnD`d86dt2aO$^ zRlO?mA8M#+lNkAUi}3{5ceb87Z^5JHYuT5syO;cWFa|U>cooCFiEaUE*Klnb@&3uO zikvYT@4XXBwePW{eJrqLD0VjNCELJv{_e_Sxnh@Ui{G_(p z7+K)PBIp{OB4yE?Wizdu79siZG|XlSPA4*?-QC+!rShO2;O~6+c|#={MBTv5N?Yy& zoGQ)sI!XeZQ$guGA0iVAoA;NApz&0PPg!_@n8R{6J8sq zj|Qg(z(oVqgA38OxB1Op+-a?^DEZHxXg$JkARyn$88uxRyxr9W@^rPA4os$FfOW$G zG$wht#W;CrCB?*kN~Q!CmHsgcy`5yPbl;>|5D4q)!ds&K{QSz^u*P|9zi`>my`_RtYXziY?Z1A;Hs919m@tpxRjF8b2Xr}4;+3+_2J?ypelPbbgPH|z z9tdR6#lsDR1yzuL^Cke-fcJ7Evr5}ytsioJal_K1-QY}L(sY_QavmCrZryToYTixa zx!-2abB~P*u$MLo@f=0Gt~!y2@7kmP)|~)mm+>QuRC;lyo752SADL8?#tBIO3-Y*F z{Qf?H*VdhNB|m%H$pM@*)ve)eer0Xw35%&4v|iiOS;D9N+OW;Rpdv{U$NLDQo3SpY z(Ph3=PpHaZEfGU*>thXvegLwQ^`^|J zO~&)KKhx8*`%Rqp{tIvts8dxAh)kyiDW}vwy*q~hP_YaJ6}kRl%QHJ7Q5g9x%SH zFhZBDFXry<+>FiVWNF@)W>s(*z7w3+uU}We>GbsUcrR9>5kEQMd}$|^bj);b5k#IU`TQ@a-sAr$B!Pn2;a|PF&(=;>)i|ckAJrY zmc8^A-d+p^ZyEG&TpYwy8~zr#rnH5iQOydqltKTPI)(9azveZ79(a7yR>ZsJ8~AAYxlF8f9xMoM8vV{Gkao z3nEz-9~Pd6$m<@Vly3Xz-mE)_mwhlxuWqQ4(bI`8O z8kJZY|4VB|Y_`ew@cue#mlK$C1ntfGIo}LYy`oDN;P=K$>fCYmDUu%QteIDWo*%CE zF+(IVuO6Ol^(6_1&mcWQxi~OQdRx=|N=V|3!*(1?O>^-O2HotbXw&6C9`yt$G40nT zOvu3P1)#?upX^}ouuo&fwLN|FNq(bQ9RO{b6UvL*)Zs&kyVbdF*fz_<>8R{a-5pep z%iv+`-iX8$=l}u4%ClbFz(-@*QiSsI@>@>f)C$>5E_<5s%-iEd2FDx2FT=+0JRcz= z4+EY;a7c)llvJm2LGw$!>+=IT)za2o;xB-?3hj2#WtK{MIll+qOw8TmefgipGO-*ypcu7N|-exp~AYnI0*UIR7%QBh)q^W0x?Wg_4DGSt_x(i^^z>h%S{c*SX}FqP0uA+|AluLx3W{aimX^7Az>46 z&VCibXp68hi!omIdX^dt>kxIV7IWctwodDu9Z>Chz`TGw)7Z44Haq&-OXN<`sqHqeIO@_7J$JOyFDe7aD^u}-G8_3(Nkvywv|ulNblJ5<+0v#b z3I^FJG(wgTorGvgEyfFpy%`O~n+pF#Pn1LTj6>h&Bc2PQPN2~YFx-ZA8IDB$w9K5NY;@*c^p%ECO-$k|o2w=sT zQy*=&+>{&NBYop3GBJyWS`_%fghN*@>Fxf2t}1L^veur6Cyuh>C;|uPswXBeCjCL- z=02ZN{h|7h4fS>~^|m_BjKBi3XeLy^bt&vgiS>_fniJSn5wj1lF&NqSzW1qwyG&La zu8=M3&$ziFWJP{KzW3%0%z|yDYPlimb4tnd($f9WgXLv?XW0C1>5vr1+%JG}-#o>8 zgH)wHaD8!vVBH8@?|0-uLG}1cs2h#sqoCl$#d=!OFT6K0FQ?d|E?jhe_oq4Ay{%c> zlk(aAr?x9yGWluROrY^q@rUGBDq^b&f05R~SH0e@&QEyv{+8#vI(Vc=c~I5ywN#~XR&ZBn-0F^{cZ z9|hg)`>p{J+1to+RQ7&$tKF-#p_2-2Xvvv2IqbHej`J@N z*JfxwVaS+vDTK33TGD|zp&lvnB!_9t$S=h^d0~-f3c{K1a^mHVx0&f6Y%uZ!g}&U$ zC_nzev~=1TiB$r?wNT{c+DFZ{Y9g$dzL9!z>`W|!?wNrt`fqf+1#+~MsI@pXa-UaS z@!~LnmE5Wo^*I{9P6cMch2ik4km+C9>}Z@gb#>zowCsG@$#$yZgAb(P^Ny{)uFNFF z;0?BxS?v=(Q^;8;Kvdu$Ligm+w}PgwAH+BaptmEE^4)RB%hTPy5gCC2wh2uKk%@!D z!{sYj%Q_$mLczZ_97^TGgnD{;LEafX83M9HgWCka`;Bo9+hBleZgdPSmP8-)@k~IW2Z{n zpN?-jb$-iy%{Xd}v-~D%fsCX&ZY)0NFT*p6;a3XO&eQA0Pqmf%tE=Zq>*OHf1{HRj zZC1x0J-{SGKx8z#@PV+)+5YoiXIoIjm=5Kgc*V;HJgx5pAf&FXkdKKg3$9(O?lM68^Nd!!%On0I zH7w4tjS6O3)B}Fo>B*)ue+kaeauE4YU2J-O&9-aS5#6ODPs_OKKLe@(NYPc)+3Hbu z@`FjbVg+KjwB*34guYU@&D#?iM|>>ZB1>Ophx@^+X|Sjw*@OH1jvss}Wo3R#X)*so z8HL>`Dt$A3tr(n9tBwCQF*ZM+hTUrV*AKyfw+sv-B@@q|Kkq=s(|jL*Nlb98-W@?| z0@Avnp`k8&5>R-^u$U-DC*gg`SW+**X>Ey$iV6}wbaeXx3g(}tD+nxcr+>+yhtAEt zzN5NN=lU}P@eJ$vzrmmo6cD}~QWJGJgq@SZn)>3)54vsUv}_EmDzf5gqm z<4M&R3{5*NVR-ehv`kRO{(cH0Q8*p7 z?*74z5Mdu8Xfrc2J6(P7d%FGxqQSGC_x~j3pM7xU3W$J!TYLxMM13e)uw|zbOBw}h z_6dH3Qtj!{pku0fDX9Xz7#~8Ke>bS<;4EsuZje&Lju|K|7O4%ubsF7I$oBde|D3ap ze0yJje|q~6Y-g`Cb1-L$XvCwMsClMHkcrBA@cymxNzz`!x6J{$%M&WKEM{Q7Hd zMr^vuxA3{BjByV;;#%_bDe?OT?+2!HMO5ld@X#Tp+5@aRBrpA8$kaD<5(TKMnHe>y z=l(t8iaHSu=l4u4XT;$HJtqukXe)p(@>4(1ly&Vm8a1biB3n6A>A9T?V_y0tq_0E-Kj%TO!(U+v9_#HaUc z`+!1CZ6O-Jd!5vns$_RW^x2*Vpd)MV)>0rfdO#l2aL8AVMBId5ymvnPHp8Na8=1r_tWe;+Zq z?zF5rT8{Gdtl;Vd2ON-D7&d=3;W@o8ihEd5(W9&^vbF1iV9Ppgi_azxC7S5x=b<|f z`VEkNP+QCEh!bZM?)IeSU((14Q-H7WSiVJMSRPl|l&H4@O0hq876g}ziQnu_eGr!0 zjb)$xF>V^TIU81e^XN}84C$l3{*bx-I_NEkDYKO~j|(?Xe0JtsJm0u@-5yNzpHiBQ z&9G^~=5_~PT3Rw$>)K}GD@ZX@ym|BU>9cc+Z{Kvq1Mm5ob-kR?wIyd~UvxIP3NCS( z6U&)zs2=EtVQpTDsc*hXaXjvu8cColRrH{~|89(B(*Z{&gYUaEjnn^{hHlLnmH%eHR_u{r zA^E{?zY)WH@?CI;&J(p}m133qgtNP+Q1xC}qDCpSQ#1$CD!P9_(wN}?p-X8bP?H^5 zuv=1CNJz+E*yJV%ph&=z{3G?0J+!z%`mEYOkhPUrkEvJaKi_Y7s zJdT^svNpfFWlFrMTHHD`KDkTp>?=;r_ebU5NZRBZEnQy})?Ge`iHjpi5di(yUM&=p z1l}q0qada6Mnk3{?C)Rs;^s?pWCdX%%Ao9C!RyoQTX9i?j&$e?ZD(W~`0pHBkK;=h zI#$PD=f7@}CS`}YH)_#al5FOxlQ{+kNOO7(Un#3_1PC0;>Ce<)advT-U@G_=lWRiO zRnr>^u(j(@w69+OnvRg(vpV=wP9-F2gp|CL^3e4B#<2P3QTf6dzbA`Hc9W)s7RD-} zPNwIPg(7S^JXRdTqTvCmp`m=WCoW4|iSgy%)$^}E z(PfFA3&r>Pote_bc3uWNW)s%ycB_^v0<0!vXm6Ukkq*~I!Bv}abKi?7>;J-#IcAcp zn-6{YMuUN3-j#y0JKRHv`5fhyfnrzYp>}$qD{v_0UKw4NJE* zYHj!Z^^1Y2Gy{gOh)#9CT_b6G~=FBMZ}A zewV%T?D2n;2&)Si40%;O3eU6A|F$BcBBp5EUsG_cZo_$@|Zq}iHRw7c7I*g09)0aLRYWI_{nQM+k-P) ztsGq37(>gyzw{l}7#J8@;G4v;e_jLk6|#Y)L&xWxdGKcU8JuPa$q8xI&(9gzhyUP{ zI?gt>KVI-z5YJwf42_(<=-=D?u{FrE>2-5*uiLe+H^F@&!Va`iDwC=fT#p%jP_$b} z<(ZL)2)PSxDtAzaXI2RHk#p?vaGrV%dHk;5)H3rbDO8Ng*W%%#Kw>N$@6 z&b7&U1coK~GHe*2H`PI7l<7YP44eugMn;>rVf9@%1 z+@PJG1-zZb?4d${K2>?(*nH@if^+*ZMeVuD{T2OX+P*he)o!(9m$T}KFXShVG%hHt z!Gr%Lv8loJRP^kR?Z$g`Xl7@Yrd@Z6q(-@=CE9a*lcG6P_|mWyZ(Wh~?=r|eEFHHi zvSJ-|Ud-4OANiu9%Igi$%IjtCWYyaq_|!-=Mk@N`vB;P0ub z&AjgOBN?AS=;VWNI}fkMU4=B0Q@{971EY1UZoBi&%O~)YgOoS)CV$E%80pt6V49MD z3L+j2vGcru?o$bf4f$g{2tSZa>K(n>>qv=a36Bl?F8+x5L{KL7wPvUr=y!(2PRxGp<2y&KAd4PwXxP4(5v?BP6pCl~%+cQi6Q+mqB;1@8}@`0m^N$g0vLt}^9B4*$IEPc7TZf4A3u^a0omhmMTOTTe%K z&hd_@{0IF71+RD(*E1w0O3lY;uDx$Gg@p$3s*M0Y4gPuJ78dlO+b?6P5sIdhkuFKx z-}RBs>>wh-dVMKO$v4~q^2q15`ohz8z|pBV1!+gyb*U#d{8R|rYrX)!8}RAgaW2G~67cmg9+wHNS*5ICx-ltwL9dTbPVW4XA{ zFN+?ub%)&9;P)>TGtzVhS)S$9-Iz4jxrR?p4BUF|kIzx=H{QcC{w;M%f3!a&c3Yuv z=Y9$8d5E+P9E(+|2!TwixkEw;hHnYhiXyWY7Yh)a3%1o#iho zGP}C=<)6Dd7j#(C&a^p|z68n{cS9@r_mKt`Ztp2u=-|l{n$n&|RiuX?9~dXHi{@HM z-TIEj%yil;xZ<|B_RVZQHX%w$T^Mfv+i?XMR+P||X16GIBb11vYug=P62|_1B-WUd z)ZKi+MpJD~;;0EfhBV%w-3q;-a!ID)X;G{?-9ON=)YovjN{8Bi)Na1o!`0+fAjYD) zPxU?hvLY=LEW{rXK^bWDw`9D(=H!|Z(GnU}BR7x+;KBS8rQYjESLF;#^rb%48uQk5 zg`xG^CKM)FlU=5sEz;9-?IyU&aNufiC^VZrK+#!vFXJ%-+3o&r)i4_~s57}h?8G+J znX>>FIs+s6=udB?6O8d64biDe^+S1f-(ko1G@+S1wZ&i&qI>tS+b$4hlX-MOvwSrj zF1--e$>1Zb-Zn~(&LW(?;_a+F+e2di_GM-wqTT_n=V>|QwiOyD<3!I(k-&`>UGnTF z&U08Ldieq$mdn~^L;%9ZzxOwHm=V^)#{T|#bZ2g$LIAEqfJySn!m~2>TOaKFg^F`nQam#`2P=r50?CF^)eG>rY}gHBUOjg@?AKwO zJgM6ew`$Y|T9z_L4yjO?CS^;@@e^coln^28^r&U`;ap)!pf;Z?*%&3Ll2w&;fizj90x-roS=B?DYe|JmEUT^ zPiIj&JTzSI$JcCr>z-I%ayUQGd)izW(_fISxA9RE;bfWOON#$l?%w|sDup@bdwVVB z!)I8opW6simb>;Y?+NTduY9;Z@1paMTM>Ak4ph_~l|yPzmgaNqER({i(lQQs7AVz* z@zBK~j|LR3aRx0+gfqUcO^_?HWs{0mN%>MSx{(VsT&A!ZpV6<2Q9x8w+LpKM-|6%9 z1DZk=$9!w0*~sXPvd{`|mB}2MrRxsIv9mKexAn;hY~}Bab@v}(bdeM&=k?-+JsgVF z5a3DgyuC&3d2#7?&R2XuE&XU!^#z;HnJ{;nw|gsdaWYXhe1*SpBs*JED5{u?a!T2|buG zBSqRmSfx%BxNE}DxJH2Y*0PNmI{o*+H$c30KZ8f=^vJhuwz z48e2gp@^4NRpq3-q97xCE;{$ci}%PEhR%8Grvo?qvnmxI!r`+LP3JwLl&J|pa_m;{ zT>4(bTUO=#$4)!Grv+5SGYkpb(y=|VL^Ii^q_;ug-K3MK*?_ zwMU8}FFVbu$Ab^qjB10SxCM|hONt+b8@Yupja>Lyo(2<}9j>HD)h43RXGLxhkPT%T0r0NKHNl=nb)$Ygm_qd&T&Q8IHsbvwtRQiYQogD)M zCB=6!PG&tO0;G9h9SaxOkPBpTb(`I0zUu?gh0LYJFO^-QA>y^y;StPUo59#tGKORo zmI0*AvV%SXP4VB1u(-#W7CS6V_Ad(7@+BtTZfV~>30t_PY|^Mk`m=2}%sMbssaB+^ zKQUa%<{O;YSUItdiX2(^8X3OU0cXjSp6 zpMBdbKEv>ED&DcosF@c(uGX+yU)7s=!RFy22NK_u*Ds+MLiFe0@^b7GVm znr$7`t>`LvW1jG~k$^Ow{|c7&%AcFdo5*;P_9@;AM~&8dYMjIoT#dG6zYn6E<{bHT zgon1nl8fhD?gy-YI%Gn1cGyw%WwhN0t+u!_A2fCQ7X-Pk?n^)Y1iQbS6Ky718~;=f zy*(Z$`l1^DrM1KH6C6Z>Q;>wq%p%MQ9+3|+qCAY(hdGwFBO_*EE*@T*j!^o-##7>2 zzEtL7X~SzJ_Otzq0PXcE!6LzM`kp8IVM+1!a%zK|iq75}K*O}F0hWEW>V)Lz!N)3f z#%y4WhL)_JSS`w_$kr%5z(}Xj8Bx*%5u{LPwM!UQ1(oFuj&tQx^oO2ltJ0x$0o6hm*UUv5mz8^4lJ+Pj<;Aw4>#;+ts|69)? znc;9w%5}BY|N83mEZT0j>P?i`sm;`<3tvLc<4X~D9v+b_!}ytj7(a=GGEX)mTIFaZ zSx%bm6uMM^Er{w_8Scj1zfLx)^nWMKGyf3o(#HD4i@WP}$2uqG!Htz;v#gXSY%_wK zRqu%B8LxPh@}*#b$P*Vs!ubtuO?W*^e%tOASLW)!vSejv+p_K{*-)74Mfp6JkSBl- zCra7cUE-Z1y14J(6*!gt8EDX=+Nx}K>K59G;w@6>v2QIT+TXnRY~J-MpyxNSHj|{` zJ6oav6dj&^6_N!pmv#dCYbjcZi@#22f#**5k4yu1=OmytEm9MtX~^jvuq?Ow2sI-q zI_7-SS&}7PVUkF1s!Wv^46EG}bN%yXMzuvaA^Di4wU-&4ocfCqMRy>~DQ(lN4!SI{KM10Q!tE2r|$CKNj zb~_>h_)&}LO()|cB7=v%k{4}QkLk2|LGAw;`u-wqsne#ttpzD^huv%rFZ<;EV;-*S zb*=OAzQB37x4T5hRD;`t)!S1F^V7ZdvfUqe(k3@kTwwA!fC!4!rqm=YKA>xxiUE2( zURS5jvv=td2b;fAKVUd=F%m8e+p?)gk1&`zwzkRu6=PIY4$QK`7Y8ePkxQP4t5>&n zW?x9BE&7BYo2LnCC)l%p3@Vy`FMegm%u4Ia>U0FHD%XxtQEDD*75$IJiaxvbM_uXM z2xsFW_5(92#Iw?<)L?@(1V8u5V_ZlZKR1}cDJ>;9 z@ErU5u#!%5+O(I4NaJ-@&0MkW)=N{E)S(JiGylpqb4&M%1qZ{@Zr@mybB5XVc#Y}B zK?F*&&H0Vw4V>?x3LR;8zJE{kCHK!}M~+eJd+9Y(f_!~r)Q?ov;5AKo|A^daWM zD>js|Vngw9VmAVD1=AX95(wOC|2 zj^)DlG|y*frP!>1QrGJg9B8yZw8*PtKW#BlR7rXrzfQdAb$3SUJ&Igi|&Z%lVRO(k6*3fK=Z88nnJMF(-^t_S8Ljt11 zJ9U|gVMsf9+baeF3#~ua+B(=2${)-g&BxNw4HD(_zR?O>xFQ)i^Ym%G@So_5f!$!W zjTLm46Ye&+b_oY&xfTEf>+hi(@l1Yy~lnZ zC3Whf%7NQ7J0iEC-!KrtVpX(%5~;lz7a#(-N4!`k;_ijv zoGFZBe{RI-rTe*!yjj>=$a`R){&=pWq~Ui&*I~;z@-gT@6ULnN*3PwE#s0aDh|UZC ze1oiG<(7c=JvU~^io`QgHYXmX23dw~IAKqL>)_kCBO?fn;919*sh&LD8EHIkl?ifk z$*Srv9K$=xo)P#clFA+UyDqPZqo?KC8>MARlW%3RbZ9_8r{=Ru5gi|_0Xrp6(SmkB zpfP^@3f3Loo!5sx%+J>z^;ezYpmMm8rT@zfGH1u*ti4p_u85Kr$iy1GvAYD{L<{`B z@b19N*00EDsuji<6ci>c4T*A*-HjR+(mXaYALcn#$jR*C=DBYLGFJ()Ql<{=GrDWW z_rWy$Z!{;{hC?G_$}&^KKu*hfot_?AwB`ZJ+MHRycm3Qgxara?wGk!JRg&v?Qr+fH z+IH!Y-f)jr?~n5Gh9D7} z@{e}|6B7x*ep5(Gi?~cRbZu=d^N47%&W(2S5Jje;aDu7UW!N#LmReAJ+-cP6RP6vTm_xw-h3}btUl|Jwt>$FhTgZ3+Lm#%Jj%( zT!ufU zFK|Ike>NwYpOds@`fU*TLmckJyMY<;zCEU^vo)xy@$~kr4tFf6jtff(y=wdHWyfqi zU_-k%*wty$Y1Bmlp|x+x$;r&KwAk2?(5SK>x3^f7*xSTe;)6ESeQVpdH36i&0*;es z3O0$I>&3~weWSu3DHG$;ZbJQUFS}YF%vy`X;FL>!41_Hie~0DJwp&mL_k4w@f~4{2 zJy^_mUbc#5-MZtnGNTievv57d7=Cf+i|fl$n;td;HR{cv09i*0%nIvuN6i#fRE|a! zWaN~T*cKC{6xL-S3Y?4Aw;Va&vap-FqemQw0?xlUbElP%HP@WPT!<0DC4&RRN`1-k zR7!0{ofm_OJBYbCGj<6$Ie*@sbr^8YzLbh09b*QO3-O|R_Wb*qB92dqJ*t5lDSF-? z(FvnEV*5XIeRWinZTGc^f=G#UD~)tFC@C!s(kN+#3-O@hG01m^C2q!@-KxN7=qy@`)|P8 zWG60r!`AY|HzUef=Wb$n`eF{Ulr}rFY-C*?jl5{bR$SJIQ4409%nM7yuFUQ7xzp#m zY;ye4Q>jzii@U&@h+dZLSNNtgWTq0Yw8hhRgY?c<)PpbBfpse*aWE{~Jl_raWd?Jj zHRI`?{?{jH*f^(g7B&VQ{$2DX0-YYZZUjE>LWegE&u6Q(T$cj@IQWmz2Kc=n@fi-! z5ycB*Pt~Md{2NK8JEd<^5s7gx>aWXF6HX?@;1LIa%zHmk{`0Zcht$>AOz}kbQF1Me z4sfU}_Wgjw=I5HEosyJWW=CUH)Tw0zq$uRC5WYDkE1Q^pib?%2;9+u@MPBbF(eYCW zhp~H=?^lb`W|e@)#nFfedW=*a0+G`9@BKmBr-*5fW&SjW3}a%JYsyjUBaNjoL%2nf zsxIlQEzeUI+C{be(Nbgw4pR!damZ{`S%kE;mlKd5&%XYR% z9=&|zm&UEs#M#xwh3e7xC$6zp(r080wl^fKGWtJrF8O*T`F0$l@in{)l4Gcm0qcg- zg8o4YS+~cDr@?GOS3|z1r1v*1itHYYz_-`mC4GEfLe~_xVgiU9x#k}*oQz@|W+#g{ z1uvI&iN5TS*zdKkpftPnvuKljx+U_J_4kX*EOW? z=X|3_XaA-w6JeM6kPx(Jw*C~Cu+W+i1aGCG6G95I!TxpP)b$wpb3aDn=j}-g3V$mz z%|rC#o7GYq;+AX#rD_bF8>&5bBB=e=&le+AT+y!3Bays$9dyJ~*1{<93ayUaD)+DY zDL~wl2Yd@~F|na|Gd$A~t8-5UZEXP~=IZ|4&FE9LRg|OqG~AO@QU~et`vlDCW32h| z3COtthpOgX{B>icYtpmfSPCTH06N!-a%poT#2|fikJM}HROt>{)nLV|+sAmUWm`4x zw8h`<-0`-kb$gEGU6G>{fYp-m`+Gy^2`(=FMhp#*N*UK2c8jl`%~J$brr}=EdkYsk z`3WWSOSMy4HhMv47=b9d7C{T-@xPw9KEKHFlPj(k@pn8|5*XFD7oQq!jZiYf2hDQ`eh&+0@@S`r##T)O|A5o8}zfuM|oazY4e0lr0J5(+9vt9 zI`V~%FTKqu#=(Mhb+3;zHMpek34s-n0@aUK@&Qq_H#=&*po3YvqAyRP;BPYn6Ayw! zn7+YaCu9hqq$!!omS7KrCmQI_WqJJ-;~C+742lW8b{niV2Z{{83dXN&T7V{d{70K| zKl9b9|3oLK88U?4D086Ap8n0^O2~(YOM}?1L8mOs!i!jLuX9uNWpK;475&$id}Gz! zA*;P}5!4N6i7npKP&Qk2q6&3FITomC=1~C!R*JOzFkHU7l4s4Eq2;e_bo16lm{cs_ zRvYekS1U%8yrh+Vz8d`$!Ht3Iv5-sMKY5P|%|{M~jmLpmHZVj?)X4Q^pNRsyhxIJ3BahB# znj2R9AVEOUkX2~>Akgvk4o|6}@D4FAm6xaVgPBr8&5DYbMaPfFmB#Ppac})I;c4zp z5_{b@BUjZYBulXNJh5~@ggdnu7EX{VuJEX^Cs6{R&F{u|19x0*KLF3?fpPI{i5~@Q-u?1_ zsAN>3@-y<{N*`8(oVvrSQ$Gk;bZxN2-X%PXJPUr`gzB2Tdt_wYZks-<;Y6bkSzfUX zlNP4UJ}`tj)C*(bG^fX|Ktn_~AmeAi1dGp0XcSx5E^}8Zk!^bZw&8L1VQfsL(eybi zcmf%(Gv4W5W^xWPc&SL`f@ydg6Hb}lO{V3EBXl}PQdO486Qu$JCVMdcVZVEFkLSED zBR(@bZ4`yOLiS1DvbE?bPg1jD%+z!YPZFv^SGKa`d(_YM=~{Ak$fme!;cib z1W-25(^U3@1u-{oEC*u*+;tUZ$`Lte+Z#mZwYVM0M-M2$&{7sxOQZ-}K3hR$iZt56 z6Fp#mREc(D0&v5uLBtQu@360uxM)X>{&2d8w#!iiU0pvx_q0SQ=H;4j`J-h}hiMrG ze1mNkYts5R)*_XRS+&xA?#L&6?z!~P?`|5F4j(hNN^2twRlt&Gt-F^U{flj8r9XIM>*FOMNLJRQ&}N++|CcCR_j>5r~&DJg3eKG_mmUseur*4HQgvhOON zZoJerJDlcUa%W>p0B*KP#FF_#SMz{frODSorX;5ai-Q8RxE>X*Y0qvex7*%^w9(6y zb@gj$Ephg`4fBKYVt#2i!0hQJX-e=n;+*?Qx7kNjJ6$e8)32SQhskXr8KNpc>X+&Pg!?`uukb*?-XE{&aj8l z2CFk~`A8l&rp8|WY!J{XyPsQB;C8s+R(3gX-T#D~S?7ZpnI7PhoT?k&cDdLXTgcO9 zS0ocuyvyX1wd3IPe6n?(;N)?myx05jw!5;(yQ%bOr|GCqV0wQLhFn!~Wg1N#385Vv zdGI79N?NHt;~P9^0^mb{v`&Gwb5(jQ*5x`=dE_|Z>95`kJb1tRPGDOfw)Zqc#}+Pu z?w;}Y^Zh}sSuMB{;=n%RDm(h%h5bkXPn4}{*!}88OQiFrtAk>CY%#Li)@fzX9aa7e zTSor2qIQ#oNELx$GAJ(IJ=#f~P@T2^q(@esXB(T}d^TUB-K}tJ)VL){Fa2HxDUlm#3n{h1 zxSNIqF2^0@um*xpcxALfUZ(kZ zK+RhHqw1#?+zvpdpBQB072c<&W8(7xC(HQl!Z)7~+6PWv^jq4+42kTHxQm;HJGhMc zD^z9KOeq~3L^jRcBUkMkIK>okhdaqaM^R?S>;@^#?L%Hsx9{+*3n|Bt~3H z2V7>uF7v*Ga;nB$$JTE%*F#nGv$L~u+y1k2b24gbQzLZTk|Nv|({0K`!PwXy6=Oag zWScMetVi!Z6KgZ68dj&f#(d?pBq8s$ksR@b=T7pI0*yM=vDN6~!6P0c#_rZ=5X#wo zpbwY)m=OdDlj);rDkw~nP{SB}pdJ#mAW*dFuQ5ayYSQsqw`JbOIa z;>?&+zGyk3Mq4wEt!M99e~y^EVwG1sJKVPK z)(IUG+HIWLU1ut0$}(}MeM=|lZG+gR_YIi|^lhS84HG59a2}EkS?cdN1d)@G85Y=X zSe88&w`?vn%8?d%+~PKO4t&Rra8QZU1mp?mz>VMJsYM9Ho2;l0%T}lLhJ%jJZ>cH{ z)O7Q9;xgMMQReiyH&3-9MtQ>bR%T{xHTw$CA?aUf7|U>iaF4 zSaJ7iwG74t^#?8Iy?Hd3l3I{8*^s)=#Dq1A7%><;ueb*;pQ2~5-uEXX4-0d^+|Hi$ zA8^u0@ng4v>2Ht~Y6~==$LOSB9u-Dpu{(DM6Ws>!xZQ0wCVcv~ObXb8xcA1L;9=8a z&;8<&`y1w4m#jp(Ff`V|c^Q}VXc4G=Xm#$QALp|3FYg&C^L+U>+r}3fk}#BbEmm5+ z#u8u0$qff1#!gv9gJ%ge&D>$V*;q75a&XrrUZduM!pq3Dx88WD(1E@kLrN?d|?D+$}J255-#leWTK(aZv+%u zNkWEH#`p6I$fiTx%)wJJ=UQ=6d0))Tcqn~gZen9|_|pmu=MEBV@ch7g5B!1y{*WSq zKW=Ii{U!Z8nWwXfm(#vXdeY@D=p>b}m3Ok5FR(*8*EQr>IpmU`nP2uQd-vGLs?`?t zu}-tcv5q<3K$cr9>UO&3sh?SV{G7PLGT*Vg#D(YInybI;(EH)PD8~Q5hCJ$a@25~C zYGkk-RdBU~+3317;RjDC@rR20guruy` z+c$vFu-l|;*`HTSd;k9Z*t)@KJEihqk`(I__{mFTWDOt{!9ZV*ImVBGv03#&b>*Qz zH!W%*Z$Dz!pKo;B@|PH3p+Lr{Nwe1eik!4-dmGpGH>y;h<*xQ2L} zF5k5O)b6m)HP8Pj$d~_5gDOfDgc|($s#w=1tIBvOZarFEkR$xD*$tn~UIbQ^x9#j? zKLlT%+!(fG@zcF;Vq2 z|GBTP4+{?mK%F{?z{|J8iKpj6d)*{twa(DzO4ldn$Vc@~AHqWEYaFP*lRms~cDeL5 ztg>zj^k?$6+tUGSNKQWxx^8QBULIx{+k{*MJm;P~64vGXl!(2dr$e>hro?oI#qiFg z`=t5cC*>*b%7v@A86s7UE5A3pqr3eJj+l>WqYVrl{ImPNnOq5S`*FG5TcDd@9^~aF zk(#Fgo3Fw4Tl1r$o2M!i#SL;vYEeKszY>b=gwvXLW#a;{Ch%Denun$}Q34_ZBWgj? z&aY^>%Ufw0+UD=s*{Mg@CquT;|Gi;Rqbh}e$S116u0-9g1k((n>l2#>d#qv%d=F?b z^m@YL`(DZR4{Cjkvj+7~X>Fy&1+0y42IhU{z?YBqdOb%0!1%;os;R@KF`HeZBbhz# zo_fUW?SUaA2i=Z&kJ6<%xE4#56aY z%7opjps2_is5C~$<^ArCIj4(9=Vs01;hu>$C3CTq7=`>d>Y#4JX3;H0E7`T z&$E=5RQ2^X*|}Go_Vx?D`dbFbu>alP&nDe}VVi~~RSX~p#t)!ud&c1#135n|C-Iai zS#N4otB;3U7TY%ZYLqstiY!-gcj=H^W!&Q~3XwC7QE<}DD0p!ixo5FO;HagLpZVx@D3u`FOOV-a)VZ?0uIzmjpl)RaAJtoT zz#GFiia4b07OJ=}HyZe^?iX_;_t2Nr`F3w0hxMe+N%W*ij@ZKK!e3 z=NgcmhZG>7XP{xraG+cr&Ek7L6xCk|@Ls#pL>b#%`Q5smXCZR0u^}<_F6~4J3`DBE zwsBT!5|EO}BmLMyr>Y`}#D~L>%Rta|cDTOPV?eMQ`o*~R_!Qm}^70IFdkzEoZI;jBsl9THWm z{7%fmVwVW?9=(f-1;J1U;Qe zdGuE$oaN@$S%5mfu)okZ3Ix0i9FRu&Qm;EIB>myA69cYex&2cZ$1;{%h9R_fs5w41 z7TPmdPXyuT^5OdP=8X*O>#HQ#0gwt{8lwNLBh7&C`2TIIsO?Pv56HuoA(oO<^@YJM z;eF%D4m44#wp(q8uIpL4_9L5Ab*zcIAk8Gg;y0sv*(M%1``B={W9WI4I5<^a$7G-F z?L$P#w49E+O0?= z^0&f2{T^PKe`EA{0!`z`Jw{5R%JW9g^Je-0Sqsg-z$o9H7vnW^r~>|p&Nj5qnZ*>< zE&E%J$iYszK$A{b@q|$A3#s3hyVmkNUiU}~IW^t!bO|c82LA7(i^s+j*D6}Z24HYq z^94ddQ@YIb*e z=#pl~e4hV3&vU!sx#-=F5i1_pj{E4S+-*JUc7_yfx#dTQ%h9`2ck~!bXN5-cxSD`A z{Xj*+lM`TWnMKyk4H!DK??~aG*8$;O;v>Mu6^snb0G@hA*J?xF0|AZs>6HN04RA#8C ze?mfn($k-VgM*!`#~%`9@u{@$^&#Z*@{OK;Ir`()nWW$(e!nA`+Hl2|V1O|N?2^~q z45jsJzMUb#4YJ#7>g6E3tg1A;(q>UJex~snDavG<6@dtvxBdbnA?dWadI_T+pEpB?`&m};rKB(q7!Rqg8_y+Tw;l`Jcaj}Fyj`P>2 zk!{>6L=skf0;hKs<}>F$=a+wES&#d=SFhRBbeM-!LL=sYO&pwRHGtYgrX}?eWJasT zKu^?^J@g@JwPKSC{kTu0#mH0+ZCN_s&SHgWV88IqjD=z?TR;u`+cbU0V)MRUedtOT zJJuST@s6^!_OBowhYh`yxJ@Hh;3rECA2guB@&mA*faGOrEb-Fqp>~)5N(7LYheWHI z{ld`aK2$XTTE;AC#{4trV)vOlM8~G2I9x=NQ?c0%K3He*qm3yaTL*(yhJqNg_2^0B zE0y_6B+DJc+AtyBxc#b-`vg(4F<2n}P68bk{ZNtJvXvyy7 z1#0;Mva?+j6+H>FMg|n1)PGsv&j-)tzr4U^+8ixp$Qg;O<76qQkL~kAQD7i|BDB{q zI1Apq*afaalFei5skh`L-MNEzn0+VNC9~sVI?}-O)i94#$|};N((2g2JUlFk&4m%T za=w4OPzh|y1dEia^759Vr$e~WR)xzzNtDNBhRSf$Hxp-Wm3LwD zm|(QtS`H22N$%tYa&AjK?CBdSmW;lC85P1 zc;h-6zlFkgntaD-KF3i7ol=4PS}PJrEh^RbfWjZh5sHQ5NQT634lYLUhk$}Kw}Ujd zpEMUj%02s>;~<&8MTqLt+9}WxG)V*$NC^L=6l8*%+R~{r(GdSeN}o0);X))u_hW|( z)w{x$x1V*K!-;ICa5w+v645rXb`_4_H?qTBkzdANtJk8CF zg~;$YWe>H@0Bb`_>&A6`ZPT%yqLpRyKPE`V`*#=ygGbsxGF<4;Z0)$T+VpqEN&bOC z(bk+nUaaNqeh294DhKqLGc%hG=R{35nzi_WS+)I#zROpDE=yCsp$@M#H8~4ZERfMZ zj-><{4icQ4p8m1Gnx&Km=i_nk{M}Jt0HApqPc=ENr`ud&g|sXMMl?kwQ0b&;_r)im zvAVC;St9ncZ=JZY2%XdJ-Q2(>qS9-MZwp-Np}j(orCK3csQi8+O9&e@;w2!A8al