diff --git a/.gitignore b/.gitignore index 7aea54f..458a336 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1 @@ -vs_trash/ -*.vs \ No newline at end of file +assets/shader/*.dep diff --git a/CMakeLists.txt b/CMakeLists.txt index 75292b1..719582e 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -41,6 +41,7 @@ target_include_directories(stb_image INTERFACE libs/stb) function(add_shader name) set(INPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/assets/shader/${name}.slang) set(OUTPUT_FILE ${CMAKE_CURRENT_SOURCE_DIR}/assets/shader/${name}.h) + set(DEP_FILE ${CMAKE_CURRENT_SOURCE_DIR}/assets/shader/${name}.dep) if (SLANGC) if (CMAKE_BUILD_TYPE STREQUAL "Debug") @@ -51,8 +52,8 @@ function(add_shader name) add_custom_command( OUTPUT ${OUTPUT_FILE} - COMMAND ${SLANGC} -target spirv -validate-uniformity -o ${OUTPUT_FILE} -source-embed-style u8 -source-embed-name SPIRV_${name} ${SLANG_FLAGS} -- ${INPUT_FILE} - DEPENDS ${INPUT_FILE} + COMMAND ${SLANGC} -target spirv -validate-uniformity -o ${OUTPUT_FILE} -depfile ${DEP_FILE} -source-embed-style u8 -source-embed-name SPIRV_${name} ${SLANG_FLAGS} -- ${INPUT_FILE} + DEPFILE ${DEP_FILE} ) endif() diff --git a/assets/shader/basic.h b/assets/shader/basic.h index d8d6511..2105da6 100644 --- a/assets/shader/basic.h +++ b/assets/shader/basic.h @@ -1,6 +1,6 @@ const unsigned char SPIRV_basic[] = { - 0x03, 0x02, 0x23, 0x07, 0x00, 0x05, 0x01, 0x00, 0x28, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x02, 0x23, 0x07, 0x00, 0x05, 0x01, 0x00, 0x28, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x06, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x4c, 0x53, 0x4c, 0x2e, 0x73, 0x74, 0x64, 0x2e, 0x34, 0x35, 0x30, 0x00, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x03, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, @@ -22,147 +22,158 @@ const unsigned char SPIRV_basic[] = 0x00, 0x00, 0x00, 0x66, 0x6f, 0x76, 0x79, 0x5f, 0x64, 0x65, 0x67, 0x72, 0x65, 0x65, 0x73, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x5f, 0x78, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x63, 0x61, - 0x6d, 0x65, 0x72, 0x61, 0x5f, 0x79, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x5f, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x70, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x00, 0x00, - 0x00, 0x05, 0x00, 0x05, 0x00, 0x03, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x00, - 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x00, 0x00, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x2e, - 0x75, 0x76, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x76, 0x65, - 0x72, 0x74, 0x65, 0x78, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x2e, - 0x75, 0x76, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x74, 0x65, 0x78, 0x31, 0x00, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x00, - 0x05, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x50, - 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, - 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x05, 0x00, 0x06, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x5f, - 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, - 0x0b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, - 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, - 0x0f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x00, - 0x00, 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0f, 0x00, - 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, - 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, - 0x0c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, - 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x00, 0x21, 0x00, - 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x13, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, - 0x17, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, - 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x17, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, - 0x00, 0x20, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1e, 0x00, - 0x08, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, - 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, - 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x2b, - 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, - 0x16, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, - 0x00, 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x23, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x2b, 0x00, 0x04, - 0x00, 0x13, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x6f, 0x12, 0x83, 0x3a, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, - 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0xbf, 0x2c, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x29, - 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, - 0x00, 0x15, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, - 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x1b, 0x00, 0x03, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2f, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, - 0x00, 0x1b, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, - 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x15, - 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, - 0x24, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, - 0x00, 0x14, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x24, 0x00, - 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x24, - 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, - 0x00, 0x34, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x06, 0x00, - 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x3d, - 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, - 0x00, 0x39, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x3a, 0x00, - 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, - 0x3b, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3e, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3f, - 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, - 0x00, 0x40, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x42, - 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, - 0x7f, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, - 0x00, 0x14, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x24, 0x00, - 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x24, - 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, - 0x14, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, - 0x00, 0x45, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x22, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x46, 0x00, - 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x1e, - 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, - 0x00, 0x4c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x13, 0x00, - 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x88, - 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, - 0x88, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, - 0x00, 0x50, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x24, 0x00, - 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x51, - 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x22, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, - 0x00, 0x32, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x92, 0x00, 0x05, 0x00, 0x22, 0x00, 0x00, 0x00, 0x53, 0x00, - 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, 0x54, - 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x85, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x29, 0x00, 0x00, - 0x00, 0x4f, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x37, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x15, 0x00, 0x00, 0x00, 0x57, - 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x14, 0x00, 0x00, 0x00, - 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, - 0x00, 0x14, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0xf7, 0x00, - 0x03, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x0b, 0x00, 0x36, 0x00, 0x00, 0x00, 0x5b, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, - 0x00, 0x5f, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x3a, 0x00, - 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5a, - 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, - 0x61, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x4f, 0x00, - 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x5c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, - 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5a, 0x00, - 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x5b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xf8, - 0x00, 0x02, 0x00, 0x5a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x0d, 0x00, 0x15, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, - 0x60, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, - 0x00, 0x5d, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x5b, 0x00, - 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x05, - 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x36, 0x00, 0x05, 0x00, - 0x11, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, - 0x00, 0x65, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x0e, 0x00, - 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x57, - 0x00, 0x06, 0x00, 0x14, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, - 0x00, 0x38, 0x00, 0x01, 0x00, + 0x6d, 0x65, 0x72, 0x61, 0x5f, 0x79, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x07, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x5f, 0x64, 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x00, + 0x06, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x5f, + 0x74, 0x69, 0x6c, 0x74, 0x00, 0x06, 0x00, 0x06, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6d, 0x61, + 0x70, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x03, 0x00, 0x00, 0x00, 0x63, + 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x6d, 0x61, 0x69, + 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x2e, 0x75, 0x76, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x75, 0x76, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x74, 0x65, 0x78, 0x31, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x10, 0x00, 0x00, + 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x65, 0x6e, + 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, + 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x05, 0x00, 0x06, 0x00, + 0x0b, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x00, + 0x00, 0x47, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x47, 0x00, + 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, + 0x00, 0x03, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, + 0x05, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, + 0x00, 0x05, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, + 0x00, 0x48, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, + 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x14, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, + 0x00, 0x18, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, + 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, + 0x05, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x21, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x13, 0x00, 0x02, 0x00, 0x11, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x12, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, + 0x00, 0x16, 0x00, 0x03, 0x00, 0x13, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x14, 0x00, + 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x13, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, + 0x00, 0x15, 0x00, 0x04, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, + 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1a, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x09, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, + 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x13, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x0f, + 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, + 0x00, 0x16, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x21, + 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x23, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, + 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x16, + 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, + 0x27, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, + 0x00, 0x0a, 0xd7, 0x23, 0x3c, 0x20, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x14, 0x00, + 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, + 0x2c, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x2d, 0x00, + 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2d, + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x17, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, + 0x00, 0x1b, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1b, 0x00, + 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x0a, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, + 0x04, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x2e, + 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, + 0x0d, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x15, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, + 0x00, 0x2c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x31, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, + 0x00, 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x33, 0x00, 0x00, 0x00, 0x3d, + 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, + 0x18, 0x00, 0x00, 0x00, 0x35, 0x00, 0x00, 0x00, 0x34, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, + 0x00, 0x36, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x37, 0x00, + 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x09, + 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x14, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, + 0x41, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x00, + 0x00, 0x3d, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x41, 0x00, + 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x3d, + 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, + 0x00, 0x13, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x13, 0x00, + 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x41, + 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, + 0x00, 0x13, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x13, 0x00, + 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x0c, + 0x00, 0x06, 0x00, 0x13, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, + 0x00, 0x7f, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x85, 0x00, + 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x7f, + 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, + 0x13, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, + 0x00, 0x13, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x50, 0x00, + 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, + 0x00, 0x14, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x45, 0x00, + 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x23, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x4c, + 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, + 0x00, 0x13, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x13, 0x00, + 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x41, + 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x13, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, + 0x00, 0x13, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x06, 0x00, 0x13, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x55, + 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x56, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, + 0x00, 0x54, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x58, 0x00, + 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x14, + 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, + 0x20, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x23, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, + 0x00, 0x5a, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x92, 0x00, 0x05, 0x00, 0x23, 0x00, + 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x15, + 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x37, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x36, 0x00, 0x00, + 0x00, 0x36, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x15, 0x00, + 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x14, + 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x24, 0x00, 0x00, 0x00, + 0x90, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, + 0x00, 0xf7, 0x00, 0x03, 0x00, 0x62, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x0b, 0x00, 0x35, 0x00, + 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x65, + 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x67, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, + 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, + 0x02, 0x00, 0x62, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x66, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x15, + 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x62, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x65, 0x00, 0x00, + 0x00, 0x4f, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x62, 0x00, 0x00, 0x00, 0xf8, + 0x00, 0x02, 0x00, 0x64, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x15, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, + 0x38, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, + 0x00, 0x62, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x63, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x62, 0x00, + 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x62, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x0d, 0x00, 0x15, 0x00, 0x00, 0x00, 0x6c, + 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, + 0x6a, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, + 0x00, 0x63, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x3e, 0x00, + 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, 0x36, + 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, + 0x00, 0x0e, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x0c, 0x00, + 0x00, 0x00, 0x57, 0x00, 0x06, 0x00, 0x14, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x6e, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, + 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, }; -const size_t SPIRV_basic_sizeInBytes = 3064; +const size_t SPIRV_basic_sizeInBytes = 3276; diff --git a/assets/shader/basic.slang b/assets/shader/basic.slang index b724cd5..cae75bc 100644 --- a/assets/shader/basic.slang +++ b/assets/shader/basic.slang @@ -1,3 +1,5 @@ +#include "common.slang" + struct VertexShaderInput { // Per Vertex uint vertex_id : SV_VertexID; @@ -18,46 +20,15 @@ struct PixelShaderOutput { float4 color : SV_TARGET; }; -[[vk::binding(0, 1)]] -cbuffer constants { - float aspect_ratio; - float fovy_degrees; - float camera_x; - float camera_y; - float camera_z; - uint map_width; -}; - -float4x4 projection(float fovy, float aspect, float near) { - float g = 1.0 / tan(fovy * 0.5); - - return { - g / aspect, 0, 0, 0, - 0, g, 0, 0, - 0, 0, 0, near, - 0, 0, 1, 0, - }; -} - -float4x4 view(float3 pos) { - return { - 1, 0, 0, -pos.x, - 0, 1, 0, -pos.y, - 0, 0, 1, -pos.z, - 0, 0, 0, 1, - }; -} - [shader("vertex")] VertexShaderOutput main_vertex(VertexShaderInput input) { VertexShaderOutput output; - float fovy = radians(fovy_degrees); - float4x4 view_matrix = view(float3(camera_x, -camera_y, camera_z)); - float4x4 projection_matrix = projection(fovy, aspect_ratio, 0.001); + float4x4 view_matrix = view(float3(camera_x, camera_y, 0), radians(camera_tilt), camera_distance); + float4x4 projection_matrix = projection(radians(fovy_degrees), aspect_ratio, NEAR_PLANE); float4x4 view_projection_matrix = mul(projection_matrix, view_matrix); - output.pos = mul(view_projection_matrix, float4(input.pos_size.xy * float2(1, -1) + input.pos.xy, 0, 1)); + output.pos = mul(view_projection_matrix, float4(input.pos_size.xy + input.pos.xy, 0, 1)); switch(input.vertex_id) { case 0: output.uv = input.uv0uv1.xy; break; diff --git a/assets/shader/common.slang b/assets/shader/common.slang new file mode 100644 index 0000000..e23ed0d --- /dev/null +++ b/assets/shader/common.slang @@ -0,0 +1,35 @@ +#define NEAR_PLANE (0.01f) + +[[vk::binding(0, 1)]] +cbuffer constants { + float aspect_ratio; + float fovy_degrees; + float camera_x; + float camera_y; + float camera_distance; + float camera_tilt; + uint map_width; +}; + +float4x4 projection(float fovy, float aspect, float near) { + float g = 1.0 / tan(fovy * 0.5); + + return { + g / aspect, 0, 0, 0, + 0, g, 0, 0, + 0, 0, 0, near, + 0, 0, 1, 0, + }; +} + +float4x4 view(float3 player_pos, float tilt, float camera_distance) { + float s, c; + sincos(-tilt, s, c); + + return float4x4( + 1, 0, 0, -player_pos.x, + 0, c, s, c * -player_pos.y, + 0, -s, c, s * player_pos.y + camera_distance, + 0, 0, 0, 1 + ); +} diff --git a/assets/shader/world.h b/assets/shader/world.h index aeaa9fa..c6cf32d 100644 --- a/assets/shader/world.h +++ b/assets/shader/world.h @@ -1,6 +1,6 @@ const unsigned char SPIRV_world[] = { - 0x03, 0x02, 0x23, 0x07, 0x00, 0x05, 0x01, 0x00, 0x28, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x03, 0x02, 0x23, 0x07, 0x00, 0x05, 0x01, 0x00, 0x28, 0x00, 0x00, 0x00, 0xaf, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x4b, 0x11, 0x00, 0x00, 0x11, 0x00, 0x02, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x0b, 0x00, 0x53, 0x50, 0x56, 0x5f, 0x4b, 0x48, 0x52, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x62, 0x75, 0x66, 0x66, 0x65, 0x72, 0x5f, 0x73, 0x74, 0x6f, 0x72, 0x61, 0x67, 0x65, 0x5f, 0x63, 0x6c, 0x61, 0x73, 0x73, @@ -23,234 +23,247 @@ const unsigned char SPIRV_world[] = 0x72, 0x65, 0x65, 0x73, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x5f, 0x78, 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x5f, 0x79, 0x00, 0x00, 0x00, 0x00, 0x06, - 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x5f, 0x7a, - 0x00, 0x00, 0x00, 0x00, 0x06, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x70, - 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x03, 0x00, 0x00, 0x00, 0x63, 0x6f, - 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00, 0x74, - 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, - 0x74, 0x69, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, - 0x00, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x14, 0x00, - 0x00, 0x00, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, 0x65, 0x64, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, - 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, 0x00, 0x74, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x66, - 0x6f, 0x73, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x06, 0x00, 0x00, 0x00, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, - 0x69, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x74, 0x65, - 0x78, 0x2e, 0x75, 0x76, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x02, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x5f, - 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x00, 0x05, 0x00, 0x05, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, - 0x74, 0x2e, 0x75, 0x76, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x74, 0x65, 0x78, - 0x31, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x15, 0x00, 0x00, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, - 0x64, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, - 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, - 0x74, 0x2e, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x05, 0x00, 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, - 0x6e, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x07, 0x00, - 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1e, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x49, 0x11, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, - 0x00, 0x47, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, - 0x03, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, - 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x10, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x10, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, - 0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, - 0x00, 0x03, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x06, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x48, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x47, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, - 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x04, - 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x06, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x47, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, - 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, - 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, - 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, - 0x00, 0x18, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, 0x16, 0x00, 0x03, 0x00, 0x19, 0x00, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, - 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, - 0x1c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, - 0x00, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x20, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x03, - 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, - 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x08, - 0x00, 0x10, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, - 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, - 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x2b, 0x00, - 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1e, - 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, - 0x28, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, - 0x00, 0x19, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x02, 0x00, - 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, - 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, - 0x2d, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, - 0x00, 0x2e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x2f, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, - 0x2b, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x6f, 0x12, 0x83, 0x3a, 0x20, 0x00, 0x04, - 0x00, 0x33, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x16, 0x00, - 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x03, 0x00, 0x14, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, - 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, - 0x35, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x19, 0x00, 0x09, 0x00, 0x38, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, 0x39, 0x00, 0x00, 0x00, 0x38, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, - 0x00, 0x3a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1d, 0x00, - 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, - 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x3b, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, - 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x34, - 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, - 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, - 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, - 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, - 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2c, 0x00, - 0x07, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2f, - 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, - 0x00, 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xf8, 0x00, - 0x02, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, 0x07, - 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x40, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, - 0x00, 0x1c, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1c, 0x00, - 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x45, - 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, - 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, - 0x00, 0x09, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x24, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x48, - 0x00, 0x00, 0x00, 0x89, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, - 0x49, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, - 0x00, 0x86, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x49, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x7f, - 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, - 0x1b, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x05, - 0x00, 0x1e, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xc2, 0x00, - 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0xc7, - 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, - 0x41, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, - 0x00, 0x3d, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x0c, 0x00, - 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x51, - 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, - 0x2a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, - 0x00, 0x41, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, - 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x41, - 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, - 0x3d, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, - 0x00, 0x19, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x19, 0x00, - 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x5b, - 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, - 0x50, 0x00, 0x07, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, - 0x00, 0x2f, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x5d, 0x00, - 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x50, - 0x00, 0x07, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, - 0x5d, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x60, 0x00, - 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x52, - 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, - 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, - 0x00, 0x63, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x88, 0x00, 0x05, 0x00, 0x19, 0x00, - 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x1a, - 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, - 0x2f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, - 0x00, 0x63, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x2d, 0x00, - 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x3e, - 0x00, 0x00, 0x00, 0x92, 0x00, 0x05, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, - 0x67, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, - 0x00, 0x42, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x1b, 0x00, - 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x50, 0x00, 0x06, 0x00, 0x1a, - 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2e, 0x00, 0x00, 0x00, - 0x90, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, - 0x00, 0x41, 0x00, 0x06, 0x00, 0x33, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x30, 0x00, - 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6d, - 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x0b, 0x00, - 0x13, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, - 0x00, 0x72, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x74, 0x00, - 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x74, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x75, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0xfb, 0x00, 0x0b, 0x00, 0x41, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x77, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, - 0x00, 0x03, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x4f, 0x00, - 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x75, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x79, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, - 0x00, 0x6e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x75, 0x00, - 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x78, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x7d, - 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, - 0xf9, 0x00, 0x02, 0x00, 0x75, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x77, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, - 0x00, 0x1b, 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x75, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x76, - 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x75, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x75, 0x00, 0x00, 0x00, - 0xf5, 0x00, 0x0d, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x7b, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, - 0x00, 0x7c, 0x00, 0x00, 0x00, 0x79, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x7e, 0x00, - 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6f, - 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x73, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x80, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x0b, 0x00, 0x41, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x82, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x84, 0x00, - 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x85, 0x00, 0x00, 0x00, 0x4f, - 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, - 0x00, 0x84, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x6e, 0x00, - 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x80, - 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x83, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0x88, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, - 0x00, 0xf9, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x82, 0x00, 0x00, 0x00, 0x4f, 0x00, - 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x02, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, - 0x81, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, - 0x00, 0xf5, 0x00, 0x0d, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x85, 0x00, - 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x89, - 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x6f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x72, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x8b, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x0b, 0x00, 0x41, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x8f, - 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x90, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xf8, 0x00, - 0x02, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x6e, - 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, - 0x8b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, - 0x00, 0x93, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, - 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x4f, - 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, - 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, - 0x00, 0x8c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x8b, 0x00, - 0x00, 0x00, 0xf5, 0x00, 0x0d, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x90, - 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, - 0x94, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, - 0x00, 0x6f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x71, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x96, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x0b, 0x00, 0x41, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, - 0x9a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x9b, 0x00, 0x00, - 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6e, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x96, 0x00, 0x00, 0x00, 0xf8, - 0x00, 0x02, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, - 0x6e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, - 0x00, 0x96, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x99, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, - 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, - 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x96, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x98, 0x00, 0x00, 0x00, - 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, - 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x96, 0x00, 0x00, 0x00, 0xf8, 0x00, - 0x02, 0x00, 0x97, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x96, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x96, - 0x00, 0x00, 0x00, 0xf5, 0x00, 0x0d, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, - 0x9b, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, - 0x00, 0x9f, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0xf9, 0x00, - 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x70, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x6f, - 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x6f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x0d, 0x00, 0x1b, 0x00, 0x00, 0x00, - 0xa1, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, - 0x00, 0x95, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x96, 0x00, 0x00, 0x00, 0x3b, 0x00, - 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x3e, - 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, - 0x36, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, - 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xa3, 0x00, - 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x39, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x0d, - 0x00, 0x00, 0x00, 0x57, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, - 0xa3, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, - 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, + 0x00, 0x07, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x5f, 0x64, + 0x69, 0x73, 0x74, 0x61, 0x6e, 0x63, 0x65, 0x00, 0x06, 0x00, 0x06, 0x00, 0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, + 0x00, 0x63, 0x61, 0x6d, 0x65, 0x72, 0x61, 0x5f, 0x74, 0x69, 0x6c, 0x74, 0x00, 0x06, 0x00, 0x06, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x70, 0x5f, 0x77, 0x69, 0x64, 0x74, 0x68, 0x00, 0x00, 0x00, 0x05, + 0x00, 0x05, 0x00, 0x03, 0x00, 0x00, 0x00, 0x63, 0x6f, 0x6e, 0x73, 0x74, 0x61, 0x6e, 0x74, 0x73, 0x00, 0x00, 0x00, + 0x05, 0x00, 0x05, 0x00, 0x11, 0x00, 0x00, 0x00, 0x74, 0x69, 0x6c, 0x65, 0x5f, 0x70, 0x6f, 0x73, 0x00, 0x00, 0x00, + 0x00, 0x05, 0x00, 0x05, 0x00, 0x12, 0x00, 0x00, 0x00, 0x74, 0x69, 0x6c, 0x65, 0x5f, 0x74, 0x79, 0x70, 0x65, 0x00, + 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x13, 0x00, 0x00, 0x00, 0x72, 0x6f, 0x74, 0x61, 0x74, 0x69, 0x6f, 0x6e, 0x00, + 0x00, 0x00, 0x00, 0x05, 0x00, 0x07, 0x00, 0x14, 0x00, 0x00, 0x00, 0x53, 0x74, 0x72, 0x75, 0x63, 0x74, 0x75, 0x72, + 0x65, 0x64, 0x42, 0x75, 0x66, 0x66, 0x65, 0x72, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, 0x04, 0x00, 0x00, + 0x00, 0x74, 0x69, 0x6c, 0x65, 0x5f, 0x69, 0x6e, 0x66, 0x6f, 0x73, 0x00, 0x00, 0x05, 0x00, 0x0a, 0x00, 0x06, 0x00, + 0x00, 0x00, 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x6d, + 0x61, 0x69, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x2e, 0x75, 0x76, 0x00, 0x00, 0x05, 0x00, 0x05, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x76, 0x65, 0x72, 0x74, 0x65, 0x78, 0x00, 0x05, 0x00, 0x05, + 0x00, 0x0f, 0x00, 0x00, 0x00, 0x69, 0x6e, 0x70, 0x75, 0x74, 0x2e, 0x75, 0x76, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, + 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x74, 0x65, 0x78, 0x31, 0x00, 0x00, 0x00, 0x00, 0x05, 0x00, 0x04, 0x00, 0x15, + 0x00, 0x00, 0x00, 0x73, 0x61, 0x6d, 0x70, 0x6c, 0x65, 0x64, 0x00, 0x05, 0x00, 0x0b, 0x00, 0x0e, 0x00, 0x00, 0x00, + 0x65, 0x6e, 0x74, 0x72, 0x79, 0x50, 0x6f, 0x69, 0x6e, 0x74, 0x50, 0x61, 0x72, 0x61, 0x6d, 0x5f, 0x6d, 0x61, 0x69, + 0x6e, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, 0x2e, 0x63, 0x6f, 0x6c, 0x6f, 0x72, 0x00, 0x05, 0x00, + 0x06, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x6d, 0x61, 0x69, 0x6e, 0x5f, 0x66, 0x72, 0x61, 0x67, 0x6d, 0x65, 0x6e, 0x74, + 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x07, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, + 0x47, 0x00, 0x04, 0x00, 0x08, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, + 0x00, 0x0b, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x49, 0x11, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0a, 0x00, + 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x09, 0x00, 0x00, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, + 0x48, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x48, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x04, 0x00, + 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x08, + 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, + 0x0c, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, + 0x00, 0x10, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x23, 0x00, + 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x10, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x23, + 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x03, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, + 0x00, 0x47, 0x00, 0x04, 0x00, 0x16, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x47, 0x00, + 0x03, 0x00, 0x14, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x48, 0x00, 0x05, 0x00, 0x14, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, + 0x21, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x04, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x03, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0x47, 0x00, + 0x04, 0x00, 0x05, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x06, + 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0f, 0x00, 0x00, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x21, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x47, 0x00, 0x04, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x13, + 0x00, 0x02, 0x00, 0x17, 0x00, 0x00, 0x00, 0x21, 0x00, 0x03, 0x00, 0x18, 0x00, 0x00, 0x00, 0x17, 0x00, 0x00, 0x00, + 0x16, 0x00, 0x03, 0x00, 0x19, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, + 0x00, 0x19, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x19, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x15, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1c, 0x00, 0x00, 0x00, + 0x15, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x17, 0x00, 0x04, + 0x00, 0x1f, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x20, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1f, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, 0x00, 0x01, + 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x09, 0x00, 0x10, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, + 0x00, 0x1e, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x10, 0x00, + 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x20, + 0x00, 0x04, 0x00, 0x24, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, + 0x1e, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xff, 0xff, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, + 0x00, 0x26, 0x00, 0x00, 0x00, 0x10, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x27, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x29, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x2b, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, + 0x00, 0x19, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1c, 0x00, + 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x2d, + 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x18, 0x00, 0x04, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x04, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, + 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x2b, 0x00, + 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x04, 0x00, 0x19, + 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3f, 0x2b, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x33, 0x00, 0x00, 0x00, 0x0a, 0xd7, 0x23, 0x3c, 0x20, 0x00, 0x04, 0x00, 0x34, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, + 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1d, 0x00, 0x03, 0x00, 0x16, 0x00, 0x00, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x1e, 0x00, + 0x03, 0x00, 0x14, 0x00, 0x00, 0x00, 0x16, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x0c, + 0x00, 0x00, 0x00, 0x14, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x1a, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, + 0x00, 0x20, 0x00, 0x04, 0x00, 0x38, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x19, 0x00, + 0x09, 0x00, 0x39, 0x00, 0x00, 0x00, 0x19, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1b, 0x00, 0x03, 0x00, + 0x3a, 0x00, 0x00, 0x00, 0x39, 0x00, 0x00, 0x00, 0x20, 0x00, 0x04, 0x00, 0x3b, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x3a, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x01, 0x00, + 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x20, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, + 0x00, 0x04, 0x00, 0x1d, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, + 0x1d, 0x00, 0x00, 0x00, 0x0a, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x21, 0x00, 0x00, + 0x00, 0x09, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x22, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x35, 0x00, 0x00, 0x00, 0x04, 0x00, 0x00, 0x00, 0x0c, + 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x05, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, + 0x3b, 0x00, 0x04, 0x00, 0x37, 0x00, 0x00, 0x00, 0x06, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, + 0x00, 0x38, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x3b, 0x00, + 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3b, 0x00, 0x04, 0x00, 0x36, 0x00, 0x00, 0x00, 0x0e, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x01, 0x00, 0x03, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, + 0x2c, 0x00, 0x07, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, + 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x07, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3e, 0x00, + 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x33, 0x00, 0x00, 0x00, 0x2c, + 0x00, 0x07, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, + 0x2f, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x36, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x40, 0x00, 0x00, 0x00, 0x3d, 0x00, + 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x07, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0x42, 0x00, 0x00, 0x00, 0x41, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1f, 0x00, 0x00, 0x00, + 0x43, 0x00, 0x00, 0x00, 0x08, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x44, 0x00, 0x00, + 0x00, 0x0b, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x0a, 0x00, + 0x00, 0x00, 0x82, 0x00, 0x05, 0x00, 0x1c, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, 0x45, 0x00, 0x00, 0x00, 0x44, + 0x00, 0x00, 0x00, 0x7c, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x46, 0x00, 0x00, 0x00, + 0x3d, 0x00, 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x09, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, + 0x00, 0x24, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x23, 0x00, 0x00, 0x00, 0x3d, 0x00, + 0x04, 0x00, 0x1e, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x49, 0x00, 0x00, 0x00, 0x89, 0x00, 0x05, 0x00, 0x1e, + 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4b, 0x00, 0x00, 0x00, 0x86, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, + 0x00, 0x4d, 0x00, 0x00, 0x00, 0x47, 0x00, 0x00, 0x00, 0x4a, 0x00, 0x00, 0x00, 0x70, 0x00, 0x04, 0x00, 0x19, 0x00, + 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0x4d, 0x00, 0x00, 0x00, 0x50, 0x00, 0x05, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x11, + 0x00, 0x00, 0x00, 0x4c, 0x00, 0x00, 0x00, 0x4e, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, 0x00, + 0x12, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x25, 0x00, 0x00, 0x00, 0xc2, 0x00, 0x05, 0x00, 0x1e, 0x00, 0x00, + 0x00, 0x4f, 0x00, 0x00, 0x00, 0x48, 0x00, 0x00, 0x00, 0x26, 0x00, 0x00, 0x00, 0xc7, 0x00, 0x05, 0x00, 0x1e, 0x00, + 0x00, 0x00, 0x13, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x00, 0x00, 0x27, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x29, + 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x28, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x50, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, + 0x00, 0x52, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2a, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x19, 0x00, + 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x52, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x54, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2c, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x55, 0x00, 0x00, 0x00, 0x54, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x55, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x29, 0x00, + 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x2d, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x19, + 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x57, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x59, 0x00, 0x00, 0x00, 0x56, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x19, 0x00, + 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0e, 0x00, 0x00, 0x00, 0x59, 0x00, 0x00, 0x00, 0x7f, + 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, 0x5c, 0x00, 0x00, 0x00, 0x51, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, + 0x19, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, + 0x00, 0x5e, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x5d, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x04, 0x00, 0x19, 0x00, + 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x60, + 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x53, 0x00, 0x00, 0x00, 0x81, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x61, 0x00, 0x00, 0x00, 0x60, 0x00, 0x00, 0x00, 0x58, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x1a, 0x00, 0x00, + 0x00, 0x62, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x5c, 0x00, + 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x63, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x5b, + 0x00, 0x00, 0x00, 0x5a, 0x00, 0x00, 0x00, 0x5e, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x64, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x5f, 0x00, 0x00, 0x00, 0x5b, 0x00, 0x00, 0x00, 0x61, 0x00, 0x00, + 0x00, 0x50, 0x00, 0x07, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x65, 0x00, 0x00, 0x00, 0x62, 0x00, 0x00, 0x00, 0x63, 0x00, + 0x00, 0x00, 0x64, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x29, 0x00, 0x00, 0x00, 0x66, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x30, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x67, 0x00, 0x00, 0x00, 0x66, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0x0b, 0x00, 0x00, 0x00, 0x67, 0x00, 0x00, 0x00, 0x41, 0x00, 0x05, 0x00, 0x29, 0x00, + 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x19, + 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, 0x69, 0x00, 0x00, 0x00, 0x85, 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, + 0x6b, 0x00, 0x00, 0x00, 0x68, 0x00, 0x00, 0x00, 0x32, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x06, 0x00, 0x19, 0x00, 0x00, + 0x00, 0x6c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x6b, 0x00, 0x00, 0x00, 0x88, 0x00, + 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00, 0x00, 0x6c, 0x00, 0x00, 0x00, 0x88, + 0x00, 0x05, 0x00, 0x19, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x6a, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x07, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x6e, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, + 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x50, 0x00, 0x07, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x70, 0x00, + 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x6d, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, 0x00, 0x50, + 0x00, 0x07, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x6f, 0x00, 0x00, 0x00, 0x70, 0x00, 0x00, 0x00, + 0x3e, 0x00, 0x00, 0x00, 0x3f, 0x00, 0x00, 0x00, 0x92, 0x00, 0x05, 0x00, 0x2e, 0x00, 0x00, 0x00, 0x72, 0x00, 0x00, + 0x00, 0x65, 0x00, 0x00, 0x00, 0x71, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x73, 0x00, + 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x43, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x81, + 0x00, 0x05, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x11, 0x00, 0x00, 0x00, 0x73, 0x00, 0x00, 0x00, + 0x50, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x75, 0x00, 0x00, 0x00, 0x74, 0x00, 0x00, 0x00, 0x2b, 0x00, 0x00, + 0x00, 0x2f, 0x00, 0x00, 0x00, 0x90, 0x00, 0x05, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x76, 0x00, 0x00, 0x00, 0x75, 0x00, + 0x00, 0x00, 0x72, 0x00, 0x00, 0x00, 0x41, 0x00, 0x06, 0x00, 0x34, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0x04, + 0x00, 0x00, 0x00, 0x31, 0x00, 0x00, 0x00, 0x12, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1a, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x77, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, 0x79, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0xfb, 0x00, 0x0b, 0x00, 0x13, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7b, 0x00, + 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x7c, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x7d, 0x00, 0x00, 0x00, 0x03, + 0x00, 0x00, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x7e, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, 0x00, + 0x7f, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x0b, 0x00, 0x42, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x82, 0x00, 0x00, 0x00, 0x02, 0x00, + 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x84, + 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x85, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x00, + 0x00, 0xf8, 0x00, 0x02, 0x00, 0x83, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x86, 0x00, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, + 0x00, 0x02, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x82, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, + 0x1b, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x81, 0x00, + 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0x80, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x7f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, + 0x00, 0x7f, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x0d, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x85, 0x00, + 0x00, 0x00, 0x84, 0x00, 0x00, 0x00, 0x86, 0x00, 0x00, 0x00, 0x83, 0x00, 0x00, 0x00, 0x87, 0x00, 0x00, 0x00, 0x82, + 0x00, 0x00, 0x00, 0x88, 0x00, 0x00, 0x00, 0x81, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x80, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x79, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x7d, 0x00, 0x00, 0x00, 0xf7, 0x00, 0x03, + 0x00, 0x8a, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x0b, 0x00, 0x42, 0x00, 0x00, 0x00, 0x8b, 0x00, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x8f, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x90, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x8a, 0x00, + 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x91, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x8a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x8d, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, + 0x00, 0x1b, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x8a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x8c, + 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x78, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x8a, 0x00, 0x00, + 0x00, 0xf8, 0x00, 0x02, 0x00, 0x8b, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x8a, 0x00, 0x00, 0x00, 0xf8, 0x00, + 0x02, 0x00, 0x8a, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x0d, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x94, 0x00, 0x00, 0x00, 0x90, + 0x00, 0x00, 0x00, 0x8f, 0x00, 0x00, 0x00, 0x91, 0x00, 0x00, 0x00, 0x8e, 0x00, 0x00, 0x00, 0x92, 0x00, 0x00, 0x00, + 0x8d, 0x00, 0x00, 0x00, 0x93, 0x00, 0x00, 0x00, 0x8c, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x8b, 0x00, 0x00, + 0x00, 0xf9, 0x00, 0x02, 0x00, 0x79, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x7c, 0x00, 0x00, 0x00, 0xf7, 0x00, + 0x03, 0x00, 0x95, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x0b, 0x00, 0x42, 0x00, 0x00, 0x00, 0x96, + 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0x98, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, + 0x00, 0x9a, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x9b, 0x00, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x95, + 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x99, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, + 0x9c, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, + 0x00, 0xf9, 0x00, 0x02, 0x00, 0x95, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x98, 0x00, 0x00, 0x00, 0x4f, 0x00, + 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x02, + 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x95, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, + 0x97, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, + 0x00, 0x78, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x95, 0x00, + 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x96, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x95, 0x00, 0x00, 0x00, 0xf8, + 0x00, 0x02, 0x00, 0x95, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x0d, 0x00, 0x1b, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, + 0x9b, 0x00, 0x00, 0x00, 0x9a, 0x00, 0x00, 0x00, 0x9c, 0x00, 0x00, 0x00, 0x99, 0x00, 0x00, 0x00, 0x9d, 0x00, 0x00, + 0x00, 0x98, 0x00, 0x00, 0x00, 0x9e, 0x00, 0x00, 0x00, 0x97, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x96, 0x00, + 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x79, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x7b, 0x00, 0x00, 0x00, 0xf7, + 0x00, 0x03, 0x00, 0xa0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xfb, 0x00, 0x0b, 0x00, 0x42, 0x00, 0x00, 0x00, + 0xa1, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xa3, 0x00, 0x00, + 0x00, 0x02, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xf8, 0x00, + 0x02, 0x00, 0xa5, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xa6, 0x00, 0x00, 0x00, 0x78, + 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x03, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, + 0xa0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa4, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, + 0x00, 0xa7, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x02, 0x00, 0x00, 0x00, 0x03, 0x00, + 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa3, 0x00, 0x00, 0x00, 0x4f, + 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xa8, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, + 0x02, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, + 0x00, 0xa2, 0x00, 0x00, 0x00, 0x4f, 0x00, 0x07, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0x78, 0x00, + 0x00, 0x00, 0x78, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xa0, + 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xa1, 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0xa0, 0x00, 0x00, 0x00, + 0xf8, 0x00, 0x02, 0x00, 0xa0, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x0d, 0x00, 0x1b, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, + 0x00, 0xa6, 0x00, 0x00, 0x00, 0xa5, 0x00, 0x00, 0x00, 0xa7, 0x00, 0x00, 0x00, 0xa4, 0x00, 0x00, 0x00, 0xa8, 0x00, + 0x00, 0x00, 0xa3, 0x00, 0x00, 0x00, 0xa9, 0x00, 0x00, 0x00, 0xa2, 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0xa1, + 0x00, 0x00, 0x00, 0xf9, 0x00, 0x02, 0x00, 0x79, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x7a, 0x00, 0x00, 0x00, + 0xf9, 0x00, 0x02, 0x00, 0x79, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0x79, 0x00, 0x00, 0x00, 0xf5, 0x00, 0x0d, + 0x00, 0x1b, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0x89, 0x00, 0x00, 0x00, 0x7f, 0x00, 0x00, 0x00, 0x94, 0x00, + 0x00, 0x00, 0x8a, 0x00, 0x00, 0x00, 0x9f, 0x00, 0x00, 0x00, 0x95, 0x00, 0x00, 0x00, 0xaa, 0x00, 0x00, 0x00, 0xa0, + 0x00, 0x00, 0x00, 0x3c, 0x00, 0x00, 0x00, 0x7a, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x05, 0x00, 0x00, 0x00, + 0x76, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x06, 0x00, 0x00, 0x00, 0xab, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, + 0x00, 0x38, 0x00, 0x01, 0x00, 0x36, 0x00, 0x05, 0x00, 0x17, 0x00, 0x00, 0x00, 0x0c, 0x00, 0x00, 0x00, 0x00, 0x00, + 0x00, 0x00, 0x18, 0x00, 0x00, 0x00, 0xf8, 0x00, 0x02, 0x00, 0xac, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x1b, + 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x0f, 0x00, 0x00, 0x00, 0x3d, 0x00, 0x04, 0x00, 0x3a, 0x00, 0x00, 0x00, + 0xae, 0x00, 0x00, 0x00, 0x0d, 0x00, 0x00, 0x00, 0x57, 0x00, 0x06, 0x00, 0x1a, 0x00, 0x00, 0x00, 0x15, 0x00, 0x00, + 0x00, 0xae, 0x00, 0x00, 0x00, 0xad, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x3e, 0x00, 0x03, 0x00, 0x0e, 0x00, + 0x00, 0x00, 0x15, 0x00, 0x00, 0x00, 0xfd, 0x00, 0x01, 0x00, 0x38, 0x00, 0x01, 0x00, }; -const size_t SPIRV_world_sizeInBytes = 4740; +const size_t SPIRV_world_sizeInBytes = 4992; diff --git a/assets/shader/world.slang b/assets/shader/world.slang index 342548b..0d0ca27 100644 --- a/assets/shader/world.slang +++ b/assets/shader/world.slang @@ -1,3 +1,5 @@ +#include "common.slang" + struct VertexShaderInput { // Per Vertex uint vertex_id : SV_VertexID; @@ -17,50 +19,19 @@ struct PixelShaderOutput { float4 color : SV_TARGET; }; -[[vk::binding(0, 1)]] -cbuffer constants { - float aspect_ratio; - float fovy_degrees; - float camera_x; - float camera_y; - float camera_z; - uint map_width; -}; - [[vk::binding(0, 0)]] StructuredBuffer tile_infos; -float4x4 projection(float fovy, float aspect, float near) { - float g = 1.0 / tan(fovy * 0.5); - - return { - g / aspect, 0, 0, 0, - 0, g, 0, 0, - 0, 0, 0, near, - 0, 0, 1, 0, - }; -} - -float4x4 view(float3 pos) { - return { - 1, 0, 0, -pos.x, - 0, 1, 0, -pos.y, - 0, 0, 1, -pos.z, - 0, 0, 0, 1, - }; -} - [shader("vertex")] VertexShaderOutput main_vertex(VertexShaderInput input) { VertexShaderOutput output; - float2 tile_pos = float2(input.instance_id % map_width, -float(input.instance_id / map_width)); + float2 tile_pos = float2(input.instance_id % map_width, float(input.instance_id / map_width)); uint tile_type = input.tile_info & 0xffff; uint rotation = (input.tile_info >> 16) & 0x3; - float fovy = radians(fovy_degrees); - float4x4 view_matrix = view(float3(camera_x, -camera_y, camera_z)); - float4x4 projection_matrix = projection(fovy, aspect_ratio, 0.001); + float4x4 view_matrix = view(float3(camera_x, camera_y, 0), radians(camera_tilt), camera_distance); + float4x4 projection_matrix = projection(radians(fovy_degrees), aspect_ratio, NEAR_PLANE); float4x4 view_projection_matrix = mul(projection_matrix, view_matrix); output.pos = mul(view_projection_matrix, float4(tile_pos + input.pos.xy, 0, 1)); diff --git a/src/main.cpp b/src/main.cpp index 5ca5d79..a559819 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -19,6 +19,8 @@ using namespace M; +#define NEAR_PLANE (0.01f) + SDL_GPUDevice *device; SDL_Window *window; @@ -37,11 +39,11 @@ Sint32 window_height; bool Running = true; -#define view_width 16 -#define view_height 9 +M4x4 view_matrix = view (V3_(0.0f, 0.0f, 0.0f), radians(45.0f), 10.0f); +M4x4 inverse_view_matrix = inverse_view(V3_(0.0f, 0.0f, 0.0f), radians(45.0f), 10.0f); -M4x4 projection_matrix = projection (radians(45.0f), 1.0f, 0.001f); -M4x4 inverse_projection_matrix = inverse_projection(radians(45.0f), 1.0f, 0.001f); +M4x4 projection_matrix = projection (radians(45.0f), 16.0f / 9.0f, NEAR_PLANE); +M4x4 inverse_projection_matrix = inverse_projection(radians(45.0f), 16.0f / 9.0f, NEAR_PLANE); struct Vertex { V3 pos; @@ -84,11 +86,12 @@ struct PerFrame { float fovy_degrees; float camera_x; float camera_y; - float camera_z; + float camera_distance; + float camera_tilt; Uint32 map_width; }; -PerFrame per_frame = { 1.0f, 45.0f, 0, 0, -10 }; +PerFrame per_frame = { 1.0f, 45.0f, 0.0f, 0.0f, 10.0f, 45.0f }; typedef struct { Uint16 type; @@ -590,6 +593,13 @@ ImVec4 sRGB_to_linear(ImVec4 linear) { return ImVec4(red, green, blue, linear.w); } +V3 Unproject(V3 screen_pos) { + V4 result = inverse_view_matrix * inverse_projection_matrix * V4_(screen_pos, 1.0f); + result.xyz /= result.w; + + return result.xyz; +} + int main(int argc, char **argv) { load_map(); @@ -908,7 +918,7 @@ int main(int argc, char **argv) { .address_mode_w = SDL_GPU_SAMPLERADDRESSMODE_CLAMP_TO_EDGE, .max_anisotropy = 16.0f, - .enable_anisotropy = true, + // .enable_anisotropy = true, }; point_sampler = SDL_CreateGPUSampler(device, &point_sampler_info); @@ -1033,8 +1043,9 @@ int main(int argc, char **argv) { selected_rotation = -1; } - ImGui::DragFloat("fovy", &per_frame.fovy_degrees); - ImGui::DragFloat("camera_z", &per_frame.camera_z); + ImGui::DragFloat("fovy", &per_frame.fovy_degrees); + ImGui::DragFloat("camera_distance", &per_frame.camera_distance, 0.25f, 1.0f, INFINITY); + ImGui::DragFloat("camera_tilt", &per_frame.camera_tilt, 0.25f, 0.0f, 89.0f); } ImGui::End(); @@ -1079,7 +1090,7 @@ int main(int argc, char **argv) { continue; if (event.key.key == SDLK_UP || event.key.key == SDLK_W) { - player.pos_y = clamp(0, player.pos_y - 1, map_height - 1); + player.pos_y = clamp(0, player.pos_y + 1, map_height - 1); } if (event.key.key == SDLK_LEFT || event.key.key == SDLK_A) { @@ -1087,7 +1098,7 @@ int main(int argc, char **argv) { } if (event.key.key == SDLK_DOWN || event.key.key == SDLK_S) { - player.pos_y = clamp(0, player.pos_y + 1, map_height - 1); + player.pos_y = clamp(0, player.pos_y - 1, map_height - 1); } if (event.key.key == SDLK_RIGHT || event.key.key == SDLK_D) { @@ -1110,12 +1121,17 @@ int main(int argc, char **argv) { float mouse_x = event.button.x; float mouse_y = event.button.y; - V2 mouse = remap(V2{ 0, 0 }, V2{ (float)window_width, (float)window_height }, V2{ -1, -1 }, V2{ 1, 1 }, V2{ mouse_x, mouse_y }); - V4 mouse_world = inverse_projection_matrix * V4{ mouse.x, mouse.y, -per_frame.camera_z * 0.001f, 1 }; - mouse_world.xy *= mouse_world.w; + V2 mouse = remap(V2{ 0, 0 }, V2{ (float)window_width, (float)window_height }, V2{ -1, 1 }, V2{ 1, -1 }, V2{ mouse_x, mouse_y }); + V3 camera_position = (inverse_view_matrix * V4_(0, 0, 0, 1)).xyz; - Sint32 tile_x = roundf(mouse_world.x) + player.pos_x; - Sint32 tile_y = roundf(mouse_world.y) + player.pos_y; + V3 probe = Unproject(V3_(mouse, .5)); + V3 ray_dir = normalize(probe - camera_position); + + float t = -camera_position.z / ray_dir.z; + V3 floor_intersection = camera_position + (t * ray_dir); + + Sint32 tile_x = roundf(floor_intersection.x); + Sint32 tile_y = roundf(floor_intersection.y); if (selected_tile != -1) { if(0 <= tile_x && tile_x < map_width && @@ -1182,8 +1198,11 @@ int main(int argc, char **argv) { SDL_PushGPUVertexUniformData(command_buffer, 0, &per_frame, sizeof(per_frame)); - projection_matrix = projection (radians(per_frame.fovy_degrees), per_frame.aspect_ratio, 0.001f); - inverse_projection_matrix = inverse_projection(radians(per_frame.fovy_degrees), per_frame.aspect_ratio, 0.001f); + view_matrix = view (V3_((float)player.pos_x, (float)player.pos_y, 0), radians(per_frame.camera_tilt), per_frame.camera_distance); + inverse_view_matrix = inverse_view(V3_((float)player.pos_x, (float)player.pos_y, 0), radians(per_frame.camera_tilt), per_frame.camera_distance); + + projection_matrix = projection (radians(per_frame.fovy_degrees), per_frame.aspect_ratio, NEAR_PLANE); + inverse_projection_matrix = inverse_projection(radians(per_frame.fovy_degrees), per_frame.aspect_ratio, NEAR_PLANE); SDL_GPUColorTargetInfo color_target_info = { .texture = swapchain_texture, diff --git a/src/math_graphics.cpp b/src/math_graphics.cpp index 2e9643b..6307909 100644 --- a/src/math_graphics.cpp +++ b/src/math_graphics.cpp @@ -873,6 +873,30 @@ namespace M { }; } + M4x4 view(V3 player_pos, float tilt, float camera_distance) { + float s = sinf(-tilt); + float c = cosf(-tilt); + + return M4x4_( + 1, 0, 0, -player_pos.x, + 0, c, s, c * -player_pos.y, + 0, -s, c, s * player_pos.y + camera_distance, + 0, 0, 0, 1 + ); + } + + M4x4 inverse_view(V3 player_pos, float tilt, float camera_distance) { + float s = sinf(-tilt); + float c = cosf(-tilt); + + return M4x4_( + 1, 0, 0, player_pos.x, + 0, c, -s, s * camera_distance + player_pos.y, + 0, s, c, c * -camera_distance, + 0, 0, 0, 1 + ); + } + M4x4 projection(float fovy, float aspect, float near) { float g = 1.0 / tanf(fovy * 0.5); diff --git a/src/math_graphics.h b/src/math_graphics.h index 64d7226..63cc263 100644 --- a/src/math_graphics.h +++ b/src/math_graphics.h @@ -258,6 +258,16 @@ namespace M { float _a; }; + struct { + V3 xyz; + float _w2; + }; + + struct { + float _x2; + V3 yzw; + }; + struct { V3 rgb; float _a2; @@ -268,6 +278,16 @@ namespace M { V3 gba; }; + struct { + V3 uvs; + float _t2; + }; + + struct { + float _u2; + V3 vst; + }; + struct { float E[4]; }; @@ -461,6 +481,9 @@ namespace M { M4x4 transpose(M4x4 a); + M4x4 view (V3 player_pos, float tilt, float camera_distance); + M4x4 inverse_view(V3 player_pos, float tilt, float camera_distance); + M4x4 projection (float fovy, float aspect, float near); M4x4 inverse_projection(float fovy, float aspect, float near); } diff --git a/todo.txt b/todo.txt new file mode 100644 index 0000000..10c63f4 --- /dev/null +++ b/todo.txt @@ -0,0 +1,2 @@ +make shaders for dynamic drawing in 2d and 3d +revamp map loading into a struct instead of global and add a version