ksaa 2025.9b1__py3-none-any.whl → 2025.9b2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (764) hide show
  1. {kotonebot/kaa → kaa}/application/core/idle_mode.py +1 -1
  2. {kotonebot/kaa → kaa}/application/core/misc_core.py +1 -1
  3. {kotonebot/kaa → kaa}/common.py +2 -2
  4. {kotonebot/kaa → kaa}/config/const.py +1 -1
  5. {kotonebot/kaa → kaa}/config/produce.py +1 -1
  6. {kotonebot/kaa → kaa}/config/schema.py +10 -1
  7. {kotonebot/kaa → kaa}/db/sqlite.py +1 -1
  8. {kotonebot/kaa → kaa}/errors.py +7 -0
  9. {kotonebot/kaa → kaa}/game_ui/dialog.py +1 -1
  10. {kotonebot/kaa → kaa}/game_ui/idols_overview.py +4 -4
  11. {kotonebot/kaa → kaa}/game_ui/schedule.py +2 -2
  12. {kotonebot/kaa → kaa}/game_ui/scrollable.py +4 -3
  13. {kotonebot/kaa → kaa}/image_db/db.py +1 -1
  14. {kotonebot/kaa → kaa}/main/gr.py +36 -14
  15. {kotonebot/kaa → kaa}/main/kaa.py +2 -2
  16. {kotonebot/kaa → kaa}/metadata.py +21 -0
  17. kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
  18. {kotonebot/kaa → kaa}/resources/game.db +0 -0
  19. kaa/resources/game_ver.txt +0 -0
  20. kaa/resources/idol_cards/i_card-skin-fktn-3-014_0.png +0 -0
  21. kaa/sprites/207594fa-6a0b-45ec-aeff-b3e45348c508.png +0 -0
  22. {kotonebot/kaa → kaa}/tasks/R.py +129 -127
  23. {kotonebot/kaa → kaa}/tasks/actions/commu.py +3 -3
  24. {kotonebot/kaa → kaa}/tasks/actions/loading.py +1 -1
  25. {kotonebot/kaa → kaa}/tasks/actions/scenes.py +3 -3
  26. {kotonebot/kaa → kaa}/tasks/actions/stats.py +1 -1
  27. {kotonebot/kaa → kaa}/tasks/daily/acquire_activity_funds.py +2 -2
  28. {kotonebot/kaa → kaa}/tasks/daily/acquire_presents.py +2 -2
  29. {kotonebot/kaa → kaa}/tasks/daily/assignment.py +2 -2
  30. {kotonebot/kaa → kaa}/tasks/daily/capsule_toys.py +4 -3
  31. {kotonebot/kaa → kaa}/tasks/daily/club_reward.py +3 -3
  32. {kotonebot/kaa → kaa}/tasks/daily/contest.py +4 -4
  33. {kotonebot/kaa → kaa}/tasks/daily/mission_reward.py +2 -2
  34. {kotonebot/kaa → kaa}/tasks/daily/purchase.py +2 -2
  35. {kotonebot/kaa → kaa}/tasks/daily/upgrade_support_card.py +3 -3
  36. {kotonebot/kaa → kaa}/tasks/end_game.py +1 -1
  37. {kotonebot/kaa → kaa}/tasks/produce/cards.py +15 -8
  38. {kotonebot/kaa → kaa}/tasks/produce/common.py +7 -7
  39. {kotonebot/kaa → kaa}/tasks/produce/in_purodyuusu.py +94 -71
  40. {kotonebot/kaa → kaa}/tasks/produce/non_lesson_actions.py +5 -5
  41. {kotonebot/kaa → kaa}/tasks/produce/p_drink.py +1 -1
  42. {kotonebot/kaa → kaa}/tasks/produce/produce.py +10 -10
  43. {kotonebot/kaa → kaa}/tasks/start_game.py +9 -7
  44. {kotonebot/kaa → kaa}/util/paths.py +1 -1
  45. {ksaa-2025.9b1.dist-info → ksaa-2025.9b2.dist-info}/METADATA +2 -1
  46. ksaa-2025.9b2.dist-info/RECORD +519 -0
  47. ksaa-2025.9b2.dist-info/entry_points.txt +2 -0
  48. ksaa-2025.9b2.dist-info/top_level.txt +1 -0
  49. kotonebot/__init__.py +0 -40
  50. kotonebot/backend/bot.py +0 -302
  51. kotonebot/backend/color.py +0 -525
  52. kotonebot/backend/context/__init__.py +0 -3
  53. kotonebot/backend/context/context.py +0 -1001
  54. kotonebot/backend/context/task_action.py +0 -176
  55. kotonebot/backend/core.py +0 -126
  56. kotonebot/backend/debug/__init__.py +0 -1
  57. kotonebot/backend/debug/entry.py +0 -89
  58. kotonebot/backend/debug/mock.py +0 -79
  59. kotonebot/backend/debug/server.py +0 -223
  60. kotonebot/backend/debug/vars.py +0 -346
  61. kotonebot/backend/dispatch.py +0 -228
  62. kotonebot/backend/flow_controller.py +0 -197
  63. kotonebot/backend/image.py +0 -748
  64. kotonebot/backend/loop.py +0 -277
  65. kotonebot/backend/ocr.py +0 -511
  66. kotonebot/backend/preprocessor.py +0 -103
  67. kotonebot/client/__init__.py +0 -10
  68. kotonebot/client/device.py +0 -500
  69. kotonebot/client/fast_screenshot.py +0 -378
  70. kotonebot/client/host/__init__.py +0 -12
  71. kotonebot/client/host/adb_common.py +0 -94
  72. kotonebot/client/host/custom.py +0 -114
  73. kotonebot/client/host/leidian_host.py +0 -202
  74. kotonebot/client/host/mumu12_host.py +0 -245
  75. kotonebot/client/host/protocol.py +0 -213
  76. kotonebot/client/host/windows_common.py +0 -55
  77. kotonebot/client/implements/__init__.py +0 -7
  78. kotonebot/client/implements/adb.py +0 -85
  79. kotonebot/client/implements/adb_raw.py +0 -159
  80. kotonebot/client/implements/nemu_ipc/__init__.py +0 -8
  81. kotonebot/client/implements/nemu_ipc/external_renderer_ipc.py +0 -280
  82. kotonebot/client/implements/nemu_ipc/nemu_ipc.py +0 -327
  83. kotonebot/client/implements/remote_windows.py +0 -193
  84. kotonebot/client/implements/uiautomator2.py +0 -82
  85. kotonebot/client/implements/windows.py +0 -168
  86. kotonebot/client/protocol.py +0 -69
  87. kotonebot/client/registration.py +0 -24
  88. kotonebot/config/__init__.py +0 -1
  89. kotonebot/config/base_config.py +0 -96
  90. kotonebot/config/manager.py +0 -36
  91. kotonebot/debug_entry.py +0 -42
  92. kotonebot/errors.py +0 -72
  93. kotonebot/interop/win/message_box.py +0 -314
  94. kotonebot/interop/win/reg.py +0 -37
  95. kotonebot/interop/win/shortcut.py +0 -43
  96. kotonebot/interop/win/task_dialog.py +0 -469
  97. kotonebot/kaa/resources/__pycache__/__init__.cpython-310.pyc +0 -0
  98. kotonebot/kaa/resources/game_ver.txt +0 -0
  99. kotonebot/kaa/resources/idol_cards/i_card-skin-fktn-3-014_0.png +0 -0
  100. kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-011_0.png +0 -0
  101. kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-011_1.png +0 -0
  102. kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-012_0.png +0 -0
  103. kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-012_1.png +0 -0
  104. kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-013_0.png +0 -0
  105. kotonebot/kaa/resources/idol_cards/i_card-skin-jsna-3-013_1.png +0 -0
  106. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-1-000_0.png +0 -0
  107. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-1-000_1.png +0 -0
  108. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-1-001_0.png +0 -0
  109. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-1-001_1.png +0 -0
  110. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-2-000_0.png +0 -0
  111. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-2-000_1.png +0 -0
  112. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-000_0.png +0 -0
  113. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-000_1.png +0 -0
  114. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-001_0.png +0 -0
  115. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-001_1.png +0 -0
  116. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-002_0.png +0 -0
  117. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-002_1.png +0 -0
  118. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-003_0.png +0 -0
  119. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-003_1.png +0 -0
  120. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-004_0.png +0 -0
  121. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-004_1.png +0 -0
  122. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-005_0.png +0 -0
  123. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-005_1.png +0 -0
  124. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-006_0.png +0 -0
  125. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-006_1.png +0 -0
  126. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-007_0.png +0 -0
  127. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-007_1.png +0 -0
  128. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-008_0.png +0 -0
  129. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-008_1.png +0 -0
  130. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-009_0.png +0 -0
  131. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-009_1.png +0 -0
  132. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-010_0.png +0 -0
  133. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-010_1.png +0 -0
  134. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-011_0.png +0 -0
  135. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-011_1.png +0 -0
  136. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-012_0.png +0 -0
  137. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-012_1.png +0 -0
  138. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-013_0.png +0 -0
  139. kotonebot/kaa/resources/idol_cards/i_card-skin-kcna-3-013_1.png +0 -0
  140. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-1-000_0.png +0 -0
  141. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-1-000_1.png +0 -0
  142. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-1-001_0.png +0 -0
  143. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-1-001_1.png +0 -0
  144. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-2-000_0.png +0 -0
  145. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-2-000_1.png +0 -0
  146. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-000_0.png +0 -0
  147. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-000_1.png +0 -0
  148. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-001_0.png +0 -0
  149. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-001_1.png +0 -0
  150. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-002_0.png +0 -0
  151. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-002_1.png +0 -0
  152. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-004_0.png +0 -0
  153. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-004_1.png +0 -0
  154. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-005_0.png +0 -0
  155. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-005_1.png +0 -0
  156. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-006_0.png +0 -0
  157. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-006_1.png +0 -0
  158. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-007_0.png +0 -0
  159. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-007_1.png +0 -0
  160. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-008_0.png +0 -0
  161. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-008_1.png +0 -0
  162. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-009_0.png +0 -0
  163. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-009_1.png +0 -0
  164. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-010_0.png +0 -0
  165. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-010_1.png +0 -0
  166. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-011_0.png +0 -0
  167. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-011_1.png +0 -0
  168. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-012_0.png +0 -0
  169. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-012_1.png +0 -0
  170. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-013_0.png +0 -0
  171. kotonebot/kaa/resources/idol_cards/i_card-skin-kllj-3-013_1.png +0 -0
  172. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-1-000_0.png +0 -0
  173. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-1-000_1.png +0 -0
  174. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-1-001_0.png +0 -0
  175. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-1-001_1.png +0 -0
  176. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-2-000_0.png +0 -0
  177. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-2-000_1.png +0 -0
  178. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-000_0.png +0 -0
  179. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-000_1.png +0 -0
  180. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-001_0.png +0 -0
  181. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-001_1.png +0 -0
  182. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-002_0.png +0 -0
  183. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-002_1.png +0 -0
  184. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-003_0.png +0 -0
  185. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-003_1.png +0 -0
  186. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-004_0.png +0 -0
  187. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-004_1.png +0 -0
  188. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-006_0.png +0 -0
  189. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-006_1.png +0 -0
  190. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-007_0.png +0 -0
  191. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-007_1.png +0 -0
  192. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-008_0.png +0 -0
  193. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-008_1.png +0 -0
  194. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-009_0.png +0 -0
  195. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-009_1.png +0 -0
  196. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-010_0.png +0 -0
  197. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-010_1.png +0 -0
  198. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-011_0.png +0 -0
  199. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-011_1.png +0 -0
  200. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-012_0.png +0 -0
  201. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-012_1.png +0 -0
  202. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-013_0.png +0 -0
  203. kotonebot/kaa/resources/idol_cards/i_card-skin-shro-3-013_1.png +0 -0
  204. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-1-000_0.png +0 -0
  205. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-1-000_1.png +0 -0
  206. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-1-001_0.png +0 -0
  207. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-1-001_1.png +0 -0
  208. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-2-000_0.png +0 -0
  209. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-2-000_1.png +0 -0
  210. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-000_0.png +0 -0
  211. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-000_1.png +0 -0
  212. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-001_0.png +0 -0
  213. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-001_1.png +0 -0
  214. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-002_0.png +0 -0
  215. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-002_1.png +0 -0
  216. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-003_0.png +0 -0
  217. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-003_1.png +0 -0
  218. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-005_0.png +0 -0
  219. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-005_1.png +0 -0
  220. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-006_0.png +0 -0
  221. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-006_1.png +0 -0
  222. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-007_0.png +0 -0
  223. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-007_1.png +0 -0
  224. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-008_0.png +0 -0
  225. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-008_1.png +0 -0
  226. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-009_0.png +0 -0
  227. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-009_1.png +0 -0
  228. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-010_0.png +0 -0
  229. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-010_1.png +0 -0
  230. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-011_0.png +0 -0
  231. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-011_1.png +0 -0
  232. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-012_0.png +0 -0
  233. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-012_1.png +0 -0
  234. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-013_0.png +0 -0
  235. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-013_1.png +0 -0
  236. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-014_0.png +0 -0
  237. kotonebot/kaa/resources/idol_cards/i_card-skin-ssmk-3-014_1.png +0 -0
  238. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-1-000_0.png +0 -0
  239. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-1-000_1.png +0 -0
  240. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-1-001_0.png +0 -0
  241. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-1-001_1.png +0 -0
  242. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-2-000_0.png +0 -0
  243. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-2-000_1.png +0 -0
  244. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-000_0.png +0 -0
  245. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-000_1.png +0 -0
  246. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-001_0.png +0 -0
  247. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-001_1.png +0 -0
  248. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-002_0.png +0 -0
  249. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-002_1.png +0 -0
  250. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-003_0.png +0 -0
  251. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-003_1.png +0 -0
  252. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-004_0.png +0 -0
  253. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-004_1.png +0 -0
  254. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-006_0.png +0 -0
  255. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-006_1.png +0 -0
  256. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-007_0.png +0 -0
  257. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-007_1.png +0 -0
  258. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-008_0.png +0 -0
  259. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-008_1.png +0 -0
  260. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-009_0.png +0 -0
  261. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-009_1.png +0 -0
  262. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-010_0.png +0 -0
  263. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-010_1.png +0 -0
  264. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-011_0.png +0 -0
  265. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-011_1.png +0 -0
  266. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-012_0.png +0 -0
  267. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-012_1.png +0 -0
  268. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-013_0.png +0 -0
  269. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-013_1.png +0 -0
  270. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-014_0.png +0 -0
  271. kotonebot/kaa/resources/idol_cards/i_card-skin-ttmr-3-014_1.png +0 -0
  272. kotonebot/kaa/tasks/actions/__init__.py +0 -0
  273. kotonebot/kaa/tasks/daily/__init__.py +0 -0
  274. kotonebot/kaa/tasks/produce/__init__.py +0 -0
  275. kotonebot/logging/__init__.py +0 -2
  276. kotonebot/logging/log.py +0 -18
  277. kotonebot/primitives/__init__.py +0 -17
  278. kotonebot/primitives/geometry.py +0 -290
  279. kotonebot/primitives/visual.py +0 -63
  280. kotonebot/tools/__init__.py +0 -0
  281. kotonebot/tools/mirror.py +0 -354
  282. kotonebot/ui/__init__.py +0 -0
  283. kotonebot/ui/file_host/sensio.py +0 -36
  284. kotonebot/ui/file_host/tmp_send.py +0 -54
  285. kotonebot/ui/pushkit/__init__.py +0 -3
  286. kotonebot/ui/pushkit/image_host.py +0 -87
  287. kotonebot/ui/pushkit/protocol.py +0 -13
  288. kotonebot/ui/pushkit/wxpusher.py +0 -53
  289. kotonebot/ui/user.py +0 -144
  290. kotonebot/util.py +0 -409
  291. ksaa-2025.9b1.dist-info/RECORD +0 -757
  292. ksaa-2025.9b1.dist-info/entry_points.txt +0 -2
  293. ksaa-2025.9b1.dist-info/top_level.txt +0 -1
  294. {kotonebot/kaa → kaa}/application/adapter/misc_adapter.py +0 -0
  295. {kotonebot/kaa → kaa}/config/__init__.py +0 -0
  296. {kotonebot/kaa → kaa}/config/migrations/__init__.py +0 -0
  297. {kotonebot/kaa → kaa}/config/migrations/_idol.py +0 -0
  298. {kotonebot/kaa → kaa}/config/migrations/_v1_to_v2.py +0 -0
  299. {kotonebot/kaa → kaa}/config/migrations/_v2_to_v3.py +0 -0
  300. {kotonebot/kaa → kaa}/config/migrations/_v3_to_v4.py +0 -0
  301. {kotonebot/kaa → kaa}/config/migrations/_v4_to_v5.py +0 -0
  302. {kotonebot/kaa → kaa}/config/migrations/_v5_to_v6.py +0 -0
  303. {kotonebot/kaa → kaa}/config/upgrade.py +0 -0
  304. {kotonebot/kaa → kaa}/db/__init__.py +0 -0
  305. {kotonebot/kaa → kaa}/db/constants.py +0 -0
  306. {kotonebot/kaa → kaa}/db/idol_card.py +0 -0
  307. {kotonebot/kaa → kaa}/game_ui/__init__.py +0 -0
  308. {kotonebot/kaa → kaa}/game_ui/badge.py +0 -0
  309. {kotonebot/kaa → kaa}/game_ui/common.py +0 -0
  310. {kotonebot/kaa → kaa}/game_ui/commu_event_buttons.py +0 -0
  311. {kotonebot/kaa → kaa}/game_ui/primary_button.py +0 -0
  312. {kotonebot/kaa → kaa}/game_ui/toolbar.py +0 -0
  313. {kotonebot/kaa → kaa}/image_db/__init__.py +0 -0
  314. {kotonebot/kaa → kaa}/image_db/descriptors/__init__.py +0 -0
  315. {kotonebot/kaa → kaa}/image_db/descriptors/hist.py +0 -0
  316. {kotonebot/kaa → kaa}/kaa_context.py +0 -0
  317. {kotonebot/kaa → kaa}/main/__init__.py +0 -0
  318. {kotonebot/kaa → kaa}/main/cli.py +0 -0
  319. {kotonebot/kaa → kaa}/main/dmm_host.py +0 -0
  320. {kotonebot/backend → kaa/resources}/__init__.py +0 -0
  321. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-1-000_0.png +0 -0
  322. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-1-000_1.png +0 -0
  323. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-1-001_0.png +0 -0
  324. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-1-001_1.png +0 -0
  325. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-2-000_0.png +0 -0
  326. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-2-000_1.png +0 -0
  327. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-000_0.png +0 -0
  328. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-000_1.png +0 -0
  329. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-001_0.png +0 -0
  330. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-001_1.png +0 -0
  331. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-002_0.png +0 -0
  332. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-002_1.png +0 -0
  333. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-003_0.png +0 -0
  334. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-003_1.png +0 -0
  335. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-005_0.png +0 -0
  336. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-005_1.png +0 -0
  337. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-006_0.png +0 -0
  338. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-006_1.png +0 -0
  339. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-007_0.png +0 -0
  340. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-007_1.png +0 -0
  341. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-008_0.png +0 -0
  342. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-008_1.png +0 -0
  343. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-009_0.png +0 -0
  344. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-009_1.png +0 -0
  345. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-010_0.png +0 -0
  346. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-010_1.png +0 -0
  347. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-011_0.png +0 -0
  348. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-011_1.png +0 -0
  349. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-012_0.png +0 -0
  350. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-012_1.png +0 -0
  351. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-013_0.png +0 -0
  352. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-amao-3-013_1.png +0 -0
  353. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-1-000_0.png +0 -0
  354. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-1-000_1.png +0 -0
  355. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-1-001_0.png +0 -0
  356. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-1-001_1.png +0 -0
  357. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-2-000_0.png +0 -0
  358. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-2-000_1.png +0 -0
  359. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-000_0.png +0 -0
  360. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-000_1.png +0 -0
  361. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-001_0.png +0 -0
  362. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-001_1.png +0 -0
  363. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-002_0.png +0 -0
  364. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-002_1.png +0 -0
  365. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-003_0.png +0 -0
  366. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-003_1.png +0 -0
  367. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-005_0.png +0 -0
  368. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-005_1.png +0 -0
  369. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-006_0.png +0 -0
  370. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-006_1.png +0 -0
  371. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-007_0.png +0 -0
  372. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-007_1.png +0 -0
  373. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-008_0.png +0 -0
  374. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-008_1.png +0 -0
  375. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-009_0.png +0 -0
  376. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-009_1.png +0 -0
  377. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-010_0.png +0 -0
  378. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-010_1.png +0 -0
  379. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-011_0.png +0 -0
  380. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-011_1.png +0 -0
  381. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-012_0.png +0 -0
  382. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-012_1.png +0 -0
  383. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-013_0.png +0 -0
  384. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-013_1.png +0 -0
  385. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-014_1.png +0 -0
  386. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-015_0.png +0 -0
  387. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-fktn-3-015_1.png +0 -0
  388. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-1-000_0.png +0 -0
  389. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-1-000_1.png +0 -0
  390. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-1-001_0.png +0 -0
  391. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-1-001_1.png +0 -0
  392. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-2-000_0.png +0 -0
  393. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-2-000_1.png +0 -0
  394. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-000_0.png +0 -0
  395. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-000_1.png +0 -0
  396. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-001_0.png +0 -0
  397. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-001_1.png +0 -0
  398. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-002_0.png +0 -0
  399. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-002_1.png +0 -0
  400. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-005_0.png +0 -0
  401. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-005_1.png +0 -0
  402. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-010_0.png +0 -0
  403. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-010_1.png +0 -0
  404. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-012_0.png +0 -0
  405. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hmsz-3-012_1.png +0 -0
  406. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-1-000_0.png +0 -0
  407. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-1-000_1.png +0 -0
  408. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-1-001_0.png +0 -0
  409. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-1-001_1.png +0 -0
  410. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-2-000_0.png +0 -0
  411. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-2-000_1.png +0 -0
  412. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-000_0.png +0 -0
  413. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-000_1.png +0 -0
  414. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-001_0.png +0 -0
  415. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-001_1.png +0 -0
  416. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-002_0.png +0 -0
  417. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-002_1.png +0 -0
  418. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-003_0.png +0 -0
  419. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-003_1.png +0 -0
  420. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-004_0.png +0 -0
  421. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-004_1.png +0 -0
  422. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-005_0.png +0 -0
  423. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-005_1.png +0 -0
  424. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-006_0.png +0 -0
  425. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-006_1.png +0 -0
  426. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-007_0.png +0 -0
  427. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-007_1.png +0 -0
  428. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-008_0.png +0 -0
  429. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-008_1.png +0 -0
  430. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-009_0.png +0 -0
  431. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-009_1.png +0 -0
  432. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-010_0.png +0 -0
  433. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-010_1.png +0 -0
  434. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-011_0.png +0 -0
  435. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-011_1.png +0 -0
  436. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-012_0.png +0 -0
  437. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-012_1.png +0 -0
  438. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-014_0.png +0 -0
  439. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hrnm-3-014_1.png +0 -0
  440. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-1-000_0.png +0 -0
  441. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-1-000_1.png +0 -0
  442. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-1-001_0.png +0 -0
  443. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-1-001_1.png +0 -0
  444. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-2-000_0.png +0 -0
  445. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-2-000_1.png +0 -0
  446. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-000_0.png +0 -0
  447. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-000_1.png +0 -0
  448. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-001_0.png +0 -0
  449. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-001_1.png +0 -0
  450. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-002_0.png +0 -0
  451. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-002_1.png +0 -0
  452. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-003_0.png +0 -0
  453. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-003_1.png +0 -0
  454. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-005_0.png +0 -0
  455. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-005_1.png +0 -0
  456. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-006_0.png +0 -0
  457. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-006_1.png +0 -0
  458. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-007_0.png +0 -0
  459. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-007_1.png +0 -0
  460. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-008_0.png +0 -0
  461. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-008_1.png +0 -0
  462. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-009_0.png +0 -0
  463. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-009_1.png +0 -0
  464. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-010_0.png +0 -0
  465. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-010_1.png +0 -0
  466. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-011_0.png +0 -0
  467. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-011_1.png +0 -0
  468. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-012_0.png +0 -0
  469. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-012_1.png +0 -0
  470. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-013_0.png +0 -0
  471. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-013_1.png +0 -0
  472. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-014_0.png +0 -0
  473. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hski-3-014_1.png +0 -0
  474. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-1-000_0.png +0 -0
  475. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-1-000_1.png +0 -0
  476. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-1-001_0.png +0 -0
  477. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-1-001_1.png +0 -0
  478. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-2-000_0.png +0 -0
  479. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-2-000_1.png +0 -0
  480. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-000_0.png +0 -0
  481. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-000_1.png +0 -0
  482. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-001_0.png +0 -0
  483. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-001_1.png +0 -0
  484. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-002_0.png +0 -0
  485. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-002_1.png +0 -0
  486. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-004_0.png +0 -0
  487. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-004_1.png +0 -0
  488. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-005_0.png +0 -0
  489. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-005_1.png +0 -0
  490. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-006_0.png +0 -0
  491. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-006_1.png +0 -0
  492. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-011_0.png +0 -0
  493. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-011_1.png +0 -0
  494. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-012_0.png +0 -0
  495. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-012_1.png +0 -0
  496. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-013_0.png +0 -0
  497. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-013_1.png +0 -0
  498. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-014_0.png +0 -0
  499. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-hume-3-014_1.png +0 -0
  500. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-1-000_0.png +0 -0
  501. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-1-000_1.png +0 -0
  502. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-1-001_0.png +0 -0
  503. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-1-001_1.png +0 -0
  504. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-2-000_0.png +0 -0
  505. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-2-000_1.png +0 -0
  506. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-000_0.png +0 -0
  507. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-000_1.png +0 -0
  508. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-002_0.png +0 -0
  509. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-002_1.png +0 -0
  510. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-003_0.png +0 -0
  511. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-003_1.png +0 -0
  512. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-004_0.png +0 -0
  513. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-004_1.png +0 -0
  514. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-005_0.png +0 -0
  515. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-005_1.png +0 -0
  516. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-006_0.png +0 -0
  517. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-006_1.png +0 -0
  518. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-007_0.png +0 -0
  519. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-007_1.png +0 -0
  520. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-008_0.png +0 -0
  521. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-008_1.png +0 -0
  522. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-010_0.png +0 -0
  523. {kotonebot/kaa → kaa}/resources/idol_cards/i_card-skin-jsna-3-010_1.png +0 -0
  524. {kotonebot/kaa → kaa}/sprites/00551158-fee9-483f-b034-549139a96f58.png +0 -0
  525. /kotonebot/kaa/sprites/d5c4ef47-257f-49a2-81e3-ba7ab6fa0f62.png → /kaa/sprites/0078d85c-3f22-4d65-834d-bef862386c28.png +0 -0
  526. /kotonebot/kaa/sprites/003c315c-418c-410e-ba45-290150097a25.png → /kaa/sprites/01621013-b0e9-49bb-b7c1-296d1c8e7c4d.png +0 -0
  527. /kotonebot/kaa/sprites/a4b50bf5-7dfe-4bbb-8bd7-528c9147b71e.png → /kaa/sprites/03ea1e8a-93e4-41c2-940c-6738de3519ad.png +0 -0
  528. /kotonebot/kaa/sprites/11c5034e-d258-422d-850c-a4495b346778.png → /kaa/sprites/03f1e81a-e762-45bd-b8fc-a5ccd99413f2.png +0 -0
  529. {kotonebot/kaa → kaa}/sprites/05890a1b-8764-4e9f-9d21-65d292c22e13.png +0 -0
  530. {kotonebot/kaa → kaa}/sprites/0949c622-9067-4f0d-bac2-3f938a1d2ed2.png +0 -0
  531. {kotonebot/kaa → kaa}/sprites/0bf5e34e-afc6-4447-bbac-67026ce2ad26.png +0 -0
  532. {kotonebot/kaa → kaa}/sprites/0c0627be-4a09-4450-a078-1858d3ace532.png +0 -0
  533. /kotonebot/kaa/sprites/22bda7ef-ad0d-4020-a667-6ae77b4805ca.png → /kaa/sprites/0c5871f8-7b83-458e-93ea-87dd96b4e714.png +0 -0
  534. {kotonebot/kaa → kaa}/sprites/0d9ac648-eefa-4869-ac99-1b0c83649681.png +0 -0
  535. /kotonebot/kaa/sprites/23b37aad-1de3-43e2-84e6-78f6f0f28fba.png → /kaa/sprites/0e311fd9-5027-4fe9-9701-f6ace207a47f.png +0 -0
  536. {kotonebot/kaa → kaa}/sprites/0f7d581d-cea3-4039-9205-732e4cd29293.png +0 -0
  537. /kotonebot/kaa/sprites/5d51ee71-a2fb-414a-ab48-c5d3c1a3b945.png → /kaa/sprites/1201b142-fccd-497d-b082-95c8f3dfd46b.png +0 -0
  538. /kotonebot/kaa/sprites/aee9d67f-d6be-4cf5-9c30-331f6d5f0f84.png → /kaa/sprites/13b4ec6d-855e-457a-bc46-ec07bbae2555.png +0 -0
  539. /kotonebot/kaa/sprites/835e3ad1-8f73-4e2e-bdd5-9a5fb866858f.png → /kaa/sprites/141ebd00-0572-4186-9e46-caaf2d1f1920.png +0 -0
  540. {kotonebot/kaa → kaa}/sprites/1652f06a-5417-49ef-8949-4854772d9ab7.png +0 -0
  541. {kotonebot/kaa → kaa}/sprites/16fbc93d-b294-4001-b4e9-ee2af181415f.png +0 -0
  542. {kotonebot/kaa → kaa}/sprites/185f7838-92a7-460b-9340-f60858948ce9.png +0 -0
  543. {kotonebot/kaa → kaa}/sprites/1926f2f9-4bd7-48eb-9eba-28ec4efb0606.png +0 -0
  544. /kotonebot/kaa/sprites/6774c674-5100-4422-a82b-deb9bd5d49ee.png → /kaa/sprites/19e5119b-2fcf-4e07-b67f-e78bba0adcf1.png +0 -0
  545. /kotonebot/kaa/sprites/23f8844e-9272-4a5c-badf-a30676fd22da.png → /kaa/sprites/1a0708a6-9b04-4bf5-9e50-7c548a8e37f8.png +0 -0
  546. /kotonebot/kaa/sprites/4b595d09-a5ed-47d6-9c7b-e471792db801.png → /kaa/sprites/1b8104bd-f872-4618-b7ca-fe334fd14dc8.png +0 -0
  547. /kotonebot/kaa/sprites/c41567a3-84bf-4e71-9eb1-f577c0348215.png → /kaa/sprites/1c0a4be2-be62-4c06-964f-b2de5d7860c3.png +0 -0
  548. /kotonebot/kaa/sprites/62390db3-c5bc-4868-bfb3-958acceff9cd.png → /kaa/sprites/1de78cb8-fa69-4226-952a-50bbb20fc7dd.png +0 -0
  549. /kotonebot/kaa/sprites/112f47b8-e71f-426f-9081-0c8efb6ced72.png → /kaa/sprites/1e7f4639-0d64-46dc-977f-79dc7ccb7043.png +0 -0
  550. /kotonebot/kaa/sprites/9cdd7af5-0e25-4226-8c7b-93c8c633c27b.png → /kaa/sprites/1fa1f7da-0f8d-40f0-ac59-84007fe005cb.png +0 -0
  551. {kotonebot/kaa → kaa}/sprites/213016c2-c3a2-43d8-86a3-ab4d27666ced.png +0 -0
  552. /kotonebot/kaa/sprites/bd101208-a87c-405c-987a-d46e1b6f0358.png → /kaa/sprites/22263c0e-6c8a-45ac-8b26-6fe3af677496.png +0 -0
  553. /kotonebot/kaa/sprites/6588da9e-a9b5-4313-9f67-e03f213f3fa4.png → /kaa/sprites/23937cf2-9324-4d7d-b87f-17e571e8bb11.png +0 -0
  554. {kotonebot/kaa → kaa}/sprites/23d88465-65d9-4718-8725-8dbf0a98a5a4.png +0 -0
  555. /kotonebot/kaa/sprites/2ad65f0c-3b9c-46ad-808e-11c6d6db7417.png → /kaa/sprites/246b641d-5cfc-4f06-8f89-1f041a69ea1d.png +0 -0
  556. {kotonebot/kaa → kaa}/sprites/24dc7158-036c-4a66-9280-e934f470be53.png +0 -0
  557. {kotonebot/kaa → kaa}/sprites/24e99232-9434-457f-a9a0-69dd7ecf675f.png +0 -0
  558. {kotonebot/kaa → kaa}/sprites/25f00ee3-8dfe-42d1-a67e-191fa5c3df4b.png +0 -0
  559. /kotonebot/kaa/sprites/fbba87fb-50e5-4c2f-9218-82f1ffb7a5ba.png → /kaa/sprites/2751a3b3-0184-45fd-bfd5-c1fc75436c05.png +0 -0
  560. /kotonebot/kaa/sprites/d5ad9b97-3175-4c49-a1f7-5da663125af3.png → /kaa/sprites/293fdb6c-9ea9-4471-be88-bdb69ef7e55a.png +0 -0
  561. {kotonebot/kaa → kaa}/sprites/2bd6fe88-99fa-443d-8e42-bb3de5881213.png +0 -0
  562. /kotonebot/kaa/sprites/8e6b9237-f94a-4e21-9b2c-45e3d4833b6d.png → /kaa/sprites/2c722ef4-b6c0-4e48-b6e3-78c187e0cf1a.png +0 -0
  563. /kotonebot/kaa/sprites/8df4515c-ff60-432c-a624-ae3658bf7e0c.png → /kaa/sprites/2c7da64b-4a9a-46ee-a8c2-7fe6d5ca61e2.png +0 -0
  564. /kotonebot/kaa/sprites/1b39e16c-d8e2-4f4c-bc6d-a4511184f8af.png → /kaa/sprites/2ed36417-e2aa-45c6-8fc0-aca1a47f3106.png +0 -0
  565. {kotonebot/kaa → kaa}/sprites/2ededcf5-1d80-4e2a-9c83-2a31998331ce.png +0 -0
  566. /kotonebot/kaa/sprites/53d082f9-9cac-4ca0-b166-3a3599c4f757.png → /kaa/sprites/2f5377ec-e08d-47f4-bf60-928961957b8d.png +0 -0
  567. {kotonebot/kaa → kaa}/sprites/303cccc1-c674-4d3a-8c89-19ea729fdbef.png +0 -0
  568. {kotonebot/kaa → kaa}/sprites/30a6f399-6999-4f04-bb77-651e0214112f.png +0 -0
  569. /kotonebot/kaa/sprites/1b82310e-8422-4be6-b31b-bc7693def4e4.png → /kaa/sprites/316fe4ed-272a-4c6a-8822-1a8edf296293.png +0 -0
  570. /kotonebot/kaa/sprites/4af83157-f237-4072-a732-1e59814485e7.png → /kaa/sprites/360e32a4-0f22-42da-9da0-fca8d2da6020.png +0 -0
  571. /kotonebot/kaa/sprites/e0effef4-869d-4a0c-8db3-1c41cd255555.png → /kaa/sprites/37e7c488-7ad6-447e-a37f-75c2553a4a89.png +0 -0
  572. {kotonebot/kaa → kaa}/sprites/3942ae40-7f22-412c-aebe-4b064f68db9b.png +0 -0
  573. {kotonebot/kaa → kaa}/sprites/3b473fe6-e147-477f-b088-9b8fb042a4f6.png +0 -0
  574. {kotonebot/kaa → kaa}/sprites/3c8b477a-8eda-407e-9e9f-7540c8808f89.png +0 -0
  575. /kotonebot/kaa/sprites/16d914f3-c3be-479e-932a-4c336c08b94e.png → /kaa/sprites/3c8e18ba-a948-4885-8d07-285faf7a9f32.png +0 -0
  576. /kotonebot/kaa/sprites/b53035c7-43a6-4d83-a51c-dd6b7cd14a1e.png → /kaa/sprites/3da3fd94-081d-4e90-8c11-0ff5f9e216eb.png +0 -0
  577. /kotonebot/kaa/sprites/76a65fb7-4429-4288-a164-bd121974ee6b.png → /kaa/sprites/3ef0ee98-7572-40df-b608-8cf6e76a2bc7.png +0 -0
  578. {kotonebot/kaa → kaa}/sprites/3f637e86-6b74-4693-9131-1fe411fc21e5.png +0 -0
  579. /kotonebot/kaa/sprites/d7e25596-8452-4eb3-aaa8-5997be3dd851.png → /kaa/sprites/3f91c443-cd32-4048-8dbe-ffa1459171b1.png +0 -0
  580. {kotonebot/kaa → kaa}/sprites/4096cffa-a889-4622-852e-760fc7022d93.png +0 -0
  581. /kotonebot/kaa/sprites/783cbcad-eefc-4a04-910e-9ff4288d3c18.png → /kaa/sprites/41ff7111-553e-48f7-9fb7-7eb071264c20.png +0 -0
  582. /kotonebot/kaa/sprites/78a12e3b-ac32-4e96-8998-30f92318a36b.png → /kaa/sprites/4231568f-b383-4944-99de-0589bb24aa2e.png +0 -0
  583. /kotonebot/kaa/sprites/0519d61c-0451-42a2-96ed-baa5ef026655.png → /kaa/sprites/42b85806-07f6-4dad-8f03-664c93546d1d.png +0 -0
  584. {kotonebot/kaa → kaa}/sprites/447d0e44-5d87-4b7c-8e60-edb111fe1639.png +0 -0
  585. {kotonebot/kaa → kaa}/sprites/44ba8515-4a60-42c9-8878-b42e4e34ee15.png +0 -0
  586. {kotonebot/kaa → kaa}/sprites/4503db6b-7224-4b81-9971-e7cfa56e10f2.png +0 -0
  587. {kotonebot/kaa → kaa}/sprites/4695f96b-c4f5-4bb6-a021-a13b6ceb2883.png +0 -0
  588. {kotonebot/kaa → kaa}/sprites/4883c564-f950-4a29-9f5f-6f924123cd22.png +0 -0
  589. /kotonebot/kaa/sprites/c6649b6a-7d03-454c-902b-7462092878df.png → /kaa/sprites/499d34e9-3f0f-4ff6-b0d6-44ee4919c9c0.png +0 -0
  590. {kotonebot/kaa → kaa}/sprites/4d78add6-1027-4939-bb51-f99fca7db2ce.png +0 -0
  591. /kotonebot/kaa/sprites/3de9bd37-90ef-45ec-88c0-03c4fd50fb51.png → /kaa/sprites/4f7fa41d-a32b-4090-badb-05336cf67620.png +0 -0
  592. {kotonebot/kaa → kaa}/sprites/5031808b-5525-4118-92b4-317ec8bda985.png +0 -0
  593. {kotonebot/kaa → kaa}/sprites/50e23c8a-7ba2-4c9c-9cfb-196c260fa1d5.png +0 -0
  594. /kotonebot/kaa/sprites/848c8b04-c953-473d-94b1-2a2d5cdbd9c4.png → /kaa/sprites/550d0d4e-9c71-465a-a9ab-a64a25a1c958.png +0 -0
  595. /kotonebot/kaa/sprites/75f0339c-9acf-4971-a3c2-e302f56b1f93.png → /kaa/sprites/55efbfcf-96c1-45f1-a7bc-3a922c9cf22f.png +0 -0
  596. {kotonebot/kaa → kaa}/sprites/55f7db71-0a18-4b3d-b847-57959b8d2e32.png +0 -0
  597. /kotonebot/kaa/sprites/8e7b53fd-d962-43b7-a203-3d480c649c83.png → /kaa/sprites/5615c359-ccc0-469a-82d0-6002c117f4a0.png +0 -0
  598. {kotonebot/kaa → kaa}/sprites/582d36c0-0916-4706-9833-4fbc026701f5.png +0 -0
  599. /kotonebot/kaa/sprites/4e284d43-9d58-4afa-be66-b61825ef2be3.png → /kaa/sprites/59123d3e-4b29-4f25-b561-ac9bcd70640e.png +0 -0
  600. /kotonebot/kaa/sprites/0c2a1e9f-85be-4fec-a8ae-4e417c58d5a5.png → /kaa/sprites/5ca94c3e-908d-49c9-803e-0d75dd56ee9d.png +0 -0
  601. {kotonebot/kaa → kaa}/sprites/5d36b880-7b3f-49b1-a018-7de59867d376.png +0 -0
  602. {kotonebot/kaa → kaa}/sprites/5ebcde3b-f0fd-4e5d-b3de-ada8f0b5e03b.png +0 -0
  603. /kotonebot/kaa/sprites/704bf40a-4125-4260-9dd7-fa8ac13f00df.png → /kaa/sprites/64396919-34c4-44ff-b39a-c126a7d6b73f.png +0 -0
  604. /kotonebot/kaa/sprites/5c926d27-63c7-466f-9e34-65144153e0d2.png → /kaa/sprites/64d5db07-ac11-4c55-979e-87f7205287a8.png +0 -0
  605. /kotonebot/kaa/sprites/105df024-ece9-4c9c-9479-9f7423f4abec.png → /kaa/sprites/65769b32-57b7-4e63-bda9-11cd96525831.png +0 -0
  606. /kotonebot/kaa/sprites/37d24544-1791-474d-8f74-b1dbe0dd3c6b.png → /kaa/sprites/6670deb8-5f26-4efe-bc8b-65283073851a.png +0 -0
  607. /kotonebot/kaa/sprites/c5127f24-fa81-4d61-876f-ac0a377bf00e.png → /kaa/sprites/670f3fea-6ac8-4ac5-bb5c-058a52239412.png +0 -0
  608. /kotonebot/kaa/sprites/2704de68-4349-4695-8102-4dcd93fe82c7.png → /kaa/sprites/674ab5dd-4c63-484d-9f68-7c601d5cf0c7.png +0 -0
  609. /kotonebot/kaa/sprites/0d1ecf0b-b090-42b2-b895-cb1f5b415af8.png → /kaa/sprites/6996ae36-4f49-4e60-baef-f481142d8afa.png +0 -0
  610. {kotonebot/kaa → kaa}/sprites/6b58d90d-2e5e-4b7f-bc01-941f2633de89.png +0 -0
  611. {kotonebot/kaa → kaa}/sprites/6cd80be8-c9b3-4ba5-bf17-3ffc9b000743.png +0 -0
  612. /kotonebot/kaa/sprites/ea7dd69b-b02f-499d-acee-6bd35a033a73.png → /kaa/sprites/6e158fab-4d9b-4557-8ea7-eabc94bb83c5.png +0 -0
  613. /kotonebot/kaa/sprites/0d39671a-cfa3-4832-93e8-6ab61cece799.png → /kaa/sprites/6f6f8f1d-cfa6-4d53-abf9-910c4a12739f.png +0 -0
  614. {kotonebot/kaa → kaa}/sprites/70898bf8-56c5-4f84-becb-629c9ab6a7da.png +0 -0
  615. /kotonebot/kaa/sprites/ac02de52-42fa-4767-81f8-97fbac3bd8a0.png → /kaa/sprites/716fbc7f-beda-4482-8c59-699b87778309.png +0 -0
  616. /kotonebot/kaa/sprites/84795df2-e6d9-40fb-aef5-98fbf9c17399.png → /kaa/sprites/71b3edaf-e384-452e-96b0-096d92c4c298.png +0 -0
  617. /kotonebot/kaa/sprites/3868b12d-8d93-4754-91bd-797680d24e22.png → /kaa/sprites/7300a151-0fc1-4261-b98e-ff3e8077eaee.png +0 -0
  618. /kotonebot/kaa/sprites/8498ac20-4ec2-474b-961f-cbf488da9a23.png → /kaa/sprites/73b16c0e-2bc6-4e8e-b678-00af0c9c3e0d.png +0 -0
  619. /kotonebot/kaa/sprites/a8aacbc9-1238-414c-b1e6-5ea1a01407c2.png → /kaa/sprites/73fba395-96ee-45ab-bca8-9426a0504fed.png +0 -0
  620. {kotonebot/kaa → kaa}/sprites/74ec3510-583d-4a76-ac69-38480fbf1387.png +0 -0
  621. /kotonebot/kaa/sprites/a0ddc404-a653-4d76-842f-faf7f93851ed.png → /kaa/sprites/773c7946-041e-40b3-b951-229aed614dbe.png +0 -0
  622. /kotonebot/kaa/sprites/12d59cc0-cef6-472d-b424-edaae52463ca.png → /kaa/sprites/78bea52e-d7d0-4b99-8f89-e89324527611.png +0 -0
  623. {kotonebot/kaa → kaa}/sprites/79abd239-5eed-4195-9fa8-d729daa874ca.png +0 -0
  624. /kotonebot/kaa/sprites/1d25aa70-8137-4c63-8dcf-a5b5a8f950e6.png → /kaa/sprites/7a5eff9d-4e2d-4f8f-bdf2-d81a15d9cc6d.png +0 -0
  625. /kotonebot/kaa/sprites/13338d14-2b0d-4630-a5d2-dc273f62524e.png → /kaa/sprites/7bc266f0-0166-4bd4-a8c2-0d5555e6d74d.png +0 -0
  626. /kotonebot/kaa/sprites/b94087df-db46-4ae3-bf93-8548a25a1a23.png → /kaa/sprites/7bcaf86b-8594-40fb-9f06-a7ffeb0bd10e.png +0 -0
  627. /kotonebot/kaa/sprites/1e324ce8-b56f-45d5-9476-713dabfdecf9.png → /kaa/sprites/7e7f553f-8f93-400a-b70c-644df794ddfa.png +0 -0
  628. /kotonebot/kaa/sprites/a3f07286-a699-4f5c-9912-835b3781b4f7.png → /kaa/sprites/7ee5bce2-9c00-4a1b-91f3-3de0dd1821ac.png +0 -0
  629. /kotonebot/kaa/sprites/d37153d2-f699-4608-abbf-43d6bd8b1469.png → /kaa/sprites/802cd7cb-066a-49b5-a0c3-3da0eab9d674.png +0 -0
  630. /kotonebot/kaa/sprites/564e9739-a90d-4c17-9d29-b3edb6aef1e9.png → /kaa/sprites/808e16c7-e112-4928-a03f-23a5fcbe0b24.png +0 -0
  631. {kotonebot/kaa → kaa}/sprites/81c97cd3-df53-44d3-bf3d-1eb4dc67b62a.png +0 -0
  632. {kotonebot/kaa → kaa}/sprites/835489e2-b29b-426c-b4c9-3bb9f8eb6195.png +0 -0
  633. {kotonebot/kaa → kaa}/sprites/83d0a033-466c-463a-bb8c-be0f2953e9b2.png +0 -0
  634. {kotonebot/kaa → kaa}/sprites/8424ecdd-8857-4764-9fd0-d4bfa440c128.png +0 -0
  635. /kotonebot/kaa/sprites/8cb9d744-6b49-452b-b0b6-e441446050ef.png → /kaa/sprites/85a9ee57-a69d-452c-9533-3913dd4af5e8.png +0 -0
  636. /kotonebot/kaa/sprites/e8407109-ffa8-496b-a499-e78db90db540.png → /kaa/sprites/85dad1b9-edfb-44f9-b59d-c92a90ed0d13.png +0 -0
  637. /kotonebot/kaa/sprites/b45b4340-65ce-49df-a265-9f3cd876fced.png → /kaa/sprites/8660b8a5-dce0-4e34-a0b4-5cbee251cc9d.png +0 -0
  638. /kotonebot/kaa/sprites/a4c42000-2421-4b02-b83e-60e1397304b0.png → /kaa/sprites/8795c644-edd9-4930-b307-e02b8df8f63c.png +0 -0
  639. {kotonebot/kaa → kaa}/sprites/8c179a21-be6f-4db8-a9b0-9afeb5c36b1c.png +0 -0
  640. /kotonebot/kaa/sprites/92c1a9ba-994b-4635-b1b6-1fa157f227f6.png → /kaa/sprites/8c32afab-a759-4d17-bb09-5ee4f78bc094.png +0 -0
  641. /kotonebot/kaa/sprites/002e7b92-11f4-487a-af55-334663e2b8cd.png → /kaa/sprites/8c3412f5-77a4-4d95-96fc-af9c562e73b9.png +0 -0
  642. {kotonebot/kaa → kaa}/sprites/8ded6c98-85ea-4858-a66d-4fc8caecb7c5.png +0 -0
  643. {kotonebot/kaa → kaa}/sprites/8f8b7b46-53bb-42ab-907a-4ea87eb09ab4.png +0 -0
  644. /kotonebot/kaa/sprites/d3bfc1c2-a202-42c2-9e19-61b949a340c7.png → /kaa/sprites/8fbb1d42-c540-4e2a-91b1-871ca77ecdb1.png +0 -0
  645. /kotonebot/kaa/sprites/85f1cf4f-7d07-403a-917b-02b273680c21.png → /kaa/sprites/919e00d2-7319-4541-bdc5-8d398d4759ce.png +0 -0
  646. {kotonebot/kaa → kaa}/sprites/921eefeb-730e-46fc-9924-d338fb286592.png +0 -0
  647. {kotonebot/kaa → kaa}/sprites/9340b854-025c-40da-9387-385d38433bef.png +0 -0
  648. {kotonebot/kaa → kaa}/sprites/9483fae5-3a72-4684-9403-d25d2c602d3d.png +0 -0
  649. /kotonebot/kaa/sprites/a1087827-1065-4f35-b04f-854ddf2d7e70.png → /kaa/sprites/998391fa-c5a6-40cb-80d6-3b1c75a3fa91.png +0 -0
  650. /kotonebot/kaa/sprites/46198a1d-888e-4a12-827e-51cdd4fc30a2.png → /kaa/sprites/99d679f6-8371-46e7-a742-6180cc7e68f6.png +0 -0
  651. /kotonebot/kaa/sprites/a99307de-c12f-4cf5-921b-b80bf03bbac3.png → /kaa/sprites/9afa238e-be07-4d01-9e5c-350bf83d9884.png +0 -0
  652. /kotonebot/kaa/sprites/246f9799-5367-4fb4-877d-821fb4acad71.png → /kaa/sprites/9f7eba7c-2e9d-4d2a-9c8b-b9eadf9addd4.png +0 -0
  653. {kotonebot/kaa → kaa}/sprites/9fd0753f-c607-4d49-82d1-40bda27e014f.png +0 -0
  654. {kotonebot/interop/win → kaa/sprites}/__init__.py +0 -0
  655. /kotonebot/kaa/sprites/156cb3bd-0523-4a76-8747-8d4ce23fed7b.png → /kaa/sprites/a07ba9ce-3a90-42ae-b8c4-cba80a8fd676.png +0 -0
  656. {kotonebot/kaa → kaa}/sprites/a0bd6a5f-784d-4f0a-9d66-10f4b80c8d3e.png +0 -0
  657. /kotonebot/kaa/sprites/f7084b2c-5411-4180-9404-377240af1857.png → /kaa/sprites/a1c84ff9-9350-4927-bb0c-708e215ef721.png +0 -0
  658. {kotonebot/kaa → kaa}/sprites/a1df3af1-a3e7-4521-a085-e4dc3cd1cc57.png +0 -0
  659. {kotonebot/kaa → kaa}/sprites/a48324ae-7c1a-489e-b3c4-93d12267f88d.png +0 -0
  660. /kotonebot/kaa/sprites/7516da41-7cbf-4c18-8630-3baecc225764.png → /kaa/sprites/a8dc76c8-a90d-48c9-a20e-32d185b329c9.png +0 -0
  661. {kotonebot/kaa → kaa}/sprites/a9fcaf04-0c1f-4b0f-bb5b-ede9da96180f.png +0 -0
  662. /kotonebot/kaa/sprites/0ffd0b92-78f6-4661-a2c3-3c337b75d3bb.png → /kaa/sprites/abd8b312-348c-40b3-b034-921cefaf0bfe.png +0 -0
  663. /kotonebot/kaa/sprites/24458a04-ca4d-4330-9dd6-f074feac9a17.png → /kaa/sprites/acb20bc4-1109-40b8-9c14-526878a699f2.png +0 -0
  664. {kotonebot/kaa → kaa}/sprites/adc533a7-970b-4c5b-a037-2181531a35d6.png +0 -0
  665. /kotonebot/kaa/sprites/7cddb93a-175c-4875-a2fb-136cdfc365a7.png → /kaa/sprites/ae36e6ef-e2bf-4dd5-825a-c047432e3e52.png +0 -0
  666. /kotonebot/kaa/sprites/5aac4900-ccd2-4a72-9135-0804fe14e6e2.png → /kaa/sprites/ae5af81c-c75f-448b-88aa-c148cb728dfe.png +0 -0
  667. {kotonebot/kaa → kaa}/sprites/ae9fe233-9acc-4e96-ba8e-1fb1d9bc2ea5.png +0 -0
  668. /kotonebot/kaa/sprites/be2c3ab5-9d63-47bc-93f1-110b9668d5e2.png → /kaa/sprites/aeba7356-fc43-4450-8088-9f46a395bb00.png +0 -0
  669. {kotonebot/kaa → kaa}/sprites/b0283997-7931-476d-a92f-d7569f6ea34c.png +0 -0
  670. {kotonebot/kaa → kaa}/sprites/b2af59e9-60e3-4d97-8c72-c7ba092113a3.png +0 -0
  671. {kotonebot/kaa → kaa}/sprites/b2e1bf3c-2c36-4fb5-9db7-c10a29563a37.png +0 -0
  672. /kotonebot/kaa/sprites/fe0a26ac-906c-4809-9de5-43cb4a467a9d.png → /kaa/sprites/b4613fe1-10d8-47bc-88e8-7b729268e0e5.png +0 -0
  673. /kotonebot/kaa/sprites/50f138f4-7500-42c1-8121-2f03703d8f8f.png → /kaa/sprites/b4f86f2c-668d-48ed-bc1e-57886c57a731.png +0 -0
  674. {kotonebot/kaa → kaa}/sprites/b62bf889-da3c-495a-8707-f3bde73efe92.png +0 -0
  675. {kotonebot/kaa → kaa}/sprites/b6b94f21-ef4b-4425-9c7e-ca2b574b0add.png +0 -0
  676. /kotonebot/kaa/sprites/c542ba3e-e0c0-41a1-8cc7-dd7454b12400.png → /kaa/sprites/b83ae84f-79c0-4bd1-b8b8-86096cc3d5c1.png +0 -0
  677. /kotonebot/kaa/sprites/49587e50-e978-461f-b49c-7f92347923f5.png → /kaa/sprites/b949cf3e-4614-4fcd-8328-35b34234a9b2.png +0 -0
  678. {kotonebot/kaa → kaa}/sprites/bab6c393-692c-4681-ac0d-76c0d9dabea6.png +0 -0
  679. /kotonebot/kaa/sprites/e872aa76-2947-4209-abd7-5ecb56fdc9d6.png → /kaa/sprites/bb51dcf2-9041-4214-91a3-de2d55c1d864.png +0 -0
  680. /kotonebot/kaa/sprites/d7ceaf00-e488-4273-968c-315962bf4837.png → /kaa/sprites/bbc9449f-b923-4e56-844e-8e4cdbe803e3.png +0 -0
  681. {kotonebot/kaa → kaa}/sprites/bc7155ac-18c9-4335-9ec2-c8762d37a057.png +0 -0
  682. /kotonebot/kaa/sprites/2b3a82fd-79b3-400c-988a-248a7b277542.png → /kaa/sprites/bdb71eb9-15d7-4ce8-8622-b11d4eb20e90.png +0 -0
  683. /kotonebot/kaa/sprites/6e9ef52c-937f-47f1-9687-899a528d7599.png → /kaa/sprites/bddbdc46-2127-4688-ba26-15f2f87b9af4.png +0 -0
  684. /kotonebot/kaa/sprites/9a275932-f760-4373-ab27-86c5caf19136.png → /kaa/sprites/c08761c4-33ff-4f6c-85d4-102a1789b3a9.png +0 -0
  685. {kotonebot/kaa → kaa}/sprites/c3f536d6-a04a-4651-b3f9-dd2c22593f7f.png +0 -0
  686. /kotonebot/kaa/sprites/634b1421-7f65-452c-a4e2-e40a5028938a.png → /kaa/sprites/c52b6db3-c440-4db2-ae25-a27668c9b114.png +0 -0
  687. {kotonebot/kaa → kaa}/sprites/c5b7d67e-7260-4f08-a0e9-4d31ce9bbecf.png +0 -0
  688. {kotonebot/kaa → kaa}/sprites/c78c38cc-7b61-4dc4-820d-0a5b684ef52e.png +0 -0
  689. /kotonebot/kaa/sprites/ff232b25-39b4-4dcb-9e21-1d82b9e0bb7d.png → /kaa/sprites/c907c525-3d6a-4b82-8d10-91831cb37b1b.png +0 -0
  690. {kotonebot/kaa → kaa}/sprites/c948f136-416f-447e-8152-54a1cd1d1329.png +0 -0
  691. {kotonebot/kaa → kaa}/sprites/c954e153-d3e9-4488-869f-d00cfdfac5ee.png +0 -0
  692. /kotonebot/kaa/sprites/67176e48-eaa5-46dd-bbaf-85b1b324ba48.png → /kaa/sprites/ca8427c9-7af9-44dd-9960-7938222b84ea.png +0 -0
  693. {kotonebot/kaa → kaa}/sprites/cb3d0ca7-8d14-408a-a2f5-2e25f7b86d6c.png +0 -0
  694. /kotonebot/kaa/sprites/01106370-2321-4696-a60e-dc76b565a097.png → /kaa/sprites/cbde3ad5-276c-4826-a616-ab8692ab5a50.png +0 -0
  695. {kotonebot/kaa → kaa}/sprites/cbf4ce9c-f8d8-4fb7-a197-15bb9847df04.png +0 -0
  696. {kotonebot/kaa → kaa}/sprites/cc60b509-2ed5-493d-bb9f-333c6d2a6006.png +0 -0
  697. {kotonebot/kaa → kaa}/sprites/cc8a495d-330d-447d-8a80-a8a6ecc409c5.png +0 -0
  698. {kotonebot/kaa → kaa}/sprites/ccbcb114-7f73-43d1-904a-3a7ae660c531.png +0 -0
  699. {kotonebot/kaa → kaa}/sprites/ce1d1d6f-38f2-48bf-98bd-6e091c7ca5b8.png +0 -0
  700. {kotonebot/kaa → kaa}/sprites/ce20a856-5629-4f8e-a8e1-d1bd14e18e4f.png +0 -0
  701. {kotonebot/kaa → kaa}/sprites/cfc9c8e8-cbe1-49f0-9afa-ead7f9455a2e.png +0 -0
  702. /kotonebot/kaa/sprites/f7c7f2cf-337b-4dd6-a90b-7f5c452a1640.png → /kaa/sprites/d17f66dc-b4c5-4227-9e29-ec202cc2b1fe.png +0 -0
  703. /kotonebot/kaa/sprites/a4aabbbe-6400-4bcb-a95f-32a7d611bf5b.png → /kaa/sprites/d24d63c1-10ea-479f-868c-8e2d6936900a.png +0 -0
  704. {kotonebot/kaa → kaa}/sprites/d271a24f-efe8-424d-8fd5-f6b3756ba4ca.png +0 -0
  705. {kotonebot/kaa → kaa}/sprites/d3424d31-0502-4623-996e-f0194e5085ce.png +0 -0
  706. /kotonebot/kaa/sprites/b54343ba-8b17-4d72-b379-805ae3062d86.png → /kaa/sprites/d3c2a7a6-802d-407c-bc5b-aca5bb1741fa.png +0 -0
  707. {kotonebot/kaa → kaa}/sprites/d3cc3323-51af-4882-ae12-49e7384b746d.png +0 -0
  708. /kotonebot/kaa/sprites/71bbe862-b9f7-47ab-b4f1-f0b87732bd39.png → /kaa/sprites/d4941156-d2c4-4bad-9e42-80e2c409640b.png +0 -0
  709. {kotonebot/kaa → kaa}/sprites/d6b64759-26b7-45b1-bf8e-5c0d98611e0d.png +0 -0
  710. {kotonebot/kaa → kaa}/sprites/d7667903-7149-4f2f-9c15-d8a4b5f4d347.png +0 -0
  711. {kotonebot/kaa → kaa}/sprites/d83f338d-dde3-494b-9bea-cae511e3517c.png +0 -0
  712. /kotonebot/kaa/sprites/824c9efd-21ea-4e26-a1fa-9e909d8b98d6.png → /kaa/sprites/d8a19204-b2bd-430b-83d5-005e8cd08d20.png +0 -0
  713. /kotonebot/kaa/sprites/98a8e860-39cf-416c-b435-64a33579c6e8.png → /kaa/sprites/d9620175-115f-4a7e-9a8b-0728bd464929.png +0 -0
  714. {kotonebot/kaa → kaa}/sprites/d982d2b5-4bc0-4ae9-a516-f29c2848d64b.png +0 -0
  715. /kotonebot/kaa/sprites/8034f626-ae01-42c0-8f73-a3d1c9aaff5c.png → /kaa/sprites/da0f5694-01e2-4015-b7c5-e6827fe1bb51.png +0 -0
  716. {kotonebot/kaa → kaa}/sprites/da439e8c-3b74-4371-9657-0736d826c7d1.png +0 -0
  717. {kotonebot/kaa → kaa}/sprites/daf3d823-b7f1-4584-acf3-90b9d880332c.png +0 -0
  718. {kotonebot/kaa → kaa}/sprites/db7d3f03-1f7f-43bf-8125-f7c2d345fca2.png +0 -0
  719. /kotonebot/kaa/sprites/23a39277-a6ac-4a49-9c6a-1fca1a3a4d9b.png → /kaa/sprites/dbfd0dd6-abeb-4fd0-a072-e6319a9e0981.png +0 -0
  720. {kotonebot/kaa → kaa}/sprites/de325534-3fd3-480a-9eb8-eb47960a753a.png +0 -0
  721. /kotonebot/kaa/sprites/86db7d47-f634-4be4-b9e2-371e7868aded.png → /kaa/sprites/deae7249-6fea-4059-b8fd-6fdd8836b17c.png +0 -0
  722. {kotonebot/kaa → kaa}/sprites/df991b42-ed8e-4f2c-bf0c-aa7522f147b6.png +0 -0
  723. /kotonebot/kaa/sprites/7d817b98-53ff-491c-b608-b07a0c143009.png → /kaa/sprites/e153cfbb-1a2e-4f66-a884-e110c0a83d53.png +0 -0
  724. /kotonebot/kaa/sprites/981e63c5-d615-44dd-9ad6-60f6b415cdaf.png → /kaa/sprites/e2e253b8-0536-41ef-9982-292dc4a2fbc3.png +0 -0
  725. {kotonebot/kaa → kaa}/sprites/e4683def-8d1d-472b-a5ab-bb3885c0c98e.png +0 -0
  726. /kotonebot/kaa/sprites/f1fcc488-584d-4c61-8489-8b1b539151a9.png → /kaa/sprites/e5cec3e1-aa3c-4c73-880c-2341d22c68ce.png +0 -0
  727. /kotonebot/kaa/sprites/26262f2d-e12b-4992-8c14-15679cae4298.png → /kaa/sprites/e5da45b7-2315-49c0-ba97-58d82e139ff5.png +0 -0
  728. {kotonebot/kaa → kaa}/sprites/e5e84f9e-28da-4cf4-bcba-c9145fe39b07.png +0 -0
  729. {kotonebot/kaa → kaa}/sprites/e6b45405-cd9f-4c6e-a9f1-6ec953747c65.png +0 -0
  730. {kotonebot/kaa → kaa}/sprites/e88c9ad1-ec37-4fcd-b086-862e1e7ce8fd.png +0 -0
  731. {kotonebot/kaa → kaa}/sprites/e9ee330d-dfca-440e-8b8c-0a3b4e8c8730.png +0 -0
  732. {kotonebot/kaa → kaa}/sprites/ea1ba124-9cb3-4427-969a-bacd47e7d920.png +0 -0
  733. /kotonebot/kaa/sprites/9a7f06a5-448b-4410-84fa-0a4c938620f7.png → /kaa/sprites/ea3e0843-df72-4dda-a933-7647c2ca356b.png +0 -0
  734. /kotonebot/kaa/sprites/f62bfba7-3d6b-4bdd-9821-ca8370ee2ff4.png → /kaa/sprites/ea4f97d8-cc07-425b-a594-1ee698d257ec.png +0 -0
  735. {kotonebot/kaa → kaa}/sprites/eaad330d-4e50-4b55-be2c-8da0f72764d9.png +0 -0
  736. {kotonebot/kaa → kaa}/sprites/eaba6ebe-f0df-4918-aee5-ef4e3ffedcf0.png +0 -0
  737. /kotonebot/kaa/sprites/24d55c2b-dfe8-4a80-9f39-94045478f5a5.png → /kaa/sprites/eb9a68bf-624e-4faa-ae44-c5aafa1156e9.png +0 -0
  738. /kotonebot/kaa/sprites/9932dfd8-7c97-47dd-b6bb-e8c8d593f762.png → /kaa/sprites/eda4839f-5487-4444-ac64-216d94b33d0e.png +0 -0
  739. {kotonebot/kaa → kaa}/sprites/ee4e512b-4982-49b6-9c71-31984b58e1d0.png +0 -0
  740. {kotonebot/kaa → kaa}/sprites/eef25cf9-afd0-43b1-b9c5-fbd997bd5fe0.png +0 -0
  741. /kotonebot/kaa/sprites/cf5dcb2b-c5bd-4e38-a2bb-2673db821f79.png → /kaa/sprites/f03a8a47-9ae8-48b3-ae2c-8df04d9a9ea9.png +0 -0
  742. /kotonebot/kaa/sprites/13a5d0e7-776e-40c2-8a52-dd3e016913b4.png → /kaa/sprites/f0cbde7d-157d-4964-811f-bd8491946ad4.png +0 -0
  743. /kotonebot/kaa/sprites/fc7e4b97-0d87-4de9-b7ac-87ca670b6ff2.png → /kaa/sprites/f0dcbc16-20ed-4852-bfe2-5ad0b1df5380.png +0 -0
  744. {kotonebot/kaa → kaa}/sprites/f1f21925-3e22-4dd1-b53b-bb52bcf26c2b.png +0 -0
  745. /kotonebot/kaa/sprites/88d89e04-2242-4ed7-be23-edd6535121ac.png → /kaa/sprites/f34d2983-c306-4b26-be19-c8aceb41879c.png +0 -0
  746. {kotonebot/kaa → kaa}/sprites/f43c313b-8a7b-467b-8442-fc5bcb8b4388.png +0 -0
  747. /kotonebot/kaa/sprites/e857f00d-81bd-4fbc-9043-c9252a075da3.png → /kaa/sprites/f4684588-dae3-4a18-ba44-153f37339652.png +0 -0
  748. {kotonebot/kaa → kaa}/sprites/f5c16d2f-ebc5-4617-9b96-971696af7c52.png +0 -0
  749. /kotonebot/kaa/sprites/5479a383-3e75-4082-a118-fdae784228f4.png → /kaa/sprites/f5db23dd-9ba4-4dac-bf7d-fe6f6593d464.png +0 -0
  750. /kotonebot/kaa/sprites/279ab0e2-1601-4bfb-8d27-4019fc4dcd3d.png → /kaa/sprites/f6a458d4-453d-404a-b37d-3ecd1f4ec9ca.png +0 -0
  751. {kotonebot/kaa → kaa}/sprites/f6ca6bd3-543f-4779-8367-c5c883f04b95.png +0 -0
  752. /kotonebot/kaa/sprites/91e2c2d3-b629-4c49-97d5-ed99dada3243.png → /kaa/sprites/fa841e1c-c2b0-47f9-aff2-6a2accfaccb1.png +0 -0
  753. {kotonebot/kaa → kaa}/sprites/fad5eec2-5fd5-412f-9abb-987a3087dc54.png +0 -0
  754. /kotonebot/kaa/sprites/66eee7a5-3d0e-430f-850b-7fff14b3671f.png → /kaa/sprites/fd242e23-dc69-45a0-94ee-53172f793687.png +0 -0
  755. /kotonebot/kaa/sprites/db4ca499-5cd3-4332-b232-28ddbedd4741.png → /kaa/sprites/ff692c66-7c5c-4105-a456-789f8d78cd88.png +0 -0
  756. /kotonebot/kaa/sprites/8ed3f006-facb-4ba0-9034-24a3a7729012.png → /kaa/sprites/ff86b3e5-e0e8-46c6-a645-e7ff10c32baf.png +0 -0
  757. {kotonebot/kaa → kaa/tasks}/__init__.py +0 -0
  758. {kotonebot/kaa/resources → kaa/tasks/actions}/__init__.py +0 -0
  759. {kotonebot/kaa → kaa}/tasks/clear_logs.py +0 -0
  760. {kotonebot/kaa/sprites → kaa/tasks/daily}/__init__.py +0 -0
  761. {kotonebot/kaa/tasks → kaa/tasks/produce}/__init__.py +0 -0
  762. {kotonebot/kaa → kaa}/util/trace.py +0 -0
  763. {ksaa-2025.9b1.dist-info → ksaa-2025.9b2.dist-info}/WHEEL +0 -0
  764. {ksaa-2025.9b1.dist-info → ksaa-2025.9b2.dist-info}/licenses/LICENSE +0 -0
