ui redesign + color aids

isolation_bkp/dynres
Dominik Madarász 2021-05-18 09:19:01 +02:00
parent c7f7b123bb
commit a059b9826b
5 changed files with 549 additions and 35 deletions

Binary file not shown.

Before

Width:  |  Height:  |  Size: 5.7 KiB

After

Width:  |  Height:  |  Size: 20 KiB

427
art/gen/road.h 100644
View File

@ -0,0 +1,427 @@
////////////////////////////////////////////////////////////////////////////////////////
// //
// ImageAsCode exporter v1.0 - Image pixel data exported as an array of bytes //
// //
// more info and bugs-report: github.com/raysan5/raylib //
// feedback and support: ray[at]raylib.com //
// //
// Copyright (c) 2020 Ramon Santamaria (@raysan5) //
// //
////////////////////////////////////////////////////////////////////////////////////////
// Image data information
#define ROAD_WIDTH 64
#define ROAD_HEIGHT 64
#define ROAD_FORMAT 6 // raylib internal pixel format
static unsigned char ROAD_DATA[8192] = { 0x5f,
0x55, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x54, 0x5f, 0x55, 0x4f, 0x44, 0x5f, 0x66, 0x4f, 0x44, 0x6f, 0x66, 0x4f, 0x44, 0x5f,
0x66, 0x4f, 0x44, 0x5f, 0x66, 0x4f, 0x44, 0x6f, 0x66, 0x4f, 0x44, 0x5f, 0x66, 0x5f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x4f,
0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x44, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x66, 0x4f, 0x44, 0x5f, 0x55, 0x4f, 0x54, 0x5f, 0x56, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x6f,
0x66, 0x4f, 0x55, 0x5f, 0x54, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x44, 0x4f,
0x44, 0x4f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x44, 0x5f, 0x44, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x6f,
0x66, 0x4f, 0x45, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x54, 0x5f,
0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f,
0x66, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x7f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x5f,
0x65, 0x5f, 0x56, 0x6f, 0x76, 0x5f, 0x55, 0x4f, 0x44, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x76, 0x7f,
0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f,
0x55, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x65, 0x4f, 0x45, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f,
0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x6f,
0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x66, 0x5f,
0x55, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x54, 0x5f, 0x56, 0x6f,
0x76, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x56, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f,
0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x4f,
0x44, 0x4f, 0x44, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x65, 0x6f, 0x67, 0x6f, 0x76, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f,
0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x65, 0x5f, 0x56, 0x6f, 0x76, 0x6f, 0x66, 0x6f,
0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f,
0x65, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x6f,
0x66, 0x6f, 0x76, 0x6f, 0x67, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f,
0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x67, 0x5f,
0x65, 0x5f, 0x56, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x54, 0x4f, 0x45, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x77, 0x6f,
0x65, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f,
0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x55, 0x6f,
0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x56, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x7f, 0x77, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x55, 0x6f, 0x76, 0x6f, 0x67, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f,
0x55, 0x6f, 0x76, 0x6f, 0x77, 0x7f, 0x76, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f,
0x76, 0x5f, 0x55, 0x7f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f,
0x77, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x4f,
0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f,
0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x67, 0x6f, 0x66, 0x6f, 0x76, 0x4f,
0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x67, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x55, 0x6f, 0x66, 0x6f,
0x66, 0x4f, 0x45, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x7f, 0x77, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x5f,
0x55, 0x5f, 0x76, 0x5f, 0x66, 0x5f, 0x77, 0x6f, 0x88, 0x5f, 0x77, 0x6f, 0x88, 0x5f, 0x77, 0x5f, 0x77, 0x4f, 0x66, 0x6f,
0x77, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x55, 0x5f, 0x55, 0x5f, 0x65, 0x7f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x76, 0x7f, 0x77, 0x6f,
0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f,
0x77, 0x7f, 0x76, 0x5f, 0x56, 0x6f, 0x76, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f,
0x77, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x99, 0x5f, 0x99, 0x5f, 0xa9, 0x5f, 0x99, 0x5f,
0xaa, 0x5f, 0xa9, 0x5f, 0x99, 0x5f, 0x88, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x66, 0x7f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x6f,
0x76, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f,
0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x44, 0x4f, 0x45, 0x6f,
0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x5f,
0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x87, 0x5f,
0xbb, 0x5f, 0xcc, 0x5f, 0xcc, 0x5f, 0xcc, 0x5f, 0xcc, 0x5f, 0xcc, 0x5f, 0xcc, 0x5f, 0xba, 0x5f, 0x87, 0x6f, 0x76, 0x6f,
0x67, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x4f, 0x55, 0x6f, 0x55, 0x5f, 0x55, 0x6f,
0x77, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x76, 0x6f, 0x56, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x65, 0x4f, 0x44, 0x5f,
0x55, 0x5f, 0x66, 0x6f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x44, 0x6f, 0x66, 0x7f, 0x77, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x6f,
0x76, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x4f,
0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x98, 0x5f, 0xcc, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x4f,
0xdd, 0x5f, 0xbb, 0x5f, 0x88, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x77, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f,
0x55, 0x4f, 0x44, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x56, 0x6f, 0x66, 0x5f, 0x65, 0x6f,
0x76, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x4f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x5f,
0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x66, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x67, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x6f,
0x77, 0x5f, 0x55, 0x5f, 0x65, 0x7f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x65, 0x5f,
0x66, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x88, 0x5f, 0xcb, 0x5f, 0xdd, 0x5f,
0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x4f, 0xdd, 0x4f, 0xdc, 0x4f, 0xbb, 0x6f, 0x98, 0x5f, 0x66, 0x6f, 0x77, 0x7f, 0x76, 0x6f,
0x66, 0x5f, 0x66, 0x7f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f,
0x77, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x56, 0x5f, 0x55, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x67, 0x6f, 0x65, 0x6f, 0x77, 0x5f, 0x55, 0x5f,
0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x66, 0x6f,
0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x67, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f,
0x66, 0x5f, 0x88, 0x5f, 0xbb, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x4f, 0xdc, 0x4f, 0xdc, 0x4f, 0xdc, 0x5f, 0xbb, 0x5f,
0x99, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x65, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x44, 0x4f,
0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x7f, 0x66, 0x6f, 0x77, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x65, 0x6f, 0x65, 0x6f, 0x77, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f,
0x66, 0x5f, 0x66, 0x7f, 0x76, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f,
0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f,
0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x77, 0x5f, 0x88, 0x5f, 0xcc, 0x5f, 0xdd, 0x5f, 0xdd, 0x4f, 0xdd, 0x4f,
0xdc, 0x4f, 0xcc, 0x4f, 0xcc, 0x5f, 0xbb, 0x5f, 0x98, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x6f,
0x76, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f,
0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x56, 0x6f, 0x76, 0x6f, 0x67, 0x5f, 0x65, 0x6f,
0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x55, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x77, 0x5f, 0x88, 0x5f,
0xbb, 0x5f, 0xdd, 0x4f, 0xdd, 0x4f, 0xdc, 0x4f, 0xcc, 0x4f, 0xcc, 0x4f, 0xcc, 0x5f, 0xbb, 0x5f, 0x87, 0x5f, 0x66, 0x6f,
0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f,
0x76, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f,
0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f,
0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x7f, 0x77, 0x6f, 0x76, 0x6f, 0x56, 0x5f, 0x66, 0x6f,
0x66, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x98, 0x5f, 0xbb, 0x4f, 0xdc, 0x4f, 0xdc, 0x4f, 0xcc, 0x4f, 0xcc, 0x4f, 0xcc, 0x4f,
0xcc, 0x5f, 0xba, 0x5f, 0x78, 0x5f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f,
0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x4f,
0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x4f,
0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f,
0x76, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x66, 0x5f, 0x89, 0x5f, 0xbb, 0x4f, 0xcc, 0x4f,
0xcc, 0x4f, 0xcc, 0x4f, 0xcb, 0x4f, 0xcb, 0x4f, 0xcb, 0x4f, 0xaa, 0x5f, 0x98, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f,
0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x76, 0x6f,
0x66, 0x6f, 0x76, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x6f,
0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x65, 0x5f,
0x55, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x56, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f,
0x66, 0x5f, 0x98, 0x5f, 0xba, 0x4f, 0xcb, 0x4f, 0xcb, 0x4f, 0xcb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xaa, 0x5f,
0x78, 0x5f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x66, 0x7f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x56, 0x6f, 0x66, 0x6f, 0x76, 0x6f,
0x66, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x44, 0x5f, 0x55, 0x6f, 0x66, 0x6f,
0x66, 0x6f, 0x76, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x6f,
0x76, 0x6f, 0x56, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x4f, 0x45, 0x5f, 0x65, 0x4f, 0x44, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x66, 0x4f, 0x55, 0x4f, 0x44, 0x6f, 0x76, 0x5f, 0x77, 0x4f, 0xaa, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f,
0xbb, 0x4f, 0xbb, 0x4f, 0xba, 0x4f, 0xa9, 0x5f, 0x88, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f,
0x66, 0x7f, 0x76, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x77, 0x6f,
0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x77, 0x7f, 0x77, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x4f,
0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x55, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f,
0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x54, 0x6f, 0x66, 0x4f, 0x77, 0x4f,
0xaa, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0x99, 0x6f, 0x87, 0x5f, 0x55, 0x5f,
0x55, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x65, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f,
0x76, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x7f, 0x77, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x7f,
0x77, 0x5f, 0x55, 0x6f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x6f,
0x77, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x56, 0x5f, 0x65, 0x5f, 0x55, 0x7f, 0x77, 0x5f, 0x65, 0x5f,
0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f,
0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x87, 0x4f, 0xa9, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f,
0xba, 0x4f, 0xaa, 0x5f, 0x88, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x66, 0x7f, 0x76, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x5f,
0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x67, 0x7f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f,
0x76, 0x6f, 0x56, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x67, 0x5f, 0x55, 0x4f, 0x54, 0x4f, 0x44, 0x5f,
0x55, 0x6f, 0x77, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x56, 0x6f, 0x76, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x77, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x88, 0x4f, 0x99, 0x4f, 0xba, 0x4f,
0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0x99, 0x5f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f,
0x77, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f,
0x65, 0x5f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x7f, 0x77, 0x6f, 0x66, 0x6f,
0x76, 0x5f, 0x55, 0x4f, 0x44, 0x4f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x7f,
0x77, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x65, 0x7f, 0x67, 0x5f, 0x65, 0x6f, 0x76, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x44, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x88, 0x4f, 0x99, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0x99, 0x4f,
0x77, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x54, 0x5f,
0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x56, 0x6f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f,
0x65, 0x6f, 0x67, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x4f, 0x55, 0x4f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f,
0x76, 0x6f, 0x67, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x54, 0x5f, 0x56, 0x6f, 0x66, 0x5f,
0x65, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x55, 0x5f, 0x55, 0x4f,
0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x88, 0x4f, 0xaa, 0x4f, 0xba, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f,
0xbb, 0x4f, 0xbb, 0x4f, 0xaa, 0x4f, 0x99, 0x4f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x55, 0x6f, 0x65, 0x5f, 0x56, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f,
0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x56, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x5f,
0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x88, 0x4f,
0xa9, 0x4f, 0xba, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xba, 0x4f, 0xaa, 0x4f, 0x99, 0x5f, 0x87, 0x6f, 0x66, 0x6f,
0x77, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x65, 0x6f, 0x67, 0x5f, 0x65, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x6f,
0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f,
0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x54, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f,
0x66, 0x6f, 0x66, 0x6f, 0x77, 0x7f, 0x76, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x67, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x4f,
0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x77, 0x4f, 0xa9, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xba, 0x3f,
0xaa, 0x4f, 0x99, 0x5f, 0x88, 0x7f, 0x76, 0x6f, 0x67, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f,
0x65, 0x6f, 0x66, 0x4f, 0x44, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x7f, 0x77, 0x6f, 0x76, 0x6f,
0x66, 0x6f, 0x66, 0x6f, 0x76, 0x4f, 0x44, 0x4f, 0x54, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x4f, 0x44, 0x4f, 0x54, 0x4f,
0x44, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x56, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x4f,
0x44, 0x4f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x5f,
0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x54, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x87, 0x4f, 0x99, 0x4f, 0xba, 0x4f,
0xbb, 0x4f, 0xbb, 0x4f, 0xba, 0x4f, 0xaa, 0x3f, 0xaa, 0x4f, 0x98, 0x5f, 0x88, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f,
0x67, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x44, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x65, 0x5f, 0x55, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x44, 0x5f, 0x55, 0x5f,
0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x67, 0x6f,
0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x66, 0x5f, 0x44, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x6f,
0x77, 0x7f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x65, 0x6f, 0x88, 0x4f, 0xaa, 0x4f, 0xba, 0x4f, 0xbb, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xaa, 0x3f, 0xa9, 0x4f, 0x98, 0x4f,
0x66, 0x5f, 0x65, 0x6f, 0x77, 0x7f, 0x76, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x55, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x55, 0x4f, 0x44, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x54, 0x5f, 0x56, 0x6f, 0x66, 0x5f, 0x65, 0x6f,
0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f,
0x77, 0x6f, 0x76, 0x6f, 0x66, 0x7f, 0x77, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x65, 0x5f,
0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x88, 0x4f, 0xa9, 0x4f, 0xbb, 0x4f, 0xba, 0x4f, 0xba, 0x4f,
0xba, 0x3f, 0xaa, 0x3f, 0xa9, 0x4f, 0x99, 0x5f, 0x77, 0x5f, 0x65, 0x7f, 0x67, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x56, 0x6f,
0x76, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x54, 0x4f, 0x45, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x66, 0x5f,
0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x7f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x7f, 0x76, 0x5f,
0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x56, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x76, 0x5f, 0x56, 0x5f, 0x65, 0x6f,
0x56, 0x6f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x44, 0x4f, 0x55, 0x6f, 0x76, 0x5f, 0x87, 0x4f,
0xaa, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xaa, 0x3f, 0xaa, 0x3f, 0xa9, 0x4f, 0x98, 0x4f, 0x66, 0x5f, 0x55, 0x5f,
0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x65, 0x7f, 0x67, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x54, 0x6f,
0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f,
0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f,
0x77, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x65, 0x6f, 0x77, 0x5f,
0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x55, 0x4f, 0x44, 0x4f, 0x44, 0x4f, 0x44, 0x5f,
0x55, 0x4f, 0x54, 0x5f, 0x66, 0x5f, 0x77, 0x4f, 0xaa, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xaa, 0x3f, 0xaa, 0x3f,
0x99, 0x4f, 0x88, 0x4f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x77, 0x6f,
0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x54, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x44, 0x5f,
0x55, 0x6f, 0x66, 0x4f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x4f,
0x54, 0x4f, 0x45, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x54, 0x4f, 0x55, 0x5f,
0x55, 0x6f, 0x77, 0x7f, 0x66, 0x5f, 0x65, 0x5f, 0x56, 0x6f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x44, 0x4f, 0x44, 0x6f, 0x66, 0x5f, 0x88, 0x4f, 0xaa, 0x4f, 0xbb, 0x4f,
0xba, 0x4f, 0xba, 0x4f, 0xaa, 0x3f, 0xaa, 0x3f, 0x99, 0x4f, 0x88, 0x5f, 0x77, 0x6f, 0x76, 0x6f, 0x56, 0x6f, 0x76, 0x6f,
0x66, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x45, 0x4f,
0x44, 0x4f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f,
0x76, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x54, 0x5f, 0x45, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x55, 0x6f,
0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x65, 0x5f, 0x66, 0x5f,
0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x65, 0x5f, 0x66, 0x5f, 0x55, 0x4f,
0x55, 0x5f, 0x88, 0x4f, 0xa9, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xaa, 0x3f, 0xaa, 0x3f, 0xa9, 0x3f, 0x99, 0x4f, 0x98, 0x5f,
0x88, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x65, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f,
0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x4f,
0x54, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x54, 0x5f, 0x55, 0x4f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f,
0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x76, 0x6f, 0x55, 0x5f, 0x65, 0x5f,
0x55, 0x5f, 0x56, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x87, 0x4f, 0xa9, 0x4f, 0xba, 0x4f, 0xaa, 0x3f, 0xaa, 0x3f,
0xaa, 0x3f, 0xa9, 0x3f, 0x99, 0x4f, 0x88, 0x5f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x65, 0x7f,
0x77, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f,
0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f,
0x56, 0x6f, 0x66, 0x4f, 0x44, 0x4f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x56, 0x6f, 0x65, 0x5f, 0x56, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x87, 0x4f,
0x99, 0x3f, 0xaa, 0x3f, 0xaa, 0x3f, 0xaa, 0x3f, 0xa9, 0x3f, 0x99, 0x3f, 0x99, 0x4f, 0x88, 0x5f, 0x87, 0x6f, 0x66, 0x5f,
0x65, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f,
0x65, 0x5f, 0x55, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x65, 0x5f, 0x66, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x44, 0x4f, 0x54, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x65, 0x6f, 0x56, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x67, 0x6f, 0x65, 0x5f, 0x56, 0x5f, 0x65, 0x6f,
0x66, 0x6f, 0x66, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f,
0x76, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x78, 0x4f, 0x98, 0x3f, 0xa9, 0x3f, 0xa9, 0x3f, 0xa9, 0x3f, 0x99, 0x3f, 0x99, 0x3f,
0x99, 0x4f, 0x88, 0x5f, 0x77, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x7f, 0x77, 0x6f, 0x77, 0x5f, 0x55, 0x6f,
0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x4f, 0x55, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x65, 0x6f, 0x56, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f,
0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x6f,
0x66, 0x6f, 0x77, 0x7f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f,
0x76, 0x7f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x88, 0x4f, 0x88, 0x3f, 0x99, 0x3f,
0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x88, 0x5f, 0x87, 0x7f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f,
0x76, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f,
0x65, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x76, 0x5f,
0x55, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x4f, 0x55, 0x6f,
0x76, 0x5f, 0x66, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f,
0x66, 0x4f, 0x76, 0x4f, 0x88, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x4f, 0x88, 0x5f,
0x77, 0x5f, 0x56, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x76, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x4f, 0x54, 0x5f,
0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x7f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x56, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x4f, 0x44, 0x6f, 0x66, 0x6f,
0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x65, 0x6f, 0x77, 0x6f, 0x55, 0x6f,
0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x55, 0x5f, 0x55, 0x5f, 0x56, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x77, 0x4f, 0x88, 0x3f, 0x98, 0x3f, 0x99, 0x3f, 0x99, 0x3f,
0x99, 0x3f, 0x99, 0x3f, 0x98, 0x3f, 0x88, 0x4f, 0x77, 0x6f, 0x65, 0x5f, 0x56, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f,
0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x7f, 0x77, 0x6f,
0x66, 0x5f, 0x55, 0x4f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x6f,
0x66, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x55, 0x6f, 0x76, 0x7f, 0x77, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x55, 0x6f, 0x77, 0x5f,
0x65, 0x6f, 0x67, 0x6f, 0x65, 0x5f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f,
0x76, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x65, 0x5f, 0x56, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x77, 0x4f,
0x88, 0x3f, 0x98, 0x3f, 0x98, 0x3f, 0x98, 0x3f, 0x98, 0x3f, 0x98, 0x3f, 0x98, 0x3f, 0x88, 0x5f, 0x77, 0x6f, 0x66, 0x4f,
0x54, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x65, 0x6f, 0x66, 0x6f,
0x77, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f,
0x66, 0x6f, 0x66, 0x6f, 0x77, 0x7f, 0x77, 0x6f, 0x66, 0x5f, 0x65, 0x4f, 0x44, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f,
0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x67, 0x6f, 0x76, 0x6f,
0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f,
0x65, 0x6f, 0x67, 0x6f, 0x66, 0x4f, 0x76, 0x3f, 0x88, 0x3f, 0x98, 0x3f, 0x98, 0x3f, 0x98, 0x3f, 0x98, 0x3f, 0x98, 0x3f,
0x98, 0x3f, 0x88, 0x4f, 0x66, 0x4f, 0x44, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f,
0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x65, 0x6f, 0x76, 0x6f, 0x77, 0x5f, 0x65, 0x6f, 0x56, 0x6f,
0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x6f,
0x66, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x66, 0x6f, 0x66, 0x5f,
0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x87, 0x3f, 0x88, 0x3f, 0x98, 0x3f,
0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x4f, 0x88, 0x4f, 0x77, 0x4f, 0x55, 0x6f, 0x66, 0x4f, 0x54, 0x6f,
0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f,
0x77, 0x7f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x56, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x66, 0x5f,
0x55, 0x7f, 0x77, 0x5f, 0x65, 0x5f, 0x56, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x66, 0x6f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x66, 0x5f, 0x55, 0x7f, 0x76, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f,
0x66, 0x5f, 0x77, 0x3f, 0x88, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x4f, 0x98, 0x5f,
0x77, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x67, 0x5f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x55, 0x6f,
0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x66, 0x4f, 0x55, 0x6f, 0x55, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x76, 0x6f,
0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x88, 0x4f, 0x88, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f,
0x99, 0x3f, 0x99, 0x3f, 0xa9, 0x4f, 0x99, 0x5f, 0x87, 0x5f, 0x65, 0x5f, 0x65, 0x6f, 0x67, 0x5f, 0x54, 0x5f, 0x55, 0x6f,
0x66, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x66, 0x4f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f,
0x55, 0x7f, 0x77, 0x6f, 0x76, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x66, 0x6f,
0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x56, 0x7f, 0x77, 0x6f, 0x76, 0x5f, 0x55, 0x5f,
0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f,
0x77, 0x6f, 0x65, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x88, 0x4f,
0x98, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0x99, 0x3f, 0xa9, 0x3f, 0xaa, 0x4f, 0xaa, 0x4f, 0x99, 0x5f, 0x88, 0x7f, 0x77, 0x6f,
0x66, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x65, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x7f, 0x77, 0x6f, 0x76, 0x5f, 0x55, 0x4f,
0x55, 0x6f, 0x66, 0x6f, 0x76, 0x7f, 0x77, 0x5f, 0x65, 0x7f, 0x77, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x76, 0x6f, 0x67, 0x6f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x65, 0x6f, 0x77, 0x5f, 0x55, 0x6f,
0x66, 0x6f, 0x76, 0x7f, 0x77, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x4f, 0x44, 0x4f,
0x54, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x77, 0x4f, 0x99, 0x3f, 0xa9, 0x3f, 0xa9, 0x3f, 0xaa, 0x3f, 0xaa, 0x4f, 0xaa, 0x4f,
0xba, 0x4f, 0xaa, 0x6f, 0x88, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x6f,
0x65, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f,
0x65, 0x5f, 0x55, 0x6f, 0x67, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f,
0x55, 0x4f, 0x54, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x56, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f,
0x56, 0x6f, 0x76, 0x7f, 0x77, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x5f,
0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x77, 0x4f, 0x99, 0x4f, 0xaa, 0x3f,
0xaa, 0x4f, 0xaa, 0x4f, 0xba, 0x4f, 0xba, 0x4f, 0xbb, 0x4f, 0xaa, 0x5f, 0x87, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f,
0x77, 0x7f, 0x76, 0x6f, 0x67, 0x6f, 0x76, 0x5f, 0x56, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x66, 0x6f,
0x66, 0x7f, 0x77, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x65, 0x7f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x65, 0x5f,
0x55, 0x6f, 0x76, 0x6f, 0x56, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f,
0x65, 0x5f, 0x87, 0x4f, 0x99, 0x4f, 0xaa, 0x4f, 0xba, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f, 0xaa, 0x5f,
0x77, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f,
0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x54, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x65, 0x6f,
0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x56, 0x4f, 0x44, 0x4f, 0x44, 0x4f,
0x44, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f,
0x77, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x55, 0x5f, 0x54, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x65, 0x6f, 0x88, 0x4f, 0xa9, 0x4f, 0xba, 0x4f, 0xbb, 0x4f, 0xbb, 0x4f,
0xcb, 0x4f, 0xcb, 0x4f, 0xcc, 0x5f, 0xba, 0x5f, 0x77, 0x7f, 0x77, 0x6f, 0x76, 0x7f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f,
0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x77, 0x6f,
0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f,
0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f,
0x66, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x65, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x77, 0x4f,
0xaa, 0x4f, 0xbb, 0x4f, 0xcb, 0x4f, 0xcc, 0x4f, 0xcc, 0x4f, 0xcc, 0x4f, 0xcc, 0x5f, 0xbb, 0x5f, 0x88, 0x5f, 0x66, 0x5f,
0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x5f,
0x65, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x56, 0x6f, 0x76, 0x5f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x5f,
0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x67, 0x5f, 0x55, 0x4f, 0x44, 0x5f, 0x55, 0x6f, 0x66, 0x6f,
0x76, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x65, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x65, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f,
0x55, 0x5f, 0x66, 0x5f, 0x66, 0x6f, 0x88, 0x4f, 0xaa, 0x4f, 0xbb, 0x4f, 0xcb, 0x4f, 0xcc, 0x4f, 0xdc, 0x4f, 0xdc, 0x4f,
0xdc, 0x5f, 0xbb, 0x5f, 0x88, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x55, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x65, 0x7f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f,
0x54, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x77, 0x5f, 0x56, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x65, 0x7f,
0x77, 0x6f, 0x76, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x6f,
0x77, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x77, 0x4f, 0xaa, 0x4f, 0xbb, 0x4f,
0xcc, 0x4f, 0xcc, 0x4f, 0xdc, 0x4f, 0xdc, 0x5f, 0xdd, 0x5f, 0xcb, 0x5f, 0x88, 0x6f, 0x77, 0x5f, 0x65, 0x6f, 0x66, 0x5f,
0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x67, 0x6f,
0x76, 0x7f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x4f, 0x44, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x77, 0x6f,
0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x7f, 0x76, 0x6f, 0x66, 0x5f,
0x66, 0x6f, 0x66, 0x7f, 0x77, 0x5f, 0x66, 0x6f, 0x55, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f,
0x55, 0x6f, 0x77, 0x7f, 0x66, 0x6f, 0x77, 0x6f, 0x65, 0x5f, 0x56, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f,
0x66, 0x5f, 0x88, 0x4f, 0xaa, 0x4f, 0xbb, 0x4f, 0xcc, 0x4f, 0xcc, 0x4f, 0xdc, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xcc, 0x5f,
0x88, 0x6f, 0x88, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x44, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f,
0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x76, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f,
0x55, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x76, 0x5f, 0x56, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x6f,
0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x76, 0x5f, 0x56, 0x5f, 0x65, 0x6f,
0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x76, 0x5f, 0x77, 0x4f, 0xaa, 0x4f, 0xcb, 0x4f, 0xcc, 0x4f, 0xdc, 0x4f,
0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xbb, 0x5f, 0x98, 0x6f, 0x87, 0x6f, 0x56, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x5f,
0x66, 0x6f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x56, 0x6f, 0x76, 0x6f, 0x76, 0x6f, 0x56, 0x6f, 0x76, 0x5f,
0x55, 0x5f, 0x65, 0x5f, 0x44, 0x5f, 0x55, 0x4f, 0x44, 0x4f, 0x44, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x66, 0x6f,
0x66, 0x5f, 0x55, 0x4f, 0x44, 0x5f, 0x54, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x67, 0x6f, 0x76, 0x7f, 0x77, 0x6f,
0x76, 0x6f, 0x67, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x55, 0x5f, 0x65, 0x7f, 0x67, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x76, 0x5f, 0x88, 0x5f,
0xba, 0x4f, 0xcc, 0x4f, 0xdc, 0x4f, 0xdc, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xcb, 0x5f, 0x88, 0x5f, 0x77, 0x6f,
0x65, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x76, 0x6f,
0x56, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x4f, 0x54, 0x5f, 0x55, 0x4f,
0x44, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x4f, 0x44, 0x4f, 0x44, 0x4f, 0x55, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f,
0x66, 0x5f, 0x56, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f,
0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x88, 0x4f, 0xbb, 0x4f, 0xdc, 0x4f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f,
0xdd, 0x5f, 0xcc, 0x5f, 0x98, 0x6f, 0x77, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f,
0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x4f,
0x44, 0x5f, 0x55, 0x5f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x4f, 0x54, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x55, 0x5f, 0x54, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x87, 0x5f, 0xbb, 0x5f, 0xdc, 0x5f,
0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xdd, 0x5f, 0xbb, 0x6f, 0x98, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f,
0x76, 0x5f, 0x66, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x56, 0x6f, 0x76, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x5f, 0x65, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x66, 0x4f,
0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f,
0x77, 0x5f, 0x77, 0x5f, 0xbb, 0x5f, 0xcc, 0x5f, 0xdc, 0x5f, 0xcc, 0x5f, 0xcc, 0x5f, 0xdc, 0x5f, 0xdc, 0x5f, 0xbb, 0x6f,
0x98, 0x6f, 0x67, 0x5f, 0x65, 0x7f, 0x77, 0x6f, 0x76, 0x5f, 0x56, 0x5f, 0x55, 0x5f, 0x66, 0x7f, 0x76, 0x5f, 0x55, 0x6f,
0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x5f, 0x56, 0x5f, 0x65, 0x6f, 0x77, 0x6f, 0x76, 0x5f,
0x55, 0x4f, 0x55, 0x4f, 0x44, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x5f,
0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x67, 0x7f,
0x76, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x54, 0x4f, 0x44, 0x4f,
0x44, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x87, 0x5f, 0xa9, 0x5f, 0xba, 0x5f, 0xaa, 0x5f, 0xaa, 0x5f,
0xba, 0x5f, 0xaa, 0x5f, 0xaa, 0x5f, 0x99, 0x5f, 0x87, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x65, 0x6f, 0x67, 0x5f, 0x65, 0x5f,
0x55, 0x5f, 0x55, 0x5f, 0x56, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x56, 0x6f,
0x65, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x67, 0x6f, 0x76, 0x5f, 0x45, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f,
0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x66, 0x6f, 0x66, 0x5f,
0x65, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f,
0x65, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x7f,
0x88, 0x5f, 0x77, 0x6f, 0x87, 0x6f, 0x87, 0x5f, 0x77, 0x5f, 0x77, 0x6f, 0x87, 0x6f, 0x88, 0x7f, 0x77, 0x6f, 0x76, 0x5f,
0x55, 0x6f, 0x77, 0x6f, 0x76, 0x7f, 0x77, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x66, 0x6f,
0x65, 0x5f, 0x66, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x76, 0x7f, 0x77, 0x5f, 0x65, 0x5f, 0x56, 0x5f, 0x55, 0x6f, 0x66, 0x5f,
0x65, 0x6f, 0x76, 0x6f, 0x77, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x5f, 0x66, 0x6f,
0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x55, 0x6f, 0x77, 0x5f, 0x66, 0x6f,
0x66, 0x5f, 0x65, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x55, 0x6f, 0x66, 0x5f,
0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x76, 0x5f, 0x56, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x66, 0x5f,
0x55, 0x7f, 0x77, 0x6f, 0x76, 0x6f, 0x77, 0x7f, 0x77, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x76, 0x5f, 0x65, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x66, 0x4f, 0x44, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x7f, 0x76, 0x6f, 0x67, 0x5f, 0x65, 0x6f,
0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x5f, 0x55, 0x6f, 0x55, 0x5f, 0x56, 0x6f, 0x66, 0x6f,
0x76, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x65, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x54, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f,
0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x67, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f,
0x77, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x76, 0x6f,
0x56, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f,
0x66, 0x5f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x77, 0x6f,
0x77, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x67, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f,
0x55, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f,
0x66, 0x6f, 0x66, 0x6f, 0x77, 0x5f, 0x65, 0x6f, 0x77, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x44, 0x5f, 0x55, 0x5f, 0x55, 0x5f,
0x65, 0x6f, 0x77, 0x6f, 0x77, 0x7f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x5f, 0x55, 0x5f,
0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x54, 0x5f,
0x66, 0x4f, 0x44, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x4f, 0x55, 0x5f, 0x44, 0x5f,
0x55, 0x4f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f, 0x66, 0x6f, 0x77, 0x6f, 0x76, 0x6f, 0x56, 0x5f,
0x65, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x6f,
0x76, 0x5f, 0x55, 0x5f, 0x56, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x6f, 0x76, 0x7f, 0x77, 0x5f, 0x65, 0x6f, 0x66, 0x6f,
0x66, 0x6f, 0x66, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x55, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x5f,
0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x56, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x55, 0x5f,
0x54, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x54, 0x5f, 0x65, 0x6f, 0x66, 0x4f, 0x44, 0x6f, 0x66, 0x6f, 0x66, 0x5f,
0x66, 0x5f, 0x45, 0x4f, 0x54, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f, 0x66, 0x6f,
0x65, 0x5f, 0x66, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x76, 0x6f, 0x66, 0x5f,
0x66, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x54, 0x5f, 0x55, 0x6f, 0x77, 0x6f, 0x76, 0x6f,
0x66, 0x6f, 0x76, 0x6f, 0x67, 0x5f, 0x55, 0x6f, 0x76, 0x6f, 0x66, 0x4f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x65, 0x6f,
0x66, 0x5f, 0x66, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x6f, 0x65, 0x5f, 0x56, 0x6f,
0x65, 0x5f, 0x55, 0x5f, 0x55, 0x4f, 0x44, 0x4f, 0x44, 0x6f, 0x66, 0x5f, 0x55, 0x6f, 0x66, 0x5f, 0x66, 0x5f, 0x55, 0x6f,
0x66, 0x4f, 0x44, 0x4f, 0x54, 0x6f, 0x66, 0x5f, 0x55, 0x5f, 0x65, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f, 0x55, 0x5f,
0x66, 0x6f, 0x66, 0x6f, 0x65, 0x6f, 0x66, 0x6f, 0x66, 0x6f, 0x66 };

