codingpirates-maze 0.3.0__tar.gz → 0.4.0__tar.gz

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 (774) hide show
  1. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/PKG-INFO +1 -1
  2. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/pyproject.toml +1 -1
  3. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/pyproject.toml.orig +1 -1
  4. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/maze.py +9 -13
  5. codingpirates_maze-0.4.0/src/maze/puzzle.py +37 -0
  6. codingpirates_maze-0.4.0/src/maze/resources.py +115 -0
  7. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/screencapture.py +4 -2
  8. codingpirates_maze-0.3.0/src/maze/puzzle.py +0 -75
  9. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/README.md +0 -0
  10. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/importer/__init__.py +0 -0
  11. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/importer/code_blocks.py +0 -0
  12. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/importer/convert_level.py +0 -0
  13. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/importer/create_course.py +0 -0
  14. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/importer/lesson.md.j2 +0 -0
  15. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/importer/maze.py.j2 +0 -0
  16. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/importer/test.py +0 -0
  17. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/importer/test_all.py +0 -0
  18. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/__init__.py +0 -0
  19. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/bee.py +0 -0
  20. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/beeshape.py +0 -0
  21. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/birds.py +0 -0
  22. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/collector.py +0 -0
  23. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/farmer.py +0 -0
  24. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/harvester.py +0 -0
  25. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/bee/background.png +0 -0
  26. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/bee/cloud.gif +0 -0
  27. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/bee/honeycomb.gif +0 -0
  28. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/bee/path.gif +0 -0
  29. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/bee/purple_flower.gif +0 -0
  30. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/bee/red_flower.gif +0 -0
  31. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/.gitignore +0 -0
  32. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/background.png +0 -0
  33. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/monster.gif +0 -0
  34. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/path.gif +0 -0
  35. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/tnt.gif +0 -0
  36. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/wall_1.gif +0 -0
  37. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/wall_2.gif +0 -0
  38. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/wall_3.gif +0 -0
  39. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/wall_4.gif +0 -0
  40. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/birds/wall_5.gif +0 -0
  41. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/collector/.gitignore +0 -0
  42. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/collector/crystal.gif +0 -0
  43. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/collector/floor_1.gif +0 -0
  44. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/collector/floor_2.gif +0 -0
  45. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/collector/floor_3.gif +0 -0
  46. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/collector/floor_4.gif +0 -0
  47. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/collector/wall_1.gif +0 -0
  48. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/collector/wall_2.gif +0 -0
  49. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/farmer/background.png +0 -0
  50. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/farmer/corn.gif +0 -0
  51. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/farmer/hole.gif +0 -0
  52. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/farmer/lettuce.gif +0 -0
  53. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/farmer/path.gif +0 -0
  54. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/farmer/pile.gif +0 -0
  55. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/farmer/pumpkin.gif +0 -0
  56. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/farmer/sprout.gif +0 -0
  57. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/pvz/background.gif +0 -0
  58. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/pvz/flower.gif +0 -0
  59. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/pvz/obstacle.gif +0 -0
  60. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/pvz/path.gif +0 -0
  61. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/images/pvz/pumpkin.gif +0 -0
  62. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra14a_2023.json +0 -0
  63. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra14a_2024.json +0 -0
  64. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra14a_2025.json +0 -0
  65. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra15a_2023.json +0 -0
  66. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra15a_2024.json +0 -0
  67. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra15a_2025.json +0 -0
  68. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra16a_2023.json +0 -0
  69. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra16a_2024.json +0 -0
  70. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022LessonExtra16a_2025.json +0 -0
  71. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra14b_2023.json +0 -0
  72. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra14b_2024.json +0 -0
  73. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra14b_2025.json +0 -0
  74. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra15b_2023.json +0 -0
  75. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra15b_2024.json +0 -0
  76. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra15b_2025.json +0 -0
  77. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra16b_2023.json +0 -0
  78. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra16b_2024.json +0 -0
  79. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/CourseD_2022_LessonExtra16b_2025.json +0 -0
  80. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops10_2024.json +0 -0
  81. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops10_2025.json +0 -0
  82. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops11_2024.json +0 -0
  83. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops11_2025.json +0 -0
  84. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops1_2024.json +0 -0
  85. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops1_2025.json +0 -0
  86. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops2_2024.json +0 -0
  87. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops2_2025.json +0 -0
  88. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops3_2024.json +0 -0
  89. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops3_2025.json +0 -0
  90. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops4_2024.json +0 -0
  91. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops4_2025.json +0 -0
  92. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops5_2024.json +0 -0
  93. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops5_2025.json +0 -0
  94. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops5a_2024.json +0 -0
  95. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops5a_2025.json +0 -0
  96. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops5b_2024.json +0 -0
  97. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops5b_2025.json +0 -0
  98. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops6_2024.json +0 -0
  99. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops6_2025.json +0 -0
  100. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops7_2024.json +0 -0
  101. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops7_2025.json +0 -0
  102. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops9_2024.json +0 -0
  103. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_loops9_2025.json +0 -0
  104. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq10_2024.json +0 -0
  105. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq10_2025.json +0 -0
  106. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq11_2024.json +0 -0
  107. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq11_2025.json +0 -0
  108. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq12_2024.json +0 -0
  109. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq12_2025.json +0 -0
  110. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq13_2024.json +0 -0
  111. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq13_2025.json +0 -0
  112. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq1_2024.json +0 -0
  113. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq1_2025.json +0 -0
  114. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq2_2024.json +0 -0
  115. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq2_2025.json +0 -0
  116. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq3_2024.json +0 -0
  117. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq3_2025.json +0 -0
  118. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq4_2024.json +0 -0
  119. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq4_2025.json +0 -0
  120. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq5_2024.json +0 -0
  121. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq5_2025.json +0 -0
  122. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq6_2024.json +0 -0
  123. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq6_2025.json +0 -0
  124. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq7_2024.json +0 -0
  125. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq7_2025.json +0 -0
  126. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq8_2024.json +0 -0
  127. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq8_2025.json +0 -0
  128. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq9_2024.json +0 -0
  129. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_harvester_seq9_2025.json +0 -0
  130. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp2_2024.json +0 -0
  131. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp2_2025.json +0 -0
  132. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp3a_2024.json +0 -0
  133. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp3a_2025.json +0 -0
  134. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp3b_2024.json +0 -0
  135. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp3b_2025.json +0 -0
  136. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp4a_2024.json +0 -0
  137. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp4a_2025.json +0 -0
  138. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp5a_2024.json +0 -0
  139. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_ramp5a_2025.json +0 -0
  140. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq10_2024.json +0 -0
  141. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq10_2025.json +0 -0
  142. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq11_2024.json +0 -0
  143. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq11_2025.json +0 -0
  144. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq12_2024.json +0 -0
  145. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq12_2025.json +0 -0
  146. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq13_2024.json +0 -0
  147. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq13_2025.json +0 -0
  148. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq1_2024.json +0 -0
  149. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq1_2025.json +0 -0
  150. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq5_2024.json +0 -0
  151. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq5_2025.json +0 -0
  152. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq5a_2024.json +0 -0
  153. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq5a_2025.json +0 -0
  154. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq6_2024.json +0 -0
  155. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq6_2025.json +0 -0
  156. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq8_2024.json +0 -0
  157. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq8_2025.json +0 -0
  158. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq_challenge1_2024.json +0 -0
  159. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq_challenge1_2025.json +0 -0
  160. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq_challenge2_2024.json +0 -0
  161. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseA_maze_seq_challenge2_2025.json +0 -0
  162. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops10_2024.json +0 -0
  163. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops10_2025.json +0 -0
  164. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops11_2024.json +0 -0
  165. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops11_2025.json +0 -0
  166. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops1_2024.json +0 -0
  167. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops1_2025.json +0 -0
  168. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops2_2024.json +0 -0
  169. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops2_2025.json +0 -0
  170. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops3_2024.json +0 -0
  171. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops3_2025.json +0 -0
  172. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops4_2024.json +0 -0
  173. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops4_2025.json +0 -0
  174. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops5_2024.json +0 -0
  175. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops5_2025.json +0 -0
  176. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops6_2024.json +0 -0
  177. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops6_2025.json +0 -0
  178. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops7_2024.json +0 -0
  179. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops7_2025.json +0 -0
  180. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops8_2024.json +0 -0
  181. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops8_2025.json +0 -0
  182. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops9_2024.json +0 -0
  183. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops9_2025.json +0 -0
  184. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops_challenge1_2024.json +0 -0
  185. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops_challenge1_2025.json +0 -0
  186. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops_challenge2a_2024.json +0 -0
  187. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseB_collector_loops_challenge2a_2025.json +0 -0
  188. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_loops_challenge2_2024.json +0 -0
  189. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_loops_challenge2_2025.json +0 -0
  190. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog1_2023.json +0 -0
  191. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog1_2024.json +0 -0
  192. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog1_2025.json +0 -0
  193. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog2_2023.json +0 -0
  194. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog2_2024.json +0 -0
  195. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog2_2025.json +0 -0
  196. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog3_2023.json +0 -0
  197. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog3_2024.json +0 -0
  198. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog3_2025.json +0 -0
  199. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog4_2023.json +0 -0
  200. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog4_2024.json +0 -0
  201. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog4_2025.json +0 -0
  202. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog5_2023.json +0 -0
  203. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog5_2024.json +0 -0
  204. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog5_2025.json +0 -0
  205. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog6_2023.json +0 -0
  206. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog6_2024.json +0 -0
  207. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog6_2025.json +0 -0
  208. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog7_2023.json +0 -0
  209. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog7_2024.json +0 -0
  210. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog7_2025.json +0 -0
  211. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog8_2023.json +0 -0
  212. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog8_2024.json +0 -0
  213. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog8_2025.json +0 -0
  214. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog9_2023.json +0 -0
  215. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog9_2024.json +0 -0
  216. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog9_2025.json +0 -0
  217. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog_challenge1_2023.json +0 -0
  218. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog_challenge1_2024.json +0 -0
  219. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog_challenge1_2025.json +0 -0
  220. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog_challenge2_2023.json +0 -0
  221. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog_challenge2_2024.json +0 -0
  222. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_collector_prog_challenge2_2025.json +0 -0
  223. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops10_2024.json +0 -0
  224. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops10_2025.json +0 -0
  225. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops11_2024.json +0 -0
  226. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops11_2025.json +0 -0
  227. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops11_predict1_2024.json +0 -0
  228. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops11_predict1_2025.json +0 -0
  229. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops1_2024.json +0 -0
  230. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops1_2025.json +0 -0
  231. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops2_2024.json +0 -0
  232. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops2_2025.json +0 -0
  233. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops3_2024.json +0 -0
  234. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops3_2025.json +0 -0
  235. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops4_2024.json +0 -0
  236. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops4_2025.json +0 -0
  237. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops5_2024.json +0 -0
  238. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops5_2025.json +0 -0
  239. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops6_2024.json +0 -0
  240. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops6_2025.json +0 -0
  241. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops7_2024.json +0 -0
  242. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops7_2025.json +0 -0
  243. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops8_2024.json +0 -0
  244. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops8_2025.json +0 -0
  245. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops9_2024.json +0 -0
  246. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops9_2025.json +0 -0
  247. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops_challenge1a_2024.json +0 -0
  248. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops_challenge1a_2025.json +0 -0
  249. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops_challenge2_2024.json +0 -0
  250. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_harvester_loops_challenge2_2025.json +0 -0
  251. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging1.json +0 -0
  252. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging1_2025.json +0 -0
  253. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging2.json +0 -0
  254. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging2_2025.json +0 -0
  255. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging3.json +0 -0
  256. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging3_2025.json +0 -0
  257. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging4.json +0 -0
  258. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging4_2025.json +0 -0
  259. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging5.json +0 -0
  260. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging5_2025.json +0 -0
  261. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging6.json +0 -0
  262. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging6_2025.json +0 -0
  263. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging7.json +0 -0
  264. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging7_2025.json +0 -0
  265. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging8_predict1.json +0 -0
  266. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging8_predict1_2025.json +0 -0
  267. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging9.json +0 -0
  268. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging9_2025.json +0 -0
  269. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging_challenge1_2025.json +0 -0
  270. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_debugging_challenge2_2025.json +0 -0
  271. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_loops_challenge1a_2024.json +0 -0
  272. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_loops_challenge1a_2025.json +0 -0
  273. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming1_2023.json +0 -0
  274. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming1_2024.json +0 -0
  275. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming1_2025.json +0 -0
  276. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming2_2023.json +0 -0
  277. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming2_2024.json +0 -0
  278. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming2_2025.json +0 -0
  279. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming3_2023.json +0 -0
  280. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming3_2024.json +0 -0
  281. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming3_2025.json +0 -0
  282. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming4_2023.json +0 -0
  283. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming4_2024.json +0 -0
  284. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming4_2025.json +0 -0
  285. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming5_2023.json +0 -0
  286. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming5_2024.json +0 -0
  287. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming5_2025.json +0 -0
  288. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming6_2023.json +0 -0
  289. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming6_2024.json +0 -0
  290. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming6_2025.json +0 -0
  291. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming7_2023.json +0 -0
  292. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming7_2024.json +0 -0
  293. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming7_2025.json +0 -0
  294. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming8_2023.json +0 -0
  295. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming8_2024.json +0 -0
  296. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming8_2025.json +0 -0
  297. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming8_predict1_2024.json +0 -0
  298. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming8_predict1_2025.json +0 -0
  299. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming9_2023.json +0 -0
  300. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming9_2024.json +0 -0
  301. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming9_2025.json +0 -0
  302. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming_challenge1_2023.json +0 -0
  303. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming_challenge1_2024.json +0 -0
  304. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming_challenge1_2025.json +0 -0
  305. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming_challenge2_2023.json +0 -0
  306. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming_challenge2_2024.json +0 -0
  307. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseC_maze_programming_challenge2_2025.json +0 -0
  308. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals10.json +0 -0
  309. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals10_2023.json +0 -0
  310. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals10_2024.json +0 -0
  311. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals10_2025.json +0 -0
  312. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals1_predict1.json +0 -0
  313. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals1_predict1_2023.json +0 -0
  314. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals1_predict1_2024.json +0 -0
  315. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals1_predict1_2025.json +0 -0
  316. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals2.json +0 -0
  317. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals2_2023.json +0 -0
  318. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals2_2024.json +0 -0
  319. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals2_2025.json +0 -0
  320. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals3.json +0 -0
  321. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals3_2023.json +0 -0
  322. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals3_2024.json +0 -0
  323. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals3_2025.json +0 -0
  324. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals4.json +0 -0
  325. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals4_2023.json +0 -0
  326. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals4_2024.json +0 -0
  327. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals4_2025.json +0 -0
  328. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals5.json +0 -0
  329. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals5_2023.json +0 -0
  330. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals5_2024.json +0 -0
  331. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals5_2025.json +0 -0
  332. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals6.json +0 -0
  333. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals6_2023.json +0 -0
  334. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals6_2024.json +0 -0
  335. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals6_2025.json +0 -0
  336. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals7.json +0 -0
  337. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals7_2023.json +0 -0
  338. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals7_2024.json +0 -0
  339. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals7_2025.json +0 -0
  340. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals7_predict2.json +0 -0
  341. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals7_predict2_2023.json +0 -0
  342. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals7_predict2_2024.json +0 -0
  343. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals7_predict2_2025.json +0 -0
  344. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals8.json +0 -0
  345. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals8_2023.json +0 -0
  346. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals8_2024.json +0 -0
  347. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals8_2025.json +0 -0
  348. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals9.json +0 -0
  349. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals9_2023.json +0 -0
  350. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals9_2024.json +0 -0
  351. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals9_2025.json +0 -0
  352. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals_challenge1.json +0 -0
  353. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals_challenge1_2023.json +0 -0
  354. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals_challenge1_2024.json +0 -0
  355. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals_challenge1_2025.json +0 -0
  356. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals_challenge2.json +0 -0
  357. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals_challenge2_2023.json +0 -0
  358. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals_challenge2_2024.json +0 -0
  359. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_conditionals_challenge2_2025.json +0 -0
  360. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_debugging_challenge1a.json +0 -0
  361. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops1.json +0 -0
  362. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops1_2023.json +0 -0
  363. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops1_2024.json +0 -0
  364. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops1_2025.json +0 -0
  365. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops1a.json +0 -0
  366. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops1a_2023.json +0 -0
  367. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops1a_2024.json +0 -0
  368. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops1a_2025.json +0 -0
  369. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops2.json +0 -0
  370. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops2_2023.json +0 -0
  371. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops2_2024.json +0 -0
  372. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops2_2025.json +0 -0
  373. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops2_predict1.json +0 -0
  374. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops2_predict1_2023.json +0 -0
  375. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops2_predict1_2024.json +0 -0
  376. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops2_predict1_2025.json +0 -0
  377. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops7.json +0 -0
  378. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops7_2023.json +0 -0
  379. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops7_2024.json +0 -0
  380. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops7_2025.json +0 -0
  381. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops8.json +0 -0
  382. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops8_2023.json +0 -0
  383. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops8_2024.json +0 -0
  384. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops8_2025.json +0 -0
  385. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops9.json +0 -0
  386. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops9_2023.json +0 -0
  387. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops9_2024.json +0 -0
  388. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops9_2025.json +0 -0
  389. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops9_predict2.json +0 -0
  390. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops9_predict2_2023.json +0 -0
  391. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops9_predict2_2024.json +0 -0
  392. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_bee_nestedLoops9_predict2_2025.json +0 -0
  393. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging1.json +0 -0
  394. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging10_predict1.json +0 -0
  395. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging1a_2023.json +0 -0
  396. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging1a_2024.json +0 -0
  397. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging1a_2025.json +0 -0
  398. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging2.json +0 -0
  399. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging2a_2023.json +0 -0
  400. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging2a_2024.json +0 -0
  401. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging2a_2025.json +0 -0
  402. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging3.json +0 -0
  403. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging3a_2023.json +0 -0
  404. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging3a_2024.json +0 -0
  405. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging3a_2025.json +0 -0
  406. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging4.json +0 -0
  407. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging4a_2023.json +0 -0
  408. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging4a_2024.json +0 -0
  409. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging4a_2025.json +0 -0
  410. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging5.json +0 -0
  411. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging5a_2023.json +0 -0
  412. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging5a_2024.json +0 -0
  413. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging5a_2025.json +0 -0
  414. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging6.json +0 -0
  415. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging6a_2023.json +0 -0
  416. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging6a_2024.json +0 -0
  417. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging6a_2025.json +0 -0
  418. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging8.json +0 -0
  419. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging8a_2023.json +0 -0
  420. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging8a_2024.json +0 -0
  421. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging8a_2025.json +0 -0
  422. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging9.json +0 -0
  423. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging9a_2023.json +0 -0
  424. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging9a_2024.json +0 -0
  425. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging9a_2025.json +0 -0
  426. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_debugging_challenge2.json +0 -0
  427. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_nested_loops_challenge2_2024.json +0 -0
  428. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_nested_loops_challenge2_2025.json +0 -0
  429. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_nested_loops_challenge2a.json +0 -0
  430. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_ramp10.json +0 -0
  431. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_ramp8.json +0 -0
  432. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_collector_ramp9.json +0 -0
  433. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops1.json +0 -0
  434. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops2.json +0 -0
  435. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops3.json +0 -0
  436. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops4.json +0 -0
  437. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops5.json +0 -0
  438. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops6.json +0 -0
  439. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops7.json +0 -0
  440. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops8.json +0 -0
  441. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops9.json +0 -0
  442. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops9_predict1.json +0 -0
  443. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops_challenge1.json +0 -0
  444. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_condLoops_challenge2.json +0 -0
  445. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_ramp13.json +0 -0
  446. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_until_challenge2.json +0 -0
  447. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while1.json +0 -0
  448. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while10.json +0 -0
  449. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while10_2023.json +0 -0
  450. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while10_2024.json +0 -0
  451. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while10_2025.json +0 -0
  452. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while10_predict2.json +0 -0
  453. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while10_predict2_2024.json +0 -0
  454. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while10_predict2_2025.json +0 -0
  455. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while1_2023.json +0 -0
  456. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while1_2024.json +0 -0
  457. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while1_2025.json +0 -0
  458. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while2.json +0 -0
  459. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while2_2023.json +0 -0
  460. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while2_2024.json +0 -0
  461. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while2_2025.json +0 -0
  462. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while3.json +0 -0
  463. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while3_2023.json +0 -0
  464. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while3_2024.json +0 -0
  465. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while3_2025.json +0 -0
  466. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while4.json +0 -0
  467. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while4_2023.json +0 -0
  468. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while4_2024.json +0 -0
  469. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while4_2025.json +0 -0
  470. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while4_predict1.json +0 -0
  471. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while4_predict1_2024.json +0 -0
  472. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while4_predict1_2025.json +0 -0
  473. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while5.json +0 -0
  474. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while5_2023.json +0 -0
  475. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while5_2024.json +0 -0
  476. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while5_2025.json +0 -0
  477. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while6.json +0 -0
  478. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while6_2023.json +0 -0
  479. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while6_2024.json +0 -0
  480. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while6_2025.json +0 -0
  481. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while7.json +0 -0
  482. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while7_2023.json +0 -0
  483. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while7_2024.json +0 -0
  484. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while7_2025.json +0 -0
  485. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while8.json +0 -0
  486. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while8_2023.json +0 -0
  487. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while8_2024.json +0 -0
  488. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while8_2025.json +0 -0
  489. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while9.json +0 -0
  490. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while9_2023.json +0 -0
  491. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while9_2024.json +0 -0
  492. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while9_2025.json +0 -0
  493. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while_challenge1.json +0 -0
  494. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while_challenge1_2023.json +0 -0
  495. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while_challenge1_2024.json +0 -0
  496. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while_challenge1_2025.json +0 -0
  497. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_farmer_while_challenge2.json +0 -0
  498. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_harvester_nested_loops_challenge1.json +0 -0
  499. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_harvester_nested_loops_challenge1_2024.json +0 -0
  500. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_harvester_nested_loops_challenge1_2025.json +0 -0
  501. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops10_2024.json +0 -0
  502. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops10_2025.json +0 -0
  503. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops11_2024.json +0 -0
  504. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops11_2025.json +0 -0
  505. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops12_2024.json +0 -0
  506. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops12_2025.json +0 -0
  507. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops1_2024.json +0 -0
  508. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops1_2025.json +0 -0
  509. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops2_2024.json +0 -0
  510. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops2_2025.json +0 -0
  511. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops3_2024.json +0 -0
  512. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops3_2025.json +0 -0
  513. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops4_2024.json +0 -0
  514. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops4_2025.json +0 -0
  515. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops6_2024.json +0 -0
  516. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops6_2025.json +0 -0
  517. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops7_2024.json +0 -0
  518. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops7_2025.json +0 -0
  519. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops8_2024.json +0 -0
  520. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops8_2025.json +0 -0
  521. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops9_2024.json +0 -0
  522. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_iceage_loops9_2025.json +0 -0
  523. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro4_2023.json +0 -0
  524. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro4_2024.json +0 -0
  525. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro4_2025.json +0 -0
  526. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro5a_2023.json +0 -0
  527. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro5a_2024.json +0 -0
  528. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro5a_2025.json +0 -0
  529. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro5c_2023.json +0 -0
  530. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro5c_2024.json +0 -0
  531. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_intro5c_2025.json +0 -0
  532. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops3.json +0 -0
  533. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops3_2023.json +0 -0
  534. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops3_2024.json +0 -0
  535. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops3_2025.json +0 -0
  536. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops4.json +0 -0
  537. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops4_2023.json +0 -0
  538. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops4_2024.json +0 -0
  539. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops4_2025.json +0 -0
  540. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops5.json +0 -0
  541. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops5_2023.json +0 -0
  542. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops5_2024.json +0 -0
  543. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops5_2025.json +0 -0
  544. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops6.json +0 -0
  545. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops6_2023.json +0 -0
  546. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops6_2024.json +0 -0
  547. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_nestedLoops6_2025.json +0 -0
  548. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp1.json +0 -0
  549. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp1_2023.json +0 -0
  550. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp1_2024.json +0 -0
  551. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp1_2025.json +0 -0
  552. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp2.json +0 -0
  553. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp2_2023.json +0 -0
  554. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp2_2024.json +0 -0
  555. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp2_2025.json +0 -0
  556. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp3.json +0 -0
  557. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp3_2023.json +0 -0
  558. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp3_2024.json +0 -0
  559. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp3_2025.json +0 -0
  560. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp4.json +0 -0
  561. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5.json +0 -0
  562. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5_2023.json +0 -0
  563. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5_2024.json +0 -0
  564. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5_2025.json +0 -0
  565. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5a.json +0 -0
  566. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5b.json +0 -0
  567. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5b_2023.json +0 -0
  568. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5b_2024.json +0 -0
  569. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5b_2025.json +0 -0
  570. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5c.json +0 -0
  571. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5d.json +0 -0
  572. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5d_2023.json +0 -0
  573. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5d_2024.json +0 -0
  574. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp5d_2025.json +0 -0
  575. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp6.json +0 -0
  576. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_ramp7.json +0 -0
  577. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until1.json +0 -0
  578. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until10.json +0 -0
  579. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until10_2023.json +0 -0
  580. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until10_2024.json +0 -0
  581. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until10_2025.json +0 -0
  582. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until10_predict2.json +0 -0
  583. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until10_predict2_2024.json +0 -0
  584. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until10_predict2_2025.json +0 -0
  585. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until1_2023.json +0 -0
  586. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until1_2024.json +0 -0
  587. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until1_2025.json +0 -0
  588. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until2_predict1.json +0 -0
  589. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until2_predict1_2024.json +0 -0
  590. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until2_predict1_2025.json +0 -0
  591. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until3.json +0 -0
  592. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until3_2023.json +0 -0
  593. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until3_2024.json +0 -0
  594. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until3_2025.json +0 -0
  595. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until4.json +0 -0
  596. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until4_2023.json +0 -0
  597. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until4_2024.json +0 -0
  598. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until4_2025.json +0 -0
  599. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until5.json +0 -0
  600. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until5_2023.json +0 -0
  601. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until5_2024.json +0 -0
  602. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until5_2025.json +0 -0
  603. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until6.json +0 -0
  604. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until6_2023.json +0 -0
  605. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until6_2024.json +0 -0
  606. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until6_2025.json +0 -0
  607. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until7.json +0 -0
  608. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until7_2023.json +0 -0
  609. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until7_2024.json +0 -0
  610. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until7_2025.json +0 -0
  611. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until8.json +0 -0
  612. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until9.json +0 -0
  613. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until9_2023.json +0 -0
  614. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until9_2024.json +0 -0
  615. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until9_2025.json +0 -0
  616. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_maze_until_challenge1.json +0 -0
  617. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_predict1.json +0 -0
  618. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_ramp1.json +0 -0
  619. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_ramp2.json +0 -0
  620. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_ramp3.json +0 -0
  621. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_ramp4.json +0 -0
  622. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_ramp5.json +0 -0
  623. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_ramp6.json +0 -0
  624. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_ramp7.json +0 -0
  625. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseD_scrat_ramp8.json +0 -0
  626. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_concept1.json +0 -0
  627. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_concept2.json +0 -0
  628. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_concept3.json +0 -0
  629. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_concept4.json +0 -0
  630. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_concept5.json +0 -0
  631. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions1.json +0 -0
  632. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions10.json +0 -0
  633. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions11_predict1.json +0 -0
  634. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions2.json +0 -0
  635. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions3.json +0 -0
  636. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions4.json +0 -0
  637. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions5.json +0 -0
  638. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions6.json +0 -0
  639. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions7.json +0 -0
  640. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions8.json +0 -0
  641. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions9.json +0 -0
  642. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions_challenge1.json +0 -0
  643. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_functions_challenge2.json +0 -0
  644. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_bee_ramp14.json +0 -0
  645. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_concept1.json +0 -0
  646. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_concept2.json +0 -0
  647. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_concept3.json +0 -0
  648. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions1.json +0 -0
  649. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions10a1_2023.json +0 -0
  650. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions10a1_2024.json +0 -0
  651. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions10b.json +0 -0
  652. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions11_predict.json +0 -0
  653. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions11_predict_2024.json +0 -0
  654. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions13_2023.json +0 -0
  655. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions13_2024.json +0 -0
  656. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions1_2023.json +0 -0
  657. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions1_2024.json +0 -0
  658. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions1a.json +0 -0
  659. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions1a_2023.json +0 -0
  660. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions1a_2024.json +0 -0
  661. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions2b.json +0 -0
  662. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions2b_2023.json +0 -0
  663. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions2b_2024.json +0 -0
  664. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions2ba.json +0 -0
  665. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions2ba_2023.json +0 -0
  666. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions2ba_2024.json +0 -0
  667. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions3c.json +0 -0
  668. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions3c1_2023.json +0 -0
  669. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions3c1_2024.json +0 -0
  670. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions3c_2023.json +0 -0
  671. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions3c_2024.json +0 -0
  672. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions4b.json +0 -0
  673. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions5c.json +0 -0
  674. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions6c.json +0 -0
  675. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions7a1_2023.json +0 -0
  676. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions7a1_2024.json +0 -0
  677. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions7b.json +0 -0
  678. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions8a1_2023.json +0 -0
  679. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions8a1_2024.json +0 -0
  680. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions8b.json +0 -0
  681. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions9a1_2023.json +0 -0
  682. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions9a1_2024.json +0 -0
  683. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_functions9b.json +0 -0
  684. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_predict1.json +0 -0
  685. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_predict2.json +0 -0
  686. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp11a.json +0 -0
  687. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp11a_2023.json +0 -0
  688. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp11a_2024.json +0 -0
  689. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp11a_2025.json +0 -0
  690. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp11b.json +0 -0
  691. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp11b_2023.json +0 -0
  692. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp11b_2024.json +0 -0
  693. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp11b_2025.json +0 -0
  694. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12_forswap.json +0 -0
  695. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12_forswap_2023.json +0 -0
  696. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12_forswap_2024.json +0 -0
  697. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12_forswap_2025.json +0 -0
  698. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12b_2023.json +0 -0
  699. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12b_2024.json +0 -0
  700. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12b_2025.json +0 -0
  701. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12c.json +0 -0
  702. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12c_2023.json +0 -0
  703. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12c_2024.json +0 -0
  704. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12c_2025.json +0 -0
  705. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12d_2023.json +0 -0
  706. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12d_2024.json +0 -0
  707. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12d_2025.json +0 -0
  708. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12e_2023.json +0 -0
  709. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12e_2024.json +0 -0
  710. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12e_2025.json +0 -0
  711. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12f.json +0 -0
  712. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12f_2023.json +0 -0
  713. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12f_2024.json +0 -0
  714. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12f_2025.json +0 -0
  715. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_ramp12g.json +0 -0
  716. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_while1_2023.json +0 -0
  717. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_while1_2024.json +0 -0
  718. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseE_farmer_while1_2025.json +0 -0
  719. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_conditionals10.json +0 -0
  720. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_conditionals1_predict1.json +0 -0
  721. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_conditionals2.json +0 -0
  722. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_conditionals3.json +0 -0
  723. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_conditionals4.json +0 -0
  724. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_conditionals5.json +0 -0
  725. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_conditionals7_predict2.json +0 -0
  726. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_conditionals8.json +0 -0
  727. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for1.json +0 -0
  728. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for10.json +0 -0
  729. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for11.json +0 -0
  730. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for2.json +0 -0
  731. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for3_predict1.json +0 -0
  732. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for4.json +0 -0
  733. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for5.json +0 -0
  734. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for6.json +0 -0
  735. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for7.json +0 -0
  736. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for8.json +0 -0
  737. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for9.json +0 -0
  738. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for_challenge1.json +0 -0
  739. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_for_challenge2.json +0 -0
  740. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions2.json +0 -0
  741. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions3.json +0 -0
  742. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions3a.json +0 -0
  743. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions4.json +0 -0
  744. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions5a.json +0 -0
  745. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions6.json +0 -0
  746. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions7.json +0 -0
  747. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions8a.json +0 -0
  748. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functionsPre7.json +0 -0
  749. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions_challenge1.json +0 -0
  750. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_functions_challenge2.json +0 -0
  751. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp1.json +0 -0
  752. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp2.json +0 -0
  753. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp3.json +0 -0
  754. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp4.json +0 -0
  755. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp5.json +0 -0
  756. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp6.json +0 -0
  757. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp7.json +0 -0
  758. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp8.json +0 -0
  759. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp9_predict1.json +0 -0
  760. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp_challenge1.json +0 -0
  761. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/courseF_bee_fwp_challenge2.json +0 -0
  762. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/coursea_maze_ramp1_2024.json +0 -0
  763. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/coursea_maze_ramp1_2025.json +0 -0
  764. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_10_2023.json +0 -0
  765. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_10_2024.json +0 -0
  766. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_10_2025.json +0 -0
  767. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_A_2023.json +0 -0
  768. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_A_2024.json +0 -0
  769. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_A_2025.json +0 -0
  770. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_A_predict1_2023.json +0 -0
  771. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_A_predict1_2024.json +0 -0
  772. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/levels/grade2_collector_A_predict1_2025.json +0 -0
  773. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/pvz.py +0 -0
  774. {codingpirates_maze-0.3.0 → codingpirates_maze-0.4.0}/src/maze/zombieshape.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codingpirates-maze
