From 8a96e66e38ecd1e3462cf4666fa838129bb14e89 Mon Sep 17 00:00:00 2001 From: Ezra Maccabee Date: Wed, 18 Mar 2026 12:33:53 +0300 Subject: [PATCH] # 6 MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - проверена работа. bsp_uart_host - первично - написан скрипт загрузки elf (pyocd) с помощью NXP MCU Link на таргет (выполнение в ram) - начало разработки окружения для проведения HIL-тестов (pytest + pyocd) --- .clang-tidy | 2 +- CMakePresets.json | 19 + TODO-HIL.md | 149 -- bsp/CMakeLists.txt | 35 +- bsp/generated/board.h | 2 +- bsp/led/include/bsp/led.h | 2 +- bsp/led/src/led.c | 4 - bsp/uart_host/CMakeLists.txt | 1 + bsp/uart_host/src/uart_host.c | 5 +- docs/MCULINKINSERT.pdf | Bin 0 -> 144527 bytes firmware/test/CMakeLists.txt | 21 +- firmware/test/main.c | 15 +- pyocd.yaml | 8 + tests/target/CMakeLists.txt | 48 +- tests/target/host_uart/CMakeLists.txt | 29 + tests/target/host_uart/main.c | 120 ++ tools/hil/.python-version | 1 + .../hil/README.md | 0 tools/hil/conftest.py | 127 ++ tools/hil/load_and_run.py | 23 + tools/hil/pyocd_utils.py | 129 ++ tools/hil/pyproject.toml | 26 + tools/hil/targets.txt | 207 +++ tools/hil/test_uart.py | 69 + tools/hil/uv.lock | 653 +++++++++ tools/host/uv.lock | 1279 ----------------- 26 files changed, 1454 insertions(+), 1520 deletions(-) delete mode 100644 TODO-HIL.md create mode 100644 docs/MCULINKINSERT.pdf create mode 100644 pyocd.yaml create mode 100644 tests/target/host_uart/CMakeLists.txt create mode 100644 tests/target/host_uart/main.c create mode 100644 tools/hil/.python-version rename tests/target/test_target_simple.c => tools/hil/README.md (100%) create mode 100644 tools/hil/conftest.py create mode 100644 tools/hil/load_and_run.py create mode 100644 tools/hil/pyocd_utils.py create mode 100644 tools/hil/pyproject.toml create mode 100644 tools/hil/targets.txt create mode 100644 tools/hil/test_uart.py create mode 100644 tools/hil/uv.lock delete mode 100644 tools/host/uv.lock diff --git a/.clang-tidy b/.clang-tidy index ba2dbaf..70ccfda 100644 --- a/.clang-tidy +++ b/.clang-tidy @@ -19,7 +19,7 @@ Checks: > readability-named-parameter, readability-unified-declaration WarningsAsErrors: 'bugprone-*,clang-analyzer-*' -HeaderFilterRegex: "^((?!sdk/|lib/|bsp/board/).)*\\.h$" +HeaderFilterRegex: "^((?!sdk/|lib/|bsp/board/|tests/host/).)*\\.h$" CheckOptions: # ===== ТИПЫ ===== - key: readability-identifier-naming.TypedefCase diff --git a/CMakePresets.json b/CMakePresets.json index b44272c..b317d20 100644 --- a/CMakePresets.json +++ b/CMakePresets.json @@ -62,6 +62,17 @@ "BUILD_TESTS_HOST": "ON", "BUILD_TESTS_TARGET": "OFF" } + }, + { + "name": "target-debug", + "displayName": "🎯 Target Debug Tests (HIL)", + "inherits": "default", + "cacheVariables": { + "CMAKE_BUILD_TYPE": "Debug", + "SEGGER_RTT_ENABLED": "OFF", + "BUILD_TESTS_TARGET": "ON", + "BUILD_TESTS_HOST": "OFF" + } } ], "buildPresets": [ @@ -144,6 +155,14 @@ "test_timeout_pattern", "uart_host_mock_example" ] + }, + { + "name": "target-debug-build", + "displayName": "Target Tests — Debug (HIL)", + "configurePreset": "target-debug", + "targets": [ + "test_host_uart" + ] } ], "testPresets": [ diff --git a/TODO-HIL.md b/TODO-HIL.md deleted file mode 100644 index 3108c9b..0000000 --- a/TODO-HIL.md +++ /dev/null @@ -1,149 +0,0 @@ -# HIL‑архитектура и окружение: итоговые решения - -## 1. Общий контекст репозитория - -- Монорепозиторий для MIMXRT1052 уже содержит: - - три firmware‑проекта: `firmware/test`, `firmware/bootloader`, `firmware/tft_app`; - - BSP, vendored SDK, Unity + fff, SEGGER RTT; - - devcontainer, CMakePresets, just‑модули, двухуровневое тестирование (host + target). -- Цель: добавить HIL‑контур так, чтобы он органично встроился в существующую архитектуру и CI/CD, без резкого усложнения. - ---- - -## 2. Выбор инструментов для HIL‑тестов - -### 2.1. Стек тестирования - -Принята связка: - -- **Host**: Python + pytest - - оркестрация тестов и стенда; - - фикстуры для управления питанием, прошивкой, реле, CAN/UART; - - интеграция с CI, маркировка тестов, отчёты. - -- **Target (DUT)**: Unity - - тесты на C, запускаемые на RT1052; - - вывод результатов по UART (или через RTT при необходимости); - - тестовая прошивка может быть отдельным firmware‑проектом, как уже сделано с `firmware/test`. - -- **Промежуточный HIL‑контроллер**: M5Stamp PLC - - принимает команды от хоста; - - управляет CAN, UART, реле, опто‑входами и прочей обвязкой DUT; - - выполняет только примитивные операции (send frame, toggle relay, read input, reset DUT), вся логика сценариев — в pytest. - -### 2.2. Почему так - -- Unity уже используется в проекте — нет смысла вводить второй C‑фреймворк тестирования. -- Python + pytest хорошо подходит для оркестрации внешних устройств (HIL), даёт удобные фикстуры, параметризацию и отчётность. -- Разделение обязанностей: - - DUT отвечает за внутреннюю логику и инварианты; - - HIL‑контроллер — за физические воздействия/измерения; - - pytest — за сценарии и проверки. - ---- - -## 3. Выбор платформы и стека для HIL‑контроллера - -### 3.1. Аппаратная платформа - -- Выбран **M5Stamp PLC** на базе ESP32‑S3: - - CAN‑шина, RS485, реле, опто‑входы — всё, что нужно для стенда; - - промышленная обвязка (галваническая развязка на входах, реле на выходах). - -### 3.2. Варианты ПО для M5Stamp - -Рассматривались: - -1. **MicroPython** - - Плюсы: быстрый старт, код на Python, удобно писать CLI. - - Минусы: - - нет готового BSP именно под PLC‑вариант; - - нужно вручную разбираться с разводкой, CAN/RS485/реле; - - меньше детерминизма по таймингам. - -2. **UIFlow** - - Плюсы: визуальное программирование, быстрые демки. - - Минусы: - - ориентирован на учебные/IoT‑сценарии; - - завязан на Web‑IDE/облако; - - неудобен для строгого, текстового, версионируемого CLI под pytest/CI. - -3. **Arduino‑фреймворк** (через Arduino core для ESP32) - - Плюсы: - - официальная поддержка M5‑плат, библиотек и BSP; - - примеры по работе с реле, RS485, CAN; - - легко поднять простой текстовый CLI по Serial; - - хорошо работает в headless‑режиме через `arduino-cli`. - - Минусы: - - код на C++ (в отличие от MicroPython); - - отдельный маленький проект. - -### 3.3. Принятое решение - -- Для M5Stamp PLC используется **Arduino‑фреймворк** + `arduino-cli`. -- MicroPython и UIFlow откладываются: - - MicroPython — как возможный эксперимент позже; - - UIFlow — не подходит как основа HIL‑контроллера. - ---- - -## 4. Архитектура HIL‑контроллера (M5Stamp PLC) - -### 4.1. Роль M5Stamp - -- Максимально «тупой» исполнитель команд от хоста: - - НЕ содержит сценарной логики тестов; - - предоставляет набор атомарных операций: - - управление реле; - - отправка/приём кадра по CAN/UART; - - переключение питания/Reset DUT; - - чтение опто‑входов/состояния линий. - -- Все сложные сценарии, тайминги и проверки живут в pytest на хосте. - -### 4.2. Протокол обмена host ↔ M5Stamp - -- Простой текстовый CLI по UART/USB: - - команды в виде строк, например: - - `RELAY SET 1 ON` - - `RELAY SET 1 OFF` - - `GPIO READ IN3` - - `CAN SEND 1 123#11223344` - - `UART DUT SEND "AT+PING\r\n"` - - `DUT RESET` - - ответы в понятном формате: - - `OK` - - `ERR ` - - `VAL 0|1` - - `EVENT ...` (если понадобится). - -- Преимущества: - - легко писать и отлаживать; - - удобно тестировать руками (через serial‑терминал); - - протокол можно описать и версионировать как часть репозитория. - ---- - -## 5. Интеграция с существующим репозиторием - -### 5.1. Структура репозитория - -HIL‑контроллер хранится в том же монорепо: - -```text -/ -├── firmware/ -│ ├── test/ # тестовая прошивка DUT -│ ├── bootloader/ -│ ├── tft_app/ -│ └── hil_controller/ # Arduino-проект для M5Stamp PLC (HIL) -├── tools/ -│ └── host/ -│ ├── hil/ # Python-код, pytest HIL тесты, утилиты -│ ├── flash_usb.py -│ └── ... -├── just/ -│ ├── host.just # добавятся host::hil-* цели -│ ├── build.just -│ └── ci.just -└── ... diff --git a/bsp/CMakeLists.txt b/bsp/CMakeLists.txt index 13411ab..0b5c10d 100644 --- a/bsp/CMakeLists.txt +++ b/bsp/CMakeLists.txt @@ -6,10 +6,7 @@ endif() # bsp_board — стартап, сгенерированные файлы Config Tools, инициализация платы # ----------------------------------------------------------------------------- -add_library( - bsp_board STATIC - generated/board.c generated/pin_mux.c generated/clock_config.c - generated/startup/startup_MIMXRT1052.S) +add_library(bsp_board STATIC generated/board.c generated/pin_mux.c) add_subdirectory(common) add_subdirectory(led) @@ -23,28 +20,18 @@ target_compile_options(bsp_board PRIVATE -w) target_include_directories(bsp_board SYSTEM PUBLIC generated) # Дефайны PUBLIC — транзитивно подтянутся во все firmware таргеты -target_compile_definitions( - bsp_board PUBLIC CPU_MIMXRT1052CVJ5B SKIP_SYSCLK_INIT XIP_EXTERNAL_FLASH=1 - XIP_BOOT_HEADER_ENABLE=1 XIP_BOOT_HEADER_DCD_ENABLE=1) +target_compile_definitions(bsp_board PUBLIC CPU_MIMXRT1052CVJ5B) # sdk_device PUBLIC — транзитивно подтянется во все firmware таргеты target_link_libraries(bsp_board PUBLIC sdk_device sdk_clock sdk_common sdk_lpuart) +# ------------------------------------------------------------------ +# Boot-стратегии — INTERFACE +# ------------------------------------------------------------------ +add_library(bsp_boot_xip INTERFACE) +target_compile_definitions( + bsp_boot_xip INTERFACE XIP_EXTERNAL_FLASH=1 XIP_BOOT_HEADER_ENABLE=1 + XIP_BOOT_HEADER_DCD_ENABLE=1 SKIP_SYSCLK_INIT) -# Выбор boot стратегии (определяется в CMakePresets в зависимости от собираемого -# target) - -# TODO: длякаждого приложения свои дефайны # Сценарий A: XIP — код исполняется -# прямо из Flash add_library(bsp_boot_xip INTERFACE) target_compile_definitions( -# bsp_boot_xip INTERFACE XIP_EXTERNAL_FLASH=1 XIP_BOOT_HEADER_ENABLE=1 -# XIP_BOOT_HEADER_DCD_ENABLE=1) - -# # Сценарий B: копирование в ITCM (для bootloader или критичного кода) -# add_library(bsp_boot_itcm INTERFACE) target_compile_definitions( bsp_boot_itcm -# INTERFACE XIP_BOOT_HEADER_ENABLE=1 XIP_BOOT_HEADER_DCD_ENABLE=1 # -# XIP_EXTERNAL_FLASH намеренно отсутствует ) - -# # Сценарий C: копирование в SDRAM (для app с графикой) -# add_library(bsp_boot_sdram INTERFACE) target_compile_definitions( -# bsp_boot_sdram INTERFACE XIP_BOOT_HEADER_ENABLE=1 -# XIP_BOOT_HEADER_DCD_ENABLE=1) +add_library(bsp_boot_ram INTERFACE) +target_compile_definitions(bsp_boot_ram INTERFACE SKIP_SYSCLK_INIT) diff --git a/bsp/generated/board.h b/bsp/generated/board.h index 2ff1e4a..e3a8f45 100644 --- a/bsp/generated/board.h +++ b/bsp/generated/board.h @@ -4,7 +4,7 @@ /*! @brief The board name */ #define BOARD_NAME "TFT4.3_UB_BOARD" -/*! @brief The board name */ +/*! @brief Инициализация пинов и клоков на плате (согласно ConfigTools) */ void board_hw_init(void); #endif /* _BOARD_H_ */ \ No newline at end of file diff --git a/bsp/led/include/bsp/led.h b/bsp/led/include/bsp/led.h index 73a3a39..cff3038 100644 --- a/bsp/led/include/bsp/led.h +++ b/bsp/led/include/bsp/led.h @@ -26,7 +26,7 @@ typedef enum /** * @brief Инициализация обоих светодиодов. - * Вызвать один раз после board_init_hw(). + * Вызвать один раз после board_hw_init(). * После вызова оба LED выключены. */ void bsp_led_init(void); diff --git a/bsp/led/src/led.c b/bsp/led/src/led.c index 9494f4e..186091c 100644 --- a/bsp/led/src/led.c +++ b/bsp/led/src/led.c @@ -44,8 +44,6 @@ static led_desc_t s_leds[] = { #define LED_COUNT (sizeof(s_leds) / sizeof(s_leds[0])) -/* ── Приватные хелперы ───────────────────────────────────────────────── */ - /** Перевести логическое состояние в физический уровень GPIO (active LOW). */ static inline uint8_t bsp_led_to_gpio_level(bool is_enabled) { @@ -57,8 +55,6 @@ static inline void bsp_led_apply(led_desc_t *p_led) GPIO_PinWrite(p_led->gpio, p_led->pin, bsp_led_to_gpio_level(p_led->state)); } -/* ── Публичный API ───────────────────────────────────────────────────── */ - void bsp_led_init(void) { gpio_pin_config_t cfg = { diff --git a/bsp/uart_host/CMakeLists.txt b/bsp/uart_host/CMakeLists.txt index 2a72c45..e59bb1a 100644 --- a/bsp/uart_host/CMakeLists.txt +++ b/bsp/uart_host/CMakeLists.txt @@ -1,6 +1,7 @@ if(BUILD_TESTS_HOST) set(UART_HOST_SOURCES mocks/uart_host_mock.c) else() + set(UART_HOST_SOURCES src/uart_host.c) endif() diff --git a/bsp/uart_host/src/uart_host.c b/bsp/uart_host/src/uart_host.c index d10876f..5cc72f2 100644 --- a/bsp/uart_host/src/uart_host.c +++ b/bsp/uart_host/src/uart_host.c @@ -36,10 +36,11 @@ #endif /* Частота источника тактирования LPUART1. - * BOARD_BootClockRUN() настраивает OSC → 24 MHz на LPUART. + * BOARD_BootClockRUN() -> 80000000UL настраивает OSC → 24 MHz на LPUART. * Скорректируй если у вас другой clock source. */ #ifndef BSP_UART_HOST_SRC_CLOCK_HZ -#define BSP_UART_HOST_SRC_CLOCK_HZ (24000000U) +//TODO: брать из generated/clock_config.h! +#define BSP_UART_HOST_SRC_CLOCK_HZ (80000000UL) #endif /* Приоритет прерывания LPUART1 (0 = наивысший на CM7). */ diff --git a/docs/MCULINKINSERT.pdf b/docs/MCULINKINSERT.pdf new file mode 100644 index 0000000000000000000000000000000000000000..31aab7ee5c459f2ed36b43253b7e9ff2722ede66 GIT binary patch literal 144527 zcmeFZbwE_z8aGOVlr%_pNDMV}cQ?|_kVDPTrF3_fB1lVzw9+XO0@B?ef`owR9n`nZ zdC&RYd%yeV*|3K-Ypv(^VpTab$rphnHj4bbs%1p(A89kkt@ z#KfTP5Riov7P{SXyWs+4K>+WTP>d0nhAe4p08D#0FxFQ;WNj%tG}`+0jY30Z99tQ^ zApX1AV?it}T0%w7x;Fe-TmT#?)~b6US!_Hg-L@6!G_qpM9oLn;u3+3C>0osCiDOch zoh#7bjCsVV*lEpmgPTIc(HE{entZx4-hVh62fCP=HN+yjlln-?e^f=YW+m~#*Pgh6 zICfX7dOKim1~&gwty^J6gA%4E?x8cq%5U zHxLo=u3T2M_X#_zasE-)iM^*m9C4%Xh1{)B-inTuhj-%M71 zuTX$CyIA4&i$}Iz^@gI~Tm5}nU#2&b>P&)#QlizLEwhTIX|#XiIGI%2gbExrlqM7o zby;&6ic-aK01kXaAH0u&7EW*N7U0h5D3EfXoLgt5G3rH3AL@#>wwl_|BQO1Tzp`IXT0sWX)COup8#R?_#p%+jq#HKj$8QLzC6Qet5<>TP7p7|-xiaZ^oM);*Nxrh1z`)pFfoAbGG6P5rX2 z{<2YXOK49x8<1}7uYVoxenR{5bE`wSomu(Rg1WMUlt+V5PUo{&>N+`t@^&qJBnpmd z;+-+1>om4wSoC)p&NGheJ<<~0`D(hU8dD`g6|k*}&9T6ypC|Z*dLQF|dtQLGDuMP@4t#%~~|g{;Zovo4`e zFN+7kYg@y3GcStERKJBhCSQ>LX8F|YOeC16O+*TU8lY_!Yi}ArCibmA(7vN#NxXF% zHQWU#&JN0&>DSB=-QF>|D5i{ecDY6&`N;pq4cPn+LArAZp^^0>$NcOvC;#mAREQV2 z_R9>B(+bgsm^S8uY7)|tELu7)-~Idf_frb%*F`MuMfADaNy+s!j@)&6(o-_2mWZS= z5YtqS!z9y-*BOb``}-qH33zpb$28V~02=M@_o-iatl&+$fU(DI`RPWEVtH4Q=Pc=8 z1`JX?n6;?<6nDIvsN6hN({-|`^{Q3LHO1f92?LL@DM$NZh6bM#8d~_2-1u}_$8*z! zIzwXFjC!G$EjESA{f(3MEYgY29ca5rakwrWgccr^-GqWgr+hUse#!^ZpKNMSG1 z73DBuZu3Kl&(SJP%p-NWPb4F9gEUiJ+3XA%{lhS_q@Oy3^m9ah!gdOg{(@4G#=0zM zol}($J_|vrOZ^o8oI$F6JeDC9lJ;#cLS&xC#bfs!ZMH`Zw1y(6R`F8B*@>nm7hp`+ zP1NZ%p)5SZGd@t@Vx>hE6Ns>>f0&XU(88M#W^nn=4TIA;zJ&t+oH(yZ!aa16!|>Md zrN_dP;~we&uE_j(;JUB=SVvE0&Eo||Yc&g=>!{5j!gpjjJ_!{-k0Cnk^uf($DMPZ* z?#+z8YorWIg#DgxhTozvGrrK*4c^d{2+t*P7~)f*UrPu zC&(1R)Mu+NrD>s`=-H#BgOlm$BT3*RrMEyhnP4WAB*tO$9Zq8j2}VSrbo$IG)lLgp z6s$-TT<{xOl!?6C6N5qg$zGu;6<#K$^knrUB)%ty&69~DgAz5^ScznI_h?f{c(n%n zR!EAJ15nwLOKQ!*l)jN`uGkQ{aP!a^!E~lq4HL}T`dXkhoGvZE*)YZ)w`q-$#4;u-ygc7i_%0iXti6}(putfzU?Ub`> z0*!-*wt_v@F5iIVk&Kj0URJ$a2-r?L?u|ZC8Np3{;Jd*cG^3nviaYsWWj}8V7d4!8 z*ji|B?R)+eUuBV(3VVP9^QqYGh}V<7E53%?L&Tfd8pncO6`c5!WzkP6w~ukisn+&- zgub+0-?m-vUA%I+HFTdX3UD52#k@5&Xxnu5n?363KQ;9hD0Z?NxtLD6a@%{DKA**t zceBkju8806qCp#VOdEdmWZ)s?DP7?=fZPpELt$!CcgV4!AaP9Pr}Zr#`fWYd%>b%4 zed=?5(P8X&b&aap#n4cM72XD4CN@v#M>}#(>3owuG&NwZ$4bvcPw7VNgtA7 zC9pW%&!Jnim1cv+R(rnTtlCUp`N)XXc|!C2FvQQ9m~2bui6I?vkl9bEP%Bi-mDDhH2>lZEz(H&)QgO7f?nI63EQ-BQ+<=M?zpxcA&A zXS}t0+oy5DU12`lJrqe6WbD+RLvL>aX+x$LUvA$-7o)$nPx5!{9+vm=EW9uv8KKBK zhBDRCExdYZU&vuPi>Wj`B_1Qc&c7k@idE@moE+J)xN}e+JWrGb*+Wp;(&Q$8Dyz_s zlZ~UwUxm)`j=P?DB-Mng(wT=LP~O7uD62KgT?Agxf14{DzAFIbxTU2f$Hmk-A8hZhQYP|xoilG07jB4fvREft&`nx#&piq}#!b;ho*9gf zD2PdD_eiCpBZVzW9+?G^4J7hDqH2np!ghY&Ma`6I%GY4!LpOrIt?+2ANlbgK6Jx%R4 zz@zsLvaS>=u5EgPY*6f>a?{-9nAe$4D25xQw*=3lKIXRf=;K&8(m>7A2iz_AS}W{Y zHY30_eT*O{?&EXG+H@5G&<$w#lc3l>?(P0VCis^Fg;~XFfl2Y?D`OGo{=6-|@1MRC zeZ+J=ZC9JSA}U0pCO(}oy>|rWt8(!s&Ak+V<0E)kk&zX@w*bCulV83vwUB~_gWI05 za?%rZJynp{@nag?Gp~K@Z+w=Ja3h~6?(NzBJq0Pf`tj=ZT0-HgYHTm6=5%q_RfkK8 zX0fx!c7u=M6cbiX%y_@iy@Au@R?Egh2RU2+nrg#Rchh!mF5Z7Mf&Xp(&d0+Co4)h> zr`fxI>RaapPRs$bK6TE1#R*0UTxugxwm0K&j!?S@3cIYPu;KKI1n}Hc0ulafiOFH& z*Y66^mbor>6I&6oD zTv}s4Xkw~s|0H%IWR|kDV*HgvfbVoa#Ils4JijH6(II7$w7e%`%Y6!E*PTifb5qK( zaG*1pPat5ZCo4A86pJS1eC?T__H`&~1fj?7a{kOBvHzvb;U|qZDY5%SlOnw*nAPj6 zK@Uz%LvYI&KH**Em>LAOJ)spE5qFl5L$aPxeI!<_Ub$dwYV~590IP>=#v=l zV>7F!zA8W2*XEN=<3kBL4w!_BQ}`09I@onkh8*Kk;BUMmQe`LPPZI#jXIf*?i_wc?n-{d1rAp7vb`xo2;0vF)q4Y-yD09A`$*ulq zcB_P9Rc3FhM?~XkJqMsP&^PGVSp@MaA(6bG zH)Lo?mqf}`9*%~~ogn4wcBYU;YSmodj8YuMX0u_2?94fOX|eGvU9QO~q&Yx+9o}-8d>5uR>H#TlLvz%t`^WVF)Xq<2NK}^Sp`o6rx9zhk+w(yS3LRj$1 z=d|jvu_zp8%lOSyH1_tMxhdsn&aICZ=MnbY8nvAZK{#h2>ZO1O*F)RE% zh9vswpM1$ptwe6y$pg(QQNQK&mN5iAd3ED`JNgZgxRjXq$w|V8<(R&uBgiQcnb^ye zU_?}wj*8V5nfVJ=F?~Uf<@1pRmx!&)*Q1>|DsH_+U2~ge6*&Vn{zoVJ|4H%FVd4!1>S)F?L#9*@8KH2L)Q5_B~gimTc5ytRR_zdb*sWHkLQaQ2#g zyz6UY1IYE_(}8VlNv(H4OREv)!Hw)|MdtI{o9}AXkN1z${kn%=oJiNG7QXiP_L^Jy z%5~(zb-n#ovP)YP<(UMh~w(Vs7v zC(u@%dB6=Ftf%=L{*sm8K*heSIT#&TcV9_Ug}UvafZT*U2buxTaRAMlpZLhw%67n= zHlo6T-!i&UPxP$u%ga7nb}>mYx4|5|Q-&8%-_Z)?XKhbCUp)b)s${EvgL>W6EI;Iw zeKXEut`rwtxZfCDA|uyU5m_wTd(-;DzG7_5}*R#U-R zVE&Lol8k4X6w89%MXS9k>QRwz-74SaH#~6I>^#<(z{lt2BdIi0xyEFi%;SHq#bBe+ z7@W2FK!@2~R6LQDP%|RKIz_1?8y%n@Vk_+%@KK|Y!meMlL&tE3Ol!t!S?|PZ>k}8q z(1YWn;}lpcHqO1U*9d?^tj?$({LT?*Sn=`%;um&+){^T?`37>%hsP5uHy`@m=>;>&sLA<&`T8K*HwCxMzjhOg|J`$sw93{{cK3O=%O&?!t2&Dy5Az zXL1o2Yr|)CbWI|HnpwCCX^Fh+r({=8m2VE^UNSOn*Yg>U6oX~UAHOM(uOCOVK3|`> z^g7LU@?!^eH0`hr0A(@86X4YRa%k&JF+Y~Q_x;9F_;5D2&hx~SR{yj=`}Vr;#aHU3!TT9v3FNom zQiCO&Qf@!huRRJ=e;6NFE~Mf1DXF$<-nF~PgtK}XIUQKXVwB{7nS3mww39ed-N-a_ z4bv{1Pr0%tiSH{1R_*8J?l0#O$=@Zmh3CG8=g+mN#j|cbH%##>P*SHQsGuu5WG(%~ zIT70G>7v`5F0a+1r?DoA_q6m&LKX$Ga5_tSvSMNO;`O`Q?{Y3_E*iJ&Z{WI8o$CK~ za2NOogZuBZ9xh&i|2D}`8I{Bc<|KeyeO;IH(cI64%ZWycHVT7@B7Aln zLcja%2)JRZFS11`gU$3qDa+=CSzm8+q?qz?=vhF?WFb%f2O zm*<8efE)=y&~lVhOolhcrS@X5 ziQdU7=f&TuEcpLMWnR9!$;^M8>9uQ_xa4pWoU5N0OkmPqLv4&j?7B56ue^zQ>UxPUuGEKmzU6*eEYU+daJOf1I2HT?GpjOr-+xXiT z#rPKtq6W#~%*M05Oz__*Sro&(WvdiIOKE|$RBqC6nzBd+h5ZJIB5n@%y`qHTF^L}Y zhehFGa%ij*CE|F+KaOOTntkGLP;=kPNU_k%pd|xw>u{p9V}H2karuX$+f2qwhZ=8H ziQB=1jlHuJhr`*Gof5x%mMI z&nWG4puOv%$d<>OZV}pB-I01Frtd-+Oa%!!6I8nrZ(xX2<3K|w9Nx0gSKX38}sCyB}_@C zpXOby`vFQ8VmHiS;ZoT)_wsMTg^T--X!*4*#S7%&1ZaC$y5DU|>8q;zoad^7+%2pv z+%5jtpAr%GcD1l_1i4dNf^6-bMQM-QUei+BTZ_`_0aZCwU8O;G_6oibkhZUyj+L*Y zm7q1PxEQ*Kw~)7!s}l^3+S>{23>ESgrL}-PeuIQy>AP$IE%lEo?vA3gl6M8v`l=e# z(k>7XHIRdk-HMZopIVTMgA4Y!!OzP^&CSWp3E<=ba01!6IfZz+gm^fqe_ga<=&+Os z#M(wkOGfS&JJ>f-T03`lS0Mnv%gc+yi-*GnVhi9Bgw60dxdGhV?64Z_P#~9%De{3^qfuJrP5G#{ zFw#GOf>r-pAZx4N1#h$ZuoG4dmgq{7s2JQU4pV7Hsv;{;okwgDs#? zF;|F-i;WO0(0-%+m-2t3SFne=yFh$?^fkYC0Y5q&ZIIhvbMK<{uGawD|L8niEg(?P zU7Hl8{jE{{Ik5i#`_Z0L$+@S%y+3lUJe+HJj%U?=IU6cP|SFNYWM-3IFGy{fYcn zqW=tTWoO}R3$hji{HFA88ULBY%MRrH-#UYz0{p1;uOK3TpI-W__kQO7)v3P)$-f7| zU6%rjZ5a^6-V=s;n7O;NFg3nUWhL@Au#^TOCujo&E-d<_@n4gXs{9? z4Ty`ihZP9&EBayQgQ!*PEg=>VpC7%p2;eW3{)Jcv0%HUVaXAYx6!f#|Z&|-;{tUoB zO+kLh`!g3d!GX=K0KZSJ{-nz9-NFC=i9b~M{~!Bz#Q!n*-4y>M@jr9@6D$2*=YQt< z-4y>M@jr9@6D$2*=YQt<-4y>M@jr9@6D$2*=f9Z?{g34t*!)P8)(f`y@^|Y$z&|Y) zN?Ji&80%*gitlV`VAdr@ei#zP_^N-vgD-+VN zV#XaBGRdF05aNHn{lyw1V|Fr>=i3 zY5}?V|5&+Fh%!!n8(k4RUm~yCaB>b24Tp+n7BrZwa3s{9EtqBx zS-YLA1)6k&#B=4eXZdb$0j3#O&d>OkyfNP~-tc)@e2l0MxNZ~`SvYjfDHdPD3-8}WC(kR8vkxt=!;emhy05kOphIdaQTb>%hi?uG!IHHI&dPIe_~qc!Il8Hm;DkiLD#jH;=fD5)!#Sfq zlpGKF)RO%4rvGdBs2WlpnlP?A?V-$gRL!L~XQP!k_N~CR@E76#aF)`p56)19ZvO6#}*E9FG_f!uw z%x}0I&bH_K27J%wOuSglT+bW9!Xu}r8{Wn0QrXHX*5aY>s{47>_^P^{zoB!&_2r>$ z{av%*`|qa$enk}zFXvyPD*3H*2q)%~W1nc)DPrWJW^p_zLwi=Y4+;GjaJ*a;lW3ax zsLO$TPlfE0-k5C)T;nl49M;~O*OYg8&QBQMYM+NCaCT{~VRkYj)Tq|r^!AHz&iCSq zj_A_nY}m24Nnpn?H${gwgrw&Mv3e71w@0?R%hGO16(APlP*%AA@s{6nSB~O9WR{3* zez)ZU;1MB|J@Tli$X{5EwfxHHgv;mskce4K>>fLICm)G}mvmYmFC@>zZWBH4HbY%v zxGL_dJY*Qplzf07QoWmLyZ%$w6|D-H&7Q9fdT*3#cRTJfXGu2;4;tdB=yhL4#j|>8g>HZL zzJ|iC3P;1UxQ_f`D^lc5Cekn|$8VKPWJ!5#7i}jG)v+4{<5_U1!V*TAER>Q<)Pq=X zjzhgh{nkXGEXLf*W2w;MWS*_u9947lhqDK72qN*+ZzJJ;^^!xmj zl!#Jsm*BGW)faDhXLpH*-`-clA;Nt+FKz!jAMyXGQA| zN=f{HhK8Jyj*^as?e2pEwnE84BPIpA#AN<@!4u%&5fcy)6Od9-Q&3P)Gjh<;(J}Hc zv9Pc(@rd#8!Y&>$;U6?VKmSTDBZKgN3-Emj4hfFs`x`i1H26V;C`33~ICxxm1YCsg zz3>Haa0rO-@bGYm@OLWTUC4+?C&6ym_aBO)Lo zprG8t!~_CiW$<^UxX5@kT#_jGw3-%f1l&A9NzVz1=%jR#YbPe@8F;lVAt5PUJyUDa zx>oMNsRe~E>NZa9(1=MMkTNncvpfXy@e2qF$;isdD<~>yJ<`)RFoZ4i*xK1UKs`LY zynTE_!@?sXyFW!mr=@3PW@Q%@mz0*3*Ecjay=rc0?d|Iy7#tdYKRq-1VQzkXb8CBN zcW?jn^V#{u<(I2#TsQ=nt|$m7Xc50uf|-E^5f7hBQd7%k|?(3IVsJ+w(iA z2#N0GqN8W{AsP=XMDK)?lKv&0wvO%(0j+*X2z%}8r;NcNKctL`PEJYvDJD$QpOV)7 zCTe%jFJUJpr+&%1w!ZO8;*;M+{yqzB+oimk@7IiZyl%xZfc zdO`+(hVuZ0OJ^ppnRN2BnT14`@mhd9R3iQie8{`$HQR){rVSli zS}7ABuQ^sy3WtlBepOcaj35cEp3w_0FdNQWV}8>?bV#E2d}-vHuDvMb@tq`}hbsYv z?n75s17Su>dmmckZ#p+xN!+SdXrUYYk(IQ%Q7u7&rKPIZk(m>)C`7`vy9 zfD+>(@+e+~zmdUw8VoD@)) zaD+H~hc5>)QBPYFBKl4V(k4Z#Mxbk2HXe;`vqdDt1xxX59b5xmWU+{Fmmv9`^(*wv zRT82-+uhH0oieH0;%QXq7dxkgKZLQ$@ixRQN&AYwRR5I^kVH3#iGBT6yvOp2ROeEF zdu^b*HI}$O4mu*|Xy$y79E&B$>M2xp-iP}vk%X$P}cbw0@PR8cO}4`L;D;l-|5qoyFVE!HLD*_U*~>z6-I>LFSzwbJlA8 z<51zcE>-yh6>fty`vvujqKoT1r+Oflhb@yMRckFzYrw4ImG*vvY-IkYXIC!*yZknZ zFg{)dJ|M2qVKvVV_tJj5z_-BXP<~QGf;D;`6qX+5DECd${M&KLTG9=Y4|0f+!Pe`8 z!P{UhYcH|(LA<;S<2TN>FEL@Tb}NG-_)Di>xdG(%U`L;cZ4c@4dI#vCyFeqM#OU-1d_YyBT&McBAUpf1L)0AZ<__PeLXAlmJ3b~` z1FNAC4C>PV4vKm;llkhYS-AWmadSK&JGMNZnqWe6^8*jErqs5WoSc5#AVWU4CF>Rj zM>$H#)z0ILA0poi_NBce!uy&6^^I9f{_Gq1rV<~MXSA{CI~)zCnb*iCm^vsJLC<=k ze#r8r#i!lE+kj(jpAMlxh4UTvOss!sm*~o!$QbWn6f(+p6lTfJE+le_u(~9K1s35x z=?xZ}jA-K6^k1w4yC|hrpZ?&FEFF`Q(@!w2Ijw{DAuBUH*@G-8*pSf+gKfmn;FK8Y zr)mI^@Geo@I|k@U@fu*+NO@u={#ZIB82dVyoX0e->OaL43Hv3;J;#xGr?)NeJ9%C( zAqi&;5=RD&e^_7KJb|X>S9N2a<~`_G$Ee>yCSifCYw~!(ceun4Ol@0tGWv3YG5kOK zbBmj2;H|cg>QM}FC|Nva8?@RKL*4yh3i-qjR0RxYCpSpVB4HC_DEU?9Gf{c3)2%sA zsSqyxm!FEmJpEfLW7~DYFKeV3SYQ#rHfXWQhx+lVLj-0DY4gD2oT&kr13sD{((n}Q*0MD~1S)jR~| zkD_wBmAQElVuHVg+xFOAJv_AdN+ceB_yznOj=^A=YuL_Mk$A^M5B*ddPtQm8(K&(J zAWK=T;`0~I3Z!&wP9v4si~{@XYLn&DlR6sjh0@E~jcXTppum~Y@wEy?GW3>&fFp)m zFVqVphtMfiO`7Zid1boFtYbI7xUjIHmJb9YNzc(F5O6}_zmMMyQ$#h#9btfXnVnVm zh9M)5UsLI_^mJYjtccNGH>)xotsDor3(bL`2JJuot9=}}r$Hss-a9=7*YrS;_i z+ALRNj!YV}JYiW~h@*vO0}e-+NpA=#&JZOd zrsTz~JWxv=G%P!P_+U<&4a+Vm_!OnVh%ZE^Q-n`|i&#_esJ6ZkdbyWBIec!L1bxrl zs+7KEMXF*RtY#v2)`|YX@gzx`X8{RZYXd=v`ye!|8>6F@Q_LOaPMh3vVkThKly@^N zweFd7Q1Cjw6F*W+!5Sa9N>};%J3@7E8I)Nxd zUY1QU6!AFD6RZkMPPu7{3r47}hH+dX*414sbPUxm&0UYe`nuOX$dVbF%~{M4Z+@sq z9q%;E{xDaz5jCw}9M-aB)z?Cg=PS9RnKn^SzD1PsJZU|o9I`yh(G)PVqe|CfPcJB| z@OJrOZ7hP^a_T!IJ3?$BGv-&t81cI&2_Z2Bw(MOjlo0O9q8*8an3Xc7r^MQ$U(6cg z*+sYN*Eir#LCEhiF+Q8DE`e&@z)Jc4y8#jv(3Es;e*MxSsgRp26N$qa`wu(t_08joF_ymgoI>*{Y=9QNu%#^w={s+ zg)kcMihIq}Rb_PvthYGo75Q6Sk#&2FRP3{NI=aT@;l@22ns;Ok^EA|&$k$a0o?#Q} zd^))go+Dp?^OdaIKn+ivdjEd9J`SgWyp=+DUumf9YeF(gJK`KQh;LM4St>ecrpFD1 zzY&YP%0uUzur1^Y1WvqHKGn1%ed?}WpbWh;nkx{1OM5Cv+n^#M`Bn#_K0#|Ol zgWVn`b_t4Aoji6LJl6OV!29eO9f^HhY%P#uSe{!d#uu%b^Y}2~?EytfGi8IOedA1M zeIhpa4IDw$NaahPm(^>88`znn+xK`!9Jdx;YiRmU%rmmZC+Cw9DF!;?_&ZEJnr)0niT8eLc$?%jV=-A@xc#`VNm8rKZ*KbtBX+-wZNEy&Xw3auGCXHB@piR9G*GHej%+@+N9tD35&K zWQe|}KRJWfJ(K4yTvb@%uOTnBvl4@oA%IxcSv*)#Z>_&{PRyO#{ZAwRn_n}vK}LT;A#L-2UzMF1joSgkCpwIeFo;CQpwWOX8%i{W`5t<6I#>^zK6WsHL?bJ>OuIMq)%?b&2>)7)>f*esLkMN3lGCjuMs z9q9Z*$RcW*bKq0#A5q5()|QuUHZQBa?c$A(s%am>ta3DF+x|ed=Tu_3SryL_VMQ=4 zLlR5yS-VRU14%74J$)CBdSP0lEu^uaw^KA=_j$df5H4=0X6dw!nSqDJzmWM<1O`v+fs)<)g;XK%x^NeUT01@ENC#PPes z4!)L$y^Z#=wUW=uD_BDBr&i3){oE}oqm{l#F{AB2bH#Q5HN?G-)|mc1lYe)@>*1UF`W{X)Cv zL=WHta~RJ2*qr;UYV})}rD2xUlUOwgk4?$j;NC_MFc>Ek z4mKE5eV_Q3F9LLe%9eT8mgvHO{ z?Y4_`eg3S%b&Qms^$1VP`)tT$@;N&uTj|SS7NFxM+&L4sa(I&uO?<3~%wd%eHF(95 z!TV8j9RI;eWR=3Tw<9Z=X0F0sHAOat!p!B$`-Zpe;f~3A<*nA?oGTH4x?bl$XU zZ?<2_MH`Zuvm`u_n#-dCe?3Avm?Ul#Xt*CwB0(*OHPke|I`?jdk z)#sYPr7CTbR|}mFUwd*~SK-=#MIa(GcRNv1$OAc#6GP#ojvM|xR&kdjORd0xZ9H?P zQSSij({*+)VO8K9C?!XcToSv5e!;VCI)AB=X9?^OsunMNsz?VBXdVUxR7`6Dea0wo z=u#RuNN?WbcOXaCK@&4I2UEsK9hzwC@i)Z-)mZ_dgO3Yt`uoP zW=|J)JV!kbgl!Q-VPr%%KF}|=4zP^e^zM$*V&&9KRqC!H| z09;=#ACotVR&pXp7V8-cc3MRr09o-(Oqqe|s0>sWKaUrrJEV2xO;f~9Y`4@|?{)UB zXJGg3Et`G_J93^YTz_Fn+CS8PqGgM6Ief74%(7!nzdn4f^0?|e@uMRH{1T~whg>w# zx^*N&v0ZFO6}K&N4@-*>g>$`rODBV-)ni_{2$(?L-FEPv!u$9uQ1hzfE*FM|Z=!vP?$dmlIIfF>{4u&2%E4)RH+d zrzmY9-(Tw?rL9P6$zv^~Q+3B`o*W9GkR@=RXp-7)$57z@oaa={?KiSpnDHK5XcYdQ zlCMN1Hn$(_mGb-%=SBG1^vU+?EJWu@!uc%3PYziY47C>uT*mra_C&1}p~Q;Pkz|lq zqwwO(*1F1l`b&I}p)qAuIpYw{12!N%mhSK%6%iJ_`UBJ9@WvjGH>OjTsqf!UNR3`% zB1jq4&M(hbRWNM0@{hv9z29Ybd;-3wOmJLL%)4B$YvbL5QmA%)rpT(!syV3v5*Z0z zKN_B7Ag0||^RtZ3Z~f|YB{E~ey>PQIex3QEuq2ey=-y~}B45nQ(|%Kd_>r7c499@y z`UO2(y-)4es0H?2@@wWR1ZRm!;n<3cUZ#g;J@<+0k&-}FyEcMga=D;9{2b1;Hsh&> z<5arPP@dU@#Yd_?D=e5u;R!#{Q2c(8DJaf9QFL;JXH3&7fFGySN?^R&-v$R#lMKah ztaoEs-STIfw6Q@~DJ# z^zZU!>v@|tXO%ka65abDETG~ZR*M|FL0*1zHaS!^W?EFeE{oABWqxam#yXUi$~Mx) z9u|?EZoM=lSxO3BI`ZB5Zu;Sc90N#peBN^t6|+qS6aE~$$(fc{wZx4V^ZUN7d!<~0 zvGn9`trT3F$34pSSqpM&6M>i9ycn-Mx{G4vF4wEJ+|UfR{9x>JUa44XM0oC+=U<~iu`l@0R_X=2@-Z;rLnr={Pk)Z z$2v~%0tQ&s`)WkNje?ZfgsZMLt(>m{YQ>5HZEYUcX1ruiL!k6v168h4n-dTQ@l zqnsql;viz*{s|h~a%=qTF^8fwz#ZOM6m8GA+2mpevR5cM+3Zn01*w1xtL;TmHo(_> zuHe*nn$^{3)o2e-$Iw5Ta;WRKZC!u3vErxr*re+=gj7Gv>b0MsI4lhtA+7%yAt!%~ zkgnh1pnIMEvgfYZI-m`z)J5Y1M+P0S9qn(g6ZY45a+drtvRZ-F*JGSN-Pkm?5`~@0 zIA6Z+zwKL;@Hm=GT&=<^=Uc+Rm0c2EwqGct6MjP0wD_V`i0h+0Z*s43FLR%=_kaMf za-67}l*8w+T%)y$OyV#u5`UPhac5R-A9BI9Gq!|x%Te$#nXMqkt;q*|-IOe=_@gyD z%EGibb$(J6SXZPBzQ*0Nqp@*Fbr1X@is&Pg$qgTeCBUz2-Vlx(-_L*BUHt(U1A*n@ zWVgO&L(=L5x?*2(BG#nv^h02oC0F>ydtH#Nov7?16X_mi4;nNR@_o+r!^(O0sUpvP zuLkJ3W3AjQQR4QlWV1=DZSzWFOG{IB+JIrM$DnA}GX{2K@F-0kuyVw6@ym3%fty1a z>6B()#PNELo7;OrFcC|6DeLo?)JtHCq|nOC3Rn5qt`r737ZNgKtU;odEoN1rR$Epq zk?#3eZQSr;1u_k5OdmT>xtI_07j>??ZjzXgKE3`dQZ&1`LZ^m%#$V)EM2_>`&u|Mg zKiLj~R*e+L1qzUn5X6ydz_;h41Pr6amV-BPy4Ogcl2g6U5*@l=-xuQ>4 zIXz|LrW}62lw2U69^z*+>s$fMTHLY=U!xJ4UT4A`J;}r@xLA7Sd_Kal({uxc^Jh(e zOJ|gR>2z%Mu5Mo;7Y@mppS4n0##7_HXfmd5t<>s(qS};~K7UHpWJ#n>s}y~zk!R(6 zxsIi`s4X%5VX8tuO7a5s`N!vnxv1HN-J%|-&?>n`+0@D5#zLj&mQp+Vyin1vJ{Cd( zMz#vdb|>h=a}?wn-8)=i{fBnrUa11%4Dt*Zc6Rfh#=rJ<&Yln+qmmscPE?kh}A=Btg3EBa_9;dJQfY+}LtA%)ie{TLXWqAbGq?v-H%O0bg8 zK4Vr_a9@nNuCttS}#4K`3Q}*l8=4pT54J3WbAC`I$n3wGHXZt zI!YU5J}I!#SHO{#=6*B>S8MFGca;v1SC^pnq@IV(3t=gMvXy@I7|d*WLx^Z8(DT zIX2Ai9ZNXI369vZkrRx(bfyY_W8$pv+w; z@(tU>Y%RjlSsNY}0l^cp-2)F=?3bI&#acet7@U7{Uad+Y`IPv}o9*vev6RfW}= zw=KpS%v6impgV(zxnCp9>9@`^5ab)kwxdn=fY`!6up66^$Dp00lj3BcPsA=MK*C+M_yOqTdk4xr~;k@^xW zPuiNM7Gy;CETV@eZh4PfasNXp`f#D6!m)~OcI%gYBXW&_WP!J*c~2Qw9e05jnWhU* z>W-r5-I8>;`jc6fFGY{(aSjqiSX&SLlpPnMiCd$aYIOPs3(e#C9N@HO@sHR)vZEP) zk*LGrJq-)L)yqJdpIz*51~1OA-_NC1+e?P0r70%UD5$dD7>?%RI82zXHw)FWv68D!>XWa!YVvk# zQUniDC7s26xLaMtIn9sm8>=fHbrw|Iv&qyoqZGP#B*p=m3;7-oarD$Rnd6yza=ji? zo4)2M@Q`LoC2HrIXt}D+d0_wmhjUXr7~Ed&Yo+j&B76(fG?_UcpYGYLupInA%E1mf zT1IxxYmQ158^(-Bi}L2*GGlKE9=r%}MVK0Lc`Vj?{w2%++q!O0`v0NoE2G-j*S(>5 zks?I{6n7{R9J+CLCrEJ%2@=Aj02*Jn! z8A^}#^45eXvxMul>p01h$O}_C32xieR`!{ouw*Y;G!mP=h5ymuoqX$S3jF!mv!uMe z$z!o{PcDEDJO8lgxaj!MOW!bC3CTXtu9tJEN9t-komWMMrX1fDo)WJrYRcK1Hgn0o zt;lqJ7LTw`fjfvAa>~-9O==XkSHj{d+nj2sQCF?bDa1hAaNOlmr$%61sTC+2#`;rQ*I%CTp2-Fwu!b53a0fEyv(&Vr z1;sDou7cjK4PD4jEhpu&R3K!^vO8lPhybsLT?%p>PpPYb{AYX)=s0xhbowOBcJC7D z>V8|a%v?T)n%ip;_ZG{hYL#p@*8$Cnw{H+}v%4yR(N&}^!d%>7cyV;A&>-K5 zy9c67S;0Z(z|Bd1MQfjXi9G0DYd)O+*Wml)Y1|19rqFhr@&E|I)M9a&=1SubclI2T zm<%iuF0HeEp^+!YWGzgOoFsId!BnkAOvF?G?1KOT@7kRdPaf(d3V|bh4Xm^Ts%SgT z_h8JbSGa(?L#soM&d(?h{GtvI=KHQr4auN=2eh6&S5~X%aNwrP;`6yK?IJ&|aZ5*J zvdIt5w{9-aCe>SC(E>!fIty5spRZZwz%yID*O5y=HZ@$4TK`^oLpMheQx zG@=LdqD6eVLv(7t+|a6$QTMzPnFvY`&|13xENb4qSLg`;eh(Ui-_ z_+GO&(1&?*QwvodEw2i{gH@Rwlb5xCY!OPr$umoZLs&`Yxs*Oh)eWi4?6?W(ZP+wqQ4(;dFs@D3gY2FzM$Mcw^@C88fyQ!@X(C$3UYk0_<4Z^PK3`_^D z4=q$W0Y9@*n&%@H4d7;rn=Wt!6y1ua7kX|@cJmvXpW>Uhat)jvRh8DGf(10_ZVfHI z6?9OdhFH1sr~vwLaRo0Irr&F=Vv@#6*)N4%w+Ya;<}@@EBvY7W201=zP$eChT6jBYQ8cD&WSBZ-wpD1kVS6@f4p!#b|iJ(uA?_jU}(!*E^%@; z?W)h%(jI zESQYyBaa;auw-tQWiFQS(LZpwE1O~>6XIP}70^&5Cz#t}?D+QK@H(YK(7DCu?fSoP zsI>6|g+hvv@yak*^$Itv279awm-O^JJzhU1r2zvr@`VuaQ2s45Ax_7po~w!mR6+Ph z$F_E$$CDlvE*X8@#BSIVT>1N|hJ;h&Rqx9x>SXJIpMg`*FoDJ)xBSKqm3;@DIZTVr z=6=%i<%zEEM_P@?VXpyWbkBJ0T}STd1_b7{MQit^noS=p##mRI8qf%32V^?Noi(X~)cQ-Byh$RAQ9~Fi!go>~1l)7GlI-@19C&N+xaWL)XsGkZJmn@$&JA%mc5QvOb?yAHZUq~ zd3I-6{aa?)&~q~}i8*ar(^^I>%-)K4+s9Q=10adxm_OzFcCzCO|88yK>RjGx)7MY@ zTeVXBaH;QpRPDNqAp3qBe0u9zE3mOF+sZEP}+_-_B|=W`qY9RjnhzQo^HH8g*pA)QR{raIPGaj0*B z@n|*%k~?RVOIJ{_t}Q{~T@tP?pjD|eFz9rzy8N-3o+A1L7$8Eg+CZc+yE``pfGMo4 zNHxx`{>^4VK}u@lyLV101X6TqR!|AC9)~rz_~O+-p86r)DHbZDXRHJHU1YBP-yIBi zu=O7njgXabz^pt%2h1al<`-{fYCJNzV?gIr=wBSwvFT<;a*63w`T5EsJsn>K%xD}3 z@&|majn;6zBQd9cV>LDe)a6$|>ByH0%~_7Z`12N1_+pA5!03@yf2H2}2zAeI3p4?eSJ;An*V}zdBKVqduUF61JfAP)}Y$cE^B?vU(}FhM4y&WnnulU zD!bfSt*YPnEq&68;;kO(=BSHEsPw`If0+JrXoA1^qSzFSm@5OX)1I47P@K(+Fl>nZNHHmask9W@+p&_Wj6R z!n{>0SI0AXKV6O{^Q(ubMcp*B&Am^#;i+m*W4+ehcDS4O2DUl|9##+@LVhk`Jv{fQ z#$K~bD9=rCJ&`^u4+wx1u-9^@wH%~!|7!bdU=-a=`>pV(`UM^--;bRU8N$p7DTRjy z7q@7TR%tHxa3X%BM)c`RWX`iUEy*EjE*S_CYc8KiOe81W@`Pw>US1-`43fH%*k(d_ z&Cks7{x6|ZXYk3(PLG%hE$uTij(BY%(BXd8o5d?332C+t#njO_rO&!!%%_>OP=Qm{ zm(KV-B@iw_^+qW+pos7xxF%RKTmOMwZt>FVHCUA!r%*NnM|r_(tap+7;cJvrGo zgKgWsYN>!gJ=>grErw}bn|`w2Td63~n5^m7LIVY> zzTnGjJ<-uOw=_1Cjk<6MX&b5b(O>xe3PiMc<7e7M-x)V3=J!a9n2dfw@$Ckh8Bk5U zoxh(nv^F(P4)AFBnpArUWT>MEPq!Yl$!x59qTrnEJ}}3Iy)wQuNETfeQl114zD`Sy z58d$YS;;h=!iR*TKQV@pUNkeMz*rV5#7B-}T8iYIR+;+L6DXeUGdz6cDO%`>w&I>< z+IPELwQ%Q?SAPh!C){vOV!qIP&bKk`aqCRg1xn{qK9HTpUPb7`54w`dy1a5UNhAOE zp5J#YD~Eycx<;X>EkcHeV>%^O`{i6}{d%GZk@9S^OqQ-f=CEYUSWJ;rJccD_j^U8p zwDxn3RD6O{%LNHrvKRG{gH>U{aZ~4de=y~4$#q)mB2;A1YCcr)U41ScleL_uF^V~3 z+TG7WcFysVDOcHtJo_;S+yt_A7ItWx-gq6VcYZ7R!!dg|9e#ET1W3*Wzv9JTNs>Oo z;NTeYWkPanGXj;6QAWhW{YT~h04ux)1&&iQ7n)|A6FrZ6?$$aziY1)m;sbeaP^kp2 zLR8JN_8{#L-$mD^1%vE0UUif#z2`Qgs{H9WUzoOkqwSS^un1pWt!HiJU=uNtyFyyX zgKhO&`eebbLF$sEzsik}TJyYBWT>=!Xcj|{?P7*9Ex&g-)alq2-0`i{sYD@AAm3Nl zCNT@x{=IQ+*Gvrb;59NxE~v{HN#$+@IU%sW_^2a3?vkcJk8^aR1h8N3$+&%@d1O{>Ffbudu}2|iz3${6{{7FaN4 zD?)^_By@QO9*TcQF-c6&{VX*!uWdM$SGbLSq3mqPEITlx6aF(EYAZ>)enw=JGs2Sh z(Y6qTtx4v0lNE-6vri~Q#u>PNU=PyEZ5lf2vM9i)UDkUPOH#EnSn$TQMGuYt?KzvSE2$Pq8X(+Lk=7Pl~8NAiAA%r1gmw%qIdU@JRBy^QCKuiaa+ZwUIiM2Zpf7 z)u1kj=ZJI;hrW05SCyiw9WtyYm>{*xd%G4*n4>O;d9t=0z&Sgrw6t6Cu+yhW5Q@rc zMw*pWVHclg(}GNgej0vk?OrsNjXk4b{)@giDkVt@co0@Z!n8Fok>SHpyQEjv(b&40 zOzG{@=1hoe8rDO~{U+f6+ zt#*6M*Wt?sxKJrfscDYUM!lC#f0sD?j^Kl%u&*4Y$`!BdhIX($YD5q^UDMJ1{?4hc zztu)H5KU;)Em+MUzJIiOCkO_sOJbS=gu$%0(FcIkjpswT)CLP}MEd01 zoGgYk)rnR7Kc#W#{UKp6h*lHXD=pqIXZ#UnRlB)>qYO)s%tn~MLHA3Dcm4#v;k+;T zJ&l7gqfA$krvw>$Sg3kM>UrM17#)E?$ZShXHcO!b~-GZM<+%X{U$PzfwLWT>q|vv#;s0iNDQ#%pV)5_(#&M_GstjqZH6{tV z4MUQrkLE-(Rb>{f2O7nIZW56g3UmMz`@5l~?e$Ip>?;gCK(`MawyY}`7#W`rX{K`iT5LF)u%Kl>Rf48FXs|HWT) zY(0eQ6mUXs8Dm+&b;_ekAK(K@qm<}f?{GR#BulUCYCR7eyL3IbYf#IqTLzD5b8UX0 zMUVQ>kp!XL+)|g#Elu@YZYf0LJ6dX+DRC6)PMtoOq$@)7E6E5oy@JnL8dZhW8j{$9 zF(*Y1-xg$VH5jo_gxuFPl}ocib*QmwUhMM)+20Q0#H_H;S;E5{6uO{vC2Vs)Y%?RA zWP}^OtYbB{-;L>z+xvyPn!aefXhO;BTrNV-7{w&A2}!jV?WzlafBUw2sZZm@p1zeb zLMa>M0S-zQkQAK)Sp7VhDgI6`O=nT-dzN2QC{sfyniF3ye^;tZd)bn@)&_cvG0-$%6E61b9#$LIG zwrTNgF59YB|C^$!ye4eT`Xvp6r>|^GsH#J!t-H~BF6r<=)HJ+#5@)M(o8(by=oW8? zTp(d(r$2C$I-UEge4y4fbq3;@+Th8ky8$b`5&B$Jn>O~NJRrrxw;QCzN&rq}(cbbW z&wsb@s(??Rwoojw3EP1*fQsgdW>i(x}?!ORI7?G z|4LhxiOTNVu<>}z0m&_ydDLJq zru8;w)^hMFJq^ZP6z)$Z+ZCYol(A!=k00eL4at;QU?lVTx9mwxf#K(O=D=I`)MHt> z%|fdAE_6dq+vl#8C+i;cR++j22ax6`=aJ~$)_|qw71U(W%0)Z2b(k22tdw%TrBSal zeipn(cj3*a{J#o#bk>|Q*q8ysi%Azw1GvmVipng3P#`O$8yVXE z(tpEutHmpQio%bh&o)i|{ITru;b0HBlk7UO5xk;@ZfGkHE5KQ2R{pZ3ud*!_)T00E zP0m0JMfEe0FuZzP5Bbj7s?45BE6J>%`;!R2usg0xxy@_40WIk@6bv!n&l0{T4{x5v zNc1?`?ntA`F=rh6rfa({E849 zGg!#Bz-#v7z$h*ZGLqWovp$nW!=n(Z$|IJbO;Q~`Ehgi&aq@;%Yd?Hs(1s!+3K)cI zGt?FSF<~QrdU^R|&a^VR^j5~SX@=Z$8s`&l#8TP5W|)d;FV?=lOgKW%XPqrr$2q2% zXWlU!Du#G~+P3jr@UneVT0tIn}!nii&d*f8148p4&M zwgD@Y6%Yv_e1$`h7phOUP^x3QW-lx2Z#v%bs9oJ?9`K|`isIn(9&-8AzxDLmb0LEh zwNmvyoX?f*rLq`wT1{Fw0@nB$V_2|HWh?Pr!HLWJ(BuvPCjDbJ*SBo4YL^cwa9wXi z`_khkIl-Ki&FG-#s?Xxeo~CgM+Mo{*M8+hflvs*SdVsxg8kq=?f#kL{qh#rrSGsiV zBL}Q;Q?|6vTjcor!R@O%j;ok`%e3YI)zQ!5io+vSg2<2Q=XJ(Ld!q1!^VLmcLuBK% zor^Nh!}{PGiS!-@#RaRNKLrZjQe<)h!8$zo3$HZOuWbyH<9&FSZ%)( z_+mCRf_$0}r_#~lt(&hcp-aAd9f2#kqGI7DI04fTHx2_W=hgBX<>O9SsC@`?_NeQi|~31cYdiT^2xW-HVTHD4I5kSlKvP;@bS0x z)^6+6{)-s@qq97BJBGa?O}S|clEgWnklxd}I5%+IzE-gDf=c^L03~pHb1SD8JvHg$ zxT7Wlk&E5BEmju%mLNyoR4_umA>noQX_8XaA zsK=jhxMDJXFcStK6X=oo33mv$QMhUA{h>%5(tq~lX__Mo9l0n$Teva>PW!YkXXuj6 zV5Lhy^IYG#y=KBrt|eZWEGGj6Tae4Qf8p?pxnPzVRgNUnyJW6Z+h7IHBzo~EW?N}W#i{! z2IH(C|Dy7uE7A^2tI8^b?Gj+?srj=R!Nhg_rFxF(dJj&>Px*H$x5!nfiq{5b#V2H2 z!;Y=WS&(JhqzK}@=ppMS`Jun50l6nxd97LCfX+%m)!+*bnLQ5=&&HOx>0zNJL*Z91 zjGrrnIk^i*^~Zj*Ge*eisr1Zd+^#&~@a^y>xblgh9<;P15fis;tM|i^93ua?qGoQQ z%OjBy5LBQ|9-)f=vRue7j5t$9*88(|`yc9Js)&pC4bv8HlH?ehn9g!cn@cZWZrh*Z zJB8S}3guTTID}s1ihQ!>-^;RUSb9#bcf?MTJ|fnXD;xgwJ1q!Hlz-sntL#bNzIC2Z zn?v+UR2d8M-aY3>)ty#N&graPZQ#t}5+VIf5p2dT8GDUA2n2%NVC6kfm{TI^ zT0|kE!Vz3i1+H|h|Kh*Baq*<|dDFmT6;J0%r{Bh6{Gg;w@^0KRp3z8#f==*q>KjdS zlZV@*rY@#GRu{`n#fT#n`+qaii21uEnKiRkbdcm*u{kHeS!a1wty|DmKAm^UKJA zvmPPEbfdAYlCXNiVcQU-ip<4}Mc;OG2&NG~cy@i{AFgISt;z2hfS_clLH9&ZE)ivN zVQ0tezi`;hDl1*wh3hZ7YCEVCC8`QB@M-~j{7%Na8xtw$j>Y2d4|L#26 z0!GXsDQ<4$9XdgBDzyh&>*kCVA=Z{b&;R z`XhY>~GwJ}!H{y~||+xWd{;+{6l$hy>egJey^{yY|TmyQWX|9OgSXV=Aj8}pKd zB}ScsPLx~tmER0!VzBf^8yGhu=U#mj8nan=duDrdfk6y4&H{k!drC0tv>i_En%QwVM?(LQ*kncbr@zJyU zSO4)$$8NQBVS5HM66|h<=6r(?T6yaORzD6rzYft^eFcrfIH>p0E{2{I$RXL0sRg@Q zZ%NqD0;vm(At-W>D3a}Rsz#9%E%HI{h)TUu)#?GO1^Q9JVJwLDPal8$9G7$oE@WC0 zcGFIv>Irui9=WeI(a8f@z-#>rf;%KQK{YF34NqGz2lwlJk@vbhSH16XKU4Xq&3!s zi&RQ}PhLOWZSxoZ$@S>)U_o^=o#hWQ%#tB+B)iB>?;U>FDdroSS@Rfa2^0B9M(=yF zd_-Fa)7~EXhNGpK{M$ud*a1_8GE6=PC7+n$sYa!?#s0xNvtj$CQhDVJu{9Rc1M+8_9nW4ww`9_MYFmB9puv_MY6BaUB#& z!!ev6NNu2 z4aPG4;r8Vja0n%bTgVNuTCE1K-I~aws`6G+EROPU=qa4rq?qnrDhoqxws{MSql<@i zm4ULqSWQ{04lg%Fg85J<9_n~tehDCBNQc+^6OZKHB$qi;Av7w7QUg1pXqi5U zRTuEC>}I{Ia%UWtX2;7?o_`>aj37Pds4REhhp18I%1N_8s*27fbrTGAgZer5C^p;y zfomFP1y%Z^`7cKPvCKPq1Omz_Rdx9-cINr33O9>G{Qe{2k>{JKh0)5fa;pu0#SGAD zpQFyoKHhddL^GCsGZAIp01Cd{=wrLs@K6cG?CQ~M3B*MTMZp7B4M%6D%;lW+k^-WE_og?TA z+JMK~MT8#IU&PDNYs`W^2cCCvGATInnsHRrATk^|3y$M~ZBu~2ZCVqiiy`tO>_1PZ z#T(Wl{k#p>Sd1pc%S{W{}&FE$yw8-*{2UIXIaNjON-yrK@?J3 zcKu!+;ovp=I#tx~=CJYJXF1CTCvB>s-%Bo31 zZo&!$^1?i~jEQS0VBsgw`Ah7ytQuA>$Bzq+m9V;!KGt{rUQ1N~Y{7WW%+Ft@U#2xRE5a)DPVjRs5QlQ+!NwQ5y8qyAa#Ep=_=7VGbi*}Rlq zKD&EvRndqsk!fe&fa2e+8Fy>(tRpwF&jgsx@-~0C2&Hy#xnqIME2Qx{7X@Wc(n7IeN*aA4j zVNxqnBm{bkEjrwg5hH@cjcIcU`1Cwp$MxpN2(q;FytBZLnuQu{ zfYu!wGrknluCfOu_kv)PN_Am7JF)coB)X>0)DrRFmB1sGc=LQR)#Ol)`?t>Ez?W{r z+;Aez)fpGpdyyaqIl|#XLNN)}*W|L9x*pmc22t+8ck{ryjk#FgF45=2Pv0Ty?G8-XE*b-zurb`przE9;GhHh#^YZ%z{8TGBTde?M~A-CkHo5hjR8%2|2ddc_&^FC1g} zE^ddUgZ0{MfN6q9`EWaMvbuOxx6Y}B{Q2^KZwD-W*7 z(BY-EbI}DuPX5a9Oxbwh_1%WHPQ|A=FM}O1VPo`ro4}1u;c5MD%`SB#bILswgYtqX z+c!JeVQ07=NQ%{zc_b6PB|EPfba6(qq(nqlIpaX)^bh{RDk-Ul(Ow?O!K&?PTVQ%o zf6%Tw1}5{4>9ms=cVqMAV$0&J`fy7gXR?oYlSltnhjIJ5Nc{v0NdMc~`WEezYPxBM z>Wb>>9EUZKuJnc~7|o0$=gqZdGiY_{RS3}ZRuOnEG_N)$(8LrHD%Q@KMdJ^&uGNO! zNjEhzPk^_+j1TR(taP1d@~wCKI#l-iQ(qDwBUv?f6{CtDpCYjOY8&!kSr zHhL108gCHj@%cwM#o!|0Lty(WLZHRvka%Fg- z$pYk>9F?2u#ytdH6L8m$bK8D!hFdD6qZY)=39|cCb(jr-L8nLN$b`?b_53y+x9_ql z)lJ&mTdh)Q_&KVxKhu%QAd?uIix>|pWP1v{cR#-N>K=8t#GNU_vaDy4G~K)u99A@7 zVJLgT*UjAk6F)p;kpl3f(llBx4VSYXb#8RynqKTM zj`&WX@tc=a$fLN`jblF(LL`YrQ&E3>VuS$GCTIOCMEm@doEBEn>)kNBzCvebqGzo(@V4E4CFC+*i@o z8f#rER|D<@O|EE%`6-;SDeY@-6HQ}F-WR&o?u~uFtiXXoa8r#A&WooNe{E0>Jx zfh?||s&|y$nP$uCLrtwS^jx50n^ImI6@8OIQMGSS>Y-mU(GtL&lGv{?O)3wbLmgA> zSR6(C!f!&~GI|YGPslG@OnW2;Zb)j_#ia^U-JqsZw`aoORn#>3uzO8fQ1d9!8g6YN zf`Yv~!zyrT?XAFVF`v`OYbvN;{&GvZjortG5OZ${YS-t@V@}kJkSv<4_UYaN0NQD2 zebe}Eg!1#=*I_&d(s;!VT4^F{>x}*n%l;$4pZus~2S3CG;mV=)-T^m_@sc{gEk|1N z-Rj;vuH}tfd7^o<*525?WIdL`dz$IB!#Z+|H}gq$Tkw9~ydlHvhK&Qup;q@|j-MU3 zM=n`LRJ-JqAC5okpwqnku71*rdcrtE^(R`KCfGNwtn>_7#4(YFDLq~E4@2&OX$YF$ z7E&uWXCJe@D{o_TEGMerK+%4pU;B9wrP|FZdw`W}B;4{OEjrGyYx}F8^~Z_eYsQv> zK4m~KT1Oxuq#b5V_yRA6b=>Mw-hl{JvpkOhfwT@ObIxp^4Q&=MzOaG60!1O`WIvjY zE&iI(xiA#MOGRe^>HIxoG{c~OT>ZNW-y6&^qMj^80;s`$Z|NQZ-4b~*!^f566;hMi}Qtf<1nZve4?Iz zp|xiYBUUzi5UCH}4W#2YT0>2yKiSq=Uei9^#4LHi4N}$_e6NNTTw)Ykai`?!4{e3_ znLtN`8#XMb48_LBGqH8^L*EAt`TZ0ecp;0(8M?GHn@+X~-(Z0@k(Ri&IV))Yjrp5M zUHBzEp#byHmRRBQ;<6&sF{WiAB7fzcz7DwxL-C`{^HiRNNm_X+UUesC6?8F;A=ML! zuw=ZB2D7dc)&OAsdXa4$m!^rK_(5{4=qkF1VWFGf`H_KQ`$0d;IduA(>TOWd3|_`D zP7t^!{8qvZ$m(-I9JXz%%+rS+p`S-P^2)CsGfi*={?)5DjI4dWt$Y*&=}!$;T?7WSmPw*l}hE! z6IN~KAV&iaUNz$r)WCr0s;bh8uXJ+O&0yn?PO1yi%vN*5v%X$r{7ht#%P!@DpK}OCeK=HmSgS zfYo>G$$@Zt1-1Myn&81vvr$hx3613p{f-Q6?HeTAADy=8HqL-b3Pw&1 z(&6^+l5#ZdE4}TOdr9y4(wCUKUqf@R;|g6pF6;*--o`C^u%bbeb7-llKo+Y^Ohw|4x3Zl>iCthnNeYeuc<9@wF`08rx&kl9u28o zL=Rg%V|oPcx(8sq%6N6jZdkHp>rmY8CMyXrfa?ycC^A`qbu%@oy3`+_dxy&^YF)z-D6weN+ z#3Sw*>ZPm$g65Ab#9>iiK4?LeG`7z3$qz!0LtjY_FT<2Mg>ZQb279~NbIG9}W8StA z4h6DNY!bxFuIGJ5w}EXwCQGCD)tVo?@*FAJz|X{3Q53la%zj0xRnqiL^=!wOT|_8qB_Wzwy*;_6*4MZUAs1)B z=jBnm8=D(_5!toEMNJW}mOjOyiiM(iee{3kzy(mUO!Mn>(dVv=?K?Gm0st~o*=ENn zPk<&v=!eO!YYQpA*KQ1&uj4217>*HI^nOGt!n1YmFU!(*`*&B<*!LZ~;bq@V#hMag zKa_%%nRAZhu8vNP&2#>Gnx{!w9bnET8+mkyH{H$TA}cVrxYv*|lQKEh2g9`cw8dqG zRIQCc#$ECp1{w>PE(~VX*_*1BL!j)h624J*n z>( zXWHPQTr5HZDn9TtF14X52atKm(kZY2A$fXC7wM}Gu&o+uNjdrjXYhb(&yH||6DTe^1#fApgcIJMEtZkeKkC?3u zJTQ9BjkUp4g8NpZdye`c_|5s~iiOtv=nQAUWl7J_3no-$^}E#UdR{(1oXkd!L>txW z6g+v@CNLc~*8?dT616aGPc5pFEpgr3guU*m)xOCE&YKL(5+~3l;>>O1f6w6Q%reBG z5Xs*xKZZWZ+A?w0z~(=#0T>$HTTi(K`#BDbJSu^)W=jKSjiA+Ox8$yof1bQ|@{{^N z4htDEdnJo2F0~FuPsjGkU?v&US}DnGY~F^IP7mfLH7HaN5uiN4n3IChaJ9m02=tEqYM!Fo=ciCu>am%f#<^9cHT@l z<*8|NNQBs3b{47gNPqf6aXM>OEq3(jrI{- zGIBDbR2Jl@cC#6o-}MjV+B_>kabp4%pahfDe;LnOI-Ln+<6q&fz@+TdR0{O!Lxhf& zLc^j#LCLhne$?~kio3EO7hgAi|JzwF{V`>q_}H$+^6$LWf3nK|*RVzV^H=b*H?L5y<1++L6V?Sd zI;x+38@USniESJGH#v^RmA$y+L!@AdMy4PsF}+yS6`Hu*1Sim6>~MMg+8`a8N6M0djuTzaNh4NFtc0)FM)nMzppgvZxFj$w1Rh6qD<8X=RXVKc4;yj>oQ3pbWs-}Uth^WA zR3gl@B?-ut4|*;GZ%-tj$}|PJ?hV;C3sHOyUCFDRf*WW0>)Hk$^O|(SAl)jS+z!b9 znQ*ffqGTGeEH4>8#UMGH$uiaY+m>;`=b~dxT6^qAvTPon?d1-J3b9uqXl+__E*}YEd zNsc<3Uum3ly@`8%gHbxKrW^yH?WSPBlW=aaU_wr=&IM#(Pp=6PL7z0ui6j%pci;&9 z1?qywB8?gH)_=!Ne6VqPG&41OH>&C$!>b?A{6U&%*ID%#MFtSrcicA~?f>D{39r{8 zoS%PIlRRAXa?KyP=_Zz-Bc%B}5Fmx0Ou={#8e3-(%c8TjwRtl;w_8pQcRvHM6CxreOo| z@nTV#X@fsO0KT&u4=;fi>;xT+coC7!cfWZW9G9AQVE*szgaa;XVW>k+MA!rpEVbNL zPkE)iFN1Dv19|+;sTLcO=}7Cx5>y=kyyw&@r{FW3Aka7%WL@YoxT;S2lfTz9^fT)*;BcLOJK)?K9nlhTwJay7>)yzCW1KEdxWC$-~eD@o=ny(-Ff4 zKT|Fp4({p#tn8{?PfnGN-QrYO0tY)FTyjUtZrs23yT4_72)eUlYh2eWAK^-f0lNdg zNJ&ekhC5EKMYOM&)u?@aP0BEP%+y&R`Q(5K1}pof+kbRbgx9tE#=S2El9D*cpbIbe zye?JAULd`5yLgQ%B90{dj9os3bToF^3{WpyA`3<~S6H4}O%rjY1c)t;SwV4d2la!w zL#C951nm@@1%;SqFDZ~DrA%VbR7njZ%wCbkz~Rnh!~N3W7&xT;99^l;Y?xCfvrjPX zi-X%{h8U^T3>t0Fl8>LwB=Kd|kD3vqfdq8^NQ$C^k9q{vwHZ>*k9VcRk7gl9CY!3| zfp7nbr5TnQZ1>%m{OCXi4ZiQ3OW64KsqFG$@EEH9I>j&^e2APfzvE0fTNgNMZb<$7Y(g^FLp3 zS+j)Ch|oVZuzt#&_1()WoKc(t`_ zMcoFXQI1QfnJ(FDXO<~+D7Uyyb`Ythjqp-x(WGcHvx@5S${XzD5BT#3!dbs*atBB; zlTT^ScW&buGT_jwyjR{^Ermf*Q_HmmcsuVot;3ibRQpRv7z`~i+X_9AxBFn()ZfP*8rxqS+Z`w7&*LaTNQltgrIfmb)|3q=Gsyd=5P zp#St`ZLa9-gWZI=zL6*Oa!V=%_!*ma&ItMW!3scu=eTxdgUI-m8*>MGDWTnR8(8on z25F}6A|XXL_EW!bMA|4{G7X6-mf-S6SPB$v!oEda*5+@2_fJir^8B=BS9|SAP zQ*xM=?bP2w-tCTO9v(z4JpM^w;@xhM)f~WQuPyhP+*d1+jrAS3f-Up#zQ0@-lQNLX ztdjU$FGJ2jdwUb{3a=iliL@+}t8oJlqj3(kpFy^554uiMu|BhrkEmd(EA` zFDaz;2s2Oq-IMj0WELF|9dDAW8d)x8M|c)1`5!vUC8udP;WjpXdD6!4j>w~qjW8;@ z*khfMwbR)b-|Ls;P~mI4ic4-B7vG(p)W^=tw`dxvJ}-fg(w@;JbsmDm1*gWgFGt=I z;;L+HBUa-CV?3KH9S{iikAinH%>>Plku%i>NN8Jg2sX*4RCeUSXwuq^QEvp^88rmq zN;6Ci5`73;RoPC}?=crV8q?&JNZ>7-fG-;S0rh{dL|0mX;^WDyq@N|CdF@E(uD7^` zMd!2tK!X{wTs&k2#Pe>U+HAZ~D0<*~@Lwi%$u2p>st656Z-Xu2_VHbw3WT;fV;h%A zUXd0(KBcBIoj%2jxDB0|iuX=Y@w+x>|71iYbr-n!Sk+$7ID&C7BrE9{V=3Cgh=X6W zrqqLo7lKyIT;Pp-H1h;Xmui%WzH!r__$lwa+2Bai)l~aLlU>Yp`CnxIx-Y!CY zyAECqCp&&?2&?5!<_aVADMI#m@y75x9SB~+G4XAsROVWx+*`G`F=19}yCCk#<$j*N zs@+Lz7cD0xXDrIzz}vP1DYUdI_umCd-&-&A7ETzQvZuGU!k+xNZIyq?wZ5{R<81s& z=oNyI(6X6>cw3TQ8-Jm-a&C##1JCZY9<#)g@0+{}W{Xb?YWTO0hnb2V~#&p-n!ik|6@LVILY;T6UvRZ5bdM8Y-@zRFKMUy$)^a>Xr zSjd`Tww^6u@soPwAy14cmtT_Ba`t(NNE--L<=qQ>*mywbVx8y{lTcwRw zgyZ2vK#(&vrTQ6T-j(rG%_q6NvUqCO2z7l={8?h*D&0OvF2(T;pF9On)KNgT$lR|>g8Qj zXLb`j*vQ_pv3%*O)T^H776F`9=bFwb({ApG>(o%$*m0V4nheL(-we&~xw1Dr`G>na znoL6{fd_>UdrmF8c12c@Y;_g{)oCKJRyG$l4Gol#JuC-XEmS@%^kddii#+B1*hMr| z#Sr?e3r@KBuj_eMX$m&&rRDlugDO_Nb!#*MRs%Q1SJJ)R$_B6T^+(hoV9+*?B2Htk zG0bHlTcFsHlU(PgXQCf9i;a9?jkrwAj(Lo3YV@pBG*gOw8S=6vWCI8Utpv7e&}!3E z7fX+Dk-v1n0B{1|B?dpuSZ3*O0wg&51J42k#5#Hl=Z(}Ax#p>k(#18OC>|}}8DR;T zCGQ;k_i=UtCmwe*;*K{@I)S#sMWc>DF(R`5iZmgJqsu$3Lcd!6DLwLAmQ2FPkg*Xk zxK5knWQacx>!q2nzPXU5MTcoI8S&)mFwN+cRS0sUZlwzTcvrLel`|3`Eldz0FLTBt zC)I`qx43#RcDk(`+v=;*zT#%qL-fx|>7kn#6L|Z&5xJ_^?oH#r1AJHFy3f#Jm2nC z(j-r*dsXz&xNaQ@Mt?qyf#X>HDU}YBTJp zA}4Sn;^zePDD5*Yk-vL@RqKhLZ9#iG0^EcFz;C|veDrQ;0TGMfUt&(IIsn74*51>) zlU*5k)NRqFSmbW=70>+_?iZqeNa*E^7i1^O0ueQ7kuH!&ZqcY)Vmz=F5E@++tnq8F z-k{Q$2HtmLTZISr?IJ@$PoK^ z?zQM7EUN*n48_FS1KMDX!#%%*9-rroc;$5RpYRQy?D)qc_~T&*GTbNICjSvk z?OxWE`>^hr{rIMbEAOBWtb%uqUdmjVQdP8jIxLRJC_yl`b5M_lSPdm?O`%uD(2heKOa%RIOM79J{Y+ zt;s=Gy|yD+JrzmY3;{1s_$ODsRB$jH?`YX6J9;G3jSJ&lMX4a<|4DT(Ee<*$CGi!|P0EP7Un`;oywOyz<0H7LOc!7^-xe)qKf2_ymc?n5&65rQnmWKRN z@|rhiM9tGi$zAHHEG$th6}CxiflYGH-V^diKDnBX+uurq&g2(=4EZS9^2OOvgTJJ9 zb=Asd6Km;`C0zZe^=M$Wu)R1VmG<#W>b~6Ecb87W9KgJ1r_ z{S_x&nJsrz5`f*xrPi8fCz!)Q%l99*_{HwBVSC|8F%RTQeci^9w8B z=i?f3dnfQf?diVud761I3Mil<^t0j(>fQmy&Y7L3gBLewG(V&>IRc{W97kYbxEb#8 zIRn}q(j>#3m;(f%%=?GT%Q;gti_dY0v`niuoBVS}Zym|au=niT52Tg9{@CB}eQhYwr5kc}eUM92OYay}AwM@xFyD_b>?Dkr9-sMiTeD*@+~5 z{CdrwnqP=6GBEsPrruvF`#L#}7#S>7d@07SPaw8;d>!Xxl5DZ2&k2NsuGUX|Sn-N}rm~y@I2_9T;WnSf3kfoL5(hR0J zuB~?$L&XkN_(9gyv-1Ogd4&O8Bl|~TX`r2dp$!WpQkKg)(xXs%_c*QJubd3%v$JoM zRS47zfv|3UIMPHg!tu~5!_MH9lj$kA)s7`l>KVuHy}-w-+21T?m}}~?(n8Tx1+JL6 z^CK(EwER8@PAc_sU}?3q;f?uSPd9yacz-03w_tv@C)m8xn54`B~P3JcV_De3ZP@ctR;$X0iOv_cg9P>%+ za#<2tU+2l$IGYg(Rtt)hU}_F#Z%?nlq;jp<*j5STM0#;DF_B%8>lsB!F&3?*EZXr|uS3D}TI{Vww z%!fI3_Hr3=CtUBES&!lrDy2-TP|@3C+_w%CjD$-d$;y6V0;ha7&(H9aQJVS2{+kzn z1J@j-QdrZ}F@WDv{JpuDMiNY55?4)C1L_K($rH4Sh}-8JYY-UR=Bqg?+8<2a%qckY zI5LUv17*ezsvPFv37zG}@#ZNMdvUAQUZNpJF9tJfIiFgEeCG5b|1F6*#&(qWwHKK= zMbK>w@VR8)Xa^Ll<#+7@)~5|Ek}qE~%5J17)9z3Vba(9q*C(&2nIxF6l6y+4bh3Vy z+D7e)lPaskuoC#z4xMrV^fqp!X~w$7{F;jwqvPP=d%&}rkM=^(pA>SrWNwv1T^r?= zM?Cupfpcp|DnXd z4H$PJ^EB^Y%D?L3im+5d@A{T?WMq53g2t!V1W!b!vQL6YfJg9p$0F`}?ocbgP!;ky zhwGGXoYj;N9Etyu@!SeT5}Vj{2xQ*;42z?2(0${=;y&K>2w#!GU2&s#O95s zWX$xF1aMY{r@xylE0(vRtZ9@Yk6bT*KY#mEq|=uMgQ0C>Mn&~O4I;jIrWNPVDJ>b4 zx)`dBgT%_;_^*@FV?_xD=Hm}>)ebJyl|%E&8$9*Y{3qucb0#t&wOZauDPDD74vN1_Zlu~R*Xy@ zn;8`Yyj}_EZ2Ta0s5c9W{I0usj$@$qbN&T&Jg+1>8Fd8W8EPc%jkjmHD|r0hEjsHt z-8St6JnBexy&fsvtmIaDz_nx9(Utdd>aOY!Y7c2)eEx(-JJYGfW9uU@AqHQUUaZ}! zgwK}!IO=rg#VE~~3(Vm!0%$ZpBI}83vY6W(RY=&v*MM7YYF&pbY9Q`Ufqr9m&;df- z`z2+`D=kDzuVG{4G{v#v5kgUqQr*EmOWku3J`}#DLc)}$z9udOZ2f(V=CPD=R>>2y|HZx7nRr} znUG+x5I>d%#!Y3EXbkD#Q_`_ZiO0CM?Lc5Erak*l3O(5peoxgt-xR_GU$C8vFxgJ^ zlTw@@s}J>@Wx}~>xhM<;|F>2@_;$DH({qr+RBzU=9J-i)`(HUethygo8IQsr8N@L4 ze|y|;^~N6p0P~|@6pYsIW?luAk_JhW+|8|1e;=e-Tgmqj>n-02D=H7&V9|s<@c~mF z`n+%z3m5zI`%#9L@d0!Z3Jq~AU9x7p_Dv1H_5YE)#Z`8MuMD0nOWQ#JmBb#M%|7+< z+3krrX}Jznnj|<;&wrU16Fx+>%5@_42d`IxR}Vxov&V9H%brc2vo?&XvXK6~{*n>1 znSWSQ4&QR)Nh+XXb953*Kua;tfyBQ5Go)PT{V3ys@lRyx+% zYdNVh=R#NO=B?jH6yW)|ls47;{TzLP4RmkBK~)Ki%hR(6zo!EBqklRIy?LOkSE@E< zMm(NyU!!s(FxUI_mZD6O_v0c`?cR#lEfyGggR@kh^8D6qyHQ)}sCt>w*^yGX@^4Vo zr~0*La+89NCp#0V3QYt1MtZNz^YyX4xD77!h|uSK)C3J;rArho6Z*kSuw+bv=F^?I zB0-Kswu^kYO}sg%OVKN?EiM03DozRik7>Q4KsN~CP|7H1eW~5JMpW6zNtW)Su*R4x zxv|+L|MnTEL)pC(+ZJ<1{#xtA?2xv{JK_W!o>s0FdNVK4fWI zkd4fyWIeeIJGy=^W4fZx8{bWG+3ij6S4h#j8YnALtjq94G#2VWda|y$WCt$<%hF%_ z4r@wxj((-DK7m}RM)E+zT+mk+nVlMDC1I;G)0-K zbG-bsE4`x1F7;q~J+oYm4I@|Q(Zr@kX|84EthPXY0;QW1#BJ)4>e!^Lt-fPozD(@g z*}>0Z?N6{YQ0=izaq8I(n#1;skk|E%auv*`f$FAM zzi3orI6IiruTHV+|9d@=O&)u)ZPV>+9C-LPs!1zRUmR9oO0M8c4V{q0*WJht-vu$@ zdYN$Qz{Zj_fHpHhHKrcUuKlo~hiB%O6{Ym}UGF7W zC|G%#<}}@U=5pXWXCM|Hesv;1w8|j8YHHaDFDjF=HLf}gi1jFH|6Z-`%%`)Nlc=o~ zgLA|?3}p8ddxDxE=*T24`%__dJ!9~u)bR1h7F&V5cXn@Q1c}Gz6Csq}CuHSyH4B7a zt?gqOqS^3(*j7&o!1R*jC1rV-P0L&;!Hq&F1?7(&3#}4jS0iVoN}gtendmPrYwpKd ztIwM~B{vFLtjJz68K=+)$sg)ezF!$^&t44}@f2lf=@@;ol=H#-%yY+BN5NR+CNRu# zuz4UT%bVYxChI~i5sV|n)-cuQe4`c zH-{b;Gci8uu=X#P6^XMBJ8bl+lb={|y=jvz=AeLmzY$=G84-D}VL72o295EnUPNX5 zvRPh{u?8cnQ1gHyUB$Rw{^(Q*Ei;^vi581gYmFy_8A_=TS=fn4F+j0R(U2)q z`}M`@;j%aBkg3puXyD}o*)lzWe0to2P)u}FE+Vr(e>r;{D90$mUu0g9J!3jQW z4vPZ8)l}JmRs%eAQpz2Z{ADGF5vfXAA|_aSiXcS#0N6vELFO2o!5-uHY;!kR-U=3w z-r3G4OY?Ay!f23{iDcuTZ)s&UQgB{le5V9aQc?IKzp36YANQAaZ=sV2Oml(g=ZD1n zh|75b=Jhhq+B+M;O#pQLe3zHrc<@Ex2buJCNlf=rtMJv)PEGNid#>iG@xng*pK{og6HQ&hK9XR{m*xO+)^{ zJF`mee3^o~q^{Y8UOWiYvU;73Np%Vb-C88-Nxx&3<+)U)XaR}k#E#wcsP#R%xM<7Q zkPUkxakl@gtJPU#;`a5`9*m*E9-}zuUe${p35Mocnthrb-jU2m=^K@8j8MG7D&?Ab ziMZ0bzK~*O^#t;6yO4a_%xFXQC+LuEKDpvd_xsG?HsMTA6ppYvxX3$=*`Ge&w8|;B zF&7myV^vlxlTLW>_!jGKhdbJySC8J3>AasZ%1Bh0!+&(xQ*A5j^!1c&zi#`Ab#De! z;1f%Gji?MSDb*uA9yYMMM{Y(YlCKAgnm%}7?(R_`Db`Nd1!;NQy$ zjrLu-5K!W))9EqDWulVbQm(?4)X9W`S7nzq?d5yB4_%k<9!A~3(OyZ7anLk>j4*sE;76Bw9MLroG3?9QsTG7l-Q@&(pj9C%>Qxj03MI|0y+-&U6$ zn^9lL%soUx7X;Y;2{MoZToc$9wnGjC#QH3EXU`!Oo!#6*g-h$W){3 zivcbt9n*QC;tX}wfp7=#4$Sj?=YK#tM~i33GD)_YG5Ic-m*eJFBnqKSm1v^=?L(7e zYWPOEFMup{IrTvc)0=_V5g-DPQnWq-h{gV$k}7UW{=TUCwMcq9C$YgBtIK!Ntb{p6 z;rR+*neDI=imMQk&)^U-w8(|?VY!>syZIh(V%2x$6hghUCAw~O$1|Qvk+)TA5q(I@ z37Ji}nx7H+KdTA(qsr`+bv4tCr8Yzc*;cnfQxGN=TsImtB%|$XElD8QGoQX1w~;D( zQ8Vi6Kw6ME#^&U83TwiYjYhw=c=gKkKi)N(BfyCdPp%>kCb(v0tte=(X_i;)ufc3= zF?;2fad6!f5wjs90q0YvY_%gXUFU{@fFSY+$?7(2C6F)yA6fa~)o7ZaV=c zsENN9Qb8d;X3gtn4_>lzV*RULD=AI%`|@oZT%hx<*j9jl_J$@ZPJPrqMM#ZU13mHb z2>FTfwj@QnzHE-O2_G{cIKFOtX3#ts?QP-KlcaX&lE9T1L4(ELCL|%JEz_M4Tq>R3f$A z!SicJD3HO5!QmCi%|<4Jb-#3HzHhj`h1G(yDoDSA0xK%uNgyTowc`Hn_`bQdtxY@(^mx zX3>jxll>z5=at}6qD-(u*juZPhzKRe$;$k>=}E0^J!0e7(76ZZyz>*5y_2x5D7kfO zA>Z3_-BUvj!6{&nNLv8bd8%B{${r{(0)6?|+O$=I)xE}bwe$YhQC-=CSu;;neq%1@ zN;J@$=~^iJ2f>j3-?YV@r@W)S;vKdPNI9EMy;s?+VaUT~TDqPwDIYg2XdV>V$@cOp zv?<8-?U!;Znm9O(+>;={cVXHj`5$TG^YB!>=h`vUe4zHq&+!w7zbcQI)+$epS!Z>l zQcYFJ%}Q_Dvv(Av)o;IH^zDt*cJ|)6_2*hO{+}rMZyRlVl}_$brOa`^p7?%>^ups%$%v|9((ROKXnk1Brv|a zxmj?1%fxfv6UP80aLMB$iH$NY4qyJk!R@07!f9dQRKwwxJ$j)kT~mcY$u@eifZP2$hhg1bPb#J$>5^R&7;o zzoxLD{K8XjFs<%2?I=vs>KkB^GVtt154g8~xwvlf(A8>d#K;z+G!A|M@QT;^N z_)tn$o$m49|Jz87rBP|Iv@CGXvDV%R?Sn|SpJ#~n?M&?$un(5{3bJF@o_+FD32pud z+gpE7TBt7P`*q#sLl&2}=z!nFvRwEEhVa4uGh2G-NJXH+Rn&E}o!yz4Y|AbIz!B?K z**~@r3wX_>Dn_n|{4+^B9CFfP859thbl+KD*`=7}51a1fCh4G`hl+{^1}bRp&^*F% zzZTpMZ4Qn7+*)fEJ07?t$t6!B|AnIC`zG+0<&C_Ck&Feo>^!!GaWx}nV}E5#+pkC< z#5haX0UmX|yuKt8bf|dyn0>6BEh`U7?A8{KeZ2X7VCSiM)rmq0-D&*zcgRzuKppz0 z5n8;42`6Knty{kJ4?!*P^dsW6C)pj_hrjcsN=9BZO*{UH-)f8|=l487PYk65sEB_! z7Ety`D>#}3QUA6L75lW5OWo4FVv^FNr=RwrR04&9Eigt1Mb7SBuOySFqy4v>|YH|@6%3US<_%ZXxLrd8XsF-UP3w*4;6 zzrw*~c}im>CM(UyZ@z;48T}WF9znMtNWm!@YL#t8q0oc>$HhBnS_s`!WobTmKqc}8 zDyFugZf>9Qcv_tR3u6ww&HeZKmmm}mXuGBIvZOq%^yyuPD$PcvA-13oAR$nq&}Jymz10Mh!r1 zEux=-c&^Ab1ibs(rnv4K>`ZM5CD_OSSPb_!Y79t0ul@9Jzs(0d$vHZDqVH2y_dvea zyhLVfSA!kk=LJ@-KYn{6((4XE`%_$3-W)VcQbpXTKHd=0Yu=W3O>q2bmW`H^K)QaH zmp5;kVrZsIv85|^0&)_nM_Qfzr0VFKL%6+#3MsrQ4y~VdRVd%CaK+WRxO?6u=R4NG zA7W+Ll*kzN2KaMrpzh7xBIQMq1z68PIJo`YG-)q`fV_eo$!vb>umOnO?GX0V+%IV! z7tzaCg)X)Tq@GY3r!z)|(Z%&^>D7DxrezJA6x*QlW0&cYLZ-B4s0qst6@BVlSKOTv z3$jTc@w8(f>29kjW$#S!73sS|OT!dg-wGPP z$krtZc8Z~4J`i1NME04GpfaZHw@C6G4bWtRCMqj}Ez;^Y&$Xw$dR2b|69as!;0{I! zmXg=*Y1vGYbA&=C?ET7kOG)c$+B{QIFSR(_4Vphl((7_7Sl2S0D^D#14l?1bknH{W zZOv|^KJZ+?oniIlA*;>Pl!6f-tbbzY7W+xEeG7BrNPQz`7p&L0Lp@f4TUD~i`zP(vAHA&8zpD!ABIrGzPhpyrz%aKq9rh>76# zRJy=~o)YU&u+Jtme{$M--z1&<#2ZlD-#0C1V8jq*_$A2b((^bfHmq+u!?+d?leCru z1*v3dgOt#@V1L+t_Xd`im2B+b$yW-X|p_8osqlh_ec=#me zGikQ$WjhU)%9(F(!zm(8ek|PD#|Ll54cS5u|I2H`Ejg>uVSQHZp@bKfg=@!L_7seo zJ@LCCTUs7~^SLc3#Egn%SL$SO(*}NA)a^dWnmE@M@ZNN&C_^5g6&rgG(pT? zq%F(*P0?nJj$EJD+_eAo_t-Dsz3MSHw75gu zaRJ%VEt4`c)aw~_7R2`AS4z5IvJx$-wYytNTC^$p=#SM2yY(+Y!=d~kSSS8tbKPzq zyHpB#;APyjcf_AgM)H3=#*ec~6SNOHXa<#+TK^I$4lR-2F6vc3>*LGeE=az?{+dRK zNt+qisb~hto&+19{bBHE3O#07i&mc;td@<5%+l~m{%v!o-a`wcLX#>e;1^Ywa30DM zn}*06-b{kEwp4^q?bgZ;{wyqzW8b$I8m6;e{XVongvp?ha|(85mXiL*yc;Q}9bEML z@xCl|W%7DeLN2gA3&o)81Dquaa}uFOf2;K>8OzTwFa>R3iKhEM#A@gyTFm)b9w|su z^+xwv$r{uCz;>bQJLXwE2VSwxi2QB4{6P{8vS+09^Nl#!q#)#+L`13c3A}%GjobUX?m`bE0CXu6u+bX3Hz^Nh5h&D z+pjDC1Gvfp3>dkL?2UNeNUBdkS(KqqBtOCtjbUFa*FxINjL#zz1$!w7j?@zmZfUKt zkEw^yh`ueVF6WJ|SlPd0%gR@AO54bbY&HM*%I^6J%L!oI3i96|k zfM<0#A&%2Yn;;Ldqnv-#|B>p+Tuk$H0I4%3X}UW#A-D6>3pB#MA!;58r6e`SOjEd} z_-smBPTnP^U44zaCxnGQ@J7#s`IVtEw=2UdJl6*fPy0m?S4C(Q;QE4rXoN*71VkL`t0N4?lHmbM5jj_I@gJLgU(%iK#NiO zqAT`SC08U@-$Yebra#E>Pkb--R99w8E-xQ2+0o45&8qBA+?BFqd6mx-9jK zbeu>!Y~etqGaS39U=Wh9dnbRcx=XPHmyrpTq1{*>KMx-gX5rEL1EE0P1uEEUmqx`X z;VaCF*R7}6CgkDNNkkrla<~|R4H~GB8*~1yTwV}irRtKc?v$Hz=ps^J}hm}P7K z_^>nT9c-z+QbLR5Yo}0hL=Mg3E5E7^TW!`UZa-m=#o9 z+^5+;Do*i=*3cNuYAi4!k-tFFGYaYiKl+q?RsVEoi?aU}n%J|QIQL^z1uA24d|gox zJAs7D5WCLR5?P-jAp9XAhBd<%UQtQJ)dA|?n|u^IW`@;RcFMKKF`FA$;y^J<;u7ID z*{@rW?FeeIR5^hlR)@a)1)GQau}BBW@ug!)yYoipDgwLhiB^1F!^XW2hQ7Z#=WKEt zPs;AmEieO>i!)v;vNco1Rlh#-*R=l0XFtXQ4CQX2;DK+^HQ4?uVtnh?7oYb=K7`J4 z^sFMgu(Tr8VSqtdhyKmCf0Lg8tKRoY0&%+M0AbaUP5H?DKMo}G^S_xq81XLHbL3i) z5m?9c{B@G^iU|+$SlOxX)RxkU%Dt)<+LXNP-~u4n+uP5+EY@?UjT^?xQ@CAcSi?s`ObgoNezZTp?iZyH)1_gT%!6I5dnc#@|HkaZco4 zg1&qqe@v+X5(Q_A-I@#@`{_0wj2Tq^lY4f-mvEYU*g)K#owy|KnOLA+XzTTbqYQc2 zJkeu@$=Lb4aR?(Oo4m(d_nf1|bV_-JO80>9tDa_QNym8Ww}_$*(DfNo=gsFn(Q4Kc z-rk>_cJu~ZxK1m|tEcn<3AJsLxQOE_q_ps)pTqc*805iH``6S;NHWjytd1#V+6%>o z7d@z$j$vZq3LbVYWq(sVuv@gNGU#YW&Ex;wxqCG1%u{Hm{X`p+8@A4L!T zZRC)+%x(Ykcjh%GsTdi!|6qfuW6d`iqzR**zIWW}4Y}ySs%9v>KPG>>ra>d6F*Z4b z9&DHQ*C+MdFkp0XgZ56`NiB+NxQhrQbPMz%olEjSUm0n>veOrBJ)-BkJq2; z7407=#n$(dOGlzCePM>;P3q+uhMyfz74r2MaZhWS0$R_8MJ#hxOdci$Tf0>3Yy^Jc zAYR|wFr}2JJh)7=Hz~n|tX@{l@Ekp^d4e3gTv*=DY(h{Li4QtUwI2gHUx{7?%=2Lw|i)+kugn<{12%mm^eiBb@gI8z-Hwie2W{L`17J0aWcwPr$xoNErH zkazOVMgItJUMBn}_j=k8{xtvFLVg3Rytgo5T1AN#SNF$)JY%1LzD(buw!W+OT(nXM z>eKh04amzWDx3SBQO$XXa8#02E}5N*dsf^tgU|!7k+@WB zO?UG-O3O_J4fc9PYX9-95}-1C&_E(V!0#ti(@4Vcd4v8gGN<76>5E(a3CZ?1w&@Da!(a1zV)o0L zhACMkUrgAQ3sdmBU~#b3#>ZvS9kws#oxD9Zmt4Z*+0dVN&e_KtN9HKLyHTNGbe z?5;UCWf9B#^lqahj*p%53s|k|($S~LnrKurFnHf5hbWZDLHz!SN^brmS(%-lZls2otK`^bp^GVxPYT4UL4CttypSJ zatEimkI?}0!BMeMyK#rK=|hvetwL{5+78ogoh)_U9Cw}g1XFJswq-6lz!fN^u`P)qsx;4>(q-V)chlrUiJS0l$bNGl!qFEcmpNSh%YNL0V*iU{}haPvh!df z+24>UXmrj|j`brJHgFF3-xj55fO+K4jYifc(YnvD@1`NHR02ElFdw)ZS9fa2`I>ZX z)u+ujZp97~doOKHZwt0WW4|>PvW_zi6T<-}qei~IH{^3v4?nd7o~&hVFDQ!OI2{t_ z{X+@FL#}&TWFPKO%QK3gJQ$-nNF<x3@^#&#is`|XHE&{TLs+w?_I}1X9~{&& zf7vt?WxkIj(d)LhA_$Ov;S!_2 zjz>=mLCs$`pUk=-5Su*M8{h2NP0a-wXTW}badua{KV%66dH(zQk(RUM6l~W`<-5@>-nZ_*FIbkl+QX7 z9CM2A5QP7e7kAkHfwkX?sQSr4GE*>XkEBl=Zf6=DGbx|cHzk+V&SS(3gKA)YT{+RTxvU9X7(kQAI%rOem^-}SMr z${bOKEc*G!dns&cUGEwOCf_DxLIPEV2vF#ywmTEq!J&gga6-oED0f=HL{*|!^vlum zO8OV_BhvY#lP`YD>h5rS4i%QO;6`e+^fDnJQ;SaWXbM|H)51nkeAJcY3k4!2Xd^|f z&;fr)K?1M&D6@x8>W2eo2*2-0Z zyI4U%tr19a=EvSIbV3bFR)fVqq~r;YS=2KZ5NA<&IOM0cE23=;{58^T$Yu98yad8J zu^SHTl=f_aR7D>xqCHa8T}}SC>=1K+V)kVHIVPBskCHP=V zFp+=a+x-J4^uBA3Hd`v8a}Li$o%16-JBYlXRed0 zlB-PFUYaATvQp{v3iW3{ITl1%*V)(ogiQLlx2)sr&*Uh-$}G3+G$%Uu);Xe>v%((V z)cp^@U8i~6J(k2>Qe~AlCmL-feT-NdqvX8qT{1j0p&jW5Q0?TA z3wag#v9wBYKPP;mBS&Vq&@^gPs8KRS^7Y*TLwb#0aO+S5IV|zzYG3vOsHUp6@lcSo zd~&H37gHnk;%@hDyI4L0QR&B50eNVsY<71xzm)2DS_y+$Npoxunt4v^vVn`N&00L< zsO|OYnsGlq(JERSfm{m{wl7z`Evp$f7YpH8(oZWd6%+N?;O$?G66H6$M`{I&%w`}W zY=IPvxZE`hi_S-a?nT$wqaNv;T?Te~k%t7=?iKJHQDuWt`-WR;H~6}~P6*RtpKkUi zn;yB`Q+q0W7!^ze>rPbH8wPi5X0@>ev%v7En*EV{ZVxHTzl39_Az<)Uzvy`7C2nH@ zwbUNN3KD_Je2lg}shQewM^C8z&GZaBP{%)h!V!eU{3r?uPYx}bJ<7?oC0OwkdpWHJ z>DVOhG$Qk_k8JS*>-bPDEo(YHXCeMXnTx=ksQoC$7pwuij6r@hj{AF?-8GF>Z>?K1 zM%DViI{(L;qrZpo(_}!Jz8uc4y2Iy+)fJCN8~^BM2GV?a}e=OU~TRc}1LSPq|bAi)}*agEy$mgBU$NDe62Gq_%Q9Ek(OYht1s5NL$*z}0^kPfvx*u{&Yz1X z$-EET5!nMKiWF>3wfaXjX#IDVryTMhUj`bDG)1L1P78}a0OQb}2V;5h+-2!{4!(KC zcVj+e8-TDxn1yTm1L8kZsU%e9QgVJ?C4rzcIItK>^_O2M06c-G6LLx5@3bD#14Rz? zf63(qgJxDapURv#mr@YVG-+M+DWW!6cRwq>N{DbNG%$P4&Zgmy2fh&;GZsv+G@wJU z<*@?4YOkk;64zN6nf|g*m;yOQdc*SlcK z`nuCMB8YE)EHtht2C8<1a+UoU+l!W#zz#LzE;X@BttsGKDso1I^5ZcFc2N$F$q~IL zVr>OMB_}6#^HLhk4t<^N<5i0GLUq1{E)>*NRtOZI?WB>S6-0i{-5vr7Vxgd|7Fi{kJ!Ele$2pc0VuPu!Cb| zblHB_+RHWqYH8mCu}$SCL3@Qtfb%h7p1X1YGF5|aYcP08ZP=AysN;OFQ`@K|#%o5D znCwEUf)Sq!r(!#+*1u;SDX))TX*n`79Hh=A8@{uA=Tny~B?0ZMlIa^cNjES#nfS0yo=OC?Lx8kBbYDEOoW zhUmbW+qh&|m@76(JCAQF31hS&u7R)vGmHJuuO1;r3ZCSm9dp^WzRmhSYWGYD_IOXW zUxYs3May_2nNIAurz{PzmmVc?fv<~?WZ=*oTROE4?>_iewZ!pd_Nf5ayR>z>dOSr&-%qWhIN&YmHw^pL8B9#=Cnt*R;TThbvCnVU z)#`yd`GY8)$$vrA^<}_2dZHslR3&xN@llK}c+ECJPT`VP|MbyqP_1d|Wyfk7^!;bx zpfJKxNG^=^Ub*{28X|@X%GmneCEc5AMF-w1H*J}pr>&9D4GSHy|FYc6c$i#>G#~$~ zv?x#S10o#6ywNo~H{UBBB`jOWU5(Dsg+TD!co(CFr|}-8?u|Tn@7C+&?4K*2gi}VU zT}C%Mv$&fIcMtuGc>~Cg-Dv#3s@8&wErMAOztQIH%Y2!z11-x;fc$6g`#k*YWqGnn z7#(x?LLvXJm9jEv<|dmLReY{ssI8sQtBs`rj;E72!U_0!8#?QCOX<|&NDoh!%cjf) z*dQkxZRlzZ9mwq4HSAezi$n@VfjC31O`BM# z+bVpV)z~u@(o9;E$k>4BmS0xg%G+BrFLdimKWAc}wqiGeaLDGj`vv3k#V0(W&qhFA zBC%UnV1&qH=b+acv@4>W=j3CSZ`SKfDaE6<0p0u-Ro^$a(V^ ze&h$~_^*0Gb6EkGLfml>=sW{o-%c6HsjxSEIu29j zn@;igh)Qizf0;L6dM3Qz|D&tBi=9-)!-1sGNpwCk1pjWK^TqlxH8mu*zkT^$|51mU zHBP8%RizuZxbNC!inh(m+}4c-hFX3IXZ|F1Pu9`k(vi%jyB2QZWKIfkhw~ml=GcBT z&z#M9oIEvPuo8Dy>6*RwnX7x1Z2edWjfQqn`)dPB%YAN9MRGQI8(Kz^2zD(GJwGRD zyS#8?(f2Z$Q68Ojs1Qv3i2ToYhAozi?i|X zMn_D@A4s85XOXPdyj4``OhqWjb}aRwu_2ZE{(yse&43v#$US*GMIH1pN#OiOAE#@i zu}6o-JIap#x{vGsA}w4n;n{G`+NUn}Dj9+iQG*z-jTyl-Ml`c8UC7k|f3dpu z@n93qSt*xsdq%0~lr*cKQ7@Fs{$ypuwe_1d(w}>VR5-sBFT1x|>*-qUOIMT_y5@|j z!w`LXu+Ng7)5Iu09IXKL+o&=CO`kg8dqn&>;P&m;Z(5vA^R6e*}n7;>#jPn_k)wv!3#9WU#Fa)xV@Kb3QyrlE2j3 zUT^cB{bXX=SL#VoUD@&ty*Qia(ci6 z$o0qO_7|$&km^WxFT}sz0t6<=s*irUsVp?g}ZXjhcBSMU} z+M1RJ@_tE>e~3K+pJ92x_>gV=9xvG}6HdfD>G*>&=dbazJzgXFD?fvX!3jD4ig%w( z-56x&Fi0VnA&@(GsOMZPVU4bAG?cG_K~L`qk}1qIlJ9t|iRW83IIj5aGV`VjCF&8z zZNQn<-xUS-mIZvp)YeI+B+V}AZa4N%m>X$^zR?lsps&naT77BM)eL9d38SiOTicl8 zu$et=!MD)@d+5&Ptd+;7yIHus4p~3{`5KI<;E0})7jiJL%5Qx7Y%)ag9mIX9+*(9^ zx;DMGCW5>!u->XItot1erz36qwz$-Kx+7Gn!FT|W>R70_T~uM!8Pz8au~ zYuOC&|FXDvkt#TyX8eDc`pU32x^8VKUZl7McXxu*7KapfcPs8tpv5T?B)ArLg1Z!V zcM{xP3KXflU!LbZ=ey3Y+1Ko>wb$&K%-*x)zG+dwo7&VfUD8Hr^U-*`O_ZL^&W>x4 zUWy{0{DH-(9mT4$1a=#`DDjcLb`%?-gymxZP~4R{Rl$<;AO{$d(1PQsHE;)_Po5|n5Qa1T$sxgi1K~GYIS~W?YTlPAE2g^JaSHX`u z@K94&Ft73LBFTAw;N(5(*{4=rQ zReOHg0{lnqrb>Rv#^d4^{l}5j!geW$qK>WdC+t(b8@0t@ND6YHMA!q_SKiFq8~HW0 z$|y6DIG?=n$u_%X1$I!vq&H`(uc*9|xMz07`%3m*lFYOfPn8j=${{wss@M9;7&baO z7^2Ne6ln!;{`pbuCRJyjd95FdAQuPfd%JB)(CuOXyEt3cpEwSUg5^3NUNVF75-`YL zS801FF!5URnb0)OJ*=7tom5C$E4SBTf!cHPDmYa9YR*BZy;Ci6umAx-|K-0d=wy7~ zdP-?$+ut@&X6Yu1q-<}VrFLQdg3Sm03jak=3AXpkc-ZgJs&gM@lwJ^H)zgsBkHmv@ z>xm}1c+X^D4H;{aI?xD;l@N*nkK0uS+{iFJ$Q_3z%rIZ|&vf`xt#%$%-BRmJNC>+n zk|$&{W=#iw%Sh$gtvG3caCwxrcdwFm^;6#v6Z_}h``}es;w7(Qi1PIO%&U%_c=mXm zEcq;3gTZ8A;IGBjd|u+yg%ZnTwga$h0L}yZsF15L)E#Gfi3@*-_fdPsq0H4;G96a= z39(jss*Ny_R3-{UfJ_C3*-B;D&Joe{(7)p8YaAhEe%L~}SsPi|fc(moh>q%AYPKF0E;mxEPx zc7SK}uoxwHJAYoY9~2IGA!8fcbqtYq19v+2cJ4Td?{#N_L1*NYr$v(hFFRzJ^lT@~ zX<K7tmFYnC@L|d{o#g*R=&1yt@@Fw#-G;4vy;3ZQQ<6 zK8|O?g%WzrY7rUroT`!fbE$>&fiDi=8MnVD6R@#5ztzKJp@+a5q`iaGa!k>St9k5=eR7xAvx`K-3xFb5o~) zqNq)kSYAP6gSHW9jyv#f_2@u(i~Wjf@Ickt)rX4=O-p$sy^-IsQ!DZd-5zapePUtT zIw37sO4p4LAoI4~)K2=ctrpYEX-EzIb z+-_YljYzR)sfg9w6V%huYJ4X!a>R!h?7Qh;@7$oOou0OkMYRZk?OF(|g>PdEu93&7 zGhkplukXUz^Xmx9eU-m4xwZ}*`}>xAXbrz-WN9b_2jjZf)TU~W4XmIi7xuJmoqZy& zW-IbmD+`=V*hK5m=_Ioz9Ifghjw;uIns(B1=|zyR4%N9^{H$Uyxgim;IBup=Bt!9_N}G%xkx=Ao#GNZF?-b5XHd&eM zHw(7%X1NgY7gSBDTchxNO5B(Teu!#8GGIbAmBAT&AOECY;_Y?qKOH%)KMFEv&%l;IK&*yc)B+B?e3 zbN@s*8l!ZNi~ zsXk0R8az%Y!1QpwN`h-Au)c=)5?S8rC-pN4^3S$p@2C}AaLRC;=BX{%yTHq|Gif!s z_yrV`#wjLzv+qi^T#PNINzMx(MWuHF!wDj&Ng`gR`o!9VZZ2rQEIxDCuU*8f+h&DM zOJFg7qAw?VRhZojKFd^gF67l{t3POI68YxvFvoTPGnv1q%lul|JgqUfd*l2*DuurV z#QkN$Ynkvb7@wR*OE1>^CbXOde9#rhe-0scO7$r&dR4U7g?2 zknFQNJnEnXe;>DDpJn!mX2z8CE#(R6iJ=p|vNH`Z`GbQ8bdLD`<$>G6lOgn-WVyn-`qiPTfX{BzUzQSUQaBbC6QcjiZcgT& z*waEbJNC~ytmhZ-#Y|$E-SrKWTi#9KJ>u(hrfnnUpL2Tc*2&)-sZy%x%bd6wYp{nK z!&jlP;vqO$)^5(o+>~n-%5*2rx)(HFc=SY#(MRrES4qcVvMj2y2EGRZa(?Y+8ZxKzH(H+VCK zfTLL;^b%>I^k1Z9IOP&U4aR&qCyH~)PMy!nYoW+Iv$*0f_*wL`W1cVe6FShq7&b=m)=X8D)Sus~$ur)QB}Ng$BD=I&m2Mw(N<2SHG9LjnZqhmm>BlLTFi6 zXCbE8Cl9)*7%CatMUjMo0D>yDpru*35e?Chob+c%eVSZakf4lSCNWiD&*d?Lr0y&1$B4UT$; z!jtNBidcy(aGz_so#p%1h%7zBOPrRsi9w(cAV9xcyV0&;GSC!Bu16~qWJL46Va=t8 zn!+WKsshhsb;aM-W9 zsnViSNR=7~k1}2Es88f?2T|j~@`S2Dm4%ZCISCi&%Em`REoRiHi;lJ-qYaMqvRI5s z9XSv3ja>@5HMnD&%vejKjv7OpzSK{Lp4L1PsLIGXXR$9+-|Ydu+Gce)adfR&?EvSA ztf_?aYR)Svylxl?W4)x7=+p6tXK3d7G|Q&GZq-c8f>rJNhIy&}^9sw7{PgB_EG4=& z*VuR=i2j&$x$V{)y*v@KuGf`OP;sNeq1y;oh&B|XA_i6lkY1Yu!U*ZFggm91Kw@1)7&gNnlCn?@vrQ)(5K8w$9WUEvuswyih&_Wm5mW+zsSx z4|{G>m;BOwoCDb`wcE#dR}y)AFi$- z?lz|H=Fg|NGzpm??uO2iah@Vz2J+%e*D&CyaL^j6sJX=Pp-Sj3tB?}#!xS3rxmN^r zJeawI_M!KQr7ZO8?V-(CN|5omJGhLLm|U3xt){^=2$F6do#wCyg2X_Ys=5(x|K(Vj zKmlpzOH-8=(M>FVQ_e#a51OK?1*3(_qn#jKKk~h4lgN_eS$k~9CYcJmgQz<|bxnjZ zcG?`vAE&sw_a8Wg4E&{K_0WIhn#^(W2IoL3LY?AFxZXEl$YkwabN7GTz|*3E6SR36 z19BfTx{o|Wn9fuVX93fC+;I0?>)8MwDq94}Pw2GEjD{&=Kb==@(VzFMs<&6?%6H@6 z)*#H-k_|n}+4Sw!opdtz?R@`Y%>GLxPFC;MGyG;2_T@saOgCGd?y>Dtr7P}Zd*Smh z^*^yo6K!4N*H;g^Q1SzNm?D#Fjmc%z6^SqtNql;f27Bnen)Of_`&N3Gv88Q6vC(r0twaz#m9@O>^V){xD~X76-e;~2Se+5)4@aC3T} z+LXkBKc9!AGYKOj3pKJYFP)~S+O7@1BrwF@XJx;;MphnIvdDMjQEAR4TNUkP+$7s> zn%qUlLu#5SQMh&Svqcw(&7n0X_Mu$o{7O$eg4S;(bRZPR8BmgFoK;2kvTT5#A9`fn@T4?rMWrU zrk~5pChlJCmsM6diy{*+h*KhEwS7#j9yh_Eb>BYiHR?T!<&sHkJPzHEmuMWt7ZEvL z7*FL@6Vov?)D2fz>CMLA-$RrcA)ytV2{AjEqVX`Rjh9AEPmbYnQ~Jf|RJl({L(`z; z_SO?eWUY@qQF}bqdMycMgFC^4sJ1h!rlCG9atvy<;@b3BJDcy5lAeALdWQVfS2(2D zS)l`V(%-*LErw(Rhiq78o#4Z;z2Ai%D+*%Iv;jG)fI^6c%FXUof0azmWl8 z(PkUJ2M3y?$SD$p!M2H{$E4?(Dc^@my>(JJy?kQr$-PrmN2<#_S_?+FT%3N)43A*G zuuXey1v*kY#XV=?Js>#ZkVeiJ#(i(ClXyLX)nmLO-(y!fWm06%Ac+{qVSlQ05JLy7 z)%2aM-Ax80iPBW_d#-A=h4aJ{jfi@-{(SypD@}_lx#Uyh_TGTtb%zp+ZidiAuLfKeK6T_Q^+(x>UXv^B9pj9)(D*~e&Nnk~@Ixk!-H zUMHjZdSyMq@a*S8D&?zp`#QFD@BXIm*p|!A?v-awp4%3P|ASUh zuV`PHw`$~ioz>;H_pjZ!7N-DIe8P=Ml(a!Z-mnQBZ-a(6I-sv)T6> zTo(>soys+*+MN}nAzk*Y}(;M!^kBXSUk_S#IqPAdaJ7|G0YhhH)NfjRtOGK^;#2h zYP}*=u5J+HINQ|DU<5b99grMrmohg$2n+LPn&#C;)}CNwX@JuY#mv|>C7T(6j_xrm z6@zCZejfd87I-4-3q3{q)`LzgRb3!>T1QOB!pe3JLrHCZx(B!L9j;ivUUdV<%SzM? z&q_{I2+}PoRLFmsQ!~X?xU^WWx8x>ZfpEuQxBj{B-3^1ntbWA1GkdXTGtrT7dur#@ zc-OXuVG4IA6i>ug$kAGRab0DhhtT!JYTkRKgdTlf(^r4=vgNzo1Odd_uc$Ec8-R#U zf=0DBQKJ*VKSY3fc(9Gy!hl%I7A^UMh`ZJT2P)%+?v>V9b$Y&eV%ud8yFki4L4&Y> z2W1XTYwLck(${SkSNn3WWPaf>trxcSwrypEWzcM_!a5`qFFgSTa;>_g%C^R?gcnX9lc}_`Umqq!n z$<0g<*yhM$t}Y%O?r3)hgc5Ngw$Cgpx4hO)F4?d;4syn{DO6G12teZNGwEe5V}wg$ zoO0^my1w(W)|xjLHv*T(XRE-YHTF^%fGA?P=pp?+tmPWctW}&j2fyx2|N2Xt9EJ@) zE4%72^zH&#R_T5}rtBs7EQMrvnTA3^$a_tN4in&fZcd&q4aW7~_C1hHxJH2r_ z>_1!UhvpDIu^;z@Q&%2+s5qBQaLPhz4K@w-^{M6_Ii}kPEejiXykQVAa#B;<|6F0; zE;BkR#YrR3uGzTrw>z1|_~S&j(a(X2lN>E;Jg+z8Pm^A7J~3=JSfp-qCMUQH)BNFn zYg&0+w=o$^XqcQLv+7HV$zv+-6m-e`7g}1Dh#C64UkILYpLE2^Yi$>qWbp_F!cKY> z9j2_v<{h7;LO#fvDyJrYz7%QF>#lMSoZD8L{vpTCLTvw^e@WT@@3zUO7#5=_xOrC6 ztV~)kQc0ey67y#5n4~Uosa%sZbo}{y@^H65E*_V^@_J z+r!!3klNCUQL0=P%aYS%B16v;(`G0Qgw9u!95PduE0l&?x!-88~wWO5VqN zxLnQQj<=M-%GWC+$onuNysH!gGdgxtfzTLE5Nz zf!PjsqGGG78aaz2jC8o;wiZ%3`d)61c;$9~Dy=qU4C3XUk?NhufXtzz zLx*}?m|FSAJKU=D#?JI?3v4S#hvSyI+LyGdpiia42naw^fRPtD%)56o=fX^YyeL1m zjL#Z@e)*0vKhV5Z&A(DE*5r1jg?GQ9l}o52w3b1S8ZF^I4yP9KX`F+_+H9X3eP5M} zs9VM0xR@VscGP(g=iuv8#ka6H_*H3Ds3nV>a^*hmtmORDiJ`Er#?UQ=)gCiA-V%J+ zhdhT~N!;YI(5auCb&%qMUaj|{BC@n7)SR5VnIQ3=65wsDn=w>i&6<33NN}5gTq{zK zrneiLNWs~tny)=EW^a=*pNLT|H&RUM+#c^!>osUhZt2?rMMebk)&};cNaN7MvW>(m z4iY87@k#rzP#2LC*Gi#=vxtr^*hr^6fz{13GqVMuoj-C3AO{J(f7W)Gg`Zm3M;;Uh zTmP1cekq<})zN2dG0Y(0Ol`TPbBmenR8AKfVA^E2RQ0;nNU(D)%L{iX3&*QrmYa|) z2TAo#C^XQgD7$_*x)(Cbn+3&n=v7r(9m?>q1EQp^!*QFX9vX_H<~5|I+la8^>I%uQ zA+hhVI&`~bC_dsCs9U`i4d6Zy#hcGs#pUR^B4tt!f%nicvKW6tlIGHS#G<t`JsYGGglP?}~EKpp3Huabc-el!5w4@7S+>}sd+`j_?SC?E^#)G*GE8LQ%);?bC zOuMe+P*vIj=a(wR7>7J!+bI3%B4^ws0B*YD^1@QK+@O!-b2fOAVaPO93yrl&%aoa? z$2eq*ECnvdDpo`EkQ&m4YY)h?5we6^lMBQ@8TZWL?5OO z3_mp)+jurP7DA88+4|)TAXE{~PMS|+{4{lGNBLXYca;4NZ@i>&xo4d{i0-Q+v{Yi3 z%^Gfe9Q+BSW)Q z;lU{rwA?+_;gL!}J(q^iTb2Yes@Ci4((AzZ5JJ_2ut)V<@=a}{F;MOt%>M$pB?fD& zsNu9J*>70M9o7yznpMrsF&t26PSnM~gA8T+{T9m~R*cc4WZQKQ%(cav!dg=lxWg`R zamf17Greb+iR7C%p{6+^bv~oyejMuY;nCQbBFn9+w0Y@HSLc=*S}yW#tGs-c+S{e$ za^zvdKiXnNb=>K0%++s=8dh$QhbLa9SyxWHj28)=0=TFx1Js!~$xALObEnB1-cgI_ zX78*-NyyH`aN-T;;TGgM*UB1Lk~$%;eyZVhGM9&w<87s}q|oAzS<~33&A$q`BRH=( zJr4U6#fRX~>+AjObzSMIRjc8sPx5f5@KT)-M`w=1X;)rU3CSHYBM)@$bM2j~LjJla zbc&29e!kN2-~D;W-+Oz8+WJym9Z#dWka`5!am3}d4gyWFQB9)_SKN@`oqME3@ohrfsF(FPW2<#y9*(=l?CsWST* zMl~Hnotw5KmW5es!nnk`X&tcVJ9K$~?8ZfD;R?(2BAha*IqA^wKXZfs#DM4bNG~c~o(&C$ONJC% zw0=D!A|-)^-yF${J7e=&JoVKmp}I2+Uor!?NlZ$S>%(U&b)_w@gLLf@-km%(HM4D| zxLdnWpSkHduvNl|RnrEp{d<1G3k|aK*>{o~k#iMHi5|nyF3aY0jf_s@R1>_Cr%Bh8 zfa{It6WLEwt~RWKxtP5>c+tJxEI(ZXoJ{P$>S};=cxhbrhIkOJe4UK`Vra2cRW|8`RYRve*gXHq{r?2MK`k@xvY z-?5s*$u>yvomE=u%shOuc1}p8;e#N7FFjMkXjbEQL2RX#ZgEb7X`6esQg5|amGv-v z+304WDg!p*3g%3Jr zDtkHpr&9b63p)wBq~3;Awb0_~v;@3}iHjM>*1@Jc$$@Qcc~$!bscZUmB|3y#$`I?I zBJapC_msN3eWNqC%< zVQousX(hiByjJS}YEcQd<&YL{nd+g%i*J~zF3<$|65Q#UCQC%J$zL-}p$ZdU{4Fi0 z9Wtq|ZY@Gib>v28{H;`>xhiu|zByd}bA%8Ke7 zK%CKnz)`Phj@BIyE+aXr7t$ypH-i7gq|C`(KWLDjwSZYi{LIYx-mZxKjB}lpD6<(o z>Z5!@Ax~*(VYQ2?uKZJ`iOC!sd=S=NS6p~OGgb1&(k3*)=^j4UUf}LZVj8?#Tqv&0 zQRLFbObVhh(9ZGI{-B`cOy#zcv#VN^fW62Us&xk#1dq|t_~<2&MKwo{=8kaNf8?&z zwnQaoq{F5h=bjJDBdj#nDLn(1vh)4MqcB<3OP7L*AW@6+5C@0%|JqogMS)ByC-^c- z7)jgugq+K|SFN@Q8V1I}PT}#6!5sP$BrLZIW$BPMw9*jm>`+c}*Ntg$|BTN{yRKCv z3>7IUEbm5*-~s9E^W%UYqWFs9mhazd3O4!Ha?^=kbYQ1+hxK|k`Je@D5;iZY##sE2 zXQFZkH@>2_>->4c#$g_+qt%achOX2Fvg0{gLd&QssVMU)b99sti~X4n3D^>C-7qnw z3Yij_LQyi2M4%mVLu)kTmrW(<;uS9hJ>d!a5=*`}{FVvf1?p0>T? z>)e6&r6xqWMl4`O+uQ9){xvm${E096ipTvGqE7Y8ugBI4cla=>I=+S{InmOouHEZ| z2>ZraW@U3d#=?l)6)p4g)C#ZQ z-gu-#ry_xAv*R^+0hAuv!e4#hmWLq04`% z#wFq`&9+x!OpFKmG>b@CzI$BAIs6JAsTMFS#sinM)WPtxhls5?;(5sTg6dUhP69pL z;=D@~9`h}`%XMya-{SZY8yPdkxJz}ksTfcmA+2Hq@(5Th$Epnn>&8(uR^Tp4Yx$RO z9^X55N~0~fF7u^x!H;N}EScI|5&z{*{*Re?&Czj)qIVNG`neA?Ck^cDWN53$SdM$hr!Hmj2_TNti0U}nZ^?+eKKn+m7f(Q?PRz>-e>$N2Xa3(E&w`cN;q>*P-AV@j3e;^i z;s0!S%;5m2Ob4p7d-65%aO>QCUKK|=f8qg70RlE#?*$r7$`nAHe$eshs8hrv`Qk`} zy*M2vVK06z)4bSg)aa{^o9KAWYih!6CoG>$W4WW?5D*;-LVLXuzI&`< zZQK@Xu^kv%r?sc-JuyvkfmQRF9n&8VZB&K_Nb*6YBQn<0$6n{@iWwUfHzmahJ4ER^ zsmLO|a6vL!=@*gv!lm0>ylQA>?k*VDAvFYjXz^7=j#zQbRH9&0Mn^$AeC8}|tt!kY zHPuibJB%a#eX`n&f|kj&Z)lHz!0z5*rdMvC65f=vv$HND!^;2OHXdgdOT;w`4F1Vh zSrk}_#eL9f_)g@MWkNfhMGIfAD7EFu#^t*OL9+c<&{7&`HMYX0ph%swq_bNe*Ht8)tBcc#$ zVuV6f&B17I1!A-x=oADefkjCbMJCicWUk=_m3pYuP%2{<;f6&Ou>b<~=8%t2SqSCM zV)pkX6yXqY5)6U+2RVEf1Mc08W}3UztKUZ1Kv}>V(jnP{Z=VO4~KXv8s!KA+^nXv0-q{v2VCJf&a4DS9;4)*anY+JQP@3Z`5?oM27)@@Tn!7sY>vdryNsc!h?$X8n zEBO9GpP^zJz0Nf`K`$K%OiV7{MM~9~Faa3?!_J8JjaA0ic#2}hZcpWkMG4#2+!~jo zLYU5$JVIAtUxeiJ;4pn$_S7mH#7}NmK)9r)A(z||{pf#j zD{0X!z}MM|I5Q4SpTxDQHe8D;J9vDJ9*^OcwrJ?=n$csXSoQ8rQF~pXDe-yidNs4} z2IPgRli{5?&zLrDzF||+MPoyXDVJV=)QD-aYV}hT35ayL3dKw&2$$83QOVAMSYu`KFE}rAu zX?GImQ90&riI3q*)|>NK$&~rig(}D)N!(WQ_g zi<${G)v*)H#pVt~LNBghA)N16x+ne-w&)j)(#+0rQ>Db7dlEY9g2l2av5KGpS0rM; zi6A_C|AMpC`|^Y5O}jkRqOLr0a$$cR5GduVZGAD#EZWn!DB>DvSXFv4&Tb(8V*$8x zDPFa$#p%r~2j_SuAS)z#2ZQc&}6X6VleKes^@o6N4^ zcrDUs(7_n*=m2xebZpB~*9FNFFItgY&St-3v@4*-5V(B!v5IyU#aN@_SP$dp9Ax4} z2Zjid0eoOh{w5DP4=gGQ7~@u43YOOMR?PxGS;SOMviDIc`@P)!;*7hSp1k-ms|4r5 zM?%|C%Ko&OHr`fqmSKA^tS}pD{Fpbyx1PQ*S^&mT_p>&+Eco5AWad6KCpy$2ueNp= zaF@Tsa+vUDG&UY7nJ5m~2lQJ^TXBgkuUA(c#KonvM7i|7_XvJ$tk^jkAEzqtrli*9 zrxAbglWdrY5VC6`mro4vutql?C{GY)I1aBi(F9li~PKi$KMam(tYjDm)YgR;#I9w-(YB*0}orNHXG6OV^wcf8Db zNseI!QG!{h!zMIZhAc0UC!DcH{Iw>xJP0?UPRi8}+J4bl%Z6h9Dd!ePyeCwvL z^jliprfgSXSw+D|d6821c0sR6Z{Y7QWwY0>8$o&44p4a0ZVm-Dhuo$HuQ_oF?Mdy} z2s#7xrEY$#kSZI_0W#w(vodMcH9voN@q*Yh3w=LThb=8YvCC5IaUVk8zRm zI&0$)Px}1vgw3YYrEY)}XAE6(mf5-Ihy^kR=-Q;8e&09!#K{pXAh9)G~A?3zL}S9(m3&wxU`HFhz&)2>KM7B#-*qMHA=eYWNBf`D!2JNaVTi?}6NZ z>p4p`^2a;Jr>}=!`8rg3^x9GMK>tZLc$eJnU+m83o8oy&RBv*8fTJ+ zM^oWWbpr90qBL7GF9^7j{IM(BD@9lAwnPcaKXwY?V?o3hwbG<7ld}wb?+c+cS^140 zR=YTj-lJtux~-hC3ePaFz%+{P>IXRXWcMR1G9E=g*?pSaM*R9INJ=o+_S@K%jg6nc z<^Ie7LSKl*6F-oo@7~Vkj~o>MpSUzhpTBfRF7P)k@3UDXUeQ^mqKp! z%us){A>6o>0n7sAi_))ejq%}M=nVTto5O$+VvVAktDKp_rgQ_6C*Sb|b=CE`jRjKp z51YeNpO$={^3<4)#@TS4t)_8Nh0JU6bfvjB#>UQ##;^6nslJbEsm)g5;_g$uBW<;A z%K6wtqRLcHp!1B{zlzan+jXe5mnd)->nEU(I#XSiIUZj!Kb@4cZ|S?{y!t6EU-5kn zL^+UmY(AI0ajtQZui zCCjR8KJq_Wpgv=yaA-9r;%}%-3m^*LXNEeqOAbpGWEa)%b!r1Dn}%2mFEZoK0K`jI zJV@(?Pfx1C?B zImsvVJ-`VpO?)dqVOhP-(hfVx4}{v|R15+}vdVym)hs&;7Sq7MF=0>W4H)b0wb_bAN{bs=WaEbXhs~>Fc4pg)xPHVe8r3Ei>5(ulQj582p5ii;e zd;kZvEWBk5uh|2F12Q1)33-R}lWMGXUXUGX5eGe|IL}isw^(fjUHDQw<))gYpRB@# z9b54itA$3^jt*rcZ1emHN@oC3B3I3~uY>|u?q1pN#MjoC@sip*`dfK6+gVcm|L6)) zeTXMQj{_bJy+N;ZV+IkdZ4!;lR9X3OelRGxdkbtJ?UGQU`JJjG9s_;#>M_nUE`+A& z8-88okQp^wlL6OCs0B}jhwG7PKZkKVU+dar->wVto^lhihsB(0XX!V5L{*QXWQUng z*QSNobgb#HM3(RXr(yKiGjn`*I}#?aaX*qIcCqR-FZIl!iv8FdPlOwYYHoa9R7LgE z#O!gyN7X}o?Yx|bKeE;3YtL1BM}k*O>k?ac#o>!Og^+jChb;l_(9V39A$Eq+2ILtB z!1N1=1v4dZhh*1jyrYBNou_?tP%c+X`X?Inq_@;)aDR`}B5(|cFvJ9Ja6y-4TtbO1 zPsE33<2;O#J9Fc#Biu39&t`Nj>dm^3r;b1o9gUmSrLQ-~bRUc3LK$`N`5{w>sn3gf7iMft|yeksOSGh#deZ)^XzbK_eYEyjdV z@p+x`_w87|lzH^m6!GP0<$ra8Xc4MQ{?)MzF7^J*I;=qWiLPIkKSh!vB@gy%cET*c z(C<*O|3~^T9Pm4LLTa?P>x&f8W1VC;iNWV>#BueF)RyV>^>6u6 zv6K7@FAQw1DeLYUiM+oVhl~?l9osw4ARA!*_pgzY&nKB{Y>CDIy#kK>$zRfE4YU!M%soywHdjY1(M{^BPZri2RtS*A(Cki(TNO zH122LxK%|9OXA2hl1x{(%h9 zlikhpA*QM}V+>PGf5qe+hC(+#T&~AI=;VD&$|!@C2;R9a+P>+KR%jgiuOV~Ax+6D! zKE{8^SjXm=cdlOAf_T)EYpVXe2x1|&<=YLad+lCC?`p0eh7|F2S!#E$-& zlGsV~FYXKT7Q{Tc&i^m&r+-^D5Q1PS;&3$F*TT7e=skqj%B*AaqwY@s9m8fW?$jaE zVz*GC3B0pfly}PfOo`e}`Hy|PV=Jndz3DMgcnHP*S2!>1+t?Wg4*TtbC*?sr=E?sk z<|e|S5@K7q{rx`@2*vjEu1_WiqnH?8j9AD;9W?8RZfu;^)ucQoe+VB__kWY`+VwwDPA;cL!K5@Lo%e(35 zRY2T!+oJSlKKHp=i~R^)Az@(;Drs3R{zc&oZZGGZM+n!>Vtqs&rU@0|wS|l+gY=(u z+}F0QHeTMIww5lqh?bkxM_hgpAv!*~e_E1~yb6xa-nO2+3eJ|^wsN-CZZ@{OA8cLi zy&dQTghhmS)#wDJrT<6#wNgxOdVr3$AL-~9xAFX>wE977T;q^>^dw zWI`FGHMI9~XvFez5mjjdD=yv&>hgI!Q0rQ}mEf}lln1`E6VYbU)r34UQN=tp`?AGr z+UrNLN5AXq&F!AYygQ@<*3zn$Wj<^q@Jhj~O8hV>39(fP781&9x>p290s*x=+!FK{ zJCG4jz0n5N@3?$3j3mb%h7S{cd^i7z;a)w(MS4deiourJ;+ZSq0j&}_`S6n>H=s0) zB}$X%{1(-tRjA=(e$R2xkr-^~HCQjSiQPU=rkL;6F;{<;B2ARBQq*s`GVMXse0aTd zqC#{3_Xcsb=EO(jcc&~}@7Z}r*WcK8O0$B(?p`5{c`r+tyx;*+anTn`nU*^hdW>{k z`!)_~GTDT5;{P9e{{a=%v+RMwA~^^Hl2kw#BnS-55C*dsU(if1E{iS1~QTfXvfrKK{LkA6JizmgVFteMzV*Ldgs zt7z$Or1rK_L#HK3u6WR<)vn~`G{E+Srs0*$44#dsS=|SpE@CWNs=K(9=y_a(-UU@u zG(SHtY4xO|O80}vN(_1N$;pEHDwmFk8B@o1{0}qUU3oadp7!FI@JPm)DAgC`eo~Bm zCX7q7o*w6q*WC4bLVM$FS(0k1UhnuPt|kK4Y+4=bb)AEkF|8VcQZ0FTW@$KSt%T{k zGy7(8N%wte*r%O!p!;gq9PHk0LjEbC?%u9%9reU3i#olMjS2dxk3#O4e=&7RD6+d$ zKWDgqf9!tt9vp5{ipZ-cAp0*v_P>!93?i&%W*oS(Kb`umwCIO@63K+HSVottOzBKE z`^!vE(BtNpUUGnh`rardo>FvRxRD4NRo_5U0&)B_W+JFGSrDnAH2F>L0sLiI zG$&PXpmrQj@;F^bA%Bf`5noN3B6c$NK74;8 ziphpBzqBZw{`ys&9tIEM6d&sz_Pm4V2q{VvrX-i(7xqh1nD}z^22Szpha7&R$Uw;g zRXC<3rX6&b#p^N6R|SGwTINztWTGKP((Jbs-;&-9a?&EBiSM1#NK`;C$ne!i7@CZu7d*q2&m54)#xMU>aLf}fR%1c2G0S;ksH4l|zRLgQW2)_q% zJk0u#h--!AspYuk{pF|1^UDpXu9?fvK;>^XDDwlak(F|O0k)+ce579r*poz3s(`7m&QJx)2igG;-ov?c=xofu-?hA*g;M1 z+o7kNb6Ud1Nrw0120~`7$e)4=h!DoqRugdTX($9 znD>qAph}+81jz*bBANRm#Q|au?Q{5Pfs1Fm@a!ui&6q5s&v%(hqQ75TK6bP>fBMNc zu1iPPnb*bEpZG_~hx#|5!zwO?)X>)R*zzR6?uB=T6Y``P7G=Fj=}YBG6*dSv+nJ$| zDv>IXI+~hm7?W|yyeyMA_ts~Z&kR|wu%w^8+AZ3IKVLHSE_M4<*Twr${d{i4#NAF- z@1l!Y7yZ|+tR*c_FyxWnBDV^}39M)M9{kV@VL&777gcG&V9R)iA?*4I1`Y-jQQ}Ca zD6vR#WT#`ISV&Y&Bw?h6SbZKc@A0dwyfN2TUsW7w^277(+$2U<-mCS5Pv*R{?HDgA z(PpL*Bwiq~%NOWK=&`e25NR%_(V>&BQH0LMbD_$d^D9-0qdam@GRa)w~`vt^Z zab0I7wI+|qyoM_naCC4-&h)N6UU69pT@_z&orcYI_IQ6<%r?1cal)`JNG&F2lf}MJE&-~jj26QCR4Fd7mt=xQc-Td=^|^zaqpD-sq?pGZ{KH& zQIAV9Pa;dYaA)M_^i|??!O|D*&Wk(3GIv<Fm#l8&m5x>A76IW~y9v+xb-LeSO&4;|GR3+>*L7oYj17Iy1gJ z#==|?fD0C#7Gu5tR;1=AS3C`FFyT8QO!3S)Lpj6CZ5Q?YtP)0~J$08&mszvrBvQWT zK%b($D>C2By`$j1oboPBESAMuMNl!D!S>05OZG)q*?G38`!7z37#`Hmd}^T(6W?t} z+RXb@0^QRqr9&4wQF*WO>Fc+zZ@nIx_nZ$r+Z;JVPf&^&B4KXOe7$2up)vom%0dwf;e`ShW{bDooQ*7DYYpT6h4u<4XD zap=yOFQ0FpZxNBRZEdcfupcSTN7(lF;@HG`_pGW_MARK1Ah+vQ?X>9-7rncpvF|a? z+3yeX9v*vm^WnEgmXDevWFpcc86vMmE=HM0HAJ6`ei6eM6B4r$i;ZoKQ;f@rXO9n0 zAV_da7<{b%xatY=$T`%ZkiCm>ryhljE5)m1~*XlV_Os@s-M} zH?L2;&d%q}Pby$3h$y5fyir6_{UEp;!rYHdcL&(jmewOWd>zUK*c3ZjEqF&U>Nv*|kEo*>%EoIrSp-c^^bSy#6Tuv8X|+ zp|nx1v9d|Isis-I`Qs;?W>=!bl`UccS1VDyBNCSyN`DR zPd)Y&_R96X@6+k~+;7%DI^aC;?Tg>wfx+;hqeD-J`G*U>Dt!Gga(3j)sKe;$Sim^t zc;p1Yh7Gp?|Wo6c7~<<gCmY_~+YN^hzwnS1xqU z674VRWUgjR^k7(+@93#UX4rUKkohZ zH~PJiX?#9^FR`!V-m8iyuLcp)*N#8E&WK`no`43RzM2wwT|9XlU$e}RnCjfa%w?I$iMaRr#g!p^W3V38^wQtSJcfOFJOG10)F4Y zxb(*!Z7&Ne2%oRNo-Da~`=WomTj8}RpIL6+Tbd%LvYsaKCeeIPYS4 zsD^`s5W#o$4U#Ti!5MPCnzyf3!1tznvtnoZhvZJ36_t9NMY04;u`1=GdM@SskDz{G$mwSi39Y2U- z{C2(7Mh#}{H8p+WM!C|{-XOfoH^nh`gleC8ljU3Hq*pIzw4rCI8XS6>x_RmCK4GdV zEuQo;XIReIska;`8q$$TxMLwFkI^$ZPTQ}dRC3GOu;lQ`;X-n|sIRth-g2G&ITu}T z>rvRW>bW>_`p_#cWWE%lZB>1mCThMW`%tm63_mnO=KVpeUqPsb5``SW~bVqj%b!^lIRHU zmVHGU6TW;z(i9)gSKroXp$oq3w|{@PN+jzzK5>y@#V5mF5{ziSDRCL2d1W$NrtI9X zs}vC#+)qqEv$~98tT{b-BW-9lM!JN~i&ro+XlYmQt`f zaRqh@wl9J7aB^c5k?IvBz3S*UR86WsHn4n9r+h_ADYaOd)M8{p_*$Xuy`gs9+*MSK z=i30KDO>@b5;*-ee5k^lC#lns&>j?lN9>X7RZ2~km?nl_6eiN+sq@(-7sx6dxCAIF zwXfp4GhH-vH}+G^bL78p1#vVU2}A7{4%7=RIKYtsL<`sm?El{b0!>L%$TC+>OvocpLXtD ztXy(EX4)dvc=T{d(!3-@tE<}Dd-3kOvEJ{vg#6WGZcI$vJj;AZmII3=NSRNTAWxthAK?M8UjgqpQkQriF%p?6t?jS~&US(=AU4(WQ~%J-l;`YwIxM%Xf^ zS79F>>F+NYQe#3UBRm5#c3n8yViGox#<+q z%r8y~l=l%m;Cg3v%*dz$$9dx0!Kr3ha)OiaLHcP(5j8V`(eSB*?elFeJ|mo1ySU9YeB=@za+CH6zJjKQ+!$aV>F;Zd@7E!ZIxeVQ4ZU_iYQXhS$-!22 zhc+I&0F$*9>p9Ux^3LMeMEP#si!G?-qfhjXQdf9ZUagtXK4nK#BVX2ToacKo<)Qg7 zo)nSHl+T4jP^H2pn&%wR!p!&sWwCfQ!#L89vwd)t1eG-5<|UeNIedouSt-dOp%;>G znOc!nB$s5)NwiCPTSmC7D4uW^5Si>)mFzC=p0#evF1o%hd!+f*M5<1jla;6*uOHgb zxv9?ol|X$>W4-K);N<(~lNPS0yuT&n-jrcndy}mjLh_Z_oSxpGocsCx&-(mwZ~}Bf zWSB4W)H@Z0&r+oOpYtbV^qoLn|Hjd%8FH6S?vBl8`gl{@Md{V zDT3{Qh)sK?yMN-mu59Bgv#1Wu{!jZ@L~gN!vrU(y95ueJ70n76hsjXZT5!;;JwryV zvlbSYdcAmqOLZv6mPh-|M3GXZ>*;`z9?>Epe|GW=>-|uXPbLG|YtJ+=8N=+S;H;Uj znJm33i#h|g0Nby8=)S{W##=YtJW`KJ#;_ztT!0Hnc-AC=#m>^XMAYj`>~?6 zXR&Orl(3}oZx1qFmFe_CucWINTRb_(%(qk#`k7Ycoy>uhW}w zX$LmA(_zrT$29yLC~eT{0qqlkR3`|+tTbmY&JA#wPdw(Bx@eqzKO<8r;Tk(v=r>El zriY{!m&OlssoXs{>6|_=adC>Km8F8JG~KKw<^2=bEmsx>C+TRr3#P;MH&$ebztB+>Hy+4*7EwXV(z!o}%T^wWZ16>EHvhHn)uKG6P|m#bB8*J*@O^cDAdeqxigQPigbG+K@DMqifujQiT3B2Meud0-eB4OpXNo_f! z3W=PfJO(uFn{mD>ibH3aZ#8wu|QXYz=ff&)5>uVl80^W#|QGYyRk&Q zS>3ZvMl$2`Y+~uBwOv1Gn;4){2Ty+p{Kk2Nt(1_gt0(YG{^TW#hV|H`w|yE~cz2K~ zwj)NvoP zqcCC?NrH=(W5l6Yw`8gPrye8MAfx-w%{FL2?4!$L$E(l!-dI04XpTEL!uQ2I^1Z{6 zo2|SjTEnJ4$Lr{3W|!T1ABZ5#JneDw67f6woKgLx3uy&eJte4U824ym>x;fI8ydps z%xjm9ml3E6(u8>wAEJYNeEl__3?<%wC(Ea{&YD#Cn7p&&;G@APnUsgYSgP(L1Mu$a zw^jU0Hiy%$Tni}(iQwN{@$n|Yo$@u|P3iRUD{O8Uu1^fu1d()jN;(AM*J6@1kGc)*%C zgDaizyT+iIZBPEUVn}JpVyhXU%`FB}n&$-Sk_Y1q^p0!ZYrd4m$dq;Y^MnCR{n|TP ztptzfkIWCMWXf}nzK5vp*Icw$n9iZ6G9@JrkT<_`(#yu#1wtOZM2yeM+BVY5y-DHBEm^rBy6Ahh1kYAS^E|T>662CmI z9e3w@P1ns+d`|5tDizu!5AO+zo_#C$p7L^srlI!CtB?=_ZSB696sM2IqEA+n_Tlbh z{TN}l=gD38pPbwgA_&C4IJv9pUDP~y{%|*2oBON7xk8R7noWh@-S>g&pQQ|>ozJ3X z^(lR1brudGp?pfUxqVbM-64%%#4(?DIGtwCZEqUM>$v1IH{a1;C-NW1& ztq8|lqH8632fO6Hh~=+VtxkWtR6OK)X)>QDfy~q(-1zp((QL-!$8Viw2rpoWU}?6j zH@aggI?TBMBd9r}PpchTei$ukKs;GHzqtx3K0+ zgbj{&Fe8~MZXfO=n#eb?$mhCT{dfJ}osBI2;vj3zqRg6P@@$yt&@DO_ldoE*UAo7L zn(ljHW6u|yo$Wq%!%*~mxYW!8&oocoGk1puEGHRmV4Y&@Kma>6w6s8>j<<7@u!9{3iQs$`|=9MYqD>Sv&Nq`9IOu9?y; zIB~?@C;H5tT(DXkdfSA+=l++~f_)QSf#UdFZdAH6NwM0hl0JIXI`_mGX4D@bOaF%K;8+j^SM`o=t04&L{^Hb~zD{VcC(h$s<-49D5Z<1v#>eZj8uLDKYn3IuNy0=_S$>O4F4DB<%Jk9U^jx~#%FVg21?-HeP~nZ3=q zeNd4J$Ieg0Y)=|bcFfIR^Sd)EQ+CU*hbwd+6-n=%mLi8Wc`ww16A#RCCYvW(TRg`f z93#wv5OtD>zxed=ZbQZMquK7pE$1eyL#5bymA&vdp1O|7$6kTB^2zn`b6p^i(|Gj2 zF5AK)Ix{CX#@@=l2CIHYa9zDp`=fPIct+#kYX7jb-th}ju@^O^Mdu$<)`%Ktz>li? z9-2Xh0uD#v;3O&JNqXRnIHPiipj>W}7jhy}yh)!p#Xnp+L3NZOGO;di zaI8>t?&}dk7mr(YO;fpN@&i^Pc#1#u9ujk#nKBxom&~rc8*?{xH22}7983S(o`+-3 zF06XtxF5gDlKtW45G(x=Z&l4xqZ48+A`8F^6d#jwe^r&bJPYB38*ntOzd7V^sc0DW zcD;CbjwKU-_f_gn=<{?RHZ zi2PUiYh7JyRqE5!(QTb4%rK01F+4ox=g*#&KWRimt)qqGOCX;gWFdXZkw#a=e*zjL zr1I<{XKYw@Tw;9FqZOqC4Hbm;)HF+(`cKtZ5bW}weRAZVi@Hmk`h3Dv=l#H7-Fu0l z8uy~f$Qoy{168vZ(t)SRZ`aaNn%pgP4RQ8tfA%J<@!-rSdk;m4NI6*#s}CPF3quhe z%)0m2#r;dnFMF7Ym#ZZopjp919;mN6c5IODE;84q-N;hXEE*Ff`Z@A;u~2dPW9H8V z1IASioX!`{MSCuFVB9S7Uq;Ed9Z9e_ma3w|8ee-P(;0dFJOu|fuLYksvL7nX8!&_x zVyHTFNMi!mj$#qt{aSw6jUlPN%S{giYXo^~ZENk@A+{+wa^Ct?qf{~ zN`n*hzk4LXG}3aRkS#W4S>4&p`;6K7Q}&s?lfr4TA_K93h2$TH=wH5b2|9C87FwkC z`3vwW8i7U5T5qM6^GU^p3^Sd}k=dSXpGhKvQOU6W)TlZ+vkEtDzDU0Hl}44u(s!(i z8oD>I1rBq%A-8%LT0c{%iWX_V>daKRc`W^Ev=s4bHb>kk1&J}jLe7gsHOp=WFZ|(3 zx5vo?B{~a>vY*s-w!iL*dZDybdlfoahyH$0Oovphi{#MR!0WheWVT)XawEySJ`P0j zq`}K;U5nWco!0lKD{n@XKzj-N4kCfq^?s%$ZT*^k=a|b|DKnf>59xO>U*;eb_kN%K zuS-cHN`k+e3W<+fFw45-9eaZZ7m;o?MV}rUQt`Kpm5Q`{-C*s9rT3uactEBx?N@T! z$~>Snv%ix2g!bt)ZlmYvcM$tOjnWq#%jxL47y0OWv~j7jk4ripj|-#0k~3WKR6^k^ z{?`t|0Voz)X+d?Ip#%mM1tiyf1tB#S*8kk-r7^f*4g zoalB`FPW4y*>l2__GlEt3c_HDWwo<(f!wVXmsaaht*(>=l@wPvCGtQR&vn?aem_$N z`k@5v0|9M#vrJxiWhgac*qsde+{}1bj~Bm3%GcBWBpv}54{1^xKm7V+0YVntNufYA zapa0=eKzCQ10;83H0)px&PW`Wd&WD{9~*^%Wnsl{w^O!5nPkoh48BmYK{1Rqs3@_bJi#$nt>g9@x;TxJW@2H>( zLd3@3wG&iJp`SQy2q#$OFZJgBC-CQZ*!J0PIE zfNJqEmBc&XT)kF&R(I%|+=I`PC^xl--z9i8H3Mz=-xqT%7{ArX#LzzGq~hVhl{j*i zRE^-&m3Ov?_Xwjz{d-2jmA!)RE6@)D<8D6xaEvxWi-jz2lyF^8hKbjdLF5tHX9UIi zEtJhVb13dw0@0k}MRWS=WsbKlU+Fsbg+E+~^^WNK2BAloS`DZl>cG`|`+5EKXVOQ` zESe}7_*I6`TcS1R`OC!*P8zwig}>;EN>;KMj3QJOHy7xoczWNLnExUZdl4aj=`j_? zXHA8ygH1*7s{1_XrhSK5NMANBgz$efAJm9PnpHqH>J!sBwhTBM8qE4-eI7MWDHAS&)V$aFc))WlMtPG;B?QXge!c z1MfHdnv46dQeR!xBb_!lRl?hYS|Pc6@~Ct~No5iPYiwll?WfgaV%b(9&0}Uo4nC(1 zW&db%l0AI-H_I)RC&ugu}@?F|o|GRlAL42?N zfy?;x`@W5a1@5^{Aa~Y@t#Ua890`YSpN$OER5$Ky@~L55Q06EX)Xoh~aSt&MTL)X< zINuZR2n2O8>neA%i23(n1y(SVP*(HB(sPp zFG5%lE+EXq%nwJ1^1+dO2mu%zAqE!~6B1$G`hiN4FpE2xTZn1PDQpP?K1o0=U0fW* z`1su2-Fe*wc{QNKg0dw}Wb3u8)?3`Ia7MnceFwSO9SO*uZy&W^i z6NR>Sb&-HV0Xp**bCfI4mo4UY&b%AF;x)6k<->SjE%*?;a6SORx4Q*MkT=+FWQKJ> z@me|T;CEvIt8D{+;_iWR*kHaJ>|kl{V()Be|A!{qcuD3}w<9p;R2alzW12OGnGYV3lw_=B<_ zi<$iGboCY!UeorS#w6ajcV zvyc$*3(f}z|NVrKfXXYtbP!0GkdUn{vjv|3uMiBFJj}{EKf#pcB%p%G?MuqGsPmW~ z!gm--J2*JmdthyW5?KX%GgoIhtg{Qs&I|*z734#}cYr_@t+S=9y{!YFB?_D<5>PlF zVw=4J*2&f#pp66+Fb^CC7l9!} zbP;edei1Q#Q5alEY)dB)Een+X0;Rn_q2Z#sa8WS<04=zo#0J-`K=m{7-|)3}(zUk- zblwb8nm^_oGe6*O%$#Z{Gprpr3y*I|*`9M^po~qu%y+u5ODSIX)}ZV(k+rw6cLFUW z0TuX#o3gB|rjxw|)&`($Dx$3@!^{bUG~}k>jVUcA2MirJ8Ne~$h)iPU_GVafu^kx* zG#o7?fE0z9@uLB&!UfSVw2-I;OcceB5y6-VSRe$p?WLwBrs0G=kF`VD>}D({D2tR8 zmPSYm$?(g_@eA@Jr1|B9WrYy3(gFx!IoTiP2AV6|ZF&)?51=707SKi50*LOyW^f?L znGANr(XP0$#cCokJChB4U zKX*d8xPlHXC?K@cOcxk+2`D#W=ZX#p`!OT7Ip|oToE+=`=|KA(tg5RmU{zpx>Db!a zyI2Ad2$)6NZ8rQs-5%?V(Z-m&nr%)pexYr;KK8sF5VtVWw)U=|7CS8gY3BCso4V~> z1-K}=0v-72%HHZKI$=M-)B>A~ z-Si#P{ITDAL4NQ4UZ~%#uovn#W9$X`)h2skel^WrnBOh57itefZBLOu+G!8O?`GNq z^t+Yz0R3j9Jutu8Xb;G*CfWn?yM^`u?O`AtASAlz+S>uaV{_X7G7*2H?->3khumSK zggtL*1N?LOGpB9Hzh$-^Qg`NtCdvuedAT@Y%{CPVV&YyzIh2$2A4sa8c7LF4tM&)_ zrpyhi01NU?G~Llk4QuXVZ-?1}>2YD$GQS4aPMAZwrFy| z{sRkaC3Z>QqR5+{$Ecy4t$$ewH0_;TWS#6C{v7cYolsc2-xq>CmXII9clB!z)aHV; zxnS)=f_t~E4T!uQ3jK4;+t}El>|B9u0>B?avXZ?M*2^9UoPPpn+q-P+_29eK@m=h70MXx85@+D^>0^YZBR~F7tddL%V8{>0FT6MhN$0% z^k+H{HB^B^i@=U}ynb4nbuk{B zJGmVY5I=!==b!^TJP1AzxOME~S97amH-#!!!W86V@E)wY~L^ z87cw&83PKCb#-#Xr~{!-0;+}qqJu4v=-3?SZB{?QHitnKYllHOZ6jni4z0f&0(5{g znmNkJd~cK-_B_TJ@MU2c0eQHr09*(miWHU+5tUPr5r)f(@(aic$jJ%|Z64CVS+Z-E z>tI}5fxH5E1+X*9)yBnnTgcWV+1XDEAq0>}#4g)!A!LEw4`%B`vt#q0i0Z%&e`8wh z1k&H=8*}S7I&e%y*=(Mce&fAC19S(5Q~)>}15Wu{b4@3V8x{j>8GjzHE#bPrcGDR= zeaLQZv3G2=1yBI896Ffu8<~eK%#IdHC}+Ta8;J!8sIHUij>`ZPFrNP^RoVtP!J2yl zhj1G#xC!2F111~5Lm0S?+&l+t9&0wP8-U3c8`sV2BK&aR2Ry281*i>(;lGFMAoT38 zfVXTWBEU1d*v9&xuHT)YdV`97vwHVKyBeXt_yr*xXnE zFl$B+)hVq#s_9?lshwc_+{oijRhWsc6Z)P4{UQW zvjopkfQ#|{Uv?d3CWt~?AVgqjptCTzg&;o+DIkIdGE-)v0tgEc3t{Bu1l-nR&#ohZ ze9ix&>p&(3{(scpZSUC#cH7$ScCcM;1$q$ZPya4G@lTxWf9Kf$mm2&-Hy1P)LGz26 zqhaP|C^ML_sGuke$uES4VbEw1K{H{bh?%I!&(`~Y=~(~6{t9D+P;lUW1k79*fqH3?l-A1ECC!7Ba^mx3)Ojap4c1{ofwxf7oAy5JnJLx~8YU_xd>7J?`X5x9l$=Dz0-{oOlpz77623)Y_b^X z5{1C2Z{uedNly>F(<~z@#4pP)fB=4E<&g4ld0ANngrE$N`;wLxfs6b&oq)V_Tpb*M zgthYzo)+5)K4#|KbTxZBdoxR5l>ss#f5K?Ex;VIkMJ_;A5IkZ3ij%c>@Z8ESzj+Fl zG$ENcJE-I7?1Hg%=3!R0GvnRNk}z*rO3}&Q)nU_Ao5Lk-WtV$9CZe9a7 zkUfCI$wsCQD!G*=bpAQwGH-s|W+Ki9c5#=G4WU~%JAh=$Zppum(uR3d1n9p=uKoc1+mz=P5cDYB&ASrv2)L*aLQqsePDVgfPDC0mBqAd%1EyvK zMCAG95nJZnwD0zcx+|~%EH}!@cEZQM3?Ms1esB%^bqU-d3j)zc;Fl%vhb$mAA^1hW z6;|Yz5!-3c&kron`~ttO?YjV=1b)FkYp{2W0~q|Y*#bXa?%k>}sL!18bXDNs`l-gMd9JRoJKT=j4L z>EHU(&7#=9^{0R9Pyg1R0#zk{tS|hD_IqXFPvqZg3V$MRYy)=}m;6NiwT|#7BDh8S zW6R%b2Y+h2SJmKlmGU3^y;It^1NpuCd!c@}!d|G~jIkH!SDWmG`PDRgVScyJUZ_0` zwMP*qaMaj65_=$iH`5-V->tL<=r<$nf%(-&dq93Q(H@ZBEwl${4+H&HUkbS1Zu9&` z-!c3jVB1A*f9A9e`M1pe)}QVwj{IAH3Z$fVNrXeH*4uHJ?dnjVHuZ1)sfF0z`qRJlr$5#4{txSV{$X{?-}=*k z`FQN#`qSUbtpEG9#{bZ_|JI*^?+4-Ce%SkO{V8y-aO=T`pKJ8C9w7MdR~r9A&;I8n zd3*QwKUWKmH8oaFMW1K@7I#H z|NnT)rg?Ux?xoZAQ2r-X+7`N@(T@V9t2?`5+)!4PnjUzUZf3wtlxJH-E=%650l|JUL8zoOoDUl z$N$vKnHd4LceS;1W)>C{m6Y7;E6SBH;G1Ze1%-t9l!4c1*tr1j)&#!69C-V|hG^i; z3*eiSeteU;FhWFl`$eqG2obP&R+|rejDpW#`;Dy|?|$5TXRCn*+6s6X58r9voky0N zO6+_E`dEvnZv8S-)wI^}du)P+!B(0?6$WY2;TehMH^xR=p{uQj%wCMwWn3>cNXmHM zdVtQ|B9uqOMX8!9l`Bq9DSUN#?NXT|dEKF|n9()Sm~#}DzeLt87Zpzqd0t)~X5F`M z-_6*YrWO_!c6N3sl$JqyR@Td`mt5NA?d_HAIgx>|MO-IDQTXX|p-)UPUWiY^!Z|rP z@*%VbgX#FR-qh8-Ft65@!LoY$-oPh}3zcqriK#hsm(Qe2%fZRT$?2J9oQ!;FTU$k2 zMMZOV1IIn?S9*@lX(Q)S9|bDbKFYT8^lV;uHjC|iJwMW7{~=u~p)yR$x*_Fhu6xK} z>Y1GH1-20j;}^u1R+e1H21X}`CcE2;Pu+iEobNjNsnGjIG!70s<*^YfMz!+g87l><^Xt?7B$}1}?IF21- zXJ=z)>wJALGV*rh3Uh^jo<^oj-wjk$V%Xucmos$B^bdFo!9L|AJLXm#$QQE7^}`lE zIrUKAy5qUy)5LpXk8-fBPeL*sZ{2&Y>*)Ucj2_QRuLCz830XDI%%zO$<-6JT3x|!` zaMG?&lqp0A+75Q6c+Q5y&StL^xQ+_je$KYQ;=3p?vGDe4h@SiDlot1 z`0x#Xnat@FqgN_pbNNEumy6xT#Tw65s2@0TfOr}E`TF>Y3SsxjuKe@ez*pjtf8$#4 z7loa z5Id3#86%?$Mg<1rAzy;WgXh_k9w$Cd?4oUGm>>e!7rOIFNJy}<3J3^rb90|K!ND=~ zeXXOTgOGwr^1|G(*14|!s^w)3za)kF?=#=pX4i|Gg0sl0D!ZsJmp_LG-4H1xpO&OL zFj;mpzc=hyQjiF=OZnM!R8X$d>4JOSl`YUNm4NB&0uR2$1CteV7Bi~$?A=Qiq4s!L zG>T-7l#Baf1DA?rvNF7iA?F<__IW8e2;*by10h$nd_sy$Wr|r8B;*wd^zksMQ1yV;6kWB6F zM?|9ZRE5-$3jC;x4!ZM-aG%6u{RDsHE$@9F%Em{CD5-A_N|QS72LV}!!H@cPXwh)s zBcUIWN?yM*sUrhOJ8=%6Ii!)p$}>P&4cA!upgz=JV;W@0`aq#t_i3S$waoGs5@&+U z@&GC3pOXBMj{qsM`nYF;5;iW0$OOe+NvX_&C^`Whf2$A_>l4Wi%51z#+eb8kbCO~) zf<;dAm4c`qo2Nl+1J5eTznA@2vIOr^8&LOFZ1xQzhNIcuPIZ>?oX9XUY-tB5Fd zZ+1u1_CY{C%aQ=wsmH9a@=}mb^a`Nu{^*sDG7RMs`-XcBInD$v3HmZbIZ{gF8$+PU zu}5I#S3Bw{9x(?5g%CN-mB{1K%#{Pb@Oq#=Bwm10(#)`O91t<=8$!f2tVo(6wK(g` zzS1aDo^)t{{v>Hew*V*^7t7MuNajQq=if>P3>I@h>y6cA>4RmKEDNRbc*g@8WyWgO zzQtan%!1$o(t~dSdc%Wh(UVD_q7W!2iVRkMg#-Mc0AT$?h_oSm==uvFZ|N+EH?!PL zG=mHtP3RNe4JozQiD4oRbGY=b+ah&EV#RDqV$06Cbo>agz>Wu8=zu6h#SD zLR_Pbzsv-VEIKF(0(?Hi;zI%oB!S5lD}n+O8)U|UAkx9uEXYNmfi&62Ar{cKUqKyx zY0-d7Xup>WirtS68fS6fO6%aS7xh+zP{@xdw53^iU*2H-tQK(~NF(tZyN zqE8xtdR-3~AB6*G50SOG1_-hTOmE5pD<2dE#nS?2F4aC0)I~)3_+(J5pFNgExMrhk zpx+M|Tn7vfUf0WlM3{q9Cl(wm?F)*e(*j0-SzrL;lm!1)56aE0W+YZ9<>g*-qx z1wgr0RniO;0oWl}IRvzQY8K>(IoJ;(X+T3;pqJ@DFW1OGTbDydpEv`gC4YJ}*ak3~ zE7(Q?K%FGZsFMIegd~8^sr=67%0Dw9wx^J{x3p$CJ4|2 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ℑ2e=@xAtZ^&00mT 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 Kl+)%w$^QVcM~jUB literal 0 HcmV?d00001 diff --git a/firmware/test/CMakeLists.txt b/firmware/test/CMakeLists.txt index d6d5ad5..76c1530 100644 --- a/firmware/test/CMakeLists.txt +++ b/firmware/test/CMakeLists.txt @@ -2,9 +2,12 @@ # производстве add_executable(firmware_test) - -target_sources(firmware_test - PRIVATE main.c ${PROJECT_SOURCE_DIR}/bsp/generated/syscalls.c) +set(BSP_GENERATED ${CMAKE_SOURCE_DIR}/bsp/generated) +target_sources( + firmware_test + PRIVATE main.c ${PROJECT_SOURCE_DIR}/bsp/generated/syscalls.c + ${BSP_GENERATED}/clock_config.c + ${BSP_GENERATED}/startup/startup_MIMXRT1052.S) target_compile_definitions(firmware_test PRIVATE BSP_UART_HOST_RX_BUFFER_SIZE=512) @@ -15,8 +18,7 @@ target_compile_definitions(firmware_test # ----------------------------------------------------------------------------- target_link_libraries( firmware_test - PRIVATE bsp_board bsp_led bsp_tick - # Опциональные библиотеки + PRIVATE bsp_board bsp_led bsp_tick bsp_uart_host bsp_boot_ram lib_external # SEGGER RTT если включён через SEGGER_RTT_ENABLED ) @@ -25,15 +27,14 @@ target_link_libraries( # ----------------------------------------------------------------------------- # --gc-sections — удалять неиспользуемые секции (работает с # -ffunction/data-sections) --print-memory-usage — выводить таблицу -# использования Flash/RAM после линковки -Map — генерировать -# map-файл для анализа размещения символов -T — линкерный -# скрипт с описанием карты памяти IMXRT1052 +# использования Flash/RAM после линковки -Map — генерировать map-файл для +# анализа размещения символов -T — линкерный скрипт с описанием карты памяти +# IMXRT1052 target_link_options( firmware_test PRIVATE -Wl,--gc-sections -Wl,--print-memory-usage -Wl,-Map=${CMAKE_BINARY_DIR}/firmware_test.map - -T${PROJECT_SOURCE_DIR}/cmake/linker/MIMXRT1052xxxxx_flexspi_nor.ld) + -T${PROJECT_SOURCE_DIR}/cmake/linker/MIMXRT1052xxxxx_ram.ld) -# TODO: дефайны BOOT # ----------------------------------------------------------------------------- # Post-build: генерация .bin для прошивки через blhost # ----------------------------------------------------------------------------- diff --git a/firmware/test/main.c b/firmware/test/main.c index 77aed37..be5bb75 100644 --- a/firmware/test/main.c +++ b/firmware/test/main.c @@ -1,17 +1,28 @@ #include "board.h" #include "bsp/led.h" #include "bsp/tick.h" +#include "bsp/uart_host.h" int main(void) { - + const uint16_t DELAY_MS = 1000; + const uint32_t UART_BAUDRATE = 115200; board_hw_init(); bsp_led_init(); bsp_tick_init(); - const uint16_t DELAY_MS = 50; + if (bsp_uart_host_init(UART_BAUDRATE) != BSP_OK) + { + while (1) + { + bsp_led_toggle(LED_HEARTBEAT); + bsp_delay(50); + } + } + while (1) { bsp_led_on(LED_HEARTBEAT); + bsp_uart_host_write_str("We are here!"); bsp_delay(DELAY_MS); bsp_led_off(LED_HEARTBEAT); bsp_delay(DELAY_MS); diff --git a/pyocd.yaml b/pyocd.yaml new file mode 100644 index 0000000..dc33dcc --- /dev/null +++ b/pyocd.yaml @@ -0,0 +1,8 @@ +# pyocd.yaml — корень репозитория +# Подхватывается автоматически pyOCD при запуске из любой поддиректории. +# Для RAM-загрузки flash-алгоритм не нужен — используем generic cortex_m. + +target_override: cortex_m +frequency: 1000000 +connect_mode: attach +no_config: false \ No newline at end of file diff --git a/tests/target/CMakeLists.txt b/tests/target/CMakeLists.txt index 43460ca..5a12dff 100644 --- a/tests/target/CMakeLists.txt +++ b/tests/target/CMakeLists.txt @@ -1,47 +1 @@ -# firmware/test/CMakeLists.txt Тестовая прошивка — входной контроль платы на -# производстве - -add_executable(firmware_test) - -target_sources(firmware_test - PRIVATE main.c ${PROJECT_SOURCE_DIR}/bsp/generated/syscalls.c) - -target_compile_definitions(firmware_test - PRIVATE BSP_UART_HOST_RX_BUFFER_SIZE=512) -# ----------------------------------------------------------------------------- -# Зависимости — только то что нужно для входного контроля bsp_board транзитивно -# даёт: sdk_device, sdk_clock, sdk_common, CPU_MIMXRT1052CVJ5B, XIP_* дефайны -# ----------------------------------------------------------------------------- -target_link_libraries( - firmware_test - PRIVATE bsp_board bsp_led bsp_tick - # Опциональные библиотеки - lib_external # SEGGER RTT если включён через SEGGER_RTT_ENABLED -) - -# ----------------------------------------------------------------------------- -# Linker script -# ----------------------------------------------------------------------------- -# --gc-sections — удалять неиспользуемые секции (работает с -# -ffunction/data-sections) --print-memory-usage — выводить таблицу -# использования Flash/RAM после линковки -Map — генерировать -# map-файл для анализа размещения символов -T — линкерный -# скрипт с описанием карты памяти IMXRT1052 -target_link_options( - firmware_test PRIVATE -Wl,--gc-sections -Wl,--print-memory-usage - -Wl,-Map=${CMAKE_BINARY_DIR}/firmware_test.map - -T${PROJECT_SOURCE_DIR}/cmake/linker/MIMXRT1052xxxxx_flexspi_nor.ld) - -# TODO: дефайны BOOT -# ----------------------------------------------------------------------------- -# Post-build: генерация .bin для прошивки через blhost -# ----------------------------------------------------------------------------- -add_custom_command( - TARGET firmware_test - POST_BUILD - COMMAND ${CMAKE_OBJCOPY} -O binary $ - ${CMAKE_BINARY_DIR}/firmware_test.bin - COMMAND ${CMAKE_OBJCOPY} -O ihex $ - ${CMAKE_BINARY_DIR}/firmware_test.hex - COMMAND ${CMAKE_SIZE} $ - COMMENT "Generating firmware_test.bin") +add_subdirectory(host_uart) diff --git a/tests/target/host_uart/CMakeLists.txt b/tests/target/host_uart/CMakeLists.txt new file mode 100644 index 0000000..23c8703 --- /dev/null +++ b/tests/target/host_uart/CMakeLists.txt @@ -0,0 +1,29 @@ +# ============================================================================= +# tests/target/host_uart/CMakeLists.txt +# ============================================================================= + +set(TARGET_NAME test_host_uart) +set(BSP_GENERATED ${CMAKE_SOURCE_DIR}/bsp/generated) + +add_executable(${TARGET_NAME} main.c ${BSP_GENERATED}/clock_config.c + ${BSP_GENERATED}/startup/startup_MIMXRT1052.S) + +target_compile_definitions(${TARGET_NAME} + PRIVATE BSP_UART_HOST_RX_BUFFER_SIZE=512) + +target_link_options( + ${TARGET_NAME} + PRIVATE + -T${CMAKE_SOURCE_DIR}/cmake/linker/MIMXRT1052xxxxx_ram.ld + -Wl,--gc-sections + -Wl,--print-memory-usage + -Wl,-Map=${CMAKE_CURRENT_BINARY_DIR}/${TARGET_NAME}.map) + +target_link_libraries(${TARGET_NAME} PRIVATE bsp_boot_ram bsp_board bsp_led + bsp_tick bsp_uart_host) + +add_custom_command( + TARGET ${TARGET_NAME} + POST_BUILD + COMMAND ${CMAKE_SIZE} $ + COMMENT "Size: ${TARGET_NAME}") diff --git a/tests/target/host_uart/main.c b/tests/target/host_uart/main.c new file mode 100644 index 0000000..ff843d6 --- /dev/null +++ b/tests/target/host_uart/main.c @@ -0,0 +1,120 @@ +/** + * @file tests/target/host_uart/main.c + * @brief HIL target — UART CLI для тестирования bsp_uart_host. + * + * Протокол: текстовые команды через LPUART1 (MCU-Link VCOM), \r\n-terminated. + * + * Команды: + * PING → PONG + * ECHO + * UART_BUF_SIZE → + * + * Архитектура CLI намеренно простая (strncmp) — EmbeddedCLI подключим + * когда команд станет >5. Точка расширения: cli_process_line(). + */ + +#include "board.h" +#include "bsp/led.h" +#include "bsp/tick.h" +#include "bsp/uart_host.h" + +#include +#include + +/* -------------------------------------------------------------------------- */ + +#ifndef BSP_UART_HOST_RX_BUFFER_SIZE +#define BSP_UART_HOST_RX_BUFFER_SIZE 256U +#endif + +#define CLI_BAUD_RATE 115200U +#define CLI_LINE_MAX 128U +#define CLI_RX_TIMEOUT 100U /* мс между байтами при чтении строки */ + +/* -------------------------------------------------------------------------- */ + +/** + * @brief Прочитать строку до \n с таймаутом между байтами. + * @return Длина строки без \r\n, или 0 при таймауте/пустой строке. + */ +static size_t cli_read_line(uint8_t *p_buf, size_t max_len) +{ + size_t pos = 0U; + + while (pos < (max_len - 1U)) + { + int32_t byte = bsp_uart_host_read_byte(CLI_RX_TIMEOUT); + if (byte < 0) + { + break; + } + if ((char) byte == '\r') + { + continue; + } + if ((char) byte == '\n') + { + break; + } + p_buf[pos++] = (uint8_t) byte; + } + + p_buf[pos] = '\0'; + return pos; +} + +/** + * @brief Диспетчер команд. + * + * Точка расширения: заменим тело на EmbeddedCLI когда команд станет > 5. + * Сигнатура и место вызова из main() не меняются. + */ +static void cli_process_line(const char *p_line) +{ + if (strncmp(p_line, "PING", 4U) == 0) + { + bsp_uart_host_write_str("PONG\r\n"); + } + else if (strncmp(p_line, "ECHO ", 5U) == 0) + { + bsp_uart_host_write_str(p_line + 5U); + bsp_uart_host_write_str("\r\n"); + } + else if (strncmp(p_line, "UART_BUF_SIZE", 13U) == 0) + { + char resp[16]; + snprintf(resp, sizeof(resp), "%u\r\n", (unsigned) BSP_UART_HOST_RX_BUFFER_SIZE); + bsp_uart_host_write_str(resp); + } + else if (p_line[0] != '\0') + { + bsp_uart_host_write_str("ERR_UNKNOWN\r\n"); + } +} + +/* -------------------------------------------------------------------------- */ + +int main(void) +{ + board_hw_init(); + bsp_tick_init(); + bsp_led_init(); + bsp_uart_host_init(CLI_BAUD_RATE); + + /* pytest ждёт эту строку как сигнал готовности */ + bsp_uart_host_write_str("READY\r\n"); + bsp_led_on(LED_HEARTBEAT); + + static uint8_t s_line_buf[CLI_LINE_MAX]; + + for (;;) + { + size_t len = cli_read_line(s_line_buf, sizeof(s_line_buf)); + if (len > 0U) + { + cli_process_line((const char *) s_line_buf); + } + } + + return 0; +} \ No newline at end of file diff --git a/tools/hil/.python-version b/tools/hil/.python-version new file mode 100644 index 0000000..c8cfe39 --- /dev/null +++ b/tools/hil/.python-version @@ -0,0 +1 @@ +3.10 diff --git a/tests/target/test_target_simple.c b/tools/hil/README.md similarity index 100% rename from tests/target/test_target_simple.c rename to tools/hil/README.md diff --git a/tools/hil/conftest.py b/tools/hil/conftest.py new file mode 100644 index 0000000..494e882 --- /dev/null +++ b/tools/hil/conftest.py @@ -0,0 +1,127 @@ +""" +conftest.py — pytest-фикстуры для HIL-тестов MIMXRT1052. +Вся работа с железом делегирована pyocd_utils. +""" + +from __future__ import annotations + +import logging +import os +import time +from pathlib import Path +from typing import Generator + +import pytest +import serial + +from pyocd_utils import flexram_init, load_elf, open_target, run_from_vectors + +log = logging.getLogger(__name__) + +# --------------------------------------------------------------------------- +# Конфигурация — переопределяется через переменные окружения +# --------------------------------------------------------------------------- +_REPO_ROOT = Path(__file__).resolve().parents[3] +_BUILD_DIR = Path(os.environ.get("HIL_BUILD_DIR", + _REPO_ROOT / "build" / "target-debug")) +_VCOM_PORT = os.environ.get("HIL_VCOM_PORT", "/dev/tty.usbmodemGUXFBWDJBWTGQ3") +_VCOM_BAUD = int(os.environ.get("HIL_VCOM_BAUD", "115200")) +_READY_TIMEOUT = float(os.environ.get("HIL_READY_TIMEOUT", "5.0")) + + +# --------------------------------------------------------------------------- +# CLI-опции pytest +# --------------------------------------------------------------------------- +def pytest_addoption(parser: pytest.Parser) -> None: + parser.addoption("--elf", default=None, help="Путь к .elf файлу") + parser.addoption("--vcom", default=_VCOM_PORT, help="VCOM-порт MCU-Link") + parser.addoption("--no-load", action="store_true", help="ELF уже запущен") + + +# --------------------------------------------------------------------------- +# Внутренняя функция загрузки +# --------------------------------------------------------------------------- +def _load_elf(request: pytest.FixtureRequest, default_elf: Path) -> None: + if request.config.getoption("--no-load"): + log.info("--no-load: пропускаем загрузку ELF") + return + + elf = Path(request.config.getoption("--elf") or default_elf) + assert elf.exists(), f"ELF не найден: {elf}" + + with open_target() as target: + flexram_init(target) + load_elf(target, str(elf)) + run_from_vectors(target) + + log.info("ELF загружен: %s", elf.name) + + +# --------------------------------------------------------------------------- +# Фикстуры загрузки (scope=module — один раз на файл с тестами) +# --------------------------------------------------------------------------- +@pytest.fixture(scope="module") +def loaded_firmware_test(request: pytest.FixtureRequest) -> None: + _load_elf(request, _BUILD_DIR / "firmware/test/firmware_test.elf") + + +@pytest.fixture(scope="module") +def loaded_host_uart(request: pytest.FixtureRequest) -> None: + _load_elf( + request, + _BUILD_DIR / "tests/target/host_uart/test_host_uart.elf", + ) + + +# --------------------------------------------------------------------------- +# Фикстура UART — открывает порт и ждёт "READY\r\n" от прошивки +# --------------------------------------------------------------------------- +@pytest.fixture(scope="module") +def uart( + request: pytest.FixtureRequest, + loaded_host_uart, # гарантирует порядок: сначала загрузка +) -> Generator[serial.Serial, None, None]: + + port = request.config.getoption("--vcom") + log.info("UART %s @ %d baud", port, _VCOM_BAUD) + + ser = serial.Serial( + port=port, + baudrate=_VCOM_BAUD, + timeout=2.0, + write_timeout=1.0, + ) + + # Ждём "READY" — прошивка отправляет его один раз при старте + deadline = time.monotonic() + _READY_TIMEOUT + ready = False + while time.monotonic() < deadline: + line = ser.readline().decode("ascii", errors="replace").strip() + if line == "READY": + ready = True + log.info("Получен READY от прошивки") + break + + if not ready: + ser.close() + pytest.fail( + f"Прошивка не отправила READY за {_READY_TIMEOUT} с. " + "Проверьте VCOM-порт и bsp_uart_host_init()." + ) + + ser.reset_input_buffer() + yield ser + ser.close() + + +# --------------------------------------------------------------------------- +# Утилита для тестов +# --------------------------------------------------------------------------- +def uart_cmd(ser: serial.Serial, cmd: str) -> str: + """Отправить команду, получить одну строку ответа.""" + ser.reset_input_buffer() + ser.write((cmd.strip() + "\r\n").encode("ascii")) + resp = ser.readline() + if not resp: + raise TimeoutError(f"Нет ответа на команду '{cmd}'") + return resp.decode("ascii", errors="replace").strip() \ No newline at end of file diff --git a/tools/hil/load_and_run.py b/tools/hil/load_and_run.py new file mode 100644 index 0000000..711947e --- /dev/null +++ b/tools/hil/load_and_run.py @@ -0,0 +1,23 @@ +#!/usr/bin/env python3 +""" +load_and_run.py — CLI-обёртка над pyocd_utils.load_and_run(). + +Использование (из директории tools/hil/): + uv run python load_and_run.py firmware_test.elf +""" + +import logging +import sys + +from pyocd_utils import load_and_run + +logging.basicConfig( + level=logging.DEBUG, + format="%(asctime)s [%(levelname)-8s] %(message)s", + datefmt="%H:%M:%S", +) + +if __name__ == "__main__": + elf = sys.argv[1] if len(sys.argv) > 1 else "firmware_test.elf" + load_and_run(elf) + print("Done — смотри на LED!") \ No newline at end of file diff --git a/tools/hil/pyocd_utils.py b/tools/hil/pyocd_utils.py new file mode 100644 index 0000000..6a18549 --- /dev/null +++ b/tools/hil/pyocd_utils.py @@ -0,0 +1,129 @@ +""" +pyocd_utils.py — переиспользуемые утилиты для работы с RT1052 через pyOCD. + +Используется двумя способами: + 1. conftest.py — импортирует flexram_init / load_elf / run_from_vectors + 2. load_and_run.py — вызывает load_and_run() из CLI + +Не содержит ничего pytest-специфичного — чистый Python. +""" + +from __future__ import annotations + +import logging +from contextlib import contextmanager +from typing import Generator + +from elftools.elf.elffile import ELFFile +from pyocd.core.helpers import ConnectHelper +from pyocd.core.target import Target + +log = logging.getLogger(__name__) + +# --------------------------------------------------------------------------- +# FLEXRAM +# --------------------------------------------------------------------------- +_GPR16 = 0x400AC040 # IOMUXC_GPR16: бит 2 = FLEXRAM_BANK_CFG_SEL +_GPR17 = 0x400AC044 # IOMUXC_GPR17: конфигурация банков +# 0xFFFFAA55 → 128KB ITCM (0b01) + 128KB DTCM (0b10) + 256KB OCRAM (0b11) +_FLEXRAM_CFG = 0xFFFFAA55 + + +def flexram_init(target: Target) -> None: + """Настроить FLEXRAM: 128KB ITCM + 128KB DTCM + 256KB OCRAM.""" + target.write32(_GPR16, target.read32(_GPR16) | (1 << 2)) + target.write32(_GPR17, _FLEXRAM_CFG) + log.debug( + "FLEXRAM: GPR16=0x%08X GPR17=0x%08X", + target.read32(_GPR16), + target.read32(_GPR17), + ) + + +# --------------------------------------------------------------------------- +# ELF loader +# --------------------------------------------------------------------------- +def load_elf(target: Target, elf_path: str) -> None: + """Записать все PT_LOAD сегменты ELF по физическим адресам.""" + with open(elf_path, "rb") as f: + elf = ELFFile(f) + for seg in elf.iter_segments(): + if seg.header.p_type != "PT_LOAD": + continue + if seg.header.p_filesz == 0: + continue + addr = seg.header.p_paddr + data = list(seg.data()) + target.write_memory_block8(addr, data) + log.debug("segment → 0x%08X %5d bytes", addr, len(data)) + log.info("Loaded: %s", elf_path) + + +# --------------------------------------------------------------------------- +# Запуск из таблицы векторов +# --------------------------------------------------------------------------- +def run_from_vectors(target: Target) -> int: + """ + Взять SP и PC из таблицы векторов (ITCM 0x00000000), + выставить регистры, resume. + + Returns: + PC (адрес Reset_Handler) для проверки вызывающей стороной. + """ + sp = target.read32(0x00000000) + pc = target.read32(0x00000004) + log.debug("Vector table → SP=0x%08X PC=0x%08X", sp, pc) + + if not (0x20000000 <= sp <= 0x20040000): + raise RuntimeError(f"SP вне DTCM: 0x{sp:08X} — ELF загружен корректно?") + if not (0x00000400 <= pc <= 0x00020000): + raise RuntimeError(f"PC вне ITCM: 0x{pc:08X} — FLEXRAM настроен?") + + target.write_core_register("sp", sp) + target.write_core_register("pc", pc) + target.resume() + + log.info("Running from PC=0x%08X", pc) + return pc + + +# --------------------------------------------------------------------------- +# Контекстный менеджер: сессия pyOCD +# --------------------------------------------------------------------------- +@contextmanager +def open_target( + frequency: int = 1_000_000, +) -> Generator[Target, None, None]: + """ + Открыть pyOCD-сессию с первым найденным пробником. + + Использование: + with open_target() as target: + flexram_init(target) + load_elf(target, "firmware.elf") + run_from_vectors(target) + """ + with ConnectHelper.session_with_chosen_probe( + target_override="cortex_m", + connect_mode="attach", + frequency=frequency, + options={"no_config": True}, + ) as session: + target = session.target + target.halt() + log.debug("Halted. PC = 0x%08X", target.read_core_register("pc")) + yield target + + +# --------------------------------------------------------------------------- +# Комбо: всё за один вызов +# --------------------------------------------------------------------------- +def load_and_run(elf_path: str, frequency: int = 1_000_000) -> None: + """ + Полный цикл: подключиться → FLEXRAM → загрузить ELF → запустить. + Удобно для CLI и одиночных скриптов. + """ + with open_target(frequency) as target: + flexram_init(target) + load_elf(target, elf_path) + run_from_vectors(target) \ No newline at end of file diff --git a/tools/hil/pyproject.toml b/tools/hil/pyproject.toml new file mode 100644 index 0000000..52d135f --- /dev/null +++ b/tools/hil/pyproject.toml @@ -0,0 +1,26 @@ +[project] +name = "hil" +version = "0.1.0" +description = "Add your description here" +readme = "README.md" +requires-python = ">=3.10" +dependencies = [ + "pyocd>=0.43.1", + "pyserial>=3.5", + "pytest>=9.0.2", +] +[tool.pytest.ini_options] +testpaths = ["."] +python_files = ["test_*.py"] + +markers = [ + "smoke: быстрые sanity-тесты", + "gpio: тесты GPIO", + "uart: тесты UART CLI", + "slow: тесты с большими таймаутами", +] + +log_cli = true +log_cli_level = "INFO" +log_format = "%(asctime)s [%(levelname)-8s] %(name)s: %(message)s" +log_date_format = "%H:%M:%S" \ No newline at end of file diff --git a/tools/hil/targets.txt b/tools/hil/targets.txt new file mode 100644 index 0000000..eb6ec0b --- /dev/null +++ b/tools/hil/targets.txt @@ -0,0 +1,207 @@ + Name Vendor Part Number Families Source +------------------------------------------------------------------------------------------------------ + air001 AirM2M Air001 builtin + air32f103xb AirM2M Air32F103xB builtin + air32f103xc AirM2M Air32F103xC builtin + air32f103xe AirM2M Air32F103xE builtin + air32f103xg AirM2M Air32F103xG builtin + air32f103xp AirM2M Air32F103xP builtin + ama3b1kk_kbr Ambiq Micro AMA3B1KK_KBR builtin + cc3220sf Texas Instruments CC3220SF builtin + cortex_m Generic CoreSightTarget builtin + cy8c64_sysap Cypress cy8c64_sysap builtin + cy8c64x5_cm0 Cypress cy8c64x5_cm0 builtin + cy8c64x5_cm0_full_flash Cypress cy8c64x5_cm0_full_flash builtin + cy8c64x5_cm4 Cypress cy8c64x5_cm4 builtin + cy8c64x5_cm4_full_flash Cypress cy8c64x5_cm4_full_flash builtin + cy8c64xa_cm0 Cypress cy8c64xA_cm0 builtin + cy8c64xa_cm0_full_flash Cypress cy8c64xA_cm0_full_flash builtin + cy8c64xa_cm4 Cypress cy8c64xA_cm4 builtin + cy8c64xa_cm4_full_flash Cypress cy8c64xA_cm4_full_flash builtin + cy8c64xx_cm0 Cypress cy8c64xx_cm0 builtin + cy8c64xx_cm0_full_flash Cypress cy8c64xx_cm0_full_flash builtin + cy8c64xx_cm0_nosmif Cypress cy8c64xx_cm0_nosmif builtin + cy8c64xx_cm0_s25hx512t Cypress cy8c64xx_cm0_s25hx512t builtin + cy8c64xx_cm4 Cypress cy8c64xx_cm4 builtin + cy8c64xx_cm4_full_flash Cypress cy8c64xx_cm4_full_flash builtin + cy8c64xx_cm4_nosmif Cypress cy8c64xx_cm4_nosmif builtin + cy8c64xx_cm4_s25hx512t Cypress cy8c64xx_cm4_s25hx512t builtin + cy8c6xx5 Cypress CY8C6xx5 builtin + cy8c6xx7 Cypress CY8C6xx7 builtin + cy8c6xx7_nosmif Cypress CY8C6xx7_nosmif builtin + cy8c6xx7_s25fs512s Cypress CY8C6xx7_S25FS512S builtin + cy8c6xxa Cypress CY8C6xxA builtin + hc32a448 HDSC HC32F448xC builtin + hc32a448xa HDSC HC32F448xA builtin + hc32a448xc HDSC HC32F448xC builtin + hc32a460 HDSC HC32F460xE builtin + hc32a460xe HDSC HC32F460xE builtin + hc32a4a0 HDSC HC32F4A0xI builtin + hc32a4a0xi HDSC HC32F4A0xI builtin + hc32f003 HDSC HC32F003 builtin + hc32f005 HDSC HC32F005 builtin + hc32f030 HDSC HC32F030 builtin + hc32f072 HDSC HC32F072 builtin + hc32f115 HDSC HC32F115x8 builtin + hc32f115x8 HDSC HC32F115x8 builtin + hc32f120 HDSC HC32F120x8TA builtin + hc32f120x6 HDSC HC32F120x6TA builtin + hc32f120x8 HDSC HC32F120x8TA builtin + hc32f155 HDSC HC32F155xC builtin + hc32f155xa HDSC HC32F155xA builtin + hc32f155xc HDSC HC32F155xC builtin + hc32f160 HDSC HC32F160xC builtin + hc32f160xa HDSC HC32F160xA builtin + hc32f160xc HDSC HC32F160xC builtin + hc32f190 HDSC HC32F190 builtin + hc32f196 HDSC HC32F196 builtin + hc32f334 HDSC HC32F334xA builtin + hc32f334x8 HDSC HC32F334x8 builtin + hc32f334xa HDSC HC32F334xA builtin + hc32f448 HDSC HC32F448xC builtin + hc32f448xa HDSC HC32F448xA builtin + hc32f448xc HDSC HC32F448xC builtin + hc32f451 HDSC HC32F451xE builtin + hc32f451xc HDSC HC32F451xC builtin + hc32f451xe HDSC HC32F451xE builtin + hc32f452 HDSC HC32F452xE builtin + hc32f452xc HDSC HC32F452xC builtin + hc32f452xe HDSC HC32F452xE builtin + hc32f460 HDSC HC32F460xE builtin + hc32f460xc HDSC HC32F460xC builtin + hc32f460xe HDSC HC32F460xE builtin + hc32f467 HDSC HC32F467xG builtin + hc32f467xg HDSC HC32F467xG builtin + hc32f472 HDSC HC32F472xE builtin + hc32f472xc HDSC HC32F472xC builtin + hc32f472xe HDSC HC32F472xE builtin + hc32f4a0 HDSC HC32F4A0xI builtin + hc32f4a0xg HDSC HC32F4A0xG builtin + hc32f4a0xi HDSC HC32F4A0xI builtin + hc32f4a2 HDSC HC32F4A0xI builtin + hc32f4a2xi HDSC HC32F4A0xI builtin + hc32l072 HDSC HC32L072 builtin + hc32l073 HDSC HC32L073 builtin + hc32l110 HDSC HC32L110 builtin + hc32l130 HDSC HC32L130 builtin + hc32l136 HDSC HC32L136 builtin + hc32l190 HDSC HC32L190 builtin + hc32l196 HDSC HC32L196 builtin + hc32m120 HDSC HC32M120 builtin + hc32m120x6 HDSC HC32M120 builtin + hc32m423xa HDSC HC32M423xA builtin + k20d50m NXP K20D50M builtin + k22f NXP K22F builtin + k22fa12 NXP K22FA12 builtin + k28f15 NXP K28F15 builtin + k32l2b3 NXP K32L2B3 builtin + k32w042s NXP K32W042S builtin + k64f NXP K64F builtin + k66f18 NXP K66F18 builtin + k82f25615 NXP K82F25615 builtin + ke15z7 NXP KE15Z7 builtin + ke17z7 NXP KE17Z7 builtin + ke18f16 NXP KE18F16 builtin + kinetis NXP Kinetis builtin + kl02z NXP KL02Z builtin + kl05z NXP KL05Z builtin + kl25z NXP KL25Z builtin + kl26z NXP KL26Z builtin + kl27z4 NXP KL27Z4 builtin + kl28z NXP KL28x builtin + kl43z4 NXP KL43Z4 builtin + kl46z NXP KL46Z builtin + kl82z7 NXP KL82Z7 builtin + kv10z7 NXP KV10Z7 builtin + kv11z7 NXP KV11Z7 builtin + kw01z4 NXP KW01Z4 builtin + kw24d5 NXP KW24D5 builtin + kw36z4 NXP KW36Z4 builtin + kw40z4 NXP KW40Z4 builtin + kw41z4 NXP KW41Z4 builtin + lpc11u24 NXP LPC11U24 builtin + lpc11xx_32 NXP LPC11XX_32 builtin + lpc1768 NXP LPC1768 builtin + lpc4088 NXP LPC4088 builtin + lpc4088dm NXP LPC4088dm builtin + lpc4088qsb NXP LPC4088qsb builtin + lpc4330 NXP LPC4330 builtin + lpc54114 NXP LPC54114 builtin + lpc54608 NXP LPC54608 builtin + lpc5526 NXP LPC5526 builtin + lpc55s16 NXP LPC55S16 builtin + lpc55s28 NXP LPC55S28 builtin + lpc55s36 NXP LPC55S36 builtin + lpc55s69 NXP LPC55S69 builtin + lpc800 NXP LPC800 builtin + lpc824 NXP LPC824 builtin + lpc845 NXP LPC845 builtin + m2354kjfae Nuvoton M2354KJFAE builtin + m252kg6ae Nuvoton M252KG6AE builtin + m263kiaae Nuvoton M263KIAAE builtin + m467hjhae Nuvoton M467HJHAE builtin + m487jidae Nuvoton M487JIDAE builtin + max32600 Maxim MAX32600 builtin + max32620 Maxim MAX32620 builtin + max32625 Maxim MAX32625 builtin + max32630 Maxim MAX32630 builtin + max32660 Maxim MAX32660 builtin + max32666 Maxim MAX32666 builtin + max32670 Maxim MAX32670 builtin + mimxrt1010 NXP MIMXRT1011xxxxx builtin + mimxrt1015 NXP MIMXRT1015xxxxx builtin + mimxrt1020 NXP MIMXRT1021xxxxx builtin + mimxrt1024 NXP MIMXRT1024xxxxx builtin + mimxrt1050 NXP MIMXRT1052xxxxB_hyperflash builtin + mimxrt1050_hyperflash NXP MIMXRT1052xxxxB_hyperflash builtin + mimxrt1050_quadspi NXP MIMXRT1052xxxxB_quadspi builtin + mimxrt1060 NXP MIMXRT1062xxxxA builtin + mimxrt1064 NXP MIMXRT1064xxxxA builtin + mimxrt1170_cm4 NXP MIMXRT1176xxxxx_CM4 builtin + mimxrt1170_cm7 NXP MIMXRT1176xxxxx_CM7 builtin + mps2_an521 Arm AN521 builtin + mps3_an522 Arm AN522 builtin + mps3_an540 Arm AN540 builtin + musca_a1 Arm MuscaA1 builtin + musca_b1 Arm MuscaB1 builtin + musca_s1 Arm MuscaS1 builtin + ncs36510 ONSemiconductor NCS36510 builtin + nrf51 Nordic Semiconductor NRF51 builtin + nrf51822 Nordic Semiconductor NRF51 builtin + nrf52 Nordic Semiconductor NRF52832 builtin + nrf52832 Nordic Semiconductor NRF52832 builtin + nrf52833 Nordic Semiconductor NRF52833 builtin + nrf52840 Nordic Semiconductor NRF52840 builtin + nrf54l Nordic Semiconductor NRF54L15 builtin + nrf91 Nordic Semiconductor NRF91XX builtin + rp2040 Raspberry Pi RP2040Core0 builtin + rp2040_core0 Raspberry Pi RP2040Core0 builtin + rp2040_core1 Raspberry Pi RP2040Core1 builtin + rp2350 Raspberry Pi RP2350 builtin + rtl8195am Realtek Semiconductor RTL8195AM builtin + rtl8762c Realtek Semiconductor RTL8762C builtin + s32k344 NXP S32K344 builtin + s5js100 Samsung S5JS100 builtin + stm32f051 STMicroelectronics STM32F051 builtin + stm32f103rc STMicroelectronics STM32F103RC builtin + stm32f412xe STMicroelectronics STM32F412xE builtin + stm32f412xg STMicroelectronics STM32F412xG builtin + stm32f429xg STMicroelectronics STM32F429xG builtin + stm32f429xi STMicroelectronics STM32F429xI builtin + stm32f439xg STMicroelectronics STM32F439xG builtin + stm32f439xi STMicroelectronics STM32F439xI builtin + stm32f767zi STMicroelectronics STM32F767xx builtin + stm32h723xx STMicroelectronics STM32H723xx builtin + stm32h743xx STMicroelectronics STM32H743xx builtin + stm32h750xx STMicroelectronics STM32H750xx builtin + stm32h7b0xx STMicroelectronics STM32H7B0xx builtin + stm32l031x6 STMicroelectronics STM32L031x6 builtin + stm32l432kc STMicroelectronics STM32L432xC builtin + stm32l475xc STMicroelectronics STM32L475xC builtin + stm32l475xe STMicroelectronics STM32L475xE builtin + stm32l475xg STMicroelectronics STM32L475xG builtin + w7500 WIZnet W7500 builtin + ytm32b1ld0 Yuntu Microelectronics YTM32B1LD0 builtin + ytm32b1le0 Yuntu Microelectronics YTM32B1LE0 builtin + ytm32b1md1 Yuntu Microelectronics YTM32B1MD1 builtin + ytm32b1me0 YTMicro YTM32B1ME0 builtin diff --git a/tools/hil/test_uart.py b/tools/hil/test_uart.py new file mode 100644 index 0000000..09673f2 --- /dev/null +++ b/tools/hil/test_uart.py @@ -0,0 +1,69 @@ +""" +test_uart.py — HIL тест bsp_uart_host. + +Схема: + conftest.loaded_host_uart → pyocd_utils: FLEXRAM + load ELF + run + conftest.uart → pyserial: открыть VCOM, ждать READY + тесты → uart_cmd() → assert + +Запуск: + uv run pytest test_uart.py -v + uv run pytest test_uart.py -v -m smoke + uv run pytest test_uart.py -v --no-load # ELF уже запущен +""" + +import pytest +from conftest import uart_cmd + + +class TestUartBasic: + """Базовые тесты UART CLI — канал host↔target.""" + + @pytest.fixture(autouse=True) + def _setup(self, loaded_host_uart, uart): + """loaded_host_uart гарантирует что ELF загружен и READY получен.""" + self.ser = uart + + # ------------------------------------------------------------------ + @pytest.mark.smoke + def test_ping(self): + """PING → PONG: канал работает в обе стороны.""" + assert uart_cmd(self.ser, "PING") == "PONG" + + @pytest.mark.smoke + def test_ping_repeated(self): + """Десять PING подряд — нет зависаний, нет потерь.""" + for i in range(10): + assert uart_cmd(self.ser, "PING") == "PONG", f"Сбой на итерации {i}" + + # ------------------------------------------------------------------ + def test_echo_simple(self): + assert uart_cmd(self.ser, "ECHO hello") == "hello" + + def test_echo_with_spaces(self): + assert uart_cmd(self.ser, "ECHO hello world") == "hello world" + + def test_echo_digits(self): + assert uart_cmd(self.ser, "ECHO 12345") == "12345" + + def test_echo_max_payload(self): + """Строка близкая к CLI_LINE_MAX (128) - 5 (prefix 'ECHO ').""" + payload = "x" * 100 + assert uart_cmd(self.ser, f"ECHO {payload}") == payload + + # ------------------------------------------------------------------ + def test_buf_size(self): + """UART_BUF_SIZE возвращает значение совпадающее с прошивкой (512).""" + resp = uart_cmd(self.ser, "UART_BUF_SIZE") + assert resp.isdigit(), f"Ожидалось число, получили: {resp!r}" + assert int(resp) == 512 + + # ------------------------------------------------------------------ + def test_unknown_command(self): + """Неизвестная команда → ERR_UNKNOWN (прошивка не зависает).""" + assert uart_cmd(self.ser, "FOOBAR") == "ERR_UNKNOWN" + + def test_unknown_then_ping(self): + """После неизвестной команды канал продолжает работать.""" + uart_cmd(self.ser, "FOOBAR") + assert uart_cmd(self.ser, "PING") == "PONG" \ No newline at end of file diff --git a/tools/hil/uv.lock b/tools/hil/uv.lock new file mode 100644 index 0000000..69fcf2c --- /dev/null +++ b/tools/hil/uv.lock @@ -0,0 +1,653 @@ +version = 1 +revision = 3 +requires-python = ">=3.10" + +[[package]] +name = "appdirs" +version = "1.4.4" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d7/d8/05696357e0311f5b5c316d7b95f46c669dd9c15aaeecbb48c7d0aeb88c40/appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", size = 13470, upload-time = "2020-05-11T07:59:51.037Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/00/2344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128", size = 9566, upload-time = "2020-05-11T07:59:49.499Z" }, +] + +[[package]] +name = "capstone" +version = "5.0.7" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/dd/9c/28b11f64e2425774efb21c206a6e952cfce6e3e2ef3e4b63cdae32ccd8a5/capstone-5.0.7.tar.gz", hash = "sha256:796bdd69b05fa124fc2aa2e74b9a0b3d4c4e7f3e02add5e583cf2f3bca282ede", size = 2945245, upload-time = "2026-02-09T22:51:56.392Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b2/91/98fdb020106469d2354920ffb989507f8c494d847eb9135202a0b20afe8d/capstone-5.0.7-py3-none-macosx_10_9_universal2.whl", hash = "sha256:388af4ddb9224d3b4f9269673ee575b3f94f77774d48b3f1a283ad13c29a106a", size = 2192836, upload-time = "2026-02-09T22:51:42.782Z" }, + { url = "https://files.pythonhosted.org/packages/b7/6c/f02847b3385651eb00a6a27049bd12982cdd61e981b248e7f0dc8ed15756/capstone-5.0.7-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:a9f64e3d75d8c4d7b3d26bba153b2992aadcf6b8d57674b4ef176b4ecdd9822f", size = 1188995, upload-time = "2026-02-09T22:51:44.653Z" }, + { url = "https://files.pythonhosted.org/packages/8f/43/29cd1dbdb2b55bf339bca36444809503b8311dcc04898726a7e35b47ac86/capstone-5.0.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:acb89f5bf6f625745a104a3a44819d3acea173228055c1eadc60d2282ae490bb", size = 1200084, upload-time = "2026-02-09T22:51:45.668Z" }, + { url = "https://files.pythonhosted.org/packages/7d/32/084419edcd9a3efaadf5c22166de625090fae833aad0672ddd9fa436d1e2/capstone-5.0.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c58546c814567c95e4b9a63bdb8624c960cb8508855c7c767d5f108d7bc09ce2", size = 1458867, upload-time = "2026-02-09T22:51:46.8Z" }, + { url = "https://files.pythonhosted.org/packages/15/3e/3a4f45dd4eda6fc8051f76bf3ed50ead6040d827000371211fbaaf057625/capstone-5.0.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b809a9654844ce0d35099121a851ddd2ab2689df1ff6687037babcedcaae6391", size = 1482184, upload-time = "2026-02-09T22:51:48.467Z" }, + { url = "https://files.pythonhosted.org/packages/4b/a8/6b4df60c822aaeb42954ea6c9fdbf3410feaa6bea6dc3f18f6c363fd1ed2/capstone-5.0.7-py3-none-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80b0f1b93fc703c419fda8cf84cfa017fd8909be62a4e88024273126ab16f006", size = 1481169, upload-time = "2026-02-09T22:51:49.574Z" }, + { url = "https://files.pythonhosted.org/packages/05/24/4162bbc2591091dfa6c161b4a9ef1a6eccb739c20798e58f59f917a8a3d1/capstone-5.0.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:467716e6555d50cb3526b290f0dbdccb5f961839b1f1e299b484fb5d814173e6", size = 1457760, upload-time = "2026-02-09T22:51:50.863Z" }, + { url = "https://files.pythonhosted.org/packages/e1/51/e3913f53ed03a8f7311b1efacbc1052811e129baa37b4f14e79da3cbc0c6/capstone-5.0.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:e551311d4b6dc344fe5518ef6decf4c2dfafe37bba9ad027a53a406930bc5c63", size = 1484528, upload-time = "2026-02-09T22:51:52.483Z" }, + { url = "https://files.pythonhosted.org/packages/0b/98/a7d631f7bca9de02357637cfab1fb90a67992905f2041357ac5732c8a4cd/capstone-5.0.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a13437b28b136c886600e88bee192d25adf56ba1db5597ff5a0bec758bb9c533", size = 1486041, upload-time = "2026-02-09T22:51:53.729Z" }, + { url = "https://files.pythonhosted.org/packages/70/39/2138d890a8e827636b9de9924fbc8527fe83e38b6d26605b30ac55e30ebe/capstone-5.0.7-py3-none-win_amd64.whl", hash = "sha256:4ab8bcb7da8f221ff45926ca168ca33e76f7237d06fbf3c10780002faa2670e1", size = 1272204, upload-time = "2026-02-09T22:51:54.829Z" }, +] + +[[package]] +name = "cffi" +version = "2.0.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "pycparser", marker = "implementation_name != 'PyPy'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/93/d7/516d984057745a6cd96575eea814fe1edd6646ee6efd552fb7b0921dec83/cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", size = 184283, upload-time = "2025-09-08T23:22:08.01Z" }, + { url = "https://files.pythonhosted.org/packages/9e/84/ad6a0b408daa859246f57c03efd28e5dd1b33c21737c2db84cae8c237aa5/cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", size = 180504, upload-time = "2025-09-08T23:22:10.637Z" }, + { url = "https://files.pythonhosted.org/packages/50/bd/b1a6362b80628111e6653c961f987faa55262b4002fcec42308cad1db680/cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c", size = 208811, upload-time = "2025-09-08T23:22:12.267Z" }, + { url = "https://files.pythonhosted.org/packages/4f/27/6933a8b2562d7bd1fb595074cf99cc81fc3789f6a6c05cdabb46284a3188/cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb", size = 216402, upload-time = "2025-09-08T23:22:13.455Z" }, + { url = "https://files.pythonhosted.org/packages/05/eb/b86f2a2645b62adcfff53b0dd97e8dfafb5c8aa864bd0d9a2c2049a0d551/cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0", size = 203217, upload-time = "2025-09-08T23:22:14.596Z" }, + { url = "https://files.pythonhosted.org/packages/9f/e0/6cbe77a53acf5acc7c08cc186c9928864bd7c005f9efd0d126884858a5fe/cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4", size = 203079, upload-time = "2025-09-08T23:22:15.769Z" }, + { url = "https://files.pythonhosted.org/packages/98/29/9b366e70e243eb3d14a5cb488dfd3a0b6b2f1fb001a203f653b93ccfac88/cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453", size = 216475, upload-time = "2025-09-08T23:22:17.427Z" }, + { url = "https://files.pythonhosted.org/packages/21/7a/13b24e70d2f90a322f2900c5d8e1f14fa7e2a6b3332b7309ba7b2ba51a5a/cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495", size = 218829, upload-time = "2025-09-08T23:22:19.069Z" }, + { url = "https://files.pythonhosted.org/packages/60/99/c9dc110974c59cc981b1f5b66e1d8af8af764e00f0293266824d9c4254bc/cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5", size = 211211, upload-time = "2025-09-08T23:22:20.588Z" }, + { url = "https://files.pythonhosted.org/packages/49/72/ff2d12dbf21aca1b32a40ed792ee6b40f6dc3a9cf1644bd7ef6e95e0ac5e/cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb", size = 218036, upload-time = "2025-09-08T23:22:22.143Z" }, + { url = "https://files.pythonhosted.org/packages/e2/cc/027d7fb82e58c48ea717149b03bcadcbdc293553edb283af792bd4bcbb3f/cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a", size = 172184, upload-time = "2025-09-08T23:22:23.328Z" }, + { url = "https://files.pythonhosted.org/packages/33/fa/072dd15ae27fbb4e06b437eb6e944e75b068deb09e2a2826039e49ee2045/cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739", size = 182790, upload-time = "2025-09-08T23:22:24.752Z" }, + { url = "https://files.pythonhosted.org/packages/12/4a/3dfd5f7850cbf0d06dc84ba9aa00db766b52ca38d8b86e3a38314d52498c/cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", size = 184344, upload-time = "2025-09-08T23:22:26.456Z" }, + { url = "https://files.pythonhosted.org/packages/4f/8b/f0e4c441227ba756aafbe78f117485b25bb26b1c059d01f137fa6d14896b/cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", size = 180560, upload-time = "2025-09-08T23:22:28.197Z" }, + { url = "https://files.pythonhosted.org/packages/b1/b7/1200d354378ef52ec227395d95c2576330fd22a869f7a70e88e1447eb234/cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", size = 209613, upload-time = "2025-09-08T23:22:29.475Z" }, + { url = "https://files.pythonhosted.org/packages/b8/56/6033f5e86e8cc9bb629f0077ba71679508bdf54a9a5e112a3c0b91870332/cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", size = 216476, upload-time = "2025-09-08T23:22:31.063Z" }, + { url = "https://files.pythonhosted.org/packages/dc/7f/55fecd70f7ece178db2f26128ec41430d8720f2d12ca97bf8f0a628207d5/cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", size = 203374, upload-time = "2025-09-08T23:22:32.507Z" }, + { url = "https://files.pythonhosted.org/packages/84/ef/a7b77c8bdc0f77adc3b46888f1ad54be8f3b7821697a7b89126e829e676a/cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", size = 202597, upload-time = "2025-09-08T23:22:34.132Z" }, + { url = "https://files.pythonhosted.org/packages/d7/91/500d892b2bf36529a75b77958edfcd5ad8e2ce4064ce2ecfeab2125d72d1/cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", size = 215574, upload-time = "2025-09-08T23:22:35.443Z" }, + { url = "https://files.pythonhosted.org/packages/44/64/58f6255b62b101093d5df22dcb752596066c7e89dd725e0afaed242a61be/cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", size = 218971, upload-time = "2025-09-08T23:22:36.805Z" }, + { url = "https://files.pythonhosted.org/packages/ab/49/fa72cebe2fd8a55fbe14956f9970fe8eb1ac59e5df042f603ef7c8ba0adc/cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", size = 211972, upload-time = "2025-09-08T23:22:38.436Z" }, + { url = "https://files.pythonhosted.org/packages/0b/28/dd0967a76aab36731b6ebfe64dec4e981aff7e0608f60c2d46b46982607d/cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", size = 217078, upload-time = "2025-09-08T23:22:39.776Z" }, + { url = "https://files.pythonhosted.org/packages/2b/c0/015b25184413d7ab0a410775fdb4a50fca20f5589b5dab1dbbfa3baad8ce/cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", size = 172076, upload-time = "2025-09-08T23:22:40.95Z" }, + { url = "https://files.pythonhosted.org/packages/ae/8f/dc5531155e7070361eb1b7e4c1a9d896d0cb21c49f807a6c03fd63fc877e/cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", size = 182820, upload-time = "2025-09-08T23:22:42.463Z" }, + { url = "https://files.pythonhosted.org/packages/95/5c/1b493356429f9aecfd56bc171285a4c4ac8697f76e9bbbbb105e537853a1/cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", size = 177635, upload-time = "2025-09-08T23:22:43.623Z" }, + { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, + { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, + { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, + { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, + { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, + { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, + { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, + { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, + { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, + { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, + { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, + { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, + { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, + { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, + { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, + { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, + { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, + { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, + { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, + { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, + { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, + { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, + { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, + { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, + { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, + { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, + { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, + { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, + { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, + { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, + { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, + { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, + { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, + { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, + { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, + { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, + { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, + { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, + { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, + { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, + { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, + { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, + { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, + { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, + { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, + { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, +] + +[[package]] +name = "cmsis-pack-manager" +version = "0.6.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "appdirs" }, + { name = "cffi" }, + { name = "pyyaml" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/61/df/07336875bb9a51053eb671b3d6046b23552eb9e9301b917336b0f392a82b/cmsis_pack_manager-0.6.0.tar.gz", hash = "sha256:94913a3db9695f8d0676a4a74916a5626984e2b46f923ada61881e4f5064079e", size = 67773, upload-time = "2025-06-27T02:42:59.42Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a6/9b/a9eafbafc92d56902b963d10e4c72c2b23598fd609caaf0087ed39a9b12f/cmsis_pack_manager-0.6.0-py3-none-linux_armv6l.whl", hash = "sha256:2c540ae648479ca91487585ca7cbda830fa7a1b9244a7b20765510231cd3c91a", size = 3484862, upload-time = "2025-06-27T02:36:14.167Z" }, + { url = "https://files.pythonhosted.org/packages/de/b2/970a9ddaebd82712d496ae2ba98176edf531be16b1b6abb46e3088ceebdb/cmsis_pack_manager-0.6.0-py3-none-macosx_10_12_universal2.whl", hash = "sha256:4b912d77b5a13146c936a87673a840ccdbf7305fa0a21414cde74709c246c052", size = 4122951, upload-time = "2025-06-27T02:36:15.893Z" }, + { url = "https://files.pythonhosted.org/packages/46/85/66f9839456e1c240a1f55594faf7efced1054bad5c2137326f4bc6f7ef5e/cmsis_pack_manager-0.6.0-py3-none-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f734bf40b19103222716ab4920da78e5af37777a19769e920472218146f7f2e3", size = 3770533, upload-time = "2025-06-27T02:36:17.335Z" }, + { url = "https://files.pythonhosted.org/packages/78/a1/217310c633609bfde6a8553222295b08e6f50c99f347cb3bb6d556a74ae0/cmsis_pack_manager-0.6.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c073b93db44c86cb27b60dc98d42b54c3fd84be479979657def094c5da342c36", size = 3413476, upload-time = "2025-06-27T02:36:18.827Z" }, + { url = "https://files.pythonhosted.org/packages/a2/87/83a3e0bcd0a75110488842526637f22fadcb7dae6b8a9afb848115141280/cmsis_pack_manager-0.6.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3b48ea644034acda9bd2a6afe9f89f4d6b67ee28fe5800a25dbb51e179310b5c", size = 3462120, upload-time = "2025-06-27T02:36:20.337Z" }, + { url = "https://files.pythonhosted.org/packages/75/29/c65da965f9b60f2d470f01020a5cab8e8abe5113f4b22ecaadcfba22fa44/cmsis_pack_manager-0.6.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8c0a2cb8790168496df493eb178215a8b638d5d9c2176289764da0686ec7fd", size = 3666217, upload-time = "2025-06-27T02:36:21.882Z" }, + { url = "https://files.pythonhosted.org/packages/4c/c4/619a3e979666fa640bdb5333f6782bf709962c39da0770fdadb4f8d51652/cmsis_pack_manager-0.6.0-py3-none-win32.whl", hash = "sha256:8e3830566ee7b2f596f538b58e42500b7dffdfe18ce0b543b07c2715ad7734f5", size = 1520643, upload-time = "2025-06-27T02:36:24.766Z" }, + { url = "https://files.pythonhosted.org/packages/b5/7e/547624bf371eeaeae6370ed754bebbafbbf114a2d7dfc372c4e5a7ff3ded/cmsis_pack_manager-0.6.0-py3-none-win_amd64.whl", hash = "sha256:53fc43ae474905d107889681c5829ea90b6211d139794fa3f8691c9b0da3bb85", size = 1795914, upload-time = "2025-06-27T02:36:23.25Z" }, +] + +[[package]] +name = "colorama" +version = "0.4.6" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, +] + +[[package]] +name = "exceptiongroup" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "typing-extensions", marker = "python_full_version < '3.13'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/50/79/66800aadf48771f6b62f7eb014e352e5d06856655206165d775e675a02c9/exceptiongroup-1.3.1.tar.gz", hash = "sha256:8b412432c6055b0b7d14c310000ae93352ed6754f70fa8f7c34141f91c4e3219", size = 30371, upload-time = "2025-11-21T23:01:54.787Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8a/0e/97c33bf5009bdbac74fd2beace167cab3f978feb69cc36f1ef79360d6c4e/exceptiongroup-1.3.1-py3-none-any.whl", hash = "sha256:a7a39a3bd276781e98394987d3a5701d0c4edffb633bb7a5144577f82c773598", size = 16740, upload-time = "2025-11-21T23:01:53.443Z" }, +] + +[[package]] +name = "hidapi" +version = "0.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/74/f6/caad9ed701fbb9223eb9e0b41a5514390769b4cb3084a2704ab69e9df0fe/hidapi-0.15.0.tar.gz", hash = "sha256:ecbc265cbe8b7b88755f421e0ba25f084091ec550c2b90ff9e8ddd4fcd540311", size = 184995, upload-time = "2025-12-09T09:48:54.129Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/bd/5a/46620fc194f3fa728dce1966ce977334b080fc33b8b525018ad0e0324b91/hidapi-0.15.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:b0e1781f7fb8b4015e318d839d66fa79e98900d53900e31d04edb336e0103846", size = 70517, upload-time = "2025-12-09T09:44:47.751Z" }, + { url = "https://files.pythonhosted.org/packages/2d/97/bcbcb89f9461c29d3b12dd32affd29e6312fd521154ee7f394496d0039a9/hidapi-0.15.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:1fa3e792987d4b7ed66d785491307e23d4f09d3636f8a23665a9694c43e92409", size = 70181, upload-time = "2025-12-09T09:44:49.321Z" }, + { url = "https://files.pythonhosted.org/packages/26/cc/03f7d56b82a9dc2abcfcd8d55915504e156b6558fb66926629836e551595/hidapi-0.15.0-cp310-cp310-win32.whl", hash = "sha256:81de6b5fcb4fbbbfc71c6d201a2ac6914d1d86e51930ffde5f96faf50e922473", size = 60160, upload-time = "2025-12-09T09:45:04.472Z" }, + { url = "https://files.pythonhosted.org/packages/35/20/a39e33a9088d76f98f80d9320f8413bdaeaa0458b42470e63a47ac4ccf94/hidapi-0.15.0-cp310-cp310-win_amd64.whl", hash = "sha256:c36895abaef3a4004af6c5020ca214fcdacb2a491e4cde5576afbb1dad903548", size = 67063, upload-time = "2025-12-09T09:45:02.852Z" }, + { url = "https://files.pythonhosted.org/packages/3b/c5/3cfa157e7d1fd6af5ad52ea6ea031b1c8da141c61a2506ad5cb3420afa7f/hidapi-0.15.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:53d018e6ac639a217c019c6dcd79a1d30c2401ac7a8147eedd11f2aa29307661", size = 70578, upload-time = "2025-12-09T09:45:05.497Z" }, + { url = "https://files.pythonhosted.org/packages/a5/7e/a43efc66b3b0a68058e76ad0cb2267ce9b30d9006dce10824f3c8b314b08/hidapi-0.15.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:a11ef4b5ab0a2f36e35f44af394bff41cb645b03ce36c5b2f2c00873f112661f", size = 70233, upload-time = "2025-12-09T09:45:06.826Z" }, + { url = "https://files.pythonhosted.org/packages/53/40/6a45375a52027d8142e7acdaeab182a44ff6b818df41384019662eb4f351/hidapi-0.15.0-cp311-cp311-win32.whl", hash = "sha256:2c35bd9cc62227ec91047e36b260f75bdbf50814f3cf3c3b28648ac3ffabd9d7", size = 60070, upload-time = "2025-12-09T09:45:24.745Z" }, + { url = "https://files.pythonhosted.org/packages/4a/a9/8ad4e6423c7416eb8dd765327f3be67f083c985b41b9b48ef3061a64c5f2/hidapi-0.15.0-cp311-cp311-win_amd64.whl", hash = "sha256:c5f7ee9ce8e3373fdb7002497f16bc652d9d4acf20c91275877f55165caf6f0c", size = 67296, upload-time = "2025-12-09T09:45:23.313Z" }, + { url = "https://files.pythonhosted.org/packages/b3/fd/9076aba0736f339b71bda5ee26cb678c02420bf96c7ea5bd9ebcbaf0aa3c/hidapi-0.15.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:0b7eb950214191c936b5bdabaeaf1cab99c0dfc3ae3edc220e3c6d4547296053", size = 70157, upload-time = "2025-12-09T09:45:25.77Z" }, + { url = "https://files.pythonhosted.org/packages/4e/9c/9335957cb7e1ca1be997e97afe850f62a9ff0708015048b3871b553eed5c/hidapi-0.15.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:27933e7f3da7007e5e8d0b25bcf48a79a74e802555e496bba2c7d87f8a77cd61", size = 69597, upload-time = "2025-12-09T09:45:26.707Z" }, + { url = "https://files.pythonhosted.org/packages/e7/a7/9b7fe9acd09ed90d702f8cc01190ab53e01d5022c21808b079144bc9017d/hidapi-0.15.0-cp312-cp312-win32.whl", hash = "sha256:ce6f99554dae15c48cd89a12d5aede77a92a8bd184b45d0b257a17c97e053cdb", size = 60136, upload-time = "2025-12-09T09:45:40.612Z" }, + { url = "https://files.pythonhosted.org/packages/7f/35/f9e2d3ead60b573140546b041dd41c78a48c0e6b573d61a03130adccd32e/hidapi-0.15.0-cp312-cp312-win_amd64.whl", hash = "sha256:9abc71a62bf8a8f1d70a6fd3613f86feb37ddb67e05ed934e734df79e27bf4f6", size = 67073, upload-time = "2025-12-09T09:45:39.261Z" }, + { url = "https://files.pythonhosted.org/packages/d1/19/bda2dce4af8b8028e6d611d5caf60e223a4d32a638d1155eefdc6d8f2462/hidapi-0.15.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:f336dd2dc308928d54a6fdce137814a941a3633ad6722919d7a3142dd99005c2", size = 69045, upload-time = "2025-12-09T09:45:41.534Z" }, + { url = "https://files.pythonhosted.org/packages/1b/18/9b7d6b6a7561654b9b0d7b22fba9c5c971b36f5fc541b04e02d71928349d/hidapi-0.15.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:8017f2213810c3e57d9ab64c2328c593a1129b25804240108a6451fe35cde193", size = 68755, upload-time = "2025-12-09T09:45:42.464Z" }, + { url = "https://files.pythonhosted.org/packages/f9/c7/52f2d903a607f024086829349383dcc7f0c22533fc242f26f9754eba2f06/hidapi-0.15.0-cp313-cp313-win32.whl", hash = "sha256:e4ddb57e71e2b8aca2c685b94b8587dc7d7cfae3c529a7c4076ba0775eb28d4a", size = 59749, upload-time = "2025-12-09T09:45:53.882Z" }, + { url = "https://files.pythonhosted.org/packages/d9/00/7dd3f866a748b0c9eb4adedaa025ec8c533ed1946e9e918661c948a5c0f4/hidapi-0.15.0-cp313-cp313-win_amd64.whl", hash = "sha256:04e0c1ed6d742bc6e1d00599394bec6b2afb8ee2fc5a0a183d3c4c2d4e315c34", size = 66362, upload-time = "2025-12-09T09:45:52.797Z" }, + { url = "https://files.pythonhosted.org/packages/0a/65/e9c70deb396f5baea92cd2ea7803914a55d455c3982367bae4390483e6cc/hidapi-0.15.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:0a6bb079bcd5152dd8968893aecdcbde3954b849896078f54df2254c0d1f301e", size = 69532, upload-time = "2025-12-09T09:45:55.269Z" }, + { url = "https://files.pythonhosted.org/packages/05/eb/d006a7e28ec63b5db76340e4aca6ff077ad336f8fbe64ac804b968927011/hidapi-0.15.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:d80c745d285dfc9889e856226daa8eee6f9e83025ef2cb97e5fe0b1396f7818a", size = 69350, upload-time = "2025-12-09T09:45:56.695Z" }, + { url = "https://files.pythonhosted.org/packages/a2/d6/c0b9d8568fdb38eebb9caaa56643a81d92cccb5d59a5b44e0d975a0f3808/hidapi-0.15.0-cp314-cp314-win32.whl", hash = "sha256:901c03817306eac7edd589f09e0e07467871b45f665949cc4caa645b54abc97b", size = 61089, upload-time = "2025-12-09T09:46:09.59Z" }, + { url = "https://files.pythonhosted.org/packages/cb/14/3b27516b2867e53545164ebd8ef45d0c36857d2a062036e788e56e2e34ce/hidapi-0.15.0-cp314-cp314-win_amd64.whl", hash = "sha256:df0dd435562654e27ad0c7d045074eb1e1e016b09167dd48a258dec1ce4b9127", size = 67710, upload-time = "2025-12-09T09:46:08.677Z" }, + { url = "https://files.pythonhosted.org/packages/97/8f/ff034661faf99acaabe8954fb7db87c5242c79bf763dd972b23b1be5f104/hidapi-0.15.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:2f16e9ea8a1d24ac7a6bf316905823eafd58f78ec815a93118d4710faf95a224", size = 70893, upload-time = "2025-12-09T09:46:10.625Z" }, + { url = "https://files.pythonhosted.org/packages/d8/44/617666a0919d06521d732ef07998306b8ddcbd96038e19348c831acd76e8/hidapi-0.15.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:77f0965ca81a9be44694e84aa18e501d5cda49e372202a38a52d22acc38deadd", size = 71430, upload-time = "2025-12-09T09:46:11.648Z" }, + { url = "https://files.pythonhosted.org/packages/bd/eb/c0676ff1f7e9ec9d99eaa428c66745cdab5b1742808f0c16061c85bd0b18/hidapi-0.15.0-cp314-cp314t-win32.whl", hash = "sha256:005c84c74c940a314b211674edc763a931ace0b63685ace88148496f563e25f9", size = 66288, upload-time = "2025-12-09T09:46:25.246Z" }, + { url = "https://files.pythonhosted.org/packages/cd/5b/f22dbf886824559d3e66d84710c5fb48c09856e6816885da97f2f51700eb/hidapi-0.15.0-cp314-cp314t-win_amd64.whl", hash = "sha256:e384430363d400c4ffb33fe65f22a61c9f288a870158dc5a9f5c9d917b7250c7", size = 74723, upload-time = "2025-12-09T09:46:24.36Z" }, +] + +[[package]] +name = "hil" +version = "0.1.0" +source = { virtual = "." } +dependencies = [ + { name = "pyocd" }, + { name = "pyserial" }, + { name = "pytest" }, +] + +[package.metadata] +requires-dist = [ + { name = "pyocd", specifier = ">=0.43.1" }, + { name = "pyserial", specifier = ">=3.5" }, + { name = "pytest", specifier = ">=9.0.2" }, +] + +[[package]] +name = "importlib-metadata" +version = "8.7.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "zipp" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size = 57107, upload-time = "2025-12-21T10:00:19.278Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151", size = 27865, upload-time = "2025-12-21T10:00:18.329Z" }, +] + +[[package]] +name = "importlib-resources" +version = "6.5.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693, upload-time = "2025-01-03T18:51:56.698Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461, upload-time = "2025-01-03T18:51:54.306Z" }, +] + +[[package]] +name = "iniconfig" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/34/14ca021ce8e5dfedc35312d08ba8bf51fdd999c576889fc2c24cb97f4f10/iniconfig-2.3.0.tar.gz", hash = "sha256:c76315c77db068650d49c5b56314774a7804df16fee4402c1f19d6d15d8c4730", size = 20503, upload-time = "2025-10-18T21:55:43.219Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/cb/b1/3846dd7f199d53cb17f49cba7e651e9ce294d8497c8c150530ed11865bb8/iniconfig-2.3.0-py3-none-any.whl", hash = "sha256:f631c04d2c48c52b84d0d0549c99ff3859c98df65b3101406327ecc7d53fbf12", size = 7484, upload-time = "2025-10-18T21:55:41.639Z" }, +] + +[[package]] +name = "intelhex" +version = "2.3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/66/37/1e7522494557d342a24cb236e2aec5d078fac8ed03ad4b61372586406b01/intelhex-2.3.0.tar.gz", hash = "sha256:892b7361a719f4945237da8ccf754e9513db32f5628852785aea108dcd250093", size = 44513, upload-time = "2020-10-20T20:35:51.526Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/97/78/79461288da2b13ed0a13deb65c4ad1428acb674b95278fa9abf1cefe62a2/intelhex-2.3.0-py2.py3-none-any.whl", hash = "sha256:87cc5225657524ec6361354be928adfd56bcf2a3dcc646c40f8f094c39c07db4", size = 50914, upload-time = "2020-10-20T20:35:50.162Z" }, +] + +[[package]] +name = "intervaltree" +version = "3.2.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "sortedcontainers" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/53/c3/b2afa612aa0373f3e6bb190e6de35f293b307d1537f109e3e25dbfcdf212/intervaltree-3.2.1.tar.gz", hash = "sha256:f3f7e8baeb7dd75b9f7a6d33cf3ec10025984a8e66e3016d537e52130c73cfe2", size = 1231531, upload-time = "2025-12-24T04:25:06.773Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/83/7f/8a80a1c7c2ed05822b5a2b312d2995f30c533641f8198366ba2e26a7bb03/intervaltree-3.2.1-py2.py3-none-any.whl", hash = "sha256:a8a8381bbd35d48ceebee932c77ffc988492d22fb1d27d0ba1d74a7694eb8f0b", size = 25929, upload-time = "2025-12-24T04:25:05.298Z" }, +] + +[[package]] +name = "lark" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/da/34/28fff3ab31ccff1fd4f6c7c7b0ceb2b6968d8ea4950663eadcb5720591a0/lark-1.3.1.tar.gz", hash = "sha256:b426a7a6d6d53189d318f2b6236ab5d6429eaf09259f1ca33eb716eed10d2905", size = 382732, upload-time = "2025-10-27T18:25:56.653Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/82/3d/14ce75ef66813643812f3093ab17e46d3a206942ce7376d31ec2d36229e7/lark-1.3.1-py3-none-any.whl", hash = "sha256:c629b661023a014c37da873b4ff58a817398d12635d3bbb2c5a03be7fe5d1e12", size = 113151, upload-time = "2025-10-27T18:25:54.882Z" }, +] + +[[package]] +name = "libusb-package" +version = "1.0.26.3" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "importlib-resources" }, +] +wheels = [ + { url = "https://files.pythonhosted.org/packages/aa/27/c989cd606683102170c2dc2e89771a22dc71b9d88c4d20c3a97f6d23a0a1/libusb_package-1.0.26.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2ffa01d1db3ef9e7faa62b03f409cd077232885ae3fab6f95912db78035a41db", size = 63863, upload-time = "2025-04-01T12:59:12.09Z" }, + { url = "https://files.pythonhosted.org/packages/c2/e4/663a37d23b3a47a641f74556bb42c04b26c46b95fb8a65c11421cb0ccb0d/libusb_package-1.0.26.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:95bbf9872674318a23450cd92053eee01683eeae6b6aa76eba30ee5f37c3765b", size = 59502, upload-time = "2025-04-01T12:59:13.489Z" }, + { url = "https://files.pythonhosted.org/packages/a7/93/c99ea3b13539c501c41e605645693346e08cfcb7747025ee640502f7460d/libusb_package-1.0.26.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36a1c48779c8763fc6bc0331fda668c93b58d55934236d0393d3ec026875f7cd", size = 70247, upload-time = "2025-04-01T14:53:00.28Z" }, + { url = "https://files.pythonhosted.org/packages/2f/c4/84c7af13453e840ba2e3e9f247c9855035077a7214c1f0f273e1df5a845f/libusb_package-1.0.26.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:209efb9a78ac652afc2332b0a63ef2e423202fa3a1bebe5fe3c499e0922afc03", size = 74537, upload-time = "2025-04-01T14:53:01.995Z" }, + { url = "https://files.pythonhosted.org/packages/79/f8/933f70e9a1e05e0d25fb7fb6a5a4512ba7845203b11afc163cfdc98e9b88/libusb_package-1.0.26.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:433e89dd1f9f9a4149b975247cf1d493170454945fec54b4db9fe61c9e6b861f", size = 70652, upload-time = "2025-04-01T14:53:03.346Z" }, + { url = "https://files.pythonhosted.org/packages/ae/96/77f873c2a3a84b93439a973c70ecc53d2b9ae14cb45b4ba710b89d822228/libusb_package-1.0.26.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7e6fcad72db04b30c8495ac0df6a9b1a4ec8705930bfa2160cc9b018f14101a1", size = 71861, upload-time = "2025-04-01T14:53:04.507Z" }, + { url = "https://files.pythonhosted.org/packages/ba/6e/64f83de4274e4a10ad28a03ff7879d3765c5d7efe0e5c833938318a7de20/libusb_package-1.0.26.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:65ee502c4999ded1c71e38769b0a89152c1e03e43b0d35919f3e32a8cbc7cd99", size = 76476, upload-time = "2025-04-01T14:53:05.511Z" }, + { url = "https://files.pythonhosted.org/packages/ad/56/3792e6a41776d85a4113e75c256879355261b5dd1ed22eb55fd8bc924125/libusb_package-1.0.26.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1f6d012df4942c91e6833dd251bd90c1242496a30c81020e43b98df85c66fa30", size = 71037, upload-time = "2025-04-01T14:53:06.642Z" }, + { url = "https://files.pythonhosted.org/packages/ce/f2/99091fdc38e916cc9e254912d1131496ac56ab82506548f6e1fc2eea8429/libusb_package-1.0.26.3-cp310-cp310-win32.whl", hash = "sha256:55c3988f622745a4874ac4face117da19969b82d51250e5334cd176f516bcb57", size = 77642, upload-time = "2025-04-01T12:58:00.114Z" }, + { url = "https://files.pythonhosted.org/packages/c1/9a/7bc9f60e563e535bf80b125d0d7541ad07ecb0160965d48cb8b6dccc2cf6/libusb_package-1.0.26.3-cp310-cp310-win_amd64.whl", hash = "sha256:ba5e87e70833e5fff977d7bf12b7107df427ee21a8021d59520e1fdf14a32368", size = 90594, upload-time = "2025-04-01T12:58:01.799Z" }, + { url = "https://files.pythonhosted.org/packages/c6/bf/3fe9d322e2dcd0437ae2bd6a039117965702ed473ca59d2d6a1c39838009/libusb_package-1.0.26.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:60e15d7d3e4aab31794da95641bc28c4ffec9e24f50891ce33f75794b8f531f3", size = 63864, upload-time = "2025-04-01T12:59:14.567Z" }, + { url = "https://files.pythonhosted.org/packages/bc/70/df0348c11e6aaead4a66cc59840e102ddf64baf8e4b2c1ad5cff1ca83554/libusb_package-1.0.26.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4d93a6137609cf72dc5db69bc337ddf96520231e395beeff69fa77a923090003", size = 59502, upload-time = "2025-04-01T12:59:15.863Z" }, + { url = "https://files.pythonhosted.org/packages/27/67/6c84eebc9fcdf7f26704b5d32b51b3ee5bf4e9090d61286941257bdc8702/libusb_package-1.0.26.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fafb69c5fd42b241fbd20493d014328c507d34e1b7ceb883a20ef14565b26898", size = 70247, upload-time = "2025-04-01T14:53:07.606Z" }, + { url = "https://files.pythonhosted.org/packages/d0/b4/cbcc42ca4b3d8778bf081b96e6e6288a437d82a4cc4e9b982bef40a88856/libusb_package-1.0.26.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b0c206cd8a30565a0cede3ba426929e70a37e7b769e41a5ac7f00ca6737dc5d", size = 74537, upload-time = "2025-04-01T14:53:08.61Z" }, + { url = "https://files.pythonhosted.org/packages/c9/0f/fd203fb1fa5eda1d446f345d84205f23533767e6ef837a7c77a2599d5783/libusb_package-1.0.26.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80a2041331c087d5887969405837f86c8422120fe9ba3e6faa44bf4810f07b71", size = 70653, upload-time = "2025-04-01T14:53:09.576Z" }, + { url = "https://files.pythonhosted.org/packages/79/ef/dcc682cb4b29c4d4cdb23df65825c6276753184f6a7b4338c54a59a54c20/libusb_package-1.0.26.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:48b536a1279ee0dbf70b898cffd16cd661774d2c8bbec8ff7178a5bc20196af3", size = 71859, upload-time = "2025-04-01T14:53:10.987Z" }, + { url = "https://files.pythonhosted.org/packages/62/4d/323d5ac4ba339362e4b148c291fbc6e7ee04c6395d5fec967b32432db5c5/libusb_package-1.0.26.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3f273e33ff1810242f81ea3a0286e25887d99d99019ba83e08be0d1ca456cc05", size = 76476, upload-time = "2025-04-01T14:53:12.019Z" }, + { url = "https://files.pythonhosted.org/packages/a3/3b/506db7f6cbe5dc2f38c14b272b8faf4d43e5559ac99d4dce1a41026ec925/libusb_package-1.0.26.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:67476093601e1ea58a6130426795b906acd8d18d51c84e29a3a69548a5dfcf5d", size = 71037, upload-time = "2025-04-01T14:53:13.42Z" }, + { url = "https://files.pythonhosted.org/packages/3e/40/2538763c06e07bbbe0a5c8830779ef1ed1cea845264a91973bf31b9ecce5/libusb_package-1.0.26.3-cp311-cp311-win32.whl", hash = "sha256:8f3eed2852ee4f08847a221749a98d0f4f3962f8bed967e2253327db1171ba60", size = 77642, upload-time = "2025-04-01T12:58:03.106Z" }, + { url = "https://files.pythonhosted.org/packages/a4/46/0cd5ea91c5bbe6293c0936c96915051e31750f72e9556718af666af3fe45/libusb_package-1.0.26.3-cp311-cp311-win_amd64.whl", hash = "sha256:b48b5f5b17c7ac5e315e233f9ee801f730aac6183eb53a3226b01245d7bcfe00", size = 90592, upload-time = "2025-04-01T12:58:04.103Z" }, + { url = "https://files.pythonhosted.org/packages/2e/f6/83e13936b5799360eae8f0e31b5b298dd092451b91136d7cd13852777954/libusb_package-1.0.26.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c9404298485762a4e73b416e8a3208d33aa3274fb9b870c2a1cacba7e2918f19", size = 62045, upload-time = "2025-04-01T12:59:16.817Z" }, + { url = "https://files.pythonhosted.org/packages/33/97/86ed73880b6734c9383be5f34061b541e8fe5bd0303580b1f5abe2962d58/libusb_package-1.0.26.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8126f6711318dad4cb2805ea20cd47b895a847207087d8fdb032e082dd7a2e24", size = 59502, upload-time = "2025-04-01T12:59:17.72Z" }, + { url = "https://files.pythonhosted.org/packages/95/f7/27b67b8fe63450abf0b0b66aacf75d5d64cdf30317e214409ceb534f34b4/libusb_package-1.0.26.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11c219366e4a2368117b9a9807261f3506b5623531f8b8ce41af5bbaec8156a0", size = 70247, upload-time = "2025-04-01T14:53:14.387Z" }, + { url = "https://files.pythonhosted.org/packages/8c/11/613543f9c6dab5a82eefd0c78d52d08b5d9eb93a0362151fbedf74b32541/libusb_package-1.0.26.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8809a50d8ab84297344c54e862027090c0d73b14abef843a8b5f783313f49457", size = 74537, upload-time = "2025-04-01T14:53:15.345Z" }, + { url = "https://files.pythonhosted.org/packages/f0/43/5a2331615693b56221a902869fb2094d9a0b9a764a8706c8ba16e915f77c/libusb_package-1.0.26.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a83067c3dfdbb3856badb4532eaea22e8502b52ce4245f5ab46acf93d7fbd471", size = 70652, upload-time = "2025-04-01T14:53:16.319Z" }, + { url = "https://files.pythonhosted.org/packages/44/1a/186d4ec86421b69feb45e214edb5301fbcb9e8dc9df963678aeff1a447d5/libusb_package-1.0.26.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b56be087ea9cde8e50fb02740a4f0cefb6f63c61ac2e7812a9244487614a3973", size = 71860, upload-time = "2025-04-01T14:53:17.87Z" }, + { url = "https://files.pythonhosted.org/packages/4b/3c/8cebdad822d7bfcb683a77d5fd113fbc6f72516cfb7c1c3a274fefafa8e9/libusb_package-1.0.26.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ea0f6bf40e54b1671e763e40c9dbed46bf7f596a4cd98b7c827e147f176d8c97", size = 76476, upload-time = "2025-04-01T14:53:19.202Z" }, + { url = "https://files.pythonhosted.org/packages/49/5f/30c625b6c4ecd14871644c1d16e97d7c971f82a0f87a9cfa81022f85bcfc/libusb_package-1.0.26.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b40f77df991c6db8621de9575504886eca03a00277e521a4d64b66cbef8f6997", size = 71037, upload-time = "2025-04-01T14:53:21.359Z" }, + { url = "https://files.pythonhosted.org/packages/7f/e9/3aa3ff3242867b7f22ee3ce28d0e93ff88547f170ca1b8a6edc59660d974/libusb_package-1.0.26.3-cp312-cp312-win32.whl", hash = "sha256:6eee99c9fde137443869c8604d0c01b2127a9545ebc59d06a3376cf1d891e786", size = 77642, upload-time = "2025-04-01T12:58:05.471Z" }, + { url = "https://files.pythonhosted.org/packages/15/0e/913ddb1849f828fc385438874c34541939d9b06c0e5616f48f24cddd24de/libusb_package-1.0.26.3-cp312-cp312-win_amd64.whl", hash = "sha256:5e09c0b6b3cd475841cffe78e46e91df58f0c6c02ea105ea1a4d0755a07c8006", size = 90593, upload-time = "2025-04-01T12:58:06.798Z" }, + { url = "https://files.pythonhosted.org/packages/b4/b8/23bc7f3f53b4a5b1027c721ec3eb42324ca1ec56355f0d0851307adc7c6c/libusb_package-1.0.26.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:04c4505e2ca68d3dc6938f116ff9bf82daffb06c1a97aba08293a84715a998da", size = 62045, upload-time = "2025-04-01T12:59:18.698Z" }, + { url = "https://files.pythonhosted.org/packages/a2/f8/e3be96d0604070488ddc5ce5af1976992e1f4a00e6441c94edf807f274d5/libusb_package-1.0.26.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4961cdb3c622aa9f858d3e4f99a58ce5e822a97c22abc77040fd806cb5fa4c66", size = 59502, upload-time = "2025-04-01T12:59:19.632Z" }, + { url = "https://files.pythonhosted.org/packages/24/d5/df1508df5e6776ac8a09a2858991df29bc96ea6a0d1f90240b1c4d59b45d/libusb_package-1.0.26.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16182670e0c23235521b447054c5a01600bd8f1eed3bb08eedbb0d9f8a43249f", size = 70247, upload-time = "2025-04-01T14:53:22.328Z" }, + { url = "https://files.pythonhosted.org/packages/65/01/4cc9eed12b9214c088cfa8055ece3b1db970404400be9d7e3dda68d198f2/libusb_package-1.0.26.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:75ea57b2cc903d28ec1d4b909902df442cbf21949d80d5b3d8b9dac36ac45d1a", size = 74537, upload-time = "2025-04-01T14:53:23.306Z" }, + { url = "https://files.pythonhosted.org/packages/99/83/9eb317f706f588f4b6679bddb8abee3b115ce53dc3fa560cca59910f8807/libusb_package-1.0.26.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d30b51b128ef5112fff73268b4696fea00b5676b3f39a5ee859bd76cb3ace5", size = 70651, upload-time = "2025-04-01T14:53:24.33Z" }, + { url = "https://files.pythonhosted.org/packages/22/49/85d3b307b4a20cf0150ab381e6e0385e5b78cb5dede8bade0a2d655d3fd3/libusb_package-1.0.26.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5c098dcfcfa8000cab42f33e19628c8fdb16111670db381048b2993651f2413b", size = 71860, upload-time = "2025-04-01T14:53:25.752Z" }, + { url = "https://files.pythonhosted.org/packages/da/7a/2271a5ae542d9036d9254415ae745d5c5d01a08d56d13054b2439bf9d392/libusb_package-1.0.26.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:93169aeab0657255fe6c9f757cf408f559db13827a1d122fc89239994d7d51f1", size = 76477, upload-time = "2025-04-01T14:53:27.564Z" }, + { url = "https://files.pythonhosted.org/packages/5c/9d/d06d53994bb164564ec142ef631a4afa31e324994cf223f169ecca127f3a/libusb_package-1.0.26.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:63257653ee1ee06aa836e942f4bb89a1d7a0c6ae3d6183647a9011e585ffa1e3", size = 71036, upload-time = "2025-04-01T14:53:29.011Z" }, + { url = "https://files.pythonhosted.org/packages/32/3d/97f775a1d582548b1eb2a42444c58813e5fd93d568fc3b9ace59f64df527/libusb_package-1.0.26.3-cp313-cp313-win32.whl", hash = "sha256:05db4cc801db2e6373a808725748a701509f9450fecf393fbebab61c45d50b50", size = 77642, upload-time = "2025-04-01T12:58:07.774Z" }, + { url = "https://files.pythonhosted.org/packages/f1/c4/d5234607697ca60593fbef88428a154317ac31f5c58ee23337b8a9360e91/libusb_package-1.0.26.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cd4aec825dac2b4fa5d23b37f6d72e63a1127987e5a073dabeb7b73528623a3", size = 90593, upload-time = "2025-04-01T12:58:08.676Z" }, + { url = "https://files.pythonhosted.org/packages/9f/20/f5293a167b4e910badc64272131a8bb8dbd80f10dfd843eb07846aafaef2/libusb_package-1.0.26.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6a62bf7fa20fe704ed0413e74d620b37bdfe6b084478d23cc85b1f10708f2596", size = 62194, upload-time = "2025-04-01T12:59:26.137Z" }, + { url = "https://files.pythonhosted.org/packages/28/e5/1ceae06e6c965847d89be36de58908354c35faf641cd4c6071c9f06a7e9b/libusb_package-1.0.26.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:ab40d6b295bcfbe37f280268ea0d0a1ef4b1d795025fe41b3dda48e07eb0fc8e", size = 59506, upload-time = "2025-04-01T12:59:27.081Z" }, + { url = "https://files.pythonhosted.org/packages/6e/74/8afb1a05fda665abebac3bb44a7738f23437cac11081e44a929b51afee6a/libusb_package-1.0.26.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a125d72cca545950ae357aa6d7f0f33dfb39f16b895691cf3f8c9b772bc7e31", size = 70255, upload-time = "2025-04-01T14:53:48.956Z" }, + { url = "https://files.pythonhosted.org/packages/35/46/5e6be05f302e887055a277bbb5cc1db6be9af01319b35f1a9663211b075c/libusb_package-1.0.26.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:229d9f26af5828512828154d6bae4214ef5016a9401dd022477e06d0df5153e7", size = 74543, upload-time = "2025-04-01T14:53:49.979Z" }, + { url = "https://files.pythonhosted.org/packages/16/e4/51a81cc69ba4eefdd9a291cc5e6596a8f7d8c7f2378273917bf64465412d/libusb_package-1.0.26.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b8b862f190c244f29699d783f044e3d816fed84e39bca9a3c3731140f0b1b39", size = 70658, upload-time = "2025-04-01T14:53:51.132Z" }, + { url = "https://files.pythonhosted.org/packages/15/14/2c85379880d475f12ee74a27b02a2ffe435d863f8045fe80e5c246c30f23/libusb_package-1.0.26.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fadaad1181784713948f9cbb7ad1cab8f2b307e784e2e162ed80ba5d2f745901", size = 90602, upload-time = "2025-04-01T12:58:16.828Z" }, +] + +[[package]] +name = "natsort" +version = "8.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e2/a9/a0c57aee75f77794adaf35322f8b6404cbd0f89ad45c87197a937764b7d0/natsort-8.4.0.tar.gz", hash = "sha256:45312c4a0e5507593da193dedd04abb1469253b601ecaf63445ad80f0a1ea581", size = 76575, upload-time = "2023-06-20T04:17:19.925Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ef/82/7a9d0550484a62c6da82858ee9419f3dd1ccc9aa1c26a1e43da3ecd20b0d/natsort-8.4.0-py3-none-any.whl", hash = "sha256:4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c", size = 38268, upload-time = "2023-06-20T04:17:17.522Z" }, +] + +[[package]] +name = "packaging" +version = "26.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, +] + +[[package]] +name = "pluggy" +version = "1.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/f9/e2/3e91f31a7d2b083fe6ef3fa267035b518369d9511ffab804f839851d2779/pluggy-1.6.0.tar.gz", hash = "sha256:7dcc130b76258d33b90f61b658791dede3486c3e6bfb003ee5c9bfb396dd22f3", size = 69412, upload-time = "2025-05-15T12:30:07.975Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/54/20/4d324d65cc6d9205fabedc306948156824eb9f0ee1633355a8f7ec5c66bf/pluggy-1.6.0-py3-none-any.whl", hash = "sha256:e920276dd6813095e9377c0bc5566d94c932c33b27a3e3945d8389c374dd4746", size = 20538, upload-time = "2025-05-15T12:30:06.134Z" }, +] + +[[package]] +name = "prettytable" +version = "3.17.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "wcwidth" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/79/45/b0847d88d6cfeb4413566738c8bbf1e1995fad3d42515327ff32cc1eb578/prettytable-3.17.0.tar.gz", hash = "sha256:59f2590776527f3c9e8cf9fe7b66dd215837cca96a9c39567414cbc632e8ddb0", size = 67892, upload-time = "2025-11-14T17:33:20.212Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/ee/8c/83087ebc47ab0396ce092363001fa37c17153119ee282700c0713a195853/prettytable-3.17.0-py3-none-any.whl", hash = "sha256:aad69b294ddbe3e1f95ef8886a060ed1666a0b83018bbf56295f6f226c43d287", size = 34433, upload-time = "2025-11-14T17:33:19.093Z" }, +] + +[[package]] +name = "psutil" +version = "7.2.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372", size = 493740, upload-time = "2026-01-28T18:14:54.428Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/51/08/510cbdb69c25a96f4ae523f733cdc963ae654904e8db864c07585ef99875/psutil-7.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2edccc433cbfa046b980b0df0171cd25bcaeb3a68fe9022db0979e7aa74a826b", size = 130595, upload-time = "2026-01-28T18:14:57.293Z" }, + { url = "https://files.pythonhosted.org/packages/d6/f5/97baea3fe7a5a9af7436301f85490905379b1c6f2dd51fe3ecf24b4c5fbf/psutil-7.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78c8603dcd9a04c7364f1a3e670cea95d51ee865e4efb3556a3a63adef958ea", size = 131082, upload-time = "2026-01-28T18:14:59.732Z" }, + { url = "https://files.pythonhosted.org/packages/37/d6/246513fbf9fa174af531f28412297dd05241d97a75911ac8febefa1a53c6/psutil-7.2.2-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a571f2330c966c62aeda00dd24620425d4b0cc86881c89861fbc04549e5dc63", size = 181476, upload-time = "2026-01-28T18:15:01.884Z" }, + { url = "https://files.pythonhosted.org/packages/b8/b5/9182c9af3836cca61696dabe4fd1304e17bc56cb62f17439e1154f225dd3/psutil-7.2.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:917e891983ca3c1887b4ef36447b1e0873e70c933afc831c6b6da078ba474312", size = 184062, upload-time = "2026-01-28T18:15:04.436Z" }, + { url = "https://files.pythonhosted.org/packages/16/ba/0756dca669f5a9300d0cbcbfae9a4c30e446dfc7440ffe43ded5724bfd93/psutil-7.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:ab486563df44c17f5173621c7b198955bd6b613fb87c71c161f827d3fb149a9b", size = 139893, upload-time = "2026-01-28T18:15:06.378Z" }, + { url = "https://files.pythonhosted.org/packages/1c/61/8fa0e26f33623b49949346de05ec1ddaad02ed8ba64af45f40a147dbfa97/psutil-7.2.2-cp313-cp313t-win_arm64.whl", hash = "sha256:ae0aefdd8796a7737eccea863f80f81e468a1e4cf14d926bd9b6f5f2d5f90ca9", size = 135589, upload-time = "2026-01-28T18:15:08.03Z" }, + { url = "https://files.pythonhosted.org/packages/81/69/ef179ab5ca24f32acc1dac0c247fd6a13b501fd5534dbae0e05a1c48b66d/psutil-7.2.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:eed63d3b4d62449571547b60578c5b2c4bcccc5387148db46e0c2313dad0ee00", size = 130664, upload-time = "2026-01-28T18:15:09.469Z" }, + { url = "https://files.pythonhosted.org/packages/7b/64/665248b557a236d3fa9efc378d60d95ef56dd0a490c2cd37dafc7660d4a9/psutil-7.2.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7b6d09433a10592ce39b13d7be5a54fbac1d1228ed29abc880fb23df7cb694c9", size = 131087, upload-time = "2026-01-28T18:15:11.724Z" }, + { url = "https://files.pythonhosted.org/packages/d5/2e/e6782744700d6759ebce3043dcfa661fb61e2fb752b91cdeae9af12c2178/psutil-7.2.2-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fa4ecf83bcdf6e6c8f4449aff98eefb5d0604bf88cb883d7da3d8d2d909546a", size = 182383, upload-time = "2026-01-28T18:15:13.445Z" }, + { url = "https://files.pythonhosted.org/packages/57/49/0a41cefd10cb7505cdc04dab3eacf24c0c2cb158a998b8c7b1d27ee2c1f5/psutil-7.2.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e452c464a02e7dc7822a05d25db4cde564444a67e58539a00f929c51eddda0cf", size = 185210, upload-time = "2026-01-28T18:15:16.002Z" }, + { url = "https://files.pythonhosted.org/packages/dd/2c/ff9bfb544f283ba5f83ba725a3c5fec6d6b10b8f27ac1dc641c473dc390d/psutil-7.2.2-cp314-cp314t-win_amd64.whl", hash = "sha256:c7663d4e37f13e884d13994247449e9f8f574bc4655d509c3b95e9ec9e2b9dc1", size = 141228, upload-time = "2026-01-28T18:15:18.385Z" }, + { url = "https://files.pythonhosted.org/packages/f2/fc/f8d9c31db14fcec13748d373e668bc3bed94d9077dbc17fb0eebc073233c/psutil-7.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:11fe5a4f613759764e79c65cf11ebdf26e33d6dd34336f8a337aa2996d71c841", size = 136284, upload-time = "2026-01-28T18:15:19.912Z" }, + { url = "https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486", size = 129090, upload-time = "2026-01-28T18:15:22.168Z" }, + { url = "https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979", size = 129859, upload-time = "2026-01-28T18:15:23.795Z" }, + { url = "https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9", size = 155560, upload-time = "2026-01-28T18:15:25.976Z" }, + { url = "https://files.pythonhosted.org/packages/63/65/37648c0c158dc222aba51c089eb3bdfa238e621674dc42d48706e639204f/psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e", size = 156997, upload-time = "2026-01-28T18:15:27.794Z" }, + { url = "https://files.pythonhosted.org/packages/8e/13/125093eadae863ce03c6ffdbae9929430d116a246ef69866dad94da3bfbc/psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8", size = 148972, upload-time = "2026-01-28T18:15:29.342Z" }, + { url = "https://files.pythonhosted.org/packages/04/78/0acd37ca84ce3ddffaa92ef0f571e073faa6d8ff1f0559ab1272188ea2be/psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc", size = 148266, upload-time = "2026-01-28T18:15:31.597Z" }, + { url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988", size = 137737, upload-time = "2026-01-28T18:15:33.849Z" }, + { url = "https://files.pythonhosted.org/packages/8c/c7/7bb2e321574b10df20cbde462a94e2b71d05f9bbda251ef27d104668306a/psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee", size = 134617, upload-time = "2026-01-28T18:15:36.514Z" }, +] + +[[package]] +name = "pycparser" +version = "3.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, +] + +[[package]] +name = "pyelftools" +version = "0.32" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b9/ab/33968940b2deb3d92f5b146bc6d4009a5f95d1d06c148ea2f9ee965071af/pyelftools-0.32.tar.gz", hash = "sha256:6de90ee7b8263e740c8715a925382d4099b354f29ac48ea40d840cf7aa14ace5", size = 15047199, upload-time = "2025-02-19T14:20:05.549Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/af/43/700932c4f0638c3421177144a2e86448c0d75dbaee2c7936bda3f9fd0878/pyelftools-0.32-py3-none-any.whl", hash = "sha256:013df952a006db5e138b1edf6d8a68ecc50630adbd0d83a2d41e7f846163d738", size = 188525, upload-time = "2025-02-19T14:19:59.919Z" }, +] + +[[package]] +name = "pygments" +version = "2.19.2" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/b0/77/a5b8c569bf593b0140bde72ea885a803b82086995367bf2037de0159d924/pygments-2.19.2.tar.gz", hash = "sha256:636cb2477cec7f8952536970bc533bc43743542f70392ae026374600add5b887", size = 4968631, upload-time = "2025-06-21T13:39:12.283Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/c7/21/705964c7812476f378728bdf590ca4b771ec72385c533964653c68e86bdc/pygments-2.19.2-py3-none-any.whl", hash = "sha256:86540386c03d588bb81d44bc3928634ff26449851e99741617ecb9037ee5ec0b", size = 1225217, upload-time = "2025-06-21T13:39:07.939Z" }, +] + +[[package]] +name = "pylink-square" +version = "1.7.0" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "psutil" }, + { name = "six" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/e7/26/12865d2b7784d2ff687d6dc29eea38013688d47a5499df60010e1f13ba4f/pylink_square-1.7.0.tar.gz", hash = "sha256:9a4c4b1cf0cffedd15e00f82c3e23745252a5094c96b27560daac25a0d08aa36", size = 173502, upload-time = "2025-08-28T15:56:47.46Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/b8/db67ffbb71881b02c169b638bc53c9a1bf0d8f41828e3b48974e77f34419/pylink_square-1.7.0-py2.py3-none-any.whl", hash = "sha256:f418db3479b3b86e45f821f88cea5397357beed382eb441ab2fd11e1d4d9e1e3", size = 86908, upload-time = "2025-08-28T15:56:46.171Z" }, +] + +[[package]] +name = "pyocd" +version = "0.43.1" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "capstone" }, + { name = "cmsis-pack-manager" }, + { name = "colorama" }, + { name = "hidapi", marker = "sys_platform != 'linux'" }, + { name = "importlib-metadata" }, + { name = "importlib-resources" }, + { name = "intelhex" }, + { name = "intervaltree" }, + { name = "lark" }, + { name = "libusb-package" }, + { name = "natsort" }, + { name = "prettytable" }, + { name = "pyelftools" }, + { name = "pylink-square" }, + { name = "pyusb" }, + { name = "pyyaml" }, + { name = "typing-extensions" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/3f/f3/ceeb2bd0191e43640b46de7a16b7940ccb3396b3c838995158b99cc8358f/pyocd-0.43.1.tar.gz", hash = "sha256:bd6cbee271dae30a544e384f6f977d9fc3101d931936ea9a19147e0251a5cf9c", size = 16142791, upload-time = "2026-03-05T11:42:33.056Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/8c/be/c9a7f2679375183e2e07141e1e20815027ba2084a5cb1624cdb9f84c8433/pyocd-0.43.1-py3-none-any.whl", hash = "sha256:9462935eb3273e03ad815eba3a9e692c15b1b7ae3dbb5d3a0e8d2926dc05226f", size = 14565904, upload-time = "2026-03-05T11:42:28.547Z" }, +] + +[[package]] +name = "pyserial" +version = "3.5" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/1e/7d/ae3f0a63f41e4d2f6cb66a5b57197850f919f59e558159a4dd3a818f5082/pyserial-3.5.tar.gz", hash = "sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb", size = 159125, upload-time = "2020-11-23T03:59:15.045Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/07/bc/587a445451b253b285629263eb51c2d8e9bcea4fc97826266d186f96f558/pyserial-3.5-py2.py3-none-any.whl", hash = "sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0", size = 90585, upload-time = "2020-11-23T03:59:13.41Z" }, +] + +[[package]] +name = "pytest" +version = "9.0.2" +source = { registry = "https://pypi.org/simple" } +dependencies = [ + { name = "colorama", marker = "sys_platform == 'win32'" }, + { name = "exceptiongroup", marker = "python_full_version < '3.11'" }, + { name = "iniconfig" }, + { name = "packaging" }, + { name = "pluggy" }, + { name = "pygments" }, + { name = "tomli", marker = "python_full_version < '3.11'" }, +] +sdist = { url = "https://files.pythonhosted.org/packages/d1/db/7ef3487e0fb0049ddb5ce41d3a49c235bf9ad299b6a25d5780a89f19230f/pytest-9.0.2.tar.gz", hash = "sha256:75186651a92bd89611d1d9fc20f0b4345fd827c41ccd5c299a868a05d70edf11", size = 1568901, upload-time = "2025-12-06T21:30:51.014Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3b/ab/b3226f0bd7cdcf710fbede2b3548584366da3b19b5021e74f5bde2a8fa3f/pytest-9.0.2-py3-none-any.whl", hash = "sha256:711ffd45bf766d5264d487b917733b453d917afd2b0ad65223959f59089f875b", size = 374801, upload-time = "2025-12-06T21:30:49.154Z" }, +] + +[[package]] +name = "pyusb" +version = "1.3.1" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/00/6b/ce3727395e52b7b76dfcf0c665e37d223b680b9becc60710d4bc08b7b7cb/pyusb-1.3.1.tar.gz", hash = "sha256:3af070b607467c1c164f49d5b0caabe8ac78dbed9298d703a8dbf9df4052d17e", size = 77281, upload-time = "2025-01-08T23:45:01.866Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/28/b8/27e6312e86408a44fe16bd28ee12dd98608b39f7e7e57884a24e8f29b573/pyusb-1.3.1-py3-none-any.whl", hash = "sha256:bf9b754557af4717fe80c2b07cc2b923a9151f5c08d17bdb5345dac09d6a0430", size = 58465, upload-time = "2025-01-08T23:45:00.029Z" }, +] + +[[package]] +name = "pyyaml" +version = "6.0.3" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" }, + { url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" }, + { url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" }, + { url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" }, + { url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" }, + { url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" }, + { url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" }, + { url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" }, + { url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" }, + { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, + { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, + { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" }, + { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload-time = "2025-09-25T21:32:03.376Z" }, + { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload-time = "2025-09-25T21:32:04.553Z" }, + { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload-time = "2025-09-25T21:32:06.152Z" }, + { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload-time = "2025-09-25T21:32:07.367Z" }, + { url = "https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size = 142543, upload-time = "2025-09-25T21:32:08.95Z" }, + { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload-time = "2025-09-25T21:32:09.96Z" }, + { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, + { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, + { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, + { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, + { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, + { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, + { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, + { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, + { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, + { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, + { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, + { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, + { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, + { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, + { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, + { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, + { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, + { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, + { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, + { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, + { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, + { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, + { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, + { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, + { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, + { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, + { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, + { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, + { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, + { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, + { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, + { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, + { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, + { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, + { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, + { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, + { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, + { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, +] + +[[package]] +name = "six" +version = "1.17.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, +] + +[[package]] +name = "sortedcontainers" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594, upload-time = "2021-05-16T22:03:42.897Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload-time = "2021-05-16T22:03:41.177Z" }, +] + +[[package]] +name = "tomli" +version = "2.4.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/82/30/31573e9457673ab10aa432461bee537ce6cef177667deca369efb79df071/tomli-2.4.0.tar.gz", hash = "sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c", size = 17477, upload-time = "2026-01-11T11:22:38.165Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/3c/d9/3dc2289e1f3b32eb19b9785b6a006b28ee99acb37d1d47f78d4c10e28bf8/tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867", size = 153663, upload-time = "2026-01-11T11:21:45.27Z" }, + { url = "https://files.pythonhosted.org/packages/51/32/ef9f6845e6b9ca392cd3f64f9ec185cc6f09f0a2df3db08cbe8809d1d435/tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9", size = 148469, upload-time = "2026-01-11T11:21:46.873Z" }, + { url = "https://files.pythonhosted.org/packages/d6/c2/506e44cce89a8b1b1e047d64bd495c22c9f71f21e05f380f1a950dd9c217/tomli-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95", size = 236039, upload-time = "2026-01-11T11:21:48.503Z" }, + { url = "https://files.pythonhosted.org/packages/b3/40/e1b65986dbc861b7e986e8ec394598187fa8aee85b1650b01dd925ca0be8/tomli-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76", size = 243007, upload-time = "2026-01-11T11:21:49.456Z" }, + { url = "https://files.pythonhosted.org/packages/9c/6f/6e39ce66b58a5b7ae572a0f4352ff40c71e8573633deda43f6a379d56b3e/tomli-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d", size = 240875, upload-time = "2026-01-11T11:21:50.755Z" }, + { url = "https://files.pythonhosted.org/packages/aa/ad/cb089cb190487caa80204d503c7fd0f4d443f90b95cf4ef5cf5aa0f439b0/tomli-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576", size = 246271, upload-time = "2026-01-11T11:21:51.81Z" }, + { url = "https://files.pythonhosted.org/packages/0b/63/69125220e47fd7a3a27fd0de0c6398c89432fec41bc739823bcc66506af6/tomli-2.4.0-cp311-cp311-win32.whl", hash = "sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a", size = 96770, upload-time = "2026-01-11T11:21:52.647Z" }, + { url = "https://files.pythonhosted.org/packages/1e/0d/a22bb6c83f83386b0008425a6cd1fa1c14b5f3dd4bad05e98cf3dbbf4a64/tomli-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa", size = 107626, upload-time = "2026-01-11T11:21:53.459Z" }, + { url = "https://files.pythonhosted.org/packages/2f/6d/77be674a3485e75cacbf2ddba2b146911477bd887dda9d8c9dfb2f15e871/tomli-2.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614", size = 94842, upload-time = "2026-01-11T11:21:54.831Z" }, + { url = "https://files.pythonhosted.org/packages/3c/43/7389a1869f2f26dba52404e1ef13b4784b6b37dac93bac53457e3ff24ca3/tomli-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1", size = 154894, upload-time = "2026-01-11T11:21:56.07Z" }, + { url = "https://files.pythonhosted.org/packages/e9/05/2f9bf110b5294132b2edf13fe6ca6ae456204f3d749f623307cbb7a946f2/tomli-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8", size = 149053, upload-time = "2026-01-11T11:21:57.467Z" }, + { url = "https://files.pythonhosted.org/packages/e8/41/1eda3ca1abc6f6154a8db4d714a4d35c4ad90adc0bcf700657291593fbf3/tomli-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a", size = 243481, upload-time = "2026-01-11T11:21:58.661Z" }, + { url = "https://files.pythonhosted.org/packages/d2/6d/02ff5ab6c8868b41e7d4b987ce2b5f6a51d3335a70aa144edd999e055a01/tomli-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1", size = 251720, upload-time = "2026-01-11T11:22:00.178Z" }, + { url = "https://files.pythonhosted.org/packages/7b/57/0405c59a909c45d5b6f146107c6d997825aa87568b042042f7a9c0afed34/tomli-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b", size = 247014, upload-time = "2026-01-11T11:22:01.238Z" }, + { url = "https://files.pythonhosted.org/packages/2c/0e/2e37568edd944b4165735687cbaf2fe3648129e440c26d02223672ee0630/tomli-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51", size = 251820, upload-time = "2026-01-11T11:22:02.727Z" }, + { url = "https://files.pythonhosted.org/packages/5a/1c/ee3b707fdac82aeeb92d1a113f803cf6d0f37bdca0849cb489553e1f417a/tomli-2.4.0-cp312-cp312-win32.whl", hash = "sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729", size = 97712, upload-time = "2026-01-11T11:22:03.777Z" }, + { url = "https://files.pythonhosted.org/packages/69/13/c07a9177d0b3bab7913299b9278845fc6eaaca14a02667c6be0b0a2270c8/tomli-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da", size = 108296, upload-time = "2026-01-11T11:22:04.86Z" }, + { url = "https://files.pythonhosted.org/packages/18/27/e267a60bbeeee343bcc279bb9e8fbed0cbe224bc7b2a3dc2975f22809a09/tomli-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3", size = 94553, upload-time = "2026-01-11T11:22:05.854Z" }, + { url = "https://files.pythonhosted.org/packages/34/91/7f65f9809f2936e1f4ce6268ae1903074563603b2a2bd969ebbda802744f/tomli-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0", size = 154915, upload-time = "2026-01-11T11:22:06.703Z" }, + { url = "https://files.pythonhosted.org/packages/20/aa/64dd73a5a849c2e8f216b755599c511badde80e91e9bc2271baa7b2cdbb1/tomli-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e", size = 149038, upload-time = "2026-01-11T11:22:07.56Z" }, + { url = "https://files.pythonhosted.org/packages/9e/8a/6d38870bd3d52c8d1505ce054469a73f73a0fe62c0eaf5dddf61447e32fa/tomli-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4", size = 242245, upload-time = "2026-01-11T11:22:08.344Z" }, + { url = "https://files.pythonhosted.org/packages/59/bb/8002fadefb64ab2669e5b977df3f5e444febea60e717e755b38bb7c41029/tomli-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e", size = 250335, upload-time = "2026-01-11T11:22:09.951Z" }, + { url = "https://files.pythonhosted.org/packages/a5/3d/4cdb6f791682b2ea916af2de96121b3cb1284d7c203d97d92d6003e91c8d/tomli-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c", size = 245962, upload-time = "2026-01-11T11:22:11.27Z" }, + { url = "https://files.pythonhosted.org/packages/f2/4a/5f25789f9a460bd858ba9756ff52d0830d825b458e13f754952dd15fb7bb/tomli-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f", size = 250396, upload-time = "2026-01-11T11:22:12.325Z" }, + { url = "https://files.pythonhosted.org/packages/aa/2f/b73a36fea58dfa08e8b3a268750e6853a6aac2a349241a905ebd86f3047a/tomli-2.4.0-cp313-cp313-win32.whl", hash = "sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86", size = 97530, upload-time = "2026-01-11T11:22:13.865Z" }, + { url = "https://files.pythonhosted.org/packages/3b/af/ca18c134b5d75de7e8dc551c5234eaba2e8e951f6b30139599b53de9c187/tomli-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87", size = 108227, upload-time = "2026-01-11T11:22:15.224Z" }, + { url = "https://files.pythonhosted.org/packages/22/c3/b386b832f209fee8073c8138ec50f27b4460db2fdae9ffe022df89a57f9b/tomli-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132", size = 94748, upload-time = "2026-01-11T11:22:16.009Z" }, + { url = "https://files.pythonhosted.org/packages/f3/c4/84047a97eb1004418bc10bdbcfebda209fca6338002eba2dc27cc6d13563/tomli-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6", size = 154725, upload-time = "2026-01-11T11:22:17.269Z" }, + { url = "https://files.pythonhosted.org/packages/a8/5d/d39038e646060b9d76274078cddf146ced86dc2b9e8bbf737ad5983609a0/tomli-2.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc", size = 148901, upload-time = "2026-01-11T11:22:18.287Z" }, + { url = "https://files.pythonhosted.org/packages/73/e5/383be1724cb30f4ce44983d249645684a48c435e1cd4f8b5cded8a816d3c/tomli-2.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66", size = 243375, upload-time = "2026-01-11T11:22:19.154Z" }, + { url = "https://files.pythonhosted.org/packages/31/f0/bea80c17971c8d16d3cc109dc3585b0f2ce1036b5f4a8a183789023574f2/tomli-2.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d", size = 250639, upload-time = "2026-01-11T11:22:20.168Z" }, + { url = "https://files.pythonhosted.org/packages/2c/8f/2853c36abbb7608e3f945d8a74e32ed3a74ee3a1f468f1ffc7d1cb3abba6/tomli-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702", size = 246897, upload-time = "2026-01-11T11:22:21.544Z" }, + { url = "https://files.pythonhosted.org/packages/49/f0/6c05e3196ed5337b9fe7ea003e95fd3819a840b7a0f2bf5a408ef1dad8ed/tomli-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8", size = 254697, upload-time = "2026-01-11T11:22:23.058Z" }, + { url = "https://files.pythonhosted.org/packages/f3/f5/2922ef29c9f2951883525def7429967fc4d8208494e5ab524234f06b688b/tomli-2.4.0-cp314-cp314-win32.whl", hash = "sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776", size = 98567, upload-time = "2026-01-11T11:22:24.033Z" }, + { url = "https://files.pythonhosted.org/packages/7b/31/22b52e2e06dd2a5fdbc3ee73226d763b184ff21fc24e20316a44ccc4d96b/tomli-2.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475", size = 108556, upload-time = "2026-01-11T11:22:25.378Z" }, + { url = "https://files.pythonhosted.org/packages/48/3d/5058dff3255a3d01b705413f64f4306a141a8fd7a251e5a495e3f192a998/tomli-2.4.0-cp314-cp314-win_arm64.whl", hash = "sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2", size = 96014, upload-time = "2026-01-11T11:22:26.138Z" }, + { url = "https://files.pythonhosted.org/packages/b8/4e/75dab8586e268424202d3a1997ef6014919c941b50642a1682df43204c22/tomli-2.4.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9", size = 163339, upload-time = "2026-01-11T11:22:27.143Z" }, + { url = "https://files.pythonhosted.org/packages/06/e3/b904d9ab1016829a776d97f163f183a48be6a4deb87304d1e0116a349519/tomli-2.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0", size = 159490, upload-time = "2026-01-11T11:22:28.399Z" }, + { url = "https://files.pythonhosted.org/packages/e3/5a/fc3622c8b1ad823e8ea98a35e3c632ee316d48f66f80f9708ceb4f2a0322/tomli-2.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df", size = 269398, upload-time = "2026-01-11T11:22:29.345Z" }, + { url = "https://files.pythonhosted.org/packages/fd/33/62bd6152c8bdd4c305ad9faca48f51d3acb2df1f8791b1477d46ff86e7f8/tomli-2.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d", size = 276515, upload-time = "2026-01-11T11:22:30.327Z" }, + { url = "https://files.pythonhosted.org/packages/4b/ff/ae53619499f5235ee4211e62a8d7982ba9e439a0fb4f2f351a93d67c1dd2/tomli-2.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f", size = 273806, upload-time = "2026-01-11T11:22:32.56Z" }, + { url = "https://files.pythonhosted.org/packages/47/71/cbca7787fa68d4d0a9f7072821980b39fbb1b6faeb5f5cf02f4a5559fa28/tomli-2.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b", size = 281340, upload-time = "2026-01-11T11:22:33.505Z" }, + { url = "https://files.pythonhosted.org/packages/f5/00/d595c120963ad42474cf6ee7771ad0d0e8a49d0f01e29576ee9195d9ecdf/tomli-2.4.0-cp314-cp314t-win32.whl", hash = "sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087", size = 108106, upload-time = "2026-01-11T11:22:34.451Z" }, + { url = "https://files.pythonhosted.org/packages/de/69/9aa0c6a505c2f80e519b43764f8b4ba93b5a0bbd2d9a9de6e2b24271b9a5/tomli-2.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd", size = 120504, upload-time = "2026-01-11T11:22:35.764Z" }, + { url = "https://files.pythonhosted.org/packages/b3/9f/f1668c281c58cfae01482f7114a4b88d345e4c140386241a1a24dcc9e7bc/tomli-2.4.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4", size = 99561, upload-time = "2026-01-11T11:22:36.624Z" }, + { url = "https://files.pythonhosted.org/packages/23/d1/136eb2cb77520a31e1f64cbae9d33ec6df0d78bdf4160398e86eec8a8754/tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a", size = 14477, upload-time = "2026-01-11T11:22:37.446Z" }, +] + +[[package]] +name = "typing-extensions" +version = "4.15.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, +] + +[[package]] +name = "wcwidth" +version = "0.6.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/35/a2/8e3becb46433538a38726c948d3399905a4c7cabd0df578ede5dc51f0ec2/wcwidth-0.6.0.tar.gz", hash = "sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159", size = 159684, upload-time = "2026-02-06T19:19:40.919Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/68/5a/199c59e0a824a3db2b89c5d2dade7ab5f9624dbf6448dc291b46d5ec94d3/wcwidth-0.6.0-py3-none-any.whl", hash = "sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad", size = 94189, upload-time = "2026-02-06T19:19:39.646Z" }, +] + +[[package]] +name = "zipp" +version = "3.23.0" +source = { registry = "https://pypi.org/simple" } +sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } +wheels = [ + { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, +] diff --git a/tools/host/uv.lock b/tools/host/uv.lock deleted file mode 100644 index 072b475..0000000 --- a/tools/host/uv.lock +++ /dev/null @@ -1,1279 +0,0 @@ -version = 1 -revision = 3 -requires-python = ">=3.10" -resolution-markers = [ - "python_full_version < '3.11'", - "python_full_version >= '3.11'", -] - -[[package]] -name = "appdirs" -version = "1.4.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d7/d8/05696357e0311f5b5c316d7b95f46c669dd9c15aaeecbb48c7d0aeb88c40/appdirs-1.4.4.tar.gz", hash = "sha256:7d5d0167b2b1ba821647616af46a749d1c653740dd0d2415100fe26e27afdf41", size = 13470, upload-time = "2020-05-11T07:59:51.037Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3b/00/2344469e2084fb287c2e0b57b72910309874c3245463acd6cf5e3db69324/appdirs-1.4.4-py2.py3-none-any.whl", hash = "sha256:a841dacd6b99318a741b166adb07e19ee71a274450e68237b4650ca1055ab128", size = 9566, upload-time = "2020-05-11T07:59:49.499Z" }, -] - -[[package]] -name = "argparse-addons" -version = "0.12.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/9e/35/33ecca1cdbebc5397a77f66edbc20ab76265176f7e3511b7696008ad9038/argparse_addons-0.12.0.tar.gz", hash = "sha256:6322a0dcd706887e76308d23136d5b86da0eab75a282dc6496701d1210b460af", size = 3780, upload-time = "2023-01-29T15:52:13.862Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c1/41/629e70c4cb32c1ddb88de970cd174bbb43d8241c8e07bdffc62a8280297c/argparse_addons-0.12.0-py3-none-any.whl", hash = "sha256:48b70ecd719054fcb0d7e6f25a1fecc13607aac61d446e83f47d211b4ead0d61", size = 3310, upload-time = "2023-01-29T15:52:12.255Z" }, -] - -[[package]] -name = "asn1crypto" -version = "1.5.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/de/cf/d547feed25b5244fcb9392e288ff9fdc3280b10260362fc45d37a798a6ee/asn1crypto-1.5.1.tar.gz", hash = "sha256:13ae38502be632115abf8a24cbe5f4da52e3b5231990aff31123c805306ccb9c", size = 121080, upload-time = "2022-03-15T14:46:52.889Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/c9/7f/09065fd9e27da0eda08b4d6897f1c13535066174cc023af248fc2a8d5e5a/asn1crypto-1.5.1-py2.py3-none-any.whl", hash = "sha256:db4e40728b728508912cbb3d44f19ce188f218e9eba635821bb4b68564f8fd67", size = 105045, upload-time = "2022-03-15T14:46:51.055Z" }, -] - -[[package]] -name = "bincopy" -version = "20.1.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "argparse-addons" }, - { name = "humanfriendly" }, - { name = "pyelftools" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cc/dc/60f074d27b5c08879da2b512c1a7e9f383ef678ae6f74967eb30b6907ff7/bincopy-20.1.1.tar.gz", hash = "sha256:e94a498b9a4abe76703c3772aad466f1563b4fc9809da7965f11bc77094093b9", size = 750841, upload-time = "2026-02-24T16:42:08.181Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/74/68/6aa9c0c0180e2d95a44d56539bf8aa0a2f6e5fd5f09c5a634993eba002a4/bincopy-20.1.1-py3-none-any.whl", hash = "sha256:6bbdecbb784beb470bb380c4e262103d2dfaf5ac24fb52ea6202510dbc00b004", size = 18868, upload-time = "2026-02-24T16:42:05.135Z" }, -] - -[[package]] -name = "bitarray" -version = "3.8.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/95/06/92fdc84448d324ab8434b78e65caf4fb4c6c90b4f8ad9bdd4c8021bfaf1e/bitarray-3.8.0.tar.gz", hash = "sha256:3eae38daffd77c9621ae80c16932eea3fb3a4af141fb7cc724d4ad93eff9210d", size = 151991, upload-time = "2025-11-02T21:41:15.117Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e8/b9/8a645fd36fc4c01ee223f97eccd4699c2f2e91681ccb33c0e963881c8e58/bitarray-3.8.0-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:f08342dc8d19214faa7ef99574dea6c37a2790d6d04a9793ef8fa76c188dc08d", size = 148504, upload-time = "2025-11-02T21:38:54.596Z" }, - { url = "https://files.pythonhosted.org/packages/c0/f4/11b562e13ff732bd0674376f367f0a272034ebc28b8efbafbeb924552d21/bitarray-3.8.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:792462abfeeca6cc8c6c1e6d27e14319682f0182f6b0ba37befe911af794db70", size = 145481, upload-time = "2025-11-02T21:38:56.253Z" }, - { url = "https://files.pythonhosted.org/packages/d3/7c/5a2487da579491b38abab3b437e01d3b05be6e16e69cc5eb304040dcebd5/bitarray-3.8.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0df69d26f21a9d2f1b20266f6737fa43f08aa5015c99900fb69f255fbe4dabb4", size = 322760, upload-time = "2025-11-02T21:38:57.189Z" }, - { url = "https://files.pythonhosted.org/packages/8d/59/f0ef82d6a878d4af1b4961d208a716317929aa172fc0dfa5f4115319a873/bitarray-3.8.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:b4f10d3f304be7183fac79bf2cd997f82e16aa9a9f37343d76c026c6e435a8a8", size = 350332, upload-time = "2025-11-02T21:38:58.238Z" }, - { url = "https://files.pythonhosted.org/packages/e5/ec/d444b22fce853327d4a8adec1de9987e11b28fcc2d7204dcbc544e196ed9/bitarray-3.8.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:fc98ff43abad61f00515ad9a06213b7716699146e46eabd256cdfe7cb522bd97", size = 360787, upload-time = "2025-11-02T21:38:59.239Z" }, - { url = "https://files.pythonhosted.org/packages/9f/9e/60b205f52ea9ff155e9f12249090475159c909039daa29e47cd95e115dd5/bitarray-3.8.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:81c6b4a6c1af800d52a6fa32389ef8f4281583f4f99dc1a40f2bb47667281541", size = 329050, upload-time = "2025-11-02T21:39:00.455Z" }, - { url = "https://files.pythonhosted.org/packages/e3/da/2ce373b423bc85a0eb93ee1cba3977971259a92a116932632f417b1b04d2/bitarray-3.8.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:f3fd8df63c41ff6a676d031956aebf68ebbc687b47c507da25501eb22eec341f", size = 320507, upload-time = "2025-11-02T21:39:01.714Z" }, - { url = "https://files.pythonhosted.org/packages/2a/88/437408a2674b8bdb02063dd1535969b9c73cb8fdd197485de431e506c50e/bitarray-3.8.0-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:f0ce9d9e07c75da8027c62b4c9f45771d1d8aae7dc9ad7fb606c6a5aedbe9741", size = 348449, upload-time = "2025-11-02T21:39:03.124Z" }, - { url = "https://files.pythonhosted.org/packages/97/46/d799e7e731c778b6dcb4627bafd395102065e5ab15a4a31f4222a3e20706/bitarray-3.8.0-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8a9c962c64a4c08def58b9799333e33af94ec53038cf151d36edacdb41f81646", size = 344776, upload-time = "2025-11-02T21:39:04.147Z" }, - { url = "https://files.pythonhosted.org/packages/b3/9a/129fff56d22d316b1c848c6e13e64191485756b5cd6ceb08e640edb80020/bitarray-3.8.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1a54d7e7999735faacdcbe8128e30207abc2caf9f9fd7102d180b32f1b78bfce", size = 325899, upload-time = "2025-11-02T21:39:05.118Z" }, - { url = "https://files.pythonhosted.org/packages/f8/ba/4b01e99452ecc39f4abccf9bf83fe0f01c390e9794dad2d04b2c8b893c5f/bitarray-3.8.0-cp310-cp310-win32.whl", hash = "sha256:3ea52df96566457735314794422274bd1962066bfb609e7eea9113d70cf04ffe", size = 142756, upload-time = "2025-11-02T21:39:06.402Z" }, - { url = "https://files.pythonhosted.org/packages/18/3f/c83635a67d90f45f88012468566c233eed1e9e9a9184fa882ba4039fadb3/bitarray-3.8.0-cp310-cp310-win_amd64.whl", hash = "sha256:82a07de83dce09b4fa1bccbdc8bde8f188b131666af0dc9048ba0a0e448d8a3b", size = 149527, upload-time = "2025-11-02T21:39:07.377Z" }, - { url = "https://files.pythonhosted.org/packages/33/46/391b3902a523d4555313640746460b19d317c6233d9379e150af97fa1554/bitarray-3.8.0-cp310-cp310-win_arm64.whl", hash = "sha256:c5ba07e58fd98c9782201e79eb8dd4225733d212a5a3700f9a84d329bd0463a6", size = 146453, upload-time = "2025-11-02T21:39:08.624Z" }, - { url = "https://files.pythonhosted.org/packages/bc/7d/63558f1d0eb09217a3d30c1c847890879973e224a728fcff9391fab999b8/bitarray-3.8.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:25b9cff6c9856bc396232e2f609ea0c5ec1a8a24c500cee4cca96ba8a3cd50b6", size = 148502, upload-time = "2025-11-02T21:39:09.993Z" }, - { url = "https://files.pythonhosted.org/packages/5e/7b/f957ad211cb0172965b5f0881b67b99e2b6d41512af0a1001f44a44ddf4a/bitarray-3.8.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4d9984017314da772f5f7460add7a0301a4ffc06c72c2998bb16c300a6253607", size = 145484, upload-time = "2025-11-02T21:39:10.904Z" }, - { url = "https://files.pythonhosted.org/packages/9f/dc/897973734f14f91467a3a795a4624752238053ecffaec7c8bbda1e363fda/bitarray-3.8.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:bbbbfbb7d039b20d289ce56b1beb46138d65769d04af50c199c6ac4cb6054d52", size = 330909, upload-time = "2025-11-02T21:39:12.276Z" }, - { url = "https://files.pythonhosted.org/packages/67/be/24b4b792426d92de289e73e09682915d567c2e69d47e8857586cbdc865d0/bitarray-3.8.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:f1f723e260c35e1c7c57a09d3a6ebe681bd56c83e1208ae3ce1869b7c0d10d4f", size = 358469, upload-time = "2025-11-02T21:39:13.766Z" }, - { url = "https://files.pythonhosted.org/packages/3e/0e/2eda69a7a59a6998df8fb57cc9d1e0e62888c599fb5237b0a8b479a01afb/bitarray-3.8.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:cbd1660fb48827381ce3a621a4fdc237959e1cd4e98b098952a8f624a0726425", size = 369131, upload-time = "2025-11-02T21:39:15.041Z" }, - { url = "https://files.pythonhosted.org/packages/f7/7b/8a372d6635a6b2622477b2f96a569b2cd0318a62bc95a4a2144c7942c987/bitarray-3.8.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:df6d7bf3e15b7e6e202a16ff4948a51759354016026deb04ab9b5acbbe35e096", size = 337089, upload-time = "2025-11-02T21:39:16.124Z" }, - { url = "https://files.pythonhosted.org/packages/93/f0/8eca934dbe5dee47a0e5ef44eeb72e85acacc8097c27cd164337bc4ec5d3/bitarray-3.8.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d5c931ec1c03111718cabf85f6012bb2815fa0ce578175567fa8d6f2cc15d3b4", size = 328504, upload-time = "2025-11-02T21:39:17.321Z" }, - { url = "https://files.pythonhosted.org/packages/88/dd/928b8e23a9950f8a8bfc42bc1e7de41f4e27f57de01a716308be5f683c2b/bitarray-3.8.0-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:41b53711f89008ba2de62e4c2d2260a8b357072fd4f18e1351b28955db2719dc", size = 356461, upload-time = "2025-11-02T21:39:18.396Z" }, - { url = "https://files.pythonhosted.org/packages/a9/93/4fb58417aff47fa2fe1874a39c9346b589a1d78c93a9cb24cccede5dc737/bitarray-3.8.0-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:4f298daaaea58d45e245a132d6d2bdfb6f856da50dc03d75ebb761439fb626cf", size = 353008, upload-time = "2025-11-02T21:39:19.828Z" }, - { url = "https://files.pythonhosted.org/packages/da/54/aa04e4a7b45aa5913f08ee377d43319b0979925e3c0407882eb29df3be66/bitarray-3.8.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:30989a2451b693c3f9359d91098a744992b5431a0be4858f1fdf0ec76b457125", size = 334048, upload-time = "2025-11-02T21:39:20.924Z" }, - { url = "https://files.pythonhosted.org/packages/da/52/e851f41076df014c05d6ac1ce34fbf7db5fa31241da3e2f09bb2be9e283d/bitarray-3.8.0-cp311-cp311-win32.whl", hash = "sha256:e5aed4754895942ae15ffa48c52d181e1c1463236fda68d2dba29c03aa61786b", size = 142907, upload-time = "2025-11-02T21:39:22.312Z" }, - { url = "https://files.pythonhosted.org/packages/28/01/db0006148b1dd13b4ac2686df8fa57d12f5887df313a506e939af0cb0997/bitarray-3.8.0-cp311-cp311-win_amd64.whl", hash = "sha256:22c540ed20167d3dbb1e2d868ca935180247d620c40eace90efa774504a40e3b", size = 149670, upload-time = "2025-11-02T21:39:23.341Z" }, - { url = "https://files.pythonhosted.org/packages/7b/ea/b7d55ee269b1426f758a535c9ec2a07c056f20f403fa981685c3c8b4798c/bitarray-3.8.0-cp311-cp311-win_arm64.whl", hash = "sha256:84b52b2cf77bb7f703d16c4007b021078dbbe6cf8ffb57abe81a7bacfc175ef2", size = 146709, upload-time = "2025-11-02T21:39:24.343Z" }, - { url = "https://files.pythonhosted.org/packages/82/a0/0c41d893eda756315491adfdbf9bc928aee3d377a7f97a8834d453aa5de1/bitarray-3.8.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:f2fcbe9b3a5996b417e030aa33a562e7e20dfc86271e53d7e841fc5df16268b8", size = 148575, upload-time = "2025-11-02T21:39:25.718Z" }, - { url = "https://files.pythonhosted.org/packages/0e/30/12ab2f4a4429bd844b419c37877caba93d676d18be71354fbbeb21d9f4cc/bitarray-3.8.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:cd761d158f67e288fd0ebe00c3b158095ce80a4bc7c32b60c7121224003ba70d", size = 145454, upload-time = "2025-11-02T21:39:26.695Z" }, - { url = "https://files.pythonhosted.org/packages/26/58/314b3e3f219533464e120f0c51ac5123e7b1c1b91f725a4073fb70c5a858/bitarray-3.8.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c394a3f055b49f92626f83c1a0b6d6cd2c628f1ccd72481c3e3c6aa4695f3b20", size = 332949, upload-time = "2025-11-02T21:39:27.801Z" }, - { url = "https://files.pythonhosted.org/packages/ea/ce/ca8c706bd8341c7a22dd92d2a528af71f7e5f4726085d93f81fd768cb03b/bitarray-3.8.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:969fd67de8c42affdb47b38b80f1eaa79ac0ef17d65407cdd931db1675315af1", size = 360599, upload-time = "2025-11-02T21:39:28.964Z" }, - { url = "https://files.pythonhosted.org/packages/ef/dc/aa181df85f933052d962804906b282acb433cb9318b08ec2aceb4ee34faf/bitarray-3.8.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:99d25aff3745c54e61ab340b98400c52ebec04290a62078155e0d7eb30380220", size = 371972, upload-time = "2025-11-02T21:39:30.228Z" }, - { url = "https://files.pythonhosted.org/packages/ff/d9/b805bfa158c7bcf4df0ac19b1be581b47e1ddb792c11023aed80a7058e78/bitarray-3.8.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:e645b4c365d6f1f9e0799380ad6395268f3c3b898244a650aaeb8d9d27b74c35", size = 340303, upload-time = "2025-11-02T21:39:31.342Z" }, - { url = "https://files.pythonhosted.org/packages/1f/42/5308cc97ea929e30727292617a3a88293470166851e13c9e3f16f395da55/bitarray-3.8.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:2fa23fdb3beab313950bbb49674e8a161e61449332d3997089fe3944953f1b77", size = 330494, upload-time = "2025-11-02T21:39:32.769Z" }, - { url = "https://files.pythonhosted.org/packages/4c/89/64f1596cb80433323efdbc8dcd0d6e57c40dfbe6ea3341623f34ec397edd/bitarray-3.8.0-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:165052a0e61c880f7093808a0c524ce1b3555bfa114c0dfb5c809cd07918a60d", size = 358123, upload-time = "2025-11-02T21:39:34.331Z" }, - { url = "https://files.pythonhosted.org/packages/27/fd/f3d49c5443b57087f888b5e118c8dd78bb7c8e8cfeeed250f8e92128a05f/bitarray-3.8.0-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:337c8cd46a4c6568d367ed676cbf2d7de16f890bb31dbb54c44c1d6bb6d4a1de", size = 356046, upload-time = "2025-11-02T21:39:35.449Z" }, - { url = "https://files.pythonhosted.org/packages/aa/db/1fd0b402bd2b47142e958b6930dbb9445235d03fa703c9a24caa6e576ae2/bitarray-3.8.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:21ca6a47bf20db9e7ad74ca04b3d479e4d76109b68333eb23535553d2705339e", size = 336872, upload-time = "2025-11-02T21:39:36.891Z" }, - { url = "https://files.pythonhosted.org/packages/58/73/680b47718f1313b4538af479c4732eaca0aeda34d93fc5b869f87932d57d/bitarray-3.8.0-cp312-cp312-win32.whl", hash = "sha256:178c5a4c7fdfb5cd79e372ae7f675390e670f3732e5bc68d327e01a5b3ff8d55", size = 143025, upload-time = "2025-11-02T21:39:38.303Z" }, - { url = "https://files.pythonhosted.org/packages/f8/11/7792587c19c79a8283e8838f44709fa4338a8f7d2a3091dfd81c07ae89c7/bitarray-3.8.0-cp312-cp312-win_amd64.whl", hash = "sha256:75a3b6e9c695a6570ea488db75b84bb592ff70a944957efa1c655867c575018b", size = 149969, upload-time = "2025-11-02T21:39:39.715Z" }, - { url = "https://files.pythonhosted.org/packages/9a/00/9df64b5d8a84e8e9ec392f6f9ce93f50626a5b301cb6c6b3fe3406454d66/bitarray-3.8.0-cp312-cp312-win_arm64.whl", hash = "sha256:5591daf81313096909d973fb2612fccd87528fdfdd39f6478bdce54543178954", size = 146907, upload-time = "2025-11-02T21:39:40.815Z" }, - { url = "https://files.pythonhosted.org/packages/3e/35/480364d4baf1e34c79076750914664373f561c58abb5c31c35b3fae613ff/bitarray-3.8.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:18214bac86341f1cc413772e66447d6cca10981e2880b70ecaf4e826c04f95e9", size = 148582, upload-time = "2025-11-02T21:39:42.268Z" }, - { url = "https://files.pythonhosted.org/packages/5e/a8/718b95524c803937f4edbaaf6480f39c80f6ed189d61357b345e8361ffb6/bitarray-3.8.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:01c5f0dc080b0ebb432f7a68ee1e88a76bd34f6d89c9568fcec65fb16ed71f0e", size = 145433, upload-time = "2025-11-02T21:39:43.552Z" }, - { url = "https://files.pythonhosted.org/packages/03/66/4a10f30dc9e2e01e3b4ecd44a511219f98e63c86b0e0f704c90fac24059b/bitarray-3.8.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:86685fa04067f7175f9718489ae755f6acde03593a1a9ca89305554af40e14fd", size = 332986, upload-time = "2025-11-02T21:39:44.656Z" }, - { url = "https://files.pythonhosted.org/packages/53/25/4c08774d847f80a1166e4c704b4e0f1c417c0afe6306eae0bc5e70d35faa/bitarray-3.8.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:56896ceeffe25946c4010320629e2d858ca763cd8ded273c81672a5edbcb1e0a", size = 360634, upload-time = "2025-11-02T21:39:45.798Z" }, - { url = "https://files.pythonhosted.org/packages/a5/8f/bf8ad26169ebd0b2746d5c7564db734453ca467f8aab87e9d43b0a794383/bitarray-3.8.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:9858dcbc23ba7eaadcd319786b982278a1a2b2020720b19db43e309579ff76fb", size = 371992, upload-time = "2025-11-02T21:39:46.968Z" }, - { url = "https://files.pythonhosted.org/packages/a9/16/ce166754e7c9d10650e02914552fa637cf3b2591f7ed16632bbf6b783312/bitarray-3.8.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:aa7dec53c25f1949513457ef8b0ea1fb40e76c672cc4d2daa8ad3c8d6b73491a", size = 340315, upload-time = "2025-11-02T21:39:48.182Z" }, - { url = "https://files.pythonhosted.org/packages/de/2a/fbba3a106ddd260e84b9a624f730257c32ba51a8a029565248dfedfdf6f2/bitarray-3.8.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:15a2eff91f54d2b1f573cca8ca6fb58763ce8fea80e7899ab028f3987ef71cd5", size = 330473, upload-time = "2025-11-02T21:39:49.705Z" }, - { url = "https://files.pythonhosted.org/packages/68/97/56cf3c70196e7307ad32318a9d6ed969dbdc6a4534bbe429112fa7dfe42e/bitarray-3.8.0-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:b1572ee0eb1967e71787af636bb7d1eb9c6735d5337762c450650e7f51844594", size = 358129, upload-time = "2025-11-02T21:39:51.189Z" }, - { url = "https://files.pythonhosted.org/packages/fd/be/afd391a5c0896d3339613321b2f94af853f29afc8bd3fbc327431244c642/bitarray-3.8.0-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:5bfac7f236ba1a4d402644bdce47fb9db02a7cf3214a1f637d3a88390f9e5428", size = 356005, upload-time = "2025-11-02T21:39:52.355Z" }, - { url = "https://files.pythonhosted.org/packages/ae/08/a8e1a371babba29bad3378bb3a2cdca2b012170711e7fe1f22031a6b7b95/bitarray-3.8.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:f0a55cf02d2cdd739b40ce10c09bbdd520e141217696add7a48b56e67bdfdfe6", size = 336862, upload-time = "2025-11-02T21:39:54.345Z" }, - { url = "https://files.pythonhosted.org/packages/ee/8a/6dc1d0fdc06991c8dc3b1fcfe1ae49fbaced42064cd1b5f24278e73fe05f/bitarray-3.8.0-cp313-cp313-win32.whl", hash = "sha256:a2ba92f59e30ce915e9e79af37649432e3a212ddddf416d4d686b1b4825bcdb2", size = 143018, upload-time = "2025-11-02T21:39:56.361Z" }, - { url = "https://files.pythonhosted.org/packages/2e/72/76e13f5cd23b8b9071747909663ce3b02da24a5e7e22c35146338625db35/bitarray-3.8.0-cp313-cp313-win_amd64.whl", hash = "sha256:1c8f2a5d8006db5a555e06f9437e76bf52537d3dfd130cb8ae2b30866aca32c9", size = 149977, upload-time = "2025-11-02T21:39:57.718Z" }, - { url = "https://files.pythonhosted.org/packages/01/37/60f336c32336cc3ec03b0c61076f16ea2f05d5371c8a56e802161d218b77/bitarray-3.8.0-cp313-cp313-win_arm64.whl", hash = "sha256:50ddbe3a7b4b6ab96812f5a4d570f401a2cdb95642fd04c062f98939610bbeee", size = 146930, upload-time = "2025-11-02T21:39:59.308Z" }, - { url = "https://files.pythonhosted.org/packages/1b/b0/411327a6c7f6b2bead64bb06fe60b92e0344957ec1ab0645d5ccc25fdafe/bitarray-3.8.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8cbd4bfc933b33b85c43ef4c1f4d5e3e9d91975ea6368acf5fbac02bac06ea89", size = 148563, upload-time = "2025-11-02T21:40:01.006Z" }, - { url = "https://files.pythonhosted.org/packages/2a/bc/ff80d97c627d774f879da0ea93223adb1267feab7e07d5c17580ffe6d632/bitarray-3.8.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:9d35d8f8a1c9ed4e2b08187b513f8a3c71958600129db3aa26d85ea3abfd1310", size = 145422, upload-time = "2025-11-02T21:40:02.535Z" }, - { url = "https://files.pythonhosted.org/packages/66/e7/b4cb6c5689aacd0a32f3aa8a507155eaa33528c63de2f182b60843fbf700/bitarray-3.8.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:99f55e14e7c56f4fafe1343480c32b110ef03836c21ff7c48bae7add6818f77c", size = 332852, upload-time = "2025-11-02T21:40:03.645Z" }, - { url = "https://files.pythonhosted.org/packages/e7/91/fbd1b047e3e2f4b65590f289c8151df1d203d75b005f5aae4e072fe77d76/bitarray-3.8.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dfbe2aa45b273f49e715c5345d94874cb65a28482bf231af408891c260601b8d", size = 360801, upload-time = "2025-11-02T21:40:04.827Z" }, - { url = "https://files.pythonhosted.org/packages/ef/4a/63064c593627bac8754fdafcb5343999c93ab2aeb27bcd9d270a010abea5/bitarray-3.8.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:64af877116edf051375b45f0bda648143176a017b13803ec7b3a3111dc05f4c5", size = 371408, upload-time = "2025-11-02T21:40:05.985Z" }, - { url = "https://files.pythonhosted.org/packages/46/97/ddc07723767bdafd170f2ff6e173c940fa874192783ee464aa3c1dedf07d/bitarray-3.8.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:cdfbb27f2c46bb5bbdcee147530cbc5ca8ab858d7693924e88e30ada21b2c5e2", size = 340033, upload-time = "2025-11-02T21:40:07.189Z" }, - { url = "https://files.pythonhosted.org/packages/ad/1e/e1ea9f1146fd4af032817069ff118918d73e5de519854ce3860e2ed560ff/bitarray-3.8.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4d73d4948dcc5591d880db8933004e01f1dd2296df9de815354d53469beb26fe", size = 330774, upload-time = "2025-11-02T21:40:08.496Z" }, - { url = "https://files.pythonhosted.org/packages/cf/9f/8242296c124a48d1eab471fd0838aeb7ea9c6fd720302d99ab7855d3e6d3/bitarray-3.8.0-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:28a85b056c0eb7f5d864c0ceef07034117e8ebfca756f50648c71950a568ba11", size = 358337, upload-time = "2025-11-02T21:40:10.035Z" }, - { url = "https://files.pythonhosted.org/packages/b5/6b/9095d75264c67d479f298c80802422464ce18c3cdd893252eeccf4997611/bitarray-3.8.0-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:79ec4498a545733ecace48d780d22407411b07403a2e08b9a4d7596c0b97ebd7", size = 355639, upload-time = "2025-11-02T21:40:11.485Z" }, - { url = "https://files.pythonhosted.org/packages/a0/af/c93c0ae5ef824136e90ac7ddf6cceccb1232f34240b2f55a922f874da9b4/bitarray-3.8.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:33af25c4ff7723363cb8404dfc2eefeab4110b654f6c98d26aba8a08c745d860", size = 336999, upload-time = "2025-11-02T21:40:12.709Z" }, - { url = "https://files.pythonhosted.org/packages/81/0f/72c951f5997b2876355d5e671f78dd2362493254876675cf22dbd24389ae/bitarray-3.8.0-cp314-cp314-win32.whl", hash = "sha256:2c3bb96b6026643ce24677650889b09073f60b9860a71765f843c99f9ab38b25", size = 142169, upload-time = "2025-11-02T21:40:14.031Z" }, - { url = "https://files.pythonhosted.org/packages/8a/55/ef1b4de8107bf13823da8756c20e1fbc9452228b4e837f46f6d9ddba3eb3/bitarray-3.8.0-cp314-cp314-win_amd64.whl", hash = "sha256:847c7f61964225fc489fe1d49eda7e0e0d253e98862c012cecf845f9ad45cdf4", size = 148737, upload-time = "2025-11-02T21:40:15.436Z" }, - { url = "https://files.pythonhosted.org/packages/5f/26/bc0784136775024ac56cc67c0d6f9aa77a7770de7f82c3a7c9be11c217cd/bitarray-3.8.0-cp314-cp314-win_arm64.whl", hash = "sha256:a2cb35a6efaa0e3623d8272471371a12c7e07b51a33e5efce9b58f655d864b4e", size = 146083, upload-time = "2025-11-02T21:40:17.135Z" }, - { url = "https://files.pythonhosted.org/packages/6e/64/57984e64264bf43d93a1809e645972771566a2d0345f4896b041ce20b000/bitarray-3.8.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:15e8d0597cc6e8496de6f4dea2a6880c57e1251502a7072f5631108a1aa28521", size = 149455, upload-time = "2025-11-02T21:40:18.558Z" }, - { url = "https://files.pythonhosted.org/packages/81/c0/0d5f2eaef1867f462f764bdb07d1e116c33a1bf052ea21889aefe4282f5b/bitarray-3.8.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:8ffe660e963ae711cb9e2b8d8461c9b1ad6167823837fc17d59d5e539fb898fa", size = 146491, upload-time = "2025-11-02T21:40:19.665Z" }, - { url = "https://files.pythonhosted.org/packages/65/c6/bc1261f7a8862c0c59220a484464739e52235fd1e2afcb24d7f7d3fb5702/bitarray-3.8.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:4779f356083c62e29b4198d290b7b17a39a69702d150678b7efff0fdddf494a8", size = 339721, upload-time = "2025-11-02T21:40:21.277Z" }, - { url = "https://files.pythonhosted.org/packages/81/d8/289ca55dd2939ea17b1108dc53bffc0fdc5160ba44f77502dfaae35d08c6/bitarray-3.8.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:025d133bf4ca8cf75f904eeb8ea946228d7c043231866143f31946a6f4dd0bf3", size = 367823, upload-time = "2025-11-02T21:40:22.463Z" }, - { url = "https://files.pythonhosted.org/packages/91/a2/61e7461ca9ac0fcb70f327a2e84b006996d2a840898e69037a39c87c6d06/bitarray-3.8.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:451f9958850ea98440d542278368c8d1e1ea821e2494b204570ba34a340759df", size = 377341, upload-time = "2025-11-02T21:40:23.789Z" }, - { url = "https://files.pythonhosted.org/packages/6c/87/4a0c9c8bdb13916d443e04d8f8542eef9190f31425da3c17c3478c40173f/bitarray-3.8.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:6d79f659965290af60d6acc8e2716341865fe74609a7ede2a33c2f86ad893b8f", size = 344985, upload-time = "2025-11-02T21:40:25.261Z" }, - { url = "https://files.pythonhosted.org/packages/17/4c/ff9259b916efe53695b631772e5213699c738efc2471b5ffe273f4000994/bitarray-3.8.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:fbf05678c2ae0064fb1b8de7e9e8f0fc30621b73c8477786dd0fb3868044a8c8", size = 336796, upload-time = "2025-11-02T21:40:26.942Z" }, - { url = "https://files.pythonhosted.org/packages/0f/4b/51b2468bbddbade5e2f3b8d5db08282c5b309e8687b0f02f75a8b5ff559c/bitarray-3.8.0-cp314-cp314t-musllinux_1_2_ppc64le.whl", hash = "sha256:c396358023b876cff547ce87f4e8ff8a2280598873a137e8cc69e115262260b8", size = 365085, upload-time = "2025-11-02T21:40:28.224Z" }, - { url = "https://files.pythonhosted.org/packages/bf/79/53473bfc2e052c6dbb628cdc1b156be621c77aaeb715918358b01574be55/bitarray-3.8.0-cp314-cp314t-musllinux_1_2_s390x.whl", hash = "sha256:ed3493a369fe849cce98542d7405c88030b355e4d2e113887cb7ecc86c205773", size = 361012, upload-time = "2025-11-02T21:40:29.635Z" }, - { url = "https://files.pythonhosted.org/packages/c4/b1/242bf2e44bfc69e73fa2b954b425d761a8e632f78ea31008f1c3cfad0854/bitarray-3.8.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:c764fb167411d5afaef88138542a4bfa28bd5e5ded5e8e42df87cef965efd6e9", size = 340644, upload-time = "2025-11-02T21:40:31.089Z" }, - { url = "https://files.pythonhosted.org/packages/cf/01/12e5ecf30a5de28a32485f226cad4b8a546845f65f755ce0365057ab1e92/bitarray-3.8.0-cp314-cp314t-win32.whl", hash = "sha256:e12769d3adcc419e65860de946df8d2ed274932177ac1cdb05186e498aaa9149", size = 143630, upload-time = "2025-11-02T21:40:32.351Z" }, - { url = "https://files.pythonhosted.org/packages/b6/92/6b6ade587b08024a8a890b07724775d29da9cf7497be5c3cbe226185e463/bitarray-3.8.0-cp314-cp314t-win_amd64.whl", hash = "sha256:0ca70ccf789446a6dfde40b482ec21d28067172cd1f8efd50d5548159fccad9e", size = 150250, upload-time = "2025-11-02T21:40:33.596Z" }, - { url = "https://files.pythonhosted.org/packages/ed/40/be3858ffed004e47e48a2cefecdbf9b950d41098b780f9dc3aa609a88351/bitarray-3.8.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2a3d1b05ffdd3e95687942ae7b13c63689f85d3f15c39b33329e3cb9ce6c015f", size = 147015, upload-time = "2025-11-02T21:40:35.064Z" }, -] - -[[package]] -name = "bitstring" -version = "4.3.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "bitarray" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/15/a8/a80c890db75d5bdd5314b5de02c4144c7de94fd0cefcae51acaeb14c6a3f/bitstring-4.3.1.tar.gz", hash = "sha256:a08bc09d3857216d4c0f412a1611056f1cc2b64fd254fb1e8a0afba7cfa1a95a", size = 251426, upload-time = "2025-03-22T09:39:06.978Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/75/2d/174566b533755ddf8efb32a5503af61c756a983de379f8ad3aed6a982d38/bitstring-4.3.1-py3-none-any.whl", hash = "sha256:69d1587f0ac18dc7d93fc7e80d5f447161a33e57027e726dc18a0a8bacf1711a", size = 71930, upload-time = "2025-03-22T09:39:05.163Z" }, -] - -[[package]] -name = "capstone" -version = "5.0.7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/dd/9c/28b11f64e2425774efb21c206a6e952cfce6e3e2ef3e4b63cdae32ccd8a5/capstone-5.0.7.tar.gz", hash = "sha256:796bdd69b05fa124fc2aa2e74b9a0b3d4c4e7f3e02add5e583cf2f3bca282ede", size = 2945245, upload-time = "2026-02-09T22:51:56.392Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b2/91/98fdb020106469d2354920ffb989507f8c494d847eb9135202a0b20afe8d/capstone-5.0.7-py3-none-macosx_10_9_universal2.whl", hash = "sha256:388af4ddb9224d3b4f9269673ee575b3f94f77774d48b3f1a283ad13c29a106a", size = 2192836, upload-time = "2026-02-09T22:51:42.782Z" }, - { url = "https://files.pythonhosted.org/packages/b7/6c/f02847b3385651eb00a6a27049bd12982cdd61e981b248e7f0dc8ed15756/capstone-5.0.7-py3-none-macosx_10_9_x86_64.whl", hash = "sha256:a9f64e3d75d8c4d7b3d26bba153b2992aadcf6b8d57674b4ef176b4ecdd9822f", size = 1188995, upload-time = "2026-02-09T22:51:44.653Z" }, - { url = "https://files.pythonhosted.org/packages/8f/43/29cd1dbdb2b55bf339bca36444809503b8311dcc04898726a7e35b47ac86/capstone-5.0.7-py3-none-macosx_11_0_arm64.whl", hash = "sha256:acb89f5bf6f625745a104a3a44819d3acea173228055c1eadc60d2282ae490bb", size = 1200084, upload-time = "2026-02-09T22:51:45.668Z" }, - { url = "https://files.pythonhosted.org/packages/7d/32/084419edcd9a3efaadf5c22166de625090fae833aad0672ddd9fa436d1e2/capstone-5.0.7-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c58546c814567c95e4b9a63bdb8624c960cb8508855c7c767d5f108d7bc09ce2", size = 1458867, upload-time = "2026-02-09T22:51:46.8Z" }, - { url = "https://files.pythonhosted.org/packages/15/3e/3a4f45dd4eda6fc8051f76bf3ed50ead6040d827000371211fbaaf057625/capstone-5.0.7-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:b809a9654844ce0d35099121a851ddd2ab2689df1ff6687037babcedcaae6391", size = 1482184, upload-time = "2026-02-09T22:51:48.467Z" }, - { url = "https://files.pythonhosted.org/packages/4b/a8/6b4df60c822aaeb42954ea6c9fdbf3410feaa6bea6dc3f18f6c363fd1ed2/capstone-5.0.7-py3-none-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:80b0f1b93fc703c419fda8cf84cfa017fd8909be62a4e88024273126ab16f006", size = 1481169, upload-time = "2026-02-09T22:51:49.574Z" }, - { url = "https://files.pythonhosted.org/packages/05/24/4162bbc2591091dfa6c161b4a9ef1a6eccb739c20798e58f59f917a8a3d1/capstone-5.0.7-py3-none-musllinux_1_2_aarch64.whl", hash = "sha256:467716e6555d50cb3526b290f0dbdccb5f961839b1f1e299b484fb5d814173e6", size = 1457760, upload-time = "2026-02-09T22:51:50.863Z" }, - { url = "https://files.pythonhosted.org/packages/e1/51/e3913f53ed03a8f7311b1efacbc1052811e129baa37b4f14e79da3cbc0c6/capstone-5.0.7-py3-none-musllinux_1_2_i686.whl", hash = "sha256:e551311d4b6dc344fe5518ef6decf4c2dfafe37bba9ad027a53a406930bc5c63", size = 1484528, upload-time = "2026-02-09T22:51:52.483Z" }, - { url = "https://files.pythonhosted.org/packages/0b/98/a7d631f7bca9de02357637cfab1fb90a67992905f2041357ac5732c8a4cd/capstone-5.0.7-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:a13437b28b136c886600e88bee192d25adf56ba1db5597ff5a0bec758bb9c533", size = 1486041, upload-time = "2026-02-09T22:51:53.729Z" }, - { url = "https://files.pythonhosted.org/packages/70/39/2138d890a8e827636b9de9924fbc8527fe83e38b6d26605b30ac55e30ebe/capstone-5.0.7-py3-none-win_amd64.whl", hash = "sha256:4ab8bcb7da8f221ff45926ca168ca33e76f7237d06fbf3c10780002faa2670e1", size = 1272204, upload-time = "2026-02-09T22:51:54.829Z" }, -] - -[[package]] -name = "certifi" -version = "2026.2.25" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/af/2d/7bf41579a8986e348fa033a31cdd0e4121114f6bce2457e8876010b092dd/certifi-2026.2.25.tar.gz", hash = "sha256:e887ab5cee78ea814d3472169153c2d12cd43b14bd03329a39a9c6e2e80bfba7", size = 155029, upload-time = "2026-02-25T02:54:17.342Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/9a/3c/c17fb3ca2d9c3acff52e30b309f538586f9f5b9c9cf454f3845fc9af4881/certifi-2026.2.25-py3-none-any.whl", hash = "sha256:027692e4402ad994f1c42e52a4997a9763c646b73e4096e4d5d6db8af1d6f0fa", size = 153684, upload-time = "2026-02-25T02:54:15.766Z" }, -] - -[[package]] -name = "cffi" -version = "2.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pycparser", marker = "implementation_name != 'PyPy'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/eb/56/b1ba7935a17738ae8453301356628e8147c79dbb825bcbc73dc7401f9846/cffi-2.0.0.tar.gz", hash = "sha256:44d1b5909021139fe36001ae048dbdde8214afa20200eda0f64c068cac5d5529", size = 523588, upload-time = "2025-09-08T23:24:04.541Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/93/d7/516d984057745a6cd96575eea814fe1edd6646ee6efd552fb7b0921dec83/cffi-2.0.0-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:0cf2d91ecc3fcc0625c2c530fe004f82c110405f101548512cce44322fa8ac44", size = 184283, upload-time = "2025-09-08T23:22:08.01Z" }, - { url = "https://files.pythonhosted.org/packages/9e/84/ad6a0b408daa859246f57c03efd28e5dd1b33c21737c2db84cae8c237aa5/cffi-2.0.0-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:f73b96c41e3b2adedc34a7356e64c8eb96e03a3782b535e043a986276ce12a49", size = 180504, upload-time = "2025-09-08T23:22:10.637Z" }, - { url = "https://files.pythonhosted.org/packages/50/bd/b1a6362b80628111e6653c961f987faa55262b4002fcec42308cad1db680/cffi-2.0.0-cp310-cp310-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:53f77cbe57044e88bbd5ed26ac1d0514d2acf0591dd6bb02a3ae37f76811b80c", size = 208811, upload-time = "2025-09-08T23:22:12.267Z" }, - { url = "https://files.pythonhosted.org/packages/4f/27/6933a8b2562d7bd1fb595074cf99cc81fc3789f6a6c05cdabb46284a3188/cffi-2.0.0-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:3e837e369566884707ddaf85fc1744b47575005c0a229de3327f8f9a20f4efeb", size = 216402, upload-time = "2025-09-08T23:22:13.455Z" }, - { url = "https://files.pythonhosted.org/packages/05/eb/b86f2a2645b62adcfff53b0dd97e8dfafb5c8aa864bd0d9a2c2049a0d551/cffi-2.0.0-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:5eda85d6d1879e692d546a078b44251cdd08dd1cfb98dfb77b670c97cee49ea0", size = 203217, upload-time = "2025-09-08T23:22:14.596Z" }, - { url = "https://files.pythonhosted.org/packages/9f/e0/6cbe77a53acf5acc7c08cc186c9928864bd7c005f9efd0d126884858a5fe/cffi-2.0.0-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9332088d75dc3241c702d852d4671613136d90fa6881da7d770a483fd05248b4", size = 203079, upload-time = "2025-09-08T23:22:15.769Z" }, - { url = "https://files.pythonhosted.org/packages/98/29/9b366e70e243eb3d14a5cb488dfd3a0b6b2f1fb001a203f653b93ccfac88/cffi-2.0.0-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fc7de24befaeae77ba923797c7c87834c73648a05a4bde34b3b7e5588973a453", size = 216475, upload-time = "2025-09-08T23:22:17.427Z" }, - { url = "https://files.pythonhosted.org/packages/21/7a/13b24e70d2f90a322f2900c5d8e1f14fa7e2a6b3332b7309ba7b2ba51a5a/cffi-2.0.0-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:cf364028c016c03078a23b503f02058f1814320a56ad535686f90565636a9495", size = 218829, upload-time = "2025-09-08T23:22:19.069Z" }, - { url = "https://files.pythonhosted.org/packages/60/99/c9dc110974c59cc981b1f5b66e1d8af8af764e00f0293266824d9c4254bc/cffi-2.0.0-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:e11e82b744887154b182fd3e7e8512418446501191994dbf9c9fc1f32cc8efd5", size = 211211, upload-time = "2025-09-08T23:22:20.588Z" }, - { url = "https://files.pythonhosted.org/packages/49/72/ff2d12dbf21aca1b32a40ed792ee6b40f6dc3a9cf1644bd7ef6e95e0ac5e/cffi-2.0.0-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:8ea985900c5c95ce9db1745f7933eeef5d314f0565b27625d9a10ec9881e1bfb", size = 218036, upload-time = "2025-09-08T23:22:22.143Z" }, - { url = "https://files.pythonhosted.org/packages/e2/cc/027d7fb82e58c48ea717149b03bcadcbdc293553edb283af792bd4bcbb3f/cffi-2.0.0-cp310-cp310-win32.whl", hash = "sha256:1f72fb8906754ac8a2cc3f9f5aaa298070652a0ffae577e0ea9bd480dc3c931a", size = 172184, upload-time = "2025-09-08T23:22:23.328Z" }, - { url = "https://files.pythonhosted.org/packages/33/fa/072dd15ae27fbb4e06b437eb6e944e75b068deb09e2a2826039e49ee2045/cffi-2.0.0-cp310-cp310-win_amd64.whl", hash = "sha256:b18a3ed7d5b3bd8d9ef7a8cb226502c6bf8308df1525e1cc676c3680e7176739", size = 182790, upload-time = "2025-09-08T23:22:24.752Z" }, - { url = "https://files.pythonhosted.org/packages/12/4a/3dfd5f7850cbf0d06dc84ba9aa00db766b52ca38d8b86e3a38314d52498c/cffi-2.0.0-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:b4c854ef3adc177950a8dfc81a86f5115d2abd545751a304c5bcf2c2c7283cfe", size = 184344, upload-time = "2025-09-08T23:22:26.456Z" }, - { url = "https://files.pythonhosted.org/packages/4f/8b/f0e4c441227ba756aafbe78f117485b25bb26b1c059d01f137fa6d14896b/cffi-2.0.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:2de9a304e27f7596cd03d16f1b7c72219bd944e99cc52b84d0145aefb07cbd3c", size = 180560, upload-time = "2025-09-08T23:22:28.197Z" }, - { url = "https://files.pythonhosted.org/packages/b1/b7/1200d354378ef52ec227395d95c2576330fd22a869f7a70e88e1447eb234/cffi-2.0.0-cp311-cp311-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:baf5215e0ab74c16e2dd324e8ec067ef59e41125d3eade2b863d294fd5035c92", size = 209613, upload-time = "2025-09-08T23:22:29.475Z" }, - { url = "https://files.pythonhosted.org/packages/b8/56/6033f5e86e8cc9bb629f0077ba71679508bdf54a9a5e112a3c0b91870332/cffi-2.0.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:730cacb21e1bdff3ce90babf007d0a0917cc3e6492f336c2f0134101e0944f93", size = 216476, upload-time = "2025-09-08T23:22:31.063Z" }, - { url = "https://files.pythonhosted.org/packages/dc/7f/55fecd70f7ece178db2f26128ec41430d8720f2d12ca97bf8f0a628207d5/cffi-2.0.0-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:6824f87845e3396029f3820c206e459ccc91760e8fa24422f8b0c3d1731cbec5", size = 203374, upload-time = "2025-09-08T23:22:32.507Z" }, - { url = "https://files.pythonhosted.org/packages/84/ef/a7b77c8bdc0f77adc3b46888f1ad54be8f3b7821697a7b89126e829e676a/cffi-2.0.0-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:9de40a7b0323d889cf8d23d1ef214f565ab154443c42737dfe52ff82cf857664", size = 202597, upload-time = "2025-09-08T23:22:34.132Z" }, - { url = "https://files.pythonhosted.org/packages/d7/91/500d892b2bf36529a75b77958edfcd5ad8e2ce4064ce2ecfeab2125d72d1/cffi-2.0.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:8941aaadaf67246224cee8c3803777eed332a19d909b47e29c9842ef1e79ac26", size = 215574, upload-time = "2025-09-08T23:22:35.443Z" }, - { url = "https://files.pythonhosted.org/packages/44/64/58f6255b62b101093d5df22dcb752596066c7e89dd725e0afaed242a61be/cffi-2.0.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:a05d0c237b3349096d3981b727493e22147f934b20f6f125a3eba8f994bec4a9", size = 218971, upload-time = "2025-09-08T23:22:36.805Z" }, - { url = "https://files.pythonhosted.org/packages/ab/49/fa72cebe2fd8a55fbe14956f9970fe8eb1ac59e5df042f603ef7c8ba0adc/cffi-2.0.0-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:94698a9c5f91f9d138526b48fe26a199609544591f859c870d477351dc7b2414", size = 211972, upload-time = "2025-09-08T23:22:38.436Z" }, - { url = "https://files.pythonhosted.org/packages/0b/28/dd0967a76aab36731b6ebfe64dec4e981aff7e0608f60c2d46b46982607d/cffi-2.0.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:5fed36fccc0612a53f1d4d9a816b50a36702c28a2aa880cb8a122b3466638743", size = 217078, upload-time = "2025-09-08T23:22:39.776Z" }, - { url = "https://files.pythonhosted.org/packages/2b/c0/015b25184413d7ab0a410775fdb4a50fca20f5589b5dab1dbbfa3baad8ce/cffi-2.0.0-cp311-cp311-win32.whl", hash = "sha256:c649e3a33450ec82378822b3dad03cc228b8f5963c0c12fc3b1e0ab940f768a5", size = 172076, upload-time = "2025-09-08T23:22:40.95Z" }, - { url = "https://files.pythonhosted.org/packages/ae/8f/dc5531155e7070361eb1b7e4c1a9d896d0cb21c49f807a6c03fd63fc877e/cffi-2.0.0-cp311-cp311-win_amd64.whl", hash = "sha256:66f011380d0e49ed280c789fbd08ff0d40968ee7b665575489afa95c98196ab5", size = 182820, upload-time = "2025-09-08T23:22:42.463Z" }, - { url = "https://files.pythonhosted.org/packages/95/5c/1b493356429f9aecfd56bc171285a4c4ac8697f76e9bbbbb105e537853a1/cffi-2.0.0-cp311-cp311-win_arm64.whl", hash = "sha256:c6638687455baf640e37344fe26d37c404db8b80d037c3d29f58fe8d1c3b194d", size = 177635, upload-time = "2025-09-08T23:22:43.623Z" }, - { url = "https://files.pythonhosted.org/packages/ea/47/4f61023ea636104d4f16ab488e268b93008c3d0bb76893b1b31db1f96802/cffi-2.0.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:6d02d6655b0e54f54c4ef0b94eb6be0607b70853c45ce98bd278dc7de718be5d", size = 185271, upload-time = "2025-09-08T23:22:44.795Z" }, - { url = "https://files.pythonhosted.org/packages/df/a2/781b623f57358e360d62cdd7a8c681f074a71d445418a776eef0aadb4ab4/cffi-2.0.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8eca2a813c1cb7ad4fb74d368c2ffbbb4789d377ee5bb8df98373c2cc0dee76c", size = 181048, upload-time = "2025-09-08T23:22:45.938Z" }, - { url = "https://files.pythonhosted.org/packages/ff/df/a4f0fbd47331ceeba3d37c2e51e9dfc9722498becbeec2bd8bc856c9538a/cffi-2.0.0-cp312-cp312-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:21d1152871b019407d8ac3985f6775c079416c282e431a4da6afe7aefd2bccbe", size = 212529, upload-time = "2025-09-08T23:22:47.349Z" }, - { url = "https://files.pythonhosted.org/packages/d5/72/12b5f8d3865bf0f87cf1404d8c374e7487dcf097a1c91c436e72e6badd83/cffi-2.0.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:b21e08af67b8a103c71a250401c78d5e0893beff75e28c53c98f4de42f774062", size = 220097, upload-time = "2025-09-08T23:22:48.677Z" }, - { url = "https://files.pythonhosted.org/packages/c2/95/7a135d52a50dfa7c882ab0ac17e8dc11cec9d55d2c18dda414c051c5e69e/cffi-2.0.0-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:1e3a615586f05fc4065a8b22b8152f0c1b00cdbc60596d187c2a74f9e3036e4e", size = 207983, upload-time = "2025-09-08T23:22:50.06Z" }, - { url = "https://files.pythonhosted.org/packages/3a/c8/15cb9ada8895957ea171c62dc78ff3e99159ee7adb13c0123c001a2546c1/cffi-2.0.0-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:81afed14892743bbe14dacb9e36d9e0e504cd204e0b165062c488942b9718037", size = 206519, upload-time = "2025-09-08T23:22:51.364Z" }, - { url = "https://files.pythonhosted.org/packages/78/2d/7fa73dfa841b5ac06c7b8855cfc18622132e365f5b81d02230333ff26e9e/cffi-2.0.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:3e17ed538242334bf70832644a32a7aae3d83b57567f9fd60a26257e992b79ba", size = 219572, upload-time = "2025-09-08T23:22:52.902Z" }, - { url = "https://files.pythonhosted.org/packages/07/e0/267e57e387b4ca276b90f0434ff88b2c2241ad72b16d31836adddfd6031b/cffi-2.0.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:3925dd22fa2b7699ed2617149842d2e6adde22b262fcbfada50e3d195e4b3a94", size = 222963, upload-time = "2025-09-08T23:22:54.518Z" }, - { url = "https://files.pythonhosted.org/packages/b6/75/1f2747525e06f53efbd878f4d03bac5b859cbc11c633d0fb81432d98a795/cffi-2.0.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:2c8f814d84194c9ea681642fd164267891702542f028a15fc97d4674b6206187", size = 221361, upload-time = "2025-09-08T23:22:55.867Z" }, - { url = "https://files.pythonhosted.org/packages/7b/2b/2b6435f76bfeb6bbf055596976da087377ede68df465419d192acf00c437/cffi-2.0.0-cp312-cp312-win32.whl", hash = "sha256:da902562c3e9c550df360bfa53c035b2f241fed6d9aef119048073680ace4a18", size = 172932, upload-time = "2025-09-08T23:22:57.188Z" }, - { url = "https://files.pythonhosted.org/packages/f8/ed/13bd4418627013bec4ed6e54283b1959cf6db888048c7cf4b4c3b5b36002/cffi-2.0.0-cp312-cp312-win_amd64.whl", hash = "sha256:da68248800ad6320861f129cd9c1bf96ca849a2771a59e0344e88681905916f5", size = 183557, upload-time = "2025-09-08T23:22:58.351Z" }, - { url = "https://files.pythonhosted.org/packages/95/31/9f7f93ad2f8eff1dbc1c3656d7ca5bfd8fb52c9d786b4dcf19b2d02217fa/cffi-2.0.0-cp312-cp312-win_arm64.whl", hash = "sha256:4671d9dd5ec934cb9a73e7ee9676f9362aba54f7f34910956b84d727b0d73fb6", size = 177762, upload-time = "2025-09-08T23:22:59.668Z" }, - { url = "https://files.pythonhosted.org/packages/4b/8d/a0a47a0c9e413a658623d014e91e74a50cdd2c423f7ccfd44086ef767f90/cffi-2.0.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:00bdf7acc5f795150faa6957054fbbca2439db2f775ce831222b66f192f03beb", size = 185230, upload-time = "2025-09-08T23:23:00.879Z" }, - { url = "https://files.pythonhosted.org/packages/4a/d2/a6c0296814556c68ee32009d9c2ad4f85f2707cdecfd7727951ec228005d/cffi-2.0.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:45d5e886156860dc35862657e1494b9bae8dfa63bf56796f2fb56e1679fc0bca", size = 181043, upload-time = "2025-09-08T23:23:02.231Z" }, - { url = "https://files.pythonhosted.org/packages/b0/1e/d22cc63332bd59b06481ceaac49d6c507598642e2230f201649058a7e704/cffi-2.0.0-cp313-cp313-manylinux1_i686.manylinux2014_i686.manylinux_2_17_i686.manylinux_2_5_i686.whl", hash = "sha256:07b271772c100085dd28b74fa0cd81c8fb1a3ba18b21e03d7c27f3436a10606b", size = 212446, upload-time = "2025-09-08T23:23:03.472Z" }, - { url = "https://files.pythonhosted.org/packages/a9/f5/a2c23eb03b61a0b8747f211eb716446c826ad66818ddc7810cc2cc19b3f2/cffi-2.0.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:d48a880098c96020b02d5a1f7d9251308510ce8858940e6fa99ece33f610838b", size = 220101, upload-time = "2025-09-08T23:23:04.792Z" }, - { url = "https://files.pythonhosted.org/packages/f2/7f/e6647792fc5850d634695bc0e6ab4111ae88e89981d35ac269956605feba/cffi-2.0.0-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:f93fd8e5c8c0a4aa1f424d6173f14a892044054871c771f8566e4008eaa359d2", size = 207948, upload-time = "2025-09-08T23:23:06.127Z" }, - { url = "https://files.pythonhosted.org/packages/cb/1e/a5a1bd6f1fb30f22573f76533de12a00bf274abcdc55c8edab639078abb6/cffi-2.0.0-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:dd4f05f54a52fb558f1ba9f528228066954fee3ebe629fc1660d874d040ae5a3", size = 206422, upload-time = "2025-09-08T23:23:07.753Z" }, - { url = "https://files.pythonhosted.org/packages/98/df/0a1755e750013a2081e863e7cd37e0cdd02664372c754e5560099eb7aa44/cffi-2.0.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:c8d3b5532fc71b7a77c09192b4a5a200ea992702734a2e9279a37f2478236f26", size = 219499, upload-time = "2025-09-08T23:23:09.648Z" }, - { url = "https://files.pythonhosted.org/packages/50/e1/a969e687fcf9ea58e6e2a928ad5e2dd88cc12f6f0ab477e9971f2309b57c/cffi-2.0.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:d9b29c1f0ae438d5ee9acb31cadee00a58c46cc9c0b2f9038c6b0b3470877a8c", size = 222928, upload-time = "2025-09-08T23:23:10.928Z" }, - { url = "https://files.pythonhosted.org/packages/36/54/0362578dd2c9e557a28ac77698ed67323ed5b9775ca9d3fe73fe191bb5d8/cffi-2.0.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:6d50360be4546678fc1b79ffe7a66265e28667840010348dd69a314145807a1b", size = 221302, upload-time = "2025-09-08T23:23:12.42Z" }, - { url = "https://files.pythonhosted.org/packages/eb/6d/bf9bda840d5f1dfdbf0feca87fbdb64a918a69bca42cfa0ba7b137c48cb8/cffi-2.0.0-cp313-cp313-win32.whl", hash = "sha256:74a03b9698e198d47562765773b4a8309919089150a0bb17d829ad7b44b60d27", size = 172909, upload-time = "2025-09-08T23:23:14.32Z" }, - { url = "https://files.pythonhosted.org/packages/37/18/6519e1ee6f5a1e579e04b9ddb6f1676c17368a7aba48299c3759bbc3c8b3/cffi-2.0.0-cp313-cp313-win_amd64.whl", hash = "sha256:19f705ada2530c1167abacb171925dd886168931e0a7b78f5bffcae5c6b5be75", size = 183402, upload-time = "2025-09-08T23:23:15.535Z" }, - { url = "https://files.pythonhosted.org/packages/cb/0e/02ceeec9a7d6ee63bb596121c2c8e9b3a9e150936f4fbef6ca1943e6137c/cffi-2.0.0-cp313-cp313-win_arm64.whl", hash = "sha256:256f80b80ca3853f90c21b23ee78cd008713787b1b1e93eae9f3d6a7134abd91", size = 177780, upload-time = "2025-09-08T23:23:16.761Z" }, - { url = "https://files.pythonhosted.org/packages/92/c4/3ce07396253a83250ee98564f8d7e9789fab8e58858f35d07a9a2c78de9f/cffi-2.0.0-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:fc33c5141b55ed366cfaad382df24fe7dcbc686de5be719b207bb248e3053dc5", size = 185320, upload-time = "2025-09-08T23:23:18.087Z" }, - { url = "https://files.pythonhosted.org/packages/59/dd/27e9fa567a23931c838c6b02d0764611c62290062a6d4e8ff7863daf9730/cffi-2.0.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:c654de545946e0db659b3400168c9ad31b5d29593291482c43e3564effbcee13", size = 181487, upload-time = "2025-09-08T23:23:19.622Z" }, - { url = "https://files.pythonhosted.org/packages/d6/43/0e822876f87ea8a4ef95442c3d766a06a51fc5298823f884ef87aaad168c/cffi-2.0.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:24b6f81f1983e6df8db3adc38562c83f7d4a0c36162885ec7f7b77c7dcbec97b", size = 220049, upload-time = "2025-09-08T23:23:20.853Z" }, - { url = "https://files.pythonhosted.org/packages/b4/89/76799151d9c2d2d1ead63c2429da9ea9d7aac304603de0c6e8764e6e8e70/cffi-2.0.0-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:12873ca6cb9b0f0d3a0da705d6086fe911591737a59f28b7936bdfed27c0d47c", size = 207793, upload-time = "2025-09-08T23:23:22.08Z" }, - { url = "https://files.pythonhosted.org/packages/bb/dd/3465b14bb9e24ee24cb88c9e3730f6de63111fffe513492bf8c808a3547e/cffi-2.0.0-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:d9b97165e8aed9272a6bb17c01e3cc5871a594a446ebedc996e2397a1c1ea8ef", size = 206300, upload-time = "2025-09-08T23:23:23.314Z" }, - { url = "https://files.pythonhosted.org/packages/47/d9/d83e293854571c877a92da46fdec39158f8d7e68da75bf73581225d28e90/cffi-2.0.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:afb8db5439b81cf9c9d0c80404b60c3cc9c3add93e114dcae767f1477cb53775", size = 219244, upload-time = "2025-09-08T23:23:24.541Z" }, - { url = "https://files.pythonhosted.org/packages/2b/0f/1f177e3683aead2bb00f7679a16451d302c436b5cbf2505f0ea8146ef59e/cffi-2.0.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:737fe7d37e1a1bffe70bd5754ea763a62a066dc5913ca57e957824b72a85e205", size = 222828, upload-time = "2025-09-08T23:23:26.143Z" }, - { url = "https://files.pythonhosted.org/packages/c6/0f/cafacebd4b040e3119dcb32fed8bdef8dfe94da653155f9d0b9dc660166e/cffi-2.0.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:38100abb9d1b1435bc4cc340bb4489635dc2f0da7456590877030c9b3d40b0c1", size = 220926, upload-time = "2025-09-08T23:23:27.873Z" }, - { url = "https://files.pythonhosted.org/packages/3e/aa/df335faa45b395396fcbc03de2dfcab242cd61a9900e914fe682a59170b1/cffi-2.0.0-cp314-cp314-win32.whl", hash = "sha256:087067fa8953339c723661eda6b54bc98c5625757ea62e95eb4898ad5e776e9f", size = 175328, upload-time = "2025-09-08T23:23:44.61Z" }, - { url = "https://files.pythonhosted.org/packages/bb/92/882c2d30831744296ce713f0feb4c1cd30f346ef747b530b5318715cc367/cffi-2.0.0-cp314-cp314-win_amd64.whl", hash = "sha256:203a48d1fb583fc7d78a4c6655692963b860a417c0528492a6bc21f1aaefab25", size = 185650, upload-time = "2025-09-08T23:23:45.848Z" }, - { url = "https://files.pythonhosted.org/packages/9f/2c/98ece204b9d35a7366b5b2c6539c350313ca13932143e79dc133ba757104/cffi-2.0.0-cp314-cp314-win_arm64.whl", hash = "sha256:dbd5c7a25a7cb98f5ca55d258b103a2054f859a46ae11aaf23134f9cc0d356ad", size = 180687, upload-time = "2025-09-08T23:23:47.105Z" }, - { url = "https://files.pythonhosted.org/packages/3e/61/c768e4d548bfa607abcda77423448df8c471f25dbe64fb2ef6d555eae006/cffi-2.0.0-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:9a67fc9e8eb39039280526379fb3a70023d77caec1852002b4da7e8b270c4dd9", size = 188773, upload-time = "2025-09-08T23:23:29.347Z" }, - { url = "https://files.pythonhosted.org/packages/2c/ea/5f76bce7cf6fcd0ab1a1058b5af899bfbef198bea4d5686da88471ea0336/cffi-2.0.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7a66c7204d8869299919db4d5069a82f1561581af12b11b3c9f48c584eb8743d", size = 185013, upload-time = "2025-09-08T23:23:30.63Z" }, - { url = "https://files.pythonhosted.org/packages/be/b4/c56878d0d1755cf9caa54ba71e5d049479c52f9e4afc230f06822162ab2f/cffi-2.0.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7cc09976e8b56f8cebd752f7113ad07752461f48a58cbba644139015ac24954c", size = 221593, upload-time = "2025-09-08T23:23:31.91Z" }, - { url = "https://files.pythonhosted.org/packages/e0/0d/eb704606dfe8033e7128df5e90fee946bbcb64a04fcdaa97321309004000/cffi-2.0.0-cp314-cp314t-manylinux2014_ppc64le.manylinux_2_17_ppc64le.whl", hash = "sha256:92b68146a71df78564e4ef48af17551a5ddd142e5190cdf2c5624d0c3ff5b2e8", size = 209354, upload-time = "2025-09-08T23:23:33.214Z" }, - { url = "https://files.pythonhosted.org/packages/d8/19/3c435d727b368ca475fb8742ab97c9cb13a0de600ce86f62eab7fa3eea60/cffi-2.0.0-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.whl", hash = "sha256:b1e74d11748e7e98e2f426ab176d4ed720a64412b6a15054378afdb71e0f37dc", size = 208480, upload-time = "2025-09-08T23:23:34.495Z" }, - { url = "https://files.pythonhosted.org/packages/d0/44/681604464ed9541673e486521497406fadcc15b5217c3e326b061696899a/cffi-2.0.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:28a3a209b96630bca57cce802da70c266eb08c6e97e5afd61a75611ee6c64592", size = 221584, upload-time = "2025-09-08T23:23:36.096Z" }, - { url = "https://files.pythonhosted.org/packages/25/8e/342a504ff018a2825d395d44d63a767dd8ebc927ebda557fecdaca3ac33a/cffi-2.0.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:7553fb2090d71822f02c629afe6042c299edf91ba1bf94951165613553984512", size = 224443, upload-time = "2025-09-08T23:23:37.328Z" }, - { url = "https://files.pythonhosted.org/packages/e1/5e/b666bacbbc60fbf415ba9988324a132c9a7a0448a9a8f125074671c0f2c3/cffi-2.0.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:6c6c373cfc5c83a975506110d17457138c8c63016b563cc9ed6e056a82f13ce4", size = 223437, upload-time = "2025-09-08T23:23:38.945Z" }, - { url = "https://files.pythonhosted.org/packages/a0/1d/ec1a60bd1a10daa292d3cd6bb0b359a81607154fb8165f3ec95fe003b85c/cffi-2.0.0-cp314-cp314t-win32.whl", hash = "sha256:1fc9ea04857caf665289b7a75923f2c6ed559b8298a1b8c49e59f7dd95c8481e", size = 180487, upload-time = "2025-09-08T23:23:40.423Z" }, - { url = "https://files.pythonhosted.org/packages/bf/41/4c1168c74fac325c0c8156f04b6749c8b6a8f405bbf91413ba088359f60d/cffi-2.0.0-cp314-cp314t-win_amd64.whl", hash = "sha256:d68b6cef7827e8641e8ef16f4494edda8b36104d79773a334beaa1e3521430f6", size = 191726, upload-time = "2025-09-08T23:23:41.742Z" }, - { url = "https://files.pythonhosted.org/packages/ae/3a/dbeec9d1ee0844c679f6bb5d6ad4e9f198b1224f4e7a32825f47f6192b0c/cffi-2.0.0-cp314-cp314t-win_arm64.whl", hash = "sha256:0a1527a803f0a659de1af2e1fd700213caba79377e27e4693648c2923da066f9", size = 184195, upload-time = "2025-09-08T23:23:43.004Z" }, -] - -[[package]] -name = "charset-normalizer" -version = "3.4.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1d/35/02daf95b9cd686320bb622eb148792655c9412dbb9b67abb5694e5910a24/charset_normalizer-3.4.5.tar.gz", hash = "sha256:95adae7b6c42a6c5b5b559b1a99149f090a57128155daeea91732c8d970d8644", size = 134804, upload-time = "2026-03-06T06:03:19.46Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a7/21/a2b1505639008ba2e6ef03733a81fc6cfd6a07ea6139a2b76421230b8dad/charset_normalizer-3.4.5-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:4167a621a9a1a986c73777dbc15d4b5eac8ac5c10393374109a343d4013ec765", size = 283319, upload-time = "2026-03-06T06:00:26.433Z" }, - { url = "https://files.pythonhosted.org/packages/70/67/df234c29b68f4e1e095885c9db1cb4b69b8aba49cf94fac041db4aaf1267/charset_normalizer-3.4.5-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:3f64c6bf8f32f9133b668c7f7a7cbdbc453412bc95ecdbd157f3b1e377a92990", size = 189974, upload-time = "2026-03-06T06:00:28.222Z" }, - { url = "https://files.pythonhosted.org/packages/df/7f/fc66af802961c6be42e2c7b69c58f95cbd1f39b0e81b3365d8efe2a02a04/charset_normalizer-3.4.5-cp310-cp310-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:568e3c34b58422075a1b49575a6abc616d9751b4d61b23f712e12ebb78fe47b2", size = 207866, upload-time = "2026-03-06T06:00:29.769Z" }, - { url = "https://files.pythonhosted.org/packages/c9/23/404eb36fac4e95b833c50e305bba9a241086d427bb2167a42eac7c4f7da4/charset_normalizer-3.4.5-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:036c079aa08a6a592b82487f97c60b439428320ed1b2ea0b3912e99d30c77765", size = 203239, upload-time = "2026-03-06T06:00:31.086Z" }, - { url = "https://files.pythonhosted.org/packages/4b/2f/8a1d989bfadd120c90114ab33e0d2a0cbde05278c1fc15e83e62d570f50a/charset_normalizer-3.4.5-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:340810d34ef83af92148e96e3e44cb2d3f910d2bf95e5618a5c467d9f102231d", size = 196529, upload-time = "2026-03-06T06:00:32.608Z" }, - { url = "https://files.pythonhosted.org/packages/a5/0c/c75f85ff7ca1f051958bb518cd43922d86f576c03947a050fbedfdfb4f15/charset_normalizer-3.4.5-cp310-cp310-manylinux_2_31_armv7l.whl", hash = "sha256:cd2d0f0ec9aa977a27731a3209ebbcacebebaf41f902bd453a928bfd281cf7f8", size = 184152, upload-time = "2026-03-06T06:00:33.93Z" }, - { url = "https://files.pythonhosted.org/packages/f9/20/4ed37f6199af5dde94d4aeaf577f3813a5ec6635834cda1d957013a09c76/charset_normalizer-3.4.5-cp310-cp310-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:0b362bcd27819f9c07cbf23db4e0e8cd4b44c5ecd900c2ff907b2b92274a7412", size = 195226, upload-time = "2026-03-06T06:00:35.469Z" }, - { url = "https://files.pythonhosted.org/packages/28/31/7ba1102178cba7c34dcc050f43d427172f389729e356038f0726253dd914/charset_normalizer-3.4.5-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:77be992288f720306ab4108fe5c74797de327f3248368dfc7e1a916d6ed9e5a2", size = 192933, upload-time = "2026-03-06T06:00:36.83Z" }, - { url = "https://files.pythonhosted.org/packages/4b/23/f86443ab3921e6a60b33b93f4a1161222231f6c69bc24fb18f3bee7b8518/charset_normalizer-3.4.5-cp310-cp310-musllinux_1_2_armv7l.whl", hash = "sha256:8b78d8a609a4b82c273257ee9d631ded7fac0d875bdcdccc109f3ee8328cfcb1", size = 185647, upload-time = "2026-03-06T06:00:38.367Z" }, - { url = "https://files.pythonhosted.org/packages/82/44/08b8be891760f1f5a6d23ce11d6d50c92981603e6eb740b4f72eea9424e2/charset_normalizer-3.4.5-cp310-cp310-musllinux_1_2_ppc64le.whl", hash = "sha256:ba20bdf69bd127f66d0174d6f2a93e69045e0b4036dc1ca78e091bcc765830c4", size = 209533, upload-time = "2026-03-06T06:00:41.931Z" }, - { url = "https://files.pythonhosted.org/packages/3b/5f/df114f23406199f8af711ddccfbf409ffbc5b7cdc18fa19644997ff0c9bb/charset_normalizer-3.4.5-cp310-cp310-musllinux_1_2_riscv64.whl", hash = "sha256:76a9d0de4d0eab387822e7b35d8f89367dd237c72e82ab42b9f7bf5e15ada00f", size = 195901, upload-time = "2026-03-06T06:00:43.978Z" }, - { url = "https://files.pythonhosted.org/packages/07/83/71ef34a76fe8aa05ff8f840244bda2d61e043c2ef6f30d200450b9f6a1be/charset_normalizer-3.4.5-cp310-cp310-musllinux_1_2_s390x.whl", hash = "sha256:8fff79bf5978c693c9b1a4d71e4a94fddfb5fe744eb062a318e15f4a2f63a550", size = 204950, upload-time = "2026-03-06T06:00:45.202Z" }, - { url = "https://files.pythonhosted.org/packages/58/40/0253be623995365137d7dc68e45245036207ab2227251e69a3d93ce43183/charset_normalizer-3.4.5-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:c7e84e0c0005e3bdc1a9211cd4e62c78ba80bc37b2365ef4410cd2007a9047f2", size = 198546, upload-time = "2026-03-06T06:00:46.481Z" }, - { url = "https://files.pythonhosted.org/packages/ed/5c/5f3cb5b259a130895ef5ae16b38eaf141430fa3f7af50cd06c5d67e4f7b2/charset_normalizer-3.4.5-cp310-cp310-win32.whl", hash = "sha256:58ad8270cfa5d4bef1bc85bd387217e14ff154d6630e976c6f56f9a040757475", size = 132516, upload-time = "2026-03-06T06:00:47.924Z" }, - { url = "https://files.pythonhosted.org/packages/a5/c3/84fb174e7770f2df2e1a2115090771bfbc2227fb39a765c6d00568d1aab4/charset_normalizer-3.4.5-cp310-cp310-win_amd64.whl", hash = "sha256:02a9d1b01c1e12c27883b0c9349e0bcd9ae92e727ff1a277207e1a262b1cbf05", size = 142906, upload-time = "2026-03-06T06:00:49.389Z" }, - { url = "https://files.pythonhosted.org/packages/d7/b2/6f852f8b969f2cbd0d4092d2e60139ab1af95af9bb651337cae89ec0f684/charset_normalizer-3.4.5-cp310-cp310-win_arm64.whl", hash = "sha256:039215608ac7b358c4da0191d10fc76868567fbf276d54c14721bdedeb6de064", size = 133258, upload-time = "2026-03-06T06:00:51.051Z" }, - { url = "https://files.pythonhosted.org/packages/8f/9e/bcec3b22c64ecec47d39bf5167c2613efd41898c019dccd4183f6aa5d6a7/charset_normalizer-3.4.5-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:610f72c0ee565dfb8ae1241b666119582fdbfe7c0975c175be719f940e110694", size = 279531, upload-time = "2026-03-06T06:00:52.252Z" }, - { url = "https://files.pythonhosted.org/packages/58/12/81fd25f7e7078ab5d1eedbb0fac44be4904ae3370a3bf4533c8f2d159acd/charset_normalizer-3.4.5-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:60d68e820af339df4ae8358c7a2e7596badeb61e544438e489035f9fbf3246a5", size = 188006, upload-time = "2026-03-06T06:00:53.8Z" }, - { url = "https://files.pythonhosted.org/packages/ae/6e/f2d30e8c27c1b0736a6520311982cf5286cfc7f6cac77d7bc1325e3a23f2/charset_normalizer-3.4.5-cp311-cp311-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:10b473fc8dca1c3ad8559985794815f06ca3fc71942c969129070f2c3cdf7281", size = 205085, upload-time = "2026-03-06T06:00:55.311Z" }, - { url = "https://files.pythonhosted.org/packages/d0/90/d12cefcb53b5931e2cf792a33718d7126efb116a320eaa0742c7059a95e4/charset_normalizer-3.4.5-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d4eb8ac7469b2a5d64b5b8c04f84d8bf3ad340f4514b98523805cbf46e3b3923", size = 200545, upload-time = "2026-03-06T06:00:56.532Z" }, - { url = "https://files.pythonhosted.org/packages/03/f4/44d3b830a20e89ff82a3134912d9a1cf6084d64f3b95dcad40f74449a654/charset_normalizer-3.4.5-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5bcb3227c3d9aaf73eaaab1db7ccd80a8995c509ee9941e2aae060ca6e4e5d81", size = 193863, upload-time = "2026-03-06T06:00:57.823Z" }, - { url = "https://files.pythonhosted.org/packages/25/4b/f212119c18a6320a9d4a730d1b4057875cdeabf21b3614f76549042ef8a8/charset_normalizer-3.4.5-cp311-cp311-manylinux_2_31_armv7l.whl", hash = "sha256:75ee9c1cce2911581a70a3c0919d8bccf5b1cbc9b0e5171400ec736b4b569497", size = 181827, upload-time = "2026-03-06T06:00:59.323Z" }, - { url = "https://files.pythonhosted.org/packages/74/00/b26158e48b425a202a92965f8069e8a63d9af1481dfa206825d7f74d2a3c/charset_normalizer-3.4.5-cp311-cp311-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:1d1401945cb77787dbd3af2446ff2d75912327c4c3a1526ab7955ecf8600687c", size = 191085, upload-time = "2026-03-06T06:01:00.546Z" }, - { url = "https://files.pythonhosted.org/packages/c4/c2/1c1737bf6fd40335fe53d28fe49afd99ee4143cc57a845e99635ce0b9b6d/charset_normalizer-3.4.5-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:0a45e504f5e1be0bd385935a8e1507c442349ca36f511a47057a71c9d1d6ea9e", size = 190688, upload-time = "2026-03-06T06:01:02.479Z" }, - { url = "https://files.pythonhosted.org/packages/5a/3d/abb5c22dc2ef493cd56522f811246a63c5427c08f3e3e50ab663de27fcf4/charset_normalizer-3.4.5-cp311-cp311-musllinux_1_2_armv7l.whl", hash = "sha256:e09f671a54ce70b79a1fc1dc6da3072b7ef7251fadb894ed92d9aa8218465a5f", size = 183077, upload-time = "2026-03-06T06:01:04.231Z" }, - { url = "https://files.pythonhosted.org/packages/44/33/5298ad4d419a58e25b3508e87f2758d1442ff00c2471f8e0403dab8edad5/charset_normalizer-3.4.5-cp311-cp311-musllinux_1_2_ppc64le.whl", hash = "sha256:d01de5e768328646e6a3fa9e562706f8f6641708c115c62588aef2b941a4f88e", size = 206706, upload-time = "2026-03-06T06:01:05.773Z" }, - { url = "https://files.pythonhosted.org/packages/7b/17/51e7895ac0f87c3b91d276a449ef09f5532a7529818f59646d7a55089432/charset_normalizer-3.4.5-cp311-cp311-musllinux_1_2_riscv64.whl", hash = "sha256:131716d6786ad5e3dc542f5cc6f397ba3339dc0fb87f87ac30e550e8987756af", size = 191665, upload-time = "2026-03-06T06:01:07.473Z" }, - { url = "https://files.pythonhosted.org/packages/90/8f/cce9adf1883e98906dbae380d769b4852bb0fa0004bc7d7a2243418d3ea8/charset_normalizer-3.4.5-cp311-cp311-musllinux_1_2_s390x.whl", hash = "sha256:1a374cc0b88aa710e8865dc1bd6edb3743c59f27830f0293ab101e4cf3ce9f85", size = 201950, upload-time = "2026-03-06T06:01:08.973Z" }, - { url = "https://files.pythonhosted.org/packages/08/ca/bce99cd5c397a52919e2769d126723f27a4c037130374c051c00470bcd38/charset_normalizer-3.4.5-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:d31f0d1671e1534e395f9eb84a68e0fb670e1edb1fe819a9d7f564ae3bc4e53f", size = 195830, upload-time = "2026-03-06T06:01:10.155Z" }, - { url = "https://files.pythonhosted.org/packages/87/4f/2e3d023a06911f1281f97b8f036edc9872167036ca6f55cc874a0be6c12c/charset_normalizer-3.4.5-cp311-cp311-win32.whl", hash = "sha256:cace89841c0599d736d3d74a27bc5821288bb47c5441923277afc6059d7fbcb4", size = 132029, upload-time = "2026-03-06T06:01:11.706Z" }, - { url = "https://files.pythonhosted.org/packages/fe/1f/a853b73d386521fd44b7f67ded6b17b7b2367067d9106a5c4b44f9a34274/charset_normalizer-3.4.5-cp311-cp311-win_amd64.whl", hash = "sha256:f8102ae93c0bc863b1d41ea0f4499c20a83229f52ed870850892df555187154a", size = 142404, upload-time = "2026-03-06T06:01:12.865Z" }, - { url = "https://files.pythonhosted.org/packages/b4/10/dba36f76b71c38e9d391abe0fd8a5b818790e053c431adecfc98c35cd2a9/charset_normalizer-3.4.5-cp311-cp311-win_arm64.whl", hash = "sha256:ed98364e1c262cf5f9363c3eca8c2df37024f52a8fa1180a3610014f26eac51c", size = 132796, upload-time = "2026-03-06T06:01:14.106Z" }, - { url = "https://files.pythonhosted.org/packages/9c/b6/9ee9c1a608916ca5feae81a344dffbaa53b26b90be58cc2159e3332d44ec/charset_normalizer-3.4.5-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:ed97c282ee4f994ef814042423a529df9497e3c666dca19be1d4cd1129dc7ade", size = 280976, upload-time = "2026-03-06T06:01:15.276Z" }, - { url = "https://files.pythonhosted.org/packages/f8/d8/a54f7c0b96f1df3563e9190f04daf981e365a9b397eedfdfb5dbef7e5c6c/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0294916d6ccf2d069727d65973c3a1ca477d68708db25fd758dd28b0827cff54", size = 189356, upload-time = "2026-03-06T06:01:16.511Z" }, - { url = "https://files.pythonhosted.org/packages/42/69/2bf7f76ce1446759a5787cb87d38f6a61eb47dbbdf035cfebf6347292a65/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:dc57a0baa3eeedd99fafaef7511b5a6ef4581494e8168ee086031744e2679467", size = 206369, upload-time = "2026-03-06T06:01:17.853Z" }, - { url = "https://files.pythonhosted.org/packages/10/9c/949d1a46dab56b959d9a87272482195f1840b515a3380e39986989a893ae/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:ed1a9a204f317ef879b32f9af507d47e49cd5e7f8e8d5d96358c98373314fc60", size = 203285, upload-time = "2026-03-06T06:01:19.473Z" }, - { url = "https://files.pythonhosted.org/packages/67/5c/ae30362a88b4da237d71ea214a8c7eb915db3eec941adda511729ac25fa2/charset_normalizer-3.4.5-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:7ad83b8f9379176c841f8865884f3514d905bcd2a9a3b210eaa446e7d2223e4d", size = 196274, upload-time = "2026-03-06T06:01:20.728Z" }, - { url = "https://files.pythonhosted.org/packages/b2/07/c9f2cb0e46cb6d64fdcc4f95953747b843bb2181bda678dc4e699b8f0f9a/charset_normalizer-3.4.5-cp312-cp312-manylinux_2_31_armv7l.whl", hash = "sha256:a118e2e0b5ae6b0120d5efa5f866e58f2bb826067a646431da4d6a2bdae7950e", size = 184715, upload-time = "2026-03-06T06:01:22.194Z" }, - { url = "https://files.pythonhosted.org/packages/36/64/6b0ca95c44fddf692cd06d642b28f63009d0ce325fad6e9b2b4d0ef86a52/charset_normalizer-3.4.5-cp312-cp312-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:754f96058e61a5e22e91483f823e07df16416ce76afa4ebf306f8e1d1296d43f", size = 193426, upload-time = "2026-03-06T06:01:23.795Z" }, - { url = "https://files.pythonhosted.org/packages/50/bc/a730690d726403743795ca3f5bb2baf67838c5fea78236098f324b965e40/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:0c300cefd9b0970381a46394902cd18eaf2aa00163f999590ace991989dcd0fc", size = 191780, upload-time = "2026-03-06T06:01:25.053Z" }, - { url = "https://files.pythonhosted.org/packages/97/4f/6c0bc9af68222b22951552d73df4532b5be6447cee32d58e7e8c74ecbb7b/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_armv7l.whl", hash = "sha256:c108f8619e504140569ee7de3f97d234f0fbae338a7f9f360455071ef9855a95", size = 185805, upload-time = "2026-03-06T06:01:26.294Z" }, - { url = "https://files.pythonhosted.org/packages/dd/b9/a523fb9b0ee90814b503452b2600e4cbc118cd68714d57041564886e7325/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_ppc64le.whl", hash = "sha256:d1028de43596a315e2720a9849ee79007ab742c06ad8b45a50db8cdb7ed4a82a", size = 208342, upload-time = "2026-03-06T06:01:27.55Z" }, - { url = "https://files.pythonhosted.org/packages/4d/61/c59e761dee4464050713e50e27b58266cc8e209e518c0b378c1580c959ba/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_riscv64.whl", hash = "sha256:19092dde50335accf365cce21998a1c6dd8eafd42c7b226eb54b2747cdce2fac", size = 193661, upload-time = "2026-03-06T06:01:29.051Z" }, - { url = "https://files.pythonhosted.org/packages/1c/43/729fa30aad69783f755c5ad8649da17ee095311ca42024742701e202dc59/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_s390x.whl", hash = "sha256:4354e401eb6dab9aed3c7b4030514328a6c748d05e1c3e19175008ca7de84fb1", size = 204819, upload-time = "2026-03-06T06:01:30.298Z" }, - { url = "https://files.pythonhosted.org/packages/87/33/d9b442ce5a91b96fc0840455a9e49a611bbadae6122778d0a6a79683dd31/charset_normalizer-3.4.5-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:a68766a3c58fde7f9aaa22b3786276f62ab2f594efb02d0a1421b6282e852e98", size = 198080, upload-time = "2026-03-06T06:01:31.478Z" }, - { url = "https://files.pythonhosted.org/packages/56/5a/b8b5a23134978ee9885cee2d6995f4c27cc41f9baded0a9685eabc5338f0/charset_normalizer-3.4.5-cp312-cp312-win32.whl", hash = "sha256:1827734a5b308b65ac54e86a618de66f935a4f63a8a462ff1e19a6788d6c2262", size = 132630, upload-time = "2026-03-06T06:01:33.056Z" }, - { url = "https://files.pythonhosted.org/packages/70/53/e44a4c07e8904500aec95865dc3f6464dc3586a039ef0df606eb3ac38e35/charset_normalizer-3.4.5-cp312-cp312-win_amd64.whl", hash = "sha256:728c6a963dfab66ef865f49286e45239384249672cd598576765acc2a640a636", size = 142856, upload-time = "2026-03-06T06:01:34.489Z" }, - { url = "https://files.pythonhosted.org/packages/ea/aa/c5628f7cad591b1cf45790b7a61483c3e36cf41349c98af7813c483fd6e8/charset_normalizer-3.4.5-cp312-cp312-win_arm64.whl", hash = "sha256:75dfd1afe0b1647449e852f4fb428195a7ed0588947218f7ba929f6538487f02", size = 132982, upload-time = "2026-03-06T06:01:35.641Z" }, - { url = "https://files.pythonhosted.org/packages/f5/48/9f34ec4bb24aa3fdba1890c1bddb97c8a4be1bd84ef5c42ac2352563ad05/charset_normalizer-3.4.5-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:ac59c15e3f1465f722607800c68713f9fbc2f672b9eb649fe831da4019ae9b23", size = 280788, upload-time = "2026-03-06T06:01:37.126Z" }, - { url = "https://files.pythonhosted.org/packages/0e/09/6003e7ffeb90cc0560da893e3208396a44c210c5ee42efff539639def59b/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:165c7b21d19365464e8f70e5ce5e12524c58b48c78c1f5a57524603c1ab003f8", size = 188890, upload-time = "2026-03-06T06:01:38.73Z" }, - { url = "https://files.pythonhosted.org/packages/42/1e/02706edf19e390680daa694d17e2b8eab4b5f7ac285e2a51168b4b22ee6b/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:28269983f25a4da0425743d0d257a2d6921ea7d9b83599d4039486ec5b9f911d", size = 206136, upload-time = "2026-03-06T06:01:40.016Z" }, - { url = "https://files.pythonhosted.org/packages/c7/87/942c3def1b37baf3cf786bad01249190f3ca3d5e63a84f831e704977de1f/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d27ce22ec453564770d29d03a9506d449efbb9fa13c00842262b2f6801c48cce", size = 202551, upload-time = "2026-03-06T06:01:41.522Z" }, - { url = "https://files.pythonhosted.org/packages/94/0a/af49691938dfe175d71b8a929bd7e4ace2809c0c5134e28bc535660d5262/charset_normalizer-3.4.5-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0625665e4ebdddb553ab185de5db7054393af8879fb0c87bd5690d14379d6819", size = 195572, upload-time = "2026-03-06T06:01:43.208Z" }, - { url = "https://files.pythonhosted.org/packages/20/ea/dfb1792a8050a8e694cfbde1570ff97ff74e48afd874152d38163d1df9ae/charset_normalizer-3.4.5-cp313-cp313-manylinux_2_31_armv7l.whl", hash = "sha256:c23eb3263356d94858655b3e63f85ac5d50970c6e8febcdde7830209139cc37d", size = 184438, upload-time = "2026-03-06T06:01:44.755Z" }, - { url = "https://files.pythonhosted.org/packages/72/12/c281e2067466e3ddd0595bfaea58a6946765ace5c72dfa3edc2f5f118026/charset_normalizer-3.4.5-cp313-cp313-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e6302ca4ae283deb0af68d2fbf467474b8b6aedcd3dab4db187e07f94c109763", size = 193035, upload-time = "2026-03-06T06:01:46.051Z" }, - { url = "https://files.pythonhosted.org/packages/ba/4f/3792c056e7708e10464bad0438a44708886fb8f92e3c3d29ec5e2d964d42/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e51ae7d81c825761d941962450f50d041db028b7278e7b08930b4541b3e45cb9", size = 191340, upload-time = "2026-03-06T06:01:47.547Z" }, - { url = "https://files.pythonhosted.org/packages/e7/86/80ddba897127b5c7a9bccc481b0cd36c8fefa485d113262f0fe4332f0bf4/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_armv7l.whl", hash = "sha256:597d10dec876923e5c59e48dbd366e852eacb2b806029491d307daea6b917d7c", size = 185464, upload-time = "2026-03-06T06:01:48.764Z" }, - { url = "https://files.pythonhosted.org/packages/4d/00/b5eff85ba198faacab83e0e4b6f0648155f072278e3b392a82478f8b988b/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_ppc64le.whl", hash = "sha256:5cffde4032a197bd3b42fd0b9509ec60fb70918d6970e4cc773f20fc9180ca67", size = 208014, upload-time = "2026-03-06T06:01:50.371Z" }, - { url = "https://files.pythonhosted.org/packages/c8/11/d36f70be01597fd30850dde8a1269ebc8efadd23ba5785808454f2389bde/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_riscv64.whl", hash = "sha256:2da4eedcb6338e2321e831a0165759c0c620e37f8cd044a263ff67493be8ffb3", size = 193297, upload-time = "2026-03-06T06:01:51.933Z" }, - { url = "https://files.pythonhosted.org/packages/1a/1d/259eb0a53d4910536c7c2abb9cb25f4153548efb42800c6a9456764649c0/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_s390x.whl", hash = "sha256:65a126fb4b070d05340a84fc709dd9e7c75d9b063b610ece8a60197a291d0adf", size = 204321, upload-time = "2026-03-06T06:01:53.887Z" }, - { url = "https://files.pythonhosted.org/packages/84/31/faa6c5b9d3688715e1ed1bb9d124c384fe2fc1633a409e503ffe1c6398c1/charset_normalizer-3.4.5-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:c7a80a9242963416bd81f99349d5f3fce1843c303bd404f204918b6d75a75fd6", size = 197509, upload-time = "2026-03-06T06:01:56.439Z" }, - { url = "https://files.pythonhosted.org/packages/fd/a5/c7d9dd1503ffc08950b3260f5d39ec2366dd08254f0900ecbcf3a6197c7c/charset_normalizer-3.4.5-cp313-cp313-win32.whl", hash = "sha256:f1d725b754e967e648046f00c4facc42d414840f5ccc670c5670f59f83693e4f", size = 132284, upload-time = "2026-03-06T06:01:57.812Z" }, - { url = "https://files.pythonhosted.org/packages/b9/0f/57072b253af40c8aa6636e6de7d75985624c1eb392815b2f934199340a89/charset_normalizer-3.4.5-cp313-cp313-win_amd64.whl", hash = "sha256:e37bd100d2c5d3ba35db9c7c5ba5a9228cbcffe5c4778dc824b164e5257813d7", size = 142630, upload-time = "2026-03-06T06:01:59.062Z" }, - { url = "https://files.pythonhosted.org/packages/31/41/1c4b7cc9f13bd9d369ce3bc993e13d374ce25fa38a2663644283ecf422c1/charset_normalizer-3.4.5-cp313-cp313-win_arm64.whl", hash = "sha256:93b3b2cc5cf1b8743660ce77a4f45f3f6d1172068207c1defc779a36eea6bb36", size = 133254, upload-time = "2026-03-06T06:02:00.281Z" }, - { url = "https://files.pythonhosted.org/packages/43/be/0f0fd9bb4a7fa4fb5067fb7d9ac693d4e928d306f80a0d02bde43a7c4aee/charset_normalizer-3.4.5-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:8197abe5ca1ffb7d91e78360f915eef5addff270f8a71c1fc5be24a56f3e4873", size = 280232, upload-time = "2026-03-06T06:02:01.508Z" }, - { url = "https://files.pythonhosted.org/packages/28/02/983b5445e4bef49cd8c9da73a8e029f0825f39b74a06d201bfaa2e55142a/charset_normalizer-3.4.5-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:a2aecdb364b8a1802afdc7f9327d55dad5366bc97d8502d0f5854e50712dbc5f", size = 189688, upload-time = "2026-03-06T06:02:02.857Z" }, - { url = "https://files.pythonhosted.org/packages/d0/88/152745c5166437687028027dc080e2daed6fe11cfa95a22f4602591c42db/charset_normalizer-3.4.5-cp314-cp314-manylinux2014_ppc64le.manylinux_2_17_ppc64le.manylinux_2_28_ppc64le.whl", hash = "sha256:a66aa5022bf81ab4b1bebfb009db4fd68e0c6d4307a1ce5ef6a26e5878dfc9e4", size = 206833, upload-time = "2026-03-06T06:02:05.127Z" }, - { url = "https://files.pythonhosted.org/packages/cb/0f/ebc15c8b02af2f19be9678d6eed115feeeccc45ce1f4b098d986c13e8769/charset_normalizer-3.4.5-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:d77f97e515688bd615c1d1f795d540f32542d514242067adcb8ef532504cb9ee", size = 202879, upload-time = "2026-03-06T06:02:06.446Z" }, - { url = "https://files.pythonhosted.org/packages/38/9c/71336bff6934418dc8d1e8a1644176ac9088068bc571da612767619c97b3/charset_normalizer-3.4.5-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:01a1ed54b953303ca7e310fafe0fe347aab348bd81834a0bcd602eb538f89d66", size = 195764, upload-time = "2026-03-06T06:02:08.763Z" }, - { url = "https://files.pythonhosted.org/packages/b7/95/ce92fde4f98615661871bc282a856cf9b8a15f686ba0af012984660d480b/charset_normalizer-3.4.5-cp314-cp314-manylinux_2_31_armv7l.whl", hash = "sha256:b2d37d78297b39a9eb9eb92c0f6df98c706467282055419df141389b23f93362", size = 183728, upload-time = "2026-03-06T06:02:10.137Z" }, - { url = "https://files.pythonhosted.org/packages/1c/e7/f5b4588d94e747ce45ae680f0f242bc2d98dbd4eccfab73e6160b6893893/charset_normalizer-3.4.5-cp314-cp314-manylinux_2_31_riscv64.manylinux_2_39_riscv64.whl", hash = "sha256:e71bbb595973622b817c042bd943c3f3667e9c9983ce3d205f973f486fec98a7", size = 192937, upload-time = "2026-03-06T06:02:11.663Z" }, - { url = "https://files.pythonhosted.org/packages/f9/29/9d94ed6b929bf9f48bf6ede6e7474576499f07c4c5e878fb186083622716/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:4cd966c2559f501c6fd69294d082c2934c8dd4719deb32c22961a5ac6db0df1d", size = 192040, upload-time = "2026-03-06T06:02:13.489Z" }, - { url = "https://files.pythonhosted.org/packages/15/d2/1a093a1cf827957f9445f2fe7298bcc16f8fc5e05c1ed2ad1af0b239035e/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_armv7l.whl", hash = "sha256:d5e52d127045d6ae01a1e821acfad2f3a1866c54d0e837828538fabe8d9d1bd6", size = 184107, upload-time = "2026-03-06T06:02:14.83Z" }, - { url = "https://files.pythonhosted.org/packages/0f/7d/82068ce16bd36135df7b97f6333c5d808b94e01d4599a682e2337ed5fd14/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_ppc64le.whl", hash = "sha256:30a2b1a48478c3428d047ed9690d57c23038dac838a87ad624c85c0a78ebeb39", size = 208310, upload-time = "2026-03-06T06:02:16.165Z" }, - { url = "https://files.pythonhosted.org/packages/84/4e/4dfb52307bb6af4a5c9e73e482d171b81d36f522b21ccd28a49656baa680/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_riscv64.whl", hash = "sha256:d8ed79b8f6372ca4254955005830fd61c1ccdd8c0fac6603e2c145c61dd95db6", size = 192918, upload-time = "2026-03-06T06:02:18.144Z" }, - { url = "https://files.pythonhosted.org/packages/08/a4/159ff7da662cf7201502ca89980b8f06acf3e887b278956646a8aeb178ab/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_s390x.whl", hash = "sha256:c5af897b45fa606b12464ccbe0014bbf8c09191e0a66aab6aa9d5cf6e77e0c94", size = 204615, upload-time = "2026-03-06T06:02:19.821Z" }, - { url = "https://files.pythonhosted.org/packages/d6/62/0dd6172203cb6b429ffffc9935001fde42e5250d57f07b0c28c6046deb6b/charset_normalizer-3.4.5-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:1088345bcc93c58d8d8f3d783eca4a6e7a7752bbff26c3eee7e73c597c191c2e", size = 197784, upload-time = "2026-03-06T06:02:21.86Z" }, - { url = "https://files.pythonhosted.org/packages/c7/5e/1aab5cb737039b9c59e63627dc8bbc0d02562a14f831cc450e5f91d84ce1/charset_normalizer-3.4.5-cp314-cp314-win32.whl", hash = "sha256:ee57b926940ba00bca7ba7041e665cc956e55ef482f851b9b65acb20d867e7a2", size = 133009, upload-time = "2026-03-06T06:02:23.289Z" }, - { url = "https://files.pythonhosted.org/packages/40/65/e7c6c77d7aaa4c0d7974f2e403e17f0ed2cb0fc135f77d686b916bf1eead/charset_normalizer-3.4.5-cp314-cp314-win_amd64.whl", hash = "sha256:4481e6da1830c8a1cc0b746b47f603b653dadb690bcd851d039ffaefe70533aa", size = 143511, upload-time = "2026-03-06T06:02:26.195Z" }, - { url = "https://files.pythonhosted.org/packages/ba/91/52b0841c71f152f563b8e072896c14e3d83b195c188b338d3cc2e582d1d4/charset_normalizer-3.4.5-cp314-cp314-win_arm64.whl", hash = "sha256:97ab7787092eb9b50fb47fa04f24c75b768a606af1bcba1957f07f128a7219e4", size = 133775, upload-time = "2026-03-06T06:02:27.473Z" }, - { url = "https://files.pythonhosted.org/packages/c5/60/3a621758945513adfd4db86827a5bafcc615f913dbd0b4c2ed64a65731be/charset_normalizer-3.4.5-py3-none-any.whl", hash = "sha256:9db5e3fcdcee89a78c04dffb3fe33c79f77bd741a624946db2591c81b2fc85b0", size = 55455, upload-time = "2026-03-06T06:03:17.827Z" }, -] - -[[package]] -name = "click" -version = "8.2.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "colorama", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/60/6c/8ca2efa64cf75a977a0d7fac081354553ebe483345c734fb6b6515d96bbc/click-8.2.1.tar.gz", hash = "sha256:27c491cc05d968d271d5a1db13e3b5a184636d9d930f148c50b038f0d0646202", size = 286342, upload-time = "2025-05-20T23:19:49.832Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/85/32/10bb5764d90a8eee674e9dc6f4db6a0ab47c8c4d0d83c27f7c39ac415a4d/click-8.2.1-py3-none-any.whl", hash = "sha256:61a3265b914e850b85317d0b3109c7f8cd35a670f963866005d6ef1d5175a12b", size = 102215, upload-time = "2025-05-20T23:19:47.796Z" }, -] - -[[package]] -name = "click-command-tree" -version = "1.2.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/95/47/fd73ca0ba632a9c45610839a493825834dd74fdc9e2e2d1ffc6416932161/click_command_tree-1.2.0.tar.gz", hash = "sha256:3e7f5db9f3eccc2eccab40f7979355efe6d5123c958b748dee9c242a38364d6c", size = 3317, upload-time = "2024-03-25T02:08:00.785Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/e1/98/6f560302c8d41bfeb22a9f6d7291ab1687386bae34636e5756aaa527c4b4/click_command_tree-1.2.0-1-py3-none-any.whl", hash = "sha256:5213397dc01241db0e7757d34363cd74161027c6141d75973bc1ae65b659449f", size = 3834, upload-time = "2024-03-25T02:04:32.598Z" }, -] - -[[package]] -name = "click-option-group" -version = "0.5.9" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "click" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/ef/ff/d291d66595b30b83d1cb9e314b2c9be7cfc7327d4a0d40a15da2416ea97b/click_option_group-0.5.9.tar.gz", hash = "sha256:f94ed2bc4cf69052e0f29592bd1e771a1789bd7bfc482dd0bc482134aff95823", size = 22222, upload-time = "2025-10-09T09:38:01.474Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/75/45/54bb2d8d4138964a94bef6e9afe48b0be4705ba66ac442ae7d8a8dc4ffef/click_option_group-0.5.9-py3-none-any.whl", hash = "sha256:ad2599248bd373e2e19bec5407967c3eec1d0d4fc4a5e77b08a0481e75991080", size = 11553, upload-time = "2025-10-09T09:38:00.066Z" }, -] - -[[package]] -name = "cmsis-pack-manager" -version = "0.6.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "appdirs" }, - { name = "cffi" }, - { name = "pyyaml" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/61/df/07336875bb9a51053eb671b3d6046b23552eb9e9301b917336b0f392a82b/cmsis_pack_manager-0.6.0.tar.gz", hash = "sha256:94913a3db9695f8d0676a4a74916a5626984e2b46f923ada61881e4f5064079e", size = 67773, upload-time = "2025-06-27T02:42:59.42Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a6/9b/a9eafbafc92d56902b963d10e4c72c2b23598fd609caaf0087ed39a9b12f/cmsis_pack_manager-0.6.0-py3-none-linux_armv6l.whl", hash = "sha256:2c540ae648479ca91487585ca7cbda830fa7a1b9244a7b20765510231cd3c91a", size = 3484862, upload-time = "2025-06-27T02:36:14.167Z" }, - { url = "https://files.pythonhosted.org/packages/de/b2/970a9ddaebd82712d496ae2ba98176edf531be16b1b6abb46e3088ceebdb/cmsis_pack_manager-0.6.0-py3-none-macosx_10_12_universal2.whl", hash = "sha256:4b912d77b5a13146c936a87673a840ccdbf7305fa0a21414cde74709c246c052", size = 4122951, upload-time = "2025-06-27T02:36:15.893Z" }, - { url = "https://files.pythonhosted.org/packages/46/85/66f9839456e1c240a1f55594faf7efced1054bad5c2137326f4bc6f7ef5e/cmsis_pack_manager-0.6.0-py3-none-manylinux_2_12_i686.manylinux2010_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:f734bf40b19103222716ab4920da78e5af37777a19769e920472218146f7f2e3", size = 3770533, upload-time = "2025-06-27T02:36:17.335Z" }, - { url = "https://files.pythonhosted.org/packages/78/a1/217310c633609bfde6a8553222295b08e6f50c99f347cb3bb6d556a74ae0/cmsis_pack_manager-0.6.0-py3-none-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:c073b93db44c86cb27b60dc98d42b54c3fd84be479979657def094c5da342c36", size = 3413476, upload-time = "2025-06-27T02:36:18.827Z" }, - { url = "https://files.pythonhosted.org/packages/a2/87/83a3e0bcd0a75110488842526637f22fadcb7dae6b8a9afb848115141280/cmsis_pack_manager-0.6.0-py3-none-manylinux_2_17_armv7l.manylinux2014_armv7l.whl", hash = "sha256:3b48ea644034acda9bd2a6afe9f89f4d6b67ee28fe5800a25dbb51e179310b5c", size = 3462120, upload-time = "2025-06-27T02:36:20.337Z" }, - { url = "https://files.pythonhosted.org/packages/75/29/c65da965f9b60f2d470f01020a5cab8e8abe5113f4b22ecaadcfba22fa44/cmsis_pack_manager-0.6.0-py3-none-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:cc8c0a2cb8790168496df493eb178215a8b638d5d9c2176289764da0686ec7fd", size = 3666217, upload-time = "2025-06-27T02:36:21.882Z" }, - { url = "https://files.pythonhosted.org/packages/4c/c4/619a3e979666fa640bdb5333f6782bf709962c39da0770fdadb4f8d51652/cmsis_pack_manager-0.6.0-py3-none-win32.whl", hash = "sha256:8e3830566ee7b2f596f538b58e42500b7dffdfe18ce0b543b07c2715ad7734f5", size = 1520643, upload-time = "2025-06-27T02:36:24.766Z" }, - { url = "https://files.pythonhosted.org/packages/b5/7e/547624bf371eeaeae6370ed754bebbafbbf114a2d7dfc372c4e5a7ff3ded/cmsis_pack_manager-0.6.0-py3-none-win_amd64.whl", hash = "sha256:53fc43ae474905d107889681c5829ea90b6211d139794fa3f8691c9b0da3bb85", size = 1795914, upload-time = "2025-06-27T02:36:23.25Z" }, -] - -[[package]] -name = "colorama" -version = "0.4.6" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/53/6f443c9a4a8358a93a6792e2acffb9d9d5cb0a5cfd8802644b7b1c9a02e4/colorama-0.4.6.tar.gz", hash = "sha256:08695f5cb7ed6e0531a20572697297273c47b8cae5a63ffc6d6ed5c201be6e44", size = 27697, upload-time = "2022-10-25T02:36:22.414Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d1/d6/3965ed04c63042e047cb6a3e6ed1a63a35087b6a609aa3a15ed8ac56c221/colorama-0.4.6-py2.py3-none-any.whl", hash = "sha256:4f1d9991f5acc0ca119f9d443620b77f9d6b33703e51011c16baf57afb285fc6", size = 25335, upload-time = "2022-10-25T02:36:20.889Z" }, -] - -[[package]] -name = "crcmod" -version = "1.7" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6b/b0/e595ce2a2527e169c3bcd6c33d2473c1918e0b7f6826a043ca1245dd4e5b/crcmod-1.7.tar.gz", hash = "sha256:dc7051a0db5f2bd48665a990d3ec1cc305a466a77358ca4492826f41f283601e", size = 89670, upload-time = "2010-06-27T14:35:29.538Z" } - -[[package]] -name = "cryptography" -version = "46.0.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "cffi", marker = "platform_python_implementation != 'PyPy'" }, - { name = "typing-extensions", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/60/04/ee2a9e8542e4fa2773b81771ff8349ff19cdd56b7258a0cc442639052edb/cryptography-46.0.5.tar.gz", hash = "sha256:abace499247268e3757271b2f1e244b36b06f8515cf27c4d49468fc9eb16e93d", size = 750064, upload-time = "2026-02-10T19:18:38.255Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f7/81/b0bb27f2ba931a65409c6b8a8b358a7f03c0e46eceacddff55f7c84b1f3b/cryptography-46.0.5-cp311-abi3-macosx_10_9_universal2.whl", hash = "sha256:351695ada9ea9618b3500b490ad54c739860883df6c1f555e088eaf25b1bbaad", size = 7176289, upload-time = "2026-02-10T19:17:08.274Z" }, - { url = "https://files.pythonhosted.org/packages/ff/9e/6b4397a3e3d15123de3b1806ef342522393d50736c13b20ec4c9ea6693a6/cryptography-46.0.5-cp311-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:c18ff11e86df2e28854939acde2d003f7984f721eba450b56a200ad90eeb0e6b", size = 4275637, upload-time = "2026-02-10T19:17:10.53Z" }, - { url = "https://files.pythonhosted.org/packages/63/e7/471ab61099a3920b0c77852ea3f0ea611c9702f651600397ac567848b897/cryptography-46.0.5-cp311-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:4d7e3d356b8cd4ea5aff04f129d5f66ebdc7b6f8eae802b93739ed520c47c79b", size = 4424742, upload-time = "2026-02-10T19:17:12.388Z" }, - { url = "https://files.pythonhosted.org/packages/37/53/a18500f270342d66bf7e4d9f091114e31e5ee9e7375a5aba2e85a91e0044/cryptography-46.0.5-cp311-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:50bfb6925eff619c9c023b967d5b77a54e04256c4281b0e21336a130cd7fc263", size = 4277528, upload-time = "2026-02-10T19:17:13.853Z" }, - { url = "https://files.pythonhosted.org/packages/22/29/c2e812ebc38c57b40e7c583895e73c8c5adb4d1e4a0cc4c5a4fdab2b1acc/cryptography-46.0.5-cp311-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:803812e111e75d1aa73690d2facc295eaefd4439be1023fefc4995eaea2af90d", size = 4947993, upload-time = "2026-02-10T19:17:15.618Z" }, - { url = "https://files.pythonhosted.org/packages/6b/e7/237155ae19a9023de7e30ec64e5d99a9431a567407ac21170a046d22a5a3/cryptography-46.0.5-cp311-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ee190460e2fbe447175cda91b88b84ae8322a104fc27766ad09428754a618ed", size = 4456855, upload-time = "2026-02-10T19:17:17.221Z" }, - { url = "https://files.pythonhosted.org/packages/2d/87/fc628a7ad85b81206738abbd213b07702bcbdada1dd43f72236ef3cffbb5/cryptography-46.0.5-cp311-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:f145bba11b878005c496e93e257c1e88f154d278d2638e6450d17e0f31e558d2", size = 3984635, upload-time = "2026-02-10T19:17:18.792Z" }, - { url = "https://files.pythonhosted.org/packages/84/29/65b55622bde135aedf4565dc509d99b560ee4095e56989e815f8fd2aa910/cryptography-46.0.5-cp311-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:e9251e3be159d1020c4030bd2e5f84d6a43fe54b6c19c12f51cde9542a2817b2", size = 4277038, upload-time = "2026-02-10T19:17:20.256Z" }, - { url = "https://files.pythonhosted.org/packages/bc/36/45e76c68d7311432741faf1fbf7fac8a196a0a735ca21f504c75d37e2558/cryptography-46.0.5-cp311-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:47fb8a66058b80e509c47118ef8a75d14c455e81ac369050f20ba0d23e77fee0", size = 4912181, upload-time = "2026-02-10T19:17:21.825Z" }, - { url = "https://files.pythonhosted.org/packages/6d/1a/c1ba8fead184d6e3d5afcf03d569acac5ad063f3ac9fb7258af158f7e378/cryptography-46.0.5-cp311-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:4c3341037c136030cb46e4b1e17b7418ea4cbd9dd207e4a6f3b2b24e0d4ac731", size = 4456482, upload-time = "2026-02-10T19:17:25.133Z" }, - { url = "https://files.pythonhosted.org/packages/f9/e5/3fb22e37f66827ced3b902cf895e6a6bc1d095b5b26be26bd13c441fdf19/cryptography-46.0.5-cp311-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:890bcb4abd5a2d3f852196437129eb3667d62630333aacc13dfd470fad3aaa82", size = 4405497, upload-time = "2026-02-10T19:17:26.66Z" }, - { url = "https://files.pythonhosted.org/packages/1a/df/9d58bb32b1121a8a2f27383fabae4d63080c7ca60b9b5c88be742be04ee7/cryptography-46.0.5-cp311-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:80a8d7bfdf38f87ca30a5391c0c9ce4ed2926918e017c29ddf643d0ed2778ea1", size = 4667819, upload-time = "2026-02-10T19:17:28.569Z" }, - { url = "https://files.pythonhosted.org/packages/ea/ed/325d2a490c5e94038cdb0117da9397ece1f11201f425c4e9c57fe5b9f08b/cryptography-46.0.5-cp311-abi3-win32.whl", hash = "sha256:60ee7e19e95104d4c03871d7d7dfb3d22ef8a9b9c6778c94e1c8fcc8365afd48", size = 3028230, upload-time = "2026-02-10T19:17:30.518Z" }, - { url = "https://files.pythonhosted.org/packages/e9/5a/ac0f49e48063ab4255d9e3b79f5def51697fce1a95ea1370f03dc9db76f6/cryptography-46.0.5-cp311-abi3-win_amd64.whl", hash = "sha256:38946c54b16c885c72c4f59846be9743d699eee2b69b6988e0a00a01f46a61a4", size = 3480909, upload-time = "2026-02-10T19:17:32.083Z" }, - { url = "https://files.pythonhosted.org/packages/00/13/3d278bfa7a15a96b9dc22db5a12ad1e48a9eb3d40e1827ef66a5df75d0d0/cryptography-46.0.5-cp314-cp314t-macosx_10_9_universal2.whl", hash = "sha256:94a76daa32eb78d61339aff7952ea819b1734b46f73646a07decb40e5b3448e2", size = 7119287, upload-time = "2026-02-10T19:17:33.801Z" }, - { url = "https://files.pythonhosted.org/packages/67/c8/581a6702e14f0898a0848105cbefd20c058099e2c2d22ef4e476dfec75d7/cryptography-46.0.5-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:5be7bf2fb40769e05739dd0046e7b26f9d4670badc7b032d6ce4db64dddc0678", size = 4265728, upload-time = "2026-02-10T19:17:35.569Z" }, - { url = "https://files.pythonhosted.org/packages/dd/4a/ba1a65ce8fc65435e5a849558379896c957870dd64fecea97b1ad5f46a37/cryptography-46.0.5-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:fe346b143ff9685e40192a4960938545c699054ba11d4f9029f94751e3f71d87", size = 4408287, upload-time = "2026-02-10T19:17:36.938Z" }, - { url = "https://files.pythonhosted.org/packages/f8/67/8ffdbf7b65ed1ac224d1c2df3943553766914a8ca718747ee3871da6107e/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_aarch64.whl", hash = "sha256:c69fd885df7d089548a42d5ec05be26050ebcd2283d89b3d30676eb32ff87dee", size = 4270291, upload-time = "2026-02-10T19:17:38.748Z" }, - { url = "https://files.pythonhosted.org/packages/f8/e5/f52377ee93bc2f2bba55a41a886fd208c15276ffbd2569f2ddc89d50e2c5/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_ppc64le.whl", hash = "sha256:8293f3dea7fc929ef7240796ba231413afa7b68ce38fd21da2995549f5961981", size = 4927539, upload-time = "2026-02-10T19:17:40.241Z" }, - { url = "https://files.pythonhosted.org/packages/3b/02/cfe39181b02419bbbbcf3abdd16c1c5c8541f03ca8bda240debc467d5a12/cryptography-46.0.5-cp314-cp314t-manylinux_2_28_x86_64.whl", hash = "sha256:1abfdb89b41c3be0365328a410baa9df3ff8a9110fb75e7b52e66803ddabc9a9", size = 4442199, upload-time = "2026-02-10T19:17:41.789Z" }, - { url = "https://files.pythonhosted.org/packages/c0/96/2fcaeb4873e536cf71421a388a6c11b5bc846e986b2b069c79363dc1648e/cryptography-46.0.5-cp314-cp314t-manylinux_2_31_armv7l.whl", hash = "sha256:d66e421495fdb797610a08f43b05269e0a5ea7f5e652a89bfd5a7d3c1dee3648", size = 3960131, upload-time = "2026-02-10T19:17:43.379Z" }, - { url = "https://files.pythonhosted.org/packages/d8/d2/b27631f401ddd644e94c5cf33c9a4069f72011821cf3dc7309546b0642a0/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_aarch64.whl", hash = "sha256:4e817a8920bfbcff8940ecfd60f23d01836408242b30f1a708d93198393a80b4", size = 4270072, upload-time = "2026-02-10T19:17:45.481Z" }, - { url = "https://files.pythonhosted.org/packages/f4/a7/60d32b0370dae0b4ebe55ffa10e8599a2a59935b5ece1b9f06edb73abdeb/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_ppc64le.whl", hash = "sha256:68f68d13f2e1cb95163fa3b4db4bf9a159a418f5f6e7242564fc75fcae667fd0", size = 4892170, upload-time = "2026-02-10T19:17:46.997Z" }, - { url = "https://files.pythonhosted.org/packages/d2/b9/cf73ddf8ef1164330eb0b199a589103c363afa0cf794218c24d524a58eab/cryptography-46.0.5-cp314-cp314t-manylinux_2_34_x86_64.whl", hash = "sha256:a3d1fae9863299076f05cb8a778c467578262fae09f9dc0ee9b12eb4268ce663", size = 4441741, upload-time = "2026-02-10T19:17:48.661Z" }, - { url = "https://files.pythonhosted.org/packages/5f/eb/eee00b28c84c726fe8fa0158c65afe312d9c3b78d9d01daf700f1f6e37ff/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:c4143987a42a2397f2fc3b4d7e3a7d313fbe684f67ff443999e803dd75a76826", size = 4396728, upload-time = "2026-02-10T19:17:50.058Z" }, - { url = "https://files.pythonhosted.org/packages/65/f4/6bc1a9ed5aef7145045114b75b77c2a8261b4d38717bd8dea111a63c3442/cryptography-46.0.5-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:7d731d4b107030987fd61a7f8ab512b25b53cef8f233a97379ede116f30eb67d", size = 4652001, upload-time = "2026-02-10T19:17:51.54Z" }, - { url = "https://files.pythonhosted.org/packages/86/ef/5d00ef966ddd71ac2e6951d278884a84a40ffbd88948ef0e294b214ae9e4/cryptography-46.0.5-cp314-cp314t-win32.whl", hash = "sha256:c3bcce8521d785d510b2aad26ae2c966092b7daa8f45dd8f44734a104dc0bc1a", size = 3003637, upload-time = "2026-02-10T19:17:52.997Z" }, - { url = "https://files.pythonhosted.org/packages/b7/57/f3f4160123da6d098db78350fdfd9705057aad21de7388eacb2401dceab9/cryptography-46.0.5-cp314-cp314t-win_amd64.whl", hash = "sha256:4d8ae8659ab18c65ced284993c2265910f6c9e650189d4e3f68445ef82a810e4", size = 3469487, upload-time = "2026-02-10T19:17:54.549Z" }, - { url = "https://files.pythonhosted.org/packages/e2/fa/a66aa722105ad6a458bebd64086ca2b72cdd361fed31763d20390f6f1389/cryptography-46.0.5-cp38-abi3-macosx_10_9_universal2.whl", hash = "sha256:4108d4c09fbbf2789d0c926eb4152ae1760d5a2d97612b92d508d96c861e4d31", size = 7170514, upload-time = "2026-02-10T19:17:56.267Z" }, - { url = "https://files.pythonhosted.org/packages/0f/04/c85bdeab78c8bc77b701bf0d9bdcf514c044e18a46dcff330df5448631b0/cryptography-46.0.5-cp38-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.whl", hash = "sha256:7d1f30a86d2757199cb2d56e48cce14deddf1f9c95f1ef1b64ee91ea43fe2e18", size = 4275349, upload-time = "2026-02-10T19:17:58.419Z" }, - { url = "https://files.pythonhosted.org/packages/5c/32/9b87132a2f91ee7f5223b091dc963055503e9b442c98fc0b8a5ca765fab0/cryptography-46.0.5-cp38-abi3-manylinux2014_x86_64.manylinux_2_17_x86_64.whl", hash = "sha256:039917b0dc418bb9f6edce8a906572d69e74bd330b0b3fea4f79dab7f8ddd235", size = 4420667, upload-time = "2026-02-10T19:18:00.619Z" }, - { url = "https://files.pythonhosted.org/packages/a1/a6/a7cb7010bec4b7c5692ca6f024150371b295ee1c108bdc1c400e4c44562b/cryptography-46.0.5-cp38-abi3-manylinux_2_28_aarch64.whl", hash = "sha256:ba2a27ff02f48193fc4daeadf8ad2590516fa3d0adeeb34336b96f7fa64c1e3a", size = 4276980, upload-time = "2026-02-10T19:18:02.379Z" }, - { url = "https://files.pythonhosted.org/packages/8e/7c/c4f45e0eeff9b91e3f12dbd0e165fcf2a38847288fcfd889deea99fb7b6d/cryptography-46.0.5-cp38-abi3-manylinux_2_28_ppc64le.whl", hash = "sha256:61aa400dce22cb001a98014f647dc21cda08f7915ceb95df0c9eaf84b4b6af76", size = 4939143, upload-time = "2026-02-10T19:18:03.964Z" }, - { url = "https://files.pythonhosted.org/packages/37/19/e1b8f964a834eddb44fa1b9a9976f4e414cbb7aa62809b6760c8803d22d1/cryptography-46.0.5-cp38-abi3-manylinux_2_28_x86_64.whl", hash = "sha256:3ce58ba46e1bc2aac4f7d9290223cead56743fa6ab94a5d53292ffaac6a91614", size = 4453674, upload-time = "2026-02-10T19:18:05.588Z" }, - { url = "https://files.pythonhosted.org/packages/db/ed/db15d3956f65264ca204625597c410d420e26530c4e2943e05a0d2f24d51/cryptography-46.0.5-cp38-abi3-manylinux_2_31_armv7l.whl", hash = "sha256:420d0e909050490d04359e7fdb5ed7e667ca5c3c402b809ae2563d7e66a92229", size = 3978801, upload-time = "2026-02-10T19:18:07.167Z" }, - { url = "https://files.pythonhosted.org/packages/41/e2/df40a31d82df0a70a0daf69791f91dbb70e47644c58581d654879b382d11/cryptography-46.0.5-cp38-abi3-manylinux_2_34_aarch64.whl", hash = "sha256:582f5fcd2afa31622f317f80426a027f30dc792e9c80ffee87b993200ea115f1", size = 4276755, upload-time = "2026-02-10T19:18:09.813Z" }, - { url = "https://files.pythonhosted.org/packages/33/45/726809d1176959f4a896b86907b98ff4391a8aa29c0aaaf9450a8a10630e/cryptography-46.0.5-cp38-abi3-manylinux_2_34_ppc64le.whl", hash = "sha256:bfd56bb4b37ed4f330b82402f6f435845a5f5648edf1ad497da51a8452d5d62d", size = 4901539, upload-time = "2026-02-10T19:18:11.263Z" }, - { url = "https://files.pythonhosted.org/packages/99/0f/a3076874e9c88ecb2ecc31382f6e7c21b428ede6f55aafa1aa272613e3cd/cryptography-46.0.5-cp38-abi3-manylinux_2_34_x86_64.whl", hash = "sha256:a3d507bb6a513ca96ba84443226af944b0f7f47dcc9a399d110cd6146481d24c", size = 4452794, upload-time = "2026-02-10T19:18:12.914Z" }, - { url = "https://files.pythonhosted.org/packages/02/ef/ffeb542d3683d24194a38f66ca17c0a4b8bf10631feef44a7ef64e631b1a/cryptography-46.0.5-cp38-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:9f16fbdf4da055efb21c22d81b89f155f02ba420558db21288b3d0035bafd5f4", size = 4404160, upload-time = "2026-02-10T19:18:14.375Z" }, - { url = "https://files.pythonhosted.org/packages/96/93/682d2b43c1d5f1406ed048f377c0fc9fc8f7b0447a478d5c65ab3d3a66eb/cryptography-46.0.5-cp38-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:ced80795227d70549a411a4ab66e8ce307899fad2220ce5ab2f296e687eacde9", size = 4667123, upload-time = "2026-02-10T19:18:15.886Z" }, - { url = "https://files.pythonhosted.org/packages/45/2d/9c5f2926cb5300a8eefc3f4f0b3f3df39db7f7ce40c8365444c49363cbda/cryptography-46.0.5-cp38-abi3-win32.whl", hash = "sha256:02f547fce831f5096c9a567fd41bc12ca8f11df260959ecc7c3202555cc47a72", size = 3010220, upload-time = "2026-02-10T19:18:17.361Z" }, - { url = "https://files.pythonhosted.org/packages/48/ef/0c2f4a8e31018a986949d34a01115dd057bf536905dca38897bacd21fac3/cryptography-46.0.5-cp38-abi3-win_amd64.whl", hash = "sha256:556e106ee01aa13484ce9b0239bca667be5004efb0aabbed28d353df86445595", size = 3467050, upload-time = "2026-02-10T19:18:18.899Z" }, - { url = "https://files.pythonhosted.org/packages/eb/dd/2d9fdb07cebdf3d51179730afb7d5e576153c6744c3ff8fded23030c204e/cryptography-46.0.5-pp311-pypy311_pp73-macosx_11_0_arm64.whl", hash = "sha256:3b4995dc971c9fb83c25aa44cf45f02ba86f71ee600d81091c2f0cbae116b06c", size = 3476964, upload-time = "2026-02-10T19:18:20.687Z" }, - { url = "https://files.pythonhosted.org/packages/e9/6f/6cc6cc9955caa6eaf83660b0da2b077c7fe8ff9950a3c5e45d605038d439/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_aarch64.whl", hash = "sha256:bc84e875994c3b445871ea7181d424588171efec3e185dced958dad9e001950a", size = 4218321, upload-time = "2026-02-10T19:18:22.349Z" }, - { url = "https://files.pythonhosted.org/packages/3e/5d/c4da701939eeee699566a6c1367427ab91a8b7088cc2328c09dbee940415/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_28_x86_64.whl", hash = "sha256:2ae6971afd6246710480e3f15824ed3029a60fc16991db250034efd0b9fb4356", size = 4381786, upload-time = "2026-02-10T19:18:24.529Z" }, - { url = "https://files.pythonhosted.org/packages/ac/97/a538654732974a94ff96c1db621fa464f455c02d4bb7d2652f4edc21d600/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_aarch64.whl", hash = "sha256:d861ee9e76ace6cf36a6a89b959ec08e7bc2493ee39d07ffe5acb23ef46d27da", size = 4217990, upload-time = "2026-02-10T19:18:25.957Z" }, - { url = "https://files.pythonhosted.org/packages/ae/11/7e500d2dd3ba891197b9efd2da5454b74336d64a7cc419aa7327ab74e5f6/cryptography-46.0.5-pp311-pypy311_pp73-manylinux_2_34_x86_64.whl", hash = "sha256:2b7a67c9cd56372f3249b39699f2ad479f6991e62ea15800973b956f4b73e257", size = 4381252, upload-time = "2026-02-10T19:18:27.496Z" }, - { url = "https://files.pythonhosted.org/packages/bc/58/6b3d24e6b9bc474a2dcdee65dfd1f008867015408a271562e4b690561a4d/cryptography-46.0.5-pp311-pypy311_pp73-win_amd64.whl", hash = "sha256:8456928655f856c6e1533ff59d5be76578a7157224dbd9ce6872f25055ab9ab7", size = 3407605, upload-time = "2026-02-10T19:18:29.233Z" }, -] - -[[package]] -name = "deepmerge" -version = "2.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/a8/3a/b0ba594708f1ad0bc735884b3ad854d3ca3bdc1d741e56e40bbda6263499/deepmerge-2.0.tar.gz", hash = "sha256:5c3d86081fbebd04dd5de03626a0607b809a98fb6ccba5770b62466fe940ff20", size = 19890, upload-time = "2024-08-30T05:31:50.308Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2d/82/e5d2c1c67d19841e9edc74954c827444ae826978499bde3dfc1d007c8c11/deepmerge-2.0-py3-none-any.whl", hash = "sha256:6de9ce507115cff0bed95ff0ce9ecc31088ef50cbdf09bc90a09349a318b3d00", size = 13475, upload-time = "2024-08-30T05:31:48.659Z" }, -] - -[[package]] -name = "fastjsonschema" -version = "2.21.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/20/b5/23b216d9d985a956623b6bd12d4086b60f0059b27799f23016af04a74ea1/fastjsonschema-2.21.2.tar.gz", hash = "sha256:b1eb43748041c880796cd077f1a07c3d94e93ae84bba5ed36800a33554ae05de", size = 374130, upload-time = "2025-08-14T18:49:36.666Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/cb/a8/20d0723294217e47de6d9e2e40fd4a9d2f7c4b6ef974babd482a59743694/fastjsonschema-2.21.2-py3-none-any.whl", hash = "sha256:1c797122d0a86c5cace2e54bf4e819c36223b552017172f32c5c024a6b77e463", size = 24024, upload-time = "2025-08-14T18:49:34.776Z" }, -] - -[[package]] -name = "filelock" -version = "3.25.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b3/8b/4c32ecde6bea6486a2a5d05340e695174351ff6b06cf651a74c005f9df00/filelock-3.25.1.tar.gz", hash = "sha256:b9a2e977f794ef94d77cdf7d27129ac648a61f585bff3ca24630c1629f701aa9", size = 40319, upload-time = "2026-03-09T19:38:47.309Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a9/b8/2f664b56a3b4b32d28d3d106c71783073f712ba43ff6d34b9ea0ce36dc7b/filelock-3.25.1-py3-none-any.whl", hash = "sha256:18972df45473c4aa2c7921b609ee9ca4925910cc3a0fb226c96b92fc224ef7bf", size = 26720, upload-time = "2026-03-09T19:38:45.718Z" }, -] - -[[package]] -name = "hexdump" -version = "3.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/55/b3/279b1d57fa3681725d0db8820405cdcb4e62a9239c205e4ceac4391c78e4/hexdump-3.3.zip", hash = "sha256:d781a43b0c16ace3f9366aade73e8ad3a7bd5137d58f0b45ab2d3f54876f20db", size = 12658, upload-time = "2016-01-22T14:40:19.589Z" } - -[[package]] -name = "hidapi" -version = "0.14.0.post4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "setuptools" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/47/72/21ccaaca6ffb06f544afd16191425025d831c2a6d318635e9c8854070f2d/hidapi-0.14.0.post4.tar.gz", hash = "sha256:48fce253e526d17b663fbf9989c71c7ef7653ced5f4be65f1437c313fb3dbdf6", size = 174388, upload-time = "2024-11-19T16:38:10.316Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/d8/30/fb21c7ec91045c9bc4b4e8c6aeb99d59c040380618e50f0142ffde459490/hidapi-0.14.0.post4-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:01747e681d138ec614321ef6f069e5be3743fa210112e529a34d3e99635e4ac0", size = 70384, upload-time = "2024-11-19T16:35:51.274Z" }, - { url = "https://files.pythonhosted.org/packages/ac/c4/8bd7e052d5bcca3c535e341e4154237ec452ef943bb4373b01ec9b29ec71/hidapi-0.14.0.post4-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:8e20d0a1298a4bd342d7d927d928f1a5a29e5fc9dbf9a79e95dc6e2d386d5070", size = 68114, upload-time = "2024-11-19T16:35:53.435Z" }, - { url = "https://files.pythonhosted.org/packages/70/ad/c882d4c37173590010577322802b9cbbe968080e36e6e619b1b895270d10/hidapi-0.14.0.post4-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:f0cc21e82e95cb92ef951df8eb8acf5626ac8fa14ab5292abdab1b2349970445", size = 1026316, upload-time = "2024-11-19T16:35:55.596Z" }, - { url = "https://files.pythonhosted.org/packages/2d/8e/b39cdece9b5bc75599646cd997fdc5cbe0ed7582729b62f41e543157f907/hidapi-0.14.0.post4-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:cb1a2b5da0dcfab6837281342d1785cc373484bd3f27bd06fd2211d88075a7bd", size = 1026477, upload-time = "2024-11-19T16:35:58.158Z" }, - { url = "https://files.pythonhosted.org/packages/87/b9/aa613d155250fbfe1d5500f724014b910747424e7bd3fa039858addc7e0d/hidapi-0.14.0.post4-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:e11d475429a1bc943ceac4ad8da4be63b240e00da5e10863fc3cbd9a35fdb51c", size = 1018595, upload-time = "2024-11-19T16:36:00.467Z" }, - { url = "https://files.pythonhosted.org/packages/db/d4/3a07df2acbbadd133d5c4064d296c2ac1703b72cbaa28c78685fd93ea18a/hidapi-0.14.0.post4-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:2d1c102f754b2085b270e7c29cb8a148ffb05e10325c373d05ac16e2cbce131c", size = 634502, upload-time = "2024-11-19T16:36:02.259Z" }, - { url = "https://files.pythonhosted.org/packages/8a/23/c8b55b71ca3306fa83735ef04129e6a68648c736f29280ef0ab6b8b34f0a/hidapi-0.14.0.post4-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:7d099c259aadcab2bc3f4fb5a1db579ec886c2cade7533016f62778235150746", size = 623671, upload-time = "2024-11-19T16:36:04.774Z" }, - { url = "https://files.pythonhosted.org/packages/8f/47/e88e409dec1f9539dfdad7a9bc95c3dfe781176b3eeaba56006cd90d19bf/hidapi-0.14.0.post4-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:80fa94668d21b12daf62b034f647d71236470a8ba9a7580e220c47e9c119d932", size = 647046, upload-time = "2024-11-19T16:36:06.91Z" }, - { url = "https://files.pythonhosted.org/packages/ce/3f/6b935841fc49e43df51422bda68be506407330c498a05eab8ea23908c932/hidapi-0.14.0.post4-cp310-cp310-win32.whl", hash = "sha256:21ebd1420db116733536fae227f1cb30ad74bded5090269cdda4facfa73a8867", size = 63056, upload-time = "2024-11-19T16:36:08.869Z" }, - { url = "https://files.pythonhosted.org/packages/2e/2b/ca6f1590f5eb6520124518141f9d759eb0744d5a3e622b4bb9c9044640e8/hidapi-0.14.0.post4-cp310-cp310-win_amd64.whl", hash = "sha256:a90cfdd29c10425cd4e4cff34adb12d25048561fc946f3562679e45721060a1c", size = 70327, upload-time = "2024-11-19T16:36:10.005Z" }, - { url = "https://files.pythonhosted.org/packages/59/b2/6666dfae3c48986a3cf77d049ff8bc6e6620ac0402443ef235b82684eeea/hidapi-0.14.0.post4-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:74ae8ce339655b2568d74e49c8ef644d34a445dd0a9b4b89d1bf09447b83f5af", size = 71068, upload-time = "2024-11-19T16:36:11.123Z" }, - { url = "https://files.pythonhosted.org/packages/35/ad/5c3dfcb986de80f3ea61908bb2c7ff498900ee79df59a894d834e49b55c9/hidapi-0.14.0.post4-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:e749b79d9cafc1e9fd9d397d8039377c928ca10a36847fda6407169513802f68", size = 68750, upload-time = "2024-11-19T16:36:12.902Z" }, - { url = "https://files.pythonhosted.org/packages/a1/ab/94ff5dc6c66227bbf316cf8b056145922d1ca931a37092519e8247214df7/hidapi-0.14.0.post4-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:4169893fe5e368777fce7575a8bdedc1861f13d8fb9fda6b05e8155dde6eb7f1", size = 1072450, upload-time = "2024-11-19T16:36:15.306Z" }, - { url = "https://files.pythonhosted.org/packages/11/77/1e8c35728a17baae2c61646d7060062249f1f01ecd2c28631d07aa8547af/hidapi-0.14.0.post4-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:0d51f8102a2441ce22e080576f8f370d25cb3962161818a89f236b0401840f18", size = 1067973, upload-time = "2024-11-19T16:36:16.932Z" }, - { url = "https://files.pythonhosted.org/packages/99/82/540a15251d27287742a4c9f897bed01ccc82ab2ea6e4321ed3468741dd33/hidapi-0.14.0.post4-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:ff021ed0962f2d5d67405ae53c85f6cb3ab8c5af3dff7db8c74672f79f7a39d1", size = 1064054, upload-time = "2024-11-19T16:36:19.53Z" }, - { url = "https://files.pythonhosted.org/packages/72/93/bb8ed59a06faa0262068486f3f01b49c68e0ae055940f5c9c65bb97064c7/hidapi-0.14.0.post4-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:d8ab5ba9fce95e342335ef48640221a46600c1afb66847432fad9823d40a2022", size = 682621, upload-time = "2024-11-19T16:36:21.214Z" }, - { url = "https://files.pythonhosted.org/packages/53/42/e262091785d25b30fcfeb0c87b8e0b96ba935336181bab86e7ee25181dd1/hidapi-0.14.0.post4-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:56d7538a4e156041bb80f07f47c327f8944e39da469b010041ce44e324d0657c", size = 669789, upload-time = "2024-11-19T16:36:22.725Z" }, - { url = "https://files.pythonhosted.org/packages/6d/eb/b0516fadd686ad5b3d99df0db4e16d4d93ae5f74506ac0b2cf4452733e49/hidapi-0.14.0.post4-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:a28de4a03fc276614518d8d0997d8152d0edaf8ca9166522316ef1c455e8bc29", size = 696581, upload-time = "2024-11-19T16:36:25.283Z" }, - { url = "https://files.pythonhosted.org/packages/d3/b5/35f053d1268c61e1ce6999059d416118d11fd60ba496a3e29c9adcf2ecd7/hidapi-0.14.0.post4-cp311-cp311-win32.whl", hash = "sha256:348e68e3a2145a6ec6bebce13ffdf3e5883d8c720752c365027f16e16764def6", size = 62950, upload-time = "2024-11-19T16:36:26.496Z" }, - { url = "https://files.pythonhosted.org/packages/0f/e9/d91652ad32f4266c832f8b09879ac1cad9ad5b1660ef35d9ea7171a9e39b/hidapi-0.14.0.post4-cp311-cp311-win_amd64.whl", hash = "sha256:5a5af70dad759b45536a9946d8232ef7d90859845d3554c93bea3e790250df75", size = 70396, upload-time = "2024-11-19T16:36:27.63Z" }, - { url = "https://files.pythonhosted.org/packages/1a/9a/9b7d5d5e2c003aed2fecdc348caff8d3b6a8ead0220da489ccb822d7e5ef/hidapi-0.14.0.post4-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:129d684c2760fafee9014ce63a58d8e2699cdf00cd1a11bb3d706d4715f5ff96", size = 71668, upload-time = "2024-11-19T16:36:28.666Z" }, - { url = "https://files.pythonhosted.org/packages/ad/e5/a919eb542a692cc27dc58b1997dd860cace0e4c64e38c8bf9236ff8b95b7/hidapi-0.14.0.post4-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:4f04de00e40db2efc0bcdd047c160274ba7ccd861100fd87c295dd63cb932f2f", size = 69146, upload-time = "2024-11-19T16:36:30.484Z" }, - { url = "https://files.pythonhosted.org/packages/37/7c/63316c8cba89cc039a952bb8805c3fb585e79f7fc8a5d27acaa6beb2fe81/hidapi-0.14.0.post4-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:10a01af155c51a8089fe44e627af2fbd323cfbef7bd55a86837d971aef6088b0", size = 1083772, upload-time = "2024-11-19T16:36:32.798Z" }, - { url = "https://files.pythonhosted.org/packages/8a/a8/bb222e3f096467d8e37c717000b9b0c6acee043c1145eaaeba4abfc8cffd/hidapi-0.14.0.post4-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:6eaff1d120c47e1a121eada8dc85eac007d1ed81f3db7fc0da5b6ed17d8edefb", size = 1081215, upload-time = "2024-11-19T16:36:35.512Z" }, - { url = "https://files.pythonhosted.org/packages/ba/c8/52134f7d3e09fd4feb7756ccd872c55bfd1899ee81ceed4f8ad5ae39f457/hidapi-0.14.0.post4-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:fedb9c3be6a2376de436d13fcb37a686a9b6bc988585bcc4f5ec61cad925e794", size = 1077222, upload-time = "2024-11-19T16:36:38.062Z" }, - { url = "https://files.pythonhosted.org/packages/a8/da/88ebbd465dbaff04e9ef3bbdb4a6ca9d24a3458e4726878dbe26bb69236e/hidapi-0.14.0.post4-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:6270677da02e86b56b81afd5f6f313736b8315b493f3c8a431da285e3a3c5de9", size = 694510, upload-time = "2024-11-19T16:36:39.572Z" }, - { url = "https://files.pythonhosted.org/packages/da/f0/ea437ed339c5f0b446983011000d8cad8c4f8a51ee39e837d16e101b66da/hidapi-0.14.0.post4-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:da700db947562f8c0ac530215b74b5a27e4c669916ec99cfb5accd14ba08562c", size = 682635, upload-time = "2024-11-19T16:36:41.35Z" }, - { url = "https://files.pythonhosted.org/packages/01/e9/14e63f1a5ec0c2430b84695d28e994b2b63398544adb20d910f6dc41ac66/hidapi-0.14.0.post4-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:707b1ebf5cb051b020e94b039e603351bf2e6620b48fc970228e0dd5d3a91fca", size = 701667, upload-time = "2024-11-19T16:36:43.135Z" }, - { url = "https://files.pythonhosted.org/packages/df/3d/8a37ed1b250ae45eb7fa5cd3227c865d38a1ddf9ccab626f4f6adfbd424a/hidapi-0.14.0.post4-cp312-cp312-win32.whl", hash = "sha256:1487312ad50cf2c08a5ea786167b3229afd6478c4b26974157c3845a84e91231", size = 63123, upload-time = "2024-11-19T16:36:44.329Z" }, - { url = "https://files.pythonhosted.org/packages/f4/fd/e642211e579875e35015aed12d3b2c2a25f6a731ff846a2c2aaaf4bf8898/hidapi-0.14.0.post4-cp312-cp312-win_amd64.whl", hash = "sha256:8d924bd002a1c17ca51905b3b7b3d580e80ec211a9b8fe4667b73db0ff9e9b54", size = 70478, upload-time = "2024-11-19T16:36:45.388Z" }, - { url = "https://files.pythonhosted.org/packages/38/c7/8601f03a6eeeac35655245177b50bb00e707f3392e0a79c34637f8525207/hidapi-0.14.0.post4-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:6f96ae777e906f0a9d6f75e873313145dfec2b774f558bfcae8ba34f09792460", size = 70358, upload-time = "2024-11-19T16:36:46.405Z" }, - { url = "https://files.pythonhosted.org/packages/c1/5d/7376cf339fbe6fca26048e3c7e183ef4d99c046cc5d8378516a745914327/hidapi-0.14.0.post4-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:6439fc9686518d0336fac8c5e370093279f53c997540065fce131c97567118d8", size = 68034, upload-time = "2024-11-19T16:36:47.419Z" }, - { url = "https://files.pythonhosted.org/packages/8c/5a/4bca20898c699810f016d2719b980fc57fe36d5012d03eca7a89ace98547/hidapi-0.14.0.post4-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2acadb4f1ae569c4f73ddb461af8733e8f5efcb290c3d0ef1b0671ba793b0ae3", size = 1075570, upload-time = "2024-11-19T16:36:48.931Z" }, - { url = "https://files.pythonhosted.org/packages/6a/c6/66e6b7c27297249bc737115dff4a1e819d3e0e73885160a3104ebec7ac13/hidapi-0.14.0.post4-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:884fa003d899113e14908bd3b519c60b48fc3cec0410264dcbdad1c4a8fc2e8d", size = 1081482, upload-time = "2024-11-19T16:36:51.021Z" }, - { url = "https://files.pythonhosted.org/packages/86/a8/21e9860eddeefd0dc41b3f7e6e81cd9ff53c2b07130f57776b56a1dddc66/hidapi-0.14.0.post4-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:8a2d466b995f8ff387d68c052d3b74ee981a4ddc4f1a99f32f2dc7022273dc11", size = 1069549, upload-time = "2024-11-19T16:36:52.808Z" }, - { url = "https://files.pythonhosted.org/packages/e8/01/3adf46a7ea5bf31f12e09d4392e1810e662101ba6611214ea6e2c35bea7a/hidapi-0.14.0.post4-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:e1f6409854c0a8ed4d1fdbe88d5ee4baf6f19996d1561f76889a132cb083574d", size = 698200, upload-time = "2024-11-19T16:36:54.606Z" }, - { url = "https://files.pythonhosted.org/packages/f0/19/db15cd21bef1b0dc8ef4309c5734b64affb7e88540efd3c090f153cdae0b/hidapi-0.14.0.post4-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:bca568a2b7d0d454c7921d70b1cc44f427eb6f95961b6d7b3b9b4532d0de74ef", size = 671554, upload-time = "2024-11-19T16:36:56.2Z" }, - { url = "https://files.pythonhosted.org/packages/f5/23/f896ee8f0977710c354bd1b9ac6d5206c12842bd39d78a357c866f8ec6b6/hidapi-0.14.0.post4-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:9f14ac2737fd6f58d88d2e6bf8ebd03aac7b486c14d3f570b7b1d0013d61b726", size = 703897, upload-time = "2024-11-19T16:36:57.796Z" }, - { url = "https://files.pythonhosted.org/packages/9a/5e/3c93bb12b01392b538870bc710786fee86a9ced074a8b5c091a59786ee07/hidapi-0.14.0.post4-cp313-cp313-win32.whl", hash = "sha256:b6b9c4dbf7d7e2635ff129ce6ea82174865c073b75888b8b97dda5a3d9a70493", size = 62688, upload-time = "2024-11-19T16:36:59.124Z" }, - { url = "https://files.pythonhosted.org/packages/6a/a6/0d43ac0be00db25fb0c2c6125e15a3e3536196c9a7cd806d50ebfb37b375/hidapi-0.14.0.post4-cp313-cp313-win_amd64.whl", hash = "sha256:87218eeba366c871adcc273407aacbabab781d6a964919712d5583eded5ca50f", size = 69749, upload-time = "2024-11-19T16:37:00.561Z" }, -] - -[[package]] -name = "host" -version = "0.1.0" -source = { virtual = "." } -dependencies = [ - { name = "spsdk" }, -] - -[package.metadata] -requires-dist = [{ name = "spsdk", specifier = "==3.7.0" }] - -[[package]] -name = "humanfriendly" -version = "10.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyreadline3", marker = "sys_platform == 'win32'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/cc/3f/2c29224acb2e2df4d2046e4c73ee2662023c58ff5b113c4c1adac0886c43/humanfriendly-10.0.tar.gz", hash = "sha256:6b0b831ce8f15f7300721aa49829fc4e83921a9a301cc7f606be6686a2288ddc", size = 360702, upload-time = "2021-09-17T21:40:43.31Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f0/0f/310fb31e39e2d734ccaa2c0fb981ee41f7bd5056ce9bc29b2248bd569169/humanfriendly-10.0-py2.py3-none-any.whl", hash = "sha256:1697e1a8a8f550fd43c2865cd84542fc175a61dcb779b6fee18cf6b6ccba1477", size = 86794, upload-time = "2021-09-17T21:40:39.897Z" }, -] - -[[package]] -name = "idna" -version = "3.11" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/6f/6d/0703ccc57f3a7233505399edb88de3cbd678da106337b9fcde432b65ed60/idna-3.11.tar.gz", hash = "sha256:795dafcc9c04ed0c1fb032c2aa73654d8e8c5023a7df64a53f39190ada629902", size = 194582, upload-time = "2025-10-12T14:55:20.501Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0e/61/66938bbb5fc52dbdf84594873d5b51fb1f7c7794e9c0f5bd885f30bc507b/idna-3.11-py3-none-any.whl", hash = "sha256:771a87f49d9defaf64091e6e6fe9c18d4833f140bd19464795bc32d966ca37ea", size = 71008, upload-time = "2025-10-12T14:55:18.883Z" }, -] - -[[package]] -name = "importlib-metadata" -version = "8.7.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "zipp" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/f3/49/3b30cad09e7771a4982d9975a8cbf64f00d4a1ececb53297f1d9a7be1b10/importlib_metadata-8.7.1.tar.gz", hash = "sha256:49fef1ae6440c182052f407c8d34a68f72efc36db9ca90dc0113398f2fdde8bb", size = 57107, upload-time = "2025-12-21T10:00:19.278Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/fa/5e/f8e9a1d23b9c20a551a8a02ea3637b4642e22c2626e3a13a9a29cdea99eb/importlib_metadata-8.7.1-py3-none-any.whl", hash = "sha256:5a1f80bf1daa489495071efbb095d75a634cf28a8bc299581244063b53176151", size = 27865, upload-time = "2025-12-21T10:00:18.329Z" }, -] - -[[package]] -name = "importlib-resources" -version = "6.5.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/cf/8c/f834fbf984f691b4f7ff60f50b514cc3de5cc08abfc3295564dd89c5e2e7/importlib_resources-6.5.2.tar.gz", hash = "sha256:185f87adef5bcc288449d98fb4fba07cea78bc036455dd44c5fc4a2fe78fed2c", size = 44693, upload-time = "2025-01-03T18:51:56.698Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/a4/ed/1f1afb2e9e7f38a545d628f864d562a5ae64fe6f7a10e28ffb9b185b4e89/importlib_resources-6.5.2-py3-none-any.whl", hash = "sha256:789cfdc3ed28c78b67a06acb8126751ced69a3d5f79c095a98298cd8a760ccec", size = 37461, upload-time = "2025-01-03T18:51:54.306Z" }, -] - -[[package]] -name = "intelhex" -version = "2.3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/66/37/1e7522494557d342a24cb236e2aec5d078fac8ed03ad4b61372586406b01/intelhex-2.3.0.tar.gz", hash = "sha256:892b7361a719f4945237da8ccf754e9513db32f5628852785aea108dcd250093", size = 44513, upload-time = "2020-10-20T20:35:51.526Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/97/78/79461288da2b13ed0a13deb65c4ad1428acb674b95278fa9abf1cefe62a2/intelhex-2.3.0-py2.py3-none-any.whl", hash = "sha256:87cc5225657524ec6361354be928adfd56bcf2a3dcc646c40f8f094c39c07db4", size = 50914, upload-time = "2020-10-20T20:35:50.162Z" }, -] - -[[package]] -name = "intervaltree" -version = "3.2.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "sortedcontainers" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/53/c3/b2afa612aa0373f3e6bb190e6de35f293b307d1537f109e3e25dbfcdf212/intervaltree-3.2.1.tar.gz", hash = "sha256:f3f7e8baeb7dd75b9f7a6d33cf3ec10025984a8e66e3016d537e52130c73cfe2", size = 1231531, upload-time = "2025-12-24T04:25:06.773Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/83/7f/8a80a1c7c2ed05822b5a2b312d2995f30c533641f8198366ba2e26a7bb03/intervaltree-3.2.1-py2.py3-none-any.whl", hash = "sha256:a8a8381bbd35d48ceebee932c77ffc988492d22fb1d27d0ba1d74a7694eb8f0b", size = 25929, upload-time = "2025-12-24T04:25:05.298Z" }, -] - -[[package]] -name = "lark" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/da/34/28fff3ab31ccff1fd4f6c7c7b0ceb2b6968d8ea4950663eadcb5720591a0/lark-1.3.1.tar.gz", hash = "sha256:b426a7a6d6d53189d318f2b6236ab5d6429eaf09259f1ca33eb716eed10d2905", size = 382732, upload-time = "2025-10-27T18:25:56.653Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/82/3d/14ce75ef66813643812f3093ab17e46d3a206942ce7376d31ec2d36229e7/lark-1.3.1-py3-none-any.whl", hash = "sha256:c629b661023a014c37da873b4ff58a817398d12635d3bbb2c5a03be7fe5d1e12", size = 113151, upload-time = "2025-10-27T18:25:54.882Z" }, -] - -[[package]] -name = "libusb-package" -version = "1.0.26.3" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "importlib-resources" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/aa/27/c989cd606683102170c2dc2e89771a22dc71b9d88c4d20c3a97f6d23a0a1/libusb_package-1.0.26.3-cp310-cp310-macosx_10_9_x86_64.whl", hash = "sha256:2ffa01d1db3ef9e7faa62b03f409cd077232885ae3fab6f95912db78035a41db", size = 63863, upload-time = "2025-04-01T12:59:12.09Z" }, - { url = "https://files.pythonhosted.org/packages/c2/e4/663a37d23b3a47a641f74556bb42c04b26c46b95fb8a65c11421cb0ccb0d/libusb_package-1.0.26.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:95bbf9872674318a23450cd92053eee01683eeae6b6aa76eba30ee5f37c3765b", size = 59502, upload-time = "2025-04-01T12:59:13.489Z" }, - { url = "https://files.pythonhosted.org/packages/a7/93/c99ea3b13539c501c41e605645693346e08cfcb7747025ee640502f7460d/libusb_package-1.0.26.3-cp310-cp310-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:36a1c48779c8763fc6bc0331fda668c93b58d55934236d0393d3ec026875f7cd", size = 70247, upload-time = "2025-04-01T14:53:00.28Z" }, - { url = "https://files.pythonhosted.org/packages/2f/c4/84c7af13453e840ba2e3e9f247c9855035077a7214c1f0f273e1df5a845f/libusb_package-1.0.26.3-cp310-cp310-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:209efb9a78ac652afc2332b0a63ef2e423202fa3a1bebe5fe3c499e0922afc03", size = 74537, upload-time = "2025-04-01T14:53:01.995Z" }, - { url = "https://files.pythonhosted.org/packages/79/f8/933f70e9a1e05e0d25fb7fb6a5a4512ba7845203b11afc163cfdc98e9b88/libusb_package-1.0.26.3-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:433e89dd1f9f9a4149b975247cf1d493170454945fec54b4db9fe61c9e6b861f", size = 70652, upload-time = "2025-04-01T14:53:03.346Z" }, - { url = "https://files.pythonhosted.org/packages/ae/96/77f873c2a3a84b93439a973c70ecc53d2b9ae14cb45b4ba710b89d822228/libusb_package-1.0.26.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:7e6fcad72db04b30c8495ac0df6a9b1a4ec8705930bfa2160cc9b018f14101a1", size = 71861, upload-time = "2025-04-01T14:53:04.507Z" }, - { url = "https://files.pythonhosted.org/packages/ba/6e/64f83de4274e4a10ad28a03ff7879d3765c5d7efe0e5c833938318a7de20/libusb_package-1.0.26.3-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:65ee502c4999ded1c71e38769b0a89152c1e03e43b0d35919f3e32a8cbc7cd99", size = 76476, upload-time = "2025-04-01T14:53:05.511Z" }, - { url = "https://files.pythonhosted.org/packages/ad/56/3792e6a41776d85a4113e75c256879355261b5dd1ed22eb55fd8bc924125/libusb_package-1.0.26.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:1f6d012df4942c91e6833dd251bd90c1242496a30c81020e43b98df85c66fa30", size = 71037, upload-time = "2025-04-01T14:53:06.642Z" }, - { url = "https://files.pythonhosted.org/packages/ce/f2/99091fdc38e916cc9e254912d1131496ac56ab82506548f6e1fc2eea8429/libusb_package-1.0.26.3-cp310-cp310-win32.whl", hash = "sha256:55c3988f622745a4874ac4face117da19969b82d51250e5334cd176f516bcb57", size = 77642, upload-time = "2025-04-01T12:58:00.114Z" }, - { url = "https://files.pythonhosted.org/packages/c1/9a/7bc9f60e563e535bf80b125d0d7541ad07ecb0160965d48cb8b6dccc2cf6/libusb_package-1.0.26.3-cp310-cp310-win_amd64.whl", hash = "sha256:ba5e87e70833e5fff977d7bf12b7107df427ee21a8021d59520e1fdf14a32368", size = 90594, upload-time = "2025-04-01T12:58:01.799Z" }, - { url = "https://files.pythonhosted.org/packages/c6/bf/3fe9d322e2dcd0437ae2bd6a039117965702ed473ca59d2d6a1c39838009/libusb_package-1.0.26.3-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:60e15d7d3e4aab31794da95641bc28c4ffec9e24f50891ce33f75794b8f531f3", size = 63864, upload-time = "2025-04-01T12:59:14.567Z" }, - { url = "https://files.pythonhosted.org/packages/bc/70/df0348c11e6aaead4a66cc59840e102ddf64baf8e4b2c1ad5cff1ca83554/libusb_package-1.0.26.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:4d93a6137609cf72dc5db69bc337ddf96520231e395beeff69fa77a923090003", size = 59502, upload-time = "2025-04-01T12:59:15.863Z" }, - { url = "https://files.pythonhosted.org/packages/27/67/6c84eebc9fcdf7f26704b5d32b51b3ee5bf4e9090d61286941257bdc8702/libusb_package-1.0.26.3-cp311-cp311-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:fafb69c5fd42b241fbd20493d014328c507d34e1b7ceb883a20ef14565b26898", size = 70247, upload-time = "2025-04-01T14:53:07.606Z" }, - { url = "https://files.pythonhosted.org/packages/d0/b4/cbcc42ca4b3d8778bf081b96e6e6288a437d82a4cc4e9b982bef40a88856/libusb_package-1.0.26.3-cp311-cp311-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:4b0c206cd8a30565a0cede3ba426929e70a37e7b769e41a5ac7f00ca6737dc5d", size = 74537, upload-time = "2025-04-01T14:53:08.61Z" }, - { url = "https://files.pythonhosted.org/packages/c9/0f/fd203fb1fa5eda1d446f345d84205f23533767e6ef837a7c77a2599d5783/libusb_package-1.0.26.3-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:80a2041331c087d5887969405837f86c8422120fe9ba3e6faa44bf4810f07b71", size = 70653, upload-time = "2025-04-01T14:53:09.576Z" }, - { url = "https://files.pythonhosted.org/packages/79/ef/dcc682cb4b29c4d4cdb23df65825c6276753184f6a7b4338c54a59a54c20/libusb_package-1.0.26.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:48b536a1279ee0dbf70b898cffd16cd661774d2c8bbec8ff7178a5bc20196af3", size = 71859, upload-time = "2025-04-01T14:53:10.987Z" }, - { url = "https://files.pythonhosted.org/packages/62/4d/323d5ac4ba339362e4b148c291fbc6e7ee04c6395d5fec967b32432db5c5/libusb_package-1.0.26.3-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:3f273e33ff1810242f81ea3a0286e25887d99d99019ba83e08be0d1ca456cc05", size = 76476, upload-time = "2025-04-01T14:53:12.019Z" }, - { url = "https://files.pythonhosted.org/packages/a3/3b/506db7f6cbe5dc2f38c14b272b8faf4d43e5559ac99d4dce1a41026ec925/libusb_package-1.0.26.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:67476093601e1ea58a6130426795b906acd8d18d51c84e29a3a69548a5dfcf5d", size = 71037, upload-time = "2025-04-01T14:53:13.42Z" }, - { url = "https://files.pythonhosted.org/packages/3e/40/2538763c06e07bbbe0a5c8830779ef1ed1cea845264a91973bf31b9ecce5/libusb_package-1.0.26.3-cp311-cp311-win32.whl", hash = "sha256:8f3eed2852ee4f08847a221749a98d0f4f3962f8bed967e2253327db1171ba60", size = 77642, upload-time = "2025-04-01T12:58:03.106Z" }, - { url = "https://files.pythonhosted.org/packages/a4/46/0cd5ea91c5bbe6293c0936c96915051e31750f72e9556718af666af3fe45/libusb_package-1.0.26.3-cp311-cp311-win_amd64.whl", hash = "sha256:b48b5f5b17c7ac5e315e233f9ee801f730aac6183eb53a3226b01245d7bcfe00", size = 90592, upload-time = "2025-04-01T12:58:04.103Z" }, - { url = "https://files.pythonhosted.org/packages/2e/f6/83e13936b5799360eae8f0e31b5b298dd092451b91136d7cd13852777954/libusb_package-1.0.26.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:c9404298485762a4e73b416e8a3208d33aa3274fb9b870c2a1cacba7e2918f19", size = 62045, upload-time = "2025-04-01T12:59:16.817Z" }, - { url = "https://files.pythonhosted.org/packages/33/97/86ed73880b6734c9383be5f34061b541e8fe5bd0303580b1f5abe2962d58/libusb_package-1.0.26.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:8126f6711318dad4cb2805ea20cd47b895a847207087d8fdb032e082dd7a2e24", size = 59502, upload-time = "2025-04-01T12:59:17.72Z" }, - { url = "https://files.pythonhosted.org/packages/95/f7/27b67b8fe63450abf0b0b66aacf75d5d64cdf30317e214409ceb534f34b4/libusb_package-1.0.26.3-cp312-cp312-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:11c219366e4a2368117b9a9807261f3506b5623531f8b8ce41af5bbaec8156a0", size = 70247, upload-time = "2025-04-01T14:53:14.387Z" }, - { url = "https://files.pythonhosted.org/packages/8c/11/613543f9c6dab5a82eefd0c78d52d08b5d9eb93a0362151fbedf74b32541/libusb_package-1.0.26.3-cp312-cp312-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:8809a50d8ab84297344c54e862027090c0d73b14abef843a8b5f783313f49457", size = 74537, upload-time = "2025-04-01T14:53:15.345Z" }, - { url = "https://files.pythonhosted.org/packages/f0/43/5a2331615693b56221a902869fb2094d9a0b9a764a8706c8ba16e915f77c/libusb_package-1.0.26.3-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a83067c3dfdbb3856badb4532eaea22e8502b52ce4245f5ab46acf93d7fbd471", size = 70652, upload-time = "2025-04-01T14:53:16.319Z" }, - { url = "https://files.pythonhosted.org/packages/44/1a/186d4ec86421b69feb45e214edb5301fbcb9e8dc9df963678aeff1a447d5/libusb_package-1.0.26.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:b56be087ea9cde8e50fb02740a4f0cefb6f63c61ac2e7812a9244487614a3973", size = 71860, upload-time = "2025-04-01T14:53:17.87Z" }, - { url = "https://files.pythonhosted.org/packages/4b/3c/8cebdad822d7bfcb683a77d5fd113fbc6f72516cfb7c1c3a274fefafa8e9/libusb_package-1.0.26.3-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:ea0f6bf40e54b1671e763e40c9dbed46bf7f596a4cd98b7c827e147f176d8c97", size = 76476, upload-time = "2025-04-01T14:53:19.202Z" }, - { url = "https://files.pythonhosted.org/packages/49/5f/30c625b6c4ecd14871644c1d16e97d7c971f82a0f87a9cfa81022f85bcfc/libusb_package-1.0.26.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:b40f77df991c6db8621de9575504886eca03a00277e521a4d64b66cbef8f6997", size = 71037, upload-time = "2025-04-01T14:53:21.359Z" }, - { url = "https://files.pythonhosted.org/packages/7f/e9/3aa3ff3242867b7f22ee3ce28d0e93ff88547f170ca1b8a6edc59660d974/libusb_package-1.0.26.3-cp312-cp312-win32.whl", hash = "sha256:6eee99c9fde137443869c8604d0c01b2127a9545ebc59d06a3376cf1d891e786", size = 77642, upload-time = "2025-04-01T12:58:05.471Z" }, - { url = "https://files.pythonhosted.org/packages/15/0e/913ddb1849f828fc385438874c34541939d9b06c0e5616f48f24cddd24de/libusb_package-1.0.26.3-cp312-cp312-win_amd64.whl", hash = "sha256:5e09c0b6b3cd475841cffe78e46e91df58f0c6c02ea105ea1a4d0755a07c8006", size = 90593, upload-time = "2025-04-01T12:58:06.798Z" }, - { url = "https://files.pythonhosted.org/packages/b4/b8/23bc7f3f53b4a5b1027c721ec3eb42324ca1ec56355f0d0851307adc7c6c/libusb_package-1.0.26.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:04c4505e2ca68d3dc6938f116ff9bf82daffb06c1a97aba08293a84715a998da", size = 62045, upload-time = "2025-04-01T12:59:18.698Z" }, - { url = "https://files.pythonhosted.org/packages/a2/f8/e3be96d0604070488ddc5ce5af1976992e1f4a00e6441c94edf807f274d5/libusb_package-1.0.26.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:4961cdb3c622aa9f858d3e4f99a58ce5e822a97c22abc77040fd806cb5fa4c66", size = 59502, upload-time = "2025-04-01T12:59:19.632Z" }, - { url = "https://files.pythonhosted.org/packages/24/d5/df1508df5e6776ac8a09a2858991df29bc96ea6a0d1f90240b1c4d59b45d/libusb_package-1.0.26.3-cp313-cp313-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:16182670e0c23235521b447054c5a01600bd8f1eed3bb08eedbb0d9f8a43249f", size = 70247, upload-time = "2025-04-01T14:53:22.328Z" }, - { url = "https://files.pythonhosted.org/packages/65/01/4cc9eed12b9214c088cfa8055ece3b1db970404400be9d7e3dda68d198f2/libusb_package-1.0.26.3-cp313-cp313-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:75ea57b2cc903d28ec1d4b909902df442cbf21949d80d5b3d8b9dac36ac45d1a", size = 74537, upload-time = "2025-04-01T14:53:23.306Z" }, - { url = "https://files.pythonhosted.org/packages/99/83/9eb317f706f588f4b6679bddb8abee3b115ce53dc3fa560cca59910f8807/libusb_package-1.0.26.3-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:10d30b51b128ef5112fff73268b4696fea00b5676b3f39a5ee859bd76cb3ace5", size = 70651, upload-time = "2025-04-01T14:53:24.33Z" }, - { url = "https://files.pythonhosted.org/packages/22/49/85d3b307b4a20cf0150ab381e6e0385e5b78cb5dede8bade0a2d655d3fd3/libusb_package-1.0.26.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:5c098dcfcfa8000cab42f33e19628c8fdb16111670db381048b2993651f2413b", size = 71860, upload-time = "2025-04-01T14:53:25.752Z" }, - { url = "https://files.pythonhosted.org/packages/da/7a/2271a5ae542d9036d9254415ae745d5c5d01a08d56d13054b2439bf9d392/libusb_package-1.0.26.3-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:93169aeab0657255fe6c9f757cf408f559db13827a1d122fc89239994d7d51f1", size = 76477, upload-time = "2025-04-01T14:53:27.564Z" }, - { url = "https://files.pythonhosted.org/packages/5c/9d/d06d53994bb164564ec142ef631a4afa31e324994cf223f169ecca127f3a/libusb_package-1.0.26.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:63257653ee1ee06aa836e942f4bb89a1d7a0c6ae3d6183647a9011e585ffa1e3", size = 71036, upload-time = "2025-04-01T14:53:29.011Z" }, - { url = "https://files.pythonhosted.org/packages/32/3d/97f775a1d582548b1eb2a42444c58813e5fd93d568fc3b9ace59f64df527/libusb_package-1.0.26.3-cp313-cp313-win32.whl", hash = "sha256:05db4cc801db2e6373a808725748a701509f9450fecf393fbebab61c45d50b50", size = 77642, upload-time = "2025-04-01T12:58:07.774Z" }, - { url = "https://files.pythonhosted.org/packages/f1/c4/d5234607697ca60593fbef88428a154317ac31f5c58ee23337b8a9360e91/libusb_package-1.0.26.3-cp313-cp313-win_amd64.whl", hash = "sha256:1cd4aec825dac2b4fa5d23b37f6d72e63a1127987e5a073dabeb7b73528623a3", size = 90593, upload-time = "2025-04-01T12:58:08.676Z" }, - { url = "https://files.pythonhosted.org/packages/9f/20/f5293a167b4e910badc64272131a8bb8dbd80f10dfd843eb07846aafaef2/libusb_package-1.0.26.3-pp310-pypy310_pp73-macosx_10_15_x86_64.whl", hash = "sha256:6a62bf7fa20fe704ed0413e74d620b37bdfe6b084478d23cc85b1f10708f2596", size = 62194, upload-time = "2025-04-01T12:59:26.137Z" }, - { url = "https://files.pythonhosted.org/packages/28/e5/1ceae06e6c965847d89be36de58908354c35faf641cd4c6071c9f06a7e9b/libusb_package-1.0.26.3-pp310-pypy310_pp73-macosx_11_0_arm64.whl", hash = "sha256:ab40d6b295bcfbe37f280268ea0d0a1ef4b1d795025fe41b3dda48e07eb0fc8e", size = 59506, upload-time = "2025-04-01T12:59:27.081Z" }, - { url = "https://files.pythonhosted.org/packages/6e/74/8afb1a05fda665abebac3bb44a7738f23437cac11081e44a929b51afee6a/libusb_package-1.0.26.3-pp310-pypy310_pp73-manylinux_2_17_aarch64.manylinux2014_aarch64.whl", hash = "sha256:2a125d72cca545950ae357aa6d7f0f33dfb39f16b895691cf3f8c9b772bc7e31", size = 70255, upload-time = "2025-04-01T14:53:48.956Z" }, - { url = "https://files.pythonhosted.org/packages/35/46/5e6be05f302e887055a277bbb5cc1db6be9af01319b35f1a9663211b075c/libusb_package-1.0.26.3-pp310-pypy310_pp73-manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:229d9f26af5828512828154d6bae4214ef5016a9401dd022477e06d0df5153e7", size = 74543, upload-time = "2025-04-01T14:53:49.979Z" }, - { url = "https://files.pythonhosted.org/packages/16/e4/51a81cc69ba4eefdd9a291cc5e6596a8f7d8c7f2378273917bf64465412d/libusb_package-1.0.26.3-pp310-pypy310_pp73-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:3b8b862f190c244f29699d783f044e3d816fed84e39bca9a3c3731140f0b1b39", size = 70658, upload-time = "2025-04-01T14:53:51.132Z" }, - { url = "https://files.pythonhosted.org/packages/15/14/2c85379880d475f12ee74a27b02a2ffe435d863f8045fe80e5c246c30f23/libusb_package-1.0.26.3-pp310-pypy310_pp73-win_amd64.whl", hash = "sha256:fadaad1181784713948f9cbb7ad1cab8f2b307e784e2e162ed80ba5d2f745901", size = 90602, upload-time = "2025-04-01T12:58:16.828Z" }, -] - -[[package]] -name = "libusbsio" -version = "2.2.0" -source = { registry = "https://pypi.org/simple" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5c/31/13512819a684065d0ad3c49dcfc9e1c2ca579d6b4d2781c982908a860857/libusbsio-2.2.0-py3-none-any.whl", hash = "sha256:875ce35b8f5e076e016eb0c2d927e3a89d9d809058855a303225e03cd57b9197", size = 271535, upload-time = "2025-11-03T11:36:57.472Z" }, -] - -[[package]] -name = "libuuu" -version = "1.5.243" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/49/50/b478a834b465bfa69c399a2d972038b5aab5aa760cec2af8eb4f099d2f3b/libuuu-1.5.243.tar.gz", hash = "sha256:93b0c556baa41f33cb8d931d5b22dd7dac32392c3e2fb062e2845d789a3a971c", size = 26566520, upload-time = "2025-12-16T14:47:40.192Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/4a/91/141f4b2034785d4b88637cb8c46e6d5744e8c51e73bc9224b87a555f4df6/libuuu-1.5.243-py3-none-macosx_11_0_arm64.whl", hash = "sha256:7c33607289b71d4d408ff92529d8552bf1298a1f90d06033dd10cabc64442ceb", size = 3524530, upload-time = "2025-12-16T14:47:28.411Z" }, - { url = "https://files.pythonhosted.org/packages/41/c8/b17179ead66fe52a0922a3e28fce6f06bfc2fa9be2825acad3779e0fc094/libuuu-1.5.243-py3-none-macosx_11_0_x86_64.whl", hash = "sha256:e9add5e5cd1557233f84739d4f2258ab3114601e44d7a17bc7f81cb97bd416e5", size = 3082328, upload-time = "2025-12-16T14:47:30.092Z" }, - { url = "https://files.pythonhosted.org/packages/e6/e6/dd7bb8f9eb14b0638038d1cc1e6dba3c10ed884da08b2dad66fadfe1be93/libuuu-1.5.243-py3-none-manylinux_2_28_aarch64.whl", hash = "sha256:f2211483e084003c34fe7094d55519e6096a02aadc119031a80043ee7577621a", size = 9381974, upload-time = "2025-12-16T14:47:31.971Z" }, - { url = "https://files.pythonhosted.org/packages/d2/5d/3e377a8db492479866a20f4404be42a146401698245165f407c3c259daf4/libuuu-1.5.243-py3-none-manylinux_2_28_x86_64.whl", hash = "sha256:9e23ad9107f66fb36e7bce9d4657b7f674853c121f7e5b8cf7b433fd3d1c3119", size = 9312102, upload-time = "2025-12-16T14:47:34.464Z" }, - { url = "https://files.pythonhosted.org/packages/c0/f2/872f6b65471946721e070fbb827df62e621da78eb23b8fb7b384c806eaa9/libuuu-1.5.243-py3-none-win32.whl", hash = "sha256:9a4ffccafac9a9e7ae75dc8e5b866099d74c742bd694f6d1964a73d1582c8ba9", size = 3333209, upload-time = "2025-12-16T14:47:36.395Z" }, - { url = "https://files.pythonhosted.org/packages/16/e9/e9400637a9785702f58ee82aff7fde57e6db477ae46a1eaf62ec6d0d96c7/libuuu-1.5.243-py3-none-win_amd64.whl", hash = "sha256:e62c358a5f28a6c521ff6f7d1a98a6c1e9335b83402d5793196cd522a7991dd1", size = 3333213, upload-time = "2025-12-16T14:47:38.092Z" }, -] - -[[package]] -name = "natsort" -version = "8.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e2/a9/a0c57aee75f77794adaf35322f8b6404cbd0f89ad45c87197a937764b7d0/natsort-8.4.0.tar.gz", hash = "sha256:45312c4a0e5507593da193dedd04abb1469253b601ecaf63445ad80f0a1ea581", size = 76575, upload-time = "2023-06-20T04:17:19.925Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ef/82/7a9d0550484a62c6da82858ee9419f3dd1ccc9aa1c26a1e43da3ecd20b0d/natsort-8.4.0-py3-none-any.whl", hash = "sha256:4732914fb471f56b5cce04d7bae6f164a592c7712e1c85f9ef585e197299521c", size = 38268, upload-time = "2023-06-20T04:17:17.522Z" }, -] - -[[package]] -name = "oscrypto" -version = "1.3.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "asn1crypto" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/06/81/a7654e654a4b30eda06ef9ad8c1b45d1534bfd10b5c045d0c0f6b16fecd2/oscrypto-1.3.0.tar.gz", hash = "sha256:6f5fef59cb5b3708321db7cca56aed8ad7e662853351e7991fcf60ec606d47a4", size = 184590, upload-time = "2022-03-18T01:53:26.889Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/01/7c/fa07d3da2b6253eb8474be16eab2eadf670460e364ccc895ca7ff388ee30/oscrypto-1.3.0-py2.py3-none-any.whl", hash = "sha256:2b2f1d2d42ec152ca90ccb5682f3e051fb55986e1b170ebde472b133713e7085", size = 194553, upload-time = "2022-03-18T01:53:24.559Z" }, -] - -[[package]] -name = "packaging" -version = "26.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/65/ee/299d360cdc32edc7d2cf530f3accf79c4fca01e96ffc950d8a52213bd8e4/packaging-26.0.tar.gz", hash = "sha256:00243ae351a257117b6a241061796684b084ed1c516a08c48a3f7e147a9d80b4", size = 143416, upload-time = "2026-01-21T20:50:39.064Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/b9/c538f279a4e237a006a2c98387d081e9eb060d203d8ed34467cc0f0b9b53/packaging-26.0-py3-none-any.whl", hash = "sha256:b36f1fef9334a5588b4166f8bcd26a14e521f2b55e6b9de3aaa80d3ff7a37529", size = 74366, upload-time = "2026-01-21T20:50:37.788Z" }, -] - -[[package]] -name = "platformdirs" -version = "4.9.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/19/56/8d4c30c8a1d07013911a8fdbd8f89440ef9f08d07a1b50ab8ca8be5a20f9/platformdirs-4.9.4.tar.gz", hash = "sha256:1ec356301b7dc906d83f371c8f487070e99d3ccf9e501686456394622a01a934", size = 28737, upload-time = "2026-03-05T18:34:13.271Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/63/d7/97f7e3a6abb67d8080dd406fd4df842c2be0efaf712d1c899c32a075027c/platformdirs-4.9.4-py3-none-any.whl", hash = "sha256:68a9a4619a666ea6439f2ff250c12a853cd1cbd5158d258bd824a7df6be2f868", size = 21216, upload-time = "2026-03-05T18:34:12.172Z" }, -] - -[[package]] -name = "prettytable" -version = "3.17.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "wcwidth" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/79/45/b0847d88d6cfeb4413566738c8bbf1e1995fad3d42515327ff32cc1eb578/prettytable-3.17.0.tar.gz", hash = "sha256:59f2590776527f3c9e8cf9fe7b66dd215837cca96a9c39567414cbc632e8ddb0", size = 67892, upload-time = "2025-11-14T17:33:20.212Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/ee/8c/83087ebc47ab0396ce092363001fa37c17153119ee282700c0713a195853/prettytable-3.17.0-py3-none-any.whl", hash = "sha256:aad69b294ddbe3e1f95ef8886a060ed1666a0b83018bbf56295f6f226c43d287", size = 34433, upload-time = "2025-11-14T17:33:19.093Z" }, -] - -[[package]] -name = "psutil" -version = "7.2.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/aa/c6/d1ddf4abb55e93cebc4f2ed8b5d6dbad109ecb8d63748dd2b20ab5e57ebe/psutil-7.2.2.tar.gz", hash = "sha256:0746f5f8d406af344fd547f1c8daa5f5c33dbc293bb8d6a16d80b4bb88f59372", size = 493740, upload-time = "2026-01-28T18:14:54.428Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/51/08/510cbdb69c25a96f4ae523f733cdc963ae654904e8db864c07585ef99875/psutil-7.2.2-cp313-cp313t-macosx_10_13_x86_64.whl", hash = "sha256:2edccc433cbfa046b980b0df0171cd25bcaeb3a68fe9022db0979e7aa74a826b", size = 130595, upload-time = "2026-01-28T18:14:57.293Z" }, - { url = "https://files.pythonhosted.org/packages/d6/f5/97baea3fe7a5a9af7436301f85490905379b1c6f2dd51fe3ecf24b4c5fbf/psutil-7.2.2-cp313-cp313t-macosx_11_0_arm64.whl", hash = "sha256:e78c8603dcd9a04c7364f1a3e670cea95d51ee865e4efb3556a3a63adef958ea", size = 131082, upload-time = "2026-01-28T18:14:59.732Z" }, - { url = "https://files.pythonhosted.org/packages/37/d6/246513fbf9fa174af531f28412297dd05241d97a75911ac8febefa1a53c6/psutil-7.2.2-cp313-cp313t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1a571f2330c966c62aeda00dd24620425d4b0cc86881c89861fbc04549e5dc63", size = 181476, upload-time = "2026-01-28T18:15:01.884Z" }, - { url = "https://files.pythonhosted.org/packages/b8/b5/9182c9af3836cca61696dabe4fd1304e17bc56cb62f17439e1154f225dd3/psutil-7.2.2-cp313-cp313t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:917e891983ca3c1887b4ef36447b1e0873e70c933afc831c6b6da078ba474312", size = 184062, upload-time = "2026-01-28T18:15:04.436Z" }, - { url = "https://files.pythonhosted.org/packages/16/ba/0756dca669f5a9300d0cbcbfae9a4c30e446dfc7440ffe43ded5724bfd93/psutil-7.2.2-cp313-cp313t-win_amd64.whl", hash = "sha256:ab486563df44c17f5173621c7b198955bd6b613fb87c71c161f827d3fb149a9b", size = 139893, upload-time = "2026-01-28T18:15:06.378Z" }, - { url = "https://files.pythonhosted.org/packages/1c/61/8fa0e26f33623b49949346de05ec1ddaad02ed8ba64af45f40a147dbfa97/psutil-7.2.2-cp313-cp313t-win_arm64.whl", hash = "sha256:ae0aefdd8796a7737eccea863f80f81e468a1e4cf14d926bd9b6f5f2d5f90ca9", size = 135589, upload-time = "2026-01-28T18:15:08.03Z" }, - { url = "https://files.pythonhosted.org/packages/81/69/ef179ab5ca24f32acc1dac0c247fd6a13b501fd5534dbae0e05a1c48b66d/psutil-7.2.2-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:eed63d3b4d62449571547b60578c5b2c4bcccc5387148db46e0c2313dad0ee00", size = 130664, upload-time = "2026-01-28T18:15:09.469Z" }, - { url = "https://files.pythonhosted.org/packages/7b/64/665248b557a236d3fa9efc378d60d95ef56dd0a490c2cd37dafc7660d4a9/psutil-7.2.2-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:7b6d09433a10592ce39b13d7be5a54fbac1d1228ed29abc880fb23df7cb694c9", size = 131087, upload-time = "2026-01-28T18:15:11.724Z" }, - { url = "https://files.pythonhosted.org/packages/d5/2e/e6782744700d6759ebce3043dcfa661fb61e2fb752b91cdeae9af12c2178/psutil-7.2.2-cp314-cp314t-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fa4ecf83bcdf6e6c8f4449aff98eefb5d0604bf88cb883d7da3d8d2d909546a", size = 182383, upload-time = "2026-01-28T18:15:13.445Z" }, - { url = "https://files.pythonhosted.org/packages/57/49/0a41cefd10cb7505cdc04dab3eacf24c0c2cb158a998b8c7b1d27ee2c1f5/psutil-7.2.2-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:e452c464a02e7dc7822a05d25db4cde564444a67e58539a00f929c51eddda0cf", size = 185210, upload-time = "2026-01-28T18:15:16.002Z" }, - { url = "https://files.pythonhosted.org/packages/dd/2c/ff9bfb544f283ba5f83ba725a3c5fec6d6b10b8f27ac1dc641c473dc390d/psutil-7.2.2-cp314-cp314t-win_amd64.whl", hash = "sha256:c7663d4e37f13e884d13994247449e9f8f574bc4655d509c3b95e9ec9e2b9dc1", size = 141228, upload-time = "2026-01-28T18:15:18.385Z" }, - { url = "https://files.pythonhosted.org/packages/f2/fc/f8d9c31db14fcec13748d373e668bc3bed94d9077dbc17fb0eebc073233c/psutil-7.2.2-cp314-cp314t-win_arm64.whl", hash = "sha256:11fe5a4f613759764e79c65cf11ebdf26e33d6dd34336f8a337aa2996d71c841", size = 136284, upload-time = "2026-01-28T18:15:19.912Z" }, - { url = "https://files.pythonhosted.org/packages/e7/36/5ee6e05c9bd427237b11b3937ad82bb8ad2752d72c6969314590dd0c2f6e/psutil-7.2.2-cp36-abi3-macosx_10_9_x86_64.whl", hash = "sha256:ed0cace939114f62738d808fdcecd4c869222507e266e574799e9c0faa17d486", size = 129090, upload-time = "2026-01-28T18:15:22.168Z" }, - { url = "https://files.pythonhosted.org/packages/80/c4/f5af4c1ca8c1eeb2e92ccca14ce8effdeec651d5ab6053c589b074eda6e1/psutil-7.2.2-cp36-abi3-macosx_11_0_arm64.whl", hash = "sha256:1a7b04c10f32cc88ab39cbf606e117fd74721c831c98a27dc04578deb0c16979", size = 129859, upload-time = "2026-01-28T18:15:23.795Z" }, - { url = "https://files.pythonhosted.org/packages/b5/70/5d8df3b09e25bce090399cf48e452d25c935ab72dad19406c77f4e828045/psutil-7.2.2-cp36-abi3-manylinux2010_x86_64.manylinux_2_12_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:076a2d2f923fd4821644f5ba89f059523da90dc9014e85f8e45a5774ca5bc6f9", size = 155560, upload-time = "2026-01-28T18:15:25.976Z" }, - { url = "https://files.pythonhosted.org/packages/63/65/37648c0c158dc222aba51c089eb3bdfa238e621674dc42d48706e639204f/psutil-7.2.2-cp36-abi3-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b0726cecd84f9474419d67252add4ac0cd9811b04d61123054b9fb6f57df6e9e", size = 156997, upload-time = "2026-01-28T18:15:27.794Z" }, - { url = "https://files.pythonhosted.org/packages/8e/13/125093eadae863ce03c6ffdbae9929430d116a246ef69866dad94da3bfbc/psutil-7.2.2-cp36-abi3-musllinux_1_2_aarch64.whl", hash = "sha256:fd04ef36b4a6d599bbdb225dd1d3f51e00105f6d48a28f006da7f9822f2606d8", size = 148972, upload-time = "2026-01-28T18:15:29.342Z" }, - { url = "https://files.pythonhosted.org/packages/04/78/0acd37ca84ce3ddffaa92ef0f571e073faa6d8ff1f0559ab1272188ea2be/psutil-7.2.2-cp36-abi3-musllinux_1_2_x86_64.whl", hash = "sha256:b58fabe35e80b264a4e3bb23e6b96f9e45a3df7fb7eed419ac0e5947c61e47cc", size = 148266, upload-time = "2026-01-28T18:15:31.597Z" }, - { url = "https://files.pythonhosted.org/packages/b4/90/e2159492b5426be0c1fef7acba807a03511f97c5f86b3caeda6ad92351a7/psutil-7.2.2-cp37-abi3-win_amd64.whl", hash = "sha256:eb7e81434c8d223ec4a219b5fc1c47d0417b12be7ea866e24fb5ad6e84b3d988", size = 137737, upload-time = "2026-01-28T18:15:33.849Z" }, - { url = "https://files.pythonhosted.org/packages/8c/c7/7bb2e321574b10df20cbde462a94e2b71d05f9bbda251ef27d104668306a/psutil-7.2.2-cp37-abi3-win_arm64.whl", hash = "sha256:8c233660f575a5a89e6d4cb65d9f938126312bca76d8fe087b947b3a1aaac9ee", size = 134617, upload-time = "2026-01-28T18:15:36.514Z" }, -] - -[[package]] -name = "pyasn1" -version = "0.6.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/fe/b6/6e630dff89739fcd427e3f72b3d905ce0acb85a45d4ec3e2678718a3487f/pyasn1-0.6.2.tar.gz", hash = "sha256:9b59a2b25ba7e4f8197db7686c09fb33e658b98339fadb826e9512629017833b", size = 146586, upload-time = "2026-01-16T18:04:18.534Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/44/b5/a96872e5184f354da9c84ae119971a0a4c221fe9b27a4d94bd43f2596727/pyasn1-0.6.2-py3-none-any.whl", hash = "sha256:1eb26d860996a18e9b6ed05e7aae0e9fc21619fcee6af91cca9bad4fbea224bf", size = 83371, upload-time = "2026-01-16T18:04:17.174Z" }, -] - -[[package]] -name = "pycparser" -version = "3.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1b/7d/92392ff7815c21062bea51aa7b87d45576f649f16458d78b7cf94b9ab2e6/pycparser-3.0.tar.gz", hash = "sha256:600f49d217304a5902ac3c37e1281c9fe94e4d0489de643a9504c5cdfdfc6b29", size = 103492, upload-time = "2026-01-21T14:26:51.89Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/0c/c3/44f3fbbfa403ea2a7c779186dc20772604442dde72947e7d01069cbe98e3/pycparser-3.0-py3-none-any.whl", hash = "sha256:b727414169a36b7d524c1c3e31839a521725078d7b2ff038656844266160a992", size = 48172, upload-time = "2026-01-21T14:26:50.693Z" }, -] - -[[package]] -name = "pyelftools" -version = "0.32" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/b9/ab/33968940b2deb3d92f5b146bc6d4009a5f95d1d06c148ea2f9ee965071af/pyelftools-0.32.tar.gz", hash = "sha256:6de90ee7b8263e740c8715a925382d4099b354f29ac48ea40d840cf7aa14ace5", size = 15047199, upload-time = "2025-02-19T14:20:05.549Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/af/43/700932c4f0638c3421177144a2e86448c0d75dbaee2c7936bda3f9fd0878/pyelftools-0.32-py3-none-any.whl", hash = "sha256:013df952a006db5e138b1edf6d8a68ecc50630adbd0d83a2d41e7f846163d738", size = 188525, upload-time = "2025-02-19T14:19:59.919Z" }, -] - -[[package]] -name = "pylink-square" -version = "1.7.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "psutil" }, - { name = "six" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/e7/26/12865d2b7784d2ff687d6dc29eea38013688d47a5499df60010e1f13ba4f/pylink_square-1.7.0.tar.gz", hash = "sha256:9a4c4b1cf0cffedd15e00f82c3e23745252a5094c96b27560daac25a0d08aa36", size = 173502, upload-time = "2025-08-28T15:56:47.46Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/b8/db67ffbb71881b02c169b638bc53c9a1bf0d8f41828e3b48974e77f34419/pylink_square-1.7.0-py2.py3-none-any.whl", hash = "sha256:f418db3479b3b86e45f821f88cea5397357beed382eb441ab2fd11e1d4d9e1e3", size = 86908, upload-time = "2025-08-28T15:56:46.171Z" }, -] - -[[package]] -name = "pyocd" -version = "0.43.1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "capstone" }, - { name = "cmsis-pack-manager" }, - { name = "colorama" }, - { name = "hidapi", marker = "sys_platform != 'linux'" }, - { name = "importlib-metadata" }, - { name = "importlib-resources" }, - { name = "intelhex" }, - { name = "intervaltree" }, - { name = "lark" }, - { name = "libusb-package" }, - { name = "natsort" }, - { name = "prettytable" }, - { name = "pyelftools" }, - { name = "pylink-square" }, - { name = "pyusb" }, - { name = "pyyaml" }, - { name = "typing-extensions" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3f/f3/ceeb2bd0191e43640b46de7a16b7940ccb3396b3c838995158b99cc8358f/pyocd-0.43.1.tar.gz", hash = "sha256:bd6cbee271dae30a544e384f6f977d9fc3101d931936ea9a19147e0251a5cf9c", size = 16142791, upload-time = "2026-03-05T11:42:33.056Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8c/be/c9a7f2679375183e2e07141e1e20815027ba2084a5cb1624cdb9f84c8433/pyocd-0.43.1-py3-none-any.whl", hash = "sha256:9462935eb3273e03ad815eba3a9e692c15b1b7ae3dbb5d3a0e8d2926dc05226f", size = 14565904, upload-time = "2026-03-05T11:42:28.547Z" }, -] - -[[package]] -name = "pyreadline3" -version = "3.5.4" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/0f/49/4cea918a08f02817aabae639e3d0ac046fef9f9180518a3ad394e22da148/pyreadline3-3.5.4.tar.gz", hash = "sha256:8d57d53039a1c75adba8e50dd3d992b28143480816187ea5efbd5c78e6c885b7", size = 99839, upload-time = "2024-09-19T02:40:10.062Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/5a/dc/491b7661614ab97483abf2056be1deee4dc2490ecbf7bff9ab5cdbac86e1/pyreadline3-3.5.4-py3-none-any.whl", hash = "sha256:eaf8e6cc3c49bcccf145fc6067ba8643d1df34d604a1ec0eccbf7a18e6d3fae6", size = 83178, upload-time = "2024-09-19T02:40:08.598Z" }, -] - -[[package]] -name = "pyserial" -version = "3.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/1e/7d/ae3f0a63f41e4d2f6cb66a5b57197850f919f59e558159a4dd3a818f5082/pyserial-3.5.tar.gz", hash = "sha256:3c77e014170dfffbd816e6ffc205e9842efb10be9f58ec16d3e8675b4925cddb", size = 159125, upload-time = "2020-11-23T03:59:15.045Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/bc/587a445451b253b285629263eb51c2d8e9bcea4fc97826266d186f96f558/pyserial-3.5-py2.py3-none-any.whl", hash = "sha256:c4451db6ba391ca6ca299fb3ec7bae67a5c55dde170964c7a14ceefec02f2cf0", size = 90585, upload-time = "2020-11-23T03:59:13.41Z" }, -] - -[[package]] -name = "pyusb" -version = "1.3.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/00/6b/ce3727395e52b7b76dfcf0c665e37d223b680b9becc60710d4bc08b7b7cb/pyusb-1.3.1.tar.gz", hash = "sha256:3af070b607467c1c164f49d5b0caabe8ac78dbed9298d703a8dbf9df4052d17e", size = 77281, upload-time = "2025-01-08T23:45:01.866Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/28/b8/27e6312e86408a44fe16bd28ee12dd98608b39f7e7e57884a24e8f29b573/pyusb-1.3.1-py3-none-any.whl", hash = "sha256:bf9b754557af4717fe80c2b07cc2b923a9151f5c08d17bdb5345dac09d6a0430", size = 58465, upload-time = "2025-01-08T23:45:00.029Z" }, -] - -[[package]] -name = "pyyaml" -version = "6.0.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/05/8e/961c0007c59b8dd7729d542c61a4d537767a59645b82a0b521206e1e25c2/pyyaml-6.0.3.tar.gz", hash = "sha256:d76623373421df22fb4cf8817020cbb7ef15c725b9d5e45f17e189bfc384190f", size = 130960, upload-time = "2025-09-25T21:33:16.546Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/f4/a0/39350dd17dd6d6c6507025c0e53aef67a9293a6d37d3511f23ea510d5800/pyyaml-6.0.3-cp310-cp310-macosx_10_13_x86_64.whl", hash = "sha256:214ed4befebe12df36bcc8bc2b64b396ca31be9304b8f59e25c11cf94a4c033b", size = 184227, upload-time = "2025-09-25T21:31:46.04Z" }, - { url = "https://files.pythonhosted.org/packages/05/14/52d505b5c59ce73244f59c7a50ecf47093ce4765f116cdb98286a71eeca2/pyyaml-6.0.3-cp310-cp310-macosx_11_0_arm64.whl", hash = "sha256:02ea2dfa234451bbb8772601d7b8e426c2bfa197136796224e50e35a78777956", size = 174019, upload-time = "2025-09-25T21:31:47.706Z" }, - { url = "https://files.pythonhosted.org/packages/43/f7/0e6a5ae5599c838c696adb4e6330a59f463265bfa1e116cfd1fbb0abaaae/pyyaml-6.0.3-cp310-cp310-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:b30236e45cf30d2b8e7b3e85881719e98507abed1011bf463a8fa23e9c3e98a8", size = 740646, upload-time = "2025-09-25T21:31:49.21Z" }, - { url = "https://files.pythonhosted.org/packages/2f/3a/61b9db1d28f00f8fd0ae760459a5c4bf1b941baf714e207b6eb0657d2578/pyyaml-6.0.3-cp310-cp310-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:66291b10affd76d76f54fad28e22e51719ef9ba22b29e1d7d03d6777a9174198", size = 840793, upload-time = "2025-09-25T21:31:50.735Z" }, - { url = "https://files.pythonhosted.org/packages/7a/1e/7acc4f0e74c4b3d9531e24739e0ab832a5edf40e64fbae1a9c01941cabd7/pyyaml-6.0.3-cp310-cp310-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:9c7708761fccb9397fe64bbc0395abcae8c4bf7b0eac081e12b809bf47700d0b", size = 770293, upload-time = "2025-09-25T21:31:51.828Z" }, - { url = "https://files.pythonhosted.org/packages/8b/ef/abd085f06853af0cd59fa5f913d61a8eab65d7639ff2a658d18a25d6a89d/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:418cf3f2111bc80e0933b2cd8cd04f286338bb88bdc7bc8e6dd775ebde60b5e0", size = 732872, upload-time = "2025-09-25T21:31:53.282Z" }, - { url = "https://files.pythonhosted.org/packages/1f/15/2bc9c8faf6450a8b3c9fc5448ed869c599c0a74ba2669772b1f3a0040180/pyyaml-6.0.3-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:5e0b74767e5f8c593e8c9b5912019159ed0533c70051e9cce3e8b6aa699fcd69", size = 758828, upload-time = "2025-09-25T21:31:54.807Z" }, - { url = "https://files.pythonhosted.org/packages/a3/00/531e92e88c00f4333ce359e50c19b8d1de9fe8d581b1534e35ccfbc5f393/pyyaml-6.0.3-cp310-cp310-win32.whl", hash = "sha256:28c8d926f98f432f88adc23edf2e6d4921ac26fb084b028c733d01868d19007e", size = 142415, upload-time = "2025-09-25T21:31:55.885Z" }, - { url = "https://files.pythonhosted.org/packages/2a/fa/926c003379b19fca39dd4634818b00dec6c62d87faf628d1394e137354d4/pyyaml-6.0.3-cp310-cp310-win_amd64.whl", hash = "sha256:bdb2c67c6c1390b63c6ff89f210c8fd09d9a1217a465701eac7316313c915e4c", size = 158561, upload-time = "2025-09-25T21:31:57.406Z" }, - { url = "https://files.pythonhosted.org/packages/6d/16/a95b6757765b7b031c9374925bb718d55e0a9ba8a1b6a12d25962ea44347/pyyaml-6.0.3-cp311-cp311-macosx_10_13_x86_64.whl", hash = "sha256:44edc647873928551a01e7a563d7452ccdebee747728c1080d881d68af7b997e", size = 185826, upload-time = "2025-09-25T21:31:58.655Z" }, - { url = "https://files.pythonhosted.org/packages/16/19/13de8e4377ed53079ee996e1ab0a9c33ec2faf808a4647b7b4c0d46dd239/pyyaml-6.0.3-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:652cb6edd41e718550aad172851962662ff2681490a8a711af6a4d288dd96824", size = 175577, upload-time = "2025-09-25T21:32:00.088Z" }, - { url = "https://files.pythonhosted.org/packages/0c/62/d2eb46264d4b157dae1275b573017abec435397aa59cbcdab6fc978a8af4/pyyaml-6.0.3-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:10892704fc220243f5305762e276552a0395f7beb4dbf9b14ec8fd43b57f126c", size = 775556, upload-time = "2025-09-25T21:32:01.31Z" }, - { url = "https://files.pythonhosted.org/packages/10/cb/16c3f2cf3266edd25aaa00d6c4350381c8b012ed6f5276675b9eba8d9ff4/pyyaml-6.0.3-cp311-cp311-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:850774a7879607d3a6f50d36d04f00ee69e7fc816450e5f7e58d7f17f1ae5c00", size = 882114, upload-time = "2025-09-25T21:32:03.376Z" }, - { url = "https://files.pythonhosted.org/packages/71/60/917329f640924b18ff085ab889a11c763e0b573da888e8404ff486657602/pyyaml-6.0.3-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:b8bb0864c5a28024fac8a632c443c87c5aa6f215c0b126c449ae1a150412f31d", size = 806638, upload-time = "2025-09-25T21:32:04.553Z" }, - { url = "https://files.pythonhosted.org/packages/dd/6f/529b0f316a9fd167281a6c3826b5583e6192dba792dd55e3203d3f8e655a/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1d37d57ad971609cf3c53ba6a7e365e40660e3be0e5175fa9f2365a379d6095a", size = 767463, upload-time = "2025-09-25T21:32:06.152Z" }, - { url = "https://files.pythonhosted.org/packages/f2/6a/b627b4e0c1dd03718543519ffb2f1deea4a1e6d42fbab8021936a4d22589/pyyaml-6.0.3-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:37503bfbfc9d2c40b344d06b2199cf0e96e97957ab1c1b546fd4f87e53e5d3e4", size = 794986, upload-time = "2025-09-25T21:32:07.367Z" }, - { url = "https://files.pythonhosted.org/packages/45/91/47a6e1c42d9ee337c4839208f30d9f09caa9f720ec7582917b264defc875/pyyaml-6.0.3-cp311-cp311-win32.whl", hash = "sha256:8098f252adfa6c80ab48096053f512f2321f0b998f98150cea9bd23d83e1467b", size = 142543, upload-time = "2025-09-25T21:32:08.95Z" }, - { url = "https://files.pythonhosted.org/packages/da/e3/ea007450a105ae919a72393cb06f122f288ef60bba2dc64b26e2646fa315/pyyaml-6.0.3-cp311-cp311-win_amd64.whl", hash = "sha256:9f3bfb4965eb874431221a3ff3fdcddc7e74e3b07799e0e84ca4a0f867d449bf", size = 158763, upload-time = "2025-09-25T21:32:09.96Z" }, - { url = "https://files.pythonhosted.org/packages/d1/33/422b98d2195232ca1826284a76852ad5a86fe23e31b009c9886b2d0fb8b2/pyyaml-6.0.3-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:7f047e29dcae44602496db43be01ad42fc6f1cc0d8cd6c83d342306c32270196", size = 182063, upload-time = "2025-09-25T21:32:11.445Z" }, - { url = "https://files.pythonhosted.org/packages/89/a0/6cf41a19a1f2f3feab0e9c0b74134aa2ce6849093d5517a0c550fe37a648/pyyaml-6.0.3-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:fc09d0aa354569bc501d4e787133afc08552722d3ab34836a80547331bb5d4a0", size = 173973, upload-time = "2025-09-25T21:32:12.492Z" }, - { url = "https://files.pythonhosted.org/packages/ed/23/7a778b6bd0b9a8039df8b1b1d80e2e2ad78aa04171592c8a5c43a56a6af4/pyyaml-6.0.3-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:9149cad251584d5fb4981be1ecde53a1ca46c891a79788c0df828d2f166bda28", size = 775116, upload-time = "2025-09-25T21:32:13.652Z" }, - { url = "https://files.pythonhosted.org/packages/65/30/d7353c338e12baef4ecc1b09e877c1970bd3382789c159b4f89d6a70dc09/pyyaml-6.0.3-cp312-cp312-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:5fdec68f91a0c6739b380c83b951e2c72ac0197ace422360e6d5a959d8d97b2c", size = 844011, upload-time = "2025-09-25T21:32:15.21Z" }, - { url = "https://files.pythonhosted.org/packages/8b/9d/b3589d3877982d4f2329302ef98a8026e7f4443c765c46cfecc8858c6b4b/pyyaml-6.0.3-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:ba1cc08a7ccde2d2ec775841541641e4548226580ab850948cbfda66a1befcdc", size = 807870, upload-time = "2025-09-25T21:32:16.431Z" }, - { url = "https://files.pythonhosted.org/packages/05/c0/b3be26a015601b822b97d9149ff8cb5ead58c66f981e04fedf4e762f4bd4/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8dc52c23056b9ddd46818a57b78404882310fb473d63f17b07d5c40421e47f8e", size = 761089, upload-time = "2025-09-25T21:32:17.56Z" }, - { url = "https://files.pythonhosted.org/packages/be/8e/98435a21d1d4b46590d5459a22d88128103f8da4c2d4cb8f14f2a96504e1/pyyaml-6.0.3-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:41715c910c881bc081f1e8872880d3c650acf13dfa8214bad49ed4cede7c34ea", size = 790181, upload-time = "2025-09-25T21:32:18.834Z" }, - { url = "https://files.pythonhosted.org/packages/74/93/7baea19427dcfbe1e5a372d81473250b379f04b1bd3c4c5ff825e2327202/pyyaml-6.0.3-cp312-cp312-win32.whl", hash = "sha256:96b533f0e99f6579b3d4d4995707cf36df9100d67e0c8303a0c55b27b5f99bc5", size = 137658, upload-time = "2025-09-25T21:32:20.209Z" }, - { url = "https://files.pythonhosted.org/packages/86/bf/899e81e4cce32febab4fb42bb97dcdf66bc135272882d1987881a4b519e9/pyyaml-6.0.3-cp312-cp312-win_amd64.whl", hash = "sha256:5fcd34e47f6e0b794d17de1b4ff496c00986e1c83f7ab2fb8fcfe9616ff7477b", size = 154003, upload-time = "2025-09-25T21:32:21.167Z" }, - { url = "https://files.pythonhosted.org/packages/1a/08/67bd04656199bbb51dbed1439b7f27601dfb576fb864099c7ef0c3e55531/pyyaml-6.0.3-cp312-cp312-win_arm64.whl", hash = "sha256:64386e5e707d03a7e172c0701abfb7e10f0fb753ee1d773128192742712a98fd", size = 140344, upload-time = "2025-09-25T21:32:22.617Z" }, - { url = "https://files.pythonhosted.org/packages/d1/11/0fd08f8192109f7169db964b5707a2f1e8b745d4e239b784a5a1dd80d1db/pyyaml-6.0.3-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:8da9669d359f02c0b91ccc01cac4a67f16afec0dac22c2ad09f46bee0697eba8", size = 181669, upload-time = "2025-09-25T21:32:23.673Z" }, - { url = "https://files.pythonhosted.org/packages/b1/16/95309993f1d3748cd644e02e38b75d50cbc0d9561d21f390a76242ce073f/pyyaml-6.0.3-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:2283a07e2c21a2aa78d9c4442724ec1eb15f5e42a723b99cb3d822d48f5f7ad1", size = 173252, upload-time = "2025-09-25T21:32:25.149Z" }, - { url = "https://files.pythonhosted.org/packages/50/31/b20f376d3f810b9b2371e72ef5adb33879b25edb7a6d072cb7ca0c486398/pyyaml-6.0.3-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:ee2922902c45ae8ccada2c5b501ab86c36525b883eff4255313a253a3160861c", size = 767081, upload-time = "2025-09-25T21:32:26.575Z" }, - { url = "https://files.pythonhosted.org/packages/49/1e/a55ca81e949270d5d4432fbbd19dfea5321eda7c41a849d443dc92fd1ff7/pyyaml-6.0.3-cp313-cp313-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a33284e20b78bd4a18c8c2282d549d10bc8408a2a7ff57653c0cf0b9be0afce5", size = 841159, upload-time = "2025-09-25T21:32:27.727Z" }, - { url = "https://files.pythonhosted.org/packages/74/27/e5b8f34d02d9995b80abcef563ea1f8b56d20134d8f4e5e81733b1feceb2/pyyaml-6.0.3-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0f29edc409a6392443abf94b9cf89ce99889a1dd5376d94316ae5145dfedd5d6", size = 801626, upload-time = "2025-09-25T21:32:28.878Z" }, - { url = "https://files.pythonhosted.org/packages/f9/11/ba845c23988798f40e52ba45f34849aa8a1f2d4af4b798588010792ebad6/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:f7057c9a337546edc7973c0d3ba84ddcdf0daa14533c2065749c9075001090e6", size = 753613, upload-time = "2025-09-25T21:32:30.178Z" }, - { url = "https://files.pythonhosted.org/packages/3d/e0/7966e1a7bfc0a45bf0a7fb6b98ea03fc9b8d84fa7f2229e9659680b69ee3/pyyaml-6.0.3-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:eda16858a3cab07b80edaf74336ece1f986ba330fdb8ee0d6c0d68fe82bc96be", size = 794115, upload-time = "2025-09-25T21:32:31.353Z" }, - { url = "https://files.pythonhosted.org/packages/de/94/980b50a6531b3019e45ddeada0626d45fa85cbe22300844a7983285bed3b/pyyaml-6.0.3-cp313-cp313-win32.whl", hash = "sha256:d0eae10f8159e8fdad514efdc92d74fd8d682c933a6dd088030f3834bc8e6b26", size = 137427, upload-time = "2025-09-25T21:32:32.58Z" }, - { url = "https://files.pythonhosted.org/packages/97/c9/39d5b874e8b28845e4ec2202b5da735d0199dbe5b8fb85f91398814a9a46/pyyaml-6.0.3-cp313-cp313-win_amd64.whl", hash = "sha256:79005a0d97d5ddabfeeea4cf676af11e647e41d81c9a7722a193022accdb6b7c", size = 154090, upload-time = "2025-09-25T21:32:33.659Z" }, - { url = "https://files.pythonhosted.org/packages/73/e8/2bdf3ca2090f68bb3d75b44da7bbc71843b19c9f2b9cb9b0f4ab7a5a4329/pyyaml-6.0.3-cp313-cp313-win_arm64.whl", hash = "sha256:5498cd1645aa724a7c71c8f378eb29ebe23da2fc0d7a08071d89469bf1d2defb", size = 140246, upload-time = "2025-09-25T21:32:34.663Z" }, - { url = "https://files.pythonhosted.org/packages/9d/8c/f4bd7f6465179953d3ac9bc44ac1a8a3e6122cf8ada906b4f96c60172d43/pyyaml-6.0.3-cp314-cp314-macosx_10_13_x86_64.whl", hash = "sha256:8d1fab6bb153a416f9aeb4b8763bc0f22a5586065f86f7664fc23339fc1c1fac", size = 181814, upload-time = "2025-09-25T21:32:35.712Z" }, - { url = "https://files.pythonhosted.org/packages/bd/9c/4d95bb87eb2063d20db7b60faa3840c1b18025517ae857371c4dd55a6b3a/pyyaml-6.0.3-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:34d5fcd24b8445fadc33f9cf348c1047101756fd760b4dacb5c3e99755703310", size = 173809, upload-time = "2025-09-25T21:32:36.789Z" }, - { url = "https://files.pythonhosted.org/packages/92/b5/47e807c2623074914e29dabd16cbbdd4bf5e9b2db9f8090fa64411fc5382/pyyaml-6.0.3-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:501a031947e3a9025ed4405a168e6ef5ae3126c59f90ce0cd6f2bfc477be31b7", size = 766454, upload-time = "2025-09-25T21:32:37.966Z" }, - { url = "https://files.pythonhosted.org/packages/02/9e/e5e9b168be58564121efb3de6859c452fccde0ab093d8438905899a3a483/pyyaml-6.0.3-cp314-cp314-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:b3bc83488de33889877a0f2543ade9f70c67d66d9ebb4ac959502e12de895788", size = 836355, upload-time = "2025-09-25T21:32:39.178Z" }, - { url = "https://files.pythonhosted.org/packages/88/f9/16491d7ed2a919954993e48aa941b200f38040928474c9e85ea9e64222c3/pyyaml-6.0.3-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:c458b6d084f9b935061bc36216e8a69a7e293a2f1e68bf956dcd9e6cbcd143f5", size = 794175, upload-time = "2025-09-25T21:32:40.865Z" }, - { url = "https://files.pythonhosted.org/packages/dd/3f/5989debef34dc6397317802b527dbbafb2b4760878a53d4166579111411e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:7c6610def4f163542a622a73fb39f534f8c101d690126992300bf3207eab9764", size = 755228, upload-time = "2025-09-25T21:32:42.084Z" }, - { url = "https://files.pythonhosted.org/packages/d7/ce/af88a49043cd2e265be63d083fc75b27b6ed062f5f9fd6cdc223ad62f03e/pyyaml-6.0.3-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:5190d403f121660ce8d1d2c1bb2ef1bd05b5f68533fc5c2ea899bd15f4399b35", size = 789194, upload-time = "2025-09-25T21:32:43.362Z" }, - { url = "https://files.pythonhosted.org/packages/23/20/bb6982b26a40bb43951265ba29d4c246ef0ff59c9fdcdf0ed04e0687de4d/pyyaml-6.0.3-cp314-cp314-win_amd64.whl", hash = "sha256:4a2e8cebe2ff6ab7d1050ecd59c25d4c8bd7e6f400f5f82b96557ac0abafd0ac", size = 156429, upload-time = "2025-09-25T21:32:57.844Z" }, - { url = "https://files.pythonhosted.org/packages/f4/f4/a4541072bb9422c8a883ab55255f918fa378ecf083f5b85e87fc2b4eda1b/pyyaml-6.0.3-cp314-cp314-win_arm64.whl", hash = "sha256:93dda82c9c22deb0a405ea4dc5f2d0cda384168e466364dec6255b293923b2f3", size = 143912, upload-time = "2025-09-25T21:32:59.247Z" }, - { url = "https://files.pythonhosted.org/packages/7c/f9/07dd09ae774e4616edf6cda684ee78f97777bdd15847253637a6f052a62f/pyyaml-6.0.3-cp314-cp314t-macosx_10_13_x86_64.whl", hash = "sha256:02893d100e99e03eda1c8fd5c441d8c60103fd175728e23e431db1b589cf5ab3", size = 189108, upload-time = "2025-09-25T21:32:44.377Z" }, - { url = "https://files.pythonhosted.org/packages/4e/78/8d08c9fb7ce09ad8c38ad533c1191cf27f7ae1effe5bb9400a46d9437fcf/pyyaml-6.0.3-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c1ff362665ae507275af2853520967820d9124984e0f7466736aea23d8611fba", size = 183641, upload-time = "2025-09-25T21:32:45.407Z" }, - { url = "https://files.pythonhosted.org/packages/7b/5b/3babb19104a46945cf816d047db2788bcaf8c94527a805610b0289a01c6b/pyyaml-6.0.3-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:6adc77889b628398debc7b65c073bcb99c4a0237b248cacaf3fe8a557563ef6c", size = 831901, upload-time = "2025-09-25T21:32:48.83Z" }, - { url = "https://files.pythonhosted.org/packages/8b/cc/dff0684d8dc44da4d22a13f35f073d558c268780ce3c6ba1b87055bb0b87/pyyaml-6.0.3-cp314-cp314t-manylinux2014_s390x.manylinux_2_17_s390x.manylinux_2_28_s390x.whl", hash = "sha256:a80cb027f6b349846a3bf6d73b5e95e782175e52f22108cfa17876aaeff93702", size = 861132, upload-time = "2025-09-25T21:32:50.149Z" }, - { url = "https://files.pythonhosted.org/packages/b1/5e/f77dc6b9036943e285ba76b49e118d9ea929885becb0a29ba8a7c75e29fe/pyyaml-6.0.3-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:00c4bdeba853cc34e7dd471f16b4114f4162dc03e6b7afcc2128711f0eca823c", size = 839261, upload-time = "2025-09-25T21:32:51.808Z" }, - { url = "https://files.pythonhosted.org/packages/ce/88/a9db1376aa2a228197c58b37302f284b5617f56a5d959fd1763fb1675ce6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:66e1674c3ef6f541c35191caae2d429b967b99e02040f5ba928632d9a7f0f065", size = 805272, upload-time = "2025-09-25T21:32:52.941Z" }, - { url = "https://files.pythonhosted.org/packages/da/92/1446574745d74df0c92e6aa4a7b0b3130706a4142b2d1a5869f2eaa423c6/pyyaml-6.0.3-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:16249ee61e95f858e83976573de0f5b2893b3677ba71c9dd36b9cf8be9ac6d65", size = 829923, upload-time = "2025-09-25T21:32:54.537Z" }, - { url = "https://files.pythonhosted.org/packages/f0/7a/1c7270340330e575b92f397352af856a8c06f230aa3e76f86b39d01b416a/pyyaml-6.0.3-cp314-cp314t-win_amd64.whl", hash = "sha256:4ad1906908f2f5ae4e5a8ddfce73c320c2a1429ec52eafd27138b7f1cbe341c9", size = 174062, upload-time = "2025-09-25T21:32:55.767Z" }, - { url = "https://files.pythonhosted.org/packages/f1/12/de94a39c2ef588c7e6455cfbe7343d3b2dc9d6b6b2f40c4c6565744c873d/pyyaml-6.0.3-cp314-cp314t-win_arm64.whl", hash = "sha256:ebc55a14a21cb14062aa4162f906cd962b28e2e9ea38f9b4391244cd8de4ae0b", size = 149341, upload-time = "2025-09-25T21:32:56.828Z" }, -] - -[[package]] -name = "requests" -version = "2.32.5" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "certifi" }, - { name = "charset-normalizer" }, - { name = "idna" }, - { name = "urllib3" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/c9/74/b3ff8e6c8446842c3f5c837e9c3dfcfe2018ea6ecef224c710c85ef728f4/requests-2.32.5.tar.gz", hash = "sha256:dbba0bac56e100853db0ea71b82b4dfd5fe2bf6d3754a8893c3af500cec7d7cf", size = 134517, upload-time = "2025-08-18T20:46:02.573Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/1e/db/4254e3eabe8020b458f1a747140d32277ec7a271daf1d235b70dc0b4e6e3/requests-2.32.5-py3-none-any.whl", hash = "sha256:2462f94637a34fd532264295e186976db0f5d453d1cdd31473c85a6a161affb6", size = 64738, upload-time = "2025-08-18T20:46:00.542Z" }, -] - -[[package]] -name = "ruamel-yaml" -version = "0.19.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c7/3b/ebda527b56beb90cb7652cb1c7e4f91f48649fbcd8d2eb2fb6e77cd3329b/ruamel_yaml-0.19.1.tar.gz", hash = "sha256:53eb66cd27849eff968ebf8f0bf61f46cdac2da1d1f3576dd4ccee9b25c31993", size = 142709, upload-time = "2026-01-02T16:50:31.84Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b8/0c/51f6841f1d84f404f92463fc2b1ba0da357ca1e3db6b7fbda26956c3b82a/ruamel_yaml-0.19.1-py3-none-any.whl", hash = "sha256:27592957fedf6e0b62f281e96effd28043345e0e66001f97683aa9a40c667c93", size = 118102, upload-time = "2026-01-02T16:50:29.201Z" }, -] - -[[package]] -name = "ruamel-yaml-clib" -version = "0.2.14" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/d8/e9/39ec4d4b3f91188fad1842748f67d4e749c77c37e353c4e545052ee8e893/ruamel.yaml.clib-0.2.14.tar.gz", hash = "sha256:803f5044b13602d58ea378576dd75aa759f52116a0232608e8fdada4da33752e", size = 225394, upload-time = "2025-09-22T19:51:23.753Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b4/56/35a0a752415ae01992c68f5a6513bdef0e1b6fbdb60d7619342ce12346a0/ruamel.yaml.clib-0.2.14-cp310-cp310-macosx_10_9_universal2.whl", hash = "sha256:f8b2acb0ffdd2ce8208accbec2dca4a06937d556fdcaefd6473ba1b5daa7e3c4", size = 269216, upload-time = "2025-09-23T14:24:09.742Z" }, - { url = "https://files.pythonhosted.org/packages/98/6a/9a68184ab93619f4607ff1675e4ef01e8accfcbff0d482f4ca44c10d8eab/ruamel.yaml.clib-0.2.14-cp310-cp310-macosx_13_0_arm64.whl", hash = "sha256:aef953f3b8bd0b50bd52a2e52fb54a6a2171a1889d8dea4a5959d46c6624c451", size = 137092, upload-time = "2025-09-22T19:50:26.906Z" }, - { url = "https://files.pythonhosted.org/packages/2b/3f/cfed5f088628128a9ec66f46794fd4d165642155c7b78c26d83b16c6bf7b/ruamel.yaml.clib-0.2.14-cp310-cp310-manylinux2014_aarch64.whl", hash = "sha256:a0ac90efbc7a77b0d796c03c8cc4e62fd710b3f1e4c32947713ef2ef52e09543", size = 633768, upload-time = "2025-09-22T19:50:31.228Z" }, - { url = "https://files.pythonhosted.org/packages/3a/d5/5ce2cc156c1da48160171968d91f066d305840fbf930ee955a509d025a44/ruamel.yaml.clib-0.2.14-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:9bf6b699223afe6c7fe9f2ef76e0bfa6dd892c21e94ce8c957478987ade76cd8", size = 721253, upload-time = "2025-09-22T19:50:28.776Z" }, - { url = "https://files.pythonhosted.org/packages/2b/71/d0b56bc902b38ebe4be8e270f730f929eec4edaf8a0fa7028f4ef64fa950/ruamel.yaml.clib-0.2.14-cp310-cp310-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:d73a0187718f6eec5b2f729b0f98e4603f7bd9c48aa65d01227d1a5dcdfbe9e8", size = 683823, upload-time = "2025-09-22T19:50:29.993Z" }, - { url = "https://files.pythonhosted.org/packages/4b/db/1f37449dd89c540218598316ccafc1a0aed60215e72efa315c5367cfd015/ruamel.yaml.clib-0.2.14-cp310-cp310-musllinux_1_2_aarch64.whl", hash = "sha256:81f6d3b19bc703679a5705c6a16dabdc79823c71d791d73c65949be7f3012c02", size = 690370, upload-time = "2025-09-23T18:42:46.797Z" }, - { url = "https://files.pythonhosted.org/packages/5d/53/c498b30f35efcd9f47cb084d7ad9374f2b907470f73913dec6396b81397d/ruamel.yaml.clib-0.2.14-cp310-cp310-musllinux_1_2_i686.whl", hash = "sha256:b28caeaf3e670c08cb7e8de221266df8494c169bd6ed8875493fab45be9607a4", size = 703578, upload-time = "2025-09-22T19:50:32.531Z" }, - { url = "https://files.pythonhosted.org/packages/34/79/492cfad9baed68914840c39e5f3c1cc251f51a897ddb3f532601215cbb12/ruamel.yaml.clib-0.2.14-cp310-cp310-musllinux_1_2_x86_64.whl", hash = "sha256:94f3efb718f8f49b031f2071ec7a27dd20cbfe511b4dfd54ecee54c956da2b31", size = 722544, upload-time = "2025-09-22T19:50:34.157Z" }, - { url = "https://files.pythonhosted.org/packages/ca/f5/479ebfd5ba396e209ade90f7282d84b90c57b3e07be8dc6fcd02a6df7ffc/ruamel.yaml.clib-0.2.14-cp310-cp310-win32.whl", hash = "sha256:27c070cf3888e90d992be75dd47292ff9aa17dafd36492812a6a304a1aedc182", size = 100375, upload-time = "2025-09-22T19:50:36.832Z" }, - { url = "https://files.pythonhosted.org/packages/57/31/a044520fdb3bd409889f67f1efebda0658033c7ab3f390cee37531cc9a9e/ruamel.yaml.clib-0.2.14-cp310-cp310-win_amd64.whl", hash = "sha256:4f4a150a737fccae13fb51234d41304ff2222e3b7d4c8e9428ed1a6ab48389b8", size = 118129, upload-time = "2025-09-22T19:50:35.545Z" }, - { url = "https://files.pythonhosted.org/packages/b3/9f/3c51e9578b8c36fcc4bdd271a1a5bb65963a74a4b6ad1a989768a22f6c2a/ruamel.yaml.clib-0.2.14-cp311-cp311-macosx_10_9_universal2.whl", hash = "sha256:5bae1a073ca4244620425cd3d3aa9746bde590992b98ee8c7c8be8c597ca0d4e", size = 270207, upload-time = "2025-09-23T14:24:11.445Z" }, - { url = "https://files.pythonhosted.org/packages/4a/16/cb02815bc2ae9c66760c0c061d23c7358f9ba51dae95ac85247662b7fbe2/ruamel.yaml.clib-0.2.14-cp311-cp311-macosx_13_0_arm64.whl", hash = "sha256:0a54e5e40a7a691a426c2703b09b0d61a14294d25cfacc00631aa6f9c964df0d", size = 137780, upload-time = "2025-09-22T19:50:37.734Z" }, - { url = "https://files.pythonhosted.org/packages/31/c6/fc687cd1b93bff8e40861eea46d6dc1a6a778d9a085684e4045ff26a8e40/ruamel.yaml.clib-0.2.14-cp311-cp311-manylinux2014_aarch64.whl", hash = "sha256:10d9595b6a19778f3269399eff6bab642608e5966183abc2adbe558a42d4efc9", size = 641590, upload-time = "2025-09-22T19:50:41.978Z" }, - { url = "https://files.pythonhosted.org/packages/45/5d/65a2bc08b709b08576b3f307bf63951ee68a8e047cbbda6f1c9864ecf9a7/ruamel.yaml.clib-0.2.14-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:dba72975485f2b87b786075e18a6e5d07dc2b4d8973beb2732b9b2816f1bad70", size = 738090, upload-time = "2025-09-22T19:50:39.152Z" }, - { url = "https://files.pythonhosted.org/packages/fb/d0/a70a03614d9a6788a3661ab1538879ed2aae4e84d861f101243116308a37/ruamel.yaml.clib-0.2.14-cp311-cp311-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:29757bdb7c142f9595cc1b62ec49a3d1c83fab9cef92db52b0ccebaad4eafb98", size = 700744, upload-time = "2025-09-22T19:50:40.811Z" }, - { url = "https://files.pythonhosted.org/packages/77/30/c93fa457611f79946d5cb6cc97493ca5425f3f21891d7b1f9b44eaa1b38e/ruamel.yaml.clib-0.2.14-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:557df28dbccf79b152fe2d1b935f6063d9cc431199ea2b0e84892f35c03bb0ee", size = 742321, upload-time = "2025-09-23T18:42:48.916Z" }, - { url = "https://files.pythonhosted.org/packages/40/85/e2c54ad637117cd13244a4649946eaa00f32edcb882d1f92df90e079ab00/ruamel.yaml.clib-0.2.14-cp311-cp311-musllinux_1_2_i686.whl", hash = "sha256:26a8de280ab0d22b6e3ec745b4a5a07151a0f74aad92dd76ab9c8d8d7087720d", size = 743805, upload-time = "2025-09-22T19:50:43.58Z" }, - { url = "https://files.pythonhosted.org/packages/81/50/f899072c38877d8ef5382e0b3d47f8c4346226c1f52d6945d6f64fec6a2f/ruamel.yaml.clib-0.2.14-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:e501c096aa3889133d674605ebd018471bc404a59cbc17da3c5924421c54d97c", size = 769529, upload-time = "2025-09-22T19:50:45.707Z" }, - { url = "https://files.pythonhosted.org/packages/99/7c/96d4b5075e30c65ea2064e40c2d657c7c235d7b6ef18751cf89a935b9041/ruamel.yaml.clib-0.2.14-cp311-cp311-win32.whl", hash = "sha256:915748cfc25b8cfd81b14d00f4bfdb2ab227a30d6d43459034533f4d1c207a2a", size = 100256, upload-time = "2025-09-22T19:50:48.26Z" }, - { url = "https://files.pythonhosted.org/packages/7d/8c/73ee2babd04e8bfcf1fd5c20aa553d18bf0ebc24b592b4f831d12ae46cc0/ruamel.yaml.clib-0.2.14-cp311-cp311-win_amd64.whl", hash = "sha256:4ccba93c1e5a40af45b2f08e4591969fa4697eae951c708f3f83dcbf9f6c6bb1", size = 118234, upload-time = "2025-09-22T19:50:47.019Z" }, - { url = "https://files.pythonhosted.org/packages/b4/42/ccfb34a25289afbbc42017e4d3d4288e61d35b2e00cfc6b92974a6a1f94b/ruamel.yaml.clib-0.2.14-cp312-cp312-macosx_10_13_universal2.whl", hash = "sha256:6aeadc170090ff1889f0d2c3057557f9cd71f975f17535c26a5d37af98f19c27", size = 271775, upload-time = "2025-09-23T14:24:12.771Z" }, - { url = "https://files.pythonhosted.org/packages/82/73/e628a92e80197ff6a79ab81ec3fa00d4cc082d58ab78d3337b7ba7043301/ruamel.yaml.clib-0.2.14-cp312-cp312-macosx_14_0_arm64.whl", hash = "sha256:5e56ac47260c0eed992789fa0b8efe43404a9adb608608631a948cee4fc2b052", size = 138842, upload-time = "2025-09-22T19:50:49.156Z" }, - { url = "https://files.pythonhosted.org/packages/2b/c5/346c7094344a60419764b4b1334d9e0285031c961176ff88ffb652405b0c/ruamel.yaml.clib-0.2.14-cp312-cp312-manylinux2014_aarch64.whl", hash = "sha256:a911aa73588d9a8b08d662b9484bc0567949529824a55d3885b77e8dd62a127a", size = 647404, upload-time = "2025-09-22T19:50:52.921Z" }, - { url = "https://files.pythonhosted.org/packages/df/99/65080c863eb06d4498de3d6c86f3e90595e02e159fd8529f1565f56cfe2c/ruamel.yaml.clib-0.2.14-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:a05ba88adf3d7189a974b2de7a9d56731548d35dc0a822ec3dc669caa7019b29", size = 753141, upload-time = "2025-09-22T19:50:50.294Z" }, - { url = "https://files.pythonhosted.org/packages/3d/e3/0de85f3e3333f8e29e4b10244374a202a87665d1131798946ee22cf05c7c/ruamel.yaml.clib-0.2.14-cp312-cp312-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:fb04c5650de6668b853623eceadcdb1a9f2fee381f5d7b6bc842ee7c239eeec4", size = 703477, upload-time = "2025-09-22T19:50:51.508Z" }, - { url = "https://files.pythonhosted.org/packages/d9/25/0d2f09d8833c7fd77ab8efeff213093c16856479a9d293180a0d89f6bed9/ruamel.yaml.clib-0.2.14-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:df3ec9959241d07bc261f4983d25a1205ff37703faf42b474f15d54d88b4f8c9", size = 741157, upload-time = "2025-09-23T18:42:50.408Z" }, - { url = "https://files.pythonhosted.org/packages/d3/8c/959f10c2e2153cbdab834c46e6954b6dd9e3b109c8f8c0a3cf1618310985/ruamel.yaml.clib-0.2.14-cp312-cp312-musllinux_1_2_i686.whl", hash = "sha256:fbc08c02e9b147a11dfcaa1ac8a83168b699863493e183f7c0c8b12850b7d259", size = 745859, upload-time = "2025-09-22T19:50:54.497Z" }, - { url = "https://files.pythonhosted.org/packages/ed/6b/e580a7c18b485e1a5f30a32cda96b20364b0ba649d9d2baaf72f8bd21f83/ruamel.yaml.clib-0.2.14-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:c099cafc1834d3c5dac305865d04235f7c21c167c8dd31ebc3d6bbc357e2f023", size = 770200, upload-time = "2025-09-22T19:50:55.718Z" }, - { url = "https://files.pythonhosted.org/packages/ef/44/3455eebc761dc8e8fdced90f2b0a3fa61e32ba38b50de4130e2d57db0f21/ruamel.yaml.clib-0.2.14-cp312-cp312-win32.whl", hash = "sha256:b5b0f7e294700b615a3bcf6d28b26e6da94e8eba63b079f4ec92e9ba6c0d6b54", size = 98829, upload-time = "2025-09-22T19:50:58.895Z" }, - { url = "https://files.pythonhosted.org/packages/76/ab/5121f7f3b651db93de546f8c982c241397aad0a4765d793aca1dac5eadee/ruamel.yaml.clib-0.2.14-cp312-cp312-win_amd64.whl", hash = "sha256:a37f40a859b503304dd740686359fcf541d6fb3ff7fc10f539af7f7150917c68", size = 115570, upload-time = "2025-09-22T19:50:57.981Z" }, - { url = "https://files.pythonhosted.org/packages/d7/ae/e3811f05415594025e96000349d3400978adaed88d8f98d494352d9761ee/ruamel.yaml.clib-0.2.14-cp313-cp313-macosx_10_13_universal2.whl", hash = "sha256:7e4f9da7e7549946e02a6122dcad00b7c1168513acb1f8a726b1aaf504a99d32", size = 269205, upload-time = "2025-09-23T14:24:15.06Z" }, - { url = "https://files.pythonhosted.org/packages/72/06/7d51f4688d6d72bb72fa74254e1593c4f5ebd0036be5b41fe39315b275e9/ruamel.yaml.clib-0.2.14-cp313-cp313-macosx_15_0_arm64.whl", hash = "sha256:dd7546c851e59c06197a7c651335755e74aa383a835878ca86d2c650c07a2f85", size = 137417, upload-time = "2025-09-22T19:50:59.82Z" }, - { url = "https://files.pythonhosted.org/packages/5a/08/b4499234a420ef42960eeb05585df5cc7eb25ccb8c980490b079e6367050/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux2014_aarch64.whl", hash = "sha256:1c1acc3a0209ea9042cc3cfc0790edd2eddd431a2ec3f8283d081e4d5018571e", size = 642558, upload-time = "2025-09-22T19:51:03.388Z" }, - { url = "https://files.pythonhosted.org/packages/b6/ba/1975a27dedf1c4c33306ee67c948121be8710b19387aada29e2f139c43ee/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux_2_17_x86_64.manylinux2014_x86_64.whl", hash = "sha256:2070bf0ad1540d5c77a664de07ebcc45eebd1ddcab71a7a06f26936920692beb", size = 744087, upload-time = "2025-09-22T19:51:00.897Z" }, - { url = "https://files.pythonhosted.org/packages/20/15/8a19a13d27f3bd09fa18813add8380a29115a47b553845f08802959acbce/ruamel.yaml.clib-0.2.14-cp313-cp313-manylinux_2_5_i686.manylinux1_i686.manylinux_2_17_i686.manylinux2014_i686.whl", hash = "sha256:9bd8fe07f49c170e09d76773fb86ad9135e0beee44f36e1576a201b0676d3d1d", size = 699709, upload-time = "2025-09-22T19:51:02.075Z" }, - { url = "https://files.pythonhosted.org/packages/19/ee/8d6146a079ad21e534b5083c9ee4a4c8bec42f79cf87594b60978286b39a/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:ff86876889ea478b1381089e55cf9e345707b312beda4986f823e1d95e8c0f59", size = 708926, upload-time = "2025-09-23T18:42:51.707Z" }, - { url = "https://files.pythonhosted.org/packages/a9/f5/426b714abdc222392e68f3b8ad323930d05a214a27c7e7a0f06c69126401/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_i686.whl", hash = "sha256:1f118b707eece8cf84ecbc3e3ec94d9db879d85ed608f95870d39b2d2efa5dca", size = 740202, upload-time = "2025-09-22T19:51:04.673Z" }, - { url = "https://files.pythonhosted.org/packages/3d/ac/3c5c2b27a183f4fda8a57c82211721c016bcb689a4a175865f7646db9f94/ruamel.yaml.clib-0.2.14-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:b30110b29484adc597df6bd92a37b90e63a8c152ca8136aad100a02f8ba6d1b6", size = 765196, upload-time = "2025-09-22T19:51:05.916Z" }, - { url = "https://files.pythonhosted.org/packages/92/2e/06f56a71fd55021c993ed6e848c9b2e5e9cfce180a42179f0ddd28253f7c/ruamel.yaml.clib-0.2.14-cp313-cp313-win32.whl", hash = "sha256:f4e97a1cf0b7a30af9e1d9dad10a5671157b9acee790d9e26996391f49b965a2", size = 98635, upload-time = "2025-09-22T19:51:08.183Z" }, - { url = "https://files.pythonhosted.org/packages/51/79/76aba16a1689b50528224b182f71097ece338e7a4ab55e84c2e73443b78a/ruamel.yaml.clib-0.2.14-cp313-cp313-win_amd64.whl", hash = "sha256:090782b5fb9d98df96509eecdbcaffd037d47389a89492320280d52f91330d78", size = 115238, upload-time = "2025-09-22T19:51:07.081Z" }, - { url = "https://files.pythonhosted.org/packages/21/e2/a59ff65c26aaf21a24eb38df777cb9af5d87ba8fc8107c163c2da9d1e85e/ruamel.yaml.clib-0.2.14-cp314-cp314-macosx_10_15_universal2.whl", hash = "sha256:7df6f6e9d0e33c7b1d435defb185095386c469109de723d514142632a7b9d07f", size = 271441, upload-time = "2025-09-23T14:24:16.498Z" }, - { url = "https://files.pythonhosted.org/packages/6b/fa/3234f913fe9a6525a7b97c6dad1f51e72b917e6872e051a5e2ffd8b16fbb/ruamel.yaml.clib-0.2.14-cp314-cp314-macosx_15_0_arm64.whl", hash = "sha256:70eda7703b8126f5e52fcf276e6c0f40b0d314674f896fc58c47b0aef2b9ae83", size = 137970, upload-time = "2025-09-22T19:51:09.472Z" }, - { url = "https://files.pythonhosted.org/packages/ef/ec/4edbf17ac2c87fa0845dd366ef8d5852b96eb58fcd65fc1ecf5fe27b4641/ruamel.yaml.clib-0.2.14-cp314-cp314-musllinux_1_2_i686.whl", hash = "sha256:a0cb71ccc6ef9ce36eecb6272c81afdc2f565950cdcec33ae8e6cd8f7fc86f27", size = 739639, upload-time = "2025-09-22T19:51:10.566Z" }, - { url = "https://files.pythonhosted.org/packages/15/18/b0e1fafe59051de9e79cdd431863b03593ecfa8341c110affad7c8121efc/ruamel.yaml.clib-0.2.14-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:e7cb9ad1d525d40f7d87b6df7c0ff916a66bc52cb61b66ac1b2a16d0c1b07640", size = 764456, upload-time = "2025-09-22T19:51:11.736Z" }, - { url = "https://files.pythonhosted.org/packages/e7/cd/150fdb96b8fab27fe08d8a59fe67554568727981806e6bc2677a16081ec7/ruamel_yaml_clib-0.2.14-cp314-cp314-win32.whl", hash = "sha256:9b4104bf43ca0cd4e6f738cb86326a3b2f6eef00f417bd1e7efb7bdffe74c539", size = 102394, upload-time = "2025-11-14T21:57:36.703Z" }, - { url = "https://files.pythonhosted.org/packages/bd/e6/a3fa40084558c7e1dc9546385f22a93949c890a8b2e445b2ba43935f51da/ruamel_yaml_clib-0.2.14-cp314-cp314-win_amd64.whl", hash = "sha256:13997d7d354a9890ea1ec5937a219817464e5cc344805b37671562a401ca3008", size = 122673, upload-time = "2025-11-14T21:57:38.177Z" }, -] - -[[package]] -name = "setuptools" -version = "80.10.2" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/76/95/faf61eb8363f26aa7e1d762267a8d602a1b26d4f3a1e758e92cb3cb8b054/setuptools-80.10.2.tar.gz", hash = "sha256:8b0e9d10c784bf7d262c4e5ec5d4ec94127ce206e8738f29a437945fbc219b70", size = 1200343, upload-time = "2026-01-25T22:38:17.252Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/94/b8/f1f62a5e3c0ad2ff1d189590bfa4c46b4f3b6e49cef6f26c6ee4e575394d/setuptools-80.10.2-py3-none-any.whl", hash = "sha256:95b30ddfb717250edb492926c92b5221f7ef3fbcc2b07579bcd4a27da21d0173", size = 1064234, upload-time = "2026-01-25T22:38:15.216Z" }, -] - -[[package]] -name = "setuptools-scm" -version = "9.2.2" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "packaging" }, - { name = "setuptools" }, - { name = "tomli", marker = "python_full_version < '3.11'" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/7b/b1/19587742aad604f1988a8a362e660e8c3ac03adccdb71c96d86526e5eb62/setuptools_scm-9.2.2.tar.gz", hash = "sha256:1c674ab4665686a0887d7e24c03ab25f24201c213e82ea689d2f3e169ef7ef57", size = 203385, upload-time = "2025-10-19T22:08:05.608Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3d/ea/ac2bf868899d0d2e82ef72d350d97a846110c709bacf2d968431576ca915/setuptools_scm-9.2.2-py3-none-any.whl", hash = "sha256:30e8f84d2ab1ba7cb0e653429b179395d0c33775d54807fc5f1dd6671801aef7", size = 62975, upload-time = "2025-10-19T22:08:04.007Z" }, -] - -[[package]] -name = "six" -version = "1.17.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/94/e7/b2c673351809dca68a0e064b6af791aa332cf192da575fd474ed7d6f16a2/six-1.17.0.tar.gz", hash = "sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81", size = 34031, upload-time = "2024-12-04T17:35:28.174Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/b7/ce/149a00dd41f10bc29e5921b496af8b574d8413afcd5e30dfa0ed46c2cc5e/six-1.17.0-py2.py3-none-any.whl", hash = "sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274", size = 11050, upload-time = "2024-12-04T17:35:26.475Z" }, -] - -[[package]] -name = "sly" -version = "0.5" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/41/8a/59e943f7b27904c7756a7b565ffbd55f3841f5cd3d2da2b2b0713c49e488/sly-0.5.tar.gz", hash = "sha256:251d42015e8507158aec2164f06035df4a82b0314ce6450f457d7125e7649024", size = 66702, upload-time = "2022-10-25T14:35:30.592Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/8e/4d/c96d807295183f2360329cd8d8bf5e8072c53d664125b3858c04153f026e/sly-0.5-py3-none-any.whl", hash = "sha256:20485483259eec7f6ba85ff4d2e96a4e50c6621902667fc2695cc8bc2a3e5133", size = 28864, upload-time = "2022-10-25T14:35:28.054Z" }, -] - -[[package]] -name = "sortedcontainers" -version = "2.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e8/c4/ba2f8066cceb6f23394729afe52f3bf7adec04bf9ed2c820b39e19299111/sortedcontainers-2.4.0.tar.gz", hash = "sha256:25caa5a06cc30b6b83d11423433f65d1f9d76c4c6a0c90e3379eaa43b9bfdb88", size = 30594, upload-time = "2021-05-16T22:03:42.897Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/32/46/9cb0e58b2deb7f82b84065f37f3bffeb12413f947f9388e4cac22c4621ce/sortedcontainers-2.4.0-py2.py3-none-any.whl", hash = "sha256:a163dcaede0f1c021485e957a39245190e74249897e2ae4b2aa38595db237ee0", size = 29575, upload-time = "2021-05-16T22:03:41.177Z" }, -] - -[[package]] -name = "spsdk" -version = "3.7.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "asn1crypto" }, - { name = "bincopy" }, - { name = "bitstring" }, - { name = "click" }, - { name = "click-command-tree" }, - { name = "click-option-group" }, - { name = "colorama" }, - { name = "crcmod" }, - { name = "cryptography" }, - { name = "deepmerge" }, - { name = "fastjsonschema" }, - { name = "filelock" }, - { name = "hexdump" }, - { name = "importlib-metadata" }, - { name = "libusbsio" }, - { name = "libuuu" }, - { name = "oscrypto" }, - { name = "packaging" }, - { name = "platformdirs" }, - { name = "prettytable" }, - { name = "pyasn1" }, - { name = "pyserial" }, - { name = "requests" }, - { name = "ruamel-yaml" }, - { name = "ruamel-yaml-clib" }, - { name = "setuptools" }, - { name = "setuptools-scm" }, - { name = "sly" }, - { name = "spsdk-mcu-link" }, - { name = "spsdk-pyocd" }, - { name = "typing-extensions" }, - { name = "x690" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/1b/4b/29f7a5166ad88f9c359722e68b73032aec3bef45c79cef1966c7e0ba11c1/spsdk-3.7.0.tar.gz", hash = "sha256:a2c402544bc9fb943b574df2a478165518847034fff8da70c2e8d84c8f21f98c", size = 2431901, upload-time = "2026-01-30T13:18:07.539Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/07/50/b0f83d01b79d836ab2ee4e2d0c83dd3dbeec4422124f07a1903978084878/spsdk-3.7.0-py3-none-any.whl", hash = "sha256:e851a5459de59ae7264add240337965b0941f2c56998cec327c45c272a7393ac", size = 2789135, upload-time = "2026-01-30T13:18:05.689Z" }, -] - -[[package]] -name = "spsdk-mcu-link" -version = "0.6.6" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "hidapi" }, - { name = "libusb-package" }, - { name = "pyusb" }, - { name = "wasmtime" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/47/bb/bb31e4657264ecc562daa5d04a91d43a30446398b9c2bd3a070b041e688b/spsdk_mcu_link-0.6.6.tar.gz", hash = "sha256:2884aa849245b471420ce16cf99c748215f49462b9b5acd5a8420e4fd832010b", size = 165083, upload-time = "2025-08-29T06:24:13.722Z" } - -[[package]] -name = "spsdk-pyocd" -version = "0.3.4" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "pyocd" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/3a/b6/5cdfe417b5f4fbeb818f0be8e7e98bfc1a71d5f9fb0b4c841bf923087e6c/spsdk_pyocd-0.3.4.tar.gz", hash = "sha256:8efcd7bbacfda28da81a8883802596714df25ff3ee5a6e7a309cc870c5828133", size = 8169, upload-time = "2025-11-28T14:37:38.118Z" } - -[[package]] -name = "t61codec" -version = "1.0.1" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/4d/3d/58386307e57294005c8fe2e7b29d97f9094efcb122ab1ff4a368816b45fa/t61codec-1.0.1.tar.gz", hash = "sha256:4d854f40017ef39e699291a57a9891c74630facb370b94238284eb9a475ae23f", size = 5713, upload-time = "2019-12-08T17:04:12.906Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/01/de/47bfc18604861278a97a8381262da4b6a9b98b9f645695ebaf3f22de2558/t61codec-1.0.1-py2.py3-none-any.whl", hash = "sha256:4dae780d65086a10ff822b14ecebb762defe478645a248b74980ced87c85f723", size = 6006, upload-time = "2019-12-08T17:04:07.574Z" }, -] - -[[package]] -name = "tomli" -version = "2.4.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/82/30/31573e9457673ab10aa432461bee537ce6cef177667deca369efb79df071/tomli-2.4.0.tar.gz", hash = "sha256:aa89c3f6c277dd275d8e243ad24f3b5e701491a860d5121f2cdd399fbb31fc9c", size = 17477, upload-time = "2026-01-11T11:22:38.165Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/3c/d9/3dc2289e1f3b32eb19b9785b6a006b28ee99acb37d1d47f78d4c10e28bf8/tomli-2.4.0-cp311-cp311-macosx_10_9_x86_64.whl", hash = "sha256:b5ef256a3fd497d4973c11bf142e9ed78b150d36f5773f1ca6088c230ffc5867", size = 153663, upload-time = "2026-01-11T11:21:45.27Z" }, - { url = "https://files.pythonhosted.org/packages/51/32/ef9f6845e6b9ca392cd3f64f9ec185cc6f09f0a2df3db08cbe8809d1d435/tomli-2.4.0-cp311-cp311-macosx_11_0_arm64.whl", hash = "sha256:5572e41282d5268eb09a697c89a7bee84fae66511f87533a6f88bd2f7b652da9", size = 148469, upload-time = "2026-01-11T11:21:46.873Z" }, - { url = "https://files.pythonhosted.org/packages/d6/c2/506e44cce89a8b1b1e047d64bd495c22c9f71f21e05f380f1a950dd9c217/tomli-2.4.0-cp311-cp311-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:551e321c6ba03b55676970b47cb1b73f14a0a4dce6a3e1a9458fd6d921d72e95", size = 236039, upload-time = "2026-01-11T11:21:48.503Z" }, - { url = "https://files.pythonhosted.org/packages/b3/40/e1b65986dbc861b7e986e8ec394598187fa8aee85b1650b01dd925ca0be8/tomli-2.4.0-cp311-cp311-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:5e3f639a7a8f10069d0e15408c0b96a2a828cfdec6fca05296ebcdcc28ca7c76", size = 243007, upload-time = "2026-01-11T11:21:49.456Z" }, - { url = "https://files.pythonhosted.org/packages/9c/6f/6e39ce66b58a5b7ae572a0f4352ff40c71e8573633deda43f6a379d56b3e/tomli-2.4.0-cp311-cp311-musllinux_1_2_aarch64.whl", hash = "sha256:1b168f2731796b045128c45982d3a4874057626da0e2ef1fdd722848b741361d", size = 240875, upload-time = "2026-01-11T11:21:50.755Z" }, - { url = "https://files.pythonhosted.org/packages/aa/ad/cb089cb190487caa80204d503c7fd0f4d443f90b95cf4ef5cf5aa0f439b0/tomli-2.4.0-cp311-cp311-musllinux_1_2_x86_64.whl", hash = "sha256:133e93646ec4300d651839d382d63edff11d8978be23da4cc106f5a18b7d0576", size = 246271, upload-time = "2026-01-11T11:21:51.81Z" }, - { url = "https://files.pythonhosted.org/packages/0b/63/69125220e47fd7a3a27fd0de0c6398c89432fec41bc739823bcc66506af6/tomli-2.4.0-cp311-cp311-win32.whl", hash = "sha256:b6c78bdf37764092d369722d9946cb65b8767bfa4110f902a1b2542d8d173c8a", size = 96770, upload-time = "2026-01-11T11:21:52.647Z" }, - { url = "https://files.pythonhosted.org/packages/1e/0d/a22bb6c83f83386b0008425a6cd1fa1c14b5f3dd4bad05e98cf3dbbf4a64/tomli-2.4.0-cp311-cp311-win_amd64.whl", hash = "sha256:d3d1654e11d724760cdb37a3d7691f0be9db5fbdaef59c9f532aabf87006dbaa", size = 107626, upload-time = "2026-01-11T11:21:53.459Z" }, - { url = "https://files.pythonhosted.org/packages/2f/6d/77be674a3485e75cacbf2ddba2b146911477bd887dda9d8c9dfb2f15e871/tomli-2.4.0-cp311-cp311-win_arm64.whl", hash = "sha256:cae9c19ed12d4e8f3ebf46d1a75090e4c0dc16271c5bce1c833ac168f08fb614", size = 94842, upload-time = "2026-01-11T11:21:54.831Z" }, - { url = "https://files.pythonhosted.org/packages/3c/43/7389a1869f2f26dba52404e1ef13b4784b6b37dac93bac53457e3ff24ca3/tomli-2.4.0-cp312-cp312-macosx_10_13_x86_64.whl", hash = "sha256:920b1de295e72887bafa3ad9f7a792f811847d57ea6b1215154030cf131f16b1", size = 154894, upload-time = "2026-01-11T11:21:56.07Z" }, - { url = "https://files.pythonhosted.org/packages/e9/05/2f9bf110b5294132b2edf13fe6ca6ae456204f3d749f623307cbb7a946f2/tomli-2.4.0-cp312-cp312-macosx_11_0_arm64.whl", hash = "sha256:7d6d9a4aee98fac3eab4952ad1d73aee87359452d1c086b5ceb43ed02ddb16b8", size = 149053, upload-time = "2026-01-11T11:21:57.467Z" }, - { url = "https://files.pythonhosted.org/packages/e8/41/1eda3ca1abc6f6154a8db4d714a4d35c4ad90adc0bcf700657291593fbf3/tomli-2.4.0-cp312-cp312-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:36b9d05b51e65b254ea6c2585b59d2c4cb91c8a3d91d0ed0f17591a29aaea54a", size = 243481, upload-time = "2026-01-11T11:21:58.661Z" }, - { url = "https://files.pythonhosted.org/packages/d2/6d/02ff5ab6c8868b41e7d4b987ce2b5f6a51d3335a70aa144edd999e055a01/tomli-2.4.0-cp312-cp312-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1c8a885b370751837c029ef9bc014f27d80840e48bac415f3412e6593bbc18c1", size = 251720, upload-time = "2026-01-11T11:22:00.178Z" }, - { url = "https://files.pythonhosted.org/packages/7b/57/0405c59a909c45d5b6f146107c6d997825aa87568b042042f7a9c0afed34/tomli-2.4.0-cp312-cp312-musllinux_1_2_aarch64.whl", hash = "sha256:8768715ffc41f0008abe25d808c20c3d990f42b6e2e58305d5da280ae7d1fa3b", size = 247014, upload-time = "2026-01-11T11:22:01.238Z" }, - { url = "https://files.pythonhosted.org/packages/2c/0e/2e37568edd944b4165735687cbaf2fe3648129e440c26d02223672ee0630/tomli-2.4.0-cp312-cp312-musllinux_1_2_x86_64.whl", hash = "sha256:7b438885858efd5be02a9a133caf5812b8776ee0c969fea02c45e8e3f296ba51", size = 251820, upload-time = "2026-01-11T11:22:02.727Z" }, - { url = "https://files.pythonhosted.org/packages/5a/1c/ee3b707fdac82aeeb92d1a113f803cf6d0f37bdca0849cb489553e1f417a/tomli-2.4.0-cp312-cp312-win32.whl", hash = "sha256:0408e3de5ec77cc7f81960c362543cbbd91ef883e3138e81b729fc3eea5b9729", size = 97712, upload-time = "2026-01-11T11:22:03.777Z" }, - { url = "https://files.pythonhosted.org/packages/69/13/c07a9177d0b3bab7913299b9278845fc6eaaca14a02667c6be0b0a2270c8/tomli-2.4.0-cp312-cp312-win_amd64.whl", hash = "sha256:685306e2cc7da35be4ee914fd34ab801a6acacb061b6a7abca922aaf9ad368da", size = 108296, upload-time = "2026-01-11T11:22:04.86Z" }, - { url = "https://files.pythonhosted.org/packages/18/27/e267a60bbeeee343bcc279bb9e8fbed0cbe224bc7b2a3dc2975f22809a09/tomli-2.4.0-cp312-cp312-win_arm64.whl", hash = "sha256:5aa48d7c2356055feef06a43611fc401a07337d5b006be13a30f6c58f869e3c3", size = 94553, upload-time = "2026-01-11T11:22:05.854Z" }, - { url = "https://files.pythonhosted.org/packages/34/91/7f65f9809f2936e1f4ce6268ae1903074563603b2a2bd969ebbda802744f/tomli-2.4.0-cp313-cp313-macosx_10_13_x86_64.whl", hash = "sha256:84d081fbc252d1b6a982e1870660e7330fb8f90f676f6e78b052ad4e64714bf0", size = 154915, upload-time = "2026-01-11T11:22:06.703Z" }, - { url = "https://files.pythonhosted.org/packages/20/aa/64dd73a5a849c2e8f216b755599c511badde80e91e9bc2271baa7b2cdbb1/tomli-2.4.0-cp313-cp313-macosx_11_0_arm64.whl", hash = "sha256:9a08144fa4cba33db5255f9b74f0b89888622109bd2776148f2597447f92a94e", size = 149038, upload-time = "2026-01-11T11:22:07.56Z" }, - { url = "https://files.pythonhosted.org/packages/9e/8a/6d38870bd3d52c8d1505ce054469a73f73a0fe62c0eaf5dddf61447e32fa/tomli-2.4.0-cp313-cp313-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:c73add4bb52a206fd0c0723432db123c0c75c280cbd67174dd9d2db228ebb1b4", size = 242245, upload-time = "2026-01-11T11:22:08.344Z" }, - { url = "https://files.pythonhosted.org/packages/59/bb/8002fadefb64ab2669e5b977df3f5e444febea60e717e755b38bb7c41029/tomli-2.4.0-cp313-cp313-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:1fb2945cbe303b1419e2706e711b7113da57b7db31ee378d08712d678a34e51e", size = 250335, upload-time = "2026-01-11T11:22:09.951Z" }, - { url = "https://files.pythonhosted.org/packages/a5/3d/4cdb6f791682b2ea916af2de96121b3cb1284d7c203d97d92d6003e91c8d/tomli-2.4.0-cp313-cp313-musllinux_1_2_aarch64.whl", hash = "sha256:bbb1b10aa643d973366dc2cb1ad94f99c1726a02343d43cbc011edbfac579e7c", size = 245962, upload-time = "2026-01-11T11:22:11.27Z" }, - { url = "https://files.pythonhosted.org/packages/f2/4a/5f25789f9a460bd858ba9756ff52d0830d825b458e13f754952dd15fb7bb/tomli-2.4.0-cp313-cp313-musllinux_1_2_x86_64.whl", hash = "sha256:4cbcb367d44a1f0c2be408758b43e1ffb5308abe0ea222897d6bfc8e8281ef2f", size = 250396, upload-time = "2026-01-11T11:22:12.325Z" }, - { url = "https://files.pythonhosted.org/packages/aa/2f/b73a36fea58dfa08e8b3a268750e6853a6aac2a349241a905ebd86f3047a/tomli-2.4.0-cp313-cp313-win32.whl", hash = "sha256:7d49c66a7d5e56ac959cb6fc583aff0651094ec071ba9ad43df785abc2320d86", size = 97530, upload-time = "2026-01-11T11:22:13.865Z" }, - { url = "https://files.pythonhosted.org/packages/3b/af/ca18c134b5d75de7e8dc551c5234eaba2e8e951f6b30139599b53de9c187/tomli-2.4.0-cp313-cp313-win_amd64.whl", hash = "sha256:3cf226acb51d8f1c394c1b310e0e0e61fecdd7adcb78d01e294ac297dd2e7f87", size = 108227, upload-time = "2026-01-11T11:22:15.224Z" }, - { url = "https://files.pythonhosted.org/packages/22/c3/b386b832f209fee8073c8138ec50f27b4460db2fdae9ffe022df89a57f9b/tomli-2.4.0-cp313-cp313-win_arm64.whl", hash = "sha256:d20b797a5c1ad80c516e41bc1fb0443ddb5006e9aaa7bda2d71978346aeb9132", size = 94748, upload-time = "2026-01-11T11:22:16.009Z" }, - { url = "https://files.pythonhosted.org/packages/f3/c4/84047a97eb1004418bc10bdbcfebda209fca6338002eba2dc27cc6d13563/tomli-2.4.0-cp314-cp314-macosx_10_15_x86_64.whl", hash = "sha256:26ab906a1eb794cd4e103691daa23d95c6919cc2fa9160000ac02370cc9dd3f6", size = 154725, upload-time = "2026-01-11T11:22:17.269Z" }, - { url = "https://files.pythonhosted.org/packages/a8/5d/d39038e646060b9d76274078cddf146ced86dc2b9e8bbf737ad5983609a0/tomli-2.4.0-cp314-cp314-macosx_11_0_arm64.whl", hash = "sha256:20cedb4ee43278bc4f2fee6cb50daec836959aadaf948db5172e776dd3d993fc", size = 148901, upload-time = "2026-01-11T11:22:18.287Z" }, - { url = "https://files.pythonhosted.org/packages/73/e5/383be1724cb30f4ce44983d249645684a48c435e1cd4f8b5cded8a816d3c/tomli-2.4.0-cp314-cp314-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:39b0b5d1b6dd03684b3fb276407ebed7090bbec989fa55838c98560c01113b66", size = 243375, upload-time = "2026-01-11T11:22:19.154Z" }, - { url = "https://files.pythonhosted.org/packages/31/f0/bea80c17971c8d16d3cc109dc3585b0f2ce1036b5f4a8a183789023574f2/tomli-2.4.0-cp314-cp314-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:a26d7ff68dfdb9f87a016ecfd1e1c2bacbe3108f4e0f8bcd2228ef9a766c787d", size = 250639, upload-time = "2026-01-11T11:22:20.168Z" }, - { url = "https://files.pythonhosted.org/packages/2c/8f/2853c36abbb7608e3f945d8a74e32ed3a74ee3a1f468f1ffc7d1cb3abba6/tomli-2.4.0-cp314-cp314-musllinux_1_2_aarch64.whl", hash = "sha256:20ffd184fb1df76a66e34bd1b36b4a4641bd2b82954befa32fe8163e79f1a702", size = 246897, upload-time = "2026-01-11T11:22:21.544Z" }, - { url = "https://files.pythonhosted.org/packages/49/f0/6c05e3196ed5337b9fe7ea003e95fd3819a840b7a0f2bf5a408ef1dad8ed/tomli-2.4.0-cp314-cp314-musllinux_1_2_x86_64.whl", hash = "sha256:75c2f8bbddf170e8effc98f5e9084a8751f8174ea6ccf4fca5398436e0320bc8", size = 254697, upload-time = "2026-01-11T11:22:23.058Z" }, - { url = "https://files.pythonhosted.org/packages/f3/f5/2922ef29c9f2951883525def7429967fc4d8208494e5ab524234f06b688b/tomli-2.4.0-cp314-cp314-win32.whl", hash = "sha256:31d556d079d72db7c584c0627ff3a24c5d3fb4f730221d3444f3efb1b2514776", size = 98567, upload-time = "2026-01-11T11:22:24.033Z" }, - { url = "https://files.pythonhosted.org/packages/7b/31/22b52e2e06dd2a5fdbc3ee73226d763b184ff21fc24e20316a44ccc4d96b/tomli-2.4.0-cp314-cp314-win_amd64.whl", hash = "sha256:43e685b9b2341681907759cf3a04e14d7104b3580f808cfde1dfdb60ada85475", size = 108556, upload-time = "2026-01-11T11:22:25.378Z" }, - { url = "https://files.pythonhosted.org/packages/48/3d/5058dff3255a3d01b705413f64f4306a141a8fd7a251e5a495e3f192a998/tomli-2.4.0-cp314-cp314-win_arm64.whl", hash = "sha256:3d895d56bd3f82ddd6faaff993c275efc2ff38e52322ea264122d72729dca2b2", size = 96014, upload-time = "2026-01-11T11:22:26.138Z" }, - { url = "https://files.pythonhosted.org/packages/b8/4e/75dab8586e268424202d3a1997ef6014919c941b50642a1682df43204c22/tomli-2.4.0-cp314-cp314t-macosx_10_15_x86_64.whl", hash = "sha256:5b5807f3999fb66776dbce568cc9a828544244a8eb84b84b9bafc080c99597b9", size = 163339, upload-time = "2026-01-11T11:22:27.143Z" }, - { url = "https://files.pythonhosted.org/packages/06/e3/b904d9ab1016829a776d97f163f183a48be6a4deb87304d1e0116a349519/tomli-2.4.0-cp314-cp314t-macosx_11_0_arm64.whl", hash = "sha256:c084ad935abe686bd9c898e62a02a19abfc9760b5a79bc29644463eaf2840cb0", size = 159490, upload-time = "2026-01-11T11:22:28.399Z" }, - { url = "https://files.pythonhosted.org/packages/e3/5a/fc3622c8b1ad823e8ea98a35e3c632ee316d48f66f80f9708ceb4f2a0322/tomli-2.4.0-cp314-cp314t-manylinux2014_aarch64.manylinux_2_17_aarch64.manylinux_2_28_aarch64.whl", hash = "sha256:0f2e3955efea4d1cfbcb87bc321e00dc08d2bcb737fd1d5e398af111d86db5df", size = 269398, upload-time = "2026-01-11T11:22:29.345Z" }, - { url = "https://files.pythonhosted.org/packages/fd/33/62bd6152c8bdd4c305ad9faca48f51d3acb2df1f8791b1477d46ff86e7f8/tomli-2.4.0-cp314-cp314t-manylinux2014_x86_64.manylinux_2_17_x86_64.manylinux_2_28_x86_64.whl", hash = "sha256:0e0fe8a0b8312acf3a88077a0802565cb09ee34107813bba1c7cd591fa6cfc8d", size = 276515, upload-time = "2026-01-11T11:22:30.327Z" }, - { url = "https://files.pythonhosted.org/packages/4b/ff/ae53619499f5235ee4211e62a8d7982ba9e439a0fb4f2f351a93d67c1dd2/tomli-2.4.0-cp314-cp314t-musllinux_1_2_aarch64.whl", hash = "sha256:413540dce94673591859c4c6f794dfeaa845e98bf35d72ed59636f869ef9f86f", size = 273806, upload-time = "2026-01-11T11:22:32.56Z" }, - { url = "https://files.pythonhosted.org/packages/47/71/cbca7787fa68d4d0a9f7072821980b39fbb1b6faeb5f5cf02f4a5559fa28/tomli-2.4.0-cp314-cp314t-musllinux_1_2_x86_64.whl", hash = "sha256:0dc56fef0e2c1c470aeac5b6ca8cc7b640bb93e92d9803ddaf9ea03e198f5b0b", size = 281340, upload-time = "2026-01-11T11:22:33.505Z" }, - { url = "https://files.pythonhosted.org/packages/f5/00/d595c120963ad42474cf6ee7771ad0d0e8a49d0f01e29576ee9195d9ecdf/tomli-2.4.0-cp314-cp314t-win32.whl", hash = "sha256:d878f2a6707cc9d53a1be1414bbb419e629c3d6e67f69230217bb663e76b5087", size = 108106, upload-time = "2026-01-11T11:22:34.451Z" }, - { url = "https://files.pythonhosted.org/packages/de/69/9aa0c6a505c2f80e519b43764f8b4ba93b5a0bbd2d9a9de6e2b24271b9a5/tomli-2.4.0-cp314-cp314t-win_amd64.whl", hash = "sha256:2add28aacc7425117ff6364fe9e06a183bb0251b03f986df0e78e974047571fd", size = 120504, upload-time = "2026-01-11T11:22:35.764Z" }, - { url = "https://files.pythonhosted.org/packages/b3/9f/f1668c281c58cfae01482f7114a4b88d345e4c140386241a1a24dcc9e7bc/tomli-2.4.0-cp314-cp314t-win_arm64.whl", hash = "sha256:2b1e3b80e1d5e52e40e9b924ec43d81570f0e7d09d11081b797bc4692765a3d4", size = 99561, upload-time = "2026-01-11T11:22:36.624Z" }, - { url = "https://files.pythonhosted.org/packages/23/d1/136eb2cb77520a31e1f64cbae9d33ec6df0d78bdf4160398e86eec8a8754/tomli-2.4.0-py3-none-any.whl", hash = "sha256:1f776e7d669ebceb01dee46484485f43a4048746235e683bcdffacdf1fb4785a", size = 14477, upload-time = "2026-01-11T11:22:37.446Z" }, -] - -[[package]] -name = "typing-extensions" -version = "4.15.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/72/94/1a15dd82efb362ac84269196e94cf00f187f7ed21c242792a923cdb1c61f/typing_extensions-4.15.0.tar.gz", hash = "sha256:0cea48d173cc12fa28ecabc3b837ea3cf6f38c6d1136f85cbaaf598984861466", size = 109391, upload-time = "2025-08-25T13:49:26.313Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/18/67/36e9267722cc04a6b9f15c7f3441c2363321a3ea07da7ae0c0707beb2a9c/typing_extensions-4.15.0-py3-none-any.whl", hash = "sha256:f0fa19c6845758ab08074a0cfa8b7aecb71c999ca73d62883bc25cc018c4e548", size = 44614, upload-time = "2025-08-25T13:49:24.86Z" }, -] - -[[package]] -name = "urllib3" -version = "2.6.3" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/c7/24/5f1b3bdffd70275f6661c76461e25f024d5a38a46f04aaca912426a2b1d3/urllib3-2.6.3.tar.gz", hash = "sha256:1b62b6884944a57dbe321509ab94fd4d3b307075e0c2eae991ac71ee15ad38ed", size = 435556, upload-time = "2026-01-07T16:24:43.925Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/39/08/aaaad47bc4e9dc8c725e68f9d04865dbcb2052843ff09c97b08904852d84/urllib3-2.6.3-py3-none-any.whl", hash = "sha256:bf272323e553dfb2e87d9bfd225ca7b0f467b919d7bbd355436d3fd37cb0acd4", size = 131584, upload-time = "2026-01-07T16:24:42.685Z" }, -] - -[[package]] -name = "wasmtime" -version = "24.0.0" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "importlib-resources" }, -] -wheels = [ - { url = "https://files.pythonhosted.org/packages/e8/81/9db78c3ea9e436c818f92446c97adb03a5d4e6135f84ee1b9dc66ef523c1/wasmtime-24.0.0-py3-none-any.whl", hash = "sha256:94799597e5067fb5d3c0d14fe2b06aff735a12eb4ed4389df5d2d449fa72a227", size = 4906235, upload-time = "2024-08-20T16:50:39.859Z" }, - { url = "https://files.pythonhosted.org/packages/36/47/93976886f2e89e4e53d4591c8f333c1f501ef1868eeb9ad34354b0daa870/wasmtime-24.0.0-py3-none-macosx_10_13_x86_64.whl", hash = "sha256:2e54cac6cbf286506dd5fd2436edbc48542771a38cf31f22c771ea8ba28b4510", size = 5675195, upload-time = "2024-08-20T16:50:42.034Z" }, - { url = "https://files.pythonhosted.org/packages/4a/42/dd94aaedba4b270ac38938b19c3131d14663efad91e18239852221d03d34/wasmtime-24.0.0-py3-none-macosx_11_0_arm64.whl", hash = "sha256:49532ecfc618b62a6e4a8f5722f8c1608fbc5895370fd463a1e42a30dd1ffee8", size = 5164805, upload-time = "2024-08-20T16:50:44.129Z" }, - { url = "https://files.pythonhosted.org/packages/a8/f2/bab5a2d6cdb4cf0f513640871226c30a0248507cb02f90f1ab5a49ab48b0/wasmtime-24.0.0-py3-none-manylinux1_x86_64.whl", hash = "sha256:f30a3bfa87118133582654fcce1d3967efd2b4cb1b2d4a818ca8f74666627c47", size = 6202171, upload-time = "2024-08-20T16:50:45.923Z" }, - { url = "https://files.pythonhosted.org/packages/d0/f9/9d2961f0c3930d8216bd4fdd5d090b24277f569e3a8d0abd18190cfb2bb9/wasmtime-24.0.0-py3-none-manylinux2014_aarch64.whl", hash = "sha256:02a66bb5907f3d88e1d9b3c6c840992a34ced961e519fad40db35f38448b3b19", size = 5981792, upload-time = "2024-08-20T16:50:47.418Z" }, - { url = "https://files.pythonhosted.org/packages/5f/32/0a88b18f5f50888053d93e683a99f007b9f41b157d8ef6f96d328497af98/wasmtime-24.0.0-py3-none-musllinux_1_2_x86_64.whl", hash = "sha256:fd75f520ca988b4a63aab6e93d0844c7dfaaf2361605cb27907fd3e641eb5d03", size = 6214593, upload-time = "2024-08-20T16:50:49.101Z" }, - { url = "https://files.pythonhosted.org/packages/3e/25/70c6dcf5e655a0ba51b41d8afe63a2b75dd27425c202fe6f1b18d245f3bb/wasmtime-24.0.0-py3-none-win_amd64.whl", hash = "sha256:478657ddeb2bafccced5d4799ac393e65a7e6e5222ed3ea840da0e9dc3817fb0", size = 4906243, upload-time = "2024-08-20T16:50:50.842Z" }, -] - -[[package]] -name = "wcwidth" -version = "0.6.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/35/a2/8e3becb46433538a38726c948d3399905a4c7cabd0df578ede5dc51f0ec2/wcwidth-0.6.0.tar.gz", hash = "sha256:cdc4e4262d6ef9a1a57e018384cbeb1208d8abbc64176027e2c2455c81313159", size = 159684, upload-time = "2026-02-06T19:19:40.919Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/68/5a/199c59e0a824a3db2b89c5d2dade7ab5f9624dbf6448dc291b46d5ec94d3/wcwidth-0.6.0-py3-none-any.whl", hash = "sha256:1a3a1e510b553315f8e146c54764f4fb6264ffad731b3d78088cdb1478ffbdad", size = 94189, upload-time = "2026-02-06T19:19:39.646Z" }, -] - -[[package]] -name = "x690" -version = "1.0.0.post1" -source = { registry = "https://pypi.org/simple" } -dependencies = [ - { name = "t61codec" }, -] -sdist = { url = "https://files.pythonhosted.org/packages/78/5c/7fee7f6251575259453839f100301a0eaae6260b73762aa55de84573eee2/x690-1.0.0.post1.tar.gz", hash = "sha256:3a2a8a4e479079188aa6e847814981286b8f1c19569898fa3fe573ee0ce05349", size = 27995, upload-time = "2022-09-30T05:16:15.607Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/25/83/5da9e721caaba8654140bc991ac34e86d6bf3ad2db99ec5c77d3f88b015f/x690-1.0.0.post1-py3-none-any.whl", hash = "sha256:de754c27c9a46e6ede08036a804478ecd79591ecbe92df6f97b34adee55e9d64", size = 29376, upload-time = "2022-09-30T05:16:14.184Z" }, -] - -[[package]] -name = "zipp" -version = "3.23.0" -source = { registry = "https://pypi.org/simple" } -sdist = { url = "https://files.pythonhosted.org/packages/e3/02/0f2892c661036d50ede074e376733dca2ae7c6eb617489437771209d4180/zipp-3.23.0.tar.gz", hash = "sha256:a07157588a12518c9d4034df3fbbee09c814741a33ff63c05fa29d26a2404166", size = 25547, upload-time = "2025-06-08T17:06:39.4Z" } -wheels = [ - { url = "https://files.pythonhosted.org/packages/2e/54/647ade08bf0db230bfea292f893923872fd20be6ac6f53b2b936ba839d75/zipp-3.23.0-py3-none-any.whl", hash = "sha256:071652d6115ed432f5ce1d34c336c0adfd6a884660d1e9712a256d3d3bd4b14e", size = 10276, upload-time = "2025-06-08T17:06:38.034Z" }, -]