From e3c3edcc7e3c8ffea3475aee62acd590fa9a92c4 Mon Sep 17 00:00:00 2001 From: Georgii Surkov Date: Sun, 17 Nov 2024 21:01:15 +0000 Subject: [PATCH 01/85] Add send break support --- applications/main/gpio/usb_uart_bridge.c | 13 ++++++++++++- applications/services/cli/cli_vcp.c | 1 + targets/f18/api_symbols.csv | 3 ++- targets/f7/api_symbols.csv | 3 ++- targets/f7/furi_hal/furi_hal_serial.c | 10 ++++++++++ targets/f7/furi_hal/furi_hal_serial.h | 6 ++++++ targets/f7/furi_hal/furi_hal_usb_cdc.c | 13 ++++++++++--- targets/f7/furi_hal/furi_hal_usb_cdc.h | 1 + 8 files changed, 44 insertions(+), 6 deletions(-) diff --git a/applications/main/gpio/usb_uart_bridge.c b/applications/main/gpio/usb_uart_bridge.c index f6e68b1096..f3a9775a6d 100644 --- a/applications/main/gpio/usb_uart_bridge.c +++ b/applications/main/gpio/usb_uart_bridge.c @@ -35,7 +35,7 @@ typedef enum { WorkerEvtLineCfgSet = (1 << 6), WorkerEvtCtrlLineSet = (1 << 7), - + WorkerEvtSendBreak = (1 << 8), } WorkerEvtFlags; #define WORKER_ALL_RX_EVENTS \ @@ -69,6 +69,7 @@ static void vcp_on_cdc_rx(void* context); static void vcp_state_callback(void* context, uint8_t state); static void vcp_on_cdc_control_line(void* context, uint8_t state); static void vcp_on_line_config(void* context, struct usb_cdc_line_coding* config); +static void vcp_on_cdc_break(void* context, uint16_t duration); static const CdcCallbacks cdc_cb = { vcp_on_cdc_tx_complete, @@ -76,6 +77,7 @@ static const CdcCallbacks cdc_cb = { vcp_state_callback, vcp_on_cdc_control_line, vcp_on_line_config, + vcp_on_cdc_break, }; /* USB UART worker */ @@ -287,6 +289,9 @@ static int32_t usb_uart_worker(void* context) { if(events & WorkerEvtCtrlLineSet) { usb_uart_update_ctrl_lines(usb_uart); } + if(events & WorkerEvtSendBreak) { + furi_hal_serial_send_break(usb_uart->serial_handle); + } } usb_uart_vcp_deinit(usb_uart, usb_uart->cfg.vcp_ch); usb_uart_serial_deinit(usb_uart); @@ -377,6 +382,12 @@ static void vcp_on_line_config(void* context, struct usb_cdc_line_coding* config furi_thread_flags_set(furi_thread_get_id(usb_uart->thread), WorkerEvtLineCfgSet); } +static void vcp_on_cdc_break(void* context, uint16_t duration) { + UNUSED(duration); + UsbUartBridge* usb_uart = (UsbUartBridge*)context; + furi_thread_flags_set(furi_thread_get_id(usb_uart->thread), WorkerEvtSendBreak); +} + UsbUartBridge* usb_uart_enable(UsbUartConfig* cfg) { UsbUartBridge* usb_uart = malloc(sizeof(UsbUartBridge)); diff --git a/applications/services/cli/cli_vcp.c b/applications/services/cli/cli_vcp.c index cdabaaa054..83f4f8214e 100644 --- a/applications/services/cli/cli_vcp.c +++ b/applications/services/cli/cli_vcp.c @@ -57,6 +57,7 @@ static CdcCallbacks cdc_cb = { vcp_state_callback, vcp_on_cdc_control_line, NULL, + NULL, }; static CliVcp* vcp = NULL; diff --git a/targets/f18/api_symbols.csv b/targets/f18/api_symbols.csv index b5d51a0dd5..79610d0bb9 100644 --- a/targets/f18/api_symbols.csv +++ b/targets/f18/api_symbols.csv @@ -1,5 +1,5 @@ entry,status,name,type,params -Version,+,78.1,, +Version,+,78.2,, Header,+,applications/services/bt/bt_service/bt.h,, Header,+,applications/services/bt/bt_service/bt_keys_storage.h,, Header,+,applications/services/cli/cli.h,, @@ -1446,6 +1446,7 @@ Function,+,furi_hal_serial_get_gpio_pin,const GpioPin*,"FuriHalSerialHandle*, Fu Function,+,furi_hal_serial_init,void,"FuriHalSerialHandle*, uint32_t" Function,+,furi_hal_serial_is_baud_rate_supported,_Bool,"FuriHalSerialHandle*, uint32_t" Function,+,furi_hal_serial_resume,void,FuriHalSerialHandle* +Function,+,furi_hal_serial_send_break,void,FuriHalSerialHandle* Function,+,furi_hal_serial_set_br,void,"FuriHalSerialHandle*, uint32_t" Function,+,furi_hal_serial_suspend,void,FuriHalSerialHandle* Function,+,furi_hal_serial_tx,void,"FuriHalSerialHandle*, const uint8_t*, size_t" diff --git a/targets/f7/api_symbols.csv b/targets/f7/api_symbols.csv index ee81f76a97..7da0c727f8 100644 --- a/targets/f7/api_symbols.csv +++ b/targets/f7/api_symbols.csv @@ -1,5 +1,5 @@ entry,status,name,type,params -Version,+,78.1,, +Version,+,78.2,, Header,+,applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h,, Header,+,applications/services/bt/bt_service/bt.h,, Header,+,applications/services/bt/bt_service/bt_keys_storage.h,, @@ -1635,6 +1635,7 @@ Function,+,furi_hal_serial_get_gpio_pin,const GpioPin*,"FuriHalSerialHandle*, Fu Function,+,furi_hal_serial_init,void,"FuriHalSerialHandle*, uint32_t" Function,+,furi_hal_serial_is_baud_rate_supported,_Bool,"FuriHalSerialHandle*, uint32_t" Function,+,furi_hal_serial_resume,void,FuriHalSerialHandle* +Function,+,furi_hal_serial_send_break,void,FuriHalSerialHandle* Function,+,furi_hal_serial_set_br,void,"FuriHalSerialHandle*, uint32_t" Function,+,furi_hal_serial_suspend,void,FuriHalSerialHandle* Function,+,furi_hal_serial_tx,void,"FuriHalSerialHandle*, const uint8_t*, size_t" diff --git a/targets/f7/furi_hal/furi_hal_serial.c b/targets/f7/furi_hal/furi_hal_serial.c index 5ddb0785f7..3f6b575a61 100644 --- a/targets/f7/furi_hal/furi_hal_serial.c +++ b/targets/f7/furi_hal/furi_hal_serial.c @@ -950,3 +950,13 @@ const GpioPin* return furi_hal_serial_config[handle->id].gpio[direction]; } + +void furi_hal_serial_send_break(FuriHalSerialHandle* handle) { + furi_check(handle); + + if(handle->id == FuriHalSerialIdUsart) { + LL_USART_RequestBreakSending(USART1); + } else { + LL_LPUART_RequestBreakSending(LPUART1); + } +} diff --git a/targets/f7/furi_hal/furi_hal_serial.h b/targets/f7/furi_hal/furi_hal_serial.h index 00010d83c9..6dad8ec315 100644 --- a/targets/f7/furi_hal/furi_hal_serial.h +++ b/targets/f7/furi_hal/furi_hal_serial.h @@ -239,6 +239,12 @@ void furi_hal_serial_dma_rx_stop(FuriHalSerialHandle* handle); */ size_t furi_hal_serial_dma_rx(FuriHalSerialHandle* handle, uint8_t* data, size_t len); +/** Send a break sequence (low level for the whole character duration) + * + * @param handle Serial handle + */ +void furi_hal_serial_send_break(FuriHalSerialHandle* handle); + #ifdef __cplusplus } #endif diff --git a/targets/f7/furi_hal/furi_hal_usb_cdc.c b/targets/f7/furi_hal/furi_hal_usb_cdc.c index cfedb5e76b..3408789dde 100644 --- a/targets/f7/furi_hal/furi_hal_usb_cdc.c +++ b/targets/f7/furi_hal/furi_hal_usb_cdc.c @@ -122,7 +122,7 @@ static const struct CdcConfigDescriptorSingle cdc_cfg_desc_single = { .bFunctionLength = sizeof(struct usb_cdc_acm_desc), .bDescriptorType = USB_DTYPE_CS_INTERFACE, .bDescriptorSubType = USB_DTYPE_CDC_ACM, - .bmCapabilities = 0, + .bmCapabilities = USB_CDC_CAP_BRK, }, .cdc_union = { @@ -235,7 +235,7 @@ static const struct CdcConfigDescriptorDual .bFunctionLength = sizeof(struct usb_cdc_acm_desc), .bDescriptorType = USB_DTYPE_CS_INTERFACE, .bDescriptorSubType = USB_DTYPE_CDC_ACM, - .bmCapabilities = 0, + .bmCapabilities = USB_CDC_CAP_BRK, }, .cdc_union = { @@ -330,7 +330,7 @@ static const struct CdcConfigDescriptorDual .bFunctionLength = sizeof(struct usb_cdc_acm_desc), .bDescriptorType = USB_DTYPE_CS_INTERFACE, .bDescriptorSubType = USB_DTYPE_CDC_ACM, - .bmCapabilities = 0, + .bmCapabilities = USB_CDC_CAP_BRK, }, .cdc_union = { @@ -680,6 +680,13 @@ static usbd_respond cdc_control(usbd_device* dev, usbd_ctlreq* req, usbd_rqc_cal dev->status.data_ptr = &cdc_config[if_num]; dev->status.data_count = sizeof(cdc_config[0]); return usbd_ack; + case USB_CDC_SEND_BREAK: + if(callbacks[if_num] != NULL) { + if(callbacks[if_num]->break_callback != NULL) { + callbacks[if_num]->break_callback(cb_ctx[if_num], req->wValue); + } + } + return usbd_ack; default: return usbd_fail; } diff --git a/targets/f7/furi_hal/furi_hal_usb_cdc.h b/targets/f7/furi_hal/furi_hal_usb_cdc.h index 89b68991b9..995e9009a4 100644 --- a/targets/f7/furi_hal/furi_hal_usb_cdc.h +++ b/targets/f7/furi_hal/furi_hal_usb_cdc.h @@ -15,6 +15,7 @@ typedef struct { void (*state_callback)(void* context, uint8_t state); void (*ctrl_line_callback)(void* context, uint8_t state); void (*config_callback)(void* context, struct usb_cdc_line_coding* config); + void (*break_callback)(void* context, uint16_t duration); } CdcCallbacks; void furi_hal_cdc_set_callbacks(uint8_t if_num, CdcCallbacks* cb, void* context); From 07426b6df22ebd0e845d24c94f5d942266dcc158 Mon Sep 17 00:00:00 2001 From: Georgii Surkov Date: Mon, 18 Nov 2024 11:29:54 +0000 Subject: [PATCH 02/85] Add SendBreak event to waiting mask --- applications/main/gpio/usb_uart_bridge.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/main/gpio/usb_uart_bridge.c b/applications/main/gpio/usb_uart_bridge.c index f3a9775a6d..0d2c63b3c0 100644 --- a/applications/main/gpio/usb_uart_bridge.c +++ b/applications/main/gpio/usb_uart_bridge.c @@ -40,7 +40,7 @@ typedef enum { #define WORKER_ALL_RX_EVENTS \ (WorkerEvtStop | WorkerEvtRxDone | WorkerEvtCfgChange | WorkerEvtLineCfgSet | \ - WorkerEvtCtrlLineSet | WorkerEvtCdcTxComplete) + WorkerEvtCtrlLineSet | WorkerEvtCdcTxComplete | WorkerEvtSendBreak) #define WORKER_ALL_TX_EVENTS (WorkerEvtTxStop | WorkerEvtCdcRx) struct UsbUartBridge { From 7e0f292615298b597ef7f7a97ca6ab22e759920e Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Tue, 26 Nov 2024 05:46:32 +0300 Subject: [PATCH 03/85] upd changelog --- CHANGELOG.md | 116 ++------------------------------------------------- 1 file changed, 3 insertions(+), 113 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d263bb8ba7..b5058c1146 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,119 +1,9 @@ ## Main changes -- Current API: 78.1 -- SubGHz: - - Frequency analyzer fixes and improvements: - - **Enforce int module** (like in OFW) usage due to lack of required hardware on external boards (PathIsolate (+rf switch for multiple paths)) and incorrect usage and/or understanding the purpose of frequency analyzer app by users, it should be used only to get frequency of the remote placed around 1-10cm around flipper's left corner - - **Fix possible GSM mobile towers signal interference** by limiting upper frequency to 920mhz max - - Fix buttons logic, **fix crash** - - Protocol improvements: - - **Keeloq: Monarch full support, with add manually option** (thanks @ashphx !) - - **Princeton support for second button encoding type** (8bit) - - GangQi fix serial check and remove broken check from UI - - Hollarm add more button codes (thanks to @mishamyte for captures) - - Misc: - - Add extra settings to disable GPIO pins control used for external modules amplifiers and/or LEDs (in radio settings menu with debug ON) -- NFC: - - Read Ultralight block by block (**fix password protected MFUL reading issue**) (by @mishamyte | PR #825 #826) - - **Update NDEF parser** (SLIX and MFC support) (by @luu176 and @jaylikesbunda and @Willy-JL) - - OFW PR 3822: **MIFARE Classic Key Recovery Improvements** (by @noproto) - - OFW PR 3930: NFC Emulation freeze fix (by @RebornedBrain) - - OFW: H World Hotel Chain Room Key Parser - - OFW: Parser for Tianjin Railway Transit - - New keys in system dict -- Infrared: - - **Add LEDs universal remote** (DB by @amec0e) - - Update universal remote assets (by @amec0e | PR #813 #816) -- JS: - - OFW: JS modules & SDK -> **Breaking API change** - - **Backporting custom features** (read about most of the changes after other changes section) (by @xMasterX and @Willy-JL) - - Add i2c & SPI module (by @jamisonderek) -* OFW: FuriHal, drivers: rework gauge initialization routine -> **Downgrade to older releases may break battery UI percent indicator, upgrade to this or newer version to restore** -* OFW: heap: increased size -> **More free RAM!!** -* OFW: New layout for BadUSB (es-LA) -* OFW: Require PIN on boot +- Current API: 78.2 +* OFW: merged gsurkov/vcp_break_support branch for usb uart bridge (WIP!!!) * Apps: **Check out more Apps updates and fixes by following** [this link](https://github.com/xMasterX/all-the-plugins/commits/dev) ## Other changes -* SubGHz: Freq analyzer - Fix duplicated frequency lists and use user config for nearest frequency selector too -* SubGHz: Code cleanup and fix for rare dupicated (Data) field cases -* OFW: NFC TRT Parser: Additional checks to prevent false positives -* OFW PR 3992: Loader: Fix BusFault in handling of OOM (by @Willy-JL) -* OFW PR 3885: NFC: Add API to enforce ISO15693 mode (by @aaronjamt) -* OFW: NFC: iso14443_4a improvements (by @RebornedBrain) -* OFW: NFC: Plantain parser improvements (by @assasinfil) & fixes (by @mxcdoam) -* OFW: NFC: Moscow social card parser (by @assasinfil) -* OFW: fix: npm deps -* OFW: 目覚め時計 (Added alarm option and clock settings) -* OFW: JS: Backport and more additions & fixes -* OFW: nfc: add Caltrain zones for Clipper -* OFW: Update unit tests docs -* OFW: Fix JS memory corruption (in gpio module) -* OFW: Full-fledged JS SDK + npm packages -* OFW: FurEventLoop: add support for FuriEventFlag, simplify API -* OFW: lib: digital_signal: digital_sequence: add furi_hal.h wrapped in ifdefs -* OFW: Add warning about stealth mode in vibro CLI -* OFW: Small fixes in the wifi devboard docs -* OFW: BadUSB - Improve ChromeOS and GNOME demo scripts -* OFW: Small JS fixes -* OFW: Canvas: extended icon draw. -* OFW: Fixes Mouse Clicker Should have a "0" value setting for "as fast as possible" -* OFW: Wi-Fi Devboard documentation rework -* OFW: Furi: A Lot of Fixes -* OFW PR 3933: furi_hal_random: Wait for ready state and no errors before sampling (by @n1kolasM) -* OFW: nfc/clipper: Update BART station codes -* OFW: FuriThread: Improve state callbacks -* OFW: Documentation: update and cleanup -* OFW: Improve bit_buffer.h docs -* OFW: Prevent idle priority threads from potentially starving the FreeRTOS idle task -* OFW: IR universal remote additions -* OFW: Fix EM4100 T5577 writing block order (was already done in UL) -* OFW: kerel typo -* OFW: Folder rename fails -* OFW: Put errno into TCB -* OFW: Fix USB-UART bridge exit screen stopping the bridge prematurely -**More details on JS changes** (js changelog written by @Willy-JL , thanks!): -- Our custom JS SDK can be found on npm now: https://www.npmjs.com/org/darkflippers -- Non-exhaustive list of changes to help you fix your scripts: - - `badusb`: - - `setup()`: `mfr_name`, `prod_name`, `layout_path` parameters renamed to `mfrName`, `prodName`, `layoutPath` - - effort required to update old scripts using badusb: very minimal - - `dialog`: - - removed, now replaced by `gui/dialog` and `gui/file_picker` (see below) - - `event_loop`: - - new module, allows timer functionality, callbacks and event-driven programming, used heavily alongside gpio and gui modules - - `gpio`: - - fully overhauled, now you `get()` pin instances and perform actions on them like `.init()` - - now supports interrupts, callbacks and more cool things - - effort required to update old scripts using gpio: moderate - - `gui`: - - new module, fully overhauled, replaces dialog, keyboard, submenu, textbox modules - - higher barrier to entry than older modules (requires usage of `event_loop` and `gui.viewDispatcher`), but much more flexible, powerful and easier to extend - - includes all previously available js gui functionality (except `widget`), and also adds `gui/loading` and `gui/empty_screen` views - - currently `gui/file_picker` works different than other new view objects, it is a simple `.pickFile()` synchronous function, but this [may change later](https://github.com/flipperdevices/flipperzero-firmware/pull/3961#discussion_r1805579153) - - effort required to update old scripts using gui: extensive - - `keyboard`: - - removed, now replaced by `gui/text_input` and `gui/byte_input` (see above) - - `math`: - - `is_equal()` renamed to `isEqual()` - - `storage`: - - fully overhauled, now you `openFile()`s and perform actions on them like `.read()` - - now supports many more operations including different open modes, directories and much more - - effort required to update old scripts using storage: moderate - - `submenu`: - - removed, now replaced by `gui/submenu` (see above) - - `textbox`: - - removed, now replace by `gui/text_box` (see above) - - `widget`: - - only gui functionality not ported to new gui module, remains unchanged for now but likely to be ported later on - - globals: - - `__filepath` and `__dirpath` renamed to `__filename` and `__dirname` like in nodejs - - `to_string()` renamed and moved to number class as `n.toString()`, now supports optional base parameter - - `to_hex_string()` removed, now use `n.toString(16)` - - `parse_int()` renamed to `parseInt()`, now supports optional base parameter - - `to_upper_case()` and `to_lower_case()` renamed and moved to string class as `s.toUpperCase()` and `s.toLowerCase()` - - effort required to update old scripts using these: minimal - - Added type definitions (typescript files for type checking in IDE, Flipper does not run typescript) - - Documentation is incomplete and deprecated, from now on you should refer to type definitions (`applications/system/js_app/types`), those will always be correct - - Type definitions for extra modules we have that OFW doesn't will come later +* No changes yet :(

#### Known NFC post-refactor regressions list: - Mifare Mini clones reading is broken (original mini working fine) (OFW) From 1d8b06a5c17831125e49b74ee30bedc65eecac92 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Wed, 27 Nov 2024 12:04:43 +0000 Subject: [PATCH 04/85] Update apps --nobuild --- CHANGELOG.md | 9 ++++++--- applications/external | 2 +- 2 files changed, 7 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 02cdb132e2..0ba9b75aab 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -3,16 +3,19 @@ ### Updated: - Apps: - - FlipLibrary: Added dog facts and random quotes, bug fixes (by @jblanked), connectivity and progress improvements (by @jamisonderek) + - FlipLibrary: Added Wikipedia, dog facts and random quotes, bug fixes (by @jblanked), connectivity and progress improvements (by @jamisonderek) - FlipSocial: Improved authentication (by @jblanked) - FlipStore: Many bugfixes, support ESP32 firmware downloads, allow deleting apps (by @jblanked) - - FlipWeather: Stability improvements (by @jblanked) - - FlipWiFi: Improved error handling (by @jblanked) + - FlipTrader: Improved progress display, added connectivity check on startup (by @jamisonderek) + - FlipWeather: Stability improvements (by @jblanked), improved progress display, added connectivity check on startup (by @jamisonderek) + - FlipWiFi: Improved error handling, updated scan loading and parsing (by @jblanked), added connectivity check on startup (by @jamisonderek) - FlipBIP: Refactor to make adding coins easier (by @xtruan) - uPython: Enabled extra functions for the `random` module (by @ofabel) - Pokemon Trade Tool: Update to gblink v0.63 which includes saving/loading of pin configurations for the EXT link interface (by @kbembedded) - Snake 2.0: Progress saving, endless mode, game timer, fruit positioning bugfixes (by @Willzvul) + - WebCrawler: Improved progress display, added connectivity check on startup (by @jamisonderek) - UL: NFC Magic: Added possibility to write 7b MFC to Gen1 tags (by @mishamyte) + - UL: Fixed apps for firmware USB CDC callback changes (by @xMasterX) ### Fixed: - OFW: GPIO: Merged gsurkov/vcp_break_support branch for usb uart bridge (WIP!!!) diff --git a/applications/external b/applications/external index f09acb4b3a..97e22396ac 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit f09acb4b3ae13a8a43f38a042483836776b37ebb +Subproject commit 97e22396acf6903f7583c004fd21512d46981787 From 17fde2779dbefadac6d17275adad445a762ace4c Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Wed, 27 Nov 2024 12:43:32 +0000 Subject: [PATCH 05/85] Oops --nobuild --- targets/f18/api_symbols.csv | 2 +- targets/f7/api_symbols.csv | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/targets/f18/api_symbols.csv b/targets/f18/api_symbols.csv index 79610d0bb9..c72569c641 100644 --- a/targets/f18/api_symbols.csv +++ b/targets/f18/api_symbols.csv @@ -1,5 +1,5 @@ entry,status,name,type,params -Version,+,78.2,, +Version,+,78.1,, Header,+,applications/services/bt/bt_service/bt.h,, Header,+,applications/services/bt/bt_service/bt_keys_storage.h,, Header,+,applications/services/cli/cli.h,, diff --git a/targets/f7/api_symbols.csv b/targets/f7/api_symbols.csv index f62649a6be..f5e79d7eec 100644 --- a/targets/f7/api_symbols.csv +++ b/targets/f7/api_symbols.csv @@ -1,5 +1,5 @@ entry,status,name,type,params -Version,+,78.2,, +Version,+,78.1,, Header,+,applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h,, Header,+,applications/main/archive/helpers/archive_helpers_ext.h,, Header,+,applications/main/subghz/subghz_fap.h,, From b912e93cc223097c79a6da86445a07b1bb22e76b Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Wed, 27 Nov 2024 13:07:40 +0000 Subject: [PATCH 06/85] Apps: Add Metroflip (by luu176) & Pinball0 (by rdefeo) --- CHANGELOG.md | 4 +++- applications/external | 2 +- 2 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 0ba9b75aab..170e04d5e6 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,7 @@ ### Added: -- Nothing +- Apps: + - Games: Pinball0 (by @rdefeo) + - NFC: Metroflip (by @luu176) ### Updated: - Apps: diff --git a/applications/external b/applications/external index 97e22396ac..033faf171c 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit 97e22396acf6903f7583c004fd21512d46981787 +Subproject commit 033faf171c0e53602df08ac6dff1304f7db6b584 From 832f7a263f36b475fe5b4dfbad8667a24420718c Mon Sep 17 00:00:00 2001 From: Chonk_m <143907552+Davim09@users.noreply.github.com> Date: Wed, 27 Nov 2024 10:10:51 -0300 Subject: [PATCH 07/85] Desktop: Fixed Wardriving animation design (#311) * Delete assets/dolphin/external/L1_Wardriving_128x64 directory * Add files via upload * Update changelog * Format --------- Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com> --- CHANGELOG.md | 1 + .../external/L1_Wardriving_128x64/frame_0.png | Bin 599 -> 591 bytes .../external/L1_Wardriving_128x64/frame_1.png | Bin 611 -> 605 bytes .../external/L1_Wardriving_128x64/frame_2.png | Bin 626 -> 622 bytes .../external/L1_Wardriving_128x64/frame_3.png | Bin 636 -> 634 bytes .../external/L1_Wardriving_128x64/frame_4.png | Bin 603 -> 607 bytes .../external/L1_Wardriving_128x64/frame_5.png | Bin 612 -> 626 bytes .../external/L1_Wardriving_128x64/frame_6.png | Bin 631 -> 596 bytes .../external/L1_Wardriving_128x64/frame_7.png | Bin 600 -> 0 bytes .../external/L1_Wardriving_128x64/meta.txt | 12 ++++++------ 10 files changed, 7 insertions(+), 6 deletions(-) delete mode 100644 assets/dolphin/external/L1_Wardriving_128x64/frame_7.png diff --git a/CHANGELOG.md b/CHANGELOG.md index 170e04d5e6..9ae9b3e3ae 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -20,6 +20,7 @@ - UL: Fixed apps for firmware USB CDC callback changes (by @xMasterX) ### Fixed: +- Desktop: Fixed Wardriving animation design (by @Davim09) - OFW: GPIO: Merged gsurkov/vcp_break_support branch for usb uart bridge (WIP!!!) ### Removed: diff --git a/assets/dolphin/external/L1_Wardriving_128x64/frame_0.png b/assets/dolphin/external/L1_Wardriving_128x64/frame_0.png index 888a40b0dbba734b10a589e94632ee6f08f3a113..c06aa25623316c5ae5965a1f20c0bc3bbeb7adbd 100644 GIT binary patch delta 566 zcmV-60?GZ?1kVJJB!3o3L_t(|oYj)MPg4OH#ees++Kc$8E;10>!O?+{XtdYO$*?e) zD8|LOxHuUSu9I<*4vt1U8gU@}1C|gYi3@{+1K3M2p~2YRN|Ro=kK+KhJpKc}?VOzN zb#feWyo~>o=&^d7a2YY=oM_p@JA{pv(aM4Wo?#U&YfgC$e}Aqzs&(hWT#+p;q0!my zK#|SJbj3gK4~C=|qd1iuZ(hf;5GHeCtc2l#d-SqMQaqUYQbdx{0a274`$W^QD=Etb z$(AfSsz||315SR~UU0&(XAKNC4*mF0$3miDU{TG(;K$&59)M9P?1LAM)iWP+S_yQ0 z06k8@m;ss|fPeF98!WgFX;=XtwXcCua@q1rNYd>PY^B&@6i}VC0$7P^4OPejPSpTQ z2|RWJ;)m|a9l+#y72ZK#z1~&8k~%1acDJ;68L-fW*oR*i!Thv@8n>Kz|=Dm3JBE=7FbcFyzBMz#0IP zP#B({e*^F|mXfl91R$YGCzgV;-j4%JP^J?rqnuS6c}_!cd~dJOJV+VMSlVcA>QSb~ zY#QCN02t$wp8s{_MZ5L=wVefh$$E>GAY4GPq=t4rZqK(h_4{>!qyS~Y2>#5GPNTl0 zroOF*#V>9;)%%&}WA)61=qwa+MRp@kJL*VkMuVvR15Kevv-U70H~;_u07*qoM6N<$ Ef`GCLc>n+a delta 574 zcmV-E0>S;y1lI(RB!3=BL_t(|oYj;)PZVJkg`c^u?jU}QHc}9F3rh=1qR|~YD?>wN zq8J-vV`F7V7%O8VTUZ+1(uf7&54eOFNo*)AEWjOt2^);Nv$Dw!?93bsnC0Uic)N3Q z?tSk)Ie8s%yo~>X=(2j8a2YY=oM_p@KZNzB(agdDo?#U&Yky984S%jUs&?k0T#+p; zq0!mSK#|SJbR{?+42Gl_qd4UpZ(hf;2qtr4%){`(J-S&esXv(dQpA$d0a274yF}Bl zD=Etb$(AfWsz||315Uo#UUXLSrV4*mF0!y@8vU{Te_;K$&49)M9U?1LAM)v^F{ znhA6Q06k8@n12BpK7jLT8!WsJX;g*)wXT8Txoia? zsVZP8q0df8|Dn5b2Qc}5nRn1rw|f<^qy~zh)$tZD0~Wc^58&6usOhqX`A$ZQh^XU@ z3;~Ac1QUdK#pv!^z%a)Nsgt;z`wsB6Cn=HE!!vrKWq(;%0D5q#w97a*4?JCip#bgy zRtK1b!tnh38-S;MDJdyT01_&+`%+la`*DB?O0@gRC}ov;p3?}Nz~8Gk4pK&=FKsk7 z^(a$)HjQst2#oPb&;PpeFj_!;Npi6pcNdZbkG5nb$ zokl%L4L5yTkBXgis{1p~$Lg62@mVP3itI+7cGQ;ChzC(~PJS2v00%!vu?$YOv;Y7A M07*qoM6N<$f(khb00000 diff --git a/assets/dolphin/external/L1_Wardriving_128x64/frame_1.png b/assets/dolphin/external/L1_Wardriving_128x64/frame_1.png index d467d4aef5a4a6a0e2b93ce707b19f8eef17da19..838b68a99f5c0fb2e2f6c42025ccf4792d67a03d 100644 GIT binary patch delta 580 zcmV-K0=xa=1l4|q!v3oacT99nZrg@%gBjSb|s_i-HBn?C*mzwI2( z_c|O$94+HNAYL3Jlz?;i(#(#x^jJBfNGP-nImfo_;vPW1Wq-7?V1TDtK}(v|e#OI| zYmVyO*>JFTaS@HobaREWX_+p0XT8CY6k`OZn&XXYSQf%WPK=f@TqqsBERqxtroI%B zq;x)!TNz89~xLl6bvk?yBPc!e9wI_ zs)ar9+_6UHVSi35fvyLjM=2Q7K+^?qUTuK|_aF_c;Gyqnj20qkPh{za_cRPGfIvXI@{j-a<79=TR)l*Y?M)xwa;M zzb=pzpglqu!Jk>uDb$zL)VH;;*i9#UKl6O7oH`eshC;5$uIFh-9ZAh-5Ve2y$xrfH SrH&r}0000Zh`&*KHE7t z@AGkT@;c&p8ULSnF+eB*=jdXY4L<3za!ip>Xc=+_rtIM!LVv$yw6dU&r&&Qun$YdrJKX-8vjm&g%g|caxE_r9Yev=eq1gDzgjcZsI!bDDtmN8r?9o;OF6!*Kn z6p^H~PZVXxF3}Y1O3HFUvMGy>DpIhMfRk^w7YsP|)W=}`(2oxdEF=p07S&x0e)O;B zJ{Z-)K6vg}BY*QSrz=C^_hE?!T`zjda5}RHbNxBt+Ef-si z0BVp{0V`9hqbgazi8^2@fy+)n{Ghaa8!)+Um3Ponw|fP!qyY+{-6=0z1S~8;?7^>M z*ebD#xlTr#kg!z0JOmhJ#~UZ0-0|+b1q^eX0H5T1cz@9Lk%K>_H& zg~~2t+&J)b6^1;x3z!cu0fphYxi_0Dir$X_j8kDdRz@YO`FT!5 za6EUZo$UV1^RaU3Tyz==xgxusryXreYDWF2IfLKD YKRl&S@LFUS%m4rY07*qoM6N<$f>wJE&Hw-a diff --git a/assets/dolphin/external/L1_Wardriving_128x64/frame_2.png b/assets/dolphin/external/L1_Wardriving_128x64/frame_2.png index 3dd633bc153920fdb6a2319b55843601faaae4ea..a39d6d04a3f4d4fe7558036934882808b201f0fa 100644 GIT binary patch delta 226 zcmV<803HAG1nvZoBndT1L_t(|oUM|PElPi@@Af?TtOz!^fw7q3s=c zXmqw&b$gn`iQ5RU`+ElIOSHIo?u{sG^U7y>pSM1EC84mBi& cN$1r50Ay@pj=DKKUjP6A07*qoM6N<$f-6dG{{R30 delta 230 zcmVxP>3s6)(CHGF*P7uepB zhel_cMUF79$mqO(x+5XOFpA|KLAQ1VlgBVs2*%17JScT1OC+^B?L8NXq^v^>$n+z0 zq8Zqilox_@Qzq$FWMGcd^sOSsmP_U+@j-)% z!IaWqN@Fl3`KRsk!J-kM!$@vP>La!q`qE!C%a}pdfR_WDL+Div)x_`N0vm>k^|(hY zQZ#&i=B7BaCkKts*VDG;q#&d7?&+R{7{fSLz65!{9)+13MFjlG=Yg zJ1;~iDee(NGJQ@o2Q5iSDu}ja!lQ~9%yH_jl}>ixW1yVxDV})nN0R2dHAXMV1VC>^ z3(mk@?g2k-e_AC;F4j`CEn`)EpSla6hcOrmUO?FauwL$f@$cGR9OS`8yO)8rdZ|`X zO^KwEwq@3boZL8|B5@utIRNEJe2#xD047Gz@M+)AuHOWV9N;bNtJ%B=n5byEaR9sZ z-0C^N1X=QHF8mk`s#!KMj>U}v0YS*vFkr}Gd-&v9x!Z35)A8#OjRvQ_0)`9_yIinF zrXs-j8DJmI+ASuz)?Lsh47+d#Fdo1RWJZ>k7Xco%rO1{a0YpqwYfHYZrAdE)DQs$O zCD_Tdm;Px0mg^jNaINLiqifcnixW1w0bFrInvPm<>QHAb(<1i)ZL z3r^-P4}jmcKdp)+7i%fnma*!-Ptyg^;}{GjFQDoGSg&`$`1fru4vOHS-K)S_v(l)k zp+r(e+cN7zPGKBSnYaj;0)UDnJ|}+`023o<`E(!V*KY$x4)7lK)oxz~OjNeqIDp+| zVf6xFf;`1F7k-Tf^*oyx$KqCrfFNXS7%&vDJ$wqC!rga(>FM=|MuRio0YeUmT`pN8 zQxRbN9Iy}P?GBUN=r3p!hF!P^7!P0uawE&jivUl$Qe?}I03xPobS2-`(jyyvS>e%f*q#gIeD_Z0E5OL7x#VmDM@pEkJ0n8kPR2NPb|0?H2++= z1xDpf34lkA)qgS%bDBWM1JK*v-!86R15B=4;RWof+dT(ZQUit1ida4cSXhME zgRi|(v&cH;I;cfRI2xWA28H2fPFbMETMt{R&p8%r(q#kFTk;w$GpaAT` z$#RbguJl{D4#OVY0L%xNg2Kq+;xmAIv6Pe*BmfCj+OZUr^>PAWk}~aB8Re|%=hY6u z@!UPX(Qg@zSlVc8>P{wqE{(2Q0F3im4}TQpM!nkaXWL79mvxsbLAZosNxpVoZ7;So z{q1Riq(1;F$^ON39(>5gmm>PGpz!wxhPBMl`6}FVB8q Up)Zod5C8xG07*qoM6N<$f{ut1y8r+H delta 578 zcmV-I0=@m;1lt6VB!41FL_t(|oUN35{@`{(f8h@=UD3EDZ(I?Fo#L!aB z(Oh>n%!zDy8I87swuFNUNTBRJK(-?)ZlAxz}LsEgr2`JmfKQd~@ZAtFg> zAq>czgSe)kFDc7`WK$L$BvP=GfRj7h4UTN=Ndtp*uMpnXv5+Vrm*zYSz8A0OJ{Z-~ zUh~|sdgfzJD}RBm51>aW7}G%018`n$fd%&<4Xfaz_Ej+4GMm1OB;5+ZRt8#(0IHK# z0duL%p(U@n)@lE z8B6QU4L!`%m`S6X767As)U&^3c~QT=0uhv4Fx7-7y#;7}y!v$iRHO7VNAGy{Efxo_o%F zJ}hxO4F6lmPYTHiA-W1!J;p-pSDRhcHnH zqc#Q?%Dpp)B_-XgFGMUU>k9ocRxhq8IFOVVK)NXt_YxVH(?p(CI6Dk5(Cqr+nGb&? zX}XhR=$cFj;D2_AS@*;$9|Av}psI!>4{I*nl(DvgfXD;TlMDfP z3oGEE-Rr<|)M#y}rCd@&n=&i?t~~;%PF4Yo4WJ5nz^PflWC->Gl1Js0yMU1kyn}tU z+gAXS)-5j!VK=fDF9IekQ(5-l$56OcW*y^N+^G=~!hi4pV6bs~0_@1X_ZBcm{raRs z;n^>Mp#)?em#x9^6fi*v*oOL^G7QmV8P zDR4A51~868D^ZSpLHx nfl@)_H;ZdWElJI|duo3Ha7=g9?8@bH00000NkvXXu0mjf4w@0n delta 587 zcmV-R0<`_|1mpyeB!4SOL_t(|oUN2UXj4%b#eeTJ+SICzE;^JZh@gXmV^K73bdoNe z1g*HZxj2Xv`kchYc5oEUY#mA`x4a@^!NCrW)x1)npUWmsMw9^rX-<`hQzVc zow+b4vgKtoHrp8x*^Er5z2n}%B*hrRspRL4%UBk|WG;-CFkC3^O&dvy2d+;)~fR)5Pp%xMB04?y=)FlO*+xB$-6EwJELxt4|%@KEa_@S#(0Z>X(IQeB&} zm7xozF+era3ScE7P=zeu&^%x%LBMuEe5bf_9Wc3Wg_p3SZucBuNevW2D`M#sU||tr z55DzE%_3`<>!21P;b?ef7%)mW69kkxr5i5*!yv#X8Gj9reFlsIkb0bTMkW%#f&#Du zC(Au9akbyVH5m5bCSX3mBosy#7M=s#kENunAOT3I(vGE|tXG!+CMeU6l~K;BeqQYm z9M9eL8~v8ih^6($hVEwaXVd7K1;99O^yp_%Zq%#&xwgHi_gQzT5`>E=mgH;u_0~d5 zQ{SHzNJI)yCXC?69O*RLk<`$~FX2!po$7wgU)1W66VXv9j-R002ovPDHLkV1mO<6u|%h diff --git a/assets/dolphin/external/L1_Wardriving_128x64/frame_6.png b/assets/dolphin/external/L1_Wardriving_128x64/frame_6.png index b79bd23d7a95c5309d0338188e5c7b0cb0ecbc66..4fb2ae19158d02c89699beb69910d36c90b975c3 100644 GIT binary patch delta 571 zcmV-B0>u6I1k?nOB!3%8L_t(|oYj&&PZVJkg`fAb3It_G8!5;#F&1`O8WY3XSs5ED z3$fD9#=?TYSQ#53(UQcqGtw9;yIrD2Dy6WKk0BD-V1!v&!!Gl2EMRuQf8g!T&AI13 z@0;ty@iP9;Mw6xEjXs79xqn9XDR*V9Zq&1|qbFEG?=`Kw27jufPBV?^D0gHF3ut(% z(Q#xGGMx)f2c3``ukNZi@HlGc^GB5b(E|nX|I#|M6@Kuokp+B9euLKp)D!R z4augg1-LE-b^>rY*?x#YqYL`5hQV3~l-CvbAxYK4(3kgQu-^T#J7D3F6tp}H~VpReri<>gMk;-o5BT3gIu*F{AAH+iyQXepniylB0 z(lY~CN(J|a zW!Ml4LDnu)jivQ(S-cYUR;zy+t5yR_34F|&^L`k;MX{tWY5ZnuZd+qNpA|?7;6V$1 zO_PqJJv2#cX}l8kHqx=?YT@w6IXT!$ppZM_xXaN3NK$uD_7|A!N5f^AbS+B5CYtwU84g((C2aFFe0j0tD`8NPh6Df5RqyQ;Z zT8R`mni~Tc$Dx%d$H}XHr_Uw?%X1I?W@pQ2Cerujh92kgr?dFB34l>P==txm-1wk= zRJOICPgi++u@Zy}D3RoA@BQ}tt|ouIE|HeNA&g;XhHMJ$OKR%#*RVgzCfnbNVXyU_ skIz7*ROw7hFhq(owbJLjV8(07*qoM6N<$f)C9dZ2$lO diff --git a/assets/dolphin/external/L1_Wardriving_128x64/frame_7.png b/assets/dolphin/external/L1_Wardriving_128x64/frame_7.png deleted file mode 100644 index 1cd7bfdbae3b962f8a5fece04ce9323cc7a907eb..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 600 zcmV-e0;m0nP)e=voq2dD!V(P zMk=MSlaD15xnP7nIm5wzJQlEbz<=O$GkNBj-@KW;P8<*8zbG_WJYMLg-;g`evQN2_ z*6Kz*3)}fPi|B)Hrk48T&4@b*`RHbVhrH?JpXYG%c9Ou z20e^2+&)UylC;})eJWa#;&!1Zb4OR!80<+(b3w8pYXPo@FC7{h;NEvq~0VuKwQ3u^yygjFS&?&o+V2Yr&PQRF!~< z(uNFgsIn9JNYaf6Y@z7;eR!xs>I3F+*#pQzx~2h3X@Pv=d)*5+0aH1IKOwtnHZK8| zR7T3YfUSl%cOI~)JM;EtV7(O8yII1@j@Nx-ArXuHJ%Hg++6n4-jq z<{MxXEO-oDbiKm~U}3?zT56md+T$wMF<_Ei=n3EsU^RdxN1=Ci_9ei>Sklmh5`cse zwqq$7%oG6(GsJc*g@akEeWww~7hU<48Q_94tc&>|+bdIzrM2%_yc`v))xV7us{w-v ze9D@0ei*$&v81nQ{C0D8OQXM@7f1@=K?{CQk&dBVNvmnR92FbsXmh1-c;uY!Yb8*~ m6>;3*XaOXtI|y?pzl(oUnn=O)FQbqE0000 Date: Wed, 27 Nov 2024 14:11:09 +0100 Subject: [PATCH 08/85] feat(hid_ptt): support Gather (#304) * feat(hid_ptt): support Gather plus a few typo and style fixes... * Update changelog --------- Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com> --- CHANGELOG.md | 1 + applications/system/hid_app/views/hid_ptt.c | 58 +++++++++++++++++++-- 2 files changed, 56 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9ae9b3e3ae..ffd765426f 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,7 @@ ### Updated: - Apps: + - BT/USB Remote: Add PTT support for Gather (by @SapphicCode) - FlipLibrary: Added Wikipedia, dog facts and random quotes, bug fixes (by @jblanked), connectivity and progress improvements (by @jamisonderek) - FlipSocial: Improved authentication (by @jblanked) - FlipStore: Many bugfixes, support ESP32 firmware downloads, allow deleting apps (by @jblanked) diff --git a/applications/system/hid_app/views/hid_ptt.c b/applications/system/hid_app/views/hid_ptt.c index 59643abac1..58599eb511 100644 --- a/applications/system/hid_app/views/hid_ptt.c +++ b/applications/system/hid_app/views/hid_ptt.c @@ -42,6 +42,7 @@ typedef struct { enum HidPushToTalkAppIndex { HidPushToTalkAppIndexDiscord, HidPushToTalkAppIndexFaceTime, + HidPushToTalkAppIndexGather, HidPushToTalkAppIndexGoogleMeet, HidPushToTalkAppIndexGoogleHangouts, HidPushToTalkAppIndexJamulus, @@ -308,7 +309,6 @@ static void hid_ptt_trigger_mute_jamulus(HidPushToTalk* hid_ptt) { } // webex - static void hid_ptt_trigger_camera_webex(HidPushToTalk* hid_ptt) { hid_hal_keyboard_press(hid_ptt->hid, KEY_MOD_LEFT_CTRL | KEY_MOD_LEFT_SHIFT | HID_KEYBOARD_V); hid_hal_keyboard_release( @@ -325,6 +325,30 @@ static void hid_ptt_trigger_hand_linux_webex(HidPushToTalk* hid_ptt) { hid_ptt->hid, KEY_MOD_LEFT_CTRL | KEY_MOD_RIGHT_SHIFT | HID_KEYBOARD_R); } +// Gather +static void hid_ptt_trigger_hand_gather(HidPushToTalk* hid_ptt) { + hid_hal_keyboard_press(hid_ptt->hid, HID_KEYBOARD_H); + hid_hal_keyboard_release(hid_ptt->hid, HID_KEYBOARD_H); +} +static void hid_ptt_trigger_camera_macos_gather(HidPushToTalk* hid_ptt) { + hid_hal_keyboard_press(hid_ptt->hid, KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_SHIFT | HID_KEYBOARD_V); + hid_hal_keyboard_release(hid_ptt->hid, KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_SHIFT | HID_KEYBOARD_V); +} +static void hid_ptt_trigger_mute_macos_gather(HidPushToTalk* hid_ptt) { + hid_hal_keyboard_press(hid_ptt->hid, KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_SHIFT | HID_KEYBOARD_A); + hid_hal_keyboard_release(hid_ptt->hid, KEY_MOD_LEFT_GUI | KEY_MOD_LEFT_SHIFT | HID_KEYBOARD_A); +} +static void hid_ptt_trigger_camera_linux_gather(HidPushToTalk* hid_ptt) { + hid_hal_keyboard_press(hid_ptt->hid, KEY_MOD_LEFT_CTRL | KEY_MOD_LEFT_SHIFT | HID_KEYBOARD_V); + hid_hal_keyboard_release( + hid_ptt->hid, KEY_MOD_LEFT_CTRL | KEY_MOD_LEFT_SHIFT | HID_KEYBOARD_V); +} +static void hid_ptt_trigger_mute_linux_gather(HidPushToTalk* hid_ptt) { + hid_hal_keyboard_press(hid_ptt->hid, KEY_MOD_LEFT_CTRL | KEY_MOD_LEFT_SHIFT | HID_KEYBOARD_A); + hid_hal_keyboard_release( + hid_ptt->hid, KEY_MOD_LEFT_CTRL | KEY_MOD_LEFT_SHIFT | HID_KEYBOARD_A); +} + static void hid_ptt_menu_callback( void* context, uint32_t osIndex, @@ -359,6 +383,13 @@ static void hid_ptt_menu_callback( model->callback_start_ptt = hid_ptt_trigger_cmd_shift_m; model->callback_stop_ptt = hid_ptt_trigger_cmd_shift_m; break; + case HidPushToTalkAppIndexGather: + model->callback_trigger_mute = hid_ptt_trigger_mute_macos_gather; + model->callback_trigger_camera = hid_ptt_trigger_camera_macos_gather; + model->callback_trigger_hand = hid_ptt_trigger_hand_gather; + model->callback_start_ptt = hid_ptt_trigger_mute_macos_gather; + model->callback_stop_ptt = hid_ptt_trigger_mute_macos_gather; + break; case HidPushToTalkAppIndexGoogleHangouts: model->callback_trigger_mute = hid_ptt_trigger_mute_macos_hangouts; model->callback_trigger_camera = hid_ptt_trigger_camera_macos_hangouts; @@ -434,6 +465,13 @@ static void hid_ptt_menu_callback( model->callback_start_ptt = hid_ptt_start_ptt_linux_discord; model->callback_stop_ptt = hid_ptt_stop_ptt_linux_discord; break; + case HidPushToTalkAppIndexGather: + model->callback_trigger_mute = hid_ptt_trigger_mute_linux_gather; + model->callback_trigger_camera = hid_ptt_trigger_camera_linux_gather; + model->callback_trigger_hand = hid_ptt_trigger_hand_gather; + model->callback_start_ptt = hid_ptt_trigger_mute_linux_gather; + model->callback_stop_ptt = hid_ptt_trigger_mute_linux_gather; + break; case HidPushToTalkAppIndexGoogleHangouts: model->callback_trigger_mute = hid_ptt_trigger_mute_linux_hangouts; model->callback_trigger_camera = hid_ptt_trigger_camera_linux_hangouts; @@ -873,6 +911,20 @@ HidPushToTalk* hid_ptt_alloc(Hid* hid) { HidPushToTalkAppIndexFaceTime, hid_ptt_menu_callback, hid_ptt); + ptt_menu_add_item_to_list( + hid->hid_ptt_menu, + HidPushToTalkMacOS, + "Gather", + HidPushToTalkAppIndexGather, + hid_ptt_menu_callback, + hid_ptt); + ptt_menu_add_item_to_list( + hid->hid_ptt_menu, + HidPushToTalkLinux, + "Gather", + HidPushToTalkAppIndexGather, + hid_ptt_menu_callback, + hid_ptt); ptt_menu_add_item_to_list( hid->hid_ptt_menu, HidPushToTalkMacOS, @@ -932,14 +984,14 @@ HidPushToTalk* hid_ptt_alloc(Hid* hid) { ptt_menu_add_item_to_list( hid->hid_ptt_menu, HidPushToTalkMacOS, - "Slack Hubble", + "Slack Huddle", HidPushToTalkAppIndexSlackHubble, hid_ptt_menu_callback, hid_ptt); ptt_menu_add_item_to_list( hid->hid_ptt_menu, HidPushToTalkLinux, - "Slack Hubble", + "Slack Huddle", HidPushToTalkAppIndexSlackHubble, hid_ptt_menu_callback, hid_ptt); From 49d29f8ebfa3a40f9273e10ed830ea541012aea4 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Wed, 27 Nov 2024 13:11:47 +0000 Subject: [PATCH 09/85] ESP Flasher: Add c3 and c6 to s3 option (by jaylikesbunda) --- CHANGELOG.md | 1 + applications/external | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ffd765426f..c896911bb8 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ ### Updated: - Apps: - BT/USB Remote: Add PTT support for Gather (by @SapphicCode) + - ESP Flasher: Add c3 and c6 to s3 option (by @jaylikesbunda) - FlipLibrary: Added Wikipedia, dog facts and random quotes, bug fixes (by @jblanked), connectivity and progress improvements (by @jamisonderek) - FlipSocial: Improved authentication (by @jblanked) - FlipStore: Many bugfixes, support ESP32 firmware downloads, allow deleting apps (by @jblanked) diff --git a/applications/external b/applications/external index 033faf171c..1163b58398 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit 033faf171c0e53602df08ac6dff1304f7db6b584 +Subproject commit 1163b5839883072526c029f9f636507b7f318f14 From 0ef9f7d308e093f3dc45df79202c73c150756957 Mon Sep 17 00:00:00 2001 From: Ruslan Nadyrshin <110516632+rnadyrshin@users.noreply.github.com> Date: Mon, 2 Dec 2024 10:58:13 +0400 Subject: [PATCH 10/85] JS packages folder included to the doxygen's exclude list (#4021) --- documentation/doxygen/Doxyfile.cfg | 1 + 1 file changed, 1 insertion(+) diff --git a/documentation/doxygen/Doxyfile.cfg b/documentation/doxygen/Doxyfile.cfg index e016317494..3df12f08f0 100644 --- a/documentation/doxygen/Doxyfile.cfg +++ b/documentation/doxygen/Doxyfile.cfg @@ -1042,6 +1042,7 @@ EXCLUDE = $(DOXY_SRC_ROOT)/lib/mlib \ $(DOXY_SRC_ROOT)/applications/plugins/dap_link/lib/free-dap \ $(DOXY_SRC_ROOT)/applications/debug \ $(DOXY_SRC_ROOT)/applications/main \ + $(DOXY_SRC_ROOT)/applications/system/js_app/packages \ $(DOXY_SRC_ROOT)/applications/settings \ $(DOXY_SRC_ROOT)/lib/micro-ecc \ $(DOXY_SRC_ROOT)/lib/ReadMe.md \ From 399bcdcc13765cff4701eb8ddb2dbeddcb5ba59f Mon Sep 17 00:00:00 2001 From: Nicolas Marie-Magdelaine PhD Date: Mon, 2 Dec 2024 08:15:29 +0100 Subject: [PATCH 11/85] Add IR command for NAD DR2 D7050 D3020 (#4020) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: あく --- .../resources/infrared/assets/audio.ir | 39 +++++++++++++++++++ 1 file changed, 39 insertions(+) diff --git a/applications/main/infrared/resources/infrared/assets/audio.ir b/applications/main/infrared/resources/infrared/assets/audio.ir index 20070bbe06..efd0382e3a 100644 --- a/applications/main/infrared/resources/infrared/assets/audio.ir +++ b/applications/main/infrared/resources/infrared/assets/audio.ir @@ -4650,3 +4650,42 @@ type: parsed protocol: NECext address: 7F 01 00 00 command: 69 96 00 00 +# +# Model : NAD DR2 remote for NAD D7050 and D3020 +# +name: Power +type: parsed +protocol: NECext +address: 87 7C 00 00 +command: 25 DA 00 00 +# +name: Vol_up +type: parsed +protocol: NECext +address: 87 7C 00 00 +command: 88 77 00 00 +# +name: Vol_dn +type: parsed +protocol: NECext +address: 87 7C 00 00 +command: 8C 73 00 00 +# +name: Mute +type: parsed +protocol: NECext +address: 87 7C 00 00 +command: 94 6B 00 00 +# +name: Next +type: parsed +protocol: NECext +address: 87 7C 00 00 +command: 1A E5 00 00 +# +name: Prev +type: parsed +protocol: NECext +address: 87 7C 00 00 +command: 1D E2 00 00 +# From c3dc9e1ec2aa785f346d979e906ecef82dc2ab74 Mon Sep 17 00:00:00 2001 From: Luu <112649910+luu176@users.noreply.github.com> Date: Mon, 2 Dec 2024 08:27:16 +0100 Subject: [PATCH 12/85] Fix typo for mf_classic_key_cahce_get_next_key() function (#4015) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Update mf_classic_key_cache.c * Update mf_classic_key_cache.h * Update mf_classic.c * Update nfc_scene_mf_classic_update_initial.c Co-authored-by: あく --- applications/main/nfc/helpers/mf_classic_key_cache.c | 2 +- applications/main/nfc/helpers/mf_classic_key_cache.h | 2 +- .../main/nfc/helpers/protocol_support/mf_classic/mf_classic.c | 2 +- .../main/nfc/scenes/nfc_scene_mf_classic_update_initial.c | 2 +- 4 files changed, 4 insertions(+), 4 deletions(-) diff --git a/applications/main/nfc/helpers/mf_classic_key_cache.c b/applications/main/nfc/helpers/mf_classic_key_cache.c index 1b945660c0..763c4dea7e 100644 --- a/applications/main/nfc/helpers/mf_classic_key_cache.c +++ b/applications/main/nfc/helpers/mf_classic_key_cache.c @@ -166,7 +166,7 @@ void mf_classic_key_cache_load_from_data(MfClassicKeyCache* instance, const MfCl } } -bool mf_classic_key_cahce_get_next_key( +bool mf_classic_key_cache_get_next_key( MfClassicKeyCache* instance, uint8_t* sector_num, MfClassicKey* key, diff --git a/applications/main/nfc/helpers/mf_classic_key_cache.h b/applications/main/nfc/helpers/mf_classic_key_cache.h index b09f4526ba..50a1f5c30f 100644 --- a/applications/main/nfc/helpers/mf_classic_key_cache.h +++ b/applications/main/nfc/helpers/mf_classic_key_cache.h @@ -16,7 +16,7 @@ bool mf_classic_key_cache_load(MfClassicKeyCache* instance, const uint8_t* uid, void mf_classic_key_cache_load_from_data(MfClassicKeyCache* instance, const MfClassicData* data); -bool mf_classic_key_cahce_get_next_key( +bool mf_classic_key_cache_get_next_key( MfClassicKeyCache* instance, uint8_t* sector_num, MfClassicKey* key, diff --git a/applications/main/nfc/helpers/protocol_support/mf_classic/mf_classic.c b/applications/main/nfc/helpers/protocol_support/mf_classic/mf_classic.c index 4fece16be5..6f7be7f4c4 100644 --- a/applications/main/nfc/helpers/protocol_support/mf_classic/mf_classic.c +++ b/applications/main/nfc/helpers/protocol_support/mf_classic/mf_classic.c @@ -72,7 +72,7 @@ static NfcCommand nfc_scene_read_poller_callback_mf_classic(NfcGenericEvent even uint8_t sector_num = 0; MfClassicKey key = {}; MfClassicKeyType key_type = MfClassicKeyTypeA; - if(mf_classic_key_cahce_get_next_key( + if(mf_classic_key_cache_get_next_key( instance->mfc_key_cache, §or_num, &key, &key_type)) { mfc_event->data->read_sector_request_data.sector_num = sector_num; mfc_event->data->read_sector_request_data.key = key; diff --git a/applications/main/nfc/scenes/nfc_scene_mf_classic_update_initial.c b/applications/main/nfc/scenes/nfc_scene_mf_classic_update_initial.c index 7c76260b4f..a477a08b92 100644 --- a/applications/main/nfc/scenes/nfc_scene_mf_classic_update_initial.c +++ b/applications/main/nfc/scenes/nfc_scene_mf_classic_update_initial.c @@ -34,7 +34,7 @@ NfcCommand nfc_mf_classic_update_initial_worker_callback(NfcGenericEvent event, uint8_t sector_num = 0; MfClassicKey key = {}; MfClassicKeyType key_type = MfClassicKeyTypeA; - if(mf_classic_key_cahce_get_next_key( + if(mf_classic_key_cache_get_next_key( instance->mfc_key_cache, §or_num, &key, &key_type)) { mfc_event->data->read_sector_request_data.sector_num = sector_num; mfc_event->data->read_sector_request_data.key = key; From 2f30817dc9a052a9d033b53c6f32de6b67d74b0c Mon Sep 17 00:00:00 2001 From: WillyJL <49810075+Willy-JL@users.noreply.github.com> Date: Mon, 2 Dec 2024 07:54:50 +0000 Subject: [PATCH 13/85] Settings: More granularity for LCD and Notification (#4010) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: あく --- .../notification_settings_app.c | 54 +++++++++++-------- 1 file changed, 33 insertions(+), 21 deletions(-) diff --git a/applications/settings/notification_settings/notification_settings_app.c b/applications/settings/notification_settings/notification_settings_app.c index ada2bfdd42..2462b32bde 100644 --- a/applications/settings/notification_settings/notification_settings_app.c +++ b/applications/settings/notification_settings/notification_settings_app.c @@ -20,8 +20,11 @@ static const NotificationSequence sequence_note_c = { NULL, }; -#define CONTRAST_COUNT 11 +#define CONTRAST_COUNT 17 const char* const contrast_text[CONTRAST_COUNT] = { + "-8", + "-7", + "-6", "-5", "-4", "-3", @@ -33,8 +36,14 @@ const char* const contrast_text[CONTRAST_COUNT] = { "+3", "+4", "+5", + "+6", + "+7", + "+8", }; const int32_t contrast_value[CONTRAST_COUNT] = { + -8, + -7, + -6, -5, -4, -3, @@ -46,44 +55,47 @@ const int32_t contrast_value[CONTRAST_COUNT] = { 3, 4, 5, + 6, + 7, + 8, }; -#define BACKLIGHT_COUNT 5 +#define BACKLIGHT_COUNT 21 const char* const backlight_text[BACKLIGHT_COUNT] = { - "0%", - "25%", - "50%", - "75%", - "100%", + "0%", "5%", "10%", "15%", "20%", "25%", "30%", "35%", "40%", "45%", "50%", + "55%", "60%", "65%", "70%", "75%", "80%", "85%", "90%", "95%", "100%", }; const float backlight_value[BACKLIGHT_COUNT] = { - 0.0f, - 0.25f, - 0.5f, - 0.75f, - 1.0f, + 0.00f, 0.05f, 0.10f, 0.15f, 0.20f, 0.25f, 0.30f, 0.35f, 0.40f, 0.45f, 0.50f, + 0.55f, 0.60f, 0.65f, 0.70f, 0.75f, 0.80f, 0.85f, 0.90f, 0.95f, 1.00f, }; -#define VOLUME_COUNT 5 +#define VOLUME_COUNT 21 const char* const volume_text[VOLUME_COUNT] = { - "0%", - "25%", - "50%", - "75%", - "100%", + "0%", "5%", "10%", "15%", "20%", "25%", "30%", "35%", "40%", "45%", "50%", + "55%", "60%", "65%", "70%", "75%", "80%", "85%", "90%", "95%", "100%", +}; +const float volume_value[VOLUME_COUNT] = { + 0.00f, 0.05f, 0.10f, 0.15f, 0.20f, 0.25f, 0.30f, 0.35f, 0.40f, 0.45f, 0.50f, + 0.55f, 0.60f, 0.65f, 0.70f, 0.75f, 0.80f, 0.85f, 0.90f, 0.95f, 1.00f, }; -const float volume_value[VOLUME_COUNT] = {0.0f, 0.25f, 0.5f, 0.75f, 1.0f}; -#define DELAY_COUNT 6 +#define DELAY_COUNT 11 const char* const delay_text[DELAY_COUNT] = { "1s", "5s", + "10s", "15s", "30s", "60s", + "90s", "120s", + "5min", + "10min", + "30min", }; -const uint32_t delay_value[DELAY_COUNT] = {1000, 5000, 15000, 30000, 60000, 120000}; +const uint32_t delay_value[DELAY_COUNT] = + {1000, 5000, 10000, 15000, 30000, 60000, 90000, 120000, 300000, 600000, 1800000}; #define VIBRO_COUNT 2 const char* const vibro_text[VIBRO_COUNT] = { From 8629c61dc91f843577d9214b4a60b9b607fe1914 Mon Sep 17 00:00:00 2001 From: mxcdoam <72457810+mxcdoam@users.noreply.github.com> Date: Mon, 2 Dec 2024 11:08:17 +0300 Subject: [PATCH 14/85] NFC: Plantain parser Last payment amount fix (#3998) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: あく --- .../main/nfc/plugins/supported_cards/plantain.c | 16 ++++++++++------ 1 file changed, 10 insertions(+), 6 deletions(-) diff --git a/applications/main/nfc/plugins/supported_cards/plantain.c b/applications/main/nfc/plugins/supported_cards/plantain.c index 9f2491691b..49bbaebe8e 100644 --- a/applications/main/nfc/plugins/supported_cards/plantain.c +++ b/applications/main/nfc/plugins/supported_cards/plantain.c @@ -310,9 +310,11 @@ static bool plantain_parse(const NfcDevice* device, FuriString* parsed_data) { last_payment_date.year, last_payment_date.hour, last_payment_date.minute); - //payment amount. This needs to be investigated more, currently it shows incorrect amount on some cards. - uint16_t last_payment = (data->block[18].data[9] << 8) | data->block[18].data[8]; - furi_string_cat_printf(parsed_data, "Amount: %d rub", last_payment / 100); + //Last payment amount. + uint16_t last_payment = ((data->block[18].data[10] << 16) | + (data->block[18].data[9] << 8) | (data->block[18].data[8])) / + 100; + furi_string_cat_printf(parsed_data, "Amount: %d rub", last_payment); furi_string_free(card_number_s); furi_string_free(tmp_s); //This is for 4K Plantains. @@ -369,9 +371,11 @@ static bool plantain_parse(const NfcDevice* device, FuriString* parsed_data) { last_payment_date.year, last_payment_date.hour, last_payment_date.minute); - //payment amount - uint16_t last_payment = (data->block[18].data[9] << 8) | data->block[18].data[8]; - furi_string_cat_printf(parsed_data, "Amount: %d rub", last_payment / 100); + //Last payment amount + uint16_t last_payment = ((data->block[18].data[10] << 16) | + (data->block[18].data[9] << 8) | (data->block[18].data[8])) / + 100; + furi_string_cat_printf(parsed_data, "Amount: %d rub", last_payment); furi_string_free(card_number_s); furi_string_free(tmp_s); } From 3d6fd9b00d216f744a69472341e1bca89fa7a83c Mon Sep 17 00:00:00 2001 From: ted-logan Date: Mon, 2 Dec 2024 01:51:57 -0800 Subject: [PATCH 15/85] nfc/clipper: (#3991) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * nfs/clipper: BART station ids for San Lorenzo, Bay Fair Update the BART station ids for the San Lorenzo and Bay Fair stations in the East Bay of the San Francisco Bay Area. * nfc/clipper: Update MUNI station ids Add MUNI station ids for the T line "Central Subway" project, which opened three new underground stations in 2022. --------- Co-authored-by: あく --- applications/main/nfc/plugins/supported_cards/clipper.c | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/applications/main/nfc/plugins/supported_cards/clipper.c b/applications/main/nfc/plugins/supported_cards/clipper.c index 3eba82425d..eb459d4195 100644 --- a/applications/main/nfc/plugins/supported_cards/clipper.c +++ b/applications/main/nfc/plugins/supported_cards/clipper.c @@ -101,7 +101,8 @@ static const IdMapping bart_zones[] = { {.id = 0x001d, .name = "Lake Merrit"}, {.id = 0x001e, .name = "Fruitvale"}, {.id = 0x001f, .name = "Coliseum"}, - {.id = 0x0021, .name = "San Leandro"}, + {.id = 0x0020, .name = "San Leandro"}, + {.id = 0x0021, .name = "Bay Fair"}, {.id = 0x0022, .name = "Hayward"}, {.id = 0x0023, .name = "South Hayward"}, {.id = 0x0024, .name = "Union City"}, @@ -131,6 +132,9 @@ static const IdMapping muni_zones[] = { {.id = 0x000b, .name = "Castro"}, {.id = 0x000c, .name = "Forest Hill"}, // Guessed {.id = 0x000d, .name = "West Portal"}, + {.id = 0x0019, .name = "Union Square/Market Street"}, + {.id = 0x001a, .name = "Chinatown - Rose Pak"}, + {.id = 0x001b, .name = "Yerba Buena/Moscone"}, }; static const size_t kNumMUNIZones = COUNT(muni_zones); From 0fd26ee14826247ea77c1ee8ee121952ae6924c7 Mon Sep 17 00:00:00 2001 From: Astra Date: Mon, 2 Dec 2024 19:24:20 +0900 Subject: [PATCH 16/85] Increase system stack's reserved memory size --- targets/f7/stm32wb55xx_flash.ld | 2 +- targets/f7/stm32wb55xx_ram_fw.ld | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/targets/f7/stm32wb55xx_flash.ld b/targets/f7/stm32wb55xx_flash.ld index 524da6fc32..ef61bb2388 100644 --- a/targets/f7/stm32wb55xx_flash.ld +++ b/targets/f7/stm32wb55xx_flash.ld @@ -3,7 +3,7 @@ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ _stack_end = 0x20030000; /* end of RAM */ /* Generate a link error if heap and stack don't fit into RAM */ -_stack_size = 0x200; /* required amount of stack */ +_stack_size = 0x400; /* required amount of stack */ MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1024K diff --git a/targets/f7/stm32wb55xx_ram_fw.ld b/targets/f7/stm32wb55xx_ram_fw.ld index f0e8ad678c..93579788d0 100644 --- a/targets/f7/stm32wb55xx_ram_fw.ld +++ b/targets/f7/stm32wb55xx_ram_fw.ld @@ -3,7 +3,7 @@ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ _stack_end = 0x20030000; /* end of RAM */ /* Generate a link error if heap and stack don't fit into RAM */ -_stack_size = 0x200; /* required amount of stack */ +_stack_size = 0x400; /* required amount of stack */ MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1024K From 7d5358b9d3b0d6493a8be3d0e76dfd58de913493 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Ond=C5=99ej=20Nov=C3=BD?= Date: Tue, 3 Dec 2024 07:30:25 +0100 Subject: [PATCH 17/85] Replace mf_classic_dict.nfc with Proxmark3 version (#4013) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: あく --- .../resources/nfc/assets/mf_classic_dict.nfc | 3578 ++++++++++++----- 1 file changed, 2489 insertions(+), 1089 deletions(-) diff --git a/applications/main/nfc/resources/nfc/assets/mf_classic_dict.nfc b/applications/main/nfc/resources/nfc/assets/mf_classic_dict.nfc index e2b74f8475..0a3de18af2 100644 --- a/applications/main/nfc/resources/nfc/assets/mf_classic_dict.nfc +++ b/applications/main/nfc/resources/nfc/assets/mf_classic_dict.nfc @@ -1,538 +1,1010 @@ -# Key dictionary from https://github.com/ikarus23/MifareClassicTool.git - -# More well known keys! -# Standard keys +# Key dictionary from https://github.com/RfidResearchGroup/proxmark3/ +# +# Mifare Default Keys +# -- iceman fork version -- +# -- contribute to this list, sharing is caring -- +# +# Default key FFFFFFFFFFFF -A0A1A2A3A4A5 -D3F7D3F7D3F7 +# +# Blank key 000000000000 - -# Keys from mfoc +# +# NFC Forum MADkey +A0A1A2A3A4A5 +# +# MAD access key A (reversed) +A5A4A3A2A1A0 +# +# MAD access key B +89ECA97F8C2A +# +# Mifare 1k EV1 (S50) hidden blocks, Signature data +# 16 A +5C8FF9990DA2 +# +# 17 A +75CCB59C9BED +# +# 16 B +D01AFEEB890A +# +# 17 B +4B791BEA7BCC +# +# QL88 keys +# 17 A/B +2612C6DE84CA +707B11FC1481 +# +# QL88 diversifed +03F9067646AE +2352C5B56D85 +# B0B1B2B3B4B5 +C0C1C2C3C4C5 +D0D1D2D3D4D5 +AABBCCDDEEFF 4D3A99C351DD 1A982C7E459A -AABBCCDDEEFF +# +# key A Wien +D3F7D3F7D3F7 +# +# key B Wien +5A1B85FCE20A +# +# 714C5C886E97 587EE5F9350F A0478CC39091 533CB6C723F6 8FD0A4F256E9 - -# Keys from: -# http://pastebin.com/wcTHXLZZ -A64598A77478 -26940B21FF5D +# +# iCopy-X +E00000000000 +# +# +E7D6064C5860 +B27CCAB30DBD +# +# lib / Nat Bieb +D2ECE8B9395E +# NSCP default key +1494E81663D7 +# +# NFC tools +7c9fb8474242 +# +# Kiev keys +569369C5A0E5 +632193BE1C3C +644672BD4AFE +8FE644038790 +9DE89E070277 +B5FF67CBA951 +EFF603E1EFE9 +F14EE7CAE863 +# +# ICT S14 A/B +9C28A60F7249 +C9826AF02794 +# +# RKF +# Västtrafiken KeyA, RKF ÖstgötaTrafiken KeyA FC00018778F7 +# +# Västtrafiken KeyA +0297927C0F77 +54726176656C +# +# Västtrafiken KeyB 00000FFE2488 +776974687573 +EE0042F88840 +# +# RKF SLKeyA +26940B21FF5D +A64598A77478 +# +# RKF SLKeyB 5C598C9C58B5 E4D2770A89BE - -# Keys from: -# http://pastebin.com/svGjN30Q -434F4D4D4F41 -434F4D4D4F42 -47524F555041 -47524F555042 -505249564141 -505249564142 - -# Keys from: -# http://pastebin.com/d7sSetef -0297927C0F77 -EE0042F88840 +# +# RKF Rejskort Danmark KeyA 722BFCC5375F +# +# RKF Rejskort Danmark KeyB F1D83F964314 - -# Keys from: -# http://pastebin.com/pvJX0xVS -54726176656C -776974687573 -4AF9D7ADEBE4 -2BA9621E0A36 - -# Keys from: -# http://pastebin.com/y3PDBWR1 +# +# RKF JOJOPRIVA KeyA +505249564141 +# +# RKF JOJOPRIVA KeyB +505249564142 +# +# RKF JOJOGROUP KeyA +47524F555041 +434F4D4D4F41 +# +# RKF JOJOGROUP KeyB +47524F555042 +434F4D4D4F42 +# +# TNP3xxx +4B0B20107CCB +# +# Access control system +605F5E5D5C5B +# +# NSP Global keys A and B (uk housing access control) +199404281970 +199404281998 +# +# Data from http://www.proxmark.org/forum/viewtopic.php?pid=25925#p25925 +# Tengo Cards Key A +FFF011223358 +FF9F11223358 +# +# Elevator system Kherson, Ukraine +AC37E76385F5 +576DCFFF2F25 +# +# Car wash system +1EE38419EF39 +26578719DCD9 +# +# more Keys from mfc_default_keys.lua 000000000001 +000000000002 +00000000000A +00000000000B +010203040506 +0123456789AB +100000000000 +111111111111 123456789ABC -B127C6F41436 12F2EE3478C1 -34D1DF9934C5 -55F5A5DD38C9 -F1A97341A9FC -33F974B42769 14D446E33363 -C934FE34D934 1999A3554A55 +200000000000 +222222222222 27DD91F1FCF1 -A94133013401 -99C636334433 +# +# Hotel system +505209016A1F +# +# Directory and eventlog KeyB +2BA9621E0A36 +# +# Directory and eventlog KeyA +4AF9D7ADEBE4 +# +# +333333333333 +33F974B42769 +34D1DF9934C5 43AB19EF5C31 -A053A292A4AF +444444444444 505249565441 505249565442 - -# Keys from: -# http://pastebin.com/TUXj17K3 -FC0001877BF7 - -# Keys from: -# http://0x9000.blogspot.com/2010/12/mifare-classic-default-keys.html -A0B0C0D0E0F0 -A1B1C1D1E1F1 - -# Keys from: -# https://code.google.com/p/mifare-key-cracker/downloads/list -BD493A3962B6 -010203040506 -111111111111 -222222222222 -333333333333 -444444444444 555555555555 +55F5A5DD38C9 666666666666 777777777777 888888888888 999999999999 +99C636334433 +A00000000000 +A053A292A4AF +A94133013401 AAAAAAAAAAAA +# +# Key from ladyada.net +ABCDEF123456 +# +# +B00000000000 +B127C6F41436 BBBBBBBBBBBB +BD493A3962B6 +C934FE34D934 CCCCCCCCCCCC DDDDDDDDDDDD EEEEEEEEEEEE -0123456789AB - -# Keys from: -# https://github.com/4ZM/mfterm/blob/master/dictionary.txt -000000000002 -00000000000A -00000000000B -100000000000 -200000000000 -A00000000000 -B00000000000 - -# Key from: -# ladyada.net -ABCDEF123456 - -# Key from: -# http://irq5.io/2013/04/13/decoding-bcard-conference-badges/ -F4A9EF2AFC6D - -# Keys from: -# https://github.com/iceman1001/proxmark -4B0B20107CCB -569369C5A0E5 -632193BE1C3C -644672BD4AFE -8FE644038790 -9DE89E070277 -B5FF67CBA951 -EFF603E1EFE9 -F14EE7CAE863 +# +# elevator +# data from forum +FFFFFF545846 +# +# +F1A97341A9FC +# +# hotel system 44AB09010845 85FED980EA5A -314B49474956 -564C505F4D41 -0263DE1278F3 -067DB45454A9 -15FC4C7613FE -16F21A82EC84 -16F3D5AB1139 -17758856B182 +# +# ARD (fr) key A +43454952534E +# ARD (fr) key B +4A2B29111213 +# +# +4143414F5250 +# +# Tehran Railway +A9B43414F585 +1FB235AC1388 +# +# Data from http://irq5.io/2013/04/13/decoding-bcard-conference-badges/ +# BCARD KeyB +F4A9EF2AFC6D +# +# +# S0 B +89EAC97F8C2A +# +# S4 A +43C7600DEE6B +# +# S6 A +0120BF672A64 +# +# S6 B +FB0B20DF1F34 +# +# +A9F953DEF0A3 +# +# Data from forum +74A386AD0A6D +3F7A5C2DBD81 +21EDF95E7433 +C121FF19F681 +3D5D9996359A +# +# Here be BIP keys... +3A42F33AF429 1FC235AC1309 -22C1BAE1AACD +6338A371C0ED 243F160918D1 -25094DF6F148 -2A3C347A1200 -324F5DF65310 +F124C2578AD0 +9AFC42372AF1 32AC3B90AC13 +682D401ABB09 +4AD1E273EAF1 +067DB45454A9 +E2C42591368A +15FC4C7613FE +2A3C347A1200 +68D30288910A +16F3D5AB1139 +F59A36A2546D +937A4FFF3011 +64E3C10394C2 35C3D2CAEE88 -3A42F33AF429 +B736412614AF +693143F10368 +324F5DF65310 +A3F97428DD01 +643FB6DE2217 +63F17A449AF0 +82F435DEDF01 +C4652C54261C +0263DE1278F3 +D49E2826664F +51284C3686A6 3DF14C8000A1 -3E3554AF0E12 +6A470D54127C +# +# Data from http://pastebin.com/AK9Bftpw +# Länstrafiken i Västerbotten +48FFE71294A0 +E3429281EFC1 +16F21A82EC84 +460722122510 +# +# 3dprinter +# EPI Envisionte +AAFB06045877 +# +# Gyms / Fitness Clubs / Health Clubs / Wellness Centres +# +# Fysiken A 3E65E4FB65B3 +# +# Fysiken B +25094DF6F148 +# +# +# https://mattionline.de/fitnessstudio-armband-reverse-engineering/ +# https://mattionline.de/milazycracker/ +# Gym Wristband A - Same as Fysiken A +# Gym Wristband B +81CC25EBBB6A +195DC63DB3A3 +# +# CleverFit +A05DBD98E0FC +# +# GoFit +AA4DDA458EBB +EAB8066C7479 +# +# Nordic Wellness A - Same as Fysiken A +# Nordic Wellness B +E5519E1CC92B +# +# Jett's 24 Hour Fitness S0 KA/B +# 049979614077 +# 829338771705 +# +# Hotel KeyCard +D3B595E9DD63 +AFBECD121004 +# +# SimonsVoss +6471A5EF2D1A +# +# ID06 +4E3552426B32 +22BDACF5A33F +6E7747394E63 +763958704B78 +# +# Onity S1 A/B +8A19D40CF2B5 +# +3961EA82C46D +# +# 24-7 +D21762B2DE3B +0E83A374B513 +1F1FFE000000 +A10F303FC879 +1322285230B8 +0C71BCFB7E72 +C3C88C6340B8 +F101622750B7 +1F107328DC8D +710732200D34 +7C335FB121B5 +B39AE17435DC +# +# key A 454841585443 -460722122510 -48FFE71294A0 -491CDCFB7752 -4AD1E273EAF1 -4B791BEA7BCC -51284C3686A6 +# +# Lift system +190819842023 +# +# Data from http://pastebin.com/gQ6nk38G +D39BB83F5297 +85675B200017 528C9DFFE28C -5EB8F884C8D1 +C82EC29E3235 +3E3554AF0E12 +491CDCFB7752 +22C1BAE1AACD 5F146716E373 -6338A371C0ED -63F17A449AF0 -643FB6DE2217 -64E3C10394C2 -682D401ABB09 -68D30288910A -693143F10368 -6A470D54127C 740E9A4F9AAF -75CCB59C9BED -75D8690F21B6 -75EDE6A84460 -82F435DEDF01 -85675B200017 -871B8C085997 -937A4FFF3011 +AC0E24C75527 97184D136233 -97D1101F18B0 -9AFC42372AF1 -A27D3804C259 -A3F97428DD01 +E444D53D359F +17758856B182 A8966C7CC54B -A9F953DEF0A3 -AAFB06045877 -AC0E24C75527 -AE3FF4EEA0DB -B0C9DD55DD4D -B736412614AF -C4652C54261C C6AD00254562 -C82EC29E3235 -D39BB83F5297 -D49E2826664F -DF27A8F1CB8E -E2C42591368A -E3429281EFC1 -E444D53D359F -F124C2578AD0 -F59A36A2546D +AE3FF4EEA0DB +5EB8F884C8D1 FEE470A4CB58 -0000000018DE -0000014B5C31 -003003003003 -003CC420001A -013889343891 -01FA3FC68349 -021209197591 -050908080008 -0A7932DC7E65 -0C669993C776 -0C71BCFB7E72 +75D8690F21B6 +871B8C085997 +97D1101F18B0 +75EDE6A84460 +DF27A8F1CB8E +B0C9DD55DD4D +# +# Data from http://bit.ly/1bdSbJl +A0B0C0D0E0F0 +A1B1C1D1E1F1 +# +# Data from msk social +2735FC181807 +2ABA9519F574 +84FD7F7A12B6 +186D8C4B93F9 +3A4BBA8ADAF0 +8765B17968A2 +40EAD80721CE +0DB5E6523F7C +51119DAE5216 +83E3549CE42D +136BDB246CAC +7DE02A7F6025 +BF23A53C1F63 +CB9A1F2D7368 +C7C0ADB3284F +9F131D8C2057 +67362D90F973 +6202A38F69E2 +100533B89331 +653A87594079 +D8A274B2E026 +B20B83CB145C +9AFA6CB4FC3D +A229E68AD9E5 +49C2B5296EF4 +# +# Data from http://pastebin.com/RRJUEDCM 0D258FE90296 -0E83A374B513 -0F230695923F -0FFBF65B5A14 -11428B5BCE06 -11428B5BCE07 -11428B5BCE08 -11428B5BCE09 -11428B5BCE0A -11428B5BCE0F -11496F97752A -123F8888F322 -1322285230B8 -1565A172770F -157B10D84C6B -157C9A513FA5 -15CAFD6159F6 -160A91D29A9C -16551D52FD20 -167A1BE102E0 -16DDCB6B3F24 -1717E34A7A8A +E55A3CA71826 +A4F204203F56 +EEB420209D0C +911E52FD7CE4 +752FBB5B7B45 +66B03ACA6EE9 +48734389EDC3 17193709ADF4 -185FA3438949 -1877ED29435A -18971D893494 -1AB23CD45EF6 1ACC3189578C -1F107328DC8D -1F1A0A111B5B -1F1FFE000000 -2031D1E57A3B -# HID Key B -204752454154 -21A600056CB0 -22729A9BD40F -2338B4913111 -2548A443DF28 -25D60050BF6E -26643965B16E +C2B7EC7D4EB1 +369A4663ACD2 +# +# Data from https://github.com/zhangjingye03/zxcardumper +# zxcard Key A/B +668770666644 +003003003003 +# +# Data from http://phreakerclub.com/forum/showthread.php?p=41266 26973EA74321 -27FBC86A00D0 -2A2C13CC242A -2A6D9205E7CA -2CB1A90071C8 -2DD39A54E1F3 -2ED3B15E7C0F -2EF720F2AF76 -2FC1F32F51B1 +71F3A315AD26 +51044EFB5AAB +AC70CA327A04 +EB0A8FF88ADE +# +# Transport system Metromoney +2803BCB0C7E1 +9C616585E26D +4FA9EB49F75E +2DADE48942C5 +A160FCD5EC4C +112233445566 +361A62F35BC9 +# +# Transport system Spain +83F3CB98C258 +070D486BC555 +A9B018868CC1 +9DCDB136110C +749934CC8ED3 +506DB955F161 +F088A85E71D7 +72B458D60363 +70C714869DC7 +B32464412EE3 +F253C30568C4 +1C68315674AC +CFE63749080A +C1E6F8AFC9EC +DD0DE3BA08A6 +3D923EB73534 +FF94F86B09A6 +D61707FFDFB1 +8223205047B6 +9951A273DEE7 +C9449301AF93 +66695A45C9FA +89AA9D743812 +C41514DEFC07 +C52876869800 +5353B3AECB53 +2E4169A5C79D +4BB747E48C2A +6285A1C8EB5C +5145C34DBA19 +25352912CD8D +81B20C274C3F +00B70875AF1D +04B787B2F3A5 +05412723F1B6 +05C301C8795A +066F5AF3CCEE +0A1B6C50E04E +0AD0956DF6EE +0AD6B7E37183 +0F3A4D48757B +1417E5671417 +18AB07270506 +18E887D625B4 +1ABC15934F5A +1AF66F83F5BE +260480290483 +2900AAC52BC3 +2910AFE15C99 +374521A38BCC +3A4C47757B07 +3A524B7A7B37 +3C4ABB877EAF +3F3A534B7B7B +4B787B273A50 +4B92DF1BF25D +4F0E4AE8051A +514B797B2F3A +529CF51F05C5 +52B26C199862 +57A18BFEC381 +5A7D87876EA8 +64CBADC7A313 +65B6C3200736 +67B1B3A4E497 +6B0454D5D3C3 +6B3B7AF45777 +6C273F431564 +702C1BF025DD +738385948494 +76E450094393 +777B1F3A4F4A +7B173A4E4976 +81504133B13C +826576A1AB68 +8A55194F6587 +8DFACF11E778 +8FD6D76742DC +9AFEE1F65742 +9D56D83658AC +9FAC23197904 +A1AB3A08712C +A514B797B373 +A58AB5619631 +A5BB18152EF1 +A777B233A4F4 +AB19BC885A29 +AB91BDA25F00 +AE98BA1E6F2C +B133A4D48757 +B3A4C47757B0 +B6803136F5AF +B793ADA6DB0C +B95BFDEBA7E4 +C0AA2BBD27CD +C27F5C1A9C2B +C9BE49675FE4 +CCCE24102003 +CDE668FDCDBA +D23A31A4AAB9 +DEDD7688BC38 +E9AE90885C39 +F0A3C5182007 +F3A524B7A7B3 +# +# Data from mall +# playland balikesir +ABBA1234FCB0 +# +# A trio bowling bahcelievler +314F495254FF +4152414B4E41 +# +# karinca park nigde +4E474434FFFF +# +# hotel system +537930363139 +# +# Data from https://github.com/RadioWar/NFCGUI +44DD5A385AAF +21A600056CB0 +B1ACA33180A5 +DD61EB6BCE22 +1565A172770F +3E84D2612E2A +F23442436765 +79674F96C771 +87DF99D496CB +C5132C8980BC +A21680C27773 +F26E21EDCEE2 +675557ECC92E +F4396E468114 +6DB17C16B35B +4186562A5BB2 2FEAE851C199 -3060206F5B0A -31646241686C -321958042333 +DB1A3338B2EB +157B10D84C6B +A643F952EA57 +DF37DCB6AFB3 +4C32BAF326E0 +91CE16C07AC5 +3C5D1C2BCD18 +C3F19EC592A2 +F72A29005459 +185FA3438949 321A695BD266 -340E40F81CD8 -345547514B4D -356D46474348 -369A4663ACD2 -36ABF5874ED7 -374BF468607F +D327083A60A7 +45635EF66EF3 +5481986D2D62 +CBA6AE869AD5 +645A166B1EEB +A7ABBC77CC9E +F792C4C76A5C +BFB6796A11DB +# +# Data from Salto A/B +6A1987C40A21 +7F33625BC129 +6BE9314930D8 +# +# Data from forum +2338B4913111 +# +# Data from stoye +CB779C50E1BD +A27D3804C259 +003CC420001A +F9861526130F 381ECE050FBD -386B4D634A65 -38FCF33072E0 -3A09594C8587 -3B7E4FD575AD -3C5D1C2BCD18 -3E84D2612E2A -3FA7217EC575 -410B9B40B872 +A57186BDD2B9 +48C739E21A04 +36ABF5874ED7 +649D2ABBBD20 +BBE8FFFCF363 +AB4E7045E97D +340E40F81CD8 +E4F65C0EF32C +D2A597D76936 +A920F32FE93A +86AFD95200F7 +9B832A9881FF +26643965B16E +0C669993C776 +B468D1991AF9 +D9A37831DCE5 +2FC1F32F51B1 +0FFBF65B5A14 +C5CFE06D9EA3 +C0DECE673829 +# +# +A56C2DF9A26D +# +# Data from https://pastebin.com/vbwast74 +68D3F7307C89 +# +# Smart Rider. Western Australian Public Transport Cards +568C9083F71C +117E5C165B10 +24BB421C7973 +3E3A546650EA +41F262D3AB66 +514956AB3142 +863933AE8388 +# +# Bangkok metro key +97F5DA640B18 +# +# Metro Valencia key +A8844B0BCA06 +# +# HTC Eindhoven key +857464D3AAD1 +# +# Vigik Keys +# Various sources : +# * https://github.com/DumpDos/Vigik +# * http://newffr.com/viewtopic.php?&forum=235&topic=11559 +# * Own dumps +# +# French VIGIK +# VIGIK1 A +314B49474956 +# +# VIGIK1 B +564C505F4D41 +BA5B895DA162 +# +# BTCINO UNDETERMINED SPREAKD 0x01->0x13 key +021209197591 +# +# +2EF720F2AF76 414C41524F4E -415A54454B4D -4186562A5BB2 424C41524F4E -425A73484166 -436A46587552 -447AB7FD5A6B -44DD5A385AAF -44F0B5FBE344 -45635EF66EF3 -476242304C53 -484558414354 -# HID Key A -484944204953 -484A57696F4A -48734389EDC3 -48C739E21A04 -49FAE4E3849F 4A6352684677 -4C32BAF326E0 -4C6B69723461 -4C961F23E6BE -4D3248735131 -4D5076656D58 -4E32336C6E38 -4E4175623670 -4F9F59C9C875 -509359F131B1 -51044EFB5AAB -5106CA7E4A69 -513C85D06CDE -52264716EFDE +BF1F4424AF76 536653644C65 -53C11F90822A -543B01B27A95 -5481986D2D62 -5544564E6E67 -564777315276 -568C9083F71C -57734F6F6974 -57784A533069 -584F66326877 -5A1B85FCE20A -5EC39B022F2B -623055724556 -62387B8D250D -6245E47352E6 -62CED42A6D87 +# +# Intratone Cogelec +# Data from http://bouzdeck.com/rfid/32-cloning-a-mifare-classic-1k-tag.html +484558414354 +A22AE129C013 +49FAE4E3849F +38FCF33072E0 +8AD5517B4B18 +509359F131B1 +6C78928E1317 +AA0720018738 +A6CAC2886412 62D0C424ED8E -62EFD80AB715 -645A166B1EEB -649D2ABBBD20 -666E564F4A44 -668770666644 -66B03ACA6EE9 +E64A986A5D94 +8FA1D601D0A2 +89347350BD36 66D2B7DC39EF -66F3ED00FED7 -67546972BC69 -675557ECC92E -686A736A356E -68D3F7307C89 -69FB7B7CD8EE -6A1987C40A21 -6A676C315142 -6A696B646631 -6B6579737472 6BC1E1AE547D -6C78928E1317 -6C94E1CED026 -6D44B5AAF464 +22729A9BD40F +# +# Data from https://dfir.lu/blog/cloning-a-mifare-classic-1k-tag.html +925B158F796F +FAD63ECB5891 +BBA840BA1C57 +CC6B3B3CD263 +6245E47352E6 +8ED41E8B8056 +2DD39A54E1F3 6D4C5B3658D2 -6D4E334B6C48 -6DB17C16B35B -6F4B6D644178 -6F506F493353 +1877ED29435A +52264716EFDE +961C0DB4A7ED 703140FD6D86 -70564650584F -710732200D34 -71F3A315AD26 -744E326B3441 -752FBB5B7B45 -756EF55E2507 -77494C526339 -77646B633657 +157C9A513FA5 +E2A5DC8E066F +# +# Data from forum, schlage 9691T fob +EF1232AB18A0 +# +# Data from a oyster card +374BF468607F +BFC8E353AF63 +15CAFD6159F6 +62EFD80AB715 +987A7F7F1A35 +C4104FA3C526 +4C961F23E6BE +67546972BC69 +F4CD5D4C13FF +94414C1A07DC +16551D52FD20 +9CB290282F7D 77A84170B574 -79674F96C771 +ED646C83A4F3 +E703589DB50B +513C85D06CDE +95093F0B2E22 +543B01B27A95 +C6D375B99972 +EE4CC572B40E +5106CA7E4A69 +C96BD1CE607F +167A1BE102E0 +A8D0D850A606 +A2ABB693CE34 7B296C40C486 +91F93A5564C9 +E10623E7A016 +B725F9CBF183 +# +# Data from FDi tag +8829DA9DAF76 +# +# Data from GitHub issue +0A7932DC7E65 +11428B5BCE06 +11428B5BCE07 +11428B5BCE08 +11428B5BCE09 +11428B5BCE0A +11428B5BCE0F +18971D893494 +25D60050BF6E +44F0B5FBE344 7B296F353C6B -7C335FB121B5 -7F33625BC129 8553263F4FF0 -8697389ACA26 -86AFD95200F7 -87DF99D496CB -8829DA9DAF76 -89347350BD36 -8AD5517B4B18 8E5D33A6ED51 -8ED41E8B8056 -8FA1D601D0A2 -911E52FD7CE4 -9189449EA24E -91CE16C07AC5 -91F93A5564C9 -925B158F796F -92EE4DC87191 -932B9CB730EF -94414C1A07DC -95093F0B2E22 -961C0DB4A7ED -987A7F7F1A35 -9B832A9881FF -9CB290282F7D -9DC282D46217 9F42971E8322 -A10F303FC879 -A21680C27773 -A22AE129C013 -A2ABB693CE34 -A4F204203F56 -A56C2DF9A26D -A57186BDD2B9 -A643F952EA57 -A6CAC2886412 -A7ABBC77CC9E -A8D0D850A606 -A920F32FE93A -AA0720018738 -AB4E7045E97D -AC70CA327A04 -AD4FB33388BF -AD9E0A1CA2F7 -AFD0BA94D624 -B1ACA33180A5 -B35A0E4ACC09 -B39AE17435DC -B468D1991AF9 -B578F38A5C61 -B725F9CBF183 -B7BF0C13066E -B8A1F613CF3D -BA5B895DA162 -BBA840BA1C57 -BBE8FFFCF363 -BEDB604CC9D1 -BF1F4424AF76 -BFB6796A11DB -BFC8E353AF63 -C0C1C2C3C4C5 -C0DECE673829 -C2B7EC7D4EB1 -C3C88C6340B8 -C3F19EC592A2 -C4104FA3C526 -C5132C8980BC -C5CFE06D9EA3 C620318EF179 -C6D375B99972 -C96BD1CE607F -CB779C50E1BD -CBA6AE869AD5 -CC6B3B3CD263 -D0D1D2D3D4D5 -D21762B2DE3B -D2A597D76936 -D327083A60A7 D4FE03CE5B06 D4FE03CE5B07 D4FE03CE5B08 D4FE03CE5B09 D4FE03CE5B0A D4FE03CE5B0F -D58023BA2BDC -D9A37831DCE5 -DB1A3338B2EB -DD61EB6BCE22 -DF37DCB6AFB3 -E10623E7A016 E241E8AFCBAF -E2A5DC8E066F -E4F65C0EF32C -E55A3CA71826 -E64A986A5D94 -E703589DB50B -EB0A8FF88ADE -EC0A9B1A9E06 -ED646C83A4F3 -EE4CC572B40E -EEB420209D0C -F101622750B7 -F1B9F5669CC8 -F23442436765 -F238D78FF48F -F26E21EDCEE2 -F4396E468114 -F4CD5D4C13FF -F662248E7E89 -F72A29005459 -F792C4C76A5C +# Transport system Argentina - SUBE +# Shared key - sec 3 blk 15 +3FA7217EC575 +# +# Data from forum post +123F8888F322 +050908080008 +# +# Data from hoist +4F9F59C9C875 +# +# Data from pastebin +66F3ED00FED7 F7A39753D018 -F9861526130F -FAD63ECB5891 - -# Some keys of https://w3bsit3-dns.com and https://ikey.ru -BC4580B7F20B -8E26E45E7D65 -A7141147D430 -18E3A02B5EFF -E328A1C7156D -8A8D88151A00 -7A86AA203788 -72F96BDD3714 -C76BF71A2509 -1B61B2E78C75 -045CECA15535 -6B07877E2C5C -0CE7CD2CC72B -EA0FD73CB149 -B81F2B0C2F66 -BB52F8CCE07F -46D78E850A7E -E4821A377B75 -8791B2CCB5C4 -D5524F591EED -BAFF3053B496 -0F318130ED18 -42E9B54E51AB -7413B599C4EA -9EA3387A63C1 -B27ADDFB64B0 -E56AC127DD45 -0BE5FAC8B06A -FD8705E721B0 -7259FA0197C6 -22052B480D11 -9D993C5D4EF4 -C65D4EAA645B -0EB23CC8110B -3A8A139C20B4 -19FC84A3784B -0F01CEFF2742 -A3FAA6DAFF67 -BC2D1791DEC1 -7A396F0D633D -ACFFFFFFFFFF -77DABC9825E1 -518DC6EEA089 -044CE1872BC3 -114D6BE9440C -AFCEF64C9913 - +# +# Data from https://pastebin.com/Z7pEeZif +386B4D634A65 +666E564F4A44 +564777315276 +476242304C53 +6A696B646631 +4D3248735131 +425A73484166 +57784A533069 +345547514B4D +4C6B69723461 +4E4175623670 +4D5076656D58 +686A736A356E +484A57696F4A +6F4B6D644178 +744E326B3441 +70564650584F +584F66326877 +6D4E334B6C48 +6A676C315142 +77494C526339 +623055724556 +356D46474348 +4E32336C6E38 +57734F6F6974 +436A46587552 +5544564E6E67 +6F506F493353 +31646241686C +77646B633657 +# +# Data from TransPert +2031D1E57A3B +53C11F90822A +9189449EA24E +# +# data from Github +410B9B40B872 +2CB1A90071C8 +# +# +8697389ACA26 +1AB23CD45EF6 +013889343891 +# +# +0000000018DE +16DDCB6B3F24 +# +# Data from https://pastebin.com/vwDRZW7d +# Vingcard Mifare 4k Staff card +EC0A9B1A9E06 +6C94E1CED026 +0F230695923F +0000014B5C31 +# +# +BEDB604CC9D1 +B8A1F613CF3D +B578F38A5C61 +B66AC040203A +6D0B6A2A0003 +2E641D99AD5B +AD4FB33388BF +69FB7B7CD8EE +# +# Hotel +2A6D9205E7CA +13B91C226E56 +# +# KABA Hotel Locks +2A2C13CC242A +# +# +27FBC86A00D0 +01FA3FC68349 +# +# Smart Rider. Western Australian Public Transport Cards +6D44B5AAF464 +1717E34A7A8A +# +# RFIDeas +6B6579737472 +# +# HID MIFARE Classic 1k Key +484944204953 +204752454154 +# HID MIFARE SO +3B7E4FD575AD +11496F97752A +# +# Luxeo/Aztek cashless vending +415A54454B4D +# +# BQT +321958042333 +# +# Aperio KEY_A Sector 1, 12, 13, 14, 15 Data Start 0 Length 48 +160A91D29A9C +# +# Gallagher +B7BF0C13066E +# +# PIK Comfort Moscow keys (ISBC Mifare Plus SE 1K) +009FB42D98ED +002E626E2820 +# +# Boston, MA, USA Transit - MBTA Charlie Card +3060206F5B0A +5EC39B022F2B +3A09594C8587 +F1B9F5669CC8 +F662248E7E89 +62387B8D250D +F238D78FF48F +9DC282D46217 +AFD0BA94D624 +92EE4DC87191 +B35A0E4ACC09 +756EF55E2507 +447AB7FD5A6B +932B9CB730EF +1F1A0A111B5B +AD9E0A1CA2F7 +D58023BA2BDC +62CED42A6D87 +2548A443DF28 +2ED3B15E7C0F +F66224EE1E89 +# +# +60012E9BA3FA +# +# +DE1FCBEC764B +81BFBE8CACBA +BFF123126C9B +2F47741062A0 +B4166B0A27EA +A170D9B59F95 +400BC9BE8976 +D80511FC2AB4 +1FCEF3005BCF +BB467463ACD6 +E67C8010502D +FF58BA1B4478 +# +# Data from https://pastebin.com/Kz8xp4ev +FBF225DC5D58 +# +# Data https://pastebin.com/BEm6bdAE +# vingcard.txt +# Note: most likely diversified +96A301BCE267 +4708111C8604 +3D50D902EA48 +6700F10FEC09 +7A09CC1DB70A +560F7CFF2D81 +66B31E64CA4B +9E53491F685B +3A09911D860C +8A036920AC0C +361F69D2C462 +D9BCDE7FC489 +0C03A720F208 +6018522FAC02 +# +# Data from https://pastebin.com/4t2yFMgt +# Mifare technische Universität Graz TUG +D58660D1ACDE +50A11381502C +C01FC822C6E5 +0854BF31111E +# +# More keys - Found 8A at Sebel Hotel in Canberra, Australia +AE8587108640 +# +# SafLock standalone door locks +135B88A94B8B +# # Russian Troika card +EC29806D9738 08B386463229 0E8F64340BA4 0F1C63013DBA @@ -587,693 +1059,698 @@ EAAC88E5DC99 F8493407799D 6B8BD9860763 D3A297DC2698 -FBF225DC5D58 -# Strelka extension +# +# Data from reddit +34635A313344 +593367486137 +# +# Keys from Mifare Classic Tool project +044CE1872BC3 +045CECA15535 +0BE5FAC8B06A +0CE7CD2CC72B +0EB23CC8110B +0F01CEFF2742 +0F318130ED18 +114D6BE9440C +18E3A02B5EFF +19FC84A3784B +1B61B2E78C75 +22052B480D11 3367BFAA91DB +3A8A139C20B4 +42E9B54E51AB +46D78E850A7E 4B609876BBA3 -5C83859F2224 -66B504430416 -70D1CF2C6843 +518DC6EEA089 +6B07877E2C5C +7259FA0197C6 +72F96BDD3714 +7413B599C4EA +77DABC9825E1 +7A396F0D633D +7A86AA203788 +8791B2CCB5C4 +8A8D88151A00 8C97CD7A0E56 +8E26E45E7D65 +9D993C5D4EF4 +9EA3387A63C1 +A3FAA6DAFF67 +A7141147D430 +ACFFFFFFFFFF +AFCEF64C9913 +B27ADDFB64B0 +B81F2B0C2F66 B9F8A7D83978 -C4B3BD0ED5F1 -C4D3911AD1B3 -CAD7D4A6A996 -DA898ACBB854 -FEA1295774F9 - -# Moscow public toilets card -807119F81418 -22C8BCD10AAA -0AAABA420191 -E51B4C22C8BC -DBF9F79AB7A2 -34EDE51B4C22 -C8BCD10AAABA -BCD10AAABA42 - -# Moscow social card -2735FC181807 -2ABA9519F574 -84FD7F7A12B6 -186D8C4B93F9 -3A4BBA8ADAF0 -8765B17968A2 -40EAD80721CE -0DB5E6523F7C -51119DAE5216 -83E3549CE42D -136BDB246CAC -2F87F74090D1 -E53EAEFE478F -CE2797E73070 -328A034B93DB -81E1529AE22B -FC55C50E579F -1A72E2337BC3 -5DB52676BE07 -F64FBF085098 -8FE758A8F039 -BB1484CC155D -41990A529AE2 -CD2E9EE62F77 -69C1327AC20B -3C9C0D559DE5 -67BF3880C811 -48A01159A1E9 -2B83FB448CD4 -F24BBB044C94 -7DE02A7F6025 -BF23A53C1F63 -CB9A1F2D7368 -C7C0ADB3284F -9F131D8C2057 -67362D90F973 -6202A38F69E2 -100533B89331 -653A87594079 -D8A274B2E026 -B20B83CB145C -9AFA6CB4FC3D -94F46DB5FD46 -C31C8CD41D65 -BB1684CC155D -CA2393DB246C -1D75E52E76BE -81D9529AE223 -0159C9125AA2 -52AA1B6BB3FB -97EF60A8F031 -6FC73888D011 -3A92FA438BD3 -74CC3D85CD0E -025ACA1B63A3 -AF0878C81151 -9BFB6CB4FC45 -F750C0095199 -075FCF1860A8 -2686EE3F87C7 -277FEF3880C0 -82DA4B93DB1C -9CF46DB5FD46 -93EB64ACF43D - -# Keys from RfidResearchGroup proxmark3 project -# https://github.com/RfidResearchGroup/proxmark3/blob/master/client/dictionaries/mfc_default_keys.dic -0854BF31111E -0C03A720F208 -135B88A94B8B -1FCEF3005BCF -2F47741062A0 -361F69D2C462 -3A09911D860C -3D50D902EA48 -400BC9BE8976 -4708111C8604 -50A11381502C -560F7CFF2D81 -60012E9BA3FA -6018522FAC02 -66B31E64CA4B -6700F10FEC09 -7A09CC1DB70A -81BFBE8CACBA -8A036920AC0C -8A19D40CF2B5 -96A301BCE267 -9E53491F685B -A170D9B59F95 -AE8587108640 -B4166B0A27EA -BB467463ACD6 -BFF123126C9B -C01FC822C6E5 -D58660D1ACDE -D80511FC2AB4 -D9BCDE7FC489 -DE1FCBEC764B -E67C8010502D -FF58BA1B4478 - -C1E51C63B8F5 -4143414F5250 -474249437569 +BAFF3053B496 +BB52F8CCE07F +BC2D1791DEC1 +BC4580B7F20B +C65D4EAA645B +C76BF71A2509 +D5524F591EED +E328A1C7156D +E4821A377B75 +E56AC127DD45 +EA0FD73CB149 +FC0001877BF7 +FD8705E721B0 +00ADA2CD516D +518108E061E2 +558AAD64EB5B +001122334455 +6CA761AB6CA7 +B1C4A8F7F6E3 +FF75AFDA5A3C +FCDDF7767C10 +A6B3F6C8F1D4 +# +# +237A4D0D9119 +0ED7846C2BC9 +FFFFD06F83E3 +FFFFAE82366C +F89C86B2A961 +F83466888612 +ED3A7EFBFF56 +E96246531342 +E1DD284379D4 +DFED39FFBB76 +DB5181C92CBE +CFC738403AB0 +BCFE01BCFE01 +BA28CFD15EE8 B0699AD03D17 -B18CDCDE52B7 -3864FCBA5937 -85A438F72A8A -C342F825B01B -C6A76CB2F3B5 -323334353637 -43C7600DEE6B -D01AFEEB890A -26396F2042E7 -F3F0172066B2 -BB320A757099 -00F0BD116D70 -25094DF2C1BD -E41E6199318F -F00DFEEDD0D0 -6D9B485A4845 -71171A82D951 -62711F1A83E9 -1711B1A82E96 -F3864FCCA693 -7B7E752B6A2D -2012053082AD -9AEDF9931EC1 -B9C874AE63D0 -83BAB5ACAD62 -A541538F1416 -4A2B29111213 -D31463A7AB6D -AD5645062534 -B069D0D03D17 -30FFB6B056F5 -D7744A1A0C44 -D1991E71E2C5 -1795902DBAF9 -4243414F5250 -C554EF6A6015 -A5524645CD91 -200306202033 -A00003000084 -CEE3632EEFF5 -F0F0172066B2 -B021669B44BB -3F1A87298691 +AABBCC660429 +A4EF6C3BB692 A2B2C9D187FB -4B511F4D28DD -E3AD9E9BA5D4 -B3630C9F11C8 -F83466888612 -857464D3AAD1 -A2A3CCA2A3CC -35D850D10A24 -B2F170172066 -0D8CA561BDF3 -05F89678CFCF -850984712F1A -21EDF95E7433 -172066B2F2F0 -6B2F1B017206 -363119000001 -23D4CDFF8DA3 -EF4C5A7AC6FC -123456ABCDEF +9B1DD7C030A1 +9AEDF9931EC1 8F9B229047AC -E96246531342 +872B71F9D15A +833FBD3CFE51 5D293AFC8D7E -AABBCC660429 -63FCA9492F38 -354A787087F1 +5554AAA96321 +474249437569 +435330666666 +1A2B3C4D5E6F +123456ABCDEF +83BAB5ACAD62 +64E2283FCF5E +64A2EE93B12B +46868F6D5677 40E5EA1EFC00 -675A32413770 -12FD3A94DF0E -C4F271F5F0B3 -4A306E62E9B6 -4CFF128FA3EF -0000085F0000 -0F385FFB6529 -FA38F70215AD -904735F00F9E -B66AC040203A -BCFE01BCFE01 -2FCA8492F386 -237A4D0D9119 -E6849FCC324B -0ED7846C2BC9 -1FB235AC1388 -EA1B88DF0A76 -C9739233861F -89EAC97F8C2A -D964406E67B4 -563A22C01FC8 -DB5181C92CBE -1E352F9E19E5 -6291B3860FC8 -A9A4045DCE77 -434456495243 -B5F454568271 -491CDC863104 -4D8B8B95FDEE -AFBECD121004 -4D48414C5648 -E1DD284379D4 -AFBECD120454 -CFC738403AB0 -0AF7DB99AEE4 -772219470B38 -EF61A3D48E2A -4A4C474F524D -0172066B2F03 -3D5D9996359A -66A163BA82B4 +37D4DCA92451 +2012053082AD 2011092119F1 -BB2C0007D022 -1494E81663D7 -590BD659CDD2 -A6C028A12FBB -BCF5A6B5E13F -A2F63A485632 -39CF885474DD -D2ECE8B9395E +200306202033 +1795902DBAF9 17505586EF02 -70172066B2F0 -B385EFA64290 -B7C344A36D88 -010000000000 -2F130172066B -DFED39FFBB76 -3F7A5C2DBD81 -DFE73BE48AC6 -FB0B20DF1F34 -913385FFB752 -2066B2F27017 -91FF18E63887 -0734BFB93DAB -97F5DA640B18 -B42C4DFD7A90 -C121FF19F681 -BE7C4F6C7A9A -FE04ECFE5577 -18F34C92A56E -0BB31DC123E5 -0E0E8C6D8EB6 -1CFA22DBDFC3 -0F1A81C95071 -AA4D051954AC -9F9D8EEDDCCE -863FCB959373 -98631ED2B229 -A23456789123 -833FBD3CFE51 -AB28A44AD5F5 -74A386AD0A6D -4C60F4B15BA8 022FE48B3072 -97271231A83F -385EFA542907 -066B2F230172 -BA729428E808 -BDF837787A71 -A05DBD98E0FC -395244733978 -9B1DD7C030A1 -2C9F3D45BA13 -1DB710648A65 -E65B66089AFC -A85198481331 -5A12F83326E7 -A7D71AC06DC2 -64E2283FCF5E -FFFFAE82366C -10F3BEBC01DF -00ADA2CD516D +013940233313 +# +# Hotel Adina +9EBC3EB37130 +# +# Misc. keys from hotels & library cards in Germany +914f57280ce3 +324a82200018 +370aee95cd69 +2e032ad6850d +1feda39d38ec +288b7a34dbf8 +0965e3193497 +18c628493f7f +064d9423938a +995fd2a2351e +7c7d672bc62e +217250fb7014 +ae7478ccaee7 +abbf6d116eaf +05862c58edfb +e43b7f185460 +6a59aa9a959b +b79e5b175227 +7bc9ebb8274b +b2afbf2331d4 +223e5847dd79 +640524d2a39b +aee297cb2fd6 +3da5dfa54604 +0cf1a2aa1f8d +# +# most likely diversifed individual keys. +# data from https://github.com/korsehindi/proxmark3/commit/24fdbfa9a1d5c996aaa5c192bc07e4ab28db4c5c +491CDC863104 +A2F63A485632 +98631ED2B229 +19F1FFE02563 +# +# Argentina +563A22C01FC8 +43CA22C13091 +25094DF2C1BD +# +# OMNITEC.ES HOTEL TIMECARD / MAINTENANCECARD +AFBECD120454 +# +# OMNITEC.ES HOTEL EMERGENCYCARD +842146108088 +# +# TAPCARD PUBLIC TRANSPORT LA +EA1B88DF0A76 +D1991E71E2C5 +05F89678CFCF +D31463A7AB6D +C38197C36420 +772219470B38 +1C1532A6F1BC +FA38F70215AD +E907470D31CC +160F4B7AB806 1D28C58BBE8A -6936C035AE1B -AC45AD2D620D -64A2EE93B12B -A9F95891F0A4 -E45230E7A9E8 -A7FB4824ACBF -223C3427108A -58AC17BF3629 -535F47D35E39 -10F2BBAA4D1C -A0004A000036 -3F3865FCCB69 -0B0172066B2F -4098653289D3 -BA28CFD15EE8 -A22647F422AE -99858A49C119 -29173860FC76 -1A80B93F7107 -1A2B3C4D5E6F +B3830B95CA34 +6A0E215D1EEB +E41E6199318F +C4F271F5F0B3 +1E352F9E19E5 +0E0E8C6D8EB6 +C342F825B01B +CB911A1A1929 +E65B66089AFC +B81846F06EDF +37FC71221B46 +880C09CFA23C +6476FA0746E7 +419A13811554 2C60E904539C +4ECCA6236400 +10F2BBAA4D1C +4857DD68ECD9 +C6A76CB2F3B5 +E3AD9E9BA5D4 6C9EC046C1A4 -FC9839273862 -1C1532A6F1BC -09800FF94AAF -FFFFD06F83E3 -0B83797A9C64 -13B91C226E56 -A4EF6C3BB692 -000000270000 -A00002000021 -872B71F9D15A +# +# ROC HIGHSCHOOL ACCESSCARD +B021669B44BB +B18CDCDE52B7 +A22647F422AE +B268F7C9CA63 A37A30004AC9 -B1A862985913 +B3630C9F11C8 A4CDFF3B1848 -2E641D99AD5B -827ED62B31A7 -CD212889C3ED -B1A80C94F710 -CB911A1A1929 +B42C4DFD7A90 +A541538F1416 +B5F454568271 +A6C028A12FBB +B6323F550F54 +A7D71AC06DC2 +B7C344A36D88 A844F4F52385 -C0BEEFEC850B -5C8FF9990DA2 -160F4B7AB806 -B8937130B6BA -66B2F1F01720 -82D58AA49CCB -A9B43414F585 -C38197C36420 -0172066B2F33 -434143445649 -34B16CD59FF8 -5A7A52D5E20D -6471A5EF2D1A -F57F410E18FF -3B0172066B2F -E907470D31CC B8457ACC5F5D -67CC03B7D577 -A8844B0BCA06 -435330666666 -B47058139187 -46868F6D5677 -C27D999912EA -37FC71221B46 -F97371271A84 +A9A4045DCE77 +B9B8B7B6B5B3 +AA4D051954AC +BA729428E808 +AB28A44AD5F5 +BB320A757099 +AC45AD2D620D +BCF5A6B5E13F +AD5645062534 +BDF837787A71 AE43F36C1A9A +BE7C4F6C7A9A 5EC7938F140A -AA734D2F40E0 -A5A4A3A2A1A0 -70172066B2F3 +82D58AA49CCB +# +# MELON CARD +323334353637 +# +# +CEE3632EEFF5 +827ED62B31A7 03EA4053C6ED +C0BEEFEC850B +F57F410E18FF +0AF7DB99AEE4 +A7FB4824ACBF +207FFED492FD +1CFA22DBDFC3 +30FFB6B056F5 +39CF885474DD +00F0BD116D70 +4CFF128FA3EF +10F3BEBC01DF +# +# Transportes Insular La Palma +0172066B2F03 +0000085F0000 +1A80B93F7107 +70172066B2F0 +B1A80C94F710 +0B0172066B2F +0F1A81C95071 +F0F0172066B2 +1131A81D9507 +2F130172066B +71171A82D951 +B2F170172066 +1711B1A82E96 +6B2F1B017206 +62711F1A83E9 +66B2F1F01720 +97271231A83F +066B2F230172 +F97371271A84 +2066B2F27017 +50983712B1A8 +72066B2F2B01 +850984712F1A +172066B2F2F0 +A85198481331 +0172066B2F33 +1A8619858137 +70172066B2F3 +B1A862985913 +3B0172066B2F +3F1A87298691 +F3F0172066B2 +# +# Tehran ezpay +38A88AEC1C43 +CBD2568BC7C6 +7BCB4774EC8F +22ECE9316461 +AE4B497A2527 +EEC0626B01A1 +2C71E22A32FE +91142568B22F +7D56759A974A +D3B1C7EA5C53 +41C82D231497 +0B8B21C692C2 +604AC8D87C7E +8E7B29460F12 +BB3D7B11D224 +# +# Chaco +B210CFA436D2 +B8B1CFA646A8 +A9F95891F0A4 +# +# Keys from APK application "Scan Badge" +4A4C474F524D +444156494442 +434143445649 +434456495243 +A00002000021 +EF61A3D48E2A +A23456789123 +010000000000 +363119000001 +A00003000084 +675A32413770 +395244733978 +A0004A000036 +2C9F3D45BA13 +4243414F5250 +DFE73BE48AC6 +# +# +B069D0D03D17 +000131B93F28 +# +# From the DFW Area, TX, USA +A506370E7C0F +26396F2042E7 +70758FDD31E0 +9F9D8EEDDCCE 06FF5F03AA1A -5554AAA96321 -0120BF672A64 -87291F3861FC -9EBC3EB37130 +4098653289D3 +904735F00F9E B4C36C79DA8D -43CA22C13091 -6D0B6A2A0003 -FB6C88B7E279 -013940233313 -7DD399D4E897 -ED3A7EFBFF56 68F9A1F0B424 -6476FA0746E7 -1A8619858137 -1131A81D9507 +5A85536395B3 +7DD399D4E897 +EF4C5A7AC6FC +B47058139187 8268046CD154 -4857DD68ECD9 +67CC03B7D577 +# +# From the HTL Mödling, NÖ, AT +A5524645CD91 +D964406E67B4 +99858A49C119 +7B7E752B6A2D +C27D999912EA +66A163BA82B4 +4C60F4B15BA8 +# +# CAFE + CO, AT +35D850D10A24 +4B511F4D28DD +E45230E7A9E8 +535F47D35E39 +FB6C88B7E279 +# +# Metro Card, AT +223C3427108A +# +# Unknown, AT +23D4CDFF8DA3 +E6849FCC324B +12FD3A94DF0E +# +# Unknown, AT +0B83797A9C64 +39AD2963D3D1 +# +# Hotel Berlin Classic room A KEY +34B16CD59FF8 +# +# Hotel Berlin Classic room B KEY +BB2C0007D022 +# +# Coinmatic laundry Smart card +# data from: https://pastebin.com/XZQiLtUf +0734BFB93DAB +85A438F72A8A +# +# Data from forum, Chinese hotel +58AC17BF3629 B62307B62307 -C6C866AA421E -F66224EE1E89 -4ECCA6236400 -72066B2F2B01 +# +# +A2A3CCA2A3CC +# +# Granada, ES Transport Card +000000270000 +0F385FFB6529 +29173860FC76 +2FCA8492F386 +385EFA542907 +3864FCBA5937 +3F3865FCCB69 +6291B3860FC8 +63FCA9492F38 +863FCB959373 +87291F3861FC +913385FFB752 +B385EFA64290 +C9739233861F +F3864FCCA693 +FC9839273862 +# +# various hotel keys 34D3C568B348 -000131B93F28 -419A13811554 -B6323F550F54 -F89C86B2A961 -B268F7C9CA63 -B8B1CFA646A8 -4D57414C5648 -6A0E215D1EEB -70758FDD31E0 -37D4DCA92451 -444156494442 -B210CFA436D2 -207FFED492FD +91FF18E63887 +4D8B8B95FDEE +354A787087F1 +4A306E62E9B6 +B9C874AE63D0 +# +# Data from official repo +F00DFEEDD0D0 +0BB31DC123E5 7578BF2C66A9 -50983712B1A8 -5A85536395B3 -B81846F06EDF -842146108088 -19F1FFE02563 -D3B595E9DD63 -B3830B95CA34 -A506370E7C0F -880C09CFA23C -43454952534E -39AD2963D3D1 -B9B8B7B6B5B3 +CD212889C3ED +6936C035AE1B +C6C866AA421E +590BD659CDD2 +AA734D2F40E0 +09800FF94AAF +5A12F83326E7 +C554EF6A6015 +0D8CA561BDF3 +B8937130B6BA +D7744A1A0C44 82908B57EF4F - -C67BEB41FFBF -2AFFD6F88B97 -E77952748484 -988ACDECDFB0 -605F5E5D5C5B -42EF7BF572AB -4087C6A75A96 -AADE86B1F9C1 -5EA088C824C9 -120D00FFFFFF +FE04ECFE5577 +# +# comfort inn hotel +4D57414C5648 +4D48414C5648 +# +# unknown hotel key +6D9B485A4845 +# +# Bosch Solution 6000 +5A7A52D5E20D +# +# Found in TagInfo app +# RATB key +C1E51C63B8F5 +1DB710648A65 +# E-GO card key +18F34C92A56E +# +# Library Card MFP - SL1 +4A832584637D CA679D6291B0 +30D9690FC5BC +5296C26109D4 +E77952748484 +91C2376005A1 +30B7680B2BC9 E2A9E88BFE16 -0A4600FF00FF 43B04995D234 -0602721E8F06 +AADE86B1F9C1 +5EA088C824C9 +C67BEB41FFBF +B84D52971107 +52B0D3F6116E +# +# Data from https://pastebin.com/cLSQQ9xN +CA3A24669D45 +4087C6A75A96 +403F09848B87 +D73438698EEA 5F31F6FCD3A0 -4AE23A562A80 A0974382C4C5 -91C2376005A1 -FEE2A3FBC5B6 -2602FFFFFFFF -CA3A24669D45 -A9F3F289B70C -B84D52971107 -274E6101FC5E -00DD300F4F10 -F7BA51A9434E -4A832584637D -B16B2E573235 A82045A10949 -FC0B50AF8700 -403F09848B87 +# +# Data from https://pastebin.com/2iV8h93h +# +# funnivarium +# forum ankara +2602FFFFFFFF +# +# macera adasi +# ankara kentpark +# INACTIVE +0A4600FF00FF DFF293979FA7 -4118D7EF0902 -30B7680B2BC9 -52B0D3F6116E -5296C26109D4 -DB6819558A25 4D6F62692E45 +4118D7EF0902 +# +# petrol ofisi +# positive card +# ode-gec 0406080A0C0E +# +# konya elkart +988ACDECDFB0 +120D00FFFFFF +# +# bowlingo +# serdivan avym +4AE23A562A80 +# +# kart 54 +2AFFD6F88B97 +A9F3F289B70C +DB6819558A25 6130DFA578A0 -30D9690FC5BC -D73438698EEA +B16B2E573235 +42EF7BF572AB +274E6101FC5E +# +# crazy park +# kizilay avm +00DD300F4F10 +# +# kartsistem B +FEE2A3FBC5B6 +# +# toru ent +# taurus avm 005078565703 - -7C87013A648A -9E7168064993 -45FEE09C1D06 -734EBE504CE8 -E592ED478E59 -C229CE5123D5 -240F0BB84681 -D8BA1AA9ABA0 -865B6472B1C0 -974A36E2B1BA -57D83754711D -C9CD8D7C65E5 -C197AE6D6990 -AABAFFCC7612 -C0AD1B72921A -AFAAFCC40DEC +# +# Ving? +0602721E8F06 +FC0B50AF8700 +F7BA51A9434E +# +# eskart +# eskisehir transport card E902395C1744 -DAC7E0CBA8FD -755D49191A78 -68D3263A8CD6 -2F8A867B06B4 +4051A85E7F2D 7357EBD483CC -ABCC1276FCB0 -26BF1A68B00F -704A81DDACED +D8BA1AA9ABA0 +76939DDD9E97 +3BF391815A8D +# +# muzekart +# museum card for turkey +7C87013A648A E8794FB14C63 +9F97C182585B EC070A52E539 -037F64F470AD -76939DDD9E97 -4D80A10649DF -89E00BC444EF -26107E7006A0 +C229CE5123D5 +E495D6E69D9C +26BF1A68B00F B1D3BC5A7CCA -ECC58C5D34CA -9F97C182585B -B2FE3B2875A6 +734EBE504CE8 +974A36E2B1BA +C197AE6D6990 +4D80A10649DF +037F64F470AD +C9CD8D7C65E5 B70B1957FE71 -E495D6E69D9C -0860318A3A89 -4051A85E7F2D -17D071403C20 -3BF391815A8D -1927A45A83D3 CE7712C5071D +C0AD1B72921A +45FEE09C1D06 +E592ED478E59 F3C1F1DB1D83 +704A81DDACED +89E00BC444EF +AFAAFCC40DEC +ECC58C5D34CA +57D83754711D D0DDDF2933EC - -# Iron Logic -A3A26EF4C6B0 -2C3FEAAE99FC -E85B73382E1F -F4ED24C2B998 -CB574C6D3B19 -E092081D724B -B38D82CF7B6C -8228D2AA6EFA -2C7E983588A3 -CF7A7B77E232 -32A7F5EAF87D -7453A687B5F0 -01A0C008A5B9 -DEC0CEB0CE24 -413BED2AE45B -D6261A9A4B3F -CB9D507CE56D - -# Tehran ezpay -38A88AEC1C43 -CBD2568BC7C6 -7BCB4774EC8F -22ECE9316461 -AE4B497A2527 -EEC0626B01A1 -2C71E22A32FE -91142568B22F -7D56759A974A -D3B1C7EA5C53 -41C82D231497 -0B8B21C692C2 -604AC8D87C7E -8E7B29460F12 -BB3D7B11D224 - -# More keys from the PM3 repo -DC018FC1D126 -C428C4550A75 -0C4233587119 -5B0C7EC83645 -540D5E6355CC -35C649004000 -CFE63749080A -6307417353C1 -411053C05273 -749934CC8ED3 -1C68315674AC -35D152154017 -D1417E431949 -26B85DCA4321 -D973D917A4C7 -3A471B2192BF -534F4C303232 -730956C72BC2 -C9449301AF93 -F678905568C3 -4578ABFEDC12 -075D1A4DD323 -43E69C28F08C -0F35D5660653 -F7FA2F629BB1 -5145C34DBA19 -124578ABFEDC -E2F14D0A0E28 -C8AACD7CF3D1 -9C616585E26D -4927C97F1D57 +240F0BB84681 +9E7168064993 +2F8A867B06B4 +# +# bursakart +# bursa transport card +755D49191A78 +DAC7E0CBA8FD +68D3263A8CD6 +865B6472B1C0 +0860318A3A89 +1927A45A83D3 +B2FE3B2875A6 +# +# playland +# maltepe park +ABCC1276FCB0 +AABAFFCC7612 +# +# lunasan +# kocaeli fair +26107E7006A0 +# +# gamefactory +# ozdilek +17D071403C20 +# +# +534F4C415249 +534F4C303232 +# +# Nespresso, smart card +# key-gen algo, these keys are for one card (keys diversified) +FF9A84635BD2 6F30126EE7E4 -155332417E00 -5353B3AECB53 -361A62F35BC9 -00460740D722 -A9B018868CC1 -2E71D3BD262A -4F75030AD12B -42454C4C4147 -D75971531042 -25352912CD8D -51E97FFF51E9 -1170553E4304 -D1F71E05AD9D -541C417E57C0 -AE76242931F1 6039ABB101BB -0E620691B9FE -4BF6DE347FB6 -10510049D725 -1F0128447C00 +F1A1239A4487 +# +# +B882FD4A9F78 +CD7FFFF81C4A +AA0857C641A3 +C8AACD7CF3D1 +9FFDA233B496 +26B85DCA4321 +D4B2D140CB2D +A7395CCB42A0 +541C417E57C0 D14E615E0545 -94B6A644DFF6 -81B20C274C3F -66695A45C9FA -130662240200 -DD0DE3BA08A6 -05F5EC05133C -4FA9EB49F75E -C1E6F8AFC9EC -28D70900734C -32CA52054416 +69D92108C8B5 703265497350 -3D923EB73534 +D75971531042 +10510049D725 +35C649004000 +5B0C7EC83645 +05F5EC05133C +521B517352C7 +94B6A644DFF6 +2CA4A4D68B8E +A7765C952DDF +E2F14D0A0E28 +DC018FC1D126 +4927C97F1D57 +046154274C11 +155332417E00 +6B13935CD550 C151D998C669 -534F4C415249 -70C714869DC7 -A7395CCB42A0 -89AA9D743812 -A160FCD5EC4C -9DCDB136110C -9951A273DEE7 -AA0857C641A3 -F1A1239A4487 -B882FD4A9F78 +D973D917A4C7 +130662240200 9386E2A48280 +52750A0E592A +075D1A4DD323 +32CA52054416 460661C93045 -EF1232AB18A0 -6285A1C8EB5C -C41514DEFC07 -ABFEDC124578 -046154274C11 5429D67E1F57 -# SMARTair Key B -E7316853E731 -CD7FFFF81C4A -F253C30568C4 -E7D6064C5860 -506DB955F161 -8223205047B6 -070D486BC555 -D4B2D140CB2D 0C734F230E13 -2E4169A5C79D -69D92108C8B5 -A297CEB7D34B -FF9A84635BD2 +1F0128447C00 +411053C05273 +42454C4C4147 +C428C4550A75 +730956C72BC2 +28D70900734C +4F75030AD12B +6307417353C1 +D65561530174 +D1F71E05AD9D +F7FA2F629BB1 +0E620691B9FE +43E69C28F08C 735175696421 -5D0762D13401 -D61707FFDFB1 -2803BCB0C7E1 -C52876869800 424C0FFBF657 -AF9E38D36582 -B32464412EE3 +51E97FFF51E9 +E7316853E731 +00460740D722 +35D152154017 +5D0762D13401 +0F35D5660653 +1170553E4304 +0C4233587119 +F678905568C3 50240A68D1D8 -6B13935CD550 -83F3CB98C258 -521B517352C7 -4BB747E48C2A +2E71D3BD262A +540D5E6355CC +D1417E431949 +4BF6DE347FB6 +# +# +3A471B2192BF +A297CEB7D34B +AE76242931F1 +# +# +124578ABFEDC +ABFEDC124578 +4578ABFEDC12 +# +# Data from +# premier inn hotel chain 5E594208EF02 -FFFFFF545846 -D65561530174 -52750A0E592A -112233445566 -2DADE48942C5 -A7765C952DDF -2CA4A4D68B8E -72B458D60363 -F088A85E71D7 -FF94F86B09A6 -B27CCAB30DBD -89ECA97F8C2A -E00000000000 -9FFDA233B496 +AF9E38D36582 +# +# Norwegian building site identication card. (HMS KORT) +# Key a 10DF4D1859C8 +# +# Key B B5244E79B0C8 +# +# Ukraine hotel F5C1C4C5DE34 - +# +# Data from Mifare Classic Tool repo # Rotterdam University of applied sciences campus card BB7923232725 A95BD5BB4FC5 @@ -1297,27 +1774,406 @@ B5ADEFCA46C4 BF3FE47637EC B290401B0CAD AD11006B0601 - -# Keys of Armenian underground ticket -A0A1A2A8A4A5 +# +# Data from Mifare Classic Tool repo +# Armenian Metro +E4410EF8ED2D +6A68A7D83E11 0D6057E8133B D3F3B958B8A3 -6A68A7D83E11 -7C469FE86855 -E4410EF8ED2D 3E120568A35C -CE99FBC8BD26 2196FAD8115B - -# PIK Comfort Moscow keys (ISBC Mifare Plus SE 1K) -009FB42D98ED -002E626E2820 - -# Volgograd (Russia) Volna transport cards keys -2B787A063D5D -D37C8F1793F7 - +7C469FE86855 +CE99FBC8BD26 +# +# keys from Eurothermes group (Switzerland) +D66D91829013 +75B691829013 +83E391829013 +A23C91829013 +E46A91829013 +D9E091829013 +FED791829013 +155F91829013 +06CC91829013 +8DDC91829013 +54AF91829013 +29A791829013 +668091829013 +00008627C10A +# +# easycard +310D51E539CA +2CCDA1358323 +03E0094CEDFE +562E6EF73DB6 +F53E9F4114A9 +AD38C17DE7D2 +# +# SUBE cards keys (new) +2DEB57A3EA8F +32C1BB023F87 +70E3AD3F2D29 +202ECDCCC642 +3686192D813F +24501C422387 +2C7813A721C3 +FFE04BE3D995 +D28F090677A1 +DE2D83E2DCCC +A66A478712EA +643232ADB2D5 +C7F4A4478415 +95C013B70D99 +3C383889362A +3C6D9C4A90FA +51BEDBA005E5 +74BF7363F354 +53B09DB89111 +E98075318085 +2F904641D75F +7F60AEF68136 +F5C1B3F62FDA +3E6E5713BA10 +8B75A29D4AB2 +7E6545076619 +# +# SUBE cards keys (old) +4C5A766DFE3A +32C6768847F5 +F68930789631 +8B42B6D64B02 +B627A3CB13F8 +562A4FB8260B +88DDC24E1671 +91CB7802A559 +7A3E0F5B63FC +8CA2C9DC8292 +5CCC6D50EAAC +DE4F5AA9A7F3 +52D0145E1AF5 +C10F92A4E57E +7D6E7AF43C97 +DE1E7D5F6DF1 +F4CB751B031A +C54474936B59 +2A1F900D4533 +6303CDCBB233 +F115E91357B3 +BFE25035B0C8 +62FF943EB069 +7C82EF592001 +D5C172325DD3 +992B152E834A +CE75D7EADEAF +# +# Russian Podorozhnik card (Saint-Petersburg transport) +# may be combined with Troika +038B5F9B5A2A +04DC35277635 +0C420A20E056 +152FD0C420A7 +296FC317A513 +29C35FA068FB +31BEC3D9E510 +462225CD34CF +4B7CB25354D3 +5583698DF085 +578A9ADA41E3 +6F95887A4FD3 +7600E889ADF9 +86120E488ABF +8818A9C5D406 +8C90C70CFF4A +8E65B3AF7D22 +9764FEC3154A +9BA241DB3F56 +AD2BDC097023 +B0A2AAF3A1BA +B69D40D1A439 +C956C3B80DA3 +CA96A487DE0B +D0A4131FB290 +D27058C6E2C7 +E19504C39461 +FA1FBB3F0F1F +FF16014FEFC7 +# +# Food GEM +6686FADE5566 +# +# Samsung Data Systems (SDS) — Electronic Locks +# Gen 1 S10 KA/KB is FFFFFFFFFFFF, incompatible with Gen 2 locks +# +# SDS Gen 2 S10 KB +C22E04247D9A +# +# Data from Discord, French pool +# SDS Gen 2 S10 KA +9B7C25052FC3 +494446555455 +# +# Data from Discord, seems to be related to ASSA +427553754D47 +# Keys found on Edith Cowan University Smart Riders +9A677289564D +186C59E6AFC9 +DDDAA35A9749 +9D0D0A829F49 +# Mercator Pika Card, Slovenia +97D77FAE77D3 +5AF445D2B87A +# +# Vilniečio/JUDU kortelė, Lithuania +# A +16901CB400BC +F0FE56621A42 +8C187E78EE9C +FE2A42E85CA8 +# B +6A6C80423226 +F4CE4AF888AE +307448829EBC +C2A0105EB028 +# +# Keys from Flipper Zero Community +# Last update: Aug 13, 2022 +# +# unknown if keys are diversified or static default +# +# Strelka Extension +5C83859F2224 +66B504430416 +70D1CF2C6843 +C4B3BD0ED5F1 +C4D3911AD1B3 +CAD7D4A6A996 +DA898ACBB854 +FEA1295774F9 +# +# Moscow Public Toilets Card +807119F81418 +22C8BCD10AAA +0AAABA420191 +E51B4C22C8BC +DBF9F79AB7A2 +34EDE51B4C22 +C8BCD10AAABA +BCD10AAABA42 +# +# Moscow Social Card +2F87F74090D1 +E53EAEFE478F +CE2797E73070 +328A034B93DB +81E1529AE22B +FC55C50E579F +1A72E2337BC3 +5DB52676BE07 +F64FBF085098 +8FE758A8F039 +BB1484CC155D +41990A529AE2 +CD2E9EE62F77 +69C1327AC20B +3C9C0D559DE5 +67BF3880C811 +48A01159A1E9 +2B83FB448CD4 +F24BBB044C94 +94F46DB5FD46 +C31C8CD41D65 +BB1684CC155D +CA2393DB246C +1D75E52E76BE +81D9529AE223 +0159C9125AA2 +52AA1B6BB3FB +97EF60A8F031 +6FC73888D011 +3A92FA438BD3 +74CC3D85CD0E +025ACA1B63A3 +AF0878C81151 +9BFB6CB4FC45 +F750C0095199 +075FCF1860A8 +2686EE3F87C7 +277FEF3880C0 +82DA4B93DB1C +9CF46DB5FD46 +93EB64ACF43D +# +# Iron Logic RU +A3A26EF4C6B0 +2C3FEAAE99FC +E85B73382E1F +F4ED24C2B998 +CB574C6D3B19 +E092081D724B +B38D82CF7B6C +8228D2AA6EFA +2C7E983588A3 +CF7A7B77E232 +32A7F5EAF87D +7453A687B5F0 +01A0C008A5B9 +DEC0CEB0CE24 +413BED2AE45B +D6261A9A4B3F +CB9D507CE56D +# +# Armenian Underground Ticket +A0A1A2A8A4A5 +# +# Badge Maker Leaked from https://github.com/UberGuidoZ +1A1B1C1D1E1F +1665FE2AE945 +158B51947A8E +E167EC67C7FF +D537320FF90E +5E56BFA9E2C9 +F81CED821B63 +C81584EF5EDF +9551F8F9259D +36E1765CE3E8 +509052C8E42E +776C9B03BE71 +C608E13ADD50 +BEE8B345B949 +ED0EC56EEFDD +9716D5241E28 +05D1FC14DC31 +3321FB75A356 +F22A78E29880 +EC211D12C98D +8CCA8F62A551 +B637E46AD674 +39605B3C8917 +3882719778A1 +9F27D36C4230 +DB32A6811327 +8AA8544A2207 +8C5819E780A4 +7549E90353A2 +2E52ABE0CE95 +E46210ED98AB +61D030C0D7A8 +18E20102821E +DA59354DFB88 +040047C12B75 +D10008074A6F +686E736F6E20 +446176696453 +6F6674776172 +6520446F7665 +# +# Apartment keyfobs (USA) (Corvette830) +E60F8387F0B9 +FFD46FF6C5EE +4F9661ED2E70 +576A798C9904 +1C5179C4A8A1 +16CA203B811B +11AC8C8F3AF2 +# +# The Westin Jakarta Indonesia (D4DB0D) +# Peppers Hotel Unknown location (D4D0D) +6E0DD4136B0A +141940E9B71B +3B1D3AAC866E +95E9EE4CCF8F +FEA6B332F04A +BE0EC5155806 +0500D6BFCC4F +FC5AC7678BE3 +F09BB8DD142D +B4B3FFEDBE0A +540E0D2D1D08 +# +# Schlage 9691T Keyfob (seasnaill) +7579B671051A +4F4553746B41 +# +# Vigik ScanBadge App (fr.badgevigik.scanbadge) +# Website https://badge-vigik.fr/ (Alex) +0000A2B3C86F +021200C20307 +021209197507 +1E34B127AF9C +303041534956 +4143532D494E +41454E521985 +43412D627400 +455249524345 +456666456666 +45B722C63319 +484585414354 +4D414C414741 +536563644C65 +57D27B730760 +593DD8FE167A +6472616E7265 +65626F726369 +680E95F3C287 +709BA7D4F920 +8829DAD9AF76 +92D0A0999CBA +948EE7CFC9DB +9EB7C8A6D4E3 +A22AE12C9013 +AFC984A3576E +# +# Vigik verified by quantum-x +# https://github.com/RfidResearchGroup/proxmark3/pull/1742#issuecomment-1206113976 +A00027000099 +A00016000028 +A00003000028 +A0000F000345 +A00001000030 +A00002000086 +A00002000036 +A00002000088 +A00000000058 +A00000000096 +A00000000008 +A00000043D79 +A00000000064 +A00025000030 +A00003000057 +# +# BH USA 2013 conference +012279BAD3E5 +# +# iGuard Simple (and reverse) keys +AAAAAAFFFFFF +FFFFFFAAAAAA +# +# Random Hotel A Key Sec 0 Blk 3 - KABA Lock (VideoMan) +3111A3A303EB +# Transport system Uruguay - STM +# Shared key - sec 0 blk 3 +D144BD193063 +# +# Data from http://www.proxmark.org/forum/viewtopic.php?pid=45659#p45659 +3515AE068CAD +# +# Keys Catering +6A0D531DA1A7 +4BB29463DC29 +# +# Keys Swim +8627C10A7014 +453857395635 +# +# Unknown hotel system Sec 0 / A +353038383134 +# +# Brazil transport Sec 8 / A +50d4c54fcdf5 +# # Bandai Namco Passport [fka Banapassport] / Sega Aime Card +# Dumped on the Flipper Devices Discord Server 6090D00632F5 019761AA8082 574343467632 @@ -1351,7 +2207,551 @@ E69DD9015A43 C8382A233993 7B304F2A12A6 FC9418BF788B +# +# Guest Cashless Prepaid Arcade Payment Cards +168168168168 +198407157610 +4E4F584D2101 +4E4F584D2105 +686B35333376 +861861861861 +# +# Transport System Cracow / Polen +B071A76BA2E9 +B3A181BCA5F2 +3225942F7717 +80D00703C5FB +6DD510E080B1 +87529F30FC58 +B75C4FA614AE +42DC568C64F4 +# Data from "the more the marriott" mifare project (colonelborkmundus) +# aka The Horde +# +# These keys seem to be from Vingcard / Saflok system which means they are diversified +# and not static default keys. To verify this, the UID from such a card is needed. +# +# 20230125-01, Elite Member Marriott Rewards +43012BD9EB87 +# 20230125-02, Elite Member Marriott Rewards +3119A70628EB +# 20230125-03, Elite Member Marriott Rewards +23C9FDD9A366 +# 20230125-04, Elite Member Marriott Rewards +7B4DFC6D6525 +# 20230125-05, Elite Member Marriott Rewards +1330824CD356 +# 20230125-06, Elite Member Marriott Rewards +30AAD6A711EF +# 20230125-07, Fairfield Inn & Suites Marriott +7B3B589A5525 +# 20230125-08, Moxy Hotels +20C166C00ADB +# 20230125-09, Westin Hotels & Resorts +7D0A1C277C05 +2058580A941F +8C29F8320617 +# 20230125-10, Westin Hotels & Resorts +C40964215509 +D44CFC178460 +5697519A8F02 +# 20230125-12, AC Hotels Marriott +7B56B2B38725 +# 20230125-13, AC Hotels Marriott +8EA8EC3F2320 +# 20230125-14, Waldorf Astoria Chicago +011C6CF459E8 +# 20230125-24, Aria Resort & Casino +A18D9F4E75AF +# 20230125-25, Aria Resort & Casino +316B8FAA12EF +# 20230125-26, Residence Inn Mariott +3122AE5341EB +# 20230125-27, Residence Inn Mariott +F72CD208FDF9 +# 20230125-28, Marriott +035C70558D7B +# 20230125-29, Marriott +12AB4C37BB8B +# 20230125-30, Marriott +9966588CB9A0 +# 20230125-31, Sheraton +42FC522DE987 +# 20230125-32, The Industrialist +2158E314C3DF +# 20230125-39, The Ritz-Carlton Balharbour +30FB20D0EFEF +# 20230125-40, The Ritz-Carlton Balharbour +66A3B064CC4B +# 20230125-41, The Ritz-Carlton Balharbour +D18296CD9E6E +# 20230125-42, The Ritz-Carlton Balharbour +D20289CD9E6E +# 20230125-44, Graduate Hotels +209A2B910545 +C49DAE1C6049 +# 20230125-46, AmericInn +8AC04C1A4A25 +# 20230129-53, Marriott Bonvoy +6E029927600D +3E173F64C01C +C670A9AD6066 +# 20230413-69, Westin +487339FA02E0 +# 20230413-70, Marriott Bonvoy +DBD5CA4EE467 +A0B1F234006C +180DE12B700E +# 20230413-71, Westin +1352C68F7A56 +# 20230413-76, Ritz Carlton +318BD98C1CEF +# 20230413-77, Marriott +D23C1CB1216E +# 20230413-78, Caesars +A1D92F808CAF +# 20230413-79, The Cosmopolitan, Vegas +# 20230413-80, Aria +1153C319B4F8 +# 20230413-81, Aria +110C819BBEF8 +# 20230413-82, Aria +1332117E8756 +# 20230413-83, Kimpton +500AE915F50A +5032E362B484 +8B63AB712753 +# 20230413-85, Kimpton +06106E187106 +2E45C23DC541 +D9FF8BEE7550 +# 20230413-87, Marriott +42F7A186BF87 +# 20230413-88, Meritage Resort +D213B093B79A +# 20230413-89, Meritage Resort +216024C49EDF +# 20230413-90, Gaylord Palms +D201DBB6AB6E +# 20230413-91, Residence Inn +9F4AD875BB30 +# 20230413-92, Marriott +3352DB1E8777 +# 20230413-94, Marriott +09074A146605 +151F3E85EC46 +# +# Travelodge by Wyndham Berkeley +0000FFFFFFFF +4663ACD2FFFF +EDC317193709 +# Hotel Santa Cruz +75FAB77E2E5B +# saflok brand HOTEL key +32F093536677 +# A WaterFront Hotel in Oakland +3351916B5A77 +# Ballys (2018) +336E34CC2177 +# Random Hawaiian Hotel +A1670589B2AF +# SF Hotel (SoMa area) +2E0F00700000 +# +# Unknown PACS from Western Australia +CA80E51FA52B +A71E80EA35E1 +05597810D63D +# +# Hotel Key from Las Vegas +EA0CA627FD06 +80BB8436024C +5044068C5183 +# +# Key from Hotel M Montreal (probably diversified) +7E5E05866ED6 +661ABF99AFAD +# +# Key from evo Montreal (probably diversified) +1064BA5D6DF8 +# Hotel key +CE0F4F15E909 +D60DE9436219 +# +# ATM Area de Girona, spanish transport card +A01000000000 +A02000000000 +A03000000000 +A04000000000 +A05000000000 +A06000000000 +A07000000000 +A08000000000 +A09000000000 +A10000000000 +A11000000000 +A12000000000 +A13000000000 +A14000000000 +A15000000000 +B01000000000 +B02000000000 +B03000000000 +B04000000000 +B05000000000 +B06000000000 +B07000000000 +B08000000000 +B09000000000 +B10000000000 +B11000000000 +B12000000000 +B13000000000 +B14000000000 +B15000000000 +# +# Pittsburgh, PA, USA - Pittsburgh Regional Transit ConnectCard +A7AE4A5A33DC +6B857B568C10 +E2CE9A674CBE +A4896B2EBA4E +0724DF9AEDE8 +0E368FB140C1 +874EB25C8721 +5C313F4539CD +C5498606E0A8 +79C69F7EC7C0 +DA7DD0044DA2 +1B8189BD966B +765584147990 +4B7C7C315E6E +46CAAD12C524 +53BD03DEA5C9 +D2D72CB60F59 +14D258786538 +E2E89A375B36 +B3FA87DB0C45 +44D3B1561B34 +2817C6E02F97 +A513FF1232E9 +BD454BD52792 +391771654DC8 +5162797F8E1C +F700BD8E042D +3973ABFD8B66 +CE8BFF3728EE +09938D05DA78 +EACDA4DBE420 +EC2B9FD483CA +# +# Hotel Intelier Orange - Benicasim, Spain +# block 1 - key A +04256CFE0425 +# +# InsideWash Membership Card - Portugal +C18063858BB9 +# +# An apartment building in Sydney Olympic Park +13254608D0AB +24A2971BC0B2 +14264709D1AC +25A3981CC1B3 +1527480AD2AD +26A4991DC2B4 +1628490BD3AE +27A59A1EC3B5 +17294A0CD4AF +28A69B1FC4B6 +182A4B0DD5B0 +29A79C20C5B7 +192B4C0ED6B1 +2AA89D21C6B8 +1A2C4D0FD7B2 +2BA99E22C7B9 +1B2D4E10D8B3 +2CAA9F23C8BA +1C2E4F11D9B4 +2DABA024C9BB +1D2F5012DAB5 +2EACA125CABC +1E305113DBB6 +2FADA226CBBD +1F315214DCB7 +30AEA327CCBE +20325315DDB8 +31AFA428CDBF +21335416DEB9 +32B0A529CEC0 +22345517DFBA +33B1A62ACFC1 +# +# Universidade de São Paulo (USP) student card +17B50E38F1B0 +24E311F594CE +3794FBFB1A54 +43B229069F6A +4531952F765F +4943F2F35E0A +4985E681EF88 +4F56C88E0337 +710070E92C79 +8A036C5C35D4 +A027BD830A06 +D33673C19243 +D89A506542F2 +E5813CD228F1 +FAB943906E9C +# +# R.A.T.T transport card key A/B +AA034F342A55 +456776908C48 +# BusFacil - Brazilian public transport card for some cities +7b296f353c6b +3fa7217ec575 +fae9b14365a9 +c567dd4a6004 +c567dd4a6005 +c567dd4a6006 +c567dd4a6007 +c567dd4a6008 +c567dd4a6009 +c567dd4a600a +c567dd4a600d +c567dd4a600e +c567dd4a600f +5ef014ec5d7f +5086052022ac +bd6af9754c18 +5d67d4732a7d +17fe45604a04 +17fe45604a05 +17fe45604a06 +17fe45604a07 +17fe45604a08 +17fe45604a09 +17fe45604a0a +17fe45604a0d +17fe45604a0e +17fe45604a0f +# keys for swimming pool cards in Reykjavík Iceland +28220F14BEF0 +# key for Orkan keyfobs +300724070486 +# key for Atlantsolía keyfobs +60FCB3C42ABF +# key for hotel in greece +722F24F0722F +# STS Hotel 2A +535453535453 +# Public transport in Sofia, Bulgaria (SKGT) +# upgraded to DESFire since January 2024 +# SKGT common +# Sector 15, key A +f618b3d7855a +# Sector 15, key B +f1afa4da949f +# SKGT multi-use ticket +# Sector 0 +67362dace527 +633a010fa3c3 +# Sector 1 +f93c98655b9c +67ec0a47b0fb +# Sector 2 +54a028818ac7 +b2e87e53c5a0 +# Sector 3 +3e93cf0644b6 +79e12280e219 +# Sector 4 +2204b9fbf033 +4537fd238c8e +# Sector 5 +d1b44a9df05f +cfa526835a1f +# Sector 6 +21cc007ad81c +c097d0a85446 +# Sector 7 +d2268262710f +730bb7b8b3de +# Sector 8 +9fe7c5be7dff +61ae2d920c79 +# Sector 9 +78fcd4470c50 +b638caf7357b +# Sector 10 +0dc1dd7c8ea2 +4c6a6866b934 +# Sector 11 +03de2ceb2ea1 +93e0118b21ed +# Sector 12 +8fbced387bf4 +f57ca95c6edd +# Sector 13 +ef24fe3b4cf7 +8b44d303d62f +# Sector 14 +b1ea40b2caa6 +3abf8431003b +# Sector 15 - see above +# SKGT personalised subscription card +# Sector 0, 2, 16, key A +a0a1a2a3a4a5 +# Sector 8-14, 17-39, key A +ffffffffffff +# Sector 1, key A +# blue +f1df0ca8948b +# yellow +7747b4912984 +# Sector 3, key A +# blue +09d556d57a4b +# yellow +3ed158c6934e +# Sector 4-7, key A +# blue +839dedbfec0d +# yellow +c694a9ed2f9e +# Sector 15 - see above +# Sector 0, 16, key B (blue) +81d55f4551b9 +# Sector 0, key B (yellow) +6e9a040c3c91 +# Sector 1, key B +# blue +5b72c63fb416 +# yellow +a3cdced46371 +# Sector 2, key B +# blue +87a61433d026 +# yellow +9cd3a81f11ab +# Sector 3, key B +# blue +7070d331360c +# yellow +836c790f6e2c +# Sector 4-7, key B +# blue +7fe057787c4f +# yellow +ff59c6d13f88 +# Sector 8-14, 17-39, key B +536f6669614d +# Sector 15 - see above +# End of SKGT +# Hanoi Bus Rapid Transit - 1/2/3 A +AAAFBA10FC37 +C61F2C28DADF +23AACA30CBF2 +# +# Keys dumped from student ID (AGH Cracow - Poland), may be diversified +# Need to be verified +833E4F32589E +432D02DA59F3 +5C161CA2716F +F60B5F9666B8 +98EAC5321D2F +CC945E3FE5C4 +70783C436CF4 +2D186C7149A9 +5D60AC0939FC +93A5CE63C873 +87174550E900 +45675B25A3DA +F91750E629D5 +A3E662ABCDC8 +33D99E9FFA6A +FF7AABA39C61 +A8248C049BEA +C2AF731771C4 +9263B2E0DD80 +CE7FCCBBA5D8 +F8E385E5A2A0 +B27678B5C4AE +D68D7EBB9551 +7AB63F082328 +# +# Payment cards used by Eurest on certain campuses +7E2BC58168EB +# +# Shower cards provided by Seijsener +291A65CBEA7B +344A359BBAD9 +476572726974 +4D696368656C +4F3748E6C826 +69D40AF8B353 +72DEA10F21DF +74845AA8E3F1 +8C3C43EDCC55 +ACD30DFFB434 +D1A27C8EC5DF +F14D329CBDBE +# +# Hotel cards from Austria +AB287B3B4903 +7B0DEDA7E162 +# +#Metro Q transit cards from Huston, Texas +373B72D34B80 +BF3FFC245C9b +7D1D9E7CF8A7 +6A917BF357E6 +B1D461EC62CA +C6BECABEBE8A +66026782D435 +4547E34E40D9 +753897b99AAE +1C36761E8ABD +6D8FBD8CC524 +5A3274779706 +23F13602CC1A +511C1C2C9804 +F8B2B926555E +2593E37D9B2E +41A1F17EE990 +64DD48AEDE88 +7915ED4D9903 +D139DD71DB92 +216D97D46E88 +D9D1C447E427 +911E789433CB +93B43D689F85 +525A869053F1 +69B25667E0B4 +6AACA2D97645 +# UK London Office +435DF6296EC4 +2338B4913222 +# Acces card of students, and more in Occitanie, France +E9A553102EA5 +F982E971CFED +1F42AB9159EE +BBFB836A48B8 +B5D170B2E8F5 +E76978A05F10 +0B1A995DD007 +650DB9CEDB6B +13E54B4448B7 +3E3540C2C273 +A76152840117 +066CCC7666BC +3C0B3AC3AFA3 +CCB541598D72 +1988B5D48EC3 +892EEF0D30FB +0FE5CE5CC640 +# Volgograd (Russia) Volna transport cards keys +2B787A063D5D +D37C8F1793F7 # H World Hotel Chain Room Keys 543071543071 5F01015F0101 From dd6e0a9b721c09b82a127aadd0a1accba8b18f7c Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Fri, 6 Dec 2024 11:53:09 +0300 Subject: [PATCH 18/85] keeloq jolly motors add full support with add manually thanks @pkooiman ! --- .../main/subghz/helpers/subghz_custom_event.h | 1 + .../resources/subghz/assets/keeloq_mfcodes | 117 +++++++++--------- .../subghz/scenes/subghz_scene_set_type.c | 11 ++ 3 files changed, 71 insertions(+), 58 deletions(-) diff --git a/applications/main/subghz/helpers/subghz_custom_event.h b/applications/main/subghz/helpers/subghz_custom_event.h index e28c018d85..093ca9526a 100644 --- a/applications/main/subghz/helpers/subghz_custom_event.h +++ b/applications/main/subghz/helpers/subghz_custom_event.h @@ -82,6 +82,7 @@ typedef enum { SetTypeAllmatic868, SetTypeCenturion433, SetTypeMonarch433, + SetTypeJollyMotors433, SetTypeSommer_FM_434, SetTypeSommer_FM_868, SetTypeSommer_FM238_434, diff --git a/applications/main/subghz/resources/subghz/assets/keeloq_mfcodes b/applications/main/subghz/resources/subghz/assets/keeloq_mfcodes index 23b7a031a2..97e1aab478 100644 --- a/applications/main/subghz/resources/subghz/assets/keeloq_mfcodes +++ b/applications/main/subghz/resources/subghz/assets/keeloq_mfcodes @@ -1,61 +1,62 @@ Filetype: Flipper SubGhz Keystore File Version: 0 Encryption: 1 -IV: 46 75 72 72 79 20 63 68 65 63 6B 20 3F 3F 21 21 -3FF98B52C38558ECDB26C3E86D118FAC9AF22EDDDE7649CB53726855CEBCCF9E -06B901C6E36E381B4A83554ED972288977F999C232106D337C3BE4A9A44608F8 -8153E6CAF4B272BA0EA168B9F0F29CF02CEB33E4ABBD4D5C858D1ADBFF474A25 -F61216CE3A7E500E0C9B2173F91C2E7B1BB7D7AA65D4150EAC28169116647DDD -A3ABC262415035A190447EC9C15CFD1AB1720560AB7C82D7447215342305299732776A9A6DEA4D359C52A23BFCE6B015 -5784D0E77A55E1361F47A1F6CFFBFAF715CFCAD2BD502ED266AA86DC47F98541 -E082BF64C75023F23FB333C53F2590F408FD932EB71DF4ED4D0E0EAF2AEBD488 -EFF328889D57D9F4B9111918F9C9BC641645104223009842FFF7B6F73E24E5B7 -BDCD1DBCBCA789C5A5C3623C0A287D791F1CACCBBD7D144E2EF1F92DA5513D90 -6310362BE6ED7CB5E3F4CA84D3093DF620BABD2C9D419A2BA5AA05F241EE7592 -4C6F97C553276D5403103A6BA6C4DBBE017A9E4159E6E5AC4C28ACD645DB1E8D4551CDC228A0457BEEF49179A081E1FD -861ECA071AEEF3854005FEC9BF22C7DB76D07B7930968314FFAC70995E28680E473F8A1A7E56E8776EDD1C6E2DD6DD26 -55ADDFBE97BCB0FB43EDEB9CAFF9F32DD788A6306D3702BC2923DA5C69F5F0A5 -AB838DA2B25547AA43DEB7FB40B15E289B9209057BE564E7CB78F0D5DCFC65FD -21BACE924E522AD0E97F0AAF64A9DB6A5F7BA09B3A1759AAFD4016F3ADD4353D -4B37D449E44BAE7F377EE5CE52E94882E42617417F77ECE9803D9435892167F2 -E63BA93D98BB3EEEAD34B38C5F271FB777AEABD9E6A05597AE09815E578AA811900AE9F144FBEC7DBFDDEC87D1ED368B -7DF24DCB7D73F1638FFD22325463B23C101653EE770F086D323BE90868A7E267 -18E533990C408061309323675116429652B3F4D228F00D704310E7AB26F6BAF4 -26042EC21D73490D9E7F968EDCC4CECF3989E6E982427DEB7012478E214CED8797A9BEBC481C81E9646214809A409B4A -AC4169C26E402720F1E2A0AD690AE2CF708CE203898BC7102178A738C70F361718E794F0D0CB1A2F1938EF35CCA11887 -6962CADB9BD1B86B779DF7F4D7E06E92EB42474C7FD9EA23879F9982D7127357 -23AEC0F6F9FF529DDDCD1CDAA77F7B136CE2CCD3AC8B949954D5D3B2ECFA8CBC -C6A3A849BC4A8DB438065255BD387DCD77AD7E7FEB3B0E11B6D3A43279AB9087 -CCB71F8BDC8B31F36D6141B3B57BF31B7EDF72B87593B7497871F5738A0B7E00 -345FE0FAD3F60C017D9793406981878EA2226072D624208AC33682793B415C41 -78AF1FCFDB780744708DBB547F7C3F095BA5FAFB34FA83BF4323B32829836ED1 -C2F19F077E71E710D39F5F11C1FE55C2A3CD6F33384CD8603288765F266F1BDF -084B1A9565AFC88900D0FF25413E659E17AAB649DB2B7A9F0381CB0DF6D2B8E5 -568CECD994676CF3D6B225DEF21D40787DCB41C101F52B0C5AA43ED66709D158 -0742E0AAB6504AC63A9C59FBDD980BD4C4760EFF3E556C8A6241442CDDD23A74 -37BB60EE11BEC7D25A607DE9B0B6D3EAD23321AFEB94995FAB42184A95D1CADA -42FD71B98A3BEE9CF372B03E158D51181BFAA9CF54F7300A93FE7665402B3D1F -9346B7D12346E264E84F91145EBF86C53DD0061E0FA6556FAE5F6FBB8CEB799E -430B0D7FC09C09051AEB667A370E6D9D9BDF0C0C553AD2791682D43CE5DC48B7 -5BBB5129797BC07CDC1D25A8A919A637B9FFF2F920BD42D1721018ABF8D34959AF877AFF450AD91548184E1A0D991CC8 -0BC8D3E1C2D9A8FB445FC55564471007A28C09C9CE602203176F1BFF02AC6328 -1C4CA912791BCD9CB231C64AB479AF240D02EC9F431D7C479B9A172E5B97F5CD -15A9CDF17E72255DE0942C09E67CD251C3D465246845F9C0B97A7EFEE4AF9110 -F95543395BFF39B0A093AC80D0EF1BEFA218A3769D074250414D1357105A4D34 -138D433824E691C6B67A08CF1DDE55FBCA2D65AC0B7D9320EA1FDCB1742B11BF -3BE3A385F1C0B8922C4E23EFF6912748DF715A4546CECB5E8972C1D1E47D0D3A -9ECA2554ED36700326F2E5140C434ADA8DFF55A53382F19541E9AAE45DA5CBF2 -5C75D528678AF199E191C49F310913F401014F97EEA5FA507C7310B48A98FDE3297EA398B08959951FF99EDDB64C5E0D -22A9C66645B3944925A496D9F2312429CC787B6314948B482EAD9360124F59DA -DA3A8571664DBBFC1DE97B53E7C141554A2FBCEBA980696D32409CC5ADB7FC41 -20A52AABC518FCC2FC75AE3F5CC7C4838AA4973111DA696B890D884A18098D91 -EBB7163F580A1A5D26F12FBE650A227791193BA9AFCE277584B171F2FE1C77CF -86369EE5277CB81B9417B6232F8D994FAEAB34D0D5363B143257C62B10CACAFD -2E2EAB32891E172A3C31D434703480E69793435BB198E6AA06AA066EE8234D85 -745FC576D77C41BAEFF15A822E6B4058A485A2CAA0A3B283928D17AC02299AD9 -1FF8D49F2F7D785D64B6FE365CD9C2BD958E9527F66BB8A85C9AEBC73ECFE064 -3CFB77F3E274C1EB2772CDFA7B5B17255C2554198BE60C058A3405AEC644FABC5AAECC8F9C7F4A4E5B2D5252E8C62628 -AE514C44B55A1A4744E1106FD226C587D1B71CA7B5DCF010265D769E22012866 -2B2D787A4B0F30CAB9CD3DBC7686165637F091B31745CAB53B369A804F76F9EE -EA4279C80F0B4AC0B32AB9E8B8CFB9C25FF81840BEE65B2160F85E56FA576C48 -E41D853750D68643E929F94F46BCDC050040935883E9A0C45BB238CDE06340DD745BDA7D6C16AE2B028E073EDDC0FC49 +IV: 46 75 72 69 20 63 68 65 63 6B 20 4F 77 4F 21 3F +796353C129CC2B688FE158D36E82001F7450D58DD763BCF4D6FA1CE6C3D598EA +1E7DDEB3B54A42B8993C32AF209CBCC9A1137CE334449F016B993D673EB15C69 +F9CB2DDC4E3D45694292C7DE45F1DC0BD74235B36F624AF39E8C3D211A713408 +538F46EF4250801434FEA469EE07E8C8BF71C6179442718A05455BB501D797C4 +F2BF384DBF7F828E025F020E47D1D637B497FB470444F0C6F9DC67C6830EDDE8A26A6EE89A321D3924D9099895AB2EA1 +2CA8A8A4866D5C2B715B520F641B41355A81BA73170842233806D8AA3E3F3D62 +80CF5DEF931CF902EE602319F7CD506D42E5FBC06ABBF9F05D474C8E8A2AAC4E +15CB465F7A646226C987BB4928E92A61F350ADCDDE355B717730ADDD1B738950 +86B7597ED3EDF6826124ABD7AE419197DC4A93FA064179ACAD853EC670F93995 +28263A286F1ADA0E851E8A27AFD7706CF3513D8A24D41CF7E24A925FE3D86305 +AF29A08AB877F12681706D71B82B8E2447DA18EBF9731EF3CE91FA5ECAC4E98F8FDC817E0F67C3D7348DD2AF128F1E62 +A675C5BB6AC41336B5F5A27FC062FBF30DC39B1E5C498F0FD823261C3177FA58416C5402554742370CB0DAFD2895F6F8 +0073790C26BD0224F5560161A4D4C4F8E05498E995FD2BF12EA9926A5127E9A5 +235ADFE253B51260DCF5C66F9CB9602B91A0C57BE14D1BE1E11EB309643B29DB +F9C2E3A926AAA108F474075F0B4EDFF3135492B1529EAB150CF78E748BF36E17 +50F442CC9D90B9FF8C786245EC442B911A28A04D829D0E45D7D2D4C5A3F5B864 +9EA00CD21C0BE1BB15A0CAD31097A44CAF42868F259E8ED25F361986C26161514FA85D78F3889B4185D2A1484C1DA88C +52DFE7D9052F29071922876723C30CF6FE6247D6439590C5C7C0493120ACA096 +D5AF176D59779A92F6EFB34F271D76D60780C3EA83306326E0119CD3B0417687 +C4CC4E589CCCEC609B4DE39F926F83CCFFCC966871B9A998514910A3F59E86FB56C476DFFB4181E3D22E86A760C4C137 +50A64FEDA64B61A5C123906426EF726D98AC70C15F38245A931B5649F0944930679513D9862091275F10A804EBB610DE +E7938C4F32E571582D73F855ACC40FF0153EFBAB6D184F2DBE8EAC63C4276D92 +7667993F35F1363C0A3AEB5222F07F91904B3F6FA375BF062B269B09706764CB +9DF764EE4A70D331BA8870F4D27C3E90E811A5E306BC72701A99A0377AC7B189 +324D0FBC096A489983C45E82B2745A83A3725A87D2D2CA676A521075065D5047 +8EA1A30AE08CEBD03A52EB2512C7C69CB824E0B9BE900E25F15FAB17ADBB1188 +CE379182103FC4E0442745F6F202AB6ED8EBC051B5F5537916938D9DB8FCD6BE +752BD22AA37D030C60E48CB57309AF631682AC4A0D67C3A7D1130EB056717FB6 +9ECFE7D24BF25BD543E1EAE8116D95C110BD4514EE279BCA71234865EB9166BD +14B3FA8704BA3B284C65F1A6FD114E53B883E12EAFB24B574F84585BD20157DA +D026E1E2CA70E33291482EEFCE11123540BBF591D400C92CEBB8CAF99A9DE882 +88E618EF5E76D1F5A60926D48D3D58FF67B4A92DE6EECA271EDAFC2419AE787B +74E14AD8ADE2BC575048325D1B3990669CDB35D840169B913043DAC938862AE4 +BEB5388B6A7D5C9EF65BDD7577D1DD654B7FAECE5A4CF0937BB7D0C0C5494CD0 +761356D494E3C947CBDCA887A30071A675FE1BE6E77FC9016DB9B5659B7FF9E7 +7503725DFC7212F5F719AFC9DF29F07321511BE4896E12D1D10C68BB07C6483A2CE5FFDFD074CFC279E42E6DD860C496 +BD03D78399DE44449AEE9F00EBCABBF419EDEA1701B9979A97D57AECB5139D1E +E80EB84DF9DA2E34B78F50D6488A30F8EFD11E7C6DBEB7CFEDE83BE5CA86B6DF +9332A130138F2AC11A12030CF43EFF77E7CABE761EDE14748112E13267496CE9 +E657F3C95EEF0AF92A5C49F66BD9C053A82493C7D6267F1E7C038473AE488116 +6F37491FFE130F90B77D7E5EA4AA75A1DB0CA3644F68B6502DFC302DDB80367B +3B37C5CCDD510873628D92B352907FEFF0AC2B38C751C2E46C3B97C3E365972B +A4C845187BEC75669234EE07B839DCFF618678D2EAA5596350F0936A400099A5 +2C961EF4F2454771B2646ECBAA1D0B7DAA2FD8ECC7228037A36E24FE30C43ABAA446C1B5968C0E2DD141C55557A4CCB8 +C4E0D43E9670C2B91F6AF03D60F216625CC19C697331BC443194D2BB88E042DF +3DC5584F43061AF79907D6342DF3344435B5AA6277B33D7DC56C429D1EB81BC4 +D9186791E907CBB9EF26EDDAEA9F0DBC8D24E213E55942ED5E1790B5A55F8758 +2B54CB727BBFD8567543448D2D24B3865329F89936D3B035ED2185BA88F1DF2E +A08F0D881AF001E52FF2CF9D232A9A566EB1900B351AFEEFEE666BEC40588F64 +46A11CA89BA1998A247275EEDF504DAFC5F97B41DFF4943F531A9F8F43DF19C5 +EF70A3858E84B13DF606317381B2E9DFFC346E96AF7C1DF0001586B8BF35808F +38EAF18DB8096C7427EBD36CBC5B0E945A3286278CC0227EB056F7ACB9E450D4 +28278D1DAA263E9A45ED17F67F6B6B0CF00F8C0F58F86C8161F8D4266FE556CB +0B0C79FDD7C9EA31FAA4AA829EDDD2A3453C05A74F5B53BBEAE83E1F4913FD1C18BD235D14D06D9E567DDB273E4C1F2A +7D663A93AE1B9A2E00E944B92838DED3376E09C5179C8F3037B2EAE9E7326C2A +D64EC2C7BD8CFA152368DF6BB75D66EF24EAA9C864A1386184B793C0585D82BC +51D8EB188E833891CCD15919FAC8FE56ACAB1007699F4FDCB53A6DDAB02E5CAA +650866D34DECD1D1F3559EFD8D2A4C1DB51C005F5932608CB6062B384D7A1F59C8E3FBF2C0A5AEFFB631D7B88A630AAB diff --git a/applications/main/subghz/scenes/subghz_scene_set_type.c b/applications/main/subghz/scenes/subghz_scene_set_type.c index a03c194f82..6c3e448948 100644 --- a/applications/main/subghz/scenes/subghz_scene_set_type.c +++ b/applications/main/subghz/scenes/subghz_scene_set_type.c @@ -29,6 +29,7 @@ static const char* submenu_names[SetTypeMAX] = { [SetTypeAllmatic868] = "KL: Allmatic 868MHz", [SetTypeCenturion433] = "KL: Centurion 433MHz", [SetTypeMonarch433] = "KL: Monarch 433MHz", + [SetTypeJollyMotors433] = "KL: Jolly Mot. 433MHz", [SetTypeSommer_FM_434] = "KL: Sommer 434MHz", [SetTypeSommer_FM_868] = "KL: Sommer 868MHz", [SetTypeSommer_FM238_434] = "KL: Sommer fm2 434Mhz", @@ -428,6 +429,16 @@ bool subghz_scene_set_type_on_event(void* context, SceneManagerEvent event) { .keeloq.cnt = 0x03, .keeloq.manuf = "Monarch"}; break; + case SetTypeJollyMotors433: + gen_info = (GenInfo){ + .type = GenKeeloq, + .mod = "AM650", + .freq = 433920000, + .keeloq.serial = (key & 0x000FFFFF), + .keeloq.btn = 0x02, + .keeloq.cnt = 0x03, + .keeloq.manuf = "Jolly_Motors"}; + break; case SetTypeElmesElectronic: gen_info = (GenInfo){ .type = GenKeeloq, From c9bc05199e24e059a394f97cb36f90a2927b2d4d Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Fri, 6 Dec 2024 12:18:51 +0300 Subject: [PATCH 19/85] add auto power off timer setting [ci skip] by @Dmitry422 with little fixes by @xMasterX --- applications/services/desktop/desktop.c | 55 +++++++++++++++++++ applications/services/desktop/desktop_i.h | 3 + .../services/desktop/desktop_settings.c | 40 ++++++++++---- .../services/desktop/desktop_settings.h | 3 + .../scenes/desktop_settings_scene_start.c | 35 ++++++++++++ 5 files changed, 124 insertions(+), 12 deletions(-) diff --git a/applications/services/desktop/desktop.c b/applications/services/desktop/desktop.c index 1132760d55..8b24e38f0b 100644 --- a/applications/services/desktop/desktop.c +++ b/applications/services/desktop/desktop.c @@ -19,6 +19,12 @@ static void desktop_auto_lock_arm(Desktop*); static void desktop_auto_lock_inhibit(Desktop*); static void desktop_start_auto_lock_timer(Desktop*); static void desktop_apply_settings(Desktop*); +//--- auto_power_off_timer +#include +static void desktop_start_auto_poweroff_timer(Desktop*); +static void desktop_auto_poweroff_arm(Desktop*); +static void desktop_auto_poweroff_inhibit(Desktop*); +//--- static void desktop_loader_callback(const void* message, void* context) { furi_assert(context); @@ -131,6 +137,9 @@ static bool desktop_custom_event_callback(void* context, uint32_t event) { } desktop_auto_lock_inhibit(desktop); + //--- auto_power_off_timer + desktop_auto_poweroff_inhibit(desktop); + //-- desktop->app_running = true; furi_semaphore_release(desktop->animation_semaphore); @@ -138,6 +147,9 @@ static bool desktop_custom_event_callback(void* context, uint32_t event) { } else if(event == DesktopGlobalAfterAppFinished) { animation_manager_load_and_continue_animation(desktop->animation_manager); desktop_auto_lock_arm(desktop); + //--- auto_power_off_timer + desktop_auto_poweroff_arm(desktop); + //--- desktop->app_running = false; } else if(event == DesktopGlobalAutoLock) { @@ -179,6 +191,9 @@ static void desktop_input_event_callback(const void* value, void* context) { Desktop* desktop = context; if(event->type == InputTypePress) { desktop_start_auto_lock_timer(desktop); + //--- m96yda + desktop_start_auto_poweroff_timer(desktop); + //--- } } @@ -213,6 +228,39 @@ static void desktop_auto_lock_inhibit(Desktop* desktop) { } } +//--- auto_power_off_timer +static void desktop_auto_poweroff_timer_callback(void* context) { + UNUSED(context); + Power* power = furi_record_open(RECORD_POWER); + power_off(power); +} + +static void desktop_start_auto_poweroff_timer(Desktop* desktop) { + furi_timer_start( + desktop->auto_poweroff_timer, furi_ms_to_ticks(desktop->settings.auto_poweroff_delay_ms)); +} + +static void desktop_stop_auto_poweroff_timer(Desktop* desktop) { + furi_timer_stop(desktop->auto_poweroff_timer); +} + +static void desktop_auto_poweroff_arm(Desktop* desktop) { + if(desktop->settings.auto_poweroff_delay_ms) { + desktop->input_events_subscription = furi_pubsub_subscribe( + desktop->input_events_pubsub, desktop_input_event_callback, desktop); + desktop_start_auto_poweroff_timer(desktop); + } +} + +static void desktop_auto_poweroff_inhibit(Desktop* desktop) { + desktop_stop_auto_poweroff_timer(desktop); + if(desktop->input_events_subscription) { + furi_pubsub_unsubscribe(desktop->input_events_pubsub, desktop->input_events_subscription); + desktop->input_events_subscription = NULL; + } +} +//--- + static void desktop_clock_timer_callback(void* context) { furi_assert(context); Desktop* desktop = context; @@ -238,6 +286,9 @@ static void desktop_apply_settings(Desktop* desktop) { if(!desktop->app_running && !desktop->locked) { desktop_auto_lock_arm(desktop); + //--- auto_power_off_timer + desktop_auto_poweroff_arm(desktop); + //--- } desktop->in_transition = false; @@ -373,6 +424,10 @@ static Desktop* desktop_alloc(void) { desktop->auto_lock_timer = furi_timer_alloc(desktop_auto_lock_timer_callback, FuriTimerTypeOnce, desktop); + //--- auto_power_off_timer + desktop->auto_poweroff_timer = + furi_timer_alloc(desktop_auto_poweroff_timer_callback, FuriTimerTypeOnce, desktop); + //--- desktop->status_pubsub = furi_pubsub_alloc(); diff --git a/applications/services/desktop/desktop_i.h b/applications/services/desktop/desktop_i.h index 1dc7c7d219..abf5cd579b 100644 --- a/applications/services/desktop/desktop_i.h +++ b/applications/services/desktop/desktop_i.h @@ -75,6 +75,9 @@ struct Desktop { FuriTimer* auto_lock_timer; FuriTimer* update_clock_timer; + //--- auto_power_off_timer + FuriTimer* auto_poweroff_timer; + //--- AnimationManager* animation_manager; FuriSemaphore* animation_semaphore; diff --git a/applications/services/desktop/desktop_settings.c b/applications/services/desktop/desktop_settings.c index 828ec5f0d6..45b9e5ee3b 100644 --- a/applications/services/desktop/desktop_settings.c +++ b/applications/services/desktop/desktop_settings.c @@ -6,16 +6,20 @@ #define TAG "DesktopSettings" -#define DESKTOP_SETTINGS_VER_13 (13) -#define DESKTOP_SETTINGS_VER (14) +#define DESKTOP_SETTINGS_VER_14 (14) +#define DESKTOP_SETTINGS_VER (15) #define DESKTOP_SETTINGS_PATH INT_PATH(DESKTOP_SETTINGS_FILE_NAME) #define DESKTOP_SETTINGS_MAGIC (0x17) typedef struct { - uint8_t reserved[11]; - DesktopSettings settings; -} DesktopSettingsV13; + uint32_t auto_lock_delay_ms; + uint8_t displayBatteryPercentage; + uint8_t dummy_mode; + uint8_t display_clock; + FavoriteApp favorite_apps[FavoriteAppNumber]; + FavoriteApp dummy_apps[DummyAppNumber]; +} DesktopSettingsV14; // Actual size of DesktopSettings v13 //static_assert(sizeof(DesktopSettingsV13) == 1234); @@ -37,21 +41,33 @@ void desktop_settings_load(DesktopSettings* settings) { DESKTOP_SETTINGS_MAGIC, DESKTOP_SETTINGS_VER); - } else if(version == DESKTOP_SETTINGS_VER_13) { - DesktopSettingsV13* settings_v13 = malloc(sizeof(DesktopSettingsV13)); + } else if(version == DESKTOP_SETTINGS_VER_14) { + DesktopSettingsV14* settings_v14 = malloc(sizeof(DesktopSettingsV14)); success = saved_struct_load( DESKTOP_SETTINGS_PATH, - settings_v13, - sizeof(DesktopSettingsV13), + settings_v14, + sizeof(DesktopSettingsV14), DESKTOP_SETTINGS_MAGIC, - DESKTOP_SETTINGS_VER_13); + DESKTOP_SETTINGS_VER_14); if(success) { - *settings = settings_v13->settings; + settings->auto_lock_delay_ms = settings_v14->auto_lock_delay_ms; + settings->auto_poweroff_delay_ms = 0; + settings->displayBatteryPercentage = settings_v14->displayBatteryPercentage; + settings->dummy_mode = settings_v14->dummy_mode; + settings->display_clock = settings_v14->display_clock; + memcpy( + settings_v14->favorite_apps, + settings->favorite_apps, + sizeof(settings_v14->favorite_apps)); + memcpy( + settings_v14->dummy_apps, + settings->dummy_apps, + sizeof(settings_v14->dummy_apps)); } - free(settings_v13); + free(settings_v14); } } while(false); diff --git a/applications/services/desktop/desktop_settings.h b/applications/services/desktop/desktop_settings.h index ba5a78840e..e2e91d2dd3 100644 --- a/applications/services/desktop/desktop_settings.h +++ b/applications/services/desktop/desktop_settings.h @@ -38,6 +38,9 @@ typedef struct { typedef struct { uint32_t auto_lock_delay_ms; + //--- auto_power_off_timer + uint32_t auto_poweroff_delay_ms; + //--- uint8_t displayBatteryPercentage; uint8_t dummy_mode; uint8_t display_clock; diff --git a/applications/settings/desktop_settings/scenes/desktop_settings_scene_start.c b/applications/settings/desktop_settings/scenes/desktop_settings_scene_start.c index 04cb0182b3..9954a2c280 100644 --- a/applications/settings/desktop_settings/scenes/desktop_settings_scene_start.c +++ b/applications/settings/desktop_settings/scenes/desktop_settings_scene_start.c @@ -28,6 +28,15 @@ typedef enum { DesktopSettingsDummyOkLong, } DesktopSettingsEntry; +// --- auto_power_off_timer +#define AUTO_POWEROFF_DELAY_COUNT 8 +const char* const auto_poweroff_delay_text[AUTO_POWEROFF_DELAY_COUNT] = + {"OFF", "5min", "10min", "15min", "30min", "45min", "60min", "90min"}; + +const uint32_t auto_poweroff_delay_value[AUTO_POWEROFF_DELAY_COUNT] = + {0, 300000, 600000, 900000, 1800000, 2700000, 3600000, 5400000}; +// --- + #define AUTO_LOCK_DELAY_COUNT 9 const char* const auto_lock_delay_text[AUTO_LOCK_DELAY_COUNT] = { "OFF", @@ -86,6 +95,16 @@ static void desktop_settings_scene_start_clock_enable_changed(VariableItem* item app->settings.display_clock = index; } +// --- auto_power_off_timer +static void desktop_settings_scene_start_auto_poweroff_delay_changed(VariableItem* item) { + DesktopSettingsApp* app = variable_item_get_context(item); + uint8_t index = variable_item_get_current_value_index(item); + + variable_item_set_current_value_text(item, auto_poweroff_delay_text[index]); + app->settings.auto_poweroff_delay_ms = auto_poweroff_delay_value[index]; +} +// --- + static void desktop_settings_scene_start_auto_lock_delay_changed(VariableItem* item) { DesktopSettingsApp* app = variable_item_get_context(item); uint8_t index = variable_item_get_current_value_index(item); @@ -115,6 +134,22 @@ void desktop_settings_scene_start_on_enter(void* context) { variable_item_set_current_value_index(item, value_index); variable_item_set_current_value_text(item, auto_lock_delay_text[value_index]); + // --- auto_power_off_timer + item = variable_item_list_add( + variable_item_list, + "Auto PowerOff", + AUTO_POWEROFF_DELAY_COUNT, + desktop_settings_scene_start_auto_poweroff_delay_changed, + app); + + value_index = value_index_uint32( + app->settings.auto_poweroff_delay_ms, + auto_poweroff_delay_value, + AUTO_POWEROFF_DELAY_COUNT); + variable_item_set_current_value_index(item, value_index); + variable_item_set_current_value_text(item, auto_poweroff_delay_text[value_index]); + // --- + item = variable_item_list_add( variable_item_list, "Battery View", From d566f650bdf4f8f1669b41ebeb8fbc280cd677ec Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Fri, 6 Dec 2024 12:20:41 +0300 Subject: [PATCH 20/85] fix order [ci skip] --- .../desktop_settings/scenes/desktop_settings_scene_start.c | 1 + 1 file changed, 1 insertion(+) diff --git a/applications/settings/desktop_settings/scenes/desktop_settings_scene_start.c b/applications/settings/desktop_settings/scenes/desktop_settings_scene_start.c index 9954a2c280..f674380afe 100644 --- a/applications/settings/desktop_settings/scenes/desktop_settings_scene_start.c +++ b/applications/settings/desktop_settings/scenes/desktop_settings_scene_start.c @@ -9,6 +9,7 @@ typedef enum { DesktopSettingsPinSetup = 0, DesktopSettingsAutoLockDelay, + DesktopSettingsAutoPowerOff, DesktopSettingsBatteryDisplay, DesktopSettingsClockDisplay, DesktopSettingsChangeName, From 53fa3f85b30de8c236a768257fe8317143041bc8 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Fri, 6 Dec 2024 12:51:06 +0300 Subject: [PATCH 21/85] upd changelog --- CHANGELOG.md | 7 ++++++- applications/services/desktop/desktop.c | 2 +- 2 files changed, 7 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index b5058c1146..f12e3bd563 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,9 +1,14 @@ ## Main changes - Current API: 78.2 +* SubGHz: Jolly Motors support (with add manually) (Thanks @pkooiman !) +* Desktop: Auto Power Off Timer (by @Dmitry422 with some fixes by @xMasterX) +* OFW PR 4025: Increase system stack's reserved memory size (Fix USB UART Bridge Crash) (by @Astrrra) * OFW: merged gsurkov/vcp_break_support branch for usb uart bridge (WIP!!!) * Apps: **Check out more Apps updates and fixes by following** [this link](https://github.com/xMasterX/all-the-plugins/commits/dev) ## Other changes -* No changes yet :( +* OFW: NFC: Plantain parser Last payment amount fix +* OFW: NFC clipper: BART station ids for San Lorenzo, Bay Fair +* OFW: Fix typo for mf_classic_key_cahce_get_next_key() function

#### Known NFC post-refactor regressions list: - Mifare Mini clones reading is broken (original mini working fine) (OFW) diff --git a/applications/services/desktop/desktop.c b/applications/services/desktop/desktop.c index 8b24e38f0b..9366d65083 100644 --- a/applications/services/desktop/desktop.c +++ b/applications/services/desktop/desktop.c @@ -191,7 +191,7 @@ static void desktop_input_event_callback(const void* value, void* context) { Desktop* desktop = context; if(event->type == InputTypePress) { desktop_start_auto_lock_timer(desktop); - //--- m96yda + //--- auto_power_off_timer desktop_start_auto_poweroff_timer(desktop); //--- } From 306b7285879abe05b1e3e7bfdca6442c86161b94 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Sun, 8 Dec 2024 13:39:34 +0300 Subject: [PATCH 22/85] fix wrong order --- applications/services/desktop/desktop_settings.c | 8 +++----- 1 file changed, 3 insertions(+), 5 deletions(-) diff --git a/applications/services/desktop/desktop_settings.c b/applications/services/desktop/desktop_settings.c index 45b9e5ee3b..7a99dd3653 100644 --- a/applications/services/desktop/desktop_settings.c +++ b/applications/services/desktop/desktop_settings.c @@ -58,13 +58,11 @@ void desktop_settings_load(DesktopSettings* settings) { settings->dummy_mode = settings_v14->dummy_mode; settings->display_clock = settings_v14->display_clock; memcpy( - settings_v14->favorite_apps, settings->favorite_apps, - sizeof(settings_v14->favorite_apps)); + settings_v14->favorite_apps, + sizeof(settings->favorite_apps)); memcpy( - settings_v14->dummy_apps, - settings->dummy_apps, - sizeof(settings_v14->dummy_apps)); + settings->dummy_apps, settings_v14->dummy_apps, sizeof(settings->dummy_apps)); } free(settings_v14); From bed41647503ca124743783f9e6a9fdd074e20e6f Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Tue, 10 Dec 2024 04:07:42 +0000 Subject: [PATCH 23/85] Remove duplicates --- .../resources/nfc/assets/mf_classic_dict.nfc | 6 +--- scripts/fix_mfc_dict.py | 32 +++++++++---------- 2 files changed, 16 insertions(+), 22 deletions(-) diff --git a/applications/main/nfc/resources/nfc/assets/mf_classic_dict.nfc b/applications/main/nfc/resources/nfc/assets/mf_classic_dict.nfc index 8f4889d70e..9762732f51 100644 --- a/applications/main/nfc/resources/nfc/assets/mf_classic_dict.nfc +++ b/applications/main/nfc/resources/nfc/assets/mf_classic_dict.nfc @@ -1,4 +1,4 @@ -# Key dictionary from https://github.com/RfidResearchGroup/proxmark3/ +# Key dictionary from https://github.com/RfidResearchGroup/proxmark3/blob/master/client/dictionaries/mfc_default_keys.dic # # Mifare Default Keys # -- iceman fork version -- @@ -2507,8 +2507,6 @@ AA034F342A55 456776908C48 # BusFacil - Brazilian public transport card for some cities -7b296f353c6b -3fa7217ec575 fae9b14365a9 c567dd4a6004 c567dd4a6005 @@ -2600,9 +2598,7 @@ b1ea40b2caa6 # Sector 15 - see above # SKGT personalised subscription card # Sector 0, 2, 16, key A -a0a1a2a3a4a5 # Sector 8-14, 17-39, key A -ffffffffffff # Sector 1, key A # blue f1df0ca8948b diff --git a/scripts/fix_mfc_dict.py b/scripts/fix_mfc_dict.py index f89973d3ce..1b2713e1ad 100755 --- a/scripts/fix_mfc_dict.py +++ b/scripts/fix_mfc_dict.py @@ -2,33 +2,31 @@ import pathlib import string +KEY_LENGTH = 12 + file = ( pathlib.Path(__file__).parent / "../applications/main/nfc/resources/nfc/assets/mf_classic_dict.nfc" ) -try: - lines = file.read_text(encoding="ascii").splitlines() -except UnicodeDecodeError: - print( - "Fix non-ASCII characters: https://pteo.paranoiaworks.mobi/diacriticsremover/" - ) - exit() +lines = file.read_text().split("\n") total = 0 -for i, line in enumerate(lines): - lines[i] = line = line.strip() +for i, line in reversed(list(enumerate(lines))): if line.startswith("#"): continue - lines[i] = line = line.upper() if not line: continue - if len(line) != 12 or any(char not in string.hexdigits for char in line): + key = line[:KEY_LENGTH] + if len(key) != KEY_LENGTH or any(char not in string.hexdigits for char in key): print(f"Line {i + 1} is not correct: {line}") - else: - total = total + 1 - for j in reversed(range(i + 1, len(lines))): - if lines[j].upper().strip() == line: - del lines[j] + for check in lines[:i]: + if check.upper()[:KEY_LENGTH] == line.upper()[:KEY_LENGTH]: + print(f"Line {i + 1} is a duplicate: {line}") + del lines[i] + break + else: # Didn't break + total += 1 + -file.write_text("\n".join(line for line in lines if line.removeprefix("#"))) +file.write_text("\n".join(lines)) print(f"Total keys: {total}") From 4edd527e16462267c439554f6bacb51edbe25377 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Tue, 10 Dec 2024 05:54:31 +0000 Subject: [PATCH 24/85] FBT: Don't lint JS packages --- firmware.scons | 2 ++ scripts/lint.py | 26 ++++++++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/firmware.scons b/firmware.scons index aa91c7e3be..77bf84de0d 100644 --- a/firmware.scons +++ b/firmware.scons @@ -29,6 +29,8 @@ env = ENV.Clone( TARGETS_ROOT=Dir("#/targets"), LINT_SOURCES=[ Dir("applications"), + # Not C code + Dir("!applications/system/js_app/packages"), ], LIBPATH=[ "${LIB_DIST_DIR}", diff --git a/scripts/lint.py b/scripts/lint.py index 8530209bec..896cd38128 100755 --- a/scripts/lint.py +++ b/scripts/lint.py @@ -35,21 +35,25 @@ def init(self): self.parser_format.set_defaults(func=self.format) @staticmethod - def _filter_lint_directories(dirnames: list[str]): + def _filter_lint_directories( + dirpath: str, dirnames: list[str], excludes: tuple[str] + ): # Skipping 3rd-party code - usually resides in subfolder "lib" if "lib" in dirnames: dirnames.remove("lib") - # Skipping hidden folders + # Skipping hidden and excluded folders for dirname in dirnames.copy(): if dirname.startswith("."): dirnames.remove(dirname) + if os.path.join(dirpath, dirname).startswith(excludes): + dirnames.remove(dirname) - def _check_folders(self, folders: list): + def _check_folders(self, folders: list, excludes: tuple[str]): show_message = False pattern = re.compile(SOURCE_CODE_DIR_PATTERN) for folder in folders: for dirpath, dirnames, filenames in os.walk(folder): - self._filter_lint_directories(dirnames) + self._filter_lint_directories(dirpath, dirnames, excludes) for dirname in dirnames: if not pattern.match(dirname): @@ -61,11 +65,11 @@ def _check_folders(self, folders: list): "Folders are not renamed automatically, please fix it by yourself" ) - def _find_sources(self, folders: list): + def _find_sources(self, folders: list, excludes: tuple[str]): output = [] for folder in folders: for dirpath, dirnames, filenames in os.walk(folder): - self._filter_lint_directories(dirnames) + self._filter_lint_directories(dirpath, dirnames, excludes) for filename in filenames: ext = os.path.splitext(filename.lower())[1] @@ -168,14 +172,20 @@ def _apply_file_permissions(self, sources: list, dry_run: bool = False): def _perform(self, dry_run: bool): result = 0 - sources = self._find_sources(self.args.input) + excludes = [] + for folder in self.args.input.copy(): + if folder.startswith("!"): + excludes.append(folder.removeprefix("!")) + self.args.input.remove(folder) + excludes = tuple(excludes) + sources = self._find_sources(self.args.input, excludes) if not self._format_sources(sources, dry_run=dry_run): result |= 0b001 if not self._apply_file_naming_convention(sources, dry_run=dry_run): result |= 0b010 if not self._apply_file_permissions(sources, dry_run=dry_run): result |= 0b100 - self._check_folders(self.args.input) + self._check_folders(self.args.input, excludes) return result def check(self): From 6258757b55356445ce7c54443479dfafc99d3a3f Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Tue, 10 Dec 2024 05:57:51 +0000 Subject: [PATCH 25/85] FBT: Don't lint some apps --- firmware.scons | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/firmware.scons b/firmware.scons index 77bf84de0d..522181e2f8 100644 --- a/firmware.scons +++ b/firmware.scons @@ -31,6 +31,15 @@ env = ENV.Clone( Dir("applications"), # Not C code Dir("!applications/system/js_app/packages"), + # Frequently updated and very different formatting, painful to merge + Dir("!applications/external/nfc_playlist"), + Dir("!applications/external/flip_library"), + Dir("!applications/external/flip_social"), + Dir("!applications/external/flip_store"), + Dir("!applications/external/flip_trader"), + Dir("!applications/external/flip_weather"), + Dir("!applications/external/flip_wifi"), + Dir("!applications/external/web_crawler"), ], LIBPATH=[ "${LIB_DIST_DIR}", From ef05ee44c98a8499643539bd0771ecf3f23db317 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Tue, 10 Dec 2024 06:56:59 +0000 Subject: [PATCH 26/85] Update apps - Chess: Fix illegal move bug (by 956MB) - ESP Flasher: Update Marauder bins to 1.1.0 (by justcallmekoko) - FlipLibrary: Wikipedia, dog facts, random quotes, weather, asset price, predictions, trivia, advice, uuid and many more (by jblanked), holidays (by jamisonderek) - FlipSocial: Loading screens, memory fixes, bio and friend counts, search contacts (by jblanked), RPC_KEYBOAARD support (by jamisonderek) - FlipStore: Memory fixes, update Marauder (by jblanked), more improvements (by jamisonderek) - FlipWiFi: Fix crash when saving networks manually (by jblanked) - MetroFlip: Add Navigo parser, update Rav-Kav with transaction logs, bug fixes (by luu176) - Pinball0: Turbo boosts, signals for improved gameplay, bugfixes (by rdefeo) - WiFi Marauder: AirTag Spoof, flipper blespam, sniff airtag and flipper, list airtag (by 0xchocolate) - UL: Unitemp: Fixed handling of hPa units (by shininghero) --- CHANGELOG.md | 17 ++++++++++------- applications/external | 2 +- 2 files changed, 11 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index da06a033c8..faa5a49a41 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,19 +8,22 @@ ### Updated: - Apps: - BT/USB Remote: Add PTT support for Gather (by @SapphicCode) - - ESP Flasher: Add c3 and c6 to s3 option (by @jaylikesbunda) - - FlipLibrary: Added Wikipedia, dog facts and random quotes, bug fixes (by @jblanked), connectivity and progress improvements (by @jamisonderek) - - FlipSocial: Improved authentication (by @jblanked) - - FlipStore: Many bugfixes, support ESP32 firmware downloads, allow deleting apps (by @jblanked) + - Chess: Fix illegal move bug (by @956MB) + - ESP Flasher: Add c3 and c6 to s3 option (by @jaylikesbunda), update Marauder bins to 1.1.0 (by @justcallmekoko) + - FlipBIP: Refactor to make adding coins easier (by @xtruan) + - FlipLibrary: Wikipedia, dog facts, random quotes, weather, asset price, predictions, trivia, advice, uuid and many more, bug fixes (by @jblanked), holidays, improvements to connectivity and progress (by @jamisonderek) + - FlipSocial: Improved authentication, loading screens, memory fixes, bio and friend counts, search contacts (by @jblanked), RPC_KEYBOAARD support (by @jamisonderek) + - FlipStore: Many bugfixes, support ESP32 firmware downloads, allow deleting apps, memory fixes, update Marauder (by @jblanked), more improvements (by @jamisonderek) - FlipTrader: Improved progress display, added connectivity check on startup (by @jamisonderek) - FlipWeather: Stability improvements (by @jblanked), improved progress display, added connectivity check on startup (by @jamisonderek) - - FlipWiFi: Improved error handling, updated scan loading and parsing (by @jblanked), added connectivity check on startup (by @jamisonderek) - - FlipBIP: Refactor to make adding coins easier (by @xtruan) - - uPython: Enabled extra functions for the `random` module (by @ofabel) + - FlipWiFi: Improve error handling, update scan loading and parsing, fix crash when saving networks manually (by @jblanked), add connectivity check on startup (by @jamisonderek) - Pokemon Trade Tool: Update to gblink v0.63 which includes saving/loading of pin configurations for the EXT link interface (by @kbembedded) - Snake 2.0: Progress saving, endless mode, game timer, fruit positioning bugfixes (by @Willzvul) + - uPython: Enabled extra functions for the `random` module (by @ofabel) - WebCrawler: Improved progress display, added connectivity check on startup (by @jamisonderek) + - WiFi Marauder: AirTag Spoof, flipper blespam, sniff airtag and flipper, list airtag (by @0xchocolate) - UL: NFC Magic: Added possibility to write 7b MFC to Gen1 tags (by @mishamyte) + - UL: Unitemp: Fixed handling of hPa units (by @shininghero) - UL: Fixed apps for firmware USB CDC callback changes (by @xMasterX) - NFC: - OFW: Replace mf_classic_dict.nfc with Proxmark3 version (by @onovy) diff --git a/applications/external b/applications/external index 1163b58398..2a7953ffcd 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit 1163b5839883072526c029f9f636507b7f318f14 +Subproject commit 2a7953ffcd63e2b8dc4324379f8b0c5ddbbaaff8 From 256c1a114013ff4a36487240b187c98b320ecbb1 Mon Sep 17 00:00:00 2001 From: Astra <93453568+Astrrra@users.noreply.github.com> Date: Tue, 17 Dec 2024 22:12:55 +0900 Subject: [PATCH 27/85] [FL-3917] Add the ability to send a signal once via RPC (#4000) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add the ability to send a signal once * Update protobuf * Fix sending infrared signals * Review changes * Update protobuf * Separate sending an IR signal once into a function * Update protobuf module --------- Co-authored-by: あく Co-authored-by: Georgii Surkov --- applications/main/infrared/infrared_app.c | 33 ++++++++++++++ applications/main/infrared/infrared_app_i.h | 14 ++++++ .../main/infrared/infrared_custom_event.h | 2 + .../main/infrared/scenes/infrared_scene_rpc.c | 43 +++++++++++++++++++ .../main/subghz/helpers/subghz_custom_event.h | 1 + .../main/subghz/scenes/subghz_scene_rpc.c | 37 ++++++++++++++++ applications/main/subghz/subghz.c | 3 ++ applications/services/rpc/rpc_app.c | 39 +++++++++++++++++ applications/services/rpc/rpc_app.h | 8 ++++ assets/protobuf | 2 +- 10 files changed, 181 insertions(+), 1 deletion(-) diff --git a/applications/main/infrared/infrared_app.c b/applications/main/infrared/infrared_app.c index a93fd766df..c50039760c 100644 --- a/applications/main/infrared/infrared_app.c +++ b/applications/main/infrared/infrared_app.c @@ -88,6 +88,19 @@ static void infrared_rpc_command_callback(const RpcAppSystemEvent* event, void* view_dispatcher_send_custom_event( infrared->view_dispatcher, InfraredCustomEventTypeRpcButtonPressIndex); } + } else if(event->type == RpcAppEventTypeButtonPressRelease) { + furi_assert( + event->data.type == RpcAppSystemEventDataTypeString || + event->data.type == RpcAppSystemEventDataTypeInt32); + if(event->data.type == RpcAppSystemEventDataTypeString) { + furi_string_set(infrared->button_name, event->data.string); + view_dispatcher_send_custom_event( + infrared->view_dispatcher, InfraredCustomEventTypeRpcButtonPressReleaseName); + } else { + infrared->app_state.current_button_index = event->data.i32; + view_dispatcher_send_custom_event( + infrared->view_dispatcher, InfraredCustomEventTypeRpcButtonPressReleaseIndex); + } } else if(event->type == RpcAppEventTypeButtonRelease) { view_dispatcher_send_custom_event( infrared->view_dispatcher, InfraredCustomEventTypeRpcButtonRelease); @@ -411,6 +424,26 @@ void infrared_tx_stop(InfraredApp* infrared) { infrared->app_state.last_transmit_time = furi_get_tick(); } +void infrared_tx_send_once(InfraredApp* infrared) { + if(infrared->app_state.is_transmitting) { + return; + } + + dolphin_deed(DolphinDeedIrSend); + infrared_signal_transmit(infrared->current_signal); +} + +InfraredErrorCode infrared_tx_send_once_button_index(InfraredApp* infrared, size_t button_index) { + furi_assert(button_index < infrared_remote_get_signal_count(infrared->remote)); + + InfraredErrorCode error = infrared_remote_load_signal( + infrared->remote, infrared->current_signal, infrared->app_state.current_button_index); + if(!INFRARED_ERROR_PRESENT(error)) { + infrared_tx_send_once(infrared); + } + + return error; +} void infrared_blocking_task_start(InfraredApp* infrared, FuriThreadCallback callback) { view_dispatcher_switch_to_view(infrared->view_dispatcher, InfraredViewLoading); furi_thread_set_callback(infrared->task_thread, callback); diff --git a/applications/main/infrared/infrared_app_i.h b/applications/main/infrared/infrared_app_i.h index 692cc96715..75d8502f26 100644 --- a/applications/main/infrared/infrared_app_i.h +++ b/applications/main/infrared/infrared_app_i.h @@ -218,6 +218,20 @@ InfraredErrorCode infrared_tx_start_button_index(InfraredApp* infrared, size_t b */ void infrared_tx_stop(InfraredApp* infrared); +/** + * @brief Transmit the currently loaded signal once. + * + * @param[in,out] infrared pointer to the application instance. + */ +void infrared_tx_send_once(InfraredApp* infrared); + +/** + * @brief Load the signal under the given index and transmit it once. + * + * @param[in,out] infrared pointer to the application instance. + */ +InfraredErrorCode infrared_tx_send_once_button_index(InfraredApp* infrared, size_t button_index); + /** * @brief Start a blocking task in a separate thread. * diff --git a/applications/main/infrared/infrared_custom_event.h b/applications/main/infrared/infrared_custom_event.h index 02d9a276f1..2efc99f4b5 100644 --- a/applications/main/infrared/infrared_custom_event.h +++ b/applications/main/infrared/infrared_custom_event.h @@ -21,6 +21,8 @@ enum InfraredCustomEventType { InfraredCustomEventTypeRpcButtonPressName, InfraredCustomEventTypeRpcButtonPressIndex, InfraredCustomEventTypeRpcButtonRelease, + InfraredCustomEventTypeRpcButtonPressReleaseName, + InfraredCustomEventTypeRpcButtonPressReleaseIndex, InfraredCustomEventTypeRpcSessionClose, InfraredCustomEventTypeGpioTxPinChanged, diff --git a/applications/main/infrared/scenes/infrared_scene_rpc.c b/applications/main/infrared/scenes/infrared_scene_rpc.c index 8f9dc43388..35cd971d80 100644 --- a/applications/main/infrared/scenes/infrared_scene_rpc.c +++ b/applications/main/infrared/scenes/infrared_scene_rpc.c @@ -124,6 +124,49 @@ bool infrared_scene_rpc_on_event(void* context, SceneManagerEvent event) { rpc_system_app_confirm(infrared->rpc_ctx, result); + } else if( + event.event == InfraredCustomEventTypeRpcButtonPressReleaseName || + event.event == InfraredCustomEventTypeRpcButtonPressReleaseIndex) { + bool result = false; + + // Send the signal once and stop + if(rpc_state == InfraredRpcStateLoaded) { + if(event.event == InfraredCustomEventTypeRpcButtonPressReleaseName) { + const char* button_name = furi_string_get_cstr(infrared->button_name); + size_t index; + const bool index_found = + infrared_remote_get_signal_index(infrared->remote, button_name, &index); + app_state->current_button_index = index_found ? (signed)index : + InfraredButtonIndexNone; + FURI_LOG_D(TAG, "Sending signal with name \"%s\"", button_name); + } else { + FURI_LOG_D( + TAG, "Sending signal with index \"%ld\"", app_state->current_button_index); + } + if(infrared->app_state.current_button_index != InfraredButtonIndexNone) { + InfraredErrorCode error = infrared_tx_send_once_button_index( + infrared, app_state->current_button_index); + if(!INFRARED_ERROR_PRESENT(error)) { + const char* remote_name = infrared_remote_get_name(infrared->remote); + infrared_text_store_set(infrared, 0, "emulating\n%s", remote_name); + + infrared_scene_rpc_show(infrared); + result = true; + } else { + rpc_system_app_set_error_code( + infrared->rpc_ctx, RpcAppSystemErrorCodeInternalParse); + rpc_system_app_set_error_text( + infrared->rpc_ctx, "Cannot load button data"); + result = false; + } + } + } + + if(result) { + scene_manager_set_scene_state( + infrared->scene_manager, InfraredSceneRpc, InfraredRpcStateLoaded); + } + rpc_system_app_confirm(infrared->rpc_ctx, result); } else if( event.event == InfraredCustomEventTypeRpcExit || event.event == InfraredCustomEventTypeRpcSessionClose || diff --git a/applications/main/subghz/helpers/subghz_custom_event.h b/applications/main/subghz/helpers/subghz_custom_event.h index fe2c08fc64..571f3feb9c 100644 --- a/applications/main/subghz/helpers/subghz_custom_event.h +++ b/applications/main/subghz/helpers/subghz_custom_event.h @@ -49,6 +49,7 @@ typedef enum { SubGhzCustomEventSceneRpcLoad, SubGhzCustomEventSceneRpcButtonPress, SubGhzCustomEventSceneRpcButtonRelease, + SubGhzCustomEventSceneRpcButtonPressRelease, SubGhzCustomEventSceneRpcSessionClose, SubGhzCustomEventViewReceiverOK, diff --git a/applications/main/subghz/scenes/subghz_scene_rpc.c b/applications/main/subghz/scenes/subghz_scene_rpc.c index c1476746d4..040a151140 100644 --- a/applications/main/subghz/scenes/subghz_scene_rpc.c +++ b/applications/main/subghz/scenes/subghz_scene_rpc.c @@ -85,6 +85,43 @@ bool subghz_scene_rpc_on_event(void* context, SceneManagerEvent event) { scene_manager_set_scene_state( subghz->scene_manager, SubGhzSceneRpc, SubGhzRpcStateIdle); rpc_system_app_confirm(subghz->rpc_ctx, result); + } else if(event.event == SubGhzCustomEventSceneRpcButtonPressRelease) { + bool result = false; + if(state == SubGhzRpcStateLoaded) { + switch( + subghz_txrx_tx_start(subghz->txrx, subghz_txrx_get_fff_data(subghz->txrx))) { + case SubGhzTxRxStartTxStateErrorOnlyRx: + rpc_system_app_set_error_code( + subghz->rpc_ctx, RpcAppSystemErrorCodeRegionLock); + rpc_system_app_set_error_text( + subghz->rpc_ctx, + "Transmission on this frequency is restricted in your region"); + break; + case SubGhzTxRxStartTxStateErrorParserOthers: + rpc_system_app_set_error_code( + subghz->rpc_ctx, RpcAppSystemErrorCodeInternalParse); + rpc_system_app_set_error_text( + subghz->rpc_ctx, "Error in protocol parameters description"); + break; + + default: //if(SubGhzTxRxStartTxStateOk) + result = true; + subghz_blink_start(subghz); + scene_manager_set_scene_state( + subghz->scene_manager, SubGhzSceneRpc, SubGhzRpcStateTx); + break; + } + } + + // Stop transmission + if(state == SubGhzRpcStateTx) { + subghz_txrx_stop(subghz->txrx); + subghz_blink_stop(subghz); + result = true; + } + scene_manager_set_scene_state( + subghz->scene_manager, SubGhzSceneRpc, SubGhzRpcStateIdle); + rpc_system_app_confirm(subghz->rpc_ctx, result); } else if(event.event == SubGhzCustomEventSceneRpcLoad) { bool result = false; if(state == SubGhzRpcStateIdle) { diff --git a/applications/main/subghz/subghz.c b/applications/main/subghz/subghz.c index 22e81f2eb7..b17a232a89 100644 --- a/applications/main/subghz/subghz.c +++ b/applications/main/subghz/subghz.c @@ -43,6 +43,9 @@ static void subghz_rpc_command_callback(const RpcAppSystemEvent* event, void* co } else if(event->type == RpcAppEventTypeButtonRelease) { view_dispatcher_send_custom_event( subghz->view_dispatcher, SubGhzCustomEventSceneRpcButtonRelease); + } else if(event->type == RpcAppEventTypeButtonPressRelease) { + view_dispatcher_send_custom_event( + subghz->view_dispatcher, SubGhzCustomEventSceneRpcButtonPressRelease); } else { rpc_system_app_confirm(subghz->rpc_ctx, false); } diff --git a/applications/services/rpc/rpc_app.c b/applications/services/rpc/rpc_app.c index aa2a3f64fd..2b9a6542d7 100644 --- a/applications/services/rpc/rpc_app.c +++ b/applications/services/rpc/rpc_app.c @@ -258,6 +258,41 @@ static void rpc_system_app_button_release(const PB_Main* request, void* context) } } +static void rpc_system_app_button_press_release(const PB_Main* request, void* context) { + furi_assert(request); + furi_assert(request->which_content == PB_Main_app_button_press_release_request_tag); + + RpcAppSystem* rpc_app = context; + furi_assert(rpc_app); + + if(rpc_app->callback) { + FURI_LOG_D(TAG, "ButtonPressRelease"); + + RpcAppSystemEvent event; + event.type = RpcAppEventTypeButtonPressRelease; + + if(strlen(request->content.app_button_press_release_request.args) != 0) { + event.data.type = RpcAppSystemEventDataTypeString; + event.data.string = request->content.app_button_press_release_request.args; + } else { + event.data.type = RpcAppSystemEventDataTypeInt32; + event.data.i32 = request->content.app_button_press_release_request.index; + } + + rpc_system_app_error_reset(rpc_app); + rpc_system_app_set_last_command(rpc_app, request->command_id, &event); + + rpc_app->callback(&event, rpc_app->callback_context); + + } else { + rpc_system_app_send_error_response( + rpc_app, + request->command_id, + PB_CommandStatus_ERROR_APP_NOT_RUNNING, + "ButtonPressRelease"); + } +} + static void rpc_system_app_get_error_process(const PB_Main* request, void* context) { furi_assert(request); furi_assert(request->which_content == PB_Main_app_get_error_request_tag); @@ -332,6 +367,7 @@ void rpc_system_app_confirm(RpcAppSystem* rpc_app, bool result) { rpc_app->last_event_type == RpcAppEventTypeLoadFile || rpc_app->last_event_type == RpcAppEventTypeButtonPress || rpc_app->last_event_type == RpcAppEventTypeButtonRelease || + rpc_app->last_event_type == RpcAppEventTypeButtonPressRelease || rpc_app->last_event_type == RpcAppEventTypeDataExchange); const uint32_t last_command_id = rpc_app->last_command_id; @@ -432,6 +468,9 @@ void* rpc_system_app_alloc(RpcSession* session) { rpc_handler.message_handler = rpc_system_app_button_release; rpc_add_handler(session, PB_Main_app_button_release_request_tag, &rpc_handler); + rpc_handler.message_handler = rpc_system_app_button_press_release; + rpc_add_handler(session, PB_Main_app_button_press_release_request_tag, &rpc_handler); + rpc_handler.message_handler = rpc_system_app_get_error_process; rpc_add_handler(session, PB_Main_app_get_error_request_tag, &rpc_handler); diff --git a/applications/services/rpc/rpc_app.h b/applications/services/rpc/rpc_app.h index aa6fd81cc8..377d9ccb34 100644 --- a/applications/services/rpc/rpc_app.h +++ b/applications/services/rpc/rpc_app.h @@ -90,6 +90,13 @@ typedef enum { * all activities to be conducted while a button is being pressed. */ RpcAppEventTypeButtonRelease, + /** + * @brief The client has informed the application that a button has been pressed and released. + * + * This command's meaning is application-specific, e.g. to perform an action + * once without repeating it. + */ + RpcAppEventTypeButtonPressRelease, /** * @brief The client has sent a byte array of arbitrary size. * @@ -162,6 +169,7 @@ void rpc_system_app_send_exited(RpcAppSystem* rpc_app); * - RpcAppEventTypeLoadFile * - RpcAppEventTypeButtonPress * - RpcAppEventTypeButtonRelease + * - RpcAppEventTypeButtonPressRelease * - RpcAppEventTypeDataExchange * * Not confirming these events will result in a client-side timeout. diff --git a/assets/protobuf b/assets/protobuf index 6c7c0d55e8..1c84fa4891 160000 --- a/assets/protobuf +++ b/assets/protobuf @@ -1 +1 @@ -Subproject commit 6c7c0d55e82cb89223cf4890a540af4cff837fa7 +Subproject commit 1c84fa48919cbb71d1cc65236fc0ee36740e24c6 From 99175796199ef4e0d6a166d3beb7db18c8fc071c Mon Sep 17 00:00:00 2001 From: Astra <93453568+Astrrra@users.noreply.github.com> Date: Wed, 18 Dec 2024 21:23:29 +0200 Subject: [PATCH 28/85] Increase system stack's reserved memory size (#4025) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: あく --- targets/f7/stm32wb55xx_flash.ld | 2 +- targets/f7/stm32wb55xx_ram_fw.ld | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/targets/f7/stm32wb55xx_flash.ld b/targets/f7/stm32wb55xx_flash.ld index 524da6fc32..ef61bb2388 100644 --- a/targets/f7/stm32wb55xx_flash.ld +++ b/targets/f7/stm32wb55xx_flash.ld @@ -3,7 +3,7 @@ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ _stack_end = 0x20030000; /* end of RAM */ /* Generate a link error if heap and stack don't fit into RAM */ -_stack_size = 0x200; /* required amount of stack */ +_stack_size = 0x400; /* required amount of stack */ MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1024K diff --git a/targets/f7/stm32wb55xx_ram_fw.ld b/targets/f7/stm32wb55xx_ram_fw.ld index f0e8ad678c..93579788d0 100644 --- a/targets/f7/stm32wb55xx_ram_fw.ld +++ b/targets/f7/stm32wb55xx_ram_fw.ld @@ -3,7 +3,7 @@ ENTRY(Reset_Handler) /* Highest address of the user mode stack */ _stack_end = 0x20030000; /* end of RAM */ /* Generate a link error if heap and stack don't fit into RAM */ -_stack_size = 0x200; /* required amount of stack */ +_stack_size = 0x400; /* required amount of stack */ MEMORY { FLASH (rx) : ORIGIN = 0x08000000, LENGTH = 1024K From 8d078e4b8cc7a3e2eb3aafc5f0a0055618511d26 Mon Sep 17 00:00:00 2001 From: Anna Antonenko Date: Thu, 19 Dec 2024 00:38:43 +0400 Subject: [PATCH 29/85] [FL-3927] FuriThread stdin (#3979) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: FuriThread stdin * ci: fix f18 * feat: stdio callback context Co-authored-by: Georgii Surkov <37121527+gsurkov@users.noreply.github.com> Co-authored-by: あく --- .../unit_tests/tests/furi/furi_stdio_test.c | 108 ++++++++++++++++++ .../debug/unit_tests/tests/furi/furi_test.c | 8 ++ applications/services/cli/cli.c | 10 +- applications/services/cli/cli_i.h | 3 +- applications/services/cli/cli_vcp.c | 9 +- furi/core/string.h | 8 +- furi/core/thread.c | 72 ++++++++++-- furi/core/thread.h | 59 +++++++++- lib/print/SConscript | 20 ++-- lib/print/wrappers.c | 47 +++++++- lib/print/wrappers.h | 6 + targets/f18/api_symbols.csv | 13 ++- targets/f7/api_symbols.csv | 13 ++- 13 files changed, 342 insertions(+), 34 deletions(-) create mode 100644 applications/debug/unit_tests/tests/furi/furi_stdio_test.c diff --git a/applications/debug/unit_tests/tests/furi/furi_stdio_test.c b/applications/debug/unit_tests/tests/furi/furi_stdio_test.c new file mode 100644 index 0000000000..94e2f613b6 --- /dev/null +++ b/applications/debug/unit_tests/tests/furi/furi_stdio_test.c @@ -0,0 +1,108 @@ +#include +#include +#include +#include "../test.h" // IWYU pragma: keep + +#define TAG "StdioTest" + +#define CONTEXT_MAGIC ((void*)0xDEADBEEF) + +// stdin + +static char mock_in[256]; +static size_t mock_in_len, mock_in_pos; + +static void set_mock_in(const char* str) { + size_t len = strlen(str); + strcpy(mock_in, str); + mock_in_len = len; + mock_in_pos = 0; +} + +static size_t mock_in_cb(char* buffer, size_t size, FuriWait wait, void* context) { + UNUSED(wait); + furi_check(context == CONTEXT_MAGIC); + size_t remaining = mock_in_len - mock_in_pos; + size = MIN(remaining, size); + memcpy(buffer, mock_in + mock_in_pos, size); + mock_in_pos += size; + return size; +} + +void test_stdin(void) { + FuriThreadStdinReadCallback in_cb = furi_thread_get_stdin_callback(); + furi_thread_set_stdin_callback(mock_in_cb, CONTEXT_MAGIC); + char buf[256]; + + // plain in + set_mock_in("Hello, World!\n"); + fgets(buf, sizeof(buf), stdin); + mu_assert_string_eq("Hello, World!\n", buf); + mu_assert_int_eq(EOF, getchar()); + + // ungetc + ungetc('i', stdin); + ungetc('H', stdin); + fgets(buf, sizeof(buf), stdin); + mu_assert_string_eq("Hi", buf); + mu_assert_int_eq(EOF, getchar()); + + // ungetc + plain in + set_mock_in(" World"); + ungetc('i', stdin); + ungetc('H', stdin); + fgets(buf, sizeof(buf), stdin); + mu_assert_string_eq("Hi World", buf); + mu_assert_int_eq(EOF, getchar()); + + // partial plain in + set_mock_in("Hello, World!\n"); + fgets(buf, strlen("Hello") + 1, stdin); + mu_assert_string_eq("Hello", buf); + mu_assert_int_eq(',', getchar()); + fgets(buf, sizeof(buf), stdin); + mu_assert_string_eq(" World!\n", buf); + + furi_thread_set_stdin_callback(in_cb, CONTEXT_MAGIC); +} + +// stdout + +static FuriString* mock_out; +FuriThreadStdoutWriteCallback original_out_cb; + +static void mock_out_cb(const char* data, size_t size, void* context) { + furi_check(context == CONTEXT_MAGIC); + // there's no furi_string_cat_strn :( + for(size_t i = 0; i < size; i++) { + furi_string_push_back(mock_out, data[i]); + } +} + +static void assert_and_clear_mock_out(const char* expected) { + // return the original stdout callback for the duration of the check + // if the check fails, we don't want the error to end up in our buffer, + // we want to be able to see it! + furi_thread_set_stdout_callback(original_out_cb, CONTEXT_MAGIC); + mu_assert_string_eq(expected, furi_string_get_cstr(mock_out)); + furi_thread_set_stdout_callback(mock_out_cb, CONTEXT_MAGIC); + + furi_string_reset(mock_out); +} + +void test_stdout(void) { + original_out_cb = furi_thread_get_stdout_callback(); + furi_thread_set_stdout_callback(mock_out_cb, CONTEXT_MAGIC); + mock_out = furi_string_alloc(); + + puts("Hello, World!"); + assert_and_clear_mock_out("Hello, World!\n"); + + printf("He"); + printf("llo!"); + fflush(stdout); + assert_and_clear_mock_out("Hello!"); + + furi_string_free(mock_out); + furi_thread_set_stdout_callback(original_out_cb, CONTEXT_MAGIC); +} diff --git a/applications/debug/unit_tests/tests/furi/furi_test.c b/applications/debug/unit_tests/tests/furi/furi_test.c index 193a8124d9..f23be37a97 100644 --- a/applications/debug/unit_tests/tests/furi/furi_test.c +++ b/applications/debug/unit_tests/tests/furi/furi_test.c @@ -10,6 +10,8 @@ void test_furi_memmgr(void); void test_furi_event_loop(void); void test_errno_saving(void); void test_furi_primitives(void); +void test_stdin(void); +void test_stdout(void); static int foo = 0; @@ -52,6 +54,11 @@ MU_TEST(mu_test_furi_primitives) { test_furi_primitives(); } +MU_TEST(mu_test_stdio) { + test_stdin(); + test_stdout(); +} + MU_TEST_SUITE(test_suite) { MU_SUITE_CONFIGURE(&test_setup, &test_teardown); MU_RUN_TEST(test_check); @@ -61,6 +68,7 @@ MU_TEST_SUITE(test_suite) { MU_RUN_TEST(mu_test_furi_pubsub); MU_RUN_TEST(mu_test_furi_memmgr); MU_RUN_TEST(mu_test_furi_event_loop); + MU_RUN_TEST(mu_test_stdio); MU_RUN_TEST(mu_test_errno_saving); MU_RUN_TEST(mu_test_furi_primitives); } diff --git a/applications/services/cli/cli.c b/applications/services/cli/cli.c index 0d8f52c04e..28ba417c26 100644 --- a/applications/services/cli/cli.c +++ b/applications/services/cli/cli.c @@ -431,9 +431,9 @@ void cli_session_open(Cli* cli, void* session) { cli->session = session; if(cli->session != NULL) { cli->session->init(); - furi_thread_set_stdout_callback(cli->session->tx_stdout); + furi_thread_set_stdout_callback(cli->session->tx_stdout, NULL); } else { - furi_thread_set_stdout_callback(NULL); + furi_thread_set_stdout_callback(NULL, NULL); } furi_semaphore_release(cli->idle_sem); furi_check(furi_mutex_release(cli->mutex) == FuriStatusOk); @@ -447,7 +447,7 @@ void cli_session_close(Cli* cli) { cli->session->deinit(); } cli->session = NULL; - furi_thread_set_stdout_callback(NULL); + furi_thread_set_stdout_callback(NULL, NULL); furi_check(furi_mutex_release(cli->mutex) == FuriStatusOk); } @@ -461,9 +461,9 @@ int32_t cli_srv(void* p) { furi_record_create(RECORD_CLI, cli); if(cli->session != NULL) { - furi_thread_set_stdout_callback(cli->session->tx_stdout); + furi_thread_set_stdout_callback(cli->session->tx_stdout, NULL); } else { - furi_thread_set_stdout_callback(NULL); + furi_thread_set_stdout_callback(NULL, NULL); } if(furi_hal_rtc_get_boot_mode() == FuriHalRtcBootModeNormal) { diff --git a/applications/services/cli/cli_i.h b/applications/services/cli/cli_i.h index d4cac6e7d9..d7351b9ffc 100644 --- a/applications/services/cli/cli_i.h +++ b/applications/services/cli/cli_i.h @@ -28,8 +28,9 @@ struct CliSession { void (*init)(void); void (*deinit)(void); size_t (*rx)(uint8_t* buffer, size_t size, uint32_t timeout); + size_t (*rx_stdin)(uint8_t* buffer, size_t size, uint32_t timeout, void* context); void (*tx)(const uint8_t* buffer, size_t size); - void (*tx_stdout)(const char* data, size_t size); + void (*tx_stdout)(const char* data, size_t size, void* context); bool (*is_connected)(void); }; diff --git a/applications/services/cli/cli_vcp.c b/applications/services/cli/cli_vcp.c index cdabaaa054..aa399e78a2 100644 --- a/applications/services/cli/cli_vcp.c +++ b/applications/services/cli/cli_vcp.c @@ -242,6 +242,11 @@ static size_t cli_vcp_rx(uint8_t* buffer, size_t size, uint32_t timeout) { return rx_cnt; } +static size_t cli_vcp_rx_stdin(uint8_t* data, size_t size, uint32_t timeout, void* context) { + UNUSED(context); + return cli_vcp_rx(data, size, timeout); +} + static void cli_vcp_tx(const uint8_t* buffer, size_t size) { furi_assert(vcp); furi_assert(buffer); @@ -267,7 +272,8 @@ static void cli_vcp_tx(const uint8_t* buffer, size_t size) { VCP_DEBUG("tx %u end", size); } -static void cli_vcp_tx_stdout(const char* data, size_t size) { +static void cli_vcp_tx_stdout(const char* data, size_t size, void* context) { + UNUSED(context); cli_vcp_tx((const uint8_t*)data, size); } @@ -310,6 +316,7 @@ CliSession cli_vcp = { cli_vcp_init, cli_vcp_deinit, cli_vcp_rx, + cli_vcp_rx_stdin, cli_vcp_tx, cli_vcp_tx_stdout, cli_vcp_is_connected, diff --git a/furi/core/string.h b/furi/core/string.h index 84b8c6a240..0d407356bc 100644 --- a/furi/core/string.h +++ b/furi/core/string.h @@ -129,12 +129,12 @@ void furi_string_swap(FuriString* string_1, FuriString* string_2); /** Move string_2 content to string_1. * - * Set the string to the other one, and destroy the other one. + * Copy data from one string to another and destroy the source. * - * @param string_1 The FuriString instance 1 - * @param string_2 The FuriString instance 2 + * @param destination The destination FuriString + * @param source The source FuriString */ -void furi_string_move(FuriString* string_1, FuriString* string_2); +void furi_string_move(FuriString* destination, FuriString* source); /** Compute a hash for the string. * diff --git a/furi/core/thread.c b/furi/core/thread.c index fd576ea72b..6e51579577 100644 --- a/furi/core/thread.c +++ b/furi/core/thread.c @@ -23,12 +23,17 @@ #define THREAD_MAX_STACK_SIZE (UINT16_MAX * sizeof(StackType_t)) -typedef struct FuriThreadStdout FuriThreadStdout; - -struct FuriThreadStdout { +typedef struct { FuriThreadStdoutWriteCallback write_callback; FuriString* buffer; -}; + void* context; +} FuriThreadStdout; + +typedef struct { + FuriThreadStdinReadCallback read_callback; + FuriString* unread_buffer; // output.buffer = furi_string_alloc(); + thread->input.unread_buffer = furi_string_alloc(); FuriThread* parent = NULL; if(xTaskGetSchedulerState() != taskSCHEDULER_NOT_STARTED) { @@ -245,6 +252,7 @@ void furi_thread_free(FuriThread* thread) { } furi_string_free(thread->output.buffer); + furi_string_free(thread->input.unread_buffer); free(thread); } @@ -710,13 +718,22 @@ uint32_t furi_thread_get_stack_space(FuriThreadId thread_id) { static size_t __furi_thread_stdout_write(FuriThread* thread, const char* data, size_t size) { if(thread->output.write_callback != NULL) { - thread->output.write_callback(data, size); + thread->output.write_callback(data, size, thread->output.context); } else { furi_log_tx((const uint8_t*)data, size); } return size; } +static size_t + __furi_thread_stdin_read(FuriThread* thread, char* data, size_t size, FuriWait timeout) { + if(thread->input.read_callback != NULL) { + return thread->input.read_callback(data, size, timeout, thread->input.context); + } else { + return 0; + } +} + static int32_t __furi_thread_stdout_flush(FuriThread* thread) { FuriString* buffer = thread->output.buffer; size_t size = furi_string_size(buffer); @@ -727,17 +744,31 @@ static int32_t __furi_thread_stdout_flush(FuriThread* thread) { return 0; } -void furi_thread_set_stdout_callback(FuriThreadStdoutWriteCallback callback) { +FuriThreadStdoutWriteCallback furi_thread_get_stdout_callback(void) { + FuriThread* thread = furi_thread_get_current(); + furi_check(thread); + return thread->output.write_callback; +} + +FuriThreadStdinReadCallback furi_thread_get_stdin_callback(void) { + FuriThread* thread = furi_thread_get_current(); + furi_check(thread); + return thread->input.read_callback; +} + +void furi_thread_set_stdout_callback(FuriThreadStdoutWriteCallback callback, void* context) { FuriThread* thread = furi_thread_get_current(); furi_check(thread); __furi_thread_stdout_flush(thread); thread->output.write_callback = callback; + thread->output.context = context; } -FuriThreadStdoutWriteCallback furi_thread_get_stdout_callback(void) { +void furi_thread_set_stdin_callback(FuriThreadStdinReadCallback callback, void* context) { FuriThread* thread = furi_thread_get_current(); furi_check(thread); - return thread->output.write_callback; + thread->input.read_callback = callback; + thread->input.context = context; } size_t furi_thread_stdout_write(const char* data, size_t size) { @@ -772,6 +803,31 @@ int32_t furi_thread_stdout_flush(void) { return __furi_thread_stdout_flush(thread); } +size_t furi_thread_stdin_read(char* buffer, size_t size, FuriWait timeout) { + FuriThread* thread = furi_thread_get_current(); + furi_check(thread); + + size_t from_buffer = MIN(furi_string_size(thread->input.unread_buffer), size); + size_t from_input = size - from_buffer; + size_t from_input_actual = + __furi_thread_stdin_read(thread, buffer + from_buffer, from_input, timeout); + memcpy(buffer, furi_string_get_cstr(thread->input.unread_buffer), from_buffer); + furi_string_right(thread->input.unread_buffer, from_buffer); + + return from_buffer + from_input_actual; +} + +void furi_thread_stdin_unread(char* buffer, size_t size) { + FuriThread* thread = furi_thread_get_current(); + furi_check(thread); + + FuriString* new_buf = furi_string_alloc(); // there's no furi_string_alloc_set_strn :( + furi_string_set_strn(new_buf, buffer, size); + furi_string_cat(new_buf, thread->input.unread_buffer); + furi_string_free(thread->input.unread_buffer); + thread->input.unread_buffer = new_buf; +} + void furi_thread_suspend(FuriThreadId thread_id) { furi_check(thread_id); diff --git a/furi/core/thread.h b/furi/core/thread.h index ed7aa4553b..9abfde5cd8 100644 --- a/furi/core/thread.h +++ b/furi/core/thread.h @@ -74,8 +74,23 @@ typedef int32_t (*FuriThreadCallback)(void* context); * * @param[in] data pointer to the data to be written to the standard out * @param[in] size size of the data in bytes + * @param[in] context optional context */ -typedef void (*FuriThreadStdoutWriteCallback)(const char* data, size_t size); +typedef void (*FuriThreadStdoutWriteCallback)(const char* data, size_t size, void* context); + +/** + * @brief Standard input callback function pointer type + * + * The function to be used as a standard input callback MUST follow this signature. + * + * @param[out] buffer buffer to read data into + * @param[in] size maximum number of bytes to read into the buffer + * @param[in] timeout how long to wait for (in ticks) before giving up + * @param[in] context optional context + * @returns number of bytes that was actually read into the buffer + */ +typedef size_t ( + *FuriThreadStdinReadCallback)(char* buffer, size_t size, FuriWait timeout, void* context); /** * @brief State change callback function pointer type. @@ -468,13 +483,30 @@ uint32_t furi_thread_get_stack_space(FuriThreadId thread_id); */ FuriThreadStdoutWriteCallback furi_thread_get_stdout_callback(void); +/** + * @brief Get the standard input callback for the current thead. + * + * @return pointer to the standard in callback function + */ +FuriThreadStdinReadCallback furi_thread_get_stdin_callback(void); + /** Set standard output callback for the current thread. * * @param[in] callback pointer to the callback function or NULL to clear + * @param[in] context context to be passed to the callback */ -void furi_thread_set_stdout_callback(FuriThreadStdoutWriteCallback callback); +void furi_thread_set_stdout_callback(FuriThreadStdoutWriteCallback callback, void* context); + +/** Set standard input callback for the current thread. + * + * @param[in] callback pointer to the callback function or NULL to clear + * @param[in] context context to be passed to the callback + */ +void furi_thread_set_stdin_callback(FuriThreadStdinReadCallback callback, void* context); /** Write data to buffered standard output. + * + * @note You can also use the standard C `putc`, `puts`, `printf` and friends. * * @param[in] data pointer to the data to be written * @param[in] size data size in bytes @@ -489,6 +521,29 @@ size_t furi_thread_stdout_write(const char* data, size_t size); */ int32_t furi_thread_stdout_flush(void); +/** Read data from the standard input + * + * @note You can also use the standard C `getc`, `gets` and friends. + * + * @param[in] buffer pointer to the buffer to read data into + * @param[in] size how many bytes to read into the buffer + * @param[in] timeout how long to wait for (in ticks) before giving up + * @return number of bytes that was actually read + */ +size_t furi_thread_stdin_read(char* buffer, size_t size, FuriWait timeout); + +/** Puts data back into the standard input buffer + * + * `furi_thread_stdin_read` will return the bytes in the same order that they + * were supplied to this function. + * + * @note You can also use the standard C `ungetc`. + * + * @param[in] buffer pointer to the buffer to get data from + * @param[in] size how many bytes to read from the buffer + */ +void furi_thread_stdin_unread(char* buffer, size_t size); + /** * @brief Suspend a thread. * diff --git a/lib/print/SConscript b/lib/print/SConscript index 07be8d890e..90028cf06a 100644 --- a/lib/print/SConscript +++ b/lib/print/SConscript @@ -44,18 +44,24 @@ wrapped_fn_list = [ "vsiprintf", "vsniprintf", # - # Scanf is not implemented 4 now + # standard input + # + "fgetc", + "getc", + "getchar", + "fgets", + "ungetc", + # + # standard input, but unimplemented + # + "gets", + # + # scanf, not implemented for now # # "fscanf", # "scanf", # "sscanf", # "vsprintf", - # "fgetc", - # "fgets", - # "getc", - # "getchar", - # "gets", - # "ungetc", # "vfscanf", # "vscanf", # "vsscanf", diff --git a/lib/print/wrappers.c b/lib/print/wrappers.c index c8d72d1928..18df92def8 100644 --- a/lib/print/wrappers.c +++ b/lib/print/wrappers.c @@ -51,11 +51,54 @@ int __wrap_snprintf(char* str, size_t size, const char* format, ...) { } int __wrap_fflush(FILE* stream) { - UNUSED(stream); - furi_thread_stdout_flush(); + if(stream == stdout) furi_thread_stdout_flush(); return 0; } +int __wrap_fgetc(FILE* stream) { + if(stream != stdin) return EOF; + char c; + if(furi_thread_stdin_read(&c, 1, FuriWaitForever) == 0) return EOF; + return c; +} + +int __wrap_getc(FILE* stream) { + return __wrap_fgetc(stream); +} + +int __wrap_getchar(void) { + return __wrap_fgetc(stdin); +} + +char* __wrap_fgets(char* str, size_t n, FILE* stream) { + // leave space for the zero terminator + furi_check(n >= 1); + n--; + + if(stream != stdin) { + *str = '\0'; + return str; + } + + // read characters + int c; + do { + c = __wrap_fgetc(stdin); + if(c > 0) *(str++) = c; + } while(c != EOF && c != '\n' && --n); + + // place zero terminator + *str = '\0'; + return str; +} + +int __wrap_ungetc(int ch, FILE* stream) { + char c = ch; + if(stream != stdin) return EOF; + furi_thread_stdin_unread(&c, 1); + return ch; +} + __attribute__((__noreturn__)) void __wrap___assert(const char* file, int line, const char* e) { UNUSED(file); UNUSED(line); diff --git a/lib/print/wrappers.h b/lib/print/wrappers.h index 3cec88249a..8a4599b417 100644 --- a/lib/print/wrappers.h +++ b/lib/print/wrappers.h @@ -16,6 +16,12 @@ int __wrap_putc(int ch, FILE* stream); int __wrap_snprintf(char* str, size_t size, const char* format, ...); int __wrap_fflush(FILE* stream); +int __wrap_fgetc(FILE* stream); +int __wrap_getc(FILE* stream); +int __wrap_getchar(void); +char* __wrap_fgets(char* str, size_t n, FILE* stream); +int __wrap_ungetc(int ch, FILE* stream); + __attribute__((__noreturn__)) void __wrap___assert(const char* file, int line, const char* e); __attribute__((__noreturn__)) void diff --git a/targets/f18/api_symbols.csv b/targets/f18/api_symbols.csv index b5d51a0dd5..23421712d0 100644 --- a/targets/f18/api_symbols.csv +++ b/targets/f18/api_symbols.csv @@ -1,5 +1,5 @@ entry,status,name,type,params -Version,+,78.1,, +Version,+,79.0,, Header,+,applications/services/bt/bt_service/bt.h,, Header,+,applications/services/bt/bt_service/bt_keys_storage.h,, Header,+,applications/services/cli/cli.h,, @@ -371,11 +371,16 @@ Function,-,__utoa,char*,"unsigned, char*, int" Function,+,__wrap___assert,void,"const char*, int, const char*" Function,+,__wrap___assert_func,void,"const char*, int, const char*, const char*" Function,+,__wrap_fflush,int,FILE* +Function,+,__wrap_fgetc,int,FILE* +Function,+,__wrap_fgets,char*,"char*, size_t, FILE*" +Function,+,__wrap_getc,int,FILE* +Function,+,__wrap_getchar,int, Function,+,__wrap_printf,int,"const char*, ..." Function,+,__wrap_putc,int,"int, FILE*" Function,+,__wrap_putchar,int,int Function,+,__wrap_puts,int,const char* Function,+,__wrap_snprintf,int,"char*, size_t, const char*, ..." +Function,+,__wrap_ungetc,int,"int, FILE*" Function,+,__wrap_vsnprintf,int,"char*, size_t, const char*, va_list" Function,-,_asiprintf_r,int,"_reent*, char**, const char*, ..." Function,-,_asniprintf_r,char*,"_reent*, char*, size_t*, const char*, ..." @@ -1654,6 +1659,7 @@ Function,+,furi_thread_get_return_code,int32_t,FuriThread* Function,+,furi_thread_get_signal_callback,FuriThreadSignalCallback,const FuriThread* Function,+,furi_thread_get_stack_space,uint32_t,FuriThreadId Function,+,furi_thread_get_state,FuriThreadState,FuriThread* +Function,+,furi_thread_get_stdin_callback,FuriThreadStdinReadCallback, Function,+,furi_thread_get_stdout_callback,FuriThreadStdoutWriteCallback, Function,+,furi_thread_is_suspended,_Bool,FuriThreadId Function,+,furi_thread_join,_Bool,FuriThread* @@ -1674,9 +1680,12 @@ Function,+,furi_thread_set_signal_callback,void,"FuriThread*, FuriThreadSignalCa Function,+,furi_thread_set_stack_size,void,"FuriThread*, size_t" Function,+,furi_thread_set_state_callback,void,"FuriThread*, FuriThreadStateCallback" Function,+,furi_thread_set_state_context,void,"FuriThread*, void*" -Function,+,furi_thread_set_stdout_callback,void,FuriThreadStdoutWriteCallback +Function,+,furi_thread_set_stdin_callback,void,"FuriThreadStdinReadCallback, void*" +Function,+,furi_thread_set_stdout_callback,void,"FuriThreadStdoutWriteCallback, void*" Function,+,furi_thread_signal,_Bool,"const FuriThread*, uint32_t, void*" Function,+,furi_thread_start,void,FuriThread* +Function,+,furi_thread_stdin_read,size_t,"char*, size_t, FuriWait" +Function,+,furi_thread_stdin_unread,void,"char*, size_t" Function,+,furi_thread_stdout_flush,int32_t, Function,+,furi_thread_stdout_write,size_t,"const char*, size_t" Function,+,furi_thread_suspend,void,FuriThreadId diff --git a/targets/f7/api_symbols.csv b/targets/f7/api_symbols.csv index ee81f76a97..6f9fc5466e 100644 --- a/targets/f7/api_symbols.csv +++ b/targets/f7/api_symbols.csv @@ -1,5 +1,5 @@ entry,status,name,type,params -Version,+,78.1,, +Version,+,79.0,, Header,+,applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h,, Header,+,applications/services/bt/bt_service/bt.h,, Header,+,applications/services/bt/bt_service/bt_keys_storage.h,, @@ -448,11 +448,16 @@ Function,-,__utoa,char*,"unsigned, char*, int" Function,+,__wrap___assert,void,"const char*, int, const char*" Function,+,__wrap___assert_func,void,"const char*, int, const char*, const char*" Function,+,__wrap_fflush,int,FILE* +Function,+,__wrap_fgetc,int,FILE* +Function,+,__wrap_fgets,char*,"char*, size_t, FILE*" +Function,+,__wrap_getc,int,FILE* +Function,+,__wrap_getchar,int, Function,+,__wrap_printf,int,"const char*, ..." Function,+,__wrap_putc,int,"int, FILE*" Function,+,__wrap_putchar,int,int Function,+,__wrap_puts,int,const char* Function,+,__wrap_snprintf,int,"char*, size_t, const char*, ..." +Function,+,__wrap_ungetc,int,"int, FILE*" Function,+,__wrap_vsnprintf,int,"char*, size_t, const char*, va_list" Function,-,_asiprintf_r,int,"_reent*, char**, const char*, ..." Function,-,_asniprintf_r,char*,"_reent*, char*, size_t*, const char*, ..." @@ -1873,6 +1878,7 @@ Function,+,furi_thread_get_return_code,int32_t,FuriThread* Function,+,furi_thread_get_signal_callback,FuriThreadSignalCallback,const FuriThread* Function,+,furi_thread_get_stack_space,uint32_t,FuriThreadId Function,+,furi_thread_get_state,FuriThreadState,FuriThread* +Function,+,furi_thread_get_stdin_callback,FuriThreadStdinReadCallback, Function,+,furi_thread_get_stdout_callback,FuriThreadStdoutWriteCallback, Function,+,furi_thread_is_suspended,_Bool,FuriThreadId Function,+,furi_thread_join,_Bool,FuriThread* @@ -1893,9 +1899,12 @@ Function,+,furi_thread_set_signal_callback,void,"FuriThread*, FuriThreadSignalCa Function,+,furi_thread_set_stack_size,void,"FuriThread*, size_t" Function,+,furi_thread_set_state_callback,void,"FuriThread*, FuriThreadStateCallback" Function,+,furi_thread_set_state_context,void,"FuriThread*, void*" -Function,+,furi_thread_set_stdout_callback,void,FuriThreadStdoutWriteCallback +Function,+,furi_thread_set_stdin_callback,void,"FuriThreadStdinReadCallback, void*" +Function,+,furi_thread_set_stdout_callback,void,"FuriThreadStdoutWriteCallback, void*" Function,+,furi_thread_signal,_Bool,"const FuriThread*, uint32_t, void*" Function,+,furi_thread_start,void,FuriThread* +Function,+,furi_thread_stdin_read,size_t,"char*, size_t, FuriWait" +Function,+,furi_thread_stdin_unread,void,"char*, size_t" Function,+,furi_thread_stdout_flush,int32_t, Function,+,furi_thread_stdout_write,size_t,"const char*, size_t" Function,+,furi_thread_suspend,void,FuriThreadId From 8c4922a32212a47b25fde268365cd0068003fbdc Mon Sep 17 00:00:00 2001 From: Emmanuel Ferdman Date: Wed, 18 Dec 2024 22:55:21 +0200 Subject: [PATCH 30/85] Update `infrared_test.c` reference (#3983) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Emmanuel Ferdman Co-authored-by: あく --- documentation/UnitTests.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/documentation/UnitTests.md b/documentation/UnitTests.md index 9711c6ae17..5d04c8f67d 100644 --- a/documentation/UnitTests.md +++ b/documentation/UnitTests.md @@ -43,7 +43,7 @@ To add unit tests for your protocol, follow these steps: 1. Create a file named `test_.irtest` in the [assets](https://github.com/flipperdevices/flipperzero-firmware/tree/dev/applications/debug/unit_tests/resources/unit_tests/infrared) directory. 2. Fill it with the test data (more on it below). -3. Add the test code to [infrared_test.c](https://github.com/flipperdevices/flipperzero-firmware/blob/dev/applications/debug/unit_tests/infrared/infrared_test.c). +3. Add the test code to [infrared_test.c](https://github.com/flipperdevices/flipperzero-firmware/blob/dev/applications/debug/unit_tests/tests/infrared/infrared_test.c). 4. Build and install firmware with resources, install it on your Flipper and run the tests to see if they pass. ##### Test data format From 9c96bbfc540b0719cb58095e88fb9dc06b5c61d2 Mon Sep 17 00:00:00 2001 From: RebornedBrain <138568282+RebornedBrain@users.noreply.github.com> Date: Thu, 19 Dec 2024 00:01:20 +0300 Subject: [PATCH 31/85] [NFC] Fix ISO15693 stucking in wrong mode. (#3988) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: あく --- lib/signal_reader/parsers/iso15693/iso15693_parser.c | 2 ++ 1 file changed, 2 insertions(+) diff --git a/lib/signal_reader/parsers/iso15693/iso15693_parser.c b/lib/signal_reader/parsers/iso15693/iso15693_parser.c index a2c6912e63..e47c734a27 100644 --- a/lib/signal_reader/parsers/iso15693/iso15693_parser.c +++ b/lib/signal_reader/parsers/iso15693/iso15693_parser.c @@ -243,6 +243,8 @@ static Iso15693ParserCommand iso15693_parser_parse_1_out_of_256(Iso15693Parser* instance->parsed_frame, instance->next_byte_part * 4 + j / 2); } } + } else { + instance->zero_found = true; } } instance->next_byte_part = (instance->next_byte_part + 1) % 64; From a7b3a135815f403006b52ba55d7e82234378a596 Mon Sep 17 00:00:00 2001 From: WillyJL <49810075+Willy-JL@users.noreply.github.com> Date: Wed, 18 Dec 2024 22:33:59 +0100 Subject: [PATCH 32/85] Loader: Fix BusFault in handling of OOM (#3992) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Loader: Fix BusFault in handling of OOM * Furi: fix crash in aligned_alloc, cleanup aligned_alloc use Co-authored-by: あく --- furi/core/memmgr.c | 4 +++- lib/flipper_application/elf/elf_file.c | 12 +++++------- 2 files changed, 8 insertions(+), 8 deletions(-) diff --git a/furi/core/memmgr.c b/furi/core/memmgr.c index d3ff873ae5..8ee0d1723b 100644 --- a/furi/core/memmgr.c +++ b/furi/core/memmgr.c @@ -106,5 +106,7 @@ void* aligned_malloc(size_t size, size_t alignment) { } void aligned_free(void* p) { - free(((void**)p)[-1]); + if(p) { + free(((void**)p)[-1]); + } } diff --git a/lib/flipper_application/elf/elf_file.c b/lib/flipper_application/elf/elf_file.c index d0c4f52fb1..bd8ecdf7ef 100644 --- a/lib/flipper_application/elf/elf_file.c +++ b/lib/flipper_application/elf/elf_file.c @@ -8,11 +8,11 @@ #define TAG "Elf" -#define ELF_NAME_BUFFER_LEN 32 -#define SECTION_OFFSET(e, n) ((e)->section_table + (n) * sizeof(Elf32_Shdr)) -#define IS_FLAGS_SET(v, m) (((v) & (m)) == (m)) +#define ELF_NAME_BUFFER_LEN 32 +#define SECTION_OFFSET(e, n) ((e)->section_table + (n) * sizeof(Elf32_Shdr)) +#define IS_FLAGS_SET(v, m) (((v) & (m)) == (m)) #define RESOLVER_THREAD_YIELD_STEP 30 -#define FAST_RELOCATION_VERSION 1 +#define FAST_RELOCATION_VERSION 1 // #define ELF_DEBUG_LOG 1 @@ -830,9 +830,7 @@ void elf_file_free(ELFFile* elf) { for(ELFSectionDict_it(it, elf->sections); !ELFSectionDict_end_p(it); ELFSectionDict_next(it)) { const ELFSectionDict_itref_t* itref = ELFSectionDict_cref(it); - if(itref->value.data) { - aligned_free(itref->value.data); - } + aligned_free(itref->value.data); if(itref->value.fast_rel) { aligned_free(itref->value.fast_rel->data); free(itref->value.fast_rel); From 8dd5e64c0384edf93f33eaf01fce412c38a3858d Mon Sep 17 00:00:00 2001 From: Evgeny E <10674163+ssecsd@users.noreply.github.com> Date: Thu, 19 Dec 2024 17:52:37 +0000 Subject: [PATCH 33/85] Move updater and unit tests to dockerized runner (#4028) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * extended unit_tests and changed to dockerized runner * added branch to run units * fixing unit-tests-output * online output * command not found fix * added stm logging * cleaned output * Updated updater test to work on dockerized runner * Test run for changed actions * small refactor of run_unit_tests * Final test of jobs * Checked * On-failure actions runs only on fail * Set action trigger to pull request * Bumped timeout a little * Removed extra steps * Removed stm monitor, as it's now part of docker-runner * fix: testops without stm_monitoring * fix: timeout extended Co-authored-by: あく --- .github/workflows/unit_tests.yml | 48 ++++----- .github/workflows/updater_test.yml | 54 ++-------- scripts/testops.py | 156 +++++++++++++++++++---------- 3 files changed, 131 insertions(+), 127 deletions(-) diff --git a/.github/workflows/unit_tests.yml b/.github/workflows/unit_tests.yml index d37337452a..309dd7ebd4 100644 --- a/.github/workflows/unit_tests.yml +++ b/.github/workflows/unit_tests.yml @@ -5,54 +5,39 @@ on: env: TARGETS: f7 DEFAULT_TARGET: f7 - FBT_TOOLCHAIN_PATH: /opt + FBT_TOOLCHAIN_PATH: /opt/ FBT_GIT_SUBMODULE_SHALLOW: 1 jobs: run_units_on_bench: - runs-on: [self-hosted, FlipperZeroUnitTest] + runs-on: [ self-hosted, FlipperZeroTest ] steps: - - name: 'Wipe workspace' - run: find ./ -mount -maxdepth 1 -exec rm -rf {} \; - - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 1 ref: ${{ github.event.pull_request.head.sha }} - - name: 'Get flipper from device manager (mock)' - id: device - run: | - echo "flipper=auto" >> $GITHUB_OUTPUT - - name: 'Flash unit tests firmware' id: flashing if: success() - timeout-minutes: 10 - run: | - ./fbt resources firmware_latest flash SWD_TRANSPORT_SERIAL=2A0906016415303030303032 LIB_DEBUG=1 FIRMWARE_APP_SET=unit_tests FORCE=1 - - - name: 'Wait for flipper and format ext' - id: format_ext - if: steps.flashing.outcome == 'success' - timeout-minutes: 5 + timeout-minutes: 20 run: | source scripts/toolchain/fbtenv.sh - python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=120 await_flipper - python3 scripts/storage.py -p ${{steps.device.outputs.flipper}} format_ext + ./fbt resources firmware_latest flash LIB_DEBUG=1 FIRMWARE_APP_SET=unit_tests FORCE=1 + - name: 'Copy assets and unit data, reboot and wait for flipper' id: copy - if: steps.format_ext.outcome == 'success' + if: steps.flashing.outcome == 'success' timeout-minutes: 7 run: | source scripts/toolchain/fbtenv.sh - python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=15 await_flipper - rm -rf build/latest/resources/dolphin - python3 scripts/storage.py -p ${{steps.device.outputs.flipper}} -f send build/latest/resources /ext - python3 scripts/power.py -p ${{steps.device.outputs.flipper}} reboot - python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=15 await_flipper + python3 scripts/testops.py -t=15 await_flipper + python3 scripts/storage.py -f send build/latest/resources /ext + python3 scripts/storage.py -f send /region_data /ext/.int/.region_data + python3 scripts/power.py reboot + python3 scripts/testops.py -t=30 await_flipper - name: 'Run units and validate results' id: run_units @@ -60,9 +45,16 @@ jobs: timeout-minutes: 7 run: | source scripts/toolchain/fbtenv.sh - python3 scripts/testops.py run_units -p ${{steps.device.outputs.flipper}} + python3 scripts/testops.py run_units + + - name: 'Upload test results' + if: failure() && steps.flashing.outcome == 'success' && steps.run_units.outcome != 'skipped' + uses: actions/upload-artifact@v4 + with: + name: unit-tests_output + path: unit_tests*.txt - name: 'Check GDB output' if: failure() && steps.flashing.outcome == 'success' run: | - ./fbt gdb_trace_all SWD_TRANSPORT_SERIAL=2A0906016415303030303032 LIB_DEBUG=1 FIRMWARE_APP_SET=unit_tests FORCE=1 + ./fbt gdb_trace_all LIB_DEBUG=1 FIRMWARE_APP_SET=unit_tests FORCE=1 diff --git a/.github/workflows/updater_test.yml b/.github/workflows/updater_test.yml index dbe5df883d..59cc6e716b 100644 --- a/.github/workflows/updater_test.yml +++ b/.github/workflows/updater_test.yml @@ -1,39 +1,31 @@ name: 'Updater test' on: pull_request: + env: TARGETS: f7 DEFAULT_TARGET: f7 - FBT_TOOLCHAIN_PATH: /opt + FBT_TOOLCHAIN_PATH: /opt/ FBT_GIT_SUBMODULE_SHALLOW: 1 jobs: test_updater_on_bench: - runs-on: [self-hosted, FlipperZeroUpdaterTest] + runs-on: [self-hosted, FlipperZeroTest ] steps: - - name: 'Wipe workspace' - run: find ./ -mount -maxdepth 1 -exec rm -rf {} \; - - name: Checkout code uses: actions/checkout@v4 with: fetch-depth: 1 - submodules: false ref: ${{ github.event.pull_request.head.sha }} - - name: 'Get flipper from device manager (mock)' - id: device - run: | - echo "flipper=auto" >> $GITHUB_OUTPUT - echo "stlink=0F020D026415303030303032" >> $GITHUB_OUTPUT - - name: 'Flashing target firmware' id: first_full_flash - timeout-minutes: 10 + timeout-minutes: 20 run: | source scripts/toolchain/fbtenv.sh - ./fbt flash_usb_full PORT=${{steps.device.outputs.flipper}} FORCE=1 - python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=180 await_flipper + python3 scripts/testops.py -t=180 await_flipper + ./fbt flash_usb_full FORCE=1 + - name: 'Validating updater' id: second_full_flash @@ -41,33 +33,7 @@ jobs: if: success() run: | source scripts/toolchain/fbtenv.sh - ./fbt flash_usb PORT=${{steps.device.outputs.flipper}} FORCE=1 - python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=180 await_flipper - - - name: 'Get last release tag' - id: release_tag - if: failure() - run: | - echo "tag=$(git tag -l --sort=-version:refname | grep -v "rc\|RC" | head -1)" >> $GITHUB_OUTPUT - - - name: 'Wipe workspace' - run: find ./ -mount -maxdepth 1 -exec rm -rf {} \; + python3 scripts/testops.py -t=180 await_flipper + ./fbt flash_usb FORCE=1 + python3 scripts/testops.py -t=180 await_flipper - - name: 'Checkout latest release' - uses: actions/checkout@v4 - if: failure() - with: - fetch-depth: 1 - ref: ${{ steps.release_tag.outputs.tag }} - - - name: 'Flash last release' - if: failure() - run: | - ./fbt flash SWD_TRANSPORT_SERIAL=${{steps.device.outputs.stlink}} FORCE=1 - - - name: 'Wait for flipper and format ext' - if: failure() - run: | - source scripts/toolchain/fbtenv.sh - python3 scripts/testops.py -p=${{steps.device.outputs.flipper}} -t=180 await_flipper - python3 scripts/storage.py -p ${{steps.device.outputs.flipper}} format_ext diff --git a/scripts/testops.py b/scripts/testops.py index 4ae10c7f4a..3100a9b7fe 100644 --- a/scripts/testops.py +++ b/scripts/testops.py @@ -1,8 +1,7 @@ #!/usr/bin/env python3 - import re -import sys import time +from datetime import datetime from typing import Optional from flipper.app import App @@ -11,7 +10,10 @@ class Main(App): - # this is basic use without sub-commands, simply to reboot flipper / power it off, not meant as a full CLI wrapper + def __init__(self, no_exit=False): + super().__init__(no_exit) + self.test_results = None + def init(self): self.parser.add_argument("-p", "--port", help="CDC Port", default="auto") self.parser.add_argument( @@ -67,64 +69,108 @@ def run_units(self): self.logger.info("Running unit tests") flipper.send("unit_tests" + "\r") self.logger.info("Waiting for unit tests to complete") - data = flipper.read.until(">: ") - self.logger.info("Parsing result") - - lines = data.decode().split("\r\n") - - tests_re = r"Failed tests: \d{0,}" - time_re = r"Consumed: \d{0,}" - leak_re = r"Leaked: \d{0,}" - status_re = r"Status: \w{3,}" - - tests_pattern = re.compile(tests_re) - time_pattern = re.compile(time_re) - leak_pattern = re.compile(leak_re) - status_pattern = re.compile(status_re) tests, elapsed_time, leak, status = None, None, None, None total = 0 - - for line in lines: - self.logger.info(line) - if "()" in line: - total += 1 - - if not tests: - tests = re.match(tests_pattern, line) - if not elapsed_time: - elapsed_time = re.match(time_pattern, line) - if not leak: - leak = re.match(leak_pattern, line) - if not status: - status = re.match(status_pattern, line) - - if None in (tests, elapsed_time, leak, status): - self.logger.error( - f"Failed to parse output: {tests} {elapsed_time} {leak} {status}" + all_required_found = False + + full_output = [] + + tests_pattern = re.compile(r"Failed tests: \d{0,}") + time_pattern = re.compile(r"Consumed: \d{0,}") + leak_pattern = re.compile(r"Leaked: \d{0,}") + status_pattern = re.compile(r"Status: \w{3,}") + + try: + while not all_required_found: + try: + line = flipper.read.until("\r\n", cut_eol=True).decode() + self.logger.info(line) + if "command not found," in line: + self.logger.error(f"Command not found: {line}") + return 1 + + if "()" in line: + total += 1 + self.logger.debug(f"Test completed: {line}") + + if not tests: + tests = tests_pattern.match(line) + if not elapsed_time: + elapsed_time = time_pattern.match(line) + if not leak: + leak = leak_pattern.match(line) + if not status: + status = status_pattern.match(line) + + pattern = re.compile( + r"(\[-]|\[\\]|\[\|]|\[/-]|\[[^\]]*\]|\x1b\[\d+D)" + ) + line_to_append = pattern.sub("", line) + pattern = re.compile(r"\[3D[^\]]*") + line_to_append = pattern.sub("", line_to_append) + line_to_append = f"{datetime.now().strftime('%Y-%m-%d %H:%M:%S,%f')} {line_to_append}" + + full_output.append(line_to_append) + + if tests and elapsed_time and leak and status: + all_required_found = True + try: + remaining = flipper.read.until(">: ", cut_eol=True).decode() + if remaining.strip(): + full_output.append(remaining) + except: + pass + break + + except Exception as e: + self.logger.error(f"Error reading output: {e}") + raise + + if None in (tests, elapsed_time, leak, status): + raise RuntimeError( + f"Failed to parse output: {tests} {elapsed_time} {leak} {status}" + ) + + leak = int(re.findall(r"[- ]\d+", leak.group(0))[0]) + status = re.findall(r"\w+", status.group(0))[1] + tests = int(re.findall(r"\d+", tests.group(0))[0]) + elapsed_time = int(re.findall(r"\d+", elapsed_time.group(0))[0]) + + test_results = { + "full_output": "\n".join(full_output), + "total_tests": total, + "failed_tests": tests, + "elapsed_time_ms": elapsed_time, + "memory_leak_bytes": leak, + "status": status, + } + + self.test_results = test_results + + output_file = "unit_tests_output.txt" + with open(output_file, "w") as f: + f.write(test_results["full_output"]) + + print( + f"::notice:: Total tests: {total} Failed tests: {tests} Status: {status} Elapsed time: {elapsed_time / 1000} s Memory leak: {leak} bytes" ) - sys.exit(1) - - leak = int(re.findall(r"[- ]\d+", leak.group(0))[0]) - status = re.findall(r"\w+", status.group(0))[1] - tests = int(re.findall(r"\d+", tests.group(0))[0]) - elapsed_time = int(re.findall(r"\d+", elapsed_time.group(0))[0]) - - if tests > 0 or status != "PASSED": - self.logger.error(f"Got {tests} failed tests.") - self.logger.error(f"Leaked (not failing on this stat): {leak}") - self.logger.error(f"Status: {status}") - self.logger.error(f"Time: {elapsed_time/1000} seconds") - flipper.stop() - return 1 - self.logger.info(f"Leaked (not failing on this stat): {leak}") - self.logger.info( - f"Tests ran successfully! Time elapsed {elapsed_time/1000} seconds. Passed {total} tests." - ) + if tests > 0 or status != "PASSED": + self.logger.error(f"Got {tests} failed tests.") + self.logger.error(f"Leaked (not failing on this stat): {leak}") + self.logger.error(f"Status: {status}") + self.logger.error(f"Time: {elapsed_time / 1000} seconds") + return 1 - flipper.stop() - return 0 + self.logger.info(f"Leaked (not failing on this stat): {leak}") + self.logger.info( + f"Tests ran successfully! Time elapsed {elapsed_time / 1000} seconds. Passed {total} tests." + ) + return 0 + + finally: + flipper.stop() if __name__ == "__main__": From a02781b93687086f546df1a48f7f0ca3f7724c5a Mon Sep 17 00:00:00 2001 From: Astra <93453568+Astrrra@users.noreply.github.com> Date: Mon, 23 Dec 2024 09:18:14 +0900 Subject: [PATCH 34/85] [FL-3920] Fix lost BadBLE keystrokes (#3993) * WIP: fix lost BadBLE keystrokes * Switch to semaphores for synchronization * Move checking to the gap level * Remove leftovers from hid_service * Remove more leftovers from hid_service * De-allocate the semaphore after use * Change the timeout to account for unforeseen situation * Update F18 API * Fix naming and unbump api version * Move away from semaphores * Remove the left over include * Ble: cleanup error handling in ble_gatt_characteristic_update * Fix PVS warning Co-authored-by: Aleksandr Kutuzov --- lib/ble_profile/extra_services/hid_service.c | 14 ++++---- lib/nfc/protocols/mf_plus/mf_plus_poller.c | 4 +-- lib/subghz/protocols/bin_raw.c | 2 +- targets/f7/ble_glue/furi_ble/gatt.c | 34 +++++++++++++++++--- 4 files changed, 40 insertions(+), 14 deletions(-) diff --git a/lib/ble_profile/extra_services/hid_service.c b/lib/ble_profile/extra_services/hid_service.c index e46d2010c5..9f9a0f7520 100644 --- a/lib/ble_profile/extra_services/hid_service.c +++ b/lib/ble_profile/extra_services/hid_service.c @@ -10,13 +10,13 @@ #define TAG "BleHid" #define BLE_SVC_HID_REPORT_MAP_MAX_LEN (255) -#define BLE_SVC_HID_REPORT_MAX_LEN (255) -#define BLE_SVC_HID_REPORT_REF_LEN (2) -#define BLE_SVC_HID_INFO_LEN (4) -#define BLE_SVC_HID_CONTROL_POINT_LEN (1) +#define BLE_SVC_HID_REPORT_MAX_LEN (255) +#define BLE_SVC_HID_REPORT_REF_LEN (2) +#define BLE_SVC_HID_INFO_LEN (4) +#define BLE_SVC_HID_CONTROL_POINT_LEN (1) -#define BLE_SVC_HID_INPUT_REPORT_COUNT (3) -#define BLE_SVC_HID_OUTPUT_REPORT_COUNT (0) +#define BLE_SVC_HID_INPUT_REPORT_COUNT (3) +#define BLE_SVC_HID_OUTPUT_REPORT_COUNT (0) #define BLE_SVC_HID_FEATURE_REPORT_COUNT (0) #define BLE_SVC_HID_REPORT_COUNT \ (BLE_SVC_HID_INPUT_REPORT_COUNT + BLE_SVC_HID_OUTPUT_REPORT_COUNT + \ @@ -157,6 +157,7 @@ static BleEventAckStatus ble_svc_hid_event_handler(void* event, void* context) { hci_event_pckt* event_pckt = (hci_event_pckt*)(((hci_uart_pckt*)event)->data); evt_blecore_aci* blecore_evt = (evt_blecore_aci*)event_pckt->data; // aci_gatt_attribute_modified_event_rp0* attribute_modified; + if(event_pckt->evt == HCI_VENDOR_SPECIFIC_DEBUG_EVT_CODE) { if(blecore_evt->ecode == ACI_GATT_ATTRIBUTE_MODIFIED_VSEVT_CODE) { // Process modification events @@ -274,6 +275,7 @@ bool ble_svc_hid_update_input_report( .data_ptr = data, .data_len = len, }; + return ble_gatt_characteristic_update( hid_svc->svc_handle, &hid_svc->input_report_chars[input_report_num], &report_data); } diff --git a/lib/nfc/protocols/mf_plus/mf_plus_poller.c b/lib/nfc/protocols/mf_plus/mf_plus_poller.c index 8d1cc1c99a..57a26a9cf7 100644 --- a/lib/nfc/protocols/mf_plus/mf_plus_poller.c +++ b/lib/nfc/protocols/mf_plus/mf_plus_poller.c @@ -146,7 +146,7 @@ static void mf_plus_poller_set_callback( static NfcCommand mf_plus_poller_run(NfcGenericEvent event, void* context) { furi_assert(context); - furi_assert(event.protocol = NfcProtocolIso14443_4a); + furi_assert(event.protocol == NfcProtocolIso14443_4a); furi_assert(event.event_data); MfPlusPoller* instance = context; @@ -178,7 +178,7 @@ void mf_plus_poller_free(MfPlusPoller* instance) { static bool mf_plus_poller_detect(NfcGenericEvent event, void* context) { furi_assert(context); - furi_assert(event.protocol = NfcProtocolIso14443_4a); + furi_assert(event.protocol == NfcProtocolIso14443_4a); furi_assert(event.event_data); MfPlusPoller* instance = context; diff --git a/lib/subghz/protocols/bin_raw.c b/lib/subghz/protocols/bin_raw.c index 8298bce6b0..c2aebb6aba 100644 --- a/lib/subghz/protocols/bin_raw.c +++ b/lib/subghz/protocols/bin_raw.c @@ -314,8 +314,8 @@ SubGhzProtocolStatus flipper_format, "Repeat", (uint32_t*)&instance->encoder.repeat, 1); if(!subghz_protocol_encoder_bin_raw_get_upload(instance)) { - break; res = SubGhzProtocolStatusErrorEncoderGetUpload; + break; } instance->encoder.is_running = true; diff --git a/targets/f7/ble_glue/furi_ble/gatt.c b/targets/f7/ble_glue/furi_ble/gatt.c index e407865833..b8ab094f96 100644 --- a/targets/f7/ble_glue/furi_ble/gatt.c +++ b/targets/f7/ble_glue/furi_ble/gatt.c @@ -7,6 +7,12 @@ #define GATT_MIN_READ_KEY_SIZE (10) +#ifdef BLE_GATT_STRICT +#define ble_gatt_strict_crash(message) furi_crash(message) +#else +#define ble_gatt_strict_crash(message) +#endif + void ble_gatt_characteristic_init( uint16_t svc_handle, const BleGattCharacteristicParams* char_descriptor, @@ -42,6 +48,7 @@ void ble_gatt_characteristic_init( &char_instance->handle); if(status) { FURI_LOG_E(TAG, "Failed to add %s char: %d", char_descriptor->name, status); + ble_gatt_strict_crash("Failed to add characteristic"); } char_instance->descriptor_handle = 0; @@ -68,6 +75,7 @@ void ble_gatt_characteristic_init( &char_instance->descriptor_handle); if(status) { FURI_LOG_E(TAG, "Failed to add %s char descriptor: %d", char_descriptor->name, status); + ble_gatt_strict_crash("Failed to add characteristic descriptor"); } if(release_data) { free((void*)char_data); @@ -82,6 +90,7 @@ void ble_gatt_characteristic_delete( if(status) { FURI_LOG_E( TAG, "Failed to delete %s char: %d", char_instance->characteristic->name, status); + ble_gatt_strict_crash("Failed to delete characteristic"); } free((void*)char_instance->characteristic); } @@ -111,14 +120,27 @@ bool ble_gatt_characteristic_update( release_data = char_descriptor->data.callback.fn(context, &char_data, &char_data_size); } - tBleStatus result = aci_gatt_update_char_value( - svc_handle, char_instance->handle, 0, char_data_size, char_data); - if(result) { - FURI_LOG_E(TAG, "Failed updating %s characteristic: %d", char_descriptor->name, result); - } + tBleStatus result; + size_t retries_left = 1000; + do { + retries_left--; + result = aci_gatt_update_char_value( + svc_handle, char_instance->handle, 0, char_data_size, char_data); + if(result == BLE_STATUS_INSUFFICIENT_RESOURCES) { + FURI_LOG_W(TAG, "Insufficient resources for %s characteristic", char_descriptor->name); + furi_delay_ms(1); + } + } while(result == BLE_STATUS_INSUFFICIENT_RESOURCES && retries_left); + if(release_data) { free((void*)char_data); } + + if(result != BLE_STATUS_SUCCESS) { + FURI_LOG_E(TAG, "Failed updating %s characteristic: %d", char_descriptor->name, result); + ble_gatt_strict_crash("Failed to update characteristic"); + } + return result != BLE_STATUS_SUCCESS; } @@ -132,6 +154,7 @@ bool ble_gatt_service_add( Service_UUID_Type, Service_UUID, Service_Type, Max_Attribute_Records, Service_Handle); if(result) { FURI_LOG_E(TAG, "Failed to add service: %x", result); + ble_gatt_strict_crash("Failed to add service"); } return result == BLE_STATUS_SUCCESS; @@ -141,6 +164,7 @@ bool ble_gatt_service_delete(uint16_t svc_handle) { tBleStatus result = aci_gatt_del_service(svc_handle); if(result) { FURI_LOG_E(TAG, "Failed to delete service: %x", result); + ble_gatt_strict_crash("Failed to delete service"); } return result == BLE_STATUS_SUCCESS; From 33f1a1609455ed78f19178367056fd63d77d1951 Mon Sep 17 00:00:00 2001 From: WillyJL <49810075+Willy-JL@users.noreply.github.com> Date: Mon, 23 Dec 2024 01:52:37 +0100 Subject: [PATCH 35/85] FBT: Don't lint JS packages (#4030) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: あく --- firmware.scons | 2 ++ scripts/lint.py | 26 ++++++++++++++++++-------- 2 files changed, 20 insertions(+), 8 deletions(-) diff --git a/firmware.scons b/firmware.scons index 4c5e058739..e7378f957e 100644 --- a/firmware.scons +++ b/firmware.scons @@ -29,6 +29,8 @@ env = ENV.Clone( TARGETS_ROOT=Dir("#/targets"), LINT_SOURCES=[ Dir("applications"), + # Not C code + Dir("!applications/system/js_app/packages"), ], LIBPATH=[ "${LIB_DIST_DIR}", diff --git a/scripts/lint.py b/scripts/lint.py index 8530209bec..896cd38128 100755 --- a/scripts/lint.py +++ b/scripts/lint.py @@ -35,21 +35,25 @@ def init(self): self.parser_format.set_defaults(func=self.format) @staticmethod - def _filter_lint_directories(dirnames: list[str]): + def _filter_lint_directories( + dirpath: str, dirnames: list[str], excludes: tuple[str] + ): # Skipping 3rd-party code - usually resides in subfolder "lib" if "lib" in dirnames: dirnames.remove("lib") - # Skipping hidden folders + # Skipping hidden and excluded folders for dirname in dirnames.copy(): if dirname.startswith("."): dirnames.remove(dirname) + if os.path.join(dirpath, dirname).startswith(excludes): + dirnames.remove(dirname) - def _check_folders(self, folders: list): + def _check_folders(self, folders: list, excludes: tuple[str]): show_message = False pattern = re.compile(SOURCE_CODE_DIR_PATTERN) for folder in folders: for dirpath, dirnames, filenames in os.walk(folder): - self._filter_lint_directories(dirnames) + self._filter_lint_directories(dirpath, dirnames, excludes) for dirname in dirnames: if not pattern.match(dirname): @@ -61,11 +65,11 @@ def _check_folders(self, folders: list): "Folders are not renamed automatically, please fix it by yourself" ) - def _find_sources(self, folders: list): + def _find_sources(self, folders: list, excludes: tuple[str]): output = [] for folder in folders: for dirpath, dirnames, filenames in os.walk(folder): - self._filter_lint_directories(dirnames) + self._filter_lint_directories(dirpath, dirnames, excludes) for filename in filenames: ext = os.path.splitext(filename.lower())[1] @@ -168,14 +172,20 @@ def _apply_file_permissions(self, sources: list, dry_run: bool = False): def _perform(self, dry_run: bool): result = 0 - sources = self._find_sources(self.args.input) + excludes = [] + for folder in self.args.input.copy(): + if folder.startswith("!"): + excludes.append(folder.removeprefix("!")) + self.args.input.remove(folder) + excludes = tuple(excludes) + sources = self._find_sources(self.args.input, excludes) if not self._format_sources(sources, dry_run=dry_run): result |= 0b001 if not self._apply_file_naming_convention(sources, dry_run=dry_run): result |= 0b010 if not self._apply_file_permissions(sources, dry_run=dry_run): result |= 0b100 - self._check_folders(self.args.input) + self._check_folders(self.args.input, excludes) return result def check(self): From 6d20bc7e50df4384d8713dd3f9f17042a097f30f Mon Sep 17 00:00:00 2001 From: Astra <93453568+Astrrra@users.noreply.github.com> Date: Mon, 23 Dec 2024 10:09:40 +0900 Subject: [PATCH 36/85] [FL-3938] Add winter animations (#4032) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Add winter animations * Format images Co-authored-by: あく --- .../L1_Happy_holidays_128x64/frame_0.png | Bin 0 -> 858 bytes .../L1_Happy_holidays_128x64/frame_1.png | Bin 0 -> 855 bytes .../L1_Happy_holidays_128x64/frame_10.png | Bin 0 -> 872 bytes .../L1_Happy_holidays_128x64/frame_11.png | Bin 0 -> 861 bytes .../L1_Happy_holidays_128x64/frame_12.png | Bin 0 -> 853 bytes .../L1_Happy_holidays_128x64/frame_2.png | Bin 0 -> 851 bytes .../L1_Happy_holidays_128x64/frame_3.png | Bin 0 -> 852 bytes .../L1_Happy_holidays_128x64/frame_4.png | Bin 0 -> 856 bytes .../L1_Happy_holidays_128x64/frame_5.png | Bin 0 -> 850 bytes .../L1_Happy_holidays_128x64/frame_6.png | Bin 0 -> 851 bytes .../L1_Happy_holidays_128x64/frame_7.png | Bin 0 -> 860 bytes .../L1_Happy_holidays_128x64/frame_8.png | Bin 0 -> 857 bytes .../L1_Happy_holidays_128x64/frame_9.png | Bin 0 -> 863 bytes .../L1_Happy_holidays_128x64/meta.txt | 23 ++++++++++++++++++ .../L1_Sleigh_ride_128x64/frame_0.png | Bin 0 -> 820 bytes .../L1_Sleigh_ride_128x64/frame_1.png | Bin 0 -> 881 bytes .../L1_Sleigh_ride_128x64/frame_10.png | Bin 0 -> 788 bytes .../L1_Sleigh_ride_128x64/frame_11.png | Bin 0 -> 816 bytes .../L1_Sleigh_ride_128x64/frame_12.png | Bin 0 -> 864 bytes .../L1_Sleigh_ride_128x64/frame_13.png | Bin 0 -> 798 bytes .../L1_Sleigh_ride_128x64/frame_14.png | Bin 0 -> 813 bytes .../L1_Sleigh_ride_128x64/frame_15.png | Bin 0 -> 879 bytes .../L1_Sleigh_ride_128x64/frame_16.png | Bin 0 -> 855 bytes .../L1_Sleigh_ride_128x64/frame_17.png | Bin 0 -> 772 bytes .../L1_Sleigh_ride_128x64/frame_18.png | Bin 0 -> 817 bytes .../L1_Sleigh_ride_128x64/frame_19.png | Bin 0 -> 867 bytes .../L1_Sleigh_ride_128x64/frame_2.png | Bin 0 -> 866 bytes .../L1_Sleigh_ride_128x64/frame_20.png | Bin 0 -> 809 bytes .../L1_Sleigh_ride_128x64/frame_21.png | Bin 0 -> 795 bytes .../L1_Sleigh_ride_128x64/frame_22.png | Bin 0 -> 870 bytes .../L1_Sleigh_ride_128x64/frame_23.png | Bin 0 -> 852 bytes .../L1_Sleigh_ride_128x64/frame_24.png | Bin 0 -> 805 bytes .../L1_Sleigh_ride_128x64/frame_25.png | Bin 0 -> 858 bytes .../L1_Sleigh_ride_128x64/frame_26.png | Bin 0 -> 830 bytes .../L1_Sleigh_ride_128x64/frame_27.png | Bin 0 -> 828 bytes .../L1_Sleigh_ride_128x64/frame_28.png | Bin 0 -> 585 bytes .../L1_Sleigh_ride_128x64/frame_29.png | Bin 0 -> 431 bytes .../L1_Sleigh_ride_128x64/frame_3.png | Bin 0 -> 812 bytes .../L1_Sleigh_ride_128x64/frame_30.png | Bin 0 -> 281 bytes .../L1_Sleigh_ride_128x64/frame_31.png | Bin 0 -> 270 bytes .../L1_Sleigh_ride_128x64/frame_32.png | Bin 0 -> 236 bytes .../L1_Sleigh_ride_128x64/frame_33.png | Bin 0 -> 485 bytes .../L1_Sleigh_ride_128x64/frame_34.png | Bin 0 -> 771 bytes .../L1_Sleigh_ride_128x64/frame_35.png | Bin 0 -> 887 bytes .../L1_Sleigh_ride_128x64/frame_36.png | Bin 0 -> 809 bytes .../L1_Sleigh_ride_128x64/frame_4.png | Bin 0 -> 890 bytes .../L1_Sleigh_ride_128x64/frame_5.png | Bin 0 -> 819 bytes .../L1_Sleigh_ride_128x64/frame_6.png | Bin 0 -> 799 bytes .../L1_Sleigh_ride_128x64/frame_7.png | Bin 0 -> 817 bytes .../L1_Sleigh_ride_128x64/frame_8.png | Bin 0 -> 875 bytes .../L1_Sleigh_ride_128x64/frame_9.png | Bin 0 -> 823 bytes .../external/L1_Sleigh_ride_128x64/meta.txt | 23 ++++++++++++++++++ assets/dolphin/external/manifest.txt | 20 ++++++++++++--- 53 files changed, 63 insertions(+), 3 deletions(-) create mode 100755 assets/dolphin/external/L1_Happy_holidays_128x64/frame_0.png create mode 100755 assets/dolphin/external/L1_Happy_holidays_128x64/frame_1.png create mode 100755 assets/dolphin/external/L1_Happy_holidays_128x64/frame_10.png create mode 100755 assets/dolphin/external/L1_Happy_holidays_128x64/frame_11.png create mode 100755 assets/dolphin/external/L1_Happy_holidays_128x64/frame_12.png create mode 100755 assets/dolphin/external/L1_Happy_holidays_128x64/frame_2.png create mode 100755 assets/dolphin/external/L1_Happy_holidays_128x64/frame_3.png create mode 100755 assets/dolphin/external/L1_Happy_holidays_128x64/frame_4.png create mode 100755 assets/dolphin/external/L1_Happy_holidays_128x64/frame_5.png create mode 100755 assets/dolphin/external/L1_Happy_holidays_128x64/frame_6.png create mode 100755 assets/dolphin/external/L1_Happy_holidays_128x64/frame_7.png create mode 100755 assets/dolphin/external/L1_Happy_holidays_128x64/frame_8.png create mode 100755 assets/dolphin/external/L1_Happy_holidays_128x64/frame_9.png create mode 100755 assets/dolphin/external/L1_Happy_holidays_128x64/meta.txt create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_0.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_1.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_10.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_11.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_12.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_13.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_14.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_15.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_16.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_17.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_18.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_19.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_2.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_20.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_21.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_22.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_23.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_24.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_25.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_26.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_27.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_28.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_29.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_3.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_30.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_31.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_32.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_33.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_34.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_35.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_36.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_4.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_5.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_6.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_7.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_8.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/frame_9.png create mode 100755 assets/dolphin/external/L1_Sleigh_ride_128x64/meta.txt diff --git a/assets/dolphin/external/L1_Happy_holidays_128x64/frame_0.png b/assets/dolphin/external/L1_Happy_holidays_128x64/frame_0.png new file mode 100755 index 0000000000000000000000000000000000000000..f1207ed14b35cd01eafa00342f2801d74b46c622 GIT binary patch literal 858 zcmV-g1Eu_lP)b3G}_zPLJOisK}_wXw<>5vl)fnyEcmLJ)0YM`-qsd9LG<*g zg3uHHfWB#8LN=zM6$A}^iEZj_uEAVvNj6Dq_mbTmAFd!cFTa@&W`4{t&64fs z1O6+|kM;zum_y0;LR;%E{4|RT5jh|65*n~`w!6HK#2L%5CukdP2q1}?sRvZR12EsS zP6BKKYE)f>e;Pi(R|nZq8>DGO9+1VXzqs;Y z>zzX{C5FwW0Jpr#S{j^JpU8;?=-uOueU6(!BS9RndoqvP1aOo&p}tH{j*$Y>F2CbY zJTRxpb}`rb=#NmV8-pBq^GnU*vUM}Lrs&3DVX2NWQRPbV9Eu_gHSp)RdG_xa2L$n& zAzo{&Ly7kt@}aaYyloeLFiehuLtK&CfvZv9i~0aRdxU@_`$?=4uDcSHyHB@B=3sjv z1Yp-C*-y?RIqd_Gb4_y*`NdA5GkU`(19o4%V_h1`c<^#Zb!*T(J_a>H!@b?Pw{we% z1dHI&$2X)22_qD0fIX;@)4QwO+?wU}hx4OTV?~Yn&m|Y9uV0s?!lVme6X@3g$i9tJ zAw<+xNi6@`UU{o9>1u#x3Q(N{@}pCiFtmK`&hbpo$P?pJF1bH9`LkVT#6U2cFbE**&wk(4~aXcues_UO>rxTx;jl=<04a40ce_veR#+-lBGlmLLRKtj8 k04biGE0u;J2K9h{0X->d_eOezlK=n!07*qoM6N<$g2W|{hX4Qo literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Happy_holidays_128x64/frame_1.png b/assets/dolphin/external/L1_Happy_holidays_128x64/frame_1.png new file mode 100755 index 0000000000000000000000000000000000000000..9d9012281f0193620bc458455f6a93538fad2e96 GIT binary patch literal 855 zcmV-d1E~CoP);NOWB)|bSkT1aRXRBA7yY|TxF{FSfXu8*lUk&&qCXhO8F)FkoA>H2*0;2g2fv& z(d#Xs;?yt-?E~*0`D{sLX^yAU0@$ekWb2zI3N8X{Fs83orr0sQ#X|guwcpNP1=Z{G zSdat3yA1rXr`2nki#Nt*x!NSyKj4u+UwHlRdp$A`_S7#~2^ znalc2P!kjpqG|x})i68iBGTxNe8ACYahNl>a$BAkJMa8EWISSW9x^|7!7He$DqzaK zHH~UJtLg*3q0pI4GT^O->aCwBq?&T_iw|3e_BWDe59<_EmFTb&R`!3M<{$oTix6M< z>)gGM21gU)@>GCLe`>uG{-^#CUE~ZdT5WwA&`g90koSOKH57+|(uvFv@ zu5jrw5_rGj>oQ@wX!V1Y;}RF$?qIcGbR!}y4R^HsbN*(0SXHAg%c)Z)Sl#Bty=5=L zsgMqRmyS4iNFy-1b&V$Edv0=qawEuV>%O>0>(QCF8Rm}903b;}$!G~1tcE58ti4NG z#Li1EDY$>yq#tK|B{A92+mN-R_2;-oJ?~InHFlt@zLj6-(yP6H#HwvaCccFQEMv5L zf=vPm?`HFc&NPYoHp(3VcND9qw+G8F!`Z&vP|e+|N$-{9)>3?5mJ2g}w){{ph6J4J z%MI1syar5eO=xJuFUo-&*Dz1D2A`uKvLp&GC&Xeh15D$Dcrr0Le)4jNZU3t?tW+aRjFfo7> hF5f7XLU{2m{sTJ-XIlu4y4L^z002ovPDHLkV1fh!ld%8* literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Happy_holidays_128x64/frame_10.png b/assets/dolphin/external/L1_Happy_holidays_128x64/frame_10.png new file mode 100755 index 0000000000000000000000000000000000000000..cb8f173b0bdd8ae661a0e3c000fa88fe256b3a30 GIT binary patch literal 872 zcmV-u1DE`XP)?*-2wV(L$SR8{9F5vK7gWF*K9z%sdYhFTTrr?}P9A_;@_Xs~B$& zdb=C`2i$J}PvkF<5Lip!C9yJmJk zyD)1^<~b8;r*9}UQQZePJA_5QLN`m13s@3OkFb+2eNEr3q|e{3Do1W(`LOHQ*{Ccc zB5$Q4jUTjXj@h}Yt9&X@PQ4@to~kt#+CNgxBxB&i*V>Ql>6XdOn;M1U`%k`JdYzb# zxvXjd@yA2gSI!^4_f;b4ZVha>V{2(}QKcwlYoN5(9sVe;;QMGaV0UFMDS=xLDQI_k zl`c30L1j1u&AC6(zViz%&P+gL(A6Pd>t%<3qVh2Bofy|h5cY3#mMO5li|Y^PWBb5vv#*6Jr_FPc<~!% zzI?osA0I4#%i;aLLUqKAW@~uXa`(Ts#~MgIadhi(T6M8oL-0000;RtW zYC;GgHWEVi?&N>ACW2t*m9`GWO9_C1mL9w88*tuE7R2n%(<4e*f~ghW9``l2w{(Idzmy zutB!vuh7(q6FumKEzuwW3j>H)yTC$Q)<$cl-5z|y-D(1|M{-+S4~zn(Om^kCIMPHS9NRn-wo zb-G{73WfIdhPR*xoUE3%!LeNDq5+&-b6)u9wbmmCRLA3PDHsgjUH*FU4P5pLwkgFV zmxg|AeEVE-xl4Bs3UJRKUC+WFO%Y=k1n4^CS3kxxCIG~RLNWKb&+NDt@uDzso1(=) ziO{b`1j1wkskuLG`gr?8T!vo%MDt|Wxs$H6RMRzvDm|*B)6Vsz{HJQVCiK<`7I%66 zpD+s`5q~AZZ&Y`vK%F#^#?`Zh(igxfh#;bQczHYO!l%F7Qcd2Iw2#!O6k`4kFx=;dmqLL2aI=r`kQ=1B2Is`ynS&V z<-m2T+}iw1!W-ao64<|YDyCoJj>kKX`oA%;cSfI$NThnHV{pp1@th#<3}a7jmBu`P zDqsa5kKKJg0*?!;XMmeM@@8qw(-6&dL7+AUbPP_-V{~{se>K-hd3t2Z!}?=`PrJ;# zQnh39NRQzpt(~lq3*y4nYpOBlET<#Dr92W2XR56aRW)_yVsXJ!W4uiuWfyz#sBd~p naeM(t04ZO&R;l#2#RBjz<}zf`VzpON00000NkvXXu0mjf*Yuj_ literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Happy_holidays_128x64/frame_12.png b/assets/dolphin/external/L1_Happy_holidays_128x64/frame_12.png new file mode 100755 index 0000000000000000000000000000000000000000..5d4c7e7c55fb7012fa223c9084bfe754c5b50e4f GIT binary patch literal 853 zcmV-b1FHOqP)24#t z)$%{!Q45Ty-Up3=wft=c7FG4Oco@|*;BzJ3rR*z7I#_C0{0L^xB_+HdKGwmDt*hX6 zDH20Ibn!pi0Fyv8^LjZu2{ML(&ZIO+ZL(v#u~+Zi{QU%ZB`c)=A=;6(xnT!)w=IGt z=rYN(4d4fF8i~Na_14g#ID(kx5x^!L#~NS7XoQad>-6bk!-Etiv{*>*vHHuoDNw!k z6Bgu&=ryXNZat%G8DUk&U%K4Vh#e5;u5{tcO?gnuU;Vpo0uJJxMn=zn8dOzP6(9`7 zEDrjmYFK79AIVDKNJDk`d#Z&N9J_G3ad7`tJ->0As;ZJa<+8$t^j++69Ulc2wFZz}~l6 z2i~c<%n15&MiH}mc>V#t(I9v-Q%ybCJHJ&K+pAM;f5?b#dvfM$7{k&>F~d5MxP|iG zuzq5)*a~gZ@(lPVvHC{youmzh+FR<={yxpxF6ZCPB+GWTdbU|UpW2_RHsYTJ;tjyJJ$FNDVQx?~LS0I5z~ f@9uVx0t);KGZb(kKhPw)00000NkvXXu0mjfXi1u-?7W>nA=QF^N=Sn#Tt)k_1K?$nA#5M6H- z3SIFJs3+S?$SlbLxQwjlT}@4XMa_vL+g&bDiVrlO%h|I11tkAJR*h4?o`ocsAzjOk`v+05A z6S0AbLLD1$CbL%`nE^E%K>+(g<*^MDqF^JyR=fZHhu$#kT7e)w$r|myavG?9auyq; zKYZndksi}ZIGTPdw6*@?p1uO!w znz&u}0w4q@tEFA=Y*Y2x6`WjihCh3K<3L|C-CkX!q^iUR3udD4T<)wc*+BBe^$%O` z9DO;pT($(b6I9nTb45d9FA<=3UoiGLeh!Tk@xblL1OCRq3Fd|R3OxmeO3e8Dibr{1 zUeld&q4m*kk=8c%bL`D8HBUyJ+v!b3H;0AgI@Uyu>*@0-ig2hwxUj=>f6jU!NYIQ3 zT4Nn5ydO}Eq;>UexAYxw0t`u2rUq`rdtV~p$Dq)4{V=Ihabs3ZrTcVC0t^1*bx8)pZ36wySQ=&?|`G43`_qCmSb|uFJ9h)-AGPdfGG$gIuCG%s+c7RI1Xef zDMOT|0C&IEz1}^e&Fwi(K3p7`9xLnjeV5W}Gq-NZa%s{B7{ln-2ISGra}oGVt&uw6 z&4cn*Y0_7N<_b`o1d1cmKVj+UrGHN4dS0F!pY|#IzQs2U8)eLn$s>IRC)sFNgSj9c zT%A{qnQ&zVJj&x{G*jL9R6CvI^js_+_-a}HHpK^%`VRKOQ-O7;6vtCo$t)n{i}RJr dAS9px@GqP{Wg0BXhk5`2002ovPDHLkV1gwEk39eY literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Happy_holidays_128x64/frame_3.png b/assets/dolphin/external/L1_Happy_holidays_128x64/frame_3.png new file mode 100755 index 0000000000000000000000000000000000000000..3a47dfc170224127ad04528accd7b47104c33ae9 GIT binary patch literal 852 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 literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Happy_holidays_128x64/frame_7.png b/assets/dolphin/external/L1_Happy_holidays_128x64/frame_7.png new file mode 100755 index 0000000000000000000000000000000000000000..da3a78f4c7d2364f251efcf0d311cfeadf3693ab GIT binary patch literal 860 zcmV-i1Ec(jP)HGw^KWKzD1O2?a4gD9ViVO(ALi=Ao3~!3nM+a`evB?;V{tr$^<9Ht z@Ozx-`5N$}TShE+x8EB(Sg}yy2m+X>`*`iE3Tp8XV3Q$zVtka;2@D3}hg5HzodeaM zuV6r)vTsm07j7o>+()SD%qy4MY8GPL03l%(8fhil9EnrbU|)z+i~uB2(+ps1v~_mb zU^43xhMmAih-NLo^Z-r$6p@vVC;(iIW>)CMlbf<#Y`*@W-|d2p} z`R|OgGP|3p27rY^b0W!r7i;O6Uw)vFYRd8R@6`71T~K%Z4h2;uI^c%mdrNwLec366 z#9s{jc5kkyehI4U0&E4N8_n>0h2Q;HfR25^&}VTGcrHNzuRRTD68cmrOE9xWI~;@g zRa*h!!Xw1`zY<8^2~%tI?Zu-K7rhR99V&Q&Uq>%2}c?`l}k+I{g3Ek&naV}M(`v%`QS-6Vs37`vu}7BFU+ zw1_z;d5(bhha}y&C&I*$mHU1m6Kn? z6o#RHp1Ib6S_zl4d*i*e8be^Bwr9Z`#3bzima(q3{<4?X#IMh*M(>-2!l_2~{L;4& z!N*-~{betw7I$4WbWE^ts-d8%#zHc2259RqPvK~3t8?OkUX;Tl>$Z m(G*Yzq;TDI@s{A_#w=kO&avP_}B;zHLpOl zBas;Lp^N{;2ABlG>9-nlBtgb7(4I6xQk!hsPVA5OZ~bv>g;d?_qHs8 zCFn58i#6aoZwd*)zy03OfjESiml41wZAWWg#%PF-0BiK>lf#1)##t<+_gVSn>=jVG z{sR`|nea`@qtRMM#}dMdj=y@fsTM+t=MXX`pxCl2s58CN>+<(53EMTR1?@1s!UhNz zA0T1yGfqsHXe9d1ERt5*nnQEm^aDj_SFZivmu{xz3DwlI96M&h#chtg~lh@tevO^(pN5SMgwUHpS{$p^2~#jlQbK(aQno=$AI7%fJCweu7e?5MO* zfPHAQHoOzFnGy80j3Q>`;M^m8qe1X&rkZ-Ndv3Edwp*{X{2?Q{<;lBW!5EfaifPse zC7K5Zz}oT2V$<2A=>_n6u=;lW{iFqkTAQj<{vOR*uI87flO;P-K3Q)(pW^Z8`A<00 z+EktLOB!;xepw@9-OS0lf);uk82K1zs!okzwEJFuxzGuDX<*9X{k6sy6*H-vkc1-A z4-Y&=ZNpqEPzm7r4b_BUlYaz4c_8Y}RcoQDmkiA$5`a@kJquYuQ+46qht*5 j04Y!0=|GNY91Bxel{hfU)#i;bjeXFf0r)cg|m z+s-(^7BF=7szJD24*=ER!!^!mfoCz4qOTO&dXl>^D)ywH&zYgxW*M#RUNTZ zr~AaLQfyyu=r(kNlhx8TIFjpJ)Q^*E&T}8W*1G?Y>Udn1qQUU(#jh9Nz-7N^o35DT z!r-rsZ=OjmcIw`J0^IUPH?!~uQ^MFq0Xh%+!yn-p69D2uv6TD#!|b>h@q#e1M#-YT zi_jmA2!zQ7QgeUW_VEscxD3AjvF6E;b0b}CsiqqYR=ZV4r=9tv@`q}=A@tM<7Wa7e z?=TA>5q~wpZw&8Jg*s^>jmvKpyS^|s#~^};=EKW7Q72{kDlOIIJxO~>ohqL9R~WaS zZiU>X=tpQTfTX=xKIz$j{av76>=oq4FoWFzCqO2oyoPZ?PlCeq8MbyKj(@ehbAG|7 zcWB1v7=iJOBZEdWHjA-aY7b&xlmQc{Dndu)E{2@XnsnFVNDlS}PQBY`^8LX}% znuTQJqM~4B#zm-92_+Bf zi2p4g0OtWXwe8q|fXG%h&?xNYu0n&b4sL z^QO4X%7Pd6w}FAu%DJt*<9W?LZ}sJzDy)43;DZ5hUZWUqm44ih4)g{eVM}X9JCviI{E9d-bNa6iy*vm1^Sk%H{e(E@vBc# z-aP=|TlA@2q#79;JlIL1;H0w(ER>@j&yA3SNAp3&T#H2>$DO}UvOsY1@;7Fh)u(4; zt7iZxPyTM3-}yp`+0emQD`kSyQQMw0=@Wb0>0bbdoVK6z&aSpu)4j*~fWh82J(ahs zk^ZhEfYWDrc$Q;hgYH!iU><9-BSbx#yM_UN8nQ>e1vk4G9Zmr(R&7rJ9b9?yXnzv? z9;|Z+f{l5Tx$42x*?ZPK)0H*h3u1W~-EK=+bL4|;=wAanQcUf8|2Udo2oy+Cdv8L! zW>BpbXhV_;PA=Cmfr9i4`d*SM(!HKE(xp(jyCf-y=RThl2`wDk>F<@KOZp)req5=I zt7oqy&E?_}H9tt7zmbrnS|wGI<6b=68QGTva1ZnsG5TzOwD^4e+eWX)-a-qNT3C{T yjOM;xOQ2ei-mUtO+R?u!EKPKl0XTtM6#oJKCt7uy9%sA&0000O9aKtjFBFS<5rrbC%}m9M zUgRQo7XRX1b*D;^N?Ky=V?0!jd8EhM#x;n(iGKn8%i01^Q66Wj%mffr}U0-1Ob zAb^oTl>oMustNt26ldfm(WIn8cS^nw*cymV$9HzJdP{oZX z0DX}26@XXvB7mt|#QDeoiB>l%gnMp9<1RSsACR#L4*RrA4QTF}P@O3{P!=X&k|;Kw z{GG>YUjb)6wR^FoRzzG(K&R@4c1B+{Ck6u80E)uu#8e?{x_(D|nn3F|y%Owv`RPM< z0svYxdV1{gIr|r%6wR|rG z_Ipb9%K2T_WLJOdjU!Ia9LO0bFr9z*qjY7Kfbu;WBwM0Eytoa zv${bA+da&=CaBL3UV&D9ecr}20W+2Rq}Z_9H}LJJs7bb1)9v4MC!20Be7t`SouEjX zTsClwx2-l*f?XqA@%P8snc^`e*gjXTY;jv*Dp1Iz~P7fSP6>B%@=;M*NoN z&=$~kJR8Xvu~Q%XbJo)dAR^srD5aiZ-)UR74#8G8#=Rxu>vO8x(`%goMkdxKM;_5P zZ5{Tx07J%srCf@u9_7-oIH4>{e&LkJ13AL?UJoUdiY%}6iF|KsmFfb)$i%E)32)oT z?B9E2TqG~)Q3Yqo~o zxmYX{aZx*b>OB*Z?-*%R3J$iGAKipVIPm_Zv=l_ja&*?#pgOGkGbAD6?ryXZk;1r$ zgpSDY)KMFee7R0UWLTsi-{lZl4&zc)SuWa$RAgPDvy}TEA-!}aN+5?L00000NkvXX Hu0mjfdXb+( literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_10.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_10.png new file mode 100755 index 0000000000000000000000000000000000000000..5459ae27c3e0b2d87cd3a2b68996ceda57cd6f41 GIT binary patch literal 788 zcmV+v1MB>WP)EtRqp8xfd%lOk=O*D>zE{8R{hs%EA5QbX z69Qmufyo`u1_Y$GvzL2?9p9?;NLR-=tK3H!AMk?h0wr)JIMuBH8gL~tfxn}}F~9Hl z<$3d+?Z7x3h(1Z$TV(8#I-a(CS;x3zBfP(Wy?+u2f9ZjcsCemK z<&Wal6rHP)KJnQ2Yvtay%j@gj8B=M*sn}#EX+NR&Um>=qX!_pf8Yg>hEzIEY$uM!~ zuUHdl*=yJLoQZl3Qs7L?KGb=y3kHxh*8cX{mbzm{kTmB!c5`-UTn&J< zi;4=Jp|JJtQ2@uGxF8J={k*IYuw2(H9Nf*1CmUz4QUwRhM%rSr=%v%@1-VHpG zX>Y!S*k6sK>@W1)wyDj22^axEz0^)k#2Eth(ON0dDZdreV{iwM$xVfJ3=R;nmUjlM zkIP-KkC1@=DueNqUDFnguRnB%j=2~?_}!KM4^rcK@M}knfZv+b-#PpJX`*(@2BJ)} zaNeHDRUsAFK-0he>Q9Cj2YSXfuX=A1S-C3gx@!a32OlmiuH_RBGzvD5ICz5x0uoat z{>dS!r6pY}w)Cs(4!d3ZqOY|2)f=COOUEq0l(VRO$UN>m{f%P*rjW;&`K2T7Tmw8Z6lW$uEFf_3*{&fP*BdvUl3oztSDYF#=e*{#<6Y z@2PT-f}$j~78AujRW#=~%x_4F-kx6gRJYs_*EOv~0=S@wNBws2I@rmXS`A)kr86X- z{0xjPjE+M4?q1+r4UAUOdqB_spqcWYb+E}M%Vo@AOo3b#kW`T*X<5;T>;4B1IZ1|x S#su9y zXzB&EP@D+}ih{(@X_M%bTA~QHMVd@Y+lgp0)1+x;&YU^F4|6efz3jcey;y7gKP>j} zzX$+u{sV*8eH#$awvz2^UTou3wn^%BjQ2M!)KLP8Whk`@B*5FwGi6BBK^~5Vrc%Bx z!!zfWgB5Ly#h+_Mtr*Q?Q|*O~S36pyZ&YD)F=)-@3=BUtO)xW*`MN8{(m6=&19!`NGz28WWYy2D z+1q#;8#7%4>R+{grs+~ag<|;qeU-2dT)UpNLrnkp%Qp?vkksdoM7O&2zCB2q^rAsE zNbCd5P9!bNM#nGd%QDb@1W7?6sy8)N0=&nOq>e}!Nh$?S`fDTL)RSjdZ#ZYc!?#qd zxhr<#Lh17CddFkQqNHjmoZb7Atjo}DRGw6jONIUf+tP50#f}GqIZXdUSuX>36-<}@nO@B3Kfof;!_8)rw+(TC;ykfz3 z+Zs!+ik#i9-MjZss&8!74os3!|1P@JqO^C)hRgXd3V3~VaW*aQ(dK( zBVB#P?3!PZr114b5K-1ir#FsS0MmVwb-Aa;(!pa$k_xATeam5Q`irBg?^UPoj(3>X zyvk%>=v;R5m{&()cOXqk3LlW9 u3nR;Mq(w=3Ly{^F&W|AlYDO5H8~Yc`rGxxvN7noR0000kltwRJ zHqlzsn8JD1t4U*p9c#2VF|pAm3NBb#Y=vFe5@y-ic^+mVzRUaPd*A#M}wUV0b+eehAL4h6(YK+)S~90XEeon$0@jRSee z1**;&2U2LCpW?xeSzJ_+`+MV|XB|L)n`aCBzmD9N9DuHZ(CO(LZ-gH-r2tr3l^L;t zh=jz-8J6!X#34GaY(O_2UWzjVn5E+Yni{+@Dhu{LyZNn9T?(s@Y97h_%fF3;*|l64 z4QBKGnSYn#VJt@ClE2XvRIamHipXqg_Ee4_ZP<)L#To26V6Da&ME`Geo*HOF!ECLr_vT<^KPyZ&y? zf)c1S`fIsY%e9pgb_i6X!JW^z8JU}?A3#?OD*E0FdvVCq0_AEJVIuEarTvP0NgR%&>G&UbFoz$}i=uVA#~b z@Jo4rqi^uVLmy*$I?%p8W;R6omrW~_o$vgsqp~|Tvx_aeVN(MJ(5tCT&tl7lb->bL z&s5C(Vk+OL&9>t;O9{dBF{%qaEO$IV zv>!x*Ga}WfB&%{VxnU`R>F;g-aq}-PM6T`+1B%6<^tj6iUP-m5bf9+=RR4pYg2rr{ zr37mC`h49p*P9mG&Y}c37`tV9rq~y6ndm7OrU1`WT}F2X?v_Q$YsH{bq_CcF994-# zsQJ&G+jo{N?>y+n71xansHHc-xMG2>;u-iTC;$NOo|M2iWDSBIL?2C`f~p6notk`0000R1tyh>M^I#_qv{QP$XrggLvOd7m!M?9MzFFYo`y^Z8emhj(nv z&MH@wAp>JwRUy-zK)tsfn@+-UZl|( zT7umoary&@;Oto&cW3Bxp*q?DA-WPrA>Hx(-0YX#T9+ErYr6N+8=_3c0}@aG`layq zN0$!)qX#{0U+lCF<*WJUhC+sxnbha4L=+=ZR}5>LR2JCsG3^VgcA{F1 zl`I{k9ksc1ZQRVK zs9{9@mEvq55&=BuE5Rz;SH`(93Ah+Q>i_(-uGBK1U6f$$-P@7 z(E61dDTey6mx6n*{JdiTU@i-Y$m03`yu#^%@1Mr^mB8YP>BfrpKk}dvmX*M-&%Chl z^X>1_z%FK#(CW1d&HkQIfJ|&a3Ab}S3uDRBV(L7#cer#4ps%S;ym8{*ajG1z0Yr|u z{Xpp)Y_$i+0q*3CF-`)`7eyD~@B#Cz2I%*C_Lm^JS}}PwK;(S(miZxq>)*I$GhQa# zoxo!sB6A1#DPd~L8DH6BTi&P74SqA!tz1T%l3RUw>0QI)JDF~1od#ln~EgM8``UT%NteSRUuc||C zBnU9%Ym+e8N}%_NW1xh^KT1|xb;RS-5DZ*8Rsxg*uV%r(BToac4{`w@QomVk$$b$K cTk!q=0mCXct2Z>fF#rGn07*qoM6N<$g2`}%OaK4? literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_14.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_14.png new file mode 100755 index 0000000000000000000000000000000000000000..a5d6c1a7a59b8116e393bfade90b5891981070b4 GIT binary patch literal 813 zcmV+|1JeA7P)1v7b7Rs(o7gnOg*DS66-E$$HkCr=ieeTj1et54L@9!bl#=W!D4i)HB3-mD zBK|A}E3_q3jZ`XySZ7>F0;NuAp%t~swa`vAaemsAnaSKauZzi~iDz@Z?>R3o@Aq*S z=YJ;zz_|-X*F75$(7BfFY8CFvt!#@leT=`rD(Wo(#p+rE5BxZLniW6*8EdNR6~6g% zU6f*RCS2RQZ?Wy0b&8$SvTJiO;lI}MFaX>rG!-oiw{H~M8ml10#-{6slXoSKdF6}U zzj|z0Wy%){3Wx>Gtr(Y0qc}Bo9ARYw*+gAcqm|aUnEQ9r;m&Er6R9{RyRj9f&4}QK ztYe+X#{l%Xz{2$p7vpS50&I2w9r`r-`sFNud7MylDk&`m0A0t8yl*#Mc-|xO$9I6g zOe|Mc?Dup=A>d3-ncTx&#%>q^(%`dfZg;_ro*&JK{&~PT!5#NrtgZLNIfm#<)8&E* zFAn(aFOoeu0sTg(_Rd%F);6L>F!u6u#~{8~orUv8Fm>_F7J$%2U%G&0>g%ntfW-- zec$&Vk}J=g8cHOS-9Et0s%s*2!V{5TuLt1}uGy0fVQ`ky0sQvnlH2_0r6`XaLVs`e z9athzww-R@e{A1pB}yHO`%?`mq5hGW?z`%Al-tgfY^~QLeQIyIH=w4criPVln^##{ z8ajX-yn47^O?;G>jZPlTh*-XmYuriYYEnwSB*aYZ)|G?ji}N<2Ym-sQ+3|VzCzWvm z<1sM&XaM&8L{W{63FTzBrKg3Yq8j_8+tS3Y{qxj%ic;ePrNV@+ovg&j-+C{jM#a8u rQ>r~%IE&P{qDHY?HF?>=f6x90pDlLgl6o*(00000NkvXXu0mjf1J{uq literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_15.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_15.png new file mode 100755 index 0000000000000000000000000000000000000000..57b2c9bbee26fbc31ea9e384d8ca8c44936db89f GIT binary patch literal 879 zcmV-#1CacQP)~9or#-tqXwE=trZzs6*sn#Qc^H<9#z~Z znvGTpHdzRj*EHGvpJk|zVmyz3{er~ zRJ4A-qSzE22f*LtK!6Znr32yxpa5V8kOUDc9n>+g7yva{Xara*@Sg)>UsD<0H9F4%#7+c6@3i;;3lqVlFP?gN7EtTWC;%2# z#Rt^ml^V7kc?m2Jsjg(W_|fU|hYloy3n=+GP3T~(?GFi-licd6WZ5MW!Uk-bp0CnH zdV;G!!aw|$6jWZssSq8i``+Ff`{ua=Pdyq(|Kd!Z+7C|A0as;{qC>(E#(S*jb* zz%}pic+asr#b5aDQ=TphvIIU13}^V}&P1 z7AI2-Uz|81a{PEhru0d^T$|K(b8`s#qVomo%#_-Z(oa63UFf(JZk5-&^^##mem^L( zQkLlI9`QY+yJ@_a<)q6fgQ!Q1hAV%kJr^Dbe-7`Zln}2uGrz_1J!{)7|137+9bI#E zCp@g!Y1DQ{b8Xl6lSN-SjJjF%k+ErRSGv>zbOO`Mn$Eh=J2wY_`qSCMt47NYttvkR zpdL=MC505m65=&TyGYK@|CmHX65<^qCsLH7w@vUlBc2OY&dz#+Nb$0G;`s@YvCL6} z$U?t(;>nmuPA()h6rTVf4oyT-h~#c1JSmHa_=&s8e*u(ie_+i17}Nj&002ovPDHLk FV1imcqT>Jn literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_16.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_16.png new file mode 100755 index 0000000000000000000000000000000000000000..4be832c648910992ec977cd567913fc99db14545 GIT binary patch literal 855 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 nfJ)I<216I^jeL^CZ$d11@;kWVw|A_%ItK^W7EB z2jgA3l%Z1jQH?Ge_7uDKzug6#rBm-o<-5Lk-#Z@2?=%7|twr@NBbLC+Rx;hHQD*uD ze|wjxIr5P{yUD$wxhVH7j_J5H_964YtMPjLiaJwT z*7BuKEV*h6#E=>zi_P3y?IG+yQY_t^y_0KI>_uwCYQaJfxd3JyX~TrEbGqdNY&(PI zHcxB)u-+U4@Sd}*?3>sOyv>c01;^{LKq~gcuB(@i0nZmVjOOF_r#PQU=w`oDVBM1X z=@2{|9YO3UvdxHdhkkPtE88iLo`pUm_FWh|A75&BJ7mGF`jx(cLiX>*MYv?a)nvbI z9xW1D^s&+PT5o@l)EAku^Lkz*Mr${E_f)g95^L}I(p_Si#fUT zpLd~H1V&H%ZWJDP$8A2gP)boH+IZHsesm_51t4+468n4!v$y`G4FQ7@t6n*@&D}15 zQ?T&I7+}8k0sg{>@<7Y&!lSBjCxNLXhV6eXKv@8UepLL-izjJl_~_k)&GfiYsYKKjefYg<<;ilyvRvkXk?o z(^{5-Ti!w&T+AqtqDP9;YVGErOHUs2a_KuCX-<-)Dd}3NoLUANfIZOAa`EHXP`8`Pm&ZK4P(h<0c%ii$YU%_p4?zWA_o8@|Yp zf>ie)v-71k0U3(S(Mq!y6%{KunKE4OgKf~dCT+UqCb_xChopF3J~-cx!^h#{Bu$yI z=CtRUgALhN00=iY5D*0-`4;g!-~%`do859zHX z01xIuqcI@iHwpXUb5v9+jdv zfJ667{=}xp!B#6++WM!CtT!AOYZ(`}Zylub_fsBpfI)A1k#eo$-iGpQ0c#n)Cyd2L zW*Qyg)pki2z8TeR*CkvSkZL!irJK_#WwR*t ztyFJUs{V$nYMYDXXH+i+^NkaGHT!AS0^?9B^lsYx;B4 z%D?)F(^6{XS%nQ3DY)j-F3qn@N&Q(Q?K@PsE|n`I(pRnnOxC;qfmq~c!rLyA%4^~A zjFg&D_?v5iSkyd{fbqaH6Rrb9hT1;+19k&5%MQQ?wmS)37oOSqTGFP0`}-D;fq5WL zXO8d6QV=B0N-BhvAF@;fNka)qs_N}UmoSr(zE4R~nE8Ay>zL#?>`4QdG6Qa~idZU6uP07*qoM6N<$g5|EIEdT%j literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_23.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_23.png new file mode 100755 index 0000000000000000000000000000000000000000..639834612c846903283f6ed6628f2c79c3fd6a1e GIT binary patch literal 852 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 IM6N<$f@c1SEdT%j literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_27.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_27.png new file mode 100755 index 0000000000000000000000000000000000000000..962349bfdec5503429689825577af262921ac6c3 GIT binary patch literal 828 zcmV-C1H=4@P);MYf0)t1eLxntVNLyloX+DW?F4xn>Lx4kC|lVz2hP?>BPG^=lt&B&;Nhe z$Nydh0DT7xZunLpKw~}YuQjGxC8&`#9c5=&N6iIbu2e6O2D^vhwGJQ;rz2I`xM9`h z4OZsney!Bc=1tm9ZrFI?M~Uiv@ueNAX(#}uX4f`q5^7~o&di2&DB5-Eug~SqtX1DP z_x?f9>aIt8y%2v0r+v736~o;DEi^xOh-v}}MRKyT9$ND;fSLNc>P3gEkVkZT&0JYT zM56wYHIUNPsBVi}1ts_tc>iJmpgIjuT269gUOB)ft8$JgKlS47!h_?0g`9*kG0=KK zDuDJpm2)Cp87qz(e6XN$&Y7-CY44@1+-%XKU?6$C>!-d;eF*pXpmNUCzFW^uFOL#* zdw|Lnw*J5;@+}xLYJiw^qRKm&Htcw_)b33 zUNqEb3X6BW3)_NBrX2OtSTd4OJrK_;W?Lp)P+=G^$00KuI7fbI-c;0)xY~v9)6S5* zXSZ8bRxvLAY@zUQF?w^c$I(=<;fF$we>%ki@tEa4`EDLf|WcomHtkl$Pt=2S9cG-e) z5_8wBH44S%G)78~Q10~6%8j{+4DxU($qj3*IpoZ5j|~@^Ui)`TxV0C|wSjr>!qu-y zZkvx?IS1WaHM2&Rw-*#8yCq(l6|wakAriAN@4v~-jJ0000C6`P9 literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_28.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_28.png new file mode 100755 index 0000000000000000000000000000000000000000..2eb4456cc780a288fda6b71ff3ca99b931c51b2d GIT binary patch literal 585 zcmV-P0=E5$P)>Nh!OB=PyYTx622!q|kdqdsU?O6C zY`-77ka~b3JP3L3LgIs!0Zd;Hk+vjd7p0MO?%AFTaRBBC085+0@+}?!{nZ#{lBAI| zk}kVDr6OOCFON@Iau4&u`Bx3c7{kY_)lM4#Ej_Q+6-Yh8Z=k>B*GUKAX*Ese$ICP0 z8L+!^i5ZYC-uYR90EnFzb<-`4*OguP)Ht&3V|Fb%C>5PO>Cx+2p|}NS-`J?gV=)ir zz70x62H<0TQ-CQh41ETce^co0FIr!Wq z)xD}&RR9ok+5ix`BC#9JkkfQycE+FiSLaaE>t?%f+t<`R>!|U-2%8EfD`o&RA>zGy z-TmLTSAiX{>=J&-=7C$F==OWd64&-!+h`ToJoNh)^6=0kLjn7IB#T*5XBMEG*2HBJ~;}B+3L_Rues8tiw8w|~g@?NH`D5Z=;plA# Z{Rey_OQicOEv5hf002ovPDHLkV1i=g!{7h_ literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_3.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_3.png new file mode 100755 index 0000000000000000000000000000000000000000..e5772a672f9a63d511a03cd14cba48df73df3662 GIT binary patch literal 812 zcmV+{1JnG8P)Nkl)On1-IBH1q<;PWKD5!)^K#Gm-NXO<@41Ze zzwiNY{sXUWyEY)8t(lEB61#OO-ymB$!zBLg?gY45Y!*ns=rxXRW&kDlp=4^?JLamh z+pLsx{?psQ;nd2H&9$@0>|@QooFtWY03Qs1^AczMhH1c3pIA$Wnni;CTdm=A6HvBD zGSA)yb9kU=Vo_p8H@9Leot2K0zwqQFTQ5l6j6QXzX0%lrC%R+u;nrjJ>a~VMdA&GS z4(?H~2|`92GnJ8N11I`10J~7|-FPYNg|#{NK?{Ww{z7T#*F1oE#NjSICp*rq_k97d za|n?Nb}N4A-5~(?5K6>r4=ISt2ORHP%UI$1<@7syMgR_H)=m8Lea!rPr*}v=q>$rkwl*0<*&ZC zU?yImHA4m%OwQOyZvL-(F;7H0sSqT)ZQ<>F^-XwX41l(z{m9Jo9PDVVMF`%KQW{s)bzRqu$o?Gz2qm&E!1bC94yDt;WaxMT`~j@f z9R;OVIa7k-8>=Q5U;fO!(|0web&Z8)^pVL4F?q0000P43(XaExcZC)XO5g_}>Ap4BQE&%nc>iptZDLR|u?6uJVm%UC@+kLF@2I$vP@~#&R zxZV{tB$?U`%t5S1;qJ5m9kDuJM}JpjA48EIcNKk+9(EOFv?MK_o~iwzsEP7#?DW_H f$=?+J;Lm^?$5Vh#T320I00000NkvXXu0mjfxI%Y8 literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_31.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_31.png new file mode 100755 index 0000000000000000000000000000000000000000..ec47b899c994843115098e2b481d4be9e3545bd9 GIT binary patch literal 270 zcmV+p0rCEcP)g#Y&IE8RMH&I=ZT-N9#$G7Z;2?CV z!MD6x1bD!iYcNdCSF^9tY4hauHh`CC?40-Z-=cvn*3{YeK2>8 ze+2U>lk@GCfAh=B#t>UH24K-BvC9r%eZAQz=j37B8kTNI77Uy6BwY4=Pwc+n50F}o UZhAxmRsaA107*qoM6N<$g4SGi=l}o! literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_32.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_32.png new file mode 100755 index 0000000000000000000000000000000000000000..3f345b563e9eeed887691ea64fd476c58e9eade1 GIT binary patch literal 236 zcmVukXtLRdY<7&Yil?6l5smS!)4=ixyV{H|i zEVZ~qQTSxJvPvwAS+^ZYlHpRc4b{SFksE~%lY85BfJbk@bKKYrf4%(Tbt~+$){Jx@>H0 z9v!U*E>kPOV&QLk{US7P`x)X2@FjRl)L3A-;}s^}z6-}5I>m6R*COBYii7&ERd`uB zg+3&W`T8Obyggs*z8c*$1-S7%TAE9JE`yu<`gW@2bNRjVnA)?Z&*lEIf=!Xm246;w!wPWp`HmW)LcC6j8v((m0$X#-)(gTGH^FsQna8H2~_{aHwIgSCq bjE?>S{e=)!nb_>V00000NkvXXu0mjfi(20( literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_34.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_34.png new file mode 100755 index 0000000000000000000000000000000000000000..44c4d0d498b2ebfd6caf104f011430dfe5b1d362 GIT binary patch literal 771 zcmV+e1N{7nP)-)V`@Jcg?b! z8h15C(1l>d;+xnmB8bn0s0B?%Nll~j^76-I($3t^#mqxoUG9(XoO|xacaS8dU}7Ul zvH+yz0pJ4=0SEvKI~0J8h$~QMwbUk6iDv-FZCWX+W})l<4*=N!%mPs`Nk=`_H&U(RQN03dn~zOR4?0F^bcZ+3Jd|f@+2ZE!M+C?0$2hh zw{b3pwgYGh$>~DExEw%JKEP9k2~3drd00M~y~*R%-#{v~l9@dz#;0AHy!)E}^O+Rx z94I<&WVukn2$BWI?n_UP21jE!C^3x zDZI1qZ-3U!AASDMd$7RXZN&e z0fPM>xds;872w$+fB2Cr%~H`{g2wRTyVJ=QSO^(AJ6nsq`o(wFD^F{B%*=)68BWF} zXvTF8XWqhPlMHg|MfEYgan$}7+&OQ0>r%*vAZ@7aw5@LMqSO@9nv+wm?Y$}K6O~oM zi|WC5xD2E}p3qgPtJartKM85w>$fDS`}vAa$%oo~qjz(2j6=ZJSTHBHSJMXE^+B4= zU?IC%uSc~Qb0kp_Bdvd-<4w&=Yi?5=q~4jgms(nr_H|mausIPt6w!cMd<>9Q)~-r& zZE1c*ve0jw1WX8%DOgyo1(dtlNXk_={mO$H@Gr*&ZJJBPG>ZTL002ovPDHLkV1id3 BYq9_U literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_35.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_35.png new file mode 100755 index 0000000000000000000000000000000000000000..f70ecb3abe0a34f98debe1b004eb08b12c98673b GIT binary patch literal 887 zcmV--1Bm>IP)I|X#-uh;n6?-_SZ&e{l2{{$MlW29fAFB}G}ef6 z^We24CdMpP8)HLjLOaozka(ay2$(iyAm9RpvIS%ZcJ_NcEbH}`=Y5{{AKi!E42k#v zphU=jbn`Zm>HmS%9n|H~b!8xcSy~v6Rp-lqj970})rLVV1{%PFlE?{~Lcju=gp(qd z*%bni;C>+|5^&gTdAuyV+9n|%4%uZeCHnQFxLmLD%HZub4lT)5>VmBj+N=Ys2_K~^ zV1&lW)zNY+0M!g#3me@gLq(%!W}f@y-)j(p62OXcD-EhLnzo)IU-P&fxLXyWwT&xb z|HtPlrdaioIrn2=-l|Ag9$u{a^!EC)Ppq60V{voLo_a4%xm$}zC)9i+&-Yb4NaVNu zT}A86)|x5aNgZC!$fT(ViYpi2T@%Uml)-}(Hzy{iL<&;QO|N1JE$x+v{x@M(!=v#?_jqm~nttmr=t z7iljxDh0nY&TkKQ|yw=xuTui4JdN{KB-Euw&K_M zu{BbrM#JrEfIY|m{;WB-CK-FYS(nvM?GAtt1i*TU3t>YvU|1~Pc4N&XpYNDWq}(Rp z%1DKNpNATlm3g=#xh%PX6<18Wv~9zwZ|N?vGQrSH_Q|xNkpJuzI{_f%wM-vl7TrJv3XRa0I{>wWXqt=#1!scW6rfAj(5QHzka zQyVTW<<9`DcMJh@nWN{PdHpKD^JPY&Lac7bwMEwITfBfU#P$ zpzZ?at5EsKk!a|~d!n)&`)d%L`FKEdSYMII!X7zGr3=u>>pS#Q)ytacEojC;7Z+o- zf~u--d0yT_qhcE=ol>1wU2q&x&iL;z`(Ogy;s!}joq9G5+oR*Er}dKKpt^WLd)oE1 z>NPL#d7`Mhy!(hh-O5rh2nM8MqRZx9h;M!aL}7YtJLn0QcYQGMO@3zpl7-zF5M|-c ndusK)F7<&Z%d5Xbx48TZM|mrzzUzGF00000NkvXXu0mjf3B8d` literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_4.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_4.png new file mode 100755 index 0000000000000000000000000000000000000000..7d970234f57cdecc7e45bf765ed313ad92c3161b GIT binary patch literal 890 zcmV-=1BLvFP)6U8pcMp@S4V4`@4ocyo`72k70Lo9~?a<@?V4 z7-HkNVF>`RHUVn@0J9D#kj-8!oah5e0M0sEsTMByP~%y4 zifHE_S9;&`9T#56Ak&f!I@>Q6lLt#!o~PvQmWV0$Q@q{!jiW({!Iqm>)!xxJ?AFuZ zU`dwo>wNprw)yQDKtzs+Bql2VEZ#_Xp67&V7#vKE*?+fZ!Vmso8&H_w08_NvAH?=jCdf)!o1&-%i|OKByIox zqfF}OBHD?>C(oWM%kkR4&uP=|I_j5b%BsXW8h&_k_ouieho*b(@fTn6Bc%mb16K9q z*3XMWKdF`T9i{?#J9BX{Js+F+dx0w|yy5+vx-q!{q<+4=$2V`|kdXo3F66A36uoXB} z6B%s-2h^jkvB2)S^h~NLg^1+yYf==Mu3qsHo)V~txG|rV+P@lK2N5wJ)=f>1h#6iy z<#|>LREs*&0;(mlE0f{!s>rQ;P#O`*uOvKAm2H~}_jk`hrE~}|BS|sCby*QHA9$YU zsQ3v~3!Q-4l>sFSHQSiqlS7WB^FM<_LnNJkFb*ot#_xYEA|jF(lkmKM0Xq7HHc@&K QWdHyG07*qoM6N<$g4?&KI{*Lx literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_5.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_5.png new file mode 100755 index 0000000000000000000000000000000000000000..70eab1f3e8c945560bd8aac429f4ae7e15401456 GIT binary patch literal 819 zcmV-31I+x1P) zUuYav6vlt|=B93H!FAKbeW-EU1Z_*GEfkSfldZI*f?}ae8v4g9A}AVcAQbvgb_ad1 z_+L=a2Qj|sjFwP*$U~(g*ir=9^q~+?$RMFRB|@f9lG)Ad93N&k+xu|ge4Ou`?|%0j zHPQd_kqn)qmV5r}K8jA-fW8>+@Sz(>OpOMw#lnx|~>+7u6}GfM*!KBRqQW$9C?c4A!&7q&C) zZR#>l`I#;9n;`}zfIja1F(kDxeFzxcYip8?Y`a8Eaw+*|eJ)F*YtkW27#2cQ3fD9xxO7i8G3U60x|3hHSFj?51%w@g*Fe6W3Pen(-lWthqH zIKkiFo>@#YdUcaWUK;ygeb245ZyzF3y)D)2H^w|bSsEA$o9Abri#(vmLPTOE(QB~) zSe5~l5WL-02egF&)bGsRKK>VQ(gpckWJY9Pc_ctPj$;TQ18@D9pQ6_VgMkYJ99z_qrZHz^_5-O!*)p0$SA@8>``u9&5i?P zA|=hi@vU}}3!lBz`j-#=wU1y@SuW7CZiv^m0KM@Q0KcH*jeYOjEG9ac0J!&rVWd>M zTm-QI%2S3C^+SMqw+Qi_2_+D0d{@?S)rZC17$6rG63sIoBP%l{B_LDHuT0c^g~i>i z$@@l4X0l=b;Z?7{h=@pS`7uw#(~h&(K}4h;O*1O@MIKm|5nrOJfLwFl+f(jocm#${{bV`LSb#O+VcPa002ovPDHLkV1lqyd=>xz literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_6.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_6.png new file mode 100755 index 0000000000000000000000000000000000000000..8169e0766fd617850ef249e6919e2c7715e8cd9e GIT binary patch literal 799 zcmV+)1K|9LP)@2%14c(S3tq0sqQ7jEH5Dt=*W+!+tAtp8Hr$`!T0+9nA>H+_Nu>*%{ z!r3O^VVig%GbQn&7sQSz>BdX-(8LRNqlAUFbXQ8s>@Yj8hn=OZ-{pJr``+()pXX(q z|D6y3V*`wCc~&4mdNX^kU6}DLUYoRZlwRfq%GQCJzgfTnJ;GS40;s@jr2P7p4z2EO z`BkgUH8%sL>5Hx;%?&bmOPV#=@MWC5ermDatP_F);K8ay`L*yx0CU$U5dPW*AyM(x z^U`0%jVUtakvX+@=#1S?TU}kPT~eh=ycLt~QG(ax)Axz(Ni^|%eTCC)w+3qW$n?oI2)|Li?GX$SGl8*dSc?ud<`f8{IV6KN8%j`Qq+U;K{fgcF08uYQ&u>V>*Dtc2!ZX}?$gX!6H# zq9Cn==(qf}v5Vg(raVadCdiQojiEb=w{x+vg#B^nIU=LSh3(Hwpb#Cg{#fZvXs8rS zpx-R8%_ni*;!%$Q97uyP7Vy2+OWFi7VFxK|`I`@}h6^VQKwSwCd!Kq$AG)axK=pN@ z)ZD^x=k{?|2~f>$uM}>t@@GFFBGOowS((iZ7bT}nfaD|=o_p+uo70GhNU3w8F8_)= z)mjO_!)u>sms1C9KaF7lba$l=XVnG0*L9g&6OrikiTN+(Z)d=9R3ni9re$PLJ@C(h znY`?I@Kz&}CAt4AP%?e+AOz1kfhiA^Jk0C_dGjZ^Z2waRlkTK#qmH2p^tdhSB@q#k dszd{h^B;3hM?PLq!U_NY002ovPDHLkV1lI=dW!%6 literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_7.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_7.png new file mode 100755 index 0000000000000000000000000000000000000000..adee1a63dac8b87d57862f233107c1f961f39cac GIT binary patch literal 817 zcmV-11J3-3P)RhGNuC&1^3lbT18NI;gl(OH8CIa|J4-6 z(9S=ILoqD~ih^##tZOy%4^>3nkhO7aYed^*?YbskzI=}tNn_`GbI$pl!}Gk)3x{3& zuL1y^|G>Z{*9HW%EN2fcZERyzc8Sz=jQclD6e|J6GL)JEDR8&*NEuRfkcY2BQz>8a z!ZoKBgJrhG;k3$Z5YIixT?A2j=N`iCBxBp4$A1Hidih4IN`Gk{$) z08G7~Xn=q)d8oQ~xAB^ZOz%*CwyJlUMANgg7yseme0?g$(l$VCe`M3^GyRY*IssWhRbTRzmwo2GAv1_?vkjcY8eA*Zql6w4+_~uC6_XZ@5yYZkJ zq@DvzFOud8@ndK8K^bWM5J^EQt`{{?0^IwMq*yeJrsaW?`NRnL@qv@8)}6B8;#(@# z+?ZG~S2|Z%>$ogflvd5d*|{gpnqgXv%Hs-hUg(dpH3L^!?6F`Vhv~a3>kdP=Q7sal z+%a0YJGrx*gI|q6zmGkh+uTcF(E%j+XHF=YZ_SK!XFi^>K()=g_RFq6cF{f@p10sT zky|(I&Ck1peII>hq4v@}eWf8H!?1Pm7bD8w_(u0hj%`@qWPBZb26TCpn%6&SC_-{V4gwZyxYn-U8Fd&v>xl0)?^# zuHM(>!OCF>?!W@(WZ7Za!0EEuiE^`mY8|g zU7rO>QutJQ;uW3FbW3%h_uie0s&d|)QeA^W<+}BGZFnta8^B+T0{cf3+mI$Cg?CEQ v>5;|Tk>(}o1xc!GnLUCOXsN>Z%vb*cYgu*d%gmGW00000NkvXXu0mjfmz0(k literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_8.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_8.png new file mode 100755 index 0000000000000000000000000000000000000000..db6e667fb77d119f4150c6a1ec875be023846c19 GIT binary patch literal 875 zcmV-x1C;!UP)~KgG zR}iEKYkd&s5>XHzgbo{2);@?U76v}7jm|c0SDM(WxlQlAUmue0ynNw%zURyLoI^kL zGTAy>AJ&1*viblBH+3K&3PcJG#WBDGup1&ZI*~%d$8{V4nu?GFD0|!@zybGp`T!?U z0Vu+FXuJxL@-`K&x$fN}fO2^v@PK`OBbv*7;lLJ~Gm(Khvu{j6SulUGk@WbdCub`` z#Z=lc0L-r_Os)Cmk-CR%xAg-4&)Qm_@CkdyHb!T9$TTis^htr($(@hgP-8ijR#wVq z%mpcm4H(sWsqG$YTgG7ffWpkif6KfeWw8MZbNlgLKhph95n^DFO6A(*_O}BS*bbHr zEidX={A}`M!Uli0op_nh zy7S_t!gp1q>P8?#z*R_CPxQ`+cX9UxkHv&I6 zXB;Pcc;Wu^DaQzc_;96iITfyx{hJFr)~AcC`;s&|vYODkUY~ObGd+?@ML(r5^Yv=ZHt8XtwHhg6(hr?2qSD`z z!Y34FRMNLOi`H#fFb6PcT4~E8X;k$v3Nx#@{{d={ku%1$CRzXh002ovPDHLkV1k;- BrV{`F literal 0 HcmV?d00001 diff --git a/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_9.png b/assets/dolphin/external/L1_Sleigh_ride_128x64/frame_9.png new file mode 100755 index 0000000000000000000000000000000000000000..a6a37fe29c7f17cec2d4824961e1acfe37f0d353 GIT binary patch literal 823 zcmV-71IYY|P)de9(=SZW1EY1mdVOhDM_c6MG5vwyzZ`^%H}ee=A}$LQ95 zF=jyHg=34CF#l@Q#%R2kI}nFKWUgz1neW&VR+pM! zBwEhe<@Uy2y7&2nVtj@elmP1LJezOG3#aM=kNA}QW9}aFhB*PvWR_uB5A7lEkYhOWwzPxbk_-U#y zg(S~e8g@uwO?$n#9ByJQ zGvG#6dKXzeCxaQ8l3B+|Bi?fK&dC{e`mUQ!fzM=bPgsdwY<$iqS6e%2d0>LNqEgNQ z9~D6fzibBC`8{xD4m8{csK)>{_^E|vBliO?{{st?Q~gh3V Date: Mon, 23 Dec 2024 05:34:05 +0400 Subject: [PATCH 37/85] [FL-3940] Work around incorrect serial port handling by the OS (#4040) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * fix: js sdk flipper detection * chore: bump ver Co-authored-by: あく --- .../system/js_app/packages/fz-sdk/package.json | 2 +- .../system/js_app/packages/fz-sdk/pnpm-lock.yaml | 13 ++++++------- .../system/js_app/packages/fz-sdk/sdk.js | 16 ++++++++++++++-- 3 files changed, 21 insertions(+), 10 deletions(-) diff --git a/applications/system/js_app/packages/fz-sdk/package.json b/applications/system/js_app/packages/fz-sdk/package.json index 3c2954c9c4..f500fae2b9 100644 --- a/applications/system/js_app/packages/fz-sdk/package.json +++ b/applications/system/js_app/packages/fz-sdk/package.json @@ -1,6 +1,6 @@ { "name": "@flipperdevices/fz-sdk", - "version": "0.1.2", + "version": "0.1.3", "description": "Type declarations and documentation for native JS modules available on Flipper Zero", "keywords": [ "flipper", diff --git a/applications/system/js_app/packages/fz-sdk/pnpm-lock.yaml b/applications/system/js_app/packages/fz-sdk/pnpm-lock.yaml index 45944a8546..67d3bde824 100644 --- a/applications/system/js_app/packages/fz-sdk/pnpm-lock.yaml +++ b/applications/system/js_app/packages/fz-sdk/pnpm-lock.yaml @@ -8,13 +8,6 @@ importers: .: dependencies: - prompts: - specifier: ^2.4.2 - version: 2.4.2 - serialport: - specifier: ^12.0.0 - version: 12.0.0 - devDependencies: esbuild: specifier: ^0.24.0 version: 0.24.0 @@ -24,6 +17,12 @@ importers: json5: specifier: ^2.2.3 version: 2.2.3 + prompts: + specifier: ^2.4.2 + version: 2.4.2 + serialport: + specifier: ^12.0.0 + version: 12.0.0 typedoc: specifier: ^0.26.10 version: 0.26.10(typescript@5.6.3) diff --git a/applications/system/js_app/packages/fz-sdk/sdk.js b/applications/system/js_app/packages/fz-sdk/sdk.js index 2eecf032dc..44663203d2 100644 --- a/applications/system/js_app/packages/fz-sdk/sdk.js +++ b/applications/system/js_app/packages/fz-sdk/sdk.js @@ -85,9 +85,21 @@ async function build(config) { async function upload(config) { const appFile = fs.readFileSync(config.input, "utf8"); - const flippers = (await SerialPort.list()).filter(x => x.serialNumber?.startsWith("flip_")); + const serialPorts = await SerialPort.list(); + + let flippers = serialPorts + .filter(x => x.serialNumber?.startsWith("flip_")) + .map(x => ({ path: x.path, name: x.serialNumber.replace("flip_", "") })); + + if (!flippers.length) { + // some Windows installations don't report the serial number correctly; + // filter by STM VCP VID:PID instead + flippers = serialPorts + .filter(x => x?.vendorId === "0483" && x?.productId === "5740") + .map(x => ({ path: x.path, name: x.path })); + } - if (!flippers) { + if (!flippers.length) { console.error("No Flippers found"); process.exit(1); } From 626d7ef509af0902b795ef802cd4a31b68bfa1d1 Mon Sep 17 00:00:00 2001 From: Eric Betts Date: Sun, 22 Dec 2024 17:56:19 -0800 Subject: [PATCH 38/85] Fix skylander ID reading (#4038) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Read skylanders faster * Correct parsing ID from skylanders Co-authored-by: あく --- .../nfc/plugins/supported_cards/skylanders.c | 49 ++++++++++++++++--- 1 file changed, 43 insertions(+), 6 deletions(-) diff --git a/applications/main/nfc/plugins/supported_cards/skylanders.c b/applications/main/nfc/plugins/supported_cards/skylanders.c index 6c199f1146..b5dc0ab86e 100644 --- a/applications/main/nfc/plugins/supported_cards/skylanders.c +++ b/applications/main/nfc/plugins/supported_cards/skylanders.c @@ -7,13 +7,36 @@ #include #include -#define TAG "Skylanders" +#define TAG "Skylanders" +#define POLY UINT64_C(0x42f0e1eba9ea3693) +#define TOP UINT64_C(0x800000000000) +#define UID_LEN 4 +#define KEY_MASK 0xFFFFFFFFFFFF static const uint64_t skylanders_key = 0x4b0b20107ccb; static const char* nfc_resources_header = "Flipper NFC resources"; static const uint32_t nfc_resources_file_version = 1; +uint64_t crc64_like(uint64_t result, uint8_t sector) { + result ^= (uint64_t)sector << 40; + for(int i = 0; i < 8; i++) { + result = (result & TOP) ? (result << 1) ^ POLY : result << 1; + } + return result; +} + +uint64_t taghash(uint32_t uid) { + uint64_t result = 0x9AE903260CC4; + uint8_t uidBytes[UID_LEN] = {0}; + memcpy(uidBytes, &uid, UID_LEN); + + for(int i = 0; i < UID_LEN; i++) { + result = crc64_like(result, uidBytes[i]); + } + return result; +} + static bool skylanders_search_data( Storage* storage, const char* file_name, @@ -88,6 +111,12 @@ static bool skylanders_read(Nfc* nfc, NfcDevice* device) { MfClassicData* data = mf_classic_alloc(); nfc_device_copy_data(device, NfcProtocolMfClassic, data); + size_t* uid_len = 0; + const uint8_t* uid_bytes = mf_classic_get_uid(data, uid_len); + uint32_t uid = 0; + memcpy(&uid, uid_bytes, sizeof(uid)); + uint64_t hash = taghash(uid); + do { MfClassicType type = MfClassicType1k; MfClassicError error = mf_classic_poller_sync_detect_type(nfc, &type); @@ -96,10 +125,18 @@ static bool skylanders_read(Nfc* nfc, NfcDevice* device) { data->type = type; MfClassicDeviceKeys keys = {}; for(size_t i = 0; i < mf_classic_get_total_sectors_num(data->type); i++) { - bit_lib_num_to_bytes_be(skylanders_key, sizeof(MfClassicKey), keys.key_a[i].data); - FURI_BIT_SET(keys.key_a_mask, i); - bit_lib_num_to_bytes_be(skylanders_key, sizeof(MfClassicKey), keys.key_b[i].data); - FURI_BIT_SET(keys.key_b_mask, i); + if(i == 0) { + bit_lib_num_to_bytes_be(skylanders_key, sizeof(MfClassicKey), keys.key_a[i].data); + FURI_BIT_SET(keys.key_a_mask, i); + } else { + uint64_t sectorhash = crc64_like(hash, i); + uint64_t key = sectorhash & KEY_MASK; + uint8_t* keyBytes = (uint8_t*)&key; + memcpy(keys.key_a[i].data, keyBytes, sizeof(MfClassicKey)); + FURI_BIT_SET(keys.key_a_mask, i); + memset(keys.key_b[i].data, 0, sizeof(MfClassicKey)); + FURI_BIT_SET(keys.key_b_mask, i); + } } error = mf_classic_poller_sync_read(nfc, &keys, data); @@ -134,7 +171,7 @@ static bool skylanders_parse(const NfcDevice* device, FuriString* parsed_data) { uint64_t key = bit_lib_bytes_to_num_be(sec_tr->key_a.data, 6); if(key != skylanders_key) break; - const uint16_t id = (uint16_t)*data->block[1].data; + const uint16_t id = data->block[1].data[1] << 8 | data->block[1].data[0]; if(id == 0) break; Storage* storage = furi_record_open(RECORD_STORAGE); From dc73096966be9d5b7085a99a1bb6bd0a278f985f Mon Sep 17 00:00:00 2001 From: ru-asdx <39434750+ru-asdx@users.noreply.github.com> Date: Mon, 23 Dec 2024 02:05:19 +0000 Subject: [PATCH 39/85] using GITHUB_TOKEN to make API requests in scripts/get_env.py (#4033) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: あく --- .github/workflows/build.yml | 1 + .github/workflows/build_compact.yml | 1 + .github/workflows/docs.yml | 1 + .github/workflows/merge_report.yml | 1 + .github/workflows/pvs_studio.yml | 1 + scripts/get_env.py | 6 +++++- 6 files changed, 10 insertions(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 2bc2178aea..66a2bdf73e 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -12,6 +12,7 @@ env: DEFAULT_TARGET: f7 FBT_TOOLCHAIN_PATH: /runner/_work FBT_GIT_SUBMODULE_SHALLOW: 1 + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} jobs: main: diff --git a/.github/workflows/build_compact.yml b/.github/workflows/build_compact.yml index f45275204a..f98ab8b49a 100644 --- a/.github/workflows/build_compact.yml +++ b/.github/workflows/build_compact.yml @@ -6,6 +6,7 @@ on: env: FBT_TOOLCHAIN_PATH: /runner/_work FBT_GIT_SUBMODULE_SHALLOW: 1 + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} jobs: compact: diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 1fa0250856..65af450cf3 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -9,6 +9,7 @@ on: env: TARGETS: f7 DEFAULT_TARGET: f7 + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} jobs: check-secret: diff --git a/.github/workflows/merge_report.yml b/.github/workflows/merge_report.yml index 90302ce1aa..9ee7884c82 100644 --- a/.github/workflows/merge_report.yml +++ b/.github/workflows/merge_report.yml @@ -7,6 +7,7 @@ on: env: FBT_TOOLCHAIN_PATH: /runner/_work + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} jobs: merge_report: diff --git a/.github/workflows/pvs_studio.yml b/.github/workflows/pvs_studio.yml index 8eb6fea482..3f1a164bc9 100644 --- a/.github/workflows/pvs_studio.yml +++ b/.github/workflows/pvs_studio.yml @@ -11,6 +11,7 @@ env: DEFAULT_TARGET: f7 FBT_TOOLCHAIN_PATH: /runner/_work FBT_GIT_SUBMODULE_SHALLOW: 1 + GH_TOKEN: ${{ secrets.GITHUB_TOKEN }} jobs: analyse_c_cpp: diff --git a/scripts/get_env.py b/scripts/get_env.py index e8f6b3b77f..6d6b3cce57 100755 --- a/scripts/get_env.py +++ b/scripts/get_env.py @@ -34,7 +34,11 @@ def get_commit_json(event): commit_url = event["pull_request"]["base"]["repo"]["commits_url"].replace( "{/sha}", f"/{event['pull_request']['head']['sha']}" ) - with urllib.request.urlopen(commit_url, context=context) as commit_file: + request = urllib.request.Request(commit_url) + if "GH_TOKEN" in os.environ: + request.add_header("Authorization", "Bearer %s" % (os.environ["GH_TOKEN"])) + + with urllib.request.urlopen(request, context=context) as commit_file: commit_json = json.loads(commit_file.read().decode("utf-8")) return commit_json From e11a62694ef9809ca845c4680d5582aa7c12446e Mon Sep 17 00:00:00 2001 From: Jan Wiesemann Date: Mon, 23 Dec 2024 03:32:53 +0100 Subject: [PATCH 40/85] Added flipper_format_write_empty_line(...) (#4029) * Added flipper_format_write_empty_line(...) * Format sources Co-authored-by: Aleksandr Kutuzov --- .../unit_tests/tests/flipper_format/flipper_format_test.c | 1 + lib/flipper_format/flipper_format.c | 5 +++++ lib/flipper_format/flipper_format.h | 8 ++++++++ targets/f18/api_symbols.csv | 3 ++- targets/f7/api_symbols.csv | 3 ++- 5 files changed, 18 insertions(+), 2 deletions(-) diff --git a/applications/debug/unit_tests/tests/flipper_format/flipper_format_test.c b/applications/debug/unit_tests/tests/flipper_format/flipper_format_test.c index 888a664442..934634c717 100644 --- a/applications/debug/unit_tests/tests/flipper_format/flipper_format_test.c +++ b/applications/debug/unit_tests/tests/flipper_format/flipper_format_test.c @@ -265,6 +265,7 @@ static bool test_write(const char* file_name) { if(!flipper_format_file_open_always(file, file_name)) break; if(!flipper_format_write_header_cstr(file, test_filetype, test_version)) break; if(!flipper_format_write_comment_cstr(file, "This is comment")) break; + if(!flipper_format_write_empty_line(file)) break; if(!flipper_format_write_string_cstr(file, test_string_key, test_string_data)) break; if(!flipper_format_write_int32(file, test_int_key, test_int_data, COUNT_OF(test_int_data))) break; diff --git a/lib/flipper_format/flipper_format.c b/lib/flipper_format/flipper_format.c index 8992247d1f..d07022e122 100644 --- a/lib/flipper_format/flipper_format.c +++ b/lib/flipper_format/flipper_format.c @@ -403,6 +403,11 @@ bool flipper_format_write_comment_cstr(FlipperFormat* flipper_format, const char return flipper_format_stream_write_comment_cstr(flipper_format->stream, data); } +bool flipper_format_write_empty_line(FlipperFormat* flipper_format) { + furi_check(flipper_format); + return flipper_format_stream_write_eol(flipper_format->stream); +} + bool flipper_format_delete_key(FlipperFormat* flipper_format, const char* key) { furi_check(flipper_format); FlipperStreamWriteData write_data = { diff --git a/lib/flipper_format/flipper_format.h b/lib/flipper_format/flipper_format.h index 46f78e2554..4a1bb767bb 100644 --- a/lib/flipper_format/flipper_format.h +++ b/lib/flipper_format/flipper_format.h @@ -518,6 +518,14 @@ bool flipper_format_write_comment(FlipperFormat* flipper_format, FuriString* dat */ bool flipper_format_write_comment_cstr(FlipperFormat* flipper_format, const char* data); +/** Write empty line (Improves readability for human based parsing) + * + * @param flipper_format Pointer to a FlipperFormat instance + * + * @return True on success + */ +bool flipper_format_write_empty_line(FlipperFormat* flipper_format); + /** Removes the first matching key and its value. Sets the RW pointer to a * position of deleted data. * diff --git a/targets/f18/api_symbols.csv b/targets/f18/api_symbols.csv index 23421712d0..e18aee04d1 100644 --- a/targets/f18/api_symbols.csv +++ b/targets/f18/api_symbols.csv @@ -1,5 +1,5 @@ entry,status,name,type,params -Version,+,79.0,, +Version,+,79.1,, Header,+,applications/services/bt/bt_service/bt.h,, Header,+,applications/services/bt/bt_service/bt_keys_storage.h,, Header,+,applications/services/cli/cli.h,, @@ -1054,6 +1054,7 @@ Function,+,flipper_format_update_uint32,_Bool,"FlipperFormat*, const char*, cons Function,+,flipper_format_write_bool,_Bool,"FlipperFormat*, const char*, const _Bool*, const uint16_t" Function,+,flipper_format_write_comment,_Bool,"FlipperFormat*, FuriString*" Function,+,flipper_format_write_comment_cstr,_Bool,"FlipperFormat*, const char*" +Function,+,flipper_format_write_empty_line,_Bool,FlipperFormat* Function,+,flipper_format_write_float,_Bool,"FlipperFormat*, const char*, const float*, const uint16_t" Function,+,flipper_format_write_header,_Bool,"FlipperFormat*, FuriString*, const uint32_t" Function,+,flipper_format_write_header_cstr,_Bool,"FlipperFormat*, const char*, const uint32_t" diff --git a/targets/f7/api_symbols.csv b/targets/f7/api_symbols.csv index 6f9fc5466e..51404c951c 100644 --- a/targets/f7/api_symbols.csv +++ b/targets/f7/api_symbols.csv @@ -1,5 +1,5 @@ entry,status,name,type,params -Version,+,79.0,, +Version,+,79.1,, Header,+,applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h,, Header,+,applications/services/bt/bt_service/bt.h,, Header,+,applications/services/bt/bt_service/bt_keys_storage.h,, @@ -1164,6 +1164,7 @@ Function,+,flipper_format_update_uint32,_Bool,"FlipperFormat*, const char*, cons Function,+,flipper_format_write_bool,_Bool,"FlipperFormat*, const char*, const _Bool*, const uint16_t" Function,+,flipper_format_write_comment,_Bool,"FlipperFormat*, FuriString*" Function,+,flipper_format_write_comment_cstr,_Bool,"FlipperFormat*, const char*" +Function,+,flipper_format_write_empty_line,_Bool,FlipperFormat* Function,+,flipper_format_write_float,_Bool,"FlipperFormat*, const char*, const float*, const uint16_t" Function,+,flipper_format_write_header,_Bool,"FlipperFormat*, FuriString*, const uint32_t" Function,+,flipper_format_write_header_cstr,_Bool,"FlipperFormat*, const char*, const uint32_t" From 519b89665f6b444ccb3ac4178c89229fda0a42c2 Mon Sep 17 00:00:00 2001 From: Sanghee Park Date: Mon, 23 Dec 2024 11:55:58 +0900 Subject: [PATCH 41/85] Fix invalid path errors while deploying SDK by enforcing toolchain to use UTF-8 on initial SDK Extraction (#4036) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * Fix invalid path errors for non-Latin characters by enforcing UTF-8 (#4024) Due to cryillic alphabet on `/openocd/scripts/target/1986ве1т.cfg`, If the system codepage is handling `WideChar` for cryillic properly, It would cause jumbled characters and fail to decompress via System.IO.Compression.ZipFile without Encoding enforcement. (See https://github.com/flipperdevices/flipperzero-firmware/issues/4024#issuecomment-2545385580) * Scripts: fix line endings Co-authored-by: あく --- scripts/toolchain/windows-toolchain-download.ps1 | 13 +++++++------ 1 file changed, 7 insertions(+), 6 deletions(-) diff --git a/scripts/toolchain/windows-toolchain-download.ps1 b/scripts/toolchain/windows-toolchain-download.ps1 index 025f8341f7..85a5ab7247 100644 --- a/scripts/toolchain/windows-toolchain-download.ps1 +++ b/scripts/toolchain/windows-toolchain-download.ps1 @@ -16,15 +16,15 @@ $toolchain_dist_temp_path = "$download_dir\$toolchain_dist_folder" try { if (Test-Path -LiteralPath "$toolchain_target_path") { - Write-Host -NoNewline "Removing old Windows toolchain.." - Remove-Item -LiteralPath "$toolchain_target_path" -Force -Recurse - Write-Host "done!" + Write-Host -NoNewline "Removing old Windows toolchain.." + Remove-Item -LiteralPath "$toolchain_target_path" -Force -Recurse + Write-Host "done!" } if (Test-path -LiteralPath "$toolchain_target_path\..\current") { - Write-Host -NoNewline "Unlinking 'current'.." + Write-Host -NoNewline "Unlinking 'current'.." Remove-Item -LiteralPath "$toolchain_target_path\..\current" -Force - Write-Host "done!" + Write-Host "done!" } if (!(Test-Path -LiteralPath "$toolchain_zip_temp_path" -PathType Leaf)) { @@ -46,7 +46,8 @@ if (Test-Path -LiteralPath "$toolchain_dist_temp_path") { Write-Host -NoNewline "Extracting Windows toolchain.." # This is faster than Expand-Archive Add-Type -Assembly "System.IO.Compression.Filesystem" -[System.IO.Compression.ZipFile]::ExtractToDirectory("$toolchain_zip_temp_path", "$download_dir") +Add-Type -Assembly "System.Text.Encoding" +[System.IO.Compression.ZipFile]::ExtractToDirectory("$toolchain_zip_temp_path", "$download_dir", [System.Text.Encoding]::UTF8) # Expand-Archive -LiteralPath "$toolchain_zip_temp_path" -DestinationPath "$download_dir" Write-Host -NoNewline "moving.." From 38326877eab18cb3c4150df51c32afe5ed459f0b Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Mon, 23 Dec 2024 19:19:12 +0300 Subject: [PATCH 42/85] add input events sub check [ci skip] --- applications/services/desktop/desktop.c | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/applications/services/desktop/desktop.c b/applications/services/desktop/desktop.c index 9366d65083..abe7d69bc4 100644 --- a/applications/services/desktop/desktop.c +++ b/applications/services/desktop/desktop.c @@ -214,8 +214,10 @@ static void desktop_stop_auto_lock_timer(Desktop* desktop) { static void desktop_auto_lock_arm(Desktop* desktop) { if(desktop->settings.auto_lock_delay_ms) { - desktop->input_events_subscription = furi_pubsub_subscribe( - desktop->input_events_pubsub, desktop_input_event_callback, desktop); + if(!desktop->input_events_subscription) { + desktop->input_events_subscription = furi_pubsub_subscribe( + desktop->input_events_pubsub, desktop_input_event_callback, desktop); + } desktop_start_auto_lock_timer(desktop); } } @@ -246,8 +248,10 @@ static void desktop_stop_auto_poweroff_timer(Desktop* desktop) { static void desktop_auto_poweroff_arm(Desktop* desktop) { if(desktop->settings.auto_poweroff_delay_ms) { - desktop->input_events_subscription = furi_pubsub_subscribe( - desktop->input_events_pubsub, desktop_input_event_callback, desktop); + if(desktop->input_events_subscription) { + desktop->input_events_subscription = furi_pubsub_subscribe( + desktop->input_events_pubsub, desktop_input_event_callback, desktop); + } desktop_start_auto_poweroff_timer(desktop); } } From 4694492ed4c68c5660e10e60c32cb4f89e76de18 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Mon, 23 Dec 2024 21:03:53 +0300 Subject: [PATCH 43/85] upd changelog --- CHANGELOG.md | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f12e3bd563..122f5ccf24 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,11 +1,24 @@ ## Main changes -- Current API: 78.2 +- Current API: 79.1 * SubGHz: Jolly Motors support (with add manually) (Thanks @pkooiman !) * Desktop: Auto Power Off Timer (by @Dmitry422 with some fixes by @xMasterX) * OFW PR 4025: Increase system stack's reserved memory size (Fix USB UART Bridge Crash) (by @Astrrra) * OFW: merged gsurkov/vcp_break_support branch for usb uart bridge (WIP!!!) * Apps: **Check out more Apps updates and fixes by following** [this link](https://github.com/xMasterX/all-the-plugins/commits/dev) ## Other changes +* Desktop: Add input events sub check +* OFW: Fix invalid path errors while deploying SDK by enforcing toolchain to use UTF-8 on initial SDK Extraction +* OFW: **Added flipper_format_write_empty_line(...)** +* OFW: Fix skylander ID reading +* OFW: Work around incorrect serial port handling by the OS +* OFW: Add winter animations +* OFW: FBT: Don't lint JS packages +* OFW: **Fix lost BadBLE keystrokes** +* OFW: **Loader: Fix BusFault in handling of OOM** (was already included in previous UL release) +* OFW: **NFC Fix ISO15693 stucking in wrong mode.** +* OFW: Update `infrared_test.c` reference +* OFW: **FuriThread stdin** +* OFW: **Add the ability to send a signal once via RPC** * OFW: NFC: Plantain parser Last payment amount fix * OFW: NFC clipper: BART station ids for San Lorenzo, Bay Fair * OFW: Fix typo for mf_classic_key_cahce_get_next_key() function From 1739f57c7a9f0e95079870c43c9eb5a238663d84 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Tue, 24 Dec 2024 01:02:05 +0300 Subject: [PATCH 44/85] enable anim --- assets/dolphin/external/manifest.txt | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/assets/dolphin/external/manifest.txt b/assets/dolphin/external/manifest.txt index 32295b50b1..7e8bee083c 100644 --- a/assets/dolphin/external/manifest.txt +++ b/assets/dolphin/external/manifest.txt @@ -225,6 +225,13 @@ Min level: 1 Max level: 3 Weight: 4 +Name: L1_New_year_128x64 +Min butthurt: 0 +Max butthurt: 14 +Min level: 1 +Max level: 3 +Weight: 4 + Name: L3_Fireplace_128x64 Min butthurt: 0 Max butthurt: 13 From 5fd423951bb5fa98c0a4187b68bacb2dbff97f2e Mon Sep 17 00:00:00 2001 From: Anna Antonenko Date: Tue, 24 Dec 2024 05:58:27 +0400 Subject: [PATCH 45/85] [FL-3933] Pipe (#3996) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: FuriThread stdin * ci: fix f18 * feat: stdio callback context * feat: FuriPipe * POTENTIALLY EXPLOSIVE pipe welding * fix: non-explosive welding * Revert welding * docs: furi_pipe * feat: pipe event loop integration * update f18 sdk * f18 * docs: make doxygen happy * fix: event loop not triggering when pipe attached to stdio * fix: partial stdout in pipe * allow simultaneous in and out subscription in event loop * refactor: move pipe out of furi and decouple from event loop * chore: api versioning * Bump api versions * refactor: rename pipe_set_pipe_broken_callback * Toolbox: add missing pragma once Co-authored-by: あく --- applications/debug/unit_tests/application.fam | 8 + .../debug/unit_tests/tests/pipe/pipe_test.c | 153 +++++++++ furi/core/stream_buffer.c | 5 + furi/core/stream_buffer.h | 11 + lib/toolbox/SConscript | 1 + lib/toolbox/pipe.c | 241 ++++++++++++++ lib/toolbox/pipe.h | 295 ++++++++++++++++++ targets/f18/api_symbols.csv | 20 +- targets/f7/api_symbols.csv | 20 +- 9 files changed, 752 insertions(+), 2 deletions(-) create mode 100644 applications/debug/unit_tests/tests/pipe/pipe_test.c create mode 100644 lib/toolbox/pipe.c create mode 100644 lib/toolbox/pipe.h diff --git a/applications/debug/unit_tests/application.fam b/applications/debug/unit_tests/application.fam index dec3283e4e..f92d7e66fb 100644 --- a/applications/debug/unit_tests/application.fam +++ b/applications/debug/unit_tests/application.fam @@ -236,3 +236,11 @@ App( entry_point="get_api", requires=["unit_tests"], ) + +App( + appid="test_pipe", + sources=["tests/common/*.c", "tests/pipe/*.c"], + apptype=FlipperAppType.PLUGIN, + entry_point="get_api", + requires=["unit_tests"], +) diff --git a/applications/debug/unit_tests/tests/pipe/pipe_test.c b/applications/debug/unit_tests/tests/pipe/pipe_test.c new file mode 100644 index 0000000000..d440a04eec --- /dev/null +++ b/applications/debug/unit_tests/tests/pipe/pipe_test.c @@ -0,0 +1,153 @@ +#include "../test.h" // IWYU pragma: keep + +#include +#include + +#define PIPE_SIZE 128U +#define PIPE_TRG_LEVEL 1U + +MU_TEST(pipe_test_trivial) { + PipeSideBundle bundle = pipe_alloc(PIPE_SIZE, PIPE_TRG_LEVEL); + PipeSide* alice = bundle.alices_side; + PipeSide* bob = bundle.bobs_side; + + mu_assert_int_eq(PipeRoleAlice, pipe_role(alice)); + mu_assert_int_eq(PipeRoleBob, pipe_role(bob)); + mu_assert_int_eq(PipeStateOpen, pipe_state(alice)); + mu_assert_int_eq(PipeStateOpen, pipe_state(bob)); + + mu_assert_int_eq(PIPE_SIZE, pipe_spaces_available(alice)); + mu_assert_int_eq(PIPE_SIZE, pipe_spaces_available(bob)); + mu_assert_int_eq(0, pipe_bytes_available(alice)); + mu_assert_int_eq(0, pipe_bytes_available(bob)); + + for(uint8_t i = 0;; ++i) { + mu_assert_int_eq(PIPE_SIZE - i, pipe_spaces_available(alice)); + mu_assert_int_eq(i, pipe_bytes_available(bob)); + + if(pipe_send(alice, &i, sizeof(uint8_t), 0) != sizeof(uint8_t)) { + break; + } + + mu_assert_int_eq(PIPE_SIZE - i, pipe_spaces_available(bob)); + mu_assert_int_eq(i, pipe_bytes_available(alice)); + + if(pipe_send(bob, &i, sizeof(uint8_t), 0) != sizeof(uint8_t)) { + break; + } + } + + pipe_free(alice); + mu_assert_int_eq(PipeStateBroken, pipe_state(bob)); + + for(uint8_t i = 0;; ++i) { + mu_assert_int_eq(PIPE_SIZE - i, pipe_bytes_available(bob)); + + uint8_t value; + if(pipe_receive(bob, &value, sizeof(uint8_t), 0) != sizeof(uint8_t)) { + break; + } + + mu_assert_int_eq(i, value); + } + + pipe_free(bob); +} + +typedef enum { + TestFlagDataArrived = 1 << 0, + TestFlagSpaceFreed = 1 << 1, + TestFlagBecameBroken = 1 << 2, +} TestFlag; + +typedef struct { + TestFlag flag; + FuriEventLoop* event_loop; +} AncillaryThreadContext; + +static void on_data_arrived(PipeSide* pipe, void* context) { + AncillaryThreadContext* ctx = context; + ctx->flag |= TestFlagDataArrived; + uint8_t buffer[PIPE_SIZE]; + size_t size = pipe_receive(pipe, buffer, sizeof(buffer), 0); + pipe_send(pipe, buffer, size, 0); +} + +static void on_space_freed(PipeSide* pipe, void* context) { + AncillaryThreadContext* ctx = context; + ctx->flag |= TestFlagSpaceFreed; + const char* message = "Hi!"; + pipe_send(pipe, message, strlen(message), 0); +} + +static void on_became_broken(PipeSide* pipe, void* context) { + UNUSED(pipe); + AncillaryThreadContext* ctx = context; + ctx->flag |= TestFlagBecameBroken; + furi_event_loop_stop(ctx->event_loop); +} + +static int32_t ancillary_thread(void* context) { + PipeSide* pipe = context; + AncillaryThreadContext thread_ctx = { + .flag = 0, + .event_loop = furi_event_loop_alloc(), + }; + + pipe_attach_to_event_loop(pipe, thread_ctx.event_loop); + pipe_set_callback_context(pipe, &thread_ctx); + pipe_set_data_arrived_callback(pipe, on_data_arrived, 0); + pipe_set_space_freed_callback(pipe, on_space_freed, FuriEventLoopEventFlagEdge); + pipe_set_broken_callback(pipe, on_became_broken, 0); + + furi_event_loop_run(thread_ctx.event_loop); + + pipe_detach_from_event_loop(pipe); + pipe_free(pipe); + furi_event_loop_free(thread_ctx.event_loop); + return thread_ctx.flag; +} + +MU_TEST(pipe_test_event_loop) { + PipeSideBundle bundle = pipe_alloc(PIPE_SIZE, PIPE_TRG_LEVEL); + PipeSide* alice = bundle.alices_side; + PipeSide* bob = bundle.bobs_side; + + FuriThread* thread = furi_thread_alloc_ex("PipeTestAnc", 2048, ancillary_thread, bob); + furi_thread_start(thread); + + const char* message = "Hello!"; + pipe_send(alice, message, strlen(message), FuriWaitForever); + + char buffer_1[16]; + size_t size = pipe_receive(alice, buffer_1, sizeof(buffer_1), FuriWaitForever); + buffer_1[size] = 0; + + char buffer_2[16]; + const char* expected_reply = "Hi!"; + size = pipe_receive(alice, buffer_2, sizeof(buffer_2), FuriWaitForever); + buffer_2[size] = 0; + + pipe_free(alice); + furi_thread_join(thread); + + mu_assert_string_eq(message, buffer_1); + mu_assert_string_eq(expected_reply, buffer_2); + mu_assert_int_eq( + TestFlagDataArrived | TestFlagSpaceFreed | TestFlagBecameBroken, + furi_thread_get_return_code(thread)); + + furi_thread_free(thread); +} + +MU_TEST_SUITE(test_pipe) { + MU_RUN_TEST(pipe_test_trivial); + MU_RUN_TEST(pipe_test_event_loop); +} + +int run_minunit_test_pipe(void) { + MU_RUN_SUITE(test_pipe); + return MU_EXIT_CODE; +} + +TEST_API_DEFINE(run_minunit_test_pipe) diff --git a/furi/core/stream_buffer.c b/furi/core/stream_buffer.c index 783b2d7413..902ec931c3 100644 --- a/furi/core/stream_buffer.c +++ b/furi/core/stream_buffer.c @@ -54,6 +54,11 @@ bool furi_stream_set_trigger_level(FuriStreamBuffer* stream_buffer, size_t trigg pdTRUE; } +size_t furi_stream_get_trigger_level(FuriStreamBuffer* stream_buffer) { + furi_check(stream_buffer); + return ((StaticStreamBuffer_t*)stream_buffer)->xTriggerLevelBytes; +} + size_t furi_stream_buffer_send( FuriStreamBuffer* stream_buffer, const void* data, diff --git a/furi/core/stream_buffer.h b/furi/core/stream_buffer.h index eef8ee5107..deca813c7e 100644 --- a/furi/core/stream_buffer.h +++ b/furi/core/stream_buffer.h @@ -54,6 +54,17 @@ void furi_stream_buffer_free(FuriStreamBuffer* stream_buffer); */ bool furi_stream_set_trigger_level(FuriStreamBuffer* stream_buffer, size_t trigger_level); +/** + * @brief Get trigger level for stream buffer. + * A stream buffer's trigger level is the number of bytes that must be in the + * stream buffer before a task that is blocked on the stream buffer to + * wait for data is moved out of the blocked state. + * + * @param stream_buffer The stream buffer instance + * @return The trigger level for the stream buffer + */ +size_t furi_stream_get_trigger_level(FuriStreamBuffer* stream_buffer); + /** * @brief Sends bytes to a stream buffer. The bytes are copied into the stream buffer. * Wakes up task waiting for data to become available if called from ISR. diff --git a/lib/toolbox/SConscript b/lib/toolbox/SConscript index 03b8999c4d..8a1c4a8c5d 100644 --- a/lib/toolbox/SConscript +++ b/lib/toolbox/SConscript @@ -30,6 +30,7 @@ env.Append( File("stream/string_stream.h"), File("stream/buffered_file_stream.h"), File("strint.h"), + File("pipe.h"), File("protocols/protocol_dict.h"), File("pretty_format.h"), File("hex.h"), diff --git a/lib/toolbox/pipe.c b/lib/toolbox/pipe.c new file mode 100644 index 0000000000..9dc1d368e2 --- /dev/null +++ b/lib/toolbox/pipe.c @@ -0,0 +1,241 @@ +#include "pipe.h" +#include + +/** + * Data shared between both sides. + */ +typedef struct { + FuriSemaphore* instance_count; // role; +} + +PipeState pipe_state(PipeSide* pipe) { + furi_check(pipe); + uint32_t count = furi_semaphore_get_count(pipe->shared->instance_count); + return (count == 1) ? PipeStateOpen : PipeStateBroken; +} + +void pipe_free(PipeSide* pipe) { + furi_check(pipe); + furi_check(!pipe->event_loop); + + furi_mutex_acquire(pipe->shared->state_transition, FuriWaitForever); + FuriStatus status = furi_semaphore_acquire(pipe->shared->instance_count, 0); + + if(status == FuriStatusOk) { + // the other side is still intact + furi_mutex_release(pipe->shared->state_transition); + free(pipe); + } else { + // the other side is gone too + furi_stream_buffer_free(pipe->sending); + furi_stream_buffer_free(pipe->receiving); + furi_semaphore_free(pipe->shared->instance_count); + furi_mutex_free(pipe->shared->state_transition); + free(pipe->shared); + free(pipe); + } +} + +static void _pipe_stdout_cb(const char* data, size_t size, void* context) { + furi_assert(context); + PipeSide* pipe = context; + while(size) { + size_t sent = pipe_send(pipe, data, size, FuriWaitForever); + data += sent; + size -= sent; + } +} + +static size_t _pipe_stdin_cb(char* data, size_t size, FuriWait timeout, void* context) { + furi_assert(context); + PipeSide* pipe = context; + return pipe_receive(pipe, data, size, timeout); +} + +void pipe_install_as_stdio(PipeSide* pipe) { + furi_check(pipe); + furi_thread_set_stdout_callback(_pipe_stdout_cb, pipe); + furi_thread_set_stdin_callback(_pipe_stdin_cb, pipe); +} + +size_t pipe_receive(PipeSide* pipe, void* data, size_t length, FuriWait timeout) { + furi_check(pipe); + return furi_stream_buffer_receive(pipe->receiving, data, length, timeout); +} + +size_t pipe_send(PipeSide* pipe, const void* data, size_t length, FuriWait timeout) { + furi_check(pipe); + return furi_stream_buffer_send(pipe->sending, data, length, timeout); +} + +size_t pipe_bytes_available(PipeSide* pipe) { + furi_check(pipe); + return furi_stream_buffer_bytes_available(pipe->receiving); +} + +size_t pipe_spaces_available(PipeSide* pipe) { + furi_check(pipe); + return furi_stream_buffer_spaces_available(pipe->sending); +} + +static void pipe_receiving_buffer_callback(FuriEventLoopObject* buffer, void* context) { + UNUSED(buffer); + PipeSide* pipe = context; + furi_assert(pipe); + if(pipe->on_space_freed) pipe->on_data_arrived(pipe, pipe->callback_context); +} + +static void pipe_sending_buffer_callback(FuriEventLoopObject* buffer, void* context) { + UNUSED(buffer); + PipeSide* pipe = context; + furi_assert(pipe); + if(pipe->on_data_arrived) pipe->on_space_freed(pipe, pipe->callback_context); +} + +static void pipe_semaphore_callback(FuriEventLoopObject* semaphore, void* context) { + UNUSED(semaphore); + PipeSide* pipe = context; + furi_assert(pipe); + if(pipe->on_pipe_broken) pipe->on_pipe_broken(pipe, pipe->callback_context); +} + +void pipe_attach_to_event_loop(PipeSide* pipe, FuriEventLoop* event_loop) { + furi_check(pipe); + furi_check(event_loop); + furi_check(!pipe->event_loop); + + pipe->event_loop = event_loop; +} + +void pipe_detach_from_event_loop(PipeSide* pipe) { + furi_check(pipe); + furi_check(pipe->event_loop); + + furi_event_loop_maybe_unsubscribe(pipe->event_loop, pipe->receiving); + furi_event_loop_maybe_unsubscribe(pipe->event_loop, pipe->sending); + furi_event_loop_maybe_unsubscribe(pipe->event_loop, pipe->shared->instance_count); + + pipe->event_loop = NULL; +} + +void pipe_set_callback_context(PipeSide* pipe, void* context) { + furi_check(pipe); + pipe->callback_context = context; +} + +void pipe_set_data_arrived_callback( + PipeSide* pipe, + PipeSideDataArrivedCallback callback, + FuriEventLoopEvent event) { + furi_check(pipe); + furi_check(pipe->event_loop); + furi_check((event & FuriEventLoopEventMask) == 0); + + furi_event_loop_maybe_unsubscribe(pipe->event_loop, pipe->receiving); + pipe->on_data_arrived = callback; + if(callback) + furi_event_loop_subscribe_stream_buffer( + pipe->event_loop, + pipe->receiving, + FuriEventLoopEventIn | event, + pipe_receiving_buffer_callback, + pipe); +} + +void pipe_set_space_freed_callback( + PipeSide* pipe, + PipeSideSpaceFreedCallback callback, + FuriEventLoopEvent event) { + furi_check(pipe); + furi_check(pipe->event_loop); + furi_check((event & FuriEventLoopEventMask) == 0); + + furi_event_loop_maybe_unsubscribe(pipe->event_loop, pipe->sending); + pipe->on_space_freed = callback; + if(callback) + furi_event_loop_subscribe_stream_buffer( + pipe->event_loop, + pipe->sending, + FuriEventLoopEventOut | event, + pipe_sending_buffer_callback, + pipe); +} + +void pipe_set_broken_callback( + PipeSide* pipe, + PipeSideBrokenCallback callback, + FuriEventLoopEvent event) { + furi_check(pipe); + furi_check(pipe->event_loop); + furi_check((event & FuriEventLoopEventMask) == 0); + + furi_event_loop_maybe_unsubscribe(pipe->event_loop, pipe->shared->instance_count); + pipe->on_pipe_broken = callback; + if(callback) + furi_event_loop_subscribe_semaphore( + pipe->event_loop, + pipe->shared->instance_count, + FuriEventLoopEventOut | event, + pipe_semaphore_callback, + pipe); +} diff --git a/lib/toolbox/pipe.h b/lib/toolbox/pipe.h new file mode 100644 index 0000000000..df75f4c48d --- /dev/null +++ b/lib/toolbox/pipe.h @@ -0,0 +1,295 @@ +/** + * @file pipe.h + * Pipe convenience module + * + * Pipes are used to send bytes between two threads in both directions. The two + * threads are referred to as Alice and Bob and their abilities regarding what + * they can do with the pipe are equal. + * + * It is also possible to use both sides of the pipe within one thread. + */ +#pragma once + +#ifdef __cplusplus +extern "C" { +#endif + +#include +#include + +/** + * @brief The role of a pipe side + * + * Both roles are equal, as they can both read and write the data. This status + * might be helpful in determining the role of a thread w.r.t. another thread in + * an application that builds on the pipe. + */ +typedef enum { + PipeRoleAlice, + PipeRoleBob, +} PipeRole; + +/** + * @brief The state of a pipe + * + * - `PipeStateOpen`: Both pipe sides are in place, meaning data that is sent + * down the pipe _might_ be read by the peer, and new data sent by the peer + * _might_ arrive. + * - `PipeStateBroken`: The other side of the pipe has been freed, meaning + * data that is written will never reach its destination, and no new data + * will appear in the buffer. + * + * A broken pipe can never become open again, because there's no way to connect + * a side of a pipe to another side of a pipe. + */ +typedef enum { + PipeStateOpen, + PipeStateBroken, +} PipeState; + +typedef struct PipeSide PipeSide; + +typedef struct { + PipeSide* alices_side; + PipeSide* bobs_side; +} PipeSideBundle; + +typedef struct { + size_t capacity; + size_t trigger_level; +} PipeSideReceiveSettings; + +/** + * @brief Allocates two connected sides of one pipe. + * + * Creating a pair of sides using this function is the only way to connect two + * pipe sides together. Two unrelated orphaned sides may never be connected back + * together. + * + * The capacity and trigger level for both directions are the same when the pipe + * is created using this function. Use `pipe_alloc_ex` if you want more + * control. + * + * @param capacity Maximum number of bytes buffered in one direction + * @param trigger_level Number of bytes that need to be available in the buffer + * in order for a blocked thread to unblock + * @returns Bundle with both sides of the pipe + */ +PipeSideBundle pipe_alloc(size_t capacity, size_t trigger_level); + +/** + * @brief Allocates two connected sides of one pipe. + * + * Creating a pair of sides using this function is the only way to connect two + * pipe sides together. Two unrelated orphaned sides may never be connected back + * together. + * + * The capacity and trigger level may be different for the two directions when + * the pipe is created using this function. Use `pipe_alloc` if you don't + * need control this fine. + * + * @param alice `capacity` and `trigger_level` settings for Alice's receiving + * buffer + * @param bob `capacity` and `trigger_level` settings for Bob's receiving buffer + * @returns Bundle with both sides of the pipe + */ +PipeSideBundle pipe_alloc_ex(PipeSideReceiveSettings alice, PipeSideReceiveSettings bob); + +/** + * @brief Gets the role of a pipe side. + * + * The roles (Alice and Bob) are equal, as both can send and receive data. This + * status might be helpful in determining the role of a thread w.r.t. another + * thread. + * + * @param [in] pipe Pipe side to query + * @returns Role of provided pipe side + */ +PipeRole pipe_role(PipeSide* pipe); + +/** + * @brief Gets the state of a pipe. + * + * When the state is `PipeStateOpen`, both sides are active and may send or + * receive data. When the state is `PipeStateBroken`, only one side is active + * (the one that this method has been called on). If you find yourself in that + * state, the data that you send will never be heard by anyone, and the data you + * receive are leftovers in the buffer. + * + * @param [in] pipe Pipe side to query + * @returns State of the pipe + */ +PipeState pipe_state(PipeSide* pipe); + +/** + * @brief Frees a side of a pipe. + * + * When only one of the sides is freed, the pipe is transitioned from the "Open" + * state into the "Broken" state. When both sides are freed, the underlying data + * structures are freed too. + * + * @param [in] pipe Pipe side to free + */ +void pipe_free(PipeSide* pipe); + +/** + * @brief Connects the pipe to the `stdin` and `stdout` of the current thread. + * + * After performing this operation, you can use `getc`, `puts`, etc. to send and + * receive data to and from the pipe. If the pipe becomes broken, C stdlib calls + * will return `EOF` wherever possible. + * + * You can disconnect the pipe by manually calling + * `furi_thread_set_stdout_callback` and `furi_thread_set_stdin_callback` with + * `NULL`. + * + * @param [in] pipe Pipe side to connect to the stdio + */ +void pipe_install_as_stdio(PipeSide* pipe); + +/** + * @brief Receives data from the pipe. + * + * @param [in] pipe The pipe side to read data out of + * @param [out] data The buffer to fill with data + * @param length Maximum length of data to read + * @param timeout The timeout (in ticks) after which the read operation is + * interrupted + * @returns The number of bytes actually written into the provided buffer + */ +size_t pipe_receive(PipeSide* pipe, void* data, size_t length, FuriWait timeout); + +/** + * @brief Sends data into the pipe. + * + * @param [in] pipe The pipe side to send data into + * @param [out] data The buffer to get data from + * @param length Maximum length of data to send + * @param timeout The timeout (in ticks) after which the write operation is + * interrupted + * @returns The number of bytes actually read from the provided buffer + */ +size_t pipe_send(PipeSide* pipe, const void* data, size_t length, FuriWait timeout); + +/** + * @brief Determines how many bytes there are in the pipe available to be read. + * + * @param [in] pipe Pipe side to query + * @returns Number of bytes available to be read out from that side of the pipe + */ +size_t pipe_bytes_available(PipeSide* pipe); + +/** + * @brief Determines how many space there is in the pipe for data to be written + * into. + * + * @param [in] pipe Pipe side to query + * @returns Number of bytes available to be written into that side of the pipe + */ +size_t pipe_spaces_available(PipeSide* pipe); + +/** + * @brief Attaches a `PipeSide` to a `FuriEventLoop`, allowing to attach + * callbacks to the PipeSide. + * + * @param [in] pipe Pipe side to attach to the event loop + * @param [in] event_loop Event loop to attach the pipe side to + */ +void pipe_attach_to_event_loop(PipeSide* pipe, FuriEventLoop* event_loop); + +/** + * @brief Detaches a `PipeSide` from the `FuriEventLoop` that it was previously + * attached to. + * + * @param [in] pipe Pipe side to detach to the event loop + */ +void pipe_detach_from_event_loop(PipeSide* pipe); + +/** + * @brief Callback for when data arrives to a `PipeSide`. + * + * @param [in] pipe Pipe side that called the callback + * @param [inout] context Custom context + */ +typedef void (*PipeSideDataArrivedCallback)(PipeSide* pipe, void* context); + +/** + * @brief Callback for when data is read out of the opposite `PipeSide`. + * + * @param [in] pipe Pipe side that called the callback + * @param [inout] context Custom context + */ +typedef void (*PipeSideSpaceFreedCallback)(PipeSide* pipe, void* context); + +/** + * @brief Callback for when the opposite `PipeSide` is freed, making the pipe + * broken. + * + * @param [in] pipe Pipe side that called the callback + * @param [inout] context Custom context + */ +typedef void (*PipeSideBrokenCallback)(PipeSide* pipe, void* context); + +/** + * @brief Sets the custom context for all callbacks. + * + * @param [in] pipe Pipe side to set the context of + * @param [inout] context Custom context that will be passed to callbacks + */ +void pipe_set_callback_context(PipeSide* pipe, void* context); + +/** + * @brief Sets the callback for when data arrives. + * + * @param [in] pipe Pipe side to assign the callback to + * @param [in] callback Callback to assign to the pipe side. Set to NULL to + * unsubscribe. + * @param [in] event Additional event loop flags (e.g. `Edge`, `Once`, etc.). + * Non-flag values of the enum are not allowed. + * + * @warning Attach the pipe side to an event loop first using + * `pipe_attach_to_event_loop`. + */ +void pipe_set_data_arrived_callback( + PipeSide* pipe, + PipeSideDataArrivedCallback callback, + FuriEventLoopEvent event); + +/** + * @brief Sets the callback for when data is read out of the opposite `PipeSide`. + * + * @param [in] pipe Pipe side to assign the callback to + * @param [in] callback Callback to assign to the pipe side. Set to NULL to + * unsubscribe. + * @param [in] event Additional event loop flags (e.g. `Edge`, `Once`, etc.). + * Non-flag values of the enum are not allowed. + * + * @warning Attach the pipe side to an event loop first using + * `pipe_attach_to_event_loop`. + */ +void pipe_set_space_freed_callback( + PipeSide* pipe, + PipeSideSpaceFreedCallback callback, + FuriEventLoopEvent event); + +/** + * @brief Sets the callback for when the opposite `PipeSide` is freed, making + * the pipe broken. + * + * @param [in] pipe Pipe side to assign the callback to + * @param [in] callback Callback to assign to the pipe side. Set to NULL to + * unsubscribe. + * @param [in] event Additional event loop flags (e.g. `Edge`, `Once`, etc.). + * Non-flag values of the enum are not allowed. + * + * @warning Attach the pipe side to an event loop first using + * `pipe_attach_to_event_loop`. + */ +void pipe_set_broken_callback( + PipeSide* pipe, + PipeSideBrokenCallback callback, + FuriEventLoopEvent event); + +#ifdef __cplusplus +} +#endif diff --git a/targets/f18/api_symbols.csv b/targets/f18/api_symbols.csv index e18aee04d1..0a4b7dde62 100644 --- a/targets/f18/api_symbols.csv +++ b/targets/f18/api_symbols.csv @@ -1,5 +1,5 @@ entry,status,name,type,params -Version,+,79.1,, +Version,+,79.2,, Header,+,applications/services/bt/bt_service/bt.h,, Header,+,applications/services/bt/bt_service/bt_keys_storage.h,, Header,+,applications/services/cli/cli.h,, @@ -161,6 +161,7 @@ Header,+,lib/toolbox/manchester_encoder.h,, Header,+,lib/toolbox/md5_calc.h,, Header,+,lib/toolbox/name_generator.h,, Header,+,lib/toolbox/path.h,, +Header,+,lib/toolbox/pipe.h,, Header,+,lib/toolbox/pretty_format.h,, Header,+,lib/toolbox/protocols/protocol_dict.h,, Header,+,lib/toolbox/pulse_protocols/pulse_glue.h,, @@ -1580,6 +1581,7 @@ Function,+,furi_stream_buffer_receive,size_t,"FuriStreamBuffer*, void*, size_t, Function,+,furi_stream_buffer_reset,FuriStatus,FuriStreamBuffer* Function,+,furi_stream_buffer_send,size_t,"FuriStreamBuffer*, const void*, size_t, uint32_t" Function,+,furi_stream_buffer_spaces_available,size_t,FuriStreamBuffer* +Function,+,furi_stream_get_trigger_level,size_t,FuriStreamBuffer* Function,+,furi_stream_set_trigger_level,_Bool,"FuriStreamBuffer*, size_t" Function,+,furi_string_alloc,FuriString*, Function,+,furi_string_alloc_move,FuriString*,FuriString* @@ -2290,6 +2292,22 @@ Function,+,pb_skip_field,_Bool,"pb_istream_t*, pb_wire_type_t" Function,+,pb_write,_Bool,"pb_ostream_t*, const pb_byte_t*, size_t" Function,-,pclose,int,FILE* Function,-,perror,void,const char* +Function,+,pipe_alloc,PipeSideBundle,"size_t, size_t" +Function,+,pipe_alloc_ex,PipeSideBundle,"PipeSideReceiveSettings, PipeSideReceiveSettings" +Function,+,pipe_attach_to_event_loop,void,"PipeSide*, FuriEventLoop*" +Function,+,pipe_bytes_available,size_t,PipeSide* +Function,+,pipe_detach_from_event_loop,void,PipeSide* +Function,+,pipe_free,void,PipeSide* +Function,+,pipe_install_as_stdio,void,PipeSide* +Function,+,pipe_receive,size_t,"PipeSide*, void*, size_t, FuriWait" +Function,+,pipe_role,PipeRole,PipeSide* +Function,+,pipe_send,size_t,"PipeSide*, const void*, size_t, FuriWait" +Function,+,pipe_set_callback_context,void,"PipeSide*, void*" +Function,+,pipe_set_data_arrived_callback,void,"PipeSide*, PipeSideDataArrivedCallback, FuriEventLoopEvent" +Function,+,pipe_set_broken_callback,void,"PipeSide*, PipeSideBrokenCallback, FuriEventLoopEvent" +Function,+,pipe_set_space_freed_callback,void,"PipeSide*, PipeSideSpaceFreedCallback, FuriEventLoopEvent" +Function,+,pipe_spaces_available,size_t,PipeSide* +Function,+,pipe_state,PipeState,PipeSide* Function,+,plugin_manager_alloc,PluginManager*,"const char*, uint32_t, const ElfApiInterface*" Function,+,plugin_manager_free,void,PluginManager* Function,+,plugin_manager_get,const FlipperAppPluginDescriptor*,"PluginManager*, uint32_t" diff --git a/targets/f7/api_symbols.csv b/targets/f7/api_symbols.csv index 51404c951c..15f4d70d7d 100644 --- a/targets/f7/api_symbols.csv +++ b/targets/f7/api_symbols.csv @@ -1,5 +1,5 @@ entry,status,name,type,params -Version,+,79.1,, +Version,+,79.2,, Header,+,applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h,, Header,+,applications/services/bt/bt_service/bt.h,, Header,+,applications/services/bt/bt_service/bt_keys_storage.h,, @@ -233,6 +233,7 @@ Header,+,lib/toolbox/manchester_encoder.h,, Header,+,lib/toolbox/md5_calc.h,, Header,+,lib/toolbox/name_generator.h,, Header,+,lib/toolbox/path.h,, +Header,+,lib/toolbox/pipe.h,, Header,+,lib/toolbox/pretty_format.h,, Header,+,lib/toolbox/protocols/protocol_dict.h,, Header,+,lib/toolbox/pulse_protocols/pulse_glue.h,, @@ -1799,6 +1800,7 @@ Function,+,furi_stream_buffer_receive,size_t,"FuriStreamBuffer*, void*, size_t, Function,+,furi_stream_buffer_reset,FuriStatus,FuriStreamBuffer* Function,+,furi_stream_buffer_send,size_t,"FuriStreamBuffer*, const void*, size_t, uint32_t" Function,+,furi_stream_buffer_spaces_available,size_t,FuriStreamBuffer* +Function,+,furi_stream_get_trigger_level,size_t,FuriStreamBuffer* Function,+,furi_stream_set_trigger_level,_Bool,"FuriStreamBuffer*, size_t" Function,+,furi_string_alloc,FuriString*, Function,+,furi_string_alloc_move,FuriString*,FuriString* @@ -2926,6 +2928,22 @@ Function,+,pb_skip_field,_Bool,"pb_istream_t*, pb_wire_type_t" Function,+,pb_write,_Bool,"pb_ostream_t*, const pb_byte_t*, size_t" Function,-,pclose,int,FILE* Function,-,perror,void,const char* +Function,+,pipe_alloc,PipeSideBundle,"size_t, size_t" +Function,+,pipe_alloc_ex,PipeSideBundle,"PipeSideReceiveSettings, PipeSideReceiveSettings" +Function,+,pipe_attach_to_event_loop,void,"PipeSide*, FuriEventLoop*" +Function,+,pipe_bytes_available,size_t,PipeSide* +Function,+,pipe_detach_from_event_loop,void,PipeSide* +Function,+,pipe_free,void,PipeSide* +Function,+,pipe_install_as_stdio,void,PipeSide* +Function,+,pipe_receive,size_t,"PipeSide*, void*, size_t, FuriWait" +Function,+,pipe_role,PipeRole,PipeSide* +Function,+,pipe_send,size_t,"PipeSide*, const void*, size_t, FuriWait" +Function,+,pipe_set_callback_context,void,"PipeSide*, void*" +Function,+,pipe_set_data_arrived_callback,void,"PipeSide*, PipeSideDataArrivedCallback, FuriEventLoopEvent" +Function,+,pipe_set_broken_callback,void,"PipeSide*, PipeSideBrokenCallback, FuriEventLoopEvent" +Function,+,pipe_set_space_freed_callback,void,"PipeSide*, PipeSideSpaceFreedCallback, FuriEventLoopEvent" +Function,+,pipe_spaces_available,size_t,PipeSide* +Function,+,pipe_state,PipeState,PipeSide* Function,+,plugin_manager_alloc,PluginManager*,"const char*, uint32_t, const ElfApiInterface*" Function,+,plugin_manager_free,void,PluginManager* Function,+,plugin_manager_get,const FlipperAppPluginDescriptor*,"PluginManager*, uint32_t" From 5fb9558dbb1b48dca1d48e6bffad9f7bf9d9f7a0 Mon Sep 17 00:00:00 2001 From: "dependabot[bot]" <49699333+dependabot[bot]@users.noreply.github.com> Date: Tue, 24 Dec 2024 11:24:01 +0900 Subject: [PATCH 46/85] Bump cross-spawn in /applications/system/js_app/packages/create-fz-app (#4043) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Bumps [cross-spawn](https://github.com/moxystudio/node-cross-spawn) from 7.0.3 to 7.0.6. - [Changelog](https://github.com/moxystudio/node-cross-spawn/blob/master/CHANGELOG.md) - [Commits](https://github.com/moxystudio/node-cross-spawn/compare/v7.0.3...v7.0.6) --- updated-dependencies: - dependency-name: cross-spawn dependency-type: indirect ... Signed-off-by: dependabot[bot] Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com> Co-authored-by: あく --- .../system/js_app/packages/create-fz-app/pnpm-lock.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/applications/system/js_app/packages/create-fz-app/pnpm-lock.yaml b/applications/system/js_app/packages/create-fz-app/pnpm-lock.yaml index 58f20a385d..3f753df15a 100644 --- a/applications/system/js_app/packages/create-fz-app/pnpm-lock.yaml +++ b/applications/system/js_app/packages/create-fz-app/pnpm-lock.yaml @@ -62,8 +62,8 @@ packages: color-name@1.1.4: resolution: {integrity: sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==} - cross-spawn@7.0.3: - resolution: {integrity: sha512-iRDPJKUPVEND7dHPO8rkbOnPpyDygcDFtWjpeWNCgy8WP2rXcxXL8TskReQl6OrB2G7+UJrags1q15Fudc7G6w==} + cross-spawn@7.0.6: + resolution: {integrity: sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==} engines: {node: '>= 8'} eastasianwidth@0.2.0: @@ -240,7 +240,7 @@ snapshots: color-name@1.1.4: {} - cross-spawn@7.0.3: + cross-spawn@7.0.6: dependencies: path-key: 3.1.1 shebang-command: 2.0.0 @@ -256,7 +256,7 @@ snapshots: foreground-child@3.3.0: dependencies: - cross-spawn: 7.0.3 + cross-spawn: 7.0.6 signal-exit: 4.1.0 get-caller-file@2.0.5: {} From 7fc34db57b40b58404910a0eeef87dffbea40729 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Tue, 24 Dec 2024 14:04:34 +0300 Subject: [PATCH 47/85] use event system --- applications/services/desktop/desktop.c | 12 ++++++++---- applications/services/desktop/views/desktop_events.h | 1 + 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/applications/services/desktop/desktop.c b/applications/services/desktop/desktop.c index abe7d69bc4..d77be68a09 100644 --- a/applications/services/desktop/desktop.c +++ b/applications/services/desktop/desktop.c @@ -156,7 +156,11 @@ static bool desktop_custom_event_callback(void* context, uint32_t event) { if(!desktop->app_running && !desktop->locked) { desktop_lock(desktop); } - + } else if(event == DesktopGlobalAutoPowerOff) { + if(!desktop->app_running) { + Power* power = furi_record_open(RECORD_POWER); + power_off(power); + } } else if(event == DesktopGlobalSaveSettings) { desktop_settings_save(&desktop->settings); desktop_apply_settings(desktop); @@ -232,9 +236,9 @@ static void desktop_auto_lock_inhibit(Desktop* desktop) { //--- auto_power_off_timer static void desktop_auto_poweroff_timer_callback(void* context) { - UNUSED(context); - Power* power = furi_record_open(RECORD_POWER); - power_off(power); + furi_assert(context); + Desktop* desktop = context; + view_dispatcher_send_custom_event(desktop->view_dispatcher, DesktopGlobalAutoPowerOff); } static void desktop_start_auto_poweroff_timer(Desktop* desktop) { diff --git a/applications/services/desktop/views/desktop_events.h b/applications/services/desktop/views/desktop_events.h index ba91a30ccd..57cc0fdaa0 100644 --- a/applications/services/desktop/views/desktop_events.h +++ b/applications/services/desktop/views/desktop_events.h @@ -62,4 +62,5 @@ typedef enum { DesktopGlobalApiUnlock, DesktopGlobalSaveSettings, DesktopGlobalReloadSettings, + DesktopGlobalAutoPowerOff, } DesktopEvent; From 1a95757a75f42054b88c6bb9dcb44227175d1a42 Mon Sep 17 00:00:00 2001 From: MX <10697207+xMasterX@users.noreply.github.com> Date: Tue, 24 Dec 2024 14:23:07 +0300 Subject: [PATCH 48/85] upd changelog --- CHANGELOG.md | 10 ++++++---- applications/services/desktop/desktop.c | 2 +- 2 files changed, 7 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 122f5ccf24..245ffe0def 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,24 +1,26 @@ ## Main changes -- Current API: 79.1 +- Current API: 79.2 * SubGHz: Jolly Motors support (with add manually) (Thanks @pkooiman !) * Desktop: Auto Power Off Timer (by @Dmitry422 with some fixes by @xMasterX) +* OFW: **Fix lost BadBLE keystrokes** +* OFW: **Add the ability to send a signal once via RPC** * OFW PR 4025: Increase system stack's reserved memory size (Fix USB UART Bridge Crash) (by @Astrrra) * OFW: merged gsurkov/vcp_break_support branch for usb uart bridge (WIP!!!) * Apps: **Check out more Apps updates and fixes by following** [this link](https://github.com/xMasterX/all-the-plugins/commits/dev) ## Other changes -* Desktop: Add input events sub check +* Desktop: Add input events sub check & use event system for auto power off +* OFW: Bump cross-spawn in /applications/system/js_app/packages/create-fz-app +* OFW: **Pipe** (new api funcs) * OFW: Fix invalid path errors while deploying SDK by enforcing toolchain to use UTF-8 on initial SDK Extraction * OFW: **Added flipper_format_write_empty_line(...)** * OFW: Fix skylander ID reading * OFW: Work around incorrect serial port handling by the OS * OFW: Add winter animations * OFW: FBT: Don't lint JS packages -* OFW: **Fix lost BadBLE keystrokes** * OFW: **Loader: Fix BusFault in handling of OOM** (was already included in previous UL release) * OFW: **NFC Fix ISO15693 stucking in wrong mode.** * OFW: Update `infrared_test.c` reference * OFW: **FuriThread stdin** -* OFW: **Add the ability to send a signal once via RPC** * OFW: NFC: Plantain parser Last payment amount fix * OFW: NFC clipper: BART station ids for San Lorenzo, Bay Fair * OFW: Fix typo for mf_classic_key_cahce_get_next_key() function diff --git a/applications/services/desktop/desktop.c b/applications/services/desktop/desktop.c index d77be68a09..59c5290f4f 100644 --- a/applications/services/desktop/desktop.c +++ b/applications/services/desktop/desktop.c @@ -252,7 +252,7 @@ static void desktop_stop_auto_poweroff_timer(Desktop* desktop) { static void desktop_auto_poweroff_arm(Desktop* desktop) { if(desktop->settings.auto_poweroff_delay_ms) { - if(desktop->input_events_subscription) { + if(!desktop->input_events_subscription) { desktop->input_events_subscription = furi_pubsub_subscribe( desktop->input_events_pubsub, desktop_input_event_callback, desktop); } From 56fe7b09ae896ffdeb76522a56ab41b8a31dcc55 Mon Sep 17 00:00:00 2001 From: noproto Date: Sat, 4 Jan 2025 04:05:40 -0500 Subject: [PATCH 49/85] Fix for early key reuse in dictionary attack state machine --- lib/nfc/protocols/mf_classic/mf_classic_poller.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/nfc/protocols/mf_classic/mf_classic_poller.c b/lib/nfc/protocols/mf_classic/mf_classic_poller.c index ec37c80150..b2d9b114a6 100644 --- a/lib/nfc/protocols/mf_classic/mf_classic_poller.c +++ b/lib/nfc/protocols/mf_classic/mf_classic_poller.c @@ -1921,7 +1921,8 @@ NfcCommand mf_classic_poller_handler_nested_controller(MfClassicPoller* instance sizeof(MfClassicKey)) : NULL; } - if((is_weak || is_last_iter_for_hard_key) && dict_attack_ctx->nested_nonce.count > 0) { + if((is_weak && (dict_attack_ctx->nested_nonce.count == 1)) || + (is_last_iter_for_hard_key && (dict_attack_ctx->nested_nonce.count == 8))) { // Key verify and reuse dict_attack_ctx->nested_phase = MfClassicNestedPhaseDictAttackVerify; dict_attack_ctx->auth_passed = false; From 668500e98581d62240ea322923e1b40f1a7b0bf9 Mon Sep 17 00:00:00 2001 From: Yukai Li Date: Fri, 10 Jan 2025 01:20:34 -0700 Subject: [PATCH 50/85] nfc: Fix MFUL PWD_AUTH command creation (#4051) --- lib/nfc/protocols/mf_ultralight/mf_ultralight_poller_i.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/lib/nfc/protocols/mf_ultralight/mf_ultralight_poller_i.c b/lib/nfc/protocols/mf_ultralight/mf_ultralight_poller_i.c index 141ab6c46d..d843776122 100644 --- a/lib/nfc/protocols/mf_ultralight/mf_ultralight_poller_i.c +++ b/lib/nfc/protocols/mf_ultralight/mf_ultralight_poller_i.c @@ -37,7 +37,7 @@ MfUltralightError mf_ultralight_poller_auth_pwd( furi_check(data); uint8_t auth_cmd[5] = {MF_ULTRALIGHT_CMD_PWD_AUTH}; //-V1009 - memccpy(&auth_cmd[1], data->password.data, 0, MF_ULTRALIGHT_AUTH_PASSWORD_SIZE); + memcpy(&auth_cmd[1], data->password.data, MF_ULTRALIGHT_AUTH_PASSWORD_SIZE); bit_buffer_copy_bytes(instance->tx_buffer, auth_cmd, sizeof(auth_cmd)); MfUltralightError ret = MfUltralightErrorNone; From 5efdab863bbd51997f272236ce8c3e1043cd496d Mon Sep 17 00:00:00 2001 From: Yukai Li Date: Fri, 10 Jan 2025 01:39:39 -0700 Subject: [PATCH 51/85] u2f: Fix leaking message digest contexts (#4052) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * u2f: Fix leaking message digest contexts * Github: fix doxygen version to 1.12 Co-authored-by: あく --- .github/workflows/docs.yml | 2 +- applications/main/u2f/u2f.c | 4 ++++ 2 files changed, 5 insertions(+), 1 deletion(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index 65af450cf3..c291fe0ca5 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -56,7 +56,7 @@ jobs: python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE" - name: 'Generate documentation' - uses: mattnotmitt/doxygen-action@edge + uses: mattnotmitt/doxygen-action@1.12.0 env: DOXY_SRC_ROOT: "${{ github.workspace }}" DOXY_CONFIG_DIR: "${{ github.workspace }}/documentation/doxygen" diff --git a/applications/main/u2f/u2f.c b/applications/main/u2f/u2f.c index 0143eb245f..132baf4f9e 100644 --- a/applications/main/u2f/u2f.c +++ b/applications/main/u2f/u2f.c @@ -280,6 +280,8 @@ static uint16_t u2f_register(U2fData* U2F, uint8_t* buf) { MCHECK(mbedtls_md_hmac_update(&hmac_ctx, private, sizeof(private))); MCHECK(mbedtls_md_hmac_update(&hmac_ctx, req->app_id, sizeof(req->app_id))); MCHECK(mbedtls_md_hmac_finish(&hmac_ctx, handle.hash)); + + mbedtls_md_free(&hmac_ctx); } // Generate public key @@ -387,6 +389,8 @@ static uint16_t u2f_authenticate(U2fData* U2F, uint8_t* buf) { MCHECK(mbedtls_md_hmac_update(&hmac_ctx, priv_key, sizeof(priv_key))); MCHECK(mbedtls_md_hmac_update(&hmac_ctx, req->app_id, sizeof(req->app_id))); MCHECK(mbedtls_md_hmac_finish(&hmac_ctx, mac_control)); + + mbedtls_md_free(&hmac_ctx); } if(memcmp(req->key_handle.hash, mac_control, sizeof(mac_control)) != 0) { From 35c1bfc0570e82ceaaa452f562f30e0f42b5dfab Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E3=81=82=E3=81=8F?= Date: Fri, 10 Jan 2025 20:03:47 +0900 Subject: [PATCH 52/85] Github: update doxygen workflow to use exact version (#4065) * Github: update doxygen workflow to use exact version * Github: inject DOXY_CONFIG_DIR into doxygen execution env * Github: use fbt to build doxygen docs --- .github/workflows/docs.yml | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/.github/workflows/docs.yml b/.github/workflows/docs.yml index c291fe0ca5..064c43655d 100644 --- a/.github/workflows/docs.yml +++ b/.github/workflows/docs.yml @@ -55,15 +55,13 @@ jobs: fi python3 scripts/get_env.py "--event_file=${{ github.event_path }}" "--type=$TYPE" - - name: 'Generate documentation' - uses: mattnotmitt/doxygen-action@1.12.0 - env: - DOXY_SRC_ROOT: "${{ github.workspace }}" - DOXY_CONFIG_DIR: "${{ github.workspace }}/documentation/doxygen" - DOXY_OUTPUT_DIR: "${{ github.workspace }}/documentation/doxygen/build" + - name: install-doxygen + uses: AdarshRawat1/Install-Doxygen@v1.0 with: - working-directory: 'documentation/' - doxyfile-path: './doxygen/Doxyfile-awesome.cfg' + version: "1.12.0" + + - name: 'Generate documentation' + run: ./fbt doxygen - name: 'Upload documentation' if: ${{ github.event_name == 'push' && github.ref == 'refs/heads/dev' && needs.check-secret.outputs.s3-valid-config == 'true' }} From 513be23f837c000c6f37cd122e05fc468eabd893 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Thu, 7 Nov 2024 05:39:29 +0000 Subject: [PATCH 53/85] Revert "Fix compiling unit tests (missing NFC mock for #225)" This reverts commit 2c247bcb50f236f919fca489b0b87406a73137c3. --- lib/nfc/nfc_mock.c | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/lib/nfc/nfc_mock.c b/lib/nfc/nfc_mock.c index 9826ea36f8..ee4bb09cc7 100644 --- a/lib/nfc/nfc_mock.c +++ b/lib/nfc/nfc_mock.c @@ -497,24 +497,6 @@ NfcError nfc_iso15693_listener_tx_sof(Nfc* instance) { return NfcErrorNone; } -NfcError nfc_iso15693_detect_mode(Nfc* instance) { - UNUSED(instance); - - return NfcErrorNone; -} - -NfcError nfc_iso15693_force_1outof4(Nfc* instance) { - UNUSED(instance); - - return NfcErrorNone; -} - -NfcError nfc_iso15693_force_1outof256(Nfc* instance) { - UNUSED(instance); - - return NfcErrorNone; -} - NfcError nfc_felica_listener_set_sensf_res_data( Nfc* instance, const uint8_t* idm, From 69754a8da308ddbd514de0f3cc728d69a3390399 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Thu, 7 Nov 2024 05:39:45 +0000 Subject: [PATCH 54/85] Revert "NFC: Add API to enforce ISO15693 mode (#225)" This reverts commit 5afc01a4c31dc2df0e17b261f19334ff15ada15a. --- lib/nfc/nfc.c | 27 ------------------ lib/nfc/nfc.h | 24 ---------------- .../parsers/iso15693/iso15693_parser.c | 28 ++----------------- .../parsers/iso15693/iso15693_parser.h | 4 --- targets/f7/api_symbols.csv | 8 +----- targets/f7/furi_hal/furi_hal_nfc_iso15693.c | 18 ------------ targets/furi_hal_include/furi_hal_nfc.h | 18 ------------ 7 files changed, 4 insertions(+), 123 deletions(-) diff --git a/lib/nfc/nfc.c b/lib/nfc/nfc.c index 4f43587111..90e65b282f 100644 --- a/lib/nfc/nfc.c +++ b/lib/nfc/nfc.c @@ -646,33 +646,6 @@ NfcError nfc_iso15693_listener_tx_sof(Nfc* instance) { return ret; } -NfcError nfc_iso15693_detect_mode(Nfc* instance) { - furi_check(instance); - - FuriHalNfcError error = furi_hal_nfc_iso15693_detect_mode(); - NfcError ret = nfc_process_hal_error(error); - - return ret; -} - -NfcError nfc_iso15693_force_1outof4(Nfc* instance) { - furi_check(instance); - - FuriHalNfcError error = furi_hal_nfc_iso15693_force_1outof4(); - NfcError ret = nfc_process_hal_error(error); - - return ret; -} - -NfcError nfc_iso15693_force_1outof256(Nfc* instance) { - furi_check(instance); - - FuriHalNfcError error = furi_hal_nfc_iso15693_force_1outof256(); - NfcError ret = nfc_process_hal_error(error); - - return ret; -} - NfcError nfc_felica_listener_set_sensf_res_data( Nfc* instance, const uint8_t* idm, diff --git a/lib/nfc/nfc.h b/lib/nfc/nfc.h index ebd29dc4b1..8fbf90d1fa 100644 --- a/lib/nfc/nfc.h +++ b/lib/nfc/nfc.h @@ -380,30 +380,6 @@ NfcError nfc_felica_listener_set_sensf_res_data( */ NfcError nfc_iso15693_listener_tx_sof(Nfc* instance); -/** - * @brief Set ISO15693 parser mode to autodetect - * -* @param[in,out] instance pointer to the instance to be configured. - * @returns NfcErrorNone on success, any other error code on failure. -*/ -NfcError nfc_iso15693_detect_mode(Nfc* instance); - -/** - * @brief Set ISO15693 parser mode to 1OutOf4, disables autodetection - * - * @param[in,out] instance pointer to the instance to be configured. - * @return NfcErrorNone on success, any other error code on failure. -*/ -NfcError nfc_iso15693_force_1outof4(Nfc* instance); - -/** - * @brief Set ISO15693 parser mode to 1OutOf256, disables autodetection - * - * @param[in,out] instance pointer to the instance to be configured. - * @return NfcErrorNone on success, any other error code on failure. -*/ -NfcError nfc_iso15693_force_1outof256(Nfc* instance); - #ifdef __cplusplus } #endif diff --git a/lib/signal_reader/parsers/iso15693/iso15693_parser.c b/lib/signal_reader/parsers/iso15693/iso15693_parser.c index f4065e4971..a2c6912e63 100644 --- a/lib/signal_reader/parsers/iso15693/iso15693_parser.c +++ b/lib/signal_reader/parsers/iso15693/iso15693_parser.c @@ -26,7 +26,6 @@ typedef enum { struct Iso15693Parser { Iso15693ParserState state; Iso15693ParserMode mode; - bool detect_mode; SignalReader* signal_reader; @@ -63,7 +62,6 @@ typedef Iso15693ParserCommand (*Iso15693ParserStateHandler)(Iso15693Parser* inst Iso15693Parser* iso15693_parser_alloc(const GpioPin* pin, size_t max_frame_size) { Iso15693Parser* instance = malloc(sizeof(Iso15693Parser)); - instance->detect_mode = true; instance->parsed_frame = bit_buffer_alloc(max_frame_size); instance->signal_reader = signal_reader_alloc(pin, ISO15693_PARSER_SIGNAL_READER_BUFF_SIZE); @@ -88,7 +86,7 @@ void iso15693_parser_reset(Iso15693Parser* instance) { furi_assert(instance); instance->state = Iso15693ParserStateParseSoF; - if(instance->detect_mode) instance->mode = Iso15693ParserMode1OutOf4; + instance->mode = Iso15693ParserMode1OutOf4; memset(instance->bitstream_buff, 0x00, sizeof(instance->bitstream_buff)); instance->bitstream_idx = 0; @@ -124,10 +122,10 @@ static void signal_reader_callback(SignalReaderEvent event, void* context) { if(instance->state == Iso15693ParserStateParseSoF) { if(event.data->data[0] == sof_1_out_of_4) { - if(instance->detect_mode) instance->mode = Iso15693ParserMode1OutOf4; + instance->mode = Iso15693ParserMode1OutOf4; instance->state = Iso15693ParserStateParseFrame; } else if(event.data->data[0] == sof_1_out_of_256) { - if(instance->detect_mode) instance->mode = Iso15693ParserMode1OutOf256; + instance->mode = Iso15693ParserMode1OutOf256; instance->state = Iso15693ParserStateParseFrame; } else if(event.data->data[0] == eof_single) { instance->eof_received = true; @@ -300,23 +298,3 @@ void iso15693_parser_get_data( bit_buffer_write_bytes(instance->parsed_frame, buff, buff_size); *data_bits = bit_buffer_get_size(instance->parsed_frame); } - -void iso15693_parser_detect_mode(Iso15693Parser* instance) { - furi_assert(instance); - - instance->detect_mode = true; -} - -void iso15693_parser_force_1outof4(Iso15693Parser* instance) { - furi_assert(instance); - - instance->detect_mode = false; - instance->mode = Iso15693ParserMode1OutOf4; -} - -void iso15693_parser_force_1outof256(Iso15693Parser* instance) { - furi_assert(instance); - - instance->detect_mode = false; - instance->mode = Iso15693ParserMode1OutOf256; -} diff --git a/lib/signal_reader/parsers/iso15693/iso15693_parser.h b/lib/signal_reader/parsers/iso15693/iso15693_parser.h index 66486e0e7a..3017a96d79 100644 --- a/lib/signal_reader/parsers/iso15693/iso15693_parser.h +++ b/lib/signal_reader/parsers/iso15693/iso15693_parser.h @@ -37,10 +37,6 @@ void iso15693_parser_get_data( size_t buff_size, size_t* data_bits); -void iso15693_parser_detect_mode(Iso15693Parser* instance); -void iso15693_parser_force_1outof4(Iso15693Parser* instance); -void iso15693_parser_force_1outof256(Iso15693Parser* instance); - #ifdef __cplusplus } #endif diff --git a/targets/f7/api_symbols.csv b/targets/f7/api_symbols.csv index f5e79d7eec..0627511bf0 100644 --- a/targets/f7/api_symbols.csv +++ b/targets/f7/api_symbols.csv @@ -983,8 +983,8 @@ Function,+,dolphin_deed_get_weight,uint8_t,DolphinDeed Function,+,dolphin_flush,void,Dolphin* Function,+,dolphin_get_pubsub,FuriPubSub*,Dolphin* Function,+,dolphin_get_settings,void,"Dolphin*, DolphinSettings*" -Function,+,dolphin_reload_state,void,Dolphin* Function,+,dolphin_set_settings,void,"Dolphin*, DolphinSettings*" +Function,+,dolphin_reload_state,void,Dolphin* Function,+,dolphin_stats,DolphinStats,Dolphin* Function,+,dolphin_upgrade_level,void,Dolphin* Function,-,dprintf,int,"int, const char*, ..." @@ -1518,9 +1518,6 @@ Function,+,furi_hal_nfc_iso14443a_poller_trx_short_frame,FuriHalNfcError,FuriHal Function,+,furi_hal_nfc_iso14443a_poller_tx_custom_parity,FuriHalNfcError,"const uint8_t*, size_t" Function,+,furi_hal_nfc_iso14443a_rx_sdd_frame,FuriHalNfcError,"uint8_t*, size_t, size_t*" Function,+,furi_hal_nfc_iso14443a_tx_sdd_frame,FuriHalNfcError,"const uint8_t*, size_t" -Function,+,furi_hal_nfc_iso15693_detect_mode,FuriHalNfcError, -Function,+,furi_hal_nfc_iso15693_force_1outof256,FuriHalNfcError, -Function,+,furi_hal_nfc_iso15693_force_1outof4,FuriHalNfcError, Function,+,furi_hal_nfc_iso15693_listener_tx_sof,FuriHalNfcError, Function,+,furi_hal_nfc_listener_enable_rx,FuriHalNfcError, Function,+,furi_hal_nfc_listener_idle,FuriHalNfcError, @@ -2884,9 +2881,6 @@ Function,+,nfc_iso14443a_listener_tx_custom_parity,NfcError,"Nfc*, const BitBuff Function,+,nfc_iso14443a_poller_trx_custom_parity,NfcError,"Nfc*, const BitBuffer*, BitBuffer*, uint32_t" Function,+,nfc_iso14443a_poller_trx_sdd_frame,NfcError,"Nfc*, const BitBuffer*, BitBuffer*, uint32_t" Function,+,nfc_iso14443a_poller_trx_short_frame,NfcError,"Nfc*, NfcIso14443aShortFrame, BitBuffer*, uint32_t" -Function,+,nfc_iso15693_detect_mode,NfcError,Nfc* -Function,+,nfc_iso15693_force_1outof256,NfcError,Nfc* -Function,+,nfc_iso15693_force_1outof4,NfcError,Nfc* Function,+,nfc_iso15693_listener_tx_sof,NfcError,Nfc* Function,+,nfc_listener_alloc,NfcListener*,"Nfc*, NfcProtocol, const NfcDeviceData*" Function,+,nfc_listener_free,void,NfcListener* diff --git a/targets/f7/furi_hal/furi_hal_nfc_iso15693.c b/targets/f7/furi_hal/furi_hal_nfc_iso15693.c index 0fd5dbca5d..3245b67cc8 100644 --- a/targets/f7/furi_hal/furi_hal_nfc_iso15693.c +++ b/targets/f7/furi_hal/furi_hal_nfc_iso15693.c @@ -406,24 +406,6 @@ FuriHalNfcError furi_hal_nfc_iso15693_listener_tx_sof(void) { return FuriHalNfcErrorNone; } -FuriHalNfcError furi_hal_nfc_iso15693_detect_mode(void) { - iso15693_parser_detect_mode(furi_hal_nfc_iso15693_listener->parser); - - return FuriHalNfcErrorNone; -} - -FuriHalNfcError furi_hal_nfc_iso15693_force_1outof4(void) { - iso15693_parser_force_1outof4(furi_hal_nfc_iso15693_listener->parser); - - return FuriHalNfcErrorNone; -} - -FuriHalNfcError furi_hal_nfc_iso15693_force_1outof256(void) { - iso15693_parser_force_1outof256(furi_hal_nfc_iso15693_listener->parser); - - return FuriHalNfcErrorNone; -} - static FuriHalNfcError furi_hal_nfc_iso15693_listener_rx( FuriHalSpiBusHandle* handle, uint8_t* rx_data, diff --git a/targets/furi_hal_include/furi_hal_nfc.h b/targets/furi_hal_include/furi_hal_nfc.h index a651c97772..3a81de6f52 100644 --- a/targets/furi_hal_include/furi_hal_nfc.h +++ b/targets/furi_hal_include/furi_hal_nfc.h @@ -452,24 +452,6 @@ FuriHalNfcError furi_hal_nfc_iso14443a_listener_tx_custom_parity( */ FuriHalNfcError furi_hal_nfc_iso15693_listener_tx_sof(void); -/** Set ISO15693 parser mode to autodetect - * - * @return FuriHalNfcError -*/ -FuriHalNfcError furi_hal_nfc_iso15693_detect_mode(void); - -/** Set ISO15693 parser mode to 1OutOf4, disables autodetection - * - * @return FuriHalNfcError -*/ -FuriHalNfcError furi_hal_nfc_iso15693_force_1outof4(void); - -/** Set ISO15693 parser mode to 1OutOf256, disables autodetection - * - * @return FuriHalNfcError -*/ -FuriHalNfcError furi_hal_nfc_iso15693_force_1outof256(void); - /** * @brief Set FeliCa collision resolution parameters in listener mode. * From 72936e403d60d3afa8dd021ed3cf4587463c05ca Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Sat, 11 Jan 2025 05:23:30 +0000 Subject: [PATCH 55/85] Fix for new `furi_thread_set_stdout_callback()` --- applications/external | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/external b/applications/external index ea20cedd20..cc24afcb6d 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit ea20cedd203c8324e2ccfda8f9359b85eafd8935 +Subproject commit cc24afcb6dd2a6f9052376954bbd5cee3f51b8c0 From 01c04bbeb34063914e9e5a39bbdff76a0fe8c0bf Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Sat, 11 Jan 2025 06:35:28 +0000 Subject: [PATCH 56/85] Format images Really bothers me this is not deterministic Different PCs and OS versions will give different files So here I am, "formatting" all the images for no reason after switching OS --- .../blocking/L0_NewMail_128x51/frame_1.png | Bin 416 -> 416 bytes .../blocking/L0_NewMail_128x51/frame_2.png | Bin 444 -> 445 bytes .../blocking/L0_NewMail_128x51/frame_3.png | Bin 459 -> 459 bytes .../dolphin/blocking/L0_NoDb_128x51/frame_0.png | Bin 405 -> 406 bytes .../blocking/L0_SdBad_128x51/frame_0.png | Bin 414 -> 416 bytes .../dolphin/blocking/L0_SdOk_128x51/frame_0.png | Bin 395 -> 394 bytes .../dolphin/blocking/L0_Url_128x51/frame_0.png | Bin 391 -> 390 bytes .../external/L1_3d_printing_128x64/frame_0.png | Bin 473 -> 475 bytes .../external/L1_3d_printing_128x64/frame_1.png | Bin 477 -> 477 bytes .../external/L1_3d_printing_128x64/frame_10.png | Bin 483 -> 484 bytes .../external/L1_3d_printing_128x64/frame_11.png | Bin 484 -> 486 bytes .../external/L1_3d_printing_128x64/frame_12.png | Bin 478 -> 479 bytes .../external/L1_3d_printing_128x64/frame_13.png | Bin 487 -> 488 bytes .../external/L1_3d_printing_128x64/frame_14.png | Bin 476 -> 478 bytes .../external/L1_3d_printing_128x64/frame_15.png | Bin 481 -> 483 bytes .../external/L1_3d_printing_128x64/frame_16.png | Bin 487 -> 489 bytes .../external/L1_3d_printing_128x64/frame_17.png | Bin 492 -> 491 bytes .../external/L1_3d_printing_128x64/frame_2.png | Bin 476 -> 477 bytes .../external/L1_3d_printing_128x64/frame_20.png | Bin 487 -> 489 bytes .../external/L1_3d_printing_128x64/frame_21.png | Bin 486 -> 487 bytes .../external/L1_3d_printing_128x64/frame_22.png | Bin 491 -> 492 bytes .../external/L1_3d_printing_128x64/frame_24.png | Bin 489 -> 490 bytes .../external/L1_3d_printing_128x64/frame_25.png | Bin 490 -> 491 bytes .../external/L1_3d_printing_128x64/frame_26.png | Bin 494 -> 493 bytes .../external/L1_3d_printing_128x64/frame_27.png | Bin 492 -> 492 bytes .../external/L1_3d_printing_128x64/frame_29.png | Bin 493 -> 493 bytes .../external/L1_3d_printing_128x64/frame_3.png | Bin 477 -> 478 bytes .../external/L1_3d_printing_128x64/frame_30.png | Bin 489 -> 489 bytes .../external/L1_3d_printing_128x64/frame_31.png | Bin 494 -> 495 bytes .../external/L1_3d_printing_128x64/frame_32.png | Bin 492 -> 494 bytes .../external/L1_3d_printing_128x64/frame_33.png | Bin 493 -> 494 bytes .../external/L1_3d_printing_128x64/frame_34.png | Bin 493 -> 494 bytes .../external/L1_3d_printing_128x64/frame_35.png | Bin 491 -> 492 bytes .../external/L1_3d_printing_128x64/frame_36.png | Bin 492 -> 491 bytes .../external/L1_3d_printing_128x64/frame_37.png | Bin 494 -> 495 bytes .../external/L1_3d_printing_128x64/frame_39.png | Bin 494 -> 495 bytes .../external/L1_3d_printing_128x64/frame_4.png | Bin 477 -> 478 bytes .../external/L1_3d_printing_128x64/frame_40.png | Bin 492 -> 493 bytes .../external/L1_3d_printing_128x64/frame_41.png | Bin 495 -> 496 bytes .../external/L1_3d_printing_128x64/frame_42.png | Bin 498 -> 499 bytes .../external/L1_3d_printing_128x64/frame_43.png | Bin 497 -> 497 bytes .../external/L1_3d_printing_128x64/frame_44.png | Bin 497 -> 498 bytes .../external/L1_3d_printing_128x64/frame_45.png | Bin 500 -> 500 bytes .../external/L1_3d_printing_128x64/frame_6.png | Bin 481 -> 481 bytes .../external/L1_3d_printing_128x64/frame_8.png | Bin 476 -> 477 bytes .../external/L1_3d_printing_128x64/frame_9.png | Bin 483 -> 483 bytes .../external/L1_Akira_128x64/frame_12.png | Bin 715 -> 714 bytes .../external/L1_Akira_128x64/frame_16.png | Bin 687 -> 690 bytes .../external/L1_Akira_128x64/frame_17.png | Bin 702 -> 702 bytes .../external/L1_Akira_128x64/frame_20.png | Bin 548 -> 547 bytes .../external/L1_Akira_128x64/frame_21.png | Bin 748 -> 749 bytes .../external/L1_Akira_128x64/frame_26.png | Bin 762 -> 761 bytes .../external/L1_Akira_128x64/frame_27.png | Bin 776 -> 775 bytes .../external/L1_Akira_128x64/frame_34.png | Bin 572 -> 571 bytes .../external/L1_Akira_128x64/frame_7.png | Bin 890 -> 888 bytes .../external/L1_Boxing_128x64/frame_0.png | Bin 628 -> 632 bytes .../external/L1_Boxing_128x64/frame_2.png | Bin 668 -> 668 bytes .../external/L1_Boxing_128x64/frame_3.png | Bin 559 -> 560 bytes .../dolphin/external/L1_Cry_128x64/frame_0.png | Bin 897 -> 897 bytes .../dolphin/external/L1_Cry_128x64/frame_2.png | Bin 897 -> 897 bytes .../dolphin/external/L1_Cry_128x64/frame_6.png | Bin 909 -> 909 bytes .../external/L1_Furippa1_128x64/frame_0.png | Bin 379 -> 379 bytes .../external/L1_Furippa1_128x64/frame_1.png | Bin 411 -> 411 bytes .../external/L1_Furippa1_128x64/frame_10.png | Bin 547 -> 546 bytes .../external/L1_Furippa1_128x64/frame_11.png | Bin 722 -> 722 bytes .../external/L1_Furippa1_128x64/frame_12.png | Bin 531 -> 531 bytes .../external/L1_Furippa1_128x64/frame_13.png | Bin 594 -> 594 bytes .../external/L1_Furippa1_128x64/frame_14.png | Bin 651 -> 652 bytes .../external/L1_Furippa1_128x64/frame_16.png | Bin 517 -> 516 bytes .../external/L1_Furippa1_128x64/frame_17.png | Bin 512 -> 510 bytes .../external/L1_Furippa1_128x64/frame_18.png | Bin 456 -> 458 bytes .../external/L1_Furippa1_128x64/frame_2.png | Bin 420 -> 420 bytes .../external/L1_Furippa1_128x64/frame_3.png | Bin 405 -> 405 bytes .../external/L1_Furippa1_128x64/frame_4.png | Bin 453 -> 453 bytes .../external/L1_Furippa1_128x64/frame_5.png | Bin 462 -> 461 bytes .../external/L1_Furippa1_128x64/frame_6.png | Bin 472 -> 472 bytes .../external/L1_Furippa1_128x64/frame_7.png | Bin 379 -> 379 bytes .../external/L1_Furippa1_128x64/frame_8.png | Bin 379 -> 379 bytes .../external/L1_Furippa1_128x64/frame_9.png | Bin 416 -> 417 bytes .../external/L1_Kaiju_128x64/frame_0.png | Bin 654 -> 654 bytes .../external/L1_Kaiju_128x64/frame_1.png | Bin 658 -> 658 bytes .../external/L1_Kaiju_128x64/frame_10.png | Bin 678 -> 677 bytes .../external/L1_Kaiju_128x64/frame_11.png | Bin 623 -> 624 bytes .../external/L1_Kaiju_128x64/frame_12.png | Bin 602 -> 601 bytes .../external/L1_Kaiju_128x64/frame_13.png | Bin 592 -> 591 bytes .../external/L1_Kaiju_128x64/frame_14.png | Bin 603 -> 603 bytes .../external/L1_Kaiju_128x64/frame_15.png | Bin 619 -> 619 bytes .../external/L1_Kaiju_128x64/frame_16.png | Bin 581 -> 580 bytes .../external/L1_Kaiju_128x64/frame_17.png | Bin 605 -> 604 bytes .../external/L1_Kaiju_128x64/frame_18.png | Bin 448 -> 453 bytes .../external/L1_Kaiju_128x64/frame_19.png | Bin 410 -> 411 bytes .../external/L1_Kaiju_128x64/frame_2.png | Bin 655 -> 657 bytes .../external/L1_Kaiju_128x64/frame_21.png | Bin 800 -> 800 bytes .../external/L1_Kaiju_128x64/frame_3.png | Bin 658 -> 660 bytes .../external/L1_Kaiju_128x64/frame_38.png | Bin 822 -> 820 bytes .../external/L1_Kaiju_128x64/frame_39.png | Bin 798 -> 798 bytes .../external/L1_Kaiju_128x64/frame_4.png | Bin 658 -> 657 bytes .../external/L1_Kaiju_128x64/frame_41.png | Bin 824 -> 821 bytes .../external/L1_Kaiju_128x64/frame_45.png | Bin 616 -> 614 bytes .../external/L1_Kaiju_128x64/frame_46.png | Bin 656 -> 655 bytes .../external/L1_Kaiju_128x64/frame_47.png | Bin 652 -> 654 bytes .../external/L1_Kaiju_128x64/frame_5.png | Bin 663 -> 665 bytes .../external/L1_Kaiju_128x64/frame_6.png | Bin 648 -> 648 bytes .../external/L1_Kaiju_128x64/frame_7.png | Bin 660 -> 660 bytes .../external/L1_Kaiju_128x64/frame_8.png | Bin 651 -> 655 bytes .../external/L1_Kaiju_128x64/frame_9.png | Bin 665 -> 666 bytes .../external/L1_Laptop_128x51/frame_0.png | Bin 566 -> 565 bytes .../external/L1_Laptop_128x51/frame_1.png | Bin 567 -> 568 bytes .../external/L1_Laptop_128x51/frame_2.png | Bin 569 -> 569 bytes .../external/L1_Laptop_128x51/frame_3.png | Bin 564 -> 564 bytes .../external/L1_Laptop_128x51/frame_4.png | Bin 567 -> 566 bytes .../external/L1_Laptop_128x51/frame_5.png | Bin 561 -> 561 bytes .../external/L1_Laptop_128x51/frame_6.png | Bin 563 -> 563 bytes .../external/L1_Laptop_128x51/frame_7.png | Bin 564 -> 562 bytes .../external/L1_Leaving_sad_128x64/frame_10.png | Bin 422 -> 423 bytes .../external/L1_Leaving_sad_128x64/frame_11.png | Bin 393 -> 392 bytes .../external/L1_Leaving_sad_128x64/frame_12.png | Bin 400 -> 400 bytes .../external/L1_Leaving_sad_128x64/frame_2.png | Bin 619 -> 619 bytes .../external/L1_Leaving_sad_128x64/frame_4.png | Bin 562 -> 562 bytes .../external/L1_Leaving_sad_128x64/frame_5.png | Bin 562 -> 562 bytes .../external/L1_Leaving_sad_128x64/frame_6.png | Bin 570 -> 571 bytes .../external/L1_Leaving_sad_128x64/frame_7.png | Bin 584 -> 583 bytes .../external/L1_Leaving_sad_128x64/frame_8.png | Bin 493 -> 492 bytes .../external/L1_Leaving_sad_128x64/frame_9.png | Bin 406 -> 406 bytes .../external/L1_Mad_fist_128x64/frame_0.png | Bin 647 -> 647 bytes .../external/L1_Mad_fist_128x64/frame_1.png | Bin 665 -> 665 bytes .../external/L1_Mad_fist_128x64/frame_10.png | Bin 654 -> 653 bytes .../external/L1_Mad_fist_128x64/frame_11.png | Bin 627 -> 627 bytes .../external/L1_Mad_fist_128x64/frame_12.png | Bin 628 -> 627 bytes .../external/L1_Mad_fist_128x64/frame_2.png | Bin 641 -> 641 bytes .../external/L1_Mad_fist_128x64/frame_3.png | Bin 662 -> 661 bytes .../external/L1_Mad_fist_128x64/frame_6.png | Bin 635 -> 637 bytes .../external/L1_Mad_fist_128x64/frame_7.png | Bin 642 -> 643 bytes .../external/L1_Mad_fist_128x64/frame_8.png | Bin 647 -> 647 bytes .../external/L1_Mad_fist_128x64/frame_9.png | Bin 649 -> 650 bytes .../dolphin/external/L1_Mods_128x64/frame_0.png | Bin 672 -> 673 bytes .../dolphin/external/L1_Mods_128x64/frame_1.png | Bin 679 -> 676 bytes .../external/L1_Mods_128x64/frame_10.png | Bin 687 -> 685 bytes .../external/L1_Mods_128x64/frame_11.png | Bin 670 -> 668 bytes .../external/L1_Mods_128x64/frame_12.png | Bin 660 -> 659 bytes .../external/L1_Mods_128x64/frame_13.png | Bin 684 -> 680 bytes .../external/L1_Mods_128x64/frame_14.png | Bin 657 -> 656 bytes .../external/L1_Mods_128x64/frame_15.png | Bin 660 -> 660 bytes .../external/L1_Mods_128x64/frame_16.png | Bin 681 -> 679 bytes .../external/L1_Mods_128x64/frame_17.png | Bin 676 -> 674 bytes .../external/L1_Mods_128x64/frame_18.png | Bin 684 -> 674 bytes .../external/L1_Mods_128x64/frame_19.png | Bin 679 -> 670 bytes .../dolphin/external/L1_Mods_128x64/frame_2.png | Bin 674 -> 676 bytes .../external/L1_Mods_128x64/frame_20.png | Bin 662 -> 661 bytes .../external/L1_Mods_128x64/frame_21.png | Bin 691 -> 694 bytes .../external/L1_Mods_128x64/frame_22.png | Bin 675 -> 673 bytes .../external/L1_Mods_128x64/frame_23.png | Bin 689 -> 688 bytes .../external/L1_Mods_128x64/frame_24.png | Bin 706 -> 699 bytes .../external/L1_Mods_128x64/frame_25.png | Bin 701 -> 700 bytes .../external/L1_Mods_128x64/frame_26.png | Bin 703 -> 701 bytes .../external/L1_Mods_128x64/frame_27.png | Bin 698 -> 696 bytes .../external/L1_Mods_128x64/frame_28.png | Bin 676 -> 674 bytes .../external/L1_Mods_128x64/frame_29.png | Bin 687 -> 685 bytes .../dolphin/external/L1_Mods_128x64/frame_3.png | Bin 665 -> 664 bytes .../external/L1_Mods_128x64/frame_30.png | Bin 662 -> 660 bytes .../external/L1_Mods_128x64/frame_31.png | Bin 687 -> 688 bytes .../external/L1_Mods_128x64/frame_32.png | Bin 631 -> 631 bytes .../external/L1_Mods_128x64/frame_33.png | Bin 514 -> 516 bytes .../external/L1_Mods_128x64/frame_34.png | Bin 627 -> 626 bytes .../external/L1_Mods_128x64/frame_35.png | Bin 703 -> 703 bytes .../external/L1_Mods_128x64/frame_36.png | Bin 697 -> 697 bytes .../external/L1_Mods_128x64/frame_37.png | Bin 663 -> 661 bytes .../external/L1_Mods_128x64/frame_38.png | Bin 665 -> 662 bytes .../external/L1_Mods_128x64/frame_39.png | Bin 670 -> 663 bytes .../dolphin/external/L1_Mods_128x64/frame_4.png | Bin 668 -> 666 bytes .../external/L1_Mods_128x64/frame_40.png | Bin 684 -> 684 bytes .../external/L1_Mods_128x64/frame_41.png | Bin 635 -> 635 bytes .../external/L1_Mods_128x64/frame_42.png | Bin 562 -> 564 bytes .../external/L1_Mods_128x64/frame_43.png | Bin 634 -> 635 bytes .../external/L1_Mods_128x64/frame_44.png | Bin 679 -> 680 bytes .../external/L1_Mods_128x64/frame_45.png | Bin 620 -> 618 bytes .../external/L1_Mods_128x64/frame_46.png | Bin 655 -> 654 bytes .../external/L1_Mods_128x64/frame_47.png | Bin 671 -> 669 bytes .../external/L1_Mods_128x64/frame_48.png | Bin 650 -> 648 bytes .../dolphin/external/L1_Mods_128x64/frame_5.png | Bin 676 -> 680 bytes .../dolphin/external/L1_Mods_128x64/frame_6.png | Bin 659 -> 658 bytes .../dolphin/external/L1_Mods_128x64/frame_7.png | Bin 657 -> 655 bytes .../dolphin/external/L1_Mods_128x64/frame_8.png | Bin 682 -> 676 bytes .../dolphin/external/L1_Mods_128x64/frame_9.png | Bin 688 -> 682 bytes .../external/L1_My_dude_128x64/frame_10.png | Bin 632 -> 631 bytes .../external/L1_My_dude_128x64/frame_11.png | Bin 625 -> 625 bytes .../external/L1_My_dude_128x64/frame_2.png | Bin 808 -> 807 bytes .../external/L1_My_dude_128x64/frame_20.png | Bin 796 -> 794 bytes .../external/L1_My_dude_128x64/frame_21.png | Bin 599 -> 599 bytes .../external/L1_My_dude_128x64/frame_22.png | Bin 625 -> 624 bytes .../external/L1_My_dude_128x64/frame_23.png | Bin 610 -> 610 bytes .../external/L1_My_dude_128x64/frame_24.png | Bin 575 -> 574 bytes .../external/L1_My_dude_128x64/frame_25.png | Bin 766 -> 764 bytes .../external/L1_My_dude_128x64/frame_27.png | Bin 789 -> 789 bytes .../external/L1_My_dude_128x64/frame_35.png | Bin 811 -> 811 bytes .../external/L1_My_dude_128x64/frame_38.png | Bin 823 -> 821 bytes .../external/L1_My_dude_128x64/frame_41.png | Bin 789 -> 788 bytes .../external/L1_My_dude_128x64/frame_42.png | Bin 703 -> 701 bytes .../external/L1_My_dude_128x64/frame_43.png | Bin 553 -> 553 bytes .../external/L1_My_dude_128x64/frame_44.png | Bin 379 -> 383 bytes .../external/L1_My_dude_128x64/frame_45.png | Bin 313 -> 313 bytes .../external/L1_My_dude_128x64/frame_46.png | Bin 550 -> 545 bytes .../external/L1_My_dude_128x64/frame_5.png | Bin 829 -> 828 bytes .../L1_Procrastinating_128x64/frame_10.png | Bin 605 -> 604 bytes .../L1_Procrastinating_128x64/frame_11.png | Bin 552 -> 552 bytes .../L1_Procrastinating_128x64/frame_13.png | Bin 610 -> 609 bytes .../L1_Procrastinating_128x64/frame_14.png | Bin 563 -> 562 bytes .../L1_Procrastinating_128x64/frame_15.png | Bin 656 -> 655 bytes .../L1_Procrastinating_128x64/frame_16.png | Bin 632 -> 636 bytes .../L1_Procrastinating_128x64/frame_22.png | Bin 657 -> 658 bytes .../L1_Procrastinating_128x64/frame_24.png | Bin 514 -> 513 bytes .../L1_Procrastinating_128x64/frame_25.png | Bin 746 -> 746 bytes .../L1_Procrastinating_128x64/frame_26.png | Bin 670 -> 671 bytes .../L1_Procrastinating_128x64/frame_27.png | Bin 569 -> 569 bytes .../L1_Procrastinating_128x64/frame_28.png | Bin 610 -> 610 bytes .../L1_Procrastinating_128x64/frame_40.png | Bin 745 -> 744 bytes .../L1_Procrastinating_128x64/frame_8.png | Bin 586 -> 587 bytes .../L1_Procrastinating_128x64/frame_9.png | Bin 569 -> 569 bytes .../external/L1_Sad_song_128x64/frame_1.png | Bin 719 -> 719 bytes .../external/L1_Sad_song_128x64/frame_10.png | Bin 567 -> 568 bytes .../external/L1_Sad_song_128x64/frame_11.png | Bin 578 -> 578 bytes .../external/L1_Sad_song_128x64/frame_12.png | Bin 537 -> 538 bytes .../external/L1_Sad_song_128x64/frame_13.png | Bin 612 -> 611 bytes .../external/L1_Sad_song_128x64/frame_14.png | Bin 600 -> 603 bytes .../external/L1_Sad_song_128x64/frame_15.png | Bin 603 -> 602 bytes .../external/L1_Sad_song_128x64/frame_16.png | Bin 539 -> 541 bytes .../external/L1_Sad_song_128x64/frame_17.png | Bin 544 -> 546 bytes .../external/L1_Sad_song_128x64/frame_18.png | Bin 557 -> 556 bytes .../external/L1_Sad_song_128x64/frame_20.png | Bin 490 -> 489 bytes .../external/L1_Sad_song_128x64/frame_21.png | Bin 469 -> 472 bytes .../external/L1_Sad_song_128x64/frame_22.png | Bin 441 -> 444 bytes .../external/L1_Sad_song_128x64/frame_23.png | Bin 425 -> 425 bytes .../external/L1_Sad_song_128x64/frame_24.png | Bin 439 -> 442 bytes .../external/L1_Sad_song_128x64/frame_25.png | Bin 434 -> 441 bytes .../external/L1_Sad_song_128x64/frame_26.png | Bin 428 -> 427 bytes .../external/L1_Sad_song_128x64/frame_27.png | Bin 416 -> 416 bytes .../external/L1_Sad_song_128x64/frame_28.png | Bin 445 -> 447 bytes .../external/L1_Sad_song_128x64/frame_29.png | Bin 498 -> 495 bytes .../external/L1_Sad_song_128x64/frame_3.png | Bin 721 -> 720 bytes .../external/L1_Sad_song_128x64/frame_30.png | Bin 450 -> 451 bytes .../external/L1_Sad_song_128x64/frame_31.png | Bin 474 -> 472 bytes .../external/L1_Sad_song_128x64/frame_32.png | Bin 454 -> 453 bytes .../external/L1_Sad_song_128x64/frame_33.png | Bin 487 -> 483 bytes .../external/L1_Sad_song_128x64/frame_34.png | Bin 442 -> 444 bytes .../external/L1_Sad_song_128x64/frame_35.png | Bin 451 -> 451 bytes .../external/L1_Sad_song_128x64/frame_36.png | Bin 391 -> 392 bytes .../external/L1_Sad_song_128x64/frame_37.png | Bin 394 -> 395 bytes .../external/L1_Sad_song_128x64/frame_39.png | Bin 472 -> 471 bytes .../external/L1_Sad_song_128x64/frame_40.png | Bin 463 -> 463 bytes .../external/L1_Sad_song_128x64/frame_41.png | Bin 442 -> 441 bytes .../external/L1_Sad_song_128x64/frame_42.png | Bin 523 -> 523 bytes .../external/L1_Sad_song_128x64/frame_43.png | Bin 458 -> 459 bytes .../external/L1_Sad_song_128x64/frame_44.png | Bin 597 -> 598 bytes .../external/L1_Sad_song_128x64/frame_45.png | Bin 636 -> 634 bytes .../external/L1_Sad_song_128x64/frame_46.png | Bin 571 -> 571 bytes .../external/L1_Sad_song_128x64/frame_47.png | Bin 650 -> 651 bytes .../external/L1_Sad_song_128x64/frame_48.png | Bin 584 -> 584 bytes .../external/L1_Sad_song_128x64/frame_49.png | Bin 665 -> 664 bytes .../external/L1_Sad_song_128x64/frame_50.png | Bin 584 -> 582 bytes .../external/L1_Sad_song_128x64/frame_51.png | Bin 681 -> 682 bytes .../external/L1_Sad_song_128x64/frame_52.png | Bin 585 -> 586 bytes .../external/L1_Sad_song_128x64/frame_53.png | Bin 405 -> 404 bytes .../external/L1_Sad_song_128x64/frame_54.png | Bin 430 -> 429 bytes .../external/L1_Sad_song_128x64/frame_55.png | Bin 361 -> 361 bytes .../external/L1_Sad_song_128x64/frame_56.png | Bin 275 -> 275 bytes .../external/L1_Senpai_128x64/frame_19.png | Bin 780 -> 781 bytes .../external/L1_Senpai_128x64/frame_20.png | Bin 633 -> 632 bytes .../external/L1_Senpai_128x64/frame_21.png | Bin 646 -> 647 bytes .../external/L1_Senpai_128x64/frame_22.png | Bin 566 -> 566 bytes .../external/L1_Senpai_128x64/frame_26.png | Bin 662 -> 659 bytes .../external/L1_Senpai_128x64/frame_27.png | Bin 654 -> 654 bytes .../external/L1_Senpai_128x64/frame_29.png | Bin 586 -> 586 bytes .../external/L1_Senpai_128x64/frame_30.png | Bin 613 -> 614 bytes .../external/L1_Senpai_128x64/frame_31.png | Bin 592 -> 593 bytes .../external/L1_Senpai_128x64/frame_35.png | Bin 837 -> 836 bytes .../external/L1_Sleep_128x64/frame_3.png | Bin 598 -> 599 bytes .../dolphin/external/L1_Tv_128x47/frame_0.png | Bin 510 -> 510 bytes .../dolphin/external/L1_Tv_128x47/frame_1.png | Bin 519 -> 519 bytes .../dolphin/external/L1_Tv_128x47/frame_2.png | Bin 509 -> 509 bytes .../dolphin/external/L1_Tv_128x47/frame_3.png | Bin 515 -> 515 bytes .../dolphin/external/L1_Tv_128x47/frame_4.png | Bin 511 -> 511 bytes .../dolphin/external/L1_Tv_128x47/frame_5.png | Bin 519 -> 519 bytes .../dolphin/external/L1_Tv_128x47/frame_6.png | Bin 502 -> 502 bytes .../dolphin/external/L1_Tv_128x47/frame_7.png | Bin 523 -> 523 bytes .../external/L1_Wardriving_128x64/frame_0.png | Bin 591 -> 591 bytes .../external/L1_Wardriving_128x64/frame_1.png | Bin 605 -> 606 bytes .../external/L1_Wardriving_128x64/frame_2.png | Bin 622 -> 623 bytes .../external/L1_Wardriving_128x64/frame_3.png | Bin 634 -> 634 bytes .../external/L1_Wardriving_128x64/frame_4.png | Bin 607 -> 608 bytes .../external/L1_Wardriving_128x64/frame_6.png | Bin 596 -> 598 bytes .../L2_Coding_in_the_shell_128x64/frame_0.png | Bin 581 -> 580 bytes .../L2_Coding_in_the_shell_128x64/frame_1.png | Bin 575 -> 575 bytes .../L2_Coding_in_the_shell_128x64/frame_10.png | Bin 618 -> 620 bytes .../L2_Coding_in_the_shell_128x64/frame_11.png | Bin 622 -> 620 bytes .../L2_Coding_in_the_shell_128x64/frame_12.png | Bin 620 -> 619 bytes .../L2_Coding_in_the_shell_128x64/frame_13.png | Bin 601 -> 600 bytes .../L2_Coding_in_the_shell_128x64/frame_14.png | Bin 530 -> 531 bytes .../L2_Coding_in_the_shell_128x64/frame_15.png | Bin 532 -> 533 bytes .../L2_Coding_in_the_shell_128x64/frame_16.png | Bin 614 -> 614 bytes .../L2_Coding_in_the_shell_128x64/frame_17.png | Bin 576 -> 574 bytes .../L2_Coding_in_the_shell_128x64/frame_18.png | Bin 569 -> 569 bytes .../L2_Coding_in_the_shell_128x64/frame_19.png | Bin 585 -> 583 bytes .../L2_Coding_in_the_shell_128x64/frame_2.png | Bin 600 -> 600 bytes .../L2_Coding_in_the_shell_128x64/frame_21.png | Bin 636 -> 635 bytes .../L2_Coding_in_the_shell_128x64/frame_23.png | Bin 589 -> 588 bytes .../L2_Coding_in_the_shell_128x64/frame_24.png | Bin 558 -> 558 bytes .../L2_Coding_in_the_shell_128x64/frame_3.png | Bin 602 -> 601 bytes .../L2_Coding_in_the_shell_128x64/frame_4.png | Bin 606 -> 606 bytes .../L2_Coding_in_the_shell_128x64/frame_43.png | Bin 557 -> 557 bytes .../L2_Coding_in_the_shell_128x64/frame_44.png | Bin 552 -> 557 bytes .../L2_Coding_in_the_shell_128x64/frame_45.png | Bin 377 -> 378 bytes .../L2_Coding_in_the_shell_128x64/frame_46.png | Bin 462 -> 463 bytes .../L2_Coding_in_the_shell_128x64/frame_47.png | Bin 460 -> 464 bytes .../L2_Coding_in_the_shell_128x64/frame_48.png | Bin 517 -> 517 bytes .../L2_Coding_in_the_shell_128x64/frame_49.png | Bin 511 -> 510 bytes .../L2_Coding_in_the_shell_128x64/frame_5.png | Bin 601 -> 600 bytes .../L2_Coding_in_the_shell_128x64/frame_50.png | Bin 489 -> 487 bytes .../L2_Coding_in_the_shell_128x64/frame_51.png | Bin 466 -> 466 bytes .../L2_Coding_in_the_shell_128x64/frame_52.png | Bin 482 -> 482 bytes .../L2_Coding_in_the_shell_128x64/frame_53.png | Bin 466 -> 466 bytes .../L2_Coding_in_the_shell_128x64/frame_54.png | Bin 511 -> 509 bytes .../L2_Coding_in_the_shell_128x64/frame_55.png | Bin 597 -> 596 bytes .../L2_Coding_in_the_shell_128x64/frame_56.png | Bin 553 -> 554 bytes .../L2_Coding_in_the_shell_128x64/frame_57.png | Bin 586 -> 586 bytes .../L2_Coding_in_the_shell_128x64/frame_58.png | Bin 512 -> 513 bytes .../L2_Coding_in_the_shell_128x64/frame_59.png | Bin 686 -> 688 bytes .../L2_Coding_in_the_shell_128x64/frame_6.png | Bin 588 -> 587 bytes .../L2_Coding_in_the_shell_128x64/frame_60.png | Bin 648 -> 648 bytes .../L2_Coding_in_the_shell_128x64/frame_61.png | Bin 563 -> 563 bytes .../L2_Coding_in_the_shell_128x64/frame_8.png | Bin 602 -> 602 bytes .../L2_Coding_in_the_shell_128x64/frame_9.png | Bin 619 -> 617 bytes .../dolphin/external/L2_Dj_128x64/frame_0.png | Bin 599 -> 596 bytes .../dolphin/external/L2_Dj_128x64/frame_1.png | Bin 614 -> 615 bytes .../dolphin/external/L2_Dj_128x64/frame_10.png | Bin 611 -> 609 bytes .../dolphin/external/L2_Dj_128x64/frame_11.png | Bin 612 -> 612 bytes .../dolphin/external/L2_Dj_128x64/frame_12.png | Bin 597 -> 595 bytes .../dolphin/external/L2_Dj_128x64/frame_13.png | Bin 608 -> 610 bytes .../dolphin/external/L2_Dj_128x64/frame_14.png | Bin 622 -> 622 bytes .../dolphin/external/L2_Dj_128x64/frame_15.png | Bin 336 -> 337 bytes .../dolphin/external/L2_Dj_128x64/frame_16.png | Bin 276 -> 278 bytes .../dolphin/external/L2_Dj_128x64/frame_17.png | Bin 327 -> 327 bytes .../dolphin/external/L2_Dj_128x64/frame_18.png | Bin 516 -> 516 bytes .../dolphin/external/L2_Dj_128x64/frame_19.png | Bin 573 -> 574 bytes .../dolphin/external/L2_Dj_128x64/frame_2.png | Bin 668 -> 668 bytes .../dolphin/external/L2_Dj_128x64/frame_20.png | Bin 683 -> 684 bytes .../dolphin/external/L2_Dj_128x64/frame_21.png | Bin 639 -> 636 bytes .../dolphin/external/L2_Dj_128x64/frame_23.png | Bin 707 -> 704 bytes .../dolphin/external/L2_Dj_128x64/frame_24.png | Bin 738 -> 739 bytes .../dolphin/external/L2_Dj_128x64/frame_25.png | Bin 617 -> 617 bytes .../dolphin/external/L2_Dj_128x64/frame_27.png | Bin 637 -> 637 bytes .../dolphin/external/L2_Dj_128x64/frame_28.png | Bin 456 -> 458 bytes .../dolphin/external/L2_Dj_128x64/frame_29.png | Bin 422 -> 422 bytes .../dolphin/external/L2_Dj_128x64/frame_3.png | Bin 724 -> 722 bytes .../dolphin/external/L2_Dj_128x64/frame_30.png | Bin 402 -> 404 bytes .../dolphin/external/L2_Dj_128x64/frame_31.png | Bin 420 -> 425 bytes .../dolphin/external/L2_Dj_128x64/frame_32.png | Bin 306 -> 307 bytes .../dolphin/external/L2_Dj_128x64/frame_33.png | Bin 298 -> 298 bytes .../dolphin/external/L2_Dj_128x64/frame_34.png | Bin 455 -> 453 bytes .../dolphin/external/L2_Dj_128x64/frame_35.png | Bin 291 -> 290 bytes .../dolphin/external/L2_Dj_128x64/frame_4.png | Bin 706 -> 705 bytes .../dolphin/external/L2_Dj_128x64/frame_5.png | Bin 623 -> 623 bytes .../dolphin/external/L2_Dj_128x64/frame_6.png | Bin 613 -> 613 bytes .../dolphin/external/L2_Dj_128x64/frame_7.png | Bin 554 -> 557 bytes .../dolphin/external/L2_Dj_128x64/frame_8.png | Bin 582 -> 582 bytes .../dolphin/external/L2_Dj_128x64/frame_9.png | Bin 593 -> 595 bytes .../external/L2_Furippa2_128x64/frame_0.png | Bin 445 -> 447 bytes .../external/L2_Furippa2_128x64/frame_1.png | Bin 464 -> 466 bytes .../external/L2_Furippa2_128x64/frame_10.png | Bin 547 -> 546 bytes .../external/L2_Furippa2_128x64/frame_11.png | Bin 722 -> 722 bytes .../external/L2_Furippa2_128x64/frame_12.png | Bin 531 -> 531 bytes .../external/L2_Furippa2_128x64/frame_13.png | Bin 594 -> 594 bytes .../external/L2_Furippa2_128x64/frame_14.png | Bin 651 -> 652 bytes .../external/L2_Furippa2_128x64/frame_16.png | Bin 575 -> 575 bytes .../external/L2_Furippa2_128x64/frame_17.png | Bin 569 -> 568 bytes .../external/L2_Furippa2_128x64/frame_18.png | Bin 516 -> 514 bytes .../external/L2_Furippa2_128x64/frame_2.png | Bin 479 -> 480 bytes .../external/L2_Furippa2_128x64/frame_3.png | Bin 466 -> 465 bytes .../external/L2_Furippa2_128x64/frame_4.png | Bin 506 -> 506 bytes .../external/L2_Furippa2_128x64/frame_5.png | Bin 511 -> 511 bytes .../external/L2_Furippa2_128x64/frame_6.png | Bin 523 -> 524 bytes .../external/L2_Furippa2_128x64/frame_7.png | Bin 445 -> 447 bytes .../external/L2_Furippa2_128x64/frame_8.png | Bin 408 -> 408 bytes .../external/L2_Furippa2_128x64/frame_9.png | Bin 425 -> 423 bytes .../external/L2_Secret_door_128x64/frame_1.png | Bin 819 -> 820 bytes .../external/L2_Secret_door_128x64/frame_11.png | Bin 774 -> 773 bytes .../external/L2_Secret_door_128x64/frame_12.png | Bin 780 -> 780 bytes .../external/L2_Secret_door_128x64/frame_13.png | Bin 786 -> 785 bytes .../external/L2_Secret_door_128x64/frame_14.png | Bin 797 -> 797 bytes .../external/L2_Secret_door_128x64/frame_2.png | Bin 833 -> 832 bytes .../external/L2_Secret_door_128x64/frame_3.png | Bin 818 -> 816 bytes .../external/L2_Secret_door_128x64/frame_38.png | Bin 831 -> 829 bytes .../external/L2_Secret_door_128x64/frame_42.png | Bin 830 -> 827 bytes .../external/L2_Secret_door_128x64/frame_46.png | Bin 815 -> 814 bytes .../external/L2_Secret_door_128x64/frame_6.png | Bin 804 -> 802 bytes .../external/L2_Secret_door_128x64/frame_9.png | Bin 819 -> 818 bytes .../external/L2_Soldering_128x64/frame_10.png | Bin 744 -> 744 bytes .../external/L2_Wake_up_128x64/frame_13.png | Bin 721 -> 719 bytes .../external/L2_Wake_up_128x64/frame_15.png | Bin 755 -> 755 bytes .../external/L2_Wake_up_128x64/frame_16.png | Bin 719 -> 717 bytes .../external/L2_Wake_up_128x64/frame_17.png | Bin 204 -> 204 bytes .../external/L2_Wake_up_128x64/frame_18.png | Bin 250 -> 251 bytes .../external/L2_Wake_up_128x64/frame_19.png | Bin 790 -> 789 bytes .../L3_Freedom_2_dolphins_128x64/frame_0.png | Bin 592 -> 593 bytes .../L3_Freedom_2_dolphins_128x64/frame_10.png | Bin 769 -> 769 bytes .../L3_Freedom_2_dolphins_128x64/frame_11.png | Bin 714 -> 713 bytes .../L3_Freedom_2_dolphins_128x64/frame_18.png | Bin 881 -> 881 bytes .../L3_Freedom_2_dolphins_128x64/frame_44.png | Bin 932 -> 931 bytes .../L3_Freedom_2_dolphins_128x64/frame_5.png | Bin 782 -> 781 bytes .../L3_Freedom_2_dolphins_128x64/frame_6.png | Bin 795 -> 788 bytes .../L3_Freedom_2_dolphins_128x64/frame_8.png | Bin 775 -> 778 bytes .../L3_Freedom_2_dolphins_128x64/frame_9.png | Bin 775 -> 774 bytes .../external/L3_Furippa3_128x64/frame_0.png | Bin 476 -> 476 bytes .../external/L3_Furippa3_128x64/frame_1.png | Bin 506 -> 504 bytes .../external/L3_Furippa3_128x64/frame_10.png | Bin 606 -> 605 bytes .../external/L3_Furippa3_128x64/frame_11.png | Bin 742 -> 742 bytes .../external/L3_Furippa3_128x64/frame_12.png | Bin 531 -> 531 bytes .../external/L3_Furippa3_128x64/frame_13.png | Bin 594 -> 594 bytes .../external/L3_Furippa3_128x64/frame_14.png | Bin 651 -> 652 bytes .../external/L3_Furippa3_128x64/frame_16.png | Bin 582 -> 581 bytes .../external/L3_Furippa3_128x64/frame_17.png | Bin 597 -> 596 bytes .../external/L3_Furippa3_128x64/frame_18.png | Bin 548 -> 548 bytes .../external/L3_Furippa3_128x64/frame_2.png | Bin 501 -> 501 bytes .../external/L3_Furippa3_128x64/frame_3.png | Bin 498 -> 497 bytes .../external/L3_Furippa3_128x64/frame_4.png | Bin 525 -> 526 bytes .../external/L3_Furippa3_128x64/frame_7.png | Bin 476 -> 476 bytes .../external/L3_Furippa3_128x64/frame_8.png | Bin 467 -> 470 bytes .../external/L3_Furippa3_128x64/frame_9.png | Bin 505 -> 507 bytes .../external/L3_Hijack_radio_128x64/frame_0.png | Bin 587 -> 587 bytes .../external/L3_Hijack_radio_128x64/frame_1.png | Bin 596 -> 596 bytes .../L3_Hijack_radio_128x64/frame_10.png | Bin 612 -> 612 bytes .../L3_Hijack_radio_128x64/frame_11.png | Bin 625 -> 627 bytes .../L3_Hijack_radio_128x64/frame_12.png | Bin 600 -> 600 bytes .../L3_Hijack_radio_128x64/frame_13.png | Bin 637 -> 635 bytes .../external/L3_Hijack_radio_128x64/frame_2.png | Bin 594 -> 594 bytes .../external/L3_Hijack_radio_128x64/frame_3.png | Bin 591 -> 591 bytes .../external/L3_Hijack_radio_128x64/frame_4.png | Bin 626 -> 625 bytes .../external/L3_Hijack_radio_128x64/frame_5.png | Bin 629 -> 629 bytes .../external/L3_Hijack_radio_128x64/frame_6.png | Bin 589 -> 589 bytes .../external/L3_Hijack_radio_128x64/frame_7.png | Bin 710 -> 707 bytes .../external/L3_Hijack_radio_128x64/frame_8.png | Bin 720 -> 719 bytes .../external/L3_Hijack_radio_128x64/frame_9.png | Bin 657 -> 658 bytes .../L3_Intruder_alert_128x64/frame_14.png | Bin 743 -> 742 bytes .../L3_Intruder_alert_128x64/frame_15.png | Bin 739 -> 739 bytes .../L3_Intruder_alert_128x64/frame_16.png | Bin 782 -> 780 bytes .../L3_Intruder_alert_128x64/frame_17.png | Bin 754 -> 753 bytes .../L3_Intruder_alert_128x64/frame_19.png | Bin 667 -> 668 bytes .../L3_Intruder_alert_128x64/frame_20.png | Bin 661 -> 663 bytes .../L3_Intruder_alert_128x64/frame_21.png | Bin 683 -> 686 bytes .../L3_Intruder_alert_128x64/frame_22.png | Bin 678 -> 676 bytes .../L3_Intruder_alert_128x64/frame_23.png | Bin 683 -> 683 bytes .../L3_Intruder_alert_128x64/frame_24.png | Bin 744 -> 748 bytes .../L3_Intruder_alert_128x64/frame_25.png | Bin 693 -> 692 bytes .../L3_Intruder_alert_128x64/frame_33.png | Bin 656 -> 654 bytes .../L3_Intruder_alert_128x64/frame_34.png | Bin 669 -> 669 bytes .../L3_Intruder_alert_128x64/frame_35.png | Bin 664 -> 664 bytes .../L3_Intruder_alert_128x64/frame_36.png | Bin 644 -> 644 bytes .../L3_Intruder_alert_128x64/frame_37.png | Bin 439 -> 443 bytes .../L3_Intruder_alert_128x64/frame_38.png | Bin 468 -> 468 bytes .../L3_Intruder_alert_128x64/frame_39.png | Bin 600 -> 600 bytes .../L3_Intruder_alert_128x64/frame_40.png | Bin 705 -> 706 bytes .../L3_Intruder_alert_128x64/frame_41.png | Bin 757 -> 757 bytes .../L3_Intruder_alert_128x64/frame_44.png | Bin 515 -> 519 bytes .../L3_Intruder_alert_128x64/frame_45.png | Bin 691 -> 691 bytes .../L3_Intruder_alert_128x64/frame_46.png | Bin 586 -> 589 bytes .../L3_Intruder_alert_128x64/frame_47.png | Bin 589 -> 592 bytes .../L3_Intruder_alert_128x64/frame_48.png | Bin 581 -> 583 bytes .../L3_Intruder_alert_128x64/frame_49.png | Bin 645 -> 644 bytes .../L3_Intruder_alert_128x64/frame_50.png | Bin 647 -> 647 bytes .../L3_Intruder_alert_128x64/frame_51.png | Bin 648 -> 648 bytes .../L3_Lab_research_128x54/frame_10.png | Bin 612 -> 612 bytes .../L3_Lab_research_128x54/frame_11.png | Bin 608 -> 608 bytes .../external/L3_Lab_research_128x54/frame_4.png | Bin 656 -> 655 bytes .../external/L3_Lab_research_128x54/frame_7.png | Bin 619 -> 619 bytes .../external/L3_Lab_research_128x54/frame_8.png | Bin 602 -> 602 bytes .../L1_AnimationError_128x64/frame_0.png | Bin 437 -> 437 bytes .../internal/L1_BadBattery_128x47/frame_0.png | Bin 405 -> 407 bytes .../dolphin/internal/L1_NoSd_128x49/frame_0.png | Bin 467 -> 468 bytes .../icons/About/CertificationMexico_98x41.png | Bin 330 -> 330 bytes .../Animations/Levelup_128x64/frame_00.png | Bin 363 -> 362 bytes .../Animations/Levelup_128x64/frame_01.png | Bin 593 -> 593 bytes .../Animations/Levelup_128x64/frame_02.png | Bin 754 -> 752 bytes .../Animations/Levelup_128x64/frame_04.png | Bin 737 -> 737 bytes .../Animations/Levelup_128x64/frame_06.png | Bin 614 -> 613 bytes .../Animations/Levelup_128x64/frame_07.png | Bin 549 -> 549 bytes .../Animations/Levelup_128x64/frame_08.png | Bin 550 -> 547 bytes .../Animations/Levelup_128x64/frame_09.png | Bin 573 -> 573 bytes .../Animations/Levelup_128x64/frame_10.png | Bin 577 -> 576 bytes assets/icons/Dolphin/DolphinSaved_92x58.png | Bin 476 -> 475 bytes assets/icons/ErasePin/Erase_pin_128x64.png | Bin 602 -> 602 bytes .../Infrared/InfraredLearnShort_128x31.png | Bin 367 -> 368 bytes assets/icons/Interface/Lockscreen.png | Bin 518 -> 521 bytes assets/icons/Passport/passport_128x64.png | Bin 332 -> 335 bytes assets/icons/RFID/RFIDDolphinReceive_97x61.png | Bin 471 -> 472 bytes assets/icons/RFID/RFIDDolphinSend_97x61.png | Bin 475 -> 475 bytes assets/icons/SubGhz/Fishing_123x52.png | Bin 534 -> 535 bytes assets/icons/SubGhz/Scanning_123x52.png | Bin 518 -> 518 bytes assets/icons/U2F/Drive_112x35.png | Bin 195 -> 195 bytes .../Kuronons_CFW_Momentum1_128x64/frame_0.png | Bin 324 -> 326 bytes .../Kuronons_CFW_Momentum1_128x64/frame_1.png | Bin 334 -> 335 bytes .../Kuronons_CFW_Momentum1_128x64/frame_10.png | Bin 400 -> 399 bytes .../Kuronons_CFW_Momentum1_128x64/frame_11.png | Bin 385 -> 386 bytes .../Kuronons_CFW_Momentum1_128x64/frame_12.png | Bin 373 -> 374 bytes .../Kuronons_CFW_Momentum1_128x64/frame_13.png | Bin 359 -> 359 bytes .../Kuronons_CFW_Momentum1_128x64/frame_14.png | Bin 347 -> 348 bytes .../Kuronons_CFW_Momentum1_128x64/frame_15.png | Bin 339 -> 340 bytes .../Kuronons_CFW_Momentum1_128x64/frame_16.png | Bin 419 -> 426 bytes .../Kuronons_CFW_Momentum1_128x64/frame_17.png | Bin 415 -> 416 bytes .../Kuronons_CFW_Momentum1_128x64/frame_18.png | Bin 407 -> 409 bytes .../Kuronons_CFW_Momentum1_128x64/frame_19.png | Bin 389 -> 390 bytes .../Kuronons_CFW_Momentum1_128x64/frame_2.png | Bin 344 -> 346 bytes .../Kuronons_CFW_Momentum1_128x64/frame_20.png | Bin 378 -> 381 bytes .../Kuronons_CFW_Momentum1_128x64/frame_21.png | Bin 395 -> 397 bytes .../Kuronons_CFW_Momentum1_128x64/frame_22.png | Bin 415 -> 416 bytes .../Kuronons_CFW_Momentum1_128x64/frame_23.png | Bin 428 -> 428 bytes .../Kuronons_CFW_Momentum1_128x64/frame_24.png | Bin 417 -> 419 bytes .../Kuronons_CFW_Momentum1_128x64/frame_25.png | Bin 402 -> 402 bytes .../Kuronons_CFW_Momentum1_128x64/frame_26.png | Bin 420 -> 421 bytes .../Kuronons_CFW_Momentum1_128x64/frame_28.png | Bin 416 -> 417 bytes .../Kuronons_CFW_Momentum1_128x64/frame_29.png | Bin 392 -> 393 bytes .../Kuronons_CFW_Momentum1_128x64/frame_3.png | Bin 355 -> 356 bytes .../Kuronons_CFW_Momentum1_128x64/frame_30.png | Bin 389 -> 389 bytes .../Kuronons_CFW_Momentum1_128x64/frame_31.png | Bin 403 -> 403 bytes .../Kuronons_CFW_Momentum1_128x64/frame_32.png | Bin 419 -> 419 bytes .../Kuronons_CFW_Momentum1_128x64/frame_33.png | Bin 415 -> 415 bytes .../Kuronons_CFW_Momentum1_128x64/frame_34.png | Bin 405 -> 405 bytes .../Kuronons_CFW_Momentum1_128x64/frame_35.png | Bin 395 -> 395 bytes .../Kuronons_CFW_Momentum1_128x64/frame_36.png | Bin 387 -> 387 bytes .../Kuronons_CFW_Momentum1_128x64/frame_37.png | Bin 378 -> 378 bytes .../Kuronons_CFW_Momentum1_128x64/frame_38.png | Bin 365 -> 366 bytes .../Kuronons_CFW_Momentum1_128x64/frame_39.png | Bin 351 -> 351 bytes .../Kuronons_CFW_Momentum1_128x64/frame_4.png | Bin 370 -> 370 bytes .../Kuronons_CFW_Momentum1_128x64/frame_41.png | Bin 330 -> 330 bytes .../Kuronons_CFW_Momentum1_128x64/frame_42.png | Bin 283 -> 284 bytes .../Kuronons_CFW_Momentum1_128x64/frame_5.png | Bin 370 -> 370 bytes .../Kuronons_CFW_Momentum1_128x64/frame_6.png | Bin 381 -> 382 bytes .../Kuronons_CFW_Momentum1_128x64/frame_7.png | Bin 393 -> 393 bytes .../Kuronons_CFW_Momentum1_128x64/frame_8.png | Bin 407 -> 406 bytes .../Kuronons_CFW_Momentum1_128x64/frame_9.png | Bin 407 -> 406 bytes .../Kuronons_CFW_Momentum2_128x64/frame_0.png | Bin 324 -> 326 bytes .../Kuronons_CFW_Momentum2_128x64/frame_1.png | Bin 334 -> 335 bytes .../Kuronons_CFW_Momentum2_128x64/frame_10.png | Bin 400 -> 399 bytes .../Kuronons_CFW_Momentum2_128x64/frame_11.png | Bin 385 -> 386 bytes .../Kuronons_CFW_Momentum2_128x64/frame_12.png | Bin 373 -> 374 bytes .../Kuronons_CFW_Momentum2_128x64/frame_13.png | Bin 359 -> 359 bytes .../Kuronons_CFW_Momentum2_128x64/frame_14.png | Bin 347 -> 348 bytes .../Kuronons_CFW_Momentum2_128x64/frame_15.png | Bin 339 -> 340 bytes .../Kuronons_CFW_Momentum2_128x64/frame_16.png | Bin 418 -> 419 bytes .../Kuronons_CFW_Momentum2_128x64/frame_17.png | Bin 430 -> 431 bytes .../Kuronons_CFW_Momentum2_128x64/frame_18.png | Bin 432 -> 433 bytes .../Kuronons_CFW_Momentum2_128x64/frame_19.png | Bin 402 -> 406 bytes .../Kuronons_CFW_Momentum2_128x64/frame_2.png | Bin 344 -> 346 bytes .../Kuronons_CFW_Momentum2_128x64/frame_20.png | Bin 420 -> 421 bytes .../Kuronons_CFW_Momentum2_128x64/frame_21.png | Bin 418 -> 418 bytes .../Kuronons_CFW_Momentum2_128x64/frame_22.png | Bin 436 -> 438 bytes .../Kuronons_CFW_Momentum2_128x64/frame_23.png | Bin 414 -> 413 bytes .../Kuronons_CFW_Momentum2_128x64/frame_24.png | Bin 421 -> 422 bytes .../Kuronons_CFW_Momentum2_128x64/frame_25.png | Bin 426 -> 428 bytes .../Kuronons_CFW_Momentum2_128x64/frame_26.png | Bin 438 -> 440 bytes .../Kuronons_CFW_Momentum2_128x64/frame_27.png | Bin 411 -> 413 bytes .../Kuronons_CFW_Momentum2_128x64/frame_28.png | Bin 421 -> 423 bytes .../Kuronons_CFW_Momentum2_128x64/frame_29.png | Bin 427 -> 427 bytes .../Kuronons_CFW_Momentum2_128x64/frame_3.png | Bin 355 -> 356 bytes .../Kuronons_CFW_Momentum2_128x64/frame_30.png | Bin 439 -> 439 bytes .../Kuronons_CFW_Momentum2_128x64/frame_32.png | Bin 243 -> 242 bytes .../Kuronons_CFW_Momentum2_128x64/frame_33.png | Bin 315 -> 312 bytes .../Kuronons_CFW_Momentum2_128x64/frame_34.png | Bin 326 -> 325 bytes .../Kuronons_CFW_Momentum2_128x64/frame_4.png | Bin 370 -> 370 bytes .../Kuronons_CFW_Momentum2_128x64/frame_5.png | Bin 370 -> 370 bytes .../Kuronons_CFW_Momentum2_128x64/frame_6.png | Bin 381 -> 382 bytes .../Kuronons_CFW_Momentum2_128x64/frame_7.png | Bin 393 -> 393 bytes .../Kuronons_CFW_Momentum2_128x64/frame_8.png | Bin 407 -> 406 bytes .../Kuronons_CFW_Momentum2_128x64/frame_9.png | Bin 407 -> 406 bytes .../Kuronons_CFW_Momentum3_128x64/frame_0.png | Bin 324 -> 326 bytes .../Kuronons_CFW_Momentum3_128x64/frame_1.png | Bin 334 -> 335 bytes .../Kuronons_CFW_Momentum3_128x64/frame_10.png | Bin 400 -> 399 bytes .../Kuronons_CFW_Momentum3_128x64/frame_11.png | Bin 385 -> 386 bytes .../Kuronons_CFW_Momentum3_128x64/frame_12.png | Bin 373 -> 374 bytes .../Kuronons_CFW_Momentum3_128x64/frame_13.png | Bin 359 -> 359 bytes .../Kuronons_CFW_Momentum3_128x64/frame_14.png | Bin 347 -> 348 bytes .../Kuronons_CFW_Momentum3_128x64/frame_15.png | Bin 339 -> 340 bytes .../Kuronons_CFW_Momentum3_128x64/frame_16.png | Bin 421 -> 421 bytes .../Kuronons_CFW_Momentum3_128x64/frame_17.png | Bin 427 -> 427 bytes .../Kuronons_CFW_Momentum3_128x64/frame_18.png | Bin 437 -> 435 bytes .../Kuronons_CFW_Momentum3_128x64/frame_19.png | Bin 439 -> 439 bytes .../Kuronons_CFW_Momentum3_128x64/frame_2.png | Bin 344 -> 346 bytes .../Kuronons_CFW_Momentum3_128x64/frame_20.png | Bin 432 -> 432 bytes .../Kuronons_CFW_Momentum3_128x64/frame_21.png | Bin 416 -> 415 bytes .../Kuronons_CFW_Momentum3_128x64/frame_22.png | Bin 396 -> 395 bytes .../Kuronons_CFW_Momentum3_128x64/frame_23.png | Bin 364 -> 369 bytes .../Kuronons_CFW_Momentum3_128x64/frame_24.png | Bin 374 -> 378 bytes .../Kuronons_CFW_Momentum3_128x64/frame_25.png | Bin 385 -> 385 bytes .../Kuronons_CFW_Momentum3_128x64/frame_26.png | Bin 421 -> 419 bytes .../Kuronons_CFW_Momentum3_128x64/frame_27.png | Bin 436 -> 429 bytes .../Kuronons_CFW_Momentum3_128x64/frame_28.png | Bin 434 -> 433 bytes .../Kuronons_CFW_Momentum3_128x64/frame_29.png | Bin 425 -> 425 bytes .../Kuronons_CFW_Momentum3_128x64/frame_3.png | Bin 355 -> 356 bytes .../Kuronons_CFW_Momentum3_128x64/frame_30.png | Bin 464 -> 465 bytes .../Kuronons_CFW_Momentum3_128x64/frame_31.png | Bin 498 -> 498 bytes .../Kuronons_CFW_Momentum3_128x64/frame_32.png | Bin 536 -> 534 bytes .../Kuronons_CFW_Momentum3_128x64/frame_36.png | Bin 525 -> 528 bytes .../Kuronons_CFW_Momentum3_128x64/frame_37.png | Bin 530 -> 530 bytes .../Kuronons_CFW_Momentum3_128x64/frame_38.png | Bin 497 -> 496 bytes .../Kuronons_CFW_Momentum3_128x64/frame_39.png | Bin 467 -> 467 bytes .../Kuronons_CFW_Momentum3_128x64/frame_4.png | Bin 370 -> 370 bytes .../Kuronons_CFW_Momentum3_128x64/frame_5.png | Bin 370 -> 370 bytes .../Kuronons_CFW_Momentum3_128x64/frame_6.png | Bin 381 -> 382 bytes .../Kuronons_CFW_Momentum3_128x64/frame_7.png | Bin 393 -> 393 bytes .../Kuronons_CFW_Momentum3_128x64/frame_8.png | Bin 407 -> 406 bytes .../Kuronons_CFW_Momentum3_128x64/frame_9.png | Bin 407 -> 406 bytes .../Animations/Levelup_128x64/frame_00.png | Bin 426 -> 428 bytes .../Animations/Levelup_128x64/frame_01.png | Bin 484 -> 483 bytes .../Animations/Levelup_128x64/frame_02.png | Bin 539 -> 538 bytes .../Animations/Levelup_128x64/frame_03.png | Bin 548 -> 549 bytes .../Animations/Levelup_128x64/frame_04.png | Bin 521 -> 522 bytes .../Animations/Levelup_128x64/frame_05.png | Bin 477 -> 478 bytes .../Animations/Levelup_128x64/frame_06.png | Bin 456 -> 458 bytes .../Animations/Levelup_128x64/frame_07.png | Bin 567 -> 566 bytes .../Animations/Levelup_128x64/frame_08.png | Bin 556 -> 554 bytes .../Animations/Levelup_128x64/frame_09.png | Bin 659 -> 659 bytes .../Animations/Levelup_128x64/frame_10.png | Bin 674 -> 674 bytes .../Icons/Dolphin/DolphinMafia_119x62.png | Bin 590 -> 589 bytes .../Icons/Dolphin/DolphinSaved_92x58.png | Bin 385 -> 382 bytes .../Infrared/InfraredLearnShort_128x31.png | Bin 373 -> 374 bytes .../Momentum/Icons/SubGhz/Fishing_123x52.png | Bin 457 -> 457 bytes .../Momentum/Icons/SubGhz/Scanning_123x52.png | Bin 462 -> 461 bytes .../packs/WatchDogs/Anims/DEDSEC_AD/frame_0.png | Bin 596 -> 595 bytes .../WatchDogs/Anims/DEDSEC_AD/frame_10.png | Bin 467 -> 464 bytes .../packs/WatchDogs/Anims/DEDSEC_AD/frame_5.png | Bin 560 -> 561 bytes .../packs/WatchDogs/Anims/DEDSEC_AD/frame_7.png | Bin 620 -> 621 bytes .../packs/WatchDogs/Anims/DEDSEC_AD/frame_8.png | Bin 560 -> 561 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_0.png | Bin 598 -> 597 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_1.png | Bin 559 -> 555 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_2.png | Bin 578 -> 578 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_22.png | Bin 742 -> 743 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_23.png | Bin 728 -> 728 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_24.png | Bin 391 -> 391 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_25.png | Bin 411 -> 414 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_26.png | Bin 492 -> 493 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_27.png | Bin 681 -> 679 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_28.png | Bin 395 -> 394 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_29.png | Bin 408 -> 412 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_3.png | Bin 741 -> 742 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_30.png | Bin 429 -> 430 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_31.png | Bin 441 -> 442 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_32.png | Bin 494 -> 491 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_33.png | Bin 454 -> 455 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_34.png | Bin 396 -> 398 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_35.png | Bin 529 -> 533 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_36.png | Bin 615 -> 616 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_37.png | Bin 589 -> 588 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_38.png | Bin 400 -> 399 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_39.png | Bin 205 -> 205 bytes .../WatchDogs/Anims/DEDSEC_ANIM/frame_5.png | Bin 762 -> 762 bytes .../WatchDogs/Anims/DEDSEC_ASCII/frame_1.png | Bin 217 -> 217 bytes .../WatchDogs/Anims/DEDSEC_ASCII/frame_2.png | Bin 250 -> 251 bytes .../WatchDogs/Anims/DEDSEC_ASCII/frame_3.png | Bin 362 -> 363 bytes .../WatchDogs/Anims/DEDSEC_ASCII/frame_4.png | Bin 461 -> 462 bytes .../WatchDogs/Anims/DEDSEC_ASCII/frame_5.png | Bin 539 -> 539 bytes .../WatchDogs/Anims/DEDSEC_ASCII/frame_6.png | Bin 528 -> 530 bytes .../WatchDogs/Anims/DEDSEC_ASCII/frame_8.png | Bin 350 -> 350 bytes .../WatchDogs/Anims/DEDSEC_ASCII/frame_9.png | Bin 295 -> 297 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_0.png | Bin 410 -> 409 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_1.png | Bin 400 -> 402 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_10.png | Bin 617 -> 616 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_11.png | Bin 619 -> 620 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_12.png | Bin 635 -> 632 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_15.png | Bin 692 -> 692 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_18.png | Bin 685 -> 685 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_2.png | Bin 399 -> 397 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_20.png | Bin 682 -> 683 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_28.png | Bin 647 -> 645 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_29.png | Bin 343 -> 344 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_3.png | Bin 397 -> 394 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_30.png | Bin 246 -> 247 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_31.png | Bin 385 -> 385 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_4.png | Bin 398 -> 400 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_5.png | Bin 424 -> 424 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_6.png | Bin 495 -> 494 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_7.png | Bin 494 -> 492 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_8.png | Bin 548 -> 548 bytes .../WatchDogs/Anims/DEDSEC_LOGO/frame_9.png | Bin 616 -> 617 bytes .../WatchDogs/Anims/DEDSEC_OLD/frame_0.png | Bin 513 -> 511 bytes .../WatchDogs/Anims/DEDSEC_OLD/frame_1.png | Bin 623 -> 621 bytes .../WatchDogs/Anims/DEDSEC_OLD/frame_10.png | Bin 835 -> 835 bytes .../WatchDogs/Anims/DEDSEC_OLD/frame_15.png | Bin 755 -> 753 bytes .../WatchDogs/Anims/DEDSEC_OLD/frame_16.png | Bin 808 -> 808 bytes .../WatchDogs/Anims/DEDSEC_OLD/frame_18.png | Bin 755 -> 753 bytes .../WatchDogs/Anims/DEDSEC_OLD/frame_2.png | Bin 623 -> 621 bytes .../WatchDogs/Anims/DEDSEC_OLD/frame_20.png | Bin 755 -> 753 bytes .../WatchDogs/Anims/DEDSEC_OLD/frame_3.png | Bin 608 -> 608 bytes .../WatchDogs/Anims/DEDSEC_OLD/frame_4.png | Bin 608 -> 608 bytes .../WatchDogs/Anims/DEDSEC_OLD/frame_5.png | Bin 648 -> 647 bytes .../WatchDogs/Anims/DEDSEC_OLD/frame_6.png | Bin 667 -> 665 bytes .../WatchDogs/Anims/DEDSEC_OLD/frame_7.png | Bin 715 -> 715 bytes .../WatchDogs/Anims/DEDSEC_OLD/frame_8.png | Bin 607 -> 605 bytes .../WatchDogs/Anims/DEDSEC_OLD/frame_9.png | Bin 697 -> 698 bytes .../WatchDogs/Anims/DEDSEC_TALK/frame_0.png | Bin 577 -> 575 bytes .../WatchDogs/Anims/DEDSEC_TALK/frame_10.png | Bin 626 -> 624 bytes .../WatchDogs/Anims/DEDSEC_TALK/frame_11.png | Bin 621 -> 621 bytes .../WatchDogs/Anims/DEDSEC_TALK/frame_12.png | Bin 630 -> 630 bytes .../WatchDogs/Anims/DEDSEC_TALK/frame_13.png | Bin 625 -> 625 bytes .../WatchDogs/Anims/DEDSEC_TALK/frame_14.png | Bin 616 -> 614 bytes .../WatchDogs/Anims/DEDSEC_TALK/frame_15.png | Bin 625 -> 621 bytes .../WatchDogs/Anims/DEDSEC_TALK/frame_16.png | Bin 596 -> 592 bytes .../WatchDogs/Anims/DEDSEC_TALK/frame_17.png | Bin 619 -> 617 bytes .../WatchDogs/Anims/DEDSEC_TALK/frame_2.png | Bin 795 -> 793 bytes .../WatchDogs/Anims/DEDSEC_TALK/frame_3.png | Bin 701 -> 700 bytes .../WatchDogs/Anims/DEDSEC_TALK/frame_4.png | Bin 694 -> 695 bytes .../WatchDogs/Anims/DEDSEC_TALK/frame_5.png | Bin 684 -> 682 bytes .../WatchDogs/Anims/DEDSEC_TALK/frame_6.png | Bin 685 -> 687 bytes .../WatchDogs/Anims/DEDSEC_TALK/frame_7.png | Bin 709 -> 708 bytes .../WatchDogs/Anims/DEDSEC_TALK/frame_8.png | Bin 613 -> 612 bytes .../WatchDogs/Anims/DEDSEC_TALK/frame_9.png | Bin 615 -> 611 bytes .../WatchDogs/Anims/DEDSEC_WAVE/frame_0.png | Bin 278 -> 279 bytes .../WatchDogs/Anims/DEDSEC_WAVE/frame_1.png | Bin 546 -> 553 bytes .../WatchDogs/Anims/DEDSEC_WAVE/frame_10.png | Bin 577 -> 578 bytes .../WatchDogs/Anims/DEDSEC_WAVE/frame_13.png | Bin 626 -> 623 bytes .../WatchDogs/Anims/DEDSEC_WAVE/frame_14.png | Bin 597 -> 596 bytes .../WatchDogs/Anims/DEDSEC_WAVE/frame_15.png | Bin 542 -> 542 bytes .../WatchDogs/Anims/DEDSEC_WAVE/frame_2.png | Bin 581 -> 587 bytes .../WatchDogs/Anims/DEDSEC_WAVE/frame_5.png | Bin 611 -> 610 bytes .../WatchDogs/Anims/DEDSEC_WAVE/frame_6.png | Bin 588 -> 589 bytes .../WatchDogs/Anims/DEDSEC_WAVE/frame_7.png | Bin 543 -> 545 bytes .../WatchDogs/Anims/DEDSEC_WAVE/frame_8.png | Bin 511 -> 511 bytes .../WatchDogs/Anims/DEDSEC_WAVE/frame_9.png | Bin 534 -> 535 bytes .../packs/WatchDogs/Anims/GUNS_CAR/frame_0.png | Bin 521 -> 521 bytes .../packs/WatchDogs/Anims/GUNS_CAR/frame_1.png | Bin 814 -> 814 bytes .../packs/WatchDogs/Anims/GUNS_CAR/frame_10.png | Bin 635 -> 635 bytes .../packs/WatchDogs/Anims/GUNS_CAR/frame_11.png | Bin 643 -> 641 bytes .../packs/WatchDogs/Anims/GUNS_CAR/frame_12.png | Bin 717 -> 717 bytes .../packs/WatchDogs/Anims/GUNS_CAR/frame_13.png | Bin 743 -> 742 bytes .../packs/WatchDogs/Anims/GUNS_CAR/frame_14.png | Bin 787 -> 785 bytes .../packs/WatchDogs/Anims/GUNS_CAR/frame_19.png | Bin 789 -> 788 bytes .../packs/WatchDogs/Anims/GUNS_CAR/frame_2.png | Bin 845 -> 843 bytes .../packs/WatchDogs/Anims/GUNS_CAR/frame_20.png | Bin 846 -> 845 bytes .../packs/WatchDogs/Anims/GUNS_CAR/frame_21.png | Bin 842 -> 840 bytes .../packs/WatchDogs/Anims/GUNS_CAR/frame_6.png | Bin 642 -> 641 bytes .../packs/WatchDogs/Anims/GUNS_CAR/frame_7.png | Bin 622 -> 621 bytes .../packs/WatchDogs/Anims/GUNS_CAR/frame_8.png | Bin 651 -> 651 bytes .../packs/WatchDogs/Anims/GUNS_CAR/frame_9.png | Bin 631 -> 630 bytes .../packs/WatchDogs/Anims/JOIN_US/frame_0.png | Bin 178 -> 179 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_10.png | Bin 118 -> 118 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_11.png | Bin 236 -> 238 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_12.png | Bin 307 -> 307 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_13.png | Bin 356 -> 355 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_14.png | Bin 392 -> 392 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_15.png | Bin 455 -> 454 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_16.png | Bin 473 -> 473 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_17.png | Bin 482 -> 482 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_18.png | Bin 472 -> 472 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_19.png | Bin 477 -> 478 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_2.png | Bin 114 -> 113 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_20.png | Bin 475 -> 475 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_21.png | Bin 480 -> 480 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_22.png | Bin 489 -> 489 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_23.png | Bin 497 -> 496 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_25.png | Bin 239 -> 238 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_28.png | Bin 201 -> 197 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_3.png | Bin 339 -> 336 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_6.png | Bin 277 -> 283 bytes .../packs/WatchDogs/Anims/LOGO_WD2/frame_7.png | Bin 676 -> 675 bytes .../WatchDogs/Anims/REAPER_ALT/frame_0.png | Bin 726 -> 726 bytes .../WatchDogs/Anims/REAPER_ALT/frame_1.png | Bin 765 -> 765 bytes .../WatchDogs/Anims/REAPER_ALT/frame_29.png | Bin 780 -> 778 bytes .../WatchDogs/Anims/REAPER_ALT/frame_3.png | Bin 738 -> 738 bytes .../WatchDogs/Anims/REAPER_ALT/frame_30.png | Bin 688 -> 689 bytes .../WatchDogs/Anims/REAPER_ALT/frame_31.png | Bin 698 -> 700 bytes assets/packs/WatchDogs/Anims/SKULL/frame_0.png | Bin 444 -> 444 bytes assets/packs/WatchDogs/Anims/SKULL/frame_1.png | Bin 861 -> 860 bytes assets/packs/WatchDogs/Anims/SKULL/frame_17.png | Bin 788 -> 788 bytes assets/packs/WatchDogs/Anims/SKULL/frame_18.png | Bin 574 -> 572 bytes assets/packs/WatchDogs/Anims/SKULL/frame_19.png | Bin 585 -> 584 bytes assets/packs/WatchDogs/Anims/SKULL/frame_20.png | Bin 594 -> 595 bytes assets/packs/WatchDogs/Anims/SKULL/frame_21.png | Bin 594 -> 594 bytes assets/packs/WatchDogs/Anims/SKULL/frame_22.png | Bin 608 -> 608 bytes assets/packs/WatchDogs/Anims/SKULL/frame_23.png | Bin 594 -> 591 bytes assets/packs/WatchDogs/Anims/SKULL/frame_24.png | Bin 529 -> 528 bytes assets/packs/WatchDogs/Anims/SKULL/frame_25.png | Bin 672 -> 674 bytes assets/packs/WatchDogs/Anims/SKULL/frame_3.png | Bin 798 -> 799 bytes assets/packs/WatchDogs/Anims/SKULL/frame_4.png | Bin 587 -> 589 bytes assets/packs/WatchDogs/Anims/SKULL/frame_5.png | Bin 602 -> 600 bytes assets/packs/WatchDogs/Anims/SKULL/frame_6.png | Bin 737 -> 735 bytes assets/packs/WatchDogs/Anims/SKULL/frame_7.png | Bin 738 -> 738 bytes assets/packs/WatchDogs/Anims/SKULL/frame_8.png | Bin 774 -> 773 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_0.png | Bin 310 -> 312 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_1.png | Bin 474 -> 474 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_10.png | Bin 630 -> 631 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_11.png | Bin 646 -> 644 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_12.png | Bin 673 -> 673 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_13.png | Bin 655 -> 658 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_14.png | Bin 643 -> 645 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_15.png | Bin 632 -> 630 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_16.png | Bin 651 -> 649 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_17.png | Bin 656 -> 657 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_18.png | Bin 414 -> 413 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_2.png | Bin 700 -> 699 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_3.png | Bin 666 -> 668 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_4.png | Bin 652 -> 651 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_5.png | Bin 615 -> 613 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_6.png | Bin 610 -> 610 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_7.png | Bin 599 -> 596 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_8.png | Bin 613 -> 615 bytes .../WatchDogs/Anims/SKULL_SPIN/frame_9.png | Bin 622 -> 621 bytes assets/packs/WatchDogs/Anims/SPIRAL/frame_0.png | Bin 90 -> 90 bytes .../packs/WatchDogs/Anims/SPIRAL/frame_11.png | Bin 587 -> 586 bytes .../packs/WatchDogs/Anims/SPIRAL/frame_12.png | Bin 584 -> 580 bytes .../packs/WatchDogs/Anims/SPIRAL/frame_13.png | Bin 593 -> 593 bytes .../packs/WatchDogs/Anims/SPIRAL/frame_14.png | Bin 570 -> 569 bytes .../packs/WatchDogs/Anims/SPIRAL/frame_15.png | Bin 591 -> 591 bytes .../packs/WatchDogs/Anims/SPIRAL/frame_17.png | Bin 545 -> 547 bytes .../packs/WatchDogs/Anims/SPIRAL/frame_18.png | Bin 488 -> 487 bytes .../packs/WatchDogs/Anims/SPIRAL/frame_19.png | Bin 438 -> 437 bytes assets/packs/WatchDogs/Anims/SPIRAL/frame_2.png | Bin 238 -> 237 bytes .../packs/WatchDogs/Anims/SPIRAL/frame_20.png | Bin 364 -> 363 bytes .../packs/WatchDogs/Anims/SPIRAL/frame_21.png | Bin 283 -> 284 bytes .../packs/WatchDogs/Anims/SPIRAL/frame_22.png | Bin 207 -> 206 bytes assets/packs/WatchDogs/Anims/SPIRAL/frame_3.png | Bin 346 -> 343 bytes assets/packs/WatchDogs/Anims/SPIRAL/frame_4.png | Bin 422 -> 424 bytes assets/packs/WatchDogs/Anims/SPIRAL/frame_5.png | Bin 498 -> 497 bytes assets/packs/WatchDogs/Anims/SPIRAL/frame_6.png | Bin 540 -> 543 bytes assets/packs/WatchDogs/Anims/SPIRAL/frame_7.png | Bin 550 -> 549 bytes .../Icons/Passport/passport_128x64.png | Bin 476 -> 477 bytes .../Icons/RFID/RFIDDolphinReceive_97x61.png | Bin 632 -> 633 bytes .../Icons/RFID/RFIDDolphinSend_97x61.png | Bin 632 -> 633 bytes .../WatchDogs/Icons/SubGhz/Fishing_123x52.png | Bin 549 -> 549 bytes .../WatchDogs/Icons/SubGhz/Scanning_123x52.png | Bin 549 -> 549 bytes assets/slideshow/first_start/frame_00.png | Bin 563 -> 567 bytes assets/slideshow/first_start/frame_01.png | Bin 498 -> 499 bytes assets/slideshow/first_start/frame_02.png | Bin 528 -> 530 bytes assets/slideshow/first_start/frame_03.png | Bin 534 -> 536 bytes assets/slideshow/first_start/frame_04.png | Bin 500 -> 501 bytes assets/slideshow/first_start/frame_05.png | Bin 536 -> 536 bytes assets/slideshow/firstboot/frame_00.png | Bin 509 -> 509 bytes assets/slideshow/firstboot/frame_01.png | Bin 486 -> 488 bytes assets/slideshow/firstboot/frame_02.png | Bin 353 -> 355 bytes assets/slideshow/firstboot/frame_03.png | Bin 484 -> 484 bytes assets/slideshow/firstboot/frame_04.png | Bin 490 -> 492 bytes assets/slideshow/firstboot/frame_06.png | Bin 605 -> 605 bytes assets/slideshow/update_default/frame_00.png | Bin 490 -> 491 bytes 839 files changed, 0 insertions(+), 0 deletions(-) diff --git a/assets/dolphin/blocking/L0_NewMail_128x51/frame_1.png b/assets/dolphin/blocking/L0_NewMail_128x51/frame_1.png index 13be201658162487dc0bd21556d73b0764de9905..5730f18898ed6a385149b8167ac62b230aa6a37f 100644 GIT binary patch delta 355 zcmV-p0i6Dz1E2$tMt{L~u&~Sof>j{e+37p@0FDTD%2sx|ixzfvOi`17U(TWKZq-^&;?rH*zQ00 zFb3G(1u4(4k3Nn?Ye!7CZ6@C@m!E z+h1Tys2~+ALIDZDlCo33r3|n~S!pBz$Zp|#`~jFCzJDPgvKRmW002ovPDHLkV1g7x BqZ9xD delta 355 zcmV-p0i6Dz1E2$tMt>pikis$(2vz~LOBdh42XI8NQ?{}*yO<)7BH0j;HG5}HikVHk zjg|N}1BW>?-#NpW=#TTig`aPqPkTac!e1;`0W2L=%l??@J78@|`axWPg)YznXZHBX z$05MxHb{Abee$7n{bu*6kgg(3293%f9Rm1TFv$Vjx^jO@zJFtye)%?h<=CCD42ASq zk{%oYDT2eZHTtS%83Tk7jP`IGMgVaPd9?#AGzNb08aANClyS&7eEqDKzf9Q-I`{j6 zEI`+5%*?j#J5iZjNUw6sOVM!M^~=~m9#WVzpJW}zt6JOs0^(3Zq_mBe<#V? zHLy7=kQLaJB}j{N=}(g6XEMM<`bm=fN&+eAM{pvwdE03%FuEzR{PP3-0Xq%bv+L>V QB>(^b07*qoM6N<$f~T=(w*UYD delta 213 zcmV;`04o2z1H1!}BmskwB|sm9fyTsJp4{(z|8s6`iMyxzKjEUiC*)x5N|GGC%*~O6 zX#vEM?k<0NOIpLiT9(q@6C9NB{Ekp^@f_ZjQrZU3Y#cA!rIS9h43j=tB*|GtvldXr zoCBD4rYffFtqPi}IA3^0*?k|e*9KuY=%Tx}uVbXp6H{+3w&`GNibI}O{jY@?V| P00000NkvXXu0mjfWyfYe diff --git a/assets/dolphin/blocking/L0_NewMail_128x51/frame_3.png b/assets/dolphin/blocking/L0_NewMail_128x51/frame_3.png index 8a9de358bf3a67575c16e4e67e04ae419fc43dfe..cdcdda356e6700059145d2365b38818b92e3286c 100644 GIT binary patch delta 408 zcmV;J0cZZp1Iq)DJ%42OCd>tpxBwD|AVqE@L_oG8A><}Io9_xoWXN-YmBzvnBYS#2 zL667w4?6hjs`|fvAxZ5U%`gEiw;bUB5AQfZlImBd5(iZ8P9ID#7FYX=9*M*Su}2YL zclUM;QUg#)+J1lhr2tiya<1bzApKZh5EK!RHd226-n5k*WPfI18v$-^aWF|k_Y?SZ zRuZo#FGqsqLp{10DIsijS`c zJO}*}pxD39iW?|%zrEw22qBMH1{^eB#llNW;}}44QUSD{Be8fUtcNTl0xe1#N%|v= z04tR4CFxlbfR5RglYdO90N5Xw7;pn9hKVq7iT{{w1rb*0Jf^Dv0000$94 delta 408 zcmV;J0cZZp1Iq)DJ%7Y|6XpU)TmXqfkRmq{A|P9l5OR~9&3A<(GGt$1rLnNYXgoci zpvU9!4?6hjs`|fvAxXP8nqUHU+;V~gJiOx!Nvd9*OB_&jIDas~P+WBvJraovqC*kj zaQAitQVp<@wEzD2O956{%3Q~3K>D${ASfarZKeGDz1gkgAb&Fp`v`Dzi-Sq(o1eg^ zSxLMey_^V^BN0Fb#WXFzgFs~uo2TE)uMRap53~_*R87KC4bHGOvjA|+Ud$x*0OcCT zAp-W|3k=5(;7|eVBV0ki;o8hXECKiiO8+FOT20c^QPR+?rzi&;hG|m{W@d|d47QdI zbArms7T~j)MSllYIy7VKs!-Ci(tVP8N!mKF!0L-00Ry0^X>gz&{j`x52O9E?6(3*s zcn|wU&fOFiazsk0SIqro4(JSM?DWF z8b`}R$H}6J{t8yr|G-Rf{yc$HG+s@*ptA(f;j|g5s=D3Q)zciN9nODbUlwqeYY*-3 zF>$6@#2TUw0)+(`76cj20WeAJaq=j_28|#r{klL_4K{%3Pbz)D?N@rv)rRaFz|klt2I9XGQ@^n?t7*DUtH##jWfkq5PdsT=|FW*4-#9fIEi zAF?e7puH!;zz@>B!hkc>!2*?F^r;MDAT3>S06XOLHW?t5nyO~M^Z#c*egF(putiMJ RzUBY`002ovPDHLkV1ih5l5V$T1N-ziJ8`=covub61h1`=o7V2-(`XVvnP=Y40O93i-RGIpsM~|F z#=+viVKQ%`-;7oDKQL9E-;W>_jhB-GbQSNDl!vgMn<*xlX zBF;2RTLaWVplm^g1wjUL08CQ5A3un&K_duzUR@xo8tcRSbSgi9%YzDW64Z;PF|Z}< z=fggvs;Utk;w7JvtEwi_A-%3NbzDuC))O)Wp0n5k8)Ff`Mjq7mCUOMGn+0fZI;7YF zZ?Y{2pxrCNzzHK(|_J;!}rHMe+C*?4?a4} z;9xCRgaA!K$j6=xUFdedjz@)pjR@cSvhl8mfIyOzNm5cMfLoZ41!&X(cLSf5C+1mU z^-+J<>TUNr%0b%#nTcCLp3d*n7uam!|KIdqY^U}^vj8ow@bP}EzbrKm!Ii7edQ?Eo zOTOvK^6EQjg?>y)-YoX;F~7F*x6Fs62wQy00000NkvXXu0mjf;#a@z delta 387 zcmV-}0et?T1D*qrB!6W|L_t(|oQ;ybP8&fKg})iE*cGx3qCi3r$%?3`DAHpdfdXne znxvsg1JZ_uA};|F&p?_8wuxvGeqI1A6$pWF0ty52`cQaw?OiCi24x}IYyDcTQkIx|@`viEnhwck_U+6V|GNtq<2cCgWZ7>os|R{?K>fRQ<~l3V?- zwP>|De;s=;W`WEk&CsWF_iGKC4gLSuxle4*?lf}HE!1^GXt(zz2Bn*Dqj4i zBd=Fq=#)s0bbMpDM}WEg=-;vcRxMj+OCCH*YFoumxwi+PWwYkZ*Vgcqp5o`i+|LAy z>!rCO>!t)a+F>qnol2%1R{`Tu1w`XzPzze6JT5gjsgnJoxAI7fpY^xv3LH0)_#U zaMLcD9T*Ye<*(@Oo}5DmR$^kJAAa>dO7w~_?~ zQ-cu51S6+a5RusrC@CnV0wU5)4gsqRA~Kvg91;1?e*6N=)vk(R4FXUA0000;_gW;`WS3Mq%`oSlJLhocB0dx)fmNcw37Mm#VYA8- z47+EiTfpPMSG;d1J+JftDv%KTydtwy2``)KGaqW8nhkV|fca7$?- zXDSc^sbDKUD#0YZA5bY!N(D?vHaP^W&WT8Ws&GVPo&ER+%+;=n$B@IL00000NkvXX Hu0mjf`frfs diff --git a/assets/dolphin/blocking/L0_Url_128x51/frame_0.png b/assets/dolphin/blocking/L0_Url_128x51/frame_0.png index aad40a5aefe2fa9db0f74c25c3b89243666aed8f..d9490aabd7000359756902ce524d72423d3b0dea 100644 GIT binary patch delta 363 zcmV-x0hIoS1BL^TB!5jwL_t(|oSl-tN&`UCj@N1#UZ%e=!YN%6sQ(W2rAjoP4?8KkLR$X2!X|x_yRh@neRCVA4rcg8kVEnR|N;qvej^MK>AYP(c`C|^w zgl@K0ItQvTIb`;*j5tzFB*#4lNj-yBY2+7EA{aMp0rV(EfHa<$%n%@JmLT&8;O7}5 zL71(#C=tyDDW8~!8o?Zu>)%%Czy;vkn1qb)OHRNUCD4Bk<_q&|qPzvh(nnreXj9 delta 364 zcmV-y0h9iQ1BU~UB!5mxL_t(|oSl-fN&`UJ&PiR8H3pr~iGSvvX2j0h$TTLA5*2$06}mKg$M?Gj`j0sOpT zBuKH|qDAx}qRS0|l0000< KMNUMnLSTXd7N*(& diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_0.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_0.png index 73ed8998caba041ebb6e4f00224a1c8b44a1784f..b969695595ff03ddf748904a18b96637590cae77 100644 GIT binary patch delta 348 zcmV-i0i*ue1KR_TB!8kwL_t(|oZXZ^ZWBQi#(y)}U>Ar4L=y?wE2>nqRA{#36o?~O zqM?Y$N;JMjH~@F>m;+$`R5Zz&iXy^JT(CB?`%&z!FpfPa%h1L`?RtkAnE0^#d( zlShj3>@vRc@mbtU8TPs@;OU+Z8!L`mXB}8)uYMe4JD}v-ETlVNNhqTn1@Ggso|0)s zHBA5{G5lM*E3Ms9p&g-FdD!q^>*!#>YgPbxYjG*hJ?b0}47iZi(lvmyfcXHww`E<= zn+%--E}RD}V-?7`?eb?hT^>r|NLskM^-+U8g=PkmHUTaOQ~WJ(m~XZNlWYM%F7ELp uO=eQ9i@VhxjsO*Rin%12Hiy~&F8%=pCDu8iobUwz0000iunR;2qKSm;6;&!)Dl}Vi3d9jC z(NIKWB^uu%9DqA`%mFYz6-~0HqKL2)7p%?fz7)Ibczgt=8ohev``+(IV?=x`|Gl7O zPq;nFW8vz1xOlRpc!ry+dO?*Jn}rmhn(KtpIJeS0wgPJarGP|rzXLhq_b2w$I@ zJR-`o%lOI1XK^iM*sHdHr+YqZOdPk)I$@o?`f-r$2qoWUA>9#{gffaz@IFrKDVb(e z)1+-7!@sq=(%LN*+7_CXhYb(5jt&OAW(AP97MJqeqt5ZbfD36YT?04^m=ExKo7VNb z$pZ?+ASZ2>?nZg`R= sGpW|a-D(d<{907*qoM6N<$g7l-Dz5oCK diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_1.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_1.png index 7955637f61613228b45f83706b559e5b37208912..c5d566e72e5018b1075e1b044856cc20685e4725 100644 GIT binary patch delta 30 kcmcc1e3yB`b7m%wM-yK?7HBn-pTqzJp00i_>zopr0Kb?EGXMYp delta 30 lcmcc1e3yB`bLMNxPbR*4EHLlx25|-;@O1TaS?83{1OVKq47vaS diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_10.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_10.png index d888edd7689d482292fa15e5b726f214b9b1c9a4..71e310df3a2752bbb0cb26d33d53da0a7efee222 100644 GIT binary patch delta 422 zcmV;X0a^az1LOmcBmt|DB`AOE2_0|;d;kJ&;5G-q{6t8rwM|5@TJH~HhxN=nf*G$p zJ^~fBp1!JjRo!Y6?Qs0}f}$Pa>T%W%|IdCKg1ac-RD=&>e67j0?GyU<>$)Gl1*8$FfkD(^ilh+x5 zZ!BIYtlOH!WUvCf^bQBu2+o@+Qhevs4OI1{rI$|R7(&Js00$37IQs0teE|Bu>%@{W8H4I4Jy(h#`~#UZH8kmI+fO%8^1V8q+&)vY$s4#$5lDA^IN9u{q3`YpRfBuS$`3pEjmkaX9836Rxw0tQ4vTkV^J z0eGp3LOmyG6MD013DuWpR^-PSCnfMs0aTO43RIB%xN@tsq5thy&HymTVR01B=EIJh^&(Pt0t0?_{z6Kil! zVu1n&Bw!x_vbdGQo}_>JSc?o2Io}EUs|?HFpz;F}2Cxe70!hQC*|0i$LZ<3bYy9apT}x-!*EmvaI$ zN8kWPddXt$;03$`jUIrgD-$yf#>9;Y156?_H2u4%hM_rvZ&mr~ulN2}^-?D4;rQ=? zq9d?;mexW3E#6BcNu$4WRS^_f)Y=J5fUGPdFd!&&P`+9ifPa^Y0LmFrU7`2e8YsTJ zvb3gHzq_m-`S`Nl%epw~b_y?!e7L%zT{+uD`XL8otQjXX08%8;-IPApwU;h@0L4PNegXL4sL|n^)}h5KW#FX?oLQF?Hq~AN zbj(Y?rFkgpn}3-ls27gLIEIk21mN^hila{h9sSr=R{ID z&^(4n&Ns6*U@@E)en`YH6nujw5#yDkPYm#wTj0sA7q#wjyKgQ5mXX06mQgdT8C0g&N!={M3q`4r&9!9~yM)(mDbz=DzT$yWNHyc*oG zB~Jxs`{$RmDy4<|-Duwj9=uNO6f#MltKqlf@8Tad2i=WQ1z^ws0000S1LOmcB!8<(L_t(|oZXZ?ZWBQmhM#Y|$VPzTAPSI>y`pkOONC}j%A5e@ z2tEM9Te`>{xBz$X8V+Cq6%xwY2#E$Mu^ov`yxx~$)`{0g;HyT@yx-sG)tG38x3pjr?$6?(sIfbz>L zOB;&f-FY+R za;?4eLk`F&m?pFUQY6veR6f_0m(F|ubmfa6Cgjv+002*B_vRI0!YLd6sZL|~r);_xcHBT3ar z7coR~zMXXei{ZHRVPv;3Z)bGD;&{6->!gk`41iNgfDEs5zmZ1D=Kx0zenZZ;X0V6>mQ0k-w$caXwQ;AG zJQbYmTYFteOZhu%-v=JNPVN*kNuO);+u?Wd4>bqfjQ|Ima{vGU07*qoM6N<$f|NL?qZoNDv@-|0HI2+w%x|y!QAA zRMh(Vb=9jN0Q3T;!dqBBZ#`4kfg~>YV>Zq+W833Vyjq6lC?Q(|GO6W2Xa{6UzN?vf&c&j M07*qoM6N<$f>Ei;%m4rY delta 417 zcmV;S0bc&!1KtCWBmt$7B`1FZ3p(^I_5$3&V-A4%iAb=GkRU+v{z=U4w&!io_S)kk zP*Lma*Hy1dr8dzH$A1r$?Sb<%AZwZo3`h#?lwThV zz)LZKWXPW63fKQG(ecsU9 zwRoxuyy6gNmJ{G+eOCf~^U`l=nacWZWhFY=_A-LNIRJ+b0*(P4xDUYKGG%JO9i@x` z2V`I$0g5!0{zFO4do6zp$mD#tI#?B00f*6#$QZ$@f>&soF}ZLIC_Vv?xCS04zi)wi z;rgz*mla^eQ{XQ^|5#&5OXX56=et$1*;_5ldciRQDwt;xpmGdA0p|Px`0U^(jhTg2 z0dVF5Ig(Uv7I$K089~(B)gDi!Mkm|V&If?zTg5_>Y@NgQzl#-Ha#-G9-FpYR00000 LNkvXXu0mjf?_tL7 diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_13.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_13.png index ad07012e1dcd1b456db9ca8b09785c35337f210f..ba328786d6cc44545fe922157deb959947ea3907 100644 GIT binary patch delta 462 zcmV;<0WtpP1Ly;gB!90-L_t(|oZXZ$juSx;MPIcC*$AXHhyWyHkBA(RvIMK1kdPCg zJ%SH_@Pxhv7vK&a0|5~h5RvTIBqT`o+AHB*x91bg*z55TsHpY&clEF8Qk$rUk^`{j`y|8%U_n>|*PnL{%DR$r ztzJq&4#-$DPH03xiX^(5!sog=m4Yt~*eZj?7qh5x)aY(Jst8JtQ1XVxW!O|_Q* z9rMy}X?`XJIe*{GEI~cM%!6YHDN6ure@$`pX~2B|`d4M90$i`mnBss4>?1&2cBOM7 zsTgP;LnP;$SsSnz9t1xmVpw{8g(eZ>m7`A#@Q@qe(XJM??r^g&E&-O7J_Y^&bOs|8 z#bBhaw3hSDj5b&tZ)aw$)G>q}a83Zo@Vf9DX`p-xa7W_c*K}(Jvl!r#k@Cq_dat}1 z+_5E(1+VwdFKJasm-4rxeHXZQmfR|2l0H?#Z^z%oKMGpe$;!n@VgLXD07*qoM6N<$ Ef(Lch^d%j*6fPa@l1=JDz($dSU-PXQEMkBQCdy}9>Amtg zxKm3W3tsO>dtFKw^0(2x3*0+NZWS^~pX%`2;dk*53R>C8SMm3200000NkvXXu0mjf Dn*-Z} diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_14.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_14.png index a7e51895bb982f09782dd7d68ec5a94eba53c3b7..59008f1133dd3b9052d6dd2815a295366ac32ddf 100644 GIT binary patch delta 452 zcmV;#0XzQO1KtCWB!8tzL_t(|oZXZ^ZWBQihrc&oWEV&nM1zFv6;&!qpow-%u0Y2T zEYVQGNNIeFa08CuaYP*>(UUb51;UOKiA}P*zZBzjyg34|diwNxf9GjTbj|VK110ys z=9%w;vmfbBB1xM4TWM=i5t2bGFaffrNx*=p&|dkiV*r^{MSsvNNxBMssym=6UR&E) zlx~`z-H@*@yR(#q?}7qev>@gf(^U*pZ~NdX&))U&Jy3G8s8Y_qwO~zE0{vGlC^&-c zV!Zvj=fy*Ep5#CryBb_;^FLUeOr#IbZGtq!G14zMrq zw+(k$KUj_q0DoBqjwyIH05&}JI41PqApn!h7}tP1h$TEOF3C;+(zun;BT3C?tx`zj zvVIuWDVD4r?I<_zyp81oAxjOmOcmm0E|9pCTXRy zRLW)j5ZfHoOS6G@Oo0GJQUL_V1mvOMH^6rXzi7gvjVsl3hlMu1O|{vReuEaoTRPL$+`uq;m3j%nda2@KtK}1`#QVS4L}x0x9b4Qy3oz&^vD zCf#M-U^zMhWPcer#^6~2SpUM~7}0@;0E}*8UJdRjw(z)UlAQyj(Urj?N%g4~DI{`P zH}uyjmcrvI8tF^iDiH7JQdhLo+z!E2=07&F1F+$2Ql>1wS71T80h+HWFyk|T z?gP043O0;0Ldc;&65X5Nr@932v2|M)usHD2=x{>o&7c|(EL6la13H{aSJK5hsgwik z3;fx)?wf^WsDB4w9vnl+Spiu4M~!AxLz!g86Ny2#T=#v5*a}7MHyr^}L>%H3ySXurY_zln*j1&up;NjcsRw0x0ZMXb(_q+H9JiX4Wr5J5k00000NkvXXu0mjf+8x>q delta 455 zcmV;&0XY8S1K|UZB!8$$L_t(|oZXZ?juSx;g}-VK*a)OGD*}*^JtA^MhDd;(kdTyY zkKhyFkw|=tBx&?_uH7jWS=6coCO{TK1O}7}9oX**1MpH&f`2e0sw?zqTLVS@+N#b< z=_*{-uY7%3pJkJ$b&$ggYHxIp_R)@0I|SE>|JX7Paniv!6BrR+c^oegkv{BZV*+sVi;d zd^4jB7RTF}Su1r6p$D8%0AzSw`dewBX%2AW;8(sigFsmfuw zNHi4uj08nG9$|R^3f>?SM7`msq9G2|7KmhjB)p65Lt$q(&Lc3@)zLR|&zZRz6W!(b z?*&CW!pR-q6&Bx;OGJ`1{j*ZL8X`pf4PXLfbsd2L4WX^}ZGT|^sZ=&Xy(H=qdRcXZ z^29in*tqr2t({ce_`+)10my&WH}OAK0P8{s^A^1YXB2?by0Wy0~Njj*OHfcSwW z5CJ)_0Te68J0MUn%c$W40ZEMh*6BiL0BK{uP6MpB9QB6m(@*ub+*n*IG-U=1Igrk! zRjNfP2iQCK4S(pxKDaavmZ3d>Hv-25JSPA)IP^Hi^x!%G*( zcY$93!>5``T4^K|a%mhIoBe8O*7uGH5Fn3AfZ!N|JV@jm0ep7wliJLDl>i(&&j?A% zHiJ8}EGt12?c++C&ZSxhSED@|1In+6r6gH~qVm<%>002ovPDHLk FV1i%*%ai~B delta 461 zcmV;;0W$vS1Lp&fB!8|+L_t(|oZXbYj?+LCg}*y7atb5@qCr|E7S&dChzi*yPl5Ik zEYVObFcK8$c!cEvD0qWR5cP(iiiS8;TOgACk?<~#4~3IWoJZhRS4ZE>J!f<^Cfeor z?*&CW!r49F7N*~lYebSX`ZL$68X`p9HDCf{bsd2L4WX^^tAEA-QmJZ$dPdYH^m5q} zsxObsw}|raNBhY82kk6nwUf4h`#U~do9L~at%b|%>Gw{yC6s)fR0*e_*203S1mcI5 zKm-)L22iX5?|?wbIHQIS1SB!|Tc=Z90HlopI}fnfa@6T_KsVLfYHe|$(6kxQ=SaGg z=BcKY9ANL@H-DfP2jJ2;Scdii-Uu8+@SFiy@7UwW>A+0@@{49{4Q{^~;c-9&_7Nay zUZsCaQvFKv1R}XK4!vc9C2+e+heQlv8Q=+;M2ycJImt0_hb!Q26W}>;!(UyeeH;Kw z_JCgi{bw3Unrk4Ha%mhIo89Hitm_>^AV3jS0Kt)iJVq3p0DN}vliJMuG66Vso&l1S ztrvG}Syq84H>*9GNVSeOt3Aj86&qqENw&JfcE5{%0m0Jg>})AO00000NkvXXu0mjf DT#3|! diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_17.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_17.png index 569dcb1b8ba364ec508079a42f225b566c9398c2..261aeade797979c33317e3a9901b3252baed17e2 100644 GIT binary patch delta 413 zcmV;O0b>5_1M35jBmuIKB{+ZDCPvt6ue77}c#5FMyE{GtFKU(Q^{c9WY7@16cQahGR$z?f@`63wKoD`e9~<10t}m07*!t zcOg?uNV7S>k%Qm!of#|=fKw)#O?T1< z&FaNHw)BDE<@LwjRMM&Z)oR}aZa+`27&1xU>gBh?@8TbNvEC6xbPTdg00000NkvXX Hu0mjftX#u9 delta 414 zcmV;P0b%~@1MCBkBmuLLB{+YMcVmRT_DXB5$5RA7UOYYmFKU(Q^{c9WY7@E7JU-Cjnv8C(Z0B|ze}2}QXaT;I1J?YUmI;4tuR&;8P_Bc; zl*|D$-U3wcg&av)e5pLv1%O8q@uu=c4FmzU%3k<;-F- z*Z`0O9rh9a0D7H*^X=SH)CYJcaEu{i31Hpt8IB<>xC6lOBHU4d>xY>c4v4_M0wf`o z-jSqgqtf3Iff(v_qYP?@8VYH23Oaqr@+#(N5F4@ z-e{t#8ch^SYdPP}>4GK6_SCGCImXZj29y9fUMGGdja1A4jvSoLwq|ge0Gu;XG2KcZ zRMd-mZ0Q5R%l*e*Rnocqztz48+8UUhz2RLS5&EJsnBf6E70)> zmS`vtS&7DP5#E4D@Hq4si9T7UqKI&?3)ar=9E$Zi-aG%kGn}FT1^zMcxGkyl6oaV@OwVoaVL<)|r2MknMqzi&>TKfm^Dw6QkgBH)x<_ zno&;^07(q*qQBDGmsV{pv{ir&y}P!Tg8}bYfg|4Hu%hEMdBGj7Yx&PuT#^n&cmV!+f(d=yd=rJppb22JbbIw9rs0 z<$NzZ2B2Th&HA}x3unVLFM1zF9E2>nqRA{#373g>b zOEeS+Mxyasgg4+3JPtiZqEFVTC?Xu}g0-_dhhldfuOES_MxV~ypL4Iqi2kws_dv-3 zSUvT9aP>3WNhC?rze}~JQG{gJ35)=l7!xo+qtIUZ_F@2>RDU%fE=c+ceXM(+Dqfnd zvPQa!m;EPSU-Ww^3*QF?Jf{~UJ@Df+^JX7xa`)ya-vcEV^D5f|w^U^>M#1NP&_Ky7 zr=BIPg`{`UU1{S=Q?(YFb$~5{yRMg`5pP+8#ka=XD)0cJ{|1aWmp0N3fU|)40>5`@ z-5{78odHhO2Y)OR@T|H%bDS=ZrRqdlI>n}r2=7UTmW1*u8dA3#ZOvhkjT10 zIIS~G29GK?Az=b_fY)fAFk4&3WZ!|uY=I|D^7p{8-|h^06#$bx18x9D?=+RPR4SFS zZV(;!;>_f sOHt?dtDTMk759pTB$+mbIs7jE0m)0)LfR}izW@LL07*qoM6N<$g58wMUjP6A diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_20.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_20.png index 71dbc84b25f3e89a64454ff01f9dcb714d3075ef..8d430e2560e2a9cc3c0d5eea47e2bd13f8fe6ae5 100644 GIT binary patch delta 463 zcmV;=0WkjO1L*^hB!93;L_t(|oZXbYZWBQig}*ylWFwGl5Jiwsc17ii78*2LQsxnO z1U~`Zg2HbBZ@?Sib?9+HpS7tGj(?;q@p?~+Sv%Q00#l8SzPb0@AB~Cjas2m!q6fnI zW!4soU&#@XBu%cDYEB^XsCxiRfUK?~Fdz`Rm%h0efS0Nu)PD=2Hla`ZmQc;#+QC^s z*Y#!l$+tJ{TFQCW7UuB!AcPn(ZK9uK2CHe*R9nX1--ACLUyPg7T%U%J00M14e z)%9qiSSsawC#MgVB>RO~H*<_(0DPnZ$nm=LJ87h14oJ{*@O!>DgGB+uvpk9R#j0xxQns^6c+m`XSw`UXG_`j;;fRf8ul^`O>9B@rl z0yR6xk(9@h3T*+r19D2H>5+xRyV@7p`cjn-(ruH&8Xye}_2jkm`(`X~t^AC$|(006qyEW5~h;>;K4b3^{|x01UUGM-6TeL}a*Nl3fBM2Echw zQa#c#fk@7G@;+b*JgNMch;dN(9?c@A8^@3Y;3>Djv%~AF`+(a!*Hd6^*-PLz!1-vR zx*kmwOQoFel-<$B;>38uD8Q12MWKHAL00000NkvXXu0mjf DuLasi diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_21.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_21.png index fdd38b5c26145b2e00692b58975a04667a9b36c8..4b70935f6de919f5473aafa430c5fc8f8b7333a2 100644 GIT binary patch delta 461 zcmV;;0W$vP1Lp&fB!8|+L_t(|oZXZ?ZWB=yg}?he$S#mDhz1FHMpUV2snATx7U)=l zB^oO7Bq+QK*a1uMa~2RI(c>`<6bQ#A3Pb#64#kX_h?qLAA6n|ULtV#L`y{&s7me1@k zSu5Q&U;8Pap7y;|rSF3hp7c{v2W%I~0gN+mFw8GH@VCfc4hlp9-T@US%b3xyhv0xS zVg;}mS%L#f-qC9ts8|$`SBfBsbl>DFUF4PGaSP&BD}B#v#crpA39lI4+}N4Ip{QAk zhdqFbR$(9E7k?lRxO^C_Kt}-Y1&$ebb^ta$^*E*s;4T2u^R`9nqRA{#33UnO7 z5)Bm@DHOg1+<+r^oCCy2^mt7J1;Vk3!Y1C`pJMGenX%#UU>;)!3)-(wi&?J?#r}HYKVGGd# z=Ts%YY+wlvC^+ec94VRQ;7e5?iFDieg)V)m>bM2fS_}Q~wW?jFy%BF1+)nIVao^M| zCBPOyd8@Eb@P8Xn0G#hf%h3_Q2Z3V(fenBS&jOAyJ-83R_@eF6fI9-n3Ai?BI|axL zfYAd<&9PP)ByzqVhjoT!@UZd|5++bbc!lN(vp1!8Z#9*)QYw{lz8~8$2ldiy5F8UALXlJe(J^j)7e)L8_~PI@jhTfy16aF2iX`Rx z#hqE6S0Kv6YES1L_t(|oZXZ$j?+*OhQE0+N)SjJ5Cupmwy09kLW7=5N{)~t z$#<^Fa(3XSKhcS!w*k;nJ&GuDse!`*F_ak!-U)c z=Ts%Y+*Sb&Sn|4CHm77BgI8FAB*Ja&3tf7JRniF6T7`aiWmP-V-iQeU>iE#DLuFi!1Q;MqXstyh)Hok0QM0e zG5|&=lIlcf5d?C+pAP|x;7;Xd1k9QapQA;<{K7FM0=UZ+aBuHLgBx5O1{4DuOCJJ1 z0Y*utx=u2MQYq*AIYY20+O5n6sbdCXU_u3u<8|t{QcI#@32@@z`*LRns|a9Cred*^ z-l}L9cW&{0!HdI7NxG<|wfyyJ-vn+wi?0cpq)+Yg+wpht7p2?ZhYgs=V*mgE07*qo IM6N<$f?hSyz5oCK delta 465 zcmV;?0WSXR1M35jB!99=L_t(|oZXZ$j?+*SMbG;&N)SjB5Cupmwy09kLW90bN|ul% zWB~|Uf+D+s1t7Ly2YMo)A15?4h?!*2U`-rf3Oiw(CGe}StMlJ`_vz}J=pM&^FDN(? zHV@LSP<)FHh$JcdbEft*L>>(GfC-S*bpQr5gs!!3F9zVHs(%sc6+xHKt6fK^zC5wC zLzFL1yHDOf?s_S!BezRuZt?8h6%X? z&Z$a(xvc^mu;g{OZBEHN2CuLJNrc?4%Bps!y%7@z)bU}`bLIP@ zW+5qT0n`%q4u5_DN&)Blxy5J<@J8U6LCOZehM!X$Q+jY4fa&k1Mh$KZ5R>A70PG_` zWB`m#B-M$|A_(MsKOX`X!JW#_2$(e!K1Yjy`GsRj1aOxt;NISg1~<4mEGPyxmOcc2 z0*sPOb)94irBcrKbB171v|E`CQpXI&z=R4Q$LrK@rAkD_65zza_vOwERuRCOOvPd+ zy;ac$cW&{0!HetBzNn?O{J&`51a3WxuZ7z{=9+z;A%# zQKq^cWg1AOobTlH!Qyy3H|wU3F${rIDu5iX3x6YxRLlT+4t~wHW-yNdmSifXTj^Xy zv$zvWo(fKOjY?YA(o%lE+V_D6Z<0MBlk~M&emndw{sBGT?5XhG>hAym002ovPDHLk FV1lQDUn&3q delta 202 zcmV;*05$*W1L*^hBmuCIB|G$z`|@!t!I4usXSv@H}r<2yu> zlwB>i_@%07*qoM6N<$ Ef>-BXq5uE@ diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_25.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_25.png index 0e9ffcbb9cafb02844f3c078d5e4a9f52f60e780..051be54d56a52b4a2bd0077a55cbbe47ae456b8b 100644 GIT binary patch delta 430 zcmV;f0a5jSo4!(n*;)c*UM@dmi9b?nO!qJ z0u{BMUe$ZARB995a{Tvzl0D$;UeN^>pR#L;B&qzhR$C1tB!er036Rxw0tPe;{UhH# z48TjV0qPY=m!YF=2Z$dYS$bg;yFU4G=e4 z=&M&5+nx4C95SHZIXzX_%^h(p{g&1~`liKR!w*0O;Cw$=jt&4`2^>=>I0LZZNr7Wb z4{ic5K5tZNa0dW61rC2mz}^95*2vzHR8O?dAd&O^Fx+NX2DhW1k}!pBfTw7lF#G8k zlbrx}xCHJtS)Kzoip%Q-Jqdti_kr&Kqh~55t(8iZobQLm=3u)r8x)Qy5MY@^fZ!N6 zxtDwcc<Px#07*qoM6N<$g2AD|FaQ7m delta 429 zcmV;e0aE_!1L^~iBmuFJB`1F%+!6%7#c}||6{gJr*8JqGO#%VJ>jf>t(w;{!-ZkSR zP*LmYRlWC0r8dzm$A1qf+XK$-gf4LMvACj0lB!=TZL4L(Y;Z|10kWpaz<`#af8@6h z1MpI6fo4h8W$5{)1Elv4EOZ$4vrpZY*Y~?w>a>@30r&QNIAA@qumyjHV9@u9ZQ442 z^RQRx+^b3x2h@C+r-B9!i4Hg=)c`YFW;kHMi>_>>W>$h%oOIAlPxb9$<{n>*r2`Yo+|@@3LH}ioB`PIIN%u5 zgX;i{f3_+OxC4NafCGOru(tq(wX!!PH5080$mD!K4mSl>z|G{RWK3Zb;W3(L%zik= z6vx0VE`Zx@mZ!kAaB;PuM-i~%F7ORt^hA}Um2#<;^ZnS`9Bh_mgW#9~5f)hjh>mfa zd%;(LcMd+&m|55q0BaY>k)-nSaA#JQ2}Hd+?P@MHI@+CfJ_aGQ*fExpWZN0G|6TkA X@=51;X&K1D00000NkvXXu0mjf$(+u& diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_26.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_26.png index 2b89d892b8c95419a63670ad1d038a13e0272149..0cce0d378288ea453e8d67032f62552df1e14162 100644 GIT binary patch delta 467 zcmV;^0WALR1MLHlB!9F?L_t(|oZXZ?juTN3gui|sWFwH)AOet(XGG+P6cY3%B-|tH z5qttX5(K`*aszI_jF%h-wXIeZZPIw|sfs-ep&2ZJ>l#u%23WXo(%r^(q>mpJWDtj0{P;`0LwFt}Cy&@($Q>F{=`o z+9JXME2>>frQ{=Fxi~CWuw$Br`6-f!Z)-o-wO3v>5!$wZ6{H7aodIX`sEcD_D-}l_ z2AoTOq@}NXn15lP;WwZRaK2kuiiQB61da)0YyhnPJ;O1g1CIe1T?LgI+%VY8a3N^B z07xvzo=B?4S|$+5`EJn%EP*GLpAaz#_THme#B}QzkpMj926%SZMZE{y91}}{jb$%^ zUjTz~uDTxQilv>L?-umIl4QRy>t&7!41qH$fC8^ee@rWlH7@~99Q-WzX0S*A*5sPc z_R_iL&EZZheJ(gXCMs!LOKbVN(|!m%dY9fYWRku$$8Yz)i@%ss-*%_0qJaPa002ov JPDHLkV1ikJ*8Tth delta 468 zcmV;_0W1FP1MUNmB!9I@L_t(|oZXZ$juSx?MBi@@vJpsY5CKTYGa_WxDim10Im;hN_M_@o;=xBU%F#s=B0e`5ML~VvX?pi>#cw>8I zfx4+L+9h9Kx4o2$tPL#S62s z?HnMnF!n@JJ=Q9LNX~bQK41wvsr-b9Ns#v*%_62-$A|>rDL25gy%+T!aC6vL3T!NU z3H$~ajC0lXI9Du{a=u&82TPLO(yW&`CNKm}sQ?PRE=~NcG}e3paN^+CVrK@+1mKcf z^Vv>1)4U1p)Y9jI5698o*3zZ?U9=wpkKUz6;WtU&oABHH@8TbrQr~uH05uE%0000< KMNUMnLSTZt7TJaX diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_27.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_27.png index f4cbd8bda329963dcd4f71e2772e0dde5c89b7a9..e0ce87f590b14db114092bc90e9ee6e6128b6837 100644 GIT binary patch delta 396 zcmV;70dxNB1MCBkFn>`HL|=aovJpsY5CKTYGa_SC0QHin&CthP3#b-vY=6I5pl<4mcFWh-Z7<~_ zYXb{-1(#FH_ARjkx?V*C^png$kdYy&jK96@5!$wZ^&Kyr0jKn+kBO~S9CR3PCjFIGzVcy)eStrK zGQjz6VJR8{d`cELCXlfKu>Ow>$A}I*24Hj*RBCX;ux5q}LEAY%VnOyqQa#oxfk@7G zi#}ipJgNMIh)G!QJ(@*Kw~i4Bz*BC3XL~Q|J>cfxlX(F?HXQEM(&vH?heRc9Yw1${ qc-jwvNAJ=jLni5abNqJyyZ8s^^xk$;-Wa?90000W5MBi@@vJpsY5CKTYGa_s0l|Urt zyG0+c1fEoWLc}DD_a4n6rd!8|1mGz*z_Yy<^&W6@=aYB=J~ae)YUy*qhvR5(Yw1${ q5bcM+qj%|1_)XIHCj55)yZ8s^^xk$+fngm00000Z1MLHlEq_0b(@+@1f8UE&2?A*Yq5ugc7F8-*XwY*>$r1JlIRGM-pvWzj z10b#t2YMo)-z3zC{9CbRV|ys5IpQ8^4hyY>-&;^5nJtRm<`=4I4Cb|Uh4oLYv%fcHfYqAu;r&X2( z?`j8;0}@iE5ylC`NTR17LVrsubV`01+_`2*5rAgjUL)N-9QL zg%HU3cG3kbg!`Ev6EH6Ay+X5q>CQ1E1bDzT@bHjDofEF>6-L0;;wQi_fZk}Lq8Lro zmr^<3PUwP#VZJo$#EvlxfHN|H1g{IfmqwZ|08SnJTtnn$unYkZ1MLHlEq^_Z6G0S&zt^6XjX+w12tY#ih{zEsB&a7O~Uuhb^$<@oObMYn*<$Ds~Pf5dx= zBx!WLP*o)(jaoZ`36K><1O}809m!V*1MpH_0>zxD&d}R!4S&eLJ-1L}WN$9&S3W+g z_mbrRt8uggX7Ci6{?EaO14IPD0kpxOU;` z#=E_P!~rQ8;{@Xb0+Q%%3P07g-zu+0XzLV~DA^fnbU34hg}u|I(!=sPoJ)VDh0lHY zhJAqFfCAurGk>)N^#I-r9770P0$BTNz|p4x_W z>PnfMZ>F@t;&?kZYX!#;dcYYuK#JFe-$(;ZX8@-TenZZ-W-yNdR*W>AY^8HetKg0; zc_es!9PM=>t>h2Uz60ESnH+`RBz>vEZ@0gTe^yr989y;(KmY&$07*qoM6N<$f&i(| A9smFU diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_3.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_3.png index b71bcffb9e3ea1bb05a6c5a8a2e4577e530d8786..b769e8c88034fbe40b5dcf451619dd45f353b97a 100644 GIT binary patch delta 452 zcmV;#0XzQP1KtCWB!8tzL_t(|oZXbaZWBQehrhX8un~m~q6iYQS5&TOsnA|YNlTYU z;0fZBX#5u84d4xY4h5x!XsGNnb%YbUz;^ELM{$4R%OkMW>eII~v$LZ$(Ov=nJy7@n zY+l4|u>9#7MUpiAyH>SIBMG~;U;<=C5rP4wp`-NG#sIvOm4BdE5w;Co+AY zR5!(#B|df)T(EE4>ix3c!_J8T2F-W33&83VbK& z1Lojq<|l+q%KY!pJY=>F_=p2|#sPRrd`_X<3Jb4@48!}1Xs^PbX-^D*gUe;C*Gc`2;0000|dk|2r%L;(^?MpUV2snEEjq@~+O z;0cH&n!LsG2Ji-PmVz=uG*pR0y&}6wfs?g;DC~ISJOWdVKApKg=U$D8_6hj!fx;88 zc^hG0OY&{6vOVgO#sD}PX~2-^yMELtE>U)!Ow zO1dc*?I&MewR_3ZxD8TxNh`+i#E-sI|+R- z=ZckCHx8J<2)G~zNbp+tJ87(C3eXGScUqXi$^qOm)jV=uNS9jHi#xOEnc!VBDM{N> tx|P3Q?T5glH_^R9Ch1$f{C4_X`~yW^)>aIJO|Ad{002ovPDHLkV1ilQ)Ik6M diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_30.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_30.png index 0f32291ecfdde9989116387f87fe07c1d6307922..153a85aa38174ed7ad3fbfcf6061f17700c1fa18 100644 GIT binary patch delta 450 zcmV;z0X_cd1L*^hF@F$+ziJP%10)P0K|-Dp(MF_@pmE4C_6U|p2oSUcfp4)K0C5Gk zIl!8qoVAGv5cd8^9+vhzf}WlA>=Edw_4K;xeWg;H=pM&^FDSbqoIUVe;pAJ{hfDE1-T@53poT*NlB)dU)80%M0Hp&ezAj?1*JVSj5=)*~mb`5f zjFIH?twOGCsaX_~$p6;miMC}dV>3cK53t!|>5VvKKpP!43N0QZj-)@*x~*aF;Wr=; zxUwH?j1B-U$(T*0${~M;1|H?g=Ui0%B4!K z?1vO{uv?i8ykiOkSY{C*I3|gE$xndK4t`LZnco!vr#sG*BT3_{#hu%D96?mgL?z7@ sQmv!w)y^k?me-DzBw16#Zhja40H1~AewSz(0000007*qoM6N<$f@B8Oz5oCK delta 450 zcmV;z0X_cd1L*^hF@F?!r4p7%}VJ5KMrqt}`$oF|;SYJs5zOssz*vvNl70`Lwf`8unLJ(U$znX=?5%bd53 zgCUYazE;e&_L@{e68YcSpK0wYUu{Qdml0NbSvmub=+Rh*mE!L42AoKLq-E2?-otM| z0dT$>ZHNv5-hT-kV+dRTSpPKO7}0^d0F17ZN)7HX`3^WB1N#I}SdzUbseYqn0hyfd z#{QlUpJ?AIDX9qv1%`9vRfID*+$dRPs&EigNIIKXFyVah| sq*^Dt)y_wN<~znhl5E?(#5S_o_>6q8X0=9#C)x z*glJ!K>8!BDUzh=)k;;Aj3nqB2qr*Q6ag4eGIY|uIv9YL@_!O2mIO_P-tQYg{_T~; z4Mz6vvRU%!C9s)UTme}Q(Dq6yU;!^c5EHv&WdTDH2hc5*&1@Oqfa~b|XDd4ClJR|> zhv3yOrLW1egMtW2NncW`E3auT2P9<7qB0MX=-(DT)s@eEUX9Rp39L`Nw0aEbP8WeG*-F*ICJo8u{VQd2(V$Q zbiS7^lvay7v*@YdZ9P#*yF%K?A6NT6@ZfcHWXL3asg~dFei#1$XnEq$Avf7Z00000 LNkvXXu0mjf6amut delta 468 zcmV;_0W1FR1MUNmB!9I@L_t(|oZXZ?juSx?gumAwWFwH)AOcoG_K3(4DG}-k2|2;a zNALmAdIAF9VmSbJ@ECF|AR^hZi4p!o^6c(-ieSb+vqzw#R&~98Rj*5JqP`seJ)qzo zus)CLK>8y*P$Ws??LyTm8A;IE6HI`tC;~8`Way-QwJ`uM<$onm%n9lYUG8c?{_VBJ zHAeRSx?b|>6|kCETme}Q(DX_wU2hc8+O>7?EfSc&zXCpf4lJR|- zhv3yMr7y{|y@CiyNmo*;t=Bl00}?VOQF#uM=-w4R)z;@euSRH_1ePaW8XfwyICz1j zlH=obxRP$9#ed-r`v`vk#enn8#3IxK_#kkMAZ86qf*{mG!2++90Njtr`!V1_FmL_!0o|p1gtH7 z0sIE&496;p;aFWMlk?4lHdq+$=4P$fF@he@CkIIIx=r?X(opFP;LO3V+0G2+A;5~U z(&fED0m5D{(#|g9DS{q*?L7iNYL)8$`c>U(6UXKF?*V1^ zfX%aT3@pCodx|7!cD+(pi4n8Gj$i_0ZJU7siJ=4e?qC33YJU>YF3FA=`nWv;n(CG9 zHcQk^`~A4(%S+(0v>i}a0qFZSbU+0!Kp2G7GIl_VBGCa1^I$;f$_xkG6#i|mI8doM zpEo)9)~D6iH1$rfKvEn_TIkyAw2=cMHDv)1QiP2Ewtk^&-}t7B(5@n^54`k7ykmfc zePV0H{XH<^Ont@*f@8TbnU*zoZ4w~iw0000< KMNUMnLSTY(>D(>= delta 466 zcmV;@0WJRS1MCBkB!9C>L_t(|oZXZ?juSx?gumAwWCutXM1q9u5z$7ZM5rg^3S=C? z5(yF80fBF^+<+svXAiJOBFAGQ0))L@B+oA6DT4Oz9)XTprFySkRX??f)8qK>0cH1q z)w6I4%)aG&iX>^WUTAv~BWArF!34{B&j{uB8N=QcVmB(V>vu-{Fsa}Y$Cit(~R=QF(SVLo^S^|Ob%7 diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_33.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_33.png index 4e77f139b5757cf9c7eb756c2ca02c82e89805ce..73002577c10e0353c1d96c5159cccc6098917d42 100644 GIT binary patch delta 468 zcmV;_0W1FP1MUNmB!9I@L_t(|oZXZ?juSx?gumAwWFwH)AOeukdPL-ilnC{NgrsD9 z1fKv;K;T;}H{b}KS#lhZ@7Tl${~_7CJMJQwpSAZ0bkr)NNxtAPXS^11g4&6x$+x$_I=2Sc&r_i5Ls|oKcmu*9tx5(C2q+_S0R1>MAa{9$18x%ksgoS3?75ni zG5FxC(N~oFMleBAHjq?k=QS?nfQ&tP(*sEi?t(A0^QABA2yL6e>c~syoC|tb+9tMA z*1iMhTuL|6vVZMiU*Qj+6mY(qS%QWDUj&W`q-+4J|0BgQq61F>82znO0=QviB*j%h z+Z8};mF$_MFxE1LNX~b&K439CEB%CsNj2UFG>gc$juA1yb8dkbjTiMEaof60fQ_ZE zf!_e<9Ou1)=&G*&SOICJo8elUYY46tUZ zVs?-&Rn&`{Tk=xyu}xIcHb`sv`_+C7Jb9noGh~v!*UN7Yzl(n)!sB!9u(yl=0000< KMNUMnLSTYh#@vDc delta 467 zcmV;^0WALR1MLHlB!9F?L_t(|oZXZ?juSx?gumAwWFwH)AOet(JtA^MN`!hsLQ=9l zf=_@aAn+}g8*l{AEIAIycWh#W|B&q69d{ATjDPkBbkr)24$k!JG@KRX;VSi3^&d}%m8BosNSuOEB zWAMROqc16UjbMVLtS_n1)@xMC0U0~;rU#Pf-v?i4>q}qOE3{1p%M&lH9+z~m^sup| zvg70RxRP$A#eboPeT6@OQo#9kW(gVqd=WUtkg^7_?vE75kQO`zVEDIE3E&2mkrY=g z+O7d&t7I=Eg^?C9L~_2JbpeavS?R|_jH~fJplL+DaSVw8o^uDhXuPQNh`WQ^1Xx@8 z8u$&+8%-3#XrjKflk@G2E?6Az=VqPMF@^zfNePhQbxh;$rICsmz=eZfv%MM2V}KPC z71O~P_0Ph8k5qK^DtbgWl z4C%mK0ET}XBXCEx5RU^AuulM))ot%ds!p`bAd$!_shRH}5kKkak~XufAGB+0fl?Dlu@ Y4z{cX zLppF5fZ^Z92;5OE#N&Vj>=Qs{b=!NAsuL|UNaXTv=x;JCgZnWbkuZWyfEQ?*Fu8OL z$}?iiJ?~K%0RiSo1PG2{ zt$WTdfX@zoQkj|GWB}*RlOjn)bGQ>LiU^|IpZ0hvRXW|Db~*$!-!m4HWZN2c`@8rD XAy?z2iPRXm00000NkvXXu0mjfZvJ2f diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_35.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_35.png index b04190d48219b53c543fdacdb5e148d6c0a6ab57..d103f5c4e9b599c0ad3180dcdbe45c9598cbf320 100644 GIT binary patch delta 384 zcmV-`0e}AM1MCBkB!9C>L_t(|oZXZ?juSx;g}-VKS|gBb5CKTYJ0fyKN`!hsLQa78 z2tEM9jUezXmIH7Hk0HkbB9gUDjPS0F#O!)JkD$l1_8x(XO0PfF&r_*Q9ERh+7nIx( zR*%A=F#Dc1h$LzJcd0rektgjPU;<=Sm4E?}&|dpGF#s=>QGciwB!`6FY!8I;>oW@n zMDh9z78BP9AD;ppzu5^z8Jjx@4qy&XprQ)oZm-lNd7H$nTTixoy3AhvXl3BbVVtz! z+q6t0oH^i}vH%PhVwXAZ8ozKrPQfGt2+=~0H&?596H#g0@nw~2sj`C`vj0iS9%>u)lkb65;=dAcL7V`Ug<|9jN*7N z&@^GPb__@X?sEk^*zKbBEv}kvlXw9>HitX0?4jUgS4M6(?KJ)qp+#QUXByW@0b?eP`PnX%NAFT|0IgFbY ze4CbOBxepdrz`-&g{U&;UDM>8f=LDtqJ16f z9;ec!4rbT~_>&?596G2{f$IZg1RRineF8|ME4_}SYN%xjiJU*myMU!|uk<4lMsd9t zXqqrtI|ifx_qhTd>~2x}7FYXglXw9>HNl-&_E7NhFxu-%x{$w)_HE$K^Xwq}Ch2n> de!KZy`~xNp)+Zb;1zG?A002ovPDHLkV1jhuuM+?O diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_36.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_36.png index f19e1e4fc17c96f294b4569625e4c7c2657e9ce3..57315407065a848d427b8f93b5c3007b7835bcc2 100644 GIT binary patch delta 465 zcmV;?0WSXR1M35jB!99=L_t(|oZXZ?juSx?gumAwWCutXM1q9u5z$7ZL}(`D6o?~O zBG~{zOAz=L%K^B<_HckTKM@IQ6A>Wn-9_5jW!y#3rFyTbTWw;$9REF_ z>;`cD!0!X6U-OP4Njkn1jGf|K0~k9dqDH~ ziTOQ7{pvfMRn`F?9s~U%`WC30G~B>DfH^#ZhyuawNL8-NQa5Zj+ZV z4S?kjfnNZlmpYcT)L5$Jihf9I4%Q2^fp<)S0Q0N?2uhAg@;&D#z$XVkh-T*3Il!6o zjFF^r^KdIG%LYWfy_e&e6m_(H+T#hJ`IfPeBx^P7=6CTA*BIF-)(MG^00000NkvXX Hu0mjfo>17l delta 466 zcmV;@0WJRP1MCBkB!9C>L_t(|oZXZ?juSx;g}-VKvI8UxB0)m-h-f2HBGeOd3d9jC zk!*mVr6uq!mIH7H_i%tUKM@IQ6A>Wn-9_5jWjt?#9{=qTsHpV%sjA+qQk&Qh$A1qf zy9Jy-3j4t6w|qm9Buy?CY9ldX)>{)yfUIdUFd#9s)4oj%z<*110-8D5K0|L;dqDl= znT0(@_2vhhm9_ysJ_WkI2`y07skuRL05f<34T?m!Q>t`jma=|3+4||Kc=^3kfNy-7 zwBqZu&J($Cz>>NG3@cKX8Aq*IZH-7pS?pNI@L%Ikb?Iwgw-(w(gyoL7&VX0+u&{A# zskmLPIngmg@3u!k`R#?J zta57@#oG&L`;hK{PtO5ikUD^(1PCZ2a{x1V2IMY}c0Ts8IDl^D%m-f?yGq{tY$a7M zaX`WMNf~2UQmHH{i)ujaW5)YBtQyED$diKzIlT#fs!Lz`vX0O;87vPRwR)Vyb<6OFu7JtnQ`v`w(Rh(~UmY_bs2Z3V*DQf`heob)@z@YmF$V6Fw`Q3NY1yjE?_Y{DE)|tQDyHHnndIq$AB2%A=kj8-7f0f;kwy20oIm2 z1%3nchGT^=9P3mnl#Z00000 LNkvXXu0mjfY?9aX delta 468 zcmV;_0W1FR1MUNmB!9I@L_t(|oZXZ?juSx?gumAwWFwH)AOet(cSPiflnC{Ngq#5F z5qtoIM}ok&SPsA)JOeov5RvTI#0dW(?d;!+m2$qF(FKd+&CINmI!4e3&Zqz~yiG3rjWkp-1vqi=Yq~LmSq!jb ztYWf}&Q&zQ%`JH>czqb{b&!_w`)J<rlbG>0000< KMNUMnLSTY!BiX$G diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_39.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_39.png index 27f87e640205de8ab3efeb0c64e19cb0411f56d4..b74ed99a75af064feaf0450efa66a506e47124da 100644 GIT binary patch delta 469 zcmV;`0V@9P1MdTnB!9L^L_t(|oZXbYZWBQig}*yqfMUphWUaGE&kwx*2U;<=i8G!*6LwoY|!2rBeRDVFZAUb5|%6s45wZ^&v@D9j1 zn-w>S90L-7XWRhKcU}}f;HGh#0&5Ge zfD3@`aICT%j@6TLIp5CcfF;RxVHO9+2>QSY1we+^xlX^8hMLU*jvV}&Z_Qwl0IV2m zHr-06n$?RtvGj%DLzAeaO)0J9?^gRE@c4at$B;?-UN67h|1SOkvya_E0NJ`100000 LNkvXXu0mjfN^{(c delta 468 zcmV;_0W1FR1MUNmB!9I@L_t(|oZXZ^ZWBQm#ed&;k(WPG459!D*()knw9ug0G9^dI z5qttX5){5gxB)l7>(JwZK3-EtIJP5VlJ!1{T|3?!fv+09c{A^O-#m?pW;yMqoh2(1CotFaR$V6@O69iJA<3+%|wBe`~wW zD(b2{Zyx#jrs-vq2VgmgcR&uWq3tjBcl4_EVh9ePlLUj3Kae45)BExIFOE>T*Jih5f`X zmEApFms9Dlw13#&VPD`kpa3}E&MZZJfX@QQ2m&hr>--2f2DIP_0E4Sar3BXpNC~)V zNOlI0SS5QTsT^vNKqTkeSqHELo)&&Y#HecT7)>K4YsY{D;2Af-^PLyP54hR8O@Wn# zSHJ~8cQ{sA4#(Czietd^n8ux|EjkchPvXNy#$(8#^ha9x zvgu*(;TNC)INy(!qXU3<0>=abrvNrM3OL5};1&Sm^ID|>cL0zRa6kg~2_Umt_O_(z zjaC^Xa=sr2+YHO#PU(LqBuro%;Tf7I%+4HRvLoOwm%zO`%S+%!xNJxGGy;}A08Rjg zFEo|3(nu=gd_UGU)9unM4UP#AVUd&o(J`)bFZc=Y*})GgGYi`cVB-QKBq`r5?#%MM z1W_~-l{B48l@9l-JsJaA>={c*vZjY!|1SOkAo<*gJ&gil000UA07*qoM6N<$g2vpv A9RL6T delta 405 zcmV;G0c!s31MCBkBmuLLB|(486v2$`ojn3CYE@TvRlR;{6WwzB_kfaX!0G+a1&+UE zJBlP}da+Vl4I?J$mS6&8b)A3#4MSJt+l2vmsce9HNz!HLb=3jNFOMyB7{#ma-6J0! zb+Z&Dz-E?ifdxE-zCYRfaDYf5IDi2d)cl5sq+;~(NpGri0Plc;uk(L0yP~qDECBqb z&9dNav!_7rfJnhC$G8arNsRv1{#X~j@MYUVJBzR;*%|8%c}|Ljozu1A{_%z!N`Iu4 zFWWopJ^TU`0O$MBa&!RjPT-h8;1s|HM*+u}9^3+8eBP+k;0^$C0uD&PJ^^Ib$ljJz zztJj#M9%l)pvtfe?v#IiLc#>92+zd${2#cfyh>mfSd%;hD&klZ2n^~wbfQ<``kfeM&xHHT1 z5=5~d?de>qb+{kx(HPKT&sa*5wRhO{@8TaI`P_&Li1QEt000R9NkvXXu0mjf7rDd3 diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_41.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_41.png index 1632162fcad5b41d1438db230d64e9d008dc920b..3110d058640a7d40ecf9a592dd8a548370d86432 100644 GIT binary patch delta 416 zcmV;R0bl;_1MmZoBmuXPB|3lP4-rqs@u9GtOlAqZ>gnjaf9G926Q{@V-wO)v291;G1}{K_kho)H!Cy!nK)dX0+_C@%T*qfW8}WawDjDA=c?5n{ zwZ0_J>ijX1(ypYbwthFr<$#ooah(H6bZ-hj)z)V|uPn4p3QK~+ER7E5gjjNLY^n6{ z4s^JXuBC;~s~q+begjGX=bNd;s0Z*t;21)}8o=6L6C8aS@DPChpV|mquN)-70Rh-& zfXK?SElI^diwFWa-%NkofJN{q_d^1PWqWVXBw)O8^oal-vjd*gvnagB?%-(*tSxyC zTmf_jBNfG9q^^|7`DRKREQLg{+)aDOq_<}zXufD0ankF zQ(*cd+EXM+qs>B9l#Db8Yk~=o6-59BlnfoUuO0^ArMv`+Il(DI?{_Ca{_T||Cyeaf zNm%wry)XPw&l1Jc| z)#%scSzSLyQreX?)y8iJxg3y^F|KPMiSBLTr`q_;=aq!EPT`thze}UTIU$zp6}wh? zI9`Vf=|)=kysBXz;WwZJaK4#ZjCuec1dbsjtN^V2HNnxR0S^J_|EYz*^~yyO91wtg z28gU|+mciaw1^;(^UZ&>4Oj$^az7+sSdRAwO#;SiN1q7bFrrBoewwL_t(|oZXbYZWBQig}*yqkv1rQn~EaBc7n(z?CznM^(M|E zaI32`XYRT8%+;9K4aa{ED7gWgKJdH1@z<=QNRp=KE42|BAxXCc6Ci7v1Pq7_U6XGU z1IVQ+0?m?Sm!a474p4o5Vt$8FzWNTES=s>~9s~XSWDAs46i>lBfCW5)hCdM8wNkS^ zOJX)?JKG+AT@=s1^$N&0ZKow)=2aHSg#*@9C1BicRTjLB_j^9p2$akUplU5-^tZ{6 zb)J`b)mmt00oEklEWIHwNHO0zwpQrgfgy*|g|y16wuZfjUw}N|@_w)a?E}0MI40mZ z1+c-9$1$b{cK{gwjw%hfeSiXw0}`;009kZpxF@N9d81VZiCo?fgF3@9xLf5D5++aw zc!uT)vopt->d$Ghb%_8|N7zNyT{w9XT`bijhT0*u?O%8a+^ekY_Fk%~zP)UAaK{x-$2 zE{dwCTMO+x!UDgUrPJpH85TBd|4^R?tfCu{skSACAdy<-eH=5_*<%(|Xt#T}fyLBZi@e|;agC8_z7FIdH(gg-cQn_B-iIrsyqS~(Zcq%nI+^+Uu2xzutoJf+j eHSFdWckvG#lh`EgKyUH@0000Oy+^ayhV4loIw=z?2} z2QXfNM)wkRKY(i^44BXkO+6P~G{OC`RE#`n?FlA87D56BR1EziA1?;rrLqFToP!Zb+Dd6eAo%nD7KKSUP4Hm&3l8W<>FB>Cmyattzf^U;D z1&BVDl*LhnGv3A+k&#m{?g3>C$N4t+sW!gwF&wteVM$UOYjn7vh1F?UDzA0ua3%eb z7QT!#>^=O7s((1&%&mvI0Ph5jA!Muoto#Ay2EYVSPxiP_7wOD&>4&r z!eFFxsgU!{oHkgR?&fB#%rS&6a8Wgy<8|$~(m>N0z(<*bAG4hq%u|3HMw(7`(v_xh zamUtsEO=8lDrp_08~MX(-v#cy>Kzy|NuT5L+v#`l7k8}dCx`Z;RR91007*qoM6N<$ Ef{!QK>i_@% delta 462 zcmV;<0WtpZ1MvfpEq_6d5H=j9M|%_eL~CF87!F(IuprqRtF^eGf$h_>P=5FGT3ktg zrMWNT4Eq4Tqkk&S*K_Nl4#0bXV*nXT0Be5DaP+9bLjZbzDwP1PQ)SO^Kmzs|Ahk;N zOj77;ov{4THSTe{-&hw|TJ{|H1<>jb z6+(Zgwp7UZdQKB8O}8_%M&=km2e_yX`+)J_TCpW%>%jAmpYWp8^R*q64U_05Eg2BCAyJoohQIiEKrK*+o`O?@=Nig#^{mJz9$jew>N$M7ckg*LwSZ8+>I z!kS`ltTW&hJuK`ewpQHhFyKu3BdvVX_OK7|vsK0UZnP0P0eCNPOdxOxVEv1LV@wC` z0xkV!v21rmxx2T)f5VCH5;R;l30v5%nx@X5D6`em^8 zZG@zH`00OnXR3|YY4%ZbK5t5Zka268`ly8!@7fqGB2qIO0Zki@;Z5=jZG7$9aM)FZ zHO1aoXTU3ZSlD-Lt#}yTfHUcjwDL{MVISaUtBUj8Xd`q2@Lu4UK;RO<`WFGmm=4?p zVEj9)BycA=d%yt&*f~IHS@xc!bgESeg`Drk{fan U?z0ZX(*OVf07*qoM6N<$f~+;jYXATM diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_45.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_45.png index 233641453af21f47f851598c300dd386c51f5834..0c4c52062406f0ff3a256a8c0229e5f28a48b464 100644 GIT binary patch delta 465 zcmV;?0WSXZ1M~xsEq_056G0fof8S)0jX;V)6d<8^MU{#c8Z=u{a)cbg2SD;jQ1}+% z2HXIzLyrskcteed;~-^;H}fcFV&fcvsYY*}zV}C;#>DP%{P%#0JHYB$*aa5f%MC@6 zG`%`kK8aBm{abF_5XN zcnZQGq@kZ*0uj~J4xnuUz|75xq|(5PT^~aS;G@qz24%4PRw1b!etEq&)s@#c`Di(r zcO^hbyd_<`Q(?o093wMoT4oi{+IzI{_#y z$?i*vW1W{!$oXD90IY;Zou5!JN%r2NdBN<`F`@)`%r)@jHjDcAxZX5Y0V@m7fu8^e z^u0;+?c^x32?zwi}{Uo ztVLejnN?2(?>3D}x{T6={C2hP0}tL*TZT;1*S!38_q+HDiVf`Ayi>$p00000NkvXX Hu0mjfWmwwO delta 465 zcmV;?0WSXZ1M~xsEq^g?Q$Z9(&l`VaBamVc1xU#LqDn;z4H}n}EFnwq0+2is6y8PH z0Xx9op~nS%Y*QoR*pc!{e&$ll#IdskUNw4i_3piIuExZEIsW^GihGUqi?H9A|17r< zNz&xRKkAVzb z$5RjnAr1Zd8i=T(asc%r08HJqNGuC@wXdV^0DSaWN4E@??*>S!``_NSCc5+*B^@;< zv!(KoSocT3F{A~L0T^B+mI&@Jc@H?C06PIF zEzurGiX)wsP{{dq)dj4CCygIdFi!H`qglap;}}u`Jmm^_cI!o*2V8A8HUQQZUIM=X zdZUSA98J`hYB}Go=z^8y&C;wB9Ah{Hj?zXeyiWbKG)mHZ0dU~p*W$(umL*omb{`kupY_rHsOiVf`A3D0;y00000NkvXX Hu0mjfw%XSg diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_6.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_6.png index 29b6ef25b8557230e81d1e84ef652ec95deb0984..e56c452606187a44f5a5f413f0a0d0fe0c9b3452 100644 GIT binary patch delta 446 zcmV;v0YU!Z1K|UZEq^_36G0e;pKrX#E|3xs4N~M?QKh1#LbD~OKpepm4Fw`Y=K_f% zkONR~15Y>r=BGkJu?-DHgaawEB)j`k?D}VY1g082dS<@&n;DIX?r{9~K*`S&*BuSIYrP|RLF&V4`6CkVW1Po{lZIy2)2H>T#0ri5UYk%lP)dA(F2NpU;@%*&A zfxSPo|hn2mnUg5m1@1& oJneJ@XudHPl4R{3w)F-jew%Cs{uYnF_KGb~@_AZiTi~3k+?0_NQb{wF9H|nLe0r&n z>PHR-LK5k9%x7BW(zkYmb`d}Tz5%@rZU`<6pysbAd$=aVZY9> z3~p8Vn1nIZ0Un`g!pVhWMD_u=%@uH`N%IW2;jh-w9|pj(1K(`tBZSLMNxq$H-Bz2m7?Bk ou68;CG~XBtNwW3~+kGzn0m&TZsXi$tQ~&?~07*qoM6N<$f@D_6o&W#< diff --git a/assets/dolphin/external/L1_3d_printing_128x64/frame_8.png b/assets/dolphin/external/L1_3d_printing_128x64/frame_8.png index 55e3ebcff6273566ccc09ee303562b206d6b4327..1359bb52a51493e1edaa6ad4479eb5efbcca624f 100644 GIT binary patch delta 451 zcmV;!0X+WP1Kk6VB!8qyL_t(|oZXZ$ZWBQmg}<3BvI`^!M1zE~D=I2lDl}Vi1#V%9 zh6)dzZvi*p2%h8s7>Pb!Lqie8!6~wdcjr;eZtTqwm}>Ot&Hul7^J|P4F3W!plsy33 z=Y9xQKZ|>bBx!N8QMZyJWaD071jxjgfdP_22kpC!0dP{2K!0454Hf#-4nR}AF}<@S z-Ny6bk#Dbucd08s1QopOL8_56R2&!H9D>`@y+0}sK+V~*DGtCDO}#H7Dddt?s+p+~ zl6-!nkn6X@BtX84Zlz17wwWdC<~l%x9U&<+k<$f$>k_+C=-V2T<6#Fl)hR;r6)wA5 zl(^BkoheSFjek?y$TA1dwsYyROgVzb0DR8U!3g$MD&VmxBy$E(q*P8OlHyF80y0@Q z3de1MDd0)t=48yF4e$;vGfuB9Q;P4vQ|^Fg$=*lck-xi-@NEE0@dCI2IQgK3q>XZ^ zmUW|$Y>wNtF=KC;0|Bb60SJ~U$V0^+fFBlq5sfjvEj$4JT2GE7mHptJnzC#_^p7WL tv6P~|>_OtpZEUx=V?szm*c+&$_~Kl zdFX@r&*DKMNt)g+)vct6*|-5AI6;{;1poYtCnNu?McH*SjK;VlHW}HDlF6 zQpj%=bN%*M0_2<4&voV1)Z=8`ZX&d>Atr@}^11}@U1HaY+qPyo0XBfwIz?z-;i|hu zi9fz@W3@wR>3`MKa!eqw>RbjKBaYxP0H3pTum$%j6$rQ#lAQw-DV5Wqq;{-j0hydX zjwell74W3?6EY^yM0kg08D}?+5yf}lDfhs$WbY&JDBM3p_%;GoyZ|l%PCsZWX{lUV z%lYG&Yz~@**&sM3K!hr*0it6B3Q+L};D>`>v}P8X0z2TZ3*<;rxgFdyE6W`AHt`;TsjN@mym|A_lTCD&>K5sjqE`Q(HuCt)7nt6B2_t)LK zRAtr$CA`{!P-8^b7{-|$g1?FXbd(%`it||=AAl?BYF|WBK9W?ZGO3mWaw?_?o40Xm zFxoV}(2Xxtr=fLQ=Wxjn$b+GQyeU; zkBJzE4nLq-#B}XABL;ZNE%0pj`szR6_AbH%SXuTGxBxg#Cu*8>qLEa|`CiTtERMGe zvwr3n!wGOo4UpqC_ZulyQ34Dc{4Td}R;-^uBN#qnlt z*3BG4I04S60CK#hel4XcW&k}0e`Xsqn8yG&j8sfE(l|F2&ESqLc`5k3|8lEZx{=?F p_G945hh%5SB>ifJ-wuBl{{TIe-=aP>OhNzv002ovPDHLkV1fy^&5Zy6 diff --git a/assets/dolphin/external/L1_Akira_128x64/frame_12.png b/assets/dolphin/external/L1_Akira_128x64/frame_12.png index 4d800a109dce8d6b1f801560b79141575c8bccfd..701b70c43991776c7aa63ca3b6c15278951f59bd 100644 GIT binary patch delta 690 zcmV;j0!{tP1ti$q_7b*S+xmbafJ~(R}hO_LZak!^>+7J%$~$4 zhW9>x^WMBaU{5%T(&huT%pW9YXnHj&+JfCAA>wz~$P_LV@qg;2mdZc?`*7z9^~_g* z!kyG}8PEX6si{e8+B=9k(#Sv_AdI_a-kSZ>3)YNP6alu<#P0+aH~^8zV%OI@pU712 zx$b`yVlfLzvu+rIgz!oQhZLXSp!~L|w0wDfDuJqFC@s z+5!nuBPLG#o_{U&)S!rW%4k*BHpY4io&z!^7Mv_Wcp70L1GyqJ4PriK4N`aDJ3yxo zKEWR#=o*`4X}_f7+Ta#Et4KFh?lG`c@U!B6i)an>7A=UeBaD)%9W5+EEDIJy|GL@$ z;O-(oDMoWi1G&5lFf?m~Re&Mt0DJKj6#$1SKotj5(tl)gv$2Do23*Df#)u)&fJeaD zh?ta6>=0^fjjA~m4jL33$bEh{@C-58GBNz%%Zb@K5RnI+@+*40cIyZPai*9#H0wR%2B~ z+=fxk;D6!*R|Z4Iwb@VkbqhzMFGelGJ?)6?Gb;dvyVH;_wLF+!r3gCZ9+Q>&1h8iE zc?yuD(dccy5Go;x^2Wey{PX?&@bW=lE*#So$vqsncjNHt%vQjNXsR*sJG1g5eFH&B z;94|XJ(~8GWUlI;O^qgG*xgpmWhUY_66Eoskt_BS&YdRO^=(so8js`WTR7_^=eD8! Y7hW>&`<{SCp8x;=07*qoM6N<$g1|OIrvLx| delta 691 zcmV;k0!;nN1G+$*D)IokN$j4^_Cl|Sd%BId0&WRpN-Q{EfZ!s+QVKG8m@$a?m^Mh=gYN*X zF8Bn00KaW)mX!fXhPA=TxmJ<*~~6eTn$IGXvq-t!zW=`zv(=*zje8W55No$xE1-@J1Y{3umSA9v&S zzWw9XJ0pWbK!S!Wir2_jh0RKyj0Tu7ILd;e>Vuog$HA^;ktfg;2e4~-T|DULSz2R7 zh1`W9Mt^W{fNQ-0!`ci`eAA$$(O1F-!J%fz-pCq2?!kS?78)+x-yjb?ED4I${v~JdZByYhl z2;2z!E2omqiY!#T(Zpy1`kg&Bv&wkXMEopnI4szF%GgE11K)PEt8qDdsX=Lrcx(@v Ze*s=H@B5#EybJ&U002ovPDHLkV1oQPNdW)= diff --git a/assets/dolphin/external/L1_Akira_128x64/frame_16.png b/assets/dolphin/external/L1_Akira_128x64/frame_16.png index 8f66d531c1d0d8b0730fb0074f10ced07dd5a38a..d7c0152123c8a76278e892cbc2bbe1cf7a6b797a 100644 GIT binary patch delta 666 zcmV;L0%iTL1+oQ@B!78HL_t(|oRyMGNK{c6$A9PEt5f-yDKn$gnb}mh$q+*5G2^1W zgaZ*#vuRTh7Dc&nF7^=Gn9CNCwJ4AttH9_n7c??ZTp0z?jH6)-$?=sF-Fv?l^SZO_ ztj_m4-}nFi-#Ld^5C6H;XnF6Rg3*dou^MCESf{4FE#Khr{M?#zXAR`r`&##fg$eWjE!2B3X zUK`4nk-HToWN7e)n(wx>V0iB2yg_(cm2X77w%5%uW7aH@$qixFtI@jOb#+K1`+lgS{!smTEwNZE)(t~?WIjM*T#A!4BY*Z&zw0XktydSn2C`^MDWztlAqwlwAshhoh^&2d zYkm!W@#*==Z0vMG-BL^B+t#EB_6F03%&WmXXu2uBcZ1n_bP?5Nf^lhK&Z%nLLNJ|o zaVF00<$pd05|Vd1W>S6qtz#hta2eE*@BP`90&p|HgVb?xL_||c85!UuanmI~i*7(5 zlkNgo(Eui)Ge^Jz31~ny@M6Ux4g-1T_aL!DHfJ1{YJi#$HzLEbIq%r?0W^gk-D&m9 z-)z6FFB$+^IF1Xo!x;B9fU0q)A2fYEY!CedR}&)`@bY)i8~^|S07*qoM6N<$f{{N$ A$^ZZW delta 663 zcmV;I0%-lR1+N8=B!6~EL_t(|oRyMGNK|1MhM)hOqfsw9W*iM$NRGFh=$!MlnESGS z^?%R*UEcRQhgdiNdDLk6?w*Fxs#mcBvC3HIP<6RirmA~vt$)ATTa|GzGF@GAPF78{ z3UHonR08!L&B6en%>>lcWJlXYReTRb)yT<-BcX~G+S~^jscQQCIysEIczFiQkFiu` z+>?>JRV8F-tPC~JZE3-%*vSQh@U$v#M7_4x%`s!vERo3#VYaeI>weeOjWUqdMiI9H zu)WK5YE&Rv2!9WJ{Z{{~Iai)BP&1X7|5@Is z&fN0GrCf4(sg&^~TYKsg7^Mtf($2LsF z8vNqX^UiGSbVA)yOXSDar3v-~(}&G#!8~ZXDV}$O*#>kG)ngf0WY)b*S8Q?+cgg7FiDW!}I@RGRclJ}w;;LoHx z0ai4CN$AMow?OKnurl!8?p`UjwKacltro*TeSEKUX6d@DQX08g~Ey002ovPDHLkV1h+!Q9b|w diff --git a/assets/dolphin/external/L1_Akira_128x64/frame_17.png b/assets/dolphin/external/L1_Akira_128x64/frame_17.png index cf37db346118aba3834c9f0a1c8fae7a77683c12..95068c50f0a3e5d016a7ee2213482fedd1d4e4aa 100644 GIT binary patch delta 115 zcmV-(0F3{>1-=EaQvz#Af75)Q6;st`H+$n20#I7+z_4`7vWTMra&!h_*uZ*71NIv; zFp3sI%=GsC5m=(!F*i7*0dDM002ovPDHLkV1l-XGBp4I delta 115 zcmV-(0F3{>1-=EaQvz$ZziGbDimB?eo4s)h0VpkZU|70kS;Wx*IXVL|Y+ya40sD;^ z7)6U9W_tVn2rNV3@0JnZ6MhcoqstFA^VSTS7iB)Y-FqDo^`{j3_s=+M0_!qTh V3X}e1?c4wW002ovPDHLkV1h}7F(Uu~ diff --git a/assets/dolphin/external/L1_Akira_128x64/frame_20.png b/assets/dolphin/external/L1_Akira_128x64/frame_20.png index 6bcc87a3875ce8a42aedeac42645d5448f79188d..4b4c5b14c6f5dfea9ee86c54e2480ade0e9e2b08 100644 GIT binary patch delta 522 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 BMxOux delta 668 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 Hu0mjf3uX-% diff --git a/assets/dolphin/external/L1_Boxing_128x64/frame_3.png b/assets/dolphin/external/L1_Boxing_128x64/frame_3.png index 0972a28171dcea05e03c5e763b886ed84b8912cc..aee654cc8fc9f9ee4585211b4a806ffa9ca68c7a 100644 GIT binary patch delta 488 zcmV)6LDp-DQLh{Ki9IA- z0_{UZ4@8EEVV2u)P>yc6nWxC8hUsK%3ieCpOec4Xf`1db1v}~E0@SYo-1d?__Msv@ zk7=36EiAmr|xP;Q5ZC+SU&Rbo9i(fIzZTMz2wn~1%k?lz+NfVTeZ-x#(H03lrj6_h;hVGp826C%8eoIXyh#7I|2hD+KBfCqWKNYttx+9{s)|pmIJqg#;W3np@OUUYbOeeD@1v>)6LDuVu(P$VCiEBu> z1log&9*7JR!z_2;pd8(DGtZGx9n;C!6zstcOc`MprVPI*f!6xk*q8@ZMp`GveYFV= z^6kVJyp1_taFe@uP}zUk5{busxbA_!m>8ovrjxrv!MhE9!A|`%sad zNO$#*0UUA$tn1~(2tKd~kxAA`j6O7p#3ZOmxP;PQZC+W=E?U08GuZOB17Lw~36Du?t(oamvu=q#6vAZ8WZ&J>p*4=!gWL(?)iM@Lk#fj0ebi9k9V>UZj8eugpyn@t`WdM7km( dBLDESe*?Q{NGlhU8{Pl_002ovPDHLkV1m_$?3@4q diff --git a/assets/dolphin/external/L1_Cry_128x64/frame_0.png b/assets/dolphin/external/L1_Cry_128x64/frame_0.png index feeb30cb6ac22fd4facd10f32097aa7b9a28aeaa..58ceddd8fd8c37b45fd424029ce861a8bdbc0af8 100644 GIT binary patch delta 31 lcmZo&Q+lT8-dq18Yv-5r;0ceXq8o`-&K z-{Xf`JzJc%z3H0E7M~QW4fQB{g`2;g?Q4o}Z&u%nwG6k0Ab-EpOu?&cX+id{dD$8G zv9y+K&B1E3nEm8Fs;)Tep7%;sS;!&phvmXoVeFoUkuS|gH--hhe|+gYh1F3(6)Gtv ziU&Mk_Mxas(6qxGQU;T^W13EJqnSN&u5+&Hrd@MWLWVqct~c&gq8r7PxGbLf1at5M zNxFXr97v2L6Mvv`j!455_>#JNRI6?jZM`@3{q4qI9b9dy{!6oYvA$SLnC{hd$^vz- z?NQM8_=b}b2Rz(cf|&TEy9| z$6x0}1>l929R8f_Yv1oi0|B7sh1pLFtgO!YmjL>W_?#x0%_Uk4fFe6y?e!X)rKwxa zIhU5$T>Lrfo!jiWu5-?%PSBGr$YVkP5&>^0T$&*c0K|y$*Li0SYRj<$LM}RMSF79E zcI${6aDVng@m5wZ`KL~NjEYFW7mnsU+rER!;4vzc?s>Xu5FTQP0wO6GJd=_eEyJ^j zV-lGBgaH%9Kn%ixnczahf1Wj5tu)msS?3l8 zOUnc9TTPHgn2jy}wdXu;gKVY+))RHGvkXUkkbkS1SUK&f1>iR{w%2L)ww;?f?woUO zUM{rfa?#!G(6O6%)-*@_^6Ptde@6nb_gk(WwA+5{l^(7w|7tAxH@fq4z zKLChMSniD7D%$1YKY$^8@n=G_LtASX$J1*PqY-@#xcTeZzNYy0X7#;T%W!K5@_#$c6uioo7G(dLmz{wh zOKZv29IQ5r*-!4H>WZ`Od9PHJg&gvJST1}O#_nkt`O<83V_4Ap$Cu7iSREBqp^{>v zc)$Z@ABw63O*_mXWiWX=rs)(nn%N`gI_Iix+BG*NWXNOZdgERtx=~z-%i^g|Fb6-7 zr2BWkfy78M0e>pzh%{V*FR8mnwdzLE)_YUm-){WX!PTbfzciZ{>x;#N>0V8zEKv8_ z9tC}mZ#XG&z{9;Ih>1_S%OLp`jvcx}cFn#u&RPBuk{dDRi-L#_8T1Nbc1~HJ0Q>to z^xgI)@tw2-CiafBfiuY4gC?=5ZO!2UZ&*?7%k$`W^M8qY0E~#Zr5WM?K#VAVopzGCYeo zCV|OM7%))`#2_4)2`)5D&L4tyf|c9jkn1lt34jX7s~9^D_gf0`=UKzmN>iPZb#7s> zv^?Ox)dXpT+1T=5d(PuF$Yxq#Jy8cc%W%X8xqqsOmD8SD0DePbd!1%)+qs$J&N=7i z@LAzrJ_ZcO(#dzXkh(KLY?QK}DS!(z={pU-E%*!8}76pP_yA z1Ayp+<<8ixqFo;T0~pe)hxd$jU|;b3a10_s+|U#B#;_GZ011B~Y}qZ(H;%WeOE@4x2_3 z>k^^^BbiCkz(^dxhLL;$tQs%|s2DIT`Hi;#I0+yHh)l;00Doy94N1~<@bTliZ_;uK zG!2kUG(b*0sqJT=>CH$Qr8N&G97}JtTMs_jllpr17t2ZD!Uv9-*Za7P#BX`6Z%dN% z67B$~2B!eHaS2Qk51z8Kvlo{c3EtLNsQ@8q`uyLV>t<2_`osqdLNgO_$#mVZAo%o z!W{tB;1mEiE`dqn!4nzq7_xLLL*OW6d8kR6sqj}ihrlHCtd1nLjrDtgjBs`rP|DCt zUL+OLnUC+((@;Qa_#H7-t_a0SD)N@{MW+d{vYsm002ovPDHLkV1mMQooE06 diff --git a/assets/dolphin/external/L1_Furippa1_128x64/frame_1.png b/assets/dolphin/external/L1_Furippa1_128x64/frame_1.png index 86b68b5dc9b03b67dbfcf7f4926e2af98c00cf58..a9346b8dada7350673883b3bc06d2c16d4eeb8f9 100644 GIT binary patch delta 238 zcmVhc+~#i26DRA`|*rt0-0!C^i;=H=23o@H+gZ!ZYcwq{(a5CgXWEnOh ovs_t+QTXYU!WPd!aT?_37n|%9F6de3vj6}907*qoM6N<$f=!=l^#A|> delta 238 zcmV{w-V6v{tah5?vN>Ma# zG9Cya^`K@HCxv$@EOczs`!z}Z(ux5^y4%3fcx2ahB`LVf#`)X<$xe-5{jq8-In zu?Re`+J-)h^y!6W2_R{xAb$})un;%k)KR2?lx`S>Xa34K$UhVSFHC_JPKKO_EW<`* omMiNp3O}7v*y0%|PJ{gX0-NjB2Zx`6U370fuwg9gueUQg2N+8GfA>}xckpN zY9vVNkkuwrXlF{Ve{wm;+t9WL| z_D|T@FM$C}@P9g^vLLB)Fy`shX*>v0FobW?(1OPRrv9Z#&w}sdVDz?isT2$+{{7V! zh_cf*#t(oOBR7NRrkIsad`StF2!<$C9+F{Kc5z z4k!bF6@ba2X2dxkx@!Zf0>Jofu*hvfCpwS)Z)rWQ&wpt(%oQw~&N7x%$IabKtd`nJ zl?SHm6F~syIE@>d5)U?Peg?Ut2B5cJ(IXmG5IImD+Mu5sWBmf)H(=Ljf{YSg;zvo6 zcHhSJ>T4&QQYce5WdfH8YR3XM&!NaW8p%U#zcgtjsh*nVCZzv->db2`AcHCZ0000< LMNUMnLIPldHbM0D delta 522 zcmV+l0`>i(1fv9yB!B8jL_t(|oK=%OZ_`i|h994pG)R?#giu+KBNoPHtQd$H*!c%F z5YaY&`$EKue;6GW2AzNB{!bbR);1BXYFW|HLmaQ9#R zsF5Ubd|3x;?!4SexvCmE>DvJl2YL?ZjI=R}@%K|Dk@qff5Y|FEl4P3P+aCoysw1Ac zw!ITJ?n_{R1%Iy-3I_&73T98Ib&Ur>3`XZo+;QMBfR(>A={oS86ija$m5RYQ@$av; zK$x61HhuuS81F`vu=0tdz>20uX<(f;0IUljx7r=RktD4bQZ;-BR$D)IjwNYT_{G?8 z2jl_33c!-EYH`ko_Sk?T128`g7HM^*s-pAAUrVQPeSh8>yo5O%0&CAJHWo77*4TKXgVvSHgN3z;D2f(Sn2=UgBFx zl6K$5YWt=6kyTEu+Jy8UeCo_=eIBQA00000 MNkvXXt^-0~f=TJ{EdT%j diff --git a/assets/dolphin/external/L1_Furippa1_128x64/frame_11.png b/assets/dolphin/external/L1_Furippa1_128x64/frame_11.png index e513b85ca35bb849c435bfe69946f9f60ba6b8ae..2d98d57ab2f86cfb5a51804196a2bd979708d35e 100644 GIT binary patch delta 678 zcmV;X0$Kgi1=0nOIDcvay9*u^w`~?Fy_KvUHiy~{w7v8o^}5A&54H#CE=8~)B_pgD1WCH4&15r^&qHF?^gI6k?|Xdjy+2Gnl^s!dwhbT3=yQ0hs&e0(5r*j0Avs={jV;?B)2K<(Mqnn1UTjtJu;uMg+if zxPvw(iBoV5wPE>W)9?~k0fkgxJI2S=cG4oOJ-CG%-o_~XHD2J^yIlo<_g&9+flX|7JaHC}m zP7q!6{;mRi3*h|$_`{AQy|~c=7Jx(jz9i+3S~h>_%_yKUIn~ct*MpS$1caFK=y1mB zWKUHvov3)18~u(XsnfKKlkX0mM1FTtW3aR69ZlWX6o23Y=Q$n_?^U>%{jV5`juradCd^W&rc=U6O_wg=c!fC+XXG zosqOlP=9!?`#fw4e?<-Tzz&V-?i-2nBQ@0ay~}NvxI#n5?tGP7nQN}(RaZ)&{Ad5^ z=*zggwgi6AlHvIa-qLEsv4|{K1pl33J}PXL*P0>0slH5WU@-V8hF}{k4+WqQSorh; zVE=yYTQzcx5U+Sn;DUAT#<)g^y(JlH|2Q^)eIGGi*2e&BL@)&gVX29nEz=gB3Lvj1lnV}G8vqP6}4q8)*7k@$W{^jmeQUQhse!0Hq zI|YucuS_Kib1^(^eT`8CVD6vu(A^0z5&-I@YmoiC=i_&lW3p^x3U(;1VoTc?5dhEO zC$uqfoPukp4a+B+hL^YsD5L`0F+Q%glNMp^{$1SgM~u?Lae(LUbrk^K_dVMMHl;bP zJZPC8j<@{`o_{1ZHl_&PNMP=08jr!7Py+bvDp(fx=oR@K;6UsH@0dmQa2U__Rn%b-0*)uP*9`=A!+x zPtj?fk#bFHC=@@NfLzi*PK*pWU}UgcoOxVu*!YrL-~v(#kuARZN%crcL;JN2P#fq; zo%^I!Tdx7I>D6iss@-{9KbP{XUT8PmvX*A{a>j0WktR{vX10r~m)} M07*qoM6N<$f`EBVQUCw| diff --git a/assets/dolphin/external/L1_Furippa1_128x64/frame_12.png b/assets/dolphin/external/L1_Furippa1_128x64/frame_12.png index 867f8d09f1f7234ecd29027a3343655ef2360519..95d09d14beb7dc18d38f07ef3930e19d25c04f9c 100644 GIT binary patch delta 496 zcmVw;DEbYHvN&rM9&={D}%zC~OW1CnW{c}a)RR@E^^95+iKpH)VxVoi|JRUUv47-%(tey?r3H9}%Gco4Nejf97{sbRERT*yZmzHg>p!=jTyTJ?102W> z*_-LnT#<=;+s+vPApowK_Rjzc4_4aW2%zAd^@GKmMl3nD@<_La-zVZY)uaLmXw7Zw z*6$K?1Jr$BcQ1#_i6yiE)39}=+~Dxp7_$cD4ikQ*U};9xVB?fNjSlpl4>1>E2w*$lkmkb?c1_?>b*0wg%~XJl$8;i?ug m;antEOgT#oB-iIx2mA%KZ=_mX&eQh*0000um znV4t^>=I;4*DDZ$U4S!S24o0E>^Xf43?49CufSt4;>tCNYJWuthElV%uJr-Oh%~PNW_kE3lzD`pRgm$0<@DkPca1Z$W zQU~Cx>Hx#4QZ-%!niw|3&F3b>@AX@EZr>uTngL0)*S@3$bX9eX5y#CENN1ga>X<+a zjH+shssB~rEq|8mQQD8wt8{=`q4L#xb*!TQhbCl?%Gng9o~ zL-J;NG*=|z-gZ+mzz4v!z|`+tDK|KLHpZ+$xx<8CF=?1lHP|?2NUH~f=LO~>6aeNE zWby((fGm2%{+9s$5asM88j}M-ijM>O6DK)fX6b8rNX~vk>YZ{t0>nG5V`Lg9{;K9O mIUn!HiYe!zgXsD^b--V>Z=_luZ;IFe0000tJCrz01$&%hZuaRhm7f?S2ao!HJ&lUu;|YLxo`@1poj5 M07*qoM6N<$g5zp2y8r+H delta 106 zcmV-w0G0pJ1kwbMg97=&v4wE~Tsvt2(tbmosxI}HZJJ~PxxK}J6xJ24CF5WM%;`V< zz(^&<_woq^E>`xJ{3L+4)b%7 M07*qoM6N<$f)wpEN&o-= diff --git a/assets/dolphin/external/L1_Furippa1_128x64/frame_14.png b/assets/dolphin/external/L1_Furippa1_128x64/frame_14.png index 1390e129757256e22ba30c74bc4d681ac4ec1ed5..25b4ec565358dfbf2ee26bff84f53fd2f1798084 100644 GIT binary patch delta 627 zcmV-(0*w8O1&jrdB!5#$L_t(|oL!SaNK{c2hQE8?vqqV4lpq7cDGFLdj=L!7J%fmL zu3FowaMdb7w0W&sCPW~$aDt#^?jpkGxw0V8KuRcZLPHJ1Q3hw6dGDPT&-=#dEWi7o z^Ph9?xj?^2fh08KAji=tifpz3N2J`6;6e0lT{rZc8+jF*TMf_S;Z*SByecoW+LBd^$iq_wXusXl6N3_M6B#H1<=9qaY;7iz zdjD3+fOnftDC0YSDh7OCD@vnb{jHlDJGo7;CkOW}1KNk7L#$x{O9NH`Hhe;Wb`97* z_Gy=ElW919_%1<8BOTq)s{!$_30SWHIYcCo)ljPP(|=CGG$Il>i;--|>Nq%PKuu+p z2Uu?QF^EW5t;+KSDbAtDXaL)0bQ!RodXbJV79Qb;luK0&ptKv_oAef-7}tmn7T2yT z`RJi^tQZ}*Iy8r$MSMggl-_Vpz7FPHI2X_IN=;!s0jM_@GME5Zw}D6p4AS}fhw{xz zeYt6~J8aTb#BAXeX?VrykOcgW=H1!Lp9}~%(}8lWdQ&l9A@bTh18O)I_uim<14{6= zF9#zAEaCU$?i}`~fdZWHQ|80xCCEoomxjm^fX-6!gl6a)JR`tLz&~1h3VB{;Br5;_ N002ovPDHLkV1iGZArb%p delta 626 zcmV-&0*(EQ1&alcB!5y#L_t(|oL!SmNK|1IhM)UmjWXd6K?a6X6tsvOcTv(EgNSyn zTHC5{)ha=>xvg3zL?E?rf}myYBEsgnvLMhvN+@tbLk+`G24|eP_r5KzcYZp{=X=jN z-#Op=0RvKwdYF)gG|iEhwpxHA6$9P% z1KWuhyxVdDP3-mGYJ`VN>(>o^ zbTQ0GF*bO0cpfi>JR}9`3-gl?M~g9^^Y{Wln13<~hJ zKMkWXSjOv3-)S;`4o-N9_`_%AXG2w0la>L@6eU;9Kk5e0@UiOTA6k0~dGIz1IRF3v M07*qoM6N<$g1-?Ww*UYD diff --git a/assets/dolphin/external/L1_Furippa1_128x64/frame_16.png b/assets/dolphin/external/L1_Furippa1_128x64/frame_16.png index 0dec63de6910bd2eba3ae8be465b2a5c1d53fbb2..d6824382688060103df0428c9e02b89a98097560 100644 GIT binary patch delta 490 zcmVWj2*z)ID@ zd4#?KZ^43^g$=1}AV8`IL^GhqQjzQ`_Wc-c+$P;Qi>*)RT>tk!zk}>nZ(*?mWWC(9Xf@Rvn`R>&&d=Z{?cEtxub`$L zcN75j_35yPBY#biba@CcZ(#zApe_LCz!=1)yjFWxrl-1&up9#k;5W2*{i7+hQBzmC z9P-gpK`eMZfSRH;ybpDRXW7FAaN@5BFK&T3vlgz|kHFUg=P*gM1YDI84|NvtC$+?yaSQ&4r3aqsj4o!UdS7OYP?y)ad`3t zYWUs`duafeJ<29;>Rk8U=Dp-9;H2K}SeZQ9?wAar8$cRfhLKdRz1$uNyZHbPb7CpI g|ITWAB>xNW4*+w3T!$+ZvH$=807*qoM6N<$f_}{FGXMYp delta 491 zcmVva*^Z)v_vV^ zN8k$Ff(FG69a88(fRrr|ae?BMg0vfXcRq^o8aq9IGoz>X&%Am6n;`oY`M*GYANT`z zBXC>ml?%#U;M$`!-34w_>1FsQJ*9BKat~lc7vU~UHWEHTM1LPztJ-%*ny^);s(o5% z!fW+XHKi*x@*a4e52=7?1sno|FbC*WQ?3@=>d_4Ja<&E0AGCkIHgyk4W0KcHco9|7jjhedB z<&ck-3Sz;_0jMcj!@E#Nc#=I_0B8P;@aztlGi%|7!w7sSa1N71OTbk*)!w9QFElcC z0SN&XfXxT944b4zMo)pSbdXv0&5)SYTE*08=N5>BH)PO2O;vT-^+H|&RO8JUPQ# diff --git a/assets/dolphin/external/L1_Furippa1_128x64/frame_17.png b/assets/dolphin/external/L1_Furippa1_128x64/frame_17.png index 4fc9ea1d2823270e5a04595d6715f085bb707b85..1a94e80b6199539af683f85c3d3e3ecf338518c6 100644 GIT binary patch delta 484 zcmV)27qVY-n~L#Gd_WK67TD`F`H--E&$(+NF*F%-H}j zVOD_{N1I@{0ZihlSE}Z!+Q?v|h3ZuO6o&6%XAHm}fYAF0t!DsS04E_&fakzCTDelaDF^3{_nH9l0-Zb-A@)uwWXhpC_=u9{)x9-!L5Rzvk1Knon?3gOG_U?D+>!k zW$7cp13054m4wO?3q~oNF{4c!83;ol8cDIMs(+5x=WeXK^`+Zx~t zq|LjkoycbZ+clVXD(OF&0^jRdF4_~|Wi_4O`s&I>CG7kKFt2^~T=lFW{VTwf*$se2 z;7MHTNjH`JRu_60E8YYiG3E-6Djk6>j)}%P?4T~PeP1)n`{@814>OhzAg*(Hd}-;t zdM_98jcuijVvw>*uqrprqAa-s*Z^83SRr(V9Hpsyw1$LHK2A+@J<)#MG*|VVd0sxT c)O^+c2e&1Kryv;?s{jB107*qoM6N<$f_d!X-T(jq diff --git a/assets/dolphin/external/L1_Furippa1_128x64/frame_18.png b/assets/dolphin/external/L1_Furippa1_128x64/frame_18.png index 7ab4cf607c4e5e3103060cb2fde4a6eff34d5927..54615c61380acfb0fd53e4fbd7ebae5fa5b50963 100644 GIT binary patch delta 432 zcmV;h0Z;zO1Ih!CB!7`fL_t(|oRyQkj?+LCMvo^376~DGilnF6jxs4Jc?8~qa>J8A z#WqM#ZUu&haw#I9Kq7)-7YPwd2^)uveJJdV9Sek*#+sx1^WD#L6WKq3zk~BWIEf&y z!KfEu)_irLYNe`eMDmZePh#NzDE$+7(*wQ)6vnkCH)>#W9 z>{Y8{0>Hd$&?8{d0ovTEMoQ^tJ&iT+^7TR&*)W1N5B10JZ3GwG)w#>)SV0QUd-hWmtV+!v8IB1muP_6*V7OYc%!HB>Ya^O?VkHM#dr8=&QF2xT+b?c^X zQUzuYfc36ef-}|Aj`a5cIjgAS4q(>o0^qm$={&a7rPhv}={VL19B{(USWq{`k;Tr_ z6u5G|;PP5$+N6M4=SKnXkxmV@+BLCRk8;pU`AH9KBPnQ7ssNaZF6R(MP55=r!H!Bcgn$;fNpYMJ%HPU^2NRIOCCiOBxZ_Gt?IAEkc+Z#ux2fWk0pa-#+|M}OY0BQ6+&Up2Qmf#-00 z1XO?!Jb~;%-7f>Ss^_hg65v*9O!x(Gz40Kd0D7&6`IP}O!W{s{&2W>JeE=bvKWRuD z>{X*<1i-9q&|_fK0$Tr7wUpA&dX{S7P_ zhcn8Yej51u;eTD#GNteifW6LDmMeg=0qZ_MZ=b*ya^O?s$KbQxQXR&kOYy@%-MWcQ zs=)Liu-+BRaH@LNlKvhbXO(mu#AiKE(!a&0^Tbk@8XY^=VX6_>;}nz4>ZUld*m>Fq zuH7uSywRFAD`48XC;&dvs-af9Cf4gw_Bts)>40qlbtg&{0JF}%WaDjTUq<~lDB`mJ Y2DL&$e=#L2n*aa+07*qoM6N<$f;+It$^ZZW diff --git a/assets/dolphin/external/L1_Furippa1_128x64/frame_2.png b/assets/dolphin/external/L1_Furippa1_128x64/frame_2.png index 9fa9643450a658ace90b4a25ab06eaeaa5cb4bd6..ca7cb9dbcd67ed44fd75624a754cbf8c20a15061 100644 GIT binary patch delta 381 zcmV-@0fPRd1Ed3xFn>W9g}+%)D2z~8n3xE?4JS}aOK%`Yu(Jd^uV7E7g&x3Uxq&f8 z?L;l4Fmat%=_p4?-{W;0sjmb(_H{bU;F+Oy-Jbh6L10Ro+i*G zm;+B@CF#wRqyTH4WD2nAfp36{2PR8?gC+ojQL_XgfZ_121b=M+u6vuMW>1oIrCI4C zcm3m^e*#RXJ0NwTlg`gi^`xvH)ruWxHu_Mial?UMj`gLm6`Qj>AQ55-+iq!0l}iTQ zT3jrB?`%mKQc_3&$PC22!q^R91Ne-+B;qOzKRpoDNlu43cp-vu6FPN(Dvy;3gl%eJ z@$ExP5`8)A=XU+vh68t!tntde2ds>7x9kAP*p(Ns0o-o82=l~higw*n>CHCuoOvJ_ zH*Cumzz7sjv031H!AKT6FDjquGAP@3N3@*veA3?1i)VR0B&lq&lq5$iN=7aZBY<=z bD`LMb95lD2z~8n3xE?4J%MeOLrhku(Jd^w_tCl1unp3*nu%b z?L;l4Fma+rXXMXZi<$X+*n+P-dH22h?lWSs0{$5=rn>-=zV`hVy-1Pf6>tgbo+i)` z%z-DdlJx3HQh+s2@(Zx)fiHlH2c}DYgC+ojQL_XgfZ=dlf`2vu*S*bBvnNTq(ya86 zyZ-jiKLMuH9gw=vN$2OMdQ{erYQ+pR8@(&lq~X91$NE&*ip^ObkO;AaZ8tQg%8)^~ z78gU`I$KhPloS#GG6Qk1Fm?mj06tD4y$lzAYT zG;GTjzz7sjv032$f{`qC{;0fum%-SrEvn_L=au%BI-cbDkfidHr6f6GQ8IFQ7y+a! bS=sRimXkXf!77s600000NkvXXu0mjfK0LLt diff --git a/assets/dolphin/external/L1_Furippa1_128x64/frame_3.png b/assets/dolphin/external/L1_Furippa1_128x64/frame_3.png index bba35b23b8aef63eb58f5d4272207d79bb70ee63..5a18e3cbe63da2dcb8620b5baa321debe837a56f 100644 GIT binary patch delta 369 zcmV-%0gnEa1C;}iEq}3YQ$Y|#&wDnBkr2?QaC#d5fm2fQ3H$|RpyC^-Xb=@rDCu}q zl%cSI0x1?02@)d4Hp)KY^`Usq?#2xtz?4V#&d%J?R&u>+{xeWj2iHJ*=>1aSH=UWQ z<`vv7JhiW(dQezas;7k|0^BMre*kt0umtE8;B0H&`Yr&EGk<6RszR|3K$FQ>)wg+$ zZt7{VEl+@h0%)-sVDvCfT&P(4%aBMr=_%hWW`ha+}&!v?HJ zQ{s$%dgaGxPc{0h?Ly`Q00ZWsOd>9MG2d9&Qx`GZdD>aNG6TNAXwWHM_7>_mrb#~y z)s<~J<>Vo7k!o{xqI&EiDLw+s$h+JFY&c7n?`o^h(<{*vPj#Gn)C_n-4pwc$q2Vgi zK5*k^;Bq(Lg(|?LI1~V%DSD{ut4FN5j~shjmfviFRRSB!y53Uc`ZxFs`v?|)Q69Mq P00000NkvXXu0mjf%lWM` delta 369 zcmV-%0gnEa1C;}iEq}dk6G0e7&#p~kBn0#+oIZ`;z$qzt1m1!&Q1J{@G$>W1P|{_o zC_`ZZ1yU?15+p>7ZIoH!@u65}cCrO8z?4V#en0oq6mt8O{AZvj_HTjuz(={nZ#uJm zB}Z^S^OU}U;&EnKsh($+2yid6`~ld?z!IRBfs4+(r!)I|&rUNn}k%z!U28Z?T--a;M6H0h_I zy0T8EoIC-p+G?DgsGhn=ijM#@+FkYlD=w1dyISk3)Fpc6xsFqfk^ygNgH`KrV7SS& z58SyMxZZB>LJ?q+9SVTYWHr?FO%sdeBgbCH@|zA=C9tuq%Z`Gs zlwP`AAr(TRg8~i^$=m>;RYHM;2`FrpSP&&P{Ps}T{_W)onR4`I-n@B6EW`4j5yniG zh&wMU(fS zHocalGK#}rwMPtK*qN`+D#-|duhVx;jx9;jsh*qYRqDUp^Y?%S15Zd37#HpNg|1ab zX}|VB&u70?CE)EIn5?-v^B3aP6ZiJiR97er=7Rk6xjezAT!!Q74Bag<6*6A6b^1`96#Q diZ^95@B;2xT06h~73lx~002ovPDHLkV1nTT&a(gj delta 436 zcmV;l0ZabP1I`1GB!87jL_t(|oaK_gZqra0#eet4P$*}JfH zbh_~hObDqP9m)eBxo?0_L^~kWr4`9kthNHXz4l?SedFX6IOEZG&OP7xt`VEC{AYwQ z(+whzwAUWdwUlZN%LzPhX{=7c?6)LNl9rM_R1$JYy01w|_J0we3k++I2Y}8xqFpt4 zKh~y~l2k@)zZ~jb@hCIz_3JJ(pTP8TDnkI zWsAs@(2ZP87=bJuS2ouNjO1|JANO&aSomjajC}M8#Vu@W;!3R?k`!uFlD}nBa_0Lm e0w|u9&BQ zzwZW~EF`H(v-sDoADRIeUd(q|A7cPMPM>tgJeMSW(7jsg-rvpo`G>%gK>$($lRC7h z)cEG?`jN`(|?m6ITk(v&cb!c@X)oflo1?XAIyp_r(!^LbnM0nmhTjh4`DJm2O`dU zOUTCbGspma9Z4cpxaEB+HE0FqlAH;^@&#}*CIs{psB*Rg*abfCg$R9OeHG8bQ0dCW zx@guwmB()6T3`gS^jy<@A25=`tsdp;?je|mwQY@pbuVA_^g+jk)_h1(tW8PvicQH` g$ioPr-fFsrf93;C0NL!3UH||907*qoM6N<$f?fdB1poj5 delta 438 zcmV;n0ZIPY1K0zQEPs-*ZWBQiMbC^ku_GbYMGC6eJ&nHrwoI8nz&#BeiZo6PQ|nB9r(U*MHT@4k26oiSp)EdLoWCRqbjs(pZ? zmgrI{B&m`l$#MdZ6JTrRB{~Ij0Cba_Bwa~*yYP}4;1RIjZhyH0*amio9{dI9Jy^8M z&hNW{Ckshx(k%XU>xX6lh8Odl*2frtkJBgJG0!DQA9SzQy7zapdj27>WDtOqz@!c> zsfQ-N)37db4ktwVEF<#8506}3RF4U0qg>w_do30Q=|;zeR(wcOtaVBCign3Z g$ioPr-fFszf93;C0L}f2NdN!<07*qoM6N<$f{oY6-~a#s diff --git a/assets/dolphin/external/L1_Furippa1_128x64/frame_7.png b/assets/dolphin/external/L1_Furippa1_128x64/frame_7.png index 8be19d3c8bfe5da3d5bd8a9f4ad513e8b2f75163..120855f61b750f24895b007975e5b61e7863b56b 100644 GIT binary patch delta 343 zcmV-d0jU1_0{a4xEq}320#Oh}&n~NCVvM~7_BM2uP+Iy4euAAP`X&B=iI#S*l_eHL zDNG<*fQgY!MA;P{*Ft%3*v1cV%9FV>_s+|U#B#;_GZ011B~Y}qZ(H;%WeOE@4x2_3 z>k^^^BbiCkz(^dxhLL;$tQs%|s2DIT`Hi;#I0+yHh)l;00Doy94N1~<@bTliZ_;uK zG!2kUG(b*0sqJT=>CH$Qr8N&G97}JtTMs_jllpr17t2ZD!Uv9-*Za7P#BX`6Z%dN% z67B$~2B!eHaS2Qk51z8Kvlo{c3EtLNsQ@8q`uyLV>t<2_`osqdLNgO_$#mVZAo%o z!W{tB;1mEiE`dqn!4nzq7_xLLL*OW6d8kR6sqj}ihrlHCtd1nLjrDtgjBs`rP|DCt zUL+OLnUC+((@;Qa_#H7-t_a0SD)N@{MW+d{vYsm002ovPDHLkV1mMQooE06 diff --git a/assets/dolphin/external/L1_Furippa1_128x64/frame_8.png b/assets/dolphin/external/L1_Furippa1_128x64/frame_8.png index 24b61edb69d8e7f6acba565683ecfa7d870cef25..521a8ec43ecfda3cee557c4c07ff7c051c0717da 100644 GIT binary patch delta 290 zcmV+-0p0%l0{a4xVt+8rj-F=z&U{TI_QUYM!FSZ(2anpM0g*1Gfm|4>3A}_ApOT8O zVhbFkf#?c|<^fm$OahIuBt3ZzB>+QL5S2ZEB6b=P0HqhL)7XQ0UF$&sJP_==lQdH4 zz9o}vKDB<17_{({W0qj&OQx-t=A@qQ>!$^CD3>|crg6Yr)_?C+>wp2cfz*k*tc|I( zV<6dC>nTBfqmcu+dzJKjpGoVcr4J0xkG(|(c+2~67l5+~uuMI82dXp)DiV-_mLuT9 z1}%p`Q3Z2IGmY1+r;?=CQkjBXh%;7!D4dS!t8f~U9XCnT{9pC9)`Twi^rnRQN0W1q7evDQnnoasU7T07*qoM6N<$g8ll5K>z>% delta 290 zcmV+-0p0%l0{a4xVt=sBuAct>tDb2H#PCA3SQ421L4$26D$xP2eR|d`c=p z#TGb71Je}{%>%Fim;@eUNqX`gN&tpV5S2ZEB6c1T0HrsrpRot^xYmOLcp#W}CuyY8 zeM=_Ud}@6kF=*jC$1K6lmrUC%%}L$g*G~)PP%d+>O_PARtbgyTHUR^011=#G1`fbf z+A)yqtj&}_-+1HzZeJxm-)GXgDd_{l^J5>80p9XH+y&rl0xVMx-hnDj0!0E+P;vx( z*r4PPD5{_jX{PbI%~X=~S}Id83vtFOFon}my%o+wvg76vHUC$=y%N~a0oyLPb&)k* ot!L8*O1dRDQ`L`i4UQ6S==NO2U$pJI2`ac;miyL#F`^XKnIqQ7GP57=byeXw_RxeX$* z7$rT?nKsIiE%d2Lo$9ay?PU5Y%>zJBZ7Q{s01lTcNt${PGk;Hh0M0w77cT(g4$Mm6 zcVsq(`jn*d-fCQP1W@HB$!U6H$M6i0l$*>z3DEHB8>^8deVnEgUS^rK5+XG10%C2e`qz6r1fl7xVGX8AW7c5q~!#F{W~vRh6iw|MoUXZ zkvC>Z`TrT4Lx0+khhL2cr2((Csl#-Zhm8U|HWb-~&7POc`!8h zIE#{wwN{Djpf^q1TzdoPr?V$%5dgaHbE%&Ou(w=E(#(UDMSu1Qa55-8eFT^cU|s`X zW0Nt`nrp=U!rXAPw6q$o=0Rdb z+tvk*fo~UWH?BD8uDeGV7@I`-px0cIe&(yneJkDpvh3NX^c(`PbL~@?VF1q6WNFSQ z@xsh0zn`foq<#;6_|th%8)$=tMBSMm)(ZTQp~N1nw|vSXmO-k5JAjX2F0S2n0{|sg zF$jJ^Bi%~XYFIi+QWb3RDU;XGq~punUU;Re5%DkE`~gX^2^vT)H^HPB))cy2nn^(i jKb2HTZ6s_ABir>~p>!dW_5nSG00000NkvXXu0mjfELF5? diff --git a/assets/dolphin/external/L1_Kaiju_128x64/frame_0.png b/assets/dolphin/external/L1_Kaiju_128x64/frame_0.png index b316a8e325dc8eff179ebd7e6ca6354ca1cea594..ed6f4a71f529bb5376546faa292e965a98103f33 100644 GIT binary patch delta 550 zcmV+>0@?kJ1&#%fJprYWK01GC46)#EdVKiu-uL(KA*LYRp|Cu3iVgv10CT(ceJA|JV@bq0G~TRHUPK>tw$+{0r=#5QUeqwO0}BAO7AdG z)R3os(g#HnLioeSL9Tg#)Sm_dIca1|jk1V>VHgU_lhp+d=Rv^=awdOh=4jo%@ zA>$f{h`q^<^}F?l4gG#|02IFg$i8xtaK{G4$K|4in(NjV%RVTkyxg+Kj^&)^P3rV= zcv`$c=gLxf+5;PgN5w>Bo<0B7&LwT7eRl3axDPCZ)?;bKr034&V-U5Zd9>9N3>cl<@%jfHtag@xw)q#fsWZE4BXvQX;vDu|vA8Y&KP4Pj& zlws~RRA0Pv_5cx)hM1g84&{$m0#N`BOws!0a$>z`wE+cLSkLP<5gQ;r1@zbSh56TM zF3~w)pfTb_sdf1PAgf1AC4FUgOOk@rXsEG**g)kdfJ$cX?4*CzN7IrqKeMJ$up7nc z&|TWN`UJ&RmPG`VDqSBL$EF`55)ZtompTEFtckPLKuj0@?kJ1&#%fJpm<=K01GG46)#EdVKiud*Ao_^AJ;%?oe1B-JwAD0=E}9y}<4T z^aAx?g_WL?UWNLr@PUr-pd5R#Cp<{ucmSU}K-K}c2kl2GhynQIdr}7!CQ7xM#7c7* zC}}9rIO&5T2_gL9;~>{OKpIa2fxI-cVjGTW7T7|m(-MRq^ zV#v70A!2u;WBqR9VN<`~7y!j@0J5)~B;2+^@o}l7q3*hkg^CY~NiV3I)&(1yw_ko4bek?6t?>AOy%W@Al`Z_hWLb&Br z-K{+!0LLh=wLu}U3-EuF2CN`@nQ{jKTCquIY-VxC$J)AhQ+!Y` zX_&nYwHNQ4T|h*nDJCxyxx(>kAPS&~DOulKPOO!zJwQ?B*9v-7#0H2@0sVD-VeWPM zmgpQX&>Z%n)Vh2Ckd-5*n%=UrDM?Z4G}UNPY@m7+KqWJGwo`xWBWcN)n_kr@*ooqF z=q{~aeS%^$%K`#Qm9GzvVbc#0i3i@~OPzp7*2LLbASM`>@eNTBwwz6^L4(_e0&Q$u zAOi1@uYhG010p_-@{mj=ZzQNl>waF!Ne)R?q%A>BViAc%6q(U=6aWAK diff --git a/assets/dolphin/external/L1_Kaiju_128x64/frame_1.png b/assets/dolphin/external/L1_Kaiju_128x64/frame_1.png index eb259d9932c1d60d9478ee3d1690c342ec2fe4c1..f2dba5e872aef3e103459098666b5ef1327b137d 100644 GIT binary patch delta 30 kcmbQlI*D~d4U^adeiv>PtIaZbN(?~Y>FVdQ&MBb@0E80=U;qFB delta 30 kcmbQlI*D~d4U^ateiv>PD~(@#iAl=Qne;EnR#8@X`3LP z)#2fs_nvd#dmWJ&TEc*1vqj2bsi~imv|ip3G}9J*OMm?8DrgG>6l_|E{#%i= zX)gSyBA#dg4{?IpBDkyI%;DU`R2B>@ct9Nb^Hbjjz<>glJpC$wb_E!Spt{n#jVPGi z?PDN>h~=e;(&(M8Lb^+)TEjy@=O_l9g(rI+abRG$>O`QVzF*@X9_#tXM)BHX8TbSA z!a%lJoZ5?l#D7lKeRTRv$!po=+0~KcBpC4QzQ6MamqTz#1_J z(PVGSV8ttySA0&vj~*b~b)z1pV6h7dgIf!0z8ouo-hX6*iVu=hf4ga1U%P%VH*Md? zi|lvEk~njDkdze5>Q}=#?c5%b0UlbH$6Rx>3X+N{s$U5Q+0rj0DJcqQ_Km#@t=WlB zf28wE=bq&4DNQ?j{oCdo>%f`psV=AQW5%x6IqV&=6{jpXbjjV00pjZ@1cvtIt;VN1 z%ApdOA%BAb4n!AHJL$$CCwdTjUaA`)1&PSi6ptO(bX+!YqQN~Ni6dN`l0Eqbqp%JF*3>W5lu!J|po4(jb1 nu_}pLH5{t#8jc@n9sC8kUN>E1qmhpQ0000R1^gvS!Ip*Sza2SS z=E8qE;;A+;gA>#i!CeItdvjB>Sun8R0deTh&wd#K0}5F3^rHaU7GNNP>Pr76qTtPT z9|IvoEH6!!#&7f#(p@su8XgL|$1&&x+~0AR;h{rSCjuq)-8%Q~o*un#6ffPAfnPvB z3}u_e*_{|j?0;ly4$MuIytZ8)UK~q~f&tI&`!heX9D+--F96`#HLubOhT8d?F2E;0 z{{}Fu-I`emfbQwh8`hU!6Mj+_^p`1I$>LCtY*33X+N{YETIyY#bDlloSOt2PR*I*6hS* zFw&`|llSxXD@{9l{mX_NE#OSAuP&$W-V-cCrS8oaj#Md8uxI6eJ>3Q#^TCb8*?gkp{PbB#v-ZLRzV*T&bxl zX+bjJz9ht@7Z|Yrbi5-D>S`*{d_(CmtT?DG1colZGeOd8HB^pUS5^bnikL@}uoKif oHDXl~wQD$3J2f0XQj7csxn4J2Ml@9H00000Ne4wvM6N<$f@mKnDF6Tf diff --git a/assets/dolphin/external/L1_Kaiju_128x64/frame_11.png b/assets/dolphin/external/L1_Kaiju_128x64/frame_11.png index 4acf449722d5a0116b03198c3280fc26f60c824b..e4a6d1639dcac25a86ff537e56dd863c50d89d94 100644 GIT binary patch delta 475 zcmV<10VMwK1n>lqBmp;(C0hdL+>wGPf6xWW-6`P#(;NV8zXE`4^iq=ar&h{JLbf@f zFeB9(g_0x#I}la^NQAo{76QWdOwk+K>ogOV8?*KGS`G{((eVPS9@OW+V9x|N9<{I@ znh`KG?k~Aq00x}vPJo``jq@Z19zHB42j{;{?SEw}fAl{s z*ER!ONPvgKcH?pL?*0f}`orONGXP0a&1SS*T|Lp3VnrFBl@}YMdvBQmTFXZ-1i3h+ zS+ZF@|GYZ!x)`Sv0a6!_Oe#%6pi^hxZinB~zqZ!=VFSDiy)@A0e7#x50Jm8Rz*{&x z2eGOBat>05wt}%sF^FXI+H!7ie`O=C5@DeaacwYetO;Oly=Q0FF6EZ32*8ZyfV6z!U(9`5$V8xX5TTo?4>WN@7R^)MIdZ zY~T?{72Q)SFPnL`=KPd_G-aY3%ri8a!hoy17uRuuzQ6!V{`P$oE;3?rNd_0|;(=|K zaW#vgcGcE1CDkQWB&3rit3s*c)K{`?6>9&0fz*GyZD0V~vF`?wM6h==e*p?oOB;ac RD?I=J002ovPDHLkV1m@A)_DK` delta 474 zcmV<00VV$M1n&fpBmp*&C0hdboRNYke|PES?v(I=Y1~WOuK*w$y_6*Vsg<&lkZn#V z%t*CHp(M$`4uq8e65+0gg@CXC@7dY)_@F2+%Nrhy2}zn% zl$VV%`Hw{*DcV+)mkp*lKP>}Pn*e0j8^?SMFaMPl{3blX0Kb%7 diff --git a/assets/dolphin/external/L1_Kaiju_128x64/frame_12.png b/assets/dolphin/external/L1_Kaiju_128x64/frame_12.png index fb9042e691b5dc04f902373784c863d4e8edc3b1..fc62957e288de52597a8003568f65f01e128d02a 100644 GIT binary patch delta 559 zcmV+~0?_^11la_TBs?HVL_t(|oQ0D;YZOrwhM&2aWFw-Cf{;dbL<>8`CKl?fg_=g$ zS~0GFAW5f%u!EL1{)6NfXaqsA*-?>T6n}SOHmku?U7q{i_ndnU2WeWpfwZ~@I3jiF z2?K^c;QR%`K0v>M%6}C;0AI;M07*?rQl?*$WB?BUhjg!p6DED8mF~V-hV9XB?W-ul zi~gxVQfzzGRZ-Z(;%eG26nU(uENP-sC>}wy67G8B#DYM&F=@w;a8Ko^EIn=7Cx4|V z((#6s&wwF&00SOyqNW8vKj)vAKxOHhw&x|JI8FnVHMdcZMD{G8XW&IhCxoN0GA)Tr!Y7nT??w`Mm!AMWoQ1Fq^`vf~>XK*JlpkD^&ln~K3Dckv+4TDYpAG+WKP<)*rlRwSg0&0LLU x&#He6GBr9oz`&u1o-lBboTwKJlm6Km_zk}INq)uiw8;Pf002ovPDHLkV1g3%{9FJ4 delta 560 zcmV-00?+-~1lk0UBs?KWL_t(|oQ0D;YZOrwhM&2axDioCK}aJzqJ^De6AN|LLQSJ= ztr*uokfhT>*g;Dh|3UH#G=iYm>{XFq6n`^GHmku?U7q{i_uPBVJxEjP4WyMlz!8Z{ zPZ%)t0p~9e_5u18RQ{{*0r*B50!V5~l2ZMaBm;N=I3#;LoG|V)t#tRzGL$d<*1n1& zJo`@tlA^p;T@@F5RBTQ8g(8b&%aX=Bh2k;T<=rAFBN7DC&567XG51xrW$9TnKYvoP zRwo*{d>RbtLm2RYlQqo)`Zf2|1S(74wKXRpMNtx{tl9N?G$I*r&5guCRR`TUkfiLxH8|2jE-SUh^`K<;rtNnKf3;`&_~ zAbkr!K>N6d0ajuFXZl!oGr#G@qC|sZKSwdhX%*ng6ZbR*C#0K$>iJ<018Mh|L7*C? zs=>f8Es|nH4r0Jn-HW$_DFcMM_6kedAK~5s1AaSu>B}5pTn_^q*`6zZx98-A8XU?3N zIdcZ-u|@~d);{n=>@zY97{4k;nt$0bkOiPmKZQmz)hfKR z2}B9>%Dn>n?h+(3a`9?XyiQtE*IiJQlk_MjNe225H7(TF(p?yR=>xny5xKj7)NiY*oL)9d-*zPf zQvo5c@jYz&qkm8NwNd=U5CUM@W}ojXp|RDKJrH#`{{2$5Z?mckT@0P~wG?o0x` z2)HP1u$@3HP5Y!9;RAYb3^vNJ}dyNZyddGAjxq~aY@c* zxOQ6x7`y@?PwRMq0k*mTUinz(Pjb@pX^EznelB8=m$nd>9{Q&-c$Q8A#j~>k2JTQn zpk*>egMnEZ#A#a{#DK3-&>iNr22l1#7^0}coGBQ5oKFC5(7@L+iU(V+ldG#EsVN~{ zs5@2bBQIb5V}77&dk6-O>~&!Bwuf*dU1=ao4FCSjUtG^K^IPN9x&QzG07*qoM6N<$ Eg5661H2?qr delta 567 zcmV-70?7T(1kePKB!3r4L_t(|oQ0D+Zxc}vM$g`Cun`X}NQg9OSArs45KSlm8;M66 zB-bE9=%^qiowujpC*XfTkdT6)@B$4DauOj0iHGefA;Q?a6x&+gkK%3;#}uCO%-or| z-^?IA(Xb(H>;s-ieTK|{VFY;pfp`Qk8bNVvL^L)c7#lGbG=K9WK(6&Z{R}jmt5tj- zJCHcgtMrQd{}MQlY`W~k>tveR?yQnf(&JE)4D=ys#!z3$s#u73G6S-mS%pa`9i7RZ zAIJwtCoGt`)I9%#575m4lecdTo`0Qo;NvX7>e{iJ2V9QxO3Siw zj_Y@1fWd133balH7+|9d;8l)y{<=;tWD-rz|C+-fFIyolKl0CD@M1a+l+H~B7`V$4 z0xgg$84OI(AkEh5AO?JugYHh=*Z|7^j3SgQF>Q(lAL|o<9W?N@fYQN+?Syr8BsC?Z zi*>7NeK6?MKNSY5ws(MmBYPX@W_t)bw3P<(q_BH4{{URiGxJ+Ft(E`)002ovPDHLk FV1iZs2G{@q diff --git a/assets/dolphin/external/L1_Kaiju_128x64/frame_14.png b/assets/dolphin/external/L1_Kaiju_128x64/frame_14.png index 91b4660e6dcf7d3febdbd819e202011e26e330da..e56f7c6c4655dc646b42495996a9924f886e9450 100644 GIT binary patch delta 569 zcmV-90>=H@1lt6VEq_gG6Hyd~pShVfk*bV>(2Zn77u_jt;zCUXKe|z}R;+R7s_nA7 z%-)4R!TtiRAXMCB)P?TS7NLS4NkMEaghXv|T4(O-VkR_=6wm7LaL#)^?zu>hHE2ld z`+y^2mjN?i7y`~eAQ%D+M^O21gb%=1k^n$bOOll6k0cqu1Ao9F-ml>V(U54RcTknJ zLhAbM3~0FZcIJ9v2Ev18$)=W#7t`fEDyBQNQAuG@(sVa#eHX&Dy-KpZlAtWzn#odn zB^AS>^rV%g6wt{=8a@vOdo>{E0jFwO0`#jnYsxB0-?Y<|42LK3y8!RT0{Z|ANbJt#jkNj?0u|KQ>AYM5Ns49b`aQkjEY8RUh;tUqWNe;q;Q~Z?V1MN9o#ff+6nrQFEUz59J(_A< zP+XS{^4z#510=5iDAPINVSx1rz?nbZ+fF;Zn5}4J>gOZ|IsFs5^3Xkl!3pT4pn87X z!@zwO5U57JYA`TPn>ahGLl|&X_oBXTU;q_<_&y33m@pNCi*@n9CT(2RP@JsWUa_T~ zq%{fYQZmb`(Hi*bAIpgv-99jIBxJx0j9~}v-9UjD3VrYw&saf%u~wfP00000NkvXX Hu0mjfcxVq2 delta 569 zcmV-90>=H@1lt6VEq_aE6JZpFpZPLvB2^g$p&QAFF1l0P#D$s&Ub<1TR;+R7s_nA7 z%-)4RL4Sc(5Grmm>OyzDAXM;@6vWm-$fzw&>*RY~%)};<; zI3jWBdj*Rsh%I=lzPbfz{gDJ)8w?qsF!Lb$eOQEF>za z7#5|+%`BvVjyF>GM_{m*19Bd4qNXK4KNn|BSw-oqb`~YW!HN7Xz}vCF-U9=j5LR>hpmSn&8ds9uPQzmK9{6g^z-%M%~Xq72x#h ztUZ&0oe;Pvt+0`T#Z2}|9O43+yYdQr#&$T-;K=&m8W!lF)46q&pIFF7-+i9ievk{F<{g}icr*}e^?z^WjH~~=#s%OVN z4BTZNfokNd1_R@?NV2m!fB{!^FYf6E22kO<@1t;@2~#n+SQig$w}q=3O1kSdDmE2K zT9c42G%~Fk&AzYxq1;uY(*p($4cxYYF>K$x8z_)Kp-27z&saf%CAKiG00000NkvXX Hu0mjf)i4S4 diff --git a/assets/dolphin/external/L1_Kaiju_128x64/frame_15.png b/assets/dolphin/external/L1_Kaiju_128x64/frame_15.png index 5f1e17f244e0b4216a3e6175e2372d85a6330cea..1bb46d54a1b9454e1f6e5bf9ae91acc2b967cd7e 100644 GIT binary patch delta 585 zcmV-P0=E6@1nUHlEq^_06j2n0pSe59Zd7my2tgz}qJ@=F8yj&~u&|Q+g1B}m1XJ3` zUd7JB!p_G006_#n1!0F+Bwb>fL=-Y1!H+_BB8JRncjmRYlkBW`s>8#1&*#0K$P5KD z;5l!b)B;FqNs?0aBxw-t(a$9`9I(j&$gL3{fWUzu`X}PBEPqw!R>S{BAgLosQmo-V zcpl`E&58pXD>;y5r&6pELEH@>vH(7W5D`Q3;$W6?oB%Kn2Hl6HsSr*#wE`$hF6+tG zqV!eWWy!!ka0-@=+H4jKWUk(yQFg=PEUO6}9}HC7yg#Dg3t-5uTL4Cy({BO8-qUwJ zfU%2nfZ^D=a(~wXp4CTL43zGbEFrQp?N)$+Qk4c3m|C05E)-6ARa)hH4&0i}%Oor` z7NFp8>%YgrAlqr+1F$^`RZ?2}dBn}8%bn(u?!q%*Eb+E-uzchfjMt7uE1&Vr>lh@}RaZ?J=Q&vul9bg2^e0=NLVwps)}R*Y;m(7l33vTI0QKbO zi7Er&&5y^sILW#jZ)B!&!$sV2;M!yVECxtlpb(h8G~sf5OHdUxDNh>=a3y+_pOY~R z@}h;blE0}Di)1rV-c#DTrM0we;C7GqK$b@MY9e*_)b8vlmb57u@Yf0PISx#^jm=Rs zmHNuG(Lz&hhOUPSFUe49Ff7q$_0&!Wl7kO*D4{~1a2O=RIZ|~p6?1sR!#TW0qyhK~ XxlSYtS@=+700000NkvXXu0mjf!yFe1 delta 585 zcmV-P0=E6@1nUHlEq}jj6JZ#~KlkR^q$(H+LJ?_Bba1lj;vy!3gOl_xsB!Bcn9)V@ zDsB!AZZ7r@5JV7E5OUO^-CDb}qR=Z9e+-(dSaNA{_jP!$O;UWOmk;0P_w#xpGYpvl z&%M5qS^!B+Nm8nwBn{*q{oI9`12)+Qxz*x*5I7J-hZF~CDSx|XIsC5zNo`4zVvW|p z^B{NGDmk#ZngdyOO2b(qh`Rwq7QlxPB4Vgt9Q0C*695*#p!={q6T<1bRsm(nWj)zm zlD?_CA{p2NPQmg~o6UoP%;oz#&Tcr|%UVL)2LmP7@6Ras0vNLE7J#w(>|4OldHT)= zFm|Z{7>=DQc7HA4S$&knK;d4&5+Xa-Y6ci6l&MjIne|3?VQ7_Cr8R!!z>V3wOv0hU z0u&rf{m&#AWZN}-cM9WBCZ)NTD{j_Z>@;`jE?Yu08h8Vu17o3W3>6Q!d8$1eH;p;;g{{SE5JxI+?&A zFIr4X`Av;kB%6t1M``nx*3*`O+dbX`SsLN1j@0d_)$S;kv?UqvHwf`L4otg=HAZi} z&{w9-oiea?C4}3;vb;6xHW^LU^guYx$2;Tm{y7u z6!L;Y8blMdk~Dp}Ux$~*XFBAJA3pb-!@1`mttcNz&HsQWQlDHHFpL530Eou`;|8UP zMl{g~CmIt$BNzjU$3Qav#2!dm0$>m|0FXr0Z5>z$P?O6`AcwJym(A8aEA z&kl1qh_QsVFdB7QvyAML3)m?A<`4LXV!IytC6_}EJK3a~12=9@W zN5)k^@%0T#_yD^Wp!k33-uwHRQ3E(HEo%-R(CtgF0N7v$1H88397KUu(*y(DVJ!xO z7Xe6;+q?|3trl0VWgwL+>ql#w58q?}QXB+_Q}5_ZR<;K)b@zzr4?Eog@Ln)jT*z`P zC@srv-YUPV$p;260eE6J-Uh1%X!ZbD+Ug#UFu*wgyvi|kEk1uT`jt(|>+J;?yqHb~ zE}Wiz3{pc6v{#lZKK)u~$-o>5X$dNvI5mp_U*#~XQ;4Tx11R_zMaZr)Z%PIq=M#b( zB>1|4(m~U8igk4)H6*0Px>L2DJN3^?16AAmz`(2}7Y3$rxqUYfkizI@{sLNLB9oGG S7oPwC002ovPDBK*LSTaPn&<=o delta 529 zcmV+s0`C391jPi9BmoSOB_DrK8}P@fqnnOyc62fi@efd3+?v5ru$vZyTy;=EOe;kS z3VFdH4Wfx!Nt(Xguft2@YdYkNA3pb-bI&~&X<7L|YVHG`NPTi)z%T~910Ws)j2o0D z8qq`}oM=o0jbIFDy!B-Kh&_-ryUQSI03eq>mn8jZ*B2!r*E=g)l-hsYYF(0nKG;SK zo*m|J5Mv2zVKnNrXcOpc4UGVutmewPOEHBI=nQjoAFcW<0cRGdfMI6-P=Bav4Uqb6 zRaMm6=JHNWGEfMKfbE%zyOn>+Pd}2sb`OL=tGm|r^CO&!gRlQ*DljGcVze9y5#D1h zjf`u6;v4If@Bwx#K=FU`{SOZ^qXuw6TGAXopgWge1F+6E26$t`Ifw$SqzMMN%W4b; zF9MJxw{Zn#TP?0$&p;|y*3Z@!AHT~0q&Nr;r{2+-tZWZp>fRC4A9lJ4;JsvUej&@T zptLNval8D!CLb8Q0^q4#e;2G6pxFapakG0o!T{$0@G8gDwfKL?=yx_HueTdu@M1a{ zxOjT{2}lh+)NWa>`0QJuB?EILq$Q|u;?yh#e3iqjP9dI(4WQsx6d}99yeS!coKFaD zkl^bkN(W8XDc04I)R2(Q*PW{M+*kjyI8e2{2Mo;a+ie5WxZJ)Q2uNY{XZ`_NWFnJj TgwG}b0000EUw^ z=bYy}T%BB@cx2m2pG^)ny~+j$tE(*6`?y=`n~?csy7{x>t3(YRe6#`SjCVxZidu1nMg(_z-XG zcanWn6%?c!)9x9ps>;WC=}EnJTXekU(&xcoi;xL`6J@Oc`msD?3d&1gw6`o74o+l$ z0lXQD?0qnhnSaehz|JVUv4emRSnJU8`=9b_Bm6)Q0$`+ES{zuRiC)j_gTRZlswjm9 zA&RDIl`w@8!0GiFd&a?D3|x}d*mAI(mVMfZ@d3?Vc?ls3TdvEiI2Z?mqE-H>*|%5WaC6&xu>z8m$X4|8!IoE@mJg6*EPt5E#5~`@2k2yhk=wVr&rUjc zcMf26?a0khSL3{rifokS+8r67y97Xi=CJ?+Y<2*=`J?S!H|d3RMI%$+Co#xtq;UD6 ze+q*a(RNTeJ04)*E(-`$CR;KX7^gu}bV&y=;HwgJdUYcMDEBQ4QM|x}DH?pNPXM;t zz*iY1-8@a(&ezqJv>_o~tXtLUeZTtqLRYm`4-6cN=?ep6SmJ)jkwC5oe*k)PH_Bvg RkLCaX002ovPDHLkV1gM56RrRN delta 580 zcmV-K0=xa(1lJvDZgin0F4S(6 ztQBj-jVqgFcbUBl|A5f`0<9pVxXDx(y6Xo*1wWF4*jfmQ+G46R_jNH7n?$5{b$IUK zea}7T9;8|IAEb=|;E2ej?-(!)0p}kO3;~8SDDIo#1MrzR0Dq9wkR-+WElCFO0C0!~ zHJqS3BwFnJ&t*NAgnlyx?cvfF($EW2@OV%}x>rkj)lpKI=F+QKf6sQ&2O7&Ma3NgZ zbCP{j6BMKy)5#dDYRZRs=}DvaT6Dagq|brD79rySC(2p|^kb=F3d&1gw7Vo34o+l$ z0lXOt?0qnhnSaRy!1gFRVFEmSV6{uz?H}dWrvKsZY&~G4Tv`}tp$T4B_JF_%w4xvd zO?(tg)vJCAN&u(VD)vkQc0=Hjw8~}zmQvZL-4GYh%$1kmBfp)vyb8T>FeqpjK~h22 zKNZw!ZSiqUNRoYf6%MzyoEOU=Ns(+-KOby5wQ0EkQGdpQnT*WyZCrqE78tpGD}Ht| z0q@QMtgIfnIhtskS5%b^vRu0(1H_8}6lfjuFu+C^z?nPR*-0wBkhW-K>iZ-HIn5MY ze(0XU-~@CMP&zyAVc;(F2vjCpG8h=ANtCY00SvgRdflFGU;yR5`92EgnJ`6zi*@n9 z#!Xz6Q9TrI*iOEoj-+)7>0-mG-soHP_k~#Xb`Kah6b^m|e06G89%+ zB(#{UiQ#wf53Ee=+(b$2#7c<8qf;WugK8Jv?i`BQeQ#$>j8kpCoOABkox3LDyx1dGKGG+_A<)WB#6Zh)1v*niRxT&7J+AWJR%g9&7S zcZtGO%oN@Ml8Y7i)N(Wjeo$jzsZ;Qm;${w-NFu3{Bs~e=bZ*&9GxC2-2@Oh4V#SWm z`YDqz<*tgSy!NBs5;`td=e=btN#0*17JHTU*olF4QI6TgeQ)zF^phmXPY%aX=yX3j zi$eX6`fCKvw|{|f>17Tu+1t2?6uaek6oJOxtOL%>0%+epe_>`$>VA-0|DoGt8Gt{2 zwsxJ*R}0Ga+d-)AB}vU`^)jk%R$UcgY!|w^66{=1!OmEjV3Bkx1`?~?nB6%RGn?HRe{ibh9{>?F0GHmv)mW0HDv-tNpN8 zEg;Gs4oq}Sl1%U7Z6~@&{MIyWt?A;bTF7&p0zmaP2y^fW0I0oIjA^Dd$?TmM&$+4C zMO(5G0%)$F2F(*tP~MTHELmFBQ|zg3IUT4&@txEwaARgOdu=pm4|!pd;eb}vSaxN$#lv9 z8cwMzX$17uuSp}8FA71%(vn&kMH~FgmN)Pw-_ZaI=C3Fjh=1)+;Q-8trBKUfRP$gS zFyW-N<*_^RAQ~hO!FygY2K+2=VFe)g0}3iR#p+8IXeG*p9^K`@bb5c%LA{q$kto#O z&%Q-oGt6dGpM!LtB+0FLElK)PQiEQPJ3Bz+rFq@OiL>Z2&%24wDRj34rsT^l`KGDnN9xm;TJ|gQWPXbSmlI$+EE&f>;FT zfn}!dLwwaRA>0Da?M5|y_HqboTf#ZD`^(Y*T+0JW e!3iLP4EzEi9Ld!G0QxEb0000*Ou{8;`$I&T#K z4X50dGy(=1G^7#B2c;lqX-n;#q62%yOsOG~?13V~jn$2mn5fH=THPW>x{l zWXF>}W_w)#4|rQz2jF#KH_h;C037$T%S|=w0MW@-_A;9{lH#-Sp`>dk%StT-F$d5C z%Vg7s_^f3@xCETrj2e3H>8K&aP8OEOD!lZmw!nnooXTD4TCpUp3Fp)q%u5M4mj{%C dgX9;=z!xDL$<#ag$3g%A002ovPDHLkV1i5&vdRDe diff --git a/assets/dolphin/external/L1_Kaiju_128x64/frame_2.png b/assets/dolphin/external/L1_Kaiju_128x64/frame_2.png index d6b0fb95ebc8e570ac34cc36dae8612c6101dd36..5f3fe280474a12988f3917de11ac9bb18d530ef2 100644 GIT binary patch delta 632 zcmV-;0*C#N1(5}iB!5^*L_t(|oQ0IlOH^SL#((#nD^8{;Eg~>-7824XTWKK9T|^(d zmhRHN{sA{Zly3-G&>!F`Tn24|76}z|jn?Waw4@o!h4?i$BWJF2=Y3k-k#t&kcIU_8 zaNhHr=S3>&a2V*~a2Uuo1HT#249u|=-tiUoAW51l{sYx!5PvmB4~{m~7CcE=2|)Fq z1%V`KLXyFi5Ln{yU=9a)8&aN;1q?}uyZjhtyTFHZW34$<%%T_!^Z_L_9#G4Gfh7Rk zm)`y1v}u&SV+1#?n~l*e{3@NQoY7qj8$jJsgv57k7(RZQ%OxR$Wc}S_48vHE{|tcV z-c)W_16RVcIDf!@*1z*2@S$%|evpC9>n^$a6saPoWI|eAZhgB_^dXC99|7Cv2gb9P z4hj2v>fz$m(G)!I09vlh&)lCe0Lt|P-t?bAat6WvH~_)k=x&$6v&?ra0%6b{cHjeg zFjt?1dhq%L)e4-CY`dM*N}PTd{?MXj}no`SR&y_Ftn3o$pP}Nt=+OnoeT9+z94O{ zR=f9QAaRW72>{pD`T-2|gbs2LZLtIfzh={Ytd!C#j2($AFgpvLMY^c6Q(5kNQSagc z(n1R2p}f8&JxFC0>nbafv?~2Gawl-EVdRoKY!3_}M}U`_?I0u#tD^G3ckve)%{@wW SD3>h&0000 delta 630 zcmV-+0*U>R1&;-gB!5;(L_t(|oQ0Gkp(6L~|uz6#M~Jl2Wh{EDWgZM669JNmSg8T1dWjjF{cY&feEzHn`aop6)yx z4(Fctycemg_AoF&dl<-f0>2Z`3Cw>hy#H6&-6ZX-*azyJAb)O+9`0?bb-16g3V@p5 zO9DyKlq7?zAh0CS?i>z^HljK!3mDP}cjg|<4S)~X#<~Mk&Z7hj3@+{4fV=7hQV(0a8s)>6Em*-2L)P*@rxyy$fs{KRua0 z)h6uknLCT;$20J#59m7gVfNOn0Z=dkcu)R}5*P$KlK_O<<68p;&+?&f5s1RUs1F~| z?fK?3G{ffyum%REOQaSQHFgvlm~bs+gYEfE4D{O+fPZ4RcCn>xJzL_>+Urjl*aBcE z9+M*g&$WfQvX7;QY=Xu zEA_!08E=SU3L)Tny5E3-LgXNTc%3CM_>I=_f2m|wm^e~dU~UdPi*!;|r>fl7vR)-6 zq=gJ5XN&rr7LckcH&sHIOzZuOvO6HOI Qc>n+a07*qoM6N<$g3G=q@&Et; diff --git a/assets/dolphin/external/L1_Kaiju_128x64/frame_21.png b/assets/dolphin/external/L1_Kaiju_128x64/frame_21.png index cb7b04b84b526c4b836b9f292d74ce8747d7c7e5..50ef42181f79aa545bc19b9424940c4629d6d2d8 100644 GIT binary patch delta 31 kcmZ3$wt#H|C$o6#KW5&ev5zY5K4bs^Pgg&ebxsLQ0I=~2-v9sr delta 31 lcmZ3$wt#H|C$o6_KW5&ev5($6eb8h80#8>zmvv4FO#rfC3iSX0 diff --git a/assets/dolphin/external/L1_Kaiju_128x64/frame_3.png b/assets/dolphin/external/L1_Kaiju_128x64/frame_3.png index ddbbeae868c62be093c9fa4475c8c9a0c892bdce..9cac278976e0f8c7dae970495ff5113a484f4645 100644 GIT binary patch delta 603 zcmV-h0;K(t1(XGlBp6#sL_t(|oQ0H6NEC4t$3OF&)m4fef?$z6B!B6SN{23?{gu!h z!9$6*qhzi*JFmm6vTj80^yBk;zxR8;?|biuMvm5-VC1Mb0lN`cjUd?w%tk;XkpFrZ z@oJ5#3mA&VB$CjqdAI-=ghyi-Zlxh;F8J3i$y~g&{TS%R;cj&l1PuU~!}505K!|(* z?z<4Sfj|T^cGb%n?tf+mgwO+T)%j_U+j`!uDdzI3gO&NEi#Y_kq09TYH42l>HUf)i zN2!IR@3@HqCIrxAgII8a=x}iiVZD}SCUYk{--F52tPW*>*4vLRd`g1q zNXd7!OXn7@?e?k)^n0fPesx~o@xX-cJ_UIHJXucFmvTLqUVo|ygn>e$n4heZ&_?dA z6ppH1)CG0p(kpx*;OKXKKy^I! zi2J}no&|C0K7T;Movl8NMb?)9guXLX1XbPJ($LY!O>t{T1^5v^H(S{}X(2#g?fEBy z9T3>_|sb=$4#d1_e?@h^juO4x`~$t!k;PfjFwJstQe4;^Qfx69lG-@D2+o pkS45~=D#Kz)qO2Tx_j_l`~m7P4TZz=H;e!P002ovPDHLkV1gEABh3H+ delta 601 zcmV-f0;c_x1(F4jBp6vqL_t(|oQ0H6NEA^V$3OFPR#z!@2m+BjB!8)+(xFRee@jUVlJ=RS(#tDm`9)sI=zouBQViuBe00J zPdAbF9XD0Pga8_>kgGkH0?R*0y=ZX?9V(3?tXI>_X7A+YyD^!Z)xj*#eEZRbPiasc zp7tH>)VYOgyFID`ecow+Ume$XJTRfFR{`EXPnR>btz6HyE`J^L)<7XuDooT!Xd`!5 zibqv1>4LgR>lMH##M5uiAt?L?h#t2U<8B1QiY@eKj=p4AGpG(M?#2w1~Y zdoI|0Z8m^v;DjG;=Jd<)O$J^ls;U)@bGp&E&GKgzfC}-9aVAU~%X>x@;OKXKKs1&_ zB=5jMo&`zjK7T;UosFI*BI`>4Lf@GzfvWCpY3OL|X1Fz|0{lqI%~du}S_sfvE&oKY z0|I+~@?=O2Z1*EM#w3u9~f_00000NkvXXu0mjf@cA2J diff --git a/assets/dolphin/external/L1_Kaiju_128x64/frame_38.png b/assets/dolphin/external/L1_Kaiju_128x64/frame_38.png index 2e18adf6d37c799041a7206020d008cf2396bad8..6b46de60983a9332a0fb3f41695aa4db94189378 100644 GIT binary patch delta 713 zcmV;)0yh1&2DAo{BnkUTL_t(|oK=&NEmwapyvyVBzI-2#$7UYL1LK3zqX7>{_pXKy zG|Xses!VqTOfsnc=BXnd$58#Py+^Z!LqhKxn5e({#}5z{ASz%WS6QEX;+S{m(jkFo zeRB7>np}ctx??h6{pvqj?py-XaEt&oI~_xnAv*W7?z#|8o%Rsl_iOK-R?%Zy&FO#k z<#P*@OAtM~W`~Ylf$WPfqrwe+&GB3)dXO9TYvfoxe_~f!|6Z5I=HBv^T1T%s7l5%V%HA3C15)F6 zp9JLMS8JX9YG>nyE<2t9<-ya&4@iHE-+di04p{AKr+7w}9Sq<>Y*uZceBMf>m0p*I zm4*|`RkPfFKN*4&#O9UYCZ@hZG6WOqq}9Gf@ru3|SnXSE ze5;?~`Gf1m#sy0oW+7AoScyx~)(Sp2LZFpIam!&&xd0C>0O$*f<02Ri(rEYyqg)Mr-v`VV?}6CBZW%zk%wkkY9gdK- z!b-o@5&L8T-l&R(aW`Xx`QU$^>;k&#{(=e(Hjk*60Mt8+N&l%-nvGcMzgLAUull`} zeQ7o<$tJ02we2S2r0&>UgsKTzQ-@~W9{mwepi}kPxZdua%?E(8(JCWSZccia3xJ0P zV9}8KdtKQSFbYn+S({V2#FF}RcR?h%*{_KtSRxq~BHJH#r$j^|=0!Ck1C1y*xUJN6 vW@&i)|2LmcRY8+3-+z21>zaGtaYWXCvQSi2gJNgz00000NkvXXu0mjf9S>Je delta 715 zcmV;+0yO=!2DS!}BnkaVL_t(|oK=*OEmwaB@ACM(FYoc?JvQ?|9vB~_9u0UPbnj~T zK*5Zbrpk0jz$An0Z=O1$aSYYp+IuuxI3)DGfr#hso)M*d#eZThZX%#)T)trBB zUp}`mxdhR(Yi8I5c==OVn{+Tc7tLOiU#FRINN1La|C%wavxV8$$ayd3ZokFQpSMlJ z`{o+-9LT=-GAi8A*BsAzsde_md$gL2OyBttNvPFn3-6wl~N)BX+A=Mu!m1Xe{VU(+(@B4t+;yn->*ewHSmsyM|slyhs zR#@q`I%1zJz#CQ3Fz#lIFdu*1lU+bp-Ct0l!R8V55`cPVG3h^*O0yA5{r9SnN|YwFO<+oL}M3UsPI8`s;tv-to}Hd0!G29H*0e$msnDN?kUvdBd diff --git a/assets/dolphin/external/L1_Kaiju_128x64/frame_39.png b/assets/dolphin/external/L1_Kaiju_128x64/frame_39.png index 0e8d76708a3f57622dfd575027a32a11505b08c3..a2946bff32cb54497bdb072a5b5ff1311114c76f 100644 GIT binary patch delta 766 zcmVH8TxK-is25t=MsqLIqodY-659Bp@ydj#x!H zt|}B!cS-}j!Geklvv5&&QxU9AA`yimSo1;`6+y(tpf+7h!L(=^^PWk_%glT4xR^<( zdf{vi|Nq^?J^zJ1pbr@Cl<=SPzlN!%Wk}0lvraYt#puP11%G!dq-CzINQM*;2M`CC zbnD({Nz1+U>yu!mWlN*KY|lwCVD?W#{Ls4P!qLHrv@Cjk66|u#Qt@tGlA<3|h4{(u zE$kfr`i-(oXanq5Z(CSjJae+>=`co@ETq9x=gXou_SdkRrz|udSUFkrlaEZ3tc+NI z`=aURC%na%>3{is(T1NRhsXDQ0mY{?ad27AH6!$;tvYz6#yp-p5`uABgCePhL&xO1 z3XC}Op$Rwp8xgsD9DzDLrO|q;8m?ZJl)s6b+0jez&==(axHdVh@re*WWc^J@}!_VbBGiFJT= z$?nelzpkWz!3YkK42PKWV zj8QhG!n+xP_D~rh-ec@@F+o?+%~<*G?i}rqp-|3+B&ihNx40Beb z@@)Eo*O;-01jIwZ6{|?s zQ-vbdn_|EhEU0)e2M_hO6~XEz5>Y6EH4}QM2qHEHwdr9CrbW}38IzF7?#z51cDq!4 z@Lm4=|G)Qm-}fF200Y2ir-c8k{|Tm=mLV;J%{tZm7o#6D5r5q2ke0c;CK*yd96%gk z(w)1XAuadUuTF!NmMx9{vb!L~kl8;A@dKNda}N(srDf5p(_mL?mWp@df)s<8D#TBG zZ(;B7*RPdjN*iFmdfUS0@*5|Lz7Au2#X=f9dA2NiZGR2BebPenzO@s@Aohta(Hsz7f^gU7Y7&ROfy1X+^K_CYAoW(gCQ8FH7Js5IC50J ztH78uADVD`uo02V#}TO0lNxQds^R)YIR<#n)Zr1^h{)tT6u6=WepU@frsP=wXDX1` zl@NITmbQx@S{HQH&ztvtHZOI^fC?n`l?Zt6mhS3Pt$))T@be#kTilSi)1OZ?N~{B{ zOK$hf|LY3tU&;ccgaCO&ywkbkZiIZ} zb=}?gGv+`5$LG}=4q>6B*N$`|b3Eoc)8CCWUQV^W(c0D37>>^?I)AAnob^|p9_3Au z%C|XqVZ6-OrAKdoYW7omQ8mL?E$~s@dOtm= wsv0w?8e3S6y(WOKOH%j(r+Od3WZMM)0OG+%2JyZ3qyPW_07*qoM6N<$f+9(ElmGw# diff --git a/assets/dolphin/external/L1_Kaiju_128x64/frame_4.png b/assets/dolphin/external/L1_Kaiju_128x64/frame_4.png index 0366982173424897651a46c852bddd49535e11ae..314e716ed565379ae66e050bebd7d7c50195dd35 100644 GIT binary patch delta 632 zcmV-;0*C#Q1(5}iB!5^*L_t(|oQ0ITYZOrwhrhWyAwy7hQP4nicZ(oFiD+etkewog z*a2D1@F&1)yoxUbpySFe33*`Nsg1&@3RY%qjAc=(!kP<69o8NaA8mwEyW^q_+U zqPN|(fmp{ZBvOQDh$eLk6AQk?T5(UgQ|Gs&&qHWO9T*m4(1&BMhocxCJ$;gP0jy}c ze9|+Fy1D0a0e}0(vDKTdfkFR3R0NiWqi_ftdin&w&-Br|cM^7dm9k*v(1|hUxD5`L z$y)GZ;@X>`kywZ218svdx3g2*dTLE>^pQ0H@u9fCM%GgXLG8sb;JaP^ZVZ;kOsW%T zxV?jT2GEtN2gtA27q+<&EEFp%^@A{U}>4FTvdjJxIiCeJ_zX_ar2L`BnadE2&t#}4l zjcaQp+Y+BKKwoo0Dii1WF;Fc|BOt6~ynCRaU6)lZNE>TkUS1Un+oK>^Do85}m9CnQ zl8p+UoD_; zP7M`Gs`lsfG0Y(CRbAsH1(Fsd0}lzoAqk}8Ec|6sS*1wjZJ)tEFWV4k3;YJG%Pe)? SQwUA~0000FBIqEzun_q97gn}KvINVWpI70?RIe0N?*@L%>qT>FS^X6!3IOyLHJK_X3fhGY9dN_*V(bFdx2f&J^ z%O_pKs59_f4u4?ZIJSDzF)-*KhzdY)I0}cbp(if@erAr|y_2xxr<4UNhfa(okK2&M zGC2!=Ok8_2G!pBue4uS`_I7S+TTQLWjXXI65Fd*3Yh*ob5Y%1_1HRMc@5W%c%%(em zhSNKUYXDuTx`6z8O^yxe>yPIy0%30cRR#m25l3c#0e`1B3Uz#;0c^hPLO`zFWA`)m&(1RAu zLr@nz_%Dmt(|W2<#G;S#711u)A+f zV&3k)_r}9U8|%PahVSP)GYkWRz#x$6rEpjLuVC^)5`rYyum+d^^%%HYv8px!e^s5( zBkcW=E4D-_Z`EQBpds-Rn+^Z165UWH%2WJ`a&Nh?MKKx%R@8 z&)7baCF6zE`gLQfhpg0o;b0eewf19VibbGXDgnfUrrTb)SGC%gpUp5QX4?z3aKU`^ zRJX!qMTBMGdF{WfCl>%4nOm8y?a1)?&GalFCdM~jLc?f(FpY0%mxQYNSWwkDG4jB; zS8f}Nqm`!t)$nS!tQz8|#yF^Me-@0Zs`|{R`WC8wq6XmTvc!(S$$#H`CNe1@I)C8t g^*3Sf2M&buH)^qFxE{UFMF0Q*07*qoM6N<$g1X1^4FCWD delta 493 zcmV0B!B-&L_t(|oMn_xXk1kk#(($BO*6(MZ-NYt2{aQ+L;?*8y3nF| z2>4#Te$L_4D5n)%UbA*tuV;PIP6x+!TPLMfXld zOwfUq=${M$qHe(hS{6V$&^l8r0#4T@?TUe&B(;4=fcQK_;viD4*XG&_ zQ$Az+NS2HjQtQ`^sUEUY`-Ow2$g8ydg)mn$D&WVu+ z#=UaeSRAc94XB1!yJgi7M>WPlb^EhmTvgR)M%A}a^%FG!N0%jb1Wx|D<};B=3DNlj ji?6>4dp{if3!J|JYO!Xx4VAN~00000NkvXXu0mjf$1d+c diff --git a/assets/dolphin/external/L1_Kaiju_128x64/frame_45.png b/assets/dolphin/external/L1_Kaiju_128x64/frame_45.png index a15ddb4b6f8ab00f52f0b068d41339c6ad6497e4..232a5c63a1ac6d18249400415fc2dcce397ce53d 100644 GIT binary patch delta 568 zcmV-80>}O61m*;gBq%LOL_t(|oQ0FUYZGx8$3OSWwLKBx6ofd)T~Wl%;*!ZGf`ReM8GmKzpfwjNwhASwTAJwPz7BWMG*Wz~A0M9A@ALeSo~hrEwhsYI#5R3qz%T%; ze?Tw*81$g@Uk@LEPjmwSNp(q5SHC3504@L)@!=d+&>l!yY8_Rj;iOML%76x2kFuv5 zW*|IjmTYPz@nS08V=vV-X%`fFk|vv3>pvlE{C};aq*V|UrR!5!NUI<(^rZQE7UH0@ zwbXqM49T?_JLdwURjmU0zH&D%%9B2;vmzlKOsOVMOM9~i1<63}2|n;+nEen8+E0v-OJKGZ-*FQD|}N1ANg68aoju@6f{d9wYS>uJ{GmR`<2ZN8EBqyM((_} zM#0+bSV#{vtz=dQlRMVplnl%`WfCyu*t~3ELvGIzFm(H7_r*DEU?c`$ZT;kpVfqgL z>BG))e$GHoks`aN-E@{1z?wVN+RyaZ$$vDP_*TXMjj%C21n2~iBq%RQL_t(|oQ0FWYZGA@$3OSx+MbAT3PK#@t|;PWami#8!6B1m z_D7LS8GpypL2E8lY!ymUwKUPoeI4$qNu>BrFCU)w`SE?eFVZvh9;EF)V2RkK=NK>y z0P7zR3;+frDE&9W2jCOk06PH#SVCzwK zb;AsVN6nH=tt4Jd#e3|fnkManLQm3UGi&`Pgnx~{m6Ws!f}(VNDtpo@$O}DbzMegC z(AioVJ_m;6+KioZfzhf~0exS&8yDqCpVe8BkPfC)lc%M<*@J>)Aom0x_%Y0W2nKR# z!u2*y`*4*m@Fns;^zC-2T6xtcp$V3z|A0tf1zJ-;YL-gfN5RCcw-?fgP6TjiV>%g2 z!GAKqxU|j=2GG4M?elhs0k*<7W$=-oRT;<4gF!*F1X6pe{qAE?ySrc6+>n9h8E53q zYiks&&5niiK+{TQbuhVOEl$b6j8i57Q;yBc7B=Me905bOZ+2gt!v;oT0M^z|-WaCG z_)i~pmh*Ea^&3Eu-P3M5OAKJmooel8dVlO>noWEwV}Qn33a&n~&toIwt)`%IIqzby z?nes8S6tM`2M_rQ1&;-gB!5;(L_t(|oQ0E5NK{c6#eeTQ>STX>1c78S&j=BUl3LipnhB)b zl(UW~+qp_NQD8A|-^QgoZPBVA7g5$`p12Akt%QQC89^{YnWq(w_TD=!-dN*AbXJ!i zhx2{+TrSeMs)e+?16U$RP$dI~8eshe+!{cwgUo*&4ggDpE`NZef+Q)_Pf0R>4S+?k zGsAMrHK7^*UsD#7@zE((fPSwYj)H+A05jO$#u6Ct02py0X!>)P(92lvY6=Xx3!v}L zxTB*k1_GC9CupNEw{R?jfi3VBZ?28PRD%PG{BFT1-MVz66!j}^JaxaHp6=tmUBo~V zwdHLNqJfDq41ZCtOPvkv?N`!sU7&BX!zQhiHacE!&Ps+oosC-nuO1FXgMhSEQeG)N zFO95hNC~L3ae#MElcnbBr~H~}SzsI3K>b8^YDa};urT}w2&@UckxRUK@q~kwjq)!$ zDvm4=K589~x?-^D0qL>QTfW3#7J#OP$7K%#==Os?aDRGRoywFM&u#(DH@c+^NJ{JC z=d@ND*7@{aNK!O^9`>0n>%|;MQlKcO4eO5eY)A$mAOe%aJn>_PuOO$0vm8ptt$*kS z2oC2iH^h$93UZ3vW-eTl0m5kj(&g0yHU?NO16ULL{U7nBJ(Y^;uderDkX5XJbN3QQ zFjy{r3~#b0TWkzmXA*%1Xv`W6v`{3-#HL*sNGNBQw{u+sD7of1$eX0oWDE(S1U5ur zk%R_N5H3f4svuv|qJ(s&5Gh}%`syFkq4K3|U|_FDl??1A!m9>J0!VIyUjjZtsx*X= QT>t<807*qoM6N<$f-aLBWB>pF delta 631 zcmV--0*L*O1&{@hB!5>)L_t(|oQ0D=XcJ)=#((#jwz2*@1R+=@SCLXsRCK6=dJ#ms zsF_8yZk=owQBcY4E{<--!AZdmqSYl=ItgN{78LxG6bcn-$yt@8@$MdnOKlnv-|6GW z!}Gr1^YS9yRcj&5uK|__Q?!%;LmROE0$v-ST|w@@3I~8WB7YA+QdyD|>6auKzy`n~ zTE!8Dnm~U>k8Xp33ILPXer*m6_yAn@AnacKOXTM)Z!rr7-2~7N z=dPnY9tJ{>2`Ai1dHUnt90nTT&tCa<8^${wP#g>h4(aNd%hmX-lEkz3&T?d6Utm`- zkVZR8Hrvrq@qZ46_=Lwg8+v=syVD0i-={{6tE_5$ua>7I!^Zxu2EfY)Bk?dGHL5Bp zt7p~g3pFVP>uen0?UQtMOY17X<}x4u?A8W4iuv(15t`xh=qeCcMZK0sGJ0jdgO!g< zFZ!B_JPJ_gXW`+tMroak|yT_$}y1DfgbsyUG4 z>hxz<3!O`RdM6|)o;eAdO~ZOV4U!ZpE~sYRu%3>{0EEO~3Yf=1q6icg6myInZj$=@ z0f2B<;aq2;IIOUs*xSOXi!wko0f1Xy+-75d`8t4A+#38$COy)OsN=%YAO=~LCOCd8 zwHt%w5pX0Re=uWX;1Xj9G(=b4U?4+n#h*Q`Q zM-@^ULSZx?2idX$NwX5t(Q>R(x#iS9xRFZL6<}bK-*z4wi1AxNnh??}tWK5wrSVB^bb1~Do&b{YtaYwXi(YHGf z@8R&h@An;~s`i$F5_`))u@m^6fKFiktMLA>useseQ}GXIc7KAn4Z?q4xtX&XfTW5* zl5`_)9|V>p%I`?3xUwzl+my=<%1XFX*I~W{J{StC&>f&^5hY;A4gxha8`3I(VWSCv zdpEQ_1{jvoypKuToX&%sS4ri{tE$((WzS{!S_7a8sqcC)yuQB>03#Ir^>hZq%<1wQ z06h0>>zp+ZM1O~HfPd%2+P%;~$r=dZ$AnAA@pq%#IDG8sqk<1bJbMkO9~qu4p4=1c zuiICb#;0>|w-4w#^Y-E8hq*z)3Ba5CJwjj*Y|jD^ZceY444&m}-x3go15qD7peqa6 zEy%(r`>+N|w<@F-6t%V$8klkIWP{CxH4OCI+@f;$V}GKZT-(Iet(PBiunxdbJZ6)8 zCToZApqKsT@ln$bSsC%?>dpJG(RQSj>jRweWWD z<31kuoO>QpReQ@ok-cRg-wWJcKrb-=?Qs6z5$qh2-j07jtA7_nUEu%w%FT?`03=le zlB65i_#g;~!|aZviY*6aeVehFKxq+s@;WRQ!39IE4*edg=1~lW^bk-(^FEy%7&cn~ z*tetY3Ba(LWOGbo7jzzEok}8GuB*}bmOhu^OAUZ3B(5F6@cRCe2aJ<!YrIKefbarnf1{`eka zf8D;iIyswxyMsXAndOIli2mnM7s($A47Uxvq%y?U(N}umQkmG!ewv zPS%ET-~jv0<0GbPvZU|HL0uA(>_xRC#kqRlv<%Rh1t3ShGk^isXR&~@o>L<*z=@DJ zfV9w;`;39OntBmH>-L3Hps2qSQL0E=(Sxr;Hw*_z@_2xpvtMTdq{2#CD_5k(T5G5+ z17SqT2W;#>|0^(13N3gL{p1}O+)j7-Ki0CvjV*}+U~v(g0O^>TR!!MYRlSHSNGlnL zPnGo{DIqmgP1RH+X-(P9 diff --git a/assets/dolphin/external/L1_Kaiju_128x64/frame_5.png b/assets/dolphin/external/L1_Kaiju_128x64/frame_5.png index e941f9963842613229909a4563be2e6bff00f86d..934c098b3c8cda707388ef386b514d143c92efc8 100644 GIT binary patch delta 602 zcmV-g0;T1sbkkY>?%|wszwg|OR8(^qaA^($nWG?e6mS%n|7JM<&#(Zj5m^99c}Y^F z{raT!a0n0AaBQ_Px}Olgk^pVOWB;IyqSYCJq~c6cG%g{q0MP^(h#`M#gIU~QZw(A# zKz#KP4=sf4kSNyXMS<_wtv)c&50v!VoAPwgVqg&5`9u3c$|x1WdPj_0cWs zWJ-CP&XHmRfRJm0mn&`w!`t`oJa9RM#tM@d#{KLE@aXHilbs&`>0>@rnAP5ex!NZQ zsjOIGUb73=_Xec{D|df;hIWFww~htA*sz>xmT<%GTKcEyvk6ESMy4A;-T;_;#ayB( z{J9S}1ue*8a4d5j^WcocGx_9ldT=`j(Tna}Jb(fB=?tMIJ6ZnB4-AaQN#FL?m(>6R zoi+sUZgzWh_qDC6^u1$?(KkYpR#lZYTYs_qHCcxeIL_HH<1ByIoCc77>Iu=544?qO z8y~neonhm9QNeD6@{dpRh9FKZ6~+x%0R6cc@-dA-8$)F*zSzo z72n4xoT%(TisOVCJb?6QW*9?DW-(m?;KuXRc?<* o5O4@MB#)~el7_UWa^t)B3;Z}n+c$g!5dZ)H07*qoM6N<$f=Fc_RR910 delta 600 zcmV-e0;m0%1(yYoBmrKLB`SXu+5|y!t5vjd>CX8Bf?5Q*311nsGp$7y%8V#jqRben zGx^^8TD+MYZQ)t|?%~{XzwexjR8V6WaA^z!nZqD;7;qSvBQu<%Gb{kBL>53&PLdR9 zuhwZT9KwS&99yZk?kB`ACqNtU*x$cK(aN+yQeiqN8W#~*fM^^H#E^fr!3=J&y9$Od zAinyDhZe$CNEB=FqQH0TW)B$X1&aFZO?tX$F|Ys-o}n>fRJnbm&0>TbnAPru+3F_= zsiat8PBZh@cl)J%D|dgo2DXEmw~htA*szpplyKeeSp28yvvEl0hor*p~U^x*awL@zqW;yw(xPp1hj*@@C;eqdlUPVQ}Oepv}H z&~8Hj?`Ef0b6;DkNZ;Ew8Ga)qX+;%jqxlz0Uz2etg5#VGGtPff)u{vNr=Ac^$^Z%g zOb+w943erdsz@;doX!eKYv;5h#bHrrQS?y3*ldpgV}cLnE{d84RgC zyFaAIFjQkg)mcp18kz>FfQy1x^cvqlJ~@n|A}Ng^l~jmSQd!b+qxNlK=n! delta 30 kcmeBR?O@$d#3c4a-?doiv&y<+cLpHvboFyt=akR{0GMM5qW}N^ diff --git a/assets/dolphin/external/L1_Kaiju_128x64/frame_7.png b/assets/dolphin/external/L1_Kaiju_128x64/frame_7.png index 63ccd3159ef232fe12058cb7073283dcdf932271..1488511859daf78d14ae6f068fc6d4c54366d209 100644 GIT binary patch delta 626 zcmV-&0*(EY1(XGlEq^^|6j2m~zj-rZCoz)2LIcrc3Xx!=RxT*+6d^{iu(V4e3U&%< z1d9w<#KOidjUrem2*EOs>h&xe1$CIVV^=2%Fi-ydzBGusZr zKoqB!(bIAX1!d$&k&XC3tyiw1AOYK>0;!|BGU+$T<2sw^IEv*=xTT-hE`*BL^Cceu z=kCesy+AP@6o2LefRz!Q4x?ZwIxGS3v;X4aW8Z~2k<&UY`?}o<| zxL63#F|_c|e`Ith-v?{@S03L0D*_0%#x^|#AjZ+4FWQfTSTq6H4xV)qDy)!&HzR;V zt)>JDkXv3akosGtDhj+ibBz!v1S=z;U|chG9njxvFMmIPh)7*@L8P2}Yt0lLfO<}s zEV|jJo*q{_xtJ7LP7lg8aR8D-05+-p;EBp&05)#Rm@F^M2UTrZ3l-1`jr5)l`!fzu z?J^G4r>=COfV}C``an2?f<~N}=ve2!j)q8*ll#(|6j@uU_ccY)4KZl|x-0hz6t*jq zUL8nQDQkm*sO4_>K75QZf$_D22h7fb6*@rqL~;V;hJ~vG#I6*y6f4p=Tad+c07*Z| zwiMST5s@Vkg?+{d?E(5h!5o?>ixCQXN%!35ziu`nEm_x6%YGNX0YiZpPyUo+0ssI2 M07*qoM6N<$g4f;~^#A|> delta 626 zcmV-&0*(EY1(XGlEq^~~6hRcme>=P3HZhXLLIcrc3z1+Gtvpb?EkcZ7VQH5{6zmkz z2o|?s5epl;G>TxMAOy>Zn%fIl3BgJZBi=>@CCObjQFH(H=2`4ra-4{-8RnbE%=f1R~##hkuav22$uutOeo?vTE8Z;U zlU7;xPL=O_ihmg|v+MzEOzL<71>?a{@qk~$msX#+7L2Avhd}AXnOXa^wcpC0b9dfP zOe?T45TIv#<&pb1;h|g?jQQVb+ypQJ0B?7C$58;1DC!Lb2eA-?Isi@Yc`v@g@L72~ z2}sbWi>Cm&?F<63yPGegz`46r^MQ=FF$oH0G;=oq{ePqK>LZAVR7Gb*3aNL-Le2uH zrgYw*p9AXIN!9X2R%AUsEZ4;Xh>if5#OA}Ns%-->u^WlV@-iu?Y)Z*jKqE0(bD+ok zf(4ZOTArJ`+KU3xEmKxU`~?)$!YHwhapBvPk3=bXAdRd@X{|a`7ezmW#2)Cr)N4?f zwq%_u5NmBx00lwA-gaI16t;}(Y6}NgTm-|nfWlZb26EHD)*fOOGg@**sh!KnYCM9( zpQS0eEr~>AO+;ayO^6Nv!=PXZP0%?WgTx)v{MTe7(vU4JmG*b>2Sb4vPiA%-{EdT%j diff --git a/assets/dolphin/external/L1_Kaiju_128x64/frame_8.png b/assets/dolphin/external/L1_Kaiju_128x64/frame_8.png index e0b14160f3d33e4ecdcf6fd7bc0a3487467c5c35..542ff45cbfebfa43d20a9fae4670aec87ef15cf3 100644 GIT binary patch delta 630 zcmV-+0*U>L1&;-gB!5;(L_t(|oQ0G5Kl0U#Mv=s}?VpMS&lGKI;3Y{GqSS79L$ z7+9U?hok`l<_`280~Vw(d9k`;JZS=wyB2QG=qsyHz0LYeru0S#w>0Bq!%2O8FM zr{%^87c@iwG7~OREcdM&y5*+zUA+L!AE0Man}CiBnvb8B-NcU{wcHO|qoA4fCRZVR zZ72SY1sX2*xN$u z)cl;Eg@}m#q|&*!wIekV4Iu6~YNQzFJ%!FK;JV##wn3u|pAWCWAvWs0EUDa{z6rmG zi3}Q?hgA}z<-uFG>Y-sa%`11KG%wqhmZV>o-WR)7v3~$sMIc-_Xm@g_+kjeFu1h-y z0VuWRaHPJh`aoo{UUq+H*2M=HX}S|H4Twm4MOq@QLPU@$8Z)FIKZesr=40%qgcWJh z(&sCpp|)Y)y*ar7n}oV+9`>c>_*;@(G;d=frE&_)*d2XBupig z?%he*NJ@x=QtL@5k%$EOV*_v$DCLVB^!rY}w?6*>wYz}i<8VP@3H#s0U(O*gzK_0N QQvd(}07*qoM6N<$g5d5VTmS$7 delta 626 zcmV-&0*(ET1&alcB!5y#L_t(|oQ0G#b8Dh(QXSN zZPIBc*eGc7`~fX21PkqqRw+a*ENsk9G_}S?gorz!LJ*S~BxL_)=UB|FgcZpxKhC}P zy!+mLNOf%u13p{BfY%S)en3Ak+bW#x6&8T3Ut#)z^Zy!NSbr#N3G@qYhJO_y}P+!~Nns2E$LFYjcm7b^wMqZx@3sYTRiCuh&MwFda@TLGsMY zqD>bJoQV#SkAM1p<7K_{VT~Jpa=c?a2ap=dl~p#6KU%2QBm*9fWoqEzaxLCELih09 znW#vSh;8@=8UWQ$)tagi{x;l9ozSAJJ z81Qe`$gI(=7eOt=z;s@A?xcCywxy=>j|;DcIyJcf&3_>vncL~LOQ*j9XKry-trEoG zILkhJRu`Qfkmgsb!H>eaB7l*NVEl;%Nv(HkO3i_kxKON5k%PVt=j(-!L*JClYJ;XZ zF)IVDdN)YHWOpwe2|?*_C#6zTJ3F*?wl2d6nMVMQJ^kza0}KP+=fM~-W@U2h94D(y}gb8S<`F_k#tfGCB5(B56&SlzTabzK>z>% M07*qoM6N<$f=&1&pa1{> diff --git a/assets/dolphin/external/L1_Kaiju_128x64/frame_9.png b/assets/dolphin/external/L1_Kaiju_128x64/frame_9.png index 2f42f47b9db22695b315cee5365f6abc5e127cfd..cf612c74ef9e1bb0770c2922d69eae569ba5a433 100644 GIT binary patch delta 593 zcmV-X0LdG@AuyC`{fzBmY}wTxKjs=Y#qR^2Ua~u)&sL1P!D7q#VmmX7>XJIgyNh3C=C3K z79-l-aH@4vvfg%MH_I+>g6t*=25J;9u-ui|8gShKzX?#)lDchvQ1W#0u4<%kX9`R9 zkgZ1@P(M{t=xm<8QW^POQXw`6ZGY~Eg#j2%*a$%y-B)TLSuQy7JSIz3h*>_TI*)r+ z8DYW)@)mp0-r^uaR~RkQ-hMGN(SgbL@)Q7#=kFc+m_&Gb=eeB)Uf;hO_JMHuKxRy{ z@TawF*#&`|yEiPuJIAk>QF4v|{LH2&*@{vjUd)ZMk)t8Df%Hx1w=6VVFn@~rMxC0Z zja*oIbtqCOK=7a?A9f%pti9}p%wXj$a|njRxRnN)5)Z2`0%-rL1NNB~8$k8;4gdYw zjDFoYPtS;=>J@wqGx{sB$hS|5s%lkzXqGkO$wV}^3I+Y4HwlJx6Mz(u$6loH0OHPA z@TeTE{^c-$zrS!H0je5aQ-8mpp_Ag=B^6-Z0U%SI-)$klc=X%iE^j&Vqu+}Ri1#dZ zBe3cYM+Tg}WgbLWNKwYm0=W}u3t}1rQ0$M@f86oagUM2!*{F>wa?~qYl f*Gi}>x>0`tsznJD>?z}x00000NkvXXu0mjf-Ru+M delta 592 zcmV-W0LdGkN1Ax_xl>UnxM9XxKjs=Y#qR^2Ua~u)&sL1P!D7a#SDQ17>XJIgyNh3C=C4d z79-l-aH@4vvffr>H_9$=fX(Ly{WXf`Snl#n4Y=lj-vp>?N!>O-D0w<@M>SHo(}hKQ z(AL8asGlk+bTm(0t_=SwsSulmHh=g1d_RmNY=j_oOd{5_>YyqFtd{f>s%2GTo~-?Y$h!G9>~YjtWa zZREnz%L9=@0fPH2`S2Km!s?4I$P858FpFR~j9F=*De<7{B7pX-IAEV{u>n+XUH9Le z$>^8ub94_Ys$Rj@Frz;c3w-^ksH#@ghh|wd9*;+3t5DGIdV^q4HvmWhdE`Y34Yon+_>hXMx=Dw1uz@Em&319vX6j5KFEl=k4{JH6q}K=4Q;|j)471 zJV4zc4oOxp$&)HV7?d%!2lXd4&{9P`Rh?E9Vke^Z6wnF+PYH2r(aMF|wf_46430000vXzjR?T2+NJ59E*d)S8G2Sa59yRlY?-o zX)ik11kq|z^9Xz6YXRF(CZ8Dg+LqqcXVO%fPp@e#l^h+ulx9+OJk@^)+BR_s0A^6f z*fanU;IbMdF4UzYt$_=G1Tl=A0&jpD3rQz!u@Z|_2H3kwWA(A&A==^SI1 z&+CCR5FLFEBqCD948U$aKKkP1t%=z2RTpzl^;i|aY#+0_gz*IH!1&#Wa-$1CbQ80E zF}$b9_G-&2^dAOTdeMKW0dPI$2_H8%z&NZtL$91GTTdM(B{B}ruiFOGUB_lv_JB!W zDzczQxwD)F-lcHj6FLPJKq-LnjN~m9ocI9w0D|g{N%MmIG`x8&sgjgNYoj=8TMD28 zC>--H5KEd%3SJ{Ve2dzzU=c8|Q=~}1>`qX! zvu0+F#q6r7Jmq)qIrs7IMJLpk1>~4Z0jmT&|LDTFAC?!6awPT-UakFDfa8g5oa~2F zi}s?0O%RPmY93*4d@W!L%H$J+PSeu4`b?Tgv&l7$q>{sfm(ou)w)_q4Qk>l~Vq^t6`iqZ3-p8`0ZWjY+`|d2Rhq#Jgp<_ z@_9XQ2BO2yfkZ^Am;%_1$A@2>yfqQqzG`FcsUE8WnC@X#moT1S9T>k8QTEyZL^m;8 z7sGpsY`307?OjXDDx};MfPq`w&!jj2AD+Ps5wnk}64Qv^I>hrlkNX zfWk3r1F@u;q~JA#W~6++7jD%_W`&3f2vrS=w4BWk%-28Gn>K5F0i+=;OF5VBPxN6b z3AzCc-_}MNO{A(#SCZ@=32lJO^X=oH1yrj`b?6FgMH!g&;?F_HMOP}~pY!Rey^Z{g tB*{WU8cBI$XVH=W^+__~q%8jfzX8HN9|s)Wc+vm>002ovPDHLkV1n)t@dy9_ diff --git a/assets/dolphin/external/L1_Laptop_128x51/frame_1.png b/assets/dolphin/external/L1_Laptop_128x51/frame_1.png index 80be86c6582bd9324a4a9ee096cc9f0a11150596..3b326e5846249b202f3b08dcaa094b175a96534a 100644 GIT binary patch delta 543 zcmV+)0^t3(1h@o{B!B-&L_t(|oQ0CHYg17a#(($brHNH&f(RYdJWy~DA)A}I3hwIS zX#a%bRHs}}!9~Q)p#n8`M35L%~9x(4hsJq*$6)^YT82+klev)fnWyFn_U88j zHei;1q1UWhn%7=PBk5>#T?1*x{@!b8B9(_D^`UB0mjYnAF~(*ANB}pEAax;@(kucO z01KQwE;N6srK3ZMiy?>K4zHAzR3f{TOF zn4dlYcpQ_=GM~~C=#>!^nX)@^!F>F&Rrz`W3_@6vaxOiXYC4ewtpJ7}9cea_$_6b- zvO9nQxN630sM^$}0GLjUu~`5Tz>Ol2x)4Wc76}&s z3!I(}nm^UmRLY;X)T@oEHiId^;N2Z)ZeW3~2b!C=J@rHE(iz=%29o_Rfm9?a83Wk$ z$NOKMyfq1%zJF|B?kYa30vPXL+6x#@unvshN|>%S07!0NUY!pgC`Q}S(uUT901Geb zkpQmMc*3XkH82hF5H`FGL{6b0EX`?(sU@54O)_9 zcK`!$X?A@a2gXC$UWlQ~ut*!sYVo(w(2|PU!K~hj-b#K_l4PMG^`*SBHCN;S)QXlQ g$%x~y{1=b-15}hCCaB-+0RR9107*qoM6N<$g1kHlRsaA1 diff --git a/assets/dolphin/external/L1_Laptop_128x51/frame_2.png b/assets/dolphin/external/L1_Laptop_128x51/frame_2.png index c1be6d1170e0908b04a99bbde0a578d26a835f95..d8a2623b44e72abb0081747f30153c6b3361465e 100644 GIT binary patch delta 535 zcmV+y0_gp@1i1u|Eq^_W6Hyd~pL;Xe#1BZK2x&AU78W9GXCv+?_ye@DbPIpLVzpMe zih_-ZoyCF+{s=7uZ&3RP77H$9z%6#c&CH@~X3bUEa&q2r3mj#qC zmpoQ6IR4T3ao@KV8MBet+kdayiH#ApMSs;I!ruH=!Y0h(&kQyD#&h;5zI!^A*z@Wm60NEH(RyZ-FpYa(Y& z#Fnetn0pFsReu7LUCiw=kO*{0GW>C!{Px?~#Y4*UbQc8x5ZG zX?+b$f|X<7RB&bEMS@9*OoHRjZG&mAVsk7zz_=%sx!2Pov783pr!aLf%@PZs6u>x! za+V6F&O^}$uizL1a0ZH#0d(acznG9cAfg1S8gRYEQGdG*4M|6md>R&|e7+a+Bg|sD zJfQ-76+oG47EbD;3qQ6teVmlQ2;Y(lF5RDKG?4^74~Fk6nX*i(+VmvJ?$V|SaCyFc zlF+qUUJ6CKFtjhV%}ahu`!}HcYiG+?9HzwY``@BM88wF zbgsUXGU+J0rlBIYma4-{1E||Li2*RZU}IAcL_m@U5GOvA;xvH70~RT1x)>o$ccz-aR>bk?yz-vOPiJC5cdwslSq69dt~XHP65Rg3}b+OvZ%iJUbN zTdrzj?kTKQ34e@tF-r>=hqnnBw;eHEZ37V9!fagd??{Hi{1IA+nMLg* zSOg5@3MmpWyEhoJH}1XnSj;Y%%G1sBp7))PGw6g?WC1xQQot$&&p)~_SP65}j%r)% z?Y~?6Jq6>TY%|>pr>6F@g-sES>C_^@-uzy|Td2}6^gA<_&VRL6(oi}cUe~r%aj?H8 zjimZ$s12C0sY?McD{+j?0+0YMk05m+meMQ&7XS;Kn-n^~)K?`Hue;i4<})^f3SjX5 z9&}c*K;HwM&AXn~5q9pp9ytTa!Ph`464i_V?DF%2Z%*EtgiT+!G4~a>RSArCF$=R8 zPp}S*-%6-@ZGQlgTbQ>O!$-<|C$=m=_i=#PH?0VO8%eGI0~G5J6deNqEpegBCQV209<&#`^8t-D}`FrVWAbg6T%vg_M%EuS$DZ5hw z8DUN;xcs2fXe0@`0SrGD#~Kf%x=mM->@G<>-IYoDI50rHFdK)?!=dScSt_Sr540wg z&BMt;vA0p2ktA7YNZV4;*qS;D0Gef2l4Qh5S^fw90>DEU%pacHlmGw#07*qoM6N<$ Eg6BNzasU7T delta 514 zcmV+d0{#881hfQ@Jb&0m_o9V`2~1h*Z`^zDv6x*km8YBMJ?}doXV3{P%K~ytq<~clo_}0!hn1)2m2-9FrNd+- z#^L#W+hCfD*ddl3px=>-VbHVOSLDA6%;1cAg zBWTOR&^QJUu@pcB@WgT41nQEGC4~@!(r}UsPvc!on|mL=0>Z}#ij4IbrhI&{uChA? zkP+sjoXZbNjYg876Tt9&VXW~$s+x2p$?lTG(_NXQj{^f#^Rsbi8xBnu%wqBPL!(ux zs2@%iioLb`j3miIP1=_7+Sb&O15htIk|ZNe%JM((2f#xZ%m=RUhg9FFLA`I5>RUJ6?dZiENY{_zMer*~TV_V3Asc*t=g#*nukf z%%IbdOE$neWjVQ-KS1MHCfFeY2%drz89q&lW6N%j}) zgaFs)+b89|1?sh>CUh0TItQ~+E=~{VN@etCz9==lL2*fvWFe47QW5Me90dST*_9+2 dabA}HfxnOm9=pcYYv2F?002ovPDHLkV1k!<<&XdX delta 488 zcmVS)6+&O53-ad7yycRUAYW7#M<@E7LxvW-m;!92AHv3I|eumx4} zi9x4j>D+oDjiu@Mw)Uioqr=zIM5<558bZq^X##-RXku*Ufe=XZ1|)x}Z%RqlfYbvP zSeg|&zcf%K6)(FQMtRF-PyviSJcQ0B78p37^YwwFeS%%QB9|Hnk3M@65vt}Cz^*?% z+DYZC3Hd=CV;*VtYgO%g#}g@D(hhFbreNG|NY#&!l9(!1L)ouWA zC*m2~>wPdOR*r#F!Oefo=P4#5G%1eLRfCDwusN1}VAPe$-0Mk^S}p@0GdObz?Gg*1 z48S;sa+Vs-oQI+ZUX5b}z#Awo!uxlUYDw9(-Z08rmJ+A|c2lM?5Gl}9l1D>mg(|8k zAwbZ~VwNX?s{vm(pv+2|Ymfu5>gOaSkl`1l!rmYu2G}C|ZcJRrx1KZ^OLa_FlI%~| z3IVRqwol4^3)CwMP3SU&bq;2&{Cm*QmCES%Y*A`@gW{4T$wDCQNky*_CeG2&lw6V>fuw|_F6$&;Yb`}8xmR43; zzD4afU?CXT5ds=8yR$@+*<@yp#q6M|Jmq)KJ@0bwLl-oZ1>{&t0jn51|LFR37*^|! zVj>QY-t>=aa6Xf5#fRZiZO_}-7}2Oxvj}_dOAfnG#Ge>-n}3$>?HAHaTFmZfA{ES! zUQ4G^c{0-&nl^SZ0A^Ul*dzcE;L-}jE>xvBselWB1=f~@?k|m0NZHGt#;vqz6DRU2Mdfm(Ea+r(>}qjUXynQqWR}QEFzVh0od)Q^F1eTO~en%4(5@TTPw=YKR%T@ zYudwaS_j7OM}HK9PBqwlj1L3I(}N0ZK>u-ol~?Tw0C!tF=`Vmba8}?gL~)2&x>@dV=gS zyn8FDl$1pMaVu?Fa-amr9g7aolC+Q%&={JLvgKW9RDDTiorn?$Wd-u2SS(lN0jvh6 z4W9!EVO7fPO>!K-F3EReBEIz}n#`oKLr;?IPhvU%H~EhWBQDDFKkx@E{T<4|!uw+Y0000*_CeG&2pXk(i{Var(UD->)*>?{HXEUm1x ze2dy|z(O#vBLp;Hb|*xV*<@yp#q6r7Jmq)KJ@0bwLl-oV1>~4Z0jmT&|LFQ;5SAAm zX*Rv1u~c$& z_)0pJs*|Zk(6ot505F3(#-;&?0GHJuaiK0HX$@QeEU+>!bbe~6Qp#U+HHx#QO`!ys zyn6thZ7eYKKku55)rB548U$ZIofsd)sJSp;ykW?Pm^? z5*df*Y{OvMo7fD?J}~J@MHcipcb2Qb`xMT7LaV?6CVKqF{I%I9~XQGF+wRU#@NR5d8layDO;2e9g& zHhcl3gk>qWHz{xcJEY%?iTK(ZYdn>zHeE@wKS*c;+?Zb<2Q8plTdG4>VJFJKY!-h$ zbX;_$BK|dhU3G6GzamMp(2&Mb-q>3>^1pqOjJPPv|G;l7{T<2z6+5#40000-%rx3Ie zv9kym6e}w$EiB%mV!MTfU|>f`k$~Bqpd_>A%^Zu_K~s6k@7{CnR5nib{h6jcbg&7c)ua{?c7N?lfNdy~j|_WlOYhnf zX)4X8*EN<(4iBD7$5M4P)d<=)aR~rsP{-KJ0}SOq=<*v*F?r_`E=f~t$T zt9q;gaJ+|ES%1K!cjJT)nSUgYM$nE_%=bd8PBKeGRDiE) z5VCSMKd`j^v5n(a8h{MHC>8b!0SB;6_T89>Z>wXCr&86WFG+Tfgf774`Sx+p0jiaS zI&=xPqa4h7Xikqf^raC0non2lZ58JvNfuhtSSngOO-J$9C&`G@viuMH0m0oDOUby- RCIA2c00>D%PDHLkV1lt3`ThU^ delta 527 zcmV+q0`UE_1hWK?FMm`)6otQ;eVe!bfb1ed3d6omL4-%rx3Ie zv9kym6e}w$Ei5KPvE9N#FtATZk$~BKK}p`4*>^17uA0hIe)pbphq)J>Qco6;V=4u# zGVuJP#bGbZ&m5D1*gtr={9^`AMzU$PAI{9$V+)%h8ne_g!GErNj<5-n>;qe!rloW3 zi8PYNqw5+-6AllaOUF`mG*Ta$Hgg#OrdP+LYs(TW-VZSMtW^WxM#>|$*Vn)} ztUOy@C092dJ4{Yu9G+jd45qz`EwJnY!>$yIpa-S1oCn_JaN;vs5euLkzO(V8Io%75I>{`MPywN; zLCh!P>4EwB$JUM;J_0#mUMlSsA`W1a{F^ZeUzZ0OjHIefSCZ@=8Et^e)9vG+1yoCO zb?5?YCIy()_~)S0*p*`Xb2?qMw^5#xBw1)k1F3B6%sR@yK1oKLmgRroH^JQ(ONrr( RvH$=800>D%PDHLkV1ivu^LGFM diff --git a/assets/dolphin/external/L1_Laptop_128x51/frame_7.png b/assets/dolphin/external/L1_Laptop_128x51/frame_7.png index aae904928fc64081e8143812e3337fd06de0e7a4..24a9b853a68c78476ec6ef0f86744af4391b90ed 100644 GIT binary patch delta 462 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 RgCGC^002ovPDHLkV1hktqIduR delta 371 zcmV-(0gV3Z1nUHld^3K$5AXNBkN3Vt03g$Ru{aX{0nC{rAftb(5*w2SaQ1-_e(M)A zH_{5mGKIgFEx=l~nUStd0Y#DgK!4{g%Oa=%^#j=eGLpValH|#;MG>f+JGA6tvk;y( zdjPNr5Cg+??mGtTz=5@aMSn!eGS;Y{j)07xbx}M$ZDL;CNCQEb#@>340edqI zRGco}_ohG!KT6Vk>0S2P{LoMn)TC5txD@o3%P2Avit^FG^+kI(m&+L?jUJ!z`@!Y< z$`uz-(l#Ki0^AIimX;h$STF&4He$zZOoL;fJ>bl$=?M7J500R+f5JyD{07HEM8D(; R7$5)u002ovPDHLkV1oQ*uC@RG diff --git a/assets/dolphin/external/L1_Leaving_sad_128x64/frame_4.png b/assets/dolphin/external/L1_Leaving_sad_128x64/frame_4.png index 8beabc6f553d8e98440b4f36c1db578edd474e27..569fc7779a99f46e6e3b63dd0e4755c4362ac45d 100644 GIT binary patch delta 411 zcmV;M0c8HN1hNE>bbm3s?q&rmea(9u?tSOu-1kfXAj@|=2G)NNsx}}@=%2bcvrFu5P#zLCO7=TBkBQqT6|bN zMS6T^YPAaHca?N^?8|pam%6rF;fL2Jl5R;2sV4u>Hg@;k#~c|!2KX~uyB}YL5GW7H z8@YP+i9LdoPU`;oBzb(J1;x(W@;ovfm-;xGb$9QuAFLo{qyr)E^jCP$qBKyk)?Z=t zrj`p4Dd582!ets)!hRQRx%R0R$^n%6A|z<>$9gWQdo}<8V+m}ZgFM?fnb;>BLF|48wk*QmObaS-Y?fm~s2bbqn4?q&rmz0G|b?tSNQ&U+>Rkaap91N9$(sto`W`ll?;tkeUX zMJCk&kR+vCcEqz%EvHRMS)Pb`D|NEdm&SjmjUZ42z-RE#DqOd(0E_~14b_1q;#qyG z3Au&Hg@;k#~c|!2KX~uyB}YL5U694 zH*)pt6MF7VeRMQLDSt$)Jk zrPcu=Qox13fn_zWg#9eqa_!SmmIEmDSxC_0k9sbtdo}<8V+m}ZgO0ax$Wvfp27G}d z4tW5s8s{r*gS5o)&>nb;>BLF|48wk*QmObaS-Y?fm~s2&{Cqc)*8wpqxzb`vyIIWQk)8Yl6(uKW^IDQ5zW_K|=(CbEq^~~6LB2HKi|v2H8w(06sl+&OF^AFI0;H(Xx$yMxj85Zwqv$t zaA*giW2e%+Lva&9daVvl(rylFQYf?{rjZnSsmVQu-=$58oA_IP+~?lC_wM({1OPHO z<8f~M2e4`9z_|X!bT@krto|~Gw&@ylW2r_`Whms=4y16(RS)(6TY!Ah zqkRpa2vi*ydYRY;PNB-MrH;?1#5N27(a4JFxZFRrmz$ zQ2@TAN50QX_kX4RW2q+Z!tLP~pc1sR0RH7hFZZ+hOyn)dINq6pzv%1v%HlPQ^JW2tXRD}dKx7>zU`~k-G?2T?s SYZU+h00{s|MNUMnLSTY;g#AMR delta 528 zcmV+r0`L8@1hNE>Eq^g+6JZ#JpYL*Tjg62Lg(}*{P*A4~PJ+@{T6c$RZVn29?U=0@ z9NIzX*r{}PC~hK1uhqdx+RZ^t3x!t1G?G9sHM!T}zqU!}CjQHD&%J!_`+wheCIFDR zCmsXmKY$Gz0OR_XqPy7vu=?8^k~=ZzP^$I1JSYM9$y*GyrGLH}iu;QmSt{%Uuh6YT zs(ELEt!cL=4=n@7fFJ{?dnhRaDC$>F4#hwVJmLj_6jp^XK+UG4IFQ1kiyrI&wgCAg zNBbH;38*?S^fDXz~r-a%<@)FiV_yqu~PN!=&9`(Xsi8w4}7|T>sWL9 z>C__lSmZ=2vyqj-$1(|NhV5LhVq#@3_4?$tlOd!V#D(OKils@tmyYZ8`d`NN?2Wmp SjvD{~00{s|MNUMnLSTY?TlO+)dmF)6Sz1QH!fYX8Bc{j(EYe9pv@zbr#zf^N81e2Vd*`*7yPDm`MyDC( znKSQu&Y2k_0Fd!BmVxmfz=9b7hxAWfGGodBK@S*Z#r`AawSVgecTn^fmnO}AaJ;7x z`Stg!cJUJ+w?~p(76Lb8p=`|qfK&0GYDJ;TTd=r$Il5Sg4uYk9D+eJVfHvRf8d7UK zmZh`57eF}#v^D7?ZcC|RSxsGQ_SN#^a`hnq-IgcoOQT;UxvWrEs#q+B@196<+2)$p zSTWC@N5Dq0?0=7ZD2=YxC6{(`m*Ep569Apz+-B?W$SX-s8@Yz1?VnliLfTM}RiA1O_ kkt8R%BpbOdH<2X20Gc%!eJ2WRumAu607*qoM6N<$f-Y+RAOHXW delta 545 zcmV++0^a?*1iA!}B!2-(L_t(|oVAlZYg9oLhM$?eviVTB8w0OADD=9rJTE#*pOHGZwplgp3G)rSCdnx3pJ4t1Be}Cjd|Io^W%HVM~bBLZKvpCSa+Qc@T;n z14z=k=|>9ew2jH8)M5R5% z3fXorJskX%bSv8dip36)55Ymu0>KVA^rQu5%7CIxNs1%#r?8TCfmBY~kMB2)jR2r( zHBn5L0@yD{_ev}2L^;G$JG|?o29DI-=6MvK!fEPiz5#l%BJS74%&vbkfXec~defMq zl32`se$gj(QAy4bs;z7YU2TdkDQsFo?L$tL9XJQ|CMnadDCe_4ENwQD&T0OVoCV3P0|yvg z0)|CH@mibjlk*(9{{J@$4^h00000 LNkvXXu0mjfbOqT1 delta 470 zcmV;{0V)2+1jq!CBmobRC0u{+Iqx~=UK0Swk{w6K`VXLB9bj1hG)rXG2jH8)M5XAKzBLmsioFPfo@_$TNG3fcIPpPD*-;~bC!I3MNwJ)Rv(0~z3Q zJai*DD|$Xx|IX9#jf#3r(j5SetB0dvbKY)=X3HIJ#I*5jsvhs)2t5 zr{Nu6fxx@pH&<%O;*j|L@{h`PEVjZAFUw#W%YC!W*AXx^I}dnv7nZ-TOZlO6C{5%} zUR}Hoa8z_XWp;V-jig+Xq)!i>BT;3mhy*&7VrLd~MB0enY;pW9aFCYs00(23|2he&&=3z=yhC zHeg<_N|1F^fF~ueqCdAQ&`V&RqpsL!+;-sSIlu(SC~^RQ0I@^isz%BAH2@0$002ov JPDHLkV1lDV#G(KI delta 416 zcmV;R0bl;?1MLHlBnh-hL_t(|oVApZEjND}*NBB8lED=+VP^JN%03&OGzW%98ZgvtNSO61o^A#I~O|a3AfKhu>-v-g&Y@=%RWgmy0 zR-gwcKaiwZj$hYLzgYq4K>J=Oy;mu;D>R)JU}Lf^?a9&oS~JbOu zoQAi21p@DWUtg;wi$mhKt3N8+vDgXUJuic4EceZ}Uq-;x>@48Sl8W?b83@ZS7e?L2 zia=VYjRNq`dd-4ldZ|BKh+Vy0+y%ry6#`66w>BbRO7$6l`mjG2fq39SfEnJr9Raw> z)^TnJ>ts(Vz)bMOPQ_In+Y0AXtex=Pk|+G6Q1FT%ivM~xdWYJvP^-`>0C&uC0RX<; zREZrl@pJ$cpkkf?QBV=&Bvl9y0__wi&|QI-6tr5`#}~kM>S0)WdVfInEK|5@NYyr_ z0q0f^0CqA^894y^8PIq??Hmj|uzIA5w1<<#(o1_JWwIV$XeeAla9Yty00000NkvXX Hu0mjf+)tn1 delta 361 zcmV-v0ha!j1C|4jHh;(#D=s3ELS!M8jc8?O(pam77WP8kz{VnWsRh9Yu*(}LXnccM z*+oSWo1jIE24b$o{>?0cAbOi+KhB(UxHAxsBwq}L`3F$b0=SnyO)06q0(dD>Yh7ldycj~A0KjYI3V$LX2nxkU^M%;*V*z{| zxIkK`bq54zy@n&1Uh2;}v8$JhyMP!7A;MI2YoiHFsXhZx9rov%AU^mIVTLzvM*!ty z>v*?=_54XimV diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_0.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_0.png index f41ab5ff4ac7026e72441d24d5f3ee37ccc854d7..c1046f9e11f9f0a05a5d04f19857644f1cc786e4 100644 GIT binary patch delta 613 zcmV-r0-F7Y1&0NYEq^g@6G0G#zuh|=i`c}8us{k@9H^i`q>O}=&?6)YM-ifMK@o{2 z1qBs%ky21l@DFeqohkSO(OC)-WsGQCAjJ_y0tWdAPVAh0I}~@m*qLT_-p;-^Gn&PT zq$dY5as!*hev|;%PJt-_psPnfa??*UlmcLW6q6SbN2IBZ41c5}zG=m{m2$A9>_eqU zIk@L3-(w7D*Uel_mM(x|S@~tKMJ5Jqlwg5&G( z&KL*qB-ofxkq11#$WVZAo{d!k*;Yn{8KS+F&MwMdWyyvxgLeHfj&2S$sdBlOT_D(%|Npypu%e_m7w##E}yIrf{h>t^=l%90KAiGo~M zEGz$X4ZURnM{ZPV*LK2bFVaRRWN*psRroukn_-V4FwE@$5nX+FcbNX1ms<;3N*E;n|g_Frsc?RLBz6Y z+;!n`C!N0e&=VPcF~8$*UQ-1ukk}f@M&%gBhb%Zf5$UHC`V9cK6HIQhuIA$p)K37l zkv=gl0A9~hAn`Zcq(6|Jh=@ruV*Nn5YQH1Ck@UZ8W>Sv0sF{9aoHPr>a$38|o6e^M zU{v(qS@lROSc&7QU{ppu9z=gC_DYyEeJSQYSk5#7_~*S;00000NkvXXu0mjfb?7B7 delta 613 zcmV-r0-F7Y1&0NYEq}3VQ&AMgfA{8@2AkNl7!)cr)kz1jV?k)$MQ}(d;*i0i;L^dt z$@dB!931=)%vcf!|AF!X6&xFJ$sjbvq17mP*0f1q^6qiCFRw|@a_;%=x!-rr;auEE zdU7BmH*kpUM-hPS1eg*4x_Sh}H~l0-DFEh2F*y-&MVi{kKz};oo0i2>2?txsIaG>- zgL_rwR~ZA^bu(9!r3;`?Qho`X5lQZC-OSbGzIG!yOC5;YDwNi*l-5!X5Jp~Qg5&G( z&KL*qB-ofxkq11#$WVZAp0O%{Y%8O}G|}ElXBXwKvgAORMtlAkM>mU_RJq*C@zraT z$9tLSz@Z-N<$wK&$3oJJ2BgShg?4RcP^;nqe_oUc##AcHS@xT>>t^=l%8~>0iGplc zC@KGR4ZW2Dj=ZSYuI+@=)kqs5pSdNsTZPhk`qWNrp@}s3wR^HSUA0pW@@M(M^`}1% zPS?-?MZUxFhu7hB6%C((%`Sn@@ZU$YR?868!y-VINPoM-J&z+gEr4z{rHNQQe@KJ$ z&9Zt2nh>N##cr5Ykv_5tK(>meYsh0DJg&$qfSJg5B_QXKDnnD7x~UiWW?HTc7erDH zjk_K^?j+MUA9^CgFXp!m=QR}|1!AocZ&a3{J!HV`iAX=8&~NPOyTRlp>q^dkpneRf zjpT{(0A6^O0I|Q}#r=WwL_|!IVf6#$sr`=lMw0)snNB!tQ8WF25EB diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_1.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_1.png index 1430a46e1f9e55474196bf7d1708babe699aed02..24c08c043c837be35dcd5a80fd5e852dcaddbf55 100644 GIT binary patch delta 586 zcmV-Q0=4~_1(^kqH7MrU2Ai~LF(_1Ms*?_4Cn*SxyC@DRMMN?<6kIwuxafNY2L}iL zgJzLkDSwC3m4*zKzC~<5a{#;>0+RwjM-PDbq&JLE3V`{6Pg+E5k-9e0m$ta38R3Z` z2b;>;SBfDAx68^cGXk`#X09Sj=Rmfg+yYnwlJxtknXAYhZHIE2Xo%g+7S=8mRudNB zhfZmX<6CfZgadfwt&ge5U7npsC_p$%Mk=1XQ-4PJ6NI}f?H!bxXUPJ80`0gX9Gw(u zT;*adhnJ@*j@B~MhJ8I!%g1Afg<&lkkQ|F8T9xg7rHlpqeNn_4Q7J8__*$n`HM1{Q zmMox0=%xH@LAfWZ=*pxgAjc0l+*VY;^Ekf`6aTS}j9Z^>Y9zLTv}T4hOWG0G)C| z6Ouo>PmPIdMfCwRK1h>NG+~j7^pHFNsWO_5A%g+`uq3YlWJrH^){A$BhY)H+cF+Bg6_CD@CAIGwA`bSBZF6%NeV*aE{a1+5s?fI1(yyEF8W@fmRkr=9a;S}vO!l;R2dC>z(xnpCHVIVt<^GwRX-1qCe&82YjZ%m3D7Ag zG$Dnv`_!1YR#G28cyyBCpayg2A+Rz1)PRw94W8>CT<8qu4KRway^z8B#0 YAL=qUYLFVMnE(I)07*qoM6N<$f+U6$`Tzg` diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_10.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_10.png index 4f738cda15254db73b0afab856df8cde5bae70d5..324adab8c2ccbac2f6019778acf186d841b27ac6 100644 GIT binary patch delta 594 zcmV-Y0sDrMe z2_1xXa1b2q;Gj$2E0I?wfBEvgpL5RTppmw;qVD<86_3$ydY7MB05ZM4(v=x7Y0J6V9Et>dXV(% zz|NHPrnr#?tf*Vf6qd&d#e@Ug3$KqbqQ%71AqIp2k4GHcBv%Fwe*?)jkrP*`>!z`0 z{}$2Ra%~q=&a>bE+p99d*uM|^!&Ue`OSA7V*5n&|4bnY^h|y2{NJ{p&w9_s5k+>06 z)|{bPG#4xdQJ*1zX)z740|7{#9l>#Fr}NCm0VAjr_iA1Nxv;Te3E%|AU34U zT4bx4!t(fO{9{Bxe+T~VHm*(j@vpa1oiQ#y_)|G8BJhO};OPC!&ZLjPE9x|%UM4*G zh=}uf9nK^RkRlTIjC_`wTg5=rPdIeO4FoVgJ!9U00LCK#8qh2vG%cQbka8g9BOCz+ zu*s^v0GR5!ssZNRd}0+2#BN0%Oxfy(`S7Z0LO_985;h+%e~QhuRQ0$0wG;x(ov&1f zXd^`7pO6PgdiD+g6X3Q~)nZiJ0J0u$`o`WN?cq&+zL4`;6?NNUJpeAT66`=c9Dvd8 z_SUcfmU?{Ama3|1tr9;D2f~S#tqQb(DnN6T0p9>byz_K|#VjDwgA*hVZ;OE(qoIM0 ggwYEIxsdZ86sb8s2RVlM6aWAK07*qoM6N<$f^WzfbpQYW delta 595 zcmV-Z0<8Uw1&#%fBr{b>L_t(|oL!T@Yg17a$3OSvwXe{`mSUt(s1Y{@v0H~iq7J%> zCUg+m!9j4agM%)8DUnwufBo{kpL5RTTr|>_R@6IRx>95`oZjYV27t}J;3@!3xnOPg z9mW7K*N3H4)l)qXt6i;W*;Zpc(Pyw>oI_&vOiP@$AO(G>B2xr=S?{eP7jiL z9oU(Y-V`s=fED$s>HP9ozL0Q$d*SsFMzolCI>dl5;PHr~>vCn_e=y*-iJUk~T{n$2 z`?rYhmTSA1a*hQD*j|+p#{PZSAI`$}S(<%^u_o8pYmn+OM2vpohbx)m(oVPJN8&|P zS#ySZ(QL33M16(;ro}YG4g?^1b_B%f1ucGOI3f{UrQmt-1$g# zh&DnL{s}n%w`lJGFacgmRV_xf4Iu0Bq;KpU(jK1V=L^|ltD;_8Z2YAzu@dY++#G<> z?)KKO0G4{Z(Uz*JYONAq4hO=CmaPi3fhs_AlmXuWr2msASj+$-Jvf1Tcv}o)84V3| hB#d4#$b~ci6#=O^KL@PN(4+tW002ovPDHLkV1f@<8{Yr` diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_11.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_11.png index d8fa43eefa503ace93775ddbf2c4d67be0285d8c..5cbb23ec589f7f96727224ffb78e5c8dcb5b5d04 100644 GIT binary patch delta 511 zcmVahm4PdeaWQ~U!F1{~b2Nl+sJ9ENsgTjz#ArYJ!X{60zgU1(>v^`04wo+&P0 zDV97RxJdmP<*3J%>W~9?9NikJh#z>*hg}3v4)U(ciM|ypt$!5V?}g(XB$#K;hgJ%2 z$RSqh_lXyRLt)4Kl^$vGWpU(}&bWb2ERq{i!=yi;cBnP~SFOg@=uFTz4b;=i}1Cv&@s9 z2I#OF!}X=bv48Ut1|SZB=GIzwvgUv`T{sDd&OT#||BZ;)HcS{grSQ-=zx^#A{9dDHmmvuU_1`ghNLTaE3jwm4?w1DqpVR* z)iYp2l3}+xs=8~B+;-Ln1+u8K_K~6LQjuFGjPuxqxp*leB9b;6^8gd&lTjz%_>gY2 zbzjS!9w4u&R)C?CUwOGK0LHq+Rh~9_Ic=+|s;;|%O*9yJ>R1D-!}qf0mLb3Z=m3o* zaH+zt^u8uer{$3m13eY}i>7etjD|WAqW`xYjejg?Acv})3j+WE002ovPDHLkV1l}_ B_(uQ$ delta 511 zcmV70}bxhB&d-94nsS$t#d;lQ-DYSiOOb*KS6j&6-G;s@UIVHE+CgS@M9qHo1YD}P1zd*OHo3Fevep_RfL zYKWEked2{6!JxWgMyk{op`P@TyPf6KB)sHba(0^ZqF?xZXT(b*x4M(?qJ{8b7{g&` zr(YE23?OZ;L8iDoc3#44`jEP4ZsrfSKXoT-v9VSR>f456c-TnCbvLqqJ}xah%RKpM zfDWrMTwhuoJAW@>0OAm6Zmo4EYYu4Bg_D5j>@&vr--w7!9w0?*%F#L}wB1OxYMz0w z8vu-DSL8hyV&?NS-T!QrFmw?J9guQWq(TVYW>wz+jK_i6kaPua1@?^n0mzhXlr_q! zdIoGrGVE4IRd?-?yUzNcKo)hQePpP*ROF5c<7Vu_+;|ib5lNekd4P%X$>=2C_>gY2 zbzjS!9w4u&R+4MND=(J?z*v{K%G2IHplwxE)pggfi3TlC9cy59xG!t&7y=A{4$w#f zml%Gf_cU=jEsu;C=(*^BXbP9!(NIT1^#8J>@eeF$AcwKhCHMdU002ovPDHLkV1juf B_Ll$v diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_12.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_12.png index 055d8a5e1ca9fceca76ca614a8f4aa221ed6ede6..e9562ab71f0bb4883c988245200eab5b72b7880d 100644 GIT binary patch delta 517 zcmV+g0{Z>*1oH%tBmp{+C0KuX^UZtTV`gw-8A(U7;nXI@uPOlB6JlBb80w5jcgB+n zr2tsW)|5rW5!u&9PNgrt=_b52(V(I1pGq;&;D)Dsj~sCjnE940pAidn<=4T^M9QxN zGvAV1+KFXgb;Ri|)YmT5S1lW8$8NKraWA@_(}4K4^`zhu1w1;dP+)&WoRkumfov0cWJKcf=l~8voMRar>t3@1p!> zb6EppHe&em{%ttpCD(rt2O(T}_`7qwnuv}Fq4(}(IOCz=3lYG;Cp!9o*7hp~9O^2- zEU|W?y)Bq_x&TAZvWcygDm|F0JTPxS6QUqU?sJ&9C^sW!Jv2juD=vh+rn~@{i+z!R zvWvA2``QF1fH~83Bw7-&H0{_W2O9*aAPQ)(sA(oUlAxWws4#iS10}6j0H*adrIb>t zthWHTIyWf3Wc9r4Zc0a-$!~aOEmZ)}Ch6iLkGlzxRwz0Blul)obg-EwjxwVEtuMZj zv;UGp!x-r1iE|Y?3t!3z(x&-*S>4qNYUj>KAO$G--?oTO@>A9`00000NkvXX Hu0mjfC-(dj delta 518 zcmV+h0{Q*(1oQ-uBmp~-C0Kub^X+@zW4^(OWh5QRmQ$M)zp4OiPl#y&V5l=9JsD3b zlmcKe`=%@+j>x_?aw>iCO*i4Ki3Sa2|5S>J1~)wAd*q0Nz|6N~`HWboE58nQCQ^PK znE966(oQS`t0PW#p}uyZzG~S(J9e7|jeF7coCd_VttSPSDB#gqg#v#o;-r+g3}jmw z)vFNi)%v?Ae}!cmdKGZ}yi0Rk7hKx+p>OYQI1qeGp~@{u2A^yMZR&Ux-LREL>_+vVwG+;Gu`!BGMTyY`nHRT1sTfE3>$?AF8-IR_vlh^RfTB-n`P140h9w+0U&8?EtPw7@hNe7#0;wU5f-}>Sk zIeRZDG>n06o;X*bv+$*iAZ?n@m(^XZpmy#b38Vle|JxSv52sEp^OMi5zW@LL07*qo IM6N<$f)r=^=l}o! diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_2.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_2.png index efd0ceab22db2f4308220049506a0a21d596962a..c94fbaf161a1eaa293d20a64a1ac1d35faa854f6 100644 GIT binary patch delta 449 zcmV;y0Y3hL1%U;SaDVzr(j@O5hx_vS(zBd%zIX2Topay0lp^WKz6@R8CAMFA05%d} zTmT655Qx8YlM1B(m>=fkM5H9Lr;YTbC4p&J+(|fCSMGsQBplqTsGvd$II5eOsw|!Z zvqcpY!5xz1Uf0b`Rc`B2B%!k}rN(S=d91kPxWIAbmq$3>4KHq{I6&UMTpdv{D?C20 zP@oKF6IP`y8_K9KOSD~RZJ`2>MHj*>+7CuMRU<0R!IK^VJPL{K=8vi$dXtq%lVkxW ze>Yh{!&m70&<+^<`-s;148HRz50E9&rNOp;vPRGV2rG_D_$HQTCz8o&5nrt zHpe!d*OYA})^_8K$}+IQgw`Iwn7*o%cT!5_^eX_|QhRihbvb7rP&WonR)?zE_y9ag zfY@L0#fwAfh)BmI6|uhZ)lN$SBguPtmPt6e08Djv)1+O%%4zM#XIixwVA%A@w7RDi r6l^};9=1`p7ttNJUJ0Y7FXa3OE@&^RsN00000NkvXXu0mjf_{`PR delta 449 zcmV;y0Y3hL1%U;SaDSSTG|9Wi;lB6!(zBd%zIX2Topay0ltSsszQk_e64|dj02>J~ zE&z0N3`AdgNrh4X%*Q!75h;o6X(Iz^NnjclcM=ZPm3yER2?w_-DyWbGj_PKnDvRg9 zY*7V8aAT6(>$;h#%57Z=rQ_^NsWDqz9xE<6E^r+BlgjH$FhBB&?CEPBwwork`q6?iY+7CuMRU<0R;gcQ#JPHZ#=8vi$`jeGVlVkxW ze?M74!&eyi&<+^>`-s;148HRz50E9)rQx=JvPRGV=u{k+(D9@$9+|lZ<_&22m^Q}# z&rYP0C$vDef~I2>974ZYmKOk1VNejCoR6~tdzhU;Nz8)zW0&ryW;gU1)RMiyY<5ND zw>h@yyryg;v9=p+RF8y?cg9mY&!O#|(YD$yzy?Y#PlD_mT z=br!m{Qo)k9{gAiWJ9{?(4`ZZawxkJ znyST}o(2ob-BgO62A9ezERz7XD`s>_CXaxzf(i@Zc11GJDrR&^E^9xQhO;4lb*wNw zP?&ODU?&breHw3~3keO7*H35rT+9sjj~EJ+p_Q^Oby-wKHPXZ@`Q6W`&|}htMj9Q2 z{hg{lms)iG*nceNU?w?B_DhycotPyM5Aw-betpF&CNxTq$9b@vaG_4CT4TFnPCm>} zYJl7iV5~4bxIcwnaL8S`7GKY8FTHOMmt$>=mwSY~ty+eofozqX99!>RwTH`S0FO^_ z`tHra{V59|)f%qJJOITDRakA9Da{Vt?&ND?w|HunN#9J1()~Nku#c z$8VeGplL%BWB;>ZUE~C@1=3|S4FhaJyH=7X03&heOF$;TnSpg}DyEW?qN(~4Wknp9 zwTl7m<=)<4iU%U{$L!d0LQ}FQv9Z?Ks5H@E08(0e00a8$DW#NB89fhx>(@yoH(8f5 zdn>Xbes!}0?9E~sXcGW%k7(5bop#OynU|fT9Eiw)={Bk(n^mB`-I34;k!47oTQ4Lu zqM-@Ei1}Gch&DmZR{*pQI%@T+R#a2BKx*%#x}g>1Z9P=)wo$PU(Hyc_3H_mu)%*u5 Ww>+G>3oJ(f00001%JRqHzzA1p2)g3awxkJ zn40BI&w~Y(+Ej|32bU@;sE`2LRWrIIlSg2zsDdJ-x+d9YRWrIIm$es3)7cQOHddS- zC{8&kU?=j+eI9SZ3keU9*H35rs+bw>A1M?lLpyD&G-Od3)yxpB6m~zO0+-1YG&5*F z=7J9G?1&YlV|JQtIlu*4dC(# zPT##bxIbk9Qma!h&BcmUIP{?r5dQms*18Sf`IraD5PxYeT=Cm;1T}zW#Yqu4u2jWk zaQwD;4w??MF!p;kZ525|WI?8arfGmJ=+w*d1YjfzJn_l;I5V)WP1RKMQZhA9!kmbc zV(p?&XSugGn9_lW{4qN=ozRr+O>C^i8U#~+$xYVf z?B0rOh<4YC!QL!Zfi^w>_Xt-lh}${iXJ5uwIS`Qp(`{6T@ek#zZ+9dxLTDAz;MNNX zjA&>9Fk*g|6Q(Ut^Hl(?{n)K>)tYJ=7Nqx1svBBC!RAAaZW~qmB3eWCR6>8~V>$l; XE4MtHb#kq*$b*K(a*P0^y?~ zErp{L6fTiyQczHF7byh=KY)t3BeIcbX`(v_4V{Y=>0&Dd7LF7{9G&Cb?oiyFKQhhU zJp1lDJF7W7Baxg+w%p`MJwsIpE64-Xa zov{bID%Vkpu?G(uDrhhTdZAruN@)UCt175ME;Gr$5A8}*9%;`=-#Hbpy;|L#t8O_t zpk@5}jK}kMW6A?e*?BcnB@THxQ7CX?t{0Okec4l1b=NRQm5W1E;8My#cMa_avo}>U zRa(RHtzI5OZGXC#%7dqL^i(fIK2)ZA`S#TdY7-A}JH^Yem3bu3@d@ZP4@R#WXrSos zT>Gq6x96|6(7QRj8d56ung^q$hEdi!glP6{642nKOnyRLQeDKDDD@2tPg_=|K_w2!$2c`O(KfVU7!_=Y#OorC zre%DVhy2P0$L>cWau%1%>73e1BqCkB?;;}7OToD#XCfkUskIB>#2BTNQhEI@Gi%RG z@*)%>Ib9WRI2r9$vS{n4pq_$EAny1p5|K!3n(8>aaq`@fsjGyzE*XF&S^ yeKyB{K7jcdr!S+sObe z1%y%2g(p6=z_SJ$si98&2Nu7XzTh(E_Cpw~Pcy>6g^LS^^H zBVXNFyxvCdWpHaqvCwNCj#e5*S?dr~TC#D3^6T}Y1_;=NKc7F2R$>QUCuni^#n$5W zb_~oW&^>sYWc=j!1$Fv9(bX3+nkUCmKlfu}0IUv;c7LN|kD7Jc0E333F;q-oF#pzT z>H}y-*d<1c7J)%hwFS z#$$EJuXJ$iK`0{UQK^*7sV#>h(#8EQA|ky6TsU$rA|h8>R{)#{qm)uAtKX%v_RJ(N zLoSpvaa)Iz(Qd_?wq6422}l#9GJXn0Bov#3I!bRG|2C2w8Dbbah5(G1lb)nNdjNg5 w#(+M6`MaR*sApP1nb{?Q%q%5y33@K(Ka;veE>dh;EdT%j07*qoM6N<$f}t-VmH+?% diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_7.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_7.png index a8427f1b9f830b59990d846f6134112e2faa0eb9..fb13a48b0a13188fef9904828ce6f9eef2855ffb 100644 GIT binary patch delta 618 zcmV-w0+s!O1%m~UB!5atL_t(|oMn^0YZO5o#XmEKpIHFbyTl;@ps7=$v(xG-lz#%?RJvwTL~N0=j%8o! z;>Fd3H@Y6IDRWCHx*nW!mFLn&Z2R$aQRaI@Ca1g{n5oI+Q$LXVSk-2THm&+cl()#d3AGut z;|<0tc-AEbrgiUcToci(ADz&5tb5OsXh{Z*t8CCR{Ylm@G@2Zr2L(2w*DmB=iv{_jwa1i%b0UVO6gf<^ey4q-L4etpyi;mTsYPNd5RuxPY>0@+cBiAvJOu#8zz#&D zE|PjYVPgPkCyya^AQiD&njz@eNhayoRYYBl1R@ehD?Ji+Ci}^^kI!Q+Z~y=R07*qoM6N<$ Ef*^z+_5c6? delta 617 zcmV-v0+#)Q1%d^TB!5XsL_t(|oMn^0Z_`i|g}?XgmQq>@g-DgCXapMrP>G=f!bJ>J zVgW&_4h$I>5G)-Sn6N8#VBim6q8X4t4iaKRNXSNIh71gm7?J`*M3EBI6sM`}%iuV_ zdYAWneBO88v97Tr38W(FvTxFps7=#^QP5xD1QaOsq~pi5wS(eI+lH@ zix*cD-RLq{Q|6XZbQzp;mFLnYZ2R$aQRaI>Ca1g{m?>oPsUJ@l<-E2dX&4o;tC`%& zNN(9Mfl}lY1{l}FvwaMR7L5A?T|%F`J%<7#WN$3#(vWo(tJ)0Frd9ul@)nslp*Dkd zyuq8Qfi9)i!hcYfOOWr+Vx76dmhQ_!;DFVi<^5aR%l8H*DF84Ab|4~k zk(BX-fnrK0c?_`wsfgXu43&XZ(j#GKv!DDn(mB$i*~^lcYYahe zrh;|=8d0_@&;a=LX+#}YSG59b=&It&Kq(nA90>Ox>2o~lxlHu+00000NkvXXu0mjf D@m?hq diff --git a/assets/dolphin/external/L1_Mad_fist_128x64/frame_8.png b/assets/dolphin/external/L1_Mad_fist_128x64/frame_8.png index a276c604ead63a94befff249a1609391737b9d27..9cf7366e4b9fea0b3640d6499538262f56936127 100644 GIT binary patch delta 613 zcmV-r0-F7Y1&0NYEq}pl6G0Tle>1yn18r#y1_C`OcoP&03Oy8(o;-LGOz6Qw4jzPh zsNk_Q8z?B~AJAKK5G{%Sfs|dSe?Sf%0tFKlBvMKONlBXS&hwDn?WVrVoA=E(-96qOm(Y%INqwE0TwPg9ApZc zv*$&0#a0@zE2XXa;ds6l*v43?o#s7Ld6ZG^dC}6qNVWqQf8HO@*Cx*}&I9(-zpe8k z7+>U%^nKUcuwG=IooM*R5LotH{Qeh!b@?i7dSI1q(tp%t|9IDDZs)xN3~H85VCB-=OjR7xqO7WHnp z)w}NGvtG#u8pS{(%-T4UMKuD#Ecw{dG8B>SC@Qr-$(``qNOa^=%zzOP>?Z(#@1+>f z4uIuc0rY@Cs~L4eZD<8Krb9fL3MJPF`dZCD9NWkPra+ItHT3aNMC30IPA%l8BT<8h_fzm2|{4tq`}y9F&#) zQz^zA+^s6N$`o+snN&^ICO|r`+&tJZ$$d?P#=JMFT8ewmD4a zx8^Sj=(4ReVwa2CwWHBOHL#7blDmz2ru-3&xfuZaKF#3EjTBwH4Fv#sFCHT>Rb_fDQR7ExKS8Z-3IzCI4j4C$an90s2+TCa`iT z+WxX+o|q3{Gn!Wq@Xp>QQqX^OssZKTeFR{!il%RH)I z2g^_r|CWe_IUI^eNBmHQr#46=RG`c%COZ(3j$Dd}h@3@=O2$e{YMl$Cfl^8-wWRl= zQun%&&tAh1G#mr<$ZO+-K_vzvFS)U#WgsG*VVr6|^zG=|NPOfI6OJJe9574zy*LK6 z17JB5fG!YdHK%T+r>pR#Bexxi=bmBfRi_XA`E`No3_#%N>gTe~DWM4f9`zjy diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_0.png b/assets/dolphin/external/L1_Mods_128x64/frame_0.png index dae4941666320c2435b6791ca2058a3a3c0003a7..e185204eec4551d3af3f18d48a6736e067d9c055 100644 GIT binary patch delta 649 zcmV;40(SkN1)&9yB!6g0L_t(|oUM~FY*S|xg};0Khz&vbWkDS%exR^>VnW0Lx}y$R z8w4|qhyn5}b;t%turNTRMo4t1I#dF|z_SoiVX4Z1KtOOnf(Rk`8M(2YyywGU2NGC& z$8R|I{OA71#MW{CU(hx)3pRnS05qB=6eTGDOu&cVd1@n#3x5C!lqHD`08}K&&O)&d zy0zq6*GAv^s6E&~BaONHElH9~Vnf}`j1d@A?zc22$$=Mus#c}3=`DlVsU{VD-Ljeh z?S~J4GQrD9==DOF+3X_*U}9oxVy(+VuyKkV_e%2)+*AzY5kT(bc4$0-wEH)Z;n;wa zG0b*4vo5`^cf}M1@J~I0EOq6z zz5z59w-2lq1B$20`UsesM@s-`VJ(3Qj_n`%e!Xo0s0OeHGO!cJj;BCCdm73q zSjMsec}r4P(wthukUs#60Q^}uGiM3-8A6C+z`1RuH-FpFN+YBOFnFc)rS-W%7p7X0 z0!2?APu@6UWoQEUfYY;oO~aXx<9##pj7GR-5n~ba1xdcj06>RI1mrawj#S4wvCY?T zv_Rnew$k|{X7)Ko7UHFNPqh*c4@s{i52kIrFb1uddJMSlQ-AMHa9AJ>|JTgSjx|2% zzy6PAX0IcFOYMn^@3$-c^6A3*F8Uz=2>^%PZ}cJnrkX$@*>>$0)hd#P&2h#*jet{@ jl#qw0wrpnKRsAy>pDR>;SC!cS0000}F3C=S=2fI~MGbaBvvBIqCvf}(>7BB+b#Ac|U31#giHIg!{T?KycIl4`4~@AwOL4Q$_SOq{ylI$epd!QTh zzFs!^)koz~^h5tNz|6y@B*`VQy4}o-A?TMLHZ>#3fwzFlR;Iq@E&b_<1||JeS*ii8 z$Bz%0;N3WMyCF=i^$`OwHnu*o=J^3wJ;kO6g;@u#D+aO%AagR?J6eOJ^8`q7tk3Zn zrrT{=xjkvXqkjrqORTo-^LQ~^FlR;5Yx42yI#616YP9UkAQB*R#pDI>yc$88xUx#m z02+#0yO;6-`4dI`511Oow+l^2^8jdWxdtU1`)lC)!-hGa9Kd!+!Hyj~oB#o>Nhl^@ zDGLTAmbJq$VH-DnVdPoJJ|6VKeD>MBLOf)40 zie5e&zp~$o&;am0e^1|;gnvQ~_sq;w>fy3Qj6}@lB>5730PQUhkX3NlUmj`4He12b z9D#Fnv3)CM`VB@J;)Qs7xfBl$Nw**mCT%n~0?n9e47l%7Z|7!km?H_~76KY)3xoi! z>ei{L1Aq4b5*pqQvilc-r_iMoUzkW~1Mo?gJL$iRQqfn2ZLw4Nr5q&w!pzJL*1zgo zZ-<%LhX~+YYwYZQ8nR_3s*=D^yWNCU5`%002ovPDHLkU;%>3zb%{q diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_1.png b/assets/dolphin/external/L1_Mods_128x64/frame_1.png index dee80b476ee5c39076bf133cf4289d2c1e1aea43..69bff228bf3fe16ad2e06b7b5753997cb984d6e7 100644 GIT binary patch delta 652 zcmV;70(1SR1*8R#B!6p3L_t(|oUM~RY!p`%g}-}u@ERPk<1R(w9gx$zN`>%Pf*z%y zNnsGQh%!WicowB_hbd@i?81oz6-Y=(N#U_9q);ImgaoX2iIflvG`q<0dVgjP#jb-L zT5kCj=bm@&J0=c}^Latr%q-XkIs(vW8c>#`05AbtcX?(bjenm2Qm9B0djP0PlKlYX zF6d6(53Y^=?<3yWLnDoawM>%alGsx>Gh+mb>RP4+Ne;XKG-ETY?|VyeZni;HAGhqJ zK>N|7(`k>AG`9r#rVkVgQyliP`j6k44>fB}vb zTu9*D_BQR(w||3xjTly2mVWuybR}<^)0gy|a`Jo~sP>$cw*5Se1jt>FTlJ++{<$&_VirxaIM&(5_b5sXFE4>t|ICgyKd-Ko=FcZL6FaSG$>P!m=XwN~V z1va2*K%PnJNLo-f40#J!1>j!I%$z##9fS}ifb-DCUw$vknfZYErJhBMMJ$#i`40E*0Xi{Gz#?6Tsim>)#1>-1NfPX->Ut-?&t^zHH(;)xt7VsE$sU}pDp!e)7@F$c9H7MczQCsZC@(xVlPtDBi z)cSk<+x^B_YERzy`>3cyMC<=qH?*#=Nb58a+uT$MCzjx+Io m1e}VblsrUn)671p`Ue0pN@ zW#x{);hyuI`yCTU$N8|JV`df{0$l-UJWVJ|QUI8MogaB-<9{7D0aB<)5(faNN|JpA z3@_y9R_U0aHnnQ$v@{RdCQ!Er00~A=bJ#a@1%6>n^7b{?n=h8PwNp3 z+pavu0GdiVpX`+b%3oIW1~4@%FIt(S1^`;`r%=VQGb7*I$JT-Q08YUW?DMnd+dx2P z2`X){AuR*)Oj1`;P1z{q9pDZC_v>cnG=K{bLX-f`&wn=g@;G|684?2&ziZGK)QT=F zW|Cadt*CV?whA->ykI%{X$h`|obQ>L4_RLATf{`fN=cIM@!&q7g-HTd=sC=;PV6SO z665S5vV7~(#+7ZYU8C5^mC^lLgT~*>TDwN^y3n=h( zTL@^5X@3X-0@d%vyy@Qn+7PEf{_uO?3G7o%s3t-G*+t+FC=csU!UyBF*!A)r%;LYA znc3ORxB92|v6D%PDHLkV1nTPKeGS; diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_10.png b/assets/dolphin/external/L1_Mods_128x64/frame_10.png index d8bc4b6a195fe1c6c3fb3e3ee7b449b674fa6ada..d09cc03a0e781b7012e38893da2ced098ecb0c1b 100644 GIT binary patch delta 661 zcmV;G0&4xQ1+4{;B!6^CL_t(|oUN0+Z&PO!#((Gd+D`cL&C(5gk?6og2F8e71YN2Q zfdR24`~{2%slwMx*#IFH7BaL|VSxb&Lh)z5G8w;2q#0PdS>Qp{1Ejmq7X5gljJKrZvdJY zA%G4J>rV>HiOt41C~@cKsbB6S%z!~V_K{@1QBKlB4rxRl9JH;u0<;pU3E;k4ySEKfVWUwt5U#xkfp^= z7gv}d=TFVd>~Q^)zVvpQnZ1bs&UePny&F~g>z%{u4tgN~H2@B{Us+A#FxdcdwfyC2 v#brrpa-6N7GT@XX)mRTv+%&UqqW&-T)-NO|s}7xW00000NkvXXu0mjfzpyz% delta 663 zcmV;I0%-lM1+N8=B!6~EL_t(|oUN0;Z&L>pg};0KY$u_`FAE#^A*Dm7X6P6-4+R#) zkaj@blKur95fX}@J7p`V>cY|tfPjSzNFW$u3nI0!P%5RBq6Rw*snS-qX&T3N;=}MB z5zw`FyPuBkPaPBQhV%b|j+t5T7U&8pP_k%3`(rKO4_2iAFvCT)^>rdZd$26rUQ zWeRwj?ACzJ>gt(v+fVNo5+Hwt@l^3VCIMhP10QD-wXURKb0W>h9*!(JaO3Y;;2;8M zIxsbwk7;**1b>?8a*AMnXNOMx^MXTlX66}IYj0ATeu5+EyUP@l-|9fncLs+?i2+cT z+^?TVTF~5_23ro5{`NA^Q1VZH7iW+5M=@Y(d^l+J9EM+x&4ZTuH7MiYH%l?_BEJNb z10W;<`|9*;8*r?evq`}AX_^^oN$N_fsFfah8@L9*a(~s#oDJX$2q8)U=bnvhj-o&6 zVLJQpcMUcMm0=gATasK+DQtcdTL~HfKIG5#-Ba*&$ZXHde4k@c-y#YTi#bWY%P$Q; zQzHb>!QtRpVJET07zZWpoSi-QAYmR1+Odx$YmIV}K5|GS^5B#m$rYfLP)z{$lj@!L z034Q#T7T#k0-E3`gaCo6*JJ+bUjo`zsqO^_555O}f<4N~bAq71b{=>M#r-M;%m|$}3DRTa^nVFrgztX?G<7Q?rB7n=C@o%?A)js@lSUpNFBy$q*nfniWsU4;pK(3a* xI;XfSDRqu>08GHjKfJbq##Mj{* z?`|9Y>LY%#jRqRU#fBuwC9$n;X2t;Y@{0`>B{}d8(726L-7!mVwooIl|GI2cfYql@ zPn+QVQE0V7nBM6l0bp!w_r@Bx`e1ora?j)JoCAM-odUKZfVu-GMuD{X45;@-6~XNK zI;+*Q!w#j%$$ytvC0!<0c!4A7_Dx2Tw^bn6bUHuH!~m#C=FM?QS2Z)E&S!_>=E^)! zQ?fR+fzu*A76Yc*{!XLq(7Ui_7F6D>KpqGGGZzCNhsr=c074?L^QWd#z_C)s#sTY6 zH#5|b)Ra_Iqrc=8-~j;hB{OrDfO8N+lmN~{%Px@U5YSN$KnUO}9h{z? zd<2kE^L$>gweSb<99ra)JB2Rm0DRKDX7|b$Dd(L*TI}-3Mg~%UWoBlls^9dzeaOu0 zV+3$>b?nCHQKdic9F`8y4gshDaMJyLtN&?*8jz_B-JMaKm()*=v-jHoI5|lbwn7xw d&Fp_s{{i!0C`ekSqvQYp002ovPDHLkV1n=6F)jcA delta 645 zcmV;00($+N1)c?vB!6W|L_t(|oUM~RZxd-0g`aypNgTdBX|@9o64c}eAUsh*N0Hqk zZ9+#!i71H2RA~?(KtdF(ixm=7DUevP1-4d5Km`pT0l^LhC=&97gxHQ99}1h0K+7$k z;+*r|`yLa!$N9Zr)yyo|0h$8PU}`WTNdaI2R_^iA1{(7K6@SP{65j!kmn1s}BW=*# zCEslu{hTBIKic-62Pi&jNRnI<-_^~`7=T{>QA0&Z4!i+0ZsSyUyrnl+sFBwXmyHUr z`uOol6TCeFtyTy#J98uejE(KySmSCREDu8N`7gWRz@5+2z*YoMci{LakT#zH^}eVg zm|I_Gwfg605!?HIwomev$N`abSQ4F zECMwpYeO42Ez+YgV5;r!G};cmGkfMh<;@D@aqyeD7J)oTC^RIw zqDxWzVr)660eFwK#rqR*He|YOX5M9DanmA(BNj4}e1lVEK*zHLY{fXN)rQv-TZnN~ z#+@KM^)O)$jBbc$lWv+%`iG>Il?M~HH!}>4gi->yA6EO&K5!_L2677l9pM0k0It#> zGc%L_0)C{_yccXeya7Cg7Ww3Qq02e|A9TCfz3@rOd1ufTJ3q3Kfz)4^nb}nJi@vrG znwh=>YAJL6d+J?ti!XKdn#$GL@lQvx@VQ`pt3nei;BKC#k|# fh~m1L{ZjRB^I#}QapOqE00000NkvXXu0mjf&lx2C diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_12.png b/assets/dolphin/external/L1_Mods_128x64/frame_12.png index f3dcb8b40a47f668e84b14c0b5d8b812deac5519..bfe678880a9bcbdd9e9e0c8758a74df39e104a5e 100644 GIT binary patch delta 634 zcmV-=0)_pQ1(OAkB!5~-L_t(|oUM~PYgADbg}=RXoykMZ%@5GIf);lE07-6)b`~)| zz{JklMn%lr=`6Jn#KsgV7!gtkLYhpJfZC{y2x6Rxg%FjQ2{Ds-WR}IfiI3V{owGQs zvsi0w6Mv8Me}RUXS?~wY6o9g+Kwgppzyz$%^WHL!S%5MOOMg;eFl#AC5x_1(z6E-; z>VJP5{i`E>u?uCS#ig1g$t5940A^-nK(DY=Q&Exw9|4`P6D*sV1FS{#X2vQMvKJ43 zOtMu58Y?Sj0^sBTYPUuLBt4l(?}PK)a5|a(od}@n z^h&|;80yWJKz|j7Vtai7W;QozET79c+tiQ6Sh>E&@Yrh{dKU+0$R{6`fuQZ+cZTEC zl3jyBBH&Faf^Htwfr6y-z0XrYQq&FjWq8YOOs_HPgAq6SB>7edWDlP)Y#zBWfMq52G*#;1&Wp3J?MWDm{q#-o6IZ z0fL>y+jGDxD_^3J0Bi#AMWfB`^>32AlWmJ#&2IttJ2Nvo{d`S7TZhcdK1TpIH|F$p zK=r-yhsi9h5P&iOqwe>%BLK!KKwo*^-D$-IN$KV|LmL_33`;7r6Qa1fTmC=i7l9!n U3YW>L>Hq)$07*qoM6N<$g2OQ(egFUf delta 635 zcmV->0)+jO1(XGlB!62;L_t(|oUN13Z%lC%#XtAk&Z1 z8CHTrF|<0bfPV%K<=*l<%&e@?uARy`YqSo=Shcl8Ve$i z?)Y>IaN1@T0ydywW~eEtBdM%rD)KUL7l8SSnK_HV>3{T^3E(`n(WNoE)WVee@U!}h z{c@)alTAs1B52$>wkD_p_z-w`Mf2{nwnn zjj6S1{xF%P8dfv-4L5I0Z>n)W&=X^Q5?GBPBa8NS4429%Q`Y~{5ceM!dJ_y zo~D>LdNX6<%W=Lh&@eL#J_A|;&}eFqm!u%ffO@I+evZEl@P8UWAti-^B(V+v6-f&6 z7l5^0Ki$qqzc?Fxts|yg2H4dX93F{FmUZy zr_J|@lKjkHz=t#eXuN!R#NOP#4r{;I_C~?|Ah- zAx+}i>v3_ZBRW*WM9!vwaQ_z{g+mk_KDVW=do!Y#*8B=Xr zxBls;n(d@e{AA@|p;w%iv|+ZLD<97Qr(tFxU_I()hJThNwIo%vT#@9w2krv!uxe(` z0&sHZW&${mZG3TpHuK?7`{0eb3*Abq0;Oe1fg-5S99q-JW*-2L4$|+29B-SM_kfN? zt?d!l#w7XbP-yt`IKf6>a?K=1Jlx%ZV^0$U48X?|C?<)=>lq6U+Lo~#ZVA-{aNnc$ z?yWEdvwr|?A)vhgAwZz&y_o+xmw*f)=s&#${ATHSiU~jyfPXaA>RtX%*xLf^`ZTvnc3S2;Ks_VmL`;Kgg;EK&<+8HC1J{aW-S7sR0GD+O?Rdh7bOjw q<7`-B!6>BL_t(|oUN0+Z&L>p#eetaVLN>JrBc-afgchpI}7onb(g9G zMWQ37|3U`}Lf~hK0k(GNkS@v4c1Rb7O0DSf(hBi0P%(g5lGtI03Wz*MCXPQ3gPlOy zwRgHY!?{QIoMU3|IR7uuGBXR_13CiGWEzl{q#(?IX1VcVk$~j32&QOxPC`pZyo&jcN9s#ss!pWK7Ho%dKfaOjb zxIWmS%@0bF{K6C9O_~6-?%w^>mgjE4_B|_{f-eDQ6JS*R9e|k`KXH<-O;^?d*!XUS z-XnF+_w`3vQh!yF6Okzkh2# zrpBRu^W9Ii&`Y88&dSlspj4H#Yqot=Ihz4a%gjQ+27ffo3~fm2NUCY0CdqjL{0PA9 zx|umEz`3!T3E=!@g|%tAEQMq3qh-&zo@=%)L_t(|oUN0)YZPG=#eer^%u8b?pq;uS_;)0u#7f?NHz8~K? z*TkRW{9mDJW)}P=)CHh?iZCEa0kD{4uzH{OmU|RZAcIj!Vt+#b5=pWP@by%N?k)SD z&qjZ9#4k3a+#^{iOOjktHj%rVnUM?K!a`YzBqY@&b&h5Q#W{LSQtP3lX-N*OCQ!?O z>eA9-6I8Bw+GvDua)YDw40`xuV*%9=hI69w?bPW$sOwzse)#F&tW!GCP#Qxg0w_5} zMF5rhOQ3{|{$V5*m93V%3HY;a|WCW|34K=-3s%dMoI zz(iS6pa@F04mAWt0Pg~i57KFc9BZ1Hw}Eww>N_K5`y_d-2O3@+B-kuW|61Bl+&jAi zN9I!l48R9dD5R;!8yyP{+V;MF+)`#zzp$l7Wk{9H z@`veFnjrug0ORhr8W8{!MW8R+c5_;BK~isXob5ky!5Nj5(FsvpGP8eH{TF=nJ~pl( RD2f08002ovPDHLkV1hJZD8T># delta 632 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 delta 657 zcmV;C0&e}M1*rv)B!6&8L_t(|oUN0)YZP%5g}?jDm~7%>C!K{lqvQ|p4-hj-tQC=9 zm)QF#RSA7mB@_$Wk+VB==jfQBH*-a zx~;O|-#(%j;cxvQ21*O5B*{riCI{Qi%ou*Mdla(Fhv`3k^zDz2Z%r({z7>o;EzCJ!tpv~u0XhyS<}ozdFM)dI0J_gJ zX4ltg9=QJ9qkrkcST>sM{yb5vcE39E`)!@QHWGiR03MF|sZ4PM5cLD9DTGycTMnU) z1Jz(R)D${J3khvjAu0;-@Lj^qM=r}lf zaCkkoxd_KPBJHibSva?>`Ag($J*BP??>QL6{X@!VIPZvU9~y=}@Pf11m7nEyECQbI=yMJko-F zxOZk|HdXniADz8sX3HVKwdVNMFQaPwemcLri;fTdCIN??o6q_uovZ;v$+nv_iULXf r<~X*08vsX9QbNy1QQge`srpak6Gk;j+CSs~015yANkvXXu0mjf`6o53 diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_17.png b/assets/dolphin/external/L1_Mods_128x64/frame_17.png index 8f8e0ce528a649ae51727d9a7e29906e5c6ba1a3..f10d328f9db8908aa2deab71a8d4255f5c78841c 100644 GIT binary patch delta 625 zcmV-%0*?Kp1)>FzBvxrjL_t(|oUN0+k4#|{#((F`wL7~$=5D94bBRAg?3JueVk08D zS-nJwgv=e)c2=QLprAm3gh+hE-H3!rG@>zPNZ2egGpza8`FIpFE0)$Ne|htqk$N0| z)d66mpWpIso#LWG7+yXo_x>edF5bZy)iqbu`i_KCMZTTv9qSQa3YW1P1x1 zH5DZxsVS*{FwH9-S#L_}-j-C5w7#X80*&X-_nV+K0qu4ONB;CNv_CbqF|pc(jbQRo zcEN#_B0xU^=s1v50`=AlpxSnT?h}}QUtOiK>%xzKMhKHwy8YAcT)Fqv8Qf~=cru>6 zT>=7}>fyGM7$6=7RM9Y*SEUH5IH&?ZMM-0Js^>&Dd||5O9#3v{B3rg3MOW8S2(qXS zOiF`tFJF)puvO(<@4$}D&eef{A0g!GU_Gh^s3xf;si;~}lCuI_1K>`{%$zcRa0o(( z62N(2*$)$Fc_|!vAG}ky+$|1TFjJG{iq1vVbFt;10^kD*(Y<|eB4n;(X5OQ)xMmS! z5epef-sJ8bKzp(TeFz<<7spl;TZr*YqGfmP&mDM}Fb_tofYw=c%ijvRa*Dy1_uak+ z`)qS&3~C9b1aRM}&h!>=xJuZ6Gq(`XZni-P5U6xL=Ih!SpiZ`(4f+o+0xzLWJ_+g} zs{nk|_KmX9-#+4J(Qo~H0u-OtBuOqQogQsBGh+k> z`KL7%B_XLPsedTVD;`;IO6uN`RFL#brI`Ya<>dn=XiY%79m3H+eGKhSO>Io9c5x$^ ze3YGcV6_O)j{rIjXy63K?|m9l3daGsCquO98>^&Kq0!fA5MnMcFfFs6c*Mk zVk}}lBgvcGT?Di@OVEeVVduiwT4M7to=LRg&i&bg4-@9Vh!xN}r*8RcL03;R`24Qh z_h7$m&Wu4Vp_BmbyVTja1stw_5%$b21hj{35CQ}$-H7?Jeio>cZD)i2!%M&mXp>KZ zddM08A9SVFJNLOaE$@!nVrRyiWK#TcXc9)qj7wu(XX% z2*V};``oX#hbNt`0GV{t<$~h8q+xTM&EH1A$w^A-hbXR^**{hP30tfZNG7{ssipt` N002ovPDHLkV1gzWD^LIc diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_18.png b/assets/dolphin/external/L1_Mods_128x64/frame_18.png index bb934d7dab8cf974f7851ba124c995cf9f83cfe0..05cdb7be820342e5baa9063e0456327749969b37 100644 GIT binary patch delta 650 zcmV;50(JeY1)>FzB!6j1L_t(|oUN0+Yf}Lf#eetq*{1a)uZy^7p5mV&_7&K%W>xrcM_ zF|l!+{|lOCX2BnzEdUKCgE2`8fQ51j%ePpxp++eIQYcCi>wf?!Ns^s`rQ<2OS@n%; zqrZK`PuI~~f2HBai;-iVJ0g)|P(us8~Pa!Cv1~Ac9zuGO$NebAi>Yn!n?BvXB0|@vL zLa_nXrDlNYlG>8Ws+T1>%fNL2?pDmqsRBnJgeU==`+rvWIF6PU!h!exd#zR1%KbJ> z)g`&2VpuyLTM;q<@AI{BZyHXA%y!JoyKIkEEn+lcengVDc$)#*S0I2U4!u{SD~Zj= zI4E)F;OwCX2`9jy5qlw7%u31NkbSbqgK675G79yCN&>j=R%h21aJXiqp<4)OFWVpl z2voTd^M7si9MG_GB@cQJE(0$hr{yF^jQDFaGn-lX zuAiNqW@aBEfQ!w^3tz_7`2BQYWgDFkfE0lJ?pO1{NvASkB;9mnPH{=npgGRw??d1e kC8hL26xYn`pQ`@?+Q&dN7&>hP00000NkvXXt^-0~f(ME}f&c&j delta 660 zcmV;F0&D%E1*`>-B!6>BL_t(|oUN0+Yg-2t#eetu#g?59Jue|k`(BOzj8MOTyM#bY z2qBx@J&-X33VQ0~t;x`(OFcA0n;{(vg?!*=f+3mm1*VIYrxY6F1SBP{^khpq9V8n& zS$oIdaL?h~drTZ1=l=yQGqd0j=maDyKT3hhYD1FblCrtcb~7_ZU=Xb~RFQQBT!Ikd6mb5u(wj-NwH6M& z4>q+|+p7#ZFxQaeipydB`^3tS1NeY<%|Fh;^^k?GnR$=X@vg;;$1IOY@;0w>Kxaz? z(88hre0(Rh)|( zj4X5u0e{VM3POND)jJ9AcfSLgR;d<2|Nf7_Qz(eimjuD?#ueainCMj*$9!+p7P~po z<}73W!pzL(*FNaq?iXfeuVa8)t?3`$PO5qEbYb-r-4KRN0={{Mn6PJ-ON6#`hVKTKs4F-91SG^0000d!OF=L-L3f6 zwb9=`;uo7}q)~camn6BQbb6$2X2u8%iqGpRNkURfQvXO=R6MfYlGJ-3Xese{$tU>*2Ube}{Rp7zKtTyK+OL3G#{qiJ;MDp$ z&HdNb0-7OAVt?uGF9!;h?7K6#-`1IAJbAwi1UR+h9VIb9JPfF+VKQ&Z5!7%{6@aRe z=Im7FL^gb3surG3?sOtsu_Q%{8z}^N)Bq->K_x5BOA6Sj%Ki^vr)Q5gfPl3S3JtJ~ zngOayYD+4qUXtXj0=EHJDw~;80ggckQ35!REdOZ&t$!?sL+^tR>Q#EBK^vy)l3dZ{ zsCFr~0#pHfz}nKo88{nqv}!LlO<#gBjbN8-sd6IRV`Fsk?UvI4lxo<`x1vz%B>@0+sK? zeBZbLG=9i;@KC0C?-K8WF3Idy4lVye#@riy-{22{CJC8ioZ28v)Sbz`q|xM zX7(`xxZ0e$@^wOu-=8il@1h$5kOFYX{Z?mq(&;LYOSj#aS6q}dY>u=2#|StDNh$ph f#Wgegr|Q1|(l$X|g|SU000000NkvXXu0mjfPrWm9 delta 655 zcmV;A0&xAF1*Zj&B!6y6L_t(|oUN0;Z&P;^#XtA@kvO5jFB?nyUQzyxs(F#Zh6Jjr zs$1xe)UiSW`D>;uh-P5vP%^XwFpvQWiMHZJ2&tVA3u3|8tprg(vYn*<5kLDd*dRjJ z-tnWa?m0T&drTZ1=l=yAGqdOe&=Y{B(|}n?ih%8E4!gH_YJbxmNdR)FND}V=kVumK z06X92=w{uI%BCOt$R4Ke^^*WpAG9P%E-7E0ZZ|Vy3dYHUma3AF)Ri;k_4uvIfNrw)7tF@K~1aPC?8?>V%y9Z$TEpKDkj zR>wV9Zb@>bSJUQ|%qq|T@G<*acUR#1m~#U&^MaMFLra-SSuaWQE@w6YeNiSFLF};K zm^lcxp5djS9e1Mm%>BT5Ffv764n;c&(>qMZ?$L@JFU>$JPz!+j=Nf$W2{>#L7v>fN zTH*x60DqBczh=BSyaco<_sh}f{&nCl=#zw~9diJ{Kl-^>Tz*|F%ZJmp*u~i{r5t}^ zW@f9~d-`|qshQb}6yV3s;D%PDHLkV1jjPLG%Cs diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_2.png b/assets/dolphin/external/L1_Mods_128x64/frame_2.png index c0a3ced72faccfe5f5800ad1d477247e1cb274f6..bba9f165e4a0d90057b86193f4ee16b63efed279 100644 GIT binary patch delta 652 zcmV;70(1SM1*8R#B!6p3L_t(|oUM~FY!i1B#((em5}O9)E(>Cy^%bRircS87NMS(? z5d$l!+Pz~{scp`vL$;QIg`s3fE432?5)uqtgpgnYR0$!`2D_D7lpy(xLTo2@{yNx! z1XkYo8@~7bzyJG893JQWg07iaZ~*iKpz*YzDoFug0ycl=v44#}vw`wa6{HhcvV}Q~r?bK8TdG8)j z;MkBaQdrvFrhi-cvmC6APgQ;6t|Z>+|qc#Nxoryx>^8YcZ2CD-}t;!yhd`r)mTxL=NS{$?eou z61rFz1Zb9N zhyVgLe}74MvHLBMQ|s4)^5$jWKJ=-lK_0OUz(4xASA4fsG~|2Zw%9k-9V!|A$jrBUDBvI&eY2> ma6(BLWrUKpnY~l>{{h)dDea|n*IEDo002ovP6b4+LSTZdj5`|u delta 650 zcmV;50(JeQ1)>FzB!6j1L_t(|oUM~FXcT!A#((eam|ZX8Od7FJcRXUB%1SO1&_*nR zg{_gh{>nq}%&b_X^DM5hI8&&gm4zT^;RF%1QV~S(F77IvqQcHf%fToN1G&CD2qLH%A^^O78R324fuSlaZK!Q6C{y8c&L z&4A8>2S-fs_ayXs5uDiUBL!e$VrydUi$k#S6+hgqEjVyZDNx1$rBm9W@eK0rL!iL1 z0Y9fOx3WT~a(}Q0xSzn4+_K&OPKIU6oOMYrsHQKLfclz~(XsQxNPyCnLJ07<5krx? z%7hL;Q)%bGYBiwxOQ?^4sTsa(wH+-3pvAQe>Nxh}(D$oti@;O>d!PV2b$B)h0y;Ag z=3oUa1Io6fuB3UjhatZQt^jbeVP?)Ua2z6tQ^2`xwSU*!(YvLH1Yq!w)|c1k2VIzM zOLE0w)H;_~2u%PV@FBl71HVSh_RY)-cExKJGZwQ@k>sm9YXUk{BPbzqD4&e2q_&XY zl~nKCIXZjnPRbk@i2|>s&zto$9Ua=hJ(#ia${4g$8Y$quU;TYMz+sW7Ft-TMBs(Dj z2-LWm@PBdb43Jan)q?WQpTHyNQBQ+BVg-OV`m0;~{-KzbuaDYdr>m<}GW@BTnH^sG zq|g1mW@fKqfIm7D7v64H{^jVR#!mVXqb31AxnJ%L>oDB}D%rM6CzaGC4V&YPe;NTN kl$23MC~2A5H&y=+*-RYyFL00000NkvXXt^-0~f&rjFWdHyG diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_20.png b/assets/dolphin/external/L1_Mods_128x64/frame_20.png index 2096e47e1c0ddd9116eefb8951c1304776829fc8..76f90079224ea2b93710eb5f88f03fa50e176fec 100644 GIT binary patch delta 636 zcmV-?0)zdQ1(gMmB!65qrY6v$vql7CncfJBn)417J7p*to2 z^V#Tcj`;bClzSwzRY{Ud$|iDmGc$6bU!1Kfk%Xj%q~4*ds5nP&Nb1~|G$qM_g#;QI zP@kVaV1n9ZPg|`Jj;?TYp27fs)24uW2%|Ys^=9hy?=^L5a6kH_aLK70X(^4N7Xh@L zvLb+5^94|8Ie(}OaAIkR`mU=#0wRm5VAlyE zY|wkX0bWfMp4r7{)fqZ^-lqQck|*Fz*HW)-_`1$YGyfups*Tcztk;GT!%OKf z@!;$Z9DJM_U;ti7p_rx~uXHTfW9x>7aZ8y_0r#D1?^qAxFazKg0@@7_0tA}A9kaN6 z9;g8Xy>-XefR~n?&MUqIz$cA2yBEGm@=m@jc5b8r;IGZhZ2z;5`q|!YX7(Whxbl5Q zU)HL&TK+J-NIL`|17O_!Mk@kfq6`dWYpzczE=n3~jsYLO8s_(RmC5{0$od>LHBhMAhr5)4$WyiNXK)qrwHJa;T*=hF%2F zcFKwXYRwlwrGMq1GQhE=CF(ma{|JaIs)A*kKku9A zz>e>ot^rQn%tFArRLl%jB{d}_swR@01>gn%_h!w^DSrV62iHsi=YbVIuBOd=NDR<_ zuTH6xG!vMrN(vM~<=XC+pbX%B;QlUposj9anRypjwy3#2;=+g|Zwx@g(*=T|VMdqI zQR2bd9oYXcHNXJ8kU}v{Jznuxu*=qrjN+Cun*#3J)!w!iCSeZ1Ed;a^AOr|BdoyNn z`7BTa2zGi8uK+JCJDFR234l+UYj zPG455HZ*^jo~IqcAW6Wa`?b~}4pU`dBwKZLMsZQnAUV#O@44ViNXqDiD6W{pg};0K5+_Ynzf4F-;78S|Ri*v|jb9*L z5JQC2wc&4IfK~j2HikG~4ahSX>jp8#XaOnZMJ>DcGyzXC8l?Q^?y^mIij zKz(@{{Z`tgEPt&?T9D+V(LbMV6xH^Jkhn z!Pg(4)v->1DJ%Tcl>>di%9W!Of(az;O48kGx40n5Mt?}fb9;>nI88GP0qasTGgOz< zl2lf`EXjEW+yh{3(afAGaDMR31aKbM#P%d@Ho}4T{@?0UJLOgxN_9zrBB-sLJ``jC z-Uoi3rPm3WZ=0ESfg_7rA4M$XB>BO>XZY;|!3db~{bZbY(7OZY))NB^z$X$YCdq&k zz=K(v%72aHmav!r?x)l~`60|e1;8x?^a(%+5NPp!%-+%WKm#D?t=|HkSbC9S0kRxrf_&**;-rwiN-~d|uJ+q#7gm!{i$65E#PGjQh%A z1VAYRa_QKe1;s^4gXB0<&xe9jkd)F3QCu^#cNe1m3IS&~XB}F``~Uy|07*qoM6N<$ Ef>B~UNdN!< delta 667 zcmV;M0%ZNR1+xW^B!7BIL_t(|oUM~RYg7pohM#lhCX=W*H&sB;xhq>Kf`7owjmAbS zM6fmfhAnnoR(Ec|LKX#6Y_S$*3T@JuLR7T5Q3S2TMl5u^6N{)Dm>JDFnasz##l-Pr z+db9cJ#fwo=Xp(hTh9M0G|kL{uY{HWv{f18B`Jt9pjOJ>FMsmf08ar5DJc{riO&L1 zmZV_v7hq%Z=f4_*+3;-iy^omo48U;5L$!L6FDKxQh@sW z1iD{Zr7SH-ntzq#q|w`b%eke4y$GP~K)9dWQq+13)HWPoG1*mNeVyjs`Hv28j*pjU ztWc=_5jb(C+okLxFP4D-w_~v#YhPXiVgT1WxR6ia>0AUgpr9&X_0#>=Cyq4V1gEy4 z#gR^cDJ$IU%7H#$<;rFX!5ETOCFxqVTbz|-L!{!FwSPthoTizDfOV;v8LCTaNh+&e zmgKw#t^=?%XJ$?nI63%c0yuYUY-OA_%i+L#|CKt`PPtWvQe9G@2x<$5Hv}1g_kml} z^g1CY+GgfmVAG=3&WMXSN&aczGdw#+Fa&0FJsBk)^zOj%dx-%C;A06ClVrdN;K8(Q z&yC`iFn^Z-?mwu#X9r9{1;8x?^dmqB5NPg3%-ZH}Km#D?-TM=GV(Cv56M%I9-e{`T zJ^!~P?`);Te$9UZ@MmUbHuGRb|Fn0TnZ1qxu6(FybzF@h{9*Dt?eGiyOt~*?3=&ex zfLuCqbyjgv(jYm`_77WvQ;?L>3sGD%v;Rc>UlajnH)n)4NTUD%002ovPDHLkV1h&) BKGgsK diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_22.png b/assets/dolphin/external/L1_Mods_128x64/frame_22.png index 69995b0372ec21eadd137377ccbf702d9f4930e6..bd8464e4e264c1f20789b82a37d79fafabe85351 100644 GIT binary patch delta 649 zcmV;40(SkQ1)&9yB!6g0L_t(|oUM~FOjBVLg}?jrfFeX51Bo%wK9RwZ(ZN7b+#HBe zoU~z##2VKy_#Dv69R1%GYVbCyWX(7=BN!lXPmcDWv`XHjKclvX3 zbN-Wa&oOa$9RC+6o0)lk02Ki!o;T{CDBst1< z!F+bIKzV8DqN(JkGu1@3>ccg_v1~W33qk;TdK|0zqMcY#ajFNMZIL2X#$!@X!^f@n zrcKZ|od;@;%zt%yGf=9$0}53~>lHo$H@3Ga_f7ruh}N0@5LouuxBl*2wCUJ+t|&!& zxUvX%IF5|I9lz1Eq-l^BoCDxvCV&EtvYGinUSWBpC-P`qJ+smWnDX6oksKw!1I_Mc z!AqbaNs+Xdi;`oK>>yI9kE+UJTQy`;6Ai%tgSi1(l-#_gf^n z_yYb!0`DL&ZQEfRspi``;L?0(fC0Ef2+1&Xsr`(3!`9i-hO>}N2sn32wUb>i2(tjr zd_esGK7W9x%;OZByLW*SfY+Fx2Hsot7ReA`8-R5UR-$`9B)NLr7Q55F1K^g;%xvWK znts(zn3=5x01vii^}R!-gYf&|BsCv^EC7Sf%~S&bhVnp5w)NqdQb|e8<~TaHV!+WY jDNDmgse+mPQ}y4?vpf?$kAr*w0000-TtP3C9dT5r2jx$upR-m?IBhmm$># z-7UF4*9L#<$UO^s`)2_1PpXn6CkaUcFf$_owzE&F%1d%U0niaU!gBKCv82wTq)ADR zx}7keMiHp5teiB}{CuI6Znb;b~McV}-0GW(qRUgzy6jf(4=xCo5sX3jHdK%wr z!x!xe-GgPI?SCj-V7LIa<_nK^eep0}sdPc6?5^&CEr>mIck-0XO<2 zx#R-=l{8*2F#VfhKe_nr9B^tWG{68{I)rQ(y4CKlD62@R0F`hF*CD? zr)&Dr-e+dE8UWnBr11FL_t(|oUN0wPg7wO#eetXSt=rZ9axOoXY>zn5(i?7!NJWz zjT<^TkxmwWh7v=9aWD+Jh_uKcQIoccrKOJ^hZY29&-VR>bI+H1kBRMa{9jNpGxN59 zRRO52B6LcU2bh3wPxxqUj}d@8BqWIq0Hh?zu0m%W^mxH-9~=CeBlBhhwLP*^B}tN# z#D=?>8Ew!^O_h|DM?v$d zV)^nHcE6Z3bhJZ?Bu$QJNc!q&V2|})v=GPyfFpN~-W>2g7r-Kp9jEyKP*hmCkd#NX z#Mrxk08GWicvNy!pDD_KCf4%cL9cpp61L9^-206C9;|d0Y{(3zjUGHX`c*0^RpTYjcjuj(j`fr0$3bB zZV4y?xF+y?051ESs+*aMfHez<1&nq`@~Sa^0M!2)PY1yRh^>SZqnTM}XMobW8dH}F z8Xu z;m6u_piC`Z^VVOE0dJv3Dva0StN^g2`>WB7@7X1}M!PL`t+PtF7dK~SW`ol|^}D`M z&&;e40Nk!5Z++dV^5)U`xgP310C@n8IX7Nw)gfI3I`TX24Jnh7)M}1n*UvU^BqZfo f_fe*`xqtKrY@|b>4oC+500000NkvXXu0mjfI=n8h delta 646 zcmV;10(t$g1+fK?Br14GL_t(|oUN0wPg7wO#eetXS*oCY9axOoXXFoXQU_y;!NH9| zjTd(M}8kBNWf_`jfHX69`H zs{&A4Md*|y4=@4W9`n)KGe!XlkdP!c0FaU-y8@kc(4%?xuWhhBM`kA2^dAMt=1Y4Wj`ucf-Ed)LgXV^j@69A6fd3tidyIcT^ICh-j13*z>Whg0+ zXo>NEw*i=niHWG>s6JJc0ZpzIz=LLEVMfZTIUl74C3$#30ANG?17*NbF*6^qh($AV zNYXNp4#Tu0$2Z_U08esehK@@5AtkcPhk)a##lP%A%hNs?faYg4<{R1ODx^!2JO!{g zance{1aM8@Ssz^T8K|3?i-0u?hy{#wNb;(GF#vS@6`l@(2M}8cC&x0cot*_r>uTgL zE@)ze=66Xh9zrT?EmD`qmz~#VT^%tfh2%owICoI>1Kr?Y(rzr>@yrL*%O3DyB)*3Wa*cLd>}qF~a3AiynVI!Z|J3hM z`hGLBg#h4IC3*AfPL(&0&d=?k?$d4(aKgEXTB{D}BG6ITad%Lel%!U399=)#z>$zt gVBJTV*5GqPA%jEGi_?n56C7TxV!f ztFzbk{D$kk9`5@x@v|Ji7gWv6{2I^@fZ8fSk0g1(1bn*1D}QTyi~tlNElG3$kd-7m z2R#d*f2Q5fW5Zu_L=QTs?UA1-OOl)v_UI7QC41(1Kt4Yw|*wq{G~OVE0NWY zDfJ>yefaQ@3EuWWvl+ngwK-w{G8qT_y_%?eCF6koo%e?OsZmcgfOG|xca?xyhcu#j zs5Bk}363c{Wq+GsxK`ua;XU1s8NF2Gp_*q>o+$+idG8i-9Nv z9EB5XEdb98AX&IBA?Ff*4h87x{zcgSd$ zBv+>ep#3R4y}i924)%A~;_=bwvEvqa$IbcLzcItFF$Te<;_dy}cx92=ef@*;1GcfN z8_F?-IDcw-?{=zled9+iHB-(4Kz(e108)4r{)+grcmb$Dj9g;_NCmEnVAhve%1Gd9cE@TA;2Hi%;k^kRarf{ps#guGAq{0=kOpt_>;5N?K`-W8>F0aHJ&_SsV^fw6eKh^gjk0JQo#hJpTXy002ov JPDHLkV1kY%KTrSw delta 682 zcmV;b0#*IH1;Pc8B!7uXL_t(|oUN13PgG|Zg`fB16Glp56B>-gCaZ?=f*$j{g@_&CL7(&=7#yDnXYdd4IqJtk3eNwP#EK6d^51 z>;WJvNp=&uHbFlwxx=>M(Hzl}aNmCdAU|K0Bsod!O*b>64O-dxvhtD~@He1->u2G> zUs_|i5?Ot4sTYCj)2A0r@Ujn@%>b?)%n<{S$vEJL{Y2%jG7cErd!Klmn)FlyNLOIz zTnSilNE2FvN`K=ykl%ya&=k&8cgBo>FMz>+}~M?XC|ZPj#==IZ`W!+#f<%hF#;|XpY6}ayNlHM z`)`~dvVZQ5PAJC|;;8Ap`&fI|H*@(;GvzD*)W>NEAca@q`-qLLFM$fg_?<^nzzb-S zjkys}1K_p3X(YG*Z9HqZ?RH!2R#%rq8nNxRK)bR)lQ14mj?k(~fVyPG?r_XZn07oBQw Q8vp diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_25.png b/assets/dolphin/external/L1_Mods_128x64/frame_25.png index f15cb8032a8356e20a726b7fc28eb97bdafaa283..776f1a73df216db7523513a7921a31909fff8ece 100644 GIT binary patch delta 676 zcmV;V0$csP1-u22B!7cRL_t(|oUN0;Z;Wvq$6udsA8obto*TMIxX z9Xg2Et{qJx1|;;JGZ6y@i-;PKupo$pNUv!c#2^M1+FltnZRPH$-nIAKy$!vi%--Ag zHM~FXZ$6*5iNEFezo2Yp=B)!20jQ}0bV!m1n1K0ve6Xg+2!B8x5|Ts<04YhblhCmO zx;yRu9vl3dBb;cVrbl+HC`odXXt|r2(FBduSW#I?4)_RYm+fMF-Cr6*=>jSJnX;S* z%9E1^Oz>$ZRI5H5UY{cZAenT)o!^OySCS6c*Lrt7?>z5O_90P%`i=rH>ySn?2c^m@ zAja{|j@l*|T7O#N$HCq0jv0N@GL|oWX7khghW55ev84MW%1B>5^=+}S0620- z=*vV00l+m;iNp`FI;^SfT@rejf;-ehl)ec&DA`3(5TH!NLe+e<5WhH zhZh6@Hrzj00vu&C^8t&QH8Y1K%>n5sN=tIg1GfNpkbg5Xv`5mSl*no<0vvm+^K%!P z8}|tT8dIuG*RqWYq>GZAf^)&_xzG|&0B{X5!Q(zS<}aNW8&&#!bbhXf6(4{+ z0Q;RAt*+G}T>#qh8?I#(rX;O3$I<=02^wPN{mtCU>tN&puhk@O3}=yiHcW~4(M5XcRug9=u!3|QG)ue0x<26hBObQ z${QfY@xcadGk**$F7os6-ZsaSzGw-{muA@V^uD3}EmAD${*W@#oTuJxwsp`VAPfLU z?igEh!24VP(>Pj>@DZS(sC+yrk9d}mcLA6RiP5;|Sb3;81l?T8g9nY;)JrL=#$=qz zNb>N40KkqP>@NY1vYGjS#Y~%-Lz3o!bQGl}ITnCh0DnBlnHkzA>6?_uYAgaA`>bQ8 z6U~qNgaC~R)h27%Mg`JENlw9qVERI62`B)#2ASY-FP!k{Up6xrlNnyIfVO~(Et0&Y zwuhGi^}N9267ap=-F50wM(H!uzfMd{ILDLzzGo2wVC>wslgfG3CckGidWOcr$?LD3 z*K1uZZGTXV$VHC8b33$leK-61!q}M)XgA&96XJQw-46M-at1SGe^nyuYR$IT+4dzUMec){nH?Pep8wsm diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_26.png b/assets/dolphin/external/L1_Mods_128x64/frame_26.png index b773ccc9db12a700557e2bf2d54903c21b7e46aa..4df95f37596acd927c36190b3768ea3d5122fcb6 100644 GIT binary patch delta 677 zcmV;W0$TmQ1-%83B!7fSL_t(|oUM~TY*S|x#eetu;RGo7nF$Im_; zVu!%Y*}mU!?)h}@G4ZvW?+Y4cX2BY;AOLlhK%XQ9fC+eii+`8a^%w@ILQazC0iYmB zb{6`UKsTrS>#@wmKW%}#`r06MSLnrf9h3s9^{az(jt=3>cmkN|jxx%%A!_&wzKl9_qRwrJTRvJoR0 zN#5k&1kizg0=E3LC4lzx?0h^nQhMUtTFz2y@7*zedRn9B=*+1l?~h+5g?MF=I&*E- zg8|!^$$vsErV;~z?^5sj#*Y2riCYM051S#xh+LIzgM)|e1Js!y4cZT`08e3&Li{5E z^8mcn)rIuJTzXdC>bAws_ch6k;4jR~?C``#eO}sWW;PuGTx#V1e79cp)uRh5n^_70 zr~+`%eROf94#fn>RM-7Aq*6iBN^_izAG^TGNgk@w4pC`kbKmHHQu;(&o|WXS00000 LNkvXXu0mjf(W69t delta 679 zcmV;Y0$BaM1-}K5B!7lUL_t(|oUM~RY*Tj>#eetu;iORTGZhSc$PdB7mI)XTb_5+N zF)*NrEo97qx>N!N;%BCa1sGTunp8qau+U1Cs9=aAghbT=5P}6rUSJ?1m25+BKK$&% z5GMp?&i4Ne_ng1(Jtn@E^L;_X%q&<376hQK66len05AdXZ-4W`x-&)qs*sZ;Rsm3u zBs&W|OQ2g*{y?^Vwf=_9ckdWFl#xP)4DK}i8Y6am=Ku@iN`X_#3ESjvodY!TUr z(TpT-@+<*#xR-#fyS4_>QmrwdB3=i=+^*EKw-U-HB)1hkJW5Mo5G%JzYQqyGTZnIsL`_pSl|!XkzE zCj#aHc&pzR(hGCxS$V757CYb5Br}RXH8ZnglOObHX}6i#bOdmvk-z-z2i4b(F05=} zDWuyZ;E4O!;z}Kg36QC7xIU;-LDEWdoJ}9Pz#z#P#m!V@B z^kmHaJvR6^NBE|NnjWR$swBxtqUCO8MiZp@;i^iK9PkCu9^1pnhQFj|3Nd;8nX*s; z>Tlm3F~QevSX%Po)W#eU0J)q492JL(hwF(dWdnnYo1G(250Q0{Yt|xdo07 z0y@x%r`?5a2Xk>|KC=E0XD5q2R9D+J4__G9z!lPINv<&5NHBuLQt1s^X?_r62WCY9u@Iwz4 zlk3y3OAXg(w#BY?EO03D+^CtE9Uht0ujQR)X5#_CoqF!}WS45|N9UKfvFrm-0pOr> z150alD8xWprTu=d!n~xl<~TObHi086sluv{!Wp&A{iEL*nMOZhp$}vL00000B!7WPL_t(|oUM~RPZVJkg`fK}F8H~#g^h{XG4cbb)WW#4Q41r5 zg&I4w)52I-sEM+(Rumewu(1#dHPHqN6B9LI2_ex~7z%Av7_^W8$?gL3wZj|>7DQ`L z_ddlv=gqyx#NTrKUr;wQ^EQD+0jQ}MS|!N?Ou*C&K3j7}H-A6{vXaC)0P>P#*PwM7 z^nA?yZ5#ZXBODGk{JQ~4gH=hAlf?RTGc%eX%@0;plH`CdfI6&$p-q2D&lh6y`s1=t z0qP?o$4&6H9hR1SIJ-GV1VAq5fM*+tst^q(oAGx4NXCo{D>H_a%#fFaR9o zbL=hyAIkwu;Mj7SPXMu^`h}c4k{>+$5P&Jp_9j)w%BYeM)VERr57Nf?uvAhymgKu6 zd3ZqpU>A;^ssWC=nfZVvOqiKNk|u#d6cr>nrhq2^41bi(3>}m-BV|h(i~z?$Yx}+p zO%C~l0O>b1#u}w`5eijFPQl$^;&y0Rhyh&6+`!8sT=6-zY-TQ@IIv;?nSh=aNp6A8 zK0t@t@U*|s?qDv?%tzJ};_OWEG}YCX?Sq%c)q9r(Z-0$WdTyWAudlE34mk4xwX+L+08izoAu}sCff}icz17zbf%mXPJ~9I40r;WE zi^;9&x21+_G}~e~S{FDPd2ZCq%#IDs>eupKGqdpk;C?-K@8?$4Hjd6O?_$}f*(BhI zbG=JzbtuF@OJ&QWE`@nXYt3ng9R* diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_28.png b/assets/dolphin/external/L1_Mods_128x64/frame_28.png index 8840bbcea2229c14d0d4d0e3871f2561cc59cea0..406d965ea3e6c6b5196984e7fd5720e1288298c0 100644 GIT binary patch delta 650 zcmV;50(JeQ1)>FzB!6j1L_t(|oUM~RXj5Srg`fA!Z5n@jGZaM7T(yH^CvlKA)j9|c zA}VgJqm$rbMQm<1M;%;T+Cc{eQ9%$2V(Jel4&tCVXiZvBP$7xN{4_T`4)rcmn07`0bg$M))J0sfPWGUNRnqTZ81jyz|KK` z2Xu46{rPS1w~qXi-%vtYcvO`nIY~$ofSDNyu#$UJRY8&iihzb~nEB+zLrL8`k|rcM z>UO|dU}NTRshKx?M3x^PZwS z{o%WLActf9k*8-SV@qO#ykH*yuZjUwaMaDr2g(ZTr?T?s9pC+KCtxZM%tTd34e&s- z%cXc3l@v)U3sG)DlC4H6KmM&Y%NkOPsF)e5N@__esDB!p`~|oUz}=#mITnDU@ijxh z@xU^R>*z4=$J$pusJqZDvqG2+RUF z^8pP3_+|w%GapCV+cwW@h7$ z7xlBV&CKj$0C4&HtUj+(Z8iLUI8Da~paj5(b2IG#fYCCLD)n8PP(CLqZjNKa_XKbZ kNGj3uQNChk|5W`K;d40In;OxK00000NkvXXt^-0~f|7(an*aa+ delta 652 zcmV;70(1SM1*8R#B!6p3L_t(|oUM~TNR)9H$3M@{*MC|0ItUTey_G|wQ#6F0Wkb*) zQPHN2PC-jXDlwBV2<^t ziqf=(3$s89$F8B*S4LtpFqcp`fQi~{<87fMuNPo(x7>oQ3xCg+KteH6$fphUU zL%{Le+Lqg?G3&>-Z+=#Nv7V`9puZ@|Qvij@lT|?;z-mj_21!hIN4WHtFiz9002ovP6b4+LSTYpd^{ll diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_29.png b/assets/dolphin/external/L1_Mods_128x64/frame_29.png index 762c6e0d4b942f5f69281008ade9a4f82ce77db6..1a46e8b01421d5fb37cdad4329da26c14f2eba8f 100644 GIT binary patch delta 661 zcmV;G0&4xQ1+4{;B!6^CL_t(|oUM~Ri&F^{hM#kClgaosH0An-LWJAc@YJWb*M^Bpdu_ zJ=NhoaLxLPr3aR0cDW6hs-&sAR9N@qe!Yo&wCJq%bE*{4W4C zNeZ_A26VTdxzrlZre~wCeZ=$@0H!A*o^#CgAmQw)jd-r~}+wqV*Mw0g@ zX|dmDJ_7g?Gc#NGXHEb0cA1$yj{wfUU)HNxwWjcg$vJuk1@9yhup=0uW8k3%V4M zC=e2e4wGLHr3geQc->u@6e*y&E1;o)0ttx}w-*G03TV(3aI6n0kqD7(IIw;Gcq#0d z04-CE-jQZrX`a`_$K`xkp>1Xs{7>izK$FT~Mv{Uk0~(d=<$pDv7~m!(Yt@oaiF`qW2EZvkMsii=*TRIjJR>QIP(KGee`?XFDDosg&B4{if?Fupg9|1RyFzkmM z@0pnofGvwUJ0lizlKkD+XL!CyFa@TtnG}e}y*qI1c4B}5crk%;l8iY4JUC+8as}KH z>IvY!Pk+6yx5GRv1Gt5N_5*|ff$CRdUTs|fS^&ZD_V2(0OMj%C0Bi#ALi3%$FaJpL z{v<8-^UON{e{5!E3x96tZEvrc+4BhC*VoJXdseL}{9$sDUibli=G~XNgpYT@SStN z^L@v})^YwXXquS?o4}d?G?*F`B`E+*z}Ne{vVq1$fD}rS#D4|=%93Q~px6f8TlTHC z(cgQ-k2lajqq5kLB)KFu)XmHofL?jAp^792-T)f2F_t#nr8hHCqpUwJt0~ZY^5mEa z-i|`66~c+ldn5pijBHJ;alH>Vo?^$N;aLan_7WhE0CFd{@m(ooYfphLj`cX5z|6`D z&BEbsz~dNhXMdLN`7~O}>*lOWdQCBTy#$myPD;}*_agyvS2FN?UX7rex$?LVYD$`i zR*M0}GbMckOtsRRdc)B&0GjKhP{y%?{Uh(U%>iQp?1e7asiV^w5YU{2QU=zgZb06U zv?i&dMnB}Qz-<8Lt7hgb1IHnRC;^;@HvC~b`mz)f1Ap}1X?=OU(p!Uxh9p;XC8}SF ztpqgy@9|^)!6cjwnQohzcbS~;Sj14oY(bK*GBpQie3$^5IQ*y$tt2)ZrA zm;r+<_Ti+Pm6LvKJ!+8$leV)k1dW7h0=OSgd;czQm^0GQEd(^mZU_MaRqw=n>s$ab zt5jP-zIbp0cm^%X$xDKu^Xdff5sKX^Lzu4*+G6L6tBh0d7iMO5bm_Z(w)dHty^jE{ zHAk*~-mdKTrwgmQX@>x$0330@)rtU^r~!p^+s%`T%aZ!dadv(m0H-7=B@aZ0#A)#jze|5}00D zp;VDX(0P3l_z1;rl_AX62Whbj#Z@LK_)9Z0J2L-WKihlF%$6g7 z>&?+?pGTDa{&Zn=7wwQil7PeRw_E)0)+jR1(XGlB!62;L_t(|oUN0+Yg1tu#edJ!Ym@qwn_W#52XS(8Y*VR&;7|lz ztLR_gq9Qgo;NYl(i%UD`V3#@wg^Ki6Dd;3F(#4q6L8yf!TAQZ%I1cw#{8)Xa_dW2Q z_i)a6O#C^{{{>oRX2EYjTL4O@1{p~T028o2#|KL}rU7EeNqr0-Ua-Rfqt{=bf0A-AxrW9^_pSncXP%zR2El^-CQC z=obO%0hwz#ZGS+s{RZgas0zU4%}u_aJ3Z{!F#wC3YaCdZH-|&eBNMGI0|lJcxY>!s z5`cjI#S^P1fp?Y5P|rBcR76ct>q=e$YjX);s^w;S4JS_Sn%#*ZfI%ANpxP@;r9mYx zu1rie0jFhVAz(e~W`-J)+LFp@Bqpx|j{$gAF*BzMTz^Q?i~wiBvTGxBSPm2IgOBP~ zyXAHn#u}0W6`?+JW?N7L@B#3AoPIZCvSVi619q&~K3L@5kR;zqgoZb>1iuP1ycrEs zO3v=U`NhZp1MqAFg(&jUZpVUg+cz|fTSO%S+>ferWIv3;EPz`G=r}+K5UBE`#Kz8T zNbC;!i*yfxw-#Tg5CLog@L8kn-kq4&IPH?x0M{U-%2 VDykGrpMn4Y002ovPDHLkV1nxyCW!z5 delta 637 zcmV-@0)qXN1(pSnB!68=L_t(|oUN0;Yg2I)#XtA<*`!v@%dRGhgE%=kwyD%Xa1cS) zw&-8rq9Qgg;NYl(i%UD`V3#@wg^Kv96m$|7>0(UkAgGX})~0EG9EbNT{#d=!_j};p zdpPGF6MvTTe}R^nS@0Xs7J$;KK}M1Szyy3*;Ju|YW&vWzNqVK{+{>`KGs<^v<7NGp1AxUycND_dV8Il-CgTjl3%90$YC_*RgBr9fydOXjLtGg&^ zN|Iv(E=O#|Kx=jNjA^9=x#sqE2$uk-D`^cP0P=Y!re(KNMvZ%US48HQ6?>m$@3{J< zjsf(G0QG>(m4BSRL9_iD=;5de!1U%O-_M>JcI+sC#m#m0FD;tGLFkc*)>eQ5PHV#K zcp?cvK>yl8$lt8y!7kFf(aWP8pbW65&`Z<)H%El#$X=6Ed+E7AOr|hc~s)t z&P_<<4tDy>_klMSU!@QMYy$8}W9{Cpuadl*rp0b#wgCK{nVC(#T-T4zAv3d&MS!~- z^ZGoZ=I-%_(JY;iG)cgi``mUChw&OP6z_R3rBXpsk{oArBL$qCq?mq)N_8{)C+a@| X1uZJ7J^~PR00000NkvXXu0mjfh}kc^ diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_31.png b/assets/dolphin/external/L1_Mods_128x64/frame_31.png index 2071a71b3c65cb714ba8f40a2d60a1f89369eccd..13917efddbae7e8d5efcbac3381015f2bc685fee 100644 GIT binary patch delta 664 zcmV;J0%!fN1+WE>B!72FL_t(|oL!SYOjBVL#eetXNg-nT*wI&w194(_0$Pi%~K&i+_v8jHp?o3_#v21>gbr zz|JCHEv`W;D=A4HK#@u}5Zr2Y@k!hc>dMicl4=(Qkbak4iDygBpo&V-*N+l!ndvV@qP!>*M_!7l2Q5laNn1icRr3g{7%pd2BDnfGL-puN7Q# zjA-F73m!C@d(qge1rw4yYnHI7(Xk@nD4CfLSdF}yp?`v;NK!_H*yJ7H82~Tm%*?R~ zT#Kg}0*)o?+U^Ec{aAbByQ-Vjj08gkNuE-WpC3Vx18@!C^)Se1tYT)a1{_)t9;CS6 zA;}%YKS_V-@E>yTqbi1Ms8Lh-!C#Npe+5 zQm(`9Bn|-F7c(;(eLtc)kK_DzN^M(qyzxDS*`31ELx&;pR_ z(nBLQ!m^nKZJ;$ZS|HMX+nqd6Sy?&VVf4npf%^=)P36~^f*63oL59XwN4SzsrX^jR zNM>l&mFSw1X@5zRlAM~^ngKL30L6gR)wDLDoU8&399jopYI~clvnP8Ub_~Gs{tU=MtP=85MA}Obm7x^df2!N+^X69H2 zF8FQ6fa8VrZS(`np`X3=RrU3HPJ+>rq(B)c&W|JTc4z_5$3P+HYi8yez^+B{PKMh( zlH88}N%l*hH=qOP-M+>3tbaQPoO>A`%7X#8z8Io-c7D(7_1E+kw=TV_R>@tHpb@2FW*BwUJ&aRHedh%002ovPDHLkV1kAeKd%4) diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_32.png b/assets/dolphin/external/L1_Mods_128x64/frame_32.png index fb4d154a8e816d9c7d34114e3a772b309ccffdd8..f4d0972d8b17a2f094fe93b8ca15ac2b15fef976 100644 GIT binary patch delta 597 zcmV-b0;>J@1os4xEq^~x6j2n#fA_KME{NILUYs%U15l|Ij0O`;Ec^rtiJb)`CK?Om z(Gd#+g^dl{*x0C*2}X8^L9kLAV`0Ls6dEbzt>`R*MY>uSG{*~?tSN;^B(o$ zoyy#+y7rgh$ofCP`4?kfL?i`-J)o{hMp?uINcDm5PxvTFMt=Y~Rn;D&F#@>re;JwE zZbwUpuJw-U@LzjLpm864-v=y^Q2-HTfc>ql zi+vz%f#KEF{6L2VAfGp|+&ci3)qGsy$LGC+g2m#(Lc~HhcHqNr7c7HaXcn+ea+}dcf ze+yb@29QcL-5o9fZmQo@W~Z-)B(g=?lqCsF*>I(J_`y6|O2h!*S(1!RC)U2Vadvxd zysipU6;c+CWchgLL`e+IAGNcvDr4Ii-!0V{+*M6ab7kfS!IH z^}b0;mmd54Y~Gk`#^$Fw>komqV??+XpbEfVqg!t;{7_ZXQdQN`klfAG0L%vw5t)8- zL4P;KMNUL^J%E*i;_lZG4F`@ni(MKH0097##;iqN?0yLt3WgtDSKn3D_~#go{ptaR joT>(N9Mmr#$pwHvEXDF66GZxE00000NkvXXu0mjfTC)J@1os4xEq}jjQ&AMhKj$`0(pt&OZhcSi59p*$%~L8UIQSQ63vLcA2#Q1P z?N%J59b8(0r672xd%t|ox!-fX=TI-) zDbK&EYjg}p&i?_i1Xv)Y03sq$h~|N%SU+@1rq~J@7N9qqE8>O>3s4JygYE5$ z5ssML3XPQR7_W~)^W zFP}*oXaGo1`G3Ok7f-`l97x$uTYx*{i$CZ`1>oJX2PF)oLobVJ59YG5aS$zL*2i1X zFKE6MKq8iOZ!{0Mi72Ve&0MX-y+t~dBo5?kWwkIoFwd4_HUM~bXr#8BQ2YMo*`4{x zx+>(#s>+G;yXRJCGui{Utg5uT+P<|}(5}P$H^6j&mVdam=CLxOs-_lJ;(tzunhZd) zdXEJ^yc+{t*|5h05CD_5;M&FYfu8mz$&A2|Y<{A<@ep`BK?BzUQ~}s;_UfI*AF68Fs;XKXk-MoHfcYRIA~SC; z=!!@dbcCEXDF6^mVgu00000NkvXXu0mjfziuSG diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_33.png b/assets/dolphin/external/L1_Mods_128x64/frame_33.png index 6fa9ba36653f9e48f2a0d48016762f7cd9aed98a..27e17fba687f6196e7a3aadffaa11ecefe1f749f 100644 GIT binary patch delta 490 zcmV@9&O{P``U?Df$5-(c7JqhCRhNqLG7ukZY{RGV zT!$6g#LpuG(m~=UR=z~PEI|qoDu9ScfCWIiKwDJ&A9s zx60o!+x@rz_!o!(m?u?5mY=La2GBY`uPDT3KPn(Jr~L~qX%&3#Bvmj}Qw6fsWbICE zRq_2&7oZNN0Dq9j_x3Zq*&;K}#0O229rhsDw1)Q`5%ED{@D=@tv|?+==BBEW_jEKm z&UFFt$ZfKL6f|PLbU_P@RWnI=QFDq0q?&$fxSU*2yWk*o-vJZ=S1rg|5ix(Wa$n}L z^RP5@4C|$n`>&w8R5XZ~9Tm%wuFAiDXX+-na=Ai5Y-8{?h;Y_q6O@`f4=0{&{o`Hz zU0!p=x#T(8eH(f|a(h7;c~4XZ?Sk><$+Y&`hDofd!7sI^wAgvDZmyi%KKwu07*qoM6N<$f^H(`p8x;= delta 488 zcmV(sHn&XL>^-a(m{n%AmLCVB(J65-L-5#im|h^jzCPcI&)|4n|I%m z4W3P&9A&y$0bA=oLF+Gysfb7&Aax*9UvVlD1JpO*=R3ZNuYa(xqpG@A6qkW$zqAdX zMoS%6Y-7KU6i7y~Us&-H{jvrLK&SvBA^{cv?E_s^4M=DKx+}X3MWl`;1y-H*m`F?8 zncaGR!)*8C0{CZ7T}zj7Rgq@L=O6{>oSjt^V$&ZL5So+W1(&1>KKJ4(7^|rQ*=n-( z=eDZ&eyNX((tqRt^7!6f>Sv2AI29kXO?ohZpll8Adm`e4*x)OMEs~0@otm4fN;c5R zL=!j31`^N~dxg6+$5=J9m=`stXhNdNx2CJfU20eCC+<6d9N?-2p&Yv9o2}#; z4+}%jltU-?UqOGZXwqVFn6D$d4EJ6wm*~)1|EP{&%`XGl6Xe4XFn}unN+~sLkv7mQ`5|>xXVo$cKrz#Zs9A;q z*b9No84cx_0oYcW)ugBg9gsuVU2e-pPlhd<2nVkrgy-%w_( zdRF_lH|N*qCle89^hCs&I(vO~?#h{1AhHUjep5OkxySr>3p5ky6wRGF$<`=aUxF_c zt4Slqfr5p=Zq(3f0VhLH7AWR^8uF!)9x3wuPOn%`Q<}F$L{p>>Jfp5YgEoK`XZ&IJ zju&O}S`e`v2-P0yKu`MTH-ifB1KK}yX4y1#kp^lTI#!|gW!=!uBPT3;5%?rw>Q z{-~5vYWnSE`JGKFrPPKG(Aw#2Y)(i#a?EQMWF7z^02j4hN`32o1dN5_&u>Uj6A^nk qn&ZC)fTk)UA-RVH-6OdG@E1IN0>A`xP#ORL002ov22Mn-LSTX?wETns delta 553 zcmV+^0@nTV1oH%tBo{hKL_t(|oQ;#cYZOrw#eeT*;%x9^*O5Cle`c=5+uck8g0Fjr zbMHNzb1!lCet-UTEW@Wc^8OE~{fn`!lu`~54S-n6jGj^+fHMSsyyTNAGXkiJhzuC% z1W;c%V7T|{xrB$tdPjBmYhD>hpCBKGfB{?qP)ey`iFANg$q#9$2CJ4~0E(GrNZm3F zz+M2P&ZsHJ4B$Rhe^VnJ2H+O!8XnsZz@`+o#2?7>&>9j<0OTHS>Z73oK1A_5a914b zM{t3e-CbCeOhW>og6J#hi*~ND!MNu0DsC?tE9c^m{D=VFFM6=;XsFmMLoraz4oZ}S zZ2JtSAe}!!R((|pdt;e}aVEX4renL{hJ zTC>`}y*a-=KN*Wavo9jf)YD zv6?hu94J`u?L-ajHgGZkWr1Sury*Y&>5(Ge@AixJB%yU%L^MV6pk~z7XV3xA;*3A+ z-Emfu!I@|&e;(~stI0VtFkct@ei1GwCrGFpKxdnmPS1wXG2E;PKwm^e)-qWbySpVK z`lC`xsp+?u<##%%lu{cWKzpaVu{j~p$gx_hAhp*S0B}+3rNo{?GX%zh@#i$jDLQikpj>)s{;f8Rp6iN zJTkAr=v76M0)QTaX`r?=+ES%-s+Ot4Qv&=azN?(iq@dle?T^K^rAyg0BCM(FtvK)vjE!- zVDaaF?^*xz@CKRM(yFAJXSA3kiDP}iY@fG8pUkHL*|+;1?+1QA+vE;qN3S@(qv+LK zV`sp#>mD$5c9bukb4843<^MSS_2iJe=tcfySUbFf)PFR}Aw0O&TPd>j8bi7UjJwoQ z(t59Sx6T$ZbgM<0Q4v)81;E{^Z!Bn;Bk>xQ=2QfNPLb{TUkE`}z8RPqQme0a z-g-St|K)gXUEyD4f22cE069yckJZ8QGVpN>=7Id^zY*EB@x98k&32OCPg7byNOI)q znQCNTU4MoZ0HX{d9F&y>Tt8t(<{((g%0Ixoc@1 zfJO(Hinm=^R9KVbe~#nBR|VjxNQ%j-DC|yrj~DU01>xjWWm_{qaR2}S07*qoM6N<$ Eg5zygN&o-= delta 670 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 Ef`BYGi~s-t diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_38.png b/assets/dolphin/external/L1_Mods_128x64/frame_38.png index d076f9036cc904953248923ed72e6af9777ed9ec..61e2dbac505f79685ac7d96bf1c564b0f23c2cda 100644 GIT binary patch delta 637 zcmV-@0)qXS1(pSnB!68=L_t(|oUM~Fj7(7&g}?jnTQgW@Y7sM0ZB!dAu}`9>(ITOs zLKGswdn<@aR0@f#7Rg!_1(~-LsJ4?WSZ|R?cE!xH%p3FO9>sf;ShdsLllz~0a?XF9 zSP$d>606QR7yLzZ1)vfsR3s??oPgyAymh6! z7$|m{3!&D@vN{|)l6a#pX#rw@9UJx<39Ihv(C)>mDW)QTK@;{|+GZMrJqOTz4NuP9 z4yc@{=__>B)_=gB#fBCEIM(?H>GsTUI{{p>Fb7Sl2HPR05<^Hjo*AqAof`+{r?O$aXV=M1J-9-7%3-hN{yPh$!e0;Z=g3&8WXM@KXjIp>$41BcOYWKhR zjK)fwJ9hK^(5JK67#Tn=x+xHS>iKToSb38{v92$3of&DYC_h`aPZJM)Bps4uIM0!o zp9#P~vD0h_wN94R;qbx48+}Rh5Cd#mx7$cqahHa2&s9w^6#)#Iu!YoFYkZzg_g$oDzcI zcv*7!34rSC?-kibUA_0w_X+y<BEx-GC4dp-1&Ye*0O2)|2k)37=MlUX&3La%J#=-_M@X<=E z-T&+}8hOic?#%Z?pFYgS$N+NDO@ZiR&v*02^6LzWb$yZRL_t(|oUM~PXcSQthQD*OW*1au1;Iw#(L#e&N(*r(SP6m_ zT1U~sE`o&!>Q3;1Woip!tKthA3uQ-xq)aCPHI5Gu47eL#nRR#WZ!xoItUcZR;GBET z`R+BbHXQ#KteBZq{sOB4P#GyyC8+|KfX}yiX=ROz00{(=#D5R~4N0=IQ0;+kExEPV zhX3{v%?(jmqt)(6lAI)l)y>S1gqM7y-BC-D1Ev+DaU18EnV|tsYfbgM$U5%A=kE^gjaB9o3V8 zV(8|huzCT9mVW>^)|)P;wH*MKboa-kWDd5%fNC58+t1V-D-&j8pqo1)(kEGk{OH)? zZXgtdwVI<_v}7|O)W*6M-rp|BK?|vnI+Eh7BX7Zxn70D>M+-?f>*Q=WS70%wKeBVF z9sTXaVrZ62E&woXW)65)FWC3EOlf}vcvk-v0Z2Cv4Sx!C_d12fyZ6;ovElQc4{y-m$GL?m1y?ghmcyMV@cimONJo;38NqV0ZNkZ4`56S+ zt{CcIO?T(}kxw6F8_0m9iyM5J*mOMYj#3=}9H4lva|4|oX)Mn-R9dJ$pP0(_)&SR# zBwb5*7<{k(*=fDy=@n9olzq<4W+4F06c|a?U7u9ckW~B}$NH}&a0HSP@;Zv%m0s4w YZ@6|O5-VBO5D_7&I=fU3x$E=e`O1iZe^KUU?K1AoXMk|Z_((2^uO1N8yu z+KSs+HvYDcJUXd^N4@1+c7tFeRsO@FR?4sx{%4`C3b#Fp` zuc%QTn|QJhhy`(@;pm5!Y$1lmM8C$1>w)}cF*R~W7S1~Q92}W>3&8)qoW+Yy&NkO^ytL+s=l%zVmjH;f+`As%)&}X#>ZY@XRJSV8y}00`Nly=<2Q; z4u9(ZlyVVBv&VgqFNfWpUn&ZAy#DpSXK3{PkL4Lf7YoML;-638`8d3jk7aWO(OR}= z%E@2&5Pn6)FDW#^+RhIXpWi8VPyksUH+nU-^Y^?zPJIM$i11t=jWj#fT3c$VvQU3G zHB;*k;)N(XW3q+1(*O*#}o zN3G~Tpo@ywyn>*k4lXWsP{B?Pf>4mYS_(Reixk8(si2}l5~)qo$J01OT~^M369SXWW?-e5pW@HPE!pXQDeQ@2|{ zk_Sj!5g7rs#(!&|jVmcM4H#cpq26<-9gw+{)ekJ*^?4|pRLoHcAQLUl0l9U@_HSAO zBo4cw4ZNMqL%T*&BlY`SXK8Gx{v{web71ixU@B)nRH{xbCD7D*3^_<<(@}Ox?c8}u zPMl`gh1+8QZkNq01guTP%urQQLsC)I)Z}l#BLJRFntz#70#2vXi~#3_^)2_)WG7+rYZz8$0vd>5=5CsnGCRAHn9r z^sYp`6wq}f4G(hV6+VM#M>U6S0N`Uy&PxYXBTj?l46n&6)I-- b&#C_gTOKJN=IWDR00000NkvXXu0mjfl;9^; delta 643 zcmV-}0(||N1)K$tB!6Q`L_t(|oUN0;Yg2I)#XtAv+0-AH*Udpqln&z5Nw+rj$D~6M zbkvIe1G=b)%_|6Y)S-(@JE&kM2SF%EUoC=8;v#|=lL{&-B$3)QO4KuUgH=rp1^`Zh>t}?X8#F*(n3v=Ej<0~sPGKV?=*^4=S$KqX|26IW(9F+mG(c48JzwX%n zO-X>nVK;PuSCa+k)Jf{3dY|on7#nPS4oFTPczX~qRdVmDHK(2y(Cm5)c}N!0Rd&mr z{5eTZoMzbhTVnujm&_~#tV7kzP)$-(Qc1N`cl6*BK8eZ)u z*gTlNm8g$m`gR9S&PN6qfcHm`k0LK_+*mMb+cSN*MNCG3`#!by?to#KO~(%b4FZG! zfhO-4`Fy^99a1raWPTcWY4K(95x@!nA2r_Y+I_K#V8-m3cM@rTg_t&pCRfMNHUwbTwH6(AFDxqD8qfDId-1Hg5m`002ovPDHLkV1l*cCprKC diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_40.png b/assets/dolphin/external/L1_Mods_128x64/frame_40.png index 9110b8e79af1e9df5faad5ab82ea62af6be000e5..6bce5ee409a365269d908a30ebaf2391f850bbd2 100644 GIT binary patch delta 532 zcmV+v0_**(1*`>-Eq^~~6j2z&fA3|@T~yq)mEf&bVj;oC!r*PN5(F)@PW)5YB|-2{ zp;-k%EF^_k2%@!uC>Dw+x4}ZYSc#2sqk@=-w~Bgu-tCUX?s=zQIn2x(zWE-l#_8tt zvzB^e`F~msHJkr3LJ0Z<3n^jr4^Ztfz8PaoVOlU+rAG?DvPv;NfCJzGD|dKp3J-cJ zSCSlng!Twfo9VscQ8`u16f-FC2ZI3w&wU0M?JMY2A4sSOpq~_U8<-o|hsMkp3&t3y z1oEkROile~k@k6iWH<9ZR7o7(-zkv&#>XMHWsT_2JFrA1H|0VeE=K+>D{Fc^xF*C1 zdY6+)jbN}S6GFXQ^0EgQ;6hnL<6}Yk5f&1~BhY5S`yBvCHy1Uh)*S3;79Ja70#d=} zQgZ1rkaau`whPk(^Z2wj_*~no{A4eOcczMk{GO#~Z5jG@8nTl=Z7`KU_uKpJx}Rm7h-;S~<4US~+VjF3&mu>seYWtNhY0*G&OD zQ;)EDC&=Ubsfkj6u59;P)mGJ=EnBE8Y?)5StAMRZk}gL) zaDP<#hwFtu=V=$E7Lq;I-b#G{>M<}Bt+_F&peCvKIhJ+bOTgkvipV?^EDwB-zw-yO W)IgSyo@Z$Q0000-Eq^^|6mby6fB%2h+(pG*TM6E3B^DBFEDYWTD?!jg>%@=3E(wAk zg=Q55v5*vEA&AxrqF5-R+y)EnVkI`ljS6BS-YV+tdAIv4cF#MV^6}=)W8Ms{#_8tt zvzB^g`M+8XHJkr3LJ0Z<3n^jr4^Ztfz8PaoAzCn6rA7+CvPv;NfCJzGD|dKp3JrQ) zt|U1C3GES}Hq)EpQ8`u16f@Z34;ljqp8E_i+E>u4K9EomK;J3oHZV7^4~>~I7K|}Y z3FK4tn40=yk@k6icsKJtR7o7(-zkv&#>XMHWsK<1JFrA1H|0VeE=K+>D{Fc=xF*C1 zdY6+)jbJb+6GFXQ^0EgQ;6fQg<6}Yk5f&|qN1)Au_d5WPZZ2w0tvT4yEHpO61f+t` zWy__Iu-kB;E@_UvdyEK6Wve!lbtcUP<>Kk+pL z8$cM*J%IA8(`YIWQr54&{csg^f1X{OR(?KZXyw>WYvruDxIF6stY>Mhtny30TsH;q zOg+Npogk0zrzT1Py0YC*6C01j2~@hU4`@n~o~u4HR9jVdwoIY2uw^7aM)MH>MT61GkK}}NeIhJ+bOTgkvipV?^EDyZL-}(cx W)IgRsI7m|f0000+qJ`qOkiA`H%|+s0e^k zO64ii1ZE5KkYP2u9i2;-!{(yj31K3b8pBI1O%#CW1i%0M(b%X%# z=Um*gRSngYWgv#?P}oaR5>O(@UqPCCJ{tcoIld1zJ*84mA)qG4u7*l_Y*8InQ~@?M z6E<207iM9ufB_r&4LygfFWP$^!0Max%hLl<62ZB)h;VwOKGe8wNf}N}iwGjalhP8o zX)`&M-f^V?PF&4MB9CH@Z(LaYs!8H|wgC;1S|5Et!ruNu&?ir0tWAG#L`!mi$FkzAKULGozLx|G zaXMN*M0eIkPEG_NR5}2cX^V)+lFZNaIh)IllseKs0e^k zO64We1ZE5WA;W5z#nj;gB;&OJCw2G$I|iUDelC=K05#j|BP}d@8tQ2Rz@4lQFUvc) z8e)6{bX@>jLlry-qjwP9%?>p%zP+8lB?eF?`~d;6CIwURKQDj6nH$w27mwgo>Iebe z&$+l~s~V~)%RqdpLt(E(NkEApzXfUT88qfEIld1zJ*84mA)qG4u7*l_Y*8InQ~@?M zKWwxP4$Q(_0RuMl`vsJ;zG&}x0IP4#FHa9dNd)KGBEspB`cUJ#C1p4@Eh2~vPfAPV zrp@G3dd8IoK-qug@#tDDW9uRpt7yIiXv8l8s_vnIZyFj6fN?;Y{m(VY)X$8ZZ{CI= zNq4{17I_qNeB;9ES4|S%vwhGIsrAtZB<$@k1by-}#@aN4BU+OCJC+q^?^89M?0ZSD z5T{>jLUd8_Na>>oP zgKN*7U^mQX1-PX3e4MUBEdct=ktf&0b3`QF9L=$&V(8k4w^HPi#~&};1d_Pd RgD?O9002ovPDHLkV1grc@tptw diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_42.png b/assets/dolphin/external/L1_Mods_128x64/frame_42.png index 8cf002760e6cdfae4b0142db8e2f669e90e310ae..1197601e33690cbe7d6d8527637cd76dbc2cfac0 100644 GIT binary patch delta 539 zcmV+$0_6R&1hfQ@B!Bx!L_t(|oQ;z`Xj4%X$A9OU=EV=%CkRd@Pu#T*qC=sND!Mpy zbTiuB=;8+`z1c(%I#lS`$-$}amb}=(Y;_VBHE}8;=2fFF32Bc*-pjoa1n+X;$N!xF zIp>~BTEE|^Zl#(ZkH5};g5V#DJrR)tKr#ZUx{9_)2vEqu*MFD17grI(jH+s;=pP2k zcdV^{ue`6V3ER-EBLSlA&@HV06n&S02*6hW5fP6V0NnsqRMjIQ0CY~~XoyIGm;^Ye zEVL-Awf!9fd{mQzq5(K{)fQ#|e%=np-2!m*+V12`U-ut)uj+k0QfwZoj&Q_{LI9VNSvVjPy0ZaW+(jF#;Vt>fmrIDfp5jtNQ&Bn_T%9Cge zdH_^1Gk4cbjI(qd!!v`kbRMKxNQrV4Dr0~Lzb$Ntj1xcY{YcjLeS6gYF? dE!(#KKNO|ayM(X1Z(9HW002ovPDHLkV1hNY1gro6 delta 537 zcmV+!0_Od+1hNE>B!BryL_t(|oQ;z`Xj4%bhM(`6=Efh|D+o>{SKPG@qJz*&6s`>FaaQ+hn|4{6Th!g;l5lGclv_(RILJq#Y;(vpfTP!UCVTp(|Iiz^bT5R+Ul}Wsv^dlPesSbf~HV7nHw^s;0@OAW_=tXUx1qSUlN z*9S4}^DV3RGPTaxsbK+34?u2RSxgdVw#bmSxM1ESD|PU))&OkOL}UyCIAO2~-Dw1a z$Xys>Y7GU_x^_C7sTSd6b+pL_BB%x|_D7HQFfkNER(~eWnzOQlh7yzD`F8jV2@ zfJ$cO?z)NHrRx};8+YkENVAX<0Yj$Y7ze&bFyWG4R^bmVNC0`{yNW{Nr~aOu9Tk@) z|9YnDJ0H0=O+Rr$RF;-|?AnmQp|#i#%c|;q*Z3n9iZ|@Unip5zQu1!@8-N05F1%yQ b7VsCP)e^ge{S77b00000NkvXXu0mjfN%j2^ diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_43.png b/assets/dolphin/external/L1_Mods_128x64/frame_43.png index e85358c51a0b846878fc45bdf71e218a1432e1b0..c7ac5c44683821f2ee6d6f1a044b537cb858ffeb 100644 GIT binary patch delta 610 zcmV-o0-gQ(1p5S#B!5ClL_t(|oQ;z|XcS=(#eef7Fz--D79g-ndV}=FT%a4}u zV}=FTjsWe`$qtaQKy&lb(fvIv;FfQka-dkT9}@J0zaF=QiDe_r83PS$1gJ+Y%FY>Z zA%se6op#@?ZhzBpC*RJ{_3dT9fd+s?%>r9ruU>NiJjmM8n9U6irg8~EkB>AQh=bAj zz?7D79dP3;1Eo6bn*A1;3+Q!=_d8QyT!O~y>D~S0^vXxcUaqD@7Z##mD}4?*vE`J> z5Y951K02{bNHhANW;xK%@2lQU2(Y$1{B~-fzE_8{n}4dx$qVn!&E<2Nf&M8~rPbEf z?d27n_P9O?m|b8;0x|)Q##Gg8C!!;6Jiq{CYF3J20vKR?(UMQ*8`pwwEfB{;Yne>> z*MvT7(6gbcjybI)Vs!u`9-wFFg&qJ$3(rG-?#z(Xwi zsj6xTxm%Zw#XpOP$i>yF{vH?*5#y_>YBAzfu9iLU)GPGTtN;)JaNd|_jR1hr63`VL wc`~7)ud4Cq7>-pFz>rhbh_;7@hm%X{51Bpqe?5F@hyVZp07*qoM6N<$f|f%mfB*mh delta 609 zcmV-n0-pW*1o{M!B!59kL_t(|oQ;z`Xj5?%#eetTXY#70NkQnK^*ur8Cf({#?2`&E zb#u0HvXfP$icsi3PQgJs=;EO5;Nl>-7TUh*pe}waf?GlhiWQp1*d$HU>+s%dUj@NC z9?t#XoO5Zc+})g7YG_i1zv};h{J$7mA|eh@je&-y85I#9z<)`AA20YKX+{V+Rn?f$ z>IS@<2aN0;ucPHdYyH3P2;TTqI#P^#JwF?zyVk6MCQvXRz|fhINtG*2$f&KYna zfNFc4PT#F=lYgjF=w#^n_OjnV6F|aNk*%*+uQ^197#vIWM)Z@!-1-FHr}e3b0vT59ORLg;U$ zETieriG^aC(Fb*#vQodV=63>swdLWrQv;2?2AthgRew%icz15DkkbtGPpK;Hj<#yv=l1$M+IHw z`mjmQhN?Q|v?keV02s*wdWK%;0dTbVJmBZfO!7BQXYn!ceqUPZ0IccL#;&)as-~@~ zs%7L}Hd-3~SwuuGuGaMTz<`JtPgPY*A+K`v?185FVlS;~k`>^*G0&ROJB*fruJFi{ v2@O0|jXuY4tQG@?oT`R&@@R0_xw!rSnLYS_nEaA>00000NkvXXu0mjfvI{eM diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_44.png b/assets/dolphin/external/L1_Mods_128x64/frame_44.png index 51e4f2c129928045f2190304af0b09a01344c487..a10c370204585cb761166b976ec31bbfab0e6b1b 100644 GIT binary patch delta 656 zcmV;B0&o4N1*ip(B!6#7L_t(|oL!SYXj5Sn#eet9Gf7d*D>%4lo}y5kx``k*7003? zC~hsq!L3e;Amn8e7j+O(2kYSCEC_{?6bEtBMRc%DtDs0FNzo>+&3nh;<=N<+KF)XU zAI?3OZv94UZn3K@9REkRu2$<`MhKN1f`cAm;~$`yF*;^uX@Aj_(H+$20kCQo0C)gC z@Z$v^EUiJ7RgxqRpiMLal&@u7d901jB;?R9*)RF`_%@-44*EAb_1oLGwU$ zNDqzMI7?>c4S-~3qDfghZ8rxB^fDkH0(~}$Ze5L!%s>cuowIl+j^4leZg&570QthL zEgXNNkv0IPj(_JAS0YQlfl}Y2aHXVmXm5W7`ujYz48TmBCn|S-I_xljHKH1Y*=sps z)unHeRu-$%YUdoCNwYE1-9+d59`VJokHTvDIzAvahf zOj*D~PLK=;NojfIa!&FrlkC~EM$iXG$IN`7WZ|lrp?{X7t`tl4swDJD(i17Es-Es; z8MpwWq^dbyS#fOyeP8lZXCCt1sT~sFV+ zy*D$nGfNx#9UU+;TL}Q}bw=-g8&UhOE&bYFA|J@^@04>-djS9wO(56U^>|v9vZVBK q9J@CLfTJX-LF}W->d<-ojXxc{H&DJxaH#+Q00{s|MNUMnLSTZZhcHM0 delta 655 zcmV;A0&xAP1*Zj&B!6y6L_t(|oL!SYXj5Sn#eet9Gk;LbD>%4lo}wU5ZX$?H#ZgoQ z#jQac-0GwVLSDAwq7EYJU>#hX1)(5GaS%6ML0|?<9z4- z;oNiS)^D|D-gGq#$N$l-tJV6K5kh%HaL^-c`~&2NjE7iqGj0H3E20&7oY*Nyw?Z!ZX-Vn%!K%e!zTT|mR6$k;Za}Mvs;Rn}0T;010AYZs| z^T*$*&<4QN@qe7+a%AZ@Q0#l;t`)Tg?X4d`e~*V20jR`TqEhFV!wv#iBdU?RdLu)u zy0ju`=}mQ7?Tn){Wp;#gH_`dNM||nX=cAyxz&*}2aI}XSid>U~xIS3>Oj4ijA;)mh zXD#3nCrAc_q`0_rB_nw@lDP7>`D6EY%DHE~^c*IeK&G+d$+XHPN$KS{ pcCHTqM^RFP*hl5%vGdrDza6|cP)3Jc1^@s600>D%PDHLkV1l!9J(d6f diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_45.png b/assets/dolphin/external/L1_Mods_128x64/frame_45.png index 732869454ee2af2fca714b881fa462c62018c36c..47cce6619a780c887b70027c0cba2bff134cbd52 100644 GIT binary patch delta 593 zcmV-X0#pMQk`VZ2$(f%cr)w70~Q4sT9xUIxA-OTMF(3uq|z9owrOFf~Tf{gN+w zzRL0_v-+U4C@HX_K<{;J%uf*?etJzq{wm z%)XZao=UdQJo!1H*3svWk}0|oKpxyx=T;8O0L(UkvGmmQMO8|Y{N*?%_j15dl$0`z fP-V-^{yFtO{$CskT(E&J00000NkvXXu0mjf(0C@j delta 595 zcmV-Z0<8V&1ndNmB!4qWL_t(|oUN0;Yg2I)#XtAkXOmKCp1Yc-I25P;0b*0>=uiY* zThZN71Zmy_hihb@fh{!{yv_ z&%M{g>2UmCpk-zjoB-MaP!@H_Nm2lqfW39LEaO-Ps6auI7=HplQIhN-)7w{pFUgXxXl4THihafIx(7`4p>#jw zTGwZ3w#u~DFD^<7ETgcy^9xPi*33e{`s|n)YDj8JDy!j5-UD6&@HR0sM-8|IAw)6Y zcyIaL3G}NPdhO{q^=iFx+J@PNq(BkutlqE!c%>=uZhsCQge-K-%=Lk;MT|$Rj7f4w z*(lfY1fzo)Ka6dqEcgRx3qZrEK`2Q9U;@70;f)PB<^fWOB!4L|n75px3Seg;%s{tS zeCyiyZylAVo6wN7`nWDha!E)MfSDOXU{HQsS5=Y&?*Z+#y)6Inm%-drjk11kSx={sPm(L9_wS^+?d8)+}Pk7K)Y-5<9t28?$C*a1DT6Em|77zt=j zL(~B4v1&lSE~zc4s(NnnSKtN!cNfgeSpkmZ*GvHCp?{5h8YN@7lxrV+P91T_F301u|=cT3D>X68L$!{YXM%;kb4U(bb?&W#ZK3QVz;6shEIci_-c zVt@hoNCM>~@yce#f@vEo6md&fNC5X;$|knMBrF2Bl>qGlC; z0xv8*LvA?%XaVq9lkMKcZ<4$_Y>S-_*8%*snVHQz`J^A&PBXKQF~F6zMSU4n<5vnx z$vjyJfE0j9_v@V)fTO1&;-gB!5;(L_t(|oUN0;YZP%5#6R!d<~9<^-XEaeD*gc$HbO`)VkszM zV--bv!A3>QZNS3P#>U1JDrlu52!dpz77Bvcs30bnSO_ZIU5L5c+>f!?OJcP3RbQrf zGv9eLCbp0Be}Sf%S?~wY5`YF%gHVzJzyy4Mzy}-bmRRFsPVFtRt z;M-~Azjahz#+&@p0M)s=B*`TqNdRVM41j)luCA&i2R;KjU$G)lW02`;sV%&jyN`PKWm{o9kHa3z%qxBlXM{gbL zb2fp~tE=!TI)8{#AX2;f@wraziMmcl(kH^?(>%qcM!`vG+O^yg09QgNfOj)-Z?qY> zdX>xoYDx+#Q8yqw7wIQps?j`_I$8igv+HR$dW>WHa@~tVvjL;+0Cqta?97ql4Hyn+ zPD0cG>#}4(uP&)2sj7Nz@^|1401s!(%vk_V=3`@5Uw*@r-?*mUJ>2*pR&&?ZKW(r*it6M$6!zG}SHz4}9vcLr^-%i$V;zc(|pBQKWqE8A^mwipB4Seezg9cpZ* zu#`-bl^8S$7Ii6o`;N~p4AX8%Yv Q7XSbN07*qoM6N<$g6Z8L+W-In diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_47.png b/assets/dolphin/external/L1_Mods_128x64/frame_47.png index cb28e28f1866126eef149cf7186fef5dc4fc596f..2e87539b48b8d96f27bc24dae8aaaef9671b8511 100644 GIT binary patch delta 644 zcmV-~0(kfsKS zmS|A>Gqts3NZwCqXo{AW79A?crHCL9!k-0E5cCHsp*l|;1QYHQ&%5*fJPmjLtF?Ff z@(j=WywCS}Oza=W{{_~}%)C87UI4038X}V90VZH&if>lu7=Hr@Au36p!I;%Jk^puC zB1O=Xl-s{H{fY560RD%sZTlU&_H@|;Q2n|CQ#^OTV+BAZ4p4Dath+UY zZ2lcp*730F%zx$cFto8j?qcdB3W2B!$?vZ;xO}PTC`p65WC8|}xls+`N)n6*5O38c@dNYzd#bIIMbU}~?a8=+%AC;2NK+()x8Q8LT{&1W-4U*huO}IbO zjJFe*rj4M9MD6VyaCSN{zyMrx0I?u&iS3Meeb(C0gtLJ00C4V@iX8``2POfW`G7hB zd;m}5k9`uXZjAz20IxEAA9!!!bz%X)1^`Ry$(L{amgGwHw%EJt+P@Sg^f(dtudUu|8Ps4lpr`EpH zk7xKk&-eK~kBPnG_`kr4nVGi>C<;LJ$w5q#Jir7jP4Ly~JAXz2LWoO}XE18fjx>N> zhgcc(IP3P(CjZuvdY#Kqu@3)4Oh|4ffZn>* zYY2tnTWYN0VSlx$OXpy4ZH@H{+2be#;wq)Tz0|L!X@*!ZGYyB@?>ItM>{et6 z44-!jhza1sSh9vU?^I2d4Irmr{mRlYkJ#n7mH|`lz{rB@{!3)z<&b(o{pKBBMY33elq|ZFRXdK zg)-AVDS+BfRkD?IF%3O=NuH80H-4%l$N{(-@Vu95#ize)W^N1Ev}EyMlG_cE+(sna zA8y9m4ouTp&_pVFI|rPZ3=A*;*Bn412wdt<#=Kr@ZD_(-z*qn{cSPlm{m=~=0B1g+ zP5>Xk(|_2*6w8|uMcv#3hAP geUzFrvwy1o8(-xgZR<`>4FCWD07*qoM6N<$f+Slrs{jB1 diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_48.png b/assets/dolphin/external/L1_Mods_128x64/frame_48.png index 900a3d7c50ca8f4a5f76459c66b9d819653d1809..ad22352cbff7c821836bba19916dc8939f4362ec 100644 GIT binary patch delta 623 zcmV-#0+9WR1&9TZB!5pyL_t(|oUN0;Yg2I)#XtA>}j4p!*fy zzP9wYj_CO&G$buQtxJ+z5|RX9X2uX06ra{rmgK-Hph=r#Wy@a%bJJCd`m?2#0L>RK zj+@~91avwfoZhM<24K&g?T*!NWWZ(=JD=ni9k{0$NJ{{zliJbo1RCv^Kp)2joQq*@ zeVyjWk$%AQ2!HN0EZO^IqL9|i=}CG=E`GNH6gQlNrd`V{0a8~?P5`eLO3-h((x__y zRmIK2tz1Cvd_g||Q?;;Kt2?Ryprwrjia2&C)BSOD378CEAN0Y_&Yo-l0nHgGG{E}Q z3`pye+LFquXC{9G?f~#`!OWZra4JhP2As#1|FnZHD}Nyoz~F;=m0r1BhUvPbKqaW% zKGqRb0ek>Fnj!6loa~yJ_kj&7wRe|T9FgR$On7)HPw@L-#@6F8qU`MsoLG(xFaXcT zP>f@bhGBUyW8))ZxWz2Qfcrsp5A1>|SORbh0Zjme0D%_nM*P^g0yF@EbonOm%90Bd zV}Nx4K4@#I-M{)>lJ|yfvCFv@fWI*_v)N~#^s~F)%uBx?Ww002ov JPDHLkV1fc!Dct}7 delta 625 zcmV-%0*?KN1&RfbB!5v!L_t(|oUN0wPg7wO#eetXL5mps*c{YWgFBOxfrr7(fjGE| z(Z9e&jj??s4vaduxX=MjbaF5;!GVW_L?`27NYK(^q6w0;CD>Bh*W>UCg09}_%Ng!D z-?`_QI69913)IcbyhA`!0P0N{Qj+8WCSda=pRKne4-i2{l7Bpdyd^sd0CopbEzpaS zJ4&1TTSu^*JK)a)6c($JBqs?;0x&b92XwQGRTU&TU=7fyjk0v;FWu?!GFkm$X+%JM zW#zI7zKp=`t`FA^>j(iD9zN<=^>G61pW@it^sED(D+J;kKDDI_I;k25*w)STj= zWdLP`_4AFCN9tBaTY#yYS*uhXDgmJ4UIbYjb}rGq-d_YpJvap&up5(8HNc}j0ht$@LDj_MO<*2?S2JejC;?ZKYleX1jiomRX@9Zg699C-s$FUqngtlIO7fJ0 z%G{-0K^eexf!7nnZJ()@nYj+IXSwEy9J76rTq6$I8KdJf>xc2PeDRXYfsALeQK z^qK^WIXAbP)M2~~^hNzouPew(N}A&s+U^04jHHOzM?uBR{;B$J4gMIQSx~B^00000 LNkvXXu0mjfxcw!* diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_5.png b/assets/dolphin/external/L1_Mods_128x64/frame_5.png index 3ac80fca4cbcfabd4adea81619f75bdfffe43b53..0162f0da0a8c8389817698959ba9d14c16aed015 100644 GIT binary patch delta 656 zcmV;B0&o4K1*ip(B!6#7L_t(|oUN0+i&I+^#eaL}nu#dpTD?LvSC~Sy6dpEj<|<=n zF(_I(>bGmijTG2x(1a1CI?G+@QQ z44f1o8-Em+h6Q}13*yR0l?e*Sf4K-rLaws_D{5r zqJCA6we*i9O@B#pE5%GhOcnuTUQN+;J5!?l5a{8x5Xu@mz~UmU!k;}?2hk7ClFn1k zu3G;6E53)>yFg_*2m9dX*_jL$U49#AFIMEi(%N>(Mkbw0|I}Evc%7swC$F@Gk(@YG&rl z0ef>b6TrD;rTNu#xf>D#^j~RZZl&6;!uW!uKoK-A?doVCv-g3UJIPi;Cc9?lJz&|Q z_PU6(1xfxTA2d8xA{ZK`xR?})^Se8+=XPR%0eC5aN|Jc|)nma|FmQYIo_s!~V zS_@+^1ApKa0vZJf0Rq+ji}|#C0&*_}+3oYdBdZ^#k^n3M@J3_p-l>n0d}WXpJ3jIS zz@M6#*~GnhEp<1VnZ1qx&V8QIyVXjE<`0w8bVGnVB#gOV>O=sHH-JKY)x{~r6-jw= qoHd^Zz$r_rlZ7a5n%OT={~xdTHK;ay!K?rP00{s|MNUMnLSTZ>=r_p# delta 652 zcmV;70(1SS1*8R#B!6p3L_t(|oUN0+Yg1tq#((GJnno0Jog73Hp@Zlsh>Pu2>gG@s z9c}#=9Q?qK+z5iBi-UsLK^H+(6a+ztilCD^C`GX*RZvvujkG3dbMrXd7{6A}^1eL7 zd(L~F=V#*2a{jN-G&2i+6IudLzv?g~NkNzZjnVq&YrHbR>wf^n8Z{_N5=~0v7IH186>eyvv^7J^}4VTV8L2{Xmf42Ed2xSe-2(A-7qQ_KmfUpk77K zv~Wq1CM3BPB7Y_!A}s@?UP;g`J5!+b1nA<`5Q-Yv&-^^i+}5tEjpzkuNoFagH!S=9 zb>GeO1E92+3484m5CN$}4V-{y)iQJwKs_L*1HE_S!_AMu%hTAtjnkVj)r)T$bAz2~ zYOw~TUsm>Jx}^z81GDYm*mwdsO*0Dt>(VeYG$*MgsehumiX`VVa0P&yRWoyDfIXR; zG2q;_!t8Q7JP3&ZdT+Hfvs7tSV02DWpfWTr?`*4Yv-f~IJ4ly8#ye)_U0~75tyN{t z<|O&|Y|!v%fnX4r{Cu1z%I@yK?t8HT2H=GlN^$Jb&x{2-Y(*}QTTC?u+&8GRekF{+ z6o6X@XnzeDF&Da;Jrp#-IHG=`BI-2J2vzkz+ae| z+1SHbEp*nInY}9moclJVkIR(|!XL(`=!5_nB#gLUZfAsy)`47Y*~JM(B}o}M&Wdk+ m!6{0rk%lO0nAtz5{{XM}HK-LQ(tiK|002ovP6b4+LSTZyQ!!5f diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_6.png b/assets/dolphin/external/L1_Mods_128x64/frame_6.png index 063a87b2e590881cdd4e410f0d8200127911bf76..5a3b350467e2fe76aa16d17eeef4fcaf7ff0c644 100644 GIT binary patch delta 633 zcmV-<0*3vQ1(F4jB!5{+L_t(|oUN0+YZOrw#eer^%$MR${s5g3w6IHMCCS8SXA%4Z zOzf;}RK)CTXQ_oCHl|R)h?qhU(zsCst<*+@VBEw)iOTMVn9Y73ix^C{0ej%@tK|j08w}G@0Fp=eg#zbN$^IpzHKX z!O;Y2jaNVihks&geF0`RH>vj>>p0ugjwD#Qwnm}**c^K2hi4c_KP&-J%fW9IlFX8f z6hdO)O(}*>4b^~1(%Igpsl)Xz&hW$ahZVq7DJ)mN?s}@ZRvDt-QTA3k(R3aq0Cw)= zR1I+IW)=e0Vb#n~RZ>GzQPs@kb>J=l3nepiR)8~Entv(aJhj2KA(||OBmljSYOl15 zjUtR!B?XFM_0EZHK?T5jz>^8O?U1RanRy3jS=`tkbFEL3Z)HNmOM?Wvh3Vf+`$@91 zJ8*h2HNXITFoh^hJ=y74FkyT9`f*DsrGWb(H4pBCF_;5z3jrMl2mu0>?j?M0T>)wU zL3i;c@N(M97l=}TO#nV?tkJppO_I0sZL!M(TLAvf%*;+cU(?U#0W-5tF~IeWIei&Y zZMXbkI!iMIpbWs6`+Eu|L6PyH~b{> Tz>2cy00000NkvXXu0mjfqFO9= delta 634 zcmV-=0)_pO1(OAkB!5~-L_t(|oUM~RYZPG=g`ayf=2P6s56~GQ7Is!vl1z+t7Qr8& zv9q>O5wo+Mr51wNm_h{=(LxYx+$e%pY9m50*~B6emE8?7oBcc%GseW)TfOh$a_`~X zb4=_m=l=qAGqYd^&=7#~s=$CG1%L@yd¬XUqbWp&&_t!GEk}Gl~Fq5eAx|2aCRY zZTv5fm6+blM1?5txc_sS z%`#Ab^X6m#92_aijnM!}kEgQ#@I$US?VNu%2IxAy zQgAqdTH`Iy!GEFHT6+pJ8ynR7j&__aYKIc6Tw9^gePRy1^TRU?q@U-3sO8|d3P~nO zHWWf);C(5EP7T$7NYa_!()3t;)fs-Y_NW4wDuspWw{1-|*D6Ew_msWGPINXuB>;Br z#B>dC>Sh)K)?wMqP*qYxQc=}R9#|rn`Y)6pk;AmU(B^WNxqp84KEE6Y#XM3Bkd>2 z-tNGu7pVaT;DaedY3j)zj|G!9($|k$N+|{052|@!FO0(+fLjP?3?KvuRJxb&qjd$S z0R-I_H*ARpX7$)$fwLou|bv4{QSXM>8`!@oGiCn)}VnmSTYG>vLKi zQf=G(VLD4QBu^4B?tW)0i^D_(=qvBJeO5^%DNBwsvYrD@K~kA+h?3<$=HFSr0XO_4 U@_cR&>;M1&07*qoM6N<$g0Pn(%K!iX diff --git a/assets/dolphin/external/L1_Mods_128x64/frame_7.png b/assets/dolphin/external/L1_Mods_128x64/frame_7.png index f65df4778a0f6c82e94c3834b0f5e841a3838890..344f02fd161284f6447fcea44ecaf2e04566c4b6 100644 GIT binary patch delta 630 zcmV-+0*U>R1&;-gB!5;(L_t(|oUN0wPg7wO#eetq0Y%h47B}rP!CC$QW2@lifDWwS z=H_S|q^}#B8Z|Kv%3w@%VldI*KpSJCPP(XxiY*Qj64RncTUvS?UQy81JN|}q&v)*3 zOza-#|AI9$vtS2k2td85zwep#M zhvL}SYphgXCV!KAg(KO4?U{G)FJ zr%C-t9xzq*wQDVh?)g2_pt;QwWO49YnLO~hZw|-?Ku833ZhWE+I95#AC}16`W`=5# z8j=dCB_Xc@_W+nLnwhf%oP`jg7;qk2dU+77l*7b(_kWYxOYK6p0lAu_KoL~$p0o^9 z0K5x4Isq3#CR%3Z9bnTU`Xgpjl6)h{LdVhsY~_<|`qyKd&Eseeci{9w%rqFC5KqUD zjgv#tOv{54Hk9gzT1+tp+z+dDXfHU-Q4i!60vcgIgaEGMfyv3SCjfOS-VL@EZUQf% zNjAQb>u<0Qz!%+VbS|$*8E^O6VwVOsQc(9dW@a{C{;r>`gJx!*BY>-G!&klzs{Z@V zVR1jL5P%W@$KCHXlb@EW0I5>n?J4E6l9J{)L*IMA$w(@(6{39A%>JqRFF)iUX?-wi QQ~&?~07*qoM6N<$g0S)^%>V!Z delta 632 zcmV-;0*C#N1(5}iB!5^*L_t(|oUN0;Pg8Le#XtA<0mWZ^EN{}-&8nFTvQLjdYc1qLK308GH@Bi>nW#}q&bGLpn^0Doj9$u7e{3-oZ&cgse9 z`^dkDw)Lj~3iCBdl1t+Eb~7`2pqrhqsUXRLkAQ}4nDUOdbSHBavihU4Q3BQ$7S5R9 z(@|(PLm1!bBL-k-Xm?_@8wptIncVX{J?+4QZ)3n#1W_yacMrQbjPizRp_t zT)#tcbo32Ys(&w$$-Tyrbn`j`@rN=HY&z|2GkE~iAoc#Zq$y2IsJ-k^*j$|hDvE#f zZQwMiAIk%#%Kmn(<~tH6B#=89(KECS~tgeV4_Czf6sL@VVm@qga^toCBN&}~4jCMi$^)tOV4 zfeL_kfyX0oDP*i=X5IldEuueSIwi?Bk}Py0O~6(@$)uW>TmIqbe zzH?YSKr5uzB;cg`Of&guxeAaf_1&FNJ}W6{j%b~CALD8ubSCERsRJ)%XITd z^UnKyqu0du<@{Q(YGxLE0~!L*plXnpqyR7hE4O%Q1C8?l6@Ms55}N>sB+1S~z6H9u z;NP!}fAo<&*hB-3(tIXKa!G8eo0%~Hy=XpDNsiZJFRNL9fS`NLF+onNt?FvLV_>DpWEDp^9Q2>O*V1FK+tOJgf zb5;awgC#RVnWToKlCu6MuK-s8xLr0gX94&FLWonqxqoXT%cJPOYS{PQd#lbur_^h} zL?$Uv{Nl;@>|rZF4ZwSxp1yMk&V)?1%*;2ahHZ-(j+x0x@^yLuIygeW3@wMl#o@Ko zW)hq=MAm)xbpF($X8)qM(pBao>F#2b_75qe?!h73o*RZNrJMrpd)3;r103eu(wbWc zXq;UT0)GT5UrYGEeGaHYQVF{E{sA6ClPD!hgZ9f4z&prqlp%+A25GUs^Xsq&e{N=G zN2?$8x%Hcw*O6q6XwDLszDhM3VZ+akhUP m0H+|SLN`Rol9~M!^)K`uDU}7aFW~?H002ovP6b4+LSTY!h%mVT delta 658 zcmV;D0&V@I1*!#*B!6*9L_t(|oUM~RZxm+~g`azO?6vvYaZi{*awNL!53u3^L+_+O zbas9KP?AW$AK;6uY5g116nJSVT_#IH$%GBR`%W!eFL8Nys zdo`f-@ZlvB{4oukP6(F|b3BF=fT^h*oEu%tzRbb)bbdZ|e`48zd#~q#K@70vz|3R- z&Gyg0RxYX-7JqklY1Ka&cc{+IJ;rLyZA!C`a3tNiO)>qg4g@`?e;79bKy3=oKa#Yh zg$4CrIaGQ(Yd}Nk-(!0?9hx5|fT?k^pLHFESB@=$R(mywaPV(S39vb~3Pb@A5`%qq zalQ#SRxMZ=uzj}73}uqqk}AsbPu>B(0bs3aX3hriDSw0zr-1XLO>9r1KkH$hefUEC zjecd=hS^L~p!n&d>6Hssf(C#OxwiPjdAJ@j-!(Jerylk!W;|xOAj$U_0%&G}fMvQ4 z7s}(isVyfsyNGP?^4ImNn_Bst;m$yrPo$^IQJODOM$?1ycDyhSSxPkp+|R0e<^(vb zx}^=b5P#4#ryv9fRK1(e)=rl1F&bPRJ$+$%aenC%m3+F2X20v26_=d)q#EEBT#QV z1gZm3MKH6r#(!%0?@@>1!Glk*Qhk|B?lF#}i*t-6FUvsCb~>9!i2+c9)Qi26&MKc* z=bb~Ly|MsQlzbUk$7xdE9RsGy_D-$k&_A|i1~lI;K^6zUoQZ*@k$E5+03i|B(L>X9 zz_DV=rU2_wH8WI`)R0tAZE)lj;5q;cMKg02fx{3&lz#xuf0kYzNAJtwz~j`MI`5j7H3+B>6hG7Xa-`6Z9Z-*f}@4 zme_2JrxLw)=ilkS?k3ED5i6i^MxDh^d0jh6|HD$J=fMHnni_>#LNNi{cd4~=8#v4p zcFipWG=Iqs2mt~WZ^V3Tp9boro9Uo;_Y&|3nq-rp9Pl+2w-k?;{3aD)i?hf7I)AJ0Vn~m-~C!M0w7lbQl*hAdBs^t sgXB0{KM#SEkyN4=qPS{izeN2T+`2H+Hw`iq01E&B07*qoM6N<$f`3*l_y7O^ delta 664 zcmV;J0%!fI1+WE>B!72FL_t(|oUN0;Z&P;^#XtA@C2UtpLHwL4TZ0f1VrVh|5}krXg#-h(Dx|bi=}?f`CUzKzLXjN^@oygnI}x;N z@Amx+=bZ1oIwn3H=l=zJW@f=hpdkParvhV=6aXe*_ecJ)p?}6AKnXIE#32B(l4Re) zSPOJ-(?7M1{+%QKIXd!R1SmYINs?R=hw5f#3_(Bpq^5!-2mS;!V>6UL`b&QyS0SrI zmkka|z~0lRUz*^r>2A<$hVac%j^7~xU}|arz8EUit_{HU^x!@5IKAw^-8b_WvMcI)4yV1PlB7?3K@tIuz&Te#1)jZ8EuEaU@+|VJvx327-_d`))#-UKYm=!_s3jB=!2NTz zP96h?HGjgcxrKnHISwH}pyHjFf7(}oI_YLQ=smgt`~pp~Nl*{j2jHcCXmqc>?&jp3 zVO#9-*a4{${>;qG&XwQled~mo*;WLwvN!ept8vwj?i?16(+U|j2{`M%+8op&R{>I` ykz0AiSxJNDIFoOOz{yA|(F;*rHM9Rz{R7;(FcH&(l98(b0000-ti diff --git a/assets/dolphin/external/L1_My_dude_128x64/frame_10.png b/assets/dolphin/external/L1_My_dude_128x64/frame_10.png index 7a6f765def5504a2064ba8d7e0f0f5824912a0c2..0bc0462a7891150214efbefdd1443347e061be96 100644 GIT binary patch delta 606 zcmV-k0-^o*1os4xB!50hL_t(|oXwKIYZGA@$3M^U9$e#Ks0}EBW@sfuMBR!C9%7-= z!3=pz$1KhYjs-pHP;}BkaWfQza&NE^mx72HEC?CZ+QA`}4wj-l1=GX3+&LtvN&f<$ z?S1&X-{<@M5TD@?J@8O5DE+?^kv&AH7|$Cf66=6Q=iULrN`Lx9HUJ=2kPQZi??-xG z`iXW1M)p8-uij3sXRJTduP49>2Q-}UfX0te2%Q1q-6itD?#q(+u)eSiPDrUvvanBl z87ChEptRcn;Qb`zR||+HvY~5x$j9n5;H#f~&@0*!cY8;FL?lS(>%zl@a>HV_}mHInJ957-gP zz>Fc9#2_i2Cq8xrdna8VE1^_ZhD;mcn;4vs4;xC84WJDZ=MsytGs;k{!0kzFqhg#; zY5A?Ox1c`ngs4~3B z{?lU*5bcCu-MO&6xZc~Gioq^EI{b6A3fVxWj)s5_n-e7{d{j47+{)8%|5R;_Ty7{s zwC3_6Ui5MXt7v+AneBeFqeOC7l4#8}V3z;_SsF=!c7;q8vH|K9)d~QSA=4(72YCS2 zy-byI4OdjN34q~{Db5&DS#o;BT`#IbOLDltv*Q8D91!<>*d>~+?!jEm3Zym2xxg-x sdFntihqc^2d6BVbil{DSfV8vn7s}A*m8w@b4*&oF07*qoM6N<$g5HrK_y7O^ delta 607 zcmV-l0-*i(1o#AyB!53iL_t(|oXwK4YZFl%$3MU09bDsJs0}EBW@sfuMBR!C9%7-= z!3=q&V-{xx$ATVpC_3q&xETsUxfg82r66Jk3qnS^jCn9@@P%)l2OeEF;jn2ITgnyOviEIEstRNc<5Z{mV zy!0R185r3E(Y<;*xt_89OuwE0Cmhgl!UGyVMj>=miJZH$wRy4eZyr8+-Z?e5 zPuSOMpRcu$6n{xY1O6;4Qi8%pw--Coya_boy=@>GGEXY$`28|gQrJLzDA!1)vp!%) zC<8NwXcB{@c%Jy!5$v6GeXN91T^TZMh;L$WLOyILO*ViwOq@$B#?B~1wF0*%v5ksx zLZ#)m#@>SZyc42gWvrsX`2~g34+E@3d^-X<$K128TYoJ;87l#&{an87G#h}@Dh86p z&iPM|JwUV*f_3M@_TqYPb1DYA_~`J@(JEvEnK~K*K5R~upzu-MP;o0y!~IjWHFCM3 z4AGj)i+It?8LXn|?Pa$6&5jbuT}h%f*MMCD2xMs_1=SNA(bVkN8I(IIkjw#b&xc*2+3E)7YE~evLCyts tk<3#Ek~ys9ZsbMAqA8-flmXJt%3sRR=aqO?5^w+j002ovPDHLkV1nqJ9wGn$ diff --git a/assets/dolphin/external/L1_My_dude_128x64/frame_11.png b/assets/dolphin/external/L1_My_dude_128x64/frame_11.png index 2486f1a8b60111b3946d53e3049d0603f20e6f41..0b2a3e97be3926aaa3893ba6b403c0608f9ba6ea 100644 GIT binary patch delta 513 zcmV+c0{;E+1n~rrECJAwEmD8;zQ5;v#AWXid)G!KpzQxlq|44;G1xaEq&*_EbVLkR z3SkCj07wREDnN=p;+qcTuz14^=v4sFcSK}>9`8(Xob9pU_(J>|FGT-oz4*r-5tbp= zcO~7NfpVzF%KmgDpBInxVFu*EiZ`B}&JPQbP4r${d!|@^E|fPE2fcs%P+UM7UV13l znWD$lk8Is>{t21)IlsSyWWyXrME2@;J-?!Cta6uh=9ZloFE(1sq2HNkprv_^$t_5a zn=VieQ68NoNDkm3nGqqbWWe^cRduu!%NN^-=+=9VWuwQKfw<)`*7HI2q4 zfWzw8G*Hr9u77YqHpF%u=>PQp=r*7YqB>|Gm`fU^HHkuE!X#bDovkoJhs(h)IO zDTEoA0U#NusQ@YZh;KTS!{QDzpjQDv-w}}kdb~5makj^X;|uX?yb%4T_2M0SL|BGc z-<5Q82FjrxEBn)td|o`#hZ&FuEADu9IzKE#Hqm=+?U`cvxlrCv9Q1$kLvaCVc^ z>vio4ob^sc)ja4t@U3d?c1X1*UIvnVzC3pH##8{7ET*8P zKVD{w+6f;_SxZ1A<8Q95NxRi_^G@~nZTS71mIBE05X#}k1v8IawBF0sXHTYp8j5HM zx6}ufs22f1hImE&Y8s78 z0EgAFX`rOJT>s#JY>4eR(EsWG(QQB*$U_}Sn}7?bO{ri(whE;>K%(vfFy}CvKSEBG z1?YDx7GS@PsiFV#Wc9z6aF@BZg@2DoTA00000NkvXXu0mjf DOBDB@ diff --git a/assets/dolphin/external/L1_My_dude_128x64/frame_2.png b/assets/dolphin/external/L1_My_dude_128x64/frame_2.png index 7bee6a8edefc14aabf34ab9e8ea466be256dbbe9..007419deca462a5e35ad4f512c89bdd1e94b38ea 100644 GIT binary patch delta 766 zcmV;iKeAOvBup(gHlU6 z8(XvM&U}9lo9edj_J2Iydx!VOzIR+&p|UkRTA+tK-Fl}d< z&ZSnx`g-Z$Z6&$?Qhr&Y&79YVI`1k<*>ZWcaVFakB>L&u#j6RAQ~@U8xc)f|PnUIf z_lr=yji0D#;K5*Z$(fJ5n|EwZpWZ$k#+aAp{cI3%wAr(`h{d@zcH@puLYJPMdG->j zt=r9B2e$rdhJU%xU*m^*b@<8{zioZW%&=*+TMx}=)(_HiJGGj&IxE66<6pczcrE{R zVrDYO6v-~KJV2uo7!x)gy=l@T{Y00aocpR+WOo>jq#P>0^Hz57#>_ufop2$f@tJ+$ zK;QL`_gz-IO{bi!9iDRjIt4Z?nw3%SZ#B4IKG?+3Pk$eq9pS_9wXU>uUhaiTA?eL~^+-xnU%{*fhMM+!*PHS&l4D7Yd(El?5AGpO5YK8 z#b+f3P?P8YQalzSd;m{(ltwM4JOx-VsRn9veCwm8BqBf$2;fWvKnmK^1SAzq1g;OD z-?vm?{eS-jd6dUJ{!~hRQiCU49XzxvfU6?10Dw{XtPY>Q3ccq53_ta)n{4uBSoP~D zVEaIO>KqHhk^S2K36{593;5-XfJP|>0QsqK!Eo2W`JrgiM0#h4^05% zL{J_v+JB?(tcWCt+DJ)WX_~J|DN-?-QpCSb<7u?EnA(07*qoM6N<$f&%JwQvd(} delta 767 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 delta 600 zcmV-e0;m1(1n~rrB!4(bL_t(|oK=&tYg17e#eetpg~lpPtOcFg(9PoDpdg5CDvp9d znjoUm-T%NP8C?7)q@(n;i<2Oli$m++(!mNM%~J;pMe^Dq3Ff_f99~}Ya<_Z9=X~dW z=ljt3ICT?wjE{&MdB73I_z+}(S!Yo6>74=Ix~-JSiFTdZ6Mv$SU_vx>Sn`zi&}o8V zV}aQk1NGzmZl02;)1RcIW+t2uCV&_lff0YfV3|;@1J@ z%<3ldYj^iDV}HN3*H-e&bTeZyH-Jl=mEFLzn4tjwparrRFt2#|9e;TXVlaTQ@3&IX zKa$$ghw7b?=m4OIHfS__fUpAQ6rhgZzuvlPe{%0K|IZ5gan}@Z9%-H8~ARZvD zjT`9$&MN?Jl!v6g;->a?by!=F`~V6yEGKIm*8YMYz<*553z?oBq#9cgVvb}7W6`j} ziy`oFcO|8Kt@3pC9mw7WBsHbBR^=l45~=gH7L|mfo(ix!q8EA*_yJQ7A-Edz!(RAO z!PIfv=v#AJtDjab1JY1(8bHK}B&5ESD56}lB}rNO5v7m_@B<1plARvs(?v2OD)aBj zvAtOtO;M6M(oii*=`3bpPlZR>tf?*aRnl0`w9mM>-?U_yIwiSL2UwDH4or!m)QEu7w=VCdj_Bc&-J|^kIAPRrnpgpt zZa(^R!1}l)L6%9*v}xmeV@~7g-?fV&V9-kd(#F=gOA&b6#f?5kFK+IE*DoVyboS@l zx=SWy>^P#Iz<-3kGi?e!F}3Jsh(6xFT4`8G_F%o%5a2!j5rQf5^V=~C9Ck}EHG2S? z4`RRD?eV7zV^|)yTid1&EcMgo`J%sH+OQ~eK*H+$4QPfIj-#kB7HGQh@Au+B%3r?| z;(t9p)r{NuIxOAs@E%_KK$ZGTvYLHat#)i8SxpYsRex&CddR~Nwc3;c&Xk2Ws)rg$ z6OGuZz)+fKpRCfj0@KFl#;;eMJX8N(o3Wp5Jc>&nfs`zU*8@qW9Bw7M|7N9hY9$T5 z@v00@?k(1iu83B!31;L_t(|oL!SIY!pEl#ecK6w3oJ|g!FG zsF#hW0{p1>HcZ}+pmOSr)~-0CHDF27IWQ%LLL&lB-@3e;)>lkWzzL%@r->DS z-*v4&2dqc^N|0qzt=qKmy)mcp^zYim5b)7U0Mf?Rxl0k4?fgWaqZc>#!1RmA8J+$4 zwyKgz89O!6Pk-QtUai{{JYp)*%@BROeYMoElI+2Hr6IsP{t<$o=jXL!7C7t{VCwGy zY(9v+ZnwvuE{tJ$+-`0AePF4dHqYnvy~2h?VGSg#&Yys0XyG`Da$|v}8~=VU4kY*b zoe=Nq@u_CqcH^*g$6y{_`#_ocOtPANSuJO5B3Vri)_+xK%zDV+6SdkD0nU_#H_C?^ zNfV9ODZx;hXrHXqxB}D0=fgTaB3wD z&3ILkOdn7el4bW}8RfI|`kA}xlY?*llZn+MoC0eFh=4KhE(d-TxyuIID-#<^3IZ2* oHQMcbmmj2oWHmf_;*8t>1Lmofjdcx~9RL6T07*qoM6N<$g25vU3IG5A diff --git a/assets/dolphin/external/L1_My_dude_128x64/frame_25.png b/assets/dolphin/external/L1_My_dude_128x64/frame_25.png index e30f6f4d08ef4abe21d2b8f8ab5dda7e79412db8..1c768c19a661180236b8bbff48bda4c2bcca2546 100644 GIT binary patch delta 553 zcmV+^0@nTh1^fk&BniVwL_t(|oNbYjEnNlo`JVShk&q(+ev!0Bf6T}}038juI{|m1 z1!?1#axcQ-tfbas?%isJf;k`<l)^<7ua!bgmry^Z% zNKUGkgl|bIQ`eAOuiFi2I!Rh`UrSD9b7ViR{98b&;5GXuJcN_u=-t(GgzxF{f*ONP zM@~f;@>ML|-e_z+BaH^}g9n6b()MRdTUX?qcF%-1{0$Clf6%*%NAu?C(3>Aoyx1Jx zGr%d%2IfX_R{KW7ds9L5_Ut#n(iw@Vba|mCr*^yT&CfyfA=G?W?gQx`QZk$VRH$@C zr_=VnFP_8q%b%Zp+M~M)HogXr2bRF=v%B_6Y{ME%wIGZ9-s%fCLlb_N0cm;|^4E_f zc;Un9?0<3Se^rj-#Q}isA3jDN1LnrdJ}~&RYv!8ZjEaOnC=2fvM<|2#G;#{yud zQESy&0Os_i0NDBBR%X4CEiv(v)Zm}B-Rj!jmv8uhcQuNF{UZ{*MUDV${C=(v9LM|g r{6Qc&5ySow;4Lx@%&bJ!hyMixG{5fOC_2Lc0000<2SrXqu0mjf28b8< delta 555 zcmV+`0@VHd1^xw)BnibyL_t(|oNbelEnNoh;d$ThLy?ao0X~tlMt|IqeE>QdaCZXk zL<`c!FXdi@#aT(M$K1Qs9SY`vV31D~E7T<=X3&$9b{l5w`cMz`{d$Zu7)CB=4nO2xc>ket-0BbOTGpXeP`w&T`_ z$~MQXr$+fxWmj@#k$*Oka~D)jmu<;)BvE(SbbfNPSeKl7&4TuFdRyD+7|1Olr=E&* zy&*ZNUJ||~sZ3o%a=mUhr0FDS$$c$3mCcd;xbklSrGnS&oA3}$j-z*1&k??-%L{4@ zIvqI`VaQjpbbF(*^^7zc#19@2u1VXUEp1(qbJ{%<+VD3xuzx}CDjv<7r$cXkMDb#C zc+UW*I2)K7#aZne4ew0_(c81%083{irqbnwo}Ak4wl_Zq(T7m;VYv^ae@Mw}`ct9O z6`fAo`@VP%-!FfD_GypqD%kiMJRVpAug~tc?_5vFZ;mY&#swkf|uKP{7(*Df9c@2@$;X@X60A_ z>@;evS_{COz7zmEU);*9H?k!rev%sev$k7p+xzkjAMmb5QLukRg15*KfQ{eJ^?~Df tpPoMmBqw6nKLWf(rh%E2sCwG}0t7U_?xVHQ(*OVf00>D%PDHLkV1f@16kY%T diff --git a/assets/dolphin/external/L1_My_dude_128x64/frame_27.png b/assets/dolphin/external/L1_My_dude_128x64/frame_27.png index 1abb14dbd9c64bbee44dd5e880a5a4345e7aefe4..17a20f54442d49704ce997f0727aa37dc8d22322 100644 GIT binary patch delta 610 zcmV-o0-gPp29*Yoe}ByW9}l~eg7}_Zemw8T^S(%VVmBn^twfRxD0MCZ&RqZuK0&}(0iz8;#DAP{-@;LJ{TwLg#{R{I0wUh zZs5G61&Aj^c3IMf?4}Y)LPJR!%HGk${`Sam%ycMI^hiGd9g+SC64~xsSeTX6d^9^V z=^=j}@CSL5837|xVL_`ild)ZM06qfdyJK&@34hG5qf^ZsU?;SUb`wYW1$`?e>1=Ho zWr?HwklvM&57m%q78ZaMa76of8RJbnmg-oHU|Tk6gxS4XmH z3_GuzuUEnI?Dcy&F#Whm5j_dg7}_Zemw8T^S($n$u}g~Rw79TlsXpy=Pm#SEEvF2 z0D4pa^IZW_aDeooVjNS81?Y7-68?`u-2#jgdJh#%yb5H^|CHR@2jhgjumHmq=U}+c z4V;&>0P%z^=yddn zl=t~El5Vcow&$cjB^@=NKMT*)n=E1vhKyb`!7VtjPJ9`c6{qwb?c1{DJZV2C^}|xU zEB~ynln_w$zlDV8O~jFs?U4C;P)+O{c1IjD+{Q1Bx$$$ zp!#4f*8OU6)19-?J2yO%$cdh$0)PG57wM~RYt?*#2e_AyM!x`A^4)^-Ozr_aI_eDuFcK`qY07*qoM6N<$f=t6M1^@s6 diff --git a/assets/dolphin/external/L1_My_dude_128x64/frame_35.png b/assets/dolphin/external/L1_My_dude_128x64/frame_35.png index 77085b8a62ae368b545dfcb1749efd2d8940653b..e4ce5da4d8c1a4560aa6a607f5b3706f689d945a 100644 GIT binary patch delta 647 zcmV;20(kwa2CD{;EPs(tXdGo2#((o=>LzKddnxwRZmTUhSQ6<)McAPzf}Y1e7ZE)O zfi!_a{R8bzq#gv7ocseKITVC$Zj~f7wV6tw2Mw)K>A`GvO+8i8nYi7|Zf53tJZyID zb9;Y0&-;A5AL?sTQY8Abtx1Yx=*t3NfQ}2G^*;EleB!SdX5rovmK<~{}CDF95@8ZE=b8e<%=py9T^f2=#(r9VHXpw4+8J4 zvXlbfWvJY)C{~_K5@i)-Q!;s2aGWPW!GPnqK-&G2O96d<%pPQS-H8{oi%_!bPg4XP z$4}E#wy?Y?B~hpShnXNB$-NEQKrHt-{@LV~n#tl=T}gdOzIp4p!4kvZm7sAmJ7|6w zrHF&3$y|v4G5#IE36{#Zgp3?Cr^cBBm;n^?Cnk#}F)=2J3&F{}GpOo$7>eS4Y+c5MOoX#9;F>Cm*C@b5YtC6B8RpJ}p z!>mfz2#OdIAHN_m&^#AO(blameB*l%xGwR=292ZVef;;O#uGbRbtzekPx`L^G8BvO z=lb}s4^P~XOu|O>LzKddnxwRZmTUhSQ6<)McAPzf}Y2Zi-;bC zK$<|Ien7husRuzNCqFAa+!dUj;5 zCB_5V=!ORd+TZ|caO7gQrK=ct0Sv?qjs}p1;5_Qs412YWF4zrP-oIT(NYR6k!pz}E zBT?8c$6%nF)u#av^c*GFW;;l||06QUIdBM+U67J{$`@6ZIx-|4&?#9I!Y(FU9|Yc8 zWhn)|%TT#pQLH?f63QydreyN4;5bi$f&s^IfwVi5N&$U;n?1p zj-RHfY+-p(N}^8t4>LhNl6xDpfmrTw{Ikg|HIv1$x{~^meDl_GgC&N+D?#ICcF_DV zN)ZQ5lerN8WBfaS6D*Z+2^l$PPK`4MFas#yakF-t)8Iw31W|z7CQb^6pY&b-WhfTm z&-L+NAD*~z%~WF;DJkCf((tABzOgDl)g`G_o49;sfBvcT>SgoQ-qJR!lUH6fY1MtR z(eS|5zg)rjnU-(nDFWzz^_M$1`>W34;OHUv`}bBc=Cz@D+;66b0r&bQ3_UZtf6je} g0zlITR!3X@fAb>4F|_W;3jhEB07*qoM6N<$f*Wo>#{d8T diff --git a/assets/dolphin/external/L1_My_dude_128x64/frame_38.png b/assets/dolphin/external/L1_My_dude_128x64/frame_38.png index 5ccdcce39e8d3405c88835526cb7b00c369ce7ac..b9271ca8d5b5d2a75b4d95f615c59ba1c9b6563c 100644 GIT binary patch delta 798 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 LNkvXXu0mjf?wwAF delta 679 zcmV;Y0$BaM1-}K5B!7lUL_t(|oQ0B4Xw*O$#orea32BiWvb1=Lg0fnBtO)+u6jYE} zx~Q{CL0s_IOTF|W)TmT&J!mf?2(su!CxR&|2tpn44~1R|cI#?Ea?K0WgJMgh2r1gsV}H{W+x{oCQmh5P^~6c; zp@%`rL-~C!O-RSyR#OBihx*eVCtrE#6k`<>cg~RwJZaKydsxEQE0hdtd(3;KF=)G- zwnyG&HPM;!u{uz9r2EA-Avcr*0!r8>)F3hFBtii7k_|a|Dyb7T5HC9*ZoJC^B!>Wi zKqYo>r}cm9p?^ZWngx&~04UPppw-!nPmd&Y5)lm=spew&xS1kA8LLIKnjwz7OF2P^ zGqv`{)BsXs+q?jPIOU8dOM3{-(Z@Lf5Q8*1CfL=<&{f7gKxQy1LSsgu>4y6T0Aetg zXA02{FLKZ`YlArD?(igWi7&VyCN*dB$tX82b_bA|ynnvbD(lP0)&_{F-;8q6%>zKK zCjxPOZg*VQC?_H*x^@}zd^|l`_jPTX1Cjgbm{|Lv&2r7*D(5BM#nV69pjpR5?W%OIT0?N6DLBV@u@I1JyHOtOD3S7j!ouKQp~~ zXcIQHJ_l;hpppsT^T8U8xPb1r{^{y0aD5?ZZde5n5g=u403Kyv0dN2?0B8`0^-@K2 z7Fs!}@`%2D`Mp&WbQ%DDfwa55zGoHy4(LAWL?DKA7@-R=pnSgh^e;--0_7>NvhDx? N002ovPDHLkV1iP{I0pa# diff --git a/assets/dolphin/external/L1_My_dude_128x64/frame_43.png b/assets/dolphin/external/L1_My_dude_128x64/frame_43.png index 1dcdd52f4374a8e85ee648a2b1eb943e6bd62e55..d71c76f05d58182e992a3ccb95eac8d253273ed3 100644 GIT binary patch delta 504 zcmV{*5i0StfU(4vJoWIT0nP?Q?bwtuIN;Ir&p+Z$RQhCgKq z&sa&gww|KRRAP*y$!Cc%_D!q|i zbQsy%R)92|3yrO64AL__N4hGkYn}K>UE2(mTR3Dj&KMKDYl&O_aKAnM^PuZVBigJ^ zdwuQ6CDr)-zJEr15-8rdDi6Py#7hJ4&&uF*XEt`EjZUh;@|<@pL00XX3wZr=8&b*4 z0${lGQB`#KHAg;FuMKb+=CzUw!=-_|$pL(O@F_mby4*4Vf^4g)w1}~&wHyHU>g9qW zjE+ql1U=Kzjvx7_q@&F@UiSLuWq&=f^qdU5gm6<#D{&zVCv(h8?I!zBU0HFQuZ6iH zji^@%6~Ia#7|Yx2Nat}Ar0hX{PfWY-SwFXJF21zTT21L1K19zwHsT<;ofp7GssKL_ u{Y4I_Ll>fZ?U9HP+#%>e4gBRlJAVO5%_s=cvY zav0m%mX9=?3yrN>1ky7+N4hGgYn|wqy0#f8w|K~ElrbTE*Aln#;eLDe=0Vq!Mz~p< z&HCDtORDkvy?-^W1WGrq%EK=P(a`{gXJv4@GhaK@#wXQadBHmoKdbhQ7+(L}hEy~2 z02nQOR8<{*Eszh@>jJop@>R@W zgvX{1{GMTI$B%}mq@yh^Uh(?pWq&BX)Bt`U u`imS;hc1No+GCM|e+Rz@77UmF?ED2u>(xfX>Hf+(fBRL!d|(sGY0yzJCvw!iKGzN$tf?`-o%- z8ie07T)5Avbkd@nhxQ?Tcwq^ogO)YEIKDk7gd8t?ihGq&A!L26o4F>?O=tpNk zQZ^A2cE%lT7;7)mqD{F|*Jq(KGz8(n8TJ&RDN&DAqKnEXl8RvLboRHea4t+j%B=5$ z?V5JuW7EG~cU{RSyja~x!po|08O02)mLtDatSDSf6Mx*&x|!6@e(EEV713b$ zL&JrKoJ(g}j&W!o(}x>YgypznO|MSxk4m7x8()%PZBhdH2>dt+)<)hKzzzNAB1kI{ zF=Kz)*OsvkA}!jSdrf0~$1?!o!tsU*(3WT>Dr11!B$5hXbh`N4Ul{!H?TQBr^+b!l&Uip6i_va=gp-14Fa{Z yb*t~7b6E$_NJTdQfF;??dcebHB!Oh->+T!I@@AyB>}YBL0000A&0_;bQ$q#S+QHRjvigDs8p!^z~ge~V`P&y@_@RaT1 zciZ+P(e~_;fdc5fzi}Rd`ckrCjHKbF&yl_MZ?H8BZD3D6l>I8zzaK{!Jx}9;T#Kv# O0000JXY-F-|-MlwX6Bu;n}qN~h!#p0Zv1 zZrh$D+MZo9Pyn6xH_k&)UrIKNku==&IkMOO4Yp>X4eZH>vR|e8_u~i{Jx}Ae<@vn; O0000<{S zpckb*Sq0WXxD_r++y#MnIS6ct1oUum-W#U7Nh2aBH4~kIC8&NO)S|j ze9NGe4wC>*d4}j3`K5-w? zLSJkKA&5?0MFgQ<7opjOZVjE{UBQTpIFyQH62VE_JP}0FLk}h4;-z;Ex!j+$6yNsy z^5Oga{@#1SDt}owsek|K0Dxi}Z&&T;RP=r?7HUt{w;Iu#vwszHEC>k@UU{G!F(Cnl zv*VHxJ6Ql>An9>Z-d@wgpw>0{rVB8v5ES;EuwgM?6?1N62yX{S9r zO+S-*)JH(?^~SS_$1U(QU1?akl-_PIYZO8N<&KZ1^~KXk$IvObx@V$gh8BkSDzX#6=djs=k}D+8Udg01 z(+gKdN8DJXEU7uc5jydk1YM)-9MyC|6PfWBqPUqe83<7d7SoJ_7ykgC*{Ywe0~{*= P0000xf~xMB{NZB!_H(snvD`lb lAuU?4K7$vT|1kU?{skGQVQpL{-XH(~002ovPDHLkV1liML4yDQ delta 132 zcmV-~0DJ$u2E7K5Bmo4GC1z31cR#-K9qu{Uk)zTIl`i7b0^R59)*AKQg7-?Ll}XET ztJTF!S5N28wkqPdxIY&0R=fOqmP~G7c_nvOQA{tF6BVaTK~?um{%|pV`?*^4vD`lb mBCXbgU7x{=%zqgE5B~xgr(tc36@}IS0000kSOvCR47HHHHbcGkwUyEk?bN;Rs_Y9cxE2Ou7SAcb#rFs-8*+401Qjj zTy?J7D%`4!C18prkS?F#e}ZhWtcVmqKLZfZWn-h;JTat9CbDqY)`1vfjI$%0O%Cgo4R{Ol4d)`m#P7y&cBm!nR^Fdid9_x zUg~N@03f$1Z+|KQ&0E6L3q?kGaF!;IHAjOMg{$AwS$uqBu@AzD-os>#$pD zG;`Sc1`xYCKR!Uf))l}OoZJI(7N~%s<5g$y&qz%GlM&TZj#3LaNZ7~3G0)P+4+e16 zTd$`5XgsAJeR%Z+ZV+3v#>K>#gk;Ft;w>}?FU!|9>w$xkg+ zbJ;Pn0zAOoCX{FlC`SWA43LT`nqgs0iwY7^Kr0~r^P7u`0OClC1<)*k=r^p#6vWc& RPB8!g002ovPDHLkV1l(y5rF^z delta 580 zcmV-K0=xa(1lI49B2!2?7n zk3m6lmk7iwAW`HMs8EVXXAphTB86m8BH2ZxoCu09@$L@Aogs10bo=e@%)kH40>H3T z%~fZ*rNW)aSOBJ20O{fh{wK)hOG~5x`UQZ1E(#mn&0#k41%J?8tnwxx@KexHOB@2~ z@kI-2#F$kvUD~prS{=Rtnj276Rm~eujk>#40%MsgY-3-HF-F=4)_5xb+HOZoi)dO` zw$uVrsQO2Pe@PRVFhT0dHdi8e$u}=RSpam3>kZvGBT2Ju<4e_mQRm;wNtt^GV2Wj2 z{y{1`A^?!rDSvORfaWdX`Gq2*Jh+<1kK{MV_Oo}r{;e)a>HX}S%otT3nLK-7RE^RJhd~kK;AFiMUCf$I`@%Ui($A6`&x{x2NDN!6JYv0GJ>UG#H zHJUo=>IRT{d3LmqKwVjYO*no4;%dMGL&xjR;MPcu0h19`6AsfFaFDQviDO=*Pah57 zs<&z<{pe&uHTt>^a5G{BiIb$s;kmHHM3rr)WxDe?MG!!X3OK@of!(#?RyaLSJ^rPo zYA)MGmOTKt-00000UCM|DAbtaQgggku8-k!il$3ddloUud zhzCfEgp@@>$`ui~K)Jox>!GlHB-bs&QQ;7uR76AvgOL;zz=mtb%DYvpLunosP|v>~{41Klk|i4J&_8kT zoUciN(gW=H^^v{$Nw&yOB$Z|zVr_b>mt~P!0PzoLiw|0diVlDx5?==eD+U6O4Xui< zjrdJ>7AK;QntwwZL(7z!YjP10ksLGtG^sE%v-jY@I%rP;*awbNYF0PvzCdH9UE9XU z?Km-XXLol_+zbSl8gAn#%s^5{8`EUg1L^;^-pKSQv~fcO^yaz_m5dn`xal-I{B|`s zDb1}~VtqSi1QcQ&HYz~d2n2xj8V>HR)bGii-%YK=C?vdqZ(|PU4>F_S@N+|DPQIcwU(0X0;ug@*py{fcPyi-_GEF zf^0YjoB`Mu09tHYSoyGqyw114XuHd+7KNXRl|5-tutf4bh<~Wap2~>6?Rl>wb-;1~ zGc&Wio2gjyuuIF84hsADtRf=X8;qo&0M=hSR^F{*6$HS)SuG~aMhBFd3*$j*%33`-k2BjXUiFs*%;8v zqB!C!z!?)J=y*EqYh=^+fU82kErzXVQNVoXW%SmMapjq1=C8qMB{Os(`si*)9PSb@ zE)IadlYP93A6#&TQ`7(p0CtX2-t$s_LIkzV$NvWL;U6Y30c`jHNzwoS002ovPDHLk FV1iig_16FZ diff --git a/assets/dolphin/external/L1_Procrastinating_128x64/frame_13.png b/assets/dolphin/external/L1_Procrastinating_128x64/frame_13.png index 63f4e14f66da7c79072fad6346c8ca7976c026d0..cf7ccad0378789b7644f5c4436a82303b4c58fb5 100755 GIT binary patch delta 584 zcmV-O0=NC*1mOgbB!4JLL_t(|oVAm&ZWBQehQA#y_#!ODqDle6=~Cti@I~SQc!YGk z1Y|b|L5Cyy8b-2o*v3aO#u#ZE48&3Zv`r^WT`~>6 z%+*03{O0$atD-#^Ge&|h7e^9!$d@QU?f}-@Y)_y5qSwz3Ow3gqjMnjm409W60OM{_ z+c)CNf(8H^2!GE?0ktiG4Mhsu)B*QTo&JH5Th&09A$g3|Ihir$t}z)%2~b6=`c?H6 z2xtSfgZ0QZupeVJy_~7)@5)xH($sYb%mK(6khS&oO#(otE)qy$#XKyGsf%D@LmgtL z3m5a-Y8JEg0CaDHL!b_LC`h{AfLxyYvM_Kon=z(#jQAZa&Mo{Fy z$PEChcR?7E#j|XF9_rgi6IEMVF%C%3(*R_GD4->k-2?g*%U;9-^bDel!OIVTl=3fj WKPY=aCVip+0000?6wcOt;_c&i~KOE&$xm zRWsE}_f@zSDJ#I(6);%c!T$v5a#<27fPMm?L063x*K3$3*?$V?t*Sh35I7UG=tzx# z27>K?M~vAL)1#9;?tFw6Xl6iFRW)nx)M$NOrC}^fhh2OWV~mlmK~E?JK)ZCr%tkZs z%3LiBz-@ltxhk5#gbCtZ*&d1DAzy+3xdm9W^F4j~i)4@>w3s?yZ8_bl3(Hy~^4>zjChUR^{Gg^Go5jj0V_LPPCC zuMZcC+iKd`Isp1N!6Hz5927)-XFx8`U0E17n$MX~Kz|g+$?)5_nU1sJ2hBB_)p)mn z*cC^wACw4qSAt24z4#8mY&sp~@5g#F9Q{!}x%xmmse1_!xe2EO56Zn6Y$98`yG6m| zEM@lG0y4_;JwCH>NMlm^NSq`9aX~@?M6RR&LMa#hZ5jkn>rl%P5iwHO47K#pV+2JG zjNAaAdP0XGYM*8E^HASDnyO}XCdL90dg_5x5CycP%JzT(#j+Q10Et1g9lZPih$;U9 Xc0VY4?|KbR00000NkvXXu0mjfeD4W~ diff --git a/assets/dolphin/external/L1_Procrastinating_128x64/frame_14.png b/assets/dolphin/external/L1_Procrastinating_128x64/frame_14.png index 6d898a3f9eca2dd5ecd5f2f4cc57f7426033b678..e023c4757c4fe73367d4bbb392318a7c0039c359 100755 GIT binary patch delta 478 zcmV<40U`dg1hNE>BoFyXL_t(|oVAm^P83lTfRQskfBw$}fSsvXVb<88DNB;G0>rO? z$?6OKC&(9Sz!`v@0?=Wrg_X-OxMypv~cPLyaRt}^^!4k<2Afh5$DkFxpUxzwU z53CR{GczmtnToZ`SvszCQQ;upR76CF1|umbfDLBH%)42v!_+)Xpx*qw{V!++6%`um z(7QO;f9FS1VCn(Z{oR4Ry(F9DN0O#y9b#?zpy$&fwE*HD(H5Vy4kaA`MI^ot3RVmR zo*P;gT^sTD*_j-PK52GsAv#T|xh5A85y?RVK$8kHGy4b*tb_I)055>Ul$zP?T_2z^ z)2?k}WDamj2fDtou}SPloI7x-VIDhx=A<@|f7H>&G zz}?wEE z$DnlxWnVfKvWaf(?Uf}Jz!${h&MWHj`zyfyz)N(TWkZO@!vt4{#kF+6GZZji1N;Os zL|l1dx%unCZG;|)uJwus9PS)2&bFcIK)p(DxED3R0`&h($_KsNtN~u_!Qz3*Uj@Pi UCHQ&-%>V!Z07*qoM6N<$g4y%jcK`qY delta 479 zcmV<50U-Xe1hWK?BoF#YL_t(|oVAj_P83lThmkWrf6wpy1Av{WSz*@Lp(#t2vjW7g zfXV6${wK&6ZonCUodVEdtA&-zIpj^T0!FJUuR9bj6e|bPqF{;S2M|$_EtL_2?AM`= z)B`I7%*@P+ex_pWvP#F5E-D=Cn~I3&&|oA51+XFPn0Ysgb(orm3DldvxBn&0prS%! z9r`a0fA;y26qtH|b$@qYZ!gIv`H`flS%+AgKIr+hNG*W)N3_K!twTu%KoN=WgMt+U zf#-&nMb}3By*iU4(I?HWElj5=HP_@KA|g3x0BBNSW@aD3fpyTn1Kq{-PQoqW5uJ;#-3EH z3Ao!Esz z0T7yctQ+&dyl3WN2WD*uP84%l2V~AeB5O*m0`%;&ZQLzw_AWC35aqITr9C*P+hs{g zz4-v7gtf!*DUyDy>QP#kB&DuLbfsJDz6_G|Q(iA?JV?@B_TT?nnX*?UPz){S{!-ZS&C1G6>+CyKeO12X3!ku{}O0ebe?Htv=-dzTpih;muF(jFYt?Xo1L z-h2R3!rI~Z7D+!=^(d`Nl2X?ry3#FnUj|9~DX*6`K1kAD_TT?nlPC)vT!P~j1SonCl2Z!Y(a0}%;8csT1 zM&5==@C)3YsIIS);>=WaH=IA#8F~O*!2Pv76{~D27DO=xP9?%%GG(ty%DXkZ1JJ&t URNEiLIsgCw07*qoM6N<$f(P_`CIA2c diff --git a/assets/dolphin/external/L1_Procrastinating_128x64/frame_16.png b/assets/dolphin/external/L1_Procrastinating_128x64/frame_16.png index 5a108301a7c306c93f6fdcf74b3862ca67c9a768..9e6b02100b7b3c243f67ef03509e34167bfb2927 100755 GIT binary patch delta 611 zcmV-p0-XK$1pEY$B!5FmL_t(|oL!SYXcS=(#eX|@nyZYELT!@6Ua_=LE`ml2g_Jg8 zYAY)ZD9I-%f}Ne6Ru)#40m1teK@d?3A!*F5_y=sf4MunMcIR2_o!;f^=JDRl@aBCC zwA!!K-I65b{mM#(%!$7MXl72oQa5+Kl_XW&+%hK?;vE3Qf`72j)f?!dB+1n?ZHTng z5&%g^EwpOQ@I^>+S8uQ?Nzzl9szRjYkRU9%aoLH*5SRrz-Q2aQq9aM`Zln|<<=Y~_ zewoqEoJh3+YPH;ML0T&C@htqC32PE-e8~*y|RLFJTu>&5{HIN`>c- zDe{Ma45-~m2KRuDQH9Lmym+((I2?uCR~}ZI&m?KxI3X=dheEOdP&Bm-nUgwa0NPEe zWNNL%No&t6nb9@{MXc+V`AHy~?~ZJ?q=mIp2BD^uR)3$z8xKa308EGWp0ygNY#tI3 zORX*f>}ng~zb{?&UqAm;9Z7Oa9st4{)%@_hlCBPZ_x*Am83Q<3HnL=< zjtr9Yq+d6XBm=OlilYb_Ksy~U0gQ6{Z_0PAYoZ5i?2r&ACHYEkheYgoBU~K=>`0yAv9bKlCV{=vXv`q*zn8L!)xW@9#u+Or8Z`q+(iL?Y)03;8*nT`d xWdV);)Uc_-jy*)$9tRHke~TnZA9B~wqrZ4ksNw3V0EGYm002ovPDHLkV1iYgA2a{} delta 607 zcmV-l0-*i;1o#AyB!53iL_t(|oL!PXj7(t^#eeV4U@9xw0u2*AQ7Xu+gry)+YQ)wm z6%w-hNr*(J(@`l@%1tEZBNB-S3dwF`=ZQaw#yqjSk9qGN#hYbjzwSFZ=boE$4V9d36O(ug05K7Ex_<^EotGrJ2BuY!S6Tod z3%P|(qZz*lS?L;#mLy4fB2%42UX2ODvg;R}n8v^!pw};5Yf3#yT5%&MiJY%z0CvfY zZsA1gRZyqnb`$bSfe)wP$9F0_0WnF$FR-@lMzRAa6b{V7>F!)%*ARJy!pl&9dTzNb z=CJa z0LXwQjcjxm=oxh=9L|b|3xLBRD1Grkz4la+R*a+46={FS<^fV$>rgnka}uE2rp~r4 zS2%f-nPszDCy`?F@0cG0in;zq%$9YqZq6t)l**d(cz^5uh9m$pp}T##0cx9rOvFk{ zX8^XevjEPU+gs^2ryJgrF8i;af9jqjxn=hO;jMaZd|pYHN56-Dv8jv!9IIMIHrrGN zNqRhN21t?tSW(A~3K>8*A29`N^!A_2H?3%D2CQz95T_;O;$V|RY?3(eX#!{;1|6Pc zB>0g}09bag>F|Utzl&*L#|)YX$cOKwVruozaED38qEf42AW6EUUTbE0^`q;LCSB%H tnzmKgw1>#MlfXXzACV;Ked!u!^cQ$isNvXe+n)dc002ovPDHLkV1lMU9o7H< diff --git a/assets/dolphin/external/L1_Procrastinating_128x64/frame_22.png b/assets/dolphin/external/L1_Procrastinating_128x64/frame_22.png index 7e87176263fde31ae312e6469945d0eb06c6f98f..fccf72df6a51473e5fbde5cc673ddd0667b27ddd 100755 GIT binary patch delta 633 zcmV-<0*3vO1(F4jB!5{+L_t(|oK=!PYg|VZ#eZ*hg%>-q1TNgzUZD?=Y&sVKZNS8h zUD=I0eS+XB2_*4O2!RwXQl?bCKya7Be|8|1!C-@3*ckN2X@tSiPLRSI>CKyy;=R@G zPB)i(&iv-wORdSQ(X=|0B+VMCtg_Z*Hj^Y(HM2(3Dyu9dNq==^LdHemJpe@W`z6_s zaqZm%qu0VG*|t)6V+XCKI}VB}tE{uyGcjtS@M+$GDSo`0aWQxIF>Ft(tnyf4B1umS zo>ud67hq@%n<3*O#}A;{IB$LipJW4n{RaDgCvzQK6nmQ7fJYy1kcN9IYkimV8|ACp z-1Qb?DfilfsKr- zdXBY+x1caUk`28b{J{;t&}uT6|3*+48XGdMc#w3vP3g(Bs<{BV6ee190GddG$N2_CrIXv^ybY;@!o28 zr<=n)XTG`jQfo46G_8&#NwbD3tE@Gd%_K=x&8*S1$|_4qQh!~Uka1CX4*=2pd|5VR zTzfac=&kTcwp9vm?4b2@$3anLm33BoCPqyZKFupI#e=UiF6Qn&hV5yURh}qJB}C)vQW$8hjhGM|HsVqcS6@au;gq~X5GTHojVhw`=U zZ_QnVPZ~&h@g(Vswrkg*%1wQ{y7y3$3^%0jMExbj zBY?h+A>b}Nyo&@$aX!=p8-LW9Dn9b9$+?oqUuIt+VRA=w$lj~ zShrz(d7d$bLU`i7cH0aK8FyvyiZOt>`ikO_Z0KERx>t4q;Zy(A0+@9NWM0JL-!@f} z_Nsg`)j74l1&CU6#6`t#W!-cO(^hQyG~bUi^aPzpk`7hQBvp%0e3)05vu%WMW~uIL zDrtLR5plqYTUas{UM|4ur+KQhy@C!0ZUJUS8C_o{C2{0eggE?!#-4@dS^2m0PRr=$ zVQbmqPWi9D;LtbPzkhM4W%PHwu(M>jiTi40*vN*wD&W(2N!ZG`xQZ^@ZP5Q{`La-J SiX~|P0000z#(z19H1-P36|#49ak_#yC4z%+7exXt z?rwgB9>hU6zk%W;x41i8OmJ~gxl3`9RB*CGdy(E$n&xphX)XB%zT@va@ALjSFVb3N z0VKKrFm&R72DS^*E_mGqce~(57xcRzwm`H8{1jO10q-Rc?0QQzScZ1>%g;ZH^>& zAGx~^Pr&rTqFGV(cVo@QkhgtUfH=$U+tzg0QF!yndGM=Peold^tOli4rLyRsoaCys7_AH;5Fbx6fPv|GsspC8Da7e2 zM3)U8frIhUk!$PRaNEK%`|{N_+6(YfIC%G#V!LD_SUwnY)-I@0rE>D9)M8XglKDvh z%Qr&?p;OFNt1KmHbyJcI`0Z+XF91vg!`3bdTovxo6kt%ppU8m#&#l}4VKFrH@zMr2 z97t-)S6WMw)btGC-I{Ly(K|<4=bzm36G=kaj9U3z%7w~}+Nh*&GWFEJd%zNkA;ti# dfD}AJ{sOqN?3aQScmMzZ002ovPDHLkV1itT@T~v< delta 488 zcmV{tT25_8>YDTaSwozoj z#@^1KkU=c8^B*WyvccYBaRwV3m2HBROav=aB#UGxlF1y4d5K~Efv^1Dx#!(`-bGrg zEPz-S0G7`ApF!3INf*5Cg1cRCqYL_75M@BP2fPGW>;dx<@PGHgW1!w|{VH%6?p%DX z1M`0-K3?{W=nl2E;L;Fgrx0&F%o#-K;o+`?YcLz{dGHXTREzZv1g#?8fh!QDoNj9* zwfm8``(Xr3FETVMs{U@Q*%)%yM+Ok3>3tW!KkO*XJZwGqRV+UzK;>TP=lWd(_NntY z&e(Vh;Db{<&wo{U${>%Wa+0RsV^#H_0hLl&^iNK5Ra%TzmH>#3Cn>1+y7 zvI@{;%SYf~e00>db#A$x!7}~wwQaQLV-h%c_m*NCG9fGF0000;OAk{O#hKbB_RW#OKN7;@|g)1dW-p9hK12diG<`n6|acwutmZM8v_DjUznS zIHqeLcnvt93ZS$b@S;vG7vOLJ_~VARtOOu_WpSiW>(ken1AgQQ8R;+;8Snu1R$>$6F?6)6##m6{lseg*5I0H=cx&#o)9OaYGn{>79RtO1Gw zx8BKY?1BS1>=FgM@@YAEo*a;&2H+RJ+5O{q9+XZ4fB}2DJn*1gRexanNRIZs$uOjK z&H>AdL&Q6C?)@9s4+OMOhqUH~(@4X|vs zaQK7S&U*pew(6lygFNp`__5AfNlB?*5mU`$^Yvl0)wMnJIUa`e;R0xg2NVC&Wh}tY Z`3IJOO=nom^Z@_>002ovPDHLkV1lj>?wRB*a3F7_}j%d=N)nq*Bihz3+al5v5fKMpHj40M zqnNIN;5FcYDuB{%z>7M$T!6y?;Ex;LvJ!y!nFY;X2%t^vb!={n-F6o`Rsr-Di>EMN zeFQ9QtzcFmnN>N6nOPm9V}G_2M9mCNf=_*=6M(!vOaMLHL;&d7jT6fM=g#BckH09O@<+@ za}HQu93tMCbMN24eo){LfdAFPEf2e*K;Z#q*TXipra-PH-X=Z{zE&XKTiIQc07cXR z;p>9eF%YI=?LuFHbrDhWgE}LwS23hxW|e%qsMF&5ztm+)_5zsMZGdI7 zg~K1rcHRr%wp9;x8a#Yo!jE;=Xe;>hYO$~9!&g8m$3jp Z=O31UO=pOQn;-xH002ovPDHLkV1k%K<=X%N diff --git a/assets/dolphin/external/L1_Procrastinating_128x64/frame_26.png b/assets/dolphin/external/L1_Procrastinating_128x64/frame_26.png index 69e07f2fdc95f22debe9b275510d1d315294d822..4c5fbaed1072c5fad12fd41302d8eec27d3378cf 100755 GIT binary patch delta 614 zcmV-s0-61u1)l|wBmriTB_w~)(1Q2}DT8)IhF`!BpokGI5*4zMz2k{!s33HpBs*(G zQ3yi1V?I3BVs~DOS=(#GE$+SN(Yf#Wx;zQ*KWans1~RT`P~9I9w?i?@`JJ}ddN!Hii+g}`!p88t5^cG;jVwQ6S9iQ>>mT6&Rm`5+c|TfE^OM z6yqy-1QzGO+&AWH4tgZNGPtk}vt)6)p5>M=0Tcl^H8WSe zCL*0UKx~t>T7bc&;(+av-6v*wlRgv$(&t63s)-^&vK2tiW~)&RE~P(?yA!yHXqS*egdmL4WUtU8xO+ z{kKPzP7>JLj$rw<8{f4xINa$n9R1Xig5&eFd|>0WOd){;%C~B1=i0jqaB!6ODR~pS z3I>i?H8_IhI5Jv0>!%qwCb3NEOOnpMk{+*34|tCOZ}$$55=f!_7x02yt^nB#fGmi+{4e|oyToxKA-*h*=t|VnyJsiy;}}R6>pYQ zvGAj+_f$YpKe4Hr#)e_Ci)MnLPq{ zb^4q1Y#JtTtCFOrlOLti$*e(#CBO^K5qOj1yjTNl#{zm$f`^k?GYzXvLhoLh%~6Rn zibeSFl~{zVibW;#>8zPPX*<8OFXeVr#o~8+uX6#{ZV|Fa+zeS2i#i3Bz({idIKbJF zH0FjRsg+PAwbDPGurGh-Kg&5W>w%e>nZy5hY@XdE1L}3*BOqNDeg(!CLJ1LU2*4hR zZN&IO9)ZP$VD4MD0Cy4ZA1jb|ty5 zmo4Fa2NL>g^8^!I+)m)daL ze{)pnEP;dF2$o;F@l9KU!v|f4qwiZ%aD1MY4{V&4DI}0U`9>}6U3+^04vz9ZC9h*w z!N3u#21l?QM`l^i`)LM_Ni0+PlBDOOq@Olt><$CU3qfW%@a%%oJKWBpOz%lL%yD3t zj`<`%G4mB;JWQ9vKYCIP-Dh9l?H!*akV5+}@Pb^f`Y2>#00000NkvXXu0mjfg9s+M diff --git a/assets/dolphin/external/L1_Procrastinating_128x64/frame_27.png b/assets/dolphin/external/L1_Procrastinating_128x64/frame_27.png index c5f12a5482cbe81def4bbcd1020497815ca8903e..0db3adebf9f623b873113015413743737a081b3d 100755 GIT binary patch delta 302 zcmV+}0nz@s1i1u|b^`Nek$9qiW{oFc38(=USU&{gZ2%>}`wdV67=DM}m$bV9cATX1 zjgn6M9Sr}!R*C)jSbMmDUIusyc{09n1@wV;jM*aS$(h64clvH(+H(25e+QN`AZ z{uKHG*w&TG69z*78$!h)TL<(4Fd_uM6n@J7Ef{$K?tyYO{ac_{I{epvVLg3f$$c3~ zm(E>F>$;Er6z+rHmLvjt1McQ^NjUl>sW{qC`ix~~M)m#nE|zaj1Bfe4UP@ZO&7NK9 zQXVqq6+k{n4wC_v_V4&QOXy)K3CNA*IRSWBmh|5hTAPev4Kfb+feEk75g0s@;qDw@ zB*280nW^7qW{fcg%SaU=%!Z64N$tzIi+0980eqB)Ia*4(82|tP07*qoM6N<$f(f>X A{{R30 delta 302 zcmV+}0nz@s1i1u|b^Nvyuzm=}+W<;{_Zy%DF#Ha`FKKrJ>^Mp1 z8zr6iI~e|d$-ltrPq5u=jciyaVS8=^0J3_)Ye5^iu?din4F>@9WdWwZpcN&sql&E+ z{VDVXu&pbVCk%!FHiU{pwhrh8U_=OhDg2cETQKqf+ymum`nN!@boj4-!}|4!CHG|{ zT{?Fyt?NGeQ@9U)TapOq4Y-@vCE@6kq~d5l=`)s{8P)gOyI8(C4Ir*Gc`0fAHhXrZ zOL@qcR{;4SIZOsv+P~xLETM;`Bp^4I=LFzkS<-)3Xl*ivHOM&N2PV8SM_}+shP!is zkpL4~W~QFa%ot+~mXRtUm<<_8lG@3+i*^z}0eqB)IfiKZ9smFU07*qoM6N<$f}e(n AcK`qY diff --git a/assets/dolphin/external/L1_Procrastinating_128x64/frame_28.png b/assets/dolphin/external/L1_Procrastinating_128x64/frame_28.png index 32b42654d6c7420cea2435738b66093e2fc8adcb..635f647f475cbd5006ad2db1214cb75a8643cc25 100755 GIT binary patch delta 552 zcmV+@0@wZG1mXmcEdo1lkuMy7e?UpWBc?!tnjZlFf-)=7&>%oGpon-Qnsl+1z^*-e z=c5>B^SI4ONAo!P?j4>=l2qLZp&CnL&!Ub-09TQHeWOH8tvbIv)}8JcC`loN5P}QP?49#~~a_`uarum^{)b z+!(U?2l}$@aPVHz>_-#(89yF;1qE^xMqLynuO6z~uJ8lFZD^GD$3r+pMAs5WM9; zT(o&~jMf8SNu{Jl#tX{CGXZ3rTN%)Oa1L+;FgOM70em|JQs|%@GUr_02)NEH%~R)Q zDJevjmYO5CfEvg`1AbQNwzgt@nkrninLtqh&H=pyhAEE`d`?4u`cjJE#;aOOz)3SH z4pz06jx1mo+=pZJ*feP!24pPDF4Y>pa@k73hB6@TqZg9hPqD7b9*1x!>FX2qWAaF& zaAU~kALz@r!@+w=^B;BWXHAz2pu4ghii`n{>|g}AceR-Z7%fs{vwUYSV+d5~8$CMO qeVzeIeE_nJF-RsGdnQTRiPC?lZcr#-c`xSx0000S<11?UBkB!90-L_t(|oJEq)YaC@5$3O48lidlF?0T{X%Wm|b#~wsPG}(fn ze}FedgI*O1o+QSd(10Ea<{BDpdcQTnZ;rX+RkjO%!HYFzaHM% z^z^=b-{;5Y`@D~tR)Z2WC|VBEx&{bJ`;jrmm~dPI;BtFSl9ZE| z06}Wm34M;Y5E@%9ZvYVI05-CO0{}(7c(mvu#sG$e;I!`_lRW__0n?La0ds#J&@gx+ zWaSp{+&PCoMz8wIU@=q7V^U_uz%wl>52cB8lw^JjGRt+0F&l(Dj*!$O)gr=MVAl2L z+yad;0rJ8=51}I|(Yhq*giMmsNg}^&g{2vQ#%cTKfem%PF{`atoV8|YxhH9G?x67f z3tyvhwgeetcG{U5PEyR~adCf84kf7)e`g2TLAH7PVd67+P#hOP|C?5@#yq{8Z64oy zcHuVLDh`St`dfbueMG>OVD;zM9t<4&8vsGMy2LC0th{|^D}`nm{>=`H!$h}l{VwTG ziL)ZvjE9PceMx%~b(PZ3G_NO;CK7H-DtmGrNwom2$@SU^SEcknYr+z}929XLCjbBd M07*qoM6N<$g0{I0EdT%j delta 543 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 delta 597 zcmV-b0;>Jb15{(pt? z7BIIbbjx-VYfa_-Koq*`7BJU2;$c%8|Fld-EP$>OWn-9nD?7%WZ{dTk!uAtsN46I}Y~otZ=a$qX|$PJigcnafmLpU!tN(n&UcC6RHdT+=dw}GZEAV2ol%&m&OJBVkHkf+`pqJPP`VeIgU4ZKVBaOaQP+uc+4>D&i)28Xj0gS9 jpad*&FNTzDAP?LGAWkf1DHKff00000NkvXXu0mjfad#x8 diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_10.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_10.png index 16f5338599e042d8242ae51ad02b20f7bf1b4699..15a5d5379a7e83a3e43e0fe7f19f89fa452e5746 100644 GIT binary patch delta 510 zcmVAZ9)kwzqc zw`*^ApZ@vxpP5_W{7#Bd#^DfccMg`2Y1Z)HHz5Zi|nsCd(0zg`2 z7E8*sC%hGzZae@-f6Mef@t7u~Aa1--v;opap{{Lke0QpRW{u^TZ*~)1oQ2D3crSRA0P|#3)rupq9MUU)CC+qB z#%RF@kGYu&z(|PGAkwzqc z-aT{OefsC$e`a=p7so*Q*%Q9=L!fi^B!V*!$oJFcFG0>b0DHe0V1NRE-2luN01XBP zZ~$xvwDlK&my4*-U>_6Y$c?v2g)(J#SMjY*fHhE5NQnvDbU(P!mo$m;*?s z%412Db%i$~lhy-p^fpZI#uYRm0YTiTRU`n}TA?m6IKH`9;yu74XZJ&i!C1PnTbK(_ zUAf)O9D1vh=r2f4`P;;jQXDwnEVIFK#8=x!7iZz39^45Y6~HWA){Wv2EYIkFRuX5r zB4;?~y>U%10FR3gavMww@*X!Ib?d1OdjZYhKDCXC zEXm*|^`ig^VAicR)<7~HmYZuZ_1FXZ0UVGP|1Ij3fJ(-0n8zGg>Q$o6aV zIF2FT-nRHW diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_11.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_11.png index 756edb318a0b9cf84afbd7dc68b26a335f413df1..e66b473f719bbbf52ad8a370e87d14e7741d5e28 100644 GIT binary patch delta 546 zcmV+-0^R+>1i}Q6D}POsF;5gh6vuyWZn<5Fa#v88aKXixh#jTft%-#t-$XhR3U5s8 zHSq(;#~?AvTw{sRideu9D-!~T#`EBIc^11fd(+J?|M#E&doKgLJOI*9o^VcgfX>NQ z1ScMlZ^!j5K~6gW>%VGX00+Qo0Om7*1_J|F0G0#l{sUll8h;fU?1N$oFr3e44Y+p! zL)Cdz25`<$RVzCP9upjlJNms*tR0IwhN{!(ZN?)7B$W6>UHh(KFv}dk*v9B;p^}lY z0rWhtQ*}jDz*tM5Xnh$L_7%1XD-e=lZ>NpA}7s zf@XiEY$wrYg+Iz+3}!Qv{(z1BwmF#%sEVk_k_@g>zkeNo1I~Ko!Wu}%!`b2*Of~Yr zW&lq~T{F2F>1i}Q6D}Pm!v2GJV5Qe{5UvftTv5OQ)vBCu*5xSJ=d`J|Oc@xq_N`V)N z9wZ(BKSm@3SvQnHP(>8UMpQ^q;(#zteCMG!@1D7CKmGIXKQp($i$fs&=n3E19?&}7 zj^NY-^7W)XCCFI|VB=>E4B!A*3&4B=&|qKy3&2W1%YOmbAAd)M2K%5G1N5fT$sF9f zgr4fODg(Hnr>d3h29FUAhAsUzSFE3iI(n+(=xv651tgUCL|t>Qp*zVOz|h9%YN3+8 zu>rI_uTphIRKQS6pqK-<(RpA|6K>fV0Z6ONV@a8{g_k0O#sjc)7EJHN71SUBLF{g$ zNC2|ALTzHOe1EaA#Cw2;w%7_K22;?E-NHzK^4hK~=FnRmM1MhYCcjK9nTQ4J>t)th z-txI4;&@3xkls3%>V!Z07*qoM6N<$g5nVT2mk;8 diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_12.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_12.png index 0fd1b192382fd0bd3557bf91ee5f4b9c8bd12b0b..3f11cc90e0ce83dde627ad98182f0c04e9884cd4 100644 GIT binary patch delta 512 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 Q=l}o!07*qoM6N<$f@nz>WdHyG delta 575 zcmV-F0>J&-1lRYSd5|hM#j1C$V4~wCKX2O+m2B?(A+(k?wm5 z-htiu3pp)3h76xZg}bceA6 z=-Z}ru`pJdwjRvoY(?Tsqkz7YfSCZdkStn6t4Z3`0zj$n>ez>r@tk^jwxxEanjZbC zOfqG9_4&=8X@5IHLgL^@W;a?zcz(Qn5Kk0hL(Tg2FXv52olXJ7|Lo|Bn-s384 zObf-uT69?NPESVvfMlmpDAbKKk3ThFs4V24>t)s<>J`QnZHP5EvFb|GE#S_gVlt1- zV+{8@izUrWE7B?}c%g0G3&33`>e8D!(uCK6bk>aD3xCMFu`1iUNtiteguSLP8|zU8 zOFM0IY9Gd?QN&@~%6bAqR diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_15.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_15.png index 55cc941a4227cb8252d79e9c2fa6a2be22aed052..64780d71b3fb7687f0c0a541ef009049cdcf02c6 100644 GIT binary patch delta 555 zcmV+`0@VH61lk0UB!3}EL_t(|oK2I@YSd5^#((EdoWz2i5eo{IcDfL|5p>txMDYPC z_zJG=&iV&)tzvc87Z3`4iGtK-=*p!oqzh?N=|+^2RvAYplj9<}cP6|1_|A8}b4~(0 z+y=s(4EG$a0F8s29vozVeA=(x0_3m(F!#Lz21o&zalm{4P=9A&01LpBL(M+`JnDOe zI(w(+19XSOK@BdPKv#7*DjfJpS5-%L)_LTl&}-=DT5)w>G^MNB_ui(LC?KvR3p5?~ zHOvm86rg8)bhR*?Mf881RjW3Pao7C>Bsbgn&bQ6qKRr5r%yt9)}MMbwh@Gm*`S zq4oIrje8TO=YLnftX~pKlBLAFeN~g`}rGGYW$L=nm;X5ht(c4V3rR@4( zHZqL^SlIMQks@OhdqosP@Hfns9Y}$rRxxn~f?jtpc?L5|GGNhxCBhUY6i)$t~}yS t0mz!Iz>^^Y8X&TY9`=ED1PB*5;XgFJxf3VcmJI*^002ovPDHLkV1kp=|BCtxMDYVu z@GH2sJL@0Jvx?PSzkpEamncYWhOS)dLb{MPm2N~SX_awwl3W*=_hzzthjY(8_nsTz z;WiNNWVr8e1!x@H^uR#|$fy1K6(ENVfVuBAV1N{W83&jT0DtNP3}6A6a!~UR0FU~f zp-$d0`T*VGa4-TcoIqD~SQZZWNmo@%JL@!ZQs_1G^N4YEUo@qw+V|R~mna~vBnvbh z_chE8q7+!vN@A=7S{W}wO=Hi1o)$nn0@AtmyhV+S+Aie)B46d3D=DIute=T& zP7JNb&u`qD5PvRL&sp_x(IH*_!rYgXgln|)gZPyxc trvPNl){`Fs8z8E-9`=ED1PB*5;XgFJxf3M-+u;BJ002ovPDHLkV1jPN2Oa!63n2Z_5TENAFuFSFfU5?OFPHu; zL9Rythd(`F00+Q91k6VOjRpp=0E{EFcL%`BRmae19~movaDRz`aw+O4Rac$2spkqvlr)LDzOG@i&Ky8(yVli0D|3HiBe37_CRJB; z45)PrRKdv|=GZ}%=`u7_bdqhB1IVKH03aWjW<6{M*_`%_q^B9wCIcf3G!5_rcoroF z1B-52SPFczVRupPW`nYVw6CY(n*r8h|3X-%hsB1`g2Yzn7J1N3I~>L^gNh1^*vQyX zBml_lwg~to{4-!p|@x)oa;s5{u07*qoM6N<$g2e#TiU0rr delta 448 zcmV;x0YCno1e*kqBmv@)B}ISd_w2ay^__cX?u>!63n2Z_5T5H9FuFR4z*PgtmrMVa zAlD;+!=D~7fCJzl0Olir1_1+D0LB5@y940mDl#<42gVAZ+-%kz@bCso)lIt%z%NQw zZS5pzEOAhe^lQg>aw+O4Raa5l)N=(Slr)LD-q$c$XAYpYv30f3%G`h00PHusN!3-6 z0kv*{s#9`@Idv1FU&0J7*c0LTZTSr3~*Hm5x!>1hVF$v_ALO#}P@o`n*F zfkm7amIB{wx4Tg8W&>M6+Sk+Wn*r8h|Hfr{SZp_1S7Ix4i#&+a4u>(!prXPeG1DDI z0${A4#iunPUWKE`Z>N6_o|~{2kk9u5%E`qI0qb3l7WYGLtH{Wb4F09fX#gDXeSbSx z14&)3hifqHyy-$U08`T7>Vb0sm5hUs#}e4+Z_khh(*QT5aeQjATtG1%cG`5yM&7fh z^Z8Cy|E&5;s8nFQ1B`K`z^3S~&TCY~?I)18)&q}#_0ty>6<{<*ue^zr@8U5{C~`PC q=4doH2af%ZYtj{vXD}8XFW^5CO^)$&gV{F#0000*n!ImP+uhi}{eK$(UTivrMEj`N0L-@A zI)J;sU?#F{n+Sd~6Oqw%j zZU-f{KpNCux9xBl%^V5}EXqd3j@$rf>v!>KO@gTbN1pwjI(V!@iGcbP0`nVXWXcT_ zv%c%`l3O9SMW;wj3V)O8Gy(^FKWusrFy*Wsm>S(KDu3W4f+>lUbf9>tV0)c1j(Mzs zU2^UfszO&l&693@N@ZCx&JTu@eny@8eBZM#i^Xmw@_f@P3IQJM0a`l}USMC{O4GifplP?<2g z80geO8xIa^-lSs7pnytRpzNLOQI3haOxOKDMJQ>r96&7x4*>GWG#jw?Gya3qL6N{s zFVl!gG$Cp<)PFVbBeR_N5{-tp{k93PR>HS4@lwI|I%DkfSOdHC z+$mIzu7QRpVSOrPSTZgS;z>WFPF=q5*_Xv)w-R~285E@e5B319Eh(@Ao(`jzMGM?H zGY;JAeUlQ>iio118LNfOnM>}&;S4c07*qo IM6N<$f{Qxx)&Kwi diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_18.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_18.png index f749b7016253d3cb89764d3f6fe5cb5f322f6fd7..52c250fe54439435ba0f45612072fd14d5553a6b 100644 GIT binary patch delta 531 zcmV+u0_^>*1gr#*B!BZsL_t(|oK=&tZqz^&MbFGSv9$tXq3u{jMxqEE$!O z|6I(0(fNY_&K;mWpS5oh>S6@2`@IDkumDUv(C-1n2WY?mFn{)F`x=15RZxhJ_lgxj zzFt=yxOoM+$hxUL_(3irjhXt4B^Jt&eCZT-&XibkkyXgn|Jj^lYOwg?I+r3Q*F$?m3@!IasuE0hIGouojjPWlXhDjkF-z_b2@M8Mz2 z9Q29^u1PwDn14tEybKoSfN#ks_Pj--;Z4{UmI}VUaAq>>VdqglR-u~Xhf5tmrOa=@ zj(dwTWM*J71yXCZ6}F{o*@8I~6c|*v>4q!<(5Bs`z1H*?zo#Wjf6gpC(w#*>eIy+m zC?!?a6+JKsFfw;f{yQ>F5fn+3z@OM1cwm9cox0C}sDI3>!IVfh3kU3ZFeA48a=?)S zQ3(@&k0r2{U#&tpv;(e)!}^rUa0=OY*woQ}Y}8w}WwF?Zh&}8Tg#dEHg4UK8*Z}q@ z^NJ#?0o3aj+ydY-H)N8@&I`P zUV-Z(1(aKO0VpX`@DPy@ux=17R4Guh=|DokNa%8K_Wcz0u8q4L&CJd}{~CC53dHXm z{=1k1qw@y=ICp^heAb>K)Wry3_j?OyzydJwfPN1k-arEefPb-vwyyy=Tn2`Cd(T(` zgS18!bHF0yWF5Bwk(k;Y8DM}>uQBwsqloiintTx1!%b-55gd5Md}_V;S0tHc77 zCPWtljaq2qfgQ*5SZom(P)ZFHos->7F@sxXRTn4=k~&F&RGsu50IPIhngGxG3W+&PwaV#M#GyhEmR7=zHnwT%wgwIf2~3_#}6wVfR!@8 z0Xyy`%8;3X#1u%a)mE66E@cbMp`gH^LZ=(D2tb>5mbR_wad;J$Ed4pN@JRc;fci)} zC@3XW)(!Sz5@2NRp8QubO%WJLl)#_Z9eBV3mpk=f4Sz&sz8bDUHwy>sd0<9t`{95i z1)>rrzK;r6%deK99NGa_#9@3&WjKXwJWT3nmyLSMwk#GK5wV9oqYyxDSkT%M0~^2| zWu8%FHGq2E0=EFT%#GRyJ$l+cIX=9C+bv^CmV&zn_f7vVifKR>=y(aFNt<9R;~$8u Wog~rbISncR00007DA$o5u)FgCTlth3Las_ z6Yu~?Yo3680iGlUOP4M!T`Z*_bQ>tvQH&48{McFT6xQ|enYs6Vz5@WPr7lDU^A>=D zwEO}j^;sxANE-5%vd87G7*rv0S;)`But~zUn54vD5yLtO?|(d=>FQRTN>UpgP8H?U zFl*sVl6KKiw7Iq*_-$%37X0Ejtljr5_dYmY0n%m!@)`K2zX^!Z0|QUSwiYbhUPB^e zeBeDDu8Ba*HQ2}88rW-~*^NN#4(XZ^;cC(8jn*!sM@n^X|G*FW7%&zWh~FZYvyaQZSR2?mH0mlFV>rL>Pg44|p+DJBKl zx%TS^Njb~;`brOynz*G{@##@7?7m%RAO`q1zb>b<#p%s*u0BqP0p-bCk88$mnN#BG z5#zGwOv7~;84I=*ZWDkQP&=A5FEQKKP(+##=}OW?07w!X)o8badyy*^gijVV*Svh} z2&(~0$!d-{YB2ENq1qjDRN>x+m+qLOoL=OM14j$s;XgkJnR3`CI!XWl002ovPDHLk FV1jr_+2H^H delta 464 zcmV;>0WbdP1L^~iB!96!m<=r&NSqZl8G`LTDEDXcrkXXf5}?im1JC3PV(n6&^D zq~+%zsn0;^LDGkEtLA48A2dY(N|1Dgl$Jg!}HhR`))h zGJu!d{+!OGvwyo6S4j{9de=W+@2RSzezBVv!s+Xv1Q;NW9eZ=uLfS<^44|nWC?*Bk zxpu2ZNjb~;>ROMIns}sG@_DZpw%=~DAO`rizpkd<;^cNQQy(2-KzaPms^KPB#sY1LTL(c5s2xr6OU!l=ibxKTt|eUtK}l?!NZ8oHyT}!bI5CTuYtHr= zVKrbWS$5DKqXq*H9;)qAj4Hg_u<4#+l+%ZNdBA814*3s12$^zk+M87X0000#po%uBb0L-N-?2LA$#7oldSYh!i;h1;Oj&Qv75l9CW zc?8CT3KxNFP?1Hz4JyVF$Ojc6yHJt<_UVx#sxz{qRcu`kk97M_Qm1&S>J^P4DZuIc zTD=(AFB0FRX8`%1F4=HP*)K6+BCVu#r^wo;mwFt-f5Esh!~o5pidE0c3tiStLm2Sd zv%iXCxDWo}&YE}zuv@?Q9xL*^eCCqKkjZK(9U4OnsMtc{gCPcdF5FXH81VIuHPBg5 z*7sU!Ar%d{+||0!BGhlZP2A{QMRN)`wW*d{>4y}I_(<9vD=hvb9Pa90pcz!L>UnvotGXEo15P~q zPjL+Q-ap(~6VCv4>zChSMV^<>ToM^FSuLeQV~7D2TS$B`#DLF*>sn{P*E`k_^{cG! zwbVi?8gR9%b*V+D-*}t2(S?fUFW}6kT5hEuQZSC2b8Q}_-vJmrq`s;=77Q`?_Oak6 zOglexa=N~l>v7(02)Zq=rFzkUqWmk>D;=7)sB|M~zv;k^7t&!Pg;$J`KR+7FSq{k! zcrZxejqeW~1_vDEvo~z=a+#>Bpc76Y>Nh+MvLYfKO8|O*?~()m~{xc1Q#F} zH!w>Om(n6Q{^=5Weg?nBf)SFQiFN&W=}sl4Afz~)dR6Zx1ps`IdYgHUBO@J>hNa=t zmt)B%=odJhwh72qjV1y4s!=7NST%|SRI5gwfaZVWOEU{Zv48$?48*`e_lnaJN94)8 zM$e{o6Yzx7PSZIm3&aCt>{m`&*dlL--mUdwEqb$~($py9A=aJ3$*B0{e$H!L5XL|} z%;Gp2@2S(zrMT6{E(t{Os{GoGfdEeNQ5wNm<28(bh_~mQbZiu#s_vwAG%_gueol<7 zRNSkRcB7GlUVkq0_}ymHH!r1a(4(}Uj2F)=C<7IopDk)^16CamG^j2X#zRk>0+Hgo zjSi=g(y3n+X5_xFsvuX|yYZzeqM?hxUI8 zW4#ykNcOjdCxnxZ+!LZnN9qajq$Bo(bkY%dLjK?Jln;Q=W`FN35D{u_X!|1y7JI`O z6@o(bf`;jC>hnkih!z~niA-ZTq$TOaR4r1X7PqBO4T-I7R?>8i6rbv27-J6Ofanp9 z)^UT(Zx`*1cclk}_C9$o9S{JDc1JqF#kfE_AzHp;_$#12U{;cabA&+r`{+4lWV~TX zE}SC*csl0sU4Mjq&l7THxFeUn3tWmj+X&?fcRrI5zcuDTH zj+aMLrk0}DS8qMigq-ssv6rL)1l$+SSEegCBSVreXBcD!`~kF5m|cyCgb|z={-@rPi*_>xX~~~yLM!Wc{iU=3qes1lgslH8*niF2wnKjlPzX%0Y#}r2 z$95;F?w5+m+SdO7XO^H^Q=pJn0PeS^tvs^;4WB&aCEF}QDwgbIquKW#-CX#D3czBv zx&xQ3as6Rk(o`;rHo+0`o?~F3!w03cWQIwGYkr|5#0jR`uNe!i~0zp zS$B0h&p=N-mwpCsnh6CEH+G+_xgpIY&7~$$++}7p6ZKqby`qFdv?Fe*Jea_=XIhRZ z0;oU@IDZSmn{%ig@^Db@v5(KthIdkSS=)AJ_oRp=2KX+UGvYD&aky;jZ|d`9`0Ev& jZrwC0eE9CX^%vzIH2a4LeM-3k00000NkvXXu0mjfLD;#_ delta 389 zcmV;00eb$a1E~X$Eq^gi!!Q_ypWR4AEN!JqjD!J+m6ZkWEZl&VQ;-~hJ0NZn0Xtj( zHBtuHQc)z@D$Qf~o#b~K50Uld{r>%)Z2$m}k{js34%m)G8kk;dhci3CYHBoyhKhKs z1epS}QH4_=8C7WD1~QN&3th4|nQvuf*MHOnFns5iPsqw=g?~lZHt+gd0Eh?}Z`lsa z%9z$9)23G_vwp2T0B3rT94J7amj`awAWwu@0Lbu*kFaEll~2WnC)=9++4AX55{dv= znB)4)1#3LMU8<5Ju1PMrY88Q5eJ*heW;oo~4&NR`Vs@UI3(3$c%p_BbrCe|Mv}Dr) zvaBDjs{k}eD}J)`#*&~1?Z#f!niH}lS&^AiyaZ-h5@|)|qKJWr$Vc2F5ikRa21Pug z@E`%00Zwj#e{&AZyF45apWxJIX#G2h>!58uUtC3Pi2<;QvzzW1Wt{hI<)(h#`@f>7 j`Rs~TA>q5*TrSE#H2a4Lk*Xy{00000NkvXXu0mjf3@owb diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_24.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_24.png index fb33a6096b41dfef7c66a047bee5a657648e847c..324311a33d724de329cf313d87b867d8f276ce48 100644 GIT binary patch delta 416 zcmV;R0bl;N1G)o{B!7WPL_t(|oNbh`Zqz^&MbErgVnUNGQ^h7whR30>QMSIASp8@~^G;caMVVIUkz~%t{M(8F`@qe%@6p`y^ZDG-d&%V35 zmmaioibsffLk7_7XJuQa6qDr_6e;O$&^v8?r+Zd8SOWr^d)96ZBi8I3$XE3Q+_@zX z=Ky~1`RWE?L3lpvwEws}&&e9l5MG|#I7LfXaavf8J5F=T26Qk5V(FOrE*2J!>pIVX zW%g=aDAxU1%ztBJX>ZnSCq)Fp>&qepxa_BtYw45JE2Zp5BWBP5(-c`Tlg@JM3P`He zy_X)7BAZuFrXUU9#PWlN1dgO(De7ec25GX#%0`t*GnS1&=*q8h*t8v_lr6srZ@!P) zZ{QzIr7u2@EoT>3<21Gai||8!(LeUn-j05T1GfW^B!7NML_t(|oNbgbP8>lLL|-=}(d&c_iI_2`Als3A0UrVT5YB)J zh`59~1tP*5T5__IQwJ+2CSzAZ!Ys@bLHDq~TbqnpHC4apz?)}roLZpT z#RwJ%C1bivQdyuW8SO4fIynFYsBGF9qNAwcO8}k&bX%a}VSk-50=N5ZCee~>+g;sD z51JdsD}*$V2WU2hZEI4DlE)$?{Tp#Qie`}q9cA`nUd zo;KW>MVR6~6rJ{$>*JKH2O8YT!5_nDadQqc$)w{jrR;$YHrCbweHStble$hj;1l*~ zkuetiQAlg!<9}?vS#22sa9>Wd5a6`mrd&(krCu>*yBZ+@@e19xsJV3``D+X$)#}cr z*T_iX`MbzT!w)gL&=7$=X_$$676DJ%?9tg%C8QZ`1K_&+s~nbXM+_IA-ng$n$MG9@ zp{aCZ^H_28`D)z87GUar$rklHgufY&&zs#uNS2Vi2_X_hj?C?&@EAry zaAY7k;{^yv`~-x)fZTonOB@*i5km6vqbyED5mQLDDAyQXRf0Fbm!l?T8v96waC z1pKrkyho`@pqh5XDNyG*#rzUzGLSS1&>Kkw#Z7?{eV-DhK!3$;4a*EfeqE1+Y5jRL zXz?T+Yn3~i=d3f@R^;g3HoY z7FtLzYD)^kY!5X2y|eG8T$^)!&}%{I;`M1}J847Ri@LtUgK+yNvhucPoPGy; z8AxM=h3BcDLxUSVh2sH;kjzWLcxvDf+_IpU_f|I0I#*mn(tW2{xJfw#2i%`?_S3fX z|Hikk(H??5sjKZ?M*v!?AG5YtyI$??Xl+K!C0%@x+89p~z<*e(Zhby@6+Zv~002ov JPDHLkV1kwv!o2_h delta 408 zcmV;J0cZZX1F{2%$&987C->ZY?l}YikTefB3xJ_Jw!8Tpu)_-X zAEn5FVp!paK$-ev{d1s7K+q^aeTO zhX%P0sCayd?@_r{$6C-&Mrr)rX<{2`S4}DxWc|IjJ~7ci&qw%&luejC{G2TTz_JzDq3s_gwrR$L6rtM zpy90VW!tr$^c0hN)j0C86m5CTqYdboDS&h>Z8a1c?aWw($Tv2y@Z=-lc$s&tG)dZr z=nNVrAnx9Qr(!Ipw7_sGopMt5&u5^6%5REKQTlz54w?d^f!);;bZ;O^5Xh)xrO49n_ z+iDxKwAZ=QG~0*gGHWBL_t(|oOP2iZreZ*MIVO?hzSsAI~y)!-oj;g6ki}`5bu=Q zfDVu%fD4ymiXiU9!~!D3lz$47yFYWO(wXLddb0HvfI02ly)bSy=+2h}noE4}Df*ao!gTA8?-79k!&7fHVe+mHQ5PwUNE3qXQPn$r1A~gy? z#aZ8d*|nbZG&%LEapa>Ht$EC?4QQAtfOIWw)j17!U4sI-8ynd86ekdPnOCheNZOCq z8B`3Ab{`;8(EBbm(4A)cIH~y;GiacQ8}}(nzYo$u!DuDPQXH4?WIrIfclh#1l1mfi7R(f9Vhw^6n>m)s| w5B=4}2n^7P`^|CkQqr;fyZ-u9IsyC#if@7~`(0hi01E&B07*qoM6N<$f?LkFcmMzZ diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_27.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_27.png index 99cff154687be8225f2a7d2f12dc32feae69561e..2c0de95be6f2c9da9a36c0b20f64cfdc9c3d6e28 100644 GIT binary patch delta 229 zcmVX>Y$*Z+b&;1lf4Cg5;MfFdEhO=fQ_7%03t8uw4W}%F z5(l1CBaZ@_AU8&umCf|94{fRoQ;wqREc9?FyVuu%&eh}-9Z6NENMR2zLyipc`TJ97 z+Q8jv03OUEt6>6Ct+n2yx>Xo}Q>J}MeErrz&2b;Pdxz~OP~o<9PiE3awZD~`R*`|h zPcG?K%|iu@=P~*}Bz;T8rMd;Nz!8R21JS7RQ00000NkvXXu0mjfh8Afm delta 229 zcmVfbl;MfFdEhO=fQ_7%03t8uw4S!h% zB@R5PMjiz;L2isRE1T(IAKFwGrW{4rS?J+VcCW7iovX^Y^FF zw1KK6OT5G*Yb*nG{r%d~j`1q}Zn&Uon_YT`npu%nIp3J0;YJV#=ts(=1 zPhAeH=Ai<{^BCO^N#9a&scu0muwFq!w;&eaIw-P0d4k^+p{e2FHB@Yh{msmG3*vx< fo1m8xf600000NkvXXu0mjf=}&1X diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_28.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_28.png index 21392b7bf1d1bde22504007029f703d5104dd194..f6a0c6e6929654b0389fc43604620564665b9bb9 100644 GIT binary patch delta 421 zcmV;W0b2gO1HS{1B!7lUL_t(|oMqBKZrd;v$MG*24jQ#(OSp9HY!pb$A=z_-dh8T< zY^E4JL66`uN640cLp%Ba9*jDJfdC27G>F>Dd>KSZ6f;N=K6v`^k&ghNM8pGtPTt9< z$)Si(2W4Jib07zovxrEQRH$TWod@ZxuLg=7${cJCE=hjZseb|x0O^lL<$KXNm>h~e zt%33;Z3H+RuSG<9_$u`fo<+_((7+#p17vr0K?;`T z_GZ>jOM_$dxJ@h0@ztyALE-N0aP) zkMy%fhNyFaZDeVhBfzPiBy@9DS_Y z3ITZj;rm~j&(jV9K*jNF5NdgFgNmBl{;t0|*otZn#2!GcPJq4jX8_&+gPDqBB!Qq& P00000NkvXXu0mjfn25q* delta 419 zcmV;U0bKsS1HA)~B!7fSL_t(|oMqFoPTW8c#_|6yTex&b2X4})J|U6Y0(#y6%2d&n zq2k07@CYvR2y_G}pu7jT;shy9ibSjsgcE!_6kgloO<~LWY4q*v&KdxWh*SVz)mweK z6tejAkf#+z3Z&pu77?jcg;7h}G{`1>wUDKdr%MP(`t8JYanke5~1*HEzB zT+h2{S@2ArHoD@Bs($qY82pc7Iodw=%oJF-knai{oAQm*B2LGWA;ptSs=guzF2k(u zp}?H1UT7jXJbznP=0Szd0ZKx52aJTN1XG!K*{ucmCv1DwDeIl=Lm5LI!0sx97-8ca z&zJF{xx5{!nYnhjwj1l`u8$b*Sw|6(T@ktZbz7@tVU;ZyLG}0B7!DSDZj`Z{d~CW3 z0eHSsKXUu|rH24eb2uM`7X0+1iiVrvuD^QNh$-VC(;S#1VCV4|fOmtLieoXaG(rFX N002ovPDHLkV1g0P%Jl#M diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_29.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_29.png index a3f0884d73867e355dcd802a14a5086b8ab61b77..de18082e5df5e243968117ef64f4840510963bf1 100644 GIT binary patch delta 434 zcmV;j0Zsn$1MdTnBoDSpL_t(|oL!PVYZOr!g^@ESe^Oa)X{8a1L}D>(f|-rG_gL(F z+}vV5csTDl=e;ukU?f!lV1s+`>SB;KR|m3Kk;i}-6fu^hI#8G(+QvpU>a_xC46+#H zF(@MEM3Urt#b#{!?9WYLp4{3j!$s_thDV`?9kG!&3jw65#=Ea1wTjxnVj7yJ;%Vr~ zUB9Tde}j=S6BWQJ+JW=O$08+~1Zb+wE&d-m1`)?av$d4aXe;r74A#GhPbx?J?!2Z|1mIHY4=%hqxFqw7-gpv}bhdua60kfj-F*^7zp>rR`GURtVqR}LS c7&q<2e;j$Gslj>6i2wiq07*qoM6N<$f&;$N8~^|S delta 437 zcmV;m0ZRVw1M&lqBoDbsL_t(|oL!PVYZOrwhLJNTf3~vR(n=#1iNs>o1T!0V=C#=Q zxOsz6NuT{$2j4j9Su+X9CpN3+B5_Z#~SaylGG|n1IwA8G!{?S zrgOJme-^u5NS=rSU{%_ItEbW4no~FST@8y=OnRqwk+^!_Q#iO;<{Jm82L_AEbYsGj zyAO#scni#Gds6oxDp^vi2X3^->((b&mXp!qo&WsqOh46yzb4tM6`P>=RTvDa^`?3W;BvmSR zOV1eM-=S;4%JNlP1-Js6pWo}i=>{-qm&$^o9A?Ko_(%rxtoJcG`Yxf1+AqtH-))FS f8VzR*!>)f;_W%mxHduf+0#baR2|H8s05}*Y zcqQ;V7SQ|e0oDU^3Tuq{c5c`{2r!BPNwa0NuZpTc`G+=lEI{oe1`b<>OvKh0Gs!b= zEn<%2k*%)Yrf37x5C3BQ6k@=yEWDi(TuA^gfn)I0<$qiY3%a0g*-~ROW_&!?Pv?&{ z)vKE2ou>CWBOV8~UoF5Cc|G)Ix%cMq?92XjLdx=owl`kwGxZ?bQv&<5$(lEN=c*}T z^j#qQ<=T`T|G5PatS2Pyg1z)(3gFirjFvb~=UY0G`ii7#X(*f3zDs}_GXN#1U$rDv z%B5j%Ab-p4sSLpR00pSmJt;|zp)}~`vMz0J1^CJUWY~5Rwqcsbb}$17lJqJI%q09#>G2YZ5-U>ympsG5u__3z&7l=JhEY~LvcM(XRr z{NjrVHj5ccjWf>Nc&^+E9#jDAthH|abpq)2@-fAxx|&zkxFE?UVPT-nTGuR6z~X0q eLC6}A1MUNAwl4*68VNf90000^{^hopo@pCcZ@KqZFg2_ zXI|fV=htD^l*DV#@x$+Tc^)1Bjx0o-P9;f_K6Y?d%WF{oAU?u!^s{+A1`i1A+b_@czIb1Aja3-c%-9>*=96q0 z{*DE*^1vZn?IzAE1#((?*?lxy*@ER{!Nv+dE>VzTRz^?mS_W%mxp0NOX15$jS2|H8s05}{c zcqQ;F7SMa|0@efbDb^Tsb#B-`3^0lTNwa0Nzly3s`J1+OEI{o;1`b<>OvKh0Gs%;0 zEn+^wBU{^go1zU&|9cnfrw{{vWno`R@NEKk2^@oU7k_dsEa;57WlN2%nDOykKYn?v zsb1AA?=-!y81Xo`^Kt>E$m^ju%e^;;r(X1L5K@-kx4rRdzo`e=o)S2aP1d~GJC{uf zqwfIWPgkbw_{|nT@H8QD7wq{TQUJg1V6?<>GT+vb)K?@`OGDYLb}a#F%m9?2e$|px zDVK)5fqyK2O=SSiU;O~o>z5)WM$M1=v6WE2<`=O8vXHJLUX*B-?k2fsy)# zFhBQvg3V&aQsay>w>FjA!Gj8b*J`al|2PhGdouZAQ(es~Yn+i}ldv$*<|)@KQo!P8 fenH3+AP4*dYPK&0)Gkl-00000NkvXXu0mjf8i`Id diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_30.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_30.png index a713249b50a055842ea41aa601cead9a34f40419..95def778cdb1945f23c098b8059129e5968ede66 100644 GIT binary patch delta 425 zcmV;a0apIP1H%K5B!7xYL_t(|oOP1DZWBQiM$e2_Fo;Om0*Nl(28l973X39MB#`Km zH%LnrxeVQkC*Tn*o+9a-29Rj{0G3z@3Rlhw=VyWS+!Ws3`9YcT%(-{Ido=(s5Rno9 zGynly|3Hod=Q_m>8rn$UIFy7=J@*XZSJDQ4Dkx0}YI# zmTETingWl;KSe~E9vEpnpy4TlB53*y8%904YlcC|e+xRUR22p@@;k^i{?QzYh;_zd zb6Er>qt(V0Bq*xpF87W6SGMq9N%+RZ2Zm2F^Fd1aj}Msx8LVVfb*t9oaBe5HGYTkg z==Y@+NZ}8s0e`00o;m(S56A z%T+&KxA6B#2)Z{wLkYk1l6CHA$T)?)%Iz@le3H75PE@Z_!C*zdqSufC3g Twzzyy00000NkvXXu0mjfB_zOS delta 424 zcmV;Z0ayOR1HuE4B!7uXL_t(|oOP4EPTW8gg}<4#l0iYjMWl4Bn@E%t6sr`hBPCKg z@&>e2(UwVP@dP}=Do+6&G)bg1Jitn^loVSnRu+N*?_3J6JwFjsemeKexkobqFc6Uv z05kvz{b_-TK^lY1!4~91M?|FZ6pF}0#~_J;i9s5J%#-OSV}D5P6n+eJ6ayW_Km()5 zQk@SyQ{dV7w}?p710#(GG`wI?1g0;sVbp`$W*Ch8SJ1~wRbenAe}i1(U(LRVSf`k+ zE{b4ev{<=;1Vz={=Ds5Tlg<2F5`Hl8f#F2XeUMT<@FjB~gN2N$u4+vVr*=|1MFHgv zeP3FE6#jA=V1J73$#Xjvt12b3Rv6%3c-4j1DKOtQucsZzfMJ=~l(qt$1E}L!_pFkZ ztA4$%@S`LIK|$@$xeOJh`4EEYZYKoqF5j$u)?nlFS+5X)<+myvL4E3h1*myncnZlg ze&(J+rj2}c9#?sjuI$^c5c#+DeR)-;a#;2wdl;79av`<8Cf#(PM$KWj+y4=-zK()t S>32E+0000@Tv*VJpv8H|?UXk5b{o*b&Moc_ z*l8zL7Q#+vd!2SR{s22|#B^Ti4-hsB!U_uJR5ZAgd=_42CWBMHdER&4?_&Z0GZCo( zKm$HY$xx9^2VW#)sgS2akqRai{#!%pK&bemCVv@FCpFN(%_LG)D-n^# z6BkxyOzg|%>4=yz`#B=+%2_uemhJb`WES2M?LaNITP-4OAo9Vsw>ZXgUBXnd}wg!-^B*{>bO$T2jWT}v+LXiq(D*U$$v4Kz|mVZ%$Iw=DU+)N@>y%G^| z194$hj){HQJR1>HX1_+nUHRUQh-LHRBbf<$u*(APV5##N04FQ3BW0@}N53D_sG~&L-jkn-|Z8!U72 z-`27}SmbOK9`@Y=v^d_hF_9s+hm3Z<__^Eq?tM>m9639D8+Gfhf2REl=3LmJ?!c9Z qXtIJLj|3*x^C6 zpeRxznmApMC~|~7#+Fm2+Z-TLjD!GDzyw9gWaF8i0><_jTz-E4^LsNk0L(nvBQ(`$O}3<0tZc3$HV{mK%f@uel8+yRFwVa)I%BP-;blO9?!Ba*P9e* zT=UbW3VUf*siNQl7sF^?Ni~jcRDCbECL%Ag_HHhINbW@z5A|#ST7%TzX@kcU1ecf= z00tjGiPc^5|9^D_-1WS)fA5txz}0^FCIk_GD$=#bH+`%RYPu?u`oJU{JY3PMVgyvI ztD)u-uuK(V>)AyLoN>PnRO(TkFOO2i3ERzK06jE({pg~ivkoTL0r*K((C{IYYZpJ} zH*48D4GNxCwB76I;ijhE_%kzrmS+~(1sg^Hz9i)uSR_`@Blrfu+eFbKW@d+{{u_?( Vlp^m$$glta002ovPDHLkV1f!H!WRGl delta 428 zcmV;d0aO0P1I7c8B!7)bL_t(|oNbe_P8=~5MUTBp7^)qbDBVsOib!dZkk&=IG<-rn zA&QVdG?-(Oc0bnK~H2`P; zO2T;pRSpc)Ck>oN>SRRqRonEe~SF5!=m&0D5Tn_Q{Qk&N`S}1>h%DLBq$;T)X%& zzh2AkNl@^tqV3*{9&T#tdw*&M(6VWf9k8JU;A_-e10~Dq#RzTyco!*J#LVpQ)gJ+l W@022&kCZw90000-WVZTl5#8Jt&#$X6ak#X@ugTio{Y<*bKkpfBm=-uQVIYT zfEf2(gCqoL01N@JUd#eSq0tFJF9dN2ycz%)NmAArmLL*^;D35+?0{JY#_ce2e;sU{ zs5_FByB0&epEbZ@UeWcBA<}qo@QnkFj{B1Sw~2t!X6E-gHA`OD$sw7+b=t1$9*{K@}ZzN_&ZueZ3x!|M*)|6CxLv0U^A#)&t@>}c~ z9ax*^`+fU#7uC0*0|sAGcU&9u>|Vc_ zs91DXGwnm!%KNCuhIvS5YA?%db~^ zVE#_U#DS$Wzfjq)ye$jT-Dh`80mN)#2iPz*+3Ke2aY9+03}?g1?`Fp7C}uHrZ^|V$ zVSQfzs}{02B~2OwhUBgEj{~1_po?!n_Q-*Mp>e)d2%l&@00000NkvXXu0mjfmoLA#x@7;b02kB-v3VdHTBeSTDz zSg_-!^&aWG@p6#{!E)s&YXtBh|HJIeHHFs_GbA^Aq0(G(S^;Yc%0^S$gJZ}Xh@klD zpHv4n<^&g@?SH|o^n<5JpmlNAymA4KfNA^uc?FEtUDo#7?&&^qnd*SS=jt*oZOpTK z{kp3*()(ShapBg7$3JU91n}^1w{MgbExj4~C9O7h-2JPNl&FSLJCuizmP89%sXZ<7H-_&5i;_zK7#xyb$kp>e)dq%dGN00000NkvXXu0mjf D0LZqra0h992Fm`E`fgOnp0C!{T$mmXVikui^ha`R(lAOP@`8n^;=c97~U?iyk00TgZU3-wl zAdf&&M8FV%VGK^a922$f!Gvf@l1isY{7nbttKW=mhMMI@pSbjZT8$hq z06RGDW9T{kgMZ6301qACEYVV;yJ!rP@32NV5@}wy|36&{Y{5f z@sY>kY4yx1s`LDT^%wUqbuuUC#sSK7PBC$y(<0{{R3 M07*qoM6N<$f)W(WKmY&$ delta 416 zcmV;R0bl;S1G)o{B!7WPL_t(|oL!SWj?+LGh96IiHb|`E0wJnhuiz9kvBV`11r|(#UPJBQh!C@Jg$AA9A`A}jGv+6 z4Nn7*EZKyhsM`4Y!O2K9?H7`2rzrZ5zT)wqyUtf+s#o3v7-puL-}{!eF7(N>Bt};c z8vsV_ez84BYEIy+?bUg}JZIq7{>HWB^vwTNZXg!zYOmi+ZHC(QP9M1RfI3YaFaQT= zY$yZcKe$W-aDUtL%@VC8x|>yyA@X(UTSzChon37u?e^0jy{}+Y=}aHiTnqq->ka*ON@&E0000< KMNUMnLSTZ8D8>H( diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_35.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_35.png index 73fce28e1ec554f1a039c78e5a400ae952a7d700..8558d74f72107e62bc7b352d735ce74bed459d6f 100644 GIT binary patch delta 417 zcmV;S0bc&Y1H%K5EPv6xP8C5I#_|8mEVw5D&&I?+W7rT1%R^lJunqaBAp0+ntsLC6{AwK(q1$5fMFo|)&}9RS!65f)1WP&2Fr*Z>MZ z`F{65p~;REIg~j}a(0DkxP-1ndXHT@jdUW>Hj`E8tFg8m-2 zu(Gc90<3`f;>S&#VD;{o9iRiui}#`BQbgu*xjVEhHmh}Vhv)BAI)ifH`<*B^n+QeyBg00000 LNkvXXu0mjf_an*l delta 417 zcmV;S0bc&Y1H%K5EPs=~P8C5EhrgLwWN!lA4T*t2?6XlSyMA_rv-CONPGO$3_EFl3;}L79Up2XzLP+YD^wC4ZmJQebvQTM1CL{?o*u zXqng;jKsf5N;KSki9zLgpBRODfY5nO?U_YJLFtZ`cGGWh=}oQYV+>5?_7bDuUWgh{ zlw92>qnuFINNB6Jbj}=vAl-EC4(H?888ajTaQ!T45S%F+##_L~3-dL~m0#ixzdadC zI~W+dK6=;BPk#ecN{-?~-Ag`%+snB)_xkUH%mVP+mvi3(4XEk&IQCqm9nY^~g9-XL zPGMz3y$xUm%nv_qVuRJ2e|7*JU^e$d%BhIV<#c;US!`D8@ z041R>A(k+fpar-?P(VjQSHh8mRDu=|A|R4*AR&>E3JA0Sg@1s48Tk;;O6@^%7A79t zjX8B8Fq*=JPHlN~p^JYt6>kg!7sdpX0$;>o(uuWZ(Sr-I2sOo64dx{5W)v-1@ZKspEu zx1dlx_1EJ(a(F=bWD00{}y7tp)%EKtl6vAr}xJ zKuPFJh$W0AXaVjJ6wr~-m2e~>m7oQL2#6#cNJu240s<{SA%CD>Mn1%|(qBJ03lk6S z#+E}b=P4q9bPyJ9 zNgYn3YZt-_eP!>J5Fekki3DKekA>al2Dac_s-gm5+q91m_9BKtx28LVFScvR`c##*^SZ zgUty6^2k+fWT47I{38pKBmJarJhJJoZGRwtLc1p1+Y%uLqC$bREvzB~7%Pywn8-?I z-xHNoRx()3Ovg6EwL5&4^VL869smFU07*qoM6N<$f}bapg#Z8m delta 333 zcmV-T0kZy!1BwHXBpFdjL_t(|oMn@-O2beThQHio=nybNN1+*!Jtlv)=NvO#zWd+* z{O52200$yc0zd#DWA|-9;X&y@j033$nFoajr32cN;5-2sh=_<%Xip+QcBhTPcoMv4 zusI<>5xJ_Z3{+W&e`IcQq@VPSM>g4x?GF@BXxD^$TO!0jq=%e#rB!4ABLz(F0J4GohDi|HN&cyS98{of$f z8U&C>J26iC@9W$|Z---DrQ!L_cm$3*1K`;2Y1(rju5$|{H;S57?Viv$MPvV{8rnvK z+2*j1p3ERIrWtyL0##23-P|3YsR7A#5?x+dMfkcaH3;47tuZN$hQ&#xJi6%N{6m#l fBO=v>v|I2C?cIX&aL_s|00000NkvXXu0mjf$2OMo diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_39.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_39.png index df3acd8c9f7920c6c03bf1a02fa02a5f7a7097e9..2326527f328d6636ca32d525e08548f39f121a01 100644 GIT binary patch delta 445 zcmV;u0Yd)R1J?tPB!8YsL_t(|oL!PVZqz^+h9CbVa)EX&L9qprEpdUAG-!R493d47 zR94P`ltoIxF(w5qxd1|zLV-kqQHu43v0n0T_xlBaNaHaO6P|Jn@-@iT zfCczllFs)?lD3Z;LSSX3*+sySq@oTqzQZL|09v?ML@}_VoPS@^An8f1w-9hnw$3#5 zU;q;0z+wREAc~FN5)=6-M{OU5z3Kp{P$A=7I!+}uWf1mDMN95n{>VrVYJ)uX(2-4G z5-&-89^)r=;29t%a^U4Krtd}HvmBKDG&aS7>;gy^Jyk_GhBN*hh(l4nl@N+@4VXZq zHxLCD-4UQ!%zyR(!JxR(0j@ph&2u%?46xU4HB$Rk&f*21LGS8mGJ9i_GfVT+`n~&@ zLKzRvCE4tNJaZO&I01UK+K=qUfm2xlL6d*Aa8G*gK+}Qhpjrc%ipGmtR4;aHY)9*g zBPsg+cGxZ~RMUBoLR@0w*%=`E5%tsWLTqk(J<3Pf(Kd?LLF#uoaSi7)&}A`RX7F@p nh)e*6Hv=?i4okbS6<5H28EUaA-MsJ800000NkvXXu0mjfOS;Qf delta 446 zcmV;v0YU!P1K0zQB!8btL_t(|oL!Q=Zqz^&g+Ko!a)EX&L9qprE%5>=Y0&yn@(8I= zptABDNLi#5JjSG;B`<)GrBEPIV3cCLVLXSz_IPX;*7) zTLTv0Z%I0xBT3pm%7wtnN>hk{BS}Ra9clANR`wX;INIoZ0? zbOsJchy#TK>Y$2^-VzhdRgT&|xV`ECs8Au}Lpn|+HDyrtOGQiWL;lD}4{C!x_Rx`y zU`$?;&V3B8*n?+)oXCThZfJi_`hI1U{WJ{4gX{uG7c*5wXu}!*4#Z(nzLkVFSgrvR z39-Y}6o19sipLX86 zk13R~^C8J*2jrPo@ZkjL)oMSo8xKxp1q4I>)xtgLy$4MP3KzxzrlOgXT2wD~Y#2xD zFGo`J{jJ+B6sqZFkV0Hy<0%**`VsZx??P;Ddp&BdvNxj@uY=a_a^f1!C!ot>I85N_ o&JdXZxHk?OG?k^@*orIQKN)JVDtFp+=Kufz07*qoM6N<$g6HPYDgXcg diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_40.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_40.png index 2d4e76805433aec80cb6e074b7b65f13fcb755dc..a0aca8d5d463cc487656d940cffd659748732994 100644 GIT binary patch delta 426 zcmV;b0agCb1J47HFMr!G6h#je)sTw}8Zu;OCm64?1 z`lmr5fJa{A(jx(b9STWN(t}SF0&JCl2vlVPdY~zi9_>l0`+r2y3A!u=ndLgQ9?Tw0 z(&LAuqg;Ah8yKxh(TH8IkPq80FE~LtDq8J=dNm`c^;3!u-KD8ReAPmOZr?^qw#?3_$ zy0<#J9*#6Cpvh^*DS2e32oi)xy2)4%9L)4${Vxlaej@-U_YrvG;{Z1AJcPB^e@Pp# UvFvwAhyVZp07*qoM6N<$g2Z~oBme*a delta 426 zcmV;b0agCb1J47HFMrfP6h+TCX5~dGT%<_1E-2DvMMt$$?pGkb08vsPWlFw;Z%D^P zd;nWgPDh80h-9zgolCK6d+h1nnd|rNylVh3Iv)=i>8X~WT!LZ=m;>YT891sOD0b|@r8Ne@0z2(VQGB2bkH=z*q4dbB60?tc?SC+M;iWR~mHdN6x1 zNsk|rj&kX1ZD6!2MI&~-LOxu-yx;`osA#nd>eY;()=w!ubeEuw{de( zgzl}X*^-+T(Bw4Zlsqz11PQ_;-DIo>4rba||I31<{907*qoM6N<$f;)=5l>h($ diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_41.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_41.png index 74eb8a6160d68cf1bb6e1898994050d25b940732..1d8c4257d11c56abf4177a99db9d42e5848afed8 100644 GIT binary patch delta 415 zcmV;Q0bu^R1Gxi`B!7TOL_t(|oL$npZq+~(h2ei3LrxJ9mmneGyg@2Ng{PpPY==a4ZEW4HD)e;Unx>6vm!yyPMBz&vgTU)AU6suwT7}Y74t9u!V93 zDkxU)YxHgg0eo?<2uoa2qgzD-NjfN+IRy8p4J2@(GB5ysXMdmv+R{w={jao7CegV- zhe_VB%_@I9 z@1W0c(~j@WPJbh@EB*AI05qDq_pJ;ZOG0@c_aB1X@=$^n5fpY-Lat8OZj;q6s(XYnM?MF3|((_q{r&`~~+@a=e*FRd4TbINheh@J|mQbkO zlDPT&jm|?q!-p5wo|fE&kB0WBJ+D}r?(FUYdKhPT4H)nk_y@8MoN|2BUZ?F}jA}%N>d7u@z zK~VB26o}eXv@0Hf8)=cYK_dJ}f_WyS;rE^K6#$57y z_Beyd!!EcCPG`3=cuWaqJB@_`a7K~Xl)zL&m%+%VuMmu4x;!gOUPquew~PQjgOjki z<&Wnr3>jQ?(|fFDFm#u5sR zTNPKIztMXb7V!S*2Tx~GcyH`Zx{I1MbPsPXVSs4?FBt&t1OEU;^QvGvFM4AD0000< KMNUMnLSTaGCcI4m diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_42.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_42.png index fc7749ba950629a0e5cf8f1d5095eec6ef6859cf..42d9a0d02eb5a3d104a19b242fa3b66caadcc2e9 100644 GIT binary patch delta 490 zcmV1d9ZaD}P;+y>1gh6otS2k-QQPyP|;tVG9~cmq=LHyaBv{#S>6a!xSmf z#cu!=uRtmoMMx>hBdirSNKxcS5gsR-Jrp}*?|Pcme!Az({h12@k(y&6rhSI{px6gl z7i?0x;COS`0Xj*Zx553xDenUipe1Bx8!oM#bZ1)< z4w!t`G53-f+c#t$tR9#O5<}{NWg1cL6y$gIfLzMu$xRK%?JBMvuP0|xuI4|wcKp-D zPSWosT62kl>wk-*F;{%tSy+1dQAxFzL{q>CD3&Qeq}gNat0&alhRhDZ0W3U-VwhPf zYzz?dC^FG63xm(Tg=thwZw*eNx{43{h1Ht|r2OQ-d1d9ZaD}QB_zi!h|6vlu4BgGOawpd_5#Daw}BN7oYZvbx)@dOOaaEA`v znm2%nSD+JIRY)D_BRFanqzbuGMV!|4$KZPtC)~|Ho$u(J@0?=*2-H0bA^n%{gKQrp zyI>u&3y#-^J3uGV(>}PnU+~rg0a`+0HsR8$mTqlNQpctWcYksiO65Ipd1?vgeaV8F zq+drx9{lWsdX^FHHn;4Rt@2Iu>$6709(^gvEoR|?OwuMb6h21_FoE2G^@K*r6ROMs z%>k2c9jl)cVuyyrf$E-VATq=bSc-tM=W%*#4@jj{j$F5J-0$M5=H>KEO4WS_S2cfi zv6T!5kyczHpMUk)(S$#|-=?q(^sSLvCkYCm7LYAtfIzc{*cXpzx$%`9LJhERAP8Y* zX|N$c$b-NHKP-$sIt$|*^kH#-PbwQnIx&~Om2ZO0E@kwn+a diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_43.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_43.png index 28f4f08fab61b4e65d5e15a6c0cf0dd1d9330d11..8d1a63ce49af79a954e8c261037ca92c8f6a585f 100644 GIT binary patch delta 433 zcmV;i0Z#tP1Iq)DB!7}gL_t(|oPCo$kJCUDMbA7>q-eKEK_nU^Q&6SZmMU(jXpmq^ zeoOKvsFA3aOixP+Bs!o;jVY0kh!9ATob{!!J^omh>E`Oreea!TyaYhWaaE2S@TGkcZ~|_+B==$(+GeDI6z^~Vke86fCNyET>xnR16k|YD z%Og>Ct9VD1q7~{m-R&VD9oO1-!o4NZ=Z`8=cW;o^mCBZ)dlH=FYU{AuH6A&aD66UB zy1vjM7&S2Olz&z9oc&8oyEjOyN@YvYJqb>7wRPC-8jqYyl+{#m zY5F<@qXuT3vVV-8vmZ?VpL03Q`nT)?=x4QAo!gFF2%h6b(RQ?NyVci}kwtmR2k)MC zLLO>^>_cK&#kU^t+ul*4jcO?g3j_6(Z=S#M;I@f+{qh;Ls`nf18b^(1l9zQB!3-AL_t(|oPCqOYZO5khM$@HR+l8mf*u4E*;4Qa{t0Vgqm9j^ zH7Md=AZQ_3O(QniSewEkWK3hDXmMv_VH*wtB5Yxysa6 zeeb*jE3T$hntw{+K>d%<3dpCQbL+fGv zFmX2!uG1O&&d1_~2ANx{wQ?|ZIlARkvz9^vky#qxoO3R32y?yLHfUq}!uGwH@N~rv zw}xB((9ap5*MDpM`*~|i$2wK*%!K5~P@I1!;jfgDg|D?hJPMNlmz0}KPOzK!QJ@kI z=bJ<3200*%Rqh+D&RReylZ=?8B)Y5d2BpAaN%d9%LU9h@Crp-#6a+@UQlSKA%LD|Z z_x>?}Gqnbxe`PWCHd&`YV4+BTBZIt15g4sp>jAK1hks|#uvg{YRc~eV^sm1M|uVxbLf;=y(0?y9dFv0|Nqj?^KiJL+da8O(5LB7!BdxfN$1nsAEX| zqnQ{(?c59JiUu)8)rvA{TxO#cTv;fI+DRUlO-}172K<|-ENF!IB|r|5F-9G&K6$8~ z{fQyuR5sP0zBET27*P8+KK8QMXSpFB-5JGtHtl}#W4ZKgF>m27Zxy;xc>hc{00000 LNkvXXu0mjfcj*l1 delta 572 zcmV-C0>k~*1l0tPB!3)9L_t(|oPCqOYZO5khM$@HR+meV1w9BTvZde;{1eu~MjM++ zYf!|$K+r;RnnrB2u{MQ8$e6}P(c;d=!ZsWPMA*VYxhpmyF=zH}$6{vhHWq%}zVpoN z%=^6`th$OuY5pmN1NA>bE1*03Y;PPV)Xgn9rYM5|WVLYGB7f2(I)RwgMeBvM77R!{ zTh98*;)w)+mA*0{$&6U1RTIAYLW= z)GzMTgln}X{^k?$LO|NEF*ATUyqsayS=~BSU`voz#D&h%9`q1mf|mDR4=->GTAV12|J@5c*e^Qg4%W3IrDOkdHw(PZ1ceUh4rcw11;BXxJ;e-sH>X{=f)~Y71^# zhE~JX4}G8I*8}s)2)OTSAu%1_efOX??ZAM5-a8etd}w{+-_(Q~7^A_>r{kNo8mbsl zKQvQgsGNJ@Tpkc(RHZ1A;4+(y;L2h_)J*cE2sy3F*k?H;StG}9dfav&bv8OM75+Wq{;N)g6t!NOl}6}nNi{rxup0000< KMNUMnLSTYE%n`K! diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_45.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_45.png index aa8fa6d9ab7c1dd7849115ad6571f75ceee66e82..b858fd89a683689519f0b2e4bc0a743015d7199b 100644 GIT binary patch delta 609 zcmV-n0-pW+1o{M!B!59kL_t(|oL!VXYZOrwhMzNgH;hS<0e1^g$TUJo8U@Rkj79ng zInmbAkKd3C`485n5oAY5tQ8$>Q&=sCAZ)-w*hnUr#91?Quf?6j-P~rlXP)z(PcFXxP7RwiRTyfZBM4%3RO@tZEs8xlD@pGetBJrQLr#KZs=|2LzyV zywsT>PU*?n9qs3}EQ1 z)nJ?$W-c3Zv45QE;(|DU;|MTSdu`aAAZk5(HfC_NGI#DpLjXx@-Kf3BCeRe#-KMgW7dsm{FI>8pWzMdZ7D zEju4(27X2jaYOAl6)WV4-_&k$-o{9pzRUfzx_UN^0XKKYyWGqUI~cGQ2X|}JIe^~I vbgxIfviZXL2SVwpnwpP$TiXC+oGSkSX~EsY|F{M+00000NkvXXu0mjf7&R5G delta 611 zcmV-p0-XK&1pEY$B!5FmL_t(|oL!W^YZO5g$3JgxF04tB1@8(`$TmVq8U@RktVQ|= zdC}I=AAdu#jUcx|Vy)<5o5Jcq1mOY}LL%8<68FsRjK%Dky-YLAoA3L+AKy0v zbIzq)u7E2mAcmx2Fq8K^Ye*m-pWE3L#BD`za4?2w%@NTsNPojavWX~3UlgQO!YHhR ztX;{YtzgVJyI`uAnc%R0-)t+$Yz~$245b;P0a(={1oJ;B-p}OGM3na6@%%8Bl|CQ< zos*@`1md)M5)NaN0Hi4pj&@BRH4ue+6cnMk?08tbmC|@b0#LAl4H_;b8M_aClCc+H zpjLw>;xKbr!+*tcri%;W08S#nl{?gXOJ^Jfi%qm{V}PZ|P9TIojRIYuEMPS)Ko zLv=m(HM=xbtl`fOfGCGPnG@WX%DEDN9Ts{ExKH-L*}BB8wgZs+z&0@COkd-++;WYG zXsa4HPJELos1&hsJR2ZU4xJ-eCxGu3(i}L&sTv5&x__XudzcZxu&ApuFLwrN;9eg2 zE?>(o4l@Hk$9msT`%T3P{lrgdH@RqIBu(G-y;@y8pT>ZjyW?GMW=9_aNmjN51JqGvklFwP zOx4OQK3rciUXiL50HTAt^Wa{&>i3ofeH!9sAc5~8r+zQuA2{{UMH z&0wS02-X%h!m`gIWhymbA=m_QLEL8T7SK)iKqH zSURVG1kxHXCq7GOYDgg|!9`n~R5YC$vYMd{9;Ix>fuU6?Vt>0dWz7XprdzilC}<$I z^b=}8DhqK-(bWPb0?6}9QHvqN9L)O)6wQGIkJj;3FiE9YaVkV95N;gX?$Fl9{&h^9 z$xh_BoOwlBCY`1A9BPY2;uQ%%yyXsKP*v4Akgg6k`1{g5T?)0l1 z;`sNmaHci`Xn#KSAS$3uZ2(bPJ1GM6BPbT4D)R&Zxhpd9wk)ku4tO7~sjxa{z^7xwT|Cco-khxGGqk5;94apOZTxCTY?{KB5^ cvIYJFZ4=|K;ws|~iU0rr07*qoM6N<$f?Lx1)&Kwi delta 538 zcmV+#0_FX?1iJ)~EPs=~YZO5g$3Jf~>n%yMh3N#>bmkfx!9wt`5~6V6&0%?ke}Jup zX0cIh1ZxW$;kdC#nMw^<2sS}H5U)AAgY(B(h?k4mXEC$c&5as3 z`c)2b{QFoqQ-4nZ&8J?7%4r;~8TkFokH-Rh6=i?FhX8RKK$O-_iU9oxiiN1kJV8Ki z3#b@W4CFc59cR!p)h696g)Ku7y}J&;@L?1dwf*T{3z)u^AY7dQ@TWV@Ky=<1ZJ2Kv z#O?2A!GOHk0N}_Lk8%v~m8; z$n)qGAUaD`Jl)bcm1M>{+kxeh^_JX!Tz7oAGWk_!9n#OcJzACH#f=ZWP&GJ`=NI-o c%NF<#Z4=|K;y@S1w*UYD07*qoM6N<$g6|goCIA2c diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_47.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_47.png index b8262652e56dd59bc7e3d56d8dd9a13cc81f3e6d..98f147ce92192e2a5c1ffff4b446317e8903920f 100644 GIT binary patch delta 626 zcmV-&0*(EO1&alcB!5y#L_t(|oOO~vPZUuU#eeVZT^JXXA+TsU(Z=jHG*l)sg)}xc zyo6Y7V_|Ik1Z4aMmX=h8%)?JWGj=96+bpfym_UZeszAo<>|Bdk{;Y|&Jo&wIU(UH; zR10p#^3PZ-$bX4WiebJ$r?S~5zfE(;Q3=6~u;5VvFjJxJKz|5th_0XAhy#QOND=_! znI%k3#6S!{;~ygJIl!R6=NQa(-o7Rxz_`m6AXlG4eJL{@W@D{Y1eit%{0yO4zG%)6 z6Wy^zfCxYk4YAdMDdmb-A5w9|u0`rN`e3V^0|QH{swH6Qq-iIW>o}C$pXR>yuz=AE zck~*Gu85_xv4778w|cpsOk8i^B!)WWlf?LO?om}$1xQHuZF(!9%y@LVg(QJq=IC~A z5qo$Jw@}SgH3K3#Y1%<`bF&sg+OF+{Nj9vXJQ!WLjYv?IqG1FaGxn#e0yO#%jwqNo z5K6HXjG#p8_Vqj<1S-^lP|OFT5TH>}6IGum046X<5PvX990O?c$-sl2ji1)XZ9Ds| zG!@HiiP?Q4j+mAvJg!uhifVLY(V6>FUqap7Sw!$n1!E#>L`TfcuSX>5aIFPGIY+$n1^C!JT?L_-Lo-A@jL zXO=KE5d$#*jem%==KzBOpJOoF`RX+h0mfan0J-`U>Pwl~VK&xUMSy9Pz|Rnx<%{MF zG0`1c1c(3x(GXi5m{P8Y^&u5U>{_I@qYt*qIWW*xRV@KaCrvx4T-%}K{xtV;?Y+?p zck~*Gu88*8*nj7PTe;j%CayPd5?{G|k{CbEJ*ujz014^7O>Y^L8IMk{kR;H{9No?> zVh_*Z7OI)5Wq;BPh{2eLW8dfeLjX6!XC-1ZY&$MAat>fC&r|1b<8t#{k-VGVq{h`~-mwV8B!jg3 zCPsh;fNIH}M+{tDsUD#5*TZ(#PdnCMk4VztS__17j(Fz_@UeNi0zxr|W&kfa>VWX; z9%Bf>bFd9U(0}-2EdU0)pBxCskIw=KApg+tAoQc-Kcf)HGwa|l-3;WJI}s1U00000 LNkvXXu0mjf@=h2V diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_48.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_48.png index 14e24f0cea765ca03969bcdc1f932ecd0b752577..0ba0ccf906a98b4ff5fce63f213038b8d0b55c71 100644 GIT binary patch delta 478 zcmV<40U`d#1jq!CIuW&)D41e8V+@kg&an_I1$XR`OFnC0Gb1sHZt)o0f6qhQH*p)fJR_LlJ&E>kON8n zWH+a)s;Ykgy(I4>xoHA>zItu--7Dl=01)WhnV7ddOxc%nbn;nrb<4Hap7ko@J#U(P zk{o8+c|~MUcu@5wL(hjMuk|$p<9$eB*#qxyigK_V@hxQyS2aEoz=mSOgNlJc>YTk8 zlKU|nEt=|%1Bz{_O8VDzC2(j1EM!zQ0dkSa@SWLeMrqxxN_oem;{RdZ1UvD z0v1B&3J-|>nZ;paFto7d0MWy)gatdaZ7P)TMng9R*07*qoM6N<$f`G){wg3PC delta 478 zcmV<40U`d#1jq!CIuTe*6ihLlF$PI#=U51qf_v?eOFnuUza`;fu12j1Tl5{eBEDh39bbIHY! z-jCsE(NuRFP;5(8(!UM_4(~Zvg%>{OF^qjPmw12k5iqr*7!XzY`Y_)#NKd6AF7#a) z=^!hG;UWNqpL{BX{e%ekVQ~%vd?{m8PvH?&;l>UEY%$0XRhdrDAoJ7L?<)Wt)_ZF9 zS8xt~Hyd<2)Wa=>X+4QOUq1c#@_?Njh~9ufrCTq^U0-?hAu~(i%89>W5-9$&$&;f5 zNN_@~@PO!_SsXS7!vxkGAbQx9u#gOswwGx9^d)iY@$1FoC923uLVjKkiK)B&3k*uS U>O;Xl*8l(j07*qoM6N<$f{_m11^@s6 diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_49.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_49.png index 20239a20787fdf15f62bbff704cd1d8534b690d9..3b89c00a57bfa51924653a9cfa61fd55cc68dd22 100644 GIT binary patch delta 139 zcmV;60CfME1(*epBmrNsCG`P*je}cL0_MzU*#|*IJ3hd?CDXN|18B}Sy;0C02|)Kv z=QwPHWq`?t*C(c3?eU^dH#|r!2oChgeVCZD?*@bl$bj5hV?ih)T(T;Zo7Moz<>%M7 t_oWn|ejXPK#cJ~@)WX=ms0wL1ga0{E>lW?%n2G=Z002ovPDHLkV1i|NKzslI delta 140 zcmV;70CWGC1(^kqBmrQtCG`P+?H1me5-?{*%RUGy+VKJAEt#$z9YAxw>5YO0NdUTU zI>%unECWnFygo7QYL6Fvy5T`;L2#f??!&~KeK#OfKnCR28Vf=Z;gVIM+_VNzEyEw-|psNaKC;XDc3jxRUL zlBVVO$DLRPgE7oCUGt$|5`Qey`ks{utlJqNH13l|+)DZ7T7Me|bq+u(_<9XMlUo4_ zfAISTQl%uEuR2YDX<^+Ph)QD~7m;m6h0|iNpG6NBfqs8RH0g2=K?JEZn&<@0+*_vN8p4|IC XbQY|~c@?sG00000NkvXXu0mjfRIb_C delta 483 zcmV<90UZ9u1jq!CBoGftL_t(|oNbdaixWW@hM$o%B3y`+l0oqY2)8LLv=ov?i`WTK z*nrVUk{OHH?Cu>-w=d84&3wxO$#8)E*%YY!)KAPDu2Xq(8{!PT?wL+5O}~xuwzaI9TiGMt~v}0 zLbyE9tRx_Vc4HVB7oFI)YyD7FgOTB_261KqFjQ#357h|*H`Zb+%Zd6uSQXBbFzxtq zqbzA!j(^;VWiS}ST+=ll`X%wlGOh1fnZUZ81?%pUM%+sI22!OYoUb}ffN5df8;D9{9v6{qMTOJiU_Xl5H%d#E_|1Il5U9iF?tGK&Y3WMq z;7WNX2*q0z!O1}ogc?^xbm@N5txu~OJjON9P6Y{2RKS5iB+!+J`S(|Wj_ef>^;HEVve%}djRs6^I;74` zw_Fg6#DHK@RGi2eAoi>UJGMclDZ$=bk@jnr-h`8fO1Aw@R zY<)Jikv`D$@UY53n0f?MePCEM!i7*t;MYTd5#4F8mbCb1S<XWW?VVE% zkI#JPy*CVS%9wzBS^X_S)j)y+E&!v7iZ2I?|OSQFTk|6Ky@RFD8g1sn)O0$quie}5H-WiNoJuPPvsy)*@FG+^?fL+adg z%LTzm1PCTY#pyT$#GbWaM>fdRCD{9~W$plcKk8ny1_ZE=US%E~0FTHh{wJap5qKc8 zK8e`mo|_Xc$A7eWPy^X3Z1}j?xUX`;;V$8!K^ns>_hgA;3bVfkc2ZmK6TnLo}emw*j(Q$jVtR)~53zrFXa6Pe*Kpv3z{8Z6Pe?!*TJD#rjq`H4QL@QC;fuxFAIy(WJCiBValZbX z8Ig;#xl>A?XM_pE+$n{3mu;hxHPt)PJ>0Gc6|ZGPt8-y*qvEgB*Rw2vx9v6?Z2HA4 r%k#M#Pd&Ws(@Bgs6+H6OMu2|++u_@lpwr9%015yANkvXXu0mjf3hys8 diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_52.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_52.png index e64fded4c263a190880aa87908ac454e938da1e1..261c424e2a21cd27811348a0939885d3a8c12012 100644 GIT binary patch delta 524 zcmV+n0`vXJ1j+=EBoh%yL_t(|oNbdmYg9oLhM&26R*^R-f9y@OB1CWzgg{VY;j*&3 z_gLJojW{qW*6=2d5od7VC#(Y-+3P)!S9A@-LaL|3*##o438aaye}Mo-Sw#Sl)C59W5y~`fi5LQN0R-O=#UNuT z!hoHGMi5ZAQw%bP0W1UsW?fogmpNjc{kc>nb9sLgXF83?X_h(T zbmQaeZYMu>K&2w@06@b0fvt-XG74grCAc5rnL`U~PAcYu!ZDoKg5WRrU7lcS*oC|nL z?rMPPVo6tlfdhlN016PKy<7o$ZHWs2=YoTBE5NuVmIA<38uJ|mC>%>O;4q`>E21v? zT@r1N)c|0Xf8Z;l6jD7M&My&ZO(0Ety-Nfz%qjwaq$Uv3icltTOT-YE2_X1}DEb)- z5eDouG=hM_-J+j43}7xOFzwI^D@QP1!MOs!BDx-4?=Lj%DhH;u;NU#)*#)GThaXDs zSw-{@%G9T;0THmd&$Dd4bDjI8vFYImh+cRAiJ>3?f42Hf9+No6vlAMjJnO^~xJV#v z6N6D2Ef95roVG;nA)%v;S3o@QWpf!;0~aTr2rT=R5z|%u{#ex+=8kvQ{=|y8vWL0N z!GmfDD`T4}QVwD5bPKE{iiiYUAon$KmJm5*sDLwOGDB=>eu>LTIcSoOYa5Kg1woUA% zWt}~zsw%+Io#hjJHi#4u?0NF_ZPxr4f&AX1El6RzB5?1oJW1+V{tM{Xu|AH7RQ3P> N002ovPDHLkV1m}%@Dcz3 diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_53.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_53.png index 01475f2180e554bb72ec3339481f3e0ed7b41f6d..fd893efb91b8966b38c0a543e04538bc45dffb57 100644 GIT binary patch delta 377 zcmV-<0fzpS1C#@hB!62;L_t(|oPCn9O2beThQE80Vuflm*ulvRK7o^4@(3;kUq;A- zI5;Q>;_g^Q=xfAD!KFpewpM?KG|9;oJxjuu|D1dN{|3NG-_+%SU2p}aGD)QclC&@_ z4j?wb*R!xM&VWi?w4e__9<-3QAh9dp>u*U52o+WJTaepRTYp8|1#3G-l2%Pb8%5*3 z26JXzaM{@PIAD2anw%s_&*2_}zgPD_VlpJsf| z=LUS2pHg9fvZ*w&V3KLr0n*#N?5;l8p#hZ%mxSgB!Al5!1z{Ym}r8h3xQ#{Lbbo1H*2aLw=6M#sPRKT7)G3IjE(<#6Y XS0jeM6eK5g00000NkvXXu0mjf<5acn delta 378 zcmV-=0fqjQ1C;}iB!65wP*|~rPhe%oK7tL2FJrO~ zVqu{PiLtjtW5R1-1&IyBL;;awv43~hDAVlbn|sgPb7laXv?E_0I0lzs)V!Z diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_54.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_54.png index 07e8a61f0945ae8da9c9043f7331e7074076862f..08f6455706815daa12d6fb112c6c73b262a1d7d2 100644 GIT binary patch delta 403 zcmV;E0c`%R1FZv)B!6^CL_t(|oOP1DPTWusg}-~(VVA^cUC^&1FgF3!32O}kV4*r%v!*&?y?>*RJ1YaL4RSp_KGA1ueOXNJ!=^& z!t^U}Llc9uFs{b|Pd`kOlO*Zy&`0{dbq{1_hm7<{qhJh1s+q>%!6V5OP0qJV6cl4E zetnZp3|Q7L_VI>wNlt x4Zui}nwiS2%ToiUV$kI$@002ovPDHLkV1l+$#o7P> delta 404 zcmV;F0c-xP1Fi#*B!6{DL_t(|oQ0CHZWBQehQD1OaRL|l3irMmh2EWwghcC-M@fTp zh!@}iC|rPqjMAq(Xwv2pt^1%Ew~Ow#D{G((MI zsQvf1(nkXh#XtM~Luqy+$aw=3U@k-!`Cne*VfR=1`(cDT%+uCmtpPK@;i;6LO|NfrfKdaQ*18FdCfhlB-uaKDFwTT`u7H8%*Hv z*vXXCxpA$gVH&nu4u7{s`#jQQB)5pr2#r65#E|8IhhkNsUny zd6hc7PQfe%2R;d?c4`k!vck31qc*NBJ^Mvt73-z_3njIs8>Q6c?tVb%>%l1o^0>z* Xi4%rHdZ2T800000NkvXXu0mjfEOwC9 delta 325 zcmV-L0lNO_0_g&fEq~2T!$1&5->wbG0VInCoDS%K_&@=aKnZjZbIOqhI8cfYoH;-P zK@>m&NLXO|<6y+jZupVdo8P|KnVng~e^#k=45Yz)c_!eRI6^kYa|-MQ;1D1m3^!sE z0ze(WNU8vG0A^`O5x_LLh#&W+X~+Zf#1>q_cM zJ=fOAR@;^C{#-hemUdL0-fe2zWv!V=GT{B3g=FgJ?=I(&G29c)G`$B1iYy&j3G&9Bp_*!U7z6P&wl*UpzlX%pP`3-W}l&l*XyVd>9Ld47^BE4 zBY1$T6iicakUoHFr;fpiD~uxPL7ONoJ^MvtjrGF*g_7Db8l}`_(fa`3*F$6sWZ{et Xi4%rH_yR`700000NkvXXu0mjfSDTup diff --git a/assets/dolphin/external/L1_Sad_song_128x64/frame_56.png b/assets/dolphin/external/L1_Sad_song_128x64/frame_56.png index ab2ca4b9a3647078becdf6d65022b4e0bfbc77e0..301d61d37699ac143f0ac856e83324b261d40340 100644 GIT binary patch delta 238 zcmV!TV ze;Pdyei}WX>$h&?rGce`Nu@P4Nv4MN1g0dnsqut85ObhNOJ|xf*`-F61EbXFR^%}S zB)OAGaVs|pioNav%wJ@DK({rG{5CQW zMvV;kQ6mHP_^leT6tGq>t8Atw$<&aVz?|ehHQstbjKDIDG-p$?ON}Z5lho)oo8%2XIQkRtM%LHwa$rfAA=D#-dGl1f4PI#CJ|W oaE+a@0rqXt*H8Nmht!q>i_@% diff --git a/assets/dolphin/external/L1_Senpai_128x64/frame_19.png b/assets/dolphin/external/L1_Senpai_128x64/frame_19.png index 4166b75c0444a88c4ca8ddf5436a6cb1e1f71770..9e084150a400b33d59b466c0945a9afc47e234e9 100644 GIT binary patch delta 712 zcmV;(0yq7P28{-gBmvZsB{6@n>ALFN_zw{S!Hq7242qjZaZ|90G|wt1R-HhRE}EK~ zRIDI%-q@IVoq2PAE+$lT?b)3VhXaRmjuHP3%l`!KpWOYoV)6!L+h7DTK$evN&fTbZ zH3eXY1(GINl6aIt$3o@;32*nij3RZ%uIj?_pK9xv)TX0T@ugaKEw6uFQ&URKTj}He zliQ{y#`$F|U5Q)vxOOa&oCP035wN}ZubIvoB~l-NqCN5Eu8)sw7}%^n$9Rez`EYuA z4f6(jsY4Na?&#!FWr`STQ4W}sz+fYJZ(?KLw|8#t>_tly_Y5D8Z{pX*XU-f3`_s&0 zcdWPFFvaG40x<6&nse$w9CCriWj*To> zr|zLBbIb@_UoacM$>g$SGqDYd(wq>w(gI~idnvTAc{_g4R2m6#B_=)V}SkntS>R=V8}fb zC1Bs5BH;uuI9K_tWI?JeesxrmoEqhxZ0@NSW&vuHFxaol4sw9i*<>7NW1#E-F3t*5 zw_z3R-2k8ZIy`@CU!H&$0Q7tUJc)v;mz#dKB)wEsW;0-c`sVg^4n;*l=wG{x2Nbk; z&mT~hg31z7ZSk`$C`dtzl1-rE1N0n_0@8AGJ_8EM)sQTVM|TyVoCBl%j~X7ce#ist z1f-@)JxNloTscx(K5T=kDbh9Nhx<@d u858=`S>P1Wy9`3+x8b0(-!KYk3j7T^&`Z^j7#0000ALFN_zw{S!Hq7235uIWaZ|90G|wt1R-HhRE=Z*0uG&b+xl7ZX}^?b)3VKhEZyW5mD9@;`yQ(Yya9Ca*)b4MrdXWLXK|-1Wq( zDF8bxkTl7X#G@2C7BUw|c)LGk6sbFQMHiO;Qd`eUZ8|y?U#xZ4^4fn@HKo+Nl|Jr2 zxov7FG@_Rh_ny=aNzp5f#1P5f4W=FDNRKg~RL z$9mfhQ*6#B03%QA4Xu9*%hzf@wohl>US_X6@WV$oVj$VgegGSu8aSU`#2gv#*vNu) z>K=+R$86Be0QSrH;G?Vnqz*@9?|blr(^P=q`+M0+ZmoD6n79wGEd1e}abV_vVD0+T zBg;+z_d38tntSB@cSQ%bobCdwG1G86z&;3IUo0OAl#&R8&mDi*$@%Z|Gp2PdZn-bW z0e#+VzaAQDG+noKxhpfXCtY}F>;9OmnB}VnqUdDU@aDBbOsBXq2H0QD`Vw;vhTKC@ z0`~nW5>5bvbCusq7NlDJtD}@Mj=gse*iVTc9<$yBjEr5002ovPDHLkV1h8BRzd&( diff --git a/assets/dolphin/external/L1_Senpai_128x64/frame_20.png b/assets/dolphin/external/L1_Senpai_128x64/frame_20.png index 9974b362d71e767c7a7f2c212ab3e1723dc9044d..2caed65c62247315ae8d7bab92592d6e1c49c694 100644 GIT binary patch delta 607 zcmV-l0-*i*1o#AyB!53iL_t(|oVAm`t7BCZg}-xh)hL56rCqLIF@ji$*yVOQU@^tK zK7WFRwFx$sBWORCqYhZw2#G)7SqK@FQBWiqn~V&S4DSs$$-Vb{7Wduve1Cwa+l#f& zUVANekgG59KLI|IgT+~ks5K*Xv74x(?wDwLyB>DH7S&JEQGW-_gX%+{I|mZIr$aq+ zsv1AzK=ybH^|Y7*@j8#-Yzohle*?r<&FMb?LNSOyycS{bJK(gx0%C6p+y%loi$LT( z$X^4T$1M;!5^nS^imt@J^q)kbu3TBa91PpRt00{-(;puSMrC-v?D5LT@T8R6FDE*2TJZ{Y5t zg-G>f+cH1*E&JsjY1_5rgz)|s({rOT0D9lW*>07$5~__(ba`i{YNYN%0fSYS?P9M> zJxi)e8d#;#Y@=0UQss%BEK9YrxnL~z>e_vKFN?kFG|@Yrwo|Sru7#Xt#Wr<1p7_x3 t^`ud;S-P7fM*7h~#Wb@$P>W+z~cj{pWY*GC*9e;JeJg7eOg>xX$dpguJ zr>gOD4rGtVP)~~~5U=qF&Zh7p`L{rP&7A%NAQXcL#48a7zXMMDDH39^HzkhRf9pmZO>Zo$vGHPN0O+D}4*!Id&x5LV^W!!@r?p?$%XZJi5Kp$Y1 z=xu6ihLt)o4*mite(XYwujE&O?}{$U?B(9-)}?Gi{hyl!@m%<&^b5#8x?s6K+0?+W z(Pn9EN!MTfgw%G~^~s6X`78(007|R%CIO>L*QaLp-+#*LKF9o#fp7m=#5VwVaQxl@ z!cXO#Qcp{dZ>A3`tu~^Q(=xsEMM_oI7Vw{+1NAedeNyi(0AbadkP&WP%wmyI`zG!# z{(7YPsx6tH`on2Zp0-`CC9Z^=X2mvjI-dB@ uAM~VAv01vCBu4u2LB%w)T~LqKBmEaz1ff6Dng=of0000sdhkudTpCB05HG zqb0;0J+!i5l0Pq7e;fQf7uUj9vNr}|8s25&Xz;FjNL$~9C zUR&Lck)sUN0KCBy@`TFc?sAJX$CL-WIcY#0es7alCOY4Umi}sOy--&x11#y&5IqKN z{zZU$z!vg48h^x70(B0YVs_#=?~5y4J99N0>-bg`cn+Ac{WyyTU+^W4bzSS(X9ZF5 zb`|OjxPtuMr#N`;FbMD*vU~y@M=VswCe3{yI+HVXs}Je|I9SL`z0iDfbL$ zfekc=aaxW5`U70+a`|aVqHZ>KaH*#!-xX8UP5l*~>9bGfA6>NVF%RT$I=K7tMK=$a z=(oO{&u5p;RD&tR#KqID$Ae__xtfgdApjdc^p|gDx=Vp6uYaAvt1f4)UfociwZ5SQ z;?;j+6$;?64|IhDfT;W*Bj4?gyLHx0{kDDl_HO}Bq9XwQ0hOrPvFdfi`2YX_07*qo IM6N<$f;wm-`2YX_ delta 621 zcmV-z0+RiQ1%?HXB!5jwL_t(|oL!SWj~i7Og`c^z8*e1!SfUA1g8d895(y!@prGU* z#1zz|O*NKiXdw9oq(q{iL@6RXY_n82qDZy~+F5oLM*^)!7}hhgXC8_fqxIhA-g|W3 zbKd)LBH0~bcbkDb<9&A-<@J)cEl_NM!C;qBUU&KB8c>ZGHGj5$Hl8_D|Jw>YA);ke z)>=T^GXAdHCf?bK{)I4ryl#NgXH63VdjLN}9S#^a^1AV<>j{y%67|e8bLek@y6g2lnPNRnIhAr<~?{9~x5N zIo!UJMt^kq4b(c(4Fo#B-Vn7^g%s{Z2H*l<5~q*}>VH$!aTiF^ghoQs+c>uvqNOgC zhaHO~?FXpg=A`1&`*d!Na&)0}oJSM&f)0)5gg90&hy!GJFs9lAI$zaTYgukM=&S#p z4+3kb_v1-10O7zT+Ym}hm&?%rp8&A-fiJ(G>b3;Ny!%}WZ`+!cdU->A)%b=2 zh?iHAodf$_;QUI|qv8r9+pZ4VdD^Ca(_DV@wg5-b0RaC2m8jXVy{Dyi00000NkvXX Hu0mjf*Sjxf diff --git a/assets/dolphin/external/L1_Senpai_128x64/frame_22.png b/assets/dolphin/external/L1_Senpai_128x64/frame_22.png index 8517b6089de435e9cad1f529c96ec5f2adb221a9..21a72199409a69e86d234aff25f7871eb64f5a2c 100644 GIT binary patch delta 521 zcmV+k0`~p31hxc_IDdqxXzedRk!VsN*?&NVsE|@prldh@e?dOM`3$OL5fbSzqM|^` zS|B9_ir0kTb$0y@#V(1HnpYm(J9lQDCX(AP=Klllf~&jWYy$*@>C4ZG3hXT;4`rT6Vw;6lrk%pe9THQ~XVMsL6i3W(kwW1+WN9=;7g}PEr zqm-Cx)dfBQ>S`NW%Be0?J^o0$tDMx+>1vSD(>Q}Y0NTT6^nZcGN;M?GVmr}#LApK)<_k53 zZ;VF(T>JuJ$hAL;QfRjUG+FiL^_Ndoto$=yE^DGmj9ec?ABQm&tL^klgQ67Y&e!wW zVjW9(v3GMZZSqH*myhpVgBa+%N;ef*Kf2iBmZJ5LO^`yd0saD+AJLT8V&6mn0000< LMNUMnLIPldwj=u< delta 521 zcmV+k0`~p31hxc_IDbT_XzedRk!VsN*?&NVsE|@prldjZd_g|J`3$OL5fbSLqM|^` zS|B9_iZ_Jdb$0y@#aj|5HLpCnGk0d5ZX&l|%Kr!61y^^$=?Vw{d&$jUAqCSrC0DIW z6ZLR4{yY$)~mwyX&ok$NFeLn$Ppr_Bhj^KDX`hL|v-G5Ea## zT5Fh0O&P;cFHTdJ`*GVh@koTH#SYEH%1d>ov-cHgr{IV+poFsjnzXGrrGTQ`18uZ+ zV&;LHfL>_bWPgnwh6>Ol^}Dr}Zwt230}Xvow7H)%#gJ*D6Ah4nOGQJbj@bfhD|Mlo zCpjt2VjcJdP_B)@Sx*f^gBB0S@U!Z)}RRS!SXU006dcDfkm^ffJD8-VWU8Gi#Hvr!FMu-eEp9!Qr5!SY;9 z;Tt<+04{#Tc$7LACpmPx0GciOv-sslDmMO^&F7J5mLk`I7~m+SVX={aX;G5n%-M1l zON_RJ7uz?9=~6!Gy?lJ{R!n=Z@>NAKNG{g6rRY3l735H@>wI_aXdV-=mY8YSfGlSiXOalpvCkf12J&;RJaZiL(Loqx_lb~-5U4|d^@>k z!Q+4i&Hl6L0~6zf2PC UA=TR)xc~qF07*qoM6N<$f*mUwE&u=k delta 637 zcmV-@0)qXM1(pSnB!68=L_t(|oVAnBOO!zv$3HX9>RUp+MnZ?ESrRdcupkK9@(qMK zbTHfvf*=nax`iOrq3~Th6m;p(eZ7d{(y5D==rx26U6u}E5cEnCf|f60>?`~FJ{{a& z{sGNpm@m(-na_8WaBykVJhv*aGM(Mj^mLb?UF|NxGWI+&lTOrOPkTr0_$N12A_lgs}rqWYU78 zZ(AG10D*@E^i!O12OzY+NCNbOpl1<)hzE7Q~n%_9XghF^@)AEk`Mtnx?$*$5LV4dbFi2I6j?+>L{fQ_ib(1G zRy{&ZMRt+`S<}GaWm7a{pEYZQn=!zdhG1FT0T|Fg3>-Nfu0zCNqef?kZ$qF<17Cpe zr}iv(bZX!{FyZfb5Tg*0sz@p&MC6l*1{@HsD+8|;qETY9uBt<|3o3)E;nMQ21 z-U%q!SqK&>G57g+fx`1&_^(`{1uR;d)Uah&;i@VW#}5qR7Eq*yGiWPj@GlH?TO?nwX?ri#f@ zD-~RnB-!HeW4BVlDn7F;SB_a)z((O$A2x0yI|pjg7}m(atq;0JV5$Guhc= zDh#Zg00V+1HvJI2XEBO247k@7}RqpEbIHaY-2IfPd*ee}dj;gc*=LZ!m32(t^~| z^B^hf#vXWz1@ds;j2R!8ax9R8m>bhB zkhfXcJLKILz@h2P!y`9#6mSfZ)+KR7VOfe6G7#&PzV}Pff=vgkGtB36&~TB|k|M1a zE=#IMNM=f;Kymeeq~+zTY)DUO0?74ImQ+?*3hR=ZvR*r}A%GqzOIk=GNp(qa8A%F~ zAOmZK)KnqqueQ=m^PTA5O<8~(Pk;t+_MrpdAfUE`=A)%QtVci{7Ah2h00000NkvXX Hu0mjfd<7{z delta 621 zcmV-z0+RiX1&#%fEPsWgcxvEA?yOPb1Y_978||Y{c`5~k9)?5 z-N*7@VC|n^>2L79)ujBRT+VCfICFDQXc0I?;6v*t#p2jns(-#ENlp-n6Zn4EKWN>WMTtr{RP{BHtZ6I@kg0%EyI+ z1!s3)4iRBVpVnl-x!e*d{f0KLHDhfao4Z11Tw?l~V1KIJ8=>tbK?1IQ|EZN)q)G4`$5xP+W*?(}ZZ;-oe+G{YRYfQTl z6edUm$xCC&mqqP5Ew^NgZ<@A!|1sNjGmyj1$-8{!rTGRY(UTs(idMJe{laD{g9HRU zczpgWAdRF(Ri$SB>AHk8mMS%cnz_+i$smFnR|0VcNQG2L8){r}K{Dt-30+*uCKwpx z&;=gcYz;Za4S#I`3|z@eL($j+9azqz0HQj) zpToKsAq5z?y>N%U06!uUY;p&eeeSZ~0=ZuC|%h@i%mK%4u z(0w(HD*tMt;}AOGJVtej1-GlXEgTCcoWY{t>>9Y2&suPODldJKM)KNSR5LIW)R5r% zofr~x9^#-h`O3rCu5Zn*zjRlp5u@kRpejAow(eQHGOKW`a>Jrz29CJI)pmk1mT^A; XYrQ%6HmpjK00000NkvXXu0mjf$$#o^ diff --git a/assets/dolphin/external/L1_Senpai_128x64/frame_30.png b/assets/dolphin/external/L1_Senpai_128x64/frame_30.png index b43b475a00145f8286d0c28555ca0a6e6e6a30bd..00edcb7f2587eaeb0a132cd963c80eb7ac3d982d 100644 GIT binary patch delta 589 zcmV-T0hvGd4?@lwL^X|R#z5Cq> za&yIg&#(8yZl$mL!w2wO)rDxS*_2d^Mi@gOwg5te5wwKet$$m>_W%XZq>V0BlcHH` z)yt_#_bI@e^S;JYSOW}trNxEwsq1N7cQvxha`u}KE}CUmqcCy((Dl)1)ukkx_vUPR zZx_)rN`yijK_tqlH1e?t9>X4UM^?N@mb$9rLgP5hA=+eVA(wlscQ>Ie`jV8=Og#-zs1 zwmLshpLEhE^xn{RU<{mhr6ar=GXlG&gg6^5Uoix`(tja7bA5LfyU_q(`&KWCZfhTD zxr)P&;3!n=U=A2#3qxjXU1Tx<5PeMCiAK;ZA*D1k2_RKNFN2HXc&G3@&Z_kii=2i}gm4+mxgRy}BY zaQ}A1Zbo(sjBkPwM>i%Y|C_H?{l7d>O(m83@I?_$86T#!oP?@NDO=U8wcmAbKPS~j b{nh^fj2oXc+QoA{00000NkvXXu0mjfkZ~i0 delta 588 zcmV-S0<-<*1my&fB!4VPL_t(|oL!SKj~hi8hMyT*$U#DJk%A&3rn~YAitB8ev`I&S z6#Nf>DikNYRJ8nqyMI7Qkw|t&c`X&|2%(DvVtt8nb}~EjQ0zMK-88#;_WQnhciwk` z++4AL=9hb7x6;@B%X{!l)rDxS*_2d^Mi@gOwg5te5wwKet$$s@cK`*@q>V0BlcHH` z)yt_#;|Gne&-)oa!5U!DD=jXZPhC&zx|@+*mb2e|aM3Kg8HI`KFI*puR$WW7d1ub1 zcXkymqeLjg0mM$}@S1Q+h`sb3aRVp7)!Pc<+wTc$I0jq{Ao{2Z&tXESHYZOY?v7_v zz4+r$5t+O{-GBLH_~AT&RB>l@2>ye?oH%0DgWZJ9V@O4}s!nU`t>oN;V&hqolC<~a z`tE0+7{5H-@5^f%PMYF5qu+0v2C=dZcF1grH%lh0(P7;XH07B zY^(DF^=T)4LhlW22gbm8H#)+LF(a@$ln`g5^U^o_jBWUs zHTSsg!~f&La;@2a_7xRj0fB#eqXZs8sQ&1|47d-lV#q$@p90g*54;_B9}dh0ta{M) z;QsB3-9_vc7~cdVj&39}N(1knVLB!3u5L_t(|oQ0DyZqz^&hQE0@VMP-QC@3OfBqS))Af;PZ)Z74$ zkSI><}OZ8lp7h7|zT(h)7w$1T@E2Qm^k!s}8B1n%e=mqgR|NK?RygUPn5w z4s@yu4Lx0OkAISfT!JJi%j7SmUO$Hj<+uzSzXlrwyabnj9Y6|f0u+M-9(V*ypR70+ zhod*G^dsm7uz5S8DQjqnlMN(&;5avW zB_$7jY~%o>=tL)(-uoA-C1rDTpiVy1C$*ASg)%AYr8i%sA{<5rt*PyRjU{AZoGy^Q|? z@1X$@3yKbN9-?q~Kb}2=>5kM&Qm?DCt1~hGDD?rI>=6OZ8lp{2BKyHR-}-Uu=x5ZVtgJDQ~Eyv48Cyi^u2A5%}R*0 z=dkp~sW88qa0^`d2&}y6@9D0ke%bwU(BD|!F`002ovPDHLk FV1mc*07U{f>)qlDxa`;hgvIogcpUbwjbL$^kZI0on4V0dTUqoPX6V;>X#OMSm-}dFb-K ztr5;r_{>2lr&~Uf(5r{x&kbYI;r%Bd+62knryroqeyHjIdEqS&2g^IuX)!V_p zu&QH_`6G~Tjy^k-yX&z)&k7H_R4QXn9-qGz60t2d=e%_}vlfO|FG09sBBHn6Vf@(r zfu-MktHpfY|9?SK@^tyZsWZC*W%)d09`(x6E01j7AuR0iyq69fG+9cVy%pxZvRGR5ffmmv^=`KY_VNXP7~s+M%F?oU;A^8iB5Ca;Zy$v8iUseeJhuT8v}*TUp#>7J^p5IDNs z!;*}4G*d7WFMB{@&~1Sc4QZIsW?vnE>95EnTU`g*20&Yb7a;N4|B)>q4!8lB766F7 z5EEUyfA zzs4^VCcA4Dq5T33G%qs8UpPa%jvS}QCC6YUS{|!nFJG$YQeFSCUoRHYoi}8raH|tn zxCmrEoL?4ScoC!9??JlSzax~qe%=wZ`S%BLpy$GOGK~8i!ebu2q%({2V*7DCyo4Kn rk|wm}56;U@$3KGELts})NwNPwQh=0eL%a7-00000NkvXXu0mjf2%(h~ delta 814 zcmV+}1JV4%2E_)DB!3J^L_t(|oK2HYXk1kk#(($B%gjq1?IaD-*1(K4pcY!wg*4id zd15OmZrqnb7K*sAmAI%jn)hmoA}9@RwAeq9?p+9qNSwT+g)F2^+J#aonPMp^+RVKC zF*B2ycaMuP$$Y!}4exc&;e)V?n zFRbVoWc~=`o1@PTqPa$9qCz(<{W51d!XAswKB=*(w89+f%&Mr$VkV`jH;G(w(d_>wI=Va^>sHN6@&HK zT>`>&L*#ogUL8QhkvO-z^_fbnb%@rrF>6SRR|p2 z?qNwrJDM$+iI+VfG3ai95e;dW(dJwofT^#@BsZoGv<-l6EM9=bYyVen0CB(#z|fM9 z*b6a13vfNaYl2{Ni#Y%yRaI>iv#MoP73Q1fK?K(UNj8&U2w*QD?Gw%ZOcgo;V#zeN zqS5Z5WPcx5Rc(xvuc_9HT6f;C02R-*FufNjt&FPb?0jWPb-u0_#g%m+!pVXeVwT#P zRaL)Kzo}aO$yQh{Syii*j|&rQ3F}a*M+ZN)<`?pCIQguC5 z)?ecniiPf4MQFbO1I-_q<1d_{T}O`7CPK6UA)za zD_jIJAI>d_FT9A+?e`#E?cWhfUO(>$+Wh;2IM8$9I~m4(4&gD6UecL`IkEjX9$vzY sKPO4r)ep|gPRBoj*+XDgNJ**xKT?2{Yj}V{@Bjb+07*qoM6N<$f@ap1`~Uy| diff --git a/assets/dolphin/external/L1_Sleep_128x64/frame_3.png b/assets/dolphin/external/L1_Sleep_128x64/frame_3.png index 83792b943fea8c251a395e9eda6858d5e157ac3f..ba0ce672f3a49a20854cb1fd87b0c505b20176a2 100644 GIT binary patch delta 574 zcmV-E0>S;(1lI(RB!3=BL_t(|oaK-^Zxc}vg}-~VCeA}-d4xyh6$A+ilnTj3#I6+4 zP!KnCktp~B0UD^hU=U>@(NHCnlr#vavLHm#At72~M?yG7BpV#zB)fYLh2vm;15?d> zIx}Zx;J=88e<}+@aX$knfQtq}I-m_0QtSpmg|nv7FC#3kxPPX%fK3ini~4k6YuW%N z)X%{dOvKnMF0yBfa15O`qZNcX;lWR&S0C;ebeU98&pE)?lH!IFb zHP!mowv?-?wQ#q5Fw`cj!=-3=4j_h+dcIawCN+|tViW)aKNfo6B$UCyz4_kI>AG`L zN6y{uztB{{Lx1K<0(ey52(-^Qd*eC)t940gsT(s6SQGmI4RU2~0BfS&1+-%OIsvR& zlC+|xv>X7Qx>BxHy_Z_gfr4r+hEGVw58-L(wg~|I^pGd({278%@oyRMp zG{mC0vcnvOIeq)JTTSIcxvC!E`Oq1UcgBe@5wpW~i(?yK@K69g=Mqln_wa<8%9~PG zn*k$Aw?lnaz9*&bl#i#pAuTF*Rpk%UCF^4I3}T!K=r~)(lr*8Nq*P5!RNZ&01zxZN zaD1~J;Wxv1&5Dvb%1Wy1E)?~WI8;})6}9xvvL9T&`4#p|R-wq$ALXPC+zsa(g8%>k M07*qoM6N<$f?zQO%m4rY delta 573 zcmV-D0>b^*1l9zQB!3-AL_t(|oaK=_PZVJkhM(_aR+dX-yx^tUiDIIKp)%QmIFk?? z3)#kw#KJ#-+Gw?-tFeT{#tJMgZH!tm8Y6Tj##VMoj7veXt4my9X1>>ASzLdEr#k1! zd+zXG*u+1Pg`v3b0TjSRgCHHy1`H{71E9iL)98m0mRDTUTYtbNhpI(=I%sR!04CJW z!4yoy*k3u|NiG;1u>fXa5R3vdgTMn$A5Lw-=P{FON+a}?(E?bmKKl?&yndVuFcXFT2+C&EO`4%;n`ZG6E)0r;FtIHBLe6KX1NN?mOR zj40g>^;!9zl)6(sp7MsYsN7YRKTMabi_J5LaVDVSY#CG1gtC%SH8oLn->nvS!4AOj z&31$j=QcGfO6n*psjjzopr0Kx4GMF0Q* delta 30 kcmeyz{EvCV3r4Y@%&Yjcw*6U|+sFU}p00i_>zopr0Lm&0%K!iX diff --git a/assets/dolphin/external/L1_Tv_128x47/frame_1.png b/assets/dolphin/external/L1_Tv_128x47/frame_1.png index 848700a7a82da742bb4b30ca5c2b3c8cf774d7e8..81f12ca091bc6e15cbfc5dbea471ab91bdb7ddae 100644 GIT binary patch delta 31 lcmZo?X=mB+fl*xh4`cNi{)eAe{k38M0#8>zmvv4FO#sF=3-ka0 delta 31 lcmZo?X=mB+fl++*AI9o4{12=5h@W5p0#8>zmvv4FO#sE_3$_3N diff --git a/assets/dolphin/external/L1_Tv_128x47/frame_2.png b/assets/dolphin/external/L1_Tv_128x47/frame_2.png index 5c74653ec61be246b1ab995c57a6749dc0bb0de5..ce0d854114beab8a1b8feed0ad0c989613860a0b 100644 GIT binary patch delta 30 kcmey%{Fiydb4IZP@%c95UNr|wm>Gb;)78&qol`;+0Ja_qe*gdg delta 30 kcmey%{Fiydb4IZf@%c95UK1vN%VPinPgg&ebxsLQ0KxVPTL1t6 diff --git a/assets/dolphin/external/L1_Tv_128x47/frame_3.png b/assets/dolphin/external/L1_Tv_128x47/frame_3.png index 5f030e4bb4026ebfe7aacbc41bb9b4e0c97d7b14..40bf13a4d37d118f2dee825f6db7434f4ebf373d 100644 GIT binary patch delta 482 zcmV<80UiE>1cL;SD}PmzF>ez=6okKBA2}D1yrLlxgk4b3Ai1GID87gyRQv{h2ohJO zBGeQ_G*BZ^(D?$9po{qhJ}E^=<+X_LId`{1ac5(ud-LAg(VHD+(pW8gU$SiA_!Mjx zvbL7L4Vx26J1LY3l8z;*l*X$!CIA%-uokUW3UE-Xma3T~&3~kstRcV!03N!n%9DRm z)}$46zCi#850J}6SdxOO?Hb=s6f`@_sO|KW0*s2?BDR`N3&)WpJ?lVaaoJg}A;1@N zH@bsnA4e)AsZ!`wdzS8}j7xyUN+pI5?Xdv5o=Sa5nyOT_XTiY$V3}5c<?^1M4iu!mG;W>g#0m<;dgU8p zJ62FZKd6WVFu%p`*ZbKRhz!6G-kGP>D45ovNyopGq*__yrHguR4u=Vt4yd3WOH`4BZxhR2BhA%G{QuTq>8r8e>d~Nn0TYuGf)D-~_^|a`99$()=RW zorddD3x0yV-%}3Uh($ delta 482 zcmV<80UiE>1cL;SD}P;*KX21e6vcn<#nc%p<%xwr5y`;7f|P{?q1F{cnfMHR5F|Wy zqRb3bEHEQ6u*HQ+ur>VzvDBe-%8RIoQ`_$_*eQX#-E;pO-E$8!X{{K9kj0}=y>YS z%~(MNgP=K^DG*)&Fmf9JQdtBfDRUc=a;aPfYm6}|CR>FZxVpAf0!I*5nTw~Ak>=;Y z_8Y8AEjR^xzo#6y$t4N953rP<6IjN^ab)n&?~kMQ~&?~ diff --git a/assets/dolphin/external/L1_Tv_128x47/frame_4.png b/assets/dolphin/external/L1_Tv_128x47/frame_4.png index 0b5457d93bf0244080e03987f0e14a6a76c420e9..13d3074c9d3fe00f7d348d077de1d3fbcff13798 100644 GIT binary patch delta 31 lcmey*{GWNl3r2DFKdh$=WFLxNnCr{{1fH&bF6*2UngGd%3v2)Y delta 31 mcmey*{GWNl3r6wwKdh$=WFO8wR=$w|2s~Z=T-G@yGywqMa}2To diff --git a/assets/dolphin/external/L1_Tv_128x47/frame_5.png b/assets/dolphin/external/L1_Tv_128x47/frame_5.png index 88c044d347e1d5b12f5bf74bc3116eb21490acb6..b11e81b8da6aaba06f7ca337c5d8d65c6afa5112 100644 GIT binary patch delta 30 kcmZo?X=mB+kx}dc|BaJ^0WW9mXl4KcPgg&ebxsLQ0J=8|Z~y=R delta 30 kcmZo?X=mB+kx}dk|BaJ^0Y%)urZND5r>mdKI;Vst0Ix&}!TmdKI;Vst0J^;k3jhEB diff --git a/assets/dolphin/external/L1_Tv_128x47/frame_7.png b/assets/dolphin/external/L1_Tv_128x47/frame_7.png index 7074a89f32b69d1c01d27f06f272bcd519891cbc..d2834c6ed5e7c4f439478009c494629f9852727b 100644 GIT binary patch delta 30 kcmeBX>1NsRl~L?~yo4*uIg8{itPDWl>FVdQ&MBb@0F%@SF8}}l delta 30 kcmeBX>1NsRl~L@3yo4*uxhn={84N(+>FVdQ&MBb@0GVnDg#Z8m diff --git a/assets/dolphin/external/L1_Wardriving_128x64/frame_0.png b/assets/dolphin/external/L1_Wardriving_128x64/frame_0.png index c06aa25623316c5ae5965a1f20c0bc3bbeb7adbd..2229568befc348d1a2e48969bc33ae76dc405792 100644 GIT binary patch delta 132 zcmV-~0DJ$>1kVJp(*b-3K3fQm@9j032PvZ&OB>BiJ<8OWO`}^D0Aqa8^S`dVXt%z< zwzHrwS#PltgbOH^)X>hy?fJH*e!nh|6rfBP!Jj$OY1Eh0)VKAp*iEN;Kl6O7p1Ba6 mg+i{#Zsci49ZAh-5Ve0zp+~b{!dhJb00001kVJp(*b;WPD5~fZ?DljNEyvo+GuX-QKrUh8r`x07~_+k|8?a>yY>CG zodtc#dW)4HTtKm;hIT$~&$l)8`*ne&0A<1m{>+h1qrRl3zO9GFZaUTbndf8m%!TMI m6mms&BTqZ(NNPrdsQm*?p+~d!FeNwu0000at%Yy(3XAN zL+Ce*Mivb4ENf^*^XgSR`nlq$+MW*wdzY8d*j&4>P&O;mCGV^^7?NU);gtJ$>l&7Y zFx4lt4`+% zU`Y)WLbF|5x(HZUfY^gy`LI!79dn(GCLv*=dU*seijFr)K(X!Jc?%fkH~~J%`S8ql zfUjLiiL?=%(qpa2f*jC=3#C0KxY6@;9Y#F33z!cu1-a3Mg*O0CVks#pNB|Nlv|=eJ z>HP%2Bqe`Zu`)_o#qarSAvm79@7H@NqaI6}^({Tj)19CFe5{>17oCP& mUy)t!ryaE<)uTbw{sH#MPx507twR6+002ovPDBK*LSTYX-}~$U delta 547 zcmV+;0^I%H1laU9y4KK=r~?HtbcIvhtFE#p5RUK}HofOGiL%#OG8SUI9dD6|YY$F}U^ z9zefkw6b7;r&&Qun$>>A!=G!8>fPCJuy=70jm&g&g|caxE_r9Y!H^VV1gDzgjcZsI z!bDDtmN8r?9ln1ok`xc7z7&z9bU+kkM?TRM>`2OTL9!`}4l7cylYo<7wi_IC?5U5z z`hg!G8dyja3@oa<82lJ~&wVheg+1`xu}0=$PAh?~2cSnO7}G%01#n(%fd%&<4Xfax z_Ej*-B{sb>l5{HsTQ0U30n{L^0#>G0M^&(uU_v8 zU`YcMLc3dDxCmHSg4ly!#jsUk6?2`8HX&iDet8Hm%8oZqK)LJPc?%fkH~~J%`S8ql zfUkW?iL@4+(qk>jf&$Qo3zZ$lxUui)DhzpW7cd`S0t&-(b8i5i#8OgGknH8MMkkhn zir$X_j8lK16Dy;V)%-lCAvm79>o@mPMl+Vyn;UwV$)8E1n-&10eA2VOCArZ~V{dI| zUSG1_LNy5IQ7p;V_Q$QcwkChSE|3(ULKwlHS<)%gm(->i9{>OV07*qoM6LruV1m$?{Nw-t diff --git a/assets/dolphin/external/L1_Wardriving_128x64/frame_2.png b/assets/dolphin/external/L1_Wardriving_128x64/frame_2.png index a39d6d04a3f4d4fe7558036934882808b201f0fa..1d51f82aae51e7e20b0aa67fcc33a973b2c77dce 100644 GIT binary patch delta 598 zcmV-c0;&D(1n&fpB!4zZL_t(|oUM{EPZUuUg}-@@vWUuRBL!h5#>B>gl4z8%vobVP zCW^7K)56MZ!kCyC8>OH$vb9(c{s7Y$NYsSF5}h$?WP_2Ng^djC%p41L)?IA9-97no z-nsWaOZ1oFKMS&a>|SA4M~M6%k7q|cQb0ZRNm3tCZn55PT7P21AnQo51H8X&P&d@` zsM}XqH`J_0U16T8;p0=k=7(>IA`U|&*R0O_Vo(o1Auj??t5BH2NNfza&|j|2EENwXb~ z;Y%_x&|T4-cYowAcYz;HG^rIyKGs6IDPz^6h^7yq2N@VDK}_fYSTDA~M0cDZi(T;1 z_GMtTxzebqp;W;do>aFn^SB0wT)I@~zi^Ih;2j9ga_Z z1`IZk`CPDuCQ`seHn0b0oqfi+)>+U74Ek^zFaf|6*h7np^8gRqQtBv50a7Muw57<= z!Z^SL4vn^QoP09q?AgR%`QAYg9$qFVY)jw5n(pTcX0znFiGVTQ>B&w>Ub0_3e73Qq z_jzmCjZfkw)Rq)z_wCl=wx)l+v`KAnh!gnrifjh$NecDhOFYobrdwZ&W3Qh$lbi&* kAo8m!a;PCGOuAp~4`gg&jxjJwZvX%Q07*qoM6N<$g6K#i`~Uy| delta 597 zcmV-b0;>J*1nvZoB!4wYL_t(|oUM|-Pt;%>#y@?na)`?5A_Jj~F>!HVBpRh|PKJfa zL@_RIIyjk2sELVjQ3ggMH;V(|AE1kYL`@hR(bk-i3r4O77b#rZ#{qiYovZKmJo)7N zKHndf=zWI&Y{>GlyNzA-5&1tgp7qyA0d>7kl6r`8i}l{3C4WW?vigD@;Qf_B-B8b? zj;^q7s9BFX#ynNS$ESXw?Hze&bhcUK2=j`J&iki32pNV^EcZydwJVrBhN%J=D`W7W z)SWDm)b6zRTqKgRjxiw9(}`waUs7HG>84E5O=Mt>)AX$(*+GPX(CrY91NbdTvqv?C zFUiC}XGC*e-+x~20zaH+QY(^ttc7$_#;QjVO&>rHGB8wvn9u{TUTlGh?l?gfyWpek z%fM=LrBPEuxug|s%B&4|^2wmM(-04OS{anFpmRvUxFvdGQ*(u3O_N#~AHkR~0 zZ!Nn~yiSDLk^=3%-CEq%^v{567&7eI=p+0ua&>^%G~3lVBG_ jepN*dH6(>e=hXfHWNc!Nx;Z>w00000NkvXXu0mjf?pq%x diff --git a/assets/dolphin/external/L1_Wardriving_128x64/frame_3.png b/assets/dolphin/external/L1_Wardriving_128x64/frame_3.png index 28181d5b029b77a3a3848fd09b21147ead79ab42..7f6709ec17f99cd421ee2414813280bd6a664447 100644 GIT binary patch delta 583 zcmV-N0=WJ91o{M!K7T_57l)2T(Vm-&(xsE26&E)hoFvc_1aZ+09mQt04yFG<4nbN_ zu!Cc3P9io`Y%Wc(m*(yshx}+0!FPKep7+P|zONsmPh6&@j-)%!Ia`)N_{XT z{ip5o!J;vs!$@yQ>La%5`qE!C%a}pdfR_W@L+Dowl{Dz#JbxR8vh}z}EK)Fhe&%&? zW=}2}pRaY>meRb8&U>eO5)usKSWX8zb3QJ^{IA?)DqNwEgn*f;Ly`Ju6} VbIQEh0x$po002ovPDHLkV1f*O4?zF` delta 583 zcmV-N0=WJ91o{M!K7SyBi$lkvXwS_>>C#Eiii?{LP7>$|g1Bghj$$)ghthu_hafE| z*uk+iClMPeHkT&YOLKRRLvm>o!FPKep7+P|zONsmP_U+@j-)%!IaWqN@Fl3 z`KRsk!J-kM!$@vP>La!q`qE!C%a}pdfR_WDL+Div)x_`N0)HEZiuJfhEK)Rle&(h) zvnL0Q&)3to<)k2^^X}=Mgc!p(R=x}Kl`EJefSFVixW1yVxDV})nN0R2dHAXMV1VC>^3(mk@?g2k- ze_AC;F4j`CEq`NGeV@7upocLS3SL0j0kB@~fbs9zUL54XMZ1@QwR)*mQB8@YlD1{m zhn(CvpdxV|FgXC_Nqmki047Gz@M+)AuHOWV9N;bNtJ%B=n5byEaR9sZ-0C^N1X=QH zF8mk`s#!KMj>U}v0YS*vFkr}Gd-&v9x!Z35)A8#OjeiEGz5<2}5W8HkMy4Xb_!(dy z&e|;|xz=6KCJei92QVJM3}i-@mlpvZwWY|G9|1&6Q)^4Ut))qTDQs$OCD_Tdm;Px0 zmg^jN)!b8#?+gy&>jgu&5hXK^4*ZhgcUNgQNwMEeLPG#J}gY2=mn=Q!9`VO78Fp8W2) z=iZ#_h=XJNoABU2c>ImfWz9Kom!!}%QzSz zo%t{)vXvDyHrE*t*{n>bz2n}%B*hrRspRX;OIQ}dR4$B{FkC3^Pa8>!2d1OEePY4Ip!sLZ zEifu?N&q}^tbdkyn9~G09)RwqV9esvZ~>er+hD=XaxD!j;Gxz<;C-jw-c(zeq`J0b zt3ww`V}NR;6~IbFpbA;Qp#{KFf`FZX_;zvi8enqW3NK(+-R?QSk{T$4R>bltz``QL z9(?VUnnl(z*Fh~p!qM=|FkqB$CJ88YO4pwQhCzT&GJhH#`ve#TAoV!wj7%ng1qEOi zPL_L2aHZeEbr|;G24FtG6ck1l7oP##i>0KjAOT3I(vGE|td|o2lay)4$|z@5zyHn_ zg5$Y+exu(q8nLv|*wmd&{#+VewE!6BwI2Q`%8h!p-^aF>^e*czSAuW}#gcsOyxLxD zY5LpK0zgRt%7hVopC_F`yOJ9E@Hrgnq|@Cm`HxyVaw0kkg`CJP=WR!ANsVYwwO`ME VVWG4uuS@^{002ovPDHLkV1hOa7DNC5 delta 582 zcmV-M0=fO*1m6UZB!4DJL_t(|oUM~TXj4%b#eeTJ+SICzE;^JZh@gW*$D(N7=pyyvS>e%f*q#gIeD_Z0E5OL7x#VmDM@pEkJ0n8kPR2NPb|0?H2++= z1xDpf34lkA)qgS%bDBWM1JK*v-!86R15B=4;RWof+dT(ZQUit1ida4cSXhME zgRi|(v&cH;I;cfRI2xWA28H2fPFbMETMt{R&p8%r(q#kFTk;w$GpaAT` z$#RbguJl{D4#OVY0L%xNg2Kq+;xmAIv6Pe*BmfCj+OZUr^>PAWk}~aB8Re|%=hY6u z@!UPX(Qg@zSlVc8>P{wqE{(2Q0F3im4}TQpM!nkaXWL79mvxsbLAZosNxpVoZ7;So z{q1Riq(1;F$^ON39(>5gmm>PGpz!wxhPBMl`6}FVB8q Up)Zod5C8xG07*qoM6N<$f|=$LzyJUM diff --git a/assets/dolphin/external/L1_Wardriving_128x64/frame_6.png b/assets/dolphin/external/L1_Wardriving_128x64/frame_6.png index 4fb2ae19158d02c89699beb69910d36c90b975c3..bb59ba12ac37aff89d771722b99b3cc7a9cdb9ed 100644 GIT binary patch delta 573 zcmV-D0>b^&1l9zQB!3-AL_t(|oYj)QPZV(w#XsNS^p2q1Y9j@?+ZYQwEs2R??W~Lq zm4#SoXJcVOV6BXekZ4Kb*%@gJmE9dtBb8Fv$&V!xxnP7{IdgmL?sqJ3_rU+a*UihD zH*Y3ml;aToPol%haiYSApyr>J1H69OY71=}6!jD<=sTU&9DhU2aieq5Y?v$T(h@p4 z6BPILvCpsStE1whiqxW_Ztjhw}^fP@w6^yXo!8n!E}BA(&p z@MJ*9%E%xfI8^ujHcsT-m?Nu}&BpniB?NVqf&9w^ zFun&{%93w;9?e8`^Q%qP!g90uJ6e|(P)p&1?JT-M_y$c>^>dcI-dWhyi62i(q$O}5 zhM%)!lQw8qRX4I^Ei6abL}$HpINfq`I8LFIE0Uz2BL+w_a|rnZnCwTxXT&~P00000 LNkvXXu0mjf&|egI delta 571 zcmV-B0>u5+1k?nOB!3%8L_t(|oYj&&PZVJkg`fAb3It_G8!5;#F&1`O8WY3XSs5ED z3$fD9#=?TYSQ#53(UQcqGtw9;yIrD2Dy6WKk0BD-V1!v&!!Gl2EMRuQf8g!T&AI13 z@0;ty@iP9;Mw6xEjXs79xqn9XDR*V9Zq&1|qbFEG?=`Kw27jufPBV?^D0gHF3ut(% z(Q#xGGMx)f2c3``ukNZi@HlGc^GB5b(E|nX|I#|M6@Kuokp+B9euLKp)D!R z4augg1-LE-b^>rY*?x#YqYL`5hQV3~l-CvbAxYK4(3kgQu-^T#J7D3F6tp}H~VpReri<>gMk;-o5BT3gIu*F{AAH+iyQXepniylB0 z(lY~CN(J|a zW!Ml4LDnu)jivQ(S-cYUR;zy+t5yR_34F|&^L`k;MX{tWY5ZnuZd+qNpA|?7;6V$1 zO_PqJJv2#cX}l8kHqx=?YT@w6IXT!$ppZM_xXaN3NK$uD_7|A!N5fY_Hb_w^h~nbll2K_KEtU?ZNF8jUVir-+>*m&qHBC*^&*A>$Cgxl2 z=)BNsfdU-h?6TaHomzyWCId?aZv2t$VAYQG1@K+=aS3xzEYWPn_|!7&kyrwzN0w+P7hNMys#{XuH&i7oOc~!E2RxIOg@^vCHwtwUass?xB(bVa+&Q9-?cfzEH zRaJFwBQ)*t9-D^M$+_tGmOD$OxjN8(ZQMB*A%W?j_XAvQa!<4MGlYtGBWO!UO>e`& z^@yp=LTM<{VhmLLD{Nw_x`pcB*@&VHNX`e{B60!|$@sIR6bdMOh_n>o7fBy1iwH2tWt-6iHN zcYJ=|_r3Ri_ns*AVQ7p(_&N<>G>o*WD)XUYL{-&xhORHAnSZINN-a$D&o%*PS8kkn z8U^O8UU4%EaU>QEUCMRjra}Q-6V!5LqopZ(oSY2YgkVCf|wh7 zd?Z8e%kTvc>{tD*QBfc*9frm%H%_U7M}!_wyUaEwZT-dynh$}Gm(GxG4Qy1s_mXWsNmGVm7MJxPyM)c zsRk|rCqbNsN~K(D|C>3w(0zU8RmlQcv5dK?*U98)-hUHR4et1($OkV!m~$>dYNi9;0$gn}r`h@*0!6$Lv}K~Ex8dM= z#8hUXG#E)S1}gpto0zI@q55|=q9_C6Z=>lFkrRl>wBJiwp@71NNJ;^I;g7so77>u7 u_`r64cO~Cs_qKlqDXmT_4c2Y-x8xtiJ-9FRb3x7k0000J{b diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_1.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_1.png index bbcc4806f80eebc14d6670a6e76b73ca6b05bc70..4b8a3e2523ab6b831e606115f67f648cca43b198 100644 GIT binary patch delta 317 zcmV-D0mA;j1iu83fq#1s=lsl7Bg;QAVxot~vk+Kso0H?v)F^ z0{}9X;MAi-jtQeR27+Z503aEA4_gE;29A^gz%Q)@H~yr)0zfl>pikxQL`N)Tf~85a z;r;i>lSToKYdRAoRcA<&n~b1`W4G``{Mv6$On8}z37_qluof5ALuexSfopN-X6Wb% zK3FysMuQ`B?ZNIv-DFWIrBq$zL#48^FyU=@jW;AoZ&H$$oxT2Dg)fGGh!4B(S8!gn P00000NkvXXu0mjf!1j*H delta 317 zcmV-D0mA;j1iu83fq(lB=l>&WbgTcW-=u=HVuxN*l2D=@g^kwL*|J^Zsu=xWhMTivZOtnJy;efLQL3O#` z7e=7$z0fGTKclka;s`9UW&l9dfTYS8XkwDwVBQEjN&e-WMn<)=yXpWS0Ogz)xK}Rt z4gknlf>VzUIVOzO7zmDC0Dxp{AGQcy3>+x~fL~e*Zv07o1%PG%L7&RqiLO}61WS`- z!~1W^lSToKYq}F8RcA<&n~b1`W3TW;{Mm0#On8}z37_qluof5ALuexS1J~lv&Ct;k z{9xHo7!9t>wFkRr_OYmxQmU@ P00000NkvXXu0mjfHk6i5 diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_10.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_10.png index 14ba7ef9092b3d5530255c8c6b06f52675d65794..ee9424ee54113585ade555f3d4845bf3828aa176 100644 GIT binary patch delta 540 zcmV+%0^|Ma1ndNmBpx$KL_t(|oV}CJOB7)k$3O2oP`HWn%em(kSQ%gvHhEAv8dy1i;0f+a3VMyK1vfS1pWwOkhwc zl6`&Mw}#bZ8Bij*l3|Uf#vdGZ(4ZmfXnUzU+wmw3kQ7;qTs2r=nQ_w;v}>N&&o0j{ z)_fo%vJ)!XzLq#YkY=}5sgaI?KMu#iW&kXSi#HjM_?OYKMr zg4u)Le1Oou_ftI3A8*{r1B8|N$KpjEO8k@Fx)Wupg2kh!m%k4VY%U!;9u_q4XLPID z<<5N_TFaKvz*?5X%Jot8ddivrjGbcV-%?Yj0&VGdrUL2G@aIGK=UOIz%k@FE!pr{h z)2$bENxigVefl!9F>|J{I~Pf=7mAxF!b`hXim|{hT8ZC& zZ>lcwbK>vw5OMbd0QInQ&;S8|vYp1Z0JJ=x*aNXp>!7l4m!PYWkOmMFGXfT-~^Gc0|np0000M_$HnDs+X%uxN1f|vOAv8d?48X;n+b#gcyIM1+vmQhT6BtyA zWM5y`tzk7;0hCC-Y^281;}4G5XwZ?u+B8qBXP0Le z>mHC5*$I?oT}zxF$go?h)JXe(t7+Z`6(BDXNF2&~PB~6oSSX+zNUR(^n?Zx)rgx+a z{_MeT9zfvT`zbEyk2mfV0D|iLV{s#f67Q6|ZbzOffAQFv^4v8maNOIm!`Z2+;of{LO?ZeHfjRFdzrr#_$j7;}bjnnh4 z38rMTfMp!u%GG`_L_|c&F{p^h51Iu(_36vZ#!Po{Hy25+7fYKbgG;+liZS0Rr4qlr z-gKkI%Zs;!;80Mx^AVkr0k%Cf_;0JJ=x*b`!=HiYWFDSl_@kOmMFGZIpuqDufB zBI33NQH2epqmQKNZRFAf#rQ>p*%lGm4lUHNU%1z@2$+O#%BTi;k$UKmHc@s{Pis}G cBK0utf4}SfkXBxp=Kufz07*qoM6N<$g2qw<5&!@I diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_11.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_11.png index c2ffa804e95a1ac1e0b8725167deafee8ad73f9a..7400b90eb81aea8f85af46aabac06d9f5001f48d 100644 GIT binary patch delta 595 zcmV-Z0<8V+1ndNmB!4qWL_t(|oV}9GOH^SL#((d7?|ejpGa-a&d7&09N`{Ieurz2B zxDcV08>vmSDQMBIt}P;WW7w*VNJt9O5S0?4lN3&2;3AboZ5FEr09HM|q6pN)+g-`Xu_t zp6?rfkU;~(O5wh$3|;eXIRHxJc0SgA@x;5C=>Y&kWU&~gNQit3SWQSm(&Taa$=TVZ zssnV1RDG3BUx*(Y%wU2A8a2}X@(~4p73dZ5q{*S7FEXeNK>i;zf|~n&I*(&aSj$*riTZ&S339mIZ)o>XL(Z? zO&=a@yKmJz)jRRE{yXaRWHJjVFE{i%Fjb>j&(oR-jZZhg)lYlwzKA_s)qoF~{QSV` z%+53Fi)sP0edO)Q2@5d1`3?~$G_5++$DdSaZ<3gE6Mrsk?=MYmPGEvpI<-=P)V-~Z z?uI}{s&kA)ltRg;_1|B_2Gn>i0030lY631m>}j?ExI{>y9JpMo*m9zP+f|9Qh}jqc zG)Yi_Domh5M2f9`P+TKnv8mQgt0hF~m_85h+W)QPF6&0C3P$mWYJ0<=+;m hHZ9X8$^uB%fxkeC@{?Uf8aDs{002ovPDHLkV1mjs9Ay9i delta 597 zcmV-b0;>J&1nvZoB!4wYL_t(|oV}9IOB8V!#y{Vg*&mVMZU|vo4%DGT$x=}SmIhq{ z4M@Muu?d$t3x;3J2rq487aitFQ0lpGd%#Hi!7GH6bX^<0jmK?NE$pzKRrLY zRI`CDk(#H{=}YkwgBc7kK|_tUzj{p3TLpSWTxoJ>&=;9m1Ag==%YyjY{^P#V#T?24 zXLj$pjRsaJ<$p>67&v*=0`TnHKcy*Efmbg6x?l!MmDq=iEz`q;+bf+1y*wy)@r%4I zj-`)|wLLKXooYMrwf?*6&15nQC^tX!rw|gRv0k7x6B?gxfa{<4-Fq2(w5kCfWD4^G zt1~;#sUNBZjP}uYr*kHtyYn3)c4%64q>sO;(A^|4=YJ#|+CE&F+{|HsTRyW=h1C76 zjpaEskl45bR$AW^znBGd@kB(d5Qm7!MtG+H@lRi;Hm8o|G5ojNnO)dEOI5QNZb{Mq0#Z zi~t%*P)>m=phHATtzJ-J0;#}d8a@79{H|18haUENMMR_`g+@iA+4q!i+#IAAUBJyLU;8%H_d z&Fuc}qQNO9eSgUV{U@$E0D*h^r!=f82ug)t=k3s`68B)CWomF>Yq4{GkOk%EzRJ78 zNb1l?+XK6nsou7h`|hf@6NwC<{M^c)FjS4EHMqy zrRnYGwOND~Fx!XUpBlFT!*@DF+{iNpYbz3cDMRA3UVq%9?cNqGg$!UwAR^*KG(<$!qnQF&pTA9ROdif+*7km9W^U_1aJK%XBwm_J zSijxwsm3?Zl?r47{#NQ;V4O z5kQjw6-&ATIz*({8iXfoAQ}ELO*ha2P6GfK#fU~(M5HWrXS&{OH(Dz5G%aH@7!s*A gBGV?y21x9HzbjAnk?)*^kb+f0!xE7 zfeR5@wUOFHn}QbY^4TJCH-@d+h=imd4N(~p&Lo9X7`RBN44n+2R=zP|2IjqYT1+$V zjekIAb?%pQzW001`NIDQ6{gmwTX7?+Lm-%2E#D*paOUW>Vt*~`$v5*D3zcS|s~QmR z8-1~F>|q)W3@U~9rgHg)f5!z-B18FD`=yf~rlgl3>Te=s$7Q0SMgNKcyj6K~O6EI&X(cmAD5BEmMO7TZ^6hgDfaN_f_5% zMpB1H+8)@oo$76Cx$mxeJCVo$%FnI*$w!1~N)D~*$oQ=0f$LxP+yWW;gOE3^!gl-}%$*AE+9KA6HE9>L<$$ zNE$micVPsKZO_Sx*nz0{BJv?@T>-JTD{~ujM+%s&4c94d9`Jupw@1o5Sd7QM)dmxQ zAtJsJb}Ay{B2Gw@x(^PZrVA~GG<~R~6#xJ`?oYM>_phGvDSAuuM3_-0%5aG?#0&#* zn$yvaUJ8>GasU7T07(Z$PDHLkV1ic<^?3jQ delta 532 zcmV+v0_*+Q1la_TBmp3iB`|*`?z(HCbzO=S5sE?lLNFZ*Vvz~~?WQd?e$rTf1gHIDQ_ z+A&l4SEr^d!0_yDk!t8wyt$PSpg~!%m7w#@wdwUK6owlwTx|bs_V!hbqfg5wc(v1u zbx0b!xo~L+jBU@!iP(Xt_#*NtY+V7d_scWuGsg;;%?;NnZXAE|&$dR&J6w#%epLGt zfFUBj5q2sfc@ZZhO3eocP!okFLmEC*(h2~8T@S}vfV-ooe2L!DI1y&lh%#KF3^Bt% zoW^vtqFY4DVTJ`H{-y~u{lK17i_?%Z)!(A4LNgi-NxBAcyZ{s2h* W;gl0jIr9Jj000O{MNUMnLSTX%RQdS; diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_14.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_14.png index 6aa324d8b778feb099caf76bb40c59162d0cbd7c..7209b545fd4f851b2625f5705dc4eaa17d19fe54 100644 GIT binary patch delta 455 zcmV;&0XY7W1d{}iBmvryB{qMgNF`gOF?=FKoq5r2okj@=@?4gkU;W=Rr3p_nE~JzThMs$Qm&s4S%Su|2@s#XHZt zNn>8mjRFAFQ^tVc$kofH7piF=XyjV8#VCgEs-DuFlMt+L?BAVwJhXoV*=l(&eL?VT z_x52-DN1%L=Z*(prb3dvu|Ki5}{CyG0+80B8nKSk zwyA>P3>UQ$0s*6-5=9iX6n5?GTomG+cbm^*XLir= z4t&iFzxn2S?+x=5@plN^*eSM`0YF&9JV~NaC}v4gj~1?*s-LN(%7*k$+XuW|zVWn| zG#B;4H~>IBW&#KfTs&`Tp_&bWX0BCRj1%ad+cUa*6oU1Q-J3HHM^=9zTkYUwC}@1! zxjq^D5lV6C_Cz4KqnE0>vT*^!Ax@MUJ*Jan$|pUQ)&PZRjW@5nBR}eM4V(m2u!-jG zv9Ym*djSxUjP?Za%IoUH3ji^IvR9a@HIl#5f7(~gM~CCeyX6p)0%#3ueD^vc$Sznv>gUB!zX%Gz%a{!-O!N&e^4 z4FXwRDjcj37kDlh39>c+mS46V#on|7Iz}rcGl9RaISOSaKvz1HA-4>ew^RASZEnhd w=XNL!(4$fOY;C{WO6(QCJawur+AkZ$A5tf$Cwz__-~a#s07*qoM6N<$f+V)n+5i9m diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_15.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_15.png index 10687b835712dcc2909f6823f0c073689006c7e8..b7725b350246151a588b8c36498d8cd0a4ef165f 100644 GIT binary patch delta 507 zcmVYC^zDt{AUOm;5Y0ob2;wBC-? zrqtvB06@H93`q3eUeLWzjQKz<Au{3HwoWU6z=*=$2j}9?>Ue-_fbiB(+r8Z1 zKl$7PLXzRJM1M5*u{`)5Km?%ZfH)I+@se06&+WQ zc=jvla((DAMK0=)WRsStgu>yyfl7Fjvl+Blsc(LYzvY~2Jat9LGP=yKo6tFuOl(mB zi7zj#I*W1Y6%8de9Ee>C=O63+c<1Zw(s3-V5UkU&K002ovPDHLkV1nU2{O$k% delta 506 zcmV|7M$op+mOvH$O0z87$s zKfHPKX67@ai2WvTZM$%<0)VivS&~GfU`&&w9xhZjR6kKkm47wqU$zhMZt>Q$UZgp% z=SBel>IoA-aOmwV=n>30Loq=s#Zw;PX8HSH6I_1EAJOWND81esPV)9(!IWB;u?Z` zztRCegc(y6q8>?h=!gn5K3^NHMHhHBhn8!ttq;k!f>TfCPb#Tm!2Y@o9VW@t6;%*? zdf?PqPBO1-frWFKciuLC#boCUE7x+$dL5G7Yv&BpS99@WN3!wT2d`8$dy@ZIx`TkM zFBSG-g!`#E!*hY5AbYh<`MTvWb|)R6V^&y7<^uoRa2U#5fUYQm+%dqcy~>a7a1#c2 wVUN-PdN_)ouk3YOiB0j#6KCq8{jy>F1thkpCu3Dn2mk;807*qoM6N<$f=Ti02><{9 diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_16.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_16.png index 862ea4f1e3a98992c8195129b69d5a7eca724373..82b1feae09a5fc3b86a2bbd0283bd3a8835d5f13 100644 GIT binary patch delta 576 zcmV-G0>Ay{1m*;gF@G3_pYz>gNo#9U=uowqI0zlA>7r;UCZ#S)2Y&`Z5DS9f76cvb z^@lDFtuBscaIr*Po$Rf+SO<%Of`h%b2*oAQ77Xc4K8Jg6(q4R*b9ng9d(QWBjIvWg zQeJyo1Q2a2uc}I^9g$O2wY_cE7v_Ja(lD{a(dy0!H92<&*nh2yMJylgj~zJ+z_1N6 zP(EW%_XFTO4f1QQrR(}=dJ@3#ow>aQ$}Ni?)eW86X1WKuI43-tfB$g!dFMq2!7wD0 z*1ehierkmiU<&=hBRe@@`{u7v1WH}oOczwOvL%oYtFh<-DX}blF#wF8ifXE}VT5t1 zf)RWg?YCHjOMe7zxJSVVQ1bv3s(^4AhqYrDUIU6CRM?#AzBf|>*9U~hVY@uYya9y6 z{2bZL)<-*-aHBSOwF5VfzJ!C}!#*sh;DQgeA6XD^v^7;zRJYGZ)eDpRZHzGn$cD+0QB~D!92a*k z7dGQ+%VRxSTi{O;Y$d_2LIQLyCxEk_0OmmwbR@v$odl>SuZ>F}PV@uoZql?AuC~ua zWHti%_&M-$Y!<7cs;aMKG5(a<=t%F1zcAelYSlQoR609;S8OVp8vX&LC*~2YxE0R; O0000Ay{1m*;gF@F@tfA_p=No#8p=uoxVI0zlA>7r;UCZ#S)2R{Zu5DS9f76cvb z^Mfu9tuBscaIr*Po$RZ)SO<%Of`fgw2*D-M77Xc2j>CJeX&;{H^5fk9z2}_&G0M&m zlHs+FMF7!umfzW(cNLS5*IgpKetJEV$r9{YMrA9Nlu&6t(UCsCi*=zl|}*0NKdNgQ}{Ujq~Ek z<-%cH-O{MUwv54_B-l)XU4;bbTuuO|k^tsG5_BZM#+?LcB%h62AWpP_4L2zoZKKVY zh|ESHA30xMj>Y1rs;cTMS&Wx5YMJd_@fW6BLA@3imr7^H?}|-DuHhf0C*~1T-?h5{ O0000kRoEcS@95h|C8C)t0VX*c1TV!yrspKJ0e^c=8d%TQ%s- z$SiX}X~YoVM1O4rKz_h5gY^NV0_2PVa$b-9E3`PW_58dd!(#vs zFS03y6BM>bgTc4j`KMm)+w#t(_-Ob<81z)Rg>R4kdUrYniv;1%(%*F$$wKaqw0g)R#k1QfhPDM^|VS$ z0308HM%qH$SIa^)cJ;{qo`J6-BI2fAD5|RJ=ja@!^D(8Ws_p9kOko^RU*i8;VX|N# z3x>VaTohkkW)#0CGT=|FHBP*NjXN2Il;Wi05|alpC?;FEowm!&a00000NkvXXu0mjfr^^hi delta 551 zcmV+?0@(e&1i%E4B!34>a z1Pd(!R*Dd?i;ZQnL9sC4zb5SoHinByB?J^Ng^H#y#KuCn6+!H>=pmQ$_Qqm&Z|{~9 zoa()g@6CMQyctn?!;p zf}gA5_|C&auHliLK4`~Rt~2Cu+$mFGAu{h5R6||2uqgl(4}&ma`LMqTz>|+4?y5m= zMrN4<$|D9JCx4RR1Ni~N4AujXDv&b<$hkfCuMl!%>-l+!c$VFv(Q`h#yZ?Wvplw!CvGz8XFe_&rr_;n}0V-kt6Mi}=CM^mK|A_`r7xR)0MPEP;KQCVA_Vc8$pXo`J6-B2r98s-&u_pQC%wnU5(|Rc+V)XA0wpbcy$GhRFg0 zSzy>rTL{3Hml?+Ii45>3<{Bs7z~-F{L*fmv;}RneVxW|4<#yIw+#$1>EM*MXv6}yS pq1|c($sm(lzIb-g*jzqt>R<9FybU$ZM6Cb-002ovPDHLkV1k^63EThx diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_18.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_18.png index 12a96fcf233a0728806f8c5e392919411196c38b..3114dc5992de4b0e7f340b0527b967e2ec19c884 100644 GIT binary patch delta 528 zcmV+r0`L8~1i1u|G=KBF80|z+Rh3dlQBYO2Lmk%@>1S%1l7#7Bwh#Dl_STDTvVVNWp56<9Jktsoc3qi? zdr>L)u-w+ls)iM8SN5cBjAMAbw0?W?$>0Ud>X!G;HBZyG|Hkw*w*2MiZ! z_y7_Bt}#F@=zkgi5)R*wo_{Hk&hne;OlD!i2f$*u4-gPUV~XJrKaNy$^%L5;)1Y=> z_VCmAX!t}n*Hh&>e&gHj<8Rwwo?Ld%?4yS}5^zjub){I~l>6(!n~Vz}SU!H)(9F60 zVYSQDlJ#sh0n-hKYwpCtNb)Pm!>Vsa-2#pG3Pq*BPmU@du+F|b4B@bz4)QL7{=ZZ>yv-dH!;ntw8>yQxdH SfyMv;00{s|MNUMnLSTY9B?j97 delta 528 zcmV+r0`L8~1i1u|G=DSuq8o|k0v6Fkash=jF*ZuH$%-~Y5Y$4j3J5|vv9Qf15eqH+ zXapNm*ccME5(9!4(IVOe1q%^wQ3SE^gb*(0UB+T}Z!gOQoa((F|2JQ6MvSedaHx zqy+e?K((dwD1Vpm_KONn)k->gk^%?ySBIF$SGca`EYMLEQeBWuOl3Cns~svej; z{4}{LpC}Z!M7d5_|F--1+a{Q%SlBc9=;4kO95Xgso;cu?|LehfnCQtP5rm%gHl zPy}@loFanIO&nZ(R&mfpT?7|1xL8vEEMh_MRTQiaih_d(c_@Oom_n#&O?n*OOY#y@ z@J#pq`0jVkci(-Ybe5sJg7)$}fYEkMsj5BuNp!ck$*=BWcm!JsQUmC0Io4WE$E1U8i()uPdt-IXZcOFkeVCw0k9Zu0|W$7 zOfl@?$G&QA{gAfrG^p*G-TN@!8a|Q9b#%FiU;no4;Hwt6OfIv1_TJqsO>jWjNF1@i zVfWXamnj!OuzdXTK~u+fhSh|rCF9vl6U@{dF1TZJ*?;DzBoCKV^@^(Mh8nQogVtJI z90kxQ?t1He#IrOEtcZxnNECm~z^JOKhOI0tiHOK#w6FZnquUHbbBVvX!gPbaZZP1r z!bSDGkNjbLL68$;rsMhpmEM8RmGC|HPaiz0}P350k#?=lvJysZvyHV-`VbJmRvj7l`fCRJ5EDXnr zploL46(yn`dw)bgzD+qrEd-Df;Hv_aOy^NfX1#J#&)8sLDjmO0{p z!~U;3FFSnz!SV6S2kSh(Gg{7=I`V`LhQE8g>dT@T!NpislM7dw(jvmmjDb55#D$xJ+C;mgMbKs( zTNoG-6-3bH5iK%D(2WHWzG-2lL6N(te9}g!K%zovW=@Mccizk}XLIlU-hcjk&Use} zwV|nxAlgmxzLTTZ2&gbyML>JVJY}s-j5XwXyQ8l z)Pkwj5Xe=;t*OG%8qgI?ehbiSJf6=2FrM-{7a(`P-Lv4m?8!sOeVXkBK&?n=@&|?< zS5c5w>9#7<77^L}hi0zl#1cR&;OVU9W})jdz(Jrxr47f`=xu-kpp_qa^odAG{QCCe zhPBn^KO@VJK7aNDkks7RHPefkueP|XXE>iT-Gj-kYgv~v4x9$UWTTm;jbTO~noC@s zT(HE`3?z~-R-T`68cjHOXLRV@0TsBZp93JLDvFv&YR&q{%u+;*A+!85}<%=*O(Sy z*MYoJN-QPFcR3K-T*(we`aU?|#gl_mJG=?Y;6GhBypJZ%!+-z)002ovPDHLkV1hkO B7dHR^ delta 563 zcmV-30?hr`1lRW9$A2@9`m$(O@UWKEwg*p{(jmgj?grjO5D#7o>Jr_O4ndc7 z?OD2wu#8bKQyzwCl&$P0Y~RGH_JVr0S*FPDq}dVMsEX@0j=D~qhCZS;x-;X zZdhGu{WG%k=zrq?07=b_9W%X<`)b4G9mDyeNoA9p*Ye?(ao{xIC!6&&V+=F;&}`!J zdHdR@yA{#x?e?tz|>gN@4HRjscpXsTuoKsRu#7P zobXGS^tv^z7`u*LeObR{Abl|(xV8u&%8y;BRS0y2TRN3es*TN)K?_Y%Cj_yL<=mc6|A!Db@nm*tn>T(C{XbneypQwTJBI)O002ovPDHLkV1ns6 B6pa7? diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_21.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_21.png index 894c0119c52207c6675c253249c4ae281c31f4af..e832983f3270569af6d51037daede48fcb9a0245 100644 GIT binary patch delta 610 zcmV-o0-gQ*1p5S#B!5ClL_t(|oQ;z)XcR#dK;QhmGv`IfrHB|oazavQQrKxwxGiF- zrZVYrrIm;XvC6F`V5!(jNWjKIG?fUVJ75Y6Q4kTE#MMFrVqA>jHs0QTi`~78sr)bu z^Y;CjKl>Q~DEkdw1CFcuiGOO`Nf~8VI>5ygm>igg zS*n+V=?u6Ta8@!<&E~SN`l+qyxdQa&6_vVWq(+<>qj`anjSuV!0mkx$$-s2yvj+m^ zK?k@g=o)E?vjPMrD^;Lf-)q>;s*+wsHT`3%Aqez#{SpXlcY#d}uLD*=;GhMp@j%m4 z#wK&&&rJ|`e}5_mJDG7f2k%la-Iwn=VE~wV-KUAFuhF2U#?@a~P+pCAP{2HXcFU^) zxNk$_33_4k%CbVW-7{PT!90o%Y*;YY4(+ReVCsRhlR)K8-N6OSR6}huaGLX)%vwO6 zsD8UV6rY||J!uh~r+ndi;M`@ELX`sT8cSQ}VdQ$h)_*~8mI-YHWevOpK-Q9I&{s{? z!rEeh;LIsu6;Bg_6Ce~l0JT{kgcdO^tn!f%5Q>3DP*1!h#DLJs8>ZE?l|}vup|uzM zhjGM^ZRh$Rw44d=EWj~tTPRSJ`ShiHy>WjMptz=t`~Fb(%5 zW#BhJ30syyDDL;zuwWL@GbLc4>Fc_x>T`{o5yEz%!VJJsuN{HVE5kc4)EKwFvKa!D w7l9m>igg zS*n|ZnGDo2;4EjLlHE(5^r@|MT?_Q(9rbqGNR2o%#_|Sjc70$+SYSMVFd3NXymrBY zdC&p16wK_Z;Vc7z$y&A0uJ1OwTUSm$MM`%}3c*5O*Y5=jTV3F%hT8!vU}3)x_{IgL ztBg58~CR3kA&MXSduc zK<#a4T#L?aTv`%T+C3u`u$V{DzI7kWl>>XqU@`T;*-oH*r|wV#%ydJ3GjN(Wl+5{n zeIk9kI2@mxlaBjXoTq%@d*Iwah3@E2ucdv1i-E)(U2!4 zt6_B^z~an{u!5_E;22nnE`a=O4we=%Eqw8j^hgy0MNm)NB*cKFl@Cmnbd*K@2}^4? z_z&ZdAuCt&z|wLi-O~U^xa~uMqP>y+DPOPMp8_bZiV4q~Pu6HGgh1(swCPF7Pw8HW zrDfoEc3gaxz*5}nvhIVqiB9zbgH2CslJs10Gs3b}C^HLi*lkB(>9Zr-FJw$@pu7Tj8u{=QwF9NZhqz8D64V~$GjLO0Nu6)tk1#zhXqtgua`9bgE5r2dXs1?r<`n{ml2K;BAx<;She^YZNd z3x%su7RDyJ^4EN0y+qf|$XJlochhSmSuIsbDiD{JQUDOYce4PJ_)=n}YHatzIj$hm z4K7T<6lz?2WO0rK1tuQA0f5~AmjDI(?4gYXKmiAheEtyV0tC?gxYV@01xS!{Mmp|V z0<2G!U)}?7qYCf(9kNz6wtIr)k`Hc{$T~@uNUl+_HPzg)2_OZP-65bZB61l(hbR|j pz;Tl71z-s2o#w$~0LYQ7;SVEm5Su&q4SE0o002ovPDHLkV1gDB>s$Z; delta 500 zcmVr7fn^g3?vyf@YoU+DZOTN}qO;ryYwq>fGl)QhXVNX6vmOmZlwbAnx z&)mQ_Hf?O$SWm(P3Oo@F-AKu3=Xl0h$mmA5{OrW;KIiI%m3V%ovHpWk4-~+MBat%z zG&*R19V6%H@y^Ycv;SncKKte4PI+puZ-i?V1Rf$c7&EqC!X$iYvk*aA!X(Cw?MLJW zX;BtqZgQZ;A`2B3V+~eY`4>e29$TW>f1JU&z4l9HXTI%}rv~?jvM+`K-`FD+W4-oM zLP9t2;2Z0~m(UF~W`#=}sBwt{F)M6SX$Kg80;#`cR)PBH*`{6c5|B3%U-^D3^SnHF z|3cwvl!dX0uKYFMSTE6aGcp!r_3g|$Nmff$k_yD7-Eif@}(@+rp?mbIRht?5W7dHb#MQ1jr@tCQCA%y{@Svnz9wi>BY z+#i5oVL_CzLXnYO8h<5;8JIcU@b2Ed`@Z+x0spZP&m}~x#G4KEScTS^ZPFEsT0K4G zS-}G?P5Co1*Hnn%NKLUyCF#{u;iYoE(Rw?~iBak^?&_{1l_ixWl}X+biacW@ahjxi ziT$)zPm9wP`jJ4V$JLxY>nk!q?qBsn*Fe;809LxE6T^_M}>eue%lrE`|J+GXpMhvCE}UxF4tMFOdNF zLK0#BWenP8^PDQ>FYVUBM(?J5KMy!kO;DsVnGN1KT2@!J+fNC*o1x< zylg$Vwe)!TEP%OugM$e6>J}Fq@OhcTXq~>*xW)oMD>@UzGldicZC?ZJ6A{sgjYR^V rZ1E_1@~Fst240kzZ2+JvH6GwMB(nc=6~SDD00000NkvXXu0mjfE&=X0 delta 501 zcmV-Eik`t(@+rp?rh2J&^lu4;$~o|=*;Fc9y3)iq%fc~ODBZNRwGr4 z`v)LcSP&(w{E(4d8h=%OFfenv;oZG^-*@l31O8(pnMv?mi9a10a}|1f8l=NZdM!2K z8J4~jC;S=DfHDt;YND%Tf?hvmKbZ~8=DR_bhsiIvYk01vY)#pkvdCXXL8ffTrwO{Z zaFEh#DL!4Lp9^Srr4knEQMEq&{6lto4B*X}WDx)dy~#E*I)7jMd34gdcXDC*jU9B9gf9n;zfH1!WVX2ODv-4#Xco!e`p%i0>C_ZHTjAWlg312THv+=B5k zeARq#Yx(iYSqN+8hJ-Qg)osbUkn@s6@j894N>v!Y$~t4lGle9WcCLXAh=}OK!4g4E rwq+PUc~p>|053`+4gk=Vs`T*(B(nc=P>Ay*1la_TB!3`DL_t(|oNbdqNK{c2hQE8e&WtHIgG!TWJ)@#UVzh`bK__Yv z$e;v8MYxMv*{Y>JgG`Kw+y*g=HtGbqv7p7gB8;pU$`%oUQxUibw4!E2$J1ioo2PF) zn|JU3&i|crF83;7b7+F$_{(bmTKwn|5h3Mgw2O$CI-mMTZGQ#TMdgLwx@?7Dn9tVC z+W^#y0*y0p(f!$~3PAevL|bXEvJ$o-U3P~L?G&$tCULbo~`C@(913jC_%AiNGq2)1UsQCehD1cN&uQ`@Sw5M z`?9@DZ#lY37N=&DWz>J*`ngg{{Zi%WblpN`uy`}?3z4Xm7*q!3R{0NM$hlLQmC=v@ O00001s(1lk0UB!3}EL_t(|oNbdqNEBfd$A90~=kA(-F#+C@Z6o$vZcZGUB|i^_xE`q&D>FrTfN zw*jaZ1sZ4IqWiH`6@c{TiMG^U^I z)|$Tn(224dF|?|_J6`v_+V)LVMkK%P_?2o0v`VS;?%Arp$!GUJgjPV*wBbf)^@xnF zB7m~b8!n~I-hYJk^?C@PJ8C!w9QB*^O=|&&7{+wdRQ$@&V*o6z>4;lTGf$3Td6Hb> zZr`c5wG>=wxzctKk)_q(Ott1sa%^TJl|F4wHURXCh%6Ni+b?%Sdp2fxLBEJdz8ExB znun9GZ?{cU_uB3;q!yi#UAf42$0P2Up16rkUbO?J^?wT@BKh^QX>;lE-Y_>?)$)7z zxO=k}4KlvWk%9D3sr{Fl+?iMLoi8dXRYM{o@~@&&3>TVmv3JQ~pIC}~TpN6_p_lPL z#Zbg{m%w1y51d7nXXpjdvc$!~K!%(MN`BY@V!As(e6ltZbw6FgY%2{Sw-PYTHF&16 z(tg?Ar8+lVC5cnBNiym$xPGpbQomHWJ6*Ss87$t+`$QyaB?gs2xqt3IVaT~t`x$B; P00000NkvXXu0mjfOEw_U diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_4.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_4.png index 9b2016bba7b0a78dfccf45188937d04375a792f8..87b339fcfad498abf34a7ef2417ae2bf5a2f7876 100644 GIT binary patch delta 565 zcmV-50?Pf~1l|OYG=Fn)Vy-391Omo3(yO94C_<*vKx06MLI{;Pfq*okL7!hen3#Frl7P%>|43D5*k zcK?Z0OajX1PO&{{VbWZBGK_?9F?TThTBOO1BH^P{^0n;f&sxN6>_x zG(>NfSU!loS@_$V&Wj;VH%eiD`+6xV~C>J`T(Q!Zn;nIrOB0c-W6*r-?<2`=%S&oGH}-J( z)$Nmy_RatR6eLPp=JnCKRND%{164rphi;N&$AboR2YO+o9(|iLM9UGH+JC3rg$D?A&p#!WesuO|2Etuo zN8u=d^FUk!0DK#e^yAf7qL$~A?ztf`pJ=~)*J^l4i>;|6LdM-5C+S6!WT)anySW4; zjNU1(L-h+ou3)#kH+mci{Ly=aS$v(gSpfpDB(7P0hXn*Qn`#0;h>&TLv??G;Hd)|U zSCDRQ!!F;FCSW_%aIIb`RN2(F>?vAA&lF8)ZM)+i30L44Gkq0Y00000NkvXXu0mjf DzI_XW delta 565 zcmV-50?Pf~1l|OYG=FAG%4BT@M=49q5ITM*MBwP}+{rQhz_~E<8Y_cm64`^rO2+H4yCy zI}%3$oCh=&0Pt-<(vMdY$$EiLdgrFVe6sWMUAyTeEw!hPC_;04oTL{?lHIBcZQIWx zU<9YQ4%sgZxq{vD-Uv97_@f7eS$v(gSs??vwY&z4N69eam=30L44$HTK!00000NkvXXu0mjf DTe%A1 diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_43.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_43.png index c2f6c3fc16dcef1e3567979a313766377844b10e..600c1d7736ef3e7d576302a6dcee33f9381b3780 100644 GIT binary patch delta 523 zcmV+m0`&c@1g!*+Eq~8z6G0Tmzw>q~X`*%mf>8=db11D?dleCqARZJc_74zp5)U2< zf;Zb$L`y(g>cNAT9F?vfJOrdd8>Aj=K`|GRLL+!jK#i3&`#j9-&Sc$p*_rQr-{;Mb zeS$F@gm`S3;Q{~_0#k&>;x8qf2SoV&BsXn3)3u6>gYPqtolT zTT5>a^n#yj7cb?jxYv^axKC(TR^~779zCKAg9v((nSYssPQov>GgoT>$f6F!Qnyovv#E1LghZmlv_~3Kie~}-gm&nfdBvi N07*qoL>nWHBpy5z z1aG#hh%EuJ=)r@R9xYuxcnC;^Hb_0#f?_Trg+}n6fEp`l_Ia3@-O0M|vb*1W@Aqcr z?Guc_AjD%kdR+hj;wVbY%vg&Yv&_tLB%;0&Nl@ww6O>#wL4UZqbNkA3TcGz}OKn@I zX2ko zX?oTH{Abye2Y=I$KLPx2>oW+2ULY}{tx}O9D4QGGn3%5HH;Uz>v3;wE#JHG$Z1*AD zX@;4(&;K<_;^T**-*cNUzNo5@cyMv}5wG+j#|>W=D~0cO-8l3PGjk9@g=%W zYw69QUhs3R;-!2Q_qq}Q_Xw@ZlljYg$B!vPKZK4lGk&Hw-a N07*qoL~41wo-zW2ssXwIUw8CG{XC zcu=I^%^dVr!T%u9R!CJ)@gUynkAsI5JSoMBRp`NsR`B27SK3{kg z2XEf}$o&EU4A284UOxGGPXPcZW-5T&6N?o#JgAu8wCWs$#I5upZMV|OuUFt^@=gc_ z%lz6|gL~)jnGozE|F9G@9U}w2j&(W?2uw*_DoljnG$8VO;5tH=u9K`cC6)@~RRBN( zKqeKLiZaQ+!GC|_3-`zuRjUAy0RVr8!tv3~=v_f#vWhT16rm63dOUkxx4+ahA3qT05C?9T}nKit4Ilw+pE@Np@Sp{hlqQ>0{Va0O(6hUVodrxL+;q499QvO!tx`yPG}J zec|CL+xByqS|8b=aQZ`8EO<5haRZG#FvOrsF z<$&J6e~XqvENjzIp~-y>a%L+xtQ2H5_-K|=12s}_d?$l%?KLG$k^Z>z&M?dap007l&1#o*}wakVG9rK&foqZ5oPwzK&%dPxc1#TwqgkZSL zFP&Amw+@^P!8Y(|^8l4}R9Q3IGWJ_**oNjBiBu8iMtQGv*8cO5>=x)BMBB)cu;e#@59^fBsb0Q3b@m*>yz(SM6u!}eP})14&A?ncjaSNQQX zZofG_vJfBQyN|Nc*Z!wVrRVYftm&a}0WSXk$CV^VB|$oG%bKXIBoxi*1ZW$r44Do5 zyO>ZYvyFOO8FJTvoZZUxL<+J7e6UMtfF7$i-j}-_-?J%BCOdacw39K4P5yVjD%PDHLkV1hTm`WpZM diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_45.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_45.png index 221dc2e2d6a2e5b441a32ef72fe2d38c43388bd8..e6da05bd15a40ac27ca56d376691640cb6b34a89 100644 GIT binary patch delta 351 zcmV-l0igc*0{Q}wB!59kL_t(|oRyPLN&_(zhhH)o8UJv#i~U3!GM zffYP}7Z7>?J%AuMUAXrE!pso{gxaC){9GiNWS(uMZe z#Q*?k?2JADsE(`pB32cZOJPH>f7Njzru8WRyo z*cbu;O|4=80IFlFzKBglWg)7No1fhZJY-D(F&H<%A?7hD2Y+0t^`#5sYaV?(IVoQ1 zJ)TGOT!Ula8+VT4gy?{79dJP;sPBMlA`x|+8VP`8;V4of3VjR2jEDmHcj|Qw2>?GO zQz*x+b|ow@(`PAiry=kCtI)4*Q-mCh7!X_`mgZ8~_g4T==C#7~Rn*`}+t1tkIMYYA z+aGHJ-Io}*D_0~3J_q}eKI>oj^~My7J_9SoKshnMGaFb;dF!zOr`3j;1y;jqE3-DY w^D3ohQaVZceqXMa*{4wiVejTasvtCqU#{w8-@v~SY>4;+f(wGAk+l>oGTuQd zNh4TW?HxFR7myneasg{;AqY+iu}xtm!fs`o0VQtO?7S8;bLPx((XW{~&w0Q1`+;Lb zH!N}F?e7%8s*Qa~;lLLvh zzyrYL&BY9pW{@OSl75%WaEu|fR+3hwuVMz0w30Vfz3ga(_TM{=z~H}%s`y4lg2Q4) z9xNFmIP{>;BY!j=)CvdvuU~SW>@NNIJ1=QtcyUna8@8S8Y|-G{zSy;b%7knzB2l29whY>^CVzoYJ&@(k?v8aqY1^UwnF1UM`E%T9J&# fPhVS?jB3Rn%^ZmwaV&I?00000NkvXXu0mjf(>2sM delta 436 zcmV;l0ZabR1I`1GB!87jL_t(|oQ0FUY7|izhM#lx>@w=cY)~|U;6gys$XW^(8SlVK zYy@koy@QP41>^<Ri3@CBKX6H>YGiT18Eb(h*=9%~Vd*L%; zIV^FEo7W+LRTDds#J5HRQ+yN6}1afhh5z^1TE#uK!0YCErEMF9O44-!d*QJ zf&F=z9(@f`TGQ6vla!GMYtkQm3>5d_E^hI;! zTHrb0ytgAvnn99SN%~hX!qJD+T1lE0zKiKd(p1}7!hsZ;Ver5^pTJ}t_ARbzcJJ=iU-X8B2_NP7J@ epRG%JmEs!B9EluQAmo1l0000^df^89^{YAe%g*&b5XS2!F{xNmf&1GE>DC+{5QGe0_+geTu9q>H7+joKe z@_X|A)JX}_VD@yvya5lSYaKg^hp@$K2ke32&;c*NOddNPD@m)hqey|c*8;NuB5Q#o z;NGG>m}8a+>_%3Seiasa;}l-q0uW-sat=e4w=!+no+Rb+Mri*%QxEk2tEj4OQbY_0 zFmVGy1{8_?(SLxPx9E5mO=JR^mL5&&+QLjtg!OH#3Bjsf6_B&oQvRKV$@ z0ARP=XB#@Tanc1_Z#)nl(5Fw?mq{$yd-C*McODu?%^b@0GNIQ2!2LaKGDt1hOJ#QRP$ktBE6RsCRg6}5j%6Lxo7A4JOgKxUHmz<+_(bDRerx~qFWu%CX< zzP|NRqAXh6nXzoab?K*0J;e>!=cxzog5lT$kHE}sc{MhYHd{}T0m+~PW(CC70*`^c z*4rg!ox)LUCFxgbVKB|$$t3^|3zm;CR`pk=YdesnLV<<$-<}3w_+Lfcb(bP$M1)CN z;22S+_FD@Io`0j$(V|mm4)4w{TJV4jR!RZ5WCQ z>O0>tsZG*8*nbuPcb_3cs<}*R$zM`rFZzCH8n-@F=Z};@=-9Pcb+)hY`{zKhJq|$O z0#LpQfa+ayQL|!;Kta>?X5-J~tOC;}B@a`Y(bvsVjw|aLhnwuntMck1KdTjSGCp~2 cU7Xa4zv7vPi(rxwUH||907*qoM6N<$f+N7r)c^nh diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_48.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_48.png index 72f25574624a9d300c00b6b956dac97f8faa8b51..247bf9844f6491ba205b5285a15fba288684175b 100644 GIT binary patch delta 479 zcmV<50U-W`1cd~UFn>@KhQE87c2ZOtVL+vWwr-q_c4=2O4uU>{I|W~$xN>I(T#IjD zAE1H{Aeb&^qvOtn*oqHeR2VC5^SemWv~l#`B=_S#|2bUlabjCWRdM+{1Td8vND`yc z(UT;vRi?gjr-jUPPd#M3&TLC7z24}u2abIM2Y^o>T)4}44W^Q&CkBc# zFav_R0RmdbE(Uxva4v>!zsMeQKnFtaswDkNJ@|1sfx8DGfQP}yHn20f1AsGF-h6_4 z{#oUX4P)3#@_(ZNK?GiB<4&7^g&Uv&xTui<4~UvDOIU+t`~eNWWL+^}3e4kjbjwC> zOHwKWMI%Ud@2|T^Axw{gvh5-8y*poLWU4PDDgA9&5Rp#@tQent1i%GJQu@vCx@@V) z=w*(nW%Z4w*Fa4o)p zeSio)fMB|ujgC7PVj@0(QDLmK&2f>WY2xTzB_HQM=W@B%h80IRAdlEkc1 zj3mkFRj#khX{L5<%Ce`&{ui{A)`83@sDU$@PqDx)U?+m>&VQ8~5Mt&5TpZJSxte?p zEVL&H+#{Y{GGLww{_v4_C-;bP;FS9>W**>8*W0*dZ{HR0Ju09=qHW#25$u)Z;+ z$0%3CHh~vlpWw9VmFHYV*%~p%_xKOy>;P#<)TrXF6e*oRQ Vv0{Do{09I4002ovPDHLkV1n-h=??$^ diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_49.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_49.png index 9a9bb9b45a0c3dca0fb9848366a3c879289dc230..a8a57bee60bacdfc2a4a8a7a1521b734635ce61a 100644 GIT binary patch delta 484 zcmVoVQ~)w z`YE_E_GOm*ObvLML+36*9vt3G7~;|a3|zV;{m~vnj1XdyThc#VyLRjo zaLEmZka)`@Nux7|@VM5~@HOzN1~v-4(ta20000uY85-Gs&>*w{cJ7^DofLtTz>8U0Z)rQP=B)%_rO&>*~fOkLtEWL zfJqFdK)%kSpRoWha~R#l%e}*!5eX)q!qmiDs(*Bk1i?Z`bW3%qM*=G<$VqR5VY_qf z6EM*Y5{O*NnW|>9jv@zwk<>fHq<}91XbRqWBTQiL5sWuPRrO*e5QM+LE_?tB30p3) zFRH2w6_`2S$$z?IYR({h8oQ$aas)i?^whovUUk4`1txpn0^U^E0S8`^LA`};sK z+a7>Ltrf4Hz`q9rg{f<{*GvsQ)L^%n%F}@hb@p=73}p@MB+HNAuBx(VT>Kz>_D-xH b)CKt`MD}5RAP4c>w?v{Ya1`GQMM!Bz3P( zeJEQ&Ra4whTVMN+pix-s`k8umXWbJP#(Nfd{WpLe6hLDptM?|&jWn=F8U~Q{vZctd z)h>j`h8s0#EUAG9@pD&K(O>)$-VcStar0^J$su4ThO7b<%E_B2j=z740OJs|znxJc zt4+(VRLX!M6AEurOOF9Sm#I*mejR_`^%59!6z}LXNmiQyr~!>r1LfHJl;uuEqiTHmGj|uTTln+27!z5X6dC;)q(D-<AwAf5UaW06byXDRYm@s##b@pIUwP0R zNwR*)g^JDOg2MXkj^Y*4wSX{nvVAWuR1ze~&DQ^a+^FO9gppi;gGYlYU#)=fXd)nd zHtki1>?hXx73p-ex?E_?eqRyoKy|`SX}DHu7v6huQ?-X eCNIl1uiL-(M#Off_Vu^`0000O%Rf)pa2>(S-m%DZlr-d(lCImmn}tx zt#%h@ZQP)^=Far}Q>1Q>^y{q2kr zS#4T=rBVhAnNWC}T6zosDi0{hAUmm#^#MRP$re`?ww;~L0004qHR40JlVq+EY+ozf zTX}Qi!2O=-2mruP$W-!+yURui0AMPGTY4(4V=HG&XFeWulq5@=0ccb-3Ts_M-{+4w zC#W>IT*JZhUZz5M`gMPN*Gpi`QM^y5NwV4uKn-Y|8Ysu!r!03W8dc-dpSin$x+qT;i5`>#A` zjwD&X)zl&@Amcr+0Z zKAX-wLiQDF{fcxtT3s$QX5X)fcAz?8r!-uv{WQ=JS9l>J@=Z*4H{Dw*=dOh64X-&P fY9=qsHLu;j_eR8at-OO_00000NkvXXu0mjfxxwas diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_50.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_50.png index 2b05c3aa8ffa6ff104761f7979186ad9904c427e..37cd3d893856061af7df97346b76aca6364a24bc 100644 GIT binary patch delta 461 zcmV;;0W$vS1Lp&fB!8|+L_t(|oQ;#gYSlm(g}<4}y+*O#C@xwQjo_ji>9)H@pTMO% z>l^q6M(6|d1;jqUb#Fm16@)H*0O1DLE+U0`Z=0LrVv=SI5&Sn3KF*x~UlDooPQ%+=3fCw?O6t-3P;V zpx6bI-DOUc0z~OT(&F3#FDsZ`Py)%sLX*dkm`4Q=TMIgQ3|mpwTFr4xVV^IO^t)k> z#X-R{NxE$Mq<>RMx>TP-qeHf%Q$I)n$h)>~vjA}SBxx;+xt;--q}x(2xCUii0vK-^ zOG#kbRuY0$1}_4zJUy*C(+Hr>Olg*ZqRASgtu2?$ww0AU)}E?NR{Ch6(tqPo*%(}HhP#pBicU)5i~5r4zd zN8WAU0$6p}lO#TMiXBOcCY|eNGh}L4riC3YJ4j42Fl9izDSu$}xFbw*1otm8oJvn* zKOt6*%uWWg8#{BXq9h6mJd3I)Az_b~>DLcI4p+Ft%{1^>moBs)DDJ{-URogafgXWj zJ5cO`NgpsHngT@Axup4}1zwjhxuO7)k%c;oAu&&LAhs5Cx&@n2+E~qSjA5TMN%~zg z!{Q+4g(O|qU4PQCBwee^p}|MCgRg!t1t4q7x{VybJ(Q%CEM_eQFiCr)nsW<^ssJ$F zG?tREl^#h*EK_(D5R3EkvNeqWs?-!_5h&`6-1%Tv7C_~CHui#*H~sj7JHDw)PyD)x z(dF3iOZk7laG3D9O!jYu?GvLuv6cq61^9l_Q(SI03P{(qaMf?6J!sZ@&49UPJfppK zDi8a2Y0BEub|~8%lX>ywU0p58Z;c{OrqAEoC{FyR;14J>l@-9fIiLUl002ovPDHLk FV1mV9)KmZf diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_51.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_51.png index 8eb1fb45bea189e2826fd3d9add85687b0be56c8..0ece627b4d7af0526ce8203eaf59afe83dab97fd 100644 GIT binary patch delta 430 zcmV;f0a5bOwJr59YPC4W>AcS4r+49gcJMEw#)}@-CzyH6gx=W0Qp>$*19*+Rj+SoHQ zW7slw&CHTPtNKkI6V*zZ(8q0`2Mjz&83Bg{^tQlR2?~;ahkvyjkIAlw5lR9Xxm;LL z!e}8Uf1PcSMEV!g{MXmW))nr2GmoykF}tyYh_M38e2jp1AnYiRhYCM{_*}x^R>nYI6PWucq>?SVwX1E|O!hs1C}{oC1&vD zCo*Yln^x}3%;wXD=&O*b1@JmN>h$U6HbN?2_zM9Db%}qPp@{0?-tDEf)vIPHn>q&9#V6(Qd^Rb6*NlFe?Vo7UPqP5r Y122hwrjnFes{jB107*qoM6N<$g8K8(j{pDw delta 430 zcmV;f0a5jLye2Oo zMAk*4W%E`?(+yht&4p# zGtN53o|%~+b*i7_Hc@S)4ZYp=e!wVz)EV%$g26U8t3g4E&wudrDqyk~V1nXdOeyD9 z)i7Df$uDQy_)PzNUVi_W*}BS|ZkE|EkIk;^Fk?J{HC|=Fa}ahFC}V{$LCR+t;|Mrg zQ}7jljw_%TDDb9+(X~v0p?X+`ITSKpb!!(pu;~v1fGBAB8+Mx#z@uO^aL94&uq%CF zW_Dw}nd<$fet#S*_>ho^+n55lEi<#m6nR(zND*C?#U%iXsxMk(fCLG=&H$Ue2$C~6 z`G(9|+qRV(GqdGR$UND(bu z0I>&HdQ#yONGUl0QmhmdR7R1a-RydY;@PozTBJ;4`}05l%shL<_&1a=ithFZK&^{C zGc!h=V%N;f4LjE_vdmO#X+xKnT?&RdNYw*xONh52vI-O=`F{$}ZgNa^a~PvINXg{f z$_mE!cJeE-ZCua)e42g#)GHg6(Z{WBjXGXRHzQNtl;e!{Nx z*vxEZ!I|pAPJjK(cksR;<7l%0h@P97)uzZw1|W&As?4u=4CTD+nGVbnlCa7_A562x zqXCo4%St9~Ss+4+cxGm{m@2>`r+DPw*9u_OTK>d;RIlLkbuiqYgiZfkJ?y7j4t!sd z|6idYh))8rvL1k+#{swvJ!UP4nhm_m1BHzI)jgGld^l*pUb~e)f)vsQT(nEs05`lU pznw1Tld4S_BypRM&xp4 zWd-9qJNcE^7Ov-iHqF0(>ZMJ}8gS&0d!OXS*pP63Wm2*00VWf@KeZSbl0t&zkp4*=K(}P^WU&t=Ku}`qlN=cLWf=H zshQc#qBGU|oqzgCsNj7=#>qwjkUTRpt4)!W96+*=RheJ%5XyPkGaZ;^WO0^PeK5@% zj|NOGE-IO{X@LYO(wUjrVyXZOPw^o9uNA3Pgmb-pk_;b*9TEDb4A0s~{gRsiN% znD(%S(O+=@Vxe(M$Rr1_7|_`Z*s*WDlL1ql!QOh@nolt#Q1VVyb*-VX)Pp-7c_Riv z@i_;;_XX2ryMF{ohN`NK8f3EokgQ8t%>h^)M5aLjh!ZClSFHm_yQG(@s?E}adlf?u z7T#l-^T7Js?XztAqyE1?b{+V>#NDniF-VUiu(=h1KSvQ*#2%M1Xj}`Db_3U^aqE*7 zJnA;A^uUh0t*qmeuF9-S$=j6Cy!vs{tS;)`tzwYnZyP=tJIGqaKZyaBp)5c|^8f$< M07*qoM6N<$f|<<4I{*Lx delta 418 zcmV;T0bTym1JVPKI)8&Gf&{?@MVgS7?u-Tu8e51NO_G&d4QuQReVM2{1YoqSp{gn;tzu7A)ec(MU-FQt zSxQsp;cFiSk(M3|97qW&dkzD9FCgBAzD`CMkmNVKxOVK?w}0=kAkIQhb8|Y+&W{=2 zd9EGm#Uk&3=c?EGt#j=LJmqr-yar*X13rLcFFPJnRh`ZZkog%3Ac@-+$$_4+U<&~A zrk(a{34_1l0K`J&=8#AVU@@SRcks&YdnW@XyMmqNur?oKh#=>as_IhPV6g{}yyUgj zpW!G4z~_Q-w11TYM157&N)57}0Z7ucET#Y~z67SN0uU!oZtkK32iwHAs;br8gC_-j z4`$wDp7PB4)9P8a{Gta z4K|w%s~6Y~o2@KYO*?5?(z<0ZEzSuwINSfM7J{ObuYtClw{mu8CbI;*kC+cA|V_Yr= z0H!i_C5gjQu_H--ugv<%txIYPmxrw{TLqqyI*{9mYT$-W2KW{5*iRo;fqlE|fB#sq zcoT1Ux6cTA5x9g+X{r|nyqrMm0bRJxa|0KAg{^6H4;+sST=Wat8b5yp*T2Q6NE%Cu zXO$`wAZQuT2QW7V+V=mDM-T$|CP^1d12hKj4*)&}>0YXjRA1w&vfD9+(}DQs&h zNlO_p2gHz7H|R|Y$-#f30G!VuJw5{9uK`DAaFOj<6hpo(Nm~A1cVXUz0C%!|Vt5}8 z>k8ND*FhRLbAXFnG$&gbfadq3nu7PI#qG$gcdD)ZP60R)0cyfHOOy|kjO3@w;!o9cVw}X}9AAYBu U^V4k^ApigX07*qoM6N<$f~iu+KmY&$ delta 428 zcmV;d0aO0{1OEe%Bmu^eB|U$dJb>UpBu(ukpNsiF=4@u}Z@%xGIp^N%L_LgVjLX*n zfT@gKN#d|n>`0Q|E3yp~iP8KLt)Tc1*Gphq zGf7&>fCV6iWZj@Q3B-Q~%K~t|faLfHfWHPDoxw%AW?2mRwj^owd)g(p319(EBoH)i zZoRm2S;PSAF?3dsLT$9~DI3@KS#r=YX92~KGg#0Bk81!)5CULOL$SYfZO3iLR&xYXHhs{9p=@a~S9Y z#0n_}1RyrBt$x5GmcI{xWsXe(n4r629fEYg5x8zc2Z{}|MfpM-{!o9nbZ3u0lL8Ql zhzP6orI}7^d$YbsRYXKrLOXRw8=Fcv#st70L&n)=Oy{aL00000NkvXXu0mjfSi6cq delta 302 zcmV+}0nz@{1l0tPBmo?eC0znLGm(V1f6rqi12YryU@r8)SYWQrsb<9k9Rufy^SjOi z<$wvxH_rK#^e24IZ=Kb}HDoE|ZTJ{lFd(;=VYBH<<#*cm@#zD!k8IrI62JnSNFZq3 z+wX0P3!4*&oF07*qoM6N<$f|Xs9 AeEQD7pO{wP(VU#sB0^s#sdR8 z3u7K3Vy?q8i7(q4?LpK&A#1w}CF*PnAn#73@gOm8Cs`w}S)4BigIoH2Y zRwZ0kTt0RIL`$_*Rq2%#JF2RFvvhr9t}>OGSxByK`+v~V1b^QJ-^~6B@Q(D;2N&pw zy*n;gv*$M+x~4hD(SaTUW-+U=MNwXWDuCT7XW4u_<$nFGAb|ytt+5ZS z6QTap0@NRQN4sH>z?Y7O0ypw&a#WMt*ARQCWWuVesnm?{$~9MjOsuBPt?$p TJ#|I^015yANkvXXu0mjfXBYH4 delta 528 zcmV+r0`L8*1gQj&B!BQpL_t(|oPCqAZqrZ{hQE7!Nuo4rT%alyLInx2p{}ij8V?NY zER1=Ch`A~k@c?~<<^ce8U<5fx4Bc3e5K|lm#MHQeXc8wr3{L8ss^XvQPv`!}=Uo3r zS(b2Fz4EaGAX=)Ws!F%4*j81w&C>Oaxyn>#W+Az{?f=1+CVyBTd^3AXAUM=dAAF!A zcJKIL#hu-F=$qyojeq)JhctM{>x*~O&sBf;6^X*S2c(ySct=FfRdWIMfa?6CjevRO zU~LCwR19~mmB5ozYKv)wW4N1KzF_u=1TvnX?G;d`f`HWy91Q_pC;|^i zpqKT4yzK-&zl`AHtq8CnU>v}RMjN^an8mEd6-9XgssL`goMrv-l>7C!f`kr0HpUjV zj)nSD2T*?$jBD42Cl-5;%A_)}9fGsf-Ss3SWo)_+Xa(&H6DI)qnm^)X@FO S@QMHc00{s|MNUMnLSTZw2KF%k diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_57.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_57.png index c9af24f46d9fe4b975a19f1748b6b5f66960e9eb..753aa478e937927049d61a757cfa341f2099533d 100644 GIT binary patch delta 552 zcmV+@0@wY@1j+=EEq^_4(@+$KpL1fhMu2Rf6&C7>{s8^}q7y3}8LH-X zKw>NZfQXe;>VVV<#Y2ZOAt4r6l60sTkZKT!q=|hP5+^snne0dJJ$}#YbH$i0vHd=56-*q zS8n@F3tsiU`rs~EfzyR-_k6JOCbnD>CD1*msK?YCLsDFOiTfYBWdw*&-^a6IiJ z;KBfmD4 zHH+E-D>T3X#5BzgSWyrMM4Ph!?wNuCoLiq?ho!Z&G-g}ZdI2o%m(y0OQKc8293Rn8 z9I*VlW!9Zp?JKGd;Bp&ge7#cbEcN5p9^l9gBeac*@1G2=t4xt;e< q`_`;MWFe+uTwUAI@Eg^{k-;BvVvyFz*3vW}w~`wclo$rw9SW14gfCZV3n-(YV`3 zz=aoNbPG^TAsLd;&Ot;I+Czq5Aqu^5+UB6|J9b0K0_TC%QLPuIo*!K~va{nUljlw) znF5-LpTpIpO@HKpPskRj=6wnR=1lWShZq7-wY<`Y;4*-0!zu7)A3nY;J*so(s)LIa z*T|{|tWXCBkkBwYU`0V35O2-`xMvCmaBh8m9hTObWns2;tslbTe%WoM5(oY0OfI-0GHb^`y*9lxDCJpz>HG`2kEV*0Dnk1mS3J+kBTkG!O8Pp(n)}y z8hl&BIE&`FXwSNqWlXKur=a1gKyL-Mf(GJII z43@)}08Y#3ND{qe#v@6J(`D87_P?U8vL@WW%Wi2z9Kw-3X@5bquY=DaXu|gW5U%;N zTMxscHE*ZiLwHOXedOKZ+lIAt5@w79n*q2%4KA4C^hc_Lj2OTI5R>-dlGW4Jlx@fu zwc!#Jw;MFLn1*oIQAa+2PSu;lMbMAZ4t0LqsBpW?=7Zo-x7>=KF{wN#MTtaAQD} z&ETe)nSt$%=dF??4Xaw0k+iSH6!We!E1ReOyi(7=B)$&&Z>o#a3-xy)m0XhLJ9{qq dL0))D_zMDVvx+3pcu)WU002ovPDHLkV1mug^@sof delta 486 zcmV*1b_sPB!9w+b8HFkOu&Xff1Ap9m2%I(kV%YiUFxE0+F<}KZeH1b>L3+Pv@L_&#|wG_HwMQ z!SeAXfYWkyB#GWK;*li9>9Xp3`(II4S+m@~+iq!09KxYJX@5bquY=DaXv+5e5U%;t zTMxscHE(C%LwHOXedOKZ-A1)^97c=_J9WGvk>k&>c|Jsse0462 zY0)7%y|Mjiu}e0F^`C`XKn}3x8?b=^*y0>(car%nn8TH6Hpzfr4W!VYWN^{Iy*%!w z6DS+_JxmJHjBfKMKi!xC6I)EIbS{TfF#pF!)!B>7dtWw>7-I+Xb3~FPa9@0QFd)h< z;ij3Hf$dG^qmm?zs#+J3w68^qc~_a0%~gM1sb^pkUq}5n)%nS}`n!-yF3IwpJ(v6- cFFYmu1p;ofih&^Rod5s;07*qoM6N<$f+m9VApigX diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_59.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_59.png index 258051f3c889bd7b9ebb549c80a99859e1b9220f..3d6b98dd2a6a44f364c5222083735f95d2f172fc 100644 GIT binary patch delta 664 zcmV;J0%!fM1+WE>B!72FL_t(|oNbd&NRwe4$3M@rr}-+PDN(u+9`w>bJS13~K}8_!MaeeZ_UrKOb<_Ht z9=?2^&+p&!C}DGGwnnmiyaJ%59AOa=Vr56Wh=>W4sn6B_pntlcywLxq-7RTMr7*9K zV(1%q`sLIG0N5!i)?8{{I0=9qQ)w*Cf#sWb0GLBvC!(2J8gSej zVvF9g+abZwcigOQU%$HmP>kA!@$u2CDwy$Rqq2YgS2Q3Z zE8e04kbhVVLf)H4bI3#ki{N;|?-?sXAV}1E+Q;g1z@ie*;b ztIOekf9G2Xn@zLTrb^E%09s1cDI!9wq-YfpF?NaiT>THK^MA@W{cqUalE#!f=G9RQ zz5P$WoVoxI7?tS>!`kc5-5CHR%i$*C&l;L*Zvd!Q;s)A?ZxGbDjOOagqa4BwydZwB zve{Fl3L-x=lkGn}MOvUvbL)GDm-JKtbQx63ACW>C)Bq^MnU(pk#k|N`V0gJ2C@L(k z+L4~dVE_uaKz|u@mn1}_44MNm7(Tr-Nyi&W$0~;XHO1m-&;x~_qxo=uU(wN-k7Z57 z(B?B-H6v@^HZ{36qe7a;!Ip!5H3j8pE;S}k0^r0{8cTCv>E;~(=1|v(XeJl?-Qo{% zL~ohxpkU}dZdSIh-%SD(qK;u~Y~-p6W&9p#9`+6I>3?}J4AoJHm6x9o8K>Qc+D-+4 zb4^oaJ?e^n?1|KMLrd3`iqD0km6F}LcX_rVm)zE=X*u6_y2-@CM*^$Xj?9b?ZH=Ww zvcb;vjZ8yns91_pOnWSP|?HQGd0M)vf{yN_>T@br@{fh?2^$T`u04r%0ow zyVtYOgTEQlBS*$?K_zyJUM07*qoM6N<$f>y*nApigX diff --git a/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_6.png b/assets/dolphin/external/L2_Coding_in_the_shell_128x64/frame_6.png index a552182fb0c37818693a26df5304acc2c0127a3a..119d8d3461211a94ebfb754561209fa5605ccdcd 100644 GIT binary patch delta 505 zcmV{syx7fKV> z_z(cAGT5x48MrWA1W?O-jenoqU>eCvTRv_8Vj`0LhUV7Ni-iMswoJu=%mA8Vy>fMD z&8}_(oG6;>)`_H*SUR5q_Gvft7!i>_UM1}GAfT0N@$y-8*N@!Mq7SDnWU;}aOC_cO z$Y^R)&yzcz2E)MVnyRvhc=9GRt(cjf8LlN>Pr5$MJ#DdOzi-dqG=Drtv-qIlYb{Sh{kf#mX8}82@%PCLvw5C#lnF*TPBl0whv9QUb(un zW>>cXP8`j3>qN>LSUR5u_GvfL7#5K~UM0%(AfT0N@$y-G*N^$5L9sIyve@9zr4myB zWHq(P=cye}gJR%>qN*$+p1g@fE2gGrhH3+^CtM%qp0-%C-?!&(8h@OlS^U{a*ltuf zBkGSquHK_j?=BCft7qkupO>YXO*bE{G(HCaTQlDn->q~i-z}OJ5s~t*P;@M8_S+i( z91FfRvkd@M13>bsR6o8K&}{|qxMMNxw@CruW&Sy13IAw2|DVEchix35e`L_Oy(!A= zqNr?$@I$|yAYc%(CsX{};FUsfv0}lBjdUk=&Nv2w1-oq`W@*2Oh{y*opyY83<%v>C wsg^PhR;uN>PRm>SWGJ?i8J+jkH9N?39gE$=z89WAkpKVy07*qoM6N<$f&hE)fF~_v`LJnEW+08imGx?OrLk5opP9 zo|31EiP5@%x!_>z(hRx3eW9iZoKl#|d;&n@98ea4dY*_ZM4&kUrI{EnpKt(!oCSu$ zy?n-xaD(=bKHTp3o(mWubX`2-ibx2J&qyW(WCwQa83HJmL*j`j?kv`P0Wi6D(*#BB zzK(u?MRpcSqch!Pf0yfjQK-cannCm7UCE!;7mq&99#(!iH|F&1XI+!Pr<4Vnj;yXr zTT|DVkH1%-X#);G!o9_5B8$4%?H~?ldeqi|%@;B!TrfJeh2q>)c>b1Vt|0 zd-BLw1?wG+1)6pM2D?%w06LuMxp`+6$d0!53_&a*iu}P9;*lGVTp` vEiL>_48J5HBBDwlO)K54VtK2My#W6J4eRI|00000NkvXXu0mjf*K`1! delta 557 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 eHp&4=l)+!0h4=A3`01no0000 delta 594 zcmV-Y0vmSDQIDFfx~ z1%GnycMlEjN`EqtJkWXKstaJe-k(yHs=yQrzb>RhrAoZRg}U*cuFZw!gC++mnEfJe z3xla6gAEVTXrMT-O@HzcVVYK`&qT(@09^mP@9xXkqs59Znf$BH z#fh!wRE(+vyRrY>sgX2b1=HOkUc@G|{7s@xSrVV}<9|L4AFhn9k6=SkJiSnYFe0~*wGwz`5ZK7XEqO+bGwm}cyT7- z{PxZ!D;)iyQVmcv)c@N>TtE%yLI6Oe(pA6*h&{_zfk>vT>Wiq-BDFXC+I%2(6i9$_ zBQI#G?MtCa14(X&P_Kyi&8B=vR@z#tksNM|h?GMHN%U^1oGA}YX|7V+6}n;iL`?O| gw2evwBq}%l0-uHV@j4zazyJUM07*qoM6N<$g0l)ESO5S3 diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_0.png b/assets/dolphin/external/L2_Dj_128x64/frame_0.png index 53b81c0b73b45d7802a70989a73860681f0d508f..18a5e83f6b6fae516c2c1187c55419256e5bf953 100644 GIT binary patch delta 571 zcmV-B0>u5-1k?nOB!3%8L_t(|oYjxNYZGA{ho8G#nqbpjs6&gS-hqXV4Z3u&HeH;g zqbS(=qjVMr1yRg_f^LF?;M8u89b6P`8xf3)v`z`O^)5XysX_B9l_u@wUWeS-od1FE z^uEvgd_V8!h5vrZLi8LX8wDE4V5bJaIvq6zjz5VSM?aN9V1EMOC(nhTlRiSs3cz}h zIuaTV068c`LX+VQTF`u0gv|g@`s#b>?h(cJu0)Ed&3+ke>Wlr(TZGZ^pJ`Y;1nOWS z9WmlUn2`)c_C`aMED^&`I_jaJfuzYH=mF_yT_4eaF|XYzp{U>i#Li?pAh0gWVyy%I z&W`^EApGO1lz;n?V!-`wpcFu{{xPNsT~*WrDOVQ*Ll2+{AW*3|5Nqck3kd^sJp=LT znzYwpTnL18Eqd)eS+AiKrLGw_yj?IoJcYiSv5Gb-PY6<|BwM)Ri_VPP5n@obrCrnY zRKnJDD~mvJ3F1ZaCNiw9>*}s#~#?)5r50o&8>O{-0VPo`YlCcGc&x9 zg8Yi~E9EM>yY0BM-=)l-l)hYgs?A@Fl@o=Y59hC$xmOAM8_mgg&DK`6bm`s_ifsK- zYm>J}e>l5Cb0iBr>mO%$_-xfN?rao|346)&Cv=Rjcjd}nwKV&t{di5J=E#@#8_SJ_ z#`4B3Pc-(sS;%1lI(RB!3=BL_t(|oYj)OYZGA{$G`WI}WLZSVzZ(0qmungIZ$@n$cN3dB_Xmb(uaE?f!Yx0RYYN2fTVkfC+q@NWz&w8!}r z^~q{57L8acGh;BHz}UrJZGNd-RL?KRFI}&8Kf>1a%72MRmU_%|n6cB015RSHx%?gl zy&9j%M1k}cd9_L%%-OY_)t^M^)8tY1xw?K?sYLSOPZw_(sW%bp2Re%%I^CUm`O1SV zBz>% diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_1.png b/assets/dolphin/external/L2_Dj_128x64/frame_1.png index 16a8cc12e0d43379b84624721b94ecc1081758a2..efd0fcfafdcdfab812548ca38510eb19bf2a8850 100644 GIT binary patch delta 518 zcmV+h0{Q*s1m^^hBnd7_L_t(|oYjw!ElYphoIj!O@bSIR_j}*>dEmc4QcBi3`PMT4 zz`%@am1zpjV2e-ybf13Fss(`KE9C@0WL`}Q{pe0Y!01mB1&Ey~4FD76#;A$_q|Z0e z8rhapt#f-fi!z~kp+(^ssIWa$1ziG0bjX;$pGa@e@hgj|{t>GCMADf4Wh>hjY(RgL zqY%a|ngd#%9Ffr!awQ_uRUn(~8A1R^7W7zfjd+RHimx#ihmC*qp?rI-TYwx>C)>Vl zU|wXW-BJUs1gUsmvr$A24rkG68U~E^sK*P3h*Su%5rq{K1ppsK&4o+||ZlW!TW!QJa9k723rRghl-qUNwfSmDxX$s)^-z;v+mhbmSBa%(a z%A~7?Z?jJ+i=(z1G`T z%%HiCB&t>FSl))~jsBE_>UoJ|=A|)lQ?H~;sn6G~fx`QA^#{T5Vz9SfFW+(+pFxwo z-?)zk?fTqmV_x2s(#xN&@$}WaYd=_Bvi0gr7+tckzdw|ZyY=#Dc<_AL&x|u!*>B7> zij6tBA4->Z5qaHFep|g0{E-inesrOznDtn55eHSUzfR=;0@KCWH;63Fu>b%707*qo IM6N<$f)9xYF#rGn delta 517 zcmV+g0{Z>u1m*;gBnd4^L_t(|oYj$$ElYo$+&`i3@bSG5zwdpYhZp|)Bc=9QC*OJo z02r8Ytujr)8Eg>>fbP>TTD1Uhe5Kq55Sdrog?@CWO~B}HCkhZdQyKs!%8gMK0Z5;3 zqBXKDr&{OsZWd)i^FoWlF;HRBR0UlEMs&!Szu%VLpyO8-Q~e`U_lb66`j@S2BG`X` zCPyKRzi19lPr#)XBuR z4a|$|BwuQvl^_+*i?<_ka5#%j(=cEptsXBNB2pp5MidswYQRTPb0HG~c}UwBmfhJT zHjcr$S@6Yk=y64gn`ld78TQ?92kd`BY5EGC_w<@EAZL7FngV$KH;db{<@-I-h-A~U zGU=*eIa!=%n6Onld%3)^Wk1Vicul4p7 zGidH3iE5QPmbc-0qd(=KdR`)#d1*}C)GO&y>hpDLpzuCj{XsCi80@Xr%eQgHXV7Ht zH}0cByFRztn3s2@^zx@`Jbg9q+7DKjY`r=YMwcw??+@kUZoNDj9z0+6GviEF_8W7J zVq;G3htlO;L|%84-&XGgf8@iYA6+OaWP~Ltv~ogg+)K zZvoh+yW(ioIb9K+OyU`Sc{ZJ$t-R`}CHtOMp|@tLqpG9%4|?HTNPx{5xT>R@fQ=+! zcz%%DT^PgwVj0~Z*ZEwy>Im_iVWJ3#SDGt-_-^?7Ahml)uBxd6haY045N57q%s(g@ zp7I7SlEe+;PHJ}n&BF21l2OYtJqp(V{161+Oh-R4C1ZX1Dr=%8qv5qj@1SI~^_w1o zL}eXKoQY(xVCWBs%z(p1FB@lPYHQymVdUojBU9EkC9L!!G>~vPrw0HHdB3RRio522 z!zM(oqZ(V`ws)z|gR5e67UACP#p^h@5@@MLK+|h@=>R|J_MvXKPj+}IAJ;KB&LlynU7~4(vrb$GjGuIafl2N5mrwoqD@UMxEA--yW~ybzj{5`5 t$`X2E0d)YD#ikdILFtp#Q3Ltvsegg+)M zZvoh+x8i6wI9(B*Orw-qc{bght-R`}$NQdEp|?`ian;fK2mN3!#K2|>uIlK;U_*%+ zogXB27yJl7EaUr=2A>O810k9-Oc(;uN^=E&-;I7BBz6zURW)(os0COlgw&Oc`3EJ# zQ{Lc(61!2e|Ee-T{5!7_Uo!+ z%`^wcFb}Mpv}2>0=F9nbHnD5fIymb_4Zzgm-q1IR-Tv}vFn{G3>c9&9sH>T3Ib+8I vAG5NAUQj@bePOZbg~Km>vUKVV0ZG2gYKCb00000NkvXXu0mjfE1VDn diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_11.png b/assets/dolphin/external/L2_Dj_128x64/frame_11.png index a3249a298bb04d7499735878f882f93d78fefe77..956d31d02c7c866adc21ac57e8bdcc058797dd93 100644 GIT binary patch delta 576 zcmV-G0>Ay_1mpyeFMkt35Qo3ryTlj8B>3xc<#0*8viBv;bq5$s0*iGuDnZ;+k> z-Xf(hk_B`;0m`L{3;vu%6fU;!hT?4BIk3`7tDolg&F<_BSOBA0tkvNk!Q2(n|5}Qg z5CWd(Dj^1xBv4DMGR!JM0r!G1TZ?$}HTCOR)Z^F90>2VAet*P5-Lf?kQFY7CcUavc z1=<-L#kGiT0wg*my84ir9t>izXv4|=Wx!||=92)V8Z|rt6Wpzs)2WS;PG)*eMF35( z_zt7dxrn51^@6dqY*q}fz-PB&SjcZVcNJq}Hj{{*iXnFHzvQ}NG(P>AKB8DLg694+ zWy%7TjF!BY0e=wF5lPUrG^=r82BkMWQ+=!7Bsus zC6hpfDS-I2(T?4T#DIPU(DqO5L1!y7Pe<20@j`*vc79zXMzby7iexwjcs2%2yYVxR zhhq(Nn*hg?_U0r;r#5n4W_s#H<98O9Z|P4ldnyu{Pk*B8Wj%c5KnII1^cGtw2dRxN z^2|Kn77;1r1}yy?^ROi%Q7$(C{lc-=5}8XbH_MvNfvd82Y;;j%=Fl8TM{=2hr7xk; z_djPMxlC98k{#@>Ps42^W5tkn=FscNxy)p~VvwL@CV9yiq%cf2p=1mIxC{e8>C{Hh zHoYZW8#zv3%!qPQRlUas=(RERTnV)RMk&{1kwwMSR%z)XZcU&ZWPraI4er6SYEF{? O0000Ay_1mpyeFMrce6vlt|+HF!bv{yxt43ylF2~sA8(0XL+BP5Ri5(ArW-=I4K zyhX>jQUq)~0jfJS1AiP*6*q}}7@XKn!P1qiPv`p```q(^1u&ZBQ@;Eon7cyqUrSyS z0>JZJB}9Od7;0@*iYY4;aIYDpYZY(4CVst(di=VT<5$AQkAFz0TejvRs&3i&4&`?w zKqrNxs8-R7fmkPmS07T-hhYR3Z8+J#Y%*Sz`NRN;MvYFuH1AH#>BNR{H#L2yLVy-n ze23BKOhl5mddXN>HYcs2n|r|~n3 zMiUM6S^&q>&gL{iCpL6mYWnI$<98Yr|1y|i_Eadcn16=Xt9kg!fo?9h&|4m*93(cp z$WrrsTSO$68?X#A%)_>bgqhp`406X_TVx@b+^lB00IrJNvEfCYnnQCWUCCqymVpFD z-~XJ7WHKx7B|X?(Ps42^rDVuEbLe&DT;{SU8N?`=OI9$335?>+Rm6q>Tn0@*>BNT6 zG5r->8#zv3!g!ffRo}58dM&1&E1*SQlyWVWT~t(G<-*cK+?ucqGQeLL4er6SP85Xz O0000%B+1k(hNB!3!7L_t(|oQ0CTZqz^!fIqKŞ#0*P}GbjuUml_{)XBqUye z?(PMGpbG`ElY&qpUVuDCx-(Kl8_IOIsW>DQISD$P`|(itF7^c^wpx8V`_0bmfC12o z`C4q8yFl&&{tpb$k{YmpK%q4Irsl{i$6qacD9JfaQaLi{N9P%smWb7gMj`PaSub0rQFs*g0;OP6 zBn4KbCGROzW`82^b;t%^?Q;NQR?u3}l8@i}?iL(lPO1lItDTWWw3njMUH_ zqZRkvN&mPxQ;`Li4CLlO9oPG@;d<}(0?14}nB{thwtr0JWqSsOZjtB*bVcO2T`YR) z(F44i!%4wL9aLuG#L4xRlYmtKhOR{VQA0#x>EAl0fF!klnF5o=-zIG94sZcDrQ=Ae z#-X%C`l7J(AVV(ST1cyR6o;EP3kL)`guNe7&KL|ikx0zajLCOf}JOBUy delta 572 zcmV-C0>k~&1l0tPB!3)9L_t(|oQ0FIZqrZ{hCg3B)TLE>1rqU4l*1?XdRi;*hUGIq=DM37MBwy3yG;=|y$cG>|?*5~W*-gC}>!2oE* z{Hb1?yFl&&{tpb$kp{4U8zgwab4(?POken37}A#UDI&nwc}n3A4_tIlhlq3hT&-jrXymtqE$#dN>BvV4m4BHKeBEb_@Af5tF-vHzXv<}M0;F_v`GKM>S2E_U8gSlu76QBhOQ1fR z=wvw7{jxykHwT997_De;Up@EL4F;k=plEMj;kRy7a$C$70GFPLN0VG{u_6;rR%WDz z=mxEL=uU=*?U@QKxMU#Ld+M;+k2Tl(uoFOL;?XSETYq$ADzCdUFhoV79}$VjVYjGy z>M;PkhQmq0hCNhf;>5}IhLeC*Wk4ed^^=x}#4@~fOaVz6bD08@YPJcRx(A$<*TfLX zfmW@3>4*$PVHrS%oWHk_*5@ep*RLxF1iBA9zp9MEm?H_rEM!bRT|8LK$2;v;j+8+6 zIkwCldo>Vn#4OZ{IfVg)4Tt9@<%;so0jqaXcrTVUaLV!eCHV&mzSYACpTu$i0000< KMNUMnLSTY^Kn=M7 diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_13.png b/assets/dolphin/external/L2_Dj_128x64/frame_13.png index 90c66281e670e45472a4519448c0614492953b4a..3c5ff7b3374e5bb3a61b9e5cff11b2485d0c2b1c 100644 GIT binary patch delta 585 zcmV-P0=E6&1mXmcB!4MML_t(|oSl+bNtp)aA|b^Ef7T)>mpHzmIR80QGS%ws+cz_BX2Ahi zVG^^${{rPdKoF#hfYBUkX-$D$V5~%)VuA7U(1&$~x&NYB5`WHt8$U9o{^aIJ)zqJ? zeur5d9*7Ir$!d&N4&>rV&fXTb4ZRE;V(G7+MtqvmLUI5vn1epp2-r}~5zL;d`saAp zgV=5(V^#I9#B!**Khr=a8ejle0$c-&urks>^-8?k9qJd`CSrWahZLN<>#P+XjYgWV z3T*s3$q^pjyMGAYSG_$MfbjVA=lB@#E;+d<>^7U_dO4^J>YihTO?{(1kSvEKJmjp= z2~z3J#<&lu$>g<5(x9+y0Hx6rPd}ydy~@zO9uynjnlwrrcN#_uAV^r9Vm+a#*j z!{mJGX=qZAXsXeJ05B#c^sR1(*slEn2obULVZgU0km`Ic*T6VsUdJ_X1|Z%g5Zl&e zhc*y`<3Qh8x%0VD9qW~ln+!a~(_6LQ(1OcG!9-&ZBHLES$0~_4i5^)Y$LL7M^ZnS# zm!R&)X+kFg%uHi;ffLmuE8sSCq*`gjzA~W_5Y+(!4^+phGWjn+lf^8PkjlITU@`sz X)=1zJduW$o00000NkvXXu0mjf2pJi* delta 583 zcmV-N0=WI+1mFaaB!4GKL_t(|oSl=sZWB=ug}*zy*o)$XD=1irgj@-zC@@u0Scyxz zJc3m@q)dadk&xnopKB46O&sq~_-`GFhN-TO&YZb3a|RrM z6(%uz{4Y>m1A-u31dQfTDQgPs0%JL97YmG+2R^Ja%>5UQl7Dax-1w0x)s&kYw9X z7h=1Gj8xUX63c<=-b@3TXn+Br2DmyFVR@*5>ZN$MGte)#Ma1ZW4=Ffz*I6q(8V)sK z1z7)eoFhEEcYhwdANTg855nVnvza?0S$?f6fh|u&j4bYE;%j>yTy_o z1>H`c%+V=RD=g{PGT-lqZNOw+SdLCLuR3UF5Z4A7;(uL|vT0jv)_)h-q!(@5+a^)H z8YE}anT93>iKZG|2moVJLf`DPiS6nifDjQ&5Bhv-0IAORas`aiinXtRQvmTUf!H=L z+O&WW9Q*pt%AL=J>PRnz++^S>p5CflLlZ9Q1rv>3h-^z8AIC+UN%YVPIYx&%n)_or zuPvU~NkBUS%uHi$U?-}FR=}<6P<5;k`|%LQ0;1YS;DPE$RVMcWG~geX9b5+%<1f}o V;1d=gRa5`~002ovPDHLkV1kWp0|x*A diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_14.png b/assets/dolphin/external/L2_Dj_128x64/frame_14.png index 4365d99f857233a356f52cd7f5ed46995762d501..79e28e9167a86168819150d85e53feb273026de3 100644 GIT binary patch delta 588 zcmV-S0<-<@1nvZoEq}dk6G0Gwznwdi3yG5LVu?sui3iA)DU5N)E6~|50D{hlpF2`O zIuK8gSD@beU=lv`;~(l^Rrcq;OfjFtQDRe(SIR zNBaUR)Jn|;`F}D%djdjC8IF+aek|&SzN4gY*Ph}b{%bPSz+zT--n4@NPg{Lj|j=H9G?IpQkM<1Ynv?T zB?n6ryrZqVR=68o_Iqm+X$3k^fSzwluR1U*QT)1FhkwFleeKyMn>yCVn-j6Tg&|)_ ziRfU2X&o^gAg(x!htNuq!eySiT{k%d0kLdDogWe4O^3N-%&pNL1D60&xHpj46gUFR z)G=b89kyokG3|#QzX;$FFgZZ^e)W9jcm;L)0J=Y?ekZC!D|-)1qnaroszW6GQY@%u zdi9rY&qZxAbG!s>h`&t3_Rkg1&+d1Z&E^vqHxv{tZ a1^)m)0P0g{w9j$?0000B;8$n?t6fPtpPGa9s*iOz7%@&`u-^|Yb1{{Eu6jA_Yz{5%v zM1U|m00lI!008y30IIjZkqI|dfXGvu0~-*}U3sLwtO8SKTYsxyq2FB8+~5LW|CB79 zM(lfmP1OLfdJfLVU<|epsExoPu%_w((gKno1x-k79ohjvET0pz&B3ge5Y|rA7ht@H zxQO9obE&BGTe$3Ze`p(sW~!wH$JPKVQ;-OObcO02Xq|zuP-;-!mBMBD;?ULsdd;H( z9IZ>Nuuy8&&wp0{T4NAm%5aR_%wtJ6^&KUJ%lhM?ZE#P&_qvm>Y?Zkc*7YvR!IqBn@zz)@Z(+b! zQX<+IVbVuT8;C0o;~_Ltq;Q$1W;aX@K|m}!P~%4gc++O)7~PKc2)F`}!o7jSrob^^ zCXOKo?6N)0$7CLQ@*;poz~lhs`?ZUy;}z8G1L*vm_?@T@tn5E5jcTTVs1A_yOR=b$ z>GfN_Jw><4)bSFq_45ybX-;OQF09=3Ud=~ zf=f!bG~je8P>_fvk`VT%K-lAl*z(iN&fC=pfP=b|OOnnCgKTA>rNhi&;&ARTa>z=D z%0MfJrNhi&;^1TZWWO+S_|wuw%_Z$))Lhbqwg!5O@Al>xB==o<;utI9U6t_ z0w;h?sK9f)I_w=9hbn>~VN-sF1W1F9?hEVwjt>9|tN1GViZ_6r-|-Z3yZ~ux6`xgr zM$*>TVPU}zw{brz>Cx7KA`M&KRSox}4*#4>QX!QQC~aXV)x@MlQuz5?(n*?Z0xZz@ z;TWI4)x5n66)#h1rFE#-J!iC+0Z!LrS_ObP#~~2l-{tSlH#1p<1B}&wBme*a07*qo IM6N<$g2(of0{{R3 delta 309 zcmV-50m}Z-0?-1GB!3r4L_t(|oQ2XcPQy?TgyG+gAQUcAra($gfN}!lqxc#~6yYY^ z1ecU=!2g9_gc|Kog^;z=a>_xF52oK%zQ~NPp6eq$+N?^0kda9iJ5uctZ?Kw9WD1_k)D{QdV0Gg*ZLr{UxL00000NkvXX Hu0mjfCU%nH diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_16.png b/assets/dolphin/external/L2_Dj_128x64/frame_16.png index f778164ca58ee4ec0fe969ae4c0fcccea455de54..a3766106a1d2a60dcc10d6753d01c4f6909d1413 100644 GIT binary patch delta 250 zcmV$=vyH%iHe!m|TBnl1+LIqF|DDd*Vh*zp{+KUXc`vAZt zBT+CjynMXfdY5npGROD~*X=-h7K3KYkR)GZJ2UL~LLG>-i*r#>ElfHG<(|QO*O&m0 z0IUz#U@KysIRLZ@Y6aK-fh4~qBQf3zOgsfX@F=D=TJolIT%5sH0Z7u4*>+_3*Q244 z%rT@3@2wa{Befb$BQ>f>jCiAM|Ho3P!RLD92Zxed@yO|aUH||907*qoM6N<$f`Ef> AHvj+t delta 248 zcmV+_bf(KCS zv_mVRVZQ|k>|cRxATMub{w#p~DKVU2c{q$Tt9660T?miRx6 yOyRW?!~58+8t=FCsADk_?V-^TXVQcB<)mMSl3Ve6Mho}=0000=W7D*~;Oku4y9pzsmWQXm;ogwhBR3P>J>z241AcpH9WYc%`5pS7r; z72O;W%-^7l8b#E|BSy_Mnvq70#EcsYk~)?_6@oH)qzFMie&h^W*BNOD`Z6A=W7D*~mHku4y9NZ})-r9d*G2&EAs6p%a$d%c^L$O`c*Yc%`5-^xb) zEa>KlV15T>)F`4x9x-ah(Tp@|B<8R&BdKEShmV|L>pCM1L0`rLbr@QO zpbWvK4^FUqJ>%2_pkLE{E}xQgA9g81V-p&wao`)^xN%?ykX*TpR+6-P_A(5>c?+W+ z)BxGVV2m07UX0DyWRj%a+#0&;>Qn=GvX^AHJQ(}FUB>HpDoI)m#@B8CV1XV1a0biS zzQOtiVBx^_1K7@oEs#y5cRWBlRX%_fFlq4W18>(#_AmK4`P+~D5AXxGwuA<=PLXi{ O0000kSHlv0*O#XLJFcF$cVo z4VIrqehq|tBWha!-`V)_#3ND83HNng16CkforBE;l$ry0KEQ2OyYa>~ zfQ|;#OF+E<;DZLP>;sWWfM)E2`ng34+5lJQ8g{lJ(A)$#K+}A_fHMMOXvWY=2O{$8 z_|M5c^npcFM1SP-adz?+WkKIa0osZnV9S7B05Avt7LTMF@>evdNC}9Dh&=edUjJ?Y z;uJ&mjEx?k3Xo4DRPi6&sE2^}F#(hSEFZp_uwIR;l*>cR+36U#RDk8{gw_P0S1IHj z0OJCDnFg6{0G=tpogv$jCD3tg_ojf%V7IiMJ$au4URvUO?B&-dxrXqxRLtNW(8YnH zHgV{FmWYU?Gh(1oJ?=10(9ok)^c6;fEkSBEM&VWSI5ZlB4o;Exi#d);MK%V&ivj)u XVn(D`y`arW00000NkvXXu0mjf(f;0A delta 481 zcmV<70UrK@1cU^TEq^g@(?Ar*e|I*HOHE^#l7V6*!~jc_DFanbRX+hkl?5q$0o08V zBN#H~1Hc{zBt}L{Ahn$;Ar&#uDu^Xwpc$&*%84I?&#ucy;D)<*KmFgk|2;kU|5pE> zyGmmGI?(-L85M_{d+10B4pMTb>2ZGUZmEo!kyQc$aKSUt00 zv3o2Ihi(l7d?#!r0Is$1$Ebph6`eA|mqmbhY~J z0b&&c^^&zNpbC&rLR2viw$%f`*^dDw0E;JY$E=p4D&_hBb8$Wbt`%VME~YsK=vE5( z2*9WSUnhQ+cz|OH@L<5EWHGeuv%3>Orm$05&z^tE0a_=vK6dll<6J{LhlO-Y|>68fYs?QxoF&es*ik`w~NJ@|<8l!NkejFJMLK~~dd$n=aKsG9dH3Ikx XVn(D`{X=yJ00000NkvXXu0mjf%V5%S diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_19.png b/assets/dolphin/external/L2_Dj_128x64/frame_19.png index 9ed7e2cdd1b214a25a556585cd735b87a274afa3..fba62faae045a16e5498569320da80cb527a904d 100644 GIT binary patch delta 549 zcmV+=0^0q(1il22B!2}-L_t(|oQ0CVixW{4g}?VEzg)8tyDTg?f=xg$ZlMu`ox-#t zX-r|UrG?We67btK@-#mT8t05)-UM7n4Gm$tIa=@n*~<7EU#MoO?Ov zybAza6XSl+Y<&r+6Z}U3{w6s3SK*1x0A<laxwg{W zgX=D7Urt(ISBnA4f(B)&wJT8KLIA+7$Vuy0ygKEvfQACp+R7+YMF|=nz_5!lJ9&c= zjjBVf4eI#;pmO9VaDUYVO0IxC5s7=#PXAre0GhkNuzyPcPYfu$S0WPk!v1&wP|&v~ zz|$`97T|ynA|i4Y_NM??4n;&pt#Eu=aFvRPh(yJ)RR;ExCZlIF31k9yQpI#(0X&m{ z)!5xeIel9_`A!MALORmH&yh9;%;x~)gH-Ve<7;S;f`%f{$tjD7%&aC*?&USWFwh|E nktpJZs~+koRV>``cs{@%^B&!#Uwldi00000NkvXXu0mjf5h48a delta 548 zcmV+<0^9w*1ib{1B!2`+L_t(|oQ0A-ixW{8g`ayTU+#y*E(;5eU=t9GTj&bHPGMS+ zG^Vhyw6M_1!XncM{sLPqL$I)4B?AgtZnLD2m|!Kkm=r=Ln`Dl~ojBQ8IMwiQ-k0~B zdjNo|3f&KuwJ!xVg8wMMKMNlGtMC-9028t8-&$Mx&5Kr6OMhcp@fi?vah`#^6dx!# z1EzAoEiHgdXfnm76jM~D*aA3RH|HX8paMX&Zhw%0+Ik+&eX>3>{|ih6pCL16mAtv0 zrkIYHdj0hZ@R+@%Y_fnhr5o>$a;vBRgvvYvTWsVm@H;dwRzQtMl-;lgKvzG$ zj1B?VweHY|Hh*3JF+H@?pY%hZhy^?*Z7>0FA-yZ<^k<_07-E4dOxjTLq3C0Q3g?=} zau=>Sr(GR4zAk1*m=~ zj4Y-G)h3wddw|K2AHuyw9Voc~b|fX8QLFo|7y_0%K!2}I08c_Nc&{WSok@3a1W>Ry zhrrV|@D^Z?50a$QNq3ZXJ&MQ0Rj~UcRBHf9Epo?2wI{0I|M2E0jbto~UV?8)-aI%J4BA!IiRf|b;qZKKshcCujCT<7U9uABA;^j;p`FW={Rzu)is z!2dbry@2@-#or6KdjV(nRc%+Pc3Sc1)NVk>1yHdN?RD-jG=D&2+mqcxn?7W~C{=;T zIuG@B6==uwP#a!Vhi(T4e+Ni|k4pdw-Q$6U3P=-zf(HRe>+!Inqlp%b`qiR?7aMIx zqiXY)90M$DMKckq)UXlrk0@RsuvJOrF{TTirl#l^U>T^GYW|2R21>^sH&>jBTNiwc zXdmKXsfu(XrGMSO^N6g#*iI`3gc9K6R2UM}&`*F{wQqK(2uTCD;L#z|%QPgg;>;mM zXOW*pYp10jOeFp+2LoeBB=WYOEfGsF{7T+vl!y$C0t$uD9B*1`TY8;;uDWOiG+8@t zPPag!&DVCa{wo0Mz=?4PCFfBaiVQDf%!sX%x5~f3PJjDA{T(x_kIB&x7{!5H_}S*F ztb}2$6l7%Cw(Am0+V&hg4-0oC+i@l{tIzfxzI-hN}&Ll2kqelKUci`j!j)7_1$ zy>FRGE*x$hse`UTiL!Hf?A(_i*S97zaZ(}~durT%Z_XwB10OGT7uQ}VhQCwlnJ#TC z<}+6Y#&IxYW1V2IGnt>9FHFfRKQa660*{_e1<8B!Gf8u4tQ>XOB){F4H^qFWue>!p z8`cdlH21qOSr{oy%H6UwVknGGjVQ)*ECh&$N+&;EPyGSJ^yY+N SlpC@D0000hGEveO!(Oz!(l>gU>eC zWGx74B`>3^wp|xn(YEX0x>zLEGM#7BbNXCg>y_&PAUEe1jyzh?2i>flSk4?Koat#? z?|a8=e5ti1TQ`mSD8~IMLcc!?t zoJ(IF9C62xtxf!)u6S;0F+VM@z1ZCQi#&cl?Z@vg&c@A^@lx1r6aV%=-WGD{{?g9K zTu?X2@WSu>RDLu+CHG3wkUfLEs7b$CxmDbj$>AV8J*t?-Bmr}gB~}Vpd=B5?$NN6d!;yu^0nn390U>{7&fgic6}3N&lP@MO zRYT{O42A&5X8>Y4*Kuw7y<2~TCF)}R^4znvcR&0oRSh4(Cevu^SvCY9Jh=`K-Rw0{ zp>-EHCS+{a0D#hOubDJ$)H2#i+V4lHI*V)CTmIxefL&Cp?8?O}7lV4kP@9aWdol2Q z6v5dQO=3vemdk(ipmpJ%39XE_ckU@wG|_E<*HjJR?ZxISivYydpL(h~X$A|pS*9Sa)|^Om7}z+QIJYU9g< xiQaI(neb+ZTUH(WCt#L`0}ih?#emM|{{pIvvFSIb(b@n2002ovPDHLkV1kNLr`-Sm delta 350 zcmV-k0iph^1*-*+Bmr`fB~}V3eGlK^;d!6u$B~7|0n(FB0U>|KoWC<>D{6llCtpln zs)o)l84LlA&j7@9uH)MDd$;}wOVnWf^4znvcR&0oRSh4(Cevu^SvCY9Jh=`K-Rw10 zp>-EHCS+{a0sy7oUNdQE)H2#i+V4lHI*V(yxBSU{0K2GG*_De|E(Z06p$-{O_hR7r zD1x&qn#7Q_Eth}kLF>Xj6IvN<@7z;V@7 zm^8v08FbOo$|0Q7ox1jC=1t(6K)`jLHo|!zFo8!Wl@UJRj)hHzdCO2fU@tqN+W0bI wqBq=c9Nz43%c^7lM408_fWxZ|7|{9rU#g6;>B~=T-T(jq07*qoM6N<$f_7D@TmS$7 diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_21.png b/assets/dolphin/external/L2_Dj_128x64/frame_21.png index 71d2c0fb6e46e2e3139f8e3b797253daebbc952d..c3768e27b2ed29280a2677db1e87a670998360e6 100644 GIT binary patch delta 611 zcmV-p0-XK-1pEY$B!5FmL_t(|oK4cPZX9J4hT&)aS?`);rF!36%_fU-2_TT-lj=uBh z)xi_9QJa^^Sk}P%rg@!}18>N|eUq%q%7JY|68|*Efz501Uw^x_uUVQZNL*G)6(vti zNR8FwOD$zKH6_*J!Kyi8q06eo2RzX1n3uU+LBS4%&d^Xv&K5(pLSZJYTIZ~=RG4A^ zs<2X(%bCa;ni}oUkRdIov!?Jm8EBB1`W&sYX9JZ(oyuUH+T>q&=;kHkGoxl51AE`m zfoJ`u=-7d*nSaX2f<7_r{S2dpWZ5FG--bA1VS+nx32)&QS;M_pHDm?p>}fPi`W_!$ z?|&zv?(#quh(9Bx#`7+H^oq@F4o1iV5W?1n=opTA};3p{h>^)0jAR40i$bw zzaHyQN?Z|Va~P+JQ3XqIl5lZwy8y#&QpC%8UF^L>x)Saz;VX1CLmw$@$eWD7IP_gp>@Bj!3zXAm{)6pQ5jx8cI3k9iA0%7A2$CqO4BwzRab#?B! z=UzN98#H;D3}rREZ<0^5vgZvsxNnrTS=qCzPvW2YB(QxA{(ozh4%AB%1&OOFsiNem z5vjI%e5IkxCMKk*c(AIES!lB=@c|FiWAieXD<~LKX!Z4#(i$J)2uGMP6ldZCO$`_>{w6bNUPG@sMh%x9=dtS@Z6x@$iV)0 zwBT9SDO$#m)qfKiS?OFU z{^~j1E;d2Q6@&Qw;_SNZm6zLIeCW21Qgyj8wgWR|?AnGwgA{Q&Kj;o+VgoRd_753c z=lAQ07GI?laXyD(su)!3J>oRs^6<6+`n#lvm(z{0J70DCm{wguwqTkf&g?S9a3Ql5 zaYk)~XRV&Ch-2wQ&LAi{;1P>7x>z4G-fP_ZANi!n`I3MPc>n+a07*qoM6N<$f=RhG A;Q#;t diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_23.png b/assets/dolphin/external/L2_Dj_128x64/frame_23.png index f7d7c9928bfa12e5388afcc607352647cce0e03e..f404dafc3c37b891d38c79e66c379801f18ee59c 100644 GIT binary patch delta 680 zcmV;Z0$2UR1;7Q6B!7oVL_t(|oK?`xYg}a*1@Pbd-kZ$W8I$n?6G$}|;-ZTdv(loi zxeHe!(zPIr8@n_MS4y3U1^)qEiUc|7P3PxhC#7Nr9BF&FtHp4nmOfC)rdt3eW}tEROhQ1V{27Qx9AWgm*Xb}#U4iT z5GJ-PnIB~qJIyB9IO|)k8eozB!#7Jgp>4 zX8ZLCWst>*{(o`V0inp8=W0b0L`^*!*OXIs)0Z@VnD78%Zt$JGln95|0iq-*7`8hJ47hV`*{Sd-UN|e{BFJ$hmEm0c4cWB z&!qHbuC#>NV_ZtV%-boW! zj`gDb&jy$u#8klxjg4@Xe0`Xw4`6b8W%N3CUghSn#HE$A`@oZ*Hq!Ly^C|tibJpdj zNlM#iaQ4b1rOh*o_R(QFDNbSNKlSiInoK2WMH<21uTERjC0^K_>bIw&!g zzJ8QFrnI*y6gA`YKzd{PN)S`pFPZN{j+vD9DxMwJ)Z9!;J9M&Cq14n$X$R7kNNF6P zU(6`JqCufGt#tOI=n0D0M%l4>^bYG(`9jUO>>I>-%u0*4 z<}F-_NY{ceZtT)5Tq!ye3;qMT6bWt&xT#2SReb6~7lJ`tbX8_RBtnG=HtFQY>1I)IbRqQ z-G8{kO= zSu#7QRw#ljPJa!Ki!KOx<~&zRS|Doa)4ZmrDe^GIof@D)GvSMOa>h_J9fG@w-1@ORzS8nf@U{Zr)F0X!oax^y9bl6*+87%&{v= z+juIa*Bc5;m_5d&l)gShPjuL>eBRBlDRQuik(*&qWq-i$IPTZUM;w#hT=TzL`Q~<- z!g8zzoxeB0{4k~xo@;J|t2EX}jr1N&Z>@}9<@U?m7!|m*l6LQV{F7#?mp+@)KRaht zew?PXeWuS|nx?dQX3#l0Oegti8wO82xSysqC5>J5&V#?wQ8kEpbNFspb*JjKm|VYS zwtsY^LVvVZWr;`9Fsmt_$15Y|(%LJvz{m*}z902#L^J+?-49MZ9K-_YqsmXOj?h7Y ziS*S&?=hvlO(Cxkrwh_+^(jG2X}@58P(PoUl=e!Vp8WTZGb!!R%~FX%OFN|N1>*&fB!8+&L_t(|oK2FyYb13T#y|7j+3aEh8#&Ph4|Y>&AtZQ+2Nt`R ze?j{*|G{Y?R?eJPSqWAaLcGJyL(j^>VnPRahr?0hUX$=y@D z@P2rj=XqaxvD52wcN~mQZBG&gyUCd&`&TJ=~ey0S%bJUm2+TI-ZpE@16G)byg?0&Sb6{e002ovPDHLkV1jukTAu&_ delta 714 zcmV;*0yX{P1>yyeB!8(%L_t(|oK2F!Ya?|ShM)Om(ga&bWkmxnBt7XtXmJr2JS5wH zLGNq-gVlq0aqU*_nhm4}M2azIT6_HL|u|dU5S80;zWF8M`cl#bb z_#WQN`+gt2*xB{DI}RtOwx%d^25J8rUd=h|-SW`kxH3sDmEPp) z_Lt@k$5vMBv+9}f!@V^gBU?41+W4p13MW53IS7M(9zmInPJRi=-%DwLRVt?a8~e|N z>n9OWznfQqS%1?1Jg1D^cAR5gEbk-2l-sH^D8)uyg^UmpFuQW}jShjTH zwB}rIdW7z%9+jS2HQYvLsz2ZAY1ONwXQ6tB1D&e0tP*vTb)Bf;b)r7F$p}V3NCs?h zrVl})juV|XS$3{YgU=G583M3N9;wcoZ!W7!Xe9%He1D|?IF9hQj#@NAT{Uf>SJWbU ztFB7IqKe}7+x7ce_6*QUfd&-tR|@LBPNrr3d*?kxEy`rnitD$N12q73yQAY0=mH@E zX1lFL5+Kk8K6@?i1K?W74*M{^+F5{?M{&oyFdH8aLcfAf<^f(|iFfkF*H8-pHCW|B z2SkJOaeod{9x6ltHvrGk?plbOQ5d8EZ@Ohwa`3QUm)b+iG-~p^I z>+cOw=U-Sr^C_Lv3)jNOKYk5Rwjm5QftM03pmCt)mtm!+77+JTYk|`gC?M{_lwSkW zN5QDm4xI}-wR=k;gR`;#o`?d#pVfcRgefodV?%)U;sh)a?**V5lt8>Sh^PhB`??30 wlA%Mh0DQzA5DhX`X$RnaR`=j(nzU*B4u*nKmY&$ diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_25.png b/assets/dolphin/external/L2_Dj_128x64/frame_25.png index 1c03f72399f447955dcbaada66dce8917907467c..7495a01694a17656d43ea0f731cda1cda93f5096 100644 GIT binary patch delta 567 zcmV-70?7U81nC5jJ%8ata0PjkQpuBrd6tKLQo9P!!ey zQPT&ZL!vMu5=RKi#jI~A=FZ$!`~G+KnP;A7xPB^qIQV~75B5SGTcis5Z7^N1+5&a+ zDYjS4X5_7TlE1&#ZO!)cuZshLw+aYx@-w6#3V1y~Es`%*1%G^ymy+O<V3fEj*A9ze~cd`DZvEPczQ8vHMs1sOjA~YjN#YR=$!cJf0r8Xh1 zG~2;W;yU>{34fBfx-(v`zg61(z+|(&g1EZ5yM!jx$=i`XJ03k=Tdiq=Kfb!&BiRd{ z9nOnSI1cH)V{7RkSj8!fP^CWdEZ?2N(UO|rqqD(Ub9pOD-J5Ha8_U3Kr5ycvTP=cv z@xSfHNG+VE&o8jfaUK}oM)D&jf~k48vD%ymPE(7VF@I|V!xdr$Z3;h)vIdWHYmkel z-^;e0SP7)Iqw3AQ)DME;rkD@Cw-n@3%*w}uW}$LXim5L>dcJcwtQg$;a)O+4l}h_| z=MWvOz!^+(%Z?Gdt8Wf}qwy}a-SE_-4#sEPEa^R)%xPZ3iD{7TKY4&JF1s5ucp)DR zgCqUnk}x*{S5NkMUwi&C2jSA~`eC^ne{U+e(UfX)$A3w(s*YxaFGv6Y002ovPDHLk FV1ie-7VH23 delta 567 zcmV-70?7U81nC5jJ%3>%xmXJ%(&2&<$tR2iRHURMp8$oD##$&+5|>oSAAt&4C<^O< zsOf{yAyF6+i6aE%V%9elb9dZy@3TA4JoEgA&8qa_@c&so*bjAVDOJ#K3wv{xTSDD@ zitRt9Q}Wh4$=~1Wwq^(U*ZHBqTSW+Q`ZJ^-itu`VS}b3zihuAyUPyvZPFAKaS{}f@NMVR`f2>Tf`>0odH(nXIZ($}MhE%>g7Y9K~`fp(60 z42}O>CGSd+d%mq9n-^Vkxw-I|;O>02rE$=Tt5G)Fbkqqf))kr(q;|zgY6&}iv6tF} zxYleJJBdy6b$=2haeZgJSbeLs2Z6~3F2wcC-32tEPTr3E*~#efDr!v={PET1jATD} zb~GzF;UuK{POPkhU>RpHLY4Z+(|mUiju+GfADs_Yo{L*iaIc?HZY%=RrE>M>Z8Z-L z$N#qLAhmFoKEGU}XBHUWM)D&jf<3ct9ksa#oTU~yV}IHPhD*c}+7x~oWepzZ)*zQm zzn5b>u@p#cN7b8osUHNxHJA^*w-Dq4X6fTWGgrARVCpN6p6?tDD+c$zoFJ!Mr9$8C z45FhIIEP7Y*)d{w`OVR9G~T7Q8=iX9!T6k;rM+j98O>`rwHKuOPafcltM0}WUdYG8 z;8=gO;4qEA^^<+x*IvBLVYqU;epued-)kf{nu0cW{0B+0s*bM~mKFd2002ovPDHLk FV1iY&Sz;}aNQVnbB(E?MP?3_3`~@hK zG}c0qlDMQo{u8K>g(6r7L`@%r4vE5uNLfNqE@pj?Vs9N@H{ZOO`R4nEt5@j5{#95h zC%d7H=YS&UpI0bfxgH|^2UMS81OjzU9;0B9f4JKY>C`CL%YVOh`vPy}cK8>^zd-sC zC9mfvL(A*M0DO>FlHijgr4`p`wcbU_fSm4?5{O69lDsBKiX{A4npquwuG$PY+jvTsWKUYP_*T;86qHn~Ex7g&r_ z3y8}b+bgI-nYPl!nVeBKf$5qq27godd6rdpm>ZKkaQdT39a^y-PNiundP^_%lVIBG z5`5^rl^|DO?c+(+DVz_+louX6+d7yQOzwWU=*TG-X>i~65~8IMIE6)S*fL{#{msGe zRNkeu9aNrp(8Bzb8-sdJ7fY(waBL??_a1+TFD}|^HN21yr@^8AV8t7O%g4LCuQ_{( p{czz{d4IT#zeh{1RfDy; delta 603 zcmV-h0;K)@1pNe%Eq^g@990wr;P2fXJ0r2mZh^3oEHM^Hq{9Uzl1CT`s7OgiegO(4 zjWtlDBrd6te*zVB?ydzWRU zoa}@$t^h?aT)j}fc0EM=52!xJ8VJ-id0hqb{NQdowo{{EH-G=u?Fqb-+woo;{Q~JB zO5V)RM#}5O2z-=#N$}aBQqSC(+=R*7x7SJ*2(KOuqu`rb+QNIU|1nzE&{V#Qk(pQ zxnSF(T}!P_1IMY!Vb6zuW(v z%KMbI!c;SlT9}=1V|4HNd_naFj%)|%-qRoO)p>iZhL`feW^iEG?|Cb5@pOj|HK(tz p7tY-(?~l9j_d1em)fjDV`41{xxkuA-q|X2V002ovPDHLkV1fYUC<6ch diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_28.png b/assets/dolphin/external/L2_Dj_128x64/frame_28.png index 638eb88878a2f160630609a4c5b382b313839f19..a48aa0927dd238a75b11e45868201b4be01c13b5 100644 GIT binary patch delta 401 zcmV;C0dD@t1Ih!CBqEVXL_t(|oXwNHZWBQig}>QZj3Jg{Dkv-^NGWI#KMi!=kwzka zXFW?n%~Y#T=iYPfomnS_C*!{c=lPyUQaf)H50bPyznBlePhNf*fNzXmM34b2x%oP1 zTEP2Mp#naqiU2%(mnZ`8t4Na8z;zmZ3p9&=4Yvl`>c>E_fl&6K!q43D!hCEI?&|LB z@lg>K3v!**R7sDqK3=nqKm~ACuuTi;Lx6RRkoDZXJ zsnRRJA2Q{>m8by1CHJBtOzq>$6sR`fi7vJm?hvDIO>qKGtw(hXzzUA6!~)-BE;y{L zWO0lyd4|7y)K424mh7f>4{ce1Z@l0@k_eQ5Z|Fc~%MbnQPhZdkAglM_0RU^)gYS}* v06&)`svb=Ce}kPj=F%(N>@V9}8vycdj3Jg{Dkv-^NGWI#KMi!Akwzka zcRWi$&8=3S&b{aU%w}R3IsY{{FZM)|+Igcskfh!D#e4vM^76|7d}H*Y2RXo!o3DeS z9^R)4dH9?v0`Tx%q6ok*pLALS*JI4F@Zg z-GXWuXW3@TsU%rS*cJIW7Of#ntmEjC-@scEmj<$NH;iO6j0&D~TVDb2+%`uC3O9Pemr0@U$002ovPDHLkV1ncfzIy-w diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_29.png b/assets/dolphin/external/L2_Dj_128x64/frame_29.png index caf93d855e55708b07299df843bf819ebe0887e7..1eae636a5c2a5906e9611f85dc668dde0f84272e 100644 GIT binary patch delta 384 zcmV-`0e}9c1EvFzFMk_B6otPT|ABA;O0xyXTOg%%%1B6FsCa=R=)*=5f&|)8jv?576o0H)6RG;&RCEJiaxQ|D z0O+h20l87>B0%5dOV9@6Djt%!g_}ieYO=o%^SgctPWI=`mcA@}V|$ub%vPiCW6+_jiAq41P({C9OIsyFfXo%mAz* etzh1(|K)e%D0PdFO};Sz00005k(oo`Okzj-1h}#N>7L``Yr{7i4Y}Fc0xX+R47RiuOY+WJ zv^V|n#D&1BI>|zh1|~fSD^{e}$FQOcOGyY4Xhu1DV7pPU#eXr7s`tf;b^uJyX^;{C z9d{xi*DqZJ=$d>AnqXYTLlR54oW!PPcKiP(wJI4Zn^!bIXfC3qs@O4+hw1N42rD!g zR&`R}stmMvtSLfCB@Jfb`6*S>@Od%%4_AW(xPVSkgC4N${0tTjfa|nie+tYku(_Ml zt-(34el>rI)_Jp}4GMc%bs^ zFo4)-gF!B&-G7aiq7Lu?2{M4(Ze??k!jB%Bc?5)js&oTnZN@<1TecQ(K!-$tT5SQO zcGErsMUkC=2Rh7w+~J!5#zDspAaEVPOVQy~K$6B+nhb6Ogd60?ji{+H)P8I~U_9DR zFf%cDrkzVabOR|J|G`;Vl69Dgyn^5V3; zD5|=_n}5o3@~7K+KJ9tJxIa}|HQWVT&r4pJtl?JQCDlV;L>_LGTtF3sDF<$m^ z-?q6g4~myRl5T&R{(4g@A2>RKl3(9R&TsK+W3TIv<$he8c(#{I*B&SS+1KN~H9eB$ zTV4G3=j72`t$ZkJT%IspM;V;_T_39t*T>{cCNtgD&B(1n`R??IbY30~ntao+X0*yw gf<)-he|4`M1=IzQB!8PpL_t(|oV}90YZOrw#eeV3tUF4~j1f^}bw(rDY0$>Pk5Ph+ zpq*H#C}Jr_5F5n|B3KF*qK&Z-1e+itMkG2S7`q?{8%$zmU2u(G`}_zQ&Fox@-HqZO z;H@5qbI(2ZybJ%O@_zx9%s;IRfEDvV$%;VpX&&fpB%qP`=6`@803ra1(O`oHiNR8R z=+;OTZUGwy2NZxEEC46!#cQ>DsEDrBR|tR*O^+urOJ9}=fMf>%0o}9r34t}SRyY{e zVMQS@6KWwP1$!Mp(~E=6rMZcnO}{!L1srq&5Mn#2ljg`Ovk>4#Yb~|-<7^k8Kzn$g z^6UtJ*l2@6E`Ow*jh3Pg@Bj%ifZT3nbCJULE}D4+gn+7a0%UDQZ{cgU7H~j^M1Wdt z0i<@*KD|YeU4REV%z@nDs{qD9#||KH1Hens;Wa>##uu6l?f`@v<@?R3sd2Uau|0tC zXgk47$KaWEEKEz11)4S^12!~))CHv? zKq6KcbXI98hszW8_~5!FY&|D(_kGD4GDcU-NMu_x@P^ti*Y$1xRQAJ}al;rIOEy>) zd%biUZ-$$AP&IE{4#~7J1*yxxd)MtKPT6kc5k)uz)0K@o%cJ)0y`=+3Q$S9<99wyD z%3c&z-G5-RvYh1x%E|l+0olNKCQNPJI4`_y} iOe9Ez4*l21dwv5W77!yQ$5>qe0000@Y)X;;J zNU7*Jf-gY{q~HKP07WcOxIiLE6d}YJ3jgdbZ~&(K{N9^+wyXqy0{%6~)z}9^F&-$N zdM~X>d7Vx^zh1dh}`Z;whbRI(Ho?^vl>Vm~h z-+l)X`OtdKmD^>#W$-ML?@yN=Fvl1E>1vQ)x}gM^bMFN?6@%v9nFk__-_|f_JtFc- z!epZkMMMh5s&b11GKGr6pW}{}k~eo~G@#Vs7!WCm zh^oNHx?E(t5kQG?(BFSU(@afUg|SaXmaS&9eTDUOY-pv}cDHEYv;twn`bYj9DxU%0 XAq%&?>#?00000NkvXXu0mjffv>Ym delta 375 zcmV--0f_#T1Cj%fB!5{+L_t(|oXwLlPQySDMc>*Bu|z@^35k+$0$kF?P;&?xYUn{q zq*Qbq!Iz)}Qg8qtfFhPCTp$r7iV)%qMI3upK+lvg56`aSHwZ8`jCpxK=oIV42sN&H98@wHnivVp~tK!08HvYt}vT_b~Yc_y!>h Vx4o3J#JvCj002ovPDHLkV1hDyu@3+M diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_31.png b/assets/dolphin/external/L2_Dj_128x64/frame_31.png index 1a1439ab42198e87f9849288bf9eb167d61f56b5..5dcfb355d4b930ac6781c7c60e8bbebd677a4c73 100644 GIT binary patch delta 399 zcmV;A0dW4L1E~X$B!6&8L_t(|oXwI=PTN2jhM#ew5Q#vL+CsX5Wmn)O>R)mK#1V1~ zR$!s3>XK#8(N%X?Y7gKOK-6xs3rGl@7SGGVGvu2a;EnA^@B4h?@xaTz#&!Dc%C!{q zKKv{b@b=+4504oDoA5n=E&zx1)|(_Tg`NejgpPG)S}c5FD}UVdv6W7!nS`kW^tjz) zY7@UzeY1(dzs2jj+^)1-?k2LG)BCHYGGN=^U-`;PJruUGewLcN8pxY(u&Mga^W$ODK~F8xrF)P#g9fBk946mc12e0^6)0@j9qBV<(h>Hq)$00>D%PDHLkV1l#f#GL>D delta 394 zcmV;50d@YV1Ed3xB!6p3L_t(|oXwI=PQp+Wh0iObkcdFyAC6$?NEj0T=n9NW=rR}~ zF~&G_=sFxZvxzQ%6#&r*vqD0kRr`*Ez6ba1z)sqJIp^H=z61R4tCzU%Dk{0aKYxuJ zaJ-&$%%cYYr~=Oh6afI;q<-KiLco_mMLT|lorg(kbjnfu?dB+1Avc33!zke zaP%k@mG5|e*^yrwrA;U7Xs{Y*BLNQeYOF^xR0Bh4Iqg$l%p^c^g_)e<#ZNEJg6@-( zrIV5M(t*rq_o**ua%>IiLH-MpG&plIxSnXof~4*&NKNPE)XBiK=qON&l+%ayf^0gW zRbc97UqJp#|Ga4=5100YqVnKpAMWev oSKFyOB!9>+GH`bKo8SKc)`ov0gBLx|00000NkvXXt^-0~f{tjnZ2$lO diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_32.png b/assets/dolphin/external/L2_Dj_128x64/frame_32.png index 806f2857641f0c2ca4958d9cffc61ed7e070faa2..9021fdca14fe7789de5aff3e51f7ba7652ba6900 100644 GIT binary patch delta 280 zcmV+z0q6d*0B+HkHbxSb0a7yIQdVPk8}Qe&b>zX6Yvjy2Fkbt=8Fz^+F5&K zXJW4Gp;2g}Q%_OHOg+V?YwMW%Z<9WEz_G6|FQE?+9+ka88)qjiIASI2;R`kaO z)gU^NBnxInA3&8->@8<^ znEYU4F~#r(lZ{>Ud=G+r>Xwdy9+z%u8Ulxf1ASoqLXxEA10=6<^;bublr5kNlCS^v eZ$R~%9Um7NrV)w$)#Mrg0000-B!BryL_t(|ob8dZN&`U@MbF#F?#f0;mu-X;f~Bz)K@HgZ2g#o} z`4YGAL)PBH+9qOUA;P9}ll585nweQaLBYyb4TpQ*yO$9qoQQw$Gf<@+uvm7$1>m7_ifUr4mb`K@*Iailk*U)c7Hnxw)(HB4|4LP@}fU1 zsRzl4s;UK7qA@I7mm8h0;bLQXGr|alUR!ZxR8<=y%2r{4L_GqFnr*`%NV;!miM?`m zixdYNiXwdy9y7NzkAcI|fj$s>Np*D(*^9dR>m$f24`>b9*MIvr dp#IH{cNZC^i4aKCn*9I(002ovPDHLkV1kPHgvS5? diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_33.png b/assets/dolphin/external/L2_Dj_128x64/frame_33.png index 637993db5c44d14b0f6548bd7338d9bc504e9187..e5467bcfbffeccc5abf864645af442e8564180e0 100644 GIT binary patch delta 179 zcmV;k08Ia?0;&R#Wq;PQdV2mNj|~6yM>XGPpz#^_SdW(?GJ12YX) h9Tb%Uasz`lqz#e$9uN{mB1QlJ002ovPDHLkV1lCNPTBwf delta 179 zcmV;k08Ia?0;&R#Wq<6kp5Fe^jtu|xM>XGPpz#^_SdSk?XzuR93dPr3Ym5@t8KB(I zDp*Yzv(V}*_h^7TNpHcWyR~4qvl(3b#!i{P*kOxJzqOZpz0We1F*Ih>J_B(`1b%4k z4woWF12z)x5{|eIN-Y#3a&DDTj#dH{#2rp7xdv!{GkkhQ;}`%3Z8Rw;8hbdAftd!Y h4vI($KDP6<8de2FJLGN_;xzGE(@52N9 zzvC{BfS@!2D(#fxT?%gp#gibVPS;XAf@eDchv91&zA!h;V}F?7VDZoxThSO;z5rU> z_`Wp8_jzbU25xz=(uVsi=PI?4*O~@Y=XM6b z8@Dp@_9!Y5J&`sr6!D>@3s8op0oD0>N&ssVHjMhH5+u>Rs*4^{b2pj>`VTJvegX2& Vd!D|SCZhlV002ovPDHLkV1n#0!qWf% delta 429 zcmV;e0aE_O1IGi9B!7-cL_t(|oZXVWO2c3jhTrs0X$4zsL=Z$A6hs6k1syunicYOG z;MhT^g5(06vOCzhh;$Os4jpT|1d-z8B}kF}sI3P(6frHvAzz!5;uZK!$&=^2IVUH; z|2yvD2nb3epwdn`?xpZ{P+SR8>U1r|BY3tGa2URZ;R|!aJb#7>4i*oMu@#Mh3wV0@(k0KK6xb**VYb#7+> zyw>M5^Y$nz5j~MMFck5ir3+AorUBLYdP)FU{42v@)Fwxji0)Ng^dU8OqiLZ3@B-i$ X^3QvoMjdQl00000NkvXXu0mjfqanp< diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_35.png b/assets/dolphin/external/L2_Dj_128x64/frame_35.png index 23da46851df7f792d03709eb41ba98182d17e224..335f819d81d694d9531bf75b5680b6bebeb5d068 100644 GIT binary patch delta 262 zcmV+h0r~!;0-^$tB!B5iL_t(|oW+naY6CG4MgLAU>=9Bd!&ZY&WKy^eK7cV>2~}c_ z;9?Of!jc08SHk6~bZgi&{PYdlK-kN5KtZWpSPwC# z(6D$arFJjk9iP{RC0U{4&l~DU;p&!1vAV&dRqw$VL;b_Zaeu^8-4F^QwFz(xD7>Wu z0Dk+Jr>wt+5^tEge9YFfD9FVfZ1K@5(8WG?RQ~&?~ M07*qoM6N<$f`2o43IG5A delta 264 zcmV+j0r&o*0;2+uB!B8jL_t(|oW+qbYQ!)QMZc#Se1sHca5e0SLW-?J4iFYsLY0^! zq%cB7FgZ}zN^I#9ge6sqY`G()i&{PY`}zX@^(eSQ%-kW!v=cFE37r~clqMj>IJb)! zQ|eeEc~yrS@r3tt$5PDc@#hQ;q-ZW;oGCXmc(&#}7;|b5Mt^}bwq}M2F8g}Dc$UZ-NF|Pr zg?L)_S4x6&jw+a zuv>H}E2Kk*h@iR@I)|X6&>`rghoYm04jE!j2pM#+AW%|sY#}v~9V2o#$9X%<=dOK+ znQz|beV+GuUIws8P8PDDAvT3p*ai(PK~l)Uu7@VI*aLtn0DnOO_yF2;;XykXZ5x0> zwtBY`Ahp+xMn}M|w^tCf3vQwcpoVk+0Ri9wG^na4JoX;A*of~@i-nb<0|Nq}Ee`Jc z%%N2eEw~5K{=@IjO{gt@j4ECV|U_QUD*yHHwW6l1^h* znnN4hfGF{&>VG%3jROq?s5rW2#FHty+)x1u5a}e+ZVsp|4vVzWFceZ-W@!;X0V}-~ zy8Gi>2TB$9KZ7QB>6gv`Ocu{ZnX@={2CX;lyL!*Y0fh1%*Kz~7V4)fQ6N9c1l3?RKDGPMR7 z2kT?LK7oG$9pey6(W5RD8D8V~j5t>QPV^g`f)8xoORZQZq$LDK$w4vv=5R&U!>~?D zGP344+03%#csV=|8+U!B?abV))!Wx}>3Rsrt=qr$3hB@xBB(Bf&LQY1bO<`FhoYm04jE!j2pM#+AXrJwv4vI>*-;{QbDUp?nO*fA z-n{qwz3=z;{eBt1AX;figN86Jw8J)NX!D{%26i1ZiN!tuRDTZeqJ|5g<5xJ)2{E?` zKrUTB8&M-sdyPg1z^+p(2-*faVg*nm+5-;{umPG>T@wzq4I2}29rkQtBEwLK#R!8SPV%)WPh>~Ag8%d`|H5LcRBBSklYcO zUWJr}@j2TVwYPw-3Gk)p(BO-Vu5xl#EF*g__ybnX1vVZeR*X~9<^yA7py>awxF&19 z-ymhluUb|*wQN{U2FJm~UR&unSC}*U2U@P&^Z~i^b^iF1W#fobwCtsoV}vuk&Fcdn zn9VM>w14K)&@(LI%6ti{_|q#6Ziq~tmQco@tNWi4^C|b}x68fT8}Cx1zp3=iRH{p* z!quU1lvKCyhP$(+sfF^iymeD^A20Fr#k7}wv@n}ZERP3ak45&^V|l+_Dhvj@qjP?G zh>`h!<*9PMJS7hUX)2yYUMCB0mhV<}WOBq0&m-hD6Gaw1#6jn>-*0vP2gk1bsHZ@u QF8}}l07*qoM6N<$g0q-F`Tzg` diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_5.png b/assets/dolphin/external/L2_Dj_128x64/frame_5.png index a14d625d32330122ba38195b66e3388013caa57e..c6f556fbf46cb6acdde6945c49ce0eb79bf615bb 100644 GIT binary patch delta 539 zcmV+$0_6Sg1n&fpFbY8weX~0ui>BG7kvcPfW5A@AHq%x}YPS1(*x2kGs{b&|d%XYt z`!m3CrGdZA@(uEnOg=@-Nw=FKRV^>YV<1 zbE32LA)5V#?v>^4{(7@=dnOM?`@3-GE}PB5YP(49ooM;<4LpBUbj_!$B~z{CJ%3z> z`E!;&cAAwb?;u+iu^G%)|FjG3T)RL|Jc>6if!;(aZ)*>_JzAO<{>7Yv#Rk?~kPRhc de!G`G1ggH^Y-T;VfB*mh07*p#PDHLkV1nl!_IUsR delta 539 zcmV+$0_6Sg1n&fpFbYu+eSi0d1WmJ{kvcPf}8Xusou3_=p>ylj#uWsMAA8AF000;OpW#sq=JgtTQgvfYjcHJInl_7CBI zYbc#q51pV7GF)jCj?jUm0alOozl#6xlij#CBs{QjRkqH=-@EvP7r~yvh6E?zwM|39 zWp-~@-f4;smgEH?kq#_1jucTdkRg;b5R=*hP=lH%5_x83kYNA-v#bGOGYc?hgKb>^ z={}(WU}nEk01!5V(j_W3fv^Uy=_CGsRQmwVF9U)c6CpvAZGx3Zpl#&S_$a)G>hwE@lfVLLNBL@O7_qx?(u=!;r^4O^$b z-kfUhdt)mbGX^4+@8yW(cwPqh0A)Qu-+=tdn;W2d;`y46>a_LdP!GndDolN zp#PkwkL^Zf#_eUxB07h~>YrAjm1`B~iAyo(66j5+^0xM%)1{R~;a$urSaz^sgG?wH d{oB3t5vso6Y}QzgmH+?%07*p#PDHLkV1f&(0i6H< diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_6.png b/assets/dolphin/external/L2_Dj_128x64/frame_6.png index 2087182d9ec1c0a1c3e14fceb4d69800d14f0318..4a6f97d20d6de580f77b94680594236e831a33e8 100644 GIT binary patch delta 567 zcmV-70?7U41my&fIe&LlM3B}iSa59B#i6Znagw@;gI1+DiU{hWv^NNj1qZI%g5aATpZDJPeSg0PpmJzr4=*LdJiL_o zUu|NG%D**>)6R83V+a7d4P#Hur|b4`QljV7i*|0fqxH#nJWO8vBm(J4dA!_ zQy)lf$%4}YSs;Vzwro0p^!XV8J&3Tp2U7Myr%l*Gs)$U@0N5%aKmgJGZ50F1;yEAiT}bVU%D%*2jt#L@#M3Te$@7i{(trI3BtwEp3SijELm&4eYs8; znUt_xtYCQGU2l9#Wd59lGW$|__(?0Ko#S7wjqYr{OHco#esQthSg#arOw6K4V;gsJ z*s3h7*7EY!NiToA%JWxw*Lt$LWND?@ARIBUems@;JC(wCus6NzcTO->{99Y7tv=7+I-HUFK^Be#G002ovPDHLk FV1lKx7(oC4 delta 567 zcmV-70?7U41my&fIe!-_B1r2MEI796;?UN(I7!{aL90?6MFe$G+8YGNf`j0cZjK!s ztdyFQf_19}A;GrhV!))9lAlFvVz2iclDqVTg5YoZ@puLuP*n1PD@I^B7vIM5woxANH;J!A#7^pbUQ`k_853u?qVR zb3^1;tRyGWh<}amLc-bav;`xii^$XrfTI%t_|Uw+qhkR^Sf>ExL1I@VSB0d7Y1v)P z;5Kl24wRG~I+VzC6>Ui@)4u2b1S{hLT@Q?sc}h+yV1_i5)fbEFvY}Lm)FfNAtj=W7 zw45}KLyG>5(%^;svUzc=_v$SL$eoqK@h3&|uv51B*MCdL2o^_sHpkwvWUux1WjkSH zQi4*Uf>r+NmB+V4=FdnVv(L5rAB;lMJ^Ja&=+4%g_@9hwo#n*gAoh++hcjVQ^}9}d(+FRbAqYD@7h8wTU(Ha zzI2z*Auul!`B%le^<9~tQo-4*&Rm%_4{^{l_UGF}e*oCZ-HW0^X59b)002ovPDHLk FV1l=FAkqK; diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_7.png b/assets/dolphin/external/L2_Dj_128x64/frame_7.png index e9c199f1e1294df818681fa96dcf09d8a1e3cc69..cf626fdae2bfb211ed226a8ffefd612cf237ee9f 100644 GIT binary patch delta 532 zcmV+v0_**%1g!*+B!BctL_t(|oSl=sZWBQe$A7zfv5h#K6+-eAM%jXnA}%Sc#2v3d zLE$$53O)+No$2WE2ILXo3AloSDx#!Fu?QqObRm(5k@tq;J{?hU)!tt-zn%HdEI0tG zslWE{pMu$35!5i-63j&?pm*&QMq3g0*M8F%)cj;x_Jtk)!hZ+~=K=exxhqan2+!Pg+`_7-+mM>^?R3g zUj0UZBg(LvoggdOSY0y!BxEKBh%(UJ2thvhdmUpKm9O3LNyoTbK7aKS)zuNJ$&;r@ zzm7u|{W|1y%zsqn+Ol$8FKVgtrVdZZ!o1VVjvY zI%^0j(vr{U7{m3O^fBn8hVjtErdSd!sC$|5Z18@!^VE2D(oYQ9UQ~uM8Lg)`uZxI; z^iShy6gOjN7zu#NRKu9IgR1@bzRsGIim?&fBKAZ)m4<_ZVNRR+- zU*xmZRUH!A+15~{;Y_IoNW@tNP`F1TU+e)dL4uUv99XL{UP%yXuGQd7E!6vg8%hw- zg-gFxJ60s9$`7g+We=sSQcRUH5h+D9pnPvhG>+j63-v5D5I@+80OBh`GHBkzX^bN8A0000pDCobMsCwT81e4i9W6w>JAX2i<)r(K&-R2ms^}9 z=&Ug=(vnYU8H4qk^fBn;n(@%YrdSZosd}06tp9$movHEk(ogi8UQ~uM8O=;@UKbGw z>7RP0QC!>5cn_d5RWl}yQPn)Yud_O3%h-r*5c?vY(SO0}T%?ph;TDkC!*RJM5+r~- z5czENwhjr6w-r=rSSd9JiCAR-g?l9O#UAn!BuEL)fwdarl?0LcS`E%rLbV^bfdmm< zxb)k0$BG0+_eI$wDYq$Rn=%$DMKqv%cTaH)rdX)F)Ij`TCjyAC2uZ*3H{&mEuH2Bc TJp&2=015yANkvXXu0mjf(A@pI diff --git a/assets/dolphin/external/L2_Dj_128x64/frame_8.png b/assets/dolphin/external/L2_Dj_128x64/frame_8.png index e0946ff7e1ff68d1f19b105fdc6600ee2e23d0a6..40facba15c6d59fa54c18cf57a2fcd111af424ab 100644 GIT binary patch delta 477 zcmV<30V4j!1jYoAbAN8}>GgZh-S>WX-~pVa8uQ8j5{&*5S|*0(wg(LFIaZfAzb8Dq zOJ;-(of38$1nvK+m!K-c`)YGq=NGAu027hOvdDnV&OEwSQp22*e>lY*Rl@2ASIi zlt)+3=ZvtG=Q@qr0AU0+49#@%4YOc$rmyoJS}?jnfAY3bOW4^BTlMX?ApbJTT|s3k$Ja{J*pYk zp)KMe;a(lX<$v9)&dYJ5*}b4!WTQr=`^xp<^v1f9@r4m)9Mi5d4NZ&*-ju7u2-d75 z<>TLV9vcCG#ngGMtw>U#Y0a2*7x!WyCG`5WBlS;>*>XcDN(z2cI&-$KsZ=PR_x8?z z0+m;&gTt;QyP0z3r2a*wbGOryCdyS9Jh#g!zj$!^v=IIPffoEB ThX&WX00000NkvXXu0mjfj_mGt delta 477 zcmV<30V4j!1jYoAbAPa;-C)GVxbSd<1gQUbj)j5Mb$Iql%%)V}Pzbs?YJBN9Nr+_NZoD zhqj1^gnM-imw$J!IxokKX7_?_k&POe?km@a(;Mqb#urAIaZJ0;G&C_LcvG$pBUrPN zl#hScd29sbkeWJ=wG~M!G_4u4?qV(mQbMm^J5vADm@PMiqNLzAr88&yno5Q8d2jFh zCr~*;9UOKg+0B$IC-pBfox7cuG*Pa?;JIB+`Ne~)hgL;l1q`k)6Rb(;C|3cn`4cRw z$*OXR)Q>N3Gq(f26!7fd;4Juoa>%B&1k(hNB!3!7L_t(|oSl=uZWBQehrivsIF4e%5~0L}!CTNF#ipYO#2qCs zfE4ovPyiiwhKeq4Kpp{}fCB|7Rg@M5DHjO|D%g-noP+mN~pI;W{R;scLnrOr5%2AV@Dlw1A z0h~r9>fiHlHp#n%S)U$bz!Ikz&77B!OpLA=0OHdq1Bg@5%y}$eE}UO zBI2dgK)(e@%yA0DuD>~qiuT&Ou|mq}T{h1!nkZM|MZ$jgfv$Hf3i|}kCWpQ-x50F! z6amYo$1`X!8&Xybl{#QPs~NMQs}}{8ml{B2vl)Mt%!W$&1)cWnLMj^0VgLXD07*qo IM6N<$g2opMSO5S3 delta 568 zcmV-80>}N+1knVLB!3u5L_t(|oSl=gZWBQiMbFG`Y)3K45TV3{!Bfy7#ipYO#2qC+ zfE4owPyijfhKeqKKt2J!fCU99Rg@M5DH{n1DwvQ+tb=DCg`FJ(shDc_>bf(Jko8+CstWREJz!Ikz&77B^jE$Z$0K}(J1`wy9ne$%W=C=Yv;_|uO-V2O{ z^69g0s4z!Ut$#jxjLgolL4S4*`Lsw|Wr4ABa3K5I>MYDr(vM#2L12iY*3w(&40Ro7 zq8&qf)L@5G0Gc`tj4N!n&}n5|tR?Fa81>Q1A6+8ZH$at7E>j=TgX0(-QyFHQhe-sH#_r%S^IeDvO^SLJKqm;qZdR(ym)}_SI}`H zB3?=j^qPRg9H&6+dYgl&Xsx{;DWsg-W%CT9iE<@gB;>>Qb(OIwVSH7aZaay6imI;04kfU_@`y|sFdHG_UuC0k@WNc0000Q4LD>cnAgGEnF6I&bDd!+;Yu2Fe;`of=&ZtNc2POlU$47I|R6 z@WmNvkD6Tr5P!OB;5&K`byv|3C?XfkL0o2_1tukhMR~E|UbQc&X@FigBn_07H`Vep zAbw)rg;pdfRKJ{<-T?G4WxX9h0T;%yEh&|@OqFAG^;>G12lJdd`>16sQkt}tnB4*s zj}r2SPIF!YN6tI|_<@rlX;>DKclVKt>X_w*F)%RTpB`mc8B>g`;T~`c#qlHy1G#!X P00000NkvXXu0mjfAKAV5 delta 419 zcmV;U0bKsS1HA)~B!7fSL_t(|oaK|TN+VGehQCRoM%N;if|#(?BC`4dniLim7Iwlu zfQ^mKvfBl_eF;gcY_Z*9p*U7H!dNH@0TmQilt>`iotaD~zr{LtZc_LH-ty!B|8vhh z=Q^VQWO!%5aVmWvtZLbo=vHbLWlo0e48e|N(P3PAno5Dw&3|%t^0=NVVwn7OYlXI? z&ceTH8rp_vamY;-p49OVYDSSOK-4LHOha90Gto>z3C5l&r5RD--}EJsvk9?a^w~bxZrD7onlfa$2CV;?r+*AG$03a3>(m! zzaear>zj+$H-DE?^d0iHqU92|Z7>afl7T++L6R3I7wi4bwj`Ae&{|PaS7CBfEqwy~ zakCd%kt9#89kU@W_mLaAn|oaUL0mX!Jy?0@B+p0Bnuy1BLe^c N002ovPDHLkV1iuf#a93T diff --git a/assets/dolphin/external/L2_Furippa2_128x64/frame_1.png b/assets/dolphin/external/L2_Furippa2_128x64/frame_1.png index 91b3df523dec616bb2332a8a4863e32d128d24b2..93ff00a848b0b8acada6e2d19d0d33f1c5446a3b 100644 GIT binary patch delta 440 zcmV;p0Z0DO1JVPKB!8JnL_t(|oaK`}OT$nUhTkNWih`|fiXXwrp{TQ<>EPhtpp*Ur z7neGSZbfkLPlyg89g1#FitSVcp&bMVMJpAGidwALq)qZVcyn*szu*}k-t**~lSCuh zOUFM0nwD$>PMQnh2rFc5jIwm>>##GS7G8Sh+pq$fYvB3%b$?AIJYev&5|Y-*=Il>e zNxy;CTvtvdie$5KaUc_sIM8aE<4T$XzR_P(zyx|eU@C`2tUojg>M2Q&32iSG+Lk*@ zaqs*oE0Nlgwh8=(sm_jLzFO{h0kTY>4q*)Bb=!14l%rS{x($#2Nf51O8 z>SWEx%Sl(pNS6CXf}3)F0>I(dr<`<=B%=knoPSKx9ktZ9%Ovd$2KUgh3gBf_ep@;c zDC4mvHUU7g$|zZtEx>@Y4P-(IKT7(RNND1(bfRqs0x{mu0kQ}=7*YfdsR&xGWQR!T ien&zM9)L(EQ1uH#tV4O8Ah&z~0000Qk<=hD5Gs{4NNL(e@7lZj8@%_v*M0@h_{;zK-Sa$mrxER? z69;-h)<6RL(s71ay7Ub? zBH_;z&_FZN_J3ZUV0Xg~z#W*tT?|!~sAZ5baU!H?4ENIq?S3)G6naTlqiy{G|H7z| z6(cJrU5k?}^o<5L<>CZ@V!Z diff --git a/assets/dolphin/external/L2_Furippa2_128x64/frame_10.png b/assets/dolphin/external/L2_Furippa2_128x64/frame_10.png index 755fb3e8622f74b33fc93c50ebbf0db8b1dddd13..d4ab0e356c27eb8d845da96515c4ed54ecc130e3 100644 GIT binary patch delta 521 zcmV+k0`~o*1fm3xB!B5iL_t(|oK=#)iqudP#(%kqvm-2wAhI@+U}L#cE*4HK?0tic z;6rF3lLruNECuHotVKtwtsE;05oWg<7Z)b53zPYid=@wNCUdLgmvg@Jedh*H9V?bQ zl*GEwvIUxks!vxPP-oI&-2v*2b-n8X#ZtWoW}0j4fB}Z|@qfnva63)+!5~X~iBuph zXI^yt=Rk}W-fF}_iO%jT7!B2Zx`6U370fuwg9gueUQg2N+8GfA>}xckpN zY9vVNkkuwrXlF{Ve{wm;+t9WL| z_D|T@FM$C}@P9g^vLLB)Fy`shX*>v0FobW?(1OPRrv9Z#&w}sdVDz?isT2$+{{7V! zh_cf*#t(oOBR7NRrkIsad`StF2!<$C9+F{Kc5z z4k!bF6@ba2X2dxkx@!Zf0>Jofu*hvfCpwS)Z)rWQ&wpt(%oQw~&N7x%$IabKtd`nJ zl?SHm6F~syIE@>d5)U?Peg?Ut2B5cJ(IXmG5IImD+Mu5sWBmf)H(=Ljf{YSg;zvo6 zcHhSJ>T4&QQYce5WdfH8YR3XM&!NaW8p%U#zcgtjsh*nVCZzv->db2`AcHCZ0000< LMNUMnLIPldHbM0D delta 522 zcmV+l0`>i(1fv9yB!B8jL_t(|oK=%OZ_`i|h994pG)R?#giu+KBNoPHtQd$H*!c%F z5YaY&`$EKue;6GW2AzNB{!bbR);1BXYFW|HLmaQ9#R zsF5Ubd|3x;?!4SexvCmE>DvJl2YL?ZjI=R}@%K|Dk@qff5Y|FEl4P3P+aCoysw1Ac zw!ITJ?n_{R1%Iy-3I_&73T98Ib&Ur>3`XZo+;QMBfR(>A={oS86ija$m5RYQ@$av; zK$x61HhuuS81F`vu=0tdz>20uX<(f;0IUljx7r=RktD4bQZ;-BR$D)IjwNYT_{G?8 z2jl_33c!-EYH`ko_Sk?T128`g7HM^*s-pAAUrVQPeSh8>yo5O%0&CAJHWo77*4TKXgVvSHgN3z;D2f(Sn2=UgBFx zl6K$5YWt=6kyTEu+Jy8UeCo_=eIBQA00000 MNkvXXt^-0~f=TJ{EdT%j diff --git a/assets/dolphin/external/L2_Furippa2_128x64/frame_11.png b/assets/dolphin/external/L2_Furippa2_128x64/frame_11.png index e513b85ca35bb849c435bfe69946f9f60ba6b8ae..2d98d57ab2f86cfb5a51804196a2bd979708d35e 100644 GIT binary patch delta 678 zcmV;X0$Kgi1=0nOIDcvay9*u^w`~?Fy_KvUHiy~{w7v8o^}5A&54H#CE=8~)B_pgD1WCH4&15r^&qHF?^gI6k?|Xdjy+2Gnl^s!dwhbT3=yQ0hs&e0(5r*j0Avs={jV;?B)2K<(Mqnn1UTjtJu;uMg+if zxPvw(iBoV5wPE>W)9?~k0fkgxJI2S=cG4oOJ-CG%-o_~XHD2J^yIlo<_g&9+flX|7JaHC}m zP7q!6{;mRi3*h|$_`{AQy|~c=7Jx(jz9i+3S~h>_%_yKUIn~ct*MpS$1caFK=y1mB zWKUHvov3)18~u(XsnfKKlkX0mM1FTtW3aR69ZlWX6o23Y=Q$n_?^U>%{jV5`juradCd^W&rc=U6O_wg=c!fC+XXG zosqOlP=9!?`#fw4e?<-Tzz&V-?i-2nBQ@0ay~}NvxI#n5?tGP7nQN}(RaZ)&{Ad5^ z=*zggwgi6AlHvIa-qLEsv4|{K1pl33J}PXL*P0>0slH5WU@-V8hF}{k4+WqQSorh; zVE=yYTQzcx5U+Sn;DUAT#<)g^y(JlH|2Q^)eIGGi*2e&BL@)&gVX29nEz=gB3Lvj1lnV}G8vqP6}4q8)*7k@$W{^jmeQUQhse!0Hq zI|YucuS_Kib1^(^eT`8CVD6vu(A^0z5&-I@YmoiC=i_&lW3p^x3U(;1VoTc?5dhEO zC$uqfoPukp4a+B+hL^YsD5L`0F+Q%glNMp^{$1SgM~u?Lae(LUbrk^K_dVMMHl;bP zJZPC8j<@{`o_{1ZHl_&PNMP=08jr!7Py+bvDp(fx=oR@K;6UsH@0dmQa2U__Rn%b-0*)uP*9`=A!+x zPtj?fk#bFHC=@@NfLzi*PK*pWU}UgcoOxVu*!YrL-~v(#kuARZN%crcL;JN2P#fq; zo%^I!Tdx7I>D6iss@-{9KbP{XUT8PmvX*A{a>j0WktR{vX10r~m)} M07*qoM6N<$f`EBVQUCw| diff --git a/assets/dolphin/external/L2_Furippa2_128x64/frame_12.png b/assets/dolphin/external/L2_Furippa2_128x64/frame_12.png index 867f8d09f1f7234ecd29027a3343655ef2360519..95d09d14beb7dc18d38f07ef3930e19d25c04f9c 100644 GIT binary patch delta 496 zcmVw;DEbYHvN&rM9&={D}%zC~OW1CnW{c}a)RR@E^^95+iKpH)VxVoi|JRUUv47-%(tey?r3H9}%Gco4Nejf97{sbRERT*yZmzHg>p!=jTyTJ?102W> z*_-LnT#<=;+s+vPApowK_Rjzc4_4aW2%zAd^@GKmMl3nD@<_La-zVZY)uaLmXw7Zw z*6$K?1Jr$BcQ1#_i6yiE)39}=+~Dxp7_$cD4ikQ*U};9xVB?fNjSlpl4>1>E2w*$lkmkb?c1_?>b*0wg%~XJl$8;i?ug m;antEOgT#oB-iIx2mA%KZ=_mX&eQh*0000um znV4t^>=I;4*DDZ$U4S!S24o0E>^Xf43?49CufSt4;>tCNYJWuthElV%uJr-Oh%~PNW_kE3lzD`pRgm$0<@DkPca1Z$W zQU~Cx>Hx#4QZ-%!niw|3&F3b>@AX@EZr>uTngL0)*S@3$bX9eX5y#CENN1ga>X<+a zjH+shssB~rEq|8mQQD8wt8{=`q4L#xb*!TQhbCl?%Gng9o~ zL-J;NG*=|z-gZ+mzz4v!z|`+tDK|KLHpZ+$xx<8CF=?1lHP|?2NUH~f=LO~>6aeNE zWby((fGm2%{+9s$5asM88j}M-ijM>O6DK)fX6b8rNX~vk>YZ{t0>nG5V`Lg9{;K9O mIUn!HiYe!zgXsD^b--V>Z=_luZ;IFe0000tJCrz01$&%hZuaRhm7f?S2ao!HJ&lUu;|YLxo`@1poj5 M07*qoM6N<$g5zp2y8r+H delta 106 zcmV-w0G0pJ1kwbMg97=&v4wE~Tsvt2(tbmosxI}HZJJ~PxxK}J6xJ24CF5WM%;`V< zz(^&<_woq^E>`xJ{3L+4)b%7 M07*qoM6N<$f)wpEN&o-= diff --git a/assets/dolphin/external/L2_Furippa2_128x64/frame_14.png b/assets/dolphin/external/L2_Furippa2_128x64/frame_14.png index 1390e129757256e22ba30c74bc4d681ac4ec1ed5..25b4ec565358dfbf2ee26bff84f53fd2f1798084 100644 GIT binary patch delta 627 zcmV-(0*w8O1&jrdB!5#$L_t(|oL!SaNK{c2hQE8?vqqV4lpq7cDGFLdj=L!7J%fmL zu3FowaMdb7w0W&sCPW~$aDt#^?jpkGxw0V8KuRcZLPHJ1Q3hw6dGDPT&-=#dEWi7o z^Ph9?xj?^2fh08KAji=tifpz3N2J`6;6e0lT{rZc8+jF*TMf_S;Z*SByecoW+LBd^$iq_wXusXl6N3_M6B#H1<=9qaY;7iz zdjD3+fOnftDC0YSDh7OCD@vnb{jHlDJGo7;CkOW}1KNk7L#$x{O9NH`Hhe;Wb`97* z_Gy=ElW919_%1<8BOTq)s{!$_30SWHIYcCo)ljPP(|=CGG$Il>i;--|>Nq%PKuu+p z2Uu?QF^EW5t;+KSDbAtDXaL)0bQ!RodXbJV79Qb;luK0&ptKv_oAef-7}tmn7T2yT z`RJi^tQZ}*Iy8r$MSMggl-_Vpz7FPHI2X_IN=;!s0jM_@GME5Zw}D6p4AS}fhw{xz zeYt6~J8aTb#BAXeX?VrykOcgW=H1!Lp9}~%(}8lWdQ&l9A@bTh18O)I_uim<14{6= zF9#zAEaCU$?i}`~fdZWHQ|80xCCEoomxjm^fX-6!gl6a)JR`tLz&~1h3VB{;Br5;_ N002ovPDHLkV1iGZArb%p delta 626 zcmV-&0*(EQ1&alcB!5y#L_t(|oL!SmNK|1IhM)UmjWXd6K?a6X6tsvOcTv(EgNSyn zTHC5{)ha=>xvg3zL?E?rf}myYBEsgnvLMhvN+@tbLk+`G24|eP_r5KzcYZp{=X=jN z-#Op=0RvKwdYF)gG|iEhwpxHA6$9P% z1KWuhyxVdDP3-mGYJ`VN>(>o^ zbTQ0GF*bO0cpfi>JR}9`3-gl?M~g9^^Y{Wln13<~hJ zKMkWXSjOv3-)S;`4o-N9_`_%AXG2w0la>L@6eU;9Kk5e0@UiOTA6k0~dGIz1IRF3v M07*qoM6N<$g1-?Ww*UYD diff --git a/assets/dolphin/external/L2_Furippa2_128x64/frame_16.png b/assets/dolphin/external/L2_Furippa2_128x64/frame_16.png index ff101259e4d9bcc231ddba4a3d0e582e47e2f2c8..29e39b5c1420cc0c7ebe920737ca79465f449051 100644 GIT binary patch delta 58 zcmdnbvY%xGFO$)WwGlBfVtR(zrZ0ETxLR{2SG^>C*;VV%`%7=L{@`W{Ec@tl_Q6C3 OAnzmvv4FO#r+P7cKw* diff --git a/assets/dolphin/external/L2_Furippa2_128x64/frame_17.png b/assets/dolphin/external/L2_Furippa2_128x64/frame_17.png index 3c5c374696488894b1b32e74a5a7506496614ee6..74bbee98ee7f2b660f6f1bd88ca0470954662577 100644 GIT binary patch delta 544 zcmV+*0^j|)1h@o{BYy$^Nkl~aBi90iykJlpiPGU}T;o&{!p8KAA z96{1x5iSt10*qk40w#7>fxiM2np65CNh&2tT2io*a=Z$r3xCjBYGX+;$2j8uu!>&Q zes`&fNLwNh1O{wMVk_zDnF>iNo01s*kfOFEDUtNv^LF{k_n|b4-)+f;*Me;3UtBycgem8u z1@Ph2*o**xK!4o(7Jsa2xSc}l&hz_A25EDnRlHpSnKpRTfYcBjYA+sURSmQ^ILv}9 zY**kj4|C1h_8yP#3~KxuO{<~_9$aM&j#_|Ad2K`*;X(6(ZwED;%ez0pg-__Q`FUfb zn1mElfU^c%fY`IW>k6kO4GY^?xl@}+3M!!6ZAp3Mx__semw@<8^_6r>l7^aC$8-lE zVtNFi(skYd3fXVkl-H6{$&BiW%Q_>*uw6a>G7WZ72S7a!NomqmGSBGC1L`LevJ(Kb zz+7)EjjMh60{GCdiZZY&19C~4NGeUrUw}H`7?30IdTiVEXyNp5!(wEM7E)hoFN)3$ ie4(N+D;Z{s=e2(V$FR-?xlcO)0000(#~HXyQN~kY@ucXg5}sLtY|=yg>_?=#GRSU$7?b7PGU|o@bI2<&%Eax zM-VqygbPeq0Y*MI2}zXIR@z-3KW32Ls0Xas-a}~~z1xxvuLbGczqt6h0A`$9 z%*yrQ)YyywfPap-_bvKZ)o{DH)}80~mkiS8Mk{~21X6AAr~!$c&!P6BFs*8!z2RZn zNrQF;KJzfsylvm{_|CA#uhFb38souL*5IfGxD?k$BojPnKJe|J!cyM*2`+p>kIm+d zjba**&j8LEZ~-E(+N3L-mK5f;v0|q-mDH(#Znq_6m4EA=Ze9YSGu0~TmL!FmTE}z; zV8ZMOK!xkPDc5?xX;WTHN+dI?Cob!Z7{hk;``k<@~qt100000NkvXXu0mjfJ_8aM diff --git a/assets/dolphin/external/L2_Furippa2_128x64/frame_18.png b/assets/dolphin/external/L2_Furippa2_128x64/frame_18.png index 5d7672c4e5f0fb3ae469d5292131127de3616dcc..2a9e4884d9d84e532b068c7bb4a7ba8407a2aa0a 100644 GIT binary patch delta 488 zcmVucFej)syO#cL4&VK-(0}9P?P7c(N!LpZf z#U3l*j&|x6FXUcG`~b)RA@oJs_3SFy#VjIIdWK^#EIBqy~gM5Ug0z*g0t)^Kz44M zL5FB+Q0=M7y}{csUsZHlq&QBM{C0000+B1 z_nc$I{Big@*zJN<3&INc9fgAWmVQc-N=cF$h53i=Lo58BOn?6bUUz_A0ul_WoRms( zNJqL-EB09i?MPu?_BcFnNFD(tAaL}m@V}p^{S27g<@395H<~;OIR13U8bc&aFYb?; zpcBY0Ed-5XEKTDVD^}qxLN@hJH9-TIa4c+q4~Ku$EdXF3Zhng2HZH?LXU+Xvtq;<@ zrN!cT3uId2PJgei4$z)9<8fwVpv|?tY>)+g3qEi=*R((L@z`R`<;(WO22JqbJO?Z& zFKm;Bcyo;!&vkAc-GyFT5d{5V9#xsjwn1tOtqeMz~} zD$&x@<q4(O-S7|m@4rl1G ziiY-ylqMr3wzt5-p@i&Ut6G!5Mt71w(uyIeoSCRzkHYOd`9%lh7SvBl2axIPi&@S) g`!e*}AgPx9H*VQfb;v9V=>Px#07*qoM6N<$g5qoH`2YX_ diff --git a/assets/dolphin/external/L2_Furippa2_128x64/frame_2.png b/assets/dolphin/external/L2_Furippa2_128x64/frame_2.png index da28883c8a87e5cff5c2f4856bf611607af70e29..a24187a1bf0ed34c85811ccfb03f63d22dcbf344 100644 GIT binary patch delta 454 zcmV;%0XhEP1K*dq+&_f00GI!z>q)CHUk3#LpKl$ zomg19AjSly{sjia(xDPaFtH)*9RWfhh9c^!NJyX}x2cF7Kl?Bw@7d{J;EtcpJ@4Lg zpAm}{@Sg!=1`8k?>PB6n11agsSHRPNbf?y$w?*&wr3x6^;D5)vU-v3S0T*5#)J(_H zbmi}`GChHObt$YAAEfEz&9h3;fjsREqK-2S;e>O^-Omp6;OrkRZ=81?YvTU*Nu=C) z3<_N{TeZQ^qxDX)!?Fjt)_Ir|)%u6poxC3=t+@xH_|3-AA7J#vP`zM zJp+$93W+<=pRH5AZj7bTn*5}V+09LQqM_~mW` zpRV`_(HHHhrDWAVEB&->?Uyx>#ckWQb6^AtXxK7vraxdLi=_epOiu%MecZ_It2#xo waZ0hT+8mPPF6mmbO%_`spNA1Zu~a(2KZnm-1m~pJPXGV_07*qoM6N<$g8QS~hyVZp delta 453 zcmV;$0XqKR1K$IXB!8w!L_t(|oaK_eZqr~Gg`dw!NyU<|0Robdfgv~0HUk3#LpKl$ zomg19AjSly-U0(+=}-wInAi~ZjwnK{Iuub?MM44g#-t+z% zF&`fP88Bur2a=)g)FnESqOM$cy!42-YAO1d^?qNgfUymJe1H1&s8VEbZGN>d-sxD-9yDM1e|{^9!C<Dfo<>Y+e)#Iv{9R z{GKz7Y4VQIpnnz5K;91t#mH58)4ytEjdYR}9(-Yf_24vim-|NCgw0b2)`=ELHZ}|J zoD-k01N~y0{C#6AjaKA3z1Nk5TYFQtZ$hmNbXSr!)zZRkPB|O`@q*5 zZiQ%92Wlx=c4eiXwyndw29mICyLJYQKpqX7d+seUl0L;&e_F)!JlJt%XHmXtsmRvO vDGpWZLz2o%mMO_P^C^MbhY>)wke7;ohtFFC?p=e400000NkvXXu0mjf2u{}1 diff --git a/assets/dolphin/external/L2_Furippa2_128x64/frame_3.png b/assets/dolphin/external/L2_Furippa2_128x64/frame_3.png index a82e00c0d7b6be2c46f3ff66c7695c5fd7c7d095..16f36b3c443056e16bcb1b2d523d96dbe15eda63 100644 GIT binary patch delta 439 zcmV;o0Z9JR1JMJJB!8GmL_t(|oaK`-Pg7AChM&`3q#6epO^j`vj4_cvfbGD*;J{|$ z)Bp4wY%#~K}xxKx89on9A=)w=+8=t)I z`9IW z3PRgbclKY?hjt);FcEu2OX{YZOHL6@LEf$1_MtI!m`*&X!L{Gid`4Y7` z%;NK4TD@MFDmDU;Yk`-QVEj|)#&p#AOByq?EZ2R`$nr*3t}nzxb^alm$&ABPW1#22 h(9$oBDSTZF{sUMlAscN7n6>}_002ovPDHLkV1kG?(6s;n delta 440 zcmV;p0Z0DP1JVPKB!8JnL_t(|oaK`-Pg7AChM&`3q!I=kO^9ur3^9>E0A*lsU|=(G za$<3DF}gJ{@fREj3j@Z1%`j-ZOe`d2fM|k|CM9Y#m@BQ^b9;OHI@0 z>4mnW&cbyq4{bxbI1%QGy3~o^Z#zXW18JvnHxCV=&8;X06`1-(CC{jer(fd3yvkCh z`)2c**R9r9XR>!5NVUp~lGpyF&fP^e0Dryt21!IP@-B4%`(yx)(Mu?CWu2lGlC{~na^MccL9)5i2OIp3;4{qk z@85e{Y)PtS?xv5*lDbNUGu84vAf9%6p%qE0t2LaM9s@+UUd$UnA>Wam@0EG0=5j iVCfac6pUN`0saD5Dj^%ixgf3p0000Q&AYkf9JHL1=Hdn0a}Sb>52E*9_Z4{MljqO-KIa%QKbHRtFs3mF zjM}=Dr>HLlHKk*DY6-V<61|D)Kd)qfaRmmhC;GN3OOI~B z;ne{Mv4j+PNq?tN3c=sUGF|lXMF-%#iba5^6B!6w&kubpyl05Ba1v5ocNSouun1cx z%}y|T$~A&Aqm3AIWGT3*O-#W^ z4o3z6Fg^?Hrm^uPUo~Mwtuu@R<@S)IismJwHRdJVv=1YIXknTV{sB1LXPH30C%gav N002ovPDHLkV1jYg;DZ1F delta 471 zcmV;|0Vw|Z1NsAyEq_066HySvfA87BhQ_7?39w5FihO}2E+{A{+<|CtMUy5CqO?Pm zuRwv)q=*C(RCI`Qj|f6RASK|79DxK1IpToN_B#)S@1OG(*m5+xGdsIR%$Maq1B_|R z0i(8VmE&(bkQ4`-DZ< zI%#%-*(uiu%8WL)T)lziF~2?hDlC>i1595P22y85sr5TGNu;qCb@MvJHfG!2mgG!! z7u^G#j7b7A&w!E7xiqo6z=vyTgy^GsDk)e_Wu@<~qELfr4jB0rS93971hN#|)MkHb zB!@fuxZ|_HZYmpB@~R0VYMo&mDCa|xDw=N@tuf!yP4h4Uh!&;^;~zNOXPHp6d1L?p N002ovPDHLkV1j13+MNIZ diff --git a/assets/dolphin/external/L2_Furippa2_128x64/frame_5.png b/assets/dolphin/external/L2_Furippa2_128x64/frame_5.png index dbbffaad012202b719686d5b797ca5d72e4b3d22..272d99f74230d4442328b61f6add2cbcf1c83127 100644 GIT binary patch delta 73 zcmV-P0Ji`C1OEfCz5zk(EisbAF#`Y?od@=_u}P(`nlj?nImVH4J|wB4dC72{c}XYB f!w4W=n52Y%CaH57g=6tz00000NkvXXu0mjf(?}nI delta 73 zcmV-P0Ji`C1OEfCz5zkmpBl;G&Oh$xJg}dQO)7oWlo7YiF^-h;AxRa@ONQ&rOFCH| fMgZ}`BxU>qCaH57027U)00000NkvXXu0mjfI8Pu3 diff --git a/assets/dolphin/external/L2_Furippa2_128x64/frame_6.png b/assets/dolphin/external/L2_Furippa2_128x64/frame_6.png index 441c8856710c5fbfacf8e789015141e8c64e937f..7052724706d206a2ed08305671e5769b80fa0219 100644 GIT binary patch delta 498 zcmVEz&pdVmb*iD+)Q>e;dUSJ+P7Qz%OGutqc=cik{sEThqK_{;fCc6A z0Ff6N2%9gz`&jtE5NF{uq_W{GzyV<%woe;g5a+Z`P-4{HcC|W|r~K~VS75R91z`F* zH;}v)W!CRiCDBSjUUzOmVk5rxt|Vttfvg??PR67GnQIro$mdd)*nQyR%`8InNj()6 zEN5$_pRTOK=?ob8Wmk0xFalX}Zfdi)#7GWz{-<$`FM_>nZBo_LdcvdT1;wFed`MDR o^DU!w=3Ba19!3CBVVVm50be(CAr#jjqW}N^07*qoM6N<$f=>S74gdfE delta 497 zcmVkWO+^Z*NP|c6ZVe z!?nF0u$Bz%OT*>AO=)yGQJlkQrO>{x_+A-FEq80&E-3xe`3w zUr2mZ;qnPL8duX}R>k_aK}RDc)@!kDo7SVLYqeQljCUzzV5B-vf;f}tSO6ASe;Fc3icFOAh9vI_O2vnQh}@<08YlF0cx2SK;&~NOYA=I@n#kw`lPOk z3RbeU(oa{`(Rd0(e%V!A0*pYGoEzJVKQ)rW%|GsN9_(jpld7cF6CO9_6i1r!AxUM; nwnQ7uwsf*Qi~!=oI92=uUpI6i?;2|b00000NkvXXu0mjf$Xe)9 diff --git a/assets/dolphin/external/L2_Furippa2_128x64/frame_7.png b/assets/dolphin/external/L2_Furippa2_128x64/frame_7.png index 5fc9ab4255f8e8da76943b1df531f59fb1a68e8f..37d3e1ecd8c7472ea99ff151643a6b82c5f6a1b5 100644 GIT binary patch delta 421 zcmV;W0b2gO1HS{1B!7lUL_t(|oaK|hP83lT#(%TB=qeUak`Q)cWefpd0Cx)t3ko_D zAAp9&hG@63^Cbwago2JxXc#IRld*tcvI$FqQ3AnivV-$)XFm#@d+%<;19;0{zVAEt zoO7=yMo)$R40v8^1f*@fawR&KdJUOVVY5Q=$+765@ULbq@P7tXetx@Lvx)*{cF&#A zzLYKfZQIZY@|P2VRfJL&f7vpM+7#rO|I~&C5Ha1ez=y|w@NGs@te?hTZIxD`dGF&} zr(1nkohm*%AlEAI>Q4LD>cnAgGEnF6I&bDd!+;Yu2Fe;`of=&ZtNc2POlU$47I|R6 z@WmNvkD6Tr5P!OB;5&K`byv|3C?XfkL0o2_1tukhMR~E|UbQc&X@FigBn_07H`Vep zAbw)rg;pdfRKJ{<-T?G4WxX9h0T;%yEh&|@OqFAG^;>G12lJdd`>16sQkt}tnB4*s zj}r2SPIF!YN6tI|_<@rlX;>DKclVKt>X_w*F)%RTpB`mc8B>g`;T~`c#qlHy1G#!X P00000NkvXXu0mjfAKAV5 delta 419 zcmV;U0bKsS1HA)~B!7fSL_t(|oaK|TN+VGehQCRoM%N;if|#(?BC`4dniLim7Iwlu zfQ^mKvfBl_eF;gcY_Z*9p*U7H!dNH@0TmQilt>`iotaD~zr{LtZc_LH-ty!B|8vhh z=Q^VQWO!%5aVmWvtZLbo=vHbLWlo0e48e|N(P3PAno5Dw&3|%t^0=NVVwn7OYlXI? z&ceTH8rp_vamY;-p49OVYDSSOK-4LHOha90Gto>z3C5l&r5RD--}EJsvk9?a^w~bxZrD7onlfa$2CV;?r+*AG$03a3>(m! zzaear>zj+$H-DE?^d0iHqU92|Z7>afl7T++L6R3I7wi4bwj`Ae&{|PaS7CBfEqwy~ zakCd%kt9#89kU@W_mLaAn|oaUL0mX!Jy?0@B+p0Bnuy1BLe^c N002ovPDHLkV1iuf#a93T diff --git a/assets/dolphin/external/L2_Furippa2_128x64/frame_8.png b/assets/dolphin/external/L2_Furippa2_128x64/frame_8.png index 14e0905fbd09b3e06b5e5523a952cf68728147e7..e2433ea58461257b2e39999949ee249a4c35c3e3 100644 GIT binary patch delta 372 zcmV-)0gL{a1DFGlEq^~s13?(Ye>({zprAH_py&ZSf{@ihuOWB?L9j~-dyk-{rG<@^ z0UIj~SlDU6B0(ZVqh^DXeHQM{%&s?ZnuXuK_x*W%ktjaH{|1w&S_C&7v;rcn>Ud7> zA=}jGIRtN#O*}AsL1jBAqB}`XjX==>=63@{L(;hB6^en%i+@*GNtz72A_6e)esl{Q z*{Ge$j0000fcj delta 372 zcmV-)0gL{a1DFGlEq^^q15p%(zj+BH5J7DOK`{$(2|`8--G<-}1i>yT>|KJEmKHWv z25hV}U}2{Liv)=fjV2TFGRMN1d2hxY_{#5{`*-dQME)86H<$+HJhH^r;ExS zvQ3R%eefaK$N|F`O1oYXJxF?Kc#00NwC^bzk|q_WPzaRXoPWYf(sbYy0f6~*ty|#4 zcC)(1fTq#4Q$(P>dbyo~U{b|yA3X1bsbUDTtLz_46(*g|jssnY+kMVbFU=ARVf}EH zf;QOhS7l<7PD~wuwJ2zNYdH5^|5eHrZc0zoriyP;$AA|1{-OYm$?jFs<843;7(D;ce0btNTFenE~E`c`I~aB?QR}sR4tyl?Tz>>qELxW0c*8B)wSm9wn_}l0IId=zH3n>Njl$+b05q-ZuFg+ zhx0tk&9p4(Px&eUI4qnw;f6c6F)&KKLf*AjE=fQ6GIL|aJ3tgYdP&U=0P9zN%%XV! zx7A=_0TlRP7=Q4=3Ilbs4_}oBGXq{5rUnX=*k`xaKQR delta 399 zcmV;A0dW4O1E~X$B!6&8L_t(|oYj&$PQy?TMUNe$1PO_V1}dNciIS4e*#iwFi=d#3 zcK|zJ3zT%YONS_FkV7g8gdGVf4sm=b-p6)!z%)-fnmcpf%mktvA^!)glh-cjou9Qq zAbti>M|7mMQse@CXk5nHZ9qMKo=9^K&_f+d_1J^m#ZrUaX|%0D$dV+h*Yx zV5S-@oB;*an15TCz0a_4p!V~yQCTo`p!6fOQ8t3jitCUEt>hg>)xn%jW1LNtqvul?>nfCkD%PDHLkV1nhxt?~c> diff --git a/assets/dolphin/external/L2_Secret_door_128x64/frame_1.png b/assets/dolphin/external/L2_Secret_door_128x64/frame_1.png index 4716e5b803d977d214a6b3684adef4a67c447bd6..c973f205b89e8f1a76659520b7361e48c7837f49 100644 GIT binary patch delta 756 zcmVUb zwq*D5?svhS&mU`P(*}EHWoxQyDMVyE{McPiQQJ2{N zv^F&x8O7;brY`Zxl942FWPNG1F7bYrK1r(Tm^bkk#=c%nMKIfaS8ZcgbyZvZJtV1^ z`XDj?bFJQ2p+#sZ@_v8H6$mBA&-fAajU}&Liv-w+D!^n)I+z7;eSlpzM`mU&_^m&^ z(^SBH-18~`9P(k9OjGgOu3rG$2LW#1CiL8vWSuVd^xDwYfMIa`5lH;2Ts-XFcZ_Vy z#hXwuoOgY=!$tt(<=vi{L6h1+kP@NX?ldR|WuE=sr8KQURz}0T{jiiLR6+ z#d9wY0M1hxUVH|C@AI>O{o%3k$y@m{6`=fR>1r#cb87=tpy#srvlW;(5(8unpV!K{ z7ICsU4VEY48=Ze_Pg8L4!bjTYt#}%e_CWr0+rzcMrY-ai1H@or2f%Hma!b-yIl{$V z7I<1wsEhq?GH8E1Q1etv`f8fj+@Z%$;mvV= zFLU?elv(%7VEWzSVzCqrJyfA_qR6Ik_GNW0oqzSTzRoXaxo(oTodM#5=irZ1XIP{+ m*{N)6jJ!_yBTv%KV)Gwb!Ub zwq*B-?svdm$RBMJsb=34P@XM9jI`DxT_)t$L>`P(*}EHWoxQyHd7OwmMcPiQQJ2{N zv^F&x8O7;brY`aEl942FbbV>HF7aNLK1r(TxHs`9#=cffMKIfaS8ZcgbyZvZH6*E+ zdOtD$Q?1@tp+#sZ@_v8J6$mBA&-fAajU}&Nj|A9=D!^n)I+z7;eSlrJMrLL%`mH~` z(^SBH-18~`9QI+DOjGe&u3rG$2LW#1CiL8vWSuVd^xDwYfMIa`5lH-_Ts-XFcbsg? z#hXwuoOgY=!$tt(<=vi`9xh1+kQ^#5DTT&YX?|}p?nu3EDKGHsK#nX_q2l8jy9LHomjnx|UQSJS-e4pkm-mZJ;xPkU;q_>}%0E2RToRw{Tl=&Ltk`iHa; zIAhHtUl$2By)R3R(~XUQ=W3O7Fd7`XfipU^5CqQnJs)SSE)?1SMTy3{3jxjtx5l|z z=I+HQv+kF{^t;8yVksJWs6yjpkxk?5%j$eO|H>JCm0!+s!z6Dz3&aP{!|$ihvPf^T lQ`y!Sd7bh{o}`_{=3iRFmTFuSPHzAJ002ovPDHLkV1j!&c(MQh diff --git a/assets/dolphin/external/L2_Secret_door_128x64/frame_11.png b/assets/dolphin/external/L2_Secret_door_128x64/frame_11.png index 355502f274873c8b784a2f043cfa6cd52cbf5113..d7c9bce7554854d1e5f493f906cde391751e4695 100644 GIT binary patch delta 650 zcmV;50(Jd{289NYBmvBkC1!t*bH97eckaChc7oB4lAWOpE8CPXi$4t}1h75DZIX;` zA6aXBm6s&By;QlVQ21Zc?svt#k|ewBxN?5zztX9d-b*HcdPFG#BgIE($FL8SI&new z_1A^a>6KmA)uf<*ju$c?m~73jsTW{ak`kxC9)pRXBqn2{oE z<}~^!HlvxCcvzA;RWq9H*>VEFmsJcv7XZ)sW6g{LP__)1$aBlNURz~=sz1E9tLrcU zA!mSa;E65j00!%lH(w8Uwr=B?ssTo@PIXzewCa4u^BBP0njHMFq1O&W|B3}%&Lz~` z{eWv=##YSohU!~qLnwbc0A=T9N76SDBYuIt+2U-w_JyRy_i>^;`1nKXbxEB|5cbn- zK0EtCTaq^SVA#Vk&+vOqlBWK|QgO$}V{<c7|nTwm);{cj| z?hS9L&dGW21xZqR?qXDSpmntQAPd}BNPG*g-h5>)d$W%nF1de(pO#uRDcP!Ny4#>= z$)^jF7C)Jj(y0kAXTNWZ0m+ERBkYWq!~D{g6j4%22!XxeRe`$x#-u<%FexdOy3$5W zF5uw2AeXRDYMw3gPS z)gW+--P0Auf!}^YHdh1OXI9?|lU+a0C_V4r3&DN!$&CY{Ss|TzS9bz1!H;h4bv`eb zj<$0?$TYbdHsd3oUOqMftfy`ZaoYd&*4tP5uKGNbX#%8Ay|mHy18}!DlT;Ym9;NL1 k7WL5l`}qOh(Mpd!2D-MU+;FRnDgXcg07*qoM6N<$f>Gy4M*si- delta 651 zcmV;60(AX_28ITZBmvElC1!uax!*nKJNMoXc7oB4l%1grE88JqmVX*d2w;1R+ay`I zePpfiRbG!7<|5~S3dM}v(>Jg;~j1(WC9m76Q>cj=z z*IySxr`L8}SCfMNIbO(gV6rv8re1yT>w1ik2Nz2K-n^2BF`=7dSjIVs{ZiauCBub zgq#7wfhV@80~oAJ-h4ga*}9Emss(yH?r&tm|0YjW_zhF&`i{VNu5IhRm# z_XDnh8Cx;S8>(-e4WWPR0F<4Z9ZBCrjQ9omW{b1!+82@*-^Ypa;NuUi*Cll>LD)~T z`RwcmZAsePgJBQHJj3rbNt*f-OT`@@kInrEpp#(J3MXE6^Cd}2Z=9k?WG-%Ej{|7> zxi`F}Iw$A77bHpPxr28Cf zC7&)xTKr^AN~b2goc+Er1|%aMkFYad4)aS}Qbb89Aq4hA>Pj0i zxqyT7f?UErseOh6O*{DFQbFs|t*)6o6di22^YOJ#%Q@^7r?qfucL0Y}IuY!i(^^`S zR)fGTc28Fr2Y!DG*<1~9pILn?Om_V|qx8IgF9i3^CpQj+W`%U>UEK-51V6gD*ZI6$ zI@-?pAk*Y-*o=>SdimG{u%5at#A*N6TW??KyXx~$rU{Tf_0mS)55V1?C#f*BZKdq` l7WL5l`}qOh(Mr!=j{&;2rrbewZ}9*C002ovPDHLkV1hhCL(l*K diff --git a/assets/dolphin/external/L2_Secret_door_128x64/frame_12.png b/assets/dolphin/external/L2_Secret_door_128x64/frame_12.png index b17aa530fa389d5193fc3a518c3b64330489f69f..488958005864bfaa7acc312c555c61faf862aa46 100644 GIT binary patch delta 31 lcmeBS>tWmQl}Y^IKlvV+zP3}#Ciyb}fv2mV%Q~loCIHAE3%~#X delta 31 lcmeBS>tWmQl}Y^MKlvV+zP6v9cQhD)z|+;wWt~$(69C9%3%vjU diff --git a/assets/dolphin/external/L2_Secret_door_128x64/frame_13.png b/assets/dolphin/external/L2_Secret_door_128x64/frame_13.png index 3614a711a73efa4132b0dc95069cbd5284fa6a22..74c418e366bfb8f51ac76b33f62361d0716f583e 100644 GIT binary patch delta 721 zcmV;?0xtcM29XAkBr(`YL_t(|oQ0B2Xk2v^#eerdGkKHNI8(GV(1Drw0a7W>$__E4 zLl9h;g-je%q3XDiRV;sT; zgHlqrJjKR<(Jec`)s9#=7~pCSu;R80hG!L#q=lIg4YA+=W*_kGES&}XscYXIRtOmN zYh=FX)L8kL4_@eq$55PzMjEwx2nk7Tq}#gmbf6edlDbJ7Z8Lw_k&%f2oWm<%BSA#V zZ%(A$C3r+q1x(A5Iv`1Y1tgQM59CXg!QB~2?zaMfLLiO+HxU8wR0#vTe0v7YpX|25--UHwoTlc*XX3~VOp4|_?eAd>azJmIA4#3TS@J;}Z zeEORn04EE^|Y0Q#uFWei)^^t2?kUoKH2#j1KsOOmv6^a8NYowQ`|zdwG`eNxxlV*qaE zO`yuN(vRMnr0(T>NUG|tTK2%LEMTv!pXb4<9opRG*X4Hsx?dlB9|uWY`I8WQYc#6W zBoMEUo{5Mk6@`|9m+1aRCz1FFv?AzxUir%mUo{sambt z{Ab))?57@D7+1aovens@=8=^X)w7Fly#5utu~lDue*56jdsiIwb7i)bd}eb0Ij(-* z6@NVpS9}tfZ@hJLsMd%TD`qJ_G&UwBl_3$`G2|6L_tJBA%e2d-00000NkvXXu0mjf Do?l*< delta 722 zcmV;@0xkWK29gGlBr(}ZL_t(|oQ0E3Xk2v^#eerdFY_j?ai(Z#paYZm0i{yR$__E4 zLl9h;g(QxtP<6VIRV;tan|a5@B;YP*b-5hw$2s@HUNG%R*&C9&zzIo`x;QiI4`A5L zdZDDGGRA6;kyISuYDX>V6>v2N*vN(pcg7k)l4d8e+QF;?n0(0JZ8`}AV>iA#tOzjb zH^_g_nSsjj0Q|_24xls>XB)M81Q|(fq`SKEOsEuJk`mAQ+l+s1%gDz7&fyPX*)XOR zG>3EU3Op)l3QP-dl>(#dcH2-y|o3vw~a4)HmB`*0A91hJI0?~4FP}Fzf5)#mwt``!ZE+ul%&q+ zNk%ZY{^{D~%K-Xlh^rX3pz(1@YQJ2jMjuP+%+E{G=CMn_K6lEz@PBvwl>4Nv>Bj-w z#G62s=cFI~Wl71^Qbb?XUAMx4I|aaAS-Hr=RXen{#jgwR0wiA_d>;p%uKh^_fi)V{ zst2S?u2O%i;n8T<;EjJ6-e`Ce@Xv<>9}ht${v`l69dw?5iAjJvKUJ$$ zoB51ebKSlpvx6#?LAErx*gU#;vU+~*jn}_oE4AwB7d8$ayMNJ9zffUA-m|0oFL3?y zMEvy#Tnorxf$`Su-Pb2os+9TCj<6|xQUx;ct|Auy0r%2#c8LZ-@Bjb+07*qoM6N<$ Ef(&e8cmMzZ diff --git a/assets/dolphin/external/L2_Secret_door_128x64/frame_14.png b/assets/dolphin/external/L2_Secret_door_128x64/frame_14.png index 1ebccc2d238d43979867d4bc1cb485923544c350..50b8299e2acc78505cd753e3adc08636baadd66c 100644 GIT binary patch delta 31 lcmbQsHkWM!8?(6Ww|X_FvgMxy%w{qGfv2mV%Q~loCIF)i3K0MR delta 31 lcmbQsHkWM!8?$)rw|X_FvgO;PogXj&fv2mV%Q~loCIG4f3UmMf diff --git a/assets/dolphin/external/L2_Secret_door_128x64/frame_2.png b/assets/dolphin/external/L2_Secret_door_128x64/frame_2.png index 392db9fc64993bdcb508a9ee45fe7c64f58a213a..1ba48033e0fc12d449d6c2b47021bd49dda0a823 100644 GIT binary patch delta 809 zcmV+^1J?Y(2EYc8B!34~Dr*#qUua*Ki`J@3 zIyam2BgczG!QJ@3I_JPS9RB?N&`^u22Y}%^8EvQv8C6x~|9@AmA3#i1RqI;!iK(ig zRYXKuB;?a7BG3nbRFX0JRn@xkG5}k(eaFjyVWe?NPVX=R7zrAKc-MIe0AqXr_BO|6 z8)X;>RYNc6Z@G#Gxm6N2@WH)M@00Gci@AU$vx>7dy1R(yyvYj)X$034dx1VEyXm$b?ALoG0Vpwp4N52IH!~n2h?UbT3}r4wgU?20-+|_lj#? zO*~b@gae-I-kZpU)CaTae1O5b&v+KV7Wq`La=9%`O&Xr2BiLwo^pk&0UaAGrr$dV; zK^z#VKq~&aDfplcOiP>uhte|d6LJKYZ7S>BI>WK&*?)U&f6B)J66@5}*o_Y8YkYcV zK>ShwP&619Jvk3oZW!zX1P8R8mGR55uN+j2q4(Xc?(ggF!%Mw*bYl57$4v(zr(-Q} z#oDgfdN4fbgLIWrVC|nXyZ(R=F!Tlxwe3$)S_2^Z$XgI+YA7B)sH&=44+Y?vYmdGC zQ3Zg>n|~AFF?HCEG{}6RZyZ7LNaB6~y=dQj{DC^B2sMbUpDN~9#NLs&LrorCoB_u!YBdX=Cl?r(i8Lh4K3@t=)Hq^c#bM~&{?SG%0NJ*fy>X+wcVLI|hcIa^SXf>(# zsjg(Dkool+;NIwV=TiFj1#Fq`=J37tpJpzs^9{fWVTHadX7{A)SJX2$FOYtq}61SSyGUe?p2bDiMmA0TWk(7IMW1sY){n!9O(DW|0`R zxv8z0$47dH@)%lhH_3$f>F-|9`)7{Qy#`s#@2&PfAq{ zjUpn_ATggt5rJ+1By3C3qpH@eF95Jv+jo2&FbqbgI-sg*o`0a`09LPV433H<&3SSTZp&6yZ7`zxi^-{vO2^#QtzaIc#Q=yt_+Dkj ztBI#-7$%)Fkq>H-SyYhd%k&Hn4>cK$X2WelsH&=)4+Y?vYmdGC zQ3$};&3`T6F@D$%M#+4kdjvsBNXz{IdeOf5_ycuL5sMOAKUFC*hrOd@3wwEVY5Fj0 zM_$?M^B^x{|C;XI3)u&tV`Ad3_5$p{J_iAmmR0?nF00ntLNH96RX^wFPOIv|fFr|8 z!_~Gm^%JV=n~NbOlNhQkb{1xnI2+5%O4;63xqtn$6IltAM*Z^K6ig)k=r0`ZKU!_m z`&1YEWhVFQH^9Bgt=9S8-)FJwd{@TzGCxgTSmhb8O<`Cr^$R~g`*G)w{UGCC92m=Z zboRNWub%{@bkF`~^ZsbQhqY!Pu)i&}9GWS2-BRB6-RCeP4 ot0R|<*stx;uihT};eWyY8}S`w3|ZY@_W%F@07*qoM6N<$f^L+HO8@`> diff --git a/assets/dolphin/external/L2_Secret_door_128x64/frame_3.png b/assets/dolphin/external/L2_Secret_door_128x64/frame_3.png index 0c559c37d0cd6fffdd4b069c159102e5a4147387..2054724f991dfd9192738e8e787b3baec10f5f39 100644 GIT binary patch delta 793 zcmV+!1Lpj)2CxQ@B!BlwL_t(|oPCpBh*WhL#()3+oSCz$wR;TAaSdh$3S%J}VxcZ} zom1OoK~5fnHfSgk2};u&32}}^2oiYHRU~=29FYdBF2b6V23{oi0lE-`$9AzOadtOz zk9&6J>0);23wo{|UU)yB=LLXG>aq&Uzu*WU1^pxZe<}Y7P=Ax8OxYT>6=RIqVAh9F zF~%5T05@*><6M^{D@jU=%Z*W!0N5CSLausil}eIUO78Aw3X-IL+of+8pL^K-t97oU z-VbMrfDzPySEc9uYAJ*R_nMM^=@0hC?K@}dE3O0%03S}g-oe4t1hud!bt_BM$w?CP z)TC}_j5@BQ{;j>j$S2hMDp+{R^~_wgxGD=VkhuG9QU?>_VdfzmvWwIo0w~+O$L8>D zXE5a1Tu4#|<}Ks-dtn`h?jv@ zDO2-G-1h~eC&rWEOdJBAA*?^s7^~d~X%EJLHO^~q_O>2lfaIM6l<|IdPItP8;9V+5 zrh)QJC&0u$meRoIKKK_1wm&FIYTui46GM@8(J4uidUs7~shU9N=lZ8OnAZm@4I4}) ztCCOnbAR8FnEaF9rvP-f70RtvOf=i+*T`lXjk3X>JTq)Ufb64~%3#8qi>p$?(V70gJsK&^WJ1zQg*4dCuF199>SWN20kSC2Xr9_ukB({;_Pnb zUia?Iw};uKf6#gQa^RfrIp=%60I*42R>ShIa0HNo{*nH_l7Igss7X?$Yz^9qF~)2# z>qDp*V+=8X8#n!Nu1k`YB&EgW#;8dEYz#mlSG~0gB}pqKclR>|Nm8G7>D$HU9(Mnt z&UMuL;Y<-Qf*SCu^t@j!g>ZnJ(&6wG++9(FVM&yvSxqV1zauV55+SZMQ#=0j*KJ7> z4m5S``dj`vqkj~BIGCEC7B;1BWr;dD zNn)Ow)a{H>$CcE-wO1JVgnC~E3s1S8nX498Wg!L%^f5GU9@nkp?hrnkD>(4aCYBxgKgE3%@^V*xet;ZN3dFKFSyx*PEo$euc zm&%c8pnTH_FtLxNH1N3({sn^V4@#2S_vYNhP-ICeZo0{wWUT^}$NR z22;tZn)UXY|akF^?LIHlR>o2I0@dusDw*>dB&H`$hyT`KJf*=RO7r?0Ggqzc{1 z>Dybp2yf~5jt%=INz1=}W&+brXT9W!$)rqp@PDfl0le_|7s2+IYM)B)XVTTcOdnY| zimAMq&|RP2YGZ;xwm`^k@j2QC6>E&vk@?yGL}?W4Pk8kqoyevGiu zsE+CIauh{JO|a|ZtQDAPOY?FbTF%uh;AOH*{1yWz;Q~PZXG6H=eF3U;t^RKR-258+ Z6BNW`c%tKxYQ_Kn002ovPDHLkV1h01k>&sZ diff --git a/assets/dolphin/external/L2_Secret_door_128x64/frame_38.png b/assets/dolphin/external/L2_Secret_door_128x64/frame_38.png index 816227efa7bc8b96cee67ae9540dff94c34c2610..ec5731155475ce83f90d0cb602d5a8f9205e0d7a 100644 GIT binary patch delta 806 zcmV+>1KIq)2E7K5B!2`+L_t(|oQ0B4Xk29!#ed)TzGQ|b<2<37ritS-{x4_;G%z)R z#8n3d#2TWDb} z#I<7|_Tr_qcWVBI-^#j_;^+UEmvv&xLj_s#kth{g9x4caYt@g52yQ{{JQQKvN~%Ca z{^eHTw{{e$6Ms>1z(cERm&2UwAmMxRU=561P+`tPLydiH9>$a;&VZ0y|5c)05nC@4 z=0x;8$45;dFZX|?0JPB_yuPG+OBCXDr3~VNn)DNg{sKUc7{EF5)G01Dg6VSr&nO(z z2$YS0-Qs5U`j1&!Oau&i_ywTeIF`qh9oQHO+AfupoX#ww`mUsEH~XHx z1R!(y!1RA}k|!s<)uLQ|^V^{9t~xi-x>G$|{0AU7d1aOA0|^5Pc>tq<%}ohwN(v$( kfgchv*kHBFk^(^SA0BH}skys2L;wH)07*qoM6N<$f;lLLc>n+a delta 808 zcmV+@1K0e$2EPW7B!31;L_t(|oQ0H4Xk29!hM(`dUou0JaYm@7Y2tW|{{`)U2Bs#E zxaz=wSVMHtE`~z8s89kTwY16HBnt!GWT6tsq7xT|Bnkz=DrmW(P+c@IU1 zL0&}Pvpv)V@^b%I3P2m}!s|=Aw@fkKP|6?&&!9g2kTeszL zN&pKL`G0vgdDl$w0i8KOU6=#?FnD;09r<6Q^M^ssK$>uT1*HGy5p}-^{j?7 z@T{4v;ZI|pdmBb`Ke-?4=YbdC;KHHO#MN+Nn1AD=Qrnda$AEz#zddY@A4SF|>0E%v zknLe}?I?{KgW0}MT$6uI-bMXl>#ffYzxV~9-Z)mkRBYH7^4l(zm7LBlqWZ3+>o@zJ zz62n11>f|4bCM?~-PMv@ee+wt?XEgE(YjMRT>1yVKY3-9+5-uEiUk0pfz3?`>Pm_t mA|bvKF{Hq1l_eGZ2L1ycYgMVdT7qQ&0000*T6ZnQ2GuecErtVq$71PU7GN=vbdQd2Jm{8>nYB^8Vz7b|9LCe5{( zG?Uyr^SZbRm~VA>-uL^?V+O|8rdLb_eUA3OclD&3>eb1%t$$!1@Y!!-TqEaS@pF(& zd!RC|Wp>U4w~des(2!~37#yFdtw7>&tEl>WXUza|dB5pG=E`RsIPZFI9U4B@o* z^zyIVyT@u&Z-2RuU?F(>%+&%e}w6V-u3#I8a_MB1Tt zbv$_jc#$`G+)So#$UFRZA|+n|+Y19xce{FKc2#Q4AgN2GWlax%u>^gy7C6_6I+N)G z7X-1PJ1Wg5(#u}o<+_RUb8gXfH&e$@T${Sb7O7ds&3~u~yQ)u);dZmbf(>KXR!Ig? z41m>~v^dgGJ>Qj|vEYcH^O+{BH^71b7+-|$Hdvn`A-IRv0chIrwKf1mn7B-ApLaa~ zW_JTy1{mS7wxm|!1>IP>l>gC<_J0V#fg1XGm?GXt*4Tbo3wNdYIp>iBz@O^ZlFMU* zz!$(N0Dp?1^B4j^aQnZmwaW&dWE%b$Kw7rmF*e6uG{r%@!{=I(($;|5b&&H+77tp? zBLW))A%HmrM1b4#paHP=Zya)0W_k|-xJ}^oJj(ya9{n`T9-H8^ceWI8!SBJrEh}g5 z^S4%x^z40IlCDvZPpR!jE7}3@wHioMvd4omAL&+V@4iab?-y zYz9i-!rD4GZ(9bM!^SLQ^7cfyalTwo!<16H@+z5#$$qn|ahAtDP%}POS^g6kGlDUg i?;SKDDLK9>Nz#9e5p4!2M!W?80000u delta 807 zcmV+?1K9k#2EGQ6B!2}-L_t(|oK=!dXk29!hM(`tH$RcIiJ_pNW~R2dP+Nl{S`ZV& zG+nhR%xxn@sw)>oaHDmhc*Tu~U`2|qBv8;eS6Yfyl$v@m;Lk!DEU91&xmYn{Gik2P zq?zR2nb*Zlz?{|LdEax+yEtZGd~JHgRM6*W|9e+Yx~X2BY=7Gd<^iAmCdM^#{uMt5 z$+QP5<636tOmN!>xd08BCXT`JiP{Pz9=D3BPdcW0_kM8wIXVIsek+(B8#Z!XU;5DU zyvbhro3_7Yo;nsn5>)Sg1?0LIeE-@nu;Sec{)B>&>Hcft5FFvg#huSiht@_nJHrr8 zdrvR_%DsE6Mt}8|`v?|-w?FPnF_s?~>$m`?y@&pZn@crYF#h~Y4LDI9I7I9!L`0+= zYFEdTCx91ulgG_u`i8v2eb@E1$aH*0}&t*A4Z zK5#)08@i*?d?LN<^!g>QN2!QcL=x&4cDH4KvcpZSI4PR>mK!l0Q#P)gD z17LPHuw{S|9&1Z#6<*MdrAzrA-Dv-Z034{HpNA>pjbx7Pm$h(LnxAtXIRN~rel58? zHVAwHoPPqK7&?z300g)H>sq^P@JSZK9|K6s);q>#*^8z)hdmc0Z_Wq4U?#fK>K>)W2yq-t-f7zp-hFP--K6_`20T=up9NaQ; z_C9~Bc3YY$%u%3bFN$W?=36BHy^O zY;ZOMrEg(v9h|o<1I=M$mN9vIBHUPCE~sHjsa<)MEQraj+12b7%W)6XjE_~O{{+U2 lU?2?UJ55MRj;~6R^dF27Z3YgLDAfP}002ovPDHLkV1j=efye*= diff --git a/assets/dolphin/external/L2_Secret_door_128x64/frame_46.png b/assets/dolphin/external/L2_Secret_door_128x64/frame_46.png index 11f50e232f2a482458c3cfd68d4e64402c1f120d..eac19b8cd5e7454431635de92a8222cebc4e86ef 100644 GIT binary patch delta 791 zcmV+y1L*v(2CfE>B!BfuL_t(|oK=rOXq#mi$A9nJH%Tkq62d?a+GcKeP`4F9bTCYi zb?&rfkZ)E*+)f^b;6>*_S;UKopdv#ry21|De7Z55qDZ$-3VITQqZ`A@;nP zEMsju7MrJ^4coT_(~H_RPu*uxDp{DodI<# zQ_())W!~aRGt)UG@5o<~6nzV9P36OMw{mv=t`yH9X;`BxntkT$Wf+;a!1*{Fie?X9 z6f_L!aC9+}UiC(Pt(!)2!7aITyW<#d)T$5IL2A}=P$xSedXV1ov1DMbZT z2f%7US}HbGPm-Lo;0R&pxi+i=76ic55~RCe%M22Ldu$zmwhi9s0ze4lXxQT}17LPG zdz>OqbS1^9msC$*O8)F7#y$q%U=1iR=)Q__09^hN+FdfvBLP6UI>wqyg6HjtCB-9W zbQ`vwaep4;00@ReyaTVe97~En%`1}HdFL7WV+@?aJ90jj)QR&_0Qxsku#gv6-wy!H z2OB-N>rn$>AMS%IbJ;@xt`EG-{p48ST1>lC}YSrzTQW_C^0v4$$>}<-W@DyniIMwAPgtBQ7Ks<|V1l-fqZZWcPML z050gPr1v`ZrtO(d_C2nu=TRV=3>m-I`la3`#B?ClaNa;ayUO?bugm)9Ho!huTLOaCHO*+pwqBJR}XMt}eS002ovPDHLkV1hK?gZ}^k delta 792 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 LMFvhpu0mjfz&Lf@ diff --git a/assets/dolphin/external/L2_Secret_door_128x64/frame_9.png b/assets/dolphin/external/L2_Secret_door_128x64/frame_9.png index cc05c1603e2cb8c329e841b1425428abb02d2f1c..9798634373e9d9a79c4d134f6ea787eecb7eff45 100644 GIT binary patch delta 795 zcmV+$1LXX(2C@c_B!BryL_t(|oQ0H6Xk2v=$3MT{doOQIm+VTiMd@l@!Dy+%MniGI zrn^DSsg)`|54|)+QOTjklZBMLwW5fZcu?#?Xz&nqi=_$$rPBR{3cVDXLlq=7`%;L+ zfOOYQy1VY5@$fbWPx+pP?|f&5nPCQYgOXh(yJHzFiLeZo*nj82Qjza%u#~=O8Mmi6 zY8hAbo7TcWFZyw7VE{cQCfy?j#iY>>2V{H10|8m6O-_}2Ia-rbWl^fQw^W)anP#$e zZFBGH%W&I*KthskBbComX#0<-oVJN4A|h=?u7439Wk#E31FFha!H@1=(oG`k83}=$gu%84$a+Sk0x@N9G9tR^0SPfN zO|AmySk#Ak)HeCZbUXm^iOAHz40KgKu`^W18^C@2ebSKfKo7$|G`CO1A2Cz_J%K8? z^qtrm&u1CfNor1hNeJs+937QN9#kQC)O!jmQ*))zD}VbhAJd_4TfGHbq_=h$;^{%vjpL0CWR}Vl!4JlfmsRDq1axGf*Rwl9S0mZTjA|`kL zkO%tf@PAe`!@FPE%W<$zn5*9b&?%(Z0)1Ydcm)8pWQd_Cb~Y~sA|mAr^Ae)bwUNOK z5dm3J`kOn>7sml&*8_Q#6t9i%x5q?88iz&xR6cvw5BC2oA|gv|bbnE)7sB*!2Mo~0 zZtcq}oRK-}vC+28&8K3m%YZZDr{0yC%sp3^mVfW-0*?RrvHY^segN@(KjAVp*>Gx`>UT6p&);J%g~GWE=@r)2C!sciYy@E&QVHP%JRQgP?8P! Z4-^4fYgX=fxS;?5002ovPDHLkV1jEpg(Ls~ delta 796 zcmV+%1LOR%2D1i`B!BuzL_t(|oQ0H6Xk1kk#((#|_wvSc$c!XYl#b>VjFu`)G!zGH zIuq2aTB+i5(M?knl`LvpSxCtnD~h;@3&k#k1{YDMSgKG^DxDiDbW>;+Rgl!oOCb^i z(itb|%s79Ji#J)g%C|av=ey_QoOADm-JoPw$?jMNOCl_TC4csLuvCrH)F!9Oy&A2_sj?_l+*>M5luR?( zy0*D@^<}tiK_DSXw{hEY3mlnVY$$0AH@pPXiz3LOqq)i%a$<(%$}thxw<029_&{W3 zMTC6(SrL)8B7fJ2k20f8vjJ6QtKdiXFX<+c^^Al-PQqZ@17tlTQh}HNbS&z_JZhVK6gnON`9u_IUpV%3y;|<`x{yu3)d7y{kADY{z;*S_AfSy1V zT>4IIjpwrr>=ZR8za)fpFOH5Zk_S}?9`&BW%G6vb^nYys3;e-jl=bb=&cPjNEcfa6_!--yb<1=sf$YB{joYry6y8 z=V_67sY}ovoOC?k`5PjYpx%|%?{kg^`sx8ls3Aq`GgScaPp(C)-pVAlJ)l@NLB!`6W_b52dpQpF33K&306K*o10I?T9*N5#815|HJN*^E`KfG*99E^^JDpCsr>-r`^vxUjkfz{ z^7RMZwb;gKRIxR?xxh<_`D4!eszZC8#P(M|DMCU1_?Dp;?_HXLWDH=*z!X_P!ktGcWhu-5zJii$ az!iT1T5DF#8L(3T0000Q%)5~WK@3sF#|N|7Rx-vR|R#1a$~;2rZLDS$8-3(v~4b18P0 zP1@Y*zVp6wq<5qT|8pW$)!`}t90$lIK&+}CwHy&CJkD?#%YQ&Tv~1(;x*x23%ea?# zih0+Zgc=6{b7R5$^e6tH}3R z8=C)G)*xOe=6_2d&>KZF$|3INk*caz6m<|dmG=SI;${nkfrk`e1^pc$JnacowS*HX zgs6pq8FpEY`}pq!e!QIkgy>&)wUMP$o5`|G^#GzDu6zT`GgXn96`(#F0D4x8oSbd~ zeamXs@>&a#em)7^veUBGyGY>RkZWLGHg-jR_$wU)KYuSR8#z3&0_~ zRdNR|fq%qNA;ywg3^AmZU6|rXlo4cC;abgNiHU-o$S=a62C3|*--wC*CZ_7lYfo;N zj)o*_9VaDACJ={>mr3n$8x|xeaCy3+mA+Q()jA+dAsI>n8370fwl{Msrci(Bv`5&I z>^DjRcHN?SgbSwiqnSlajp;H+xNFiG%`sY#1~4szbwB#U9^MxS&0a<_6vFHtVphp1 d0CiNn;49C#7pZs6fs6nE002ovPDHLkV1hkbL3#iH delta 697 zcmV;q0!IDM1Y@;_a3nti8{8 zoOp^^*Bpl$2LUr9!Cd?ie|e@HK!T9-(K-OdOGg1D;q=m%mF{WJ|4JQ!s=2(YeC#s2 zLXNJ zRJCkq{-mryJbzcrmO!9)i)NHV+|46ZRjnxMAh4460XX1Z3xt7(6krW~1`uBJ1gcuX zLJA>jVPJ+`mZLuYJAof<3xE)Pa8^69bZS#swxb?E^sjH;1Lh}Hk*PJHJ{}oF0^*TX2 z@_ViepE4t9X~)D|`(4P*#lI(7!`t3Ix2+wD(`3M`13Vpsh%V4>LtHO@ zMp!3z;C~WG92H_Lsl^aOYB`1p=A(=tyA9vgES8uk$cg+C3~G?dk^1eJ*zaJf&aC$2 zuIXq|Yi4R(WM|yD5E^jf&Icl{ zY9^tAF2wu^E)=>FTnO%Z9~IG!jks{tz8O<6{-~Lh(9SdS=G(=~57)h`!{K|*J>Snc z@Psdvq-kgYmZo?GoQsf@#hUoj9ZOSdGond-0G zS%@w){T2wc=6{#M8lsUxNm55M2R8H1S7WFg5BPW)?C@0&DgBlW^c{d(^aPSxxSWDx zpCJ=7W!b8-xaa~Mv7 z)jw}#C9qq7*;0 zlz?e+V{F=O0^554eAPy_YH=Jncl%b(=P*t-fI6YGbgUmJT-_qe^o08b;F$ud1S=~> z&7c7*v46P+MIw{tv1E-QUF-}Ir1`Ef*5c2ev$ncU=#!EH2!oo?FTi9Lu#&$U5&65A zZqS#kF#|c0o9`F4zu3Fup%*{feUUFr8`4Tn*w})ySxG8-~NsDhonyW^X6qe1_={LMxCe1mjD0&07*qoM6N<$f?(@n AJpcdz delta 718 zcmV;<0x|vb1@i@vF@G3_pL6CkGn6(nXoV_i?-T@=2B{Kg%}kAp?2J1XLIZBxc|pWg z%_LONg_u9Vg+f;`w$A36`t=#1{ZGKNmDW;?6F<(RC*@^uIHYZOy~wm+tA)`$d_*meoLVx`;nN z(5U-}r+G*C=uG^m44YG?ku5wdMn7gFNzy=r7fLXH&#!fvRK{V$uNa6{q+62OO!e38 zEJPQYUJC?T_kYV_4bf1cB&nmB2b=lls}WR=2YkE&cJQi)lwQjw`VPP?c>+l-Tu#Ap zz<{xtuxwRX-1YzAHz^Q!00NPz&K%){He^B7Ko z)jw}#C9qe3*8E;X-B=CZJ?`Spnq2UieSi6|aOujnac8cb+dY!p>sIVZ zy}b$$_krhFaAlYuN4XGGRy&tcvdQ*bd-G}sGe6WYH`fOqz5-UeDe*KPuS?b>d!OvN zpae{l8)MUM3)tBQ;Hx&WRg2>&xjV3OK8I1V3DgOlrDJ2NaCM99bcK5b;F$ob1gon? zO}_yvv46D=MIw{tv1E-QUFr-Gr1_pP*5c2ev$ncU=#!EH2!oo?FT!{hu#&$U5&65A zuHTcaF?~6bo9`F4De3Fuj#*{^Ck zX0oAwZ^>7L((PM%q*kLQ__n}}KKSpOUrbzE6Gt}R|5ao8(xkEOJEMkFD_FKXltBx= znyVWu%XbExHU;?JPI&`Hzx^BQ4@sT$=grG{3<(oRMnwHCVE_OC07*qoM6N<$g1O^i AX8-^I diff --git a/assets/dolphin/external/L2_Wake_up_128x64/frame_16.png b/assets/dolphin/external/L2_Wake_up_128x64/frame_16.png index 580e5ef384a3b8da8b4b10a9019d8b8362973cdf..4bc14bdc94e41c1e91707d424f707fd7186e14c2 100644 GIT binary patch delta 693 zcmV;m0!sbQ1WdO3fF&WSZ7rIBL2HMzYyf!%eyvRUOmSQ)y z?QC5-UPc?`&}?^$!n^JDf0D@LCXn8d4K_TRQg#`-c$Nx zUIVu$Yvw?pvwztjN-5najU-7WSsTCw3CaNYAqGp~p%qDr(exrZmX_ zBtdZAPh0Eks)9f&gUqM{SSh10#uiQnz#6w@CZPsaf1R$fX7=nAbxg3y=zL;8FE%%L zXgm~sx9FQHqt#WZfDo3h&LoGPbg;okYc1;Xy%-K2zJC>myG}tK8W;i3ij-u_g#@ax z7Ss&y;Pfwc^zPm8_r;-*B&8TB=FPqU=I4G(r;In>;aQk_G;PML-Jop;<$a>+B)P(` zVGF{I$zS#ZSchQg=46qx+cn)v5Z(P^MV1{W6QCIbp3jXXVg#Hx0j`}rhM~&(#2d}- z*Aj-Mv46)@+Xd$NFiP|~`5w;H`gkM-DUt66QVA{ljd4#L&aW1BWQ|tB25p5jmQTGr zzyHirV{J^|ouk!1&<`^jOuMQu6qfmKYfTk;EiKp94Y2deab5q;Y=peB$xq}i58lq- ze0wLhESaO9ngy(>u{BSDg|Gf!m=}9{T9Kq>{Vsm_Iw6CVZ8Uh<06sqEVdG&nzf$^R bxugF8v{gSi_X+%w00000NkvXXu0mjf9UD>z delta 695 zcmV;o0!aPM1$3OSJxBD&_W@g1=gW^o82r4^;M8R=p zWSgmiDbl5|$_f$GN)g?8aY?Ozf|w?im4yUh?;sdLzz7K>MR4B+lNcmBPhIt`zW2Ts z^JBHmsm{54&$-`ozF+vC5lPZ0wE!FeNVWk^(op#r(SRQl;(vrIfE%@J;=2!gacw%| zyP7Af$Gz>LCWe5$lLxc#Gyc%tynq^(l$q-QWcOn-pcc-zKb;V0Vx!?k@AzLu29mNA zyEV7FaqWvT+A8~Ims=Fx?W(>?B9og;HulhVF?1wp5RWK4Y4*zwfKl=b2HXkhuB5!9 z^k!ZG_fb~Qfqy_>XT2z;bb~aKB$Z@M02d@E1K@HDmcm0Lk`$xceL=YB2_)svY5;X< zQ~^kWV8u^XYwZ~)fm8;WQ46qAMq!LCoD6_9ZpXBR3RwMjVO-U-N6)BYf^9_WfB`+; zR`A%cFS>5g*HuRA>rw$BEPXp|IrgxH4fbs`sLFR@IDdNlhdA7G7V^-*0C-fSBs;!I zV0_ksih0*a7w*}?yT0MY)xMAvW(gIo~G@U4~WK= z%u6XT}mS08X9+*UWy0zRK!| z8};@X34g=V&|}8x0<(M^C3>D*g5^pVkE9?a^6fw>p<&M%_t4?|dSM6FXf3SKR7h?0 z?9-LQ%YPbcW4i7NjqZ_dm{DW0)j0aXGJC#KSE1+9YGu;^yT2M%^=3*V-c`9 d^zUj*ZvnJbKR5{wmI43(002ovPDHLkV1klOSP1|C diff --git a/assets/dolphin/external/L2_Wake_up_128x64/frame_17.png b/assets/dolphin/external/L2_Wake_up_128x64/frame_17.png index 59efda0050abbf1247906b2df9a0632c5afa83b3..4e4fa0e52b5f9885282673872922fff352fbeda2 100644 GIT binary patch delta 167 zcmV;Y09gOb0n7oAEq}2Q!!QU%(Wy}B5g0|InbACoN3gpTxx5rQo#nIS;5xqoKKze_ z$RA)@hg7y2DJ6_Rt;Nn@XcI*CjwqW*2CysHO8suRhdvx;y`>{VN;il6L@`M49=Bkk z03O9hNCU+gnwvTiyqCdbhF8tJJ{dmOYQzF8PK`6P{JFM|O&|crb|)*JOX$rW_yQ4 delta 167 zcmV;Y09gOb0n7oAEq}Wa!yphummwfj30DfGiPBt(OOP`M9z6#PBRm586nmrl?%qfG z11$GxDwk#%)r>%k#X)1}9i+#AlugP2<(%xPewTcQU2JB42uX@eQ?@zi7pg#l*Sv%x z1Mo0jLYgqH(EZej;Qb6mD?FR$)yc4*qmdHe<{z_z)tg(tY#;(Sru&fcsf1DQfj1~W VOyupbaistN002ovPDHLkV1h)KO!NQ% diff --git a/assets/dolphin/external/L2_Wake_up_128x64/frame_18.png b/assets/dolphin/external/L2_Wake_up_128x64/frame_18.png index 7982ae7146f9912c4c8ef4410c9e8ca734352172..f7302372b42ebd07daf497482018bf95eff865e0 100644 GIT binary patch delta 223 zcmV<503iSR0s8@vB!9w5L_t(|oZXT!5`!QVM3+#crBUoA(UkV&W zz!{S=Tk)5_`xoX*{|yT>7Pk3CmJ2jn%z$N{e<*?Tsz-s4yc0GW88(35rTC$I^b1e-daq@vd z@~ewsTLY#_*oK9y_a?oc(yQIu#ftJN{yjI5XO_+O<#Lq$>`rA&G2oA4ni&PvFS$EqRb26-+rfuYePRoTcO!NzyI+wQU?xqizy zV>ceXiy}58$WmzEmIwg5SXwe!4leP}B+Y~!z$zDhRy}}zYgbeVddy<{R8te|3to)I zRmHJ=1IC)!ga=c5lRi)B)voR8Cy9&wyA@Gnk~jb5vX%WDPHG(3`6US^X=#=E6WT?5 Y0n{9JN&Ct*2><{907*qoM6N<$f}V(G)&Kwi diff --git a/assets/dolphin/external/L2_Wake_up_128x64/frame_19.png b/assets/dolphin/external/L2_Wake_up_128x64/frame_19.png index 4017dc1d5731b42d54d5b29642a9389346356ba2..d1d99f48913d0d7d6534526be4ff5647fad09aa7 100644 GIT binary patch delta 765 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 delta 567 zcmV-70?7T*1kePKB!3r4L_t(|oL!MSXp>PGhM#lt_wR++%TTCTkS+?kREJ)KVjYwU zl_*-JgElQvL^_BH6;%Fz_JV^T4ni{s#Uj+rF>zA_QLt3dAtfy&X`0ueP4ee_ z%Q-x}-}inOh9&7kRw}*=*CeqZNo7g7hwXtRbFvfAw~*p3F@H)Ve1GSCo0haaBKqcs%xu^_dQ@`!K(rjmIk5gWvwr7Y&9Y2 zNe#rpp+!k+HPA`>IZ62%Xfd%vl8W_|Pv&bNm7~X;S$~jrCW8XN${R3IMSM|`jexD! zG=_OqQ}hC$!;XUMf#gNO$2O=JO~LAvld|Vb&|ph((ow|DJ4GuKraH!Me5w69LIB1j z8e;mcEaq$-WJ``s*Knkd4xo7!3;TC&xejb*oD^?a*f0Y8MBVmy2-sz(kJu##n1j*r zjbLtfV=zrO02$Qd*z&Y-V=&+GSg-MrP>q6JePa=U{e0wU->ZN{ZynA^Md(ZFx%#AD&fqr5v0t`Ul>FVdQ I&MBb@086?QGXMYp delta 53 zcmZoGSg-Ms6G3%&LWtWC3`@KDB(~W)|c$ayP`Pkq8jEyW2fy=(#oWuYGp00i_ I>zopr09X|kNdN!< diff --git a/assets/dolphin/external/L3_Freedom_2_dolphins_128x64/frame_11.png b/assets/dolphin/external/L3_Freedom_2_dolphins_128x64/frame_11.png index 4145c3efa8b95c16ce6b04ea2e8619bab8f65eda..808dd08fbfbba4309e31adc5f575d4c0b5a42a89 100755 GIT binary patch delta 689 zcmV;i0#5zP1<3`FB!7@eL_t(|oL!M$h)i)5$3MT{y=Hc`W>%>6r`CF)co_<_!tmf< zk;EzwSeqm%Lam3@y*&C8rL+%X9+dT`c;m@j<$+S`!M{=(`LkP;Su^U+?%nx%*x7M8 zFQ@bAdrseT4xN(pVo<6+^@k*JQ<5S{r3)!flG)G-=&eunq<>gPEE0){{HP#le2w&J zp|`yt+3R^=d@oE{U)YrgcVhyu%RpPR*A4-ZBxy)0ZyAgvQS&6JEQMcsYo6qq03ZSG ziVhQir5nHjJGX~!uw(#6L(HC~WWbX5fyyb!_WNz%YUOO8`8n8DTELo1KG1R$c84SY zRRaK$rNi^Q%6}Qfmdl^k_f>LX);i$#z7q$EH1%Na)-1q>!Ir|oK3-)^mkhw~{qK95 z0LlhI*fA#k7&DW)skN;g=XrP2odm`oT?x}~HGH|7 zziyXwxdCSQ+1rwa8lY)GYKNq910-KMizQWKuQP8vDSxtmfiBGl8w0$12qsq3a$8bd zF?OGS!`zuvWa?9wG#0DpBc22#eJ~|};@9?$ z$93c7XrOel;tO0Od!RYWG XiU2Y7LmVm^00000NkvXXu0mjfpodXR delta 690 zcmV;j0!{tN1dnoJ*%9Js*}TPy7){3`kNWsdzErNiv&S0lo35oPQD;o;wU~fna zP$d8$UOckED}SF=!*aPZ`o2ak%-I0^K5+72fu5>8X-Tkh& z3BcT`hFJhNzi!GcDM=cQ#U)jQR0N>;QpdRTW86&XrdPLjT;T11I|YnCwi;&Ms^@aI ze%UGMN*&Dd(}R*m>Y!;+Vwa>+9mHQaOC?nrzRtY%q<_f%1-iTtYy;r!127G5S_UOG zD#q{eZ<*Uuid4;YS$(luKk7+9+y_$xSecQ4G(ZAi-c9Kr*BLuJS*HP1_5o`ffV2C* z5i|5(GF|}?5^JBlJX8M`2>} zxX(pWk&yxiXoD`fqdYy{$+OyN%fNclv{4)Bk}Kr{Unw&kcm#8bmJ(m0l7_%}31i>> Y0Ez%H_3}CefB*mh07*qoM6N<$f(gz#ng9R* diff --git a/assets/dolphin/external/L3_Freedom_2_dolphins_128x64/frame_18.png b/assets/dolphin/external/L3_Freedom_2_dolphins_128x64/frame_18.png index 3f6ed88b10a0f07d339fd5cec7a03f7676ced1d2..233f6aed6401118c91495c7bc30e4e2204b1a286 100755 GIT binary patch delta 770 zcmV+d1O5E*2Jr@vEPv8ZXk1kk$MNsI^X893%uFz2Qc2Aur3pqc!BQHlVO~qKDG0H2 zS}LK83I!L!EQDs!rXyPHt^tdn3muBm*t8|I_y?5awF|)_5{pfXi_ELEn13cOnb>*h zoA-{3WO8=*$K`y^fdjFRn@XqX)m_Cj=yrvQcAnoG>;28F+J73#8gYAmav?a8qrB^t zlmV2^ImGmsr&HNr&;V}rzD`@&U8 zLAbvm2{|<|pxe`F!(jWP&mZSPY4z3-U4A_j*OWWQ#=#7IMmlxu@PffJueR+TH!Od@ zRcgExNPTTyMEc$^@t()heFIviQ0X{ZJF>jTZqN&`a(GlV<0zMHK*!%Y;cuPo9yA$fS56KNq4) z;Xq_rWKujG-?PZ9?tljkO6^l&{n~qf{J_*pvYrtU5r5&*@9QTYGwFY_@fPFWt+{W* zhSle;BsY|a&~=DOxtbXEy~=V)-<&@Lu4;)+ZG6zVpa?I@3m>o<t1;tep z1}j&nRpo9Hb#m$X%4QE_bOgP8e`c+wSXW1o!mpgKDfYjh@>f>ZYE7LW%}jSb*itfP z$X~u_4S#GYH#wWV-F<4Nrsy`jYu``z;b%4!{#FU^OXs_pk7{$gqf$q^Cf=CZ+9jbD z#;4y*26eSS3aqon!3{QoHZ?TN$S45$C$=_#=bC*Jpl*b;)&?vZ9uTDhXn;Ax1=jHa zJ$Vi~{h9%~517S;`pw{45@O1MvI91C+Ei7Vp_8WqQ+G8fhq}XOW%K$0jHQ3J?>jAG z10-6|bVr8N%g_SwbR*j6@YM0FQei28e1%Ttohmm(o^Zx5ET&NphK|lhzS&!-8U%Va zHiiB%ce@xL6HmmGvXLP*XdNul-(3;$#4VTp2cW)dG{Js*f&c&j07*qoM6N<$f|=@i An*aa+ delta 770 zcmV+d1O5E*2Jr@vEPs+sXk29!hM(`7J3kIFGr^2WB{h?jCK$y8OKGfzxh>76AjHyX zsf02r6kG_i5Sm4sj%cyF1}uUubSO$=)0WWU4=BlP7lK737Mm6qnOkWweH~Jk8`24dh3WTzaENf%AI55V1_;;ojP`S!Qh!!+jfr|mcQRB zHC_s(pg$`%QGWosE{>)Q9?fHuoC8Q@BhMQ5Pj>-3=70kyZh&$3`eiKk{}L|-p+EEW z$H)w20@RRd6;EVYd|ilssEPE(ivSMjCHI0!vvb&@3INAt!la}p&qzgNQaq5K3(=); zAhIknDV~n+S!7msz=H;*_NlOb?Y%#KVCp4V&xnYKaDVCd^^=d8^gr3?#khBC?%S|o z^|>p_4a-F6I>e-0O$_^9Wx1qp&L09-wM3^j26Qec!i)042W*0T@HO=KmkTveTs2{^ za)nw|?j}(um!7X|?m$LI(98E{)@l~(>IhQ!mGd=={V%BemDRP{QYT0=)142tEEzN8 zFJH6S{m=th2_!4Q&K%YG{~|Q2_E!Y;6F~HTxz&-3V!|4OlchAW8+$0CR>5tm6ZE z@*H&fbz8}GA25px^_$>Y5@O1MvI91C+Ei7Vp_8WqQ+Jh=L*3!Cvibc0#?n9A_nj88 z0TL}}x+6pCWoQ9-x)E)3cO@2-e=;+9MQ1E9WZG|o^L(f|Me07*qoM6N<$f+!Dk AaR2}S diff --git a/assets/dolphin/external/L3_Freedom_2_dolphins_128x64/frame_44.png b/assets/dolphin/external/L3_Freedom_2_dolphins_128x64/frame_44.png index 74552749ebcbc453270dcb4427cd647e321642dd..4dfef4ff656b759967c175d73e0c9788c550fea0 100755 GIT binary patch delta 909 zcmV;819JSN2crj&B!6m2L_t(|oITTDY?Diu z$@t@zu(-V&+(6L_HIoegL_=V%^G}dq6fcZmc2S0yrR@-5M#7AH*#!)&!PIM)|L zz^uc)5a_zC?eU_#yM6LGzvnzB&k^9P1MKblYR_)!zbgejHh+Y~JF>ju^1Gk^S|w<{ z{YWt3w~u*N=o7_rX~oi#Su}r9^>)|n{p9ERCz^$D`2g%Q_JY{*x5i%+mR`LO@GkLo zylr%Bxh7mS0N7hM#ynRKUYE*$DqwBAv~%OBM=e*@eycQv4JRR-htdUQAGNKWR{BZ< zs9>x(Ig;ys`hWCl;r4+eNNi8HKfnEukx|?#fHd+4Thh@t$8AC-+hwfsou7s`oV_f{ z0sweNo{4$>zF9CY>YQ1zt3R-BZs60yB9uMimHD28t^9UFVM|su~9HP83;OTccG8(c0SrV1M6Jnn~&7KiY+qL;&wU?XlE! z*XFR0knn^3tK>te*;kdlLLwu8*W<9xwr#THu|vwVs;b*#bE%vS(QQ$sK}Jx)OS;Q= zf3(r9gnrWj>^q$=czcH48&XuB11K?=c_sZ6$IY8M^kC|0CX%z?oTbD^%34^Tx~PP+ zg`Ddn4}a^$;bes=Ja*=W*Qv#;P4U2Yfp2WqzV(%+C{G8It1P8S%r5d~#PUnBsCM2I zPu^WN{C!j5V28Np2f)(3#Fs492Nx^WEGc)O{qZGYOhf|!w#+fX%#C9oHj7COz?J)~ zPm>eH@iWTeFktE3-t(EUG@WTPM5tMt0(V~3?0-sq^9ONVsE%L@j^K`?z!z5@KTPNc zIT;$5{Jm33>8hSA6Dpz1R&Z!Ka?OaVMp50ePleb?$ka9jRCAW8p%ix%f7oj7N5PAd zf0y=WlIDBlehkUHFs0_S&p!qTHPdQlSdWALpg(oO6ixu~^|`c};i&_sJb0to?6Q6t z7=Jm6W|*P@AaP(EGs6Z@F?woY*UL1GYwmdEOZSDf@f_*u-P>-jQBEfT${MT1qB}32 zmlu?y5kNEzT#zynZ>x6*IT`>UuDN}hZ(38xekl^#JvFMbPILycB(7Pv2zhHzSw)G8 j(;%VEw*&(E>;D6pO<|!$2)dF00000G0pB45o#pV*r69t%tn5aZ3C9> zU*naw4IsHi)DIy@|^cQ@5wm?@H7CB+V|F<+0cKV6Myu$Kse;o(yGfJeDy~S zLHOM7b6 zP{06v*@;x4?|=DID~T@zxMRrd?v56>AJlE?V*tSQ;=zcOerL=@81gQo)$jj0yzb0p z5>x;Ha_WVQ|N8BcInve`qf9LPlh>09G5bLLIDhj8#D0NL*rXWBLhMcBr<#TeU~nKcX6rMIMM6HkHxGORBB zqmgDGjsK|ufVAE7irh2w;Sgnb2>>c|Ouu10hhxs9ZY^eBvy%n;oGcX~m||(8d4VSK zg@T)@$A7i*gi+-XehIU~YgqY8hj`>i<$IUdx3=0LDy^8YLI@aeT=?yz@Vik~Kj#q7 z-d{5OQ%mV!2YC<$00`ZSLPkIvTu8+{Qt5_z=^Kzyl2!n~WgjJ&zIF7IFqu#Rz+3oY zNaf?@+0%4k0)WuFwdYHHv1PaEBpy~L0bfzg%ztui2i^vs)bv@fe^z8a0nQga-h~cV{g}!`}dS_<>tt$7Ssj zKz}cws_qa?0Fc{121mmM097L==Wjizs<`3HR=@U;5S!1!s@=8a?kal90Dxd~Em?5y z^>h3@J(2`KS_aN@p3Js2x(Of2|3_B!h1AfLN|AplW6v00000Ne4wvM6N<$f^TTSvj6}9 diff --git a/assets/dolphin/external/L3_Freedom_2_dolphins_128x64/frame_5.png b/assets/dolphin/external/L3_Freedom_2_dolphins_128x64/frame_5.png index 8becdf3942d6ee2ee89036660a51c611ff560892..e7de890b4b552e9d1f6f67fd5c6ed9b72f176de7 100755 GIT binary patch delta 757 zcmVN~ps;p+jOYb1)NvdJD-43Nt!e z`(}JI-wsotelK6X-@_Na@L{(k-K{boItL_d(Ewv_xe z-w!0;MF1J_cfRZ*FpdFuU@sl#7#NcP-2``Z2a{k_Ltym`Onn}Xg0Ed$fOS8E7083R zOCgY-gTo0KK!2SGfNbldt-O@B&{GFeF-nG}L^ZuH_<3hflA1PQP{ zcj&Bi=d2IVY!z@}cNe_yCD076w7@@b@1Uel4IV{N4u3|bW{&_zfaV{~1bAimT}f?l zcTcXRedd4hUX|1V_x*QkDI~aG11UA=eB}e6OGPlluFbFtz;D;UfmfO6)!`K6zm^2v z{#(822p~Hv$>2p4v9$!PG1rng%#jpqxgB-B@6Na0CMyb~V$esX3RwTClSOnNm zkq;Z;#^bbFBFU}IV1&TyK1CRbtqR`A6G_+SV{QPuD)RtHDFC=7EJq3q4cP2AumMGJ zV*u0~<`RI`AZrv$&I2s{$J>4I;;fVw#}m8=ZVJ-Ew1~zBcgyne*Y9(uN?rqiRSf<~ nvITl20P;MikDK;v(Y^mKP0?SqZlaR#00000NkvXXu0mjf_!47} delta 758 zcmV9z}^78JGFQWNF_-tQhRSbl|(;~q_&j& zG2ag)-$ei!@V9Sv5g11RJg|*NIReHcKsUi1-o_*t)euh9CmVj3nDwp>yjk#sD&&gfvTRphKul0QG z;{_U%uB_hTs~_-J<^FsQz%TcexQUP-YPo;g#%uardYs8h>d2%JoO7dJjit~|fl817 z>v9K9N%v0q0L@kb7j}2Ri{Amw;Cu`GJrDLvI&1Jaihpu2GBtY$I0Q6*YbL;!;rAuA z!QDT;miC#y?Y%Ck1Mb?@wG=lp=-Uzzuo!~D*14%{6@Xh27;dZ+ zKPoza2Y(d+YfH8GBY^eq1+rnc08#ukK<6-k7bsP<76aa_WB@Bf$tch-I|rt8TwyZ- zxC7uM$u(O5dn6+Zh!y}F7BKt}xn+a07*qoM6N<$f<`P|lK=n! diff --git a/assets/dolphin/external/L3_Freedom_2_dolphins_128x64/frame_6.png b/assets/dolphin/external/L3_Freedom_2_dolphins_128x64/frame_6.png index bdbff35e6f78fc409887ae4881d425f83573d4ff..645953060340dd3b0da29933ce360a64917c1e13 100755 GIT binary patch delta 764 zcmVyAlbvWpM8x%oiS@&ch|sDO602^$?7EAppEq48@7@3!0fba^OJf=1`AB?rT5dKi#%38fQ9Et6^lvP z;R1_yvuRohF@IAB?Kj_CQJXv%caDgabM2LqmUJ|t66#iD<_&`A`xls6dh0io5{#Xo{8{UCL0iJ;>lOSQhr3CML6eKVf=g$~lI(oFSv_yM@XG*_ z(!CtjF~i)KNG#CS<5te>CM4y#YJP_@@i-{&AHH~*GIrG>a?$nZk#qCQTv$X>9$3;^ zU8oFlZGS6t&P5zAN);@5r534kI?-q02Fz?GjmruZ9!B#_A!%e4#G!&#f0m`TJGK`Y z+6(anh=}Ms9#Zan-8pKMUCvF)TM#8pEyKoM5=<{ zzgA=oc1wGvp|iUXx#*I-180xUTiuY1R%lwF0;|}w!kSP$7(LJ*dfP_Him_++!1~Z( un&-3cv(bMPuxzwF`>=prfB8RlT>2Y9FhDhr)oxk<0000d++*QwMj8 zYNtb@QS3&Jtcd7_NQlIO${Jgb-|b(v`s22ao`J>}~dekp)<7;C4Mr7L1|?R*t~P=ROUAh93pi%!9=Y zfVq<%7&rtw8-Ij=nk4{|ci!1lSUIi-%oUI6&ld!2$hmy}wb_ksNww2*=eqW3=UuLq z2j=#Fz(UsL#rcJ;xqExBPDcQooBc}l5(MA>tCm!&E-i;iNllq_3!2WQKib%aS{q=r zvjY9mj-%4z(Ex^K0GwYPhIMCwp<1U3!L}P?l1>?9tbdh(p^>*HfC*rq46j|y22H?s?aE6;Nb#n7GJiko< zMz|hk7;Hl8Yrvq7M3%b&tnLJisFe%uLj-yTfM~kBcnu=pU_lB{`l(ZwdY`%64@NYx zwma;Ji+^xqFF>j#o$+A|tbL;(OEnC}SThbZcY!VAJTW{0bS`*|wu=Fs@X*aWXNmhv zdIuyu+6;gsrOpUon*>ool7CzPlkdw2O8+IGyozB9Kqdpg(hnH!2oO_F0m%ax>;dRr zUk2`#Fi3lVp8@LQnE8YUat6n+A})C7uK*?=Nqm|IyD)AK_YRhvFMylH(zJoZFK`07 z3s|pre|(E~Z8(HYH2_i>j{=m&cn{#>Oi$_-MkR(0eZ&A;U}_ViB6nO_fV>zI@j diff --git a/assets/dolphin/external/L3_Freedom_2_dolphins_128x64/frame_8.png b/assets/dolphin/external/L3_Freedom_2_dolphins_128x64/frame_8.png index 3cd04384ed26d58bbf8127fc31fe84790c297e04..8cf252c9f70335c094eb520c5be99566e835f97b 100755 GIT binary patch delta 554 zcmV+_0@eM828srdB!AIKL_t(|oK4d~XdG1>$MNs`&$ye`ZL)&b^;z04+&UIMQIZ>tk}bD z-IUBEv-9&XTgd}mt(y$g>WYQEC||Fr^O&w<{kUH$+_B}px*dw4#TL>5R= zSBn2WlLeCRB7g$;`<`+U7*hZq*c0zD1;!}AdW<{1mr*bpA+UNHYFEMv_}V`VZ21YS zObN`L4}sE2I7}8(0F*=k6gwY28LWP)O_yt&)%}+Q?D!;^n0S3=ms?i%s@!bm4(@y= z{A0eiEqAk9L!30h@oruinUCdCiGH@^Qn7 zw@?M(m#tt>^yok_gq2AE?_(**OSZik$cj;!UYHLvIS!W8p+%n2`z{1b>4@?aHv=#y z>Cubc2G}Ag>%+KY_`rG}hNm%H2ys1!`E?9eg@w@^mVX3>S`xJ!D%S)<8`9jZ9JWo$ z05}-uu=Wq}17G`APP@4i9{>OV07*qoM6N<$f`%Lh+yDRo delta 551 zcmV+?0@(eE28RZaB!A9HL_t(|oK2HYh?I30$3MU4eVbWr+#Nx1*20}Sc#2pnbc%FG zs93YGpcOpCE)fx8bWqS_>wPcPAw)qC4}x5=Q}0?0ooSu==SsHP<++`!5OD@kuf<@%qdzx2*0}x!KGe-1$uS$9$>z z{xl1tZbIEF)yvVt$vbBT0NiZ0R;|y~@tX%8MU!p;n}35}y^+6ipA&)PCF%RB)V>zfCGn{w#gdxu_J5Tmx##-<-3n;GCi478 zsg$4JR3vqukyalo9jQomu?%#N!voJ%rpu5#lmcu&=!KDwP6DwcsV=n+S7S-^N|Mx) zqI+k1B`N7bfD|MTJmNwyiU0|)eJ@i4BL}b*;f_5?4vcaD{P8-Bd=d;oQU~_{JFbKE zlLd1Zg2fEk(|>R@A_c~Gi|zZ)&1LRSUZ!&%z}0&Isq(xwo)(b4qYn#{OMBg_S{LO$ z?`;m}Z`5vAvy~GIEaxap4^^~Qn7p(Y0gx>8c7~(-;M+>ZgQLvS*v#Ud~0tEtr)0{&qnZIX8MeD>x_d&V_-*yo#(a=9)DteKe(S>*^D7Mv35k#dj`Ku z0PGr>ngM3OeRaDNL*~)Gmn5|yaeSlGg!B)ICnU8Egx!JmQ@t+&NEkGVycz!2f8DQCw}4$8>DpBf21aE7JiC20 zebOiWM}LMG#Q%cL7youRKdg-TRy6$Y;vzQV-)F9P;}TXR0`Nh4%NPN`uSst_jkyS5 zpaw2PgBa~5@ByGatYgYQ4&5by1vmh;8slPY(BCMC<~%@@^Wd=TosR=ZuWy4aJnT~i g9-M0Mf1OzQ3+uH_#IfA(u>b%707*qoM6N<$f>w=SumAu6 delta 751 zcmV3O=aw2Ob~Qfp_;E=s31c@{BtodcXs}nyK{JxZ#OcTkb+|sCN6a=DO5;i zlzwTxnbCGn{w#gdxu4u6y+xn~9e-3VyEEb{zE zsg$qZR3vqul-3_E9j!=qz6^9vz&%e_X3LN~oC53s=-IK4P64qbsV=pSRAWi>N|Mx) zqC2nlN>b8=04Ycwe9(np6af-o`(L04Mh;*n!X1B%92n&Q_~R8A`y?2Kqz>%`c3lM< zBn#%w1v6`bWJ5td`Vfw;y1VFOT+Z~SYhi@wx4~{WUV>`p|_oXA)Ntt@@ zbGhx@@LT(0XvIKnaz284GqY!<8)qFf8biA>?0$Xc(0^ez4}kmW#qAi9QyWJmy=U;t z6u_RbnK@t%+*da{F=QSZcwSNq5+}AgO-TQccvMo`K-ev4Ki>NyfP_J#$V(xhbE9Ae znVLcX)-Hi#BJt%`XR-#6{Y(-pTwJUFJPMGWkp%9?#K`RsSacU8k$&^HSk)Q;*Cm0q zq>2ZpOMjB#mLT-tS_lS%bOWEJjd?JDI^Ia@>i|PRccP!W_Hh6wNggC-BqIZeg$U>s zoa6qiq^Li09blj&HS;5H158PV8->-}`fC7tmoS)u{8c|v-2wJ=q$`&_7#f!W@Kk?m z`jmJ2kNylXi2nuK&;8xue6cd-Q_=9(#YJq+zi3_ZjVoA@2*4ZZtzrZKzb1X-8O%ih zLp5+A8pdchfe!%XVG~pS5$LV}EWtsj)tD3$!+u9WG#3G)oCil_?|d9Udb1C*@PK#K h|C!Sb{;!j3e*x>YO~jPu({KO)002ovPDHLkV1h+`VV(d0 diff --git a/assets/dolphin/external/L3_Furippa3_128x64/frame_0.png b/assets/dolphin/external/L3_Furippa3_128x64/frame_0.png index 5d61be5a26d61ddf5e5098504024d315e98905aa..87d1fc9d28ed0b274059f891f8fca09812718a2f 100644 GIT binary patch delta 441 zcmV;q0Y?7Z1Kb0UEq^g<6hR!te>0vjLeL{bu=1|35DT#o8#Q-`jgTT>A*3;tsX{8j zZVmVW`~;d#B~7Z3E~icG(kP08yJ(RVf!uMY+4FYxS;U#y^CM)Mg&+TU@BQDb5#z^l zqJaGmxViBW^)^Tp587GLx${+UDOL6}0;@+E{RFSfH$TSZ7pb?#RziH z8tn)M;4-=qWMDtgjGzu~hCG5!kHS)q;BuYcrn=m%k_X#KKL)#7>PDN%N*`KXti-^Y zk>TGltEqo~2P_tU_;5KW(FpD6v)*zt`eo7*>an5iGG=@3jke$?frE?9rpc|(OXGF>6LeJpOk7(YI%+BRVLX&q32Q>=81CO zX$?4iHfMCky9i7UA44CHkH236xP9FHTG)11l2pWpx-tmBuP|Vz0Vo16r2#0z_SS@m jzSHJ7pxl!r7hL`V+etNJU@=C%00000NkvXXu0mjfp#;ljB)+6XVJY=>9+Kj(+8}?B1 zkcOz~0rbE1pK>-YM0d)TuQ3XPILY#hy!PoF~ew zP8-0%BRP}9m5adT@HX~wXS#og;PSNl^*HUWB&o26Ix-2sPkY-10E!4)=>W<&y?3>* jFzvKG3n=#_DMXh)+etNJ()3)z00000NkvXXu0mjfn>6Hr diff --git a/assets/dolphin/external/L3_Furippa3_128x64/frame_1.png b/assets/dolphin/external/L3_Furippa3_128x64/frame_1.png index e649beb881d27f32da33eb78ddc882dd747bc7a0..67d77257f22241335e81d3d11a273e8bf8e7f6df 100644 GIT binary patch delta 384 zcmV-`0e}Ab1NZ}wBoDtyL_t(|oZXT=YZOr!g^@Ese~-oN+&l3nc$*6k=RNOdAdWx7 ze+A4xAYVEz(cmqy{6pKTnx3hGxkTxA4~*`nj80cPj`CQqtamXvun}~9S_4{U#e)pA zPUOJ>v!< zVuC+f4F)cJb_05#uS&9b?BT=Pu2dc~X+TU)7$}Qz-RH(~~eeUV~JPQeh<< zO7{9h5#)v2I4n)?75`7SxvRzh+7T`u z{tW*WF#mvj>3E0+Z;9m}+FsT4Ocl%}O22zxbT?&mx}tHE$9iSGiphbEpzF&T&@w9? zWT15-4-Ozt>3fiZc~8rO2IQy6Jm?NMGBi9m*WfUy4tK?Js}qlWV>hfWMod-wP5R}5B_KwxbWE-^gv&gWbxSfk^v=uWos>d*Phk=qE5gsE>BTL0D4H;U|4{N14dnF z@v_M2yxHA(E{n36NtO1_LLVEzLJ_gMd4C}FYg=Wf$?c}3bo%TB)U|jXSRd|})2=Q_ zQn+0XXLJY1 i-rbaxJyPjMeQ^l+&<>M4|ZrRYhR9k0PuMj2rx z8%p;2BqGQQwQ*RA-Yfo}ZgW?Q|FvuElcb7-D9UAi`?COia2bIO0E~5_K?GE9tT@2B f1K6G-_NNdUM~s z@67;mZMC&LWVCgzWCb*+$sMF?z;&gI*&0xzr)j0Fw{uBC9pt;Ce^V3+=`-` zV5=KeCDH^b8CIgbUmIfYA{mq*U?W2(J9>OI@mE^!B+Vu!`RF@i+LGLsrpap$YKbHr zt4OCFY;H?`8jj=^c~6q;#u*fy7Urc10qk7|DS$DNcUq6RqzRFE`dm%`T^)nl;s z;lNL_X+Hdmz*0MmYQEyL1+4p_e#3)rCI+ilrNy9s1rbmgVe#JTQkf06Xv?GQM-DUfEzO#mx}_hmjjYA@+<`E z9oQ*%flkRW<7y}*sU*#%O(2CYrLpD& z;3p7zV7g@Rl%=Q-mw)ZK^mr|tBFLg;mp=Rr(W)(Qy$_RkO(VRg#nI{`%MGm3!h`>5 W^R;5&26(gp00007Gp delta 533 zcmV+w0_y$U1l|OYBoZY_L_t(|oK=&tZWBQiMbC^kkv21bl%QSPyK^aKz1~cD^ya;L z-`oM@I_hY7$mr-y$qH!LklRmd!1bi_Sq-S!*HvBz>PYSe7-_8j5?G*1i|SYaZbi{e zu-OZ%5^0K*jH;&nU+ZG`JQ}+j@LC^;g>OB+aHK`RFHOI+EO`u9DXtG!jWV zQjuPHu(2h7X*8Bw!(n3+nARo1h97mFi~;An5I{YxBPA&<#u|63SORXsY*I_1y%>^|mS-Wb z)`jhO66k~+Gg&=ul1kECI;ygMO^&N)ea`%(8GG;LlqRNL(In^=l?h9>0i^Jy6xNyo z`~>_Dv8G1`Pgyqg=JKz7mmby3DS|9oP8q=85K+^?^&U*)T95Fa7Kf{kEH|`D3lIJS XY4f#WjdChS00000NkvXXu0mjf$^!cw diff --git a/assets/dolphin/external/L3_Furippa3_128x64/frame_11.png b/assets/dolphin/external/L3_Furippa3_128x64/frame_11.png index c49d6463d91c074ad7ccc9c0ec9c059544241163..be63ef5c408606fca38ac288e2ff43497ec3c39a 100644 GIT binary patch delta 673 zcmV;S0$%;*1?B~iECG>`Eh&G|&Xo30PxaP9m9F5Scv0{o=P{s!V07%8>xa2h;P}SMRI)G^!=2WF)D z(=x38d#uhwVoXU+tM6YZnv!KkAM3zY$bLaOd&j!z}$0bJO&R# z1>n2)!DexfUYS<_j>Ug2P~CwtHzh?nb)#h&tP-Agey;8YVYm=VpV6|FvE(ZOM3hAp(WHZh_J-8FP z-N}xH{YB?^YSs{Z?coCN@RCP-xM5-*0VsCC^{oky{(IjO0Caz%H>6yW9_UnOBoyDB zfCK%}83-wt3Q5}2->n&NUk9g$B2X?B+Y*ir)DP_9D?XfUYX`vB9=r95kv+L6vA`pjx21XZqJ;{4=I59Xh_AdNCgcXgi^(kE~_g*3z~ z?db<@N5WlEpdNqNM~kMpEK&VUf!eNfv27Al3S=41*SVFMXeF#r+RClN>}huyeN1Pba!Sws0VQu5i5vhge``` znsl3OCdtga9+GB_-|^vlU*7-yewa=rIW5T^f((HFfPx)n=l&H*Ghq9F;QX7jrkJDY zj48y~tm*PcgVt2ygpfS@UUw>~0i$EzUOUX40>?L2rjmuZ7;d*NV5xrtFn9MHboV_h z2>{K?70A9i%<%)uFKYs1Yu$9jLM)b*BSuu6E|`J)c73gG+%xTB5~>C5XaOMV78 zl6e4SA3J~XvCyLi5Mw^Yb{$A*PHyL8m4{DetWA2VgVk!yxfJv}Dx|MFk!^x$^r zb|*U)_7|PwsaZqtjfV@o!%H6V;f9HM1fbXj*S97-`ry7N0O)^2Z%DZ$-PftkNGQHD z0SEfCGZ0cP6_T{4e_Au(o(@hAMW9?Nwj~@Ls2|wH2Y*sMQZnCu*9K?|^jDK#8P@Ga z1AuL((O^)&`yr;EOL^8TwIiKL^tsha2&!Dh#QDh^9?U;;Q5t2G?&uybq)*^<3TcQ} z+S8BRiiEqOKs|r3j}}eyzC`tR1!}v_rM5{-DUfA2U*~3KqLsXEDhX77?*Co97FXAo z!1Y?PIPQY8v=(wQB=Z)*eQJ~!rJd?}|gw+lA+1t1?-c<~%y58icc zJv4!jQ+``uybZQuOyFZ5mn>?3JQjd`bzIi-0BnXZkp2|~g&SMQ?BWz`00000NkvXX Hu0mjfpFKq( diff --git a/assets/dolphin/external/L3_Furippa3_128x64/frame_12.png b/assets/dolphin/external/L3_Furippa3_128x64/frame_12.png index 867f8d09f1f7234ecd29027a3343655ef2360519..95d09d14beb7dc18d38f07ef3930e19d25c04f9c 100644 GIT binary patch delta 496 zcmVw;DEbYHvN&rM9&={D}%zC~OW1CnW{c}a)RR@E^^95+iKpH)VxVoi|JRUUv47-%(tey?r3H9}%Gco4Nejf97{sbRERT*yZmzHg>p!=jTyTJ?102W> z*_-LnT#<=;+s+vPApowK_Rjzc4_4aW2%zAd^@GKmMl3nD@<_La-zVZY)uaLmXw7Zw z*6$K?1Jr$BcQ1#_i6yiE)39}=+~Dxp7_$cD4ikQ*U};9xVB?fNjSlpl4>1>E2w*$lkmkb?c1_?>b*0wg%~XJl$8;i?ug m;antEOgT#oB-iIx2mA%KZ=_mX&eQh*0000um znV4t^>=I;4*DDZ$U4S!S24o0E>^Xf43?49CufSt4;>tCNYJWuthElV%uJr-Oh%~PNW_kE3lzD`pRgm$0<@DkPca1Z$W zQU~Cx>Hx#4QZ-%!niw|3&F3b>@AX@EZr>uTngL0)*S@3$bX9eX5y#CENN1ga>X<+a zjH+shssB~rEq|8mQQD8wt8{=`q4L#xb*!TQhbCl?%Gng9o~ zL-J;NG*=|z-gZ+mzz4v!z|`+tDK|KLHpZ+$xx<8CF=?1lHP|?2NUH~f=LO~>6aeNE zWby((fGm2%{+9s$5asM88j}M-ijM>O6DK)fX6b8rNX~vk>YZ{t0>nG5V`Lg9{;K9O mIUn!HiYe!zgXsD^b--V>Z=_luZ;IFe0000tJCrz01$&%hZuaRhm7f?S2ao!HJ&lUu;|YLxo`@1poj5 M07*qoM6N<$g5zp2y8r+H delta 106 zcmV-w0G0pJ1kwbMg97=&v4wE~Tsvt2(tbmosxI}HZJJ~PxxK}J6xJ24CF5WM%;`V< zz(^&<_woq^E>`xJ{3L+4)b%7 M07*qoM6N<$f)wpEN&o-= diff --git a/assets/dolphin/external/L3_Furippa3_128x64/frame_14.png b/assets/dolphin/external/L3_Furippa3_128x64/frame_14.png index 1390e129757256e22ba30c74bc4d681ac4ec1ed5..25b4ec565358dfbf2ee26bff84f53fd2f1798084 100644 GIT binary patch delta 627 zcmV-(0*w8O1&jrdB!5#$L_t(|oL!SaNK{c2hQE8?vqqV4lpq7cDGFLdj=L!7J%fmL zu3FowaMdb7w0W&sCPW~$aDt#^?jpkGxw0V8KuRcZLPHJ1Q3hw6dGDPT&-=#dEWi7o z^Ph9?xj?^2fh08KAji=tifpz3N2J`6;6e0lT{rZc8+jF*TMf_S;Z*SByecoW+LBd^$iq_wXusXl6N3_M6B#H1<=9qaY;7iz zdjD3+fOnftDC0YSDh7OCD@vnb{jHlDJGo7;CkOW}1KNk7L#$x{O9NH`Hhe;Wb`97* z_Gy=ElW919_%1<8BOTq)s{!$_30SWHIYcCo)ljPP(|=CGG$Il>i;--|>Nq%PKuu+p z2Uu?QF^EW5t;+KSDbAtDXaL)0bQ!RodXbJV79Qb;luK0&ptKv_oAef-7}tmn7T2yT z`RJi^tQZ}*Iy8r$MSMggl-_Vpz7FPHI2X_IN=;!s0jM_@GME5Zw}D6p4AS}fhw{xz zeYt6~J8aTb#BAXeX?VrykOcgW=H1!Lp9}~%(}8lWdQ&l9A@bTh18O)I_uim<14{6= zF9#zAEaCU$?i}`~fdZWHQ|80xCCEoomxjm^fX-6!gl6a)JR`tLz&~1h3VB{;Br5;_ N002ovPDHLkV1iGZArb%p delta 626 zcmV-&0*(EQ1&alcB!5y#L_t(|oL!SmNK|1IhM)UmjWXd6K?a6X6tsvOcTv(EgNSyn zTHC5{)ha=>xvg3zL?E?rf}myYBEsgnvLMhvN+@tbLk+`G24|eP_r5KzcYZp{=X=jN z-#Op=0RvKwdYF)gG|iEhwpxHA6$9P% z1KWuhyxVdDP3-mGYJ`VN>(>o^ zbTQ0GF*bO0cpfi>JR}9`3-gl?M~g9^^Y{Wln13<~hJ zKMkWXSjOv3-)S;`4o-N9_`_%AXG2w0la>L@6eU;9Kk5e0@UiOTA6k0~dGIz1IRF3v M07*qoM6N<$g1-?Ww*UYD diff --git a/assets/dolphin/external/L3_Furippa3_128x64/frame_16.png b/assets/dolphin/external/L3_Furippa3_128x64/frame_16.png index 85bd8bbd9b16b76c73f3f2037944cae425044abe..49e01f31739cd305e17bc9008756998e1bcd0de0 100644 GIT binary patch delta 556 zcmV+{0@MA*1jPi9B!3J^L_t(|oVAm&Y7|ivhQE6%U>S0);VT5YGXlu0sx2ot`KX{R8AAK-=&<~V2=5*83#&hD}gGVV=x z(iWFDkN`$fc>?4y#2}+9?l41C=oJK`oW;H(0DObSsGqv5pd*2sITr@d<}{RGo^1m- zg9_isy>XSnEw;c@00%lX*t!IA(gx1BVZbCsIV6Dw7k}aMqCid#@Hit@0RaINKsI?N zsg|TVNHU_^zzJQC6pVk?>Sv{SD~ajvTI#eEELndBHB^*k2UucWJOU_V01Ix{Z5%@d zpBuoO^V9&O>mEQ^Px@F|+mmFZ{XRS#Q~;Xxj=6%KNU{NgWC>k-wc~+@K9>}-R?~qo u0Jq}fswH;1{>|pY&CNBJWE>Bc5`aJIh)_jN6*NBp00003U`a3x6s^$7C9;K7Z8YY+2XRmLx-ym-sJh&G3dhDDT6A^S!vk0}-2#pGUhPye0yWac{Pr zwz#~31Td1y6CjTv1{qy(hdH7`uOJxZJoXg<;2ShX{nTXz9SPjbIX8edr=bM%Y#P8R zRQN{jjjIf9u>qa}*w=}{#s!d*HgL)f1Ewj;Aqh0N2!EFs1#)tL#~HB-2ne76vgtcX zwItO+k`dhoj_LYH!Q^MHepXtvl9>IjrA{NTWc3-;P*Ij0V2OG02%wAsEVv!Fb_5lC zZUA%6Qv;B$dH`j8(kIf&t|TMv_u*l`0?@2iEEM!ak_|CP#?Zx=J08D8-Cqe=tJ#n- v0C$y-%O=|H`ZHS$e{P|LB;#n1lmPqz>WEN9A~P(y00000NkvXXu0mjf%JBvk diff --git a/assets/dolphin/external/L3_Furippa3_128x64/frame_17.png b/assets/dolphin/external/L3_Furippa3_128x64/frame_17.png index 69e9260dfbfca6168dadedfc4dc95b8d99b29551..f5871e49c1ee85fb60d5391c3cdb971fe7fea8e7 100644 GIT binary patch delta 528 zcmV+r0`L9R1k?nOBo7-&L_t(|oL!Q?YZGA@$B{EGf2&K~x(JGbIaIKqv4YEwx-7E0cm&3CIfLm;vMoUFOHu6EN@H zJONA%@}r~^5ce3FaqoaRS!3Uu?*F3YRy*u#9OjDE`GCo~4O+QJFf}nR(@g+|j_9Gj zsFO|p;Ox64V6(KQkC&gQ^S8d`6ol*T3))N6e=k$g`g3ST^U$jmWe+tNehYl4K5l@4 z1?c1rfbfS~o1S_vDge7+0tWPBE)4({!9dPSIPl9}Rz9EW7Aq*?>-vM9q-H)g*127m zG}6!kUsq272MgsXEnk#J= zcBiSZfdT+UK2{p0q0%CwEgzUWl9C+;pa#ye8|i_}{o=1rKm#gJl(WsTifu{KNRs-J ztT_(AAAmW)GfM!B5cmV5cM;HfD*&455zuN_&zdD@oFnf*H&HEHRuA zwW%0Wik!w1|HC*@RK^d-H_8w_wM4W3hR_i!l4xx$Yq6S1lC4T&`$SjqcS%wr>8+{X zjTsyRf8ZB@S&TY-n2!K{1DhrTUU?k|+$hs5v@Nw<9V?T7RtZS+;Fuv~F+Jvs=rNf0 zZk_<92H8=P3DM~@Hbw7%Iay=ho9_RjmVnJNnm%5BqVC`NmQxU}w=ZZff7YP1B=zUejOL+V%gY{WF!~nwP<`A0 z0}Ig28UW!Bw>CZXUQ_^f!2}E$bhtDGSOfzZFX6y1ds+E>u9vSM$Jg}-eM!x%2-dw_ zmo(PM5x%aT0uC0+Q(C?*N!yd?x&zQ-*awg`*Iwsmy;F6TbWPGoYUPe+#+)H$7gmd4 zcfHe8*gye*A|ES_l2A$RXv+uYjwGaqi*t67-AE5)?&oiP%Kxzn`$kVB&GHrFQthb TCX^-q00000NkvXXu0mjf8HM+< diff --git a/assets/dolphin/external/L3_Furippa3_128x64/frame_18.png b/assets/dolphin/external/L3_Furippa3_128x64/frame_18.png index 21d2a4c2c500c1b3769960e10b5946a42319ee32..d2a276eea0a314165b9ccbc5f4b52757eae45299 100644 GIT binary patch delta 513 zcmV+c0{;D^1f&FzEq^g<6hRnW3&9$LggxI6ar_Pm{aE%tWi42U?*EbqSaeb2t%tPy`M z%io1>2Zb#!^h%*|z@heJm%5UqLXxE5F#l-V^2Yxm^}>|41Ai8`6xdz?>c1o|nKY7w zc2{-mcqw!h3!P5X`6|Dx?sP~`0tFx-cd<5#I5-^e%(MfC1ue5uHO6M37Lm`u4#0J) z6cM%q_RSA=sEoD@i5T zZ36xQ{so#Yij7rBWzICQOQR?X?x96e2zSSx-k!I!uf^WZoB{3^fR7jE(BFsO^uKB?KA@#zPwto#4w-DG~1M0sbE}1lv zgm#v7?06}36$_nC)cGdAtnPM5PXYxXAa}9Wi#S9$;JIlB4hvdjsVa=kKx?$T2X+9i zQ@Mz+9k6dFeuBZ)z?~oqN!xvLODzazYWy_Q@4sAdYb#Cz*!4meTg*-wq}3&l0a!EE zVtFhkC=c{m$$vQH;QaPH@TNjTAFe%A@~gfxi6GwCx}q;0Ma0329wJcVHdFw?-Y`sqRszLyu);mgMTzNDs;B&8y` zU6+(=RB{!OZkz>%bGCAMc|nqP1G?@2^cYkeH(!=xy?S4vj$f3c^Gr@kCER-@+LM}9 zj@~(D*+kywLKQX=U$!betkkbpz#00000NkvXXu0mjf DUO(_F diff --git a/assets/dolphin/external/L3_Furippa3_128x64/frame_2.png b/assets/dolphin/external/L3_Furippa3_128x64/frame_2.png index bfc521d1650d572af54d87408c8be48b22af3866..c5e8a2a5b9b2f89fd0a338b9cf468470840e1598 100644 GIT binary patch delta 427 zcmV;c0aX6=1N8%tRDV886nO@!6p;YYP$4>OC=x1CKm$^I5k)GH9ir$C@7+(~Td&O{ zu+`|>*_mJS&l)j*EdLd-|A1nBK1HK9bQBKS-PBTJ7F--C{SkmwE9Lk3nHsL>=tUW- z*aCQIdZDcaZO{%N18oxrZ~{fjFn|>79?JnlP@E&{M;`P>IDbpj`r^T*h*Lw+zTn?n zFS+-=Gt$@#TPt-f=FH4I)NK=gN)|mZV{L$LgaJL)cO9@_uWHn|`r!)F?dcO%pKftV z9Od>ofK3M7K8~q)OV)hGK1p29eA|U(wnZ|{;4JEu2C{YqV2rbHoB`OF6Mm7^VCT5X zD0s(kk$h`s0)M*SR#MUkRwmjG-aZ;h$*rlCgZoWM!S9;xT!tV6HrFLNGh_Axz{wb| z^zLgQPs0$$uOxjeS@K+cBc(7Up-hDn-#hPAvwFX7oXXKNML(S-rr0KR>6C?xVPlEd`N$Q8+P#(<>=r5Dm VV%SN4xJCc~002ovPDHLkV1fzo%Lo7f delta 427 zcmV;c0aX6=1N8%tRDZT5iaY~Vib#NHs1O}C6bTh6paChqh$0op4pDT6_wJ|g?XArt zFxBeYota76i4#|`U{iU VV%Ue&RpWP5UhYE9_07&O40a{g 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 diff --git a/assets/dolphin/external/L3_Furippa3_128x64/frame_8.png b/assets/dolphin/external/L3_Furippa3_128x64/frame_8.png index a3484079cfd1edc8424181c0272036816de505b2..2cd571dff7b471a8a858b552437c7b15ff9db19d 100644 GIT binary patch delta 444 zcmV;t0Ym=N1J(nOB!8VrL_t(|oZXYLZWBQiMbC_uWaS`XBnl!I*)ktM3G(m&>OSn2_MN&=%rC#&k+md6sRoqui%oLVqfTVMj{Q473) zmEI&E2fn_W+Ei*(){loF2elfNYxN^Ik%mv^!%^1AFz(5mi%@PE=FKj+{)l}0)Br0 z9EYS1cLvnn1yhQS1BG8<3%Yy2k0z9K$@hR&9X58ZjWkmKXSkP*YUyjGX;`7fKtAO( zt}NYi66#Q@|I;AU*_ m59|X?8*F_JESLhS2>t@69O(}A{aPsi0000T!#VHyH)7i?{}qtQ z6Oh4LzqUP&xZn~Z^|ZO9V3uY8pQ3}&qLbClZlbY-dZ(L!Q-2HQY62#J9wp!ftn?-V zmEfAYF-@&jRr7f0>!4AqYOQ_%C(`iAd^ie~eh2+omdByn$u;^rhm#^?DWHA$EUgrJ z@82;C}zrq%D_kbU*59yNc0jtJO>|7gZr2bF8myH_fYptmtp~XNxA9T#z)`#e(!zXoe`VI z^8bK3`>+Xmw-3oXL|U#iblVCC_ElGNmMzd%jhBV18(`VZ(tpnpRmbG18?M~tz1Cy9 zxF~8peB4SF(Qkl*b<%?uvEj_F!7Q&}m<15^%Wr!X+)5j8hwE5)_G2CWyK0S(U$tF$ zjsbI0XN{@9YWj8%Bvm1eUmt%N&4R=)H@bY|3yex)$lvWAEfN4*mcRsi*96l)b0AF) z=Xg_lEsr4QCVvfxCqNR%XyRR+&ZSwgnq5qNTk#X(D2m?ufYz}C5o|pQ^QcI`T6z=j zVT!nla9Ct~MTrFi;R@I}fVm2;ohiUenpIifYyf2d-aCQ$h9staBa)M}lE!|>M#zA( zbuUO3K3@|9tBeFp`is`o+{ciVYXG&zrzc%dFly$7HCh=v6?-3Pj-=^SpN`hA5Xial zgpNltq5q%@fGdqBMo?_w>^~J@u>nM2(k`$WByEmrBsY?Z_Is?R(!Nw~1UrTPASnI< XmOu$!_H~?^00000NkvXXu0mjfY0}{* delta 479 zcmV<50U-YS1Nj4xB!9q3L_t(|oYj*pkJL~UhM#-q!gLdoZAb_!*blK{-QX5Cl{nn$ zl}H@8_FsU*u0SFX1SS{+2_ZpX2vZ;-1PC*eA!&D~y)WXnoeuwiE1#V6p7(rQBQ~Gq z{{eOOZW9b{9+CHmv|MTAx79q@S6$6nc0iw%E(>3`z_ObqAAcQHPvo&5t^CEEPGh?` zFKXR?*rhDoZ-B$K)5B+x;fGy=Szf^?Yk(V;U-l}vk+k3zSF!Nq+uHh9)k;rZbX9nY z0drbst!QX9d415NRE3njJoz-9H7Q}a?&4JlFe-^4f3thMhyiR_0u$_Q(}@0=14(=| zCy3fBxr3bRw0|I)0C5zdNl^9rDb0%2?0g!^iti9P=iUZ`*0Tc+wjMO|sEEN@29uy+ zil}mUEHWXY#DamQ1?(KaTn4{!4$o;s#8W0-HGM07VIc}XiN4MR3U2E45Y zP0AwpYi(ea5rav7t#@ngVu(w6RcfVYr+rW`Zs&zH8CW|Nd+&R9s_9f8j@MTROlbrE3=^}CgXd&3=?zC;n$PpnPdbW9TR@R00f?{elF{r5}E+L3=01M diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_1.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_1.png index ccff2357cb67f8c472a3871ecc898d40b17b9ba2..dd02ff2e93bfc6b8fa121794f4714ff345866924 100644 GIT binary patch delta 537 zcmV+!0_OeH1k?nOMt@EtIE@COp(V(nRj|#$@Vm4G!6gk2K`li?)FyW|-1i7{2>UgJ zAFi7-WE>)coUo*@d{ET*C9#j3-342grL3OFJ}fG z$C7qu-L`d^+3=riLe+G=v@NVo2AK=bVt`>66#>Y{D}Ml%;?-a$a6Yu_B}v=zqs4B) zPJ#)5O6DI4$KtzrdKta3J7K@Qe^1-VrmG6Pyc$T!nKgZ7$ bIQ{|$W)k8Sx?DBl00000NkvXXu0mjf`bh|W delta 537 zcmV+!0_OeH1k?nOMt|;%;4~V9hL#|QR>3w0!|&1(1SSm*K`li?)FxgH_dNm~!hQ`Q zIe6I+M3G=|=jr$RZn)FC{)V3M`MjU!dB5MEH~d#6NzyJrDFz4taDbOIfV?EB0xk3AhwLQo<7m&^XwMvQ#eYKP8+O>kR6uWIBl~oc zMB|m#Uho3Q-RI0xFKA#nVF5f4cfm1TazSM1YjsP+o!|JOS=_+6M&z0UCfPS zJ6`RIH*{@4cYh$-)1sN@7=Z0l|1>67E>`x{+7GY?%XNg#Ju(i>`gK1(R|rN?9ZmsKm}oMP`-(%7uX6Nfzl^SetkW`C?jn7dbCg6I199;XQs-?7Rdku)YbT%z5e8 zl0pE=0E=`2gV3+IP3t1BsJirMOt*g34I*-+s#)Kyj#!LTk`G>$seBLo##qt{|Ae1O baQp=aW)k8Sdr)7900000NkvXXu0mjf2;T=M diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_10.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_10.png index b3c3c9d2d4423cf54d2db48d24d5e0c866ba2b30..60556a9dd76e09ca304de8e12cec056ecbff22e2 100644 GIT binary patch delta 554 zcmV+_0@eNG1mpyeMSm&e7{MR}NiEt0DFkh8Q!WJGrh-5aDR5^5MT?+Tp#{wwgf>w~ zE1|%t7E1KPsF-nP-a9Quoq_rbI?MAt_ug~v_rl*u0hxdB{{bXPssa>afB*mocu51u zNs`Jy%crO9bZ7#b;l(}Sn#{~>WNmzX8D4 z>2k~^W$?D9cz*+Ip`B8r!kHG9qVTxt{h5*zC0iMe(kY-0?+V`#XW-As369 z*QWgFWtX6mV3eppId)zuGP4X&x*6~*>7oMZccTD5s<0mWUaDFPlONfD<)eO7=v+Qb zKdf#5DRbW7lB5uT62JnTKtJ>;Zq=&DDY~&V_6+vLbm@D2K}3!eKu*uOr`Fivjrgq1uflOXCKPKgu`f^Ea=D82|tP07*qoM6N<$f{fP^=>Px# delta 554 zcmV+_0@eNG1mpyeMSqQuV+0}uNiEt0jS#f8O}P+!n+gI!q`;jK6fJ^Ug%&hVgf>w~ zE1^KEg%bUksBoN__fCr$oq_rby36xD_ug~v_rTwk0Qk*QFATPVTQoDXB-q5qwJTxcjI;5Xd>Z$5xPN`hfaU5sn)4bTP@6v>fN}z$?>z0b77N%D zQal1~-OS8hhX5U?IPIDwNr%R;=9Bq5i4Z=K&Kt0&?W4g^_EAh3vVSgG1Ym&`_=cr;p6LXRhg{s$ zoVMggFS`Wg1UaHLO0n}&k(p(I;?00xNf)h=ewPFIQGt!v_fnOrnZ=O;EFblwwa(?k zWMH)bq|A8(OOiqWiU9L;0vYI2+^SWPS9D`(^cn1n>C*T5fruQbYSt^&7K@QK<%3sM sD&GSizat@*2H-CaRx_3?ju|-q0LnM#^IbCh`2YX_07*qoM6N<$f_ioeQvd(} diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_11.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_11.png index c190e3f26bfc19aaf1cc1fc5e1039e5906eac819..a0b7ea6c8587b59d0a74e5c6006ce87f18f7659b 100644 GIT binary patch delta 602 zcmV-g0;T=&1oH%tB!4+J4dl=JiR4c zy_uN}zGVCRpnsGi!4v@dr-LqSd3U;6cEwLe_Wiv2?MfJPQaL&4DktB76*KI5W z{keXrKXW^l#;fCQ)!NJ~_v>0hC;;bW?NRe^(4V^(Q-Pd|W&oIG9=>B~p7gW=`$A5v zXi}^4qi5}cN`fJx0_E6w>B!7-KApj+SDO!OZ=vKT{3nH)R;_UEaXo_jq(#C>_9BF{Os%sRBkyhk` ox29CS2Y&5a(g^=NKO^Ay4L5Z2fP9l+p#T5?07*qoM6N<$g6}yb(f|Me delta 600 zcmV-e0;m1+1n~rrB!4(bL_t(|oaK_wOH^?b#XtA^UejojN{cj<22yCDIhz(L<`{tp z5kiYLK??l=wka2uuSEqxA=1K~5fm+gf*`b@c_Orl%31{lPCp=t$_Wj}ao#&E#&Y@_ zy32FV{dMkv|0*O&Dgms;0096F@RA0Ql_V8`non_|oZ5`-vwwZH;O5NCED7xSm^%~V zZ!ubf*Zm{7Hv=t`11*!laSNHM=wZ{TfVN7Y|LzEh$|*H%;8g(LR01rhVBi6nEnr*P z1=!HmE!A0#_NvbB6~IOUpyLD$npM8j5)0gp0l)9Q$O!@52bZ=X(7Uq zSBb2~A7C`3F{d0XUVyiQauybGq@npCd;^<2hdIN1zYf-J8p*tm)2p7<w_7>ymI^lJu48i(}ihu`cca@P9lw*ym-XNUl+m)E?fju@Lm< z`-T4W?N}Nwjk|SgHnYsHiG)x9&g->D4Z}fy=3dMOWLz`{z$|a!2bSVVR};_~a%xS} zT9+R^+bh^eFhrE27&|W&nOO!XTnSiBx+q8b-4MXf5-i2OmnxNynH$W*!T~?ZH7&H# z1&etgWl_%SotG2>Pym>r3Fv|j#kE=#Sw)xUhaW?I%w8>T2}I;bmAzgnmspInCLg@= mrt&@TD{V;){9}Gb!0{V5bn}4eb&L}L0000i0D-5gpUXO@geCx*^9ect delta 32 mcmcb?a)V`qCKI#yrnt#EOfmx3eg|4J0D-5gpUXO@geCy2?g| zE*D_?7j~)3YcQ=wKP`Y?34o1zXqqpvfW;w&_2534nc4FYpm`g+T&*N&%^-G>CpU$w zH8ZpRF_ymz3V)3x$O6!l3p%yr&9Ty)KXdEq)W-1Zg}Io6%HTOW*nD`_yq^7CIzK&L zhPwxxtq$7h->cH=hsD_GM$_q!_h6!5&cZnyBkL}g2H^|X@NvxXrtVP7TZpb3$r&H+ zY+Ba#w4t3v+jTPA6KQ^qZroX^HJa7mdw3_v?U+cy1Aj@5Wa#+4@l$T0yw zu@sL|Ex^{0eUVPx#07*qoM6N<$f*K1nPXGV_ delta 612 zcmV-q0-OE&1pNe%B!5InL_t(|oaK_eYg1tq#((F%w`r_Z>tw5y2CX8}Y8?c%LsC#; z!6D$_;7|oY5QMsD2c=g<2SJb`;vo2eii+SS4WhXjMbzpPut=@=fhbg}CXLB`9ManO zH+aV9ocB5Byypl1RY;Ol0VqZQ0RRs0;s%hDB$a{Y_fe^qntzSPY~K=ac{4MM1Is5T zj)eI06>EZ5=|SA<{?3v9&Jkd@gICm{3@oUtzynhA zLPL)WuzmBpH03muREwV!!0#Bq#yzyoKCys>A*FTTKAD->^AMnIJGe>;g}2 z2)Dq@%rY-n_J1xYwGd+zfZlA-t;ORCC*uNmE!XoQgTMz2H;t+ zxzEczC3!w<1ZEVK-wd%`ElvLQDv7UV>O*e~?byj}W9>bpn7a z1^9&}c$8=dwuTH8^-?opl#Uuwxnh*mbkTXq$7YrSN~c49#9cMtcXq|$0Qerk=g9ZA ze5fsx&s|Kx*ak*v2e!e0B;_LCOHOF+wxu|@YQ9=C9Yd`o%x_ebU3B*aOv-i8QioL4 yk*Kj=shL`YRFn^1%~ZYzem#~n!$0sd2#!BVvHD(Is`lsr00005x6PKZ( zV+?mkN|k@=fYJGY!nyS%ypSY)qvQ5mTP3qAo&xYDI5puFrAV$t$?de`6-dop~MuWL;DOpujqSrCAy42Tq4vDNEXwAH7Zq z_7Y43RAc9*BQwhal~Ta3B+CpeZOpua;#Nj_7dbE8FjE={;XQt|)qft=U~>mZoAWZO zl0pC~0L%0PV=$t)TbrV&s6O;aOiDkR0TDUU07cd6Efyn{<%3sOD&GUYAN4Hhf`5*m bS#bOX2+H5Rgx7(*00000NkvXXu0mjfo-)W7 delta 433 zcmV;i0Z#tX1kwbMg9pFo-h0mZ9+8SHe~1&ohukdg|#Q!Bc=P2@MuYW^h#VEfb)pQhxXdZ2di8rVX)iO|hQMsmk*`q5VFKNu4lbgAF&vzEFZi&Q~4hFAFZ*Z3;qc| bv*7p(2+H5RQ;I`v00000NkvXXu0mjfcr4T} diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_3.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_3.png index 525fb1a50407b9703f6903346898ae53e54fa2b2..c5ba8af0ef2ffad0cf4195c8f782afbc8799704d 100644 GIT binary patch delta 55 zcmX@la-L;_0+T+2>s4u0F~zs1nYV9TX(PTTEcz1b{~7aTEdH=g<-K#|+~>M03_#%N L>gTe~DWM4fYOof5 delta 55 zcmX@la-L;_0+T-P`s>oFVv281GjHFx(nfqwSo9^<|1;*xSo~p~%6sR^p=s6r3_#%N L>gTe~DWM4fb6XY$ diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_4.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_4.png index 5708bef7d3f513ec4a2e77be66fcfd66a30ee739..23166c1a6505b42fc85634ad8ab5b879c2a16526 100644 GIT binary patch delta 600 zcmV-e0;m1*1n~rrB!4(bL_t(|oaK_wOH^?b#XtA^p5yqVa#xlyk1~)lszp$`m@xv2 zS_mzoO)0buY?X_m*P@^xkO*=Y1cg%2PMm%)Z)g)lWvwI$CKG}v5Ul1$Gw-w*&FOFG zF3&yp++PR&tB@qA3Q&vzLI51#B@G}aNvZ(tpW{+JwGz$QfqxC)@@8h11U4@e&PVub zj2+>-!BO1%qusZTcHaU{Sj0qwhTRQ9dK-bk$x#xGUD|uWYXH271X$R>zymUCK+|3q zV#8~@wB|IHR)?P!!0!aWo|9}^DY1~Yh*A%@FJ@-;Is)iC%yHKuN!mV!jgz}4T#K2R z4ZUIGr||nI34dk)=+B0`wSIoOTJe_-{TeAh`*5=obG91b`9$%{j-_4wsi(RzPtEs< z$7dH`>+(>W0T@$5e$v=U&%-#LpI(j~FBqFW1>eA~-@%v+f^AKMxfR2mj?IVk0n(vyRvOHv&_%&gzDGz0upm0;b7)b43KfP0svX&04(5X&;=Zf zI8&5VmR~ER1iupu15{$?rJtKw1}No2ek7S;>$NTCoZTqbU~}XEhWL#^0m6?EZRh1ezW52x~Vs?AeW+}!BRCx0FYC)E^0ASQ9gKe mQTZPDjkcs6{xLtJ;P?YM9r3qDo7LR_0000qb)X5GNuY-buP(-ksASf*gZl&=-Zg3Gqtxm-v#99zULGY1>$^AMcwefH8 zjNkJ;-}Cyye-)A>RRM}IKnQ>Xyrco-BuN#Z^J849ry9|k9e-K}E^lULNnqnr;ar5j z%GegZ86LyEJ=}ZaaPJM^m_^jbdMu~-VM3lCJ`($QjFC&2NgB*2jlBBKU*d)0-!nK*1 z*~lx_e+a*hk$+$gfWd6IQ)?Gzs}=v-fnTS~Pu^Xx#GI)Hcs^15yzASJ!PH}2Tcqau z#FO*OFLiOG!vKt#5kG14vHgA=FV23C9nTn_KLKCBuHM3!4uUN$)HPbmoGte! zQhT6MAsjjhjX4Hzm!(wkyZ+w8yFm8PLJ}TIl0MUZX@8=%lrD>V0K5qI4tY7LCf6-V z+8N!ni3qgv{nGI6yRoF|MOU`XW|sLmnNa<@UO-~ubU2)O5CddftpGrl1po_p9P|MD zBTf}1mF3q8DZ%dqqX3oIdFiKSmH|rnkRM6r*nDNv*+-Boq@~w2=k04OliwA=Jj~Gp z48SQ#%2LI?mo8}Kx1}VwTE12noktr8%x_hkT{H6vmgG`&HCd|W2<#|IUVu0JW~1V00000NkvXXu0mjfTsR}W diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_5.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_5.png index 7df699013ce24bc6942eec70dafc19eed9b1dc4d..7cd73e35bd9a7f010779ff164ab6f69f3cb74212 100644 GIT binary patch delta 595 zcmV-Z0<8V@1oZ@vEq~8TRB;r=Kll4yQL@{3XVw;C0^! z?#)2!*g)$Tu-`(iR%zI^R6u(*&^JCpqPk0cJ9t%qcQpYPR59>?%o4Dy(*@Yj(k``G zok**}PYd980$}R_nkpq0P#02c1NX_y%wC27Yj(58Ete#1Jb_&zdqcS8W@fhc6|3I| z-@lV!5`dnmpnpRv@?GVU`_XuN_s#yV7s8mMUV!Ix_Rx#j!(Pu&r_MtJ<9`1%t()0< zP~~?M^D%dzVFR0KyBo*(uDRH;Z`Jk{%U~Al;uXy4{^=)g>!5JmXlU?pJbk!+%Qh&L z2zrk|WsYv#IjN;Er@wx9rO6# zG6XGNzu4D#E0$Cqb@R5~%rd_&CA8qKm(B(GVfr%nVt|Z`av6Xr@&K0N@y=#oSIA&N z(!BiWS&QIzf+2uX?7VbjW*MNE3;3CIQI4*4!vH@<13t&j>#i)5+Zw_&OwtT=!=NN( zW8X_ji%hpICc#BB713$bM9Ro2nrJ%q2pVHr^lix?B1Z}!tMY=V#YhGD;4O&C_rR}y hOX}gD=Vt^Qe*hGm@4aiQ+xq|j002ovPDHLkV1i}`D%$`6 delta 595 zcmV-Z0<8V@1oZ@vEq}XfQ*ji>Kj(LEW2!}?i>(hDv_kQLMYL!gl7i3*4n+qCUmYAP z)U89+E8-%EB7$y;Xi*ehq%bqfh(AqS$`5(_WteB5Wi8eCU`k8 zihH%Q>%z{i3&0)=x!lBISJDCNn}LCwqa>QAw5jjdco3n z!T0YZm;zvXE`Qjdg~i@##my|9*l~UE>)9~ouovJto!bBG%K>luaF5PF1ULP`X}Z=j zv`^JHlXEe*Ahn9Mbl;BSV()D1*u7-)!WQ@fcJ319bocn9*9)L@)kvj$9FOm>T(=1- z6@vbQP~W2ucUtN!&FZfn-Z656#U$L5Bz diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_6.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_6.png index 7b138689ccb90739ced411c80d3267f483fd98d1..fe9a996a17a5318c09cb48ee4acd4b14a405c2bc 100644 GIT binary patch delta 33 ncmX@ha+YO-EE5Y;!y>84icB&B+?E_S8Gyjk)z4*}Q$iB}mTw5H delta 33 ncmX@ha+YO-EE7vp*fr_NicB&B%B^}?3_#%N>gTe~DWM4frX~qf diff --git a/assets/dolphin/external/L3_Hijack_radio_128x64/frame_7.png b/assets/dolphin/external/L3_Hijack_radio_128x64/frame_7.png index 4049043fa8ee1959422ba0eaef50e0eabb7e3bc7..06e38fddc650f3753669ac2c669923d4c91b23a7 100644 GIT binary patch delta 683 zcmV;c0#yCR1;Yi9B!7xYL_t(|oMnlnAc`5kxVxk`kS4QA9t6){Nuads?WI zPG|Q$yyy3O;r|F10vqD1Kq;jDy$qBWf;q%1RIIMyV8vG{K!2SAurd~FBvyeRgI2;v^zGa0m$X&-}XFg>%E^UJyg!160OX*Iq@}M89F9hN)0~fG> z_!978P1LwZ;(y;RC8OFI({eke01F|2rejntrHIQ~k4yuY&mto7#sjEo<*+GMRn;w> zNDt39E2daPM2@^=<45;+u_+827TjI>vsnH8%g z5!Gwq86U&(q4Sexwd)B&rW|3=RCkBB@1Ws95F{&R1AoK7)?2wwyl)`A7ZAfl$?3=> zPP$*%khHORlzKnZT0=IAd!QSZ=4jq#uBg_gXLb2N>#a+S92^hBV^vlCO3CGmMVZ*V zG62A9ch^2^RMl5grK+lp-c7mafiC}krY(9uP}N+QnU@+7iT~~i>Ed;*m^`gK<+jBi z1^{v6kADF$!Z?69JZp{sdpu62Rdrr%|7EShLTJ&v*}zziFCuXuGv+cEHhzlehXlZ{ zE|)KXv7DuC#+p1xV*9B`vYuv`ngJX!R_ukUdH`eqhKT?zl{9Hkrc-JcX>fJ#ofFbJ zt)`apyruTz8=OV2=YW0@*`N R%wYfk002ovPDHLkV1njIJ6r$& delta 686 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 delta 632 zcmV-;0*C#Q1(5}iB!5^*L_t(|oXwI?Y)nxY#ed&@&-AqhW2J(0f`x_3ED+kzSCKRl zkx3*hS+FB%cNW4E8<7wZk?z>|vyf;akv1eV6HB2b7L5hrj%UIzXHPM1L^vzzYnZBuT0P*>`F6 z4|8o}{mZ~r%*-r+WiQ`O4VCd1E_5Hg^K4)c_k7R#%X`*eCcAmRl^Jeo)XrSXM{H~k zl9_?qgJfC;`RqpUTAuZWGhk8clD$SIzp<#`BJ6O}%lVQ{^eNZ$(oxc_ac!8VSj6Ho z)eYc2n3>s=GJn9z-RyPklB9JfuuD8#D_pyonH8V1;!X6UNQO}WddJRnYw3#v^_rW0 zzi<2O#V;2|Q;x(%JZA+jyZn*Yd$^$U)u{x>wCa>}dITfLV@^}>`V>qS<=RJTI0~@l z9()G7dJuDl`F;-K>qf_jkJI>$Z(nynM~!IrE13UB4}Uu^NL}%)7WVOah_U|80PaeX zKG89AvQ6=vxCy}HXiL9Wk`lR!#I6h5ZD*Ymbvrc#`SiA{{M8t8#Tl2l54FE7E*OaN2^aLH6dv^s%0$(w7_ zoBN%|BiJREBiB-?C60Wf>-C0ck|M?O!4v!p)b4xWFHlmFTo#(;H>Hz<;P?fd!_Z>FIwg6KCW^;5W!yjVqDB_E*BmrTHAULcrBGxLs%H_o(o zcYfS+?!EuR1-E@L7^F`mNjjD>=Pf+i%>W?6xWrNRXFp}KjDHRI>zi;QL!9%$i+sIs zQi4%v&chFAYOs0u@syZpMre@JoPzNBfaYP)n@EQxKLfRNX4!%(+}xZ2>oIiSF#`eY zSN{HAI&YOWX``Lbb^v^CJO|vjjpx9U?QcAM79_RKWwlGWyG{MFZ&v2CCrKKvji|rD zW+TvO$=c=gfc0?-F7AwPKQ#lAxkvYa^P|MyiKx82LUMag(!J4f1{Mig zJ_ikh`wg(T@Z|+AJXfo}%IaGWxnD>+lO9X@5A?GVn^GYSZ2$lO07*qoM6N<$f^N2B AK>z>% delta 719 zcmV;=0x>x^N{71<_qmTm%`~lWAy+Ao>qV{S|H`H&#(s$qy*>CKGU(8wh67%-q+-9cS9J zdmqmCo^!tUJK(kt27~m8BuU3I=DdYRyBPpP7?(K8{_LkrmVdDUe|-~9WQcPJb{`G^ZfEKA?FR^d{0_$e_Mfb|%<@0fuA z_A7t?FP*nao3zo+XFC8sH=YCT+s1QX$@VuMJ`0js=d#+R+});r**7b5+LI&=*GAOe zV6zeEOp^4E#DCoDW90ILetB>PRJy?(7U)URNNGSNT@2r^u{vT|7X^ea zU3{TdJI%h-A)_%+SJqU<+}VpI`)#0=Bf0IuAfm zMmb#f(4M7ctpLLPXOi2xo4D{D`6)Q4wVBUnY1?m&HrF4NzGJ|)PrSXkGA>KnU{MFx zuLmB${eR9lewkV9|7y*6kOaH-+pQaBuI1b0p~}FzY|e;dxhloo}_!D;|wek zw0sU42KO6aapB7gTzIZleU;U>9&*2sbS6EP^dI!I5}Vr?mPG&n002ovPDHLkV1hp$ BT`vFt diff --git a/assets/dolphin/external/L3_Intruder_alert_128x64/frame_15.png b/assets/dolphin/external/L3_Intruder_alert_128x64/frame_15.png index e046d9415117177fd4afa1b971f0118e065ca1b6..e6be0884706f1b9cd3dc046f6a85aa690774c6dc 100755 GIT binary patch delta 592 zcmV-W0*&fc?);*eLIJ9&;8zeE|G*Of2kzcd$>Sj?5UCLddR~w;;A4E4GI=# z#FziDcocLd&|%4Apg!#i?qqL`_0x%IDYFg(cW)-Jz-0&3Kc;$b)s(E67BdCr`P#0O z0Pct8RU%lhgO#1DipTZ#TS~{U-=p!aU#wR2RFX8fHKg$lYt2CClB5?BmA5HYYr2#q ze?5|np(_%)N;`{7XH%ImdK|&t%Xax7@y0~0X7$}vJFFk3)9dA)TdWO960jCArP} z36&4!r^I1Bg<_Vr{nkurJ#rpk1X%B-C%QQrm!x1(8+whv1Gqg##y9Yz@P8 zVh`5DL+#E>XXAy~2M+j=uQZBXl*@D92H>uA-HIL4I0=Pvh4`M+oKFz z+#YTGX9*BhJ_asM62BF({{BspI*q529t=-&FfT}a0U889H^C_V_yd=oJ2hXUd~b)e elyojVlk`89S}LEaG6d}a0000*&fc?&oDeLI(P&;8ze4v~Z@e<>x{d$>Sjtf`UgddR~w;wd2v4GI>o z3Sa)i;!)66xOkUz2Nvi_3FQNB^i+~HjfQvj6!X8k&^ z(vf?x@Rz2xL_WP~EnMQoI4(m6*j&8IHVgqWAY8ci%K36^<>0o5^vX3`3V?$d=Qi&r zR6f)+g?3m^p}2C}eru+*9yt#%0<8Da6Wtt*TT-y74ZTL-0o)!V;~V(bmjDF6f4W}y z+8+Ep5xn&ifxYP=>`xYcpbPsVg6$l@!tzsBv->e5#d!TBP{)Qqdf~eO0xSmn_0Iuk zu?K77p?2q`v++Uf0|)%bR~p4G%H_jv`w;AG-o+hnjta2-5L~pr1`X^C*>(is?NJ6U zZjUzpvjm7L9|IRBiQkG?fBz=QI>u8;4~C~Xm=`3z01bkln_!fF{DDi)otm#vzPCeK eN;;RGN%|j_S}LE-B(Zh?0000@B8*Ej(p8`yh)9QT%PtF2wLeI%O8d!T>s z$jJ)RR;P9^KE-gYWV&_r$D?_V-{StnOb7i#M!;vWe&2rFbmrgoptYdO-8;Ibs+P7A zwib1{z0vCdmXwOPTbHwMu8&m}hT0H!AFhtSW}xapZ6IX+(|;O%ug%K@n%6=;Nu!wZ z1AX6x2SBR5rOj`NyIP**UC^8aB){3MTiXSIsWOv=!~19c zjP}_Ba5;#Mk;DS10EslWT{t(DyevTcSLFeEXf#B!pD@z`fO7_ry{r*UH2<4~!Fk|Z}_pd(^xLBP4_y1)Vmz)3_7_UE=0-y%ua~N^9o?nvV zC23F=<^eGq5aOTzdAL;d0fJu*^1?wDmWP7<6#{uRKUB$=8DK_90YX9+-z_c}!D4Yj)*w?ZYMp3QY7qjb zIeVq}#O%E79i@Q3)I=Y?1`Eg|)72NC;vJ2UfY&4<<89SYIvDML9R!`7a9F z9~Vg0r+gy#w;t42>;{;u2~MdniB5YrcWNcZ3ZsM>;Vx)S0+QeC)~)RVz*L#Z!r}ch ze@6T40k|AQ$4FuURDeX9+b*1&N?sNq{;To;Jv163*-w~h0l+x}$X-?n;OBp~f&7*G z_&8sfLaJ-6#N_kP354>~eweZKl>65o30$mBfcyWli%U*`4UE?xOaV{>@;Qt+ThBMi z@sczs3-f@O4G8hi|2$l(`T)VN26^Ei3(G^n{tAJ-8uE;LgAjl@cW53v_>VAb))&Bw9`)3gvRN3E)00000 LNkvXXu0mjf?wUr5 diff --git a/assets/dolphin/external/L3_Intruder_alert_128x64/frame_17.png b/assets/dolphin/external/L3_Intruder_alert_128x64/frame_17.png index cfd6410d607b8245a07862b9fe06b716f06838cc..b9e89ebd0bb41499589492c7d293865ca0a252a2 100755 GIT binary patch delta 729 zcmV;~0w(?P1@Q%tB!9R`L_t(|oK2IlZ(KzXhrgY-_MPF#9gR64@jX%?sBnQuKqhxa zC{j_Rs;a6F6wN|!H}Ogh_SKg5UcNWOw||U7Qg;)+GQLim5H4l? zKgfo){wut?bu0;Ja^^5M!@ zVjwQ0!o*L;6_pZJMl_23Q{YFD9;ZMyfcK{+Qy9n0D46ioprE?tQ-aDLxAj)^=Z43W_Zjp{bDifA0Jo<@q zdE5iJFFRkvcwg5scfvXdt;Mt1?Z1u+7+rDCN1<(xtbaA7gPlHpT9|9nh{YOERGAnl zUVS<{?x29Kv;h3(h56p_ch#zjy;8+&530~}02*_H$Yv*bI0Fy{AolZongM`T0Jb4C zCfoB)ku#lUh2kgBo^6%~)aQ~6Ao22X01`lfaWX%XJhv@S)sodWW~sY?U^3aBrAt56 zF58r{g@0PixbwOuS%dSGqk8sRrXfwiP-G6ETGXq84TFMu64NJ>*=e69*I+!z%ZbOG zx(Dh&mLkKOe_KnVE5*WC>O1q3ftPrL~j z>9|^Q#IJ8ZG6EDJV1Jg!yr*TyG`%{jP_AvPUQ)*Ftd;@9f^?hLm*FYo5M_b(bpL8n zRsHf8u0=^u^`|ZXqldZsw8=&0Od8%*)z8wt2Z%^d(J)Y>O9oN)^3$OqpGUO%B;8{#_uk>8B%^3A zX8!|*3_DY9<9`$x|HE?cwb7uK$P*48;;($HcU4t245AQ?fAMc#0$@K+1mv5qZF8aT zK`7d*&v8QlD1ZYu*PDNr6;;)!dBQFWFU&7-Dbm+}D-h+o^R`X#fo>6xK`P^yEIj&& zb6MB}xi33kgm7QiF?akr2<^qQ$?d<6au{E6&j+DnkAJK+rGuRT#k4S&(hB(+kXMNq z$zOdsIqsr>uCxJ)%?tDW(eJ8N75b%$*&bHD?*KGp29eEfEZ_`)AA;D=vuTC^S^?OW z(3)JYaEhGirWHyt0qxneJfMzCG=PN5#~z3PImXHSOf0xqfL%UEaz{?S12!wo;f?}`t?Kxb`j6`8XMo@-4qtaS02B}kp?cy? zz)08Clp}t9`;ieK2Lb!DJmx(uyCyBvS%q?KV^j4qW@okZAQq&TUSEc%kVBLOI@5!z zQC0QJU$_<|LN%DW0E{1I?$eZu%$Yd4tE!*H{Q@L_96ApglAAsF4}4l~iD;VI@Bjb+ M07*qoM6N<$g18A}QUCw| diff --git a/assets/dolphin/external/L3_Intruder_alert_128x64/frame_19.png b/assets/dolphin/external/L3_Intruder_alert_128x64/frame_19.png index 38588da723e6f3aeb3d078ebb8975a4ca729d92b..23e10f5536442f3640afe31a20d7caf0eebd9d23 100755 GIT binary patch delta 643 zcmV-}0(||O1)K$tB!6Q`L_t(|oMqELXk=9s2Jqj#^X89`&BQ|3A~J(0ENHQfkVQ?N zjfJ(Ojw}QlC8dQpFK8tqB33r0Q?yBA%JmTx0v1~AhQNmK7MoN$Ry#3o=32a&)x-~O zald=+x!*b8Jt|iaqHFj+v3H%Qu7_06PbsAmg32hR8Em8pEq_%=m5@?ODa~kQq94;j z1X&!<)69|VcW3Dd3d`~6>Z8lCu*k3*a#phpQd2>7+ghB-ry&ZU7k1(_?bS%lTCTFm zsF9EuX^lf1=S}tr_qY&?F?hSrscCOfet7z#bpD@yvp?2IgpcV?C&F8;N^Y>JPqhgF~5fO@_G(Wq7IHhxAq8AzV4DL-QQTi4X&DHbB5YfC*d$b=+ z^fJZDje}p$65Z;-MDN`njvv0Ge^%2KYE3q@>sNCUH-VU z#dJ8=@q87tdPp&Dbhxj~vdSYz3^r>z^4smaU%DAv6|dEoh0musG9hi&*y*BQT8gXK zc-7Z`!7A=n$2H{WpIM5}zQ9IJV{P>}?SCT%XE!^v51Nl?l+tOZLuYx$sF}GkbTVNa d7DJ{?#Xqvw@wE%AWnTaQ002ovPDHLkV1n!^KQRCR delta 642 zcmV-|0)73Q1)BwsB!6N_L_t(|oNd!TXk=9s2Jqj#^X89`&14HBIv2&HEu7*_5PbsAmg32hR8LXuVEq_%=m5@?ODa~kQq94+Q z2(mbymzg8k?atCA3XAdJ=}#A9;iAHJ$XU)ZNKFUTEh}**pN1%aUf7D$v{NHBZ?VcI zqeenvq%{t4oHx}c+~-Uz#^9Yk$ELlD_QUnF(&@kE(JpLZBE)eC&nHJleih>cyd2cF zu@Gyp$;<$~IDg%S{Umvejp&UHtOlv*5wIq1gJ)Ktw-6g59KG2zlbTjqpYA=%R7*YmlYdIKLVBymm!JOr0YlkmVCK!u z9y8+YVI%3zE0=3>Sj&RXzunb8BGYc@v+vG1C7W+j@!`GBZqwX3X3CFV+GRlOrUJ(8 zXLA&?8q&?Y`s-h|5@e z&DVdzGVWA|HRR}@ScuQP$XZQfZS@!JeA2IOvp8ea+*}ztnJ^9) cN2W~0-?G>7wW8^M%m4rY07*qoM6N<$g7_jzBme*a diff --git a/assets/dolphin/external/L3_Intruder_alert_128x64/frame_20.png b/assets/dolphin/external/L3_Intruder_alert_128x64/frame_20.png index 38083a472fde6ff20c1ccbb72db043b9e6c67bb0..e80dee32041cc97f241cda6597edb47de586e80b 100755 GIT binary patch delta 638 zcmV-^0)hRN1(yYoB!6B>L_t(|oMqE7Xk=9s2H@}Bd6Rj?n3>gPi)d0PtexN%Sq1YH zYs=ITEo_vO7Ghq+(jr*cno_K`G21No1dDXqY!Fvw-?|_H5uXV1V&2TPcr(hzzdZNw zpZ`DqxoVFgL|5?t!tvEYeYK^ANlGbI5Y!G*TEI?f8K^_5g@2S%N@>9$6MdalBFJL1 zq*)@lJzAuHQCg3uj}Kjsr4_?rDA>p{NWFvl1>13)iM++elmcn`N{okP=8KylUdEnX}6PSBh%buM*O4~ zHY%rB5N~buxs*#!nTL1i(lc*YO{*gsLVAgYa~Pg=vT&~4H|Y(Yb>iUXL#@dJ;wY8K z)`uZOsm~?JK3z_U+x_XJ{`g)I$B>SG-%A}rncWI!`0@EFypL~-eyp2M7Lmz=vR>}= zm(Tj`mUlxhkw>LK9Y>OqI%i Y0QC&=tlg&D)Bpeg07*qoM6N<$f*p23W&i*H delta 636 zcmV-?0)zdR1(gMmB!65+$sJ(DhhaF&u`1jVy!IE2y8d9T$puhyuvNew?S{4hc6|ue0``Um@}I zqd^m5Q}paDuW%uj4S0RRp?SWNA8uS!J#nltGA!+*6=GA7mofRlj_<|TVp`-u=NpV; z2c|6ihCI#>VSg)0p1@x8@}8zDf>a`W$Y|bpyQV`M|JRdK)1H zvVNNb_nz~;-|s!=s62)coxuMOwoe{ZCsQiur<76&L1iCL62AWG2J82GE3x$*UigP#7llAR^J+B!}PoxRKL6m@<+_`ge+|{Zln@j-rkx&?qzfWaQyTV-Mwim wZZoCZOG_-R&e?2tt_(|=P>16sQ>Nlyrak%?2M_IP6aWAK07*qoM6N<$g5GICcK`qY delta 659 zcmV;E0&M-R1*-*+B!6;AL_t(|oMn^0ixW{0$3JiOZL&&CqLoD?K@hI6NFjKK=xt#k z)}Hl=AX+H?0ZQJ1g@uKPl?bMi(?hw&YhC5wQYczzI5^F%D0pDuTDh9dj>RVaIKR!n zdo$lR-#6bO<{ubg8~#7&Za;{(r^Em?Rn-W<5Yti30cJG?kAK)`j8Rop&B3z>Pj%7+ zSV_h-V<^kzTz|t+mEOOPR>d)4STG?ptOd|QLEL6qa>9`j3;=<-EFwWuXQ6!!H-=0DpABf146m&((LWyc#H!dHIj@HR zA*?yW+(#+a5Y@ z0$^x5Ry5a9 teOD?$shUHl*ty7*EG99NB_mSz3#L8#7`EI>0So{D002ovPDHLkV1gEnFwy`3 diff --git a/assets/dolphin/external/L3_Intruder_alert_128x64/frame_22.png b/assets/dolphin/external/L3_Intruder_alert_128x64/frame_22.png index af08ce0f650674f4014b380dd2e2f4125e360c51..52793ffae607f4b19cc693f96bf5bcd58218d2e1 100755 GIT binary patch delta 620 zcmV-y0+aow1*8R#BoS*#L_t(|oMqF$Yh+av2k_64H6wr7wXoR2KVV@~E`qSlE&(H% ztxTsD8!UA83A?Z;;?u^bnR(aZ<%hd|n+u0?zW001_Z+2%5TZx$|G>_pf%4Im5(X)y zG=`wGl~Mz%sivb0sT5L5DW!%^CfZLYBFJKOOmmFn#(a}bQRv5mhd=Gd!U@B6$XU)Z zNNoq@%T|A4BcFvRfL_>$v$Qis!a4e7thZPp;CY=Yk5$ea^lM({Z{EB4Q{AvJAPsj< z+Ye7ZJ#LA!Hqb2|t56HE8uN*mmabd%ofvEE>4p1myN!i7#eqdjU-%8ZINOF%y8n)+ zupX_gBM(bo7Au5LnV;2y&M&+9=I}=6=)|aJU)+CnNpB%$t*&(bt&2G>oO-*qRH8f9 za%9ru#p34h>!agQ3B{GMJTbCmg3Wrm2g5|;8%i~ydp_B*bnT=XsRK#ZOdqou;L2aDjX9v-+ zKqJ2Z%GfDc9Um1ww~s7qa64ChlbfK5%Xm;_)3raiXBqF8hf~Ngm{^F%L_t(|oMqFoYh+av2JqjJH6wpnEiAV14_Mfgiy&;XOTb9p zR;E*n4Hi24gk4w^akTMiX5O`UNp?4W&4t4`-#zDi-%)u4Av%Nq2X@W|siSjrG`!>+D|76%sFi?PO@Uby$RTUdxw99XpUrQgwuvuzlqd+&G( z>(Sae^04$(u|oKa`B^RK{JNWO4zG8PPK0{)#a(}w^cG^)_La`Rbuq_IeTc7) zz~_I(0|y*Vhgp~wn~MfN5_S0l_Hh4rmcLNE`A~_d-ZnD0L!3_qeB1?vY}$J7%7Re^ zaiy*MyEWfy;sT^%wk}5~6b`541j~avpO&%cwl|Rn=b4RKT}+70+7F6JbOg0B!!Hh^ zVSz?|q4jR;RIHXqg)i(Q%NpFuO}@>IF^N*kcxBVoKe=le?^lOY$T1jOh|j&iYEId5 z{!8~k#&CRYj_%EA+uT-4Kh4cC*KgQrZ>|h;nJ@__N2W~0e+P^7QTAw|DgXcg07*qo IM6N<$f@w`N3;+NC diff --git a/assets/dolphin/external/L3_Intruder_alert_128x64/frame_23.png b/assets/dolphin/external/L3_Intruder_alert_128x64/frame_23.png index 1ef1f574663a39ef926d57fa4737ee642fade333..fefe0d834ba18d9c25edc9e8d72faaa0c4db7fbf 100755 GIT binary patch delta 650 zcmV;50(JeX1*-*+Eq}jj6hRcnKQlY)Z7!mBnBoe}ts)q#VrQi*q>u>yKvP(#v9eUL z35et*U@MZwKOrcR2qG2-ZV-uupg|1UcqbMX5pF|*cggO~vzYT-Up0JqzrJtY4E(i| z(y@RZfCz+wDUnWE^w2nu0WgqcMNk9&OBw>bBB(&S7@`({q<;Xk2EG6q~vXtXXZYh#x~yQ%@w2fmXwBDSCck-YtLkidY5y>=BE1@ZE_382G4*z>JI)sl#9 z|H}vg@N>EkjMJLF3ylM=civMe4?-#-GE*7g^noflPI&zJ9iG4T& z8XORj4>y{C=YK*JaPxpWwfj=C%rt>Oj}w3f$^H!+fL}fD?%GdMx!;TN}5Q~U(25Z`tdm_@mPf!<1c6*N9wY9+p1^j19TKTq!h%LPRzBwR` k@4LEC{0{25TP6Mgr!WV2pAPy400000NkvXXt^-0~g5Ll#z5oCK delta 650 zcmV;50(JeX1*-*+Eq~8T6k!<0Kkqy5xZ@hNOCI)6?i4}d$!?x(0uNzOMtSH^*{Nei z7eT@ep=*Sf{sb{ZgNP0bjYQZXNQtB_xzfRdfg?(*&dmFCm~|bW)60kF*Y|m!_k}~d zEL#@PZ4iKvGbOSW=RGu;M;jQ3l02vY$CCQMULKU7kq=QbK!212S_3};jme6*5M~|; z0KF=JFxO~R)~pS)96GD&AuZr$(z?awR3MTzHrfdch}ir0pq3LaAL{_xZ->3z%~dUk z*v3&t@PLi67BHFC_=|5ckoC@2O2u|a$w$UZ{r|ESfGA*RaiyFeko3f(K7bCg#+=B$ z90v^<5Rq>W>wkcgg(%?B+3eJ4Nl6k@2Rz-62O1E+YjfpaHrd`~G-<~&YQmbPm|x`w9-{IV*^`0|fYMF^aZhVcs9R?VnL z`*>Pa28NXC*||M;qs(s5OLuXWC!Q1+nYTfSK$i!9-G4phs%um7O0PXH1;(d(aWkD& ztE@@567^~MynYMk%}PxkL-!C`rG<1eoxY&Cq{cextGeRsPvgvmMnsmoMtprLt)`^z zu%&?)kDwRa2QJRU`_7(-r1M=v6HC(!x>w7MUF_m@3`PmY9Uw^+xD%R0R8o)UUn3&2 ziN+{}aeo)oII#BuO(IDxiNmEyVCM=Nqf%l=YEcMK!z(JF%gXPnNb@Oh5}=SuU5Usa zOtvrk#v%$7ngf8z140pzt@fHW<(Y`I?i19_g596uL}j(TK_16U$y&NEB4TrIKmRt6 k+ImM5^4~!<%~py3r!WV29Or8E00000NkvXXt^-0~g2yH{JOBUy diff --git a/assets/dolphin/external/L3_Intruder_alert_128x64/frame_24.png b/assets/dolphin/external/L3_Intruder_alert_128x64/frame_24.png index b18f8ea6899e147ec7f82a5df702aefb28af320f..0e46efde1fe2018d177946746cc0bf372e65d1f9 100755 GIT binary patch delta 724 zcmV;_0xSLK1?&ZoB!9C>L_t(|oK=%gXjE4e#((#|JDHcXIkjO=A&_An0O9 zMk=K!Z2~29RcQAvY(Wr(<{|2$E?RJ*3n3#?2#E!u|FVeXS*l%hk?ErUHueckB2FdG zj!7qZ_r24_n;9o(bN7#SARa_@RN2QgWc4keuiU- zzwc+HsUq065})sO7yz29HVyqgk@w;x4Ld6u;18A31yX>>>F_nUJ`hnQ=m2fs0C)g? zhV6j7ED5L})7St@LqGzkWLgCoPczZ5bC9H#Zu4J0BkgT(AKx<_VY0~r)J!$H!gzk$;f}YtJ>+>R<6F=J|p2&QOhF(Y=f10#4F#4vNH|v=X4;Pr85%rl540TsRk+v1)cZ zn^$nY{C}BwslS|`tmtA=PDpacnVM4ejY;(F+=n@wbKf#GE9TDEp(d99%vkO%(Gvxm zdk2kCg2^30CX$W#D>PP=U5o>yq{|n-Kx34`Vr7(^*=WC*@`eC(kLY8wh`bdDIu-{I*S+#zD*Kg2YfWyccm0QBfSHr%fKe8FAfy1 zAtDm>fKhb@XkY39!B5jb>u4{QsXQ1LdHh{3mOu!FMg9kj=nU%#TBEH100000x$jS1?UBkB!90-L_t(|oK=%gXjE4e#((#|JDHd0WZu{m#Dz1uF&5DXLc0iN zN~MTW6OiCa(0vwKD2N5~5Otvog)G`dAt|LGrUgN(S;X>Enz(S`bkTnseS%Rj7N5r0 z(RbfFF5b-ea#rVjeCOkS=bi)YaAFIfvr2(^OAgRJF8L^ie1H63Gsj>(^(fD9Eb*^- zMw%*uRW0%9c7_39>9I{iKPPf1PSUW|q5=Lv{dz@j@7D+G+uat=^T<;{0lS_hz<$ns$R=e(2* zaM~J{M<)T4o&uoODqhldM{Pl~$e13m4QP~=j*Wy7W7rP8Df;A(*9FT`tJSqTAc z6n*^!ryl%0{e|ZwK!wdX%il=JcV@JYt13J6-DT%V>3^$-dSP*Q;POGV54Sk^a_(~1 zT3y3ceXmabHs5uutASovT(>QvujdNKdu`9$`5$J!9HDM1yZ${~UbDFWjAy4FO?q`x zqq=1&+4}uoTho=X&#!)@W&XiImiGVQPye*t{JsaHl47#dJu$=Ry-j~MW(UoB=gkDp z&v%%XsecW{k(w?i)r6$5kI_+OKN~?`EgUW2e0_t_%VKU_4>hs;Z*~{}(t$6K-&Xr2|iu4wkHUpce{LPiWMMNa( z00Zg-&^*@xg4^T3@~54(Oy%B?$kUshwFE*a&GHV6=nU&=TEbEQ0000 Cg=574 diff --git a/assets/dolphin/external/L3_Intruder_alert_128x64/frame_25.png b/assets/dolphin/external/L3_Intruder_alert_128x64/frame_25.png index 13657d515b41794e0e01c66666b6ade2fe7dcfc4..69b8e9d5a8f7e33debd6506a39ade885d60dfc5f 100755 GIT binary patch delta 668 zcmV;N0%QHP1+)c_B!7EJL_t(|oPCnLYZOrw#eehWt-CD2oz(4!9p!WEOaE5So#m7vCu*m3|JVG2_`BQf*^{ZxPqdP$c|Cmb?42y7W
  • D|Q-yd1AO=v&eHPmf4B_+vIlq0;?bG=rNq-0m1AyP*cAiuj@cIDQ z2_^sqswETTfUwtAUFu=`NfB_-aKK0TK&?H!FT=fe zH6+D$0au*B_J67jUynS~^BLUOB1`q9-Z@vuH+AIj;l6 zf4+m?LCj$OK9}+{a&x?}c)3iViu>N5DY)URJ>&h@KI;YAr?hn;-G3wc8NIu3sIpDT z{O1$6GZ9%H=($mplV;O}G=RpZ^LtiJy;Vc*-#fTKERW`rvabqhDJ2D}_MSOdMpZIr zGq^zXcz;AcnXD=jsq1|p;h$S3a}0%c1P#LC2Aw=aVZos=YE%$_?*l7?#0*pMa?ErgIsQ4K8s2@eBEK)2Sk`fB9G>enME5JV9aPf!#RxiyM+-p05O1Cs`J?8zyQuNzzf<3-QJx~l7B{^FaQJ{Zs$ssK7Sbi zJHdpYK(%B-4~Tkg)ukS_uap264F>{L0My#u8&g%(NUPZ7p&*Q)?Qd^cGO0zNt1TcL z1d1L4xmw5cgzBTJ4si<>j!omV6g*?R%SLs4izc zUn4SX7jVT1ZGW%I;Pu!yy^nNbi!9a`d;46W&{zai*bcW2_hMy<;rMHi(Kq1IVmS40 zVkf_YR^zSEst@YlLF=7(4Il@6_z0@4p`Fc0;&((#C7+iOjDuAGwOWHUan^EPV$<-j zJ}y#h+A%0lVh}eeij4ivRD`DqRqfZtQ?Pg4E@EJ9a(@)hD~nWjKT`pob_T9B=X8h! z&v)=UOz1D%=Tc!>ZjKcfE{_nZ(!Td+if%Mx&-g#K&-kGZC~uw5_TPwq#_uj1s%%p- z_xS|wbWENHdUhD)Wch493!(Ap{GL^lZ`FYN_YN+Q$fMbGBv8eyoRI-ld(RvkK~-{R zbGShKcz;MgnW!pKsq1|p(Vtr;cMOGg1P#K%2Aw`cVZenCYz00000NkvXXu0mjf DGj%mF diff --git a/assets/dolphin/external/L3_Intruder_alert_128x64/frame_33.png b/assets/dolphin/external/L3_Intruder_alert_128x64/frame_33.png index f47fa0a147b76a0c4bab96be8ce51032323d2600..6548ece20c87aadde2335342b5bd6ab1e22f54fb 100755 GIT binary patch delta 629 zcmV-*0*d{R1&#%fB!5*&L_t(|oJEt*Y7aeuOZESRDL?dsbow~=-w z2^<|;+bS*&meXK=E(EGYjosanV6D&8MBv&6(or z#%JxP4KL}xEq}Vb7FBjDFxuVaeJOib1fUr&OWH20U|KGQE&-gBUkBKk_FhVoGi%11 z34F{a+h%4C6a%bh3LftHWPk?aDtH`RCZW#VWlO_A)w0`PfR8WdxB~BY&IKC}rNK!>s+~yi#L+#|NhI zxRaUSj*mmp$lGdFu4DTU zJ9j-bY-7>P%nSq0N~PX;vkIudSm@V<35WswCL{j^R=Kxi04}eAl)L_t(|oK=(0Y7~!TH5EMi^T?v9a7p}CvfUl5g5pi2^QABJiqS@4rR&;D;=D3)9Tb#{>!#QW}cfNBW zVgZ9zN)y20zZriX06)`1U;+sbsU;9G3!_BPK9n@q_DO=o5r1)_eORK-l7#3)`UKA_zmf6kd9QI=?RhAJ%W`B+Bm_{jcz8z-mPv?{xb6nLt_AP;# zmEf4PdOb-+|3w{g#Hr8U0XM!Fp4dr60F$#jbsh|@lq8c+-G)sASWfD2{{d%&E|Iy? R$z=cl002ovPDHLkV1lDVFF61J diff --git a/assets/dolphin/external/L3_Intruder_alert_128x64/frame_34.png b/assets/dolphin/external/L3_Intruder_alert_128x64/frame_34.png index 723a18bee1893c8f98baea1f2c81dc282d4b3783..26602137096a7f830bbd1f5de0243e0c52c04d94 100755 GIT binary patch delta 635 zcmV->0)+jY1)T+uEq_026hRoqe>1n?R!Qy-3vHs=Xl0`j6oRO?R(=crfQ2?D2tq_K z>mM+UUqMgs1K8OJSqlXlIYAJsECfujxl4?>y<~SEi&jF!a_i~4WU7q13H|$ZDMPZikgzeribDpb*xFc&2pov`Yrz=M~Ml{5;b7a3WquL z@PqGkfB9#-e4zbn*@2fay`11qTb>ekqW&4uZ;Rd@>B)OXH}r}bc`s4)WIWH{*{gg;Mt_o(`i=V&52p+4n*U0I{%~n7 zuV)A16AYw`X5D)H8=#pwAP@$C&AHYVK;UwQPB?8G#RCNMZdCycq(QNvI(45+0+c2& z2jPD)bz(4t(BD`>yl&=!4gf{KbN*AHf^A$9Vb@uSFWSCZ^B zFb(EoQgk?t2+*oDv%2mmZ=hMGuo$`ev_R{UUJU-cmL%Ju9bN)1`AF?`PH$zvi9;SK z$lA-2hH5(srk6(m@vsL#-k?2@l(*HDB=Q#Bk))#GX3FL*;sCIvAF|;*DkUj#=YL{& VENP-Kq>BIm002ovPDHLkV1lZpGcN!D delta 635 zcmV->0)+jY1)T+uEq^_06j2z3pL=&?M~S;j3T+ZI(aJ_6C#fQ2?11R)}r z@dHfbUob291MF;sObP`XSwRr13?THc*38VYxOdiSF6Z8J-uIk2Kx7g^n1Ths z0*VP}Z2t#ydhwG2X3s6NdX_{Pk0+qPJhR zmQ&(MK+Qj`kumH67zjCfLywFli=0N-xwgCdr@~}&l7Fn!Z`?cZV5Y!s`d>-VA1*KC zb$1{>#z4ww)~m-q0h*};0$~8yUTEzA1TJUjgfqrbJV3DMTUY=CX;5sbPTePy0Hq1c zB>azNQYnTI`Ws7#*Udc80iXzY#(xS_u+ z)?Se`RNGN7y*vVlhdluD2JL~QysfSzk+bv2_y=Nm VENPdEG0Ok|002ovPDHLkV1j%$GIIa` diff --git a/assets/dolphin/external/L3_Intruder_alert_128x64/frame_35.png b/assets/dolphin/external/L3_Intruder_alert_128x64/frame_35.png index d65d6354b3c23875366613c831235297190e255b..c44b65adc5ec5bb947df24dac22851049e7259d9 100755 GIT binary patch delta 630 zcmV-+0*U>Y1(*epEq_mo6jv0*fA@9KQv~UG1Ib2&DM%JsnE^K@AYFbE-MUh6qmZOu z6wEf8fE&?okgP*sYTN`w)Quu!(KRUAzyp>RWyQcQ;$QPbM8I&KESbu z0SyDd(I0Eze?U6#1VVpv05b&4-=bvcE3Ndi;=Zb>))NVE9Djp~amnxv%I&Hw-_#f! zenHu5tS7IuId^w3)!&jFIC75otOcM2j4d8sjJpNLI!ZfP@9uu5@l?Ne6iPiTAb4JN zF2-P3W)wMfZyPg?!;&8pP|&awywerHnGFIBzRbh3uHUgPt{>@-b4SZt`;r_7b}+1% zkynRj%?x1AihqBeOtp%Ab2D@8px(qGfRprill}T_6=$s^0gSSf^M#tHr$Y*7n16Cr zYR>$p(dG=HIj~-1brZngwiF$}#{hpu|2>B;GoYT8@Y@H=g{5x40eI9XBn{nL7I0^- zZAs3|1|Q;4S+g)R2ROgViJ_uOb!1P;XbG+_EWcrnUw`y^3H;i=viC1Q?{epd{H#6S zkc}mEYjWv)J#SE%G%C9~V?HNO)0chyvY3o3PDm0`wEe9sDDbJ$Y&oN?>x6D&GKf6S z1Ah;4D3y8ts^wWxTfpV9#fX@=^Ck;|U$$fdUGg?;HbI zEB$p8Pe~FH*j`JEbqBbShfDWi%UNq?hOgOY1(*epEq~986h|DzKi`^Wwh@`Fg?JHR83TVIwHm>?bn~e9-uK5Vz_Et` z4FkZ@A8X)$KsxUPLjUIgW(b(SMaj}vTIs3czN)F#6A5q}hkuH3$?y%z?W!!_)EFFo zPT6a$Coi=*|I=WqelT78w47BnTKaxzhhlmKh&S+kCwOgB{>f4U|2CD zuMW?d8Ni+u|9?K7Y8CtDX6D*Ky@^8rC+X29`|U;*XRRawjIxjB3pG#9gfyIC{_!=b zIr~bZ%^5;-V7BPr^BAImBMFD9vuDv7t% z>m&;-_-_jd2;c!?%6ghqRpxsD&eFrF(TCa|~du z^!HIbElEURdo3;29pFYDF5iPKXRVnTzGgd)rREEr0dPBTc%_2upnHV>0kh0EwR(Nx QW&i*H07*qoM6N<$g8q6gz5oCK diff --git a/assets/dolphin/external/L3_Intruder_alert_128x64/frame_36.png b/assets/dolphin/external/L3_Intruder_alert_128x64/frame_36.png index 880b9df52ce999ae278c8edccaa49e86ee582765..28aa1539cdccdb36b504467dcb6ee363bd2e4bc6 100755 GIT binary patch delta 610 zcmV-o0-gPY1%w5VEq_026j2n#fA=}bPEd9yDwra=1Ev+k#t4B-B!!)Ym5pp`mqM^G zl8M*{zd`g1_z5Jl1pHIEU?D+aHyDgaBomQjv)SEaF>hSSD-Y+Kd)|5X0m(STP=^NK zICVxq{WMTAqIE4AZ|lR;ATQ$mD`9F3~)bL^@|}DWh6; zOk{28V><0O$cjL%MhW;6N3(ux&m-Yu6-oVm#%kT31qi<9h*2V|pj4*4_o+FCaMrD#8r)1^@s607*qoM6N<$f=2Hc6951J delta 610 zcmV-o0-gPY1%w5VEq_mI6Hye!fA@9Ljws1g1zl7#pj$!QSV73NxNzsfl^e;{oeRN* zN=9)neuL;2@DoTU2>w|$;6jRpq!?60=~TofG0AZ;Z;bRU59geF-g)-{$s)v1hbG`S zaOOb$AW$--dM-VYQmH1%GeXGbl1fSpI^d!705Cp12V6pcx_{{QoDnfR;u&T;LB}41 znVH)$vjE~wVrTZQzWe8qiAsMdX_w>lVzxW_p;rSe^`>^`TgcfHnly^&A>#o=j#*Yr zxnVnREe-79eaZ~2+Gyj?G^zS2A;LwDX4UucUc!ZzuhdnTI;IiFS^jVzATSok7noxE zlS5Ws?k7pkp?_}K!~$1te!Qp_z9KBWvVCq-mx;@Qk~Oz?o8D4hYC4tOhP1Si0R%Fh zL55DoR!F4l0K^>g!KeVtlIOpDLE3iv(n#DY8Ak!eBKNJ^rN(3UHKS){=76(J2VW;p zm*ga^YYneJy{I6Lty_>1FFl8P&35 zBI`+;>5AVVD*|(-WLG=0w6g8DnB^EiU0rr07*qoM6N<$f+SNVm;e9( diff --git a/assets/dolphin/external/L3_Intruder_alert_128x64/frame_37.png b/assets/dolphin/external/L3_Intruder_alert_128x64/frame_37.png index 5c890d433f7adb50c7a7dfaa7b7bddebe4b2ceea..95ac16500c361d6a26ca7765e52cb2a9bf004174 100755 GIT binary patch delta 417 zcmV;S0bc&M1G@u|B!7ZQL_t(|oXwKGF9bmt#(%TsWFtOScavfm`Ww-g0!;N1As_Idr+ECJ;lI7uh831S%&{N-mMt`i*Le`Z3AOjfv3eUf+ z8%8$)jB-*jb_S3ygA3E2wct_2ib@3F&96k&r^A=BVqrkH7Y5>xRM=5i4Cm6GuaaSh zZiEbS+`SKPiMabg37{RU+_fxKJDNIPDhtb!)t&EoAIY}oZP~at5i1>2 z`BgH7=rllFbbmfb^W27x8-t8h%7SLnmrifD-T9Z3R_WFulQna5TMnlvf!>t_Xr5X& zc}XB5*nYd-;S?&5T<-z!wD@jhD8?+p3Hn|5U1GfW^B!7NML_t(|oXwKGF9bmtho4zL@iFCp`_8BLUSkK50E$&m4rl8qM=Z^YjD}Kqu9NV|iqTVmd863=9|+HU>FNvm|@kjf-V;$shmN*0BW(pP9MdzU35idC!#5?5gS7 zKu)dw#$5SBp@NK0%P+N&oZC=cPjntv$F9VPx$Nf9^=3qZl0 z6cRmTIaU;38;Svd;(JKV;R66j`Cw)z7wlaMdE1Zkl(fgMnAk(AQ$;{dTrst5=vosL zEq#;XNX_%Qr|_@D-hC7-XuoqKng*N=H-i~=? zxz`S+3|hK2pnqn!kpESzm-=A*rxsvR0Y!?^-W&)R^bp*@jUuD*j4{TX*(!y1#@K~P$Bn|5ZZ`@4g6`ad bn*@Llys2%r(mz}n00000NkvXXu0mjf7$VJ5 delta 433 zcmV;i0Z#tZ1JnbMEq^;m13?gm|2;QyijVVAScOvyAEhs}372q+1dFpc5fw~rqhKv+ zVWXvj*lC*t6vR&StV|^;1O*W-3=*)2jV4^YwYa?`8x+OLsdhhR{(ok6fqxeSGDXO|Fwdcp0@x=Lw7W~UVq~*i0b*IiI}CO zC)Z3IgAvGWD*#Xvp40Fa0rA0b?Yahb!7`vrodDoSp-o@EiU|;t`<_45jso@piE_}h zm+OO*Tc9xx>ZIiez9HfCL}8=9jwa2tXFLHA55K~Wi~QH+MuVl@YjlS|`m zaZoSo5>ld|<{)N&nZg7aQvqFqT5}&!W2aO!Xv@a0dOhSDCP9oH(jvVG2+?ErXL=;h zJKn2};D9vuS$o^Z)BBm^p4|2lx&@fLh>vUl9l$azt4~Xb+;`w`@n@{V%qu3w+Tvu! zsVPk3a@L2%!7m>Rn}Dw)2MXD6MyYzk%L4Xz-r1zlH*{uyaT5}XM>peirFF;Wle^z; zFQ$YRwsx-6zmN$G5<2a}zfQbP86UW|P*x6rv^-jkTYmZ7P}9){VcP`L5AJvtFd%k* zGQHj$R?Yp|#ff Y4|q4H+U%E`l>h($07*qoM6N<$f7lb!6f*w?IJ@9EBe{`24eoO|H^5B=|w3kdK5kU#{OB=DDlTLlDQfh4LHB#=t9 zV1T|_B0wu3tmaujJ7C#WKmpnY2UU^lh1R$Oyt-gW*gMydAge9(I9A(O~BW&1DWJ-R<3xX>9d{5wA-XHFmh&pxe1BHqnqVMOZ$$`CwITy zo^24?*xJ2TIUxlM6S{6 Y4|q4H+L1|+3IG5A07*qoM6N<$g0aT}$N&HU diff --git a/assets/dolphin/external/L3_Intruder_alert_128x64/frame_40.png b/assets/dolphin/external/L3_Intruder_alert_128x64/frame_40.png index 4b13e0a0ba126ce99d664b89a37d2c768c4325fe..4af4b80a664d56b7742e696eb9b43a5b90f71676 100755 GIT binary patch delta 682 zcmV;b0#*IN1;Pc8B!7uXL_t(|oQ0A1;ROfPeP8fxemU89-)i_bI)5 zx&S2FYBYEjpaI~KwpYAXY0jrgfvmcd-`e)m755E|j%o$woS`0XoPX~5-4cgAdQtRW5sh-f# zdi}&zSAa%Cm%p4d^xu6s2Z_ti|7r^AK4!#OR98zPGJmQ{uIniJx4*6=MuGaexAfr> zsesk1A|fKW>O#sw#;fLHV7ayeh)=E}5tJl4zYS1mE?2}6t3;+IZ4&4SQ-O#_Mz(tV z2+N&&HAf^sNy`?j_UIq!YatfNs<%r%S*73KSJIpXN2&zo_L*0YZzND2H0^|Md9)VI zuf7opCVwE)h>E)9vvK+~q^4m52Q4na=KeUM9Zj#90Tu3R4*3xz%F4ynlY_}x;79UZ-W)(>JDEYCysA22YPhd04DhEu~NV$CCTf7|uBo!bs(f${a zsBn}D07W1r5@o(qs)e8;pd`{t{h_iRlB|gZ5hIc0j`lV}^7|Q&S1oe>0rYPR4puS> QoB#j-07*qoM6N<$f(@=f`Tzg` delta 681 zcmV;a0#^OP1;GW7B!7rWL_t(|oQ0AB-%lAiGoN5F|W8d z2r5`{aL~m$ZY}=F4XJ}$L2;ChQXDD>c2M$)gASq<7ZIe-KhO$FocbpgL;Cs8Zbkz!GUQe_lS^$^e+t==Jk z=hEQ|kWop5$8o}4Xh6z|GfYU%B*ApOFRgqBHCF4zn&uc98Ef@aw9|Wg`nq+@LqpsC zO}yk~{|SCuq<;bf0{TACIbVoU!))&w2Z+9nIwk-PSf%Em6@NQX>xEkd(vA7)w+1+1 zp|~Gz2J^+?9%BcvTpvIDMwxhMw%d2-!!uI_gX^730B7pn$a==0?OY%3m=||0q%MqG2UiM(rl2I!By%+Z zL8Nrkjhl*s#A#{Wh@0Yjn-)O?cNSW3G?q?Fm`u!{dCt6f$Hg1t-@Cc@e&;*iIp?0k zh4(G@y(oZsbu0qX^6@8+)o%Ds!%?75Bs1_QMOP+y@E*0vj~4;NQj%(2T)+$AAe0UcW!GYY~1D%^b!zH`>DBaaNX@EneSxsrxb3Jl40^E;>qVbFFx$G zUSas4voerBX#*t#5BF5pqG;gs<)rU$!mzI~xcl&!Vx)cr$ZYU?|Ch&3UbkWE7?7SZ zWf$e!8g4X7)#}w!)t~S>6L(=G^?9HskN$8J23^mB(tpzM|JCX*cdC3=PcsX+*|o_^ z?90dNE2*4;ib=J9mDrbmx-HcNh@G<{u`l8LSp!-`x06Y8KHOEt!YFABON6ON`1L5U z4n-ZhW}GLS$LagIaGpi1zgEAOwSa;&on{J+{b_4iHXop*OD3zQvHx4l(s+Orsr5tj z-N3!!u7CVk11pZQSxw)Lou`yJ7(n;jf_bi4MZP%a4c(l9E0iHJyPtX#HkTuC{8dNK z8OR01gFxF&gJ$4vF#ek(A*7~T4vVDw7Vb=0(gYc5S@s4||D`Rr3n*@30PBwf0pw~Z zS^joGN!QLallp6gXVp45(g^@iYZ5LmaXfrENEJ00000NkvXXu0mjfHS1X= delta 713 zcmV;)0yh2i1@#4xIDexIGcSpYL?_G;D7FJ?pbLYDd2!c8(1mg9(3L`=DOjR3$y`l9 z5D_~x zF1&BJ??nOBt7Q?;?=tfF*U>b1*l#j^&7+I2Yxch-VKuU^G=KD4GcjN%fS33%knS1H z|EydiYqlW`6k3k=hL`b{^KSeapxoPd&EC;5z+j-30P1s8q8vmfsmCScC`7;W)Ny#vEpLl9(_vL53 z(kl!fbXEuQr){8Q;MvF3^(Y!Rdn2hkd}cV<7~DHKrWmQ;0y58e)PL;c>AN<(I0>ZB znX-%WZ4LJtrE2wdsp?O7orxzflKLc2Qzx#UfI-)@pntS9{BO1T&2p6k^)$19n_Zu( z#J=p=SWV>&R7|Srm9EcZ~A~7jgO?6fUxe^~>5dSq~^k(`lyA*!x;5viTGxT{2lcgZg7JrrgpitPIV_UyTUeg9qzN+Avh3$X{a0SNT|n_Y2CyC<2_RQP z$;#IYO1gHYndDz9{8z1mBb^{=uyqMnmN*q|H$s?5boeX$P6SK?IgzN)rm_)&ihznp voZH0zJH*)#10o_$TL<-!u?*$pBZ#b*#%KoO5I2O-00000NkvXXu0mjfSL0Y= diff --git a/assets/dolphin/external/L3_Intruder_alert_128x64/frame_44.png b/assets/dolphin/external/L3_Intruder_alert_128x64/frame_44.png index f9085a27d918d01408af95d72f1b62f43da07853..376b23ee90859248eee0c69a1cca30ca46fa4861 100755 GIT binary patch delta 493 zcmV+ZHQoz;$gL=rR5;lr;#+G zmi`8d_&|#l|HO6%tCWJ0jF=yhMlyCmAv=K}C6;;#^u))$@aW2(I0C&eTHoHCB_BU17<1O6@RD4M}3Kx%ICm@gRqM( zYs$S7%^9KglaK@Hc^XvxTk6SCk)Ipp>p8>0KO(dZkoB0m25&M(VIkGI(+eoy3HXko zA0fs}@)@8Ms5{_3z+Hi}+}E?E1{+<03)enaNuZ2XKU}5h}fF!)^jD`9Dcq?r1bAAj| z##3 jrc_nWvxoLqNw59@g(u22stR_&00000NkvXXu0mjfy|L)1 delta 489 zcmV2I)z3tBw!PrS}xl~PcW5%VL`NXAYS@+J^ueEXPdvHOzQM?k#Y9L~9O?zuBY8J6&0 zK-(?>A%Mx7wx$>|&c7~6w&p{L{#@A}GGt>YF)p|P(57gYoPQo24kcbHp953&!wz~~ zGwvO0&Iq-ih8#%G(`GfirJf!Z`MF`fnll{#iqJMd)?@A(yvZ1ag;eKGe?a+8!1oOO z2r*`o&j6)B-2?Xl?h2gdzMfr6&Jw_TRKMvfRn^%9U?km8042a50eA{<=>d%3NHoBD z1W>`k%mZ%HPk$SUDJ^WscT^wm-Pt=<{cr&AT1ccR7IsesNW#mjCF}!lg*AT7kASKi z0dFKOMk$0brIB*32n`rZB<>W^O(A$-`=N(IQdk6baS{az6lf!ujon%O0#PiG0Ap+e z;&6a#y3A4~U7}qhDX%ss9>4<91(g7(96@eHQ&ChCfMQEaC3Qt$(>4I>hET*u=klq~ zxmc-IrQ`wFZawA;K^Xh3O-8+aF#3D#Ns@yOXiqML+rA$61dPR~vxA3dZu;tOfT*gT fWe@E}$)NrMg(u22j`m?p00000NkvXXu0mjfnNZmy diff --git a/assets/dolphin/external/L3_Intruder_alert_128x64/frame_45.png b/assets/dolphin/external/L3_Intruder_alert_128x64/frame_45.png index aa319ee4e2cc4cf7136e194dbea5c8be90e5c5c1..5e2b91f0b909fa9a87e9e5db29701d07fb92471e 100755 GIT binary patch delta 574 zcmV-E0>S;W1+xW^fPcT;x%c}%IOjV@=^4~Khgy7&A%a#)DHY>~l+vFegpg8?EK{@7 zsU5I1-PljX(~yby zT3+kM!_=t^b#F3LW{-vzalj?@`!RNhEnMjF7mr0<&arcmAAdc~#S-V$F8y2h2qBi3 zbw=uZQ*Y7nbW!;;8o*SB3B7(^(u1^X)&}Zm<}~jJX4$GFgm*%EFE0{(CgSh!JK} zkrq#*WFO09hkwy=n?`IYdqh< zZCBI>8%HZ!jT!A+Yr7OzIsWz?GhRdLh|@Ty|GFjgi63-0&%0rFyfk;1tS;W1+xW^fPc^K-1~hWob#Pe>6xl|u4?f)ga}$GrBsX`Qc8b@5JE~lvP{iR zroZ4^EjOpmm`Dme<--DY96K3A3iNC>&AX6o`y`s z*Ya979;QxZ$a|BSGJ7amBGJgU-JOveiMwCRU=u_*;Rg|DSy_kTdI$&ISCBN`j^%i zj1|h|y(BOu?=Q>>fKn#gq*_=qlduSipi~Ays&k7icZDll;o!P=rzPZ31;S(1G=XeT z0nSiTNJkZz4NwpGxB?)~--g7*#Khv8C^!CmIG3`*CWM;7+_VBP)V%wH16^px;nkkE zzaxmCzsThD?zXe6vveYR60000kz{GVq?=t#hS z66k*xC;)3_W`3zKv+p7zW*Im~z^6Dc09L^qj%Rk|A8CrU%VjLG{8vjU)$$u_AL=4TQXK@pV7AV_s?vE{CCg)1CfPuytgQ068=)KLBdDad}wEw^qTwl#7PNQ@sg7y!bPW3Pu*FjcLhtp17d0)ne+2iTx4*zJ3^qTmuPP)a zh9G81@hS~P-l=JIUmTqSotu-@ZZ8!hq(iEIZ@&daJ;ioZ00000NkvXXu0mjf8vp+)LP_mLj!DcT=vUl0+SnS?qH}kLFyqS6PfAb#_ zS{87{0=*J}0$LWXqF4kF0xP zOM{_8xwsb(L-OvqSpgvB<~FGo=4ax9A}F+^7o@;1F#1Z&hpTYdVRO7kb{RUb*++}$28tBAd=c4lYTn$ z09A?{t!D!OH&-qOV1ullRIb=oT_XZ?q7VbvpUgZEL+5?AcxUaPM7tlGjm*(}L!(Q_ z7`FrLUK<_TyJ+Gq#`S@3cW)lc!{5^N~Nv6jB}1(CHBL#bHCI4usCzd(UfGzJ3+lht7U(7zS*9 zUSCy6#4tn<%#z{?dKx^k@wao=ka=GLN{0EY-{_{^@b)x_P002ovPDHLk FV1m6c1=9ck delta 564 zcmV-40?Yl-1kD7HB!3i1L_t(|oL!SYYZPG+#(y*W;x4(sU3rC=!`dR{6~-*KTEx~W zA0dKZ6Y#aN5#lFM6gvr6*=V@c2&TLbpkyV5g3Vr#+}>rgW3hXe-ON+H^UnWyhJ=;` zT#-PpSfBu`nVI>8!pwe(h?r&I906bAzyMeUb2y&brGKO;)_;s!Y7*JAAKPiQ2Q~ zID!be=b21Set%7--`U&_rw+g#jG5-4ANBff86gJ`Tk2XNJCAAPFd&jzA>)2J^8l5L z9Is~s05?}I24I7%-c+vGRvjY(bgU2q*q_Wi5JTsEw#c(~P@>(B%|hmAzM;{j;t00` z>|Pt4*t=-#EyneMZ+CB=$iv^!UIF?j1~^@|pd14Hvwua)$_fn0%@e}7rsWZEn9ORI zv%2JV1%FB)|TXb#-o0SNazz>{)+xvRC&F4}JmH2|b(5qf2%)ot9~tl3~$2LNAr zscb+{Q~(kU6R23~3Lw&g22UZ?Aq}1mL0=p;cSMH`QBy#0000rQ-F^tLk3$p^im`+Hwuy`)FN-4#JL6GW|MTB+Ct%YPqiO~OkDU{7aU=3zV?3|&(phZwfibxN+kr1gdYUTTNThUq*8s8Zzk zel`MdSITk(Hp=Qr<%(_BH9Vj*g$Tg@WEKMvtbfQ>?`-UsX#aD&kt;OcRDbO_!tDUN zx2Gre-p^u-a6{nx<9jFa?6==5Kwm@vXAK4A5a8Talz){q7?WE}2(wz2N5Ek+uTw6n z-2Di61lnJ=`V!C_c(?-)?!^GF%8$*gHm1AiuuX*kkak2ED{CFLQFpRtqoxl4zVS}k zBq*gq0*QtRl#NdDS^$ksA=NREuXH*FeS6r_sRMoRq@`0y&J|WVjSeQZ1FSz^U{zQ4 wrPovBlP4h6esOdGbaqa9T`qu<%QZLPKgM?d7+~fefdBvi07*qoM6N<$f`d;0a{vGU delta 556 zcmV+{0@MA+1jPi9B!3J^L_t(|oL!U8YSd5^hre@jHJ5f^W;qM7gHPac1Z#s!S9R-Z zUO=cIxG5O-LVXB#BDfMk%A{7X%XtB5qzeT%X)SH0lgV+BOq%rkRyn!n-1FzVBy=p` zh6Q@#1PZ{0nOVGYnAuMe5wi@OBj6wk41gY(!|~d#JAZGfiMQrUU_jPiT4OL) zC|Ca_hB0}6VO9Vb(+Q~-7SH8YDW#Y&2vWVWXi;dXrIreJ5_ekSiduxn>e85E>2sg^ z+`}143fZ6%^8uOw>8KJQngB^ui45iL->?6$N?Q#1RN&wI^?2? z-H(7rp#5d5E&hZ@g1B z2}-GyK%!v+Wy2|63!vc?QXK>NiqkRZ+rt*84)np37N?S&D-Ea7!Nhie_2&z$s>;6f udWw7!q$PS^99;mNHz&PrFBK8ef$BfTcK;YqdW=T^0000YZOrw#eeV4z)Z3WJ6bKG*)dp)SZ!l=5JBvM zn8Kite;~MmpoQqfO2J~q-d-gr7DmwEBq>Z85v=?eEfsW(kWBVtuEm?(n4D&~=gqzE z+#6oF)tV!fzQ#MoEd>TnDqW3oY~EcsoVb5%2`S*rlJ`|4 zwJjXUU=lVFQUF#a;0rqeW&6(L-MA%s)Os1tB`+bSHRo;Hru6)QHb78!E#W*q_lX3U z7T3<^!pALu%C&M1-jkM+0=}`tVCHCP95%&y`mPMS!XN}^<}67DLhho|;Lctwz1t9o zU@-H(98_d$=re`N<&zTzxAx)(@S$^h?9hqEqb_*GVt;S`rEdrW8p{dNhQY(x(oKz! zIsknL?MJRg_H6hhgf$>93{e0%2;=NxWB4plHSsWI3+U^DA%rQA+5mub9Ke9}rC{k8 z_Bv_X)ZZNdZkEE7oy5f0?J$cu#30ak>&2yxgjfK&QK=)f(^UU2KV4wXXImLF~4Fxp|PA)1>ivl zF%W7SsLbcXA?d4XRWQ$8u=~aO7O-dMOjXziAvdEyfq!@aQn0vSZ?6&*3nOT7lN6?m2v+`BEfsW)kZkV9j>X%%{Fvr3^WJyf zcjh}o!aj32V2&JkfdEifRgDJ$RsCX&F{&B3E)FY^qX1MvU4LBe>Mq`w6y2M*ki^%a zXCNS}^>t{_5GV%sCWZ!it*hFzq2?^9^fcZvZb>k3Qt4=vV{!N4XyX30DWrgNOWrq; z)Ru58g9+F~NC8+Ghp+4el;t}U|6<+(rVNarDYwWF#(%xZAbs^o9Qs_La`p7M!L7ag34Cmy9XWEU{QbEaum&Ce)XcssJp6 z5CfsMfXZAxXp+9JRt59I1-oCYZvp#u&Qyg1Cgf)5DDWS60OZ2~ssd900000}IHt(H-JP9l@n&X|eBC{NzwexTR31ae z6X?Vf5dv)FoO8J_ys97uD+Q|{H62e#KmtJ=^U_nJQ2FT?vzHCx(6}W{`4C=7_1dBALeWK>k8XZ z%p-;`RakjXYbZ{3&we#TFU4YfXUj)di3@G$Q8*dWi~L(PAv7UxL)vN+?gnENd8ZxJ zc+oc1R^EDHJt*%B zpjS+Bm0kM6gSJ>~;qAugFW4eJzRl-7f9}zCva;V?nM>ceS@l`jZ=l5J`^`Qpmz%|q y@;Ci{NY@J5`||TcJa%)bzx*GkYiQE)k?}t@hTi?nCG@cX0000l delta 612 zcmV-q0-ODZ1&0NYE`Mm8br=Wm&+oYx?raWnP7Pv{L&UKJLCKYWwJwE&ftG&fnG0nOq}K3+dsEDW_50t=7`SxZ)e+s8H2~ty7e2sR)L`g^*U~)< z;wWIexN{>vhkuH<-%OQFxPR4h>JiAIMm*4tX2WR+Dfy7^BFOW>Djk zwrOhR&F9yXV)e$~_~ny-K7DF)OU-gpVz<P0dhP!rCbxu3gBE;*+qxrdnNYsrw8iPd8;J=Y#tvzLXhpVhRBNt62T zE_lBMmK{{7Y`-Jz)szGqKXl6$N2Lrn9Je^86v%nl;4oA6@T1-E63ms`po(tAPPs1) zL9dwO8eP+i51L}Jg|}*>zhH~_=r*7A{JBfh$;w`RwWYpsv+A?5S3`->_nUoIuGA+( y%HQ<+Azd$M{>#q~@yO4m{_;Lf*HEXWlJP$^hTi=-?m=t-00007ddmUk~CTD}$*ZsWXQON&-<7KC5$qFgWTOKO;0N>b+UWb)@ z3ly$OPf?r0Q+I~nbL`R)Ku-CP)*`yWJgI5QId15)|twB--ddRG7d002ovPDHLk FV1nS%N@4&2 delta 151 zcmV;I0BHY+1&9T(`T>8oyN<9|le59>>wezxDCB>^@v_sjWQCOGEf1A^fN$(Zufs~d z1&Y`&xKqan8Nx@OVg4OUflFf)WlmBjpO~dv!_PmC;-Ge1L{e zJNYzeLAL=2?~XXY0tA3uC3b)Z+ZqOByc7UOHABkNDA%7SOMfj36G|L0aK~>RsoK?5&Ur1 z0k&KVAa3H-8db+!KRQ!0VBB&)x(|7{imhhTm-^+-1|2*MS=YgaJqX$hn{;c&CBuXI zCubiqmf$Y{z<;7XZuazJS7BYP&Qgm-&F`qb)|I5TBn$H|;UNHBV>}jh|AR7R8jStQ zuXP?f{*O%Qy$Eg%trMPkq>yc9U3@kvi4m`Ng>)&TXi)oHHMcM9SaIYDv462hB`fItM64tP%MoA$eT?( zL9K6*qA4khrI=TJ@Hv)Lm9l|FH|_utlsswxE0b@{VC&^v5~z3=j01f;(j^Um{X-C# w*T97%iYK922ESwgveSSm0B!x16c<N(I42*oO!5WHoy8Uln%h==wJS+&Nfzc_!6N{=#&|5~!AE7vG#LAh z-)lT^9E?pEy~1Yjq5u_4lMinXCEJ?&lj%LuOQ|<53zg^>i9x%NuE3VouZ_!{nO B5+VQq delta 46 zcmaFB@_=Q76_Z-s2k&1BwyZN2Pulj+tE)@%Kf^>J?JMu|?=Ud{fv2mV%Q~loCIHtf B62|}l diff --git a/assets/dolphin/external/L3_Lab_research_128x54/frame_4.png b/assets/dolphin/external/L3_Lab_research_128x54/frame_4.png index e9de77eea601ecb562245e51116314e50a297b74..9a5d688cfbe729724882bd9381ba6e44519783bb 100644 GIT binary patch delta 630 zcmV-+0*U>Q1&;-gB!5;(L_t(|oK=xKYZPG^g`e-;iP?ZL!NMC#2C+~<)FvtlJJHH6 zjkSxvL6Ar!pAt-=h=oNelfqgo1Vz-{jUb64UMjIL6B{MSW|EEB>&&r8;^i$LUe4j1 zgCtd@RFV?N;ej1es(5T=Oj0no>->cfpcJyyczxV}#RwoC?tk@wfr<$rpRa8I2A%;T z000kaNNGDs_4CS$szHt*qK16U)5f;E0zRP8WC(x&?ZG_-;;{EdPX!|@k{xm(Er2cz zcO7~Z0~JpZd@fVFqoiK?s%m{-)d-vidI{rY57?GGbj%a>>dA~H9*@6+{K3~Y==15n2bC1U5zML6Ioa0bAJrU5h`Wu)t(!;n$)RDunc1K|Aq%xmN-Wuk!H z;9Sx)L_t(|oK=#$YZPG=#ed)3iP?bBVBsS~GKhr=qBcHI*omp^ z(pbCrHwdCA`4lmQA{G{@G=;TT2#OeYHvvhMkZ2_qX0%a)Y$n<0K4*?a5+AqxaXFWB z&P9@{QYuLafHEKpgho?5SX6MY4k~qy^B0 z;ch^WVxZzFg3o1Yca+pipH;2ztr~&zKrdmu;sM)|hmLuIzS4Hj1V$eb0M1uD!0kaT z*43S+YO7kGtbZCIeOn1|bebMMS_`_G=_j0TbbBBmqI)b^9VdKR1hC^kYv3*n#Q+C* zCjH7Dt)!B)EXe>-E(HKh=YoxxhB^Sd1UAS2V+~ODFUW%{F!h&wky=xWNv|{}WrH$+ zlkvhDT7~uu%u4O+uL~>snMw7w46xkU${niC(=hB6xPM0_?epn+EC#q@$OzvnWfF&V zfqaOSiKYN7=K-i=g%Yvz<{}*M0yqO;LlXd6j55-7(Gkd~c`CuimHpuS!_4c-RmwyG zd%(G*Gd%nJ836OOf+W?{J@_q?7LA_!0CR=>({=mvIw48hlOtc=rP8v^@Bl~;_Z{8w z{ucxWhj4(k>3fhHfF6T9@Ig;vCKAYTLaC%}*|oyzAN$ZGyA&}hNt{+Hb+$D-N~HBF z6_Hz8N;i9naJS&?<0V!$HFPDSfBf<02Dq_Xv@VSEb>r8uQ_=9ntB&#+fZx6hHft|d RZ=L`E002ovPDHLkV1g7;Cfoo3 diff --git a/assets/dolphin/external/L3_Lab_research_128x54/frame_7.png b/assets/dolphin/external/L3_Lab_research_128x54/frame_7.png index 03a672f631c360c638f009b59aedc85657ecf79d..91fd1cbafb7b7f954eab57e89e2c474774cb2f9c 100644 GIT binary patch delta 46 zcmaFO@|tCXE0dbeU;UTNFFg;)been(4_ZCr6TiKqdC-)V>#7-mz|+;wWt~$(69CJQ B5>5aB delta 46 zcmaFO@|tCXE0fxr2j0INs)P*Om3;qBy`r`353{|ad61>{gcb%M@O1TaS?83{1OUQU B5oZ7Z diff --git a/assets/dolphin/external/L3_Lab_research_128x54/frame_8.png b/assets/dolphin/external/L3_Lab_research_128x54/frame_8.png index 6ed2507da2e74dfc8f559c8e097fddaf3e1c2217..7fc99ca893a7106aaf1d4eb67d45d7ac3609d1cc 100644 GIT binary patch delta 497 zcmV{PXGir1|47ld_c3ss0X$b0%}YH6}yc6-!6!6WNMM(8o+vnA1D}{OfpK=rFM?0Ln7v&iXi+%0g=-Yo zrc#@e^>2y`3Q$8$Rkds>G4PJz5kF6KBvDATti7(($Xq4(dD9Spv|h&(lrlvMC#6{= zk|O3Z@F9{kBqcpXSFZyh6g)}*s~4V|Uf1)fBvAe?7zg@t=$4KT>>dE$%mZf+CHiLe ne@PD{CjpZKn))Xx%BTDX1=2I|-1x^O00000NkvXXu0mjf&LQId diff --git a/assets/dolphin/internal/L1_AnimationError_128x64/frame_0.png b/assets/dolphin/internal/L1_AnimationError_128x64/frame_0.png index 2da87f9072837f36ebf10b37a7be47fb811004ac..aad9bb179e7875f62fac79b73f949934e0d0fffc 100644 GIT binary patch delta 361 zcmV-v0ha!?1GNK?D*>&MEG~bIG-aBUQPjbL6*qaAxaL^g884TGVc^0JD-TS;HPw

    I4g7 zJ-u!Bqvw|^Yt|4*&_?;Xi1b$=L`q~PA~sSa(tk7kt{%t1lr=6|gT$=kMdM;?kkEX% zcs05IoK>BLXOIxQ>U$b?UT^0&gJ<5O`Q8Qv!UEfyCB9da2B9ilM51x`L`4F1%LxLX z)k|TYdeK{cGu*5*r?p)R+yDv*e2P#ZF$=ick4<+i$H`dh0K$Yeb2_#DGP5ZA^Bp@u z$uv}c>i#{Tum|cZ>KTy|N?Jl$LZPc-M)<^D{2_<@fd2$I6EG~bMlxb2%Q3nfF+~j5AnqzVAc)2X_?9T7>ob!AB55|~X z*O(6DCQNz3XbBL4YR~{k;9zL&@+htz`j31-@n$N~nr+%oR{%tT3p=VjFag(8N&?Bs zL435tNAuW`1qH(JrOqXR`T>|&vFx~%(3}DmI3@4S#`0QTN7BctGrxaa=-g-r3ld%3 zE%(FcmrES@olFu{B6&Jee)~klLN$viLZ8)3 z(SUl<-_0+En|5Zjc7a_RKp}xo5h^5R4tMjh;jZa8ooMbun8^Bp&aA#n&CA|=+g4aI z3I3+;-vf$zpw?HL_t(|oQ04vOT$nUg-_C`HFYTTErmk6>81{1ove$KTNlSJ zLI>T%Now#PI0zlHIut?FO{iO;gE$Cwu@x7Ql%`f=u}Q8&lf35>>RImN8Z&M0v}`}i~~=0 zM2iiuI0qfu1iH2+bPzD{mL*TQKVaaNMrwe?V}6UD0f00`z@0lHBI3YHjB6C?AC7AT z+<3T6pk7w8^mPi7r40!@1yxgm$ILeVQ80wGO!MM&$LZIGVTMyX$!@HzC>ZVQDqxH=%BY4&or##a3KIQkq(g#U?q2CV9^%)Ni@t$9>=3fkGJo zkR}zO)`^J9;NWvvX{k&Ai94G2MPLJfB>(_GD#<|-0Ia+;!GBCSqr?I2Xd3EIMU$pWJH&xwf6Xi|p!3vg?|8gejexOK3O7J*l@-+`4A zEjGa79CU0G=-QevLBPacmOSPDfPq^YsR0&``7eG30MZlzckYOYhyyP%u2HCeIIauFx)k+?5THE zFIEfBm3##wSAQrjKy_})^|s#_Ar^N`uVtwEz<48LwFZ^xrC3hb^0oQ0_jpZz)~fPB YKYEG8{op9sVgLXD07*qoM6N<$g8ERgumAu6 diff --git a/assets/dolphin/internal/L1_NoSd_128x49/frame_0.png b/assets/dolphin/internal/L1_NoSd_128x49/frame_0.png index 5e1b8c01a28d40e52471310a71a522999ce0a038..69e2320ecace62b152260dd2d9bc57a349c2c2be 100644 GIT binary patch delta 442 zcmV;r0Y(1P1JnbMB!8PpL_t(|oRyM4ZxcZj#DBX!ye>dCBt`fmxQ}2u8o&`%Is{(; ziAXdQp$EK$6;Vc_K~#JZgbVsaqM$-qOBN{*a1oZg$agywXFE0p5>w93dwM%F$U|F8 z1S113vcSl~`7SHSxcXq{;tFB;3;!f!F0T+Ce(BJI04Jpn(tn|*{jg9dhoXALQZf4} z^%WHs#B{2pcw5Vnn891qI~zH!lvJiO#dr)fSX-JT^@EjPUU~#MRJ9_ul|D-+!B+LF zD*)KUrVFnh*PM9+7R#lZr}H)U!C;wn3MRJ(1J^P=j3-|CbkEH;T%+MqTY8ki_xG-3 zE1x{23q9M!{eSRfvHLN=u(t5rMj+q2HUS{d`1-K_gwDY@Uz%KO0|Vcge;|2td{XC{ zBn_?n9m4!n57-JA4qB(rMx&aIEpU`yJlyE@{C4fwR@dz}n;<_=ZWqcDVq8SI7s`~L zQ^MTjgQD8cUef%%7#U<8EI!k_A+h#UlJsJf!YYww-!oFkRtiH|G}jtrI_5fSJK|jh kO4gg4HN+bJucrX~0V)&e^p1oC;{X5v07*qoM6N<$f`-S;u>b%7 delta 441 zcmV;q0Y?7R1JeVLB!8MoL_t(|oRyM4i&H@q#eXw-W>P4L?iTAG^nHZb*{E5p>_oqS z;DU|C+N+r&ES3v4V&xYRQ`oOyVI@0(uv>`w76Tc{dvh#al1)SeZ~2>ZFL%y8$U|Gp z3PuK8WKkmvXS=La#^w8W&#wT>AN5Zlb8!WD_^AUA0-TiIOMeHN_QOJ<9E$2COU3Mm z)K^qkfaz38@urq7F@razciM7TDXC1Sit!j|ur@SF>IW;o-1H;lP}PdqR{AU*2V2#z zt^i;Yo6fy@R5SA$ES3w`Pv&Fpfx$BC6ijXm2Cij#7*D+P>5iLixJJXJw)8NAZ|_{m zRz7(`7kajd`+x4sV&_AEVQt}=jX=J8WdcB+arB`7n9lw0one_0?GoAEq^hN)Ibo0;jddQVWKr55<(UnfFn%L$;KmbfV~X~(i%b}0x}|G zRvf^ad4W+%8@68L1-auM4?_k`Bp?@=kdL#6Uwl?f;&au^& zVdrfB%Vi32#@||lZk3rSu0one_0?GoAEq^_Z)Ibo$@n5%ES`)1aS3<~w18{`#oNPSO9$;@ng0zMZiGYj< znH2}{W?rqwP2i6)mHqWzRXtS!A?KV=xwX-BcoMBOb?TH?8vCM_=jxT|(1t}Dia#H} zglk_n5pSz+m--2ZiOA!uy*!X;#?2jNZP%G*8oYzFXg+8-EEwk<>b24~LXFp!at9 znTf>Kq@CWUYw!W{=2wrgb&2sd%3KbO=z3MCTPWpM3167#O*uW%5Z>%ukpvvmiDyM< zy5uV0R3tnMUSvx}nIGsqX7DA{I729*!S2Rl*45rBd;2R}TP35^t>Ky<8002ovPDHLkV1feTmv;aF delta 336 zcmV-W0k8h*0_y^hB!4nVL_t(|oaNFnPJ}=d2H^iO$g*bLV6~X2+1OyYiH#kU9>HUH z11T&lJ%9yA@CHj|ZD)&#iN=^nfraeCvw(Hp!@>hN6@2s0o5u{m{~K|k-zneM;KfG6 zUb)T{L?1lgJUakzTH;Q@qChBto`H!h;WU?A%Y-303jj~-8h;615!X7AAC4)tK=1A9 zGZl%gpqHr8=p}N#1OHF>HI~fGnN9rM zkzTS8wq$007)d5V3*DbEvEbzZ;92PAjD>Rm0QKkYOsU(DE_yIcchTu>4+o}iG-^Ab iwy!oegReDB3IN|FQBCD@b)G5!0000h0q-X&wA+)iH@6)w3LGeyE^MU9cE`||ApS$^YDE?&-eR2FZ}n% z^cH<~PoY862JnlH#Z1^0=@hWklXlM)Ue3vNZ>opm9;8oARDaAFa@UU28?%K#&3{Uy zrn+AIU~94|n}s*eNw=EP$bD#Hk*Gz<1l_Sm@d^+`U8t9gyOMk%rn-&>x1RChxsQ`EvH>f6Mo3R*d4d+){KSXj+{sJc{m@8<+K zD?irK;C4IC6@S+AoeQ8Iu48A7`l>Skc%e=^SrShfHsblAJlxkqH4+(jz}Ft2&(Ag` zxVydhXE(MhfL$Ngt%d$Qc}qkH*aUs0`wV^f-EuO9aOm5pXgFV#^e1RAjTV)xG4sk% z2FmMn-s9P4ln;%Nzqt>at5D7vcn6wMXauxR-J~vtu5!tF496+C$-T)xE(x)9j ztEvS+*?woofL4!}GuX##ud}gp7XdhVtD1$|y`1gPQc)*df5(p)@PI*)nuy4Z9J?m7 y-aT&s>?sG`I=wdxXjLfMHx1|&lh?`Wl!1TH8^C(QT1f!_0000DOBGQV#((F`q?2Bpp}ZgkHbKjR+wLNPWBWc9t=ed{X(>hY z1vx?mwlJZ8p!PvqA@q)cYu&VnM8}(ubSVc7?$x=@+hV@%ztGveFV8$5=Q#ua{qcK; zKC@@gpy>j*<;GwpC_p*^4E3bj^9e8K`}A=cws^6#N)QaUrH6@m;4OJa)1J3Uz9p$qT%@5__z8j0V5ep_VRYURlbA z>N?qdJo}7tp%w5q_hE7sszuq(fo2q19$gpEbT27@s(&{^x;PqCKG1SpD*&{6bOH}J z71f=L^gA998Pi!cHG5n{WXVq3H!GF&dF?OUNdc$NjW$F?wi-SbpwCQi01#j4(-xpr z-2k9!zB400tH;YJ*~e?IQ`xzT0Gzy4Ps8nAPCGPIn1$=l{D=<@FeuUx5t)%=+t1#5 ye%=6>4=IW{xi<`GRU*1Keb6h#Ul6ZO`S1_W8^C&b<^Mzg0000H^(0rZ zkmUFsw`!RJ5WY&dY%wty*KXxh%MQ(RMcx) zNoyBa_kX0=FVD>h@JxoKaI4(x@9cXIsrJ4rlX|TA^i3E>6yK?XZDM!BBTQ$+ znhxUYPbG%qv@zCUTV3O&DR3%{l}OU!Wyr=iy&ygjfE29sHUA0000< KMNUMnLSTXgb7{-~ delta 730 zcmV<00ww+M1@Z-uB!9U{L_t(|oTZaLh+I_^#(($Dn?I||&U4*?LB*XSrQi^Y-9nhR zAR<^83k$0qJ6W40l~vv?1XBp9tPHGTmx<1#lc3C#2&Pd+kbopOFDNlEvipK$cQW(l zeim6COJ!;FEX_=#(yIRQ2x#BFBw}2K>fH- zv5*${9d}wX1t5Hta9Ls!Fs{=ssFrP7=c-x6;M66sVP1PWN*);6g+@@h-=@xtKSn@6 z8m_bwvcWI*hoWe$q%GHxTBX7_Etzq?`}(z^D;0$F+4RakhfgH)F*U$`-dfQ;${!3{ zDq1YPl8=Yucz@{4&j!FQ{)7ac_tmyA0Cn#*j*t8;zwGoP0;)G&T8@^Wg@(fuDYpQ& zQga?CCFl}>{i0Zhi2z;z8+}3!*vTMptb=V{EVLRIuCTohY|8f)kNveiYfXT+hC1Ag z$7}L53vTScI^xCSoBebNZ0hcD{L?)4-PRKL`tD;ro`3I6!2#A}Z_j)l%o@{L1k|lQ z{97bRHeuuYV2#kee|dv|fCkt+JDzESLq0-#PUcH6M zFj?aQtACyh`{lVg0iMaQ5^glR*l(NVVq?)tmm3Kf&Bk-hb*aBOedb31>0qG~b)@N* zhhSCL0nmV*H)g=Pw43WM?dr)?nZpsdFMk|m7{~GNJ2P=6LzZk0DN##yM1(LNT7;G!ie1#Z5Hi`G>{2g6 zFM4RLr+wq8tcUg@h?g#2+|JRHw@xl1@w{y)#Y|en_>WB5Bu>m`eje5}rI+?O{`fpE zJUs6M&o4iFCJ34@(Dj04>dyw7SO8}nbk<%i0Q{WSGfY0IVt?Xo0KepXfnT`VUf$0D zzx-r<*lgqe=7s%qs)V?!f5RtK|4+>SK)8O?@%PvdSXNgAF2rgz%_gG7>s z0nxfPQ^Ic~Nh;4WsX-GUNhGN_=ba($-VOJ{fd$|lq<_P)7<42V!OFv+D%VFMV0&95 z(b3>j$(o$TQ{tBsY#b;9XsutoCt2WZCv(z19ZAv~7^aJrCU7MW_rjjDjG5MIkoLln zz&H5iN)t$eXwB)r_P%#~o6zZ3mtqSX=DG2MA1-G=!u(qJ_3^)q`8oP22L=|{`SWG- z>+I4WV}B7_zB7U&0VUEE3vfCav?T2t!54E*8GM-mu;J}YUAPS}v*Zn(KJc5WZW?vd zlX@&k*G+roQ6IovxIFWD6&vCk54&mHP3NmvQU%e`Jq(hhteLm2kw<$WqxDiyKRTFX zwpsdFMkwg9LDkQJ2UA_hAfGPNZLwvN-2ctK`AI6M3=VrLdax2)x};4 zUfP3JPy41P*&g&#D80CN={m=rdUJ9qB|WbOk!GTlrvJ!9lXTK-=JBxIM!e|n`0)9? z@bbP7ynOuZg&=6W!qzK}nR+qUzydgY-O=?|bqxE_4wJTcU>BU4}&h+C1yuhFRMk2LP2lBB^gU~;Dg&`%_3 z5D=|tBPF~oNm6;5arGMjNg_$b8SfNv=U%uQ_ALPKBYz!?M87S`2$mlORk=140b5%d zinjV+NY>=kpA)|xV|`y4Ky&TFeaQl++nJO0XiJjb!7y1YH-O7|xEpqzCCsE&g0veB z1-`*Amm5G5M5|8kt&hB;TZB%px)@vFAkU2-{CFt?66RLJZ;$?M%rDW;IncMj_Fu1? z-)0v79Dj+}^1Trp3Mi2-TY!^EzbR?Y2)>$i%HZo^OV+*ZiSu^=rWd_|(*u52)k&jH zdR$K=>AGo6Kkfmz^OvT-tYSla<54G#JLy~%OR69`>_b0E%9?raDtWXUGJIYN4r^nQ zou*{oxJf=-GYbGFC`ZDb4`(k%-iIHLf`jt_R5$;hQA-jvW%Tawn$`}#h0&7zPn?XH kd(bmlU&$lDUbz6kGoIF6bW(TScmMzZ07*qoM6N<$f?j`GF#rGn diff --git a/assets/icons/Animations/Levelup_128x64/frame_06.png b/assets/icons/Animations/Levelup_128x64/frame_06.png index 4e77c6a2bc7122abfdfde330ad1e7c457d384d3b..5389124dc1f8ef0deb7bd71ee7a3115a934fa3ff 100644 GIT binary patch delta 588 zcmV-S0<-<*1my&fB!4VPL_t(|oaK_uOH@%9ho5uijB`c9V_0O0a}E1gSPTR*i*l|N zUjK&9 z>OBw7`+FDf3;*M@T7?8)+T##Nh^d}9u-eU&wRnI3MS5rA#(!F`c{hJ(#0#@kiW_2q zWF{`isxc4ZM#6_1F`y6SNuaGP^qHdv;2aI}jo?7k$2ZN+uhhQbK!~7m5aV5_8uRe+ zz9GPY5~Ir53l*kP%+=fc$lC?E^!c;pTgR5}wIXc$&iC@%9|yn!i62BwlmsRTK|+8= zAi)J33Bo8;(0}AL8F19V$?;_Xy5FV)a3yL67koBm`~o1qd>s+9n7l-LE*eOb@BX0k zr$d&M3yc+CJxxw8_YGeS5h2LM+{)rQ$;&++!)iWHX3FtsHJ4< zEPP#~7VZJ@msEb(l7pER7`m))_q|khVgIyN!|rXPO0~Uz?ZZb> aRp%e~K*Qowyea+w0000Uw1mVtFM1U zbDDX0<})zg5B!hIYHcI{GaiRPLQMC>fz@uFtjF*7U!-?7Zhx%zns*C_o_Jxli*Z9N zk{pQ(vSQ4GxRLPTMhxgfc@k(V34P}10XRq9d?Ppz_31xYq1dPtnWD%yA;uc1YN2-tQ@ zEK4Pepq2C4xC=Ozn|`FC;s5|$dhurH;;WvivIQ6@G=DrjQkIsskVNq8Q-;t(?%M4N z+iP&;zIT1WDyz{W0z&|oM#=2dw5sQl$jL4OcA?E!N(70BN+1=hr#pXJp%i)pkuTG3 zrZ$L!EPs+QZ_`i|g}-;>HZFw53{;V*s3(*ODzS6|3w{8wu^_UMjUpJT z4Dc#d6&nnUpq7~>Vqrouh@l(#2YnStc8Fa!X#l!2&f(o^)P;c7Q*32+a$ex34Yt+=@f!2`_hx_`!H#%IO2Q#*`Q@01y{ zIovBV&J5KxOLMp|)TP%_LKbYUKTZY%;r!iPo&ByL@w8gp_5O=j^kht1c*!T(g$} zn6I{uIOLVg=o_`b_k-A53qg!o%>ZWVd3D2q@F-RQlW=g$TBHXn01+8GY$7off5+#z zGdqXZ+zHZRvBTPfE9VacC{E)2oY_kEkRx|;p`P8&;SWo;t1Aot30MFC002ovPDHLk FV1n8J@mBx< delta 515 zcmV+e0{s1@1f>L!EPsuZF+%`QOBsl&CY_>34OhEiOMrX0^=rzbwc_T+1P?HK>wg-T8J`v7re+wb-YGL? zbGTP#oEfNVmV+(~bm_H}kOiCTkJF2Ruzoj}CqZ6HdGq(A4iC`bqVJb1diSs2-s@K< zb2M`e1De|<$>xCud27sYG#DghJ_1qZV6De{5%g9j1;OR4l#RojaM z^A@NcNcLP++rZ-ty#57aiY98uFVBI8u8(rg!aI=0sC+xeMMzneI%l61UG0Dp$u)Z! zfO@rc%n`3-M&GCfz8}WkS_opyY6dVfpI0{=2#;a~FbRjZtVO!80uYh0%O(;-u{%B| zo!L3O=58?h3P-gESI!>_P&|qEb7m{uM~+XITDo>Shd)cUt1GY4?3Dlj002ovPDHLk FV1gF(i-1fv9yB!B8jL_t(|oXwHDZWBQihQA%pI=19wZH2-OWGUzgZhl z+rWSR{CT1N{p9b@8~*`%+glDb;B362UdS}uf$R>lCpm(BfPd267c~^H2A4xX#Wvlj zip~GVQZwX2KyuqP6xgQl#TJ1132+nuVzosnM1FZyUJ>DKux^sThfDchPD`fh7-N2Zo%00!y_J+bZycg|LwY z)~JI5p+~=AV1LNTbVmXFuJ2^7!c~Sn1)i>qR^WFNr2%>1$4Q213))tp{c=cTGRptAO`YLv?nq>1(Uj6 zPa#(bLvYY+rH!IgJR#QX9mGFGBo=xpsPkziql?ji5{sn97*By;goU!1Q9DSd00000 MNkvXXt^-0~f?3w(%K!iX delta 525 zcmV+o0`mQ%1f~R#B!BHmL_t(|oXwHFZWB=ug}=SN>)4W$wG|3CkforbaFN0^_(F>m z!5bLSq$7C%lxy(<&_$w%X`lm3G*EX{ zdJ0T{4UyO?aO%JixCu_6fHv?o`$`|UWP$f*soL_q`+t4#5QRd|Y=AI8kx*Qm6oe?i zv4B>9@l%rxFikA@2DQXAl*$%`-ULVj3|A_k%gq}Ax;ZmV4R+I{7BB!YkdLB0k?ARz zRPA~Sxk4C%gJvr&6s6(`v1ace{vjf<&`Uv`PqQ<+7!4?~NGgo+6!-;%g|e9|px%`L P0000^^Rgw>O>xy7{8&*iHG9ePG%_N+7#<{E_}B~ zb8)9yk<4E(>3`%VyQq6_UaQoy;f2cf!v+*ZV!(Z|CSr=qPyvM|w1eS?D2qe}cqJkt z9y}HiUxVcX(Q*cC0qFX``&N?2ao{09CtO4W`yqM&KqEi{me1RyLC{Dty@HnrzLyA- z9I61|`F~R%GXRcj(6G%*_yutG0BGowEsfeFgc1;f_(Y&;)vqGkfDa1LvbrX+19+g( zKzV2vkvH`f3F002ovPDHLkV1n;g B(~ zvULBS8V*|lfOGSC1r1D#xeA~olf1YloJ&bG<4*#}0f=?I0w^61vPfirS0W#;Py#{_A4F8G`c-5b@Ie7uR@X#!01q@8 zC=cx-(nn)K02Z*Rl#M3G1fWd%&q3J{k(NI^{{f>mv(lr04rYWFf0fgg-C6d-w$b0oGSVz(N%{{e@Bx$b-A;Kcv{002ovPDHLkV1j@o9nAm$ delta 552 zcmV+@0@wY(1i=K5B!37=L_t(|oZZqfi=0&$#qr;J=gnr7+1(L@7+lx^EyN-j)WSfF zZ+gLe0U>r40j(4a$=;AAMT!J$gosStj(=;HrcN|HTr*4a^B+1W zd{V~>%%6F;BjM9!(qqI2-5l+cdY9dT<~bb$#Kh zN^`5(Rbu#0-B{oJm5Z5@nYg@L+F|!9N(^>R%zp6EBsQxr{_f9bFTQf<@z+0ZT)U)s z;_hH>HOcC^D}V8DjUD&LfI1fPX(aLT|K9M zFhjGIB_3Jh8610s#NJd#lj4Csi|7*-#q#-$h)1X>kmA;Q#3tG#2}@&pMC?f#bZOv0 qQIwJy^C2kmBYZOrwg}--aWHu_~Ar=ZkR`p@r-q7M9yvIGtjXG}f8Y!ot!*aD$P6A!ZVPWM-L}V=*(U__~jC?>UG2kR+*K zE)@m%j zX5Edmcf(E$^<~#Vvx1{by`m_f(xtuIf=^F+rRK)Jp&Qicu;Zi942t$y6a%yyOj;2z zU=*e7Jp*DF)i5S~4_NXY;~rcCjF(-xQD=}k&Qto{&805w8_XcMPy$%x!Q?q6KpRA z$`<%YtmU{*xrO1O_opAqtR?vPe{jV*kNTK}P{4 z<^BW;3MkN8h=Ou^3fzHcl7>1iDJUo@kl2WzNJJq{_=vr-eJN}&i0O{*ynC;OMhTAKz};Of%rcKNou8f zt66vB?AZZzd(VK_MKz2`-vgF>$G8XA0OMs>Zqym1j`NhhcXO#r`vx-zE|dUPdGPpkC|9^X zTf;>*^EEWX-hZ}gAnlfCmCyK)^-5CQ=HY%1mB0EpZ>9lqEGeQ*V>g2(20U^Jzy#Zi zfwBcY5^Fi`Q*L2+D0vRt#~1;ufNvNvpr;;wVt?Q64u(tXT*UAjq+K01s^|Lpz~I7R z4w2^^NC!G@q!ay`Ag$hPH&Q!4-HE~87I(pgC_~cCZ9B~+oh}S`@tQG^>>#Opr2|Q; s3`t7#MN$>4`+E)GW=PVRim6nEKZfteSJ-9(`2YX_07*qoM6N<$f{LKdf&c&j diff --git a/assets/icons/ErasePin/Erase_pin_128x64.png b/assets/icons/ErasePin/Erase_pin_128x64.png index 4e2a9ddc8ff0b396fc881edf795338254497a80e..5ffa49b78fa2576efe4df16a643c722c9c1c3934 100644 GIT binary patch delta 568 zcmV-80>}N@1lk0UEq_mI6G0eD8$1hJyHiU$vZegpO1t589j zRJ8W!MetBj=m+p3kz;UirP}7f_8Z1NH%2yL&s_z9!(`Y#1uHVud$@dkjEHw-nI1k>x??>p5 zRF_sJmv(-hExesi(@EpP@QcjcvkS-Sm;3W*gA1BBe0Lioz!0RtSvO?cTiyNLgRB{U zfHrWQzIaoHD1RU2`&OSYFdY>8poD>QrBXtDGZ$qN?YpI{n@IT8R4m_0pf-5$sM(vx z`d0|xqD#YtH0+IaYqyqN7f{)cRlY4PZmBaR8K8nfn7Pw)|a zR(EX=pgw7z3oyQK0|jJf2SCKz32Z9odPo)oQ}D6IVlI0SFW7ICD8K)rpb= zim`w?ZXhqb=3WKzo`Lo$SndUi20{ZhSbJRhcJ_2W4cj|VWae(6urhw5)<38XAiGPH zc-gJPN-=2Q%MX}FFDte9CRLy?0#3i3bk}@PnT81K#q$?g>piro{5CTH0000}N@1lk0UEq_gG6Hyd~pShW&V{Mz1x=2B2iW^rFD2NrsQCzqX^dG4EZiNcc zq@uM;H-d|ZLVtiuyPGK#>CU>aibx4MhQkT(`X#-VJWr8IQp1pjbKw3xKSIBy zy0kL6yz^rw|7O9aW8=W^^Yr}F^T+C!`u%8w16nYAa~dPS5ZGX?8#3*!?)%O`#*E)b z8#q?qcvFTj7k}pZu0CR5+As7$5d&w7#f0_EY?w}z?-VmmLg7_Yk-V4!wZVml&0as& zzkm-H92ySTus7Dt-KsbappqA$9`aQstZwts;nExqbLi(ist2Eh0}C~{*t zSt%rz!i2O(HU>sY%CjG<#mcq()QQ*~>EQ9^&{145wwheaPE-w03_y^ujy0ckQ=Kr` zpokby$MNL`SDhpiq4rb-t80000;3uS|Zorr=97TT@d#LnJK zkw(@+tb}a@J4dmw5iAt!46-WhY$GVx$WCXuHW38D!NOgwLO`6v**O+*CzF8w0B`f) z(`jlPl*OaC@KZ%$WAB@TF}@QhrM+mILPwz-?oJk%>;M(ebrS7a7B2L;L(?2YpW%c2mHM?dsOTMow5x%H+LNZKj4ezHvu$Vx@9 zBV~bhr~k47*?aO5q!!3nEWx@1^_-#v=S>6&UJ06}4QNHhFbga~s{(4A0&q)UqeDPN z;Up%)sQ{Cj7Q?Cw*SR?8<4isFPMP1=bTE!nOZ!w@m`UoZsMr#a3Nw>in`<@=qi8N3 luEESj-OL9_|47u|z;A*`h!as1g}*oRAcN>;3&kK|C!*kjg?4K;4{D`6YK&QUCE1PcW_gZKkGHiCkU>~xlE6G0FhEZo&91jI?4onsMqGLzEM+dTL< z@7>FN=NM5hhyMUrZvniU&Q9&us3qmT<_hl=xVsfa+LW|YQGcYbL2VqEbO1QG0>xg( zfnptiqz!qx>p)|6<*Wnl;IplbY3~SM+L9#YH>F}FaBc(KG8UMa==eH4Ut5G>Z`LXJ zVmA9fz0KJR{oMGejrR_PF+>q+lU~MNjGuwchoPOGruE&J@NdUX>b^inyLKNG_a1|} zwrXQQ=M#SG$$upX9@r2t!4W2dHQ-EWpTFv%9|_}r3V5+yd%5&9CoHbI9$-J&w>Q3B z0mk=90OzYsXucW1Ludi!mjymvCr|Ej7~qiw{Fo+F48W+|dRq!4ZI@d=(PaQ+r6Smt zvOqiYe_4g>19=Hj3uG*pV8elCPEmq$CV~X71Z~rWqGe*3C6=L60S!(9xFxXBfx5?> z#6&n1U{cdzTy^0F7e+&zxyRls^M{%b#xWY{u43PdIbAJGWNaN;@As1!<0000M5wkY{wii_Zb;~pgp#a|0s Tw-#FRFaUw4tDnm{r-UW|ZeJQ1 delta 63 zcmX@lbcShy3Zw8u)i1`1EAw`rWMpfr7dMwpw&0qwXpS) S)0Hg@K;Y@>=d#Wzp$P!BuoY?m diff --git a/assets/icons/RFID/RFIDDolphinReceive_97x61.png b/assets/icons/RFID/RFIDDolphinReceive_97x61.png index 2b7abb85d53dd3b6b7c5a9aae0c0416186b19823..06deb0a27a5c3aaad4207e43e09d22ecd9fa663a 100644 GIT binary patch delta 446 zcmV;v0YU!P1K0zQB!8btL_t(|oNbUXZ_`i|g}-;>v=OaPhf>rDk4P+KuT+m27y=Vp z`wv*zdf5;&5+jTZ3@k{91y@-a3LuaW1ab1zh+&VC!GdmzvsAqlE0 zS>r6>9Cov|rGJPRPF&p}HsjDzv!-2uiSP3qCH6EJH+uuZeD^Zn@HFMG>r9e#?#+o% zPYDotY8`5N3;s_%={4J#;-8o5V6&sSSFWxMK+1!jF0~>iL|Xh~$ElTV+H<}H%gGG^(P%#c|wPJ oNta~QCGKmN=2tYXQuJT#9~Ts`ZWSV?Hvj+t07*qoM6N<$f?F2T+W-In delta 445 zcmV;u0Yd)R1J?tPB!8YsL_t(|oNbUXZ_`i|g}-;>v=OaPh5};3BN9v5E7fBLhQP!| z{{bsoFB@V;VuX=_fdvV%;3_MFVW1t58U{pIYC{8#>e!dT_KPF&ruXUGciue*GuM3%q>FeSdN0&p}080AX(!m1w+^Ynuq|4|{ym;*2}mGlWP0C?wA zs`^SuWGb#+X%I5Gt`Y|U5CB)skjrfr+%_^p*aqOzE96<}+;bJFv){z&J_z*3NP_A{ z);LSJfW543DSsk{6IVBg%{jExtZ5fu>iaxLi9HP_&E9~p*t^Jwo@V@Yok^0;y9E*I zDFGr+twT+3fZ^Jt*KBu&|6ZztosQ;Sy1Fs|DGz$O(u$Z6Y4Numr&hLU&-omzCcks* z>58_vdgN{73tOKePp|1ea( diff --git a/assets/icons/RFID/RFIDDolphinSend_97x61.png b/assets/icons/RFID/RFIDDolphinSend_97x61.png index 59b1dff88daaaf84bf38ef24af22a5d9d62bb9ca..65dff82412118496cd4bac999b3d3eca572cba43 100644 GIT binary patch delta 427 zcmV;c0aX6m1KR_TI)7p)MV;aaA+huWRI0}g41uXz`wdu`=-aJgMq-4Kfq?}HF&SlL z2n@6XQp$iDmO9Y1vFh3{!`T;C!rRZ!`MtYG#!PRTS!rgbLTP^#8~_n>C8mCaAFu^Z zeKv&^P$)hiq#%$a0AgXp#WrGqQ(~|gQUN3o^ZN-DW;PtpvwyMO`$BXT!6gxp-dE;k z_B<=HvGr$=y|(J)X_1ZX@LYw_loX*2dL zGppOJcdPq6Lw`wwdP9E&uYBWjekW+cg=?*3)cP(bL4!uV-CE5AulEq%_?02E^$B5n zsdiUdnS0|PYE>rkt Vw_)(z!8ZT^002ovPDHLkV1jAb&IkYi delta 427 zcmV;c0aX6m1KR_TI)Ca=Kuqz3kXZTwD%E2LhQQRV{RXT|^kqZLNQ^KtFt8vYCZntj zfq{0YlrmHeOC4xvth)BgVEb~B@b=Sle(&zlVW!v3tTZ!Ip|sx$4uFWc64QLb5p09g zI-9~eC=?$NQV>WI05Lz}Vh1t6DKXd#sQ?m)`SlnIGaHWQ*?-vXd?mVy;F1VP?kPR`1KcVyL0ARg#yjLy>D+52O#$RSPPagzJAi(^Z^Kio>dxXEHm7Y%2`L<6HEqVe zWoAvg&2CMf=YJ@vS8rHfp;o?mIbZXdaN&ZLjDr7i64Yx{x7(t$&m2ZjHd%91Z zKg%JV&s%4$29&$%r<&QIAGW*mbHm>c9(IodU3*TT&Lk+53_|fpL*+{u%S!&6{R5Vi Vw_zQc5{&==002ovPDHLkV1mBA%^3gy diff --git a/assets/icons/SubGhz/Fishing_123x52.png b/assets/icons/SubGhz/Fishing_123x52.png index abb06645b1fb420f9533d5dc0af4d4b2d1846ba6..6b3f39310eb162a290efd559f988d9aeb259bbf1 100644 GIT binary patch delta 378 zcmV-=0fqjS1eXMmBmv%$C07N#-#O>~k%1fmnUS6wf8X0lZ_ozQ|ra z0^n5Af4Fy-Gqdn}YB0j&SI@J=M-L#F19#3zhhgQ+dcOylmpW=BE=r2DEo*$(L{k>9 zq`?H@CUp;Bn>H1M=S0qR22hNos8l5q|p8Rtg0OuOXV1C?#mX%_zI|8mxkz%J5tKjS-I@Op5 zC+kcUMxe_3HXmXYWoF@}Kbku)NzVi$W1M9mnu3hd3qKn++g#~xFYG#Oj% Yzd7^y+`82+uK)l507*qoM6N<$f<5uChyVZp delta 377 zcmV-<0fzpU1eOGlBmv!#C07N$-#O>|k%1fmg^`{cfA8(2H)wI z0dOj5f84vvnOXQfHE3b-tLItbqX!Vofjj42hNos8l5q|p8QK20OuM>U%a?wrI_oEfa_DF*eS&-IQxiBHI~82 zIunHvsPewehge0KS$OG>`p!$z^k@rB0nmxq#U2AuGX|~#dowXm1J=v2$J8WE##Z|; XIrI74Es9r800000NkvXXu0mjfEe^B# diff --git a/assets/icons/SubGhz/Scanning_123x52.png b/assets/icons/SubGhz/Scanning_123x52.png index 148d9aba8a35d2291690c59ad34a1c66c4d6d4ff..16c177527895bbb568d4b580ab3a2ee0472d93a5 100644 GIT binary patch delta 483 zcmV<90UZ8@1cn5VEq}3V6LA#BKlkI>9EkKss1O&q!9_&LERtL|-69&Bt(~15>!R1r zF8vF<%@Q319i=@4L2$6RC@Odnsfu6^5+#-7z79$5F2%R~KD_sR-}m0n5p&Tq9E<;e zv2zRzcRj3G8?rCO9GB0BcfT z&$xRiNuQON06xLQB^FF9ZWB)`@W2Glomc~pD>D$YL>7WSyIjBqzay|S5CU)CPmcl6 zl)8)QlBSWkLDu;xyy82=&hfg8Y}RsvmMf4wwJS5ifV Z=sy{p%C;-!GY0?w002ovPDHLkV1fs+-3tH! delta 483 zcmV<90UZ8@1cn5VEq}jj6LA>EKlgHN0wO&^g}BHKE+R^1k>tAR7SY&j?d;@O7rl0N z>0jV&mgpepDD5E#f`i3HQNfEyRRnvGD5)g(I3&4TitqOQ@V?LYd4D)!F1p6C_zxI4 z$3R~`K#+qE!K?X<*M0?1n1dh9g*lN-tGXwR_9RJ4Ox(`}8GnFf{KB7#48WiYkP$?X zf(B5#b9?dlv zrr2Rz2H?vrRw2PqNDS%n-%>c8SgFOP-`CEhTbHK_6%C$G+IK2Epz$I(10MKTe0sZ$ zj|Wt7Jxo`l1b@}ff{zn=xSQLRI>eW~ZVe2q@#G>~qse|&z*YipGzt@(5O9Dssi$Y$ zJ(Q%+N-Tg+Fm{Ot7K_`&;|j`PfpaHTzs!{>h*=^F!Jlp}V1wTgcvBDpZ{JUr0nm^- zi|LXkk+?zD{wd0{bBLYmaW;Enfga-)4<>MKQqDgGi(H*Yt=eD)+<+FXUb~RN`G@qP zf(EB{S!m8c#JiM_g^YFT@G`$LSd*k><<_kU=w!jz4v-xbzzv{ZEr1TNzg}pjBdMgB Z=sy{p%C^gy7_$HX002ovPDHLkV1n(r<7fZ? diff --git a/assets/icons/U2F/Drive_112x35.png b/assets/icons/U2F/Drive_112x35.png index f2347925c76a26c76b09e5cbede654420d4c088d..b910c7920f37de64f936550be0f76bf96e85063a 100644 GIT binary patch delta 46 zcmX@ic$jg*9Cg8mDWWI(uM}7v$h&LHSoU%Ulf1}t&ulK+y88@3;OXk;vd$@?2>{2V B5#j&< delta 46 zcmX@ic$jg*9Q8n(NY+ovrgQi%Q6B!3M_L_t(|oYj-NZNxAPhCdmG;{b=i<#krND{lik8)SrRkyhCt zBYBh?K}CT0fIBIL9u_SmeF*5`4(!!cBs)UI3~%a9APlL2^RLAGJtJ-Vv5cykxJn$f1#0Wjn(hOB#V x3vnB8KqxjBvm|@T)myKpp_-R!qN<7e>If@lE4B!3G@L_t(|oYj*%PQ)+}K%b*11Zjm*ZWq&0a)Wqpz!A6wt+@e5 z%2Ds?cHwegx|~U!j38JCvJJ~_=&Ifl?6=6P8C`B&EPlO`%d!X8 v=(hn6U_>#yNg}Rhz21guU#g9&c5ag!#F9CR+^Lza00000NkvXXu0mjfl)Q(; diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_1.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_1.png index 485254ee152c8f55a344a7c0b43bacf06cc7e779..fbeffe5425828c959c3d37fbb61c80a88e7a20df 100644 GIT binary patch delta 308 zcmV-40n7f*0?z`FB!3o3L_t(|oYj*-Zi6roMV}EOR7z8p+2QWG%nhJ7=n-;@Zs`qr zBp-z%u!vNmrnrl-!2@mg9m&Rin(y&29{6w8jCya}PJ_eF^$MIG`lABw{#?i^lOtOA zQ~>Z@0x|%XfE*wVQ_WNGsHg|V1X#{{Zi%Ed-pfJ3qb>$ALY1j*3A5T^Aim-)& zF987GXP^ME87KkrGR=L85e@CglmX3Y%QZ_e%KNZUj4%~gmwy3j(79Gx??;tKXsGj} z<5gS-py>R$3}Rx0OHTUscdv-k$8(gM{>R}}iImwA&@a6JMOpJl$_g~v2%w7c_Y@yT z0uJg%V@NH6_s=)?!yZvvS8ew}U8;8B@{p$t#7+j_`w?UtCV3myy~X!8QCHKBsdYg- ziyJg8!8PQ~z$^h6AtsF3EK~vNV^_C&-|J3YT>_GJagZb zskxvDi39r3c7TDZBT=lCc>sFt=DQJ~VkpbxU^fC%0rtn;l)P6TfbMCl!BSK?Ik&d> zmZuzEfXM{NdJs8{-dme031Vw!N~B;_Ag55ocIsO#BC^scpL*qa#WsIFD8}`QGQBe; zMP~pvLc=FI(xML=dVau2Rsp!)1fwDwP$^*)@VJgxD$mCX(E#91XxL(vAcG)`7_3C$ z_WLSxrrj__Ty3-!B855gx=cynM`&1`!k6>cFX2NA)#Hh^ohK2o_ojb4kpM5|Vfy+m z%6>8lcb1CRrdBmq~EB{hFRB2iFKxCkO4!AoH~o=r}`NV^_?&-_0#*1&(Wc<#O{ zQ*(hPOdOyOZ3i$=btv+)HV;6TZgv|1R1Aeo2JA*aB7psIHzBLl2cUb}YOoS2C+F7Y z-?Eg$3oxkw(jG)kq4(A%N&>O9b0t!+Dv(_$VmtG#77=OT6i>bOy!?L}ALQ+NxlHd& zNzysMjo|Q!jI zA^XWR+<6upb<-HuWXd?wz)}LKhIHUG(-_Jhg*8xd`t7$S?lv@Q#@&~#joR9|(*6Lf W|5zNLxRWFR00008IY>xQh6YjQ z7PQL^asxQZ78D!-i2_HWprCLOL_&g>!s}#~zyTO(*W=Ig&%>*Q|7PjJe^;jAgEnLy z7(&+r2I^i4w>B04=&f7sMu3{3DpP{}1jq$Aoc43dUPA!-=YO4uwWxA-VXgaCN{%nV z6ao|jNW4aGt<9ALskI9wBv{pyQz%k953LpvMdegaz3~FKO^@8Tfh#i@E16WBLEuJA zPP70v4nnUFX}<%N6DK1Xu~tDSBW&}B1nX7>3TVa&qp~FcZa%JyKgzn<(t6ZY2nkD; zEh)+1Q}&^AcwqPb`W3utk@a+DZSP)096al3I;hJnmNvC1N^lpE-(pI_ds-@v<7QO~9#okwMH_-cPTsRGaLVfON-(ta>a_MTLXhKoma?Xq;R z)F8Kz54~pMk$xz|LCx#8--RW>;M1& diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_12.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_12.png index a595af018482461a02dc8cac7394a9347ebefef9..07989e7d2a095db6ad51fcf7a1215e1e219703ab 100644 GIT binary patch delta 347 zcmV-h0i^!*0`>xsB!4|gL_t(|oYj*tPQySDMc-OZV!%pVP^63LQsw|iHWCt)&_tBE z1?_T!+yIWU$DkwWDO^O5h~TC0I+;n}0F1Qj@%PNm|DGNAZ&s}JyKy}Y^kJcZ2@DnB zpsS7uYiALF-Mh{11kiD`Wg6f#2Py%a&qoyv*BF4&?I2|`9+W$g)-wiBM%ilh=RoY$_l_| zQLK1K`yDV9SzgMBt%+h8;gf?Dd{`||Lz3l`4J81cJ|F8p$_8ykHys*83L7>jGG#&N zWZ+>dsMKG7I8?ZF*UN+6p1s*`Mg7&itW?B1%Zx+-A7wft6Tp|Fy$|7jSZKuV#H2IX tD7=G?(mNR}^fdH)PEkLesH2(N+YfghPD8ulIj#Tz002ovPDHLkV1hHDqo)7> delta 346 zcmV-g0j2)-0`&rrB!4_fL_t(|oYj-DPQx$|K%b+u4G^^%7`ioV9s2=D4H6QJupq|% z1*`dk{sDZ7KZA{QXUI@ND@x1|r@c$X2VlvL^L*#K^WDLJ8}p6+H*TQ85K0ARFjl}p zUtJOAenbHFux(Z+K+n;dX~1a?R05nYCl!saF#wa>QOZtOxqrF$KAbfwmk;1-0qQB_ z%F!3^Dax0lpn=J%swOK%s(37cxbb-C1$Q1!LjdP+YXATM07*qoM6N<$f{d!52><{9 diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_13.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_13.png index 994e6b57f902495e4ae1e80c20a97f152210afc5..943439d60be73ece49a217221dcfee93b9f5c9b5 100644 GIT binary patch delta 316 zcmV-C0mJ_10_OsdG=Hs70#uNJp0CBVZVxgxHuSOB*>HoI3~&(peT zz+njl1x{zr}4hU|Ip%8B~#@FMrNiB|+`nMhO+1Dr6Lj z+O2b^g+v=R;j8;y=9k5V4>$8>X7@^7Dsqtd5UXn~fGe}Sh^?e5DNvTOYNW(YWx14a zMS6$xGk_L~vZA4Xb)LVT+CR*OCmf9@3ZcT5?U7Vj;xp;}&=zd;>W@j$-K>(_p1kXy z$n`h#x{f41ST&Ut0(>?=DZsZOt_M-4A(*6+2em%zhC#m!I%?2!`|%5nRY`YA!b{@- O0000=K}bO>#wC zlUaaf-Ui<);H+f~6M#zxcm>=XN>9i&1E74m-qNcmk1rzeTYsS3zd}1GVAz9868#YI zMgx^dXA}i7xmIDQN7$&X+H7|QMd8HhLQ{^!O2#}I4?g+p z-JMJqL^HybW5NQycrmPAa)Y7=;T$eucu)(FRO`K&D?B1a^*!w Tp#Wse00000NkvXXu0mjfN?MfW delta 320 zcmV-G0l)s-0^0(RB!41FL_t(|oYj*tPQ)+}MW3y(1hj$_6x$_qTXF!TgbGS%xC(9d z273dplB4VqTp*E^f`=kbGIqoPuw=)1p6~J4Gw|P9-N*l?yNtmNoFec5y9ji!iM9xR zZWf?jrsLQtaM3Zj8Nqc0I0f#GrDHs620;08yJb*bp5H{m+J7i{e22~};P+5P2mKUr zMuS?UH%fw-Tt{K3x(ecO3v!*IM0;o9J4|7!H6>J4lNv3hD1kiuqp>?M_? zz&MJk(H4WTnYNHT-9tj3fQP)OXqa!E!}o{(!|im1o9)h^B%C>4X~~K3lHnY!0~g(T zpCnyllD9?LpE<~HMd?rhQOrY-^eGrd-2yy769toG@+#NY)v&6URYk38ZfU=Ak?c&K{XHJr1OLssG5=S?c@D1NkbyhcW?+C-wnS)? zRRCsoeLp1NY#@g5;8FuN0XO^B;`dqu&^}$SIVDjZUqr%~mw(*9!r&6%cA&G3eu!9= zf=*;qi3CwinuVg1&st0}!$l{4&E!>~+uw$Cs}N@QtTM@L5$Fe#fvRp6GYUxoHoDJ% zs_MTb5?TZfnvJH1c#ff&Mmuu6NF@itO?n{4g3V5STs*p7E$$XE z-&tHuYiSa&nKHT{8JFPXbu(~)Pj*UX@sf+TURFaKSRhosO^&h1-$scZX#;2LQBAWeeOt*+(w$DmP7H0+M2O~gHR{SB!K&?9g zR8jse@o|p8K~-xyrc-D4`R0CDBj(nw)|-&s812aMB9$D7HyMC87OXh+VNrCQTHGz( ze2KW4#!@Aqo-s_63`=kdx*0ftP9(Fa!_^f=J5@dPC!REok)8C0000< KMNUMnLSTZ40+K)g diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_16.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_16.png index 5bf2b837eabef74263630d64f5067192a6db7193..de62b5153be4f9900296d46e88f4e1bdb83d805f 100644 GIT binary patch delta 400 zcmV;B0dM}J1F8d%B!6*9L_t(|oYj-DN*qxXhQB+G?nuTsL<1I)ox}%7$`pZJ!NM}7 zmF{Z@BG<4Fu#hTUN_*RY*N`HQ5D?s1um~7o5hW`-xi`fw%s;L#;HhRl{{NiwUpVm8 zsx_+r8`r3V=M7iXz`NyQtp?muXJPUcOV1M30L&vNXu-p^HYOgt5 zdJjMhKy!QeDlK)&m;A3m6dyMBulpwg{F@@|oJ&?dhtM+$-iGkoNK-P%B#R-3auQ~$ zXqqI^v9vtT#9~I#w~x``_ev3yZ(7+SWKo>Z)x`h~9)hkk9g^h< zXO*HfQB07giGKzENjLR(R~NFW=jObF{Z4DZcM^FF&00{s|MNUMnLSTZUaJ~Eh delta 393 zcmV;40e1eX1ET|wB!6m2L_t(|oYj*tOT$nUh0jaVCdE{PR&cO1>JQM-L1+aBM@J{^ z-w;He(jO3Ta&vTd6?_#3e}Yi3DRdB2C}Oda_?|-wJu%?!osy4p?!71B0{^WVbt{bFX1T{!KVNzw$_f`de;Q>YGn4ilojX3go44kG0%dU!UufHA`k#c8fK!X3)khb zXqZG(6dSSm)@ahEGF&la5o7CS&pNrADr^MXlJ+pZWxHteVgPXb8?>qE5PsmIGgTzQ zvSFyHD*=7Rn}6!j%M)#?(K)q}6ij@FC9eueY4L@T_va`404~7_-{^S`C&$72V#adN z_pc;*cKWhVyC=m=FDlmp0*~r;&>hfkctzhYJW!9a@>&jCVgHw0;2JoNW#ASh;rq0000LE)P6bV|L=d21OKhsQ}bVG z#{_GR_6^Xg`gH^7O0ST7S&2jkLIVJ?Cx8W@1;}e~q|Ley)qlR|*yuNd${_$Y0L_zN zyF8aJx9*QZbR6xS^KdUfv*F(2{BCf!v41 zud>s)iKrUJks&&zzr(fAu)Tv*OFYc3gs*ouxsGtL>>^jjOKWbidz^^|%CggrWMu9^ zv`7Qks(tzOPJSl?3=8EgGM5N{_WdRR4B*8`J0s2%%oQ#Gq#zv$U`1%e-V`>Cjtdxg zLbW^ga*Zd^vHIbc8m<6udN>(P#6CV5*K*H7qom6{M~;LVLJ1-dA~Q_6r)1h#LmpX6 j*RXUiOBc0tb6NcXa64S~=wfxS00000NkvXXu0mjf@m8+> delta 388 zcmV-~0ek+S1D^wsB!6Z}L_t(|oYj-DPQp+WhQC`11qC5d6JjKw4mvVAXkcJ)bTkg8 zPvK;=kI>aOU~@2WGT{ym&MsmYED56~O&o+2TZdwLZg>LE)P6bV|L=d21OKf$Q}bVG z#{_GR4h+z)26Y4Iid#s(tW=^4kpY0j6Tkw{0^~I~(q=t?s(&v!HvDE-IRwB4pm`E* zm*>*uw)L$L9Y=fTJlqQq@50$gWW|S?lAzTLi%N_@kRY-s_EC>%nADa!v}Iacko&Os zQT8HkDyjxaY=}NHPU;g?|7RU@;QHiqJ^BDQp@Y7tr^F zYH#f28c(8Q^*tyxS^^C9U^1GBeS9#k<(`E`Ntazmjzk(F31SaoGfdf4GHs$EkF2F@ iSh|;`i(0z5tbPG-J6!hlJ)Kqn0000v&{ diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_18.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_18.png index 144394bcb8f6f633d0c81eac4f425b785824df88..b9857616d8f1749e77e1d0787f38c1c98885885e 100644 GIT binary patch delta 122 zcmV-=0EPdT1DOMmBmrQNB}W5WSUZt#!)GW?@#hG^hdBX^JA&0j$r;?bqOdt|t;(xV z%=f+7N=<-w{XFaq#XLS3l&m-5F{|?}N0tN{0tq4)qDG>bd`rpbMng8yQfeDg`;ywI c)Xq)M4^U%S{)Q^9t^fc407*qoM6N<$g7iN%z5oCK delta 120 zcmV-;0EhpX1D6AkBmrKLB}W6>*gBDK!)54?BLpAj1TgLhRud&>aO;Y~=D@WouR<~3 z_hu_K0p9iVus0O*_+U`7-h{`j&bJ&{5@-k{h+K#oiDvRGC8HY+*+fgJZAk4)YNJv+ aH$6X4V_E(#4j!ri0000t%0<;4$V|HR_O@v~1(tn#bjsb81=ndzc`ch80 z^%n}EI6b)H;a-5O50{b1$^_a<0v|S&Fcsyj70W!#?+OSY6X1*Lwait@7)4N+CTEb` z2oHB~c;SkRxs6ryIIaXm7F6FK@+=gCX6GbV08m{iW7N2q!qO;(5vB@|_rQet&-w=0 zI*^RvSZROM-(*h+bJ!BVgbD0fE!S`tipKM4Sn0k9#rAt#>-qw`>8DvV%X0zn!L(g@ z6&^KRA9=DR)sRY%g^&eSnEFV*2S!8Hid5Q$(!P{7suKV delta 362 zcmV-w0hRuS1BC;SB!5gvL_t(|oYj-DO2beThQE`h#%gN|Dmb(>RNNgE#Aa})Zy*lR zC$V{iuD*f0prcoC@DYR#rqI!$n}N2u4$!?mn~(qe_x>jw_;1xs-ET303$_B2 zIN-3J>^Z>H`fK^g%Pk_9IRLP+0v>=-pll$}*K8+HA1cMpuzx+R9Rc72(C$r})w#aq zCj1bT;$;7l`#S})4qS{>R))|J4MJEKWva?sD&~2Z-xUx+rob09OPMcXtq>Ka=_#bw z%ERv-ocrower+*&7?h$S3(^UDJSjzYt9hI&@{umYS{W3#Ft;LDWh#Jv2R6=s);GwO zfpiSdN&BPz9%CU)VM75Mr?Bg^T)}Ou8qdaYsr9TBn{P>_6)Ny*9w(y-#em)!H%c$c zqhhN4K)1{c%rwYi$RgDuRQq}!SOaAz(#kfh?90kVt?XP;pIt9fbM2W$T>t<807*qo IM6N<$f@#yM3jhEB diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_2.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_2.png index 864ff765add041a1e6a5fa26a94248f0d9d172ae..497d6175ba9e6d0c5d73b9c79f12d7f38c174706 100644 GIT binary patch delta 319 zcmV-F0l@y)0@?zQB!3}EL_t(|oYj*%ZiFxpK%Wr;BJGEg4yQ}GWje?Wa)iA_TIU9P znv@Yo;RqCw!YTx(u+5G^NuQB0LCLgj27hnw0#HC@M6J};4oX^R zC}a$*@_Ppqjr~YnG2UVhO8A>aOZ;-V_vMEBczBLZDkK2?WFnBH#mZvivH_)TBcPJ> zZx`#o0A?skO$*BZ#5M(AbKR$1%Ag}#{Y zD6gg-LhAtcf;imbUB)$-oZk)1fGc(>hVZ1kbdW{h1o1Q+R!84X)Mn;x@&mTfJYOZJ RN{s*j002ovPDHLkV1i*jl??y@ delta 317 zcmV-D0mA;;0@wnOB!3@CL_t(|oYj*(Zo@DPMxPABc7gnO^cHpNn6X>j8}tadMOXC( zIZemHNAVFn1gL|iRtHHjnV{`l0+y)bdDk4OV5>E3jSnjRM_rUj#1; zDO&hc0Ps$L44@Mr2TEC{2G$3$qGmHJ9|f@N7w7XO8ZZtc%YU{7yuAxR1&tG0*?2z~ zxxzvvbKp&!2VmIwV;;oB6;pE3-(9>c4u|_FH=W1Bv)ZY!1niSjAj>QM2)O~ZZ51$C z{(FdzUjh?UwWVb~4zLq+pbtNL0zhL;&dlNdKg6x?*`Cq7(rdS)_5P&rM|c? zRoAi^QtN{F%Qg^0#%pj6aWj|zS|x^brJ{9ED6j?n8dg_ZzkN|RZ*I14w$VIaAPKI$ P00000NkvXXu0mjf-9C%d diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_20.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_20.png index af83806bfcf414c6f25fd027685614c4076835d9..5d7e8039b0ecd392deb35fd42b7abb5c1703226e 100644 GIT binary patch delta 354 zcmV-o0iFK(0{sGzB!5InL_t(|oYj-DO2j}EMb9Kz-4$;o1SP|7LS z;fF#f4tCGDyA`0?fzz4DN&+J#K?uuAG!^AEin0##y8RGL22q?F;0LE}3!eO2tD(|qd^gaV)vMXUJ-<1lDX!`RVn7EnhKodib)y=6BpZd|^ zA72OySP{U)Ia_R6mUFm?h4DCx-SMMPtiGoGaVWrxzMs$LbuIwj$VTpy=+W1MsV^;s zhC+fWhAOhc45sowFdBMRq|P>U_NB8?otDj)!`0;(1w9kZT6vnL%Jy?@TAu@689K<8w%U7zZd z>-fVU9S6H-+}#Suci^-yS?NK`D2QR%h^bUibWCSqe(!(;asl7e7Hy#c49UWD3~(tP z;e2g#NdqvIMEr1$3kipNe#pbaLQ?%~Iybly$@JZr*oo=S|G=fi)BuVYI@T7iQv5%z z5Js>fz@=l@^jIY4aFdGgc#u}wkJ7RFn$_B|fERl|>y|8=A{4t002ovPDHLkV1nryrlbG> diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_21.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_21.png index 1f141ca29ee4335a35e5cdf2f2a8b332b714cc67..5e48d2018a6c61df40ec5f53197f899d0e720c7a 100644 GIT binary patch delta 334 zcmV-U0kQsz1C0ZaBo9aio*uI}glb=b%u( zQ;PYgVX59!;L+TS2BSC^0IxjP3J=PoWXfGnG`CC)Of-lBi2O{La#!@~)<7{6DR&LI gd&yl??&i|^29{b^Ux-Y0?f?J)07*qoM6N<$f>?!}Z~y=R delta 332 zcmV-S0ki&%1B(NYBo9(aL_t(|oYj-RO2beThmkWVeaio-VT(Lbb0H zOZ~>EvIT$(Kx2QjTAt`CXUz{mDR$P5xV%sxZo%O|%}O6?qCpd8MVYE_62)XX%oVEGQe1aIDpt!DMGm`x^-)ym>DT|4Y_;C eT~zMo()b3JT3281WgKV#0000~c|lR|rLI?U7waP97) z;R{oB>bn^+2Y&vMGS|iE9xry{Hc))g1K;l<0s`IjLe<@!n0K78DB_4!FN~c?vd@|86k-)RTi-t+JlpNjHkc>o% jZ9{BdVjC6Pxv)L~y2o2OBHbE&00000NkvXXu0mjf3uLwf delta 388 zcmV-~0ek+S1D^wsB!6Z}L_t(|oYj-DO2beThQFJn#%gOzRp?-8t6c@%6pBU=?C553 zkoqDvgAdSE@BzAtAZ}ivgO4C|u*HIlL!GQNO&lWT#5%ZorkgMS{m=O?9QbdwJBoiR zZO6fat$Q)Bk?G}QK&Kls;mHUs92my{5V!&u09t^A23xjS?0-R~B@|1o;xN4hfCWIY zHe5-0vdcy3T_F_JwPS9s1@Kp)-W6GCK~_mnf>|X@MH$};FAVd$0-UDj3t(U?TYtp` zuv8v4aU#=E?d|#UOiXH(%ei7Ta<o`hKetG5Ck1${10~${r}4o!Vu;J2;31Y$F7_}+Z7l0 z`>t8&2*vzUFIgxF@Tl(w-GO+*SNd7=L3ku}s$t73V+~^od>8z9m{dc_(E|;MSfr_K inA(@AjhfoIs6GL@$6GqWi%Km30000`Hg}-~C*ZJ zmVzL5ULi%EK!hM}z|vyTBGJgMMI<|yJb|~`{Wx=G&cMKbd%IotU)i(^Cet=>z(zip zbAX+wj`qKF-=YjX2LQ1VKm%9-QWny(%}fCKx=_s4i{Zp30Dm3;#e;Am_anPp`5lE& zY_A-1cPl`&3`Z@Il{yrZ1b#8hxFDF6K(mi(V3M{>5ueJm9Ke&9Lr4DC_vgGFczCK@ zn_i_nC{f)?ZF=ckcz6aPm4LXQw8y2$0tJ6-=TWrPUgl5HHx2PC=1iFWn6*P4Cs{nT zhfaw(h%e%AC4RC*yeQ9;3hrUuN!vl)B%UZrLB8p(Fpe@xmW2Mtm?*(yprobZ1g?!x z?6u9vVnZm#UxVzTFTk^Xcx%0h1-;WQj5LKu*5;~dS<m7OrTs@w;$g_In9 j_!@@pW$2=YZZ3Jhw@FW5g}<3>OrrTST8OAw6p2__Du^Z!(9%*YB#+<&h)!W+m)1A1 z6a=wz1Ph-)1QAzAX|ZULn1o%6h`B?az^P_G&OP^@SuXsyv)ysOl}))IpR$1i)(XLl z18lA_Hn{15MHPAu0AeG62CxDoEu>_dsQ?O1p_p!#!`wOm9)AGk-Ec13mt8LWwn8X2 zmkzkO79d)L{TGpyCKQzfemP9LAjnIg*+D&EhHaT7K9XtKg(oqGj{NWL*R1{X@Kp7@ zv`qD{M0INCrG*pW;Tee35X42LJ)_oA)#(!Yv$2B!~<|RVPfgA>V`8LQ;-C jx(y@yGO|%4J2yN(w@FfKICXM$_W`_$gR@hiLsRG?D0C>;+LAb=&~wcbm?`=A?m6do!-4)M&{2Nad?yQZ-Jk5!}2i3|mt7l7-(Kp1Lh*(t-AQ8{)) zF_>yy_7ifj5Pz>a7c78)Lo8bw+=nCMXA`QF2phjKn8BH0Y@ptiAa2^v?OO84`NhYB zD~yxAn<%{sW2NV(OBDe+`f1P|M7aR?q@Pc`i5h90X*%-ARKrw)z=fb;jGAdGnKsmr nlyT$R5Zjm7M#Xk+@%#c9s#|_*I7>eO0000TM^tywlC$-0v@Z@ZZkS$oy8? zF~O>%0|V4^LD2v@>n_c1)+|H=CI$c^PXG%*3y{>{$TaH#2jA zm6^&ct;)AT7zaC7U)@Im!rJrpW=HhO9m-cC1}&ntoCb9$3PVwc;j9^ZE{%W21sTKj z%ljgR&FylbMnldcm9L6Q)hM+_c=NI_Y-QPqv{9aXrO}jG0IvT6VW@#+rwn6C<=Bfv zVXArAOUS|^{D10PumD01v21B@9}SJ4O{7wy+4#g@3TK9~fqGYhc7^FBqy@e&9pQTmS$707*qoM6N<$f{IAAD*ylh diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_25.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_25.png index d9241638fae0b6e6003fdff3707c47ed3992b53a..3b24ce07211607e0c2007a975613c207ad7f9579 100644 GIT binary patch delta 319 zcmV-F0l@x}1Cj%fTz?219kPhgmRyHadv5ato+bBw{O3RSoN(a3#bIvWmG*3~>gm)1 z`|Who0=hL^Do;*n5y8X)fQbcg0JH#g4W2BsmO?ubiuI(MwGIGq0q7oQ+s&!0avOds zgrdKD#>2e;#SWZ~M6VKgDa;HzyUu9%XVik zjll?o$^kBghpQYHH3udj2%{TW1>j;42!+ZV*S8c?!a;0=sSj{16eiv~QQ~0*Bt3{k z75#UbeF}RHik``RB^5^b_JA^27QnB7&&}022$~0B8Z~8ax@ZkwQBWip`{(wT=LA0qCA)yUm$Qxevb- zLeby9;OS9-Vh_$oqE`|KlmsF8N|eC&&*#n}MG+?5e%Xw(Jb%kM7~D9801o&;ShhQV zX$(dvR1R=0JY40ts0AdYhra6@Jz-Xw;cB|V^*_X;jRd#N1egT2gRO$4b RB$xmI002ovPDHLkV1m0km4^TT diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_26.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_26.png index f730e992129202bcefae26c6addbae6da664a778..adc8a0d91283376e210c0f8db29ed223f34b034b 100644 GIT binary patch delta 373 zcmV-*0gC>l1Em9yB!6s4L_t(|oYj-DN&`U@MbB(DW}}H&F<=Tq5>p6bky1oV1Pe>Q zKvG)z0U|5p1JX$Uf&5}T;l%+1#?96(v$ TBQHW{00000NkvXXu0mjf2I8a3 delta 372 zcmV-)0gL{n1Ed3xB!6p3L_t(|oYj-DPQp+WhQC{i6a~RZB7=k?gNboqG{y)f4vs#7 zVRZBXjHw9^z-E|?o4XI-jd5^v(}cldNL(BkFoKZQ0g|3;pTIlae)-S+|8trH|LxRA z=C{%*6D+5+Z-83PFB(8+n+vm>HG84~69WLDCx8W@1xRX0Nq?JFA98J>D74Fi><$1n z0Og~>dS)tJI_|eZDE6wIua`Rkg6hp$u`7Dz3iYfc*oIRB)S##$7ex(*vu5nMX#6uS zh#WNA3Hq4WE8!hPqaQ+tvg&J74V<@J$ z2VN+Gsn%I9AsB;&v@3Ig1rV^0WlIIu;n4Wmgvt@k#wU|H0UA*0Q7D$){B+3`;8oxE zyZvaUeA3G&p2QnzooS|I$wb3Mg202IVKkFzDj7Z0kd)Em+YsBA*ha;6E;_#)Kw00K SvPyRV0000%JAlGu)62Vp}8}C_u)O~yzhkr|E)F$=C{&e z6U>Em#{h+RCuIN~t4)nx)_6n(h6Vt9R{#q@3lP!}mTTra5Pxq9#X>XFj}-xM0Lbk1 zm!h8Ba+ZBl2t|42fXfR3M$1rbi>x#up(Mz{v=T!_Sw9MI9Ohe5_oM=LUHe)9i&VoY ze8mNDR1r#4f}w-8*Qe8C;nd0Hl9_U_+li@Ue#@=|3RE&*+PMAY^dxwOKAh^gss~%} z+}6J3i=pbs_kUu-2mZQpR)zHuFRtB`3aSc0KPkbMWf{qTCQl^ z>AH6MPAFy{JCSr&fCqikYxl;v0C=XGuq66vSp}YD8a~uQN;)ottn~U*AOxy kO%JAlGu)62Xp}8}?@5Ar>`5id$-(quM{*?}! zU@ojX1}MZkDFf(OZEF0o#w98+Gyvec0$2cAfRKi;Y%|}1cz;tU7MhuUtO$SuKxVJM z6!m16v+SEfD9S4bTwVw;T83&{c%=ymB|#RZl_)C0`cZgeGvA83Cl#>k+SdYDq#91) z%PxSUicq2w6dkO+KAj$mNu69SnJEXootR4Ix9m!wKqd2~joV+7o&?X(hf_UQ^`Hx$ z+uFB$QB)oIUVco>fxoVtRWbUA7uRk|1y}z2w&9kBBe(ST3ZV}(0{HF#7LAlcXt^SB zr|a73JE53;>_pO80Uq>CuiXj@H65WvF2&!N`SC#V`}CDLJ~YA!JyZ jxQ2;)nYgHln+xI-Z$nsfs>M>600000NkvXXu0mjfQXI9J diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_29.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_29.png index 8bb99f4617f3f15517093054b1e2a10e403ac5f4..5df7037237132276f418bd6296f1a470c86bcd70 100644 GIT binary patch delta 366 zcmV-!0g?WQ1BnBWB!5szL_t(|oYj-DO2beThQFJp#%gN|DmYkLs_u>oYBMu=;|A|3p#oQK_5ZrV2T|bs*8cPxek%!+(vNrOv%T8{&W5d2mV{NBl}-z&jw4L z4lS@<4c9E7E1kLI%SkMJ7+U}^fdCGG7NDrXlVg@csP=?nrGM8LRdxVy0caeJ*2@z) z<*NCm5Q@ExQ*Lhrh+A;d7g^~+O-ay%c_mCmIjLfjg!x?oKEwk2P@T$LrHoPdnQ3$Y z(S_L5Z7Zf?F}I>W-ku7+0LpPy*Uwr|ti_@% delta 365 zcmV-z0h0cS1Be5VB!5pyL_t(|oYj-PN&`_4M$c?EuF=EJ*@3OAV2BHFl+WY;3HJ2w%mo$B7hH$UINz<-NoWdFr@HdyjZ zXo2l=xMl%UYRyev&ZLA7Lkj>&pnwBl6v!L!berW6${nRx>3`G)r5ylV0BT2r_2Ni( zxvGB&O0le!`6`h`gq%9(9 z^f)!7Z8(h&4DYiVFGBhyMAPyk*Rf3xtG$Xk|Xu3_e0W-e;x=Cb$(%Q{wBdLO6k00000 LNkvXXu0mjf+?k~k diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_3.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_3.png index 0f8947ae866f674c3ac0bacc3772ed6b43d3a359..6fdf1e1e6f2da14be508fdf55a3ef158328b41fc 100644 GIT binary patch delta 90 zcmV-g0Hy!q0^|aaBmpatCB8YpTZHqVtO`Dbg-KG})a6Y87rqDvD9Vaj1bzK}8fK*n wG3>L&#;7{ZoNuH{3%!WpYzO)pdT3?TlN$jz5HpXvG5`Po07*qoM6N<$g8SMfTL1t6 delta 89 zcmV-f0H*)s0^k z{ha_w2QJ1UDT3KjECg8=RLAf0BoxD1vzsaaD6V?Od=9fIET5rdgz4rzFk$+$en7GgMkHf6R@#mF z`w3wN+X9#{hJCB$3T{Kucs2{atc;+cB=Di6gsCWJtyrdEepf&Mi2&bJuVtYztt*81}7}E4U3slyzm`$(DtN jg#<|mNg!Gjm4Td-UjY^n`ar9<00000NkvXXu0mjf%Q85Jit2gA+(dcu5q5gvSR^Qt)t*f=@t5pp>-q5pgQowEO`* z640?i6tr|mDR88e6sCcoI9>`%corj3Gu7_Vox5{a8u)LuH#F~-a!oMfs=xr7rB_64v3lmHV7T=~p=0OhVwEOcvOX$t@cfPdP4xLl0nD;M<-3!&Iv zKjivKfOriKdLk=bs8|xzA#Vv&QTDeYO2YiE0Iwazf;yaQeUFy{YX$c$0g37GNWT}) zgooqbp4wtCr!?-}v~y`oQY{e$1yyXivSp-TBth&$>=|K-O-qih6-*eBGTV^Zm&`_Gb}p?i>7!e}jZYH600000 LNkvXXu0mjfKEtKL delta 365 zcmV-z0h0cc1Cs-gFMk425Qe|AtS;yxcuOoq@bUnb7GAcX@DYrOhSJua$WqzT`UdtU zYUhcuu(dOx5E4p@wNVVq9*a$6j+j_G)$W&n{+a(I1OKh|`u4xlo(*O^-Lb%Cp|fNG zov%%%UruTfz`z242?cNfv;Y$tJUM2*1BI4QEVRl|ehUB>fPeCSwCu-n%0=ZvAr#x| zhg@F?kgUN$TV$mLMI}K6vPzhWa=sOD8s>Ke1dTWm)aBfmdx8;AD|l}yNKN}k=G{LN z9&UJh>WIbM{IGq~$OPD9>mnR#ZX;XW8JR|8i7!e}G%Jd!00000 LNkvXXu0mjfq^qUW diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_32.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_32.png index c74c79485dc33c59a8bc9bdce7fcdf922c9f73b5..441a640e650ba2da8b6066cdebc4d63b06dcbabc 100644 GIT binary patch delta 126 zcmV-^0D=Fb1ET}5Edh1~fGha6(!Ro@SdhX`lRqo;-?0=ms0&3Jj$zpZ!1b1!kZ;S2C=dc*!u?Bk6=t?(dvluf1M%94qJi3CXqNnnjy=_r{tHBgjcX0Ku9 gUS=+8=H~ME12somiQ6Y46#xJL07*qoM6N<$g0o*Z`2YX_ delta 126 zcmV-^0D=Fb1ET}5Edh3swpZ|NrG14*u^@$?CVy7wzhfzCP#20c9K*6zast<(sA&zt zLgQX2=3e4*!x!M$^oISR*vA`#TH!(TD4R;hl_e7c6A6+KlE50Z(or&PYM>~?%wEIH gz06$H%+2NR2Q^1qi2xQ^0000007*qoM6N<$g1b98Y5)KL diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_33.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_33.png index 6493630ff5c9f2cb609ea06d16d28e410fb22e70..17d69f0c094e174a3256d841cf55fa941e13f98c 100644 GIT binary patch delta 32 mcmbQwJfC@kAtSSjm^336L=uGHy^+AHyrqHb~JXsm8rO39TEq$VcP)) zR-6#|GdB-F7uVU_2v9aqNd%}x5L^nd88_3lLjZgLnkVUQeSazx>OT6))6Nu~{d1lk z1<3Z`Y#M?9NE*J2iMbzV=E;U|+V)Z?#HX;Gu%=2h40{;Ho2g9)R zDq>VkyS4`r7rHxwJxx#({a)(cx*N+?J P00000NkvXXu0mjf4E&z! delta 369 zcmV-%0gnEa1C;}iEq^~s13?srzu9cuO^k611qDMk+E}Kv2$+C{rKMO%j^F`AM)3gK zdINjG)+sDJf{?-lQd(>yt|shQWJ%s6C-A|}&V2mdUwH7}>^O7Z$^2ml{|=4rZDn|}(0dWgS^v@=EL;DYBT z0rGt~AIL%zh?E2|gi5%;&+pgnB8wtUnjNbbX_xzi-mRAl;6WJ0vv!M0HCUlg8NiK* z;VaKCX6OOfh$!yf%Paub%Rnep>iMCgm=gE26+uIQJE5@p@Jxxqa!6Xx6&xQxUC!?tJ zCSp`ftsh92iGhg(xrV&!G*j!#d0-8cWxKRDhwe7i1LN+?%0{j1+`|3tN-f&`IyanU(2!oiMry3IPI$Vt-whTV-m%35Ci5u7yXa zg0Sjg0N`R`J-nAu0It@7P^c^jBTq3$kBk$h5x}ibICFfVL}CRbeHe-;c6q9{!taBk z@A61Vg;SB=pbT09IFrMkcjXeEjBq`hm|FKmD7HV+W>*XFW}m0;Q(*DuKAFU|SK-mL z?Quh1nOT@gP%{`PhF&r4vFr!VLS2^2U?=sbq0_Lb2R0^ZW9C-t57h%tqhx%XOaK4? M07*qoM6N<$f=c3*Gynhq delta 314 zcmV-A0mc4{1B(NYT7TF=moBmqV_PyV5}R+@6Zk=r$-_JE_X8jNw>ZuGe`Om!=)lAS z1K9U~g)Psbd{z+vnCe)(tpIh)Uz!56G>{6goAgqOT0;PO=jkC!p->O{+pFvD5v)i^ zegtE$&;(*7frdzlEbue`I;cDpI_aG_Q<<*!38R}J7a)Kr)_+C2Wu*q3P^b*xT6lyi z2+J7;04^rh!+V(p;A$NRg-U}k@)S$-$T(pd0o)3OGshQ76qZBMhoQ(~SEurm`*TqA zT^1>+a4PZ#ltN1YXENCHu3W;C5w2%bQ|rD6#rDUf+0_EP+2`5&tQZ~upG@Q0tMF*r z_P8OhEG#S}$TJP(L$8_kSk41yp)T8Huru+uq0_MbzHDsN#?Dpo3)KTpqoj5p)c^nh M07*qoM6N<$f)$LEqyPW_ diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_36.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_36.png index 64e41db05ea0d6caab55b261a78c673a77dcb7ac..8efe74260ff3f33bef84820a3fcfa288996c4f62 100644 GIT binary patch delta 305 zcmV-10nYw|1A_yQTYorGN(wg!1Cf`)PCVhy z1m<3&3B*bQ4UrNq@cr|7RBI@7GCFgn7H!T6v)iB$Ab=>=<$t(Urv{wJP+OofZxtg27p`zyvSua2f#1LHlS)IOlfi{Em1wdLmhRW(1p$b9? zTuiLTp39DH4X88-qY@NaEA-?}ibiz}XU=bw068Q>7z-D>U6r5Q_g4&ER$gJb;nc>c z1Sxc69VUY#@5n7Y8=-nNH;w+Q$k_j!wfkCtcl)yVScq=Fn8%Gbq0zS8X-ghiT3AYu z8_36AGu^4Y4=S96rgzt)gPA`Ky_WUoWoM#xX0D1g#*Isr*orlj00000NkvXXu0mjf D)F+7M diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_37.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_37.png index b18541b921d70993eea7abc518f31324cd1ae64f..c451b912773371edd1368497d029345ccade696a 100644 GIT binary patch delta 339 zcmV-Z0j&P|0{Q}wFn=%1kfvjvyTmv72 zjZ|V}$N~hYVg|d(b9w@vl*IY`^8fESdhp-kypG?M9mZe`Wdvq$7y%30kwm!KNB~T? z^mi-3z_PaSU{?c`00+gS!q=JtFuAIZS&0nwpueKJ?w`O4Lw}kRSVV;ukShr^WJsr=ifrv`m|VcP?$O42L< zueCy7+)B}`_X*CNUMm3_D5fwMF1B5TM-%%irmhZ07&e?*8wF57ChIVD`x`>W4LnNK z%ca>0UHFW>*GzIJ5`D4HZ&AiO%RJb4@HrnX$OZVdfEJ)Jgl5}jMhkf!I12+=7_T0Mc*2S7>I%k3XqVpp`y$IkVqtol$-$N2pnM%7jR2Q#WmPt z(2+=#6m9?mk(XjO_N;RPMzXzr9{oQv*1&&@%PM|XwjYBbEF&<1;|N&TjU>X=L;_&i zqrY1LdX|li2m2Z*1vn~3CBD`afYH1>Wi2w)gZ_%@x_<&I41cN5U=bBsK&~XvkSXB; z-#;HGt%gDuqYGzR(QcnGyGv>T63BAx+YOZ(a3VuhU5!*FsRS-3*VD*l%eDhlnWR|& zUTck>-Ad7{tKrP~wGyC)VhmH^Vw+QV)Um%}?5Z%r@WH8#Q2-@mvJO)X zTA7{Dh0i#6T};4I>Fr+h*XUqIroXDw?@*{Qs@m;PU_g002ovPDHLkV1jvLoXr3L delta 338 zcmV-Y0j>V-0__5jB!4tXL_t(|oYj*tPQ)+}MV~`}01|RR0TNQYRFoV5iL69H$q7~* zfg>1kfwXi~Tmv72j$Mh8A`K8=6;s%|87C)Tq$JME=>HkV1OF{9+Vowy?G)_8JOO8L zm;eV`iA22Ckpb9#8SYMiO~=Y6fL#ML0vyz3L#Qsuc0t?dG2j5I_wjscUdPu28A}E-B_swFEUg+)W}tqOW-xy zREf*Tb^uh960+n!a>s5SoslQ_4+qi}CgI6n~2pTA4 z9kyNnhL|yfM@y-Cxv(3ti;%JRI^Rh|U)=LslJU+$N1FgXD?khI>i{#{H=8swILV{4 kKAwiryo@GlG;@9Y0k;`I|2%D{#Q*>R07*qoM6N<$f&m7WHUIzs diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_39.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_39.png index c01db4a8b19a66b1323107f776fe6743f44ba2af..22d25a88e128f6edc021c99e90c7aac73ae95b56 100644 GIT binary patch delta 264 zcmV+j0r&pj0^b6VV1KX_$9eJmKa+Uizm3Nse^&N12N!V2z&%`Lz`{u;5wA2V0JAK^ zYy~*B%r*g>YrqL`*>{eRYYjm6qSGM`|iP;MYOCFcKd1)pn|5=q1>3M0WWr_q132VRZHMoT7SLGTvoOPP_C+*2!hs# z-n~lErU=2CyJsc91pNlK!o{XlyiK{kV&jMS3F8Z|W}^rkG%^n}q~DN4`H-qxWsYJM zv*_V0t69@IL_xG^iXlS@#t^rF31YFSnBpX_&ic9=R{gT-s8!D`;}4M?JirU56kz}W O002ovPDHLkU;%h(7GAPMduWve8X6^B;OF=2 zdeKnmzI*Uy5iRS4-M*RxsGw5`XC^c$T)e`uYR)23Zmz8Y+l&k6{f}k~` zcdt^kDK)&gdsYHW&~IQXTx^=f+m!n&HhzeoFuw3=Hj2POBl9pr`VC2x52?CU<|tM% ziyqFhnl+t66hxbbxMe8881^k-f>>-SrZ~x~v%cF?|U); diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_4.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_4.png index 50538cf7e11e181bb78649e9e40cbf58237aae87..52d16cc85fd562b52762a67eba86a841d5cfb693 100644 GIT binary patch delta 318 zcmV-E0m1(A0`dZoJ%6%vlqu|N@OI89K&>!EE?cAUJ0xj}JnuuV5 Q4*&oF07*qoM6N<$f&{0L5&!@I delta 318 zcmV-E0m1(A0`dZoJ%7A(lqu0G{rNivSq^ zqv{Gf=&g*f@U9AV;EarLP6366Vcg`}55&+}B zRb62Rqm>aB-c+FuoRJZZvPmup`1$?1Un30u&^@OhBpaVFe1F(k01K`2*=~+70g{qb zIgD*I!1?~Nqyn~S(O&%Ueo>Ob(J5rXq=3aLT$B%uvjp&1_zB_15cdsQRVqsH*4I a@dq!8Q0A4~%U0kDsVLx) zTvUTrQlSZl%wUy;!oV=u&kAT@6d+I+Wuu?=bL0!Ozj~FZMbxEQ~-2bf=j;!gZEp&2qD>+%&L>KUeBi? go0n{&vYA`#4eh=s>_W3~uK)l507*qoM6N<$f@l_M5&!@I delta 229 zcmVJU%7n> zj?gCH3a11(C=(aqi=qMSa`mSZpn&-q4=R98fSOB3FM#2GW)J{nUP)ZG1gE8jhDQ=; z4YiUQHQ|vNtg=uT7$*B!0~#0w(6LHE3SXe+n~&ds$;QrUh-t`3oh;^tC=66;TO)uj z^f!RX_Ukr`@RUV{jj}sGB(uiU9un7vOE-H3-^p+UlYR{bZ?}LkCL5DkO>#Et`8H(x fl5JGBbBnwI?Y<}McI+D600000NkvXXu0mjf%l~66 diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_5.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum1_128x64/frame_5.png index 5b56fd02aced529e1b6ba09094f4f9561c867768..24fd500a6feac132fce7d35a0102f512f17b501d 100644 GIT binary patch delta 320 zcmV-G0l)t80`dZoJAd3nSvpEex|kbq1mA)NMGN8pISnN;5=D*?I!YHH5)!-=w!@5l z0!Feu`}ED#AEY+sMJP-V;`<>F0{Hgn zKn-zf$wkupuiJXix-i3hlw?Nrv1NNAL)P#ua(Gw4rqj_UW6yT@C!VHDBwqDI*O|qq0)qa#BqdD96R9wSqQ84qF8P?*s?{N&!M3l4(+4 zvJ{GxtR7zpU@4N_Zto2khmmRX5j;H$KnznSdL{F|Hd0|BmVYturaQO5F!vu}+f1iu zdZXXn-U_RVe`X3fOC>3Jb!R#i7gHAy~-!Ahj_sLScdsf9UckfbYH@ zG!UnjTm*gix@`ufi)EOPlBrR3Y}lMgmkPc`4DV|ARNb!OT|5-I@qYFy72f^KtWa38 z`fMfA*1V-hD>S#DQt(?_ymk(d-my@zqJPbn~lHRvofIzc0*G- z;9yXu4lw;9s6DSvk;BpffYkzc07d{G2xXZB7)*pBVKnO>3V)DM#H-ah8c-S~%jN;x z-U&bisTQ*`vUaAVB7;cgz^dk41I5_R{d$;2QMFF{)oagdUX#6M-1a{9Pn=ExxNtyr zq@Bh*KjL~bZ)^DFo|Oq*upgSK z1CDyr)B&bj1eN7gDRNjj0I*sB55NfE1EDOF0KJLuNEpn!$A1E36!Ch!i3XHL$+CF> zw|4>%L8^sT2G-7%^vEERIk2ieS3ohe3%?Rmdz6jQ?0RE)^>1=e%WdxC@XYBHfJ+Bt zC)#Pu^CQOFAs5?VEboIPi?|ma%JZ??A=d)f`fET5QIe61q*tG#vemj+ieV6^%IRat zvLi#L@GWv!JzIwlN9{ShiHG8JW^MmLcbnUu_3wu0000bmAyfDf8dm4<EC`Lz>B$?zrKsKpUmRDXQ9zHQ5MLMm4TH6g@z(^iitAkm$C-- moq8M7(3qFTL^Wn^yZ!*pf>bol&hjDv00000fhdS1C|4jB!68=L_t(|oYj-DO2beThQAxrCdJeSbm&ry;Ly?0K}ZD$M@PrL zg^Ng(K0sF|eF7K3`3ep`g5Y2a4h{|(Dz>)fIy7m|ZJxjbNlre_`A_~E4*a)>$M(C@ zo((oUJ+Q!DW6-pKu6L{R%$ZAcU}^!tBmy`9T7ZfMPmb9fK!2kzDz^IDX?-667l7^K zMlhQRpsw#w2yn0q5BEYNYeO>;Ub!(QRT9L;jFo7?C?DZP5u1@aHdP3!&i>9VX&COz5~iJvjy7d=>PT_Ekz4`8+NwX3B9fLevMi5*jAI z3Xp*xMsyaUaCG^7mRW9BLJ?Pkrb4tZVN#PV1NaddCQ0GTI`vcdNQCOq(3sYfs91kX zep`_MFZy=$`Yy(PG7Q(Ag+@&WT~D@5HB2SQ639B1nV>6w6h=eE@>|-5(!P{7sL_t(|oYj-DO2beThQAxrCdJeSbm&qV!J(t0gOCaij*gCf z3m1_neSoe``UEb5^A#L?1i`@+92^`nRBUa{b!cKvnkVo;a&JD){ZIaTIPl*hoR+_p zcFJJG(Qygvw&HdP=;oll+*wPBKFmu1Fp&TjfEJ*p!I5P)V}EFkM8?*rn>60fhdS1C|4jB!68=L_t(|oYj-DP69y?hQB=z?ofm)ENF;lVnIo1VRD#QSXx^0 z2zEBctcC}mwbCcBF|l3~3m?J6!XvS;u%N&Qg0~hNFbhxMB)d2FW#*s#@3QdUA{n~x z$^$}<5DcIkIhkK!sHK3;DL2s<>D+v;7hf1_yRVZC358Gz7R38a7`ukU<#5 zwC194`F)l-ZgiJIkrc}{g=k^Ks3cob_z@ab_uL>7_h3a9?+WM2I*m%>w^;m!x zb31r_7h^x^MQhJOqh!kMK(>qxj3vl4WG%-`xh;Pb)DvTDfzJ Z_yb|)R+@S(Uu6IQ002ovPDHLkV1fguvq1m= delta 380 zcmV-?0fYXQ1D6AkB!6B>L_t(|oYj-DP69y?hQB=zI23`xf`)h|7L=40CWncIrKKg0 zU}s~@YIp!zD}4eR6YDjx@DWTbJQ52F3kr-Ncx%BOHw#bTB)d2FW#*rq-3L%qN`lDRu@Wg*7050WksbL~i-;t1vaeovUb^*n(ssSH zOzT)l(J{b<(C`Tlv^a;YdwxJqRslF)2EDv}HKZN}JmwKI<@s148US1g4V$hEBoNd? zI{BS)`F)nKTy<8MA}UrIN<0Hhn3QEo3_n7{>LGkNw|)X2;-NSkSlfIO5gTv%w;2lX zVs1yT@1pD{gZkRD&?uWqw%Q6B!3M_L_t(|oYj-NZNxAPhCdmG;{b=i<#krND{lik8)SrRkyhCt zBYBh?K}CT0fIBIL9u_SmeF*5`4(!!cBs)UI3~%a9APlL2^RLAGJtJ-Vv5cykxJn$f1#0Wjn(hOB#V x3vnB8KqxjBvm|@T)myKpp_-R!qN<7e>If@lE4B!3G@L_t(|oYj*%PQ)+}K%b*11Zjm*ZWq&0a)Wqpz!A6wt+@e5 z%2Ds?cHwegx|~U!j38JCvJJ~_=&Ifl?6=6P8C`B&EPlO`%d!X8 v=(hn6U_>#yNg}Rhz21guU#g9&c5ag!#F9CR+^Lza00000NkvXXu0mjfl)Q(; diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_1.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_1.png index 485254ee152c8f55a344a7c0b43bacf06cc7e779..fbeffe5425828c959c3d37fbb61c80a88e7a20df 100644 GIT binary patch delta 308 zcmV-40n7f*0?z`FB!3o3L_t(|oYj*-Zi6roMV}EOR7z8p+2QWG%nhJ7=n-;@Zs`qr zBp-z%u!vNmrnrl-!2@mg9m&Rin(y&29{6w8jCya}PJ_eF^$MIG`lABw{#?i^lOtOA zQ~>Z@0x|%XfE*wVQ_WNGsHg|V1X#{{Zi%Ed-pfJ3qb>$ALY1j*3A5T^Aim-)& zF987GXP^ME87KkrGR=L85e@CglmX3Y%QZ_e%KNZUj4%~gmwy3j(79Gx??;tKXsGj} z<5gS-py>R$3}Rx0OHTUscdv-k$8(gM{>R}}iImwA&@a6JMOpJl$_g~v2%w7c_Y@yT z0uJg%V@NH6_s=)?!yZvvS8ew}U8;8B@{p$t#7+j_`w?UtCV3myy~X!8QCHKBsdYg- ziyJg8!8PQ~z$^h6AtsF3EK~vNV^_C&-|J3YT>_GJagZb zskxvDi39r3c7TDZBT=lCc>sFt=DQJ~VkpbxU^fC%0rtn;l)P6TfbMCl!BSK?Ik&d> zmZuzEfXM{NdJs8{-dme031Vw!N~B;_Ag55ocIsO#BC^scpL*qa#WsIFD8}`QGQBe; zMP~pvLc=FI(xML=dVau2Rsp!)1fwDwP$^*)@VJgxD$mCX(E#91XxL(vAcG)`7_3C$ z_WLSxrrj__Ty3-!B855gx=cynM`&1`!k6>cFX2NA)#Hh^ohK2o_ojb4kpM5|Vfy+m z%6>8lcb1CRrdBmq~EB{hFRB2iFKxCkO4!AoH~o=r}`NV^_?&-_0#*1&(Wc<#O{ zQ*(hPOdOyOZ3i$=btv+)HV;6TZgv|1R1Aeo2JA*aB7psIHzBLl2cUb}YOoS2C+F7Y z-?Eg$3oxkw(jG)kq4(A%N&>O9b0t!+Dv(_$VmtG#77=OT6i>bOy!?L}ALQ+NxlHd& zNzysMjo|Q!jI zA^XWR+<6upb<-HuWXd?wz)}LKhIHUG(-_Jhg*8xd`t7$S?lv@Q#@&~#joR9|(*6Lf W|5zNLxRWFR00008IY>xQh6YjQ z7PQL^asxQZ78D!-i2_HWprCLOL_&g>!s}#~zyTO(*W=Ig&%>*Q|7PjJe^;jAgEnLy z7(&+r2I^i4w>B04=&f7sMu3{3DpP{}1jq$Aoc43dUPA!-=YO4uwWxA-VXgaCN{%nV z6ao|jNW4aGt<9ALskI9wBv{pyQz%k953LpvMdegaz3~FKO^@8Tfh#i@E16WBLEuJA zPP70v4nnUFX}<%N6DK1Xu~tDSBW&}B1nX7>3TVa&qp~FcZa%JyKgzn<(t6ZY2nkD; zEh)+1Q}&^AcwqPb`W3utk@a+DZSP)096al3I;hJnmNvC1N^lpE-(pI_ds-@v<7QO~9#okwMH_-cPTsRGaLVfON-(ta>a_MTLXhKoma?Xq;R z)F8Kz54~pMk$xz|LCx#8--RW>;M1& diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_12.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_12.png index a595af018482461a02dc8cac7394a9347ebefef9..07989e7d2a095db6ad51fcf7a1215e1e219703ab 100644 GIT binary patch delta 347 zcmV-h0i^!*0`>xsB!4|gL_t(|oYj*tPQySDMc-OZV!%pVP^63LQsw|iHWCt)&_tBE z1?_T!+yIWU$DkwWDO^O5h~TC0I+;n}0F1Qj@%PNm|DGNAZ&s}JyKy}Y^kJcZ2@DnB zpsS7uYiALF-Mh{11kiD`Wg6f#2Py%a&qoyv*BF4&?I2|`9+W$g)-wiBM%ilh=RoY$_l_| zQLK1K`yDV9SzgMBt%+h8;gf?Dd{`||Lz3l`4J81cJ|F8p$_8ykHys*83L7>jGG#&N zWZ+>dsMKG7I8?ZF*UN+6p1s*`Mg7&itW?B1%Zx+-A7wft6Tp|Fy$|7jSZKuV#H2IX tD7=G?(mNR}^fdH)PEkLesH2(N+YfghPD8ulIj#Tz002ovPDHLkV1hHDqo)7> delta 346 zcmV-g0j2)-0`&rrB!4_fL_t(|oYj-DPQx$|K%b+u4G^^%7`ioV9s2=D4H6QJupq|% z1*`dk{sDZ7KZA{QXUI@ND@x1|r@c$X2VlvL^L*#K^WDLJ8}p6+H*TQ85K0ARFjl}p zUtJOAenbHFux(Z+K+n;dX~1a?R05nYCl!saF#wa>QOZtOxqrF$KAbfwmk;1-0qQB_ z%F!3^Dax0lpn=J%swOK%s(37cxbb-C1$Q1!LjdP+YXATM07*qoM6N<$f{d!52><{9 diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_13.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_13.png index 994e6b57f902495e4ae1e80c20a97f152210afc5..943439d60be73ece49a217221dcfee93b9f5c9b5 100644 GIT binary patch delta 316 zcmV-C0mJ_10_OsdG=Hs70#uNJp0CBVZVxgxHuSOB*>HoI3~&(peT zz+njl1x{zr}4hU|Ip%8B~#@FMrNiB|+`nMhO+1Dr6Lj z+O2b^g+v=R;j8;y=9k5V4>$8>X7@^7Dsqtd5UXn~fGe}Sh^?e5DNvTOYNW(YWx14a zMS6$xGk_L~vZA4Xb)LVT+CR*OCmf9@3ZcT5?U7Vj;xp;}&=zd;>W@j$-K>(_p1kXy z$n`h#x{f41ST&Ut0(>?=DZsZOt_M-4A(*6+2em%zhC#m!I%?2!`|%5nRY`YA!b{@- O0000=K}bO>#wC zlUaaf-Ui<);H+f~6M#zxcm>=XN>9i&1E74m-qNcmk1rzeTYsS3zd}1GVAz9868#YI zMgx^dXA}i7xmIDQN7$&X+H7|QMd8HhLQ{^!O2#}I4?g+p z-JMJqL^HybW5NQycrmPAa)Y7=;T$eucu)(FRO`K&D?B1a^*!w Tp#Wse00000NkvXXu0mjfN?MfW delta 320 zcmV-G0l)s-0^0(RB!41FL_t(|oYj*tPQ)+}MW3y(1hj$_6x$_qTXF!TgbGS%xC(9d z273dplB4VqTp*E^f`=kbGIqoPuw=)1p6~J4Gw|P9-N*l?yNtmNoFec5y9ji!iM9xR zZWf?jrsLQtaM3Zj8Nqc0I0f#GrDHs620;08yJb*bp5H{m+J7i{e22~};P+5P2mKUr zMuS?UH%fw-Tt{K3x(ecO3v!*IM0;o9J4|7!H6>J4lNv3hD1kiuqp>?M_? zz&MJk(H4WTnYNHT-9tj3fQP)OXqa!E!}o{(!|im1o9)h^B%C>4X~~K3lHnY!0~g(T zpCnyllD9?LpE<~HMd?rhQOrY-^eGrd-2yy769toG@+#NY)v&6URYk38ZfU=Ak?c&K{XHJr1OLssG5=S?c@D1NkbyhcW?+C-wnS)? zRRCsoeLp1NY#@g5;8FuN0XO^B;`dqu&^}$SIVDjZUqr%~mw(*9!r&6%cA&G3eu!9= zf=*;qi3CwinuVg1&st0}!$l{4&E!>~+uw$Cs}N@QtTM@L5$Fe#fvRp6GYUxoHoDJ% zs_MTb5?TZfnvJH1c#ff&Mmuu6NF@itO?n{4g3V5STs*p7E$$XE z-&tHuYiSa&nKHT{8JFPXbu(~)Pj*UX@sf+TURFaKSRhosO^&h1-$scZX#;2LQBAWeeOt*+(w$DmP7H0+M2O~gHR{SB!K&?9g zR8jse@o|p8K~-xyrc-D4`R0CDBj(nw)|-&s812aMB9$D7HyMC87OXh+VNrCQTHGz( ze2KW4#!@Aqo-s_63`=kdx*0ftP9(Fa!_^f=J5@dPC!REok)8C0000< KMNUMnLSTZ40+K)g diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_16.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_16.png index 8ba94f3975422dd93a93aad80e7fb54411c6216e..73d25733f53254b8648fc7e967146719f67ed358 100644 GIT binary patch delta 393 zcmV;40e1eP1ET|wB!6m2L_t(|oYj-TE(1{%hQB+?R6|y0G^G z#Fcn}K7yy9v8cPSuo8PxBP=Y3plvGmTHH>1Zu$hyYUZE+|Ihg+=fHof{ciZKOdJBG z*rWllRZf=!z|7XC{8QvD66gm2;IsfD4HyATCXQIPnM4?jc-W35k7&6)mz-$=s(B4605CSs+UgfFen&1s^77Fh?NK*Tvx{pn(19 zTapn&L8PRqb{)l@^st%IH31xBACfl_j^8JWLEEm$J9^-pZquwtMtr2X5re5-yY2j7 z-qcM!QxzT-T7Mu%N7J%-E?+w}5f;V%eWx4zQ#SJ*8%XLln-E>x*%o|DNz{zeH!WNb z=I!aytzfwIvy(NM_GSCx>$M;x3+Zr!d`+8j8drs+pFmFnmJjX24#P~ON~Xh*@A{xd n*Dy%ihP!|y9NYG=K!0Oq~`0000%$5(mf;I0YaI*n)xz(Sw2!DJTu%CsCqZ3ddwtoPeq9=l5pjjc4G$#ct1kS0?g- z*~p|Guvtl$JiyE}C-bKuPm#dD0|2K55NN;%U?OouvP?CFN`G507TUFJwl08m)0|!z z0uTbwZ)hG6!1g|zoePP5g=HJ z%agjvCt{Jq!haRW*3n#9Ib_&s2(u`5@4kE9OxY-QY$R#gtR$+q)+T&PNpKOQUGbyX zo3qD@H-h2TT1TtW?Q{L~<0TZ5`SAwjF=Z-g6bs29fxZMRZ<<6%6s1&2cNmIYAI10@ mMs7QB>oNXZ)SsIh#}A-tXT2Kl{G|W@002ovPDHLkU;%<0wXtLX diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_17.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_17.png index 63eac27ad1531c58e992953367d4c9c982d5529a..437ab51926ebcafcd5dd7467fb649ca08dd90a21 100644 GIT binary patch delta 270 zcmV+p0rCE>1Fr*+Bms7jB}#wJ$DMo5xw`}Ww-qGjUMSB5#9o@QW0rQvd&fi+a)a<1zD0JcLaZj2cC*$nW;W%n{=vr~n_5RUDlWtv|7f!m-SV`*^*(`F0$3 zWK{!xmw|#RMP7{^87d&jZ#lJEiUe071-Lv6c6?niK-p8;01G#2;m*z1FEze& U+kUJUN&o-=07*qoM6N<$f>-8td;kCd delta 269 zcmV+o0rLK@1Fi#*Bms4iB}#wp$DMo5xjO^=w-qGjw@{u5%Ed_MZ&v=;0(K411wJ_t zAuu!m0FtbyBYlmKRk&fIJuTgR-LYtp|dE|L%_jrv-X~R@i$-fqz~AZRSml-B!72FL_t(|oYj-RPr^VP#ov`;OF~)`Fkz#bxHB@4l*r)Xfbkz- z^PezU)X{-~(FFbmUEH|AL^oGm^oSll%7NR@hX3Tx3u@kyZ3$Xk^}zR@<++N zkX8~nu2S)z5q~y-azY_f!3rxx6&NP~038r802q=$S^{ZBo_{$7IIE<{w~7O&OrUt% z$cE8JC$Uw(@)% z2BOC>LNL!^L^@ORA?FHHOvX<=R2QaaLfGCRkA17P!8yEP*TX3*`t}Yg3{vfax+YNf z)*%mAVecIUdVc}5nKw0#7tu|G;W(mT5mF~12mpaMiom9*54gU7|JnOIIBFFs=211|xc+1}N9jmzo%V6w?M`d8iIvq?vC3UFHlGSZTkN5F)u;%-xq2$Nt6 zW>K>Z!BeyZ(p&~5R}~V#v7}0Xr5CmI<`(N0S-x#n!4LPbg#Z8m07*qoM6N<$f{N_A A>Hq)$ diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_19.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_19.png index b1a492c97ace75df852bef2e2c142651b9c4159e..a97b88c319a41efaba341bcdf8b0d1b52d9a2dd1 100644 GIT binary patch delta 379 zcmV->0fhdN1C|4jB!68=L_t(|oYj-RO2beThre8JY=!<2TA@Qh7jf0iEg6Kqh1AW} z-63LU=^N-9_zJfoxCnN1aEK_>L8O9Uw3_3P+MG~dzypEYFXwm8`Q>upzeSJ~&z>t4 zL9OKC0@$p_tpaeB?qc?4vJxRo3ILEu0TY373iu)Tx=ka3g@3-vXbxA$Yy)5c*x0|S z*tU{%4n%4@3LK9_u8pdZK0#A^Y|_nHD@oDx zmFRn27mdTSw+E{vjTq{E1(sa3TUt|+NeCYrq?sLUrrIrBlsNG9==0k!w=Z)WHMetl Z`~U&jWMBMyyAA*V002ovPDHLkV1fs2vIYPE delta 375 zcmV--0f_#V1Cj%fB!5{+L_t(|oYj-RN&`U<#(%f&nF#qKBtnXSHe#!tU9J%F77{yK zdy5lOOWr`=z*pFaU?Z5)!s0|B79tS@Pop;$C&?`53pmy8w=>_&_bmheEjp=x4_wIy zY9*I=z-B#Zd4Q|*7W0$IDI%D903fjfObo^;AdDc?Z5lBw41ZKcbF?~P8vqNy#{N~s zwpB^@K%};#fa9^qwNV_|6Ew9}PDLhx209{Xph|e%yFh6P=+@dc7i0J<4DaW=8S@N- zEiZ%f{Rp%{UjUui8)2H=-HsT#Sw`R3GWV+FPLCLgj27hnw0#HC@M6J};4oX^R zC}a$*@_Ppqjr~YnG2UVhO8A>aOZ;-V_vMEBczBLZDkK2?WFnBH#mZvivH_)TBcPJ> zZx`#o0A?skO$*BZ#5M(AbKR$1%Ag}#{Y zD6gg-LhAtcf;imbUB)$-oZk)1fGc(>hVZ1kbdW{h1o1Q+R!84X)Mn;x@&mTfJYOZJ RN{s*j002ovPDHLkV1i*jl??y@ delta 317 zcmV-D0mA;;0@wnOB!3@CL_t(|oYj*(Zo@DPMxPABc7gnO^cHpNn6X>j8}tadMOXC( zIZemHNAVFn1gL|iRtHHjnV{`l0+y)bdDk4OV5>E3jSnjRM_rUj#1; zDO&hc0Ps$L44@Mr2TEC{2G$3$qGmHJ9|f@N7w7XO8ZZtc%YU{7yuAxR1&tG0*?2z~ zxxzvvbKp&!2VmIwV;;oB6;pE3-(9>c4u|_FH=W1Bv)ZY!1niSjAj>QM2)O~ZZ51$C z{(FdzUjh?UwWVb~4zLq+pbtNL0zhL;&dlNdKg6x?*`Cq7(rdS)_5P&rM|c? zRoAi^QtN{F%Qg^0#%pj6aWj|zS|x^brJ{9ED6j?n8dg_ZzkN|RZ*I14w$VIaAPKI$ P00000NkvXXu0mjf-9C%d diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_20.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_20.png index 2aa6b53bc9781455c70a7e78973b3935552593a4..dad32c94d7b36bcb7aada9eb1741f27a312691a8 100644 GIT binary patch delta 395 zcmV;60d)SP1Em9yB!6s4L_t(|oYj-DPQx%1MX!^zWe7>7G9Up8ph_?@G9V=zUHJmK z!N|sfkokkIOzqCb2c#a@VT1)NmNG$vP!rVFk0Gt{tbPF=68q@h_uh?S;J>Z7u+Ks@ zY!HN6mpi9??E;6ELiwm$B@jx%fde0qtcC+uLorZOKtnT2OMe4lk15uAQ5KYaJpe$| z3H^;J1LF41eE|bUZIbsX17?4kv|~PKKOcSz9&S*mx|J4R=U_k}!H-9hE8gB=S!BA{ zIg3Y%d0YVSgc;{ClFCw0K?9d{@j!W#7wwtP3|H1*Fd0t^_)jZUHq>S_x*WPy7n%wb ziYYun*RRCqAb%tv*46+!r{D_6W@@ao;7tL6c#;>^H-%H!ioS_5{)5~+5{(>Yah`z> z$rQ&YL|YF`L1%I{*=CBpizwUdFwoLK&}5de_Pf6vOcH^4jS?6DCb33c?Fycj6i~DB p9)x<`0zpG*3oPBJr8`%xKQsGp2$1u}(f|Me07*qoL$V zU}R%K$h<*UrgmrJ0a6d_Fv0>B3rr9p)C9HlWk{=Dt51N3*!gts&$+UJ|F)9S{TI67 zf-o|sI>~C=0S+964p4VeAX0(@i2zV6hlFRK8K`NXVOYqD0e_+{Q>=F5Jgn;a0D!n1 z1?yu5#Lcbu3U*q;4=S2GY1e+{xO5tW&AD43cwAx=tW73#G4SS9Xe>}_ zrtk$_y%6t%kbi<$Sqp5RfGePynRN%mivj}4s3@J8LYA(gXXBh-kn0DccgaHJ6Y!y! z;^>%Y^PVZ_R82-(OtE_&=NoMXRtyj}S;)`?onH<{slYTx1uOuYI;}2u1b0gss5yT3 oBeUj!u%V3u7GBiCo13pcGy87{cs}k+00000NkvXXt^-0~g5nXczyJUM diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_21.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_21.png index fc2abdbc6c499dcb8a4b8bda78af82adac203782..d3e6562833dee3cc35726c76599721966c63cc7b 100644 GIT binary patch delta 379 zcmV->0fhdd1EK?vFn=%s{jNLX4}WPc!l(XmBRO9a;QoOjXC z6Ws7Fs7i?1G|bJC#tr6ijiJ{z%ndEbRXAXbj%i#=2w2ZEVr>KH32qr6R3)*&Ebx(m zkB)3;tbajR)^u3`ffF5<;@97yNLQXD)hHRDd;om%XOPdpJ5M({Cu;GxJ)4bnv|^Ii z+5MMZv5HOsG^Pyfsz^nB1_HDTnJ^Cvli9=z(@X^)ofHsySuTKm54->meDv)fwe{!f Z^#fPmcR0SIzq0@U002ovPDHLkV1me`qObq} delta 379 zcmV->0fhdd1EK?vFn>T0MZY&T7E(wg(tt#i93gb6unR+R|RiFp_E05_z$=!Oi&`^eXQpRcQG&% z+;A7<8JxPPmlR7GH>k!nhE`iIDP$p)q5?%>0vXp90oLG5|jL8q_oJ&gn+yA}zk#v)S1AE3&-K z?!U~66rB`kObP62U;BLmF50OIsYZz+E<;i{Xhsf?E*kKxEEmAO1zvy$9)0^oZN0hr Z`~X+qcQ|p}UZDU0002ovPDHLkV1g_>rO^NY diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_22.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_22.png index 99b0d8c63a1833b4a4b0003a7bc645ecf3b2a6f4..434e15a9da317f615d039b1890c329facb3f92b7 100644 GIT binary patch delta 412 zcmV;N0b~BO1GWQ@B!7KLL_t(|oYhmYN&`Utb0hC>tHvo~@or!lmPT>Os0|1}{qOjmf_=I7LNPjxC%)A8LCSfcz3*p@Q zNDTmmEjP0?Bmg@;#}f!pSphDuNDfs37D*orEv-9@0^YC|F(LtU5yT6FKisimGh;?% zQ3eo%X-@j!3a>3d(EDgFSH~3rSbe5D^5R+~RWxgqXwrsa+tz0yvAgO~pN01m36Ai# zR-ux8qAqV;l9iJm6vwPc1x}Gj z1_J0)Km~yDEj0iZP(T1SZJkWR$mI)gYcQrJYHH?^_!R|}WpJ$zl_y640000B!7EJL_t(|oYhl3O9Md=eY?5yFoax!7AcfO5R6?)i@;s5P^|n3 z{snt67l>e))+$zZij|gG!NSf;5ft4*u@O8%Fc%VcEiUn9%`b48-F>__A3HO^e={#K z-%L0rkadJKfQl;%1|Tv!Gx3ebE_`5U004AA6c$_wpD=6@Nq>iinUjFqB8>S~G0d)w z)c{c3bTf-10a?lYmi3WH?4Ekir{UeN1c!KC zty0Mz(!3BQfPV(^2Nl`{HtcumaUWud<~*kfgG23qDbQ*gwRL4wi`)rOfWhm3{`tbm zIqnOj9j2(JajU&|PN=*9@k9q^V^{0^HDNfN;CqF7zxR)OZx)f{k_n1!R-^)_L?lB2 z3@D%iz!*ynfCUr~fK5{;+c2*38MrYRQyVq4bBX-`l@n!ft#ro=9smFU07*qoM6N<$ Eg3!OT1^@s6 diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_23.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_23.png index d99b2cc630eafe8e99b479f85f04131d40845847..f8659b006acff739228e595584f6873e2d2ad5be 100644 GIT binary patch delta 386 zcmV-|0e$|S1DykqB!6T{L_t(|oYj-RPQp+W#(%dIT4MtkHDMvt2}ee^mc+r)(UC`B zb1|kG5?59y-@wJhxo&K}LYZ`Ms0oS4pI(PjI2WG4le9hku4O{8*3;-K|_C?KG zECf)G&x{cuY{2V_FnxH}`oj`gOHW#-N&ppTJyl|@*2+a>Q3QHo=V4Y(S z*YE^lc^;>i>Q^!uVh*sL)pmNsio#^s5(hv gfSnt)bLTeo2Z*U)tP`3@f&c&j07*qoM6N<$f=H6KNdN!< delta 387 zcmV-}0et?Q1D*qrB!6W|L_t(|oYj*(Pr^_XhM!vs)JOoMCM<+H;mGJ#NE{p;9r+1t zF2+zmeKX5T|t{a9Hit0;1AnDB8Z?r{82~N-&5KHD zK3BjzJ~Kjrb`4%%l)ri%PwsuRLaccCA6$g|uyjDfNs_D-qtsqT{3NDluLDF{sj!7I4z z4fFs?r{Dp413iTnK@A>2+^aNV7VaEHG}o*#wzuAm|-K%JI; zJ^^{m+rSW5_u)ECA*#}MhYhJ=w4nP5R?Xtch!s6gxz5lwx)$#cow2b~#!nV_ZR~g^!xlvpf zs#{glo{dFCy4=}clA`yUN3RdDXqisH>k2TbJzcDemVt&32~7Q2jl%wf$!YOCfRNpS q1sa~Vr=jfW$O3;R>d(w&>kH~5ZUHR|bM^oL002ovP6b4+LSTZw;JPdT delta 395 zcmV;60d)SR1Em9yB!6s4L_t(|oYj*-N&_(zhQCZ}t00{g6FiNwz6Q(0}NNiuq2()HeiJ3tO|7 zBLK1hl$JI32vFOB(=#E7U!bf-*37X<-jo0|`t4W=377zpMG-{R>^RJ%f}*SdeKGB& zo@BA_LrdViho|boR3{&bru48zX=%ETy$gCG9HR%Oowjk9cKjjd#qwiXag^WHTuVuY zzP?F8($00eiGMJ)a0T+}Xs)c=WwR;5qG;TH{CdLmpYsH?toah(AvvtUK*smZy{K0e zuG=NsUg(L6WcBc1MVdZsoeZ9PLNXVF-w|NO_$FT!lA(c532gOM69|bSW5o9WLiTbF psQJd7hJtV0dHFL@e`YRS-|8c70jlT5fdBvi07*qoLmeOl?8Re`Kc$`(t~c?G&9rS6tfiStn9|5_!F+5-9@xGARyEMAmww$X5JV z*vIoq!_`-+M1c1e1uv3VN8pvnDPy=%> dYVOU=&JWrVaiuCncp(4)002ovPDHLkV1mn9t#AMU delta 381 zcmV-@0fPRl1F8d%Br0)9L_t(|oYj**OT$nU#m`Inhl*_#9V!T|PU7S!h$f5F(T~uN z5cg=4kxmwWn9@JjA<~{_KY?#a-j93lIp@Ly{@bx){jP$n4hrkFF!?i*&nB>|ffn$_ zK-s`h0|3OMnJKRv7Hq0W+fle25?Bb{?TSNS73Jt4(MyB-#dx}Z!NdoAqifI%0~k9%!29R~>Wo@O z;vR#1D46YtWz)VirEc1PWL>c4Qpe&sLGHVftdw~YcFwJ%(T3TsN zCP~`gaHrxn(`M&Z^T&d#NDs(zyQmg}atai**}lw@{NAWPI~SLn9{>Yzt|KC?3jhEB07*qo IM6N<$f;~#RW&i*H delta 412 zcmV;N0b~BS1GWQ@B!7KLL_t(|oYj-DO2beXh0je}lS*loM(EZkh-=3VVxk>f94fwm zo2w5Xc&mboLx+w+`waR31}W&~s*BuWMVt(@NJ`UOheCTopTN5$`8fZ7&i{uC{I}zV z$#3DCNsuoqHGMOtj}4%jQ23@?VukR4aRLBHNdg9dWuHLC2Y*%-^(-o2XN44YvmC@# z0$b0=x#$)Eke<4{J>gRk@T$PwJvF_48R;*BW=*w!bsz``_s0zdxoDsRnnl2~thAQ2 z5A4~z4FmCe6hqE(7_rXQT=uoeFl*K9J#YQ7Hta1jw68CBVXsTDWub^A!gG18}aPYro?F0000R;DSok zCJtzCCk+SK=JCqx$(vb3FmV7-h!yZ+ShETgBly%YwHSiFQh(GRx6{%-06qY_r+4cc zO$9b@ddRWzxEP7td&(mlLtXD$xD-i^0wxs6jB1g$lL2ZM!(pZAOPnkImdD5S(Ue@_ z;g>eR<}C&=p-TA%h;$0AgILAV_52b~3Y_UgfUa5tpqTOcGPbuipVWB%Y>XKY0B)5> z0ly^5bc*RU=X;aQJz|*ZScvAHi|o+id_oAtI4uc$#j5B0L1Z*g3a~^iZg~ZM> z2e4SdI(h@WfwkS!#zxR1tQbfNkrf12qZtbmcb++cQ@#E3|CpI&;J;OryWhqJE>Nr6 z)B!rJblm}L*j@N}c|R60j2!?dB?|BoSh5Nz$MCLWnh6A_ihr?s-^wc60QdlG9^5Q9 zLItc`_K~jgI2nrEddedo!K$9MbS9D+1(--AH%cNe``4&h47;_^m!x3)EswX0y$J=w z!>=^Jy8AGZO8EqcbqejBM6dAJ^D8_k;7}(59IG(^$~n(ZBYS0wPL1cIwk`l%DUT9< zMU?3T(+{VeO?f>MnCMuDr=GLy$l|OJA~B96g^xsOj_yQ;*NWk-!=SAgyIUe_1I3Ua z`P$H?X?*_rI8c&i4)s$7EN0bS&{mRh2Jae}w10oYY?x}#X~5|m*cf*ib1;Zx!Wj zQ1s$>c5-H~bzsL*L^b3r3wWVo;GhPC+U{NT=baj;DX$2q0AfOOn;7UmU15Yok z0K#5+a?(c+h<;{sl^KrwOfYZJqNU3zE@V`0k!i=gCw2;85}p<)^cOI%>~tz8*PH?c z9g)Hv%ju(l6n}XH5K1w?+5uRBu-r5DJvbCl@Fyd!EQOD delta 395 zcmV;60d)SS1Em9yB!6s4L_t(|oYj*tPr^VLhTkg%OvHl0fdNxACOSGg*>1S{3tUWe zWOE^=`~y}e+1*@Curcm3>Y~*}Cv75uBglOY1bHv~0z0(VC(rl2_g!+pe|rLL|EoA} z1J6&A>B^aYHi13Mh^xq1E#OCrfrBa#Q4a^1#ES`JV_-F*l7Dgn1Z^_b+J3q}&2<3) z+XuzMO`U+cxXL_%KvLi!kffpUJ5XUNx6%hJ|R3{bBD zeDUAlJ^>$f*7fk1s61f`IuS-ClU)HFFrgKu)N%OLNdiSHO9$Arz%y_UUVmQHpEsA+ YHwZs~x%nM6ssI2007*qoM6N<$g4VZUDyqfEMp5aYVo!OWVOANeUXk)e{aJ@ zO2ZUl0SYiWNDX+2C8v9u}hDFEI>G)-zR2%|hJ;Gm@g<@_YikgunfrLCbDpk4#` z;@99l0UveN_3)UeJYfnt5k@5plV1TGF(I=!D0LkE>m-4qm8Ao0THqPD2d_Ub>d%|Y Z>l+9^fVo6slLi0)002ovPDHLkV1mP1V0r)m diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_3.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum2_128x64/frame_3.png index 0f8947ae866f674c3ac0bacc3772ed6b43d3a359..6fdf1e1e6f2da14be508fdf55a3ef158328b41fc 100644 GIT binary patch delta 90 zcmV-g0Hy!q0^|aaBmpatCB8YpTZHqVtO`Dbg-KG})a6Y87rqDvD9Vaj1bzK}8fK*n wG3>L&#;7{ZoNuH{3%!WpYzO)pdT3?TlN$jz5HpXvG5`Po07*qoM6N<$g8SMfTL1t6 delta 89 zcmV-f0H*)s0^CLqY9xLxts-4qOU*p)^X&FZVPXgy}T_Q%)_Ak~YX^@VyA6U7PIYa7&ZfDCsd zIvDatC9)2CG=J#dRuN1U7Uwxl6ddv4R}7lAwzVA_X^}f84lwxrPh*7u2Qw@(rG7%< zskOAO|Cx1f!g1guhDmr#` zs*{_JI!R9#$4-i%V1`N;!J`x#ZJKk4w%^fT;7z&5d++<+m-~SKcDzWxGm+7OoGn5P zC>KLV1H^K5F8$)Eg%6B00DuaJ!bCC5`GjE!85U@n#SrkCgnzNrEXvLGUo`-fcI<_l z3IW*ZC7wY5-vO?!iRp1isU9a;jh0e?>915=Q1e7?-H&qklGd>k>&m0_-LM=A|JrE|H8R@I`^73Z&zh zgfWEHx)Ojz+RFW>Hua49wmr wkH$hhAL2%{j}D%dowLYTf%2kqyuY~;FUJNXs1n)Y8~^|S07*qoM6N<$f;(qd(*OVf delta 195 zcmV;!06hQl0rLTnBuu(VL_t(|oYj*t5`sVsMc*cGcb9h xJR0+2KE#b?A050ZJ7JFbB(VpjIkpBaCR2mV_WeSCNIMGUTrzKy`0lt#-4>V@2ZmD)=drpx_aDz*kxJAdiv&7{yn#u2!>gZb1d zS~$aklbC2D`Cukd1fUX}0ik}dJ1PKIe&6Mf006T=(xCN0;Q=rJSBB^RSi@~9>D~X@ zb_pK_Xq`bHrOctTiDtH=VpjUv7H!;ehn@b7+G{mNvE{a-v34Z|Z==E=%zl|U{mIE+ kPq!i2mt>=oofkXCCpk!Hg3i6yV*mgE07*qoM6N<$f{D3?fdBvi delta 289 zcmV++0p9+&0=oi`BYyz`Nkl z0jY#oXHltXA^9vEnsF^yA~CDv>Cd;n?ScPRSsVVl@+Jg#Sz8BSEu{f?k=_G~OgdUH zk<{n@6M!k;N&~I|o()*AOIR6@QoNBGuu^@?!mRRil(M}6#eYG1J((6-NEm@D8<uK5B!3J^L_t(|oYj-TO~fz|MW4fJ2^Yu_B&1CVTLBw7p#~bjoj@m> zQgYY=EG~E@%jOU#nXx7Aj1(t%`ZM;oJ@DV+aU+wfyIyxg)h|^?RXw-GFO?-hiO8RfL;wH)07*qoM6N<$g6ds^Qvd(} delta 299 zcmV+`0o4A*0>%Q6B!3M_L_t(|oYj*-PQx$|MV~`e!UnPg38^_kPtb;&a0V`bZvr=I zj*>+WV0D9$ESp7~X2zCa%}8;QrCurlS-```L8>r3 zUCtp{;Zf*>;q)E_Xb9eAxwD6{kW@&OgXv@yh{5wm$kjIa?WS+#kz)8gN3y{i0V3(` z41)+6u{T-PqGh^M0(y3C$qI8P^O8e+ x3Bnw=f(R61iX@v{-Sv7Js(Gm|N@OI89K&>!EE?cAUJ0xj}JnuuV5 Q4*&oF07*qoM6N<$f&{0L5&!@I delta 318 zcmV-E0m1(A0`dZoJ%7A(lqu#AEY+sMJP-V;`<>F0{Hgn zKn-zf$wkupuiJXix-i3hlw?Nrv1NNAL)P#ua(Gw4rqj_UW6yT@C!VHDBwqDI*O|qq0)qa#BqdD96R9wSqQ84qF8P?*s?{N&!M3l4(+4 zvJ{GxtR7zpU@4N_Zto2khmmRX5j;H$KnznSdL{F|Hd0|BmVYturaQO5F!vu}+f1iu zdZXXn-U_RVe`X3fOC>3Jb!R#i7gHAy~-!Ahj_sLScdsf9UckfbYH@ zG!UnjTm*gix@`ufi)EOPlBrR3Y}lMgmkPc`4DV|ARNb!OT|5-I@qYFy72f^KtWa38 z`fMfA*1V-hD>S#DQt(?_ymk(d-my@zqJPbn~lHRvofIzc0*G- z;9yXu4lw;9s6DSvk;BpffYkzc07d{G2xXZB7)*pBVKnO>3V)DM#H-ah8c-S~%jN;x z-U&bisTQ*`vUaAVB7;cgz^dk41I5_R{d$;2QMFF{)oagdUX#6M-1a{9Pn=ExxNtyr zq@Bh*KjL~bZ)^DFo|Oq*upgSK z1CDyr)B&bj1eN7gDRNjj0I*sB55NfE1EDOF0KJLuNEpn!$A1E36!Ch!i3XHL$+CF> zw|4>%L8^sT2G-7%^vEERIk2ieS3ohe3%?Rmdz6jQ?0RE)^>1=e%WdxC@XYBHfJ+Bt zC)#Pu^CQOFAs5?VEboIPi?|ma%JZ??A=d)f`fET5QIe61q*tG#vemj+ieV6^%IRat zvLi#L@GWv!JzIwlN9{ShiHG8JW^MmLcbnUu_3wu0000bmAyfDf8dm4<EC`Lz>B$?zrKsKpUmRDXQ9zHQ5MLMm4TH6g@z(^iitAkm$C-- moq8M7(3qFTL^Wn^yZ!*pf>bol&hjDv00000fhdS1C|4jB!68=L_t(|oYj-DO2beThQAxrCdJeSbm&ry;Ly?0K}ZD$M@PrL zg^Ng(K0sF|eF7K3`3ep`g5Y2a4h{|(Dz>)fIy7m|ZJxjbNlre_`A_~E4*a)>$M(C@ zo((oUJ+Q!DW6-pKu6L{R%$ZAcU}^!tBmy`9T7ZfMPmb9fK!2kzDz^IDX?-667l7^K zMlhQRpsw#w2yn0q5BEYNYeO>;Ub!(QRT9L;jFo7?C?DZP5u1@aHdP3!&i>9VX&COz5~iJvjy7d=>PT_Ekz4`8+NwX3B9fLevMi5*jAI z3Xp*xMsyaUaCG^7mRW9BLJ?Pkrb4tZVN#PV1NaddCQ0GTI`vcdNQCOq(3sYfs91kX zep`_MFZy=$`Yy(PG7Q(Ag+@&WT~D@5HB2SQ639B1nV>6w6h=eE@>|-5(!P{7sL_t(|oYj-DO2beThQAxrCdJeSbm&qV!J(t0gOCaij*gCf z3m1_neSoe``UEb5^A#L?1i`@+92^`nRBUa{b!cKvnkVo;a&JD){ZIaTIPl*hoR+_p zcFJJG(Qygvw&HdP=;oll+*wPBKFmu1Fp&TjfEJ*p!I5P)V}EFkM8?*rn>60fhdS1C|4jB!68=L_t(|oYj-DP69y?hQB=z?ofm)ENF;lVnIo1VRD#QSXx^0 z2zEBctcC}mwbCcBF|l3~3m?J6!XvS;u%N&Qg0~hNFbhxMB)d2FW#*s#@3QdUA{n~x z$^$}<5DcIkIhkK!sHK3;DL2s<>D+v;7hf1_yRVZC358Gz7R38a7`ukU<#5 zwC194`F)l-ZgiJIkrc}{g=k^Ks3cob_z@ab_uL>7_h3a9?+WM2I*m%>w^;m!x zb31r_7h^x^MQhJOqh!kMK(>qxj3vl4WG%-`xh;Pb)DvTDfzJ Z_yb|)R+@S(Uu6IQ002ovPDHLkV1fguvq1m= delta 380 zcmV-?0fYXQ1D6AkB!6B>L_t(|oYj-DP69y?hQB=zI23`xf`)h|7L=40CWncIrKKg0 zU}s~@YIp!zD}4eR6YDjx@DWTbJQ52F3kr-Ncx%BOHw#bTB)d2FW#*rq-3L%qN`lDRu@Wg*7050WksbL~i-;t1vaeovUb^*n(ssSH zOzT)l(J{b<(C`Tlv^a;YdwxJqRslF)2EDv}HKZN}JmwKI<@s148US1g4V$hEBoNd? zI{BS)`F)nKTy<8MA}UrIN<0Hhn3QEo3_n7{>LGkNw|)X2;-NSkSlfIO5gTv%w;2lX zVs1yT@1pD{gZkRD&?uWqw%Q6B!3M_L_t(|oYj-NZNxAPhCdmG;{b=i<#krND{lik8)SrRkyhCt zBYBh?K}CT0fIBIL9u_SmeF*5`4(!!cBs)UI3~%a9APlL2^RLAGJtJ-Vv5cykxJn$f1#0Wjn(hOB#V x3vnB8KqxjBvm|@T)myKpp_-R!qN<7e>If@lE4B!3G@L_t(|oYj*%PQ)+}K%b*11Zjm*ZWq&0a)Wqpz!A6wt+@e5 z%2Ds?cHwegx|~U!j38JCvJJ~_=&Ifl?6=6P8C`B&EPlO`%d!X8 v=(hn6U_>#yNg}Rhz21guU#g9&c5ag!#F9CR+^Lza00000NkvXXu0mjfl)Q(; diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_1.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_1.png index 485254ee152c8f55a344a7c0b43bacf06cc7e779..fbeffe5425828c959c3d37fbb61c80a88e7a20df 100644 GIT binary patch delta 308 zcmV-40n7f*0?z`FB!3o3L_t(|oYj*-Zi6roMV}EOR7z8p+2QWG%nhJ7=n-;@Zs`qr zBp-z%u!vNmrnrl-!2@mg9m&Rin(y&29{6w8jCya}PJ_eF^$MIG`lABw{#?i^lOtOA zQ~>Z@0x|%XfE*wVQ_WNGsHg|V1X#{{Zi%Ed-pfJ3qb>$ALY1j*3A5T^Aim-)& zF987GXP^ME87KkrGR=L85e@CglmX3Y%QZ_e%KNZUj4%~gmwy3j(79Gx??;tKXsGj} z<5gS-py>R$3}Rx0OHTUscdv-k$8(gM{>R}}iImwA&@a6JMOpJl$_g~v2%w7c_Y@yT z0uJg%V@NH6_s=)?!yZvvS8ew}U8;8B@{p$t#7+j_`w?UtCV3myy~X!8QCHKBsdYg- ziyJg8!8PQ~z$^h6AtsF3EK~vNV^_C&-|J3YT>_GJagZb zskxvDi39r3c7TDZBT=lCc>sFt=DQJ~VkpbxU^fC%0rtn;l)P6TfbMCl!BSK?Ik&d> zmZuzEfXM{NdJs8{-dme031Vw!N~B;_Ag55ocIsO#BC^scpL*qa#WsIFD8}`QGQBe; zMP~pvLc=FI(xML=dVau2Rsp!)1fwDwP$^*)@VJgxD$mCX(E#91XxL(vAcG)`7_3C$ z_WLSxrrj__Ty3-!B855gx=cynM`&1`!k6>cFX2NA)#Hh^ohK2o_ojb4kpM5|Vfy+m z%6>8lcb1CRrdBmq~EB{hFRB2iFKxCkO4!AoH~o=r}`NV^_?&-_0#*1&(Wc<#O{ zQ*(hPOdOyOZ3i$=btv+)HV;6TZgv|1R1Aeo2JA*aB7psIHzBLl2cUb}YOoS2C+F7Y z-?Eg$3oxkw(jG)kq4(A%N&>O9b0t!+Dv(_$VmtG#77=OT6i>bOy!?L}ALQ+NxlHd& zNzysMjo|Q!jI zA^XWR+<6upb<-HuWXd?wz)}LKhIHUG(-_Jhg*8xd`t7$S?lv@Q#@&~#joR9|(*6Lf W|5zNLxRWFR00008IY>xQh6YjQ z7PQL^asxQZ78D!-i2_HWprCLOL_&g>!s}#~zyTO(*W=Ig&%>*Q|7PjJe^;jAgEnLy z7(&+r2I^i4w>B04=&f7sMu3{3DpP{}1jq$Aoc43dUPA!-=YO4uwWxA-VXgaCN{%nV z6ao|jNW4aGt<9ALskI9wBv{pyQz%k953LpvMdegaz3~FKO^@8Tfh#i@E16WBLEuJA zPP70v4nnUFX}<%N6DK1Xu~tDSBW&}B1nX7>3TVa&qp~FcZa%JyKgzn<(t6ZY2nkD; zEh)+1Q}&^AcwqPb`W3utk@a+DZSP)096al3I;hJnmNvC1N^lpE-(pI_ds-@v<7QO~9#okwMH_-cPTsRGaLVfON-(ta>a_MTLXhKoma?Xq;R z)F8Kz54~pMk$xz|LCx#8--RW>;M1& diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_12.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_12.png index a595af018482461a02dc8cac7394a9347ebefef9..07989e7d2a095db6ad51fcf7a1215e1e219703ab 100644 GIT binary patch delta 347 zcmV-h0i^!*0`>xsB!4|gL_t(|oYj*tPQySDMc-OZV!%pVP^63LQsw|iHWCt)&_tBE z1?_T!+yIWU$DkwWDO^O5h~TC0I+;n}0F1Qj@%PNm|DGNAZ&s}JyKy}Y^kJcZ2@DnB zpsS7uYiALF-Mh{11kiD`Wg6f#2Py%a&qoyv*BF4&?I2|`9+W$g)-wiBM%ilh=RoY$_l_| zQLK1K`yDV9SzgMBt%+h8;gf?Dd{`||Lz3l`4J81cJ|F8p$_8ykHys*83L7>jGG#&N zWZ+>dsMKG7I8?ZF*UN+6p1s*`Mg7&itW?B1%Zx+-A7wft6Tp|Fy$|7jSZKuV#H2IX tD7=G?(mNR}^fdH)PEkLesH2(N+YfghPD8ulIj#Tz002ovPDHLkV1hHDqo)7> delta 346 zcmV-g0j2)-0`&rrB!4_fL_t(|oYj-DPQx$|K%b+u4G^^%7`ioV9s2=D4H6QJupq|% z1*`dk{sDZ7KZA{QXUI@ND@x1|r@c$X2VlvL^L*#K^WDLJ8}p6+H*TQ85K0ARFjl}p zUtJOAenbHFux(Z+K+n;dX~1a?R05nYCl!saF#wa>QOZtOxqrF$KAbfwmk;1-0qQB_ z%F!3^Dax0lpn=J%swOK%s(37cxbb-C1$Q1!LjdP+YXATM07*qoM6N<$f{d!52><{9 diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_13.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_13.png index 994e6b57f902495e4ae1e80c20a97f152210afc5..943439d60be73ece49a217221dcfee93b9f5c9b5 100644 GIT binary patch delta 316 zcmV-C0mJ_10_OsdG=Hs70#uNJp0CBVZVxgxHuSOB*>HoI3~&(peT zz+njl1x{zr}4hU|Ip%8B~#@FMrNiB|+`nMhO+1Dr6Lj z+O2b^g+v=R;j8;y=9k5V4>$8>X7@^7Dsqtd5UXn~fGe}Sh^?e5DNvTOYNW(YWx14a zMS6$xGk_L~vZA4Xb)LVT+CR*OCmf9@3ZcT5?U7Vj;xp;}&=zd;>W@j$-K>(_p1kXy z$n`h#x{f41ST&Ut0(>?=DZsZOt_M-4A(*6+2em%zhC#m!I%?2!`|%5nRY`YA!b{@- O0000=K}bO>#wC zlUaaf-Ui<);H+f~6M#zxcm>=XN>9i&1E74m-qNcmk1rzeTYsS3zd}1GVAz9868#YI zMgx^dXA}i7xmIDQN7$&X+H7|QMd8HhLQ{^!O2#}I4?g+p z-JMJqL^HybW5NQycrmPAa)Y7=;T$eucu)(FRO`K&D?B1a^*!w Tp#Wse00000NkvXXu0mjfN?MfW delta 320 zcmV-G0l)s-0^0(RB!41FL_t(|oYj*tPQ)+}MW3y(1hj$_6x$_qTXF!TgbGS%xC(9d z273dplB4VqTp*E^f`=kbGIqoPuw=)1p6~J4Gw|P9-N*l?yNtmNoFec5y9ji!iM9xR zZWf?jrsLQtaM3Zj8Nqc0I0f#GrDHs620;08yJb*bp5H{m+J7i{e22~};P+5P2mKUr zMuS?UH%fw-Tt{K3x(ecO3v!*IM0;o9J4|7!H6>J4lNv3hD1kiuqp>?M_? zz&MJk(H4WTnYNHT-9tj3fQP)OXqa!E!}o{(!|im1o9)h^B%C>4X~~K3lHnY!0~g(T zpCnyllD9?LpE<~HMd?rhQOrY-^eGrd-2yy769toG@+#NY)v&6URYk38ZfU=Ak?c&K{XHJr1OLssG5=S?c@D1NkbyhcW?+C-wnS)? zRRCsoeLp1NY#@g5;8FuN0XO^B;`dqu&^}$SIVDjZUqr%~mw(*9!r&6%cA&G3eu!9= zf=*;qi3CwinuVg1&st0}!$l{4&E!>~+uw$Cs}N@QtTM@L5$Fe#fvRp6GYUxoHoDJ% zs_MTb5?TZfnvJH1c#ff&Mmuu6NF@itO?n{4g3V5STs*p7E$$XE z-&tHuYiSa&nKHT{8JFPXbu(~)Pj*UX@sf+TURFaKSRhosO^&h1-$scZX#;2LQBAWeeOt*+(w$DmP7H0+M2O~gHR{SB!K&?9g zR8jse@o|p8K~-xyrc-D4`R0CDBj(nw)|-&s812aMB9$D7HyMC87OXh+VNrCQTHGz( ze2KW4#!@Aqo-s_63`=kdx*0ftP9(Fa!_^f=J5@dPC!REok)8C0000< KMNUMnLSTZ40+K)g diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_16.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_16.png index c1b9db4f72cd965930b94eb87164552ec1df1fb8..354d1dbbc1b2ddfede2eede0bb2bb7f030e40bda 100644 GIT binary patch delta 326 zcmV-M0lEIA1Em9yXn%D`OU^M*;9ZjY<2&CuU%~{Y`p26VYo zNZw>(;RAC902oDp1OQDyUIR95vmOG~fG9SC#<;u>0I&c6jni?h6wxmC-c*1n4w~n0 zpHBqDI~TQ+0m+IxV_ZQ&)0kU9N?-}QN3saC%vUW5BbQ~8KY!amg#d{t*j~h4OsZOK zLrrHM;9L<83*M0uDKM_I9CTSX0GEG3HyvG!ebd@~2qk%ljo7slUzGOBkvvcYB Y1=GZ02FGTw&;S4c07*qoM6N<$g5Xe)qW}N^ delta 326 zcmV-M0lEIA1Em9yXn%1?OU^Y<;9ZjY<2&CuU%~ccE<)RBRm@V6Pf(89ymL`I8L+IlBXR`?O`==DN?-}Q$Fc~t=&P25k;^h^K7ZRlg#n2u*j~h4OsZOK z;-)hXaITn#1@B0S6p$+|2VJ8ZfXlz2n~pBVzU#?CFI7ZBS|DcXguv{Ed5}te))K^k z4!QZy*2<#TheZdvc_e2|tRiZT>PEFO%rcrVhj2;xLIUcH9{e>x3-os+u zW8hUkj|QVOK0iJ%baQ>?QPic5%}eGQm~#*-Aoh(>OCA0_KpMy!c{AIP*_X^lWp*w- YzthBG2J6&BbpQYW07*qoM6N<$g2ObFKL7v# diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_17.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_17.png index 1ba8ef2b6bd28b9061f4226b4fd7a23842fd9bb9..3c2628236d84bbf3d3719bc3470a4891a1d1ccb7 100644 GIT binary patch delta 335 zcmV-V0kHn71FHj&GGfMmH%(28wXJ_Zg-WXhyVgxaFoU3@Pap*s-FyJS3=X>0(Km2Z zd;qWF(9uySVha@<6oZRGW8x4Y=b9(*PRWn&obP-G4*a*b_GSJn?Uo{<7j0k(4%nA}gnUwX7tlYv(ktk7LE3o@~n<#8*F2Xh{W9K*$X#qI+3xq=Xlxv0}z_N)Fv8`s`x=Xl; zBJ!}67(FDDE4fm^#Yyo)D8RZ2yrgG(V-Q>}YC|#ZS0}_`lJRnfLBogH zK7dzo=;$aEv4si_ior#pF>#2HbIlWYrkju7IlpsGIPl+M?aTaD+A%@V(LDn+OT8Hb z=&{yF{IcQ_k(4%nVpdN5YFSB8*Uqs48l`?mB`%6abGi}_6WbEHwkK`b+KGx{e2ee< zc^!}Y+o|`m6^Rt}wF0}(w~4~0<|1sPGIow5F)aWGe}PaapK{Gm1XwmvBDU4+TXzXJ zQA8fL60L`1awS(PxHu_(2nAR-ftS=wZw!LVMQtd?{py5bSTbJjFlbmZWxG8%msQvM zUS{r2C`O-p`MH_^5Bhr09f;rXO23@xh#GlaXgM-vs9`8U=t1Zjtrl8xA4D3m$Vgp7 h>RwV8mAbhkegJ#XV*$+kpilq+002ovPDHLkV1mW6nppq< diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_18.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_18.png index 91c6498345a4e7b10f6567735bce89dab380cae4..09842061ad63b905acea7cad29bca7b4347e953f 100644 GIT binary patch delta 409 zcmV;K0cQTS1G58=B!7BIL_t(|oYj-PO2c3jhM%OZQLJtK0jspMSg;Nvjw*r~#5#Hf zQk?4M1qfzvaI9MeFThc85(Ga)&`l7BLKR!6xD*U77FrXB2syFf?wOK@_dD-<4jlMz zwbBm$Ysv_Mn4#(cFdwfc13(QG`@ApRYhgks007q#KnG9)M1K?*(q^;{@v=~il{5Cx z0svtEGV69K+LbOx*-s6jSk7%fzn=@>Ozor!H8CrPb|#@okW19BzTPgBH||eTt2*n7q*{9ktMq#9E5cOP5VmfDFzibgfZg9f zC^Q?g0Y#UsNq=15*6mN~RPIe*;aW3~nuzWYnkbl5L{5J6VYHT2v|&qejzoL}FzHWFuy9Tqc900000NkvXXu0mjf D)^W2F delta 411 zcmV;M0c8HO1GNK?B!7HKL_t(|oYj**OT$nU#m`Gy(_;Vm2dvVPV!?J0>8K)@p;$*h zffT2@`2hsq;NV!d3Vwi&ijyGt5W#MOI25XwLdB(EaIw&s=MW+H8F2Sb$&d5yIrqW^ z{#&gN)qf^*6(n_GDWIIPG71oh+L-sHc`Zy}qyPYt6QBWrAb%ht0G--QSwN~m6w?jE zPAmfe!TT;6*WFU&Q!tV3?1p)5-UbfmLv*Oq`(u{(F(2o>QO!eB#cVQ@& zXR_WfUQ@U$l@gs6TlI$|0UEyEE`>MlPg34llq4w|u7cNJZ+t}<%?%J+nMN2mq%Huk z{~Hhmvw^&#aDT8f2kG0&XhuWx-t-lcmmV33?jkf>HDQuz&z_b(=#rt`T@6nE*cjlP zF9=Y@gl$ZcC4)x~oT5gbY&ZHXP85|M59Mx&V*JI5GBx+i~Z46x7V1*l@&(kIB0!AJM(yh5LB)jD-f6s0y- zGq*%B_H0HnSpu5ky3^{AU|qD6YJ>EMh-gKlPx=DrQ{ZsGF{G%`3f%`>0fa#-a1DWb f30zd*=KT5rt?+6g8(qmD00000NkvXXu0mjfvotwn delta 125 zcmV-@0D}Lw1GfXPLIHKUWGHu6-IG5y2H5BG0#q?>=@Vqh;G=tXUZGF6YMnYKic*`a znOmY5dp0APECEe%-D!15urAt3wLyABM6{yOCw&3*DR4O87*f<|h3*5c0K%XZxQ4*J f1THFYbAJ5*t?+6gwOAXe00000NkvXXu0mjfqwh7s diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_2.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_2.png index 864ff765add041a1e6a5fa26a94248f0d9d172ae..497d6175ba9e6d0c5d73b9c79f12d7f38c174706 100644 GIT binary patch delta 319 zcmV-F0l@y)0@?zQB!3}EL_t(|oYj*%ZiFxpK%Wr;BJGEg4yQ}GWje?Wa)iA_TIU9P znv@Yo;RqCw!YTx(u+5G^NuQB0LCLgj27hnw0#HC@M6J};4oX^R zC}a$*@_Ppqjr~YnG2UVhO8A>aOZ;-V_vMEBczBLZDkK2?WFnBH#mZvivH_)TBcPJ> zZx`#o0A?skO$*BZ#5M(AbKR$1%Ag}#{Y zD6gg-LhAtcf;imbUB)$-oZk)1fGc(>hVZ1kbdW{h1o1Q+R!84X)Mn;x@&mTfJYOZJ RN{s*j002ovPDHLkV1i*jl??y@ delta 317 zcmV-D0mA;;0@wnOB!3@CL_t(|oYj*(Zo@DPMxPABc7gnO^cHpNn6X>j8}tadMOXC( zIZemHNAVFn1gL|iRtHHjnV{`l0+y)bdDk4OV5>E3jSnjRM_rUj#1; zDO&hc0Ps$L44@Mr2TEC{2G$3$qGmHJ9|f@N7w7XO8ZZtc%YU{7yuAxR1&tG0*?2z~ zxxzvvbKp&!2VmIwV;;oB6;pE3-(9>c4u|_FH=W1Bv)ZY!1niSjAj>QM2)O~ZZ51$C z{(FdzUjh?UwWVb~4zLq+pbtNL0zhL;&dlNdKg6x?*`Cq7(rdS)_5P&rM|c? zRoAi^QtN{F%Qg^0#%pj6aWj|zS|x^brJ{9ED6j?n8dg_ZzkN|RZ*I14w$VIaAPKI$ P00000NkvXXu0mjf-9C%d diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_20.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_20.png index 0c3d6f79d1a6703dd2725109f582f43fb2f4cfba..ba27d9ccea3c816275b0a08af8ad0bb0850e4249 100644 GIT binary patch delta 31 lcmdnMyn%UxH6xRt>||TUWP$H@zIHGGfv2mV%Q~loCIFm@3JCxJ delta 31 lcmdnMyn%UxH6zo`l*zV?$pYJEeyd;r0#8>zmvv4FO#rC<3S|HQ diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_21.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_21.png index b3ba2976cef33d0ae94ddd750f644957a6f77809..f13556a0f71200f765c049828477d5436be0e5a6 100644 GIT binary patch delta 388 zcmV-~0ek+S1D^wsB!6Z}L_t(|oYj-PN&`_4g}=K=T!Z=Z2UJK%P%v%mLRd+V~1WvX4ac0gv0|Wo9wnxc- zW!xkvxu%~0t#W@U0Zg$y6@59;2oJ^y09Y-617HNm8E~b|e19Lx9idq0)cxWH09gR) zdw#VLNSCX|r$Q*UR*#?G?*s@}PO7^-k(EooUQrUP8uuarn&m-P#V(3wYq1)IiEIhI ztd_RyAKH?L@9>2(QQV)GYOtb3jW*%v^&wV7IG$lE0Oukt0H>2cD3m{`2;k2bAgh+G zUB`|#jIbS6H7)1-~C7xPn%Y9%Cw_2zO<;8eRm{xkobSqA=FY!1_R zWxO;fd#0BH?MiPU1x%?k5ucp6gb$+>0IU|k0WbpO4S3RKwtokeu29T%>p^J^02hGz zPEad`(&eJ@sSt{d=Hc`EjR4W|QEmH4^vZcquPO2(al1b+)nG-68m_~^>s_L7f5-L%Y!%>CbPK@oI1maIj4ML;^969# zqP45|iNfk%*M1m8N8@<=*g3?<;ax1?%+~Z z-RkSy(!Eejz4Qu84FMj_?cix3zTu62HTNKD6il(>$&`_Skpz*3$WJ}B*pc(V8ptCf jvkjSj$!t_+=aTpajA3FoiAzsr00000NkvXXu0mjfrvkZ3 diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_22.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_22.png index e75565d925ceec306320585f38e1cc8c2a48f0c9..4f6e1f946eaf416aab55c5fd12bdb2bed83f98e0 100644 GIT binary patch delta 368 zcmV-$0gwKS1B(NYB!5y#L_t(|oYj-PN<%>qg}+U1jKTc*2NnqlrqI&TLNJA(rB5Jf z?R)@{TUc1e(l@Xad;qtw$Rh|ryn&R0(I$b!I~J?S?7dImRJ$K%&g@wj_-}PM@$bgw zeNfKZ$OC(oXv+h()LC+;jI(IN)B}Ko3SbX&-<9fX2zF zR-EZ6cg?XuDGplauOE*J#M>9OZ%9H@wDvMzkYA#HMME!zOC@b(w z?OYa^hRCP0b*7UhEMF;)z|EQisRCT2TpV{ND6h&bq_ delta 369 zcmV-%0gnEQ1B?TZB!5#$L_t(|oYj-PN&`U@g}+HQuEG5I2NnqlrqI$dgo%Jqlz+QQvDK}QiY)*<0P3fs zYGJ0k+&9Jsr8sO}ynQ|?5ba)8Px>k=cOn&|K~v<`C{sLWt1O0nsK#M3$yv_98I%;5 zQ~M|LOkLzFwvA0E4OqQa9^PVXb08If8{GxqDhZUrjFO5OfGowSe;~o4YYd|Jt`t1N zx05z;40|FyXKI8q9UctpA{#nfFb;mUos#qJ@F7q&$AchSdr^wD_b^{;DDY~ZhyCGl zcziIZWP8dZZwnn?mrN~8HHZR;+Rj%C9X$`kLe9yX+J@A=q&6zGbIbD!$iZBZ9>lT; P00000NkvXXu0mjfDIufp diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_23.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_23.png index eb26fc14b7d79f4da154060909a41f985ca23c9a..7ebec35fcbb8f5af9f25f3d2d814dfc3c95b48ca 100644 GIT binary patch delta 342 zcmV-c0jd7%0`UTnB!4(bL_t(|oYj-DO2beThQFJp2C=b%4qZwe92^}Tgl2H?5ghX% zBKHxxI_VR*2+ntK@DT(DQ*dx_$e<8x%yGD-IoF8J9tfO#{O3RX2?zdLO{?(TxFiId zi7NtdFf2v^aB05gyU1H)um}JkR)Gk>DbRP2=r!8~3};HQGk=?u=^+3y0F#s9psp1# z7uOgRINF2T8|BgL!^o8_En4cA3S6!s2YkRYNR;Crex$=l< zB>-_MBGSvgtv&liVaitFM`{33BSu67Wh$*80%&}%*V+~B#9wCn>k~o&9}0*q;XN2R zg%_&^kLM!eJ5Qz9c(R}4T?HQ8)!XB<&jr9M^R3>!@>q9+JkcWy2MY}v3r!Y;8RYs$ oArAUMq|P;T?xk~4ottax3&pWru+}0Xr~m)}07*qoM6N<$f|R(KjsO4v delta 337 zcmV-X0j~b>0_*~iB!4qWL_t(|oYj-DO2j}AhQH0_3}RvgEv`Av!ot$hLbwzbK7wT) zL}VY~S}T158^L-D3m-wSFb5VE7AX{hi5ZK)W!8w;I@RpQKmRbZ4E(p4SN_|$$OoH| zD?D(J784J+Bwy>YptH!J_5dJOfdIfMFm@2>HroZH3#Hgu%zw({5P%SX*-08VjRNN4 z8iN8ydvJTBJlcJjST!q`BBjw_E>am)q9W)N8HC+1KP$klvOrPi@55-*3gBFMg!B@C zFcA?MW#8JK{h}~sujon|08u4IL@kek1K=%J`@mJ!n;>;3NPxT zI9`fO@04QW$x41scNKVWS8tEc{qlHaxiz|19_ud7BVAHEs5NLUw3#K59E`n@ j2G=mSm%&91Zmy3n#j#zmK=v(w00000NkvXXu0mjf#x|3? diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_24.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_24.png index 563d74e174c68ee578185234f7f6769e84043d35..aa8d2ea5faa1fede3be921dc5199273a1f44f145 100644 GIT binary patch delta 351 zcmV-l0igc&0{Q}wB!59kL_t(|oYj-DN&`UAgz@?fsJ6jg@unGSmXj078X}19^U1~;$kwJ6RaIrnEjafXa73}{#%T4|8895 zgYC$r9yscyeGj;9vQcM2EfGWE0YIz*0f1AW?I6-)c2nq0RDZ?ZWSDi20SEyYp7lCq zserk<#h}2+0o>myjp`8kR(a)GBr_U}L~^5AR0MTJ3}J2N_X@DfEKt;~aFu`i8{YV6!9z5)LoULSR`ilhJl002ovPDHLkV1fi`sGa}- delta 347 zcmV-h0i^!=0`>xsB!4|gL_t(|oYj+|P6I&@hQGaDxe!{81Vl|!1Okafkn{wCM?l_# z5VC>?s71jOU`Ws_5Ih12qSpk0K%9VZ;jTA`D`mEaz%t1uvtMTZ*_qA2f3tDn-;IlW zuo=0`0|#+7@PO;5YmFB)5($(Z0K_T~05}D@4kBGU|hk)hkybxzS)OQW%w@ENCJU2%Bbpj{v*$0!5ua52Hm3=9Y7% z5h4ldVPRiBrqW4P%AT#h^g@Z|gqasnVH~1FjfeLu z&EefkIfWPXQB)kyM27b&Vqbm)HOR diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_25.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_25.png index 35c09dc74c0774963a1e13f85f8aa48996eeace4..ecb16ccf465b8dca05d59932f6f1125540e34896 100644 GIT binary patch delta 347 zcmV-h0i^zc1AzmOFMk6;6h+T$w=9H~l7Ogbia;Qd2$HTqAd$%a5JE;GYfuIv zAdomn5Ns0!0R(-H*IbK5CYKMZGScLTmf@@foTC`*3en<5bRAq;swmi?{Zzv!=kc8$I6KmAL?TV7y$rP#z1e(T{Y?)WKAP!a@;y tVH$n?P>6%N7pXE0m3gU5RAuJA>Kz^BXl+&kM>GHc002ovPDHLkV1ic?nX&)? delta 347 zcmV-h0i^zc1AzmOFMq>O6o#MMbrixzNkGgjLm-ey1j#B8NF;JUgpf+)ENc4&7!vdq z2qX>?1YLqaAS(DMTj@cxz`2xw=7{FrC+~T0-+Oc5zg0hT_r?Y;SPE?7fXy)JIKZ|C zbLGk_Eh3mX0FYP#55OwWv=HcHRuTw@O0hcZrR^;Md;og8VSg*n6)?vq7!=rEhqF`V zQEWgbR#_Q|q(+0jNM=-vDz8*T;Fn>3RzUo@@~Y2kRK@+ck32EjG-JBQq4MyV9HD;9 zZ_Cw-G$MWM{3Qp!C`<}ein1jq%n;RL7Faa;%)raT~pxNjvsICs>=g-V6xn}P#z1mH3)Re%)(5AB8DPz t!n6kZp%4pACsJ)1YV%T?sM^eZ)jJ*KXl*$&?y~>@002ovPDHLkV1nVJn`!_6 diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_26.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_26.png index ec46b19b100a593de2b65eea3cdb8322c9a334ea..9af11f833040c7d03525c6a49425b63668d7bdd2 100644 GIT binary patch delta 393 zcmV;40e1eS1ET|wB!6m2L_t(|oYj-NN&`_4hQE`Gi!m_)71D%6P_Wd_LdX_^c?8Qm zgGDOAEv&3k*jVWk*a#vv9z=+}jiBHLEK*pk5G9yo$0EkeF;C!B=Y0Hg`3DC6TU2}Q z-&oHD^PUYIu$~W#4zRiU%;=REmGGhO06+o-5&%|#v;|MMS$_y2-&BglW;x1j0+0fr zT+3$%0|m^qM$hK&VoXdxg)|`%6fCu~5RyVLk6@W+ zut+6%3oEM>HdgusHiC$aiwLo|5fr=uixd`Dh!RY4$0CWDHBaDHyN7RP=bK^Rznx0Y zeH-h!V8OG212%F&!2vc~PmOM|QHm<`9RP^0Kn%btkhI|GZ+{j8$TgK>saXoMTL2^g zDAjVA!9W3XdVxWK?NzwCR5_w`DEP`NXCk4|pd!*UDg-{tC@+TUOD!=nGf_OAXa)GU zjhLz<7D;P)YK z9(2^8*lCLt@0DWy)gKni3Ow2K?(^HU>%7y>#~)OVIh(0_I;3x*uR-KPRCUZ`>PD9? p7LwZT>^98o%gjd2?A-MH0I}z39SqgTHUIzs07*qoL2Phm*ChM%_H_?>>CXscL>M_%G3Ur@~`$3*o~Ism6C)?Kt&{Z)X=_B^G1d;~A>L zX$r6|_R*%|VSj{%`uaGD5E=%z--s+3-bX2x6;%8}W~Fu3NIIG*qM+~33J)HzD#A2; z6I&+!L@R)p$PY7_U_ulWHMcP-MhTLnR(WeV#U$(R~v?Rz9 x$YRTCp{!(DqoGHJ>Ar@pd+EBUuAA$;A0;(usEeyNjtl?*002ovPDHLkV1gjP#Tx(s delta 410 zcmV;L0cHNJ1GEE>B!7EJL_t(|oYj-DN*qxXhQB*AI+*M_LW0=HMA#ywb|S(Ik|Ga~ zBIUkBnh>%>*eaE+Rq_M@5k$1`qJpVXhX~0Efn9>dAi-?db#96w?0?-S@K!S)=ltjY z4;;8}FB|&*#>PIFk8RHbt4VLk1Gd?ot-pd=B8QO&09ObI0Dr8284IzFdDMesTPhxJ zr)6^;fCzx}dD0k<1(=;r7zAv#V1G|Es;972NLD_SX=xN>U;0BME%4$SlEsj197T1Q zdJ0we?yaV!aIXUK5me*z#juY1e;={u)C~V@#lNzXNkzoUd&GxZFoWB?J8>E{ua8gD zPA+4^gEhM1w0{J6Bl{TBiEyG}{@xsBh=wD4;3P{$bkoYUf==A1ytKhj&EM5(cXJ?9#dAGpTs^qqtpuBH*k2`1|6gq`l&DA^a>FbGFfr zwPj>sq@XIG$~~)%w$ZfC!iJ|b7^4Z?z!##muqgt~idBwFzbOnQax^pO~Eqwb`krx3k_uLB2 z{3&3aN_LB~KDeVfA_3~l$nJJ_3h;cRA}BPiQyW z1w)YrzSx}XN$bZ**)OlQCFSfjwNBMYvG5^BsWk#`>gM~sMQ%H2Caf2#F{ffBhf{_M z7%~VX5SXLJO8imK3Wyqhr?z2gU#2!{YUd{L3lmUiT@V|-gv0;<002ovPDHLkV1kT? BwO{}M delta 408 zcmV;J0cZZP1F{2FP;<@+)eXE%t=YHQg_woV% zt#_w z=KugU03cIzW5XcBR{G!{eqRZ$j!T>iNk zhWS&#I+dIjWqoi*J|Y3?%gHeA_&%Jm)39mZ-_7@rsfUgAbC3_65Ur7S##2PGE-MVI z$8C^8bO4}2@qdRnv7skvZSmQAa^X#SXjt=_j0He13s&I5i7gsw^%1xPa+k9?;|lFY z%QF;d;ETh_uC#uPBm3pm7CjX98d|4nq*(ZnqtqIKH+A#<-lVi`G!oVe^_Ww!lEX&^ z3K%d5BoLTZVf2BPWjCeXWz{+SmZ2(;;4rE_eHX?+M0f00T zzyi<$xEegUW;}+`l2A;P=9`6802~13cbYT#uH14Nd@6)ueQB4QYXOo);_ZsaN=f;? zk|3CC9;qDKW^;{WF~ecu z9N{DNRsAbG>p67_R{2q#gaWt+AIc7ULz@6cB7T<>=XWoFqukc5qSrzi*+WVglQ023 zJH(7ZoiBQ_rK6!EK@vd{8dmc~`5vSiTqAGaHT2y}-$nJ^T(7f2BPWjCeXWz{+SmZ2(;;4rE_eW)VWi06-cE zU;$_WTn(NaGakceNhl^t^UcC401g22JI$GVS5CPMJ{3Z-zO>8DwE)Q?@peUIrKEgc zNf696a!Qzj^NPr#2-fbpS(smieHzKMgz5f+*uzSAp7OG|KR%mA9;q~Kv$@8x@Nif- zN9>XMs{R$8^)_`1R{2q#gaWt+AIc7UrcHn&5x>ic^E(&7QEuy2(Q6@%>>(uL&#;7{ZoNuH{3%!WpYzO)pdT3?TlN$jz5HpXvG5`Po07*qoM6N<$g8SMfTL1t6 delta 89 zcmV-f0H*)s0^KBTw9(5gh=2OPfivHZ+Bpb%fbE|D z$SoxcIu)7YDO4Lv-7Hs3G-g|sh3r$7XUx89O_w|8X71myyR|z-w?nRYJ@=l^`~0za z=;j&et3Y(6q2gFcP+%!l_;#Lj@-a*;ZNsTQO%4nPn z&3L=WN0AZnVt*U4hl|y9H`yvSjVi(6vD!!kD6RfgVN!&)0M?5==&%vx=K@5kbo)h7 zSa2pBQDU(k+`dFA_^!)=*Ve5eM^W1udT@o!YhMw=Q(4Yr@XWJ(fITBT%S{u`oCw9} z?{s*kCcrOycy)0l+TPHN!!waFY|C{mEo}>J33>*4i7>Znxi0SmXQAZvov)@-9vIU$ h^}wSS_2|tNa}W5XaaoG5&m#Z;002ovPDHLkV1ktP(Eb1b delta 438 zcmV;n0ZIPR1JDDIB!8DlL_t(|oYj*(OB_)cg`Yb!>(#jH4l#;_9~%^GEky$v#KPZT z5%y06A&6eV%EoQ&QrZg^ChC<0w2M^;SU5`rEiASOIl}AOpMXLBPy~^PMw>Ayk zx*(qQL|1Am43z|x$@~5;NOi&Q-iOyyEPQJ@BNhIZL0TgB`K0IVl|3KT*i4~}#>vox zr3E%bM!@?W#D5+xRCn!YJKHoUd8a?rW+Xsi?Vs|aEVKczp6x-4%^*D&AW(&eBSmJx z8UKwEi*?{(2C3j!7rk6t_XRnM%5ML&E3Dt;6(PKpVJ@wGP5E%ouSk=1yr+nO|se;`6@S1Nd|w-5_1(u1GDgY1_OL5i75 zPF~E_TaVra5&w0hVsmRxB6x6P3$2htPVGWA84sI@v-T7Co_2pc&-2bRFz~<4-K_jC zbWjG1flf&ruvSkS96CVPk_$X;0I2@q=2+X%tsdzu>2#$l z!ce#%x;~gIfYtfmrXO;uXuZ#kauwc|!nMTa(I*Rb6%zJ(paGxMzOc-csBaVTmIrGF8)mCmm>#!*E>f)j!0&0VL(6hdQQf?t|ozN8EF`~ zV4`3WmyTLZgxl6=sFeDy)zd}^ECxC)fpahF+?)G5e*g;KfQmc27D503002ovPDHLk FV1hE6-a7yQ delta 463 zcmV;=0WkjZ1M&lqEq_gG6G0q@pPAjbZB3fR7l_c>l?q<#EyRM0^x$XkAp0dmkYc8i zlNWRK)}wbp#J7%AY;NsI1P^X(p%rq-sa?n><6$##)_wx#wEOV<{xiR22mZHpH!Hsj z9hAXhpi>eDtku&7hYrxSm5Aa!P5 zPNCktGtR7WrMoh$HM8x^&RDrWT&m^=YIU~l%jirn&auY&>I2@q=2+XITRqZS(&mw39(b|V^Ec)w&scZw;+gK%>DBT`zK{1 zgiDTLR0dZ|k%#a~Ihl>V@|M3i#>JoM{Bq=g?|SFx$4JqvEez;~UeB2^ud7MmMn)P& zE|@5o#HFKF6XCWs8Y-o}YxT5I0*ir8OW@p%I(O&(u0IOjfQlE~2>bv5002ovPDHLk FV1hXn>kI$@ diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_32.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_32.png index 2bb90398c2b7f5dda9b98107ed4c3add6fbe3beb..2ab84589d41ba381983755a9bc89c6f47904cd7b 100644 GIT binary patch delta 508 zcmVwQ{1ZpRx%=hF@NsX5S#>P(DKduu>sZ; zP?LktrX{Dq4Kp*(hfr=`n?%OA&|Vo9t5GL1GgfX6mkRNLT%E0b;-3g6F~-=Le9nXI&h=ZP%vFAeeuFrM=z{jgG_wi|1iHSDG&+Y;!z?+nF=A^8>{nN5 zr7gnKVhFIEWB`5;({RjQE`AIhksG}h1c}kF)zQ*EBlIjwX9}Y=2r}W`x&>rKJ yzzb}{wH(3xe3_*Xn3#pAkCE(wV_%4T4O#w{F2&NUQH> z{}u%P<9uG&GIKz^<3+=RbHaX_5}Ai}%Z}zHx8a$bop+>PZmTElN?F*kbqH8s5@=0?3$8^f{FjTx@N#k!Yt4O+W-v+NheYU zD98aXq}kab%7 diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_36.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_36.png index 1a59ba26ab20775a79a6f169fa2cddb324e1ce3f..f155df9d964f8c63eeca42d9b871a4d1631fa3a1 100644 GIT binary patch delta 502 zcmVlk+C8sbaj*PvQ@a1j_^ED1pfK`S_+KL{sF*Z3IzVbo1vBv%cmv$pbTjyAb55dqwX{5K3)vC(i~E)&(m*MeYtt(KMJSsWHX0*4nVD%fybtDpdV zk75b@r?n#y_V&sO4^A3|(?rV{&g3m^1-D>Lns_(1!*AuDtW140ibdNy@iUy5^0Tax zSbpiN?#`v1OrdR0?bGvqZE78!*erobM}_4?j=rdW-rTtU0?Fu)h?8U`BLDyZ07*qoM6N<$g1KSy!~g&Q delta 499 zcmV^68Oxa0n9eSCffy|>aAnkod>KmMF0bw<$nn56ll=$?fZcNRsyKe z)^`(9Rp5k$oTox)bgqtKW1Q|xNA>ymMQn0R--yn+!!0?Jmwo2<1*0LxxHfZ>m+R~* zlXP{H@Um5ym5%T{Q3U?^{aOl)Xa4|TF$DsD;muG>2y&ycDuLU-3<&g{cQE(ZP5ZDC zKA&|^0bfn0(tkliEqah8jagdYA)o$)nPGF`34*Y@lmhLEy;0C6dK6_{)vfLau@Y3C zD^s@eYK}H}V8tL}rJc;swx{;#dA~PJ(cOMDq1=|^j~nv_3I;iFB#DG1Fd^<01a51*kArV$1=Z5L pvyHG>0+WskOW??hI`Zbm=P$|VkBBnv{XGBx002ovPDHLkV1jw*{eS=f diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_37.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_37.png index da0b7c4decb409d934887efd1989bcf456841eb9..ecec10b77c2684debac6db3bc918f41307cb9c0b 100644 GIT binary patch delta 419 zcmV;U0bKr)1d;@hd4KSKnVBEY|CxDa82I1nT9RK2?d8F=rz08`Sg1r*b}gXGjT79d z0W!4+p^vu`gPQ^aM!k98&wv~OdbsmBYbj{(BFpnk1eMm6VUj7%w&vn;E!j*mkGbpd zOlh#A<|o^31iu8s0hwZH{su3ev#&GLwGPo`X=SA)d|%igxPQ(5f6H){<5X!?qF}{byU0)Rm%XRLv{X0UM zYWM(`i;odR?PVlQ4vjAkhT%H#!x&iV?Yd>z-V)8wd8&~N)k%Cc}J8G#R?6gKhA(wZd5><0x+S5@E931;m$Nt>k`U8lskO{0#tm6Ox N002ovPDHLkV1hDv%$)!L delta 419 zcmV;U0bKr)1d;@hd4F&&GxOv5KQqs~!2i~+CHc9~ULH()I-+5Lg-TRq*8;lSIKiD7 zAXAGF`gkibxG6AT)SLJH49F3nhdZCMl7a>=vOLd3P-$HmCYj=FYc4L=lFcOZn7ba& zlmkwU*R#sZV_k|6D3xB<03NoGh1%Rt55Crwt z1EV0ED4aC~+&auaXl}oQ#YZJ1TM7vuJD@{8Aw^IFp*#!}<9kTl^;MCuT<1R9zayln zh7WML_!vRdUPjX7(D>qD7_JjPjDe-zu3MJvEzt~}ry9vX&VciBk#*9I3EzkqU=_yK z@Ph$O7Xv>5&VO%5t|%P65`+LQ`}GD!IVXjg#NQmj(IryFINV#WG#-sRb2tBf2%Z%G zIl}HiUg5)OOJP(3=W-=C;hC~(R=UcW{a`6heUGMQ0}FiB?Y(b%>5T!-qoy N002ovPDHLkV1f)N#u@+s diff --git a/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_38.png b/assets/packs/Momentum/Anims/Kuronons_CFW_Momentum3_128x64/frame_38.png index 0621c7d801addbf6626d957006f9d3692841dbf3..eaf9db48fc38aa60abf2fce3aaef5617d37fb0e4 100644 GIT binary patch delta 470 zcmV;{0V)3R1MmZoB!9O_L_t(|oYj-fY7{{fg}>_Vu_oGM8jX^LG40BwP?*Jgf_+DFk}} ztQJ5JuWSvCf@GxdA1mPQPYV)rZwD5ihJ~${^YOeyCw#G!Dv5!5_ONW)XMKf7eE6M~ zihxVc5Tu>;0)LoD9Q;XIWKXhks)pBjCpHrQrM9;In?+iT1``>;1IX<9LpA~o9NEo8 z?f9)A8E=7%`fzUaq^02w zyizva?eFQ0uJY&JTg7S+o%)te&BbL_d0&0*>CXPO{ZCS1f=D0IjedQyrayYwln$FR z9uF1`Gz>;SDslyRVxNRd2*Tz#kE30ThFWFciEEg+mx+s-xVdrt1=kIHM@zG>5C8xG M07*qoM6N<$f{n!DSO5S3 delta 471 zcmV;|0Vw|P1MvfpB!9R`L_t(|oYj-dY7{{fhQI3Wu_oGM8jX^LG3{-ikWC1ZG(pg3 za3Qnu4cv&D5(Y#!&Q|aN+zUYr$rLDFz-+T|VGjn35Tq9&GdN?Hi|(4KcAmgmRek(* z{&P;%f&Xo-^{Z#0Wfh#3I<0_(>2$UNbfbBq*m*^W1O^oV7=Pse4?sJhra`(kXH%GN zJBpe1eAZY7AOK+gR(2sAx-Ku`p1@IDzjB++*AB=plivL5)Jj`Kk#IqL@vttOpb+c< zuv!2?ys|Yk3X+k+f2@GJKP^biy&YJ58Wy%*&d2i-o$$qGsw4*L*~2nupY;_U@!@w` zDgrJ&Ly&gX3x8lDaquT;kv+-EtQubDo!ChHm)hF;Zx(4WN=#$`47yTn@)qaTRRK&~x7wbHDN#1o89wKP~JYR231Nu?jhhQGGZ!y3*2c z2VN=L-tF({jjrdMBn~VqPXDYGUTb>o3<0d`Er>9VbO(-y-n8LuuUFKTM44lh8fv39n%kTX8o#ep(7ArmX zuT0>ATY*U(FgKP?IKVVpH;R{6lt`fO0KjSiJOCp=-9RAQjDM#v))tC8?dhz!06-0Z z>Brgqa3H&E$L9*6Sekjl?v4QYL()fw!YgeRMM{Er>a?LmQK z{wocv|E@q{pY6f?o3Lo><$SvrU=n^*lj;BqjqF8Pw8!cqFFE*|mWmn=-l9l5s|B!; zI=M);$X;jVRDVscv#&N2|GlZ&`XA@n;&L#R0c=24*&nc3!@{4+nW~?CQY2Syt@dx0 z>+k?_IGaT(_!5MkP=I}o3`P8|acza&6IT(zZK1Hb2X~#6r|?0GoVBj@C%+2C=utW{ z84K{sbdC>?%jE%_(vAG@qQ-~`TY*gJ8|X`rYseF4)G4qf_klG~cl-`r!_d79UDVLc aUBy4~i)}>CjQ0cp0000MA9#BjQYYA953l;_}rVw4+&72goqu|N@OI89K&>!EE?cAUJ0xj}JnuuV5 Q4*&oF07*qoM6N<$f&{0L5&!@I delta 318 zcmV-E0m1(A0`dZoJ%7A(lqu#AEY+sMJP-V;`<>F0{Hgn zKn-zf$wkupuiJXix-i3hlw?Nrv1NNAL)P#ua(Gw4rqj_UW6yT@C!VHDBwqDI*O|qq0)qa#BqdD96R9wSqQ84qF8P?*s?{N&!M3l4(+4 zvJ{GxtR7zpU@4N_Zto2khmmRX5j;H$KnznSdL{F|Hd0|BmVYturaQO5F!vu}+f1iu zdZXXn-U_RVe`X3fOC>3Jb!R#i7gHAy~-!Ahj_sLScdsf9UckfbYH@ zG!UnjTm*gix@`ufi)EOPlBrR3Y}lMgmkPc`4DV|ARNb!OT|5-I@qYFy72f^KtWa38 z`fMfA*1V-hD>S#DQt(?_ymk(d-my@zqJPbn~lHRvofIzc0*G- z;9yXu4lw;9s6DSvk;BpffYkzc07d{G2xXZB7)*pBVKnO>3V)DM#H-ah8c-S~%jN;x z-U&bisTQ*`vUaAVB7;cgz^dk41I5_R{d$;2QMFF{)oagdUX#6M-1a{9Pn=ExxNtyr zq@Bh*KjL~bZ)^DFo|Oq*upgSK z1CDyr)B&bj1eN7gDRNjj0I*sB55NfE1EDOF0KJLuNEpn!$A1E36!Ch!i3XHL$+CF> zw|4>%L8^sT2G-7%^vEERIk2ieS3ohe3%?Rmdz6jQ?0RE)^>1=e%WdxC@XYBHfJ+Bt zC)#Pu^CQOFAs5?VEboIPi?|ma%JZ??A=d)f`fET5QIe61q*tG#vemj+ieV6^%IRat zvLi#L@GWv!JzIwlN9{ShiHG8JW^MmLcbnUu_3wu0000bmAyfDf8dm4<EC`Lz>B$?zrKsKpUmRDXQ9zHQ5MLMm4TH6g@z(^iitAkm$C-- moq8M7(3qFTL^Wn^yZ!*pf>bol&hjDv00000fhdS1C|4jB!68=L_t(|oYj-DO2beThQAxrCdJeSbm&ry;Ly?0K}ZD$M@PrL zg^Ng(K0sF|eF7K3`3ep`g5Y2a4h{|(Dz>)fIy7m|ZJxjbNlre_`A_~E4*a)>$M(C@ zo((oUJ+Q!DW6-pKu6L{R%$ZAcU}^!tBmy`9T7ZfMPmb9fK!2kzDz^IDX?-667l7^K zMlhQRpsw#w2yn0q5BEYNYeO>;Ub!(QRT9L;jFo7?C?DZP5u1@aHdP3!&i>9VX&COz5~iJvjy7d=>PT_Ekz4`8+NwX3B9fLevMi5*jAI z3Xp*xMsyaUaCG^7mRW9BLJ?Pkrb4tZVN#PV1NaddCQ0GTI`vcdNQCOq(3sYfs91kX zep`_MFZy=$`Yy(PG7Q(Ag+@&WT~D@5HB2SQ639B1nV>6w6h=eE@>|-5(!P{7sL_t(|oYj-DO2beThQAxrCdJeSbm&qV!J(t0gOCaij*gCf z3m1_neSoe``UEb5^A#L?1i`@+92^`nRBUa{b!cKvnkVo;a&JD){ZIaTIPl*hoR+_p zcFJJG(Qygvw&HdP=;oll+*wPBKFmu1Fp&TjfEJ*p!I5P)V}EFkM8?*rn>60fhdS1C|4jB!68=L_t(|oYj-DP69y?hQB=z?ofm)ENF;lVnIo1VRD#QSXx^0 z2zEBctcC}mwbCcBF|l3~3m?J6!XvS;u%N&Qg0~hNFbhxMB)d2FW#*s#@3QdUA{n~x z$^$}<5DcIkIhkK!sHK3;DL2s<>D+v;7hf1_yRVZC358Gz7R38a7`ukU<#5 zwC194`F)l-ZgiJIkrc}{g=k^Ks3cob_z@ab_uL>7_h3a9?+WM2I*m%>w^;m!x zb31r_7h^x^MQhJOqh!kMK(>qxj3vl4WG%-`xh;Pb)DvTDfzJ Z_yb|)R+@S(Uu6IQ002ovPDHLkV1fguvq1m= delta 380 zcmV-?0fYXQ1D6AkB!6B>L_t(|oYj-DP69y?hQB=zI23`xf`)h|7L=40CWncIrKKg0 zU}s~@YIp!zD}4eR6YDjx@DWTbJQ52F3kr-Ncx%BOHw#bTB)d2FW#*rq-3L%qN`lDRu@Wg*7050WksbL~i-;t1vaeovUb^*n(ssSH zOzT)l(J{b<(C`Tlv^a;YdwxJqRslF)2EDv}HKZN}JmwKI<@s148US1g4V$hEBoNd? zI{BS)`F)nKTy<8MA}UrIN<0Hhn3QEo3_n7{>LGkNw|)X2;-NSkSlfIO5gTv%w;2lX zVs1yT@1pD{gZkRD&?uWqw<&nfk|~ewdvoud36h@3{{s%FrwKU4 z`w57w(vfn1l7eco-GK~ncKk6>T;oPgLK&n;2;>4dLzn+a delta 344 zcmV-e0jK_~1F8d%Bmr@eB|CpSNHHwR?j8!qtcL=Hj#nPt_vYO@FGyaI{|6kJ&{^Om$f%0V^S?mz)JIsTj}Zg3}W84xFbUu+8b9*z&!Bw!aDNLRm4Ng5$aK=EK7FNF zx;=cpeCF0danGZ2S4Zln+0Y2webhUDVKyc*A-qe=lS$QtVr^+2aBu1M<`~!yA%w6= zt1i@XPt_k0;4;8#0E$fL`G0Qa5q92|pgHKk*%)w(mn(3o51d^$?Ep|0;SgvmZ-)SI qErtP5y=kV)5EIQz{rYyXI?P{E(feTGrMJca0000%2 diff --git a/assets/packs/Momentum/Icons/Animations/Levelup_128x64/frame_01.png b/assets/packs/Momentum/Icons/Animations/Levelup_128x64/frame_01.png index fb9a8bdb07d3bf470ea4147700e3705fb0aa785a..b267163b2f6a85a3af1f529556f3e49e0df60128 100644 GIT binary patch delta 457 zcmV;)0XF{R1LFgbB!8+&L_t(|oXwLzZ_`i|#eeU`5g964N{~PZ;(;M!VL&Vhe*-=M zOUHf&miQaM1{<)z&caxiE*%hJU_dG;Mj|3oL2*(4JQUl9A*A+Qn0ez*=bU@*k?n+i zp8p5zQKbePp~L`BX)VRh$bvAs-hc>DHrY3di(IjmAwK)}Vt+Z8y)O0taGvGv7^*SMHTLQH`zd#0*M6D)0z}42G5y0n(&FG%=4G6v2FJ}}k-!j+E zG#J!p*CIWURDa!T3ercQiW|%CBT19*k`7njkL0P(#c;b1lv`u)1oxK1cOEF>pDCWA zb2oW*#{tv)0eEtDpMT9=3LBqJ5lE#T7Y3}v6wzYPr(A>5F)k0na<|&{)PnVz*1M_tii+`q! z+y|fzy6hals&_*myr}X;i3Qbxq#rMjm!I7qmfi8Oy%jP1LOmcB!8<(L_t(|oXwNHZWBQig})iEg^P%UU?dO%Z$aTQP#_w_z5x$F zlQPdh<9!3@paUA{X(+QHO$vl4D3Aj3B4J@EAa78926=Z6g>iOoL(P<*&OP_uGc!)u zUx^b{w z*lc-tsOfG-XTXWF>UBcYE(z3j{Q?i}KynJ?l0G8eHv8lT>I{*Lx07*qoM6N<$f}C*B A&j0`b diff --git a/assets/packs/Momentum/Icons/Animations/Levelup_128x64/frame_02.png b/assets/packs/Momentum/Icons/Animations/Levelup_128x64/frame_02.png index 45fc26155e6b8387d51111abdcf2abf4e0a49090..259097723a9f583ccf1812a8f8cefb73d93dced4 100644 GIT binary patch delta 461 zcmV;;0W$uZ1eyepB!A&aL_t(|oV}4hZ_{8H#D9X(36Ffbt)D<-<|71&7lCv}2Itdtn3h#{5Yv;-WI_!vr)*I$5lJl)-U_ne91 z^Z0K-(?ulZx5}D457<9ih$n;q=zlq1D|mQ}3Z{R$=)DW{vwy|>g6k2)YxAMYm|Yz2 z9lAM2t2$wlBLGHkU(XeC3^#5EuE)>oR_u~ejptmC^v0*&$d#;y$6;QS#Kdm>)GnIu zGBUsV$XwIlzBaD9jC@n+rt5M1)z=-%P;-D%HCmhA)I{%zw{@=KN|@O$luI)F zr0x!t;ZzAAX@8=EBqrcW^-O})qQdmZND0Hl+~~>7ucd-%RO-%70S`)+>`Va@y><8| z=i6ugNg6cHOij8M^~#U8UQ8H+55U3?N$<)Z>+;BNg5^uV<()R5ZVo&hOZvY2Tte*} zxSLBlc-5CsLm_lkmp(6ds`7vk3jyZ0J24*3)4Vk}+$znQpt_p)Qe)bdhzNLNW@aI| zlyXUGpHhC4O9RSMyXH&M&=U*@A#{eClgj}(7hm+h`)pA7Bubk000000NkvXXu0mjf DSZV0+ delta 462 zcmV;<0WtoX1e*kqB!A*bL_t(|oV}4fZ_`j1g`d}U+fXPmRi##_QVe3~fK(PFmXdT~ zW$joo^-n-77?==@6%$?f3v48ONu3}PDL|ctQw({+IK$f`-SaAo{0^-n&3QTYt_PtILwPDF|ivzwTtGv zjLfe-GFLRXuZ^oNBi~fI>1rH*we>rN#wuzJY7S7UMr+efP4u34Tjwf;p=P!V;gSqL zsk=jEI8g#fnt!Np5)*KxdUk@;qQbOfq=aE&uJvT**HS?=Ds^Y4fCnW@cBX)d-a34f z^X)VLBn=v8q9)yodgaGkFD8t^2Vmicq<7_yb$R4B!SW^G@=hC2HwT`MC4FChE}?b~ z+|4B&yy{D+p%A*NOP`lJRe3;&g#h#0ofwbisoxqL?kZ+YP+d)Yso_)@5dm+^%q%3A zQZ7mDQ_630X+T+O*L+DDdV&EVgwsBllgj}(7~gV#0sCxF_yBHz*8l(j07*qoM6N<$ Ef|^~~jsO4v diff --git a/assets/packs/Momentum/Icons/Animations/Levelup_128x64/frame_03.png b/assets/packs/Momentum/Icons/Animations/Levelup_128x64/frame_03.png index 9bd6b7f8096e985997bb3a6dcd6a76df49b63591..594863dc05abb88db3692db01d845c2e353f704d 100644 GIT binary patch delta 524 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 delta 542 zcmV+(0^$9(1h)i`B!B)%L_t(|oPClpXcJKw$A9nj#8!e{`Zt%9?d_2-9bb|-cCvTXn;?pgmE(#1Q8KW5+f})v43UWF~RF!p=*G8N*n{| z>{D~3IwvOZ$9BfR0;KruvtjhH-5eQ27ysXf2WF0tifK$c597)#AXUUOj8%8W2qw)Z z+fs(Hw|vbU$!@jdV2DJOjI(TX>eC@05>`Yp>u948vzyXr;Dci{XShcb^}B9DbT#n9dOy$ z?*d-KL9JVtu%7e`yP$n?P(jc zrQF!15zAjUg5zK3pKX@(oqS4u(M3UQ0)m6! z$K;?w)T#f0xa1ZD$98ZM2OV@&Dnjd^Nm0Z>G$>9cc(qYdiZ+;#-sXP14w~ei#o06d zc%Jutp7$uhe476Uye4uD&_VJB(1fO?wOBHNU)nPS79f>xpMMO+7~4(D1iJF?U>=w` zBATXRKL6M;)@CYrhGN})X#|tr)2$gpai~6HTE@3H!(fQS&0Ky}`cDHs2>~Ke3$->- zSb!}JV=ZaNH@8qs%+L^%E?NVigfOyGzLm82#Af{#Vt^1UaY+qTc48=6)I0+?>FzcI zEZD2Rl$$7b;D2Z3bX@M2L*g;X<>JX^6QUZcSJ z-Wt$reg;kF;1xF*j{)EN;i9R3e@N=~KEQS^faZPin9GJ8F8EG2k7lKOi?CV;Y;VN{ zN$n~~@N8~UWNGAWNsy5nFC;p;P#)ySZh8e0yNgOGrGG{(Iez&K(TPhL5ddEkbS9wO zWm+kvv_+)8OiN1_X7T_k(42p8iuUOKV*hWYTbw`qWa|FL!3k^CV(I!B%kP8m?AN8| zniB>=2? TFH-6N015yANkvXXu0mjfvyJ{T delta 531 zcmV+u0_^>&1gr#*B!BZsL_t(|oXwKGYg1tq#((dd8@x)e)jGt_T(m+rMHdCJHy}6& zeoPK3M4kE{h)ZrkaBK%BanM0Wr6RNrniNGGM1$gFf>#?QrD%f*>22=EanO9ci?e6^ z@tkv>^SrMT%+mZn;5D&lfHvY9KoglQ&BdY#g5sV5umCB4`+sC8#@KGQOrXpEHs*ur zBc@?0=H17Ru{Kl2Hx%pMOT(CSpKi?kqgTWpg#M~L({G2 zS>Ia)x{c4EX&=1eh2sej_&+=}weJr}-QEY-&IQoCFC6pOu)~AE>9}ZCO1FqAHNf^) zJdo6`yoAr@CPkJ;-WCNJx$#2cqYI_JkL;#bAc?oAlz&oc)RNa;lo0_4G+}!J zN*$(^Qc7FI>dUk=b$-SLP@(4hgHyCd_ZNC^E1kmp;U`n~H})f}Rtm-IXRM$HqO)I@ zo^O`y-J*y{5@~%e_*k1-yXYvTlu}v3)Q79Kf39`&uTvG?S)QAH)Y^UW$e$s<0pleA VtQ~gY`wRd8002ovPDHLkV1l;U1uy^r diff --git a/assets/packs/Momentum/Icons/Animations/Levelup_128x64/frame_09.png b/assets/packs/Momentum/Icons/Animations/Levelup_128x64/frame_09.png index 15e0d30a235973b6b17c513e8e56dc9ad92ea6aa..1711bb4a87f6130cb8ff9f641c7e7c8eca4d4dcf 100644 GIT binary patch delta 625 zcmV-%0*?KY1(OAkEq_l)lW`cwKfiZ#Ei*Ngm{x35QU@WSAcM#SL5HC75P=oV>f)_q z1mRl69x3{J`#uHT)sr<)$%GcuHlxDo7Xal54m%t*51Ajz_lz@fnU;BHcA7DO1 zdY&MV>pupt5gJQ6sp-^2Y1d=ADewCw2Sboo?OdKR7rKF_nho?Q0 z@?9HS*5Q;=R2Eh=VE_yOlHyTLOUizDHq#{w80)Qx186kjfaI;MT@#hG^xmE65|Y;% zT;Cw6@V?M9DSsqySABbfB)7#~p0R6PJ3t^Eh&Tj6nd!N(??EZ0{J!+Y=C=7j-0Qx# zQX&UEVt5M5x3V%07An50~E#ap>?n19Vc@!a5R8;ktc{ruTH4$5aH z!D6xFj9u93ft#E9VPi3ozE9xB7RbX1uy~W$YqP4=rVg@kEWRhN;ie{laO}H{#g&<9 zR<}KNP$-gfKn(+!GbM_jUYG(eheb`fvLK< zIf@{Cis0J8K}5t3>ZS;y1;soOs)JxqY(Y~RztWVV*0#i$yu9O(Ce3sAPM5>E=bn3y z5y7(f4}iVU-s((m%_JKb>C%T%IxynmRyAHxaR74Us=ypd0DnY@RsjnyxOVz^Kfp|$ z+zd8Q>^}ss2HLAWaPS z7bsG>a(R2X{tqL(N+eXY8%2xw|HOa-fQQ`>u?1;X6JSh}$p(P$W~qgCV%r#IX&>k!J_na7k}1eK&AXR zSj=rb>6ANt@QT^*4i;m%dxWm9hY}nGi?_)g4vRY+TA+}?Vk&hNFFgiC;!_S5mnJ^Z zwBeD9!qK7&YP>;_yQ$8|q?7&U_t%rNy#t@WJZn|-+EA*x z#TqQWA3O8=Slk$6jEPbXy*m}j9-O^WOTT<$^1;CU*|mGRt0I2^;LSu9cDGYA00000 LNkvXXu0mjfYg;QJ diff --git a/assets/packs/Momentum/Icons/Animations/Levelup_128x64/frame_10.png b/assets/packs/Momentum/Icons/Animations/Levelup_128x64/frame_10.png index 6d57843cf76dcf3c113e2b6d47813e4c39f5698d..a19d08702d5bfb4ea3f7656158f173b06e39cacd 100644 GIT binary patch delta 31 lcmZ3)x`=f{HBK-fv2mV%Q~loCIG0>3P}I} delta 31 lcmZ3)x`=f{HOd4Zy2ZBWeIWU3<;V!`< zMT#H+C6$Gh0YO9?(c5&|sn`lBEKCuxNM)f{Sg5fGVj2Y#4>7?cc)`=G?(RH`+0AYK z?(KX3n>YXb>xpd1z)Uss!LY5FJqn?`(y~ZVzS+hG_Fc}0ohN}R2?oM1kos%Se z4PE}$k$aM4i+?FD9+sqSg~>cNdH}3^=hxAF)VYs3zqt88l2+`n>$mfrlC&c0`t^9+ zP1CCaIW+Yp1_GD`4Bq7r$z2M7L3iIfSnqWF{ULx>Ix+jMQIoV0DRln*R{^3mKgrYZ zC8;@}P_pP>?}#KRPVmC0CrJu#??@Jn&2>qVzK1)K&3`f2w;zDtp3BpEQUD-26975J zj<36emH=|Bw#qJ9X8;%q=a+ndJdQ8jEDNB=IKS${B>*}I-hhE;<+^)HZvl|iL?sCv z%OZOPhpp|GMK+#Hw(ZuItbzHH$!NyAUH@eIzgSrV)8j!RhydC6#z?wuHEYoPsmi%z zwt!+SPc4wyM?1YdRrX0se{Ere-F-)qw>nVS)&B=?BDr{GslGNn=cQL9mD*3yB~?*iEoV zu|<%8lFGu$fFPoc=x#dgRBVM57N&?;q_WU0EYw&8F^z(Wi%+~8_PXXYJ?HN`vduR3;lQa7AG>|8Kf0Lf<)8FK#}Nq*XI&>&-%!B(2KWdOfb# zZhB=PgQma4Kmc=qk9YY)@|GOnqr2}dtan-d{s=%T?U;Gjs7l(56k7j*s{qk@Ey>fU zNm6rAp=8j%zA;HsoZ!WAPm&bg-jxiRnD3S(eGhjflYe2TzY~Dpp3T#Gk^>+*695?| zPHfnVmH{%XwTd=bR{;3r&M(&hvRJ-wvnYUG-};pwE(6d(@CJN%R;=4!=`8{>nk*%O zV;N+wV6ia+GRVYJ$+X?tmhoZXRMMJCkFB3d_r=KgFjEN=o!W+=fK4Dy>>$B@znB4iQGocok>Q%m{_Ad-DCB_dO=6cy=`67krqRne&hXpix;{ z(pTu|02UwyNIgX92QU{#yR@;#daVFu>h#8ab-`l<&;sD=X@C6Ks!TCe4=7gpRarR> z?fnr%!}#jFDjTqzRuJEH>jC%eqTaLK&FV~){VfQknRNn0lJWq($P})u(>q222gSIekw_+GKZ4ic5qR%L4ymUToK-tt_q6u?9)d3oA1LS{+ z2*9+5PBY`3c=6y%Uq`wz)AwIcl6t^`DYO55iYQrkd-L=hAyRw8)-9smgv z0n9!D9s{pIQc)DP8q+0dLIp{ugupiJ_8?|wcM>WX_vPHbIrj=ty_tgd{=i&BM3jXL z0KhUVB)M=oO#tE`0sw6x&~pG?S6XSWk0cETg;xB+xSC)R0DnLO0I+y(-Abk8>ve&A zZ%~C5Eg-xsA(%$bk5yQTU0p%++NleS!@TZu*fF&dnB|6`5Rs;XfMn)i`f_)WIyn2; zJRdknPDc|5VpjG~blFtB9q*(=0APOeeNU2_MuBm5B_a)*)0+k)a{yp5>bFS}Gzy6N zncWD4G%B(SnqMg(H1*VSo#Ke3t+qBq3_RKW#1FWL(X$F;@26YZgTnV<)ranq+v)m{ zEi(}SuwkL;D|Qnf7HsHe=^NSudx9jH0N559`QIu30&T`}{ggSvmjD0&07*qoM6N<$ Ef`8hZvj6}9 diff --git a/assets/packs/Momentum/Icons/Infrared/InfraredLearnShort_128x31.png b/assets/packs/Momentum/Icons/Infrared/InfraredLearnShort_128x31.png index 980602a66988a4cea08e2efd1b625585bb5106a7..fe90ebb0d4eee2455a9d69646a8663c5d78c3e4e 100644 GIT binary patch delta 283 zcmV+$0p$Mm0`>xsBmq5qk`xlcfx znNI{b`bzsDl;YsYN+7K0bQs^AwQS_W>uJr8s$EPqE)(qBdV}EcM{A~Y>AGL}9gCyc z&Hb)PTnx+&7KFHOH22(*B~aq2(*9LL%Li-cWBcJ_$!MvZjR1cmHhAwvu|uF+ zPnGsiC9Pk$GpWJf;^i=et?TMlVplE94Q?FbvcLT{?x|-;b{Am?sM|Z5Zy6%+c!tzz z)@x;-zNA#YPdZMT`*E;RJb$PV7NnFs<6-V;k=T5ZTmkGfFw?*(zGni$=~h3p&&e_; h8!9>Czsyw4A3I@^P%;lsFB|{>002ovPDHLkV1hDjiLw9y delta 282 zcmV+#0p^p*BQD8<2(l|We0=`g-KYuU($*VCFGRlAsKTqfAL^#;M?kJe1*(sjS`I~GT? zoBLgpxEPolEC_MmXzsZqOQ6J4rTwdhmJim>$M(a!fV$v;lhIN+8v%btZ1CQTVuwJt zo+|C3N?N~gXHtW|#miv`Ti4aA#I9PH8{9a=Wq@LC(P`7t9-!eqt@eHZc ztk=pueMzZ)pLCow_v2t?^8BGfSddckjEA|Wlf>pJL}-h^6oE7Oo+${6t$t>o(`8OJ gRC2_BnL^DUJ7JPg2}cftxBvhE07*qoM6N<$f-($^-T(jq diff --git a/assets/packs/Momentum/Icons/SubGhz/Fishing_123x52.png b/assets/packs/Momentum/Icons/SubGhz/Fishing_123x52.png index 550061245b4ef11a45822d5979109ad467bd2103..619c96b1471ac8f36489da71fbfc0c99d0558705 100644 GIT binary patch delta 423 zcmV;Y0a*UY1IYuBEPv6zOB-Pv$MN?)x%7eo>ko>SI)u_vA+t+C)Nbb!jNn z|AA3bfJA;ChIgCeqooHJJnRlx`(3N6I z(vITSX@ZguC~~}yfZ>DBCZMvy_kdvwYC!k{Z+8TAts1A2ZY4#JWEtqbb0O(WQoP@? z45Y<9Nv|Z`d$I=ft4%Fw1I}+?AZ?uL>&}uSb!1H+1r>DIA9v)&II8e$_jv|sBTv_D zHlP@Qh3(12u73dtCv!A&q7OGyYjA2a@HV{#VBlxTCaWpTfq~Eou9_*-fFpfrX{C{l zwIgewPIMe(tHHo|fA1yJkJh8V@5V3$1K++^vu`Z}N9vt4M#{>XfY}%RVDeE6I3BY( zAPSg<9-g0r%H=XSaMqgB;NpEM=M&UF7vRZu0jm222q2rq#6bbd#Y8EWcmOi!!hSp1 R9<~4g002ovPDHLkV1hJ*$+Q3f delta 423 zcmV;Y0a*UY1IYuBEPs-*OB-Pr#(($a(hCh(+afA;2&JWk%v}VHqhmn-0RIWWEmy>; zgH!j8(xon?bg5Tx2qH)asarmAP((bO1GDn*sV3Lc~G1$ii=xW%KB&n-A$$uK~TmX{iZq*06QY=Z@ zR=k)xDEWXQ$NK~rKKiTxDl6Oq3~NvW!e4khBcN;5IFWQCDS9HyK=+-$lKx1F_ga>L z^m13yJ4yGRtN|UhsU>Z|IRggL@`=7}&q`89*7Q+OK|lNBiQE`R6<+PU&OkcI{F2QA ziUD}B@tD{Z0Ds|Qj%Hf);d){XPVFhIr?&tM{4Uw#eF~<*K(TAz7!1L{_aD{lTXVpHddH2CGFcNa^~N9M3gdW8d@k1@oDa=O;NpEQ=N;6)6u`_z0aW)2ARufO9s31PE;>p%#{)9x!hSo# R3Wfjx002ovPDHLkV1jQc&Yb`N diff --git a/assets/packs/Momentum/Icons/SubGhz/Scanning_123x52.png b/assets/packs/Momentum/Icons/SubGhz/Scanning_123x52.png index 6a2ca693dbb2bfc0e199e279ecf7f4e69efae0dd..5a7132062e8bc95306f04a32942f16a28673a18c 100644 GIT binary patch delta 435 zcmV;k0ZjhR1I+`FB!84iL_t(|oVAfLXcR#dhQFEHyFC>&jS%4=u|9~0Xk(!VHiAuB z3n2*B+E`fK2zG+lh;2$sn_xi2-5?mWxGHEsaHCBS<1HZ}dnTLTVkde#y|4V{d+&cU zV??bsEJ6Jr@Vg8^DOUqgLBFnSHLpmL^j?yb+4B3f>SW3rBYzbGNzyZKKpep~O#j>C zK1^hfBn|XqM(2)NQs@)Cqqpr_&NybVH(dG9gP49!`RJ7KGxl`&^^>-W{LSs7SaV^S zU-8_R)~b)yhgD$Zn9F^OE)Vrm<)x2zBxTV~Tgf^=`}#V7J;2arnS=AM1z;neW*%J4 zy#eSh|#VttStqK$hDsGwh$Y&EY)lJs7Zl-ct8wd!QjD}P2R29l&_UIB3g+c5QS zj{9&ddn9R~AJdvUvZT-_dPi^DTh2OWus2-!(1VzMPWkAx@jdo*`1O;viu}#(qgZoc znP2hjm)5F})rVDJ<%G+$fipnZKEz#d>|v&_Ny*8;GSPcsj$ z=3W8lF62*?0e^PWD~eWY6TnUiP(}my>N8+5Gl!L=*ITFtOB>mKLf+xz&kF3CWCSgd z-UMvM+Q7|1!L9wreX!7F{0%xdOac+C?F>@~CN=)H-SNFWfa--JSXx@?9Q(?*%7@eX zTbWHbb#Ae~FeVN+Xq?nQPV8!+y)jj{n2YnZl_GxH3@w^=7Xxr+ApjH41F$%B*1k(hNB!3!7L_t(|oQ0D;XcR#hK;O=-cUy#H!4ww_cWbl=f^eoV7YVw8 zNGhY9MIZ;k$|jv4DocvkrWOkeLF`flwULY@1T;bXxiXpoHN-+$Fy=Pg-j2mw?%0*! zG&A$|&G$3I!XaZk3zE#<(g!PXFa>GQ9ft$|e?~S-@{iHVf`8R)EG;ue;AFtdy$o<% zl?Ig$ZVEWxC(}m;Pk$UvWqq)Jq?iI<<9m-%M}n2mGb_72?Jks4M$r>-D#p+0&!vu$ z3t(i>>wfK1FworE?ieoc!@j=LF)oIXmtHRv6bN&_)`arGF%1sR!l<Lz%hW4Q) zt30fY7-0Dz2{crUU;f60IbSi>eAmA9fG>%J#^v^N7JpZ%=KO$KSsUZU5b)ZkIJF7_ zEKdRWAk1H5Ezff&w*ur=BsQg)$l}+T4d56cn7$hVOA7=XEdhk(lX-?!;cNg(A_!lp zJXgKqTT_E=$@-I<=ssmCL}*WjJ%|MezzqNj4VT+mC%|kC0Zlx#!+htVtZk2m);&Pg zLx9eE@H3djuCXckt@mRnj41?&6B3)}fU{=W7vQw60lm2V1zzf`N@R>7tpET307*qo IM6N<$g1e;!#{d8T delta 571 zcmV-B0>u5(1k?nOB!3%8L_t(|oQ0D;XcR#hhM%2V@3siZf+;Q|R1hGpI)J8ILA)pE3Ps(Tp)FT$kf-%{Uy&a3W+_5Xc zX}+0f-ueD!1`ZkHS&(GbmOhw?0~4e{cN`A<|0%Ljl7AGfEPq(e`qDC^2%HRfxsw5o ztJ0wI!A$|@`(*ma;OURUsi+V3jucbiYkcof>PXNCJu|c0X1iWaDTwR*Sioa-_ ze2S=^zf_`MZ8r6+x;YZ&49^>Q_6N(+Kf9byfHH#y-})Vd}tq9 zvdY8Shyj)ll0ZYn=*!=@Fy|}A_TRO;9`GfRuzR_Eoqxq;syRQPR@O%GVhDKcQ=D1` z0hXsQPg$5>V=c{dC)WUS4T()@CbIZ-W(_z72&V6bz+#<%qa}c_d@|3lDx3{KNd)05 zmFKEgeA|8)mRx^w6Wymwh6wG+um@3x0NeneujapsAz&X5?J(cDD68qQt91`h z^$?)*9yB~=p{v-C{MLIh6vh++#0iPbbHG_Ktij7$um~#zP{WsJM6gV?TAXB1e$AnbV+X!;_Qt*IFH;AKl%ajgmIIxgaQV(fJ%4cE;3&mDH#Z#UhA_IU z7ywDy9Uto8*^7Be3ILe0cWLR0^}$Lw^`t%U;7!_F`XC>SyGMpz7I`4JU`*n`@Aq9E zwy$nDkl#dMzMTM6Wv^lGPqgBKCB?gGsmZDfw$QS3fWPrwS+z+*k~00wPQO}{lLU-x zv{?BgNz$QyRDTCmNvE&lpfLuWBdg~iNy;{zV0}Lx^(C#( zJnrM7^rtiPxU&|*+&75FLm)^!AOg;(-tl8B=5D gSQ(rDb?hX7zm;SN)r{NdQvd(}07*qoM6N<$f-eBx;{X5v delta 441 zcmV;q0Y?7N1JeVLB!8MoL_t(|oXwKGYZO5k#(#6S;TD^uu{)C?ND4!^bb>{0$zPD( z!Yc)vKpMNOAS7jqU}=Jd+FHa$giS9bh2jUnT+-x_h$kxU-F`e4o15JW*k_s;zEW_@SiOBq2$OekIr6tjm>n z^lUIw=p#wev44IR2Nh0-Z$ob^2F;R;a*!k?JFetHL;2d62AF(w7|mGfT>{l?mG&-$ z{n+0H7`V1c+CIpn*md#fYOEwTo&E37D4k}__PVsOb5YWVfK?zUN}?%h5nF&Q|Kn*} z(njTRUuUGhjmqPuE%<3=PM>uFFRl!30NjjA(HpJbdNMINbQ+l!Q$m}&u?g@nr3 z6^S7uBWyvc8dD*`f|RivWrK;e6LBGxkl2{max5rAg--=qH$D3?_-rR58@HVF{O)`2 z-m}gi7MF?t4)~aDB+2Pl@_|8;Gy&jGT^^1s_5i>JfTKFi`+sd56-SO&5A15|(o%8c zr?R$F`716}gw@@N*MR4RtQs%lLSxPcw?bHeT>!6wDHNbIAh7L+nS)GL;PCFMyWT8h z0d?@u5sQ~I7k1xd>MeXo88|8*I$$V1?Nm>{HAym4iB1P2CM6K^oTK;2>jIdaZ9cuW z+l>kzmI1_4Ie%rQXT#)4i)E$?(tz~mQdhejw{9ha@-Fai;6qX}(*3mZ@)=1+n&GAa zh718mGnm|)RyfIKgeL%S@#>hNo)O;`6Ot4gBy9k3TSO69`rO|~#m^%gO?qpA4fBm=NVpQ4S1xbeynmiICjdNhY)`8Qzt`}*xMmf3 zxB@_5*<~-T6nJZ^0@xD)(CW`M=kCd60esJg!e4PhuW1S0i-24);BBC%0a>GZhsQM_ zZ|(=vBuHPB07;&c{t{=IvEKy7fN_j;Jr9}WBqHOku2KMSox+$6C;#`fQ)5^F#=k!X ae*xF^SrJ!XV`T6E0000HKsy>1u0{}W8;>Sp5J}% z-FxyG#QZYx-vJ-ejU+k#LOwJ|k|qHBuF9i<#SQ@20B~HT`G25^V}0ag`Oq#mt}N&y zKa{nV$e&T6BCPgyv;w@)vTC@9OSKsv+zep>wgz4YV<&h5U*#GCt&FmO~pw8v0<+%BJet&?P`GCAuF7#Bdu3l8?9ux!Kkwm*f8H@3<+0a%>VrGY&W0FCZUbMBs86u`H9DEuWS^y-$#dJ&LI2E282GC)?S-r-3F z$ea7lBo3071wfJ)q`$yvYU~$*Az+*!S<6EvIhv4BJF8Lva2;*ThV$1iX7n{+{QG0@ Z2iNskR}j?huv-8C002ovPDHLkV1k^20B`^R diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_AD/frame_7.png b/assets/packs/WatchDogs/Anims/DEDSEC_AD/frame_7.png index 62f83bdc322e6c2493576a8ad235bd4efc048f1a..58f876124677e350da4b3a523db3605afa673a6c 100644 GIT binary patch delta 596 zcmV-a0;~P(1nmTnB!4tXL_t(|oTZboYZO5k#ecI|l0_tU2E;_7*?^*zwx>k0O6)BI z7P&&O5F}PAL~aWU8!>;vVG3=uvarhpECNE%bVAIHiA4&@Z48p$upB&M}O2fFxP$^?r(dl7u8h*upmF2Xe4yi59*wQIJ&g zfB@pnDk(td5d$ney4)RuB+HU_CM*>sspG|(@?mq=ur~lDco0JbmIjz&(gv}GBmgLS z#8{ZB9Gh<(xPK+B-M^sLv+gY?4B720p0)W2r6c!_znrY)CsNXM;9{~K<~n?s^NYzw zuc^|ZY<753J?W|9(kNoowGrJyFM-kzA6NqXst4wU!?hyk1V?ZP9SFhn4!u4Yrs z+G4k)@5#z@9=m8`sx1nwT=|~O`Dm~$tm1rkba3b7On>!i=UsMgMT1Yv!#CZ>PLFyv ze)l0Pzj%`mIdhzb8l~>k$Erg%9IvhdJ~H6gkEUObkICTYfwl8@zHXVk#FSkWID&4E zFb+pce%b>r{@{_anFA+F;zr4GU~!b$>b<_HV%~;eaSloDY__(*>_8uFbCoZr^m*4d z3dVHY{!N%vYd6^!g$~H-t=4WL6=yo2E~)ubn(ii9Qd80=N%A_m@qsi3jA#Vi%$h%a i!sIZ>D75zuvg8*}xM^;qo4+ss0000k~_hUNR5(M1PqlcwgRrwF+#rC&`uV za(^&#PEy4S+9Do=um;2)%5YZi9K%=#NRq`~@2A)&Nk~$JEo^gsAP0MvXyF?Z1xYmz z2q509k^+PtF~HKJ%iS?ZvMhOL!csw!I$o?PA2xRldjn8{2QfroX@DsvZ4g^X0)V1N zjD@MnvH8Y%MZrkloJWS)1QbI&$y$%gI`PBPC4-E+*??uEU2pznE|PmG9Y{j|SVqD$aLD2X{`+RDZ8__Of#;8hlzFzUe-8depP= zyANUc#hZM{nd3CnD0QbkRvoh8cy$%tewB}b<5->rtG4?5p;Wm zaX4D?(;jf~2alA^95`7LH%gWRi=)g|Z~LZ-c^iVoIV8EW+1diL1AVm3Rlc0k=Uv+< z7}Ih4V@y)5-DF=BIv}gJTDyrM(jRzd&(002ovPDHLkV1n957;pdp diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_AD/frame_8.png b/assets/packs/WatchDogs/Anims/DEDSEC_AD/frame_8.png index 176ffde5c47cc48d8143e12b2036fa95326022cb..1633b580b779173bd74e088724fc51872d68de75 100644 GIT binary patch delta 536 zcmV+z0_Xj(1hE8=B!BoxL_t(|oXu1{Y|}s(eg4T0YDA1cB@z`fQ3ntmJTg>?g@nr3 z6^S7uBWyvc8dD*`f|RivWrK;e6LBGxkl2{max5rAg--=qH$D3?_-rR58@HVF{O)`2 z-m}gi7MF?t4)~aDB+2Pl@_|8;Gy&jGT^^1s_5i>JfTKFi`+sd56-SO&5A15|(o%8c zr?R$F`716}gw@@N*MR4RtQs%lLSxPcw?bHeT>!6wDHNbIAh7L+nS)GL;PCFMyWT8h z0d?@u5sQ~I7k1xd>MeXo88|8*I$$V1?Nm>{HAym4iB1P2CM6K^oTK;2>jIdaZ9cuW z+l>kzmI1_4Ie%rQXT#)4i)E$?(tz~mQdhejw{9ha@-Fai;6qX}(*3mZ@)=1+n&GAa zh718mGnm|)RyfIKgeL%S@#>hNo)O;`6Ot4gBy9k3TSO69`rO|~#m^%gO?qpA4fBm=NVpQ4S1xbeynmiICjdNhY)`8Qzt`}*xMmf3 zxB@_5*<~-T6nJZ^0@xD)(CW`M=kCd60esJg!e4PhuW1S0i-24);BBC%0a>GZhsQM_ zZ|(=vBuHPB07;&c{t{=IvEKy7fN_j;Jr9}WBqHOku2KMSox+$6C;#`fQ)5^F#=k!X ae*xF^SrJ!XV`T6E0000HKsy>1u0{}W8;>Sp5J}% z-FxyG#QZYx-vJ-ejU+k#LOwJ|k|qHBuF9i<#SQ@20B~HT`G25^V}0ag`Oq#mt}N&y zKa{nV$e&T6BCPgyv;w@)vTC@9OSKsv+zep>wgz4YV<&h5U*#GCt&FmO~pw8v0<+%BJet&?P`GCAuF7#Bdu3l8?9ux!Kkwm*f8H@3<+0a%>VrGY&W0FCZUbMBs86u`H9DEuWS^y-$#dJ&LI2E282GC)?S-r-3F z$ea7lBo3071wfJ)q`$yvYU~$*Az+*!S<6EvIhv4BJF8Lva2;*ThV$1iX7n{+{QG0@ Z2iNskR}j?huv-8C002ovPDHLkV1k^20B`^R diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_0.png b/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_0.png index 32b180df35a991561784ddf4f535bc7de53f4f2e..d9e4b42f39360d73dc46ba6c48ea510c3a23f7b3 100644 GIT binary patch delta 549 zcmV+=0^0r71l0tPBsLsLL_t(|oL!SYZ__{+ho7@e?j?IF5zsu0JM*X7DLT`R1-B}ixhn}0w+17KUWv+5SG8`pIo zvV8}7fV#om0O^c2PoUk7#$TK*#K3wFY}=bI1M4HO%f9RiP#nV9igdt#0(poi$shos zfjQXV(5HNdfz6;Zb08Q2JOr+k8(l#@ElG^Keh{j< z8;}FN7|3OD;tNs0j0`;}j{~7Q@xS5A983Vt`YFmX$|LsuG)x>#_x8q@*-`TrmB_elGpO(G4T|Jsu00000NkvXXu0mjf8>RMI delta 550 zcmV+>0@?l51l9zQBsLvML_t(|oL!SKZ__{+hM%)dky;vmHb3`%-|O%5Yk;L4@zZ|nS^LUD0EqX%3~6EnZfr3ztQ89&0)hpF4#~hPB4C=Uaj5b} zVf9JIG;BcGzc{GphyZ4PC~@?;QJ4}elIy2@`X4Z3wRSBIGugR+Js+!Ik@X4{bUz4H z-3`cr-tph6LLWaNd#$_u;w-y#uCOk>g$G$^Lk?h9jmv8Q< zS}}t%+FEiY8bC#uUmd4N>9!cI4t{9gG$sZ(HE3D&h)GpqvvF-@TR=*>5SR<5pV+U{ z(kdW4KJs}XU=CcVA@B$whyaj<3ol?XK$yte!hKyU3_zlL!jEqQfI_oW*$NUc?mq%7 oeQpB8eZ@8eC{3!}`-T$!0iTw=x?nNhfdBvi07*qoM6N<$g7@?D7XSbN diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_1.png b/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_1.png index a72ce9e56c127708f6d4f9d6bdca18db71ed333d..41032305255a1748048889ab8190f125de8f9cf0 100644 GIT binary patch delta 530 zcmV+t0`2{;1giv)B!BWrL_t(|oSl=si_}0Eho6~bH{tGBf~>H`3b`v}t=z_THwcQ2 zU}q(yyw1YbVgy@D+cRKcc@~EVZV|2#{{XuK=S1be4;EcDaI=ZUOg2gD+k|=Y`@J8N zHvp5*cT-4Uh>MRe?9+!t0)r0=3rdIq#s~|79gGBif&!q5czun&IEC9^&;}s^{7=BSP~5mwy4B=} z1b3j{D5CjsNPpnB%49)A&yO3Bcp*0#Z7k@j;GW#46NzY&f=GyE=e<%~=}ePD#Q(;k zdz2iLbx}#$RXie*s*PTOFm1&VQ%S$2IV2J$(2e4dk;HFVPQ6KqiCSg7#4}z2TMo?o zFNKjO&~ui#*slvOfjSh{sDFYC!!MYgF{bU$lR{Q%--%=`Zmiv^E}Tx z@5cg+KHZ%`27P>dc;UVwWD@ATKXgC=DZminfM^RVfghj%D1Q?kI;qeAJQ#8!0gG^s z-%|D@02ed}h0b~IfTf0D1~It=5dAUS{*18*2@rk+&V}Lzp?~5G=0Qw{EeC9-W0D{s zr0-167cq-fp)B7WK%SbYDhGgzi3wVfBGo)>VHj`^q^3UwBlE_*&ZlY|1@YS z6w}68T>|bah`nUCqeI?6wV~1&3Vxo!(o4)${TO~z6)a7{AzTCBHJKXs<5l%bld=Qv z$g8wwQ*Q&1dB(sp282r2PhT7>pcp4iK$t=J%%}Ye YsOpCCwU=}NQXh9i_lu)1DG`F(1|() zNejh*Qt&aZjwlQjqG3T%TB6h`)&dC^NWKbN_DeQ25NT0SW~+HOAH_UHd*YnAb;`i*~Hi`a-4CmpXK9Pfh$O@E79N6#GK0L9-M!uHOM^gaGWW^2-WR9&_$n&U*hF-z4!+QT$JzkD)E znG8n~@}Zs};7IeXdSZ$zkV6pKyD$T(1xvax$COaFL@uf=e}^<QOouX&s>}qtaDhogcpj z!;=3M4Y3|qGKq=7nXX=Tgnn+4rfb{<_UUBpjIh6 iV`3c&JHCyX zus?k4C(##p6Mr`?9-h5$f)f;fZV21E_tR}WM`ml%`?3;@HqZ z2bkvdtR7y1EX}65K}V7F-pM){$zZ){(OOD-??KgCDu25d5X#n4hNBD?jm26S_A{HE zE|ueXDpI%0!{DEEDXGFQ!KatAugQl}e>n!Rglw_`n)XH5T^*&fNUI3lGAe!Pqj&dX zFf92XXo&T=DwCKP-0XS^;^mozUZ)UQoNejOvcm+=x|)*fz3#GOPG?Jy<_UUBpjIh6 iZDJh?qVovb zwXjVuY%#NQBfLc+F^TUPWkHA&?gDWjDNJGratft)Zz3^nY;X~S^|}ut$Y!Q@O=s?% zckeyF7Uw=Sm;E<~^PT^9&UeoD9S{AtjQ$re`2@h>Cjc*yB!9glN%~u0zvWR`6Uj>+ zWBgziBFztGR_xOq=m2d1u5r!$5oo8R0}D#Dd|hJ#mVh{Bjr=mHz*^v^oV3X*=p=*< z0Ac`CC++vZ&*?V-v>)E>z&PLo2vSn;ZRn&L=|N33fa*Gki8p^oWJ($;TVM_&8<$5GZkl9`#gcfEJ;n=Ln& zuFiX#Pk+cmw*S=O4wYX!R$X?NBvU><^>t@s_OevXB_Oqj%qcC*)uG;WPx#iQ&Ne#X zLvKTswcT0U^pN5!Pk-{#FEcI;B}p3>cFfI<58|9cfA+?xDH4S#Nu|+jPSxqks<}NJ+uBp^Ivy2a%DkRIA0|S{f+#Wncd5gCef;W=G!N z?ksYT|5h6D!+$lTOj$ZqlA@NgkaISv04qIEj|Oo&v}0)ut4#!imM}k?1F?^M0K&zJ zT?c^YstkOuwMtp@!*1K21=tIDk>kvJ-;bp}kUGKI2E7yu)&)DC{hlqw@+4faUf#yW ze-i>G3Z%(@YwB+LN>eS#M1H1PBxTpm&8sE395)6xKYw`VDypc-A zd=e=6dg0)%{oCGEy2m9=fBtT;R+>Bobxe1hw*K5a^!7K`hgtbTW@_sG)!yqrZu)iM z(yX`fBY%0w_BR~pQ2C={)n!LXGUX!^KXle-Z%EZ#0#du*e5|>dI@Fu)7als_*+M6L z*lnn?UU1bmJ*4>J^QT|CJ>_U9Nm@U*b!KLC4d)d4)7OSgK@_GWm4>sS&nNYWAmZ-8 zE7Jh@MRUs=FBJe4LbN>}btNN0AbF|3?65%4gh!;3k6n1&V#m@Ymh1i+g+islWcFK0 zGV_TtnVRmGUz~O?WANQw$pK81D5@%yBr`7YKe-b<_4B|th5!Hn07*qoM6N<$f`12T AU;qFB diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_23.png b/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_23.png index 96e59e5153b9a1d7a8edd7ad007716aeba6b9cd5..677beccd9f1b2cc316eb35a7672385172437988b 100644 GIT binary patch delta 685 zcmV;e0#g0h1=t0UH-BjteFPOj#DJToP(mTt*e){S#*K?YDK4bC>#95##aKc!V>bnH zA*G0l=t59Ppjp_WH4QUT3Z_tADOIFmzK7_-G<}o5e&d@r->-`qjp?>`c{%6Y%em)z zXk+>M-;LgX8mtQ34PGf<@@{U>h{S;nEC)ZV6CD0+X+qLNNq@?YdR7J|fV@RPK25G1 z3cy+{Zk}Ag7|_b;LLQ=VFrz@hS_nAB6gGsI&;g)P7+Zr82Qh#E1H{g}TwRS!n(05Q zMM?6HNx#?ShMsoSkR-44loLzeKdu~r7;B$3?Yc(rT|LXU*Q6|x6ao&Dy$KXIKm}mK z%kD@H6rhk4oPQ}U7Z!+7DP_PucS=&_A$3&2yx|QQO zNGYNsx)2l+XckudlZF{71yd-m6fIIQ-=nmPrsr@kTh<4mxpuCy_|cm zhc=h5{|)qB0az8dyZono$-B47BN9h8sT|zd5IFpY(uAbvl7Ez)@~jL@0C|goe41Q2 z6o9o@+&sB}F`$*xg*-&#U`Bz0wGeQMDQpNap#wmpFt!FG4q^ZS28f+mA6<=1n(4o& zMM?5cOF!4;hW_fRAxU1DDQA|x{i8|%Vyu19v>P75H}x#vS(CCzQV2Lq_6AVg1r>k| zue*~uP=G>GaDS$_URWSTrIlIO zl0X2Rmw%7_dhNqia!^5teQ#ml_-x}K&g34FvLE)J{oqk;`4c69FDa@&ow;;7{b;*R zCsJ%;@)NfQ-hcbkDVV|!+Hr6Bz~uQYW9Jg5x_kwnueOG^p6D2_;rE6m;D!5X_{o+2 z!v@CjC4bH8-j9iWHszU?Kb$iT!OQ TKf6p`00000NkvXXu0mjf>)BHF diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_24.png b/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_24.png index 4b09b28e1ec9e846020d6b1a3a738841322f9f7c..e34d0a22cc0e7b51499b60a6c5b0047a86483b5d 100644 GIT binary patch delta 289 zcmV++0p9+H1BU~UZ-2s_3IX!}|Nlo(q3~aU;RlL47#}dOOE54nFt9+3aA08gbLbhu zWB=^`|Ns5}A6yIf9|wl}{4$`w3rn49vkOW#8P`C^XpEcx#Py`q`;7o`+ETj!;P*ot95T^@kpb5N@ nVjuumF%lyNP#Pepg1P_zRaRh@X`vKu00000NkvXXu0mjf`|O6+ delta 289 zcmV++0p9+H1BU~UZ+|MF7{MU_|Nnm!6$<|q7=EC*gYf|ay95IR0|N`h2nPm+KZl+n zJoeB2|Nr0r|G~9z|8ZcrU(Ub?SCIer-~WH#U;l@jA;9#X;ofQn3%CmV`~SYLV{7`3 zu=c|P7DL8|I~o`mAO^`_Ic@rCgQUDQ!eP7GK3W~kKxp~z@qcq~oA_BDfXO6wCsfT3Q9qw$Jl1HyARq%Z7ec+LP9_;cba$Awt82Dp}gMQne5z1W3_ z8AewF!H^}$L3%dBbQXgHl0Yj13YUT5vxdA7iU1=AoC$Gm6fpi`{6FW``~M6K(2%QR{>u=z_J#vO%O{3EPh!{(z_rx>|Mx(57c29Bge%@( zd40eA(Q>%c?0^6JeEw|sT_lGUxpDuRya#T}0|o=8&3ktsIgH7H-E4^r4(7#fgO*#Ecx`UBPJ4yV{H5DFyf|KI+){~todGlq9d zm?RJi7=JPTpL6T|e+F2{)iM8Nh+BKZ0iop+!=EQHYzN?4>i_@yyNf-Q`9H!H@2|YR z-~MPh+-df||9w7xHvBG{s@{8MIB^o7o|lWLZ_BApMoIL_t(|oPCl{OWZ&h#($HIO|T0))FOpS&9OqklUVU!6z>)4 zK|FaV^kkt2kFsg$x%~$z-zIzNdGdd7fw9 zKLc6V^oQ(+ya6;Lh6l+kor)?l2V%*1!3LK9As-aAPNjS&#(xzE?cpR9CpRypWbL6! z9+Oo`WL1EM4=%oz$Xe!GFxC`t84&k20>i^f>IY^ku@jq&8@XpNoa+}Uz|*3P3nvN6 zjK=x6ipn0I3ytT%-I(S0?PTwJsu^!QD@=Al+yR2e9M#rDF_3koRQpn?Lh=AeKiaM0 z(WXkT+RpncZGReyJ%XR#0=#VJb1il8`%hQS=AW&T*v-SmudgY7Up#a&KWe|!9&Y#1 z^mJIy7e-?D#Lj<%4%&_Y4Bhyb4C=O7!q*uo53~HUIzs07*qo IM6N<$f}v61f&c&j diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_27.png b/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_27.png index 19de08d59a4a3f3ed092a980c140d876e964bc4d..f2b51aea3e3aa16f7dc2db249f2397c8a052c459 100644 GIT binary patch delta 655 zcmV;A0&xAQ1*Zj&B!6y6L_t(|oK2HIXcR#d#((oNmrPEKYq)3-aVKE01SBaeL=$fm zi zpj-)*6F-cq!6XR|oO1NNIDDA|@L0f!x42=TrfLvel?Pgi8jc#^R1J=_9q67B=7>`m zBw?PACyG;qv5*29P))J&ABJkCg9!g68C{X4;9 z5s0C`3vCR5%zuFg(;YXm=uKZW-ae8>;3F^|AWo|t58``6jPsSWH(nwjPU8%XN2^j7 zU}|b&aW_Jz9xxHy+F#4_b9h_Ci!S6#-M1MENE%@8E##X!-3&wkV_CYIr+XVY4GmQQvgO(>tSm-0(42xJn7h@qOJ{l zNW0=r^C;a=S$^dQ4Xc9e09&(LtJjqvL3Uq1^Sk5UmqwxtEfD%PDHLkV1fWwA?g4C delta 657 zcmV;C0&e}M1*rv)B!6&8L_t(|oK2H4XcR#dhQE24OC~4AHC!}^xD&8g0+JLKqKP+( zMan}`h=ST_A*7QOYDS5+xhB?E*$9G#rE-;El^}>^4iyD0a=~aWxy`P{>|LC0-thnL z|KIxuKsg}-UU!L9wZJU@rGg}vxPzSMo2p@5_T_TECixzo)+1TdDRt9iP&k<$Qy z@s{HZ(ygO!3u0)IG*ddG$C@cw5dR>~^1Y#f&!{jhKYz25<@w<+n?8`j%v#>veE;TY zU;Ni?{Gku8lTa`bIa}H9^WSa&T4ZsW_B#gujIEz^4W9xqqFN7I%MqYUg62ub9u;+M z*hAVCcbZ4(hRX6QKWJDL+77TayR~{<2@=}w>t}v<{QJ^Kl%eHf6Qw)r$9I~|gWV6# z&i=$XFn`5nygBQ884jhH_#;GCKz9HXyn=SybX<}C6VD4Qn8(1x%}>P=3(|_L0v=P$ z%vN6B?L)A}c`bGN-v?meMblyNJr=uMM9XQ4kaz?l*M}%uFiC^`whwDNWpT-yQwRVi0AQ~KX_f_M(D67@007Qz4Wc@cXlmyP>;k?} zR30~ptnN5@_T2}roE8)R{JbXW@jGEz9h&tZn3siR6!H+Dt^oAR^oh-K0!*77ol|2Z z0DovA#10d{JZKnn$nPby7)RCeOaC<4M|kc)+gML5D8YaF7_h|iin8ZbQwzC-`{t%M zG`uO?$7Qs_#k|%|3$S&VfgDQ>CY@ItO;PAo{2Upm3SF(%erfU7@dXF&W+lhVBpd($ N002ovPDHLkV1j*wrRe|w delta 368 zcmV-$0gwKQ1B(NYB!5y#L_t(|oYj%POT$1E$G^F>Bw*DnP8OR<#Hk>qI+S)2M@JFC z;^-o{*5MY5W5?ps)jy+9p`fEeCrL&JwUq|@>&$a#xa3aI#l^S0cc1%y-`%|f{(YE! zRIn[S3&fjo4@H^8)9);FfEX3blgVz(L<#yna5iQyy__J6c#D=l)tvQT^2d8i8V zgbGBC6pM3G#W)G}TRyDqgrz{6MS z73IfGBC9iskA3%nE4RtzJwLCBy5de+R)?utzdtKUOAv|>ppFFe%-PuC83`thHWO42 zBoGe`gxKK{q-hQYZSuSETg;7{oX&m%l{VQj3&78Kz>eGGW)c}2Gd O0000R diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_29.png b/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_29.png index 4655efbcdcab3dd7edba7711e1730e712c5cc643..8cebbc7363f2f15de03edbb89cbb841bc27a233c 100644 GIT binary patch delta 199 zcmV;&0671c1DpepBmrZQB~Ar^qJu&Hk#}={g#yeL{?7{v_}_p3?*LQr|Cz&yAN&#% z;67&0d0@f(pNj=<#-Edye*F6{vIj1}lKzw9|9wRRgo#Zp?=}Mi%;^j}ZrHxA`HmDIpDp;hk%O3lkwF#~lMv4tc%}X_ zKvThr!e3daBd002ovPDHLkV1muFDT%D|NXxMOvV3a4kv!_OH6?K zm_6r#1@nI{7PuLIPG0))@4v_%xByG~Pmcfh6%7z7ehL5J`1Sh&T;RXmT2@|-R)kCc zm%o2t`s0ZMLZIm!hv>fB3=A-*Gwirw`?}^kQhaH0pRmLA7AMR&XJ;Tf452(=B;$$2B2)y z0C^0sg+WkkL*mc*-0GrNbrKH$Ch!Vi9G)9>cMNk7yH6 zERbBSAh${mbTA}t2QHGjE{fHZj?w;)?%of0KY>xZmEdlQROXzTv6 zyzCIi8a-{%$XUbKe=^!4NU30$e6LBl7+1(+nKsm;`D^^zX^R2S)ENfwwY?i_0%+rE z`4mnTm&MQ#H1)4V;Db}oV$CoXWJS9Gg&P1=Z8gIQlb=d=d$RhhunwB_OU$YBk`? z{~`{M2Z9=K(C-BxzAq*X;2{(hzyk&^5>x=>FE*Inx6;=DPG delta 609 zcmV-n0-pWm1?2^hB!8?)L_t(|oK2F!Yg|kLy_t7u)8w@TI?$0`yAX9zqU|Ep z5HC{DRn5YMxEiP{R}s4^H9Qcp*iDyRxOjhni$J?5B65)|MO?`!VqYqxLkZ`OJY^1p(%};An;v!PKlDH^+VR7y@|ysv~_=3 zUUrCMjh?n>I?(;+TM*d0km;C2aF)%qz-Nl zii4vaT%~rX2+j@;;#?4~c8y+otY277~ y;E0!A-^d{BxsitN+5qKG1&>hE9d%>?0N)abbzRI+-VG%H0000` delta 403 zcmV;E0c`%R1FZv)B!6^CL_t(|oMT`h4JhE3b|BF>Y5?X3PzDo}<`F;>VBkR$FknDe zfg!+zM%$xH{6Y^319mhOZV7NX4h9AW2KI07KfqM{U|?Wi;P^Fz1H}mWFZ_Q{&EPQj zgR0{Hc{G7P^8Zk@$R)*JYd}^}|3CV_3kL%O0|O%i0|NttfPbn|i1DcnE8q(LEJs;eWRLIW837@Zrw^xWm}ztQK^bXL$gjVuP@TL)rs`JN|XGemHRYJ(5dJ zzB3#++JeyX|E?I%fp?#f!mx#bfq}sTDONtOkY~UJAc1V{|Eq>U-~&Qf0KtTq!m5EL x@LCEb+K>U%URI3ciUA1ZPn_;09Y7ol01}9GUG0rorY?dAItWFx3SyzQN?+2%A$|G6k2-ml``)?d+LqkACTn35v|QelE*0YF#%8aXR!A(5C1CL{nfV1EYyWJOOQ003rIx&-G2 zvEJt7U{Q&drBDf_saWB*2`xf6n!wa504SD1LtS!8T5n4Mi*{syjRpYn_`*}GsbN@!PKQ(;%@%!BgziZRc)J=<`O)9oiq~qJHLHZ2+@&GaWaMb->+* zLCNd;>GQ;}H-A`)9wg)Pqo)8W@uEpDOx7jwU=%NFh=D0OrHzw*38w$JD>9d#chv#_ zSZnuXaV)qo%4cpjCI4~cdU?N44Je##u0-EhS_g15Ike>ciwajKB#1 delta 415 zcmV;Q0bu^R1Gxi`B!7TOL_t(|oW)bWOT$nQ{`!(Ou`L({2L(wA4jsFQI!MyRQKSf> ziw+KMQUoW_i2p(baS^vJU7SSFOLbP$SW6~sbqmA<5jL-O(q#EOHr+sJOE&3#RC$q z6B?a_6izDA12K|9Zpl`(Y+8!}j>a>#0syil(?}In&gmU7B+-ryu+{)T8ee#B*ZhrY zu-Bc2=>#jz(4tdsc7w93+%!nCS@Ib>4cocj8jB@$AO)+>Jxmn&X)j|wsJ5izUEUW{#og7;7_o4vUWwT}0u8t0}>AAD_ z_##`w)M9fB0I`{5AW*xFarqeVI`Y#mOOkIxO3eSt{uuDPzW_~vVoa8riiZFI002ov JPDHLkV1nN6!4Lod diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_32.png b/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_32.png index 210e2f7ff7888d746a1d4ebb7ee8971822789318..166892f6db7e4595fc295cdd00597d12ed273c2a 100644 GIT binary patch delta 465 zcmV;?0WSXT1M35jB!99=L_t(|oQ;w(Xw+a7$A8J?yr9LV#X$r~+^$=pTsbYpAkt9~ z2SJw(6*r-DDTvn;3gRXrICbw*>?lr36?75=5kYJwuVBG&wDnBC%jb~GmwdT$^*=rS z@BiNWzsH0Bh6P}G!z2!1YK)zS0R#*!w+VuNI7Fupz^;V0&VP({k5?+fnzVF6VD@L4 z$}2u$p|q8hn#N^|leMD4fVp`sAJh(iN4nAIaaSYUeOKsHPWvT7`k8lp09UwiYS^&5 z09V~h!QcKx9DtSHj+E!~Ax`7=%Y)5qodA*t^5{q=N^mB=CVzB#2{`H4g~}|V+A$zX zzrg7{!WuDOD}Q5ew#=@uT1{Iyy@9Bn+Ih7M7+whOhp+3`>(SX6zzP9Iu1tN~zT5^d zJpj4;WPA4AT{6Y5cKc6b{HcKS`Rv~FrH#>ZheA26H98O9exC?31>*j_&+ix7g^R_v zc5g1u<%FF6QvdiO&P!w~iGJ>Hffx3>erh)E*nWO6R!T9@aIkT4Tr~iS`E-}&v$gcN z8O90<04ntov3H>$KNi)2hc3hLPErh(sK@~dJLT|IasdAT!G(9RowNuj00000NkvXX Hu0mjfsov)O delta 468 zcmV;_0W1FN1MUNmB!9I@L_t(|oQ;z|XcR#d#(%rF=PfZLn_wY=?Ae`NKu#_RA&W># zK`ex%v543O#6}2SHXw*y2!T}T(}*d9l@bN51VKcQH{r>CYS7|#wL`(AQOh!s@F}x-BJG}^;xa?wS22t)9 z5X4*Hbe>@in}2VVv9~*BS6I!4t(@LLlrJ3YJ_U?w3*3+2wrud!(@MRw{O-qfKUE+eJ^b=vv7LLd z@ZRCw$8#AWZ+@+P+6=Q4*^GjpM>|kW$NjlcpSQi-SWQ+j^idygUmaH$5KlWr+)HEq zd9p?c#&QY(O0@#<`$|sU7v*ycU4$|4fAvpMkpuajGI;9n9R2~pg?F*AgOzgt0000< KMNUMnLSTY%kmb(+ diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_33.png b/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_33.png index e2854e7a7b43abd6ddcc77485b7bbea43b990900..4f8e12bf5d242d80bdba28aa5a9d610151f113a9 100644 GIT binary patch delta 429 zcmV;e0aE_P1IGi9B!7-cL_t(|oTXDeNW(xFeM!?MV6o9bs!$R-brHIX*w&?slNJ1% zinu#CxQGUHb#qV`9Yh3|j@CgG6y2P3utEwB3N19)q9w+hLqdMevo-rf46#y&?0QDC{RtEMA0456n+yP2o z?Ki`*w66LK%aO3Ag5`AoF;Fz3m5 z(@xGo^EgpJ2Uyb4Ic?QPi|*E%Hk_h}+K}?gdkTAg*CyZx!Z?1Ri;C)}8)Ue%2U)%W X`l4zE`km~U00000NkvXXu0mjfjr_;* delta 428 zcmV;d0aO0R1I7c8B!7)bL_t(|oTXDeNW(xFeM!?MV6o9bs!$R-brHIXXzS9&$qN2W zMcf@6Ttox9x;dze4kCg}N9!O8if&FiSRn-mg%%oY(Gp|MAt66!S_^*5<=(yb<=*2y z;D04|I^+T{vAe!O(l!;U*dMIDMnwuhlmgPA8NUFQS~K*4PJdfZ^Asaj@Duotx@IM2 zGX#BC04kPO8GzJ`8BUK1pg>3)zR)CcZ}^%@hGhDFD=!w9mJJ91kUaqSH~=sJfOsM~ zm(ydebz_;3uXWSe_vjPkxj{^)=~8G6NtRf04!}m;B#->2YVk!NqnhN24}Dq^4SHh diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_34.png b/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_34.png index 33468e1d952ba8dff70de3014285853c527710c9..3326eefbc498a878fe801c26215faf99915d4d83 100644 GIT binary patch delta 301 zcmV+|0n+}A1C9fbBmq^CB}#wQ@<;w3iVB6K1jZl8D(e5<|NmbC!I!XFAOH3JKZL-a z{QvL&*C7PB|2h7@_v!yXxS=WEZ5b4p|1&Z$Ffgz%FfcF({Ayshww|E|uEqZTzyJ5x znZG04A@J`BBin-=4RCip-uL_d@z6H784LneW|GcR42t_~00000NkvXXu0mjf(pr$j delta 299 zcmV+`0o4AE1B?TZBmq;AB}#wuoBTf%6$(iSj6aZ7)c?Kz|Gxx+FJZMl{_FdH2!TKO z|KIJ;O>09@Av)Vp>1$87zC`$B%P-oMhGyx@Dj3|(*%Dvi7Li__H*eRm7Voa@IX_3OhCfZu*frJA~v9K{YPQg^kibw7s&wUo}?R)nwXW=y8 z&dfKnGqXGJKO%%6fKD|Wmot|sSUP8eM!Z@5JFm`9vfpXO^nW9|tXJD(gz7NMBU!fN zAvgeWo)eX?oppdAG$lh2Hgm=!H&$EY#8}CVtrVM*by~TdVmG^~y1Qh3NEbluX~k&I z^?p6h7*|uQ&3VK76q9qIXV(Dgaoqt5gk1pLn+t|86okhB&FP40Bbxwl{>q29dpr3g zAbyY}gT&>%9Dkz2w9BWeVDk_r@#=16tkNy*{&WKXh5*{z|#M< z{QaE;1X-nfs;$~`XTur*4fWsl?x)W78W0FQu*M$zSUGlc8WO=lywV+9+?lFv`oiLt ze*H)F`b2(c>oOmFy=1VSv3S4T`q3%g#Z+#o8)p|x-gJw6S(;gR9um%o{fZDc(F`L4paWzQK(b&cFRdp+%HiIp--SE xtVv09_O}%y`_r6A9f|QG6Zf!iM?jSB^Ivsyf?Ko>ZeIWZ002ovPDHLkV1oM7_qYH6 delta 503 zcmVhiA^rgp>=e;kFdQk?LEE)|w;4}Qg&y4iXeLdUHCNaIF#Wk;1S3Is0MMS+)LVH6fYTS=z24p|IswVu zG##d{sAV5LzJEN7Z2{<{opkNHOFs1=^3FGZ*;^la8!JE{^ub1U@B7-JtJ9DQ4wA?5@a*PPW8Ei~bj-`& zsy{&crmf0+@cCSX^@wYCx}9&m@m!+Xb#>+B!gz<|({SR5 zgHviec~~XzqM(3R$De-;CMKr?fF~0sXPzyUwuSwb<95$+a1G@!G4{sVP$f?JD(zAgX&002ovPDHLkV1k4r`n3Q6 diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_36.png b/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_36.png index d8577daf8f3509ddb83036a3c32abc8db810ef56..67621e00b376a1615d0595b0df59574e35eca296 100644 GIT binary patch delta 591 zcmV-V0lp9UJ#R3 zPvyCO08nV0RL9;(e96ZrivXOHaz2vksZKfzm80%dF}xpq9kjWpy9edacv1nNK^$+J zm;P4ZAX4}s%6}~v80!6*TYUj22n}@2iC98`gWv&}T_P`s`-(6fj1undm}p6fY6Ku} zc7Hh(cY_2#wMEh=F1@8rxH|mn-nSlV2--c>Hz)MQ72^_KJM$`0zxA??bd}z(TF=0? z!rZ{WOwH6`-;H;70Z0azPOPuIlzy-Yz*SY~y*fEJklpYm^wLMqpi8F>p_$u2ucH1Tn`0ki&Xh}sqZJUnd3WGL)3n||g(q2^E z_bkD|p-A8M=%kX|LK7iWgDs<8GeHy4Sh3C9Z5xXq)~B^mh~qUj`1Pe|7J^c`N${G9 dO;vw){sU|pkd}f%klg?P002ovPDHLkV1jsL8VCRY delta 590 zcmV-U0sym&9%29W!7~T)Q4s7n}?m;;;o>Ty65Xal* zrN0$8h!j4Ea(~MOhI)VIR$l-LLIYiMB9>6#Ab0>~m&nWEz9LKqTM2h}Othp#wE~bg zyT2TYyFmk>+9K%_m)=q*Tpj*(?^_Qw1nr*cn-hBDig5|Aoq3h0-+Ea`x=Qa?t!H3c zVQ%1GrWWe3@5Z~k03-uUC)QV9NF9j@S2HD cQ-62<18f?QmT9>m1ONa407*qoM6N<$g6=*IrvLx| diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_37.png b/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_37.png index 174fbc40ad52436f1957b745a9b7ba80358db6fa..d4c0c7a91a7fab132e39a42c3a0c04308c463c5a 100644 GIT binary patch delta 168 zcmV;Z09XIb1k41GBmonVC0q#%?921M-#5bok&3tx7fY=$96Y{6Q{qPY{z7UGSo_~#~S(z XM;MpnH|tfR00000NkvXXu0mjfH>pdR diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_38.png b/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_38.png index 2d6466093cf82486e935741ed2f7d3381d64edd5..bfd2d04ea2efc9d6fcf62dd4285bc46970b52391 100644 GIT binary patch delta 372 zcmV-)0gL{S1CIlcB!5;(L_t(|oXwIwFGEonfS(?RHl1!IVsyt6kvmBvB4-kd#K2_G z(N8c4U0D19n+|?Jhi(Rqh}38^h}=O$460OHZQUB~?ag@&?dl!wJ?A;k`*A-2IPC9S z2H#(O00ls^M8Fm?s5Cs(=VB=ae)WN%%o%_N=+1nAE~I0l?tdkrM-YRbifU$yv}4fD zzja?+tZ-6gjj@2yo_3XO;314z932fEUZ=I&+gJf00e~J)HgwxE=35Rq(N-6gV}k@n z8EpYAr+^IpShNfeYWmuwY>=R+_v{+zr;{uNn`|b}g~98#r~ya4{U|vab-DH|09TI} z(x?uSqubKd`fY&#H|fca=xXMa3J)V=cOj*$F9)aXPEQ#5`&DVU*;XLB`0uyJ@>%Y3 zvMuhK-1`andcYkl!W!DtjT9WYWrEBIWAIxHi`Y=ZtUoF4D8r1JV)S7DE`9;U(@;Q1CRrdB!5>)L_t(|oXwKGO2beXKu@k$TRNqJIGVAFNG2&Fl1W?y2b~=3 z=p#6YcG1NbaI=FC(4m`yMMUc8<{*+mL>#Qu+SWFv4oSoPK-$%BNOI3T-%pYYz+r#q zGW`DP11JDmWkR+{K(*_%8-NoF~#V?{$2b6#nVtw TS}?a000000NkvXXu0mjf_foL0 diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_39.png b/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_39.png index 79d85a4f736d2b05b5fbc1d285d5fe6173462876..87def026d3469f3aa23008482ee4da0514dd626b 100644 GIT binary patch delta 34 ocmX@hc$RU(Ch0XPB0UBS3{hGNS*uq@PhkK8Pgg&ebxsLQ0L_969RL6T delta 34 ocmX@hc$RU(CTXX$8WNEV3{hGNS>N1>t}+0Dr>mdKI;Vst0LwEAB>(^b diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_5.png b/assets/packs/WatchDogs/Anims/DEDSEC_ANIM/frame_5.png index 700e35b29a48a56ffc77202dcbf50246f3602a39..3067396da04934d756ef335405d90979bbf3b81b 100644 GIT binary patch delta 58 zcmV-A0LB0M1^NZB$O1BM0I0acPrT9(^P6`8*yfz}e0lWu)9e4=aaFtj0IY-c5v68@ QWB>pF07*qoM6N<$f~aX7mH+?% delta 58 zcmV-A0LB0M1^NZB$O1ARGhT6tpLnGo<~Q#Gu+2H``SR%Rr`P|#S4=U5Qlb*Al86oXNM;LSC79AOBo;v-yuv1w zI-PPRj9l$IYEjMU?l1S`UieSeuXhl5t`_mwVCJ@3sUAg;jY%`PMBo`YdQvH2DU}TF z0)4m&q|g;8p)CNM1*VV+9AF?&!A`)#Ts}R*P&PI&{`%DI1uhaSi@;-si@*_1w@w~k jDa_<5Ey$@;=U4dvrB)!#0JI~-00000NkvXXu0mjfjHgaE delta 181 zcmV;m080Pa0oehNEPu}-4#GeXh2eimMMVXY1Vyk&2;l++l3syu5}=Y}kZ=ePgs$Kc zNE{B?21*9I4^2>gZokaS%))=NdA+^BbG;0oE#_{gmHJV7nV7cYO8^lQ$3Q9-tfZ2` zU0?`Tfdu*j6?6rFLSP1oz!63QHS7f9LN-D~2HV-?+E_|kozU}9*a!+S@j`D9qgpDNg77BR5Ia4F!*lz@|tRM8GA57xwJSR1C^V^ qYZ?J)+cky6i(r4>;aGa~_ziDiLpA?o*SeJe0000wEI?038-;|JA~>;Wk*IRro&McF9sCDjzDPXb zk(UYDn7W~oGZ`F&kXDGuU^`2%)>4`Jgr1K=D=5Uo3%x;%YN=!j!n;^Q>`=)C1WF>U z6n`$-9vdi8fq6QiLnykG#u9Xv6$n&8?R+sDowpGTzMH4bEbq@-p$7 pMgZD$O~D_X{e6dH>Cxjiya8cDHUB-zChh-zGOfDVi+skC*F_;*xqvp-jVPw7VN`)`QE`HBF`9Cg$;D7D#4$ptQJLkjJBxXoS zjEv?XDWR=f@muf4&6O=i48l{I1s^$f2-Tbl{?eoxHaQc#=2$Z1^Ezn|WNC6z`gCEB ze}Z}bNQc@geKf|27Q4pQqEjAWkY`ef^v|-#GGkssnxtTvD%-HniJ+cedaq5Bu}4pw zsG$@$_FjrmUP(G#oMix!!uVHYaxWtNrK8Jorwc=mNwglUM82;V1YxyRTVU=Uf2-CQYl*q_Fz{0000c2v*hGQ?HHjwP&jbZoKQB| zJ?w!KPKpDEZ?29U92_Y2Fxjn*b=iMl?Mm5V%hYa4DSKMfl+-wUP5uKHp0{_sdcU8& z-aHPO&2*&aD6`SlVS h1}h)q+s`}|?f?QNO{>@*BQ5{{002ovPDHLkV1i>4qBH;i diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_ASCII/frame_4.png b/assets/packs/WatchDogs/Anims/DEDSEC_ASCII/frame_4.png index 71061778403efdf903fa666b8f71156811cad44b..4bbe2bf3175c37b4489a10d1d9d79471b47fe16b 100644 GIT binary patch delta 189 zcmV;u07C!G1I`1GBwm$CL_t(|oW0S_OO$aG#qrPld=M)Wv(yr^Hk ri}S;OUQQL8C-m2xY}-{b_y6=4tjcR}qbI>E{{2x8JekjAVRkf+VD#=;#eW60n}VyI*A(0Y7#=TX zkr3D3eE_|gi~)>6g2Mn8;XHyJ2r~dsg>~IB=n-)QV_dyrI%aVbGA9sB|WL_LHxAP>N_i1%K<=n^bKlzaUZTdOF0`}B1 z%V%>XFm?#OKqDyt`v9a*xYryd7RaH7%xSt$%uML#ORt{R0{r^7=@usHpEljA!K9fg mKK2s|!X%uvT=S@ZSib;UZFv3>&R~-O0000oJ zjR8@m-3!o@N@>6t#5e;m2-grCK#+cbGHk1n0hfp(7z2}&BA25K9f~ltX%*Tsxhf2 m@-MxFgdj0{D^qWEjP(awZFv4)#a8P80000Kl= z-u(lrv$^M<^ZkDB_nv#T}ZGKr#}=bLx$Xn13wS#YG`nyE1W{vG4w6 z(K7%@e|)4I&j`G7B~I^nT6|gBUO%8oF&j2uO*-2}yY(Rt*ylx)7!`_Pz)i{rc`3Lt_ho zm*I==UXcEEhT*^~lEq&UaSaJ0msqEXR-TrFx uHPAiMWe_hdOi9J@Qg#vxymF?0A+`Vmxp)JO>*7EF0000HXv_?iZN`V1qQLK+^U z24f?nFbatf5iT5q7PWtiAP8F4GD^@&8yEhXg_PhTP{>V;kd_Xppb05q4Gc8X;=L>H z{sGn5+;h+Qe!us7&%N+3!sXnI<)=qHR@z$;3x;rAo|h3*`G3lYT?m!#Ok7}e+q+@+ zGyoDSFQo(Oz;D`l13)!+a9f1}zy_R?C|5wiNdamk#CeD4rK4-#2|@_l`ey#g9(%BB zIw_6d7sqM-5y|Vj*qsxGs zp^k+~5}%J3%p;buweeSRp6~3R;geN(*wlHFM9&M%`ftM<)&f+BT{LQ>08XL92|T=q z1Ax+G+J0l`lbnk0qM(5fSV}j)#o*WkXDc7K0Rx#EX{w94FNYJ$?rsrJeh8UYXMfKD sUBjIkk=*i(P#n)Cr!c@RX8IT64+FV)1Fsd4zyJUM07*qoM6N<$f`?(~UH||9 diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_ASCII/frame_8.png b/assets/packs/WatchDogs/Anims/DEDSEC_ASCII/frame_8.png index c642c5b43162ccc1f11d66817aa87b00d4d31f8a..f7749d3de9c17c0a76cbb8f40ea4fd8763a8820f 100644 GIT binary patch delta 247 zcmV)?f59q0<|JHszSLUdmFR7SWZ9A?$8QevlWeoaB z1=d2LS?l0hRtD3$LrfXVMdV4r0P^4=SukrX#7P2?E~F_5QCFK}5k?Vgca0{mV7Z8C z<^cqI09xtvNxefDfmOT6vU9W9Q9ii+o;0B(VLOt_mG79zHgGL9@N>xkV=#=c3xGa+ z@N64%07J?TBd$mU2~k(1g%?@~5-Zvv@gP~+_tg!DpJ;q`hAI;9K@T$6Q{wQLL8 P#{dMLu6{1-oD!Mzmvv4FO#pg&6pR1> diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_0.png b/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_0.png index e653675cb7e4f1ecd46f6f48468657e10c36fd57..04019088d451d6933865d42c618bef2ab95148aa 100644 GIT binary patch delta 382 zcmV-^0fGLS1DOMmB!6H@L_t(|oYj%BN&`U9hKPvtPG6}=%)Z?9>T(D6<(|ldR(#y1|4B+IkSRzG74y6z3g9TR&a#r<=IK;e>tG!c2VSjUuHSXfq!8`ML96wQ&G;?+he$? zUn9`KPUV6A=M_-FEwkp}=wv57f(6`K_0!3$RAQ87-145webs30L0}^0~ofM5iK*3*(wlibv z7a*WfNEKeWzj(pwgPLg@mr*OAQ!xwTB;#g%MrPA0$UQnoRuo%9@QStdgZu8$-I=v@ zu^S%K4G|IPoxW0$n0>kH)#Y}2VZ>RIKuz{002ovPDHLkV1kllsrvu` diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_1.png b/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_1.png index ef16a3ac1ec8cf2dab9eed90e63f4a034d5c0f53..7580e06725582ed5afaa03574ab31cd9a9419c3d 100644 GIT binary patch delta 375 zcmV--0f_#P1Cj%fB!5{+L_t(|oXwLlOT$1IhTls=6N=Iff-XX;9g2eV7ie^-tAn$2 z_7`-rxA;38o%|2!;_M{2)EfjBksB(cn&fpza%oPbt66e9JokRzeU}KL{y6yOfHwFH zED&o8=(z>d$|{i!8dt@_E#H@x;agj>){QKCCP`|4(9Tzdp?{lUTr*Tdc{KxRnAEE{ zVZDkHqpWVEXAG7>1dSK_w5hZJ#uZ5V0B~P576HP?I!WdLA-X`@fCvKJc-%0ps{nY8 zBUYgrF66_32~~g_47P$vxuvt_0f>9DG_<=d2M9i@d1Q|3i>YHmeQ0<)El-*%hiO7Q z9UI_^`EYT*7jT)fNq}K9loJ!`bdcP3jwDdtt&%4fyLx$Ir~T`VVoW4S|8;)H<%^Q? z&3rQ?$@i35&3NqXPm74WiZ?T(&y7uG0e>b-Ab$T%zp9Ks3@Xc@unaL;mGLvQ0^eS$ Vz6c((A@cwL002ovPDHLkV1jY%tI+@e delta 373 zcmV-*0gC>T1CRrdB!5>)L_t(|oXwN5PQx$|hJPnfV^yGbK!OFyg$@-+s80Zap{xwd zs54K{iF)BV7@2s7bYW&fVksVwSP=41q!f}ILmN9bpsska_38J2=esi_xGTUv2jqiK z;ekwhK+im&Rz^vE5MC`0QMF%s3hrGgn>Vt`nTUuq@3$7GrGG*G!oTwQ6e#Q?IdtQ0!hmVJm1TaPk`IGY5teI#vfl{~rF)%A*<_O3VTjpDDfJE}KI$~QAJ zL`3vnQ0XWhyZaMog5s$u{X(&+Jiw>b{DA%bO~0(i9|}^Qf|#dZ!&M$XO)dEbUaGzb TOUmuZ00000NkvXXu0mjfz{slc diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_10.png b/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_10.png index 764ed919669031ed4c012a90d028b7c19b962c5f..085b614de2e23dfd840a504527c7711e674acea1 100644 GIT binary patch delta 591 zcmV-V0`p+~0UL{81_=bTFbaYYFfVA4 z(nd?k53tZKjb?(1AU5I;a0~x{t!Q=<1=G2eibXPuVzv;OB^D$5?t3ieW78gVMe$B;H&}g0Du0L?4S|23b0Vjgc7!m z>9Fj*-I(@3J(#uirBBDw?p8%8fVt;zu_jzsZnG;DYZc)lTv24Dg$LLTUgtI^s7rDw zF}`FMtM$jSt<;~$b}A1K3$B{l19A%dq(`gv_^jge)3MgH++1w`?)niBHQVywZE7<1 zo03=g{7UDrIe%fwh_)douZXTXnVMD`m1zukh6tCGf+5VbF^%)OZ3@Wn zGpa_HAy0wndRPiB;UfU=D#C+n5LbzM0B^KHD+F5$18&x-l!Bo}HriCtY`X#?B?JO! zK}N8U4DK~0aSo)>AgP7uR2wKBHv+|(B+6f0nmvqzaDQl;7zoqcbk5C(Gh%DHBfcj^ z*%pGhf8)x|`PFePkdhoMyma^L60e)s?dV}rM=2L=@5R^q$|aR0+&+GC`5WVIMd;aA z*O%QIHetKo?_b!NhyF|@WvYpSFH09rUd*z5a0`ZHmC!~92KLIKB>mImy`+vFRc|?! zB-yU&w@92YabP2=C<)A*2cuZCdvIq&Y-k4SD+g38)}v`p+~0UL{81_=bTFbaYYFb}jy zX``j&2UuvAMl(T05F7CaxP^bfRx~?_g6Z5!#UhzSFCGg94=Nw(NnS6lkzo36d^^Pr=^7l*bQE1Hp8z< zGATA~$u7F*Ph?w3dn(&?9v&77H?;?3ldtdg`X_w0)=}M})x45HfY95#Sj@intUEL8^^elvQmL zK!%^88(oGh0cPt#DHJgu0eI&K53WJv67>MyXoXe)wi1TitWqfjLyL60sl0ye3W$UN z@Sz1M{z5#wSC>Q?kc7jy62em*Ab(s7_)@(<7 zkMpuE_|f3Tm7VjelS&{VK3I5J+^f>^3?f9d*+M}P+)*rS zgfv>`Bcx0bm?;9W3!)!jE$p?GkUUL#Q>h4s2?P-ld60+$&b(tW|9s`)zH{$6_gqgv zwcr3x06svu2$0hO-vPh?AW3;7No6ESKEP29FzCP3wPYQT)PKOV<#2&yJn2M|kW`N4 zAkv?fw4C69C2Tp0m}g^4^Ca1s7_A3V%aNzz*2wDtqvD=jyxjxuR0R2eRNd%sKF2=o zMt@H+hf&!9BMuT=tqs2sHOO!+pb2~Iud>??<{}09@L74sRBt>=G#6lHw-0$UFW`OEp z0~Cz*0oca2UG73mt-GT-Sf+cDmBGWaYiO%gI|a2FkgUwa8^){Qs)D8> zwt$%&q+wl=+EFl!r;~j*mXHeBVYD&j78;ubm(O(hfVA2XU$VyJ zA;Wm@!Ofj(chtFV%IxscbC=RM=BC;GSIc#leHcRSW$P#AKi7E@ZoIIz1H3hET)g_| zb+;&(|NKTt*^oy1RY|h5q9zS2AFo^ooAjhhhmQe@6+qHhKfdltxoi`dg0p!77Oy7N zW}V?oc}#mA{B^W9SBqN!w9+lx!3wx#jv5Z5=6E;z@E^CAUPmh9kSdAW&B@MG&T^!! h_DmzWAiGc>|3BC+Zfd$&ZA1V7002ovPDHLkV1h0$9S{Hj delta 594 zcmV-Y0K~#ed0rZ6Z8)Ph3=l1Q9B_yg@+`d{G=+ zgf2SwPw3d8kPL;o712N7Ik@X8(nj0ePAY;Wg(4y%7g{l3a*so9lHT!f@44SO-#MOu zdcgvo0DORI5ul(0egHrYfFu=>Bvp|l`2dFnz@UH9+$HOPq<;aXEr$)H+>?$a2}#vh z79#y^NvjDS7{ZpLjCnRTxFgBT#ArQ`T8<(Ww?PFdHe*$1f_<{+F!DN08CD@rOzFy zMKOyxliUFn7JqYMs<7xRB%z)|EC<9D_;Z59n*&lgGig33h@`0bHZf4g9QAuSm*qhH z&;cc*JpkTe+F$NMOry>Rc%vy^*y#2F_F1Mol2ML_XV%bGt9A-%Gawn|6K@!=hN}wP zjo1MBWIqj?8>txu!+1K`vttRVlo>`FQ(peDPD_S`(0@z(Zm=*nNpSg0*c+7A+v02H zOdc|fcOTr`zII2Q>v@$OTzYO(oMU#H-G8;*WZ8!y6kfJ|oS$-?C*j5mV>-ZFM((hW5nUxJ`VEA<9I+&yMmn-jPAO54Z=}n|E4ycp(bj7M!fwa}u gG?ERn3r+d|1K2KZYEm*l!vFvP07*qoM6N<$g0znj@c;k- diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_12.png b/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_12.png index e717fc6a0e9e791e66acd8bc8bfa6df165c35813..3800f631c0718830d0975e1712dc5a5255c87a10 100644 GIT binary patch delta 607 zcmV-l0-*i-1o#AyB!53iL_t(|oK2FeZxm4&#eefiXPT7kLLjMPhZ+cm6$k=iM<6N@ z`~mftN*>AX03|5W5bzX%ufy<|Qql$kRds}0x+#^nDPn-xdk}MXyI1~l&i&5!K$0R! zl1fPm0p2n7bn>c!S2$oV1xl|tmTDNNZb|YM3q85y1Qd|SMSm0E8uR0ESzzFR9B9B_ z2ug#S~%)Z^tOc1f%H#%va{W!8Gi_1U?vCX1JaQ; zWFiwu+VqM~Fn`Ku<{$b(;gSOcNXJT4MkSqZgYsmiqnu%v3_`GeXQM?QJtkdYvhxtY z_VG0UXxE~Er964JISfWU(gQgQ-VzpJsu<=p`6HDrB`%n)bA&N3E|o;pJiXWjX1 z;1%xH+)M%0n_`^9RP(fVo?pR22q`#7gFG514b$A_$$!GB)PoAE(Fd`64(Y~#jGNn3kRJ3uN=MrF z%{}7b@E{|^KnxCdFq`T=b}ohxGPHaB&d+S>PM0ozJ+}r!585y=gLP;qt*{>)=@_z%TAc)fbZj|%_*002ovPDHLkV1h|?6FmR` delta 610 zcmV-o0-gQ%1p5S#B!5ClL_t(|oK2IxPZUuU#eee=W=JrsMiVL-X*4!&VPUk`DJ&>0 z`~&E1DE&xwN5xnfVzd_vdpa9G1~CvDrJ^%FWP_BCU@_|KI~Mb1*;oE@&b#N{cOQ}z zNs?4bQV8&liKCNK4ZOkudnr(Q#j#YwK=rI7Z?VvmOHM!miGN%)2CgwbZp#7#2joBl z{z6b1+&G7sm$WJ~wwP>Gc(1=Buh*#Pj4d0oi8f^itz`>alQC1amIBkX^wDF|6~=EK z0@yyj1|V(Avc`p!Kt@8^b_Ec45JE~$0PA0*wn|~(@r&13ptVSQi?md7Qa$|4C_Lz>m9gj5Zx8{Z|lo{}a<$#8**O^%7}5bg6up^41~rltc>B^3N0nEu-t;qhQh*N zvhNm{t%w-yg@V$=4r55Xs|2u7V*wOK?#2yJnM<hn+?zk=p8r4RKNo3N zdL~IM^^=4SBi6bj8Qg?B02?hW7_7m40M^+AL+{Z?02bgtxqnd{iriMal#yW%06I#C z!Gc@xkHH2OFmOO$$x}Nbs9UL4f?92p8=(W`Msc?Lj@nv{Y^ZnT$n^qX9~AZXD)T{e zNx9aJ(4R``iZuI7s`W@l1UgII1IM>O2|!s!E*}GaUpJt@DkwhUI2q$6ztJZ$(9>Xe z&heNZ{lJd_kAFEwd7jK1K(pLvreE$Wtdi2Iqyo`@r|VY-LSR94;7{C}vqpt!p2?dW zbyNWeV{_@?d{+Xv5ukSrSIdjxbh&UiLJ6INSZrNcM8%T-J=q6339WuF+r5B)w3(YFC4>yKj9s5(Xm~I`Q)>0IeUq-NMIVqkKE)DCQf} zoII+vbNDZn#^vw+7+Xr99nGeUT}2si0k#H{*u!|6C44#gh7A@E5k?4420R`>dx}e? rm0n0o-4;qp-z(M+9;t1#qkjSafm6zFI-fxR015yANkvXXu0mjf`W`so delta 657 zcmV;C0&e}Z1+)c_FMm}<6o$Whyz*|bA55^*N+lfMXYsSGPn!(0XAA%Fj#{}0IahKhTf--0L;LFa(|;Z6uGB%E+fMp0CbcN zgBd@-zXlsvz`y~0B~R^$pl+dB32L=XZiEh$8^y`)S+%tq*--D=>o*F3eNfati_AyO zm&&zvg#J)cSER{TQmrR4BG6gt9y@LVB>-g^xp)NlZQXzZtDyLVV`PlG{7Rq5Ku?3= zImc7J_X9r$Jb&dJ<#{qw08MhEiGF^hut-Xak_tqBOE<0$gusmIz@K2l$4gc3RjvDmsci;5+$JlO|23<$4<0QB#XO3c7< z0f5^;G-w0c0OVzJ?wR0?YS^zq$wfSI*?tBb1*A_kDu3-@6VwKPPy);%4^^|!?XM+756$-$Xt zAHE$}Ej!{L9=V(sOTcRX-PLcl(O4r83;%iXEg5EJRP>ywzPKR2tl`T4IQjQm$3N(Y znU;ZVzkmNHqT2#;(>40*xuh3r7wuvY_TbdVBVjO-p%XtH1!(=S+bw(?9Oc_VM={-4 z&dH-%JF9=GG@8HreQYU#b~IUL>?+ED&tPlx=pM#t=5S?YTN_q9L>M7F8Sr=j?J3Tc r7J4Dgbx$ZM-BGL`KT+FgNB;x=fm6zSO3wuV015yANkvXXu0mjfKYce9 diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_18.png b/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_18.png index 2e9bc146753347b60b70833468ffbd9ca2bf6731..4b4d7e882878e61863b0ffb7f77d9bd867400669 100644 GIT binary patch delta 32 mcmZ3>x|VfAJQMSof4e6qFpnmDU50D-5gpUXO@geCy8R0-$+ delta 32 mcmZ3>x|VfAJQMSu|E-ggn5+fzWkP2#0D-5gpUXO@geCyJ1q!7A diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_2.png b/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_2.png index e7e8b480faf9e55b18ee550a2d382d5a81475196..aca25d620b94fa8e84033465d5b54b564472846e 100644 GIT binary patch delta 370 zcmV-&0ge8T1C0ZaB!5&%L_t(|oYj-PN&`U@M$c>(vx;C^1HwiE0d0czx>}^R(ALTa zNNMLe?h?R^Gam8$|MY2D$h^d`wIDF^cnLCUU?B(#^KoX`z z#w%W!Y|=y=mlQKB0X@C#s01qIw)gL)wqD;>lA9~vQp{|(YJV#;rM70UGqesOeIsn5A2;fgH>;PQgqr5^FBbWJvL`0%c(J+UIh#(?z*H&QS z9O#;I>3Z$_97gb?T02aO*5<1~e2^72?o!yM@sTSd$Msa?WascOL3MeqaF>nbR(J|B z;5G)GuicdhKx+w*H1+mNJ&+J^0h}5fU2g`Y0DZi*zi!9@oyy7DV_~Le{pXhb*yp3u z;ymOn5wQ{v&DAt82Cd$n4L)^XgT-Ey0`>bh{q8X(A-a?hRZ6IET8+QJ52P>G&w?=$ Q=Kufz07*qoM6N<$g3^DllK=n! delta 372 zcmV-)0gL{P1CIlcB!5;(L_t(|oYj&sOT$1E$A6aw8%40I1tFD!pi9wRqeEv0U7h>@ z9o>wB;wXLsM^{&Ih?CzybSZ}jb&?Y*Mr`^V+BCTnboQq3p(7j2ck|VbMlYXH;;YLa3DHhMl#@`gllW2NH}DOlFW1i( Ss5=J$0000;w_ALBU2yBa$MJMFNSUZZd-b3i=P3j6j$34@QIsj0S6ptPy1@;7v{94=UQf}JxOlp=CrG2$zmMfemPGH zU~Nwt#sHVWlKvqY10-Ou1vF9J<-4>r201{Nvvm^44H}>Zx+QWjs9^_ycO-1s4#2a% z5)d1}0;RtvU4!4rKxTE1gnk5n@c+(X;iv~_@dAAelc$877P8X~xxER@??v)8Nx zf^q5qtRRIrdYHQQ1wia*NI3yKSy*&no*aB?L{~I(rX#tEKW_8K0dJp3L11i*fY>ep zaqi&sg;l^?3Q!M=-`}3z2Z&QzY{lq#;xJGL&8KXNAnbh@=V*0d87MfYrfK4GgSi4D{CmS_z}xvImla(5A9~ pr|wJZ8;0IEfQEWL`;_GM2a))gia<@n{{R3007*qoL22q|ho#@1si7zMFd-@~WQk-tXV}zH^X9 zdaoILCWC^T%wT|m{zE1s(B=Gt5#a%OP|6()4-I@h_BY}?z<;j>h}J1UA9Wx#(a1}? zl8l5yXdc%eDpGbpYuZy7N_8elLO1kAA(MQjsX7@sON6|u*dhk#2OYJU29gehRyzr$YsTpWe`qHaUSy4TZlUFDW1O-4+8DN1>0R-YY0xaq|4Jrl=M9@l_N{=Se zrX<;n_R<_U#($*dIi#g~J1$tj0SDUCzS{YPIj!lrmYHf#k{h}??P^)F7zemt&XWRI z+ZPREfXiS>{}7D<5-`{TnyBvbU0NE09H7hDItk2zDi9R14-?6Vps+kAwp>1v2IzYY;u43wAw)IgB5!_7{%5AOLYt{k5 zICTJ4kU|_iOkMi|Aa*pQoB*CIEIKex4n8%aE1D_OkzBzsE5VxZ%^+7#3?N{yjJa=8RfI0lLP`Jf1Yd|Lk_nWagZE&2)^7pJMCAG zL4d_~7ptQsPBc-_dk@%R3p)DFs00000 MNkvXX1g=70fAb2CYjJIU2Z_OpH`Ng_#ZkH9KPCIQZ-qg9|` zih-6j|HWv&jr@}&={AvzmGEqGQo~Bo`jeL*R1J5{$q#w5aetDe_))i3GpMu(K6INX;wW+n6(#n58JyZ;Emr{fs z(|Q9isr#kbE-WeP9;yl!lk0}O$SV2bt97G|&Fn5*c_T^kW#L~>b?2H6cXh>>RoC@c zxL)WLtG?k>M;Y{(+aXYTD~DEt0jK7rY|2V?Ub`ODj5Kr#{>trKe%Qh^zvWK3kM`@9 zb-^Cyb~5Q~&rI@r?v#IDEghty!k{V(EKPX47j&cQ&a2HBfkkT;hdZdsrE%yi2X!n8 z%(u?f^Ug0O+F7@S?rkPF-=7^@lwloj>!t*>fAZF6iq+`R+~DP-Jtzea=H1?|i#MP=$M;8XeltIqtvr9GRQS}p{V?;h#d;`{ z>PoJ0;Z=!tyT3uJDX+sv)kU0YC{y&F_t?T>T(@no&~0L@z+9y+gD@YE8jXHG={M(a zIT*u7M#}lT$f#1$a&}3#rd;Aa c{X)Tiq~2|hOj-`y7ytkO07*qoM6N<$f|GF+4FCWD delta 540 zcmV+%0^|LK1&0NYBmqv5C02jlbN`$x+0V@+N$w<9BiYaTog|4Qxjh1_B$)&_n~qk2 zhA9SG*6}Y!^KImxBuTf)T&#p=lam@&iq@aJ{Ge*MYfgU1la2e6B*l-qHKVzcx{Ti@ zH9D^;mJV5-9-=Z)eCT5jbdNT54p(z4pQoKBN%|DjW}CF?VyR87-L!vJ2I`?=fV-3; z?3mUYfJxmi&30i)QTI?)u$Wvop5%g6g}~wdu~eaa98xXpUBY)CN^4 zn7#9Cx&6sopD9+OM{|RhkM^JxJeYTTyDr{<@*LkEz4^`jV77nqm{Q?W@AkvY&lc;Y zOsXrn#)Vfc+U@=Zt){#VA5|A|s-aBLd){LUi&1XdV4>UOSgn;^smmbD2c$-$-%t9@ zIb2T0kQ$y+M?o`P{tr8Qb+*UJeo{)K9ff_*8H&RV?NSf9m7_7_d|qT^sc1R7q+5qv e;y(RC!GEOQZI2L*?#pNZ0000Q4JclrM5EZkaB)#r4g&=xVT8bl#F*NK=UAUuoRaEHREk4rf$Su$LMch;9hg;?YQNIA+It0c#AlYK_ P00000NkvXXu0mjfxwwtK delta 316 zcmV-C0mJ^-0@nhNB!3=BL_t(|oYj*(P6IIzg`blpL?R+vq(rcEbhIfbmWv<`K^YMj zNNK33DRL4blmbd_kd>eSgoG`jU@eY^V*fm*i0ELd(Wm#GcXn(+;MKx^0~CTh2`$e7 zFm_$2T6^r{c}1wGJ6$%S`Xbljmg$09T;Gg~t^u1xS6Xsx@PA`FSdCbQ>6p&$_`umo3l_19k1FTgiC1jag>++S4y O0000-2leq%5WAo9T!Gywxs+jkNhs{eCjGw=a^l7VLIv-B&G=pxRUc2UFkIL)%9f*i%A&Dl` zh&)8QWJJ2z0nm)hU+BYdY-Xr0o&EexKQkr#;-DkTLCkV6zK-#i@CBzt4SbuTN{0Xd N002ovPDHLkV1ik?s`3B; delta 370 zcmV-&0ge8O1C0ZaB!5&%L_t(|oYj**OT$1I#-B?{n}S390Ak`&aLVQ;p;Nzr&I*19 z1wl_J>KEy3XDRds(T`AYs5eO|SkgfZn9J)>bC)~+&E6Cqp6B5#-;sr6c%m?bXt$?K!pTb{tueyq&bHNPpf;ZK(96?SM)Pdk#<7 zEs{wU)fobSUuOsas%Ij70KmuyXXe5l04ym&9MlHm0O9~lLsKwdc0$@A5&&5aQ!7~` z;$fnpQ3gPS39p23tqCAM(u}OJ(N7S+8b;|MV8YXk09o4FY6oWYT{R*+a?L0XaldoC zAR?lb5TV;lFKf=VP$s-P*sm{HGJg6pG`B6o$$T)mF$}tXc<$IQdstkG+Jb1Ih{jZl z+{N2uMLN?x{gDw7(fo}TFO1)W52r*8d@~Ni Qi2wiq07*qoM6N<$g2KkC(*OVf diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_30.png b/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_30.png index b99d6eae13454b18c1bb23bfe44a5ebfeb705f0e..453c0193a908ca8152fd96e6177c73d74183206d 100644 GIT binary patch delta 219 zcmV<103`qR0rvrrB!9k1L_t(|oYm1i4uU`shT+)_g@uRk9u{7~8%ewvUchK)DT$2* zg+GM|%f1%i#+_);#D=Zl$?(lEYmoR@85*F$PZYRgZ>amZZJl=y=6@?hgZU=oq+z6h zB8JqABXHu=2ohnd1~c<#7~nHEtM>pP06UuLwSC8mh!htQPgJ*7fJ4<}XDCC3SSty# z3>7!ey74a=RVvn+c=R&-B*2};rt8|y(LjLr8$(tBKHXfdDqPb0i3T(n4gDEIfCr2c Vf2N2G{qg_+002ovPDHLkV1h6lW8eS) delta 218 zcmV<0044wT0rmlqB!9h0L_t(|oYm1g4#F@DfMF-vx%Y@K%-^S=?I!F-eBq+z6h zB8JqABXHu=2ohnd8Z+}}GQekUR__5o0CqIfYkS6uh!htQPg6HmfJ4<}XDCC2SSty# z3=ucay74bLs#L5saqDGxB*2};rmNca(LjLr6GK)3KK)#-B3#mYMFSd4@0CHq1B?=X UreIGkWdHyG07*qoM6N<$f(4sh-2eap diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_31.png b/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_31.png index 6479151547d2c31ee5d2fcb037a573e652913a41..c0a1aa73de5a31f30993688709fbab53ed63545c 100644 GIT binary patch delta 349 zcmV-j0iyna1AzmOEq^g?+%OPDAGr#!fSbL5;oM|>6yGC2Rz>a+-@}DBK<-j(MO)lSPKil4P} z*n6v4jag~(ln!nU|pee|yk=n3X{!ZE8C`D*D~y$)Nq00000NkvXXu0mjfGT^2% delta 349 zcmV-j0iyna1AzmOEq_5y+&~mWU-uYkBsOz_h}>j23ipVV@gnyK_h7+9${kn&yX?jh z3rukPv2eGsodGuV%Brre`c?ix<|p#mK!1c0KGD_-0BTUxzB?N}%#6@AOO3X}8PHXP zdNSD4Y4?HcY6(<>OZ)odHvsE*vUE$Jf}ygU#Ya^iU1+>58h=LVk)~bq{-x)1$QlC8uUM79F#v9bXI8*nq=qk511ALF zGE&2aO%tcK58pkgy}Ru4xA!*BvqSaXq=#|z9_m<^xDg`M`!PxpFYB>Kwb7hJ@uxPX zt=HPCkqbE`o>rH}g2VQ7)l{_F^JA#GxSaR-@3hC4Kg*@bU;?a0jjv-B|F30Px=;ky vbC-4vkv~Ng)|s`Kqn#`eEx|q>VNA{o`D*D~h}zgQ00000NkvXXu0mjfpPaEJ diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_4.png b/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_4.png index 63b0e2bc4f98007d1b8aee1865bc1c0d4fa64aec..0f82c0a3aef9df0d70a8d2461176dc58d4bbdd95 100644 GIT binary patch delta 373 zcmV-*0gC>P1CRrdB!5>)L_t(|oYj-PO2j}Eh0jfvY*sAt0^)3AqhLBa2^PMA)(Sp= zor17Vv7m2ZEVkBKEK+G{=Yrr8Y!n5}77L?fG8UVeWP-Z2w;Ddq{WUY3NGX=Au1Em5bwvU|`jwYH03feG4`8KX2LQ&3f&5xq4xsCUOwkAgWQWQql8}H* z!0aOpsKxgEu$m(SkOU#uU4nTJfY>uNverUB#QCI3DIE9|Ic6{)S=8=!YF^gmwW0@Z zYUI1PSvz>I?rxGZY_YxuTzcWVK_!FADIPia)?Ne@G$R T@>(Sh00000NkvXXu0mjfV>Ytp delta 371 zcmV-(0gV2T1C9fbB!5*&L_t(|oYj-RO2beT#=n!4G!=)ufOxyOD45Mnf`f0Mvw{!c zrXbWi6!a~OLuZ}EA(M`776eOhQ7mXW6r$wjI+)z#1hunwI{f&~|8q%$KMVg2C|MHy z{nEw4C>7~T!zIZYAfBBzZveZQ_GD5RCAjTT3eebX|}M8i0W0P#Z<$6Og1Z z^N2laiGA0v>PP@Yo-fNR-n;`K-7_(g)y{xNiO%Kw< z$aZnFcJNm1C2SMebOL#7K<>+p!FGLwG07u!S#_Ix!`H#^qPE-9+ox5&+Yr5CKBNKQ zy*IaBcm_yT`OA>6h= RUR#a)0l6zsvU#Mlg?s|0ak~DpZ_wtGq}@I$tSCvK1lzJvNsyCH!Gf zUZgNtuEe^o$q=_g-(d6`Ufp0M&7LX5c3d~1!q3dcEZQT`_tp_eM{BJH zARQ}5;%r`c7=2ZY+=6Q#SgJACPmb%np}mtC0V6Fs9dypNwb$mY>Bne#tR#a({c?@5}cQMlg?s|0ak~DpZ_wtGq}@I$wE`WGh1adu%RaO8CQ| zyhvfPT#0pElOb-0zQO1>yt=_inmtp9?YM42g`b&)S-zPPv##KJN(8{x84&>CR!_zN zfUFV@0S@F!SP}=5%@7fV0NO5?g8E>btE4Ghkp*^RX{hXNt}gd*dBIU z_px!Ect28-Y;d^Fca$U>drQ6oU>k$Uh zJ!u$8XfSC;zAo2aUuHp~-KsIS|r0(`4Wb~tBgXbi@rZF!{qd~Cc zwXI7r6F$XFj{E`dUq4)xrV3D8oZmh=cf-at!-nzh^SkNKyMJrLV0>|578RjA zxA+`uX$K>pN#gqDB55;8+*LFD0RRXBfR#Lc_~}enl11F`>hGE4Id0WP3RU_mZ~Vht(Pk%r}F-l*ij*#doulm~va6`uliY`vG1|aU2H6q#Sd+7W%Y*2P+m4hii z^6PFxRijfnB>W7@8p#1JP7mjqsRST>HrX9N+0sG5&|a|pagQZPJKxSaZ$1+dQTFP1 z{HVVRru^1kF<-x@C+X8!v%~8TI_vTTWocB)=y_G+{|zeL_t(|oW+tcYZO5Mg}=GI%i9 zSm!6Cyh3n_fR>8Cz{39^8n`Khv{ovLVZr7KO*W{wC%gMBHaD~DA8?9gc)a)KJ>DA8 zKLh?NU~C^)I@bq2&i?^iy^m@BWCZlE?B$VqJ=Fl^i%AmVv`NLN9>AhbbTWZ(I3^v z;*$j!wx6H(@48!WJV1`kx1WbD&BX4$e9&D#H}>K8c3LAqS5AI>zVqRk^UFO^GglLK zf!Vh+OlRA(TIw<0-?+_cF#v9!?&p{!06NW5mT3S?o=X8)0Iu!=W#^SYwInA=YRjzw zmpNKVb$~yTq;pAC=XW5nP;GV?`YILU4udb2r)igAr_JTOV delta 468 zcmV;_0W1FO1MUNmB!9I@L_t(|oW+tcYZO5khM&2;%gp zt@9I7ULiO|Kug76VBvod4crt$S}PUBuwZkACL2`TliPhQHa9ctA8?9cczEA;zK`!S zqI-J$S72-xES>9ukMnq^dfW{(iaYSbv;c(y<%^)ZI!OumPkb z7F_hL9-ph3hK!881*Y(pI;&sL^G>DJ)@0C(gN14{#~gUYQbke>H1vw!P-iPREhOkUw8 z22)mq<`(qFc7Jr>L$d|oM(^wzjJ7v{>M-=uzj8R?#jlXj^hizK^BJit^TD;PG?f0R zJ`$fSK)=0y-n-*&zVUzpTkJd!y)+ZM`|?3N{leIX-`mj|0lIYjN}Owx_k!QM|u?YrRP=xN&m7z>EUWNuIIH0!=VQ4&(t`-UX`Ymp`>6CrN6X z+W;==Xf3OK{E;M`Nm@ngz{tXCJ6_ALQaO$ke6c*uVuhVH7q7qeL^*NY&o9yd0000< KMNUMnLSTXc;pAoj diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_8.png b/assets/packs/WatchDogs/Anims/DEDSEC_LOGO/frame_8.png index 77e2db41701e4e87603ab63ffc4cf6f826fb4a84..1445a89c2bd045ea6e5fe2349edeecebb73c0a58 100644 GIT binary patch delta 490 zcmVVDvx}N@>#_|TMfl8%JpSuD1WXb%>%^`WFxsI;}n3n zRagq1UKW5NBg)}p(3nWu6ZwA7*n`zyn6l+q_0DEA*Zz>3Py2crC11iCF^DT0hd;w3mbCq+(lly=zFfbBYhz8Wys`iA`!mJ?NVT6O)Buun z^!vReEe4J5ixrI_36$usH_6!sbpYn(n#HP5<)d@Jg;zk?w6DRYq}|qveF~p5KMH^p g03(3o1@QI1e}funSCPP-1^@s607*qoM6N<$f+2(FEdT%j delta 490 zcmVP#Lov{%S3=0M=4Dyz2 zV2CsCSj_I5*?_kg9*1+zyK~;XMl4o~{{UtC9AJ_;MO77@VRe`>CYR2#1%`!SfdP;; zOw}LAH6?i<LsqHERd}kX8?qa z#$s@E5)b4FK?)ze$3)tl$aTHP0c`xj6ph5ncUeMx?GM@IxT~jLas-_W?s~~>?9?_> zw@^k!12}?K1i3fuDho0O$Nu+w%9zLA0#qelZg`LW2LSdwFun&7I1fw|VZ!=dTnbzb zF~0Q#19n@Uk$=SoV{_(xxTJ5|(N?(SC6NWP{z2;dSm^-y$a`$HFOOngpVlwuT7)KP z`NqP`Cf#exVIA_Y+!NnY4~(Me{hbFl0cg+WEgfHcUJuO6I9-3U*&NHUNuNyKx>~~K z$>`44+QU3v)9Kn;9S~QxkAM0hmbCk))V!*IzFfbBZDYJ#apUme_h*bf5bH3Br~oAC zcy%~#iMh;g;zk)*q7c=(tcybKKaiqk9@WP gfDyoS1zdI0KZ6=+S3Q+hQvd(}07*qoM6N<$fPyvl9sH7J?dtU1Pw2O%MyK?2sy@ zjkYG8Wh#vd$rO>425c3iH5<>z6PN*P&At(5FlyCyzX%KW{ zEqHWXGcILamsa+ED{C8 z{xHp`L+h=;2?Dy7LWVo3?sD z+~__8e1OJCzkqD{x@Dw(b9s{2M>dB?34s?@a>Gy%r+;B>Z1{9?EEa3xS9H-b@;Sb| zd%U9+mm?-hMqieJtyr9lrr+F^UbrzNUi9oB=9LWw_Ya=m`UzI>o^tzWVnRJ*J3`sn z{(BPBFwnfcQ%Jq0n{9<3<2T9hPLtl)ya%nq&erQ{Go%w1c58bGfBrMjU4pCST=aahEdgnlqJP(=hmgHDt&f4xBiI;yLpn74A#8v_N6hvbsaRT eOH#inN&f+k=)Cpr+?T)r0000bXrIo$kO54_@XyDImjpM~GSf0O+rfft>X|reyPuAK+vkXQN4@Jc8`sr*j zf0$&@vVxCC-hUyaWf|K`$1$y{vbtrY{EMrdJlHE;{%AJ>swyi88xfGte6`Sw4FEnQ zwk4JcX@S|YEmz*Eh4GH6MsLWv~z&Al9vkduB5`WajhEFHQV!kGRg%?XkHpiED zk9V} zB_r!^W=MD>p@Uu+O9$`RGOBuzu%yWC+`5!jrO$5X);|%t&6A{fu;z8QFO31N>!4{} dlKM?a`VWriy!DW~Uyc9(002ovPDHLkV1gr+5AXm0 diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_0.png b/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_0.png index 9d27b4c2feea834966cab00693a7ae3b3d9d7a37..1ea0cbb87788998e671d366dd9e5b361a94fc2eb 100644 GIT binary patch delta 485 zcmV(vczwoV6j5Lu(g$? zwT)d0i*$Rn6pQ^Zet-cj7qqnyvkQV{2!dhBW-RVxGOMSUx%}rj&w05F4zmT2R|o`6 zY$fn=2kLPG>v{~zs`=13D61KQOdGxCz3je&ewoh;LN_TOr2hVoXAAm+ zPL=8CreOH%G#cIlk6?H_rz{av@cO(5k&xP2Zz7wBkeT63`IQYqJN=Sr@|c0EX}d!7 zN9rfkkq}^nyqTx4V6)_$F@m=hSrn-kt;apt`nsuB!pvkIxJ2k>SUD-Sm5XYZ^2+7= z<~l+xa^J&?dVjx0##!h?n<5mEG|V7FFCRR3SIHw`Rbzd<9%o$-dh56Yd4z9O@>CrC zg#7!b`esUAW|abA3j>oEy;Rj<9y!ROVHz~0Y?DFVf-5Kf$a^jLEV{$WZpj;q-Tfp* z;jX#cdocB-9x-XbCe_-&5o8sZw~84!)+(N+3d>gUV_wvP6o;es7}8pn9guEr4+gL* zU?@Es`M_k~ItLyvrX8>>$lid`ELG{}%cO`EKJdGL)=BxO`3opxW1FQNgw3v_L3>JZ bS|{mWEqZzC)!UL100000NkvXXu0mjfS*h$m delta 487 zcmVkSq3?{502^J!{Eb$*GSga5*Y;9#} zZDW_hBHcbM#bSSqKVU%11#K|kj6qMxcd%p(U`G)j%8lwA_2THwlwKk|MHd=}kdtuc9P*~}*~ z3U@8s-UBmVsxi|R*rr-rID#y#`J!c{@g8d#Pum5k8DKxgEs)}Hzk?y!vg!b7a(iG1 z>jFm7v!)MCyA~dJyqtA_RYCTq-j8{zGRW&Y7fXEL_u#CP^0B!E^y(4Hk_TbioM_m7 dr8un;^)D@YdFuQJ`^NwP002ovPDHLkV1fnk>4^XU diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_1.png b/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_1.png index e48f71ab3ce461f04ee327dc13d76ca346254d31..8aeb577e06e3a9bfc3a951d63f510f0bbdf51dad 100644 GIT binary patch delta 596 zcmV-a0;~P+1nmTnB!4tXL_t(|oK=!PXw*;~$3O2ScM0`+mx7=|P1Djz5d=X+3f@@3 zp@Y!ULC?ue#G#xH5+|h~IypJiDh`U$NjnHex;Q9y5bJbA5n8ZAN^4Ee^y2V->78%+ z@jm(fzP~?tM5oz1eg!o3F4*vZFzo{89zZX+4_HYTSf4=C1AiC+ZO7evXEQ?gd?z1> zpw>$+M=;dW2T6n`>H)K$hyFA1=q&S6ft;fx?hn7!4O+1n-&APR)3mzzd z*3!zGU(a6mh5irm=;V1jnt_X81Khr`=FiXpzo^p6^M9B1pD-riRZz=)zPfg1?nhd> zHo2wR^TSP1oM$NeZq4Erz{kP^C_oh}M2FocT17<+0&CK`f&kBK9ohO6JLUlZ;DD=A zBi8^P=+2`62nB>}vmT?6;kJNti?DA?QbvJAz*F*qS`A}9;7XbOv5eqIO4~DFx+Hz{ zUo$bSicMl?9RQVXi^6(qKwNZcKLMbehyeB3%=o?ltVRI7DpJ&X05D7e@;e6scFTJy i$Ht3A$vI=f0pK6XHlw@VI>HP90000xiXAfm`CB_G zF>(#yg6=-@fj~gOHtP`zx!e|TZV~ovNy;d&2)IfnsNFQ?1CAWCUxwAINJ_^wV7erA z^j|YEsZWVwXB_~QY>UErYe1A&YCi#>y!ZR5&*qNrbHHi{;Hf-Ct@{AO diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_10.png b/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_10.png index 029fed4793c5cd27017761beec2575ab2915b568..c26261ca8f1b237c38dda09471eef7049d12e5ff 100644 GIT binary patch delta 789 zcmV+w1M2+42EzuBJAa;MbGcnOJ*|SJ{TW(RQua6o8Cp#tFU*V49}>d4h-5_NDJ{z@ zMTGEbffqU}B}}j`b{qv>bfJh{7}QBZc2V0gHg$8`)5Vd#mv26N`0)LHzVcsicP{i1sgqCM0U z`1F*8EaOT@{N0$`&?Nuk?P{%f9wn_UPuRe}5SG ziMS_#ke^nUW`C^zL)xLor{)}MYbBt_c3tAXaO#T&+~ z$wXo>(){VcUtxtRyH@^dCL<%$psHC%&V|%E^zt?)VOa&sIo+ zYWl|H!^K_8(hOlJ=GfTu#I-LE-zZ-n%*ts@Mb@;V>3^GbTh_jvt5W#v&lg`i{KVAu zYv+#%NzDAd%`;2d$3|azb;5!`oc{di^nH6b9D1ay6lN&w-*fY1^xV@)^v66XG`4J+ zT-Np8((+_pl2FKREsV}Kj3lLej)+2@kLLN-`Mo0>&WdXw&-ZkXq|u5w0xR=8zm>0@ zX*|0BI)8DbZjPyzbJJaCN6)Ul))1RN(UB1zKi1t`n5!MT?S(Y|?d!#NTZq1gzR%y9 z-|=#M@a{&%>FAaIBi(&8h>#A=-Y%UwzoOJxX_->^KU%=t2>@FsPG+?4q_Ao4R?nr;Clgmv26N`0)LHzVcsi^lb0y z(k8T$Cq&^ZjVFc#3G<2KmZ6~bEU^ceC+&k%P)C*QB$CZEV5FZ z-pr-6RNcYFRGAvYo1)7M=~kg0-NBX;7^N8^k0IG5V+FOlyNmA^kw6=ETyoDLw1ox5 zffaS7xzA%JLq?+I*H=Dm7(Y~{J|J;>vrU)6@N9)7 zm`vZ8c(}NGd72>%#vC7=9>4zOk(=ck16etZsmL03Hh+Axe(SoobCVQ4`}4)ujyy57 z0b^V|8l znfhY~ZhsI*YN|{%ouBSJH*#*x^}5*H$@Yx!`0=jBLUrNTtuLhcZ(lE6Y$19d`aXYa zZs*JKp~a1g(~+xvN4t8d6CoX(y;C}UVP&bK(ln(+BpX??{cu;7ip9v4r&s6i_?=`5 z%F^|xvV)rpNiszSNaBT(r^V1u1DAngivIv*$NXGd TRt_SW00000NkvXXu0mjfUmcY0 diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_15.png b/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_15.png index a30fa48a505906f2cddc2f6114ff78f5f4b6ff29..512f2efa71e61872b2cbefd10a52ea85857ac373 100644 GIT binary patch delta 565 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 M07*qoM6N<$f?zEVy#N3J diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_4.png b/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_4.png index 7497c1cda30b1c12fa07922eb2c86a563f8a99bf..198f461187dff8c9a49ce803f6e034f0f2e1d46f 100644 GIT binary patch delta 574 zcmV-E0>S;@1mFaaEq}jm990+v@ZWqM$75r>D{Ad*Y zxPK4C)qDfmh#oJ%W2i%in_J;$m_-S9o*3#!4LI0P{0Pxv8h;hE4ON=q+@$3o_x%`E zu)8RH4>4^yfmCnM2lPaveTw@Qn5%;71aAk_x`FObv=-QaY7cM40!v5eGz=D3UKA~F zM7}5?wXCxrdK8wN+8OpzjU`2y&$In$-b_YBQz^_Tb{x_EBV|Mf6*ToNiYRes_0H;p zFJJ!Y)r>ezDSxFdrIb=T=EDA{Hkf5)x!pmqS-RU_^I^YyM5pumWPSUOba8t-`GG=b zaj+ixl!kQn9c8dKE4Gcq34L@5o8hn(JmoMdr#!e^w4bC+KXV!U%Dejy-!CqjYfJs8 zG(D$umR%n(CB_g0E_Pu*8z;Kpv2#)b+q%?w@%OX8)_=n*U*G)d?&s(*U%lDZxv0vY z5ufGdID48sf$Q%7uZ_wtWJNnfd;!j%K_YYHL<_n&LbG!?F?ElEVyw6ozmeLUE1c~( z)FWpcVnyo)1+%yuRosg*@vYN_`IXX7O>liA;I%kzvaI@;fhXk_7ig9LCZ^HX{0+zb z9;R_Qqc?BR=}|?oVW`S;@1mFaaEq}3&97PZY;BV^od~?TfyFvn42yr815ja{u!HyAug$R%k4v>Ql z33&huO~3=d8*G3O2@;{hF(QBnL1MC9h#VN*aazp44bud@<1-y}SC{^(`t|?C;Q7-i z`Z0bF#MONR+K3)6z+w-$Tq=P9W7A^Z`B5XrJP~1?I}2Ji*%mwQivM6Ria{pxnb-vB1(1It_!xl@>+I z8<7(eNGJ7AJOT&K3(7bBVF9yPJf`# zSsbi~KBXa@ea9qNtBP$SaY7%R!e%&Z1y4DQ(kTxv7wso$(^oEoUwL=`;rqo!b8V>~ znWpEMR$27{Gh#GB;9_U?vvZ;g9y=#Bu&pOLFaCb^*ME9=#24WF86>(Z_Z4(;gl4C3V&)zN#aMAGej~NnS2)}C zP>((15Gz_YD5&CcWN|MhiEo`Y%&(Y!YKrS)173^cCex~q8F(_;;sUM7zlmA&HGji# zzlT{|RyXtwIz7rLHVpM{nVCobOL@~FKHK7#2At>OWWV9^one~7fkZ+e{ZTmS$7 M07*qoM6N<$f?zEVy#N3J diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_5.png b/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_5.png index ae3e9af9615c8c18461823c6f0f648f05cdb64fc..e9797edd5f666ff7ce40c47d3d7df4efc17dd98c 100644 GIT binary patch delta 622 zcmV-!0+IcQ1&0NYB!5mxL_t(|oK@04Y#db($MMfTZ}8eW`L-aEg(7hU5=a!7hK}3{ zrJ*w^f{-ZO(?p1lfHz%AN=ge+5F#Xs6lo9#6{SUk3&5vHNa2s{gP3UTTklY;&knD6 znm7BKH^2AYq4V^rW$hx~1nFXb0VXN6ScOMWCC%dFk1$F(RDbYO-B-`ZHsQ3wEETW| zF~ZDn!gAmDCW^#);s;3Ogf&_0GDVx9<;^{w;Fd8qT>k83)^N=jH(jqT)s~POW9kbw zE#Zwc#+FanrKU^YVUn(Kq^o%7W5}?YtI2vEOPIH|c-}d%#1>f&igk~U!SGyBx^08( zq68b1srAai{D1C8J9UrkZ>@10etGiCTi1&_C8fqVBI2L;HzMlAe_{2oxbf?Im29Di zm`8kD^$169Jn0^(eu?-5o_b zJN6Wx()M&@EVQ9Zy<~b+US;`|8DRd#31zQOde|Z+9^>NG0gDU;FcZ zd^k05Ytf>}ps?2;EBP}u*3;*GV&ck~@&o@{Wm@fnehg}*cggAt#jEKdQC%bsQ?m&B z!ANNZJ7>@qdB!N8pQ{`AKK)i(nCtrtvAzJrl{BdP`$mJj==du?!XG`?7G-KHF2Uf; z`g}xFqm`jZ*_5tAlL8y5{hE0Cy-QQP1j8LnWDTB$aYHuw5Aa#?!C-L<0RR9107*qo IM6N<$f>}p2)Bpeg delta 623 zcmV-#0+9WO1&9TZB!5pyL_t(|oK@35Y#c=t2JqjGH+XHGd|MF7LXo%v2_ywOgK^Mxr! zZ{B=w-Z$TTL+8m+%i2Y}4bpOc4kjtJScivDCCy^j)mHgL@tH(jqT)mD%jW9l=u zt>CpZ#*UBKr>0BaVUn(KtgCq7L&&h6tI2vjRxoev@T?2L5<6r$C^kJj0mBPK>9#Gh zWeK(@Q|qO}`G4IH_Uc}?zqQ73^!e#8Z(J|#l$09dh=_mU--xIe@51^~apTu_D%k=N zF^~AR>Lnbx@wj`m@$T?)rO~)LJh*ofXK$TG%=(hmh~wReh}f5FTwOhgCgLn2W~4@D zB-Jv0FRi75V*2$dx4Y?pc_Nz8_FBB!J=!_^NUJf9gMXe$bQ6}ux`?RGsZY;!?d~Yj z`Lb8>8BJnlM%01BDo>QAxc|-1t&>Tsu}N01bzeN+?amav8Ktbd_huI}gH(cU_mw}t ziub1mZY^3A85HjK%S!%Kjm`9FpP0CEj(qQbzeAbU`=GZ$t@Jioy+pj69uU@x z*c&6IHE8TXTjUv|e13s$;QRDjZ9%T@GsNc7W>?an?#~+y@}lFf{1|`qy0$1&TX6{n z=hWvTni{PPMargh6`B;-O6`}#llNVj;sqG)VIphrG>jXv$$#)!^1&UThKc|H002ov JPDHLkV1iZbJgxu$ diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_6.png b/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_6.png index b0042e5edb141c8bd2891c51cc458c29ed7daaf9..ac2d4908e0016b6c4c507bc49708321afde91435 100644 GIT binary patch delta 640 zcmV-`0)PFR1(^kqB!6H@L_t(|oK4bCYg|wH+fiwGI1}Y-B{1H93m< z>d&tq_XkJ%%YPGjV%IiV%VEdczJs1xc^EONKO1b@Cew(Bh{ufxdpgUVs2N4lb$<)ejoHnscyz*ocH%@QG!`#3y@%xII)5VK(Mc<860?YiMa1zZ&nbz0{fNa@S@%xvqSlMA&M-g96ETn3mj?p9VWUQ0%9cutRH5(EnR|0} zJKvrxB4TdcEwJLfYhUcVF;@5q1L??$>sU{BQF--_taWaxQJKHva}Q8ESkf=QaFBi@ z8)H#`7kSg~#1Jd({f|<;g#4=yDHS*ZRh}`(Pibp3xMvgF&f~V;nDutkPi&;sDLIC# zMYZ5hy)kRgAnU0a@&s08=%?n0X3U^YfkJmmHa&-oboMcY4$O7txD34!hO%#P5z5D8 a)BgcVp%7uqEWwHZ0000^|An>Na zh24c(EUr5K2U$x=p3sHv#J?a)5!~p;g)3+1LUh%-Qxs>A3Rx(9gsQLgWsZwCX?qv< z$2sTwz2AH8IV?OoDp`BJ-v{aGybaToT3mn=7$wcQ^DYci4u2!~b&0OY_Tljqbt>Q< ztPD}>PwC0tIpF|Bf}YiDclaJ`RcyNA#mXk~1g&2_{A*v0n@a4YD%rP=HG8i5kEPo^N#GW0pj>E3Edd+(ooaGyrwus2)OhY=A`%QVVfoVBqubq*UxVJJ+i7Xxjwt`I2O;f{rlukbbmy|gVRpfBxVs2i-?ntpHUhS z@kduo2j&pOzCxoHcOw?tWz#>sjYdDdI>-DdPsBWCUmgndN38|}DO)NnQjLL&=hd5Q zy7ks%5fO76Zh}?sUj1VC^-AF<45eeMu3;nHM(vePWnJZ_2DSOyK6ej|!zKOl3y0}9 zvI>g=JbRyhCq`K9?thS)CFEZNNU6XvsPl|ren#h`#T{GNdD@k?^eZ;H!yvJl)~4hb ztrhixKlLltpF%cLJK_S@LNr6IdN;Z808CyBP6joqvWsXbGA7do@rt1#M chh)?L0ZO3|VJrlrIRF3v07*qoM6N<$g8tDr+yDRo diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_7.png b/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_7.png index dc07e5dca00d2e0bf6dc9aef9ea9e6a533e20639..a6f134cd0227027c78e2107663fc59620509e056 100644 GIT binary patch delta 485 zcmVY|Me-zLnv_oHlP<2 zyN5qPJEYKq-*;{gNzTH*IfkJDx1rX?P&21qy}N)$U{6?v(8@Vj33pKjC`mEI$GYff zP!*mDm5m}`3%M@tFohaUhc4dhPaWyYWlVGtq*=>Ck~0^&cz@{9_SVwknTYii8qcK{ z`q|h9vr0Vj)nB8nII%#If=7QI59?p_hBT`du6^^u*DpPux7Z9&B)3}a>q}WqQ{l*k zIEj<%-#w{AqBI+0j9aUD9a@S?h#$2N>+Er1vT|wDDUv{J4L+ZQ&10SH3iZHo-Y?^~ zC*O3GLg83_ePL2wj4{TTO9BZ=k)c2>5bgUuLYjBz{Ol&xzl-^l3&zLj00000NkvXXu0mjfyle0I delta 485 zcmVo1LBxm8@9K+Cn+fZv`sF_oryt{x#U{6?v(8@VD5$>W4P?BPZk9E<} zU{ZJ{Ol%YZTgY{Bhbh!>I&|?~f9gnIE~C;#kY+6lNzPp8;(wt_+gnSEXCl^9Xgrr* z=x1Xa%qsE7SAUJRVr79O1&{tb9@f9;4QWnVxc1EpU%&Kt-eNOAk=$yvuPV9eUSX9NV~jE8l0ZUIWGGMzL_D0Kfie^l-l*k1aBVd+rOETpx)sVE|G;!LaXM;KX0!_l8fh}1>M@v5@2D*xw=*3EY6HwevyZ-{z!T6d bNb>&xzl-^ljUG8200000NkvXXu0mjfUKa7_ diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_8.png b/assets/packs/WatchDogs/Anims/DEDSEC_OLD/frame_8.png index 3bbee9ddec0b1e9e445898c8d57f598df5479d1c..915ab7c0a3858b7387e056bbdd25eb21f553150d 100644 GIT binary patch delta 580 zcmV-K0=xa+1l0XPgazA_R$?K7R{jY?8tt-;mEul7WKjbXjX2pI=32~qZ?m_$oO|wf z&Ue0h8N9eES-;sIg19_<4eE#p~F5rf@S1T!Y}I@Eq~b|oY!chfD@Q3(VEpv zN11ylf-UeP#Jpas@*DbqUQwXM$5uGt=HW=Z6{C&n!1$X>`JQ?k%+8OhyCM$!+elGzA6_I&;iCp;amG$}o4 zkLo4!7(+j@r+=w$@HBE97WCnRKbYw((stEX=AyHatr_$ROm!A_PA^hQDLwkBBv^be zPtZK6Wx?ZaU8B6lBuLw;J$-btEpUzNQH+cV%{doAhBRuIdYx4|z3Q~NbUMFkJ@;%q z>@Cpif-~(14ED-gC%zp+{`tY)@w(?}^Zsx=KH$O`rhjQT>PKKV=HRo9+-@ABP;FXl z%S%ecTxl})Y>Eh-M)c=u*{=T6|*3^(%ePVj2%R^&Yj2L6g?_#66s zG&Ynx$2~IdbIju$eMLi$BGQtfTxY<6NrRg4cW6xR;dPib_)6Ad2UhpV>i+>r=;VU1 SaXmEv0000p~F5rf@S1T!Y}I_Eq~b|oY!chfD@Q3(VEpv zN1A&mf-UeP#Jpa!@*DbqUQwXM$5uGt=HVE4D@GaBhb{l2wnAg4+-HKfV}-lUPky(n zVz5GdcX9gPpZBwxeV<~QQc7u1k-gwYrevYtMkIGHBa(hlmCQ!qvFG!DIN|B|rAg^Y zdsHu($7uSIJ%3GogQt<>u%Hhg{J~6Tk+!G4(ifc#ZOx!pV5+mYb9#|dO6k#0CBfo* zd4lFiEejrZ>m21ZCPCU}?dhYFZGmfCk7A6d(42D-WJn`-sn=Ph)2m9GOQrLx(sR$& z&E5jNE;!SUz+kV;b>iF6+MQ9lB^F$bS*=yu~6g=$k` z8@D&!jdMPauhA!Nn;Q@vK8Z4Y;|u6whisCn?4#^Gn8&ZATS^bcq_21jpO3{?DobzT zhm?*|N`n2kjxX2yHn5Bfyj0ov`p}}{;Ei{0rg!cHj?Hi*x7o;7W49vjQ84gVJj376 z=cBNp0Bmsf3B?SV1W@HSFg@m4$2{%9Q#~9;xxS~sPcDEm6JUl>f3O}s% zV~p`D`9zvlVjA>|t#n8@Z!9OG5 zkAlA$(UhT;aX36sz`BVZNybo^WFZv9HcV_1*TdlozK5k{8omDjb!#UP)ec;^761SM M07*qoM6N<$g8aNlkN^Mx delta 157 zcmV;O0Al~T1-S)~Bmsc2B?SV1Ha3RFLPF2WgqxrDV~p`TT+t;tyW5X39v&b#g&)@X zF~;~6^6)%VV;b6EF|;#U@XrYN zqu_5wG-YUI91af@ux_G9k}(t}SqKHO4HKKh^>Da??_p_~M(;m$YbVtZppIu300000 LNkvXXu0mjf=z>Ha diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_0.png b/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_0.png index 657d9db32ebfc8260ec2b5b37d342e9f9d11e32e..34d427c49b158fe90baa22d74796e1cd8611f874 100644 GIT binary patch delta 550 zcmV+>0@?k+1iu83B!31;L_t(|oORN_ixpQC2k_6mZ_Ilni#wu)#<)%qFhvT%Lb32o z=RaVfV6nk6MYfjUPG^xOZ6Hm4KrH@Hti7#BkO{k)d|VeQZyXrZ~iHIR$$STA9r z!LO>tdEipjUw?<@?)KzK{Ab)jF|10iw&-Vv@4nt z>T~dI$EdM!PR{dr+UU0m#@)9dA8&Vt%kDjQvR##9m5Hddva-rIZoFV7V*6{VneZSd zB>3kU74>dOD`WkB385`Ie_6ZP>7Ol;)K;JT@)F_ov41zx8sX-<9HHG?LrjwR_oO7_ zkH@|9<~odK)1UQ=x>vwYWzzvk9KpZ8+UXhNu4*_c-0KUzOqY|n6{f`CpyLNRI_1=&$sw&V%cU%jMP6$Cp3z*V_YNs@^iu2k|;|K o;yA4jw;#aLQPMNlaq12K0jSQ92}cNMA^-pY07*qoM6N<$f_}{s&j0`b delta 552 zcmV+@0@wY&1i=K5B!37=L_t(|oORQ^ixp=S2Jqke-Z6X8#l4a(G`i~)0aK(9QtXn# zJ6-+(3j-EcEG@FNhumnUIxLa(o;OK(f{m6{P%v|ph zJk7j3?>WzT&U4-Y^o489DRw}8%Y1AIS59PH<;FY^QuXn827g2`=V4bKv4CMtAgYYj z*s`pabX{2}-jk+-u3HNfeWx7Ew@t|mPDuTxumK&bt=wOTGhldCfojGcN^iQ7irm#K*TPbsFt z9~mLR+h-J%hdH&B&EInf^|;ZO){};REk{xs{r&xOgnyS8b`45|2d^@O`gj8|N#g5% zPRh?uTjkYV=uL;;b&L9K4BzHe10=Br|NY>g`#JK~?RF_i?;jSXHkbZvfsdbXxmJeB zm`GgBqLmdds?O}M4=EDEdXhJ!L;OTB?Y6kR!$*BfCOI)u-ZSV^8Mm+IHiJ)23)XU? qG&$S6k0IL8W3YIh!54RNWtVrT&X5VTLO0m}0000=Cs9 diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_10.png b/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_10.png index 16cac3eb98192c1b2944e42694cdd9e4aefcf8ee..cd53c75d74bc344b6ae53741742b8cb620a5b996 100644 GIT binary patch delta 599 zcmV-d0;v7+1n>lqB!4$aL_t(|oK@35h+I_|1@Pa!Z)P%1mfi8sLW)JEOtgrkT2kms zRIqa~yRuElTG^zq5x4V2u&^?Mg_UfjAp{h$_aQ-oMH0kfL6BEO83>pci1Fc$^DN$b ztIJ=}A??;P$0^jR-JY=FR@mVsx)m&fBJ;3@N8;|u<)eSZe~%amKx>C%O9jtYhX z;)i5zz@S$PCr^DY6n=!c;m&rZCzLiC`gx&5e`;+ZIdfI=x7F@^qke+^w-PuN@6=n~ zBmR)da3U5+xp3z09KMSu%;3y}!@5y;m6!0@>aM&~UBTt!Q=OS4#a|bli22dS6O3+_t>mOto-Nv@`aic#MBGV*Pc8OX-^SD5 z5HbjF9>AdDT-L*OOTCV9)9=tkV90QJ(*NfobYr`EKjju)T-<0E*;uCSMIxi_9D5N) z8&U?CuSRS>{$0*L@JEzfsa!T9X80+3<#gpWk2y;5EPu(JadHg@-f4uB+b35ihJ7~M zO+&dhH9O)S6Onp)p)x<$jC4%8cV-DpS9*nL?8TeFK>YQBk)Oa zth3hm4#l9$uS;go24gL6B0QGsHAo8_P0Sijn1~n_m?%_r0dW^$j($!Qzc^$#2pRL7 z7~a@LwNSpI{bfV;u^A9kV&!y&X_hhv&)qE%uFyPz$&=SvqxV^oj| zi0@Ol0fSyGoIdlZQ2G(((w*%>Png$hxD$f?%Hkh9s#}IdN;bV(B*0=HG zH-rMh>jyBXxKQ-4-BQ2AsM+t(SRf@`e(C@3HY2cz61R11rEI3dUgBsY9{To z*;X2+YZJ30?vaVqlS`HP0r$l{#KKK%WllDZiJ_ptuo?gG+p|U6+!WEZU+%SYP=5ff zmnXW`n!ZCh==|%P8FUG)jT;M3jP)9%1&%Vah7&RoX^Bj!s!NEw2y^tuMDepj(m^Pg zkBQ;6T~bu*E81U{vX9Mxm=h~!D@=-M%>y5?CCfoRL-g_V4_r3T3 ze-AJut3m95oHs24kMM(X30Nb))+_-fzkahMnLN$xCX70QDSvU+xd+5+aA%>2&+J5@ z_8tuL(T9)zobr>~IgoJ!>{%k__ z9hH2}>%HmQxLSe>AR#ATzA2TueE+usp~9*A$h2EdEwe6l=|Av}krR0VLs*Z*?I#{K z;@_T8d^@Wznh_IDc;#Trp#-gAF}LVynkLQ2WX6Lq=x{l(?9?8U@?s~j+CUptK27FYny3#fDHQ23-)OYq`Cz(FJ_~45{ z6ctD|`w6X4k=W?9BXS}|=(uCu!@^*nNZdyFg*G05&&Md*M3@r8&c!k5u{D*@J8t2* zkX!ta_(HziWVg~M^;FX!?9xfHJ&jV_zn_)OhJ3i679N{zgSD5T8j-d4YVv1)>>2+7 X)k%=rhdXw*00000NkvXXu0mjf$J!^! delta 585 zcmV-P0=E6_1nmTnFMl0X6b9h$-kJC2t-I`wqVft&9zsAx*exs;MHv+=#o!WRA*72~ zSXo%!O<`pb(13--c7`-sSO^w*ZXq$sW-GA>@~{#TWrP)<%X7zKX580!y8HA0|2^mY z2QVa?f!G2$Z(0T(;(O&1utt8ZUII#f`Fcq*d6M}p7_|gb;(xq#4~W;`Zm)<>?L=Yb zJs9Sr4fyje6; zKEAOP62!6J;e#*7O)GgdIXmT(2fi@vf7!tO#}B2h)$ApF_gv~3H~+5j?r(=Kfy>Pw zGdzEDq5_{a^M4s$t9!@Ge}ZDJV{|pR%VZfC9yyI6Tu2t5o=VQ`pg1BVmMl9MuYZ@y0o&bzf{oho3;akBX?}g9 z^4E|R@hoC;t94sV?L={9k7Q!do`1M~F0~27Hmr|ktFE*IeFb)BMd~Jdv6W08?GL

    5(;+&^d15 z*^uimBtpI~H`%TFq@Jj2gxxkvvOTp@+&@ikvnC(zr`}_;sj>DlR3ozH-i-X2A3Dar X)k%=r(CJ?j00000NkvXXu0mjfIe{bI diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_12.png b/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_12.png index e0362e17fd48a8d326a1175a6146a452a427d82b..bfcfc02f6e68b1cd879f8436be9554c9f6f887ed 100644 GIT binary patch delta 595 zcmV-Z0<8V^1oi}wE`MlURU8NK&pGcUeSJm^8Wmfy7eTClid_W98(g}miL}8%&SGb3t(uN*4>AvWZ>V#i`1>Sog+35M8cmhtf(&HN;nw-0N`eyWr$+IfpObFTd~i zdk%7g%%q|gTzyGcSW^&A|>_LQs1?s^@$9Q@P;f2i(cz-Q}D`N~J92vp4$FU>e z!^B%Hm_>Zz8W=VO{r=#~g^)Xk{u%E2w2j8nP!1;;=H=DY~ zv7BMWvbURhf~QIz9l_0J=L}xWIk1IzHVn5ge~py(Iu#+mOFc+yAIfQt4`oe(emHmj z0M>7)kX24M4}W0ykAi35>t=$%)jzes>7CCJ{{Cd1M<9dX`km00QGp|mT{@8q=%-dU zKYnsAIg3d&xKZXPh+$uV2>$mFfD?EbOQ^M6!E35cV!c?ZmTW(Oei$LoIu; h(rfNarjp(d{0lHJsA?D)j8*^u002ovPDHLkV1jGXG4cQa delta 595 zcmV-Z0<8V^1oi}wE`Nv}WfTSQ-}k+@o0sRRi>``^m_ZQZpI{onau%C3>aHY*3qiCQHz`6Q%SM;=#oe8;_~s2*d7Bvy=gc|x z%mr}`mOnL}*(Jj4_uqBEOpckAJ&16yKt0*8)Dys+5;uYYB5WsG5jBP00sICcbl zn0TuNvxrYz1H-1E-yeLr@XPDSs@}UVQ^Q{+fnHO#Ip#_l_EYry;CnR&IA5{gW>eQV zmNTqa_I6WG@Knj8Be>b@oWZL(2euH;hT#_GuaUOBPDRM?QV){tLpjayp{yy;59iJw z!1@gpvdZb^0e|fNQSc0W-ApjJ`ll8+z4JN3-=EC$2xJgkzZ2RrDsbenODA#x{nYB_ z$4~C1WHE^bH_99ZF|3T}O(whhZCxiJ{G1;?RS0FOi13j^zm^pGeM)Rt{OlIFz2p+U znA?6lFRe}gWjJ;DxA!x0WdzM=eeK~9nY;~_-9I*Zo`1?H0daJ8{1fOWpnmJ*@J(dq zqF7*c<#3IPm<}u)y4?ElMv0mI?G!qTeuUkB?j}Y>uY~b-n=!V}dtX5wI^e-=SZqX1 ziNXC17$+aN@{Lp>;RM_})1C3f3i0YYoy!*VUb)oD`&Jw5Uf4v_$%L2InYNy!IcagQ zI3;HOGfdB=T?QTSL0fS5og`c82#LDj|7WXvn@8;Zo{kTWg5G}JcH&vGXfBMWOD%h` h(rfNarjp(d{0lHJsA>a}zX|{V002ovPDHLkV1o0tFkb)w diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_13.png b/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_13.png index 8c14d93ffaed7c049a9362254fdfdc1868186c29..f65c79cca208ec25b8e5b33ff659dd49af85f485 100644 GIT binary patch delta 578 zcmV-I0=@n51n~rrI)Agtu%vTYUty6TY65}?qA!hLAsP!I2_~-y#6nOom;@1C6eMjR z_R|SkL_|as-De|q8&L2M2%}gSWntZ{?zqm*wRmqQVG2)ozW1E-``yF6pz|!87(;}3 z19OXRgMtvY-<*QEoHX7k?8QA_BRn{nf=9u3*Y`TS1RhT4MStjmpEoMDBiVCjk^2kg zvR;0n+>fE%7Z0-ow`#hC&+B&TzM2u~Lr~mxdV+xahumi^O~!bjW@X4zo=KAt?k!l@ zfVK4ZD|n=CL45UcZ-dbNsFj2Q*MEz`sFCdyWH;hOsvw-%MR?-doX6l?8o~Bf)wc}q zrZJZOy+{Mj?SE7_w)%U;Jme6&e_T4u0mLDsgGiCXer=?Gq^d+E#R4_R8i+|7sKW|iQN3v(mA@>)| zWxf2h@&JZ*UpT@J+^XpkKCj!Uch!tYAA;hJvl9f|H{@PxX)?zBH7i4&@Klu<_m7K5IEXlewD8O3a$#$_!|a_mw}RUu9CYStp;HmV zvjeintJOc56vUJ7l~9GvT$)}b{^ZWnHMMRtD!khJap{{{U9>9U>_7d*lEI#As*YW_ zH9#mDp!?u>yj&TjnN*|u{Ti&cF9qu#Km{%%e0FlW z;J0h4xtDgP)zwfGKK-FR&s<`Dl&&lyr2Q{*cz{stgT~KopzSYa$kI&Snmjy%2Q&F0 z{}cU2e>*sxnIm?-?60&SH9uo#chbJaY=t~J6vl1a_?T{~lWtxlYl`dKe_ev91FJ+* QoB#j-07*qoM6N<$f;%Q4SpWb4 diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_14.png b/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_14.png index caf42900e21e6d9883f70a0d177729ba14ed5712..104bf39f90301042a0036681ca4fe3e5caad203b 100644 GIT binary patch delta 589 zcmV-T0Ha1VIScSc!O*R9XlLCdLrl(m=$4HSyQ%oD}EI z1-I}mzvp?M^Stjlpfv+G21Yg3!`R#aGB86}>fCNXr%(LgkAJFZ*{~I1`cb3U`~Y#+ zLSu2VgpVRtf`7oq=OrsLIv@TF7LQ<&!Dz9H)TbDHc=X7!N8QBZ8uagscos>aF3#|uN zid+fd%o4K!YAV_7h1T!I^uCI;x`Ob%>2C`v6G@ic zzw_tO9$oE_z|x7q@YhOJjIP}`yQ<9T)h=8+b@v#$qkkM(=it>LD&1PK>-noMN(u*S zkR7-m&^6C^g&&?ghTMGeaAwV#1Y~9_MD28PwQjNhw?>iPYww8$q*^=CJIP@A+%x~DK;UCYva-g>@Yzq_WSj0 bw%p=>M)aaO{-8#x00000NkvXXu0mjf*6kq@ delta 591 zcmV-V0^>*Brl zKzGrz{GQ+Qyuau79MD*R@A^hH(Z$44A2P5&SZ{w{gLaSj=6`Qh-7@zU!u*3;vHc$6 z{?&TKxe|6oYy^LS*PoVb$Y{U)16VtWLAG({^{orwpRMmQKv)~T_eYhc#?3_nw?WZ9 z7V%2KzE!sSDaJl_mrO15k*OHZ;k6EvJ!F*^&#<#YTK|1ISb0MB49%P5gl;=|kkLTn z-q%I0gm7^k;(vWC!im^N>*f=@0bj*FJibt{1y0;A3HggZUuB}s(By*)1(S7TjW0e4 zOKHUf;=_---xT`g2n??FiuWo5G{e$?jtw7_o1RanafhLCx0pXtk)kUIpPN5jP-!Ju zcIWo*pLXeJh6L8n_6NUIs$%r)k;TnrPS@z*-=6>R6n{D+A6fhOjR7j1p<@5j=O307 zjt@b0>`p+(GLsc9KY9qc^nVAG+7Ar)}^yS8|#nE4DMY`AFvo%Py_8AB@XkCLa zB@-(&tLyMikC3umIfQgeSCBpWcjVcny@)@b87i9O@a5liODJLPr2keELNzp&7s+p^ z#$-Z1PDsWD>6&A*aBxgE`+qa0(;u{2gB)3QYkC_ggBFBFj3dQ1WN|jGkH8)+8nM?K d?qAYH43zHj6g|rchf}HS* zt=yDS;3}UBk!a&e&=zxN8*W?o78*pMo1`L$hqMTUY%#cTF_%biwDJuEjx+DgadGZ_ zMvK014)=V|_xt;Eei!8L!}SRS$WM~(SOXpK0&)6Xt;OyVJAV)VG_&j(;L)XQrg#Iq z6_Euv27VtP2P$_g%Yy4n}2^*>T24R?|Nr_ z?(Hg{Hjivt9a>nbsR)#Wu=UN6+BQOVtj6uCe}-7nIer!S$vZbg0m4;7CY$94Ax$zc zAbaJ(HgF{gJ$dWN~VDz|rG-lDpYm*%AIR#jiK4Y^r9BaBV@1rC8+}iV)Y4P>Z^hS<AYNwE>vzX712g85}FCG z1Z^?2X)%{baMbDz1kRuL=Cru? zzM@4xIEQn-=lA`6f4}qlf%JX2HG%-?S(06Apal*R$KRJ4+kcy5_ldg`%Dx_6TuLS$ zZ-L_xNr2Pf*B(-^0*=IjG_e1}Ltt$l!R*)hDOB(JE~?nq2DNOfUMm^oub$Y! z-aa!WEstUx;lP0Dk_FQ-Zs2f1dkBx>U+1y>gmj4TMe@=RM?36v5blr>etJwSD!D1d z!J6(6oLnBmpMOvD+#y(uBXq`_RKV+Tgyh1?Ec;;bDV$pU5^cyKnR@WY)m&R$u5{14 z>r?L(>A3!6<6>@hxuhVF6T|b57u`>ZIjs+_BR%`egOGu6U7yib{!yqp z8R(I`_H4A-qpwq`*gDf~_hF*~;+6IDUu7_;#v#tNE`L8fMp-3}k8eEt44GaHytj0F zH+q_(Nmf^?N_#RZ>pv! zNbjR{YoQJi#2+wv`$d7GY<{_QW349Cdl)ZG#`xj@$(z5|Jqcup#pj4sT?M?6{}ZF~ zY2HFrWKj)Fo=lLsw~b9Vht9;|-ys|8|L4BP|5#1VCqNfMe|V$;=OIbPvC%n47UHgC myGecB%cV4KJZ~~ff8=k0aH+~-&Z%20g?|%w!Tp&*1_(Vx2fq!CwgVA1UwHNLl~g0EPbj*)5Bru5$1k?nOB!3%8L_t(|oNd!Pj7?D(1>oe+M5S;=6f#7kBFv!>l~X*KKDkLzuRlCwf^=0 zI~z2HVeFh<&7B~cyRL*7qQg|3gIS-kC`WvKN1w6mHL7P%`+tn>VD-m7V;7idXUvP? zFqmwio3MOzJ%~S`wCP$JwLo+vr?IfSsfmpTKn8B`4nS7H7jOn{&$ct#CtHm54i^udp7DRV6&0 z#zNRqb&+&V+<#;-9J>SVO%F0a=qcL&b!fC5fH3*|D~~Rx8d<$U(WPxyAGVa?x`{p6 z+S{opM|3b{&ZH$rvXJ?}SkBCgY~hNq!1%6|>P|E)BO?m%_n#MM-sOts%Fw0y^d`R8 zB=e;P&P;vD3drjm^Wv*ga%s)jw(n&JsaBnR^wj&1v47|d^Z0lGS`6eE{rVePPBV}p z3VUlBj*X^1occn-PjDjDaOYN@If(cySls>5$;ueMOcO|d&an%z{Hsg2 zu>Q%OCY|{GQwY0Hq|42Uu>w1vefnNzQnVpU?{6Pn$kfdoIbkWg_D0o=7+$V$v5J=m z61uOg!_QthHEcxJ4M~5WAKtuz;q;~A&c$~}IRm}c<@(;giveu4zz5@{hTjGs{~4uG zK{g$%UfulhEOLWZb?u$&0hy`=I$z&|%pjUC;iVs%bous2S+|^fi7FK#IWpu4A=cL5; s>bH!yK&PHeTjmivlkJ)(n!!u%11@!|+>AC-qyPW_07*qoM6N<$f_EATEC2ui delta 504 zcmVoW{ejKcrGD;H^DQ%6?7vUL@@daJJ`QkArrqV>BN=QW9v{!-=fxM zJ8!iAC|i?+0~yCF$XBk`I8f;C8*tdKDNXQn#r!1}yqeM&hlX^<0>6Kx-_POdO~M#n zB*&?{gss*kCvM!t+s(93=F}Gweu5LJhC8?N%t6Fw!Q$?ZPFBY7Wtu?xbBdALII(KIgeTkWgAdv|I)wZ|2X-B+Ylb9r1#K%_?YwTp|hFf>__(z1s52AKwsBnjY2L_t(|oNdvOEn5P`|B;Jqf40z2TAj2H<}6be)sxkwod}e& z-khfox;Hkgm>26#U#;`gv|r**w_lD^VarU5HFu|f7B;;f10SBuQ|Ey%_VulqZFWCT z5l-Z?*74N2osLbJc6DD{s6Pi%${$mMf5Df;!z#lbWKEN zp2cIssy$r$6I~|~>zg`8OYsE4D0&j)@;R;lpW5}Cli$e0N9?-Z<9q1c!A$cy*@|_a zrf_B$hAq6MqwZTXiM8t8cC;_04-*s-~P-J@V)V#yC}aeRHNDhv4LtMxCmk%v=*1wwW8 zf1YyANE~V+RMh|?&-A|w)t35slL&EdmDJeL_YPuFc>~j>%E~+Q1OFI!L zWxY91A9QbQSTQfwoxWPGzr^1$*7HjTK|14~JKL$QLnWxSJU+n8!Gu!Nb zo+6ycWv%0>b2}ZIGVSWVworc{hQH|CbY0K9<0n&;XGD?G)!%PLK7)ip=a1XUhz4aS zBysGFpnpVcR&C6FyI;_hlN1qSO+vB?vK5J;mYA1>j72TXZ^yMvkLb+Q%f zK271wFbrFGOG)?UGE7gxfS$dDZ0WXvM-DvVq`;0Poe+km~!#)?)v>JxKxb)-T&YooL(@w zVb>Hwb>VDW$=mWTFEr5c%Ei+?4Y6Z$|GG!P#Ke*x+T!^7R#g`8%~$JRXd@4&1`CAh z>VG}uoRK)xM5wBPxd(ct|6QoI)X$qlhM3m}fZ*LOb%~hQZ zKGMLe#em3E@g$Z7AmANz59jueZE}qSt zgv3f!cID<<_Cdqm>dz97owc*h<9$_$-U0vAAr2nVChlC#wr_SDe|%ItG&i0zQSHiW zpW&|OzA3qxzJFNsYT@Zm`#IIkb6H)AxJyaDcV=5yDBz|4BIqxR>LXt^Dunwl4~5!v ze<{=7DB*5qTZ8fjX3np1N2y<*i5|#dvORpWrFvM%M-d!@+>;+JQOQa4T5FoL(~GUI=tw@3r6>OyQ&Z@_!DD!%0j%axRB^Aqhm~2Pqsa z&<$u_Sd;U8YLII5FU1bOK40J6_<1&2w@$GOU+K*W9#@u(9_~KaYIx4Qda~2a9*LMy~Uz#t78Y}%Bi19-a zG5^I%KoAD^+73{RUu?vo}Q?MvGJ;~?Yio-GYP@uO#|x?A|s?)Crx002ovPDHLk FV1j?@Tc-d3 delta 670 zcmV;P0%85P1-1o{B!7KLL_t(|oK@0Ih#W;2#_?a*^v=$bu-h(CM6_}1m|CcTvFT4Ti7}0`UOyu0N==H&d{nb1b7!tMoF@xCJexTQ ziRG&7$<4LxgND7;pCukUYiE6q_f;kO2mDi)ICw;dxO+9*zS(X3@lo-}Tr+39+LhNn z!(GpPQ*twXv47~-!qcA)a;lr>vO0>mN6DanW?Psq;HCc}7%YkEEnhY&g!?a#gxd6A zF*DeRa5ppUVZ4Fq^Q+uZ8q|BD2XdI`jP7i)9_I7)3XZ|?!q&E@Q=4mTTvpw~7Hqvv zGNiJRa9{)K1ZHKUrC#v}5DDp851#xnN2nTq zKXqvpmT$`toL-xWZ-*Pve#C+|X1~Mu7sqPXQE~O1vlzd)wsUCu(p*8*SRU*^j30`K zxxc>pJb%#EPrBm@(WH}k?h4ei5vgz(+?56Z^o*rZ#x7_-B&KF-iqZ{Vua8<5huh!QAr7d zm8ENi9eiu5-|2p-$TfnjP(EtDd07*qoM6N<$ Ef~tgBwEzGB diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_5.png b/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_5.png index 2f539ae2237f4169bcee42767720ee20525278a1..8e97f2b99e29b7803029ac6b97f2c59b7ac39717 100644 GIT binary patch delta 658 zcmV;D0&V@Q1*!#*B!6*9L_t(|oK4YBXk1kk$MMg*^X5-O$V|XL!BFS<57UA+)P(~U zI}|OU3yFW}Mw^}6LN_kdKB`a(g^FvDp{`uH5ClQ=iAb|)8>Nd0BD_s0qR>e|n9B5x zi#M;y*_?ZSoclfJ{4Ss;ylj80aHBkhGOY>Q>3(6|!tiJcF@K0Uc7{>9R}ofudLOdY zL_6DKjIZF?@*Wd^*}95tP^cezoh7m6MmlR4jU?Klyh273eaoqla*p`e1aW3I*Ujn9 z2xkUXVKJnpFwFe}cf;7u2=QB`z{v#ax6hg1???Q~Z~eF$Jq&1E{<=SN;)yfA3X_OYPWG`X3C|Xa-v%HV>==c zP5XIEw||)57*9)jYno|~ZMK^og8Hj5RvTXY!dXK2>ihp>4m~ejOA!`MPY;}zd@%IG z{G@dMxppDF5c{xuu@9gB-rT0qGQDzffH3mOh`BlEYu7SD(RnZ3VzEekG})4HWD@mx s;W5WuPZx#S)+ow!rtiqzTe|CiTPU)U>hU)901E&B07*qoM6N<$f_5!YHvj+t delta 660 zcmV;F0&D%M1*`>-B!6>BL_t(|oK4bCXk1kk$MMg*^D;9HAu|F01Vhd9AEpIus0#-y zb|_jx7ZU%{jW)Y(3*ER-`=~-G6e_MohPra)LJ$PeCnC+JZImu1i10S0h(ad;VU+0` z7w^3$XLIiTaqst>`#TrV6JEAIR=8QNLYdZt?R3AeZhm+)g?|`CT|2`l-8&Ihd3qnR z-9jhZV~nrj*>WEff6=~%ZBUpw^g4@Tt&OxQ7>y)4qP#{%6Majmk+P5Y*aUH=>g(2Y zXM{5YtFRDKQyAv{hI?UbXN35zQs86)Gk4CL+wVvG%CG&nZaoZWUiqqDIq}4qpL1Fp zUspmnIVf@_r+;4Rmk$ji62gt!ls2FJr;l*|&)UtTOh<@HM)k(EycQ6xu$d`pVdl*t ze;GTYoO*HpbJE-kxSUW1F2;mtf}A7^_V$e(oG0eEHpfGKZd*uB8a`r>6%lNZud% zer{5_|6He#UW|RPe5ntg{npy1**3j;X;A*lk4MbTy3n|u5sL16=@tt`;={?7gd>xv u&kK(^?nb&GG`2=jraOH{?%&0G{s&tqvXW8h;0;j#0000KtMqN diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_6.png b/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_6.png index 6924101938a6f58bcf55a89ee385f800ed943259..b8619ca13006cd11d4d554b93fde8cb637d41996 100644 GIT binary patch delta 663 zcmV;I0%-lM1+N8=B!6~EL_t(|oL$jRXk1ko1@Pay^D;BE(oBP5#5VIPu7t`+T~z#& z*Ww=##EAbQR+)vM%W)@S$%8D4D}x9wTr}!J5f{3uir5jU6kBN)MHCgEqNqq<41xnr z-gEJ0lF_@l_dA^Pedl}^a8&eU^$OLMC~x@>FysT%XI(h6m4EHlQ7)`xQ9leGeeuLoMH z)x9tcb_2{$ApxFRn!w3iz|qlfI|_KIGt8k5J<^4nE`O{+BSRAF&;I?{Rw&p5Ikig* z2f=OmWJ>YsvToB)%VVJUFBv`=dxO2UEVA+#@4$)a;N51)(4 zYUlc3HBa8nq4w#s2nxqLP1rtNBFG#(HbiK*E+QzC(N-TbgJ-@S@9UTL8XBv^_Sorb zy`^T_vVUFwb-dCSf5=5i?cyDcicyo~>X!=}S_Ct9uVB78`+B5D2ydQ=@z|lk%U^?* zXx~aEkDdKkMxMc(GiIy?2Iz<^g~tu?@Es77{~;`YhreHYtQ&?peWMEx0uw2YejTCGug9xxlTU z=y%8fw6Z^NJ)mcvj!<$da9v<>kYw0lSC%Z83*Vg;jcLvDeaxCw!-2SdsKT7G`{xFVsK#12;oj8< z<|IIS10n%VWoxkACV{@nw`B#urHrQm;sAMYx;D*>0e>VEV4IXvzn?8hADRF(7;{~n z0BqB>Tl}j-6tK@nA+@}GeH?s z;ZH4U`>qBso}L9HK7*MgKy^F-B#O=f50GhV7LWvXWvL9r+%s>Zd3{Nb0g0lQj+|c0 zXOoUaHGlp!8tKIk8eto=I}*_!!`8$XeCDx065Cw>+LNj4f;>ohbHW6Ub-R~eM{g%u z3JPs9`LkFC=`t*QxB(+ArUp2;bJT};l0v#z0;HA+51N|@5~B*FZ$DxhQa>T00000NkvXXu0mjfC%PgR diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_7.png b/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_7.png index 1c8076949f7bc7766deb8dd904b66f40dcd6a9b5..bd18cfc0eac0bdac6626a15f3ab7d7b232241ae2 100644 GIT binary patch delta 609 zcmV-n0-pWF1;hoABom8CL_t(|oK@0KXk1ko1@PayZ;>}nf4|NBch33FJ@*0*GG5L? zIgCk;+_q6S9Br>$IC(w$f1O056WKP(Sc=(S9xY+^~-p?FpM3Gw`-`8h{ zHaW$E-zrMEg_{xSsrTGohc5S{>8Ec0nN14995eaWnd))uULnaKJh1|I#!c6AC2V9_ z&`;cNs zGw>!{$J^73ISj#c5Kkq?R^TQy2^U5#L`YhtOnT++W0IJdo`*n^{;*u+I}IK$-KSS- z7Z2OhG(IIX1v4Mj$D-d(+qhvUmn22lJ2m-gmzhWY%?L&ESDP-rj%7$o`SjH`q@O>B z;F7;jf48A1?m*DW9}o2k?rOF&f+CK7SnpE1vG!B{$}bFODr)CDyGy68X0y7iS2{8k zEd1Vp+Do1CsjBCSyuNEAy*yq+MfK>5>qj~h)mzmzgz(M>8O^8Pvj3bG8j>AFCa)-d zS!xm5rgolXg@^XMoWmR6)Go23Zt>Zr6@)*+L!%vb4Jd|RStj(x_I~<3jb6i|X-)QZ v(_G_$0cU*?M}>4PPg>f&d$h9p?EU@&LcO`bVN{ZU00000NkvXXu0mjfC|EZ0 delta 610 zcmV-o0-gQD1;quBBomBDL_t(|oK@0KXk1kk2Jqjz^N}}Bf6wOrJKuNC{k{V@$auL6 zKdy!Ocy(pV-8ygL^) zR8{6nc$Bm?4N3B?nqASpOuOGlW40%nXnG#%VfEU@MAVq~6>NC2==5-C%~*+8E!rK- zJZ7-ucsQD+fBM~@S-mV#=B3Y!tbX}Vzx7HaiNCgb5Q5KsoF{4CoAsa<7NW?lkMHZF zLz|r9!EY5M-NMa?%BlC<9)~XXrRl3~|Cvn)!W=XC)|={a>|P4fr|GFu7%#*8>h7 zJ_B#Ub-X>jn8OfE2k}&LYz1yYlW<|=LWHCoA(bn4ACtty^n72jr1HaZk?%BkyzIVm zrFQYKJx$|NLQ^pFQGG1>?X-;>hH^<#guPRfuXdSvILI3~& diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_8.png b/assets/packs/WatchDogs/Anims/DEDSEC_TALK/frame_8.png index ca04ff07cbd8cb77b6e409fa3b9030dd4b65eab8..5836b2c9b2570cbecf5aaf5198782f8ef0e0f3ed 100644 GIT binary patch delta 587 zcmV-R0<`_*1mpyeB!4SOL_t(|oPE;2i(FL{2k_6m?~OCAA^QkorV0FS1eVJNw<{*NwCt$5^U_L_tw_6i@oJMw=V+a7~T|hh+DQVWm>q?|%nN<6&hQ_dSH1&|dz?+MEY$ zT_^j|EwazJ*fGc23_GlMj#V-A#^eoRy7${HNzVBRU7T<4a z#QCaMwm$7N|69>*vbStRfstW75j)_3I45@c4&}o8$fhv(e2ihL8Pvr1`pq$(yNQzu z1@B@U5JacM*2Y}F9LZ4Yt=}`0_%KjkHgG?z;-rh%7yBaBjQ5 Z@*lpmlnc^DjPn2h002ovPDHLkV1l2aCJg`p delta 588 zcmV-S0<-<(1my&fB!4VPL_t(|oPE>3i(FL{2k_6m?~OCAAv**yQ-z0ENFdoxQlxk* z3o0(MLKf2P76C1{un-aQ#D75X9~jWWauExo5+>SMnJFR!L3q*5fV@KE=>E7C@6GJ1 zywyEl&bi<7{ho6H1D>uyY=OWF<38||@K4nTE=Yg9RyaEc41X5Aj8_{@^nkAl(iV(b zjsauuz#78ZmmdqYtB~hw)6<9Bxir^Q6~{`ULHynM73Z-+_|vcpM{lM;c1H%!x}O#a z!}rQiA;hTwpYF{;iWBJszrOThDk0w899_o`M`Kk_oNu3bTiM;S61%q_*hlpI-lId@ z{b@(*$6M)9jep&5<_ZN~NllH5Pufr{p6nEO{Bzws*%`Thyt;N&$Gsq2sSLKyG6pvg zzaUf)-k3smz$UoSJ^D3EF}q;iGLHP;3B6&1+a*(6T4i*GTd1O=MxN5#h@a_*Kbbn+)bR6 z81pVB0Yz~}Y-}u+f9gX$`M(5T;tq! aSMndew3G{(5OXyE00006!wcxppMscxlj3v3WngChk7eKt4{j8WXNST5(tlo-F&r& zp~ACqoa|mNZh~Lp8Y(Vbd8H}Ah0?p&=x>-Dx%BbV>VdM2pPk1iA5Pjj&fa}cX>VsGVrTxh zf{qprH@)F~=2f!3_`{|j1w&JM1=-%PJHpuI_LFAg#D7RHP8}qpY;WyVI*}C$k>((e z#q3QQaT~F6kC-#4h6rL9!BA(KBK>-<4Hawf>2$TN;)&~se)h1^P~?AppKK>b=eH>0 zw3wnkGfA2Mt=7$*vB4N$K#MaT5B%6YZuA$E%d~rlj_;T}`Tj z!as?kiPi$_Ox<&FL13~qffYT|hN{)-ad zZSTlP#q(E`xPNnZ55 zgaYEdA@p`R2R>{_zr>(n07JEx|5j(Q3IF?@GsMb#q9IvX9Qrge<>0=BNEF{N+nuF| z&FNn7%Vs-=L}94Ule;dWH4~;&2&Bb)BRj#;-S)$$Nu} zD#vSVVn;1BFBPBqWDoV)7Vz#yiSXl0D%lF9AkG2qm!t>QbL2AKt4bVNhrB~lz1$#O cdR9;P7xT@KctFe?+yDRo07*qoM6N<$f={k8XaE2J diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_WAVE/frame_0.png b/assets/packs/WatchDogs/Anims/DEDSEC_WAVE/frame_0.png index c06196679d80816d8bf13dadf8b90942f8dbd3d3..533905fb45015232ba1457962faeceea38028d28 100644 GIT binary patch delta 251 zcmVvAitPsB*i&L zW_ldubj?qfnQge3ZT^WoU{sWeMjDs@kKNpUPCsR^M8OBXw15Br002ovPDHLkV1l*U Ba83XK delta 250 zcmV|lb zr9jfxgMJdY2@p7^z5@kNe3Zmb@c%RhFopw`0OlMV*a8eCc-`B#08C}=nZmF8?wN6V zfER#G0G@qsEnr8O>;#}=xd*^TigOQmwqKMhVwt#7HGCU<+;gm0k-#J+lceY*#oDGx z0Q~$p;2DinltV^YC;|r@cx8d|z!K#EFa=bUU#)#Z33a~SdPChM#lu*`_2ES|SJz7R``0AUKFWP)Sh1 z*sUZrNJYd&i3l#@<`IIEgM_$OafmTOCvg!XU7~{yHsBx_1R=DR3|br8G{@l!8d?zq z7te4xJojDB`@sJ*+7BUFMk@@B7boQ}K+$vUO!hd79l~{i9c1?0q?s+>m zB{Ck%m$f)jJ638AM$u97yNjpsp9FB(om%a~) zHUJ!XfH{D}K7V)ya08&}gHu2E_daLXsoUDn zD_eh@aw>X{a}huumPst;D3fj?~XU|mA|IB6^sEm=>XCJX#0tPS=E0+W{uyN+XnhndVZn1fm3xB!B5iL_t(|oYj#rXp>PCM$diuZBr5oEfE9nNnC_Tm*}8_4LAq}K?toSgVx40&2{*rgw(N% zZ+KkJ{g(S3_w^u`H0;Om0D^=&Hy{t5dbR>>jmhH@73kn(A9z%xnPeOsjwb+De+`M& z032C>MSv+Eynh6^4N&*N*}wBAAJhQG0Dpy;Sy{}?G+<`x`WxK|EC`s_lW0TPpF6v% z@*%}&E=4k$JExA-g(Dv+-dq;_d2jiUI))qZX?Yi^UeaJaHLW5O%^!Dp6=ekus7L1v@dT&% znwaWuz1|PT0GzY|X#+IL_t(|oVC%hYn4|R2jJ(N-0L;u(xhmH(7_184N<|NpdiRM z2)&^o7pjs$sDnd?{0BOmV26SZp>%LiT0}4=jzV1ucQYLX!3ORih|o^#%Z&r^+`E8^Ta;@oVCoSDKm?Pk(xUrSMQuzy1H#ktGE!up%kaO?G> zs()+ben|1b)#X*DDyQsULg+b=gf53YfiPoI%oi97^I*nkiW+R@1(=(+DTXUdXv0|F z9x*Sm6>hfP=2TUp7;e(YKMjB2>AboO-B|o3{yK1)y<%8qBA?BhGq#}N5W?Djqg;UK zYd8TnO0b69g@1=7xPYJ{y%rQB8&=VnubGgD1E?Q7raw6A^_H3utSYA&q5N%6}1 z-W1$^{it{T_T5YOX4g?DnVfdg=)?}C(Bo)YVRGkR%YPi#4KYPc(>ht06Y2^ENITfg|I#}$=*I({3bfy+7;qk%Beh#GQ z@G-pW;!x@MYj+O=i229eV7r4N!QV`ajORov_f@Uj7maM}ko;34hGz(`V4}?U4VF-p rKcvhx+ahR1Zn%5xb`3uQ_ΜG7_s&nq27O00000NkvXXu0mjfO^F-U delta 552 zcmV+@0@wY*1i=K5B!37=L_t(|oW;?g62jJ(N+}mr&rAet7LI)!VH^de)2rU%K zcPMy6K`!`%3_?3NIOIRj;RHJrbO_R+gVGWL#-wAwEQPz74h5kG?jVTbm?2`Z-$=~q za7=V{kiO%G_kB6%efTidxLFZr&l6{-Q{>D9PPdy$r+qy|&40lv%_rxt2=iMnQ^W1& z_pAQxq2EJ_>(^G+n5cZ?=psVTu_Sak=>dc(<6^$ZNSFgthEvpFH_yZDoLw))KJN)*E_8u_RF%ltj3E=zY7evZEme9I9rtT2|(<=rWJ&~O4_^VKjH zAvy(L!7nA)M1StWMhPwt%{p zw~nM>>G}QMg{3=}?oMx^P%=L0Yr|s)ltPa$(kkNz|9@KHOFcd-l+015ntuu<_}CAO zV0|=aS~;iBA%t_2Pgg>$|L|vT2CO~azn6x-f1Oi-3TuOfu6*O^Awy?kp%VT&UOCFK z6rG&G>n=`|j)#YL7(mQF9tLkZC=xtlQe-qITDh-k<-TZW=YZrzjTjywY{OXD@f$3n qD8EaYYas_{MQ-0awuiz0RQ~}o601_hiBgOJ0000!@QxWN)5Uh%z;2Tqsr zhhIS$AZ)OZHkeJ(IkT0|wJSsIq3CsZ(-e<2JCjoZGXWZthXGds6O-QoG7OH~Irwua zzkj;)a#NEX0v$FxcPO=oxI-DnIGy2_dK+clPML30)?1XhZkE>MVeLQ6KT;^$E6lhr QmjD0&07*qoM6N<$f^sQ&y8r+H delta 251 zcmV~DKqM6&%|j??sVGFv zCn6Y&QlaVK)Ip>+4uXyqZ$+eoLa-`=f^TS{^|j&>a46)9i;fmscwmMnI$4yrL_cVK z*WqiZWERhGhClb7;ruxKzqPk%k&&4wfRsZHp;x6GT)}Gwu5*1k?nOB!3%8L_t(|oW;>SXq8tO2k_rHz7UfNQSl2!ZiYLAlm--sAhh=t z9cl)lHA;mJk#=wqTNSz}96_YeAyOK25mN|wYZP4CrGjsy;K$@pXrUkv2}tSWGd#ne=YeycAFsI9!$4XJUa!-Le&~;h;>#4-yMMK!dFcwxsmr3dpQnK1GIE66NogK3W zq9JI8WB1a^I)B&!J3=fC*TMI2_pjCbSO@RJ5g3EQEc3UY(%SW)p7;n(LdlS5l}6=( zMx|r0Qn-`N+nup7BPy3&KjfUNkaMoA$a#T~^Ma6bhZVU)1i7O_SLeSK2U6?>L-1OH z{-Y?aqxhz#e3Rx>J1tROH#fSu-+>-wY2Eb5*J*8!a(^Xr4g6xP}j}X&jEWAN`{gj{j2Ds4+kPprX5BlDqZFL0a->TK{4%)xz>% ztfr(<)iiCT!AcRj2pN9Oy_KYQ<`*gRa?1Py9)nk@hT002ov JPDHLkV1g66DJTE{ delta 572 zcmV-C0>k~(1l0tPB!3)9L_t(|oW;{WXq8tO2jJ%%KZr?%sMJ3wa_?}5kYb?4AqaXu z(V=D#TBEe!kWz;(qHTpP5spxb;1CgmE@BD+ZyN=dcB#-WrJ#0lC|D?#w07!r5v>&C zJsm!qlt3v?zQY-Qyf2*dJ{(?hZGeHa9K2Si5&h5~6UFB#vVVVDMeFiaT2ogXpQ(Du9O7ZQnpM@~~?7$~~j6Zr(32*k@KgcVG=e0Xsr04b{PqaQm;d{8R@=-~$+i!YuROJ)ynlZryPLPC`jjv__+H zSEJH3SSj4f=Izbclo6FHwjXlNRmeG4R^_}v$az7?xy!2DC4$`5rKkJ33*}vh?co@KOG&mY%#nizbVI(5fq`R4ax{^fUTpa`dW z!)ZPo9+)vxGqgTNzO;^`*EHUX-Z=KK6h8W`tWjfr_I^cg;{>*BQ8m@aYJ-&`^bj&U$V(&jw`s1V%quDLzbF@K#s8#yvHBZU7R4NDg6G-*0000< KMNUMnLSTZDSsn}k diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_WAVE/frame_15.png b/assets/packs/WatchDogs/Anims/DEDSEC_WAVE/frame_15.png index da0b0bef287286477cf278b2c11122dcb3502b74..dae54e11474eb609daad26e7d322e9207e401543 100644 GIT binary patch delta 508 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 delta 563 zcmV-30?hr*1k41GB!3f0L_t(|oVAfpNK|nYg}-~>pyp@_12xcq0||+3ty~m6AwpZ3 zkw~?$U5SebcNP6MZK8#UM4Jd9X(%7K5VCObAc7(ZH{mAe85mZM&XlH5&Ta7;us?*0 zI*YS7+Z%gdYaC`v~>PYBo~dE!^`Nt$((Y*h=cYQ__!Wk=ZZO z=6Jnl#37Ar^BJc0lsh)A0c!oMh1BqQhGedE#VHv;rXY`BAdkvjIBf0k-n}}9hmwJh zG6CR6Y&f-pP-~r)5$FXHPGua{Wx8}HBnRJ6hG9Dkdf<@DK_zO_pxh{Rd}0g)l?<%A zfv=evTH=))RDaRSd`JWdl*@p%!W69l$^;-)@YGesK_@^2Fct@%MX=inaM}u>Ktl-B zg+N^dVrHS3nK{qQoc`Lmnn)HC$-;)z$2STgP$*9TMF$jppqSkn%Z}`3Q-b70pCEbN zr~6EcLl`1WcbA_U-T!>9>DEmpJ-Jt8cCtQ8@{-r)kbg#Y1VDAbAjtq2gna@UbI`ElR>}pa63Bz17HpkUh!jkylL5<^7? z|D56Q__*&~-Z}7JB;zFyrM!nyK1GD(uE5HjS^TxN%?FtXAAebcyTfvSS++Ba>PS4q z%f_x7P~OW~ka2)pkk&I*;_7T3(u}}cjg=X~F$QsY4B)@e1}Q+AC4jjq$#7y+RsnpA zU3GREqE;Ae)^V2@#z_@A(&*mKX&E{oTW~_A2knY>Ac?aE9M&7%+C?hRRVQNrm-q5B zoC1fV3@`&tZGQnc768k_2eKhp1tba(4M71sEr1H7K+Mb*&8$vfW{Q|uUChihFf(-r zBmNnfhd@H___ZA1FVredbt+U0)CF{Pf8kgc6Bhvgi}Ro0pr%&#gNWwcv?t z)R@rNRl65f83)MdO*k4>`3c~N*5FWB6aepZ1is>k?0xc zS%V4;Av9kFMG1=T!t;qK0GVssQ{3lnTerf*CSNRMRbD@fGT-}NPJx_m1HGjHHAv3( zhg=BXI3Ne$!}B9Z;l#{T%&bn{tp1BDzXyF)%8x3QzpV1#>pLz-t~rqIlL`O;002ov KPDHLkU;%=OwCBzM delta 517 zcmV+g0{Z=-1fK+uB!A{fL_t(|oVAfXXp>PChM#l4*rrVjB1AG25->wa1Q8rE2)S#V zLaNfCLpv#@gM;8;hf^092MLb4Rfsl)3>Bg%M!P5m7pVmik~+9pP_REkV~)dDV(@S9 z=L|2GhjY2y_ksU1k}i8F7d(^;DIzR&1(t8k;IFK1+{;FI&wnc19+taHvXxy>N8&zS z)_2^1@>WiRqycU~Mo-m~VrHg+nW_7} z;va#Dh&K`Od=c?|8|_~F!4%Tk7mnrF)wM9rP95JyD3b^#N}xDU38z@9n=%o;ee zCRG?hXuSwZ5|rGzr{j|VGP`S!aUZ+8x*0Y$@oYY)^72WPx!(8k3gmSQ=sgNhhvZCu z$;F?y4&cM{14!Y-%v8**LBXu?iz~keeJbUfO8r}v|9-v#E=R68DgIK%00000NkvXX Hu0mjfBLwQo diff --git a/assets/packs/WatchDogs/Anims/DEDSEC_WAVE/frame_8.png b/assets/packs/WatchDogs/Anims/DEDSEC_WAVE/frame_8.png index d121eb0d548384cd81f273665ed5acda16db4bec..f3bab36c0877a9d88bd199131ef912b98dd1e447 100644 GIT binary patch delta 476 zcmV<20VDqZ1OEe%Eq^^|6mbwo-^?y?af77ND^3lvf*37qB!!YKZ%uQY8m_R=MnqCr zSZRtsBG_1jBX-(|!jfDdLcmiLPOcFQVxzGLDJaSmth#r4wMq(KP+Ncju4j#uIt2Jq1i1J;fh7PX1vm}R&cy^^ z!vMp%mP2!C=>hS;?M>M#gmW=%0ObDo(w-T2Wzi_Id5rXh)@9Z7TpWj4H4&&$}U zL$94sqY#c(;zBr@tQlb&yHeW{LHI}SJAVreN|NeIp4MWPCsQ`_Z~nw{&b>* zJbw}}zJA__14dj2cK`PEMn3Y3@iREeRIoPkPm*!j$N1Quq`dqdY7>-P`(yrTj4cFL38)_)qhijsRsEGu91qhnRZ z9TLF^GXN(S*^Al)e4-y9O!@AVJcRNXAl|@3G<_Y@+00K$ZaFCIM46>{NNDb9ss$@-Dgua#WQyCW+#4!H1|&4WbUQ%9MGeGaC(;J7Qmo=g+~ZTi7; zir)phD8pvv7JwE$^r7^b8EW>DD!g^V+H_c=4 zKI<`nlQn)?VGKsu1CVLsA!Y?WnwtPYi7ujT7}IM2FFue)Oc@epWrwN_FB2o$fqz(w zaS1XYh-tw0g_rWMK^58vKI~>A?uJ}|G(s8R_OGO|2LXf!02cvXJ1_-s4j>00S_E_& zpa~$R4Z%Vh;3#AfKB=ByO;zoPYJ`vlm+Fj&{GM(E&}K}Q2=ZbK?+R0tBR8V;g)d;6@z)N%ZMj&<=xD2es df6(%OxQ-z&ht3E2&S6;(dZ#!3Y6^ZG3Vz*E@b4fb zTZ;`hyw>8nH7q^$QcL$GHF_#6et(M|8S=(5Kb|X1E?4aATc;8e!X!0%D$xdv*eX4h z0Q?|BPbC1m2%zgk0kBB~DKPb}Dx#{k=1MkC%3$WpF&Wp#>8pCl$`?Ij-8W+I?AKeE zH}9)X4rU!@EHGm?V80d3^`HI9t!yVZ44QoqIIyMCQ?+=i5l-cRm*((|>>n_28CZ$` c+}wZ2Z?u)7mj;m%d;kCd07*qoM6N<$g1TMBwEzGB diff --git a/assets/packs/WatchDogs/Anims/GUNS_CAR/frame_0.png b/assets/packs/WatchDogs/Anims/GUNS_CAR/frame_0.png index 87aa0b8847d0bb228d975d67078f9bcbda6b5d61..515890bdd5febfd9ea530887ccade74357ffff5b 100644 GIT binary patch delta 431 zcmV;g0Z{&l1c?NYH32e_HZy3J2+OS{uNITm8^r3-EtN8A0EoH}mI& zoY&EqWF3+MGESe4L(Ujv`|D>tFqB~zS`#}2y*vnplZ@m2AZ!78mjxq{(BeS=lF($( zfLM}ozSpFJH(mt1i8)H_r~fj+yuZ$Kz{qGJaOH=&=+-pD|c5}(=A}-l|i=-pCu=)5eoU8 zqzmQ@yCA(MNm|JFD=JvYy=P3itdm_1y%s^q1y~F7RC3daF8x%wE=9nZXc*konFm zs{JcYD>_so1R2KkV%C2MZvp-6G}~VR#<@ja3s0)jKh&Ems*R81nF8wGXaVETUs^}{ zbkq*Xi9?*JNRivDeQzx9!c7321QfTg%9GUX3w==wxN>)yH{AkOUg@{%@OgR?jZnz% zq-`)`&<5E(Nzz=tSAoe%4M38yxffn=d*QFotL75qHzY~ZW diff --git a/assets/packs/WatchDogs/Anims/GUNS_CAR/frame_1.png b/assets/packs/WatchDogs/Anims/GUNS_CAR/frame_1.png index f609e86d0b85397663daf4d36302238a3f26e9d5..b929a2623db881429333b3121949a561fd3e9d5a 100644 GIT binary patch delta 616 zcmV-u0+;=+2CfE>j04Vl?~#u#0XdPrAAjyFgBg2rZ@mLf0axBUcfh@)iP_Zu`8&n7 zK!8bXN`JAn4Vr){k7E99gF0Yp!{3y?Y=aAc**-`j)h^G16J84W2LTj=3`EQ&HZHU; z@PUML+UR>ROTpj{;p&m`>eV-b!S8{gu9a$9k)#NPCb^nA7j`Xwsw&CO`3Aj#rLGL`BBm-S-naS_1O z_uTipE|mdD0OtNPk(j&Q`8QDB*T)A=O0pqILNmqmJR#|p?Uf|M?(2B~zl&FZHKe|| zKj@O{Ns=-&izDau(bEQX%*I>wv43G6&eRRSubA4w&E`>OAkIy|PZ7R3o7%Bksg>AW zzyh%T>EIU6QP%ZZ_At}AzkXg9N$a!(=E1~~;W8u*G*UqL34iRE#Tw&9J^*lTeINC= z{&p0LV*q2~Q~G7#1q&8%%y#s{sNY+beAk-f{+PpRZpa>5m*m>GAtX~;U4PWJs6}o$yci4T~gk`|CZ=T|4W`ZyV9n-hJfN$O5w_@M`Y-^v<>Kg1Qv0eCT)G zy}#pS!jHXnz1TGW1Dcg*OJ^$5M}fO*#q7RMj{52ifQs)oCu&kuHY-UKE>7Lp-0;;S z3p*uL%4=oAS5y|D8%c%KhE)`mO#&FIN)AL|0tn~6Ed?8K%0000j05g_&ykNV0lAUBAAf3=!Hhk*x84D#fGcmFJK)~Y#BA#S{GDQ3 zAiyLxrN7wP22H?}M=}4lK^-u);crS`w!sC!Y#$_%Y9G&n6J84W2LTj=3`EQ&HZHUa z_&~xr?e;wFG$R0Oagf=TUbuburC@M}aP`P|_39hJ;P=4LasR2GhJt1Ei*b22`+rOT zBs2SCNT)8h)=3D+=JH;4xvjWYVsCmzdOq6%{SuY;=4P~1kYsTrnM(D6%X+c(xCmhC zd+z&Pm&yPn0CWGDNX%XD{2M6m>*E6_CE1W9p_yWOo{)6Q_DYgr_w_u0-^DAy8dBff zA9Ts}BuN>X#gTLS=xKvGX5+2;*ncn&XX*yvS4{2TX7i{s5a%Y~rwHGiP3_pN)Jp6w zU;$YFba0F3DC>GHdzk6mUq7#lq;*;X^I+o0a2b*Y8Yv+Bgg;lBF@Q1gDg83=f&~jWW;^;})bA}zzH3c#f6QSuH)Id3OLA@85RxgaE`MrU)S^0N z+vCAML(6}cPWUJMhDDON{q>&buATMew~c6O?>_QsWPw=|cr|x^dgt1Ae#hP6%7=c} z-TOOUCj8iI*NaW_KcHE8wsfWTDA%&fP_Gut> zT0z`d>?D}UCYW(|c8(BRg8tbrt{C#f%ukf-Q2 z(1*}4MKQn@AnB;QA?c^2rl-W^Js>`X6i`npkaRqfni7&!%zsEa9!sz4EGz<%fBL)M zndI^j;g*9g07E3H+?P~JYAW}Xx4?H09H5?5nXYuWsVY!vNr3sxe;F#Z0M(xyW*so} z?Uz@YQobSud0j_YLIi{dSTZOvJA`Yn;XEY|XsK-Lh{2AyV z3lRlGT%AvG43NYEEF0x3qdj5a5WuQxxxyV|;hJ}tt$&ia&bAlmDe!gkY@6{5LMSL8 zyZ?OfE_dasg(!Uu3CtCA;(esDUqV~m2Z7vbJzHq2-8FJ_&Yi3zyOl!Ef}epQf0FSi zn_7=060>`5{v3FW#Y-4M1dE~qO98cA3>GXi4&e7gf|idsiveaoxWG8;HB|xau1-$7 zU+QfrAVcp!n84*VO=Qdz&eQ`#MjOe2zsFfxNHmsz?9>2{Z; z_yW!YC}yWf$aEIs);AE}z^x!yLjq>!;7SBdLj*U2QzodDneI9+sycp~4-NxvvqQku7C;p3P#}CAPJ`hX1|YWqmd+ky_BR&@@_xy+((0XPm**Gj+38{`)Jjv zaO)N`mHVx_g4b|?w`QyGJlaIm}I@1Co2a98>~lrN0M~d$@+^tSykBrRr*PuttP4Io`VXmE0$w4 zuIe2rmYZ*2>CV`#pN_VDPiISI@XdF6ES160AYDtbybgXbwKJo(%;4|Q8}Pi0o3qFz zcvO^XiNoq!%OZ=KZi&-;{`W3VNwUN{K6-lG-$8Qeh<}^z-JbXDkSWZ~e?911issUw z{jH{NDrFm1v&xN~MW&Jqr_3+E+U%vRcZ%kzDe4<1XRPl^E_}*7KV~QGUL<|hagZM# zSLx;{R6~2sVVZ8Ja=(MwpWd4ez#wDF?IF`KcUQb^+dgMpXhxuGd3~FFZM8q0(K0>x zjjzXR@L}rvA9T&*4$1dvc_oiGtMg8g2j^L_`*AkyapzDrmucBeHr*%PmAY2Scz%_K z{#C4)jT39W+)kM!x%XyQ54X7*ccxgskWN>foZ~<4gGG=|F2tn(0000om?xjIvv|x7zS0ZQzD!3`;+MwPhGxxZ-cjCAC;BeqQ?>XnS z&iE!t-z23nzWb!&f1n?}qQgE41$95wr$s$73T4&d_6YRoYJX_27}^g}*H?_zb?m+j zkt9n=&R5BCx&kKXD;R+rgCv|3nEgJgjYg9E^-_{9$-Di)^AHW@JxS6%I!b;%>Z4Vs z!ks(JR35hK3SPqnjzXWL-Pudpd9v6TwEBZ74k&?tK09DEDoK_%Y-hEX)pFG985~$s zNs^{E$!ag>hkquL1e2_`^K@yiV2#zd-k~HNwzB#nPnT6TK$U)y^W`Kp-3w5`O~qog z#&x|z#bW&pEZiHj_0!=d@9Auz414pP9t&mIXppX@Slk4^nA)0ATV&Yp$s6#ZjLkX7 zC3sSlYJvUgTZ8TL+m+E}SsG{A#_Ew%#h5=ccG{9Y14rUvlA7=J_#OX?G&&tB$?= za9X9Cr%(;)HT!A0Ak(6zk2alW?Poz7^P z9{3VtADe~wnOSV7Gx;^Ub%la}c+sV57q`OwvN*T|u z^4PzMC9`p2&6k@glOzw`?CRk*mt$v&)s=L*>i7)*0q%oEkaDvQJpcdz07*qoM6N<$ Ef@w)WW&i*H diff --git a/assets/packs/WatchDogs/Anims/GUNS_CAR/frame_12.png b/assets/packs/WatchDogs/Anims/GUNS_CAR/frame_12.png index 69f0c5bb3cedad64a54266739e717aad9433eaf6..f71e32cd3765872523a46802a940977e6ccacb23 100644 GIT binary patch delta 684 zcmV;d0#p6X10sl9CWKc6A2GQ-o%IrvW1W44KB@4Ivp$sJ9sUrI@$eL;>pqB#jbdI*4dU<0tSZ`e8=H}a$~P&IcQ_sx&`_};9qFZdy7lc0cH2Et*X7GIfBAyy?-g5uX|R%{b=B9GeCU*dy$_d z*&CeJ9W`Ad9zfYrrIZ!7wsZxD3pfDUkPP;s++W-6R=stkR4>?37pSNRHYi-Z34rRR zCa|Ex29$9iH3m?I2e@d3a}HE254aw-onT?Ng;e|k9;R8xNO~6vHrKCzdfW%?n~gWu z5NV5i`hTok*Wk2}sl1BkDY@&|wBtEk*E^B4;|Iq=i}uHQG>L2>_%~3kp7$d;yIDA6 zh{JM``wZqx@@pWYuAS(8f#keeA3(tz`JUp=H08dg0Slt?V1mLSTMZPIFCWeegN1DJ zfC(g7k{3bto{!xC7c9y}-g0ZSud(|PIG*XExh2WxyT@eDVX9oG?d;50Z_^*FxjYCG SIRRY&0000ni^_@xd;0z%i7S&j4!ha1hG$ryTOxKJ9sc-a7(Rxt;k*+rnuk>xdIB&T`;TEqUuQ!MhcrF;=`=77 z&N?4}6nX)G6?+<#8p(@9djpLQ(VPJw`3Zo9U<0tGx8IM8$grTm!j7Js8Js5~za&SA zX7_X!?+|$_+JCA+bK3OXFjfrGq5zYsDmg#VUB2)jKT0VDRQ-nGFQ4?NNdHVQ?8?0@ zORK6Lh{#N?u{lX7ewPsWfa8Gy4Mm&cl6Z&?egY^QS>1Ylv917~OnVM0^Ww;^)KV1~ zlm;Sw&dIW?8o)~f_*c$myk+_6fP${uYb&p5j-xPIZ-1%IR6Vb4I1wb94N!gPv&hf9 z?R8Gm&Wbh>51?R$Qp&2fwzUO|3pfDU5D)%Exswfclioh??^?Biii%)^!qr;>nK+*Um$6Fzi`1& z4XZ@D_?R~F(ZEJsIo16NNqdz(fP(olmY`#nLSIvd1ySjlB74+UeL3d~`!mAF?0EdJ z2`pKj5kdA{F1rgZSQLu9=l)=Cefwi@Jk!ShMkSvykLg>-D0Q9Yi*w7m8-D|=xjYEm S{BZ#Q0000LX!{HApnCS0Yx!g|fo|gA1$nmr>*Gzu>gAD)%qkpJCZhqUAs|r9Bey@f&+j|ae zdkDbB0%~~lqL~)?lHJVs03}aGGT?y5Co5{S1aLdyytUMv4?iDr$bAFuAWYrUW|_<_wd4d+gs(CN6vccc*4# z%0xPln13Cyz7UOR&P>KZ0T;%}&sMweEeU$v?$BV{D;9_L7_~M&dU_^*GNw1|Ubtxy zvSrP2%fAQst7XQfMpt<(F3+FG#>= z6IK*nw6F0Dlt^Qi&o&I4%t^q=;Nhh8FI7-I(MKu?U#L+3BSNg9Jhb<**SCRPo=mZD z1)XnF|MN}Fvj?U;?)*3I6kfCW?eLIc^Zi?20S4?}uV;$JY5)KL07*qoM6N<$g1jqU AJpcdz delta 719 zcmV;=0x|}mD%rv|9d;GrdpZDGueONpZX-SGeC)<4p(4-iKQbR;!BY#tfrmF^!qm5i=h8Rr# zF@9U2DXy;upxQ)4t;3(yg&l-)0GIdCEp31SRc{lT7$kf@)}`omC=wI0)_Ly4ko>QO zZRL)Zw7A~R0I-RYtqg#sJKgqw4$%E1H9Ql|1Ayk^B=csUTdB+eFq^&9SeNHTMC2dQ zgg6v89K;0-T7O|jL{=0h5wMV1{PN6Z^W!ZGJe>+cLLd~d0loi^7Z0onk@-Z~O;BH) zEq!#g=iE+c=_Vi{I{E6y@A?irhYI>BJZ-B86TkJ$z(=2pz+CunkoU@Nw{KdE$73DafjT0ggXL@ceU9j zYXFr}K1g-y_M>zaP6F6PHorunG<*%pfxR_bi)$rN43Kwy%(*$k!r&4681xu2LmeyLzJWZRK zByaBD#hn(<;&M6n|8))*`Tfw|ba_B7#u~J_79SfY4}8%B{g~w!i{I2X(8MMMC8{V7Ure78+H+Qo#9uxUvrb z2S$>lU2jXWoCgAB^2@Op)fGw7KavDd1XCSJT9+hCaWn1$03`rRoO8efaFrWnn&SZ_ z3ph%7=0Sl18Gl8b+i(vDao+V{k{gZO?FL8zOBIN+?*LkWWe5~*eR*scC}hrFM;HKh zWd-0Uu)@Vu&oIOPE1|a}Nm^BK`SC@?OYg#9aq3U6Z2$RezjFduy3^j99zU4TPZd(P|`}7eFJU9}w9a^yUntI+s zDSh>0OFE6Mf$_9F$+|61Ew_f@fAt=i_7$4LYPGC>I`_)V_H!>ZBAP?z=qPO_^qU*$ zZQL|0QIe8M!hf+3G`eCpW=D(wlD*%=TKWMVZJ9?ZdTkQZR9DZ#Ts)EO?D7QBJ$`NQ zyT!dbdFJP)ImMLemA}7}iG`QyYh3~CUs3-Q{MFbqkfH|dx+Gb5M`g>KUPZ)dlDq&L zmHW)kvxPUd7EPT6_=>sFTXvdCQD6SrMzQ-ex_t7%g&k$qpW61@!~X$<0cH1YocuHZ O0000bbd73se zN#5Mg#hn(<;&M6X`@Zv?!@)kLj-*Y=KiiQK>uV{bcrc#<$A4j_FG(BHLc1dgI3`IW zX;U5Ptii1wCZUL6RDzEHyE`B>nv-&C@S82Lz|cY6DrS)oc@9{vLY9R@6|fX=J|M2_ z1HgfiBx%>%k}T(eK$-k7GN0ygbKVyb7D;s24)TaqNLDs+=z0Tv}xuEk@-k#CoD?h8p9!N)C`FaCJ{{sZ90 zZ4R3K>B`YhwDMl?lbZosf9!&UXHJ)aVMl~jMfbhT1msPH8@hGATL5JBQSh;6BoEA{ zuRjMd)XY)&mg7XaZ53ee(?>M$;7H7NXu;NN>Uj&L^wp0o=`^+m#?$g7>$W_#+!}`a z>OC;+D>R4IYFYhs?v6X7QQA!CH#gGTxM^6TBqf!Ee`6nLbj5DWju-(X zd%uab^aDKFGLKaB+9al_uAYavcp}@`y*m_nDt(3vX;KnmP;c6?3Dv>@=04 tzWlX~V)tou`Q(EO9m}jgwe7cu{{w^pW%pf#J}m$M002ovPDHLkV1iInKwJO- diff --git a/assets/packs/WatchDogs/Anims/GUNS_CAR/frame_19.png b/assets/packs/WatchDogs/Anims/GUNS_CAR/frame_19.png index adc2828322b31edecdc62af65de0fa2174dfb255..01708c970383406e8ae6282857cbf99e8b863140 100644 GIT binary patch delta 725 zcmV;`0xJEL29ySnBsJSfL_t(|oK2EVXdGo6#((eYgif~-Cy_O^v~*Gy+1=14iih4h zhO{oB*fDhN#g8HiT1u;tSu20j)c5v(`29Z~p4X5*0UM9ra30i5OIo`i*{L8AYJhv3 zc$>H>sVyzosgDz(0&H-@Hz{BaEkgT8J8Vxz$&z<~9nQGGPmsE#`_d}qwBA&}{y?bYjz3_RX3A}&%iA(iM01Dn?lHwy>=W+*tqk|v9>gnI#;8NoL8FooM`fG&q z0357jrxm}o11?zr4wObDwO=*%$_oIj9~bD%R-Uisk|CKB(voxasEum?*nd{&7Jj+5 zn{V=ICPVSJBWENQD~Vvse%~oc=z2;NKT}T3xJLrtbJD2xc>N-q_3h+$n)1>zHyi01GSx4nyH4Rk>UVdq`h9~x@ELnJWV|lQ=7sQ8W=bGXUhlt@;_qGhS}ef-#sqy!phw_2-{n`R)}zl{q>dZ3Nk;00000NkvXX Hu0mjfD@bRZ delta 726 zcmV;{0xA8J29*YoBsJVgL_t(|oK2EVXdHDI#()366FS{WoJ7{t($Yy;WOqYN6c4?1 z3~60Lv191ki>*Zzw1^*(Su1~&)c5wj{N9g;=QX4uVB_H%&UVhUq_qo@oeGjd4RB8o z?+`a7wWS3+^>I?D02|!!O$wMN7oq*59k!>UWXU_gE@xceCrDk=eQA|)+VZlb-qu14 z>Dp0A>kIWdh5r$4sb`n{ol|h3VatsqX#sKf_AvN9K5$J^>rAgnHpPG6mei4AyA>sh z7lDVM#RLI9a8gp-Tdmt)ON%ssF<`xB`f*ZXR8prdQ84b#(5@8Qp|AHdo*YFtYPKli z;rVb-()~A^VmK(lM=qnWv?A&}{y?bYj{qT9C3A}&%iA(iM01DnClH#LX=W+*tV}l>U>bc)v_01X3%^|3 z%QyMdlcD(Ak@FIZm84+He&13xJLrtbJN-q^&RJToAS~!Hyi01GSx4nyH4Rks&{X%`h9~x@ELnBWV|lQM4<*Ejo`~?UyK^4^W*?Z)nPDz%A&kh41YVAu?+yT_ zh%+~>3&vpf@!Det)}MQ7<+~RD0F^m99?vv!Z~y=R07*qo IM6N<$g3Bpp6aWAK diff --git a/assets/packs/WatchDogs/Anims/GUNS_CAR/frame_2.png b/assets/packs/WatchDogs/Anims/GUNS_CAR/frame_2.png index f5730c7ffd25ca2180e297ec86e52228012a9e04..73d6521cbc8b9d6f20aa3b0060ea060dfdf67f8c 100644 GIT binary patch delta 820 zcmV-41Izr)2FnJJB!3b~L_t(|oJEptNS$RI#(&T4qaHXLv!N99;wfxF^!g#u{^gS^kOU_d@`bBH*x= zDtBzNmn{xKHGix1<h|rnrltxEXPdiU{vkdJ@X#$_I60K5 zJ^I2nfTR!Ty~K{~6{(mceIm)I&fE9hT7DYfGr%}ATz@NtOML*Z0jSuY`>J|)!9Jyg zVhK%F-YiM_SdyV_kgHF=1dva{8oGXWYG)itT8v6bN5yz$_^(&mWAN*WCu6b|@wug& zYH9;;hgimBP2bc#er^;X%^)UA-)&R-A3pB^ej&iUL*3y_*Ou-Hhz#BdB+Ahj4>de7 zE@|-;V1EML)phk?OBSFNFbBTO-v4YUm;~}e08JhJg{OH_k`_I{jOBugKQRCy0F&Ru zTXClt*sTNEp7MpR;B`sLd5~c8c=<%CxhP4wNNc~C->bTbv?T`WCHLz zY2Y8NPBdi-+E}4E6U>B8RuKS10JAly-81kAH-FTq*vM#a@kS&(c2VU34sQ(BeM!;Z zdy5K7ib^uOd$!Ur?otBMfV(61p;J9ja)b32_nppbm4z870hb->+{bqBDm2~)u8l01 z>I1KCp8moTzT4{2{zv)3&PVOHZ1FJW!N93|&a*?#o_4C-AfCT;&b3Bli6#2?j4$Wc yBP|U@%kc4v^fb8 z(ke8i35H;uV?n5brh$UiC^_*#OQ9GF;)|E~;3XIBfF-fmIMY^9yg*IU8XC<^FGxB; z6GLV)lbOu#!=BLpZU1~fYp=EUVr}v%t(8V4Nl~TXmj||JZGXK|lGLOC(#NHr<2_{p zOnSf1;Y1sNJORT!3+wkLWr-q~kJ{&*Q6H-nFuk7R)Oz-uS^|@K{5R?XYeZ5&=ZU$v z%8CM}bMGb+F-s%?nv&a5bHrs4r2!E=|o#P;V-H4Ijz_;QHWmL<(mv_DhmH9GT}8r1#xwtN2vG zwA8WiugXNd%w{5)>sK}iACxYAdU^RjOE{82LDlWsZJC-XFr01fe))&k7{EiffZ^m& zruOIy+W-{?)IlhZpQq zN@ygmsmhxrNgqoxv<-6g$(I0f30Ozh?@sQFAxVo-DdDIPs|^43O8W@>y5h;0Y(;E- z>86_60Nf##FHQC%_W(a1;NGF`aHeZZ_asCH?*!td=!=IM zo|urdcz+5of$r+Mdaxx6&~-gNi>f03iUA z+r(Qjrx4hw1KFO^g|6UrNm}(F&eZYJiDYv@l2#+F{UW_rb(1Me4Ae{R-&b_>+pmuR zgyvGfKU$k?%H*{%LUSgV4V|na0Ehr)Yf!sq;C~Trs8J)MW4(nNk?{CMl>#`tak1`8 zivHePP*_q_lG)v}m4*qIB9H>y9U~t))dNL0C|7ac>AY5%pM@fD*`dyTZ1=8w<9*=T z$bzXp@apE7FD&7^tsd=vlrHRi)PBnr4`Ut-oVw@AOE`Dhsd9r@?$SB8yo5_E(Z6S6 zIWJd^Gz2XXRDDdjH>}a-Vhk%YMNZquOfmHK|EK}eHmi_Ka{vGU07*qoM6N<$f&^fX AhyVZp diff --git a/assets/packs/WatchDogs/Anims/GUNS_CAR/frame_20.png b/assets/packs/WatchDogs/Anims/GUNS_CAR/frame_20.png index ccfbdb3bef75f5fe78b0a067f7c09e785b10ca19..4e11f62473e9a0674b9834776d7598f861d402c9 100644 GIT binary patch delta 822 zcmV-61Ihf(2F(VLB!3i1L_t(|oK2H&Xw-Ea$6w#C-=pt#OYdx>p+Ucsqt5kUR*+bX zerF5(7dz**qclu=(1XZ&kW2=-LxTPZZPOJL(S;WCf|}7xuytn`fqOD3qB-)Whzrq% zI=$1~@Av7!?>2is`@Hz@{=C0$_$p9IzX(UVfNOh08VZgJ_fF2-r9<2F9M5OZSQyNO+ahknj0N8d?T8;N%V;K>VN{=BP!f-6A5@-ZcQ5+Yg%bh=@q#;Zahk7-Z{T5)rBN3J!{WheKO3wO|;4sEIyT zGc}urwXYAHbALtvZa;0zQ5Ii!FBNP9fMK8RP_uh~c`!Y>6`*R@D$L^9{mVyIt&az< z)0?a1hU5O89|r(D_h{QfaeJEJwzxl?L&1g<^f>YxRgR%avd?}Zjp0m&sMMP~jyG&v7&-ClWnV&&_# zq_D}mlYdjKBHAII1!#Qb!+d@W7zPE3#&f&7{gMc8Vl6-C|QWkIkHBXkEfW+N}D6OKGCaBK= zsQADV_e?X%1h0()SlS08VWCi^3SideS8jN=OMj3mSpckRk0rJX;s-fhozH(dBZ7bS z{RnZROnR_e=0qr8K0LJ4em}ZZu72wkN|WZ$^300^;f)hFAG!DOiRpgy?_Y#E-uQJ< z%Wzlc^sSHTx&WgAOw+E?^SO*H#CD0MP{GFqh-yrKr%iwxEov zTQA2qmtXk1Hm5nbLeY4?NUa*@dTRk&soQzwKWvIhFJKeI#Q*>R07*qoM6N<$f>3LX AF#rGn delta 823 zcmV-71IYZ%2F?bMB!3l2L_t(|oK2HoXp>hM#((E{!oD_D6W6k$1HVYvV!fzyptw=? z#dYAn(O9zvr{Z)MyBKr3P%4GlAcM_6U|a13$5@7L)C{&dRwuZcI2;3eQ`s1+Wu}T) z5nWNMi8kN&?&3@9p1bq#@|@rMaE<~M_wsP64Y;>Apdn{FfPV*IsY4pI9Y9?KAOzri z4XBOcOWW$gg*1kn0MG$Mu7PEaiHMZmdsRbWI7+>H1^}y>gjT~{Sdo;7NGT@(+uy;| z#r;edTXWh%sof$X<<6A=8=8-rBT`3s0gI1w~C0AIt3fWzLSBCsR|edAZ)^K zRzl7Ce(mWaSAXpRfXA;HbDBB#otrtU2EedSx2Vazzb;IUZU!h@s}yF=!vOV>pG z?evCnvF5C|=jR>(*Ez3$Ab4c#@wLDE0GNbRDzG-I;|GFL6e+I|5~i+U-Jet?b43wX z1Vvrqm$d!K?=4e)g)IRdJd?jMc-AuDKL4drQx8U(sDIwp^a4QrB3-mf%Yn}#UJ3Fw zFX8w&U0bv(GMF3JApn{#k4Xo_?JtZ0V5oN`7Ra&*eFp&ZdAn=@t6Qk1xj?*b0k1YP6 zLJI5MCx02$D57nmX@J^y4`#DNKtCu@)Lz})?iED%2+IP=??JJPCk zCN$Fr;J{DQ*8)(R;*~CDl-A#@(ZT+wM*i9PXGrot%`FPpfSPvZpM%)bfiR7t=f$Yb z0H|osT<3B<@fhz916VZohJr$_Oc}te$}V2}Mt_?iWzzn;SIv>wHbFd})6v=N@d**U zEBix4jWWsJc9{~Pc>84EJnP57&2sm9H&+-nCl;jM?g_3NdAMZu%Om66=s&&+w0!v6 ztcL!!*6~M&tJ(mg0ZiS_!dsb?%wRi&6Da@V0)#cDyVXhr6kw0Bx-`5rkNGxmt}>vE zsxVs3cegkFQ#mI&x=2y`oJge_`+j2%t5mh)&VOu*N-sUy%#r{A002ovPDHLkV1kc| Bl>`6) diff --git a/assets/packs/WatchDogs/Anims/GUNS_CAR/frame_21.png b/assets/packs/WatchDogs/Anims/GUNS_CAR/frame_21.png index 2f123e8a5f7456aa9b3919b693563690f7bf6518..1b5fb69dde197cdd8942375bfe5c31d78b11ab9b 100644 GIT binary patch delta 782 zcmV+p1M&RI2FM1GB!3S{L_t(|oK=!vXq9Cg$3M?=o-?1LE|R$$Df(kUvWpeIj*SLE*2)Vl;b>{LF^U>&lyG)1WLVT97MVncZp2P{ z4xH(E>-_n3@xF#Wci%7H-{<#-2co9{*6bA#5vgLwdjX<9iZh7F9~D@YOQA^2iHOMB zVbD2?^;RDYj0(=Gp*SiU4-)qY=!Gx9Yd;!51xKCgOVN5JNRihjf9{48-GRnnYqhic zU%&$3Tf^oBb!qh@$_K!CNnttu$(5epVv7J1E81@Pcc^*xskZ(AF=qT9nqu;Xy%q;x z3B#82uP^skS2h7~4s9=fyj1x4T56E)*+9df%LDjX^XjFhqYOm*byPbU)jk^}VN z4h$qOIcnEwDT+u|e-s1N!S@yton<|50gQ!>`xmY?-f9hoHy!nd7ZVJRH|Ko|W4EyH zt_PKFs;?1|%J^g2e=QAWy(-u8;Oh(F6}FA~v8u?`xkjLy&+C#F5xMMZ0LmTjc$9#} zj=+%1^YbhLDOUwG7mF7rmtFj?i$Owp%k8Npun#6pkQkhaf8_yw{V-&l-25~S&@&Ux z(GuCQM@0TP+Y%%w*V9p6nN}{qXZV@P8NO064cb#seVQ z$DOaAUDJ0Nf2e(pyNyU?M1yubF9g-s_2Au^NNFKOOA3HkSLX+9C^G8cEC4P~?o6pc zlcCTCz@Nw79Bo)1kC}4-Ot7;vuCwGLw*sJkCVs59YnZ$a`sl>iq)l!YO5skf?n>|Z zJu7PYiNDc2zS!$D5+1Ay_u(T&$Xm)T#gywa$sP`R%*Mf>Fn)87>~{jw1xl0!?EV=-JqlY0oH^=qXrdSu>b%7 M07*qoM6N<$f{KrV4gdfE delta 784 zcmV+r1MmFE2FeDIB!3Y}L_t(|oK=!fXk1kk#(($Do%BwN%}W|%=*A%obTX|HG+?cu zFKtTgEHsv;bzw=fDT;rpV96p%UqgZc!D_UNRtwW=YfT7>1`@O|87d`I(TGH>MI79e zI<_+~Y3J$uIWFF-w0CztzVkch9zKYk0$8(GL`0;D9q$E*{xm2eB7an1RnA3`oD&g| zwZouu7VE7(7zh=dRYM6>G!Z!N6VMA^fY*LBfC`Q})#uWBCUB9~CV%k_C%S_ggRRxh z?tcLbfNu?(7u2QIk0>7i=Ou;Z_$OC-ev2&vOsr_T<=>&^*{9n21H_o|e`t!y8}?cP zfF%rD&cD9gUtQS*z&W(N`0-NV=aW0~08G@3zjY|y{ZQdhF<`jH<}=lit3RDc=1UIH zM|@x)b;(h?PD@clvVWo&s1CljknAk$c?)1HY}~(at?^cCu)OK0KfIV^c)U69TNt~A zeRn;mbW?qeh*ZWO)BbB|FzZ#hmIq&72(Peh)Q?p~uFf@ry7{~=X%Ugjz6PM&@s39c zSnLP{xjaA565z&F&~vePVRAW+|8+5NC~vvlT>|@H$^?$VnSWRw;MWgB#>vf3;{ZJ~ z;T|oK9eYINpR+B2gK|9`6>6$`Q^=^9FYAhLKl<*~u!Tt1iu1;WU4H^p9WRWesjut7yVK!n!KK9oAlB9SK^uyUIyehJoF{j> zYS3gTv;pwvu{TE>*2iP!To5mIb|!R|eB@RD)XyZ2^>z)D*TEc}9GkSM?LsO1Q(SkY z_xzp}wfw~2XdYkebs9+zVCwW=CidvY>z~W)FIQe^R8iF2R~vHAZohHpM(fLk=>zcu z6Zh^;6&-NcdSS((z=+lMe7of&8g^Wx!H^Y(7g(f~79qo0qEGleZ)PX05 z=(k!D%xCxqn;n=$O^#}r;R0>V7VM6v4B9dYYIDL2i`JlW0W(bctv>WTj@wHMOZ-ig zC!VS>TdiR%tAB9sKYNKPXPbx!`p-ra54Pr=j>5bU6_XV}R&u)oC8ew$MyahaBqA;z zSKTa4-WjX~hsS+SU>nvFd3M$*9KuH;;^+sbBjVbkvK9%qHe5j2@P>r!Gk03~y={qu zpR4>gwY|QLR>$eNwLcExQhXW_iO7?9{sV6WrEUVqE&bvDHGaukEf%kg_`wO?q8 z#rpg4^iul6Vj*4mRv%z47&2v|;x8vV& zit*u_`LC8IHHFt-n0DL$CgyPTqV{+(qB!{S2>${;_yH2OUR5jr0000lp delta 617 zcmV-v0+#)O1%d^TB!5XsL_t(|oL$pDh+I_^$MMg*GtLfiA_jXCEhKpxRH8_dMhP}MLW(HM{z;~o%)WWY;=S25 z-tv3TJ@V@yO` zJX)sT=DopPG7gT0p1>BYB=YR6Q#gQ+M8x3_PDjMGMP(%tZmqk3vgHj4*=O!_@&{WI z`#)FtZ)&?k>z$6%jg>$4<5GMY5sAo?c>V)#ElqCO%70$V?e;dr>~a*N>C5qZY<5Rz zi^bae@$^#q!(t&_`Bu9G_u=ZzY!$W>cdJ>scd1fzB@WtZmit|R7426O13r9pHk1+Pe|d*%+u2Xw zrJ*)S8e(MZm1A)faXlW3h&HM}KkqhIz+dI)y_X^xv#Lc@^Ji|z0`t*mj*W9yuXp3$ zaf->ooB6MnPih9QzcB05|0WtZe6jxn-M=XIzdXdhKKKC=9qi2q00000NkvXXu0mjf DBXBf* diff --git a/assets/packs/WatchDogs/Anims/GUNS_CAR/frame_7.png b/assets/packs/WatchDogs/Anims/GUNS_CAR/frame_7.png index 959f2117e7c5bcffe438f8285ef6e6ef68fe57bb..eade268ef070643238b302c8a2969a8c29029d40 100644 GIT binary patch delta 596 zcmV-a0;~P*1nmTnB!4tXL_t(|oK4cPZX9J4hT&&sH}+x~Jc2}W5eahvNG>QWgyInu z1r1ja=MGX(<0-fR?jYd;km#XUf<&8$vk;2NapZvg?qOsr{Ve@FR(j-*FVM{stNq{ z6-FFPAXUW<-EspC|7L7dn~k-wO-m$6qezCNOL|Fykn-(iwB~Uw~(t3Q2}Tj*~}Y zHw`x|K&6>LUn^_Q3hb5m@pHiuJd|9{2W67yd1#iB#f%yDaaT!p*NyF?GT}f>$Lz89Uyp}OpmC~Pnd))P^BC9R`?zp;|Jt{tVlTx{49G64W zSH?H)$z{^boep{WcDJY(r3KxBnf}PplYY)d=6fG`vi1I2)E#(n*VfSwb7&791h?%k zi}{VpicMc8x6ArNcv)<&P!o73#bON_!J;=^kmCB0)a80@C9MI^B*}K#gh^ delta 597 zcmV-b0;>J(1nvZoB!4wYL_t(|oK4iRZX8t@hT&&sH}+x~Jc2}W5eahvNG>QWgt8+l z3L35;&K;zn##3+s+=0UdAkjmy1c^2gX%Q?a5*7$$EP*{N)RJVGB!B-TEh*tQxPr<0*tZ(o zX)#@c3z*KZzXo? z{Ph(E9E>1U#SZOa0}lUYXjGetEn%A_ktB^G>613;BngtMc@C3hiJ*}tHBTfNFwbz( zf1Tl4!;%BFm49+92@9NECt8m2gd`pIGMx79a9gDXt2HPZDuvP+Q*>W|=b8#h`a|Z) z>CleN^)pauM$pyDnzI6XC4T%|a0HJfm(yOEf_>aqlHGM-J6I~Y=oJHY zVvi})!`6Vy*P1;f?Yu9FJuA&X ztZMM4oZzDqTOj!fU>>J+Z9b`Fld!Tqc@)N4HbD1RbOBiiw~#^?c_)|BU8 zd^u;M_n6?%gRl6P#R}N@j16*@37QgTGYeV~5e*Ti_hK=LCczZaRL)dHbl8sNBz7mA z)SEDqmF7-eEZNMSUnR6?*on%Nh*)40F^U_Ley|0IDlGj^BWp4TJvb&U#ABKsTyA&Te-+|U~gA`_gRunb(q`Q*FGC&fximZ4m^1Ijmw|(Q{`+@{AO{tTP0{5@#wIf zoaeNmWV2lzNC2amTimw0I2IIy*$~%sQ>@~07*qoM6N<$f}6q~ AtN;K2 delta 562 zcmV-20?qx41&alcWPe==>dr2L+?Fhi#yS$wNpj~N7k83)mJjFspYxpe5$E;r=U6aG z&TH_xoZ?b=g*kUbM9d>1o@~bvk>IBq8x=AMu2kr5Dy&I5mNn82hLXgC3bBPk4*9#t zZ{iLS5%oACPL87${gi439hrX0^(kCqZ6zFig@;*fsAoL=Ab%oGBiiwbF?xijHRbAw z&*yCP9uxd|@CE;}I2Y`E!Uj3Z1Wk#vnFXzgh=z#M2eFt$lVA#IDrYJpI&8;s61$U5 z>P?u*N^_?!k8EbouM%1`>_lZsL@Y3h7{#qgzt{pq6_)UGYeVo3u1fsfpC#E;hqs2jyOL1TGm5VCC#v_MAgSKnsNMi zaZzB;SH#0jv-c?7rW2D7HyHW0=T za_Ye62u`8O$X#>g4VX#*J|RiN*{G+yuRKsKIwXM@pVEPLo`9cXC>;1%&+!9?4s1gT zF_sq~sRBBx)_?WJH6lk7vFeyFL7A~c5S#yYUjRLv=Ez|4?z=Nwk z#rKyka*<`Yi?mM+lhR`y(2{|iO?UuH{AL;hD|BHV_7NMP0#@NoUway~BtuI?uoW?j zrd=I=4B-xAaM$If58TG$IWS2Ic8Qr-02-fME}-{X(tjY341RlfA4nM|0gRBcS4YtM zT8=sj6eEpP!rDh=>s64u_600xddK4lNMjYSHt6LyD_Ah#12Ds*#KRmI&ciU_;gz4T&VI?O31&^UZ6J&x z)7ipguCZ)$Zpd|x2oA3aZ_{}s1R_MY!>?1Zn1+2oGzV>w7k_;^o!B)g9 zns#ycF@!sez+IP@K5!e0=fET>*d=CS0cdo3xq#klNq@(IWboUA`#{Pl31Enny*h&4 z*K*iVpcrYW64pK{Td#uLr7vJX(>oqdKpLrlwc}oXvw{T!J^(X3N<7SgVO%yd)#Ir} zuF9Qat&a?GW6?Dc*Qv~=0jMB_^bX9QG*$1CtXO$JN&_1J=~2Y0H*r?~Kyan6_j?ND zrqG9}2v-}_dnldEXxz%b0Oak5{68Or-Z<)k>$i;>;L<~#dSH}7APoz_vH>^*NFjqg sH|s4R^v!0Yk^1rYO>kf?0$>;T2NMVx(ik@NApigX07*qoM6N<$g597IBme*a diff --git a/assets/packs/WatchDogs/Anims/JOIN_US/frame_0.png b/assets/packs/WatchDogs/Anims/JOIN_US/frame_0.png index 45819196d93aa6ff92d31eaa8b4f41cd70ff78ff..2c787ca1ab8dcead1d74d4bd1c52ec425df65285 100644 GIT binary patch delta 39 ucmdnQxS4T+3S-qo)ne&=|B@el-^1X$Npp{+`nKZ?K;Y@>=d#Wzp$Pyy(+?s5 delta 38 tcmdnYxQTIs3S;F&)ncjp{|!G@$N6s3+;iz7|04z<@O1TaS?83{1OP9M4;%mh diff --git a/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_10.png b/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_10.png index beddd3d596c1c9523125d16f8c2ef7f5e433e0be..633529d41a515c75a50fa16bc6dc28c25c220cd1 100644 GIT binary patch delta 33 ncmXRbn-C@QO;489nU8^CQW0lV@~4h<3_#%N>gTe~DWM4fvnvX2 delta 33 ncmXRbn-C?_=O@SN%*wzpsfaV`M*v$Y0}yz+`njxgN@xNApLYpH diff --git a/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_11.png b/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_11.png index 3338ebbcd7ee0da36289916370fc0aa9208f4445..33fad6ad23dac57e2104c404c57543e6182ec4ce 100644 GIT binary patch delta 165 zcmV;W09ya-0qy~iBmuRNB{6>>zyV$00lJn4=qfO@Pyy8cFaKXteSZhsTE(TBJ0^TP zF@b@Bfq{jAfq~({qff?vx6JzqR}r8hT_3^Ka09Ml!lM?6TZQj;zzu!SWIZkr T%C_~c|f0`0im#90^^Qf&1EuGhE>FVdQ&MBb@0A7a=;s5{u delta 41 wcmdnYw3%r_Ir|DNDTxbzeow5`U`_~pG;w8>fClG3M+PA9boFyt=akR{09B$7HUIzs diff --git a/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_13.png b/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_13.png index c0827fd9c726e20bef8faad9b497926a7835a977..86bca43a3f7880ed8a11926dbf50a551770a2a7d 100644 GIT binary patch delta 328 zcmV-O0k{6-0^y;7IQSPFioIf$4uYCVC2bru$K`W%^qa!N^S$ro68NL>oaYh% zkp!UxawU_%b7FGC4-1Ay=|YkwFruX_YcmOIH38;Z0;JCA0e{2(T)~KVFA2j`MTVFy zUkAk%U;9yU#VEJ8lZ|@4QI=Zcez17gPFqLT*uJ`+36f(4pa34$*ctZe)^jj>_H@~P z=|0<)-R9##U~bNBs5;G-s#DRc&8UI%_S&Y6FS^n+1Qs z&c;HpvCD#@orR?cir{x-!NOm#2xfv&QV8l+Dw~W&%rN`J&eB&6hx_iG_h#Ua%5%;I z0AdM331o|rz;kTI3O~##5>%3NN(i(_Dau$QL8T(Vd_#cDxqm&N*`E{Bz88c-mw%gf zR9k)$Ut(fj}?Fdcvxen-=$q0gW0pE z%jl*3Y+H8gj|YLiIk%?j)GU>!;#ccYDo*x3Ck{8QqE%DV(QSXldervPu)1+!7Y)lA z{1a!E59}`)fkKjo;kpA>0T!^aB%XaLXN64{#KP17v>Z?e=sKWfW#3>3@Fr7SMFx=a bUq9;$2slmzBYZM@00000NkvXXu0mjfhTWFo diff --git a/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_14.png b/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_14.png index 8974954f54c75f46a1045c22ad16a08ab375faee..bd756692c5e0fe6d7887e2401a349d5f27fbb87f 100644 GIT binary patch delta 283 zcmV+$0p$LO1Be5Vc7O4{PhR-TL;wf@Xa#_{2Rh>lU;=0Y7yzlDrRf3pCs(xyWk;bC zHhqeim()?%#0&}O#nrKWwMmHifZ?kJoJ-$ZwlJ%{w=82r+v}!AGfPr{d8`y+fbX-A z;g#-|m$3%nf^cYW7p0!_oCh|Z^RByIbCl(#d|XVFA9hrzV}E^a+c`6;fc`jX+*Zy8 zGOA_FbRtVDPbze-G8*km-|u?&xEels884<4$Sx#8L-nauWm)`am1a*GhYF+zDV2u(Sah!3?Qz h09pd;LEXQdFBD`HRg4_fRO$c#002ovPDHLkV1hC7gJA#w delta 283 zcmV+$0p$LO1Be5Vc7J}KA9>*~6#*awpcMe(9_W-SfC-=pU;w0omZk^XpIp^NC_4(B zu<298yrho8CT2)LFRqU5Ynz0a4;a3-fOF~FWecO+a{IH`!9e?X{+s>I$1@y;B+zDV2u(Sah!3?Qz h09pd;LEXQtFBD`HRg6|6t|1TQ zr+=e$Z^Qc{(mSh?FKZXe03N`PuIzMh>13dcL{nA&G`yMUC?aZ*^jGKjRoQm(bIt1+ zos7yFOa0ZB)qjP)ow7!jZY5J~?MD~ITp$1Fv9J1ezO3>1jlDy)^0PjAe+If$EazOq z!@2;&5oGc?Y^KVIy9J;I+IUh~2ugrZ1+H-o>pJqH4cV4Ya4x`K@M^LxC@;K~Me(W0 ztE^J(eErNF$Mt_Xh-nNA0B70)ZfJo!EVX8q0~;i%?IrLmkiKyw7AR_#K*#nV|E?FO W>vUwv-Gx8^0000covhK4uc5mLZ5uEaSzu(Nf znStj-7XU7RqX4=)pdDI(5Wo>2uoVDQIzWS?h(#5lY%3~wA%Ay5;RC!BiUdE97JASX z13(E90|W}+0O^)taS0=%^*NIKbL}`I?x#m6&YhhL{t3`f<_KAINtKuc*W0^Oo6GNu zxh;JDi`LZ_uX9UvUL_xXoUQ_R084|}(b&r2yTTIHYyMGqIn$S0)EMc;z^C(~?Cf~c z8=9VtiX1DWwSUt0#@jzdjx7D1)L-@PpXPlH|JNTUb?a-9Nd+OWIPV1u?=(6~n za{)JN0!&1Z$#eLXDkpv;r``l@oKzNq5+GE8Yph{SM_#lp%Q6Bd0^Ebwlx0DAVM`{( zrzuxiqc&h{|Df~M1~Facjlr?DfE!xi3Me-ZV!26i=j_`_6UeKEZ~piH?+pY0Q;z{~090s!ehueG z6#;m*;+X(709{b15LEyUG;*LvaD)5?R64LRl~ReNsRCU{(SI(UuY?CsYmyW|HqEsF zTLfQ81(+p$W8Y=Fkt?$m$ipJ&zY3?*LnGDd4Hk$pa?Ig+}7TkJChQ=YB?jvi(TUp zF6qgg(!o!o_@(6BE zgfzyk6y0I2jV1vW@CTPERJAp1*^THwLc0G-%_{CoWY XkyCbK&6loe00000NkvXXu0mjfeqqRj delta 429 zcmV;e0aE_i1K9(RHh<$)>zYd8Fh@E&4FrWiZi@r23D^iWf=TK$qLtjSi6T}Bgp>hm zn*_m5gvAtIDHaw%a0wx&)tw^87R!yrowIKzjo_;u-~8|W@68N6CWZlU090s!evD?R ziU2%YF)ctDK<5-HMCE`3l?>=H+#ovvl?>XLNEnG_Qw2KbqJLdHUy*Yu*XZOxTIEuJ zPXymd1ehmz;v~YhMaL_A7K)-eQG=4c+53sg97DI6V$&hr-Vl>+*8YAAn%O$KyRLs6 zUYrBC0F(9I(pJf<7_fNQOIt%<7mQ2%>%91TWq+x3uL%FVbelil-WZqgb<-I;S?-!1 z;XD0eyKr!16n|f4y7A~_;+Z)T$P9ECkUdMZ_uzSX`r?m_j6_D451hEJ7k_ zQb=4;+T@8hpS=X3ieqF=X9b1;85(lj=%hRfN)+?MGG7i!-NFMr;f$mzN7ep|A8`|T05}-XULr&8eacXzCSOk(q(L=G p8+Hmre;L&jXm%RV`04*Ne*oE=betZt6M_H$002ovPDHLkV1m9&&Hw-a delta 447 zcmV;w0YLuZ1L6aaEq}2~98nO5zqfAi)Z=cISO}tvMI@C9DXxj0m_mZ3M9{`gEW}8f z6hRj&3y~CJiVzSR{RhHzvNom=LLi7j0$D;33+2{AJiO&zioJU`yXoSTAK(1uG4tRd z)e3+Gpge#~6U3Dlpa^i2HiiUn0aU_J9y$T6BI5!$*uFG$27l)38F4^JKARu_Ue$oG3dwo zz7;N?eBZfq{HA5W&!eVU`*^r!KiPhNElV#nChe5n=tF<%(!I!nk|pl_#%X-QMcEq>Dvs&a`72Z0}IL zC9R4ZH#eat7ZfTeJRhZ^_gK|YPe-GzPBjbTzi3hq~3omMgXW)bWz&Er92EL*D9yrAV gCijEHKKN&y0S4c0;Or2Gxc~qF07*qoM6N<$f*=0KIsgCw delta 438 zcmV;n0ZIPY1K0zQEPsP;reX0)zmnV5k^V0A5rus%RJ#z<SoCAlhqNZgkVUW{L5x>e2V+7Si2yGYnqLB}n|FRv+%bq! z0Wy3dSy&6I@r{^VKhJB$SrQEXz1#;4j04Uh2V6TLs4rxWfeV@~*U%1VxrS~!;5QC1 ga*yHuKm4b22L|76;4q$TjsO4v07*qoM6N<$f@kH+G5`Po diff --git a/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_19.png b/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_19.png index af24aff8c70aad698aa7fda8ef2284f2a6c8fbf9..53295eb0d58d6907c4589d052ce201826cce6d26 100644 GIT binary patch delta 452 zcmV;#0XzQP1KtCWB!8tzL_t(|oRyN#OB7KYz&|tlkcH40I!G*H(=iW`*&#^uh0?)8 z7XxqMRp{m+gQ!8G=oaCjKY>0z1aI!1^bqJPj0l2NT62PF#>39O`Obq5eNS&b ze7^5}e+>LbC;TaX~0R1TmK@Mh!eSMSlwrqBMEch>8>dyoA6w zMi5qjB8%lKIgHf3P9;Te^Fx5IU^uJPk@)_f@>zBn%L34KbXX9~t z&w|Ct71i2U-+!~fG>4yDY99<(aJ8L(`gr%^mIVV#gWbm4*O@K-g4Q3#uXjgnrRp?~ zqWrzGDe1%97`~@vGZQ;-(h}Xy0wiK$w|8Q1DHDd8ghz7w`l*Iz0yJ0gEB{CSH&SL( z03hXy0Cxx##{z5;*PEdL8K8UHSH%VOQ2WA2*zRd%j6F=pm2ak|i$lMT0~h?li6Cuw6~X5S8^$g6fg zzBluJ4E#qZ0Q>?}3gE>6Rbgm=z)d-IK`1~3F?UNw1w1!J3x5!zG*Qi|T>w*bGua9OG&@%<|?tZhtJ<%2MmJma+nbTi1Q8cmhR_I=d* zPsI`am;2u*8b4k_YX}#~$MHtcfApwrd^xW2KsUsqQmUc$g^{p%qZQFJ54YFJ5Y>Ffi;AXIj^z RCQ`@%1fH&bF6*2UngH*;6?*^x delta 65 zcmXRcnxGFMGaQZXkvLE=cmPcL`N}cwnK$HJUk4$#F^IF Sof3P>00f?{elF{r5}E+wtrZIZ diff --git a/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_20.png b/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_20.png index 93ac4c9f86fcf369be8b826a60e451d2f77cd10a..c56fa4ae24d2281e2b50a201a1af6ad2521d874e 100644 GIT binary patch delta 440 zcmV;p0Z0DZ1KR_TEq}2~-B1+9e~IDw1|bpbCN_hEOQCd@CeZdDkm^)~?nMNLcCx7m zE~V<+Lhat-s6){R4xMUiJ8N*VAiifUygW>DJG_^BPx2p~#qC zw5p1%Nos(C@KBu!MM9bk$+OtJvMVW9q-_oaNUfyHumD?j0$l(c0HSf9x5^AQ+i88- zX>I@3pmVvT=D%Kl*OvFYCzBT+)}Ltb@WH2zymjBxDQ#sxyBDuMHL?5Wj^7z?i__j= z^V`CiPWdx)yni$1J$k1VjTh_OOl=j=zw*3rHYY|u2Xm#xzAi#veSBc1 zRjaDVnxqCO2v5}yp-4!RA$b>@HM^2>N!sQ_fYeI5+!0{UPM`~b13)zDv!zU93!T=7 z{np3t8g%|XRm+FhpS9)n!NtU%H#-kCn45X`DsN4DI;E}brK$MEyoo*j<@lY^wz%y* zc0aBB)G5CooqzA&_3m$LMdQg1|0eee%8}=VvpY8OK3FU*_H_~Z>g@y5`(p*_rMT_+ z8C=Ohg*!L0PxY%XhV7LuZNr00003T6*KT1cMm>|WVfY)p^;t_GLf!1wG0gS{ z7{3ly?po#~=WBGtlPA+*+t!Rt@8{WZ&RH!_0pG@m4OG~Pg|4;)8qUx5BVj8z75G%q5+kkSP jVj6)eHud|0{ImW7H(GwT2!8Jw00000NkvXXu0mjf;gD87 delta 181 zcmV;m080Ph1Kisr+Q7LunsyH|D=8`I;ztHC9IFK@H2dboN^472?K z#;?WrclRL81Sl~~a=DKesN#X}SUzBslS>{{D;gufhIgNRAACU zVOsDKun5p6&G;j7oS@&EWvmq+>-@;4-7KR4-c>!=Q1qG$@K`kTuc>!?$85ESt2epjsm)FEaQN+c(XGlX*Sfzc+A!rZOkmh|uA${%ef~KxmXzXe0rs4jE+t+L{g+9rl+Y aXyYGXF?-iIz*~0!0000AyO diff --git a/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_23.png b/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_23.png index 7973278b20baf23900ea0ef02c59cf761530c24f..774536c02b4d5db8520383df7575d659ffd6c855 100644 GIT binary patch delta 470 zcmV;{0V)3R1MmZoB!9O_L_t(|oOO~tYZXBhhM(E2VPha(#0|fw9w=$Ii^qe9{0mcrL2}*NOw116V`{pG~uzoNlK!+$M z5g@{H$dWVDsV$W|XLga_LJ?A=N&-kiyDz|y+^8>N2%j-CYRxHBri=+**1E zProlb=`OTMZ~i=p`%53Yt>xv9X#=me-QPakfZaq)Y_taXh}OcO1G(5BqC%@|pq*uD zLMtP$a;{7`blGo+1B?LH5?0?eC>4-t2e5-EMFJqn1y9%`A{Cp=1r~dC=t_~1HXC07 z!?zgO7EW6ad`(12fMfUZKJA)5=B^EG!~UB!!BQ zU!kS8smvybrQ9!&BY!|FG*-Hb5>iOSLacPK@IZpMiIGfTvtx0$JKv2s#j-rS@Athk z-v|Fck@x~|#Dl3&7iR#82PFV5Yh)@1=y*kx0}MT=G%DkgXn&jf_VrJ!abYkeK#L?r z3y|QLuvlhWW6Q{GnOkCCC}PT7?N4;ku{#i;k2UI>c!aN*S+(I6s!&EnBD%Arme-=j zX4Ee;5nWw*NSq|T=5sf6>u$I`iUjO@xHElf<^0_y`H6Q6>&M#f`%R5|S@-tIS8sP} zi{tvuvzrHV7k}=LftsJsubMy4&eax|GaZ{xPfZQfjkJAv?@{+?({}gE;PcGswYA35 zIehYS@o{^xNqXz|VcK2ZYB!b_zh(@)-1fI!{Rq2Syx3p^?108XuLV|Y5J{P-qUSe= z<*7^=Im&C5W@6ZHNF$5@&Ji0i1}X&oR+E5CxM?x+(nTsrS#-T@wg1p}N z5itBnk!|6O3&3|RN&*~zKme-1LI`XbD&hc?|0qIGg}@a-4s;0W^A`)^iNfC9J*)r# N002ovPDHLkV1jxg;)?(P diff --git a/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_25.png b/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_25.png index 902503dd496f3a42fa5aa1cf5e7e34a90c0e12ba..d347ade3626578f3334e42d63bf323425a9c21af 100644 GIT binary patch delta 173 zcmV;e08;<&0qy~iBmuRNB`JSL9EUcv|Mq|U?Qc2oMTC|)w9w>=1l)v-GlpombVb8i zM8svn$WGH6{;sHp9=B)zPn;G~Lt1!~<(13oj9w}Q z|G=-e*maLJL&s#4P!`$c&bFYjLLGI>hNj&QEox#f+VVC^*l;M9fBqrJ!)7pZWy^BI bdP|89wj>NAKk}-F00000NkvXXu0mjftx8k^ delta 174 zcmV;f08#($0q+5jBmuUOB`JT$CQj4P{@efYkH2NZ3=b_Ow9urAILw5M1%p>yy6nRu zJYo`Im%pY3B6Sc z{(;?Y(c_+LhK@-oE-%uG2|aUOI#7D|?0; cwp()i0JbCyBOSj0fdBvi07*qoM6N<$f|9*Yj{pDw diff --git a/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_28.png b/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_28.png index 3564761c163a34c4b6189cc1ad891bb7df02afc3..b5761d3fc3f65fa8ac3dd150bc2185852b272ed5 100644 GIT binary patch delta 169 zcmV;a09OCW0mT83B!7%aL_t(|oV`;q5`Z8Ki^$Lsf51~Z_z<7cfx%}xASws~o@bUq zE=@}B0A6DV2esEx6_f$ALUT;no5;jhl{6UA?x1ufu$=Nii(KNRKOhUryeajzzMRWm zVyyrgn5a21Gd_VG01^P4#MR*^B<7m1$FvOdiOcUG_}$8d8zQpG2T1cDc=DKI!nF5p XP)iD%8V*}X00000NkvXXu0mjfXhljD delta 173 zcmV;e08;s z6ut(eIq8m@0WQOREBsD zz48$WMeOl2C9bV9@_5c8;l0umb`)9I^Pq(^@md%r-|XsWTYsK(%9)>QQ#jD3x`oUE zawtCroJ?85DyL6bMjoRgTI_8%WcQLVHDx7*3BehwkYar>6Me|S&@L3=OLHRk;C8=z zl!P^hY5>w3^&VhTZkkZg1VO9;Q%SVJl1su;hwZr}sJWEFn5(_Oe=s-@Z&ZQzq*kg00000NkvXX Hu0mjfUo(_5 delta 312 zcmV-80muH(0@DJJB!3!7L_t(|ob8b@PQx%1hCe%LNvjMQGBAMTZgfCGTma8ZEbN&W zdIA=}%7B=e8JIam;RJ}G3mq5{2OtQcl%Y-ao(qk_}CBGqa;jCsR9@goUsZiHhUAX4_WBjnIe2?&g40` zKU_Sk>zZTL0O_6jA7ERaG@+o8xo-etNwmR|OTtoz-Kiv~xt79^n}=4vogcodfV}U$ zNx@Wp>q!xA$}ygkg7LE}8KFsoZEgjzI3FFHxbETrW)Yfk1@H~<<2Da#Tt1)x0000< KMNUMnLSTa2dy?h= diff --git a/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_6.png b/assets/packs/WatchDogs/Anims/LOGO_WD2/frame_6.png index 6c5c39e6944e5aeeb1ccc892ac06c4383e6a14dd..0dc08f0281666f1645423fd5334610a49704b524 100644 GIT binary patch delta 255 zcmV delta 249 zcmV%D})o&zpnODZvqm~16PN{+sXRJGl{Pja}@AX z*BrXF%S8ZWofM!v2Ad$E=Sg?~{2Ady+bR|S@Fd6DAVD8T0sFoDj6uTAXF7lw!M7#p zBFcv7+XM**7yXU}1Dm#K0i{9uH-T%;m&h0NTbbqX!PMY?$0D=go;Mbr5ZmffSPKezY lO&~i#`elL=;Kzp`h-(WV)k82F$RS~Zks%nywg<3cy25F`?D!yh^C^i5AOz+ix^>(cO@pS5|$qXg@ z%ryrJp&r(Y^PbA5MitZn{mOxnS~Z6%HoC4m5c|}mp7Sz+1CM8+q7*9jtAjeV}0I8D!v`1e91iGF?`@o+;j<>904ggO$+5!P{3=QlZ;b#H@+n;FzY7pO+ zWXotfME3>=>|gNP7W8h|rX{oi@hOBL;GLzt4F@fD?0<5V?VzAq27&w;JfM@|eXs4Y z3O?Yo+5in^6R!o?7VBHq*h~MnfnCFS{-4E!1PuUs#t{t)p1C*GE?aVC8U)n+L>Xy9>AqwQ4yRNi?hXz@9 zu^iiC&wtzjZ^)JS(+~lf$u!z^G#Cm+cWzctA)p^PV4CP$9C9N43%vklFci{gvj`f} zctAeq!nfgkd>>o^P!n$)(5+7qDAV)Mf%fe$33Ps}o=Tf`Hvxher{Gs#2;5i$d!14{ m3CM>|s^}acfzCG~;4cPOmWKVn^_2hs002ovP6b4+LSTX%oh3~G diff --git a/assets/packs/WatchDogs/Anims/REAPER_ALT/frame_0.png b/assets/packs/WatchDogs/Anims/REAPER_ALT/frame_0.png index 863c6e85981710141acfbf274b57594a9f3a7e6c..3419b56af3e56901638aa41bd1f10e7e2051809c 100644 GIT binary patch delta 679 zcmV;Y0$Bal1=a4FoJ0D z)S3JNWuO%a&TE;{yJKkcVBXx*VqQAB>Dye+cfWhSkMEo-h@&C#-$ea*;z4)>*US@z z(G2Djyk$0$Tk_^nicYz5lr=JY%rLBU{KI-1RNlixC%O?;p?}4(Id)mEg~Q=+SgTg6 z)f&K<^hjz>kfaCRIa{Gl#X2&3$-cW>LKa+j5TJp!E$x>*X4nHrQ zN8VSin6bXB{(qeIEn``%b_0eOskB+Zg>|&Pumu6xft}Zun6{v7bmjrGf}uSh*Q__O z+az8MK+O31?60S*Js%d`H6T}$J_eR;pH_2W%|KTTV#7`PfaX63`*4v%mmB$jQ7SDI zARO55Y)GA-w*dfR!)>yWpS%65l^dO6hp6aM(ZJm#GmB zk}QS<%na0!@VNj$H|}eaJ|qq;o|D2w9hHN&Kvc}wcC%UrIp)PI7D+N9DF|@)l!X30 zm4gdlvws{Y?_Q$6E+;!I76Xt8$siyV6*(?+D8^jlV|mgyS--+&Q7XXnuU@Wxwocxk zUNSq7DE(_Ej^ntz$dcMFBYGH<+zLpN%hX_`(y3HTk_0`Hfuc&=5hRl>QfpE%VuZAQ zA|}Zs2m&YuiiuX#%2U*YZhRC*>AwLZGA0>$Bp^9KkmN)VF`y3IqP2c8nzWd$teSGI!K^zT<|0bIMCLV-GaKk)S zxSzp%g15{@a#LPEO3^8ojUces?$BLkA&(w=ZSuJ!(06F1`bv)_hK0p{e_nG0)xVRW~heSQj% z_h*LaPu%F2;+AX>9Xrde%C&Sgn zbIAM371P$|<$s@3zGYO!at~mLky?iZoL@ux3tJG7MQpyd#FPbPqcabfH4N?exMIDD z-4^j`0AkwLXSSX$_kLJ#SAbkY`WUF%KCRZmih-^M#JZdG0j+z7`*4v%mmB$jQ7+FH zARO55Y)GA-vjG5N-EFavpS^YPL^$cWJD8tovAaeFg?|Hpw-0yh3I}MhGh#~uss8!$ zJb;`@fmFBMlub&&2aK2dQbIU@^OvG&N+9dQ#|;TT>pM4R(jNl=l+*EC;jn+MFH<8N zBv}jzm>H-c;d35<-oI~1`j8om=cI7aMD4IG5S22v{a&wt9Q9(BN+cPP6a=_^LPGzZ z%)tfly?+uY?{1>MRFh4XN&(1(WDt;wiX0O<6r-;3u`=PCY+hokC>LP*m%Hn$*718& zi)Imt(p#Hx9LJRfmesEcqK7fb9|1|SN)1LTol3)=-G0}=zd5W6Q`yYi-`ftF9j7dfwNg$3BBsm^L45&%Q`~#QM!Mh6*sL%ia N002ovPDHLkV1m$5N>=~? diff --git a/assets/packs/WatchDogs/Anims/REAPER_ALT/frame_1.png b/assets/packs/WatchDogs/Anims/REAPER_ALT/frame_1.png index abec6281bf8aacb67de1ad73b43e83c540265361..e4183159b616d9ba3c2d17129f1a2f8ab510e684 100644 GIT binary patch delta 731 zcmV<10wn$Y1^oq(E`Nv=R}jX(dea*^8ItXd5d=Y+oRslkKtY15jq#x3VUg`*F$eda zvlm6DH(*!@gdFtjCs zNAXqF_v#6;Iu!mFtG{5nvrozGG zxdnA*=92{n>gRNP)~a;A2_!l`1-Jd?Ka|f;0F`HQXrl6mmBYKcSqD-*?TP7J zj*?yb&Pa6H17LN5QXP;<6(j)Ag*1vO;0q{}drolz8-D>0D(HEbqkJjy{RKubEZ9I204Uc0AQHbb4IptF6TKn}E)o|{Y5_`h03Gqs*{~ZhgHuv~yW8Y2 zgGLt6@{|p$r&&yi4?nku-*&{W<;hBJl)mULxJdH)0AQ`>B1mSZ`kLY+3Wg+Ltt^64 z9sE{-0Dp1-kUF4p@zI$+@#CO~Ga#FqY`(ixVcS7&ca;K+>OKWDnKEUT(xl6&Db&*w z*PY;(*7M)yZaRz3aRrjpWR+ydkeTR)lWu#sZS?i0S9iea{E9h~RbM=Qe0Y9N$Kk{I zzo4%-U(7Simi3kDGMAg^f1H9b4I^ss7)hoiwNxfaWHAdKV>Xx+WX6JIMpB1GDnycO zanN#W2!Pz~i_Vi7~? delta 731 zcmV<10wn$Y1^oq(E`MkgcNE9J@3)gO?NT$T6$C+so|N^_f`Sxd2kW5~4?!|D=)v4Q zd#UJ73YI{j^kB|zg~C!bU67&@+*!qwNJ+%O|IR=a5~!IK-Ok`|=lAunn`BcDeYf}F z@qO=o-|r{H`cU{^kpCBa*NE7Bpv{J~eZf;|7Gi(G%Gcry|#*C?%$q~=_Z0W?*0i5{iM&;@g zQ5)yweCHO2UL3SuJ=lJ!rM}tEQQ3p`#y8s!E$zJ5QojzBWwf4IcS%^1s{`J&& zxdnA@>Z5rF>Zf#c+NyNE4kS7?0k{43UzC3v11c}%$XMl}mBYKWLkCiw@x=ciodf_o zN6D@oHWJNv0IV)hssl2vf&>7%kVY{9d!8-L(I1w9XQlrKiU|2xE&@ijv$ z5fr)rfwE(3$fR6a+Y~2SKwR$MH`%DhA z(#Qf@p0Z)}G>ZxG;pg_?ZHN3?o~-3Y=?m_>izKhF0BrJH1j+P7UsHTU!GHv;wM9^> zgWo9-Kz|MZQU_EnK01@9e^@Ev6v(C~o2xHX*mjWHU8Mk{y3YYkrc9ZoH0g3`3ibT- z6({()wfNWUHD|#&r9hIJtda~FG85f!(p~p=4Zr#L@*X&yUodO3>dU83kIl{MIJ`gi z82U={I^kEM~!z%vL4^nXw?5k0Md!$jam diff --git a/assets/packs/WatchDogs/Anims/REAPER_ALT/frame_29.png b/assets/packs/WatchDogs/Anims/REAPER_ALT/frame_29.png index f488ab565e5a047bf434c0b0d54d86e7b5474acb..c85158c94ba63392291e5c84c17bb8e6de79f065 100644 GIT binary patch delta 754 zcmV$n z8tc;NI0QnTzBxRS(%rm_oJ!vmyA{|Ll5aCwji1eB4%>`f1sElVJee`vYM-iY&#BW9 zcr+rU>y`atdETQ>y8GiSNsaJZRCC6&52xRHPezsi4dTpjUf;yRV4>8OTVG2^*U06A zXM`U|KV}caF@Jp)0xZWq9}`XlFKcZU$!I0OP|Ook(vGjv<77^p*i3+*$LqyHQ2(N= z3j)3Yo-bl%KDV^D@WV4@k};mb7DqbH@7iP7oBrWg#@q-?qb=X6+cwVKGNICqDi5>vZnBZ?pPgdG_-z&F4^`2-oWG?u2lYAuh zX0mdljNp6iGS{RW6ROJ{U^yjp`rIisuWZw%)|AraB9U-iuir^kOpq{8w~3{CS@sE6 zg_K^CI)8mwzbMur%8c3|-PP;Z$k~L`r{GbcAsq+$2fg}K=L*to0vLcy`Lq`>xoY!l z=}Ax-3g-HcaEmgDhUG6F0SLg(8y3=3nF@y`Y5)MBh{Et*ujvgPL|Fs?pd}~<)67g^ z1tbj7pdyy&s-i&vcpiYTsyHt$aFufLPT!gVAZq}4{0?^Ixr19fdCv74E7Mv)6N$C+@=lK;!!Vvw~;2buuLyUh7=9mLdQE@0=s7io})4x~`ppfR+Wc kRW6&;N7qKUuls-e0_WWcyK(XLumAu607*qoM6N<$g0!M|P5=M^ delta 756 zcmVrczUrh{WhY^r}H> zng*GsghCI2Vk1OiE_g#LNvI*(sE4Li97hV*9@3c#A}Vsh(Qv`c3{l*0nXBWS+r#Ks zQ}oh-AI|svhjR`e$cZ}L_MScYTG=GqCe4=!?JM?eOcXQi`hQzy=EYbXRa7s zp|zHkv2h55Jbia`G`Xv36}gwalWi7YN08QPuo#9+<#y|g%^fgEc6l;$xWzVA*OptK zMzE;?L7i`G7c24~eM!4N&XSaHpJf$iIQMY+z2{^^Deyv^8P4yWSR5#nTJxUQ5z;w& zCHAZ^d;D`w|9>H-*Gz!bxR*bKlYy%mt64Hw2rwA^#CT-)i1av#6DPJ3U@7CdSP1G@ zlwBg=8=!ap6CVuwGn>C^dzN?_r7`?RHs0TK5Nmti)fM9 zlf}vnG6L_l$y}rIhfq^t2g@murpudB@yb?BN^KckEfNXW`SycU#RLfb^;=k~lVz{{ z?m=bOq<;=C)+ds+i!!6qOLui?Y{Xo`nbX)*sV40)eFGl7?&k~AtpXT;OnJ2xFnKD| zT-hm58E(w=+5Kka5gMjlJ_ZngUC=M4x@WoB&5`{80JlgC@AH`6+)k85003HwVlYk2 z6xKk(5Ctk?g|2VZ@CVNW5Y{&i#_e1mxp;?eLu~*M06cyLyY^hcZBQQcFM?kX>taCu zEq6fUlD9THqr{xwXO<_f#Q;F<{Qon8XSv_jl&E=)quqv!006wBj`LK+>B%}-@J>L( m0-CCgixNjgX9?GK|Bs*N-3hz2BM09A0000yyeEq~8z9Ay~CKku7Koi_fM9z;BK5dyUn9(`RaI0~ zQJJ^RjoV2KEnw1OQZA!6&MnPwa`Il1)ZOrsku<)$CN~~F{g&xV7mYXPgciX)nf-Wo z%gqNd~>k`s9#xM1xo9#QAaT^^A_8{Yyi<;e=a4{%bi;#^a^wTgCSr&%xnYL zU^owvhlS>KwoD!d@d;sY@LmjH`T*V%mfJvUVt*k93q=Sp!NRaP{B#wn7gl?8>}y|&!A-)lyIAyindH%pSa0T47gJa%mp=D#=~ZiE4IJ;-_{F@1P^ zXYHs34Dc39kJpo;1sM2=6I)ydA~wKRED_ld0Bt}}olp?~ux7u8A`A%{piR6bY90j7 zs2;(?gkKwQfu|5a%)7&3bKI+bvH=fc7KfPcLtt{nlOO^jMNyi6KC1UhjYsWKcZ3eh zR9%%il%%|i+T;92{;9jSv$J#mcC59SfT U%*;`YjsO4v07*qoM6N<$g2=Nl`v3p{ delta 634 zcmV-=0)_qJ1>yyeEq}pl9Ay~Bf8Uo$oi=Kx2N6$Q1VM<0^x#1dGBJYJ94zKo@DI>S z-O#Yv@lXjO;-xnaix3FAwDjUBCbPz~kb|{{B|GaaP@6B-4KsFTzQ@DZHaYsTY<+NE&~?CN~~F`IhNR7mYXPgciYFnf-Wo z<=T<(6o35)E={lg@?{dXuostqT!}t3Q+_|1<)n4nPG{rb&z}}q+UHg)`D5MmuYLDX z0nF43>%gqNa%-^!s9#xM1xo9#Q%5l`^CsKCYyi>Ue=Q}`E1laV^a^wD{UKmI%xnYL zU^owvhlS>JwoD!b@d;sY@NNuX`T*V%mfJvUVt*k93q=Sp!NRav{B#wn7glyJ5GpJ;njy*D00Sb U%=&=>bN~PV07*qoM6N<$g0(#|YybcN diff --git a/assets/packs/WatchDogs/Anims/REAPER_ALT/frame_30.png b/assets/packs/WatchDogs/Anims/REAPER_ALT/frame_30.png index 29eb3b9272255cceb86f456597047888579dcdc2..5d7114510584e499486035a103d073ee2d02ca3d 100644 GIT binary patch delta 665 zcmV;K0%rZN1+fK?B!75GL_t(|oRyQ!OH@%9#((F`nYuGb+?mGF3gjB&I0{09gh}AB zFG{GUN$C@E(OUcyt}=wnNeXIr7e+!TZc1B7cNNj5HU=5!xGFH6AqvIOdt1z%K5P*^ zn{!@xzTiCvq5GSAT-2np2{8HMkS0DL9RMU&^7tJ`bPZ-c2Y-Zo>BBLXaK{-700EVe zP_MqfGPP7C2=UTeL$q`!3V}qe&3e!`a?+@!_&ak5CHt!kg_v#Y#7|$1)g)$RV^fP% zjxmBFDuHI)84qSpY=04mIb*uoL&km60bh5x#lRzumX2&`(}6?|VPbg0&F6xmYR4y( zTTaYZYQ4rFe1B^`N`JtJmz#=vvR1>`DgZHA+6SRzdS`7CfRfz%wTKv6**Lps1s*Yw z*E?U!7J&vNC7bxEeD{-P9}OTQn()yhf+$uNkY0mJtTp40Y%!Pxv)VqD2PG^ABqop? zM*xlk$g-hSra}84O%n`B_qJF5r~&`c1RRj+6~?D^3xB}yU|DWAvK8(s0xEnBBoUCw z#dm;wdc($$8wJ}77iNISn=3AjNT7Wx3q+?EY?SokL{}rjK&bVhOBz5OT*v~+=g%Ba zfVux}8R&UjX{TKR-!hj50e35*SyVvX!T`Vngv~_(7#FC_z`!0qZA%FlZwIm)fR1aZ2N0Lr zG>H0McEQjfs)|toRYOAn7;FNkPq^-%5&;O*E+bi2J$48D1`TGga{!AB*m*;O3f_VP z)ten~5@3KbfBq+D6!NC{Wt#YB>|f>oA3p$)e-f+=E+@GT00000NkvXXu0mjfS)L)I delta 664 zcmV;J0%!fP1+WE>B!72FL_t(|oRyQ$OH^?b#XsNge5c-s#G7dxtw5eJj-wz%NSFkE z?H46f)8x=k$VF@MPk71@E+;9d-CGz5p|~k+A-z>Zo7xy;pyR5*bcQGtN8f8PZ;FhF z&gxz`=iCGLUW6WK>2*<)$|k_%i$j`NPC5Wcti@~y$5sJ|%F;dvB~m+UlK_T=C88EBqlX+0WazJ7N ziE#wrIDjl0N~IgM57IQjko0VO<&PThA5Fjksa|1xT7S0y3=fv&b`x9S?joSV*FX{h znOJ-W$fq}K47pLTy>MX$h`hPt(u4#$rZPa?^n#6&UW~fc$S@FUd+3q^PzM(>K;ro` z2NYoLzgq@+A6Gi)kifU}r9r^mifa}XP`{7^c!03EC;;OEl^MwG@l&>xfblk$0r9=R z;?gXE@_*1$8T{Kbz={HxGuA=eEF|8$J^;yx1!T|1;4lF9vKmArIZ<1$!US|oLj!=g z+^#`1^sx(u22oXv3aAEGsIDNu(f0qbApmrI_`rv&34h?3oa{!Ap*m*;O3U0xH yYE}EvI2fSJpa0~HLf#a=OymC?`$zcy#}ANytPu?M(zj&*00009e>ndFx zw*$pe`ujb+ig&yA1qx@?^IWc=Er1xt%C8-BRfS1702bl^uswG8E6C_e<&v?IL4sP49cPzg$}b5?S(J_FiHSN70Vp9P zP?o+hni)%e4I7F-H$2D?gap}rX-Pl>R6)o@4lRaoK!5p}3eoOoJ%Bu#hkV({;a5>p z9iWchfMQWA6h+S^fk@98NCT8idH@AK(hju(=oftskh{=pSOwTK>j9LndWH&sy&ID* zu)puEi*IRs(E#P1=VEIh>y>3(XdlmuFsA{pzSIC6)qJE{1L5iQW#HRj`ylfI{A_yc z0$GhyhJTa*YwO1hs1Z5hP@n-uPbI-?8U>aBR81V9t@b8}2E6X*^CW84Sqnnbl~o3i zn8`eM=rSP3+cL3M*_I7xod5*LUl_7MI(jpT=7a_a$2tSTirle5I|IRAr9bH2Yycdv z0Tc=g30B!7WPL_t(|oQ;xCNK{c6#eetnsxy<0&%scT^l1)^LRL^HRB%lV zMJyw!z@3DfNC;}(OIl=ZB9az?On(H?sA-XgVZ3G0rbP)MK?#Kj#@HXn9QCz$Gl*^K zZ0@}u=Y02`?;eGkp2=@Ak+$R{KJ@IjIm3--wKo9}HtxKwiGOo`uPB_>cgG`8HSVgJeO-|3m}5A3hTyQRb}E1fQ2{!?2H_}573J7g#(Viiy#BW z2D)2Z0D=U3Mlj~DEh<`WC4km~)N^0Lbx_?DxB2f<1h6SuA~YTcAOto}^^~i+EC4KF z9_P^RPrzfBlcI0jH@yo;Y@4m~VPHKo&FB>b7nV=SA*ZGx*@+ASO2(uYJHCgW=0A&OO zDpHrmvd@yW5ku+M#z)x#0YUa&Sr*U$H4reNBTE4sP=EeRg>cV{UO=8KK%s2ru~yPt z52)j}pj6ZyN<1;Z01ZOr@fFDC0Lo5jJyZNaL zt$lK`)I3|IzGwNZffy4xTc@Or{86R0_7J)8FG8Uskg zWWPIb6_Atd*|FBxmJMhf2Lvcw9JWC^`?8FdxCRJDx-tbTbk7Fu3}&**K&E?(0dTPOE>64ULOJ@5I0K958v1cO{Nr_Q1-UTA}!N$wjF4n5LhP707 zx{E9%W3?o~5W3~`8!I64H&$YJ%~K%3fipnL>?Dm!@J8w*zwH^*@P!1+qt75#P0>oG zMs!SPnFezwPk$z&jb6p(^r8lMhDsE-aPS?LO&6EV^@(GPD93IuS7*h8bk*GUWz+(4L?Qh>_>td&5; zd;nj7L;_dLwN8Kd3Wr-RfH4C+s}IhBAJsR@w!{dJ00000NkvXXu0mjf D<5am; delta 409 zcmV;K0cQTZ1H1!}Eq^hN6G0S2-?T04MF?*|K!9Wi9D-%g7(bVLL7h}*8HkpQ`L=}PT=3b*Bt%lGqz%@YE z57)y~*#JC3kt1VFff?vRunTozzu21{r= zXbX_Z5KD-Ir(b-6{Vf;3q6c_VKRgDSeEPfp>HGl>>JsR@y;yQb00000NkvXXu0mjf D@`Sy% diff --git a/assets/packs/WatchDogs/Anims/SKULL/frame_1.png b/assets/packs/WatchDogs/Anims/SKULL/frame_1.png index 159107d56e6dae888aa12234c6c42fdbbb62d63f..87ba733937686d3af87cde349f82a1f59fc45221 100644 GIT binary patch delta 144 zcmV;B0B`@@2HXaaBmpC_CA9*70w}ntQWL%Dw~wn`05#Y>he=jedLYO<$Cv;B002ovPDHK)LSTZNgg`+6 delta 145 zcmV;C0B-->2HggbBmpF`CA9*7620S1m73^HzkOWo0;s|6IZU#$BCpjY50v~0-Z^`E zE$WjOB+O}*vKX6*h|%A!4(Q)yEpw?Zc`ik-zQ4KIxt0h3IJMX?Le`&{DgdT|x*+}$ zE>DHtB;Z&E-%K14ZFVF4@ diff --git a/assets/packs/WatchDogs/Anims/SKULL/frame_17.png b/assets/packs/WatchDogs/Anims/SKULL/frame_17.png index 224515d97a90a01bedec045e46f8ff2042bf18d2..6dc34d0c7143a6814f0e66ac9f324e1fd5994d72 100644 GIT binary patch delta 756 zcmV5W!nfn^h+a6w6GU_&5mI1pgbXfK&04AoIAM-K4u2IO2QvT&scMm`?gJh` zQdPaGx*x#`?O1of5?C-3fPeq6YVprr=}rX1OaCJaMlaosKm?zJ)4HiSv?A7F?G-t! zGz*vlW5GFhIww__ia0N`rv^LZpzs$ASLOHb&tA(0VH|CuE3WeMn`FH)*tu+npWbS8 z`!E3D*)={5n)BU?h66Pr2P2F7%RJp#Jf{Uoi=1n=n(w7#lr=m7}f|d8LXq z?ucEd2GWG3QUqCRTfFVI7bEYMdf<(mw_7j1wRaK&9)E7XwD}F^WqDz-M`rr?P(ILw z#4S(tYnd5@Cu=T%U4AZU?#yK-CktmLU*?Eowv#soUjN7^lL(2u9#hpUs1|&F{5ogO zaj2s@SXEUi15UmS4b^N_RdMYvC?0R968wGq9~RrR<40000JO@#0|V5<(v}4@?OJKoF0RH`>s>MHhr8^N2Fa3`!7`=2i0ug)?&giD*(27`xwO8b* z(kx&Kj0NZ1nVeK%D&oA%o*wLwgTh}hT$SIyKX)w~gz;z-U2&D4-z4je!Omqn{Pb3% z+lK)F&#c+$i+`283H%6PetH^{cy~OKW>5kWdH#{DHzpvfKoM&zPa!re9FL?07{KD! zC*vZdbui3-=s8s8!PlWu0VC0iebVjTaG{s%0`-so{fbFA*MylW#@Of~tUTsgk(aAj zoHZ$f@;C%C$4k$ zJV!dJgH=_PGT`LP&``}*RTbC%f^wkNP|Yu@YBXXvUwhoQREvF8?b(Gk#$#JLQjaUv z9^UHe*MH-!^h{?O)`M>h8>)KyJt)^`OO3{$s;aRCJ|Jt6^wwcj4Rw$s_PI~`@Yy>6 zyHLCaAApgnsz!i$PB?(8qdNv50Hno@5qO9d0IGL>-R6E(ztg`*>5viFn=gI=pcsS7 zwA{VF!sT1o3RnsYKvMN!AO`^v=7)J<;z8z$f^FYyzkQQ<&vmIDzpZv4*fE%vxtp75 zlzSDtQVgqvgCHX%G5v%dAfw?Pb{n(*Hw`fJz^j)xItR8rc=X!Z_9@1101_I1zP-KC miKFC0*gSc9XJ&Zv62N~3wGq7n21z^s00000B!2@*L_t(|oL!PVi`76BhM&wGZnAzPL5sVf?oDw)7ld7~P(;0{ z?EME<1hKQQ6?QCKtyB;M8}Ubog$Q0*5KFaKMFfM@A|i2%HSA7uERsy(o+jbpopauI z&HykF*$@#6pa3*1(UfYw5wP0_K?(~F1Tf6N_7$#L;N1XB3x5s)7eM#N%F>=L9I)Vx zu9wDv2_MnVdG9(O6IMzXIYm;Ess0oS5cuU3g-!Mu`;hGe3FLkMXAIFx7&vfpPFTRe zwBVM(ufXdR5LMtA;uHvyvxX=HueOHaCJcxDBWn=)4Nw3%#7&gCriRnLJECC)UJr~0 z4GIf^VNPnnwts2UI*)4_pl(+UQUF;JL7c{J%ELc?;n{lG07Q10C-U8PK%|(7RBewS zh63=2i50L2&5~AG1u$a~dsRdX9-uT+kxE2ljz&{e;DXuzU(me$8E=h6a zzI)vJ3`Fj&s|h8LJEvsmVQ=cWNaXT8I;WYng~0*ML~ovW+uJ^iVfx~(-zXF?+1@yC z@ID@(scvk}ttNXb=r{#}qJuJ5IVYZo`$9#rt<2v4*1o{!}ne_g8{`1bYi$PD@DEO|sXscGpkV+2002ovPDHLkV1klk`fmUL delta 549 zcmV+=0^0q&1il22B!2}-L_t(|oL!T>YZOrw#eeVZV`t*W?4ZR4)a(=s8W0k&P(S%MN&$ACcz$`YqQn4Gl?B2bkyEH|Ow_n)jm6x4tQm_uA!sm{c5I%uC5Sb^6) zYrufUL1>wgI)8AD+qClI1*LD7HKYNuWB_p*w_P6o33BDCu&e0ZWS+=(*8w8=RHSTb zgfZlRA|}?rBGe(RvI<~FBJQe)SQMZQ6OmFxWQM^|me3k=|8LN&`50}DMC9jM7gV?f zJehUEejF8%H0l`7c0kf@rM4fHa0lnr52TQ0Kn5U`SAW!_s)+gD@toQgArQPNe^+{S z<$U+J`ds}awRAnEs3NSDl41H@*K-4r%lEom$ehb<7nEUaHc!0u(q}PBU)&99h6cvl z8wU>FM*)Uvf>W6ek-A38Tu0~Mg=x0{mlm#F+-z!4!j~gF&DK2~%R9lk(H`*a>*2>m nX#t}E%pURs**kUR6H538POhmxn#xZQ00000NkvXXu0mjf>XQJl diff --git a/assets/packs/WatchDogs/Anims/SKULL/frame_19.png b/assets/packs/WatchDogs/Anims/SKULL/frame_19.png index aa35b84f54023da7232988c0859eb63e60975c2e..472512fdef61f62b85e543d0262c1960fba80ab1 100644 GIT binary patch delta 559 zcmV+~0?_@*1jq!CB!3S{L_t(|oMn=+i_>5j#((+pT@z1xEhw}g^nw%|JgDHoAsjT5 z|AC93bP_j5UF5Re;Gf`9938|(T$KA%6em$|JH!k(DC$|Ywz)RV>yYF#cYaHfhbQm* zd!O$Gz!iBZA}N3Z(9oecs(3blSyk{uIA#SOYB8i$hdrg>+>r>j)N%RJ98UBY|($k)%h#-u+L?qbmOeLt_H2b&L&C zJ2J}wkXd0J{G6j10)DW8-&g@B|A~m3P^*DsyKIGYyh2a_Bg6h7FcWdU=$gmXhfO!C zkoF>;x+eGM(|>{?(2y054Wkk#Ca^{0pbyQU`LD)LFLBcRvH@tM{UnrKo14=R84X0T zvW5rvfP;^(fwq+1gth_(r8R;Wl%_9|%|*oEpvf`-M*|>-H^`JPtK(G>`Ljh(UR3%S zxNC?@()i?#NVsB$V>k(sFvMRld;4^vpwx;{!|g_J33n zap&@?QUPQyTU3SS?;!GYiYo7+-FiHI?Lo5u;xhxfa_wL|vl|k!rtW|LP%k-@VcFX`HJqVS$d_Udb!&TlGK|Z_=KMN4 xeI5<$Y$&}iS9Y(~i}ZlrgFBaBEY5w6fWO7Bu`~2{Q2qb_002ovPDHLkV1gl$4jKRe delta 560 zcmV-00?+-(1jz)DB!3V|L_t(|oMn=+Yt&#E#(zn^UShSq1BE*fu0akQEL5;igu-R= zKX4J0o5amg7iqQ*{s}IJql37JOQoNR;v@=gMayUikr8P_PJv@2d z-}k;R0G`Mz5y=2t00nKz$1UG=U{V!=2u@fbfLa1s)xq%$=YJLu8{rhN394FF+EbNU zAp@s*a~4~n!w0SUytT<^g|!(pts|TciSY3d{JtYfH= z+OfMF0=X5|At*Q+5fFqM1odTbil2zN4Ye9Lw#rsS+b;zdV4yiT0;XdwmQ{;(bz#$s zE2L{NJDx85#eZ!<6Dr6{$A)%OCn2<3@(hFy$4>!y+H*}ge-kwH%+ zHyM7h05}8$3TTP(rnFq3XRI+K;3~Qz`BX$S4vIVna1;P?bc3|{SQ)N}$lonOGpOtf za9@)c(&Y56NVGg3Wq%YQQCjc;4!(%Qu62~8x$P;`^M7Yzx}E`~<8zNKP5>-CIQUsb z#GA_NN&?7!KC23iKVj^v4A;z|)qFaB<3pna`_u*Us0000%B(1k(hNB!3!7L_t(|oL!Q=YZO5k#(z7vcQ=NZJusNVubjcch>(B*L4vmt z1xs5MBo?BbU@6fX3$d{EFAyvY3MmB<7mSk9;1_D)6@o!USNzB(+1uA*Z|CMR&Fnn; zywCjheHVa|$TJa10Th4_d+09J-2-6V6?6z&te~ONhSYV~ReuQHCBPKIATSNS>yX_W ze&TX?^%osuga1@Fw zd}zXS$rO$hVt+$O=#(TO(=;5RhQF9mNWe&YZ{o$_6)Q~qswQ5l9$6tsn@K}Hq}1}W z7l_26NLGYa0o};awGY&#*Sxv{W(%t^%!2Z1iewui5~1+PG62s9AnX5wqT*q6Wk^Kc zw`>Q}rL{z-7qcE|yiK0`3|sdB(@Hi+v^P&EI1<^V6lr=brnHVRGQ@x8qf?G4n+a07*qo IM6N<$f=H*1kwbMB!3x6L_t(|oL!PlYt&E}g`eEX%v?)t1}t{)t7CCtMQFi-AjL^V z!KGUjq%K5vf=j8+bs;X?`U?aX4hmfgA_lC|rNuAQg|iSWDjM;lX`AMCk;$Dq%_ijJ zyyrf7PXH*1JQI-=Kmqu$hwi1i_W)RP1s%c`D`=>6AaxyV&VTSO0j3ZJfobqvhwNVW z6PLrQzt}KV*u_%hhb-FUox(&4Bi7N_ATGJ5kP-`gw~izZH-RP5CZPlKF8`s3;2)H% z<4=TC+>t?81u{eTgQh?$z)+h6bmK4tLl`ed!*CfY6_jUBX~Fg?cs4W!-3JyKjzV#S z4^5aZnZl7mY<~y|oslGDnua6P@E0-)2^i_@O}sd~Vuguc)x=BHBP#@HGik_&lv=mO zKqL-DvLdt!=thpNeV{JA<<%81TUd=@7L-p@BwH7e2!&6U0eC(DS^pno+ZkOR5|Q^U zyMc6ZHPPwCtVbGelP5pJ0BX5|m&wy3niYr(PkBYI8h@v3)Uvryyz~KrYp)!BptN$P zZ67pHKK>X+J2V^8po2W%|?C&t;Qz9aVX) z?~d=gX)-BBW$nh;o%=n~mTa7C-#c)-AoVgB`(je&!U+BYPK2XUNZ*`S00000NkvXX Hu0mjflRpaF diff --git a/assets/packs/WatchDogs/Anims/SKULL/frame_21.png b/assets/packs/WatchDogs/Anims/SKULL/frame_21.png index 4ffe27fa858731a8e662d7643a2883141b94be87..7a9d0f0b236741ee47859daca7bb723a6fff28dd 100644 GIT binary patch delta 560 zcmV-00?+-@1kwbMEq}3V6j2byfA8JiWzB`V1C=}U&Mc{HBq;(47FkmT(augJDUD71 z3z7$>5DPJ&*jp+G!NSgDQ3(nbS_G`j_EEAyldNXlvDn>rdzogL@6CSm&G+5_P!V}A zA_;&7aNq)Y==|FR{+0pPhf@}Cp%y|?uCP%6>Mmdk^t@z!%YPNpJ9c7I(xEzA|BS8Z z^3^y#A1x3vwGMos^MC2EIZ8U|51iEl+h}i;@!Q7ibI#iwr&nKLZ?aAxvNs7c>dP;NxdA z<@ch)A&%HjyMO5fEj#k_P{k_Zz6F~5^;jjDE7|zd_TXQ1lWNjx8(>*y_S`G>e#};oi z_uoB^o)yA+(fE;U-deUw>+99|dk4X!1scKWgPje|T7RW~g2To3C4ZkmRCjORG2j)s zsrCCWi^Kt_zIiQ_qqcqh1;uPGpx630t*0>{pDz9?nG9-bd$vRgQh)W+DXm9Gy*-#s z2fwJO!u-Yq+p{fmqYs@`4P=+KA`y71nltK(ND5C4CZDA)A}H;SLiVbfA`=)Scn0|-ckt!3pE5wJ4bN67}g+-lZ+7P~vQchd~-J8!=4`+fmX5qU2n z34jK0-~##4`P~HmmI2p?Qx0T$R}+Wf*DTD--~R6=>9QQx|1XQX>5VjR9ei!N=fdfCDas3GCp4CV?1y{4A%u zFFG9Hi2ZaToqwifQ+^(*SVi2oK=Y^`t0b#RmVSMfxynJU4^)EK<4oRnaGN5rC$bHh zIB#nIBwCX1CwK}CETt14KC8n?$Alwjv}2~%uUtE~;Y2W=g`GK052d%V8WbfQTfWge zdiOYbRtTGnrh2k-Yt<^PZ&erXb%PlTG=kIJ{cX-#rGI~dTP#E z?SD~Gg~ja$HfCEEMjtxs8pxWpCJ}h5nltK(ND5C4CeNiVA}H;SLN--R5efX(6T5PA yA`=NkV-Tn_gy|`S-(iC?90000hng8_dqxl1($Cuek$ zAJ&!t){FTkTU6V{EA1BI6^9#!E)bg}HB5o00fXlOUSk@n6@^L*Ff2m3jH~SIi%=N= zWkugZ<-ZC;!-L57=fX6cA21msf{wwD{K6H_cQ@nWEJs>&oPY+k6nGM-6%{gN8P%on zU81#>9M~HP{hhhI!hL^RveM|uw=@Nwb2hxT+m<@uxj?;laAT(RuHOXe3NR06j&-|- zR_~WF2DHnl{CzdIv;5iM;u6Okede5A_;l$942KF}wDnbuc%8wMS*P9Y>o>Uk_;6;+ zpRwOJgYh#jY_R?Q;KuwdhU_aVo1yKWFI#0ui-pn^DV;J(QVmJyUsb(%1kefOJh$aQ z4RD{%4%tpaApYK4EtZNpP+PNG0cyX_xm)=fO7W7KEosOe%>@a$*t}Z;4H}eBMSpB= w-iBmbj)>edlNkahAfrSt6+a;&cWe;vANiuK{O+}D3jhEB07*qoM6N<$g00K%hyVZp delta 506 zcmV=psfhd~Q?P!1p}GWcIZEdVA% zM5K7j-6Tr>hng8_dqxkEJuCuek$ z18YkFYsLJNEvoI}m39m9io*><7l=)g8m7S0fWh+suQ3hPibACY7#5*i##MIqMW_sb zvZC*x@=t}K;eKTMb730J4w#G)LC4@ne&LGeyBl$FmP0K%PC$cN3Oo+fvI?29jOx<( z4$?YnlSjIUQcvX-ggOT%g|DzdqA?+iwDO1(*jjN4nhu zEBDG61KMR&{=A&qzWK@E;u6Oke(IcD_;}$v42KF}wDm=ec%8xHS*P8ttJk>r=wN2c z@3CLkgYi?(ZLq!m;QIUxhU_aVo1v{AFIr_ti-po9DV;D%QVmJyUsk<&1kefOJhSCM z4RD{#4%tpaApX`{DVB=bS6j7P0cteflNkahAj3p26+b2-w`~ybFZrUa{LMJO0ssI207*qoM6N<$f;wFB-2eap diff --git a/assets/packs/WatchDogs/Anims/SKULL/frame_23.png b/assets/packs/WatchDogs/Anims/SKULL/frame_23.png index dbba6a7ee71de1ac9e924ae0e8d42f5d2db3d4d0..1e02cc2adb18561ba6f3b4e572d131a0a8dd5b15 100644 GIT binary patch delta 566 zcmV-60?GZ-1kVJJB!3o3L_t(|oMn?SXcR#dhQFQLyB#^nZE=!-F`h*b4Fa$DS|oiyxiTh*xlIyU$eX4 zyf^><-s}KS5_u~kLjVQf!wgxd>{$Z_F3=I|vp_>7fuWmWBYy|p4Z!5|prpEPh8)`S z`^NF%O}!f#n=#Et<43GnkVvNke95w*fvJ_CS8O@}$&3LopHLe^=|87dmIONP%6v?% z=a%$hM7z!Hhrhts*Wj0_Uu*2T5jGMR}UxU>8&UO2hJ@jw!FA)&tVRh)&;oEr zEFvO1MMip}x&W0-4FD5DO~lG*Q0Z8cRHlznG=?}m7)6wpN7?TApBy&`ve%J}L`0Iv zC=B3<{4dF!DS(os(Jy)d80XGVKK)p@UEJ9qE6FGF4?P>a5Voge3IG5A07*qoM6N<$ Ef;_(vHvj+t delta 569 zcmV-90>=H%1kwbMB!3x6L_t(|oMn?SXcR#dhQFEHyB&$-wm3<^7|$YzhY&T2r5kK4 zEG&YkAY2vf(nhO6OS^~`mZBgW$Q2SqEj9>}P6Z8W<6@P>6v3Q$CU^HNc5imjZFcvY zH}C)7douu(MBa!<4?qJ1FiHOC{9OfhePCkP=YWAq3Ozr9e}8kR8-N|sgOcg`5prlR z=vvQ*8h_ijE@FZYHi%huAeD9-_?$;W9a}9yr%1XBk{bhHCZ#%n(tl2!EGe}8m6?QU z$KTRP5aSoOAN~LXJM?iHj0P;m0H%Hx!ck(CH^8z0qZNg6Dhp5v@xU}pgfQz=B8YmB z5P&9tElY$&Tz`4f@S>D>*3VdutJni$iCHYAL=HSiXV+P$=|Fg?yr`aY#etFCv8Q}% zy>>qI^|jUb?x|;)B`}q**WSm=t!1LD{PDee_iv_C54&tD(LnR(#>}Y- z?maPSVKRXIPbU+lTysOzbG5JjLNb)~gqE94A=XC%U`4Zsw4ho7ZE1gO@&x=m6bHN<= zMW!&f>6!FJdVe-sc21A#f~??9mG;)FLnw~#;>G|Z`nr(R&ZqJK*75lfa5m3)0eD6# z-$+_9)eitSru^{d*nY&b3t&Cj&)aWzYv4KtTnWwSF_q7-Bn@a0mS}P{VBlXnC++6e z`KU1l5=mqoz&Wn!G`!73tq06hQW<(NM}R!wgF;mSes6fJl2+;1zgE5mqOdbbssXf+ zR_0c}Z;V(U+2{rLCkCy7qFcQr7awmND2E5ORC}0h$FNjV_HMX8-^I07*qoM6N<$fR delta 503 zcmV`=n1xaJ%C2$116$iXsC^M5H;EkOca-yWU(1~`x#VsPtCwq($wqszk2`wKY)>> zg6Pa7RWTq*%jj+-sp)SPl*M!l2UYkEz|E(CDb_%CxK+XdKz}5pI^Q(%{@uR5#~c<(eC+o~wQJ7n0$ruA80S;eCJRgguj-+1p9JudL!^2&_)B2 zzAv$iF_47eG{ymb?d9Q~F)bA^4J9R}d-RDU>AVhrMZN_1y@LYd%1Wn_&hw&U>|8Jh zevv86ZF(ksk$;}emYvh1x*#jKQ>DH2>JW;hO%_Vf1J-5R)#0arpZdQ9arEJ*`ege96>4H)>>&Pltu zbv|m0fkYBn2jCo6bsDmnsP%xEN-9Gy<_M4nd|;?5z;F*?m9$F7{PnIH&z-4HVt#B`KG1M1Z7|&5|XvO<=q&8iK4m(x})HU4~W0vYU)H tFsOTiNdu5x)(f~xx-Da1V?fC5{Rf%_A&pPIDGmSt002ovPDHLkV1jsU?q~o2 diff --git a/assets/packs/WatchDogs/Anims/SKULL/frame_25.png b/assets/packs/WatchDogs/Anims/SKULL/frame_25.png index 8fdd941a4c2fbc9f28db6f49d86c7cb65e9f07d1..310137876ed525fbaa40516e80587bb353917faf 100644 GIT binary patch delta 650 zcmV;50(JeM1)>FzB!6j1L_t(|oUM{eOjAJ=hX0vPb!;2Bxv@M}wgeM21a)mpE(I04 zFtO4?pix|zltjbAkQ7a>*s^fp6Ca5ow1!4#tFWMvg|+N-p{d5yC^e!Rf)o>orW6Xr z#cgA6CA#r!X3jVN{BzFC09%B%6i`)WlK}a5%Fw)fE0@0n`+v8BmH@+lFcr6?ypfyo zQ?dg9Bmf>Ww+J3H2TV+5%n0XLDgpu|wO?uFFu|k-T5wqf{_yBWt=f|-qwFaV5jFsn zBEJF&Tn0D*!DHqYpjSzpsqL9e4vbQ}pJ#NAROBcfh&d1RY2H3))6Ayl zpUqU$M>#L*&yGui9}sH5X?zAqn8{zGyJOjTqee`YOTP6k?BLp=yYZHYZiDeO?54h;M%rf!)C5+ zF>=~xNK|!^n*A&K)`wj_v`~SOiFMkWai+iP&wlBsDq9{3FUE;gmjfI%vzJ{Ys)>8Y zh^_IS41b><8))AQIZ}fxQ?bi+A-Mq!b1w^T8v0;2+6%WO^IO5&^yj`q$_s#x3_W#K zQfHZHQo!1&ZvD*=9dCM)-*M#Ho%HxgmX0+|D&T`V(9RbbKdwnAU&HlcX5~sf+1nkp keUbt2>TfMS${oJ|yK%bjl01pJ00000NkvXXt^-0~g6mx`m;e9( delta 648 zcmV;30(bqQ1)v3xB!6c~L_t(|oUM{yNK;W9$G_+7u1?#~%V*!C7srMaO6X4zSTprA{ON$>qX2ND8-zcn?2kO z?_E+aotJZd-}5`4^ZlLk1GX9Ja)Bx$y8wt=AqVT;?I?d4+<(6_Xqlk<4^aKKDr;h< z;*#tF00Dr{%q+am%m5Ro0CR*ftjGi&f|6J69445Qf*MRz2!Am8P^V-vX%>B3wb%hr zisB9gFcDw?c%PYB_&z;?N~jf@Tae#GAb^+Ir4Hgu0Wx0nx5AFG{?bQ{l0~5<}V$&1=SMB^&4~eSc{xM>2 zdLSaGMSmV`o8zujKbNW6?;e40zgnx`b;W6ww%TjtnFRYGbF&#Sq$YYk+7SJeJl i1i)&(xBRSh{RX>ny6@b;fi(aC002ovPDHLkU;%=MHaqA5 diff --git a/assets/packs/WatchDogs/Anims/SKULL/frame_3.png b/assets/packs/WatchDogs/Anims/SKULL/frame_3.png index f33bdac1e75213227d2b05252ec884e7ab58d5ac..ef0735bd31840ffcd912c71da06e48963459466c 100644 GIT binary patch delta 776 zcmV+j1NZ!%2A>9yB!A{fL_t(|oK2EJY*bYghQE8clip5BeGZL*BKU?*O=Ari8^eMH zTu_s?DP~yECU#Ndq6U&7EDbDtB$yCZC~+Z%qzFW;DI^3KF~OO-p==1j05VOrYD7{p z?O>oC+c)pJxNpR>yMO-wKj-}CGGc20K5CvGn}6y1fB}xjKvV(c)My11uKw?H z_#iv}hFM&k{0{89%=1z}Vc5h`#_^OZW2!+g3N26EY-?!%CD@-6rUrBm^ie3+D?z-&~)wbeR*p2T+bL#^IKTAYvvs$ z4$eJ0?_&&xp~3nPOBeGO9)SROZ)LEqu1@v;AdwNkhT+qfL}BT5wcO=Z0VX!znNl6= ze|$Pg6@bm3HIIt?d`fR0aD!ZtYDM)gHg_$@%cWJ=^e+Rr1_+Zaun+(M002ovPDHLk GU;%<9WO6kC delta 774 zcmV+h1Nr=)2A&3xB!A^eL_t(|oK2EXXjE4e#((#EhujP?zD|Q^{L?pPEWwD3LAvNd zuhv2mqKu0s&@7ZLA_`MnN?rH_1#zVo7q$qowP+(z5Or!nXX2)DBVtkOgxFN^50Obm zsmYkUdDq2zqn_o*_kHJ_?;N(<3V=&g(nSH@#IckUA{(p^ntzTI2SOlkeGnY=I&=tZ zw*kZtcO|520F(;Bc3RwXr6>(2weNs@FUiQfPuR6<8xsGI{5XTIM{#2Cu} zsMLyDmn-9-nojE|F&n(_0I4@_tVyl`IKMP0M*)(_#Q>GbY(v@yu=zcJiLFezpn+g6 z1HdNd5a7T}H4J;(Cc=~2^9B^eop20-ss|3F4o24=eSZKL;AjK{B~Z~rXa(f1e)JqJ z$d=bIP8cVTf!&w+PzuQPnJCIAo?>Z0)d)tR<&U?T8friRmdVbQXVdRJjNZd&wln|| z35r7~e-p)d zZ&`&IwtoO8{xKp~(CfcaeyH-xT9jV-OXE%%<%8(iG0nw&GkHw3NpW^m+!N0iwE^e~ z@_P9%8UMX`&;v~cXzT7ISFD!2Xq8Xw&`b6CPi7<;S-iTiEiZ5PpJ@wEMWg6^*seY; z{#-vC0_E7Q#3@%BV9KnG5}cCclwgZ&8$|ltxg$WXwBUb)w1N~ z|HG64SaZC-Ut}i}dP8?O$Q7yPRM&KU>uj`KQu%f700X!N2;qhyX#fBK07*qoM6N<$ Ef-sY4VE_OC diff --git a/assets/packs/WatchDogs/Anims/SKULL/frame_4.png b/assets/packs/WatchDogs/Anims/SKULL/frame_4.png index 7f7abd446508f135ab9b473ddf1c80450aa25336..d5ae15650435101673aefb689e6d07f4997251a9 100644 GIT binary patch delta 540 zcmV+%0^|M51kD7HBsdgFL_t(|oQ;u9XcIvghM$>E%VdQz37aY?G6_Yr9=rtU!OAE? zLr+o~jm1iOQYZ)t-p7(djwO*?8-J(qpzme&duQKoo|zB!fkzhe#FCT&#%2yK)Mac% z;0SUdtN|ci0C4M6Dvtvg0U(rxHBtbK$F0^^Rowv)0AO?&fd!b3?Rz#oSp(oL02v=t z$ytC305)sgd=CT2REX1+Bk!$Z3)I_%2TtRjK zI^j$~%>Uxk#ROq)k-MtB{Cn&th#la`*DIIg3aPCKb^w`u@VFsf*I5`ncQ%e3okGiX z%~q7K9jow7+zwsyO*y_@vr*bZ?X^Fx{5s>4pN8 delta 516 zcmV+f0{i{V1j_`FBsdaDL_t(|oQ;u9XcIvghM$>E%VdQz3EL_tG6_Yr9=rs}!OAE? zLr+o~jm1iOQYZ)t-p7(dk0Fs<8-K?L>U){}-r4v2o|%C?;E}}~u_R@Hv6=k~bs1X` zID%{lH2}mj0B)Q}C+-iMQ)g1r<07i!qSb#!o-?8bbH2_`%knus4 ztOck5U?;4b?_mI$sxc@9NDIK^i>vut$F}K7$U`7(-N%2Sfx!KH_05-{1Tu1P%V+@ekaFR{9zsXuR+6~lZgQve~$BYwF7{dEqFD% zvH9+kPM+~&8~OZN>VQw`kt=T&)Z|3Dxq|Efbi$dunE%0t^9jP-BDYn0`RCYo5Iex5 z&zCO96;fLf>;Q7&-ou7?xyI<3({beRG+M4}wxWdXNQE!rX6Tx)%JJ!%jnXa}Z_h5S z1E46qzh4qdOXN3-Du5hsJrH-#iAGaA-Cf=W)8gW0t@R5`v2~DRGkm820000J&+1lR^7qP}oik4CuTHBB~+@yVZ zX7JzcJOBOfcg}fu065njGys$VNDSazqERgcl{o2Ld)^wCCk z!m5#rY*P%b`yVBOo}p&u|7z=P4*(qxFc`nvLje;2a=hT8Y>T-}UV{rDBoYzLVdSm% z;{~YKs3GpY7&oM+9_?=gg9d^Po2WH&}{raS<#G81Bh z;_uOGOB$f#!k2HAv*N3l;o%IT@xxp;s0&@TY$GV=8FzQ0{gh%@nZE9w9M N002ovPDHLkV1n*o3+n&? delta 577 zcmV-H0>1s&1lk0UB!3}EL_t(|oQ;w(Xj4%XhQE7zqc0WVHW(=sB+&>qBHBe99Bwtk z0|(QfB1UPK;-+H}mxn}%PC;8;1Pj)|6tOr2RK#cpLD4~|i&*0(MN26Ot!;R5cuD&5 z+QEOj@0@$?_y6bN0ASs)&;U>YAU3qO=Y%u>2LOnwaLP(+0DlVrb0-x?0?0Z53(r3f z54kx20f3e!i5;UuG7fn6JZ&46ogH-Bfe%jLZ0W#^wSiQiqm9{8M0Z|MSC-g9qJ`Qc+OH%bdc40mC=~6FBf2LW50828%J(047k|Y>xi)gn>)2^ieJjhgk?H0N z!bj#V9wk{U7Mn=fGf$Ewb#V6Ac~b@;^EWhYRIeTCy9^?`Ry`~8*A~~Vs!Zj+?ft^;p4zA7Q*!aa=%L>LG-S`S)BFAbT~3HIk?Ia{ P00000NkvXXu0mjf(ZLA2 diff --git a/assets/packs/WatchDogs/Anims/SKULL/frame_6.png b/assets/packs/WatchDogs/Anims/SKULL/frame_6.png index a7438e44e61e65cb8a370905c00ed06e9f3f87c9..163fa1f7f389ff0808f8d9ff9d8e035f1de99f21 100644 GIT binary patch delta 711 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 Ef}wRUD*ylh delta 618 zcmV-w0+s#Z1>yyegMT}R|NQ^?|8o@pD8cbU*!6(|K-akPbAOlmb@XKc(9^N1F+ozf zRUoKt#r?Gd_P5dXqAsgRv@MsZd{{Jai91?rxg^R$W7d2%VQYsOe;h{ilAoS8ipsUY z$i!$>yA}st2U+76y^VD;wH6T5+RsgooME+B)W*+RSH(>9K7S8Z42zoDV%%LTHnk@o zZ0&#N#L~a%v%ulw+Lw%0Cq;^S&XDL4PeTOEq@975nvYFONl+`%Lqp@@#ENtW2z=9y zlq646hEH==(tp8X0IqdM+IbGRrZ3h_Wkm#tApwq@&P7CaM%dk#uGGN+C`NQiL?j(X z2vNT;63hWm$_n-2Gm=4O2Bm#ZDFeeAWuyG++p-DcnXF14@BmS^Pf`I7#qO2=c`a?A zVGCGgn*|Zhf9FE5(Wae}9BAOMK-AF-B3!s|^x|D`5PvOE5m7(b_39^^K|9*+bEY|0 zejhN#10q@bpvS0wk#lNop{%0o{1apXYf4Ti|c|IH%Dol0L>l>XxNJLy(`FQ>E zPesZ=Nn;GEe_eK^r|S-G>E1xkQ?L*&2bZ=H)h-Hox$orXsC z+_?X=_#!|;+7ppFb~s{6Tzhs?Ep-5NA9{U}ZP}rG1Jl6yr4<^n&;S4c07*qoM6N<$ Eg3r@5SO5S3 diff --git a/assets/packs/WatchDogs/Anims/SKULL/frame_8.png b/assets/packs/WatchDogs/Anims/SKULL/frame_8.png index 57aa15f97caaec26947ff1ef2515fabd30491eed..2d73079447ad51f91bb8e137eed2b3e0bccfb92e 100644 GIT binary patch delta 60 zcmZo;Yh|0D!gyw*>P9AgrgzO-mcE_bz^G)icFWf4t4!Z!rZlH0tq}e!e`aFhl7>?e QaSTA<>FVdQ&MBb@01a&!0RR91 delta 61 zcmZo=Yh#P9Amrr#S^Uz)bfpNXyG!X7dL_{G)N(zcavNRNHgJ%Salnz(3Z{Pe`1|IFa<-q7a{|8fQCGgh&k>cLB z5(HF10Kz00b@~pfh5;63Y1%PIr`no>1iTa}ypI%w@#)zMqko^twp;wlm0tR_20t?8 zdM>~zFxQ4rpsf{H!7BARlj{WyWpnyCMUldNeY`hmIt>q{(du2i22K^A0S%XJIRJ=- zQAK5lVQya`6_eaFYS0)op)e?|AX0n+7VyZgY&5f2NnQlrx7rk_Pyfd00000NkvXXu0mjfZpL`B delta 283 zcmV+$0p$L;0=5E>B!B%$L_t(|oYj&&P6IIzMxULPuo5I(QbgK~!~s%LA)kR0q~HJ? z!AHoE_6D2)fq;TC1;rv+GR4}$GYX1Cm#N0j-~4=*;oRb;CRX44A6%M2g5bi55`Vv! zAhL)87*<8mm2*@*ENt7><|XIk)mVFwAm56T{GLn{isz7nP=AbTId;#dv~)E-Xz+2u zK6nK-T45C!ItA`fU6o46buN0hV{vo0GxHZ@oB4Qn-|u_BnT7xB ziw1?X=bKQ`4HSX^$WWnj<%8+a(h0{-=8+E=>jsuq)z39LQ-2FA!@{0M3Lo^0@xkLp zxeWl1S`(=U_FEIa;%;v?^?JnNcvara(6#6S31luPB(e6R2Z~7n%drDG_nIis9?pU{`3|Da9!n-W1Ste$q(&aX?1ppPNH$MpctjDr7vb zQ>jW|+Swt>$$z0V4##=BcrP7kxqk@<p}g3 zPsbe@)3l0Og)1S{{&C*`~7TG<}hnK%MsqcL0gXXjS0go*W^GgLJ}3S1glFUNu!O-MT-zEEL=zz|AZ8Q zK=5NpXP4%hR0?41a67Ox%6_h)$$v^<>0j(=r0_w<7$3Z- z4WAU7!Ac4#Ug(TK~^guBxU?Fxui#+|-bS*{J ze+S$1X4c-iL+WC-w$yekSWuR9Jg(>(ns2d^f+4c08zF z@%gkRW9n9M^@CSuY&3b;Q~aj(^(TlGTlD#-X!Fsy4JQH0GdsqvEpl+IPj3EfQ{DU01@$*a3&%#2BrvZLQh|=+^_TxvDJ5?ajA>D= huP%Nx%Oq3Fi2uopagx%&@D2a~002ovPDHLkV1mp2*1Z4# diff --git a/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_10.png b/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_10.png index 6b63aeea5519381a8fb1cd682bbe498dba0881ea..05a9d20155123841c3afa8d4f89ecced51309797 100644 GIT binary patch delta 606 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 Hu0mjf6FD)I diff --git a/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_12.png b/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_12.png index 2b21eec718364af07fa6616abbd9bc149c268b03..5731add6d74a31a77baa6290b4ab35b2f1e2c57f 100644 GIT binary patch delta 565 zcmV-50?PfN1)&9yEq_5s6j2<;fA8%~j$^IsBDPS$Vw#pA9V#peUV#V0V5v653icr3 zNpD>p?Ap055t|@HB6%@HgXSR7DV9J8FT0UYXyhK$)=l?ycyDCuf0*yh_kREPzL|Lg zrer=EC_C_sIQAAdXEYHRO>=f4YB{-P^jO5KZWv9<3IO8yXMdx;^0L{i|5peQ`$*Ev zjMoBy#&)g&(4ck6#xa3hYxvh`2jHmI6#$Wtrve+?0q8n!gHC8&1DI@)XB0pPRe%rU zkhX+L*g+!zTI(%<0lS2l(7H@r34LJ5gX=#=T^Yjx^8XWIJ=b7&ts`ph>Wo;9pxy`EJC>;WVQv@bjEv6vq-#KI*0#JZKIvKmR;Lw6 z5HpWB^b^F(8Dp?Aq}I!zhgSWo)F}ho`T7h9bS$BVrMEa#7Z`BfI}lYhB%U) z-->(CygqGm#I846#L5n${IS)$WWPp?&zJu`y2$KV3%-}C~k)!Lrcg|r}xSZ?t&$J zgf5)}p}?04B)XFKK<8jbmY@-DA?!;dN|=M)2Dnv_0eC2L7m;w)m!BTCA73@L6 zlis@euxsbKL~Mc(iR8r)4SENOPO$_+c-f7FLL>K}wr;x9Vdlx!?=Zi4-}(GzzVqjS z37L;N%62@H9Q%ozGdU3nO>=f2Dml4k^0A0n-7q;RD*%Y+pMOp6m6y$8{l7wh*hi9P zWV{vtG`4dMfCjBg){ZgcTEV|gI{-(ut^kOHJQY~u4nWs=Yji^E8o*?WJfi?Yr~-T# zhqNV(!wwn&&{}T+4A?2egw|#1Lg)iQ9<=`mbs-N3_Ma*A%qPXFEVb<@>YSSp^OG z{o~eqo-2>bz^L7vQ0y-QC@bhZBSU2Zx}!6N_c;he!A{{SQQQtehL(__PVbc++yzVc z2wge{LV+(8NOUFdfzH8>EI}jQLfDr^lrRsw4REU<1MpDhG4vL}1r)8|gP71Hd=Nfq z@E}%Q3K@ulqi`SrvEpV(E0C1^kOCe5l&1~+vFN^&LIO_^mr)$B00000NkvXXu0mjf Dw;%;b diff --git a/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_13.png b/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_13.png index da338007907855878a8a687b81df2b074ea9dedf..27c0aeb8518ca7583202461a4fac663aac3a5bfb 100644 GIT binary patch delta 633 zcmV-<0*3vM1(F4jB!5{+L_t(|oL$gOXk1ko#_``hbDIo_WG0^$L^6aF(%6NTS_+EZ zMK^{DHpG>J#hs->5!__cD+ongD23ui#f5eeiy-)gE}E5_ZbVFx7|gh`8k7+tj%g;x z#krA5&gS9#&-*;@`ySGntW>DM^YoQnFv=WwAjSfUnX2N+7~62YUWIPOxQk3-09w&jFBQuOHOWJ#6{zFlg&LjkL;v zitUsnU`mrNv45z*M46h5tyZAT0F3T~3j`fT%L=SM6L+5L@JbaLF8tWZdt`Gb_A}1u zeYGmAok?po=ROp6OKxwbk%ksF2JV}tc4sA727g($-5|WaQ-aB*uSYC1xVD%qGsn)2 z=rZ#8YyxjQ`%fcl(^y|A34HVSsnQLGf4YH8cKpi8n}6N6|1y2r)+)R<|MJ!N9VwJ!GwR7G=NP z-Z_u_@w*wyGJAe!e5xcgFIx}@E9>he^0JS1&;-gB!5;(L_t(|oL!SoNK`=_$3HXg=`I@kp1PV4;bU20H4h~wLQ(JF zB{4|ZP6bJ~#6W^BUYsD1=uimKrJ_T5FbRVGQ3v!;JBC zE??#|zwdYEH_U(;tyYm%+pT7I7RJ?{iY+4|Yk}wt0MLuB0e^KzyNnJJ0;f)Oi-I^%+G}~Y7vzZy&$P0u zqG*zkKpQ@kK!1l8B$e5uIcGs0>H(T|z!*ph(4;KLozdlU1-N2E<=Dr9TLqEn*~u8D z`YMN988B`6nTN=Vg5?c!q=upO`h6YXtS%T!?8_8I59IZ-c_gjb*9oQ|wlZogsm|d9 zB}hC^8*t<7A5Y}LTU$^d;mz+p#XK~Ang;};Yr1!_bbtF79sO+O0Iqdkp3(Q<>W@LQ zOZVwJ&c-@?o=usjKqJDtOXLb0sq=#+qu$t^9pC83mU}e09=+`fo|% z=@~oC0{D2^i++!Giq#1-6=?}%(2rdEJthD`gj3x#2A2>XAaAXfTp#d901+Y&F0BJF zBxQgOsc+TV?gQ}Rge)L|mhOuHjDC=ZAqTO??*VwyLmUypg`Y(L=A;PnLLh($ diff --git a/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_14.png b/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_14.png index ec99845560144fdda6129c02d498f3bbab05fad8..9fc033fd895138078ac02cc8010c66f595e9a9b7 100644 GIT binary patch delta 620 zcmV-y0+aoN1%(BWB!5gvL_t(|oL!SmNK{c2$A9fMZHB(%Qm&C#SjI9xNw)0*t8RBVS*uKISVOKp|>1ln%m;sshQ5^ z@c#VHJ^ypwy&#ddnW!Y)D>*i3b=60G#MdOdz7-lLg8DOV4u4z(ATy*z*qRlh_lc4- zw?Dc*pxdw6%It$J02~h=K)pAW0MNtsh{%*N%YaIC2oX2NlmLgvLbP2mrUG>Jb(dXj0qr{$_R1D5*j7OlG}iSBYPFw))+BTjfjyhfc`7i2~nW@KT)a`93ZR} zN~}|;X+olM*?;(?s-JlhB{dCe)sihJ@e{sVK`r57Hc_u^g&w7?2&i2vL}zFS0d>ii zcsqd`dZ3@?#PqSk&M&+WChZkC+LPlppm)ZFn2gL_2syqSyLD2C(Q~;(QH8{2^0LKm zMGsFGaX-l>RM*ux4=1GD_XE)A)3altb0?pUQb!Og(q2nM zy9)J0%RTBNX)K|AA>6{51l(#(*d*EW<&Ke$uLJD(WqQTDGZ8Eruu<#D%-0#HO843lj_>%UMW?3cckZ)7%#4PRw*R zhxg+<=l;&Q_kl#-W@3_bkL37()m1O`kyw-L1y*RB2VLlkKxR;jur(`0&r>Bm zw?BCSpxdw8%Iw1}09>B{Kz%Tk5YR)mg)?Q$GN95OLL`haCBWs05N%hDsQ^bZX(3X^ z7z3abK0v=Q#)ObfXM{Lp35^nCsck^P(Y=a2))+BT4adkSfc_`e2{EAjKT)a`Tp+3y zN~}|;-Ep#V#eW2(tDkw2B{dCe)sihJ@e6)fK`r59Hc_u_g&v`;2&moa)y&Wk0qU|X z@pnQm@kG4*w#IxaL&8m-PQOAZOBjpWCOI)ZqS_F5v= zRj4Og?o%HrV+kDy;f20^0`{<`%4P?hfLE=Fnk4&yvbUL72?64c^hlik62t&rwAfi5 zZxjI3K4Vt|CpBFF(Cs-9)Y*-303LZVrCyyb0(i}KBIm(|?Bmt2HFhC84{*@M{vPia z*8ql^GxB@1%&guNqn7Z#P0a(mNgWaEtpnqSdjPkOzx~Om$O@`b0RR9107*qoM6N<$ Ef?S0n@Bjb+ diff --git a/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_15.png b/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_15.png index e539b44fc5f3147646a039a9b70cde40440acb14..3af96a6553365eee0b5103bfeb8b907d80af9d4d 100644 GIT binary patch delta 605 zcmV-j0;2u+1oi}wB!4|gL_t(|oL!PlNK{c6hM#-x9p^fxUItAU3AagO3i?^O3uctS zY>|Yz2&vf=R7gb2sIGyFHc=|ku0bryAc8R3b$2b=1Z6=j9O%bcrMM6q^?ohRxi+`6 z`3~=S&iB3N$YNnXe!na!@0$8pK zfHf*20;%D?SxszVFaOkh+x?8BYY{vc6mo z&?*%Y1XRE(7=J+p#*C>nLaT&emkc2RRD6gE#!^=RvrC{tbHyvu1kmuw2!lf?Jh0E0 z=6mzl_%WfdFZK{k3_<$4u~zKHTHb(`#R8y+K3>DCV$nQV03b7a8hd3c9ds?4DR&Og zzp{0XjuGwsVE2O{EfR5TLHGE4_Ep$`^oNHZdw^o@$$wbMx{<4e+3Tx-;(XU+W!H~N zZ{cdH1SmS*Uk=yWnC9J;mpc(o)SSkkKElA+IWw8o^72mu?6v(#B0ADZV%dKpCqX#B zZf@y!#Kg)*vWL8>f)C8adPk_M7ju)ERkvec7{>=(zpRC(Z9O&H7Js@;?X+dw*F<~i zt@h)a&sN`-(uwCX=)3zK^#E|8b5#>F3#S5rJ{JpsOU2AdK;1PlSUn>nA%L4#4uIUx rds9Ga@MzWnu%`E{{{%K)M5})RKS`yY9LY=a00000NkvXXu0mjf?iL)E delta 607 zcmV-l0-*i&1o#AyB!53iL_t(|oL!SoNEBfh#((q8tUIo$!(!`{| z{dnd#@ArJqJ0Ad$2}nM>P0hzbHq=$c!eLXN#lpgec%>QTKY!JA-pHvDy>cmQq51hJ z09_{yk@+fR-M}|C#w7w6oWG}qJzqr1KqlVhL>2mho~eFKyj~L705wz0Y2n)~5dkdM z1;82+5rNcD@2n=aMI;JPInNMj5s3h&XpC7RQcD~T_+2kJK=r?fcvv54T4X#CkjwgV zBJ@_NBqM|hSbqg0C^IB09#$i?N(gqz5E4Mehp1pIbp|lI1jpbnl+WVod2SHjS;`oB@@%h}VumR}{k39AO#edwB(UNr|R|~V(R{_O^&dJKI zAC;cM)l>;kw7jX`~cfwS|@WLnG1KMkBT#u%0y=%5D{^>Tg)0Xl0 zdX(O3KUlu``P))D@mvP|?fysI09@=?)x^xg=>VYD#RA|`F>?w~cTEgd_waBC;O3PB tAoug$6p$J?mURHE>AmYefz21u>R&%erJnPY&^rJC002ovPDHLkV1nhNA{77t diff --git a/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_16.png b/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_16.png index b81641cc795d8a041538cacfd500d03a6892fb94..7c5a52ccbf2012275008e1a2b694bc6faf02c70a 100644 GIT binary patch delta 624 zcmV-$0+0QR1&IZaB!5szL_t(|oL!SoNK`=>z<)FEExlcX*3_^fe2PRXcnJxK4x6nJ zW?{k7ABqAy7Ip~gQ0!VABnTqxQV?4wwd|yL5YhfYRDw`MM1S^DmoD2u+Lq`0I?Oy= zcP=yYd%y3SneWX200Y#tr>4_sJ6A{TAc?l0Oy^#-BUf2auz%*3XL$hjdKP4}MF6}W zTm!lm0Mzau);Kv4E&;TUSn%Ys1b`lKO)jSIi{!y=J7Rb7ZAhdD?j6@`HFj)9qy!s# z4;UjcJ|q%A3gs(+#LtosicI~7W@Aj}L?lm&>o(~<5s@Ovj2E3hCn8JL1v18JAr!z; zb!7nj8X(Ckpnm~X8xq!rR7N9UV#9NN5x4?SRFxod+n_;)%bOOhp|(Q_UM)YgK;D9j zwJ9lF@NGc9XNmfWa&bh4zb=lh7W{_D)~i&N@EVd~O=~HC@2)aDkmucNjmq4b zxe^JfPAU)p=)A>FPF8^EheJ#x07yhR8gfzrpkP7g-25^wG)6Bfe6jGC^>DjljZY#| zfOcE0acOg*_#Tk{L2FFTOIm|=eX|jjJ!9^|BhOq&)j3|@48-boniIsvcL0#=^~@s_ zHM7kHnqF=e4G=55J`C`?d$4FiI%cN;`r7LU0ElM~od;;udHw@<1IWBImm|ag0000< KMNUMnLSTZC3>kj_ delta 626 zcmV-&0*(EN1&alcB!5y#L_t(|oL!VpNK`=_$3HXgE$yyBYid{#K1HGxyo7{Aht1Xq zv#?<44@H3;3p)gLD0Zz55(E);DTu9;T6R)Ah-m*HDq*3B2&=u+rOS4Zw&nSL9cEsx zJC~XHzR&OX=J#g?02rWVJT;R}*}Xby7YVfeWG45bUAf8%d4Ef8d6olUZ`2BzOc8)+ z53Uiq768=l@0K_@5flL0N38JVviN`=ag8sg?~CNXZ98I5@pVX~2<{!%95r%mMx+EA zdk+{QK0YMkLlWgFfcTG+2a0t4hh{@eXGJ7OlIzy#JrR*2iF7oKKPw`I>I4~LH4zG+ zP@Ne7uSSqWm4BcCRcjK|np8$Z!Po}p`atV+FL%?1NX7FwS@FGz&qip>d(?^e z`t+D3ng(!0f~H*`jc_ZUV4q0f&mK2__2O@E$}8eun13`xtfvF#_up(uE&&SNlkCSS zi=3K%2cY%O6HA~7y!{h4KS>uyWO!+DbT#2OM7Ca~DuvgOG;2mn`CE4t5e0ePy_TrV zt=TJ)fNG}#K7h7eiIbHT_+M~{i1+~U&__d7DgcDnqjPS485bJE8x_1*_``a*U9rR` zktsmCt!tLJxlnu$NdKTECg&xkLA#zgh{~KXz3?b%8d7zR*Ea)^x}7G1$oLLZ=H95e zgra7)xj@s)&7uJ!`PYX5esvF;{*H9aP670_*PCY|mN|4DpjGGi2Y3U>yjtmjOaK4? M07*qoM6N<$f*Qsjd;kCd diff --git a/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_17.png b/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_17.png index 1c3ed930ab77887c1bbcf336730d2f6b4798afd0..ed16a52c0f45bafee641d22af1bfed83c0e33f4c 100644 GIT binary patch delta 632 zcmV-;0*C#O1(5}iB!5^*L_t(|oL!SoNK`=_$3HW^)t8cPTSkAZmc^7HVUM9juTJ4< z52hi8O9vtB5FR>os8=X>5{bM;C?BI3^c1g+wLD!(L_0O-v%*wj& z@|e$j=kxo`%zFT!5|kdj2khJB@rp!U(u^8CiyJ#D5*O;s$bXAk(4%|+mB|~RUP%B@ zHP~)|Bxsukob+ca>U|+wfDS*jj*c0se5f9JiUZ(!zrcgy7c1r4cZkEl>|GSV>G-j6 z{<(yXlhgpA8wIF_g`4>RfVP(+B5=iv*|J^tMZ`xR*xk}a5!0-#f(Q7NJt88xO5jz1 zVy@f)gvzA~*nccvp+rRTrNlV6Kqg(9wTYn5CL{{59VG#PgDOC{C`Y(w6K(<4mK`Tp zu@0vb)F+XTCw!A=dh0_Pq-c8|iGgYm33`(Tgk7IY^CC-aDSH%C9!f;gZ@!woY8?+H zYx1MxHlVZ|Zc0+aV>X83fDqCV4qc>09$$udP&zN}vY!Mlajq^ZW%j(}n zpcY3DCs50>b2d9`%0^?LMAqvUr@?#;phODi%a4$LS$b#pYF;TO|CG&-dZ*-IYR{4y zX|tnQ{J~MZmdi8`s_0^$kFWC+(7}J==K)+~JUs>g{W4ZVQU<>nw0xt-`(i#Wl9&I@XK=VX*3gD5_#<7~|0$}WU3;zLO7SnrP S;qr+90000)L_t(|oL!SmNK{c2$A9ew-HfJ{jk3 z9`|?u=YP(*=RN>X9fV8o0sD4&vP@CaZ+7*b#r5rFiVHPn=YPd5=vF>}%H$1DuOtAd z7;H5_I%t^&ob+dF)bm2N03Cg3J=$id@S$?(DGq?^{Q?h)U#uzLzC#iQX78c^PA89z z^Uo!6oPG@uxlw>hSh$%F0BCtBA_7;ugiYIdUqpQLf!&raikM<;7CgYGWQmC6%7Iq~ zin&q`AW~|ofPc->2qhwt4;AC!0-1DpY864RRY)9QJC2#2gDOC@C`Y(w6>b66mK`Tp zu^vu4s81pvPxwaB@YaVkNYU0lk^ogF67<-KM_r#w^CC+vDSH)D9!f;gZ@!wksvQp{ zYx1M*HlVZ|Zs@0q$7~EG0U@Ge9!eInJ0Io%M{l0IlYc`9o-y+T*djKX80Ue!mes$D zKsAmY?m#We&e`m&NgGdq5?QZZoCfn6K#3I2mtG-#vh>dOYCb6@|CF4MdZ*-IYEMX& zG~4FQTq^RUtbqYKO5Ot;Kb%}Z-~$_>#r~`aQHX`0Rzv_ALyzkz#0MJeD^j=S2Y2w% zqfwhX({T5*2soE*;kqlkz5(dyqz$>+y`6W!9gY}Ny?ss1Z9(yUjRmf&JfL>zw*hr4 zQ{;fw-ZA45o9H?O5O=ltU(RffG$%p1N1M(8&^XbR0(hjf@mS4t0xubB8QYhKMwk5km84 z1Mt$I^TjCtmT{PxGDsWFAEta`#8n-C*Dc~-cNG|vO-^Uj>G`9eg`aQgDP>Vp9_02p z90hG@_f)6{ZPn6~9c`Gtr$eh&UKEgi>-0#2PDVd&i9Y@acngR>GX{Ulq$)4FGbzxi zt57f~5a1dEr6IV)S_|IiTgWzm*CDXcGBskb5b@8SYXG_7X+o3s=t z%mGvq;19S3$S1&tf&u1}j73L61FVNQ0M7QL>=}!DvKhCmnfgkujCU49AX~&Ac~L<6t7mGRDk2xN=ci|!rM z_kR2vHJ8A^)bUYdIK?qX0E$;7TnLbZ2AFf6`Wv`p>*OYGxU*Z#udng}3*mQ}3S%pf P00000NkvXXu0mjf|80}x diff --git a/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_2.png b/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_2.png index 0ff490abe8eee49dff1b50f217694999bd9763c9..f8ae6d66c29796801d265fb53de188a2f75c4cde 100644 GIT binary patch delta 675 zcmV;U0$lyP1-k{1B!7ZQL_t(|oK=!fNK{c6#eetnjl7x3@ijSM6wW9~qgGgg2!TFK zXxcsPk8Xm&Rf`rbTNJ(o!6Il3w}FL$8i+(uo8VbQyJ{INWI||T#1t;ZfA6)p@7Z)W zANSnz-FwdYE&w_7vH<~PA_N?2P5@#=#McF`1bbqgaw{jx})v3#$V27gTRZA zL~d1)$sh=23x6OsUK9-i1Z8Y$8F6s`W9)cn$_FBgE}jH`;ki#Uh^nQB>gD;BD- zyXT1k{-@b48i4P9m3lzT1(yL(!-pXz5L{pJD7zR&kIg<{ni$;m@5DP002ov JPDHLkV1kxwFERiC delta 676 zcmV;V0$csN1-u22B!7cRL_t(|oK=%gNK{c6#eetnjl6Mkd`%7*g)!qcGWUk$b`_wh$&o*|K4kH-*fD4 zKJIzvyZ3zO+y_7!y=*`LnGAqDhrR&H4E8ZgSIGq}+x-DB7Jo206S{Uq0>)^+1Hh@6 zuB>EqU3?IYIm&Xn&5vVR2-8#lBD0sJyHhZ#|D{$uR8XvyI^Q4!zw4gnFE^1XBosB=ht*|(iT z3@e42F!Zh&;*g@Q9Lj_SIH}ggYw@)(`><&vWEc)vXh|Ia7G%LnZB(>SIhW^jEpOrg zZ=uKk@E3pvBYEuGEs7>yeP$i#!v+g_eYFQbLf+@dLw^o5&_@>1$l#8u0&q``7Z}I0 zcbaYks7J=9J<`Bqdk(sUv38@msf$M;x z5(o(ZpRyYs0$9}xaal-*jsU3rX}6Y~vTczpsC*Ehlu-U=Sto1&Qbzdt5y^%vE?#BJ z)((iyR)5T#i@6wF(RKz^+=h;JPzsn|dtv9Q#*^NG-#YM-q@%`xmr)P}GTplFR4i0( zch40Ayw7vpGy*@oD)oSviw=XJMvg*6z`wETQg$$mUYmWuG?RI=2^xkA`UjSo`AOF#9Q?mR%l^Y&Sq6<9+v6%(Pt6q1z{%J*+^2zoXqj2}cihlmLH-rCS}Lb$R_j z+5rjQmhT{e^s6l;u;9Q_Uxx+p);$xyK*DTh+_8bk#=&DCVWL1e0)*~Q1)^cQRkdjC zrmm|<)e*Y2cI&)Q;8Gh}>q@;_@K2#!%MkygP+PG7)^PDu719nMepKqYJ@chCjV!=Z zw`AB-&HyaUiDi5MpWuIy-U}TtEQA7>4Ee$3w#iT#aGESG1F#_Xmw|#GH$%=EO5fe( z;edi20T|JhZU@HYPu<|AlY54d8cFti=x^5gSnBsS>~;tiaT?Dky;MLz4*- h0O@QIAlDcJegh82va||%t2qDw002ovPDHLkV1oM66=47X delta 593 zcmV-X01)2qrBmrTOB{Y9Kf=b=hK)X&wLsM1wb&~6l0{(xX~p;pw!BJ%o^ zH!j{p(&}vH&b{ZHJ9F*;paDQ&m!oV@w7aYoBK8oqm4q=^7?_a z1_|Gn?jnKo>n$a4;J{*EhXe7}J>$PY!c1mNyFg^);4zReUZ5NSLJuYb(XiX9T8!~h zH&mqN2;IhbtGrO)QNN5amDO&+KZ$ZZL;R1j%5itChDWtF8`=TH&&q0U&s^!RMi$_i zSF&s=rvVmc#S%V%PcVO^55ic-5ei@;AdiOQkU^q0YY2lLLA`f$5-zO>y`Y00000NkvXXu0mjfJH--i diff --git a/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_4.png b/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_4.png index 4fa52fafca2e0348795816c00f7362bd7ca27e6a..f9ce6ca0fd0e806f8b58fe3ad8df0552d616288c 100644 GIT binary patch delta 626 zcmV-&0*(EQ1&alcB!5y#L_t(|oL!SmNK{c2$A9s3c=&WiN5%_{o=xY;+i@Fx~bzAQBH3JUz$9vjZqN$>=S>LY;ckM-H5uzn%aVvM~J# z2eL=nZ|fbSj!wEoHqQ)}LjcwC;T!!T^{2yu8O-&#FS6l|+v#2+@|#>^eNe!69a~$Z zm$arC?IHqwDSx91_*8eM_za|g?iZwh&l)~aS~MdM#NSE!_%--+1x!U#P2y1F32>~b6^E!78V7c}yfLbo} zH~}Q5^@)f5bB3)W8l{O)ntc4$l;~*;DVB6hjWb@=Rs(# z;WpGc2=xEGPO-rl0mru@)ngdS1J*Z-_MB;}{`e@Yg*G!9`I*R4>k=KiHewLRC-W|e zJI77Y;%j(-Jx`op3=HF9KvTSr;;f??!=IPQ5pZ<6Y#8^h2vNmuI-I@KEMM)W~}Mc`}{ z*dA&Vg`h)Mi4Gk)b+D-j#EaswG6oN!d#YPR-~^%2*Ci4Uf!*>TxKPn1>pUIacb(Sv z@;vjO|MT^K-v^Ro16aU_0eaYV+yL2-e z6XJwm%~P0hO||o77!>+14Vh|t91w{{bDr+w!1{1zH3#@@b=ln)Vz#fQNBd zZMq`0%{%QCl(t*XfBZG~mIG+5tEn1*Wl+}DR2_g0(f~nCt;GT01iD}6jsYy!ehE;^ z1RlqM_>`Wjc~%dZ#* z$cMB7WIp$(HGrVih+y{~h)L9psrUA&CWTPnp_OKnPc^y-*F9G}$N zIO?7>No)&~W$ZfH zm9$y$z?mQgs#G*Du;W3F3}hC}Rx0{Sw1XOXWa*8nTwfsub@|X0;2(sWs7@P9g}?v+ N002ovPDHLkV1mV;C}RKs diff --git a/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_5.png b/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_5.png index 943fbf1cd1a7c6838e18c1aef44db1d0217acc58..445d81f160fc3a3aa6da5da3100b7ba592befd3e 100644 GIT binary patch delta 588 zcmV-S0<-<+1my&fB!4VPL_t(|oL!T>YZO5kho6~SaqpT8M?SF8^|*kh5D^3=F}DH5 zBh@9|SzjHSly+HzLXt|t6)6|7I8*3f5Iqq@u?g4+X-=?+g%UNARWAEl%&ggDntkWT z^ZwqCW#Io&S)gMV#2i1`0B9%%Rw!I^!k@kqrW_hf*l+8iBY)a=t#D_@5#G41I{z%R z<{=T3x~iU)E6)N;>4R1?J|dLJ$EMCap1^65!-cLT%5~FYNF?oaGLzMSn#kdJ#S)cD zHKrz#4tERyMSnd+Lbc2Cl!x0O-+|>Qw^x&SI2vElEHbU-=1e z_UA#;KjY&~PuuAxq4qXD>Wj&T7YYC+jBWz#Pi=eyIDcqevBcF-CA7hFWi*hmm|GC2 zU%mG6oqBJ!^FXn9P%wFc!slg<3y*yJDs=WdW_H!K6VeFa_tsY6gi;$5R;xF@ds%(} zC`p$ykC8pw+QwHW+#4ZO68-r5A@ZsE2q=XUft#*z-Y$1;ICSH!L;z-D z#*KN?vqiO=ozS_?h2TRy3;<2pyZ{o$W?Ov==+0w+##0&qj0Y+JxU|0Me&pIF0OieF a4d5S-!>c69VG&^f0000#hNJcCErGo2*OE z0%IN!LZPc_X}aP9&`usS8_`IiL_Rij>hT0liySR?jiOlddW?xAola`9?o$;xDwm9+ zRGN;ciX`J54}iS886YCVspYP{x*sYLNt}MBHzG1*Wdw2}GE_ZV9N+-MY{zbkNSwegB!8)Aim&%Qkd z0PF3DPXJ!Yrjd{~KoH^qn&&;F2e>!~KvHwg=-pn1h8t_CWm1&&RlftZy{ zgFyZ2wT}1HdDG7d^7%o|%K~zrS2+$Ixn?SKIv(@;s&7FO0{q_D@hvE{@Pg^-8{eHY z-UpNtX;d)B+#S6ulQf%+x~D4zTV#2B<&9yq2=Be1J=v+xACpYy(i- czEubQ0guD0Bp!|BdjJ3c07*qoM6N<$f`}~-tpET3 diff --git a/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_6.png b/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_6.png index 062068c64c82994b57b1da53e3569ff20eb88787..09072c1dfd4b8f45682ea0d9405d0f3ccbcaa71b 100644 GIT binary patch delta 576 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 a0O-HSh@BbJrGUHu0000S diff --git a/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_9.png b/assets/packs/WatchDogs/Anims/SKULL_SPIN/frame_9.png index 7aef57db1aa20f3de5cf82e2426ad851636ea607..99235afb97182682af741a8e1f8c633f44a16974 100644 GIT binary patch delta 596 zcmV-a0;~P*1nmTnB!4tXL_t(|oL!SoNK|1I#eeV5IFCW;B}|P$G}Qz_VlFBq2w!IL z7A*|a{y@|wXw}kaymefK8YWfV9Z!py})Szz&h>EPzXR7hs>r zpDO@9`NAO3D>6B*8E5f;QIW-UfWuHI0wVIXecRJ55s6Hbgp-ElI3jhnD_q#1$@0CK zC^uxJAY&f1_g3de z0J~@uUGu{MK(@W8p{JfKI{?{TH?{3b*d0LRFVE$axZLpt@Ygzy{8GzvZ!N-FqxQ9@ zVgpv{aTS2uT{GB#b@c`S&b!~oumR`QU<44aU!2g;)qgM#5)@X(E@b~W9M~@MQdZQY>F;jx^!!w`d7wqQWy`M6TTK-A0W5+M zR|&fekcPfil_(!Dnysj!bqw$-&|>E5Guge_vMN5Ci6vLm%vxy%fN9SIh~0wzeAdWZ zO)Wom=1l?I$e1J{& i)8+<1yzngs*!T~8+?!~LRr%up0000J(1nvZoB!4wYL_t(|oL!SoNK{c2#((e58|NWPFJWp7qNyeb5_3@@LHII@ zw`gH7+8>D81g%;ct$ZzlmJtXAEhY$}K}htQKuw*9W$VRAvEO!rK6Q zM1EZY@W~g7K#$1esA`pPbROG1281UlYSKjx&nKl-8VYk z1DM3;&iTOrAlp__(G!oBQvlf=*R}0R*cCwJFVE!^xY+&)@YmW8{ZPtNZ!N-Eqx!jf z!T?VCVFiGjoiiA~xqMB1d-L-M21vaqMgZ~p`EeCp4S(|>L1AU&oQm$8T7XnwrYbr| zZG0EtB4?i5`oD;%-a}5A2H;%^wibD5Cu*qa>uTV1e^1tM&+e+}A6-LFC8@Xz;1CSC z3Yal~4D_~;Y!3(+&g%0pEhB(80Zn$UUaQ@c)j!01v=d9Nq?*<83;@%f2N1gjeSFT) zTvaLGwoc~(+@lvfr5r!J01)r>ssK%R&HVt)ug^Zvk@FFN(^`Jn2jH8+vk(xb_xS*u j?uX3{fOz3c46yMReB7I8%5G+~00000NkvXXu0mjfyi^!} diff --git a/assets/packs/WatchDogs/Anims/SPIRAL/frame_0.png b/assets/packs/WatchDogs/Anims/SPIRAL/frame_0.png index 32be6dd893dc96982b66670a7745189211c1447f..779cbe6370cbffd4a993f693cc3185637a8a5c2a 100644 GIT binary patch delta 33 ncma!wnqVihrSzi40$T=#^A3z1&rGs)8Gyjk)z4*}Q$iB}#3u^c delta 33 ncma!wnqVhWQg}mSfg%ILc?ZUhC?(nR3_#%N>gTe~DWM4fwG|3C diff --git a/assets/packs/WatchDogs/Anims/SPIRAL/frame_11.png b/assets/packs/WatchDogs/Anims/SPIRAL/frame_11.png index c4463e062fb4b0a387d20a4c644fde7342a9fcd0..726a97d485389179850da5c7405b136187c421f7 100644 GIT binary patch delta 561 zcmV-10?z%*1j+=EB!3Y}L_t(|oMq8Jj^sob1@NECwX}l~qOd^hsi*sw$p{O`H zWv#WA`l1S&IrlKvK@z+r-FO&$*`j*^XQSzZK|+u)ePD`MQm}Q^{K#Y28+2>8YMH)y z`e?er`xjH( zb(O5!fz)0&eAfhNR;<_;+((Ax$^(76aKcsge;BkYU{n6bcup`}OJF2&FZzr(-?aM| z$xchuZa*xw%Ga1adUV|F!I#({Qg^+_D{T(t-#gMTet-M<<|ox`4aK6SKMrN<*n(hY z^fWyGNSAiWyv!>lY;E@_n!mq&mFW=Hi88gDPv^LXRSB4GMqm7CKonT5gNJA=vFxT} z{T`-;LDkI7HqG1UCn6{T15SXciUyh z%~{u$+bXuG&VoQ{=~ygX)o^yoPOY`nZ>oO)xy0n086^)k00000NkvXXu0mjf{3s1q delta 562 zcmV-20?qx(1j_`FB!3b~L_t(|oMq85jwD4C1khJmxpWyLrVNZV&~`~&022dk*HKn@ z++e)UMF?>i4uFA?gE#<3sKFWsDM!MnMKzfi)w49h`wGR6_z~aY&Z)rd=9mw%qGjl- z+ocaWoeZ@DsbBgAoYSFnL0sZ9r;ThIa7c$$-&%Ie-6|LitAEe=N|{6)9T(@;szXt6 za>`n3E%ikeG;{7@u7f0aOS~Aqu2*0raxeOfH{Z1T zmzABCsNH^8YL%}sebnf<+l?=_Kcw!uk5}3p%D;D{Uw{1e^UY7H*&2#PO@AE9*0BY_ z%;;%&{*i9~zImBfO4!=2Q8a&l`zq5RtP^EwH=oXN4XY9`-Hg8Y(|{W)Y7q7x~k#ql$}~@sozxp0J+5EoF=$fNdN!<07*qoM6N<$g4`7n A$N&HU diff --git a/assets/packs/WatchDogs/Anims/SPIRAL/frame_12.png b/assets/packs/WatchDogs/Anims/SPIRAL/frame_12.png index aff220aeeacbd466d04d4461dca1c2b989b21c1e..f213df58570b1695b680867285b05d310dc41b75 100644 GIT binary patch delta 555 zcmV+`0@VG;1jGc8B!3G@L_t(|oPEM*ue=2#0|0Vt_y~6F2h^6o5r;?A3 zPd#c|#>YgbdwY8{AWU1cS}$h>cWPQJt(VU3E|SL7?tjVsyNsWH_u?H9!q0E)*4VBz0W&Pj-{P#-_@gIY3DX9bjFXHPxZwt=xd`KfBDRy(?wsc;WsxA#;oiw twy|ydizFSRTN@@RNesCUm`3(H<{zzU$`62CySo4Y002ovPDHLkV1i5@6Nvx- delta 559 zcmV+~0?_@$1jq!CB!3S{L_t(|oNd!Rj^$Jk1>o=2v&Keh@f>!<^9n{CPB7v*Bw+z$ zy#b^NNRUvsAtqo6NNj+B1zaM?=$PngL@a$o;1HSH% zRjc6@9IJaTEvb^>usVA$;E-X(#C%w^Y%7~nem7XO4pKHvGch+jcg2l78kS&I-EgH? z2zViLFc10^r7K<~nDlk;F$v!{#swOEj?x$zYNr#KCU<`__N>-Gr~jRYZf#&XJ31BG zs-~I(y`fNvZGZ1$FlIa3#@YMs_i67`;f#B2@wwy+ff3i&_B{pGw7PvJPcFbd$Rz@k znk0pZaF>LrCW5F6*CC{8!_Dfqz@CaQh@<>AU$U z<%8o>joOy+G0^GW-X0AI)7Grk%UQvlnifmzrL(&WrGGKCdvSl8@x!lP`~!sWo?p-iTN_RA#g8fBaZo?k~rj7FAgzWbICjoCcZ z#^FJ;STxYDhr`=ZJ4AaG2}jA8rkodzW}Xj$`AW55mo>I002ovPDHLkV1j6l5@rAZ diff --git a/assets/packs/WatchDogs/Anims/SPIRAL/frame_13.png b/assets/packs/WatchDogs/Anims/SPIRAL/frame_13.png index 5129fd169a266dffedccba0139440af7f19cff6a..f861d4e77f8f19a92b8092f892d5660739e5d04c 100644 GIT binary patch delta 557 zcmV+|0@D4_1knVLFMr-f6a?Up?xiwOPHEim=V zC&GwNPKu(jcF{8S{BmmURzznoOikWd+WIpg%f@fWD{31gDR;c8;enu{-%gQ9e;QetjO=~T4TPZMWfk*K_o0HZ?;}ygIC4_V{HTrQ`~QbE zf63?{Q+F`UPnylThI)8>H}zx@+Lewy;~;GwEAGC^(tq;3;Th;_Xwvi8s9fdUZ&JP> zt`C*$x1WCL!lj?QEX{0nX$cyX(-*U?eMTShyep+yt;CdRJ@76xnkA4wPBquuE*64G z8U22zo1Yd-O>x^J#2h6R^IPbPd1DOAfADH*;bb}~&3mZ%Y&w|&>M*jCO~leKoy&7h vt6nz+YbNXOx16trkytz7-#>FRE|T77SpnHM9@pY=00000NkvXXu0mjfRLv1X delta 557 zcmV+|0@D4_1knVLFMr)u6a>)2OClnW4~yx3XD%RxcA&R}EWu^U6e&^!@{?-=Ntx0> zHjpJyaN|;4TE<9Wq@n}?Aq0xg1;75c%Qu*rd*{w$pX(L)RXq!P&5EA))<)w_yHH9P zH)8GO7U_Z8Fb?`KHM4xnL*=2Lg-j*!Btsb6DGKEDc&m$wEuEof5uqE~1;%dq zL>TbN*=%vkL#r;=V8h^gmAAzofDjmm0;X2p9N%@kv zIaIRWe)^S5SAOzxs%EPzOHg6jy_gT}Gx(6_dYY=$N{pGtBkw|`S_1jwSaQkDVj&n! zgWvD9^YdbFTERxP=SpnHM;eyRc00000NkvXXu0mjf?2{QL diff --git a/assets/packs/WatchDogs/Anims/SPIRAL/frame_14.png b/assets/packs/WatchDogs/Anims/SPIRAL/frame_14.png index b7cac981af0ca109abf7d45766969f57b8bd4525..8316770e145859515106f21509c0b8bfcf45508e 100644 GIT binary patch delta 544 zcmV+*0^j|*1i1u|B!2)&L_t(|oK?~>ZsbM~h2gJDghT^^hoJ%k;t>>XVhnu~oxsoy z)DRpx*dyp927LiTN1zP{o4K)2&|b7i2ON2KDr)?A?^ShoSsmxJ6%JdzXdYrU&6ocU ze0INvS+zMV@K|i_RIA$zx7DK?B{fHIXpXrLnjgVyfaRj9Ab)Lc=j+hb^oc{U$z`lT ziA5@hEKk)MOV8|*d(Wdmuyol6eo!=P%!4Z?fHYMQXQGraQgW(!XOe;EsvjFA0eT4*HD{A$||M@NCY17rf%yY$I|NX;0l z1HWU*amsmkvVXi^Nk#q{#SW&fUg&el5GqRN^0_jWDT3Uey4Ky23jNzp!w$RsFNW8b z?;592c&W2@5C)^xIaACl{X1BEQ@e1MSr6d(R5U-XDo8>*`3!D0?QhJSWdmVMOS(!VjKu1Is=uX>^$KA4#^8Of^5JH}CYjPB_Y##BO?bJ3|22wk1VKOV% zTuNkNCfAGX=9ASb$jj6`xL=|rA}@@q!#{cMXepS=uw}!R`x?YlRAyF+8o}6lFZ}IJ iM~s!uXBnPZlZsbM~h2gJDghT^^hoJ%k;t?j?#2ES}I)R}Z zs3ACXut(5I4Eh3wjzAj@HgjX4puK334mk3zDr)?A^}4$HS)Jyz6%JdzXzpV*&6ocU ze0H~nS+zMV@K9`ys?}|V+v>rMlA04ZG^gAL&5z(Ez;aPlkbgF}^L6NI`oy8wDg+>C+ueSYgauUcpKqhd#OCK$W)Qqt@ z@H>_qXP^5=%YWOGROFvg>|pBZg+7-Ip`vsypDJUSBFO#u*1ET(LjU^Hu)}Wui{a(@ zyT;iRp6l!lgu$qF-YMpl{tYa?sa-hBtnXU>uXq!I;k_a&-+;8l@ZKYTontJMoZ23w zvtr-Yw=L6E-tNAFu{hT5o#MkE<%=G%YC~1^+*{0{$A8eS%Ce8TxAd<}X?gSL8+j9k z9jw;Q(-$2xv2_T4_WGGI2fA|_@*YSVDeue3gb?zCTa%NJW%G#NZ0Bo}WgxY43X@s6 z=29XHGr3-5H=nFlL0+cj-rW){5qV);9sbF4M@zv}hAkVm+}9wcqB65m)Ck7bd**LP j9WhoqpBi~$QM&&C=R4AVQFlZd00000NkvXXu0mjfm@O7Z diff --git a/assets/packs/WatchDogs/Anims/SPIRAL/frame_15.png b/assets/packs/WatchDogs/Anims/SPIRAL/frame_15.png index 89d6e1c7820d1dd69689326212cde642a3166964..357055d7f1a8f0ab59aa14b60d0799a1214b7f9a 100644 GIT binary patch delta 181 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 diff --git a/assets/packs/WatchDogs/Anims/SPIRAL/frame_21.png b/assets/packs/WatchDogs/Anims/SPIRAL/frame_21.png index cb2da59f0a075ede6acb8ab4ba380d5626e230af..47fd8624feb50aa9fde9e39022f692c533f57fd4 100644 GIT binary patch delta 256 zcmV+b0ssD+0-OSnB!A;cL_t(|oSl=wZNo4S1cw_v^i&5{CnAtaQi)ZXN?{57nGb@_ zBY|~C3$fz+?O=CxAVn(ImEQ@CMZg2x0Sb-BT)Bu~z_y}-n=Dj!nIg)A@nnj8Vn%7q zyDn1|Bt1MJ^m?Fx9(PWCeV@7Gr zJ1$cdB&X3f8C1t6*mk0Un5|&|7E4sRXF*<}Ua|hRK($~w3V7`*g!^dV_4~6$xS?j$ zN#cPe_r&K{(pyDAgCj<_*&_wWt_7G+^x;EEXIk$Y`>W*?(Hxw%|71KIoLA9}OvIjW zDG}{A$@4D1EYX0AB@X|(4G9FfOe&&9r@yReZ+~b+zv#XXv+Ock9syTuH5psBG^Cni>A?6q$~4H{Q`ZB1m%1n@>cfS gfT!ZdVukVzJFh+(X-fW@-2eap07*qoM6N<$f{43LZl~D>M5E7ubQ}!<4 z^>Sje8SNe*0qz~s+6rM7gCtre+AKO4wULNA^8k}3B2i{Oz^sXYUB%$ToQoe7FL!hd z#ob?SSYf#OiW6PAov1j`l>3z#b(t_cuI%!+BG@t0T?_N)TRK;q5%b-fq9v*VNSO-tKY2HG=Q-7cg5EEU}fHZ2#7GPtp zJ+a3QRBH-j)X&C<$QRjUI2^|wQv%>85En0XZH*9^m3+*=BXh&e!Q41slPi$WmRfVs zy}vc;I02GIE0M0CQau*j6x3$Q{hb-UC2JXs@tK>&8V}AG^bP(l*5kwe-k(58&H zji5V%i&pKi6gBV6&vw#f;`iyE$RVBf5Z#mjy}52B5)5!6*jIG?`TYVfcT?=$4=Swy O0000xDC0XeS+IQ0Sezr9)nlFAxQ2D z#C5z8X@bBa2)ckkQi3VX(m_z#nMxdEW^?w;&pEsB|05Z5H0H~}-mkbOfS~KgKnC&(0}h0P&5!?T~dS8YRV2^ zYt$ZDu><9X+%T#~!wAR+>CA9A4n3v>z|TO4o~p_+nqNz&lD7qL&ywMmz>;ygK|2=H z7MkXQdwr>uI00hq4}mVHR6QcDaw;?B_Qnj~k+uwm@t&E*Y7fpZs_FETngZgW85ty< z0@{R8+X!?Aa5&bgJyznKd2AR#B!6#7L_t(|oSlaIJmcs>1GBNeC%TZs6qW?3x->81`?^JQiRXpX8O} z8We0k(qz%hu(20PQByWmH)1m|v59{vQehbcZhk4+ae3L4JJ2zHfqn_1Un=^8)u02| zG8Ok|0_)Z>-K%_X zshW%lE%oM-87gz96ftBPbsZ*v#HH>pg-q zlPbQuadQ0TBG37LeRnl2S&0SW!>^}I@Ks0P?9pf?jZeYc&3 zk$C$9E_{MD10wi|Ndcys_DEtEMPUIl)%85KH3e{f7NcTL03Ovd6a&7LVEX|IHFRt( qRQf450-`5*;-|tYMJ953>%V`Rf!A(qMV0^n002ovP6b4+LSTYz#;-{L diff --git a/assets/packs/WatchDogs/Anims/SPIRAL/frame_5.png b/assets/packs/WatchDogs/Anims/SPIRAL/frame_5.png index be849968880a72a8b60f1ad59fbdc5000da9674b..5693c98468384a3c313adb4b571615ff310492c1 100644 GIT binary patch delta 446 zcmV;v0YU!q1MvfpBpSF$L_t(|oQ0DyjuSByhCh2o$_OD%wn6FQkv<)NFiRxN%J@;t z*gM%~U-|3%f4^rx1HdRE5&_Tvyy0%(g{xFlK;V zYQi=GjHzXq2$1?F*dxG$ZWfthq_t6i(Q$CqQebnw!B?Wobm9`*s;m+_$sZU)wInS1 z&b4WWsNAos8`8QGL34Y5|L$XMo%>aWx3No=@I!`gl$v2!|A3zZeI=X;KrfZBSPy(c zS7NHxIeP>wJNC0sD7;E+In0(qVYmk8YlZ^#d&X;M`0C<9$cnXH5E{)3rkB&8GW7qf zf#9ko@%{89v{gIh&!sSU))zuT#b+{Xej+d|gdVtlJ*Q5@kh{-+0n8)_1+LzMr?pP$ zjW;m+p_k69-D8GmoM4@u1q~b@7R~Jul&7?3*mD3>q0G3#yNg*oSkR9IE*R*usze}e zV3Wv|u=HS}u0$kt;Gyl9$%K((Ur$;EL_`*wyvBh{H>80K9tu>V44mMM@zv6EhSTET oX4oyi*gSUER+}#w(>)e||5&1*pl1T*6#xJL07*qoM6N<$f*>f@yZ`_I delta 447 zcmV;w0YLuo1M&lqBpSI%L_t(|oQ0DyjuSByhCh2OWrUC>+n{vokv<)N7?wzwmGPsP zu`}6bUH?{`DR0C>dc8-w4eeJm4C!DggV~gdqcL zQxmR7fFZREI|3xr1a|;<)XgGOjI=TeFnIR9S_*7Vw}eV`nNED-x+<&0R`LgiSS<;M zzW1%$epLR~)h%gViKw}MdwBOTx5~pR!`rb-l?Z)?Z^b5fNH?QZ^iRg2G_c?-{1fjsydkD1B zDaHm1vmcCfL2b_&qVaLr{Uzo?*v+TD>ykir_DL3E)7V34F9*vZ_R6 z+`uN0+pc54j=B;fse=G*$807J98A4w6%i3xZ1NfpGEGPW83GijMCm!g3ELLNaDwCF p-)7h@zu4S%*H)VvFVh?gz<*expP(grYM=lB002ovPDHLkV1g*Z)h7S| diff --git a/assets/packs/WatchDogs/Anims/SPIRAL/frame_6.png b/assets/packs/WatchDogs/Anims/SPIRAL/frame_6.png index d8c4b50192b533c163ddafcbe6b8e2d207152b4c..fac36c739b3d70e079a20e052a1274c6c4ad7f6d 100644 GIT binary patch delta 517 zcmV+g0{Z=&1fK+uB!A{fL_t(|oL$pBZrn%|1mKT9@Gvkm3(%RqW&v_QjrN}cjN=A$6X(P{ zlpk)` zP#BCq_^W3ul!H9eERGX3?V<8OYQ-(;ZIj@m{aie5rE>bxgKpX_aMVO85C6Y?0bCaUbY#>&2QJC3lKF+?=ZjPNqE|D`8q1tbZnk-ZZCu%0OaCei-Fn%@MoAxm|Za{^Z)wu1JDa6uq zx<>zx=;OsB%wyuAS}WTHGvx6x)U4n*?W2ZWY!+&wrSnJ^6~ItBztt9x#ahESZ$0l~ zl>=1{`_go?$P-PzJRpQOyv~N=ky_I$?o#Ox$v)4!9G&qSji#|PjWb6b00000NkvXX Hu0mjfuZ{oA delta 514 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 FV1my8#%llo diff --git a/assets/packs/WatchDogs/Icons/RFID/RFIDDolphinReceive_97x61.png b/assets/packs/WatchDogs/Icons/RFID/RFIDDolphinReceive_97x61.png index 54c6c3ba79529cd2bab6699dea07a1177a8dd768..2c1c41bddb2bc606f07bdb2517b9e4ea314eca5f 100644 GIT binary patch delta 608 zcmV-m0-yc(1o;GzB!56jL_t(|oK4bQNRv?*2k`$ndzZ7Rd-H=71lNaJ8Esa^>LOMY z0~M8^D2g zx4nDremq}?hXWQTtC<{r z3Kg+YF>t6Qb?@Zu zbWF>hU`Yf3%JK{iWXP}80DwSVd~~GBzfZ&fKuC?Wmw!2@_b|E76&)o5!`1vSi@l{( z-OpaC7-JHRwg>V=56XGvT$d>V6FT`_QoS9!*aq-#LC4?NUE~)kxWZ)*G^7}xxoU#f zO}igsh|7<&`#eVE@|V@tYX2tcSxp20=%aI``RZVzjsO6yHg){Lt$w#k0ziMPWU5up zBgR}a09hI;CiQ`XBtPr|K#jo#vGXBBM*x6uT&+{tdfYgD1pw|>CcLk&iECdqGbRZq uv)z45d$%?|0|45SS5*~SY`E$30{90R0oBm>{2Xuq0000S^2-+XDGTN++)kCZ( z1QnH_D2gLIw15k#OA2$hssL}uEGnGk4K7?DC~q|L}`xU$4q;?&7q+v(xl zc6Q!A{Qez&=YZ*CH8YMXL+|k6|Dl*YJQ$~KH=YYces|y1Vt*nBrlv$J-1p^nOfs<{ zU5E`Rp|V(}NeV{dx+IlHs)QO`E9S)XHt4ZT84WHnB4TszXYE47IwrcH#FrJP@x-Gp zq4gI^;xuv37T0s*&w5473+W$-P)7blkI0-^EOVkoGnBD;5zL!wDEuvro#=mSC~M6S ztAg9;@`;^_SbtS$P5=~JsEX;@r$$WQaSRF0(Oh1qr(cyidM>M6U+c{0gLf|0a1~T; zub!x>ZR2(0?%_+h0oK5k79H(G$xb_0pt&w#IXJm&20*dtObak=N#e1k{rxz!?wv86 z4qDg~EGPg#S&FTK^m;93{+cg7x}tgC$Cd#=j`r8*xPK@2Fr!Wj4Uq1>BEFdU_H1hE zVlO4em`X$Sz7%B$c|3Eb*|7u%n)qI#?Tx$G2Jmk|hu?H)RBd@P1YhP6}rphN1 tJ)H}Cw^lv_0NR>TSQwbExH&ok;2#+Q)zBCk-WdP@002ovPDHLkV1iLFB+vi= diff --git a/assets/packs/WatchDogs/Icons/RFID/RFIDDolphinSend_97x61.png b/assets/packs/WatchDogs/Icons/RFID/RFIDDolphinSend_97x61.png index 54c6c3ba79529cd2bab6699dea07a1177a8dd768..2c1c41bddb2bc606f07bdb2517b9e4ea314eca5f 100644 GIT binary patch delta 608 zcmV-m0-yc(1o;GzB!56jL_t(|oK4bQNRv?*2k`$ndzZ7Rd-H=71lNaJ8Esa^>LOMY z0~M8^D2g zx4nDremq}?hXWQTtC<{r z3Kg+YF>t6Qb?@Zu zbWF>hU`Yf3%JK{iWXP}80DwSVd~~GBzfZ&fKuC?Wmw!2@_b|E76&)o5!`1vSi@l{( z-OpaC7-JHRwg>V=56XGvT$d>V6FT`_QoS9!*aq-#LC4?NUE~)kxWZ)*G^7}xxoU#f zO}igsh|7<&`#eVE@|V@tYX2tcSxp20=%aI``RZVzjsO6yHg){Lt$w#k0ziMPWU5up zBgR}a09hI;CiQ`XBtPr|K#jo#vGXBBM*x6uT&+{tdfYgD1pw|>CcLk&iECdqGbRZq uv)z45d$%?|0|45SS5*~SY`E$30{90R0oBm>{2Xuq0000S^2-+XDGTN++)kCZ( z1QnH_D2gLIw15k#OA2$hssL}uEGnGk4K7?DC~q|L}`xU$4q;?&7q+v(xl zc6Q!A{Qez&=YZ*CH8YMXL+|k6|Dl*YJQ$~KH=YYces|y1Vt*nBrlv$J-1p^nOfs<{ zU5E`Rp|V(}NeV{dx+IlHs)QO`E9S)XHt4ZT84WHnB4TszXYE47IwrcH#FrJP@x-Gp zq4gI^;xuv37T0s*&w5473+W$-P)7blkI0-^EOVkoGnBD;5zL!wDEuvro#=mSC~M6S ztAg9;@`;^_SbtS$P5=~JsEX;@r$$WQaSRF0(Oh1qr(cyidM>M6U+c{0gLf|0a1~T; zub!x>ZR2(0?%_+h0oK5k79H(G$xb_0pt&w#IXJm&20*dtObak=N#e1k{rxz!?wv86 z4qDg~EGPg#S&FTK^m;93{+cg7x}tgC$Cd#=j`r8*xPK@2Fr!Wj4Uq1>BEFdU_H1hE zVlO4em`X$Sz7%B$c|3Eb*|7u%n)qI#?Tx$G2Jmk|hu?H)RBd@P1YhP6}rphN1 tJ)H}Cw^lv_0NR>TSQwbExH&ok;2#+Q)zBCk-WdP@002ovPDHLkV1iLFB+vi= diff --git a/assets/packs/WatchDogs/Icons/SubGhz/Fishing_123x52.png b/assets/packs/WatchDogs/Icons/SubGhz/Fishing_123x52.png index e6aca21ad449680ea675d1f5fae9f25acc7c8738..f601054ecbb79172852165f840fd161d68a0227e 100644 GIT binary patch delta 368 zcmV-$0gwKr1f>L!fqy%G_bl4 zRcs9;9j+>PaWoBhGIYE6rO>eD?@;Fr;I#y6x#ZdIFA zz~?5H03e1$D^-pIfEI&#)f)@}VhF_)raXX&jP1d)=}QMl(|>e2WI&2V8nQXuavK1~ zqw^^3`(0=OnyuKgndmQa&NoCKYq|cw0SJO9BRNxPb%2EPA_6};%sT)yEj~9KH}hQS z6wk~nXUEi%vxm#)*^VZ*;+>YYE^fIQVYz(pP;#b5-w4aqk+xH#LCK39bgA^`^v%Rk zF0TFfJoWJXt4AlYRQu9nzC#W9jy%codg_RL$D@f~s9*PmL$mE{=b3#*OqOZl<=aBf zG4ZvaZ5=0P=l5jfmOO1Ac(7X@M_c>4+E+{|z>~%SLLIg1wo%jfOYk2;fmUHJKHF9R O0000ge delta 368 zcmV-$0gwKr1f>L!fq#x4zTfZf{k}hN&R4ArkDpHftbT`l1i)gCrx4En^=ToE=k3&K@qGXFHmhig#Mpy13Wje`ex!N z7u$Y(o_hHH)khOqs(tA(-=T*5N1kMPJ#|F>bSZ9 diff --git a/assets/packs/WatchDogs/Icons/SubGhz/Scanning_123x52.png b/assets/packs/WatchDogs/Icons/SubGhz/Scanning_123x52.png index e6aca21ad449680ea675d1f5fae9f25acc7c8738..f601054ecbb79172852165f840fd161d68a0227e 100644 GIT binary patch delta 368 zcmV-$0gwKr1f>L!fqy%G_bl4 zRcs9;9j+>PaWoBhGIYE6rO>eD?@;Fr;I#y6x#ZdIFA zz~?5H03e1$D^-pIfEI&#)f)@}VhF_)raXX&jP1d)=}QMl(|>e2WI&2V8nQXuavK1~ zqw^^3`(0=OnyuKgndmQa&NoCKYq|cw0SJO9BRNxPb%2EPA_6};%sT)yEj~9KH}hQS z6wk~nXUEi%vxm#)*^VZ*;+>YYE^fIQVYz(pP;#b5-w4aqk+xH#LCK39bgA^`^v%Rk zF0TFfJoWJXt4AlYRQu9nzC#W9jy%codg_RL$D@f~s9*PmL$mE{=b3#*OqOZl<=aBf zG4ZvaZ5=0P=l5jfmOO1Ac(7X@M_c>4+E+{|z>~%SLLIg1wo%jfOYk2;fmUHJKHF9R O0000ge delta 368 zcmV-$0gwKr1f>L!fq#x4zTfZf{k}hN&R4ArkDpHftbT`l1i)gCrx4En^=ToE=k3&K@qGXFHmhig#Mpy13Wje`ex!N z7u$Y(o_hHH)khOqs(tA(-=T*5N1kMPJ#|F>bSZ9 diff --git a/assets/slideshow/first_start/frame_00.png b/assets/slideshow/first_start/frame_00.png index 51e8f3bbf9fbc9156082296cde0c8985d7fbac69..b464e0c55df5d0b4c500f55b0e970efcfa472b86 100644 GIT binary patch delta 542 zcmV+(0^$9$1h)i`B!B)%L_t(|oaK|hYg17a$3OS>Nh7UBQA(g-pSX1jE-g~}qT=8t zI65>SLMPF|$sc*3g4D&qLBZ1M;8d^<4niSMM6E70;8<%i2uh22#iD8Q^1co)X_Ed6 zp6!0`Ip1@>_j|4pyti_B-7fAzm{hNq@DZfDd|Gzfq9%SCUj< zPSLgBo}{WI$+PqH4Xx$@g|G}Z2TRp#i*O69kEY)|0%)$z01lWJkCy;O&RrM;3z~9L z+ZMhiB_Q7(S#S9C`QT&0Oa{(EAD9$_V5y`zI=l$xQ0DBIk3;eM-mQ%QU?XF|QW~|q zq5@<9tfoGZUVmeLM{Tp%xV60!qpGB)JR840b@Fl;n?yTUO_vx8B8!gCmac!siOMy1 z(r!BN{Nb@PKd{31e+W~+GdBRs`-q700pM!dZ~3xF;6i@*B^ey*sEl8LWgv?M8ouzm zt^7r7z_frc7mpKlEVi56gqj1OGTO+Y{yOn@B#>Zb#Pxd;b+s23Y5EAIc+c7IRK@RWGGvt!bP z(QVDOGk`lX5pGvTauovLwN)vXOrJBYf4kk^^&SB0>;e|L+e(VOHhBxEXcv&~EPv7? gOE2lYofk9z0Fmw!#I*)BfkB z$LIa^ygbiqL~mIBFQ8^JJ&3Z3)D^aQiM>vDMTFPPOVU=_z<+zasb4Ee`XfmyF{Aj( zFHh3CB+0Y0^yQX|fFf7~>%+o&p*3(5Y=EX-KLltl-vt~n&mS!S44*kS2o^NyWVS7Q zNn1dHJ+#^g=nEjgf|&@Nxjrx%2EkIxa(HMS%z^yr(Ex|?x80j-A;4PRfTc2Gc}We( z16WOdB)h`wzkh3+<;IQer39@@YRa?8s}sjBMu|yp2dk+HqhV~((do+7PdIUP%blhdQbflwc7kV1Y&;f^I2) zk{B>8Ao7zj;*P|2gX^&60H_K$2lsfSG{6O%ACK>o(tkL1_U(la*jxb!UC{K%ZTXnb z11=aCUdn{-$~|nZ2pWfwDwq&E0Mt*026GGiqpwUT15J-h|fv;)X?%%AQk&^z=_ c=NtY4krVC{#5-rK;Q#;t07*qoM6N<$g2%@MrrB!9X|L_t(|oaK@+YZOrwg}-;_xmly)fQ1%{D_Cjac4HHb7 z6ALRFQOtuhR;ILxWLv>POKqHB?37Ju5n;qqFhf{$cQf;@#k_H6@F#fTHHUNVJ?GwM zlx_+C2{1DbWX~95jPbw^y$zyuIp7udK(d;igTCgBM`mA|7Jnfl$q@AoPyrhVdjIVU z0Or6DnW;<09$*4oLY5*K`oP)RSmNU#dRWZI(*}SPu-N{~W=ggJ+RicnEv;+m-{@VTd?&is(nE7%p%Lg}}uj&J$%EhL40r+PB?sSJ3rx1pi{cBHa z^Fs#K-hpRv$bb3$&KWXv&a~rH4XJGhk@yZGCsT zCl*#VqL>G1tW0SW$+m)pmfAQWu`_H+iwGl@f*Hc1yPKJJEoR1@(VyTg59i!_&pp>D z-4gy2U}_x5t}(_KO-~oda zsssQWj7bI466ARMbLYqV+oz9f&sQ^9JiPT{SszlXT;22@0AKB&n{HFv$%O%C|HiXw z`2mTwcj0+Gg{ngB;FtPr56viSlzeK}b=AOT>hlAReIKZ$`d zE+8ieT(db)W`_V);F8aP8AHfGkheHstPV|4HiD|E?uqzobgLnKXe!cD|B+{LHVc+M6j^uT7Y<#8S)!F#>AE+O?-O* O0000Yc0QuSVpBG!WJnI)ge>|w-9q8#@ zE?kz}`nvaM?@3}2eaXWuw(hQgGauW&bm+IbfKH^i z;iQS=q{O(^Ar2}sfD$Qcuc@PnL~jlFOoP=l(7kPc8dSTa^#lw)Jw52v`>``^>I zPr;zG-xF}O6^-j)bRMYhf1*u2+ORq!5I>-0*lq+!k{V8Oa*`4Qm>&R3mH?grPpU3x zX28jY=veWJz|@t%+`CW)rvN?^g$BPr9bdUwWV~RMN1Xe15Eg=@%I~Y^($jOuNbB@Bn0?kndcAQlalvOzy-y5y9hC*u2dXsm{{oP_ VAn?OSDYgIr002ovPDHLkV1kX7<2wKV delta 477 zcmV<30V4jA1ds%fBsbSdL_t(|oaK{0ixW{4#eZ{m3}FdoN*9z&D>m73RZPB#DFvGa z1q+Le-4=cVi(NtOEiDwYOOab0f8KYVC;m0#e**l{d!=upjF#k7TI%yg!;Oj@wUkLN zmD`r2#8y3O5dgo6oVlcqTzYW0czCC!#1=pg_%aGFU+sa-2x$WlGXreA8WENw&gWo( z0x}?kk3)c?RQlsNNqVJJiG_7oEX$fY(27J4XRzzMicW1%CRx;hg00`z3=JU zr(n?C>kByCipC8vx(_sPf6?YWIsXb7mV_VbKh=!@BvIQbr0bB8&G|q>W2Pbkh~!9 Te#)<&00000NkvXXu0mjfXy@b$ diff --git a/assets/slideshow/first_start/frame_03.png b/assets/slideshow/first_start/frame_03.png index 898d59f95b6222db42dd9e9310ebd072cfe89acb..c8fc8e1b0bd7f1c0f9fbd4ff2b5d759fce86591b 100644 GIT binary patch delta 510 zcmVZ;}Koo40oz60IU+szAR=PRX;br_YXDM?Hm)hIDdH;7)qgHVwSdvIXaQWQ)%1=R z;R3+Mouga7ZlhBm0Oajje*owKkONdUIv}Gl0+I^EXxtX42ZSrHfsVK+kHm?{frxZ9 zs4y?Rw*c@(q^O%d>?t!*wd*hKCCOo80d_`Y=mm2+Ae$VS1SV_e?mr(GJT}bvdnO{^ zE`GYl?Mz!p4S&!8uw}@N5b$as02nHRdf5U=SdCqDA_lBPDz3HR;D?BGYAZ&;DX}Dg z9_-HmK*zE?15GFr%jnzn{Wtw5Xq08of|EAi&u*e2*`t^LGlyVO^bF2>^Dc$afjOIC(m4 zWuRV=LOQ(KD7S<#aB%$TomYYwg8;_l0Q$_Vev$#`bzrDqQJFG25$Swhkh#?P>Ya#r zz_UyFoT)6e8gnZqk79?a9+8iT|1rNf`!B2i05_HdK|jb7t^fc407*qoM6N<$f_u*I AS^xk5 delta 508 zcmV56J6{!4S|xAO|REv`GBfIhXDpJV`f6BsF2R;I8{M7p1rq~W7fiEfgQLm}@ zs@o`i2>%m-U)D%fy;0>z7id)5-Fl)-mPD;us_v>(xRv?`ynjS=edZ@zMJP`8PNx8T zhBHW2{(fHP08BxgY^8t&Pz%Nj36KG_4j2nxh7ykf41kT3*QoIT^#BM0%saL+0R{`A z1SmUhV}MiuT6nXWhlK!8%k1OZPuJ_auPg~PX(ANS$pfPEQyNEo1zDH^OYJFNAixbg zNha_oYxn(>A z;;sFCo&gN&jll-$_#Qe$RKni4L&($j%{PyjC1T^N8B`#4-QwQufQd)TU#RXPVYMy* zgDuGNZXO}~)tkd-Ce6BpBgF!`!qKcWs%=YGZ&@09tr`+7Al>pqAOkH=nN6cV1c&XwpO|qT~BS=chD|`ZCgq0!!^FpCiC^ zJmgdvoFH=1oqu~|t{U6j-SSXXb)s5pzOP}kkvZ_kMUcTiB{;3NWlsEjCccx6mV^5_ZQuLY};9zIwzg5F20308_E67WZ}=OgvirLUk7i%ecDi zZ9$gz{Rr95wLN@h(yUK7QY@fL9L`Fk+V(w-W!>ahhV(~9bJevGD}T@BH#76Wlv_hg QsQ>@~07*qoM6N<$g531i!THGlsWNP)~seGB0904z}Z z_b;O|kpQ+#)WE7hLQ0lXdLWZC^Z~MScKFRb>H)-z!cZ!awxjJk06y9<0z=%Sr(PHX z3>~nEAZFGDH83pz?DV4H13>Z6@_Xt~r~%9PP5|;eC<#mZ&P0I#YZ?Rir#i+3mfQyz zn4549yVHDnSAS;G4qrZn0Jie18=lN6@b%(YX`vwk$i_qr?g)?~c*jDF1Js9C*y%;y z=PA)G`f;%mApW&r=8|%x5;Q4i%)gSa?E@o#_4N=ys$tP_gD1JL?`N8iw{IU08(eUJ z-Ctek{g`Q{)Xj;=Pmrp42n@gnd=NMf96dCR>dUKO4L|S(2efshs;awt`g%pRl+%QR w<=hXG6E!~b*Uuc6Vn9p*zhK1`2MYnfA10Wnf}z$k?f?J)07*qoM6N<$f*+65=l}o! delta 454 zcmV;%0XhDd1egSnTz^|wTG$FfHX6asAR-pRPKe-k&L)eQ#ND|TGh=4`3!dik4)?u# z-nqvplMwzVf^J^tG=t<-`v4|DijEPm-+lqBZB^aVpS!C1P7|GY^fFUUylcH%LG$B% zKwFrW^@iTk_HGlsWNPv-*`WC?HAy}aH z?_bg~5d*eN)WE7hOu{Im^gt%x&6AIMWFPSknl=Kh-rZuw*{K z(A;Oms*4IM-sfKyS4W4AezMpA6-oAZ2Y;eH= zc7JuD|6`_^P&X$!evDMjLtqF#;Df+<;OL=gR9{{NYd?TDIH0Yms;chp>FX8MQchzI wmNP$0k&e&&^)thz2oRIQFP2?w-a-KI2PT-Pf{`>lpa1{>07*qoM6N<$f`pOP$N&HU diff --git a/assets/slideshow/firstboot/frame_00.png b/assets/slideshow/firstboot/frame_00.png index 1c4aff150b9922ae80e4b9c2d20cd19e93393db0..7df82f8c6dbb73c63dd29578bda1f8b238911a31 100644 GIT binary patch delta 471 zcmV;|0Vw|c1N{S#Fn>`Lg}?jqnzRs_At1Vtl1LFZVik-j6f=Sgb!F?H;9hZ4T-gKz zimONwTq;#iL=?JFDl+v4;;t(d3Spu_vQg6@c4#NLZW1#=Q51WYALre3?|GsO%CHq6 zI3N7V(d>iRp~B?L`dhaLWMgrUDVs_w(*+iF-&2py5Ff_+z<>QzZ00Q+w#IzrM<0 zQSSP|#rD~0=j704=Ew!hEWRFn{4VuDh$qLeTv@p1r`X-9TEd`?p}Kf*+94fRH|(^N zSa!|d2%ah{#?yGBg=N;~OMZT@BgV;nbot+(T@n$;Mo@q%1d$XKApGr&;O5fk00>j^ zU;r3)Qj7xqx&v>(k!;|iKh#;@xAbIlAod)>Uo9p@AdDU-0;xY&_#K`rvqw9??MDCr N002ovPDHLkV1g};=o

    C6OXt#3~q5C}sr@>dDqW!Moz6c(Mrw zl%66*@TgQl5mD$xsmRtJh_{|pD1?m$$wf_r*rnZMyrj(rMN#Z~e3+Sc<{eS`W!Mf7 zTnv6y(d>cPk;3?^`a5?M$oj%QQ#O@WrVA|UexM$mAwG=sfPamR`G!u!rd`eDSI&Mf zXjig5*Dg6rZCSOoad~;Ql)<14ozaA?7`T&ZjGh=puHVK0Co9;W7OMb5=?KVgWvVNo+2MI- z9-K=L?YtXI8Gj%F6kL#Ix5epx#dZMnxzn7;4wHRR3lrt+zeH$xTO{!Zh$ly|%+BBUQ|xV3En!f{P+d4Y>5z`A8+O`B zEPLi|2G5jb<7qt6!ZPjiH9xoC5#!`Ox%}^Emqf&|5m2BCLBvG`2!A^xxV1Rk2f~y* z>;s0~6r(`D?ZWG;NH%cMEp^roEI!@nv%P@uSBpsz2&2b|KpW|ea@MGy<&)?V0rCnFbguWdU?H z$@HF5Ndaz8sl?S`k>N7 zV3<5AR~LN%4}U*2Qv5lPv<431ay7ahK-_|^h8w%J`?%?ADGkj73%&qn!6zm$Is(^$ z?-4i~*$4;i9F`okUE8%05h-9xRDVBZ!d5XwsbwQATqE9%;6-xH>;5Ny6WAXOImrL}-fq~f{|Jh+? zXW15+)?OU@yr&cJwV%j9E2UOz51Eu^Nr33Dx-+YU-!@qJ_J2V)&P;mpL<5YKvH-f6 z6naOg%z@ugDl_HG8WG&4FciUUlu~LBNgq-V34nHBEF=yLz=0}%0YAG9&|3%T!3!IK zDI0QoR&nb(WI|94}DDiw+ z9|4*x02u{btQ2x@c=^#<|IPq@+6XpYyI(|Ictv(oJ$$MmWpWM}usW)%q_=bE zz%HjT(E6$`Js&TRk5{Wz{c@Ss@1kK7V1Il6qnBR}(X!ZhFP{tm0000X`3M;3y4 z#KcUD_c0_4RhUtPDpVO_D2H;s>E9u4)i0U$BY<`seNqU5bbqtj?3JDm>$?Z1gSF(O zn>$)rZ*1OO?e*V7rc(eODga^u7GnSk$BAO2?D>tlHQL`&)AB^N)$bvhUi!sO3%sKsjB)j;zF$?Af`zzZ{HfGKjUnYr5sFQ55xtyap~1P!TXt zv`l(S*U3R4PeE-vCA{hjV|gKUG08nE(>Z5->wnWz{iCk`6EhfTvQw#*&d#mUD*GM2 aG<^e$V{SUxa_+1E00006W)fQPdmq8n{3}MZiGO zGHI8tlY>H@+CO#*c-0ri@oGU!`L9!QL>z=aIDR^Y-IJgdJnZ3VLchzux0NS_0- z0WTlJXa~}f0mUtd*I{edfUyU7u--Eu1x^m2lh(T=D)Z#Zc7L8!{akALaDp~tu}#8` z4Js(Mq1tU+IerbL9qSiB0rS)V?=ysRxELC+aR|XD=-IKI7<%`B&^lFawd%ArLLUk% zaG?vC6@NaZ^Uv3B0T~fgCKXAVR*6(fk_`B8_0`>@Q%Umbx*x-DkFqz59wkFJhQR`K zxC3ywoHFZPkAIxEK7e&9=aRA98f)3546}N7>$FU!(p1tS)3ejF{f|+j>9zja(_i5N zD4JKGWrY(}E;#YBX|Z>E^5xxu^#7TDk03Llx&WJG#98yo*PZ?QKlk1b01sfI7mRK^ zONOT6Vzd4`3=G(U5m1Nf0!%h;J`C0#`2K2Qnsrx=of|)a)=V4cH$LLq^}JzAumAu6 M07*qoM6N<$g4fB(F8}}l delta 418 zcmV;T0bTy&1LOmcOn)0cfH2?}u(Z)^X>Va;F^Y(V;1(7JgjvL55Wyve-PxT#$70@_ zoejGRJ~+*f_wGIK-0O(t<8tvx8T73r466gwa% zMe$u1B1s=Vhc9PeTAdq`jDS%qOO8$`^1e$MAHFlgoPwaNv6#-?Pl`4yR7Jxp4-@m^ zqIpvl)iX(wdXkW&q9;k3s_L@WddA@Iv%vCn^Z4o#fbaZ2em}oCu(f~T$Re%oq=XQ4 z&D&ayZ`XrIE9U|DgOB|{nn22oUu`GOOK-aZ2S(kKPcCrl#PXJNI-ftat>L|^L;DFl z$bE=m?lwf=K?tN^JJ7AHo7i9;ta5nbRRRyD5L5yWGVm+? z>&5_PaSim>Kz(=~l^~O90X0oPe$(BL*%DlP*GRF8pri(VwB3DtrUdN}Vh_$vYWp~6 v8w=W1vc>O#3cneE7}`a|(j8#$q~mKPlR+y>PbS9ik>7XSJmZD>luT8&jQQ&=JC}f0N?q4{C<9OU~7NFkwseFNeLn9 znzywY->wIbR?Y+P7ax0pG=Y>EzuHcmm)>>-4ve}dpIqS9iRCTlbbk8Owubkv4(%uK zVCq8*bGIP^4?-XX+ktLn-NXj-V9i@^IF)G_`}%*gAmwnRlH`L#RtY@FA*ci%WZ+lY z@5TUTaSim>Kz(=~l^~O90X0j&^rpKXvn9Cpu90FFK}ik#XuJFPObOZ{#2%cT)b?@C t?)#xUh}?Q?1Qt99Ag{E`Q||p8egdQnx?Eu%x|aX|002ovPDHLkV1jqJq=f(g diff --git a/assets/slideshow/firstboot/frame_06.png b/assets/slideshow/firstboot/frame_06.png index 36131a25548829283984cecff7d8d2c494c4a10e..c66ae078e0ba9200adfd5157d319c5ee20032a6e 100644 GIT binary patch delta 571 zcmV-B0>u5@1l!U<&}E5F9?RVae3zWK&Mz0DsPF7XS-DHR?^Qo%7g9 z(Xoc2TlZ%@0N>`Nz{^~$EYuWtKFCcRM0xe@nVfobcd)PGV&~CS24cmD7KY09xq(jX zbqu`mh?PPbyRFT|z*dI}Aat!*>OD;GpfFitOEw|y`1%0{RP~$cl&Y$ZsA@KL7=XxM zoBlI+B2tL`4S%TO=P5iei#{bAMsaw(GWNM|f$W4)Kxlrictl-_IZTiPFPcKtwUPuNA|)8Gl|U6x zrf=~;!|R8>{{T*o?9RW)@=b*bX|02T`=mCI=O65`DEfkw|s2H_ujr}m`ho#*e_dF;Vuis%{>4B002ov JPDHLkV1mI`6CnTq delta 571 zcmV-B0>u5@1lu2m zW8jTPq#RP%Z5=KKwmMV+forAG=wbW^#qly*wh3`3*AF?Ms^3&+R8@6MRWq@p0EGV9 z^q;{Kkz(v`K!25Ffx-i`h-uYBw*ctKW2aD|r+ctW@2>Oc{t!8zKC&S?dM6xp=>P;U z*e=^O7-S6~mqKZeRN6u|HhKk3nV=Cv`MuVGrGvp%_s?Pu_!v-EtBC<3QicIr4b%V) zs)+?w*qOcbtcZvht6m1oDS(=%p$v%0a*^g*yQ4oRg-_Nlit$*eFp$+JcLHK z=YPBCmpVV}9qH|>7`i%{JX>o%od|BOB)&yEZl`$PlQgR@2m8KL>fT7n8CDXpiR0}5 zfpud6b~I5DxGp-k&L2;bIJs<3<#g;quY7DL>Aii?luuc#*e_dF;Vv|nE13WQ002ov JPDHLkV1j?I7efF5 diff --git a/assets/slideshow/update_default/frame_00.png b/assets/slideshow/update_default/frame_00.png index 32a22f84bc4806b06d06deda843f10da07cf5292..790085e87f8df8afbbf27bc9fc9f98c2cd87e7ea 100644 GIT binary patch delta 465 zcmV;?0WSXP1M35jB!99=L_t(|oXwKIYg17a$3OSJntLFrQ} zs0a>1=_EQ>9CgyEzAU9qK9>#!p?`$n(B*-G)yZlXC$Cg!L2X{*0~1Z&aj?;s;-Uz8 zro)HtIo~gwqlEs_{HFkMc{jst6_>gCI2sm>Br-1JU0IO}yMJT@jni%qmbd^!22C?; zGm37X8Vz`7F&Hc1X>-S`Rd#WZo+U(~=x74`dfF}#mR z-7OkZ@z-n1!G9Pcs}sHoj=Af_QfPfKEHTX*AM!W%Yc(*8;mpg)IL}DCu1Pyh4E5Iw z>3U<(WAQTSEQll%eqLn#St%T;_+nU!r(0{!=jW*9>?ivtN&gOLD3zs#H-hvjUVsX+ z3IP1Z(5r{tiwPYKPwUyG29o$bc;UWt(MRtj8gS9J97>Uc?hT$m@jLMCHih-Ui#P!> zXc#JHVqoAnP&-Qb5T5zvuiq0%|R<)K02x00000NkvXX Hu0mjfWt-YU delta 464 zcmV;>0WbdR1L^~iB!96akdGua%?OFAwNQ}NHd^dv@)8;$}15P@MCA!0e5wGj)hsB2{wwL zr#d{m=e#fXTqWd7^Pd9572Pa1R9xlKqi9q#lE|b?_GMYlY=4t=G)}u6SmF{888q#% z%Q(7wY&_tt#bB(2$IVTzQQQ8xdvEl)Fl^T!{zqi{V{F z>aNo|AAh~P6n{)0vNGkX;E=mgu7uVX!y+@R^1gU&w^l==7*4#Hj*E1^dbVNz%UqT1sW9;k6(+#dAS0~;Yl<9ge37D@WNfEq7U9tG~l95IY}Z1{i{5N@^|3dO$zIS7jXn) z&@fUC@-Byg#zCt4@XRm&`fZU^ewN{YLZw+3o1gnfXZQwxJf4~V5^aM30000 Date: Sat, 11 Jan 2025 06:57:55 +0000 Subject: [PATCH 57/85] Update apps - Color Guess: Simplify app code (by leedave) - Countdown Timer: Default to 60 seconds on open (by andrejka27) - Cross Remote: Fix Sub-GHz actions rolling code support, animations for transmit, allow interrupting chain (by leedave), loop transmit feature (by miccayo) - FlipSocial: Memory fixes, new feed screen with posted time, search users, home announcements and notifications, private feed option, endless feed (by jblanked) - FlipStore: Many bugfixes, support downloading VGM firmwares and Github repos, use Flipper catalog API (by jblanked) - FlipWiFi: Improve error handling, max 100 network scan, add some fast commands (by jblanked) - Oscilloscope: Add simple spectrum analyser and basic software scaling support (by anfractuosity) - Picopass: Handle write key retry when a different card is presented (by bettse) --- CHANGELOG.md | 11 ++++++++--- applications/external | 2 +- 2 files changed, 9 insertions(+), 4 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 9a10282231..aacc8a743e 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -14,14 +14,19 @@ - Apps: - BT/USB Remote: Add PTT support for Gather (by @SapphicCode) - Chess: Fix illegal move bug (by @956MB) + - Color Guess: Simplify app code (by @leedave) + - Countdown Timer: Default to 60 seconds on open (by @andrejka27) + - Cross Remote: Fix Sub-GHz actions rolling code support, animations for transmit, allow interrupting chain (by @leedave), loop transmit feature (by @miccayo) - ESP Flasher: Add c3 and c6 to s3 option (by @jaylikesbunda), update Marauder bins to 1.1.0 (by @justcallmekoko) - FlipBIP: Refactor to make adding coins easier (by @xtruan) - FlipLibrary: Wikipedia, dog facts, random quotes, weather, asset price, predictions, trivia, advice, uuid and many more, bug fixes (by @jblanked), holidays, improvements to connectivity and progress (by @jamisonderek) - - FlipSocial: Improved authentication, loading screens, memory fixes, bio and friend counts, search contacts (by @jblanked), RPC_KEYBOAARD support (by @jamisonderek) - - FlipStore: Many bugfixes, support ESP32 firmware downloads, allow deleting apps, memory fixes, update Marauder (by @jblanked), more improvements (by @jamisonderek) + - FlipSocial: Improved authentication, loading screens, memory fixes, bio and friend counts, new feed screen with posted time, search users and contacts, home announcements and notifications, private feed option, endless feed (by @jblanked), RPC_KEYBOARD support (by @jamisonderek) + - FlipStore: Many bugfixes, support downloading ESP32 and VGM firmwares and Github repos, allow deleting apps, memory fixes, update Marauder, use Flipper catalog API (by @jblanked), more improvements (by @jamisonderek) - FlipTrader: Improved progress display, added connectivity check on startup (by @jamisonderek) - FlipWeather: Stability improvements (by @jblanked), improved progress display, added connectivity check on startup (by @jamisonderek) - - FlipWiFi: Improve error handling, update scan loading and parsing, fix crash when saving networks manually (by @jblanked), add connectivity check on startup (by @jamisonderek) + - FlipWiFi: Improve error handling, update scan loading and parsing, fix crash when saving networks manually, max 100 network scan, add some fast commands (by @jblanked), add connectivity check on startup (by @jamisonderek) + - Oscilloscope: Add simple spectrum analyser and basic software scaling support (by @anfractuosity) + - Picopass: Handle write key retry when a different card is presented (by @bettse) - Pokemon Trade Tool: Update to gblink v0.63 which includes saving/loading of pin configurations for the EXT link interface (by @kbembedded) - Snake 2.0: Progress saving, endless mode, game timer, fruit positioning bugfixes (by @Willzvul) - uPython: Enabled extra functions for the `random` module (by @ofabel) diff --git a/applications/external b/applications/external index cc24afcb6d..15f866270c 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit cc24afcb6dd2a6f9052376954bbd5cee3f51b8c0 +Subproject commit 15f866270c6d57290a67bdd3d59957a117b3c38f From a0d1d3fa0fed7f6b263ec63686323793619c8292 Mon Sep 17 00:00:00 2001 From: Yukai Li Date: Sun, 12 Jan 2025 11:15:52 -0700 Subject: [PATCH 58/85] nfc: Fix MIFARE Plus detection (#4049) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * nfc: Fix MIFARE Plus detection MIFARE Plus original doesn't have GetVersion support, so detection for SL2 has been moved. Also, SL2 only exists in MIFARE Plus X, so despite it not being specified in the type identification procedure chart, it's safe to call it for what it is. * Fix spelling * TODO: mark as non flipper one Co-authored-by: あく --- lib/nfc/protocols/mf_plus/mf_plus_i.c | 126 +++++++++++++++----------- lib/nfc/protocols/mf_plus/mf_plus_i.h | 3 + 2 files changed, 74 insertions(+), 55 deletions(-) diff --git a/lib/nfc/protocols/mf_plus/mf_plus_i.c b/lib/nfc/protocols/mf_plus/mf_plus_i.c index 4ad2ff8784..bd32956d67 100644 --- a/lib/nfc/protocols/mf_plus/mf_plus_i.c +++ b/lib/nfc/protocols/mf_plus/mf_plus_i.c @@ -27,65 +27,51 @@ MfPlusError mf_plus_get_type_from_version( MfPlusError error = MfPlusErrorProtocol; - if(mf_plus_data->version.hw_major == 0x02 || mf_plus_data->version.hw_major == 0x82) { + if(mf_plus_data->version.hw_type == 0x02 || mf_plus_data->version.hw_type == 0x82) { error = MfPlusErrorNone; - if(iso14443_4a_data->iso14443_3a_data->sak == 0x10) { - // Mifare Plus 2K SL2 - mf_plus_data->type = MfPlusTypePlus; + // Mifare Plus EV1/EV2 + + // Revision + switch(mf_plus_data->version.hw_major) { + case 0x11: + mf_plus_data->type = MfPlusTypeEV1; + FURI_LOG_D(TAG, "Mifare Plus EV1"); + break; + case 0x22: + mf_plus_data->type = MfPlusTypeEV2; + FURI_LOG_D(TAG, "Mifare Plus EV2"); + break; + default: + mf_plus_data->type = MfPlusTypeUnknown; + FURI_LOG_D(TAG, "Unknown Mifare Plus EV type"); + break; + } + + // Storage size + switch(mf_plus_data->version.hw_storage) { + case 0x16: mf_plus_data->size = MfPlusSize2K; - mf_plus_data->security_level = MfPlusSecurityLevel2; - FURI_LOG_D(TAG, "Mifare Plus 2K SL2"); - } else if(iso14443_4a_data->iso14443_3a_data->sak == 0x11) { - // Mifare Plus 4K SL3 - mf_plus_data->type = MfPlusTypePlus; + FURI_LOG_D(TAG, "2K"); + break; + case 0x18: mf_plus_data->size = MfPlusSize4K; + FURI_LOG_D(TAG, "4K"); + break; + default: + mf_plus_data->size = MfPlusSizeUnknown; + FURI_LOG_D(TAG, "Unknown storage size"); + break; + } + + // Security level + if(iso14443_4a_data->iso14443_3a_data->sak == 0x20) { + // Mifare Plus EV1/2 SL3 mf_plus_data->security_level = MfPlusSecurityLevel3; - FURI_LOG_D(TAG, "Mifare Plus 4K SL3"); + FURI_LOG_D(TAG, "Mifare Plus EV1/2 SL3"); } else { - // Mifare Plus EV1/EV2 - - // Revision - switch(mf_plus_data->version.hw_major) { - case 0x11: - mf_plus_data->type = MfPlusTypeEV1; - FURI_LOG_D(TAG, "Mifare Plus EV1"); - break; - case 0x22: - mf_plus_data->type = MfPlusTypeEV2; - FURI_LOG_D(TAG, "Mifare Plus EV2"); - break; - default: - mf_plus_data->type = MfPlusTypeUnknown; - FURI_LOG_D(TAG, "Unknown Mifare Plus EV type"); - break; - } - - // Storage size - switch(mf_plus_data->version.hw_storage) { - case 0x16: - mf_plus_data->size = MfPlusSize2K; - FURI_LOG_D(TAG, "2K"); - break; - case 0x18: - mf_plus_data->size = MfPlusSize4K; - FURI_LOG_D(TAG, "4K"); - break; - default: - mf_plus_data->size = MfPlusSizeUnknown; - FURI_LOG_D(TAG, "Unknown storage size"); - break; - } - - // Security level - if(iso14443_4a_data->iso14443_3a_data->sak == 0x20) { - // Mifare Plus EV1/2 SL3 - mf_plus_data->security_level = MfPlusSecurityLevel3; - FURI_LOG_D(TAG, "Miare Plus EV1/2 SL3"); - } else { - // Mifare Plus EV1/2 SL1 - mf_plus_data->security_level = MfPlusSecurityLevel1; - FURI_LOG_D(TAG, "Miare Plus EV1/2 SL1"); - } + // Mifare Plus EV1/2 SL1 + mf_plus_data->security_level = MfPlusSecurityLevel1; + FURI_LOG_D(TAG, "Mifare Plus EV1/2 SL1"); } } @@ -148,6 +134,24 @@ MfPlusError FURI_LOG_D(TAG, "Sak 08 but no known Mifare Plus type"); } + break; + case 0x10: + // Mifare Plus X 2K SL2 + mf_plus_data->type = MfPlusTypeX; + mf_plus_data->size = MfPlusSize2K; + mf_plus_data->security_level = MfPlusSecurityLevel2; + FURI_LOG_D(TAG, "Mifare Plus X 2K SL2"); + error = MfPlusErrorNone; + + break; + case 0x11: + // Mifare Plus X 4K SL2 + mf_plus_data->type = MfPlusTypeX; + mf_plus_data->size = MfPlusSize4K; + mf_plus_data->security_level = MfPlusSecurityLevel2; + FURI_LOG_D(TAG, "Mifare Plus X 4K SL2"); + error = MfPlusErrorNone; + break; case 0x18: if(memcmp( @@ -234,10 +238,22 @@ MfPlusError } MfPlusError mf_plus_version_parse(MfPlusVersion* data, const BitBuffer* buf) { - const bool can_parse = bit_buffer_get_size_bytes(buf) == sizeof(MfPlusVersion); + bool can_parse = bit_buffer_get_size_bytes(buf) == sizeof(MfPlusVersion); if(can_parse) { bit_buffer_write_bytes(buf, data, sizeof(MfPlusVersion)); + } else if( + bit_buffer_get_size_bytes(buf) == 8 && + bit_buffer_get_byte(buf, 0) == MF_PLUS_STATUS_ADDITIONAL_FRAME) { + // HACK(-nofl): There are supposed to be three parts to the GetVersion command, + // with the second and third parts fetched by sending the AdditionalFrame + // command. I don't know whether the entire MIFARE Plus line uses status as + // the first byte, so let's just assume we only have the first part of + // the response if it's size 8 and starts with the AF status. The second + // part of the response is the same size and status byte, but so far + // we're only reading one response. + can_parse = true; + bit_buffer_write_bytes_mid(buf, data, 1, bit_buffer_get_size_bytes(buf) - 1); } return can_parse ? MfPlusErrorNone : MfPlusErrorProtocol; diff --git a/lib/nfc/protocols/mf_plus/mf_plus_i.h b/lib/nfc/protocols/mf_plus/mf_plus_i.h index 1b80030f93..302f5a1789 100644 --- a/lib/nfc/protocols/mf_plus/mf_plus_i.h +++ b/lib/nfc/protocols/mf_plus/mf_plus_i.h @@ -4,6 +4,9 @@ #define MF_PLUS_FFF_PICC_PREFIX "PICC" +#define MF_PLUS_STATUS_OPERATION_OK (0x90) +#define MF_PLUS_STATUS_ADDITIONAL_FRAME (0xAF) + MfPlusError mf_plus_get_type_from_version( const Iso14443_4aData* iso14443_4a_data, MfPlusData* mf_plus_data); From 7291e6bd46c564400cdd3e9e7434f2c6e3a5ff28 Mon Sep 17 00:00:00 2001 From: NotLukas <126127787+NotLukas001@users.noreply.github.com> Date: Sun, 12 Jan 2025 14:12:59 -0500 Subject: [PATCH 59/85] Rename FuriHalDebuging.md to FuriHalDebugging.md (#4047) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Fixed Typo Co-authored-by: あく --- documentation/{FuriHalDebuging.md => FuriHalDebugging.md} | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename documentation/{FuriHalDebuging.md => FuriHalDebugging.md} (100%) diff --git a/documentation/FuriHalDebuging.md b/documentation/FuriHalDebugging.md similarity index 100% rename from documentation/FuriHalDebuging.md rename to documentation/FuriHalDebugging.md From 561ea531ee8342fc71780920dbd00675248e4fc7 Mon Sep 17 00:00:00 2001 From: Cloudy261 <55560948+Cloudy261@users.noreply.github.com> Date: Mon, 13 Jan 2025 03:35:19 +0100 Subject: [PATCH 60/85] BadKB: Added german Mac keyboard Layout (#325) * Added german Mac keyboard Layout to bad_kb/bad_usb asset files * Update changelog --------- Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com> --- CHANGELOG.md | 1 + .../resources/badusb/assets/layouts/de-DE-mac.kl | Bin 0 -> 256 bytes 2 files changed, 1 insertion(+) create mode 100755 applications/main/bad_kb/resources/badusb/assets/layouts/de-DE-mac.kl diff --git a/CHANGELOG.md b/CHANGELOG.md index 2b59eb2215..a4a8e34693 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,7 @@ - Apps: - Games: Pinball0 (by @rdefeo) - NFC: Metroflip (by @luu176) +- BadKB: Added german Mac keyboard Layout (#325 by @Cloudy261) - UL: Sub-GHz: Jolly Motors support with add manually (by @pkooiman & @xMasterX) - OFW: Desktop: Add winter animations (by @Astrrra) - OFW: Furi: Pipe support (by @portasynthinca3) diff --git a/applications/main/bad_kb/resources/badusb/assets/layouts/de-DE-mac.kl b/applications/main/bad_kb/resources/badusb/assets/layouts/de-DE-mac.kl new file mode 100755 index 0000000000000000000000000000000000000000..471b7143e24c8351d253885436bd60fb7cc4a641 GIT binary patch literal 256 zcmaLL#|^?z0Kibog3t+}_mT#p2@aG2{wVA}17|My_6)xrIdS-1e|2W<#ydMxGw&9b z-n{YT&5PVUYc_1zk&=;9Q1bHWgS`(g#-U=>$eMK Date: Mon, 13 Jan 2025 10:39:04 +0800 Subject: [PATCH 61/85] IR: update universal bluray remote (#348) * add new signals * Update changelog --------- Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com> --- CHANGELOG.md | 1 + .../resources/infrared/assets/bluray_dvd.ir | 270 ++++++++++++++---- 2 files changed, 218 insertions(+), 53 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a4a8e34693..a051f3e337 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -36,6 +36,7 @@ - UL: NFC Magic: Added possibility to write 7b MFC to Gen1 tags (by @mishamyte) - UL: Unitemp: Fixed handling of hPa units (by @shininghero) - UL: Fixed apps for firmware USB CDC callback changes (by @xMasterX) +- Infrared: Update universal bluray remote (#348 by @jaylikesbunda) - NFC: - OFW: Replace mf_classic_dict.nfc with Proxmark3 version (by @onovy) - OFW: More station IDs for Clipper plugin (by @ted-logan) diff --git a/applications/main/infrared/resources/infrared/assets/bluray_dvd.ir b/applications/main/infrared/resources/infrared/assets/bluray_dvd.ir index aff93ef1a0..e231712bdb 100644 --- a/applications/main/infrared/resources/infrared/assets/bluray_dvd.ir +++ b/applications/main/infrared/resources/infrared/assets/bluray_dvd.ir @@ -28,7 +28,6 @@ address: 2D 00 00 00 command: 50 00 00 00 # # Model: LG AKB73775801 -# name: Power type: parsed protocol: Samsung32 @@ -84,7 +83,6 @@ address: 2D 00 00 00 command: 36 00 00 00 # # Model: OPPO BDP103 -# name: Power type: parsed protocol: NEC @@ -134,7 +132,6 @@ address: 49 00 00 00 command: 4B 00 00 00 # # Model: Panasonic DMPBDT167 -# name: Power type: parsed protocol: Kaseikyo @@ -190,7 +187,6 @@ address: B0 02 20 02 command: 30 01 00 00 # # Model: Philips BDP2501/F7 -# name: Power type: parsed protocol: RC6 @@ -234,7 +230,6 @@ address: 46 00 00 00 command: 2C 00 00 00 # # Model: Philips BDP2700 -# name: Power type: parsed protocol: RC6 @@ -266,7 +261,6 @@ address: 46 00 00 00 command: 31 00 00 00 # # Model: Pioneer BDP150 -# name: Power type: parsed protocol: Pioneer @@ -328,7 +322,6 @@ address: AF 00 00 00 command: 39 00 00 00 # # Model: Samsung AK59_00149A -# name: Power type: raw frequency: 38000 @@ -360,7 +353,6 @@ duty_cycle: 0.330000 data: 4539 4519 488 516 489 489 516 515 490 514 491 514 491 1491 520 485 520 511 494 511 484 520 485 520 485 493 512 519 486 518 487 491 514 504 491 4491 516 1492 519 1490 521 1488 513 519 486 518 487 1495 516 1493 518 487 518 513 492 1517 494 484 511 520 485 1498 513 491 514 517 488 1495 516 1493 518 486 519 1491 510 1499 512 57491 4537 4495 512 492 513 519 486 493 512 520 485 521 494 1491 520 486 519 513 492 514 491 515 490 516 489 517 488 517 488 518 487 519 486 506 489 4502 516 1523 488 1498 513 1500 521 511 494 512 493 1519 492 1520 491 515 490 516 489 1522 489 491 514 518 487 1498 513 520 485 521 484 1528 493 1492 519 514 491 1521 490 1523 488 # # Model: Samsung B59-01301A -# name: Power type: parsed protocol: Samsung32 @@ -380,7 +372,6 @@ address: 07 00 00 00 command: 4A 00 00 00 # # Model: Samsung BD-D5300 -# name: Power type: raw frequency: 38000 @@ -412,7 +403,6 @@ duty_cycle: 0.330000 data: 4510 4508 537 470 535 467 538 470 535 468 537 471 534 1475 534 467 538 470 535 467 538 469 536 467 538 470 535 467 538 470 535 468 537 469 536 4472 537 1472 537 1472 537 1472 537 470 535 467 538 470 535 1475 534 1475 534 1474 535 467 538 470 535 468 537 1472 537 1473 536 469 536 468 537 469 536 1474 535 1473 536 1473 536 # # Model: Samsung BDD7500 -# name: Power type: raw frequency: 38000 @@ -462,7 +452,6 @@ duty_cycle: 0.330000 data: 4489 4495 514 428 571 485 514 486 513 486 513 486 513 1482 512 487 512 488 511 486 488 510 489 512 487 511 488 511 488 512 487 506 493 512 487 4507 487 1507 487 1507 487 1508 486 510 489 513 486 1506 488 1507 487 513 486 458 541 1507 487 512 487 512 487 1507 487 512 487 512 487 1507 487 1506 488 512 487 1426 568 1506 488 # # Model: Samsung BDE5300 -# name: Power type: raw frequency: 38000 @@ -512,7 +501,6 @@ duty_cycle: 0.330000 data: 4489 4478 516 481 517 483 515 483 515 482 516 484 514 1456 515 481 517 484 514 482 516 484 514 483 515 483 515 481 517 482 516 367 632 482 516 4451 515 1457 514 1457 514 1455 516 483 515 483 515 1456 515 1412 559 483 515 484 514 1456 515 483 515 486 512 1458 513 483 515 482 516 1456 515 1455 516 484 514 1457 514 1457 514 57918 4486 4476 514 484 514 483 515 484 514 484 514 484 514 1458 513 483 515 483 515 484 514 484 514 483 515 484 514 483 515 483 515 484 514 483 515 4452 514 1457 514 1457 514 1456 515 482 516 484 514 1457 514 1457 514 484 514 486 512 1456 515 483 515 484 514 1456 515 485 513 484 514 1457 514 1457 514 483 515 1457 514 1456 515 # # Model: Sanyo Bluray_NC088 -# name: Power type: parsed protocol: NECext @@ -550,7 +538,6 @@ address: 87 22 00 00 command: 7A 85 00 00 # # Model: Sharp BD-HP20 -# name: Power type: raw frequency: 38000 @@ -600,7 +587,6 @@ duty_cycle: 0.330000 data: 3341 1723 380 454 380 1298 381 454 380 1298 381 454 380 1298 381 455 379 1298 381 454 380 1299 380 453 381 1299 380 1299 380 453 381 1298 381 453 381 1298 381 1299 380 1272 407 1214 465 453 381 452 382 453 381 1299 380 453 381 454 380 453 381 453 381 1298 381 1232 447 453 381 454 380 1298 381 1299 380 453 381 1301 378 1299 380 1299 380 454 380 452 382 1298 381 453 381 453 381 453 381 454 380 1202 477 453 381 453 381 20534 3341 1723 380 453 381 1298 381 453 381 1299 380 453 381 1298 381 453 381 1298 381 453 381 1298 381 453 381 1298 381 1299 380 453 381 1299 380 453 381 1299 405 1274 380 1298 381 1299 380 453 381 454 380 452 382 1298 381 453 381 453 381 454 380 453 381 1298 381 1298 381 453 381 453 381 1298 381 1298 381 453 381 1299 380 1299 380 1299 380 453 381 453 381 1298 381 453 381 453 381 453 381 454 380 1298 381 454 380 453 381 20535 3340 1723 380 454 380 1299 380 454 380 1299 380 454 380 1263 416 454 380 1299 380 454 380 1299 380 454 380 1300 379 1299 380 454 380 1299 380 454 380 1299 380 1299 380 1299 380 1300 379 454 380 455 379 455 379 1300 379 455 379 454 380 455 379 454 380 1299 380 1218 462 454 379 455 379 1300 379 1301 378 455 379 1301 378 1301 378 1300 500 332 381 455 402 1277 402 433 401 432 402 432 402 432 402 1277 402 431 403 431 403 # # Model: RMT VB201U -# name: Power type: parsed protocol: SIRC20 @@ -650,7 +636,6 @@ address: 5A 1C 00 00 command: 1B 00 00 00 # # Model: Toshiba SE-R0398 -# name: Power type: parsed protocol: NECext @@ -682,7 +667,6 @@ address: 45 B5 00 00 command: 28 D7 00 00 # # Model: Vizio VBR220 -# name: Power type: parsed protocol: NEC @@ -738,7 +722,6 @@ address: 00 00 00 00 command: 33 00 00 00 # # Model: Bose 3-2-1_Series_1 -# name: Power type: parsed protocol: NECext @@ -758,7 +741,6 @@ address: BA 4B 00 00 command: 55 AA 00 00 # # Model: Brandt DVDP-7R -# name: Ok type: parsed protocol: NEC @@ -766,7 +748,6 @@ address: 00 00 00 00 command: 07 00 00 00 # # Model: GPX D2816 -# name: Power type: parsed protocol: NEC @@ -798,7 +779,6 @@ address: 00 00 00 00 command: 03 00 00 00 # # Model: LG DKS-6100Q -# name: Power type: parsed protocol: Samsung32 @@ -824,7 +804,6 @@ address: B0 02 20 02 command: 10 01 00 00 # # Model: Philips RC_5610 -# name: Power type: parsed protocol: RC6 @@ -850,7 +829,6 @@ address: 04 00 00 00 command: 4B 00 00 00 # # Model: PIONEER-DVD PLAYER-VXX2702 -# name: Power type: parsed protocol: NEC @@ -870,7 +848,6 @@ address: AF 00 00 00 command: 9E 00 00 00 # # Model: Prinz DVD_Player_T182 -# name: Power type: raw frequency: 38000 @@ -884,7 +861,6 @@ duty_cycle: 0.330000 data: 8362 4520 567 599 540 547 603 564 544 595 544 543 596 544 575 592 547 566 573 1680 568 1685 574 1681 598 1709 550 1704 544 1710 569 1712 546 1708 540 1714 576 1705 543 544 595 1711 547 540 599 541 567 573 566 1687 571 569 570 544 595 1711 547 540 599 1681 567 1686 573 1682 597 570 549 40168 8377 2261 567 # # Model: Sony DVD_RMT-D197A -# name: Power type: parsed protocol: SIRC20 @@ -910,7 +886,6 @@ address: 3A 09 00 00 command: 39 00 00 00 # # Model: Strato DVD507 -# name: Power type: parsed protocol: NEC @@ -924,7 +899,6 @@ address: 00 00 00 00 command: 1E 00 00 00 # # Model: Toshiba SE_R0108 -# name: Power type: parsed protocol: NEC @@ -950,7 +924,6 @@ address: 45 00 00 00 command: 15 00 00 00 # # Model: TOSHIBA SE_R0420 -# name: Power type: raw frequency: 38000 @@ -958,7 +931,6 @@ duty_cycle: 0.330000 data: 9072 4364 664 1566 664 451 663 1567 663 453 661 454 660 478 636 1594 636 479 635 1595 635 480 635 1596 634 481 634 1597 633 1597 634 482 633 1598 632 482 633 482 633 482 633 482 633 482 633 482 633 1597 633 1598 632 1598 632 1598 632 1598 632 1598 632 1598 632 1598 632 482 633 482 633 39968 9043 2203 634 95675 9067 2203 634 95675 9067 2203 634 # # Model: Dvd tv_player -# name: Power type: parsed protocol: NEC @@ -966,7 +938,6 @@ address: 00 00 00 00 command: 03 00 00 00 # # Model: Dvd tv_player_2 -# name: Subtitle type: parsed protocol: NEC @@ -986,7 +957,6 @@ address: 00 00 00 00 command: 53 00 00 00 # # Model: APEX RM_3800 -# name: Power type: parsed protocol: NEC @@ -1000,7 +970,6 @@ address: 01 00 00 00 command: 19 00 00 00 # # Model: RVR-4000 -# name: Power type: parsed protocol: NEC @@ -1020,7 +989,6 @@ address: 35 00 00 00 command: 1B 00 00 00 # # Model: JVC HR-A591U -# name: Power type: raw frequency: 38000 @@ -1040,7 +1008,6 @@ duty_cycle: 0.330000 data: 8414 4228 507 1601 506 1600 507 547 506 548 505 546 507 547 506 1601 506 547 506 547 506 546 507 1600 507 1599 508 547 506 547 506 546 507 546 507 23151 505 1600 507 1601 506 547 506 547 506 547 506 547 506 1600 507 546 507 547 506 547 506 1600 507 1600 507 546 507 548 505 547 506 546 507 23150 506 1600 507 1601 506 545 508 547 506 547 506 545 508 1601 506 548 505 547 506 546 507 1599 508 1600 507 547 506 547 506 546 507 547 506 # # Model: JVC HR-J700E -# name: Power type: raw frequency: 38000 @@ -1066,7 +1033,6 @@ duty_cycle: 0.330000 data: 8422 4235 547 1565 547 1564 548 507 548 507 549 507 549 508 548 1565 547 510 545 507 549 509 547 1563 549 1563 549 1567 545 1564 548 507 549 506 550 20891 546 1566 545 1564 548 508 548 507 548 509 547 506 549 1565 547 509 547 507 548 509 547 1563 549 1562 550 1563 549 1564 548 508 548 508 548 21245 548 1565 547 1565 547 507 549 509 547 509 546 508 548 1566 546 508 548 508 547 507 549 1566 546 1564 548 1564 548 1562 549 508 548 508 548 21246 547 1563 549 1563 549 509 547 509 547 508 547 508 547 1565 547 508 548 507 548 507 549 1564 548 1565 547 1564 548 1565 546 507 549 507 549 21246 547 1564 548 1566 546 506 549 511 545 508 547 508 548 1564 548 508 548 508 548 507 549 1563 549 1564 548 1564 548 1563 548 509 547 508 547 21246 547 1564 548 1564 548 509 547 509 547 508 548 508 548 1564 548 507 549 507 548 508 548 1564 548 1566 546 1564 548 1564 548 508 548 509 547 21245 548 1565 547 1563 549 509 547 508 547 508 548 506 550 1566 546 511 545 507 549 508 547 1565 547 1563 549 1564 548 1566 546 508 548 508 548 # # Model: JVC HR-S2902U -# name: Power type: raw frequency: 38000 @@ -1092,7 +1058,6 @@ duty_cycle: 0.330000 data: 8376 4181 504 1565 505 1592 504 543 505 570 504 570 504 544 504 1592 505 571 503 544 504 570 504 1566 504 1591 505 1591 505 1566 504 570 504 570 504 21772 505 1592 504 1565 505 570 504 569 505 543 505 570 504 1566 504 571 503 569 505 544 504 1592 504 1592 504 1565 505 1591 505 544 504 570 504 21773 504 1591 505 1565 505 570 504 570 504 543 505 569 505 1565 505 572 502 570 504 542 506 1591 505 1591 505 1565 505 1592 504 544 504 568 506 21773 505 1592 504 1567 503 570 504 568 506 543 505 569 505 1566 504 570 504 570 504 543 505 1591 505 1591 505 1565 505 1591 506 543 505 569 505 # # Model: LG GC260W -# name: Power type: parsed protocol: NEC @@ -1112,7 +1077,6 @@ address: 6E 00 00 00 command: 08 00 00 00 # # Model: Magnavox N9377 -# name: Power type: raw frequency: 38000 @@ -1138,7 +1102,6 @@ duty_cycle: 0.330000 data: 3489 3523 881 865 876 886 882 888 880 2607 875 885 883 2628 881 2607 875 2627 882 887 881 2607 875 888 880 886 882 2607 875 2628 881 2627 882 864 877 2627 882 887 881 865 876 886 881 2628 881 867 874 2629 880 2628 881 33917 3494 3502 874 888 880 887 881 865 876 2628 881 888 880 2606 876 2629 880 2629 880 864 876 2629 880 889 879 867 873 2629 880 2629 880 2606 876 888 880 2630 879 865 876 889 879 890 878 2607 875 889 879 2631 878 2608 874 # # Model: Panasonic Light_Tower_LSSQ0342 -# name: Play type: parsed protocol: Kaseikyo @@ -1164,7 +1127,6 @@ address: 90 02 20 00 command: 60 00 00 00 # # Model: Panasonic NV-FJ606 -# name: Power type: raw frequency: 38000 @@ -1172,7 +1134,6 @@ duty_cycle: 0.330000 data: 3538 1702 463 407 461 1273 463 406 462 405 463 405 463 405 463 405 487 382 487 407 460 408 459 410 457 411 457 411 457 1280 457 411 457 411 457 411 457 411 457 411 457 411 457 1280 457 411 457 412 456 1280 457 412 457 412 456 411 457 411 457 412 456 412 456 412 456 412 456 1280 457 412 456 1281 456 1281 456 1281 456 1281 456 412 456 412 456 1281 456 413 455 1281 456 1282 455 413 455 1282 455 413 455 1282 455 74229 3532 1709 457 411 457 1280 457 411 457 412 456 412 456 412 457 411 457 412 456 412 456 412 456 412 456 412 456 412 456 1281 456 412 457 412 456 412 456 412 456 412 456 412 456 1281 456 412 456 412 456 1281 456 413 455 413 455 413 455 413 455 413 455 413 455 413 455 413 455 1282 455 413 455 1282 455 1282 455 1282 455 1282 455 414 454 414 454 1283 454 414 454 1283 454 1283 454 414 454 1283 454 414 454 1283 454 # # Model: Panasonic VCR_PV9662 -# name: Power type: raw frequency: 38000 @@ -1198,7 +1159,6 @@ duty_cycle: 0.330000 data: 3510 1694 450 416 454 1280 450 417 453 414 445 422 448 418 452 415 455 412 447 420 450 416 454 413 446 420 450 417 453 1282 448 419 451 416 454 412 447 420 450 417 453 414 445 1288 452 415 444 422 448 1286 454 413 446 420 450 417 453 414 445 422 448 418 452 415 455 412 447 419 451 1284 446 1288 452 414 445 422 448 419 451 416 454 413 446 420 450 1284 446 1288 452 415 444 1290 450 416 454 413 446 1288 452 74520 3511 1688 446 422 448 1286 454 412 447 420 450 416 454 413 446 421 449 418 452 415 444 422 448 419 451 415 455 412 447 1287 453 414 445 421 449 418 452 415 444 422 448 419 451 1283 447 420 450 417 453 1281 449 418 452 415 444 422 448 419 451 416 454 413 446 420 450 417 453 414 445 1289 451 1283 447 420 450 417 453 414 445 421 449 418 452 415 455 1279 451 1284 446 421 449 1285 445 422 448 419 451 1283 447 # # Model: Philips-RC2K16 -# name: Power type: parsed protocol: RC6 @@ -1212,7 +1172,6 @@ address: 04 00 00 00 command: 2C 00 00 00 # # Model: Sony RM-Y126 -# name: Power type: parsed protocol: SIRC @@ -1238,7 +1197,6 @@ address: 0B 00 00 00 command: 1A 00 00 00 # # Model: Sony SLV-SE610B -# name: Power type: parsed protocol: SIRC @@ -1246,7 +1204,6 @@ address: 0B 00 00 00 command: 15 00 00 00 # # Model: Unknown1 -# name: Power type: parsed protocol: NEC @@ -1308,7 +1265,6 @@ address: BA 4B 00 00 command: E0 1F 00 00 # # Model: Brandt DVDP-7R -# name: Subtitle type: parsed protocol: NEC @@ -1346,7 +1302,6 @@ duty_cycle: 0.330000 data: 3484 3464 907 829 908 830 907 804 906 2596 906 804 933 2569 878 858 879 832 878 2622 880 831 879 858 879 860 877 2596 878 2623 879 2597 877 858 879 2597 877 857 880 2595 879 2594 880 857 880 2595 907 2595 879 2595 880 33544 3485 3437 907 831 906 831 906 830 907 2568 906 830 907 2567 907 831 906 830 907 2567 907 830 907 805 932 802 908 2594 908 2568 907 2567 907 832 905 2568 906 831 906 2568 879 2622 879 831 906 2596 878 2596 879 2596 906 # # Model: Prinz DVD_Player_T182 -# name: Eject type: raw frequency: 38000 @@ -1366,7 +1321,6 @@ duty_cycle: 0.330000 data: 8328 4524 563 592 527 569 550 545 553 596 533 565 554 568 530 595 534 566 553 1683 565 1684 564 1684 647 1624 562 1685 563 1685 646 1625 561 1687 561 598 531 567 552 571 527 1687 592 567 531 596 533 567 552 1687 572 1678 570 1680 589 1685 563 572 557 1681 619 1630 566 1684 595 565 533 40169 8337 2267 572 # # Model: Sony DVD_RMT-D197A -# name: Eject type: parsed protocol: SIRC20 @@ -1554,7 +1508,6 @@ address: 2D 00 00 00 command: 33 00 00 00 # # Model: NAD T557 -# name: Power type: parsed protocol: NECext @@ -1604,7 +1557,6 @@ address: 86 0F 00 00 command: CD 32 00 00 # # Model: Samsung UBDK8500 -# name: Power type: raw frequency: 38000 @@ -1648,7 +1600,6 @@ duty_cycle: 0.330000 data: 4486 4499 483 516 483 515 484 515 484 514 485 515 484 1510 484 514 485 516 483 516 483 515 484 515 484 516 483 516 483 515 484 516 483 516 483 4450 544 1511 461 1533 461 1534 482 516 461 539 460 539 460 1534 460 539 460 1534 460 539 460 538 461 539 460 1533 461 1534 460 538 461 1534 460 538 461 1534 460 1534 460 1533 461 # # Model: Sylvania SDVD1111 -# name: Power type: parsed protocol: NEC @@ -1710,7 +1661,6 @@ address: 07 00 00 00 command: 45 00 00 00 # # Model: Marantz BD8002 -# name: Power type: raw frequency: 38000 @@ -1754,7 +1704,6 @@ duty_cycle: 0.330000 data: 874 930 1764 942 874 931 873 1833 873 931 873 931 873 4448 873 930 1764 1846 1762 1846 1763 943 873 931 873 931 873 931 873 931 873 75040 873 931 1763 944 872 931 873 1833 873 931 873 931 873 4449 872 931 1763 1846 1762 1845 1764 943 873 931 873 931 873 931 873 931 873 75040 873 931 1763 944 872 931 873 1834 872 931 873 931 873 4449 872 931 1763 1846 1763 1846 1763 943 873 931 873 931 873 931 873 931 873 # # Model: Yamaha BDS667 -# name: Power type: parsed protocol: NEC @@ -1791,12 +1740,12 @@ protocol: NEC address: 7C 00 00 00 command: 83 00 00 00 # +# Model: JVC XVBP1 name: Play type: parsed protocol: NEC address: 7C 00 00 00 command: 82 00 00 00 -# Model: JVC XVBP1 # name: Power type: parsed @@ -1847,7 +1796,6 @@ address: 2A 03 01 02 command: E1 01 00 00 # # Model: Soniq B100 -# name: Power type: parsed protocol: NECext @@ -1890,8 +1838,224 @@ protocol: NECext address: 00 DF 00 00 command: 1E E1 00 00 # +# Model: Bose 3-2-1_Series_1 name: Subtitle type: parsed protocol: NECext address: 00 DF 00 00 command: 5A A5 00 00 +# +# Model: Pioneer GGF1381 +name: Fast_fo +type: parsed +protocol: NEC +address: A8 00 00 00 +command: 10 00 00 00 +# +name: Fast_ba +type: parsed +protocol: NEC +address: A8 00 00 00 +command: 11 00 00 00 +# +name: Pause +type: parsed +protocol: NEC +address: A8 00 00 00 +command: 18 00 00 00 +# +name: Play +type: parsed +protocol: NEC +address: A8 00 00 00 +command: 17 00 00 00 +# +# Model: JVC HRS7900U +# +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8382 4224 460 1643 461 1643 461 543 461 541 463 543 461 543 461 1642 462 543 461 1643 461 1643 461 543 461 1643 461 543 461 543 461 470 534 543 485 21919 487 1618 486 1617 487 517 487 517 487 517 487 518 486 1617 487 517 487 1617 487 1617 487 516 488 1617 487 516 488 517 487 517 487 517 487 21917 487 1617 487 1617 488 517 486 517 487 518 486 516 488 1618 486 518 486 1618 486 1618 461 543 485 1619 461 543 461 543 461 543 461 543 461 +# +name: Eject +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8381 4223 460 1644 460 1645 459 544 460 544 460 544 460 544 460 1644 460 544 460 1644 460 1644 460 1644 460 544 460 544 460 544 460 544 460 1644 460 20846 459 1645 459 1644 460 545 459 544 460 545 459 545 459 1645 459 545 459 1645 459 1645 459 1644 460 545 459 544 460 544 460 545 459 1645 459 20845 460 1645 459 1645 459 544 460 544 460 544 460 544 460 1644 460 544 460 1644 460 1644 460 1644 460 544 460 544 460 544 460 544 460 1587 517 +# +name: Fast_fo +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8382 4220 511 1592 512 1593 511 493 511 488 516 492 512 492 512 1594 510 492 512 492 512 1592 512 1593 511 493 511 492 512 492 512 493 511 465 538 22994 487 1618 486 1618 486 518 486 517 487 518 486 518 486 1618 486 518 486 517 487 1618 486 1618 486 517 487 518 486 518 486 518 486 518 486 23019 486 1618 486 1618 486 518 486 518 486 518 486 518 486 1618 486 519 485 518 486 1618 486 1617 487 518 486 517 487 518 486 518 486 518 486 +# +name: Fast_ba +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8383 4223 511 1592 512 1592 512 492 512 493 511 493 511 492 512 1593 511 493 511 1593 487 1619 485 1617 487 518 486 516 488 518 486 517 487 518 486 21918 512 1592 512 1592 512 492 512 493 511 493 511 492 512 1592 512 492 512 1591 513 1592 512 1592 512 493 511 491 564 440 513 492 512 492 564 21870 535 1541 563 1540 564 440 564 439 513 491 513 492 512 1591 513 492 512 1593 511 1592 512 1592 512 492 512 493 511 492 512 490 514 493 511 +# +name: Pause +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8380 4158 526 1644 460 1645 459 544 460 544 460 544 460 543 461 1645 459 545 459 1599 505 545 459 1645 459 1645 459 545 459 545 459 544 460 545 459 21944 483 1621 483 1621 483 520 484 521 483 520 484 521 483 1620 484 520 484 1619 485 522 482 1619 485 1620 484 519 485 519 485 520 484 519 485 21920 485 1618 486 1618 486 548 456 518 486 519 485 518 486 1618 486 519 485 1619 485 518 486 1618 486 1619 485 518 486 477 527 519 485 519 485 +# +name: Play +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8380 4223 461 1644 460 1644 460 544 460 544 460 544 460 453 551 1644 460 544 460 544 460 489 515 1644 460 1644 460 545 459 544 460 544 460 544 460 23044 461 1644 460 1644 460 543 486 519 460 544 460 544 460 1644 460 544 460 544 460 544 460 1644 460 1645 459 544 460 544 460 544 460 544 460 23045 460 1645 459 1644 460 544 460 545 459 545 459 544 460 1645 459 544 460 545 459 544 460 1645 459 1645 459 544 460 544 460 493 511 544 460 +# +name: Ok +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8381 4221 460 1643 461 1643 461 543 461 543 486 518 461 543 461 1643 485 520 460 543 485 519 485 1619 485 1619 485 1597 507 1619 486 518 486 518 486 20819 486 1617 487 1617 487 517 487 517 487 517 487 517 487 1617 487 517 487 517 487 517 487 1617 487 1617 487 1617 487 1617 487 516 488 517 487 20817 488 1617 487 1616 488 516 488 516 488 516 488 516 488 1616 488 517 487 516 488 517 487 1616 488 1617 487 1618 486 1617 487 517 487 516 488 +# +# Model: Memorex MVR4040A +name: Power +type: parsed +protocol: NECext +address: 80 7B 00 00 +command: 13 EC 00 00 +# +name: Eject +type: parsed +protocol: NECext +address: 80 7B 00 00 +command: 4E B1 00 00 +# +name: Ok +type: parsed +protocol: NECext +address: 80 7B 00 00 +command: 45 BA 00 00 +# +name: Fast_fo +type: parsed +protocol: NECext +address: 80 7B 00 00 +command: 18 E7 00 00 +# +name: Fast_ba +type: parsed +protocol: NECext +address: 80 7B 00 00 +command: 19 E6 00 00 +# +name: Pause +type: parsed +protocol: NECext +address: 80 7B 00 00 +command: 1A E5 00 00 +# +name: Play +type: parsed +protocol: NECext +address: 80 7B 00 00 +command: 16 E9 00 00 +# +name: Ok +type: parsed +protocol: SIRC +address: 0B 00 00 00 +command: 51 00 00 00 +# +name: Fast_fo +type: parsed +protocol: SIRC +address: 0B 00 00 00 +command: 1C 00 00 00 +# +name: Ok +type: parsed +protocol: SIRC +address: 0B 00 00 00 +command: 1A 00 00 00 +# +name: Fast_fo +type: parsed +protocol: SIRC15 +address: BA 00 00 00 +command: 11 00 00 00 +# +name: Fast_ba +type: parsed +protocol: SIRC15 +address: BA 00 00 00 +command: 10 00 00 00 +# +name: Pause +type: parsed +protocol: SIRC15 +address: BA 00 00 00 +command: 0E 00 00 00 +# +# Model: Sony SLVD201P +name: Power +type: parsed +protocol: SIRC20 +address: 7A 0A 00 00 +command: 15 00 00 00 +# +name: Eject +type: parsed +protocol: SIRC20 +address: 7A 0A 00 00 +command: 16 00 00 00 +# +name: Ok +type: parsed +protocol: SIRC20 +address: 7A 0A 00 00 +command: 0B 00 00 00 +# +name: Fast_fo +type: parsed +protocol: SIRC20 +address: 7A 0A 00 00 +command: 1C 00 00 00 +# +name: Fast_ba +type: parsed +protocol: SIRC20 +address: 7A 0A 00 00 +command: 1B 00 00 00 +# +name: Pause +type: parsed +protocol: SIRC20 +address: 7A 0A 00 00 +command: 19 00 00 00 +# +name: Play +type: parsed +protocol: SIRC20 +address: 7A 0A 00 00 +command: 1A 00 00 00 +# +name: Subtitle +type: parsed +protocol: SIRC20 +address: 7A 0A 00 00 +command: 60 00 00 00 +# +name: Ok +type: parsed +protocol: SIRC15 +address: BA 00 00 00 +command: 18 00 00 00 +# +name: Pause +type: parsed +protocol: NEC +address: 45 00 00 00 +command: 00 00 00 00 +# +name: Play +type: parsed +protocol: NEC +address: A8 00 00 00 +command: 17 00 00 00 \ No newline at end of file From 7d4ea20701651e9b3e601f149ede75d292c6a533 Mon Sep 17 00:00:00 2001 From: Alexander Bays Date: Sun, 12 Jan 2025 20:39:46 -0600 Subject: [PATCH 62/85] Main Menu: Fix MNTM style battery percent off by 1 (#339) * Battery: MNTM menu style battery off by 1 - Uses the same `furi_hal_power_get_pct` function used on the desktop to fix the apparent rounded error that's happening and show the same battery %. * Update changelog --------- Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com> --- CHANGELOG.md | 1 + applications/services/gui/modules/menu.c | 4 +--- 2 files changed, 2 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index a051f3e337..bae5e78251 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -44,6 +44,7 @@ ### Fixed: - Desktop: Fixed Wardriving animation design (by @Davim09) +- Main Menu: Fix MNTM style battery percent off by 1 (#339 by @956MB) - OFW: Fix lost BadBLE keystrokes (by @Astrrra) - OFW: GPIO: Fix USB UART Bridge Crash by increasing system stack size (by @Astrrra) - OFW: Loader: Fix BusFault in handling of OOM (by @Willy-JL) diff --git a/applications/services/gui/modules/menu.c b/applications/services/gui/modules/menu.c index c3b7bcd67e..ffcda8bc9f 100644 --- a/applications/services/gui/modules/menu.c +++ b/applications/services/gui/modules/menu.c @@ -391,10 +391,8 @@ static void menu_draw_callback(Canvas* canvas, void* _model) { snprintf(clk, sizeof(clk), "%02u:%02u", hour, min); canvas_draw_str(canvas, 5, 34, clk); - uint32_t battery_capacity = furi_hal_power_get_battery_full_capacity(); - uint32_t battery_remaining = furi_hal_power_get_battery_remaining_capacity(); bool ext5v = furi_hal_power_is_otg_enabled(); - uint16_t battery_percent = (battery_remaining * 100) / battery_capacity; + uint8_t battery_percent = furi_hal_power_get_pct(); bool charge_state = false; // Determine charge state From 34379f1fbef3cc51cb5bfdef635582ba086325bf Mon Sep 17 00:00:00 2001 From: Alexander Bays Date: Sun, 12 Jan 2025 20:40:36 -0600 Subject: [PATCH 63/85] Lockscreen: Separate 'Allow RPC While Locked' for USB/BLE (#343) * Lockscreen: Separate 'Allow RPC While Locked' for USB/Bluetooth (BLE) - #330, split of the `allow_locked_rpc_commands` bool into `allow_locked_rpc_usb` and `allow_locked_rpc_ble` to allow the connections separately. * Shorter wording * Update changelog --------- Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com> --- CHANGELOG.md | 5 +++ .../momentum_app_scene_interface_lockscreen.c | 31 +++++++++++++---- applications/services/desktop/desktop.c | 34 ++++++++++++------- applications/services/rpc/rpc.c | 7 ++-- lib/momentum/settings.c | 6 ++-- lib/momentum/settings.h | 3 +- 6 files changed, 61 insertions(+), 25 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index bae5e78251..82904b8667 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,3 +1,8 @@ +### Breaking Changes: +- Lockscreen: Separate 'Allow RPC While Locked' settings for USB/BLE (#343 by @956MB) + - Both default to OFF like before + - If you had enabled this option before, you will need to re-enable + ### Added: - Apps: - Games: Pinball0 (by @rdefeo) diff --git a/applications/main/momentum_app/scenes/momentum_app_scene_interface_lockscreen.c b/applications/main/momentum_app/scenes/momentum_app_scene_interface_lockscreen.c index ff39fbfe6c..f879ddf12c 100644 --- a/applications/main/momentum_app/scenes/momentum_app_scene_interface_lockscreen.c +++ b/applications/main/momentum_app/scenes/momentum_app_scene_interface_lockscreen.c @@ -33,11 +33,20 @@ static void momentum_app_scene_interface_lockscreen_bad_pins_format_changed(Vari } static void - momentum_app_scene_interface_lockscreen_allow_locked_rpc_commands_changed(VariableItem* item) { + momentum_app_scene_interface_lockscreen_allow_locked_rpc_usb_changed(VariableItem* item) { MomentumApp* app = variable_item_get_context(item); bool value = variable_item_get_current_value_index(item); variable_item_set_current_value_text(item, value ? "ON" : "OFF"); - momentum_settings.allow_locked_rpc_commands = value; + momentum_settings.allow_locked_rpc_usb = value; + app->save_settings = true; +} + +static void + momentum_app_scene_interface_lockscreen_allow_locked_rpc_ble_changed(VariableItem* item) { + MomentumApp* app = variable_item_get_context(item); + bool value = variable_item_get_current_value_index(item); + variable_item_set_current_value_text(item, value ? "ON" : "OFF"); + momentum_settings.allow_locked_rpc_ble = value; app->save_settings = true; } @@ -126,13 +135,23 @@ void momentum_app_scene_interface_lockscreen_on_enter(void* context) { item = variable_item_list_add( var_item_list, - "Allow RPC While Locked", + "Allow USB RPC While Locked", + 2, + momentum_app_scene_interface_lockscreen_allow_locked_rpc_usb_changed, + app); + variable_item_set_current_value_index(item, momentum_settings.allow_locked_rpc_usb); + variable_item_set_current_value_text( + item, momentum_settings.allow_locked_rpc_usb ? "ON" : "OFF"); + + item = variable_item_list_add( + var_item_list, + "Allow BLE RPC While Locked", 2, - momentum_app_scene_interface_lockscreen_allow_locked_rpc_commands_changed, + momentum_app_scene_interface_lockscreen_allow_locked_rpc_ble_changed, app); - variable_item_set_current_value_index(item, momentum_settings.allow_locked_rpc_commands); + variable_item_set_current_value_index(item, momentum_settings.allow_locked_rpc_ble); variable_item_set_current_value_text( - item, momentum_settings.allow_locked_rpc_commands ? "ON" : "OFF"); + item, momentum_settings.allow_locked_rpc_ble ? "ON" : "OFF"); item = variable_item_list_add( var_item_list, diff --git a/applications/services/desktop/desktop.c b/applications/services/desktop/desktop.c index a0cf454128..bcd10e0d9d 100644 --- a/applications/services/desktop/desktop.c +++ b/applications/services/desktop/desktop.c @@ -391,13 +391,17 @@ void desktop_lock(Desktop* desktop, bool with_pin) { furi_hal_rtc_set_pin_fails(0); } - if(with_pin && !momentum_settings.allow_locked_rpc_commands) { - Cli* cli = furi_record_open(RECORD_CLI); - cli_session_close(cli); - furi_record_close(RECORD_CLI); - Bt* bt = furi_record_open(RECORD_BT); - bt_close_rpc_connection(bt); - furi_record_close(RECORD_BT); + if(with_pin) { + if(!momentum_settings.allow_locked_rpc_usb) { + Cli* cli = furi_record_open(RECORD_CLI); + cli_session_close(cli); + furi_record_close(RECORD_CLI); + } + if(!momentum_settings.allow_locked_rpc_ble) { + Bt* bt = furi_record_open(RECORD_BT); + bt_close_rpc_connection(bt); + furi_record_close(RECORD_BT); + } } desktop_auto_lock_inhibit(desktop); @@ -426,12 +430,16 @@ void desktop_unlock(Desktop* desktop) { furi_hal_rtc_set_pin_fails(0); if(with_pin) { - Cli* cli = furi_record_open(RECORD_CLI); - cli_session_open(cli, &cli_vcp); - furi_record_close(RECORD_CLI); - Bt* bt = furi_record_open(RECORD_BT); - bt_open_rpc_connection(bt); - furi_record_close(RECORD_BT); + if(!momentum_settings.allow_locked_rpc_usb) { + Cli* cli = furi_record_open(RECORD_CLI); + cli_session_open(cli, &cli_vcp); + furi_record_close(RECORD_CLI); + } + if(!momentum_settings.allow_locked_rpc_ble) { + Bt* bt = furi_record_open(RECORD_BT); + bt_open_rpc_connection(bt); + furi_record_close(RECORD_BT); + } } DesktopStatus status = {.locked = false}; diff --git a/applications/services/rpc/rpc.c b/applications/services/rpc/rpc.c index 1cd5caa651..0993a4f6f3 100644 --- a/applications/services/rpc/rpc.c +++ b/applications/services/rpc/rpc.c @@ -385,9 +385,10 @@ static void } RpcSession* rpc_session_open(Rpc* rpc, RpcOwner owner) { - if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagLock) && - !momentum_settings.allow_locked_rpc_commands) - return NULL; + if(furi_hal_rtc_is_flag_set(FuriHalRtcFlagLock)) { + if(owner == RpcOwnerUsb && !momentum_settings.allow_locked_rpc_usb) return NULL; + if(owner == RpcOwnerBle && !momentum_settings.allow_locked_rpc_ble) return NULL; + } furi_check(rpc); diff --git a/lib/momentum/settings.c b/lib/momentum/settings.c index 315124c7c4..30fc3480bd 100644 --- a/lib/momentum/settings.c +++ b/lib/momentum/settings.c @@ -14,7 +14,8 @@ MomentumSettings momentum_settings = { .menu_style = MenuStyleDsi, // DSi .lock_on_boot = false, // OFF .bad_pins_format = false, // OFF - .allow_locked_rpc_commands = false, // OFF + .allow_locked_rpc_usb = false, // OFF + .allow_locked_rpc_ble = false, // OFF .lockscreen_poweroff = true, // ON .lockscreen_time = true, // ON .lockscreen_seconds = false, // OFF @@ -82,7 +83,8 @@ static const struct { {setting_bool(unlock_anims)}, {setting_enum(menu_style, MenuStyleCount)}, {setting_bool(bad_pins_format)}, - {setting_bool(allow_locked_rpc_commands)}, + {setting_bool(allow_locked_rpc_usb)}, + {setting_bool(allow_locked_rpc_ble)}, {setting_bool(lock_on_boot)}, {setting_bool(lockscreen_poweroff)}, {setting_bool(lockscreen_time)}, diff --git a/lib/momentum/settings.h b/lib/momentum/settings.h index ee13411313..de288be87c 100644 --- a/lib/momentum/settings.h +++ b/lib/momentum/settings.h @@ -62,7 +62,8 @@ typedef struct { MenuStyle menu_style; bool lock_on_boot; bool bad_pins_format; - bool allow_locked_rpc_commands; + bool allow_locked_rpc_usb; + bool allow_locked_rpc_ble; bool lockscreen_poweroff; bool lockscreen_time; bool lockscreen_seconds; From dbbecd9e1fbf4449af56f1eec0c69979e7b8538f Mon Sep 17 00:00:00 2001 From: dexv <193105427+dexvleads@users.noreply.github.com> Date: Mon, 13 Jan 2025 03:44:09 +0100 Subject: [PATCH 64/85] CLI: Add 'clear' command and command suggestion (#342) * Add 'clear' command and improve command suggestion in CLI - Introduced a new CLI command 'clear' (alias 'cls') to clear the terminal screen. - Enhanced command not found feedback by suggesting similar commands based on user input. - Added a function to calculate string distance for better command matching. * Review changes * Update changelog --------- Co-authored-by: dexv <89728480+DXVVAY@users.noreply.github.com> Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com> --- CHANGELOG.md | 1 + applications/services/cli/cli.c | 49 ++++++++++++++++++++++-- applications/services/cli/cli_commands.c | 11 ++++++ 3 files changed, 58 insertions(+), 3 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 82904b8667..9908351859 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Apps: - Games: Pinball0 (by @rdefeo) - NFC: Metroflip (by @luu176) +- CLI: Add `clear` and `cls` commands, add `did you mean ...?` command suggestion (#342 by @dexvleads) - BadKB: Added german Mac keyboard Layout (#325 by @Cloudy261) - UL: Sub-GHz: Jolly Motors support with add manually (by @pkooiman & @xMasterX) - OFW: Desktop: Add winter animations (by @Astrrra) diff --git a/applications/services/cli/cli.c b/applications/services/cli/cli.c index d4903f2c56..73e7340735 100644 --- a/applications/services/cli/cli.c +++ b/applications/services/cli/cli.c @@ -8,6 +8,7 @@ #include #include #include +#include #define TAG "CliSrv" @@ -208,6 +209,36 @@ static void cli_execute_command(Cli* cli, CliCommand* command, FuriString* args) } } +static size_t cli_string_distance(const char* s1, const char* s2) { + size_t distance = 0; + + while(*s1 && *s2) { + if(*s1++ != *s2++) distance++; + } + while(*s1++) + distance++; + while(*s2++) + distance++; + + return distance; +} + +static void cli_find_similar_command(Cli* cli, const char* input, FuriString* suggestion) { + size_t min_distance = (size_t)-1; + size_t max_allowed = (strlen(input) + 1) / 2; + furi_string_reset(suggestion); + + CliCommandTree_it_t it; + for(CliCommandTree_it(it, cli->commands); !CliCommandTree_end_p(it); CliCommandTree_next(it)) { + const char* cmd_name = furi_string_get_cstr(*CliCommandTree_ref(it)->key_ptr); + size_t distance = cli_string_distance(input, cmd_name); + if(distance < min_distance && distance <= max_allowed) { + min_distance = distance; + furi_string_set(suggestion, cmd_name); + } + } +} + static void cli_handle_enter(Cli* cli) { cli_normalize_line(cli); @@ -245,9 +276,21 @@ static void cli_handle_enter(Cli* cli) { } else { furi_check(furi_mutex_release(cli->mutex) == FuriStatusOk); cli_nl(cli); - printf( - "`%s` command not found, use `help` or `?` to list all available commands", - furi_string_get_cstr(command)); + FuriString* suggestion = furi_string_alloc(); + cli_find_similar_command(cli, furi_string_get_cstr(command), suggestion); + + if(furi_string_empty(suggestion)) { + printf( + "`%s` command not found, use `help` or `?` to list all available commands", + furi_string_get_cstr(command)); + } else { + printf( + "`%s` command not found, did you mean `%s`? Use `help` or `?` to list all available commands", + furi_string_get_cstr(command), + furi_string_get_cstr(suggestion)); + } + + furi_string_free(suggestion); cli_putc(cli, CliKeyBell); } diff --git a/applications/services/cli/cli_commands.c b/applications/services/cli/cli_commands.c index 9dd4e4265f..e53744d808 100644 --- a/applications/services/cli/cli_commands.c +++ b/applications/services/cli/cli_commands.c @@ -682,6 +682,13 @@ void cli_command_i2c(Cli* cli, FuriString* args, void* context) { furi_hal_i2c_release(&furi_hal_i2c_handle_external); } +void cli_command_clear(Cli* cli, FuriString* args, void* context) { + UNUSED(cli); + UNUSED(args); + UNUSED(context); + printf("\e[2J\e[H"); +} + CLI_PLUGIN_WRAPPER("info", cli_command_info) CLI_PLUGIN_WRAPPER("src", cli_command_src) CLI_PLUGIN_WRAPPER("neofetch", cli_command_neofetch) @@ -693,6 +700,7 @@ CLI_PLUGIN_WRAPPER("vibro", cli_command_vibro) CLI_PLUGIN_WRAPPER("led", cli_command_led) CLI_PLUGIN_WRAPPER("gpio", cli_command_gpio) CLI_PLUGIN_WRAPPER("i2c", cli_command_i2c) +CLI_PLUGIN_WRAPPER("clear", cli_command_clear) void cli_commands_init(Cli* cli) { cli_add_command(cli, "!", CliCommandFlagParallelSafe, cli_command_info_wrapper, (void*)true); @@ -724,4 +732,7 @@ void cli_commands_init(Cli* cli) { cli_add_command(cli, "led", CliCommandFlagDefault, cli_command_led_wrapper, NULL); cli_add_command(cli, "gpio", CliCommandFlagDefault, cli_command_gpio_wrapper, NULL); cli_add_command(cli, "i2c", CliCommandFlagDefault, cli_command_i2c_wrapper, NULL); + + cli_add_command(cli, "clear", CliCommandFlagParallelSafe, cli_command_clear, NULL); + cli_add_command(cli, "cls", CliCommandFlagParallelSafe, cli_command_clear, NULL); } From 530f3d4f227cbf9a0d50f37366b75d6081c2efd3 Mon Sep 17 00:00:00 2001 From: Cody Tolene Date: Thu, 16 Jan 2025 17:50:33 -0600 Subject: [PATCH 65/85] Main Menu: Add coverflow menu style (#314) * Add coverflow menu style. * Update with new canvas extended function `canvas_draw_icon_animation_ex` --- .../momentum_app_scene_interface_mainmenu.c | 1 + applications/services/gui/canvas.c | 42 ++++-- applications/services/gui/canvas.h | 23 +++ applications/services/gui/modules/menu.c | 135 +++++++++++++++++- lib/momentum/settings.h | 1 + targets/f18/api_symbols.csv | 2 +- targets/f7/api_symbols.csv | 1 + 7 files changed, 194 insertions(+), 11 deletions(-) diff --git a/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu.c b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu.c index 17f17f7295..afad8f7d24 100644 --- a/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu.c +++ b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu.c @@ -23,6 +23,7 @@ const char* const menu_style_names[MenuStyleCount] = { "C64", "Compact", "MNTM", + "CoverFlow", }; static void momentum_app_scene_interface_mainmenu_menu_style_changed(VariableItem* item) { MomentumApp* app = variable_item_get_context(item); diff --git a/applications/services/gui/canvas.c b/applications/services/gui/canvas.c index 2aace5ca73..0a9ef66123 100644 --- a/applications/services/gui/canvas.c +++ b/applications/services/gui/canvas.c @@ -294,27 +294,53 @@ void canvas_draw_bitmap( canvas_draw_u8g2_bitmap(&canvas->fb, x, y, width, height, bitmap_data, IconRotation0); } -void canvas_draw_icon_animation( +static void _canvas_draw_icon_animation( Canvas* canvas, int32_t x, int32_t y, + int32_t width_scale, + int32_t height_scale, IconAnimation* icon_animation) { furi_check(canvas); furi_check(icon_animation); + // Ensure scale % is > 0 + furi_assert(width_scale > 0 && height_scale > 0); + // Ensure scale % is <= 100: animated icons > 100% are buggy + // TODO: Future, allow scaling > 100 + furi_assert(width_scale <= 100 && height_scale <= 100); x += canvas->offset_x; y += canvas->offset_y; + uint8_t* icon_data = NULL; compress_icon_decode( canvas->compress_icon, icon_animation_get_data(icon_animation), &icon_data); + + int32_t width = icon_animation_get_width(icon_animation); + int32_t height = icon_animation_get_height(icon_animation); + int32_t width_scaled = (width * width_scale) / 100; + int32_t height_scaled = (height * height_scale) / 100; + canvas_draw_u8g2_bitmap( - &canvas->fb, - x, - y, - icon_animation_get_width(icon_animation), - icon_animation_get_height(icon_animation), - icon_data, - IconRotation0); + &canvas->fb, x, y, width_scaled, height_scaled, icon_data, IconRotation0); +} + +void canvas_draw_icon_animation( + Canvas* canvas, + int32_t x, + int32_t y, + IconAnimation* icon_animation) { + _canvas_draw_icon_animation(canvas, x, y, 100, 100, icon_animation); +} + +void canvas_draw_icon_animation_ex( + Canvas* canvas, + int32_t x, + int32_t y, + int32_t width_scale, + int32_t height_scale, + IconAnimation* icon_animation) { + _canvas_draw_icon_animation(canvas, x, y, width_scale, height_scale, icon_animation); } static void canvas_draw_u8g2_bitmap_int( diff --git a/applications/services/gui/canvas.h b/applications/services/gui/canvas.h index cd4719b3ff..2168a4ea44 100644 --- a/applications/services/gui/canvas.h +++ b/applications/services/gui/canvas.h @@ -258,6 +258,9 @@ void canvas_draw_icon_ex( IconRotation rotation); /** Draw animation at position defined by x,y. + * + * This function is retained for backward compatibility and draws the animation + * at the specified position without scaling. * * @param canvas Canvas instance * @param x x coordinate @@ -270,6 +273,26 @@ void canvas_draw_icon_animation( int32_t y, IconAnimation* icon_animation); +/** Draw animation at position defined by x,y with scaling. + * + * This extended version allows scaling of the animation dimensions by percentage. + * The width and height are scaled independently. + * + * @param canvas Canvas instance + * @param x x coordinate + * @param y y coordinate + * @param width_scale Scaled (%) width of the icon (1–100%) + * @param height_scale Scaled (%) height of the icon (1–100%) + * @param icon_animation IconAnimation instance + */ +void canvas_draw_icon_animation_ex( + Canvas* canvas, + int32_t x, + int32_t y, + int32_t width_scale, + int32_t height_scale, + IconAnimation* icon_animation); + /** Draw icon at position defined by x,y. * * @param canvas Canvas instance diff --git a/applications/services/gui/modules/menu.c b/applications/services/gui/modules/menu.c index ffcda8bc9f..16c56df440 100644 --- a/applications/services/gui/modules/menu.c +++ b/applications/services/gui/modules/menu.c @@ -81,6 +81,24 @@ static void menu_centered_icon( item->icon); } +static void menu_centered_icon_scaled( + Canvas* canvas, + MenuItem* item, + size_t x, + size_t y, + size_t width, + size_t height, + size_t width_scale, + size_t height_scale) { + canvas_draw_icon_animation_ex( + canvas, + x + (width - item->icon->icon->width) / 2, + y + (height - item->icon->icon->height) / 2, + width_scale, + height_scale, + item->icon); +} + static size_t menu_scroll_counter(MenuModel* model, bool selected) { if(!selected) return 0; size_t scroll_counter = model->scroll_counter; @@ -440,6 +458,115 @@ static void menu_draw_callback(Canvas* canvas, void* _model) { } break; } + case MenuStyleCoverFlow: { + canvas_clear(canvas); + canvas_set_font(canvas, FontPrimary); + + // Draw frames + canvas_set_bitmap_mode(canvas, true); + canvas_draw_frame(canvas, 0, 0, 128, 64); + canvas_draw_frame(canvas, 44, 2, 40, 40); + + // Draw left side albums + canvas_draw_line(canvas, 6, 40, 17, 35); + canvas_draw_line(canvas, 19, 40, 30, 35); + canvas_draw_line(canvas, 32, 40, 43, 35); + canvas_draw_line(canvas, 6, 3, 17, 8); + canvas_draw_line(canvas, 19, 3, 30, 8); + canvas_draw_line(canvas, 32, 3, 43, 8); + canvas_draw_line(canvas, 18, 2, 18, 41); + canvas_draw_line(canvas, 31, 2, 31, 41); + canvas_draw_line(canvas, 5, 2, 5, 41); + canvas_draw_line(canvas, 4, 8, 1, 7); + canvas_draw_line(canvas, 5, 35, 1, 36); + + // Draw right side albums + canvas_draw_line(canvas, 95, 40, 84, 35); + canvas_draw_line(canvas, 108, 40, 97, 35); + canvas_draw_line(canvas, 121, 40, 110, 35); + canvas_draw_line(canvas, 84, 8, 95, 3); + canvas_draw_line(canvas, 97, 8, 108, 3); + canvas_draw_line(canvas, 110, 8, 121, 3); + canvas_draw_line(canvas, 96, 2, 96, 41); + canvas_draw_line(canvas, 109, 2, 109, 41); + canvas_draw_line(canvas, 122, 2, 122, 41); + canvas_draw_line(canvas, 123, 8, 126, 7); + canvas_draw_line(canvas, 123, 35, 126, 36); + + const int32_t pos_x_center = 128 / 2; + const int32_t pos_y_center = 64 / 2; + const int32_t pos_y_offset = 10; + const int32_t icon_size = 20; + const int32_t side_icon_width = icon_size / 2; + const int32_t padding_center_icon = 14; + const int32_t spacing_between_icons = 3; + const int32_t scale_base = 100; + + MenuItem* center_item = NULL; + + // Draw 7 icons, where index 0 is the center icon + // [-3, -2, -1, 0, 1, 2, 3] + for(int8_t i = -3; i <= 3; i++) { + shift_position = (position + items_count + i) % items_count; + item = MenuItemArray_get(model->items, shift_position); + + int32_t pos_x = pos_x_center; + int32_t pos_y = pos_y_center; + + int32_t scale_width = scale_base; + int32_t scale_height = scale_base; + + if(i < 0) { + // Left sided icons + pos_x -= padding_center_icon; + pos_x -= ((-i) * (side_icon_width + spacing_between_icons)); + pos_x -= (side_icon_width / 2) / 2; + pos_y = (pos_y_center - icon_size / 2) - pos_y_offset; + scale_width = 50; + } else if(i > 0) { + // Right sided icons + pos_x += padding_center_icon; + pos_x += (i * (side_icon_width + spacing_between_icons)); + pos_x -= side_icon_width; + pos_y = (pos_y_center - icon_size / 2) - pos_y_offset; + scale_width = 50; + } else if(i == 0) { + // Center icon + pos_x -= icon_size / 2; + pos_y = (pos_y_center - (icon_size / 2)) - pos_y_offset; + // Scaling > 100% doesn't look good, keep 100% for now + scale_width = scale_base; // TODO: 200% + scale_height = scale_base; // TODO: 200% + // Save center item pointer for later + center_item = item; + } + + // Draw the icon + menu_centered_icon_scaled( + canvas, item, pos_x, pos_y, icon_size, icon_size, scale_width, scale_height); + } + + // Draw label for center item + if(center_item) { + FuriString* name = furi_string_alloc(); + menu_get_name(center_item, name, false); + elements_scrollable_text_line_centered( + canvas, + pos_x_center, + (pos_y_center + icon_size / 2) + pos_y_offset, + 126, + name, + 0, + false, + true); + furi_string_free(name); + } + + // Add scrollbar element + elements_scrollbar_horizontal(canvas, 0, 60, 128, position, items_count); + + break; + } default: break; } @@ -816,7 +943,9 @@ static void menu_process_left(Menu* menu) { position = position - 8; } break; - + case MenuStyleCoverFlow: + position = (position + count - 1) % count; + break; default: break; } @@ -880,7 +1009,9 @@ static void menu_process_right(Menu* menu) { position = position - 8; } break; - + case MenuStyleCoverFlow: + position = (position + 1) % count; + break; default: break; } diff --git a/lib/momentum/settings.h b/lib/momentum/settings.h index de288be87c..54cc74e53e 100644 --- a/lib/momentum/settings.h +++ b/lib/momentum/settings.h @@ -29,6 +29,7 @@ typedef enum { MenuStyleC64, MenuStyleCompact, MenuStyleMNTM, + MenuStyleCoverFlow, MenuStyleCount, } MenuStyle; diff --git a/targets/f18/api_symbols.csv b/targets/f18/api_symbols.csv index 8d03e0e46c..2e808067dc 100644 --- a/targets/f18/api_symbols.csv +++ b/targets/f18/api_symbols.csv @@ -743,7 +743,7 @@ Function,+,canvas_draw_dot,void,"Canvas*, int32_t, int32_t" Function,+,canvas_draw_frame,void,"Canvas*, int32_t, int32_t, size_t, size_t" Function,+,canvas_draw_glyph,void,"Canvas*, int32_t, int32_t, uint16_t" Function,+,canvas_draw_icon,void,"Canvas*, int32_t, int32_t, const Icon*" -Function,+,canvas_draw_icon_animation,void,"Canvas*, int32_t, int32_t, IconAnimation*" +Function,+,canvas_draw_icon_animation,void,"Canvas*, int32_t, int32_t, int32_t, int32_t, IconAnimation*" Function,+,canvas_draw_icon_ex,void,"Canvas*, int32_t, int32_t, const Icon*, IconRotation" Function,+,canvas_draw_line,void,"Canvas*, int32_t, int32_t, int32_t, int32_t" Function,+,canvas_draw_rbox,void,"Canvas*, int32_t, int32_t, size_t, size_t, size_t" diff --git a/targets/f7/api_symbols.csv b/targets/f7/api_symbols.csv index 4f7a69c66e..b80f329f6d 100644 --- a/targets/f7/api_symbols.csv +++ b/targets/f7/api_symbols.csv @@ -840,6 +840,7 @@ Function,+,canvas_draw_frame,void,"Canvas*, int32_t, int32_t, size_t, size_t" Function,+,canvas_draw_glyph,void,"Canvas*, int32_t, int32_t, uint16_t" Function,+,canvas_draw_icon,void,"Canvas*, int32_t, int32_t, const Icon*" Function,+,canvas_draw_icon_animation,void,"Canvas*, int32_t, int32_t, IconAnimation*" +Function,+,canvas_draw_icon_animation_ex,void,"Canvas*, int32_t, int32_t, int32_t, int32_t, IconAnimation*" Function,+,canvas_draw_icon_ex,void,"Canvas*, int32_t, int32_t, const Icon*, IconRotation" Function,+,canvas_draw_line,void,"Canvas*, int32_t, int32_t, int32_t, int32_t" Function,+,canvas_draw_rbox,void,"Canvas*, int32_t, int32_t, size_t, size_t, size_t" From 574933a500185448ba6ad74a02d0b27f7a40423d Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Fri, 17 Jan 2025 00:06:48 +0000 Subject: [PATCH 66/85] Small cleanup of #314 --nobuild --- CHANGELOG.md | 5 ++++- applications/services/gui/modules/menu.c | 13 ++++--------- targets/f18/api_symbols.csv | 2 +- 3 files changed, 9 insertions(+), 11 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index ff126ec83b..d01ea93def 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,13 +8,16 @@ - Games: Pinball0 (by @rdefeo) - NFC: Metroflip (by @luu176) - CLI: Add `clear` and `cls` commands, add `did you mean ...?` command suggestion (#342 by @dexvleads) +- Main Menu: Add coverflow menu style (#314 by @CodyTolene) - BadKB: Added german Mac keyboard Layout (#325 by @Cloudy261) - UL: Sub-GHz: Jolly Motors support with add manually (by @pkooiman & @xMasterX) - OFW: Desktop: Add winter animations (by @Astrrra) +- API: + - Added `canvas_draw_icon_animation_ex()` to draw animated icons resized (#314 by @CodyTolene) + - OFW: Added `flipper_format_write_empty_line()` (by @janwiesemann) - OFW: Furi: Pipe support (by @portasynthinca3) - OFW: Furi: Thread stdin support (by @portasynthinca3) - OFW: RPC: Command to send a signal once (by @Astrrra) -- OFW: API: Added `flipper_format_write_empty_line()` (by @janwiesemann) - OFW: Add VCP break support (by @gsurkov) ### Updated: diff --git a/applications/services/gui/modules/menu.c b/applications/services/gui/modules/menu.c index 16c56df440..1c7770cc5a 100644 --- a/applications/services/gui/modules/menu.c +++ b/applications/services/gui/modules/menu.c @@ -459,7 +459,6 @@ static void menu_draw_callback(Canvas* canvas, void* _model) { break; } case MenuStyleCoverFlow: { - canvas_clear(canvas); canvas_set_font(canvas, FontPrimary); // Draw frames @@ -548,7 +547,6 @@ static void menu_draw_callback(Canvas* canvas, void* _model) { // Draw label for center item if(center_item) { - FuriString* name = furi_string_alloc(); menu_get_name(center_item, name, false); elements_scrollable_text_line_centered( canvas, @@ -559,7 +557,6 @@ static void menu_draw_callback(Canvas* canvas, void* _model) { 0, false, true); - furi_string_free(name); } // Add scrollbar element @@ -917,6 +914,7 @@ static void menu_process_left(Menu* menu) { case MenuStyleDsi: case MenuStylePs4: case MenuStyleVertical: + case MenuStyleCoverFlow: size_t vertical_offset = model->vertical_offset; if(position > 0) { position--; @@ -943,9 +941,7 @@ static void menu_process_left(Menu* menu) { position = position - 8; } break; - case MenuStyleCoverFlow: - position = (position + count - 1) % count; - break; + default: break; } @@ -983,6 +979,7 @@ static void menu_process_right(Menu* menu) { case MenuStyleDsi: case MenuStylePs4: case MenuStyleVertical: + case MenuStyleCoverFlow: size_t vertical_offset = model->vertical_offset; if(position < count - 1) { position++; @@ -1009,9 +1006,7 @@ static void menu_process_right(Menu* menu) { position = position - 8; } break; - case MenuStyleCoverFlow: - position = (position + 1) % count; - break; + default: break; } diff --git a/targets/f18/api_symbols.csv b/targets/f18/api_symbols.csv index 2e808067dc..8d03e0e46c 100644 --- a/targets/f18/api_symbols.csv +++ b/targets/f18/api_symbols.csv @@ -743,7 +743,7 @@ Function,+,canvas_draw_dot,void,"Canvas*, int32_t, int32_t" Function,+,canvas_draw_frame,void,"Canvas*, int32_t, int32_t, size_t, size_t" Function,+,canvas_draw_glyph,void,"Canvas*, int32_t, int32_t, uint16_t" Function,+,canvas_draw_icon,void,"Canvas*, int32_t, int32_t, const Icon*" -Function,+,canvas_draw_icon_animation,void,"Canvas*, int32_t, int32_t, int32_t, int32_t, IconAnimation*" +Function,+,canvas_draw_icon_animation,void,"Canvas*, int32_t, int32_t, IconAnimation*" Function,+,canvas_draw_icon_ex,void,"Canvas*, int32_t, int32_t, const Icon*, IconRotation" Function,+,canvas_draw_line,void,"Canvas*, int32_t, int32_t, int32_t, int32_t" Function,+,canvas_draw_rbox,void,"Canvas*, int32_t, int32_t, size_t, size_t, size_t" From 39486d1a804e47e563e0b4d8788a28859684b33a Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Fri, 17 Jan 2025 00:16:40 +0000 Subject: [PATCH 67/85] Bump API 79.2 for OFW 1.2.0-rc --- targets/f18/api_symbols.csv | 2 +- targets/f7/api_symbols.csv | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/targets/f18/api_symbols.csv b/targets/f18/api_symbols.csv index 8d03e0e46c..6ce1736d02 100644 --- a/targets/f18/api_symbols.csv +++ b/targets/f18/api_symbols.csv @@ -1,5 +1,5 @@ entry,status,name,type,params -Version,+,78.1,, +Version,+,79.2,, Header,+,applications/services/bt/bt_service/bt.h,, Header,+,applications/services/bt/bt_service/bt_keys_storage.h,, Header,+,applications/services/cli/cli.h,, diff --git a/targets/f7/api_symbols.csv b/targets/f7/api_symbols.csv index b80f329f6d..b96e8770cc 100644 --- a/targets/f7/api_symbols.csv +++ b/targets/f7/api_symbols.csv @@ -1,5 +1,5 @@ entry,status,name,type,params -Version,+,78.1,, +Version,+,79.2,, Header,+,applications/drivers/subghz/cc1101_ext/cc1101_ext_interconnect.h,, Header,+,applications/main/archive/helpers/archive_helpers_ext.h,, Header,+,applications/main/subghz/subghz_fap.h,, From 66b1f0b94d4c2736ddde807c59b6f2fe2c774154 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Fri, 17 Jan 2025 00:17:23 +0000 Subject: [PATCH 68/85] Add 956MB to CODEOWNERS --nobuild --- .github/CODEOWNERS | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/CODEOWNERS b/.github/CODEOWNERS index 20b11bca37..7c740a839c 100644 --- a/.github/CODEOWNERS +++ b/.github/CODEOWNERS @@ -1 +1 @@ -* @Willy-JL @Sil333033 @HaxSam @MatthewKuKanich +* @Willy-JL @Sil333033 @HaxSam @MatthewKuKanich @956MB From f151527ffb89906b138031325adafb56d3e64695 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Fri, 17 Jan 2025 01:40:07 +0000 Subject: [PATCH 69/85] Move "info" CLI command back to flash --nobuild Fixes FBT when API versions mismatch --- applications/services/cli/application.fam | 9 --------- applications/services/cli/cli_commands.c | 8 +++----- 2 files changed, 3 insertions(+), 14 deletions(-) diff --git a/applications/services/cli/application.fam b/applications/services/cli/application.fam index b6c72ecd49..6051c7eee3 100644 --- a/applications/services/cli/application.fam +++ b/applications/services/cli/application.fam @@ -9,15 +9,6 @@ App( sdk_headers=["cli.h", "cli_vcp.h"], ) -App( - appid="info_cli", - targets=["f7"], - apptype=FlipperAppType.PLUGIN, - entry_point="cli_command_info_plugin_ep", - requires=["cli"], - sources=["cli_commands.c"], -) - App( appid="src_cli", targets=["f7"], diff --git a/applications/services/cli/cli_commands.c b/applications/services/cli/cli_commands.c index e53744d808..082a8f4ecd 100644 --- a/applications/services/cli/cli_commands.c +++ b/applications/services/cli/cli_commands.c @@ -689,7 +689,6 @@ void cli_command_clear(Cli* cli, FuriString* args, void* context) { printf("\e[2J\e[H"); } -CLI_PLUGIN_WRAPPER("info", cli_command_info) CLI_PLUGIN_WRAPPER("src", cli_command_src) CLI_PLUGIN_WRAPPER("neofetch", cli_command_neofetch) CLI_PLUGIN_WRAPPER("help", cli_command_help) @@ -703,10 +702,9 @@ CLI_PLUGIN_WRAPPER("i2c", cli_command_i2c) CLI_PLUGIN_WRAPPER("clear", cli_command_clear) void cli_commands_init(Cli* cli) { - cli_add_command(cli, "!", CliCommandFlagParallelSafe, cli_command_info_wrapper, (void*)true); - cli_add_command(cli, "info", CliCommandFlagParallelSafe, cli_command_info_wrapper, NULL); - cli_add_command( - cli, "device_info", CliCommandFlagParallelSafe, cli_command_info_wrapper, (void*)true); + cli_add_command(cli, "!", CliCommandFlagParallelSafe, cli_command_info, (void*)true); + cli_add_command(cli, "info", CliCommandFlagParallelSafe, cli_command_info, NULL); + cli_add_command(cli, "device_info", CliCommandFlagParallelSafe, cli_command_info, (void*)true); cli_add_command(cli, "source", CliCommandFlagParallelSafe, cli_command_src_wrapper, NULL); cli_add_command(cli, "src", CliCommandFlagParallelSafe, cli_command_src_wrapper, NULL); cli_add_command( From b9c028984709e2037317cb66fcb9be237b5324dd Mon Sep 17 00:00:00 2001 From: Alexander Bays Date: Thu, 16 Jan 2025 19:44:11 -0600 Subject: [PATCH 70/85] Archive: Add dynamic paths to browser tab (#322) * feat(Archive): Adds dynamic paths to browser tab I thought it would be cool to be able to see when I was in say the `apps_data/flipchess` folder, or some other nested folder, and have "flipchess" be shown rather than the just "Browser" all the time. It's not a huge or really crucial change, just a personal modification that some people may also find useful. * fix(Archive): Clean up, built-ins, safer Cleaned up `archive_update_formatted_path` function using switch case, and also using the built in furi functions where possible. Also removed the arbitrary and unnecessary `path_buf[256]`, making formatting the path in the Brief section more memory safe. * Rename setting and use setting_enum() * Remove prev_path * Enum names * Single text draw call * Rename to statusbar title * Revert "Rename to statusbar title" This reverts commit 243f2a754ff19e4d45eb7d287500cd19739bb8b6. * Revert "Single text draw call" This reverts commit 3bbe30449ba9566ca779c685b63fc452ba630dc8. * Simpler fix * Shorter setting label * Update changelog --------- Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com> --- CHANGELOG.md | 1 + .../main/archive/helpers/archive_browser.c | 3 + .../main/archive/views/archive_browser_view.c | 82 +++++++++++++++++-- .../main/archive/views/archive_browser_view.h | 3 + ...momentum_app_scene_interface_filebrowser.c | 26 ++++++ lib/momentum/settings.c | 2 + lib/momentum/settings.h | 9 ++ 7 files changed, 121 insertions(+), 5 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index d01ea93def..7abbc22ffe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Apps: - Games: Pinball0 (by @rdefeo) - NFC: Metroflip (by @luu176) +- Archive: Setting to show dynamic path in file browser statusbar (#322 by @956MB) - CLI: Add `clear` and `cls` commands, add `did you mean ...?` command suggestion (#342 by @dexvleads) - Main Menu: Add coverflow menu style (#314 by @CodyTolene) - BadKB: Added german Mac keyboard Layout (#325 by @Cloudy261) diff --git a/applications/main/archive/helpers/archive_browser.c b/applications/main/archive/helpers/archive_browser.c index ea93c9e055..695f11c78f 100644 --- a/applications/main/archive/helpers/archive_browser.c +++ b/applications/main/archive/helpers/archive_browser.c @@ -34,6 +34,7 @@ static void model->list_offset = 0; model->list_loading = true; model->folder_loading = false; + browser->path_changed = true; }, false); archive_update_offset(browser); @@ -556,6 +557,7 @@ void archive_switch_tab(ArchiveBrowserView* browser, InputKey key) { archive_set_tab(browser, tab); furi_string_set(browser->path, archive_get_default_path(tab)); + browser->path_changed = true; bool tab_empty = true; bool is_app_tab = furi_string_start_with_str(browser->path, "/app:"); if(tab == ArchiveTabFavorites) { @@ -644,6 +646,7 @@ void archive_leave_dir(ArchiveBrowserView* browser) { size_t dirname_start = furi_string_search_rchar(browser->path, '/'); furi_string_left(browser->path, dirname_start); + browser->path_changed = true; const char* switch_ext = NULL; switch(archive_get_tab(browser)) { diff --git a/applications/main/archive/views/archive_browser_view.c b/applications/main/archive/views/archive_browser_view.c index ecdf483415..658ae1a924 100644 --- a/applications/main/archive/views/archive_browser_view.c +++ b/applications/main/archive/views/archive_browser_view.c @@ -58,6 +58,58 @@ void archive_browser_set_callback( browser->context = context; } +static void archive_update_formatted_path(ArchiveBrowserViewModel* model) { + ArchiveBrowserView* browser = model->archive->browser; + if(!browser->path_changed) { + return; + } + + if(momentum_settings.browser_path_mode == BrowserPathOff || archive_is_home(browser)) { + furi_string_set(browser->formatted_path, ArchiveTabNames[model->tab_idx]); + } else { + const char* path = furi_string_get_cstr(browser->path); + switch(momentum_settings.browser_path_mode) { + case BrowserPathFull: + furi_string_set(browser->formatted_path, browser->path); + break; + + case BrowserPathBrief: { + furi_string_reset(browser->formatted_path); + FuriString* token = furi_string_alloc(); + FuriString* remaining = furi_string_alloc_set(path); + + while(furi_string_size(remaining) > 0) { + size_t slash_pos = furi_string_search_char(remaining, '/'); + if(slash_pos == FURI_STRING_FAILURE) { + furi_string_cat_printf( + browser->formatted_path, "/%s", furi_string_get_cstr(remaining)); + break; + } + furi_string_set_n(token, remaining, 0, slash_pos); + if(furi_string_size(token) > 0) { + furi_string_cat_printf( + browser->formatted_path, "/%c", furi_string_get_char(token, 0)); + } + furi_string_right(remaining, slash_pos + 1); + } + + furi_string_free(token); + furi_string_free(remaining); + break; + } + + case BrowserPathCurrent: + path_extract_basename(path, browser->formatted_path); + break; + + default: + break; + } + } + + browser->path_changed = false; +} + static void render_item_menu(Canvas* canvas, ArchiveBrowserViewModel* model) { if(menu_array_size(model->context_menu) == 0) { // Need init context menu @@ -275,10 +327,15 @@ static void draw_list(Canvas* canvas, ArchiveBrowserViewModel* model) { static void archive_render_status_bar(Canvas* canvas, ArchiveBrowserViewModel* model) { furi_assert(model); - const char* tab_name = ArchiveTabNames[model->tab_idx]; - if(model->tab_idx == ArchiveTabSearch && - scene_manager_get_scene_state(model->archive->scene_manager, ArchiveAppSceneSearch)) { - tab_name = "Searching"; + const char* tab_name = NULL; + if(model->tab_idx == ArchiveTabSearch) { + if(scene_manager_get_scene_state(model->archive->scene_manager, ArchiveAppSceneSearch)) { + tab_name = "Searching"; + } else { + tab_name = ArchiveTabNames[model->tab_idx]; + } + } else { + archive_update_formatted_path(model); } bool clip = model->clipboard != NULL; @@ -293,7 +350,19 @@ static void archive_render_status_bar(Canvas* canvas, ArchiveBrowserViewModel* m canvas_draw_rframe(canvas, 0, 0, 51, 13, 1); // frame canvas_draw_line(canvas, 49, 1, 49, 11); // shadow right canvas_draw_line(canvas, 1, 11, 49, 11); // shadow bottom - canvas_draw_str_aligned(canvas, 25, 9, AlignCenter, AlignBottom, tab_name); + if(tab_name) { + canvas_draw_str_aligned(canvas, 25, 9, AlignCenter, AlignBottom, tab_name); + } else { + elements_scrollable_text_line_centered( + canvas, + 25, + 9, + 45, + model->archive->browser->formatted_path, + model->scroll_counter, + false, + true); + } if(clip) { canvas_draw_rframe(canvas, 69, 0, 25, 13, 1); @@ -593,6 +662,8 @@ ArchiveBrowserView* browser_alloc(void) { browser->scroll_timer = furi_timer_alloc(browser_scroll_timer, FuriTimerTypePeriodic, browser); browser->path = furi_string_alloc_set(archive_get_default_path(TAB_DEFAULT)); + browser->formatted_path = furi_string_alloc(); + browser->path_changed = true; with_view_model( browser->view, @@ -626,6 +697,7 @@ void browser_free(ArchiveBrowserView* browser) { false); furi_string_free(browser->path); + furi_string_free(browser->formatted_path); view_free(browser->view); free(browser); diff --git a/applications/main/archive/views/archive_browser_view.h b/applications/main/archive/views/archive_browser_view.h index 6a35cb145b..b5db1b96d8 100644 --- a/applications/main/archive/views/archive_browser_view.h +++ b/applications/main/archive/views/archive_browser_view.h @@ -3,6 +3,7 @@ #include "../helpers/archive_files.h" #include "../helpers/archive_favorites.h" +#include "archive/archive.h" #include #include #include @@ -88,6 +89,8 @@ struct ArchiveBrowserView { ArchiveBrowserViewCallback callback; void* context; FuriString* path; + FuriString* formatted_path; + bool path_changed; InputKey last_tab_switch_dir; bool is_root; FuriTimer* scroll_timer; diff --git a/applications/main/momentum_app/scenes/momentum_app_scene_interface_filebrowser.c b/applications/main/momentum_app/scenes/momentum_app_scene_interface_filebrowser.c index 0a3f98b12e..7032b2f9c6 100644 --- a/applications/main/momentum_app/scenes/momentum_app_scene_interface_filebrowser.c +++ b/applications/main/momentum_app/scenes/momentum_app_scene_interface_filebrowser.c @@ -7,6 +7,13 @@ enum VarItemListIndex { VarItemListIndexFavoriteTimeout, }; +const char* const browser_path_names[BrowserPathModeCount] = { + "OFF", + "Current", + "Brief", + "Full", +}; + void momentum_app_scene_interface_filebrowser_var_item_list_callback(void* context, uint32_t index) { MomentumApp* app = context; view_dispatcher_send_custom_event(app->view_dispatcher, index); @@ -38,6 +45,15 @@ static void app->save_settings = true; } +static void + momentum_app_scene_interface_filebrowser_browser_path_mode_changed(VariableItem* item) { + MomentumApp* app = variable_item_get_context(item); + uint8_t index = variable_item_get_current_value_index(item); + variable_item_set_current_value_text(item, browser_path_names[index]); + momentum_settings.browser_path_mode = index; + app->save_settings = true; +} + static void momentum_app_scene_interface_filebrowser_favorite_timeout_changed(VariableItem* item) { MomentumApp* app = variable_item_get_context(item); uint32_t value = variable_item_get_current_value_index(item); @@ -80,6 +96,16 @@ void momentum_app_scene_interface_filebrowser_on_enter(void* context) { variable_item_set_current_value_index(item, momentum_settings.show_internal_tab); variable_item_set_current_value_text(item, momentum_settings.show_internal_tab ? "ON" : "OFF"); + item = variable_item_list_add( + var_item_list, + "Show Path", + BrowserPathModeCount, + momentum_app_scene_interface_filebrowser_browser_path_mode_changed, + app); + variable_item_set_current_value_index(item, momentum_settings.browser_path_mode); + variable_item_set_current_value_text( + item, browser_path_names[momentum_settings.browser_path_mode]); + item = variable_item_list_add( var_item_list, "Favorite Timeout", diff --git a/lib/momentum/settings.c b/lib/momentum/settings.c index 30fc3480bd..9da9a47626 100644 --- a/lib/momentum/settings.c +++ b/lib/momentum/settings.c @@ -30,6 +30,7 @@ MomentumSettings momentum_settings = { .sort_dirs_first = true, // ON .show_hidden_files = false, // OFF .show_internal_tab = false, // OFF + .browser_path_mode = BrowserPathOff, // OFF .favorite_timeout = 0, // OFF .dark_mode = false, // OFF .rgb_backlight = false, // OFF @@ -100,6 +101,7 @@ static const struct { {setting_bool(sort_dirs_first)}, {setting_bool(show_hidden_files)}, {setting_bool(show_internal_tab)}, + {setting_enum(browser_path_mode, BrowserPathModeCount)}, {setting_uint(favorite_timeout, 0, 60)}, {setting_bool(dark_mode)}, {setting_bool(rgb_backlight)}, diff --git a/lib/momentum/settings.h b/lib/momentum/settings.h index 54cc74e53e..573924ee63 100644 --- a/lib/momentum/settings.h +++ b/lib/momentum/settings.h @@ -55,6 +55,14 @@ typedef union __attribute__((packed)) { uint32_t value; } ScreenFrameColor; +typedef enum { + BrowserPathOff, + BrowserPathCurrent, + BrowserPathBrief, + BrowserPathFull, + BrowserPathModeCount, +} BrowserPathMode; + typedef struct { char asset_pack[ASSET_PACKS_NAME_LEN]; uint32_t anim_speed; @@ -79,6 +87,7 @@ typedef struct { bool sort_dirs_first; bool show_hidden_files; bool show_internal_tab; + BrowserPathMode browser_path_mode; uint32_t favorite_timeout; bool dark_mode; bool rgb_backlight; From afdeb312e676fb51d63af17e24eb527ff8e66000 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Mon, 20 Jan 2025 23:24:36 +0000 Subject: [PATCH 71/85] Update apps --nobuild - FlipSocial: Bug fixes (by jblanked) - FlipWiFi: Bug fixes (by jblanked) - KeyCopier: Support for formats AR4, M1, AM7, Y2, Y11, S22, NA25, CO88, LW4, LW5, NA12, RU45, H75, B102, Y159, KA14, YM63, SFIC, RV (by HonestLocksmith) - Picopass: Save SR as legacy from saved menu (by bettse) - Pokemon Trade Tool: Bug fixes (by kbembedded) - uPython: Optimized speaker note constants to save space (by ofabel) - WebCrawler: New BROWSE option to read HTML pages, many bugfixes (by jblanked) --- CHANGELOG.md | 13 +++++++------ SConstruct | 2 +- applications/external | 2 +- 3 files changed, 9 insertions(+), 8 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7abbc22ffe..4908abc0e4 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -31,17 +31,18 @@ - ESP Flasher: Add c3 and c6 to s3 option (by @jaylikesbunda), update Marauder bins to 1.1.0 (by @justcallmekoko) - FlipBIP: Refactor to make adding coins easier (by @xtruan) - FlipLibrary: Wikipedia, dog facts, random quotes, weather, asset price, predictions, trivia, advice, uuid and many more, bug fixes (by @jblanked), holidays, improvements to connectivity and progress (by @jamisonderek) - - FlipSocial: Improved authentication, loading screens, memory fixes, bio and friend counts, new feed screen with posted time, search users and contacts, home announcements and notifications, private feed option, endless feed (by @jblanked), RPC_KEYBOARD support (by @jamisonderek) + - FlipSocial: Improved authentication, loading screens, many bug fixes, bio and friend counts, new feed screen with posted time, search users and contacts, home announcements and notifications, private feed option, endless feed (by @jblanked), RPC_KEYBOARD support (by @jamisonderek) - FlipStore: Many bugfixes, support downloading ESP32 and VGM firmwares and Github repos, allow deleting apps, memory fixes, update Marauder, use Flipper catalog API (by @jblanked), more improvements (by @jamisonderek) - FlipTrader: Improved progress display, added connectivity check on startup (by @jamisonderek) - FlipWeather: Stability improvements (by @jblanked), improved progress display, added connectivity check on startup (by @jamisonderek) - - FlipWiFi: Improve error handling, update scan loading and parsing, fix crash when saving networks manually, max 100 network scan, add some fast commands (by @jblanked), add connectivity check on startup (by @jamisonderek) + - FlipWiFi: Improve error handling, update scan loading and parsing, many bug/crash fixes, max 100 network scan, add some fast commands (by @jblanked), add connectivity check on startup (by @jamisonderek) + - KeyCopier: Support for formats AR4, M1, AM7, Y2, Y11, S22, NA25, CO88, LW4, LW5, NA12, RU45, H75, B102, Y159, KA14, YM63, SFIC, RV (by @HonestLocksmith) - Oscilloscope: Add simple spectrum analyser and basic software scaling support (by @anfractuosity) - - Picopass: Handle write key retry when a different card is presented (by @bettse) - - Pokemon Trade Tool: Update to gblink v0.63 which includes saving/loading of pin configurations for the EXT link interface (by @kbembedded) + - Picopass: Handle write key retry when a different card is presented, save SR as legacy from saved menu (by @bettse) + - Pokemon Trade Tool: Update to gblink v0.63 which includes saving/loading of pin configurations for the EXT link interface, bug fixes (by @kbembedded) - Snake 2.0: Progress saving, endless mode, game timer, fruit positioning bugfixes (by @Willzvul) - - uPython: Enabled extra functions for the `random` module (by @ofabel) - - WebCrawler: Improved progress display, added connectivity check on startup (by @jamisonderek) + - uPython: Enabled extra functions for the `random` module, optimized speaker note constants to save space (by @ofabel) + - WebCrawler: New BROWSE option to read HTML pages, many bugfixes (by @jblanked), improved progress display, added connectivity check on startup (by @jamisonderek) - WiFi Marauder: AirTag Spoof, flipper blespam, sniff airtag and flipper, list airtag (by @0xchocolate) - UL: NFC Magic: Added possibility to write 7b MFC to Gen1 tags (by @mishamyte) - UL: Unitemp: Fixed handling of hPa units (by @shininghero) diff --git a/SConstruct b/SConstruct index 7f9fef8ba0..335bdde3c6 100644 --- a/SConstruct +++ b/SConstruct @@ -347,7 +347,7 @@ black_base_args = [ "--include", '"(\\.scons|\\.py|SConscript|SConstruct|\\.fam)$"', "--exclude", - '"(mp_flipper/flipperzero/random\\.py)$"', + '"(mp_flipper/(flipperzero|docs)/.*\\.py)$"', ] distenv.PhonyTarget( diff --git a/applications/external b/applications/external index 15f866270c..760e4ac1f6 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit 15f866270c6d57290a67bdd3d59957a117b3c38f +Subproject commit 760e4ac1f68201c41c2cb4ac0810d092eeda6ba8 From a3582c1426777c732dd7a2d3c39ebf0ae51bb493 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Mon, 20 Jan 2025 23:48:05 +0000 Subject: [PATCH 72/85] Apps: Add FlipWorld (by jblanked), update ESP bins --- CHANGELOG.md | 3 ++- applications/external | 2 +- firmware.scons | 1 + 3 files changed, 4 insertions(+), 2 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 4908abc0e4..e18a1c9f17 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ ### Added: - Apps: - Games: Pinball0 (by @rdefeo) + - GPIO: FlipperHTTP: FlipWorld (by @jblanked) - NFC: Metroflip (by @luu176) - Archive: Setting to show dynamic path in file browser statusbar (#322 by @956MB) - CLI: Add `clear` and `cls` commands, add `did you mean ...?` command suggestion (#342 by @dexvleads) @@ -28,7 +29,7 @@ - Color Guess: Simplify app code (by @leedave) - Countdown Timer: Default to 60 seconds on open (by @andrejka27) - Cross Remote: Fix Sub-GHz actions rolling code support, animations for transmit, allow interrupting chain (by @leedave), loop transmit feature (by @miccayo) - - ESP Flasher: Add c3 and c6 to s3 option (by @jaylikesbunda), update Marauder bins to 1.1.0 (by @justcallmekoko) + - ESP Flasher: Add c3 and c6 to s3 option (by @jaylikesbunda), update bins for Marauder to 1.2.0 (by @justcallmekoko) and FlipperHTTP to 1.6.1 (by @jblanked) - FlipBIP: Refactor to make adding coins easier (by @xtruan) - FlipLibrary: Wikipedia, dog facts, random quotes, weather, asset price, predictions, trivia, advice, uuid and many more, bug fixes (by @jblanked), holidays, improvements to connectivity and progress (by @jamisonderek) - FlipSocial: Improved authentication, loading screens, many bug fixes, bio and friend counts, new feed screen with posted time, search users and contacts, home announcements and notifications, private feed option, endless feed (by @jblanked), RPC_KEYBOARD support (by @jamisonderek) diff --git a/applications/external b/applications/external index 760e4ac1f6..d117b15db0 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit 760e4ac1f68201c41c2cb4ac0810d092eeda6ba8 +Subproject commit d117b15db0cd121f5c0616954bc7d7e343535079 diff --git a/firmware.scons b/firmware.scons index 522181e2f8..799f9c18a9 100644 --- a/firmware.scons +++ b/firmware.scons @@ -39,6 +39,7 @@ env = ENV.Clone( Dir("!applications/external/flip_trader"), Dir("!applications/external/flip_weather"), Dir("!applications/external/flip_wifi"), + Dir("!applications/external/flip_world"), Dir("!applications/external/web_crawler"), ], LIBPATH=[ From cdf84c46d7d0258711e2bd6ab42fdd071a1dd105 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Mon, 20 Jan 2025 23:57:52 +0000 Subject: [PATCH 73/85] Apps: Add USB Game Controller (by expected-ingot) --- CHANGELOG.md | 1 + applications/external | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index e18a1c9f17..90892807ee 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -8,6 +8,7 @@ - Games: Pinball0 (by @rdefeo) - GPIO: FlipperHTTP: FlipWorld (by @jblanked) - NFC: Metroflip (by @luu176) + - USB: USB Game Controller (by @expected-ingot) - Archive: Setting to show dynamic path in file browser statusbar (#322 by @956MB) - CLI: Add `clear` and `cls` commands, add `did you mean ...?` command suggestion (#342 by @dexvleads) - Main Menu: Add coverflow menu style (#314 by @CodyTolene) diff --git a/applications/external b/applications/external index d117b15db0..64853e68f4 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit d117b15db0cd121f5c0616954bc7d7e343535079 +Subproject commit 64853e68f41fde4b30e1c866a0ed2bdb6e64e715 From 54378dfbe03e6cdca12b25e45b19a5909c67b58f Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Mon, 20 Jan 2025 23:58:26 +0000 Subject: [PATCH 74/85] No more linting extapps, tired of merge conflicts --nobuild --- SConstruct | 6 ++++-- firmware.scons | 12 ++---------- 2 files changed, 6 insertions(+), 12 deletions(-) diff --git a/SConstruct b/SConstruct index 335bdde3c6..108ff26ba8 100644 --- a/SConstruct +++ b/SConstruct @@ -327,8 +327,9 @@ firmware_env.Append( IMG_LINT_SOURCES=[ # Image assets "applications", - "!applications/external", "assets", + # Avoid merge conflicts + "!applications/external", ], ) @@ -346,8 +347,9 @@ black_commandline = [ black_base_args = [ "--include", '"(\\.scons|\\.py|SConscript|SConstruct|\\.fam)$"', + # Avoid merge conflicts "--exclude", - '"(mp_flipper/(flipperzero|docs)/.*\\.py)$"', + '"applications/external"', ] distenv.PhonyTarget( diff --git a/firmware.scons b/firmware.scons index 799f9c18a9..e53fd8edf5 100644 --- a/firmware.scons +++ b/firmware.scons @@ -31,16 +31,8 @@ env = ENV.Clone( Dir("applications"), # Not C code Dir("!applications/system/js_app/packages"), - # Frequently updated and very different formatting, painful to merge - Dir("!applications/external/nfc_playlist"), - Dir("!applications/external/flip_library"), - Dir("!applications/external/flip_social"), - Dir("!applications/external/flip_store"), - Dir("!applications/external/flip_trader"), - Dir("!applications/external/flip_weather"), - Dir("!applications/external/flip_wifi"), - Dir("!applications/external/flip_world"), - Dir("!applications/external/web_crawler"), + # Avoid merge conflicts + Dir("!applications/external"), ], LIBPATH=[ "${LIB_DIST_DIR}", From bc96724e9def1e3921a71ca4ad96f8487585dedb Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Tue, 21 Jan 2025 02:39:30 +0000 Subject: [PATCH 75/85] Update apps --nobuild - NFC Maker: Allow setting custom UID, code cleanup (by Willy-JL), show extra symbols for WiFi SSID/Password and Emails (by 956MB) - Nightstand: Show battery percentage and show AM/PM in timer mode (by 956MB) - USB Game Controller: Restore prev profile instead of reboot (by Willy-JL) --- CHANGELOG.md | 2 ++ applications/external | 2 +- 2 files changed, 3 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 90892807ee..f65b203c26 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -39,6 +39,8 @@ - FlipWeather: Stability improvements (by @jblanked), improved progress display, added connectivity check on startup (by @jamisonderek) - FlipWiFi: Improve error handling, update scan loading and parsing, many bug/crash fixes, max 100 network scan, add some fast commands (by @jblanked), add connectivity check on startup (by @jamisonderek) - KeyCopier: Support for formats AR4, M1, AM7, Y2, Y11, S22, NA25, CO88, LW4, LW5, NA12, RU45, H75, B102, Y159, KA14, YM63, SFIC, RV (by @HonestLocksmith) + - NFC Maker: Allow setting custom UID, code cleanup (by @Willy-JL), show extra symbols for WiFi SSID/Password and Emails (by @956MB) + - Nightstand: Show battery percentage and show AM/PM in timer mode (by @956MB) - Oscilloscope: Add simple spectrum analyser and basic software scaling support (by @anfractuosity) - Picopass: Handle write key retry when a different card is presented, save SR as legacy from saved menu (by @bettse) - Pokemon Trade Tool: Update to gblink v0.63 which includes saving/loading of pin configurations for the EXT link interface, bug fixes (by @kbembedded) diff --git a/applications/external b/applications/external index 64853e68f4..66bc0a40d8 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit 64853e68f41fde4b30e1c866a0ed2bdb6e64e715 +Subproject commit 66bc0a40d89dac291de8a0bab69736860ef273df From 1e9db6bfafa42e0a6f8a569545c10ede71613396 Mon Sep 17 00:00:00 2001 From: Alexander Bays Date: Mon, 20 Jan 2025 20:52:50 -0600 Subject: [PATCH 76/85] Main Menu: Fixes scrollable text in CoverFlow (#357) - `elements_scrollable_text_line_centered` was using 0 on scroll, so text wider than the screen would not scroll. Uses `menu_scroll_counter` to fix it. - Also makes the width 124 to give a 1px margin so the text isn't touching the outside lines --- applications/services/gui/modules/menu.c | 5 +++-- 1 file changed, 3 insertions(+), 2 deletions(-) diff --git a/applications/services/gui/modules/menu.c b/applications/services/gui/modules/menu.c index 1c7770cc5a..d7ca188fde 100644 --- a/applications/services/gui/modules/menu.c +++ b/applications/services/gui/modules/menu.c @@ -548,13 +548,14 @@ static void menu_draw_callback(Canvas* canvas, void* _model) { // Draw label for center item if(center_item) { menu_get_name(center_item, name, false); + size_t scroll_counter = menu_scroll_counter(model, true); elements_scrollable_text_line_centered( canvas, pos_x_center, (pos_y_center + icon_size / 2) + pos_y_offset, - 126, + 124, name, - 0, + scroll_counter, false, true); } From 98f4ed2cbcd893c1a5f3fb939bfd2b2ad3394e64 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Tue, 21 Jan 2025 23:28:25 +0000 Subject: [PATCH 77/85] Apps: Add FM Radio (by coolshrimp) --nobuild --- CHANGELOG.md | 1 + applications/external | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index f65b203c26..4d214b6999 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -7,6 +7,7 @@ - Apps: - Games: Pinball0 (by @rdefeo) - GPIO: FlipperHTTP: FlipWorld (by @jblanked) + - GPIO: TEA5767 FM Radio (by @coolshrimp) - NFC: Metroflip (by @luu176) - USB: USB Game Controller (by @expected-ingot) - Archive: Setting to show dynamic path in file browser statusbar (#322 by @956MB) diff --git a/applications/external b/applications/external index 66bc0a40d8..b1d5158975 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit 66bc0a40d89dac291de8a0bab69736860ef273df +Subproject commit b1d5158975f0edf35ca59bf327b4c23b024474fb From b03b0ac292b69130bf338d7384895856b4cbe656 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Tue, 21 Jan 2025 23:37:56 +0000 Subject: [PATCH 78/85] shhhh you saw nothing --nobuild --- applications/main/momentum_app/application.fam | 1 - applications/main/momentum_app/icon.png | Bin 95 -> 0 bytes 2 files changed, 1 deletion(-) delete mode 100644 applications/main/momentum_app/icon.png diff --git a/applications/main/momentum_app/application.fam b/applications/main/momentum_app/application.fam index e4b228396a..d4de39d9c9 100644 --- a/applications/main/momentum_app/application.fam +++ b/applications/main/momentum_app/application.fam @@ -7,6 +7,5 @@ App( flags=["InsomniaSafe"], icon="A_Momentum_14", order=90, - fap_icon="icon.png", fap_category="assets", ) diff --git a/applications/main/momentum_app/icon.png b/applications/main/momentum_app/icon.png deleted file mode 100644 index ae8240110895af0336dd649313aa38dae9d76031..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95 zcmeAS@N?(olHy`uVBq!ia0vp^AT}2xkYHHq`AGmssd>6MhE&W+ws?Nv$bkc2dK*6; sWL9%zQ)6RW_ML~vU1r7(i5U_S4B5P_k5;;FISJC~>FVdQ&MBb@09P3s9{>OV From 5e33a20c4b63f33a19e70d73136102328da119a4 Mon Sep 17 00:00:00 2001 From: jay candel Date: Wed, 22 Jan 2025 11:45:41 +0800 Subject: [PATCH 79/85] Main Menu: Add 'Menu Style' submenu (#359) * submenu on ok * Avoid potential deadlock * Update changelog --------- Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com> --- CHANGELOG.md | 1 + .../scenes/momentum_app_scene_config.h | 1 + ...mentum_app_scene_interface_graphics_pack.c | 19 ++++---- .../momentum_app_scene_interface_mainmenu.c | 5 +- ...entum_app_scene_interface_mainmenu_style.c | 46 +++++++++++++++++++ 5 files changed, 62 insertions(+), 10 deletions(-) create mode 100644 applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_style.c diff --git a/CHANGELOG.md b/CHANGELOG.md index 4d214b6999..8741619957 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -13,6 +13,7 @@ - Archive: Setting to show dynamic path in file browser statusbar (#322 by @956MB) - CLI: Add `clear` and `cls` commands, add `did you mean ...?` command suggestion (#342 by @dexvleads) - Main Menu: Add coverflow menu style (#314 by @CodyTolene) +- MNTM Settings: Add Menu Style submenu for easier selection (#359 by @jaylikesbunda) - BadKB: Added german Mac keyboard Layout (#325 by @Cloudy261) - UL: Sub-GHz: Jolly Motors support with add manually (by @pkooiman & @xMasterX) - OFW: Desktop: Add winter animations (by @Astrrra) diff --git a/applications/main/momentum_app/scenes/momentum_app_scene_config.h b/applications/main/momentum_app/scenes/momentum_app_scene_config.h index c9eb6e9967..2c18840b45 100644 --- a/applications/main/momentum_app/scenes/momentum_app_scene_config.h +++ b/applications/main/momentum_app/scenes/momentum_app_scene_config.h @@ -6,6 +6,7 @@ ADD_SCENE(momentum_app, interface_mainmenu, InterfaceMainmenu) ADD_SCENE(momentum_app, interface_mainmenu_add, InterfaceMainmenuAdd) ADD_SCENE(momentum_app, interface_mainmenu_add_main, InterfaceMainmenuAddMain) ADD_SCENE(momentum_app, interface_mainmenu_reset, InterfaceMainmenuReset) +ADD_SCENE(momentum_app, interface_mainmenu_style, InterfaceMainmenuStyle) ADD_SCENE(momentum_app, interface_lockscreen, InterfaceLockscreen) ADD_SCENE(momentum_app, interface_statusbar, InterfaceStatusbar) ADD_SCENE(momentum_app, interface_filebrowser, InterfaceFilebrowser) diff --git a/applications/main/momentum_app/scenes/momentum_app_scene_interface_graphics_pack.c b/applications/main/momentum_app/scenes/momentum_app_scene_interface_graphics_pack.c index a14aca398b..da590c2eb1 100644 --- a/applications/main/momentum_app/scenes/momentum_app_scene_interface_graphics_pack.c +++ b/applications/main/momentum_app/scenes/momentum_app_scene_interface_graphics_pack.c @@ -2,14 +2,7 @@ void momentum_app_scene_interface_graphics_pack_submenu_callback(void* context, uint32_t index) { MomentumApp* app = context; - strlcpy( - momentum_settings.asset_pack, - index == 0 ? "" : *CharList_get(app->asset_pack_names, index - 1), - ASSET_PACKS_NAME_LEN); - app->asset_pack_index = index; - app->save_settings = true; - app->apply_pack = true; - scene_manager_previous_scene(app->scene_manager); + view_dispatcher_send_custom_event(app->view_dispatcher, index); } void momentum_app_scene_interface_graphics_pack_on_enter(void* context) { @@ -36,11 +29,19 @@ void momentum_app_scene_interface_graphics_pack_on_enter(void* context) { } bool momentum_app_scene_interface_graphics_pack_on_event(void* context, SceneManagerEvent event) { - UNUSED(context); + MomentumApp* app = context; bool consumed = false; if(event.type == SceneManagerEventTypeCustom) { consumed = true; + strlcpy( + momentum_settings.asset_pack, + event.event == 0 ? "" : *CharList_get(app->asset_pack_names, event.event - 1), + ASSET_PACKS_NAME_LEN); + app->asset_pack_index = event.event; + app->save_settings = true; + app->apply_pack = true; + scene_manager_previous_scene(app->scene_manager); } return consumed; diff --git a/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu.c b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu.c index afad8f7d24..4743e08b35 100644 --- a/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu.c +++ b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu.c @@ -77,8 +77,8 @@ void momentum_app_scene_interface_mainmenu_on_enter(void* context) { MenuStyleCount, momentum_app_scene_interface_mainmenu_menu_style_changed, app); - variable_item_set_current_value_index(item, momentum_settings.menu_style); variable_item_set_current_value_text(item, menu_style_names[momentum_settings.menu_style]); + variable_item_set_current_value_index(item, momentum_settings.menu_style); variable_item_list_add(var_item_list, "Reset Menu", 0, NULL, app); @@ -127,6 +127,9 @@ bool momentum_app_scene_interface_mainmenu_on_event(void* context, SceneManagerE app->scene_manager, MomentumAppSceneInterfaceMainmenu, event.event); consumed = true; switch(event.event) { + case VarItemListIndexMenuStyle: + scene_manager_next_scene(app->scene_manager, MomentumAppSceneInterfaceMainmenuStyle); + break; case VarItemListIndexResetMenu: scene_manager_next_scene(app->scene_manager, MomentumAppSceneInterfaceMainmenuReset); break; diff --git a/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_style.c b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_style.c new file mode 100644 index 0000000000..ec373fa6bf --- /dev/null +++ b/applications/main/momentum_app/scenes/momentum_app_scene_interface_mainmenu_style.c @@ -0,0 +1,46 @@ +#include "../momentum_app.h" + +// Reference the menu style names from mainmenu scene +extern const char* const menu_style_names[MenuStyleCount]; + +void momentum_app_scene_interface_mainmenu_style_submenu_callback(void* context, uint32_t index) { + MomentumApp* app = context; + view_dispatcher_send_custom_event(app->view_dispatcher, index); +} + +void momentum_app_scene_interface_mainmenu_style_on_enter(void* context) { + MomentumApp* app = context; + Submenu* submenu = app->submenu; + + for(size_t i = 0; i < MenuStyleCount; i++) { + submenu_add_item( + submenu, + menu_style_names[i], + i, + momentum_app_scene_interface_mainmenu_style_submenu_callback, + app); + } + + submenu_set_header(submenu, "Choose Menu Style:"); + submenu_set_selected_item(submenu, momentum_settings.menu_style); + view_dispatcher_switch_to_view(app->view_dispatcher, MomentumAppViewSubmenu); +} + +bool momentum_app_scene_interface_mainmenu_style_on_event(void* context, SceneManagerEvent event) { + MomentumApp* app = context; + bool consumed = false; + + if(event.type == SceneManagerEventTypeCustom) { + consumed = true; + momentum_settings.menu_style = event.event; + app->save_settings = true; + scene_manager_previous_scene(app->scene_manager); + } + + return consumed; +} + +void momentum_app_scene_interface_mainmenu_style_on_exit(void* context) { + MomentumApp* app = context; + submenu_reset(app->submenu); +} From e6ccd22c30c62c22642a4e6438693f67b17c5c24 Mon Sep 17 00:00:00 2001 From: jay candel Date: Wed, 22 Jan 2025 11:46:07 +0800 Subject: [PATCH 80/85] IR: Update universals (#358) * Add files via upload * fix * update audio.ir * Update tv.ir * Update audio.ir * Fix duplicate check script missing first signal dupes * Remove last dupes * Update changelog --------- Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com> --- CHANGELOG.md | 2 +- .../resources/infrared/assets/audio.ir | 209 +++- .../resources/infrared/assets/bluray_dvd.ir | 8 +- .../infrared/resources/infrared/assets/tv.ir | 1113 ++++++++++++++++- scripts/fix_ir_universals.py | 2 +- 5 files changed, 1279 insertions(+), 55 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 8741619957..a4c6560616 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -53,7 +53,7 @@ - UL: NFC Magic: Added possibility to write 7b MFC to Gen1 tags (by @mishamyte) - UL: Unitemp: Fixed handling of hPa units (by @shininghero) - UL: Fixed apps for firmware USB CDC callback changes (by @xMasterX) -- Infrared: Update universal bluray remote (#348 by @jaylikesbunda) +- Infrared: Update audio, bluray and tv universal remotes (#348 #358 by @jaylikesbunda) - NFC: - OFW: Replace mf_classic_dict.nfc with Proxmark3 version (by @onovy) - OFW: More station IDs for Clipper plugin (by @ted-logan) diff --git a/applications/main/infrared/resources/infrared/assets/audio.ir b/applications/main/infrared/resources/infrared/assets/audio.ir index 271dcd217f..27f434a961 100644 --- a/applications/main/infrared/resources/infrared/assets/audio.ir +++ b/applications/main/infrared/resources/infrared/assets/audio.ir @@ -1,7 +1,7 @@ Filetype: IR library file Version: 1 -# Last Updated 5th Oct, 2024 -# Last Checked 5th Oct, 2024 +# Last Updated 21st Jan, 2025 +# Last Checked 21st Jan, 2025 # name: Power type: parsed @@ -5110,7 +5110,6 @@ address: 00 00 00 00 command: 15 00 00 00 # # Model: Sony MHC_GSX75 -# name: Pause type: parsed protocol: SIRC20 @@ -5118,7 +5117,6 @@ address: 3A 07 00 00 command: 38 00 00 00 # # Model: Philips FW750C -# name: Pause type: parsed protocol: RC5 @@ -5162,7 +5160,6 @@ address: A2 00 00 00 command: 1B 00 00 00 # # Model: GPX cd_radio -# name: Pause type: parsed protocol: Samsung32 @@ -5176,7 +5173,6 @@ address: 81 00 00 00 command: 11 00 00 00 # # Model: GPX HC221B -# name: Prev type: parsed protocol: NEC @@ -5220,7 +5216,6 @@ address: D2 2C 00 00 command: 01 FE 00 00 # # Model: Panasonic SC-HC58 -# name: Pause type: parsed protocol: Kaseikyo @@ -5228,7 +5223,6 @@ address: AC 02 20 00 command: 01 00 00 00 # # Model: Philips CD_Player_723 -# name: Prev type: parsed protocol: RC5 @@ -5314,7 +5308,6 @@ address: 00 EF 00 00 command: 17 E8 00 00 # # Model: Winnes KC809 -# name: Pause type: parsed protocol: NECext @@ -5328,7 +5321,6 @@ address: 41 54 32 00 command: 22 00 00 00 # # Model: Grundig CMS_5000 -# name: Pause type: parsed protocol: NECext @@ -5336,7 +5328,6 @@ address: 30 FC 00 00 command: 05 FA 00 00 # # Model: DTR-7 -# name: Power type: parsed protocol: NECext @@ -5416,7 +5407,6 @@ address: D2 14 00 00 command: 8E 71 00 00 # # Model: Panasonic N2QAYB000210 -# name: Pause type: parsed protocol: Kaseikyo @@ -5448,7 +5438,6 @@ address: AA 00 00 00 command: 5B 00 00 00 # # Model: Portta Toslink_Audio_Switcher -# name: Power type: parsed protocol: NEC @@ -5456,7 +5445,6 @@ address: 00 00 00 00 command: 17 00 00 00 # # Model: Rega IO -# name: Prev type: parsed protocol: NEC @@ -5464,7 +5452,6 @@ address: 6E 00 00 00 command: 08 00 00 00 # # Model: Sony RMT-AA320U_AV -# name: Pause type: parsed protocol: SIRC20 @@ -5478,7 +5465,6 @@ address: 10 01 00 00 command: 7D 00 00 00 # # Model: Sony STR-DH590 -# name: Prev type: parsed protocol: SIRC20 @@ -5510,7 +5496,6 @@ address: 00 00 00 00 command: 1F 00 00 00 # # Model: Hisense HS215 -# name: Power type: parsed protocol: NEC @@ -5548,7 +5533,6 @@ address: 04 00 00 00 command: 23 00 00 00 # # Model: Hitachi HSB40B16 -# name: Power type: parsed protocol: NEC @@ -5586,7 +5570,6 @@ address: 00 00 00 00 command: 45 00 00 00 # # Model: JVC THBY370A -# name: Power type: parsed protocol: NEC @@ -5624,7 +5607,6 @@ address: C8 91 00 00 command: 26 D9 00 00 # # Model: RCA RTS7110B2 -# name: Power type: parsed protocol: NEC @@ -5674,7 +5656,6 @@ address: D9 14 00 00 command: 50 AF 00 00 # # Model: Toshiba SBX4250 -# name: Power type: parsed protocol: NECext @@ -5711,16 +5692,7 @@ protocol: NECext address: 45 BD 00 00 command: 61 9E 00 00 # -# Model: Como audio -# -name: Power -type: parsed -protocol: NEC -address: 77 00 00 00 -command: F1 00 00 00 -# # Model: Edifier R1280DB -# name: Prev type: parsed protocol: NECext @@ -5728,7 +5700,6 @@ address: 10 E7 00 00 command: 06 F9 00 00 # # Model: Edifier R1700BTs -# name: Prev type: parsed protocol: NECext @@ -5736,7 +5707,6 @@ address: 10 E7 00 00 command: 44 BB 00 00 # # Model: Quacker LED_Speaker -# name: Prev type: parsed protocol: NECext @@ -5798,7 +5768,6 @@ address: 78 00 00 00 command: 01 00 00 00 # # Model: Yamaha ZP45780 -# name: Prev type: parsed protocol: NECext @@ -5817,9 +5786,183 @@ protocol: NECext address: 87 7C 00 00 command: 1A E5 00 00 # +# Model: AEG name: Prev type: parsed protocol: NECext address: 87 7C 00 00 command: 1D E2 00 00 # +# Model: Panasonic RXDS750 +name: Power +type: parsed +protocol: Kaseikyo +address: A2 02 20 02 +command: FC 03 00 00 +# +name: Vol_dn +type: parsed +protocol: Kaseikyo +address: A2 02 20 02 +command: 1C 03 00 00 +# +name: Vol_up +type: parsed +protocol: Kaseikyo +address: A2 02 20 02 +command: 0C 03 00 00 +# +name: Prev +type: parsed +protocol: Kaseikyo +address: A2 02 20 02 +command: 4C 00 00 00 +# +name: Next +type: parsed +protocol: Kaseikyo +address: A2 02 20 02 +command: 5C 00 00 00 +# +name: Pause +type: parsed +protocol: Kaseikyo +address: AA 02 20 00 +command: 60 00 00 00 +# +# Model: YAMAHA CDC600 +name: Pause +type: raw +frequency: 38400 +duty_cycle: 0.330000 +data: 9024 4512 564 1692 564 564 564 564 564 1692 564 1692 564 1692 564 1692 564 564 564 564 564 1692 564 1692 564 564 564 564 564 564 564 564 564 1692 564 1692 564 564 564 1692 564 564 564 1692 564 564 564 1692 564 564 564 564 564 1692 564 564 564 1692 564 564 564 1692 564 564 564 1692 564 +# +name: Play +type: raw +frequency: 38400 +duty_cycle: 0.330000 +data: 9024 4512 564 1692 564 564 564 564 564 1692 564 1692 564 1692 564 1692 564 564 564 564 564 1692 564 1692 564 564 564 564 564 564 564 564 564 1692 564 564 564 1692 564 564 564 564 564 564 564 564 564 564 564 564 564 1692 564 564 564 1692 564 1692 564 1692 564 1692 564 1692 564 1692 564 +# Model: Adastra WA215 +# +name: Prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 1009 1483 514 482 516 479 509 486 512 1481 516 1478 509 487 511 484 514 480 508 1486 511 1483 514 1479 518 478 510 485 513 1480 517 1477 510 1485 512 50922 1011 1481 516 480 508 487 511 484 514 1479 518 1476 511 485 513 481 517 479 509 1484 513 1480 517 1477 510 486 512 483 515 1478 509 1485 512 1483 514 50920 1013 1479 518 478 510 485 513 482 516 1477 510 1484 513 483 515 480 508 487 511 1482 515 1479 518 1475 594 401 515 481 517 1476 511 1483 514 1481 516 50918 1015 1478 509 486 512 483 515 480 518 1475 512 1483 514 481 517 478 510 485 513 1480 517 1477 510 1484 513 482 516 479 509 1485 512 1482 515 1479 518 50916 1008 1485 512 483 515 480 518 477 511 1483 514 1479 518 478 510 485 513 482 516 1477 510 1484 513 1481 516 479 519 476 512 1482 515 1479 518 1477 510 50924 1009 1484 513 482 516 478 510 486 512 1481 516 1478 509 486 512 483 515 480 508 1486 511 1483 514 1480 507 487 511 510 488 1480 517 1477 510 1485 512 +# +# Model: Bowers and_Wilkins_Zeppelin_Air_(with_30-pin_connector) +name: Power +type: parsed +protocol: RC6 +address: D2 00 00 00 +command: 0C 00 00 00 +# +name: Prev +type: parsed +protocol: RC6 +address: D2 00 00 00 +command: 21 00 00 00 +# +name: Next +type: parsed +protocol: RC6 +address: D2 00 00 00 +command: 20 00 00 00 +# +name: Vol_up +type: parsed +protocol: RC6 +address: D2 00 00 00 +command: 10 00 00 00 +# +name: Vol_dn +type: parsed +protocol: RC6 +address: D2 00 00 00 +command: 11 00 00 00 +# Model: Firetv EVG487 +# +name: Vol_dn +type: parsed +protocol: NEC +address: 20 00 00 00 +command: 02 00 00 00 +# +name: Next +type: parsed +protocol: NECext +address: D9 14 00 00 +command: 15 EA 00 00 +# +name: Prev +type: parsed +protocol: NECext +address: D9 14 00 00 +command: 16 E9 00 00 +# +name: Pause +type: parsed +protocol: NECext +address: D9 14 00 00 +command: 69 96 00 00 +# +name: Prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4573 4451 552 478 525 478 526 478 499 504 500 1481 527 1481 552 478 525 477 526 1481 526 1482 525 1484 523 1486 521 482 522 482 522 482 522 469 522 4486 521 482 522 482 522 483 521 482 522 1486 522 1487 521 483 521 1487 520 483 521 483 521 483 521 1487 521 483 521 483 520 1487 521 483 520 1487 520 1487 520 1487 520 483 520 55469 4543 4481 522 482 521 482 522 482 522 482 521 1487 521 1487 521 482 521 483 520 1487 521 1487 521 1486 522 1486 521 483 521 482 521 483 521 470 520 4485 521 483 520 483 521 483 520 483 520 1487 520 1487 521 483 520 1487 520 483 520 483 520 483 520 1487 520 483 520 483 520 1487 520 483 521 1487 520 1487 520 1487 520 483 521 +# +name: Pause +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4570 4452 551 478 525 478 526 478 525 478 500 1507 501 1506 526 478 526 477 526 1482 526 1482 525 1483 524 1484 523 481 522 482 522 482 522 469 521 4485 522 482 521 482 522 482 522 482 522 1486 522 482 521 1486 522 1486 522 482 522 483 521 482 522 1486 522 482 522 1487 521 482 522 482 522 1487 521 1487 521 1487 521 483 520 55475 4546 4479 523 480 523 481 523 481 523 481 523 1486 522 1485 523 481 523 481 523 1486 522 1485 522 1486 522 1486 522 482 522 481 523 482 522 468 522 4485 522 481 522 482 521 482 522 482 522 1486 521 482 522 1486 522 1486 522 482 522 482 522 482 521 1486 522 482 522 1486 522 482 522 482 522 1486 522 1486 521 1486 522 482 522 +# +name: Next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4552 4473 529 503 501 477 527 503 501 503 500 1481 527 1480 528 502 501 502 501 1506 502 1506 501 1506 526 1482 525 478 525 479 524 480 523 467 523 4484 522 481 522 481 523 481 523 481 523 481 523 481 523 1485 523 1485 523 481 523 481 522 481 523 1486 522 1485 522 1486 522 481 523 481 523 1486 522 1486 522 1486 522 481 522 55471 4548 4476 525 478 525 479 524 480 523 480 524 1485 523 1485 523 480 523 481 523 1485 523 1485 523 1485 523 1485 523 481 523 481 523 481 523 468 522 4484 522 481 523 481 522 481 523 481 522 481 523 481 523 1485 523 1486 522 481 523 481 523 481 523 1486 522 1486 522 1486 522 481 523 481 523 1486 522 1485 522 1486 521 481 523 +# +# Model: Samsung AH59-02758A +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4485 4507 525 477 524 475 527 476 526 475 527 1479 525 1476 528 475 526 475 527 1478 526 1476 527 1477 526 1476 528 476 526 475 527 476 526 476 526 4483 526 476 526 476 526 475 527 476 526 476 526 475 527 475 526 476 526 1478 526 1478 526 1478 526 476 525 1477 527 1477 526 1477 527 1478 525 476 526 477 525 476 526 1478 526 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4484 4511 495 504 498 505 497 505 497 503 499 1507 497 1508 496 505 497 505 497 1509 495 1507 497 1507 497 1507 497 505 497 504 498 506 496 505 497 4515 494 505 497 505 497 504 497 505 497 1507 497 1505 498 1509 495 504 498 1506 498 1507 497 1506 498 504 498 505 497 504 498 532 469 1508 496 504 498 505 497 504 498 1508 496 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4486 4508 498 503 499 503 499 503 499 504 498 1506 498 1506 498 503 499 503 499 1506 498 1506 498 1506 498 1505 499 503 499 504 498 503 499 503 499 4512 499 503 499 531 471 503 499 503 499 503 499 503 499 504 498 1505 499 1506 498 1506 498 1504 500 503 499 1505 499 1504 500 1504 500 503 499 503 499 502 500 502 500 1506 498 +# +name: Prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4493 4442 520 476 514 481 519 476 514 482 518 1473 518 1473 518 477 513 483 517 1473 518 1473 518 1473 518 1474 516 504 486 484 516 479 511 484 516 4449 513 482 518 477 513 483 517 477 513 1479 512 1479 512 483 517 1474 517 479 511 484 516 479 511 1480 511 485 515 480 510 1481 510 485 515 1477 514 1477 514 1477 514 481 519 55011 4494 4442 509 486 514 481 509 486 514 481 519 1472 519 1472 519 477 513 482 570 1421 518 1473 518 1473 518 1474 517 478 512 484 516 479 511 484 516 4448 514 482 518 477 513 483 517 478 512 1478 513 1479 512 483 517 1474 517 479 511 484 516 479 511 1480 511 485 515 480 510 1481 510 486 514 1477 514 1477 514 1477 514 482 518 +# +name: Pause +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4508 4509 481 522 482 524 480 526 478 522 483 1526 483 1528 481 522 482 522 483 1528 481 1526 482 1527 481 1526 482 521 483 522 482 521 483 522 482 4525 481 522 482 523 481 521 483 522 482 1527 481 521 483 1526 482 1527 481 521 483 523 481 521 483 1527 481 522 482 1526 482 522 482 522 482 1527 481 1526 482 1526 482 522 482 55507 4508 4508 481 523 481 523 481 522 482 522 482 1527 481 1525 483 521 483 521 483 1526 482 1526 482 1525 483 1525 483 523 481 523 481 522 482 522 482 4525 482 523 481 521 483 522 482 522 482 1527 481 522 482 1526 482 1526 482 521 483 522 482 523 481 1527 481 522 482 1525 483 523 481 521 483 1527 481 1526 482 1525 483 523 481 55507 4507 4508 481 523 481 521 483 522 482 521 483 1526 482 1526 482 521 483 522 482 1525 483 1527 481 1526 482 1525 483 522 482 521 483 522 482 523 481 4525 481 522 482 522 482 522 482 520 484 1526 482 523 481 1526 482 1527 481 523 481 522 482 522 482 1526 482 522 482 1527 481 523 481 522 482 1526 482 1526 482 1527 481 522 482 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4550 4464 585 420 584 420 584 420 612 392 529 1478 531 1479 555 451 554 452 552 1455 554 1479 529 1481 527 1482 526 478 526 479 525 478 526 479 525 4498 526 478 526 478 526 479 525 479 526 1484 525 479 525 479 525 479 525 1484 525 1483 526 1483 526 479 525 479 525 1484 525 1484 525 1483 526 479 525 479 525 479 525 1484 525 55494 4546 4495 525 478 526 479 525 479 525 479 526 1484 525 1483 526 479 526 479 525 1484 525 1484 525 1484 525 1484 525 479 525 479 525 479 525 479 526 4498 525 478 526 479 526 479 525 479 525 1484 526 479 525 479 526 479 525 1484 525 1484 525 1484 525 479 525 479 525 1484 525 1484 525 1484 525 479 525 479 526 479 525 1484 526 +# +name: Prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4549 4471 540 470 542 495 517 493 519 491 490 1482 512 1487 548 463 539 471 520 1479 566 1432 520 1479 515 1484 541 470 542 468 544 492 520 491 490 4492 539 497 515 495 517 494 518 492 489 1483 521 1478 547 463 518 1481 544 467 545 491 521 463 518 1481 544 466 546 465 516 1482 543 468 513 1486 518 1481 513 1486 538 472 540 55982 4553 4467 544 466 546 464 548 462 540 471 520 1478 516 1484 541 469 543 467 514 1485 519 1480 514 1486 518 1480 545 466 546 464 538 473 539 471 520 4488 543 467 545 465 547 463 539 472 519 1480 513 1485 540 471 520 1478 547 464 538 472 540 470 573 1426 547 463 539 472 519 1479 546 465 516 1483 511 1488 516 1483 542 469 543 diff --git a/applications/main/infrared/resources/infrared/assets/bluray_dvd.ir b/applications/main/infrared/resources/infrared/assets/bluray_dvd.ir index e231712bdb..691ad7090b 100644 --- a/applications/main/infrared/resources/infrared/assets/bluray_dvd.ir +++ b/applications/main/infrared/resources/infrared/assets/bluray_dvd.ir @@ -2052,10 +2052,4 @@ name: Pause type: parsed protocol: NEC address: 45 00 00 00 -command: 00 00 00 00 -# -name: Play -type: parsed -protocol: NEC -address: A8 00 00 00 -command: 17 00 00 00 \ No newline at end of file +command: 00 00 00 00 \ No newline at end of file diff --git a/applications/main/infrared/resources/infrared/assets/tv.ir b/applications/main/infrared/resources/infrared/assets/tv.ir index 0f68c4cb70..8929d5f8c3 100755 --- a/applications/main/infrared/resources/infrared/assets/tv.ir +++ b/applications/main/infrared/resources/infrared/assets/tv.ir @@ -1,7 +1,7 @@ Filetype: IR library file Version: 1 -# Last Updated 5th Oct, 2024 -# Last Checked 5th Oct, 2024 +# Last Updated 21st Jan, 2025 +# Last Checked 21st Jan, 2025 # name: Power type: parsed @@ -333,13 +333,12 @@ protocol: NECext address: AD ED 00 00 command: B5 4A 00 00 # -# ON name: Power type: parsed protocol: NEC address: 01 00 00 00 command: 40 00 00 00 -# ON +# name: Power type: parsed protocol: NECext @@ -1145,7 +1144,6 @@ address: 00 00 00 00 command: 0D 00 00 00 # # Samsung Standby -# name: Power type: parsed protocol: Samsung32 @@ -1153,7 +1151,6 @@ address: 07 00 00 00 command: E0 00 00 00 # # Samsung Power Off -# name: Power type: parsed protocol: Samsung32 @@ -1905,7 +1902,6 @@ address: 10 01 00 00 command: 33 00 00 00 # # Sharp TV -# name: Power type: parsed protocol: NECext @@ -1979,7 +1975,6 @@ duty_cycle: 0.330000 data: 273 1816 272 767 277 789 255 785 249 791 253 787 246 1818 281 785 248 765 279 1812 276 789 255 759 275 791 253 1812 276 789 255 46372 281 1808 280 785 249 791 253 787 247 793 251 1814 274 791 253 1812 276 1814 274 791 253 1812 276 1814 274 1815 273 792 252 1813 275 42172 272 1819 280 785 249 765 279 761 273 768 276 764 280 1811 277 788 246 768 276 1815 273 792 252 788 246 794 250 1815 273 791 253 # # Brandt TV -# name: Power type: raw frequency: 38000 @@ -2053,7 +2048,6 @@ address: 3E 00 00 00 command: 0D 00 00 00 # # TCL LED49D2930 / Thomson Remote RC3000E02 -# name: Power type: parsed protocol: RCA @@ -2277,7 +2271,6 @@ address: A0 00 00 00 command: 5F 00 00 00 # # Xiaomi TV -# name: Power type: raw frequency: 38000 @@ -2309,7 +2302,6 @@ duty_cycle: 0.330000 data: 1119 528 675 1154 647 558 674 841 675 1153 675 531 673 532 673 843 673 1155 675 1153 674 531 673 12312 1120 505 672 1156 673 532 673 844 673 1155 673 532 671 534 672 842 675 1155 670 1158 673 530 674 12312 1093 532 671 1156 675 530 672 845 672 1156 673 533 671 533 670 846 672 1156 674 1154 674 529 675 12312 1093 557 646 1182 646 532 674 843 673 1181 646 534 672 532 674 842 673 1158 670 1156 674 530 673 12315 1091 530 674 1155 673 530 673 844 673 1157 644 559 673 532 672 844 670 1157 672 1158 672 532 672 12313 1093 533 671 1157 672 532 673 845 671 1157 670 558 647 532 646 871 672 1157 671 1181 646 534 671 # # Daewoo TV -# name: Power type: parsed protocol: NEC @@ -3697,7 +3689,6 @@ address: EA C7 00 00 command: 33 CC 00 00 # # Model: Panasonic N2QAYB000752_Full -# name: Ch_prev type: parsed protocol: Kaseikyo @@ -3711,7 +3702,6 @@ address: B0 02 20 00 command: 40 03 00 00 # # Model: Soniq QSP500TV6 -# name: Power type: parsed protocol: NECext @@ -3742,8 +3732,1105 @@ protocol: NECext address: 72 DD 00 00 command: 5E A1 00 00 # +# Model: AKAI ATE_22Y604W name: Ch_prev type: parsed protocol: NECext address: 72 DD 00 00 command: 56 A9 00 00 +# +# Model: Brandt B3228HD +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9292 4518 635 522 635 522 635 523 634 523 662 494 664 494 663 1625 661 519 662 1602 660 1626 660 1650 636 1650 636 1651 635 1651 635 522 634 1653 633 524 633 1655 631 526 631 527 630 1657 630 527 630 527 630 527 630 1658 630 527 630 1658 630 1658 630 527 631 1658 629 1658 629 1658 629 40773 9295 2239 630 98164 9297 2241 630 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9319 4500 657 499 658 498 660 498 659 500 658 498 660 499 688 1600 685 472 634 1654 634 1680 607 1681 607 1681 607 1681 607 1680 608 549 609 1680 608 550 608 1681 607 550 607 1682 631 1657 631 527 631 527 631 527 631 1658 631 527 631 1659 630 527 631 528 630 1659 630 1659 630 1658 631 40798 9302 2242 630 98247 9298 2243 631 98266 9301 2243 630 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9335 4533 632 501 659 499 660 499 660 500 660 501 658 500 689 1604 685 474 635 1683 608 1659 632 1683 608 1684 607 1684 608 1684 608 551 609 1683 609 551 609 1684 608 1684 608 1685 607 1685 632 528 632 528 632 528 632 1661 631 529 631 529 631 529 631 529 631 1662 631 1662 631 1662 631 40877 9313 2247 631 98424 9314 2248 631 98437 9314 2247 632 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9305 4503 660 498 690 470 688 470 687 473 635 524 635 524 635 1657 634 525 663 1629 662 1630 659 1655 609 1682 609 1682 609 1682 633 525 635 1657 634 525 634 525 634 526 633 527 632 1660 631 528 632 528 631 528 631 1661 631 1661 631 1661 631 1660 631 528 631 1661 631 1661 630 1661 630 40849 9309 2243 631 98361 9313 2244 631 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9338 4507 658 500 689 470 688 471 636 525 635 525 635 524 636 1658 635 525 663 1655 637 1630 661 1655 635 1657 635 1657 636 1657 635 524 635 1658 635 1658 634 1658 634 526 634 1660 632 1661 632 528 632 528 632 528 632 528 632 528 632 1662 631 528 632 528 632 1662 631 1662 631 1662 631 40877 9317 2245 631 98426 9319 2246 631 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9344 4504 663 494 666 494 666 495 665 496 663 521 638 522 637 1634 660 522 638 1633 660 1655 638 1656 636 1656 636 1657 636 1658 635 526 633 1661 632 1662 631 1662 631 1663 631 1663 631 1662 632 530 631 530 631 530 630 530 631 530 631 530 631 530 631 530 631 1663 631 1664 630 1663 631 40893 9321 2247 631 98484 9323 2247 632 +# +# Model: Brandt B3230HD_TV +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9028 4480 593 1667 589 541 597 532 596 534 594 562 566 564 564 539 589 567 571 558 570 1663 594 1666 591 1696 571 1662 595 1666 591 1669 598 1662 595 562 566 563 565 539 589 567 571 1661 596 561 567 563 565 564 564 1669 598 1662 595 1691 566 1668 599 558 570 1663 594 1692 565 575 1669 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9200 4445 656 510 628 511 626 1616 626 514 623 542 597 542 597 542 597 542 597 1648 596 1648 596 543 596 1648 596 1648 596 1648 596 1648 596 1648 596 543 596 543 595 1649 595 1648 596 543 595 544 596 543 594 545 596 1648 595 1649 593 545 595 543 595 1650 595 1648 595 1649 595 1649 595 39850 9193 2218 595 95963 9218 2218 596 95989 9193 2219 595 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9226 4417 657 508 628 511 625 1617 624 515 622 517 622 517 621 517 622 517 622 1622 621 1623 620 518 621 1622 622 1623 620 1623 621 1623 621 1623 620 518 621 518 620 518 621 1623 621 1623 619 519 620 518 620 518 621 1624 620 1623 595 1649 619 519 620 519 619 1625 619 1648 596 1625 594 39874 9194 2192 620 95968 9197 2242 571 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9205 4446 630 536 628 511 627 1616 626 539 598 542 597 542 597 542 597 542 597 1647 597 1647 597 542 597 1647 597 1648 596 1648 596 1648 596 1648 596 1648 596 1648 596 542 597 1648 596 542 597 542 597 543 597 542 597 542 597 543 597 1648 596 543 596 1648 596 1648 596 1648 596 1648 596 39850 9202 2218 596 95967 9230 2217 597 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9209 4446 655 512 628 510 628 1616 626 515 622 542 597 542 597 542 597 542 597 1648 596 1648 597 542 597 1647 597 1647 597 1647 597 1647 597 1647 597 1648 596 542 597 1648 596 542 597 1648 597 542 597 542 597 542 597 542 597 1648 596 543 596 1648 597 543 596 1648 596 1648 597 1648 596 39847 9203 2218 596 95986 9203 2218 596 95964 9230 2218 596 95965 9232 2218 596 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9225 4476 586 1675 613 527 612 529 610 530 609 532 607 558 581 558 582 559 581 559 581 1681 581 1681 581 1681 581 1681 581 1681 581 1681 581 1681 581 1683 581 1681 581 1681 581 1681 581 559 581 559 581 558 582 559 580 559 581 559 581 559 581 559 581 1681 581 1681 581 1682 580 1682 581 +# +# Model: Gpx +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 337 1695 339 664 340 664 339 665 338 664 339 693 310 1695 339 1696 338 693 310 1697 337 666 337 693 310 693 310 1723 311 692 311 44457 309 1723 310 692 311 692 311 692 311 693 310 1723 310 694 334 669 334 1700 333 672 331 1703 330 1727 306 1704 330 697 306 1727 306 42378 309 1724 333 670 333 670 333 672 331 673 330 673 330 1704 329 1704 329 674 329 1727 306 698 305 698 305 698 305 1728 305 698 305 44436 309 1724 334 670 333 671 332 672 331 697 306 1728 306 674 329 697 306 1728 306 698 306 1728 306 1727 306 1728 305 698 305 1727 306 42378 309 1724 334 669 334 671 332 672 330 673 330 697 306 1703 330 1727 306 697 306 1727 306 697 306 698 305 697 306 1728 305 697 306 44431 309 1724 334 670 333 670 333 672 331 696 306 1727 306 697 306 697 306 1727 306 697 306 1727 306 1727 306 1727 306 697 306 1728 305 42373 309 1724 334 670 333 670 333 671 332 697 306 697 306 1727 305 1727 306 697 306 1728 305 697 306 697 306 697 306 1727 306 697 306 44427 309 1724 334 669 334 670 333 672 331 697 306 1728 306 697 306 697 306 1727 306 697 306 1727 306 1727 306 1727 306 697 306 1728 305 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 336 1697 336 667 336 668 335 668 336 667 337 1696 338 1696 337 1696 337 667 336 1697 337 668 335 668 335 669 334 1699 334 693 309 43422 335 1723 310 694 309 694 309 695 333 671 332 672 331 673 331 673 331 1704 330 673 330 1703 331 1704 330 1703 331 673 331 1704 330 43424 309 1725 308 695 308 696 332 672 332 673 331 1703 331 1703 330 1703 331 673 331 1703 331 673 331 673 330 673 331 1703 331 673 331 43418 308 1725 308 695 333 671 332 672 331 672 331 673 331 673 330 673 330 1703 331 673 331 1703 331 1704 330 1703 331 673 330 1703 331 43418 309 1725 308 695 308 696 332 672 331 673 330 1703 331 1703 331 1703 331 673 331 1703 330 673 330 673 330 673 331 1703 331 673 331 43419 308 1725 308 695 308 696 307 697 331 673 331 672 331 672 331 673 330 1703 331 673 330 1703 331 1703 331 1703 331 673 331 1703 331 43419 309 1725 308 695 308 696 332 672 331 673 330 1703 331 1703 331 1703 331 673 330 1704 330 673 330 673 330 673 330 1703 331 673 330 43424 309 1725 309 695 333 671 332 672 331 672 331 673 331 673 330 673 331 1703 331 673 331 1703 331 1704 330 1703 331 672 332 1703 331 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 310 1696 337 664 339 693 310 693 310 665 338 666 337 665 338 1696 338 665 338 1723 310 666 337 693 310 693 310 1723 310 693 310 45493 309 1724 309 693 310 693 310 692 311 692 311 1722 311 1723 310 693 310 1724 334 669 334 1700 331 1701 308 1727 331 673 330 1703 330 41342 333 1699 334 670 333 670 333 671 332 672 331 671 332 672 331 1702 331 671 332 1702 331 672 331 672 331 672 331 1702 331 672 331 45459 333 1699 334 670 333 671 332 696 306 673 331 1701 332 1702 331 672 331 1702 331 672 331 1702 331 1702 331 1701 332 672 331 1702 331 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 337 1698 336 667 336 665 338 666 337 665 392 1644 337 666 338 1696 338 666 338 1723 310 667 337 667 336 693 310 1723 311 692 311 44474 310 1723 310 692 311 692 311 693 310 693 310 694 309 1725 334 670 333 1701 332 672 332 1702 331 1702 332 1702 331 672 332 1702 331 +# +# Model: Grundig 2 +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 970 719 972 718 1822 718 944 747 920 771 921 799 893 802 893 799 893 1644 893 799 1767 770 918 86138 893 798 894 798 1768 772 915 778 913 779 913 804 888 807 888 804 888 1627 911 805 1737 801 888 86143 893 798 918 774 1766 775 913 780 912 780 912 779 913 783 912 780 912 1625 913 780 1763 777 912 86141 892 798 918 774 1766 776 912 780 911 780 912 780 912 783 912 780 912 1626 912 780 1762 801 888 86137 892 799 917 774 1766 775 913 780 912 780 912 779 913 783 912 781 911 1650 888 805 1738 801 887 86148 892 799 918 775 1765 800 888 804 888 804 888 804 888 808 888 804 888 1651 888 805 1738 801 888 86133 944 772 919 773 1767 774 914 778 914 778 914 778 914 781 915 777 915 1624 914 778 1766 774 914 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 972 719 1823 716 973 719 972 720 945 747 920 772 920 802 893 1645 1743 796 918 773 918 774 916 86148 917 774 1767 772 916 777 914 778 913 779 913 779 913 783 913 1625 1763 776 913 779 913 779 913 86148 918 773 1767 773 915 778 914 779 913 779 913 780 912 783 913 1625 1764 777 912 780 912 780 912 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 946 745 947 745 1850 688 945 746 944 748 893 798 893 802 893 1644 1743 794 894 797 894 1643 918 85284 892 798 894 798 1769 769 918 775 915 778 914 778 914 782 913 1649 1739 775 913 778 914 1625 913 85274 943 771 919 773 1766 773 915 778 914 777 915 777 915 781 914 1623 1765 774 914 778 914 1623 914 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 972 719 1822 715 972 717 973 719 970 721 919 772 919 1647 1743 794 894 797 894 797 918 773 918 86132 892 798 1768 770 918 774 916 778 913 803 889 804 888 1653 1739 800 889 804 888 804 888 804 888 86144 918 773 1769 771 915 777 915 777 915 778 914 778 914 1627 1765 774 914 777 915 777 915 778 914 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 975 746 946 717 1879 660 974 719 972 721 920 798 894 1648 1744 794 894 798 894 797 894 1644 918 85281 920 773 945 749 1793 769 917 775 916 777 915 777 915 1628 1765 774 915 778 914 778 914 1624 914 85282 943 772 919 773 1767 774 914 778 914 778 914 778 914 1627 1766 774 914 778 914 778 914 1624 914 85311 919 773 919 774 1766 773 915 778 914 778 914 778 914 1627 1766 774 915 778 914 778 914 1624 914 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 920 772 920 772 1771 768 920 771 920 772 920 771 948 748 948 743 948 1590 946 746 1795 1613 919 85291 892 799 893 799 1767 772 916 777 914 778 914 779 913 783 913 779 913 1625 913 780 1762 1623 912 +# +# Model: Grundig AndroidTV +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 872 800 873 797 1723 808 875 798 875 827 873 772 900 799 873 799 873 1614 873 800 1718 816 867 86386 844 828 844 828 1744 786 845 828 845 828 845 828 845 828 844 828 845 1643 844 828 1693 838 844 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 896 775 845 828 1746 785 845 828 846 827 848 826 845 1641 1693 838 844 828 845 828 845 828 845 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 957 716 1725 805 878 826 847 826 846 827 875 797 847 1641 1695 834 874 799 873 800 872 1617 870 85382 847 824 1695 835 873 800 871 803 869 804 868 806 867 1645 1691 841 842 831 842 831 842 1646 842 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 868 804 868 805 1717 812 870 804 896 777 869 803 870 804 869 1618 1744 790 867 805 866 807 866 86344 867 807 866 807 1716 816 868 806 867 805 867 806 868 805 869 1622 1713 841 843 804 867 806 869 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 925 747 1743 787 926 747 925 747 926 746 953 719 872 801 927 1562 1772 785 897 776 894 1594 867 85501 926 747 1771 785 897 776 894 779 867 806 867 807 866 807 866 1622 1713 818 866 807 866 1622 866 85508 926 748 1770 786 869 804 868 806 867 807 866 807 866 807 866 1623 1713 819 865 807 866 1623 866 85517 925 748 1770 786 896 777 868 806 867 807 866 807 866 807 866 1622 1714 818 866 807 866 1623 865 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 846 826 847 797 1723 837 846 826 847 826 847 826 846 826 846 826 846 1641 847 827 1717 1631 867 85430 845 827 845 827 1718 813 869 805 867 806 867 808 865 809 864 809 864 1624 864 832 1689 1635 863 +# +# Model: GRUNDIG UNKNOWN +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 926 751 1760 756 922 756 921 782 897 782 897 783 897 784 897 784 897 1624 897 784 1736 787 895 85521 921 780 1734 784 896 783 894 785 895 784 895 784 895 785 895 784 896 1625 895 785 1735 787 896 85546 894 783 1732 763 917 783 896 783 896 784 895 784 895 785 894 785 897 1624 897 784 1734 786 897 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 953 724 927 750 1764 755 924 755 924 758 922 782 898 782 899 1624 1737 786 898 784 897 784 898 85552 923 756 921 757 1759 783 898 782 898 782 898 783 897 783 897 1623 1737 785 897 784 897 784 897 85557 927 750 926 753 1762 782 898 782 898 759 921 782 898 783 898 1623 1737 785 898 784 898 783 898 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 952 725 1763 752 927 753 925 756 922 780 899 781 899 782 899 1623 1737 786 897 784 897 1626 895 84746 892 785 1731 787 894 785 894 785 895 786 895 789 891 786 895 1627 1732 789 894 788 893 1628 894 84705 929 748 1766 751 930 750 929 750 929 750 929 752 928 753 927 1593 1766 756 926 756 925 1597 924 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 896 782 895 784 1733 785 896 785 868 812 894 784 920 762 871 812 918 1605 893 787 1735 1629 892 84752 893 784 895 781 1735 762 919 783 895 786 897 783 896 785 896 786 895 1625 897 784 1738 1625 896 84727 916 784 896 781 1736 785 897 783 896 784 896 785 897 784 895 785 897 1624 897 783 1737 1627 897 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 921 753 1759 785 896 782 897 782 897 783 895 784 896 1623 1733 786 895 784 895 784 893 785 895 85568 893 783 1734 786 893 785 895 783 895 785 894 785 895 1622 1733 786 894 784 896 784 895 784 895 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 5349 102096 3672 530 1194 102545 5171 102367 969 658 1613 481 1499 103984 503 388 210 337 161 +# +name: Vol_up +type: parsed +protocol: NECext +address: 00 7F 00 00 +command: 48 B7 00 00 +# +name: Vol_dn +type: parsed +protocol: NECext +address: 00 7F 00 00 +command: 44 BB 00 00 +# +name: Ch_next +type: parsed +protocol: NECext +address: 00 7F 00 00 +command: 0A F5 00 00 +# +name: Ch_prev +type: parsed +protocol: NECext +address: 00 7F 00 00 +command: 06 F9 00 00 +# +name: Mute +type: parsed +protocol: NECext +address: 00 7F 00 00 +command: 5A A5 00 00 +# +# Model: Hisense EN_33926A +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9021 4377 655 452 654 452 654 1567 654 453 653 453 653 453 652 454 651 455 651 1568 654 1569 653 455 651 1570 652 1570 652 1570 652 1571 651 1572 649 480 626 481 624 482 623 1599 623 483 623 484 622 484 622 484 622 1601 621 1601 621 1601 621 484 622 1601 621 1601 621 1601 621 1601 621 39912 8910 2137 622 95435 8933 2137 622 95434 8934 2137 622 95434 8934 2137 622 95434 8934 2137 622 95434 8933 2137 622 95434 8933 2138 621 95436 8932 2138 621 95435 8933 2138 621 95435 8933 2137 622 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8990 4407 626 479 627 479 627 1596 626 479 627 480 681 425 681 425 681 425 681 1541 680 1542 679 428 626 1596 626 1596 626 1596 626 1596 626 1596 626 480 626 1597 625 481 625 482 624 506 600 506 600 506 600 507 599 1624 622 483 623 1599 623 1599 623 1599 623 1600 622 1600 622 1600 622 39912 8909 2138 623 95460 8906 2140 623 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8990 4406 626 481 625 481 625 1595 627 481 625 481 653 453 654 452 654 452 654 1567 654 1568 654 453 653 1568 654 1569 653 1569 653 1569 653 1570 652 1594 627 1595 626 479 626 480 625 481 624 482 624 483 623 483 623 483 623 484 622 1600 622 1600 622 1600 622 1600 622 1600 622 1600 622 39913 8911 2137 622 95438 8934 2136 623 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9020 4375 657 450 656 451 654 1566 656 451 655 451 653 453 626 480 653 452 655 1567 654 1568 654 454 651 1568 654 1568 654 1569 653 1570 651 1572 650 1595 626 479 626 480 625 1597 624 482 624 482 624 483 623 483 623 483 623 1599 623 1599 623 483 623 1599 623 1599 623 1599 623 1599 623 39900 8912 2136 623 +# +# Model: Hisense ER22601A +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 976 723 1776 796 925 804 897 804 897 803 897 803 897 803 897 803 922 1610 919 783 1767 807 914 86103 921 778 1769 805 916 786 914 788 913 787 914 787 914 788 913 811 890 1617 914 787 1764 832 889 86082 920 778 1768 804 916 786 914 786 914 786 914 786 914 786 915 786 915 1616 915 786 1763 809 913 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 950 750 980 720 1800 770 926 774 926 774 926 775 925 1632 1775 796 922 779 920 782 919 782 919 86232 897 802 923 777 1772 801 918 782 919 783 917 783 918 1613 1769 802 918 783 917 783 918 783 917 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 979 721 1776 794 926 775 925 775 925 775 925 775 925 1606 1800 796 922 779 919 781 919 1612 919 85400 924 776 1772 800 919 781 919 782 918 781 919 782 919 1612 1770 801 919 782 918 782 919 1612 919 85390 923 776 1772 799 919 781 919 781 919 781 919 781 919 1612 1770 801 919 782 918 782 918 1613 918 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 979 720 977 724 1776 795 925 775 924 775 951 750 950 750 950 1582 1796 799 919 781 919 782 919 86138 949 752 946 777 1771 801 919 782 919 782 918 782 918 782 918 1612 1769 802 918 782 918 782 918 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 951 749 1832 741 978 721 927 774 926 776 924 776 924 801 899 1632 1773 798 920 782 918 1613 917 85257 898 802 1773 800 919 782 918 782 919 782 919 782 918 782 918 1613 1769 802 918 783 918 1614 917 85260 898 802 1772 800 919 782 919 782 919 782 919 782 918 782 919 1613 1769 802 918 782 918 1613 918 +# +# Model: JVC RMT-JR01 +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8510 4237 528 1592 528 1592 528 526 529 526 529 526 529 526 529 526 529 527 528 1591 529 1591 529 1592 528 527 528 1590 530 526 529 526 529 525 528 22533 529 1590 529 1592 528 526 529 526 529 526 529 526 529 526 529 526 529 1592 528 1591 555 1564 556 500 555 1565 554 500 529 526 529 524 529 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8507 4232 528 1591 528 1590 529 527 528 527 527 526 528 527 528 526 529 525 530 526 529 1591 528 1591 528 1590 529 1591 528 528 527 527 527 525 528 22529 525 1592 527 1592 526 528 527 527 528 529 525 527 528 527 527 527 528 527 527 1592 527 1593 526 1592 527 1592 527 527 528 554 500 527 526 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8505 4231 528 1593 526 1595 524 525 529 526 529 526 528 525 529 527 527 526 528 1590 529 1590 529 1590 529 1590 529 1591 528 527 527 527 527 525 528 21460 528 1590 529 1590 529 525 529 526 528 526 528 526 528 526 528 527 527 1592 527 1592 527 1591 528 1591 528 1591 528 526 528 526 528 525 528 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8506 4232 528 1591 528 1591 528 526 528 526 528 528 526 526 528 527 527 526 528 526 528 526 528 1591 528 1592 527 1591 528 525 529 526 528 526 527 23593 528 1591 528 1592 527 526 528 526 528 526 528 526 529 527 527 528 526 525 529 527 527 1591 528 1591 528 1591 528 526 528 526 528 526 527 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8505 4231 528 1591 528 1591 527 527 527 526 528 526 552 503 527 528 526 526 528 1591 528 527 527 526 529 1592 527 1592 527 525 529 527 527 526 527 23590 527 1590 528 1590 528 525 529 526 528 526 528 526 528 526 528 526 528 1590 529 526 528 526 528 1590 529 1591 528 526 528 526 528 523 530 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8505 4233 526 1591 528 1591 528 526 528 526 528 527 527 527 527 526 528 528 526 528 526 526 528 525 529 1591 528 1591 528 527 527 526 528 524 529 24651 528 1595 524 1591 527 526 528 528 526 526 528 526 528 528 526 527 527 526 528 526 528 527 527 1592 527 1591 527 527 527 528 526 525 552 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9121 4377 685 475 658 476 656 1610 656 479 654 482 651 483 651 483 651 483 651 1618 650 1618 650 506 627 1640 628 1641 627 1641 627 1640 628 1641 627 1641 627 1641 627 506 627 506 628 507 627 506 627 507 627 507 626 507 627 507 627 1641 626 1641 627 1641 627 1641 627 1641 627 1641 627 39937 9096 2169 651 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9097 4402 685 475 659 475 658 1609 657 477 656 480 653 480 654 480 653 481 653 1615 653 1614 654 481 653 1615 653 1615 653 1615 653 1615 653 1615 653 1615 653 481 652 481 653 1616 652 482 652 482 652 482 652 482 652 482 652 1616 652 1616 651 482 652 1617 651 1617 651 1640 628 1640 628 39937 9097 2167 652 +# +name: Mute +type: parsed +protocol: NECext +address: 83 7A 00 00 +command: 09 00 00 00 +# +name: Vol_up +type: parsed +protocol: NECext +address: 83 7A 00 00 +command: 02 40 00 00 +# +name: Vol_dn +type: parsed +protocol: NECext +address: 83 7A 00 00 +command: 03 40 00 00 +# +name: Ch_prev +type: parsed +protocol: NECext +address: 83 7A 00 00 +command: 01 00 00 00 +# +name: Ch_next +type: parsed +protocol: NECext +address: 83 7A 00 00 +command: 00 00 00 00 +# +# Model: NEC +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8073 3997 524 502 495 505 492 1508 498 503 494 1505 501 1500 495 1504 491 1510 496 3988 522 502 495 1505 501 501 496 504 493 1507 499 502 495 1505 501 501 496 18806 8072 3997 524 502 495 505 492 1507 499 502 495 1505 490 1509 497 1504 491 1510 496 3988 522 502 495 1505 501 500 497 503 494 1506 500 501 496 1504 491 510 498 18806 8072 3998 523 503 494 506 491 1509 497 504 493 1506 499 1501 494 1506 500 1502 493 3989 522 504 493 1507 499 502 495 505 492 1508 498 503 494 1506 499 502 495 18807 8072 3998 523 503 494 506 491 1509 497 504 493 1506 500 1501 494 1506 500 1502 493 3989 521 503 494 1506 500 502 495 505 492 1508 498 503 494 1506 500 502 495 18807 8072 3998 523 502 495 505 492 1508 498 503 494 1505 501 1500 495 1504 491 1510 496 3988 523 502 495 1505 501 501 496 503 494 1506 500 501 496 1504 491 510 498 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8069 3998 522 503 494 506 491 1509 496 505 492 1507 498 1501 494 1506 499 1502 493 3989 521 1503 492 1508 497 1503 492 508 500 1501 494 506 491 510 498 504 493 17810 8067 4003 517 508 500 501 496 1504 491 510 498 1502 493 1507 498 1501 494 1508 497 3984 526 1474 521 1504 501 1500 495 505 492 1509 496 505 492 508 500 502 495 17809 8069 4000 520 506 491 509 499 1501 494 507 501 1499 496 1503 492 1508 497 1504 491 3991 519 1480 525 1500 495 1505 500 500 497 1503 492 509 499 503 494 507 490 17809 8069 3999 521 505 492 508 500 1500 495 506 491 1508 497 1502 493 1507 498 1503 492 3990 520 1504 491 1509 496 1504 491 509 499 1501 494 507 501 501 496 505 492 17808 8070 3998 523 503 494 506 491 1509 496 504 493 1507 498 1501 494 1506 499 1502 493 3988 522 1502 493 1507 498 1502 493 507 501 1500 495 505 492 509 499 502 495 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8066 4002 519 507 501 500 497 1503 492 508 500 1500 495 1480 525 1475 520 1506 499 3983 517 508 500 1500 495 1481 524 501 496 1504 491 510 498 503 494 507 501 18803 8073 3997 524 503 494 506 491 1483 522 504 493 1506 499 1476 519 1482 523 1478 517 3989 521 504 493 1482 523 1478 517 508 500 1476 519 507 501 500 497 505 492 18809 8066 4003 517 508 500 501 496 1503 492 509 499 1501 494 1480 525 1475 520 1481 524 3983 516 509 499 1501 494 1482 523 502 495 1505 500 500 497 504 493 508 500 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8069 4000 520 480 517 508 500 1500 495 505 492 1508 497 1502 493 1506 499 1502 493 3989 521 1503 492 1509 496 503 494 1506 499 1501 494 506 491 510 498 504 493 17807 8072 3997 524 501 496 505 492 1508 497 502 495 1505 500 1499 496 1504 491 1510 495 3986 524 1500 495 1506 499 500 497 1503 492 1508 497 503 494 507 501 501 496 17804 8064 4004 517 509 499 501 496 1504 491 509 499 1500 495 1505 500 1499 496 1505 500 3980 520 1505 500 1500 495 505 492 1508 497 1502 493 508 500 501 496 505 492 17807 8072 3995 526 500 497 503 494 1506 499 501 496 1504 491 1508 497 1503 492 1509 496 3985 515 1509 496 1503 492 508 500 1500 495 1506 499 501 496 505 492 509 499 17803 8065 4003 518 508 500 501 496 1504 491 509 499 1502 493 1507 498 1502 493 1508 497 3985 525 1500 495 1505 500 500 497 1503 492 1508 497 504 493 508 500 501 496 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8064 4006 525 501 496 504 493 1507 498 502 495 1505 500 1499 496 1504 501 1500 495 3987 523 1501 494 1507 498 502 495 505 492 1508 497 1503 492 509 499 503 494 17808 8069 4000 520 505 492 508 500 1500 495 506 491 1508 497 1503 492 1508 497 1504 491 3991 519 1505 500 1501 494 507 501 500 497 1502 493 1508 497 503 494 508 500 17803 8064 4006 525 501 496 504 493 1507 498 503 494 1505 500 1500 495 1505 500 1500 495 3988 522 1502 493 1507 498 503 494 506 491 1508 497 1503 492 509 499 503 494 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8068 3999 521 504 493 507 501 1498 497 504 493 1505 500 1475 520 1479 526 1500 495 3987 523 502 495 1505 500 501 496 504 493 1506 499 1501 494 507 501 500 497 18802 8072 3996 524 502 495 505 492 1507 498 503 494 1505 500 1475 520 1480 525 1476 519 3987 523 501 496 1504 491 510 498 502 495 1504 501 1475 520 505 492 509 498 18798 8065 4001 519 507 501 499 498 1502 493 507 501 1499 496 1504 501 1473 522 1504 501 3981 518 506 491 1509 496 505 492 508 499 1500 495 1505 500 500 497 505 492 18808 8065 4001 519 507 501 500 497 1503 492 508 499 1500 495 1505 500 1499 496 1506 499 3983 516 508 499 1501 494 507 501 500 497 1502 493 1508 497 504 493 508 500 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8953 4403 601 417 701 516 602 515 602 411 706 515 603 515 575 1635 603 514 628 1553 628 1609 600 1583 627 1606 598 1610 601 1608 600 495 624 1607 599 516 603 515 601 517 572 547 599 1608 599 518 601 516 598 545 573 1610 573 1637 572 1636 597 1612 599 518 600 1610 598 1610 599 1611 598 39250 8972 2171 599 94711 8976 2167 602 94731 8955 2168 602 94737 8927 2198 598 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3554 1678 495 403 468 1248 495 403 497 374 497 375 497 374 497 374 497 375 496 375 496 375 495 377 493 378 492 380 490 1254 489 383 488 383 489 383 488 383 488 383 488 383 489 383 488 383 489 383 488 1255 488 383 488 384 488 383 488 384 487 384 487 384 487 384 488 384 488 384 487 1256 487 384 488 384 487 1256 488 1256 488 384 487 384 487 384 488 1256 487 384 488 384 487 1257 487 1257 487 385 486 1257 487 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3526 1678 495 403 468 1248 496 403 496 375 496 375 497 375 496 375 496 376 495 376 495 376 495 377 493 378 492 380 490 1254 488 384 488 383 488 384 488 384 487 384 487 384 487 384 488 384 487 384 488 1257 486 385 486 385 486 385 487 385 486 386 486 409 462 409 462 410 461 410 462 410 461 1282 462 409 462 1282 462 1282 461 410 462 410 461 410 461 410 462 1282 461 410 462 1282 461 1282 462 410 461 1282 462 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3519 1775 426 448 422 1332 418 455 425 449 421 459 421 452 418 456 424 450 420 459 421 452 418 456 424 450 420 460 420 1339 422 458 422 451 419 455 425 449 421 459 421 452 418 455 425 449 421 459 421 1339 422 457 423 451 419 454 426 448 422 458 422 451 419 454 426 448 422 1331 419 454 426 1327 423 450 420 1307 454 1299 451 449 421 453 427 1326 424 449 421 1333 417 456 424 1329 421 1304 446 454 426 1327 423 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3516 1747 444 456 424 1329 421 453 427 446 424 451 419 460 420 454 426 447 423 451 419 461 419 454 426 447 423 451 419 1334 427 448 422 458 422 451 419 455 425 450 420 459 421 453 417 456 424 450 420 1333 417 457 423 456 424 449 421 453 427 447 423 457 423 450 420 454 426 1328 422 451 419 456 424 455 425 448 422 1331 419 455 425 448 422 1332 418 455 425 449 421 459 421 452 418 1336 425 449 421 1332 418 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3482 1730 448 425 450 1296 444 429 446 427 448 424 451 422 453 420 445 428 447 425 450 423 452 421 444 429 446 426 449 1297 454 419 446 427 448 425 450 423 452 420 445 428 447 426 449 424 451 421 444 1303 448 425 450 422 453 420 445 428 447 425 450 423 452 421 444 429 446 427 448 424 451 422 453 419 446 428 447 1298 453 420 445 428 447 426 449 424 451 421 444 429 446 427 448 1298 453 420 445 1301 450 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3512 1700 478 395 480 1266 474 399 476 396 479 394 481 392 473 400 475 397 478 395 480 393 482 390 475 398 477 396 479 1267 473 399 476 397 478 395 480 392 473 400 475 398 477 396 479 394 481 391 474 1272 479 394 481 392 473 400 475 398 477 395 480 393 482 391 474 399 476 1269 482 391 474 399 476 397 478 395 480 1266 474 398 477 396 479 1267 473 399 476 397 478 394 481 392 473 1273 478 395 480 1266 474 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3596 1604 513 388 429 1282 459 442 428 442 428 442 428 442 428 442 428 441 429 441 429 442 428 442 428 443 426 445 449 1289 452 446 423 447 423 448 422 448 422 448 422 448 422 448 422 448 422 448 422 1319 422 448 422 448 422 448 422 448 422 448 422 448 422 448 423 448 422 448 422 448 422 448 422 448 422 448 422 1319 422 448 422 449 422 448 422 448 422 448 422 448 422 448 422 1319 422 448 422 1320 421 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3480 1715 457 441 429 1284 457 442 428 442 428 442 428 442 428 442 428 441 429 442 428 442 453 417 453 417 453 418 451 1289 451 421 449 447 423 447 423 447 423 447 423 448 422 448 422 448 423 447 423 1318 423 447 423 448 422 448 423 447 423 448 423 448 422 448 422 448 422 1319 422 448 422 448 422 448 423 448 422 1319 422 448 423 448 422 1319 422 448 422 448 422 448 422 448 422 1319 422 448 423 1319 422 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3537 1660 458 441 429 1311 430 442 428 442 428 442 428 442 428 442 428 442 428 442 428 442 428 442 453 417 453 417 453 1287 453 420 449 422 447 447 423 448 422 448 422 448 422 448 422 448 422 448 422 1319 422 448 422 447 423 448 422 448 422 448 422 448 422 448 422 448 423 448 422 1319 422 448 422 448 423 1319 422 1319 423 448 422 448 422 448 422 1319 422 448 422 448 422 1319 422 1319 422 448 422 1319 422 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3481 1715 457 441 429 1311 430 442 429 442 428 442 428 442 428 442 428 441 429 442 428 442 453 417 453 417 452 419 450 1289 451 422 447 447 423 447 423 447 423 448 422 448 422 448 422 448 422 448 422 1319 422 448 422 448 422 448 422 448 422 448 423 448 422 448 422 448 422 448 422 448 422 1319 422 448 422 1319 422 1319 422 448 422 448 422 448 422 448 422 1319 422 448 422 1319 422 1319 422 448 422 1319 422 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3505 1690 483 416 454 1258 483 416 454 416 454 417 428 442 428 442 428 441 455 416 454 416 454 416 454 417 452 419 450 1289 451 421 448 423 447 448 422 448 422 448 422 448 422 448 422 448 422 448 422 1319 422 448 422 448 422 448 422 448 423 448 422 448 423 448 422 448 422 1319 422 448 422 1319 422 448 422 1319 422 1319 422 448 422 448 423 1319 422 448 422 1319 422 448 422 1319 422 1320 421 449 421 1319 422 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 228 144285 3545 1690 497 411 495 1256 496 382 465 410 466 410 493 383 493 386 489 411 464 413 462 415 460 417 459 417 459 418 459 1295 458 418 459 418 459 418 458 418 458 418 459 418 458 418 459 418 459 418 459 1295 459 418 459 418 458 418 459 418 458 418 458 418 458 419 458 418 458 419 458 419 458 418 458 419 458 419 458 1296 458 418 458 418 458 419 457 419 458 419 457 419 458 419 458 1296 457 419 457 1296 458 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3404 1652 462 422 432 1230 457 427 437 420 434 424 440 417 436 420 434 424 440 417 436 421 433 424 440 417 436 421 432 1228 459 425 439 419 434 422 432 426 438 419 434 422 431 426 438 419 435 422 431 1230 457 426 438 420 433 423 431 426 438 420 433 423 430 427 437 420 434 1228 459 424 440 1221 466 418 435 1225 462 1226 461 422 432 426 438 1224 463 420 433 1228 459 399 465 1222 465 1223 464 420 433 1225 462 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 2737 825 494 832 494 390 492 392 1352 1328 461 450 405 450 435 477 297 587 296 644 295 92395 2734 829 491 836 490 394 491 419 1286 1395 296 587 378 1474 239 +# +# Model: RCA P46731AT_TV +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 182 7827 172 2332 177 2328 181 2323 176 2330 179 1309 175 1331 174 2331 178 1328 177 2328 181 1307 177 2327 182 1325 180 1326 179 1309 176 1331 174 1332 173 2333 176 2310 178 1328 177 2328 181 1325 180 2306 182 1325 180 2325 174 8340 183 7825 175 2330 179 2326 173 2333 176 2310 178 1328 177 1329 176 2329 180 1308 176 2329 180 1326 179 2326 173 1334 182 1306 179 1328 177 1329 176 1312 183 2322 177 2329 180 1326 179 2325 174 1315 180 2326 173 1333 183 2323 176 8339 183 7824 175 2330 179 2307 181 2324 175 2331 178 1328 177 1330 175 2311 177 1329 176 2329 180 1326 179 2327 182 1305 179 1328 177 1328 177 1311 173 1334 182 2323 176 2330 179 1326 571 1916 180 1327 178 2325 587 920 575 1930 579 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 179 7828 182 2323 176 2328 181 2323 176 2329 180 1308 176 1330 175 2329 180 1326 179 2307 181 2323 176 2329 180 2325 174 1332 173 1315 180 1327 179 1328 177 2327 182 2322 177 1311 173 2332 177 1329 176 1330 175 1312 183 1324 181 8332 180 7826 174 2331 178 2326 173 2313 176 2330 179 1327 178 1328 177 2327 182 1306 179 2326 183 2322 177 2328 181 2323 176 1312 183 1324 181 1325 180 1325 180 2307 181 2323 176 1331 174 2330 179 1327 178 1310 175 1331 174 1332 173 8323 179 7845 176 2311 177 2327 182 2322 177 2328 181 1325 180 1308 177 2328 181 1325 180 2325 174 2330 179 2326 173 2314 174 1332 173 1332 173 1333 183 1306 178 2326 183 2322 177 1329 176 2328 181 1307 177 1329 176 1330 175 1313 182 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 183 7824 176 2329 180 2324 175 2329 180 2324 175 1314 181 1325 180 2324 175 1331 174 2331 178 2307 181 2324 175 1331 174 1331 174 1314 181 1326 179 1326 179 2325 174 2332 177 1310 174 2330 179 1327 178 1328 177 1310 174 2330 179 8334 178 7827 173 2332 177 2327 182 2323 176 2310 178 1328 177 1328 177 2327 182 1306 179 2326 183 2322 177 2327 182 1324 181 1307 177 1329 176 1330 176 1331 174 2311 177 2328 181 1325 180 2324 175 1332 173 1313 182 1325 180 2324 175 8339 173 1383 2522 3925 179 2325 576 1909 590 1915 594 1910 589 918 588 919 576 1911 175 1332 173 2330 592 1912 587 1918 581 907 588 918 598 908 587 920 575 913 592 1914 182 2320 592 914 581 1927 180 1307 178 1327 592 915 580 1925 574 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 176 7830 180 2324 175 2329 180 2324 175 2329 180 1308 176 1329 176 2328 181 1325 180 2305 183 2321 178 1329 177 2327 182 1324 181 1306 178 1328 177 1329 176 2327 182 2304 174 1332 173 2332 177 1328 177 1310 174 2330 179 1327 178 8333 179 7826 174 2330 179 2325 174 2313 175 2329 180 1326 179 1326 179 2325 174 1315 180 2324 175 2329 180 1326 179 2325 174 1314 181 1325 180 1326 179 1308 177 2328 181 2323 176 1330 175 2329 180 1308 176 1330 175 2328 181 1325 180 8314 177 7845 176 2310 178 2327 182 2322 177 2327 182 1323 182 1306 179 2326 173 1333 183 2322 177 2327 182 1305 179 2326 173 1333 183 1323 182 1305 179 1327 178 2326 173 2331 178 1327 178 2308 180 1326 179 1327 178 2325 174 1315 180 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 182 7824 176 2328 181 2323 176 2328 181 2324 175 1312 183 1323 182 2322 177 1330 175 2309 179 2325 174 1332 173 1333 183 1305 179 1327 178 1328 177 1328 177 2308 180 262 177 1885 175 295 175 861 174 2330 179 99 313 911 573 915 590 1916 180 64 349 1910 176 265 174 7896 177 3081 835 3912 182 2322 177 207 179 1942 180 2304 174 268 181 1881 179 263 176 889 177 264 175 886 583 1925 182 271 178 855 180 240 178 1907 174 2331 178 1327 178 1309 176 1329 590 916 589 919 173 306 175 833 181 317 174 1832 175 2329 180 1325 180 309 182 1833 174 1313 182 1325 180 289 181 1853 175 2329 180 8313 178 7845 176 2309 179 2325 174 2331 178 2326 173 1333 183 1304 180 2324 175 1332 173 2330 179 2325 174 1314 181 1325 180 1326 179 1327 178 1308 177 1330 175 2329 180 2324 175 1312 183 2322 177 1329 176 1329 176 2329 180 2304 174 8339 173 351 3575 3902 594 1911 588 1916 593 1911 588 1916 583 904 591 916 589 1915 594 911 584 1920 579 1907 592 915 590 915 591 916 579 908 597 909 596 909 586 1919 580 1907 179 1326 592 1912 597 908 587 901 594 1911 588 1916 593 +# +# Model: RCA RokuTV_RTR4061-B-CA +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9047 4385 682 474 682 1578 708 476 679 1581 706 477 679 1582 705 1582 705 1582 678 1583 679 1607 679 1582 678 478 679 478 678 477 679 1582 705 1582 679 1583 679 1608 704 1582 705 478 678 1582 705 478 678 478 678 478 679 477 679 478 679 478 678 1582 705 478 678 1583 704 1582 705 1582 679 39574 9073 4387 679 478 678 1583 679 503 677 1584 705 478 678 1582 705 1582 705 1582 705 1582 705 1582 705 1582 678 479 677 479 678 479 677 1583 679 1608 704 1582 705 1582 705 1582 705 478 678 1583 704 478 678 478 678 1582 680 478 703 453 704 453 703 1557 703 480 676 1584 704 1583 704 478 678 +# +name: Ch_next +type: parsed +protocol: Samsung32 +address: 05 00 00 00 +command: 12 00 00 00 +# +name: Ch_prev +type: parsed +protocol: Samsung32 +address: 05 00 00 00 +command: 10 00 00 00 +# +# Model: Samsung HQ24ED470AK +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4499 4472 566 1662 565 1664 563 1665 562 565 538 564 539 562 541 560 543 558 545 1683 544 1658 569 1686 541 559 544 557 536 565 538 563 540 561 542 559 544 1684 543 558 545 556 537 564 539 562 541 560 543 558 545 1684 543 558 545 1683 544 1684 543 1660 567 1688 539 1689 538 1664 563 565 538 563 540 561 542 559 544 42973 4495 4472 566 1662 565 1663 564 1664 563 564 539 562 541 560 543 558 545 556 537 1691 536 1691 536 1666 572 555 538 564 539 561 542 559 544 557 536 565 538 1689 538 563 540 560 543 558 545 555 538 563 540 561 542 1686 541 559 544 1684 543 1684 543 1658 569 1685 542 1686 541 1660 567 559 544 557 536 565 538 563 540 42959 4499 4466 562 1666 572 1656 571 1656 571 556 537 564 539 562 541 559 544 556 537 1691 536 1690 537 1664 563 564 539 562 541 560 543 557 536 565 538 563 540 1688 539 561 542 559 544 556 537 564 539 562 541 560 543 1684 543 558 545 1682 545 1683 544 1657 570 1684 543 1659 568 1659 568 559 544 557 536 565 538 563 540 42955 4503 4463 565 1663 564 1663 564 1664 563 563 540 561 542 558 545 556 537 564 539 1688 539 1688 539 1662 565 562 541 559 544 557 536 565 538 563 540 560 543 1685 542 559 544 556 537 564 539 562 541 559 544 557 536 1692 535 565 538 1690 537 1690 537 1664 563 1691 536 1666 572 1656 571 556 537 564 539 562 541 559 544 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4507 4464 564 1690 537 1691 536 1666 572 555 538 538 565 562 541 559 544 557 536 1693 545 1656 571 1657 570 557 536 565 538 563 540 561 542 558 545 1683 544 1657 570 1684 543 558 545 555 538 563 540 561 542 559 544 557 536 565 538 563 540 1688 539 1662 565 1663 564 1663 564 1664 563 564 539 536 567 560 543 558 545 42962 4496 4470 568 1686 541 1660 567 1661 566 560 543 558 545 556 537 564 539 561 542 1686 541 1660 567 1687 540 534 569 558 545 555 538 563 540 561 542 1686 541 1686 541 1686 541 533 570 557 536 565 538 563 540 560 543 558 545 555 538 563 540 1661 566 1687 540 1661 566 1661 566 1662 565 561 542 533 570 557 536 564 539 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4506 4465 563 1692 546 1658 569 1659 568 559 544 557 536 565 538 563 540 561 542 1687 540 1662 565 1689 538 563 540 561 542 560 543 558 545 556 537 1665 562 1693 545 530 563 1692 546 555 538 564 539 562 541 560 543 558 545 556 537 1665 562 539 564 1690 537 1691 536 1692 535 1693 545 556 537 539 564 563 540 561 542 42974 4505 4464 564 1690 537 1665 562 1667 571 530 563 565 538 563 540 561 542 559 544 1684 543 1659 568 1661 566 561 542 559 544 557 536 565 538 563 540 1663 564 1690 537 563 540 1662 565 559 558 545 556 537 564 539 562 541 1688 539 561 542 1687 540 1688 539 1688 539 1663 564 563 540 561 542 559 544 557 536 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4498 4471 567 1661 566 1662 565 1664 563 564 539 563 540 561 542 559 544 557 536 1693 545 1684 543 1659 568 559 544 557 536 566 537 564 539 562 541 560 543 1686 541 560 543 558 545 1684 543 558 545 556 537 564 539 1690 537 564 539 1689 538 1690 537 564 539 1689 538 1665 562 1666 572 556 537 564 539 563 540 560 543 42964 4504 4464 564 1690 537 1665 562 1666 572 555 538 564 539 562 541 560 543 558 545 1683 544 1684 543 1659 568 558 545 556 537 565 538 563 540 560 543 558 545 1683 544 556 537 565 538 1690 537 564 539 561 542 560 543 1685 542 558 545 1683 544 1657 570 557 536 1692 546 1683 544 1684 543 557 536 566 537 563 540 561 542 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4506 4464 564 1691 536 1692 546 1656 571 556 537 564 539 562 541 560 543 558 545 1683 544 1684 543 1685 542 558 545 556 537 565 538 563 540 561 542 558 545 556 537 564 539 562 541 1687 540 561 542 558 545 556 537 1691 536 1665 562 1692 546 1656 571 556 537 1691 536 1692 546 1683 544 557 536 565 538 563 540 560 543 42966 4502 4466 562 1693 545 1683 544 1684 543 558 545 556 537 564 539 561 542 559 544 1684 543 1684 543 1658 569 558 545 530 563 564 539 562 541 560 543 558 535 566 537 564 539 562 541 1687 540 560 543 558 545 555 538 1691 536 1665 562 1693 545 1657 570 557 536 1666 572 1683 544 1658 569 557 546 529 564 563 540 561 542 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4497 4474 564 1690 537 1691 536 1666 572 556 537 564 539 562 541 560 543 558 545 1683 544 1683 544 1684 543 532 571 556 537 564 539 562 541 560 543 1659 568 1686 541 1661 566 1662 565 562 541 560 543 558 535 565 538 563 540 561 542 558 545 556 537 1665 562 1666 572 1656 571 1684 543 557 546 555 538 564 539 562 541 42966 4502 4466 562 1692 535 1693 545 1657 570 556 537 565 538 562 541 560 543 543 1656 571 1656 571 1657 570 557 536 565 538 563 540 560 543 558 545 1683 544 1683 544 1657 570 1684 543 531 562 565 538 563 540 560 543 558 545 556 537 564 539 561 542 1660 567 1686 541 1687 540 1662 565 562 541 533 570 557 536 565 538 +# +# Model: Samsung LE37S71B +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4567 4475 732 1555 703 1608 705 1608 705 478 676 460 669 507 651 506 649 508 621 1640 672 1616 673 1639 674 508 648 508 648 508 647 485 644 511 647 508 648 1639 674 508 649 508 647 485 645 511 647 508 648 509 647 1639 674 509 647 1613 673 1641 673 1640 673 1640 672 1617 671 1640 673 48544 4566 4505 648 1639 674 1639 674 1639 647 510 648 508 648 509 648 508 648 508 648 1639 647 1642 673 1639 674 508 648 509 648 508 647 485 645 511 647 509 647 1640 673 509 647 509 646 486 643 511 647 509 647 509 647 1640 673 509 647 1615 672 1640 673 1640 673 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4583 4485 687 1600 690 1623 716 1596 690 493 660 470 634 521 662 495 659 497 658 1629 684 1630 631 1657 682 500 656 500 656 500 656 500 656 475 653 1633 682 1631 682 1631 682 500 629 502 630 526 656 500 656 500 656 500 656 500 657 500 630 1632 682 1631 682 1631 682 1631 654 1633 682 48536 4553 4518 656 1632 682 1631 682 1631 682 500 630 502 629 526 656 500 656 501 656 1631 682 1631 631 1657 656 526 655 501 655 501 655 501 655 501 629 1634 680 1632 681 1632 681 501 629 502 629 527 654 501 655 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4551 4491 683 1630 658 1628 685 1628 685 500 654 499 631 525 657 499 656 500 656 1632 681 1632 652 1635 681 501 655 501 655 501 655 501 655 501 628 1634 680 1632 681 501 655 1632 680 479 626 528 628 528 654 502 654 502 654 502 655 1632 654 504 627 1659 680 1632 681 1633 654 1634 679 48515 4596 4498 654 1634 653 1633 654 1633 628 529 653 502 654 502 654 502 654 502 654 1633 653 1635 679 1633 680 503 653 503 653 479 651 504 627 528 654 1633 680 1633 680 503 627 1634 679 503 653 503 653 503 653 503 653 503 627 504 627 1660 679 503 653 1634 679 1634 652 1636 678 1634 679 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 1221 1189 435 588 436 890 433 2388 435 590 434 1489 434 1789 434 1190 434 1188 436 2689 435 1488 435 1190 434 86920 327 929 326 377 327 652 328 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 1195 1216 407 616 408 917 406 2414 410 617 406 1518 405 1815 409 1215 434 590 408 2717 406 1516 408 2417 407 86346 375 881 375 326 378 602 377 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 1253 1157 464 560 465 858 460 2364 460 563 462 1462 463 1761 467 1156 465 1159 462 2661 467 1456 469 1155 466 86886 331 925 330 373 328 652 331 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 1224 1186 467 556 437 887 441 2382 463 560 433 1490 466 1757 461 1163 458 566 438 2686 463 1460 465 2359 434 86319 301 953 302 402 330 649 334 +# +name: Vol_dn +type: parsed +protocol: Samsung32 +address: 07 00 00 00 +command: 0b 00 00 00 +# +name: Mute +type: parsed +protocol: Samsung32 +address: 07 00 00 00 +command: 0f 00 00 00 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9040 4407 659 463 659 1579 661 461 685 437 658 463 658 463 658 464 657 470 656 1585 654 491 629 1611 628 1613 626 1614 625 1615 625 1615 625 502 625 1615 625 497 625 496 625 1614 625 1615 625 497 625 497 624 503 624 496 625 1615 624 1615 624 497 625 496 625 1615 624 1615 624 1614 624 41051 9036 2175 625 +# +# Model: Sharp 13VT-L100 +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 264 1848 264 792 264 792 264 792 264 792 264 792 264 1848 264 1848 264 792 264 1848 264 792 264 792 264 792 264 1848 264 792 264 43560 264 1848 264 792 264 792 264 792 264 792 264 1848 264 792 264 792 264 1848 264 792 264 1848 264 1848 264 1848 264 792 264 1848 264 43560 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 264 1848 264 792 264 792 264 792 264 792 264 1848 264 792 264 792 264 792 264 1848 264 792 264 792 264 792 264 1848 264 792 264 43560 264 1848 264 792 264 792 264 792 264 792 264 792 264 1848 264 1848 264 1848 264 792 264 1848 264 1848 264 1848 264 792 264 1848 264 43560 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 264 1848 264 792 264 792 264 792 264 792 264 792 264 1848 264 792 264 792 264 1848 264 792 264 792 264 792 264 1848 264 792 264 43560 264 1848 264 792 264 792 264 792 264 792 264 1848 264 792 264 1848 264 1848 264 792 264 1848 264 1848 264 1848 264 792 264 1848 264 43560 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 264 1848 264 792 264 792 264 792 264 792 264 792 264 792 264 1848 264 792 264 1848 264 792 264 792 264 792 264 1848 264 792 264 43560 264 1848 264 792 264 792 264 792 264 792 264 1848 264 1848 264 792 264 1848 264 792 264 1848 264 1848 264 1848 264 792 264 1848 264 43560 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 264 1848 264 792 264 792 264 792 264 792 264 1848 264 792 264 1848 264 792 264 1848 264 792 264 792 264 792 264 1848 264 792 264 43560 264 1848 264 792 264 792 264 792 264 792 264 792 264 1848 264 792 264 1848 264 792 264 1848 264 1848 264 1848 264 792 264 1848 264 43560 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 264 1848 264 792 264 792 264 792 264 792 264 1848 264 1848 264 1848 264 792 264 1848 264 792 264 792 264 792 264 1848 264 792 264 43560 264 1848 264 792 264 792 264 792 264 792 264 792 264 792 264 792 264 1848 264 792 264 1848 264 1848 264 1848 264 792 264 1848 264 43560 +# +# Model: Sharp Aquos_JP +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3381 1656 439 401 438 1239 439 401 438 1240 439 401 438 1239 440 401 438 1239 440 400 439 1238 440 401 438 1239 440 1240 438 426 438 1240 439 400 439 1240 439 1240 438 1240 438 1240 438 401 438 401 438 402 437 1242 436 402 437 1242 437 402 437 403 436 1242 437 402 437 403 436 403 436 403 436 1242 437 1242 437 403 436 1242 437 403 436 403 436 403 436 1242 437 403 436 403 436 403 436 1243 436 403 436 1242 437 1242 437 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3378 1656 440 400 439 1239 440 400 439 1239 439 400 439 1239 440 399 440 1238 440 400 439 1239 521 371 412 1215 464 1215 464 399 440 1239 439 399 440 1239 439 1240 438 1240 438 1241 438 401 438 401 438 402 437 1242 437 402 437 1242 437 402 437 402 437 1242 437 402 437 402 437 402 437 1242 437 1242 437 1242 437 402 437 1242 437 402 437 402 437 402 437 1242 437 402 437 402 437 402 437 402 437 402 437 1242 437 1242 437 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3374 1661 436 403 436 1243 436 404 435 1243 436 404 435 1243 436 403 435 1242 464 376 463 1215 464 378 461 1216 463 1219 460 402 437 1242 436 403 436 1243 435 1244 435 1244 434 1245 433 405 434 406 433 406 433 1246 433 406 433 1246 433 406 433 406 433 1246 433 406 433 406 433 406 433 406 433 406 433 1246 433 406 433 1246 433 406 433 406 433 406 433 1246 433 406 433 406 433 406 433 1246 433 1246 433 1246 433 1246 433 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3516 1521 438 401 438 1240 439 401 438 1240 439 401 438 1239 440 400 439 1238 466 375 465 1213 465 375 522 1156 522 1158 520 372 466 1184 494 372 412 1240 439 1240 438 1241 438 1241 437 402 437 402 437 402 437 1242 437 402 437 1242 437 403 436 402 437 1243 436 403 436 403 436 403 436 1243 436 403 436 1243 436 403 436 1243 436 403 436 403 436 403 436 1243 436 403 436 403 436 403 436 403 436 1243 436 1243 436 1243 436 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3382 1654 467 374 440 1238 465 375 440 1238 441 398 441 1238 466 374 466 1211 442 424 415 1238 441 424 415 1240 465 1238 441 398 441 1238 441 398 441 1238 440 1238 440 1239 439 1240 439 400 439 400 439 401 438 1241 438 401 438 1241 438 401 438 401 438 1241 438 401 438 401 438 401 438 1241 438 401 439 401 438 401 438 1241 438 401 438 401 438 401 438 1241 438 401 438 401 438 401 438 401 438 1241 438 401 438 1241 438 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3361 1649 443 423 416 1237 442 398 441 1235 444 398 441 1237 442 398 441 1237 442 397 442 1236 443 397 442 1236 443 1237 442 399 440 1236 443 398 441 1263 416 1263 472 1207 471 1207 470 371 414 423 416 423 416 1263 416 423 416 1263 416 423 416 423 416 1262 417 422 417 422 417 422 417 422 417 1262 416 422 417 422 417 1262 416 423 441 398 441 398 441 1238 441 398 441 398 441 399 440 1239 440 399 440 399 440 1238 441 +# +# Model: Sharp LC-RC1-16 +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 352 1747 353 694 354 694 353 694 354 694 354 693 354 1747 354 1745 355 693 355 1746 354 693 355 691 357 691 356 1745 355 689 356 46388 358 1740 359 689 358 688 360 689 358 689 359 1741 358 688 359 689 359 1741 358 691 356 1743 356 1743 356 1742 357 690 357 1741 356 44286 261 1839 260 786 262 786 262 785 263 785 263 786 262 1838 262 1838 262 786 262 1839 261 786 262 784 264 787 261 1837 263 783 262 46491 261 1839 261 786 262 786 262 786 261 786 262 1839 261 786 262 786 262 1839 261 786 262 1838 262 1838 262 1838 262 786 262 1835 262 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 308 1788 312 735 313 734 313 735 313 736 312 735 313 736 312 1788 312 735 313 1786 314 735 313 735 313 734 314 1787 313 731 314 47491 314 1786 314 734 314 734 314 734 314 732 316 1786 315 1784 316 733 315 1786 315 732 316 1785 315 1787 314 1785 315 733 315 1781 317 43284 314 1784 316 731 317 730 318 732 316 732 316 732 316 731 317 1783 317 732 316 1784 316 733 315 731 317 731 317 1784 317 730 315 47500 313 1785 315 733 315 733 315 733 315 734 314 1787 313 1786 315 733 315 1787 313 733 315 1787 313 1786 314 1787 313 734 314 1783 314 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 357 1739 361 688 360 690 357 688 360 691 356 1741 359 689 359 1741 358 690 358 1742 357 691 357 690 357 693 355 1744 356 689 356 46399 355 1743 357 691 357 691 357 691 357 692 355 692 356 1744 356 692 356 1744 356 692 356 1744 355 1745 355 1745 263 785 263 1835 263 44390 261 1839 262 786 262 787 261 787 261 786 262 1839 261 787 261 1840 261 786 262 1839 262 786 262 785 263 785 263 1839 261 784 261 46497 262 1839 261 786 262 786 262 787 261 786 262 786 262 1838 262 786 262 1840 260 787 261 1839 261 1840 260 1840 260 787 261 1835 263 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 260 1838 262 787 261 786 262 787 261 786 261 1838 262 1838 262 1838 262 786 262 1839 261 786 262 786 262 786 262 1839 261 784 261 45433 261 1839 261 785 263 785 263 785 263 785 263 786 262 786 262 785 263 1838 262 786 262 1839 261 1837 263 1838 262 786 262 1835 263 45436 356 1744 356 691 356 691 356 692 356 691 356 1743 357 1744 356 1745 355 691 356 1745 354 692 356 693 354 691 356 1745 355 691 353 45343 359 1742 358 688 360 688 359 689 359 687 361 688 360 689 359 688 360 1741 359 688 360 1742 358 1739 361 1741 359 689 359 1739 359 45337 286 1813 287 761 287 761 287 761 287 760 288 1813 287 1813 287 1813 287 760 288 1813 287 760 288 760 288 760 288 1812 288 757 288 45413 287 1814 286 761 287 761 287 759 289 760 288 760 288 761 287 760 288 1813 287 762 286 1813 287 1813 287 1813 361 685 288 1810 288 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 356 1743 358 689 359 690 358 689 359 689 359 1741 359 688 360 688 360 688 360 1739 362 687 361 687 361 686 362 1739 361 684 361 47444 287 1812 288 760 288 759 289 760 288 759 288 760 288 1813 287 1812 288 1812 312 736 288 1812 288 1812 288 1813 287 760 288 1810 287 43309 286 1812 288 761 310 736 288 759 289 762 286 1812 312 737 311 736 312 736 312 1790 311 737 311 736 312 736 312 1789 311 734 312 47501 313 1786 314 733 315 734 314 733 315 734 314 733 315 1785 315 1785 315 1786 314 733 315 1785 315 1786 314 1786 314 731 317 1782 316 43279 339 1760 317 731 339 709 316 730 318 733 315 1783 317 732 316 731 317 731 317 1784 316 732 316 731 317 731 317 1785 315 729 316 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 287 1812 288 760 288 761 287 761 287 761 287 760 288 1814 286 760 288 761 287 1813 287 760 288 760 288 760 288 1813 287 757 312 47498 340 1759 341 707 341 709 315 731 340 708 340 1760 340 707 341 1759 318 1783 317 730 318 1782 318 1783 317 1784 316 731 317 1782 316 43284 314 1787 314 736 312 734 314 734 314 734 314 735 313 1787 314 735 313 734 314 1787 313 735 313 734 314 733 315 1787 314 732 313 47500 285 1813 361 685 363 687 361 687 361 686 362 1739 360 687 361 1740 359 1740 360 689 358 1741 359 1743 356 1746 353 690 357 1741 356 +# +# Model: Sharp tv +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 195 1833 300 766 280 760 275 790 276 737 309 731 304 1801 301 1804 309 731 304 1801 270 795 282 758 277 762 273 1832 270 769 246 45851 326 1780 302 739 307 785 282 732 303 736 310 1795 307 732 303 763 303 1775 307 733 334 1798 273 1832 270 1810 251 814 273 1780 281 43762 302 1804 309 758 277 737 330 762 284 730 305 734 301 1803 310 1796 306 733 302 1829 273 767 279 734 301 791 275 1804 278 762 253 45870 307 1798 304 763 272 767 279 787 279 760 275 1829 284 730 305 734 301 1804 309 757 278 1827 275 1804 278 1828 274 765 270 1835 278 43740 303 1776 306 787 279 760 275 765 281 759 307 758 277 1775 307 1799 303 736 299 1832 281 759 276 763 304 736 299 1832 281 733 302 45820 306 1800 302 764 282 758 277 788 278 762 284 1821 281 732 303 736 310 1796 307 733 302 1829 273 1806 276 1830 272 767 268 1837 245 43772 302 1778 304 789 277 762 284 756 279 786 249 765 301 1777 336 1770 301 764 282 1824 278 761 274 765 301 738 308 1824 278 761 274 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 254 1721 360 681 354 738 308 706 329 711 355 1774 307 1772 361 1744 327 687 359 1772 299 742 335 705 330 736 279 1825 298 742 283 44773 384 1721 360 707 308 707 359 733 302 711 335 705 361 704 331 708 338 1766 336 704 331 1773 329 1776 306 1773 360 681 323 1782 331 44726 411 1722 328 686 360 733 302 711 335 705 361 1742 329 1803 330 1749 332 708 327 1777 335 705 330 710 325 741 274 1830 303 737 278 44778 359 1747 355 712 303 711 355 711 335 705 330 709 337 703 363 703 332 1770 332 709 337 1767 335 1771 300 1752 360 733 302 1776 326 44731 355 1751 330 711 355 737 309 705 330 710 336 1793 309 1771 331 1774 307 706 360 1771 300 740 326 714 332 735 280 1798 325 741 274 +# +# Model: Sharp TV2 +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 277 1806 274 775 281 776 279 770 275 774 281 768 277 1814 277 1806 274 775 280 1803 277 780 276 773 282 766 279 1831 249 781 274 45962 281 1803 277 771 274 783 273 802 253 770 275 1834 257 801 255 768 277 1807 273 775 280 1811 280 1804 276 1806 274 774 282 1811 280 43887 275 1809 282 767 278 779 276 799 256 766 279 771 274 1843 248 1810 281 767 278 1806 274 782 274 776 279 796 249 1807 273 784 282 45962 279 1804 276 772 273 784 282 768 277 798 247 1836 255 802 253 796 249 1808 283 766 279 1813 278 1805 275 1808 272 776 279 1813 278 43890 282 1801 279 769 276 781 274 775 280 769 276 773 283 1834 257 1801 279 769 276 1808 272 784 282 767 278 772 273 1810 281 776 279 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 282 1801 280 769 276 781 275 774 282 768 277 1805 276 781 275 775 281 769 276 1832 249 809 247 776 280 770 275 1834 247 784 282 47004 273 1811 280 768 277 780 276 773 283 767 278 771 274 1816 275 1809 272 1811 280 768 277 1815 276 1807 274 1809 282 767 278 1813 278 42841 284 1799 282 768 277 780 276 774 282 767 278 1805 276 781 275 774 282 768 277 1806 275 782 274 775 281 769 276 1807 274 783 283 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 273 1810 281 768 277 780 276 799 257 767 278 797 248 1816 275 774 282 768 277 1806 275 808 248 801 255 795 250 1807 274 809 247 46989 278 1805 276 799 246 784 282 767 278 798 247 1835 256 775 281 1803 278 1806 275 773 283 1809 272 1811 280 1803 278 771 274 1817 274 42868 278 1806 275 799 257 775 281 768 277 798 247 776 280 1811 280 770 275 773 283 1801 280 777 279 771 274 801 255 1802 279 778 278 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 282 1801 280 769 276 781 275 775 281 768 277 772 273 784 282 1801 280 770 275 1807 274 784 282 767 278 771 274 1809 282 775 281 47005 282 1801 280 770 275 782 274 776 280 769 276 1807 274 1817 274 775 280 1803 278 771 274 1817 274 1809 282 1801 280 770 275 1815 276 42841 273 1811 280 769 276 781 275 774 282 768 277 772 273 783 273 1811 280 794 251 1806 275 782 274 776 280 769 276 1808 273 783 283 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 277 1805 276 799 246 785 281 768 277 798 247 1810 281 775 281 1804 277 771 274 1810 281 801 255 795 250 772 273 1811 280 776 280 45957 274 1809 272 777 279 778 278 772 273 776 280 769 276 1815 276 799 246 1811 280 769 276 1815 276 1807 274 1809 282 767 278 1813 278 43890 280 1803 278 797 248 783 273 776 280 796 249 1834 247 784 282 1802 279 796 249 1808 273 783 283 793 252 770 275 1808 273 784 282 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 281 1803 278 771 274 782 274 775 281 769 276 1807 274 1817 274 1835 256 766 280 1804 277 780 276 773 283 767 278 1831 250 780 276 44910 276 1835 256 766 280 777 279 771 275 774 282 767 278 779 277 773 283 1800 281 768 277 1814 277 1806 275 1808 283 766 279 1811 280 44937 280 1803 278 771 274 783 283 766 279 770 275 1808 273 1819 272 1811 280 768 277 1807 274 782 274 776 280 769 276 1833 248 784 282 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8958 4449 510 4475 515 4444 515 2213 508 4477 513 2215 516 2212 509 2219 512 2217 514 2214 517 2211 540 2214 517 2211 510 4449 510 2218 513 4472 507 2220 511 30572 8960 2218 513 87698 8966 2211 510 87701 8963 2214 568 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 8956 4451 508 2220 511 2217 514 4470 510 4449 510 2218 544 2211 510 2218 513 2215 516 2212 509 2220 511 2217 514 2214 517 2211 510 2245 517 4441 508 2220 511 35049 8961 2215 516 87696 8959 2217 514 87698 8956 2220 511 87701 8964 2213 508 +# +name: Ch_prev +type: parsed +protocol: SIRC +address: 01 00 00 00 +command: 10 00 00 00 +# +name: Ch_next +type: parsed +protocol: SIRC +address: 01 00 00 00 +command: 11 00 00 00 +# +# Model: Strong STR7004 +name: Power +type: parsed +protocol: NEC +address: 01 00 00 00 +command: 1C 00 00 00 +# +name: Vol_up +type: parsed +protocol: NEC +address: 01 00 00 00 +command: 4B 00 00 00 +# +name: Vol_dn +type: parsed +protocol: NEC +address: 01 00 00 00 +command: 4F 00 00 00 +# +name: Ch_next +type: parsed +protocol: NEC +address: 01 00 00 00 +command: 09 00 00 00 +# +name: Ch_prev +type: parsed +protocol: NEC +address: 01 00 00 00 +command: 05 00 00 00 +# +name: Mute +type: parsed +protocol: NEC +address: 01 00 00 00 +command: 08 00 00 00 +# +# Model: Symphonic ST424FF +name: Power +type: raw +frequency: 36700 +duty_cycle: 0.330000 +data: 3488 3488 872 2616 872 872 872 872 872 2616 872 872 872 2616 872 872 872 872 872 872 872 872 872 872 872 2616 872 872 872 2616 872 2616 872 872 872 2616 872 872 872 2616 872 2616 872 2616 872 2616 872 2616 872 872 872 34008 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3488 3488 872 2616 872 872 872 872 872 2616 872 872 872 2616 872 872 872 872 872 872 872 872 872 2616 872 2616 872 872 872 2616 872 2616 872 872 872 2616 872 872 872 2616 872 2616 872 2616 872 2616 872 872 872 872 872 34008 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3488 3488 872 2616 872 872 872 872 872 2616 872 872 872 2616 872 2616 872 872 872 872 872 872 872 2616 872 2616 872 872 872 2616 872 2616 872 872 872 2616 872 872 872 872 872 2616 872 2616 872 2616 872 872 872 872 872 34008 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3488 3488 872 2616 872 872 872 872 872 2616 872 872 872 2616 872 872 872 872 872 872 872 872 872 2616 872 872 872 872 872 2616 872 2616 872 872 872 2616 872 872 872 2616 872 2616 872 2616 872 2616 872 872 872 2616 872 34008 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3488 3488 872 2616 872 872 872 872 872 2616 872 872 872 2616 872 872 872 872 872 872 872 2616 872 872 872 872 872 872 872 2616 872 2616 872 872 872 2616 872 872 872 2616 872 2616 872 2616 872 872 872 2616 872 2616 872 34008 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 3488 3488 872 2616 872 872 872 872 872 2616 872 872 872 2616 872 2616 872 2616 872 872 872 872 872 2616 872 2616 872 872 872 2616 872 2616 872 872 872 2616 872 872 872 872 872 872 872 2616 872 2616 872 872 872 872 872 34008 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 4012 3982 514 1984 519 1979 514 1984 519 1979 514 983 519 980 512 1988 516 982 520 1979 514 1984 519 1978 515 983 519 980 511 987 515 983 519 980 511 1988 516 1982 511 987 515 1983 521 978 514 985 517 981 521 1978 515 +# +# Model: TC 33_VNS2000 +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 171 91301 168 17617 175 4907 167 15077 177 55723 170 4910 174 7448 174 15071 173 4908 176 17609 172 7450 172 7451 171 68432 169 7454 168 7454 168 4913 171 7451 171 4911 173 4908 176 7446 176 7446 176 50643 176 4905 169 4912 172 7450 172 7450 172 7451 171 4911 173 7448 174 4908 176 4905 169 7452 170 7453 169 50649 169 4912 173 4909 175 7447 175 7448 174 7448 174 4908 176 7446 176 4906 168 4913 171 7450 172 7451 171 50647 171 4911 173 4908 176 7445 177 7445 177 7446 176 4906 168 7454 168 4913 171 4910 174 7448 174 7449 173 50645 173 9990 169 7453 169 7454 168 7455 177 4905 169 7452 170 4912 172 4909 175 7447 175 7447 175 50644 174 4908 176 4905 169 7453 169 7454 168 7454 178 4904 170 7452 170 4912 172 4909 175 7447 175 7448 174 55726 177 4905 169 7453 169 7452 170 7453 169 4914 170 7451 171 4910 174 4907 177 7446 176 7446 176 50642 176 4906 168 4913 171 7452 170 7452 170 7453 169 4912 172 7450 172 4910 174 4907 177 7445 177 7446 176 50642 176 9987 172 7450 171 15074 170 4911 173 7450 172 4909 175 4906 168 7455 177 7446 176 50641 176 9988 171 7451 171 7451 171 7452 170 4912 172 7450 172 4909 175 4906 168 7454 178 7444 177 50641 167 4914 170 4911 174 7449 173 7449 173 7449 173 4909 175 7447 175 4907 177 4904 170 15075 169 50650 168 4913 171 4910 174 7448 174 7448 174 7448 174 4908 176 7447 175 4907 177 4903 171 7452 170 7452 170 50648 170 4912 172 4909 175 7446 176 7447 175 7448 174 4907 177 7446 176 4906 168 4912 172 7450 172 7451 171 50648 170 4912 172 4908 176 7446 176 7446 176 7447 175 4906 168 7454 178 4904 170 4911 173 15072 172 50646 173 4908 176 4906 168 7454 168 7455 177 7444 168 4915 169 7453 169 4913 171 4910 174 7448 174 7448 174 50644 174 4908 176 4904 170 7453 169 7453 169 7454 178 4904 170 40 198 7213 170 4910 174 4907 177 7446 176 7446 176 50643 175 4905 169 4913 171 7451 171 7452 170 7452 170 4911 173 7449 173 4909 175 4905 169 7454 168 7454 168 50650 178 4904 170 4911 173 7449 173 7450 172 7451 171 4910 174 7448 174 4907 177 4905 169 7453 169 7453 169 50649 169 4913 172 4910 174 15071 173 7449 173 4908 176 7447 175 4906 168 4913 171 7451 171 7451 171 50648 170 4911 173 4909 175 7446 176 7447 175 7448 174 4908 176 7446 176 4905 169 4913 171 15074 170 50648 170 4912 172 20154 175 7448 174 4907 177 7445 177 4904 170 4912 172 7450 172 7450 172 50647 170 4911 173 4908 176 7447 174 7447 174 7448 174 4908 176 7446 175 4906 168 4913 171 7451 171 7452 170 50649 168 4912 172 4910 174 7447 175 7448 174 7449 172 4909 175 7447 174 4907 177 4904 170 7452 170 7453 169 50649 169 4913 171 4910 174 7449 173 7449 173 7450 172 4909 175 7447 175 4906 168 4914 170 7452 170 7453 169 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 170 86221 170 7452 169 7453 168 12536 170 7452 169 43026 168 15077 177 7445 176 20150 168 15076 178 4904 170 7452 170 73516 168 7454 168 12536 171 7452 170 12534 172 7450 171 7451 171 43025 170 7452 170 15075 169 15077 177 4904 170 7452 170 7452 170 12535 172 7450 172 81138 178 12526 170 27779 172 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 169 12535 174 88758 177 7445 168 4913 172 7450 173 4908 177 7445 168 48108 171 4910 175 4907 168 7454 169 7454 169 7453 170 7454 169 7452 171 4911 174 7448 175 4907 168 7454 169 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 173 7448 175 7445 178 7443 170 7451 172 7449 174 7447 176 7445 168 4912 173 7447 176 7446 177 4903 172 43015 177 7443 170 7451 172 7448 175 7445 178 7444 169 7452 171 7449 174 4907 168 7452 171 7450 173 4907 168 43018 175 7447 176 7444 169 7453 170 7450 173 7448 175 7446 177 399 174 6870 169 4911 174 7447 176 7445 168 4912 173 43013 169 7451 172 7451 172 7448 175 7445 168 7453 170 7451 172 7449 174 4906 169 7452 171 7450 173 4907 168 43019 174 7447 176 7445 178 7443 170 7450 173 7448 175 7446 177 7444 169 4910 175 7447 176 7444 169 4913 172 43012 170 7452 171 7450 173 7448 175 7445 168 7453 170 7450 173 7449 174 4907 168 7452 171 7450 173 4908 177 43010 171 7448 175 7446 177 7444 169 7451 172 7448 175 +# +# Model: Telekom Entertain +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 328 605 321 283 643 290 313 589 316 287 639 596 642 589 316 285 318 285 641 591 637 294 309 587 328 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 331 601 314 289 647 285 308 595 320 282 644 591 647 584 321 282 644 587 318 285 641 290 313 583 332 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 330 632 294 281 645 288 315 585 320 284 642 593 645 585 320 284 642 589 649 583 644 586 329 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 333 600 315 288 638 294 309 594 321 281 645 591 636 595 643 589 638 592 313 290 646 585 330 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 334 628 287 289 647 285 308 593 322 307 619 589 649 582 323 280 646 586 641 589 316 287 639 89967 331 602 313 290 646 286 307 595 320 283 643 591 647 584 321 282 644 588 639 591 314 288 638 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 332 601 314 290 646 286 307 594 321 282 644 590 648 582 323 281 645 586 641 290 313 583 644 +# +# Model: Vizio D32FM-K01 +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9219 4484 662 469 661 469 661 1627 660 471 658 474 656 499 631 499 631 499 631 1657 630 1657 631 500 630 1657 631 1657 631 1657 630 1657 631 1657 631 500 630 500 630 500 630 1657 630 500 631 500 630 500 631 500 630 1657 630 1658 630 1657 631 500 630 1657 631 1658 630 1658 630 1658 630 40107 9106 2202 631 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9218 4484 636 495 660 469 661 1627 660 471 658 472 658 474 656 475 655 474 656 1632 655 1632 656 474 657 1632 656 1631 657 1632 656 1631 656 1632 656 474 656 1632 655 475 656 474 657 474 656 474 656 474 656 474 656 1632 655 474 656 1632 656 1632 656 1632 656 1632 656 1632 656 1632 656 40103 9107 2177 655 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9245 4429 689 467 662 468 661 1626 660 471 658 473 657 474 656 474 656 474 656 1631 657 1631 657 474 656 1631 656 1632 656 1631 657 1631 657 1631 656 1632 656 1631 657 474 656 474 656 474 657 474 656 474 656 474 657 474 656 474 656 1631 656 1632 656 1632 656 1632 656 1632 656 1631 656 40082 9109 2175 656 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9219 4485 636 495 660 469 661 1626 661 471 658 473 657 474 656 499 631 500 630 1657 630 1657 631 500 630 1657 630 1657 631 1657 631 1657 630 1657 631 1657 631 500 630 500 630 1657 631 500 630 500 630 500 630 500 631 500 630 1657 631 1657 631 500 630 1657 631 1658 630 1657 631 1658 630 39868 9106 2178 655 +# +# Model: Vizio XRT140R +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 9016 4408 603 512 602 512 629 1599 686 428 630 483 630 484 629 485 628 492 627 1604 625 1605 624 491 623 1630 599 1631 598 1631 598 1631 598 1636 599 515 599 515 599 515 599 1631 599 515 599 515 599 515 599 521 599 1631 599 1631 599 1631 598 515 599 1631 598 1631 598 1631 598 1632 598 39999 9016 2166 626 95735 9012 2168 625 95735 9013 2167 626 +# +# Model: Xiaomi TV +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 988 605 587 1176 588 589 586 882 587 1178 585 588 588 589 587 1470 587 1175 589 588 587 590 586 13118 986 608 587 1177 587 588 587 882 587 1178 586 588 587 589 587 1470 587 1177 587 590 585 588 588 13117 987 609 586 1177 587 590 585 882 587 1177 587 589 586 588 588 1472 585 1176 588 588 587 588 587 13118 986 608 587 1177 586 589 587 881 588 1177 587 588 587 589 587 1470 587 1177 587 589 586 588 588 13116 988 609 586 1178 586 589 586 883 586 1177 587 589 586 590 586 1471 586 1178 585 588 587 588 588 13117 987 609 586 1177 587 589 587 883 586 1177 586 589 587 589 586 1472 585 1176 588 589 587 589 587 13116 988 610 585 1178 586 588 588 882 587 1176 588 590 586 588 587 1471 586 1177 586 589 587 589 586 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 990 603 589 1175 589 587 588 882 587 1175 588 588 588 589 586 1470 587 1471 587 588 588 881 588 12528 988 609 586 1177 587 589 586 882 587 1177 586 588 587 589 587 1470 587 1471 587 588 588 881 588 12527 989 607 588 1175 589 588 588 881 588 1175 588 588 588 587 589 1470 587 1470 588 589 587 881 588 12528 988 607 588 1175 589 588 587 882 587 1178 586 587 588 588 588 1472 586 1470 588 588 587 881 588 12529 987 608 587 1175 589 587 589 882 587 1175 589 589 587 587 589 1469 588 1470 588 587 589 881 588 12528 988 607 588 1175 589 590 585 883 586 1176 587 587 589 588 588 1471 586 1470 588 587 589 883 586 12527 989 607 588 1176 588 588 588 880 589 1176 588 588 588 589 586 1469 588 1469 589 588 587 881 588 +# +# Model: Zenith SC3492Z +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 611 386 612 3984 612 4984 612 387 611 3985 612 387 611 3986 611 4985 611 387 611 3986 611 4985 611 387 611 3986 610 4987 609 4985 611 389 609 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 595 403 595 4002 594 5001 595 404 594 4002 594 405 593 4003 594 5001 595 5001 595 405 593 4003 594 405 593 4004 592 5004 592 406 592 4004 593 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 596 401 597 4000 596 5000 596 402 596 4001 596 402 596 4002 595 5000 596 5000 596 403 595 4002 595 402 596 4003 594 5002 594 5000 596 404 594 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 484 514 485 4112 485 5111 485 514 485 4112 484 5110 486 513 486 4111 485 5110 486 514 485 4112 484 513 486 4112 484 5112 484 5113 483 513 486 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 591 405 593 4005 591 5005 591 407 591 4006 591 408 590 4006 591 5006 590 5004 592 406 591 4005 592 5005 591 407 591 4006 591 407 591 4007 590 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 598 400 598 3999 597 4999 596 401 597 4000 597 5000 596 402 596 3999 598 4999 597 401 597 4000 597 4998 598 402 596 4000 597 402 596 4000 597 +# +# Model: Zenith tv +name: Power +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 561 442 562 4055 591 5032 592 413 591 4026 593 411 593 4026 593 5030 618 387 617 4001 592 5032 591 440 564 4028 591 5033 590 5034 589 440 563 +# +name: Mute +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 591 411 593 4025 593 5030 593 411 593 4025 593 411 593 4025 618 5005 619 5003 593 439 564 4027 592 439 564 4029 590 5033 590 439 564 4055 563 123130 617 387 618 3999 593 5031 592 439 564 4027 592 439 564 4029 590 5034 589 5059 563 440 563 4056 563 442 561 4058 561 5063 560 443 560 4059 560 +# +name: Ch_next +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 591 412 592 4026 593 5030 593 411 593 4025 594 411 617 4001 618 5005 619 5004 592 439 565 4028 590 5032 591 439 564 4055 564 440 563 4056 563 +# +name: Ch_prev +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 591 412 592 4026 592 5029 594 411 593 4025 593 5030 593 411 617 4001 619 5003 617 415 565 4027 592 5032 591 439 564 4030 589 439 564 4055 564 +# +name: Vol_up +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 591 413 591 4027 592 5030 593 411 593 4026 593 412 592 4025 618 5005 620 5004 592 439 564 4028 591 439 564 4029 590 5033 590 5035 588 440 563 122125 617 387 619 4000 592 5032 591 439 564 4028 591 439 565 4030 589 5034 589 5059 564 441 562 4057 562 442 561 4058 561 5063 560 5063 560 444 560 +# +name: Vol_dn +type: raw +frequency: 38000 +duty_cycle: 0.330000 +data: 590 412 592 4026 593 5030 593 412 592 4025 594 5029 594 412 616 4002 618 5003 593 439 564 4027 592 439 564 4029 590 5033 590 5035 588 440 563 diff --git a/scripts/fix_ir_universals.py b/scripts/fix_ir_universals.py index e51687593d..dd39c80db1 100755 --- a/scripts/fix_ir_universals.py +++ b/scripts/fix_ir_universals.py @@ -12,7 +12,7 @@ signal = [] comment = [] signals = [] - for line in lines: + for line in lines[2:]: if line.startswith("#"): comment.append(line) continue From 0a8b9a701a503dc6f5d080022c29d1b3682b130c Mon Sep 17 00:00:00 2001 From: jay candel Date: Wed, 22 Jan 2025 11:46:40 +0800 Subject: [PATCH 81/85] IR: Easy Learn (#350) * initial working commit * update names + format * add skip functionality * misc tweaks * change back gpio label * remove gpio setting changes * misc fixes * bug fixes and polish * add subtitle button and reorganize order * update ir settings to version 2 * ir settings v1 migration support * fixes * format * misc fixes * Simplify and standardize settings handling * Auto-calculate easy_mode_button_count * Case insensitive match existing remote buttons * Display button name more prominently * Sort submenu indexes and handling * Fine to keep text highlighted * Some formatting for less conflicts * Not sure how these got lost kek * Update changelog --------- Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com> --- CHANGELOG.md | 1 + applications/external | 2 +- applications/main/infrared/infrared_app.c | 21 +-- applications/main/infrared/infrared_app.h | 12 -- applications/main/infrared/infrared_app_i.h | 6 + .../main/infrared/infrared_settings.h | 62 +++++++ .../infrared/scenes/infrared_scene_learn.c | 163 ++++++++++++++++-- .../scenes/infrared_scene_learn_enter_name.c | 19 +- .../infrared/scenes/infrared_scene_start.c | 27 ++- furi/flipper.c | 2 +- 10 files changed, 277 insertions(+), 38 deletions(-) create mode 100644 applications/main/infrared/infrared_settings.h diff --git a/CHANGELOG.md b/CHANGELOG.md index a4c6560616..329dc30d95 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,6 +10,7 @@ - GPIO: TEA5767 FM Radio (by @coolshrimp) - NFC: Metroflip (by @luu176) - USB: USB Game Controller (by @expected-ingot) +- Infrared: Easy Learn mode to quickly save buttons without typing (#350 by @jaylikesbunda) - Archive: Setting to show dynamic path in file browser statusbar (#322 by @956MB) - CLI: Add `clear` and `cls` commands, add `did you mean ...?` command suggestion (#342 by @dexvleads) - Main Menu: Add coverflow menu style (#314 by @CodyTolene) diff --git a/applications/external b/applications/external index b1d5158975..337177af64 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit b1d5158975f0edf35ca59bf327b4c23b024474fb +Subproject commit 337177af6444a1d55c2e9a7002c5b5c08c8eee55 diff --git a/applications/main/infrared/infrared_app.c b/applications/main/infrared/infrared_app.c index 4bc4937df4..43f6e78172 100644 --- a/applications/main/infrared/infrared_app.c +++ b/applications/main/infrared/infrared_app.c @@ -1,5 +1,7 @@ #include "infrared_app_i.h" +#include "infrared_settings.h" + #include #include @@ -153,6 +155,9 @@ static InfraredApp* infrared_alloc(void) { InfraredAppState* app_state = &infrared->app_state; app_state->is_learning_new_remote = false; app_state->is_debug_enabled = furi_hal_rtc_is_flag_set(FuriHalRtcFlagDebug); + app_state->is_transmitting = false; + app_state->is_otg_enabled = false; + app_state->is_easy_mode = false; app_state->edit_target = InfraredEditTargetNone; app_state->edit_mode = InfraredEditModeNone; app_state->current_button_index = InfraredButtonIndexNone; @@ -503,12 +508,7 @@ void infrared_enable_otg(InfraredApp* infrared, bool enable) { static void infrared_load_settings(InfraredApp* infrared) { InfraredSettings settings = {0}; - if(!saved_struct_load( - INFRARED_SETTINGS_PATH, - &settings, - sizeof(InfraredSettings), - INFRARED_SETTINGS_MAGIC, - INFRARED_SETTINGS_VERSION)) { + if(!infrared_settings_load(&settings)) { FURI_LOG_D(TAG, "Failed to load settings, using defaults"); // infrared_save_settings(infrared); } @@ -517,20 +517,17 @@ static void infrared_load_settings(InfraredApp* infrared) { if(settings.tx_pin < FuriHalInfraredTxPinMax) { infrared_enable_otg(infrared, settings.otg_enabled); } + infrared->app_state.is_easy_mode = settings.easy_mode; } void infrared_save_settings(InfraredApp* infrared) { InfraredSettings settings = { .tx_pin = infrared->app_state.tx_pin, .otg_enabled = infrared->app_state.is_otg_enabled, + .easy_mode = infrared->app_state.is_easy_mode, }; - if(!saved_struct_save( - INFRARED_SETTINGS_PATH, - &settings, - sizeof(InfraredSettings), - INFRARED_SETTINGS_MAGIC, - INFRARED_SETTINGS_VERSION)) { + if(!infrared_settings_save(&settings)) { FURI_LOG_E(TAG, "Failed to save settings"); } } diff --git a/applications/main/infrared/infrared_app.h b/applications/main/infrared/infrared_app.h index fedfd8af91..a6f87402a9 100644 --- a/applications/main/infrared/infrared_app.h +++ b/applications/main/infrared/infrared_app.h @@ -13,15 +13,3 @@ * @brief InfraredApp opaque type declaration. */ typedef struct InfraredApp InfraredApp; - -#include -#include - -#define INFRARED_SETTINGS_PATH INT_PATH(".infrared.settings") -#define INFRARED_SETTINGS_VERSION (1) -#define INFRARED_SETTINGS_MAGIC (0x1F) - -typedef struct { - FuriHalInfraredTxPin tx_pin; - bool otg_enabled; -} InfraredSettings; diff --git a/applications/main/infrared/infrared_app_i.h b/applications/main/infrared/infrared_app_i.h index 75d8502f26..b078429b3e 100644 --- a/applications/main/infrared/infrared_app_i.h +++ b/applications/main/infrared/infrared_app_i.h @@ -52,6 +52,10 @@ #define INFRARED_DEFAULT_REMOTE_NAME "Remote" #define INFRARED_LOG_TAG "InfraredApp" +/* Button names for easy mode */ +extern const char* const easy_mode_button_names[]; +extern const size_t easy_mode_button_count; // Number of buttons in the array + /** * @brief Enumeration of invalid remote button indices. */ @@ -85,9 +89,11 @@ typedef struct { bool is_debug_enabled; /**< Whether to enable or disable debugging features. */ bool is_transmitting; /**< Whether a signal is currently being transmitted. */ bool is_otg_enabled; /**< Whether OTG power (external 5V) is enabled. */ + bool is_easy_mode; /**< Whether easy learning mode is enabled. */ InfraredEditTarget edit_target : 8; /**< Selected editing target (a remote or a button). */ InfraredEditMode edit_mode : 8; /**< Selected editing operation (rename or delete). */ int32_t current_button_index; /**< Selected button index (move destination). */ + int32_t existing_remote_button_index; /**< Existing remote's current button index (easy mode). */ int32_t prev_button_index; /**< Previous button index (move source). */ uint32_t last_transmit_time; /**< Lat time a signal was transmitted. */ FuriHalInfraredTxPin tx_pin; diff --git a/applications/main/infrared/infrared_settings.h b/applications/main/infrared/infrared_settings.h new file mode 100644 index 0000000000..bb9fa0ec3b --- /dev/null +++ b/applications/main/infrared/infrared_settings.h @@ -0,0 +1,62 @@ +#pragma once + +#include +#include +#include + +#define INFRARED_SETTINGS_PATH INT_PATH(".infrared.settings") +#define INFRARED_SETTINGS_VERSION (2) +#define INFRARED_SETTINGS_MAGIC (0x1F) + +typedef struct { + FuriHalInfraredTxPin tx_pin; + bool otg_enabled; + bool easy_mode; +} InfraredSettings; + +typedef struct { + FuriHalInfraredTxPin tx_pin; + bool otg_enabled; +} _InfraredSettingsV1; + +bool infrared_settings_load(InfraredSettings* settings) { + // Default load + if(saved_struct_load( + INFRARED_SETTINGS_PATH, + settings, + sizeof(*settings), + INFRARED_SETTINGS_MAGIC, + INFRARED_SETTINGS_VERSION)) { + return true; + } + + // Set defaults + settings->tx_pin = FuriHalInfraredTxPinInternal; + settings->otg_enabled = false; + settings->easy_mode = false; + + // Try to migrate + uint8_t magic, version; + if(saved_struct_get_metadata(INFRARED_SETTINGS_PATH, &magic, &version, NULL) && + magic == INFRARED_SETTINGS_MAGIC) { + _InfraredSettingsV1 v1; + + if(version == 1 && + saved_struct_load(INFRARED_SETTINGS_PATH, &v1, sizeof(v1), magic, version)) { + settings->tx_pin = v1.tx_pin; + settings->otg_enabled = v1.otg_enabled; + return true; + } + } + + return false; +} + +bool infrared_settings_save(InfraredSettings* settings) { + return saved_struct_save( + INFRARED_SETTINGS_PATH, + settings, + sizeof(*settings), + INFRARED_SETTINGS_MAGIC, + INFRARED_SETTINGS_VERSION); +} diff --git a/applications/main/infrared/scenes/infrared_scene_learn.c b/applications/main/infrared/scenes/infrared_scene_learn.c index bcd0a2cd0f..e19624d203 100644 --- a/applications/main/infrared/scenes/infrared_scene_learn.c +++ b/applications/main/infrared/scenes/infrared_scene_learn.c @@ -1,23 +1,155 @@ #include "../infrared_app_i.h" #include +/* Button names for easy mode */ +const char* const easy_mode_button_names[] = {"Power", "Vol_up", "Vol_dn", "Mute", "Ch_up", + "Ch_dn", "Ok", "Up", "Down", "Left", + "Right", "Menu", "Back", "Play", "Pause", + "Stop", "Next", "Prev", "FF", "Rew", + "Input", "Exit", "Eject", "Subtitle"}; +const size_t easy_mode_button_count = COUNT_OF(easy_mode_button_names); + +static void infrared_scene_learn_dialog_result_callback(DialogExResult result, void* context) { + InfraredApp* infrared = context; + view_dispatcher_send_custom_event(infrared->view_dispatcher, result); +} + +static bool infrared_scene_learn_get_next_name( + InfraredApp* infrared, + int32_t start_index, + int32_t* next_index) { + if(!infrared->remote) return false; + + // Search through remaining button names to find one that doesn't exist + FuriString* name = furi_string_alloc(); + for(int32_t i = start_index; i < (int32_t)easy_mode_button_count; i++) { + furi_string_set(name, easy_mode_button_names[i]); + bool name_exists = false; + + // Check if this name already exists in remote + for(size_t j = 0; j < infrared_remote_get_signal_count(infrared->remote); j++) { + if(furi_string_cmpi(name, infrared_remote_get_signal_name(infrared->remote, j)) == 0) { + name_exists = true; + break; + } + } + + // If we found a name that doesn't exist, return it + if(!name_exists) { + *next_index = i; + return true; + } + } + furi_string_free(name); + + return false; +} + +static void infrared_scene_learn_update_button_name(InfraredApp* infrared, bool increment) { + DialogEx* dialog_ex = infrared->dialog_ex; + int32_t button_index; + + if(infrared->app_state.is_learning_new_remote) { + // For new remotes, use current_button_index directly + button_index = infrared->app_state.current_button_index; + if(increment) { + // Only increment if we haven't reached the last button + if(button_index + 1 < (int32_t)easy_mode_button_count) { + button_index++; + infrared->app_state.current_button_index = button_index; + } + } + } else if(infrared->remote) { + // For existing remotes, find next available button name + button_index = infrared->app_state.existing_remote_button_index; + if(increment) { + int32_t next_index; + if(infrared_scene_learn_get_next_name(infrared, button_index + 1, &next_index)) { + button_index = next_index; + infrared->app_state.existing_remote_button_index = button_index; + } + } + } else { + button_index = 0; + } + + // Ensure button_index is valid + if(button_index < 0) button_index = 0; + if(button_index >= (int32_t)easy_mode_button_count) { + button_index = (int32_t)easy_mode_button_count - 1; + } + + // Now we know button_index is valid, use it to get the name + const char* button_name = easy_mode_button_names[button_index]; + dialog_ex_set_text( + dialog_ex, "Point remote at IR port\nand press button:", 5, 10, AlignLeft, AlignCenter); + dialog_ex_set_header(dialog_ex, button_name, 78, 11, AlignLeft, AlignTop); + + // For existing remotes, check if there are any more buttons to add + bool has_more_buttons = false; + if(!infrared->app_state.is_learning_new_remote && infrared->remote) { + int32_t next_index; + has_more_buttons = + infrared_scene_learn_get_next_name(infrared, button_index + 1, &next_index); + } else { + has_more_buttons = (button_index + 1 < (int32_t)easy_mode_button_count); + } + + // Show/hide skip button based on whether there are more buttons + if(!has_more_buttons) { + dialog_ex_set_center_button_text(dialog_ex, NULL); + } else { + dialog_ex_set_center_button_text(dialog_ex, "Skip"); + } +} + void infrared_scene_learn_on_enter(void* context) { InfraredApp* infrared = context; - Popup* popup = infrared->popup; + DialogEx* dialog_ex = infrared->dialog_ex; InfraredWorker* worker = infrared->worker; + // Initialize or validate current_button_index + if(infrared->app_state.is_learning_new_remote) { + // If index is beyond our predefined names, reset it + if(infrared->app_state.current_button_index >= (int32_t)easy_mode_button_count) { + infrared->app_state.current_button_index = 0; + } + } else { + // For existing remotes, find first missing button name + int32_t next_index; + if(infrared_scene_learn_get_next_name(infrared, 0, &next_index)) { + infrared->app_state.existing_remote_button_index = next_index; + } else { + // If no missing buttons found, start at beginning + infrared->app_state.existing_remote_button_index = 0; + } + } + infrared_worker_rx_set_received_signal_callback( worker, infrared_signal_received_callback, context); infrared_worker_rx_start(worker); infrared_play_notification_message(infrared, InfraredNotificationMessageBlinkStartRead); - popup_set_icon(popup, 0, 32, &I_InfraredLearnShort_128x31); - popup_set_header(popup, NULL, 0, 0, AlignCenter, AlignCenter); - popup_set_text( - popup, "Point the remote at IR port\nand push the button", 5, 10, AlignLeft, AlignCenter); - popup_set_callback(popup, NULL); + dialog_ex_set_icon(dialog_ex, 0, 32, &I_InfraredLearnShort_128x31); + dialog_ex_set_header(dialog_ex, NULL, 0, 0, AlignCenter, AlignCenter); + + if(infrared->app_state.is_easy_mode) { + infrared_scene_learn_update_button_name(infrared, false); + dialog_ex_set_icon(dialog_ex, 0, 22, &I_InfraredLearnShort_128x31); + } else { + dialog_ex_set_text( + dialog_ex, + "Point the remote at IR port\nand push the button", + 5, + 13, + AlignLeft, + AlignCenter); + } + + dialog_ex_set_context(dialog_ex, context); + dialog_ex_set_result_callback(dialog_ex, infrared_scene_learn_dialog_result_callback); - view_dispatcher_switch_to_view(infrared->view_dispatcher, InfraredViewPopup); + view_dispatcher_switch_to_view(infrared->view_dispatcher, InfraredViewDialogEx); } bool infrared_scene_learn_on_event(void* context, SceneManagerEvent event) { @@ -30,7 +162,19 @@ bool infrared_scene_learn_on_event(void* context, SceneManagerEvent event) { scene_manager_next_scene(infrared->scene_manager, InfraredSceneLearnSuccess); dolphin_deed(DolphinDeedIrLearnSuccess); consumed = true; + } else if(event.event == DialogExResultCenter && infrared->app_state.is_easy_mode) { + // Update with increment when skipping + infrared_scene_learn_update_button_name(infrared, true); + consumed = true; + } + } else if(event.type == SceneManagerEventTypeBack) { + // Reset button indices when exiting learn mode completely + if(infrared->app_state.is_learning_new_remote) { + infrared->app_state.current_button_index = 0; + } else { + infrared->app_state.existing_remote_button_index = 0; } + consumed = false; } return consumed; @@ -38,10 +182,9 @@ bool infrared_scene_learn_on_event(void* context, SceneManagerEvent event) { void infrared_scene_learn_on_exit(void* context) { InfraredApp* infrared = context; - Popup* popup = infrared->popup; + DialogEx* dialog_ex = infrared->dialog_ex; infrared_worker_rx_set_received_signal_callback(infrared->worker, NULL, NULL); infrared_worker_rx_stop(infrared->worker); infrared_play_notification_message(infrared, InfraredNotificationMessageBlinkStop); - popup_set_icon(popup, 0, 0, NULL); - popup_set_text(popup, NULL, 0, 0, AlignCenter, AlignCenter); + dialog_ex_reset(dialog_ex); } diff --git a/applications/main/infrared/scenes/infrared_scene_learn_enter_name.c b/applications/main/infrared/scenes/infrared_scene_learn_enter_name.c index 7ffc9644ba..bd9b2182c2 100644 --- a/applications/main/infrared/scenes/infrared_scene_learn_enter_name.c +++ b/applications/main/infrared/scenes/infrared_scene_learn_enter_name.c @@ -6,7 +6,24 @@ void infrared_scene_learn_enter_name_on_enter(void* context) { TextInput* text_input = infrared->text_input; InfraredSignal* signal = infrared->current_signal; - if(infrared_signal_is_raw(signal)) { + if(infrared->app_state.is_easy_mode) { + // In easy mode, use predefined names based on button index + int32_t button_index; + if(infrared->app_state.is_learning_new_remote) { + button_index = infrared->app_state.current_button_index; + } else { + button_index = infrared->app_state.existing_remote_button_index; + } + + // Ensure button_index is valid + if(button_index < 0) button_index = 0; + if(button_index >= (int32_t)easy_mode_button_count) { + button_index = (int32_t)easy_mode_button_count - 1; + } + + // Always use predefined names in easy mode + infrared_text_store_set(infrared, 0, "%s", easy_mode_button_names[button_index]); + } else if(infrared_signal_is_raw(signal)) { const InfraredRawSignal* raw = infrared_signal_get_raw_signal(signal); infrared_text_store_set(infrared, 0, "RAW_%zu", raw->timings_size); } else { diff --git a/applications/main/infrared/scenes/infrared_scene_start.c b/applications/main/infrared/scenes/infrared_scene_start.c index 11944df19e..76c5f45be9 100644 --- a/applications/main/infrared/scenes/infrared_scene_start.c +++ b/applications/main/infrared/scenes/infrared_scene_start.c @@ -5,6 +5,7 @@ enum SubmenuIndex { SubmenuIndexLearnNewRemote, SubmenuIndexSavedRemotes, SubmenuIndexGpioSettings, + SubmenuIndexEasyLearn, SubmenuIndexLearnNewRemoteRaw, SubmenuIndexDebug }; @@ -44,6 +45,19 @@ void infrared_scene_start_on_enter(void* context) { infrared_scene_start_submenu_callback, infrared); + char easy_learn_text[24]; + snprintf( + easy_learn_text, + sizeof(easy_learn_text), + "Easy Learn [%s]", + infrared->app_state.is_easy_mode ? "X" : " "); + submenu_add_item( + submenu, + easy_learn_text, + SubmenuIndexEasyLearn, + infrared_scene_start_submenu_callback, + infrared); + submenu_add_lockable_item( submenu, "Learn New Remote RAW", @@ -70,7 +84,7 @@ void infrared_scene_start_on_enter(void* context) { const uint32_t submenu_index = scene_manager_get_scene_state(scene_manager, InfraredSceneStart); submenu_set_selected_item(submenu, submenu_index); - scene_manager_set_scene_state(scene_manager, InfraredSceneStart, SubmenuIndexUniversalRemotes); + // scene_manager_set_scene_state(scene_manager, InfraredSceneStart, SubmenuIndexUniversalRemotes); view_dispatcher_switch_to_view(infrared->view_dispatcher, InfraredViewSubmenu); } @@ -104,6 +118,17 @@ bool infrared_scene_start_on_event(void* context, SceneManagerEvent event) { scene_manager_next_scene(scene_manager, InfraredSceneRemoteList); } else if(submenu_index == SubmenuIndexGpioSettings) { scene_manager_next_scene(scene_manager, InfraredSceneGpioSettings); + } else if(submenu_index == SubmenuIndexEasyLearn) { + infrared->app_state.is_easy_mode = !infrared->app_state.is_easy_mode; + infrared_save_settings(infrared); + // Update the menu item text without scene transition + char easy_learn_text[24]; + snprintf( + easy_learn_text, + sizeof(easy_learn_text), + "Easy Learn [%s]", + infrared->app_state.is_easy_mode ? "X" : " "); + submenu_change_item_label(infrared->submenu, SubmenuIndexEasyLearn, easy_learn_text); } else if(submenu_index == SubmenuIndexDebug) { scene_manager_next_scene(scene_manager, InfraredSceneDebug); } diff --git a/furi/flipper.c b/furi/flipper.c index d04ccfb559..1b836f6573 100644 --- a/furi/flipper.c +++ b/furi/flipper.c @@ -50,7 +50,7 @@ static void flipper_print_version(const char* target, const Version* version) { #include #include #include -#include +#include #include void flipper_migrate_files() { From 7713eb88d3cbd9f98f497019138b39ee455979d4 Mon Sep 17 00:00:00 2001 From: jay candel Date: Thu, 23 Jan 2025 08:27:26 +0800 Subject: [PATCH 82/85] IR: Easy Learn [Bugfix] (#360) --nobuild * reset index count when starting new remote * fucking linter --------- Co-authored-by: Willy-JL <49810075+Willy-JL@users.noreply.github.com> --- applications/main/infrared/scenes/infrared_scene_start.c | 1 + 1 file changed, 1 insertion(+) diff --git a/applications/main/infrared/scenes/infrared_scene_start.c b/applications/main/infrared/scenes/infrared_scene_start.c index 76c5f45be9..63cd665856 100644 --- a/applications/main/infrared/scenes/infrared_scene_start.c +++ b/applications/main/infrared/scenes/infrared_scene_start.c @@ -112,6 +112,7 @@ bool infrared_scene_start_on_event(void* context, SceneManagerEvent event) { infrared_worker_rx_enable_signal_decoding( infrared->worker, submenu_index == SubmenuIndexLearnNewRemote); infrared->app_state.is_learning_new_remote = true; + infrared->app_state.current_button_index = 0; // Reset index when starting new remote scene_manager_next_scene(scene_manager, InfraredSceneLearn); } else if(submenu_index == SubmenuIndexSavedRemotes) { furi_string_set(infrared->file_path, INFRARED_APP_FOLDER); From 5cd0e72726412b56e2d34ed3096505bd19cefd70 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Thu, 23 Jan 2025 01:08:48 +0000 Subject: [PATCH 83/85] IR: Easy Learn & Learn RAW toggles in Learn screen Also cleanup some of the text shown during learning --- CHANGELOG.md | 4 +- applications/main/infrared/infrared_app.c | 1 + applications/main/infrared/infrared_app_i.h | 1 + .../infrared/scenes/infrared_scene_learn.c | 29 ++++++++++-- .../scenes/infrared_scene_learn_success.c | 4 +- .../infrared/scenes/infrared_scene_start.c | 47 +------------------ 6 files changed, 33 insertions(+), 53 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 329dc30d95..75437b4e4a 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,7 +10,9 @@ - GPIO: TEA5767 FM Radio (by @coolshrimp) - NFC: Metroflip (by @luu176) - USB: USB Game Controller (by @expected-ingot) -- Infrared: Easy Learn mode to quickly save buttons without typing (#350 by @jaylikesbunda) +- Infrared: + - Easy Learn mode to quickly save buttons without typing (#350 by @jaylikesbunda) + - Move Easy Learn and Learn RAW toggles inside Learning/Receiving screen for quick access, RAW mode doesn't require Debug anymore (by @Willy-JL) - Archive: Setting to show dynamic path in file browser statusbar (#322 by @956MB) - CLI: Add `clear` and `cls` commands, add `did you mean ...?` command suggestion (#342 by @dexvleads) - Main Menu: Add coverflow menu style (#314 by @CodyTolene) diff --git a/applications/main/infrared/infrared_app.c b/applications/main/infrared/infrared_app.c index 43f6e78172..5551591c2d 100644 --- a/applications/main/infrared/infrared_app.c +++ b/applications/main/infrared/infrared_app.c @@ -158,6 +158,7 @@ static InfraredApp* infrared_alloc(void) { app_state->is_transmitting = false; app_state->is_otg_enabled = false; app_state->is_easy_mode = false; + app_state->is_decode_enabled = true; app_state->edit_target = InfraredEditTargetNone; app_state->edit_mode = InfraredEditModeNone; app_state->current_button_index = InfraredButtonIndexNone; diff --git a/applications/main/infrared/infrared_app_i.h b/applications/main/infrared/infrared_app_i.h index b078429b3e..0d9b440a8f 100644 --- a/applications/main/infrared/infrared_app_i.h +++ b/applications/main/infrared/infrared_app_i.h @@ -90,6 +90,7 @@ typedef struct { bool is_transmitting; /**< Whether a signal is currently being transmitted. */ bool is_otg_enabled; /**< Whether OTG power (external 5V) is enabled. */ bool is_easy_mode; /**< Whether easy learning mode is enabled. */ + bool is_decode_enabled; /**< Whether signal decoding is enabled. */ InfraredEditTarget edit_target : 8; /**< Selected editing target (a remote or a button). */ InfraredEditMode edit_mode : 8; /**< Selected editing operation (rename or delete). */ int32_t current_button_index; /**< Selected button index (move destination). */ diff --git a/applications/main/infrared/scenes/infrared_scene_learn.c b/applications/main/infrared/scenes/infrared_scene_learn.c index e19624d203..8c6b557b76 100644 --- a/applications/main/infrared/scenes/infrared_scene_learn.c +++ b/applications/main/infrared/scenes/infrared_scene_learn.c @@ -82,7 +82,7 @@ static void infrared_scene_learn_update_button_name(InfraredApp* infrared, bool // Now we know button_index is valid, use it to get the name const char* button_name = easy_mode_button_names[button_index]; dialog_ex_set_text( - dialog_ex, "Point remote at IR port\nand press button:", 5, 10, AlignLeft, AlignCenter); + dialog_ex, "Point the remote at IR port\nand press button:", 5, 10, AlignLeft, AlignCenter); dialog_ex_set_header(dialog_ex, button_name, 78, 11, AlignLeft, AlignTop); // For existing remotes, check if there are any more buttons to add @@ -130,22 +130,26 @@ void infrared_scene_learn_on_enter(void* context) { infrared_worker_rx_start(worker); infrared_play_notification_message(infrared, InfraredNotificationMessageBlinkStartRead); - dialog_ex_set_icon(dialog_ex, 0, 32, &I_InfraredLearnShort_128x31); + dialog_ex_set_icon(dialog_ex, 0, 22, &I_InfraredLearnShort_128x31); dialog_ex_set_header(dialog_ex, NULL, 0, 0, AlignCenter, AlignCenter); if(infrared->app_state.is_easy_mode) { infrared_scene_learn_update_button_name(infrared, false); - dialog_ex_set_icon(dialog_ex, 0, 22, &I_InfraredLearnShort_128x31); } else { dialog_ex_set_text( dialog_ex, - "Point the remote at IR port\nand push the button", + "Point the remote at IR port\nand press the button", 5, - 13, + 10, AlignLeft, AlignCenter); } + dialog_ex_set_left_button_text( + dialog_ex, infrared->app_state.is_easy_mode ? "Manual" : "Easy"); + dialog_ex_set_right_button_text( + dialog_ex, infrared->app_state.is_decode_enabled ? "RAW" : "Decode"); + dialog_ex_set_context(dialog_ex, context); dialog_ex_set_result_callback(dialog_ex, infrared_scene_learn_dialog_result_callback); @@ -166,6 +170,21 @@ bool infrared_scene_learn_on_event(void* context, SceneManagerEvent event) { // Update with increment when skipping infrared_scene_learn_update_button_name(infrared, true); consumed = true; + } else if(event.event == DialogExResultLeft) { + // Toggle Easy Learn + infrared->app_state.is_easy_mode = !infrared->app_state.is_easy_mode; + infrared_save_settings(infrared); + scene_manager_previous_scene(infrared->scene_manager); + scene_manager_next_scene(infrared->scene_manager, InfraredSceneLearn); + consumed = true; + } else if(event.event == DialogExResultRight) { + // Toggle signal decoding + infrared->app_state.is_decode_enabled = !infrared->app_state.is_decode_enabled; + infrared_worker_rx_enable_signal_decoding( + infrared->worker, infrared->app_state.is_decode_enabled); + dialog_ex_set_right_button_text( + infrared->dialog_ex, infrared->app_state.is_decode_enabled ? "RAW" : "Decode"); + consumed = true; } } else if(event.type == SceneManagerEventTypeBack) { // Reset button indices when exiting learn mode completely diff --git a/applications/main/infrared/scenes/infrared_scene_learn_success.c b/applications/main/infrared/scenes/infrared_scene_learn_success.c index deb54bb5ef..115f259583 100644 --- a/applications/main/infrared/scenes/infrared_scene_learn_success.c +++ b/applications/main/infrared/scenes/infrared_scene_learn_success.c @@ -15,9 +15,9 @@ void infrared_scene_learn_success_on_enter(void* context) { if(infrared_signal_is_raw(signal)) { const InfraredRawSignal* raw = infrared_signal_get_raw_signal(signal); - dialog_ex_set_header(dialog_ex, "Unknown", 95, 10, AlignCenter, AlignCenter); + dialog_ex_set_header(dialog_ex, "Unknown\n(RAW)", 95, 12, AlignCenter, AlignCenter); infrared_text_store_set(infrared, 0, "%zu samples", raw->timings_size); - dialog_ex_set_text(dialog_ex, infrared->text_store[0], 75, 23, AlignLeft, AlignTop); + dialog_ex_set_text(dialog_ex, infrared->text_store[0], 75, 32, AlignLeft, AlignTop); } else { const InfraredMessage* message = infrared_signal_get_message(signal); diff --git a/applications/main/infrared/scenes/infrared_scene_start.c b/applications/main/infrared/scenes/infrared_scene_start.c index 63cd665856..6e195182e1 100644 --- a/applications/main/infrared/scenes/infrared_scene_start.c +++ b/applications/main/infrared/scenes/infrared_scene_start.c @@ -5,8 +5,6 @@ enum SubmenuIndex { SubmenuIndexLearnNewRemote, SubmenuIndexSavedRemotes, SubmenuIndexGpioSettings, - SubmenuIndexEasyLearn, - SubmenuIndexLearnNewRemoteRaw, SubmenuIndexDebug }; @@ -45,30 +43,6 @@ void infrared_scene_start_on_enter(void* context) { infrared_scene_start_submenu_callback, infrared); - char easy_learn_text[24]; - snprintf( - easy_learn_text, - sizeof(easy_learn_text), - "Easy Learn [%s]", - infrared->app_state.is_easy_mode ? "X" : " "); - submenu_add_item( - submenu, - easy_learn_text, - SubmenuIndexEasyLearn, - infrared_scene_start_submenu_callback, - infrared); - - submenu_add_lockable_item( - submenu, - "Learn New Remote RAW", - SubmenuIndexLearnNewRemoteRaw, - infrared_scene_start_submenu_callback, - infrared, - !infrared->app_state.is_debug_enabled, - "Enable\n" - "Settings >\n" - "System >\n" - "Debug"); submenu_add_lockable_item( submenu, "Debug RX", @@ -84,7 +58,7 @@ void infrared_scene_start_on_enter(void* context) { const uint32_t submenu_index = scene_manager_get_scene_state(scene_manager, InfraredSceneStart); submenu_set_selected_item(submenu, submenu_index); - // scene_manager_set_scene_state(scene_manager, InfraredSceneStart, SubmenuIndexUniversalRemotes); + scene_manager_set_scene_state(scene_manager, InfraredSceneStart, SubmenuIndexUniversalRemotes); view_dispatcher_switch_to_view(infrared->view_dispatcher, InfraredViewSubmenu); } @@ -104,13 +78,7 @@ bool infrared_scene_start_on_event(void* context, SceneManagerEvent event) { // last selected file, feels more intuitive furi_string_set(infrared->file_path, INFRARED_APP_FOLDER); scene_manager_next_scene(scene_manager, InfraredSceneUniversal); - } else if( - submenu_index == SubmenuIndexLearnNewRemote || - submenu_index == SubmenuIndexLearnNewRemoteRaw) { - // enable automatic signal decoding if "Learn New Remote" - // disable automatic signal decoding if "Learn New Remote (RAW)" - infrared_worker_rx_enable_signal_decoding( - infrared->worker, submenu_index == SubmenuIndexLearnNewRemote); + } else if(submenu_index == SubmenuIndexLearnNewRemote) { infrared->app_state.is_learning_new_remote = true; infrared->app_state.current_button_index = 0; // Reset index when starting new remote scene_manager_next_scene(scene_manager, InfraredSceneLearn); @@ -119,17 +87,6 @@ bool infrared_scene_start_on_event(void* context, SceneManagerEvent event) { scene_manager_next_scene(scene_manager, InfraredSceneRemoteList); } else if(submenu_index == SubmenuIndexGpioSettings) { scene_manager_next_scene(scene_manager, InfraredSceneGpioSettings); - } else if(submenu_index == SubmenuIndexEasyLearn) { - infrared->app_state.is_easy_mode = !infrared->app_state.is_easy_mode; - infrared_save_settings(infrared); - // Update the menu item text without scene transition - char easy_learn_text[24]; - snprintf( - easy_learn_text, - sizeof(easy_learn_text), - "Easy Learn [%s]", - infrared->app_state.is_easy_mode ? "X" : " "); - submenu_change_item_label(infrared->submenu, SubmenuIndexEasyLearn, easy_learn_text); } else if(submenu_index == SubmenuIndexDebug) { scene_manager_next_scene(scene_manager, InfraredSceneDebug); } From 29ad9a89c72b4ac386159fd497db481cf20d0d1e Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Thu, 23 Jan 2025 01:14:35 +0000 Subject: [PATCH 84/85] Sync apps - No changes --- applications/external | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/applications/external b/applications/external index 337177af64..d911ef1de0 160000 --- a/applications/external +++ b/applications/external @@ -1 +1 @@ -Subproject commit 337177af6444a1d55c2e9a7002c5b5c08c8eee55 +Subproject commit d911ef1de088ef3b83cb513f01cc8c9c8f486c07 From 6c12582f2d1dc7fc08a7cb5f5dc9de2609191983 Mon Sep 17 00:00:00 2001 From: Willy-JL <49810075+Willy-JL@users.noreply.github.com> Date: Thu, 23 Jan 2025 20:48:51 +0000 Subject: [PATCH 85/85] Really GitHub? Now? --nobuild --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index b5bc7d6111..34ec658025 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -87,7 +87,7 @@ jobs: git diff --exit-code - name: "Upload artifacts to GitHub" - uses: actions/upload-artifact@v3 + uses: actions/upload-artifact@v4 with: path: | dist/${{ env.TARGET }}-*/flipper-z-${{ env.TARGET }}-update-*