3
- Version: 0.3.0
3
+ Version: 0.4.0
4
4
  Summary: Turtle-graphics maze framework and code.org level importer used by Coding Pirates Python puzzles
5
5
  License-Expression: Apache-2.0
6
6
  Requires-Python: >=3.11
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "codingpirates-maze"
3
- version = "0.3.0"
3
+ version = "0.4.0"
4
4
  description = "Turtle-graphics maze framework and code.org level importer used by Coding Pirates Python puzzles"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -1,6 +1,6 @@
1
1
  [project]
2
2
  name = "codingpirates-maze"
3
- version = "0.3.0"
3
+ version = "0.4.0"
4
4
  description = "Turtle-graphics maze framework and code.org level importer used by Coding Pirates Python puzzles"
5
5
  readme = "README.md"
6
6
  license = "Apache-2.0"
@@ -4,18 +4,20 @@ import math
4
4
  import random
5
5
  import functools
6
6
  import json
7
- import os
8
7
  import sys
9
- import importlib.resources
10
8
 
11
- _TESTMODE = os.environ.get('TESTMODE')
9
+ from .resources import get_provider
10
+
11
+ try:
12
+ # os.environ is unavailable under Skulpt (import os raises NotImplementedError there)
13
+ import os
14
+ _TESTMODE = os.environ.get('TESTMODE')
15
+ except Exception:
16
+ _TESTMODE = None
12
17
 
