uint32_t djb2(uint8_t *str) {
    uint32_t hash = 5381;
    int32_t c;

    while (c = *str++) {#include 
        hash = hash * 33 + c;
    }

    return hash;
}