Reduce nRF52 infrastructure flash usage without trimming sensors
Keep Companion and Terminal Chat profiles unchanged; retain full-sensor and reduced-sensor OTA builds. Add compact crypto and OTA names, qualified display asset compression, font license packaging, and scope regression tests.
This commit is contained in:
1 parent
010374d7db
commit
8a69e73226
44 files changed
+11150
-14
No files matched your search
@@ -0,0 +1,18 @@
|
||||
/* Keep the exact P-256 domain used by Bluefruit Secure Connections. The
|
||||
* pinned CC310 archive's generic getter otherwise retains every legacy EC
|
||||
* curve table. MeshCore identity signatures use Edwards25519 via a different
|
||||
* API and are unaffected. Build-local linker wrapping is qualified by the
|
||||
* SDK archive hash in scripts/nrf52_flash_trim.py, never by MCU name alone.
|
||||
*/
|
||||
#if defined(MESH_NRF52_FLASH_TRIM) && MESH_NRF52_FLASH_TRIM
|
||||
#include <stddef.h>
|
||||
#include "crys_ecpki_domain.h"
|
||||
|
||||
extern const CRYS_ECPKI_Domain_t *SaSi_ECPKI_GetSecp256r1DomainP(void);
|
||||
|
||||
const CRYS_ECPKI_Domain_t *__wrap_CRYS_ECPKI_GetEcDomain(
|
||||
CRYS_ECPKI_DomainID_t domain_id) {
|
||||
if (domain_id != CRYS_ECPKI_DomainID_secp256r1) return NULL;
|
||||
return SaSi_ECPKI_GetSecp256r1DomainP();
|
||||
}
|
||||
#endif
|
||||
@@ -242,7 +242,12 @@ bool handle_ota_command(const char* command, char* reply, mesh::MainBoard& board
|
||||
state_word(fs), have, tot, pct, midhx, age);
|
||||
}
|
||||
const char* hw = (c.hw_id[0]) ? c.hw_id : "?";
|
||||
#if OTA_TARGET_NAME_TABLE && OTA_TARGET_NAME_FRONT_CODED
|
||||
char target_name[OTA_TARGET_ENV_NAME_CAPACITY];
|
||||
const char* tenv = ota_target_env_name(c.manager.target(), target_name, sizeof target_name);
|
||||
#else
|
||||
const char* tenv = ota_target_env_name(c.manager.target()); // env name, or "?" if not in the table
|
||||
#endif
|
||||
#if defined(NRF52_PLATFORM)
|
||||
// nRF52 applies via the bootloader - show (cached) whether it can, so `ota get`/`install` won't surprise.
|
||||
// blrc = the bootloader's last apply code (diagnostic; 0xB8=success, see ota_delta.c).
|
||||
@@ -390,7 +395,12 @@ bool handle_ota_command(const char* command, char* reply, mesh::MainBoard& board
|
||||
// and flag the explicit legacy rescue path when an app-only internal-flash nRF52 has no valid EndF.
|
||||
char hwbuf[16];
|
||||
const char* fit;
|
||||
#if OTA_TARGET_NAME_TABLE && OTA_TARGET_NAME_FRONT_CODED
|
||||
char target_name[OTA_TARGET_ENV_NAME_CAPACITY];
|
||||
const char* env = ota_target_env_name(h->target_id, target_name, sizeof target_name);
|
||||
#else
|
||||
const char* env = ota_target_env_name(h->target_id);
|
||||
#endif
|
||||
const bool boot_package = (h->flags & MFLAG_BOOTLOADER) != 0;
|
||||
if (boot_package) {
|
||||
bool installable = false;
|
||||
|
||||
@@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
#include <stdint.h>
|
||||
#include <stddef.h>
|
||||
|
||||
// AUTO-GENERATED by tools/mota/gen_targets.py - do not edit by hand.
|
||||
// 634 OTA-capable build targets. Maps target_id (= sha2-256:4 of the target name, LE uint32)
|
||||
@@ -8,12 +9,428 @@
|
||||
// Size-constrained receivers can set OTA_TARGET_NAME_TABLE=0. They still match targets by ID;
|
||||
// OTA_LOCAL_TARGET_ID + OTA_LOCAL_TARGET_NAME optionally retain the local human-readable name.
|
||||
|
||||
namespace mesh { namespace ota {
|
||||
|
||||
#ifndef OTA_TARGET_NAME_TABLE
|
||||
#define OTA_TARGET_NAME_TABLE 1
|
||||
#endif
|
||||
|
||||
#ifndef OTA_TARGET_NAME_FRONT_CODED
|
||||
#define OTA_TARGET_NAME_FRONT_CODED 0
|
||||
#endif
|
||||
|
||||
#if OTA_TARGET_NAME_TABLE && OTA_TARGET_NAME_FRONT_CODED
|
||||
#include "tinf/tinf.h"
|
||||
#endif
|
||||
|
||||
namespace mesh { namespace ota {
|
||||
|
||||
#if OTA_TARGET_NAME_TABLE && OTA_TARGET_NAME_FRONT_CODED
|
||||
// All names retained. Front coding + Google Zopfli (1,000 iterations), raw DEFLATE.
|
||||
// Reuses the existing OTA tinf decoder; local chunk/caller buffers, never the live OTA context.
|
||||
// This is firmware-only storage compression: target IDs and the LoRa protocol are unchanged.
|
||||
enum { OTA_TARGET_ENV_NAME_CAPACITY = 68 };
|
||||
inline const char* ota_target_env_name(uint32_t target_id, char* buffer, size_t capacity) {
|
||||
if (!buffer || !capacity) return nullptr;
|
||||
buffer[0] = 0;
|
||||
static const uint32_t IDS[] = {
|
||||
0x149bcb23, 0x30d4e442, 0x263a8d80, 0x9070ae2c, 0xf190d834, 0x32890982, 0xacb599d5, 0x82d3b273,
|
||||
0xe96a6af8, 0x180bbe1f, 0xf9986af5, 0x98519a1d, 0x06b71719, 0x6384719d, 0x4c0461c8, 0x4fa88992,
|
||||
0xcd6604d0, 0xc54ea258, 0x217958b4, 0x03d9704a, 0x8456f753, 0xc8104197, 0xf5eb61ec, 0x70d2d590,
|
||||
0xd5e04824, 0xa416bb20, 0x875f3744, 0xdaf349be, 0x93b93199, 0x710abb59, 0x5293da13, 0xc6dd7723,
|
||||
0xf2eec98c, 0x48a986f1, 0xd2cf978c, 0x53626334, 0xefe4f19f, 0xfcaf3730, 0xd90deef7, 0x2d2a4089,
|
||||
0x89ea5c4e, 0xc0eb712a, 0x67293f43, 0x3f364910, 0xac4b4eb5, 0x822e96ca, 0xe077fb8d, 0x2bbe7fd8,
|
||||
0x9e40157c, 0xb12e6e01, 0xf6f835ec, 0x7fab017f, 0x9e23928a, 0xf310a4d1, 0xdd5953ec, 0x97574bc2,
|
||||
0x2d918a3c, 0xd1755faa, 0x8a6ceaf0, 0x57f69746, 0xbc05d6a7, 0x5bad80f1, 0xb4f727a8, 0x112d34c4,
|
||||
0xf10a26df, 0xc5409ced, 0xf9022545, 0x2023036d, 0x4abd24af, 0x35d42b35, 0x9f736ca7, 0x3fbb1498,
|
||||
0x42b0818c, 0x80dc72a9, 0xafeed10c, 0x98411ac6, 0xa14d9f4a, 0x6494fda0, 0x32bcdd14, 0xfe937f14,
|
||||
0x5b9b1933, 0x1b4399de, 0xf7e47568, 0xb1153422, 0x388f2804, 0x075ca3f9, 0x2f9f8e7d, 0xc9dc5d8c,
|
||||
0x34b0e5f3, 0xb4d0ad97, 0xcfa0e233, 0x17d5e1ff, 0xc99313c6, 0xffb3854f, 0x21a73973, 0x3067f656,
|
||||
0xfdb25057, 0x836e5931, 0x0f1767cd, 0x57172fcc, 0xa529b4f5, 0x85a8c944, 0x3c60586d, 0x0a9dbbf0,
|
||||
0xb519a89f, 0xa3e8d8ce, 0xb16009a0, 0xdc780e80, 0x28b8007c, 0x4aa63180, 0x6fddcbf1, 0xf4fb5484,
|
||||
0x2e5384e2, 0xb62a1e75, 0x9e64845d, 0x19232e8b, 0xfaf164f4, 0x38b948b4, 0x462ddb9b, 0xed21ca4f,
|
||||
0x9f5f39a7, 0x081d2219, 0x7c498bc4, 0xc283ad60, 0x4fbdc1e1, 0xc797fd73, 0xab9871c8, 0x2075687c,
|
||||
0x5d726067, 0x9969bbc9, 0x804f7a3a, 0x0823a21a, 0x22f900de, 0xaca0e153, 0x516c9c13, 0xcb1c2e65,
|
||||
0xd1b29b18, 0x644bb68d, 0xd19a9759, 0xde40f56f, 0x6dc15ab3, 0xc59d294e, 0xceeddfaf, 0x21519537,
|
||||
0x382bb181, 0xad1bcd63, 0x5a2980e6, 0x90581c83, 0x90a6a854, 0x356df17c, 0x99a084fc, 0x64c9dfc9,
|
||||
0x2a2ffc92, 0x2c13b8e9, 0x1ee7d867, 0xb016979a, 0xb49b6b55, 0x01d8f124, 0x86fb85f0, 0xd33b0986,
|
||||
0x1a4d0096, 0xa8f5940f, 0x1cf5e14c, 0x2707d3d1, 0x86ac3b1b, 0x7af848da, 0xd522a14f, 0x76657d76,
|
||||
0x21ee03bd, 0x5977d941, 0xe2a1907b, 0xbb0ca8db, 0xf75feb3e, 0xb0a1e71f, 0xbc9cdc70, 0x19e31fc6,
|
||||
0xa01b330e, 0x36c78d86, 0xdf722326, 0xfa901c87, 0xeebe3469, 0xb0f5aff6, 0x5729ad07, 0xaa2aef42,
|
||||
0xb4cb035a, 0xbb429dde, 0x883e3edc, 0x4a9d1c6c, 0xa0965a6b, 0x59ea25fa, 0x1758bdb9, 0x1313f16d,
|
||||
0x0372b0f1, 0xa2fb4192, 0xdd39457b, 0x7964461c, 0x1d1c0d92, 0x5fc52bcb, 0x0dacb683, 0xe792a051,
|
||||
0x2d5ea842, 0x30c59b1d, 0xab74db9e, 0xeed78ce4, 0x7778b7e1, 0x0b6847ed, 0xab3e1ad3, 0x04a8b763,
|
||||
0xc456437e, 0xb3ecafca, 0xf3afcde6, 0x87513d56, 0xca812b41, 0x18594231, 0x188f3ac1, 0x402055ec,
|
||||
0x12393f1f, 0x16fbab07, 0xed3ef5b8, 0x8ea86381, 0x09f57289, 0x148aeaab, 0x6e9f7fec, 0x6a25d024,
|
||||
0xc5a2cb41, 0xc4a11710, 0x753947a4, 0xe6fa98b4, 0xf8c27cf4, 0x90e227d9, 0x812f5e52, 0x61f961c5,
|
||||
0x1ddd15c8, 0x49d67d0d, 0xbc003322, 0x835b70c0, 0xd7460575, 0x36acced5, 0x33e2c171, 0x5be91148,
|
||||
0xa165ae99, 0x04c5c2b7, 0x6c1ca659, 0xa295fb04, 0x61c405ca, 0xe893fe91, 0x2b599d31, 0xf1442d25,
|
||||
0x15082ede, 0x6ff350d1, 0xe03d0cd9, 0x82e1eb2c, 0x0ee19b12, 0x6c67ed89, 0xd1c05d0d, 0xb90150b0,
|
||||
0x7285bdb3, 0x77cadc99, 0xc177e6cd, 0xf7a38993, 0x83762f33, 0x86cadda9, 0x7e49da49, 0x305d6f92,
|
||||
0xbc6b870b, 0x78845fdd, 0x6d35f434, 0xa52d76a8, 0xd8de9639, 0x8ab5c51b, 0x80097676, 0xffe70df5,
|
||||
0x3da80417, 0x47ca3c13, 0x28b499c7, 0xf1ab4c28, 0xe5331f02, 0xfba7177b, 0xde7dc472, 0x3625bb80,
|
||||
0x69df7765, 0xe9fbc9be, 0x40818863, 0x65deac33, 0xd86cf67a, 0xed73ac03, 0xab0d550a, 0x1bd2a266,
|
||||
0x3655c748, 0x9a5ae8fc, 0x1e9eb97a, 0x139536f4, 0x0716c724, 0x8de23fa7, 0xb92ec96b, 0x420ebc63,
|
||||
0x967ccaee, 0x8021afa2, 0x5f7c7688, 0xbd04e6e7, 0x1aeac884, 0x07849209, 0x0c79b100, 0xbfb60e7c,
|
||||
0x8a63de3a, 0x96036a68, 0xb76a745c, 0x43023193, 0xa7d97db7, 0x468a133e, 0xb59ea2ed, 0xbe372c6d,
|
||||
0x6215e9eb, 0x07907102, 0x3898ea56, 0x2fb7e218, 0x8c61d4c8, 0x4f722e70, 0x694eed25, 0x85b8b9d7,
|
||||
0xe8421e36, 0x82eaaf9e, 0x9f9caba4, 0xe4a2de74, 0x582c7826, 0xaeb637f1, 0x86813271, 0x67b2ff84,
|
||||
0xd0e2e616, 0x3f9edfe3, 0xc23f8082, 0x0e74ae16, 0x8f256e56, 0xf1407f39, 0xe90a3181, 0x3b1b4237,
|
||||
0x21c6d08d, 0x34302c14, 0x268d6fc1, 0xeabe3b40, 0x3c172d27, 0xf7c5d584, 0x81960cc0, 0x504020ea,
|
||||
0x9d8b60ae, 0xa2ce002f, 0xba4f47f3, 0x6f16479e, 0x1018e5d1, 0xc0ab5040, 0xa2bf90bd, 0xe6bff8f9,
|
||||
0xb9cd26cb, 0x9bc34bd5, 0x144504b0, 0xdbfe2675, 0xb00241d0, 0x88e77fee, 0xae2d9caa, 0xa0043e00,
|
||||
0x26bbf4ed, 0xdcc0f158, 0xe3320463, 0x852b928a, 0x0ec870e9, 0x8f00c1f2, 0xcea95e20, 0xd45277ff,
|
||||
0x2cad9a9d, 0x02a4a8c1, 0x4a709348, 0x35d960bd, 0x62977023, 0x17a7ed8c, 0x07f5f5b5, 0xfd0d4b8f,
|
||||
0xf5afb7dd, 0x6ebf28cb, 0x2d589527, 0x77d0810c, 0x11b131e7, 0x54850763, 0x0fa61805, 0x8039574f,
|
||||
0xa65555d6, 0x22b1804c, 0xa9f631b1, 0x49d11eca, 0xd41f0638, 0xe3105eb8, 0xf8259880, 0x063f1f00,
|
||||
0x70d71f92, 0xa8a79da5, 0xc0d3815b, 0x966ac88e, 0x104b3f8b, 0x23b49348, 0xc42cc90d, 0xc24791c3,
|
||||
0x15e11067, 0x2dbb2669, 0x90799c32, 0x881a6a48, 0xf26af51c, 0x8174cbdc, 0x0bf0f061, 0x2509dd80,
|
||||
0x56293b24, 0x8c81078c, 0xbd6a1c97, 0xf4d98c12, 0xccac4283, 0xa68c09e9, 0x5f606274, 0x84923735,
|
||||
0x2c0b8b05, 0xdba69401, 0xcb6555ee, 0xd60daf25, 0x410bd800, 0x9aca380e, 0xd8641710, 0x4d0b1601,
|
||||
0xab2ac09e, 0xa17fc4f7, 0xe4b2bd22, 0x90c4eb3f, 0x19d9ce91, 0x121cc72f, 0xfa8510fa, 0xd34d8461,
|
||||
0x98077550, 0x11628e29, 0x2ed959aa, 0xf1e7cadb, 0xced7e127, 0x6925aaf0, 0x2fa509c1, 0xa52ba3c8,
|
||||
0xaf0b81dd, 0x9f4d58ac, 0x7a55dec3, 0x5e69738a, 0x48d3b5d4, 0x14e6965d, 0x76f3c984, 0x41e33a97,
|
||||
0x29a0da19, 0x29bc38dc, 0x05f5ffae, 0xc62da371, 0xf1d3c5a8, 0xc6d55752, 0x60683191, 0x8a7cb79b,
|
||||
0x4fa4ae55, 0xd1d61a8b, 0x9cb0b232, 0x51fa1a49, 0xdb73638b, 0xd904c2d5, 0x3a14aac7, 0x620569f4,
|
||||
0x08483f6b, 0x0db48f35, 0x20532f6c, 0x293ced32, 0xb38ebf22, 0x7c89c73d, 0x2d7c11e8, 0x61b32037,
|
||||
0xad1cd53d, 0x0e18b360, 0x3caf966e, 0xcb59ea4e, 0xe3a28284, 0x05747eb6, 0x75587f24, 0xf2128c81,
|
||||
0x1b34e7b4, 0x8e549407, 0x6ca142f4, 0x1deac038, 0x2a2f303b, 0x0ba4453d, 0xf8d1958f, 0x75e85141,
|
||||
0xd62ed92e, 0x7abaf0d5, 0x87edc08b, 0x3c49caf8, 0x58689ef9, 0x91878dd8, 0x72a93c45, 0x4dbf035e,
|
||||
0xff4102d6, 0x2f9a9185, 0x000fc519, 0x7b071fa0, 0x3e55e34d, 0x54606a4f, 0x16482630, 0xce0f07ad,
|
||||
0x01c43d49, 0x51fe3801, 0x857149e5, 0xd9d64938, 0xcb7da3f5, 0x9952fbe3, 0x3729cd74, 0xdc27c37c,
|
||||
0x9b9f8775, 0xb27514a3, 0xe9ce038c, 0xe295a7a4, 0x189660b3, 0x99907475, 0x2082078d, 0x24a94c81,
|
||||
0x3750e80d, 0xe4b49973, 0xe1372b52, 0x5a79bac1, 0x6f339514, 0x8eaa289e, 0x70e91bd9, 0x5a7e9c2d,
|
||||
0x1211b151, 0x0a32044b, 0xa13fe853, 0x79b9ff01, 0xc3decea2, 0x3c012018, 0x6afd6f75, 0x7517d400,
|
||||
0xd7598668, 0x61bdb52a, 0x413287d8, 0xe8cd2377, 0x3309bdaf, 0x7330afbb, 0x9df48ce6, 0xa5cb783a,
|
||||
0x4b9f8283, 0x311846c9, 0x8b6b29b7, 0x37928233, 0x88ac45da, 0x087f99c0, 0xdf41affe, 0x2afe6c63,
|
||||
0xf2d61a1c, 0x14b1b097, 0xec334f3f, 0x1da30414, 0xae8fe1c9, 0x67acd73f, 0xfb118ed8, 0xe4213729,
|
||||
0x1298038d, 0x2c47acff, 0x7d641646, 0x51efdbfe, 0xf2aada5b, 0xe59c9373, 0x236f605c, 0x93994fed,
|
||||
0x66c47cfd, 0x48061a01, 0x7ed7137d, 0xa01688a7, 0xa5f4a562, 0xef83222b, 0xc36ec867, 0xb932238e,
|
||||
0x92f5bbea, 0x26d91ab2, 0x708ac4dc, 0xdc51bf13, 0xc27f8304, 0x7190df40, 0x609d50b3, 0x5718c7ea,
|
||||
0x37443a5b, 0x603384a7, 0xce3ef40f, 0x475a2a6a, 0xf4175d2c, 0x3d831006, 0x556eb1bc, 0xb67370b3,
|
||||
0x0c689b90, 0x91eac424, 0x7a84a8c4, 0x67843a5f, 0x0e83fd51, 0xfad357ab, 0x16af5c67, 0x8c105104,
|
||||
0xa80042a0, 0x4bff0748, 0x77c8f2b5, 0x71ee0e15, 0x8824cd0c, 0xe5439198, 0xe90a6e74, 0x833e5cdc,
|
||||
0x93145fbb, 0x8d3dd6d5, 0x33a154ff, 0x6658b418, 0x0cfb9c00, 0x964f4f5c, 0x0a5dc760, 0xd08496ce,
|
||||
0x293ac2c8, 0x60ebfa87, 0x60f5fdc2, 0xe8f79d22, 0xb97bbb15, 0xd466590c, 0x9f27be15, 0x396fecc7,
|
||||
0xf94e3407, 0xe1930103, 0xa4740508, 0x9f19bcd1, 0xfcebff61, 0xac5c1405, 0xccb734e2, 0x634ff632,
|
||||
0xf967a300, 0xa0cc1c36,
|
||||
};
|
||||
static const uint16_t OFFSETS[] = {
|
||||
0, 232, 452, 649, 874, 1085, 1312, 1549, 1773, 1968, 2187, 2428,
|
||||
2687, 2908, 3130, 3377, 3609, 3823, 4039, 4264, 4347,
|
||||
};
|
||||
static const uint16_t RAW_LENGTHS[] = {
|
||||
511, 505, 509, 512, 502, 500, 512, 510, 505, 489, 507, 507,
|
||||
490, 502, 507, 511, 509, 510, 498, 102,
|
||||
};
|
||||
static const uint16_t FIRSTS[] = {
|
||||
0, 28, 65, 94, 122, 156, 192, 226, 261, 293, 329, 361,
|
||||
394, 425, 453, 484, 517, 552, 591, 628, 634,
|
||||
};
|
||||
// 4347 encoded bytes; 20 independent chunks, at most 512 decoded bytes.
|
||||
static const uint8_t NAMES[] = {
|
||||
0x8d, 0x90, 0x03, 0x6f, 0x40, 0x41, 0x0c, 0xc7, 0xbb, 0x60, 0xb6, 0x1d, 0xcc, 0x36, 0xe2, 0xd9,
|
||||
0x66, 0xdc, 0x1c, 0x9a, 0x3c, 0xf7, 0xa5, 0x77, 0xd3, 0xa7, 0x9f, 0xed, 0xe8, 0xd8, 0x3f, 0x7e,
|
||||
0xb0, 0xaa, 0x6f, 0x3c, 0xe1, 0x2a, 0x1f, 0xa9, 0x91, 0xe3, 0x29, 0x34, 0x9c, 0xe6, 0x2a, 0x0b,
|
||||
0x39, 0x43, 0x51, 0x36, 0x64, 0xd4, 0x09, 0x41, 0xe7, 0x85, 0xd3, 0x50, 0x19, 0x87, 0xce, 0x61,
|
||||
0xca, 0x96, 0x52, 0xa8, 0x3c, 0xa2, 0x9c, 0x94, 0x27, 0x81, 0x4a, 0x61, 0x4e, 0xd1, 0x91, 0x5c,
|
||||
0x3e, 0x1c, 0x3c, 0x49, 0x1a, 0x66, 0x2a, 0x41, 0x13, 0x28, 0x0f, 0xb0, 0xbe, 0x78, 0x32, 0x33,
|
||||
0x3b, 0x89, 0x53, 0xe3, 0xc7, 0xb8, 0x4b, 0x2e, 0xc0, 0xed, 0xd0, 0x7f, 0xab, 0xdf, 0xfd, 0xa0,
|
||||
0x5f, 0xff, 0x4e, 0xbf, 0x5e, 0x9e, 0xf5, 0x31, 0x61, 0x51, 0xc8, 0x5e, 0x61, 0xc6, 0x48, 0xd7,
|
||||
0x9e, 0xe4, 0x41, 0xdd, 0x51, 0xe6, 0x58, 0x1c, 0x34, 0xbc, 0xf3, 0x2e, 0x7a, 0x74, 0x58, 0x3d,
|
||||
0x5b, 0xc2, 0x03, 0x61, 0xfc, 0x4e, 0x0b, 0xda, 0xff, 0xaf, 0x56, 0x7e, 0x22, 0xca, 0xc4, 0x24,
|
||||
0x8f, 0x62, 0xdf, 0x45, 0xee, 0x7f, 0x88, 0xdc, 0xfc, 0xce, 0xa6, 0xf9, 0x7f, 0x91, 0x5b, 0xde,
|
||||
0x9b, 0x9c, 0x2b, 0x6f, 0x82, 0x89, 0x6f, 0x99, 0x7f, 0xc0, 0x51, 0x40, 0x19, 0x49, 0x68, 0x70,
|
||||
0x75, 0x72, 0xf2, 0x7d, 0xb3, 0x72, 0x77, 0x3d, 0x31, 0x79, 0xcf, 0xf7, 0xb5, 0x60, 0xcd, 0xfc,
|
||||
0xdb, 0xbe, 0xe4, 0xf8, 0x60, 0x6f, 0xff, 0xfc, 0x51, 0xfa, 0x59, 0xf5, 0x21, 0x71, 0xd5, 0xd3,
|
||||
0xbb, 0x40, 0xf5, 0x63, 0x8e, 0x4b, 0x81, 0x3b, 0x94, 0x51, 0xb5, 0x56, 0x05, 0x41, 0x0c, 0x1d,
|
||||
0x1a, 0x74, 0xa8, 0x70, 0xff, 0x04, 0xdc, 0x5a, 0xdc, 0x5d, 0xca, 0xac, 0xe5, 0xb1, 0x39, 0x6f,
|
||||
0xec, 0x24, 0xb3, 0xec, 0xe7, 0xe3, 0xee, 0x54, 0xa3, 0xb9, 0xaa, 0x36, 0xd1, 0x21, 0x53, 0x0e,
|
||||
0xeb, 0xa7, 0x47, 0x07, 0x87, 0x97, 0x10, 0x91, 0x2d, 0xb9, 0xd4, 0x40, 0x5e, 0xa6, 0x51, 0xb5,
|
||||
0xac, 0x1f, 0x9d, 0xac, 0xc2, 0x1e, 0xb9, 0x66, 0xc3, 0xf8, 0x1a, 0x96, 0xa7, 0xa6, 0x80, 0x31,
|
||||
0x60, 0x1a, 0x91, 0x95, 0xda, 0x42, 0x13, 0x31, 0x87, 0x3c, 0x2e, 0xcc, 0x40, 0xee, 0x6d, 0x48,
|
||||
0x1d, 0x79, 0x07, 0x9c, 0x16, 0xe4, 0x21, 0x33, 0xa8, 0x26, 0x20, 0x88, 0x1a, 0xad, 0x24, 0x53,
|
||||
0xba, 0x49, 0x22, 0x60, 0x7d, 0x81, 0x56, 0xe9, 0x17, 0x80, 0x5e, 0xc8, 0x98, 0x8a, 0x2b, 0x04,
|
||||
0x94, 0xe0, 0x7c, 0xad, 0xb4, 0xa0, 0x13, 0xcf, 0xaa, 0x6d, 0x7d, 0x66, 0x7a, 0xf6, 0x2b, 0xc4,
|
||||
0xff, 0x80, 0x75, 0x7b, 0x6f, 0x41, 0x90, 0xaf, 0xef, 0xde, 0x3a, 0x96, 0xa7, 0x5e, 0xe1, 0x1e,
|
||||
0x80, 0xfa, 0xef, 0x81, 0x86, 0x1e, 0xb6, 0xff, 0x87, 0x6b, 0xb3, 0x28, 0x25, 0x88, 0x37, 0x29,
|
||||
0xbf, 0x49, 0xa3, 0x7c, 0x4c, 0x83, 0xf3, 0xd9, 0x99, 0xaf, 0xb5, 0x37, 0x2a, 0x63, 0x1e, 0x1d,
|
||||
0x8c, 0xd6, 0xd4, 0xa0, 0xff, 0x13, 0xbf, 0x04, 0xa4, 0xdf, 0x97, 0xa4, 0x6b, 0x8a, 0xa5, 0xaf,
|
||||
0x22, 0x14, 0x24, 0xc1, 0xa4, 0xb7, 0xab, 0xc4, 0x6a, 0xbd, 0x0e, 0xd8, 0x7a, 0x1d, 0x90, 0xf5,
|
||||
0x3a, 0x60, 0xeb, 0x01, 0x4c, 0x4e, 0xc5, 0x95, 0xc3, 0x40, 0x0c, 0x55, 0x01, 0x2e, 0xc1, 0x7b,
|
||||
0xf3, 0x7d, 0x99, 0x3a, 0x48, 0x17, 0xff, 0x0d, 0xc8, 0x31, 0x8e, 0xe6, 0x49, 0x13, 0xaa, 0x3e,
|
||||
0x4c, 0x37, 0xe9, 0x33, 0x75, 0x3c, 0x15, 0x0e, 0xd0, 0xf0, 0xf9, 0x81, 0x4d, 0x5f, 0x3a, 0x59,
|
||||
0x15, 0xc4, 0xde, 0xf2, 0xe4, 0x76, 0x50, 0xce, 0xec, 0x0a, 0x2b, 0x35, 0xf0, 0xda, 0xc7, 0x25,
|
||||
0x83, 0x2d, 0x27, 0xd9, 0xd0, 0x8b, 0xc8, 0x0c, 0x63, 0x5d, 0xb3, 0x52, 0x6d, 0x9c, 0x4c, 0x94,
|
||||
0x68, 0x71, 0x49, 0x2a, 0x6f, 0xff, 0x3f, 0x08, 0x32, 0x67, 0x97, 0x7a, 0x49, 0x50, 0x17, 0x7b,
|
||||
0x81, 0x9f, 0x18, 0x2d, 0xcf, 0xd2, 0xb6, 0xd4, 0x24, 0xaa, 0x57, 0xe6, 0x9f, 0xde, 0x6a, 0xec,
|
||||
0xcd, 0x30, 0x4b, 0xe4, 0x99, 0xaa, 0x5b, 0xe7, 0xad, 0x51, 0xed, 0xe3, 0xb8, 0x6c, 0x12, 0x75,
|
||||
0x90, 0xe2, 0x90, 0x04, 0xbc, 0x2d, 0xac, 0xc9, 0x4d, 0xb8, 0x14, 0x1b, 0x1d, 0x26, 0x8a, 0x57,
|
||||
0x96, 0x17, 0xc9, 0xad, 0x3c, 0x50, 0xb7, 0x72, 0x18, 0x1a, 0x9a, 0x60, 0x73, 0x23, 0xd8, 0x65,
|
||||
0x44, 0xb8, 0x87, 0x0c, 0x2b, 0x79, 0xd0, 0x02, 0x17, 0xab, 0xf5, 0x3a, 0x20, 0xeb, 0x65, 0x10,
|
||||
0xc1, 0x8e, 0x6a, 0xa9, 0x2a, 0x3e, 0x4b, 0x51, 0xe2, 0x84, 0x3d, 0xc4, 0xd0, 0xd2, 0x00, 0x6b,
|
||||
0x24, 0x40, 0xc2, 0x9e, 0x41, 0x01, 0xcc, 0x06, 0x00, 0x62, 0xf0, 0x00, 0x34, 0x46, 0xd5, 0xe8,
|
||||
0x0d, 0xc5, 0x30, 0x58, 0x53, 0x99, 0x99, 0x69, 0x2b, 0xc3, 0xd6, 0x7b, 0x74, 0xd7, 0x67, 0xd0,
|
||||
0x6b, 0xfc, 0xc0, 0x8a, 0x21, 0x70, 0xfb, 0x30, 0xf3, 0x64, 0x8b, 0x7f, 0xa0, 0x3c, 0x92, 0xc2,
|
||||
0xbf, 0xef, 0xdf, 0x2f, 0xcc, 0x4c, 0x08, 0x58, 0xb0, 0xa6, 0x02, 0x76, 0x3c, 0x95, 0x49, 0x44,
|
||||
0xf2, 0x08, 0xa7, 0xd2, 0x1b, 0xfd, 0x4f, 0x48, 0xa1, 0x6c, 0xb9, 0xd6, 0x8a, 0x59, 0x06, 0xf2,
|
||||
0xd5, 0x56, 0xa9, 0x70, 0x31, 0xc2, 0x2e, 0x73, 0x81, 0xbd, 0x04, 0x5c, 0x8c, 0xd7, 0xd6, 0xe3,
|
||||
0x37, 0x0e, 0x16, 0xe5, 0xec, 0x05, 0x72, 0x14, 0x68, 0x19, 0xa9, 0xde, 0xca, 0x58, 0x91, 0x63,
|
||||
0x20, 0x1b, 0xd8, 0x07, 0xd8, 0xe0, 0x1a, 0x79, 0xac, 0xfe, 0x0c, 0xda, 0xe1, 0x62, 0xf1, 0xc0,
|
||||
0x41, 0xd0, 0x4a, 0x78, 0xbd, 0xe2, 0x7a, 0x28, 0x75, 0x69, 0x46, 0x2f, 0x54, 0xd6, 0x3e, 0xf4,
|
||||
0x8d, 0x23, 0xc8, 0xc6, 0x41, 0x9f, 0x0e, 0x08, 0x4d, 0x56, 0x0e, 0x7e, 0x50, 0x71, 0x51, 0x16,
|
||||
0xd6, 0xb0, 0x45, 0x2f, 0xb4, 0x61, 0x94, 0x39, 0x61, 0x42, 0x05, 0x27, 0x09, 0xbc, 0x58, 0x78,
|
||||
0x4a, 0x2a, 0x79, 0xde, 0x89, 0x5b, 0xff, 0x4a, 0x90, 0xa3, 0xa5, 0x9a, 0x49, 0x4c, 0x3f, 0x7e,
|
||||
0xb5, 0x70, 0x34, 0x22, 0xf6, 0xd1, 0x80, 0xf4, 0x15, 0x8e, 0x89, 0x0d, 0xd7, 0xe3, 0x00, 0x8e,
|
||||
0x87, 0xd0, 0xe0, 0x76, 0x02, 0xdc, 0x51, 0x97, 0x2b, 0x1c, 0x45, 0xf2, 0x85, 0x69, 0x93, 0x57,
|
||||
0x25, 0x11, 0xa1, 0x6f, 0x70, 0x75, 0x26, 0x76, 0x68, 0x02, 0x62, 0xf0, 0x00, 0x14, 0x42, 0x0d,
|
||||
0xc8, 0x0e, 0x06, 0x31, 0x38, 0xc3, 0x72, 0xf0, 0x6c, 0x1d, 0xa1, 0xb8, 0x4f, 0x7e, 0x65, 0x5f,
|
||||
0x33, 0xfd, 0x17, 0xdd, 0xa4, 0xb8, 0x7d, 0x6d, 0xae, 0xf9, 0x89, 0x4a, 0xa5, 0x1c, 0x47, 0x6d,
|
||||
0xcc, 0xbd, 0x0d, 0xa9, 0x63, 0xef, 0x30, 0xa6, 0x05, 0x7b, 0xcc, 0x4a, 0xc2, 0x20, 0xf0, 0x3e,
|
||||
0x94, 0x0c, 0xde, 0xc7, 0x6c, 0x18, 0xea, 0x7d, 0x16, 0x41, 0xeb, 0x0b, 0xb2, 0x50, 0x8f, 0x14,
|
||||
0x28, 0x55, 0x8a, 0xd0, 0xf0, 0xde, 0xa2, 0x50, 0x1c, 0x51, 0x84, 0xba, 0x52, 0xb4, 0xec, 0xd2,
|
||||
0x12, 0xf3, 0x5e, 0xaa, 0x50, 0xed, 0x9c, 0x43, 0x85, 0xaf, 0x25, 0xae, 0x19, 0x96, 0xe5, 0x3e,
|
||||
0xfa, 0x37, 0xda, 0x81, 0xea, 0x05, 0x92, 0x7b, 0xcc, 0x22, 0x17, 0xff, 0x84, 0x24, 0xc1, 0xf9,
|
||||
0x31, 0xbc, 0x47, 0x69, 0x77, 0xda, 0xf0, 0xe0, 0xb3, 0x15, 0xf3, 0xea, 0xef, 0x2f, 0x0a, 0xdb,
|
||||
0x03, 0x41, 0x4f, 0x78, 0xf8, 0xa2, 0x2e, 0xe4, 0xc4, 0x9f, 0x08, 0x85, 0xde, 0x3a, 0x86, 0x2e,
|
||||
0xb6, 0x17, 0xc3, 0xa9, 0xee, 0x85, 0x5a, 0x34, 0x64, 0xbd, 0x83, 0xfa, 0x59, 0x57, 0xcb, 0x4b,
|
||||
0x63, 0xe0, 0x37, 0xc8, 0x66, 0xf9, 0xb9, 0xfd, 0xb4, 0xd8, 0xcc, 0x9d, 0x6e, 0xd7, 0x0b, 0xc3,
|
||||
0x9b, 0xcd, 0xdf, 0x42, 0xd8, 0x66, 0xd3, 0xa4, 0xc9, 0x1c, 0x58, 0xd8, 0xbb, 0x3e, 0x2b, 0xaa,
|
||||
0xd1, 0x6b, 0x54, 0xcd, 0x1b, 0xf7, 0xbf, 0xfb, 0xfc, 0xbf, 0x7b, 0xfc, 0x33, 0x6d, 0x90, 0x85,
|
||||
0x8e, 0x04, 0x21, 0x0c, 0x86, 0x1b, 0xcf, 0xb9, 0xbb, 0x5b, 0xe4, 0xdc, 0xef, 0xde, 0xa6, 0x19,
|
||||
0x29, 0x59, 0xc6, 0xe0, 0x4a, 0x57, 0x1e, 0xff, 0x06, 0xd6, 0xc9, 0xc6, 0x90, 0x9f, 0x7e, 0xfd,
|
||||
0x0a, 0x74, 0xa8, 0x12, 0xca, 0xb0, 0xf7, 0x89, 0x1f, 0x28, 0x4a, 0x30, 0x33, 0xb5, 0x4d, 0x1a,
|
||||
0x6d, 0x1a, 0xe4, 0x24, 0xd7, 0x06, 0xfb, 0x5a, 0x69, 0x54, 0x54, 0x1b, 0xa5, 0x60, 0x39, 0x0e,
|
||||
0xd3, 0x8a, 0xe0, 0x2c, 0xa4, 0x0d, 0x9c, 0x5b, 0x37, 0xda, 0x1d, 0x77, 0x5d, 0x1a, 0x5f, 0xfb,
|
||||
0xf2, 0xbb, 0x36, 0xf2, 0xb8, 0x51, 0x72, 0x51, 0xff, 0x89, 0x8c, 0xf6, 0xcb, 0x34, 0x68, 0xc1,
|
||||
0xae, 0x25, 0x97, 0x5a, 0x90, 0xc9, 0x52, 0x22, 0xc4, 0x70, 0x81, 0x26, 0x75, 0xc4, 0x3d, 0x62,
|
||||
0xf4, 0x8f, 0xe1, 0xd0, 0x98, 0x1a, 0x87, 0x17, 0x51, 0x72, 0x10, 0xbb, 0x8f, 0xf4, 0x46, 0xfc,
|
||||
0x17, 0xeb, 0xe0, 0x41, 0x75, 0xab, 0x6a, 0xdc, 0xaf, 0xd4, 0xce, 0x61, 0x6d, 0x72, 0xaa, 0x61,
|
||||
0xd9, 0x26, 0x2c, 0x5a, 0x7c, 0x59, 0xb0, 0xc8, 0x89, 0x61, 0x99, 0x7f, 0x17, 0xd1, 0xe0, 0x12,
|
||||
0x5b, 0xd0, 0x99, 0x07, 0xc1, 0x59, 0x98, 0xd2, 0xcf, 0x03, 0x6b, 0x33, 0xb4, 0xb5, 0x89, 0xfc,
|
||||
0x5e, 0xa4, 0xb8, 0x3e, 0x95, 0x87, 0xc3, 0x28, 0x5b, 0x73, 0xd4, 0x38, 0xc3, 0xb0, 0x26, 0xc4,
|
||||
0xb5, 0x6e, 0x92, 0x0a, 0xb3, 0x4e, 0xd2, 0x96, 0x2c, 0x1e, 0x0a, 0xae, 0x82, 0xc1, 0x95, 0x37,
|
||||
0xb8, 0x0a, 0x06, 0x5b, 0x33, 0x06, 0x5b, 0xd6, 0xb0, 0x70, 0x32, 0xf3, 0x8f, 0x51, 0xb3, 0x7f,
|
||||
0x6c, 0x50, 0x35, 0x76, 0x04, 0x31, 0x0c, 0x55, 0x1b, 0x66, 0x86, 0x2e, 0x54, 0x07, 0x8f, 0x90,
|
||||
0x2e, 0x9c, 0x94, 0x7a, 0x06, 0xcd, 0xae, 0x87, 0xec, 0xc8, 0x0a, 0x9d, 0x7e, 0x99, 0xc6, 0x2f,
|
||||
0x95, 0x58, 0x1f, 0xa0, 0x4d, 0xa5, 0x90, 0xc1, 0xef, 0x2b, 0xe4, 0x3b, 0x94, 0x4c, 0x30, 0x78,
|
||||
0x16, 0x56, 0x4e, 0x90, 0xbd, 0xaf, 0x30, 0x12, 0x7f, 0x13, 0xa3, 0xd7, 0xa3, 0xa4, 0xfa, 0x14,
|
||||
0x81, 0x35, 0xa6, 0x40, 0x4a, 0x88, 0x61, 0x2f, 0x99, 0xac, 0x4f, 0x6f, 0xe0, 0x30, 0xbd, 0x8a,
|
||||
0x54, 0x47, 0xcf, 0xb0, 0xd6, 0x3b, 0xac, 0x5c, 0xad, 0x4a, 0x34, 0x6d, 0x25, 0xb0, 0x30, 0xfe,
|
||||
0xb5, 0x8e, 0x9a, 0x9d, 0x6d, 0x11, 0x52, 0x0c, 0xb5, 0xff, 0x81, 0x8d, 0x92, 0x5a, 0xca, 0xfc,
|
||||
0x61, 0x50, 0x2c, 0x4e, 0x9c, 0xaf, 0x51, 0x28, 0x0a, 0x6c, 0x34, 0xbf, 0x2e, 0xcc, 0x20, 0x6e,
|
||||
0x25, 0x88, 0xf3, 0x23, 0xc4, 0xf9, 0x04, 0xb1, 0xa7, 0xd2, 0xf8, 0x2a, 0xa8, 0xba, 0xff, 0x94,
|
||||
0x95, 0x75, 0x1e, 0x75, 0x49, 0x98, 0x51, 0xe5, 0x6b, 0x38, 0xce, 0xbe, 0xca, 0x72, 0x9c, 0x7f,
|
||||
0x45, 0x3d, 0x4e, 0x7f, 0x5c, 0xe6, 0x46, 0xf9, 0xf2, 0x44, 0xff, 0x76, 0xc2, 0x79, 0x65, 0x86,
|
||||
0xcd, 0xf2, 0x08, 0x7d, 0xb9, 0x89, 0x0e, 0xf7, 0x43, 0xc7, 0x3f, 0x1c, 0x53, 0x49, 0x31, 0xe2,
|
||||
0xa3, 0x0a, 0xc4, 0xff, 0x11, 0x82, 0x0b, 0x0c, 0x11, 0x4e, 0x7b, 0x1c, 0x60, 0xbb, 0x70, 0xbd,
|
||||
0xcd, 0xca, 0x5b, 0xaa, 0x60, 0x7b, 0x82, 0x7e, 0x9c, 0xa0, 0xef, 0xcc, 0xa0, 0xaf, 0xbe, 0xb2,
|
||||
0x32, 0x45, 0x77, 0x38, 0x0c, 0xd6, 0x06, 0x19, 0xac, 0x01, 0x32, 0x18, 0x00, 0x5c, 0x4d, 0x35,
|
||||
0x42, 0xc4, 0x00, 0x10, 0xdc, 0x0e, 0xaf, 0x70, 0xe7, 0x0d, 0xc9, 0x23, 0xd0, 0x0a, 0x2d, 0x27,
|
||||
0x36, 0xc7, 0x6d, 0x6c, 0xc3, 0x6e, 0xe0, 0x9e, 0x8f, 0x7b, 0x37, 0x3e, 0x72, 0xc2, 0x76, 0x64,
|
||||
0x89, 0x3b, 0x75, 0xb6, 0x8c, 0xc0, 0xb5, 0xe7, 0x65, 0x43, 0x47, 0xa3, 0xaf, 0xa4, 0xb3, 0x8a,
|
||||
0x9d, 0x6c, 0x39, 0x07, 0xe6, 0x23, 0x5d, 0x8e, 0x50, 0xb8, 0x56, 0xf7, 0x04, 0x63, 0xe8, 0x6d,
|
||||
0x26, 0xdb, 0x66, 0x1d, 0x82, 0xfe, 0x44, 0x97, 0xf9, 0xab, 0x8b, 0x14, 0xa5, 0x75, 0x43, 0xde,
|
||||
0xab, 0xf5, 0xf0, 0xbc, 0x52, 0x43, 0xd1, 0x52, 0x0e, 0x31, 0x84, 0xec, 0x3d, 0x46, 0x21, 0x7b,
|
||||
0x33, 0x9d, 0xa8, 0x2c, 0x7f, 0xcf, 0xad, 0xfd, 0x9b, 0xdb, 0xf3, 0x48, 0xd2, 0x44, 0xd6, 0xad,
|
||||
0xf8, 0xd8, 0x44, 0xf7, 0x30, 0x8e, 0xb2, 0xf2, 0xeb, 0x64, 0x13, 0x7f, 0xbd, 0xe5, 0x60, 0x1f,
|
||||
0xe6, 0x22, 0xda, 0x58, 0x93, 0x63, 0x9a, 0xf7, 0xd5, 0x94, 0x6d, 0x85, 0xde, 0x27, 0x60, 0x92,
|
||||
0x20, 0x7d, 0x99, 0x41, 0x4a, 0x52, 0x6e, 0xbc, 0x81, 0xa5, 0x19, 0x56, 0x97, 0x19, 0x82, 0x1c,
|
||||
0xa5, 0x58, 0x94, 0x5f, 0x02, 0x74, 0x4d, 0x0a, 0x56, 0x15, 0x96, 0x20, 0x15, 0xb2, 0x70, 0x07,
|
||||
0xcb, 0x21, 0x39, 0x45, 0x18, 0x29, 0x84, 0xd8, 0xf2, 0x12, 0xf3, 0xf2, 0xc1, 0x96, 0x1a, 0x19,
|
||||
0x01, 0x2d, 0xc4, 0x6a, 0x94, 0x2a, 0xc8, 0x28, 0x51, 0x24, 0x4d, 0xa2, 0x70, 0x63, 0xc5, 0x90,
|
||||
0x8c, 0xe5, 0x37, 0x36, 0xa0, 0xd0, 0x04, 0x01, 0x63, 0xa2, 0x0d, 0x00, 0x00, 0xa5, 0x4f, 0xb5,
|
||||
0x56, 0x44, 0x41, 0x0c, 0x4d, 0x45, 0x85, 0x6b, 0x85, 0x4b, 0x85, 0xf3, 0x07, 0xb8, 0x95, 0xdb,
|
||||
0xe7, 0x8c, 0x84, 0xb3, 0xf3, 0x24, 0x79, 0x27, 0x19, 0xec, 0xeb, 0x71, 0x67, 0xba, 0x6d, 0xaf,
|
||||
0x5f, 0x48, 0xb5, 0xd4, 0x0e, 0xd9, 0xb1, 0x20, 0xeb, 0x0d, 0x1e, 0x1c, 0x44, 0xdf, 0xa2, 0x52,
|
||||
0x47, 0x2e, 0x93, 0xc2, 0xac, 0x48, 0x8b, 0x46, 0x7a, 0x47, 0x0a, 0x43, 0x96, 0x53, 0xa8, 0xdf,
|
||||
0x54, 0xfb, 0xfb, 0xaf, 0xaa, 0x20, 0x6d, 0xe7, 0x38, 0x09, 0xa3, 0xba, 0x98, 0x04, 0x7d, 0x43,
|
||||
0xb0, 0x71, 0x6b, 0x1e, 0x66, 0xeb, 0x64, 0x86, 0xad, 0x44, 0x6a, 0x61, 0xf6, 0x2b, 0x6b, 0xee,
|
||||
0x47, 0xd6, 0xf8, 0xc1, 0xee, 0x80, 0x09, 0x13, 0x07, 0x03, 0x06, 0xc0, 0x15, 0x51, 0x97, 0x89,
|
||||
0xf8, 0xba, 0xb7, 0xf7, 0x7d, 0x78, 0x1a, 0x1b, 0x51, 0x87, 0x92, 0x1d, 0xb2, 0x20, 0x3d, 0x64,
|
||||
0x52, 0x76, 0x0d, 0x1a, 0xb1, 0x89, 0x1a, 0xc0, 0x75, 0x6a, 0x1e, 0xcf, 0x04, 0x7b, 0x5b, 0x27,
|
||||
0xa1, 0x2f, 0x5b, 0xd7, 0x29, 0x53, 0x71, 0xc3, 0xd4, 0x8f, 0xfa, 0x29, 0x7e, 0xa1, 0xac, 0x4f,
|
||||
0x4d, 0x53, 0x94, 0x6e, 0xbd, 0xce, 0x9d, 0xfa, 0x1e, 0xf0, 0x63, 0xe2, 0x08, 0x1e, 0x39, 0x8d,
|
||||
0x45, 0xd7, 0xea, 0x9b, 0xeb, 0x67, 0x4b, 0x31, 0x61, 0xb4, 0xe4, 0x5d, 0x78, 0xf5, 0x3e, 0x03,
|
||||
0x8d, 0x8f, 0xb5, 0x7a, 0x03, 0x31, 0x10, 0x06, 0xb7, 0x0b, 0x33, 0x33, 0xa7, 0x0a, 0x63, 0x1d,
|
||||
0x66, 0xa6, 0x72, 0x7d, 0xb0, 0x8e, 0xf5, 0x59, 0x74, 0x82, 0xc0, 0xd3, 0x87, 0xc1, 0x6c, 0xb7,
|
||||
0x82, 0x7f, 0x66, 0xe0, 0x94, 0xf1, 0xd7, 0x03, 0x85, 0xb7, 0xf3, 0x7b, 0x51, 0x46, 0x61, 0x96,
|
||||
0x59, 0x8b, 0x42, 0xc5, 0x24, 0xa0, 0xd5, 0x90, 0xa6, 0xc0, 0x91, 0x81, 0x36, 0xa5, 0x04, 0x5a,
|
||||
0x32, 0x4f, 0x64, 0xa0, 0x7e, 0xf5, 0x66, 0x15, 0xed, 0xcb, 0xf2, 0xca, 0xc6, 0x0a, 0x46, 0x4a,
|
||||
0xe8, 0x40, 0x32, 0x25, 0xd1, 0x04, 0x31, 0x53, 0x18, 0x72, 0x82, 0x59, 0xd4, 0x16, 0xa6, 0xbc,
|
||||
0x0d, 0xa1, 0x2b, 0x67, 0xab, 0xeb, 0x6f, 0x6b, 0x08, 0x43, 0xc3, 0xe2, 0x47, 0x42, 0xb2, 0x5a,
|
||||
0xaa, 0x67, 0x18, 0x56, 0xe1, 0xf7, 0x32, 0x8a, 0xc4, 0x39, 0xe8, 0xce, 0x41, 0x8d, 0x62, 0xfe,
|
||||
0x5d, 0x97, 0x23, 0x23, 0x98, 0x0c, 0x38, 0x46, 0x99, 0xc0, 0x41, 0xfb, 0xe6, 0x46, 0x49, 0x83,
|
||||
0xda, 0xe1, 0xb9, 0xb4, 0xc2, 0xf5, 0x7a, 0x3c, 0x12, 0xda, 0x73, 0x4b, 0x78, 0xc9, 0xbd, 0xc5,
|
||||
0xbf, 0x89, 0xfa, 0x6d, 0x0a, 0x04, 0x2e, 0x3f, 0x94, 0x46, 0x7f, 0xc6, 0x8f, 0xa7, 0x3d, 0xe7,
|
||||
0x30, 0xfe, 0x69, 0x31, 0xfe, 0xcc, 0xd2, 0x0c, 0xda, 0x73, 0x5c, 0xda, 0xff, 0x86, 0xfa, 0x0b,
|
||||
0x5c, 0x06, 0xf2, 0x63, 0x3b, 0x72, 0xd4, 0x86, 0x30, 0xff, 0xae, 0x7e, 0x97, 0xa2, 0x6c, 0x49,
|
||||
0x81, 0x91, 0x4f, 0x6a, 0x4b, 0x0e, 0xaf, 0xe5, 0x8f, 0xf7, 0x0e, 0x6c, 0x50, 0x83, 0x6e, 0x04,
|
||||
0x41, 0x18, 0xfe, 0xeb, 0x86, 0xb5, 0xed, 0x36, 0xac, 0x1f, 0xa0, 0x66, 0x50, 0xc5, 0xf9, 0xb2,
|
||||
0xf8, 0x9b, 0x9b, 0xd5, 0xec, 0xe0, 0xf4, 0xf4, 0x67, 0xdf, 0x8e, 0xf9, 0x89, 0x3e, 0x44, 0x54,
|
||||
0x7e, 0x96, 0xf8, 0x79, 0xfc, 0x79, 0xc1, 0x63, 0x24, 0x2c, 0xc3, 0x94, 0x2e, 0x2e, 0x6f, 0x2f,
|
||||
0xe1, 0xc9, 0x38, 0x75, 0x12, 0x21, 0x13, 0x68, 0xc7, 0x17, 0x12, 0x6e, 0xc4, 0x74, 0x96, 0x37,
|
||||
0x2e, 0xad, 0x85, 0xc2, 0x18, 0xc4, 0xd2, 0xe7, 0x98, 0xd6, 0x34, 0xa7, 0xec, 0x58, 0xd6, 0xb4,
|
||||
0x2e, 0x65, 0x0c, 0xc3, 0xba, 0x50, 0x5b, 0x4f, 0x47, 0x52, 0x3b, 0xb8, 0xbf, 0xcd, 0xc2, 0x00,
|
||||
0xcd, 0xf6, 0xfc, 0x9f, 0x6d, 0xff, 0x07, 0xcd, 0x75, 0x01, 0x40, 0xd3, 0x1f, 0x75, 0x84, 0xbf,
|
||||
0x4b, 0x5c, 0xd4, 0xea, 0x6d, 0xb6, 0x16, 0xa4, 0x86, 0x8e, 0xeb, 0x82, 0x8e, 0x8b, 0xe2, 0x5f,
|
||||
0xd0, 0x72, 0x0f, 0xec, 0x72, 0x47, 0xd6, 0x36, 0xa4, 0xdb, 0x02, 0x8d, 0x95, 0xb5, 0xa0, 0x95,
|
||||
0x1e, 0x9d, 0x7b, 0x83, 0x97, 0xcb, 0x96, 0x75, 0x2c, 0x12, 0x27, 0x82, 0x97, 0x73, 0x2c, 0xd1,
|
||||
0xe7, 0xcd, 0xb7, 0x75, 0xbc, 0x10, 0xbf, 0x89, 0xb0, 0x35, 0x3f, 0x1f, 0x99, 0x42, 0xf6, 0xea,
|
||||
0x1a, 0xe6, 0x7a, 0xd8, 0xe7, 0x3a, 0xec, 0xf3, 0x3d, 0x64, 0x23, 0x6c, 0x72, 0x48, 0xa5, 0x17,
|
||||
0xb2, 0x45, 0xe7, 0xc1, 0x22, 0x1a, 0x51, 0x49, 0xeb, 0x20, 0x91, 0xe0, 0x52, 0xed, 0xac, 0xce,
|
||||
0x6e, 0x38, 0x31, 0x52, 0x1b, 0x1a, 0x77, 0xfc, 0x02, 0x27, 0x36, 0xaf, 0x59, 0xa3, 0x3a, 0xdc,
|
||||
0xd1, 0x02, 0x0e, 0x05, 0xec, 0xfe, 0x47, 0xf6, 0x2e, 0xba, 0xef, 0x00, 0x6d, 0xd0, 0xb5, 0x72,
|
||||
0x03, 0x41, 0x0c, 0x06, 0x60, 0x85, 0xd3, 0x5d, 0x9a, 0x30, 0x75, 0x6e, 0xcd, 0xf0, 0x00, 0x61,
|
||||
0xea, 0x52, 0x6b, 0x0e, 0x64, 0x7b, 0x27, 0x0b, 0x9e, 0xd5, 0x9a, 0xde, 0x3e, 0x3a, 0x33, 0x35,
|
||||
0xcb, 0xfb, 0xeb, 0x1b, 0xc1, 0x37, 0x71, 0x37, 0xce, 0x06, 0x64, 0x43, 0xdf, 0x93, 0x47, 0x1e,
|
||||
0x95, 0x2b, 0x8d, 0x16, 0xa6, 0xce, 0xf4, 0x62, 0xab, 0x9c, 0x45, 0x1f, 0x67, 0xca, 0x61, 0xa2,
|
||||
0x09, 0x0a, 0x7d, 0x4e, 0xe0, 0xe2, 0x4f, 0x31, 0xa3, 0x71, 0x19, 0x19, 0xb8, 0xf0, 0xd4, 0xa3,
|
||||
0x38, 0x90, 0x87, 0x4b, 0xe7, 0x0c, 0x32, 0xf9, 0x81, 0xac, 0x2f, 0xe4, 0xc0, 0x28, 0x1b, 0x6b,
|
||||
0x4c, 0xbb, 0x71, 0x80, 0x43, 0x65, 0xd4, 0xae, 0x38, 0x84, 0xd3, 0xf9, 0x77, 0x04, 0x30, 0xa2,
|
||||
0xb0, 0x4e, 0xbb, 0xce, 0x18, 0x87, 0xe5, 0xca, 0xce, 0xf2, 0x8f, 0xed, 0xbe, 0xd6, 0xf0, 0x98,
|
||||
0x23, 0x1e, 0x87, 0xaa, 0xad, 0x20, 0x5a, 0xa1, 0x44, 0x4b, 0x0a, 0x26, 0x5e, 0x65, 0x1d, 0x42,
|
||||
0xe2, 0x9e, 0x75, 0x43, 0x38, 0x5b, 0xa1, 0x45, 0x4c, 0x96, 0x9d, 0xcc, 0xeb, 0x44, 0xf8, 0x56,
|
||||
0x96, 0x86, 0x4c, 0x02, 0x35, 0x54, 0xa9, 0x6b, 0x2e, 0x95, 0x71, 0x91, 0x77, 0x8b, 0xda, 0xf9,
|
||||
0x18, 0x5d, 0x88, 0xd1, 0x3a, 0xa4, 0x91, 0x9c, 0xe5, 0x1f, 0xa7, 0x49, 0x0c, 0x7b, 0x9f, 0xcf,
|
||||
0xc8, 0xd5, 0x9d, 0xe0, 0xcb, 0x9c, 0x7a, 0x39, 0xa1, 0x9e, 0x2c, 0xe2, 0xa2, 0x0d, 0xde, 0xa5,
|
||||
0xe7, 0x4a, 0xb5, 0x02, 0xa7, 0x2b, 0xca, 0x93, 0x99, 0xf2, 0x64, 0x43, 0xf9, 0x13, 0x0b, 0xe0,
|
||||
0xb5, 0x82, 0xbf, 0x3a, 0x08, 0x68, 0x91, 0x08, 0x56, 0x25, 0x52, 0x0e, 0x39, 0xf5, 0x44, 0x56,
|
||||
0x24, 0xd6, 0x52, 0x1a, 0x76, 0xb7, 0xbc, 0x90, 0xf7, 0x50, 0x26, 0x91, 0x21, 0xfc, 0x03, 0x7d,
|
||||
0xcf, 0x85, 0x71, 0xc5, 0x30, 0x0c, 0x06, 0x60, 0x1d, 0x94, 0x99, 0x99, 0x3b, 0x40, 0x61, 0x8d,
|
||||
0xf2, 0x02, 0xba, 0x80, 0x5e, 0xeb, 0x80, 0x94, 0x93, 0x52, 0x9c, 0xbe, 0xf6, 0x63, 0x0e, 0x98,
|
||||
0xed, 0xef, 0x37, 0xb0, 0x8b, 0xe3, 0x82, 0xd0, 0x12, 0x25, 0x62, 0x4c, 0x84, 0x99, 0x92, 0xda,
|
||||
0xd7, 0x65, 0x15, 0xb1, 0x13, 0x46, 0x8d, 0x52, 0x27, 0xf8, 0xed, 0x1a, 0x0e, 0x61, 0x37, 0x77,
|
||||
0x66, 0x58, 0x4a, 0x4a, 0xa5, 0xef, 0x28, 0x55, 0x14, 0xd5, 0xa4, 0x08, 0x67, 0xb1, 0xba, 0xf4,
|
||||
0x9d, 0x90, 0xac, 0x62, 0xf9, 0x46, 0xd8, 0x13, 0x29, 0xd1, 0x48, 0xbf, 0xc2, 0xe4, 0xae, 0x5f,
|
||||
0x52, 0x3a, 0x8e, 0x0a, 0x4c, 0x3e, 0xa2, 0x1a, 0x61, 0xee, 0x8f, 0x54, 0x26, 0x42, 0x21, 0x0b,
|
||||
0x5c, 0x37, 0x3e, 0x8b, 0xc2, 0x57, 0x9f, 0x16, 0xfb, 0xb2, 0x65, 0x6f, 0xf7, 0xb8, 0x93, 0x21,
|
||||
0x6e, 0xa7, 0x9f, 0xdb, 0x1e, 0xe2, 0xe0, 0x45, 0xe5, 0xd1, 0x25, 0x2a, 0xe3, 0x28, 0x38, 0xf0,
|
||||
0x04, 0x2c, 0xf4, 0xae, 0x05, 0x0b, 0x1d, 0x06, 0x36, 0xb0, 0xcd, 0xa8, 0xdd, 0xdd, 0xdf, 0x85,
|
||||
0xf3, 0x5d, 0x54, 0xdc, 0xc2, 0x66, 0x21, 0x1a, 0xa1, 0xd4, 0x11, 0xb2, 0x20, 0xfd, 0xf8, 0x95,
|
||||
0xc1, 0x32, 0x62, 0x13, 0x35, 0x58, 0xec, 0x45, 0x81, 0x85, 0xd6, 0x20, 0x2c, 0x0c, 0x24, 0x02,
|
||||
0x78, 0xbb, 0x7d, 0xa2, 0xf1, 0x69, 0x76, 0x43, 0x9a, 0xd9, 0xbe, 0x34, 0xb3, 0xdd, 0x34, 0xab,
|
||||
0x38, 0xd5, 0x9d, 0xeb, 0x73, 0x67, 0xdb, 0xee, 0xec, 0xa0, 0xfb, 0x0f, 0x62, 0x08, 0x72, 0xf4,
|
||||
0x06, 0x14, 0x42, 0x17, 0xe9, 0x0d, 0x03, 0x31, 0x14, 0x80, 0x55, 0xae, 0xbb, 0x2a, 0xc3, 0x01,
|
||||
0xba, 0x36, 0xfb, 0x3a, 0xfa, 0x0c, 0x72, 0x33, 0x86, 0x91, 0x23, 0x29, 0x70, 0xfb, 0x32, 0x53,
|
||||
0x96, 0x03, 0x82, 0xff, 0x61, 0x1a, 0xc7, 0x09, 0xd6, 0x3c, 0x4e, 0xa5, 0x77, 0xec, 0x51, 0xca,
|
||||
0xc6, 0x31, 0x56, 0x03, 0xc1, 0x4d, 0xbb, 0x18, 0x06, 0xb8, 0x59, 0x68, 0x05, 0x37, 0x2b, 0xd7,
|
||||
0x3a, 0x08, 0x7a, 0xa7, 0x8a, 0x23, 0x37, 0x34, 0x42, 0x20, 0x34, 0x51, 0x69, 0x24, 0x70, 0x82,
|
||||
0x95, 0xb8, 0xe6, 0x8e, 0x90, 0x74, 0xf2, 0xbc, 0x82, 0x1b, 0xd1, 0x24, 0x4d, 0xe0, 0x94, 0x2b,
|
||||
0x25, 0x59, 0x92, 0xe0, 0x38, 0x37, 0x83, 0x23, 0xe6, 0x11, 0x5f, 0x2e, 0xe0, 0x1c, 0xbf, 0xbe,
|
||||
0x05, 0x4a, 0x5e, 0x59, 0x20, 0x30, 0x92, 0xd1, 0xf9, 0x72, 0xc0, 0x7a, 0x56, 0x1a, 0xec, 0x65,
|
||||
0x51, 0x8c, 0x6f, 0x63, 0x70, 0x60, 0x29, 0x91, 0xad, 0x44, 0xcf, 0x48, 0x6b, 0x23, 0x79, 0xfa,
|
||||
0xf7, 0x52, 0xa8, 0x70, 0x2a, 0x65, 0x1f, 0xa7, 0x69, 0x94, 0xe0, 0x2a, 0xc9, 0xe7, 0x71, 0xf1,
|
||||
0xfe, 0x1b, 0x4e, 0x17, 0xde, 0xb5, 0x8e, 0x9a, 0x8f, 0x9b, 0xdd, 0xac, 0x48, 0xe3, 0xdf, 0xc1,
|
||||
0x64, 0x33, 0x12, 0x4f, 0xf6, 0x89, 0xfe, 0x3b, 0xfa, 0x8d, 0xfc, 0x4c, 0x7d, 0x62, 0xb9, 0x72,
|
||||
0x88, 0xff, 0x5f, 0xf1, 0x36, 0xd9, 0x40, 0xd8, 0x0c, 0xcc, 0xa3, 0x28, 0x46, 0x1d, 0xd8, 0xb0,
|
||||
0xfe, 0x0f, 0x78, 0xfa, 0x2d, 0x83, 0xef, 0xb9, 0x3e, 0x00, 0xad, 0x90, 0x35, 0x77, 0xc3, 0x40,
|
||||
0x0c, 0x80, 0xb5, 0x95, 0x99, 0x99, 0xb7, 0x62, 0x68, 0x2e, 0x33, 0xe3, 0xa8, 0x27, 0xc7, 0x17,
|
||||
0xf7, 0x0c, 0x27, 0xbf, 0x3b, 0xa7, 0xce, 0xbf, 0x0f, 0x73, 0x32, 0x76, 0x11, 0xc3, 0x27, 0xc1,
|
||||
0xfb, 0xd9, 0x03, 0xfe, 0x48, 0xf3, 0x24, 0xcc, 0x2f, 0x7e, 0x92, 0x83, 0x59, 0x0e, 0x42, 0x52,
|
||||
0x92, 0x15, 0x6a, 0xb2, 0x25, 0xa3, 0xe5, 0x0b, 0xd8, 0xcc, 0x1b, 0x0b, 0x26, 0x3d, 0x69, 0x0c,
|
||||
0x06, 0x6c, 0x8b, 0x00, 0x26, 0xb5, 0x08, 0x05, 0x45, 0x42, 0xc3, 0x22, 0xfa, 0xac, 0x09, 0x39,
|
||||
0x22, 0x54, 0x8c, 0xa2, 0x50, 0x8e, 0x29, 0xf2, 0xd1, 0x08, 0x65, 0x58, 0x1b, 0x98, 0x62, 0x0e,
|
||||
0xca, 0x8e, 0xfe, 0x2b, 0x97, 0x4e, 0xd6, 0x82, 0x00, 0x1f, 0x65, 0x2d, 0x2e, 0x28, 0xc4, 0x0f,
|
||||
0xf6, 0x49, 0x63, 0x73, 0xd6, 0xe0, 0x9d, 0xb2, 0x65, 0x96, 0x22, 0xd6, 0x07, 0x57, 0x1f, 0xaf,
|
||||
0xcf, 0x1c, 0x57, 0x61, 0xea, 0x1c, 0x15, 0x84, 0xe9, 0x47, 0x7e, 0xa7, 0x83, 0xe7, 0x93, 0xcc,
|
||||
0x7b, 0xa2, 0x2b, 0x85, 0xb1, 0xcc, 0x49, 0x98, 0xef, 0x6e, 0xd8, 0xab, 0xc5, 0xc1, 0x54, 0x16,
|
||||
0x15, 0x24, 0x31, 0x26, 0x8f, 0x3f, 0xfa, 0x9e, 0xb8, 0x5e, 0x29, 0x1f, 0x6f, 0x3b, 0x71, 0xbc,
|
||||
0x89, 0x35, 0x8f, 0x96, 0x96, 0xb6, 0x23, 0x50, 0x9b, 0x44, 0x32, 0x01, 0x13, 0x6d, 0x27, 0x8d,
|
||||
0x24, 0xff, 0x73, 0x1a, 0x7c, 0x44, 0x14, 0x55, 0x06, 0xdd, 0x24, 0xca, 0x5f, 0x75, 0x1c, 0xa9,
|
||||
0x9c, 0xd6, 0x73, 0x56, 0x1a, 0x7d, 0xc2, 0x84, 0x8a, 0x63, 0x18, 0x69, 0x66, 0x66, 0xba, 0x32,
|
||||
0x43, 0x49, 0x2c, 0xbf, 0x2f, 0x99, 0xe8, 0x4b, 0xb6, 0x95, 0xcb, 0xfb, 0x3e, 0x6c, 0x55, 0xf8,
|
||||
0x4a, 0x7d, 0x50, 0x03, 0x6f, 0x05, 0x41, 0x10, 0x9e, 0x06, 0xb5, 0x6d, 0xdb, 0x8e, 0x51, 0xc7,
|
||||
0x35, 0xc2, 0xc9, 0x61, 0x7a, 0x39, 0xec, 0xce, 0xea, 0xe1, 0xdf, 0xd7, 0x78, 0x0e, 0x87, 0x9f,
|
||||
0xe0, 0xde, 0x79, 0x2e, 0x66, 0x89, 0x57, 0x07, 0x78, 0x71, 0x7f, 0x73, 0xb0, 0x8f, 0x01, 0x0b,
|
||||
0xe5, 0xc9, 0xcf, 0x91, 0xf1, 0xc2, 0x98, 0xb1, 0x10, 0xbf, 0xc6, 0xd0, 0x97, 0xc6, 0xd6, 0xa2,
|
||||
0xe0, 0x90, 0x04, 0xf4, 0x65, 0x1c, 0x45, 0xb1, 0x8c, 0xd0, 0x90, 0x22, 0xcf, 0x91, 0x81, 0x3e,
|
||||
0xb3, 0xff, 0xdf, 0x4c, 0x22, 0xfb, 0x96, 0x4c, 0x9e, 0x0c, 0x0a, 0xed, 0x1c, 0x0c, 0x31, 0x0b,
|
||||
0xfc, 0x1e, 0xc0, 0x4c, 0xc5, 0xae, 0xff, 0xf7, 0x69, 0xac, 0x72, 0xf1, 0xf7, 0x54, 0x0d, 0x08,
|
||||
0x6e, 0x6f, 0x77, 0x77, 0x97, 0xaa, 0x84, 0xfa, 0x19, 0xc1, 0x48, 0xce, 0xfa, 0xd0, 0x52, 0x22,
|
||||
0xb6, 0xe5, 0x4f, 0x57, 0x0f, 0x66, 0x6c, 0x3c, 0x64, 0xe7, 0xa1, 0x64, 0xa4, 0xe2, 0xc7, 0x4c,
|
||||
0x7a, 0x19, 0x5a, 0x92, 0x96, 0x8d, 0x85, 0xd6, 0x12, 0xc6, 0x96, 0xef, 0x21, 0xc0, 0x03, 0x9e,
|
||||
0x92, 0x27, 0xf0, 0xfe, 0x00, 0xef, 0x73, 0xca, 0x90, 0x20, 0xbc, 0x7f, 0xd9, 0xdb, 0x3f, 0xde,
|
||||
0xaf, 0xc9, 0xbd, 0x89, 0xca, 0xc2, 0xda, 0x57, 0x5c, 0x63, 0x25, 0x0a, 0xc6, 0xfe, 0x14, 0xcc,
|
||||
0xa1, 0x6f, 0xe2, 0x30, 0x22, 0x24, 0xab, 0x24, 0x17, 0x60, 0xbe, 0xdc, 0xd7, 0x78, 0x89, 0x82,
|
||||
0xc5, 0x0a, 0xcf, 0x4d, 0xfe, 0xa7, 0x8e, 0x06, 0xe4, 0xb3, 0x9f, 0xe4, 0x5d, 0x25, 0xb4, 0x5d,
|
||||
0x7f, 0xb4, 0x43, 0x15, 0x58, 0xdd, 0x25, 0x3c, 0xef, 0x95, 0x50, 0x35, 0x7a, 0x43, 0x31, 0x0c,
|
||||
0x56, 0xc6, 0x32, 0x33, 0x1e, 0xa1, 0xdc, 0xee, 0x5d, 0xcb, 0xbc, 0xe9, 0x33, 0x28, 0x8d, 0x1f,
|
||||
0x58, 0xaf, 0x92, 0x03, 0xb7, 0x2f, 0x33, 0x67, 0xb2, 0x45, 0x3f, 0xc1, 0x99, 0x25, 0x53, 0xe2,
|
||||
0xe9, 0xd5, 0xea, 0xda, 0xd6, 0x1a, 0x0a, 0x73, 0x89, 0x4a, 0xd2, 0x22, 0x41, 0xb6, 0xcf, 0x9f,
|
||||
0xf2, 0x26, 0x25, 0xe8, 0xdd, 0xde, 0x42, 0xc7, 0x65, 0x65, 0x62, 0xe0, 0x88, 0x62, 0x7c, 0x60,
|
||||
0xb4, 0x05, 0xc1, 0x32, 0x56, 0x0a, 0x03, 0x79, 0x50, 0xc5, 0x92, 0x3d, 0x95, 0x30, 0x20, 0x54,
|
||||
0x91, 0x49, 0x24, 0x30, 0xf1, 0x09, 0x62, 0xf0, 0x0d, 0x1c, 0xa6, 0x3f, 0xcd, 0x6a, 0x14, 0x35,
|
||||
0x19, 0xc1, 0xdd, 0x75, 0xd4, 0xce, 0xa3, 0x94, 0x77, 0x90, 0xa3, 0xaf, 0x90, 0xb3, 0x68, 0x25,
|
||||
0xf8, 0x6b, 0x42, 0xd2, 0x2a, 0x72, 0x1b, 0x86, 0x77, 0xfe, 0xb7, 0x57, 0x6b, 0x84, 0x98, 0x1f,
|
||||
0xb0, 0x27, 0xdc, 0x5f, 0xfd, 0xd6, 0xc6, 0x42, 0x53, 0xed, 0xf7, 0x36, 0x3e, 0xc8, 0xee, 0x5b,
|
||||
0xfb, 0xfe, 0xba, 0xde, 0x2c, 0x0a, 0x58, 0x50, 0x92, 0x60, 0x8a, 0x27, 0xac, 0x85, 0x76, 0xa8,
|
||||
0x87, 0x8f, 0x88, 0x27, 0x6f, 0xc1, 0x7c, 0x54, 0x37, 0x20, 0xef, 0x28, 0x06, 0x12, 0x49, 0x19,
|
||||
0xa2, 0x29, 0xd0, 0x35, 0x4c, 0x82, 0xbe, 0xf5, 0x6e, 0xf5, 0x4e, 0x60, 0xc1, 0x62, 0x90, 0x93,
|
||||
0xc1, 0xc8, 0x48, 0x9d, 0x44, 0xf2, 0x80, 0xa6, 0x14, 0x95, 0x45, 0x3f, 0xd8, 0xb9, 0x03, 0x74,
|
||||
0x8e, 0x45, 0x76, 0xc4, 0x30, 0x0c, 0x40, 0xb5, 0x1e, 0x5a, 0x95, 0xf9, 0x06, 0x65, 0x3a, 0x41,
|
||||
0x99, 0x79, 0xa5, 0x17, 0xdb, 0x9a, 0x89, 0x42, 0x4a, 0x65, 0x4f, 0x73, 0xfc, 0x32, 0xd7, 0xdd,
|
||||
0x98, 0xfd, 0xff, 0x87, 0xcb, 0x94, 0xab, 0xfc, 0x58, 0x1c, 0xe1, 0xd1, 0x3a, 0x5a, 0x29, 0xeb,
|
||||
0xa4, 0x62, 0xa9, 0x50, 0x13, 0xc7, 0x82, 0xa6, 0x20, 0x58, 0xc0, 0xda, 0xc3, 0x6c, 0x7f, 0x58,
|
||||
0x14, 0x30, 0xeb, 0x49, 0x39, 0x79, 0x9e, 0x87, 0xde, 0xc0, 0x6c, 0xc3, 0x7d, 0x86, 0x6e, 0xce,
|
||||
0xde, 0x63, 0x29, 0x8e, 0x4a, 0xe8, 0x9e, 0x53, 0x4d, 0x49, 0x20, 0x85, 0x51, 0x34, 0xca, 0x6e,
|
||||
0x40, 0x48, 0xbe, 0xae, 0xa4, 0x81, 0xae, 0x8a, 0x94, 0xe8, 0x49, 0x1f, 0x48, 0xa1, 0x1b, 0x48,
|
||||
0x4b, 0xae, 0x92, 0x02, 0x6d, 0x9a, 0x04, 0x68, 0x6f, 0x44, 0xb5, 0x2f, 0x8e, 0x9f, 0x74, 0xfd,
|
||||
0xa0, 0xf7, 0xbe, 0xc1, 0xda, 0x9b, 0xf1, 0xdf, 0x14, 0x52, 0xd2, 0x8a, 0xc2, 0x6b, 0xf9, 0xff,
|
||||
0xc5, 0xfa, 0x55, 0x2c, 0xe6, 0x0d, 0x89, 0xe5, 0x7d, 0x08, 0x3f, 0x1c, 0x13, 0xbf, 0xee, 0xda,
|
||||
0xdb, 0x31, 0x27, 0xbe, 0x4a, 0xf0, 0xcd, 0x82, 0x71, 0x0d, 0x7e, 0xe7, 0x22, 0xc0, 0xcd, 0xee,
|
||||
0xdd, 0xca, 0xd2, 0xca, 0x3a, 0x9a, 0xc4, 0x0d, 0x28, 0x0e, 0xed, 0x7d, 0xfd, 0x85, 0x86, 0x05,
|
||||
0x9b, 0x72, 0x79, 0x79, 0x79, 0x09, 0x3f, 0xc3, 0xe1, 0x86, 0xe5, 0x52, 0x13, 0x9b, 0x93, 0x3e,
|
||||
0xcd, 0xc7, 0x90, 0xd4, 0x90, 0x04, 0x00, 0x85, 0x51, 0x03, 0x92, 0x44, 0x31, 0x10, 0xed, 0xb5,
|
||||
0x6d, 0x5f, 0x61, 0x7d, 0x80, 0xb5, 0xad, 0x62, 0xd7, 0x47, 0xcf, 0x56, 0x3e, 0xd2, 0xa9, 0xce,
|
||||
0x1f, 0xdc, 0x7e, 0x6c, 0x16, 0xe2, 0xc7, 0xc0, 0xaf, 0xe2, 0x2f, 0x71, 0xbc, 0x90, 0xe4, 0xe9,
|
||||
0x08, 0x85, 0x0c, 0x39, 0x09, 0x09, 0x46, 0x2c, 0x0e, 0x72, 0xe2, 0xa0, 0x66, 0xa4, 0x5c, 0x42,
|
||||
0xa2, 0x9d, 0x08, 0x2d, 0x69, 0xcb, 0x62, 0x61, 0x9e, 0x39, 0x2e, 0x6e, 0x24, 0x43, 0x02, 0xb3,
|
||||
0xd7, 0x4a, 0x87, 0xe8, 0x71, 0x6c, 0x1c, 0xad, 0x58, 0xa3, 0x38, 0xbe, 0x62, 0x74, 0x23, 0x82,
|
||||
0xa5, 0x50, 0x59, 0x8b, 0x31, 0xfb, 0x14, 0x03, 0xfc, 0x29, 0x87, 0xf1, 0xf2, 0xa4, 0xeb, 0xc3,
|
||||
0x1d, 0x34, 0x16, 0x36, 0xd3, 0xd6, 0x85, 0xcd, 0xac, 0x4a, 0x29, 0x98, 0x6c, 0x02, 0x4e, 0xd6,
|
||||
0x1c, 0xc1, 0x54, 0x93, 0xe8, 0xf8, 0x79, 0x37, 0x22, 0xec, 0x8e, 0x44, 0x18, 0xd3, 0x92, 0x3a,
|
||||
0x3b, 0xee, 0xae, 0x5d, 0x92, 0x9d, 0x69, 0x82, 0xcd, 0xd4, 0x05, 0x57, 0xd0, 0x15, 0xe5, 0xff,
|
||||
0x13, 0x8a, 0x3d, 0x3e, 0x39, 0x86, 0xd9, 0x26, 0xfd, 0xb1, 0xcf, 0x41, 0x49, 0xba, 0x67, 0x58,
|
||||
0xac, 0x51, 0x92, 0x35, 0x9a, 0xb3, 0x2d, 0x99, 0x26, 0x2b, 0xed, 0xc2, 0xe4, 0xef, 0xfd, 0x6b,
|
||||
0x57, 0xf2, 0x83, 0x12, 0xf9, 0x6e, 0x2a, 0x1d, 0x45, 0xb0, 0x5b, 0xc4, 0x28, 0xa7, 0x38, 0x97,
|
||||
0xa4, 0x76, 0xcb, 0xa5, 0xcd, 0x36, 0x09, 0xce, 0x1a, 0x47, 0x12, 0x95, 0x94, 0xe0, 0x94, 0x33,
|
||||
0x8e, 0xf6, 0x4b, 0xff, 0x54, 0x37, 0x51, 0x00, 0x62, 0x88, 0xc8, 0x4c, 0xcc, 0x8f, 0x0f, 0x36,
|
||||
0x8e, 0x0f, 0xf7, 0xf4, 0x8f, 0x07, 0x54, 0x25, 0xd7, 0x06, 0x08, 0xc0, 0x40, 0x00, 0x00, 0x7f,
|
||||
0x80, 0xd0, 0x21, 0xdb, 0xc5, 0xdd, 0x3d, 0xe3, 0xa3, 0x15, 0xed, 0x5d, 0x57, 0x55, 0xb1, 0xa9,
|
||||
0x3a, 0xe1, 0xdd, 0x49, 0xa3, 0x88, 0x1a, 0x35, 0x97, 0x03, 0xb7, 0xc2, 0x87, 0xea, 0xfb, 0xed,
|
||||
0xa9, 0xcd, 0x09, 0x97, 0x52, 0x12, 0xf9, 0x01, 0x3c, 0xc8, 0xff, 0xa1, 0xa1, 0xf2, 0x28, 0x1d,
|
||||
0xd0, 0x54, 0x3d, 0xb9, 0xcc, 0x22, 0x11, 0x96, 0x4d, 0x78, 0x01,
|
||||
};
|
||||
for (unsigned i = 0; i < sizeof(IDS) / sizeof(IDS[0]); i++) {
|
||||
if (IDS[i] != target_id) continue;
|
||||
unsigned group = 0;
|
||||
while (i >= FIRSTS[group + 1]) group++;
|
||||
uint8_t raw[512];
|
||||
unsigned int produced = sizeof raw;
|
||||
if (tinf_uncompress_exact(raw, &produced, NAMES + OFFSETS[group],
|
||||
OFFSETS[group + 1] - OFFSETS[group]) != TINF_OK ||
|
||||
produced != RAW_LENGTHS[group]) return nullptr;
|
||||
const uint8_t* record = raw;
|
||||
const uint8_t* end = raw + produced;
|
||||
size_t previous_length = 0;
|
||||
for (unsigned row = FIRSTS[group]; row <= i; row++) {
|
||||
if (record == end) { buffer[0] = 0; return nullptr; }
|
||||
size_t length = *record++;
|
||||
if (length > previous_length) { buffer[0] = 0; return nullptr; }
|
||||
while (record < end && *record) {
|
||||
if (length + 1 < capacity) buffer[length] = (char)*record;
|
||||
length++; record++;
|
||||
}
|
||||
if (record == end) { buffer[0] = 0; return nullptr; }
|
||||
record++;
|
||||
buffer[length < capacity ? length : capacity - 1] = 0;
|
||||
if (row == i && length >= capacity) { buffer[0] = 0; return nullptr; }
|
||||
previous_length = length;
|
||||
}
|
||||
return buffer;
|
||||
}
|
||||
return nullptr;
|
||||
}
|
||||
#else
|
||||
// target_id -> env name, or nullptr if unknown. Linear scan; lookups are rare.
|
||||
inline const char* ota_target_env_name(uint32_t target_id) {
|
||||
#if OTA_TARGET_NAME_TABLE
|
||||
@@ -662,5 +1079,10 @@ inline const char* ota_target_env_name(uint32_t target_id) {
|
||||
#endif
|
||||
return nullptr;
|
||||
}
|
||||
// The original flash-string API remains unchanged when compression is disabled.
|
||||
inline const char* ota_target_env_name(uint32_t target_id, char*, size_t) {
|
||||
return ota_target_env_name(target_id);
|
||||
}
|
||||
#endif
|
||||
|
||||
} } // namespace mesh::ota
|
||||
@@ -3,7 +3,9 @@
|
||||
* several extra kilobytes with the embedded toolchains used by MeshCore.
|
||||
*/
|
||||
#include "../CompanionReaderConfig.h"
|
||||
#if defined(ENABLE_OTA) || defined(OTA_TRANSPORT_DEFLATE_TEST) || COMPANION_FEATURE_READER
|
||||
#include "../ui/Nrf52FontConfig.h"
|
||||
#if defined(ENABLE_OTA) || defined(OTA_TRANSPORT_DEFLATE_TEST) || COMPANION_FEATURE_READER \
|
||||
|| MESHCORE_FONT_DEFLATE
|
||||
#if defined(__GNUC__) && !defined(__clang__)
|
||||
/* nRF52's Arduino recipe defaults to -Ofast, which more than doubles this
|
||||
* decoder. Keep the size policy local to tinf instead of changing MeshCore. */
|
||||
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,626 @@
|
||||
// Generated by scripts/generate_compact_noto.py; do not edit.
|
||||
// MeshFontProduction9: lossless storage of the licensed MeshFontTrial7 bitmaps.
|
||||
// All 224 slots/189 drawable glyphs preserved at 12/17 px H cap height;
|
||||
// H tops 3/5 px, line boxes 19/28 px. The unused initial Arial10 is not stored.
|
||||
// Google Zopfli 1000; glyph-aligned chunks decode to at most 512 bytes.
|
||||
// Source rasterizer: Pillow 12.3.0 / FreeType 2.14.3, threshold 128.
|
||||
// Nominal source sizes 16/24 px, baselines 15/22 px; existing mode7 placement.
|
||||
// Normal builds need no compressor, rasterizer or source TrueType font.
|
||||
#pragma once
|
||||
#include <stddef.h>
|
||||
#include <stdint.h>
|
||||
#include "../ota/tinf/tinf.h"
|
||||
namespace mesh { namespace ui { namespace noto {
|
||||
static constexpr size_t kScratchSize = 512;
|
||||
struct Font {
|
||||
const uint8_t* descriptor;
|
||||
const uint8_t* data;
|
||||
const uint16_t* offsets;
|
||||
const uint16_t* rawLengths;
|
||||
uint16_t chunkCount;
|
||||
uint16_t dataLength;
|
||||
};
|
||||
struct Glyph {
|
||||
const uint8_t* data;
|
||||
uint8_t width;
|
||||
uint8_t length;
|
||||
bool drawable;
|
||||
bool valid;
|
||||
};
|
||||
|
||||
/*
|
||||
Compression derivative named MeshFontProduction9.
|
||||
The following notice identifies the upstream rasterized font source.
|
||||
Derived MeshFontTrial7; source Noto Sans Condensed, Version 2.000;GOOG;noto-source:20170915:90ef993387c0; ttfautohint (v1.7)
|
||||
Source SHA256: 4efc2789b9fcaa87b6b55f19c25ac9a2919e4f9ca31d6b5b97bea7977d729d4f
|
||||
Upstream: https://github.com/notofonts/noto-fonts
|
||||
SPDX-License-Identifier: OFL-1.1
|
||||
Full license/copyright follows; it applies to the bitmap font data.
|
||||
Copyright 2015 Google Inc. All Rights Reserved.
|
||||
|
||||
SIL OPEN FONT LICENSE Version 1.1 - 26 February 2007
|
||||
-----------------------------------------------------------
|
||||
|
||||
PREAMBLE
|
||||
The goals of the Open Font License (OFL) are to stimulate worldwide
|
||||
development of collaborative font projects, to support the font creation
|
||||
efforts of academic and linguistic communities, and to provide a free and
|
||||
open framework in which fonts may be shared and improved in partnership
|
||||
with others.
|
||||
|
||||
The OFL allows the licensed fonts to be used, studied, modified and
|
||||
redistributed freely as long as they are not sold by themselves. The
|
||||
fonts, including any derivative works, can be bundled, embedded,
|
||||
redistributed and/or sold with any software provided that any reserved
|
||||
names are not used by derivative works. The fonts and derivatives,
|
||||
however, cannot be released under any other type of license. The
|
||||
requirement for fonts to remain under this license does not apply
|
||||
to any document created using the fonts or their derivatives.
|
||||
|
||||
DEFINITIONS
|
||||
"Font Software" refers to the set of files released by the Copyright
|
||||
Holder(s) under this license and clearly marked as such. This may
|
||||
include source files, build scripts and documentation.
|
||||
|
||||
"Reserved Font Name" refers to any names specified as such after the
|
||||
copyright statement(s).
|
||||
|
||||
"Original Version" refers to the collection of Font Software components as
|
||||
distributed by the Copyright Holder(s).
|
||||
|
||||
"Modified Version" refers to any derivative made by adding to, deleting,
|
||||
or substituting -- in part or in whole -- any of the components of the
|
||||
Original Version, by changing formats or by porting the Font Software to a
|
||||
new environment.
|
||||
|
||||
"Author" refers to any designer, engineer, programmer, technical
|
||||
writer or other person who contributed to the Font Software.
|
||||
|
||||
PERMISSION & CONDITIONS
|
||||
Permission is hereby granted, free of charge, to any person obtaining
|
||||
a copy of the Font Software, to use, study, copy, merge, embed, modify,
|
||||
redistribute, and sell modified and unmodified copies of the Font Software,
|
||||
subject to the following conditions:
|
||||
|
||||
1) Neither the Font Software nor any of its individual components,
|
||||
in Original or Modified Versions, may be sold by itself.
|
||||
|
||||
2) Original or Modified Versions of the Font Software may be bundled,
|
||||
redistributed and/or sold with any software, provided that each copy
|
||||
contains the above copyright notice and this license. These can be
|
||||
included either as stand-alone text files, human-readable headers or
|
||||
in the appropriate machine-readable metadata fields within text or
|
||||
binary files as long as those fields can be easily viewed by the user.
|
||||
|
||||
3) No Modified Version of the Font Software may use the Reserved Font
|
||||
Name(s) unless explicit written permission is granted by the corresponding
|
||||
Copyright Holder. This restriction only applies to the primary font name as
|
||||
presented to the users.
|
||||
|
||||
4) The name(s) of the Copyright Holder(s) or the Author(s) of the Font
|
||||
Software shall not be used to promote, endorse or advertise any
|
||||
Modified Version, except to acknowledge the contribution(s) of the
|
||||
Copyright Holder(s) and the Author(s) or with their explicit written
|
||||
permission.
|
||||
|
||||
5) The Font Software, modified or unmodified, in part or in whole,
|
||||
must be distributed entirely under this license, and must not be
|
||||
distributed under any other license. The requirement for fonts to
|
||||
remain under this license does not apply to any document created
|
||||
using the Font Software.
|
||||
|
||||
TERMINATION
|
||||
This license becomes null and void if any of the above conditions are
|
||||
not met.
|
||||
|
||||
DISCLAIMER
|
||||
THE FONT SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
||||
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO ANY WARRANTIES OF
|
||||
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT
|
||||
OF COPYRIGHT, PATENT, TRADEMARK, OR OTHER RIGHT. IN NO EVENT SHALL THE
|
||||
COPYRIGHT HOLDER BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY,
|
||||
INCLUDING ANY GENERAL, SPECIAL, INDIRECT, INCIDENTAL, OR CONSEQUENTIAL
|
||||
DAMAGES, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING
|
||||
FROM, OUT OF THE USE OR INABILITY TO USE THE FONT SOFTWARE OR FROM
|
||||
OTHER DEALINGS IN THE FONT SOFTWARE.
|
||||
*/
|
||||
|
||||
// Authoritative raw bitmap SHA256: 0027b835b49dbf1745ad063814a2f3ea23aac9797f157a1ecc48adf09591668d
|
||||
|
||||
inline const Font& fontStorage1() {
|
||||
|
||||
static const uint8_t FONT_1_DATA[] = {
|
||||
0x5d, 0xcb, 0x81, 0x86, 0x1b, 0x51, 0x14, 0x80, 0xe1, 0x6f, 0x92, 0xac, 0xdc, 0xc2, 0x76, 0x01,
|
||||
0x17, 0xd1, 0xcc, 0xee, 0x13, 0x04, 0x54, 0x10, 0xc9, 0x4c, 0xb7, 0x5a, 0xe8, 0x43, 0xcc, 0x9a,
|
||||
0x6a, 0x81, 0xda, 0x42, 0x0d, 0xb0, 0x03, 0xc8, 0x23, 0xe4, 0x51, 0x0a, 0xb8, 0x8f, 0x51, 0xc0,
|
||||
0x3c, 0xc2, 0x2d, 0x30, 0x40, 0x7b, 0x11, 0x4a, 0xf9, 0x1c, 0xbf, 0x73, 0x1c, 0xcc, 0x5f, 0xcd,
|
||||
0x4f, 0x18, 0x00, 0x06, 0x2b, 0xe3, 0x7b, 0xe3, 0xc9, 0x5c, 0xe2, 0xb3, 0xb4, 0xf5, 0xb3, 0xc4,
|
||||
0x0a, 0xd3, 0xbd, 0xfa, 0xde, 0xfc, 0xc7, 0xee, 0x41, 0xfd, 0x96, 0x0d, 0xf2, 0x52, 0x58, 0x88,
|
||||
0xbd, 0x29, 0xb2, 0x96, 0xd8, 0x1f, 0x69, 0xe9, 0xd9, 0xc0, 0xd1, 0xdc, 0x3b, 0x3f, 0xfa, 0xf5,
|
||||
0xc1, 0xf3, 0x81, 0x3d, 0xdf, 0x68, 0x30, 0x20, 0xbd, 0x78, 0x4e, 0x55, 0x50, 0x21, 0xaa, 0xf2,
|
||||
0x6f, 0xe3, 0x09, 0x35, 0x53, 0x65, 0x50, 0xa6, 0x1a, 0x16, 0x85, 0x69, 0x7b, 0x8d, 0xc2, 0xf5,
|
||||
0xb6, 0xf2, 0x0f, 0x5d, 0xa1, 0x61, 0xe0, 0x56, 0xaa, 0x0c, 0x04, 0xe4, 0x93, 0xd8, 0x09, 0x4d,
|
||||
0x99, 0xa5, 0xa5, 0xd7, 0xa8, 0xd9, 0x11, 0x99, 0x5f, 0x70, 0x57, 0xce, 0x83, 0xf0, 0x49, 0xfc,
|
||||
0x28, 0xb7, 0x34, 0xd7, 0x5d, 0x5b, 0xb8, 0xf4, 0xf2, 0x91, 0x8d, 0xc0, 0xad, 0xf1, 0x95, 0x2e,
|
||||
0xd8, 0x87, 0xf2, 0x48, 0xc0, 0xfc, 0x24, 0xb6, 0x42, 0xd1, 0x0b, 0x47, 0x36, 0x98, 0xb6, 0x76,
|
||||
0xdf, 0x5d, 0x1a, 0xe7, 0xe2, 0xc4, 0x1b, 0x84, 0xa2, 0x13, 0x0e, 0xce, 0x6b, 0x33, 0x11, 0xf9,
|
||||
0xe0, 0xd2, 0x0b, 0x8f, 0x85, 0xfc, 0x43, 0xb7, 0x41, 0x6e, 0xc5, 0xb2, 0x78, 0x27, 0x3e, 0xc8,
|
||||
0x5b, 0x69, 0x8d, 0xd4, 0x15, 0x48, 0x53, 0x95, 0x6a, 0x58, 0xb2, 0x36, 0xde, 0x18, 0x83, 0x14,
|
||||
0x34, 0x77, 0x18, 0x57, 0xff, 0xa3, 0x89, 0xc6, 0x50, 0x92, 0x1b, 0x96, 0x2c, 0x10, 0x8a, 0x2f,
|
||||
0x2e, 0x95, 0xfc, 0x17, 0x65, 0x8f, 0x31, 0x6e, 0x83, 0x40, 0x10, 0x00, 0xe7, 0x4c, 0x14, 0xae,
|
||||
0x0a, 0x94, 0x5b, 0x58, 0xe1, 0x0b, 0x2e, 0xa9, 0x30, 0x4e, 0x1a, 0x3f, 0x63, 0x95, 0x7c, 0x80,
|
||||
0x74, 0x54, 0x0e, 0x4f, 0x48, 0x49, 0xe7, 0xaf, 0xdc, 0x33, 0x52, 0xf2, 0x04, 0xca, 0xeb, 0x1c,
|
||||
0xaf, 0x40, 0x27, 0x11, 0x4b, 0xd3, 0xec, 0xdc, 0x68, 0x4f, 0x0b, 0x84, 0x23, 0xaa, 0x94, 0x81,
|
||||
0xf1, 0xca, 0xf9, 0x87, 0xf3, 0xc8, 0xef, 0x95, 0xb2, 0x44, 0x85, 0x21, 0x47, 0xe1, 0x42, 0xc8,
|
||||
0xe9, 0x9f, 0x8c, 0x90, 0x43, 0x83, 0x49, 0xe2, 0xb7, 0xe1, 0x4f, 0x86, 0x7c, 0x32, 0x37, 0xb0,
|
||||
0x07, 0x42, 0x41, 0x57, 0x23, 0x8a, 0x6f, 0x0d, 0x69, 0x53, 0xba, 0x0a, 0xe5, 0x70, 0x60, 0xaa,
|
||||
0xb6, 0x1b, 0x8c, 0x24, 0x76, 0x0b, 0x69, 0x59, 0xb9, 0x2c, 0x7b, 0x33, 0xe4, 0x02, 0x4d, 0x4a,
|
||||
0x71, 0x24, 0x6c, 0xb4, 0x6e, 0xf9, 0x89, 0xdd, 0x9d, 0x78, 0xcb, 0xe2, 0x8d, 0x14, 0x67, 0x84,
|
||||
0x9c, 0x6e, 0x8f, 0x74, 0x56, 0x24, 0xdd, 0x2e, 0x24, 0x31, 0x63, 0x77, 0xd3, 0x43, 0x07, 0xaf,
|
||||
0x4c, 0x8e, 0x1e, 0xf3, 0xeb, 0xbb, 0xd9, 0xe0, 0xe0, 0x05, 0xea, 0xd5, 0x60, 0xf7, 0x6c, 0xae,
|
||||
0x56, 0x1b, 0x43, 0xb1, 0xbd, 0x09, 0xc9, 0x98, 0x1d, 0x8f, 0xf5, 0xe4, 0xba, 0xda, 0xfd, 0xab,
|
||||
0x9f, 0x91, 0x8a, 0xf9, 0x0b, 0x5a, 0x60, 0x56, 0xc6, 0x13, 0xfe, 0x1d, 0xff, 0x81, 0x34, 0xe0,
|
||||
0x3d, 0x2c, 0x58, 0xcd, 0x0a, 0xb1, 0x22, 0x1e, 0x41, 0xa1, 0x35, 0xd0, 0xfb, 0x28, 0x10, 0x1d,
|
||||
0x43, 0x05, 0xbd, 0x31, 0x14, 0x44, 0xf0, 0x7f, 0x6d, 0x8f, 0x81, 0x66, 0xc4, 0x60, 0x10, 0x84,
|
||||
0xbf, 0x34, 0xe7, 0xf2, 0xa3, 0xae, 0x00, 0x41, 0xab, 0xd0, 0x07, 0xe8, 0x01, 0xa1, 0xb8, 0xe5,
|
||||
0x4e, 0x5b, 0xf4, 0x19, 0x2a, 0xe8, 0x03, 0x04, 0x10, 0x94, 0x7f, 0x01, 0x7d, 0xac, 0x7d, 0x8c,
|
||||
0x03, 0xe4, 0x31, 0x7e, 0x20, 0xed, 0x08, 0x41, 0x94, 0xb1, 0xec, 0xec, 0xec, 0x98, 0x69, 0xa1,
|
||||
0xd4, 0x70, 0x82, 0x41, 0xb3, 0x54, 0x8c, 0x10, 0x0d, 0x7c, 0x0b, 0x71, 0xc7, 0x88, 0xd1, 0x0d,
|
||||
0x4c, 0xf7, 0x78, 0x83, 0xf6, 0x8e, 0xd4, 0x27, 0x90, 0xac, 0x82, 0x4c, 0xd4, 0x8c, 0xd0, 0x62,
|
||||
0xa4, 0x81, 0xf4, 0xc9, 0xcf, 0x99, 0x62, 0x74, 0x06, 0x94, 0xb9, 0x6a, 0xa9, 0xd2, 0x82, 0xf5,
|
||||
0xe5, 0x00, 0x23, 0x98, 0x38, 0x74, 0xff, 0x53, 0x01, 0xd4, 0x4c, 0xf0, 0x0c, 0x83, 0x54, 0x5a,
|
||||
0xa9, 0xfe, 0x03, 0xb7, 0xd0, 0x02, 0x0a, 0xf6, 0x81, 0x5d, 0x88, 0x27, 0x3c, 0x03, 0x25, 0x13,
|
||||
0x2f, 0x98, 0x09, 0xd1, 0xe3, 0x27, 0xd0, 0x88, 0x5e, 0x84, 0xb0, 0xd9, 0xfd, 0xa8, 0x97, 0x85,
|
||||
0xfb, 0x42, 0x46, 0x17, 0xfc, 0x0d, 0xf6, 0x06, 0x53, 0xd6, 0xed, 0x1d, 0x12, 0x12, 0xdc, 0x44,
|
||||
0xbf, 0x33, 0x13, 0xfc, 0x58, 0x87, 0xe2, 0x52, 0x54, 0x1c, 0x43, 0x08, 0x96, 0x04, 0xd7, 0x0c,
|
||||
0xbb, 0xeb, 0xdc, 0x2c, 0x67, 0x0e, 0xb0, 0xc7, 0x1f, 0x88, 0x01, 0x6c, 0xe1, 0x20, 0x32, 0xbe,
|
||||
0xfe, 0x65, 0xfd, 0x05, 0xab, 0xc7, 0xf6, 0x2e, 0x6e, 0x93, 0x5a, 0x66, 0x8f, 0x40, 0xcc, 0x8d,
|
||||
0x6f, 0xda, 0x6e, 0xda, 0x49, 0xb2, 0x1a, 0x06, 0x18, 0xe0, 0x67, 0xec, 0x55, 0x5d, 0xad, 0xfb,
|
||||
0x05, 0x64, 0xcd, 0x25, 0xd4, 0x14, 0x51, 0x14, 0x00, 0xe0, 0x6f, 0x04, 0x77, 0x77, 0x6b, 0x34,
|
||||
0xdc, 0xed, 0xe1, 0x14, 0xa4, 0xe1, 0x9a, 0x88, 0xd3, 0x70, 0x66, 0xe2, 0xf6, 0x44, 0x4f, 0xf4,
|
||||
0x1e, 0xee, 0x21, 0x6d, 0x4f, 0x1b, 0x87, 0x46, 0x1c, 0x12, 0x6e, 0x0f, 0x87, 0xff, 0x9c, 0xef,
|
||||
0xe9, 0xb5, 0x44, 0x7f, 0xc4, 0xd0, 0x4a, 0x09, 0x71, 0x84, 0x5b, 0x24, 0xd9, 0x56, 0xd1, 0x06,
|
||||
0x31, 0x83, 0xc7, 0x34, 0xac, 0x17, 0x55, 0x10, 0x0b, 0xb8, 0x9f, 0xc5, 0x0c, 0x51, 0x70, 0x84,
|
||||
0x86, 0xc3, 0xa2, 0x92, 0xc4, 0x2d, 0xdd, 0x06, 0xe6, 0xeb, 0x0e, 0x88, 0x5b, 0xa1, 0x8e, 0x19,
|
||||
0xb5, 0x83, 0x95, 0xa1, 0x90, 0xcb, 0x25, 0xa9, 0x91, 0xae, 0x89, 0xd3, 0x22, 0x41, 0xad, 0xff,
|
||||
0xe2, 0xed, 0xeb, 0x62, 0xa6, 0x02, 0xc0, 0xdb, 0x2f, 0x33, 0x30, 0x53, 0x31, 0x7c, 0x28, 0xfa,
|
||||
0x96, 0x1a, 0x0a, 0x59, 0x45, 0x29, 0xab, 0x10, 0x1f, 0xab, 0x18, 0x2a, 0x74, 0x33, 0xf4, 0x1b,
|
||||
0x6c, 0x5c, 0x68, 0x6f, 0x93, 0x77, 0xdc, 0x31, 0xb4, 0x56, 0x1e, 0x33, 0x33, 0x23, 0x21, 0x2d,
|
||||
0xd7, 0xad, 0x12, 0x0b, 0xa5, 0x85, 0x79, 0x8f, 0x75, 0xd2, 0x62, 0xec, 0x5d, 0xac, 0x5f, 0x4c,
|
||||
0x2b, 0x76, 0xb8, 0xbf, 0xd8, 0x4c, 0x00, 0x6f, 0x5f, 0xce, 0xc0, 0x70, 0xdc, 0xe4, 0x84, 0xd1,
|
||||
0x37, 0x4f, 0xd8, 0x01, 0xcc, 0xe4, 0xcf, 0x25, 0x16, 0xe4, 0x91, 0x0b, 0x37, 0x9a, 0x9c, 0x77,
|
||||
0xf7, 0x92, 0xcd, 0x17, 0xb2, 0xbd, 0x17, 0xf2, 0xcf, 0xd6, 0xad, 0x62, 0x2d, 0x5e, 0xf1, 0x9c,
|
||||
0xb7, 0x30, 0x9f, 0x35, 0x6c, 0x62, 0x2e, 0xf9, 0x02, 0xe5, 0xbf, 0xd6, 0xab, 0xfd, 0xf1, 0xa7,
|
||||
0xff, 0xca, 0x64, 0x7c, 0xde, 0x99, 0x63, 0xc6, 0xe7, 0x3c, 0xbb, 0xfc, 0xbb, 0x7f, 0xc9, 0x54,
|
||||
0x1a, 0x46, 0xb2, 0x01, 0x8e, 0x66, 0xfd, 0xcd, 0xbc, 0xcb, 0x3a, 0x5e, 0xf0, 0x75, 0x8b, 0x18,
|
||||
0x18, 0xe6, 0x01, 0x00, 0x45, 0xcd, 0x01, 0xa7, 0x14, 0x51, 0x14, 0xc0, 0xf1, 0xdf, 0xec, 0xdc,
|
||||
0xde, 0xdc, 0x97, 0x65, 0x97, 0x92, 0x41, 0x12, 0x3d, 0x40, 0xd8, 0x80, 0x82, 0xcc, 0x0a, 0x02,
|
||||
0x02, 0x10, 0x30, 0xe9, 0x0b, 0x0c, 0xa0, 0xf2, 0xbc, 0x5d, 0xfb, 0xa0, 0x8f, 0x75, 0xab, 0x3e,
|
||||
0xd0, 0x10, 0x99, 0xf2, 0xb4, 0xed, 0x61, 0x58, 0xfe, 0xc6, 0x7f, 0xfe, 0xe7, 0x38, 0x17, 0x57,
|
||||
0x55, 0x70, 0x57, 0x61, 0x4d, 0x46, 0x39, 0x36, 0x06, 0x3a, 0xc1, 0x46, 0xd9, 0x61, 0xac, 0x4d,
|
||||
0x8d, 0xe0, 0x58, 0x67, 0xf1, 0x85, 0x3a, 0x90, 0xec, 0x53, 0x48, 0x98, 0x0b, 0xfe, 0x61, 0xe2,
|
||||
0x6b, 0x60, 0x80, 0x17, 0x3c, 0x21, 0xcd, 0x62, 0x89, 0x35, 0x53, 0x4d, 0x4f, 0xcb, 0x85, 0x7d,
|
||||
0xa5, 0xdf, 0x68, 0xaf, 0xd8, 0xf1, 0x74, 0x9e, 0xbf, 0x61, 0xe0, 0x31, 0x8d, 0x52, 0x19, 0x3a,
|
||||
0xed, 0x07, 0xde, 0xf3, 0xce, 0xc2, 0xdb, 0xc0, 0xf4, 0x91, 0x57, 0x2c, 0xa9, 0x95, 0x8d, 0xcd,
|
||||
0x73, 0xf9, 0xd9, 0x7c, 0xa2, 0x30, 0xd6, 0xda, 0x45, 0x59, 0x2e, 0xc4, 0x94, 0x3b, 0xb7, 0x2b,
|
||||
0xbf, 0xb3, 0x31, 0xdb, 0xaf, 0xb8, 0xa6, 0x88, 0x1c, 0x7f, 0x63, 0x8e, 0xc9, 0xed, 0x9c, 0xf5,
|
||||
0xdc, 0xf8, 0xde, 0xf8, 0x9c, 0x4e, 0x84, 0x78, 0x4d, 0x2f, 0xb2, 0x1f, 0x91, 0x7d, 0x89, 0xac,
|
||||
0x3a, 0xe7, 0x6f, 0x8d, 0x4f, 0x29, 0x38, 0x89, 0x73, 0xfe, 0xd9, 0xb8, 0x89, 0xed, 0x10, 0x73,
|
||||
0x76, 0x2d, 0x9e, 0xbc, 0xa7, 0x4d, 0xa6, 0x5d, 0x90, 0xb7, 0x33, 0x94, 0x95, 0xe1, 0xa5, 0xb6,
|
||||
0x4f, 0xb9, 0xa4, 0xdc, 0x35, 0x6d, 0x87, 0xf1, 0xe8, 0xd7, 0xd1, 0xa3, 0x83, 0x75, 0x20, 0x42,
|
||||
0xf0, 0xf0, 0x10, 0xed, 0xc1, 0x81, 0xb8, 0xf1, 0x77, 0xe7, 0x72, 0x1b, 0xdc, 0xdf, 0x12, 0xe1,
|
||||
0xcf, 0x7c, 0x37, 0x1a, 0x97, 0x5d, 0x6c, 0xe4, 0x0e, 0x39, 0xf4, 0x14, 0xfe, 0x03, 0x6d, 0x8d,
|
||||
0x81, 0x66, 0xc3, 0x50, 0x18, 0x46, 0x4f, 0x92, 0x6d, 0xbd, 0x9d, 0xda, 0x62, 0xa8, 0xb6, 0x43,
|
||||
0x86, 0x3e, 0x40, 0x28, 0x04, 0xe8, 0xad, 0x45, 0x15, 0xc1, 0x30, 0x14, 0xd8, 0x7d, 0x84, 0x32,
|
||||
0xb8, 0x18, 0xf9, 0x01, 0x05, 0x0c, 0xb0, 0xc7, 0xb9, 0x05, 0x0a, 0xd8, 0x03, 0x0c, 0x79, 0x84,
|
||||
0x32, 0xc8, 0xc0, 0xe6, 0x67, 0x11, 0x63, 0x1c, 0xe1, 0x3b, 0x27, 0x7f, 0x72, 0x06, 0x37, 0xc2,
|
||||
0xe7, 0x37, 0x63, 0x89, 0x60, 0x68, 0x69, 0x6b, 0x7d, 0x46, 0xb4, 0xb5, 0x62, 0x56, 0xca, 0xc4,
|
||||
0x91, 0xe7, 0x34, 0x19, 0xfc, 0xea, 0x67, 0x38, 0x44, 0xc4, 0x57, 0xc4, 0x05, 0x5f, 0x6a, 0x80,
|
||||
0xb0, 0xa4, 0xd9, 0xb1, 0x08, 0x8c, 0x85, 0x54, 0xc8, 0x83, 0x4e, 0xc9, 0xba, 0xa2, 0x22, 0x15,
|
||||
0x8d, 0x8b, 0xbe, 0x34, 0x19, 0xbb, 0x82, 0x99, 0x63, 0x68, 0x95, 0x99, 0xd3, 0x19, 0xae, 0xbb,
|
||||
0xc2, 0xad, 0x16, 0x2e, 0xff, 0x29, 0x53, 0x87, 0xb1, 0xca, 0xb4, 0x2f, 0x62, 0x90, 0x73, 0x48,
|
||||
0x60, 0x80, 0x8c, 0xc0, 0x00, 0xcd, 0x13, 0x3b, 0xcf, 0xc4, 0x63, 0xd6, 0xec, 0x57, 0x78, 0x87,
|
||||
0x2f, 0x38, 0xea, 0xdb, 0xa7, 0x25, 0xa7, 0x9a, 0x24, 0x70, 0x21, 0x20, 0x10, 0x74, 0x42, 0x9b,
|
||||
0xd1, 0x2e, 0xc1, 0x11, 0x5b, 0x12, 0x0b, 0x4e, 0x67, 0xa7, 0x13, 0x47, 0x64, 0x95, 0xf8, 0x8f,
|
||||
0x8e, 0x1c, 0x58, 0xb4, 0xa8, 0x36, 0xe0, 0x21, 0x44, 0xc4, 0x35, 0x87, 0x04, 0x0f, 0x13, 0xa0,
|
||||
0xad, 0x95, 0x3b, 0xa3, 0xb8, 0x11, 0x61, 0x00, 0xfa, 0xc3, 0x02, 0x8c, 0x65, 0x7f, 0x4f, 0xbb,
|
||||
0x26, 0x7f, 0x81, 0x14, 0xc0, 0x53, 0x55, 0x6c, 0x4b, 0xde, 0xe7, 0x48, 0x8d, 0x0a, 0x6c, 0xc5,
|
||||
0x43, 0xc9, 0xb1, 0x17, 0xdb, 0x8a, 0x8d, 0x0a, 0x5e, 0x55, 0xa4, 0x9e, 0x4d, 0x77, 0xf2, 0xa6,
|
||||
0x02, 0x15, 0xd8, 0x92, 0x30, 0x67, 0xdf, 0x9f, 0x3c, 0x96, 0x7c, 0xe8, 0x37, 0x7e, 0x00, 0x55,
|
||||
0xce, 0x21, 0x6c, 0x83, 0x40, 0x14, 0x87, 0xf1, 0x8f, 0x40, 0xc6, 0x89, 0x09, 0x64, 0x67, 0x36,
|
||||
0x33, 0x9f, 0xf9, 0x2d, 0xe1, 0x09, 0xb2, 0x21, 0x2a, 0x90, 0x95, 0x47, 0x82, 0xcf, 0xe4, 0xdc,
|
||||
0x21, 0x2b, 0x2b, 0xeb, 0xbd, 0xd7, 0x4f, 0x9e, 0x98, 0x40, 0xe2, 0xf5, 0x44, 0xe5, 0x5c, 0x9b,
|
||||
0x77, 0x29, 0x21, 0x24, 0x7f, 0xc3, 0x8f, 0x8f, 0x17, 0x00, 0x7e, 0x90, 0x3d, 0xd2, 0xa0, 0xaf,
|
||||
0x8c, 0x35, 0x3a, 0x20, 0x8d, 0x6d, 0xfc, 0x82, 0x07, 0x48, 0xe6, 0x0b, 0xd1, 0x42, 0xa4, 0x14,
|
||||
0xd2, 0xf3, 0xef, 0xc0, 0xa1, 0x61, 0xda, 0x36, 0x03, 0x5d, 0x43, 0xdc, 0xd8, 0x3c, 0xd0, 0x26,
|
||||
0x3b, 0xad, 0x16, 0xd3, 0x7d, 0x6d, 0x38, 0x9a, 0x39, 0x98, 0x03, 0x15, 0x30, 0x05, 0x5c, 0x05,
|
||||
0x31, 0xe0, 0xa0, 0x72, 0xa0, 0x01, 0xc0, 0x01, 0xd4, 0x9c, 0x7a, 0xce, 0x62, 0xfb, 0xeb, 0xed,
|
||||
0x48, 0x7a, 0x7b, 0xce, 0x69, 0xa1, 0x83, 0x09, 0x8e, 0x61, 0xf9, 0x53, 0x5a, 0xa1, 0x13, 0xf4,
|
||||
0x1b, 0x5e, 0x16, 0x33, 0x38, 0x6c, 0x6c, 0xb2, 0xce, 0x36, 0xad, 0x36, 0x2f, 0xdf, 0xce, 0xab,
|
||||
0x45, 0x8f, 0x88, 0x2d, 0xde, 0x8d, 0xcc, 0xe6, 0x9f, 0x20, 0x5b, 0xc6, 0x78, 0xb5, 0xd3, 0xb2,
|
||||
0x47, 0x3e, 0xd1, 0x1e, 0xb1, 0x4e, 0x6b, 0xf0, 0x38, 0xa1, 0x12, 0x78, 0x43, 0xc3, 0x62, 0x06,
|
||||
0x3b, 0xc1, 0xad, 0x56, 0x59, 0x97, 0xd2, 0xd5, 0x9c, 0x07, 0x81, 0x7b, 0xa7, 0x14, 0x5a, 0x16,
|
||||
0x7c, 0xe4, 0xbb, 0x4b, 0xf6, 0xf8, 0x8c, 0xe6, 0xc0, 0xff, 0xb5, 0xd4, 0x77, 0x44, 0x6c, 0xea,
|
||||
0x19, 0x6b, 0xa5, 0x88, 0x29, 0xe2, 0x92, 0x39, 0x8b, 0x6e,
|
||||
};
|
||||
|
||||
static const uint8_t FONT_1_DESCRIPTOR[] = {
|
||||
0x10, 0x13, 0x20, 0xe0, 0xff, 0xff, 0x00, 0x03, 0x00, 0x00, 0x08, 0x04, 0x00, 0x08, 0x0d, 0x06,
|
||||
0x00, 0x15, 0x17, 0x08, 0x00, 0x2c, 0x14, 0x08, 0x00, 0x40, 0x20, 0x0b, 0x00, 0x60, 0x1a, 0x09,
|
||||
0x00, 0x7a, 0x04, 0x03, 0x00, 0x7e, 0x0c, 0x05, 0x00, 0x8a, 0x0b, 0x05, 0x00, 0x95, 0x10, 0x07,
|
||||
0x00, 0xa5, 0x14, 0x08, 0x00, 0xb9, 0x08, 0x04, 0x00, 0xc1, 0x0b, 0x05, 0x00, 0xcc, 0x08, 0x04,
|
||||
0x00, 0xd4, 0x10, 0x06, 0x00, 0xe4, 0x14, 0x08, 0x00, 0xf8, 0x0e, 0x08, 0x01, 0x06, 0x14, 0x08,
|
||||
0x01, 0x1a, 0x14, 0x08, 0x01, 0x2e, 0x14, 0x08, 0x01, 0x42, 0x14, 0x08, 0x01, 0x56, 0x14, 0x08,
|
||||
0x01, 0x6a, 0x13, 0x08, 0x01, 0x7d, 0x14, 0x08, 0x01, 0x91, 0x14, 0x08, 0x01, 0xa5, 0x08, 0x04,
|
||||
0x01, 0xad, 0x08, 0x04, 0x01, 0xb5, 0x14, 0x08, 0x01, 0xc9, 0x14, 0x08, 0x01, 0xdd, 0x14, 0x08,
|
||||
0x01, 0xf1, 0x0d, 0x06, 0x02, 0x00, 0x20, 0x0c, 0x02, 0x20, 0x17, 0x08, 0x02, 0x37, 0x17, 0x08,
|
||||
0x02, 0x4e, 0x14, 0x08, 0x02, 0x62, 0x17, 0x09, 0x02, 0x79, 0x11, 0x07, 0x02, 0x8a, 0x11, 0x07,
|
||||
0x02, 0x9b, 0x1a, 0x0a, 0x02, 0xb5, 0x17, 0x0a, 0x02, 0xcc, 0x0b, 0x05, 0x02, 0xd7, 0x0b, 0x05,
|
||||
0x02, 0xe2, 0x17, 0x08, 0x02, 0xf9, 0x11, 0x07, 0x03, 0x0a, 0x20, 0x0c, 0x03, 0x2a, 0x1a, 0x0a,
|
||||
0x03, 0x44, 0x1a, 0x0a, 0x03, 0x5e, 0x14, 0x08, 0x03, 0x72, 0x1a, 0x0a, 0x03, 0x8c, 0x17, 0x08,
|
||||
0x03, 0xa3, 0x14, 0x07, 0x03, 0xb7, 0x13, 0x07, 0x03, 0xca, 0x17, 0x09, 0x03, 0xe1, 0x16, 0x08,
|
||||
0x04, 0x00, 0x22, 0x0d, 0x04, 0x22, 0x14, 0x07, 0x04, 0x36, 0x13, 0x07, 0x04, 0x49, 0x11, 0x07,
|
||||
0x04, 0x5a, 0x0f, 0x05, 0x04, 0x69, 0x11, 0x06, 0x04, 0x7a, 0x0c, 0x05, 0x04, 0x86, 0x14, 0x08,
|
||||
0x04, 0x9a, 0x15, 0x07, 0x04, 0xaf, 0x07, 0x04, 0x04, 0xb6, 0x11, 0x07, 0x04, 0xc7, 0x14, 0x08,
|
||||
0x04, 0xdb, 0x10, 0x06, 0x04, 0xeb, 0x14, 0x08, 0x04, 0xff, 0x14, 0x07, 0x05, 0x13, 0x0d, 0x05,
|
||||
0x05, 0x20, 0x15, 0x08, 0x05, 0x35, 0x14, 0x08, 0x05, 0x49, 0x05, 0x04, 0x05, 0x4e, 0x06, 0x04,
|
||||
0x05, 0x54, 0x14, 0x07, 0x05, 0x68, 0x05, 0x04, 0x05, 0x6d, 0x20, 0x0c, 0x05, 0x8d, 0x14, 0x08,
|
||||
0x05, 0xa1, 0x14, 0x08, 0x05, 0xb5, 0x14, 0x08, 0x05, 0xc9, 0x15, 0x08, 0x05, 0xde, 0x0d, 0x05,
|
||||
0x05, 0xeb, 0x0e, 0x06, 0x06, 0x00, 0x0b, 0x05, 0x06, 0x0b, 0x14, 0x08, 0x06, 0x1f, 0x11, 0x07,
|
||||
0x06, 0x30, 0x1d, 0x0b, 0x06, 0x4d, 0x11, 0x07, 0x06, 0x5e, 0x11, 0x07, 0x06, 0x6f, 0x0e, 0x06,
|
||||
0x06, 0x7d, 0x0f, 0x06, 0x06, 0x8c, 0x0c, 0x07, 0x06, 0x98, 0x0e, 0x06, 0x06, 0xa6, 0x14, 0x08,
|
||||
0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10,
|
||||
0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10,
|
||||
0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10,
|
||||
0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10,
|
||||
0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10,
|
||||
0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10,
|
||||
0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10,
|
||||
0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x10,
|
||||
0xff, 0xff, 0x00, 0x10, 0xff, 0xff, 0x00, 0x03, 0x06, 0xba, 0x09, 0x04, 0x06, 0xc3, 0x11, 0x08,
|
||||
0x06, 0xd4, 0x14, 0x08, 0x06, 0xe8, 0x17, 0x09, 0x06, 0xff, 0x13, 0x08, 0x07, 0x12, 0x0c, 0x07,
|
||||
0x07, 0x1e, 0x11, 0x07, 0x07, 0x2f, 0x10, 0x09, 0x07, 0x3f, 0x23, 0x0d, 0x07, 0x62, 0x0a, 0x05,
|
||||
0x07, 0x6c, 0x14, 0x08, 0x07, 0x80, 0x14, 0x08, 0x07, 0x94, 0x0b, 0x05, 0x07, 0x9f, 0x23, 0x0d,
|
||||
0x07, 0xc2, 0x13, 0x07, 0x07, 0xd5, 0x0d, 0x06, 0x07, 0xe2, 0x14, 0x08, 0x07, 0xf6, 0x0a, 0x05,
|
||||
0x08, 0x00, 0x0b, 0x05, 0x08, 0x0b, 0x07, 0x04, 0x08, 0x12, 0x14, 0x08, 0x08, 0x26, 0x15, 0x09,
|
||||
0x08, 0x3b, 0x08, 0x04, 0x08, 0x43, 0x09, 0x03, 0x08, 0x4c, 0x0a, 0x05, 0x08, 0x56, 0x0d, 0x05,
|
||||
0x08, 0x63, 0x14, 0x08, 0x08, 0x77, 0x20, 0x0c, 0x08, 0x97, 0x20, 0x0c, 0x08, 0xb7, 0x23, 0x0c,
|
||||
0x08, 0xda, 0x0f, 0x06, 0x08, 0xe9, 0x17, 0x08, 0x09, 0x00, 0x17, 0x08, 0x09, 0x17, 0x17, 0x08,
|
||||
0x09, 0x2e, 0x17, 0x08, 0x09, 0x45, 0x17, 0x08, 0x09, 0x5c, 0x17, 0x08, 0x09, 0x73, 0x1d, 0x0b,
|
||||
0x09, 0x90, 0x14, 0x08, 0x09, 0xa4, 0x11, 0x07, 0x09, 0xb5, 0x11, 0x07, 0x09, 0xc6, 0x11, 0x07,
|
||||
0x09, 0xd7, 0x11, 0x07, 0x09, 0xe8, 0x0b, 0x05, 0x09, 0xf3, 0x0b, 0x05, 0x0a, 0x00, 0x0b, 0x05,
|
||||
0x0a, 0x0b, 0x0b, 0x05, 0x0a, 0x16, 0x17, 0x09, 0x0a, 0x2d, 0x1a, 0x0a, 0x0a, 0x47, 0x1a, 0x0a,
|
||||
0x0a, 0x61, 0x1a, 0x0a, 0x0a, 0x7b, 0x1a, 0x0a, 0x0a, 0x95, 0x1a, 0x0a, 0x0a, 0xaf, 0x1a, 0x0a,
|
||||
0x0a, 0xc9, 0x14, 0x08, 0x0a, 0xdd, 0x1a, 0x0a, 0x0a, 0xf7, 0x17, 0x09, 0x0b, 0x0e, 0x17, 0x09,
|
||||
0x0b, 0x25, 0x17, 0x09, 0x0b, 0x3c, 0x17, 0x09, 0x0b, 0x53, 0x13, 0x07, 0x0b, 0x66, 0x14, 0x08,
|
||||
0x0b, 0x7a, 0x17, 0x08, 0x0b, 0x91, 0x11, 0x07, 0x0b, 0xa2, 0x11, 0x07, 0x0b, 0xb3, 0x11, 0x07,
|
||||
0x0b, 0xc4, 0x11, 0x07, 0x0b, 0xd5, 0x11, 0x07, 0x0b, 0xe6, 0x11, 0x07, 0x0c, 0x00, 0x20, 0x0b,
|
||||
0x0c, 0x20, 0x10, 0x06, 0x0c, 0x30, 0x14, 0x07, 0x0c, 0x44, 0x14, 0x07, 0x0c, 0x58, 0x14, 0x07,
|
||||
0x0c, 0x6c, 0x14, 0x07, 0x0c, 0x80, 0x07, 0x04, 0x0c, 0x87, 0x07, 0x04, 0x0c, 0x8e, 0x0a, 0x04,
|
||||
0x0c, 0x98, 0x0a, 0x04, 0x0c, 0xa2, 0x14, 0x08, 0x0c, 0xb6, 0x14, 0x08, 0x0c, 0xca, 0x14, 0x08,
|
||||
0x0c, 0xde, 0x14, 0x08, 0x0c, 0xf2, 0x14, 0x08, 0x0d, 0x06, 0x14, 0x08, 0x0d, 0x1a, 0x14, 0x08,
|
||||
0x0d, 0x2e, 0x14, 0x08, 0x0d, 0x42, 0x14, 0x08, 0x0d, 0x56, 0x14, 0x08, 0x0d, 0x6a, 0x14, 0x08,
|
||||
0x0d, 0x7e, 0x14, 0x08, 0x0d, 0x92, 0x14, 0x08, 0x0d, 0xa6, 0x11, 0x07, 0x0d, 0xb7, 0x14, 0x08,
|
||||
0x0d, 0xcb, 0x11, 0x07,
|
||||
};
|
||||
|
||||
static const uint16_t FONT_1_OFFSETS[] = {
|
||||
0, 276, 504, 737, 1012, 1278, 1551, 1786,
|
||||
};
|
||||
|
||||
static const uint16_t FONT_1_LENGTHS[] = {
|
||||
510, 503, 505, 512, 510, 503, 476,
|
||||
};
|
||||
|
||||
static const Font FONT_1 = { FONT_1_DESCRIPTOR, FONT_1_DATA, FONT_1_OFFSETS, FONT_1_LENGTHS, 7, 1786 };
|
||||
|
||||
return FONT_1;
|
||||
}
|
||||
|
||||
// Authoritative raw bitmap SHA256: de86a8dff7e9e25bed0bd0c782c9db31868b052b02001408a85e9d01bef3ab7f
|
||||
|
||||
inline const Font& fontStorage2() {
|
||||
|
||||
static const uint8_t FONT_2_DATA[] = {
|
||||
0x65, 0xcf, 0x01, 0xc6, 0x15, 0x51, 0x18, 0x06, 0xe0, 0x67, 0x9a, 0x38, 0xc5, 0x5f, 0x07, 0xe0,
|
||||
0xa6, 0x6a, 0xa6, 0x1d, 0x4c, 0xc0, 0xfc, 0xc4, 0x6c, 0x65, 0x76, 0x50, 0x3b, 0xb8, 0x07, 0x01,
|
||||
0xca, 0xbf, 0x95, 0x96, 0x70, 0x08, 0x41, 0x8b, 0x38, 0x4b, 0x18, 0xc0, 0x45, 0xee, 0xf4, 0x5d,
|
||||
0x18, 0x74, 0xf1, 0xf8, 0xde, 0xf7, 0x05, 0x3e, 0x80, 0xb6, 0x3f, 0x0a, 0x30, 0xa2, 0xa5, 0x00,
|
||||
0x40, 0x74, 0x81, 0x8e, 0x6f, 0xe1, 0xfb, 0x23, 0x7f, 0x17, 0x6d, 0xef, 0xb4, 0x1f, 0xb7, 0xfe,
|
||||
0x91, 0x3f, 0x8b, 0xb2, 0xf7, 0xda, 0xd3, 0xad, 0x87, 0xe7, 0x20, 0x3f, 0x28, 0xc3, 0x0b, 0xf5,
|
||||
0xcd, 0x49, 0x9d, 0x4e, 0xb6, 0xfd, 0xac, 0xae, 0xa7, 0xf0, 0xa0, 0xd6, 0xac, 0x94, 0x04, 0x65,
|
||||
0xa1, 0x9e, 0x59, 0xab, 0x30, 0x46, 0x9e, 0x63, 0xcb, 0xd4, 0x9e, 0x0d, 0x1f, 0x28, 0xbf, 0xb3,
|
||||
0xb6, 0x0d, 0xc6, 0x69, 0x22, 0xd8, 0x16, 0x6a, 0x06, 0x25, 0x2b, 0xbf, 0x06, 0xf5, 0xcb, 0x6c,
|
||||
0xfd, 0x3c, 0x59, 0xbf, 0x86, 0xcb, 0xa4, 0x3e, 0xbd, 0x55, 0xd2, 0x80, 0xd7, 0xd4, 0x25, 0x7c,
|
||||
0xc2, 0x78, 0xff, 0xe4, 0x96, 0xb8, 0x2e, 0x4a, 0xbe, 0x68, 0x5d, 0xe9, 0x47, 0x9e, 0xc1, 0xed,
|
||||
0x36, 0xa5, 0x8f, 0x9d, 0xeb, 0x99, 0x2d, 0x41, 0xe9, 0xc2, 0xcb, 0xf0, 0x9e, 0x9f, 0x89, 0xad,
|
||||
0xa7, 0xe4, 0xf0, 0x2a, 0x74, 0x01, 0x4c, 0xff, 0xd9, 0x93, 0xc0, 0xe4, 0x00, 0xb5, 0xe3, 0x12,
|
||||
0x66, 0x50, 0xba, 0x7b, 0x00, 0xb3, 0x70, 0x44, 0x03, 0x35, 0x71, 0x39, 0xa2, 0x06, 0xae, 0xbd,
|
||||
0xb2, 0x67, 0xb5, 0x7b, 0x67, 0x35, 0x1d, 0x9a, 0x59, 0xdd, 0x07, 0xf6, 0xf4, 0x0f, 0x85, 0xcf,
|
||||
0x01, 0x66, 0x03, 0x41, 0x18, 0x05, 0xe0, 0x6f, 0x3b, 0x24, 0x40, 0x36, 0x80, 0xa5, 0xd5, 0xf4,
|
||||
0x08, 0x43, 0xd0, 0x05, 0x49, 0x8e, 0x32, 0x47, 0x08, 0x20, 0x28, 0x5d, 0x8a, 0x42, 0x0f, 0x35,
|
||||
0x37, 0x28, 0x40, 0x00, 0x73, 0x84, 0x02, 0x16, 0xd5, 0x6d, 0x87, 0x15, 0x0b, 0x14, 0x1f, 0x3c,
|
||||
0x8f, 0xf7, 0xff, 0x00, 0x02, 0x43, 0x43, 0x46, 0xf9, 0x39, 0x2a, 0xd3, 0x11, 0x4e, 0xa2, 0xac,
|
||||
0x97, 0x1c, 0x24, 0xcf, 0xd2, 0xb0, 0x97, 0x4a, 0x54, 0x2e, 0x51, 0x3e, 0x46, 0xd6, 0x11, 0x4e,
|
||||
0xb6, 0xb2, 0x28, 0xc5, 0x85, 0x73, 0x54, 0x5e, 0x3a, 0xf9, 0x73, 0xc7, 0x5b, 0x4b, 0x20, 0x07,
|
||||
0x4a, 0xa0, 0x0f, 0x6c, 0x82, 0x21, 0x04, 0x59, 0x50, 0xc7, 0x2a, 0xc2, 0x0c, 0x5b, 0x65, 0x17,
|
||||
0x95, 0xfb, 0x28, 0x75, 0x0b, 0xb1, 0x93, 0xbe, 0x76, 0xe4, 0x35, 0x18, 0x03, 0x53, 0x2b, 0xef,
|
||||
0x1f, 0xe4, 0xed, 0xa2, 0xd6, 0xf7, 0xb5, 0x46, 0x69, 0x21, 0xdd, 0xcc, 0xaf, 0xe4, 0x56, 0x1a,
|
||||
0x1b, 0xe9, 0x50, 0x1b, 0x94, 0x06, 0xf5, 0xca, 0x7a, 0xad, 0xf2, 0xdd, 0x4b, 0x97, 0xc5, 0x17,
|
||||
0x63, 0xac, 0xb9, 0xe1, 0xbd, 0x05, 0x75, 0xfd, 0x35, 0x2a, 0x29, 0x4a, 0x79, 0x76, 0xea, 0xe4,
|
||||
0xf4, 0x28, 0x4f, 0x2d, 0x53, 0x03, 0x60, 0xd3, 0x57, 0x40, 0x6e, 0x6c, 0xc6, 0x3f, 0x3d, 0x78,
|
||||
0xc2, 0x79, 0x76, 0xc5, 0x47, 0xd5, 0xb0, 0xaa, 0x02, 0xe1, 0x0e, 0x35, 0xfa, 0x1f, 0xc2, 0x8a,
|
||||
0x55, 0xa8, 0x6e, 0xb1, 0xab, 0x6a, 0x5e, 0xf9, 0x05, 0x65, 0xce, 0x01, 0x66, 0xc3, 0x50, 0x18,
|
||||
0xc0, 0xf1, 0x5f, 0x94, 0x04, 0x58, 0x7a, 0x80, 0x91, 0x1e, 0xe1, 0x01, 0x32, 0x58, 0xc3, 0x2e,
|
||||
0xf2, 0x76, 0x83, 0x02, 0x06, 0xc8, 0xec, 0x00, 0x3b, 0x42, 0xaf, 0xf2, 0x66, 0x0c, 0xa0, 0x47,
|
||||
0xd8, 0x3b, 0x42, 0x01, 0x45, 0x35, 0x4b, 0x84, 0x2d, 0x16, 0xfc, 0x78, 0x92, 0xef, 0xfb, 0xfc,
|
||||
0x3b, 0xc4, 0x89, 0xad, 0x98, 0x1f, 0xc4, 0xc3, 0x56, 0x6e, 0x49, 0x0d, 0x7d, 0x05, 0xce, 0x1b,
|
||||
0x6e, 0x0d, 0x55, 0xab, 0x2f, 0x0e, 0xd2, 0xf9, 0x59, 0x77, 0xfd, 0x14, 0xef, 0xbe, 0xc4, 0x72,
|
||||
0x32, 0xbe, 0x6f, 0x1f, 0xa3, 0x27, 0x49, 0xa9, 0x2f, 0x4a, 0xde, 0xa7, 0x9d, 0x82, 0x80, 0x47,
|
||||
0x72, 0xc3, 0xb5, 0x90, 0x8e, 0x85, 0xfc, 0x36, 0x7a, 0x9d, 0xdf, 0xd3, 0x88, 0x5c, 0x63, 0x8f,
|
||||
0x00, 0x90, 0x87, 0xbd, 0x49, 0x0c, 0xc1, 0x52, 0x7e, 0x09, 0xd2, 0xd0, 0xe8, 0x4f, 0x35, 0x36,
|
||||
0xe0, 0x82, 0xa1, 0xd2, 0x1f, 0x6b, 0xa9, 0xb8, 0x97, 0xb5, 0xa2, 0x60, 0xa9, 0xb3, 0x5d, 0x5d,
|
||||
0x16, 0x2c, 0x65, 0xad, 0x69, 0xbd, 0xff, 0xae, 0x19, 0x2a, 0x2e, 0xd6, 0x2d, 0x2b, 0x3b, 0xbb,
|
||||
0xd5, 0x58, 0xb4, 0xb2, 0xb3, 0x0c, 0x3d, 0xcd, 0xa1, 0x69, 0x19, 0x1a, 0xff, 0xa4, 0xbc, 0xd7,
|
||||
0xe5, 0xe6, 0xff, 0x5d, 0x81, 0xb5, 0xc5, 0x7f, 0x53, 0x8d, 0x28, 0xfc, 0x7e, 0x9a, 0xeb, 0xca,
|
||||
0x99, 0x2a, 0x0f, 0xc3, 0x66, 0x54, 0xfc, 0x00, 0x84, 0xd0, 0x01, 0x66, 0x04, 0x31, 0x14, 0x80,
|
||||
0xe1, 0x6f, 0x1a, 0x04, 0x90, 0x02, 0x8a, 0x65, 0x7a, 0x84, 0x01, 0x2c, 0x6a, 0xe7, 0x2a, 0x39,
|
||||
0xc2, 0x9c, 0xa0, 0xe6, 0x06, 0xbd, 0x4a, 0x8f, 0x10, 0xa0, 0x97, 0x28, 0x72, 0x84, 0x05, 0x2c,
|
||||
0xca, 0x34, 0x0c, 0x42, 0x83, 0xe2, 0x83, 0xe7, 0xe5, 0x7f, 0x04, 0xa0, 0x1e, 0xab, 0x86, 0x8c,
|
||||
0x2b, 0x7e, 0xf0, 0x15, 0xec, 0x21, 0xa9, 0x6e, 0xb2, 0x2b, 0x5e, 0x87, 0x75, 0xcb, 0x68, 0x5c,
|
||||
0xab, 0x81, 0x7d, 0x76, 0x56, 0x6b, 0xc4, 0x8a, 0xb7, 0x73, 0x78, 0x0f, 0xbc, 0x53, 0x22, 0x75,
|
||||
0xd2, 0xd3, 0xc6, 0x44, 0xc2, 0x0d, 0x0f, 0xf4, 0x41, 0x7f, 0x82, 0x07, 0x8e, 0xa8, 0x7c, 0x24,
|
||||
0xc5, 0x8b, 0x6c, 0x19, 0x94, 0xe9, 0x62, 0x3f, 0x12, 0x47, 0x64, 0xfb, 0x7b, 0x28, 0x17, 0x5d,
|
||||
0xa6, 0x6c, 0xcd, 0x8a, 0xf9, 0xff, 0xfe, 0xd6, 0xdc, 0xa7, 0x32, 0x7d, 0x87, 0xd6, 0x0f, 0x8e,
|
||||
0xf8, 0x64, 0xec, 0x67, 0xa7, 0xaa, 0x09, 0xca, 0x67, 0x52, 0xe6, 0x1b, 0xa9, 0xff, 0x70, 0x7c,
|
||||
0x6e, 0xa3, 0x45, 0xb9, 0x2c, 0xf2, 0xd2, 0x6c, 0x4d, 0x6e, 0x6a, 0x3b, 0x58, 0x66, 0xf6, 0x98,
|
||||
0xd1, 0xe9, 0xf5, 0xdf, 0x21, 0x8b, 0x03, 0x00, 0x8d, 0xcc, 0x01, 0x66, 0xc4, 0x40, 0x14, 0x80,
|
||||
0xe1, 0x2f, 0x82, 0x00, 0x66, 0x4f, 0xd0, 0xe4, 0x08, 0x59, 0xd0, 0x60, 0x6d, 0x7a, 0x94, 0x39,
|
||||
0xc2, 0x02, 0x8a, 0xa5, 0x41, 0xb5, 0x80, 0x5e, 0x69, 0x40, 0xcf, 0x31, 0x47, 0x28, 0x20, 0x58,
|
||||
0xbb, 0x7d, 0x74, 0x5b, 0x01, 0x14, 0x9f, 0x91, 0xbc, 0xff, 0x3d, 0x80, 0x7a, 0x4b, 0xa1, 0xc7,
|
||||
0x84, 0x11, 0x5b, 0x93, 0x98, 0x89, 0x26, 0xa3, 0xb6, 0x94, 0x19, 0x97, 0x96, 0xd2, 0xe3, 0x80,
|
||||
0x23, 0x35, 0x71, 0x6d, 0xd4, 0x9e, 0xda, 0x30, 0x64, 0xd4, 0x8e, 0xf2, 0x82, 0x35, 0xb1, 0xcc,
|
||||
0x38, 0x88, 0xe2, 0x27, 0x4c, 0x22, 0xdc, 0x1e, 0xbb, 0xcf, 0xe3, 0x75, 0xe9, 0xd4, 0x99, 0xda,
|
||||
0x32, 0x30, 0xc8, 0xa6, 0x88, 0x8f, 0x96, 0xf7, 0x4e, 0x2c, 0xb3, 0x12, 0xaf, 0xe5, 0x23, 0x89,
|
||||
0xff, 0x62, 0x8e, 0x61, 0x70, 0xbf, 0xd9, 0x61, 0xc6, 0x3a, 0x53, 0xc3, 0x19, 0x3d, 0xb5, 0x0d,
|
||||
0x10, 0x7d, 0x88, 0xbd, 0xf2, 0x28, 0x7f, 0xed, 0xe5, 0xf3, 0x28, 0xf7, 0xa3, 0xda, 0x05, 0x23,
|
||||
0x06, 0x80, 0x7a, 0xbb, 0xb5, 0x35, 0x64, 0xfe, 0x40, 0x45, 0xe9, 0xd0, 0x63, 0xdd, 0x7e, 0x4c,
|
||||
0xb0, 0xcd, 0x7f, 0x4f, 0x80, 0x8c, 0x67, 0x3c, 0xb0, 0x74, 0x94, 0x26, 0xb4, 0x48, 0x38, 0xe0,
|
||||
0x84, 0x27, 0x96, 0xe6, 0x7f, 0x04, 0x76, 0x18, 0x71, 0x42, 0x01, 0x12, 0xaf, 0x33, 0x6f, 0x7b,
|
||||
0x3e, 0xc7, 0xbb, 0x1d, 0xd7, 0xc4, 0x65, 0xfe, 0x06, 0x8d, 0xd1, 0x01, 0x66, 0xc4, 0x40, 0x14,
|
||||
0x80, 0xe1, 0xaf, 0x4d, 0x24, 0x10, 0x69, 0x00, 0xc5, 0xd8, 0xb9, 0x42, 0x00, 0x45, 0xd8, 0x2b,
|
||||
0xed, 0x01, 0x5a, 0x3d, 0x4a, 0xaf, 0xb2, 0xa0, 0xa0, 0x7a, 0x86, 0x1c, 0x21, 0x80, 0x20, 0x92,
|
||||
0x0e, 0x83, 0x41, 0x16, 0xc5, 0x07, 0x79, 0x2f, 0xef, 0x27, 0x01, 0x58, 0x8e, 0x6b, 0x12, 0xe9,
|
||||
0x5e, 0x69, 0xc6, 0xa2, 0x7f, 0x63, 0x8b, 0x2c, 0x2d, 0x98, 0x5b, 0xd6, 0x48, 0x08, 0x79, 0x5c,
|
||||
0x60, 0x40, 0xde, 0xdc, 0x22, 0x97, 0x89, 0x32, 0xa6, 0x1e, 0x2c, 0x1f, 0x31, 0x97, 0x12, 0x98,
|
||||
0x2b, 0xd6, 0x17, 0x7e, 0x02, 0xdf, 0x63, 0xf1, 0x9b, 0x6c, 0xc9, 0x32, 0xa8, 0xd1, 0x70, 0xcf,
|
||||
0x6f, 0x19, 0x1b, 0x99, 0x92, 0xaa, 0x85, 0xa9, 0x4b, 0x89, 0xa2, 0x1e, 0x7a, 0xef, 0x5f, 0xad,
|
||||
0xfd, 0xa8, 0xec, 0x9f, 0x80, 0x52, 0xee, 0xd0, 0x14, 0xf6, 0x2b, 0x5b, 0x02, 0xdc, 0xf6, 0x94,
|
||||
0x49, 0xe8, 0x32, 0xfd, 0x6d, 0x3f, 0xda, 0x31, 0x1d, 0x3b, 0x5d, 0xba, 0x63, 0x7e, 0x62, 0x6d,
|
||||
0x09, 0x91, 0x66, 0xe2, 0x79, 0x3c, 0xad, 0x41, 0xe9, 0x3c, 0xec, 0xaf, 0xe7, 0xe7, 0x2e, 0xf2,
|
||||
0xfe, 0xfc, 0xbf, 0x13, 0x5b, 0x82, 0x25, 0x7f, 0xd4, 0x87, 0xbf, 0x28, 0x84, 0x3c, 0x9b, 0xab,
|
||||
0x3f, 0x45, 0xcf, 0x81, 0x06, 0xdb, 0x50, 0x14, 0x06, 0xe0, 0x2f, 0x49, 0xa5, 0x10, 0x4b, 0x01,
|
||||
0xc3, 0x34, 0xaf, 0xd0, 0x82, 0x15, 0x91, 0xbc, 0xca, 0x1e, 0xa3, 0x98, 0xb6, 0xa0, 0xaf, 0xb1,
|
||||
0x57, 0xb9, 0x60, 0xcf, 0x11, 0x30, 0x00, 0x05, 0x14, 0x91, 0xbb, 0xdb, 0x5d, 0x73, 0xf1, 0x39,
|
||||
0x72, 0xce, 0xc9, 0x9f, 0x13, 0x00, 0x5b, 0xec, 0xad, 0x49, 0xf7, 0x95, 0xf6, 0x54, 0x7c, 0xb9,
|
||||
0xb0, 0x0e, 0xbc, 0xf6, 0x90, 0x4a, 0x7e, 0xfc, 0x36, 0x52, 0xd6, 0xd8, 0x1d, 0xf8, 0xf9, 0xab,
|
||||
0xb7, 0xc5, 0x0c, 0x60, 0x9b, 0x79, 0x27, 0x1d, 0xda, 0x02, 0xe3, 0xe7, 0x8d, 0x13, 0xbf, 0x33,
|
||||
0xcf, 0x73, 0x32, 0xb0, 0x4b, 0xd0, 0x12, 0xe2, 0x90, 0xcc, 0xe5, 0x23, 0x80, 0x6d, 0xc8, 0xb9,
|
||||
0x4e, 0x85, 0x03, 0xb9, 0xaf, 0xc6, 0x84, 0xb5, 0x22, 0x0c, 0x18, 0x31, 0x11, 0xfa, 0xdc, 0x9b,
|
||||
0x50, 0xab, 0x71, 0xc3, 0xba, 0xe7, 0x31, 0x63, 0xcc, 0x75, 0x6d, 0x38, 0x62, 0xc2, 0xbb, 0xcc,
|
||||
0x84, 0x99, 0xad, 0x61, 0x42, 0xbe, 0xe6, 0x38, 0x72, 0xed, 0x59, 0x9a, 0xec, 0xda, 0xe7, 0x5e,
|
||||
0x9a, 0xd5, 0x3a, 0x53, 0xb2, 0x56, 0x9d, 0xd0, 0xef, 0x73, 0xea, 0x96, 0xcf, 0x29, 0x27, 0x40,
|
||||
0x7b, 0x49, 0x26, 0x9e, 0xdf, 0xf9, 0x73, 0xe6, 0xf6, 0x09, 0x2e, 0xbf, 0x1b, 0x32, 0xf1, 0x2e,
|
||||
0xcc, 0xb1, 0x5a, 0x3c, 0x9a, 0x1f, 0xfc, 0x03, 0x00, 0xf0, 0x8a, 0xb1, 0xff, 0x80, 0xff, 0x3b,
|
||||
0xcb, 0xb0, 0x55, 0xe1, 0x1e, 0x2b, 0x4b, 0x25, 0x67, 0xfd, 0x05, 0x85, 0xc8, 0x01, 0x06, 0x14,
|
||||
0x51, 0x1c, 0xc7, 0xf1, 0xcf, 0xf4, 0xc6, 0xdb, 0x8d, 0xd1, 0x06, 0xd8, 0xc0, 0xce, 0x11, 0x5e,
|
||||
0x45, 0x2d, 0xc5, 0x2e, 0x1d, 0xa0, 0x23, 0xf4, 0x8e, 0x10, 0x20, 0xa0, 0x01, 0x81, 0x74, 0x86,
|
||||
0x8e, 0x32, 0xa0, 0x20, 0x9d, 0x61, 0x8e, 0xb0, 0x20, 0x83, 0xd1, 0xf4, 0x06, 0xa3, 0x35, 0xa2,
|
||||
0x2f, 0x1f, 0x7f, 0xff, 0x1f, 0xc8, 0x48, 0x77, 0x5a, 0xe4, 0x8d, 0xd6, 0xda, 0xcf, 0x39, 0x58,
|
||||
0xac, 0x4d, 0x15, 0xf3, 0x8e, 0x10, 0x75, 0x55, 0x63, 0xa8, 0x5e, 0x2f, 0xb7, 0xa8, 0x41, 0x4e,
|
||||
0xc5, 0x59, 0x37, 0x5f, 0xf4, 0xf3, 0x4b, 0x39, 0xa7, 0xbf, 0x24, 0xd7, 0x62, 0xed, 0x57, 0x64,
|
||||
0x0a, 0x34, 0x45, 0x8c, 0x77, 0x02, 0x9f, 0x8b, 0xdf, 0x3b, 0x1e, 0xd4, 0x90, 0x31, 0xbc, 0x89,
|
||||
0xba, 0xb7, 0x91, 0xa9, 0xb8, 0x5d, 0x18, 0x8b, 0x77, 0xb1, 0xec, 0xc5, 0xb5, 0xb6, 0xe9, 0x76,
|
||||
0x1a, 0x0f, 0x0b, 0xe8, 0xcf, 0x8f, 0x0d, 0x1f, 0x93, 0xf4, 0xbd, 0xf8, 0x56, 0x7c, 0x7a, 0x2a,
|
||||
0xfd, 0x78, 0x25, 0x8d, 0x27, 0x52, 0x6d, 0x53, 0xfe, 0xe7, 0x3f, 0x62, 0x0e, 0xba, 0x2a, 0xea,
|
||||
0x35, 0xb2, 0xa3, 0x3c, 0x3d, 0xd1, 0x7e, 0x79, 0x2e, 0x85, 0xc5, 0x8b, 0x95, 0x36, 0x3c, 0x93,
|
||||
0x1d, 0x5d, 0x8b, 0x5e, 0xa3, 0x0b, 0x91, 0x39, 0xf0, 0x01, 0x1c, 0xf8, 0xfa, 0xb0, 0xd8, 0x17,
|
||||
0x35, 0xc3, 0x01, 0x74, 0x15, 0x43, 0xe0, 0xfd, 0x8e, 0x73, 0xc3, 0x7e, 0x4f, 0xbf, 0x6e, 0x8f,
|
||||
0x38, 0x36, 0x20, 0xfd, 0xc7, 0x2d, 0x80, 0xae, 0xda, 0xfa, 0x03, 0x8d, 0xc8, 0x01, 0x46, 0x04,
|
||||
0x51, 0x00, 0x80, 0xe1, 0x6f, 0xcc, 0x9a, 0x9d, 0xf4, 0xcc, 0x0c, 0x60, 0x04, 0xed, 0x11, 0x5e,
|
||||
0x16, 0x05, 0x2a, 0x74, 0x90, 0xa1, 0x0b, 0x2c, 0x20, 0x44, 0x73, 0xb0, 0xf0, 0x0e, 0xd0, 0x21,
|
||||
0xe6, 0x00, 0x61, 0x81, 0x42, 0xf6, 0x65, 0x3c, 0xd8, 0x80, 0xf0, 0xf1, 0xfb, 0xc1, 0x37, 0x72,
|
||||
0x6d, 0xae, 0x1a, 0x49, 0x30, 0x19, 0xad, 0x76, 0x79, 0x2f, 0xae, 0x9e, 0x63, 0xf1, 0x75, 0x63,
|
||||
0x77, 0xbf, 0x37, 0xb9, 0xf2, 0x68, 0x94, 0x04, 0x73, 0xdd, 0x90, 0x6b, 0x5e, 0x02, 0xfe, 0x4b,
|
||||
0xaa, 0x58, 0x6a, 0x62, 0x43, 0xc1, 0x54, 0x97, 0x8f, 0x18, 0xff, 0xca, 0xb7, 0xc5, 0xf9, 0xa3,
|
||||
0x0d, 0x84, 0x8e, 0xcd, 0x25, 0x1f, 0x17, 0xbc, 0xb6, 0xc4, 0x16, 0x42, 0xcb, 0x53, 0xe1, 0xb3,
|
||||
0xe5, 0xbd, 0x67, 0xd8, 0xc2, 0x8c, 0x05, 0x07, 0x44, 0x00, 0xa7, 0xdc, 0x5b, 0x89, 0x28, 0x18,
|
||||
0x38, 0x5d, 0x73, 0x7a, 0x00, 0x1d, 0xcb, 0x1b, 0xc7, 0x7c, 0x2e, 0x57, 0x11, 0x51, 0xe9, 0x15,
|
||||
0x80, 0x83, 0x62, 0x83, 0x86, 0xd4, 0x30, 0x6f, 0x51, 0xc1, 0x80, 0x11, 0x01, 0x3f, 0x3d, 0xa4,
|
||||
0x9e, 0x69, 0x64, 0x37, 0x14, 0x6b, 0xaf, 0x0f, 0x6d, 0xcb, 0x5d, 0xc7, 0x71, 0x4b, 0xaa, 0x99,
|
||||
0x31, 0x06, 0x0e, 0x1d, 0x4b, 0x4d, 0xaa, 0x7e, 0x01, 0x6d, 0x8e, 0x01, 0x46, 0x05, 0x41, 0x1c,
|
||||
0x87, 0xbf, 0x31, 0x6c, 0x93, 0x9e, 0xdd, 0x07, 0x08, 0xa9, 0x47, 0x17, 0x98, 0x14, 0x06, 0x54,
|
||||
0x47, 0xd9, 0x23, 0xec, 0x05, 0xd2, 0xac, 0x3d, 0x48, 0x57, 0x19, 0xf0, 0x1e, 0xa4, 0x33, 0x0c,
|
||||
0x91, 0x45, 0x12, 0x20, 0xac, 0xf4, 0x63, 0x27, 0xf6, 0xb1, 0xf8, 0xf8, 0xfd, 0xf9, 0xe6, 0x33,
|
||||
0x00, 0x51, 0x24, 0xd1, 0x8a, 0xfc, 0xec, 0x81, 0x0b, 0x51, 0x43, 0xb4, 0x90, 0x81, 0x80, 0xce,
|
||||
0x8d, 0xce, 0x86, 0xd4, 0x9f, 0xd2, 0xb6, 0x0e, 0xbe, 0x1f, 0x66, 0x70, 0x8b, 0x84, 0x9e, 0xef,
|
||||
0x44, 0x28, 0x89, 0x13, 0x48, 0x06, 0xba, 0x72, 0x36, 0x10, 0xaf, 0x3d, 0xd9, 0x07, 0x76, 0xdb,
|
||||
0x3b, 0xf0, 0xb7, 0x4a, 0xdc, 0x40, 0xf6, 0x00, 0xed, 0x23, 0xf8, 0x7d, 0xe1, 0xa0, 0xcc, 0x53,
|
||||
0x20, 0x86, 0x4b, 0x88, 0xca, 0xe4, 0xff, 0x8c, 0x53, 0xb5, 0x56, 0xf5, 0x8c, 0x2e, 0x39, 0xb6,
|
||||
0xdd, 0xf9, 0xe2, 0x17, 0x02, 0xe0, 0xc7, 0xc0, 0x64, 0xa1, 0xb2, 0xbc, 0x59, 0x81, 0x36, 0x02,
|
||||
0x03, 0x1e, 0xb8, 0x87, 0x7c, 0x85, 0x9d, 0x0c, 0x87, 0x17, 0xc3, 0xd7, 0x60, 0x18, 0x7b, 0x43,
|
||||
0xd2, 0xe6, 0x57, 0xe4, 0x06, 0x50, 0x12, 0xbf, 0xd4, 0x99, 0x66, 0x65, 0x94, 0xfe, 0xd9, 0xcf,
|
||||
0x4f, 0xad, 0x74, 0xb3, 0xae, 0x3b, 0xe9, 0x7b, 0x29, 0xef, 0x83, 0xe8, 0xe7, 0xbd, 0x59, 0xaf,
|
||||
0x3b, 0xe9, 0x75, 0xd1, 0x3f, 0x4a, 0xfd, 0x55, 0xbb, 0x96, 0x5e, 0xad, 0xd7, 0xab, 0xa2, 0xe7,
|
||||
0x41, 0x94, 0x7a, 0x75, 0x5c, 0xff, 0x03, 0x6d, 0x90, 0x35, 0x5a, 0x03, 0x40, 0x14, 0x06, 0x27,
|
||||
0xee, 0xd2, 0xe3, 0xee, 0xb0, 0x1d, 0x2e, 0x47, 0x89, 0x27, 0x15, 0x35, 0x1d, 0x4e, 0xcb, 0x11,
|
||||
0x72, 0x05, 0x8e, 0x90, 0x93, 0xe0, 0xee, 0x1d, 0x2e, 0xef, 0xfb, 0x71, 0x29, 0x66, 0x75, 0xfe,
|
||||
0xb7, 0x02, 0x0e, 0x98, 0x82, 0xed, 0x26, 0x78, 0xf4, 0xf0, 0x58, 0xf5, 0xb0, 0xbb, 0x6c, 0x2c,
|
||||
0x7a, 0x78, 0xb6, 0x71, 0xf8, 0xd9, 0x03, 0xdb, 0x29, 0x60, 0xda, 0x70, 0x48, 0x9f, 0x80, 0x05,
|
||||
0xd3, 0xaf, 0x7d, 0x60, 0xdb, 0xb5, 0x75, 0x0f, 0xdb, 0xa6, 0x67, 0x16, 0xac, 0x7f, 0x99, 0x16,
|
||||
0x19, 0xe7, 0xfe, 0x00, 0x70, 0x6b, 0xbc, 0x84, 0x58, 0xa8, 0xa6, 0xa8, 0x79, 0xea, 0xd9, 0x66,
|
||||
0x24, 0x98, 0xe1, 0xfa, 0x9d, 0x8d, 0x50, 0x06, 0xc7, 0x0c, 0x69, 0x00, 0x40, 0x95, 0xf6, 0x8c,
|
||||
0xb2, 0xa5, 0x67, 0x8d, 0xca, 0xb7, 0x6a, 0xcd, 0x34, 0x7f, 0xd3, 0x44, 0x46, 0x8a, 0x54, 0x45,
|
||||
0xb2, 0x7f, 0xb5, 0x73, 0xa3, 0x64, 0xcb, 0xf9, 0x37, 0x34, 0xae, 0xfc, 0xd5, 0x0e, 0x8d, 0xdc,
|
||||
0xb7, 0xc3, 0x4a, 0x42, 0x9a, 0x07, 0x68, 0xb3, 0x41, 0x19, 0xa7, 0x6a, 0xc7, 0x86, 0xd2, 0xa8,
|
||||
0xcb, 0xe0, 0xb4, 0x74, 0x69, 0x74, 0xd9, 0xdc, 0x17, 0x06, 0xfa, 0x91, 0xaf, 0xb7, 0x1c, 0x19,
|
||||
0x36, 0x27, 0x0c, 0xd0, 0x89, 0x12, 0x1f, 0x2f, 0xd0, 0xdc, 0x0b, 0x80, 0xe3, 0xdf, 0xbf, 0x94,
|
||||
0xcc, 0x88, 0x3e, 0x6f, 0x61, 0x2b, 0xa5, 0xcf, 0x64, 0xee, 0xf7, 0x47, 0x9c, 0xfb, 0x60, 0x2d,
|
||||
0x05, 0xc1, 0x29, 0xf0, 0xdf, 0x42, 0x7c, 0xdb, 0x47, 0x7c, 0x21, 0x45, 0x90, 0xa9, 0x0f, 0xe7,
|
||||
0x15, 0x7d, 0x8f, 0x01, 0x46, 0xc7, 0x60, 0x1c, 0x86, 0x9f, 0xb5, 0xec, 0x3f, 0x64, 0x03, 0x08,
|
||||
0x53, 0x1d, 0x61, 0x09, 0x02, 0xba, 0xca, 0xc7, 0xd2, 0x20, 0xec, 0x08, 0x1d, 0x20, 0xba, 0x40,
|
||||
0x87, 0xf9, 0x06, 0x19, 0x3a, 0x40, 0x80, 0x75, 0x83, 0x00, 0x01, 0xeb, 0xc1, 0xc7, 0x32, 0x33,
|
||||
0x3c, 0xf8, 0xde, 0xdf, 0xfb, 0xbc, 0x33, 0x00, 0x7e, 0x65, 0x39, 0x11, 0xdf, 0x6a, 0x46, 0x2e,
|
||||
0xe9, 0x68, 0xe9, 0xe5, 0x59, 0x42, 0x22, 0x66, 0x0d, 0x2f, 0x4b, 0x8d, 0x3d, 0x18, 0xb6, 0x56,
|
||||
0xd4, 0x4a, 0x4d, 0xb4, 0x78, 0x92, 0x4e, 0xc6, 0x43, 0x6b, 0xd2, 0xb2, 0x4d, 0x2f, 0xff, 0xbf,
|
||||
0x39, 0x1d, 0x5a, 0x9f, 0x5a, 0xee, 0x23, 0x3c, 0xa2, 0x91, 0xf8, 0x38, 0xb4, 0x62, 0xb2, 0xc2,
|
||||
0x8a, 0xef, 0xdd, 0xff, 0x3a, 0x3f, 0x83, 0x2a, 0x87, 0xf7, 0xcc, 0x05, 0x4c, 0xe5, 0x47, 0xbe,
|
||||
0x7c, 0xbf, 0x9a, 0x17, 0x42, 0x1a, 0xef, 0x1d, 0x7f, 0x20, 0x72, 0x45, 0xe0, 0x8e, 0x10, 0x6f,
|
||||
0x09, 0x83, 0xe3, 0x4d, 0xcb, 0x5c, 0x39, 0x9e, 0x37, 0xcc, 0x8e, 0xdf, 0xac, 0xe3, 0x80, 0x89,
|
||||
0x5c, 0x93, 0x71, 0xcf, 0x89, 0x96, 0x4a, 0x4a, 0x41, 0x30, 0xf3, 0x26, 0xf5, 0xb6, 0xee, 0x09,
|
||||
0x52, 0xf5, 0x42, 0x54, 0xc9, 0xcd, 0xbe, 0xf7, 0xeb, 0xa5, 0xa7, 0x02, 0x2b, 0x89, 0x02, 0xb5,
|
||||
0x75, 0xfd, 0x0f, 0x6d, 0xce, 0x01, 0x66, 0xc4, 0x40, 0x00, 0x46, 0xe1, 0xb7, 0x52, 0x09, 0x94,
|
||||
0x0c, 0xa0, 0x08, 0xd9, 0x23, 0x4c, 0x81, 0xa0, 0x4c, 0xd1, 0x83, 0xe4, 0x00, 0xc5, 0x02, 0x8a,
|
||||
0x22, 0xa5, 0x7a, 0x9e, 0x1e, 0x61, 0x40, 0x0a, 0xf4, 0x04, 0x45, 0x7a, 0x83, 0x05, 0x2c, 0x56,
|
||||
0xda, 0x87, 0x21, 0x5d, 0x9a, 0xf8, 0x18, 0xf9, 0x9f, 0x11, 0xca, 0xb3, 0xfc, 0xb4, 0xea, 0xa9,
|
||||
0x19, 0x14, 0xa1, 0xf0, 0xac, 0x01, 0x37, 0xb5, 0x7b, 0x4c, 0x77, 0x90, 0x1b, 0x20, 0xe9, 0x94,
|
||||
0xb8, 0x5e, 0x12, 0xcd, 0x33, 0x54, 0x3d, 0x7c, 0x57, 0xee, 0xdb, 0x9d, 0x09, 0xb9, 0x54, 0x97,
|
||||
0xe6, 0x1d, 0xac, 0x7a, 0x2a, 0x21, 0xb9, 0x94, 0x11, 0xe4, 0x7b, 0xa7, 0x35, 0xb2, 0x7c, 0xe8,
|
||||
0x25, 0x01, 0xbd, 0x80, 0x16, 0x5e, 0x13, 0xe1, 0xed, 0x96, 0xc3, 0xec, 0xa4, 0x69, 0x0e, 0xb0,
|
||||
0xb6, 0x70, 0x36, 0xdb, 0x12, 0x4c, 0x70, 0xce, 0x3a, 0x98, 0x44, 0x93, 0xb0, 0x25, 0x93, 0x49,
|
||||
0x2e, 0xb7, 0xc4, 0x92, 0x64, 0x93, 0x69, 0x4b, 0xb2, 0xc9, 0x68, 0x32, 0x3a, 0xdf, 0x2b, 0x97,
|
||||
0x64, 0xdc, 0x12, 0x4a, 0x82, 0xb3, 0x14, 0x18, 0x4d, 0xf6, 0x97, 0xc9, 0x60, 0xf2, 0xe8, 0xfc,
|
||||
0x30, 0xcb, 0x64, 0xf8, 0xe7, 0x77, 0xe7, 0xbf, 0xb7, 0xdc, 0x38, 0xb7, 0xd2, 0x57, 0x57, 0xbe,
|
||||
0x15, 0x9f, 0x3a, 0xeb, 0x18, 0x00, 0x58, 0x1a, 0x38, 0xf5, 0xd0, 0x75, 0x57, 0xd4, 0xb1, 0xa6,
|
||||
0x3e, 0xea, 0xbd, 0xf1, 0x5c, 0x41, 0xf8, 0x05, 0x6d, 0xd0, 0x01, 0x66, 0xc4, 0x40, 0x14, 0x80,
|
||||
0xe1, 0x9f, 0xb0, 0x85, 0x92, 0x00, 0x94, 0x20, 0x47, 0x18, 0x40, 0x81, 0x5c, 0x65, 0x8e, 0x30,
|
||||
0x47, 0x98, 0x23, 0xf4, 0x48, 0x0f, 0x14, 0x54, 0xcf, 0x30, 0x47, 0x18, 0x40, 0xb1, 0xaa, 0x3f,
|
||||
0xfb, 0xb0, 0xb5, 0x3b, 0x7c, 0x24, 0x6f, 0x7e, 0x2f, 0x04, 0x80, 0xb1, 0xc0, 0xcf, 0xca, 0xf6,
|
||||
0xb5, 0xd3, 0x3e, 0x0b, 0x43, 0x5d, 0x7c, 0xeb, 0xaa, 0xb9, 0xdd, 0x67, 0x98, 0xe1, 0x75, 0xa8,
|
||||
0xa9, 0x98, 0x6d, 0xff, 0xb3, 0x6e, 0x16, 0xb9, 0xad, 0x64, 0x16, 0x66, 0xfd, 0x71, 0x5b, 0xcd,
|
||||
0x6d, 0xa4, 0x6a, 0x76, 0xdc, 0x32, 0x3b, 0x9a, 0xc6, 0xef, 0x49, 0x57, 0x9e, 0xf0, 0xb1, 0xc9,
|
||||
0x86, 0xad, 0x03, 0x91, 0x5d, 0xc9, 0x8b, 0x00, 0x7a, 0x05, 0x0e, 0xe1, 0x00, 0x55, 0x40, 0xc0,
|
||||
0x78, 0x81, 0xb9, 0xd2, 0xdf, 0x77, 0xe6, 0x6b, 0xa1, 0xa9, 0x6a, 0xbe, 0x15, 0x3e, 0xce, 0xdd,
|
||||
0x78, 0x85, 0xb9, 0x90, 0xc7, 0x0f, 0x33, 0xae, 0xa7, 0x09, 0xd4, 0x0b, 0x44, 0x0a, 0xe7, 0xd5,
|
||||
0x39, 0x58, 0xe7, 0xff, 0xdb, 0x77, 0xca, 0xc5, 0x8d, 0x0a, 0x21, 0x9c, 0xe1, 0x1d, 0x63, 0xb9,
|
||||
0x4f, 0x71, 0x4c, 0x66, 0x55, 0x45, 0xdb, 0xf3, 0x34, 0x1c, 0x67, 0x22, 0x73, 0xf5, 0xc7, 0x34,
|
||||
0x7c, 0xad, 0x99, 0x8a, 0x48, 0xc3, 0xd9, 0x71, 0x4b, 0xff, 0x00, 0x65, 0xcc, 0x01, 0x66, 0x03,
|
||||
0x41, 0x14, 0x87, 0xf1, 0x5f, 0x12, 0x12, 0x88, 0x66, 0x00, 0xc5, 0xb2, 0x57, 0x18, 0x2d, 0x5a,
|
||||
0xc4, 0xf6, 0x2a, 0xef, 0x08, 0xbd, 0x41, 0x03, 0x7a, 0xae, 0x3d, 0x4a, 0x40, 0x01, 0x2c, 0xa0,
|
||||
0x58, 0xbb, 0x7d, 0x65, 0x0d, 0xc4, 0xf8, 0xf0, 0xfe, 0xf3, 0xf9, 0xc0, 0x74, 0xe0, 0xf7, 0x22,
|
||||
0xba, 0x4e, 0x1c, 0x2b, 0x1b, 0x91, 0xe4, 0x26, 0xff, 0xb8, 0x1f, 0x40, 0x6d, 0xf0, 0xb2, 0xe7,
|
||||
0xed, 0x24, 0xa1, 0xed, 0x5a, 0xf0, 0x8b, 0xee, 0xca, 0x71, 0xe0, 0xfb, 0x95, 0x9f, 0xca, 0x90,
|
||||
0x5c, 0x3b, 0xd6, 0x16, 0x04, 0x4b, 0xaf, 0x2c, 0x1f, 0xaa, 0xea, 0x33, 0x19, 0x13, 0x8a, 0xdc,
|
||||
0xc9, 0x1d, 0x68, 0x27, 0xd5, 0x2d, 0xb9, 0x4b, 0x5d, 0x51, 0x1e, 0xb5, 0x5b, 0x9e, 0xa1, 0xb6,
|
||||
0x17, 0x8a, 0xf1, 0x51, 0x8b, 0x4d, 0x23, 0xd9, 0xb4, 0xd8, 0xb4, 0xbd, 0xb3, 0x21, 0x99, 0x77,
|
||||
0x67, 0xe3, 0xe5, 0x34, 0x9a, 0x0f, 0x61, 0x51, 0xc7, 0x5e, 0x99, 0x77, 0x0c, 0xd8, 0x03, 0x4c,
|
||||
0xeb, 0x7a, 0xf9, 0xc7, 0xf9, 0x99, 0x63, 0xd5, 0x78, 0x7a, 0x67, 0xee, 0x99, 0x4e, 0xb6, 0x60,
|
||||
0x64, 0x30, 0x32, 0x28, 0x83, 0x2c, 0x22, 0x83, 0xd1, 0x82, 0x7f,
|
||||
};
|
||||
|
||||
static const uint8_t FONT_2_DESCRIPTOR[] = {
|
||||
0x18, 0x1c, 0x20, 0xe0, 0xff, 0xff, 0x00, 0x05, 0x00, 0x00, 0x0f, 0x06, 0x00, 0x0f, 0x1e, 0x09,
|
||||
0x00, 0x2d, 0x2e, 0x0c, 0x00, 0x5b, 0x27, 0x0b, 0x00, 0x82, 0x3f, 0x11, 0x00, 0xc1, 0x33, 0x0d,
|
||||
0x00, 0xf4, 0x0d, 0x05, 0x01, 0x01, 0x18, 0x07, 0x01, 0x19, 0x17, 0x07, 0x01, 0x30, 0x25, 0x0b,
|
||||
0x01, 0x55, 0x26, 0x0b, 0x01, 0x7b, 0x0f, 0x06, 0x01, 0x8a, 0x17, 0x07, 0x01, 0xa1, 0x0f, 0x06,
|
||||
0x01, 0xb0, 0x1d, 0x09, 0x01, 0xcd, 0x27, 0x0b, 0x02, 0x00, 0x1b, 0x0b, 0x02, 0x1b, 0x27, 0x0b,
|
||||
0x02, 0x42, 0x27, 0x0b, 0x02, 0x69, 0x2b, 0x0b, 0x02, 0x94, 0x27, 0x0b, 0x02, 0xbb, 0x27, 0x0b,
|
||||
0x02, 0xe2, 0x26, 0x0b, 0x03, 0x08, 0x27, 0x0b, 0x03, 0x2f, 0x27, 0x0b, 0x03, 0x56, 0x0f, 0x06,
|
||||
0x03, 0x65, 0x0f, 0x06, 0x03, 0x74, 0x27, 0x0b, 0x03, 0x9b, 0x27, 0x0b, 0x03, 0xc2, 0x26, 0x0b,
|
||||
0x04, 0x00, 0x1e, 0x08, 0x04, 0x1e, 0x3f, 0x11, 0x04, 0x5d, 0x2f, 0x0c, 0x04, 0x8c, 0x2f, 0x0d,
|
||||
0x04, 0xbb, 0x2b, 0x0c, 0x04, 0xe6, 0x32, 0x0e, 0x05, 0x18, 0x27, 0x0b, 0x05, 0x3f, 0x25, 0x0a,
|
||||
0x05, 0x64, 0x33, 0x0e, 0x05, 0x97, 0x2f, 0x0e, 0x05, 0xc6, 0x17, 0x07, 0x05, 0xdd, 0x14, 0x07,
|
||||
0x06, 0x00, 0x2f, 0x0c, 0x06, 0x2f, 0x27, 0x0a, 0x06, 0x56, 0x43, 0x13, 0x06, 0x99, 0x33, 0x0f,
|
||||
0x06, 0xcc, 0x36, 0x0f, 0x07, 0x02, 0x2a, 0x0c, 0x07, 0x2c, 0x36, 0x0f, 0x07, 0x62, 0x2f, 0x0c,
|
||||
0x07, 0x91, 0x27, 0x0b, 0x07, 0xb8, 0x25, 0x0a, 0x08, 0x00, 0x2f, 0x0e, 0x08, 0x2f, 0x2d, 0x0c,
|
||||
0x08, 0x5c, 0x49, 0x13, 0x08, 0xa5, 0x2b, 0x0b, 0x08, 0xd0, 0x25, 0x0b, 0x08, 0xf5, 0x27, 0x0a,
|
||||
0x09, 0x1c, 0x1c, 0x08, 0x09, 0x38, 0x1f, 0x09, 0x09, 0x57, 0x18, 0x08, 0x09, 0x6f, 0x2a, 0x0c,
|
||||
0x09, 0x99, 0x2c, 0x0b, 0x09, 0xc5, 0x11, 0x06, 0x09, 0xd6, 0x23, 0x0b, 0x0a, 0x00, 0x2b, 0x0c,
|
||||
0x0a, 0x2b, 0x23, 0x09, 0x0a, 0x4e, 0x2b, 0x0c, 0x0a, 0x79, 0x27, 0x0b, 0x0a, 0xa0, 0x19, 0x07,
|
||||
0x0a, 0xb9, 0x2b, 0x0c, 0x0a, 0xe4, 0x27, 0x0c, 0x0b, 0x0b, 0x0f, 0x05, 0x0b, 0x1a, 0x14, 0x06,
|
||||
0x0b, 0x2e, 0x27, 0x0b, 0x0b, 0x55, 0x0f, 0x05, 0x0b, 0x64, 0x43, 0x12, 0x0b, 0xa7, 0x27, 0x0c,
|
||||
0x0b, 0xce, 0x2b, 0x0c, 0x0c, 0x00, 0x2b, 0x0c, 0x0c, 0x2b, 0x2c, 0x0c, 0x0c, 0x57, 0x1e, 0x08,
|
||||
0x0c, 0x75, 0x1f, 0x09, 0x0c, 0x94, 0x17, 0x07, 0x0c, 0xab, 0x27, 0x0c, 0x0c, 0xd2, 0x26, 0x0a,
|
||||
0x0c, 0xf8, 0x3a, 0x10, 0x0d, 0x32, 0x23, 0x0a, 0x0d, 0x55, 0x26, 0x0a, 0x0d, 0x7b, 0x1f, 0x08,
|
||||
0x0d, 0x9a, 0x20, 0x09, 0x0d, 0xba, 0x18, 0x0b, 0x0d, 0xd2, 0x1e, 0x09, 0x0e, 0x00, 0x2a, 0x0b,
|
||||
0xff, 0xff, 0x00, 0x00, 0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18,
|
||||
0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18,
|
||||
0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18,
|
||||
0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18,
|
||||
0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18,
|
||||
0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18,
|
||||
0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18,
|
||||
0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x18,
|
||||
0xff, 0xff, 0x00, 0x18, 0xff, 0xff, 0x00, 0x05, 0x0e, 0x2a, 0x10, 0x06, 0x0e, 0x3a, 0x23, 0x0b,
|
||||
0x0e, 0x5d, 0x27, 0x0b, 0x0e, 0x84, 0x2f, 0x0d, 0x0e, 0xb3, 0x27, 0x0b, 0x0e, 0xda, 0x18, 0x0b,
|
||||
0x0e, 0xf2, 0x23, 0x0a, 0x0f, 0x15, 0x21, 0x0d, 0x0f, 0x36, 0x4a, 0x14, 0x0f, 0x80, 0x16, 0x08,
|
||||
0x0f, 0x96, 0x27, 0x0b, 0x0f, 0xbd, 0x27, 0x0b, 0x0f, 0xe4, 0x17, 0x07, 0x10, 0x00, 0x4a, 0x14,
|
||||
0x10, 0x4a, 0x29, 0x0b, 0x10, 0x73, 0x1e, 0x09, 0x10, 0x91, 0x27, 0x0b, 0x10, 0xb8, 0x1a, 0x08,
|
||||
0x10, 0xd2, 0x1a, 0x08, 0x10, 0xec, 0x11, 0x06, 0x10, 0xfd, 0x27, 0x0c, 0x11, 0x24, 0x2c, 0x0d,
|
||||
0x11, 0x50, 0x0e, 0x06, 0x11, 0x5e, 0x14, 0x05, 0x11, 0x72, 0x12, 0x08, 0x11, 0x84, 0x1a, 0x08,
|
||||
0x11, 0x9e, 0x27, 0x0b, 0x12, 0x00, 0x43, 0x11, 0x12, 0x43, 0x43, 0x12, 0x12, 0x86, 0x47, 0x12,
|
||||
0x12, 0xcd, 0x20, 0x08, 0x12, 0xed, 0x2f, 0x0c, 0x13, 0x1c, 0x2f, 0x0c, 0x13, 0x4b, 0x2f, 0x0c,
|
||||
0x13, 0x7a, 0x2f, 0x0c, 0x13, 0xa9, 0x2f, 0x0c, 0x14, 0x00, 0x2f, 0x0c, 0x14, 0x2f, 0x3b, 0x11,
|
||||
0x14, 0x6a, 0x2b, 0x0c, 0x14, 0x95, 0x27, 0x0b, 0x14, 0xbc, 0x27, 0x0b, 0x14, 0xe3, 0x27, 0x0b,
|
||||
0x15, 0x0a, 0x27, 0x0b, 0x15, 0x31, 0x17, 0x07, 0x15, 0x48, 0x19, 0x07, 0x15, 0x61, 0x19, 0x07,
|
||||
0x15, 0x7a, 0x19, 0x07, 0x15, 0x93, 0x32, 0x0e, 0x15, 0xc5, 0x33, 0x0f, 0x16, 0x00, 0x36, 0x0f,
|
||||
0x16, 0x36, 0x36, 0x0f, 0x16, 0x6c, 0x36, 0x0f, 0x16, 0xa2, 0x36, 0x0f, 0x16, 0xd8, 0x36, 0x0f,
|
||||
0x17, 0x0e, 0x27, 0x0b, 0x17, 0x35, 0x36, 0x0f, 0x17, 0x6b, 0x2f, 0x0e, 0x17, 0x9a, 0x2f, 0x0e,
|
||||
0x17, 0xc9, 0x2f, 0x0e, 0x18, 0x00, 0x2f, 0x0e, 0x18, 0x2f, 0x25, 0x0b, 0x18, 0x54, 0x2a, 0x0c,
|
||||
0x18, 0x7e, 0x2b, 0x0c, 0x18, 0xa9, 0x23, 0x0b, 0x18, 0xcc, 0x23, 0x0b, 0x18, 0xef, 0x23, 0x0b,
|
||||
0x19, 0x12, 0x23, 0x0b, 0x19, 0x35, 0x23, 0x0b, 0x19, 0x58, 0x23, 0x0b, 0x19, 0x7b, 0x3f, 0x11,
|
||||
0x19, 0xba, 0x23, 0x09, 0x1a, 0x00, 0x27, 0x0b, 0x1a, 0x27, 0x27, 0x0b, 0x1a, 0x4e, 0x27, 0x0b,
|
||||
0x1a, 0x75, 0x27, 0x0b, 0x1a, 0x9c, 0x0f, 0x05, 0x1a, 0xab, 0x15, 0x06, 0x1a, 0xc0, 0x19, 0x07,
|
||||
0x1a, 0xd9, 0x15, 0x06, 0x1a, 0xee, 0x2b, 0x0c, 0x1b, 0x19, 0x27, 0x0c, 0x1b, 0x40, 0x2b, 0x0c,
|
||||
0x1b, 0x6b, 0x2b, 0x0c, 0x1b, 0x96, 0x2b, 0x0c, 0x1b, 0xc1, 0x2b, 0x0c, 0x1c, 0x00, 0x2b, 0x0c,
|
||||
0x1c, 0x2b, 0x26, 0x0b, 0x1c, 0x51, 0x2b, 0x0c, 0x1c, 0x7c, 0x27, 0x0c, 0x1c, 0xa3, 0x27, 0x0c,
|
||||
0x1c, 0xca, 0x27, 0x0c, 0x1c, 0xf1, 0x27, 0x0c, 0x1d, 0x18, 0x26, 0x0a, 0x1d, 0x3e, 0x2b, 0x0c,
|
||||
0x1d, 0x69, 0x26, 0x0a,
|
||||
};
|
||||
|
||||
static const uint16_t FONT_2_OFFSETS[] = {
|
||||
0, 238, 457, 664, 840, 1049, 1233, 1451, 1675, 1865, 2087, 2321, 2515, 2728, 2923, 3099,
|
||||
};
|
||||
|
||||
static const uint16_t FONT_2_LENGTHS[] = {
|
||||
500, 488, 497, 477, 505, 505, 496, 507, 453, 472, 504, 504, 477, 492, 399,
|
||||
};
|
||||
|
||||
static const Font FONT_2 = { FONT_2_DESCRIPTOR, FONT_2_DATA, FONT_2_OFFSETS, FONT_2_LENGTHS, 15, 3099 };
|
||||
|
||||
return FONT_2;
|
||||
}
|
||||
|
||||
inline const uint8_t* font(unsigned id) {
|
||||
return id == 1 ? fontStorage1().descriptor : id == 2 ? fontStorage2().descriptor : nullptr;
|
||||
}
|
||||
inline int identify(const uint8_t* descriptor) {
|
||||
return descriptor == fontStorage1().descriptor ? 1 : descriptor == fontStorage2().descriptor ? 2 : -1;
|
||||
}
|
||||
inline const Font* storage(const uint8_t* descriptor) {
|
||||
const int id = identify(descriptor);
|
||||
return id == 1 ? &fontStorage1() : id == 2 ? &fontStorage2() : nullptr;
|
||||
}
|
||||
// Caller-owned 512-byte scratch; no cache, heap or mutable global state.
|
||||
inline Glyph glyph(const uint8_t* descriptor, uint8_t code, uint8_t* scratch, size_t capacity) {
|
||||
const Font* f = storage(descriptor);
|
||||
if (!f || code < descriptor[2] || unsigned(code - descriptor[2]) >= descriptor[3])
|
||||
return { nullptr, 0, 0, false, false };
|
||||
const unsigned slot = code - descriptor[2];
|
||||
const uint8_t* record = descriptor + 4 + 4 * slot;
|
||||
const unsigned location = (unsigned(record[0]) << 8) | record[1];
|
||||
const uint8_t length = record[2], width = record[3];
|
||||
if (!length) return { nullptr, width, 0, false, location == 0xffff };
|
||||
const unsigned group = location >> 9;
|
||||
const unsigned offset = location & 511;
|
||||
if (group >= f->chunkCount) return { nullptr, width, 0, false, false };
|
||||
const unsigned first = f->offsets[group], end = f->offsets[group + 1];
|
||||
const unsigned expected = f->rawLengths[group];
|
||||
if (!scratch || expected > kScratchSize || capacity < expected || offset + length > expected || first > end || end > f->dataLength)
|
||||
return { nullptr, width, 0, false, false };
|
||||
unsigned int produced = expected;
|
||||
if (tinf_uncompress_exact(scratch, &produced, f->data + first, end - first) != TINF_OK || produced != expected)
|
||||
return { nullptr, width, 0, false, false };
|
||||
return { scratch + offset, width, length, true, true };
|
||||
}
|
||||
}}} // namespace mesh::ui::noto
|
||||
File diff suppressed because it is too large.
Load diff
@@ -0,0 +1,30 @@
|
||||
#pragma once
|
||||
|
||||
// The infrastructure pre-script sets MESH_NRF52_FLASH_TRIM only for known
|
||||
// non-Companion nRF52 roles. Other display drivers and platforms stay unchanged.
|
||||
// This header is also read by the C tinf wrapper, so keep it preprocessor-only.
|
||||
// 9 = Noto Sans Condensed 16/24, Zopfli 1000, no unused initial Arial10.
|
||||
// MESH_NRF52_FONT_MODE=0 opts out of the font change without disabling other
|
||||
// infrastructure trims. The old experiment switch remains for comparisons.
|
||||
#if defined(NRF52_PLATFORM) && defined(MESH_NRF52_FLASH_TRIM) \
|
||||
&& MESH_NRF52_FLASH_TRIM && defined(ST7789) \
|
||||
&& !defined(COMPANION_RADIO_FULL)
|
||||
#if defined(MESH_ARIAL_EXPERIMENT)
|
||||
#define MESHCORE_ARIAL_FONT_MODE MESH_ARIAL_EXPERIMENT
|
||||
#elif defined(MESH_NRF52_FONT_MODE)
|
||||
#define MESHCORE_ARIAL_FONT_MODE MESH_NRF52_FONT_MODE
|
||||
#else
|
||||
#define MESHCORE_ARIAL_FONT_MODE 9
|
||||
#endif
|
||||
#else
|
||||
#define MESHCORE_ARIAL_FONT_MODE 0
|
||||
#endif
|
||||
|
||||
#if MESHCORE_ARIAL_FONT_MODE < 0 || MESHCORE_ARIAL_FONT_MODE > 9
|
||||
#error "Unsupported nRF52 font mode (expected 0..9)"
|
||||
#endif
|
||||
|
||||
#define MESHCORE_FONT_DEFLATE \
|
||||
(MESHCORE_ARIAL_FONT_MODE == 3 || MESHCORE_ARIAL_FONT_MODE == 9)
|
||||
#define MESHCORE_FONT_COMPRESSED \
|
||||
(MESHCORE_ARIAL_FONT_MODE == 2 || MESHCORE_FONT_DEFLATE)
|
||||
@@ -0,0 +1,21 @@
|
||||
#pragma once
|
||||
|
||||
// Only the non-Companion nRF52 ST7735 renderer includes this configuration.
|
||||
// Load the selected library setup first so its driver, bus and pin settings
|
||||
// remain unchanged, then prevent TFT_eSPI from loading those settings again.
|
||||
#if defined(NRF52_PLATFORM) && defined(MESH_NRF52_FLASH_TRIM) && MESH_NRF52_FLASH_TRIM
|
||||
#include <User_Setup_Select.h>
|
||||
#ifndef USER_SETUP_LOADED
|
||||
#define USER_SETUP_LOADED
|
||||
#endif
|
||||
|
||||
// ST7735Display uses the normal GLCD font and integer scaling. Keep GFXFF's
|
||||
// no-argument setFreeFont() API; the numbered and smooth fonts are never used.
|
||||
#undef LOAD_FONT2
|
||||
#undef LOAD_FONT4
|
||||
#undef LOAD_FONT6
|
||||
#undef LOAD_FONT7
|
||||
#undef LOAD_FONT8
|
||||
#undef LOAD_FONT8N
|
||||
#undef SMOOTH_FONT
|
||||
#endif
|
||||
@@ -45,7 +45,11 @@ OLEDDisplay::OLEDDisplay() {
|
||||
color = WHITE;
|
||||
geometry = GEOMETRY_128_64;
|
||||
textAlignment = TEXT_ALIGN_LEFT;
|
||||
#if MESHCORE_ARIAL_FONT_MODE >= 1
|
||||
fontData = ArialMT_Plain_16;
|
||||
#else
|
||||
fontData = ArialMT_Plain_10;
|
||||
#endif
|
||||
fontTableLookupFunction = DefaultFontTableLookup;
|
||||
buffer = NULL;
|
||||
#ifdef OLEDDISPLAY_DOUBLE_BUFFER
|
||||
@@ -557,6 +561,10 @@ uint16_t OLEDDisplay::drawStringInternal(int16_t xMove, int16_t yMove, const cha
|
||||
uint8_t textHeight = pgm_read_byte(fontData + HEIGHT_POS);
|
||||
uint8_t firstChar = pgm_read_byte(fontData + FIRST_CHAR_POS);
|
||||
uint16_t sizeOfJumpTable = pgm_read_byte(fontData + CHAR_NUM_POS) * JUMPTABLE_BYTES;
|
||||
#if MESHCORE_FONT_COMPRESSED
|
||||
const bool compactFont = mesh::ui::active_compact_font::identify(fontData) >= 0;
|
||||
uint8_t glyphScratch[mesh::ui::active_compact_font::kScratchSize];
|
||||
#endif
|
||||
|
||||
uint16_t cursorX = 0;
|
||||
uint16_t cursorY = 0;
|
||||
@@ -594,7 +602,11 @@ uint16_t OLEDDisplay::drawStringInternal(int16_t xMove, int16_t yMove, const cha
|
||||
continue;
|
||||
} else
|
||||
code = text[j];
|
||||
#if MESHCORE_ARIAL_FONT_MODE >= 1
|
||||
if (code >= firstChar && code - firstChar < pgm_read_byte(fontData + CHAR_NUM_POS)) {
|
||||
#else
|
||||
if (code >= firstChar) {
|
||||
#endif
|
||||
uint8_t charCode = code - firstChar;
|
||||
|
||||
// 4 Bytes per char code
|
||||
@@ -605,9 +617,23 @@ uint16_t OLEDDisplay::drawStringInternal(int16_t xMove, int16_t yMove, const cha
|
||||
|
||||
// Test if the char is drawable
|
||||
if (!(msbJumpToChar == 255 && lsbJumpToChar == 255)) {
|
||||
#if MESHCORE_FONT_COMPRESSED
|
||||
if (compactFont) {
|
||||
const mesh::ui::active_compact_font::Glyph glyph = mesh::ui::active_compact_font::glyph(
|
||||
fontData, code, glyphScratch, sizeof(glyphScratch));
|
||||
// A zero byte count has a different meaning to drawInternal().
|
||||
// Failed/blank glyphs must not enter the generic bitmap renderer.
|
||||
if (glyph.valid && glyph.drawable && glyph.data && glyph.length)
|
||||
drawInternal(xPos, yPos, currentCharWidth, textHeight,
|
||||
glyph.data, 0, glyph.length);
|
||||
} else {
|
||||
#endif
|
||||
// Get the position of the char data
|
||||
uint16_t charDataPosition = JUMPTABLE_START + sizeOfJumpTable + ((msbJumpToChar << 8) + lsbJumpToChar);
|
||||
drawInternal(xPos, yPos, currentCharWidth, textHeight, fontData, charDataPosition, charByteSize);
|
||||
#if MESHCORE_FONT_COMPRESSED
|
||||
}
|
||||
#endif
|
||||
}
|
||||
|
||||
cursorX += currentCharWidth;
|
||||
@@ -678,10 +704,17 @@ uint16_t OLEDDisplay::drawStringMaxWidth(int16_t xMove, int16_t yMove, uint16_t
|
||||
uint16_t drawStringResult = 1; // later tested for 0 == error, so initialize to 1
|
||||
|
||||
for (uint16_t i = 0; i < length; i++) {
|
||||
#if MESHCORE_ARIAL_FONT_MODE >= 1
|
||||
const uint8_t c = (this->fontTableLookupFunction)(text[i]);
|
||||
#else
|
||||
char c = (this->fontTableLookupFunction)(text[i]);
|
||||
#endif
|
||||
if (c == 0)
|
||||
continue;
|
||||
strWidth += pgm_read_byte(fontData + JUMPTABLE_START + (c - firstChar) * JUMPTABLE_BYTES + JUMPTABLE_WIDTH);
|
||||
#if MESHCORE_ARIAL_FONT_MODE >= 1
|
||||
if (c >= firstChar && c - firstChar < pgm_read_byte(fontData + CHAR_NUM_POS))
|
||||
#endif
|
||||
strWidth += pgm_read_byte(fontData + JUMPTABLE_START + (c - firstChar) * JUMPTABLE_BYTES + JUMPTABLE_WIDTH);
|
||||
|
||||
// Always break on newline
|
||||
if (text[i] == '\n') {
|
||||
@@ -737,13 +770,20 @@ uint16_t OLEDDisplay::getStringWidth(const char* text, uint16_t length, bool utf
|
||||
uint16_t maxWidth = 0;
|
||||
|
||||
for (uint16_t i = 0; i < length; i++) {
|
||||
#if MESHCORE_ARIAL_FONT_MODE >= 1
|
||||
uint8_t c = text[i];
|
||||
#else
|
||||
char c = text[i];
|
||||
#endif
|
||||
if (utf8) {
|
||||
c = (this->fontTableLookupFunction)(c);
|
||||
if (c == 0)
|
||||
continue;
|
||||
}
|
||||
stringWidth += pgm_read_byte(fontData + JUMPTABLE_START + (c - firstChar) * JUMPTABLE_BYTES + JUMPTABLE_WIDTH);
|
||||
#if MESHCORE_ARIAL_FONT_MODE >= 1
|
||||
if (c >= firstChar && c - firstChar < pgm_read_byte(fontData + CHAR_NUM_POS))
|
||||
#endif
|
||||
stringWidth += pgm_read_byte(fontData + JUMPTABLE_START + (c - firstChar) * JUMPTABLE_BYTES + JUMPTABLE_WIDTH);
|
||||
if (c == 10) {
|
||||
maxWidth = max(maxWidth, stringWidth);
|
||||
stringWidth = 0;
|
||||
|
||||
@@ -1,5 +1,7 @@
|
||||
#include "OLEDDisplayFonts.h"
|
||||
|
||||
#if MESHCORE_ARIAL_FONT_MODE == 0 || MESHCORE_ARIAL_FONT_MODE == 1
|
||||
#if MESHCORE_ARIAL_FONT_MODE == 0
|
||||
const uint8_t ArialMT_Plain_10[] PROGMEM = {
|
||||
0x0A, // Width: 10
|
||||
0x0D, // Height: 13
|
||||
@@ -424,6 +426,7 @@ const uint8_t ArialMT_Plain_10[] PROGMEM = {
|
||||
0x20,0x00,0xC8,0x09,0x00,0x06,0xC8,0x01,0x20 // 255
|
||||
};
|
||||
|
||||
#endif
|
||||
const uint8_t ArialMT_Plain_16[] PROGMEM = {
|
||||
0x10, // Width: 16
|
||||
0x13, // Height: 19
|
||||
@@ -1271,3 +1274,4 @@ const uint8_t ArialMT_Plain_24[] PROGMEM = {
|
||||
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xE0,0xFF,0xFF,0x07,0xE0,0xFF,0xFF,0x07,0x00,0x1C,0x18,0x00,0x00,0x06,0x30,0x00,0x00,0x06,0x30,0x00,0x00,0x06,0x30,0x00,0x00,0x0E,0x38,0x00,0x00,0x1C,0x1C,0x00,0x00,0xF8,0x0F,0x00,0x00,0xF0,0x03, // 254
|
||||
0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x7E,0x00,0x06,0xC0,0xF0,0x01,0x06,0xC0,0x80,0x0F,0x07,0x00,0x00,0xFE,0x03,0x00,0x00,0xFC,0x00,0xC0,0xC0,0x1F,0x00,0xC0,0xF8,0x03,0x00,0x00,0x3E,0x00,0x00,0x00,0x06 // 255
|
||||
};
|
||||
#endif // raw font storage
|
||||
@@ -1,6 +1,13 @@
|
||||
#ifndef OLEDDISPLAYFONTS_h
|
||||
#define OLEDDISPLAYFONTS_h
|
||||
|
||||
// Qualified nRF52 infrastructure defaults to mode 9; Companions remain mode 0.
|
||||
// Optional comparisons: 0 = original, 1 = omit unused Arial10, 2 = per-glyph RLE,
|
||||
// 3 = Zopfli-1000 chunks, 4 = Liberation Sans, 5 = Noto Sans,
|
||||
// 6 = DejaVu Sans, 7 = Noto Sans Condensed, 8 = DejaVu Sans Condensed.
|
||||
// Family trials preserve the visible 12/17px cap heights.
|
||||
#include "Nrf52FontConfig.h"
|
||||
|
||||
#ifdef ARDUINO
|
||||
#include <Arduino.h>
|
||||
#elif __MBED__
|
||||
@@ -8,6 +15,23 @@
|
||||
#endif
|
||||
|
||||
extern const uint8_t ArialMT_Plain_10[] PROGMEM;
|
||||
#if MESHCORE_ARIAL_FONT_MODE == 9
|
||||
#include "CompactNotoFonts.h"
|
||||
namespace mesh { namespace ui { namespace active_compact_font = noto; } }
|
||||
// Keep the display driver's existing font-selection API, with Noto glyphs.
|
||||
#define ArialMT_Plain_16 (::mesh::ui::noto::font(1))
|
||||
#define ArialMT_Plain_24 (::mesh::ui::noto::font(2))
|
||||
#elif MESHCORE_ARIAL_FONT_MODE == 2 || MESHCORE_ARIAL_FONT_MODE == 3
|
||||
#include "CompactArialFonts.h"
|
||||
namespace mesh { namespace ui { namespace active_compact_font = arial; } }
|
||||
#define ArialMT_Plain_16 (::mesh::ui::arial::font(1))
|
||||
#define ArialMT_Plain_24 (::mesh::ui::arial::font(2))
|
||||
#elif MESHCORE_ARIAL_FONT_MODE >= 4
|
||||
#include "FontFamilyTrials.h"
|
||||
#define ArialMT_Plain_16 (::mesh::ui::font_trials::font(1))
|
||||
#define ArialMT_Plain_24 (::mesh::ui::font_trials::font(2))
|
||||
#else
|
||||
extern const uint8_t ArialMT_Plain_16[] PROGMEM;
|
||||
extern const uint8_t ArialMT_Plain_24[] PROGMEM;
|
||||
#endif
|
||||
#endif
|
||||
@@ -1,5 +1,8 @@
|
||||
#include "ST7735Display.h"
|
||||
#include "../UsbLogging.h"
|
||||
#if defined(NRF52_PLATFORM) && defined(MESH_NRF52_FLASH_TRIM) && MESH_NRF52_FLASH_TRIM
|
||||
#include "Nrf52TftFontTrim.h"
|
||||
#endif
|
||||
#include <TFT_eSPI.h>
|
||||
|
||||
#if defined(NRF52_PLATFORM)
|
||||
|
||||
Reference in new issue
Block a user