13
18
  _TRACER_DELAY = 0 if _TESTMODE == "True" else 15
14
19
  _TRACER_N = 0 if _TESTMODE == "True" else 1
15
20
 
16
- # Get the directory of this Python file
17
- _DIR_PATH = os.path.dirname(os.path.realpath(__file__))
18
-
19
21
 
20
22
  class Pen(turtle.Turtle):
21
23
  def __init__(self):
@@ -313,15 +315,9 @@ class Maze:
313
315
  _TRACER_DELAY = 0
314
316
  _TRACER_N = 0
315
317
 
316
- # @staticmethod
317
- # def shapefile(name: str, ext: str = ".gif") -> str:
318
- # name = os.path.join(Maze.instance.maze_type.subfolder, name)
319
- # return os.path.join(_DIR_PATH, "images", name + ext)
320
-
321
318
  @staticmethod
322
319
  def shapefile(name: str, ext: str = ".gif") -> str:
323
- with importlib.resources.path('maze.images.' + Maze.instance.maze_type.subfolder, name + ext) as image_path:
324
- return image_path.__str__()
320
+ return get_provider().get_shape_source(Maze.instance.maze_type.subfolder, name, ext)
325
321
 
326
322
  instance = None
327
323
 
@@ -0,0 +1,37 @@
1
+ from .maze import Maze, Player
2
+ from .bee import BeeMazeType
3
+ from .pvz import ZombieMazeType
4
+ from .farmer import FarmerMazeType
5
+ from .harvester import HarvesterMazeType
6
+ from .birds import BirdsMazeType
7
+ from .collector import CollectorMazeType
8
+ from .resources import get_provider
9
+
10
+
11
+ class Puzzle:
12
+ mazeTypes = {
13
+ "bee": BeeMazeType(),
14
+ "pvz": ZombieMazeType(),
15
+ "farmer": FarmerMazeType(),
16
+ "harvester": HarvesterMazeType(),
17
+ "birds": BirdsMazeType(),
18
+ "collector": CollectorMazeType()
19
+ }
20
+
21
+ @staticmethod
22
+ def from_file(filename):
23
+ level_json = get_provider().get_level(filename)
24
+
25
+ game_id = level_json.get("game_id")
26
+ if game_id and int(game_id) == 25:
27
+ levelProps = level_json['properties']
28
+
29
+ mazeType = Puzzle.mazeTypes[levelProps["skin"]]
30
+
31
+ return Maze(level_json, mazeType)
32
+ else:
33
+ print(f"Unknown game_id: {game_id}")
34
+
35
+ @staticmethod
36
+ def done():
37
+ Maze.instance.done()
@@ -0,0 +1,115 @@
1
+ """
2
+ Pluggable resource loading for maze levels/images.
3
+
4
+ CPython (desktop, `pip install codingpirates-maze`) resolves levels/images from the local
5
+ filesystem via `DefaultFilesystemProvider`. Skulpt (browser, no real filesystem) instead
6
+ fetches them from a version-pinned CDN via `SkulptBrowserProvider`. The active provider is
7
+ auto-detected via `platform.python_implementation()` so `from maze import Puzzle` just works
8
+ in both environments without any explicit wiring.
9
+
10
+ Only `DefaultFilesystemProvider` may import `os`/`importlib.resources`, and only locally
11
+ inside its methods -- those modules raise `NotImplementedError` on import under Skulpt, so
12
+ importing them at module level here (or in puzzle.py/maze.py) would crash `import maze`.
13
+ """
14
+ import platform
15
+
16
+ IS_SKULPT = platform.python_implementation() == "Skulpt"
17
+
18
+ # Keep this aligned with the `version` in pyproject.toml and the matching GitHub release tag
19
+ # (see README) so the CDN URL below actually resolves to the release these assets ship with.
20
+ _PACKAGE_VERSION = "0.4.0"
21
+ _GITHUB_REPO = "StefanUG/codingpirates-maze"
22
+
23
+
24
+ def _default_asset_base_url() -> str:
25
+ return f"https://cdn.jsdelivr.net/gh/{_GITHUB_REPO}@v{_PACKAGE_VERSION}/src/maze"
26
+
27
+
28
+ class ResourceProvider:
29
+ """Strategy for loading level data and shape/image sources."""
30
+
31
+ def get_level(self, name: str) -> dict:
32
+ """Return the level data (as a plain dict) for a given level name."""
33
+ raise NotImplementedError
34
+
35
+ def get_shape_source(self, subfolder: str, name: str, ext: str = ".gif") -> str:
36
+ """Return whatever `screen.register_shape` / `screen.bgpic` need: a local
37
+ filesystem path (desktop) or an image URL (browser)."""
38
+ raise NotImplementedError
39
+
40
+
41
+ class DefaultFilesystemProvider(ResourceProvider):
42
+ """Reproduces the pre-refactor filesystem-based resolution exactly."""
43
+
44
+ def get_level(self, name: str) -> dict:
45
+ import importlib.resources
46
+ import json
47
+ import os
48
+ import sys
49
+
50
+ filename = name if name.endswith(".json") else f"{name}.json"
51
+ script_path = os.path.dirname(os.path.realpath(sys.argv[0]))
52
+
53
+ resolved = None
54
+ for candidate in (
55
+ filename,
56
+ os.path.join(script_path, filename),
57
+ os.path.join(script_path, "levels", filename),
58
+ ):
59
+ if os.path.exists(candidate):
60
+ resolved = candidate
61
+ break
62
+
63
+ if resolved is None:
64
+ packaged = importlib.resources.files("maze.levels").joinpath(os.path.basename(filename))
65
+ if packaged.is_file():
66
+ resolved = packaged
67
+
68
+ if resolved is None:
69
+ raise TypeError("Unable to find file for level " + name)
70
+
71
+ # `resolved` is either a plain path (str) or an importlib.resources Traversable
72
+ opener = resolved.open if hasattr(resolved, "open") else lambda: open(resolved)
73
+ with opener() as fp:
74
+ return json.load(fp)
75
+
76
+ def get_shape_source(self, subfolder: str, name: str, ext: str = ".gif") -> str:
77
+ import importlib.resources
78
+
79
+ with importlib.resources.path("maze.images." + subfolder, name + ext) as image_path:
80
+ return str(image_path)
81
+
82
+
83
+ class SkulptBrowserProvider(ResourceProvider):
84
+ """Only ever instantiated when IS_SKULPT is True."""
85
+
86
+ def __init__(self, asset_base_url: str):
87
+ self.asset_base_url = asset_base_url
88
+
89
+ def get_level(self, name: str) -> dict:
90
+ import json
91
+ import urllib.request
92
+
93
+ filename = name if name.endswith(".json") else f"{name}.json"
94
+ url = f"{self.asset_base_url}/levels/{filename}"
95
+ return json.loads(urllib.request.urlopen(url).read())
96
+
97
+ def get_shape_source(self, subfolder: str, name: str, ext: str = ".gif") -> str:
98
+ # No fetch needed -- Skulpt's turtle loads images from a URL itself.
99
+ return f"{self.asset_base_url}/images/{subfolder}/{name}{ext}"
100
+
101
+
102
+ _provider: ResourceProvider = (
103
+ SkulptBrowserProvider(_default_asset_base_url()) if IS_SKULPT
104
+ else DefaultFilesystemProvider()
105
+ )
106
+
107
+
108
+ def set_provider(provider: ResourceProvider) -> None:
109
+ """Escape hatch for tests or to override the auto-picked default."""
110
+ global _provider
111
+ _provider = provider
112
+
113
+
114
+ def get_provider() -> ResourceProvider:
115
+ return _provider
@@ -1,11 +1,13 @@
1
1
  import turtle