View File

@ -61,6 +61,21 @@ typedef struct {
}; };
} td_param; } td_param;
typedef enum {
TCAT_STACK,
TCAT_GEN,
TCAT_DRAW,
TCAT_MOD,
TCAT_FORCE_UINT8 = UINT8_MAX
} tcat_kind;
typedef struct {
tcat_kind kind;
char const *icon;
Color color;
} tcat_desc;
typedef enum { typedef enum {
TOP_NEW_IMAGE, TOP_NEW_IMAGE,
TOP_DRAW_RECT, TOP_DRAW_RECT,
@ -95,6 +110,7 @@ typedef enum {
typedef struct { typedef struct {
td_op_kind kind; td_op_kind kind;
char const *name; char const *name;
tcat_kind cat;
bool is_hidden; bool is_hidden;
bool is_locked; bool is_locked;
@ -248,16 +264,6 @@ void texed_run(int argc, char **argv) {
texed_new(TD_DEFAULT_IMG_WIDTH, TD_DEFAULT_IMG_HEIGHT); texed_new(TD_DEFAULT_IMG_WIDTH, TD_DEFAULT_IMG_HEIGHT);
{
GuiSetStyle(TEXTBOX, TEXT_COLOR_NORMAL, ColorToInt(RAYWHITE));
GuiSetStyle(DEFAULT, BACKGROUND_COLOR, 0x012e33ff);
GuiSetStyle(BUTTON, BASE, 0x202020ff);
GuiSetStyle(BUTTON, BASE + GUI_STATE_DISABLED*3, 0x303030ff);
GuiSetStyle(BUTTON, TEXT + GUI_STATE_FOCUSED*3, 0x303030ff);
GuiSetStyle(DEFAULT, TEXT_COLOR_NORMAL, 0xffffffff);
GuiSetStyle(LISTVIEW, SCROLLBAR_SIDE, SCROLLBAR_LEFT_SIDE);
}
while (1) { while (1) {
zpl_aabb2 screen = { zpl_aabb2 screen = {
.min = (zpl_vec2) {.x = 0.0f, .y = 0.0f}, .min = (zpl_vec2) {.x = 0.0f, .y = 0.0f},
@ -286,6 +292,18 @@ void texed_run(int argc, char **argv) {
ctx.fileDialog = InitGuiFileDialog(420, 310, zpl_bprintf("%s/art", GetWorkingDirectory()), false); ctx.fileDialog = InitGuiFileDialog(420, 310, zpl_bprintf("%s/art", GetWorkingDirectory()), false);
} }
// NOTE(zaklaus): ensure we reset styling to our defaults each frame
{
GuiSetStyle(TEXTBOX, TEXT_COLOR_NORMAL, ColorToInt(RAYWHITE));
GuiSetStyle(DEFAULT, BACKGROUND_COLOR, 0x012e33ff);
GuiSetStyle(BUTTON, BASE, 0x202020ff);
GuiSetStyle(BUTTON, BASE + GUI_STATE_DISABLED*3, 0x303030ff);
GuiSetStyle(BUTTON, TEXT + GUI_STATE_FOCUSED*3, 0x303030ff);
GuiSetStyle(BUTTON, BORDER, 0xffffffff);
GuiSetStyle(DEFAULT, TEXT_COLOR_NORMAL, 0xffffffff);
GuiSetStyle(LISTVIEW, SCROLLBAR_SIDE, SCROLLBAR_LEFT_SIDE);
}
BeginDrawing(); BeginDrawing();
ClearBackground(GetColor(0x222034)); ClearBackground(GetColor(0x222034));
{ {

View File

@ -6,6 +6,7 @@
static td_op default_ops[] = { static td_op default_ops[] = {
{ {
OP(TOP_NEW_IMAGE), OP(TOP_NEW_IMAGE),
.cat = TCAT_STACK,
.is_locked = true, .is_locked = true,
PARAMS(3) { PARAMS(3) {
PARAM(TPARAM_COORD, "w", "64"), PARAM(TPARAM_COORD, "w", "64"),
@ -14,6 +15,7 @@ static td_op default_ops[] = {
} }
},{ },{
OP(TOP_PUSH_IMAGE), OP(TOP_PUSH_IMAGE),
.cat = TCAT_STACK,
PARAMS(3) { PARAMS(3) {
PARAM(TPARAM_COORD, "w", "64"), PARAM(TPARAM_COORD, "w", "64"),
PARAM(TPARAM_COORD, "h", "64"), PARAM(TPARAM_COORD, "h", "64"),
@ -21,6 +23,7 @@ static td_op default_ops[] = {
} }
},{ },{
OP(TOP_POP_IMAGE), OP(TOP_POP_IMAGE),
.cat = TCAT_STACK,
PARAMS(5) { PARAMS(5) {
PARAM(TPARAM_COORD, "x", "0"), PARAM(TPARAM_COORD, "x", "0"),
PARAM(TPARAM_COORD, "y", "0"), PARAM(TPARAM_COORD, "y", "0"),
@ -30,14 +33,17 @@ static td_op default_ops[] = {
} }
},{ },{
OP(TOP_IMAGE_ALPHA_MASK), OP(TOP_IMAGE_ALPHA_MASK),
.cat = TCAT_STACK,
},{ },{
OP(TOP_IMAGE_ALPHA_MASK_CLEAR), OP(TOP_IMAGE_ALPHA_MASK_CLEAR),
.cat = TCAT_STACK,
PARAMS(2) { PARAMS(2) {
PARAM(TPARAM_COLOR, "color", "ffffffff"), PARAM(TPARAM_COLOR, "color", "ffffffff"),
PARAM(TPARAM_FLOAT, "threshold", "1.0"), PARAM(TPARAM_FLOAT, "threshold", "1.0"),
} }
},{ },{
OP(TOP_DRAW_RECT), OP(TOP_DRAW_RECT),
.cat = TCAT_DRAW,
PARAMS(5) { PARAMS(5) {
PARAM(TPARAM_COORD, "x", "0"), PARAM(TPARAM_COORD, "x", "0"),
PARAM(TPARAM_COORD, "y", "0"), PARAM(TPARAM_COORD, "y", "0"),
@ -47,6 +53,7 @@ static td_op default_ops[] = {
} }
},{ },{
OP(TOP_DRAW_LINE), OP(TOP_DRAW_LINE),
.cat = TCAT_DRAW,
PARAMS(5) { PARAMS(5) {
PARAM(TPARAM_COORD, "x1", "0"), PARAM(TPARAM_COORD, "x1", "0"),
PARAM(TPARAM_COORD, "y1", "0"), PARAM(TPARAM_COORD, "y1", "0"),
@ -56,6 +63,7 @@ static td_op default_ops[] = {
} }
},{ },{
OP(TOP_DRAW_IMAGE), OP(TOP_DRAW_IMAGE),
.cat = TCAT_DRAW,
PARAMS(8) { PARAMS(8) {
PARAM(TPARAM_STRING, "src", "samples/test.png"), PARAM(TPARAM_STRING, "src", "samples/test.png"),
PARAM(TPARAM_COORD, "x", "0"), PARAM(TPARAM_COORD, "x", "0"),
@ -68,6 +76,7 @@ static td_op default_ops[] = {
} }
},{ },{
OP(TOP_DRAW_TEXT), OP(TOP_DRAW_TEXT),
.cat = TCAT_DRAW,
PARAMS(5) { PARAMS(5) {
PARAM(TPARAM_STRING, "text", "hello world"), PARAM(TPARAM_STRING, "text", "hello world"),
PARAM(TPARAM_COORD, "x", "0"), PARAM(TPARAM_COORD, "x", "0"),
@ -77,6 +86,7 @@ static td_op default_ops[] = {
} }
},{ },{
OP(TOP_DITHER), OP(TOP_DITHER),
.cat = TCAT_MOD,
PARAMS(4) { PARAMS(4) {
PARAM(TPARAM_INT, "r_bpp", "4"), PARAM(TPARAM_INT, "r_bpp", "4"),
PARAM(TPARAM_INT, "g_bpp", "4"), PARAM(TPARAM_INT, "g_bpp", "4"),
@ -85,6 +95,7 @@ static td_op default_ops[] = {
} }
},{ },{
OP(TOP_RESIZE_IMAGE), OP(TOP_RESIZE_IMAGE),
.cat = TCAT_MOD,
PARAMS(3) { PARAMS(3) {
PARAM(TPARAM_COORD, "w", "64"), PARAM(TPARAM_COORD, "w", "64"),
PARAM(TPARAM_COORD, "h", "64"), PARAM(TPARAM_COORD, "h", "64"),
@ -92,6 +103,7 @@ static td_op default_ops[] = {
} }
},{ },{
OP(TOP_COLOR_TWEAKS), OP(TOP_COLOR_TWEAKS),
.cat = TCAT_MOD,
PARAMS(5) { PARAMS(5) {
PARAM(TPARAM_SLIDER, "contrast", "0.5"), PARAM(TPARAM_SLIDER, "contrast", "0.5"),
PARAM(TPARAM_SLIDER, "brightness", "0.5"), PARAM(TPARAM_SLIDER, "brightness", "0.5"),
@ -101,24 +113,28 @@ static td_op default_ops[] = {
} }
},{ },{
OP(TOP_COLOR_REPLACE), OP(TOP_COLOR_REPLACE),
.cat = TCAT_MOD,
PARAMS(2) { PARAMS(2) {
PARAM(TPARAM_COLOR, "original", "FFFFFFFF"), PARAM(TPARAM_COLOR, "original", "FFFFFFFF"),
PARAM(TPARAM_COLOR, "new", "FF0000FF"), PARAM(TPARAM_COLOR, "new", "FF0000FF"),
} }
},{ },{
OP(TOP_IMAGE_GRAD_V), OP(TOP_IMAGE_GRAD_V),
.cat = TCAT_GEN,
PARAMS(2) { PARAMS(2) {
PARAM(TPARAM_COLOR, "top", "ffffffff"), PARAM(TPARAM_COLOR, "top", "ffffffff"),
PARAM(TPARAM_COLOR, "bottom", "00000000"), PARAM(TPARAM_COLOR, "bottom", "00000000"),
} }
},{ },{
OP(TOP_IMAGE_GRAD_H), OP(TOP_IMAGE_GRAD_H),
.cat = TCAT_GEN,
PARAMS(2) { PARAMS(2) {
PARAM(TPARAM_COLOR, "left", "ffffffff"), PARAM(TPARAM_COLOR, "left", "ffffffff"),
PARAM(TPARAM_COLOR, "right", "00000000"), PARAM(TPARAM_COLOR, "right", "00000000"),
} }
},{ },{
OP(TOP_IMAGE_GRAD_RAD), OP(TOP_IMAGE_GRAD_RAD),
.cat = TCAT_GEN,
PARAMS(3) { PARAMS(3) {
PARAM(TPARAM_FLOAT, "density", "0.5"), PARAM(TPARAM_FLOAT, "density", "0.5"),
PARAM(TPARAM_COLOR, "inner", "ffffffff"), PARAM(TPARAM_COLOR, "inner", "ffffffff"),
@ -126,6 +142,7 @@ static td_op default_ops[] = {
} }
},{ },{
OP(TOP_IMAGE_CHECKED), OP(TOP_IMAGE_CHECKED),
.cat = TCAT_GEN,
PARAMS(4) { PARAMS(4) {
PARAM(TPARAM_COORD, "checks_x", "16"), PARAM(TPARAM_COORD, "checks_x", "16"),
PARAM(TPARAM_COORD, "checks_y", "16"), PARAM(TPARAM_COORD, "checks_y", "16"),
@ -134,12 +151,14 @@ static td_op default_ops[] = {
} }
},{ },{
OP(TOP_IMAGE_NOISE_WHITE), OP(TOP_IMAGE_NOISE_WHITE),
.cat = TCAT_GEN,
PARAMS(2) { PARAMS(2) {
PARAM(TPARAM_COORD, "seed", "1"), PARAM(TPARAM_COORD, "seed", "1"),
PARAM(TPARAM_FLOAT, "factor", "0.5"), PARAM(TPARAM_FLOAT, "factor", "0.5"),
} }
},{ },{
OP(TOP_IMAGE_NOISE_PERLIN), OP(TOP_IMAGE_NOISE_PERLIN),
.cat = TCAT_GEN,
PARAMS(3) { PARAMS(3) {
PARAM(TPARAM_COORD, "offset_x", "0"), PARAM(TPARAM_COORD, "offset_x", "0"),
PARAM(TPARAM_COORD, "offset_y", "0"), PARAM(TPARAM_COORD, "offset_y", "0"),
@ -147,6 +166,7 @@ static td_op default_ops[] = {
} }
},{ },{
OP(TOP_IMAGE_CELLULAR), OP(TOP_IMAGE_CELLULAR),
.cat = TCAT_GEN,
PARAMS(2) { PARAMS(2) {
PARAM(TPARAM_COORD, "seed", "1"), PARAM(TPARAM_COORD, "seed", "1"),
PARAM(TPARAM_COORD, "tile_size", "16"), PARAM(TPARAM_COORD, "tile_size", "16"),
@ -155,3 +175,10 @@ static td_op default_ops[] = {
}; };
#define DEF_OPS_LEN (int)(sizeof(default_ops) / (sizeof(default_ops[0]))) #define DEF_OPS_LEN (int)(sizeof(default_ops) / (sizeof(default_ops[0])))
static tcat_desc default_cats[] = {
{.kind = TCAT_STACK, .icon = "#197#", .color = RED},
{.kind = TCAT_GEN, .icon = "#197#", .color = BLUE},
{.kind = TCAT_DRAW, .icon = "#197#", .color = GREEN},
{.kind = TCAT_MOD, .icon = "#197#", .color = ORANGE},
};

View File

@ -8,6 +8,9 @@ bool GuiValueBoxEco(Rectangle bounds, const char *text, int *value, int minValue
static inline static inline
bool IsCtrlAcceleratorPressed(char key); bool IsCtrlAcceleratorPressed(char key);
static inline
char const *prettify_op_name(int idx);
void texed_draw_topbar(zpl_aabb2 r) { void texed_draw_topbar(zpl_aabb2 r) {
zpl_aabb2 zoom_ctrl_r = zpl_aabb2_cut_left(&r, 150.0f); zpl_aabb2 zoom_ctrl_r = zpl_aabb2_cut_left(&r, 150.0f);
@ -140,7 +143,7 @@ void texed_draw_topbar(zpl_aabb2 r) {
void texed_draw_oplist_pane(zpl_aabb2 r) { void texed_draw_oplist_pane(zpl_aabb2 r) {
// NOTE(zaklaus): add operator // NOTE(zaklaus): add operator
{ {
zpl_aabb2 add_op_r = zpl_aabb2_cut_right(&r, 180.0f); zpl_aabb2 add_op_r = zpl_aabb2_cut_right(&r, 200.0f);
DrawAABB(add_op_r, GetColor(0x122025)); DrawAABB(add_op_r, GetColor(0x122025));
add_op_r = zpl_aabb2_contract(&add_op_r, 3.0f); add_op_r = zpl_aabb2_contract(&add_op_r, 3.0f);
Rectangle panel_rec = aabb2_ray(add_op_r); Rectangle panel_rec = aabb2_ray(add_op_r);
@ -153,18 +156,30 @@ void texed_draw_oplist_pane(zpl_aabb2 r) {
Rectangle view = GuiScrollPanel(panel_rec, aabb2_ray(add_op_r), &panel_scroll); Rectangle view = GuiScrollPanel(panel_rec, aabb2_ray(add_op_r), &panel_scroll);
BeginScissorMode(view.x, view.y, view.width, view.height); BeginScissorMode(view.x, view.y, view.width, view.height);
GuiSetStyle(BUTTON, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_LEFT);
for (int i = 0; i < DEF_OPS_LEN; i += 1) { for (int i = 0; i < DEF_OPS_LEN; i += 1) {
if (default_ops[i].is_locked) continue; if (default_ops[i].is_locked) continue;
tcat_desc cat_info = default_cats[default_ops[i].cat];
Color color = cat_info.color;
zpl_aabb2 add_op_btn_r = zpl_aabb2_cut_top(&add_op_r, 22.5f); zpl_aabb2 add_op_btn_r = zpl_aabb2_cut_top(&add_op_r, 22.5f);
add_op_btn_r.min.y += panel_scroll.y; add_op_btn_r.min.y += panel_scroll.y;
add_op_btn_r.max.y += panel_scroll.y; add_op_btn_r.max.y += panel_scroll.y;
add_op_btn_r.max.x -= 2.0f;
zpl_aabb2_cut_bottom(&add_op_btn_r, 2.5f); zpl_aabb2_cut_bottom(&add_op_btn_r, 2.5f);
if (GuiButton(aabb2_ray(add_op_btn_r), default_ops[i].name)) {
GuiSetStyle(BUTTON, BORDER, ColorToInt(Fade(color, 0.89f)));
GuiSetStyle(BUTTON, BORDER_WIDTH, 1);
if (GuiButton(aabb2_ray(add_op_btn_r), prettify_op_name(i))) {
texed_add_op(default_ops[i].kind); texed_add_op(default_ops[i].kind);
} }
GuiSetStyle(BUTTON, BORDER, 0x838383ff);
GuiSetStyle(BUTTON, BORDER_WIDTH, 2);
} }
GuiSetStyle(BUTTON, TEXT_ALIGNMENT, GUI_TEXT_ALIGN_CENTER);
EndScissorMode(); EndScissorMode();
} }
@ -183,26 +198,17 @@ void texed_draw_oplist_pane(zpl_aabb2 r) {
// NOTE(zaklaus): operator list // NOTE(zaklaus): operator list
for (int i = 0; i < zpl_array_count(ctx.ops); i += 1) { for (int i = 0; i < zpl_array_count(ctx.ops); i += 1) {
td_op *op = &ctx.ops[i];
zpl_aabb2 op_item_r = zpl_aabb2_cut_top(&r, 25.0f); zpl_aabb2 op_item_r = zpl_aabb2_cut_top(&r, 25.0f);
op_item_r.min.y += panel_scroll.y; op_item_r.min.y += panel_scroll.y;
op_item_r.max.y += panel_scroll.y; op_item_r.max.y += panel_scroll.y;
zpl_aabb2_cut_top(&op_item_r, 2.5f); zpl_aabb2_cut_top(&op_item_r, 2.5f);
zpl_aabb2_cut_bottom(&op_item_r, 2.5f); zpl_aabb2_cut_bottom(&op_item_r, 2.5f);
Rectangle list_item = aabb2_ray(op_item_r); Rectangle list_item = aabb2_ray(op_item_r);
Color bg_color = BLUE; tcat_desc cat_info = default_cats[default_ops[texed_find_op(op->kind)].cat];
Color bg_color = cat_info.color;
if (ctx.selected_op == i) {
bg_color = GREEN;
}
else if (ctx.ops[i].is_hidden) {
bg_color = RED;
}
else if (ctx.ops[i].is_locked) {
bg_color = SKYBLUE;
}
DrawRectangleRec(list_item, ColorAlpha(bg_color, 0.4f));
DrawRectangleRec(list_item, ColorAlpha(bg_color, ctx.selected_op == i ? 0.6f : 0.325f));
zpl_aabb2 swap_r = zpl_aabb2_cut_left(&op_item_r, 50.0f); zpl_aabb2 swap_r = zpl_aabb2_cut_left(&op_item_r, 50.0f);
Rectangle list_text = aabb2_ray(op_item_r); Rectangle list_text = aabb2_ray(op_item_r);
@ -210,41 +216,61 @@ void texed_draw_oplist_pane(zpl_aabb2 r) {
zpl_aabb2 swap_top = zpl_aabb2_cut_left(&swap_r, aabb2_ray(swap_r).width/2.0f); zpl_aabb2 swap_top = zpl_aabb2_cut_left(&swap_r, aabb2_ray(swap_r).width/2.0f);
zpl_aabb2 swap_bottom = swap_r; zpl_aabb2 swap_bottom = swap_r;
if (i == 0 || ctx.ops[i].is_locked || (i > 0 && ctx.ops[i-1].is_locked)) GuiSetState(GUI_STATE_DISABLED); if (i == 0 || op->is_locked || (i > 0 && ctx.ops[i-1].is_locked)) GuiSetState(GUI_STATE_DISABLED);
if (GuiButton(aabb2_ray(swap_top), "#121#")) { if (GuiButton(aabb2_ray(swap_top), "#121#")) {
texed_swp_op(i, i-1); texed_swp_op(i, i-1);
} }
GuiSetState(GUI_STATE_NORMAL); GuiSetState(GUI_STATE_NORMAL);
if (ctx.ops[i].is_locked || (i+1 < zpl_array_count(ctx.ops) && ctx.ops[i+1].is_locked) || i+1 >= zpl_array_count(ctx.ops)) GuiSetState(GUI_STATE_DISABLED); if (op->is_locked || (i+1 < zpl_array_count(ctx.ops) && ctx.ops[i+1].is_locked) || i+1 >= zpl_array_count(ctx.ops)) GuiSetState(GUI_STATE_DISABLED);
if (GuiButton(aabb2_ray(swap_bottom), "#120#")) { if (GuiButton(aabb2_ray(swap_bottom), "#120#")) {
texed_swp_op(i, i+1); texed_swp_op(i, i+1);
} }
GuiSetState(GUI_STATE_NORMAL); GuiSetState(GUI_STATE_NORMAL);
zpl_aabb2 theme_stripe = zpl_aabb2_add_right(&swap_r, 3.0f);
if (op->is_locked && op->is_hidden) {
zpl_aabb2 stripe_bottom = zpl_aabb2_cut_bottom(&theme_stripe, (theme_stripe.max.y-theme_stripe.min.y)/2.0f);
DrawAABB(theme_stripe, SKYBLUE);
DrawAABB(stripe_bottom, RED);
} else if (op->is_locked) {
DrawAABB(theme_stripe, SKYBLUE);
} else if (op->is_hidden) {
DrawAABB(theme_stripe, RED);
}
zpl_aabb2 remove_r = zpl_aabb2_cut_right(&op_item_r, 20.0f); zpl_aabb2 remove_r = zpl_aabb2_cut_right(&op_item_r, 20.0f);
if (ctx.ops[i].is_locked) GuiSetState(GUI_STATE_DISABLED); if (op->is_locked) GuiSetState(GUI_STATE_DISABLED);
if (GuiButton(aabb2_ray(remove_r), "#143#")) { if (GuiButton(aabb2_ray(remove_r), "#143#")) {
texed_rem_op(i); texed_rem_op(i);
} }
zpl_aabb2 hidden_r = zpl_aabb2_cut_right(&op_item_r, 20.0f); zpl_aabb2 hidden_r = zpl_aabb2_cut_right(&op_item_r, 20.0f);
if (!default_ops[texed_find_op(op->kind)].is_locked) GuiSetState(GUI_STATE_NORMAL);
if (!default_ops[texed_find_op(ctx.ops[i].kind)].is_locked) GuiSetState(GUI_STATE_NORMAL); if (op->is_hidden) {
if (GuiButton(aabb2_ray(hidden_r), ctx.ops[i].is_hidden ? "#45#" : "#44#")) { GuiSetStyle(BUTTON, BASE, ColorToInt(RED));
ctx.ops[i].is_hidden = !ctx.ops[i].is_hidden; }
if (GuiButton(aabb2_ray(hidden_r), op->is_hidden ? "#45#" : "#44#")) {
op->is_hidden = !op->is_hidden;
texed_repaint_preview(); texed_repaint_preview();
} }
GuiSetStyle(BUTTON, BASE, 0x202020ff);
GuiSetState(GUI_STATE_NORMAL); GuiSetState(GUI_STATE_NORMAL);
zpl_aabb2 lock_r = zpl_aabb2_cut_right(&op_item_r, 20.0f); zpl_aabb2 lock_r = zpl_aabb2_cut_right(&op_item_r, 20.0f);
if (default_ops[texed_find_op(ctx.ops[i].kind)].is_locked) GuiSetState(GUI_STATE_DISABLED); if (default_ops[texed_find_op(op->kind)].is_locked) GuiSetState(GUI_STATE_DISABLED);
if (GuiButton(aabb2_ray(lock_r), ctx.ops[i].is_locked ? "#137#" : "#138#")) {
ctx.ops[i].is_locked = !ctx.ops[i].is_locked; if (op->is_locked) {
GuiSetStyle(BUTTON, BASE, ColorToInt(BLUE));
}
if (GuiButton(aabb2_ray(lock_r), op->is_locked ? "#137#" : "#138#")) {
op->is_locked = !op->is_locked;
ctx.is_saved = false; ctx.is_saved = false;
} }
GuiSetStyle(BUTTON, BASE, 0x202020ff);
GuiSetState(GUI_STATE_NORMAL); GuiSetState(GUI_STATE_NORMAL);
if (ctx.selected_op == i) GuiSetState(GUI_STATE_DISABLED); if (ctx.selected_op == i) GuiSetState(GUI_STATE_DISABLED);
@ -256,7 +282,7 @@ void texed_draw_oplist_pane(zpl_aabb2 r) {
} }
GuiSetState(GUI_STATE_NORMAL); GuiSetState(GUI_STATE_NORMAL);
GuiDrawText(zpl_bprintf("%s %s", ctx.ops[i].name, ctx.ops[i].is_locked ? "(locked)" : ""), GetTextBounds(LABEL, list_text), GuiGetStyle(LABEL, TEXT_ALIGNMENT), Fade(RAYWHITE, guiAlpha)); GuiDrawText(zpl_bprintf("%s %s", prettify_op_name(texed_find_op(op->kind)), op->is_locked ? "(locked)" : ""), GetTextBounds(LABEL, list_text), GuiGetStyle(LABEL, TEXT_ALIGNMENT), Fade(RAYWHITE, guiAlpha));
} }
EndScissorMode(); EndScissorMode();
@ -643,3 +669,19 @@ bool GuiValueBoxEco(Rectangle bounds, const char *text, int *value, int minValue
return pressed; return pressed;
} }
static inline
char const *prettify_op_name(int idx) {
static char name[200] = {0};
zpl_snprintf(name, 200, "%s %s", default_cats[default_ops[idx].cat].icon, default_ops[idx].name+4);
zpl_str_to_lower(name);
char *p = (char*)zpl_str_skip(name, ' ')+1;
do {
*p = zpl_char_to_upper(*p);
p = (char*)zpl_str_skip(p, '_');
if (*p) *p = ' ';
} while(*p++);
return name;
}