@@ -1,63 +0,0 @@
1
- import logging
2
-
3
- from cv2.typing import MatLike
4
-
5
- from .geometry import Size
6
- from kotonebot.util import cv2_imread
7
-
8
- logger = logging.getLogger(__name__)
9
-
10
- class Image:
11
- """
12
- 图像类。
13
- """
14
- def __init__(
15
- self,
16
- pixels: MatLike | None = None,
17
- file_path: str | None = None,
18
- lazy_load: bool = False,
19
- name: str | None = None,
20
- description: str | None = None
21
- ):
22
- """
23
- 从内存数据或图像文件创建图像类。
24
-
25
- :param pixels: 图像数据。格式必须为 BGR。
26
- :param file_path: 图像文件路径。
27
- :param lazy_load: 是否延迟加载图像数据。
28
- 若为 False,立即载入,否则仅当访问图像数据时才载入。仅当从文件创建图像类时生效。
29
- :param name: 图像名称。
30
- :param description: 图像描述。
31
- """
32
- self.name: str | None = name
33
- """图像名称。"""
34
- self.description: str | None = description
35
- """图像描述。"""
36
- self.file_path: str | None = file_path
37
- """图像的文件路径。"""
38
- self.__pixels: MatLike | None = None
39
- # 立即加载
40
- if not lazy_load and self.file_path:
41
- _ = self.pixels
42
- # 传入像素数据而不是文件
43
- if pixels is not None:
44
- self.__pixels = pixels
45
-
46
- @property
47
- def pixels(self) -> MatLike:
48
- """图像的像素数据。"""
49
- if self.__pixels is None:
50
- if not self.file_path:
51
- raise ValueError('Either pixels or file_path must be provided.')
52
- logger.debug('Loading image "%s" from %s...', self.name or '(unnamed)', self.file_path)
53
- self.__pixels = cv2_imread(self.file_path)
54
- return self.__pixels
55
-
56
- @property
57
- def size(self) -> Size:
58
- return Size(self.pixels.shape[1], self.pixels.shape[0])
59
-
60
- class Template(Image):
61
- """
62
- 模板图像类。
63
- """
File without changes
kotonebot/tools/mirror.py DELETED
@@ -1,354 +0,0 @@
1
- import wx
2
- import cv2
3
- import numpy as np
4
- import time
5
- from typing import Optional, Tuple, Callable
6
- from threading import Thread, Lock
7
- from cv2.typing import MatLike
8
- from queue import Queue
9
-
10
- from kotonebot.client.device import Device
11
-
12
- class DeviceMirrorPanel(wx.Panel):
13
- def __init__(self, parent, device: Device, log_callback=None):
14
- super().__init__(parent)
15
- self.device = device
16
- self.screen_bitmap: Optional[wx.Bitmap] = None
17
- self.fps = 0
18
- self.last_frame_time = time.time()
19
- self.frame_count = 0
20
- self.is_running = True
21
- self.lock = Lock()
22
- self.last_mouse_pos = (0, 0)
23
- self.is_dragging = False
24
- self.screenshot_interval = 0 # 截图耗时(ms)
25
- self.log_callback = log_callback
26
- self.operation_queue = Queue()
27
-
28
- # 设置背景色为黑色
29
- self.SetBackgroundColour(wx.BLACK)
30
-
31
- # 双缓冲,减少闪烁
32
- self.SetDoubleBuffered(True)
33
-
34
- # 绑定事件
35
- self.Bind(wx.EVT_PAINT, self.on_paint)
36
- self.Bind(wx.EVT_SIZE, self.on_size)
37
- self.Bind(wx.EVT_LEFT_DOWN, self.on_left_down)
38
- self.Bind(wx.EVT_LEFT_UP, self.on_left_up)
39
- self.Bind(wx.EVT_MOTION, self.on_motion)
40
-
41
- # 启动刷新线程
42
- self.update_thread = Thread(target=self.update_screen, daemon=True)
43
- self.update_thread.start()
44
-
45
- # 启动操作处理线程
46
- self.operation_thread = Thread(target=self.process_operations, daemon=True)
47
- self.operation_thread.start()
48
-
49
- def process_operations(self):
50
- """处理设备操作的线程"""
51
- while self.is_running:
52
- try:
53
- operation = self.operation_queue.get()
54
- if operation is not None:
55
- operation()
56
- self.operation_queue.task_done()
57
- except Exception as e:
58
- if self.log_callback:
59
- self.log_callback(f"操作执行错误: {e}")
60
-
61
- def execute_device_operation(self, operation: Callable):
62
- """将设备操作添加到队列"""
63
- self.operation_queue.put(operation)
64
-
65
- def update_screen(self):
66
- while self.is_running:
67
- try:
68
- # 获取设备截图并计时
69
- start_time = time.time()
70
- frame = self.device.screenshot()
71
- end_time = time.time()
72
- self.screenshot_interval = int((end_time - start_time) * 1000)
73
-
74
- if frame is None:
75
- continue
76
-
77
- # 计算FPS
78
- current_time = time.time()
79
- self.frame_count += 1
80
- if current_time - self.last_frame_time >= 1.0:
81
- self.fps = self.frame_count
82
- self.frame_count = 0
83
- self.last_frame_time = current_time
84
-
85
- # 转换为wx.Bitmap
86
- height, width = frame.shape[:2]
87
- frame = cv2.cvtColor(frame, cv2.COLOR_BGR2RGB)
88
- wximage = wx.Bitmap.FromBuffer(width, height, frame)
89
-
90
- with self.lock:
91
- self.screen_bitmap = wximage
92
-
93
- # 请求重绘
94
- wx.CallAfter(self.Refresh)
95
-
96
- # 控制刷新率
97
- time.sleep(1/60)
98
-
99
- except Exception as e:
100
- print(f"Error updating screen: {e}")
101
- time.sleep(1)
102
-
103
- def on_paint(self, event):
104
- dc = wx.BufferedPaintDC(self)
105
-
106
- # 清空背景
107
- dc.SetBackground(wx.Brush(wx.BLACK))
108
- dc.Clear()
109
-
110
- if not self.screen_bitmap:
111
- return
112
-
113
- # 绘制设备画面
114
- with self.lock:
115
- # 计算缩放比例,保持宽高比
116
- panel_width, panel_height = self.GetSize()
117
- bitmap_width = self.screen_bitmap.GetWidth()
118
- bitmap_height = self.screen_bitmap.GetHeight()
119
-
120
- scale = min(panel_width/bitmap_width, panel_height/bitmap_height)
121
- scaled_width = int(bitmap_width * scale)
122
- scaled_height = int(bitmap_height * scale)
123
-
124
- # 居中显示
125
- x = (panel_width - scaled_width) // 2
126
- y = (panel_height - scaled_height) // 2
127
-
128
- if scale != 1:
129
- img = self.screen_bitmap.ConvertToImage()
130
- img = img.Scale(scaled_width, scaled_height, wx.IMAGE_QUALITY_HIGH)
131
- bitmap = wx.Bitmap(img)
132
- else:
133
- bitmap = self.screen_bitmap
134
-
135
- dc.DrawBitmap(bitmap, x, y)
136
-
137
- # 绘制FPS和截图时间
138
- dc.SetTextForeground(wx.GREEN)
139
- dc.SetFont(wx.Font(10, wx.FONTFAMILY_DEFAULT, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_BOLD))
140
- dc.DrawText(f"FPS: {self.fps}", 10, 10)
141
- dc.DrawText(f"Interval: {self.screenshot_interval}ms", 10, 30)
142
-
143
- def on_size(self, event):
144
- self.Refresh()
145
- event.Skip()
146
-
147
- def get_device_coordinates(self, x: int, y: int) -> Tuple[int, int]:
148
- """将面板坐标转换为设备坐标"""
149
- if not self.screen_bitmap:
150
- return (0, 0)
151
-
152
- panel_width, panel_height = self.GetSize()
153
- bitmap_width = self.screen_bitmap.GetWidth()
154
- bitmap_height = self.screen_bitmap.GetHeight()
155
-
156
- scale = min(panel_width/bitmap_width, panel_height/bitmap_height)
157
- scaled_width = int(bitmap_width * scale)
158
- scaled_height = int(bitmap_height * scale)
159
-
160
- # 计算显示区域的偏移
161
- x_offset = (panel_width - scaled_width) // 2
162
- y_offset = (panel_height - scaled_height) // 2
163
-
164
- # 转换坐标
165
- device_x = int((x - x_offset) / scale)
166
- device_y = int((y - y_offset) / scale)
167
-
168
- # 确保坐标在设备范围内
169
- device_x = max(0, min(device_x, bitmap_width-1))
170
- device_y = max(0, min(device_y, bitmap_height-1))
171
-
172
- return (device_x, device_y)
173
-
174
- def on_left_down(self, event):
175
- self.last_mouse_pos = event.GetPosition()
176
- self.is_dragging = True
177
- event.Skip()
178
-
179
- def on_left_up(self, event):
180
- if not self.is_dragging:
181
- return
182
-
183
- self.is_dragging = False
184
- pos = event.GetPosition()
185
-
186
- # 如果鼠标位置没有明显变化,执行点击
187
- if abs(pos[0] - self.last_mouse_pos[0]) < 5 and abs(pos[1] - self.last_mouse_pos[1]) < 5:
188
- device_x, device_y = self.get_device_coordinates(*pos)
189
- self.execute_device_operation(lambda: self.device.click(device_x, device_y))
190
- if self.log_callback:
191
- self.log_callback(f"点击: ({device_x}, {device_y})")
192
- else:
193
- # 执行滑动
194
- start_x, start_y = self.get_device_coordinates(*self.last_mouse_pos)
195
- end_x, end_y = self.get_device_coordinates(*pos)
196
- self.execute_device_operation(lambda: self.device.swipe(start_x, start_y, end_x, end_y))
197
- if self.log_callback:
198
- self.log_callback(f"滑动: ({start_x}, {start_y}) -> ({end_x}, {end_y})")
199
-
200
- event.Skip()
201
-
202
- def on_motion(self, event):
203
- if not self.is_dragging:
204
- event.Skip()
205
- return
206
-
207
- event.Skip()
208
-
209
- class DeviceMirrorFrame(wx.Frame):
210
- def __init__(self, device: Device):
211
- super().__init__(None, title="设备镜像", size=(800, 600))
212
-
213
- # 创建分割窗口
214
- self.splitter = wx.SplitterWindow(self)
215
-
216
- # 创建左侧面板(包含控制区域和日志区域)
217
- self.left_panel = wx.Panel(self.splitter)
218
- left_sizer = wx.BoxSizer(wx.VERTICAL)
219
-
220
- # 控制区域
221
- self.control_panel = wx.Panel(self.left_panel)
222
- self.init_control_panel()
223
- left_sizer.Add(self.control_panel, 0, wx.EXPAND | wx.ALL, 5)
224
-
225
- # 日志区域
226
- self.log_text = wx.TextCtrl(self.left_panel, style=wx.TE_MULTILINE | wx.TE_READONLY | wx.HSCROLL)
227
- self.log_text.SetBackgroundColour(wx.BLACK)
228
- self.log_text.SetForegroundColour(wx.GREEN)
229
- self.log_text.SetFont(wx.Font(9, wx.FONTFAMILY_TELETYPE, wx.FONTSTYLE_NORMAL, wx.FONTWEIGHT_NORMAL))
230
- left_sizer.Add(self.log_text, 1, wx.EXPAND | wx.ALL, 5)
231
-
232
- self.left_panel.SetSizer(left_sizer)
233
-
234
- # 创建设备画面
235
- self.device_panel = DeviceMirrorPanel(self.splitter, device, self.log)
236
-
237
- # 设置分割
238
- self.splitter.SplitVertically(self.left_panel, self.device_panel)
239
- self.splitter.SetMinimumPaneSize(200)
240
-
241
- # 保存设备引用
242
- self.device = device
243
-
244
- def log(self, message: str):
245
- """添加日志"""
246
- timestamp = time.strftime("%H:%M:%S", time.localtime())
247
- wx.CallAfter(self.log_text.AppendText, f"[{timestamp}] {message}\n")
248
-
249
- def init_control_panel(self):
250
- vbox = wx.BoxSizer(wx.VERTICAL)
251
-
252
- # 添加控制按钮
253
- btn_get_resolution = wx.Button(self.control_panel, label="获取分辨率")
254
- btn_get_resolution.Bind(wx.EVT_BUTTON, self.on_get_resolution)
255
- vbox.Add(btn_get_resolution, 0, wx.EXPAND | wx.ALL, 5)
256
-
257
- btn_get_orientation = wx.Button(self.control_panel, label="获取设备方向")
258
- btn_get_orientation.Bind(wx.EVT_BUTTON, self.on_get_orientation)
259
- vbox.Add(btn_get_orientation, 0, wx.EXPAND | wx.ALL, 5)
260
-
261
- # 启动APP区域
262
- hbox = wx.BoxSizer(wx.HORIZONTAL)
263
- self.package_input = wx.TextCtrl(self.control_panel)
264
- hbox.Add(self.package_input, 1, wx.EXPAND | wx.RIGHT, 5)
265
- btn_launch_app = wx.Button(self.control_panel, label="启动APP")
266
- btn_launch_app.Bind(wx.EVT_BUTTON, self.on_launch_app)
267
- hbox.Add(btn_launch_app, 0)
268
- vbox.Add(hbox, 0, wx.EXPAND | wx.ALL, 5)
269
-
270
- btn_get_current_app = wx.Button(self.control_panel, label="获取前台APP")
271
- btn_get_current_app.Bind(wx.EVT_BUTTON, self.on_get_current_app)
272
- vbox.Add(btn_get_current_app, 0, wx.EXPAND | wx.ALL, 5)
273
-
274
- self.control_panel.SetSizer(vbox)
275
-
276
- def on_get_resolution(self, event):
277
- """获取分辨率"""
278
- try:
279
- width, height = self.device.screen_size
280
- self.log(f"设备分辨率: {width}x{height}")
281
- except Exception as e:
282
- self.log(f"获取分辨率失败: {e}")
283
-
284
- def on_get_orientation(self, event):
285
- """获取设备方向"""
286
- try:
287
- orientation = self.device.detect_orientation()
288
- orientation_text = "横屏" if orientation == "landscape" else "竖屏"
289
- self.log(f"设备方向: {orientation_text}")
290
- except Exception as e:
291
- self.log(f"获取设备方向失败: {e}")
292
-
293
- def on_launch_app(self, event):
294
- """启动APP"""
295
- package_name = self.package_input.GetValue().strip()
296
- if not package_name:
297
- self.log("请输入包名")
298
- return
299
- try:
300
- # 使用新的 API 通过 commands 属性访问平台特定方法
301
- if hasattr(self.device, 'commands') and hasattr(self.device.commands, 'launch_app'):
302
- self.device.commands.launch_app(package_name)
303
- self.log(f"启动APP: {package_name}")
304
- else:
305
- self.log("当前设备不支持启动APP功能")
306
- except Exception as e:
307
- self.log(f"启动APP失败: {e}")
308
-
309
- def on_get_current_app(self, event):
310
- """获取前台APP"""
311
- try:
312
- # 使用新的 API 通过 commands 属性访问平台特定方法
313
- if hasattr(self.device, 'commands') and hasattr(self.device.commands, 'current_package'):
314
- package = self.device.commands.current_package()
315
- if package:
316
- self.log(f"前台APP: {package}")
317
- else:
318
- self.log("未获取到前台APP")
319
- else:
320
- self.log("当前设备不支持获取前台APP功能")
321
- except Exception as e:
322
- self.log(f"获取前台APP失败: {e}")
323
-
324
- def on_quit(self, event):
325
- self.device_panel.is_running = False
326
- self.Close()
327
-
328
- def show_device_mirror(device: Device):
329
- """显示设备镜像窗口"""
330
- app = wx.App()
331
- frame = DeviceMirrorFrame(device)
332
- frame.Show()
333
- app.MainLoop()
334
-
335
- if __name__ == "__main__":
336
- # 测试代码
337
- from kotonebot.client.device import AndroidDevice
338
- from kotonebot.client.implements.adb import AdbImpl
339
- from kotonebot.client.implements.uiautomator2 import UiAutomator2Impl
340
- from adbutils import adb
341
-
342
- print("server version:", adb.server_version())
343
- adb.connect("127.0.0.1:5555")
344
- print("devices:", adb.device_list())
345
- d = adb.device_list()[-1]
346
-
347
- # 使用新的 API
348
- dd = AndroidDevice(d)
349
- adb_imp = AdbImpl(d) # 直接传入 adb 连接
350
- dd._touch = adb_imp
351
- dd._screenshot = UiAutomator2Impl(dd) # UiAutomator2Impl 可能还需要 device 对象
352
- dd.commands = adb_imp # 设置 Android 特定命令
353
-
354
- show_device_mirror(dd)
kotonebot/ui/__init__.py DELETED
File without changes
@@ -1,36 +0,0 @@
1
- import requests
2
- import os
3
-
4
- def upload(file_path: str) -> str:
5
- """
6
- 上传文件到 paste.sensio.no
7
-
8
- Args:
9
- file_path: 要上传的文件路径
10
-
11
- Returns:
12
- str: 上传后的 URL
13
- """
14
- url = 'https://paste.sensio.no/'
15
- headers = {
16
- 'accept': 'text/plain',
17
- 'User-Agent': 'KAA',
18
- 'x-uuid': ''
19
- }
20
-
21
- files = {
22
- 'file': (os.path.basename(file_path), open(file_path, 'rb'))
23
- }
24
-
25
- response = requests.post(url, files=files, headers=headers, allow_redirects=False)
26
-
27
- if response.status_code != 200:
28
- raise Exception(f"Upload failed with status code {response.status_code}")
29
-
30
- return response.text.strip()
31
-
32
- if __name__ == "__main__":
33
- test_file = "version"
34
- if os.path.exists(test_file):
35
- result = upload(test_file)
36
- print(f"Upload result: {result}")
@@ -1,54 +0,0 @@
1
- import requests
2
- import os
3
-
4
- def upload(file_path: str) -> str:
5
- url = 'https://tmpsend.com/upload'
6
- headers = {
7
- 'User-Agent': 'Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/133.0.0.0 Safari/537.36',
8
- 'Referer': 'https://tmpsend.com/',
9
- }
10
-
11
- file_name = os.path.basename(file_path)
12
- file_size = os.path.getsize(file_path)
13
-
14
- # 第一次请求:添加文件信息
15
- files = {
16
- 'action': (None, 'add'),
17
- 'name': (None, file_name),
18
- 'size': (None, str(file_size)),
19
- 'file': (file_name, open(file_path, 'rb'))
20
- }
21
-
22
- response = requests.post(url, headers=headers, files=files)
23
- if response.status_code != 200:
24
- raise Exception(f"Upload failed with status code {response.status_code}")
25
-
26
- result = response.json()
27
- if result.get('hasError'):
28
- raise Exception(result.get('error'))
29
-
30
- file_id = result.get('id')
31
- if not file_id:
32
- raise Exception("Failed to get file ID")
33
-
34
- # 第二次请求:上传实际文件
35
- upload_files = {
36
- 'action': (None, 'upload'),
37
- 'id': (None, file_id),
38
- 'name': (None, file_name),
39
- 'size': (None, str(file_size)),
40
- 'start': (None, '0'),
41
- 'end': (None, str(file_size)),
42
- 'data': (file_name, open(file_path, 'rb'), 'application/octet-stream')
43
- }
44
-
45
- upload_response = requests.post(url, headers=headers, files=upload_files)
46
- if upload_response.status_code != 200:
47
- raise Exception(f"File upload failed with status code {upload_response.status_code}")
48
-
49
- return 'https://tmpsend.com/' + file_id
50
-
51
- if __name__ == "__main__":
52
- file_path = r"主题1.thmx"
53
- print(upload(file_path))
54
-
@@ -1,3 +0,0 @@
1
- from .protocol import PushkitProtocol
2
- from .wxpusher import Wxpusher
3
-
@@ -1,87 +0,0 @@
1
- import os
2
- import tempfile
3
- from pathlib import Path
4
- from typing import Sequence
5
-
6
- import cv2
7
- import requests
8
- import numpy as np
9
- from cv2.typing import MatLike
10
- from dotenv import load_dotenv
11
-
12
- load_dotenv()
13
-
14
- def _save_temp_image(image: MatLike) -> Path:
15
- """将OpenCV图片保存为临时文件"""
16
- temp_file = Path(tempfile.mktemp(suffix='.jpg'))
17
- cv2.imwrite(str(temp_file), image)
18
- return temp_file
19
-
20
- def _upload_single(image: MatLike | str) -> str:
21
- """
22
- 上传单张图片到freeimage.host
23
-
24
- :param image: OpenCV MatLike 或本地图片文件路径
25
- """
26
- api_url = 'https://freeimage.host/api/1/upload'
27
- api_key = os.getenv('FREEIMAGEHOST_KEY')
28
-
29
- if not api_key:
30
- raise RuntimeError('Environment variable FREEIMAGEHOST_KEY is not set')
31
-
32
- # 处理输入
33
- temp_file = None
34
- if isinstance(image, str):
35
- # 本地文件路径
36
- files = {'source': open(image, 'rb')}
37
- else:
38
- # 保存OpenCV图片为临时文件
39
- temp_file = _save_temp_image(image)
40
- files = {'source': open(temp_file, 'rb')}
41
-
42
- data = {
43
- 'key': api_key,
44
- 'action': 'upload',
45
- 'format': 'json'
46
- }
47
-
48
- try:
49
- # 发送POST请求
50
- response = requests.post(api_url, data=data, files=files)
51
-
52
- if response.status_code != 200:
53
- raise RuntimeError(f'Upload failed: HTTP {response.status_code}')
54
-
55
- result = response.json()
56
-
57
- if result['status_code'] != 200:
58
- raise RuntimeError(f'Upload failed: API {result["status_txt"]}')
59
-
60
- return result['image']['url']
61
-
62
- finally:
63
- # 清理临时文件
64
- files['source'].close()
65
- if temp_file and temp_file.exists():
66
- temp_file.unlink()
67
-
68
- def upload(images: MatLike | str | Sequence[MatLike | str]) -> list[str]:
69
- """上传一张或多张图片到freeimage.host
70
-
71
- Args:
72
- images: 单张图片或图片列表。每个图片可以是OpenCV图片对象或本地图片文件路径
73
-
74
- Returns:
75
- 上传后的图片URL列表
76
- """
77
- if isinstance(images, (str, np.ndarray)):
78
- _images = [images]
79
- elif isinstance(images, Sequence):
80
- _images = [img for img in images]
81
- else:
82
- raise ValueError("Invalid input type")
83
-
84
- return [_upload_single(img) for img in _images]
85
-
86
- if __name__ == "__main__":
87
- print(upload(cv2.imread("res/sprites/jp/common/button_close.png")))
@@ -1,13 +0,0 @@
1
- from typing import Protocol
2
-
3
- from cv2.typing import MatLike
4
-
5
- class PushkitProtocol(Protocol):
6
- def push(
7
- self,
8
- title: str,
9
- message: str,
10
- *,
11
- images: list[str | MatLike] | None = None,
12
- ) -> None:
13
- ...
@@ -1,53 +0,0 @@
1
- import os
2
- import json
3
- from typing import Sequence
4
- import requests
5
- from cv2.typing import MatLike
6
- from dotenv import dotenv_values
7
-
8
- from .image_host import upload
9
- from .protocol import PushkitProtocol
10
-
11
- config = dotenv_values(".env")
12
-
13
- class Wxpusher(PushkitProtocol):
14
- def __init__(self, app_token: str | None = None, uid: str | None = None):
15
- self.app_token = app_token or config["WXPUSHER_APP_TOKEN"]
16
- self.uid = uid or config["WXPUSHER_UID"]
17
-
18
- def push(self, title: str, message: str, *, images: Sequence[str | MatLike] | None = None) -> None:
19
- summary = title
20
- content = message
21
-
22
- if images:
23
- image_urls = upload(images)
24
- img_md = "\n".join([f"![{img_url}]({img_url})" for img_url in image_urls])
25
- content = content + "\n" + img_md
26
-
27
- data = {
28
- "appToken": self.app_token,
29
- "uid": self.uid,
30
- "summary": summary,
31
- "content": content,
32
- "contentType": 3, # 1: 文本 2: HTML 3: Markdown
33
- "uids": [self.uid],
34
- "verifyPay": False,
35
- "verifyPayType": 0
36
- }
37
-
38
- response = requests.post(
39
- "http://wxpusher.zjiecode.com/api/send/message",
40
- json=data
41
- )
42
- result = response.json()
43
-
44
- if result["code"] != 1000 or not result["success"]:
45
- raise RuntimeError(f"推送失败: {result['msg']}")
46
-
47
- # TODO: 极简推送 https://wxpusher.zjiecode.com/docs/#/?id=spt
48
-
49
- if __name__ == "__main__":
50
- import cv2
51
- wxpusher = Wxpusher()
52
- wxpusher.push("测试图片", "测试图片", images=[cv2.imread("res/sprites/jp/common/button_close.png")])
53
-