2
- import datetime
3
- import subprocess
4
2
  """
5
3
  Module to capture a turtle screen into image files
6
4
  """
7
5
 
8
6
  def capture(screen:turtle.Screen, filename=None):
7
+ # desktop-only tool: subprocess/datetime are unavailable under Skulpt, so import lazily
8
+ import datetime
9
+ import subprocess
10
+
9
11
  if (not filename):
10
12
  dt = datetime.datetime.now()
11
13
  filename = dt.strftime("%Y-%m-%d %H.%M.%S") + " screen"
@@ -1,75 +0,0 @@
1
- import os
2
- import sys
3
- import json
4
- import importlib.resources
5
-
6
- from .maze import Maze, Player
7
- from .bee import BeeMazeType
8
- from .pvz import ZombieMazeType
9
- from .farmer import FarmerMazeType
10
- from .harvester import HarvesterMazeType
11
- from .birds import BirdsMazeType
12
- from .collector import CollectorMazeType
13
-
14
- # Get the directory of the Python file being run
15
- _script_path = os.path.dirname(os.path.realpath(sys.argv[0]))
16
-
17
-
18
- def _find_level_file(filename):
19
- """
20
- Locates a level json file, preferring a local/dev copy (e.g. one just generated by the
21
- importer and not yet copied into maze/levels) over the one packaged with the maze module.
22
- Returns an open()-able path/traversable, or None if not found.
23
- """
24
- if not filename.endswith(".json"):
25
- filename = f"{filename}.json"
26
-
27
- for candidate in (
28
- filename,
29
- os.path.join(_script_path, filename),
30
- os.path.join(_script_path, "levels", filename),
31
- ):
32
- if os.path.exists(candidate):
33
- return candidate
34
-
35
- packaged = importlib.resources.files("maze.levels").joinpath(os.path.basename(filename))
36
- if packaged.is_file():
37
- return packaged
38
-
39
- return None
40
-
41
-
42
- class Puzzle:
43
- mazeTypes = {
44
- "bee": BeeMazeType(),
45
- "pvz": ZombieMazeType(),
46
- "farmer": FarmerMazeType(),
47
- "harvester": HarvesterMazeType(),
48
- "birds": BirdsMazeType(),
49
- "collector": CollectorMazeType()
50
- }
51
-
52
- @staticmethod
53
- def from_file(filename):
54
- resolved = _find_level_file(filename)
55
- if resolved is None:
56
- raise TypeError("Unable to find file for level " + filename)
57
-
58
- # `resolved` is either a plain path (str) or an importlib.resources Traversable
59
- opener = resolved.open if hasattr(resolved, "open") else lambda: open(resolved)
60
- with opener() as fp:
61
- level_json = json.load(fp)
62
-
63
- game_id = level_json.get("game_id")
64
- if game_id and int(game_id) == 25:
65
- levelProps = level_json['properties']
66
-
67
- mazeType = Puzzle.mazeTypes[levelProps["skin"]]
68
-
69
- return Maze(level_json, mazeType)
70
- else:
71
- print(f"Unknown game_id: {game_id}")
72
-
73
- @staticmethod
74
- def done():
75
- Maze.instance.done()