{"version":3,"sources":["assets/misc/paint-stroke.svg","components/modules/traffic/assets/scene/cloud.svg","assets/brand/logo-barefoot.svg","components/modules/traffic/assets/misc/tree.png","components/modules/traffic/assets/scene/town_scene.svg","components/modules/traffic/assets/scene/town_scene-welsh.svg","assets/games/space/asteroid--small.svg","assets/games/space/asteroid--large.svg","components/modules/cybersecurity/assets/characters/2-turtle.svg","assets/icons/icon_pattern.svg","assets/games/kits/top_gb.svg","assets/icons/icon_logic.svg","assets/icons/icon_algorithms.svg","assets/games/kits/equip_kayak.svg","assets/games/kits/head_helmet.svg","assets/games/kits/top_jamaica.svg","components/modules/cybersecurity/assets/gamification/star.png","components/modules/cybersecurity/assets/gamification/heart.png","components/modules/cybersecurity/assets/characters/notification.svg","assets/misc/caesar_top.svg","assets/misc/caesar_bottom.svg","components/modules/cybersecurity/assets/gamification/star.svg","components/modules/cybersecurity/assets/characters/2-whale-bowie.svg","components/modules/cybersecurity/assets/characters/2-pufferfish-1.svg","components/modules/cybersecurity/assets/characters/2-octopus.svg","components/modules/cybersecurity/assets/characters/2-fish.svg","assets/games/space/stars_1.svg","assets/games/space/stars_2.svg","assets/games/space/stars_3.svg","assets/games/shapes/3-green.svg","assets/games/kits/bottom_gb.svg","assets/games/kits/bottom_jamaica.svg","assets/games/kits/top_spain.svg","assets/games/kits/equip_bike.svg","components/modules/festive/assets/boxing/pattern-snow.svg","components/modules/traffic/assets/misc/traffic-cones.svg","components/modules/cybersecurity/assets/characters/shadow.svg","assets/games/shapes/4-blue.svg","assets/games/shapes/4-green.svg","assets/games/shapes/5-yellow.svg","assets/games/kits/head_kayak.svg","components/modules/cybersecurity/assets/characteristics/tutorial/slide_1.svg","components/modules/cybersecurity/assets/characters/phisherman-head.svg","components/modules/traffic/assets/lights/alert-warning.svg","assets/misc/music-slash.png","assets/games/shapes/0-green.svg","assets/games/shapes/0-red.svg","assets/games/shapes/3-yellow.svg","assets/games/shapes/4-red.svg","assets/games/shapes/5-red.svg","assets/games/athletes/athlete_boy.svg","assets/games/athletes/athlete_girl.svg","assets/games/flags/flags/uk.svg","assets/icons/icon_debugging.svg","assets/misc/ck-home.svg","components/modules/cybersecurity/assets/gamification/heart.svg","components/modules/cybersecurity/assets/characteristics/c-grammar.svg","components/modules/cybersecurity/assets/characteristics/c-design.svg","components/modules/cybersecurity/assets/characteristics/c-good.svg","components/modules/cybersecurity/assets/characteristics/c-pressure.svg","components/modules/cybersecurity/assets/characteristics/c-source.svg","components/modules/cybersecurity/assets/gamification/hook.svg","components/modules/cybersecurity/assets/characters/2-pufferfish-2.svg","components/modules/cybersecurity/assets/characters/phisherman.svg","components/modules/cybersecurity/assets/characters/fish-head.svg","components/modules/festive/assets/puzzles/soldier/head.png","components/modules/festive/assets/puzzles/soldier/torso.png","components/modules/festive/assets/puzzles/soldier/legs.png","components/modules/festive/assets/puzzles/robot/robot-top.png","components/modules/festive/assets/puzzles/robot/robot-legs.png","components/modules/festive/assets/puzzles/soldier/head-alt.png","components/modules/festive/assets/puzzles/bear/top.png","components/modules/festive/assets/puzzles/robot/robot-legs-alt.png","components/modules/festive/assets/puzzles/snowman/top.png","components/modules/festive/assets/puzzles/robot/robot-middle.png","components/modules/festive/assets/puzzles/robot/robot-top-alt.png","components/modules/festive/assets/boxing/ribbon-right.svg","components/modules/festive/assets/boxing/ribbon-left.svg","components/modules/festive/assets/boxing/pattern-star.svg","assets/characters/thief_girl-safe.svg","assets/misc/th-room.svg","assets/misc/th-room--back.svg","assets/misc/th-vault--front.svg","assets/misc/th-vault--back.svg","assets/misc/th-diamond.svg","components/modules/traffic/assets/car/right.svg","assets/icons/icon_evaluation.svg","assets/games/kits/bottom_japan.svg","assets/games/kits/bottom_spain.svg","assets/games/kits/top_japan.svg","assets/games/features/so-icon--beak.svg","assets/games/features/so-icon--feather.svg","assets/games/features/so-icon--mane.svg","assets/games/features/so-icon--paw.svg","assets/games/features/so-icon--wing.svg","assets/games/features/so-icon__four.svg","assets/games/features/so-icon__hooves.svg","assets/games/features/so-icon__horns.svg","assets/games/features/so-icon__wool.svg","assets/misc/lang_en.svg","assets/misc/lang_wa.svg","components/modules/cybersecurity/assets/end/slide_1.svg","components/modules/cybersecurity/assets/gamification/bronze_medal.svg","components/modules/cybersecurity/assets/gamification/gold_medal.svg","components/modules/cybersecurity/assets/gamification/silver_medal.svg","components/modules/festive/assets/send/heart-circle.svg","assets/games/stock/so-algo-duck1.jpg","assets/games/stock/so-algo-duck2.jpg","assets/games/stock/so-algo-duck3.jpg","assets/games/stock/so-algo-goat1.jpg","assets/games/stock/so-algo-goat2.jpg","assets/games/stock/so-algo-horse1.jpg","assets/games/stock/so-algo-horse2.jpg","assets/games/stock/so-algo-pig1.jpg","assets/games/stock/so-algo-pig2.jpg","assets/games/stock/so-algo--chicken1.jpg","assets/games/stock/so-algo--cow1.jpg","assets/games/stock/so-algo--cow2.jpg","assets/games/stock/so-algo--dog1.jpg","assets/games/stock/so-algo--dog2.jpg","assets/games/stock/so-algo--dog3.jpg","assets/games/stock/so-algo--goose1.jpg","assets/games/stock/so-algo--goose2.jpg","assets/games/stock/so-algo--sheep1.jpg","assets/misc/th-box.svg","assets/misc/th-laser.svg","components/modules/traffic/assets/scene/pattern_cross.png","components/modules/traffic/assets/scene/pattern_wave--white.png","components/modules/traffic/assets/scene/road-stripes.svg","components/modules/traffic/assets/lights/howto/howto5.png","assets/games/space/explosion.gif","assets/background/swirl-green.svg","assets/background/swirl-yellow.svg","assets/background/square-pink.svg","assets/background/triangle-blue.svg","assets/characters/ranger-standing.svg","assets/characters/ranger-searching.svg","assets/animals/lion.svg","assets/animals/lion/lion-1.jpg","assets/animals/lion/lion-2.jpg","assets/animals/lion/lion-3.jpg","assets/animals/lion/lion-4.jpg","assets/animals/elephant.svg","assets/animals/monkey.svg","assets/animals/penguin.svg","assets/animals/frog.svg","assets/animals/crocodile.svg","assets/animals/crocodile/crocodile-1.jpg","assets/animals/crocodile/crocodile-2.jpg","assets/animals/crocodile/crocodile-3.jpg","assets/animals/crocodile/crocodile-4.jpg","assets/animals/panda.svg","assets/animals/panda/panda-1.jpg","assets/animals/panda/panda-2.jpg","assets/animals/panda/panda-3.jpg","assets/animals/panda/panda-4.jpg","assets/animals/hippo.svg","assets/animals/hippo/hippo-1.jpg","assets/animals/hippo/hippo-2.jpg","assets/animals/hippo/hippo-3.jpg","assets/animals/hippo/hippo-4.jpg","assets/animals/snake.svg","assets/animals/snake/snake-1.jpg","assets/animals/snake/snake-2.jpg","assets/animals/snake/snake-3.jpg","assets/animals/snake/snake-4.jpg","assets/icons/icon_abstraction.svg","assets/animals/animal-group.svg","assets/misc/sign-home.svg","assets/misc/sign-home-cy.svg","assets/characters/agent_andrew.svg","assets/characters/bletchley_lady.svg","assets/misc/illustration_enigma.svg","assets/misc/cc_medal.svg","assets/misc/cc_star.svg","assets/characters/anita-hayley.svg","assets/games/shapes/5-blue.svg","assets/misc/logo_ideas.svg","assets/misc/logo_ideas-welsh.svg","assets/characters/patrick.svg","assets/games/flags/groups/animals.svg","assets/games/flags/groups/circles.svg","assets/games/flags/groups/crosses.svg","assets/characters/kitty-chan.svg","assets/games/flags/flags/spain.svg","assets/games/kits/head_blank.svg","assets/games/athletes/athlete_girl_2.svg","assets/games/flags/flags/jamaica.svg","assets/games/flags/flags/japan.svg","components/modules/cybersecurity/assets/characters/avatars/diver.svg","components/modules/cybersecurity/assets/characters/avatars/fish.svg","components/modules/cybersecurity/assets/characters/avatars/jelly-old.svg","components/modules/cybersecurity/assets/characters/avatars/llama.svg","components/modules/cybersecurity/assets/characters/avatars/ray.svg","components/modules/cybersecurity/assets/characters/avatars/star.svg","components/modules/cybersecurity/assets/background/left-bottom.svg","components/modules/cybersecurity/assets/background/right-bottom.svg","components/modules/cybersecurity/assets/background/left-top.svg","components/modules/cybersecurity/assets/background/right-top.svg","components/modules/cybersecurity/assets/background/seafloor.svg","components/modules/cybersecurity/assets/characters/2-turtle-wanted.svg","components/modules/cybersecurity/assets/island.svg","components/modules/cybersecurity/assets/characteristics/tutorial/slide_2.svg","components/modules/cybersecurity/assets/characteristics/tutorial/slide_3.svg","components/modules/cybersecurity/assets/characteristics/tutorial/slide_4.svg","components/modules/cybersecurity/assets/characteristics/scenarios/source-1.svg","components/modules/cybersecurity/assets/characteristics/scenarios/source-2.svg","components/modules/cybersecurity/assets/characteristics/scenarios/pressure-1.svg","components/modules/cybersecurity/assets/characteristics/scenarios/grammar-1.svg","components/modules/cybersecurity/assets/characteristics/scenarios/grammar-2.svg","components/modules/cybersecurity/assets/characteristics/scenarios/design-1.svg","components/modules/cybersecurity/assets/characteristics/scenarios/scam-1.svg","components/modules/cybersecurity/assets/characteristics/scenarios/scam-2.svg","components/modules/cybersecurity/assets/devices/phone-frame.svg","components/modules/cybersecurity/assets/characters/avatars/fish.png","components/modules/cybersecurity/assets/devices/laptop-frame.svg","components/modules/cybersecurity/assets/devices/laptop-bottom.svg","components/modules/cybersecurity/assets/misc/fish-tiktok-1.jpg","components/modules/cybersecurity/assets/misc/fish-tiktok-2.jpg","components/modules/cybersecurity/assets/misc/fish-tiktok-3.jpg","components/modules/cybersecurity/assets/misc/fish-tiktok-4.jpg","components/modules/cybersecurity/assets/characters/unknown-tiktok.jpg","components/modules/cybersecurity/assets/gamification/reflection.svg","components/modules/cybersecurity/assets/misc/a-icons.svg","components/modules/cybersecurity/assets/misc/a-strokes.svg","components/modules/cybersecurity/assets/end/card_answer.jpg","components/modules/cybersecurity/assets/end/card_phish.svg","components/modules/cybersecurity/assets/end/slide_2.svg","components/modules/cybersecurity/assets/end/slide_3.svg","components/modules/cybersecurity/assets/end/slide_4.svg","components/modules/cybersecurity/assets/gamification/end_slide-1.svg","components/modules/cybersecurity/assets/gamification/end_slide-2.svg","components/modules/cybersecurity/assets/gamification/end_slide-3.svg","components/modules/cybersecurity/assets/gamification/end_slide-4.svg","components/modules/cybersecurity/assets/background/background.jpg","components/modules/cybersecurity/assets/start/start-right_1.svg","components/modules/cybersecurity/assets/start/start-left_2.svg","components/modules/cybersecurity/assets/start/bg-ship.svg","components/modules/cybersecurity/assets/start/wave-1.svg","components/modules/cybersecurity/assets/start/wave-2.svg","components/modules/festive/assets/backgrounds/festive_landscape_2.svg","components/modules/festive/assets/backgrounds/bg-image.svg","components/modules/festive/assets/characters/penguin.svg","components/modules/festive/assets/puzzles/soldier/head_shadow.svg","components/modules/festive/assets/puzzles/soldier/torso_shadow.svg","components/modules/festive/assets/puzzles/soldier/legs_shadow.svg","components/modules/festive/assets/puzzles/soldier/soldier.svg","components/modules/festive/assets/puzzles/snowman/middle.svg","components/modules/festive/assets/puzzles/bear/top-shadow.svg","components/modules/festive/assets/puzzles/bear/middle.png","components/modules/festive/assets/puzzles/bear/middle-shadow.svg","components/modules/festive/assets/puzzles/bear/legs.png","components/modules/festive/assets/puzzles/bear/legs-shadow.svg","components/modules/festive/assets/puzzles/bear/bear.svg","components/modules/festive/assets/puzzles/snowman/middle.png","components/modules/festive/assets/puzzles/bear/middle-alt.png","components/modules/festive/assets/puzzles/bear/legs-alt.png","components/modules/festive/assets/puzzles/robot/robot-top-shadow.svg","components/modules/festive/assets/puzzles/robot/robot-middle-shadow.svg","components/modules/festive/assets/puzzles/robot/robot-legs-shadow.svg","components/modules/festive/assets/puzzles/robot/robot.svg","components/modules/festive/assets/boxing/workshop2.svg","components/modules/festive/assets/boxing/pattern-tree.svg","components/modules/festive/assets/puzzles/icon-soldier.png","components/modules/festive/assets/puzzles/icon-snow.png","components/modules/festive/assets/puzzles/icon-robot.png","components/modules/festive/assets/characters/balloon_penguin.svg","components/modules/festive/assets/send/home.svg","components/modules/festive/assets/send/home-2.svg","components/modules/festive/assets/send/home-3.svg","components/modules/festive/assets/Trophy.png","assets/characters/farmer-leanne.svg","assets/characters/farmer-fiona.svg","assets/characters/farmer-jacob.svg","assets/characters/farmers-trio.svg","assets/games/features/pattern--chicken.svg","assets/games/features/pattern--cow.svg","assets/games/features/pattern--sheep.svg","assets/games/stock/so-stock--chicken1.jpg","assets/games/stock/so-stock--chicken2.jpg","assets/games/stock/so-stock--chicken3.jpg","assets/games/stock/so-stock--chicken4.jpg","assets/games/stock/so-stock--cow1.jpg","assets/games/stock/so-stock--cow2.jpg","assets/games/stock/so-stock--cow3.jpg","assets/games/stock/so-stock--cow4.jpg","assets/games/stock/so-stock--sheep1.jpg","assets/games/stock/so-stock--sheep2.jpg","assets/games/stock/so-stock--sheep3.jpg","assets/games/stock/so-stock--sheep4.jpg","assets/misc/so-end-slide.svg","assets/misc/so-end-slide-cy.svg","assets/misc/so-end-duck.svg","assets/misc/so-home-poster.svg","assets/misc/so-home-poster-cy.svg","assets/misc/so-home__windmill.svg","assets/characters/thief_girl.svg","assets/characters/thief_boy.svg","assets/misc/th-blueprint.svg","assets/misc/th-blueprint-cy.svg","assets/misc/th-keypad.svg","assets/misc/th-parachute-1.svg","assets/misc/th-parachute-2.svg","assets/misc/th-parachute-3.svg","assets/misc/th-plane.svg","assets/misc/th-keypad-fake.svg","assets/misc/thief_girl-hiding.svg","assets/misc/thief_boy-hiding.svg","assets/misc/th-room--keypad.svg","assets/misc/th-vault.svg","assets/misc/th-room--vault2.svg","assets/misc/th-room--vault.svg","assets/misc/th-diamond__arm.svg","assets/misc/th-start__diamond.svg","assets/misc/th-start__diamond-cy.svg","assets/misc/th-start__thief.svg","components/modules/traffic/assets/characters/engineer.png","components/modules/traffic/assets/car/left.svg","components/modules/traffic/assets/scene/bridge_2-new.svg","components/modules/traffic/assets/scene/pattern_dots.png","components/modules/traffic/assets/lights/alert-programming.svg","components/modules/traffic/assets/lights/alert-timing.svg","components/modules/traffic/assets/lights/traffic-highlight.png","components/modules/traffic/assets/scene/bridge_3-new.svg","components/modules/traffic/assets/car/left-blue-crashed.svg","components/modules/traffic/assets/car/left-blue.svg","components/modules/traffic/assets/car/right-crashed.svg","components/modules/traffic/assets/misc/sign-blue.png","components/modules/traffic/assets/misc/sign-blue-welsh.png","components/modules/traffic/assets/misc/sign-red.png","components/modules/traffic/assets/misc/sign-red-welsh.png","components/modules/traffic/assets/levels/level_1.png","components/modules/traffic/assets/levels/level_2.png","components/modules/traffic/assets/levels/level_3.png","components/modules/traffic/assets/levels/level_4.png","components/modules/traffic/assets/lights/howto/howto1.png","components/modules/traffic/assets/lights/howto/howto2.png","components/modules/traffic/assets/lights/howto/howto3.png","components/modules/traffic/assets/lights/howto/howto4.png","components/modules/traffic/assets/car/crash.png","components/modules/traffic/assets/misc/sequencer-3000.png","components/modules/traffic/assets/characters/engineer-2.png","components/modules/traffic/assets/decomposer/howto1.jpg","components/modules/traffic/assets/decomposer/howto2.jpg","components/modules/traffic/assets/decomposer/howto3.jpg","components/modules/traffic/assets/decomposer/howto4-extra.png","components/modules/traffic/assets/decomposer/howto4.jpg","components/modules/traffic/assets/devices/phone-frame.svg","components/modules/traffic/assets/misc/edit-frame.png","components/modules/traffic/assets/timings/howto2.png","components/modules/traffic/assets/timings/howto3.png","components/modules/traffic/assets/misc/medal.png","components/modules/traffic/assets/characters/characters.png","components/modules/traffic/assets/car/left.png","components/modules/traffic/assets/car/right.png","components/modules/traffic/assets/start/start_poster.jpg","components/modules/traffic/assets/start/start_poster-welsh.jpg","assets/characters/glib_glob.svg","assets/characters/flub_flub.svg","assets/characters/aliens.svg","assets/misc/variable_intro1.svg","assets/misc/variable_intro1-cy.svg","assets/misc/variable_intro2.svg","assets/misc/variable_intro2-cy.svg","assets/misc/variable_intro3.svg","assets/misc/variable_intro3-cy.svg","assets/games/space/blank_boom.svg","assets/games/space/cockpit.svg","assets/icons/icon_variables.svg","assets/misc/va-endslide.svg","assets/games/space/spaceship.svg","assets/thumbs/barefoot_zoo.jpg","assets/thumbs/code_cracking.jpg","assets/thumbs/sorting_it_out.jpg","assets/thumbs/asteroid_blasters.jpg","assets/thumbs/colourful_kits.jpg","assets/thumbs/the_diamond.jpg","assets/thumbs/festive.jpg","assets/thumbs/phisherman.jpg","assets/thumbs/tricky_traffic.jpg","../i18n sync /^/.//.*/.po/.json$","assets/sounds/theme_abstraction.mp3","assets/sounds/theme_athletics.mp3","assets/sounds/theme_farm.mp3","assets/sounds/theme_heist.mp3","assets/sounds/theme_military.mp3","assets/sounds/theme_space.mp3","assets/sounds/theme_cybersecurity.mp3","assets/sounds/cybersecurity/disco2.mp3","assets/sounds/cybersecurity/disco1.mp3","assets/sounds/cybersecurity/feelgood1.mp3","assets/sounds/cybersecurity/dolphin1.mp3","assets/sounds/cybersecurity/battle3.mp3","assets/sounds/theme_festive.mp3","assets/sounds/traffic/theme.mp3","assets/sounds/pop.mp3","assets/sounds/success-1.mp3","assets/sounds/correct-1.mp3","assets/sounds/lose.mp3","assets/sounds/voice.mp3","assets/sounds/click.mp3","assets/sounds/cheer.mp3","assets/sounds/beep.mp3","assets/sounds/failure.mp3","assets/sounds/beep-bop.mp3","assets/sounds/explosion.mp3","assets/sounds/startgame.mp3","assets/sounds/ringtone.mp3","assets/sounds/synth_success.mp3","assets/sounds/synth_fail.mp3","assets/sounds/coins_collect.mp3","assets/sounds/traffic/crash.mp3","components/modules/cybersecurity/assets/voiceovers/vo-cybersecurity-2.mp3","components/modules/traffic/assets/voiceovers/vo-trickytraffic-2.mp3","services/translation.ts","hooks/language.ts","components/misc/voiceover-context.ts","components/misc/volume-context.ts","helpers/filter.ts","services/sounds.tsx","components/misc/Wrapper.tsx","components/core/Module.tsx","services/volume.ts","components/misc/MuteButton.tsx","components/core/slide/SlideContent.tsx","components/core/slide/SlideFooter.tsx","components/misc/LangButton.tsx","components/core/slide/SlideHeader.tsx","components/core/Slide.tsx","components/general/Dialogue.tsx","components/general/DialogueGroup.tsx","components/general/Character.tsx","components/modules/abstraction/characters/RangerJack.ts","components/misc/FooterButtonRenderer.tsx","components/modules/abstraction/units/1-intro/ZooKeeperOutro.tsx","components/modules/abstraction/units/1-intro/index.ts","components/modules/abstraction/units/1-intro/ZooKeeperIntro.tsx","components/modules/abstraction/units/1-intro/NameInput.tsx","components/core/Game.tsx","components/general/ModalOverlay.tsx","components/interactive/fourpic/CorrectModal.tsx","helpers/shuffle.ts","components/interactive/fourpic/LetterInput.tsx","components/interactive/fourpic/PictureTile.tsx","components/interactive/fourpic/PictureTileGroup.tsx","components/interactive/fourpic/FourPicturesGame.tsx","components/modules/abstraction/units/2-escaped-animal/EscapedAnimal.tsx","components/general/Content.tsx","components/general/MissionSlide.tsx","components/general/WordDiscovery.tsx","components/modules/abstraction/units/2-escaped-animal/EscapedAnimalOutro.tsx","components/modules/abstraction/units/2-escaped-animal/index.ts","components/modules/abstraction/units/2-escaped-animal/EscapedAnimalIntro.tsx","components/modules/abstraction/units/3-confused-tourists/ConfusedTouristsIntro.tsx","components/interactive/featurematch/CorrectModal.tsx","components/interactive/featurematch/Tile.tsx","components/interactive/featurematch/TileGroup.tsx","components/interactive/featurematch/FeatureMatch.tsx","components/modules/abstraction/units/3-confused-tourists/ConfusedTouristsOutro.tsx","components/modules/abstraction/units/3-confused-tourists/index.ts","components/modules/abstraction/units/3-confused-tourists/ConfusedTouristsIntroGame.tsx","components/modules/abstraction/units/3-confused-tourists/ConfusedTourists.tsx","components/modules/abstraction/units/4-storm/StormIntroGame.tsx","components/modules/abstraction/units/4-storm/StormIntro-3.tsx","components/modules/abstraction/units/4-storm/index.ts","components/modules/abstraction/units/4-storm/StormIntro-1.tsx","components/modules/abstraction/units/4-storm/StormIntro-2.tsx","components/modules/abstraction/units/4-storm/Storm.tsx","components/modules/abstraction/units/4-storm/StormOutro.tsx","components/modules/abstraction/units/6-goodbye/GoodbyeMessage.tsx","components/modules/abstraction/units/6-goodbye/Recap.tsx","components/modules/abstraction/units/6-goodbye/index.ts","components/modules/abstraction/units/EndSlide.tsx","components/modules/abstraction/units/StartSlide.tsx","components/modules/abstraction/index.tsx","components/modules/codecracking/characters/AgentSparrow.ts","components/modules/codecracking/units/1-intro/Outro.tsx","components/modules/codecracking/units/1-intro/index.ts","components/modules/codecracking/units/1-intro/Intro.tsx","components/modules/codecracking/units/1-intro/NameInput.tsx","components/modules/codecracking/components/Intel.tsx","components/interactive/quiz/multi-choice/CorrectModal.tsx","components/interactive/quiz/multi-choice/IncorrectModal.tsx","components/interactive/quiz/multi-choice/MultiChoiceAnswer.tsx","components/interactive/quiz/multi-choice/MultiChoiceQuestion.tsx","components/interactive/quiz/multi-choice/MultiChoice.tsx","components/modules/codecracking/units/2-intel-1/WarIntro.tsx","components/modules/codecracking/units/2-intel-1/index.ts","components/modules/codecracking/units/2-intel-1/WarIntel.tsx","components/modules/codecracking/units/2-intel-1/WarIntelQuiz.tsx","components/modules/codecracking/characters/AgentGreen.ts","components/modules/codecracking/units/3-intel-2/CipherIntro2.tsx","components/modules/codecracking/units/3-intel-2/index.ts","components/modules/codecracking/units/3-intel-2/AgentIntro.tsx","components/modules/codecracking/units/3-intel-2/CipherIntro.tsx","components/modules/codecracking/units/3-intel-2/CipherDemo.tsx","components/modules/codecracking/units/3-intel-2/AgentQuiz.tsx","components/modules/codecracking/units/4-ciphers/CipherEnigmaIntro.tsx","components/modules/codecracking/units/4-ciphers/CipherEnigmaQuiz.tsx","components/modules/codecracking/units/4-ciphers/index.ts","components/modules/codecracking/units/4-ciphers/CipherEnigmaIntel.tsx","components/modules/codecracking/units/5-cipher-lab/LabIntro.tsx","components/modules/codecracking/units/5-cipher-lab/LabIntro2.tsx","components/interactive/caesarcipher/CaesarCipherWheel.tsx","components/modules/codecracking/units/5-cipher-lab/CipherLabGameIntro.tsx","components/modules/codecracking/units/5-cipher-lab/LabIntro3.tsx","components/modules/codecracking/units/5-cipher-lab/MissionOneIntro.tsx","helpers/ciphers.ts","components/interactive/caesarcipher/CaesarCipherQuestion.tsx","components/interactive/caesarcipher/CorrectModal.tsx","components/interactive/caesarcipher/CaesarCipher.tsx","components/modules/codecracking/units/5-cipher-lab/CipherLabGameOffset.tsx","components/modules/codecracking/units/5-cipher-lab/OffsetOutro.tsx","components/modules/codecracking/units/5-cipher-lab/OffsetOutro2.tsx","components/modules/codecracking/units/5-cipher-lab/MissionTwoIntro.tsx","components/modules/codecracking/units/5-cipher-lab/CipherLabGame.tsx","components/modules/codecracking/units/5-cipher-lab/LabOutro.tsx","components/modules/codecracking/units/5-cipher-lab/CodeIntel.tsx","components/modules/codecracking/units/5-cipher-lab/LabOutro2.tsx","components/modules/codecracking/units/5-cipher-lab/index.ts","components/modules/codecracking/units/6-goodbye/GoodbyeMessage2.tsx","components/modules/codecracking/units/6-goodbye/index.ts","components/modules/codecracking/units/6-goodbye/GoodbyeMessage.tsx","components/modules/codecracking/units/6-goodbye/Recap.tsx","components/modules/codecracking/units/EndSlide.tsx","components/modules/codecracking/units/StartSlide.tsx","components/modules/codecracking/index.tsx","components/modules/colourfulkits/characters/CoachAlbert.ts","components/modules/colourfulkits/units/1-intro/NameInput.tsx","components/modules/colourfulkits/units/1-intro/index.ts","components/modules/colourfulkits/units/1-intro/Intro.tsx","components/modules/colourfulkits/units/2-pattern/Intro.tsx","components/general/TaskSlide.tsx","components/modules/colourfulkits/units/2-pattern/ShapeGroupingIntro.tsx","components/interactive/shapegroup/Tile.tsx","components/interactive/shapegroup/TileGroup.tsx","components/interactive/shapegroup/CorrectModal.tsx","components/interactive/shapegroup/ShapeGroup.tsx","components/modules/colourfulkits/units/2-pattern/AttributesGame.tsx","components/modules/colourfulkits/units/2-pattern/ShapeGroupingOutro.tsx","components/modules/colourfulkits/units/2-pattern/AttributesQuizIntro.tsx","components/modules/colourfulkits/units/2-pattern/AttributesQuiz.tsx","components/modules/colourfulkits/units/2-pattern/AttributesQuizOutro.tsx","components/modules/colourfulkits/units/2-pattern/AttributesGame2Intro.tsx","components/modules/colourfulkits/units/2-pattern/AttributesGame2.tsx","components/modules/colourfulkits/units/2-pattern/AttributesGame2Outro.tsx","components/general/SkillModal.tsx","components/modules/colourfulkits/units/2-pattern/AttributesGame2Outro2.tsx","components/modules/colourfulkits/units/2-pattern/index.ts","components/modules/colourfulkits/characters/Patrick.ts","components/modules/colourfulkits/units/3-logic/Intro.tsx","components/modules/colourfulkits/units/3-logic/Intro2.tsx","components/modules/colourfulkits/units/3-logic/LogicGameIntro.tsx","components/interactive/groupflags/Tile.tsx","components/interactive/groupflags/TileGroup.tsx","components/interactive/groupflags/CorrectModal.tsx","components/interactive/groupflags/GroupFlags.tsx","components/modules/colourfulkits/units/3-logic/LogicGameOutro.tsx","components/modules/colourfulkits/units/3-logic/index.ts","components/modules/colourfulkits/units/3-logic/LogicGame.tsx","components/modules/colourfulkits/characters/Kitty.ts","components/modules/colourfulkits/units/4-debugging/Intro.tsx","components/modules/colourfulkits/units/4-debugging/DebugGameIntro.tsx","components/interactive/kitmistake/CorrectModal.tsx","components/interactive/kitmistake/KitBox.tsx","components/interactive/kitmistake/KitBoxGroup.tsx","components/interactive/kitmistake/KitMistake.tsx","components/modules/colourfulkits/units/4-debugging/DebugGame.tsx","components/modules/colourfulkits/units/4-debugging/DebugGameOutro.tsx","components/modules/colourfulkits/units/4-debugging/DebugGame2Intro.tsx","components/interactive/kitmatch/CorrectModal.tsx","components/interactive/kitmatch/KitSelector.tsx","components/interactive/kitmatch/KitMatch.tsx","components/modules/colourfulkits/units/4-debugging/DebugGame2.tsx","components/modules/colourfulkits/units/4-debugging/DebugGame2Outro.tsx","components/modules/colourfulkits/units/4-debugging/index.ts","components/modules/colourfulkits/units/5-recap/Goodbye.tsx","components/modules/colourfulkits/units/5-recap/index.ts","components/modules/colourfulkits/units/5-recap/Intro.tsx","components/modules/colourfulkits/units/5-recap/Recap.tsx","components/modules/colourfulkits/units/EndSlide.tsx","components/modules/colourfulkits/units/StartSlide.tsx","components/modules/colourfulkits/index.tsx","components/misc/ContextualMuteButton.tsx","components/misc/VoiceoverMuteButton.tsx","components/modules/cybersecurity/assets/voiceovers/vo-cybersecurity-spritesheet.ts","components/modules/cybersecurity/assets/voiceovers/vo-cybersecurity-spritesheet-chrome.ts","components/modules/cybersecurity/components/Wrapper.tsx","components/modules/cybersecurity/units/1-intro/CharacterSelector.tsx","components/modules/cybersecurity/units/1-intro/LivesExplanation.tsx","components/modules/cybersecurity/characters/Turtle.tsx","components/modules/cybersecurity/units/1-intro/TurtleIntro2.tsx","components/modules/cybersecurity/units/1-intro/index.ts","components/modules/cybersecurity/units/1-intro/TurtleIntro.tsx","components/modules/cybersecurity/units/1-intro/NameInput.tsx","components/modules/cybersecurity/units/2-welcome/TurtleQuestion1.tsx","components/modules/cybersecurity/units/2-welcome/TurtleIntro2.tsx","components/modules/cybersecurity/units/2-welcome/TurtleIntro.tsx","components/modules/cybersecurity/components/Island.tsx","components/modules/cybersecurity/units/2-welcome/TurtleIsland.tsx","components/modules/cybersecurity/units/2-welcome/Welcome.tsx","components/modules/cybersecurity/units/2-welcome/TurtleOutro.tsx","components/modules/cybersecurity/units/2-welcome/YourDetails.tsx","components/modules/cybersecurity/units/2-welcome/TurtleIntro3.tsx","components/modules/cybersecurity/units/2-welcome/index.ts","components/modules/cybersecurity/units/2-welcome/PersonalDetails.tsx","components/modules/cybersecurity/characters/Whale.tsx","components/modules/cybersecurity/units/3-fishfood/WhaleIntro.tsx","components/modules/cybersecurity/units/3-fishfood/WhaleIsland.tsx","components/modules/cybersecurity/components/interactive/characteristics/CharacteristicBtn.tsx","hooks/game.ts","components/modules/cybersecurity/components/interactive/characteristics/Characteristics.tsx","components/modules/cybersecurity/units/3-fishfood/CharacteristicsGame.tsx","components/modules/cybersecurity/units/3-fishfood/WhaleOutro.tsx","components/modules/cybersecurity/units/3-fishfood/WhaleOutro2.tsx","components/modules/cybersecurity/units/3-fishfood/index.ts","components/modules/cybersecurity/components/Phished.tsx","components/modules/cybersecurity/units/4-phonecall/UserPhished.tsx","components/modules/cybersecurity/characters/Pufferfish.tsx","components/modules/cybersecurity/units/4-phonecall/PufferfishIntro.tsx","components/modules/cybersecurity/units/4-phonecall/PufferfishIntro2.tsx","components/modules/cybersecurity/units/4-phonecall/PufferfishOutro.tsx","components/modules/cybersecurity/units/4-phonecall/TurtleQuestion.tsx","components/modules/cybersecurity/components/Phone.tsx","components/modules/cybersecurity/units/4-phonecall/CallInbound.tsx","components/modules/cybersecurity/components/interactive/phonecall/PhoneCall.tsx","components/modules/cybersecurity/units/4-phonecall/UnknownCall.tsx","components/modules/cybersecurity/components/Dodged.tsx","components/modules/cybersecurity/units/4-phonecall/UserDodge.tsx","components/modules/cybersecurity/characters/Phisherman.tsx","components/modules/cybersecurity/units/4-phonecall/UserPhishedPhisher.tsx","components/modules/cybersecurity/units/4-phonecall/index.ts","components/modules/cybersecurity/units/4-phonecall/UserDodgePhisher.tsx","components/modules/cybersecurity/components/Laptop.tsx","components/modules/cybersecurity/components/CharacteristicFound.tsx","components/modules/cybersecurity/components/interactive/emailclient/EmailComponent.tsx","components/modules/cybersecurity/components/interactive/emailclient/Email.tsx","components/modules/cybersecurity/components/interactive/emailclient/EmailClient.tsx","components/modules/cybersecurity/units/5-email/EmailGame.tsx","components/modules/cybersecurity/characters/Squid.tsx","components/modules/cybersecurity/units/5-email/SquidIntro.tsx","components/modules/cybersecurity/units/5-email/TurtleQuestion.tsx","components/modules/cybersecurity/units/5-email/UserDodgePhisher.tsx","components/modules/cybersecurity/units/5-email/index.ts","components/modules/cybersecurity/units/5-email/UserDodge.tsx","components/modules/cybersecurity/characters/Seal.tsx","components/modules/cybersecurity/units/6-tiktok/SealIntro.tsx","components/modules/cybersecurity/units/6-tiktok/TikTokFollow.tsx","components/modules/cybersecurity/units/6-tiktok/SealIntro2.tsx","components/modules/cybersecurity/units/6-tiktok/TikTokMessages.tsx","components/interactive/chat/Chat.tsx","components/modules/cybersecurity/units/6-tiktok/TikTokChat.tsx","components/modules/cybersecurity/components/CyberCard.tsx","components/modules/cybersecurity/units/6-tiktok/BlockUser.tsx","components/modules/cybersecurity/units/6-tiktok/UserDodge.tsx","components/modules/cybersecurity/units/6-tiktok/UserDodgePhisher.tsx","components/modules/cybersecurity/units/6-tiktok/LinkClicked.tsx","components/modules/cybersecurity/units/6-tiktok/UserPhished.tsx","components/modules/cybersecurity/units/6-tiktok/UserPhishedPhisher.tsx","components/modules/cybersecurity/units/6-tiktok/TurtleQuestion.tsx","components/modules/cybersecurity/units/6-tiktok/index.ts","components/modules/cybersecurity/units/7-advert/CloseAd.tsx","components/modules/cybersecurity/units/7-advert/PhisherOutro.tsx","components/modules/cybersecurity/units/7-advert/PhisherOutroDodged.tsx","components/modules/cybersecurity/units/7-advert/PhishingSite.tsx","components/modules/cybersecurity/units/7-advert/TurtleAdvert.tsx","components/modules/cybersecurity/units/7-advert/TurtleOutro.tsx","components/modules/cybersecurity/units/7-advert/index.ts","components/modules/cybersecurity/components/interactive/phishing/Phishing.tsx","components/modules/cybersecurity/units/8-finale/TurtleOutro.tsx","components/modules/cybersecurity/units/8-finale/index.ts","components/modules/cybersecurity/units/8-finale/PhishingGame.tsx","components/modules/cybersecurity/units/9-outro/Award.tsx","components/modules/cybersecurity/units/9-outro/index.ts","components/modules/cybersecurity/units/EndSlide.tsx","components/modules/cybersecurity/units/StartSlide.tsx","components/modules/cybersecurity/index.tsx","components/modules/festive/components/Wrapper.tsx","components/modules/festive/characters/Penguin.ts","components/modules/festive/units/1-intro/PenguinIntro2.tsx","components/modules/festive/units/1-intro/index.ts","components/modules/festive/units/1-intro/PenguinIntro.tsx","components/modules/festive/units/1-intro/NameInput.tsx","components/modules/festive/components/FestiveTask.tsx","components/modules/festive/units/2-building/MissionIntro.tsx","components/modules/festive/components/interactive/puzzle/CorrectModal.tsx","components/modules/festive/components/interactive/puzzle/PuzzlePiece.tsx","components/modules/festive/components/interactive/puzzle/PuzzleGamePiece.tsx","components/modules/festive/components/interactive/puzzle/Puzzle.tsx","components/modules/festive/units/2-building/Puzzle1.tsx","components/modules/festive/units/2-building/BuildingOutro.tsx","components/modules/festive/units/2-building/Puzzle2.tsx","components/modules/festive/units/2-building/index.ts","components/modules/festive/units/2-building/Puzzle3.tsx","components/modules/festive/components/interactive/giftbuilder/GiftBuilderSelector.tsx","components/modules/festive/components/interactive/giftbuilder/Gift.tsx","components/modules/festive/components/interactive/giftbuilder/CorrectModal.tsx","components/modules/festive/components/interactive/giftbuilder/GiftBuilder.tsx","components/modules/festive/units/3-boxing/MissionIntro.tsx","components/modules/festive/units/3-boxing/index.ts","components/modules/festive/units/3-boxing/GiftboxIntro.tsx","components/modules/festive/units/3-boxing/GiftboxGame2.tsx","components/modules/festive/units/3-boxing/GiftboxOutro.tsx","components/modules/festive/units/4-gift/index.ts","components/modules/festive/components/interactive/gift-send-2/GiftBuilderSelector.tsx","components/modules/festive/components/interactive/gift-send-2/Gift.tsx","components/modules/festive/components/interactive/gift-send-2/CorrectModal.tsx","components/modules/festive/components/interactive/gift-send-2/GiftSend2.tsx","components/modules/festive/units/5-sending/SendingGame2.tsx","components/modules/festive/units/5-sending/SendingIntro.tsx","components/modules/festive/units/5-sending/SendingMission.tsx","components/modules/festive/units/5-sending/SendingOutro.tsx","components/modules/festive/units/5-sending/index.ts","components/modules/festive/units/6-end/Outro.tsx","components/modules/festive/units/6-end/index.ts","components/modules/festive/units/EndSlide.tsx","components/modules/festive/units/StartSlide.tsx","components/modules/festive/index.tsx","components/modules/sorting/characters/Zookeepers.ts","components/modules/sorting/units/1-intro/Outro.tsx","components/modules/sorting/units/1-intro/index.ts","components/modules/sorting/units/1-intro/Intro.tsx","components/modules/sorting/units/1-intro/NameInput.tsx","components/modules/sorting/units/2-patterns/Intro.tsx","components/modules/sorting/units/2-patterns/Intro2.tsx","components/modules/sorting/units/2-patterns/MissionIntro.tsx","components/interactive/similarfeatures/Tile.tsx","components/interactive/similarfeatures/TileGroup.tsx","components/interactive/similarfeatures/CorrectModal.tsx","components/interactive/similarfeatures/SimilarFeatures.tsx","components/modules/sorting/units/2-patterns/MissionOutro.tsx","components/modules/sorting/units/2-patterns/index.ts","components/modules/sorting/units/2-patterns/MissionPattern.tsx","components/modules/sorting/units/3-algorithms/Intro.tsx","components/modules/sorting/units/3-algorithms/Intro2.tsx","components/modules/sorting/units/3-algorithms/Intro3.tsx","components/modules/sorting/units/3-algorithms/MissionIntro.tsx","components/interactive/algorithmsort/SortAlgorithmCorrectModal.tsx","components/interactive/algorithmsort/SortAlgorithmQuestionModal.tsx","components/interactive/algorithmsort/SortAlgorithmSelector.tsx","components/interactive/algorithmsort/SortAlgorithmWrongModal.tsx","components/interactive/algorithmsort/SortAlgorithmGame.tsx","components/modules/sorting/units/3-algorithms/MissionOutro.tsx","components/modules/sorting/units/3-algorithms/index.ts","components/modules/sorting/units/3-algorithms/MissionAlgorithm.tsx","components/modules/sorting/units/4-algorithms2/Intro.tsx","components/modules/sorting/units/4-algorithms2/MissionIntro.tsx","components/modules/sorting/units/4-algorithms2/MissionOutro.tsx","components/modules/sorting/units/4-algorithms2/index.ts","components/modules/sorting/units/4-algorithms2/MissionAlgorithm.tsx","components/modules/sorting/units/5-goodbye/Outro.tsx","components/modules/sorting/units/5-goodbye/index.ts","components/modules/sorting/units/5-goodbye/Intro.tsx","components/modules/sorting/units/5-goodbye/Recap.tsx","components/modules/sorting/units/EndSlide.tsx","components/modules/sorting/units/StartSlide.tsx","components/modules/sorting/index.tsx","components/modules/theheist/characters/AgentTokyo.ts","components/modules/theheist/units/1-intro/Intro.tsx","components/modules/theheist/units/1-intro/NameInput.tsx","components/modules/theheist/characters/AgentRio.ts","components/modules/theheist/units/1-intro/Outro.tsx","components/modules/theheist/units/1-intro/index.ts","components/modules/theheist/units/2-blueprint/BlueprintIntro.tsx","components/modules/theheist/units/2-blueprint/BlueprintOutro.tsx","components/modules/theheist/units/2-blueprint/index.ts","components/modules/theheist/units/2-blueprint/Blueprint.tsx","components/modules/theheist/units/3-parachute/PartOne.tsx","components/modules/theheist/units/3-parachute/LandedIntro.tsx","components/modules/theheist/units/3-parachute/index.ts","components/modules/theheist/units/4-keypad/SeqQuiz.tsx","components/interactive/keypad/Keypad.tsx","components/interactive/keypad/KeypadGame.tsx","components/modules/theheist/units/4-keypad/SeqQuizOutro.tsx","components/modules/theheist/units/4-keypad/index.ts","components/modules/theheist/units/4-keypad/IntroKeypad.tsx","components/modules/theheist/units/4-keypad/SeqQuizIntro.tsx","components/modules/theheist/units/4-keypad/SeqQuizIntro2.tsx","components/modules/theheist/units/4-keypad/KeypadGameSlide.tsx","components/modules/theheist/units/5-keypad2/PartTwo.tsx","components/modules/theheist/units/5-keypad2/FindKeypadIntro.tsx","components/modules/theheist/units/5-keypad2/KeypadGameOutro.tsx","components/modules/theheist/units/5-keypad2/index.ts","components/modules/theheist/units/5-keypad2/FindKeypad.tsx","components/modules/theheist/units/5-keypad2/KeypadGameIntro.tsx","components/modules/theheist/units/5-keypad2/KeypadGameSlide2.tsx","components/modules/theheist/units/6-vault/PartThree.tsx","components/modules/theheist/units/6-vault/VaultIntro.tsx","components/modules/theheist/units/6-vault/Vault.tsx","components/interactive/algorithm/AlgorithmSelector.tsx","components/interactive/algorithm/AlgorithmGame.tsx","components/modules/theheist/units/6-vault/VaultGame.tsx","components/modules/theheist/units/6-vault/VaultAnim.tsx","components/modules/theheist/units/6-vault/VaultIntro2.tsx","components/modules/theheist/units/6-vault/VaultGame2.tsx","components/modules/theheist/units/6-vault/VaultIntro3.tsx","components/modules/theheist/units/6-vault/VaultGame3.tsx","components/modules/theheist/units/6-vault/VaultAnimOpen.tsx","components/modules/theheist/units/6-vault/index.ts","components/modules/theheist/units/7-end/DiamondIntro.tsx","components/modules/theheist/units/7-end/DiamondOutro.tsx","components/modules/theheist/units/7-end/index.ts","components/modules/theheist/units/7-end/DiamondGrab.tsx","components/modules/theheist/units/7-end/Diamond.tsx","components/modules/theheist/units/EndSlide.tsx","components/modules/theheist/units/StartSlide.tsx","components/modules/theheist/index.tsx","components/modules/traffic/assets/voiceovers/vo-trickytraffic-spritesheet-chrome.ts","components/modules/traffic/components/Wrapper.tsx","components/modules/traffic/characters/EngineerShahid.ts","components/modules/traffic/components/Character2.tsx","components/modules/traffic/components/DialogueOverlay.tsx","components/modules/traffic/components/interactive/scene/Smoke.tsx","components/modules/traffic/styles/theme.tsx","components/modules/traffic/components/traffic-lights/TrafficLight.tsx","components/modules/traffic/styles/junction.tsx","hooks/window.ts","components/modules/traffic/components/traffic-lights/TrafficLightSequence.tsx","components/modules/traffic/components/interactive/scene/Car.tsx","components/modules/traffic/components/interactive/scene/Cars.tsx","components/modules/traffic/components/interactive/scene/Road.tsx","hooks/interval.ts","components/modules/traffic/components/interactive/Scene.tsx","components/modules/traffic/units/1-intro/IntroScene.tsx","components/modules/traffic/components/interactive/levels/LevelSelector.tsx","components/modules/traffic/units/1-intro/LevelOne.tsx","components/modules/traffic/units/1-intro/NoLightsCrash.tsx","components/modules/traffic/components/interactive/scene/CrashModal.tsx","components/modules/traffic/components/interactive/Tutorial.tsx","components/modules/traffic/components/traffic-lights/TrafficLightEditorStatic.tsx","components/modules/traffic/units/1-intro/NoLightsGame.tsx","components/modules/traffic/units/1-intro/TownIntro.tsx","components/modules/traffic/units/1-intro/index.ts","components/modules/traffic/units/2-tourists/Definition.tsx","components/modules/traffic/units/2-tourists/TouristProblem.tsx","components/modules/traffic/units/2-tourists/index.ts","components/modules/traffic/units/2-tourists/LevelTwo.tsx","components/modules/traffic/units/2-tourists/TouristGame.tsx","components/modules/traffic/characters/EngineerAisha.ts","components/modules/traffic/units/3-decomposition/DecompositionQuestion.tsx","components/modules/traffic/units/3-decomposition/Definition.tsx","components/modules/traffic/units/3-decomposition/LevelThree.tsx","components/modules/traffic/components/Phone.tsx","components/modules/traffic/components/traffic-lights/TrafficFrame.tsx","components/modules/traffic/components/traffic-lights/TrafficLightEditor.tsx","components/modules/traffic/components/interactive/sequence/TrafficSequence.tsx","components/modules/traffic/units/3-decomposition/SequenceGame.tsx","components/modules/traffic/components/interactive/timings/TrafficTimings.tsx","components/modules/traffic/units/3-decomposition/TimingsSimulation.tsx","components/modules/traffic/units/3-decomposition/index.ts","components/modules/traffic/units/3-decomposition/SequenceSimulation.tsx","components/modules/traffic/units/4-end/AlgoQuestion.tsx","components/modules/traffic/units/4-end/Intro.tsx","components/modules/traffic/units/4-end/LevelFour.tsx","components/modules/traffic/units/4-end/index.ts","components/modules/traffic/units/EndSlide.tsx","components/modules/traffic/components/cars/CarRight.tsx","components/modules/traffic/units/StartSlide.tsx","components/modules/traffic/index.tsx","components/modules/variables/characters/Aliens.ts","components/modules/variables/units/1-intro/Outro.tsx","components/modules/variables/units/1-intro/index.ts","components/modules/variables/units/1-intro/Intro.tsx","components/modules/variables/units/1-intro/NameInput.tsx","components/modules/variables/units/2-mission-one/VariablesQuiz.tsx","components/modules/variables/units/2-mission-one/VariablesQuizOutro.tsx","components/modules/variables/units/2-mission-one/VariablesQuizOutro2.tsx","components/modules/variables/units/2-mission-one/MissionIntro.tsx","helpers/numbers.ts","components/interactive/asteroid/Asteroid.tsx","components/interactive/asteroid/AsteroidGame.tsx","components/modules/variables/units/2-mission-one/VariablesIntro2.tsx","components/modules/variables/units/2-mission-one/index.ts","components/modules/variables/units/2-mission-one/MissionGame.tsx","components/modules/variables/units/2-mission-one/MissionOutro.tsx","components/modules/variables/units/2-mission-one/VariablesIntro.tsx","components/modules/variables/units/3-mission-two/VariablesQuiz.tsx","components/modules/variables/units/3-mission-two/index.ts","components/modules/variables/units/3-mission-two/Intro.tsx","components/modules/variables/units/3-mission-two/MissionIntro.tsx","components/modules/variables/units/3-mission-two/MissionGame.tsx","components/modules/variables/units/3-mission-two/MissionOutro.tsx","components/modules/variables/units/3-mission-two/VariablesQuizIntro.tsx","components/modules/variables/units/4-mission-three/Intro.tsx","components/modules/variables/units/4-mission-three/MissionIntro.tsx","components/modules/variables/components/TimeoutModal.tsx","components/modules/variables/units/4-mission-three/MissionGame.tsx","components/modules/variables/units/4-mission-three/MissionOutro.tsx","components/modules/variables/units/4-mission-three/VariablesQuiz.tsx","components/modules/variables/units/4-mission-three/index.ts","components/modules/variables/units/5-mission-four/MissionOutro.tsx","components/modules/variables/units/5-mission-four/index.ts","components/modules/variables/units/5-mission-four/Intro.tsx","components/modules/variables/units/5-mission-four/MissionIntro.tsx","components/modules/variables/units/5-mission-four/MissionGame.tsx","components/modules/variables/units/6-mission-five/MissionOutro.tsx","components/modules/variables/units/6-mission-five/index.ts","components/modules/variables/units/6-mission-five/Intro.tsx","components/modules/variables/units/6-mission-five/MissionIntro.tsx","components/modules/variables/units/6-mission-five/MissionGame.tsx","components/modules/variables/units/7-goodbye/Goodbye.tsx","components/modules/variables/units/7-goodbye/index.ts","components/modules/variables/units/7-goodbye/Recap.tsx","components/modules/variables/units/EndSlide.tsx","components/modules/variables/units/StartSlide.tsx","components/modules/variables/index.tsx","components/modules/ModuleRouter.tsx","components/App.tsx","serviceWorker.js","index.tsx"],"names":["module","exports","map","webpackContext","req","id","webpackContextResolve","__webpack_require__","o","e","Error","code","keys","Object","resolve","locale","Cookies","get","getLocale","cyTranslationsObj","require","addLocale","useLocale","useLanguage","language","useState","lang","setLang","useEffect","set","VoiceoverContext","createContext","voiceover","undefined","setVoiceover","playVoiceover","stopVoiceover","VolumeContext","volume","voiceoverMuted","musicMuted","filter","addWords","themes","themeAbstraction","Howl","src","loop","preload","themeAthletics","themeFarm","themeHeist","themeMilitary","themeSpace","themeCybersecurity","themeCybersecurityWhale","themeCybersecurityFish","themeCybersecurityPufferfish","themeCybersecurityOcto","themeCybersecurityBattle","themeFestive","themeTraffic","sfx","pop","success","correct","incorrect","voice","click","cheer","beep","failure","beepbop","explosion","startgame","ringtone","synthSuccess","synthFail","coinsCollect","crash","Wrapper","children","className","swirl_green","alt","swirl_yellow","square_pink","triangle_blue","Module","slides","name","index","onComplete","defaultHeader","data","devIndex","DefaultWrapper","slideIndex","setSlideIndex","useContext","stop","process","nextSlide","previousSlide","gotoSlide","targetIndex","Fragment","when","length","message","handleKeys","handleFocusableElements","onKeyEvent","key","console","log","onKeyDown","CurrentSlide","i","currentIndex","renderSlide","saveVolume","toString","v","parseInt","getVolume","Slash","styled","img","MuteButton","context","Howler","zIndex","setVolume","icon","faMusic","mute","Button","style","onClick","musicSlash","variants","hidden","opacity","visible","SlideContent","animDisabled","section","initial","animate","Container","Row","Col","SlideHeader","footer","LangButton","Dropdown","Toggle","lang_cy","width","height","lang_en","Menu","Item","window","confirm","location","reload","header","sectionClasses","headerTransparent","StyledSlide","div","props","backgroundColor","oflow","Slide","footerHidden","headerHidden","overflow","SlideFooter","Dialogue","onTypingDone","React","type","formattedText","text","split","line","span","transition","delay","textSpriteName","exit","onAnimationComplete","setTimeout","character","characterName","avgTypingDelay","stdTypingDelay","cursor","show","DialogueGroup","dialogue","buttonHandler","nextDialogueHandler","dialogueIndex","setDialogueIndex","dialogueData","setDialogueData","activeDialogue","setActiveDialogue","renderDialogue","nextDialogue","button","generateButton","buttonText","buttonAction","action","size","play","Character","StyledCharacter","characterWidth","characterHeight","characterImage","CharacterDialogue","RangerJack","t","ranger","RangerJackSearch","ranger_search","useFooterButtonRenderer","buttonRenderer","next","xs","md","offset","placeholder","onChange","setName","target","value","useGameLogic","gameData","onGameComplete","onNextQuestion","questions","questionIndex","setQuestionIndex","question","setQuestion","nextQuestion","Default","AppWrapper","FooterSection","ModalOverlay","Modal","dialogAs","CorrectModal","onClose","scale","duration","paint_stroke","onHide","lg","y","Infinity","repeatDelay","answerImage","answer","shuffle","array","j","Math","floor","random","LetterInput","additionalLetters","onQuestionComplete","onHintRequest","hintLevel","jumbledLetters","setJumbledLetters","answerLetters","setAnswerLetters","questionComplete","setQuestionComplete","Array","from","concat","join","toUpperCase","letterList","letter","handleRemoveLetterClick","classes","classNames","renderAnswerLetters","answerArray","freeIndex","findIndex","el","splice","handleAddLetterClick","PictureTile","picture","hint","backgroundImage","image","PictureTileGroup","pictures","FourPicturesGame","setShow","setHintLevel","Content","styles","MissionSlide","onStart","number","xl","WordDiscovery","word","wordDefinition","title","modalHeader","lion_1","lion_2","lion_3","lion_4","lion","jt","ConfusedTouristsIntro","subject","toLowerCase","features","feature","TileStyle","Tile","onAnswer","resetQuestion","isDisabled","selected","setSelected","TileGroup","tiles","targetCorrect","setTargetCorrect","answersCorrect","setAnswersCorrect","questionTiles","setQuestionTiles","setResetQuestion","disabled","setDisabled","correctAnswers","toaster","notify","position","FeatureMatch","definingCharText","animalName","penguin","reason","elephant","monkey","frog","StormIntroGame","snake_1","snake_2","snake_3","snake_4","snake","panda_1","panda_2","panda_3","panda_4","panda","hippo_1","hippo_2","hippo_3","hippo_4","hippo","crocodile_1","crocodile_2","crocodile_3","crocodile_4","crocodile","GoodbyeMessage","icon_abstraction","EndPage","ref","rewardMe","setInterval","animal_group","href","rel","StartSlide","begin","sign_cy","sign","Abstraction","intro","escapedAnimals","confusedTourists","storm","goodbye","EndSlide","barefootLogo","logo","clean","theme","load","Helmet","AgentSparrow","Intel","answers","a","IncorrectModal","MultiChoiceAnswer","btnClass","completed","variant","MultiChoiceQuestion","onIncorrectAnswer","onCorrectAnswer","setCorrectAnswers","questionContext","handleAnswer","MultipleChoice","incorrectModalDisabled","forceOnAnswer","showIncorrectModal","setShowIncorrectModal","AgentGreen","showCiphered","setShowCiphered","showFooter","setShowFooter","c","CipherEnigmaIntro","enigma","LabIntro","decipher","inner","outer","rotate","ease","times","caesar_top","caesar_bottom","LabIntro2","WheelRotater","CaesarCipherWheel","offsetInputDisabled","onOffsetChange","min","max","CaesarCipherGameIntro","LabIntro3","MissionOneIntro","alphabet","caesar","cipherFinish","upper","indexOf","nextLetter","CaesarCipherQuestion","setAnswer","gameComplete","setGameComplete","wheelOffset","setWheelOffset","answerInputDisabled","answerOffset","autoFocus","CaesarCipher","CaesarCipherGameOffset","OffsetOutro","logic","OffsetOutro2","MissionTwoIntro","CaesarCipherGame","LabOutro","CodeIntel","listStyleType","CipherLabGameIntro","CipherLabGameOffset","CipherLabGame","algorithms","finish","marginTop","star","CodeCrackingColors","CodeCracking","intel1","intel2","ciphers","cipherLab","CoachAlbert","Intro","TaskSlide","ShapeGroupingIntro","maxWidth","ShapeGroup","AtrributesGame","circle_red","square_red","triangle_green","square_green","square_blue","pent_yellow","circle_green","triangle_yellow","pent_red","ShapeGroupingOutro","AttributesQuizIntro","AttributesQuiz","AtrributesGame2Intro","AtrributesGame2","pent_blue","AttributesGame2Outro","logos_cy","logos","SkillModal","skillName","skillImage","skillDescription","AttributesGame","AttributesQuizOutro","AttributesGame2Intro","AttributesGame2","pattern","Patrick","Intro2","LogicGameIntro","circles","crosses","animals","Kitty","DebugGameIntro","country","KitBox","kit","KitBoxGroup","kits","KitMistake","flag","sport","athlete","DebugGame","boy","spain","head_blank","top_spain","bottom_jamaica","girl","uk","head_kayak","top_gb","bottom_gb","DebugGameOutro","DebugGame2Intro","getCorrectItemByType","items","find","item","tid","KitSelector","targetId","targetType","kitIndex","setKitIndex","kitItem","setKitItem","filteredItems","filterKitItems","KitMatch","head","top","bottom","equipment","setAnswers","prevState","DebugGame2","jamaica","head_helmet","top_japan","equip_bike","bottom_japan","bottom_spain","equip_kayak","top_jamaica","japan","girl_2","debugging","animation","ck_home","ColourfulKits","recap","ContextualMute","setMusicMuted","VoiceoverMuteButton","setVoiceoverMuted","faMicrophoneSlash","faMicrophone","spritesheet","spritesheetChrome","bubblez","particles","density","enable","anim","speed","size_min","line_linked","move","direction","MoveDirection","outMode","OutMode","out","interactivity","events","resize","Bubbles","Particles","LeftBottom","motion","RightBottom","RightTop","LeftTop","SeaFloor","Gradient","x","left_bottom","right_bottom","seafloor","right_top","left_top","params","Avatar","Selector","Shadow","Arrow","CharacterSelector","selectorIndex","setSelectorIndex","setAvatar","avatars","left","right","Card","Lives","LivesExplanation","heart","setLives","Turtle","TurtleWanted","wanted","QuestionCard","TurtleQuestion1","questioner","addPoints","TurtleIntro2","TurtleIntro","Explanation","HouseNotification","Notification","TileStyles","Char","IslandImg","IslandWrapper","TurtleTile","PufferfishTile","SharkTile","SealTile","SquidTile","StyledContainer","Island","notification","onSelect","infoText","handleClick","island","n","shadow","turtle","pufferfish","shark","squid","seal","TurtleIsland","setAvailableIslandAreas","availableIslandAreas","WelcomeWrapper","WelcomeContent","Welcome","TurtleOutro","Message","IDCard","Circle","Reflection","sm","avatar","Whale","WhaleIntro","playMusic","WhaleIsland","area","removeIslandLocation","CharSlot","CharBtn","active","read","CharTitle","h4","CharacteristicBtn","title_top","title_bottom","hoverIndex","onFocus","onMouseEnter","useGameTimer","seconds","onTimerFinish","timeLeft","setTimeLeft","isActive","setIsActive","interval","clearInterval","StyledLeft","p","Path","path","Failure","Success","Demo","SlideArrow","end","SlideImage","TutorialSlides","TutorialProgress","Progress","progress","TutorialCard","Tutorial","tutorialShow","SVGContainer","svg","ScoreRow","AnswerRow","Description","charIndex","BoxContainer","SquareWrapper","SquareInside","GameWrapper","SectionScore","SectionBox","SectionCharacteristics","Characteristics","logIncorrectAnswer","anim_timer","useAnimation","anim_success","anim_failure","anim_check","anim_times","demo","setDemo","setTutorialShow","tutorialIndex","setTutorialIndex","setCharIndex","indexesViewed","setIndexesViewed","flashFailure","start","score","setScore","resetTimer","handleQuestionComplete","flashSuccess","timerVariants","pathLength","resultVariants","iconVariants","fill","viewBox","xmlns","d","stroke","timer","clearTimeout","handleStart","stroke-width","stroke-linecap","includes","c_grammar","c_pressure","c_good","c_design","c_source","descriptions","slide_1","slide_2","slide_3","slide_4","getSlide","getDescription","CharacteristicsGame","grammar_1","design_1","source_2","pressure_1","scam_1","source_1","scam_2","grammar_2","setIncorrectCharacteristics","incorrectCharacteristics","StyledP","Styled","CustomToast","StyledToast","Hook","Phishing","Points","Details","Summary","Result","Title","Phished","pointsLost","livesLost","explanation","setFooter","hooking","hooked","reveal","handleClose","phished","sequence","removeLife","hook","lives","points","h1","UserPhished","Pufferfish","Puffed","puffed","PufferfishIntro","PufferfishIntro2","PufferfishOutro","TurtleQuestion","marginBottom","fontSize","PhoneContainer","PhoneBlock","PhoneContent","PhoneContentScroll","PhoneFrame","Phone","frame","PhoneButtons","PhoneHeader","PickUp","HangUp","CallInbound","incomingCall","Icon","MessageBtn","PhoneContentAnswers","PhoneCall","setInitial","nextCallMessage","call","messageSpriteName","actions","renderActionButton","UnknownCall","Dodged","dodged","fish","UserDodge","Phisherman","ScrollNudge","LaptopContainer","LaptopBlock","LaptopContent","LaptopContentScroll","LaptopFrame","LaptopBottom","LaptopHeader","AddressBar","Laptop","url","isMobile","onScroll","scrollHeight","scrollTop","clientHeight","faArrowDown","color","CharacteristicFound","background","data-text","Highlight","hover","EmailComponent","enabled","answered","setAnswered","setHover","hovering","onMouseLeave","PopUp","Thumb","Trustworthy","EmailContent","EmailCard","UserCircle","Email","email","close","onIncorrect","questionTotal","setQuestionTotal","notQuiteText","setNotQuiteText","anim_popup","source","setSource","description","setDescription","setTitle","trustworthyComplete","setTrustworthyComplete","amount","dodgyAttachment","dodgyEmail","dodgyBody","handleTrustworthy","trustworthy","subQuestionCompeleted","msg","handleIncorrectSelection","animateNotQuite","contentSpriteName","content","attachment","EmailButton","welsh","EmailClient","openEmail","setOpenEmail","unread","setUnread","setCompleted","localGameData","mail","EmailGame","onOpen","Squid","SquidIntro","Seal","SealIntro","SealCircle","PhoneHeaderTitle","TikTok","TikTokFollow","seal_head","tiktok_1","tiktok_2","tiktok_3","tiktok_4","SealIntro2","TikTokMessages","unknown_tiktok","StyledRow","FishFoodChat","nickname","previousMessage","setPreviousMessage","chatMessage","nextChatMessage","userImage","user","NikNakChat","Chat","Star","CyberCard","characterText","showPoints","reflection","BlockUser","BlockUserDodgePhisher","LinkClicked","UserPhishedPhisher","TikTokChat","UserDodgePhisher","CloseAd","PhisherOutro","PhisherOutroDodged","StyledButton","InputBtn","Close","PhishingSite","dodgedShow","setDodgedShow","usernameActive","setUsernameActive","passwordActive","setPasswordActive","handlePhished","role","handleDodged","Advert","Graphics","Text","advert","strokes","icons","ResultStates","AnswerWrapper","AudioWrapper","AnswerAudio","StyledHint","char","AnswerVariants","init","won","lost","ScrollHelp","ProgressLevel","Player","Score","Top","Bottom","Question","Value","Answer","onGameFailed","count","setCount","setCorrect","setCorrectAnswer","anim_r_player","anim_r_phisher","phisherResult","setPhisherResult","playerResult","setPlayerResult","phisherHealth","setPhisherHealth","playerHealth","setPlayerHealth","failed","setFailed","result","phish","setPhish","handleGameComplete","handleGameFailed","highest","reduce","highestAnswer","handleCorrect","animateCorrect","handleIncorrect","animateIncorrect","scaleX","phisherman_head","card_phish","custom","handleSelect","card_answer","PhishermanMessage","TitleWrapper","StyledTitle","h2","BoomWrapper","Boom","Gold","Silver","Bronze","Medal","maxPoints","award","setAward","bronze_medal","medal","setMedal","gold_medal","silver_medal","checkAward","anim_lives","anim_points","anim_progress","anim_medal","anim_score","anim_boom","end_slide_1","end_slide_2","end_slide_3","end_slide_4","stopMusic","confetti","setConfetti","congrats1","congrats2","congrats3","whale","Overlay","BGRight","BGLeft","BGShip","Background","StartCard","Wave","bg_ship","bg_left","bg_right","wave_2","aria-hidden","wave_1","phisherman","Header","CyberSecurity","llama","ray","jelly","diver","setPoints","FishFood","Tiktok","Finale","Outro","sprite","isSafari","isFirefox","voiceoverSpriteSheetDefault","voiceoverSpriteSheetChrome","html5","music","setMusic","m","mInstance","pointsStar","ContextualMuteButton","Underwater","Landscape","Pattern","bg_test","festive_landscape","Penguin","FestiveTask","MissionIntro","StyledCol","PuzzlePiece","piece","useDrag","collect","monitor","isDragging","dragRef","PuzzleGamePiece","select","useDrop","accept","drop","collectedProps","Hint","PieceContainer","Puzzle","handleCorrectPiece","droppedPiece","pieces","selectedCount","totalCorrect","forEach","shuffledPieces","DndProvider","backend","MultiBackend","options","HTML5toTouch","Puzzle1","soldier","soldierHead","soldierHeadShadow","userSelect","marginLeft","marginRight","display","soldierBody","soldierBodyShadow","soldierBottom","soldierBottomShadow","robotHead","robotBottom","soldierHeadDummy","snowmanBody","robotDummyBottom","teddyHead","BuildingOutro","Puzzle2","bear","bearHead","bearHeadShadow","bearBody","bearBodyShadow","bearBottom","bearBottomShadow","robotBody","bearBottomDummy","bearBodyDummy","snowmanHead","robotHeadDummy","robot","robotHeadShadow","robotBodyShadow","robotBottomShadow","robotDummyLegs","robotDummyHead","Selection","EditButton","SelectionColor","GiftBuilderSelector","setIndex","selectorType","setSelectorType","selectorTypes","html","selector","getPattern","pattern_snowflake","pattern_star","pattern_tree","Square","Stripe","RibbonRight","RibbonLeft","Plinth","Gift","ribbon_right","ribbon_left","DialProgress","GiftPlaceholder","GiftWrapper","TableTop","TableBottom","EditCard","SectionEdit","SectionTable","SubmitContainer","workshop","GiftBuilder","setColor","setSize","setPattern","snowman","DesktopBg","DesktopBar","happiness","DesktopHappiness","SendButton","ready","HeartCircle","desktop","BarWrapper","Happiness","HappinessBar","Label","Balloon","BalloonImg","GiftDrop","Home","setHappiness","totalSent","setTotalSend","setHint","box","setBox","toy","setToy","anim_gift","balloon","heart_circle","house","SendingGame2","home1","home2","home3","SendingIntro","SendingMission","StartSVG","pathVariants","snowVariants","staggerChildren","fill-rule","clip-rule","enable-background","Festive","Building","Boxing","Sending","End","Snowy","ZookeeperLeanne","leanne","ZookeeperFiona","fiona","ZookeeperJacob","jacob","AllZookeepers","allZookeepers","bgColour","colour","answerText","SimilarFeatures","images","sheep1","sheep2","sheep3","sheep4","pattern_sheep","horns","wing","four","paw","hooves","feather","beak","wool","fur","chicken1","chicken2","chicken3","chicken4","pattern_chicken","cow1","cow2","cow3","cow4","pattern_cow","SortAlgorithmCorrectModal","objects","object","every","tags","SortAlgorithmQuestionModal","AlgorithmSelector","onSelectionChange","sid","answersInput","valOne","setValOne","setOptions","tempOpts","obj","flat","Set","opt","values","Form","Group","controlId","Control","as","currentTarget","op","SortAlgorithmWrongModal","filteredAnswers","SortAlgorithmGame","incorrectShow","setIncorrectShow","questionModalShow","setQuestionModalShow","handleAnswerChange","selection","animal","q","SortAlgorithmSelector","sort","Intro3","horse1","pig1","goat1","duck1","horse2","pig2","goat2","duck2","duck3","dog1","dog2","goose1","dog3","goose2","algorithm","moduleName","endslide_cy","endslide","duck","home_cy","home","windmill","Sorting","patterns","algorithms2","AgentTokyo","AgentTokyoVault","image_vault","NameInput","AgentRio","BlueprintIntro","blueprint_cy","blueprint","parachute_1","default","parachute_2","parachute_3","plane","keypad","Keypad","onSubmit","prefix","input","setInput","inputChar","clearInput","KeypadGame","PartTwo","room","room2","girl_hiding","boy_hiding","laser","FindKeypadIntro","logic_icon","PartThree","vault","VaultIntro","Vault","valTwo","setValTwo","AlgorithmGame","ans","VaultGame","VaultAnim","vault_f","vault_b","VaultIntro2","VaultGame2","VaultIntro3","VaultGame3","vault_room","DiamondIntro","controls_diamond","controls_arm","diamond","arm","algo_image","rio","diamond_cy","Diamond","parachute","keypad2","Green","Grass","EngineerShahid","Character2","ButtonWrapper","Layout","DialogueOverlay","StyledSVG","Smoke","circle","cx","cy","r","transform","getAlert","alert","alert_timing","alert_program","alert_warning","SVGWrapper","showPole","StyledCircle","showEditor","AlertWrapper","TrafficLight","red","amber","green","reportDataChange","highlight","light","setLight","highlight_circle","filterUnits","dx","dy","stdDeviation","floodColor","rx","ry","fillOpacity","isChrome","game","breakpoint","mobileL","laptop","laptopL","getWindowDimensions","innerWidth","innerHeight","useWindowDimensions","windowDimensions","setWindowDimensions","handleResize","addEventListener","removeEventListener","TrafficLightSequence","onSequenceComplete","setLightIndex","reset","sequenceIndex","setSequenceIndex","lightProps","setLightProps","timeout","StyledCar","debug","Car","pos","moving","central","crashed","carPos","useMotionValue","carImage","setCarImage","bottomPercentage","distance","moveCar","car_right","car_left","car_right_crashed","car_left_crashed","visibility","Cars","cars","car","LightGuidelines","BridgeGuidelines","ResetButton","RoadStopLine","RoadStripes","RoadWrapper","TrafficWrapper","Bridge","Road","carData","trafficLight1","trafficLight2","onCrash","onRoadComplete","paused","gameReset","setPause","carWidth","t2","lightIndex","lightIndex2","setLightIndex2","setDebug","setCars","spawnList","push","inRangeOfPos","pos1","pos2","RADIUS","SMALL","MEDIUM","LARGE","centre","bridgeLowerBound","bridgeUpperBound","leftTrafficLight","rightTrafficLight","resetCars","callback","savedCallback","useRef","current","useInterval","collision","collidedIds","some","newCarPos","carsCompleted","car2","hideOnComplete","updateCarPos","faPlay","road_stripes","bridge","Sign","Clouds","Cones","River","texture","Tree","CarCrash1","CarCrash2","SceneWrapper","Scene","roadworks","help","lights","road","pattern_dots","pattern_cross","blue_sign_welsh","blue_sign","red_sign_welsh","red_sign","pattern_wave","cloud","tree","bridge_2","cones","IntroScene","setNameShow","setNextDialogue","Levels","RecapPopup","TownWrapper","town_scene_welsh","town_scene","StyledSlider","Slider","Banner","LevelHeader","h5","LevelImg","LevelComplete","Level","unlocked","complete","LevelImgWrap","LevelSelector","level","setSelector","showRecap","setShowRecap","slider","settings","dots","infinite","slidesToShow","centerMode","focusOnSelect","centerPadding","variableWidth","initialSlide","beforeChange","scaleY","level_1","faCheck","level_2","level_3","level_4","LevelOne","NoLightsCrash","CrashPopUp","CrashModal","crash_img","TutorialSlide","isIE","subtitle","slide","CloseButton","TrafficWrap","Editor","OverlayContainer","TrafficLightEditorStatic","onAnswerSubmit","faTimes","NoLightsGame","setShowEditor","showCrash","setShowCrash","t1","setT1","setTrafficLight1","howto1","howto2","howto3","howto4","howto5","setPaused","resetGame","setResetGame","Alert","nameShow","setAlert","show2","setShow2","setCarData","dialogue2","showEditor1","setShowEditor1","setT2","showEditor2","setShowEditor2","setTrafficLight2","b","setTimeouts","timeouts","EngineerAisha","DecompositionQuestion","questionShow","setQuestionShow","device","Definition","LevelThree","TrafficFrame","TrafficLightEditor","updateCorrect","setLights","handleLightDataChange","newData","ToggleWrapper","Slot","edit_frame","Toggler","recreate","Help","SequenceContainer","edit","TrafficSequence","s","SequenceGame","dialogueShow","setDialogueShow","Light","clicked","setXState","LightTrack","LightCircle","ResponseModal","TrackWrapper","TrafficTimings","redOn","setRedOn","amberOn","setAmberOn","greenOn","setGreenOn","redClicked","setRedClicked","amberClicked","setAmberClicked","greenClicked","setGreenClicked","setComplete","played","setPlayed","setStart","setResult","anim_response","z","handleLightsFinish","results","flashResponse","flashWrong","responseVariants","correctAnswer","handleLightClick","on","AlgoDefinition","AlgoQuestion","Characters","EndSLide","characters","CarRight","data-name","g","clipPath","StartButton","StartPoster","start_poster_welsh","start_poster","Fade","in","StyledHeader","Traffic","tourists","decomposition","GlibGlob","alien1","FlubFlub","alien2","AllAliens","aliens","FlubFlubIntro1","intro1_cy","intro1","FlubFlubIntro2","intro2_cy","intro2","FlubFlubIntro3","intro3_cy","intro3","VariablesQuiz","gameScore","gameScoreObject","VariablesQuizOutro","VariablesQuizOutro2","randomIntFromBetween","Asteroid","clickHandler","asteroidImage","AsteroidWrapper2","AsteroidWrapper","asteroidName","asteroidValue","asteroidColor","asteroidWidth","Explosion","setDisplay","setOpacity","boom","explosionMap","setExplosionMap","blank","ExplosionWrapper","StartContent","TotalScore","PlayerName","Zinon","SpaceWrapper","SpaceCanvas","SpaceBackground","Timer","TimerHeight","TimerWidth","Cockpit","AsteroidGame","reportGameScore","scoreObj","setScoreObj","countObj","setCountObj","explosions","setExplosions","asteroidX","setAsteroidX","asteroidY","setAsteroidY","asteroidTypeIndex","setAsteroidTypeIndex","ex","shift","tmr","cockpit","scoreVisible","stars_1","stars_2","stars_3","types","nameVisible","zinonVisible","zinionEnabled","hasOwnProperty","incrementCountType","X","Y","smallAsteroid","largeAsteroid","scoreObject","setGameScore","setGameScoreObject","TimeoutModal","MissionGame","MissionOutro","evaluation","variables","TitleWrap","smallX","setSmallX","smallY","setSmallY","largeX","setLargeX","largeY","setLargeY","controls_small","controls_large","small","large","rocket","Variables","mission_one","mission_two","mission_three","mission_four","mission_five","LocaleRoute","rest","render","pathname","ModuleRouter","history","useHistory","useLocation","currentVoiceover","setCurrentVoiceover","spriteName","vo","onCompleteBarefoot","exact","to","Provider","Ages","App","barefoot_zoo","code_cracking","colourful_kits","the_diamond","sorting_it_out","asteroid_blaster","festive","tricky_traffic","Boolean","hostname","match","Bugsnag","apiKey","plugins","BugsnagPluginReact","ErrorBoundary","getPlugin","createErrorBoundary","ReactDOM","StrictMode","document","getElementById","navigator","serviceWorker","then","registration","unregister","catch","error"],"mappings":"oGAAAA,EAAOC,QAAU,IAA0B,0C,6BCA3CD,EAAOC,QAAU,IAA0B,mC,+BCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,k2E,sBCAjBD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,8C,mBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,2BCA3CD,EAAOC,QAAU,IAA0B,sC,qCCA3CD,EAAOC,QAAU,IAA0B,0C,iBCA3CD,EAAOC,QAAU,IAA0B,oC,gCCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,cCA3CD,EAAOC,QAAU,01M,mBCAjBD,EAAOC,QAAU,8uM,iBCAjBD,EAAOC,QAAU,IAA0B,0C,2BCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,kC,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,oC,yCCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,6C,iBCA3CD,EAAOC,QAAU,IAA0B,2C,2CCA3CD,EAAOC,QAAU,kiL,mBCAjBD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,mC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,mC,gBCA3CD,EAAOC,QAAU,IAA0B,mC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,gC,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,mC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,kC,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,iBCA3CD,EAAOC,QAAU,0uM,cCAjBD,EAAOC,QAAU,s9J,cCAjBD,EAAOC,QAAU,0mC,cCAjBD,EAAOC,QAAU,s2I,cCAjBD,EAAOC,QAAU,8gC,cCAjBD,EAAOC,QAAU,03H,gBCAjBD,EAAOC,QAAU,IAA0B,iC,cCA3CD,EAAOC,QAAU,8gC,cCAjBD,EAAOC,QAAU,0wE,cCAjBD,EAAOC,QAAU,swP,cCAjBD,EAAOC,QAAU,srH,gBCAjBD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,mC,gBCA3CD,EAAOC,QAAU,IAA0B,6C,oBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,0DCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,kBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,cCA3CD,EAAOC,QAAU,2jS,gBCAjBD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,cCA3CD,EAAOC,QAAU,ssD,gBCAjBD,EAAOC,QAAU,IAA0B,iD,gBCA3CD,EAAOC,QAAU,IAA0B,0C,cCA3CD,EAAOC,QAAU,8iL,gBCAjBD,EAAOC,QAAU,IAA0B,uC,yHCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,2C,4BCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,8C,kBCA3CD,EAAOC,QAAU,IAA0B,kC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,kC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,mC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,mC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,mC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,iD,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,mC,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,mC,gBCA3CD,EAAOC,QAAU,IAA0B,mC,gBCA3CD,EAAOC,QAAU,IAA0B,kC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,mC,gBCA3CD,EAAOC,QAAU,IAA0B,iC,gBCA3CD,EAAOC,QAAU,IAA0B,kC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,kC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,2C,cCA3CD,EAAOC,QAAU,ugQ,gBCAjBD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,iD,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,kBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,wC,cCA3CD,EAAOC,QAAU,siV,gBCAjBD,EAAOC,QAAU,IAA0B,2C,cCA3CD,EAAOC,QAAU,8oE,gBCAjBD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,kC,cCA3CD,EAAOC,QAAU,shF,cCAjBD,EAAOC,QAAU,kqS,cCAjBD,EAAOC,QAAU,8rG,gBCAjBD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,iD,gBCA3CD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC,QAAU,IAA0B,mC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,cCA3CD,EAAOC,QAAU,8iO,cCAjBD,EAAOC,QAAU,kzO,cCAjBD,EAAOC,QAAU,0/I,gBCAjBD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,kC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,2C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,gD,gBCA3CD,EAAOC,QAAU,IAA0B,gD,gBCA3CD,EAAOC,QAAU,IAA0B,gD,gBCA3CD,EAAOC,QAAU,IAA0B,gD,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,yC,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC,QAAU,IAA0B,8C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,4C,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC,QAAU,IAA0B,kD,gBCA3CD,EAAOC,QAAU,IAA0B,6C,gBCA3CD,EAAOC,QAAU,IAA0B,sC,gBCA3CD,EAAOC,QAAU,IAA0B,kC,gBCA3CD,EAAOC,QAAU,IAA0B,0C,cCA3CD,EAAOC,QAAU,szB,gBCAjBD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC,QAAU,IAA0B,0C,gBCA3CD,EAAOC,QAAU,IAA0B,+C,gBCA3CD,EAAOC,QAAU,IAA0B,uC,gBCA3CD,EAAOC,QAAU,IAA0B,2C,cCA3CD,EAAOC,QAAU,soS,cCAjBD,EAAOC,QAAU,k4I,cCAjBD,EAAOC,QAAU,k4S,cCAjBD,EAAOC,QAAU,8oJ,iBCAjBD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,gBCA3CD,EAAOC,QAAU,IAA0B,qC,cCA3CD,EAAOC,QAAU,80O,cCAjBD,EAAOC,QAAU,8kM,cCAjBD,EAAOC,QAAU,khI,cCAjBD,EAAOC,QAAU,0sM,gBCAjBD,EAAOC,QAAU,IAA0B,mC,cCA3CD,EAAOC,QAAU,sgH,gBCAjBD,EAAOC,QAAU,IAA0B,wC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,oC,cCA3CD,EAAOC,QAAU,8sK,gBCAjBD,EAAOC,QAAU,IAA0B,oC,gBCA3CD,EAAOC,QAAU,IAA0B,yC,cCA3CD,EAAOC,QAAU,s0J,cCAjBD,EAAOC,QAAU,09Q,cCAjBD,EAAOC,QAAU,soU,cCAjBD,EA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","file":"static/js/main.9f8e9778.chunk.js","sourcesContent":["module.exports = __webpack_public_path__ + \"static/media/paint-stroke.7e2a0d81.svg\";","module.exports = __webpack_public_path__ + \"static/media/cloud.f21cc81c.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo-barefoot.0c9110c5.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/town_scene.6aa28734.svg\";","module.exports = __webpack_public_path__ + \"static/media/town_scene-welsh.e0d27e81.svg\";","module.exports = __webpack_public_path__ + \"static/media/asteroid--small.db321d55.svg\";","module.exports = __webpack_public_path__ + \"static/media/asteroid--large.ed381fc6.svg\";","module.exports = __webpack_public_path__ + \"static/media/2-turtle.b242199b.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_pattern.000293e1.svg\";","module.exports = __webpack_public_path__ + \"static/media/top_gb.fd5fecac.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_logic.696231d5.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_algorithms.ecc5c829.svg\";","module.exports = __webpack_public_path__ + \"static/media/equip_kayak.0fa0509b.svg\";","module.exports = __webpack_public_path__ + \"static/media/head_helmet.5efd33b1.svg\";","module.exports = __webpack_public_path__ + \"static/media/top_jamaica.b6fae5e4.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMUAAACkCAYAAAAnkOoPAAAACXBIWXMAACE3AAAhNwEzWJ96AAASUUlEQVR4nO2dXWgdxxXHz+6917ItOZYty7ZiJ5bjOiEJSexCKQWBHRVCaR+qpISQJqnlNJRQCpbf+mhDX/oU+bWURgotoe1DZWhCKfRi0fsQaELsUhLqkESq5UixZEuyJX/djy1nduZqtdrdux+zu7N7zw+Evu/undn/nDkfM6MZhgEEEYbq4MBx278dAYBuALhg+/nFUrmylJVGVloU1cGBfgDotzS2+OyF6JCLADBVKlcupvcO8gF/+I/zvsCPYyHf2DT2Ce+ji1wsU6o1klKiqA4O4EM/xB9+7ITtkl56kncCdsaFLI1aaWDph+MRBOCXad4vE6r0TeqiqA4ODPEOGJIoglZM8k6YUHGkSgMuhGHeDwdSvJXzvF/G0rqBVETBO2AkihC0zR0A+GHn7j0w7t4L8lKpd0KaVAcHhnlfPKPYrS0DAPbJaNIDV6KiCNwBxSJoXVtB2/EAaF2dAMUCaN0P+L6esXQToFYHY2UV4I4pFvYzZ6YtnZDr6VV1cKCb98OIfVASgw22Ofve0t6ObW8bhIyV2wC1Ghi3+Gf39g7COACcSUocsYvC0gHDfswyPvxaXy/rABREHLCOW1kFY/Em6zSbZcERajSP4nASA2tvHHS6zQ8ceGTTbO+V22ab4yAVjkTEEasouGUYbTVFwtFJe6gP9F07nKdEMcM6C8UxO2/tsFyJg/tu+H4OaLt2gt67wxRBCu3NrPfCDWjML3JrXgv6Cue4OGLpl1hEwUN4Y60sA3aKfnB/oClR7Ny9B42FRTCuzAoLMs07IJM+Bw9rj2mbO46lOfB4YSwsQgMHpIUbQf4NB62ROPpFqii4ecab/KHnRVUUgwM4ijWuzInOwojVcJaiVdXBgRGt+4Ff6Qf3d6re1gwckObmTYvtP1iC/TIk02pIEwU3z2NeUyWcJumPH1JeDBvAzvpyBjtsmVuNUcXucB1scNrc8X7h8UPfyVxbc4y5edbmPsWxzAesCRnXliKK6uAAPiSnvP4GLYPevz/ytVJlTRzKWo3qc8e+q/fvf09/qE+tOVJIAorjbKlcORP1mpFEwadLE15ZT4xuMOsQUyQpDdi06suZVWPp5quyRicZ1Ia+d6rw5OFR1XwGGTRm5pg4fDjl49zXCD2dCi0KnoAb88o56OjYfSPN5Gi84ChW/3Lm16X3//HLtO+l/tqPyvqjB59N+z5ipVaHxtQMNK7MtrrKJSxRCSuMUKLggrjg5T8U0Drs7Q1zT95s2gxGRwfAli6AQtH8062dYIiv8U3duwtwn5vb+3fZh3Z7FaAeOPTni8ZnUx825uafK/19cjGWC7Sg/uZrH+n79nwziWsZ27ab7Y7tj2zqAKNj87q/0W4tr32zsgQaju53QucmNt4DWupPP281pQotjMCiaCmIYhEKR5+QN13a0glG9y6zM7Z0rgkhDPUaaCvLALeWQVu6bgpGEsbC4u3G1NWjxfN/uyztRX1Qf/2ly/rBhw7H8uI4AGG7d20HY1s3E0AkVpZBu71ifsb2j4I/qxFKGIFEkZggsDN2P8jEELkjvLizCtr1r9mHDCvSmP7KgPvV1wvv/DmRnEb9xIsz2t5d+1gJjCwKRTC6e8Do2cPEEN/N10xh3Ph6vWUJCOY46p9+7uVrTJbKFfu6D098i4I71VOxCgKtwoMHwNjeE/41QsLEMfNFZHEwYdRqbxTG/vS7OO+3fvKlWW33zr3SBIFi2L2PDUaRrHEY0HLMTocWB1YksOmUe/nIeKlcGfb7er5EwQVxwdWpjioI7JC+h1mnpAqOXrP/A+3a1Uh30Zi6akBBf7nwmz/8MY63Uz/x4py2d9ceWYLAKZJx4LF4rbIPtOXroE1dDjcw1epQ//gTL2Gc9ptf8isKnA6ccPt94VtPRxJE49GnTX9BESJbjVoNGlevGaBr0oUh20IYfQfYgKQM9Rrol/8dzjFvLYyjflZi6q3+gBf1uQsiSg5CQUEgOJ9uHHoi/AsUi6Dv261Bw3i3/rNXXpJ1X/VXXvhAqiD2P6KWICDiM1Es8BmL6/9O8FmPJ56i4MVkriZH39sbKezKHjzFBNEEIy59EXIsQhjVmhRh1F594T1t/55vSxMEOtNpT1fdQGEcejKcb1MssGQxtr8D2KEtM96tLIVrLRMr6sOLh0SE+lQmstOJwni4L7LFqP/8J78tPPbI92VGmYz94fsuETD/gRGwEODMpeD+bJ7iUVRXXEXBC/ycyzfQsX7qsWhNk0KEKTA8PBmJ5lSq8U79jZcDmx4Uk97b87rU97Vpc+pOtR+itL22awerqHDB0+H2shSu/1h46tHIK7SMrV2R/j8xNm2OfiVcVtvTvQk07bMg/8YE0bf7XSgWNJlvl1UEZIGIMwksQNWc68CO8UHf+f+cflgdHDjjtkAI1SejHFmLqeRCVdiyz53bS/U3fuwr3otWRd/d83vZgsgU9wNtQLER9C8O97v91t1Xtv/Aso7X4SJFeeXfEbKYSaItLUi7GvMJOkoPNt587a9ef4eC0Hp3fgodm2LJorEkWQYGJe1W9HVDOI1yGcQP8MjqBpwsxbCbc41rImQtbJdVWhErWCclsZANeMTOaDR+4OV4a9sf+EDbumVLnG+Ntb/q3JBzj+y5dca3KBytBFs1t3+vvFbE7DEmyFQFk0hXPo/l5vS+XgBdf9fJ8W6c+unHWvc2iQ3tDGbuZQteJlhVEKUmykpzp5KNHHOKRK0TBXc+nH0Jd7WFv1nMHE8nWlTqjyhZVT+g4925RYNS6SPrX2PoVdu1wzNcKPU9Tv1XSWvdrCiQiEckaoMRsFsK56Ip7MQ41kaIBvjiE3U65/69eAXBYSOXrvU0fjH8F4gr9NqKO6ug/+df5jRREVjtWQwDJfMtnCNRQ/Ysd7P2if/CcZFMIuursVwciwJDJmxk0CwGTFKgtbrRmL32stbT/XbcfoQX2O5Y9pF4haxgZdmcrsY4GLH1F7ikdSMnrVvlWFvAPW4bk5VYB66Om77MHsxExYG+zbWvTMdT4qIj3xQLWhy5iKAwi7103RQHln8klNzDyliQ6D94gc+xiyjETjSMlqJgYcQkF8ILccx8YWY0sUana7vcEUwscMFS5agrwGSgSi6CDRBXTWuJa1tQIHEs9OIr72SvfmwJ7kTZ1elURbtunzI2ffKcOh3ulxt1Com5HLXL7CxcE+y3VAETQGyN9oq50o5/JgKAU9utnaz919Zo+6jDqptrs5tr5nG9dsr5KY8p1PNiZxYx/Lou11NlMy3WmLxBNwyrWKO0da2T4tykoC3BQQVHdBzdHZZEM6GItr93L51pqE9wH11wFsVxvl2TtyjYxsdZ2K8JzX5GMuR5JEttz55nLCvfuKa7qQERknWOjctcEE8QiuAy0DeXWgtROJaIa9vys6sfQQjEgTR2xGmvuteCi6xuzksQXngs1mJa0PkRsATRPrgXtfYLUZClINoKj+e6aSmSKUAjCPVpWgrHLT9ciqcIIs8cAE+fgkRB5Bg3Zxu3ddJTPl2fINLBw9luuUMgQbQbJAqCWE83iYIg1nOEREEQNkgUBGGDREEQNkgUBGHDXRT+TrgniNyh82NVN9DijGKCyDR4FrcbKIrou9gSRI7wFAUexUoQuaNW93pHF1EU7qdFuh/YTRCZxeP0VGTJ21J4zLsIIrN4WwpoYSm8/5kgskgLS8GmT1NuvzVu0U56RA654x5ZLZUrS3qpXHEXBTnaRA7xeK5ZekIk7yYd/6RWI2EQucNj+sQMhBCFq19hXHHYPJQgMkqL4NFFX6JozM2TtSByQ4tn2Z8okPrHn5AwiFxgLLa2FNbjvZbcjgoW4EkwGh4un4WdyAnCgdo/P3RLSi+XyhW23ZP1eKAL9hNd7OBUCubmzS36e3eywyFJIERWaMzMeVVpXBBfBBKFACtomQN+ZZYEQmQCY24eGp+5Zh/ASxSBIYEQSlOrm0d6tY6iNp//pk8Bpl8xJWtzNBIIkRo4UC/dhMb8IhgLN/zcxXSpXGnulGk/chTP/Dol471YLQgep6Tj4d4oEtzx2X13NoII9pxhVBSftZVVFlli3wev7p6wfmMXxQVZolhHrdZ00oFvhS4EQlaECAJ76FdWTSuAiTg5yxvWuQ7rpk/gMzQrlWKRiUPv3WFaEdrYmRAwC3A7qhVoRTMUK3A6sR1NyYnEOgbrqxZuQJ3P/ZgvguLY1kmWpI1go74Qwa3VuATgxJj9Z06iGE1UFDaYL2KZajFL0rWVHd5niqSTfJKMgwJgDz1/+Fusb4ibDaLYMH0CyVGoOGAHynR1stNbSShqI3wAMf1JWQB2LpXKlQ0neTlZCuDW4q1Eby8AbPsdtCiWcBsTCk690KKIr+nMvuSo1c25vzoWwA+jTn/jZinQ8VhU4KYjw6wICkRYFS4YIjzN+T9+LK59nTGW8YAWXGlnv21HUYApjAm/ZR9ZxMyXFE2x8OkXWZY1hKNrhj3rSTu/SXC2VK6ccbqO2/QJuGnJrSjEYhOnjKdVMGA5YjZPvkvz/YuH/9bttZWW7bG10QYHW+BqKSADDndaWKdg2rY1odinZomKiM/pBdYVZs01BNmc5sTBeKlcGXZ7XS9LgaB5eVv5t5gwwtGHEHtjSfNpbCIgAuE4bWr2kZelALIWRP7wtBLg83wKT1URRIbAiNNIq9ttKYpSuYIOyTT1PJEDRp1CsHb8nmTkaW4IIgNMuyXrQomiVK5gae156nkiw4z4sRIQ8My7ET4nI4isMVkqVyb83rNvUfA9Z8npJrLGctDpf6DTUUvlyihNo4iMccZrE3EnwhwZPEzTKCIjTPKBPBCBRcGdlSF6KgjFCTxtEoQ6XJ5Ho07TU0EozEjQaZOgZZmHF9XBgbE0l64ShAstSzm8CGUpLIy4HU5PEClxyU8pR2yi4P7FcRIGoQjMj/CbpHMjqqUQwqCIFKEC6Ed4nrXih8iiAFMYF7nFIGEQaXGOF69GJpKjbac6OHCEb0GY3A6DBAFwvlSuSEsTSLEUArIYRApckl3FLdVSCMhiEAmBg++RsPkIN6RaCgFZDCIB8Nk6LlsQEJcogIRBxM+QjEiTE7GJAkgYRHyc5KVGsRCrKGC9MCjBR8jgpKzQqxuxONpO8P1pUd3PJHJBIo/ELghIwlIILCUhk0ldk8gViQgCkrQUVqi6lghIpKrXoCRmKazwN3gujWsTmSNRQUBaogBTGFjeezKt6xOZ4GzSgoC0pk9WqoMDQ3xbdMp+E1YS8yHspC4KoLIQYiOpCQLSnD5ZoVwGYSFVQYAqlkJAuYy2ZpkvEkpVEKCKpRBYchnjatwRkRCiuC91QYBqlsIK5TLaBiGIWIr7wqCUpbBCuYy24JJqggCVLYWgOjgwTOfu5RIhiEg7b8SBspZCwOeZlOTLF8oKArIgClgTxlFal5ELxlUWBGRh+mSFJ/km6LTWzJJ4HVMYMmEpBNwhO0JJvkxyLguCgKyJAtbnMujwmGywzLPUkfZ3TZJMTZ/sUC5Deabj3GAgLjJnKaxwc0yRKTWZ5HsyZUoQkHVLIeC5jFGqslWGTDjUbuRCFEDl5yqRepVrVDI9fbJC5eepgw710awLAvJkKQRUfp4KSmeog5I7UQgoMpUY43wdRC4EAXkWBZjCQOf7lAK3kldOhzmnWnVyLQqgKtu4WOb5h9j2c02T3DjabnDH73kqJpSG8B9yKQhoB0shoJCtFM7LOH1UddpGFECRqaicy1L9UhRyP32yQps8hyJzBX1RaStLYYVCtr5QblOBJGgrS2GF1+acVueOlAMd6v52EwS0s6UQUMjWkUwX9EWl7UUBFJmyk8uEXBBIFBxa/53vhFwQ2tansNPm679zn5ALAonCQpuu/z7fjhEmL2j65EKbhGzbJiEXBLIULuQ8ZNt2CbkgkKVoQQ5DtpncYSNJSBQ+yFHINlcr5OKCROGTHIRs2zohFwQSRQAyXGWb+R02koQc7QBksMoWHepnSRDBIEsRkgyEbC9xh3pKgXvJFGQpQqL48WPiDAgSRAjIUkREwZBt2xf0RYVEIQFF9rKlgj5JkCgkkXIu4xLfUIASchIgn0ISlr1spxO+NBX0SYYshWQSzmWcLZUrZxJ9g20AWQrJWHIZ4zFeBv2H50kQ8UCWIkaqgwNYhfqW5CtMcv+Bwq0xQaKImergAFqNMUk1UzRdSgCaPsUMD5EeiZjoQ+twkASRDGQpEoRbDXywj/m8KorhDOUekoVEkQI8pzHMHXJ7lGqal6iPUZg1BQDg/xafNVaCdV15AAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/notification.ca5ad01b.svg\";","module.exports = __webpack_public_path__ + \"static/media/caesar_top.94b79ef4.svg\";","module.exports = __webpack_public_path__ + \"static/media/caesar_bottom.89d00257.svg\";","module.exports = __webpack_public_path__ + \"static/media/star.3eeb31cf.svg\";","module.exports = __webpack_public_path__ + \"static/media/2-whale-bowie.51567604.svg\";","module.exports = __webpack_public_path__ + \"static/media/2-pufferfish-1.2dab5fee.svg\";","module.exports = __webpack_public_path__ + \"static/media/2-octopus.6be0b083.svg\";","module.exports = __webpack_public_path__ + \"static/media/2-fish.ec59b2ac.svg\";","module.exports = __webpack_public_path__ + \"static/media/stars_1.d8e2127e.svg\";","module.exports = __webpack_public_path__ + \"static/media/stars_2.f886ba1e.svg\";","module.exports = __webpack_public_path__ + \"static/media/stars_3.2c5f34a1.svg\";","module.exports = __webpack_public_path__ + \"static/media/3-green.f472ba44.svg\";","module.exports = __webpack_public_path__ + \"static/media/bottom_gb.bea9868a.svg\";","module.exports = __webpack_public_path__ + \"static/media/bottom_jamaica.c387d98c.svg\";","module.exports = __webpack_public_path__ + \"static/media/top_spain.e8660ce9.svg\";","module.exports = __webpack_public_path__ + \"static/media/equip_bike.e770e639.svg\";","module.exports = __webpack_public_path__ + \"static/media/pattern-snow.89f53058.svg\";","module.exports = __webpack_public_path__ + \"static/media/traffic-cones.8d5673e0.svg\";","module.exports = __webpack_public_path__ + \"static/media/shadow.fb731762.svg\";","module.exports = __webpack_public_path__ + \"static/media/4-blue.c047bc1e.svg\";","module.exports = __webpack_public_path__ + \"static/media/4-green.f74b33bf.svg\";","module.exports = __webpack_public_path__ + \"static/media/5-yellow.3a9c1f42.svg\";","module.exports = __webpack_public_path__ + \"static/media/head_kayak.e8cbdc56.svg\";","module.exports = __webpack_public_path__ + \"static/media/slide_1.bebeaf8b.svg\";","module.exports = __webpack_public_path__ + \"static/media/phisherman-head.392e8f2e.svg\";","module.exports = __webpack_public_path__ + \"static/media/alert-warning.f944f74e.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/0-green.168249b0.svg\";","module.exports = __webpack_public_path__ + \"static/media/0-red.a88ac0e9.svg\";","module.exports = __webpack_public_path__ + \"static/media/3-yellow.1853202e.svg\";","module.exports = __webpack_public_path__ + \"static/media/4-red.ba7c8564.svg\";","module.exports = __webpack_public_path__ + \"static/media/5-red.e0fd7f83.svg\";","module.exports = __webpack_public_path__ + \"static/media/athlete_boy.b00594f7.svg\";","module.exports = __webpack_public_path__ + \"static/media/athlete_girl.2893d807.svg\";","module.exports = __webpack_public_path__ + \"static/media/uk.806bcb4d.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_debugging.104fdca4.svg\";","module.exports = __webpack_public_path__ + \"static/media/ck-home.d2f0130b.svg\";","module.exports = __webpack_public_path__ + \"static/media/heart.fe53aca6.svg\";","module.exports = __webpack_public_path__ + \"static/media/c-grammar.1ab00563.svg\";","module.exports = __webpack_public_path__ + \"static/media/c-design.7223534f.svg\";","module.exports = __webpack_public_path__ + \"static/media/c-good.9564305f.svg\";","module.exports = __webpack_public_path__ + \"static/media/c-pressure.7fd136b3.svg\";","module.exports = __webpack_public_path__ + \"static/media/c-source.b8aa8355.svg\";","module.exports = __webpack_public_path__ + \"static/media/hook.3dcc442d.svg\";","module.exports = __webpack_public_path__ + \"static/media/2-pufferfish-2.1b68d6e0.svg\";","module.exports = __webpack_public_path__ + \"static/media/phisherman.1c235803.svg\";","module.exports = __webpack_public_path__ + \"static/media/fish-head.abe3dae4.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAEEAAABrCAYAAAAowO8VAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAALQSURBVHgB7d3NahNhGMXxowZMaZuPWmsNsaSFFlIsREFMXcWN3kDAtfUCrHgB6Q0UL8ALEMGF625cCd0piBXcNGgXYq222tIWCjrPCRNozORjMvPSxfnDbDqh8+Y3z0xCFgkAVLztr+OtgOBWHK9l8zwUhAAhMCFACEwIEAITAoTAhAAhMCFACEwIEAITAoTAhAAhMCFACEwIEAITAoTAhAAhMCFACEwIEAITAoTAhAAhMCFACEwIEAITAoTAhAAhMCFACEwIEAITAoTAhAAhMCFACEwIEAITAoTAhAAhMCFACEwIEAITAoTAhAAhMCFACEwIEAITAoTAhAAhMCFACEwIEAITAoTAhAAhMCFACCzRy4NSiQTmh0dQnbiKxUwWqQsJ/s36fXKCr8eH2Njfx9rPbazt/EDc2bFtLbYmW0/+YrK5z9bz8eAPNg689exsY31vt+v/O4fGVxa/CTrYUi6PR7mp5pPu1tbRIZ592cSr7986PWza2+oB+1a8rdZuRz6ZxJOpadwbuxzleuqBCOV0BqtzRU95CGGygz/48A5bx0ftdveNsJS7RoBen3xr63u/8PTzp3brqbe9Jyx7B3u5cDM0gJVPDuHtrTucpEGzk1GbmQ0NYJXTWe853eAl1Np/CAZg4lFVm5kbCMIA7PqPIjsxdnJbIU4hVK9MRgrgZxB2efWbnZCoAPxsmp4XF07dTJsI/k0nrlZni32Nc1wnxLKJsAnzayLYAQe5B/Ry4H4uizhPiGX3CH86iWBTEPXYtavXl1qbgjhPiJ8PTQR7+XGR/yanW9WJHFxk01DJjjUQFkPctMJ2/9J4x/02lS7XUxpNNxDmh0fhqm7HcjUFfndtEl5cL8FldkksFwqB+29n3E2BVRrxJqGcGYfrHk8WAveVU24R/Cpw+xsr+s2Xs5gQIAQmBAiB2Rv59972EG7r9MHfawR/6hRHu/8A3VXkv3qpoZ4AAAAASUVORK5CYII=\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAXMAAAB+CAYAAADWU/H4AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKKSURBVHgB7dgtbpVRFEDRU2hoUgQ/jmAq66ipQZUREIbADPDgmAgzKVUIEICqfKKehgQCBHg8wQRo2oRvZ63k3juBc7a4W7NE+4fHm/toWLJXc/r26ZTtH66HhVs/mtN3r2cBrg0AiyfmAAFiDhAg5gABYg4QIOYAAWIOECDmAAFiDhAg5gABYg4QIOYAAWIOECDmAAFiDhAg5gABYg4QIOYAAWIOECDmAAFiDhAg5gABYg4QIOYAAWIOECDmAAFiDhAg5gABYg4QIOYAAWIOECDmAAFiDhAg5gABYg4QIOYAAWIOECDmAAFiDhAg5gABYg4QIOYAAWIOECDmAAFiDhAg5gABYg4QIOYAAWIOECDmAAFiDhAg5gABYg4QIOYAAWIOECDmAAFiDhAg5gABYg4QIOYAAWIOECDmAAFiDhAg5gABYg4QIOYAAWIOECDmAAFiDhAg5gABYg4QIOYAAWIOECDmAAFiDhAg5gABYg4QIOYAAWIOECDmAAFiDhAg5gABYg4QIOYAAWIOECDmAAFiDhAg5gABYg4QIOYAAWIOECDmAAFiDhAg5gABYg4QIOYAAWIOECDmAAFbZ/P82eZ5PAvycefzwZfrv24Pi3Xv585q78fuai7J1myd35+XT+Yfnc2L47kib3Y/HQ2Ltv/t5vs7v2+cz39uPXOyvVmDg80iHM2CPPh+a1i8vb/nsqzmAq5y9h9+vTss3sEsw8o3C0CAmAMEiDlAgJgDBIg5QICYAwSIOUCAmAMEiDlAgJgDBIg5QICYAwSIOUCAmAMEiDlAgJgDBIg5QICYAwSIOUCAmAMEiDlAgJgDBIg5QICYAwRsr+faamZ9MrBo69VcwHrG7FPw4Q90dy1NcJVRwAAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/top.85660b42.png\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAASwAAAB+CAYAAACeTCw9AAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAKKSURBVHgB7d2xSlZhHIDx99MvqEgSBCEIdApHF3ddvYigS+hKoiuwuokgiGquwVGaDJoaQtoK9WTRmF+rT/5+cM47vP/x8Bze6Z2Nf9naeXPx3h2UPRtH7x+N/9nWzjSIm/bG0Ye3iyaWBkCEYAEZggVkCBaQIVhAhmABGYIFZAgWkCFYQIZgARmCBWQIFpAhWECGYAEZggVkCBaQIVhAhmABGYIFZAgWkCFYQIZgARmCBWQIFpAhWECGYAEZggVkCBaQIVhAhmABGYIFZAgWkCFYQIZgARmCBWQIFpAhWECGYAEZggVkCBaQIVhAhmABGYIFZAgWkCFYQIZgARmCBWQIFpAhWECGYAEZggVkCBaQIVhAhmABGYIFZAgWkCFYQIZgARmCBWQIFpAhWECGYAEZggVkCBaQIVhAhmABGYIFZAgWkCFYQIZgARmCBWQIFpAhWECGYAEZggVkCBaQIVhAhmABGYIFZAgWkCFYQIZgARmCBWQIFpAhWECGYAEZggVkCBaQIVhAhmABGYIFZAgWkCFYQIZgARmCBWQIFpAhWECGYAEZs/3XLw6m2di8bODbpy/bp99/rA6ybq7eOb69vnp86cBsHL7ce/h4XFH7rw62p/nyk0UzXz9+3h2krdxbO7yxcuvksv2z87On84t1bzbGxmVDdzfWB3mbf56/my5+WVfY+Wy+ujSm3UUzaw/uD/K2F23OZ8vPHQmBDMECMgQLyBAsIEOwgAzBAjIEC8gQLCBDsIAMwQIyBAvIECwgQ7CADMECMgQLyBAsIEOwgAzBAjIEC8gQLCBDsIAMwQIyBAvIECwgY/7r1t+L9XhwbU3T72/gylqaTk/GWH43uNaWzs+OfwKd1zVj7Z0M5wAAAABJRU5ErkJggg==\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/ribbon-right.5b080661.svg\";","module.exports = __webpack_public_path__ + \"static/media/ribbon-left.5acc5d80.svg\";","module.exports = __webpack_public_path__ + \"static/media/pattern-star.175a9457.svg\";","module.exports = __webpack_public_path__ + \"static/media/thief_girl-safe.9f3a7405.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-room.bdbd9fd6.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-room--back.b2b8766e.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-vault--front.af30fc55.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-vault--back.fe094f7e.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-diamond.7f3429c2.svg\";","module.exports = __webpack_public_path__ + \"static/media/right.55499428.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_evaluation.946f4c2d.svg\";","module.exports = __webpack_public_path__ + \"static/media/bottom_japan.c81795b3.svg\";","module.exports = __webpack_public_path__ + \"static/media/bottom_spain.753bf560.svg\";","module.exports = __webpack_public_path__ + \"static/media/top_japan.713097d0.svg\";","module.exports = __webpack_public_path__ + \"static/media/so-icon--beak.0b87eaf6.svg\";","module.exports = __webpack_public_path__ + \"static/media/so-icon--feather.1100b501.svg\";","module.exports = __webpack_public_path__ + \"static/media/so-icon--mane.638c373e.svg\";","module.exports = __webpack_public_path__ + \"static/media/so-icon--paw.7055a891.svg\";","module.exports = __webpack_public_path__ + \"static/media/so-icon--wing.561dc60e.svg\";","module.exports = __webpack_public_path__ + \"static/media/so-icon__four.19a34559.svg\";","module.exports = __webpack_public_path__ + \"static/media/so-icon__hooves.893cc538.svg\";","module.exports = __webpack_public_path__ + \"static/media/so-icon__horns.8b06cd82.svg\";","module.exports = __webpack_public_path__ + \"static/media/so-icon__wool.d10904eb.svg\";","module.exports = __webpack_public_path__ + \"static/media/lang_en.d21a0113.svg\";","module.exports = __webpack_public_path__ + \"static/media/lang_wa.5d4e272d.svg\";","module.exports = __webpack_public_path__ + \"static/media/slide_1.64f2502e.svg\";","module.exports = __webpack_public_path__ + \"static/media/bronze_medal.b69737ee.svg\";","module.exports = __webpack_public_path__ + \"static/media/gold_medal.5122b4eb.svg\";","module.exports = __webpack_public_path__ + \"static/media/silver_medal.2aed3959.svg\";","module.exports = __webpack_public_path__ + \"static/media/heart-circle.2654843b.svg\";","module.exports = __webpack_public_path__ + \"static/media/so-algo-duck1.b846759b.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-algo-duck2.a18efd48.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-algo-duck3.5ab42141.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-algo-goat1.8970fb3d.jpg\";","module.exports = \"data:image/jpeg;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/so-algo-horse1.c920401e.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-algo-horse2.4dd21003.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-algo-pig1.0abc5b04.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-algo-pig2.ec56f429.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-algo--chicken1.11767f68.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-algo--cow1.52936bd8.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-algo--cow2.8448dc5a.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-algo--dog1.04f08866.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-algo--dog2.3f667bbf.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-algo--dog3.63b34fb0.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-algo--goose1.a318908a.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-algo--goose2.1d99327c.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-algo--sheep1.9588780f.jpg\";","module.exports = __webpack_public_path__ + \"static/media/th-box.4da00125.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-laser.373ca735.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAM0AAADNCAYAAAAbvPRpAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAASVSURBVHgB7da7DR0xDATAV4P7L9YODQn8XXDAgaNMy9lQhH6/3+/Pb3Z4nv/1i394nk+CYs7zm305kMvlybFxeL7vL/j1vyfPv+GvIs/zg4LNwvODQnTneb4B5HL5ZBDMeX6zLwun4/nNvl3gef7Bw7GJeD4LijnPb/blQC6XJ8fG4fm+v+DX/548/4a/ijzPDwo2C88PCtGd5/kGkMvlk0Ew5/nNviycjuc3+3aB5/kHD8cm4vksKOY8v9mXA7lcnhwbh+f7/oJf/3vy/Bv+KvI8PyjYLDw/KER3nucbQC6XTwbBnOc3+7JwOp7f7NsFnucfPBybiOezoJjz/GZfDuRyeXJsHJ7v+wt+/e/J82/4q8jz/KBgs/D8oBDdeZ5vALlcPhkEc57f7MvC6Xh+s28XeJ5/8HBsIp7PgmLO85t9OZDL5cmxcXi+7y/49b8nz7/hryLP84OCzcLzg0J053m+AeRy+WQQzHl+sy8Lp+P5zb5d4Hn+wcOxiXg+C4o5z2/25UAulyfHxuH5vr/g1/+ePP+Gv4o8zw8KNgvPDwrRnef5BpDL5ZNBMOf5zb4snI7nN/t2gef5Bw/HJuL5LCjmPL/ZlwO5XJ4cG4fn+/6CX/978vwb/iryPD8o2Cw8PyhEd57nG0Aul08GwZznN/uycDqe3+zbBZ7nHzwcm4jns6CY8/xmXw7kcnlybBye7/sLfv3vyfNv+KvI8/ygYLPw/KAQ3XmebwC5XD4ZBHOe3+zLwul4frNvF3ief/BwbCKez4JizvObfTmQy+XJsXF4vu8v+PW/J8+/4a8iz/ODgs3C84NCdOd5vgHkcvlkEMx5frMvC6fj+c2+XeB5/sHDsYl4PguKOc9v9uVALpcnx8bh+b6/4Nf/njz/hr+KPM8PCjYLzw8K0Z3n+QaQy+WTQTDn+c2+LJyO5zf7doHn+QcPxybi+Swo5jy/2ZcDuVyeHBuH5/v+gl//e/L8G/4q8jw/KNgsPD8oRHee5xtALpdPBsGc5zf7snA6nt/s2wWe5x88HJuI57OgmPP8Zl8O5HJ5cmwcnu/7C37978nzb/iryPP8oGCz8PygEN15nm8AuVw+GQRznt/sy8LpeH6zbxd4nn/wcGwins+CYs7zm305kMvlybFxeL7vL/j1vyfPv+GvIs/zg4LNwvODQnTneb4B5HL5ZBDMeX6zLwun4/nNvl3gef7Bw7GJeD4LijnPb/blQC7//8gLYOPwfOP42/L84MGcRZ7nBwWbhecHhejO83wDyOXyySCY8/xmXxZOx/ObfbvA8/yDh2MT8XwWFHOe3+zLgVwuT46Nw/N9f8Gv/z15/g1/FXmeHxRsFp4fFKI7z/MNIJfLJ4NgzvObfVk4Hc9v9u0Cz/MPHo5NxPNZUMx5frMvB3K5PDk2Ds/3/QW//vfk+Tf8VeR5flCwWXh+UIjuPM83gFwunwyCOc9v9mXhdDy/2bcLPM8/eDg2Ec9nQTHn+c2+HMjl8uTYODzf9xf8+t+T59/wV5Hn+UHBZuH5QSG68zzfAHK5fDII5jy/2ZeF0/H8Zt8u8Dz/z/8FSUvBkgcp0UwAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/pattern_wave--white.bfa07b93.png\";","module.exports = __webpack_public_path__ + \"static/media/road-stripes.82e5dfbc.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/explosion.8ea2e42d.gif\";","module.exports = __webpack_public_path__ + \"static/media/swirl-green.cd348876.svg\";","module.exports = __webpack_public_path__ + \"static/media/swirl-yellow.ad5a19ba.svg\";","module.exports = __webpack_public_path__ + \"static/media/square-pink.38357b62.svg\";","module.exports = __webpack_public_path__ + \"static/media/triangle-blue.0244a643.svg\";","module.exports = __webpack_public_path__ + \"static/media/ranger-standing.fe711eaa.svg\";","module.exports = __webpack_public_path__ + \"static/media/ranger-searching.746f2699.svg\";","module.exports = __webpack_public_path__ + \"static/media/lion.6b47245b.svg\";","module.exports = __webpack_public_path__ + \"static/media/lion-1.a08b0c1a.jpg\";","module.exports = __webpack_public_path__ + \"static/media/lion-2.5ec4d422.jpg\";","module.exports = __webpack_public_path__ + \"static/media/lion-3.0e80a58d.jpg\";","module.exports = __webpack_public_path__ + \"static/media/lion-4.b52af33e.jpg\";","module.exports = __webpack_public_path__ + \"static/media/elephant.3cb255fe.svg\";","module.exports = __webpack_public_path__ + \"static/media/monkey.e1fd48a7.svg\";","module.exports = __webpack_public_path__ + \"static/media/penguin.de1f8b9a.svg\";","module.exports = __webpack_public_path__ + \"static/media/frog.947bd647.svg\";","module.exports = __webpack_public_path__ + \"static/media/crocodile.fa82ddf9.svg\";","module.exports = __webpack_public_path__ + \"static/media/crocodile-1.608fd507.jpg\";","module.exports = __webpack_public_path__ + \"static/media/crocodile-2.a5ae1eb0.jpg\";","module.exports = __webpack_public_path__ + \"static/media/crocodile-3.2312c9fc.jpg\";","module.exports = __webpack_public_path__ + \"static/media/crocodile-4.33f0470d.jpg\";","module.exports = __webpack_public_path__ + \"static/media/panda.26c3ac6d.svg\";","module.exports = __webpack_public_path__ + \"static/media/panda-1.a9136d85.jpg\";","module.exports = __webpack_public_path__ + \"static/media/panda-2.23db47e6.jpg\";","module.exports = __webpack_public_path__ + \"static/media/panda-3.504ddfc4.jpg\";","module.exports = __webpack_public_path__ + \"static/media/panda-4.6f298a81.jpg\";","module.exports = __webpack_public_path__ + \"static/media/hippo.47a8c685.svg\";","module.exports = __webpack_public_path__ + \"static/media/hippo-1.534ece71.jpg\";","module.exports = __webpack_public_path__ + \"static/media/hippo-2.69f28fd0.jpg\";","module.exports = __webpack_public_path__ + \"static/media/hippo-3.27c486f9.jpg\";","module.exports = __webpack_public_path__ + \"static/media/hippo-4.47a0339c.jpg\";","module.exports = __webpack_public_path__ + \"static/media/snake.e00ae6bd.svg\";","module.exports = __webpack_public_path__ + \"static/media/snake-1.35da7fdf.jpg\";","module.exports = __webpack_public_path__ + \"static/media/snake-2.4e9809d3.jpg\";","module.exports = __webpack_public_path__ + \"static/media/snake-3.6630d05a.jpg\";","module.exports = __webpack_public_path__ + \"static/media/snake-4.96ffd983.jpg\";","module.exports = __webpack_public_path__ + \"static/media/icon_abstraction.85a49e1f.svg\";","module.exports = __webpack_public_path__ + \"static/media/animal-group.58ecaad4.svg\";","module.exports = __webpack_public_path__ + \"static/media/sign-home.bea7b693.svg\";","module.exports = __webpack_public_path__ + \"static/media/sign-home-cy.56d7b207.svg\";","module.exports = __webpack_public_path__ + \"static/media/agent_andrew.86cb14ba.svg\";","module.exports = __webpack_public_path__ + \"static/media/bletchley_lady.be99f253.svg\";","module.exports = __webpack_public_path__ + \"static/media/illustration_enigma.4586d8bb.svg\";","module.exports = __webpack_public_path__ + \"static/media/cc_medal.e84b7f52.svg\";","module.exports = __webpack_public_path__ + \"static/media/cc_star.77d3448b.svg\";","module.exports = __webpack_public_path__ + \"static/media/anita-hayley.7bec55f6.svg\";","module.exports = __webpack_public_path__ + \"static/media/5-blue.42c79458.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo_ideas.aaa5dc99.svg\";","module.exports = __webpack_public_path__ + \"static/media/logo_ideas-welsh.4e04f9b6.svg\";","module.exports = __webpack_public_path__ + \"static/media/patrick.eeb01e38.svg\";","module.exports = __webpack_public_path__ + \"static/media/animals.2dfa5508.svg\";","module.exports = __webpack_public_path__ + \"static/media/circles.e1ff6f48.svg\";","module.exports = __webpack_public_path__ + \"static/media/crosses.f513fd6b.svg\";","module.exports = __webpack_public_path__ + \"static/media/kitty-chan.5b66deaf.svg\";","module.exports = __webpack_public_path__ + \"static/media/spain.f4763654.svg\";","module.exports = __webpack_public_path__ + \"static/media/head_blank.2655ba8a.svg\";","module.exports = __webpack_public_path__ + \"static/media/athlete_girl_2.8b29a6ab.svg\";","module.exports = __webpack_public_path__ + \"static/media/jamaica.9cae1e2c.svg\";","module.exports = __webpack_public_path__ + \"static/media/japan.9767b2bf.svg\";","module.exports = __webpack_public_path__ + \"static/media/diver.628e7060.svg\";","module.exports = __webpack_public_path__ + \"static/media/fish.191af369.svg\";","module.exports = __webpack_public_path__ + \"static/media/jelly-old.62cd71c5.svg\";","module.exports = __webpack_public_path__ + \"static/media/llama.e2dcd986.svg\";","module.exports = __webpack_public_path__ + \"static/media/ray.1144bca3.svg\";","module.exports = __webpack_public_path__ + \"static/media/star.f49e8397.svg\";","module.exports = __webpack_public_path__ + \"static/media/left-bottom.f22ca1ef.svg\";","module.exports = __webpack_public_path__ + \"static/media/right-bottom.7d9a347c.svg\";","module.exports = __webpack_public_path__ + \"static/media/left-top.399b3999.svg\";","module.exports = __webpack_public_path__ + \"static/media/right-top.13b39699.svg\";","module.exports = __webpack_public_path__ + \"static/media/seafloor.3bb6529d.svg\";","module.exports = __webpack_public_path__ + \"static/media/2-turtle-wanted.1d49969b.svg\";","module.exports = __webpack_public_path__ + \"static/media/island.a7c24a34.svg\";","module.exports = __webpack_public_path__ + \"static/media/slide_2.992dd959.svg\";","module.exports = __webpack_public_path__ + \"static/media/slide_3.89720ad0.svg\";","module.exports = __webpack_public_path__ + \"static/media/slide_4.51018587.svg\";","module.exports = __webpack_public_path__ + \"static/media/source-1.03de6950.svg\";","module.exports = __webpack_public_path__ + \"static/media/source-2.12750225.svg\";","module.exports = __webpack_public_path__ + \"static/media/pressure-1.601a01db.svg\";","module.exports = __webpack_public_path__ + \"static/media/grammar-1.fbd99f32.svg\";","module.exports = __webpack_public_path__ + \"static/media/grammar-2.ece22fab.svg\";","module.exports = __webpack_public_path__ + \"static/media/design-1.bd61a264.svg\";","module.exports = __webpack_public_path__ + \"static/media/scam-1.27d4e734.svg\";","module.exports = __webpack_public_path__ + \"static/media/scam-2.7513357f.svg\";","module.exports = __webpack_public_path__ + \"static/media/phone-frame.6ab2d0cb.svg\";","module.exports = __webpack_public_path__ + \"static/media/fish.13c7078f.png\";","module.exports = __webpack_public_path__ + \"static/media/laptop-frame.e2960b97.svg\";","module.exports = __webpack_public_path__ + \"static/media/laptop-bottom.dc6017d4.svg\";","module.exports = __webpack_public_path__ + \"static/media/fish-tiktok-1.d17e7c10.jpg\";","module.exports = __webpack_public_path__ + \"static/media/fish-tiktok-2.488d48c4.jpg\";","module.exports = __webpack_public_path__ + \"static/media/fish-tiktok-3.99168426.jpg\";","module.exports = __webpack_public_path__ + \"static/media/fish-tiktok-4.3c57e47c.jpg\";","module.exports = \"data:image/jpeg;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/reflection.4102edc7.svg\";","module.exports = __webpack_public_path__ + \"static/media/a-icons.268d2e50.svg\";","module.exports = __webpack_public_path__ + \"static/media/a-strokes.37f3ba8a.svg\";","module.exports = __webpack_public_path__ + \"static/media/card_answer.6297f382.jpg\";","module.exports = __webpack_public_path__ + \"static/media/card_phish.d29575e1.svg\";","module.exports = __webpack_public_path__ + \"static/media/slide_2.2d7cbf77.svg\";","module.exports = __webpack_public_path__ + \"static/media/slide_3.c4023265.svg\";","module.exports = __webpack_public_path__ + \"static/media/slide_4.b174830e.svg\";","module.exports = __webpack_public_path__ + \"static/media/end_slide-1.a9a931ad.svg\";","module.exports = __webpack_public_path__ + \"static/media/end_slide-2.29b4c15c.svg\";","module.exports = __webpack_public_path__ + \"static/media/end_slide-3.cd36829f.svg\";","module.exports = __webpack_public_path__ + \"static/media/end_slide-4.6082dc4d.svg\";","module.exports = __webpack_public_path__ + \"static/media/background.69d8916c.jpg\";","module.exports = __webpack_public_path__ + \"static/media/start-right_1.62ae78c6.svg\";","module.exports = __webpack_public_path__ + \"static/media/start-left_2.09441594.svg\";","module.exports = __webpack_public_path__ + \"static/media/bg-ship.c36b77d0.svg\";","module.exports = __webpack_public_path__ + \"static/media/wave-1.8c3ab5bc.svg\";","module.exports = __webpack_public_path__ + \"static/media/wave-2.70575a3d.svg\";","module.exports = __webpack_public_path__ + \"static/media/festive_landscape_2.cf4608c1.svg\";","module.exports = __webpack_public_path__ + \"static/media/bg-image.3c60402c.svg\";","module.exports = __webpack_public_path__ + \"static/media/penguin.3d1e9189.svg\";","module.exports = __webpack_public_path__ + \"static/media/head_shadow.0226443a.svg\";","module.exports = __webpack_public_path__ + \"static/media/torso_shadow.ed6d466a.svg\";","module.exports = __webpack_public_path__ + \"static/media/legs_shadow.6c430334.svg\";","module.exports = __webpack_public_path__ + \"static/media/soldier.c4820da9.svg\";","module.exports = __webpack_public_path__ + \"static/media/middle.55e9a10c.svg\";","module.exports = __webpack_public_path__ + \"static/media/top-shadow.a63cfb1f.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/middle-shadow.0eb8e155.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/legs-shadow.21419192.svg\";","module.exports = __webpack_public_path__ + \"static/media/bear.b1e89b12.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/robot-top-shadow.434f7b4f.svg\";","module.exports = __webpack_public_path__ + \"static/media/robot-middle-shadow.7b8c00e0.svg\";","module.exports = __webpack_public_path__ + \"static/media/robot-legs-shadow.f067bfeb.svg\";","module.exports = __webpack_public_path__ + \"static/media/robot.9aef347c.svg\";","module.exports = __webpack_public_path__ + \"static/media/workshop2.3522ec5e.svg\";","module.exports = __webpack_public_path__ + \"static/media/pattern-tree.5359fce6.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAALoAAAC6CAYAAAAZDlfxAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAz7SURBVHgB7d1LbFTnGQbgz9hgG+MrUeQADiaozQW3wRKkMW2CnYVzWQSIkijtBkPbRbvh1lUrxWTTVfBl06oKxWbTAKkEbIqhlWxvQppSYUsmSZtQ3NoQQsA3wBewmZ73wCBzmTMX/2fmP+d7H2kweGaYg3nPP99/O5MlsOdYgxCF1S3pz3F/E8lqE6LQinTPEyIFGHRSgUEnFRh0UoFBJxUYdFKBQScVGHRSgUEnFRh0UoFBJxUYdFKBQScVcoTSoubsBam6cEWKJqbcPw+UFcrHK5fIYGmhkP8YdJ8h4LtOnJJ1zteHObj2SdlTv4aB91mW++v7HREh43Y6Af+Vc4tnND9X3t2wTj5a86SQDyJcj+6bREMOxU4503qg0239yR8Mug8qhq8mHPLZWg523q3hySwG3Qe7Ugg5VAxdlbdP/VvIPAbdB3MpQV7pOydkHoNuGFpl3FJ+/nDqz6XYGHTDiibnVmPP5SSh2Bh0w8bycmUuMNRI5jHohmHGc2wOYf1syWIh8xh0Hxxc811J1UFOGvmCQffBobVPSSoGSgud5zLofmDQfXDGKT/efX2dJAvLAMgfDLpP9r74fXexVqK2v1Mnx6tWCPmDqxd9hKCjHMFMaazx8ZMrlzit/w/lzFJ2Qv3E1Ytpsuv4Kdn113uXBmxteFk62Ir7j6sX02ew7MH15n1LHxFKDwadVGDQSQUGnVRg0EkFBp1UYNBJBQadVGDQSQUGnVRg0EkFBp1UYNBJBQadVOB69CSVj1x1bmOSrBWXLstE9r2roVd+8608Mpr833UtL1e+KufKx2RwPXqCtnR/Km990iuFk3ZcG/HrkiJpW/+cHFud2v5UVSKRbrboCdj3hwPynYuXxSaPOe8qvz76Nyl33hEQePLGGj2OV3s+ty7ks23t+lSq+88LeWPQ43jr771iux/96z9C3hj0OGxuzaOCcIyZxqCTCgw6qcCgkwoMOqnAcfRZam7ckubR6Xu+V/7jd8R2Fc7tuW9v3PO9N8vmy2B2ltBtDPp9lk3fN0lcGIwPun3guOkeLF1IBQadVGDQSQUGnVRg0EkFBp1UYNBJhVCOoy8bnpJV569J8cS0FE3OSNHEdELPq5hxfhmfkTD42aJsGUtivmgsP0cGSnPdr2eWFshYXriiEYp/TdHktLz9j0tSc3ZM1p0dTTjYYfZzmZu+JQXymRP4jlVlcrwq+J+vFOg9ozVOqHeeGHDDTf5BK99RVSZ76h+XwdIAfoR7JNIdyKAz4JlzaO2jwQt80IJeMTwpTQe+YsAtgLA31VdIIATpU+lePnNFTjT1MuSW2HXif/LJb//pdvyDIBBBR5myr+0LdjItUzE0KX/+fZ+sunBdbGd90BFytB5kJ4T9RFOPvHXqktjM6qAz5MHRcuBLebnvitjK2qAz5MHTcvAra8sYK4OO4UOGPHjQh/pju519KeuCjiHEloNfCgUTavZmp2W3jXVBR8mybCgYQ1b0cK84tXqNZcPAVgUdrTnWrFDw2daqWxV0tOYUDihhbBpytCbobM3DZ5dFDZc1QWdrHj5o1W2p1a0JOtewhJMt5YsVQcdZz5GWcHq1b0hsYEXQX7F46pjmBpNHNpQvVgT9mQvjQuFlw7IAK4JeFYBlnpS6Zxj0229tXGceblXnGXRn/Jyd0LDDVRoyzYoWncKteCLz18rhlbrIdzY0Zgw6qcCPdnFkleRJ3sanZf7qcpn/bLlkV5a63781MiEz/SNyo7tfprrOyXTPRbHJgtpK97izl5c4x/6Y+z0cc2RkUm72XpTJI5/Lja5+IeVBR8ALtj0vi7avk3nO7x9UIuIEKN8JE9zo+Vqut56UifYeyaRFjbXex+zIrV0hi7bVyHT/sFx9rzPjx5xpaoNesP15KWx8KUZYHm6BE/oFbW9I7voVbnjQ2qcT3nFKD/9EcipLEn5OjvPuVOocc2FjnQxt+tC6d6V0UVmjo0Usbn4tqZDPtrChWhZ3bnFKnMQDN1f5m1c7r7k1qZDPhsA/evqXstA5wTVSF3SEvGj3SzJXCE66wo6Ql7a/kfKJOVuJc4JrDLuqoKNcMRHyqGjYswwEMBacSMUtr4lJCDs6spqoCbobmGazgQGEvdB5l/ALypV5PpxIJW2bfD1BbaOmM1q4uy7uY0ZGRuTo0aPS09Pj/r6yslI2b97sfvWCEZDrrZ8Y75zmO32BRGry7u5uOXLkyN1jrq2tlfXr13s+Byfoou01cnV3p2igIuhozRdurvZ8DIKyZcsWNyyz7d69WxoaGqS5uVlKSmKHrsAJzdj2Y2LSom3etXR/f797zF1dXQ/ch8B3dnZ6nqQF2/QEXUXpssAZU/aCkG/atOmBkEe1t7dLXV1dzPsh3omULEwARSeBHgYhxzE9LOTR+6urq92vsaAk0lKrqwj6QmfUIhYEYceOHRIPypnW1taY9yM0Oc44tym5cQKIY/YKMeDERIvv/TrejUBY6GjRPVpGtIjxAhPV0tIiqb5OsrxOGpx0eBdKBP59sVr9eK8TJiqC7jW6sH//fkkUWkiELBaTY+pYvxILOp/J6O3tjXlfdkm+aMDVi0nyqtNtPQavx2cVB/BT5lKgPujxhg7v5zXyYlJkNPbOq+XLl0syvI7Z63XCREXQZ/4bu0VbvXq1JAonhdfjb/Z8LabM9A/HvG/jxo2SjA0bNsS8b2ZkQjRQEfSbHiv2EpkQisKYupdpgxNGXseMFhpj+4nA47z+fVrWq6sI+o2uczHvQ2gOHz4ctyTBCYFbLGiBTS6BxaYJL5jAineC4v7GxkbPx0x5/GzCREXQx9tPu7tuYkE5cvr0aXfq/H44ARAqTBp5mTLcMt5yjncqzgmKY47VsuP7uN/rZECppWV9uoolAAjNtdaT7uaDWKJT5hg+jA4hIkwIfyIdUGzEMA1/p9eEDo6rra3NbbWj63MANXwix4zdUlqoWdR1veWku7Us3oo9tO7JdFDBr91GqJ/RqsebvcRJmuzoEfoA44q216kZXkSrfmXTn8Q0vP37uTBqZMth4ycR+hNDPvwsbKZqHB0tpMkS43ZgPhQ/IeQIpVcfIxn4e3DM6d7vmmnqJozQ+poIO1ryy3VtaQkMyoxL1b+b82sh5Jfr9nkOXYaVyplRhP2bFU0pBwcd23SFPAqvhZCO7z8tqcC1aXCyaAw5qF0CgOAg7KiBp3vj/+dH7ozc4DnYYGGqlEgGjnmk4bBccU6yyaNfJPQcBByPv1y7T125Mpv6K3VhjB232xsdyt1lqzl3rtQVcabHMduJ2h4XL8pEuB8GIzG4YbUklgbPr62UbGc0CVcYQ79hxjlOjI9POJNOthxzpvGSdHeg5ja5ViUd0EJP4BZnFpW4epGUYNBJBQadVGCN7gMsM8D1GXEJ6mRMdZ9zO76aR0f8wqAblspVeqNwcuAyz6M7jsnUkcSGDykxLF0MwpW15nKVXohe5lnL7vx0YdAN8loGnAycKMXNrwqZw6Abgite5Ri83AWW5mq6CKjfGHRDorOpJs1j0I1h0A255cNu+lucvjeGQTfE9G56rFnhOhVzGHRD4m1mTtb4fj3b3NKBQTcIS35NtMJoza+16Nm4nA4MukHuevEdf5G5QMixqYNli1kMumH44FpszsCGh2RhXXy6dy6lw1h+5ifgM34Eg6Xhu5qru+2tdt/djRHxZjln7qwpD2srPpqfLZmW8aCPWnC2+yW6MUKUb4ywoTHLeOmCtzUb3trIP31LCiTTrKjRP15ZJBReg2WZn+G1IuhnLDjjyT8nVxZLplkRdBt+EOSPgdI8Kxoya4LOOj2cTlpSllozjv7BC+Y+upDssffFJWIDa4K+9wU7fiBkDkoWW/pf1gQdpcuhNY8KhccHFjVeVi0BaKqvYK0eEuiEfrTWnobLqqAPOOOtrNXD4c1fVIlNrFvU1VT/OMfVAw7vzINldq1hsnL14k8bnmIJE1BopPY4jZVtrAw6SpjG11cIBQvq8q0NT4uNrF2PfsjpyDDswYGQoy63rWSJsnrjBSYbUO+R3WwPOVi/wwj13lbW7NYKQsghEFvpjlctlvodz4ZyN1KQ7XWGgut3Pmt9yCEwe0bRQf3Bb9awlLFAtBVv3PBEYN5ps9xf3++ISIBUDE3KzhMD8vapS0LpM5aX4/SbHnOn9gNVSkYi3YEMelQ08OvOjsqy4Skhf2Cpbceqxe5IWCD7SkEP+mw1TthxQ+hXnR+XoslpodSgL3RmaYF8/ESxdHxvcfD7RmEK+v2KJqZl1YXrQolDP2gsLzt8I1xO0EM7Zof/LG7RoyheqYtUYNBJBQadVGDQSQUGnVRg0EkFBp1UYNBJBQadVGDQSQUGnVRg0EkFBp1UYNBJBQadVGDQSQUGnVRg0EkFBp1UYNBJBQadVGDQSQUGnVRg0EkFBp1UuH2lrkjkPSEKq3nS/38Wx7vi3iKnBAAAAABJRU5ErkJggg==\"","module.exports = __webpack_public_path__ + \"static/media/balloon_penguin.1262cd3f.svg\";","module.exports = __webpack_public_path__ + \"static/media/home.b8fd5f0d.svg\";","module.exports = __webpack_public_path__ + \"static/media/home-2.65f567f6.svg\";","module.exports = __webpack_public_path__ + \"static/media/home-3.1e0e4646.svg\";","module.exports = __webpack_public_path__ + \"static/media/Trophy.eb9f66d2.png\";","module.exports = __webpack_public_path__ + \"static/media/farmer-leanne.6dab5f3a.svg\";","module.exports = __webpack_public_path__ + \"static/media/farmer-fiona.c229fc59.svg\";","module.exports = __webpack_public_path__ + \"static/media/farmer-jacob.34e8fa59.svg\";","module.exports = __webpack_public_path__ + \"static/media/farmers-trio.70a72ccd.svg\";","module.exports = __webpack_public_path__ + \"static/media/pattern--chicken.6283ff51.svg\";","module.exports = __webpack_public_path__ + \"static/media/pattern--cow.600ee4ea.svg\";","module.exports = __webpack_public_path__ + \"static/media/pattern--sheep.87c7df27.svg\";","module.exports = __webpack_public_path__ + \"static/media/so-stock--chicken1.869dccec.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-stock--chicken2.04edfaee.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-stock--chicken3.df1caf86.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-stock--chicken4.bfeeb073.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-stock--cow1.a48ad0af.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-stock--cow2.edfefb0f.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-stock--cow3.2156fb91.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-stock--cow4.3e253848.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-stock--sheep1.9b502be1.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-stock--sheep2.52aefd30.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-stock--sheep3.6095275d.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-stock--sheep4.2d7c60bb.jpg\";","module.exports = __webpack_public_path__ + \"static/media/so-end-slide.ec8c6690.svg\";","module.exports = __webpack_public_path__ + \"static/media/so-end-slide-cy.284508df.svg\";","module.exports = __webpack_public_path__ + \"static/media/so-end-duck.646d9596.svg\";","module.exports = __webpack_public_path__ + \"static/media/so-home-poster.8f8e4090.svg\";","module.exports = __webpack_public_path__ + \"static/media/so-home-poster-cy.13e0c1b0.svg\";","module.exports = __webpack_public_path__ + \"static/media/so-home__windmill.e2dae157.svg\";","module.exports = __webpack_public_path__ + \"static/media/thief_girl.04ab1732.svg\";","module.exports = __webpack_public_path__ + \"static/media/thief_boy.d84e92e9.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-blueprint.7dd2c985.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-blueprint-cy.5fe7ccd4.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-keypad.ad654de4.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-parachute-1.99c7c414.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-parachute-2.4772aaf0.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-parachute-3.5766fb74.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-plane.b89577a9.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-keypad-fake.dfcccee4.svg\";","module.exports = __webpack_public_path__ + \"static/media/thief_girl-hiding.fbb3c155.svg\";","module.exports = __webpack_public_path__ + \"static/media/thief_boy-hiding.23b0f551.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-room--keypad.4b491545.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-vault.1fa1e3cb.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-room--vault2.c0ab5844.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-room--vault.e2eae8f2.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-diamond__arm.b14db975.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-start__diamond.cab2cc7f.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-start__diamond-cy.4f22d471.svg\";","module.exports = __webpack_public_path__ + \"static/media/th-start__thief.e849e0c1.svg\";","module.exports = __webpack_public_path__ + \"static/media/engineer.84e33fef.png\";","module.exports = __webpack_public_path__ + \"static/media/left.db8aefd8.svg\";","module.exports = __webpack_public_path__ + \"static/media/bridge_2-new.f493a2e3.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAMgAAADICAYAAACtWK6eAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAAAHpSURBVHgB7dehkQNADATBqw/B+Qf7VGSZB7mbTgBavffe520fXf/xDgBf4KTq+vH3AAAI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6ProfBAAgZ5Pq+uEHAQBI2Jy6Pvo/6umzr4Oy3AUAAAAASUVORK5CYII=\"","module.exports = __webpack_public_path__ + \"static/media/alert-programming.970dff71.svg\";","module.exports = __webpack_public_path__ + \"static/media/alert-timing.e452799e.svg\";","module.exports = __webpack_public_path__ + \"static/media/traffic-highlight.00c190c4.png\";","module.exports = __webpack_public_path__ + \"static/media/bridge_3-new.6cf97537.svg\";","module.exports = __webpack_public_path__ + \"static/media/left-blue-crashed.7edbfa55.svg\";","module.exports = __webpack_public_path__ + \"static/media/left-blue.4c88a641.svg\";","module.exports = __webpack_public_path__ + \"static/media/right-crashed.71187863.svg\";","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAgcAAAD6CAYAAAA1MuTVAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABrmSURBVHgB7d1bjFXXfcfxde6cuZsBDxjGg5GVVFhl3AK1B8uAXdeJowo/tJM3I1Vx+lSsSs5jnFrKq/tivzqSi9+MXyBSKsWtAig2VgIqQ2MkbAsPBperYa4czm1O9/+MjzNrfC57r30/8/0oiICZ2zl77/Vb/3VL/PCT29MqkRhTAAAACfVOUgEAAKxAOAAAABrCAQAA0BAOAACAhnAAAAA0hAMAAKAhHAAAAA3hAAAAaAgHAABAQzgAAAAawgEAANAQDgAAgIZwAAAANIQDAACgIRwAAAAN4QAAAGgIBwAAQEM4AAAAGsIBAADQEA4AAICGcAAAADTpQrmmEsmaAgAASFqZIP3RlTuKAgIAAKirJUgFAABARzgAAAAawgEAANAQDgAAgIZwAAAANIQDAACgIRwAAAAN4QAAAGgIBwAAQEM4AAAAGsIBAADQEA4AAICGcAAAADSEAwAAoCEcAAAADeEAAABoCAcAAEBDOAAAABrCAQAA0BAOAACAhnAAAAA0hAMAAKAhHAAAAA3hAAAAaAgHAABAQzgAAAAawgEAANAQDgAAgIZwAAAANIQDAACgIRwAAAAN4QAAAGgIBwAAQEM4AAAAGsIBAADQEA4AAICGcAAAADRpBQBrxFA6qQazSTWWz3z7dzPlJTVbqarL9yoKwDLCgYGhTFK98dgG5aXZ0pKaqSypqdmimi5U1Pm5ovLaoa0Dat+Gdcqpl8/dVH577Xvr1ViP88vR5Ht7+/EHlVNTsyX11hczHf/dzsGceuWRQRWmX356x3FDt284rw6N9qsoOn5tUR2/sahMyM8lv/Zbv8YHcvV7tx25/6ase+/49UV16utC/Z405eY1ffPSrC/PACdMr2UJWz/75PZ3/t7k9ZDrWK5nEwdHetXBzb2OPqbV974WEQ4MDGZS9YbWT9P3yvWHkzykTB+Mq+3bYN2cW50/rIIIB40HuFMm35vJe3cqX7AVDqRn6ve10cm7V+Ydh4NtVk867O+7FflZnN4D8rO8ZDVETq+pcatBlF+HRgfqDcXx6wvLYavgvKogQcT0NZUwGnY42JZPm90r1nOr+eczu8ZOWp+v1edsp/4+Ovx6l63nLuFgGXMOImpbT6b+gHp/z2b16bNj6qWt0ezVAVEiIfOzZ7fVq0MmYXOleuNu3YOf/e029XOrsiXBzwmTBq1BGuawSaXFhFRfvCRVRQSPcBADEhR+9fhIPSSMReChAUSNNNwy1PdfE1uMhqc6+YXVQP1h36ij+08qD6bDElLSD5tpODh5xzwUNbP/m6EhBItwECMSEv647+F6uRTAMgkGH1ih4JVHhpSf5P6TKoKT++/UbbOGMgqVA9OQNe3DxM5DVE4DRziIGSl1/mp8hIAAWGTVgQTm8QB72k7uv8uFsjIxZgURp8MYXpPvwYQvk6mt4R2qpsEiHMSUPKB2DoRfegTC9P7uTb4MI3Qi95+dUrdMLDT1sGHj7AXTcDLl4yRK5h4Ei3AQY/JgDLt3AYRF5hiMhzg2//7uzR17s27G3x8fyKqwmPbS/QwHBzf18bwLEK90jMkY6OHt/o6zAlEkS9T8nmPQiQzxvf34SNt/I0vjTCcljodYGTQNXW4qJZ3I683zLjgM4sTcYesBabpJCBBXUSkxN2bSt1u2KAFhyKChtzusIM8AO0FpulBWf3f6K2WH6YRIv/dmkJ/1rUszrjangj1UDmJO0jTLfLCWSNUgjHkGrXQKKqb7HdgdVji4qbf+enT6JUHG7uu2MyJ7HKxG9SA4VA4CdOzGovr1NX2nN7lZpYQnW32aetH6WDcbriB8R67Oq3evzCkvmIz7yti43V5lw9vjI44baVn7P3nmmqOPmV61O6HbqoHcK/Iayfci3N5/naoHpqX2xqTAdr1kaSydbPZ0cKTP1k6f2/LOJ0PWX9MAevRUD4JBOAjQeStVH7navAGQB0F9AxeDcp5si4x4k9LzyRADnnx9+eW32XLV1c/ppmogZfWfnrvZ9OvL/ff2uPmuihJYWoUrN5P0ZGhhps3HO+3hS5XBTjgweY2nAzq4qlE9YDjVXwwrRIQ8mJ+zHi4maZgZvFgrDm83O9SqMd7eKpjI/dfuv3cioaLVfWi614HoNLTw4iZnFY/64VMdnhemEyGDPAtCqgc89/zFqxsh8oCSg5acGgtxPTQQFNnwyLThkoqBncOoZMjDtFz90mjzQ35k+ML0OOhOP6/TyoH0ujttzWxamZkKMBww98B/hIOIMd1uFeh2To/fbZChPLsVAWnIZTzbRLuJwab7HbRbseB0vkHDix3mV5gGsKCGFRqoHviLV7YLTIV8tCsQBNNJg29emnX07+2MyTfTrqE2vUfbDSuYrlI6uMn7cCChKugjpiUctarWwD3CQReYLTNrF93NtJcscw2cNlrS0JnMPZDvsVVJ3nSJX7ttjE0nT8rnbDd0MJhx3iycD6mDcvgRszko6IxwEDEmvYFjBvMUgDgxXXdvusT3+A2ze2r/+ub373mXKxaacbO/iSxpbMVkd0S/9zdoRXaJfYkTG31BOIgQ6SGY9AaO31hQQDcz7SUfNwzOpo1dq5K8m0mJzYYWpErhZnvlVkML8nlNxvHPzYc3tBn2NtrdinAQIW88ttHxTGGZbHU54IlAQNCCniR3uWD2ce0mEJrOO2i2GsntrqitXk/TCs2XIT6DpNLBLrHeYxOkAEkiX934D6ZT9V7RIas0ZlLOYyMQrAWmy+tMy/mmG0K1m0Bout9Bs5+93bCAHY1t11cPu5geuHQy5B1a221CBTOEgwDJulwv1+bKkiuqBt1BHm5eHCYkYbEbA6PJXh4zLifqyr3lNJQMZlIt/5s0oIcNSuDN5jGMD7o/zrnZtusmBy5FYbWUnQOw4AzDCjEls7B/+RlVA6wNJuPgbnYmNDXUZqb/1Jz5GQvan11sBrVSs23XTYYVpiPSQYnKSZ3dgnAQQ42tYGdYwog1wHQHULdLfKc9HAYQMlRhuvviys+536Px9WZbKQ8ZLGOMSm+9UT2ANwgHMSMlPAkGDCcA8ePFKggvG8DVqxZMKhLnI7QJG9UD7xAOYkTGkvecukIwwJpiclKpF0wrDzLJuBXThnRsxRHK+z0MByuHFkyHKvze48DJZEeqB94hHMSIbPbxc5IxYMu0yzkHpkMAD7SbdzBrNu+gMQFRQoLpyo1mVq56MPm8MrRp+jrZ5XSCLdUDbxAOYkR2A/uFdeF/+uyY8XpkAOExndnf6NXbrRrYbbAbSxpXfg0nghhSkDkNVA+CRziIIQkJZ/aNUkUA2mhX3rfDdDjjbpvhCOO9Dr4ZVuh0aFLDy/9zQ9m130U4CGrbZKfVg0Nsqewa4SDGpIrwL2wdii5nulvhA5lwHm+zlWrL/yZleJPqQeNQJzsNuHwNORvCbm+70cs2OXDJ9Chqp5xWDw6NDoQ2V6VbEA5iTgICQwxAdMyW2pf0Tfc7OLR1wNa8gEYjaneJoVQOZEmjye6IQe5x4Lh6wHHOrhCtAiQ9hma9hqFMqp7eTTZ6kR7Fvz+2ga1DY056x6Zb9q7+PN1mtlxVJtz2HLflzXZl7DTev/wMcF72Pjhib0ihcRCbhITXlD0vWQ2p0+eP/KxBLmNsVA/2M58gEISDAMkJca3Sr2z0IuNkJjNt2To0/o5cmeOcjBbC2uxrMOvProzGex3Y7NmfWlE5kKBip9E3OdkwjP0N5B7ZP7FFwX8MK0SE9Brd7It/aJQJOOheJnt7mO6s2GBSybOzN4KfjapUJVa+VnaPrDZZxhjUZMSVnM49gDnCQcRIODC5+N2e0gZEmddbGXfi54ZAUgnxayOzU7cLbf/spemQhrCosAWDcBBBJhe/zD1YixMTvdwQBtFlOpfCtJE3va7szt736yRDWaWg/3lB+SWsbZOpHgSDcBBBpjddu7PksWwowyUfR243Dwrq4+zO3vdrCeDqRlOqFH41pGEMKzRQPfAfT8oIWounLfqxj30zY3l349AIh+lKDtOd8kw+zsnsfS9WpqzWakKyHxOVJaz5vW1yO1QP/Ec4QCSYPmicVktMe4R3OR47VKYN3H6DJcISIE2WyzlprEz3OmjnWIvJh340otMROPyN6oG/CAcRZNqAhZnk3TJdy77yVDk77G4/u9qXPvT0YJ+bSXyHtztbpvfK9kFlwsn4vlQOvL5fT7apHHj9taJwTDPVA38RDiLosOGWyLMx7t2aznyWVRp2e4bSIzQNB9NduLlQ3JhOrpP7ye6GSPVrxHDlj9Pqhpdj9rKao12DbXdJo11R2VOF6oF/CAcRIysOTPcsCHOCkFumY7AywfCNxzZ0/ndWgHh/9yZlKgo9pbXumGEDJ9fI+7s32/q3ci2ZrFSQxtJpZcPLa6pTY+31kka3x2F7heqBfwgHESGNl5yyKKctmgh7gpBbbnoisof6Uevh36p3KL3BDya2GO0d3xDn4NUt5BoxbVDlvW93jcj99/b4iHrRsLL0H1fnlFNTs97NO+hUGfBySaOf+zSYoHrgDxaJB0j2Rl/dK5HZ9tusB5abhkv4udnJax4fDf3WpZnvBJnGkivTfdPloS6/pBGXIYDGyXjj/Tn3r60PY7aryex4L1/nZq9xN5Dqgel+HnJ9jA9k6++nNKby+sj5CfJ39bMFDJe5Si/63SvzyikvlzN2uv/d3l8rRa2KxpkL/iAcBEgaKbcNVStvTs8ov3gdDo5YvaxmDdcpD25wP15jk16hU/Jze/lwa/Uax91bX8zUJxiabG0stvVk6r+8PLHPtOfamJRo+rM02A2vpzxqQKNYRePMBe8xrNAFpCGIUpnPlDz4o0Z6hRxoFR3SA45SGdm0atDgxX4HdsfcvRqb92sDJzeYe+A9wkEX6JYxN3nwRy0gyIO/G4JXN5Ehk6mIlLbdHpXuxX4HdsOrV8NjUdjjoJlXL9xW8A7hIOYkGHRT4yU/T1TK4dIrPBLAkAKc+8nUTRU2L+49tyHH6fbIXixpjOrKnfPWcMeRq+ZVHOgIBzEmD5Zum6krD7uXz91QUfCzT25TNYgoaQjC7Ckeu7Hoyb3ndvzeaSnd7cTlqFRsWmHlgncIBzElN6nbkmZUSe8m7Jtcvr7XG8fAWzK8EMZ1IvfeTz0KsG574U6XKLpd0hjVIYUGmcNB9cAbhIMYkl6LBINuPqBJHvphBYQwvzacCfq98vrec7tngNPJsm5PaYzD5FzuXW8QDmJExuJftUrdk3+8tiZObpSb/B/PXFOXA9q6WF7fn0zd4OESM/J+vTx10/e5KvJ1/Lj3TGf/SwXDJFi4aeDjsFMo1QNvEA5iQB568mD63n9PR3K5n5+ktP+c1VPz+2aXB+aeU1+6WpaG8By5Mme9f1d8uU5kYqpUC/wKjabj+KbzB9xUDuKyUygB3z02QYooCQTHry9YD4D79XHCtVApaEV6AjJJUW542ZBJNnKxe5BOO/Iav2s1KhJAWCMdf43rRN5TuU72udzwRxrCI1/N1+c2+Ml0r4PjN8zmxDSWNDrdfElCUlw21mpUDw5tNTunBkolMr++OG0VEMYUbJNtVk1Pbutkar64vHOaD2FAHpayXWzYJPS4fchIQNg5mKv/LttP29lSV0qwjddXAkH9PAqPX2c/rw0nvHiNO5HtiGX7bydmylXjRs2psZ5M/fqQkzjtXCPyeskqCAmKQW6qY3rNuFlma/IscPve1d+P9c4Dm+nPafL1grw+I62WeIdwgK4h51YMZVJaj0ge+HLDy3HWa7n6gmXNrpHGCYMsWwW+YYUDhhXQNeThflnxgEdrXCOAPUxIBAAAGsIBAADQEA4AAICGcAAAADSEAwAAoCEcAAAADeEAAABoCAcAAEBDOAAAABrCAQAA0BAOAACAhnAAAAA0hAMAAKAhHAAAAA3hAAAAaAgHAABAQzgAAAAawgEAANAQDgAAgIZwAAAANIQDAACgIRwAAAAN4QAAAGgIBwAAQEM4AAAAGsIBAADQEA4AAICGcAAAADSEAwAAoCEcAAAADeEAAABoCAcAAEBDOAAAABrCAQAA0BAOAACAhnAAAAA0hAMAAKAhHAAAAA3hAAAAaBIqJsaf/MG09duYCtCSWvqn//34g3cUACDydj75/OsJlfg3FaCaqp08//FvD6guQ+UAAABoCAcAAEBDOAAAABrCAQAA0BAOAACAhnAAAAA0hAMAAKAhHAAAAA3hAAAAaAgHAABAQzgAAAAawgEAANAQDgAAgIZwAAAANIQDAACgIRwAAAAN4QAAAGgIBwAAQEM4AAAAGsIBAADQEA4AAICGcAAAADSEAwAAoCEcAAAADeEAAABoCAcAAEBDOAAAABrCAQAA0BAOAACAhnAAAAA0hAMAAKAhHAAAAA3hAAAAaAgHAABAQzgAAAAawgEAANAQDgAAgIZwAAAANIQDAACgIRwAAAAN4QAAAGgIBwAAQEM4AAAAGsIBAADQEA4AAICGcAAAADSEAwAAoCEcAAAADeEAAABoCAcAAEBDOAAAAJq0irRa4sCBZ1KfF4uZRE1Z/wv8y2cffeGF3NZCoXrixImKAgBEyJ/biIFcLpUoJnOqFmxLkawlrO/hQLrb2oiEioxa4tEXfpQdmctkFzNzqUQ1n0mqpW/DS6Ws/mD9tlUFKJFQ/5pKq/e+/YtUpqzm75evlm9WhiuV8oULF0oKABCA9m2EsNqJV63fXlUBqiXU6Uxa/UP9D1YbUVULlWt37pTj3kaEGA5qia0Te9eN9PZml4qZ7Oo3ebVIhIMmChVVVLliSd28WSIsAIBXltuIseTG9L1keV2nNkKEHg6akDbigWSufPfu58U4tRGBDivs2LEjq9SDWTWYy+bTP8wpNaCsplVZb7qKq3xa5VQ1l1PDo2rHngdr+aV0YfbBzP3P//M31kUQ/EgIAMTV5ORk6tTFi+uGezfnGm3EfauRiPPkOGkjrJ8hlx8e7ZM2Itur7t8uFotXT2+12oijVRVRAYSDWmLHjmd6lwOB1ZB2sfy6nFRiegYXlnp27HnGCgrPFQqF/ytQUQCAVmqJkZ3jPRIILl2fy20d3Ky6Vb2NqKr8SDqXH3l6TlVTBwrLQeF0QUWMb+GgXiUYHO1bTn9dnQmaagSFfM9oz869W6t3avPzUU+KABAUaSMeeODR3N3SM735dZsjNP8tOKlqrh4U1u99vj9TXCqePfvAQlTaCM/DwZ9DwRpMBC1kUonUiBoYGthzq15NiNIFAABBWtlGyJCB1ZFSa520Eaon1bPr6bkede+5e1FoIzwLB4SCzhrVhCeeuLNufv7A4oULJxYUAKwJk6kdE3ODtBEdRCQkeBAOaoknnvhRfyW71KtgSyWbTuaH0/079z7fszzcEL3xJgDwxvK8s/zwXL+CfVZI2Ll3NnenNhFKG+FqEqhUC3bu/cFGgoGZ+nBDemDo+99/ipsGQBeaTEkbkR/O8Ywz0Ggjdu16blBeSxUg43Cwc+fzVhIcHa6PlcCVvgf7+qwqwoNBv/kA4JeJicn8jj23NtJGeGC5ijAcZBthFA4OHJjsywwmBhQ8IzdQ0G8+APhB2ohSem7om3lW8ECjjZCtmlUAHIcDedPnq4wd+YGAACDupKpMG+EPaSMKhVQgbYSjcCCHEPGm+0ve/L/4mztDCgBiZzJFVdlfMqF9uRNZ87Uq4yAc1BI9s9VBBd/15tLZXbv+vkcBQIwsN1rwm3Qi6zsP+8h2OJADMJhYEpx0utDvdzIEAK9snZjI00YEp78/1etnG2E7HKxP9DOcECApHUkgUwAQA6MDA3mFwEgb4Wf1wFY42LXrnzMkwuDJcdYKAGKgdI+dD4O21Jfy7TW3FQ4K2+9S3g7B4lwt0CO1AcCEdCAVApdNp3zrtNsKB3NXr1I1CEFvtUooAwA0lfexjbAVDkZKf1lRCNxiKlVTABBx27ffXVIIXKVS9e1QJlvh4OzZhzheOATDmd6SAoCIO3r0aDV5v0hnJmDVfuVbx93maoXXl1LZCg1VwB56KHdPAUAMJJN5nlcByxc3FpVPbE94W1i/fj5/fS7MDS7+lEioKypAtWTC+nrhhOHFYqUkaVwBQAw8/HDf4qXrc6Ge0PtNG3FaBahWU39SIchVa9WPTh/17ShnR5MZdkxMrM+nB1iuEoDtmwZuEg4AxAln7wQnWxmYOR2VcGANLyT37v1oQ5E9D3y1cHNh4eLFD+cVAMTMXz39wsakWmIZto+CaCMcnsr4+tKWLYNfSzlDwRcEAwBx9uimvju0Ef6pzhcLQbQRjisAFy5cqD355F/fvzd7f101mXB85DNaIxgAiDvaCP9IMDh37sSMCoDxBgqTk5Opz68vrKd85J4sASoWs/Pnz/92UQFAV3g9+fiBEwOpao4zFzwQdOfR9e5KTz11sP9+stinYKQ/lSnPz1+bPXv2bFkBQJd5/vmXeu/evdK/tC7Hjq8GZIhmZsvgzIWjRwPdTsCTN0uqCF99NTvMREX7pFqQzQ4sfvjhcYYRAHQ1aSM+u3WrnyqCM+uWcgu///2xhUQiEfiaek+T3MTEZD6RmO0nJLSXLiUXP/74N/NhvOEAEJZtBw6se6iUHaCNaE82HRxbv34mzOXsvpR5CAnf1agUyK6H7F8AYC2TNqLac6enWkpzLP0K1VSxUNq48V7QQwjN+DoGtGNyMpu9datnLZeSJAFm7veWwioNAUBUNYYbMotWBX2NzklodByj1kYE8mbIBXD1qsqulaQob3ZyQ/7efF/f/SgkQACIOqkmzKqr+bWwC28c2ojAk1ojKMhFMJToT3fL0EOjQnD3oVyRQAAAZmq1WuKRZ57JDSm1rqeUzXZLG7GkkpVsnyrGpdMYehln165dmXJ5OFvpnc/FJSxI6ksMpMqJbLZ8o1AoffG73xUZMgAA70kbkc1uT0uHMpceSsVlb51GGPhqZqZ85aOP7setjYjcGI+kxsd+/ONM+uJsRgJDX09PojZXzYQ1HlWu1qqV2nylf2ioIm/ySKlUYU8CAAjHyjYivyWVqpVKmai1EWfOnKnEvcMYmwkgjQvi3q1byYE72VRlfSmRVSqdTaXqlYZyKZusVqv1nyfTpvpQ340wk12S/299aC2TLS2VrA/M5fNL84XC0lyxWE3ncrU9GzeWWVUAAPEgbcTu3bvTX/f3p1a2EaViMSmdTLdthPzZGguorGwj3nvvvaVurRr/P9lRzXgWjNYlAAAAAElFTkSuQmCC\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/level_1.0f12e07f.png\";","module.exports = __webpack_public_path__ + \"static/media/level_2.de1c2187.png\";","module.exports = __webpack_public_path__ + \"static/media/level_3.1d7d5129.png\";","module.exports = __webpack_public_path__ + \"static/media/level_4.34ae7e46.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAJMAAACTCAYAAACK5SsVAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAAXNSR0IArs4c6QAAAARnQU1BAACxjwv8YQUAABIZSURBVHgB7Z0LcFTXecf/u3q/30ggCZAQQrws8zLgYgZsnHGDm7hp4qYet/W0duu+Y9ym42ncafpKmxY3adJ02rrNtE2bmdg07kzGTuIktsGxDSYGYRGeEoLlIYGEnishaR+5/yNdeRF67OPs3nPJ95u5LNq9+/ju/s853/m+b8/xYBbC4XChdVNrHYUQhAmOezyegdke9Ey/wxLRw9bNJ6zjbgjCrfisY68lqhemPzAlJktE7IWeg4hIiA6K6uOWqC7adygxTQrpReuoiTz7R/7r6b2BMS8EwWJDful4SVpmOOIuDnn324KyxfQP1s3D9hl/cr4l/8tXTucPBMZFSMJNPFKxdPjLDRv7I0Tls8S0hf/xTPZK79gn/3bb4cJ/toQEQZiF2qy8QMv6n70WIahP0Ydiz7PHPulfO9tyREjCfPhG/emf952I1Mkv8h+KacpP+q9r7bkQhCj4SufpvIg/t/Ifimmxfc/5EX86BCEK6E+33xhKs/+23KUacbAFbYiYBG2ImARtiJgEbYiYBG2ImARtiJgEbTgbV/JdAV59C1ltPnjGAkg2oXQvxuqqgZ+/H6gohXau9gDfeh2Z7RfhHR1HsglnZWC0qgx4aJcVeq6C0zgnJuuiL3rpdTRV16K4vBZeb/I7SSuwhoHOARz5/c+h+5MPAB+9D9poOYWSL34N62qXorisJmX2+Pv9eP/TX8ClX3kQeGAbnMQZMXX3ouTrr2DblrthJQjVXePj4xgbG0OySE9PR1ZWFkpLS7H9ri1485uv4eraRqC+Fglj2ZP31/+CHZvvRmZmprorEAhgdHQUySItLQ3Z2dkoKirC1s2bceC/v4WuFUuBuho4hTNi+r/vYkNjkxLSjRs3cPjwYQwPDyMjIwPJgmKlmDZu3Ii8vDysX74Cr/7/9xF86jEkzL7vYEPDCiUk2vPee+9haGgoqfZQrBTT2rVrUVxcjA1r1uLlr/wv8HefhlM4Iqassz6U1DSoC/L222+joqICVVXJH/PZ87311lu47777UFBQgOxTrfAjcTJOdWBh/So17PD1FyxYoI5kw57v4MGD2LFjh7Int7Ubw6NW756VCSdwZDaXZjnb7JWuXLmifAu2sFTAniM3NxddXV3qfb2hEHSQFpwo67l+/boaTlNlD3vasrIyXLhwYeJzWGJGKAyncDQ04Pf7kZOTg1TCL4Dvmwz4unz9VELhcmg1AUfFxGEh1dgOfzKgPcl8/dkIaephE8WV9Uv0tXhwSOHhdmx7OPTas0E34ppvghe7s7MT3d3dyu9h906HemRkBIWFhcqBT/UQkwj87NeuXUNPT8+UL8cZJ2e1tIeTEt7nJlwhJjrMV69exapVq7Bt27abeiPOaHw+H06fPq2myKmYRSVKb2+vmnwsW7YMW7duvak3oqDOnz+PM2fOID8/XzUSJ4bOeDA+N8feiILZvXs3VqxYccuwxt6ooaFBTY/Zqi9dugSToZDYG+3atQurV6++ZVhjbIr27Ny5c2rG6xaMFhNnKf39/dhsRXjn8yU4JGzZskWdz6HPRGgPGwftmW8I4zC+bt06DA4OqkbiBowWE1tlU1OTilhHA4eFDRs24PLlyzAR2rN06VKUlJREdT7tbm5uVsOeGzBWTJzusodZvHhxTM+rrq5WzwsGgzAJfh4O13V1dTE9b+HCherWlFjSXBgrJgYA2dPEk98qLy83bmjg7I1DG22KBSZ0mcxNVqBVJ8aKiRc/3rQEn8dZkUnw88RrD0XI0IjpGCsmtsh4BWEHNE2CAcl4BcHrkIr6qEQx9hNyOOjr60M8cPqdqmRrtHA2yrKUWH05pmh4HUyzZyaMFZOdKmGwMhYoJPYAyawligeKicKwM/zRwlAHHXc3RMON7jsZ/W1paYn6fA4Hra2tKgpuYtS4srISx48fjzoxS/EdPXpUPY/DvukYLSbOYugrHDp0aF5/g49TeAwLsDTXRJju4bF///55BUUhUXhsIJydugHjvbra2lqVfnjnnXdUNHgmGINhxSYTp4xLmZzLYi/Dmeqbb76phrCZYIN499130dHRoex3S27O+EQveybmqlgt8Nprr6mMOnse5uT4pVBoPBYtWoTly5fDdCiM+vp6Zc8bb7yhotysELDDGbSFj/E+5iLdIiTiiqoBXlBeXHb3DN5xVsRWTT+CqQlGvd100QltYcktg6s8bHtYy82ot9vsIa6qLOMFZsgg1iiyqdAe9kzR5h5NR34eLmhDxCRow7U14Iwk08e4HWrAGSawUyamBVtjwVU14Czf7enpxpJFAZRZoaQ+a2Z94Uqm5UMVqSm3m2rAKR67BpwNgj/54n0MczC+xglHqn8GliiuEBNTKj3dF/HZPcCTj1p5u7wPRudrPQHse6Ubf/NPvRhMr3ZFgI8pHxbwsQacVZeRjSCyBpwzOzYSqQHXBIW0qMyHcz8E/vA3rdlc3s0XtqKMAvNg/4tB67wLxlZZ2jBpS5tYA75mzZpbetPIGnDCMl+3YHwNuCd0Bf/zJQ8WlM/dOhdXe/C1f7QMss43tQacCVuKg79ImS8cEFkD7oYqS2K0mOgjPfM7ASxbEl03X7/Ygy/9pcfY3omfi+meaHOHFBxXOTl37hzcgNE14F704ZGPxuYvPPQhD9I8fcb8ZNrGrgFnKiUWmCYiUgOeAEybNNYHUFgQm5joq95zl0dqwB3A6BrwhRWIi8pyJHUVuniQGnAHYYscjLMx+odhXDFZIjXg9qIWpmN0DfiRVsRFywkYF/BLpAbcxJr2mTC6Btx/Ix8HDsW2hlPLj4Fzvmxja8C5yEYsSA24JlgD/sefi15Mg0PAn+4No7zCzKgxo9msUY+lBvz9999XNe1SA54gnMWcOleKx/aEMTLPzHjYilM++/dhHDhcbHQNOCtFWQM+36p5dg04A7DM07kB4706Bvn2fTsPv/S7YZztmPmc7uvAL/9BGF99scD4GnBWUXLYOnDgwJw17VzOmsFK0+2JxPhEL7v3xsZGHDnZjY0PdmHr+jFsagbKiq081wDww8Ow/CovKhZUY/ly8xf6iqwBZ007k7lMTjNHx1mbXdPOkl6uACM14Jqxa8B5gdsv+3G8bWTqJ+B0TFetznPVRZ+ppp0JYE7/mUJx02pxkbiqsowXmy2Zx+3A7VbTLmW7gjZETII2REwGwLgTc4luyL/Nhat8JjqrTC2wIoBpCdthZTyKfoebnFYmfjmj48xttMCKbpeXqKRi5rVeFBcWKedcasCTAOMuXIqGKRKuCcmZENMT9sLsTFFw8dElS5a44kcFnLl1XO1C8GO7JnaxLP9gwdSx/iFcfWU/el76Hqr6011VA268mNgLcQGHO+64Q61UGwlbLnslFuazCJ8RYxaTmTzbo5DaR/0I/9ufA9WVt55QZM3sPvlhBO+/G5c+/zxwvisl26fpwGifiUMZe6Q777zzFiFFwpbLx1mIT1GZVmVpw57U19ON8Gd+a2YhRcKo7FOPoTMckBpwHdCnYPoh2uWbuWoIo8umrurP3RPGdm8HVjdE94SqcgSf+LjUgCcKE53cDJACiQXur0I/yontx+aCvewAr/aDO2N74vZNGLYc9GTu96sLY8XEi0eHO9boMFMsrBow7edOaurPOuSaytiemJkBLKtVKRfTMVZMdLzjTTPweSbWgKOiGHGxoExqwBPBtGEqUVQN90icQ5UVf5Ia8ATgtH+2ep/5YHDTtB0l+Xm8F6yJwViMC+WzUZ25IDXgiUAx0e+JdVrM8ylCExeVzx3wA68fiul5aPMho6tbasATgbEj1j6zZjoWzp49q0pjTRwWKhdYzvd/7ONvl6J7AreVf/4FVJaVSw14ojCVwNhMtHEjbq3KmAyfZyKsAV8Ysi75M89ZsYJ5Aqsc3v7zmyj58TlXbBVLjBYTeyfm4rgmNkUyl1N+8eJF1Ytx5V2TV19jaqToRAfw7Be5UtnMJ/X0Ac99FTlff1lqwHVCX4FR7RMnTqC9vV3l4djC6RMxFsUoOVMuDCUwwGl6opfDL2241tGFzieexfiqZcAdVmC2tAgYHAZOtiH93VaUFxZh0cqVUgOuGwqHC8ZzltbW1qacbHtNS4qNPhJX8ncLtj/I6gf/oB/Drx6a+gk4Jx4FK5pcEQqYjmvqmW63emkiNeCCMAs/lWJKlh/ihH9jUqbAUTHR30l1Npw5smSVw9K3S3VOkO9nSnmvI2IKp6epAjZ7u6xUJTFVGcjAwFTcRtdm9SHvRI/EagXakqrNpmkPa8hramomPgd7Ka9zsz9HHPDRpdUY7BtUU3yug33w4EFVOpLM+BC/YB6bNm2aWK7HmhneqNETDByrr1bLMVOk69evV5stcqaZzDAFRctevbm5WfXwaneoskIgy7mcpCNiCu3ejta/+ndsWbNWzWTuvfdetQ5RMocIDkGsDadfw17xvaNHEfqzJ6GFj30Ix575ArZPrnLCNb6ZH0xmTVWkPfSbjhw7hvBnnoCTOBMaqKvBpR3rcOzAMTTW1StBsZdKNrzoLDJrbTuDy7t/BlhRBy1UV6LnkQ/j8L4fYG19w9RP2FPxwwb2SCfbz+LSrk1AkyZ74sS5ONOjH8GZdatw9uU3kHuiDd4oclXpV7pn3HiHXX6APxfKnMecNC9GaqsQeOpRgJFnnTxwD3yNdbi07zvIOdkB73x+YCAIb2f3jKUyyp7CPCB/7kqBkBXYHKsqw/jjDwEbVsNpnA1arm5A2DqiWgf1eh/KnvwLLF5UfctDTARffvpXoy/UTxb1NQj90a9HZ8+QH/mf2DPjjyWUPY//ArDjLrgJCVoK2hAxCdoQMQnaEDEJ2hAxCdoQMQnaEDEJ2hAxCdoQMQnaEDEJ2hAxCdoQMQnaEDEJ2hAxCdoQMQnaEDEJ2hAxCdoQMQnaEDEJ2hAxCdoQMQnaEDEJ2hAxCdoQMQnaEDEJ2hAxCdowd01LrjXERdW5ESH/Pzpu3c5x/lhgYisJrt7GxUW5TpFJK9XShkibRudfi0DZQ1uUTYbZMwNmiYkXmwtY8LBFZDPvwhahiS/AhtedXwRX9k/zOvdFBIMf2HSTPcH5n6fsmTyPnz9t0h5DhWWGmNhax62WGgrO3fvEAl/H/hJJeho3o0vNymoUTWBSDLrWnIx8TZpAUWWkGyUq58XE4SkVyxDaXwQFlZGWvC+BjWI8yfZQn6myJwacc8DZ0rj/Wqo35eP7jY7p6zEioV837pA9BuCcmOhcOrXscGjSodcJ7ZnPD0oWyh7nBeWMmGyn1ElC0xz2RAhqfC0XfwaHxBSfkMLWjG2mRdTjXlg9pEnQCTQMrfYEnRWTa/ZOQV4Oendtxvj+H6Ew5FHLPHMd7L4bIxhc1wTUO7kRTxxffm42hh7aiVMHjqA4EFZrW3Ity4GREQxsWglsXIuYcXizAo/VCg5at2pV8tpDL1VeHBtO/paLdkAuHvzDwNkLQP8QUJQHNNYBOXFuocpt3tM1mJuIPfR1zpwHevuVwJQ9BXmIC4YKMlLXP7Rt/EhXfXa+3R1udqZnUoG3wITjGCt5uUBzExKG8aZ0Te2Gr0NBxTNschH4NcuRMB6N9sSJMz4TQyJcstip2AjfV/dK/uzlnLTHyfefxLnQAHuG7MzUtyb2itlJELJtT6o3HeT7ZWVMpFocxlkH3G5R/IJVOiWJ4QJebAo3mbtweyYFxdldsu2heOkfeb1GRL+JGbM5lcDMnPChGNGdnhSNFzs5mqqcnM2UPbaowvoCtGwM6WYme80KDXgneyrCLyKyBEUdmP1LiSzTUNUCBrRYNQRN+ma2PaqhhOa2hfCz25UPppbVTMPcOJO6ePzPLMMSvwgX7aw9Zc90H3EmQbnJrgjcE7Scjksv+C3cLnZAynYFjYiYBG2ImARtiJgEbYiYhLgpyciMjMoOUEyt9l8/V1p9A4IQBWvyisdL0jLtuIbP4/EoMb1tn/B09cqhwrQMh6tiBDfwe1WNkbvHKg1RTN+wjgH+sSwnP7hv5T09NZm5DtegCibzt0vW9f/GwobhiLv28h8VMQuHw49bN5+1H2kbGUrbe/lkXsvQdc11GoKbac4vHfu1BXUjGwvKIisBn7OGuA/ERCxBPW3d7IEgRM8LlpA+Zf9xUyzfEtTD1g1FVQNBmB26RXstIT0feeeMiaFJUW21Dier9AXz8FnHcev4Bmdv0x/8CQ2lY6cuMxDvAAAAAElFTkSuQmCC\"","module.exports = __webpack_public_path__ + \"static/media/crash.5143c742.png\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/engineer-2.5a3711d1.png\";","module.exports = __webpack_public_path__ + \"static/media/howto1.b299d983.jpg\";","module.exports = __webpack_public_path__ + \"static/media/howto2.1928ffbe.jpg\";","module.exports = __webpack_public_path__ + \"static/media/howto3.f8cd90c9.jpg\";","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/howto4.c14aa030.jpg\";","module.exports = __webpack_public_path__ + \"static/media/phone-frame.c070e648.svg\";","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = \"data:image/png;base64,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\"","module.exports = __webpack_public_path__ + \"static/media/characters.3b1acd1a.png\";","module.exports = __webpack_public_path__ + \"static/media/left.08f12835.png\";","module.exports = __webpack_public_path__ + \"static/media/right.638c74c0.png\";","module.exports = __webpack_public_path__ + \"static/media/start_poster.8480d6ad.jpg\";","module.exports = __webpack_public_path__ + \"static/media/start_poster-welsh.6c6ac887.jpg\";","module.exports = __webpack_public_path__ + \"static/media/glib_glob.1f2a5120.svg\";","module.exports = __webpack_public_path__ + \"static/media/flub_flub.53aaddd3.svg\";","module.exports = __webpack_public_path__ + \"static/media/aliens.9b0db173.svg\";","module.exports = __webpack_public_path__ + \"static/media/variable_intro1.81e3e82c.svg\";","module.exports = __webpack_public_path__ + \"static/media/variable_intro1-cy.32e5e194.svg\";","module.exports = __webpack_public_path__ + \"static/media/variable_intro2.5a386a50.svg\";","module.exports = __webpack_public_path__ + \"static/media/variable_intro2-cy.71cf5594.svg\";","module.exports = __webpack_public_path__ + \"static/media/variable_intro3.c8ea5422.svg\";","module.exports = __webpack_public_path__ + \"static/media/variable_intro3-cy.c93cef77.svg\";","module.exports = __webpack_public_path__ + \"static/media/blank_boom.743b22f3.svg\";","module.exports = __webpack_public_path__ + \"static/media/cockpit.d6b56525.svg\";","module.exports = __webpack_public_path__ + \"static/media/icon_variables.3a7990e2.svg\";","module.exports = __webpack_public_path__ + \"static/media/va-endslide.ecdd1a67.svg\";","module.exports = __webpack_public_path__ + \"static/media/spaceship.0f2a3396.svg\";","module.exports = __webpack_public_path__ + \"static/media/barefoot_zoo.b2281094.jpg\";","module.exports = __webpack_public_path__ + \"static/media/code_cracking.52bb51e2.jpg\";","module.exports = __webpack_public_path__ + \"static/media/sorting_it_out.4f592a52.jpg\";","module.exports = __webpack_public_path__ + \"static/media/asteroid_blasters.3406b279.jpg\";","module.exports = __webpack_public_path__ + \"static/media/colourful_kits.fe277b47.jpg\";","module.exports = __webpack_public_path__ + \"static/media/the_diamond.7148af6d.jpg\";","module.exports = __webpack_public_path__ + \"static/media/festive.90c9df99.jpg\";","module.exports = __webpack_public_path__ + \"static/media/phisherman.e6921b69.jpg\";","module.exports = __webpack_public_path__ + \"static/media/tricky_traffic.cd16856d.jpg\";","var map = {\n\t\"./cy.po.json\": 741\n};\n\n\nfunction webpackContext(req) {\n\tvar id = webpackContextResolve(req);\n\treturn __webpack_require__(id);\n}\nfunction webpackContextResolve(req) {\n\tif(!__webpack_require__.o(map, req)) {\n\t\tvar e = new Error(\"Cannot find module '\" + req + \"'\");\n\t\te.code = 'MODULE_NOT_FOUND';\n\t\tthrow e;\n\t}\n\treturn map[req];\n}\nwebpackContext.keys = function webpackContextKeys() {\n\treturn Object.keys(map);\n};\nwebpackContext.resolve = webpackContextResolve;\nmodule.exports = webpackContext;\nwebpackContext.id = 740;","module.exports = __webpack_public_path__ + \"static/media/theme_abstraction.d0e59301.mp3\";","module.exports = __webpack_public_path__ + \"static/media/theme_athletics.6bde3789.mp3\";","module.exports = __webpack_public_path__ + \"static/media/theme_farm.024dbb08.mp3\";","module.exports = __webpack_public_path__ + \"static/media/theme_heist.937dd721.mp3\";","module.exports = __webpack_public_path__ + \"static/media/theme_military.58b2a75f.mp3\";","module.exports = __webpack_public_path__ + \"static/media/theme_space.7e98c20f.mp3\";","module.exports = __webpack_public_path__ + \"static/media/theme_cybersecurity.c9f76585.mp3\";","module.exports = __webpack_public_path__ + \"static/media/disco2.03832b7f.mp3\";","module.exports = __webpack_public_path__ + \"static/media/disco1.b5bd916b.mp3\";","module.exports = __webpack_public_path__ + \"static/media/feelgood1.34a71987.mp3\";","module.exports = __webpack_public_path__ + \"static/media/dolphin1.13f620da.mp3\";","module.exports = __webpack_public_path__ + \"static/media/battle3.705a10d6.mp3\";","module.exports = __webpack_public_path__ + \"static/media/theme_festive.840853ca.mp3\";","module.exports = __webpack_public_path__ + \"static/media/theme.7a948027.mp3\";","module.exports = __webpack_public_path__ + \"static/media/pop.a026ac82.mp3\";","module.exports = __webpack_public_path__ + \"static/media/success-1.5a01389c.mp3\";","module.exports = __webpack_public_path__ + \"static/media/correct-1.055ad65c.mp3\";","module.exports = __webpack_public_path__ + \"static/media/lose.5e1634ec.mp3\";","module.exports = __webpack_public_path__ + \"static/media/voice.c6352b46.mp3\";","module.exports = __webpack_public_path__ + \"static/media/click.707d8d8e.mp3\";","module.exports = __webpack_public_path__ + \"static/media/cheer.3a330a2f.mp3\";","module.exports = __webpack_public_path__ + \"static/media/beep.d4cab8de.mp3\";","module.exports = __webpack_public_path__ + \"static/media/failure.f72d0d03.mp3\";","module.exports = __webpack_public_path__ + \"static/media/beep-bop.5cf652c0.mp3\";","module.exports = __webpack_public_path__ + \"static/media/explosion.1c5ded6c.mp3\";","module.exports = __webpack_public_path__ + \"static/media/startgame.7265d95d.mp3\";","module.exports = __webpack_public_path__ + \"static/media/ringtone.86e846ac.mp3\";","module.exports = __webpack_public_path__ + \"static/media/synth_success.fa2ab0f0.mp3\";","module.exports = __webpack_public_path__ + \"static/media/synth_fail.b04521a0.mp3\";","module.exports = __webpack_public_path__ + \"static/media/coins_collect.c920e6f1.mp3\";","module.exports = __webpack_public_path__ + \"static/media/crash.fbe1ae1e.mp3\";","module.exports = __webpack_public_path__ + \"static/media/vo-cybersecurity-2.1eb9d5c0.mp3\";","module.exports = __webpack_public_path__ + \"static/media/vo-trickytraffic-2.5a3295ca.mp3\";","import { addLocale, useLocale } from 'ttag';\nimport Cookies from 'js-cookie';\n\nconst LOCALE_COOKIE = 'bfg_lang';\n\nfunction getLocale() {\n return Cookies.get(LOCALE_COOKIE) ?? 'en';\n}\n\nexport function saveLocale(locale: string) {\n Cookies.set(LOCALE_COOKIE, locale);\n}\n\n// setup\nconst locale = getLocale();\n\n// load json file with translations - welsh\nif (locale === 'cy') {\n const cyTranslationsObj = require(`../../i18n/${locale}.po.json`);\n addLocale('cy', cyTranslationsObj);\n useLocale(locale);\n}\n","import Cookies from 'js-cookie';\nimport { useEffect, useState } from 'react';\n\nexport const LANGUAGE_COOKIE = 'bfg_lang';\n\nconst useLanguage: (language: string) => [string, (l: string) => void] = (language) => {\n const [lang, setLang] = useState(language ?? 'en');\n\n useEffect(() => {\n Cookies.set(LANGUAGE_COOKIE, lang);\n }, [lang]);\n\n return [lang, setLang];\n};\n\nexport default useLanguage;\n","import React, { Dispatch, SetStateAction, createContext } from 'react';\n\ntype VoiceoverContextProps = {\n voiceover: Howl | undefined;\n setVoiceover: Dispatch> | undefined;\n playVoiceover: (spriteName: string) => void;\n stopVoiceover: () => void;\n};\n\nexport const VoiceoverContext = createContext({\n voiceover: undefined,\n setVoiceover: undefined,\n playVoiceover: () => {},\n stopVoiceover: () => {}\n});\n\n// set the defaults\n// export const VoiceoverContext = React.createContext({\n// volume: 0.5,\n// setVolume: () => {}\n// });\n\nexport default VoiceoverContext;\n","import React, { Dispatch, SetStateAction, createContext } from 'react';\n\ntype VolContextProps = {\n volume: number;\n setVolume: Dispatch>;\n voiceoverMuted: boolean;\n setVoiceoverMuted: Dispatch>;\n musicMuted: boolean;\n setMusicMuted: Dispatch>;\n};\n\nexport const VolumeContext = createContext>({\n volume: 0,\n voiceoverMuted: false,\n musicMuted: false,\n});\n\n// set the defaults\n// export const VolumeContext = React.createContext({\n// volume: 0.5,\n// setVolume: () => {}\n// });\n\nexport default VolumeContext;\n","const Filter = require('bad-words');\nexport const filter = new Filter();\n\nfilter.addWords('arsehole');\n\nexport default filter;\n","import { Howl } from 'howler';\n\nconst themes = {\n themeAbstraction: new Howl({\n src: [require('../assets/sounds/theme_abstraction.mp3')],\n loop: true,\n volume: 0.1,\n preload: false,\n }),\n themeAthletics: new Howl({\n src: [require('../assets/sounds/theme_athletics.mp3')],\n loop: true,\n volume: 0.1,\n preload: false,\n }),\n themeFarm: new Howl({\n src: [require('../assets/sounds/theme_farm.mp3')],\n loop: true,\n volume: 0.1,\n preload: false,\n }),\n themeHeist: new Howl({\n src: [require('../assets/sounds/theme_heist.mp3')],\n loop: true,\n volume: 0.2,\n preload: false,\n }),\n themeMilitary: new Howl({\n src: [require('../assets/sounds/theme_military.mp3')],\n loop: true,\n volume: 0.1,\n preload: false,\n }),\n themeSpace: new Howl({\n src: [require('../assets/sounds/theme_space.mp3')],\n loop: true,\n volume: 0.1,\n preload: false,\n }),\n themeCybersecurity: new Howl({\n src: [require('../assets/sounds/theme_cybersecurity.mp3')],\n loop: true,\n volume: 0.04,\n preload: false,\n }),\n themeCybersecurityWhale: new Howl({\n src: [require('../assets/sounds/cybersecurity/disco2.mp3')],\n loop: true,\n volume: 0.03,\n preload: false,\n }),\n themeCybersecurityFish: new Howl({\n src: [require('../assets/sounds/cybersecurity/disco1.mp3')],\n loop: true,\n volume: 0.03,\n preload: false,\n }),\n themeCybersecurityPufferfish: new Howl({\n src: [require('../assets/sounds/cybersecurity/feelgood1.mp3')],\n loop: true,\n volume: 0.03,\n preload: false,\n }),\n themeCybersecurityOcto: new Howl({\n src: [require('../assets/sounds/cybersecurity/dolphin1.mp3')],\n loop: true,\n volume: 0.03,\n preload: false,\n }),\n themeCybersecurityBattle: new Howl({\n src: [require('../assets/sounds/cybersecurity/battle3.mp3')],\n loop: true,\n volume: 0.03,\n preload: false,\n }),\n themeFestive: new Howl({\n src: [require('../assets/sounds/theme_festive.mp3')],\n loop: true,\n volume: 0.1,\n preload: false,\n }),\n themeTraffic: new Howl({\n src: [require('../assets/sounds/traffic/theme.mp3')],\n loop: true,\n volume: 0.1,\n preload: false,\n }),\n};\n\nconst sfx = {\n ...themes,\n pop: new Howl({\n src: [require('../assets/sounds/pop.mp3')],\n volume: 0.2,\n }),\n success: new Howl({\n src: [require('../assets/sounds/success-1.mp3')],\n volume: 0.2,\n }),\n correct: new Howl({\n src: [require('../assets/sounds/correct-1.mp3')],\n volume: 0.2,\n }),\n incorrect: new Howl({\n src: [require('../assets/sounds/lose.mp3')],\n volume: 0.2,\n }),\n voice: new Howl({\n src: [require('../assets/sounds/voice.mp3')],\n volume: 0.2,\n }),\n click: new Howl({\n src: [require('../assets/sounds/click.mp3')],\n volume: 0.2,\n }),\n cheer: new Howl({\n src: [require('../assets/sounds/cheer.mp3')],\n volume: 0.15,\n }),\n beep: new Howl({\n src: [require('../assets/sounds/beep.mp3')],\n volume: 0.2,\n }),\n failure: new Howl({\n src: [require('../assets/sounds/failure.mp3')],\n volume: 0.2,\n }),\n beepbop: new Howl({\n src: [require('../assets/sounds/beep-bop.mp3')],\n volume: 0.2,\n }),\n explosion: new Howl({\n src: [require('../assets/sounds/explosion.mp3')],\n volume: 0.2,\n }),\n startgame: new Howl({\n src: [require('../assets/sounds/startgame.mp3')],\n volume: 0.2,\n }),\n ringtone: new Howl({\n src: [require('../assets/sounds/ringtone.mp3')],\n volume: 0.2,\n }),\n synthSuccess: new Howl({\n src: [require('../assets/sounds/synth_success.mp3')],\n volume: 0.2,\n }),\n synthFail: new Howl({\n src: [require('../assets/sounds/synth_fail.mp3')],\n volume: 0.2,\n }),\n coinsCollect: new Howl({\n src: [require('../assets/sounds/coins_collect.mp3')],\n volume: 0.2,\n }),\n crash: new Howl({\n src: [require('../assets/sounds/traffic/crash.mp3')],\n volume: 0.1,\n }),\n};\n\nexport default sfx;\n","import React from 'react';\nimport swirl_green from '../../assets/background/swirl-green.svg';\nimport swirl_yellow from '../../assets/background/swirl-yellow.svg';\nimport square_pink from '../../assets/background/square-pink.svg';\nimport triangle_blue from '../../assets/background/triangle-blue.svg';\n\nexport const Wrapper: React.FC = ({ children }) => {\n return (\n
\n
\n \"\"\n \"\"\n \"\"\n \"\"\n
\n {children}\n
\n );\n};\n\nexport default Wrapper;\n","import Cookies from 'js-cookie';\nimport React, { useContext, useEffect, useState } from 'react';\nimport KeyboardEventHandler from 'react-keyboard-event-handler';\nimport { Prompt } from 'react-router';\nimport { actions, sendAnalytics } from '../../services/analytics';\nimport VoiceoverContext from '../misc/voiceover-context';\nimport DefaultWrapper from '../misc/Wrapper';\n\nexport interface IModule {\n onComplete: (name: string) => void;\n}\n\ninterface ModuleProps {\n id: string;\n name: string;\n slides: any;\n index?: number;\n onComplete(name: any): void;\n defaultHeader: JSX.Element;\n data: object;\n devIndex?: number;\n Wrapper?: React.FC;\n}\n\nconst Module: React.FC = ({\n id,\n name,\n slides,\n index = 0,\n onComplete,\n defaultHeader,\n data,\n devIndex = 0,\n Wrapper = DefaultWrapper,\n}) => {\n if (process.env.NODE_ENV === 'development') {\n console.log('Development mode enabled!');\n\n // check if dev cookie\n let cookieData: any = Cookies.get(`bfg_dev`);\n if (cookieData) {\n cookieData = JSON.parse(cookieData);\n }\n\n if (cookieData && cookieData[name]) {\n index = parseInt(cookieData[name]);\n } else {\n index = devIndex;\n }\n }\n const [slideIndex, setSlideIndex] = useState(index);\n\n const { voiceover } = useContext(VoiceoverContext);\n\n useEffect(() => {\n voiceover?.stop();\n }, [slideIndex]);\n\n // also handle slide pos saving...\n useEffect(() => {\n if (process.env.NODE_ENV === 'development') {\n Cookies.set(`bfg_dev`, {\n [name]: slideIndex\n })\n }\n }, [slideIndex]);\n\n const renderSlide = (index: number): JSX.Element => {\n if (typeof slides[index] === 'undefined') {\n return

console.log('go')}>Error rendering slide (404)

;\n }\n\n if (index === slides.length - 1) {\n sendAnalytics(id, actions.finalSlide, {\n slide: index,\n type: actions.finalSlide,\n });\n }\n\n const CurrentSlide = slides[index];\n return (\n \n gotoSlide(i)}\n onComplete={() => onComplete(id)}\n defaultHeader={defaultHeader}\n data={data}\n currentIndex={index}\n />\n \n );\n };\n\n const nextSlide = () => {\n sendAnalytics(id, actions.nextSlide, {\n slide: slideIndex + 1,\n });\n setSlideIndex(slideIndex + 1);\n };\n\n const previousSlide = () => {\n setSlideIndex(slideIndex - 1);\n };\n\n const gotoSlide = (targetIndex: number) => {\n setSlideIndex(targetIndex);\n };\n\n const keyboardShortcuts = () => {\n if (process.env.NODE_ENV === 'development' || process.env.REACT_APP_DEBUG === 'true') {\n\n return (\n {\n if (key === 'left') {\n console.log(slideIndex);\n previousSlide();\n } else if (key === 'right') {\n console.log(slideIndex);\n nextSlide();\n }\n }}\n />\n );\n }\n return null;\n };\n\n return slides ? (\n \n \n {keyboardShortcuts()}\n\n {renderSlide(slideIndex)}\n \n ) : (\n

Error! No slides provided.

\n );\n};\n\nexport default Module;\n","import Cookies from 'js-cookie';\n\nconst VOLUME_COOKIE = 'bfg_volume';\n\nfunction getVolume(): number {\n let v = Cookies.get(VOLUME_COOKIE);\n return parseInt(v ?? '-1');\n}\n\nexport function saveVolume(volume: number) {\n Cookies.set(VOLUME_COOKIE, volume.toString());\n}\n\n// setup\nexport const volume: number = getVolume();\n","import React, { useContext, useEffect } from 'react';\nimport { Button } from 'react-bootstrap';\nimport { VolumeContext } from '../misc/volume-context';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faMusic, faVolumeMute, faVolumeUp } from '@fortawesome/free-solid-svg-icons';\nimport { Howler } from 'howler';\nimport { saveVolume } from '../../services/volume';\nimport styled from 'styled-components';\n\nimport musicSlash from '../../../src/assets/misc/music-slash.png';\n\nexport type MuteButtonProps = {\n context?: Howl | undefined\n zIndex?: number\n}\n\nconst MuteButton: React.FC = ({context = Howler, zIndex=4}) => {\n const { volume, setVolume } = useContext(VolumeContext);\n const icon = faMusic;\n\n useEffect(() => {\n if (volume === 0) {\n context.mute(true);\n saveVolume(0);\n } else {\n if (volume && volume > 0) {\n saveVolume(-1);\n }\n context.mute(false);\n }\n }, [volume]);\n\n if (setVolume === undefined) {\n return null;\n }\n\n return (\n \n {\n context.mute(volume ? true : false);\n return volume ? setVolume(0) : setVolume(0.5);\n }}\n >\n { volume ? : }\n\n \n \n );\n};\n\nconst Slash = styled.img`\n height: 14px;\n width: 16px;\n margin-top: -2px;\n margin-left: -1px;\n @media (min-width: 992px){\n height: 15px;\n width: 17px;\n }\n`;\n\n\n\n\n\nexport default MuteButton;\n","import React from 'react';\nimport { Container, Row, Col } from 'react-bootstrap';\nimport { motion, Variants } from 'framer-motion';\n\nconst variants: Variants = {\n hidden: { opacity: 0 },\n visible: { opacity: 1 },\n};\n\nconst SlideContent: React.FC<{ animDisabled: boolean }> = ({ children, animDisabled = false }) => (\n \n \n \n {children}\n \n \n \n);\n\nexport default SlideContent;\n","import React from 'react';\nimport { Container } from 'react-bootstrap';\n\nconst SlideHeader: React.FC<{ footer: JSX.Element | null | undefined }> = ({ footer }) => (\n
\n
\n {footer}\n
\n
\n);\n\nexport default SlideHeader;\n","import Cookies from 'js-cookie';\nimport React, { useEffect, useState } from 'react';\nimport { Dropdown } from 'react-bootstrap';\nimport lang_en from '../../assets/misc/lang_en.svg';\nimport lang_cy from '../../assets/misc/lang_wa.svg';\nimport { addLocale, useLocale } from 'ttag';\nimport useLanguage from '../../hooks/language';\n\nconst LangButton: React.FC = () => {\n const [lang, setLang] = useLanguage(Cookies.get('bfg_lang') ?? 'en');\n\n return (\n \n \n \n {lang === 'cy' ? (\n \n ) : (\n \n )}\n \n \n {lang !== 'en' ? (\n {\n if (window.confirm('This action will reset your progress. Do you want to continue?')) {\n setLang('en');\n window.location.reload();\n }\n }}\n >\n {'English\n \n ) : null}\n {lang !== 'cy' ? (\n {\n if (window.confirm('This action will reset your progress. Do you want to continue?')) {\n setLang('cy');\n window.location.reload();\n }\n }}\n >\n {'Welsh\n \n ) : null}\n \n \n \n );\n};\n\nexport default LangButton;\n","import React from 'react';\nimport { Col, Container, Row } from 'react-bootstrap';\nimport LangButton from '../../misc/LangButton';\n\ntype SlideHeaderProps = {\n header: JSX.Element | null,\n headerTransparent?: boolean;\n}\n\nconst SlideHeader: React.FC = ({ header, headerTransparent }) => {\n const sectionClasses = headerTransparent ? 'section--header' : 'section--header bg-secondary-700';\n\n return (\n
\n \n \n \n {header}\n {/* */}\n \n {/* */}\n \n \n \n
\n )\n};\n\nexport default SlideHeader;\n","import { AnimatePresence } from 'framer-motion';\nimport React from 'react';\nimport styled from 'styled-components';\nimport SlideContent from './slide/SlideContent';\nimport SlideFooter from './slide/SlideFooter';\nimport SlideHeader from './slide/SlideHeader';\n\n\nexport interface ISlide {\n nextSlide(): void;\n previousSlide(): void;\n gotoSlide: (index: number) => void;\n onComplete(): void;\n defaultHeader: JSX.Element;\n data: DataType;\n currentIndex: number;\n}\n\ninterface SlideProps {\n header: JSX.Element | null;\n footer?: JSX.Element | null;\n backgroundColor?: string;\n animDisabled?: boolean;\n footerHidden?: boolean;\n headerHidden?: boolean\n overflow?: boolean;\n headerTransparent?: boolean;\n}\n\nexport const Slide: React.FC = ({\n header,\n children,\n footer,\n backgroundColor = 'transparent',\n animDisabled = false,\n footerHidden = false,\n headerHidden = false,\n overflow = true,\n headerTransparent = false,\n}) => {\n return (\n \n \n {!headerHidden ? : null}\n {children}\n {!footerHidden ? : null}\n \n \n );\n};\n\ninterface StyledSlideProps {\n backgroundColor: string;\n oflow: boolean;\n}\nconst StyledSlide = styled.div`\n .section--main {\n background-color: ${(props: StyledSlideProps) => props.backgroundColor};\n overflow: ${(props: StyledSlideProps) => (props.oflow ? 'visible' : 'hidden')};\n }\n\n .section--footer {\n background-color: ${(props: StyledSlideProps) => props.backgroundColor};\n }\n`;\n\nexport default Slide;\n","import { motion } from 'framer-motion';\nimport React, { useContext, useEffect } from 'react';\nimport Typist from 'react-typist';\nimport VoiceoverContext from '../misc/voiceover-context';\nimport { TCharacter } from './Character';\n\nexport type DialogueData = {\n character: TCharacter;\n text: string;\n textSpriteName?: string;\n buttonText: string;\n buttonTextAudio?: [number, number] | [number, number, boolean];\n buttonAction?: () => void;\n};\n\nexport interface DialogueProps {\n data: DialogueData;\n onTypingDone: any;\n Wrapper?: React.FC;\n type: boolean;\n}\n\nexport const Dialogue: React.FC = ({ onTypingDone, data, Wrapper = React.Fragment, type = false }) => {\n const { playVoiceover } = useContext(VoiceoverContext);\n\n const formattedText = data.text.split('\\n').map((line, i) => (\n \n {line}\n
\n \n ));\n const delay = data.text.length * 25;\n\n const handleAnimationComplete = () => {\n setTimeout(onTypingDone, delay);\n };\n\n useEffect(() => {\n // grab howl instance\n // get start and end time\n if (data.textSpriteName) {\n playVoiceover(data.textSpriteName);\n }\n }, []);\n\n return (\n \n \n
\n {data.character.characterName}\n
\n {/* {type ? ({data.text}) : {formattedText }} */}\n {/* {formattedText} */}\n {type ? ({data.text}) : formattedText}\n \n
\n );\n};\n\nexport default Dialogue;\n","import { motion } from 'framer-motion';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { Button } from 'react-bootstrap';\nimport sfx from '../../services/sounds';\nimport { VolumeContext } from '../misc/volume-context';\nimport Dialogue, { DialogueData } from './Dialogue';\n\nexport interface DialogGroupProps {\n buttonHandler: (button: JSX.Element | null) => void;\n Wrapper?: React.FC;\n index?: number;\n dialogue: Array;\n type?: boolean;\n nextDialogueHandler?: (next: () => void) => void\n}\n\nconst DialogueGroup: React.FC = ({\n dialogue,\n index = 0,\n buttonHandler,\n Wrapper = React.Fragment,\n type = false,\n nextDialogueHandler = null,\n}) => {\n const [dialogueIndex, setDialogueIndex] = useState(index);\n const [dialogueData, setDialogueData] = useState(dialogue);\n const [activeDialogue, setActiveDialogue] = useState(null);\n const { volume } = useContext(VolumeContext);\n\n useEffect(() => {\n setDialogueIndex(index);\n }, [index]);\n\n useEffect(() => {\n setDialogueData(dialogue);\n }, [dialogue]);\n\n useEffect(() => {\n setActiveDialogue(renderDialogue(dialogueIndex));\n }, [dialogueIndex, dialogueData]);\n\n const nextDialogue = () => {\n setActiveDialogue(null);\n setDialogueIndex(dialogueIndex + 1);\n };\n\n useEffect(() => {\n if (typeof nextDialogueHandler === 'function') {\n nextDialogueHandler(() => nextDialogue);\n }\n }, [dialogueIndex]);\n\n //not going to work because we need the data for the character wrapper\n const renderDialogue = (index: number) => {\n const data = dialogueData[index];\n\n if (!data) {\n return

Error rendering dialogue (NOdata)

;\n }\n\n return (\n {\n const button = generateButton(data.buttonText, data.buttonAction);\n buttonHandler(button);\n }}\n data={data}\n type={type}\n />\n );\n };\n\n const generateButton = (text: string, action = nextDialogue) => (\n \n {\n buttonHandler(null);\n if (volume) sfx.click.play();\n action();\n }}\n >\n {text}\n \n \n );\n\n if (!activeDialogue) {\n return null;\n }\n\n return activeDialogue;\n};\n\nexport default DialogueGroup;\n","import React from 'react';\nimport styled from 'styled-components';\nimport DialogueGroup, { DialogGroupProps } from './DialogueGroup';\n\nexport type TCharacter = {\n characterName: string;\n characterImage: string;\n characterWidth?: number;\n characterHeight?: number;\n};\n\nexport interface ICharacter {\n character: TCharacter;\n}\n\ninterface CharacterProps {\n characterWidth?: number;\n characterHeight?: number;\n}\n\nconst Character: React.FC = ({ children, character }) => {\n return (\n
\n
\n \n\n
\n
\n {children}\n
\n );\n};\n\nconst StyledCharacter = styled.img`\n width: ${(props) => props.characterWidth || '70'}px;\n height: ${(props) => props.characterHeight || '180'}px;\n`;\n\nexport const CharacterDialogue: React.FC & React.FC = (props: any) => {\n return ;\n};\n\nexport default Character;\n","import ranger from '../../../../assets/characters/ranger-standing.svg';\nimport ranger_search from '../../../../assets/characters/ranger-searching.svg';\nimport { TCharacter } from '../../../general/Character';\nimport { t } from 'ttag';\n\nconst RangerJack: TCharacter = {\n characterName: t`Ranger Jack`,\n characterImage: ranger,\n};\nexport const RangerJackSearch: TCharacter = {\n characterName: t`Ranger Jack`,\n characterImage: ranger_search,\n};\n\nexport default RangerJack;\n","import { useState } from 'react';\n\nfunction useFooterButtonRenderer(): [JSX.Element | null, any] {\n const [footer, setFooter] = useState(null);\n\n return [footer, setFooter];\n}\n\nexport default useFooterButtonRenderer;\n","import React from 'react';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport RangerJack from '../../characters/RangerJack';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { AbstractionData } from '../../';\nimport { t } from 'ttag';\n\nconst ZooKeeperOutro: React.FC> = ({ nextSlide, data, defaultHeader }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue = [\n {\n character: RangerJack,\n text: t`Thanks so much ${data.name}. \n So the issue with the zoo is that my animals are so naughty and keep escaping!`,\n buttonText: t`Oh no!`,\n },\n {\n character: RangerJack,\n text: t`To get you started, your first mission is to try and find out which of my animals has gone missing! \n I think it had a tail... a mane... paws... and big teeth?`,\n buttonText: t`I can help!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default ZooKeeperOutro;\n","import NameInput from './NameInput';\nimport ZooKeeperIntro from './ZooKeeperIntro';\nimport ZooKeeperOutro from './ZooKeeperOutro';\n\nexport default [ZooKeeperIntro, NameInput, ZooKeeperOutro];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport RangerJack from '../../characters/RangerJack';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst ZooKeeperIntro: React.FC = ({ nextSlide, defaultHeader }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue = [\n {\n character: RangerJack,\n text: t`Hi there! I’m Ranger Jack. \n I have been having some trouble with the animals at the zoo.\n Can you help?`,\n buttonText: t`Yes, I would love to!`,\n },\n {\n character: RangerJack,\n text: t`Awesome! One thing before we get started... All rangers need to be called something! \n What is your nickname?`,\n buttonText: t`My nickname is...`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default ZooKeeperIntro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport Character from '../../../../general/Character';\nimport RangerJack from '../../characters/RangerJack';\nimport { AbstractionData } from '../../';\nimport { t } from 'ttag';\n\nconst NameInput: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const next = data.name ? (\n \n ) : null;\n\n return (\n \n \n \n \n

{t`Pick a nickname`}

\n data.setName(e.target.value)}\n />\n \n
\n
\n
\n );\n};\n\nexport default NameInput;\n","import { useState, useEffect } from 'react';\n\nexport interface GameProps {\n gameData: Array;\n index?: number;\n onGameComplete: () => void;\n}\n\nexport interface GameQuestionProps {\n onQuestionComplete: () => void;\n}\n\nexport interface GameQuestion {}\n\nexport function useGameLogic(\n gameData: Array,\n onGameComplete: () => void,\n onNextQuestion: () => void,\n index = 0,\n): [T, () => void] {\n const [questions] = useState(gameData);\n const [questionIndex, setQuestionIndex] = useState(0);\n const [question, setQuestion] = useState(null);\n\n useEffect(() => {\n setQuestion(gameData[questionIndex]);\n }, [questionIndex, gameData, questions]);\n\n const nextQuestion = () => {\n // console.log('HANDLER', gameData[questionIndex + 1]);\n if (typeof gameData[questionIndex + 1] === 'undefined') {\n onGameComplete();\n } else {\n onNextQuestion();\n setQuestionIndex(questionIndex + 1);\n }\n };\n\n return [question, nextQuestion];\n}\n","import React from 'react';\nimport { Modal, Container, Row, Col } from 'react-bootstrap';\nimport { ModalProps } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { motion } from 'framer-motion';\n\nconst variants = {\n hidden: { opacity: 0 },\n visible: { opacity: 1 },\n};\n\ninterface ModalOverlayProps extends ModalProps {\n show: boolean;\n header: JSX.Element | null;\n footer: JSX.Element | null;\n backgroundColor?: string;\n headerHidden?: boolean;\n}\n\nconst ModalOverlay: React.FC = (props) => {\n return ;\n};\n\nconst Default: React.FC<{\n header: JSX.Element;\n footer: JSX.Element;\n backgroundColor: string;\n headerHidden: boolean;\n}> = ({ header, footer, children, backgroundColor = '#00A0D6', headerHidden }) => {\n // return (\n // }>\n // {children}\n // \n // );\n // TODO: Convert to slide\n return (\n \n
\n {!headerHidden ? (\n
\n \n \n {header}\n \n \n
\n ) : null}\n \n \n \n {children}\n \n \n \n \n
\n \n \n {footer}\n \n \n
\n
\n
\n
\n );\n};\n\nconst AppWrapper = styled.div`\n background-color: ${(props: { backgroundColor: string }) => props.backgroundColor};\n`;\n\nconst FooterSection = styled.section`\n background-color: ${(props: { backgroundColor: string }) => props.backgroundColor};\n`;\n\nexport default ModalOverlay;\n","import React from 'react';\nimport { Question } from './FourPicturesGame';\nimport ModalOverlay from '../../general/ModalOverlay';\nimport { Row, Col, Button } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\n\nconst CorrectModal: React.FC<{ question: Question; onClose: () => void; show: boolean }> = ({\n question,\n onClose,\n show,\n}) => {\n const header = (\n \n

\n {t`CORRECT!`}\n

\n \"\"\n
\n );\n\n const footer = ;\n\n return (\n onClose()} backgroundColor=\"#00C3A5\">\n \n \n \n {question.answer}\n \n

{question.answer}

\n \n
\n

{t`Animal identified successfully!`}

\n
\n
\n \n
\n
\n );\n};\n\nexport default CorrectModal;\n","export function shuffle(array: Array): Array {\n for (let i = array.length - 1; i > 0; i--) {\n const j = Math.floor(Math.random() * (i + 1));\n [array[i], array[j]] = [array[j], array[i]];\n }\n return array;\n}\n","import React, { useState, useEffect, useContext } from 'react';\nimport { Container, Row, Col, Button } from 'react-bootstrap';\nimport classNames from 'classnames/bind';\nimport { VolumeContext } from '../../misc/volume-context';\nimport sfx from '../../../services/sounds';\nimport { shuffle } from '../../../helpers/shuffle';\nimport { t } from 'ttag';\n\nconst LetterInput: React.FC<{\n target: string;\n additionalLetters: Array;\n onQuestionComplete(): void;\n onHintRequest(): void;\n hintLevel: number;\n}> = ({ target, additionalLetters, onQuestionComplete, onHintRequest, hintLevel }) => {\n const [jumbledLetters, setJumbledLetters] = useState>([]);\n const [answerLetters, setAnswerLetters] = useState>([]);\n const [questionComplete, setQuestionComplete] = useState(false);\n const { volume } = useContext(VolumeContext);\n\n useEffect(() => {\n setAnswerLetters(Array.from(Array(target.length)).map(() => '*'));\n setJumbledLetters(shuffle(target.split('').concat(additionalLetters)));\n setQuestionComplete(false);\n }, [target, additionalLetters]);\n\n useEffect(() => {\n if (!questionComplete && answerLetters.join('').toUpperCase() === target.toUpperCase()) {\n setQuestionComplete(true);\n onQuestionComplete();\n }\n }, [answerLetters, onQuestionComplete, target]);\n\n const handleAddLetterClick = (index: number) => {\n const target = jumbledLetters[index];\n\n const answerArray = [...answerLetters];\n\n // find first star, replace at index\n const freeIndex = answerArray.findIndex((el) => el === '*');\n\n if (freeIndex === -1) {\n return false;\n }\n\n answerArray[freeIndex] = target;\n setAnswerLetters(answerArray);\n\n jumbledLetters.splice(index, 1);\n setJumbledLetters([...jumbledLetters]);\n if (volume) sfx.pop.play();\n };\n\n const handleRemoveLetterClick = (index: number) => {\n const target = answerLetters[index];\n\n if (target === '*') return;\n\n setJumbledLetters([...jumbledLetters, target]);\n\n answerLetters[index] = '*';\n setAnswerLetters([...answerLetters]);\n\n if (volume) sfx.pop.play();\n };\n\n const renderAnswerLetters = () => {\n let letterList: Array;\n\n letterList = answerLetters.map((letter, index) => (\n handleRemoveLetterClick(index)}\n className={`${letter === '*' ? 'text-white' : null} slot--answer`}\n >\n {letter.toUpperCase()}\n \n ));\n\n const classes = classNames({\n 'text-success': questionComplete,\n });\n\n return
    {letterList}
;\n };\n\n const renderJumbledLetters = () => {\n return jumbledLetters.map((letter, index) => (\n \n ));\n };\n\n // if (questionComplete) {\n // return

Correct! You got this question correct!

;\n // }\n\n return (\n \n \n {renderAnswerLetters()}\n \n \n \n {renderJumbledLetters()}\n {hintLevel < 4 ? (\n \n ) : undefined}\n \n \n \n );\n};\n\nexport default LetterInput;\n","import React from 'react';\nimport { GamePicture } from './FourPicturesGame';\n\nconst PictureTile: React.FC<{ picture: GamePicture; hint: boolean }> = ({ picture, hint }) => (\n
\n
{picture.text}
\n
\n);\n\nexport default PictureTile;\n","import React from 'react';\nimport { GamePicture } from './FourPicturesGame';\nimport PictureTile from './PictureTile';\n\nexport type GamePictureTileGroup = {\n pictures: [GamePicture, GamePicture, GamePicture, GamePicture];\n hintLevel: number;\n};\n\nconst PictureTileGroup: React.FC = ({ pictures, hintLevel }) => (\n
\n 0} />\n 1} />\n 2} />\n 3} />\n
\n);\n\nexport default PictureTileGroup;\n","import React, { useContext, useEffect, useState } from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport sfx from '../../../services/sounds';\nimport { GameProps, GameQuestion, useGameLogic } from '../../core/Game';\nimport { VolumeContext } from '../../misc/volume-context';\nimport CorrectModal from './CorrectModal';\nimport LetterInput from './LetterInput';\nimport PictureTileGroup from './PictureTileGroup';\n\nexport type Question = GameQuestion & {\n answer: string;\n answerImage: string;\n pictures: [GamePicture, GamePicture, GamePicture, GamePicture];\n additionalLetters: Array;\n hintLevel?: 0 | 1 | 2 | 3 | 4;\n};\n\nexport type GamePicture = {\n text: string;\n image: string;\n};\n\nconst FourPicturesGame: React.FC> = ({ gameData, onGameComplete, index = 0 }) => {\n const [show, setShow] = useState(false);\n\n const handleGameComplete = () => {\n setShow(true);\n onGameComplete();\n };\n\n const handleNextQuestion = () => {\n setShow(false);\n };\n\n const [question, nextQuestion] = useGameLogic(gameData, handleGameComplete, handleNextQuestion, index);\n\n // Move to game\n const [hintLevel, setHintLevel] = useState(0);\n\n useEffect(() => {\n if (question) {\n setHintLevel(question.hintLevel ?? 4);\n }\n }, [question]);\n\n const handleHintRequest = () => {\n if (hintLevel < 4) {\n setHintLevel(hintLevel + 1);\n }\n };\n // ---\n\n const { volume } = useContext(VolumeContext);\n\n const handleModalClose = () => {\n setTimeout(nextQuestion, 0);\n setShow(false);\n };\n\n const handleQuestionComplete = () => {\n if (volume) sfx.success.play();\n setShow(true);\n };\n\n if (question === null) {\n return null;\n }\n\n return (\n \n \n

{t`Guess the animal by selecting and deselecting the letters below`}

\n \n \n \n \n \n \n
\n );\n};\n\nexport default FourPicturesGame;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport FourPicturesGame, { Question } from '../../../../interactive/fourpic/FourPicturesGame';\nimport { t, jt } from 'ttag';\n\nimport lion from '../../../../../assets/animals/lion.svg';\nimport lion_1 from '../../../../../assets/animals/lion/lion-1.jpg';\nimport lion_2 from '../../../../../assets/animals/lion/lion-2.jpg';\nimport lion_3 from '../../../../../assets/animals/lion/lion-3.jpg';\nimport lion_4 from '../../../../../assets/animals/lion/lion-4.jpg';\n\nconst EscapedAnimal: React.FC = ({ nextSlide }) => {\n const gameData: Question[] = [\n {\n answer: t`lion`,\n pictures: [\n { text: t`TAIL`, image: lion_1 },\n { text: t`MANE`, image: lion_2 },\n { text: t`BIG TEETH`, image: lion_3 },\n { text: t`PAWS`, image: lion_4 },\n ],\n answerImage: lion,\n additionalLetters: ['K', 'J', 'P'],\n hintLevel: 0,\n },\n ];\n\n let title = {t`Identify the Animal`};\n const header =

{jt`Mission 1: ${title}`}

;\n\n return (\n \n nextSlide()} />\n \n );\n};\n\nexport default EscapedAnimal;\n","import React from 'react';\n\ninterface IContent {\n type: ContentTypeAttr;\n styles: string;\n}\n\ntype ContentTypeAttr = 'island' | 'island_dark' | null;\n\nexport const Content: React.FC = ({ type, styles, children }) => {\n if (type === 'island') {\n return (\n
\n
{children}
\n
\n );\n }\n if (type === 'island_dark') {\n return (\n
\n
{children}
\n
\n );\n }\n\n return {children};\n};\n\nexport default Content;\n","import React from 'react';\nimport { Button, Col } from 'react-bootstrap';\nimport paint_stroke from '../../assets/misc/paint-stroke.svg';\nimport Slide from '../core/Slide';\nimport Content from './Content';\nimport { t } from 'ttag';\n\ninterface IMissionSlide {\n header: JSX.Element;\n number: number;\n backgroundColor?: string;\n onStart: () => void;\n}\n\nexport const MissionSlide: React.FC = ({\n onStart,\n header,\n number,\n children,\n backgroundColor = '#361559',\n}) => {\n return (\n \n \n

\n {t`Mission`} {number}\n

\n \"\"\n \n {children}\n \n \n \n
\n );\n};\n\nexport default MissionSlide;\n","import React from 'react';\nimport ModalOverlay from './ModalOverlay';\nimport { Row, Col, Button } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\n\ninterface IDiscoveryModal {\n show: boolean;\n onClose: () => void;\n word: string;\n wordDefinition: string;\n title?: string;\n}\n\nconst WordDiscovery: React.FC = ({\n onClose,\n show,\n word,\n wordDefinition,\n title = t`WORD DISCOVERED`,\n}) => {\n const modalHeader = (\n \n

\n {title}\n

\n \"\"\n \n );\n\n return (\n {t`Next`}}\n backgroundColor=\"#E60050\"\n >\n \n \n \n \n

{word}

\n
{wordDefinition}
\n
\n \n
\n \n );\n};\n\nexport default WordDiscovery;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport RangerJack from '../../characters/RangerJack';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { AbstractionData } from '../..';\nimport WordDiscovery from '../../../../general/WordDiscovery';\nimport { jt, t } from 'ttag';\n\nconst EscapedAnimalOutro: React.FC> = ({ nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue = [\n {\n character: RangerJack,\n text: t`${data.name} you’re a genius! A lion! Silly me, how could I have forgotten.. \n Did the features I gave you help you identify the animal?`,\n buttonText: t`Yes, they did`,\n },\n {\n character: RangerJack,\n text: t`Maybe we are onto something... \n My old textbook says that when I identify the key features and don’t worry too much about the detail I am abstracting.`,\n buttonText: t`Abstraction?`,\n },\n {\n character: RangerJack,\n text: t`Abstraction is about simplifying things; identifying what is important without worrying too much about the detail.`,\n buttonText: t`Got it!`,\n buttonAction: () => setShow(true),\n },\n ];\n\n let title = {t`Identify the Animal`};\n const header = (\n \n

{jt`Mission 1: ${title}`}

\n {/*
COMPLETE
*/}\n
\n );\n\n return (\n \n \n \n \n );\n};\n\nexport default EscapedAnimalOutro;\n","import EscapedAnimal from './EscapedAnimal';\nimport EscapedAnimalIntro from './EscapedAnimalIntro';\nimport EscapedAnimalOutro from './EscapedAnimalOutro';\n\nexport default [EscapedAnimalIntro, EscapedAnimal, EscapedAnimalOutro];\n","import React from 'react';\nimport MissionSlide from '../../../../general/MissionSlide';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst AbstractionIntro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n \n {t`Help Ranger Jack find the missing animal using only the features Ranger Jack has given you.`}\n \n );\n};\n\nexport default AbstractionIntro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport RangerJack from '../../characters/RangerJack';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst ConfusedTouristsIntro: React.FC = ({ nextSlide, defaultHeader, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue = [\n {\n character: RangerJack,\n text: t`Wow, you really are a natural at this. Thank you so much for your help so far, can you help me with another problem I have been having?`,\n buttonText: t`Sure thing!`,\n },\n {\n character: RangerJack,\n text: t`Brilliant. So we have some tourists visiting our animals here but they are having trouble identifying which animal is which... Can you help?`,\n buttonText: t`Let's go!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default ConfusedTouristsIntro;\n","import React from 'react';\nimport { FeatureMatchQuestion } from './FeatureMatch';\nimport ModalOverlay from '../../general/ModalOverlay';\nimport { Row, Col, Button } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\n\nconst CorrectModal: React.FC<{ question: FeatureMatchQuestion; onClose: () => void; show: boolean }> = ({\n question,\n onClose,\n show,\n}) => {\n const header = (\n \n \n

\n {t`CORRECT!`}\n

\n \"\"\n \n
\n );\n\n const footer = ;\n\n return (\n onClose()} backgroundColor=\"#00C3A5\">\n \n \n
\n
\n
\n {t`WHAT TO LOOK FOR`}\n
\n \n \n \n
\n
\n

{question.subject.name.toLowerCase()}

\n {question.features\n .filter((feature) => feature.correct)\n .map((feature) => (\n
\n
{feature.name}
\n
\n ))}\n
\n \n
\n
\n );\n};\n\nexport default CorrectModal;\n","import React, { useState, useEffect, useContext } from 'react';\nimport { Feature } from './FeatureMatch';\nimport sfx from '../../../services/sounds';\nimport { VolumeContext } from '../../misc/volume-context';\nimport { Button } from 'react-bootstrap';\nimport styled from 'styled-components';\n\nconst Tile: React.FC<{\n feature: Feature;\n onAnswer: (correct: boolean) => void;\n resetQuestion: boolean;\n isDisabled: boolean;\n}> = ({ feature, onAnswer, resetQuestion, isDisabled }) => {\n const [selected, setSelected] = useState(false);\n // const [tileFeature, setTileFeature] = useState(feature);\n const { volume } = useContext(VolumeContext);\n\n useEffect(() => {\n setSelected(false);\n // setTileFeature(feature);\n }, [feature]);\n\n useEffect(() => {\n console.log('Question reset');\n setSelected(false);\n }, [resetQuestion]);\n\n // let textClasses = classNames({\n // 'text-center': true,\n // 'text-success': selected && feature.correct,\n // 'text-danger': selected && !feature.correct,\n // });\n\n const handleSelected = () => {\n setSelected(true);\n onAnswer(feature.correct);\n if (feature.correct) {\n if (volume) sfx.correct.play();\n } else {\n if (volume) sfx.incorrect.play();\n }\n };\n\n return (\n \n
\n
\n {feature.name}\n {/**/}\n
\n
\n \n );\n};\n\nconst TileStyle = styled.button`\n width: 100%;\n display: block;\n border: none;\n border-radius: 5px;\n border: solid 3px transparent;\n overflow: hidden;\n color: #ffffff;\n &:focus {\n outline: none;\n border-color: #0ab9f0;\n }\n h5 {\n word-break: break-word;\n font-size: 18px;\n }\n @media screen and (max-width: 425px) {\n h5 {\n font-size: 4.25vw;\n }\n }\n`;\n\nexport default Tile;\n","import React, { useState, useEffect } from 'react';\nimport { Container, Row, Col } from 'react-bootstrap';\nimport Tile from './Tile';\nimport { Feature } from './FeatureMatch';\n\nimport toaster from 'toasted-notes';\nimport 'toasted-notes/src/styles.css'; // optional styles\nimport { t } from 'ttag';\n\nexport type GameTileGroup = {\n tiles: [Feature, Feature, Feature, Feature, Feature, Feature, Feature, Feature, Feature];\n onComplete: () => void;\n};\n\nconst TileGroup: React.FC = ({ tiles, onComplete }) => {\n const [targetCorrect, setTargetCorrect] = useState(0);\n const [answersCorrect, setAnswersCorrect] = useState(0);\n\n const [questionTiles, setQuestionTiles] = useState(tiles);\n const [resetQuestion, setResetQuestion] = useState(false);\n\n const [disabled, setDisabled] = useState(false);\n\n useEffect(() => {\n setQuestionTiles(tiles);\n }, [tiles]);\n\n useEffect(() => {\n let correctAnswers = 0;\n for (let i = 0; i < tiles.length; ++i) {\n if (tiles[i].correct === true) {\n correctAnswers++;\n }\n }\n\n setAnswersCorrect(0);\n setTargetCorrect(correctAnswers);\n }, [tiles]);\n\n useEffect(() => {\n if (answersCorrect > 0 && answersCorrect === targetCorrect) {\n setAnswersCorrect(0);\n // QUESTION COMPLETE\n onComplete();\n }\n }, [answersCorrect, onComplete, targetCorrect]);\n\n const onAnswer = (correct: boolean) => {\n if (correct === false) {\n // RESET QUESTION? OnIncorrect\n // maybe pass the question with the onanswer so we have the hint\n toaster.notify(t`Oh no! That was incorrect.`, {\n duration: 2000,\n position: 'bottom',\n });\n\n setDisabled(true);\n\n setTimeout(() => {\n setResetQuestion(!resetQuestion);\n setAnswersCorrect(0);\n setDisabled(false);\n }, 1000);\n } else {\n setAnswersCorrect(answersCorrect + 1);\n }\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default TileGroup;\n","import React, { useContext, useState } from 'react';\nimport { jt, t } from 'ttag';\nimport sfx from '../../../services/sounds';\nimport { GameProps, useGameLogic } from '../../core/Game';\nimport { VolumeContext } from '../../misc/volume-context';\nimport CorrectModal from './CorrectModal';\nimport TileGroup from './TileGroup';\n\nexport type Subject = {\n name: string;\n image: string;\n};\n\nexport type Feature = {\n name: string;\n correct: boolean;\n reason: string;\n};\n\nexport type FeatureMatchQuestion = {\n subject: Subject;\n features: [Feature, Feature, Feature, Feature, Feature, Feature, Feature, Feature, Feature];\n};\n\nconst FeatureMatch: React.FC> = ({ gameData, onGameComplete }) => {\n const [show, setShow] = useState(false);\n\n const handleGameComplete = () => {\n setShow(true);\n onGameComplete();\n };\n\n const handleNextQuestion = () => {\n setShow(false);\n };\n\n const [question, nextQuestion] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextQuestion,\n );\n\n const { volume } = useContext(VolumeContext);\n\n const handleModalClose = () => {\n setShow(false);\n setTimeout(nextQuestion, 0);\n };\n\n const handleQuestionComplete = () => {\n setShow(true);\n if (volume) sfx.success.play();\n };\n\n if (question === null) {\n return null;\n }\n\n let definingCharText = {t`defining characteristics`};\n let animalName = question.subject.name.toLowerCase();\n\n return (\n \n \n\n
\n
\n \"\"\n
\n
\n

{animalName}

\n
\n \n

{jt`Find the four most ${definingCharText} of the ${animalName}`}

\n
\n );\n};\n\nexport default FeatureMatch;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport RangerJack from '../../characters/RangerJack';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport ModalOverlay from '../../../../general/ModalOverlay';\nimport { AbstractionData } from '../..';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../../../assets/misc/paint-stroke.svg';\nimport { t, jt } from 'ttag';\n\nconst ConfusedTouristsOutro: React.FC> = ({ nextSlide, defaultHeader, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue = [\n {\n character: RangerJack,\n text: t`Wow ${data.name}, it actually worked! The tourists are not confused anymore thanks to you. If I’m honest, I was pretty confused too!`,\n buttonText: t`Woohoo!`,\n },\n {\n character: RangerJack,\n text: t`Abstraction helped us focus on only the important features of each animal. This guide is going to make my life so much easier...`,\n buttonText: t`Great news`,\n buttonAction: () => setShow(true),\n },\n ];\n\n let title = {t`Help the Tourists`};\n const header = (\n \n

{jt`Mission 2: ${title}`}

\n {/*
COMPLETE
*/}\n
\n );\n\n const modalHeader = (\n \n

\n {t`GUIDE COMPLETE`}\n

\n \"\"\n \n );\n\n return (\n \n \n\n nextSlide()}>{t`Next`}}\n backgroundColor=\"#00A0D6\"\n >\n \n \n \n \n

{t`ANIMAL GUIDE`}

\n
\n {t`You have used abstraction to list the important features of each of Ranger Jack’s animals.`}\n
\n
\n \n
\n \n
\n );\n};\n\nexport default ConfusedTouristsOutro;\n","import ConfusedTouristsIntro from './ConfusedTouristsIntro';\nimport ConfusedTourists from './ConfusedTourists';\nimport ConfusedTouristsIntroGame from './ConfusedTouristsIntroGame';\nimport ConfusedTouristsOutro from './ConfusedTouristsOutro';\n\nexport default [ConfusedTouristsIntro, ConfusedTouristsIntroGame, ConfusedTourists, ConfusedTouristsOutro];\n","import React from 'react';\nimport MissionSlide from '../../../../general/MissionSlide';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst ConfusedTouristsIntroGame: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n \n {t`Help the confused tourists identify the different animals by just picking their most important features.`}\n \n );\n};\n\nexport default ConfusedTouristsIntroGame;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport FeatureMatch, { FeatureMatchQuestion } from '../../../../interactive/featurematch/FeatureMatch';\nimport elephant from '../../../../../assets/animals/elephant.svg';\nimport monkey from '../../../../../assets/animals/monkey.svg';\nimport penguin from '../../../../../assets/animals/penguin.svg';\nimport frog from '../../../../../assets/animals/frog.svg';\nimport { jt, t } from 'ttag';\n\nconst ConfusedTourists: React.FC = ({ nextSlide }) => {\n const gameData: FeatureMatchQuestion[] = [\n {\n subject: {\n name: t`Penguin`,\n image: penguin,\n },\n features: [\n {\n name: t`legs`,\n correct: false,\n reason: ``,\n },\n {\n name: t`orange beak`,\n correct: true,\n reason: ``,\n },\n {\n name: t`alive`,\n correct: false,\n reason: ``,\n },\n {\n name: t`black & white`,\n correct: true,\n reason: ``,\n },\n { name: t`bird`, correct: false, reason: `` },\n {\n name: t`webbed feet`,\n correct: true,\n reason: ``,\n },\n {\n name: t`flippers`,\n correct: true,\n reason: ``,\n },\n {\n name: t`nose`,\n correct: false,\n reason: ``,\n },\n {\n name: t`eyes`,\n correct: false,\n reason: ``,\n },\n ],\n },\n {\n subject: {\n name: t`Elephant`,\n image: elephant,\n },\n features: [\n {\n name: t`trunk`,\n correct: true,\n reason: ``,\n },\n {\n name: t`tusks`,\n correct: true,\n reason: ``,\n },\n {\n name: t`big ears`,\n correct: true,\n reason: ``,\n },\n {\n name: t`ears`,\n correct: false,\n reason: ``,\n },\n { name: t`legs`, correct: false, reason: `` },\n {\n name: t`mouth`,\n correct: false,\n reason: ``,\n },\n {\n name: t`eyes`,\n correct: false,\n reason: ``,\n },\n {\n name: t`very large`,\n correct: true,\n reason: ``,\n },\n {\n name: t`feet`,\n correct: false,\n reason: ``,\n },\n ],\n },\n {\n subject: {\n name: t`Monkey`,\n image: monkey,\n },\n features: [\n {\n name: t`legs`,\n correct: false,\n reason: ``,\n },\n {\n name: t`curly tail`,\n correct: true,\n reason: ``,\n },\n {\n name: t`mouth`,\n correct: false,\n reason: ``,\n },\n {\n name: t`ears`,\n correct: false,\n reason: ``,\n },\n { name: t`two hands`, correct: true, reason: `` },\n {\n name: t`nose`,\n correct: false,\n reason: ``,\n },\n {\n name: t`eyes`,\n correct: false,\n reason: ``,\n },\n {\n name: t`climbs trees`,\n correct: true,\n reason: ``,\n },\n {\n name: t`thumbs`,\n correct: true,\n reason: ``,\n },\n ],\n },\n {\n subject: {\n name: t`Frog`,\n image: frog,\n },\n features: [\n {\n name: t`slimy`,\n correct: true,\n reason: ``,\n },\n {\n name: t`mouth`,\n correct: false,\n reason: ``,\n },\n {\n name: t`legs`,\n correct: false,\n reason: ``,\n },\n {\n name: t`heart`,\n correct: false,\n reason: ``,\n },\n { name: t`swims`, correct: true, reason: `` },\n {\n name: t`webbed feet`,\n correct: true,\n reason: ``,\n },\n {\n name: t`nose`,\n correct: false,\n reason: ``,\n },\n {\n name: t`eyes`,\n correct: false,\n reason: ``,\n },\n {\n name: t`hops`,\n correct: true,\n reason: ``,\n },\n ],\n },\n ];\n\n let title = {t`Help the Tourists`};\n const header =

{jt`Mission 2: ${title}`}

;\n // make the game handle the footer?\n // const [footer, setFooter] = useState(null)\n return (\n \n \n \n );\n};\n\nexport default ConfusedTourists;\n","import React from 'react';\nimport MissionSlide from '../../../../general/MissionSlide';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst StormIntroGame: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n \n {t`Quickly identify the animals to help Ranger Jack return them to safety in their enclosures. You do not have much time!`}\n \n );\n};\n\nexport default StormIntroGame;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { RangerJackSearch } from '../../characters/RangerJack';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { AbstractionData } from '../..';\nimport { t } from 'ttag';\n\nconst StormIntro3: React.FC> = ({ nextSlide, defaultHeader, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue = [\n {\n character: RangerJackSearch,\n text: t`${data.name} it’s a disaster, the animals have escaped and got all mixed up! We need to get them back into the right enclosures. Quick! `,\n buttonText: t`I can help!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default StormIntro3;\n","import StormIntroGame from './StormIntroGame';\nimport Storm from './Storm';\nimport StormOutro from './StormOutro';\nimport StormIntro1 from './StormIntro-1';\nimport StormIntro2 from './StormIntro-2';\nimport StormIntro3 from './StormIntro-3';\n\nexport default [StormIntro1, StormIntro2, StormIntro3, StormIntroGame, Storm, StormOutro];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport RangerJack from '../../characters/RangerJack';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { AbstractionData } from '../..';\nimport { t } from 'ttag';\n\nconst StormIntro1: React.FC> = ({ nextSlide, defaultHeader, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue = [\n {\n character: RangerJack,\n text: t`Hang on ${data.name}, it’s getting pretty windy here...`,\n buttonText: t`Are you ok?`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default StormIntro1;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { RangerJackSearch } from '../../characters/RangerJack';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { AbstractionData } from '../..';\nimport { t } from 'ttag';\n\nconst StormIntro2: React.FC> = ({ nextSlide, defaultHeader, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue = [\n {\n character: RangerJackSearch,\n text: t`It’s a storm ${data.name}! Let me check on the animals to see if they are alright... `,\n buttonText: t`Oh no!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default StormIntro2;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport FourPicturesGame, { Question } from '../../../../interactive/fourpic/FourPicturesGame';\n\nimport crocodile from '../../../../../assets/animals/crocodile.svg';\nimport crocodile_1 from '../../../../../assets/animals/crocodile/crocodile-1.jpg';\nimport crocodile_2 from '../../../../../assets/animals/crocodile/crocodile-2.jpg';\nimport crocodile_3 from '../../../../../assets/animals/crocodile/crocodile-3.jpg';\nimport crocodile_4 from '../../../../../assets/animals/crocodile/crocodile-4.jpg';\n\nimport panda from '../../../../../assets/animals/panda.svg';\nimport panda_1 from '../../../../../assets/animals/panda/panda-1.jpg';\nimport panda_2 from '../../../../../assets/animals/panda/panda-2.jpg';\nimport panda_3 from '../../../../../assets/animals/panda/panda-3.jpg';\nimport panda_4 from '../../../../../assets/animals/panda/panda-4.jpg';\n\nimport hippo from '../../../../../assets/animals/hippo.svg';\nimport hippo_1 from '../../../../../assets/animals/hippo/hippo-1.jpg';\nimport hippo_2 from '../../../../../assets/animals/hippo/hippo-2.jpg';\nimport hippo_3 from '../../../../../assets/animals/hippo/hippo-3.jpg';\nimport hippo_4 from '../../../../../assets/animals/hippo/hippo-4.jpg';\n\nimport snake from '../../../../../assets/animals/snake.svg';\nimport snake_1 from '../../../../../assets/animals/snake/snake-1.jpg';\nimport snake_2 from '../../../../../assets/animals/snake/snake-2.jpg';\nimport snake_3 from '../../../../../assets/animals/snake/snake-3.jpg';\nimport snake_4 from '../../../../../assets/animals/snake/snake-4.jpg';\nimport { t, jt } from 'ttag';\n\nconst Storm: React.FC = ({ nextSlide }) => {\n const gameData: Question[] = [\n {\n answer: t`snake`,\n pictures: [\n { text: t`SCALY SKIN`, image: snake_1 },\n { text: t`LARGE EYES`, image: snake_2 },\n { text: t`PATTERNS`, image: snake_3 },\n { text: t`FORKED TONGUE`, image: snake_4 },\n ],\n answerImage: snake,\n additionalLetters: [`Y`, `O`, `A`],\n hintLevel: 0,\n },\n {\n answer: t`panda`,\n pictures: [\n { text: t`ROUND EARS`, image: panda_1 },\n { text: t`FLUFFY`, image: panda_2 },\n { text: t`BLACK & WHITE`, image: panda_3 },\n { text: t`EATS BAMBOO`, image: panda_4 },\n ],\n answerImage: panda,\n additionalLetters: [`Q`, `J`, `L`],\n hintLevel: 0,\n },\n {\n answer: t`hippo`,\n pictures: [\n { text: t`HAIRY EARS`, image: hippo_1 },\n { text: t`BIG TEETH`, image: hippo_2 },\n { text: t`THICK SKIN`, image: hippo_3 },\n { text: t`SHORT LEGS`, image: hippo_4 },\n ],\n answerImage: hippo,\n additionalLetters: [`K`, `P`, `C`],\n hintLevel: 0,\n },\n {\n answer: t`crocodile`,\n pictures: [\n { text: t`SHARP CLAWS`, image: crocodile_1 },\n { text: t`LARGE EYES`, image: crocodile_2 },\n { text: t`LOTS OF TEETH`, image: crocodile_3 },\n { text: t`SCALY SKIN`, image: crocodile_4 },\n ],\n answerImage: crocodile,\n additionalLetters: [`Z`],\n hintLevel: 0,\n },\n ];\n\n let title = {t`Save the animals`};\n const header =

{jt`Mission 3: ${title}`}

;\n\n return (\n \n nextSlide()} />\n \n );\n};\n\nexport default Storm;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport RangerJack from '../../characters/RangerJack';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport ModalOverlay from '../../../../general/ModalOverlay';\nimport { AbstractionData } from '../..';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../../../assets/misc/paint-stroke.svg';\nimport { t, jt } from 'ttag';\n\nconst StormOutro: React.FC> = ({ nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue = [\n {\n character: RangerJack,\n text: t`${data.name} you are a superstar. You saved the animals from the storm! I don’t know what I’d do without you and your abstraction skills!`,\n buttonText: t`I’m just here to help`,\n buttonAction: () => setShow(true),\n },\n ];\n\n let title = {t`Save the animals`};\n const header = (\n \n

{jt`Mission 3: ${title}`}

\n {/*
COMPLETE
*/}\n
\n );\n\n const modalHeader = (\n \n

\n {t`STORM OVER`}\n

\n \"\"\n \n );\n return (\n \n \n\n nextSlide()}>{t`Next`}}\n >\n \n \n \n \n

{t`ANIMALS SAVED`}

\n
{t`You saved all of Ranger Jack’s animals from the storm.`}
\n
\n \n
\n \n
\n );\n};\n\nexport default StormOutro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport RangerJack from '../../characters/RangerJack';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { AbstractionData } from '../..';\nimport { t } from 'ttag';\n\nconst GoodbyeMessage: React.FC> = ({ nextSlide, defaultHeader, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue = [\n {\n character: RangerJack,\n text: t`Ok, well thank you ${data.name} for all your help and I hope to see you again soon. You are always welcome here!`,\n buttonText: t`Thanks Jack!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default GoodbyeMessage;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Content from '../../../../general/Content';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport icon_abstraction from '../../../../../assets/icons/icon_abstraction.svg';\nimport paint_stroke from '../../../../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\n\nconst Recap: React.FC = ({ nextSlide, defaultHeader }) => {\n const footer = ;\n\n return (\n \n \n \n

{t`You have completed`}

\n

{t`Barefoot Zoo`}

\n \"\"\n \n \n \n \"\"\n \n \n

{t`Abstraction`}

\n

{t`You discovered a new word!`}

\n \n
\n
\n \n \n \n \n \n \n

{t`Great Guide`}

\n

{t`You helped the tourists.`}

\n \n
\n
\n \n \n \n \n \n \n

{t`Storm Saver`}

\n

{t`You saved the animals!`}

\n \n
\n
\n \n
\n
\n );\n};\n\nexport default Recap;\n","import GoodbyeMessage from './GoodbyeMessage';\nimport Recap from './Recap';\n\nexport default [GoodbyeMessage, Recap];\n","import React, { useContext } from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport Reward from 'react-rewards';\nimport { t } from 'ttag';\nimport animal_group from '../../../../assets/animals/animal-group.svg';\nimport sfx from '../../../../services/sounds';\nimport Slide, { ISlide } from '../../../core/Slide';\nimport Content from '../../../general/Content';\nimport { VolumeContext } from '../../../misc/volume-context';\n\nconst EndPage: React.FC = ({ onComplete, defaultHeader }) => {\n const footer = ;\n const { volume } = useContext(VolumeContext);\n\n if (volume) sfx.cheer.play();\n return (\n \n \n \n {/**/}\n\n \n (ref ? ref.rewardMe() : null)} type=\"confetti\" />\n {\n return ref ? setInterval(() => ref.rewardMe(), 5000) : null;\n }}\n type=\"confetti\"\n >\n \"\"\n
\n
\n\n

\n {t`You have completed`}\n
\n {t`Barefoot Zoo`}!\n

\n

{t`Congratulations, Ranger Jack is forever in your debt!`}

\n
\n {t`Let your parent know what you’ve learnt about in the Barefoot Zoo and if they know any family or friends who might also enjoy it they can share it via Facebook or Twitter`}

\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n );\n};\n\nexport default EndPage;\n","import React from 'react';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport Slide, { ISlide } from '../../../core/Slide';\nimport sign from '../../../../assets/misc/sign-home.svg';\nimport sign_cy from '../../../../assets/misc/sign-home-cy.svg';\nimport { t } from 'ttag';\nimport Cookies from 'js-cookie';\n\nconst StartSlide: React.FC = ({ nextSlide, defaultHeader }) => {\n const begin = (\n \n );\n\n let lang = Cookies.get('bfg_lang');\n\n return (\n \n \n \n {lang === 'cy' ? (\n \"\"\n ) : (\n \"\"\n )}\n

\n {t`Use the power of`} {t`abstraction`} {t`to help keep the zoo running smoothly.`}\n

\n \n
\n
\n );\n};\n\nexport default StartSlide;\n","import React, { useContext, useEffect, useState } from 'react';\nimport { Helmet } from 'react-helmet';\nimport logo from '../../../assets/brand/logo-barefoot.svg';\nimport { filter } from '../../../helpers/filter';\nimport sfx from '../../../services/sounds';\nimport Module, { IModule } from '../../core/Module';\nimport MuteButton from '../../misc/MuteButton';\nimport { VolumeContext } from '../../misc/volume-context';\nimport intro from './units/1-intro';\nimport escapedAnimals from './units/2-escaped-animal';\nimport confusedTourists from './units/3-confused-tourists';\nimport storm from './units/4-storm';\nimport goodbye from './units/6-goodbye';\nimport EndSlide from './units/EndSlide';\nimport StartSlide from './units/StartSlide';\n\n\n\n\nexport type AbstractionData = {\n name: string;\n setName: (name: string) => void;\n};\n\nconst Abstraction: React.FC = ({ onComplete }) => {\n const [name, setName] = useState(null);\n const { volume } = useContext(VolumeContext);\n\n const slides = [StartSlide, ...intro, ...escapedAnimals, ...confusedTourists, ...storm, ...goodbye, EndSlide];\n\n const barefootLogo = (\n
\n \"BT-Barefoot\"\n \n
\n );\n\n useEffect(() => {\n setName(filter.clean(name ?? ''));\n }, [name, setName]);\n\n useEffect(() => {\n let theme = sfx.themeAbstraction.load().play();\n return () => {\n if (theme !== undefined) {\n sfx.themeAbstraction.stop(theme);\n }\n };\n }, []);\n\n return (\n \n \n Barefoot Zoo | Barefoot Games\n \n\n \n \n );\n};\n\nexport default Abstraction;\n","import { TCharacter } from '../../../general/Character';\nimport image from '../../../../assets/characters/agent_andrew.svg';\nimport { t } from 'ttag';\n\nconst AgentSparrow: TCharacter = {\n characterName: t`Agent Sparrow`,\n characterImage: image,\n};\n\nexport default AgentSparrow;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentSparrow from '../../characters/AgentSparrow';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { CodeCrackingData } from '../..';\nimport { t } from 'ttag';\n\nconst TuringOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentSparrow,\n text: t`Nice to meet you Agent ${data.name}. I hope you can help us. We have a huge task ahead of us all so there’s no time to waste.`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default TuringOutro;\n","import Intro from './Intro';\nimport NameInput from './NameInput';\nimport Outro from './Outro';\n\nexport default [Intro, NameInput, Outro];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport AgentSparrow from '../../characters/AgentSparrow';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\n\nconst TuringIntro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentSparrow,\n text: t`Welcome to Code Cracking HQ, your base for the next couple of days. \n Before we get started, please could I take your Agent name?`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default TuringIntro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport Character from '../../../../general/Character';\nimport AgentSparrow from '../../characters/AgentSparrow';\nimport { CodeCrackingData } from '../../';\nimport { t } from 'ttag';\n\nconst NameInput: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const next = data.name ? (\n \n ) : null;\n\n return (\n \n \n \n \n

{t`Pick an Agent name`}

\n data.setName(e.target.value)}\n />\n \n
\n
\n
\n );\n};\n\nexport default NameInput;\n","import React from 'react';\nimport Content from '../../../general/Content';\nimport { Row, Col } from 'react-bootstrap';\nimport { t } from 'ttag';\n\nconst Intel: React.FC = ({ children }) => {\n return (\n \n \n

{t`NEW INTELLIGENCE RECEIVED`}

\n \n {children}\n \n \n
\n );\n};\n\nexport default Intel;\n","import React from 'react';\nimport { TMultiChoiceQuestion } from './MultiChoice';\nimport ModalOverlay from '../../../general/ModalOverlay';\nimport { Row, Col, Button } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\n\nconst CorrectModal: React.FC<{ question: TMultiChoiceQuestion; onClose: () => void; show: boolean }> = ({\n question,\n onClose,\n show,\n}) => {\n const header = (\n \n

\n {t`CORRECT!`}\n

\n \"\"\n
\n );\n\n const footer = ;\n\n return (\n onClose()} backgroundColor=\"#00C3A5\">\n \n \n

{question.question}

\n

{t`The correct answer was:`}

\n\n \n
\n {question.answers\n .filter((a) => a.correct === true)\n .map((answer) => (\n

{answer.text}

\n ))}\n
\n
\n \n
\n
\n );\n};\n\nexport default CorrectModal;\n","import React from 'react';\nimport { TMultiChoiceQuestion } from './MultiChoice';\nimport ModalOverlay from '../../../general/ModalOverlay';\nimport { Row, Col, Button } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\n\nconst IncorrectModal: React.FC<{ question: TMultiChoiceQuestion; onClose: () => void; show: boolean }> = ({\n question,\n onClose,\n show,\n}) => {\n const header = (\n \n

\n {t`INCORRECT!`}\n

\n \"\"\n
\n );\n\n const footer = ;\n\n return (\n onClose()} backgroundColor=\"#E73981\">\n \n \n

{question.question}

\n

\n {t`The answer you provided was incorrect. Look carefully at the previous section and have another go!`}\n

\n {question.hint ?

{question.hint}

: null}\n \n
\n
\n );\n};\n\nexport default IncorrectModal;\n","import React from 'react';\nimport { Button } from 'react-bootstrap';\nimport { TMultiChoiceAnswer } from './MultiChoice';\n\nconst MultiChoiceAnswer: React.FC<{ answer: TMultiChoiceAnswer; onAnswer: (correct: boolean) => void }> = ({\n answer,\n onAnswer,\n}) => {\n let btnClass = answer.correct && answer.completed ? 'btn-3d-true' : 'btn-3d-dark';\n return (\n
\n onAnswer(answer.correct)}\n >\n {answer.text}\n \n
\n );\n};\n\nexport default MultiChoiceAnswer;\n","import React, { useEffect, useState } from 'react';\nimport toaster from 'toasted-notes';\nimport { t } from 'ttag';\nimport { TMultiChoiceAnswer, TMultiChoiceQuestion } from './MultiChoice';\nimport MultiChoiceAnswer from './MultiChoiceAnswer';\n\nconst MultiChoiceQuestion: React.FC<{\n question: TMultiChoiceQuestion;\n onQuestionComplete: () => void;\n onIncorrectAnswer: () => void;\n onCorrectAnswer?: () => void;\n}> = ({ question, onQuestionComplete, onIncorrectAnswer, onCorrectAnswer = () => {} }) => {\n const [correctAnswers, setCorrectAnswers] = useState([]);\n\n useEffect(() => {\n if (\n question &&\n correctAnswers.length > 0 &&\n correctAnswers.length === question.answers.filter((a) => a.correct === true).length\n ) {\n setCorrectAnswers([]);\n onCorrectAnswer();\n onQuestionComplete();\n }\n }, [correctAnswers, onQuestionComplete, question]);\n\n const handleAnswer = (answer: TMultiChoiceAnswer) => {\n if (answer.completed) {\n return;\n }\n\n answer.completed = true;\n\n if (answer.correct) {\n setCorrectAnswers([...correctAnswers, answer]);\n\n } else {\n onIncorrectAnswer();\n // toaster.notify(

{ t`Oh no! That was incorrect.` }

, {\n // duration: 2000,\n // position: 'bottom',\n // });\n }\n };\n\n return (\n \n

{question.question}

\n {question.questionContext ?
{question.questionContext}
: null}\n
    \n {question.answers.map((answer, index) => {\n return (\n
  • \n handleAnswer(answer)}\n >\n
  • \n );\n })}\n
\n
\n );\n};\n\nexport default MultiChoiceQuestion;\n","import React, { useContext, useState } from 'react';\nimport { t } from 'ttag';\nimport sfx from '../../../../services/sounds';\nimport { GameProps, GameQuestion, useGameLogic } from '../../../core/Game';\nimport { VolumeContext } from '../../../misc/volume-context';\nimport CorrectModal from './CorrectModal';\nimport IncorrectModal from './IncorrectModal';\nimport MultiChoiceQuestion from './MultiChoiceQuestion';\n\nexport type TMultiChoiceAnswer = {\n text: string;\n correct: boolean;\n completed?: boolean;\n};\n\nexport type TMultiChoiceQuestion = GameQuestion & {\n question: string;\n hint?: string;\n questionContext?: string;\n answers: Array;\n};\n\ninterface MultiChoiceProps {\n onIncorrectAnswer: () => void;\n onCorrectAnswer?: () => void;\n incorrectModalDisabled?: boolean;\n forceOnAnswer?: boolean\n}\n\nconst MultipleChoice: React.FC & MultiChoiceProps> = ({\n gameData,\n index = 0,\n onGameComplete,\n onCorrectAnswer = () => {},\n onIncorrectAnswer,\n incorrectModalDisabled = false,\n forceOnAnswer = false,\n}) => {\n const [show, setShow] = useState(false);\n const [showIncorrectModal, setShowIncorrectModal] = useState(false);\n const { volume } = useContext(VolumeContext);\n\n const handleGameComplete = () => {\n setShow(true);\n onGameComplete();\n };\n\n const handleNextQuestion = () => {\n setShow(false);\n };\n\n const [question, nextQuestion] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextQuestion,\n index,\n );\n\n const handleModalClose = () => {\n setShow(false);\n setTimeout(nextQuestion, 0);\n };\n\n const handleQuestionComplete = () => {\n setShow(true);\n if (volume) sfx.success.play();\n };\n\n const handleIncorrectAnswer = () => {\n if (volume) sfx.incorrect.play();\n\n\n\n if (incorrectModalDisabled) {\n setTimeout(onIncorrectAnswer, 0);\n } else {\n if (forceOnAnswer) {\n setTimeout(onIncorrectAnswer, 0);\n }\n setShowIncorrectModal(true);\n }\n };\n\n const handleIncorrectModalClose = () => {\n setShowIncorrectModal(false);\n if (!forceOnAnswer) {\n setTimeout(onIncorrectAnswer, 0);\n }\n };\n\n if (!question) {\n return

{t`Question not found`}

;\n }\n\n return (\n \n \n \n \n \n );\n};\n\nexport default MultipleChoice;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentSparrow from '../../characters/AgentSparrow';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst BletchleyIntro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentSparrow,\n text: t`To get you started, I have prepared an intelligence report on our current situation. Read the intelligence carefully as this information will be vital for your next task.`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default BletchleyIntro;\n","import WarIntel from './WarIntel';\nimport WarIntelQuiz from './WarIntelQuiz';\nimport WarIntro from './WarIntro';\n\nexport default [WarIntro, WarIntel, WarIntelQuiz];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport Intel from '../../components/Intel';\nimport { t } from 'ttag';\n\nconst BletchleyIntel: React.FC = ({ defaultHeader, nextSlide }) => {\n const next = (\n \n );\n\n return (\n \n \n

\n {t`Today’s date -`} \n {t`1 September 1940`}\n

\n
    \n
  • {t`The war is known as World War II.`}
  • \n
  • {t`We have been at war with the enemy for one year today.`}
  • \n
  • {t`The enemy is communicating using a cipher, making it hard to gather intelligence.`}
  • \n
  • \n {t`We have identified the name of the machine being used by the enemy to cipher their communications.`}\n
  • \n
\n
\n
\n );\n};\n\nexport default BletchleyIntel;\n","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Content from '../../../../general/Content';\nimport MultipleChoice, { TMultiChoiceQuestion } from '../../../../interactive/quiz/multi-choice/MultiChoice';\n\nconst BletchleyIntelQuiz: React.FC = ({ defaultHeader, nextSlide, gotoSlide, currentIndex }) => {\n const gameData: TMultiChoiceQuestion[] = [\n {\n question: t`When did World War II start?`,\n answers: [\n { text: `1941`, correct: false },\n { text: `1932`, correct: false },\n { text: `1939`, correct: true },\n ],\n },\n ];\n\n return (\n \n \n \n

{t`REPORT BACK`}

\n \n gotoSlide(currentIndex - 1)}\n >\n \n \n
\n
\n );\n};\n\nexport default BletchleyIntelQuiz;\n","import { TCharacter } from '../../../general/Character';\nimport image from '../../../../assets/characters/bletchley_lady.svg';\nimport { t } from 'ttag';\n\nconst AgentGreen: TCharacter = {\n characterName: t`Agent Green`,\n characterImage: image,\n};\n\nexport default AgentGreen;\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport AgentGreen from '../../characters/AgentGreen';\n\nconst CipherIntro2: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentGreen,\n text: t`Now, let me show you what a cipher does.`,\n buttonText: t`Show me!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default CipherIntro2;\n","import AgentIntro from './AgentIntro';\nimport AgentQuiz from './AgentQuiz';\nimport CipherDemo from './CipherDemo';\nimport CipherIntro from './CipherIntro';\nimport CipherIntro2 from './CipherIntro2';\n\nexport default [AgentIntro, CipherIntro, CipherIntro2, CipherDemo, AgentQuiz];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentSparrow from '../../characters/AgentSparrow';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport AgentGreen from '../../characters/AgentGreen';\nimport { CodeCrackingData } from '../..';\nimport { t } from 'ttag';\n\nconst AgentIntro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentSparrow,\n text: t`Great start. You’re learning fast! So welcome to the home of the country’s best code-breakers. Here we crack the enemy's codes to find out what they are planning!`,\n buttonText: t`Next`,\n },\n {\n character: AgentSparrow,\n text: t`Let me introduce you to ${AgentGreen.characterName}, she’s the best code-cracker we have and is keen to tell you about ciphers!`,\n buttonText: t`Next`,\n },\n {\n character: AgentGreen,\n text: t`Hi Agent ${data.name}. I am ${AgentGreen.characterName}, head of the code-breaking team here at HQ. Our job is to study the cipher that the enemy use to jumble all of their messages! `,\n buttonText: t`Cipher?`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default AgentIntro;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentGreen from '../../characters/AgentGreen';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport WordDiscovery from '../../../../general/WordDiscovery';\nimport { t } from 'ttag';\n\nconst CipherIntro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: AgentGreen,\n text: t`A cipher is something that turns information in to a code to conceal its meaning.`,\n buttonText: t`Next`,\n buttonAction: () => setShow(true),\n },\n ];\n\n return (\n \n \n \n \n );\n};\n\nexport default CipherIntro;\n","import React, { useState, useEffect } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport Content from '../../../../general/Content';\nimport { t, c } from 'ttag';\n\nconst CipherDemo: React.FC = ({ defaultHeader, nextSlide }) => {\n const [showCiphered, setShowCiphered] = useState(true);\n const [showFooter, setShowFooter] = useState(false);\n const next = showFooter ? (\n \n ) : null;\n\n useEffect(() => {\n setTimeout(() => setShowFooter(true), 5000);\n }, []);\n\n return (\n \n \n \n

\n {showCiphered ? {t`Ciphered Message`} : {t`Deciphered Message`}}\n

\n \n {showCiphered ? (\n {c('Caesar of We are going to attack the ships on Tuesday afternoon!')\n .t`Xf bsf hpjoh up buubdl uif tijqt po Uvftebz bgufsoppo!`}\n ) : (\n {t`We are going to attack the ships on Tuesday afternoon!`}\n )}\n \n

\n \n \n
\n
\n );\n};\n\nexport default CipherDemo;\n","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Content from '../../../../general/Content';\nimport MultipleChoice, { TMultiChoiceQuestion } from '../../../../interactive/quiz/multi-choice/MultiChoice';\n\nconst AgentQuiz: React.FC = ({ defaultHeader, nextSlide, gotoSlide, currentIndex }) => {\n const gameData: TMultiChoiceQuestion[] = [\n {\n question: t`What is a cipher?`,\n answers: [\n { text: t`A bunker used in World War II`, correct: false },\n { text: t`A message sent by a computer`, correct: false },\n { text: t`A secret or diguised way of writing a message`, correct: true },\n ],\n },\n ];\n\n return (\n \n \n \n

{t`REPORT BACK`}

\n \n gotoSlide(currentIndex - 3)}\n >\n \n \n
\n
\n );\n};\n\nexport default AgentQuiz;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentGreen from '../../characters/AgentGreen';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst CipherEnigmaIntro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentGreen,\n text: t`With the enemy turning all of their messages into gibberish, we can’t see what they’re up to. We need to decipher the message back to what it was before, which is hard when we don't know their cipher's settings!`,\n buttonText: t`Next`,\n },\n {\n character: AgentGreen,\n text: t`We have heard some intelligence that the enemy is using something called the Enigma Machine to cipher their messages. Let me show you what it looks like.`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default CipherEnigmaIntro;\n","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Content from '../../../../general/Content';\nimport MultipleChoice, { TMultiChoiceQuestion } from '../../../../interactive/quiz/multi-choice/MultiChoice';\n\nconst CipherQuiz: React.FC = ({ defaultHeader, nextSlide, gotoSlide, currentIndex }) => {\n const gameData: TMultiChoiceQuestion[] = [\n {\n question: t`Which of the following messages has been ciphered?`,\n answers: [\n { text: t`Hello`, correct: false },\n { text: t`Ifmmp`, correct: true },\n { text: t`Goodbye`, correct: false },\n ],\n },\n {\n question: t`What is the name of the machine the enemy uses to cipher messages?`,\n answers: [\n { text: t`Enigma Machine`, correct: true },\n { text: t`Turing Machine`, correct: false },\n { text: t`Scrambling Machine`, correct: false },\n ],\n },\n ];\n\n return (\n \n \n \n

{t`REPORT BACK`}

\n \n gotoSlide(currentIndex - 4)}\n >\n \n \n
\n
\n );\n};\n\nexport default CipherQuiz;\n","import CipherEnigmaIntro from './CipherEnigmaIntro';\nimport CipherEnigmaIntel from './CipherEnigmaIntel';\nimport CipherEnigmaQuiz from './CipherEnigmaQuiz';\n\nexport default [CipherEnigmaIntro, CipherEnigmaIntel, CipherEnigmaQuiz];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport Intel from '../../components/Intel';\nimport enigma from '../../../../../assets/misc/illustration_enigma.svg';\nimport { t } from 'ttag';\n\nconst CipherEnigmaIntel: React.FC = ({ defaultHeader, nextSlide }) => {\n const next = (\n \n );\n\n return (\n \n \n \n

{t`TOP SECRET`}

\n

{t`THE ENIGMA MACHINE`}

\n
\n
\n );\n};\n\nexport default CipherEnigmaIntel;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentGreen from '../../characters/AgentGreen';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport ModalOverlay from '../../../../general/ModalOverlay';\nimport { Button } from 'react-bootstrap';\nimport caesar_top from '../../../../../assets/misc/caesar_top.svg';\nimport caesar_bottom from '../../../../../assets/misc/caesar_bottom.svg';\nimport { motion } from 'framer-motion';\nimport { t, jt } from 'ttag';\n\nconst LabIntro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: AgentGreen,\n text: t`Awesome! You have seen what a cipher does and even found out the name of the one the enemy is using.`,\n buttonText: t`Next`,\n },\n {\n character: AgentGreen,\n text: t`I am working on a big machine to try and decipher the enemy messages myself. Without access to one of their Enigma machines it’s proving to be pretty difficult!`,\n buttonText: t`Next`,\n },\n {\n character: AgentGreen,\n text: t`How about you try a simpler cipher to practise cracking codes in the meantime?`,\n buttonText: t`Next`,\n buttonAction: () => setShow(true),\n },\n ];\n\n let decipher = {t`decipher`};\n let inner = {t`inner`};\n let outer = {t`outer`};\n\n return (\n \n

} footer={} show={show}>\n
\n
\n
\n \n \n
\n
\n

\n {jt`Using a given offset, you can ${decipher} a code by matching its letters in the ${inner} wheel to those in the ${outer} wheel.`}\n

\n
\n
\n \n
\n );\n};\n\nexport default LabIntro;\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport AgentGreen from '../../characters/AgentGreen';\n\nconst LabIntro2: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentGreen,\n text: t`A Caesar Cipher offsets every letter in the alphabet by a given number, for example an offset of two would turn A into C, B into D, C into E... and so on. An offset of zero would just turn A into A!`,\n buttonText: t`Next`,\n },\n {\n character: AgentGreen,\n text: t`Let me show you an example of this cipher in action.`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default LabIntro2;\n","import React from 'react';\nimport { Button } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport caesar_bottom from '../../../assets/misc/caesar_bottom.svg';\nimport caesar_top from '../../../assets/misc/caesar_top.svg';\n\nconst CaesarCipherWheel: React.FC<{\n offset: number;\n offsetInputDisabled?: boolean;\n onOffsetChange?: (o: number) => void;\n}> = ({ offset = 0, offsetInputDisabled = true, onOffsetChange = () => null }) => {\n return (\n
\n
\n \n onOffsetChange(parseInt(e.target.value || '0'))}\n disabled={true}\n min=\"0\"\n max=\"25\"\n />\n {!offsetInputDisabled ? (\n \n (offsetInputDisabled ? null : onOffsetChange(offset - 1))}\n >\n \n \n (offsetInputDisabled ? null : onOffsetChange(offset + 1))}\n >\n \n \n \n ) : (\n \n )}\n \n \n
\n
\n );\n};\n\ninterface WheelRotaterProps {\n offset: number;\n}\nconst WheelRotater = styled.img`\n transform: rotate(${(props) => (360 / 26) * props.offset}deg);\n`;\n\nexport default CaesarCipherWheel;\n","import React, { useState, useEffect } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport CaesarCipherWheel from '../../../../interactive/caesarcipher/CaesarCipherWheel';\nimport Content from '../../../../general/Content';\nimport { t } from 'ttag';\n\nconst CaesarCipherGameIntro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [showFooter, setShowFooter] = useState(false);\n\n const next = showFooter ? (\n \n ) : null;\n const header = (\n

\n {t`Caesar Cipher:`}

{t`How to use`}

\n

\n );\n\n useEffect(() => {\n setTimeout(() => setShowFooter(true), 5000);\n }, []);\n\n return (\n \n \n \n
\n \n
\n \n

\n {t`The given offset will shift the alphabet by four. Meaning that:`}\n
\n {t`A turns into E`}\n
\n {t`B turns into F`}\n
\n {t`... and so on.`}\n
\n {t`This cipher would convert`} ZKC {t`into`} DOG\n

\n
\n \n
\n
\n );\n};\n\nexport default CaesarCipherGameIntro;\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport AgentGreen from '../../characters/AgentGreen';\n\nconst LabIntro3: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentGreen,\n text: t`Your first mission is to fix the cipher's incorrect offset to uncover the hidden messages.`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default LabIntro3;\n","import React from 'react';\nimport MissionSlide from '../../../../general/MissionSlide';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst MissionOneIntro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n \n {t`Fix the cipher's incorrect offset to uncover the meaning of the codes.`}\n \n );\n};\n\nexport default MissionOneIntro;\n","const alphabet = 'abcdefghijklmnopqrstuvwxyz';\nconst fullAlphabet = alphabet + alphabet + alphabet;\n\nexport function caesar(text: string, offset: number): string {\n offset = offset % alphabet.length;\n let cipherFinish = '';\n\n for (let i = 0; i < text.length; i++) {\n let letter = text[i];\n const upper = letter === letter.toUpperCase();\n letter = letter.toLowerCase();\n\n let index = alphabet.indexOf(letter);\n\n if (index === -1) {\n cipherFinish += letter;\n } else {\n index = index + offset + alphabet.length;\n let nextLetter = fullAlphabet[index];\n if (upper) {\n nextLetter = nextLetter.toUpperCase();\n }\n cipherFinish += nextLetter;\n }\n }\n\n if (!cipherFinish) {\n return '';\n }\n\n return cipherFinish;\n}\n","import React, { useState, useEffect } from 'react';\nimport { GameQuestionProps } from '../../core/Game';\nimport { TCaesarCipherQuestion } from './CaesarCipher';\nimport CaesarCipherWheel from './CaesarCipherWheel';\nimport { caesar } from '../../../helpers/ciphers';\nimport Content from '../../general/Content';\nimport { Button } from 'react-bootstrap';\nimport { t } from 'ttag';\n\ninterface CaesarCipherQuestionProps extends GameQuestionProps {\n question: TCaesarCipherQuestion;\n}\n\nconst CaesarCipherQuestion: React.FC = ({ question, onQuestionComplete }) => {\n const [answer, setAnswer] = useState(null);\n const [gameComplete, setGameComplete] = useState(false);\n\n useEffect(() => {\n setAnswer(null);\n setGameComplete(false);\n }, [question]);\n\n useEffect(() => {\n if (answer !== null && answer.toLowerCase() === question.answer.toLowerCase()) {\n setGameComplete(true);\n } else {\n setGameComplete(false);\n }\n }, [answer, question]);\n\n // if answer disabled, get the offset and caesar it, use as value\n\n const [wheelOffset, setWheelOffset] = useState(question.offset ?? 0);\n\n useEffect(() => {\n setWheelOffset(question.offset ?? 0);\n }, [question]);\n\n useEffect(() => {\n if (question.answerInputDisabled) {\n setAnswer(caesar(caesar(question.answer, question.answerOffset), 26 - wheelOffset) ?? '');\n }\n }, [question.answer, question.answerInputDisabled, question.answerOffset, wheelOffset]);\n\n const handleOffsetChange = (offset: number) => {\n if (offset >= 0 && offset < 26) {\n setWheelOffset(offset);\n }\n\n if (offset === -1) {\n setWheelOffset(25);\n }\n\n if (offset === 26) {\n setWheelOffset(0);\n }\n };\n\n return (\n
\n \n

{t`Enciphered Message`}

\n \n

{caesar(question.answer, 26 - question.answerOffset)}

\n
\n

{t`Deciphered Message`}

\n {!question.answerInputDisabled ? (\n setAnswer(e.target.value)}\n value={answer ?? ''}\n disabled={question.answerInputDisabled}\n autoFocus\n />\n ) : (\n \n )}\n\n {gameComplete ? (\n \n ) : null}\n
\n );\n};\n\nexport default CaesarCipherQuestion;\n","import React from 'react';\nimport { Row, Col, Button } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../assets/misc/paint-stroke.svg';\nimport { TCaesarCipherQuestion } from './CaesarCipher';\nimport ModalOverlay from '../../general/ModalOverlay';\nimport { t } from 'ttag';\n\nconst CorrectModal: React.FC<{ question: TCaesarCipherQuestion; onClose: () => void; show: boolean }> = ({\n question,\n onClose,\n show,\n}) => {\n const header = (\n \n

\n {t`CORRECT!`}\n

\n \"\"\n
\n );\n\n const footer = ;\n\n return (\n onClose()} backgroundColor=\"#00C3A5\">\n \n \n

{t`Code cracked!`}

\n \n
\n

{question.answer}

\n
\n
\n \n
\n
\n );\n};\n\nexport default CorrectModal;\n","import React, { useContext, useState } from 'react';\nimport sfx from '../../../services/sounds';\nimport { GameProps, GameQuestion, useGameLogic } from '../../core/Game';\nimport { VolumeContext } from '../../misc/volume-context';\nimport CaesarCipherQuestion from './CaesarCipherQuestion';\nimport CorrectModal from './CorrectModal';\n\nexport type TCaesarCipherQuestion = GameQuestion & {\n answer: string;\n answerOffset: number;\n answerInputDisabled?: boolean;\n offsetInputDisabled?: boolean;\n offset: number;\n};\n\nconst CaesarCipher: React.FC> = ({ gameData, onGameComplete }) => {\n const [show, setShow] = useState(false);\n const { volume } = useContext(VolumeContext);\n\n const handleGameComplete = () => {\n setShow(true);\n onGameComplete();\n };\n\n const handleNextQuestion = () => {\n setShow(false);\n };\n\n const [question, nextQuestion] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextQuestion,\n );\n\n const handleModalClose = () => {\n setShow(false);\n setTimeout(nextQuestion, 0);\n };\n\n const handleQuestionComplete = () => {\n setShow(true);\n if (volume) sfx.success.play();\n };\n\n if (question === null) {\n return null;\n }\n\n return (\n \n \n \n \n );\n};\n\nexport default CaesarCipher;\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport CaesarCipher, { TCaesarCipherQuestion } from '../../../../interactive/caesarcipher/CaesarCipher';\n\nconst CaesarCipherGameOffset: React.FC = ({ defaultHeader, nextSlide }) => {\n const gameData: TCaesarCipherQuestion[] = [\n {\n answer: t`ATTACK TOMORROW`,\n answerOffset: 4,\n answerInputDisabled: true,\n offsetInputDisabled: false,\n offset: 0,\n },\n {\n answer: t`INVADE LONDON`,\n answerOffset: 8,\n answerInputDisabled: true,\n offsetInputDisabled: false,\n offset: 0,\n },\n {\n answer: t`READY THE SHIPS`,\n answerOffset: 14,\n answerInputDisabled: true,\n offsetInputDisabled: false,\n offset: 0,\n },\n ];\n\n const header = (\n

\n {t`Code Cracking:`} {t`Fix the offset to crack the code!`}\n

\n );\n\n return (\n \n \n \n );\n};\n\nexport default CaesarCipherGameOffset;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentGreen from '../../characters/AgentGreen';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { CodeCrackingData } from '../..';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../../../assets/misc/paint-stroke.svg';\nimport ModalOverlay from '../../../../general/ModalOverlay';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport logic from '../../../../../assets/icons/icon_logic.svg';\nimport { t } from 'ttag';\n\nconst OffsetOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: AgentGreen,\n text: t`Nice work on cracking those codes. You have now seen how the cipher works, it takes in one message, offsets the letters by a certain number and then outputs the result.`,\n buttonText: t`Next`,\n buttonAction: () => setShow(true),\n },\n ];\n const modalHeader = (\n \n

{t`LEARNING COVERED`}

\n \"\"\n \n );\n\n return (\n \n \n nextSlide()}>{t`Next`}}\n >\n \n \n \n \n

{t`LOGIC`}

\n {t`You worked your way through the different offsets to output the message correctly`}

\n
\n \n
\n \n
\n );\n};\n\nexport default OffsetOutro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentGreen from '../../characters/AgentGreen';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { CodeCrackingData } from '../..';\nimport { t } from 'ttag';\n\nconst OffsetOutro2: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentGreen,\n text: t`For your next mission you will have to use this new cipher to crack codes. Only this time, I will give you the correct offset and you need to decipher the message yourself.`,\n buttonText: t`Let's Go!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default OffsetOutro2;\n","import React from 'react';\nimport MissionSlide from '../../../../general/MissionSlide';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst MissionTwoIntro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n \n {t`Decipher the codes using the Caesar cipher.`}\n \n );\n};\n\nexport default MissionTwoIntro;\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport CaesarCipher, { TCaesarCipherQuestion } from '../../../../interactive/caesarcipher/CaesarCipher';\n\nconst CaesarCipherGame: React.FC = ({ defaultHeader, nextSlide }) => {\n const gameData: TCaesarCipherQuestion[] = [\n {\n answer: t`READY THE PLANES`,\n answerOffset: 1,\n offsetInputDisabled: true,\n offset: 1,\n },\n {\n answer: t`START AT NOON`,\n answerOffset: 3,\n offsetInputDisabled: true,\n offset: 3,\n },\n {\n answer: t`GOOD LUCK SOLDIERS`,\n answerOffset: 10,\n offsetInputDisabled: true,\n offset: 10,\n },\n ];\n\n const header = (\n

\n {t`Code Cracking:`} {t`Decipher the code using the cipher wheel!`}\n

\n );\n\n return (\n \n \n \n );\n};\n\nexport default CaesarCipherGame;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentGreen from '../../characters/AgentGreen';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { CodeCrackingData } from '../..';\nimport { t } from 'ttag';\n\nconst LabOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentGreen,\n text: t`Well done Agent ${data.name}! You have cracked all of the lines of the code and now we know the full meaning of the enemy message! We need to send it to the Prime Minister now!`,\n buttonText: t`Good idea!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default LabOutro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport Intel from '../../components/Intel';\nimport { t } from 'ttag';\n\nconst CodeIntel: React.FC = ({ defaultHeader, nextSlide }) => {\n const next = (\n \n );\n\n return (\n \n \n

{t`DECIPHERED MESSAGE`}

\n
    \n
  • \n {t`ATTACK TOMORROW`}.\n
    \n {t`INVADE LONDON`}.\n
    \n {t`READY THE SHIPS`}.\n
    \n {t`READY THE PLANES`}.\n
    \n {t`START AT NOON`}.\n
    \n {t`GOOD LUCK SOLDIERS`}.\n
  • \n
\n

{t`MESSAGE FROM HQ`}

\n

\n {t`PRIME MINISTER, THE ENEMY PLANS TO ATTACK TOMORROW AT NOON. ATTACHED IS THE DECIPHERED\n MESSAGE WE HAVE INTERCEPTED. READY THE AIR FORCE AND PREPARE TO DEFEND TOMORROW MORNING.`}\n

\n
\n
\n );\n};\n\nexport default CodeIntel;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentGreen from '../../characters/AgentGreen';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { CodeCrackingData } from '../..';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport ModalOverlay from '../../../../general/ModalOverlay';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../../../assets/misc/paint-stroke.svg';\nimport algorithms from '../../../../../assets/icons/icon_algorithms.svg';\nimport { t } from 'ttag';\n\nconst LabOutro2: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: AgentGreen,\n text: t`That intelligence may have saved countless lives Agent ${data.name}. Congratulations on cracking that code so fast, it may have been just in time!`,\n buttonText: t`Woohoo!`,\n buttonAction: () => setShow(true),\n },\n ];\n\n const modalHeader = (\n \n

{t`LEARNING COVERED`}

\n \"\"\n \n );\n\n return (\n \n \n\n nextSlide()}>{t`Next`}}\n >\n \n \n \n \n

{t`ALGORITHMS`}

\n {t`You have followed the step by step process to decode the message.`}

\n
\n \n
\n \n
\n );\n};\n\nexport default LabOutro2;\n","import LabIntro from './LabIntro';\nimport LabIntro2 from './LabIntro2';\nimport CipherLabGameIntro from './CipherLabGameIntro';\nimport LabIntro3 from './LabIntro3';\nimport MissionOneIntro from './MissionOneIntro';\nimport CipherLabGameOffset from './CipherLabGameOffset';\nimport OffsetOutro from './OffsetOutro';\nimport OffsetOutro2 from './OffsetOutro2';\nimport MissionTwoIntro from './MissionTwoIntro';\nimport CipherLabGame from './CipherLabGame';\nimport LabOutro from './LabOutro';\nimport CodeIntel from './CodeIntel';\nimport LabOutro2 from './LabOutro2';\n\nexport default [\n LabIntro,\n LabIntro2,\n CipherLabGameIntro,\n LabIntro3,\n MissionOneIntro,\n CipherLabGameOffset,\n OffsetOutro,\n OffsetOutro2,\n MissionTwoIntro,\n CipherLabGame,\n LabOutro,\n CodeIntel,\n LabOutro2,\n];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport AgentGreen from '../../characters/AgentGreen';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { CodeCrackingData } from '../../index';\nimport { t } from 'ttag';\n\nconst GoodbyeMessage: React.FC> = ({ nextSlide, defaultHeader, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue = [\n {\n character: AgentGreen,\n text: t`Until next time Agent ${data.name}, there’s always space at Code Cracking HQ for you!`,\n buttonText: t`Thanks Agent!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default GoodbyeMessage;\n","import GoodbyeMessage from './GoodbyeMessage';\nimport Recap from './Recap';\nimport GoodbyeMessage2 from './GoodbyeMessage2';\n\nexport default [GoodbyeMessage, Recap, GoodbyeMessage2];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport AgentGreen from '../../characters/AgentGreen';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { CodeCrackingData } from '../../index';\nimport { t } from 'ttag';\n\nconst GoodbyeMessage: React.FC> = ({ nextSlide, defaultHeader, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue = [\n {\n character: AgentGreen,\n text: t`Well done ${data.name}! Nice work with that Caesar Cipher. The Enigma Machine is a lot more complex, with over 158,962,555,217,826,360,000 combinations... It’s a challenge to solve!`,\n buttonText: t`Good Luck!`,\n },\n {\n character: AgentGreen,\n text: t`Now for a little debrief of all you have learnt today. You really have achieved a lot in so little time!`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default GoodbyeMessage;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Content from '../../../../general/Content';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\n\nconst Recap: React.FC = ({ nextSlide, defaultHeader }) => {\n const footer = ;\n\n return (\n \n \n \n

{t`MISSION DEBRIEF`}

\n \n

{t`SUMMARY OF LEARNING`}

\n
    \n
  • \n {t`CIPHERS`}\n
    \n {t`You have learnt how ciphers turn information into code.`}\n
  • \n
  • \n {t`LOGIC`}\n
    \n {t`You worked your way through the different offsets to output the message correctly`}\n
  • \n
  • \n {t`ALGORITHMS`}\n
    \n {t`You have followed the step by step process to decode the message.`}\n
  • \n
\n
\n \n
\n
\n );\n};\n\nexport default Recap;\n","import { motion } from 'framer-motion';\nimport React, { useContext } from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport Reward from 'react-rewards';\nimport { t } from 'ttag';\nimport image from '../../../../assets/misc/cc_medal.svg';\nimport star from '../../../../assets/misc/cc_star.svg';\nimport sfx from '../../../../services/sounds';\nimport Slide, { ISlide } from '../../../core/Slide';\nimport Content from '../../../general/Content';\nimport { VolumeContext } from '../../../misc/volume-context';\n\nconst EndSlide: React.FC = ({ onComplete, defaultHeader }) => {\n const { volume } = useContext(VolumeContext);\n const finish = (\n \n );\n\n let animation = {\n scale: [0, 1, 1, 1, 1],\n rotate: [360, 0, -20, 20, 0],\n };\n\n let times = [0, 0.25, 0.35, 0.5, 0.7];\n\n if (volume) sfx.cheer.play();\n\n return (\n \n \n \n {/**/}\n \n (ref ? ref.rewardMe() : null)} type=\"confetti\" />\n\n {\n return ref ? setTimeout(() => ref.rewardMe(), 1000) : null;\n }}\n type=\"confetti\"\n >\n \n \n \n
\n \n

\n {t`You have completed`}\n
\n {t`Code Cracking`}!\n

\n
\n {t`Let your parent know what you’ve learnt about Code Cracking and if they know any family or friends who might also enjoy it they can share it via Facebook or Twitter`}

\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n );\n};\n\nexport default EndSlide;\n","import React from 'react';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport Slide, { ISlide } from '../../../core/Slide';\nimport caesar_top from '../../../../assets/misc/caesar_top.svg';\nimport caesar_bottom from '../../../../assets/misc/caesar_bottom.svg';\nimport Content from '../../../general/Content';\nimport { motion } from 'framer-motion';\nimport { t } from 'ttag';\nimport Cookies from 'js-cookie';\n\nconst StartSlide: React.FC = ({ nextSlide, defaultHeader }) => {\n const begin = (\n \n );\n\n let lang = Cookies.get('bfg_lang');\n\n return (\n \n \n \n
\n
\n \n \n \n

{t`Code Cracking`}

\n
\n \n

{t`WELCOME TO HQ`}

\n \n
\n
\n \n
\n
\n );\n};\n\nexport default StartSlide;\n","import React, { useContext, useEffect, useState } from 'react';\nimport { Helmet } from 'react-helmet';\nimport logo from '../../../assets/brand/logo-barefoot.svg';\nimport { filter } from '../../../helpers/filter';\nimport sfx from '../../../services/sounds';\nimport Module, { IModule } from '../../core/Module';\nimport MuteButton from '../../misc/MuteButton';\nimport { VolumeContext } from '../../misc/volume-context';\nimport intro from './units/1-intro';\nimport intel1 from './units/2-intel-1';\nimport intel2 from './units/3-intel-2';\nimport ciphers from './units/4-ciphers';\nimport cipherLab from './units/5-cipher-lab';\nimport goodbye from './units/6-goodbye';\nimport EndSlide from './units/EndSlide';\nimport StartSlide from './units/StartSlide';\n\n\n\n\nexport type CodeCrackingData = {\n name: string;\n setName: (name: string) => void;\n};\n\nexport enum CodeCrackingColors {\n dayModalBackground = '#FFFFFF',\n}\n\nconst CodeCracking: React.FC = ({ onComplete }) => {\n const [name, setName] = useState(null);\n const { volume } = useContext(VolumeContext);\n\n const slides = [StartSlide, ...intro, ...intel1, ...intel2, ...ciphers, ...cipherLab, ...goodbye, EndSlide];\n\n const barefootLogo = (\n
\n \"BT-Barefoot\"\n \n
\n );\n\n useEffect(() => {\n setName(filter.clean(name ?? ''));\n }, [name, setName]);\n\n useEffect(() => {\n let theme = sfx.themeMilitary.load().play();\n return () => {\n if (theme !== undefined) {\n sfx.themeMilitary.stop(theme);\n }\n };\n }, []);\n\n return (\n \n \n Code Cracking | Barefoot Games\n \n \n \n );\n};\n\nexport default CodeCracking;\n","import { TCharacter } from '../../../general/Character';\nimport image from '../../../../assets/characters/anita-hayley.svg';\n\nconst CoachAlbert: TCharacter = {\n characterName: 'Anita',\n characterImage: image,\n};\n\nexport default CoachAlbert;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport Character from '../../../../general/Character';\nimport CoachAlbert from '../../characters/CoachAlbert';\nimport { ColourfulKitsData } from '../../';\nimport { t } from 'ttag';\n\nconst NameInput: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const next = data.name ? (\n \n ) : null;\n\n return (\n \n \n \n \n

{t`Pick a nickname`}

\n data.setName(e.target.value)}\n />\n \n
\n
\n
\n );\n};\n\nexport default NameInput;\n","import Intro from './Intro';\nimport NameInput from './NameInput';\n\nexport default [Intro, NameInput];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport CoachAlbert from '../../characters/CoachAlbert';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst Intro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: CoachAlbert,\n text: t`Welcome to the Barefoot Sporting Academy! We are hosting a big sports competition and need to get ready.`,\n buttonText: t`Let's go!`,\n },\n {\n character: CoachAlbert,\n text: t`I am ${CoachAlbert.characterName}, I am in charge of the competition’s brand and logo. Before we get started, I will need your nickname...`,\n buttonText: t`My nickname is...`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport CoachAlbert from '../../characters/CoachAlbert';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { ColourfulKitsData } from '../..';\nimport { t } from 'ttag';\n\nconst Intro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: CoachAlbert,\n text: t`Thank you ${data.name}! It is important for us to have a logo that is easy to identify. `,\n buttonText: t`Next`,\n },\n {\n character: CoachAlbert,\n text: t`Can you help us group together similar shapes to make our logo easy to spot?`,\n buttonText: t`Yes!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport { Button, Col } from 'react-bootstrap';\nimport paint_stroke from '../../assets/misc/paint-stroke.svg';\nimport Slide from '../core/Slide';\nimport Content from './Content';\nimport { t } from 'ttag';\n\ninterface ITaskSlide {\n header: JSX.Element;\n number: number;\n backgroundColor?: string;\n onStart: () => void;\n}\n\nexport const TaskSlide: React.FC = ({ onStart, header, number, children, backgroundColor = '#361559' }) => {\n return (\n \n \n

\n {t`Task`} {number}\n

\n \"\"\n \n {children}\n \n \n \n
\n );\n};\n\nexport default TaskSlide;\n","import React from 'react';\nimport { ISlide } from '../../../../core/Slide';\nimport TaskSlide from '../../../../general/TaskSlide';\nimport { t } from 'ttag';\n\nconst ShapeGroupingIntro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n \n {t`Help Anita create a new logo by grouping shapes by their common features.`}\n \n );\n};\n\nexport default ShapeGroupingIntro;\n","import React, { useState, useEffect, useContext } from 'react';\nimport { Feature } from './ShapeGroup';\nimport sfx from '../../../services/sounds';\nimport { VolumeContext } from '../../misc/volume-context';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\n\nconst Tile: React.FC<{\n feature: Feature;\n onAnswer: (correct: boolean) => void;\n resetQuestion: boolean;\n isDisabled: boolean;\n}> = ({ feature, onAnswer, resetQuestion, isDisabled }) => {\n const [selected, setSelected] = useState(false);\n // const [tileFeature, setTileFeature] = useState(feature);\n const { volume } = useContext(VolumeContext);\n\n useEffect(() => {\n setSelected(false);\n // setTileFeature(feature);\n }, [feature]);\n\n useEffect(() => {\n console.log('Question reset');\n setSelected(false);\n }, [resetQuestion]);\n\n // let textClasses = classNames({\n // 'text-center': true,\n // 'text-success': selected && feature.correct,\n // 'text-danger': selected && !feature.correct,\n // });\n\n const handleSelected = () => {\n setSelected(true);\n onAnswer(feature.correct);\n if (feature.correct) {\n if (volume) sfx.correct.play();\n } else {\n if (volume) sfx.incorrect.play();\n }\n };\n\n return (\n \n
\n
\n {t`shape`}\n {/* TODO: make alt tags for shape images */}\n {/**/}\n
\n
\n \n );\n};\n\nconst TileStyle = styled.button`\n width: 100%;\n display: block;\n border: none;\n border-radius: 5px;\n border: solid 3px transparent;\n overflow: hidden;\n color: #ffffff;\n &:focus {\n outline: none;\n border-color: #0ab9f0;\n }\n`;\n\nexport default Tile;\n","import React, { useState, useEffect } from 'react';\nimport { Container, Row, Col } from 'react-bootstrap';\nimport Tile from './Tile';\nimport { Feature } from './ShapeGroup';\n\nimport toaster from 'toasted-notes';\nimport 'toasted-notes/src/styles.css'; // optional styles\nimport { t } from 'ttag';\n\nexport type GameTileGroup = {\n tiles: [Feature, Feature, Feature, Feature, Feature, Feature];\n onComplete: () => void;\n};\n\nconst TileGroup: React.FC = ({ tiles, onComplete }) => {\n const [targetCorrect, setTargetCorrect] = useState(0);\n const [answersCorrect, setAnswersCorrect] = useState(0);\n\n const [questionTiles, setQuestionTiles] = useState(tiles);\n const [resetQuestion, setResetQuestion] = useState(false);\n\n const [disabled, setDisabled] = useState(false);\n\n useEffect(() => {\n setQuestionTiles(tiles);\n }, [tiles]);\n\n useEffect(() => {\n let correctAnswers = 0;\n for (let i = 0; i < tiles.length; ++i) {\n if (tiles[i].correct === true) {\n correctAnswers++;\n }\n }\n\n setAnswersCorrect(0);\n setTargetCorrect(correctAnswers);\n }, [tiles]);\n\n useEffect(() => {\n if (answersCorrect > 0 && answersCorrect === targetCorrect) {\n // QUESTION COMPLETE\n setAnswersCorrect(0);\n onComplete();\n }\n }, [answersCorrect, onComplete, targetCorrect]);\n\n const onAnswer = (correct: boolean) => {\n if (correct === false) {\n // RESET QUESTION? OnIncorrect\n // maybe pass the question with the onanswer so we have the hint\n toaster.notify(t`Oh no! That was incorrect.`, {\n duration: 2000,\n position: 'bottom',\n });\n setDisabled(true);\n\n setTimeout(() => {\n setResetQuestion(!resetQuestion);\n setAnswersCorrect(0);\n setDisabled(false);\n }, 1000);\n } else {\n setAnswersCorrect(answersCorrect + 1);\n }\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default TileGroup;\n","import React from 'react';\nimport { ShapeGroupQuestion } from './ShapeGroup';\nimport ModalOverlay from '../../general/ModalOverlay';\nimport { Row, Col, Button } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\n\nconst CorrectModal: React.FC<{ question: ShapeGroupQuestion; onClose: () => void; show: boolean }> = ({\n question,\n onClose,\n show,\n}) => {\n const header = (\n \n \n

\n {t`CORRECT!`}\n

\n \"\"\n \n
\n );\n\n const footer = ;\n\n return (\n onClose()} backgroundColor=\"#00C3A5\">\n \n \n
\n

{question.answer}

\n {question.answers\n .filter((answer) => answer.correct)\n .map((answer) => (\n
\n \n
\n ))}\n
\n \n
\n
\n );\n};\n\nexport default CorrectModal;\n","import React, { useState, useContext } from 'react';\nimport TileGroup from './TileGroup';\nimport CorrectModal from './CorrectModal';\nimport sfx from '../../../services/sounds';\nimport { VolumeContext } from '../../misc/volume-context';\nimport { useGameLogic, GameProps } from '../../core/Game';\n\nexport type Feature = {\n image: string;\n correct: boolean;\n};\n\nexport type ShapeGroupQuestion = {\n question: string;\n answer: string;\n answers: [Feature, Feature, Feature, Feature, Feature, Feature];\n};\n\nconst ShapeGroup: React.FC> = ({ gameData, onGameComplete }) => {\n const [show, setShow] = useState(false);\n\n const handleGameComplete = () => {\n setShow(true);\n onGameComplete();\n };\n\n const handleNextQuestion = () => {\n setShow(false);\n };\n\n const [question, nextQuestion] = useGameLogic(gameData, handleGameComplete, handleNextQuestion);\n\n const { volume } = useContext(VolumeContext);\n\n const handleModalClose = () => {\n setShow(false);\n setTimeout(nextQuestion, 0);\n };\n\n const handleQuestionComplete = () => {\n setShow(true);\n if (volume) sfx.success.play();\n };\n\n if (question === null) {\n return null;\n }\n\n return (\n \n \n\n
\n

{question.question}

\n
\n \n
\n );\n};\n\nexport default ShapeGroup;\n","import React from 'react';\nimport { t } from 'ttag';\nimport circle_green from '../../../../../assets/games/shapes/0-green.svg';\nimport circle_red from '../../../../../assets/games/shapes/0-red.svg';\nimport triangle_green from '../../../../../assets/games/shapes/3-green.svg';\nimport triangle_yellow from '../../../../../assets/games/shapes/3-yellow.svg';\nimport square_blue from '../../../../../assets/games/shapes/4-blue.svg';\nimport square_green from '../../../../../assets/games/shapes/4-green.svg';\nimport square_red from '../../../../../assets/games/shapes/4-red.svg';\nimport pent_red from '../../../../../assets/games/shapes/5-red.svg';\nimport pent_yellow from '../../../../../assets/games/shapes/5-yellow.svg';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport ShapeGroup, { ShapeGroupQuestion } from '../../../../interactive/shapegroup/ShapeGroup';\n\nconst AtrributesGame: React.FC = ({ nextSlide, defaultHeader }) => {\n const gameData: ShapeGroupQuestion[] = [\n {\n question: t`Select all the shapes with 4 sides`,\n answer: t`You just grouped the shapes by one of their features: number of sides`,\n answers: [\n {\n image: circle_red,\n correct: false,\n },\n {\n image: square_red,\n correct: true,\n },\n {\n image: triangle_green,\n correct: false,\n },\n {\n image: square_green,\n correct: true,\n },\n {\n image: square_blue,\n correct: true,\n },\n {\n image: pent_yellow,\n correct: false,\n },\n ],\n },\n {\n question: t`Select the shapes that are triangles`,\n answer: t`You just grouped the shapes by one of their features: name`,\n answers: [\n {\n image: circle_green,\n correct: false,\n },\n {\n image: triangle_yellow,\n correct: true,\n },\n {\n image: square_green,\n correct: false,\n },\n {\n image: square_blue,\n correct: false,\n },\n {\n image: pent_red,\n correct: false,\n },\n {\n image: triangle_green,\n correct: true,\n },\n ],\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default AtrributesGame;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport CoachAlbert from '../../characters/CoachAlbert';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { ColourfulKitsData } from '../..';\nimport WordDiscovery from '../../../../general/WordDiscovery';\nimport { t } from 'ttag';\n\nconst ShapeGroupingOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: CoachAlbert,\n text: t`Excellent ${data.name}. You just grouped the shapes by their attributes.`,\n buttonText: t`Next`,\n buttonAction: () => setShow(true),\n },\n ];\n\n return (\n \n \n \n \n );\n};\n\nexport default ShapeGroupingOutro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport CoachAlbert from '../../characters/CoachAlbert';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst AttributesQuizIntro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: CoachAlbert,\n text: t`An attribute is a feature of something. In the first task I gave you, you were actually grouping the shapes by their attributes such as colour and number of sides.`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default AttributesQuizIntro;\n","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Content from '../../../../general/Content';\nimport MultipleChoice, { TMultiChoiceQuestion } from '../../../../interactive/quiz/multi-choice/MultiChoice';\n\nconst AttributesQuiz: React.FC = ({ defaultHeader, nextSlide, gotoSlide, currentIndex }) => {\n const gameData: TMultiChoiceQuestion[] = [\n {\n question: t`What is an attribute?`,\n answers: [\n { text: t`It is the difference in size between two objects.`, correct: false },\n { text: t`It shows how many objects there are.`, correct: false },\n { text: t`It is a feature of something.`, correct: true },\n ],\n },\n ];\n\n return (\n \n \n \n \n gotoSlide(currentIndex - 2)}\n >\n \n \n \n \n );\n};\n\nexport default AttributesQuiz;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport CoachAlbert from '../../characters/CoachAlbert';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { ColourfulKitsData } from '../..';\nimport { t } from 'ttag';\n\nconst AttributesQuizIntro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: CoachAlbert,\n text: t`Well done ${data.name}! You now know what attributes are, they are going to be very useful for planning the next competition.`,\n buttonText: t`Next`,\n },\n {\n character: CoachAlbert,\n text: t`We would like some more ideas for the competition logo. Are you able to group some more shapes by their common attributes?`,\n buttonText: t`Yes!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default AttributesQuizIntro;\n","import React from 'react';\nimport TaskSlide from '../../../../general/TaskSlide';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst AtrributesGame2Intro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n \n {t`Group more shapes for the logo by their attributes. Look for patterns to help group them quickly!`}\n \n );\n};\n\nexport default AtrributesGame2Intro;\n","import React from 'react';\nimport { t } from 'ttag';\nimport circle_green from '../../../../../assets/games/shapes/0-green.svg';\nimport circle_red from '../../../../../assets/games/shapes/0-red.svg';\nimport triangle_green from '../../../../../assets/games/shapes/3-green.svg';\nimport triangle_yellow from '../../../../../assets/games/shapes/3-yellow.svg';\nimport square_blue from '../../../../../assets/games/shapes/4-blue.svg';\nimport square_green from '../../../../../assets/games/shapes/4-green.svg';\nimport square_red from '../../../../../assets/games/shapes/4-red.svg';\nimport pent_blue from '../../../../../assets/games/shapes/5-blue.svg';\nimport pent_red from '../../../../../assets/games/shapes/5-red.svg';\nimport pent_yellow from '../../../../../assets/games/shapes/5-yellow.svg';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport ShapeGroup, { ShapeGroupQuestion } from '../../../../interactive/shapegroup/ShapeGroup';\n\nconst AtrributesGame2: React.FC = ({ nextSlide, defaultHeader }) => {\n const gameData: ShapeGroupQuestion[] = [\n {\n question: t`Select all the shapes with the colour yellow`,\n answer: t`You just grouped the shapes by one of their attributes: colour`,\n answers: [\n {\n image: circle_green,\n correct: false,\n },\n {\n image: triangle_yellow,\n correct: true,\n },\n {\n image: triangle_green,\n correct: false,\n },\n {\n image: square_blue,\n correct: false,\n },\n {\n image: pent_yellow,\n correct: true,\n },\n {\n image: circle_red,\n correct: false,\n },\n ],\n },\n {\n question: t`Select all the shapes with 5 sides`,\n answer: t`You just grouped the shapes by one of their attributes: number of sides`,\n answers: [\n {\n image: square_red,\n correct: false,\n },\n {\n image: pent_blue,\n correct: true,\n },\n {\n image: pent_yellow,\n correct: true,\n },\n {\n image: triangle_green,\n correct: false,\n },\n {\n image: pent_red,\n correct: true,\n },\n {\n image: square_green,\n correct: false,\n },\n ],\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default AtrributesGame2;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport CoachAlbert from '../../characters/CoachAlbert';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { Content } from '../../../../general/Content';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport logos from '../../../../../assets/misc/logo_ideas.svg';\nimport logos_cy from '../../../../../assets/misc/logo_ideas-welsh.svg';\nimport { ColourfulKitsData } from '../..';\nimport paint_stroke from '../../../../../assets/misc/paint-stroke.svg';\nimport ModalOverlay from '../../../../general/ModalOverlay';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport { t } from 'ttag';\nimport Cookies from 'js-cookie';\n\nconst AttributesGame2Outro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: CoachAlbert,\n text: t`That was speedy ${data.name}! Let's have a look at the logo ideas you have come up with.`,\n buttonText: t`Next`,\n buttonAction: () => setShow(true),\n },\n ];\n const modalHeader = (\n \n

\n \n {t`LOGOS FINISHED`}\n

\n \"\"\n
\n );\n\n let lang = Cookies.get('bfg_lang');\n\n return (\n \n \n nextSlide()}>{t`Next`}}\n backgroundColor={'#6126A0'}\n >\n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default AttributesGame2Outro;\n","import React from 'react';\nimport ModalOverlay from './ModalOverlay';\nimport { motion } from 'framer-motion';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport paint_stroke from '../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\n\ninterface ISkillModal {\n show: boolean;\n onClose: () => void;\n skillName: string;\n skillImage: string;\n skillDescription: string;\n}\n\nconst SkillModal: React.FC = ({ onClose, show, skillName, skillImage, skillDescription }) => {\n const modalHeader = (\n \n

\n {t`LEARNING COVERED`}\n

\n \"\"\n \n );\n\n return (\n {t`Next`}}\n backgroundColor=\"#00A0D6\"\n >\n \n \n \n \"\"\n

{skillName}

\n
{skillDescription}
\n
\n \n
\n \n );\n};\n\nexport default SkillModal;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport CoachAlbert from '../../characters/CoachAlbert';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport pattern from '../../../../../assets/icons/icon_pattern.svg';\nimport { ColourfulKitsData } from '../..';\nimport SkillModal from '../../../../general/SkillModal';\nimport { t } from 'ttag';\n\nconst AttributesGame2Outro2: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: CoachAlbert,\n text: t`They look great ${data.name}! Well done, we now have four cracking logos to choose from!`,\n buttonText: t`Woohoo!`,\n buttonAction: () => setShow(true),\n },\n ];\n return (\n \n \n \n \n );\n};\n\nexport default AttributesGame2Outro2;\n","import Intro from './Intro';\nimport ShapeGroupingIntro from './ShapeGroupingIntro';\nimport AttributesGame from './AttributesGame';\nimport ShapeGroupingOutro from './ShapeGroupingOutro';\nimport AttributesQuizIntro from './AttributesQuizIntro';\nimport AttributesQuiz from './AttributesQuiz';\nimport AttributesQuizOutro from './AttributesQuizOutro';\nimport AttributesGame2Intro from './AttributesGame2Intro';\nimport AttributesGame2 from './AttributesGame2';\nimport AttributesGame2Outro from './AttributesGame2Outro';\nimport AttributesGame2Outro2 from './AttributesGame2Outro2';\n\nexport default [\n Intro,\n ShapeGroupingIntro,\n AttributesGame,\n ShapeGroupingOutro,\n\n AttributesQuizIntro,\n AttributesQuiz,\n AttributesQuizOutro,\n\n AttributesGame2Intro,\n AttributesGame2,\n AttributesGame2Outro,\n AttributesGame2Outro2,\n];\n","import { TCharacter } from '../../../general/Character';\nimport image from '../../../../assets/characters/patrick.svg';\n\nconst Patrick: TCharacter = {\n characterName: 'Patrick',\n characterImage: image,\n};\n\nexport default Patrick;\n","import React from 'react';\nimport { t } from 'ttag';\nimport { ColourfulKitsData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Patrick from '../../characters/Patrick';\n\nconst Intro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Patrick,\n text: t`Hi ${data.name}, thanks for helping Anita with that. I am Patrick and I look after all of the flags for this competition. We have quite a few!`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Patrick from '../../characters/Patrick';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst Intro2: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Patrick,\n text: t`Looking after so many flags is difficult so I like to put them into different groups. Let's see if you can figure out how I organise them!`,\n buttonText: t`Sure thing!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro2;\n","import React from 'react';\nimport TaskSlide from '../../../../general/TaskSlide';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst LogicGameIntro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n \n {t`Select the attributes that Patrick uses to group his flags.`}\n \n );\n};\n\nexport default LogicGameIntro;\n","import React, { useState, useEffect, useContext } from 'react';\nimport { Feature } from './GroupFlags';\nimport sfx from '../../../services/sounds';\nimport { VolumeContext } from '../../misc/volume-context';\nimport styled from 'styled-components';\n\nconst Tile: React.FC<{\n feature: Feature;\n onAnswer: (correct: boolean) => void;\n resetQuestion: boolean;\n isDisabled: boolean;\n}> = ({ feature, onAnswer, resetQuestion, isDisabled }) => {\n const [selected, setSelected] = useState(false);\n // const [tileFeature, setTileFeature] = useState(feature);\n const { volume } = useContext(VolumeContext);\n\n useEffect(() => {\n setSelected(false);\n // setTileFeature(feature);\n }, [feature]);\n\n useEffect(() => {\n console.log('Question reset');\n setSelected(false);\n }, [resetQuestion]);\n\n // let textClasses = classNames({\n // 'text-center': true,\n // 'text-success': selected && feature.correct,\n // 'text-danger': selected && !feature.correct,\n // });\n\n const handleSelected = () => {\n setSelected(true);\n onAnswer(feature.correct);\n if (feature.correct) {\n if (volume) sfx.correct.play();\n } else {\n if (volume) sfx.incorrect.play();\n }\n };\n\n return (\n \n
\n
\n {feature.name}\n {/**/}\n
\n
\n \n );\n};\nconst TileStyle = styled.button`\n width: 100%;\n display: block;\n border: none;\n border-radius: 5px;\n border: solid 3px transparent;\n overflow: hidden;\n color: #ffffff;\n &:focus {\n outline: none;\n border-color: #0ab9f0;\n }\n h5 {\n word-break: break-word;\n font-size: 18px;\n }\n @media screen and (max-width: 425px) {\n h5 {\n font-size: 4vw;\n }\n }\n`;\nexport default Tile;\n","import React, { useState, useEffect } from 'react';\nimport { Container, Row, Col } from 'react-bootstrap';\nimport Tile from './Tile';\nimport { Feature } from './GroupFlags';\n\nimport toaster from 'toasted-notes';\nimport 'toasted-notes/src/styles.css'; // optional styles\nimport { t } from 'ttag';\n\nexport type GameTileGroup = {\n tiles: [Feature, Feature, Feature, Feature, Feature, Feature];\n onComplete: () => void;\n};\n\nconst TileGroup: React.FC = ({ tiles, onComplete }) => {\n const [targetCorrect, setTargetCorrect] = useState(0);\n const [answersCorrect, setAnswersCorrect] = useState(0);\n\n const [questionTiles, setQuestionTiles] = useState(tiles);\n const [resetQuestion, setResetQuestion] = useState(false);\n\n const [disabled, setDisabled] = useState(false);\n\n useEffect(() => {\n setQuestionTiles(tiles);\n }, [tiles]);\n\n useEffect(() => {\n let correctAnswers = 0;\n for (let i = 0; i < tiles.length; ++i) {\n if (tiles[i].correct === true) {\n correctAnswers++;\n }\n }\n\n setAnswersCorrect(0);\n setTargetCorrect(correctAnswers);\n }, [tiles]);\n\n useEffect(() => {\n if (answersCorrect > 0 && answersCorrect === targetCorrect) {\n // QUESTION COMPLETE\n setAnswersCorrect(0);\n onComplete();\n }\n }, [answersCorrect, onComplete, targetCorrect]);\n\n const onAnswer = (correct: boolean) => {\n if (correct === false) {\n // RESET QUESTION? OnIncorrect\n // maybe pass the question with the onanswer so we have the hint\n toaster.notify(t`Oh no! That was incorrect.`, {\n duration: 2000,\n position: 'bottom',\n });\n setDisabled(true);\n\n setTimeout(() => {\n setResetQuestion(!resetQuestion);\n setAnswersCorrect(0);\n setDisabled(false);\n }, 1000);\n } else {\n setAnswersCorrect(answersCorrect + 1);\n }\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default TileGroup;\n","import React from 'react';\nimport { FeatureMatchQuestion } from './GroupFlags';\nimport ModalOverlay from '../../general/ModalOverlay';\nimport { Row, Col, Button } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\n\nconst CorrectModal: React.FC<{ question: FeatureMatchQuestion; onClose: () => void; show: boolean }> = ({\n question,\n onClose,\n show,\n}) => {\n const header = (\n \n \n

\n {t`CORRECT!`}\n

\n \"\"\n \n
\n );\n\n const footer = ;\n\n return (\n onClose()} backgroundColor=\"#00C3A5\">\n \n \n
\n \n
\n
\n

{question.subject.answer}

\n {question.features\n .filter((feature) => feature.correct)\n .map((feature) => (\n
\n
{feature.name}
\n
\n ))}\n
\n \n
\n
\n );\n};\n\nexport default CorrectModal;\n","import React, { useState, useContext } from 'react';\nimport TileGroup from './TileGroup';\nimport CorrectModal from './CorrectModal';\nimport sfx from '../../../services/sounds';\nimport { VolumeContext } from '../../misc/volume-context';\nimport { useGameLogic, GameProps } from '../../core/Game';\nimport { t } from 'ttag';\n\nexport type Subject = {\n name: string;\n image: string;\n answer: string;\n};\n\nexport type Feature = {\n name: string;\n correct: boolean;\n reason: string;\n};\n\nexport type FeatureMatchQuestion = {\n subject: Subject;\n features: [Feature, Feature, Feature, Feature, Feature, Feature];\n};\n\nconst FeatureMatch: React.FC> = ({ gameData, onGameComplete }) => {\n const [show, setShow] = useState(false);\n\n const handleGameComplete = () => {\n setShow(true);\n onGameComplete();\n };\n\n const handleNextQuestion = () => {\n setShow(false);\n };\n\n const [question, nextQuestion] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextQuestion,\n );\n\n const { volume } = useContext(VolumeContext);\n\n const handleModalClose = () => {\n setShow(false);\n setTimeout(nextQuestion, 0);\n };\n\n const handleQuestionComplete = () => {\n setShow(true);\n if (volume) sfx.success.play();\n };\n\n if (question === null) {\n return null;\n }\n\n return (\n \n \n\n
\n
\n \"\"\n

{t`Which attribute was likely used to group these flags?`}

\n
\n

{question.subject.name}

\n
\n \n
\n );\n};\n\nexport default FeatureMatch;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Patrick from '../../characters/Patrick';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport logic from '../../../../../assets/icons/icon_logic.svg';\nimport { ColourfulKitsData } from '../..';\nimport SkillModal from '../../../../general/SkillModal';\nimport { t } from 'ttag';\n\nconst LogicGameOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: Patrick,\n text: t`${data.name}, you got them all right! You used logical reasoning to figure how I’d grouped my flags. Wow you’re clever!`,\n buttonText: t`Thanks!`,\n buttonAction: () => setShow(true),\n },\n ];\n\n return (\n \n \n \n \n );\n};\n\nexport default LogicGameOutro;\n","import Intro from './Intro';\nimport Intro2 from './Intro2';\nimport LogicGameIntro from './LogicGameIntro';\nimport LogicGame from './LogicGame';\nimport LogicGameOutro from './LogicGameOutro';\n\nexport default [Intro, Intro2, LogicGameIntro, LogicGame, LogicGameOutro];\n","import React from 'react';\nimport { t } from 'ttag';\nimport animals from '../../../../../assets/games/flags/groups/animals.svg';\nimport circles from '../../../../../assets/games/flags/groups/circles.svg';\nimport crosses from '../../../../../assets/games/flags/groups/crosses.svg';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport FeatureMatch, { FeatureMatchQuestion } from '../../../../interactive/groupflags/GroupFlags';\n\nconst LogicGame: React.FC = ({ nextSlide, defaultHeader }) => {\n const gameData: FeatureMatchQuestion[] = [\n {\n subject: {\n name: ``,\n image: circles,\n answer: t`These flags were grouped as they all had at least one circle in their design.`,\n },\n features: [\n { name: t`creature`, correct: false, reason: `` },\n { name: t`colour`, correct: false, reason: `` },\n { name: t`stripes`, correct: false, reason: `` },\n { name: t`circles`, correct: true, reason: `` },\n { name: t`crosses`, correct: false, reason: `` },\n { name: t`stars`, correct: false, reason: `` },\n ],\n },\n {\n subject: {\n name: ``,\n image: crosses,\n answer: t`These flags were grouped as they all had at least one cross in their design.`,\n },\n features: [\n { name: t`creature`, correct: false, reason: `` },\n { name: t`colour`, correct: false, reason: `` },\n { name: t`squares`, correct: false, reason: `` },\n { name: t`circles`, correct: false, reason: `` },\n { name: t`crosses`, correct: true, reason: `` },\n { name: t`stars`, correct: false, reason: `` },\n ],\n },\n {\n subject: {\n name: ``,\n image: animals,\n answer: t`These flags were grouped as they all had at least one creature in their design.`,\n },\n features: [\n { name: t`creature`, correct: true, reason: `` },\n { name: t`colour`, correct: false, reason: `` },\n { name: t`stripes`, correct: false, reason: `` },\n { name: t`circles`, correct: false, reason: `` },\n { name: t`crosses`, correct: false, reason: `` },\n { name: t`stars`, correct: false, reason: `` },\n ],\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default LogicGame;\n","import { TCharacter } from '../../../general/Character';\nimport image from '../../../../assets/characters/kitty-chan.svg';\n\nconst Kitty: TCharacter = {\n characterName: 'Amber',\n characterImage: image,\n};\n\nexport default Kitty;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Kitty from '../../characters/Kitty';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst Intro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Kitty,\n text: t`Hi, I'm Amber. I am in charge of the athletes’ kits here. Patrick tells me you did a great job using logical reasoning to help organise his flags!`,\n buttonText: t`Hello Amber!`,\n },\n {\n character: Kitty,\n text: t`The teams’ kits have got in a bit of a muddle. Somehow the British athletes have a green kit and our cyclists are wearing swimming trunks... Can you help?`,\n buttonText: t`Of course!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport TaskSlide from '../../../../general/TaskSlide';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst DebugGameIntro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n \n {t`Help Amber spot the mistakes in the athletes kit.`}\n \n );\n};\n\nexport default DebugGameIntro;\n","import React from 'react';\nimport ModalOverlay from '../../general/ModalOverlay';\nimport { Row, Col, Button } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../assets/misc/paint-stroke.svg';\nimport { TKitMistakeQuestion } from './KitMistake';\nimport { t } from 'ttag';\n\nconst CorrectModal: React.FC<{ question: TKitMistakeQuestion; onClose: () => void; show: boolean }> = ({\n question,\n onClose,\n show,\n}) => {\n const header = (\n \n

\n {t`CORRECT!`}\n

\n \"\"\n
\n );\n\n const footer = ;\n\n return (\n onClose()} backgroundColor=\"#00C3A5\">\n \n \n

{question.country}

\n

{t`You spotted the mistake in the athlete's kit!`}

\n \n
\n
\n );\n};\n\nexport default CorrectModal;\n","import React, { useContext, useEffect, useState } from 'react';\nimport sfx from '../../../services/sounds';\nimport { VolumeContext } from '../../misc/volume-context';\nimport { TKitMistakeAnswer } from './KitMistake';\n\nconst KitBox: React.FC<{\n kit: TKitMistakeAnswer;\n onAnswer: (correct: boolean) => void;\n resetQuestion: boolean;\n isDisabled: boolean;\n}> = ({ kit, onAnswer, resetQuestion, isDisabled }) => {\n const [selected, setSelected] = useState(false);\n const { volume } = useContext(VolumeContext);\n\n useEffect(() => {\n setSelected(false);\n }, [kit, resetQuestion]);\n\n const handleSelected = () => {\n setSelected(true);\n if (kit.correct) {\n if (volume) sfx.correct.play();\n } else {\n if (volume) sfx.incorrect.play();\n }\n onAnswer(kit.correct);\n };\n\n return (\n \n {kit.type}\n \n );\n};\n\nexport default KitBox;\n","import React, { useEffect, useState } from 'react';\nimport toaster from 'toasted-notes';\nimport { t } from 'ttag';\nimport KitBox from './KitBox';\nimport { TKitMistakeAnswer } from './KitMistake';\n\nexport type GameKitGroup = {\n kits: [TKitMistakeAnswer, TKitMistakeAnswer, TKitMistakeAnswer, TKitMistakeAnswer];\n onComplete: () => void;\n};\n\nconst KitBoxGroup: React.FC = ({ kits, onComplete }) => {\n const [targetCorrect, setTargetCorrect] = useState(0);\n const [answersCorrect, setAnswersCorrect] = useState(0);\n const [resetQuestion, setResetQuestion] = useState(false);\n const [disabled, setDisabled] = useState(false);\n\n useEffect(() => {\n let correctAnswers = 0;\n for (let i = 0; i < kits.length; ++i) {\n if (kits[i].correct === true) {\n correctAnswers++;\n }\n }\n\n setAnswersCorrect(0);\n setTargetCorrect(correctAnswers);\n }, [kits]);\n\n useEffect(() => {\n if (answersCorrect > 0 && answersCorrect === targetCorrect) {\n // QUESTION COMPLETE\n setDisabled(true);\n\n setTimeout(() => {\n setAnswersCorrect(0);\n setDisabled(false);\n onComplete();\n }, 1400);\n }\n }, [answersCorrect, onComplete, targetCorrect]);\n\n const onAnswer = (correct: boolean) => {\n if (correct === false) {\n // RESET QUESTION? OnIncorrect\n // maybe pass the question with the onanswer so we have the hint\n toaster.notify(\n t`That was incorrect. Click on the items which do not match the athlete's country or activity`,\n {\n duration: 2000,\n position: 'bottom',\n },\n );\n setDisabled(true);\n setTimeout(() => {\n setResetQuestion(!resetQuestion);\n setAnswersCorrect(0);\n setDisabled(false);\n }, 2000);\n } else {\n setAnswersCorrect(answersCorrect + 1);\n }\n };\n\n return (\n
\n \n \n \n {/* */}\n
\n );\n};\n\nexport default KitBoxGroup;\n","import React, { useContext, useState } from 'react';\nimport { c, t } from 'ttag';\nimport sfx from '../../../services/sounds';\nimport { GameProps, GameQuestion, useGameLogic } from '../../core/Game';\nimport { VolumeContext } from '../../misc/volume-context';\nimport CorrectModal from '../kitmistake/CorrectModal';\nimport KitBoxGroup from './KitBoxGroup';\n\nexport type TKitMistakeQuestion = GameQuestion & {\n athlete: string;\n sport: string;\n country: string;\n flag: string;\n answers: [TKitMistakeAnswer, TKitMistakeAnswer, TKitMistakeAnswer, TKitMistakeAnswer];\n};\n\nexport type TKitMistakeAnswer = {\n type: string;\n image: string;\n correct: boolean;\n};\n\nconst KitMistake: React.FC> = ({ gameData, index = 0, onGameComplete }) => {\n const [show, setShow] = useState(false);\n const { volume } = useContext(VolumeContext);\n\n const handleGameComplete = () => {\n setShow(true);\n onGameComplete();\n };\n\n const handleNextQuestion = () => {\n setShow(false);\n };\n\n const [question, nextQuestion] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextQuestion,\n index,\n );\n\n const handleModalClose = () => {\n setShow(false);\n setTimeout(nextQuestion, 0);\n };\n\n const handleQuestionComplete = () => {\n if (volume) sfx.success.play();\n setShow(true);\n };\n\n if (!question) {\n return

{t`Question not found`}

;\n }\n\n return (\n
\n \n

\n {t`Spot the mistake in the kit`}\n
\n {c('Spot the mistake in the kit...').t`and select it below`}\n

\n
\n
\n {question.country\n
\n
\n
\n

{t`Country`}

\n

{question.country}

\n
\n
\n

{t`Sport`}

\n

{question.sport}

\n
\n
\n
\n
\n {t`athlete`}\n \n
\n
\n );\n};\n\nexport default KitMistake;\n","import React from 'react';\nimport { t } from 'ttag';\nimport boy from '../../../../../assets/games/athletes/athlete_boy.svg';\nimport girl from '../../../../../assets/games/athletes/athlete_girl.svg';\nimport spain from '../../../../../assets/games/flags/flags/spain.svg';\nimport uk from '../../../../../assets/games/flags/flags/uk.svg';\nimport bottom_gb from '../../../../../assets/games/kits/bottom_gb.svg';\nimport bottom_jamaica from '../../../../../assets/games/kits/bottom_jamaica.svg';\nimport head_kayak from '../../../../../assets/games/kits/head_kayak.svg';\nimport head_blank from '../../../../../assets/games/kits/head_blank.svg';\nimport top_gb from '../../../../../assets/games/kits/top_gb.svg';\nimport top_spain from '../../../../../assets/games/kits/top_spain.svg';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport KitMistake, { TKitMistakeQuestion } from '../../../../interactive/kitmistake/KitMistake';\n\nconst DebugGame: React.FC = ({ nextSlide, defaultHeader }) => {\n const gameData: TKitMistakeQuestion[] = [\n {\n athlete: boy,\n sport: t`Tennis`,\n country: t`Spain`,\n flag: spain,\n answers: [\n { type: `head`, image: head_blank, correct: false },\n { type: `top`, image: top_spain, correct: false },\n { type: `bottom`, image: bottom_jamaica, correct: true },\n { type: `equipment`, image: ``, correct: false },\n ],\n },\n {\n athlete: girl,\n sport: t`Football`,\n country: t`Great Britain`,\n flag: uk,\n answers: [\n { type: `head`, image: head_kayak, correct: true },\n { type: `top`, image: top_gb, correct: false },\n { type: `bottom`, image: bottom_gb, correct: false },\n { type: `equipment`, image: ``, correct: false },\n ],\n },\n ];\n\n const header = (\n

\n {t`Task 4:`} {t`Find the mistakes in the athletes' kits`}\n

\n );\n\n return (\n \n nextSlide()} />\n \n );\n};\n\nexport default DebugGame;\n","import React from 'react';\nimport { t } from 'ttag';\nimport { ColourfulKitsData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Kitty from '../../characters/Kitty';\n\nconst DebugGameOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Kitty,\n text: t`Thanks ${data.name}. Now we know what is wrong with the kits, we need to fix them! So can you help with this one last thing?`,\n buttonText: t`Let's Go!`,\n buttonAction: nextSlide,\n },\n ];\n return (\n \n \n \n );\n};\n\nexport default DebugGameOutro;\n","import React from 'react';\nimport TaskSlide from '../../../../general/TaskSlide';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst DebugGame2Intro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n \n {t`Fix the mistakes you found in the athletes' kits.`}\n \n );\n};\n\nexport default DebugGame2Intro;\n","import { motion } from 'framer-motion';\nimport React from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport paint_stroke from '../../../assets/misc/paint-stroke.svg';\nimport ModalOverlay from '../../general/ModalOverlay';\nimport { TKitMatchItem, TKitMatchItemType, TKitMatchQuestion } from './KitMatch';\n\nconst CorrectModal: React.FC<{ question: TKitMatchQuestion; onClose: () => void; show: boolean }> = ({\n question,\n onClose,\n show,\n}) => {\n const header = (\n \n

\n {t`CORRECT!`}\n

\n \"\"\n
\n );\n\n const footer = ;\n\n const getCorrectItemByType = (id: string, type: TKitMatchItemType): TKitMatchItem | undefined => {\n return question.items.find((item) => {\n return item.tid === id && item.type === type;\n });\n };\n\n return (\n onClose()} backgroundColor=\"#00C3A5\">\n \n \n
\n \n
\n
\n \n
\n
\n \n
\n
\n \n
\n
\n
\n

{t`You figured out the correct kit!`}

\n \n
\n
\n );\n};\n\nexport default CorrectModal;\n","import React, { useEffect, useState } from 'react';\nimport { Button } from 'react-bootstrap';\nimport { filterKitItems, TKitMatchItem, TKitMatchItemType } from './KitMatch';\n\nconst KitSelector: React.FC<{\n items: TKitMatchItem[];\n targetId: string;\n targetType: TKitMatchItemType;\n onAnswer: (targetType: TKitMatchItemType, correct: boolean) => void;\n isDisabled: boolean;\n}> = ({ items, targetId, targetType, onAnswer, isDisabled }) => {\n const [kitIndex, setKitIndex] = useState(0);\n const [kitItem, setKitItem] = useState();\n\n useEffect(() => {\n setKitItem(null);\n setKitIndex(0);\n }, [items]);\n\n useEffect(() => {\n if (typeof items[kitIndex] !== undefined) {\n console.log('setting kit', kitIndex);\n let filteredItems = filterKitItems(items, targetType);\n\n setKitItem(filteredItems[kitIndex]);\n }\n }, [kitIndex, items]);\n\n useEffect(() => {\n if (kitItem && kitItem.tid === targetId && kitItem.type === targetType) {\n // console.log('Correct bro', kitItem)\n onAnswer(targetType, true);\n } else {\n onAnswer(targetType, false);\n }\n }, [kitItem]);\n\n const handleNextItem = () => {\n if (isDisabled) {\n return;\n }\n if (filterKitItems(items, targetType).length - 1 > kitIndex) {\n setKitIndex(kitIndex + 1);\n } else {\n setKitIndex(0);\n }\n };\n\n const handlePreviousItem = () => {\n if (isDisabled) {\n return;\n }\n if (kitIndex - 1 < 0) {\n setKitIndex(filterKitItems(items, targetType).length - 1);\n } else {\n setKitIndex(kitIndex - 1);\n }\n };\n\n return (\n
\n \n {kitItem && kitItem?.image ? (\n \n ) : null}\n \n
\n );\n};\n\nexport default KitSelector;\n","import React, { useContext, useEffect, useState } from 'react';\nimport { Button } from 'react-bootstrap';\nimport toaster from 'toasted-notes';\nimport { t } from 'ttag';\nimport sfx from '../../../services/sounds';\nimport { GameProps, GameQuestion, useGameLogic } from '../../core/Game';\nimport { VolumeContext } from '../../misc/volume-context';\nimport CorrectModal from './CorrectModal';\nimport KitSelector from './KitSelector';\n\nexport type TKitMatchQuestion = GameQuestion & {\n id: string;\n name: string;\n image: string;\n athlete: string;\n sport: string;\n items: TKitMatchItem[];\n};\n\nexport type TKitMatchItem = {\n tid: string;\n type: TKitMatchItemType;\n image: string;\n};\n\ntype KitAnswerObject = {\n head: boolean;\n top: boolean;\n bottom: boolean;\n equipment: boolean;\n};\n\nexport type TKitMatchItemType = 'head' | 'top' | 'bottom' | 'equipment';\n\nconst KitMatch: React.FC> = ({ gameData, index = 0, onGameComplete }) => {\n const [show, setShow] = useState(false);\n const [disabled, setDisabled] = useState(false);\n\n const handleGameComplete = () => {\n setShow(true);\n onGameComplete();\n };\n\n const handleNextQuestion = () => {\n setDisabled(false);\n setShow(false);\n };\n\n const [question, nextQuestion] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextQuestion,\n index,\n );\n\n const [answers, setAnswers] = useState({\n head: false,\n top: false,\n bottom: false,\n equipment: false,\n });\n const handleAnswer = (type: TKitMatchItemType, correct: boolean) => {\n answers[type] = correct;\n setAnswers((prevState: any) => {\n return { ...prevState, ...answers };\n });\n };\n\n const { volume } = useContext(VolumeContext);\n\n useEffect(() => {\n // if (answers.head && answers.top && answers.bottom && answers.equipment) {\n // setAnswers({head: false, top: false, bottom:false, equipment: false})\n // if (volume) sfx.success.play() ;\n // setDisabled(true);\n // setTimeout(() => {\n // setShow(true);\n // setDisabled(false);\n // }, 2500)\n // }\n }, [answers]);\n\n const handleModalClose = () => {\n setShow(false);\n setTimeout(nextQuestion, 0);\n };\n\n const handleAnswerSubmit = () => {\n if (answers.head && answers.top && answers.bottom && answers.equipment) {\n setAnswers({ head: false, top: false, bottom: false, equipment: false });\n if (volume) sfx.success.play();\n setShow(true);\n } else {\n if (volume) sfx.incorrect.play();\n toaster.notify(t`Oh no! That was incorrect. Try another combination!`, {\n duration: 2000,\n position: 'bottom',\n });\n }\n };\n\n if (!question) {\n return

{t`Question not found`}

;\n }\n\n return (\n \n \n

\n {t`Fix the athlete's kit using the arrows,`}\n
\n {t`then press`} {t`Submit`}\n

\n
\n
\n {t`Country's\n {/* TODO: Describe flags in alt */}\n
\n
\n
\n

{t`Country`}

\n

{question.name}

\n
\n
\n

{t`Sport`}

\n

{question.sport}

\n
\n
\n
\n
\n \n
\n \n \n \n \n
\n
\n
\n \n
\n
\n );\n};\n\nexport default KitMatch;\n\nexport const filterKitItems = (items: Array, type: TKitMatchItemType) => {\n return items.filter((item) => item.type === type);\n};\n","import React from 'react';\nimport { t } from 'ttag';\nimport boy from '../../../../../assets/games/athletes/athlete_boy.svg';\nimport girl from '../../../../../assets/games/athletes/athlete_girl.svg';\nimport girl_2 from '../../../../../assets/games/athletes/athlete_girl_2.svg';\nimport jamaica from '../../../../../assets/games/flags/flags/jamaica.svg';\nimport japan from '../../../../../assets/games/flags/flags/japan.svg';\nimport uk from '../../../../../assets/games/flags/flags/uk.svg';\nimport bottom_gb from '../../../../../assets/games/kits/bottom_gb.svg';\nimport bottom_jamaica from '../../../../../assets/games/kits/bottom_jamaica.svg';\nimport bottom_japan from '../../../../../assets/games/kits/bottom_japan.svg';\nimport bottom_spain from '../../../../../assets/games/kits/bottom_spain.svg';\nimport equip_bike from '../../../../../assets/games/kits/equip_bike.svg';\nimport equip_kayak from '../../../../../assets/games/kits/equip_kayak.svg';\nimport head_helmet from '../../../../../assets/games/kits/head_helmet.svg';\nimport head_kayak from '../../../../../assets/games/kits/head_kayak.svg';\nimport top_gb from '../../../../../assets/games/kits/top_gb.svg';\nimport top_jamaica from '../../../../../assets/games/kits/top_jamaica.svg';\nimport top_japan from '../../../../../assets/games/kits/top_japan.svg';\nimport top_spain from '../../../../../assets/games/kits/top_spain.svg';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport KitMatch, { TKitMatchQuestion } from '../../../../interactive/kitmatch/KitMatch';\n\nconst DebugGame2: React.FC = ({ nextSlide, defaultHeader }) => {\n const gameData: TKitMatchQuestion[] = [\n {\n id: 'JAM',\n name: t`Jamaica`,\n image: jamaica,\n athlete: boy,\n sport: t`Running`,\n items: [\n { tid: 'JAP', type: 'head', image: head_helmet },\n { tid: 'SPA', type: 'top', image: top_spain },\n { tid: 'JAP', type: 'top', image: top_japan },\n { tid: 'JAM', type: 'head', image: '' },\n { tid: 'GBR', type: 'bottom', image: bottom_gb },\n { tid: 'GBR', type: 'top', image: top_gb },\n { tid: 'GBR', type: 'equipment', image: equip_bike },\n { tid: 'JAP', type: 'bottom', image: bottom_japan },\n { tid: 'SPA', type: 'bottom', image: bottom_spain },\n { tid: 'SPA', type: 'head', image: head_kayak },\n { tid: 'SPA', type: 'equipment', image: equip_kayak },\n { tid: 'JAM', type: 'top', image: top_jamaica },\n { tid: 'JAM', type: 'bottom', image: bottom_jamaica },\n { tid: 'JAM', type: 'equipment', image: '' },\n ],\n },\n {\n id: 'JPN',\n name: t`Japan`,\n image: japan,\n athlete: girl_2,\n sport: t`Cycling`,\n items: [\n { tid: 'GBR', type: 'top', image: top_gb },\n { tid: 'JPN', type: 'top', image: top_japan },\n { tid: 'JPN', type: 'bottom', image: bottom_japan },\n { tid: 'GBR', type: 'equipment', image: equip_kayak },\n { tid: 'JPN', type: 'head', image: head_helmet },\n { tid: 'SPA', type: 'top', image: top_spain },\n { tid: 'SPA', type: 'bottom', image: bottom_spain },\n { tid: 'SPA', type: 'equipment', image: '' },\n { tid: 'JPN', type: 'equipment', image: equip_bike },\n { tid: 'JAM', type: 'head', image: '' },\n { tid: 'GBR', type: 'bottom', image: bottom_gb },\n { tid: 'JAM', type: 'top', image: top_jamaica },\n { tid: 'JAM', type: 'bottom', image: bottom_jamaica },\n ],\n },\n {\n id: 'GBR',\n name: t`Great Britain`,\n image: uk,\n athlete: girl,\n sport: t`Kayaking`,\n items: [\n { tid: 'JPN', type: 'top', image: top_japan },\n { tid: 'JPN', type: 'bottom', image: bottom_japan },\n { tid: 'JPN', type: 'head', image: head_helmet },\n { tid: 'SPA', type: 'top', image: top_spain },\n { tid: 'SPA', type: 'bottom', image: bottom_spain },\n { tid: 'SPA', type: 'equipment', image: '' },\n { tid: 'JPN', type: 'equipment', image: equip_bike },\n { tid: 'JAM', type: 'bottom', image: bottom_jamaica },\n { tid: 'JAM', type: 'top', image: top_jamaica },\n { tid: 'JAM', type: 'head', image: '' },\n { tid: 'GBR', type: 'bottom', image: bottom_gb },\n { tid: 'GBR', type: 'top', image: top_gb },\n { tid: 'GBR', type: 'head', image: head_kayak },\n { tid: 'GBR', type: 'equipment', image: equip_kayak },\n ],\n },\n ];\n\n const header = (\n

\n {t`Task 5:`} {t`Fix the mistakes in the athletes' kits`}\n

\n );\n\n return (\n \n \n \n );\n};\n\nexport default DebugGame2;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Kitty from '../../characters/Kitty';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport debugging from '../../../../../assets/icons/icon_debugging.svg';\nimport { ColourfulKitsData } from '../..';\nimport SkillModal from '../../../../general/SkillModal';\nimport { t } from 'ttag';\n\nconst DebugGame2Outro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: Kitty,\n text: t`Wonderful work ${data.name}! You helped me find the mistakes in the kit and then fixed them, this is an example of debugging!`,\n buttonText: t`Next`,\n buttonAction: () => setShow(true),\n },\n ];\n return (\n \n \n \n \n );\n};\n\nexport default DebugGame2Outro;\n","import Intro from './Intro';\nimport DebugGameIntro from './DebugGameIntro';\nimport DebugGame from './DebugGame';\nimport DebugGameOutro from './DebugGameOutro';\nimport DebugGame2Intro from './DebugGame2Intro';\nimport DebugGame2 from './DebugGame2';\nimport DebugGame2Outro from './DebugGame2Outro';\n\nexport default [Intro, DebugGameIntro, DebugGame, DebugGameOutro, DebugGame2Intro, DebugGame2, DebugGame2Outro];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Kitty from '../../characters/Kitty';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst Goodbye: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Kitty,\n text: t`You really have learnt a lot in such a short amount of time! You are always welcome here and I hope to see you at the competition!`,\n buttonText: t`Bye Amber`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Goodbye;\n","import Intro from './Intro';\nimport Recap from './Recap';\nimport Goodbye from './Goodbye';\n\nexport default [Intro, Recap, Goodbye];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Kitty from '../../characters/Kitty';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst Intro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Kitty,\n text: t`Fantastic work! You helped all of us here prepare for the competition and I’m sure it’s going to be a great success thanks to you!`,\n buttonText: t`Yippee!`,\n },\n {\n character: Kitty,\n text: t`Let’s have a look at what you have learnt along the way.`,\n buttonText: t`Show Me`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport debugging from '../../../../../assets/icons/icon_debugging.svg';\nimport logic from '../../../../../assets/icons/icon_logic.svg';\nimport pattern from '../../../../../assets/icons/icon_pattern.svg';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Content from '../../../../general/Content';\n\nconst Recap: React.FC = ({ nextSlide, defaultHeader }) => {\n const footer = ;\n\n return (\n \n \n \n

{t`You have achieved the following:`}

\n \n \n \n \"\"\n \n \n

{t`Pattern`}

\n

{t`You grouped objects by their attributes.`}

\n \n
\n
\n \n \n \n \"\"\n \n \n

{t`Logic`}

\n

{t`You worked out which features were used to group objects.`}

\n \n
\n
\n \n \n \n \"\"\n \n \n

{t`Debugging`}

\n

{t`You spotted mistakes and fixed them!`}

\n \n
\n
\n \n
\n
\n );\n};\n\nexport default Recap;\n","import { motion } from 'framer-motion';\nimport React, { useContext } from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport Reward from 'react-rewards';\nimport { t } from 'ttag';\nimport equip_kayak from '../../../../assets/games/kits/equip_kayak.svg';\nimport head_helmet from '../../../../assets/games/kits/head_helmet.svg';\nimport top_gb from '../../../../assets/games/kits/top_gb.svg';\nimport top_jamaica from '../../../../assets/games/kits/top_jamaica.svg';\nimport ck_home from '../../../../assets/misc/ck-home.svg';\nimport sfx from '../../../../services/sounds';\nimport Slide, { ISlide } from '../../../core/Slide';\nimport Content from '../../../general/Content';\nimport { VolumeContext } from '../../../misc/volume-context';\n\nconst EndPage: React.FC = ({ onComplete, defaultHeader }) => {\n const { volume } = useContext(VolumeContext);\n const footer = ;\n\n if (volume) sfx.cheer.play();\n let animation = {\n scale: [0, 1, 1, 1, 1, 1, 1, 0],\n rotate: [0, 0, 20, -20, 20, -20, 0, 0],\n };\n let times = [0, 0.1, 0.25, 0.4, 0.55, 0.7, 0.8, 0.9];\n return (\n \n \n \n {/**/}\n \n (ref ? ref.rewardMe() : null)} type=\"confetti\" />\n\n {\n return ref ? setInterval(() => ref.rewardMe(), 5000) : null;\n }}\n type=\"confetti\"\n >\n \n \n \n \n \"\"\n

\n {t`You have completed`}\n
\n {t`Colourful Kits`}!\n

\n
\n {t`Let your parent know what you’ve learnt about in Colourful Kits and if they know any family or friends who might also enjoy it they can share it via Facebook or Twitter`}

\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n );\n};\n\nexport default EndPage;\n","import { motion } from 'framer-motion';\nimport React from 'react';\nimport { Button } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport equip_bike from '../../../../assets/games/kits/equip_bike.svg';\nimport equip_kayak from '../../../../assets/games/kits/equip_kayak.svg';\nimport head_helmet from '../../../../assets/games/kits/head_helmet.svg';\nimport top_gb from '../../../../assets/games/kits/top_gb.svg';\nimport top_jamaica from '../../../../assets/games/kits/top_jamaica.svg';\nimport ck_home from '../../../../assets/misc/ck-home.svg';\nimport Slide, { ISlide } from '../../../core/Slide';\n\nconst StartSlide: React.FC = ({ nextSlide, defaultHeader }) => {\n const begin = (\n \n );\n let animation = {\n scale: [0, 1, 1, 1, 1, 1, 1, 0],\n rotate: [0, 0, 20, -20, 20, -20, 0, 0],\n };\n let times = [0, 0.1, 0.25, 0.4, 0.55, 0.7, 0.8, 0.9];\n return (\n \n
\n \n \n \n \n \n \n \"\"\n

{t`Colourful Kits`}

\n \n
\n
\n );\n};\n\nexport default StartSlide;\n","import React, { useContext, useEffect, useState } from 'react';\nimport logo from '../../../assets/brand/logo-barefoot.svg';\nimport { filter } from '../../../helpers/filter';\nimport sfx from '../../../services/sounds';\nimport Module, { IModule } from '../../core/Module';\nimport MuteButton from '../../misc/MuteButton';\nimport { VolumeContext } from '../../misc/volume-context';\nimport intro from './units/1-intro';\nimport pattern from './units/2-pattern';\nimport logic from './units/3-logic';\nimport debugging from './units/4-debugging';\nimport recap from './units/5-recap';\nimport EndSlide from './units/EndSlide';\nimport StartSlide from './units/StartSlide';\n\n\n\n\nexport type ColourfulKitsData = {\n name: string;\n setName: (name: string) => void;\n};\n\nconst ColourfulKits: React.FC = ({ onComplete }) => {\n const [name, setName] = useState(null);\n const { volume } = useContext(VolumeContext);\n\n const slides = [StartSlide, ...intro, ...pattern, ...logic, ...debugging, ...recap, EndSlide];\n\n const barefootLogo = (\n
\n \"BT-Barefoot\"\n \n\n
\n );\n\n useEffect(() => {\n setName(filter.clean(name ?? ''));\n }, [name, setName]);\n\n useEffect(() => {\n let theme = sfx.themeAthletics.load().play();\n return () => {\n if (theme !== undefined) {\n sfx.themeAthletics.stop(theme);\n }\n };\n }, []);\n\n return (\n \n \n \n );\n};\n\nexport default ColourfulKits;\n","import React, { useContext, useEffect } from 'react';\nimport { Button } from 'react-bootstrap';\nimport { VolumeContext } from './volume-context';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faMusic, faVolumeMute, faVolumeUp } from '@fortawesome/free-solid-svg-icons';\nimport { Howler } from 'howler';\nimport { saveVolume } from '../../services/volume';\nimport styled from 'styled-components';\n\nimport musicSlash from '../../../src/assets/misc/music-slash.png';\n\nexport type ContextualMuteProps = {\n context?: Howl | undefined\n zIndex?: number\n}\n\nconst ContextualMute: React.FC = ({context = Howler, zIndex=4}) => {\n const { volume, setVolume, musicMuted, setMusicMuted } = useContext(VolumeContext);\n const icon = faMusic;\n\n useEffect(() => {\n if (volume === 0) {\n context.mute(true);\n saveVolume(0);\n } else {\n if (volume && volume > 0) {\n saveVolume(-1);\n }\n context.mute(false);\n }\n }, [volume]);\n\n if (setVolume === undefined) {\n return null;\n }\n\n return (\n \n {\n if (setMusicMuted) {\n volume ? setMusicMuted(true) :setMusicMuted(false);\n\n }\n context.mute(volume ? true : false);\n return volume ? setVolume(0) : setVolume(0.5);\n }}\n >\n { volume ? : }\n\n \n \n );\n};\n\nconst Slash = styled.img`\n height: 14px;\n width: 16px;\n margin-top: -2px;\n margin-left: -1px;\n @media (min-width: 992px){\n height: 15px;\n width: 17px;\n }\n`;\n\n\n\n\n\nexport default ContextualMute;\n","import React, { useContext, useEffect } from 'react';\nimport { Button } from 'react-bootstrap';\nimport { VolumeContext } from '../misc/volume-context';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faMicrophoneSlash, faMicrophone } from '@fortawesome/free-solid-svg-icons';\nimport VoiceoverContext from './voiceover-context';\n\nconst VoiceoverMuteButton: React.FC = () => {\n const { voiceoverMuted, setVoiceoverMuted } = useContext(VolumeContext);\n const { voiceover } = useContext(VoiceoverContext);\n const icon = (!!voiceoverMuted) ? faMicrophoneSlash : faMicrophone;//|| !volume\n \n useEffect(() => {\n if (voiceover) {\n voiceover.mute(!!voiceoverMuted );// || !volume ? true : false\n }\n\n }, [voiceoverMuted, voiceover]);\n\n if (voiceover === undefined || setVoiceoverMuted === undefined ) {\n return null;\n }\n\n return (\n \n {\n return voiceoverMuted ? setVoiceoverMuted(false) : setVoiceoverMuted(true);\n }}\n //disabled={!volume}\n >\n \n \n \n );\n};\nexport default VoiceoverMuteButton;\n","const spritesheet: IHowlSoundSpriteDefinition = {\n \"turtle-1-1\": [0, 10000],\n \"turtle-1-2\": [10565, 7435],\n \"turtle-nickname\": [19000, 2000],\n \"turtle-avatar\": [21500, 1500],\n \"turtle-2-1\": [23500, 8710],\n \"turtle-2-2\": [32880, 9600],\n \"turtle-lives\": [43000, 15480],\n \"turtle-island\": [59480, 2520],\n \"turtle-3-1\": [63000, 6300],\n \"turtle-3-2\": [70000, 8120],\n \"turtle-personal-1\": [79000, 4640],\n \"turtle-personal-2\": [84600, 5940],\n \"turtle-4\": [92000, 4000],\n \"turtle-question-1\": [97000, 12000],\n \"turtle-question-1-incorrect\": [110000, 6000],\n \"turtle-question-1-correct\": [118000, 5200],\n \"turtle-5-1\": [124000, 10500],\n \"turtle-5-2\": [135500, 10030],\n \"turtle-5-3\": [147000, 10700],\n \"turtle-word-discovered\": [159000, 11860],\n \"turtle-6-1\": [172000, 5250],\n \"turtle-6-2\": [179000, 9000],\n\n \"whale-1-1\": [190000, 7400],\n \"whale-2-1\": [198500, 7500],\n\n \"game-howto-title\": [208000, 1000],\n \"phished-words\": [210000, 1500],\n \"dodged-words\": [213000, 2500],\n\n \"whale-howto-1\": [217000, 3500],\n \"whale-howto-2\": [221500, 3500],\n \"whale-howto-3\": [225500, 3100],\n \"whale-howto-4\": [230000, 3000],\n \"whale-ready\": [234000, 8000],\n \"whale-char-1\": [244000, 12000],\n \"whale-char-2\": [258000, 11500],\n \"whale-char-3\": [271000, 9800],\n \"whale-char-4\": [282000, 7300],\n \"whale-char-5\": [291000, 11000],\n \"whale-3-1\": [1078200, 7720],\n \"whale-4-1\": [1045480, 7120],\n\n\n \"octo-1-1\": [311000, 8000],\n \"octo-help-1\": [320000, 5000],\n \"octo-help-2\": [326000, 1500],\n \"octo-email-1\": [329000, 10500],\n \"octo-help-3\": [341000, 4000],\n \"octo-char-1\": [347000, 6330],\n \"octo-char-2\": [355000, 14000],\n \"octo-email-2\": [371000, 10550],\n \"octo-email-3\": [383000, 9000],\n \"octo-incorrect-toast\": [392000, 4800],\n \"octo-char-3\": [399000, 10500],\n \"octo-email-4\": [411000, 8500],\n \"octo-incorrect-pop\": [421000, 1000],\n \"octo-phished-desc\": [423000, 4700],\n \"octo-phisherman-1\": [429000, 6700],\n \"octo-question-1\": [437000, 14000],\n \"octo-question-1-correct\": [453000, 8000],\n\n\n\n \"fish-1-1\": [462000, 8000],\n \"fish-follow\": [471000, 1500],\n \"fish-2-1\": [473500, 6000],\n \"fish-2-2\": [481000, 5000],\n \"fish-messages\": [487500, 1800],\n \"fish-chat-1\": [492000, 17800],\n \"fish-chat-1-answers\": [511000, 5000],\n \"fish-chat-a-1\": [511000, 1500],\n \"fish-chat-a-2\": [512500, 1200],\n \"fish-chat-a-3\": [513800, 1500],\n \"fish-chat-2\": [517000, 2500],\n \"fish-cyber-click\": [521000, 6300],\n \"fish-cyber-block\": [529000, 6500],\n \"fish-dodged-desc\": [537000, 5000],\n \"fish-phisherman-1\": [544000, 8000],\n \"fish-question-1\": [554000, 12300],\n \"fish-question-1-correct\": [568000, 8000],\n\n \"fish-phished-desc\": [578000, 6000],\n \"fish-phisherman-2\": [585500, 7500],\n\n \"pufferfish-1-1\": [595000, 6700],\n \"pufferfish-1-2\": [603000, 4000],\n \"pufferfish-1-3\": [608500, 6100],\n \"pufferfish-phone\": [616000, 2400],\n \"pufferfish-phone-1\": [1067800, 1840],\n \"pufferfish-phone-1-answers\": [622000, 3002],\n \"pufferfish-phone-a1-1\": [619500, 1000], // Old pufferfish-phone-1\n \"pufferfish-phone-a1-2\": [623500, 1500],\n \"pufferfish-phone-a2-1\": [639805, 2000],\n \"pufferfish-phone-a2-2\": [643000, 3000],\n \"pufferfish-phone-a3-1\": [647600, 2000],\n \"pufferfish-phone-a3-2\": [650400, 2000],\n \"pufferfish-phone-2\": [627000, 10700],\n \"pufferfish-phone-2-answers\": [640000, 6000],\n \"pufferfish-phone-3\": [1056040, 8640],\n \"pufferfish-phished-desc\": [655000, 4400],\n \"pufferfish-dodged-desc\": [661000, 4000],\n \"pufferfish-phisherman-1\": [666000, 8000],\n \"pufferfish-phisherman-2\": [675500, 4800],\n \"pufferfish-phisherman-3\": [682000, 7200],\n \"pufferfish-phisherman-4\": [692000, 6500],\n \"pufferfish-question-1\": [700000, 9500],\n \"pufferfish-question-1-correct\": [711000, 6500],\n \"pufferfish-2-1\": [719000, 12500],\n\n\n \"endturtle-1-1\": [733000, 8000],\n\n \"endturtle-cyber-close\": [742000, 6800],\n\n \"endturtle-phished-desc\": [751000, 8000],\n \"endturtle-dodged-desc\": [761000, 7500],\n \"endturtle-phisherman-1\": [770000, 8000],\n \"endturtle-phisherman-2\": [780000, 8800],\n \"endturtle-2-1\": [790000, 7800],\n \"endturtle-2-2\": [799000, 7000],\n\n \"end-howto-title\": [807000, 1000],\n \"end-howto-1\": [809000, 3500],\n \"end-howto-2\": [814000, 3500],\n \"end-howto-3\": [819000, 3300],\n \"end-howto-4\": [823500, 3500],\n\n \"end-question-1\": [828000, 9000],\n \"end-answers-1\": [838000, 9000],\n \"end-question-2\": [849000, 8000],\n \"end-answers-2\": [859000, 10000],\n \"end-question-3\": [870000, 4000],\n \"end-answers-3\": [876000, 8000],\n \"end-question-4\": [886000, 6000],\n \"end-answers-4\": [894000, 7000],\n \"end-question-5\": [902000, 5000],\n \"end-answers-5\": [908000, 9000],\n \"end-question-6\": [918000, 6000],\n \"end-answers-6\": [926000, 11000],\n \"end-question-7\": [939000, 7500],\n \"end-answers-7\": [948000, 9000],\n\n \"end-phisherman-1\": [959000, 8000],\n \"endturtle-3-1\": [969000, 8000],\n \"end-awarding-1\": [978000, 1500],\n \"end-phisherman-2\": [980500, 2100],\n \"end-awarded-1\": [984000, 1800],\n \"end-award-1\": [987000, 1500],\n \"end-award-2\": [990000, 1500],\n \"end-award-3\": [993000, 1500],\n\n \"end-finish-1\": [996000, 2000],\n \"end-finish-2\": [1000000, 6700],\n \"end-finish-3\": [1090000, 7000],\n\n \"island-title\": [1008000, 1500],\n \"island-msg-hall\": [1011000, 2000],\n \"island-msg-start\": [1014000, 1750],\n \"island-msg-character\": [1017000, 2000],\n\n \"question-incorrect\": [1021000, 5500],\n\n \"sound-1\": [1028000, 1000],\n \"sound-2\": [1030000, 1500],\n \"sound-3\": [1033000, 1000],\n \"sound-4\": [1035000, 1000],\n \"sound-5\": [1037000, 1000],\n \"sound-6\": [1039000, 1000],\n \"sound-7\": [1041000, 1000],\n \"sound-8\": [1043000, 1000],\n\n \"end-a-1-a\": [838000, 3000],\n \"end-a-1-b\": [841000, 3000],\n \"end-a-1-c\": [844000, 3000],\n \"end-a-2-a\": [859000, 5000],\n \"end-a-2-b\": [864000, 2000],\n \"end-a-2-c\": [866000, 3000],\n \"end-a-3-a\": [876000, 2000],\n \"end-a-3-b\": [878000, 3500],\n \"end-a-3-c\": [881500, 3000],\n \"end-a-4-a\": [894000, 2000],\n \"end-a-4-b\": [896500, 2000],\n \"end-a-4-c\": [898500, 2000],\n \"end-a-5-a\": [907000, 2500],\n \"end-a-5-b\": [909500, 3700],\n \"end-a-5-c\": [913000, 4000],\n \"end-a-6-a\": [925800, 4200],\n \"end-a-6-b\": [930000, 4000],\n \"end-a-6-c\": [934000, 3000],\n \"end-a-7-a\": [947000, 4000],\n \"end-a-7-b\": [951000, 2500],\n \"end-a-7-c\": [953500, 3500],\n\n \"term-discovered\": [1073680, 1280],\n};\n\nexport default spritesheet;\n","const spritesheetChrome: IHowlSoundSpriteDefinition = {\n \"turtle-1-1\": [0, 10000],\n \"turtle-1-2\": [10565, 7435],\n \"turtle-nickname\": [19000, 2000],\n \"turtle-avatar\": [21005, 1995],\n \"turtle-2-1\": [23005, 9016],\n \"turtle-2-2\": [32088, 10260],\n \"turtle-lives\": [43000, 15048],\n \"turtle-island\": [59048, 2952],\n \"turtle-3-1\": [63000, 6003],\n \"turtle-3-2\": [70000, 8012],\n \"turtle-personal-1\": [78500, 5164],\n \"turtle-personal-2\": [84006, 6548],\n \"turtle-4\": [91500, 4800],\n \"turtle-question-1\": [96500, 12500],\n \"turtle-question-1-incorrect\": [110000, 6000],\n \"turtle-question-1-correct\": [117500, 6002],\n \"turtle-5-1\": [124000, 10005],\n \"turtle-5-2\": [135005, 10048],\n \"turtle-5-3\": [146500, 11000],\n \"turtle-word-discovered\": [158500, 12086],\n \"turtle-6-1\": [171500, 5500],\n \"turtle-6-2\": [178200, 10000],\n\n \"whale-1-1\": [189500, 7504],\n \"whale-2-1\": [198005, 7995],\n\n \"game-howto-title\": [208000, 1000],\n \"phished-words\": [209000, 2005],\n \"dodged-words\": [212500, 3005],\n\n \"whale-howto-1\": [216500, 3300],\n \"whale-howto-2\": [221005, 3995],\n \"whale-howto-3\": [225005, 3001],\n \"whale-howto-4\": [229500, 3000],\n \"whale-ready\": [233200, 8000],\n \"whale-char-1\": [243000, 13000],\n \"whale-char-2\": [257000, 12005],\n \"whale-char-3\": [270500, 9708],\n \"whale-char-4\": [281500, 7503],\n \"whale-char-5\": [290500, 11500],\n \"whale-3-1\": [1075500, 8000],\n \"whale-4-1\": [1043000, 7500],\n\n\n \"octo-1-1\": [310000, 9000],\n \"octo-help-1\": [319000, 5000],\n \"octo-help-2\": [325000, 2005],\n \"octo-email-1\": [328000, 11005],\n \"octo-help-3\": [341000, 4000],\n \"octo-char-1\": [346000, 7033],\n \"octo-char-2\": [354000, 15000],\n \"octo-email-2\": [370000, 11055],\n \"octo-email-3\": [382000, 9100],\n \"octo-incorrect-toast\": [392000, 4008],\n \"octo-char-3\": [398000, 11005],\n \"octo-email-4\": [410000, 9005],\n \"octo-incorrect-pop\": [421000, 1000],\n \"octo-phished-desc\": [422000, 5007],\n \"octo-phisherman-1\": [428000, 7007],\n \"octo-question-1\": [436000, 15000],\n \"octo-question-1-correct\": [451000, 10000],\n\n\n\n \"fish-1-1\": [461000, 8800],\n \"fish-follow\": [469000, 3005],\n \"fish-2-1\": [472505, 6500],\n \"fish-2-2\": [479800, 5000],\n \"fish-messages\": [486005, 2998],\n \"fish-chat-1\": [491000, 18008],\n \"fish-chat-1-answers\": [511000, 5000],\n \"fish-chat-a-1\": [510000, 1500],\n \"fish-chat-a-2\": [511500, 1200],\n \"fish-chat-a-3\": [512800, 1500],\n \"fish-chat-2\": [516000, 3005],\n \"fish-cyber-click\": [519000, 8003],\n \"fish-cyber-block\": [527500, 7005],\n \"fish-dodged-desc\": [536000, 6000],\n \"fish-phisherman-1\": [543000, 9000],\n \"fish-question-1\": [552000, 14003],\n \"fish-question-1-correct\": [566500, 9000],\n\n \"fish-phished-desc\": [576500, 7000],\n \"fish-phisherman-2\": [583505, 8500],\n\n \"pufferfish-1-1\": [593500, 6907],\n \"pufferfish-1-2\": [601500, 4000],\n \"pufferfish-1-3\": [607005, 7001],\n \"pufferfish-phone\": [614000, 4004],\n \"pufferfish-phone-1\": [1065000, 3500],\n \"pufferfish-phone-1-answers\": [622000, 3002],\n \"pufferfish-phone-a1-1\": [618005, 1000], // Old pufferfish-phone-1\n \"pufferfish-phone-a1-2\": [622500, 1500],\n \"pufferfish-phone-a2-1\": [638805, 2000],\n \"pufferfish-phone-a2-2\": [642000, 2500],\n \"pufferfish-phone-a3-1\": [646600, 2000],\n \"pufferfish-phone-a3-2\": [649400, 2000],\n \"pufferfish-phone-2\": [625000, 11507],\n \"pufferfish-phone-2-answers\": [640000, 6000],\n \"pufferfish-phone-3\": [1053500, 9000],\n \"pufferfish-phished-desc\": [653500, 5504],\n \"pufferfish-dodged-desc\": [659000, 5000],\n \"pufferfish-phisherman-1\": [665000, 8000],\n \"pufferfish-phisherman-2\": [674005, 5500],\n \"pufferfish-phisherman-3\": [680500, 7002],\n \"pufferfish-phisherman-4\": [690000, 7005],\n \"pufferfish-question-1\": [698000, 10505],\n \"pufferfish-question-1-correct\": [709000, 7005],\n \"pufferfish-2-1\": [717000, 14005],\n\n\n \"endturtle-1-1\": [731500, 8500],\n\n \"endturtle-cyber-close\": [741000, 7008],\n\n \"endturtle-phished-desc\": [749000, 9000],\n \"endturtle-dodged-desc\": [759500, 8505],\n \"endturtle-phisherman-1\": [768500, 9500],\n \"endturtle-phisherman-2\": [778000, 10008],\n \"endturtle-2-1\": [788000, 9008],\n \"endturtle-2-2\": [797000, 7000],\n\n \"end-howto-title\": [807000, 1000],\n \"end-howto-1\": [807000, 3355],\n \"end-howto-2\": [812000, 3305],\n \"end-howto-3\": [817000, 3503],\n \"end-howto-4\": [821005, 3995],\n\n \"end-question-1\": [826200, 9000],\n \"end-answers-1\": [838000, 9000],\n \"end-question-2\": [847000, 9000],\n \"end-answers-2\": [859000, 10000],\n \"end-question-3\": [868000, 6000],\n \"end-answers-3\": [876000, 8000],\n \"end-question-4\": [884000, 6000],\n \"end-answers-4\": [894000, 7000],\n \"end-question-5\": [899500, 5000],\n \"end-answers-5\": [908000, 9000],\n \"end-question-6\": [916000, 6000],\n \"end-answers-6\": [926000, 11000],\n \"end-question-7\": [937000, 7505],\n \"end-answers-7\": [948000, 9000],\n\n \"end-phisherman-1\": [957000, 8000],\n \"endturtle-3-1\": [967000, 8000],\n \"end-awarding-1\": [975000, 2705],\n \"end-phisherman-2\": [978200, 3001],\n \"end-awarded-1\": [982000, 1030],\n \"end-award-1\": [984500, 3005],\n \"end-award-2\": [987500, 3005],\n \"end-award-3\": [990000, 2005],\n\n \"end-finish-1\": [994000, 2000],\n \"end-finish-2\": [996500, 8007],\n \"end-finish-3\": [1088000, 7000],\n\n \"island-title\": [1008000, 1005],\n \"island-msg-hall\": [1008500, 2700],\n \"island-msg-start\": [1014000, 1075],\n \"island-msg-character\": [1014500, 3000],\n\n \"question-incorrect\": [1018000, 6005],\n\n \"sound-1\": [1025500, 2000],\n \"sound-2\": [1027500, 2005],\n \"sound-3\": [1030000, 2000],\n \"sound-4\": [1032500, 2000],\n \"sound-5\": [1034600, 2000],\n \"sound-6\": [1036600, 2000],\n \"sound-7\": [1038600, 2000],\n \"sound-8\": [1040600, 2000],\n\n \"end-a-1-a\": [836000, 3000],\n \"end-a-1-b\": [839000, 3000],\n \"end-a-1-c\": [842000, 3000],\n \"end-a-2-a\": [857000, 5000],\n \"end-a-2-b\": [862000, 2000],\n \"end-a-2-c\": [864000, 3000],\n \"end-a-3-a\": [874000, 2000],\n \"end-a-3-b\": [876000, 3500],\n \"end-a-3-c\": [879500, 3000],\n \"end-a-4-a\": [892000, 2000],\n \"end-a-4-b\": [894500, 2000],\n \"end-a-4-c\": [896500, 2000],\n \"end-a-5-a\": [905000, 2500],\n \"end-a-5-b\": [907500, 3700],\n \"end-a-5-c\": [911000, 4000],\n \"end-a-6-a\": [923800, 4200],\n \"end-a-6-b\": [928000, 4000],\n \"end-a-6-c\": [932000, 3000],\n \"end-a-7-a\": [945000, 4000],\n \"end-a-7-b\": [949000, 2500],\n \"end-a-7-c\": [951500, 3500],\n\n \"term-discovered\": [1071000, 2500],\n};\n\nexport default spritesheetChrome;\n","import React from 'react';\nimport styled from 'styled-components';\nimport left_bottom from '../assets/background/left-bottom.svg';\nimport right_bottom from '../assets/background/right-bottom.svg';\nimport left_top from '../assets/background/left-top.svg';\nimport right_top from '../assets/background/right-top.svg';\nimport seafloor from '../assets/background/seafloor.svg';\nimport { motion } from 'framer-motion';\nimport Particles, { MoveDirection, OutMode } from 'react-particles-js';\n\nexport const Wrapper: React.FC = ({ children }) => {\n return (\n
\n
\n \n \n \n \n \n \n \n
\n {children}\n
\n );\n};\n\nconst bubblez = {\n particles: {\n number: {\n value: 160,\n density: {\n enable: false,\n },\n },\n size: {\n value: 3,\n random: true,\n anim: {\n speed: 4,\n size_min: 0.3,\n },\n },\n line_linked: {\n enable: false,\n },\n move: {\n random: true,\n speed: 1,\n direction: MoveDirection.top,\n outMode: OutMode.out,\n },\n },\n interactivity: {\n events: {\n resize: true,\n },\n },\n};\nconst Bubbles = styled(Particles)`\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n`;\n\nconst LeftBottom = styled(motion.img)`\n bottom: -4px;\n position: absolute;\n width: 45%;\n margin-left: -3%;\n left: 0;\n @media screen and (min-width: 500px) {\n width: 30%;\n }\n`;\n\nconst RightBottom = styled(motion.img)`\n bottom: -4px;\n position: absolute;\n width: 45%;\n right: 0;\n margin-right: -3%;\n @media screen and (min-width: 500px) {\n width: 30%;\n }\n`;\nconst RightTop = styled(motion.img)`\n bottom: -4px;\n position: absolute;\n width: 45%;\n right: 0;\n margin-right: -3%;\n @media screen and (min-width: 500px) {\n width: 30%;\n }\n`;\nconst LeftTop = styled(motion.img)`\n bottom: -4px;\n position: absolute;\n width: 45%;\n left: 0;\n margin-left: -3%;\n @media screen and (min-width: 500px) {\n width: 30%;\n }\n`;\nconst SeaFloor = styled(motion.img)`\n width: 80%;\n position: absolute;\n bottom: -5px;\n left: 10%;\n`;\nconst Gradient = styled.div`\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n background: rgb(59, 9, 93);\n background: -moz-linear-gradient(0deg, rgba(59, 9, 93, 1) 0%, rgba(92, 8, 150, 1) 43%, rgba(100, 0, 170, 1) 100%);\n background: -webkit-linear-gradient(\n 0deg,\n rgba(59, 9, 93, 1) 0%,\n rgba(92, 8, 150, 1) 43%,\n rgba(100, 0, 170, 1) 100%\n );\n background: linear-gradient(0deg, rgba(59, 9, 93, 1) 0%, rgba(92, 8, 150, 1) 43%, rgba(100, 0, 170, 1) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#3b095d\",endColorstr=\"#6400aa\",GradientType=1);\n`;\n\nexport default Wrapper;\n","import React, { useState, useEffect, useContext } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport { CyberSecurityData } from '../..';\nimport styled from 'styled-components';\nimport { motion } from 'framer-motion';\nimport { t } from 'ttag';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\n\nconst CharacterSelector: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n\n const { playVoiceover } = useContext(VoiceoverContext);\n\n useEffect(() => {\n playVoiceover('turtle-avatar')\n }, [])\n\n\n let next = (\n {\n nextSlide();\n }}\n >\n { t`Select` }\n \n );\n const [selectorIndex, setSelectorIndex] = useState(0);\n\n useEffect(() => {\n data.setAvatar(data.avatars[selectorIndex]);\n }, [selectorIndex]);\n\n const nextAvatar = () => {\n if (selectorIndex > data.avatars.length - 2) {\n setSelectorIndex(0);\n } else {\n setSelectorIndex(selectorIndex + 1);\n }\n };\n\n const prevAvatar = () => {\n if (selectorIndex === 0) {\n setSelectorIndex(data.avatars.length - 1);\n } else {\n setSelectorIndex(selectorIndex - 1);\n }\n };\n\n return (\n \n

{t`Choose an Avatar`}

\n \n \n \n \n \n \n \n \n \n \n
\n );\n};\n\nconst Avatar = styled(motion.img)`\n display: block;\n margin: 0 auto;\n max-width: 300px;\n width: 100%;\n`;\nconst Selector = styled.div`\n width: 100%;\n position: relative;\n max-width: 600px;\n display: block;\n margin: 1rem auto;\n`;\n\nconst Shadow = styled.div`\n width: 200px;\n max-width: 100%;\n height: 100px;\n left: calc(50% - 100px);\n border-radius: 50%;\n position: absolute;\n background: rgba(0, 0, 0, 0.5);\n opacity: 0.4;\n -webkit-filter: blur(10px);\n -webkit-transform: scale(1, 0.2);\n z-index: 0;\n`;\n\nconst Arrow = styled(Button)`\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n z-index: 999;\n`;\n\nexport default CharacterSelector;\n","import React, { useContext, useEffect } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport heart from '../../assets/gamification/heart.png';\nimport star from '../../assets/gamification/star.png';\nimport { CyberSecurityData } from '../..';\nimport { t } from 'ttag';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\n\nconst LivesExplanation: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const startingLives = 5;\n const startingPoints = 0;\n\n const { playVoiceover } = useContext(VoiceoverContext);\n\n useEffect(() => {\n playVoiceover('turtle-lives')\n }, [])\n\n return (\n \n \n \n

{t`Be careful!`}

\n \n
\n \n

\n {t`Lives`} {t`and`} {t`Points`}{' '}\n {t`count towards your final score. Avoid getting phished and keep your details safe to avoid losing lives! Get questions right to gain points and try to avoid losing points by choosing wrong answers.`}\n

\n \n {'Heart'}\n {startingLives}\n \n {'Star'}\n {startingLives}\n {\n data.setLives(startingLives);\n setTimeout(nextSlide, 500);\n }}\n >{t`Add Lives & Points`}\n
\n
\n );\n};\n\nconst Card = styled.div`\n background-color: #ffffff;\n border-radius: 10px;\n max-width: 500px;\n padding: 1rem 2rem 3rem 2rem;\n p {margin-bottom: 5px; color: #6400aa}\n display; block;\n margin: 1rem auto;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n text-align: center;\n position:relative;\n`;\n\nconst Lives = styled.div`\n position: relative;\n display: inline-block;\n margin: 0 10px;\n span {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n font-family: 'BT Font Extra Bold';\n }\n`;\n\nexport default LivesExplanation;\n","import { TCharacter } from '../../../general/Character';\nimport image from '../assets/characters/2-turtle.svg';\nimport wanted from '../assets/characters/2-turtle-wanted.svg';\nimport { t } from 'ttag';\n\nconst Turtle: TCharacter = {\n characterName: t`Turtle`,\n characterImage: image,\n characterWidth: 100,\n characterHeight: 150,\n};\n\nexport const TurtleWanted: TCharacter = {\n characterName: t`Turtle`,\n characterImage: wanted,\n characterWidth: 120,\n characterHeight: 150,\n};\n\nexport default Turtle;\n","import React from 'react';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Turtle from '../../characters/Turtle';\n\nconst TurtleIntro2: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Turtle,\n text: t`${data.name}, you look great! As you complete challenges on our adventure you’ll earn Cyber Points so you can see how well you are doing.`,\n textSpriteName: 'turtle-2-1',\n buttonText: t`Next`,\n },\n {\n character: Turtle,\n text: t`But for every mistake you make, you’ll also lose a life. In a moment you shall be able to see how many lives you have left at the top of your screen.`,\n textSpriteName: 'turtle-2-2',\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default TurtleIntro2;\n","import CharacterSelector from './CharacterSelector';\nimport LivesExplanation from './LivesExplanation';\nimport NameInput from './NameInput';\nimport TurtleIntro from './TurtleIntro';\nimport TurtleIntro2 from './TurtleIntro2';\n\nexport default [TurtleIntro, NameInput, CharacterSelector, TurtleIntro2, LivesExplanation];\n","import React from 'react';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Turtle from '../../characters/Turtle';\n\nconst TurtleIntro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Turtle,\n text: t`Hi, I’m Turtle the new head of the Cyber Security team in our underwater village, Kelpy Deeps. Today I am here to help you learn about phishing.`,\n textSpriteName: 'turtle-1-1',\n buttonText: t`Sure!`,\n },\n {\n character: Turtle,\n text: t`Don’t know what phishing is? Don’t worry, all will become clear soon. First, I'm going to need your nickname...`,\n textSpriteName: 'turtle-1-2',\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default TurtleIntro;\n","import React, { useContext, useEffect } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport Character from '../../../../general/Character';\nimport { CyberSecurityData } from '../../';\nimport { t } from 'ttag';\nimport Turtle from '../../characters/Turtle';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\n\nconst NameInput: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const { playVoiceover } = useContext(VoiceoverContext);\n\n useEffect(() => {\n playVoiceover('turtle-nickname');\n }, [])\n\n const next = data.name ? (\n \n ) : null;\n\n return (\n \n \n \n \n

{t`What is your nickname?`}

\n data.setName(e.target.value)}\n />\n \n
\n
\n
\n );\n};\n\nexport default NameInput;\n","import React, {useContext, useEffect, useState} from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport MultipleChoice, { TMultiChoiceQuestion } from '../../../../interactive/quiz/multi-choice/MultiChoice';\nimport { t } from 'ttag';\nimport styled from 'styled-components';\nimport questioner from '../../characters/Turtle';\nimport WordDiscovery from '../../../../general/WordDiscovery'\nimport { CyberSecurityData } from '../..';\nimport toaster from 'toasted-notes';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\n\n\nconst TurtleQuestion1: React.FC> = ({defaultHeader, nextSlide, data}) => {\n const [show, setShow] = useState(false);\n const { playVoiceover, stopVoiceover } = useContext(VoiceoverContext);\n useEffect(() => {\n playVoiceover('turtle-question-1');\n }, [])\n const gameData: TMultiChoiceQuestion[] = [\n {\n question: t`What is personal information?`,\n answers: [\n { text: t`Asking a friend for information`, correct: false },\n { text: t`Personal equipment`, correct: false },\n { text: t`Information that is private and should not be shared with strangers `, correct: true },\n ],\n hint: t`Remember, personal information is data such as your name, date of birth or address.`,\n },\n ];\n\n const handleQuestionComplete = () => {\n data.addPoints(10);\n setShow(true);\n setTimeout(() => playVoiceover('term-discovered'), 400);\n setTimeout(() => playVoiceover('turtle-question-1-correct'), 2000);\n };\n\n return (\n \n {stopVoiceover(); nextSlide()}}\n word={t`Personal Information`}\n wordDefinition={t`Information that is private and should not be shared with strangers.`}\n title={t`TERM DISCOVERED`}\n >\n \n
{questioner.characterName}
\n \n
\n \n \n
\n
\n handleQuestionComplete()}\n onCorrectAnswer={() => {\n playVoiceover('sound-6');\n }}\n onIncorrectAnswer={() => {\n playVoiceover('sound-2');\n setTimeout(() => playVoiceover('turtle-question-1-incorrect'), 2000);\n }}\n forceOnAnswer={true}\n >\n
\n
\n );\n};\n\nconst Shadow = styled.div`\n border-radius: 50%;\n display: block;\n position: absolute;\n width: 100%;\n height: 40px;\n bottom: -20px;\n left: 0;\n background: rgba(0, 0, 0, 0.4);\n opacity: 0.4;\n -webkit-filter: blur(10px);\n -webkit-transform: scale(1, 0.2);\n z-index: 0;\n`;\n\nconst Character = styled.div`\n position: absolute;\n left: 0;\n top: 0;\n transform: translateX(-50%) translateY(-50%);\n z-index: -1;\n img {\n position: relative;\n z-index: 2;\n max-width: 100%;\n }\n`;\n\nconst QuestionCard = styled.div`\n width: 100%;\n background-color: #ffffff;\n color: #6400aa;\n max-width: 100%;\n display: block;\n margin: 20px auto 0 auto;\n position: relative;\n padding: 1.5rem 1.25rem 0.75rem 1.25rem;\n margin-top: 5rem;\n border-radius: 5px;\n max-width: 400px;\n`;\n\nexport default TurtleQuestion1;\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Turtle from '../../characters/Turtle';\n\nconst TurtleIntro2: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Turtle,\n text: t`Were you paying attention? Do you remember what personal information is?`,\n textSpriteName: 'turtle-4',\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default TurtleIntro2;\n","import React from 'react';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Turtle from '../../characters/Turtle';\n\nconst TurtleIntro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Turtle,\n text: t`${data.name}, I’m glad you found me! We have had some problems with our villagers’ personal information being stolen.`,\n textSpriteName: 'turtle-3-1',\n buttonText: t`Personal Information?`,\n },\n {\n character: Turtle,\n text: t`Personal information is data such as your name, date of birth or address. Let me show you what your information looks like.`,\n textSpriteName: 'turtle-3-2',\n buttonText: t`Okay!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default TurtleIntro;\n","import React from 'react';\nimport island from '../assets/island.svg';\nimport styled from 'styled-components';\nimport turtle from '../assets/characters/2-turtle.svg';\nimport shark from '../assets/characters/2-whale-bowie.svg';\nimport pufferfish from '../assets/characters/2-pufferfish-1.svg';\nimport squid from '../assets/characters/2-octopus.svg';\nimport seal from '../assets/characters/2-fish.svg';\nimport shadow from '../assets/characters/shadow.svg';\nimport sign from '../assets/characters/notification.svg';\nimport { t } from 'ttag';\n\ninterface IslandProps {\n nextSlide(): void;\n notification?: TIslandArea[];\n onSelect?: (location: TIslandArea) => void;\n infoText: string;\n}\nexport type TIslandLocation = 'turtle' | 'squid' | 'pufferfish' | 'seal' | 'shark' | 'house';\n\nexport type TIslandArea = {\n name: TIslandLocation;\n onSelect?: () => void; // data.gotoSlide(X)\n};\n\nconst Island: React.FC = ({\n notification,\n nextSlide,\n onSelect,\n infoText = t`Select a villager to help them`,\n}) => {\n const handleClick = (location?: TIslandArea) => {\n // take off incomplete list\n // nextSlide();\n if (onSelect && location) {\n if (location.onSelect) location.onSelect();\n onSelect(location);\n } else if (location) {\n nextSlide();\n }\n };\n return (\n \n \n \n {notification?.find((n) => n.name === 'house') ? (\n handleClick(notification?.find((n) => n.name === 'house'))}\n />\n ) : null}\n \n notification?.find((n) => n.name === 'turtle')\n ? handleClick(notification?.find((n) => n.name === 'turtle'))\n : null\n }\n className={notification?.find((n) => n.name === 'turtle') ? 'notification' : ''}\n >\n \n \n \n \n \n \n \n notification?.find((n) => n.name === 'pufferfish')\n ? handleClick(notification?.find((n) => n.name === 'pufferfish'))\n : null\n }\n className={notification?.find((n) => n.name === 'pufferfish') ? 'notification' : ''}\n >\n \n \n \n \n \n \n \n notification?.find((n) => n.name === 'shark')\n ? handleClick(notification?.find((n) => n.name === 'shark'))\n : null\n }\n className={notification?.find((n) => n.name === 'shark') ? 'notification' : ''}\n >\n \n \n \n \n \n \n \n notification?.find((n) => n.name === 'squid')\n ? handleClick(notification?.find((n) => n.name === 'squid'))\n : null\n }\n className={notification?.find((n) => n.name === 'squid') ? 'notification' : ''}\n >\n \n \n \n \n \n \n \n notification?.find((n) => n.name === 'seal')\n ? handleClick(notification?.find((n) => n.name === 'seal'))\n : null\n }\n className={notification?.find((n) => n.name === 'seal') ? 'notification' : ''}\n >\n \n \n \n \n \n \n \n \n

{t`Kelpy Deeps`}

\n

{infoText}

\n
\n
\n );\n};\n\nconst Explanation = styled.div`\n margin-top: 2rem;\n opacity: 0.75;\n text-align: center;\n`;\n\nconst HouseNotification = styled.img`\n position: absolute;\n transition: transform 0.3s ease-in-out;\n z-index: 999;\n cursor: pointer;\n bottom: 60%;\n width: 46px;\n left: 42%;\n z-index: 999;\n @media screen and (min-width: 768px) {\n width: 60px;\n }\n &:hover {\n transform: translateY(-5px);\n }\n`;\n\nconst Shadow = styled.div`\n width: 100%;\n opacity: 0.2;\n position: absolute;\n bottom: -5%;\n transition: transform 0.3s ease-in-out, opacity 0.3s linear;\n img {\n width: 100%;\n margin: 0 auto;\n display: block;\n transition: width 0.3s linear;\n }\n`;\nconst Notification = styled.img`\n display: none;\n position: absolute;\n top: -100%;\n width: 30px;\n left: calc(50% - 15px);\n z-index: 999;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n @media screen and (min-width: 420px) {\n width: 46px;\n top: -120%;\n left: calc(50% - 23px);\n }\n @media screen and (min-width: 768px) {\n width: 60px;\n top: -100%;\n left: calc(50% - 30px);\n }\n`;\n\nlet TileStyles = `\n line-height: 0;\n position:absolute;\n transition: transform 0.2s ease-in-out;\n\n &:hover{\n transform: translateY(-5px);\n ${Shadow} {\n transform: translateY(5px);\n opacity: 0.1;\n img { width: 50%; }\n }\n }\n &.notification{\n cursor: pointer;\n ${Notification} {\n display: block\n }\n }\n`;\n\nconst Char = styled.img`\n position: relative;\n width: 100%;\n z-index: 2;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n user-select: none;\n pointer-events: none;\n`;\n\nconst IslandImg = styled.img`\n width: 100%;\n max-height: 100%;\n -webkit-user-select: none;\n -khtml-user-select: none;\n -moz-user-select: none;\n -o-user-select: none;\n user-select: none;\n pointer-events: none;\n`;\n\nconst IslandWrapper = styled.div`\n width: 130%;\n margin-left: -15%;\n display: block;\n position: relative;\n @media screen and (min-width: 768px) {\n margin-left: 0;\n width: 100%;\n }\n`;\n\nconst TurtleTile = styled.div`\n ${TileStyles}\n width: 7%;\n left: 41%;\n bottom: 21%;\n ${Notification} {\n top: -105%;\n }\n`;\n\nconst PufferfishTile = styled.div`\n ${TileStyles}\n width: 8%;\n left: 26%;\n top: 34%;\n ${Notification} {\n top: -215%;\n @media screen and (min-width: 768px) {\n top: -200%;\n }\n }\n`;\nconst SharkTile = styled.div`\n ${TileStyles}\n width: 9%;\n right: 31.5%;\n bottom: 34%;\n ${Notification} {\n top: -175%;\n @media screen and (min-width: 768px) {\n top: -125%;\n }\n }\n`;\nconst SealTile = styled.div`\n ${TileStyles}\n width: 8%;\n right: 26.5%;\n top: 37%;\n ${Notification} {\n top: -175%;\n @media screen and (min-width: 768px) {\n top: -150%;\n }\n }\n`;\nconst SquidTile = styled.div`\n ${TileStyles}\n width: 9%;\n left: 18%;\n bottom: 37.5%;\n ${Notification} {\n top: -175%;\n @media screen and (min-width: 768px) {\n top: -150%;\n }\n }\n`;\n\nconst StyledContainer = styled.div`\n max-width: 700px;\n width: 80%;\n margin: 0 auto;\n`;\n\nexport default Island;\n","import React, { useContext, useEffect } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport Island from '../../components/Island';\nimport { CyberSecurityData } from '../..';\nimport { t } from 'ttag';\n\nconst TurtleIsland: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n useEffect(() => {\n data.setAvailableIslandAreas([{ name: 'turtle', onSelect: () => nextSlide() }]);\n }, []);\n\n return (\n \n \n \n );\n};\n\nexport default TurtleIsland;\n","import React, { useContext, useEffect } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport Island from '../../components/Island';\nimport styled from 'styled-components';\nimport logo from '../../../../../assets/brand/logo-barefoot.svg';\nimport heart from '../../assets/gamification/heart.svg';\nimport star from '../../assets/gamification/star.svg';\nimport { CyberSecurityData } from '../..';\nimport { t } from 'ttag';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\n\nconst Welcome: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const { playVoiceover } = useContext(VoiceoverContext);\n\n useEffect(() => {\n playVoiceover('turtle-island')\n }, []);\n\n return (\n \n \n \n
\n

\n {t`Welcome to`}\n
\n {t`Kelpy Deeps`}\n

\n \n
\n
\n \n
\n
\n );\n};\nconst WelcomeWrapper = styled.div`\n position: relative;\n div:nth-child(2) {\n opacity: 0.2;\n }\n`;\n\nconst WelcomeContent = styled.div`\n position: absolute;\n width: 280px;\n height: 200px;\n top: calc(50% - 100px);\n left: calc(50% - 140px);\n z-index: 999;\n display: flex;\n align-items: center;\n text-align: center;\n`;\n\nexport default Welcome;\n","import React, { useEffect } from 'react';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Turtle, { TurtleWanted } from '../../characters/Turtle';\n\nconst TurtleOutro: React.FC> = ({\n defaultHeader,\n nextSlide,\n data,\n gotoSlide,\n currentIndex,\n}) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n useEffect(() => {\n data.setAvailableIslandAreas([\n { name: 'shark', onSelect: () => gotoSlide(currentIndex + 2) },\n ]);\n }, []);\n\n const dialogue: DialogueData[] = [\n {\n character: Turtle,\n text: t`I think you're now ready to help the other villagers protect themselves against the phishing attacks.`,\n textSpriteName: 'turtle-6-1',\n buttonText: t`Next`,\n },\n {\n character: TurtleWanted,\n text: t`One last thing, watch out for this scammer along the way. They go by the name of the 'Phisherman' and have been trying to phish us for weeks!`,\n textSpriteName: 'turtle-6-2',\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default TurtleOutro;\n","import React, { useContext, useEffect } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { CyberSecurityData } from '../..';\nimport { t } from 'ttag';\nimport turtle from '../../assets/characters/2-turtle.svg';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\n\nconst YourDetails: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const { playVoiceover } = useContext(VoiceoverContext);\n\n useEffect(() => {\n playVoiceover('turtle-personal-2')\n }, []);\n\n let next = ;\n\n return (\n \n \n \n

{t`Your Personal Information`}

\n \n
\n \n \n\n \n \n \n \n \n

{data.name}

\n \n \n

{t`Email`}

\n

{data.name}@fishmail.co.uk

\n

{t`Password`}

\n

fish!1451soup#

\n

{t`Home Address`}

\n

123 Pearcroft Road, Countryside Place, Cornwall

\n

{t`Payment card number`}

\n

3030 9391 9384 2134

\n \n
\n
\n \n \n

{t`Don’t worry! This information is only used for today's adventure.`}

\n
\n
\n );\n};\n\nconst Message = styled.div`\n display: block;\n margin: 0 auto;\n width: 100%;\n max-width: 400px;\n p {\n background-color: #ffffff;\n display: inline-block;\n max-width: 80%;\n border-radius: 5px;\n margin-left: 0;\n margin-top: 0;\n box-shadow: 0px 4px 18px rgba(0, 0, 0, 0.3);\n color: #6400aa;\n padding: 10px 20px;\n font-size: 18px;\n position: relative;\n text-align: left;\n &::after {\n content: '';\n position: absolute;\n right: 100%;\n top: 50%;\n width: 0;\n height: 0;\n border-bottom: 5px solid transparent;\n border-right: 10px solid #ffffff;\n border-top: 5px solid transparent;\n clear: both;\n }\n }\n`;\n\nconst IDCard = styled.div`\n border-radius: 10px;\n background-color: #00A0D6;\n max-width: 500px;\n padding: 1rem 2rem;\n p {margin-bottom: 5px;}\n border: 2px solid #ffffff;\n position: relative;\n overflow: hidden;\n display; block;\n margin 1rem auto;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n`;\nconst Avatar = styled.img`\n width: 100%;\n position: absolute;\n transform: translateY(-50%) scale(1.2);\n top: 50%;\n left: 0;\n`;\n\nconst Circle = styled.div`\n border-radius: 5px;\n background-color: rgba(0, 0, 0, 0.1);\n overflow: hidden;\n padding-top: 100%;\n width: 100%;\n position: relative;\n margin-bottom: 1rem;\n`;\n\nconst Reflection = styled.div`\n position: absolute;\n border-style: solid;\n border-width: 200px 200px 0 0;\n border-color: rgba(255, 255, 255, 0.2) transparent transparent transparent;\n top: 0;\n left: 0;\n`;\n\nconst Character = styled.img`\n width: 12%;\n margin-left: 5%;\n display: inline-block;\n`;\n\nexport default YourDetails;\n","import React, { useContext, useState } from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport WordDiscovery from '../../../../general/WordDiscovery';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\nimport Turtle from '../../characters/Turtle';\n\nconst TurtleIntro3: React.FC = ({ defaultHeader, nextSlide }) => {\n const [show, setShow] = useState(false);\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const { playVoiceover } = useContext(VoiceoverContext);\n const handleWordDiscovered = () => {\n setShow(true);\n playVoiceover('turtle-word-discovered');\n }\n const dialogue: DialogueData[] = [\n {\n character: Turtle,\n text: t`Excellent work! It is super important to keep your personal information safe, as criminals can use it to scam you. Cyber criminals will often try phishing... `,\n textSpriteName: 'turtle-5-1',\n buttonText: t`Phishing?`,\n },\n {\n character: Turtle,\n text: t`Yes, phishing is when cyber criminals try and trick people into giving away personal information online, such as their passwords and bank account details.`,\n textSpriteName: 'turtle-5-2',\n buttonText: t`Next`,\n },\n {\n character: Turtle,\n text: t`It is so important that we keep ourselves safe from these scams. Falling for a scam could allow a criminal to gain access to your online accounts and steal your money!`,\n textSpriteName: 'turtle-5-3',\n buttonText: t`Next`,\n buttonAction: () => handleWordDiscovered(),\n },\n ];\n\n return (\n \n \n\n \n \n );\n};\n\nexport default TurtleIntro3;\n","import TurtleQuestion1 from './TurtleQuestion1';\nimport TurtleIntro2 from './TurtleIntro2';\nimport TurtleIntro from './TurtleIntro';\nimport TurtleIsland from './TurtleIsland';\nimport Welcome from './Welcome';\nimport TurtleOutro from './TurtleOutro';\nimport YourDetails from './YourDetails';\nimport PersonalDetails from './PersonalDetails';\nimport TurtleIntro3 from './TurtleIntro3';\n\nexport default [\n Welcome,\n TurtleIsland,\n\n TurtleIntro,\n PersonalDetails,\n YourDetails,\n\n TurtleIntro2,\n TurtleQuestion1,\n\n TurtleIntro3,\n\n TurtleOutro,\n];\n","import React, { useContext, useEffect } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\n\nconst PersonalDetails: React.FC = ({ defaultHeader, nextSlide }) => {\n const { playVoiceover } = useContext(VoiceoverContext);\n\n useEffect(() => {\n playVoiceover('turtle-personal-1')\n }, []);\n\n let next = ;\n\n return (\n \n
\n

{t`Personal Information`}

\n

{t`You need to keep your online details safe!`}

\n \n
\n
\n );\n};\n\nexport default PersonalDetails;\n","import { TCharacter } from '../../../general/Character';\nimport image from '../assets/characters/2-whale-bowie.svg';\nimport { t } from 'ttag';\n\nconst Whale: TCharacter = {\n characterName: t`Whale`,\n characterImage: image,\n characterWidth: 150,\n characterHeight: 100,\n};\n\nexport default Whale;\n","import React, { useEffect } from 'react';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport sfx from '../../../../../services/sounds';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Whale from '../../characters/Whale';\n\nconst WhaleIntro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n useEffect(() => {\n data.playMusic(sfx.themeCybersecurityWhale);\n }, []);\n\n const dialogue: DialogueData[] = [\n {\n character: Whale,\n text: t`Hey ${data.name}. Welcome to the village. I'm Whale! Turtle has been telling me that you are learning about phishing.`,\n textSpriteName: 'whale-1-1',\n buttonText: t`Next`,\n },\n {\n character: Whale,\n text: t`Now, I have the perfect game to help you learn about how you can spot a phishing scam. Would you like to play?`,\n textSpriteName: 'whale-2-1',\n buttonText: t`Of course!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default WhaleIntro;\n","import React, { useContext, useEffect } from 'react';\nimport { CyberSecurityData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Island, { TIslandArea } from '../../components/Island';\nimport { t } from 'ttag';\nimport sfx from '../../../../../services/sounds';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\n\nconst WhaleIsland: React.FC> = ({ defaultHeader, nextSlide, data, gotoSlide }) => {\n const { playVoiceover } = useContext(VoiceoverContext);\n\n useEffect(() => {\n if (data.availableIslandAreas.length === 0) {\n data.setAvailableIslandAreas([{ name: 'house', onSelect: () => gotoSlide(51) }]);\n }\n }, [data]);\n\n\n useEffect(() => {\n data.playMusic(sfx.themeCybersecurity);\n if (data.availableIslandAreas.find((area) => area.name === 'house') || data.availableIslandAreas.length === 0) {\n playVoiceover('island-msg-hall')\n } else {\n playVoiceover('island-msg-character');\n }\n }, []);\n\n return (\n \n data.removeIslandLocation(location)}\n infoText={\n data.availableIslandAreas.find((area) => area.name === 'house')\n ? t`Select the Village Hall to continue`\n : t`Select a villager to help them`\n }\n >\n \n );\n};\n\nexport default WhaleIsland;\n","import React, { useEffect, useState } from 'react';\n\nimport styled from 'styled-components';\n\nimport pattern_snowflake from '../../../assets/boxing/pattern-snow.svg';\n\ninterface BtnProps {\n icon: string;\n title_top: string;\n title_bottom: string;\n active: boolean;\n read: boolean;\n handleClick?: () => void;\n hoverIndex: () => void;\n}\n\nconst CharacteristicBtn: React.FC = ({\n icon,\n title_top,\n title_bottom,\n active,\n read,\n hoverIndex,\n handleClick,\n}) => {\n return (\n \n \n \n \n \n {title_top}\n
\n {title_bottom}\n
\n
\n );\n};\n\ninterface StyledProps {\n active: boolean;\n read: boolean;\n}\n\nconst CharSlot = styled.div`\n width: 20%;\n padding: 0 5px;\n @media (min-width: 650px) {\n padding: 0 10px;\n }\n`;\nconst CharBtn = styled.button`\n background-color: #E60050;\n border: solid 3px transparent;\n border-radius: 5px;\n overflow: hidden;\n padding: 0;\n margin-bottom: 10px;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n img {width: 100%}\n ${(props) => (props.active ? 'border-color: rgba(255,255,255,0.5);' : null)}\n ${(props) => (props.read ? 'background-color: #cccccc;' : null)}\n ${(props) => (props.read ? ' filter: grayscale(100%);' : null)}\n &:hover{\n background-color: #FF1768;\n }\n`;\n\nconst CharTitle = styled.h4`\n text-align: center;\n color: #ffffff;\n text-transform: uppercase;\n letter-spacing: 0.05em;\n line-height: 2.75vw;\n font-size: 2.75vw;\n font-family: 'BT Font Extra Bold';\n @media (min-width: 650px) {\n font-size: 18px;\n line-height: 20px;\n }\n`;\n\nexport default CharacteristicBtn;\n","import { useEffect, useState } from 'react';\n\nexport const useGameTimer: (\n seconds: number,\n onTimerFinish: () => void,\n) => [number, boolean, () => void, () => void, (time: number) => void] = (seconds, onTimerFinish) => {\n const [timeLeft, setTimeLeft] = useState(seconds);\n const [isActive, setIsActive] = useState(false);\n\n const start = () => {\n setIsActive(true);\n };\n\n const reset = () => {\n setTimeLeft(seconds);\n setIsActive(false);\n };\n\n useEffect(() => {\n let interval: any = null;\n\n if (!timeLeft) {\n return onTimerFinish();\n }\n\n if (isActive) {\n interval = setInterval(() => {\n setTimeLeft((seconds) => seconds - 1);\n }, 1000);\n } else if (!isActive && seconds !== 0) {\n clearInterval(interval);\n }\n return () => clearInterval(interval);\n }, [timeLeft, isActive]);\n\n return [timeLeft, isActive, start, reset, setTimeLeft]; //, startTimer, resetTimer, onTimerFinish\n};\n","import { remove } from 'js-cookie';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { DragDropContext } from 'react-beautiful-dnd';\nimport { Button, Row, Col } from 'react-bootstrap';\n\nimport { t } from 'ttag';\nimport sfx from '../../../../../../services/sounds';\nimport { GameProps, GameQuestion, useGameLogic } from '../../../../../core/Game';\nimport VolumeContext from '../../../../../misc/volume-context';\nimport styled from 'styled-components';\nimport { motion, useAnimation } from 'framer-motion';\nimport { CyberSecurityData } from '../../..';\n\nimport CharacteristicBtn from './CharacteristicBtn';\n\nimport c_grammar from '../../../assets/characteristics/c-grammar.svg';\nimport c_design from '../../../assets/characteristics/c-design.svg';\nimport c_good from '../../../assets/characteristics/c-good.svg';\nimport c_pressure from '../../../assets/characteristics/c-pressure.svg';\nimport c_source from '../../../assets/characteristics/c-source.svg';\nimport { useGameTimer } from '../../../../../../hooks/game';\n\nimport slide_1 from '../../../assets/characteristics/tutorial/slide_1.svg';\nimport slide_2 from '../../../assets/characteristics/tutorial/slide_2.svg';\nimport slide_3 from '../../../assets/characteristics/tutorial/slide_3.svg';\nimport slide_4 from '../../../assets/characteristics/tutorial/slide_4.svg';\nimport VoiceoverContext from '../../../../../misc/voiceover-context';\nimport Cookies from 'js-cookie';\n\nexport type TCharacteristicsQuestion = GameQuestion & {\n image: string;\n type: TCharacteristic;\n duration?: number;\n};\n\ninterface ICharacteristics {\n data: CyberSecurityData;\n logIncorrectAnswer: (answer: string) => void;\n}\n\ntype TCharacteristic = 'grammar' | 'pressure' | 'scam' | 'design' | 'domain';\n\nconst Characteristics: React.FC & ICharacteristics> = ({\n gameData,\n index = 0,\n data,\n onGameComplete,\n logIncorrectAnswer,\n}) => {\n const anim_timer = useAnimation();\n const anim_success = useAnimation();\n const anim_failure = useAnimation();\n const anim_check = useAnimation();\n const anim_times = useAnimation();\n\n const [demo, setDemo] = useState(true);\n const [show, setShow] = useState(false);\n const [tutorialShow, setTutorialShow] = useState(true);\n const { volume } = useContext(VolumeContext);\n const [tutorialIndex, setTutorialIndex] = useState(0);\n const [charIndex, setCharIndex] = useState(0);\n\n const lang = Cookies.get('bfg_lang');\n\n const [indexesViewed, setIndexesViewed] = useState>([]);\n\n const defaultQuestionTime = 30;\n\n const { playVoiceover, stopVoiceover } = useContext(VoiceoverContext);\n\n useEffect(() => {\n if (tutorialShow === true) {\n playVoiceover('whale-howto-'+(tutorialIndex + 1));\n }\n\n }, [tutorialIndex, tutorialShow]);\n\n const descriptions = (index: number) => {\n switch (index) {\n case 0: {\n return t`Phishing scams can be littered with poor grammar and spelling errors. This is a warning sign as trustworthy organisations avoid communicating in such an unprofessional way.`;\n }\n case 1: {\n return t`Intimidation by putting pressure on you to make a decision is a popular tactic for phishing scams. Phrases such as 'Urgent action required' are common.`;\n }\n case 2: {\n return t`Extremely good offers and eye-catching or attention-grabbing statements are designed to attract your attention immediately, but don't fall for it!`;\n }\n case 3: {\n return t`Some phishing scams look genuine but there are often small errors in their design that give it away.`;\n }\n case 4: {\n return t`Whether it looks like it's from someone you don't know or someone you do know, if anything seems out of the ordinary or just suspicious in general don't click on it!`;\n }\n default: {\n return t`Phishing scams can be littered with poor grammar and spelling errors. This is a warning sign as trustworthy organisations avoid communicating in such an unprofessional way.`;\n }\n }\n };\n\n const handleGameComplete = () => {\n setShow(true);\n onGameComplete();\n };\n\n const handleNextQuestion = () => {\n setShow(false);\n };\n\n const [question, nextQuestion] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextQuestion,\n index,\n );\n\n const onTimerFinish = () => {\n // alert('time is up! You scored'+ score);\n flashFailure();\n // nextQuestion();\n };\n\n const [timeLeft, isActive, start, reset, setTimeLeft] = useGameTimer(defaultQuestionTime, onTimerFinish);\n const [score, setScore] = useState(0);\n\n useEffect(() => {\n setTimeLeft(question && question.duration ? question.duration : defaultQuestionTime);\n }, [question]);\n\n const handleStart = () => {\n stopVoiceover();\n setDemo(false);\n start();\n const timer = setTimeout(() => {\n anim_timer.start('start');\n }, 1);\n return () => clearTimeout(timer);\n };\n\n // useEffect(() => {\n // // start()\n // if(!demo) {\n // const timer = setTimeout(() => {\n // anim_timer.start(\"start\");\n // },1);\n // return () => clearTimeout(timer);\n // }\n // }, [])\n\n async function resetTimer() {\n await anim_timer.start('stop');\n await anim_timer.start('start');\n }\n async function flashSuccess() {\n await anim_success.start('show');\n await anim_check.start('show');\n resetTimer();\n nextQuestion();\n await anim_check.start('visible');\n await anim_success.start('hidden');\n }\n async function flashFailure() {\n await anim_failure.start('show');\n await anim_times.start('show');\n resetTimer();\n nextQuestion();\n await anim_times.start('visible');\n await anim_failure.start('hidden');\n }\n\n const handleModalClose = () => {\n setShow(false);\n setTimeout(nextQuestion, 0);\n };\n\n const handleQuestionComplete = (correct: boolean, type: string) => {\n stopVoiceover();\n if (correct) {\n flashSuccess();\n data.addPoints(10);\n setScore(score + 10);\n setShow(true);\n if (volume) sfx.success.play();\n } else {\n logIncorrectAnswer(type);\n flashFailure();\n if (volume) sfx.failure.play();\n }\n };\n\n if (!question) {\n return

{t`Question not found`}

;\n }\n\n const timerVariants = {\n stop: {\n pathLength: 1,\n },\n start: {\n pathLength: 0,\n transition: {\n duration: defaultQuestionTime,\n ease: 'linear',\n },\n },\n };\n const resultVariants = {\n hidden: {\n opacity: 0,\n transition: {\n duration: 0.5,\n ease: 'easeInOut',\n },\n },\n show: {\n opacity: 1,\n transition: {\n duration: 0.01,\n ease: 'easeInOut',\n },\n },\n };\n\n const iconVariants = {\n hidden: {\n fill: 'rgba(255,255,255,0)',\n pathLength: 0,\n },\n visible: {\n fill: '#ffffff',\n pathLength: 1,\n transition: {\n duration: 0.4,\n ease: 'easeInOut',\n },\n },\n };\n\n const getSlide = (index: number) => {\n switch (index) {\n case 0: {\n return slide_1;\n }\n case 1: {\n return slide_2;\n }\n case 2: {\n return slide_3;\n }\n case 3: {\n return slide_4;\n }\n default: {\n return slide_1;\n }\n }\n };\n\n const getDescription = (index: number) => {\n switch (index) {\n case 0: {\n return t`View screenshots of messages that are part of phishing scams.`;\n }\n case 1: {\n return t`Choose the suspicious characteristic visible in the screenshot.`;\n }\n case 2: {\n return t`Be quick and make your choice before the time runs out!`;\n }\n case 3: {\n return t`Get as many as possible right to get a high score!`;\n }\n default: {\n return t`View different examples of phishing scams, one by one.`;\n }\n }\n };\n\n const renderCharacteristcsButton = () => {\n\n }\n\n return (\n \n {/* */}\n \n \n \n \n

{t`Score`}

\n

{score}

\n \n \n

{t`Time`}

\n

{timeLeft}

\n \n
\n
\n \n \n \n \n \n
\n

{t`Correct!`}

\n \n \n \n
\n
\n \n
\n

{t`Oops!`}

\n \n \n \n
\n
\n {demo ? (\n \n
\n \n

{t`Are you ready?`}

\n

{t`Before you start, select each of the characteristics of phishing scams below to learn more about them.`}

\n {indexesViewed.length === 5 ? (\n \n ) : (\n {5 - indexesViewed.length} { lang === 'cy' ? null : t`more left to view` }\n )}\n
\n
\n ) : null}\n \n \n \n \n
\n
\n
\n
\n \n \n {\n setCharIndex(0);\n if(demo){\n playVoiceover('whale-char-1');\n }\n if (!indexesViewed.includes(0)) {\n setIndexesViewed([...indexesViewed, 0]);\n }\n }}\n active={charIndex === 0 ? true : false}\n read={indexesViewed.includes(0) && demo}\n title_top={lang === 'cy' ? \"Gramadeg\" : t`Bad` }\n title_bottom={lang === 'cy' ? \"Gwael\" : t`Grammar`}\n icon={c_grammar}\n handleClick={\n !demo ? () => handleQuestionComplete(question.type === 'grammar', 'grammar') : undefined\n }\n />\n {\n setCharIndex(1);\n if(demo){\n playVoiceover('whale-char-2');\n }\n\n if (!indexesViewed.includes(1)) {\n\n setIndexesViewed([...indexesViewed, 1]);\n }\n }}\n active={charIndex === 1 ? true : false}\n read={indexesViewed.includes(1) && demo}\n title_top={lang === 'cy' ? \"Dan\" : t`Under`}\n title_bottom={lang === 'cy' ? \"Bwysau\" : t`Pressure`}\n icon={c_pressure}\n handleClick={\n !demo\n ? () => handleQuestionComplete(question.type === 'pressure', 'pressure')\n : undefined\n }\n />\n {\n setCharIndex(2);\n if(demo){\n playVoiceover('whale-char-3');\n }\n if (!indexesViewed.includes(2)) {\n setIndexesViewed([...indexesViewed, 2]);\n }\n }}\n active={charIndex === 2 ? true : false}\n read={indexesViewed.includes(2) && demo}\n title_top={lang === 'cy' ? \"Rhy Dda i\" : t`Too Good`}\n title_bottom={lang === 'cy' ? \"Fod yn Wir\" : t`To Be True`}\n icon={c_good}\n handleClick={\n !demo ? () => handleQuestionComplete(question.type === 'scam', 'scam') : undefined\n }\n />\n {\n setCharIndex(3);\n if(demo){\n playVoiceover('whale-char-4');\n }\n if (!indexesViewed.includes(3)) {\n setIndexesViewed([...indexesViewed, 3]);\n }\n }}\n active={charIndex === 3 ? true : false}\n read={indexesViewed.includes(3) && demo}\n title_top={lang === 'cy' ? \"Gwallau\" : t`Design`}\n title_bottom={lang === 'cy' ? \"Dylunio\" : t`Error`}\n icon={c_design}\n handleClick={\n !demo ? () => handleQuestionComplete(question.type === 'design', 'design') : undefined\n }\n />\n {\n setCharIndex(4);\n if(demo){\n playVoiceover('whale-char-5');\n }\n if (!indexesViewed.includes(4)) {\n setIndexesViewed([...indexesViewed, 4]);\n }\n }}\n active={charIndex === 4 ? true : false}\n read={indexesViewed.includes(4) && demo}\n title_top={lang === 'cy' ? \"Ffynhonnell\" : t`Untrusted`}\n title_bottom={lang === 'cy' ? \"Annibynadwy\" : t`Source`}\n icon={c_source}\n handleClick={\n !demo ? () => handleQuestionComplete(question.type === 'domain', 'domain') : undefined\n }\n />\n \n \n

{descriptions(charIndex)}

\n
\n
\n
\n \n \n
{t`TRAINING GAME`}
\n

{t`HOW TO PLAY`}

\n
\n \n -1 ? () => setTutorialIndex(tutorialIndex - 1) : undefined}\n >\n \n \n \n = 3}\n onClick={tutorialIndex + 1 < 4 ? () => setTutorialIndex(tutorialIndex + 1) : undefined}\n >\n \n \n \n

{getDescription(tutorialIndex)}

\n {tutorialIndex < 3 ? (\n \n \n \n ) : (\n \n )}\n \n
\n
\n );\n};\n\nconst StyledLeft = styled(motion.p)`\n display: inline-block;\n padding: 4px 8px;\n margin: 0;\n background-color: #ffffff;\n border-radius: 5px;\n color: #e60050;\n`;\n\nconst Path = styled(motion.path)`\n stroke: #ffffff;\n stroke-width: 1.5;\n stroke-linejoin: round;\n stroke-linecap: round;\n`;\n\nconst Failure = styled(motion.div)`\n position: absolute;\n opacity: 0;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n background-color: #e60050;\n svg {\n display: block;\n margin: 0 auto;\n max-width: 175px;\n width: 100%;\n }\n i {\n font-size: 100px;\n }\n`;\n\nconst Success = styled(motion.div)`\n position: absolute;\n opacity: 0;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n background-color: #00c3a5;\n svg {\n display: block;\n margin: 0 auto;\n max-width: 175px;\n width: 100%;\n }\n i {\n font-size: 100px;\n }\n`;\n\nconst Demo = styled.div`\n position: absolute;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n background-color: #e60050;\n z-index: 5;\n i {\n font-size: 40px;\n }\n`;\n\ninterface ArrowProps {\n left: boolean;\n end: boolean;\n}\nconst SlideArrow = styled.button`\n ${(props) => (props.left ? 'left: 5px;' : 'right: 5px;')}\n position: absolute;\n top: calc(50% - 25px);\n background-color: #ffffff;\n padding: 10px;\n height: 50px;\n width: 50px;\n border-radius: 25px;\n border: 0 !important;\n ${(props) => (props.end ? 'opacity: 0.3;' : null)}\n`;\n\nconst SlideImage = styled.img`\n height: 120px;\n width: 120px;\n margin: 0 auto;\n`;\n\nconst TutorialSlides = styled.div`\n width: 100%;\n position: relative;\n height: 120px;\n margin-bottom: 10px;\n`;\n\nconst TutorialProgress = styled.div`\n position: relative;\n width: 100%;\n height: 10px;\n max-width: 100px;\n border-radius: 5px;\n display: block;\n margin: 32px auto;\n background-color: #b80040;\n overflow: hidden;\n`;\ninterface ProgressProps {\n progress: number;\n}\n\nconst Progress = styled.div`\n background-color: #ffffff;\n transition: width 0.3s ease-in-out;\n width: ${(props) => props.progress}%;\n top: 0;\n bottom: 0;\n left: 0;\n position: absolute;\n`;\n\nconst TutorialCard = styled(motion.div)`\n background-color: #e60050;\n padding: 1rem;\n text-align: center;\n width: 100%;\n max-width: 350px;\n transition: height 0.5s ease-in-out;\n h5 {\n text-transform: uppercase;\n letter-spacing: 0.05em;\n font-size: 0.875rem;\n font-family: 'BT Font Extra Bold';\n }\n p {\n line-height: 20px;\n margin-bottom: 0;\n }\n`;\n\ninterface TutorialProps {\n tutorialShow: boolean;\n}\nconst Tutorial = styled(motion.div)`\n position: fixed;\n display: none;\n ${(props) => (props.tutorialShow ? 'display: flex;' : null)}\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: rgba(0, 0, 0, 0.6);\n align-items: center;\n justify-content: center;\n z-index: 999;\n padding-top: 75px;\n p {\n font-size: 16px;\n margin-bottom: 5px;\n }\n`;\n\nconst SVGContainer = styled.svg`\n path {\n stroke-width: 6px;\n stroke-linecap: round;\n stroke: #ffffff;\n }\n position: absolute;\n top: 0;\n left: 0;\n bottom: 0;\n right: 0;\n`;\n\nconst ScoreRow = styled(Row)`\n width: 100%;\n margin: 10px auto;\n max-width: 650px;\n padding: 5px;\n align-items: center;\n p,\n h2 {\n margin-bottom: 5px;\n vertical-align: middle;\n color: #e60050;\n }\n background-color: #ffffff;\n border-radius: 5px;\n @media (min-width: 768px) {\n position: fixed;\n width: 100px;\n left: 0;\n top: 50%;\n border-bottom-left-radius: 0;\n border-top-left-radius: 0;\n }\n`;\n\nconst AnswerRow = styled(Row)`\n width: 100%;\n margin: 10px auto;\n max-width: 650px;\n padding: 0 5px;\n`;\n\ninterface DescriptionProps {\n charIndex: number;\n}\n\nconst Description = styled.div`\n background-color: rgba(0, 0, 0, 0.3);\n position: relative;\n padding: 15px;\n border: 3px solid rgba(255, 255, 255, 0.5);\n margin: 15px auto;\n @media (min-width: 650px) {\n border-radius: 10px;\n }\n max-width: 650px;\n p {\n margin-bottom: 0;\n font-size: 1rem;\n line-height: 20px;\n }\n &::after {\n content: '';\n position: absolute;\n left: calc(${(props) => (props.charIndex ? props.charIndex * 20 + 10 : '10')}% - 10px);\n top: -13px;\n width: 0;\n height: 0;\n border-bottom: 10px solid rgba(255, 255, 255, 0.5);\n border-right: 10px solid transparent;\n border-left: 10px solid transparent;\n clear: both;\n }\n`;\n\nconst BoxContainer = styled.div`\n max-width: 500px;\n display: block;\n width: 100%;\n margin: 10px auto;\n @media (max-height: 900px) {\n width: 90%;\n max-width: 375px;\n }\n`;\n\nconst SquareWrapper = styled.div`\n width: 100%;\n position: relative;\n padding-top: 100%;\n background-color: rgba(0, 0, 0, 0.1);\n`;\nconst SquareInside = styled.div`\n position: absolute;\n bottom: 0;\n right: 0;\n left: 0;\n top: 0;\n overflow: hidden;\n border-radius: 7px;\n img {\n width: 100%;\n }\n`;\n\nconst GameWrapper = styled.div`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: rgba(54, 21, 89, 0.75);\n display: flex;\n flex-flow: column;\n margin-top: 75px;\n overflow-y: scroll;\n`;\n\nconst SectionScore = styled.div`\n flex-shrink: 0;\n width: 100%;\n`;\n\nconst SectionBox = styled.div`\n flex-shrink: 0;\n flex-grow: 1;\n display: flex;\n align-items: center;\n`;\n\nconst SectionCharacteristics = styled.div`\n flex: 0 0 auto;\n align-self: flex-end;\n position: relative;\n width: 100%;\n text-align: center;\n`;\n\nexport default Characteristics;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Phone from '../../components/Phone';\nimport { t } from 'ttag';\nimport Characteristics, {\n TCharacteristicsQuestion,\n} from '../../components/interactive/characteristics/Characteristics';\nimport { CyberSecurityData } from '../..';\nimport source_1 from '../../assets/characteristics/scenarios/source-1.svg';\nimport source_2 from '../../assets/characteristics/scenarios/source-2.svg';\nimport pressure_1 from '../../assets/characteristics/scenarios/pressure-1.svg';\nimport grammar_1 from '../../assets/characteristics/scenarios/grammar-1.svg';\nimport grammar_2 from '../../assets/characteristics/scenarios/grammar-2.svg';\nimport design_1 from '../../assets/characteristics/scenarios/design-1.svg';\nimport scam_1 from '../../assets/characteristics/scenarios/scam-1.svg';\nimport scam_2 from '../../assets/characteristics/scenarios/scam-2.svg';\nimport { shuffle } from '../../../../../helpers/shuffle';\n\nconst CharacteristicsGame: React.FC> = ({\n defaultHeader,\n nextSlide,\n gotoSlide,\n currentIndex,\n data,\n}) => {\n const gameData: TCharacteristicsQuestion[] = [\n {\n image: grammar_1,\n type: 'grammar',\n },\n {\n image: design_1,\n type: 'design',\n },\n {\n image: source_2,\n type: 'domain',\n },\n {\n image: pressure_1,\n type: 'pressure',\n },\n {\n image: scam_1,\n type: 'scam',\n },\n {\n image: source_1,\n type: 'domain',\n },\n {\n image: scam_2,\n type: 'scam',\n },\n {\n image: grammar_2,\n type: 'grammar',\n },\n ];\n\n return (\n \n nextSlide()}\n logIncorrectAnswer={(c: string) =>\n data.setIncorrectCharacteristics([...data.incorrectCharacteristics, c])\n }\n >\n \n );\n};\n\nexport default CharacteristicsGame;\n","import React, { useEffect, useState } from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport ModalOverlay from '../../../../general/ModalOverlay';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport c_design from '../../assets/characteristics/c-design.svg';\nimport c_good from '../../assets/characteristics/c-good.svg';\nimport c_grammar from '../../assets/characteristics/c-grammar.svg';\nimport c_pressure from '../../assets/characteristics/c-pressure.svg';\nimport c_source from '../../assets/characteristics/c-source.svg';\nimport Whale from '../../characters/Whale';\n\n\nconst WhaleOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: Whale,\n text: t`That was a little tricky wasn't it! Let’s have a look at the characteristics you found most difficult to find.`,\n textSpriteName: 'whale-4-1',\n buttonText: t`View Recap`,\n buttonAction: data.incorrectCharacteristics.length > 1 ? () => setShow(true) : nextSlide,\n },\n ];\n\n useEffect(() => {\n if (data.incorrectCharacteristics.length === 1 && process.env.NODE_ENV !== 'development') {\n nextSlide();\n }\n }, []);\n\n return (\n \n \n

\n \n {t`Characteristics Recap`}\n

{' '}\n {t`Read through the characteristics below then continue`}\n \n }\n footer={}\n >\n \n {data.incorrectCharacteristics.includes('grammar') ? (\n \n \n {t`Bad\n \n \n
{t`Bad Grammar`}
\n

{t`Phishing scams can be littered with poor grammar and spelling errors. This is a warning sign as trustworthy organisations avoid communicating in such an unprofessional way.`}

\n \n
\n ) : null}\n\n {data.incorrectCharacteristics.includes('pressure') ? (\n \n \n {t`Under\n \n \n
{t`Under Pressure`}
\n

{t`Intimidation by putting pressure on you to make a decision is a popular tactic for phishing scams. Phrases such as 'Urgent action required' are common.`}

\n \n
\n ) : null}\n\n {data.incorrectCharacteristics.includes('scam') ? (\n \n \n {t`Too\n \n \n
{t`Too Good To Be True`}
\n

{t`Extremely good offers and eye-catching or attention-grabbing statements are designed to attract your attention immediately, but don't fall for it!`}

\n \n
\n ) : null}\n\n {data.incorrectCharacteristics.includes('design') ? (\n \n \n {t`Design\n \n \n
{t`Design Errors`}
\n

{t`Some phishing scams look genuine but often there are strange quirks in there design that give it away. Keep an eye out for something looking a bit off!`}

\n \n
\n ) : null}\n\n {data.incorrectCharacteristics.includes('domain') ? (\n \n \n {t`Untrustworthy\n \n \n
{t`Untrustworthy Source`}
\n

{t`Whether it looks like it's from someone you don't know or someone you do know, if anything seems out of the ordinary or just suspicious in general don't click on it!`}

\n \n
\n ) : null}\n
\n \n \n
\n );\n};\nconst StyledP = styled.p`\n font-size: 15px;\n line-height: 18px;\n opacity: 0.8;\n`;\n\nconst Styled = styled.div`\n p {\n font-size: 16px;\n line-height: 18px;\n }\n h5 {\n font-family: 'BT Font Bold';\n }\n img {\n max-width: 125px;\n margin-left: auto;\n display: block;\n }\n`;\n\nexport default WhaleOutro;\n\n// switch (index) {\n// case 0: {\n// return t`Phishing scams can be littered with poor grammar and spelling errors. This is a warning sign as companies avoid communicating in such an unprofessional way.`;\n// }\n// case 1: {\n// return t`Intimidation by putting pressure on you to make a decision is a popular tactic for phishing scams. Phrases such as 'Urgent action required' are common.`;\n// }\n// case 2: {\n// return t`Extremely good offers and eye-catching or attention-grabbing statements are designed to attract your attention immediately, but don't fall for it!`;\n// }\n// case 3: {\n// return t`Some phishing scams look genuine but often there are strange quirks in there design that give it away. Keep an eye out for something looking a bit off!`;\n// }\n// case 4: {\n// return t`Whether it looks like it's from someone you don't know or someone you do know, if anything seems out of the ordinary or just suspicious in general don't click on it!`;\n// }\n","import React, { useEffect, useState } from 'react';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Whale from '../../characters/Whale';\n\n\nconst WhaleOutro: React.FC> = ({ defaultHeader, nextSlide, data, gotoSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n useEffect(() => {\n data.setAvailableIslandAreas([\n { name: 'seal', onSelect: () => gotoSlide(38) },\n { name: 'pufferfish', onSelect: () => gotoSlide(21) },\n { name: 'squid', onSelect: () => gotoSlide(32) },\n ]);\n }, []);\n\n const dialogue: DialogueData[] = [\n {\n character: Whale,\n text: t`Hopefully you learned a thing or two about how to spot phishing scams. Now see if you can help out the other villagers!`,\n textSpriteName: 'whale-3-1',\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default WhaleOutro;\n\n// switch (index) {\n// case 0: {\n// return t`Phishing scams can be littered with poor grammar and spelling errors. This is a warning sign as companies avoid communicating in such an unprofessional way.`;\n// }\n// case 1: {\n// return t`Intimidation by putting pressure on you to make a decision is a popular tactic for phishing scams. Phrases such as 'Urgent action required' are common.`;\n// }\n// case 2: {\n// return t`Extremely good offers and eye-catching or attention-grabbing statements are designed to attract your attention immediately, but don't fall for it!`;\n// }\n// case 3: {\n// return t`Some phishing scams look genuine but often there are strange quirks in there design that give it away. Keep an eye out for something looking a bit off!`;\n// }\n// case 4: {\n// return t`Whether it looks like it's from someone you don't know or someone you do know, if anything seems out of the ordinary or just suspicious in general don't click on it!`;\n// }\n","import WhaleIntro from './WhaleIntro';\nimport WhaleIsland from './WhaleIsland';\nimport CharacteristicsGame from './CharacteristicsGame';\nimport WhaleOutro from './WhaleOutro';\nimport WhaleOutro2 from './WhaleOutro2';\n\nexport default [WhaleIsland, WhaleIntro, CharacteristicsGame, WhaleOutro, WhaleOutro2];\n","import React, { useEffect, useState, useContext } from 'react';\n\nimport star from '../assets/gamification/star.png';\nimport heart from '../assets/gamification/heart.png';\nimport hook from '../assets/gamification/hook.svg';\nimport styled from 'styled-components';\nimport { motion, useAnimation } from 'framer-motion';\nimport ModalOverlay from '../../../general/ModalOverlay';\nimport { Button } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '..';\nimport fish from '../assets/characters/avatars/fish.png';\nimport toaster from 'toasted-notes';\nimport sfx from '../../../../services/sounds';\nimport VoiceoverContext from '../../../misc/voiceover-context';\n\ntype PhishedProps = {\n show: boolean;\n onClose: () => void;\n livesLost?: number;\n pointsLost: number;\n gameData: CyberSecurityData;\n explanation?: string;\n};\n\nconst CustomToast: React.FC = ({ children }) => {\n return (\n \n \n {children}\n \n );\n};\n\nconst Phished: React.FC = ({ onClose, show, pointsLost, livesLost = 1, gameData, explanation }) => {\n const [footer, setFooter] = useState(<>);\n\n const hooking = useAnimation();\n const hooked = useAnimation();\n const reveal = useAnimation();\n const { playVoiceover } = useContext(VoiceoverContext);\n\n async function sequence() {\n await hooking.start({ y: -70, opacity: 1, transition: { duration: 1.2 } });\n await (hooking.start({ y: -150, opacity: 0, transition: { duration: 0.3, delay: 0.75 } }),\n hooked.start({ y: -100, opacity: 0, transition: { duration: 0.3, delay: 0.75 } }));\n await reveal.start({ opacity: 1 });\n toaster.notify(() => {t`-${pointsLost} Points`}, {\n duration: 2000,\n position: 'top',\n });\n setFooter();\n }\n\n useEffect(() => {\n const phished = setTimeout(() => playVoiceover('phished-words'), 1000);\n sfx.synthFail.play();\n const timer = setTimeout(() => {\n sequence();\n }, 2000);\n return () => {clearTimeout(timer); clearTimeout(phished)}\n }, []);\n\n const handleClose = () => {\n gameData.removeLife();\n gameData.addPoints(-pointsLost);\n onClose();\n };\n return (\n } footer={footer} backgroundColor=\"#9E0F6F\" headerHidden={true}>\n \n \n \n \n \n \n
\n \n \n {'Heart'}\n -{livesLost}\n \n \n {'Star'}\n -{pointsLost}\n \n \n \n {'Heart'}\n {gameData.lives}\n {'Star'}\n {gameData.points}\n \n
\n
\n \n <motion.p\n animate={{ opacity: [0, 1, 1, 0], x: [200, 20, -20, -200] }}\n transition={{ duration: 2, delay: 1, times: [0, 0.3, 0.7, 1] }}\n className={'text-center mt-4 mb-0'}\n >{t`You got`}</motion.p>\n <motion.h1\n animate={{ opacity: [0, 1, 1, 0], x: [-200, -20, 20, 200] }}\n transition={{ duration: 2, delay: 1.3, times: [0, 0.3, 0.7, 1] }}\n className={'text-center'}\n >{t`PHISHED`}</motion.h1>\n {explanation ? (\n <Explanation animate={{ opacity: [0, 1] }} transition={{ delay: 3, duration: 0.3 }}>\n {explanation}\n </Explanation>\n ) : null}\n \n
\n
\n );\n};\n\nconst StyledToast = styled.div`\n background-color: #ffffff;\n border-radius: 10px;\n padding: 0.5rem 0.75rem;\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.24);\n color: #fabe01;\n position: relative;\n`;\n\nconst Card = styled.div`\n background-color: #872666;\n width: 100%;\n max-width: 450px;\n display: block;\n margin: 5px auto 0 auto;\n padding: 15px;\n border: 7px rgba(0, 0, 0, 0.05) solid;\n overflow: hidden;\n`;\nconst Explanation = styled(motion.p)`\n padding: 1rem;\n border-radius: 5px;\n background-color: rgba(0, 0, 0, 0.2);\n margin-top: 20px;\n text-align: center;\n`;\n\nconst Avatar = styled(motion.img)`\n width: 250px;\n display: block;\n margin: 1rem auto;\n max-width: 100%;\n position: relative;\n z-index: 5;\n`;\n\nconst Hook = styled(motion.img)`\n left: calc(50% - 25px);\n position: absolute;\n bottom: 0;\n width: 50px;\n`;\n\nconst Phishing = styled.div`\n position: relative;\n`;\n\nconst Lives = styled.div`\n position: relative;\n display: inline-block;\n margin: 0 10px;\n span {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n font-family: 'BT Font Extra Bold';\n }\n`;\nconst Points = styled.div`\n position: relative;\n display: inline-block;\n margin: 0 10px;\n span {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n font-family: 'BT Font Extra Bold';\n color: #612300;\n }\n`;\nconst Details = styled(motion.div)`\n text-align: center;\n opacity: 0;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 0;\n width: 100%;\n`;\n\nconst Summary = styled.div`\n background-color: rgba(0, 0, 0, 0.15);\n border-radius: 15px;\n text-align: center;\n display: inline-block;\n padding: 10px 20px;\n img {\n width: 30px;\n margin: -3px 5px 0 10px;\n }\n span {\n font-family: 'BT Font Extra Bold';\n margin: 0 10px;\n }\n`;\n\nconst Result = styled.div`\n text-align: center;\n margin-bottom: 2rem;\n`;\n\nconst Title = styled(motion.div)`\n max-width: 320px;\n display: block;\n margin: 2rem auto 1rem auto;\n`;\n\nconst Wrapper = styled.div`\n max-width: 320px;\n display: block;\n margin: 1rem auto;\n position: relative;\n`;\n\nexport default Phished;\n","import React, { useEffect, useState, useContext } from 'react';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\nimport { CyberSecurityData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Phished from '../../components/Phished';\nimport { t } from 'ttag';\n\nconst UserPhished: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const { playVoiceover } = useContext(VoiceoverContext);\n useEffect(() => {\n const phished = setTimeout(() => playVoiceover('pufferfish-phished-desc'), 4000);\n return () => { clearTimeout(phished) }\n }, []);\n return (\n \n \n \n );\n};\n\nexport default UserPhished;\n","import { TCharacter } from '../../../general/Character';\nimport image from '../assets/characters/2-pufferfish-1.svg';\nimport puffed from '../assets/characters/2-pufferfish-2.svg';\nimport { t } from 'ttag';\n\nconst Pufferfish: TCharacter = {\n characterName: t`Pufferfish`,\n characterImage: image,\n characterWidth: 94,\n characterHeight: 58,\n};\nexport const Puffed: TCharacter = {\n characterName: t`Pufferfish`,\n characterImage: puffed,\n characterWidth: 120,\n characterHeight: 105,\n};\n\nexport default Pufferfish;\n","import React, { useContext, useEffect } from 'react';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport sfx from '../../../../../services/sounds';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport VolumeContext from '../../../../misc/volume-context';\nimport Pufferfish from '../../characters/Pufferfish';\n\n\nconst PufferfishIntro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n useEffect(() => {\n data.playMusic(sfx.themeCybersecurityPufferfish);\n }, []);\n const { volume } = useContext(VolumeContext);\n\n const dialogue: DialogueData[] = [\n {\n character: Pufferfish,\n text: t`Hey, I'm Pufferfish! My friend Turtle told me you know a thing or two about phishing.`,\n textSpriteName: 'pufferfish-1-1',\n buttonText: t`Nice to meet you!`,\n },\n {\n character: Pufferfish,\n text: t`I have been getting funny calls from people offering me things.`,\n textSpriteName: 'pufferfish-1-2',\n buttonText: t`Next`,\n buttonAction: () => {\n if (volume) sfx.ringtone.play();\n nextSlide();\n },\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default PufferfishIntro;\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { Puffed } from '../../characters/Pufferfish';\n\nconst PufferfishIntro2: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Puffed,\n text: t`Hold on, what’s that noise? Oh it's the phone ringing again! You better answer it!`,\n textSpriteName: 'pufferfish-1-3',\n buttonText: t`Check phone`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default PufferfishIntro2;\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Pufferfish from '../../characters/Pufferfish';\n\nconst PufferfishOutro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Pufferfish,\n text: t`Phew... I’ve calmed down a bit. That was so out of the blue! Phishing can be done over a phone call, I did not know that! Thank you for your help!`,\n buttonText: t`Next`,\n textSpriteName: 'pufferfish-2-1',\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default PufferfishOutro;\n","import React, {useContext, useEffect} from 'react';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport MultipleChoice, { TMultiChoiceQuestion } from '../../../../interactive/quiz/multi-choice/MultiChoice';\nimport { t } from 'ttag';\nimport questioner from '../../characters/Turtle';\nimport styled from 'styled-components';\n\nconst TurtleQuestion: React.FC = ({ defaultHeader, nextSlide }) => {\n const { playVoiceover } = useContext(VoiceoverContext);\n useEffect(() => {\n playVoiceover('pufferfish-question-1');\n }, [])\n const gameData: TMultiChoiceQuestion[] = [\n {\n question: t`Which features of the call seemed suspicious?`,\n answers: [\n { text: t`Called from an unknown number.`, correct: true },\n { text: t`Offered an unexpected reward.`, correct: true },\n { text: t`They knew my name.`, correct: false },\n ],\n },\n ];\n\n return (\n \n \n
{questioner.characterName}
\n \n
\n \n \n
\n
\n {\n playVoiceover('sound-8');\n setTimeout(() => playVoiceover('pufferfish-question-1-correct'), 1000);\n }}\n onIncorrectAnswer={() => {\n playVoiceover('sound-1');\n setTimeout(() => playVoiceover('question-incorrect'), 1000);\n }}\n forceOnAnswer={true}\n >\n

{t`Select ALL that apply`}

\n
\n
\n );\n};\n\nconst Shadow = styled.div`\n border-radius: 50%;\n display: block;\n position: absolute;\n width: 100%;\n height: 40px;\n bottom: -20px;\n left: 0;\n background: rgba(0, 0, 0, 0.4);\n opacity: 0.4;\n -webkit-filter: blur(10px);\n -webkit-transform: scale(1, 0.2);\n z-index: 0;\n`;\n\nconst Character = styled.div`\n position: absolute;\n left: 0;\n top: 0;\n transform: translateX(-50%) translateY(-50%);\n z-index: -1;\n img {\n position: relative;\n z-index: 2;\n max-width: 100%;\n }\n`;\n\nconst QuestionCard = styled.div`\n width: 100%;\n background-color: #ffffff;\n color: #6400aa;\n max-width: 100%;\n display: block;\n margin: 20px auto 0 auto;\n position: relative;\n padding: 1.5rem 1.25rem 0.75rem 1.25rem;\n margin-top: 3rem;\n border-radius: 5px;\n max-width: 400px;\n`;\n\nexport default TurtleQuestion;\n","import React from 'react';\nimport frame from '../assets/devices/phone-frame.svg';\nimport styled from 'styled-components';\n\ninterface IPhone {\n backgroundColor?: string;\n}\n\nconst Phone: React.FC = ({ children, backgroundColor = '#6400aa' }) => {\n return (\n \n \n \n {children}\n \n \n \n \n );\n};\n\ninterface PhoneContentProps {\n backgroundColor?: string;\n}\n\nconst PhoneContainer = styled.div`\n height: calc(100vh - 75px);\n position: relative;\n z-index: 2;\n overflow: hidden;\n`;\nconst PhoneBlock = styled.div`\n margin-bottom: -10%;\n position: absolute;\n max-width: 500px;\n width: 100%;\n display: block;\n transform: translateX(-50%);\n left: 50%;\n @media screen and (min-width: 500px) {\n margin-bottom: -50px;\n top: 10px;\n }\n`;\n\nconst PhoneContent = styled.div`\n position: relative;\n z-index: 2;\n height: 100%;\n width: 100%;\n padding-top: 202.5%;\n border-radius: 14vw;\n background: ${(props: PhoneContentProps) => props.backgroundColor};\n // padding: 5% 4% 9% 4%;\n @media screen and (min-width: 500px) {\n border-radius: 80px;\n }\n @media screen and (min-width: 767px) {\n // padding: 5% 4% 9% 4%;\n }\n overflow: hidden;\n`;\n\nconst PhoneContentScroll = styled.div`\n height: 100%;\n width: 100%;\n overflow-y: scroll;\n -ms-overflow-style: none;\n position: absolute;\n top: 0;\n display: flex;\n padding: 5%;\n max-height: calc(100vh - 75px);\n`;\n\nconst PhoneFrame = styled.img`\n width: 100%;\n pointer-events: none;\n user-select: none;\n position: absolute;\n z-index: 3;\n top: 0;\n`;\n\nexport default Phone;\n","import React, { useEffect, useContext } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Row, Container, Col } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport Phone from '../../components/Phone';\nimport { t } from 'ttag';\nimport { actions } from '../../../../../services/analytics';\nimport * as PhoneCall from '../../components/interactive/phonecall/PhoneCall';\nimport sfx from '../../../../../services/sounds';\nimport VolumeContext from '../../../../misc/volume-context';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\n\nconst CallInbound: React.FC = ({ defaultHeader, nextSlide, gotoSlide }) => {\n const { volume } = useContext(VolumeContext);\n const { playVoiceover } = useContext(VoiceoverContext);\n useEffect(() => {\n if (volume) sfx.ringtone.play();\n const incomingCall = setTimeout(() => playVoiceover('pufferfish-phone'), 1500);\n return () => { clearTimeout(incomingCall) }\n }, []);\n\n\n return (\n <>\n \n \n \n \n \n \n \n

{t`Incoming Call`}

\n

{t`Unknown Number`}

\n \n
\n
\n \n \n \n \n \n \n nextSlide()} className=\"fa fa-phone\" />\n \n \n \n
\n
\n
\n \n );\n};\n\nconst StyledContainer = styled(Container)`\n min-height: 100%;\n display: flex;\n flex-flow: column;\n padding: 0;\n`;\n\nconst PhoneContent = styled.div`\n flex: 1;\n padding: 5% 5% 3% 5%;\n display: flex;\n justify-content: center;\n align-items: center;\n text-align: center;\n @media screen and (min-width: 768px) {\n h3 {\n font-size: 2rem;\n }\n }\n`;\n\nconst PhoneButtons = styled.div`\n margin-top: auto;\n align-self: flex-end;\n width: 100%;\n padding: 5% 5% 3% 5%;\n`;\n\nconst PhoneHeader = styled.div`\n width: 100%;\n padding: 10% 5% 3% 5%;\n flex-shrink: 0;\n`;\n\nconst PickUp = styled.i`\n min-width: 1rem;\n color: #007bff;\n background-color: #ffffff;\n padding: 1rem;\n border-radius: 100px;\n font-size: 2rem;\n @media screen and (min-width: 768px) {\n margin-top: 1rem;\n margin-bottom: 2rem;\n font-size: 3rem;\n }\n cursor: pointer;\n &:hover {\n opacity: 0.8;\n }\n`;\n\nconst HangUp = styled.i`\n min-width: 1rem;\n color: #007bff;\n background-color: #ffffff;\n padding: 1rem;\n border-radius: 100px;\n opacity: 0.4;\n transform: rotate(-135deg);\n font-size: 2rem;\n @media screen and (min-width: 768px) {\n margin-top: 1rem;\n margin-bottom: 2rem;\n font-size: 3rem;\n }\n`;\n\nexport default CallInbound;\n","import React, { useState, useEffect, useContext } from 'react';\nimport { GameProps, GameQuestion, useGameLogic } from '../../../../../core/Game';\nimport styled from 'styled-components';\nimport { Button, Row, Container, Col } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport VoiceoverContext from '../../../../../misc/voiceover-context';\n\nexport type TPhoneCallQuestion = GameQuestion & {\n message: string;\n messageSpriteName: string;\n actions: TPhoneCallAction[];\n};\n\ntype TPhoneCallAction = {\n text: string;\n textSpriteName: string;\n action?: () => void;\n icon?: string;\n};\n\nconst PhoneCall: React.FC> = ({ gameData, index = 0, onGameComplete }) => {\n const [show, setShow] = useState(false);\n const [initial, setInitial] = useState(false);\n const { playVoiceover } = useContext(VoiceoverContext);\n\n const handleNextCallMessage = () => {};\n\n const handleGameComplete = () => {\n onGameComplete();\n };\n const handleClick = () => {\n setShow(false);\n setTimeout(() => {\n nextCallMessage();\n }, 100);\n setTimeout(() => {\n setShow(true);\n }, 6000);\n };\n\n const [call, nextCallMessage] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextCallMessage,\n index,\n );\n\n\n\n useEffect(() => {\n if (call) {\n playVoiceover(call.messageSpriteName);\n if(!initial){\n setInitial(true);\n const timer = setTimeout(() => {setShow(true)}, 3000);\n return () => {clearTimeout(timer);};\n }\n }\n }, [call?.message]);\n\n const renderActionButton = (action: TPhoneCallAction) => {\n return (\n\n \n playVoiceover(action.textSpriteName)}>\n {action.text}\n \n \n );\n }\n\n if (!call) {\n return null;\n }\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n

{call.message}

\n
\n \n
\n \n {call.actions.map((action) => renderActionButton(action))}\n \n
\n
\n \n );\n};\n\nconst StyledContainer = styled(Container)`\n min-height: 100%;\n display: flex;\n flex-flow: column;\n padding: 0;\n`;\n\nconst Message = styled.div`\n p {\n margin-top: 1rem;\n }\n`;\n\nconst Icon = styled.i`\n font-size: 2rem;\n @media screen and (min-width: 768px) {\n margin-top: 1rem;\n margin-bottom: 2rem;\n font-size: 3rem;\n }\n`;\n\ninterface BtnProps {\n show: boolean\n}\nconst MessageBtn = styled(Button)`\n background: #ffffff;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n border-radius: 100px;\n width: 100%;\n margin-bottom: 15px;\n color: #6400aa;\n`;\nconst UserCircle = styled.div`\n border-radius: 50%;\n width: 100%;\n padding-top: 100%;\n position: relative;\n max-height: 40px;\n p {\n margin-bottom: 0;\n font-weight: 700;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateY(-50%) translateX(-50%);\n }\n background-color: #3b0a5d;\n`;\n\nconst App = styled.img`\n width: 100%;\n padding-left: 10%;\n display: block;\n`;\n\nconst PhoneContent = styled.div`\n flex: 1;\n padding: 5% 5% 3% 5%;\n display: flex;\n flex-flow: column;\n`;\n\nconst PhoneContentAnswers = styled.div`\n margin-top: auto;\n align-self: flex-end;\n width: 100%;\n display: ${(props) => props.show ? 'block' : 'none'};\n`;\n\nconst PhoneHeader = styled.div`\n width: 100%;\n padding: 10% 5% 3% 5%;\n flex-shrink: 0;\n`;\n\nconst PhoneFooter = styled.div`\n height: 13%;\n display: none;\n width: 100%;\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n background-color: rgba(0, 0, 0, 0.1);\n padding: 2% 5%;\n @media screen and (min-width: 1000px) {\n display: block;\n }\n overflow: hidden;\n`;\n\nexport default PhoneCall;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Phone from '../../components/Phone';\nimport { t } from 'ttag';\nimport * as PhoneCall from '../../components/interactive/phonecall/PhoneCall';\nimport { CyberSecurityData } from '../..';\n\nconst UnknownCall: React.FC> = ({\n defaultHeader,\n nextSlide,\n gotoSlide,\n currentIndex,\n data,\n}) => {\n\n const gameData: PhoneCall.TPhoneCallQuestion[] = [\n {\n message: t`Good afternoon, ${data.name}.`,\n messageSpriteName: 'pufferfish-phone-1',\n actions: [\n {\n text: t`Hi there!`,\n textSpriteName: 'pufferfish-phone-a1-1',\n },\n {\n text: t`Who is this?`,\n textSpriteName: 'pufferfish-phone-a1-2',\n },\n ],\n },\n\n {\n message: t`This is your phone contract provider, as you are such a loyal customer we are offering you a brand new PS5! Before we continue, we need to ask you a couple of questions.`,\n messageSpriteName: 'pufferfish-phone-2',\n actions: [\n {\n text: t`Why is this an unknown number?`,\n textSpriteName: 'pufferfish-phone-a2-1',\n },\n {\n text: t`A new PS5... go ahead!`,\n textSpriteName: 'pufferfish-phone-a2-2',\n },\n ],\n },\n\n {\n message: t`As part of authentication, we would like to know your home address so that we can send you your free PS5 right now today!`,\n messageSpriteName: 'pufferfish-phone-3',\n actions: [\n {\n text: t`Give your home address`,\n textSpriteName: 'pufferfish-phone-a3-1',\n icon: 'home',\n action: () => gotoSlide(currentIndex + 3),\n },\n {\n text: t`Sorry I’m hanging up.`,\n textSpriteName: 'pufferfish-phone-a3-2',\n },\n ],\n },\n ];\n\n return (\n \n \n nextSlide()}>\n \n \n );\n};\n\nexport default UnknownCall;\n","import React, { useEffect, useState, useContext } from 'react';\n\nimport star from '../assets/gamification/star.png';\nimport heart from '../assets/gamification/heart.png';\nimport hook from '../assets/gamification/hook.svg';\nimport styled from 'styled-components';\nimport { motion, useAnimation } from 'framer-motion';\nimport ModalOverlay from '../../../general/ModalOverlay';\nimport { Button } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '..';\nimport fish from '../assets/characters/avatars/fish.png';\nimport toaster from 'toasted-notes';\nimport sfx from '../../../../services/sounds';\nimport VolumeContext from '../../../misc/volume-context';\nimport VoiceoverContext from '../../../misc/voiceover-context';\n\ntype DodgedProps = {\n show: boolean;\n onClose: () => void;\n points: number;\n gameData: CyberSecurityData;\n explanation?: string;\n};\nconst CustomToast: React.FC = ({ children }) => {\n return (\n \n \n {children}\n \n );\n};\nconst Dodged: React.FC = ({ onClose, show, points, gameData, explanation }) => {\n const [footer, setFooter] = useState(<>);\n\n const hooking = useAnimation();\n const hooked = useAnimation();\n const reveal = useAnimation();\n const { playVoiceover } = useContext(VoiceoverContext);\n\n async function sequence() {\n await hooking.start({ x: -100, y: -150, opacity: 1, transition: { duration: 1, delay: 1.5 } });\n await (hooking.start({ x: 100, y: -50, opacity: 0, transition: { duration: 0.5 } }),\n hooked.start({ y: 50, x: -50, opacity: 0, transition: { duration: 0.5 } }));\n await reveal.start({ opacity: 1 });\n setFooter();\n }\n\n useEffect(() => {\n sfx.synthSuccess.play();\n const dodged = setTimeout(() => playVoiceover('dodged-words'), 1000);\n const timer = setTimeout(() => {\n sequence();\n toaster.notify(() => {t`+${points} Points`}, {\n duration: 2000,\n position: 'top',\n });\n }, 2000);\n return () => {clearTimeout(timer); clearTimeout(dodged)}\n }, []);\n useEffect(() => {\n gameData.addPoints(points);\n }, []);\n const handleClose = () => {\n gameData.addPoints(points);\n onClose();\n };\n return (\n } footer={footer} backgroundColor=\"#00C3A5\" headerHidden={true}>\n \n \n \n \n \n \n
\n \n \n {'Star'}\n +{points}\n \n \n \n {'Heart'}\n {gameData.lives}\n {'Star'}\n {gameData.points}\n \n
\n
\n \n <motion.p\n animate={{ opacity: [0, 1, 1, 0], x: [200, 20, -20, -200] }}\n transition={{ duration: 2, delay: 1, times: [0, 0.3, 0.7, 1] }}\n className={'text-center mt-4 mb-0'}\n >{t`Phishing scam...`}</motion.p>\n <motion.h1\n animate={{ opacity: [0, 1, 1, 0], x: [-200, -20, 20, 200] }}\n transition={{ duration: 2, delay: 1.3, times: [0, 0.3, 0.7, 1] }}\n className={'text-center'}\n >{t`Dodged!`}</motion.h1>\n {explanation ? (\n <Explanation animate={{ opacity: [0, 1] }} transition={{ delay: 4, duration: 0.3 }}>\n {explanation}\n </Explanation>\n ) : null}\n \n
\n
\n );\n};\n\nconst StyledToast = styled.div`\n background-color: #ffffff;\n border-radius: 10px;\n padding: 0.5rem 0.75rem;\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.24);\n color: #fabe01;\n position: relative;\n`;\n\nconst Card = styled.div`\n background-color: #00ad92;\n width: 100%;\n max-width: 450px;\n display: block;\n margin: 5px auto 0 auto;\n padding: 15px;\n border: 7px rgba(0, 0, 0, 0.05) solid;\n overflow: hidden;\n`;\n\nconst Avatar = styled(motion.img)`\n width: 250px;\n display: block;\n margin: 1rem auto;\n max-width: 100%;\n position: relative;\n z-index: 5;\n`;\n\nconst Hook = styled(motion.img)`\n left: calc(50% - 25px);\n position: absolute;\n bottom: 0;\n width: 50px;\n`;\n\nconst Phishing = styled.div`\n position: relative;\n`;\n\nconst Explanation = styled(motion.p)`\n padding: 1rem;\n border-radius: 5px;\n background-color: rgba(0, 0, 0, 0.2);\n margin-top: 20px;\n text-align: center;\n`;\n\nconst Lives = styled.div`\n position: relative;\n display: inline-block;\n margin: 0 10px;\n span {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n font-family: 'BT Font Extra Bold';\n }\n`;\nconst Points = styled.div`\n position: relative;\n display: inline-block;\n margin: 0 10px;\n span {\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateX(-50%) translateY(-50%);\n font-family: 'BT Font Extra Bold';\n color: #612300;\n }\n`;\nconst Details = styled(motion.div)`\n text-align: center;\n opacity: 0;\n position: absolute;\n top: 50%;\n transform: translateY(-50%);\n left: 0;\n width: 100%;\n`;\n\nconst Summary = styled.div`\n background-color: rgba(0, 0, 0, 0.15);\n border-radius: 15px;\n text-align: center;\n display: inline-block;\n padding: 10px 20px;\n img {\n width: 30px;\n margin: -3px 5px 0 10px;\n }\n span {\n font-family: 'BT Font Extra Bold';\n margin: 0 10px;\n }\n`;\n\nconst Result = styled.div`\n text-align: center;\n margin-bottom: 2rem;\n`;\n\nconst Title = styled(motion.div)`\n max-width: 320px;\n display: block;\n margin: 2rem auto 1rem auto;\n`;\n\nconst Wrapper = styled.div`\n max-width: 320px;\n display: block;\n margin: 1rem auto;\n position: relative;\n`;\n\nexport default Dodged;\n","import React, { useEffect, useState, useContext } from 'react';\nimport { CyberSecurityData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Dodged from '../../components/Dodged';\nimport { t } from 'ttag';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\n\n\nconst UserDodge: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const { playVoiceover } = useContext(VoiceoverContext);\n useEffect(() => {\n const dodged = setTimeout(() => playVoiceover('pufferfish-dodged-desc'), 4000);\n return () => { clearTimeout(dodged) }\n }, []);\n return (\n \n \n \n );\n};\n\nexport default UserDodge;\n","import { TCharacter } from '../../../general/Character';\nimport image from '../assets/characters/phisherman.svg';\nimport { t } from 'ttag';\n\nconst Turtle: TCharacter = {\n characterName: t`Phisherman`,\n characterImage: image,\n characterWidth: 300,\n characterHeight: 140,\n};\n\nexport default Turtle;\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Phisherman from '../../characters/Phisherman';\n\nconst UserPhishedPhisher: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Phisherman,\n text: t`Bingo! I bet you didn't expect me to be on the other end of the phone. You have to be a bit more careful than that!`,\n textSpriteName: 'pufferfish-phisherman-3',\n buttonText: t`Next`,\n },\n {\n character: Phisherman,\n text: t`Hiding my number and mentioning that PS5 worked perfectly! I shall do this more often...`,\n textSpriteName: 'pufferfish-phisherman-4',\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default UserPhishedPhisher;\n","import UserPhished from './UserPhished';\nimport PufferfishIntro from './PufferfishIntro';\nimport PufferfishIntro2 from './PufferfishIntro2';\nimport PufferfishOutro from './PufferfishOutro';\nimport TurtleQuestion from './TurtleQuestion';\nimport CallInbound from './CallInbound';\nimport UnknownCall from './UnknownCall';\nimport UserDodge from './UserDodge';\nimport UserDodgePhisher from './UserDodgePhisher';\nimport UserPhishedPhisher from './UserPhishedPhisher';\nimport WhaleIsland from '../3-fishfood/WhaleIsland';\n\nexport default [\n WhaleIsland,\n PufferfishIntro,\n PufferfishIntro2,\n CallInbound,\n UnknownCall,\n UserDodge,\n UserDodgePhisher,\n UserPhished,\n UserPhishedPhisher,\n TurtleQuestion,\n PufferfishOutro,\n];\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Phisherman from '../../characters/Phisherman';\n\nconst BlockUserDodgePhisher: React.FC = ({ defaultHeader, gotoSlide, currentIndex }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Phisherman,\n text: t`Darn. I really thought getting your details over a phone call would work, you must be smarter than I thought!`,\n textSpriteName: 'pufferfish-phisherman-1',\n buttonText: t`Next`,\n },\n {\n character: Phisherman,\n text: t`I wonder if it was the phone number or the free PS5 that gave me away...`,\n textSpriteName: 'pufferfish-phisherman-2',\n buttonText: t`Next`,\n buttonAction: () => gotoSlide(currentIndex + 3),\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default BlockUserDodgePhisher;\n","import React, {useState, useEffect, useRef} from 'react';\nimport frame from '../assets/devices/laptop-frame.svg';\nimport bottom from '../assets/devices/laptop-bottom.svg';\nimport styled from 'styled-components';\nimport { Button, Row, Container, Col } from 'react-bootstrap';\n// import scroll from '../assets/misc/email-scroll.png';\nimport {t} from 'ttag';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faArrowDown } from '@fortawesome/free-solid-svg-icons';\nimport { isIOS, isMobile } from 'react-device-detect';\n\ninterface ILaptop {\n backgroundColor?: string;\n url: string;\n}\n\nconst Laptop: React.FC = ({ children, url = 'example.com', backgroundColor = '#6400aa' }) => {\n const [show, setShow] = useState(true);\n\n const handleScroll = (e:any) => {\n if (!isMobile && show) {\n setShow(false);\n } else {\n const bottom = e.target.scrollHeight - e.target.scrollTop <= e.target.clientHeight + 10; //10 for a small buffer\n if (bottom) { setShow(false)}\n else {setShow(true)};\n }\n }\n\n useEffect(() => {\n if (isMobile) {\n setShow(true);\n } else {\n setShow(false);\n }\n }, [isMobile])\n\n return (\n <>\n \n \n \n \n \n \n \n \n \n {url}\n \n \n \n {children}\n \n \n \n \n \n \n \n {/* {t`Scroll`} */}\n \n \n );\n};\n\n\ninterface ScrollProps {\n show: boolean;\n}\n\nconst ScrollNudge = styled.div`\nposition: absolute;\nbottom: 0;\nheight: 7%;\nmargin-bottom: 3.75%;\nwidth: 100%;\nleft: 0;\nbackground-color: rgba(255,255,255,0.25);\ndisplay: ${(props) => props.show ? 'flex' : 'none'};\ntext-align: center;\nalign-items: center;\njustify-content: center;\nsvg { font-size: 2.5vw}\n@media (min-width: 1200px) { display: none }\n`;\n\nconst StyledScroll = styled.p`\n opacity: 0.6;\n img{\n width: 23px;\n height: 25px;\n display: inline-block;\n margin-right: 10px;\n }\n text-align: center;\n padding-top: 15%;\n font-size: 18px !important;\n`;\n\nconst LaptopContainer = styled.div`\n height: calc(100vh - 75px);\n z-index: 2;\n overflow: hidden;\n @media screen and (max-width: 670px) {\n font-size: 2.75vw;\n line-height: unset;\n p {\n font-size: 3vw;\n margin-bottom: 5px;\n line-height: unset;\n }\n h3 {\n font-size: 3.5vw;\n margin-bottom: 10px;\n line-height: unset;\n }\n }\n`;\n\nconst LaptopBlock = styled.div`\n width: 100%;\n display: block;\n margin: 0 auto;\n max-width: 700px;\n position: relative;\n\n margin-bottom: -10%;\n @media screen and (min-width: 500px) {\n margin-bottom: -50px;\n top: 10px;\n }\n @media screen and (min-width: 1200px) {\n max-width: 1000px;\n }\n`;\n\ninterface LaptopContentProps {\n backgroundColor?: string;\n}\n\nconst LaptopContent = styled.div`\n position: relative;\n height: 97.5%;\n width: 97.5%;\n padding-top: 64%;\n border-radius: 1.8vw;\n background-color: ${(props: LaptopContentProps) => props.backgroundColor};\n overflow: hidden;\n @media screen and (-ms-high-contrast: active), (-ms-high-contrast: none) {\n overflow: visible\n }\n margin: 0 auto;\n display: block;\n @media screen and (min-width: 1200px) {\n border-radius: 25px;\n }\n`;\n\nconst LaptopContentScroll = styled.div`\n height: 100%;\n width: 100%;\n overflow-y: scroll;\n -ms-overflow-style: none;\n position: absolute;\n top: 0;\n padding: 3%;\n max-height: calc(100vh - 75px);\n`;\n\nconst LaptopFrame = styled.img`\n width: 100%;\n pointer-events: none;\n user-select: none;\n position: absolute;\n z-index: 3;\n top: 0;\n`;\n\nconst LaptopBottom = styled.img`\n width: 100%;\n pointer-events: none;\n user-select: none;\n position: absolute;\n z-index: 3;\n height: 4%;\n bottom: -3%;\n`;\n\nconst LaptopHeader = styled.div`\n width: 100%;\n padding: 2.25% 0 1.75% 0;\n flex-shrink: 0;\n background-color: #c7c3e8;\n @media screen and (max-width: 767px) {\n line-height: 0;\n }\n span {\n color: #6400aa;\n font-size: 3vw;\n @media screen and (min-width: 768px) {\n font-size: 1.5rem;\n }\n }\n`;\nconst AddressBar = styled.div`\n background-color: #ffffff;\n width: 83.33%;\n margin-left: 8.33%;\n border-radius: 100px;\n padding: 1% 3%;\n i {\n margin-right: 3%;\n }\n vertical-align: middle;\n`;\n\nconst StyledContainer = styled(Container)`\n min-height: 100%;\n display: flex;\n flex-flow: column;\n padding: 0;\n .row {\n margin: 0;\n }\n color: #6400aa;\n`;\nconst Message = styled.div`\n p {\n margin-top: 1rem;\n }\n`;\n\nexport default Laptop;\n","import React, { useState, useEffect } from 'react';\nimport styled from 'styled-components';\nimport { motion } from 'framer-motion';\nimport ModalOverlay from '../../../general/ModalOverlay';\nimport { Button } from 'react-bootstrap';\n\nimport { t } from 'ttag';\n\ninterface CharacteristicProps {\n show: boolean;\n background?: string;\n title: string;\n icon: string;\n onClose: () => void;\n}\n\nconst CharacteristicFound: React.FC = ({\n children,\n show,\n title,\n icon,\n background = 'rgba(62,0,0,0.8)',\n onClose,\n}) => {\n let footer = ;\n\n return (\n <>\n \n \n

{ t`CHARACTERISTIC FOUND` }

\n \n }\n footer={footer}\n backgroundColor=\"rgba(62, 0, 0, 0.8)\"\n >\n
\n

\n {title}\n

\n \n

{children}

\n
\n
\n \n \n );\n};\n\nconst Card = styled(motion.div)`\n background-color: #ffffff;\n padding: 15px 20px;\n border-radius: 10px;\n position: relative;\n width: 100%;\n max-width: 400px;\n display: block;\n margin: 10px auto;\n text-align: left;\n p {\n color: #6400aa;\n margin-bottom: 0;\n }\n`;\n\nconst Icon = styled(motion.img)`\n width: 50px;\n margin: 10px auto;\n display: block;\n`;\n\nexport default CharacteristicFound;\n","import React, { useState } from 'react';\nimport styled from 'styled-components';\n\ninterface EmailComponentProps {\n enabled: boolean;\n classes?: string;\n onSelect: () => void;\n}\n\nconst EmailComponent: React.FC = ({ children, enabled, onSelect, classes = '' }) => {\n const [answered, setAnswered] = useState(false);\n const [hover, setHover] = useState(false);\n\n const hovering = enabled && hover && !answered;\n\n const handleClick = () => {\n setAnswered(true);\n onSelect();\n };\n\n return (\n enabled && !answered && setHover(true)}\n onMouseLeave={() => setHover(false)}\n onClick={() => (enabled && !answered ? handleClick() : undefined)}\n >\n {children}\n \n );\n};\n\nconst Highlight = styled.div<{ hover: boolean }>`\n cursor: pointer;\n display: inline-block;\n border: solid transparent 2px;\n border-color: ${(props) => (props.hover ? 'pink' : 'transparent')};\n`;\n\nconst Wrapper = styled.div<{ hover: boolean }>`\n width: 100%;\n display: block;\n &.email-button-attachment {\n ${Highlight} {\n padding: 2% 8% 2% 1%;\n }\n button {\n padding: 5% 10% !important;\n }\n }\n`;\nexport default EmailComponent;\n","import React, { useEffect, useState, useContext } from 'react';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport { TEmailClientQuestion } from './EmailClient';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport toaster from 'toasted-notes';\nimport Turtle from '../../../characters/Turtle';\nimport { motion, useAnimation } from 'framer-motion';\nimport CharacteristicFound from '../../CharacteristicFound';\nimport turtle from '../../../assets/characters/2-turtle.svg';\nimport sfx from '../../../../../../services/sounds';\nimport VolumeContext from '../../../../../misc/volume-context';\n\nimport icon from '../../../assets/characteristics/tutorial/slide_1.svg';\nimport EmailComponent from './EmailComponent';\n\nimport VoiceoverContext from '../../../../../misc/voiceover-context';\n\n\ninterface EmailProps {\n email: TEmailClientQuestion;\n close: () => void;\n onComplete: () => void;\n onIncorrect: () => void;\n}\n\nconst CustomToast: React.FC = ({ children }) => {\n return {children};\n};\n\nconst Email: React.FC = ({ email, close, onComplete, onIncorrect }) => {\n // ask trustworth\n // if sus aspects ask to click\n // enable clickable areas as per data\n // run on complete\n const { volume } = useContext(VolumeContext);\n const { playVoiceover } = useContext(VoiceoverContext);\n\n useEffect(() => {\n playVoiceover('octo-help-2');\n }, [])\n\n const [questionTotal, setQuestionTotal] = useState(1);\n\n const [notQuiteText, setNotQuiteText] = useState('');\n\n const anim_popup = useAnimation();\n const popUpVariants = {\n hidden: {\n opacity: 0,\n transition: {\n duration: 0.2,\n delay: 2,\n },\n },\n show: {\n opacity: 1,\n transition: {\n duration: 0.2,\n },\n },\n };\n\n\n\n const [source, setSource] = useState(false);\n\n const [description, setDescription] = useState('');\n const [title, setTitle] = useState('');\n\n const [trustworthyComplete, setTrustworthyComplete] = useState(false);\n\n useEffect(() => {\n let amount = 0;\n if (email) {\n if (!trustworthyComplete) {\n amount++;\n } else {\n playVoiceover('octo-help-3')\n\n }\n\n if (email.dodgyAttachment) {\n amount++;\n }\n\n if (email.dodgyEmail) {\n amount++;\n }\n\n if (email.dodgyBody) {\n amount++;\n }\n\n setQuestionTotal(amount);\n }\n\n }, [email, trustworthyComplete]);\n\n useEffect(() => {\n if (questionTotal === 0) {\n // onComplete();\n }\n }, [questionTotal]);\n\n async function animateNotQuite(text: string) {\n setNotQuiteText(text);\n if (volume) sfx.incorrect.play();\n await anim_popup.start('show');\n await anim_popup.start('hidden');\n }\n const handleTrustworthy = (correct: boolean, trustworthy: boolean) => {\n if (!correct) {\n if (volume) sfx.beep.play();\n playVoiceover('octo-incorrect-toast');\n toaster.notify(() => {t`Are you sure? Take a closer look...`}, {\n duration: 1250,\n position: 'bottom',\n });\n } else {\n if (volume) sfx.correct.play();\n setTrustworthyComplete(true);\n subQuestionCompeleted();\n\n if (trustworthy) {\n onComplete();\n }\n }\n };\n\n const subQuestionCompeleted = (msg?: string) => {\n if (msg) {\n // toaster.notify(() => {msg},{\n // duration: 4000,\n // position: 'bottom'\n // });\n }\n setQuestionTotal(questionTotal - 1);\n };\n\n const renderQuestion = () => {\n if (!trustworthyComplete) {\n return (\n <>\n \n \n \n

{t`Does this look trustworthy?`}

\n handleTrustworthy(email.trustworthy, email.trustworthy)}\n >\n \n \n handleTrustworthy(!email.trustworthy, email.trustworthy)}\n >\n \n \n
\n \n \n );\n }\n\n if (email.dodgyAttachment || email.dodgyEmail) {\n return (\n <>\n \n \n \n

{t`Excellent! Now click on anything untrustworthy in this email.`}

\n
\n \n \n );\n }\n\n return null;\n };\n\n const handleDodgyAttachment = () => {\n if (volume) sfx.synthSuccess.play();\n playVoiceover('octo-char-2');\n setTitle(t`Dangerous Attachment`);\n setDescription(\n t`Emails can have attachments infected with software that intentionally damages your computer or steals personal details. If you're unsure about an attachment use your antivirus software to scan it.`,\n );\n setSource(true);\n subQuestionCompeleted(\n t`Excellent! If unsure about an attachment use your antivirus to scan the email attachment.`,\n );\n email.dodgyAttachment = false;\n };\n\n const handleDodgyEmail = () => {\n if (volume) sfx.synthSuccess.play();\n playVoiceover('octo-char-1')\n setTitle(t`Untrustworthy Email`);\n setDescription(\n t`Look out for email addresses that are unfamiliar or contain spelling mistakes.`,\n );\n setSource(true);\n subQuestionCompeleted(t`Perfect, the email in this case is not what we expect.`);\n email.dodgyEmail = false;\n };\n\n const handleDodgyBody = () => {\n if (volume) sfx.synthSuccess.play();\n playVoiceover('octo-char-3')\n setTitle(t`Suspicious Content`);\n setDescription(\n t`Be careful with emails that promise rewards, gifts and prizes. Often if the email sounds too good to be true, it is likely to be a scam.`,\n );\n setSource(true);\n subQuestionCompeleted(t`Perfect, the email in this case is not what we expect.`);\n email.dodgyBody = false;\n };\n\n const handleIncorrectSelection = (text: string) => {\n if (volume) sfx.incorrect.play();\n onIncorrect();\n animateNotQuite(text);\n };\n\n return (\n <>\n \n <>\n

{ t`Not Quite!` }

\n

{notQuiteText}

\n \n \n
\n {\n setSource(false);\n\n if (questionTotal === 0) {\n onComplete();\n }\n }}\n >\n {description}\n \n \n \n \n handleIncorrectSelection(t`The subject of this email looks fine.`)}\n >\n

{email.subject} playVoiceover(email.contentSpriteName)}>

\n \n\n \n \n \n \n

?

\n
\n \n \n \n handleIncorrectSelection(t`This display name looks legitimate.`)\n }\n >\n {email.name}\n \n \n handleIncorrectSelection(t`This email address looks legitimate.`)\n }\n >\n {email.email}\n \n \n \n \n \n \n \n
\n \n \n \n \n handleIncorrectSelection(\n t`The content of this email looks legitimate.`,\n )\n }\n >\n {email.content}\n \n {email.attachment ?
: null}\n {email.attachment ? (\n \n \n \n ) : null}\n
\n \n
\n
\n \n
\n
\n {renderQuestion()}\n \n );\n};\n\nconst PopUp = styled(motion.div)`\n pointer-events: none;\n user-select: none;\n position: fixed;\n width: 100%;\n max-width: 400px;\n max-height: 300px;\n left: 50%;\n z-index: 999;\n padding: 20px;\n border-radius: 5px;\n top: 50%;\n box-shadow: 0 10px 25px rgba(0, 0, 0, 0.6);\n transform: translateY(-50%) translateX(-50%);\n background-color: #e60050;\n h3,\n p {\n color: #ffffff;\n }\n h3 {\n font-size: 24px;\n }\n p {\n font-size: 18px;\n }\n`;\n\n// 3 types\n\n//mobile = full bottom\n// up to 767px\n\n//small landscape = bottom\n// up to 1200 and min-height 650\n\n// desktop = right\n// 1200 onwards\n\n// large desktop = bottom\n// 1200 onwards and min-height 850\n\nconst EmailText = styled.p<{ hover: boolean }>`\n border-bottom: ${(props) => (props.hover ? 'solid pink 4px' : 'none')};\n`;\n\ninterface ThumbProps {\n direction: string;\n}\n\nconst Thumb = styled.button`\n background: #FFFFFF;\n box-shadow: 0px 3px 6px rgba(0, 0, 0, 0.1);\n border-radius: 5px;\n width: 45%;\n margin: 0 2%;\n border: 0 !important;\n color: #ffffff !important;\n font-size: 1rem;\n &:hover {\n opacity: 0.8;\n }\n padding: 5px 0;\n background-color: ${(props) => (props.direction === 'up' ? '#00C3A5' : '#E60050')};direction\n`;\n\nconst Trustworthy = styled(motion.div)`\n position: fixed;\n bottom: 0;\n height: 80px;\n width: 100%;\n max-width: 320px;\n z-index: 999;\n left: calc(50% - 160px);\n p {\n margin-bottom: 5px !important;\n font-size: 16px;\n font-family: 'BT Font Bold';\n line-height: 14px;\n }\n h4 {\n font-size: 20px;\n line-height: 25px;\n }\n`;\n\nconst Message = styled.div`\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n background-color: #ffffff;\n box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.1);\n padding: 10px 15px;\n display: block;\n width: 100%;\n margin: 0 auto;\n max-width: 350px;\n height: 100%;\n position: relative;\n`;\n\nconst EmailContent = styled.div`\n padding-top: 3%;\n hr {\n margin-top: 2%;\n margin-bottom: 2%;\n }\n`;\n\nconst EmailCard = styled.div`\n background-color: #ffffff;\n border: 1px solid #d1d1d1;\n padding: 3%;\n a {\n color: #6400aa;\n }\n .btn-3d,\n .btn-3d-dark {\n padding: 1% 2%;\n font-size: 2vw;\n @media screen and (min-width: 768px) {\n font-size: 1rem;\n }\n }\n .email-dodgy {\n border-bottom: solid pink 4px;\n }\n .attachment-dodgy {\n border: solid 2px pink;\n }\n`;\n\nconst LaptopContent = styled.div`\n padding: 5% 1% 10% 1%;\n @media screen and (min-width: 768px) {\n h3 {\n font-size: 1.5rem;\n }\n }\n`;\n\nconst UserCircle = styled.div`\n border-radius: 50%;\n width: 100%;\n padding-top: 100%;\n position: relative;\n max-height: 40px;\n p {\n color: #ffffff;\n margin-bottom: 0;\n font-weight: 700;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateY(-50%) translateX(-50%);\n }\n background-color: #3b0a5d;\n`;\n\nconst StyledToast = styled.div`\n background-color: #ffffff;\n border-radius: 10px;\n padding: 0.5rem 0.75rem;\n box-shadow: 0 4px 8px rgba(0, 0, 0, 0.24);\n color: #6400aa;\n position: relative;\n`;\n\nconst Character = styled(motion.img)`\n position: absolute;\n z-index: -1;\n width: 50px;\n right: 5px;\n top: -50px;\n`;\n\nexport default Email;\n","import React, { useState, useEffect, useContext } from 'react';\nimport { GameProps, GameQuestion, useGameLogic } from '../../../../../core/Game';\nimport { t } from 'ttag';\nimport { Button, Row, Col, Table } from 'react-bootstrap';\nimport Email from './Email';\nimport styled from 'styled-components';\nimport Turtle from '../../../characters/Turtle';\nimport { motion } from 'framer-motion';\nimport VoiceoverContext from '../../../../../misc/voiceover-context';\nimport Cookies from 'js-cookie';\n\n\nexport type TEmailClientQuestion = GameQuestion & {\n subject: string;\n name: string;\n email: string;\n content: string;\n contentSpriteName: string;\n attachment?: string;\n read: boolean;\n trustworthy: boolean;\n dodgyEmail?: boolean;\n dodgyAttachment?: boolean;\n dodgyBody?: boolean;\n onOpen: () => void;\n completed?: boolean;\n};\n\ntype TEmailClientAction = {\n text: string;\n action?: () => void;\n icon?: string;\n};\n\nconst EmailClient: React.FC & { onIncorrect: () => void }> = ({\n gameData,\n index = 0,\n onGameComplete,\n onIncorrect,\n}) => {\n const [openEmail, setOpenEmail] = useState(null);\n const [unread, setUnread] = useState(gameData.length);\n\n const [completed, setCompleted] = useState(0);\n\n const [localGameData, setLocalGameData] = useState(gameData);\n\n const { playVoiceover } = useContext(VoiceoverContext);\n\n useEffect(() => {\n playVoiceover('octo-help-1');\n }, [])\n\n\n useEffect(() => {\n if (localGameData && openEmail) {\n localGameData.map((mail) => {\n if (mail.subject === openEmail.subject && !openEmail.read) {\n setUnread(unread - 1);\n openEmail.read = true;\n }\n\n // shouldnt this be mail???\n return openEmail;\n });\n }\n }, [openEmail, localGameData]);\n\n useEffect(() => {\n if (localGameData) {\n if (localGameData.length === completed) {\n onGameComplete();\n }\n }\n }, [completed, localGameData]);\n\n if (!localGameData) {\n return null;\n }\n\n if (openEmail) {\n return (\n setOpenEmail(null)}\n onIncorrect={onIncorrect}\n onComplete={() => {\n setCompleted(completed + 1);\n\n localGameData.map((mail) => {\n if (mail.subject === openEmail.subject) {\n openEmail.completed = true;\n }\n\n return openEmail;\n });\n\n setOpenEmail(null);\n }}\n >\n );\n }\n\n return (\n <>\n \n \n \n

\n {t`BarefootMail`} {unread && (unread > 0) ? `(${unread})` : null}{' '}\n

\n {localGameData.map((email, index) => (\n (!email.completed ? setOpenEmail(email) : undefined)}\n read={email.read}\n completed={email.completed}\n >\n {email.completed ? (\n \n ) : (\n \n )}{' '}\n {email.read ? email.subject : {email.subject}}\n \n ))}\n \n
\n {!openEmail ? (\n \n \n \n

{t`You've got mail! Open each email and see if you can spot anything suspicious.`}

\n
\n \n ) : null}\n
\n \n );\n};\n\ninterface EmailProps {\n read: boolean;\n completed?: boolean;\n}\n\nconst EmailButton = styled.button`\n display: block;\n padding: 1% 2%;\n width: 100%;\n text-align: left;\n color: #6400aa;\n background-color: ${(props: EmailProps) => (props.read ? (props.completed ? '#d0eacf' : '#F1EFFF') : '#ffffff')};\n border: 0;\n border-bottom: solid #e8e8e8 1px;\n font-family: BT Font Bold;\n ${(props: EmailProps) => (props.read ? 'font-family: BT Font Regular;' : null)}\n`;\nconst LaptopContent = styled.div`\n padding: 5% 1%;\n\n @media screen and (min-width: 768px) {\n h3 {\n font-size: 1.5rem;\n }\n }\n`;\n\nconst Trustworthy = styled(motion.div)`\n position: fixed;\n bottom: 0;\n height: 70px;\n width: 320px;\n z-index: 999;\n left: calc(50% - 160px);\n p {\n margin-bottom: 5px !important;\n font-size: 18px;\n line-height: 24px;\n }\n h4 {\n font-size: 20px;\n line-height: 25px;\n }\n`;\n\ninterface MessageProps {\n welsh: boolean\n}\n\nconst Message = styled.div`\n border-top-left-radius: 10px;\n border-top-right-radius: 10px;\n background-color: #ffffff;\n box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.1);\n padding: 10px 15px;\n display: block;\n width: 100%;\n margin: 0 auto;\n max-width: 350px;\n height: 100%;\n position: relative;\n ${(props) => props.welsh ? 'p { font-size: 15px }' : ''}\n`;\n\nconst Character = styled(motion.img)`\n position: absolute;\n z-index: -1;\n width: 50px;\n right: 5px;\n top: -50px;\n`;\n\nexport default EmailClient;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport Computer from '../../components/Computer';\nimport Laptop from '../../components/Laptop';\nimport { t } from 'ttag';\nimport EmailClient, { TEmailClientQuestion } from '../../components/interactive/emailclient/EmailClient';\nimport Turtle from '../../characters/Turtle';\nimport styled from 'styled-components';\nimport { CyberSecurityData } from '../..';\n\nconst EmailGame: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const gameData: TEmailClientQuestion[] = [\n {\n subject: t`This year's top movies so far`,\n name: t`Movies 4 Free`,\n email: t`no-reply@freemoviesss.com`,\n content: t`It's your lucky day! Here are some free movies for you to watch that we know you are going to love.\n\n It's all legal... we promise!`,\n contentSpriteName: 'octo-email-1',\n attachment: t`free_movies.zip`,\n read: false,\n trustworthy: false,\n dodgyAttachment: true,\n dodgyEmail: true,\n onOpen: () => {},\n },\n {\n subject: t`Daily Fish: Among Us breaks gaming records`,\n name: t`Daily Fish Newsletter`,\n email: t`news@dailyfish.com`,\n content: t`The wildly popular game Among Us reportedly had over 3 million users playing at once last weekend. Wow!`,\n contentSpriteName: 'octo-email-2',\n read: false,\n trustworthy: true,\n onOpen: () => {},\n },\n {\n subject: t`500 FortKite coins won!`,\n name: t`Mr Smith`,\n email: t`no-reply@fortneeet.com`,\n content: t`You just won 500 coins, claim them now by logging into your account.\n\n Log in now.`,\n contentSpriteName: 'octo-email-3',\n read: false,\n trustworthy: false,\n dodgyEmail: true,\n dodgyBody: true,\n\n onOpen: () => {},\n },\n\n {\n subject: t`Have you seen our latest games?`,\n name: t`Barefoot Computing`,\n email: t`games@barefootgames.org`,\n content: t`Check out the latest educational adventures from Barefoot, head to barefootgames.org to view all our games.`,\n contentSpriteName: 'octo-email-4',\n read: false,\n trustworthy: true,\n onOpen: () => {},\n },\n ];\n\n return (\n \n \n {/* Go through the emails and decide if they are trustworthy! */}\n data.addPoints(-2)}\n >\n \n {/* \n Looks like you have some emails, check them out and decide if they are trustworthy or not!\n \n */}\n \n );\n};\nconst Hint = styled.div`\n background-color: #00A0D6;\n box-shadow: 0 2px 4px rgba(0,0,0,0.25);\n color: #ffffff;\n border-radius: 5px;\n padding: 0.5rem 1rem;\n display: block;\n margin: 0 auto;\n width: 100%;\n max-width: 360px;\n font-size: 14px;\n position: absolute;\n right: 0;\n top: -1%;\n display none;\n z-index:999;\n i {\n position: absolute;\n left: -15px;\n top: 20%;\n height: 28px;\n width: 28px;\n font-size: 1rem;\n text-align: center;\n border-radius: 100px;\n padding: 5px 10px;\n color: #00A0D6;\n background-color: #ffffff;\n box-shadow: 0 2px 4px rgba(0,0,0,0.25);\n }\n @media (min-width: 768px) {\n display: block;\n }\n\n`;\n\nconst Commentary = styled.div`\n position: absolute;\n right: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n margin-top: -1rem;\n z-index: 999;\n @media (min-width: 768px) and (max-width: 1200px) and (max-height: 600px) {\n display: none;\n }\n`;\nconst Character = styled.img`\n width: 70px;\n @media (min-width: 768px) {\n width: 110px;\n }\n`;\nconst Comment = styled.div`\n background-color: #ffffff;\n border-radius: 10px;\n color: #6400aa;\n padding: 1rem;\n text-align: left;\n margin-left: 0.75rem;\n margin-right: 0.75rem;\n max-width: 400px;\n box-shadow: 0px 4px 16px rgba(0, 0, 0, 0.1);\n font-size: 0.875rem;\n @media (min-width: 768px) {\n font-size: 1rem;\n }\n`;\n\nexport default EmailGame;\n","import { TCharacter } from '../../../general/Character';\nimport image from '../assets/characters/2-octopus.svg';\nimport { t } from 'ttag';\n\nconst Squid: TCharacter = {\n characterName: t`Octo`,\n characterImage: image,\n characterWidth: 150,\n characterHeight: 124,\n};\n\nexport default Squid;\n","import React, { useEffect } from 'react';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport sfx from '../../../../../services/sounds';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Squid from '../../characters/Squid';\n\nconst SquidIntro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n useEffect(() => {\n data.playMusic(sfx.themeCybersecurityOcto);\n }, []);\n\n const dialogue: DialogueData[] = [\n {\n character: Squid,\n text: t`Hi, I'm Octo. I may have a lot of arms but my email is still chockablock! Can you help me sort out my inbox?`,\n textSpriteName: 'octo-1-1',\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default SquidIntro;\n","import React, {useContext, useEffect} from 'react';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport MultipleChoice, { TMultiChoiceQuestion } from '../../../../interactive/quiz/multi-choice/MultiChoice';\nimport { t } from 'ttag';\nimport questioner from '../../characters/Turtle';\nimport styled from 'styled-components';\n\nconst TurtleQuestion: React.FC = ({ defaultHeader, nextSlide }) => {\n const { playVoiceover } = useContext(VoiceoverContext);\n useEffect(() => {\n playVoiceover('octo-question-1');\n }, [])\n const gameData: TMultiChoiceQuestion[] = [\n {\n question: t`How many of these are suspicious features of an email?`,\n answers: [\n { text: t`Includes an offer that seems too good to be true.`, correct: true },\n { text: t`Received in the afternoon.`, correct: false },\n { text: t`Poor grammar.`, correct: true },\n { text: t`Unknown sender email address.`, correct: true },\n ],\n },\n ];\n\n return (\n \n \n
{questioner.characterName}
\n \n
\n \n \n
\n
\n {\n playVoiceover('sound-5');\n setTimeout(() => playVoiceover('octo-question-1-correct'), 1000);\n }}\n onIncorrectAnswer={() => {\n playVoiceover('sound-1');\n setTimeout(() => playVoiceover('question-incorrect'), 1000);\n }}\n forceOnAnswer={true}\n >\n

{t`Select ALL that apply`}

\n
\n
\n );\n};\n\nconst Shadow = styled.div`\n border-radius: 50%;\n display: block;\n position: absolute;\n width: 100%;\n height: 40px;\n bottom: -20px;\n left: 0;\n background: rgba(0, 0, 0, 0.4);\n opacity: 0.4;\n -webkit-filter: blur(10px);\n -webkit-transform: scale(1, 0.2);\n z-index: 0;\n`;\n\nconst Character = styled.div`\n position: absolute;\n left: 0;\n top: 0;\n transform: translateX(-50%) translateY(-50%);\n z-index: -1;\n img {\n position: relative;\n z-index: 2;\n max-width: 100%;\n }\n`;\n\nconst QuestionCard = styled.div`\n width: 100%;\n background-color: #ffffff;\n color: #6400aa;\n max-width: 100%;\n display: block;\n margin: 20px auto 0 auto;\n position: relative;\n padding: 1.5rem 1.25rem 0.75rem 1.25rem;\n margin-top: 3rem;\n border-radius: 5px;\n max-width: 400px;\n`;\n\nexport default TurtleQuestion;\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Phisherman from '../../characters/Phisherman';\n\nconst BlockUserDodgePhisher: React.FC = ({ defaultHeader, nextSlide, gotoSlide, currentIndex }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Phisherman,\n text: t`Noooooooo... I have been sending out emails all day! How did I not catch you?`,\n textSpriteName: 'octo-phisherman-1',\n buttonText: t`Next`,\n buttonAction: () => nextSlide(),\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default BlockUserDodgePhisher;\n","import WhaleIsland from '../3-fishfood/WhaleIsland';\nimport EmailGame from './EmailGame';\nimport SquidIntro from './SquidIntro';\nimport TurtleQuestion from './TurtleQuestion';\nimport UserDodge from './UserDodge';\nimport UserDodgePhisher from './UserDodgePhisher';\n\nexport default [WhaleIsland, SquidIntro, EmailGame, UserDodge, UserDodgePhisher, TurtleQuestion];\n","import React, { useEffect, useState, useContext } from 'react';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\nimport { CyberSecurityData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Dodged from '../../components/Dodged';\nimport { t } from 'ttag';\n\nconst UserDodge: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n\n const { playVoiceover } = useContext(VoiceoverContext);\n useEffect(() => {\n const dodged = setTimeout(() => playVoiceover('octo-phished-desc'), 4000);\n return () => {clearTimeout(dodged)}\n }, []);\n return (\n \n \n \n );\n};\n\nexport default UserDodge;\n","import { TCharacter } from '../../../general/Character';\nimport image from '../assets/characters/2-fish.svg';\nimport { t } from 'ttag';\n\nconst Seal: TCharacter = {\n characterName: t`Fish`,\n characterImage: image,\n characterWidth: 100,\n characterHeight: 70,\n};\n\nexport default Seal;\n","import React, { useEffect } from 'react';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport sfx from '../../../../../services/sounds';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Seal from '../../characters/Seal';\n\nconst SealIntro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n useEffect(() => {\n data.playMusic(sfx.themeCybersecurityFish);\n }, []);\n\n const dialogue: DialogueData[] = [\n {\n character: Seal,\n text: t`Hi, I'm ${Seal.characterName} - I’m just watching this hilarious new NikNak video... Have you got it? You should follow me! I do some cool tricks on there.`,\n textSpriteName: 'fish-1-1',\n buttonText: t`Sure, I’ll follow you!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default SealIntro;\n","import React, {useContext, useEffect} from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Col, Row, Container } from 'react-bootstrap';\nimport Phone from '../../components/Phone';\nimport styled from 'styled-components';\nimport seal_head from '../../assets/characters/fish-head.svg';\nimport tiktok_1 from '../../assets/misc/fish-tiktok-1.jpg';\nimport tiktok_2 from '../../assets/misc/fish-tiktok-2.jpg';\nimport tiktok_3 from '../../assets/misc/fish-tiktok-3.jpg';\nimport tiktok_4 from '../../assets/misc/fish-tiktok-4.jpg';\nimport { t } from 'ttag';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\n\nconst TikTokFollow: React.FC = ({ defaultHeader, nextSlide }) => {\n let next = ;\n const { playVoiceover } = useContext(VoiceoverContext);\n useEffect(() => {\n playVoiceover('fish-follow');\n }, [])\n return (\n \n \n \n \n NikNak\n \n \n \n \n \n \n \n

{t`Skillful Fish`}

\n \n \n
\n \n \n \"Fish\n \n \n \"Fish\n \n \n \"Fish\n \n \n \"Fish\n \n \n
\n
\n
\n
\n );\n};\nconst StyledContainer = styled(Container)`\n min-height: 100%;\n display: flex;\n flex-flow: column;\n padding: 0;\n`;\n\nconst Message = styled.div`\n background-color: #ffffff;\n border-radius: 10px;\n color: #6400aa;\n padding: 4%;\n p {\n margin-bottom: 0;\n font-size: 16px;\n line-height: 20px;\n }\n`;\n\nconst MessageBtn = styled(Button)`\n background: #ffffff;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n border-radius: 100px;\n width: 100%;\n margin-bottom: 15px;\n color: #6400aa;\n`;\nconst SealCircle = styled.img`\n width: 100%;\n`;\n\nconst PhoneHeaderTitle = styled.p`\n align-self: flex-end;\n margin: 0;\n`;\nconst App = styled.img`\n width: 100%;\n padding-left: 10%;\n display: block;\n`;\n\nconst PhoneContent = styled.div`\n flex: 1;\n padding: 5% 5% 3% 5%;\n display: flex;\n flex-flow: column;\n`;\n\nconst TikTok = styled.div`\n display: inline-block;\n margin: 2%;\n width: 28%;\n img {\n width: 100%;\n }\n`;\n\nconst PhoneHeader = styled.div`\n width: 100%;\n background-color: #6400aa;\n padding: 10% 5% 3% 5%;\n flex-shrink: 0;\n`;\n\nconst PhoneFooter = styled.div`\n height: 13%;\n display: none;\n width: 100%;\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n background-color: rgba(0, 0, 0, 0.1);\n padding: 2% 5%;\n @media screen and (min-width: 1000px) {\n display: block;\n }\n overflow: hidden;\n`;\n\nexport default TikTokFollow;\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Seal from '../../characters/Seal';\n\nconst SealIntro2: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Seal,\n text: t`Thanks! I have a lot of followers as you can see... but I always appreciate another one! `,\n textSpriteName: 'fish-2-1',\n buttonText: t`Next`,\n },\n {\n character: Seal,\n text: t`Be careful on NikNak though, there are plenty of scammers trying to phish your account.`,\n textSpriteName: 'fish-2-2',\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default SealIntro2;\n","import React, {useContext, useEffect} from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Col, Row, Container } from 'react-bootstrap';\nimport Phone from '../../components/Phone';\nimport styled from 'styled-components';\nimport seal_head from '../../assets/characters/fish-head.svg';\nimport unknown_tiktok from '../../assets/characters/unknown-tiktok.jpg';\nimport { t } from 'ttag';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\n\nconst TikTokMessages: React.FC = ({ defaultHeader, nextSlide }) => {\n let next = ;\n\n const { playVoiceover } = useContext(VoiceoverContext);\n\n useEffect(() => {\n playVoiceover('fish-messages');\n }, [])\n\n return (\n \n \n \n \n {t`NikNak Messages`}\n \n \n nextSlide()}>\n \n \n \n \n

{t`Hi there! Download the new version of NikNak!`}

\n \n
\n \n \n \n \n \n

{t`You have a new friend! You can now message them.`}

\n \n
\n
\n
\n
\n
\n );\n};\n\ninterface MessageProps {\n read: boolean;\n}\n\nconst Message = styled(Row)`\n padding: 2%;\n color: ${(props: MessageProps) => (props.read ? '#b1afe1' : '#6400aa')};\n background-color: ${(props: MessageProps) => (props.read ? 'transparent' : '#d6d1ff')};\n ${(props: MessageProps) => (props.read ? null : 'cursor: pointer; &:hover{opacity: 0.7}')}\n h4 {\n @media screen and (max-width: 767px) {\n font-size: 4vw;\n }\n font-family: ${(props: MessageProps) => (props.read ? 'BT Font Regular' : 'BT Font Bold')};\n }\n`;\n\nconst StyledContainer = styled(Container)`\n min-height: 100%;\n display: flex;\n flex-flow: column;\n padding: 0;\n`;\n\nconst SealCircle = styled.img`\n width: 100%;\n border-radius: 1000px;\n overflow: hidden;\n`;\n\nconst PhoneHeaderTitle = styled.p`\n align-self: flex-end;\n margin: 0;\n`;\nconst App = styled.img`\n width: 100%;\n padding-left: 10%;\n display: block;\n`;\n\nconst PhoneContent = styled.div`\n flex: 1;\n padding: 5% 5% 3% 5%;\n display: flex;\n flex-flow: column;\n`;\n\nconst TikTok = styled.div`\n display: inline-block;\n margin: 2%;\n width: 28%;\n img {\n width: 100%;\n }\n`;\n\nconst PhoneHeader = styled.div`\n width: 100%;\n background-color: #6400aa;\n padding: 10% 5% 3% 5%;\n flex-shrink: 0;\n`;\n\nconst PhoneFooter = styled.div`\n height: 13%;\n display: none;\n width: 100%;\n position: absolute;\n bottom: 0;\n left: 0;\n right: 0;\n background-color: rgba(0, 0, 0, 0.1);\n padding: 2% 5%;\n @media screen and (min-width: 1000px) {\n display: block;\n }\n overflow: hidden;\n`;\n\nexport default TikTokMessages;\n","import React, { useContext, useEffect, useState } from 'react';\nimport { GameProps, GameQuestion, useGameLogic } from '../../core/Game';\nimport styled from 'styled-components';\nimport { Button, Row, Container, Col } from 'react-bootstrap';\nimport { motion, useAnimation } from 'framer-motion';\nimport VoiceoverContext from '../../misc/voiceover-context';\n\nexport type TChatMessage = GameQuestion & {\n user: string;\n userImage?: string;\n message: string;\n messageSpriteName: string;\n actions: TChatAction[];\n};\n\ntype TChatAction = {\n text: string;\n textSpriteName: string;\n action?: () => void;\n icon?: string;\n};\n\ninterface IChat {\n title: string;\n nickname: string;\n avatar: string;\n}\n\nconst FishFoodChat: React.FC & IChat> = ({\n gameData,\n index = 0,\n onGameComplete,\n title,\n nickname,\n avatar,\n}) => {\n const [show, setShow] = useState(false);\n const [initial, setInitial] = useState(false);\n const { playVoiceover } = useContext(VoiceoverContext);\n const [previousMessage, setPreviousMessage] = useState(null);\n\n const newMessageText = useAnimation();\n const answers_anim = useAnimation();\n\n const onNextChatMessage = () => {\n // setPreviousMessage(chatMessage ?? null);\n // doAnimation();\n };\n\n const handleGameComplete = () => {\n onGameComplete();\n };\n\n const [chatMessage, nextChatMessage] = useGameLogic(\n gameData,\n handleGameComplete,\n onNextChatMessage,\n index,\n );\n\n const handleClick = () => {\n setShow(false);\n setTimeout(() => {\n nextChatMessage();\n }, 100);\n setTimeout(() => {\n setShow(true);\n }, 3000);\n }\n\n useEffect(() => {\n if (chatMessage) {\n if(!initial){\n setInitial(true);\n const answers = setTimeout(() => {setShow(true)}, 6000);\n return () => {clearTimeout(answers);};\n }\n }\n }, [chatMessage?.message]);\n useEffect(() => {\n if (chatMessage) {\n const timer = setTimeout(() => playVoiceover(chatMessage.messageSpriteName), 1000);\n return () => clearTimeout(timer);\n }\n }, [chatMessage?.message]);\n\n if (!chatMessage) {\n return null;\n }\n\n return (\n <>\n \n \n {title}\n \n\n \n {previousMessage ? (\n \n \n \n
\n {nickname ? nickname : 'Player'}\n
\n

{previousMessage}

\n \n \n \n \n \"Avatar\"\n \n \n
\n ) : null}\n \n \n \n {chatMessage.userImage ? (\n \"Avatar\"\n ) : (\n

?

\n )}\n
\n \n \n \n
\n {chatMessage.user}\n
\n

{chatMessage.message}

\n
\n \n
\n\n \n {chatMessage.actions.map((action, index) => (\n {\n setPreviousMessage(action.text);\n action.action ? action.action() : handleClick();\n }}\n onMouseEnter={() => playVoiceover(action.textSpriteName)}\n >\n {action.text}\n \n ))}\n \n
\n
\n \n );\n};\n\nconst StyledRow = styled(Row)`\n flex-shrink: 0;\n`;\n\nconst StyledContainer = styled(Container)`\n width: 100%;\n display: flex;\n flex-flow: column;\n padding: 0;\n`;\n\nconst Message = styled(motion.div)`\n background-color: #ffffff;\n border-radius: 10px;\n color: #6400aa;\n padding: 4%;\n margin-bottom: 1em;\n p {\n margin-bottom: 0;\n font-size: 16px;\n line-height: 20px;\n }\n`;\n\nconst MessageBtn = styled(Button)`\n background: #ffffff;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n border-radius: 100px;\n width: 100%;\n margin-bottom: 15px;\n color: #6400aa;\n`;\nconst UserCircle = styled.div`\n border-radius: 50%;\n width: 100%;\n padding-top: 100%;\n position: relative;\n max-height: 40px;\n overflow: hidden;\n background-color: rgba(0, 0, 0, 0.1);\n img {\n margin-bottom: 0;\n font-weight: 700;\n position: absolute;\n width: 150%;\n top: 50%;\n left: 50%;\n transform: translateY(-50%) translateX(-50%);\n }\n p {\n margin-bottom: 0;\n font-weight: 700;\n position: absolute;\n top: 50%;\n left: 50%;\n transform: translateY(-50%) translateX(-50%);\n }\n`;\n\nconst PhoneHeaderTitle = styled.p`\n align-self: flex-end;\n margin: 0;\n`;\nconst App = styled.img`\n width: 100%;\n padding-left: 10%;\n display: block;\n`;\n\nconst PhoneContent = styled.div`\n flex: 1;\n padding: 5% 5% 3% 5%;\n display: flex;\n flex-flow: column;\n`;\ninterface BtnProps {\n show: boolean\n}\n\nconst PhoneContentAnswers = styled(motion.div)`\n margin-top: auto;\n align-self: flex-end;\n width: 100%;\n flex-shrink: 0;\n display: ${(props) => props.show ? 'block' : 'none'};\n`;\n\nconst PhoneHeader = styled.div`\n width: 100%;\n background-color: #6400aa;\n padding: 10% 5% 3% 5%;\n flex-shrink: 0;\n`;\n\nexport default FishFoodChat;\n","import React, { useState, useEffect } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport styled from 'styled-components';\nimport { Button, Row, Container, Col } from 'react-bootstrap';\nimport * as Chat from '../../../../interactive/chat/Chat';\nimport Phone from '../../components/Phone';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\n\nconst NikNakChat: React.FC> = ({\n defaultHeader,\n nextSlide,\n gotoSlide,\n currentIndex,\n data,\n}) => {\n let next = ;\n\n const gameData: Chat.TChatMessage[] = [\n {\n user: t`NikNak78`,\n message: t`Download the new version of NikNak!\n Enjoy NikNak Videos and make some yourself! Now NikNak is only available in your region as NikNak Pro. Donwload below!\n Link: http://tiny.cc/dlink`,\n messageSpriteName: 'fish-chat-1',\n actions: [\n {\n text: t`Who are you?`,\n textSpriteName: 'fish-chat-a-1',\n },\n {\n text: t`Click the link`,\n textSpriteName: 'fish-chat-a-2',\n action: () => gotoSlide(currentIndex + 4),\n },\n {\n text: t`Block this user`,\n textSpriteName: 'fish-chat-a-3',\n action: () => gotoSlide(currentIndex + 1),\n },\n ],\n },\n\n {\n user: t`NikNak78`,\n message: t`This is NikNak, please follow the link: http://tiny.cc/dlink`,\n messageSpriteName: 'fish-chat-2',\n actions: [\n {\n text: t`Click the link`,\n textSpriteName: 'fish-chat-a-2',\n action: () => gotoSlide(currentIndex + 4),\n },\n {\n text: t`Block this user`,\n textSpriteName: 'fish-chat-a-3',\n action: () => gotoSlide(currentIndex + 1),\n },\n ],\n },\n ];\n\n return (\n \n \n nextSlide()}\n >\n \n \n );\n};\nexport default NikNakChat;\n","import React, { useEffect } from 'react';\nimport { t } from 'ttag';\nimport { TCharacter } from '../../../general/Character';\nimport Turtle from '../characters/Turtle';\nimport styled from 'styled-components';\nimport star from '../assets/gamification/star.svg';\nimport reflection from '../assets/gamification/reflection.svg';\nimport { CyberSecurityData } from '..';\nimport { motion } from 'framer-motion';\n\ntype CyberCardProps = {\n title: string;\n description: string;\n points: number;\n gameData: CyberSecurityData;\n character?: TCharacter;\n characterText?: string;\n backgroundColor?: string;\n showPoints?: boolean;\n};\n\nconst CyberCard: React.FC = ({\n title,\n description,\n points,\n backgroundColor = '#00C3A5',\n character = Turtle,\n characterText = t`Nice work!`,\n showPoints = true,\n gameData,\n}) => {\n useEffect(() => {\n if (points && showPoints) {\n gameData.addPoints(points);\n }\n }, []);\n return (\n \n {showPoints ? (\n \n
\n {points > 0 ? '+' : ''} {points}{' '}\n {t`Cyber Points`}\n
\n \n ) : null}\n\n \n \n

{title}

\n
\n

{description}

\n \n\n \n \n

{characterText}

\n
\n
\n );\n};\n\ninterface CardProps {\n backgroundColor: string;\n}\n\nconst Card = styled(motion.div)`\n width: 100%;\n padding: 30px 25px 40px 25px;\n background-color: ${(props: CardProps) => props.backgroundColor};\n border: 3px solid rgba(255, 255, 255, 0.5);\n position: relative;\n hr {\n border-color: #ffffff;\n }\n`;\nconst Character = styled.img`\n width: 15%;\n margin-left: 10%;\n display: inline-block;\n`;\n\nconst Reflection = styled.img`\n position: absolute;\n width: 40%;\n top: 0;\n left: 0;\n`;\nconst Message = styled(motion.div)`\n position: relative;\n margin-top: -40px;\n p {\n background-color: #ffffff;\n display: inline-block;\n max-width: 65%;\n border-radius: 5px;\n margin-left:3%;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.1);\n color: #6400aa;\n padding: 10px 20px;\n font-size: 18px;\n position: relative;\n height: 50px;\n &::after{\n content: '';\n position: absolute;\n right: 100%;\n top: 10px;\n width: 0;\n height: 0;\n border-bottom: 5px solid transparent;\n border-right: 10px solid #ffffff;\n border-top: 5px solid transparent;\n clear: both;\n }}\n }\n`;\n\nconst Star = styled.img`\n width: 24px;\n margin-right: 5px;\n margin-top: -3px;\n`;\n\nconst Points = styled(motion.div)`\n display: block;\n text-align: center;\n margin: 15px 0;\n h6 {\n margin-bottom: 0;\n background-color: rgba(0,0,0,0.1);\n border-radius 100px;\n padding: 10px 20px;\n display: inline-block;\n font-family: 'BT Font Extra Bold', sans-serif;\n }\n`;\nconst Wrapper = styled.div`\n max-width: 300px;\n display: block;\n margin: 0 auto;\n`;\n\nexport default CyberCard;\n","import React, {useContext, useEffect} from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport CyberCard from '../../components/CyberCard';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\n\nconst BlockUser: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n let next = ;\n const { playVoiceover } = useContext(VoiceoverContext);\n\n useEffect(() => {\n playVoiceover('fish-cyber-block');\n }, [])\n return (\n \n \n \n );\n};\n\nexport default BlockUser;\n","import React, { useEffect, useState, useContext } from 'react';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\nimport { CyberSecurityData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Dodged from '../../components/Dodged';\nimport { t } from 'ttag';\n\nconst UserDodge: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const { playVoiceover } = useContext(VoiceoverContext);\n useEffect(() => {\n const dodged = setTimeout(() => playVoiceover('fish-dodged-desc'), 4000);\n return () => { clearTimeout(dodged) }\n }, []);\n return (\n \n \n \n );\n};\n\nexport default UserDodge;\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Phisherman from '../../characters/Phisherman';\n\nconst BlockUserDodgePhisher: React.FC = ({ defaultHeader, gotoSlide, currentIndex }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Phisherman,\n text: t`No way! I thought I had you there. That's so annoying, it took me ages to make that fake NikNak account...`,\n textSpriteName: 'fish-phisherman-1',\n buttonText: t`Next`,\n buttonAction: () => gotoSlide(currentIndex + 4),\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default BlockUserDodgePhisher;\n","import React, {useContext, useEffect} from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport CyberCard from '../../components/CyberCard';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\n\nconst LinkClicked: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n let next = ;\n const { playVoiceover } = useContext(VoiceoverContext);\n useEffect(() => {\n playVoiceover('fish-cyber-click');\n }, [])\n\n return (\n \n \n \n );\n};\n\nexport default LinkClicked;\n","import React, { useEffect, useState, useContext } from 'react';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\nimport { CyberSecurityData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Phished from '../../components/Phished';\nimport { t } from 'ttag';\n\nconst UserPhished: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const { playVoiceover } = useContext(VoiceoverContext);\n useEffect(() => {\n const phished = setTimeout(() => playVoiceover('fish-phished-desc'), 4000);\n return () => { clearTimeout(phished) }\n }, []);\n return (\n \n \n \n );\n};\n\nexport default UserPhished;\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Phisherman from '../../characters/Phisherman';\n\nconst UserPhishedPhisher: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Phisherman,\n text: t`This is too easy! You have to admit it, using a fake NikNak account was a clever way to try and phish you!`,\n textSpriteName: 'fish-phisherman-2',\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default UserPhishedPhisher;\n","import React, {useContext, useEffect} from 'react';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport MultipleChoice, { TMultiChoiceQuestion } from '../../../../interactive/quiz/multi-choice/MultiChoice';\nimport { t } from 'ttag';\nimport questioner from '../../characters/Turtle';\nimport styled from 'styled-components';\n\nconst TurtleQuestion: React.FC = ({ defaultHeader, nextSlide }) => {\n const { playVoiceover } = useContext(VoiceoverContext);\n useEffect(() => {\n playVoiceover('fish-question-1');\n }, [])\n const gameData: TMultiChoiceQuestion[] = [\n {\n question: t`How can you avoid security issues with apps?`,\n answers: [\n { text: t`Download apps from anywhere`, correct: false },\n { text: t`Check the reviews`, correct: true },\n { text: t`Only download from official app stores`, correct: true },\n { text: t`Keep apps up to date`, correct: true },\n ],\n },\n ];\n\n return (\n \n \n
{questioner.characterName}
\n \n
\n \n \n
\n
\n {\n playVoiceover('sound-7');\n setTimeout(() => playVoiceover('fish-question-1-correct'), 1000);\n }}\n onIncorrectAnswer={() => {\n playVoiceover('sound-2');\n setTimeout(() => playVoiceover('question-incorrect'), 1000);\n }}\n forceOnAnswer={true}\n >\n

{t`Select ALL that apply`}

\n
\n
\n );\n};\n\nconst Shadow = styled.div`\n border-radius: 50%;\n display: block;\n position: absolute;\n width: 100%;\n height: 40px;\n bottom: -20px;\n left: 0;\n background: rgba(0, 0, 0, 0.4);\n opacity: 0.4;\n -webkit-filter: blur(10px);\n -webkit-transform: scale(1, 0.2);\n z-index: 0;\n`;\n\nconst Character = styled.div`\n position: absolute;\n left: 0;\n top: 0;\n transform: translateX(-50%) translateY(-50%);\n z-index: -1;\n img {\n position: relative;\n z-index: 2;\n max-width: 100%;\n }\n`;\n\nconst QuestionCard = styled.div`\n width: 100%;\n background-color: #ffffff;\n color: #6400aa;\n max-width: 100%;\n display: block;\n margin: 20px auto 0 auto;\n position: relative;\n padding: 1.5rem 1.25rem 0.75rem 1.25rem;\n margin-top: 5rem;\n border-radius: 5px;\n max-width: 400px;\n`;\n\nexport default TurtleQuestion;\n","import SealIntro from './SealIntro';\nimport TikTokFollow from './TikTokFollow';\nimport SealIntro2 from './SealIntro2';\nimport TikTokMessages from './TikTokMessages';\nimport TikTokChat from './TikTokChat';\nimport BlockUser from './BlockUser';\nimport UserDodge from './UserDodge';\nimport UserDodgePhisher from './UserDodgePhisher';\nimport LinkClicked from './LinkClicked';\nimport UserPhished from './UserPhished';\nimport UserPhishedPhisher from './UserPhishedPhisher';\nimport TurtleQuestion from './TurtleQuestion';\nimport WhaleIsland from '../3-fishfood/WhaleIsland';\n\nexport default [\n WhaleIsland,\n SealIntro,\n TikTokFollow,\n SealIntro2,\n TikTokMessages,\n TikTokChat,\n BlockUser,\n UserDodge,\n UserDodgePhisher,\n LinkClicked,\n UserPhished,\n UserPhishedPhisher,\n TurtleQuestion,\n];\n","import React, {useContext, useEffect} from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport CyberCard from '../../components/CyberCard';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\n\nconst CloseAd: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n let next = ;\n const { playVoiceover } = useContext(VoiceoverContext);\n useEffect(() => {\n playVoiceover('endturtle-cyber-close');\n }, [])\n return (\n \n \n \n );\n};\n\nexport default CloseAd;\n","import React from 'react';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Phisherman from '../../characters/Phisherman';\n\nconst PhisherOutro: React.FC> = ({\n defaultHeader,\n nextSlide,\n gotoSlide,\n currentIndex,\n data,\n}) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Phisherman,\n textSpriteName: 'endturtle-phisherman-1',\n text: t`I got you! That pop-up was put in by me and didn't come from Barefoot, so I managed to steal your email and password!`,\n buttonText: t`Next`,\n buttonAction: () => gotoSlide(currentIndex + 2),\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default PhisherOutro;\n","import React from 'react';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Phisherman from '../../characters/Phisherman';\n\nconst PhisherOutroDodged: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Phisherman,\n text: t`Darn. Sneaking that fake advert into this game was one of my most cunning moves yet! I was so close to stealing your email and password!`,\n textSpriteName: 'endturtle-phisherman-2',\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default PhisherOutroDodged;\n","import React, { useEffect, useState, useContext } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { CyberSecurityData } from '../..';\nimport Phished from '../../components/Phished';\nimport Dodged from '../../components/Dodged';\nimport { motion } from 'framer-motion';\nimport { t } from 'ttag';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\n\nconst PhishingSite: React.FC> = ({\n defaultHeader,\n nextSlide,\n gotoSlide,\n currentIndex,\n data,\n}) => {\n const [show, setShow] = useState(false);\n const [dodgedShow, setDodgedShow] = useState(false);\n const [usernameActive, setUsernameActive] = useState(false);\n const [passwordActive, setPasswordActive] = useState(false);\n\n const { playVoiceover } = useContext(VoiceoverContext);\n\n const handlePhished = () => {\n setShow(true);\n const phished = setTimeout(() => playVoiceover('endturtle-phished-desc'), 4000);\n return () => { clearTimeout(phished) }\n }\n const handleDodged = () => {\n setDodgedShow(true);\n const dodged = setTimeout(() => playVoiceover('endturtle-dodged-desc'), 4000);\n return () => { clearTimeout(dodged) }\n }\n\n return (\n \n {show ? (\n \n ) : null}\n {dodgedShow ? (\n gotoSlide(currentIndex + 2)}\n show={dodgedShow}\n explanation={t`You closed that unexpected pop-up! Dismissing pop-ups asking you to do something urgently is usually the best course of action.`}\n >\n ) : null}\n\n \n

{t`Complete`}

\n

{t`Quick! Complete the game now.`}

\n {t`Username`}:\n setUsernameActive(true)}>\n {usernameActive ? (\n <>\n \n {data.name}@fishmail.co.uk\n \n ) : (\n <>\n { t`Enter email` }\n \n )}\n \n {t`Password`}:\n setPasswordActive(true)}>\n {passwordActive ? (\n <>\n fish!1451soup#\n \n ) : (\n <>\n \n {t`Enter password`}\n \n )}\n \n handlePhished(): undefined}\n className={passwordActive && usernameActive ? '' : 'disabled'}\n >{t`Complete Game`}\n handleDodged()}>\n
\n
\n );\n};\n\ninterface InputBtnProps {\n active: boolean;\n}\nconst StyledButton = styled.button`\n margin-top: 1.5rem;\n width: 100%;\n border-radius: 10px;\n font-family: 'Arial';\n text-align: center;\n background-color: #6400aa;\n border: 0 !important;\n color: #ffffff;\n padding: 1rem;\n box-shadow: 0px 6px 6px rgba(0, 0, 0, 0.25);\n cursor: pointer;\n &.disabled {\n background-color: #999999;\n box-shadow: none;\n cursor: not-allowed;\n }\n`;\nconst InputBtn = styled(Button)`\n text-align: left;\n border: 1px solid #999999;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n border-radius: 10px;\n padding: 0.75rem 1.5rem;\n font-family: 'BT Font Extra Bold';\n letter-spacing: 0;\n i {\n margin-right: 10px;\n }\n\n ${(p) =>\n p.active\n ? 'color: #ffffff !important; &:active{color: #ffffff;} background-color: #9969FF !important;'\n : 'color: #B7B7B7 !important; &:active{color: #ffffff;} '}\n`;\n\nconst PopUp = styled(motion.div)`\n padding: 3%;\n border-radius: 10px;\n background-color: #ffffff;\n display: block;\n max-width: 450px;\n margin: 1rem auto;\n p,span, h3 {color: #6400aa}\n position: relative;\n button{\n width 100%;\n }\n span {\n display: block;\n margin-top: 1rem;\n display: flex;\n }\n input {\n margin: 0 10px;\n flex: 1;\n border: 1px solid #999999;\n box-sizing: border-box;\n box-shadow: 0px 4px 4px rgba(0, 0, 0, 0.25);\n border-radius: 4px;\n }\n`;\n\nconst Close = styled.i`\n position: absolute;\n top: 10px;\n right: 45px;\n @media (min-width: 768px){\n top: 15px;\n }\n cursor: pointer;\n color: #6400aa;\n &:hover {\n opacity: 0.7;\n }\n @media (min-width: 768px) {\n right: 15px;\n }\n width: 37px;\n height: 37px;\n padding: 10px;\n border-radius: 30px;\n background-color: rgba(0,0,0,0.1);\n text-align:center;\n`;\n\nexport default PhishingSite;\n","import { motion } from 'framer-motion';\nimport React from 'react';\nimport { Button } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport icons from '../../assets/misc/a-icons.svg';\nimport strokes from '../../assets/misc/a-strokes.svg';\nimport Turtle from '../../characters/Turtle';\n\nconst TurtleAdvert: React.FC> = ({\n defaultHeader,\n nextSlide,\n gotoSlide,\n currentIndex,\n data,\n}) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const advert = (\n \n gotoSlide(currentIndex + 2)}>\n \n \n \n \n
\n \n

gotoSlide(currentIndex + 2)}>{t`BEAT THE PHISHERMAN!`}

\n gotoSlide(currentIndex + 2)}\n >{t`Quick! Click here to complete this game instantly.`}

\n \n
\n
\n
\n );\n\n const dialogue: DialogueData[] = [\n {\n character: Turtle,\n text: t`I think you have met everyone! You have done so well that you have run out of people to help... The Phisherman can’t keep up with you!`,\n textSpriteName: 'endturtle-1-1',\n buttonText: ``,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nconst Advert = styled.div`\n height: 200px;\n position: relative;\n bottom: -10px;\n z-index: 999;\n display: block;\n margin: 0 auto;\n width: 100%;\n max-width: 100%;\n background-color: #361559;\n @media (min-width: 768px) {\n height: 200px;\n max-width: 800px;\n }\n display: flex;\n overflow: hidden;\n`;\nconst Graphics = styled.div`\n overflow: hidden;\n width: 100px;\n cursor: pointer;\n @media (min-width: 768px) {\n width: 200px;\n }\n position: relative;\n background-color: #6400aa;\n height: 100%;\n img {\n position: absolute;\n width: 100%;\n left: 0;\n top: 0;\n display: block !important;\n height: 100%;\n }\n`;\n\nconst Text = styled.div`\n padding: 2% 3%;\n flex: 1;\n text-align: left;\n position: relative;\n display: flex;\n align-items: center;\n cursor: pointer;\n h3,\n p {\n color: #ffffff;\n margin-bottom: 5px;\n }\n @media (max-width: 767px) {\n h3 {\n font-size: 4.25vw;\n line-height: 1.5;\n }\n p {\n font-size: 3.5vw;\n line-height: 1.5;\n }\n }\n @media (min-width: 768px) {\n height: 200px;\n }\n i {\n position: absolute;\n top: 15px;\n right: 15px;\n cursor: pointer;\n color: #ffffff;\n &:hover {\n opacity: 0.7;\n }\n background-color: rgba(0, 0, 0, 0.2);\n padding: 4px 6px;\n border-radius: 100px;\n }\n`;\n\nexport default TurtleAdvert;\n","import React from 'react';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Turtle from '../../characters/Turtle';\n\nconst TurtleOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Turtle,\n text: t`This is worrying, the Phisherman is getting more and more dangerous. He just tried to phish you right in the middle of this game itself! `,\n textSpriteName: 'endturtle-2-1',\n buttonText: t`Next`,\n },\n {\n character: Turtle,\n text: t`We need to stop him! Can you use all of your phishing knowledge to outsmart him and defeat him once and for all?`,\n textSpriteName: 'endturtle-2-2',\n buttonText: t`Let's go!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default TurtleOutro;\n","import WhaleIsland from '../3-fishfood/WhaleIsland';\nimport CloseAd from './CloseAd';\nimport PhisherOutro from './PhisherOutro';\nimport PhisherOutroDodged from './PhisherOutroDodged';\nimport PhishingSite from './PhishingSite';\nimport TurtleAdvert from './TurtleAdvert';\nimport TurtleIsland from './TurtleIsland';\nimport TurtleOutro from './TurtleOutro';\n\nexport default [WhaleIsland, TurtleAdvert, CloseAd, PhishingSite, PhisherOutro, PhisherOutroDodged, TurtleOutro];\n","import React, { useState, useEffect, useContext } from 'react';\nimport { GameProps, GameQuestion, useGameLogic } from '../../../../../core/Game';\nimport styled from 'styled-components';\nimport card_answer from '../../../assets/end/card_answer.jpg';\nimport card_phish from '../../../assets/end/card_phish.svg';\nimport phisherman_head from '../../../assets/characters/phisherman-head.svg';\nimport phisherman from '../../../assets/characters/phisherman.svg';\nimport turtle from '../../../assets/characters/2-turtle.svg';\nimport { motion, useAnimation } from 'framer-motion';\nimport { CyberSecurityData } from '../../..';\nimport ModalOverlay from '../../../../../general/ModalOverlay';\nimport { Button } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport toaster from 'toasted-notes';\n\nimport slide_1 from '../../../assets/end/slide_1.svg';\nimport slide_2 from '../../../assets/end/slide_2.svg';\nimport slide_3 from '../../../assets/end/slide_3.svg';\nimport slide_4 from '../../../assets/end/slide_4.svg';\nimport sfx from '../../../../../../services/sounds';\n\nimport VolumeContext from '../../../../../misc/volume-context';\nimport VoiceoverContext from '../../../../../misc/voiceover-context';\n\n\nexport type TPhishingQuestion = GameQuestion & {\n text: string;\n textSpriteName: string;\n points: number;\n answers: TPhishingAnswer[];\n answered?: boolean;\n};\n\ntype TPhishingAnswer = {\n text: string;\n textSpriteName: string;\n points: number;\n};\n\ninterface IPhishing {\n data: CyberSecurityData;\n onGameFailed: () => void;\n}\n\nconst ResultStates = ['selected', 'won', 'lost'];\n\nconst PhishStates = ['won', 'lost'];\n\ninterface IToast {\n correct: boolean;\n}\n\nconst Phishing: React.FC & IPhishing> = ({\n gameData,\n data,\n index = 0,\n onGameComplete,\n onGameFailed,\n}) => {\n\n const { volume } = useContext(VolumeContext);\n\n const [tutorialShow, setTutorialShow] = useState(true);\n const [tutorialIndex, setTutorialIndex] = useState(0);\n const [count, setCount] = useState(1);\n\n const { playVoiceover, stopVoiceover } = useContext(VoiceoverContext);\n\n useEffect(() => {\n if (tutorialShow === true) {\n playVoiceover('end-howto-'+(tutorialIndex + 1));\n }\n\n }, [tutorialIndex, tutorialShow]);\n\n const [correct, setCorrect] = useState(false);\n\n const [selected, setSelected] = useState(null);\n const [correctAnswer, setCorrectAnswer] = useState(null);\n\n const anim_r_player = useAnimation();\n const anim_r_phisher = useAnimation();\n const anim_popup = useAnimation();\n const [phisherResult, setPhisherResult] = useState(0);\n const [playerResult, setPlayerResult] = useState(0);\n\n const [phisherHealth, setPhisherHealth] = useState(6);\n const [playerHealth, setPlayerHealth] = useState(8);\n\n const [failed, setFailed] = useState(false);\n\n const [result, setResult] = useState(0);\n const [phish, setPhish] = useState(-1);\n\n const handleNextQuestion = () => {\n stopVoiceover();\n setSelected(null);\n };\n\n const handleGameComplete = () => {\n if (volume) sfx.synthSuccess.play();\n setTimeout(onGameComplete, 1000);\n };\n\n const handleGameFailed = () => {\n if (volume) sfx.synthFail.play();\n setTimeout(() => setFailed(true), 500);\n };\n\n const [question, nextQuestion] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextQuestion,\n index,\n );\n\n useEffect(() => {\n if (!tutorialShow && question) {\n playVoiceover(question.textSpriteName);\n }\n }, [question?.textSpriteName, tutorialShow]);\n\n useEffect(() => {\n if (!question) {\n return;\n }\n\n let highest = question.answers.reduce((answer, highestAnswer) => {\n if (!highestAnswer) {\n return answer;\n }\n\n if (answer.points > highestAnswer.points) {\n return answer;\n }\n\n return highestAnswer;\n });\n\n setCorrectAnswer(highest);\n }, [question]);\n\n const handleSelect = (answer: TPhishingAnswer) => {\n stopVoiceover();\n // console.log('on select', answer, answer.points, question.points)\n\n // select card\n question.answered = true;\n setSelected(answer);\n\n // check for higher answers (in a useeffect?)\n if (question.points < answer.points) {\n handleCorrect(answer);\n } else {\n handleIncorrect(answer);\n }\n\n // next question\n };\n\n const handleCorrect = (answer: TPhishingAnswer) => {\n setPhish(1);\n // toaster.notify(t`Nice work! That's a great response.`, {\n // duration: 2000,\n // position: 'center',\n // });\n animateCorrect(answer);\n // find difference in points\n\n setTimeout(() => {\n setPhish(0);\n setSelected(null);\n\n nextQuestion();\n }, 1500);\n };\n\n const handleIncorrect = (answer: TPhishingAnswer) => {\n animateIncorrect(answer);\n setTimeout(() => {\n setSelected(null);\n\n nextQuestion();\n }, 1500);\n };\n\n async function animateCorrect(answer: TPhishingAnswer) {\n setPhisherResult(question.points - answer.points);\n if (volume) sfx.correct.play();\n setTimeout(() => playVoiceover('sound-7'), 300);\n setTimeout(() => setCount(Math.random()), 3000);\n setCorrect(true);\n await anim_popup.start('show');\n await anim_r_phisher.start('show');\n if (phisherHealth - (answer.points - question.points) <= 0) {\n setPhisherHealth(0);\n handleGameComplete();\n } else {\n setPhisherHealth(phisherHealth - (answer.points - question.points));\n }\n await anim_popup.start('hidden');\n await anim_r_phisher.start('hidden');\n }\n\n async function animateIncorrect(answer: TPhishingAnswer) {\n setPlayerResult(answer.points - question.points);\n if (volume) sfx.incorrect.play();\n setTimeout(() => playVoiceover('sound-1'), 300);\n setTimeout(() => setCount(Math.random()), 3000);\n setCorrect(false);\n await anim_popup.start('show');\n await anim_r_player.start('show');\n if (playerHealth - (question.points - answer.points) <= 0) {\n setPlayerHealth(0);\n // Loss\n handleGameFailed();\n } else {\n setPlayerHealth(playerHealth - (question.points - answer.points));\n }\n await anim_popup.start('hidden');\n await anim_r_player.start('hidden');\n }\n\n if (!question) {\n return null;\n }\n const popUpVariants = {\n hidden: {\n opacity: 0,\n transition: {\n duration: 0.2,\n delay: 2,\n },\n },\n show: {\n opacity: 1,\n transition: {\n duration: 0.2,\n },\n },\n };\n const resultVariants = {\n hidden: {\n opacity: 0,\n y: -50,\n scaleX: 0,\n transition: {\n delay: 1.5,\n },\n },\n show: {\n scaleX: 1,\n opacity: 1,\n y: 0,\n transition: {\n delay: 0.5,\n },\n },\n };\n\n // Tutorial slides\n\n const getSlide = (index: number) => {\n switch (index) {\n case 0: {\n return slide_1;\n }\n case 1: {\n return slide_2;\n }\n case 2: {\n return slide_3;\n }\n case 3: {\n return slide_4;\n }\n default: {\n return slide_1;\n }\n }\n };\n\n const getDescription = (index: number) => {\n switch (index) {\n case 0: {\n return t`The Phisherman will try to phish you through different scenarios.`;\n }\n case 1: {\n return t`Pick a suitable response card to avoid getting phished.`;\n }\n case 2: {\n return t`Be careful, a poor response will damage your health!`;\n }\n case 3: {\n return t`Choose the right answers to defeat the Phisherman once and for all!`;\n }\n default: {\n return t`The Phisherman will try to phish you through different scenarios.`;\n }\n }\n };\n return (\n <>\n \n \n { t`Not Quite!` }\n \n }\n footer={\n {\n setTimeout(onGameFailed, 0);\n setFailed(false);\n }}\n >{t`Try again`}\n }\n >\n <>\n \n

\"{t`Aha! I got you!`}\"

\n {t`You didn't manage to defeat the Phisherman! Try battling him again, make sure you read all of the options!`}

\n \n \n \n {correct ? (\n <>\n

{ t`Nice work!` }

\n

{ t`You picked a great response and dealt some damage to the Phisherman.` }

\n \n \n ) : (\n <>\n

{ t`Oh no!` }

\n

{ t`You picked a poor response to the scam and lost some health!` }

\n \n \n )}\n
\n \n \n \n \n \n \n {playerResult}\n \n \n \n \n \n \n \n \n \n \n {phisherResult}\n \n \n \n \n \n \n \n \n \n

0.5 ? 1 : 0.99 }}>{question.text}

\n {question.answered ? question.points : ''}\n
\n \n \n {t`Scroll and select an action`}{' '}\n \n \n \n {question.answers.map((answer, index) => (\n \n (!question.answered ? handleSelect(answer) : undefined)}\n >\n \n {answer.text}\n {selected?.text === answer.text ? answer.points : ''}\n \n \n playVoiceover(answer.textSpriteName)}>\n \n \n ))}\n \n \n \n
{t`FINAL BATTLE`}
\n

{t`HOW TO PLAY`}

\n
\n \n -1 ? () => setTutorialIndex(tutorialIndex - 1) : undefined}\n >\n \n \n \n = 3}\n onClick={tutorialIndex + 1 < 4 ? () => setTutorialIndex(tutorialIndex + 1) : undefined}\n >\n \n \n \n

{getDescription(tutorialIndex)}

\n {tutorialIndex < 3 ? (\n \n \n \n ) : (\n \n )}\n \n
\n {t`Play the best response card in each scenario to beat the Phisherman!`}\n \n \n );\n};\n\nconst AnswerWrapper = styled(motion.div)`\n display: inline-block;\n`;\nconst AudioWrapper = styled.div`\n width: 100%;\n text-align: center;\n line-height: 0;\n padding-bottom: 3px;\n`;\n\nconst AnswerAudio = styled(Button)`\n border-top-left-radius: 0;\n border-top-right-radius:0;\n padding: 2px 15px;\n display: inline-block;\n line-height:14px;\n background-color: #6400aa;\n i { font-size: 14px; color: #ffffff;}\n &:hover {\n i { color: #6400aa;}\n }\n`;\n\ninterface PopUpProps {\n correct: boolean;\n}\n\nconst PopUp = styled(motion.div)`\n pointer-events: none;\n user-select: none;\n position: fixed;\n width: 100%;\n max-width: 400px;\n max-height: 400px;\n left: 50%;\n z-index: 999;\n padding: 20px;\n border-radius: 5px;\n top: 50%;\n box-shadow: 0 0 600px 50px rgba(0, 0, 0, 0.85);\n transform: translateY(-50%) translateX(-50%);\n background-color: ${(props) => (props.correct ? '#00C3A5' : '#E60050')};\n`;\n\nconst StyledHint = styled.p`\n @media (max-height: 815px) {\n position: fixed;\n bottom: 0;\n left: 50%;\n transform: translateX(-50%);\n margin: 0 auto;\n width: 100%;\n max-width: 475px;\n font-size: 15px;\n text-align: center;\n padding-bottom: 5px;\n pointer-events: none;\n user-select: none;\n background-color: rgba(0, 0, 0, 0.7);\n }\n`;\n\nconst Character = styled.img`\n position: absolute;\n z-index: -1;\n width: 50px;\n right: 5px;\n top: -50px;\n`;\n\ninterface ProgressProps {\n progress: number;\n}\ninterface ArrowProps {\n left: boolean;\n end: boolean;\n}\nconst SlideArrow = styled.button`\n ${(props) => (props.left ? 'left: 5px;' : 'right: 5px;')}\n position: absolute;\n top: calc(50% - 25px);\n background-color: #ffffff;\n padding: 10px;\n height: 50px;\n width: 50px;\n border-radius: 25px;\n border: 0 !important;\n ${(props) => (props.end ? 'opacity: 0.3;' : null)}\n`;\n\nconst SlideImage = styled.img`\n height: 120px;\n width: 120px;\n margin: 0 auto;\n`;\n\nconst TutorialSlides = styled.div`\n width: 100%;\n position: relative;\n height: 120px;\n margin-bottom: 10px;\n`;\n\nconst TutorialProgress = styled.div`\n position: relative;\n width: 100%;\n height: 10px;\n max-width: 100px;\n border-radius: 5px;\n display: block;\n margin: 32px auto;\n background-color: #b80040;\n overflow: hidden;\n`;\n\nconst TutorialCard = styled(motion.div)`\n background-color: #e60050;\n padding: 1rem;\n text-align: center;\n width: 100%;\n max-width: 350px;\n transition: height 0.5s ease-in-out;\n h5 {\n text-transform: uppercase;\n letter-spacing: 0.05em;\n font-size: 0.875rem;\n font-family: 'BT Font Extra Bold';\n }\n p {\n line-height: 20px;\n margin-bottom: 0;\n }\n`;\n\ninterface TutorialProps {\n tutorialShow: boolean;\n}\nconst Tutorial = styled(motion.div)`\n position: fixed;\n display: none;\n ${(props) => (props.tutorialShow ? 'display: flex;' : null)}\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: rgba(0, 0, 0, 0.6);\n align-items: center;\n justify-content: center;\n z-index: 999;\n padding-top: 75px;\n p {\n font-size: 16px;\n margin-bottom: 5px;\n }\n`;\n\ninterface ResultProps {\n char: string;\n}\n\nconst Result = styled(motion.div)`\n position: absolute;\n height: 50px;\n bottom: -60px;\n color: #ffffff;\n padding: 10px;\n z-index: -1;\n border-radius: 5px;\n background-color: ${(props) => (props.char === 'player' ? '#61BAAD' : '#DC2D00')};\n ${(props) => (props.char === 'player' ? 'left:' : 'right:')} 5px;\n`;\n\nconst QuestionVariants = {\n init: {\n rotate: -10,\n y: -45,\n opacity: 0,\n },\n visible: {\n y: 0,\n rotate: -15,\n opacity: 1,\n transition: {\n delay: 0.2,\n duration: 0.6,\n },\n },\n won: {\n scale: 1.025,\n opacity: 0.99,\n },\n lost: {\n y: -5,\n rotate: 5,\n scale: 0.95,\n opacity: 0.99,\n },\n};\n\nconst AnswerVariants = {\n init: {\n y: 10,\n opacity: 0,\n },\n visible: (i: number) => ({\n y: 0,\n opacity: 1,\n transition: {\n delay: 1.25 + i * 0.4,\n duration: 0.4,\n },\n }),\n hover: {\n y: -5,\n opacity: 0.9,\n },\n selected: {\n y: -13,\n opacity: 1,\n },\n won: {\n y: -16,\n opacity: 1,\n },\n lost: {\n y: 0,\n rotate: 5,\n opacity: 1,\n scale: 0.95,\n },\n};\n\nconst ScrollHelp = styled.div`\n width: 100%;\n text-align: center;\n color: #ffffff;\n opacity: 0.6;\n display: block;\n margin-bottom: 10px;\n @media (min-width: 576px) {\n display: none;\n }\n`;\n\nconst Avatar = styled.div`\n border-radius: 100px;\n overflow: hidden;\n width: 40px;\n flex-shrink: 0;\n height: 40px;\n background-color: rgba(255, 255, 255, 0.2);\n img {\n width: 200%;\n margin-top: -50%;\n margin-left: -50%;\n }\n`;\n\nconst Progress = styled.div`\n height: 10px;\n width: 100%;\n margin: 0 7px;\n border-radius: 5px;\n background-color: #6400aa;\n border-radius: 5px;\n overflow: hidden;\n`;\nconst ProgressLevel = styled.div`\n height: 10px;\n width: ${(props: ProgressProps) => (props.progress >= 0 ? props.progress : 0)}%;\n background-color: #ffffff;\n transition: width 1s ease-in-out;\n`;\nconst Player = styled.div`\n display: flex;\n align-items: center;\n ${ProgressLevel} {\n background-color: #61baad;\n }\n`;\nconst Phisherman = styled.div`\n display: flex;\n align-items: center;\n ${ProgressLevel} {\n background-color: #dc2d00;\n }\n`;\n\nconst Score = styled.div`\n height: 60px;\n padding: 10px;\n max-width: 500px;\n display: -webkit-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-wrap: wrap;\n flex-wrap: wrap;\n position: relative;\n z-index: 77;\n margin: 0 auto;\n background-color: #2a0b4a;\n border-bottom-left-radius: 4px;\n border-bottom-right-radius: 4px;\n ${Player}, ${Phisherman} {\n flex-basis: 0;\n -webkit-box-flex: 1;\n -ms-flex-positive: 1;\n flex-grow: 1;\n max-width: 50%;\n margin: 0 12px;\n }\n`;\n\nconst GameWrapper = styled.div`\n text-align: center;\n position: fixed;\n top: 75px;\n left: 0;\n right: 0;\n bottom: 0;\n overflow-y: scroll;\n .card_lost img {\n filter: grayscale(100%);\n }\n`;\n\nconst Top = styled.div``;\nconst Bottom = styled.div`\n text-align: center;\n width: 100%;\n overflow-x: scroll;\n white-space: nowrap;\n padding-top: 10px;\n -ms-overflow-style: -ms-autohiding-scrollbar;\n @media (min-width: 768px) {\n -ms-overflow-style: none;\n }\n @media (max-height: 815px) {\n padding-bottom: 50px;\n }\n`;\nconst Question = styled(motion.div)`\n position: relative;\n display: inline-block;\n border: 0;\n padding: 0;\n background-color: transparent;\n transform: rotate(-14deg);\n margin-bottom: 2rem;\n h4 {\n position: absolute;\n color: white;\n top: 30%;\n left: 6%;\n right: 17%;\n min-width: 150px;\n bottom: 4%;\n margin-bottom: 0;\n text-align: left;\n line-height: 1.2;\n font-size: 0.875rem;\n font-family: 'BT Font Bold';\n }\n img {\n width: 100%;\n max-width: 200px;\n }\n`;\n\nconst Value = styled(motion.div)`\n position: absolute;\n left: 6%;\n bottom: 1.5%;\n color: white;\n font-family: 'BT Font Extra Bold';\n font-size: 1.5rem;\n`;\n\nconst Answer = styled(motion.button)`\n white-space: normal;\n position: relative;\n border: 0;\n padding: 0;\n background-color: transparent;\n transition: transform 0.5s easeInOut;\n margin: 0.5rem 0.5rem 0 0.5rem;\n &:focus,\n &:hover {\n outline-width: 1px;\n outline-color: #fff;\n outline-style: ridge;\n }\n span {\n color: white;\n position: absolute;\n top: 4%;\n left: 7%;\n right: 4%;\n bottom: 12%;\n line-height: 1.2;\n margin-bottom: 0;\n text-align: left;\n font-size: 1rem;\n font-family: 'BT Font Bold';\n }\n`;\nexport default Phishing;\n","import React, { useEffect } from 'react';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport sfx from '../../../../../services/sounds';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport Phisherman from '../../characters/Phisherman';\nimport Turtle from '../../characters/Turtle';\n\nconst TurtleOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n useEffect(() => {\n data.playMusic(sfx.themeCybersecurity);\n }, []);\n\n const dialogue: DialogueData[] = [\n {\n character: Phisherman,\n textSpriteName: 'end-phisherman-1',\n text: t`I give up! You know too much about my phishing techniques, I'm going to have to find easier targets. You win this time!`,\n buttonText: t`Next`,\n },\n {\n character: Turtle,\n text: t`Incredible. You did brilliantly and you saved everyone from that nasty Phisherman's cyber attack! Well done!`,\n textSpriteName: 'endturtle-3-1',\n buttonText: t`Thank you!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default TurtleOutro;\n","import PhishingGame from './PhishingGame';\nimport TurtleOutro from './TurtleOutro';\n\nexport default [PhishingGame, TurtleOutro];\n","import React, { useEffect } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport * as Phishing from '../../components/interactive/phishing/Phishing';\nimport { CyberSecurityData } from '../..';\nimport sfx from '../../../../../services/sounds';\n\nconst PhishingGame: React.FC> = ({\n defaultHeader,\n nextSlide,\n data,\n previousSlide,\n currentIndex,\n gotoSlide,\n}) => {\n let next = ;\n\n // useEffect(() => {\n // data.playMusic(sfx.themeCybersecurityBattle);\n // }, []);\n\n const gameData: Phishing.TPhishingQuestion[] = [\n {\n text: t`An unknown number calls you. 'Hi ${data.name}, this is NikNak Support. Your account has been hacked, please confirm your account email and password.'`,\n textSpriteName: 'end-question-1',\n points: 3,\n answers: [\n {\n text: t`Ask them to prove that they are from NikNak support.`,\n points: 2,\n textSpriteName: \"end-a-1-a\"\n },\n {\n text: t`Hang up and block their number permanently.`,\n textSpriteName: \"end-a-1-b\",\n points: 5,\n },\n {\n text: t`Give your email address and password.`,\n points: 0,\n textSpriteName: \"end-a-1-c\"\n },\n ],\n },\n {\n text: t`You receive a text from an unknown number saying your Outstagram account has been hacked and you need to click on the link to update your account details.`,\n textSpriteName: 'end-question-2',\n points: 3,\n answers: [\n {\n text: t`I go on Outstagram’s official support website online to check if this is genuine.`,\n points: 4,\n textSpriteName: \"end-a-2-a\"\n },\n {\n text: t`I block the number immediately.`,\n points: 4,\n textSpriteName: \"end-a-2-b\"\n },\n {\n text: t`I click on the link to see if it is genuine.`,\n points: 0,\n textSpriteName: \"end-a-2-c\"\n },\n ],\n },\n\n {\n text: t`You are playing a game and someone in the chat asks for your home address.`,\n textSpriteName: 'end-question-3',\n points: 2,\n answers: [\n {\n text: t`I ignore the message.`,\n points: 3,\n textSpriteName: \"end-a-3-a\"\n },\n {\n text: t`I provide the person with the information so they can help me.`,\n points: 0,\n textSpriteName: \"end-a-3-b\"\n },\n {\n text: t`I block the user.`,\n points: 4,\n textSpriteName: \"end-a-3-c\"\n },\n ],\n },\n\n {\n text: t`A friend urgently asks you to forward on a security code you just received over text from Outstagram.`,\n textSpriteName: 'end-question-4',\n points: 3,\n answers: [\n {\n text: t`I ask them why they need it.`,\n points: 2,\n textSpriteName: \"end-a-4-a\"\n },\n {\n text: t`I ignore their messages.`,\n points: 5,\n textSpriteName: \"end-a-4-b\"\n },\n {\n text: t`I forward on the security code.`,\n points: 1,\n textSpriteName: \"end-a-4-c\"\n },\n ],\n },\n {\n text: t`You get an email from FishFood support saying someone is trying to login from another country.`,\n textSpriteName: 'end-question-5',\n points: 3,\n answers: [\n {\n text: t`I ignore the email.`,\n points: 1,\n textSpriteName: \"end-a-5-a\"\n },\n {\n text: t`I contact FishFood support and tell them it wasn't me logging in.`,\n points: 4,\n textSpriteName: \"end-a-5-b\"\n },\n {\n text: t`I change the password to my account as it has been compromised.`,\n points: 5,\n textSpriteName: \"end-a-5-c\"\n },\n ],\n },\n {\n text: t`A friend sends an email with a link to download a new game for free that you have been wanting to play for ages.`,\n textSpriteName: 'end-question-6',\n points: 3,\n answers: [\n {\n text: t`You hover on the link to check the destination URL is trustworthy.`,\n points: 4,\n textSpriteName: \"end-a-6-a\"\n },\n {\n text: t`You ask if they got the game through an official game store.`,\n points: 5,\n textSpriteName: \"end-a-6-b\"\n },\n {\n text: t`You click on the link to see what they are on about.`,\n points: 1,\n textSpriteName: \"end-a-6-c\"\n },\n ],\n },\n {\n text: t`You receive an email from jblogs3@gmail.com with a link to claim 20% off on your favourite clothing brand. `,\n textSpriteName: 'end-question-7',\n points: 3,\n answers: [\n {\n text: t`You reply asking if this is a genuine offer.`,\n points: 2,\n textSpriteName: \"end-a-7-a\"\n },\n {\n text: t`You report the email as spam.`,\n points: 4,\n textSpriteName: \"end-a-7-b\"\n },\n {\n text: t`Click on the link to claim the 20% off offer.`,\n points: 1,\n textSpriteName: \"end-a-7-c\"\n },\n ],\n },\n ];\n\n return (\n \n {\n data.removeLife();\n gotoSlide(currentIndex - 1);\n gotoSlide(currentIndex);\n }}\n >\n \n );\n};\n\nexport default PhishingGame;\n","import { motion, useAnimation } from 'framer-motion';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { Button } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '../..';\nimport { sendAnalytics } from '../../../../../services/analytics';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\nimport phisherman_head from '../../assets/characters/phisherman-head.svg';\nimport bronze_medal from '../../assets/gamification/bronze_medal.svg';\nimport end_slide_1 from '../../assets/gamification/end_slide-1.svg';\nimport end_slide_2 from '../../assets/gamification/end_slide-2.svg';\nimport end_slide_3 from '../../assets/gamification/end_slide-3.svg';\nimport end_slide_4 from '../../assets/gamification/end_slide-4.svg';\nimport gold_medal from '../../assets/gamification/gold_medal.svg';\nimport heart from '../../assets/gamification/heart.svg';\nimport silver_medal from '../../assets/gamification/silver_medal.svg';\nimport star from '../../assets/gamification/star.svg';\n\nconst Award: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, setFooter] = useState(<>);\n\n // const [lives, setLives] = useState(data.lives);\n // const [points, setPoints] = useState(data.points);\n const [progress, setProgress] = useState(0);\n const [maxPoints, setMaxPoints] = useState(300);\n\n const [award, setAward] = useState(t`Cyber Apprentice`);\n const [medal, setMedal] = useState(bronze_medal);\n const { playVoiceover } = useContext(VoiceoverContext);\n\n\n const checkAward = () => {\n let score = data.lives * 30 + data.points;\n setTimeout(() => playVoiceover('end-awarded-1'), 9300);\n setTimeout(() => playVoiceover('end-phisherman-2'), 13000);\n\n if (score < 200 ){\n setTimeout(() => playVoiceover('end-award-1'), 11000);\n }\n if (score >= 250) {\n setAward(t`Cyber Master`);\n setMedal(gold_medal);\n setTimeout(() => playVoiceover('end-award-3'), 11000);\n } else if (score >= 200) {\n setAward(t`Cyber Pro`);\n setMedal(silver_medal);\n setTimeout(() => playVoiceover('end-award-2'), 11000);\n }\n\n sendAnalytics('cybersecurity', 'CYBER_AWARD', {\n award,\n score,\n lives: data.lives,\n points: data.points,\n });\n };\n useEffect(() => {\n checkAward();\n playVoiceover('end-awarding-1');\n }, []);\n\n const anim_lives = useAnimation();\n const anim_points = useAnimation();\n const anim_progress = useAnimation();\n const anim_medal = useAnimation();\n const anim_score = useAnimation();\n const anim_boom = useAnimation();\n\n async function sequence() {\n await anim_score.start({ opacity: 1, scale: 1 });\n await anim_lives.start({ opacity: 1, transition: { delay: 1 } });\n await anim_progress.start({ width: ((data.lives * 30) / maxPoints) * 100 + '%' });\n await anim_lives.start({ opacity: 0 });\n await anim_points.start({ opacity: 1 });\n await anim_progress.start({ width: ((data.lives * 30) / maxPoints + data.points / maxPoints) * 100 + '%' });\n await anim_points.start({ opacity: 0 });\n await anim_score.start({ opacity: 0 });\n await anim_medal.start({ opacity: 1, scale: 1, rotate: -1080 });\n await anim_boom.start({ opacity: 1, scale: 1 });\n setFooter();\n }\n\n useEffect(() => {\n const timer = setTimeout(() => {\n sequence();\n }, 2000);\n return () => clearTimeout(timer);\n }, []);\n\n return (\n \n \n \n {' '}\n {t`Phisherman defeated!`}{' '}\n \n {t`Grrr, I'll get you next time!`}\n \n \n \n \n \n \n \n \n \n\n \n {data.name}\n \n
\n \n \n \n \n {data.lives}\n \n \n \n {data.points}\n \n \n \n \n \n \n \n \n \n \n
\n {award\n

{ t`Award Received` }

\n

{award}

\n
\n
\n
\n
\n );\n};\nconst PhishermanMessage = styled(motion.p)`\n background-color: #ffffff;\n color: #6400aa;\n position: absolute;\n border-radius: 5px;\n margin-bottom: 0;\n height: 40px;\n top: -40px;\n left: 0;\n line-height: 18px;\n padding: 10px;\n font-size: 0.8rem;\n span {\n position: relative;\n &::after {\n content: '';\n position: absolute;\n left: 5px;\n bottom: -16px;\n width: 0;\n height: 0;\n border-left: 10px solid transparent;\n border-top: 5px solid #ffffff;\n border-right: 10px solid transparent;\n clear: both;\n }\n }\n`;\n\nconst TitleWrapper = styled.div`\n display: block;\n width: 100%;\n text-align: center;\n`;\n\nconst StyledTitle = styled.h2`\n font-size: 1.5rem;\n letter-spacing: 0;\n line-height: 1.2rem;\n position: relative;\n margin-top: 45px;\n display: inline-block;\n margin-left: -10px;\n margin-right: -10px;\n`;\n\ninterface BoomProps {\n width: number;\n}\nconst BoomWrapper = styled(motion.div)`\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n #confettiContainer {\n position: absolute;\n left: 50%;\n top: 50%;\n }\n`;\nconst Boom = styled(motion.img)`\n width: ${(props) => props.width}%;\n max-width: 100%;\n position: absolute;\n left: 50%;\n top: 50%;\n`;\n\nconst Gold = styled.img`\n left: 83.33%;\n height: 100%;\n padding: 4px 0;\n position: absolute;\n z-index: 10;\n transform: translateX(-50%);\n`;\nconst Silver = styled.img`\n left: 66.66%;\n height: 100%;\n padding: 4px 0;\n position: absolute;\n z-index: 10;\n transform: translateX(-50%);\n`;\n\nconst Bronze = styled.img`\n left: 40%;\n height: 100%;\n padding: 4px 0;\n position: absolute;\n z-index: 10;\n transform: translateX(-50%);\n`;\n\nconst Avatar = styled.div`\n max-width: 300px;\n display: block;\n margin: 15px auto;\n position: relative;\n`;\nconst Details = styled.div`\n position: relative;\n display: block;\n margin: 15px auto;\n max-width: 400px;\n`;\nconst Result = styled.div`\n margin-bottom: 1rem;\n text-align: center;\n`;\nconst Progress = styled.div`\n background: #540e85;\n border: 3px solid #361559;\n border-radius: 100px;\n height: 40px;\n position: relative;\n overflow: hidden;\n`;\nconst ProgressLevel = styled(motion.div)`\n position: absolute;\n height: 100%;\n left: -2px;\n background: linear-gradient(180deg, #3df3ff 0%, #005cb1 100%);\n width: 0%;\n border-right: solid 2px #00d1ff;\n`;\nconst Medal = styled(motion.div)`\n position: absolute;\n left: 0;\n width: 100%;\n height: 100%;\n top: 0;\n opacity: 0;\n transform-origin: center;\n display: flex;\n align-items: center;\n text-align: center;\n justify-content: center;\n img {\n max-width: 100%;\n }\n`;\nconst Score = styled(motion.div)``;\n\nconst Lives = styled(motion.div)`\n span {\n margin-left: 15px;\n font-family: 'BT Font Extra Bold';\n }\n display: inline-block;\n opacity: 0;\n`;\n\nconst Points = styled(motion.div)`\n span {\n margin-left: 15px;\n font-family: 'BT Font Extra Bold';\n }\n position: absolute;\n width: 100%;\n top: 0;\n left: 0;\n text-align: center;\n opacity: 0;\n`;\n\nexport default Award;\n","import Award from './Award';\nimport TurtleOutro from './TurtleOutro';\nimport ModuleRating from './ModuleRating';\n\nexport default [\n Award,\n // ModuleRating,\n // TurtleOutro,\n];\n","import React, { useContext, useEffect, useState } from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport Reward from 'react-rewards';\nimport { t } from 'ttag';\nimport { CyberSecurityData } from '..';\nimport sfx from '../../../../services/sounds';\nimport Slide, { ISlide } from '../../../core/Slide';\nimport Content from '../../../general/Content';\nimport { VolumeContext } from '../../../misc/volume-context';\nimport turtle from '../assets/characters/2-turtle.svg';\nimport pufferfish from '../assets/characters/2-pufferfish-2.svg';\nimport squid from '../assets/characters/2-octopus.svg';\nimport seal from '../assets/characters/2-fish.svg';\nimport whale from '../assets/characters/2-whale-bowie.svg';\nimport styled from 'styled-components';\nimport { motion } from 'framer-motion';\nimport VoiceoverContext from '../../../misc/voiceover-context';\n\nconst EndSlide: React.FC> = ({ onComplete, defaultHeader, data }) => {\n const footer = ;\n const { volume } = useContext(VolumeContext);\n const [confetti, setConfetti] = useState(null);\n const { playVoiceover } = useContext(VoiceoverContext);\n useEffect(() => {\n const congrats1 = setTimeout(() => playVoiceover('end-finish-1'), 1500);\n const congrats2 = setTimeout(() => playVoiceover('end-finish-2'), 3500);\n const congrats3 = setTimeout(() => playVoiceover('end-finish-3'), 11500);\n if (volume) sfx.cheer.play();\n return () => { clearTimeout(congrats1); clearTimeout(congrats2); clearTimeout(congrats3) }\n }, []);\n\n useEffect(() => {\n confetti?.rewardMe();\n let interval = setInterval(() => confetti?.rewardMe(), 10000);\n return () => clearInterval(interval);\n }, [confetti]);\n\n return (\n \n \n \n {/**/}\n\n \n {/* ref ? ref.rewardMe() : null } type='confetti'/> */}\n setConfetti(ref)} type=\"confetti\">\n \"\"\n\n
\n
\n\n

\n {t`You have completed`}\n
\n {t`The Phisherman`}!\n

\n \n \n \n \n \n
\n

{t`Let an adult know what you’ve learnt about in The Phisherman and if they know anyone who might also enjoy it they can share it with them too! Don’t forget you should always tell an adult if you feel unsafe or sad when you are online.`}

\n \n
\n
\n );\n};\n\nconst Whale = styled(motion.img)`\n position: absolute;\n right: 25px;\n width: 140px;\n height: 120px;\n top: -25px;\n @media (max-width: 767px) {\n width: 70px;\n height: 60px;\n }\n`;\nconst Seal = styled(motion.img)`\n position: absolute;\n right: -70px;\n width: 140px;\n height: 120px;\n bottom: 30%;\n @media (max-width: 767px) {\n width: 70px;\n height: 60px;\n right: -30px;\n }\n`;\n\nconst Turtle = styled(motion.img)`\n position: absolute;\n left: -30px;\n width: 80px;\n height: 120px;\n bottom: 0;\n @media (max-width: 767px) {\n width: 60px;\n height: 80px;\n }\n`;\n\nconst Pufferfish = styled(motion.img)`\n position: absolute;\n top: 10px;\n width: 80px;\n height: 80px;\n left: 5px;\n @media (max-width: 767px) {\n width: 50px;\n height: 50px;\n }\n`;\n\nconst Squid = styled(motion.img)`\n position: absolute;\n right: 10px;\n width: 140px;\n height: 90px;\n bottom: -3px;\n @media (max-width: 767px) {\n width: 80px;\n height: 50px;\n }\n`;\n\nexport default EndSlide;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport background from '../assets/background/background.jpg';\nimport bg_right from '../assets/start/start-right_1.svg';\nimport bg_left from '../assets/start/start-left_2.svg';\nimport bg_ship from '../assets/start/bg-ship.svg';\nimport wave_1 from '../assets/start/wave-1.svg';\nimport wave_2 from '../assets/start/wave-2.svg';\nimport phisherman from '../assets/characters/phisherman.svg';\nimport pufferfish from '../assets/characters/2-pufferfish-1.svg';\nimport { motion } from 'framer-motion';\nimport { t } from 'ttag';\n\nconst StartSlide: React.FC = ({ defaultHeader, nextSlide }) => {\n let next = (\n \n );\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n

{ t`The Phisherman` }

\n

{ t`An Underwater Adventure` }

\n \n
\n
\n
\n );\n};\n\nconst Overlay = styled.div`\n background-color: rgba(0, 0, 0, 0.5);\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n`;\n\nconst Pufferfish = styled(motion.img)`\n position: fixed;\n left: 15%;\n top: 15%;\n width: 75px;\n @media (max-width: 767px) {\n width: 60px;\n }\n`;\nconst BGRight = styled.img`\n position: fixed;\n right: 0;\n bottom: 0;\n width: 40%;\n max-width: 800px;\n`;\nconst BGLeft = styled.img`\n position: fixed;\n left: 0;\n bottom: 0;\n width: 40%;\n max-width: 800px;\n`;\n\nconst BGShip = styled.img`\n position: fixed;\n right: 0;\n bottom: 5%;\n width: 60%;\n max-width: 1300px;\n transform: rotate(10deg);\n`;\n\nconst Background = styled.div`\n position: fixed;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n background: url(${background}) no-repeat center center fixed;\n -webkit-background-size: cover;\n -moz-background-size: cover;\n -o-background-size: cover;\n background-size: cover;\n opacity: 0.5;\n mix-blend-mode: multiply;\n`;\n\nconst StartCard = styled.div`\n width: 100%;\n display: block;\n margin: 15px auto;\n max-width: 400px;\n text-align: center;\n background-color: rgba(255,255,255,0.1);\n position relative;\n padding: 15px;\n border-radius: 5px 5px 0 0 ;\n overflow: hidden;\n z-index: 999;\n @media (min-width: 1200px){\n max-width: 475px;\n }\n`;\n\nconst Content = styled.div`\n padding-top: 50%;\n position: relative;\n z-index: 50;\n h4 {\n font-size: 1rem;\n opacity: 0.7;\n letter-spacing: 0.03em;\n font-family: 'BT Font Bold';\n text-transform: uppercase;\n }\n @media (max-width: 400px) {\n h2 {\n font-size: 7vw;\n }\n h4 {\n font-size: 5vw;\n }\n }\n`;\n\nconst Wave = styled(motion.img)`\n position: absolute;\n left: 0;\n width: 100%;\n bottom: 0;\n`;\n\nconst Phisherman = styled(motion.img)`\n position: absolute;\n left: 50%;\n width: 80%;\n bottom: 50%;\n z-index: 2;\n @media (max-width: 400px) {\n bottom: 45%;\n }\n`;\n\nexport default StartSlide;\n","import Cookies from 'js-cookie';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { isFirefox, isSafari } from 'react-device-detect';\nimport { Helmet } from 'react-helmet';\nimport styled from 'styled-components';\nimport logo from '../../../assets/brand/logo-barefoot.svg';\nimport { filter } from '../../../helpers/filter';\nimport sfx from '../../../services/sounds';\nimport Module, { IModule } from '../../core/Module';\nimport ContextualMuteButton from '../../misc/ContextualMuteButton';\nimport VoiceoverContext from '../../misc/voiceover-context';\nimport VoiceoverMuteButton from '../../misc/VoiceoverMuteButton';\nimport { VolumeContext } from '../../misc/volume-context';\nimport diver from './assets/characters/avatars/diver.svg';\nimport fish from './assets/characters/avatars/fish.svg';\nimport jelly from './assets/characters/avatars/jelly-old.svg';\nimport llama from './assets/characters/avatars/llama.svg';\nimport ray from './assets/characters/avatars/ray.svg';\nimport star from './assets/characters/avatars/star.svg';\nimport heart from './assets/gamification/heart.svg';\nimport pointsStar from './assets/gamification/star.svg';\nimport voiceoverSpriteSheetDefault from './assets/voiceovers/vo-cybersecurity-spritesheet';\nimport voiceoverSpriteSheetChrome from './assets/voiceovers/vo-cybersecurity-spritesheet-chrome';\nimport { TIslandArea } from './components/Island';\nimport Underwater from './components/Wrapper';\nimport Intro from './units/1-intro';\nimport Welcome from './units/2-welcome';\nimport FishFood from './units/3-fishfood';\nimport PhoneCall from './units/4-phonecall';\nimport Email from './units/5-email';\nimport Tiktok from './units/6-tiktok';\nimport Advert from './units/7-advert';\nimport Finale from './units/8-finale';\nimport Outro from './units/9-outro';\nimport EndSlide from './units/EndSlide';\nimport StartSlide from './units/StartSlide';\n\n\n\n\n\n\n\n\n\n\n\n\nexport type CyberSecurityData = {\n name: string;\n setName: (name: string) => void;\n avatars: string[];\n avatar: string;\n setAvatar: (a: string) => void;\n points: number;\n lives: number;\n addPoints: (amount: number) => void;\n setLives: (amount: number) => void;\n removeLife: () => void;\n availableIslandAreas: TIslandArea[];\n setAvailableIslandAreas: (islands: TIslandArea[]) => void;\n removeIslandLocation: (location: TIslandArea) => void;\n incorrectCharacteristics: string[];\n setIncorrectCharacteristics: (characteristic: string[]) => void;\n voiceover: Howl,\n music: Howl,\n playMusic: (m: Howl) => void,\n stopMusic: () => void,\n};\n\nconst CyberSecurity: React.FC = ({ onComplete }) => {\n const [name, setName] = useState(null);\n const [avatars] = useState([llama, ray, fish, jelly, star, diver]);\n const [avatar, setAvatar] = useState(avatars[0]);\n\n const [points, setPoints] = useState(0);\n const [lives, setLives] = useState(0);\n\n const [incorrectCharacteristics, setIncorrectCharacteristics] = useState(['']);\n\n const [availableIslandAreas, setAvailableIslandAreas] = useState([]);\n\n const removeIslandLocation = (location: TIslandArea) => {\n if (!availableIslandAreas) return;\n let index = availableIslandAreas.indexOf(location);\n\n if (index !== -1) {\n availableIslandAreas.splice(index, 1);\n console.log(availableIslandAreas);\n setAvailableIslandAreas([...availableIslandAreas]);\n }\n };\n\n const addPoints = (amount: number) => {\n if (points + amount < 0) {\n setPoints(0);\n console.log('No points!');\n } else {\n if (amount > 0) {\n sfx.coinsCollect.play();\n }\n setPoints(points + amount);\n }\n };\n\n const removeLife = () => {\n if (lives > 0) {\n setLives(lives - 1);\n } else {\n console.log('No lives left!');\n }\n };\n\n\n const slides = [\n StartSlide,\n ...Intro,\n ...Welcome,\n ...FishFood,\n ...PhoneCall,\n ...Email,\n ...Tiktok,\n ...Advert,\n ...Finale,\n ...Outro,\n EndSlide,\n ];\n\n const { voiceover, setVoiceover } = useContext(VoiceoverContext);\n\n useEffect(() => {\n if (!setVoiceover || ((Cookies.get('bfg_lang') ?? 'en') !== 'en')) {\n return;\n }\n\n setVoiceover(\n new Howl({\n src: require('./assets/voiceovers/vo-cybersecurity-2.mp3'),\n sprite: isSafari || isFirefox ? voiceoverSpriteSheetDefault : voiceoverSpriteSheetChrome,\n html5: true,\n volume: 0.3,\n preload: true,\n })\n );\n }, [])\n\n\n const { musicMuted } = useContext(VolumeContext);\n const [music, setMusic] = useState(sfx.themeCybersecurity);\n\n const playMusic = (m: Howl) => {\n if (m) {\n let vo: number;\n stopMusic()\n let mInstance = m.load();\n setMusic(mInstance);\n\n if (musicMuted === false) {\n vo = mInstance.play();\n }\n }\n }\n\n const stopMusic = () => {\n if (music) {\n music.stop();\n }\n }\n\n useEffect(() => {\n if (musicMuted) {\n stopMusic()\n } else if (musicMuted === false && music) {\n playMusic(music);\n }\n\n return () => {\n stopMusic();\n }\n }, [music, musicMuted])\n\n const barefootLogo = lives ? (\n
\n \"BT-Barefoot\"\n \n \"Lives\n {lives}\n \"Points\n {points}\n \n \n {/* NA THIS DOESNT GET THE MUTE STATUS JUST */}\n \n\n
\n ) : (\n
\n \"BT-Barefoot\"\n \n \n {/* Points: {points}\n Lives: {lives} */}\n
\n );\n\n\n useEffect(() => {\n setName(filter.clean(name ?? ''));\n }, [name, setName]);\n\n\n // Characteristics 17\n // Email 31\n // Pop up 63\n // End Game 58\n\n return (\n \n \n The Phisherman | Barefoot Games\n \n \n \n );\n};\n\nconst Header = styled.div`\n width: 100%;\n position: relative;\n`;\n\nconst Score = styled.div`\n border-radius: 100px;\n background-color: rgba(0, 0, 0, 0.2);\n padding: 7px 20px;\n padding: 7px 10px;\n height: 50px;\n position: absolute;\n right: 0;\n right: -5px;\n top: 0;\n img {\n height: 18px;\n width: 18px;\n margin: 0 3px;\n }\n span {\n padding: 0 3px;\n font-family: 'BT Font Extra Bold';\n font-size: 15px;\n }\n display: flex;\n align-items: center;\n @media (min-width: 400px) {\n img {\n height: 25px;\n width: 25px;\n margin: 0 5px;\n }\n span {\n padding: 0 10px;\n font-size: 1.25rem;\n }\n right: 0;\n }\n @media (min-width: 768px) {\n img {\n height: 36px;\n width: 36px;\n margin: 0 10px;\n }\n transform: translateX(50%);\n right: 50%;\n }\n`;\n\nexport default CyberSecurity;\n","import React from 'react';\nimport styled from 'styled-components';\nimport festive_landscape from '../assets/backgrounds/festive_landscape_2.svg';\nimport bg_test from '../assets/backgrounds/bg-image.svg';\nimport { motion } from 'framer-motion';\nimport Particles, { MoveDirection, OutMode } from 'react-particles-js';\n\nexport const Wrapper: React.FC = ({ children }) => {\n return (\n
\n
\n \n \n \n \n
\n {children}\n
\n );\n};\n\nconst bubblez = {\n particles: {\n number: {\n value: 160,\n density: {\n enable: false,\n },\n },\n size: {\n value: 3,\n random: true,\n anim: {\n speed: 4,\n size_min: 0.3,\n },\n },\n line_linked: {\n enable: false,\n },\n move: {\n random: true,\n speed: 1,\n direction: MoveDirection.bottom,\n outMode: OutMode.out,\n },\n },\n interactivity: {\n events: {\n resize: true,\n },\n },\n};\nconst Bubbles = styled(Particles)`\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n`;\nconst Landscape = styled.img`\n position: absolute;\n bottom: 0;\n right: 0;\n left: 0;\n width: 100%;\n`;\nconst Gradient = styled.div`\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n background: rgb(127, 33, 193);\n background: -moz-radial-gradient(\n circle,\n rgba(127, 33, 193, 1) 0%,\n rgba(100, 0, 170, 1) 60%,\n rgba(74, 5, 122, 1) 100%\n );\n background: -webkit-radial-gradient(\n circle,\n rgba(127, 33, 193, 1) 0%,\n rgba(100, 0, 170, 1) 60%,\n rgba(74, 5, 122, 1) 100%\n );\n background: radial-gradient(circle, rgba(127, 33, 193, 1) 0%, rgba(100, 0, 170, 1) 60%, rgba(74, 5, 122, 1) 100%);\n filter: progid:DXImageTransform.Microsoft.gradient(startColorstr=\"#7f21c1\",endColorstr=\"#4a057a\",GradientType=1);\n`;\nconst Pattern = styled.div`\n position:absolute;\n top:0;\n bottom:0;\n right:0;\n left:0;\n opacity: 1;\n background: url(${bg_test}) no-repeat center center fixed;\n -webkit-background-size: cover;\n -moz-background-size: cover;\n -o-background-size: cover;\n background-size: cover;\n }\n`;\n\nexport default Wrapper;\n","import { TCharacter } from '../../../general/Character';\nimport image from '../assets/characters/penguin.svg';\n\nconst Penguin: TCharacter = {\n characterName: 'Penguin',\n characterImage: image,\n characterWidth: 100,\n characterHeight: 110,\n};\n\nexport default Penguin;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Penguin from '../../characters/Penguin';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\nimport { FestiveData } from '../..';\n\nconst PenguinIntro2: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Penguin,\n text: t`${data.name}, what a lovely name! The elves have gone on holiday so we need to help out.`,\n buttonText: t`Next`,\n },\n {\n character: Penguin,\n text: t`We need to build, wrap and pack all the toys before tomorrow. You look like the perfect person to help!`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default PenguinIntro2;\n","import PenguinIntro from './PenguinIntro';\nimport NameInput from './NameInput';\nimport PenguinIntro2 from './PenguinIntro2';\n\nexport default [PenguinIntro, NameInput, PenguinIntro2];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Penguin from '../../characters/Penguin';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\nimport { FestiveData } from '../..';\n\nconst PenguinIntro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Penguin,\n text: t`Hi, I am Penguin and welcome to the North Pole! I am looking for someone to help me with organising festive gifts this year. Can you help?`,\n buttonText: t`Let's go!`,\n },\n {\n character: Penguin,\n text: t`Perfect! Before we get going, I am going to need your nickname.`,\n buttonText: t`My nickname is...`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default PenguinIntro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport { FestiveData } from '../../';\nimport { t } from 'ttag';\nimport Penguin from '../../characters/Penguin';\nimport Character from '../../../../general/Character';\n\nconst NameInput: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const next = data.name ? (\n \n ) : null;\n\n return (\n \n \n \n \n

{t`What is your nickname?`}

\n data.setName(e.target.value)}\n />\n \n
\n
\n
\n );\n};\n\nexport default NameInput;\n","import React from 'react';\nimport { Button, Col } from 'react-bootstrap';\nimport paint_stroke from '../../../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\nimport Slide from '../../../core/Slide';\nimport Content from '../../../general/Content';\n\ninterface IFestiveTask {\n header: JSX.Element;\n number: number;\n backgroundColor?: string;\n onStart: () => void;\n}\n\nexport const FestiveTask: React.FC = ({ onStart, header, number, children }) => {\n return (\n \n \n

\n {t`Task`} {number}\n

\n \"\"\n \n {children}\n \n \n \n
\n );\n};\n\nexport default FestiveTask;\n","import React from 'react';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\nimport FestiveTask from '../../components/FestiveTask';\n\nconst MissionIntro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n {t`The elves left the shop in a mess, help Penguin build the toys by joining up the right pieces.`}\n );\n};\n\nexport default MissionIntro;\n","import React from 'react';\nimport { Row, Col, Button } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../../../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\nimport { TPuzzleQuestion } from './Puzzle';\nimport ModalOverlay from '../../../../../general/ModalOverlay';\n\nconst CorrectModal: React.FC<{ question: TPuzzleQuestion; onClose: () => void; show: boolean }> = ({\n question,\n onClose,\n show,\n}) => {\n const header = (\n \n \n

\n {t`BRILLIANT!`}\n

\n \"\"\n \n
\n );\n\n const footer = ;\n\n return (\n onClose()} backgroundColor=\"#00C3A5\">\n \n \n \n
\n {/*
\n {question.name}\n
*/}\n \n {question.name}\n \n
\n
\n \n \n
\n
\n );\n};\n\nexport default CorrectModal;\n","import React from 'react';\nimport { TPuzzlePiece } from './Puzzle';\nimport { useDrag } from 'react-dnd';\nimport styled from 'styled-components';\n\ninterface PuzzlePieceProps {\n piece: TPuzzlePiece;\n}\n\nconst PuzzlePiece: React.FC = ({ piece }) => {\n const [{ opacity }, dragRef] = useDrag({\n item: { type: 'piece', position: piece.position, correct: piece.correct },\n collect: (monitor) => ({\n opacity: monitor.isDragging() ? 0.5 : 1,\n }),\n });\n return (\n \n \n \n );\n};\n\nconst StyledCol = styled.span`\n display: inline-block;\n padding: 0 15px;\n vertical-align: top;\n img {\n max-width: 70px;\n height: auto !important;\n max-height: 80px;\n margin-bottom: 5px !important;\n cursor: move;\n cursor: -webkit-grab;\n cursor: -moz-grab;\n cursor: grab;\n @media (max-width: 414px) {\n max-width: 40px;\n }\n }\n`;\n\nexport default PuzzlePiece;\n","import React, { useState } from 'react';\nimport { TPuzzlePiece } from './Puzzle';\nimport { useDrop } from 'react-dnd';\nimport styled from 'styled-components';\n\ninterface PuzzleGamePieceProps {\n piece: TPuzzlePiece;\n handleCorrect: (piece: TPuzzlePiece) => void;\n}\n\nconst PuzzleGamePiece: React.FC = ({ piece, handleCorrect }) => {\n const [select, setSelected] = useState(false);\n const [collectedProps, drop] = useDrop({\n accept: 'piece',\n drop: (item: any) => {\n if (piece.position === item.position && item.correct) {\n console.log('drop correct', collectedProps, item);\n piece.completed = true;\n handleCorrect(piece);\n setSelected(true);\n }\n },\n });\n\n return ;\n};\n\nexport default PuzzleGamePiece;\n","import React, { useContext, useEffect, useState } from 'react';\nimport { t } from 'ttag';\nimport sfx from '../../../../../../services/sounds';\nimport { GameProps, GameQuestion, useGameLogic } from '../../../../../core/Game';\nimport VolumeContext from '../../../../../misc/volume-context';\nimport styled from 'styled-components';\nimport { Row, Container, Col } from 'react-bootstrap';\nimport { shuffle } from '../../../../../../helpers/shuffle';\nimport CorrectModal from './CorrectModal';\nimport PuzzlePiece from './PuzzlePiece';\n\nimport { HTML5Backend } from 'react-dnd-html5-backend';\nimport MultiBackend from 'react-dnd-multi-backend';\nimport HTML5toTouch from 'react-dnd-multi-backend/dist/cjs/HTML5toTouch';\nimport { DndProvider } from 'react-dnd';\nimport PuzzleGamePiece from './PuzzleGamePiece';\n\nexport type TPuzzlePiece = {\n image: string;\n shadow: string;\n position: 'top' | 'middle' | 'bottom' | 'none';\n styles: object;\n completed: boolean;\n correct: boolean;\n};\n\nexport type TPuzzleQuestion = GameQuestion & {\n name: string;\n image: string;\n pieces: TPuzzlePiece[];\n};\n\ninterface PuzzleProps {}\n\nconst Puzzle: React.FC & PuzzleProps> = ({ gameData, index = 0, onGameComplete }) => {\n const [show, setShow] = useState(false);\n const { volume } = useContext(VolumeContext);\n\n const handleGameComplete = () => {\n setShow(true);\n onGameComplete();\n };\n\n const handleNextQuestion = () => {\n setShow(false);\n };\n\n const [question, nextQuestion] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextQuestion,\n index,\n );\n\n const handleModalClose = () => {\n setShow(false);\n setTimeout(nextQuestion, 0);\n };\n\n const handleQuestionComplete = () => {\n setShow(true);\n if (volume) sfx.success.play();\n };\n\n const handleCorrectPiece = (droppedPiece: TPuzzlePiece) => {\n console.log('handling...');\n question.pieces.map((piece) => {\n if (piece.position === droppedPiece.position && droppedPiece.correct) {\n console.log('piece to completed', [piece]);\n return piece;\n }\n\n return piece;\n });\n\n let selectedCount = 0;\n let totalCorrect = 0;\n question.pieces.forEach((piece) => {\n if (piece.correct) {\n totalCorrect++;\n }\n\n if (piece.completed) {\n selectedCount++;\n }\n });\n console.log(selectedCount);\n\n if (selectedCount === totalCorrect) {\n handleQuestionComplete();\n }\n };\n\n if (!question) {\n return

{t`Question not found`}

;\n }\n\n const shuffledPieces = shuffle([...question.pieces]);\n return (\n \n \n \n \n Build the toy! Drag and drop the toy pieces to complete the puzzle.\n \n\n
\n {question.pieces.map((piece, i) => (\n \n ))}\n
\n\n \n {shuffledPieces.map((piece, i) => (\n \n ))}\n \n\n {/* \n
\n \n
\n \n \n \n
*/}\n
\n );\n};\n\nconst Hint = styled.div`\n background-color: rgba(0, 0, 0, 0.3);\n color: #ffffff;\n border-radius: 5px;\n padding: 0.75rem 1rem;\n display: block;\n margin: 10px auto 3px auto;\n width: 100%;\n max-width: 300px;\n font-size: 16px;\n position: relative;\n @media (min-width: 768px) and (max-height: 770px) {\n position: fixed;\n top: 75px;\n left: 0;\n margin: 15px 5px;\n }\n i {\n position: absolute;\n left: 5px;\n top: -15px;\n height: 28px;\n width: 28px;\n font-size: 1rem;\n text-align: center;\n border-radius: 100px;\n padding: 5px 10px;\n color: #00a0d6;\n background-color: #ffffff;\n }\n`;\n\nconst PieceContainer = styled(Container)`\n margin-top: 10px;\n border-top: 3px dashed rgba(0, 0, 0, 0.1);\n padding-top: 1rem;\n max-width: 500px;\n margin-left: auto;\n margin-right: auto;\n border-bottom-left-radius: 10px;\n border-bottom-right-radius: 10px;\n text-align: center;\n background-color: rgba(0, 0, 0, 0.1);\n`;\n\nexport default Puzzle;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\n\nimport Puzzle, { TPuzzleQuestion } from '../../components/interactive/puzzle/Puzzle';\n\nimport soldierHead from '../../assets/puzzles/soldier/head.png';\nimport soldierHeadShadow from '../../assets/puzzles/soldier/head_shadow.svg';\nimport soldierBody from '../../assets/puzzles/soldier/torso.png';\nimport soldierBodyShadow from '../../assets/puzzles/soldier/torso_shadow.svg';\nimport soldierBottom from '../../assets/puzzles/soldier/legs.png';\nimport soldierBottomShadow from '../../assets/puzzles/soldier/legs_shadow.svg';\nimport soldier from '../../assets/puzzles/soldier/soldier.svg';\n\nimport robotHead from '../../assets/puzzles/robot/robot-top.png';\nimport robotBottom from '../../assets/puzzles/robot/robot-legs.png';\nimport soldierHeadDummy from '../../assets/puzzles/soldier/head-alt.png';\nimport snowmanBody from '../../assets/puzzles/snowman/middle.svg';\nimport teddyHead from '../../assets/puzzles/bear/top.png';\nimport robotDummyBottom from '../../assets/puzzles/robot/robot-legs-alt.png';\n\nconst Puzzle1: React.FC = ({ defaultHeader, nextSlide }) => {\n const gameData: TPuzzleQuestion[] = [\n {\n name: 'Toy Soldier',\n image: soldier,\n pieces: [\n {\n image: soldierHead,\n shadow: soldierHeadShadow,\n position: 'top',\n correct: true,\n styles: {\n userSelect: 'none',\n zIndex: 3,\n position: 'relative',\n filter: 'drop-shadow(0px 4px 4px rgba(0, 0, 0, 0.15)',\n marginLeft: 'auto',\n marginRight: 'auto',\n display: 'block',\n marginBottom: '-23px',\n width: '145px',\n height: '120px',\n },\n completed: false,\n },\n {\n image: soldierBody,\n shadow: soldierBodyShadow,\n position: 'middle',\n correct: true,\n styles: {\n userSelect: 'none',\n zIndex: 2,\n position: 'relative',\n filter: 'drop-shadow(0px 15px 4px rgba(0, 0, 0, 0.15)',\n marginLeft: 'auto',\n marginRight: 'auto',\n display: 'block',\n marginBottom: '-32px',\n width: '140px',\n height: '165px',\n },\n completed: false,\n },\n {\n image: soldierBottom,\n shadow: soldierBottomShadow,\n position: 'bottom',\n correct: true,\n styles: {\n userSelect: 'none',\n zIndex: 1,\n position: 'relative',\n marginLeft: 'auto',\n marginRight: 'auto',\n display: 'block',\n width: '66px',\n height: '110px',\n },\n completed: false,\n },\n { image: robotHead, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n { image: robotBottom, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n { image: soldierHeadDummy, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n { image: snowmanBody, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n { image: robotDummyBottom, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n { image: teddyHead, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n ],\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Puzzle1;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Penguin from '../../characters/Penguin';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\nimport pattern from '../../../../../assets/icons/icon_pattern.svg';\nimport SkillModal from '../../../../general/SkillModal';\n\nconst BuildingOutro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: Penguin,\n text: t`Wow! That was so fast, well done! You found all the correct pieces to use! We now have enough gifts to begin packing!`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n return (\n \n \n \n );\n};\n\nexport default BuildingOutro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Puzzle, { TPuzzleQuestion } from '../../components/interactive/puzzle/Puzzle';\n\nimport bearHead from '../../assets/puzzles/bear/top.png';\nimport bearHeadShadow from '../../assets/puzzles/bear/top-shadow.svg';\nimport bearBody from '../../assets/puzzles/bear/middle.png';\nimport bearBodyShadow from '../../assets/puzzles/bear/middle-shadow.svg';\nimport bearBottom from '../../assets/puzzles/bear/legs.png';\nimport bearBottomShadow from '../../assets/puzzles/bear/legs-shadow.svg';\nimport bear from '../../assets/puzzles/bear/bear.svg';\n\nimport snowmanBody from '../../assets/puzzles/snowman/middle.png';\nimport snowmanHead from '../../assets/puzzles/snowman/top.png';\nimport bearBodyDummy from '../../assets/puzzles/bear/middle-alt.png';\nimport robotBody from '../../assets/puzzles/robot/robot-middle.png';\nimport bearBottomDummy from '../../assets/puzzles/bear/legs-alt.png';\nimport soldierHeadDummy from '../../assets/puzzles/soldier/head-alt.png';\nimport robotHeadDummy from '../../assets/puzzles/robot/robot-top-alt.png';\n\nconst Puzzle2: React.FC = ({ defaultHeader, nextSlide }) => {\n const gameData: TPuzzleQuestion[] = [\n {\n name: 'Teddy Bear',\n image: bear,\n pieces: [\n {\n image: bearHead,\n shadow: bearHeadShadow,\n position: 'top',\n correct: true,\n styles: {\n userSelect: 'none',\n zIndex: 3,\n position: 'relative',\n filter: 'drop-shadow(0px 15px 4px rgba(0, 0, 0, 0.15)',\n marginLeft: 'auto',\n marginRight: 'auto',\n display: 'block',\n marginBottom: '-15px',\n width: '110px',\n height: '90px',\n },\n completed: false,\n },\n {\n image: bearBody,\n shadow: bearBodyShadow,\n position: 'middle',\n correct: true,\n styles: {\n userSelect: 'none',\n zIndex: 2,\n position: 'relative',\n filter: 'drop-shadow(0px 15px 4px rgba(0, 0, 0, 0.15)',\n marginLeft: 'auto',\n marginRight: 'auto',\n display: 'block',\n marginBottom: '-20px',\n width: '135px',\n height: '95px',\n },\n completed: false,\n },\n {\n image: bearBottom,\n shadow: bearBottomShadow,\n position: 'bottom',\n correct: true,\n styles: {\n userSelect: 'none',\n zIndex: 1,\n position: 'relative',\n marginLeft: 'auto',\n marginRight: 'auto',\n display: 'block',\n width: '104px',\n height: '50px',\n },\n completed: false,\n },\n { image: snowmanBody, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n { image: robotBody, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n { image: bearBottomDummy, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n { image: bearBodyDummy, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n { image: snowmanHead, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n { image: soldierHeadDummy, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n { image: robotHeadDummy, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n ],\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Puzzle2;\n","// import PenguinIntro from \"./PenguinIntro\";\n\nimport MissionIntro from './MissionIntro';\nimport Puzzle1 from './Puzzle1';\nimport BuildingOutro from './BuildingOutro';\nimport Puzzle2 from './Puzzle2';\nimport Puzzle3 from './Puzzle3';\n\nexport default [MissionIntro, Puzzle1, Puzzle2, Puzzle3, BuildingOutro];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Puzzle, { TPuzzleQuestion } from '../../components/interactive/puzzle/Puzzle';\n\nimport robotHead from '../../assets/puzzles/robot/robot-top.png';\nimport robotHeadShadow from '../../assets/puzzles/robot/robot-top-shadow.svg';\nimport robotBody from '../../assets/puzzles/robot/robot-middle.png';\nimport robotBodyShadow from '../../assets/puzzles/robot/robot-middle-shadow.svg';\nimport robotBottom from '../../assets/puzzles/robot/robot-legs.png';\nimport robotBottomShadow from '../../assets/puzzles/robot/robot-legs-shadow.svg';\nimport robot from '../../assets/puzzles/robot/robot.svg';\n\nimport soldierHead from '../../assets/puzzles/soldier/head.png';\nimport soldierBody from '../../assets/puzzles/soldier/torso.png';\nimport robotDummyLegs from '../../assets/puzzles/robot/robot-legs-alt.png';\nimport snowmanHead from '../../assets/puzzles/snowman/top.png';\nimport robotDummyHead from '../../assets/puzzles/robot/robot-top-alt.png';\nimport soldierBottom from '../../assets/puzzles/soldier/legs.png';\n\nconst Puzzle2: React.FC = ({ defaultHeader, nextSlide }) => {\n const gameData: TPuzzleQuestion[] = [\n {\n name: 'Robot',\n image: robot,\n pieces: [\n {\n image: robotHead,\n shadow: robotHeadShadow,\n position: 'top',\n correct: true,\n styles: {\n userSelect: 'none',\n zIndex: 3,\n position: 'relative',\n filter: 'drop-shadow(0px 15px 4px rgba(0, 0, 0, 0.15)',\n marginLeft: 'auto',\n marginRight: 'auto',\n display: 'block',\n marginBottom: '-2px',\n width: '80px',\n height: '90px',\n },\n completed: false,\n },\n {\n image: robotBody,\n shadow: robotBodyShadow,\n position: 'middle',\n correct: true,\n styles: {\n userSelect: 'none',\n zIndex: 2,\n position: 'relative',\n filter: 'drop-shadow(0px 15px 4px rgba(0, 0, 0, 0.15)',\n marginLeft: 'auto',\n marginRight: 'auto',\n display: 'block',\n marginBottom: '-2px',\n width: '150px',\n height: '105px',\n },\n completed: false,\n },\n {\n image: robotBottom,\n shadow: robotBottomShadow,\n position: 'bottom',\n correct: true,\n styles: {\n userSelect: 'none',\n zIndex: 1,\n position: 'relative',\n marginLeft: 'auto',\n marginRight: 'auto',\n display: 'block',\n width: '77px',\n height: '26px',\n },\n completed: false,\n },\n { image: soldierHead, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n { image: soldierBody, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n { image: robotDummyLegs, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n { image: snowmanHead, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n { image: robotDummyHead, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n { image: soldierBottom, shadow: '', position: 'none', styles: {}, completed: false, correct: false },\n ],\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Puzzle2;\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { Button } from 'react-bootstrap';\n\ntype TGiftBuilderSelector = {\n name: string;\n variants: { html: JSX.Element; value: any }[];\n};\n\nconst GiftBuilderSelector: React.FC<{ type: string; onSelect: (value: any) => void }> = ({\n type = 'pattern',\n onSelect,\n}) => {\n const [index, setIndex] = useState(0);\n const [selectorType, setSelectorType] = useState(null);\n\n const selectorTypes: TGiftBuilderSelector[] = [\n {\n name: 'pattern',\n variants: [\n { html: , value: 'snowflake' },\n { html: , value: 'star' },\n { html: , value: 'tree' },\n ],\n },\n {\n name: 'size',\n variants: [\n { html: 1, value: 1 },\n { html: 2, value: 2 },\n { html: 3, value: 3 },\n { html: 4, value: 4 },\n { html: 5, value: 5 },\n { html: 5, value: 5 },\n { html: 6, value: 6 },\n { html: 7, value: 7 },\n { html: 8, value: 8 },\n { html: 9, value: 9 },\n { html: 10, value: 10 },\n ],\n },\n {\n name: 'colour',\n variants: [\n { html: , value: '#6B7280' },\n { html: , value: '#EF4444' },\n { html: , value: '#F59E0B' },\n { html: , value: '#10B981' },\n { html: , value: '#3B82F6' },\n { html: , value: '#8B5CF6' },\n { html: , value: '#EC4899' },\n ],\n },\n ];\n\n useEffect(() => {\n let selector = selectorTypes.find((selector) => selector.name === type);\n\n setSelectorType(selector ?? null);\n }, [type]);\n\n useEffect(() => {\n if (!selectorType) return;\n onSelect(selectorType?.variants[index].value);\n }, [index]);\n\n const handleNext = () => {\n if (!selectorType) {\n return;\n }\n\n if (index + 1 >= selectorType?.variants.length ?? 0) {\n setIndex(0);\n } else {\n setIndex(index + 1);\n }\n };\n\n const handlePrev = () => {\n if (!selectorType) {\n return;\n }\n\n if (index - 1 < 0) {\n setIndex(selectorType?.variants.length - 1);\n } else {\n setIndex(index - 1);\n }\n };\n\n return (\n <>\n \n \n \n {selectorType ? selectorType?.variants[index].html : null}\n \n \n \n \n );\n};\n\nconst Selection = styled.div`\n background-color: rgba(0, 0, 0, 0.2);\n border-radius: 5px;\n height: 50px;\n width: 50px;\n display: inline-block;\n vertical-align: middle;\n margin: 0 5px;\n overflow: hidden;\n text-align: center;\n span {\n font-size: 20px;\n line-height: 50px;\n color: #ffffff;\n font-family: 'BT Font Extra Bold';\n }\n i {\n line-height: 50px;\n }\n`;\n\nconst EditButton = styled(Button)`\n font-size: 0.75rem;\n padding: 5px;\n`;\n\ninterface ColorProps {\n color: string;\n}\n\nconst SelectionColor = styled.div`\n background-color: ${(props) => (props.color ? props.color : '#000000')};\n height: 100%;\n width: 100%;\n`;\n\nexport default GiftBuilderSelector;\n","import React, { useEffect, useState } from 'react';\n\nimport styled from 'styled-components';\n\nimport ribbon_right from '../../../assets/boxing/ribbon-right.svg';\nimport ribbon_left from '../../../assets/boxing/ribbon-left.svg';\n\nimport pattern_snowflake from '../../../assets/boxing/pattern-snow.svg';\nimport pattern_star from '../../../assets/boxing/pattern-star.svg';\nimport pattern_tree from '../../../assets/boxing/pattern-tree.svg';\nimport { TGiftColor, TGiftPattern, TGiftSize } from './GiftBuilder';\n\ninterface GiftProps {\n color: TGiftColor;\n size: TGiftSize;\n pattern: TGiftPattern;\n}\n\ninterface SquareProps {\n color: string;\n size: number;\n}\n\nconst getPattern = (pattern: TGiftPattern) => {\n switch (pattern) {\n case 'snowflake': {\n return pattern_snowflake;\n }\n case 'star': {\n return pattern_star;\n }\n case 'tree': {\n return pattern_tree;\n }\n default: {\n return pattern_snowflake;\n }\n }\n};\n\nconst Gift: React.FC = ({ color, size, pattern }) => {\n return (\n \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst Square = styled.div`\n background-color: ${(props) => (props.color ? props.color : 'red')};\n margin: 0 auto;\n display: block;\n position: relative;\n border-radius: 5px;\n transition: all 0.3s ease-in-out;\n width: ${(props) => (props.size ? props.size * 10 : 50) + 20}px;\n height: ${(props) => (props.size ? props.size * 10 : 50) + 20}px;\n @media (min-width: 1000px) {\n width: ${(props) => (props.size ? props.size * 16 : 50) + 20}px;\n height: ${(props) => (props.size ? props.size * 16 : 50) + 20}px;\n border-radius: 10px;\n }\n @media (min-width: 1000px) and (min-height: 1000px) {\n width: ${(props) => (props.size ? props.size * 25 : 50) + 20}px;\n height: ${(props) => (props.size ? props.size * 25 : 50) + 20}px;\n }\n`;\n\ninterface StripeProps {\n type: string;\n}\nconst Pattern = styled.div`\n width: 100%;\n height: 100%;\n overflow: hidden;\n img {\n height: 100%;\n width: 100%;\n }\n`;\nconst Stripe = styled.div`\n background-color: #ffffff;\n position: absolute;\n ${(props) =>\n props.type === 'horizontal'\n ? 'width: 16%; top: 0; bottom: 0; left: 42%;'\n : 'height: 16%; left: 0; right: 0; top: 42%;'}\n`;\n\nconst RibbonRight = styled.img`\n position: absolute;\n top: -20%;\n left: 58%;\n height: 20%;\n`;\nconst RibbonLeft = styled.img`\n position: absolute;\n top: -20%;\n right: 58%;\n height: 20%;\n`;\n\nconst Column = styled.div`\n width: 30%;\n display: inline-block;\n`;\n\nconst Plinth = styled.div`\n background-color: #ffb950;\n bottom: -10px;\n height: 10px;\n width: calc(100% + 20px);\n left: -10px;\n position: absolute;\n`;\n\nexport default Gift;\n","import React from 'react';\nimport { Row, Col, Button } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../../../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\nimport { TGiftBuilderQuestion } from './GiftBuilder';\nimport ModalOverlay from '../../../../../general/ModalOverlay';\nimport Gift from './Gift';\n\nconst CorrectModal: React.FC<{ question: TGiftBuilderQuestion; onClose: () => void; show: boolean }> = ({\n question,\n onClose,\n show,\n}) => {\n const header = (\n \n

\n {t`Perfect!`}\n

\n \"\"\n
\n );\n\n const footer = ;\n\n return (\n onClose()} backgroundColor=\"#00C3A5\">\n \n \n

{t`You successfully made the gift box!`}

\n

\n \n \n
\n
\n );\n};\n\nexport default CorrectModal;\n","import { remove } from 'js-cookie';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { DragDropContext } from 'react-beautiful-dnd';\nimport { Button, Row, Col } from 'react-bootstrap';\n\nimport { t } from 'ttag';\nimport sfx from '../../../../../../services/sounds';\nimport { GameProps, GameQuestion, useGameLogic } from '../../../../../core/Game';\nimport VolumeContext from '../../../../../misc/volume-context';\nimport styled from 'styled-components';\nimport { motion } from 'framer-motion';\n\nimport table from '../../../assets/gifts/table.svg';\nimport box from '../../../assets/gifts/box.svg';\nimport workshop from '../../../assets/boxing/workshop2.svg';\nimport GiftBuilderSelector from './GiftBuilderSelector';\nimport Gift from './Gift';\nimport CorrectModal from './CorrectModal';\n\nexport type TGiftBuilderQuestion = GameQuestion & {\n pattern: TGiftPattern;\n size: TGiftSize;\n color: TGiftColor;\n};\n\nexport type TGiftSize = number;\nexport type TGiftPattern = 'snowflake' | 'star' | 'tree';\nexport type TGiftColor = '#6B7280' | '#EF4444' | '#F59E0B' | '#10B981' | '#3B82F6' | '#8B5CF6' | '#EC4899';\n\ninterface GiftboxProps {}\n\nconst GiftBuilder: React.FC & GiftboxProps> = ({\n gameData,\n index = 0,\n onGameComplete,\n}) => {\n const [show, setShow] = useState(false);\n const { volume } = useContext(VolumeContext);\n\n const [color, setColor] = useState('#6B7280');\n const [size, setSize] = useState(1);\n const [pattern, setPattern] = useState('snowflake');\n\n const handleGameComplete = () => {\n setShow(true);\n onGameComplete();\n };\n\n const handleNextQuestion = () => {\n setShow(false);\n };\n\n const [question, nextQuestion] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextQuestion,\n index,\n );\n\n const handleModalClose = () => {\n setShow(false);\n setTimeout(nextQuestion, 0);\n };\n\n const handleQuestionComplete = () => {\n setShow(true);\n if (volume) sfx.success.play();\n };\n\n useEffect(() => {\n // Change to on button press?\n if (question && question.color === color && question.pattern === pattern && question.size === size) {\n if (volume) sfx.correct.play();\n setTimeout(handleQuestionComplete, 1000);\n }\n }, [color, pattern, size, question]);\n\n if (!question) {\n return

{t`Question not found`}

;\n }\n\n return (\n \n \n \n \n
\n \n \n Tinker with the pattern, size and colour below to make the gifts look the same.\n \n \n \n \n

PATTERN

\n \n \n \n \n
\n \n \n

Size

\n \n \n \n \n
\n \n \n

Colour

\n \n \n \n \n
\n
\n
\n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {/* */}\n \n
\n
\n );\n};\n\nconst Hint = styled.div`\n background-color: rgba(0, 0, 0, 0.3);\n color: #ffffff;\n border-radius: 5px;\n padding: 0.75rem 1rem;\n display: block;\n margin: 0 auto;\n width: 100%;\n max-width: 300px;\n font-size: 16px;\n position: relative;\n i {\n position: absolute;\n left: 5px;\n top: -15px;\n height: 28px;\n width: 28px;\n font-size: 1rem;\n text-align: center;\n border-radius: 100px;\n padding: 5px 10px;\n color: #00a0d6;\n background-color: #ffffff;\n }\n`;\n\nconst DialProgress = styled.div``;\n\nconst GiftPlaceholder = styled.div`\n width: 50%;\n max-width: 150px;\n display: inline-block;\n @media (min-width: 1000px) {\n max-width: 250px;\n }\n @media (min-width: 1000px) and (min-height: 1000px) {\n max-width: 350px;\n }\n`;\n\nconst GiftWrapper = styled.div`\n position: absolute;\n bottom: 25px;\n width: 100%;\n text-align: center;\n`;\n\nconst TableTop = styled.div`\n height: 50px;\n background-color: #ffdb9e;\n position: relative;\n z-index: 3;\n`;\n\nconst TableBottom = styled.div`\n height: 100px;\n border-top: solid 10px #ffc57a;\n background-color: #572109;\n`;\n\ninterface ColorProps {\n color: string;\n}\nconst EditCard = styled.div`\n background: #00a0d6;\n border-radius: 5px;\n box-shadow: 0px 4px 15px rgba(0, 0, 0, 0.25);\n display: block;\n margin: 0.5rem auto 0 auto;\n width: 100%;\n max-width: 300px;\n padding: 1rem;\n position: relative;\n z-index: 4;\n p {\n font-family: 'BT Font Extra Bold';\n margin-bottom: 0;\n letter-spacing: 0.01em;\n text-transform: uppercase;\n }\n`;\n\nconst SectionEdit = styled.div`\n flex-shrink: 0;\n flex-grow: 1;\n display: flex;\n align-items: center;\n padding-bottom: 3rem;\n`;\n\nconst SectionTable = styled.div`\n flex: 0 0 auto;\n align-self: flex-end;\n position: relative;\n width: 100%;\n text-align: center;\n`;\n\nconst SubmitContainer = styled.div`\n position: absolute;\n bottom: 0;\n width: 100%;\n text-align: center;\n padding-bottom: 10px;\n z-index: 999;\n`;\nconst GameWrapper = styled.div`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: #f5e5d8;\n display: flex;\n flex-flow: column;\n margin-top: 65px;\n background: url(${workshop}) no-repeat center center fixed;\n background-size: cover;\n`;\n\nexport default GiftBuilder;\n","import React from 'react';\nimport FestiveTask from '../../components/FestiveTask';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst MissionIntro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n {t`Help Penguin make the perfect gift boxes by tinkering with the gift box machine's settings.`}\n );\n};\n\nexport default MissionIntro;\n","import GiftboxGame from './GiftboxGame';\nimport GiftboxGame2 from './GiftboxGame2';\nimport GiftboxIntro from './GiftboxIntro';\nimport GiftboxOutro from './GiftboxOutro';\nimport MissionIntro from './MissionIntro';\n\nexport default [GiftboxIntro, MissionIntro, GiftboxGame2, GiftboxOutro];\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Penguin from '../../characters/Penguin';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\nimport WordDiscovery from '../../../../general/WordDiscovery';\n\nconst GiftboxIntro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [show, setShow] = useState(false);\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Penguin,\n text: t`Now that we have the gifts, we need to make sure that we have the perfect gift boxes to go with them.`,\n buttonText: t`Next`,\n },\n {\n character: Penguin,\n text: t`Let's see if you can make more of our beautiful gift boxes by tinkering with our gift box machine...`,\n buttonText: t`Next`,\n buttonAction: () => setShow(true),\n },\n // {\n // character: Penguin,\n // text: t`Packing the gifts requires trial and error. Too many gifts and box will break, too few and our friends will be unhappy.`,\n // buttonText: t`Next`,\n // buttonAction: nextSlide,\n // },\n ];\n\n return (\n \n \n {/* */}\n \n \n );\n};\n\nexport default GiftboxIntro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport GiftBuilder, { TGiftBuilderQuestion } from '../../components/interactive/giftbuilder/GiftBuilder';\n\nconst GiftboxGame: React.FC = ({ defaultHeader, nextSlide }) => {\n let next = (\n \n );\n\n const gameData: TGiftBuilderQuestion[] = [\n {\n size: 8,\n pattern: 'star',\n color: '#EC4899',\n },\n\n {\n size: 1,\n pattern: 'snowflake',\n color: '#10B981',\n },\n\n {\n size: 10,\n pattern: 'tree',\n color: '#8B5CF6',\n },\n ];\n\n return (\n \n {/* */}\n \n \n );\n};\n\nexport default GiftboxGame;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Penguin from '../../characters/Penguin';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\nimport pattern from '../../../../../assets/icons/icon_pattern.svg';\nimport SkillModal from '../../../../general/SkillModal';\n\nconst GiftboxOutro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: Penguin,\n text: t`Wow, those boxes are beautiful, well done! You tinkered with the machine to identify the correct settings for each box!`,\n buttonText: t`Next`,\n buttonAction: () => setShow(true),\n },\n ];\n return (\n \n \n \n \n );\n};\n\nexport default GiftboxOutro;\n","import GiftIntro from './GiftIntro';\n\nexport default [\n // GiftIntro\n];\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { Button } from 'react-bootstrap';\n\nimport soldier from '../../../assets/puzzles/icon-soldier.png';\nimport snowman from '../../../assets/puzzles/icon-snow.png';\nimport robot from '../../../assets/puzzles/icon-robot.png';\n\ntype TGiftBuilderSelector = {\n name: string;\n variants: { html: JSX.Element; value: any }[];\n};\n\nconst GiftBuilderSelector: React.FC<{ type: string; onSelect: (value: any) => void }> = ({\n type = 'toy',\n onSelect,\n}) => {\n const [index, setIndex] = useState(0);\n const [selectorType, setSelectorType] = useState(null);\n\n const selectorTypes: TGiftBuilderSelector[] = [\n {\n name: 'toy',\n variants: [\n { html: , value: 'soldier' },\n { html: , value: 'robot' },\n { html: , value: 'snowman' },\n ],\n },\n {\n name: 'box',\n variants: [\n { html: , value: '#6B7280' },\n { html: , value: '#EF4444' },\n { html: , value: '#F59E0B' },\n { html: , value: '#10B981' },\n { html: , value: '#3B82F6' },\n { html: , value: '#8B5CF6' },\n { html: , value: '#EC4899' },\n ],\n },\n ];\n\n useEffect(() => {\n let selector = selectorTypes.find((selector) => selector.name === type);\n\n setSelectorType(selector ?? null);\n }, [type]);\n\n useEffect(() => {\n if (!selectorType) return;\n onSelect(selectorType?.variants[index].value);\n }, [index]);\n\n const handleNext = () => {\n if (!selectorType) {\n return;\n }\n\n if (index + 1 >= selectorType?.variants.length ?? 0) {\n setIndex(0);\n } else {\n setIndex(index + 1);\n }\n };\n\n const handlePrev = () => {\n if (!selectorType) {\n return;\n }\n\n if (index - 1 < 0) {\n setIndex(selectorType?.variants.length - 1);\n } else {\n setIndex(index - 1);\n }\n };\n\n return (\n <>\n \n \n \n {selectorType ? selectorType?.variants[index].html : null}\n \n \n \n \n );\n};\n\nconst Selection = styled.div`\n background-color: rgba(0, 0, 0, 0.2);\n border-radius: 5px;\n height: 50px;\n width: 50px;\n display: inline-block;\n vertical-align: middle;\n margin: 0 5px;\n overflow: hidden;\n text-align: center;\n span {\n font-size: 20px;\n line-height: 50px;\n color: #ffffff;\n font-family: 'BT Font Extra Bold';\n }\n i {\n line-height: 50px;\n }\n`;\n\nconst EditButton = styled(Button)`\n font-size: 0.75rem;\n padding: 5px;\n`;\n\ninterface ColorProps {\n color: string;\n}\n\nconst SelectionColor = styled.div`\n background-color: ${(props) => (props.color ? props.color : '#000000')};\n height: 100%;\n width: 100%;\n`;\n\nexport default GiftBuilderSelector;\n","import React, { useEffect, useState } from 'react';\n\nimport styled from 'styled-components';\n\nimport ribbon_right from '../../../assets/boxing/ribbon-right.svg';\nimport ribbon_left from '../../../assets/boxing/ribbon-left.svg';\n\nimport pattern_snowflake from '../../../assets/boxing/pattern-snow.svg';\nimport pattern_star from '../../../assets/boxing/pattern-star.svg';\nimport { TGiftColor, TGiftPattern, TGiftSize } from '../giftbuilder/GiftBuilder';\n\ninterface GiftProps {\n color: TGiftColor;\n size: TGiftSize;\n pattern?: TGiftPattern;\n}\n\ninterface SquareProps {\n color: string;\n size: number;\n}\n\nconst getPattern = (pattern: TGiftPattern) => {\n switch (pattern) {\n case 'snowflake': {\n return pattern_snowflake;\n }\n case 'star': {\n return pattern_star;\n }\n default: {\n return pattern_snowflake;\n }\n }\n};\n\nconst Gift: React.FC = ({ color, size, pattern }) => {\n return (\n \n \n \n \n \n \n );\n};\n\nconst Square = styled.div`\n background-color: ${(props) => (props.color ? props.color : 'red')};\n margin: 0 auto;\n display: block;\n position: relative;\n border-radius: 3px;\n transition: all 0.3s ease-in-out;\n width: ${(props) => (props.size ? props.size * 10 : 50) + 20}px;\n height: ${(props) => (props.size ? props.size * 10 : 50) + 20}px;\n @media (min-width: 1000px) {\n width: ${(props) => (props.size ? props.size * 16 : 50) + 20}px;\n height: ${(props) => (props.size ? props.size * 16 : 50) + 20}px;\n border-radius: 10px;\n }\n @media (min-width: 1000px) and (min-height: 1000px) {\n width: ${(props) => (props.size ? props.size * 25 : 50) + 20}px;\n height: ${(props) => (props.size ? props.size * 25 : 50) + 20}px;\n }\n`;\n\ninterface StripeProps {\n type: string;\n}\nconst Pattern = styled.div`\n width: 100%;\n height: 100%;\n overflow: hidden;\n img {\n height: 100%;\n width: 100%;\n }\n`;\nconst Stripe = styled.div`\n background-color: #ffffff;\n position: absolute;\n ${(props) =>\n props.type === 'horizontal'\n ? 'width: 16%; top: 0; bottom: 0; left: 42%;'\n : 'height: 16%; left: 0; right: 0; top: 42%;'}\n`;\n\nconst RibbonRight = styled.img`\n position: absolute;\n top: -20%;\n left: 58%;\n height: 20%;\n`;\nconst RibbonLeft = styled.img`\n position: absolute;\n top: -20%;\n right: 58%;\n height: 20%;\n`;\n\nconst Column = styled.div`\n width: 30%;\n display: inline-block;\n`;\n\nconst Plinth = styled.div`\n background-color: #ffb950;\n bottom: -10px;\n height: 10px;\n width: calc(100% + 20px);\n left: -10px;\n position: absolute;\n`;\n\nexport default Gift;\n","import React from 'react';\nimport { Row, Col, Button } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../../../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\nimport { TGiftSendQuestion } from './GiftSend2';\nimport ModalOverlay from '../../../../../general/ModalOverlay';\nimport Gift from './Gift';\n\nconst CorrectModal: React.FC<{ question: TGiftSendQuestion; onClose: () => void; show: boolean }> = ({\n question,\n onClose,\n show,\n}) => {\n const header = (\n \n

\n {t`Perfect!`}\n

\n \"\"\n
\n );\n\n const footer = ;\n\n return (\n onClose()} backgroundColor=\"#00C3A5\">\n \n \n

{t`You successfully made the perfect present!`}

\n

\n {/* */}\n \n
\n
\n );\n};\n\nexport default CorrectModal;\n","import { remove } from 'js-cookie';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { DragDropContext } from 'react-beautiful-dnd';\nimport { Button, Row, Col } from 'react-bootstrap';\n\nimport { t } from 'ttag';\nimport sfx from '../../../../../../services/sounds';\nimport { GameProps, GameQuestion, useGameLogic } from '../../../../../core/Game';\nimport VolumeContext from '../../../../../misc/volume-context';\nimport styled from 'styled-components';\nimport { motion, useAnimation } from 'framer-motion';\n\nimport table from '../../../assets/gifts/table.svg';\nimport box from '../../../assets/gifts/box.svg';\nimport workshop from '../../../assets/boxing/workshop2.svg';\nimport GiftBuilderSelector from './GiftBuilderSelector';\nimport Gift from './Gift';\nimport CorrectModal from './CorrectModal';\n\nimport balloon from '../../../assets/characters/balloon_penguin.svg';\nimport gift from '../../../assets/send/gift.svg';\nimport home from '../../../assets/send/home.svg';\nimport power_ups from '../../../assets/send/power-ups.svg';\nimport heart_circle from '../../../assets/send/heart-circle.svg';\nimport toaster from 'toasted-notes';\n\nexport type TGiftSendQuestion = GameQuestion & {\n box: TBox;\n toy: TToy;\n house: string;\n};\n\nexport type TBox = '#6B7280' | '#EF4444' | '#F59E0B' | '#10B981' | '#3B82F6' | '#8B5CF6' | '#EC4899';\nexport type TToy = 'snowman' | 'soldier' | 'robot';\n\ninterface GiftboxProps {}\n\nconst GiftBuilder: React.FC & GiftboxProps> = ({\n gameData,\n index = 0,\n onGameComplete,\n}) => {\n const [show, setShow] = useState(false);\n const [happiness, setHappiness] = useState(0);\n const [totalSent, setTotalSend] = useState(0);\n const [hint, setHint] = useState(true);\n\n const { volume } = useContext(VolumeContext);\n\n const [box, setBox] = useState('#6B7280');\n const [toy, setToy] = useState('snowman');\n\n const anim_gift = useAnimation();\n\n async function sequence() {\n await anim_gift.start({ y: 150, opacity: 1, transition: { duration: 1, ease: 'linear' } });\n await anim_gift.start({ y: 200, opacity: 0, transition: { duration: 0.25, ease: 'linear' } });\n await anim_gift.start({ y: 0, opacity: 0 });\n }\n\n const handleGameComplete = () => {\n // setShow(true);\n if (volume) sfx.success.play();\n\n onGameComplete();\n };\n\n const handleNextQuestion = () => {\n setShow(false);\n };\n\n const [question, nextQuestion] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextQuestion,\n index,\n );\n\n const handleModalClose = () => {\n setShow(false);\n setTimeout(onGameComplete, 0);\n };\n\n const handleQuestionComplete = () => {\n setTotalSend(totalSent + 1);\n nextQuestion();\n };\n\n useEffect(() => {\n let happiness = 0;\n\n if (!question) {\n return;\n }\n\n if (question.box === box) {\n happiness += 50;\n }\n\n if (question.toy === toy) {\n happiness += 50;\n }\n\n setHappiness(happiness);\n // Change to on button press?\n // if (question && (question.box === box && question.toy === toy)) {\n // if (volume) sfx.correct.play();\n // setTimeout(handleQuestionComplete, 1000);\n // }\n }, [box, toy, question]);\n\n const handlePackAndSend = () => {\n if (question && question.box === box && question.toy === toy) {\n sequence();\n if (volume) sfx.correct.play();\n toaster.notify(t`Perfect! Gift delivered!`, {\n duration: 2000,\n position: 'bottom',\n });\n setTimeout(handleQuestionComplete, 1000);\n } else {\n if (volume) sfx.incorrect.play();\n toaster.notify(t`Not quite, try another combination!`, {\n duration: 2000,\n position: 'bottom',\n });\n }\n };\n\n if (!question) {\n return

{t`Question not found`}

;\n }\n\n return (\n \n \n \n \n \n \n \n \n \n

\n {gameData.length - totalSent} BOX\n {gameData.length - totalSent > 1 ? 'ES' : null} LEFT\n

\n {/*

Increment: {increment}

*/}\n {/*

Total Sent: {totalSent}

*/}\n
\n
\n {hint ? (\n \n \n setHint(false)}>\n Use your new tinkering skills to send the perfect present for each house.\n \n ) : null}\n\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n Pack & Send\n \n \n
\n
\n\n {/* \n \n \n \n \n \n \n \n \n \n \n \n */}\n \n \n \n \n \n \n \n \n\n {/* */}\n \n
\n
\n );\n};\nconst DesktopBg = styled.div`\n display: none;\n @media (min-width: 620px) {\n display: block;\n position: absolute;\n height: 100%;\n background-color: rgba(0, 0, 0, 0.1);\n right: 0;\n width: 164px;\n }\n`;\nconst DesktopBar = styled.div`\n height: 100%;\n position: absolute;\n bottom: 0;\n left: 0;\n background-color: #e5007d;\n width: ${(props) => props.happiness}%;\n transition: width 0.5s ease-in-out;\n`;\n\ninterface HeartProps {\n desktop?: boolean;\n}\n\nconst DesktopHappiness = styled.div`\n display: none;\n @media (min-width: 620px) {\n position: absolute;\n display: block;\n top: 24px;\n height: 8px;\n right: 10px;\n width: 140px;\n background-color: #ffffff;\n border-radius: 10px;\n overflow: hidden;\n }\n`;\n\ninterface SendProps {\n ready?: boolean;\n}\n\nconst SendButton = styled(Button)`\n width: 100%;\n @media (min-width: 620px) {\n position: absolute;\n top: 45px;\n right: 10px;\n width: auto;\n }\n ${(props) =>\n props.ready ? 'background-color: #E60050 !important; color: #ffffff !important; &:hover {opacity: 0.9}' : ''}\n`;\n\nconst HeartCircle = styled.img`\n position: absolute;\n height: 30px;\n width: 30px;\n ${(props) =>\n !props.desktop\n ? 'bottom: 2px;left: calc(50% - 110px); z-index: 999;'\n : 'z-index: 50; top: 16px; height: 25px; width: 25px; right: 130px; @media (max-width: 619px) {display: none}'}\n`;\n\nconst BarWrapper = styled.div`\n position: relative;\n height: 100%;\n width: 100%;\n`;\n\ninterface HappyProps {\n happiness: number;\n}\n\nconst Happiness = styled.div`\n position: absolute;\n bottom: 5px;\n width: 10px;\n overflow: hidden;\n border-radius: 15px;\n height: 125px;\n left: calc(50% - 100px);\n background-color: #ffffff;\n box-shadow: 0 0 10px rgba(0, 0, 0, 0.4);\n z-index: 999;\n`;\nconst HappinessBar = styled.div`\n width: 100%;\n position: absolute;\n bottom: 0;\n left: 0;\n background-color: #e5007d;\n height: ${(props) => props.happiness}%;\n transition: height 0.5s ease-in-out;\n`;\n\nconst Label = styled.p`\n font-size: 14px;\n`;\n\nconst Hint = styled.div`\n background-color: rgba(0, 0, 0, 0.3);\n color: #ffffff;\n border-radius: 5px;\n padding: 0.75rem 1rem;\n width: 200px;\n font-size: 16px;\n position: fixed;\n bottom: 175px;\n left: calc(50% - 100px);\n z-index: 5;\n i {\n position: absolute;\n left: 5px;\n top: -15px;\n height: 28px;\n width: 28px;\n font-size: 1rem;\n text-align: center;\n border-radius: 100px;\n padding: 5px 10px;\n color: #00a0d6;\n background-color: #ffffff;\n }\n .fa-times {\n background-color: transparent;\n left: auto;\n color: rgba(255, 255, 255, 0.5);\n right: 3px;\n top: 3px;\n font-size: 0.75rem;\n cursor: pointer;\n }\n @media (min-width: 900px) {\n bottom: auto;\n display: block;\n background-color: rgba(0, 0, 0, 0.1);\n left: 5px;\n width: 100%;\n max-width: 200px;\n top: 96px;\n }\n @media (min-width: 1200px) {\n max-width: 300px;\n left: calc(50% - 550px);\n }\n`;\n\nconst EditCard = styled.div`\n background: #00a0d6;\n border-radius: 5px;\n box-shadow: 0px 4px 15px rgba(0, 0, 0, 0.25);\n display: block;\n margin: 0 auto;\n width: 100%;\n max-width: 300px;\n padding: 1rem;\n position: relative;\n z-index: 4;\n overflow: hidden;\n @media (min-width: 620px) {\n max-width: 450px;\n padding: 14px 170px 10px 10px;\n }\n p {\n font-family: 'BT Font Extra Bold';\n margin-bottom: 0;\n letter-spacing: 0.01em;\n text-transform: uppercase;\n }\n`;\n\nconst SectionEdit = styled.div`\n position: fixed;\n top: 60px;\n width: 100%;\n`;\n\nconst SubmitContainer = styled.div`\n position: absolute;\n bottom: 0;\n width: 100%;\n text-align: center;\n padding-bottom: 10px;\n z-index: 999;\n`;\n\nconst Balloon = styled(motion.div)`\n max-width: 300px;\n width: 100%;\n display: block;\n margin-bottom: 10px;\n margin-left: auto;\n margin-right: auto;\n position: relative;\n top: -200px;\n @media (min-width: 767px) and (min-height: 650px) {\n max-width: 350px;\n }\n @media (min-width: 767px) and (min-height: 800px) {\n max-width: 400px;\n }\n @media (min-width: 767px) and (min-height: 1000px) {\n top: -100px;\n }\n`;\n\nconst BalloonImg = styled(motion.img)`\n width: 100%;\n z-index: 2;\n position: relative;\n`;\n\nconst GameWrapper = styled.div`\n position: fixed;\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n display: flex;\n flex-flow: column;\n margin-top: 65px;\n`;\n\nconst Score = styled.div`\n background-color: #361559;\n left: calc(50% - 69px);\n bottom: 0;\n z-index: 10;\n width: 130px;\n position: absolute;\n padding: 10px 5px;\n text-transform: uppercase;\n line-height: 40px;\n h4 {\n font-size: 16px;\n font-family: 'BT Font Bold';\n letter-spacing: 0.05em;\n margin-bottom: 0;\n }\n span {\n background-color: rgba(0, 0, 0, 0.1);\n padding: 5px;\n }\n`;\n\nconst GiftDrop = styled(motion.div)`\n position: absolute;\n bottom: 0;\n left: calc(50% - 25px);\n width: 50px;\n z-index: 1;\n`;\n\nconst Home = styled(motion.img)`\n position: absolute;\n bottom: 0;\n width: 200px;\n left: calc(50% - 100px);\n`;\n\nexport default GiftBuilder;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport GiftSend, { TGiftSendQuestion } from '../../components/interactive/gift-send-2/GiftSend2';\nimport home1 from '../../assets/send/home.svg';\nimport home2 from '../../assets/send/home-2.svg';\nimport home3 from '../../assets/send/home-3.svg';\n\nconst SendingGame2: React.FC = ({ defaultHeader, nextSlide }) => {\n let next = (\n \n );\n\n const gameData: TGiftSendQuestion[] = [\n {\n toy: 'soldier',\n box: '#3B82F6',\n house: home1,\n },\n {\n toy: 'snowman',\n box: '#10B981',\n house: home2,\n },\n {\n toy: 'robot',\n box: '#F59E0B',\n house: home3,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default SendingGame2;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Penguin from '../../characters/Penguin';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst SendingIntro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Penguin,\n text: t`All we need to do now is send the gifts to our friends. I hear there are some buttons on the balloon that may help you do the job. Let’s get going!`,\n buttonText: t`Let's go!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default SendingIntro;\n","import React from 'react';\nimport FestiveTask from '../../components/FestiveTask';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst SendingMission: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n {t`Help Penguin pack and deliver the perfect presents to each house.`}\n );\n};\n\nexport default SendingMission;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Penguin from '../../characters/Penguin';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\nimport pattern from '../../assets/Trophy.png';\nimport SkillModal from '../../../../general/SkillModal';\n\nconst SendingOutro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: Penguin,\n text: t`Amazing! You tinkered with the different combinations until we had the perfect present for each house.`,\n buttonText: t`Next`,\n },\n {\n character: Penguin,\n text: t`They are going to be so happy when they wake up, you are really becoming an expert at this!`,\n buttonText: t`Next`,\n buttonAction: () => setShow(true),\n },\n ];\n return (\n \n \n \n \n );\n};\n\nexport default SendingOutro;\n","import SendingGame from './SendingGame';\nimport SendingGame2 from './SendingGame2';\nimport SendingIntro from './SendingIntro';\nimport SendingMission from './SendingMission';\nimport SendingOutro from './SendingOutro';\n\nexport default [\n SendingIntro,\n SendingMission,\n SendingGame2,\n // SendingGame,\n SendingOutro,\n];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Penguin from '../../characters/Penguin';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst Outro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: Penguin,\n text: t`Thank you for your help, I hope you learned a thing or two about tinkering. You have done such an amazing job, the elves will be delighted!`,\n buttonText: t`Woohoo!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Outro;\n","// import PenguinIntro from \"./PenguinIntro\";\n\nimport Outro from './Outro';\n\nexport default [Outro];\n","import React, { useContext, useEffect, useState } from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport Reward from 'react-rewards';\nimport { t } from 'ttag';\nimport sfx from '../../../../services/sounds';\nimport Slide, { ISlide } from '../../../core/Slide';\nimport Content from '../../../general/Content';\nimport { VolumeContext } from '../../../misc/volume-context';\nimport Penguin from '../characters/Penguin';\n\nconst EndPage: React.FC = ({ onComplete, defaultHeader }) => {\n const footer = ;\n const { volume } = useContext(VolumeContext);\n\n const [confetti, setConfetti] = useState(null);\n\n useEffect(() => {\n confetti?.rewardMe();\n let interval = setInterval(() => confetti?.rewardMe(), 5000);\n return () => clearInterval(interval);\n }, [confetti]);\n\n if (volume) sfx.cheer.play();\n return (\n \n \n \n {/**/}\n\n \n setConfetti(ref)} type=\"confetti\">\n \"\"\n
\n
\n\n

\n {t`You have completed`}\n
\n {t`Gift Wrapped`}!\n

\n
\n {t`Let your parent know what you’ve learnt about in Gift Wrapped and if they know any family or friends who might also enjoy it they can share it via Facebook or Twitter`}

\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n );\n};\n\nexport default EndPage;\n","import React from 'react';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport Slide, { ISlide } from '../../../core/Slide';\nimport { t } from 'ttag';\nimport Cookies from 'js-cookie';\nimport title from '../assets/start/title.svg';\nimport styled, { keyframes } from 'styled-components';\nimport { motion } from 'framer-motion';\n\nconst StartSlide: React.FC = ({ nextSlide, defaultHeader }) => {\n const containerVariants = {\n hidden: { opacity: 0 },\n visible: {\n opacity: 1,\n transition: {\n staggerChildren: 0.15,\n },\n },\n };\n const pathVariants = {\n hidden: {\n fill: 'rgba(255,255,255,0)',\n pathLength: 0,\n },\n visible: {\n fill: '#E2D7FF',\n pathLength: 1,\n transition: {\n duration: 1,\n ease: 'easeInOut',\n },\n },\n };\n const snowVariants = {\n hidden: {\n opacity: 0,\n y: -20,\n scale: 0.7,\n },\n visible: {\n y: 0,\n scale: 1,\n opacity: 1,\n transition: {\n duration: 0.6,\n ease: 'easeInOut',\n },\n },\n };\n return (\n \n \n {/* */}\n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n \n \n \n );\n};\nconst SVGContainer = styled.div`\n width: 100%;\n height: 0;\n padding-top: 50%;\n position: relative;\n margin-bottom: 1rem;\n`;\n\nconst StartSVG = styled(motion.svg)`\n position: absolute;\n top: 0;\n left: 0;\n stroke: #fff;\n stroke-width: 0.5;\n stroke-linejoin: round;\n stroke-linecap: round;\n width: 100%;\n margin-bottom: 1.5rem;\n path {\n stroke: #fff;\n stroke-width: 1;\n }\n`;\n\nconst Welcome = styled.div`\n display: block;\n margin: 15px auto;\n max-width: 800px;\n padding: 2rem 3rem;\n text-align: center;\n border-radius: 5px;\n`;\n\nexport default StartSlide;\n","import React, { useContext, useEffect, useState } from 'react';\nimport { Helmet } from 'react-helmet';\nimport logo from '../../../assets/brand/logo-barefoot.svg';\nimport { filter } from '../../../helpers/filter';\nimport sfx from '../../../services/sounds';\nimport Module, { IModule } from '../../core/Module';\nimport MuteButton from '../../misc/MuteButton';\nimport { VolumeContext } from '../../misc/volume-context';\nimport Snowy from './components/Wrapper';\nimport Intro from './units/1-intro';\nimport Building from './units/2-building';\nimport Boxing from './units/3-boxing';\nimport Gift from './units/4-gift';\nimport Sending from './units/5-sending';\nimport End from './units/6-end';\nimport EndSlide from './units/EndSlide';\nimport StartSlide from './units/StartSlide';\n\n\n\n\n\n\n\nexport type FestiveData = {\n name: string;\n setName: (name: string) => void;\n};\n\nconst Festive: React.FC = ({ onComplete }) => {\n const [name, setName] = useState(null);\n const { volume } = useContext(VolumeContext);\n\n const slides = [StartSlide, ...Intro, ...Building, ...Boxing, ...Gift, ...Sending, ...End, EndSlide];\n\n const barefootLogo = (\n <>\n
\n \"BT-Barefoot\"\n \n
\n \n );\n\n useEffect(() => {\n setName(filter.clean(name ?? ''));\n }, [name, setName]);\n\n useEffect(() => {\n let theme = sfx.themeFestive.load().play();\n return () => {\n if (theme !== undefined) {\n sfx.themeFestive.stop(theme);\n }\n };\n }, []);\n\n return (\n \n \n Gift Wrapped | Barefoot Games\n \n \n \n );\n};\n\nexport default Festive;\n","import fiona from '../../../../assets/characters/farmer-leanne.svg';\nimport leanne from '../../../../assets/characters/farmer-fiona.svg';\nimport jacob from '../../../../assets/characters/farmer-jacob.svg';\nimport allZookeepers from '../../../../assets/characters/farmers-trio.svg';\nimport { TCharacter } from '../../../general/Character';\nimport { t } from 'ttag';\n\nexport const ZookeeperLeanne: TCharacter = {\n characterName: t`Farmer Leanne`,\n characterImage: leanne,\n characterWidth: 100,\n characterHeight: 180,\n};\n\nexport const ZookeeperFiona: TCharacter = {\n characterName: t`Farmer Fiona`,\n characterImage: fiona,\n characterWidth: 100,\n characterHeight: 180,\n};\n\nexport const ZookeeperJacob: TCharacter = {\n characterName: t`Farmer Jacob`,\n characterImage: jacob,\n characterWidth: 90,\n characterHeight: 160,\n};\n\nexport const AllZookeepers: TCharacter = {\n characterName: t`Leanne, Fiona & Jacob`,\n characterImage: allZookeepers,\n characterWidth: 220,\n characterHeight: 180,\n};\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { SortingData } from '../..';\nimport { t } from 'ttag';\nimport { ZookeeperLeanne } from '../../characters/Zookeepers';\n\nconst TuringOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: ZookeeperLeanne,\n text: t`Thanks so much ${data.name}. We can’t sort our animals into the right pens. I think we have too many...`,\n buttonText: t`Next`,\n },\n {\n character: ZookeeperLeanne,\n text: t`By mistake we put a goat in the pig pen last week... Luckily we have the whole family here to help, let's say hello to them!`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default TuringOutro;\n","import Intro from './Intro';\nimport NameInput from './NameInput';\nimport Outro from './Outro';\n\nexport default [Intro, NameInput, Outro];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\nimport { ZookeeperLeanne } from '../../characters/Zookeepers';\n\nconst Intro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: ZookeeperLeanne,\n text: t`Hi there, I’m Leanne. Welcome to the Barefoot Family Farm, we really need your help! What is your nickname?`,\n buttonText: t`My nickname is...`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport Character from '../../../../general/Character';\nimport { SortingData } from '../..';\nimport { t } from 'ttag';\nimport { ZookeeperLeanne } from '../../characters/Zookeepers';\n\nconst NameInput: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const next = data.name ? (\n \n ) : null;\n\n return (\n \n \n \n \n

{t`What is your nickname?`}

\n data.setName(e.target.value)}\n />\n \n
\n
\n
\n );\n};\n\nexport default NameInput;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\nimport { ZookeeperFiona } from '../../characters/Zookeepers';\nimport { SortingData } from '../..';\n\nconst Intro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: ZookeeperFiona,\n text: t`Hi ${data.name}! I’m Fiona and I’ll be helping you create algorithms later for sorting the animals.`,\n buttonText: t`Enter`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\nimport { ZookeeperJacob } from '../../characters/Zookeepers';\nimport { SortingData } from '../..';\n\nconst Intro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: ZookeeperJacob,\n text: t`And I’m Jacob. I will help you spot what’s the same about animals to help you sort them. Actually… can you help me now?`,\n buttonText: t`Sure!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport MissionSlide from '../../../../general/MissionSlide';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst MissionIntro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n {t`Help Farmer Jacob sort the animals by spotting what’s the same about them.`}\n );\n};\n\nexport default MissionIntro;\n","import React, { useState, useEffect, useContext } from 'react';\nimport { Feature } from './SimilarFeatures';\nimport sfx from '../../../services/sounds';\nimport { VolumeContext } from '../../misc/volume-context';\nimport styled from 'styled-components';\n\nconst Tile: React.FC<{\n feature: Feature;\n onAnswer: (correct: boolean) => void;\n resetQuestion: boolean;\n isDisabled: boolean;\n bgColour: string;\n}> = ({ feature, onAnswer, resetQuestion, isDisabled, bgColour = '#00C3A5' }) => {\n const [selected, setSelected] = useState(false);\n // const [tileFeature, setTileFeature] = useState(feature);\n const { volume } = useContext(VolumeContext);\n\n useEffect(() => {\n setSelected(false);\n // setTileFeature(feature);\n }, [feature]);\n\n useEffect(() => {\n console.log('Question reset');\n setSelected(false);\n }, [resetQuestion]);\n\n // let textClasses = classNames({\n // 'text-center': true,\n // 'text-success': selected && feature.correct,\n // 'text-danger': selected && !feature.correct,\n // });\n\n const handleSelected = () => {\n setSelected(true);\n onAnswer(feature.correct);\n if (feature.correct) {\n if (volume) sfx.correct.play();\n } else {\n if (volume) sfx.incorrect.play();\n }\n };\n\n return (\n \n
\n
\n \"\"\n
{feature.text}
\n
\n
\n \n );\n};\n\ninterface TileProps {\n bgColour: string;\n correct: boolean;\n selected: boolean;\n disabled: boolean;\n}\nconst TileStyle = styled.button`\n background-color: ${(props) =>\n props.correct && props.selected ? props.bgColour + ' !important' : props.disabled ? '#CCCCCC' : ''};\n width: 100%;\n display: block;\n border: none;\n border-radius: 5px;\n border: solid 3px transparent;\n overflow: hidden;\n &:focus {\n outline: none;\n border-color: #0ab9f0;\n }\n`;\n\nexport default Tile;\n","import React, { useEffect, useState } from 'react';\nimport { Col, Container, Row } from 'react-bootstrap';\nimport toaster from 'toasted-notes';\nimport 'toasted-notes/src/styles.css'; // optional styles\nimport { SimilarFeaturesQuestion } from './SimilarFeatures';\nimport Tile from './Tile';\nimport { t } from 'ttag';\n\nexport type GameTileGroup = {\n question: SimilarFeaturesQuestion;\n onComplete: () => void;\n};\n\nconst TileGroup: React.FC = ({ question, onComplete }) => {\n const tiles = question.answers;\n const [targetCorrect, setTargetCorrect] = useState(0);\n const [answersCorrect, setAnswersCorrect] = useState(0);\n\n const [questionTiles, setQuestionTiles] = useState(tiles);\n const [resetQuestion, setResetQuestion] = useState(false);\n\n const [disabled, setDisabled] = useState(false);\n\n useEffect(() => {\n setQuestionTiles(tiles);\n }, [tiles]);\n\n useEffect(() => {\n let correctAnswers = 0;\n for (let i = 0; i < tiles.length; ++i) {\n if (tiles[i].correct === true) {\n correctAnswers++;\n }\n }\n\n setAnswersCorrect(0);\n setTargetCorrect(correctAnswers);\n }, [tiles]);\n\n useEffect(() => {\n if (answersCorrect > 0 && answersCorrect === targetCorrect) {\n // QUESTION COMPLETE\n setDisabled(true);\n\n setAnswersCorrect(0);\n //delay before modal\n setTimeout(() => {\n onComplete();\n setDisabled(false);\n }, 1000);\n // onComplete();\n }\n }, [answersCorrect, onComplete, targetCorrect]);\n\n const onAnswer = (correct: boolean) => {\n if (correct === false) {\n // RESET QUESTION? OnIncorrect\n // maybe pass the question with the onanswer so we have the hint\n toaster.notify(t`Oh no! That was incorrect.`, {\n duration: 2000,\n position: 'bottom',\n });\n setDisabled(true);\n\n setTimeout(() => {\n setResetQuestion(!resetQuestion);\n setAnswersCorrect(0);\n setDisabled(false);\n }, 1000);\n } else {\n setAnswersCorrect(answersCorrect + 1);\n }\n };\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nexport default TileGroup;\n","import React from 'react';\nimport { SimilarFeaturesQuestion } from './SimilarFeatures';\nimport ModalOverlay from '../../general/ModalOverlay';\nimport { Row, Col, Button } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\n\nconst CorrectModal: React.FC<{ question: SimilarFeaturesQuestion; onClose: () => void; show: boolean }> = ({\n question,\n onClose,\n show,\n}) => {\n const header = (\n \n \n

\n {t`CORRECT!`}\n

\n \"\"\n \n
\n );\n\n const footer = ;\n\n return (\n onClose()} backgroundColor=\"#00C3A5\">\n \n \n
\n

{question.answerText}

\n
\n \n
\n
\n \n
\n
\n );\n};\n\nexport default CorrectModal;\n","import React, { useState, useContext } from 'react';\nimport TileGroup from './TileGroup';\nimport CorrectModal from './CorrectModal';\nimport sfx from '../../../services/sounds';\nimport { VolumeContext } from '../../misc/volume-context';\nimport { useGameLogic, GameProps } from '../../core/Game';\nimport { Container, Row, Col } from 'react-bootstrap';\n\ntype Question = {\n text: string;\n images: [string, string, string, string];\n colour: string;\n};\n\nexport type Feature = {\n image: string;\n correct: boolean;\n text: string;\n};\n\nexport type SimilarFeaturesQuestion = {\n question: Question;\n answerText: string;\n answerImage: string;\n answers: [Feature, Feature, Feature, Feature, Feature, Feature, Feature, Feature, Feature];\n};\n\nconst SimilarFeatures: React.FC> = ({ gameData, onGameComplete }) => {\n const [show, setShow] = useState(false);\n\n const handleGameComplete = () => {\n setShow(true);\n onGameComplete();\n };\n\n const handleNextQuestion = () => {\n setShow(false);\n };\n\n const [question, nextQuestion] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextQuestion,\n );\n\n const { volume } = useContext(VolumeContext);\n\n const handleModalClose = () => {\n setShow(false);\n setTimeout(nextQuestion, 0);\n };\n\n const handleQuestionComplete = () => {\n setShow(true);\n if (volume) sfx.success.play();\n };\n\n if (question === null) {\n return null;\n }\n\n return (\n \n \n\n \n \n \n \n \n \"\"\n \n \n \"\"\n \n \n \n \n \"\"\n \n \n \"\"\n \n \n \n \n \n\n
\n

{question.question.text}

\n
\n \n
\n );\n};\n\nexport default SimilarFeatures;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\nimport { ZookeeperJacob } from '../../../sorting/characters/Zookeepers';\nimport pattern from '../../../../../assets/icons/icon_pattern.svg';\nimport SkillModal from '../../../../general/SkillModal';\n\nconst MissionOutro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: ZookeeperJacob,\n text: t`You spotted what’s the same for the sheep, chickens and cows. Nice work!`,\n buttonText: t`Next`,\n },\n {\n character: ZookeeperJacob,\n text: t`Brilliant! You’ve helped us sort some of the animals on the farm.`,\n buttonText: t`No problem!`,\n buttonAction: () => setShow(true),\n },\n ];\n\n return (\n \n \n \n \n );\n};\n\nexport default MissionOutro;\n","import Intro from './Intro';\nimport Intro2 from './Intro2';\nimport MissionIntro from './MissionIntro';\nimport MissionPattern from './MissionPattern';\nimport MissionOutro from './MissionOutro';\n\nexport default [Intro, Intro2, MissionIntro, MissionPattern, MissionOutro];\n","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport pattern_chicken from '../../../../../assets/games/features/pattern--chicken.svg';\nimport pattern_cow from '../../../../../assets/games/features/pattern--cow.svg';\nimport pattern_sheep from '../../../../../assets/games/features/pattern--sheep.svg';\nimport beak from '../../../../../assets/games/features/so-icon--beak.svg';\nimport feather from '../../../../../assets/games/features/so-icon--feather.svg';\nimport fur from '../../../../../assets/games/features/so-icon--mane.svg';\nimport paw from '../../../../../assets/games/features/so-icon--paw.svg';\nimport wing from '../../../../../assets/games/features/so-icon--wing.svg';\nimport four from '../../../../../assets/games/features/so-icon__four.svg';\nimport hooves from '../../../../../assets/games/features/so-icon__hooves.svg';\nimport horns from '../../../../../assets/games/features/so-icon__horns.svg';\nimport wool from '../../../../../assets/games/features/so-icon__wool.svg';\nimport chicken1 from '../../../../../assets/games/stock/so-stock--chicken1.jpg';\nimport chicken2 from '../../../../../assets/games/stock/so-stock--chicken2.jpg';\nimport chicken3 from '../../../../../assets/games/stock/so-stock--chicken3.jpg';\nimport chicken4 from '../../../../../assets/games/stock/so-stock--chicken4.jpg';\nimport cow1 from '../../../../../assets/games/stock/so-stock--cow1.jpg';\nimport cow2 from '../../../../../assets/games/stock/so-stock--cow2.jpg';\nimport cow3 from '../../../../../assets/games/stock/so-stock--cow3.jpg';\nimport cow4 from '../../../../../assets/games/stock/so-stock--cow4.jpg';\nimport sheep1 from '../../../../../assets/games/stock/so-stock--sheep1.jpg';\nimport sheep2 from '../../../../../assets/games/stock/so-stock--sheep2.jpg';\nimport sheep3 from '../../../../../assets/games/stock/so-stock--sheep3.jpg';\nimport sheep4 from '../../../../../assets/games/stock/so-stock--sheep4.jpg';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport SimilarFeatures, { SimilarFeaturesQuestion } from '../../../../interactive/similarfeatures/SimilarFeatures';\n\nconst MissionPattern: React.FC = ({ nextSlide }) => {\n const header = (\n

\n {t`Mission 1:`} {t`Spot what’s the same for the animals`}\n

\n );\n\n const gameData: SimilarFeaturesQuestion[] = [\n {\n question: {\n text: t`Look carefully, what’s the same about these sheep? They all have:`,\n images: [sheep1, sheep2, sheep3, sheep4],\n colour: '#FFE202',\n },\n answerText: t`Well done! You have spotted a pattern that all the sheep have wool, 4 legs and hooves.`,\n answerImage: pattern_sheep,\n answers: [\n {\n image: horns,\n correct: false,\n text: t`HORNS`,\n },\n {\n image: wing,\n correct: false,\n text: t`WINGS`,\n },\n {\n image: four,\n correct: true,\n text: t`4 LEGS`,\n },\n {\n image: paw,\n correct: false,\n text: t`PAWS`,\n },\n {\n image: hooves,\n correct: true,\n text: t`HOOVES`,\n },\n {\n image: feather,\n correct: false,\n text: t`FEATHERS`,\n },\n {\n image: beak,\n correct: false,\n text: t`BEAK`,\n },\n {\n image: wool,\n correct: true,\n text: t`WOOL`,\n },\n {\n image: fur,\n correct: false,\n text: t`FUR`,\n },\n ],\n },\n {\n question: {\n text: t`Look carefully, what’s the same about these chickens? They all have:`,\n images: [chicken1, chicken2, chicken3, chicken4],\n colour: '#02C2FF',\n },\n answerText: t`Well done! You have spotted a pattern that all the chickens have wings, feathers and a beak.`,\n answerImage: pattern_chicken,\n answers: [\n {\n image: horns,\n correct: false,\n text: t`HORNS`,\n },\n {\n image: wing,\n correct: true,\n text: t`WINGS`,\n },\n {\n image: four,\n correct: false,\n text: t`4 LEGS`,\n },\n {\n image: paw,\n correct: false,\n text: t`PAWS`,\n },\n {\n image: hooves,\n correct: false,\n text: t`HOOVES`,\n },\n {\n image: feather,\n correct: true,\n text: t`FEATHERS`,\n },\n {\n image: beak,\n correct: true,\n text: t`BEAK`,\n },\n {\n image: wool,\n correct: false,\n text: t`WOOL`,\n },\n {\n image: fur,\n correct: false,\n text: t`FUR`,\n },\n ],\n },\n {\n question: {\n text: t`Look carefully, what’s the same about these cows? They all have:`,\n images: [cow1, cow2, cow3, cow4],\n colour: '#F4B4FF',\n },\n answerText: t`Well done! You have spotted a pattern that all the cows have hooves, 4 legs and fur.`,\n answerImage: pattern_cow,\n answers: [\n {\n image: horns,\n correct: false,\n text: t`HORNS`,\n },\n {\n image: wing,\n correct: false,\n text: t`WINGS`,\n },\n {\n image: four,\n correct: true,\n text: t`4 LEGS`,\n },\n {\n image: paw,\n correct: false,\n text: t`PAWS`,\n },\n {\n image: hooves,\n correct: true,\n text: t`HOOVES`,\n },\n {\n image: feather,\n correct: false,\n text: t`FEATHERS`,\n },\n {\n image: beak,\n correct: false,\n text: t`BEAK`,\n },\n {\n image: wool,\n correct: false,\n text: t`WOOL`,\n },\n {\n image: fur,\n correct: true,\n text: t`FUR`,\n },\n ],\n },\n ];\n\n return (\n \n \n \n \n \n \n \n );\n};\n\nexport default MissionPattern;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\nimport { ZookeeperJacob } from '../../../sorting/characters/Zookeepers';\n\nconst Intro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: ZookeeperJacob,\n text: t`We need to tell the other farmers how to sort the animals. I think I can see some ducks in the cow pen…`,\n buttonText: t`Oh no!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\nimport { ZookeeperFiona } from '../../../sorting/characters/Zookeepers';\nimport WordDiscovery from '../../../../general/WordDiscovery';\n\nconst Intro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: ZookeeperFiona,\n text: t`Let’s try an algorithm. An algorithm is a precise sequence of instructions or rules to get something done.`,\n buttonText: t`Good idea!`,\n buttonAction: () => setShow(true),\n },\n ];\n\n return (\n \n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\nimport { ZookeeperFiona } from '../../../sorting/characters/Zookeepers';\n\nconst Intro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: ZookeeperFiona,\n text: t`An algorithm will help the other farmers sort the animals, can you help me create one?`,\n buttonText: t`Of course!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport MissionSlide from '../../../../general/MissionSlide';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst MissionIntro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n {t`Help Farmer Fiona sort the animals by building an algorithm.`}\n );\n};\n\nexport default MissionIntro;\n","import React from 'react';\nimport ModalOverlay from '../../general/ModalOverlay';\nimport { TSortAlgorithmQuestion } from './SortAlgorithmGame';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\n\nconst SortAlgorithmCorrectModal: React.FC<{ show: boolean; question: TSortAlgorithmQuestion; onClose: () => void }> = ({\n show,\n question,\n onClose,\n}) => {\n const header = (\n \n \n

\n {t`CORRECT!`}\n

\n \"\"\n \n
\n );\n\n return (\n {t`Next`}}\n backgroundColor=\"#00C3A5\"\n >\n \n \n
\n {t`Well done! Your algorithm sorted the animals successfully.`}

\n

\n {t`Sorted animals:`}\n

\n {question.question.objects\n .filter((object) => {\n return question.answers.every((answer) => object.tags.includes(answer));\n })\n .map((object) => (\n {object.name}\n ))}\n
\n \n
\n \n );\n};\n\nexport default SortAlgorithmCorrectModal;\n","import React from 'react';\nimport ModalOverlay from '../../general/ModalOverlay';\nimport { TSortAlgorithmQuestion } from './SortAlgorithmGame';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport { t } from 'ttag';\n\nconst SortAlgorithmQuestionModal: React.FC<{ show: boolean; question: TSortAlgorithmQuestion; setShow: any }> = ({\n show,\n question,\n setShow,\n}) => {\n return (\n }\n footer={}\n backgroundColor=\"#2D0954\"\n >\n \n \n

{question.question.text}

\n
\n {question.question.objects.map((object) => (\n {object.name}\n ))}\n
\n \n
\n \n );\n};\n\nexport default SortAlgorithmQuestionModal;\n","import React, { useEffect, useState } from 'react';\nimport { Form, FormControl } from 'react-bootstrap';\nimport { c } from 'ttag';\nimport { shuffle } from '../../../helpers/shuffle';\nimport { TSortAlgorithmQuestion } from './SortAlgorithmGame';\n\nconst AlgorithmSelector: React.FC<{\n onSelectionChange: (sid: string, selection: string) => void;\n sid: string;\n question: TSortAlgorithmQuestion;\n answersInput: { [key: string]: string };\n}> = ({ onSelectionChange, sid, question, answersInput }) => {\n const [valOne, setValOne] = useState('');\n\n const [options, setOptions] = useState([]);\n\n useEffect(() => {\n // send to parent\n onSelectionChange(sid, valOne);\n }, [valOne]);\n\n useEffect(() => {\n let tempOpts = question.question.objects.map((obj) => obj.tags).flat();\n let a = Array.from(new Set(tempOpts));\n // remove already selected opts if not equal to valOne\n a = a.filter((opt) => {\n return answersInput[sid] === opt || !Object.values(answersInput).includes(opt);\n });\n\n a = shuffle(a);\n\n setOptions(a);\n }, [question, answersInput]);\n\n useEffect(() => {\n setValOne('');\n }, [question]);\n\n return (\n
\n \n {parseInt(sid) > 0 ? (\n

{c('If the object it has xyz... and it also has...').t`and it...`}

\n ) : null}\n ) => setValOne(e.currentTarget.value)}\n >\n {options.map((op: string) => (\n \n ))}\n \n \n
\n
\n );\n};\n\nexport default AlgorithmSelector;\n","import React from 'react';\nimport ModalOverlay from '../../general/ModalOverlay';\nimport { TSortAlgorithmQuestion } from './SortAlgorithmGame';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport paint_stroke from '../../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\n\nconst SortAlgorithmWrongModal: React.FC<{\n show: boolean;\n question: TSortAlgorithmQuestion;\n onClose: () => void;\n answersInput: { [key: string]: string };\n}> = ({ show, question, onClose, answersInput }) => {\n const header = (\n \n

\n {t`INCORRECT!`}\n

\n \"\"\n
\n );\n\n let filteredAnswers = question.question.objects\n .filter((object) => {\n return Object.values(answersInput).every((answer: string) => object.tags.includes(answer));\n })\n .map((object) => (\n
\n \n
\n ));\n\n return (\n {t`Continue`}}\n backgroundColor=\"#E73981\"\n >\n \n \n
\n

{question.question.text}

\n {t`Your algorithm resulted in:`}\n {filteredAnswers.length ? filteredAnswers :

{t`No results`}

}\n
\n \n
\n \n );\n};\n\nexport default SortAlgorithmWrongModal;\n","import React, { useContext, useEffect, useState } from 'react';\nimport { Button } from 'react-bootstrap';\nimport toaster from 'toasted-notes';\nimport { c, t } from 'ttag';\nimport sfx from '../../../services/sounds';\nimport { GameProps, GameQuestion, useGameLogic } from '../../core/Game';\nimport { VolumeContext } from '../../misc/volume-context';\nimport SortAlgorithmCorrectModal from './SortAlgorithmCorrectModal';\nimport SortAlgorithmQuestionModal from './SortAlgorithmQuestionModal';\nimport SortAlgorithmSelector from './SortAlgorithmSelector';\nimport SortAlgorithmWrongModal from './SortAlgorithmWrongModal';\n\ntype SortObject = {\n name: string;\n image: string;\n tags: string[];\n};\n\nexport type TSortAlgorithmQuestion = GameQuestion & {\n question: {\n text: string;\n animal: string;\n objects: SortObject[];\n };\n answers: string[];\n};\n\nconst SortAlgorithmGame: React.FC> = ({ gameData, index = 0, onGameComplete }) => {\n const [show, setShow] = useState(false);\n const [incorrectShow, setIncorrectShow] = useState(false);\n // const [disabled, setDisabled] = useState(false);\n const [answer, setAnswer] = useState<{ [key: string]: string }>({});\n const { volume } = useContext(VolumeContext);\n const [questionModalShow, setQuestionModalShow] = useState(true);\n\n const handleGameComplete = () => {\n setShow(true);\n onGameComplete();\n };\n\n const handleNextQuestion = () => {\n setShow(false);\n setQuestionModalShow(true);\n };\n\n const [question, nextQuestion] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextQuestion,\n index,\n );\n\n const handleAnswerSubmit = () => {\n let correctAnswers = 0;\n // setDisabled(true);\n\n // convert obj to array\n let answerArray = Object.values(answer);\n\n // if arrays match then pass\n if (answerArray.sort().join(',') === question.answers.sort().join(',')) {\n // correct answer\n console.log('correct');\n if (volume) sfx.success.play();\n setShow(true);\n } else {\n setIncorrectShow(true);\n toaster.notify(t`That was incorrect, try again.`, {\n duration: 2000,\n position: 'bottom',\n });\n console.log('wrong, not enough correct', correctAnswers, question.answers.length);\n if (volume) sfx.incorrect.play();\n\n // setTimeout(() => setDisabled(false), 1000);\n // incorrect\n }\n };\n useEffect(() => {\n console.log(answer);\n }, [answer]);\n\n const handleAnswerChange = (sid: string, selection: string) => {\n console.log('total selection', sid, selection);\n setAnswer({\n ...answer,\n [sid]: selection,\n });\n };\n\n const handleModalClose = () => {\n // setDisabled(false);\n\n setShow(false);\n setTimeout(nextQuestion, 0);\n };\n\n if (!question) {\n return

;\n }\n\n return (\n \n \n\n \n setIncorrectShow(false)}\n answersInput={answer}\n >\n\n
\n
\n
\n
\n
\n object.name === question.question.animal,\n )?.image\n }\n width={'200px'}\n alt={t`Animal`}\n />\n

{question.question.animal}

\n
\n
\n
\n {t`Create an algorithm to only select the given animal.`}

\n \n
\n
\n
\n\n

{c('If the object it has x...').t`If it...`}

\n {question.answers.map((q, index) => (\n \n ))}\n

\n {c('it is an animal').t`...it is a`} {question.question.animal}.\n

\n\n \n
\n
\n );\n};\n\nexport default SortAlgorithmGame;\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { ZookeeperFiona } from '../../../sorting/characters/Zookeepers';\n\nconst MissionOutro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: ZookeeperFiona,\n text: t`Wow! That was fast! You were so speedy with your algorithms, you really are saving the day!`,\n buttonText: t`Thanks!`,\n },\n {\n character: ZookeeperFiona,\n text: t`I’m going to pass you onto Leanne for the final group of animals. I think these last few may be trickier...`,\n buttonText: t`Next!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default MissionOutro;\n","import Intro from './Intro';\nimport Intro2 from './Intro2';\nimport Intro3 from './Intro3';\nimport MissionIntro from './MissionIntro';\nimport MissionAlgorithm from './MissionAlgorithm';\nimport MissionOutro from './MissionOutro';\n\nexport default [Intro, Intro2, Intro3, MissionIntro, MissionAlgorithm, MissionOutro];\n","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport duck1 from '../../../../../assets/games/stock/so-algo-duck1.jpg';\nimport duck2 from '../../../../../assets/games/stock/so-algo-duck2.jpg';\nimport duck3 from '../../../../../assets/games/stock/so-algo-duck3.jpg';\nimport goat1 from '../../../../../assets/games/stock/so-algo-goat1.jpg';\nimport goat2 from '../../../../../assets/games/stock/so-algo-goat2.jpg';\nimport horse1 from '../../../../../assets/games/stock/so-algo-horse1.jpg';\nimport horse2 from '../../../../../assets/games/stock/so-algo-horse2.jpg';\nimport pig1 from '../../../../../assets/games/stock/so-algo-pig1.jpg';\nimport pig2 from '../../../../../assets/games/stock/so-algo-pig2.jpg';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport SortAlgorithmGame, { TSortAlgorithmQuestion } from '../../../../interactive/algorithmsort/SortAlgorithmGame';\n\nconst MissionAlgorithm: React.FC = ({ nextSlide }) => {\n const header = (\n

\n {t`Mission 2: `}\n {t`Sort the animals using an algorithm`}\n

\n );\n\n const gameData: TSortAlgorithmQuestion[] = [\n {\n question: {\n text: t`Create an algorithm to only select the HORSES`,\n animal: t`horse`,\n objects: [\n {\n name: t`horse`,\n image: horse1,\n tags: [t`has hooves`, t`has a mane`],\n },\n {\n name: t`pig`,\n image: pig1,\n tags: [t`has a curly tail`, t`has a snout`],\n },\n {\n name: t`goat`,\n image: goat1,\n tags: [t`has hooves`, t`has horns`],\n },\n {\n name: t`duck`,\n image: duck1,\n tags: [t`has wings`, t`has a beak`, t`has feathers`],\n },\n {\n name: t`horse`,\n image: horse2,\n tags: [t`has hooves`, t`has a mane`],\n },\n {\n name: t`pig`,\n image: pig2,\n tags: [t`has a curly tail`, t`has a snout`],\n },\n {\n name: t`goat`,\n image: goat2,\n tags: [t`has hooves`, t`has horns`],\n },\n {\n name: t`duck`,\n image: duck2,\n tags: [t`has wings`, t`has a beak`, t`has feathers`],\n },\n {\n name: t`duck`,\n image: duck3,\n tags: [t`has wings`, t`has a beak`, t`has feathers`],\n },\n ],\n },\n answers: [t`has hooves`, t`has a mane`],\n },\n {\n question: {\n text: t`Create an algorithm to only select the DUCKS.`,\n animal: t`duck`,\n objects: [\n {\n name: t`horse`,\n image: horse1,\n tags: [t`has hooves`, t`has a mane`],\n },\n {\n name: t`pig`,\n image: pig1,\n tags: [t`has a curly tail`, t`has a snout`],\n },\n {\n name: t`goat`,\n image: goat1,\n tags: [t`has hooves`, t`has horns`],\n },\n {\n name: t`duck`,\n image: duck1,\n tags: [t`has wings`, t`has a beak`, t`has feathers`],\n },\n {\n name: t`horse`,\n image: horse2,\n tags: [t`has hooves`, t`has a mane`],\n },\n {\n name: t`pig`,\n image: pig2,\n tags: [t`has a curly tail`, t`has a snout`],\n },\n {\n name: t`goat`,\n image: goat2,\n tags: [t`has hooves`, t`has horns`],\n },\n {\n name: t`duck`,\n image: duck2,\n tags: [t`has wings`, t`has a beak`, t`has feathers`],\n },\n {\n name: t`duck`,\n image: duck3,\n tags: [t`has wings`, t`has a beak`, t`has feathers`],\n },\n ],\n },\n answers: [t`has wings`, t`has a beak`, t`has feathers`],\n },\n ];\n\n return (\n \n \n \n \n\n {/* */}\n \n \n \n );\n};\n\nexport default MissionAlgorithm;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\nimport { ZookeeperLeanne } from '../../characters/Zookeepers';\n\nconst Intro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: ZookeeperLeanne,\n text: t`The last group of animals are really similar. Your algorithm will need more rules to sort them correctly. Are you ready?`,\n buttonText: t`Let's Go!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport MissionSlide from '../../../../general/MissionSlide';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst MissionIntro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n {t`Help Farmer Leanne sort the final animals using an algorithm.`}\n );\n};\n\nexport default MissionIntro;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\nimport { ZookeeperLeanne } from '../../../sorting/characters/Zookeepers';\nimport { SortingData } from '../..';\nimport algorithm from '../../../../../assets/icons/icon_algorithms.svg';\nimport SkillModal from '../../../../general/SkillModal';\n\nconst MissionOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: ZookeeperLeanne,\n text: t`Awesome! Making algorithms with those rules makes sorting the animals so easy!`,\n buttonText: t`Next`,\n },\n {\n character: ZookeeperLeanne,\n text: t`All of the animals are finally in the right place. Your algorithms may have saved the farm! Thanks ${data.name}!`,\n buttonText: t`Woohoo!`,\n buttonAction: () => setShow(true),\n },\n ];\n\n return (\n \n \n \n \n );\n};\n\nexport default MissionOutro;\n","import Intro from './Intro';\nimport MissionIntro from './MissionIntro';\nimport MissionAlgorithm from './MissionAlgorithm';\nimport MissionOutro from './MissionOutro';\n\nexport default [Intro, MissionIntro, MissionAlgorithm, MissionOutro];\n","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport chicken1 from '../../../../../assets/games/stock/so-algo--chicken1.jpg';\nimport cow1 from '../../../../../assets/games/stock/so-algo--cow1.jpg';\nimport cow2 from '../../../../../assets/games/stock/so-algo--cow2.jpg';\nimport dog1 from '../../../../../assets/games/stock/so-algo--dog1.jpg';\nimport dog2 from '../../../../../assets/games/stock/so-algo--dog2.jpg';\nimport dog3 from '../../../../../assets/games/stock/so-algo--dog3.jpg';\nimport goose1 from '../../../../../assets/games/stock/so-algo--goose1.jpg';\nimport goose2 from '../../../../../assets/games/stock/so-algo--goose2.jpg';\nimport sheep1 from '../../../../../assets/games/stock/so-algo--sheep1.jpg';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport SortAlgorithmGame, { TSortAlgorithmQuestion } from '../../../../interactive/algorithmsort/SortAlgorithmGame';\n\nconst MissionAlgorithm: React.FC = ({ nextSlide }) => {\n const header = (\n

\n {t`Mission 3:`} {t`Sort the animals using an algorithm`}\n

\n );\n\n const gameData: TSortAlgorithmQuestion[] = [\n {\n question: {\n text: t`Create an algorithm to only select the DOGS`,\n animal: t`dog`,\n objects: [\n {\n name: t`dog`,\n image: dog1,\n tags: [t`has paws`, t`has four legs`, t`has fur`],\n },\n {\n name: t`sheep`,\n image: sheep1,\n tags: [t`has four legs`, t`has wool`, t`has hooves`],\n },\n {\n name: t`dog`,\n image: dog2,\n tags: [t`has paws`, t`has four legs`, t`has fur`],\n },\n {\n name: t`goose`,\n image: goose1,\n tags: [t`has webbed feet`, t`has wings`, t`has a beak`, t`has feathers`],\n },\n {\n name: t`chicken`,\n image: chicken1,\n tags: [t`has wings`, t`has a beak`, t`has feathers`],\n },\n {\n name: t`cow`,\n image: cow1,\n tags: [t`has four legs`, t`has fur`, t`has hooves`],\n },\n {\n name: t`dog`,\n image: dog3,\n tags: [t`has paws`, t`has four legs`, t`has fur`],\n },\n {\n name: t`cow`,\n image: cow2,\n tags: [t`has four legs`, t`has fur`, t`has hooves`],\n },\n {\n name: t`goose`,\n image: goose2,\n tags: [t`has webbed feet`, t`has wings`, t`has a beak`, t`has feathers`],\n },\n ],\n },\n answers: [t`has paws`, t`has four legs`, t`has fur`],\n },\n\n {\n question: {\n text: t`Create an algorithm to only select the GEESE`,\n animal: t`goose`,\n objects: [\n {\n name: t`dog`,\n image: dog1,\n tags: [t`has paws`, t`has four legs`, t`has fur`],\n },\n {\n name: t`sheep`,\n image: sheep1,\n tags: [t`has four legs`, t`has wool`, t`has hooves`],\n },\n {\n name: t`dog`,\n image: dog2,\n tags: [t`has paws`, t`has four legs`, t`has fur`],\n },\n {\n name: t`goose`,\n image: goose1,\n tags: [t`has webbed feet`, t`has wings`, t`has a beak`, t`has feathers`],\n },\n {\n name: t`chicken`,\n image: chicken1,\n tags: [t`has wings`, t`has a beak`, t`has feathers`],\n },\n {\n name: t`cow`,\n image: cow1,\n tags: [t`has four legs`, t`has fur`, t`has hooves`],\n },\n {\n name: t`dog`,\n image: dog3,\n tags: [t`has paws`, t`has four legs`, t`has fur`],\n },\n {\n name: t`cow`,\n image: cow2,\n tags: [t`has four legs`, t`has fur`, t`has hooves`],\n },\n {\n name: t`goose`,\n image: goose2,\n tags: [t`has webbed feet`, t`has wings`, t`has a beak`, t`has feathers`],\n },\n ],\n },\n answers: [t`has webbed feet`, t`has wings`, t`has a beak`, t`has feathers`],\n },\n ];\n\n return (\n \n \n \n \n\n {/* */}\n \n \n \n );\n};\n\nexport default MissionAlgorithm;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { SortingData } from '../..';\nimport { t } from 'ttag';\nimport { AllZookeepers } from '../../../sorting/characters/Zookeepers';\n\nconst TuringOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AllZookeepers,\n text: t`From all of us here at the Barefoot family farm, thank you so much for your help. We couldn’t have done it without you! We hope to see you soon.`,\n buttonText: t`Bye!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default TuringOutro;\n","import Intro from './Intro';\nimport Recap from './Recap';\nimport Outro from './Outro';\n\nexport default [Intro, Recap, Outro];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\nimport { ZookeeperLeanne } from '../../../sorting/characters/Zookeepers';\nimport { SortingData } from '../..';\n\nconst Intro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: ZookeeperLeanne,\n text: t`Let’s have a look at what you’ve achieved today ${data.name}.`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Content from '../../../../general/Content';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport algorithm from '../../../../../assets/icons/icon_algorithms.svg';\nimport pattern from '../../../../../assets/icons/icon_pattern.svg';\nimport paint_stroke from '../../../../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\n\nconst Recap: React.FC = ({ nextSlide, defaultHeader }) => {\n const footer = ;\n\n return (\n \n \n \n

{t`You have completed`}

\n

{t`Sorting it out!`}

\n \"\"\n \n \n \n \"\"\n \n \n

{t`Patterns`}

\n

{t`You spotted patterns in what's the same for the animals.`}

\n \n
\n
\n \n \n \n \"\"\n \n \n

{t`Algorithms`}

\n

{t`You created sets of rules to sort the animals.`}

\n \n
\n
\n \n
\n
\n );\n};\n\nexport default Recap;\n","import React, { useContext } from 'react';\nimport Slide, { ISlide } from '../../../core/Slide';\nimport Content from '../../../general/Content';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport { VolumeContext } from '../../../misc/volume-context';\nimport sfx from '../../../../services/sounds';\nimport Reward from 'react-rewards';\nimport endslide from '../../../../assets/misc/so-end-slide.svg';\nimport endslide_cy from '../../../../assets/misc/so-end-slide-cy.svg';\nimport duck from '../../../../assets/misc/so-end-duck.svg';\nimport { t } from 'ttag';\n\nimport { motion } from 'framer-motion';\nimport Cookies from 'js-cookie';\n\nconst EndSlide: React.FC = ({ onComplete, defaultHeader }) => {\n const footer = ;\n const { volume } = useContext(VolumeContext);\n\n let moduleName = t`Sorting it out!`;\n\n if (volume) sfx.cheer.play();\n let lang = Cookies.get('bfg_lang');\n\n return (\n \n \n \n {/**/}\n\n \n (ref ? ref.rewardMe() : null)} type=\"confetti\" />\n
\n \n \n
\n\n
\n

{t`You have completed\n ${moduleName}`}

\n

{t`Congratulations!`}

\n
\n {t`Let your parent know what you’ve learnt about in ${moduleName} and if they know any family or friends who might also enjoy it they can share it via Facebook or Twitter`}

\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n );\n};\n\nexport default EndSlide;\n","import React from 'react';\nimport { Button, Col } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport home from '../../../../assets/misc/so-home-poster.svg';\nimport home_cy from '../../../../assets/misc/so-home-poster-cy.svg';\nimport windmill from '../../../../assets/misc/so-home__windmill.svg';\nimport Slide, { ISlide } from '../../../core/Slide';\nimport Cookies from 'js-cookie';\n\nconst StartSlide: React.FC = ({ nextSlide, defaultHeader }) => {\n const begin = (\n \n );\n let lang = Cookies.get('bfg_lang');\n\n return (\n \n
\n
\n \n {t`Windmill\n
\n
\n );\n};\n\nexport default StartSlide;\n","import React, { useContext, useEffect, useState } from 'react';\nimport { Helmet } from 'react-helmet';\nimport logo from '../../../assets/brand/logo-barefoot.svg';\nimport { filter } from '../../../helpers/filter';\nimport sfx from '../../../services/sounds';\nimport Module, { IModule } from '../../core/Module';\nimport MuteButton from '../../misc/MuteButton';\nimport { VolumeContext } from '../../misc/volume-context';\nimport intro from './units/1-intro';\nimport patterns from './units/2-patterns';\nimport algorithms from './units/3-algorithms';\nimport algorithms2 from './units/4-algorithms2';\nimport goodbye from './units/5-goodbye';\nimport EndSlide from './units/EndSlide';\nimport StartSlide from './units/StartSlide';\n\n\n\n\nexport type SortingData = {\n name: string;\n setName: (name: string) => void;\n};\n\nconst Sorting: React.FC = ({ onComplete }) => {\n const [name, setName] = useState(null);\n const { volume } = useContext(VolumeContext);\n\n const slides = [StartSlide, ...intro, ...patterns, ...algorithms, ...algorithms2, ...goodbye, EndSlide];\n\n const barefootLogo = (\n
\n \"BT-Barefoot\"\n \n
\n );\n\n useEffect(() => {\n setName(filter.clean(name ?? ''));\n }, [name, setName]);\n\n useEffect(() => {\n let theme = sfx.themeFarm.load().play();\n return () => {\n if (theme !== undefined) {\n sfx.themeFarm.stop(theme);\n }\n };\n }, []);\n\n return (\n \n \n Sorting it Out! | Barefoot Games\n \n \n \n );\n};\n\nexport default Sorting;\n","import { TCharacter } from '../../../general/Character';\nimport image from '../../../../assets/characters/thief_girl.svg';\nimport image_vault from '../../../../assets/characters/thief_girl-safe.svg';\nimport { t } from 'ttag';\n\nconst AgentTokyo: TCharacter = {\n characterName: t`Agent Anushka`,\n characterImage: image,\n characterWidth: 150,\n characterHeight: 180,\n};\n\nexport const AgentTokyoVault: TCharacter = {\n characterName: t`Agent Anushka`,\n characterImage: image_vault,\n characterWidth: 200,\n characterHeight: 180,\n};\n\nexport default AgentTokyo;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport AgentTokyo from '../../characters/AgentTokyo';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\n\nconst Intro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentTokyo,\n text: t`Hello Agent. We have just received news that the world’s biggest diamond has been stolen by a criminal known as Dr Mischief.`,\n buttonText: t`Next`,\n },\n {\n character: AgentTokyo,\n text: t`The Government has tasked us with sneaking into Dr Mischief’s lair, getting into the vault and grabbing the diamond. First, we need something to call you.`,\n buttonText: t`Sure`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport Character from '../../../../general/Character';\nimport AgentTokyo from '../../characters/AgentTokyo';\nimport { DiamondData } from '../../';\nimport { t } from 'ttag';\n\nconst NameInput: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const next = data.name ? (\n \n ) : null;\n\n return (\n \n \n \n \n

{t`What is your agent name?`}

\n data.setName(e.target.value)}\n />\n \n
\n
\n
\n );\n};\n\nexport default NameInput;\n","import { TCharacter } from '../../../general/Character';\nimport image from '../../../../assets/characters/thief_boy.svg';\nimport { t } from 'ttag';\n\nconst AgentRio: TCharacter = {\n characterName: t`Agent Harry`,\n characterImage: image,\n characterWidth: 150,\n characterHeight: 180,\n};\n\nexport default AgentRio;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentTokyo from '../../characters/AgentTokyo';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DiamondData } from '../..';\nimport { t } from 'ttag';\nimport AgentRio from '../../characters/AgentRio';\n\nconst TuringOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentTokyo,\n text: t`Nice to meet you, Agent ${data.name}. I am ${AgentTokyo.characterName} and will be helping you break into the vault that Dr Mischief has stored the diamond in.`,\n buttonText: t`Next`,\n },\n {\n character: AgentTokyo,\n text: t`Our teammate ${AgentRio.characterName} will also be helping you get through some of the challenges Dr Mischief has in store for us in his lair.`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default TuringOutro;\n","import Intro from './Intro';\nimport NameInput from './NameInput';\nimport Outro from './Outro';\n\nexport default [Intro, NameInput, Outro];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentRio from '../../characters/AgentRio';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DiamondData } from '../..';\nimport { t } from 'ttag';\n\nconst BlueprintIntro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentRio,\n text: t`Hey Agent ${data.name}. I have found these blueprints showing the layout of Dr Mischief’s lair. There will be three stages to this mission.`,\n buttonText: t`View Blueprint`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default BlueprintIntro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentRio from '../../characters/AgentRio';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst BlueprintOutro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentRio,\n text: t`We have no time to waste, if we want to catch Dr Mischief unaware! Here’s your parachute, we are flying in tonight!`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default BlueprintOutro;\n","import BlueprintIntro from './BlueprintIntro';\nimport Blueprint from './Blueprint';\nimport BlueprintOutro from './BlueprintOutro';\n\nexport default [BlueprintIntro, Blueprint, BlueprintOutro];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport blueprint from '../../../../../assets/misc/th-blueprint.svg';\nimport blueprint_cy from '../../../../../assets/misc/th-blueprint-cy.svg';\nimport { t } from 'ttag';\nimport Cookies from 'js-cookie';\n\nconst Blueprint: React.FC = ({ defaultHeader, nextSlide }) => {\n let next = ;\n let lang = Cookies.get('bfg_lang');\n\n return (\n \n \n \n

{t`DR MISCHIEF'S LAIR`}

\n \n \n
\n
\n );\n};\n\nexport default Blueprint;\n","import { motion } from 'framer-motion';\nimport React, { useEffect, useState } from 'react';\nimport { Button } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport keypad from '../../../../../assets/misc/th-keypad.svg';\nimport parachute_1 from '../../../../../assets/misc/th-parachute-1.svg';\nimport parachute_2 from '../../../../../assets/misc/th-parachute-2.svg';\nimport parachute_3 from '../../../../../assets/misc/th-parachute-3.svg';\nimport plane from '../../../../../assets/misc/th-plane.svg';\nimport Slide, { ISlide } from '../../../../core/Slide';\n\nlet animation = {\n y: [0, 0, 50, 110, 160, 210, 260, 310, 360, 400, 450],\n scale: [0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1],\n opacity: [1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 0],\n rotate: [0, 0, 20, -20, 20, -15, 15, -15, 10, -10, 5, 0],\n};\nlet times = [0, 0.05, 0.25, 0.35, 0.45, 0.55, 0.65, 0.75, 0.85, 0.95, 1];\n\nconst PartOne: React.FC = ({ defaultHeader, nextSlide }) => {\n const [showFooter, setShowFooter] = useState(false);\n const next = showFooter ? : null;\n\n useEffect(() => {\n setTimeout(() => setShowFooter(true), 5000);\n }, []);\n\n return (\n \n
\n \n \n \n \n \n
\n

{t`Part One`}

\n

{t`Entering the lair`}

\n
\n
\n
\n );\n};\n\nexport default PartOne;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentRio from '../../characters/AgentRio';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst LandedIntro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentRio,\n text: t`Nice work. We have landed outside. We need to be very quiet so Dr Mischief doesn’t know we’re here.`,\n buttonText: t`Next`,\n },\n {\n character: AgentRio,\n text: t`We’ve found the back entrance to the lair. The door is locked with a high-tech electronic system... Maybe we should look at the door’s keypad.`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default LandedIntro;\n","import PartOne from './PartOne';\nimport LandedIntro from './LandedIntro';\n\nexport default [PartOne, LandedIntro];\n","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Content from '../../../../general/Content';\nimport MultipleChoice, { TMultiChoiceQuestion } from '../../../../interactive/quiz/multi-choice/MultiChoice';\n\nconst SeqQuiz: React.FC = ({ defaultHeader, nextSlide, gotoSlide, currentIndex }) => {\n const gameData: TMultiChoiceQuestion[] = [\n {\n question: t`Which algorithm (rule) does this sequence use?`,\n questionContext: `19 ... 27 ... 35 ... 43 ...`,\n answers: [\n { text: t`Multiply the previous number by 2`, correct: false },\n { text: t`Add 8 to the previous number`, correct: true },\n { text: t`Subtract 6 from the previous number`, correct: false },\n ],\n },\n ];\n\n return (\n \n \n \n \n gotoSlide(currentIndex - 1)}\n />\n \n \n \n \n );\n};\n\nexport default SeqQuiz;\n","import React, { useContext, useState } from 'react';\nimport sfx from '../../../services/sounds';\nimport { VolumeContext } from '../../misc/volume-context';\n\ninterface KeypadProps {\n prefix: string;\n onSubmit: (input: string) => void;\n}\n\nconst Keypad: React.FC = ({ onSubmit, prefix }) => {\n const [input, setInput] = useState('');\n const { volume } = useContext(VolumeContext);\n\n const inputChar = (character: string) => {\n if (input.length < 4) {\n if (volume) sfx.beep.play();\n setInput(input + character);\n }\n };\n\n const clearInput = () => {\n setInput('');\n };\n\n return (\n \n
\n
\n

\n {prefix} {input}\n

\n
\n \n \n \n \n \n \n \n \n \n \n \n {\n onSubmit(input);\n clearInput();\n }}\n >\n \n \n
\n
\n );\n};\n\nexport default Keypad;\n","import React, { useContext } from 'react';\nimport { c, t } from 'ttag';\nimport sfx from '../../../services/sounds';\nimport { GameProps, GameQuestion, useGameLogic } from '../../core/Game';\nimport { VolumeContext } from '../../misc/volume-context';\nimport Keypad from './Keypad';\n\nexport type TKeypadGameQuestion = GameQuestion & {\n question: string;\n answer: string;\n};\n\nconst KeypadGame: React.FC> = ({ gameData, index = 0, onGameComplete }) => {\n // const [show, setShow] = useState(false);\n const { volume } = useContext(VolumeContext);\n\n const handleGameComplete = () => {\n // setShow(true);\n onGameComplete();\n };\n\n const handleNextQuestion = () => {\n // setShow(false);\n };\n\n const [question, nextQuestion] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextQuestion,\n index,\n );\n\n const handleAnswerSubmit = (answer: string) => {\n if (answer === question.answer) {\n // correct answer\n nextQuestion();\n if (volume) sfx.beepbop.play();\n } else {\n console.log('fail');\n if (volume) sfx.failure.play();\n }\n };\n\n if (!question) {\n return

Question not found

;\n }\n\n return (\n \n {/* */}\n

\n {t`Finish the sequence,`}\n
\n {c('Finish the sequence...').t`then press `}\n \n \n \n

\n\n
\n \n\n {/* */}\n
\n
\n );\n};\n\nexport default KeypadGame;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentRio from '../../characters/AgentRio';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\nimport { DiamondData } from '../..';\n\nconst SeqQuizOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentRio,\n text: t`Nice work ${data.name}. Dr Mischief has been using algorithms to generate these sequences. This algorithm was to add 8 to the previous number.`,\n buttonText: t`Next`,\n },\n {\n character: AgentRio,\n text: t`Now let’s complete the number sequence to open this door. We need to use the correct algorithm to complete the sequence.`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default SeqQuizOutro;\n","import IntroKeypad from './IntroKeypad';\nimport SeqQuizIntro from './SeqQuizIntro';\nimport SeqQuizIntro2 from './SeqQuizIntro2';\nimport SeqQuiz from './SeqQuiz';\nimport KeypadGame from './KeypadGameSlide';\nimport SeqQuizOutro from './SeqQuizOutro';\n\nexport default [IntroKeypad, SeqQuizIntro, SeqQuizIntro2, SeqQuiz, SeqQuizOutro, KeypadGame];\n","import React, { useState, useEffect } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport keypad from '../../../../../assets/misc/th-keypad-fake.svg';\nimport { t } from 'ttag';\n\nconst IntroKeypad: React.FC = ({ defaultHeader, nextSlide }) => {\n const [showFooter, setShowFooter] = useState(false);\n const next = showFooter ? : null;\n\n useEffect(() => {\n setTimeout(() => setShowFooter(true), 2000);\n }, []);\n\n return (\n \n \n \n

{t`Keypad Found`}

\n nextSlide()}\n alt={`Keypad`}\n />\n \n
\n
\n );\n};\n\nexport default IntroKeypad;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentRio from '../../characters/AgentRio';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\nimport WordDiscovery from '../../../../general/WordDiscovery';\n\nconst SeqQuizIntro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: AgentRio,\n text: t`Looks like this is some sort of number sequence following a rule. The rule is an algorithm – I’ve learnt about these in agent training.`,\n buttonText: t`Next`,\n buttonAction: () => setShow(true),\n },\n ];\n\n return (\n \n \n \n \n );\n};\n\nexport default SeqQuizIntro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentRio from '../../characters/AgentRio';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst SeqQuizIntro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentRio,\n text: t`Can you work out which algorithm has been used in the following number sequence? I’ll help you by giving you 3 options.`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default SeqQuizIntro;\n","import { motion } from 'framer-motion';\nimport React, { useContext, useState } from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport sfx from '../../../../../services/sounds';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport ModalOverlay from '../../../../general/ModalOverlay';\nimport KeypadGame, { TKeypadGameQuestion } from '../../../../interactive/keypad/KeypadGame';\nimport { VolumeContext } from '../../../../misc/volume-context';\n\nconst KeypadGameSlide: React.FC = ({ defaultHeader, nextSlide }) => {\n const { volume } = useContext(VolumeContext);\n\n const gameData: TKeypadGameQuestion[] = [{ question: '19 ... 27 ... 35 ... 43 ...', answer: '51' }];\n\n const [show, setShow] = useState(false);\n\n return (\n \n

}\n footer={}\n show={show}\n backgroundColor=\"#00C3A5\"\n >\n \n \n \n \n

\n {t`DOOR UNLOCKED`}\n

\n
\n \n
\n \n {\n if (volume) sfx.success.play();\n setShow(true);\n }}\n />\n
\n );\n};\n\nexport default KeypadGameSlide;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport { t } from 'ttag';\n\nimport room from '../../../../../assets/misc/th-room.svg';\nimport room2 from '../../../../../assets/misc/th-room--back.svg';\nimport girl_hiding from '../../../../../assets/misc/thief_girl-hiding.svg';\nimport boy_hiding from '../../../../../assets/misc/thief_boy-hiding.svg';\nimport box from '../../../../../assets/misc/th-box.svg';\nimport laser from '../../../../../assets/misc/th-laser.svg';\n\nconst PartTwo: React.FC = ({ defaultHeader, nextSlide }) => {\n let next = ;\n\n return (\n \n
\n \"\"\n \"\"\n \n \n \"\"\n \"\"\n \n \n
\n

{t`Part Two`}

\n

{t`Switching off the lasers`}

\n
\n
\n
\n );\n};\n\nexport default PartTwo;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentRio from '../../characters/AgentRio';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst FindKeypadIntro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentRio,\n text: t`We’re in. We’ve got to be very careful, if we touch any of the lasers the alarm will go off. There must be a keypad somewhere...`,\n buttonText: t`Continue`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default FindKeypadIntro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\nimport SkillModal from '../../../../general/SkillModal';\nimport logic_icon from '../../../../../assets/icons/icon_logic.svg';\n\nconst SeqQuizOutro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer] = useFooterButtonRenderer();\n\n return (\n \n \n \n );\n};\n\nexport default SeqQuizOutro;\n","import PartTwo from './PartTwo';\nimport FindKeypadIntro from './FindKeypadIntro';\nimport FindKeypad from './FindKeypad';\nimport KeypadGameSlide2 from './KeypadGameSlide2';\nimport KeypadGameIntro from './KeypadGameIntro';\nimport KeypadGameOutro from './KeypadGameOutro';\n\nexport default [PartTwo, FindKeypadIntro, FindKeypad, KeypadGameIntro, KeypadGameSlide2, KeypadGameOutro];\n","import React from 'react';\nimport { t } from 'ttag';\nimport room from '../../../../../assets/misc/th-room--keypad.svg';\nimport Slide, { ISlide } from '../../../../core/Slide';\n\nconst FindKeypad: React.FC = ({ defaultHeader, nextSlide }) => {\n return (\n \n

{t`FIND THE KEYPAD`}

\n
\n \n
nextSlide()}>
\n
\n
\n );\n};\n\nexport default FindKeypad;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentRio from '../../characters/AgentRio';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst KeypadGameIntro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentRio,\n text: t`Brilliant. Looks like it’s another of Dr Mischief’s mischievous sequences. Let’s see if you can complete it yourself using your logical reasoning skills. This one seems trickier...`,\n buttonText: t`Continue`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default KeypadGameIntro;\n","import { motion } from 'framer-motion';\nimport React, { useContext, useState } from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport sfx from '../../../../../services/sounds';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport ModalOverlay from '../../../../general/ModalOverlay';\nimport KeypadGame, { TKeypadGameQuestion } from '../../../../interactive/keypad/KeypadGame';\nimport { VolumeContext } from '../../../../misc/volume-context';\n\nconst KeypadGameSlide2: React.FC = ({ defaultHeader, nextSlide }) => {\n const { volume } = useContext(VolumeContext);\n\n const gameData: TKeypadGameQuestion[] = [\n { question: '51 ... 62 ... 73 ...', answer: '84' },\n { question: '120 ... 95 ... 70 ... 45 ...', answer: '20' },\n ];\n\n const [show, setShow] = useState(false);\n\n return (\n \n

}\n footer={}\n show={show}\n backgroundColor=\"#00C3A5\"\n >\n \n \n \n \n

\n {t`DOOR UNLOCKED`}\n

\n
\n \n
\n \n {\n sfx.success.play();\n setShow(true);\n }}\n />\n
\n );\n};\n\nexport default KeypadGameSlide2;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport room from '../../../../../assets/misc/th-room.svg';\nimport room2 from '../../../../../assets/misc/th-room--back.svg';\nimport vault from '../../../../../assets/misc/th-vault.svg';\n\nconst PartThree: React.FC = ({ defaultHeader, nextSlide }) => {\n let next = ;\n\n return (\n \n
\n \"\"\n \"\"\n \"\"\n
\n
\n

{t`Part Three`}

\n

{t`Opening the Vault`}

\n
\n
\n );\n};\n\nexport default PartThree;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { AgentTokyoVault } from '../../characters/AgentTokyo';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\n\nconst VaultIntro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentTokyoVault,\n text: t`Right, we’re finally here. The vault seems to have some sequences etched into it by Dr Mischief.`,\n buttonText: t`Show sequences`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default VaultIntro;\n","import React from 'react';\nimport { Button } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\n\nconst Vault: React.FC = ({ defaultHeader, nextSlide }) => {\n let next = ;\n\n return (\n \n
\n

\n {t`THIS VAULT IS SEQUENCE SECURED`}\n

\n

{t`Find the correct rules for the following sequences.`}

\n

\n 111...126...141...156...171...\n
\n 1255...1265...1275...1285...\n
\n 14.5...11.5...8.5...5.5...\n

\n
\n
\n );\n};\n\nexport default Vault;\n","import React, { useState, useEffect } from 'react';\nimport { Form, FormControl } from 'react-bootstrap';\nimport { TAlgorithmQuestion } from './AlgorithmGame';\nimport { t } from 'ttag';\n\ntype TOperators = 'Add' | 'Subtract' | 'Multiply' | 'Divide';\n\nconst AlgorithmSelector: React.FC<{\n onSelectionChange: (sid: string, selection: string) => void;\n sid: string;\n question: TAlgorithmQuestion;\n}> = ({ onSelectionChange, sid, question }) => {\n const [valOne, setValOne] = useState('Add');\n const [valTwo, setValTwo] = useState(1);\n\n useEffect(() => {\n // send to parent\n onSelectionChange(sid, valOne + valTwo);\n }, [valOne, valTwo]);\n\n useEffect(() => {\n setValOne('Add');\n setValTwo(1);\n }, [question]);\n\n return (\n
\n \n ) => setValOne(e.currentTarget.value)}\n >\n \n \n \n \n \n\n {/* by */}\n ) =>\n setValTwo(parseInt(e.currentTarget.value))\n }\n >\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n );\n};\n\nexport default AlgorithmSelector;\n","import React, { useContext, useEffect, useState } from 'react';\nimport { Button } from 'react-bootstrap';\nimport toaster from 'toasted-notes';\nimport { t } from 'ttag';\nimport sfx from '../../../services/sounds';\nimport { GameProps, GameQuestion, useGameLogic } from '../../core/Game';\nimport { VolumeContext } from '../../misc/volume-context';\nimport AlgorithmSelector from './AlgorithmSelector';\n\nexport type TAlgorithmQuestion = GameQuestion & {\n question: string;\n answers: string[];\n};\n\nconst AlgorithmGame: React.FC> = ({ gameData, index = 0, onGameComplete }) => {\n // const [disabled, setDisabled] = useState(false);\n const [answer, setAnswer] = useState<{ [key: string]: string }>({});\n const { volume } = useContext(VolumeContext);\n\n const handleGameComplete = () => {\n onGameComplete();\n };\n\n const handleNextQuestion = () => {};\n\n const [question, nextQuestion] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextQuestion,\n index,\n );\n\n const handleAnswerSubmit = () => {\n let correctAnswers = 0;\n // setDisabled(true);\n\n question.answers.forEach((ans, index) => {\n console.log('checking', ans, answer, index, answer[index]);\n if (ans === answer[index]) {\n correctAnswers++;\n }\n });\n\n if (correctAnswers === question.answers.length) {\n // correct answer\n console.log('correct');\n if (volume) sfx.correct.play();\n nextQuestion();\n // setDisabled(false);\n } else {\n toaster.notify(t`That was incorrect. Try and make the algorithm fit the number sequence.`, {\n duration: 2000,\n position: 'bottom',\n });\n console.log('wrong, not enough correct', correctAnswers, question.answers.length);\n if (volume) sfx.incorrect.play();\n\n // setDisabled(false);\n // incorrect\n }\n };\n useEffect(() => {\n console.log(answer);\n }, [answer]);\n\n const handleAnswerChange = (sid: string, selection: string) => {\n console.log('total selection', sid, selection);\n setAnswer({\n ...answer,\n [sid]: selection,\n });\n };\n\n if (!question) {\n return

{t`Question not found`}

;\n }\n\n return (\n \n {/* */}\n

\n {t`Complete the algorithm,`}\n
\n {t`then press `}\n {t`Submit`}\n

\n\n
\n
\n {question.question}\n
\n\n

{t`Take the first number and...`}

\n {question.answers.map((q, index) => (\n \n ))}\n \n
\n
\n );\n};\n\nexport default AlgorithmGame;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AlgorithmGame, { TAlgorithmQuestion } from '../../../../interactive/algorithm/AlgorithmGame';\n\nconst VaultGame: React.FC = ({ defaultHeader, nextSlide }) => {\n const gameData: TAlgorithmQuestion[] = [\n {\n question: '111... 126... 141... 156... 171...',\n answers: ['Add15'],\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default VaultGame;\n","import React, { useState, useEffect } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport vault_f from '../../../../../assets/misc/th-vault--front.svg';\nimport vault_b from '../../../../../assets/misc/th-vault--back.svg';\nimport { motion } from 'framer-motion';\n\nconst VaultAnim: React.FC = ({ defaultHeader, nextSlide }) => {\n const [showFooter, setShowFooter] = useState(false);\n const next = showFooter ? : null;\n\n useEffect(() => {\n setTimeout(() => setShowFooter(true), 2000);\n }, []);\n\n return (\n \n \n \n
\n \n \"Back\n
\n \n
\n
\n );\n};\n\nexport default VaultAnim;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\nimport { AgentTokyoVault } from '../../characters/AgentTokyo';\n\nconst VaultIntro2: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentTokyoVault,\n text: t`Nice work. These next sequences look a little trickier as they include decimals and numbers in thousands… Good luck.`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default VaultIntro2;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AlgorithmGame, { TAlgorithmQuestion } from '../../../../interactive/algorithm/AlgorithmGame';\n\nconst VaultGame2: React.FC = ({ defaultHeader, nextSlide }) => {\n const gameData: TAlgorithmQuestion[] = [\n {\n question: '1255... 1265... 1275... 1285...',\n answers: ['Add10'],\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default VaultGame2;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\nimport { AgentTokyoVault } from '../../characters/AgentTokyo';\n\nconst VaultIntro3: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentTokyoVault,\n text: t`We’re nearly there! The final sequence should open the vault!`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default VaultIntro3;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AlgorithmGame, { TAlgorithmQuestion } from '../../../../interactive/algorithm/AlgorithmGame';\n\nconst VaultGame3: React.FC = ({ defaultHeader, nextSlide }) => {\n const gameData: TAlgorithmQuestion[] = [\n {\n question: '14.5 ... 11.5 ... 8.5... 5.5...',\n answers: ['Subtract3'],\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default VaultGame3;\n","import React, { useState, useEffect } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport vault_f from '../../../../../assets/misc/th-vault--front.svg';\nimport vault_b from '../../../../../assets/misc/th-vault--back.svg';\nimport vault_room from '../../../../../assets/misc/th-room--vault2.svg';\nimport { motion } from 'framer-motion';\n\nconst VaultAnimOpen: React.FC = ({ defaultHeader, nextSlide }) => {\n const [showFooter, setShowFooter] = useState(false);\n const next = showFooter ? : null;\n\n useEffect(() => {\n setTimeout(() => setShowFooter(true), 4000);\n }, []);\n\n return (\n \n \n \n

{t`VAULT UNLOCKED`}

\n
\n \n \n \n
\n \n
\n
\n );\n};\n\nexport default VaultAnimOpen;\n","import PartThree from './PartThree';\nimport VaultIntro from './VaultIntro';\nimport Vault from './Vault';\nimport VaultGame from './VaultGame';\nimport VaultAnim from './VaultAnim';\nimport VaultIntro2 from './VaultIntro2';\nimport VaultGame2 from './VaultGame2';\nimport VaultIntro3 from './VaultIntro3';\nimport VaultGame3 from './VaultGame3';\nimport VaultAnimOpen from './VaultAnimOpen';\n\nexport default [\n PartThree,\n VaultIntro,\n Vault,\n VaultGame,\n VaultAnim,\n VaultIntro2,\n VaultGame2,\n VaultAnim,\n VaultIntro3,\n VaultGame3,\n VaultAnimOpen,\n];\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { AgentTokyoVault } from '../../characters/AgentTokyo';\n\nconst DiamondIntro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AgentTokyoVault,\n text: t`Wow... I think we’ve done it. Let’s hop inside and get that diamond back!`,\n buttonText: t`Enter vault`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default DiamondIntro;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AgentTokyo from '../../characters/AgentTokyo';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { t } from 'ttag';\nimport SkillModal from '../../../../general/SkillModal';\nimport algo_image from '../../../../../assets/icons/icon_algorithms.svg';\n\nconst DiamondOutro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: AgentTokyo,\n text: t`Your algorithm skills successfully helped us open the vault! You defined the rules for the algorithms in the correct order and solved the sequences. You rock!`,\n buttonText: t`Thanks`,\n buttonAction: () => setShow(true),\n },\n ];\n\n return (\n \n \n \n \n );\n};\n\nexport default DiamondOutro;\n","import DiamondIntro from './DiamondIntro';\nimport DiamondGrab from './DiamondGrab';\nimport Diamond from './Diamond';\nimport DiamondOutro from './DiamondOutro';\n\nexport default [DiamondIntro, DiamondGrab, Diamond, DiamondOutro];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport room from '../../../../../assets/misc/th-room--vault.svg';\nimport diamond from '../../../../../assets/misc/th-diamond.svg';\nimport arm from '../../../../../assets/misc/th-diamond__arm.svg';\nimport { motion, useAnimation } from 'framer-motion';\nimport { t } from 'ttag';\n\nconst DiamondGrab: React.FC = ({ defaultHeader, nextSlide }) => {\n const controls_diamond = useAnimation();\n const controls_arm = useAnimation();\n\n const triggerGrab = () => {\n controls_diamond.start({\n x: -250,\n y: 0,\n transition: { duration: 0.7, delay: 0.7, ease: 'linear' },\n });\n controls_arm.start({\n x: [-10, 220, -30],\n y: [10, 0, 20],\n rotate: [-20, 0, -20],\n transition: { duration: 1.5 },\n });\n setTimeout(() => nextSlide(), 2000);\n };\n\n return (\n \n

{t`GRAB DIAMOND`}

\n
\n \"\"\n triggerGrab()}\n alt={t`The Diamond in the open vault`}\n />\n \n
\n
\n );\n};\n\nexport default DiamondGrab;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport { motion } from 'framer-motion';\nimport diamond from '../../../../../assets/misc/th-diamond.svg';\nimport { t } from 'ttag';\n\nconst Diamond: React.FC = ({ defaultHeader, nextSlide }) => {\n let next = ;\n\n return (\n \n \n \n
\n

{t`DIAMOND RETRIEVED`}

\n \n
\n \n
\n
\n );\n};\n\nexport default Diamond;\n","import React, { useContext } from 'react';\nimport Slide, { ISlide } from '../../../core/Slide';\nimport Content from '../../../general/Content';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport { VolumeContext } from '../../../misc/volume-context';\nimport sfx from '../../../../services/sounds';\nimport Reward from 'react-rewards';\nimport { t } from 'ttag';\nimport image_vault from '../../../../assets/characters/thief_girl-safe.svg';\n\nconst EndSlide: React.FC = ({ onComplete, defaultHeader }) => {\n const footer = ;\n const { volume } = useContext(VolumeContext);\n\n let moduleName = t`The Diamond`;\n\n if (volume) sfx.cheer.play();\n\n return (\n \n \n \n {/**/}\n\n \n (ref ? ref.rewardMe() : null)} type=\"confetti\" />\n {\n return ref ? setInterval(() => ref.rewardMe(), 5000) : null;\n }}\n type=\"confetti\"\n >\n \n
\n
\n\n

{t`You have completed\n ${moduleName}!`}

\n

{t`Congratulations!`}

\n
\n {t`Let your parent know what you’ve learnt about in ${moduleName} and if they know any family or friends who might also enjoy it they can share it via Facebook or Twitter`}

\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n );\n};\n\nexport default EndSlide;\n","import React from 'react';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport Slide, { ISlide } from '../../../core/Slide';\nimport { t } from 'ttag';\nimport diamond from '../../../../assets/misc/th-start__diamond.svg';\nimport diamond_cy from '../../../../assets/misc/th-start__diamond-cy.svg';\nimport rio from '../../../../assets/misc/th-start__thief.svg';\nimport { motion } from 'framer-motion';\nimport Cookies from 'js-cookie';\n\nconst StartSlide: React.FC = ({ nextSlide, defaultHeader }) => {\n const begin = (\n \n );\n let lang = Cookies.get('bfg_lang');\n\n return (\n \n \n \n
\n \n \n
\n \n
\n
\n );\n};\n\nexport default StartSlide;\n","import React, { useContext, useEffect, useState } from 'react';\nimport { Helmet } from 'react-helmet';\nimport logo from '../../../assets/brand/logo-barefoot.svg';\nimport { filter } from '../../../helpers/filter';\nimport sfx from '../../../services/sounds';\nimport Module, { IModule } from '../../core/Module';\nimport MuteButton from '../../misc/MuteButton';\nimport { VolumeContext } from '../../misc/volume-context';\nimport intro from './units/1-intro';\nimport blueprint from './units/2-blueprint';\nimport parachute from './units/3-parachute';\nimport keypad from './units/4-keypad';\nimport keypad2 from './units/5-keypad2';\nimport vault from './units/6-vault';\nimport end from './units/7-end';\nimport EndSlide from './units/EndSlide';\nimport StartSlide from './units/StartSlide';\n\n\n\n\nexport type DiamondData = {\n name: string;\n setName: (name: string) => void;\n};\n\nconst Diamond: React.FC = ({ onComplete }) => {\n const [name, setName] = useState(null);\n const { volume } = useContext(VolumeContext);\n\n const slides = [\n StartSlide,\n ...intro,\n ...blueprint,\n ...parachute,\n ...keypad,\n ...keypad2,\n ...vault,\n ...end,\n EndSlide,\n ];\n\n const barefootLogo = (\n
\n \"BT-Barefoot\"\n \n
\n );\n\n useEffect(() => {\n setName(filter.clean(name ?? ''));\n }, [name, setName]);\n\n useEffect(() => {\n let theme = sfx.themeHeist.load().play();\n return () => {\n if (theme !== undefined) {\n sfx.themeHeist.stop(theme);\n }\n };\n }, []);\n\n return (\n \n \n The Diamond | Barefoot Games\n \n \n \n );\n};\n\nexport default Diamond;\n","const spritesheetChrome: IHowlSoundSpriteDefinition = {\n \"1\": [150, 5010],\n \"2\": [7900, 4460],\n \"3\": [14800, 3500],\n \"4\": [20949, 1340],\n \"5\": [25319, 6891],\n \"6\": [35900, 4240],\n \"7\": [43660, 4630],\n \"8\": [51990, 8840],\n \"9\": [63870, 3389],\n \"10\": [70879, 4320],\n \"11\": [78430, 5610],\n \"12\": [86840, 5810],\n \"13\": [94980, 8030],\n \"14\": [107359, 3861],\n \"15\": [114980, 3830],\n \"16\": [123259, 4681],\n \"17\": [131820, 3130],\n \"18\": [139230, 2960],\n \"19\": [146250, 4230],\n \"20\": [155190, 3999],\n \"21\": [163060, 1200],\n \"22\": [167760, 2190],\n \"23\": [0, 0], // Unrecorded\n \"24\": [172980, 3046],\n \"25\": [178920, 8190],\n \"26\": [191240, 1500],\n \"27\": [196889, 950],\n \"28\": [201860, 1190],\n \"29\": [206860, 620],\n \"30\": [211460, 1080],\n \"31\": [216000, 9490],\n \"32\": [229139, 9680],\n \"33\": [242779, 2490],\n \"34\": [248829, 2870],\n \"35\": [255339, 4971],\n \"36\": [263960, 5546],\n \"37\": [272506, 4999],\n \"38\": [280505, 5908],\n \"39\": [289413, 6817],\n \"40\": [298230, 6817],\n \"41\": [307047, 5663],\n \"42\": [317010, 10970],\n \"43\": [331650, 6559],\n \"44\": [341959, 4251],\n \"45\": [350670, 1030],\n \"46\": [355639, 9670],\n \"47\": [365509, 14191],\n \"48\": [384030, 2069], // 1/2 Let's check if...\n \"49\": [395629, 1471],\n \"50\": [400690, 3600],\n \"51\": [408120, 1689],\n \"52\": [412439, 2040],\n \"53\": [417819, 7265],\n \"54\": [427084, 5286],\n \"55\": [435730, 6680],\n \"56\": [446120, 6180],\n \"57\": [455880, 7110],\n \"58\": [465786, 7110],\n \"59\": [474559, 3022],\n \"60\": [480000, 7000],\n \"61\": [490360, 4530],\n \"62\": [499860, 3169],\n \"63\": [507580, 3800],\n \"64\": [515599, 4310],\n \"65\": [523500, 3310],\n \"66\": [531349, 4560],\n \"67\": [540039, 1061],\n \"68\": [544720, 4560],\n \"69\": [552850, 580],\n \"70\": [556909, 420],\n \"71\": [560490, 1210],\n \"72\": [564510, 4400],\n \"73\": [572870, 2520],\n \"74\": [578990, 8579],\n \"75\": [590349, 5901],\n \"76\": [599170, 3360],\n \"77\": [605190, 3869],\n \"78\": [612459, 4161],\n \"79\": [619899, 1251],\n \"80\": [624650, 4169],\n \"81\": [632250, 1830],\n \"82\": [637330, 710],\n \"83\": [641530, 4220],\n \"84\": [649280, 800],\n \"85\": [653030, 840],\n \"86\": [656599, 630],\n \"87\": [659759, 680],\n \"88\": [662529, 790],\n \"89\": [666200, 1539],\n \"90\": [671150, 5870],\n \"91\": [680610, 4160],\n \"92\": [687439, 6500],\n \"93\": [697280, 6030],\n \"94\": [706810, 4010],\n \"95\": [714690, 6070],\n \"96\": [724750, 4070],\n \"97\": [733080, 12820],\n \"98\": [750000, 3560],\n \"99\": [756000, 2000],\n \"100\": [761770, 1720],\n \"101\": [767360, 1760],\n \"102\": [779830, 7040],\n \"103\": [790619, 1210],\n \"104\": [795129, 1680],\n \"105\": [800189, 12341],\n \"106\": [815980, 5130],\n \"107\": [825170, 6620],\n \"108\": [836380, 1400],\n \"109\": [842490, 1220],\n \"110\": [848230, 8369],\n \"111\": [861330, 5739],\n \"112\": [871479, 870],\n \"113\": [876079, 2000],\n \"114\": [881079, 5500],\n \"115\": [389030, 3069], // 2/2 What is Decomp...\n \"116\": [887000, 4500],\n \"117\": [896000, 14500],\n \"118\": [929500, 3500],\n};\n\nexport default spritesheetChrome;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { motion } from 'framer-motion';\n\nexport const Grass: React.FC = ({ children }) => {\n return (\n
\n
\n \n\n
\n {children}\n
\n );\n};\n\n\nconst Green = styled.div`\n position: absolute;\n top: 0;\n bottom: 0;\n right: 0;\n left: 0;\n background: rgb(0, 195, 165);\n\n`;\n\nexport default Grass;\n","import { TCharacter } from '../../../general/Character';\nimport image from '../assets/characters/engineer.png';\nimport { t } from 'ttag';\n\nconst EngineerShahid: TCharacter = {\n characterName: t`Engineer Shahid`,\n characterImage: image,\n characterWidth: 75,\n characterHeight: 180,\n};\n\nexport default EngineerShahid;\n","import React from 'react';\nimport styled from 'styled-components';\n\nexport type TCharacter = {\n characterName: string;\n characterImage: string;\n characterWidth?: number;\n characterHeight?: number;\n};\n\ninterface ICharacter {\n character: TCharacter;\n}\n\ninterface CharacterProps {\n characterWidth?: number;\n characterHeight?: number;\n}\n\nconst Character2: React.FC = ({ children, character }) => {\n return (\n <>\n \n {children}\n \n\n\n );\n};\n\n\n\nconst Character = styled.img`\n position: absolute;\n z-index: -1;\n top: -70px;\n left: 15px;\n width: 50px;\n`;\n\n\nexport default Character2;\n","import React from 'react';\nimport styled from 'styled-components';\nimport DialogueGroup, { DialogGroupProps } from '../../../general/DialogueGroup';\nimport useFooterButtonRenderer from '../../../misc/FooterButtonRenderer';\nimport image from '../assets/characters/engineer-2.png';\nimport Character2 from '../components/Character2';\nimport { ICharacter } from '../../../../components/general/Character';\n\nexport const DialogueOverlay: React.FC & React.FC = (props: any) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n return (\n \n \n \n\n {footer}\n \n \n );\n}\n\n\n\nconst ButtonWrapper = styled.div`\n min-height: 60px;\n .btn-3d {\n background-color: #6400aa;\n color: #ffffff !important;\n &:hover, &:active, &:focus {\n background-color: #540e85 !important;\n color: #DDDDDD !important;\n }\n }\n`;\n\nconst Content = styled.div`\n position:relative;\n width: 100%;\n display: block;\n margin: 0 auto;\n padding: 1rem;\n background-color: #ffffff;\n @media (min-width: 576px){\n border-radius: 5px;\n }\n min-height: 136px;\n`;\n\n\nconst Layout = styled.div`\n width: 100%;\n position: fixed;\n bottom: 0;\n left: 0;\n z-index: 999;\n .island {\n background-color: #EAF4F7;\n padding: 6px 12px !important;\n width: 100%;\n margin: 0 0 10px !important;\n font-size: 18px;\n line-height: 24px;\n min-height: auto;\n box-shadow: none;\n &::after{\n content: '';\n position: absolute;\n left: 8px;\n top: -12px;\n width: 0;\n height: 0;\n border-left: 10px solid transparent;\n border-right: 10px solid transparent;\n border-bottom: 15px solid #EAF4F7;\n clear: both;\n }\n }\n .island__author--dialogue {\n font-size: 12px;\n top: -55px;\n left: 50px;\n padding: 2px 8px;\n letter-spacing: 0.05em;\n border-radius: 5px;\n }\n @media (min-width: 576px){\n bottom: 10px;\n .island {\n border-radius: 5px !important;\n margin-bottom: 10px !important;\n }\n ${Content} {\n max-width: 400px;\n }\n }\n @media (min-width: 1200px){\n .island {\n font-size: 20px;\n }\n ${Content} {\n max-width: 500px;\n }\n }\n`;\n\n\nexport default DialogueOverlay;\n","import React, {useState, useEffect, useRef} from 'react';\nimport styled from 'styled-components';\nimport { Button, Row, Container, Col } from 'react-bootstrap';\nimport {motion} from 'framer-motion';\n\nconst Smoke: React.FC = () => {\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n );\n};\n\nconst StyledSVG = styled.svg`\n bottom: 50%;\n left: 45%;\n width: 10%;\n position: absolute;\n`;\n\nexport default Smoke;\n","export const theme = {\n bt_purple: \"#6400aa\",\n bt_purple_700: \"#540E85\",\n bt_purple_900: \"#361559\",\n bare_pink: \"#E5007D\",\n bare_green: \"#00C3A5\",\n bare_yellow: \"#FFE202\",\n bare_blue: \"#0AB9F0\",\n bare_blue_700: \"#1782A4\",\n font_bt_light: \"'BT Font Light'\",\n font_bt: \"'BT Font Regular'\",\n font_bt_bold: \"'BT Font Bold'\",\n font_bt_extra: \"'BT Font Extra Bold'\",\n gray_900: \"#333333\",\n white: \"#FFFFFF\",\n};\n","import { motion } from 'framer-motion';\nimport React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport alert_program from '../../assets/lights/alert-programming.svg';\nimport alert_timing from '../../assets/lights/alert-timing.svg';\nimport alert_warning from '../../assets/lights/alert-warning.svg';\nimport highlight_circle from '../../assets/lights/traffic-highlight.png';\nimport { theme } from '../../styles/theme';\nimport { isChrome } from 'react-device-detect';\n\n\n\ntype TrafficLightProps = TTrafficLight & {\n showEditor?: boolean;\n showPole?: boolean;\n reportDataChange?: (status: TTrafficLight) => void\n alert?: TAlert;\n highlight?: boolean\n}\n\nexport type TTrafficLight = {\n red?: TLight;\n amber?: TLight;\n green?: TLight;\n}\n\nexport type TLight = {\n enabled: boolean;\n onClick?: () => void\n}\n\nexport type TAlert = 'timing' | 'program' | 'warning' | null;\n\nconst getAlert = (alert: TAlert) => {\n switch (alert) {\n case 'timing': {\n return alert_timing;\n }\n case 'program': {\n return alert_program;\n }\n case 'warning': {\n return alert_warning;\n }\n default: {\n return alert_warning;\n }\n }\n};\n\nconst COLOUR_EMPTY = '#575757';\n\nconst TrafficLight: React.FC = ({\n red = { enabled: false },\n amber = { enabled: false },\n green = { enabled: false },\n showEditor = false,\n showPole = true,\n alert = null,\n reportDataChange,\n highlight = false,\n}) => {\n const [light, setLight] = useState({ red, amber, green });\n\n useEffect(() => {\n // setLight({ red, amber, green });\n\n if (showEditor) {\n // console.log(red, amber, green);\n\n }\n }, [red, amber, green, setLight]);\n\n useEffect(() => {\n if (reportDataChange) {\n reportDataChange(light);\n }\n }, [light]);\n\n return (\n \n {highlight ? : null}\n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n {showPole ? (<>\n \n \n\n ) : null}\n \n \n\n setLight({ ...light, red: { enabled: !light.red.enabled } }) : light.red.onClick} stroke=\"black\" />\n setLight({ ...light, amber: { enabled: !light.amber.enabled } }) : light.amber.onClick} stroke=\"black\" />\n setLight({ ...light, green: { enabled: !light.green.enabled } }) : light.green.onClick} stroke=\"black\" />\n \n
\n
\n {alert ? : ''}\n\n
\n );\n};\n\n\n\nconst SVGWrapper = styled.div<{ showPole: boolean }>`\n width: 100%;\n padding-top: ${(props) => props.showPole ? '333.33%' : '212.12%'};\n div {\n position: absolute;\n top: 0;\n width: 100%;\n left: 0;\n bottom: 0;\n }\n svg {width: 100%;}\n\n`;\n\ninterface CircleProps {\n enabled: boolean;\n}\nconst StyledCircle = styled.circle`\n box-shadow: 0 0 15px #ffffff;\n @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\n filter: none !important;\n }\n`;\n\nconst Wrapper = styled.div<{ showEditor: boolean }>`\n position: relative;\n height: 100%;\n width: 100%;\n svg {width: 100%;}\n circle {stroke-width: 0.5px; stroke: #222222}\n ${props => props.showEditor ? 'circle { cursor: pointer; stroke: ' + theme.bare_blue + '; &:hover {stroke: ' + theme.bare_blue_700 + ';}}' : ''}\n`;\n\nconst AlertWrapper = styled.div`\n position:absolute;\n left: -50%;\n bottom: 0%;\n width: 150%;\n padding-top: 150%;\n font-size: 16px;\n img { width: 100%; position: absolute; top: 0; right: 0; left: 0; bottom: 0;}\n`;\n\nconst Highlight = styled(motion.img)`\n position: absolute;\n width: 260%;\n left: -80%;\n bottom: 0;\n`;\n\nexport default TrafficLight;\n","\nexport const game = {\n footerHeight: 80,\n headerHeight: 80,\n paddingDefault: 15,\n roadWidth: 80,\n c_road: \"#586984\",\n c_road_2: '#0FA78F',\n scaleMobileL: 1.3,\n scaleLaptop: 1.8,\n scaleLaptopL: 2.4,\n};\n\n\nexport const size = {\n mobile: 320,\n mobileL: 414,\n laptop: 576,\n laptopL: 768,\n};\n\n\nexport const breakpoint = {\n mobileL: `(min-width: ${size.mobileL}px) and (min-height: ${size.mobileL + game.footerHeight + game.headerHeight}px)`,\n laptop: `(min-width: ${size.laptop}px) and (min-height: ${size.laptop + game.footerHeight + game.headerHeight}px)`,\n laptopL: `(min-width: ${size.laptopL}px) and (min-height: ${size.laptopL + game.footerHeight + game.headerHeight}px)`,\n};\n","import { useState, useEffect } from 'react';\n\nfunction getWindowDimensions() {\n const { innerWidth: width, innerHeight: height } = window;\n return {\n width,\n height,\n };\n}\n\nexport default function useWindowDimensions() {\n const [windowDimensions, setWindowDimensions] = useState(getWindowDimensions());\n\n useEffect(() => {\n function handleResize() {\n setWindowDimensions(getWindowDimensions());\n }\n\n window.addEventListener('resize', handleResize);\n return () => window.removeEventListener('resize', handleResize);\n }, []);\n\n return windowDimensions;\n}\n","import React, { useEffect, useState } from 'react';\nimport TrafficLight, { TTrafficLight } from './TrafficLight';\n\ntype TrafficLightSequenceProps = {\n sequence: TTrafficLightSequence[];\n loop: boolean;\n onSequenceComplete?: () => void;\n setLightIndex: (index: number | null) => void;\n index?: number;\n reset?: boolean;\n onClick?: () => void;\n highlight?: boolean\n}\n\nexport type TTrafficLightSequence = TTrafficLight & {\n duration: number;\n}\n\nconst TrafficLightSequence: React.FC = ({ sequence, loop, onSequenceComplete = () => { }, setLightIndex, index = 0, reset = false, onClick, highlight }) => {\n const [sequenceIndex, setSequenceIndex] = useState(index);\n const [lightProps, setLightProps] = useState(sequence[sequenceIndex]);\n\n useEffect(() => setSequenceIndex(index), [index]);\n\n useEffect(() => {\n if (reset) {\n setSequenceIndex(0);\n\n }\n }, [reset]);\n\n useEffect(() => {\n if (sequence[sequenceIndex]) {\n let timeout = setTimeout(() => {\n if (sequence.length > sequenceIndex + 1) {\n setSequenceIndex(sequenceIndex + 1);\n\n } else if (loop) {\n setSequenceIndex(0);\n } else {\n // completed\n setLightProps({ duration: 0 });\n onSequenceComplete();\n }\n\n }, sequence[sequenceIndex].duration);\n\n return () => clearTimeout(timeout)\n }\n }, [sequenceIndex, sequence]);\n\n useEffect(() => {\n if (sequence && sequence[sequenceIndex]) {\n setLightProps(sequence[sequenceIndex]);\n setLightIndex(sequenceIndex);\n } else {\n setLightIndex(null);\n }\n }, [sequenceIndex, sequence]);\n\n return (\n
\n \n
\n );\n}\n\nexport default TrafficLightSequence;\n","import { motion, useMotionValue } from 'framer-motion';\nimport React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport useWindowDimensions from '../../../../../../hooks/window';\nimport car_left_crashed from '../../../assets/car/left-blue-crashed.svg';\nimport car_left from '../../../assets/car/left-blue.svg';\nimport car_right_crashed from '../../../assets/car/right-crashed.svg';\nimport car_right from '../../../assets/car/right.svg';\nimport { TCar } from './Road';\n\n\nconst Car: React.FC = ({ pos = 0, direction, moving, central = false, hidden = false, crashed = false, scale = 1, debug = false }) => {\n const { width } = useWindowDimensions();\n const carPos = useMotionValue(pos);\n const [carImage, setCarImage] = useState('');\n\n const moveCar = (distance: number = 100) => {\n carPos.set(carPos.get() + distance)\n }\n\n const bottomPercentage = direction === 'clockwise' ? '42.5%' : '12.0%'\n\n useEffect(() => {\n // console.log(carPos.get() + (100 + (pos - carPos.get())), direction)\n // console.log(carPos.get(), pos, pos - carPos.get())\n if (moving) {\n moveCar((direction === 'clockwise' ? 100 * scale : -100 * scale) + (pos - carPos.get()))\n }\n }, [pos])\n\n useEffect(() => {\n // console.log(carPos.get() + (100 + (pos - carPos.get())), direction)\n // console.log(carPos.get(), pos, pos - carPos.get())\n if (moving) {\n if (direction === 'clockwise') {\n setCarImage(car_right)\n }\n if (direction === 'anticlockwise') {\n setCarImage(car_left)\n }\n }\n else {\n if (direction === 'clockwise' && crashed) {\n setCarImage(car_right_crashed)\n }\n if (direction === 'anticlockwise' && crashed) {\n setCarImage(car_left_crashed)\n }\n }\n }, [moving])\n\n return (\n \n // \n );\n}\n\n\nconst StyledCar = styled.img<{ left: boolean, debug: boolean }>`\n width: 100%;\n margin-left: ${(props) => props.left ? '-40%' : '0'};\n ${(props) => props.debug ? 'border: solid red 1px;' : 'border: none;'}\n\n`;\n\nexport default Car;\n","import React from 'react';\nimport Car from './Car';\nimport { TCar } from './Road';\n\ntype CarProps = {\n cars: TCar[],\n scale: number\n debug: boolean\n}\n\nconst Cars: React.FC = ({ cars, scale, debug }) => {\n return (\n <>\n { cars.map((car) => {\n // return (

Car {car.pos}

)\n return ();\n })}\n \n );\n}\n\nexport default Cars;\n","import { faPlay } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport React, { useEffect, useState } from 'react';\nimport { Button } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport { useInterval } from '../../../../../../hooks/interval';\nimport useWindowDimensions from '../../../../../../hooks/window';\nimport bridge from '../../../assets/scene/bridge_3-new.svg';\nimport road_stripes from '../../../assets/scene/road-stripes.svg';\nimport { breakpoint, game } from '../../../styles/junction';\nimport TrafficLightSequence, { TTrafficLightSequence } from '../../traffic-lights/TrafficLightSequence';\nimport Cars from './Cars';\n\nexport type RoadProps = {\n carData: TCar[];\n trafficLight1?: TRoadLight;\n trafficLight2?: TRoadLight;\n onCrash?: () => void;\n onRoadComplete?: () => void;\n paused?: boolean;\n setPause?: (status: boolean) => void;\n gameReset?: boolean;\n}\n\nexport type TRoadLight = {\n sequence: TTrafficLightSequence[],\n direction: TRoadDirection,\n highlight?: boolean,\n pos: number,\n onClick?: () => void,\n}\n\nexport type TCar = {\n id: string;\n pos: number;\n moving: boolean;\n crashed?: boolean;\n direction: TRoadDirection;\n central?: boolean;\n hidden?: boolean;\n reset?: boolean;\n completed?: boolean;\n onComplete?: () => void;\n hideOnComplete?: boolean;\n loop?: boolean;\n debug?: boolean;\n}\n\ntype TRoadDirection = 'clockwise' | 'anticlockwise'\n\nconst Road: React.FC = ({ carData, trafficLight1, trafficLight2, onCrash, onRoadComplete, paused = false, gameReset, setPause }) => {\n const { width } = useWindowDimensions();\n const scale = width >= 1000 ? 1 : width / 1000;\n const speed = 0.4;\n const carWidth = width >= 1000 ? 1 * 130 : (width / 1000) * 120;\n\n const t2 = trafficLight2;\n\n const [lightIndex, setLightIndex] = useState(0);\n const [lightIndex2, setLightIndex2] = useState(0);\n const [debug, setDebug] = useState(false);\n\n const [cars, setCars] = useState(carData);\n\n useEffect(() => {\n if (process.env.NODE_ENV !== 'development') {\n setDebug(false);\n }\n }, []);\n\n useEffect(() => {\n // Spawn vehicles on carData change\n let spawnList: TCar[] = [];\n carData.forEach((car) => {\n // check to see if already spawned & not reset\n if (cars && !cars.find((c) => c.id === car.id)) {// && !car.reset\n spawnList.push(car);\n }\n })\n\n setCars([\n ...cars,\n ...spawnList,\n ]);\n }, [carData]);\n\n const inRangeOfPos = (pos1: number, pos2: number, distance = 10 * scale) => {\n return pos1 >= pos2 - distance && pos1 <= pos2;\n }\n\n const inRange = (x: number, lower: number, upper: number) => {\n return ((x - lower) * (x - upper) <= 0);\n }\n\n useEffect(() => {\n // spawnCar()\n }, []);\n\n const RADIUS = {\n SMALL: 100 * scale,\n MEDIUM: 200 * scale,\n LARGE: 300 * scale,\n }\n\n // GUIDE VALUES\n const centre = (width / 2);\n const bridgeLowerBound = width >= 1000 ? centre - 150 : (width * 0.4);\n const bridgeUpperBound = width >= 1000 ? centre + 150 : (width * 0.6);\n\n const leftTrafficLight = width >= 1000 ? centre - 300 : (width * 0.25);\n const rightTrafficLight = width >= 1000 ? centre + 300 : (width * 0.75);\n\n\n const updateCarPos = () => {\n // Collision Check\n let collision = false;\n let collidedIds: string[] = [];\n cars.forEach((car, index) => {\n collision = cars.some((c, i) => {\n // Meet at same position and not same car // REMOVED doesn't make sense\n if (c.pos === car.pos && c.id !== car.id && c.direction != car.direction && (c.central && car.central) && (!car.hidden || !c.hidden)) {\n collidedIds.push(c.id);\n collidedIds.push(car.id);\n return true;\n }\n\n // if opposite directions and v close AND is central AND not hidden\n if (c.direction != car.direction && (inRangeOfPos(c.pos, car.pos, RADIUS.SMALL)) && (c.central && car.central) && (!car.hidden || !c.hidden)) {\n // console.log('crash b')\n\n collidedIds.push(c.id);\n collidedIds.push(car.id);\n return true;\n }\n\n return false;\n })\n })\n\n // New Car Positions\n let newCarPos = cars;\n let carsCompleted = 0;\n newCarPos = newCarPos.map((car, index) => {\n // some defaults\n car.central = false;\n car.hidden = false;\n car.moving = true;\n car.completed = car.completed ?? false;\n\n // Reset cars outside of boundary\n if (car.pos > (width) && car.direction === 'clockwise') {\n car.pos = 0;\n car.completed = true;\n car.hidden = true;\n if (car.onComplete) {\n car.onComplete();\n }\n } else if (car.pos < 0) {\n car.pos = width;\n car.completed = true;\n car.hidden = true;\n if (car.onComplete) {\n car.onComplete();\n }\n }\n\n // given the upper and lower bound of the bridge, is this value within\n const centre = (width / 2);\n const bridgeLowerBound = width >= 1000 ? centre - 150 : (width * 0.4);\n const bridgeUpperBound = width >= 1000 ? centre + 150 : (width * 0.6);\n console.log(bridgeLowerBound, bridgeUpperBound)\n\n if (inRange(car.pos, bridgeLowerBound, bridgeUpperBound)) {\n car.central = true;\n }\n\n // check for traffic ahead\n cars.some((car2, i) => {\n // Same direction and close proximity AND it is in front\n if (\n i !== index &&\n car.direction === 'clockwise' &&\n car.direction === car2.direction &&\n car.pos < car2.pos && ((car2.pos - car.pos) <= (1.5 * carWidth))\n\n ) {\n car.moving = false;\n }\n\n if (\n i !== index &&\n car.direction === 'anticlockwise' &&\n car.direction === car2.direction &&\n car.pos > car2.pos && ((car2.pos - car.pos) >= (-1.5 * carWidth))\n\n ) {\n car.moving = false;\n }\n\n })\n\n //INVESTIGATE WHY CAR SITS AT LIGHT\n\n const leftTrafficLight = width >= 1000 ? centre - 300 : (width * 0.25);\n const rightTrafficLight = width >= 1000 ? centre + 300 : (width * 0.75);\n\n // Stop cars at traffic lights\n if (lightIndex !== null) {\n if (trafficLight1?.sequence[lightIndex].red?.enabled && !trafficLight1?.sequence[lightIndex].green?.enabled && car.direction === 'clockwise' && inRangeOfPos(car.pos, leftTrafficLight, RADIUS.SMALL)) {//\n car.moving = false;\n } else {\n\n }\n }\n\n if (lightIndex2 !== null) {\n if (t2?.sequence[lightIndex2].red?.enabled && !t2?.sequence[lightIndex2].green?.enabled && car.direction === 'anticlockwise' && inRangeOfPos(car.pos, rightTrafficLight, RADIUS.SMALL)) {\n car.moving = false;\n }\n }\n\n // Stop all cars after collision\n if (collision) {\n car.moving = false;\n }\n\n // if crashed car, show\n if (collidedIds.find((id) => car.id === id)) {\n car.crashed = true;\n car.moving = false;\n collision = true;\n }\n\n if (car.crashed) {\n car.moving = false\n }\n\n if (collision) {\n if (onCrash) {\n onCrash();\n\n }\n }\n\n\n if (car.completed) {\n if (!car.loop) {\n car.hidden = true;\n car.moving = false;\n }\n\n carsCompleted++;\n\n }\n\n\n return {\n id: car.id,\n moving: car.moving,\n crashed: car.crashed,\n completed: car.completed,\n onComplete: car.onComplete,\n pos: car.moving ? (car.direction === 'clockwise' ? car.pos + (carWidth * speed) : car.pos - (carWidth * speed)) : car.pos,\n direction: car.direction,\n central: car.central,\n hidden: car.hidden,\n hideOnComplete: car.hideOnComplete,\n loop: car.loop,\n }\n })\n\n if (cars && carsCompleted === cars.length && onRoadComplete && cars.length > 0) {\n onRoadComplete();\n }\n\n setCars(newCarPos);\n }\n\n // what about reset game with traffic lights??\n\n const resetGame = () => {\n resetCars();\n resetLights();\n }\n\n const resetCars = () => {\n setCars(carData);\n }\n\n const resetLights = () => {\n setLightIndex(null);\n setLightIndex2(null);\n setReset(true);\n }\n\n useEffect(() => {\n resetCars()\n }, [gameReset]);\n\n const [reset, setReset] = useState(false);\n\n useInterval(() => {\n updateCarPos();\n }, paused ? null : 250);// might do a double\n\n useEffect(() => {\n if (setPause)\n setPause(true);\n }, [setPause]);\n return (\n <>\n { setPause && paused ? setPause(false)}>{t`Run Test`} : null}\n\n {/* {t`Reset Game`} */}\n \n {/*\n */}\n {(trafficLight1 && trafficLight1.sequence) ? (\n \n \n \n ) : null}\n {debug ?\n <>\n \n \n \n \n : null}\n \n \n \n \n \n\n \n\n {(t2 && t2.sequence) ? (\n \n \n \n ) : null}\n\n \n \n );\n}\n\ninterface LightGuide {\n x: number;\n}\nconst LightGuidelines = styled.div`\n position: fixed;\n border: solid red 2px;\n z-index: 999;\n height: 100%;\n left: ${(props) => props.x}px;\n`;\n\ninterface BridgeGuide {\n left: number;\n right: number;\n}\nconst BridgeGuidelines = styled.div`\n position: fixed;\n border: solid cyan 2px;\n z-index: 999;\n height: 100%;\n left: ${(props) => props.left}px;\n width: ${(props) => props.right - props.left}px;\n`;\n\n\nconst ResetButton = styled(Button)`\n svg { margin-right: 10px }\n bottom: 10px;\n left: 50%;\n position: fixed;\n transform: translateX(-50%);\n z-index: 999;\n`;\n\ninterface StopProps {\n x: number,\n position: string\n}\n\nconst RoadStopLine = styled.div`\n width: 2%;\n max-width: 6px;\n height: calc( ${game.roadWidth / 2}px - 4%);\n position: absolute;\n\n background-color: rgba(255,255,255,0.2);\n ${(props) => props.position == 'left' ? 'top: 2%;' : 'bottom: 2%;'}\n left: ${(props) => props.x}px;\n @media ${breakpoint.mobileL}{\n ${'height: calc(' + (game.roadWidth * game.scaleMobileL) / 2 + 'px - 4%)'};\n }\n @media ${breakpoint.laptop}{\n ${'height: calc(' + (game.roadWidth * game.scaleLaptop) / 2 + 'px - 4%)'};\n }\n @media ${breakpoint.laptopL}{\n ${'height: calc(' + (game.roadWidth * game.scaleLaptopL) / 2 + 'px - 4%)'};\n }\n\n`;\n\ninterface StripesProps {\n left: boolean,\n width: number,\n}\n\nconst RoadStripes = styled.img`\n width: 300%;\n position: absolute;\n bottom: 50%;\n opacity: 0.6;\n width: ${(props) => props.width}px;\n ${(props) => props.left ? 'left: 0;' : 'right: 0;'}\n\n`;\n\n\nconst RoadWrapper = styled.div`\n position: fixed;\n left: 0;\n right: 0;\n height: ${game.roadWidth}px;\n top: 50%;\n transform: translateY(-50%);\n @media ${breakpoint.mobileL}{\n ${'height: ' + (game.roadWidth * game.scaleMobileL) + 'px'};\n }\n @media ${breakpoint.laptop}{\n ${'height: ' + (game.roadWidth * game.scaleLaptop) + 'px'};\n }\n @media ${breakpoint.laptopL}{\n ${'height: ' + (game.roadWidth * game.scaleLaptopL) + 'px'};\n }\n`\n\n\ninterface TrafficProps {\n position: string\n}\nexport const TrafficWrapper = styled.div`\n position: absolute;\n z-index: 999;\n width: 10%;\n max-width: 40px;\n transform: translateX(-50%);\n &:hover{\n cursor: pointer;\n opacity: 0.9;\n }\n ${p => p.position === \"top_left\" ? `\n left: 35%;\n bottom:110%;\n @media(min-width:1000px){\n left: calc(50% - 150px);\n top: -150px;\n }\n ` : ''}\n ${p => p.position === \"bottom_right\" ? `\n left: 70%;\n bottom:-20%;\n @media(min-width:1000px){\n bottom: -40px;\n left: calc(50% + 150px);\n }\n ` : ''}\n\n`\n// Bridge for Level 1 Junction (2 pieces)\n\ninterface BridgeProps {\n position: string\n}\nconst Bridge = styled.img`\n position: absolute;\n left: 0;\n right: 0;\n margin: 0 auto;\n width: 40%;\n z-index: 100;\n\n max-width: 130px;\n @media(min-width: 1000px){\n width: 300px;\n }\n\n ${'z-index: 100; bottom: calc(49% - ' + game.roadWidth / 2 + 'px)'};\n @media ${breakpoint.mobileL}{\n max-width: 172px;\n ${'bottom: calc(49.5% - ' + (game.roadWidth * game.scaleMobileL) / 2 + 'px)'};\n }\n @media ${breakpoint.laptop}{\n max-width: 245px;\n ${'bottom: calc(49.5% - ' + (game.roadWidth * game.scaleLaptop) / 2 + 'px)'};\n }\n @media ${breakpoint.laptopL}{\n max-width: 332px;\n ${'bottom: calc(49.5% - ' + (game.roadWidth * game.scaleLaptopL) / 2 + 'px)'};\n }\n @media(min-width: 1000px){\n max-width: 300px;\n width: 300px;\n }\n`\nexport default Road;\n","import { useEffect, useRef } from 'react';\n\nexport const useInterval = (callback: () => void, delay: number | null) => {\n const savedCallback = useRef();\n\n // Remember the latest callback.\n useEffect(() => {\n savedCallback.current = callback;\n }, [callback]);\n\n // Set up the interval.\n useEffect(() => {\n function tick() {\n savedCallback.current();\n }\n if (delay !== null) {\n let id = setInterval(tick, delay);\n return () => clearInterval(id);\n }\n }, [delay]);\n}","import { faExclamationTriangle } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { motion } from 'framer-motion';\nimport React from 'react';\nimport { Button } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport car_left from '../../assets/car/left.svg';\nimport car_right from '../../assets/car/right.svg';\nimport cones from '../../assets/misc/traffic-cones.svg';\nimport tree from '../../assets/misc/tree.png';\nimport bridge_2 from '../../assets/scene/bridge_2-new.svg';\nimport bridge from '../../assets/scene/bridge_3-new.svg';\nimport cloud from '../../assets/scene/cloud.svg';\nimport pattern_cross from '../../assets/scene/pattern_cross.png';\nimport pattern_dots from '../../assets/scene/pattern_dots.png';\nimport pattern_wave from '../../assets/scene/pattern_wave--white.png';\nimport Smoke from '../../components/interactive/scene/Smoke';\nimport TrafficLight, { TAlert } from '../../components/traffic-lights/TrafficLight';\nimport { breakpoint, game, size } from '../../styles/junction';\nimport { theme } from '../../styles/theme';\nimport Road, { RoadProps } from './scene/Road';\nimport blue_sign from '../../assets/misc/sign-blue.png';\nimport blue_sign_welsh from '../../assets/misc/sign-blue-welsh.png';\nimport red_sign from '../../assets/misc/sign-red.png';\nimport red_sign_welsh from '../../assets/misc/sign-red-welsh.png';\nimport Cookies from 'js-cookie';\n\ninterface SceneProps {\n nextSlide(): void;\n data?: TrafficData;\n roadworks?: boolean;\n crash?: boolean;\n help?: string;\n alert?: TAlert;\n lights?: boolean;\n road?: RoadProps\n}\n\nconst Scene: React.FC = ({ nextSlide, data, roadworks, crash, help, children, alert, lights = true, road }) => {\n const next = (\n \n );\n let lang = Cookies.get('bfg_lang');\n\n\n return (\n \n {/* */}\n {/* */}\n {/* */}\n {/* */}\n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n \n \n \n\n \n\n \n \n \n \n \n \n \n \n \n \n\n {lights ? (\n \n ) : null}\n \n\n {road ? : null}\n\n {roadworks ? <> : null}\n {crash ? <> : null}\n\n\n {lights ? (\n \n ) : null}\n\n {children}\n \n \n
\n
\n\n\n {help ? {help} : null}\n {/* INCIDENT REPORTED */}\n
\n );\n};\n\ninterface SignProps {\n position: string\n}\nconst Sign = styled.img`\n width: 85px;\n height: 40px;\n position: absolute;\n z-index: 25;\n margin: 0 10px;\n ${(props) => props.position == 'right' ? 'bottom: 5px; right: 0;' : 'top: -10px; left: 0;'}\n @media (min-width: 1200px) {\n width: 170px;\n height: 80px;\n margin: 0 30px;\n }\n`;\n\n\n// Clouds\n\nconst Clouds = styled.div`\n height: 100%;\n width: 100%;\n overflow: hidden;\n user-select: none;\n pointer-events: none;\n position: fixed;\n z-index: 999;\n img {\n width: 75px;\n position: absolute;\n left: -75px;\n user-select: none;\n pointer-events: none;\n z-index: 998;\n opacity: 0.5;\n &.cloud-half-hack {\n left: 40%;\n }\n }\n`;\n\n\n// Cones\n\ninterface ConesProps {\n position: string\n}\n\nconst Cones = styled.img`\n width: 7%;\n bottom: 40%;\n position: absolute;\n ${p => p.position === \"left\" ? 'left: 4%;' : ''};\n ${p => p.position === \"right\" ? 'right: 4%;' : ''};\n`;\n\n// Traffic Light Placements\n\ninterface TrafficProps {\n position: string\n}\nconst TrafficWrapper = styled.div`\n position: absolute;\n width: 8%;\n height: 28%;\n &:hover{\n cursor: pointer;\n opacity: 0.9;\n }\n ${p => p.position === \"top_left\" ? 'left: 12.5%; bottom: 68%;' : ''};\n ${p => p.position === \"top_right\" ? 'right: 25%; bottom: 77.5%;' : ''};\n ${p => p.position === \"bottom_left\" ? 'left: 25%; bottom: 12.5%;' : ''};\n ${p => p.position === \"bottom_right\" ? 'right: 12.5%; bottom: 27.5%;' : ''};\n`;\n\n// Bridge for Level 1 Junction (2 pieces)\n\ninterface BridgeProps {\n position: string\n}\nconst Bridge = styled.img`\n position: absolute;\n left: 0;\n right: 0;\n margin: 0 auto;\n width: 45%;\n @media(min-width: 1000px){\n width: 300px;\n }\n ${p => p.position === \"top\" ? `\n ${'bottom: calc(46% + ' + game.roadWidth / 2 + 'px)'};\n @media ${breakpoint.mobileL}{\n ${'bottom: calc(46% + ' + (game.roadWidth * game.scaleMobileL) / 2 + 'px)'};\n }\n @media ${breakpoint.laptop}{\n ${'bottom: calc(46% + ' + (game.roadWidth * game.scaleLaptop) / 2 + 'px)'};\n }\n @media ${breakpoint.laptopL}{\n ${'bottom: calc(46% + ' + (game.roadWidth * game.scaleLaptopL) / 2 + 'px)'};\n }`\n : `\n ${'z-index: 10; bottom: calc(49% - ' + game.roadWidth / 2 + 'px)'};\n @media ${breakpoint.mobileL}{\n ${'bottom: calc(49.5% - ' + (game.roadWidth * game.scaleMobileL) / 2 + 'px)'};\n }\n @media ${breakpoint.laptop}{\n ${'bottom: calc(49.5% - ' + (game.roadWidth * game.scaleLaptop) / 2 + 'px)'};\n }\n @media ${breakpoint.laptopL}{\n ${'bottom: calc(49.5% - ' + (game.roadWidth * game.scaleLaptopL) / 2 + 'px)'};\n }`\n };\n\n`;\n\n// River for Level 1 Junction (2 pieces)\n\ninterface RiverProps {\n position: string;\n texture: string\n}\nconst River = styled.div`\n position: absolute;\n left: 50%;\n transform: translateX(-50%);\n width: ${game.roadWidth}px;\n background-color: ${theme.bare_blue};\n background-image: url('${(props) => props.texture}');\n ${p => p.position === \"top\" ? 'top: 0' : 'bottom: 0'};\n border-left: 2px solid ${game.c_road_2};\n border-right: 2px solid ${game.c_road_2};\n height: ${'calc(50% - ' + (game.roadWidth / 2) + 'px)'};\n ${p => p.position === \"top\" ? 'height: calc(50% - ' + (game.roadWidth) / 2 + 'px)' : ''};\n div {\n width:100%;\n background-color: rgba(0,0,0,0.2);\n height: 10%;\n max-height: 50px;\n }\n width: 20%;\n max-width: 200px;\n @media ${breakpoint.mobileL}{\n ${'height: calc(50% - ' + (game.roadWidth * game.scaleMobileL) / 2 + 'px)'};\n ${p => p.position === \"top\" ? 'height: calc(50% - ' + (game.roadWidth * game.scaleMobileL) / 2 + 'px)' : ''};\n\n }\n @media ${breakpoint.laptop}{\n ${'height: calc(50% - ' + (game.roadWidth * game.scaleLaptop) / 2 + 'px)'};\n ${p => p.position === \"top\" ? 'height: calc(50% - ' + (game.roadWidth * game.scaleLaptop) / 2 + 'px)' : ''};\n\n\n }\n @media ${breakpoint.laptopL}{\n\n ${'height: calc(50% - ' + (game.roadWidth * game.scaleLaptopL) / 2 + 'px)'};\n ${p => p.position === \"top\" ? 'height: calc(50% - ' + (game.roadWidth * game.scaleLaptopL) / 2 + 'px)' : ''};\n\n }\n\n`;\n\n// Info sections above and below\n\nconst Alert = styled.p`\n background-color: #FFFFFF;\n color: ${theme.bare_pink};\n padding: 0.5rem 1rem;\n position: absolute;\n bottom: 15px;\n margin: 0 auto;\n font-size: 18px;\n line-height: 20px;\n text-align: center;\n border-radius: 5px;\n font-family: ${theme.font_bt_extra};\n letter-spacing: 0.05em;\n left: 0;\n right: 0;\n max-width: 250px;\n width: 100%;\n`;\n\nconst Intro = styled.p`\n background-color: rgba(77, 120, 134, 0.7);\n width: 100%;\n max-width: 440px;\n padding: 0.5rem 1rem;\n color: #FFFFFF;\n position: absolute;\n top: 85px;\n margin: 0 auto;\n font-size: 16px;\n line-height: 20px;\n text-align: center;\n border-radius: 5px;\n left: 0;\n right: 0;\n pointer-events: none;\n user-select: none;\n @media(min-width:768px){\n font-size: 20px;\n line-height: 22px;\n }\n @media(min-width:1000px){\n font-size: 22px;\n }\n @media(min-width:1400px){\n font-size: 24px;\n line-height: 24px;\n }\n`;\n\nconst Tree = styled.img`\n position: absolute;\n`;\n\n// Placeholder Cars\n\n\nconst CarCrash1 = styled.img`\n width: 17.5%;\n bottom: 42.5%;\n left: 34%;\n transform: rotate(3deg);\n position: absolute;\n`;\nconst CarCrash2 = styled.img`\n width: 17.5%;\n top: 42.5%;\n right:34%;\n transform: rotate(3deg);\n position: absolute;\n`;\n\n\n// Grass shapes for different layouts\n\ninterface GrassProps {\n position: string;\n texture: string\n}\n\nconst Grass = styled.div`\n position: fixed;\n border: solid 0px ${game.c_road_2};\n background-color: ${theme.bare_green};\n background-image: url('${(props) => props.texture}');\n\n ${p => p.position === \"top\" ? 'box-shadow: 0 50px 200px rgba(255,255,255,0.5) inset; left: 0; top: 0; right: 0; height: calc(50% - ' + game.roadWidth / 2 + 'px); width: 100%; border-bottom-width: 4px;' : ''};\n ${p => p.position === \"bottom\" ? 'box-shadow: 0 -50px 200px rgba(255,255,255,0.5) inset; left: 0; bottom: 0; right: 0; height: calc(50% - ' + game.roadWidth / 2 + 'px); width: 100%;' : ''};\n\n ${p => p.position === \"top_left\" ? 'left: 0; top: 0; height: calc(50% - ' + game.roadWidth / 2 + 'px); width: calc(50% - ' + game.roadWidth / 2 + 'px); border-bottom-width: 5px; border-right-width: 4px; border-bottom-right-radius: 15px;' : ''};\n ${p => p.position === \"top_right\" ? 'right: 0; top: 0; height: calc(50% - ' + game.roadWidth / 2 + 'px); width: calc(50% - ' + game.roadWidth / 2 + 'px); border-bottom-width: 5px; border-left-width: 4px; border-bottom-left-radius: 15px;' : ''};\n ${p => p.position === \"bottom_right\" ? 'right: 0; bottom: 0; height: calc(50% - ' + game.roadWidth / 2 + 'px); width: calc(50% - ' + game.roadWidth / 2 + 'px); border-left-width: 3px; border-top-left-radius: 15px;' : ''};\n ${p => p.position === \"bottom_left\" ? 'left: 0; bottom: 0; height: calc(50% - ' + game.roadWidth / 2 + 'px); width: calc(50% - ' + game.roadWidth / 2 + 'px); border-right-width: 3px; border-top-right-radius: 15px;' : ''};\n\n ${p => p.position !== \"top\" && p.position !== \"bottom\" ? `\n @media ${breakpoint.mobileL}{\n ${'height: calc(50% - ' + (game.roadWidth * game.scaleMobileL) / 2 + 'px);'}\n ${'width: calc(50% - ' + (game.roadWidth * game.scaleMobileL) / 2 + 'px);'}\n }\n @media ${breakpoint.laptop}{\n ${'height: calc(50% - ' + (game.roadWidth * game.scaleLaptop) / 2 + 'px);'}\n ${'width: calc(50% - ' + (game.roadWidth * game.scaleLaptop) / 2 + 'px);'}\n }\n @media ${breakpoint.laptopL}{\n ${'height: calc(50% - ' + (game.roadWidth * game.scaleLaptopL) / 2 + 'px);'}\n ${'width: calc(50% - ' + (game.roadWidth * game.scaleLaptopL) / 2 + 'px);'}\n }\n ` : `\n @media ${breakpoint.mobileL}{\n ${'height: calc(50% - ' + (game.roadWidth * game.scaleMobileL) / 2 + 'px);'}\n }\n @media ${breakpoint.laptop}{\n ${'height: calc(50% - ' + (game.roadWidth * game.scaleLaptop) / 2 + 'px);'}\n }\n @media ${breakpoint.laptopL}{\n ${'height: calc(50% - ' + (game.roadWidth * game.scaleLaptopL) / 2 + 'px);'}\n }\n `}\n`;\n\ninterface WrapperProps {\n texture: string\n}\n\nconst SceneWrapper = styled.div`\n position: fixed;\n left: 0;\n right: 0;\n z-index: 5;\n top: 0;\n bottom: 0;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${game.c_road};\n background-image: url('${(props) => props.texture}');\n`;\n\nconst GameWrapper = styled.div`\n width: ${size.mobile - (2 * game.paddingDefault)}px;\n height: ${size.mobile - (2 * game.paddingDefault)}px;\n position: relative;\n @media ${breakpoint.mobileL}{\n height: ${size.mobileL - (2 * game.paddingDefault)}px;\n width: ${size.mobileL - (2 * game.paddingDefault)}px;\n }\n @media ${breakpoint.laptop}{\n height: ${size.laptop - (2 * game.paddingDefault)}px;\n width: ${size.laptop - (2 * game.paddingDefault)}px;\n }\n @media ${breakpoint.laptopL}{\n height: ${size.laptopL - (2 * game.paddingDefault)}px;\n width: ${size.laptopL - (2 * game.paddingDefault)}px;\n }\n`;\n\nexport default Scene;\n","import React, { useState } from 'react';\nimport { Button } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport EngineerShahid from '../../characters/EngineerShahid';\nimport DialogueOverlay from '../../components/DialogueOverlay';\nimport Scene from '../../components/interactive/Scene';\nimport { TCar } from '../../components/interactive/scene/Road';\n\nconst IntroScene: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [nameShow, setNameShow] = useState(false);\n\n const [carData] = useState([\n { id: 'go-1', pos: 0, moving: true, direction: 'clockwise', loop: true },\n ]);\n\n const [nextDialogue, setNextDialogue] = useState(null);\n\n\n const next = data.name ? (\n \n ) : null;\n\n const dialogue: DialogueData[] = [\n {\n character: EngineerShahid,\n text: t`${data.name}, the narrow bridge you see in-front of you has caused quite a few crashes recently. `,\n textSpriteName: `6`,\n buttonText: t`Next`,\n },\n {\n character: EngineerShahid,\n text: t`The Mayor of Red Town has asked us to make it safe for cars to cross in both directions.`,\n textSpriteName: `7`,\n buttonText: t`Next`,\n },\n\n {\n character: EngineerShahid,\n text: t`As the bridge is so narrow, cars can only cross one at a time. If two cars drive onto the bridge at the same time, there may be a crash!`,\n textSpriteName: `8`,\n buttonText: t`Next`,\n },\n {\n character: EngineerShahid,\n text: t`Hold on! Two cars are driving towards each other right now!`,\n textSpriteName: `9`,\n buttonText: t`Watch`,\n buttonAction: () => {\n nextSlide();\n },\n },\n ];\n\n return (\n \n \n \n\n \n \n );\n};\n\nconst ButtonWrapper = styled.div`\n min-height: 60px;\n .btn-3d {\n background-color: #6400aa;\n color: #ffffff !important;\n &:hover, &:active, &:focus {\n background-color: #540e85 !important;\n color: #DDDDDD !important;\n }\n }\n`;\nconst Character = styled.img`\n position: absolute;\n z-index: -1;\n top: -70px;\n left: 15px;\n width: 50px;\n`;\n\nconst Content = styled.div`\n position:relative;\n width: 100%;\n display: block;\n margin: 0 auto;\n padding: 1rem;\n background-color: #ffffff;\n @media (min-width: 576px){\n border-radius: 5px;\n }\n min-height: 136px;\n`;\n\n\nconst Layout = styled.div`\n width: 100%;\n position: fixed;\n bottom: 0;\n left: 0;\n z-index: 999;\n .island {\n background-color: #EAF4F7;\n padding: 6px 12px !important;\n width: 100%;\n margin: 0 0 10px !important;\n font-size: 18px;\n line-height: 24px;\n min-height: auto;\n box-shadow: none;\n &::after{\n content: '';\n position: absolute;\n left: 8px;\n top: -12px;\n width: 0;\n height: 0;\n border-left: 10px solid transparent;\n border-right: 10px solid transparent;\n border-bottom: 15px solid #EAF4F7;\n clear: both;\n }\n }\n .island__author--dialogue {\n font-size: 12px;\n top: -55px;\n left: 50px;\n padding: 2px 8px;\n letter-spacing: 0.05em;\n border-radius: 5px;\n }\n @media (min-width: 576px){\n bottom: 10px;\n .island {\n border-radius: 5px !important;\n margin-bottom: 10px !important;\n }\n ${Content} {\n max-width: 400px;\n }\n }\n @media (min-width: 1200px){\n .island {\n font-size: 20px;\n }\n ${Content} {\n max-width: 500px;\n }\n }\n`;\n\nexport default IntroScene;\n","import { faCheck } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { motion } from 'framer-motion';\nimport React, { useContext, useEffect, useRef, useState } from 'react';\nimport { Button } from 'react-bootstrap';\nimport Slider from \"react-slick\";\nimport \"slick-carousel/slick/slick-theme.css\";\n// Import css files\nimport \"slick-carousel/slick/slick.css\";\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport VoiceoverContext from '../../../../../misc/voiceover-context';\nimport level_1 from '../../../assets/levels/level_1.png';\nimport level_2 from '../../../assets/levels/level_2.png';\nimport level_3 from '../../../assets/levels/level_3.png';\nimport level_4 from '../../../assets/levels/level_4.png';\nimport town_scene from '../../../assets/scene/town_scene.svg';\nimport town_scene_welsh from '../../../assets/scene/town_scene-welsh.svg';\nimport { breakpoint } from '../../../styles/junction';\nimport Cookies from 'js-cookie';\n\ninterface SelectorProps {\n nextSlide: () => void;\n level: number;\n recap?: JSX.Element | string;\n textSpriteName?: string;\n}\n\nconst lang = Cookies.get('bfg_lang');\n\n\nconst LevelSelector: React.FC = ({ nextSlide, level, recap = '', textSpriteName }) => {\n const [selected, setSelected] = useState(level);\n const [selector, setSelector] = useState(false);\n const [showRecap, setShowRecap] = useState(false);\n const { playVoiceover, stopVoiceover } = useContext(VoiceoverContext);\n\n\n const next = (\n \n );\n\n useEffect(() => {\n if (level <= 1 || recap === '') {\n setSelector(true);\n }\n else {\n setShowRecap(true);\n playVoiceover('24');\n if (typeof textSpriteName !== 'undefined') {\n let t = setTimeout(() => {\n playVoiceover(textSpriteName as string)\n }, 3000);\n return () => {\n clearTimeout(t)\n };\n }\n }\n }, []);\n const slider = useRef(null)\n\n var settings = {\n dots: true,\n infinite: false,\n speed: 500,\n slidesToShow: 1,\n centerMode: true,\n focusOnSelect: true,\n centerPadding: \"20px\",\n ref: slider,\n variableWidth: true,\n initialSlide: (level - 1 > 0 ? level - 1 : 0),\n beforeChange: (current: number, next: number) => (setSelected(next + 1)),\n };\n const handleGoTo = () => {\n if (slider && slider.current && level > 1) {\n slider.current.slickNext()\n }\n }\n\n // useEffect(() => {\n // const delay = setTimeout(() => handleGoTo(), 8000);\n // return () => clearTimeout(delay);\n // }, []);\n\n\n const handleStart = () => {\n if (selected == level) {\n nextSlide();\n }\n else {\n return null;\n }\n }\n\n type TRecap = {\n text: string;\n };\n const recaps: TRecap[] = [\n { text: t`Placeholder text for slide recap.` },\n { text: t`Placeholder text for slide recap` },\n { text: t`Placeholder text for slide recap` },\n { text: t`Placeholder text for slide recap` },\n ]\n\n const dismissRecap = () => {\n setShowRecap(false);\n setSelector(true);\n stopVoiceover();\n }\n return (\n \n
\n {level > 1 ?\n \n \n \n \n {t`LEVEL COMPLETE!`}\n \n \n : null}\n { showRecap ?\n \n

{t`Level Recap`}

\n
\n\n\n

{recap}

\n \n
\n : null}\n\n { selector ?\n \n

{t`LEVEL SELECTOR`}

\n
\n\n \n = 1} complete={level > 1} selected={level == 1}>\n {t`WELCOME TO RED TOWN`}\n \n \n \n \n \n \n \n = 2} complete={level > 2} selected={level == 2}>\n {t`MORNING RUSH`}\n \n \n \n \n \n \n \n = 3} complete={level > 3} selected={level == 3}>\n {t`GOING AUTOMATIC`}\n \n \n \n \n \n \n \n = 4} complete={level > 4} selected={level == 4}>\n {t`THE END`}\n \n \n \n \n \n \n \n \n
\n \n
\n
\n : null}\n
);\n};\nconst Levels = styled(motion.div)`\n position: relative;\n width: 100%;\n padding-top: 20%;\n hr {\n margin-bottom: 0 !important;\n }\n h2 {\n font-size: 24px;\n @media ${breakpoint.mobileL}{\n font-size: 2rem;\n }\n }\n @media ${breakpoint.laptop}{\n padding-top: 0;\n hr {\n margin-bottom: 15px;\n }\n }\n`;\n\nconst RecapPopup = styled.div`\n width: 100%;\n display: block;\n position: relative;\n h3, p { color: #6400AA }\n hr { border-top: solid 2px; border-color: #6400aa !important}\n padding: 2rem 1rem;\n background-color: #ffffff;\n max-width: 400px;\n border-radius: 10px;\n box-shadow: 0 15px 30px rgba(0,0,0,0.2);\n text-align: center;\n p { text-align: justify; font-size: 18px; line-height: 1.2}\n`;\n\n\nconst TownWrapper = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-position: center;\n background-size: cover;\n background-repeat: no-repeat;\n background-image: url('${lang === 'cy' ? town_scene_welsh : town_scene}');\n z-index: 998;\n display: flex;\n align-items: center;\n justify-content:center;\n .level-overlay {\n position: absolute;\n left: 0;\n right: 0;\n bottom: 0;\n top: 0;\n background-color: rgba(0,0,0,0.5)\n }\n hr {\n display: block;\n margin: 15px auto;\n width: 100%;\n max-width 300px;\n border-color: #ffffff;\n opacity: 0.7;\n }\n`;\nconst StyledSlider = styled(Slider)`\n width: calc(100% + 30px);\n display: block;\n margin: 10px -15px;\n .slick-slide {\n cursor: pointer;\n &:hover {\n opacity:0.8;\n }\n }\n .slick-active {\n opacity: 1;\n &:hover {\n opacity:0.95;\n }\n }\n .slick-next, .slick-prev {\n height: 45px;\n width: 45px;\n }\n .slick-prev {\n left: 0;\n z-index: 998\n }\n .slick-next {\n right: 0;\n }\n .slick-next:before, .slick-prev:before {\n font-size: 44px;\n height: 4\n }\n`;\n\nconst Banner = styled.div`\n position: fixed;\n top: 0;\n right: 0;\n left: 0;\n bottom:0;\n user-select: none;\n pointer-events: none;\n z-index: 999;\n overflow: hidden;\n h1 {\n transform-origin: center;\n width: 100%;\n text-align: center;\n font-size: 60px;\n font-family: 'BT Font Extra Bold';\n z-index: 999;\n }\n display: flex;\n align-items: center;\n\n`;\n\nconst Top = styled(motion.div)`\n height: 50%;\n position: absolute;\n top: 0;\n left: 0;\n width: 100%;\n transform-origin: top;\n background-color: #6400aa;\n`;\nconst Bottom = styled(motion.div)`\n height: 50%;\n position: absolute;\n bottom: 0;\n left: 0;\n width: 100%;\n background-color: #6400aa;\n transform-origin: bottom;\n`;\n\n\nconst LevelHeader = styled.h5`\n text-transform: uppercase;\n font-family: 'BT Font Extra Bold';\n letter-spacing: 0.05em;\n font-size: 14px;\n text-align: center;\n margin-bottom: 0.75rem;\n @media ${breakpoint.laptop}{\n margin-bottom: 1.5rem;\n }\n`;\nconst LevelImg = styled.img`\n width: 100%;\n max-width: 120px;\n display: block;\n margin: 0 auto;\n @media ${breakpoint.mobileL}{\n max-width: none;\n }\n\n`;\nconst LevelComplete = styled.div`\n position: absolute;\n bottom: 0;\n width: 70px;\n height: 70px;\n left: calc(50% - 35px);\n border-radius: 35px;\n border: solid #ffffff 4px;\n background-color: #FFE202;\n box-shadow: 0 4px 8px rgba(0,0,0,0.25);\n font-size: 32px !important;\n text-align: center;\n padding: 10px 10px;\n`;\ninterface LevelProps {\n unlocked: boolean;\n complete: boolean;\n selected: boolean;\n}\nconst Level = styled.div`\n display: block;\n margin: 15px auto;\n width: 180px;\n position:relative;\n ${LevelImg} {\n width: 180px;\n ${(props) => props.unlocked ? '' : 'filter: grayscale(100%); opacity: 0.75 !important;'}\n }\n ${LevelComplete} {\n ${(props) => props.complete ? 'display: block;' : 'display: none;'}\n }\n`;\n\nconst LevelImgWrap = styled.div`\n\n`;\n\n\nexport default LevelSelector;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport { TrafficData } from '../..';\nimport { t } from 'ttag';\nimport styled from 'styled-components';\nimport Slider from \"react-slick\";\n// Import css files\nimport \"slick-carousel/slick/slick.css\";\nimport \"slick-carousel/slick/slick-theme.css\";\nimport placeholder from '../../assets/levels/level-placeholder.png';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { faCheck } from '@fortawesome/free-solid-svg-icons';\nimport LevelSelector from '../../components/interactive/levels/LevelSelector';\n\nconst LevelOne: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n\n return (\n \n \n \n );\n};\n\n\n\n\nexport default LevelOne;\n","import React, { useEffect, useState } from 'react';\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport useWindowDimensions from '../../../../../hooks/window';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport EngineerShahid from '../../characters/EngineerShahid';\nimport DialogueOverlay from '../../components/DialogueOverlay';\nimport Scene from '../../components/interactive/Scene';\nimport { TCar } from '../../components/interactive/scene/Road';\n\nconst NoLightsCrash: React.FC> = ({ data, nextSlide, defaultHeader }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const { width } = useWindowDimensions();\n const [help] = useState(t`Watch what happens when two cars try to cross the bridge at the same time!`);\n const [carData] = useState([\n { id: 'go-1', pos: 0, moving: true, direction: 'clockwise' },\n { id: 'gi-1', pos: width, moving: true, direction: 'anticlockwise' },\n ]);\n const [show, setShow] = useState(false);\n\n useEffect(() => {\n let t = setTimeout(() => data.playVoiceover(`10`), 0);\n\n return () => {\n clearTimeout(t);\n }\n }, []);\n\n const dialogue: DialogueData[] = [\n {\n character: EngineerShahid,\n text: t`Oh dear, yet another accident!\n As you can see, we are going to need to make some changes!`,\n textSpriteName: `11`,\n buttonText: t`Next`,\n },\n {\n character: EngineerShahid,\n text: t`Our lead engineer has suggested using two traffic lights to solve this problem.`,\n textSpriteName: `12`,\n buttonText: t`Next`,\n },\n {\n character: EngineerShahid,\n text: t`Using two traffic lights sounds a bit tricky! Let’s break this task down into smaller parts and start with just one traffic light for now.`,\n textSpriteName: `13`,\n buttonText: t`Next`,\n },\n {\n character: EngineerShahid,\n text: t`See if you can get both of the cars to cross the bridge without them crashing!`,\n textSpriteName: `14`,\n buttonText: t`Play`,\n buttonAction: nextSlide,\n },\n ];\n\n\n return (\n \n setTimeout(() => setShow(true), 2000) }}\n >\n <>\n {show ? : null}\n \n \n \n );\n}\n\nexport default NoLightsCrash;\n","import { motion } from 'framer-motion';\nimport React, { useContext, useEffect } from 'react';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport sfx from '../../../../../../services/sounds';\nimport VoiceoverContext from '../../../../../misc/voiceover-context';\nimport VolumeContext from '../../../../../misc/volume-context';\nimport crash_img from '../../../assets/car/crash.png';\n\nconst CrashModal: React.FC<{ onClick: () => void }> = ({ onClick }) => {\n const { volume } = useContext(VolumeContext);\n const { playVoiceover } = useContext(VoiceoverContext);\n useEffect(() => {\n if (volume) sfx.crash.play()\n let t = setTimeout(() => playVoiceover('21'), 1000);\n return () => clearTimeout(t);\n }, []);\n return (\n \n \n
\n

{t`Crash Reported`}

\n \n
\n

{t`Press anywhere to continue`}

\n
\n
\n\n );\n};\n\nconst CrashPopUp = styled.div`\n display: flex;\n align-items: center;\n padding-top: 75px;\n background-color: rgba(0,0,0,0.2);\n position: fixed;\n z-index: 999;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n justify-content: center;\n .island {\n background-color: #C2006A !important;\n max-width: 300px;\n\n }\n h4 {\n background-color: #FFFFFF;\n text-align: center;\n padding: 8px 16px;\n color: #E5007D;\n border-radius: 3px;\n text-transform: uppercase;\n font-family: 'BT Font Extra Bold';\n letter-spacing: 0.07em;\n }\n img {\n width: 80%;\n display: block;\n margin: 0 auto;\n }\n`;\nexport default CrashModal;\n","import { motion } from 'framer-motion';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { Button } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport VoiceoverContext from '../../../../misc/voiceover-context';\nimport { isIE } from 'react-device-detect';\n\n\ninterface TutorialProps {\n tutorialShow: boolean;\n handleClose: () => void;\n backgroundColor?: string,\n slides: TTutorial[],\n subtitle?: string\n title?: string\n}\n\nexport type TTutorial = {\n text: string;\n image: string;\n textSpriteName?: string;\n};\n\nconst Tutorial: React.FC = ({ tutorialShow = false, title, subtitle, handleClose, backgroundColor, slides }) => {\n const [tutorialIndex, setTutorialIndex] = useState(null);\n const { playVoiceover } = useContext(VoiceoverContext);\n\n\n useEffect(() => {\n if (tutorialIndex !== null && typeof slides[tutorialIndex].textSpriteName !== 'undefined') {\n playVoiceover(slides[tutorialIndex].textSpriteName as string)\n }\n }, [tutorialIndex]);\n\n useEffect(() => {\n if (slides && tutorialShow && tutorialIndex === null) {\n setTutorialIndex(0);\n }\n }, [slides, tutorialShow])\n\n if (tutorialIndex === null) {\n return null;\n }\n\n return (\n \n \n
{subtitle ? subtitle : t`TRAINING GAME`}
\n

{title ? title : t`HOW TO PLAY`}

\n
\n \n -1 ? () => setTutorialIndex(tutorialIndex - 1) : undefined}\n >\n \n \n {slides ? slides.map((slide, index) => (\n \n \n

{slide.text}

\n
\n )) : null}\n = slides.length}\n onClick={tutorialIndex + 1 < slides.length ? () => setTutorialIndex(tutorialIndex + 1) : undefined}\n >\n \n \n
\n {tutorialIndex < slides.length - 1 ? (\n \n \n \n ) : (\n \n )}\n \n
\n );\n};\ninterface SlideProps {\n show: boolean;\n}\nconst TutorialSlide = styled.div`\n ${(props) => props.show ? 'display: block;' : 'display: none;'}\n`;\n\ninterface ArrowProps {\n left: boolean;\n end: boolean;\n}\nconst SlideArrow = styled.button`\n ${(props) => (props.left ? 'left: 5px;' : 'right: 5px;')}\n position: absolute;\n top: calc(50% - 25px);\n background-color: #ffffff;\n padding: 10px;\n height: 50px;\n width: 50px;\n border-radius: 25px;\n border: 0 !important;\n ${(props) => (props.end ? 'opacity: 0.3;' : null)}\n`;\n\nconst SlideImage = styled.img`\n height: 120px;\n width: 120px;\n margin: 0 auto;\n border-radius: 5px;\n`;\n\nconst TutorialSlides = styled.div`\n width: 100%;\n position: relative;\n margin-bottom: 10px;\n`;\n\nconst TutorialProgress = styled.div`\n position: relative;\n width: 100%;\n height: 10px;\n max-width: 100px;\n border-radius: 5px;\n display: block;\n margin: 16px auto 32px auto;\n background-color: rgba(0,0,0,0.3);\n overflow: hidden;\n`;\ninterface ProgressProps {\n progress: number;\n}\nconst Progress = styled.div`\n background-color: #ffffff;\n transition: width 0.3s ease-in-out;\n width: ${(props) => props.progress}%;\n top: 0;\n bottom: 0;\n left: 0;\n position: absolute;\n`;\n\ninterface CardProps {\n backgroundColor?: string\n}\n\nconst TutorialCard = styled(motion.div) `\n background-color: ${(props) => props.backgroundColor ? props.backgroundColor : '#e60050'};\n padding: 1rem 1.5rem;\n text-align: center;\n width: 100%;\n max-width: 350px;\n transition: height 0.5s ease-in-out;\n box-shadow: 0 10px 25px rgba(0,0,0,0.25);\n h5 {\n text-transform: uppercase;\n letter-spacing: 0.05em;\n font-size: 0.875rem;\n font-family: 'BT Font Extra Bold';\n }\n p {\n line-height: 20px;\n margin-bottom: 0;\n }\n`;\n\ninterface WrapperProps {\n tutorialShow: boolean;\n}\nconst Wrapper = styled(motion.div) `\n position: fixed;\n display: none;\n ${(props) => (props.tutorialShow ? 'display: flex;' : null)}\n top: 0;\n right: 0;\n bottom: 0;\n left: 0;\n background-color: ${!isIE ? 'rgba(0, 0, 0, 0.6)' : 'transparent'};\n align-items: center;\n justify-content: center;\n z-index: 999;\n padding-top: 75px;\n p {\n font-size: 16px;\n margin-bottom: 5px;\n }\n`;\n\nexport default Tutorial;\n","import { faTimes } from '@fortawesome/free-solid-svg-icons';\nimport { FontAwesomeIcon } from '@fortawesome/react-fontawesome';\nimport { motion } from 'framer-motion';\nimport React, { useState } from 'react';\nimport { Button } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport TrafficLight, { TTrafficLight } from './TrafficLight';\n\ntype TrafficLightEditorStaticProps = {\n onAnswerSubmit: (light: TTrafficLight) => void,\n onClose: () => void;\n}\n\nconst TrafficLightEditorStatic: React.FC = ({ onAnswerSubmit, onClose }) => {\n const [light, setLight] = useState({});\n\n\n const handleLightDataChange = (data: TTrafficLight) => {\n setLight(data);\n }\n\n return (\n \n \n \n \n \n \n\n {\n \n\n }\n \n\n \n \n \n );\n}\nconst CloseButton = styled.div`\n position: absolute;\n top: 5px;\n right: 5px;\n border-radius: 15px;\n height: 30px;\n width: 30px;\n background-color: #dddddd;\n svg { font-size: 14px !important;}\n text-align: center;\n cursor: pointer;\n &:hover {\n opacity: 0.8\n }\n`;\n\nconst TrafficWrap = styled.div`\n width: 50px;\n display: block;\n margin: 10px auto;\n\n`;\n\nconst Editor = styled.div`\n width: 140px;\n height: 260px;\n background-color: #ffffff;\n border-radius: 5px;\n box-shadow: 0 10px 25px rgba(0,0,0,0.25);\n text-align: center;\n padding-bottom: 20px;\n position: relative;\n\n`;\n\nconst OverlayContainer = styled(motion.div)`\n display: flex;\n align-items: center;\n justify-content: center;\n padding-top: 75px;\n background-color: rgba(0,0,0,0.07);\n position: fixed;\n z-index: 998;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n`;\nexport default TrafficLightEditorStatic;\n","import React, { useEffect, useState } from 'react';\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport useWindowDimensions from '../../../../../hooks/window';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport howto1 from '../../assets/lights/howto/howto1.png';\nimport howto2 from '../../assets/lights/howto/howto2.png';\nimport howto3 from '../../assets/lights/howto/howto3.png';\nimport howto4 from '../../assets/lights/howto/howto4.png';\nimport howto5 from '../../assets/lights/howto/howto5.png';\nimport EngineerShahid from '../../characters/EngineerShahid';\nimport DialogueOverlay from '../../components/DialogueOverlay';\nimport Scene from '../../components/interactive/Scene';\nimport CrashModal from '../../components/interactive/scene/CrashModal';\nimport { TCar, TRoadLight } from '../../components/interactive/scene/Road';\nimport Tutorial, { TTutorial } from '../../components/interactive/Tutorial';\nimport { TTrafficLight } from '../../components/traffic-lights/TrafficLight';\nimport TrafficLightEditorStatic from '../../components/traffic-lights/TrafficLightEditorStatic';\n\n\nconst NoLightsGame: React.FC> = ({ nextSlide, previousSlide, defaultHeader, gotoSlide, currentIndex, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const { width } = useWindowDimensions();\n const [help] = useState(t`Use the traffic light to get BOTH cars across the bridge safely.`);\n const [carData] = useState([\n { id: 'go-1', pos: 0, moving: true, direction: 'clockwise', onComplete: () => setShow(true) },\n {\n id: 'gi-1', pos: width, moving: true, direction: 'anticlockwise', onComplete: () => {\n data.playVoiceover(`37`);\n console.log('here?')\n }\n },\n\n ]);\n const [show, setShow] = useState(false);\n const [tutorialShow, setTutorialShow] = useState(true);\n const [showEditor, setShowEditor] = useState(false);\n const [showCrash, setShowCrash] = useState(false);\n\n\n const dialogue: DialogueData[] = [\n {\n character: EngineerShahid,\n text: t`That worked! The traffic light helped you control the flow of traffic.`,\n textSpriteName: `116`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n const [t1, setT1] = useState({});\n\n const [trafficLight1, setTrafficLight1] = useState({\n sequence: [\n ],\n highlight: true,\n pos: 1280 - 300,\n direction: 'clockwise',\n onClick: () => setShowEditor(true),\n\n });\n\n useEffect(() => {\n setTrafficLight1({\n ...trafficLight1,\n sequence: [\n { ...t1, duration: 1000, }\n ]\n })\n }, [t1])\n\n const resetSlide = () => {\n previousSlide();\n setTimeout(() => gotoSlide(currentIndex), 0);\n }\n\n const slides: TTutorial[] = [\n { text: t`We use traffic lights to tell drivers when it's safe to stop or go.`, image: howto1, textSpriteName: `15` },\n { text: t`Select the traffic light to open up its control panel and start programming the lights.`, image: howto2, textSpriteName: `16` },\n { text: t`When a red light is shown, cars will come to a stop.`, image: howto3, textSpriteName: `17` },\n { text: t`Cars will go when a Green or Amber light is shown.`, image: howto4, textSpriteName: `18` },\n { text: t`Select any of the three lights to turn them on or off, then press Change.`, image: howto5, textSpriteName: `19` },\n { text: t`Press Run Test to see if the cars cross the bridge safely!`, image: howto5, textSpriteName: `20` },\n ]\n\n const [paused, setPaused] = useState(false);\n const [resetGame, setResetGame] = useState(false);\n return (\n \n {\n setPaused(true);\n setShowCrash(true)\n },\n paused: paused,\n setPause: setPaused,\n gameReset: resetGame\n }}\n >\n <>\n {show ? : null}\n {showCrash ? {\n setResetGame(!resetGame)\n setShowCrash(false)\n setPaused(true);\n }}> : null}\n {showEditor ?\n setShowEditor(false)} onAnswerSubmit={(light) => {\n setShowEditor(false);\n setT1(light);\n // reset game\n // but cant reset game??? then we have same problem\n // resetSlide();\n // reset game\n // but cant reset game??? then we have same problem\n // resetSlide();\n }}>\n : null}\n {/* GAME TO GET THE ONE GREEN CAR THROUGH THE LIGHTS (TASK1) */}\n {\n setTutorialShow(false);\n data.playVoiceover('118');\n }} slides={slides}>\n\n \n \n \n \n );\n}\n\nexport default NoLightsGame;\n","import { motion } from 'framer-motion';\nimport React, { useState } from 'react';\nimport { Button } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport alert_warning from '../../assets/lights/alert-warning.svg';\nimport cloud from '../../assets/scene/cloud.svg';\nimport town_scene from '../../assets/scene/town_scene.svg';\nimport town_scene_welsh from '../../assets/scene/town_scene-welsh.svg';\nimport EngineerShahid from '../../characters/EngineerShahid';\nimport DialogueOverlay from '../../components/DialogueOverlay';\nimport Cookies from 'js-cookie';\n\nconst lang = Cookies.get('bfg_lang');\n\nconst TownIntro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [nameShow, setNameShow] = useState(false);\n const [show, setShow] = useState(true);\n const [alert, setAlert] = useState(false);\n const [town, setTown] = useState(true);\n\n const [nextDialogue, setNextDialogue] = useState(null);\n\n\n const next = data.name ? (\n \n ) : null;\n\n const dialogue: DialogueData[] = [\n {\n character: EngineerShahid,\n text: t`Welcome, it's lovely to have you here! I'm Shahid, the head of traffic control.`,\n textSpriteName: `1`,\n buttonText: t`Next`,\n },\n {\n character: EngineerShahid,\n text: t`Our towns are expanding and we are going to need your help to get the roads up to scratch.`,\n textSpriteName: `2`,\n buttonText: t`Next`,\n },\n {\n character: EngineerShahid,\n text: t`Before we get you onboard, I’m going to need your nickname!`,\n textSpriteName: `3`,\n buttonText: t`Next`,\n buttonAction: () => {\n data.playVoiceover(`4`)\n setNameShow(true);\n }\n },\n {\n character: EngineerShahid,\n text: t`Perfect, ${data.name}. We’ve got some work to do! Now for your first task. Please select the bridge to have a closer look.`,\n textSpriteName: `5`,\n buttonText: t`Sure!`,\n buttonAction: () => setShow(false)\n },\n ];\n\n\n const handleAlertClick = () => {\n nextSlide()\n }\n\n return (\n \n\n \n {alert ?\n \n : null}\n\n \n \n \n \n \n \n \n \n \n \n\n \n\n\n {show ? : null}\n {nameShow ? \n \n \n \n

{t`What is your nickname?`}

\n \n data.setName(e.target.value)}\n />\n {next}\n
\n
: null}\n
\n );\n};\n\n// Clouds\n\nconst Clouds = styled.div`\n height: 100%;\n width: 100%;\n overflow: hidden;\n user-select: none;\n pointer-events: none;\n position: fixed;\n z-index: 999;\n img {\n width: 75px;\n position: absolute;\n left: -75px;\n user-select: none;\n pointer-events: none;\n z-index: 998;\n opacity: 0.5;\n &.cloud-half-hack {\n left: 40%;\n }\n }\n`;\n\n\nconst Alert = styled(motion.img)`\n cursor: pointer;\n height: 100px;\n width: 100px;\n &:hover{\n opacity: 0.8;\n }\n`;\n\n\nconst TownWrapper = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-position: center;\n background-size: cover;\n background-repeat: no-repeat;\n background-image: url('${lang === 'cy' ? town_scene_welsh : town_scene}');\n z-index: 998;\n display: flex;\n align-items: center;\n justify-content:center;\n`;\n\n\nconst ButtonWrapper = styled.div`\n min-height: 60px;\n .btn-3d {\n background-color: #6400aa;\n color: #ffffff !important;\n &:hover, &:active, &:focus {\n background-color: #540e85 !important;\n color: #DDDDDD !important;\n }\n }\n`;\nconst Character = styled.img`\n position: absolute;\n z-index: -1;\n top: -70px;\n left: 15px;\n width: 50px;\n`;\n\nconst Content = styled.div`\n position:relative;\n width: 100%;\n display: block;\n margin: 0 auto;\n padding: 1rem;\n background-color: #ffffff;\n @media (min-width: 576px){\n border-radius: 5px;\n }\n min-height: 136px;\n`;\n\n\nconst Layout = styled.div`\n width: 100%;\n position: fixed;\n bottom: 0;\n left: 0;\n z-index: 999;\n .island {\n background-color: #EAF4F7;\n padding: 6px 12px !important;\n width: 100%;\n margin: 0 0 10px !important;\n font-size: 18px;\n line-height: 24px;\n min-height: auto;\n box-shadow: none;\n &::after{\n content: '';\n position: absolute;\n left: 8px;\n top: -12px;\n width: 0;\n height: 0;\n border-left: 10px solid transparent;\n border-right: 10px solid transparent;\n border-bottom: 15px solid #EAF4F7;\n clear: both;\n }\n }\n .island__author--dialogue {\n font-size: 12px;\n top: -55px;\n left: 50px;\n padding: 2px 8px;\n letter-spacing: 0.05em;\n border-radius: 5px;\n }\n @media (min-width: 576px){\n bottom: 10px;\n .island {\n border-radius: 5px !important;\n margin-bottom: 10px !important;\n }\n ${Content} {\n max-width: 400px;\n }\n }\n @media (min-width: 1200px){\n .island {\n font-size: 20px;\n }\n ${Content} {\n max-width: 500px;\n }\n }\n`;\n\nexport default TownIntro;\n","import IntroScene from './IntroScene';\nimport LevelOne from './LevelOne';\nimport NoLightsCrash from './NoLightsCrash';\nimport NoLightsGame from './NoLightsGame';\nimport TownIntro from './TownIntro';\n\nexport default [\n LevelOne,\n TownIntro,\n IntroScene,\n NoLightsCrash,\n NoLightsGame\n];\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport WordDiscovery from '../../../../general/WordDiscovery';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport town_scene from '../../assets/scene/town_scene.svg';\nimport EngineerShahid from '../../characters/EngineerShahid';\nimport DialogueOverlay from '../../components/DialogueOverlay';\nimport Cookies from 'js-cookie';\nimport town_scene_welsh from '../../assets/scene/town_scene-welsh.svg';\n\nconst lang = Cookies.get('bfg_lang');\n\nconst Definition: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n const [nextDialogue, setNextDialogue] = useState(null);\n\n\n const dialogue: DialogueData[] = [\n {\n character: EngineerShahid,\n text: t`Breaking larger problems down into smaller parts is called decomposition.`,\n textSpriteName: `41`,\n buttonText: t`Next`,\n },\n {\n character: EngineerShahid,\n text: t`We’ve worked hard to solve the larger problem of too many cars crashing on the bridge. We did this by breaking down the problem into smaller parts and working with one traffic light at a time.`,\n textSpriteName: `42`,\n buttonText: t`Next`,\n },\n {\n character: EngineerShahid,\n text: t`Looking at each part helped us understand the problem more clearly and allowed us to think carefully about the solution.`,\n textSpriteName: `43`,\n buttonText: t`Next`,\n },\n {\n character: EngineerShahid,\n text: t`Decomposition is really important for solving tricky problems like this!`,\n textSpriteName: `44`,\n buttonText: t`Next`,\n buttonAction: () => {\n let a = setTimeout(() => data.playVoiceover('45'), 400)\n let b = setTimeout(() => data.playVoiceover('46'), 2000)\n setShow(true);\n\n setTimeouts([\n a, b,\n ])\n }\n },\n ];\n\n const handleClose = () => {\n nextSlide()\n }\n\n const [timeouts, setTimeouts] = useState([])\n\n useEffect(() => {\n return () => {\n timeouts?.forEach((t) => clearTimeout(t))\n }\n }, [timeouts]);\n\n return (\n \n \n \n \n \n\n \n );\n}\n\nconst TownWrapper = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-position: center;\n background-size: cover;\n background-repeat: no-repeat;\n background-image: url('${lang === 'cy' ? town_scene_welsh : town_scene}');\n z-index: 998;\n display: flex;\n align-items: center;\n justify-content:center;\n`;\n\nexport default Definition;\n","import React, { useState } from 'react';\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport useWindowDimensions from '../../../../../hooks/window';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport EngineerShahid from '../../characters/EngineerShahid';\nimport DialogueOverlay from '../../components/DialogueOverlay';\nimport Scene from '../../components/interactive/Scene';\nimport { TCar, TRoadLight } from '../../components/interactive/scene/Road';\n\nconst TouristProblem: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const { width } = useWindowDimensions();\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(true);\n const [show2, setShow2] = useState(false);\n\n const [carData, setCarData] = useState([\n { id: 'go-1', pos: 0, moving: true, direction: 'clockwise' },\n ]);\n\n const [nextDialogue, setNextDialogue] = useState(null);\n\n const dialogue: DialogueData[] = [\n {\n character: EngineerShahid,\n text: t`Thanks for your help with the traffic light earlier. Unfortunately, that’s not the end of our problems! Look what happens when there is a morning rush to get into Red Town. `,\n textSpriteName: `31`,\n buttonText: t`Watch`,\n buttonAction: () => {\n setShow(false);\n setCarData([\n { id: 'gi-1', pos: width, moving: true, direction: 'anticlockwise', loop: true },\n { id: 'gi-2', pos: width + 100, moving: true, direction: 'anticlockwise', loop: true },\n { id: 'gi-3', pos: width + 200, moving: true, direction: 'anticlockwise', loop: true },\n { id: 'gi-4', pos: width + 300, moving: true, direction: 'anticlockwise', loop: true },\n { id: 'gi-5', pos: width + 400, moving: true, direction: 'anticlockwise', loop: true },\n ])\n\n setTimeout(() => {\n setShow2(true);\n }, 5000);\n },\n },\n ];\n\n const dialogue2: DialogueData[] = [\n {\n character: EngineerShahid,\n text: t`The morning rush makes it impossible for cars to leave Red Town! Our lead engineer suggested we would need two traffic lights to solve the problem of making the bridge safer.`,\n textSpriteName: `32`,\n buttonText: t`Next`,\n },\n {\n character: EngineerShahid,\n text: t`Let’s try setting up another traffic light now.`,\n textSpriteName: `33`,\n buttonText: t`Play`,\n buttonAction: nextSlide\n },\n ];\n\n const trafficLight1: TRoadLight = {\n sequence: [\n { red: { enabled: true }, duration: 1000 },\n ],\n pos: width - 300, // TODO REMOVE THINGS LIKE THIS\n direction: 'clockwise'\n };\n\n\n return (\n \n \n {show ? : false}\n {show2 ? : false}\n\n\n \n \n );\n};\n\nexport default TouristProblem;\n","import Definition from \"./Definition\";\nimport LevelTwo from \"./LevelTwo\";\nimport TouristGame from \"./TouristGame\";\nimport TouristProblem from \"./TouristProblem\";\n\nexport default [\n LevelTwo,\n TouristProblem,\n TouristGame,\n Definition\n];\n","import React from 'react';\nimport \"slick-carousel/slick/slick-theme.css\";\n// Import css files\nimport \"slick-carousel/slick/slick.css\";\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport LevelSelector from '../../components/interactive/levels/LevelSelector';\n\nconst LevelTwo: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n\n const recap = t`You guided both cars safely across the bridge using a traffic light. This is one step towards solving the larger problem of making the road safer.`\n\n return (\n \n \n \n );\n};\n\n\n\n\nexport default LevelTwo;\n","import React, { useEffect, useState } from 'react';\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport useWindowDimensions from '../../../../../hooks/window';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport EngineerShahid from '../../characters/EngineerShahid';\nimport DialogueOverlay from '../../components/DialogueOverlay';\nimport Scene from '../../components/interactive/Scene';\nimport CrashModal from '../../components/interactive/scene/CrashModal';\nimport { TCar, TRoadLight } from '../../components/interactive/scene/Road';\nimport { TTrafficLight } from '../../components/traffic-lights/TrafficLight';\nimport TrafficLightEditorStatic from '../../components/traffic-lights/TrafficLightEditorStatic';\n\nconst TouristGame: React.FC> = ({ data, nextSlide, defaultHeader }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const { width } = useWindowDimensions();\n const [help] = useState(t`Get the red car safely to the other side of the bridge.`);\n const [carData] = useState([\n { id: 'go-1', pos: 0, moving: true, direction: 'clockwise', onComplete: () => setTimeout(() => setShow(true), 1000) },\n { id: 'gi-1', pos: width, moving: true, direction: 'anticlockwise', loop: true },\n { id: 'gi-2', pos: width + 100, moving: true, direction: 'anticlockwise', loop: true },\n { id: 'gi-3', pos: width + 200, moving: true, direction: 'anticlockwise', loop: true },\n { id: 'gi-4', pos: width + 300, moving: true, direction: 'anticlockwise', loop: true },\n { id: 'gi-5', pos: width + 400, moving: true, direction: 'anticlockwise', loop: true },\n\n ]);\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: EngineerShahid,\n text: t`Excellent work. You managed to guide the car safely across the bridge and out of Red Town!`,\n textSpriteName: `35`,\n buttonText: t`Next`,\n },\n {\n character: EngineerShahid,\n text: t`Well done for breaking down the problem into smaller parts by looking at each traffic light individually.`,\n textSpriteName: `36`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n useEffect(() => {\n let t = setTimeout(() => data.playVoiceover(`34`), 0);\n\n return () => {\n clearTimeout(t);\n }\n }, []);\n\n const [showCrash, setShowCrash] = useState(false);\n const [paused, setPaused] = useState(false);\n const [resetGame, setResetGame] = useState(false);\n\n\n const [t1, setT1] = useState({\n red: { enabled: true }\n });\n const [showEditor1, setShowEditor1] = useState(false);\n const [trafficLight1, setTrafficLight1] = useState({\n sequence: [\n ],\n highlight: true,\n pos: 1280 - 300,\n direction: 'clockwise',\n onClick: () => setShowEditor1(true),\n\n });\n\n useEffect(() => {\n console.log('t1 change', t1)\n setTrafficLight1({\n ...trafficLight1,\n sequence: [\n { ...t1, duration: 1000 }\n ]\n })\n }, [t1])\n\n const [t2, setT2] = useState({});\n const [showEditor2, setShowEditor2] = useState(false);\n\n const [trafficLight2, setTrafficLight2] = useState({\n sequence: [\n ],\n highlight: true,\n pos: 1280 - 300,\n direction: 'anticlockwise',\n onClick: () => setShowEditor2(true),\n\n });\n\n useEffect(() => {\n console.log('t2 change', t2)\n setTrafficLight2({\n ...trafficLight2,\n sequence: [\n { ...t2, duration: 1000 }\n ]\n })\n }, [t2])\n\n return (\n \n {\n setPaused(true);\n setShowCrash(true)\n },\n paused: paused,\n setPause: setPaused,\n gameReset: resetGame\n\n }}// , setResetAction: setResetAction\n >\n <>\n {show ? : null}\n {showCrash ? {\n setResetGame(!resetGame)\n setShowCrash(false)\n setPaused(true);\n // setPaused(false); NEED TO RESET AS WELL\n }}> : null}\n {showEditor1 ?\n\n setShowEditor1(false)} onAnswerSubmit={(light) => {\n setT1(light);\n setShowEditor1(false);\n }}>\n : null}\n {showEditor2 ?\n\n setShowEditor2(false)} onAnswerSubmit={(light) => {\n setT2(light);\n setShowEditor2(false);\n }}>\n : null}\n {/* GAME TO GET THE ONE GREEN CAR THROUGH THE LIGHTS WITH HEAVY ONCOMING TRAFFIC (TASK2) */}\n \n \n \n );\n}\n\nexport default TouristGame;\n","import { TCharacter } from '../../../general/Character';\nimport image from '../assets/characters/engineer-2.png';\nimport { t } from 'ttag';\n\nconst EngineerAisha: TCharacter = {\n characterName: t`Engineer Aisha`,\n characterImage: image,\n characterWidth: 90,\n characterHeight: 180,\n};\n\nexport default EngineerAisha;\n","import { motion } from 'framer-motion';\nimport React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport ModalOverlay from '../../../../general/ModalOverlay';\nimport MultipleChoice, { TMultiChoiceQuestion } from '../../../../interactive/quiz/multi-choice/MultiChoice';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport device from '../../assets/misc/sequencer-3000.png';\nimport town_scene from '../../assets/scene/town_scene.svg';\nimport town_scene_welsh from '../../assets/scene/town_scene-welsh.svg';\nimport EngineerAisha from '../../characters/EngineerAisha';\nimport EngineerShahid from '../../characters/EngineerShahid';\nimport DialogueOverlay from '../../components/DialogueOverlay';\nimport Cookies from 'js-cookie';\n\nconst lang = Cookies.get('bfg_lang');\n\nconst DecompositionQuestion: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n const [questionShow, setQuestionShow] = useState(true);\n const [nextDialogue, setNextDialogue] = useState(null);\n\n const gameData: TMultiChoiceQuestion[] = [\n {\n question: t`What is decomposition?`,\n answers: [\n { text: t`Programming a traffic light.`, correct: false, },\n { text: t`Breaking down a task into smaller, more manageable parts.`, correct: true },\n { text: t`Changing the position of something.`, correct: false },\n ],\n },\n ];\n\n const dialogue: DialogueData[] = [\n {\n character: EngineerShahid,\n text: t`Although we put in the traffic lights, the Mayor doesn't want us controlling them ourselves all day!`,\n buttonText: t`Next`,\n },\n {\n character: EngineerShahid,\n text: t`We need to make the lights work automatically. I’m going to hand over to our lead engineer who can help you with this.`,\n textSpriteName: `55`,\n buttonText: t`Next`,\n },\n {\n character: EngineerAisha,\n text: t`Hi there, I’m Aisha. I’m in charge of programming the traffic lights correctly so that they manage traffic safely.`,\n textSpriteName: `56`,\n buttonText: t`Next`,\n },\n {\n character: EngineerAisha,\n text: t`I hear you’ve been learning about decomposition. We can use decomposition to break down the problem of making the lights work automatically.`,\n textSpriteName: `57`,\n buttonText: t`Next`,\n },\n {\n character: EngineerAisha,\n text: t`I’ll give you my Sequencer 3000, it’s a modified tablet that can help you to program the lights.`,\n textSpriteName: `58`,\n buttonText: t`Next`,\n buttonAction: () => setShow(true)\n },\n ];\n\n const handleModalClose = () => {\n nextSlide();\n }\n\n useEffect(() => {\n data.playVoiceover('48');\n let a = setTimeout(() => data.playVoiceover('115'), 1500);\n setTimeouts([a]);\n return () => {\n data.stopVoiceover();\n }\n }, []);\n\n const [timeouts, setTimeouts] = useState([])\n\n useEffect(() => {\n return () => {\n timeouts?.forEach((t) => clearTimeout(t))\n }\n }, [timeouts]);\n\n\n return (\n \n \n \n\n {questionShow ?\n \n \n \n \n {t`Let’s check if you were paying attention...`}\n {\n data.stopVoiceover();\n }}\n onCorrectAnswer={() => {\n data.stopVoiceover();\n data.playVoiceover('52')\n\n let b = setTimeout(() => data.playVoiceover('46'), 2000)\n setTimeouts([\n ...timeouts,\n b\n ])\n }}\n onGameComplete={() => {\n timeouts?.forEach((t) => clearTimeout(t))\n\n setQuestionShow(false)\n data.stopVoiceover();\n data.playVoiceover('54')\n }}\n >\n \n \n \n : null}\n \n
\n \n

{t`DEVICE RECEIVED`}

\n

{t`Click to continue`}

\n\n
\n\n
\n
\n
\n );\n}\n\n\nconst TownWrapper = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-position: center;\n background-size: cover;\n background-repeat: no-repeat;\n background-image: url('${lang === 'cy' ? town_scene_welsh : town_scene}');\n z-index: 998;\n display: flex;\n align-items: center;\n justify-content:center;\n`;\n\nconst Character = styled.img`\n position: absolute;\n z-index: -1;\n top: -70px;\n left: 15px;\n width: 50px;\n`;\n\nconst Content = styled.div`\n position:relative;\n width: 100%;\n display: block;\n margin: 0 auto;\n padding: 1rem;\n background-color: #ffffff;\n @media (min-width: 576px){\n border-radius: 5px;\n }\n min-height: 136px;\n`;\n\n\nconst Layout = styled.div`\n width: 100%;\n position: fixed;\n bottom: 0;\n left: 0;\n z-index: 999;\n .island {\n background-color: #EAF4F7;\n padding: 6px 12px !important;\n width: 100%;\n margin: 0 0 10px !important;\n font-size: 18px;\n line-height: 24px;\n min-height: auto;\n box-shadow: none;\n &::after{\n content: '';\n position: absolute;\n left: 8px;\n top: -12px;\n width: 0;\n height: 0;\n border-left: 10px solid transparent;\n border-right: 10px solid transparent;\n border-bottom: 15px solid #EAF4F7;\n clear: both;\n }\n }\n .island__author--dialogue {\n font-size: 12px;\n top: -55px;\n left: 50px;\n padding: 2px 8px;\n letter-spacing: 0.05em;\n border-radius: 5px;\n }\n @media (min-width: 576px){\n bottom: 10px;\n .island {\n border-radius: 5px !important;\n margin-bottom: 10px !important;\n }\n ${Content} {\n max-width: 400px;\n }\n }\n @media (min-width: 1200px){\n .island {\n font-size: 20px;\n }\n ${Content} {\n max-width: 500px;\n }\n }\n`;\nexport default DecompositionQuestion;\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport WordDiscovery from '../../../../general/WordDiscovery';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport town_scene from '../../assets/scene/town_scene.svg';\nimport EngineerShahid from '../../characters/EngineerShahid';\nimport DialogueOverlay from '../../components/DialogueOverlay';\nimport Cookies from 'js-cookie';\nimport town_scene_welsh from '../../assets/scene/town_scene-welsh.svg';\n\nconst lang = Cookies.get('bfg_lang');\n\nconst Definition: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n const [nextDialogue, setNextDialogue] = useState(null);\n const [defTimer, setDefTimer] = useState();\n\n const dialogue: DialogueData[] = [\n {\n character: EngineerShahid,\n text: t`We just created an algorithm, which we used to program the traffic lights with the Sequencer 3000.`,\n textSpriteName: `93`,\n buttonText: t`Algorithm?`,\n },\n {\n character: EngineerShahid,\n text: t`An algorithm is a set of instructions or rules to get something done.`,\n textSpriteName: `94`,\n buttonText: t`Next`,\n },\n {\n character: EngineerShahid,\n text: t`We have created an algorithm that we used to program the computer to make the traffic lights run automatically!`,\n textSpriteName: `95`,\n buttonText: t`Next`,\n buttonAction: () => {\n setShow(true)\n let a = setTimeout(() => data.playVoiceover('45'), 400);\n let b = setTimeout(() => data.playVoiceover('96'), 2000);\n setTimeouts([\n a, b,\n ]);\n }\n },\n ];\n\n const handleClose = () => {\n data.stopVoiceover();\n nextSlide()\n }\n\n const [timeouts, setTimeouts] = useState()\n\n useEffect(() => {\n return () => {\n timeouts?.forEach((t) => clearTimeout(t))\n }\n }, [timeouts]);\n\n return (\n \n \n \n \n \n\n \n );\n}\n\nconst TownWrapper = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-position: center;\n background-size: cover;\n background-repeat: no-repeat;\n background-image: url('${lang === 'cy' ? town_scene_welsh : town_scene}');\n z-index: 998;\n display: flex;\n align-items: center;\n justify-content:center;\n`;\n\nexport default Definition;\n","import React from 'react';\nimport \"slick-carousel/slick/slick-theme.css\";\n// Import css files\nimport \"slick-carousel/slick/slick.css\";\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport LevelSelector from '../../components/interactive/levels/LevelSelector';\n\nconst LevelThree: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n\n const recap = t`You were able to guide the cars safely across the bridge. You did this by decomposing the problem and looking at each traffic light individually. This has made the road more safe, which was part of the larger problem the Mayor wanted us to solve.`\n\n return (\n \n \n \n );\n};\n\n\n\n\nexport default LevelThree;\n","import React from 'react';\nimport frame from '../assets/devices/phone-frame.svg';\nimport styled from 'styled-components';\nimport { game, size, breakpoint } from '../styles/junction';\n\ninterface IPhone {\n backgroundColor?: string;\n}\n\nconst Phone: React.FC = ({ children, backgroundColor = '#6400aa' }) => {\n return (\n \n \n {children}\n \n \n \n );\n};\n\ninterface PhoneContentProps {\n backgroundColor?: string;\n}\n\n\nconst PhoneContent = styled.div`\n position: relative;\n z-index: 2;\n height: 100%;\n width: 100%;\n padding-top: 179.5%;\n background: ${(props: PhoneContentProps) => props.backgroundColor};\n // padding: 5% 4% 9% 4%;\n border-radius:12vw;\n @media screen and (min-width: 500px) {\n border-radius: 54px;\n }\n overflow: hidden;\n`;\n\n\nconst PhoneBlock = styled.div`\n max-width: 300px;\n width: 90%;\n display: block;\n margin: 0 auto;\n\n @media ${breakpoint.mobileL}{\n max-width: 300px;\n ${PhoneContent}{\n border-radius: 54px;\n }\n }\n @media ${breakpoint.laptop}{\n max-width: 400px;\n ${PhoneContent}{\n border-radius: 64px;\n }\n }\n @media ${breakpoint.laptopL}{\n max-width: 440px;\n ${PhoneContent}{\n border-radius: 70px\n }\n }\n`;\n\n\nconst PhoneContentScroll = styled.div`\n height: 100%;\n width: 100%;\n overflow-y: scroll;\n -ms-overflow-style: none;\n position: absolute;\n top: 0;\n padding: 5%;\n`;\n\nconst PhoneFrame = styled.img`\n width: 100%;\n pointer-events: none;\n user-select: none;\n position: absolute;\n z-index: 3;\n top: 0;\n`;\n\nexport default Phone;\n","import React from 'react';\nimport styled from 'styled-components';\nimport { theme } from '../../styles/theme';\nimport TrafficLight, { TTrafficLight } from './TrafficLight';\n\ntype TrafficFrameProps = TTrafficLight & {\n isActive: boolean;\n onClick?: () => void;\n}\n\nconst TrafficFrame: React.FC = (props) => {\n const { isActive } = props;\n return (\n
\n \n \n \n
\n );\n};\n\nconst Wrapper = styled.div<{\n active: boolean\n}>`\n position: relative;\n height: 100%;\n width: 100%;\n margin: 0 auto;\n display: block;\n max-width: 30px;\n svg {width: 100%;}\n border: 2px solid transparent;\n border-radius: 5px;\n ${p => p.active ? 'background-color: ' + theme.bare_blue + '; box-shadow: 0 0 10px ' + theme.bare_blue + '; border-color: ' + theme.bare_blue + ';' : ''}\n`;\n\nexport default TrafficFrame;\n","import React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport edit_frame from '../../assets/misc/edit-frame.png';\nimport { ToggleWrapper } from '../interactive/sequence/TrafficSequence';\nimport TrafficFrame from './TrafficFrame';\nimport TrafficLight, { TTrafficLight } from './TrafficLight';\n\ntype TrafficLightEditorProps = {\n answers: Partial[],\n onCorrectAnswer: () => void,\n index?: number | null;\n updateCorrect: (correct: number) => void;\n}\n\nconst TrafficLightEditor: React.FC = ({ answers, onCorrectAnswer, index, updateCorrect }) => {\n const [lights, setLights] = useState(new Array(answers.length).fill({}));\n const [lightIndex, setLightIndex] = useState(0);\n\n useEffect(() => {\n let correct = 0;\n\n if (!answers || !lights) {\n return;\n }\n\n\n for (let i: number = 0; i < answers.length; i++) {\n if (\n (answers[i].red?.enabled ?? false) == lights[i].red?.enabled &&\n (answers[i].amber?.enabled ?? false) == lights[i].amber?.enabled &&\n (answers[i].green?.enabled ?? false) == lights[i].green?.enabled\n ) {\n correct++;\n updateCorrect(correct);\n }\n }\n\n if (correct === answers.length) {\n setLights(new Array(answers.length).fill({}));\n onCorrectAnswer();\n }\n }, [lights]);\n\n const handleLightDataChange = (data: TTrafficLight) => {\n if (lightIndex === null) {\n throw new Error('Index not set');\n }\n // console.log('new data', data);\n\n let newData = [...lights];\n newData[lightIndex] = data;\n setLights(newData);\n }\n\n return (\n <>\n {\n lights.map((light, i) => (\n <>\n { i === lightIndex ? : null}\n \n ))\n }\n \n {\n lights.map((light, i) => (\n \n { i === lightIndex ? : null}\n setLightIndex(i)} {...light} />\n \n ))\n }\n \n\n \n );\n}\n\nexport default TrafficLightEditor;\n\nconst Slot = styled.div`\n width: 39px;\n height: 65px;\n padding: 3px;\n background-color: rgba(0,0,0,0.1);\n border-radius: 5px;\n display: inline-block;\n margin: 0 5px;\n position: relative;\n cursor: pointer;\n &:hover {\n div {\n opacity: 0.95;\n }\n }\n img {\n position: absolute;\n width: 140%;\n top: -8%;\n left: -20%;\n pointer-events: none;\n user-select: n\n }\n`;\n","import { motion } from 'framer-motion';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { Button } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport sfx from '../../../../../../services/sounds';\nimport { GameProps, GameQuestion, useGameLogic } from '../../../../../core/Game';\nimport VoiceoverContext from '../../../../../misc/voiceover-context';\nimport { VolumeContext } from '../../../../../misc/volume-context';\nimport howto1 from '../../../assets/decomposer/howto1.jpg';\nimport howto2 from '../../../assets/decomposer/howto2.jpg';\nimport howto3 from '../../../assets/decomposer/howto3.jpg';\nimport howto4 from '../../../assets/decomposer/howto4-extra.png';\nimport howto5 from '../../../assets/decomposer/howto4.jpg';\nimport { breakpoint } from '../../../styles/junction';\nimport { theme } from '../../../styles/theme';\nimport Phone from '../../Phone';\nimport TrafficFrame from '../../traffic-lights/TrafficFrame';\nimport TrafficLightEditor from '../../traffic-lights/TrafficLightEditor';\nimport TrafficLightSequence, { TTrafficLightSequence } from '../../traffic-lights/TrafficLightSequence';\nimport Tutorial, { TTutorial } from '../Tutorial';\n\nexport type TTrafficSequenceQuestion = GameQuestion & {\n sequence: TTrafficLightSequence[];\n // answer: TTrafficLight[]\n};\n\nconst TrafficSequence: React.FC> = ({\n gameData,\n index = 0,\n onGameComplete,\n}) => {\n const [lightIndex, setLightIndex] = useState(null);\n const [correct, setCorrect] = useState(0);\n const [showEditor, setShowEditor] = useState(false);\n const [tutorialShow, setTutorialShow] = useState(true);\n const [show, setShow] = useState(false);\n const [count, setCount] = useState(1);\n const { volume } = useContext(VolumeContext);\n\n const handleGameComplete = () => {\n onGameComplete();\n };\n\n const handleNextQuestion = () => {\n // Hide Modal and next Question\n setShow(false);\n };\n\n const [question, nextQuestion] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextQuestion,\n index,\n );\n\n const tutorialClose = () => {\n setTutorialShow(false)\n }\n const slides: TTutorial[] = [\n { text: t`Look at the sequence playing on the traffic light in 'View' mode.`, image: howto1, textSpriteName: '62' },\n { text: t`Use the bottom button to switch between 'View' and 'Program' mode.`, image: howto2, textSpriteName: '63' },\n { text: t`Select a light to turn it on or off and edit each step in the sequence. `, image: howto3, textSpriteName: '64' },\n { text: t`Break down the problem by looking at each light individually.`, image: howto4, textSpriteName: '65' },\n { text: t`Make sure all the steps in the sequencer are correct before testing your program.`, image: howto5, textSpriteName: '66' },\n ]\n const handleModalClose = () => {\n setShow(false);\n setTimeout(nextQuestion, 0);\n }\n\n const handleQuestionComplete = () => {\n // Show Modal and reset\n if (volume) sfx.correct.play();\n setCorrect(0);\n setShowEditor(false);\n setShow(true)\n setCount(count + 1);\n };\n\n const handleIncorrectAnswer = () => {\n // if (volume) sfx.incorrect.play();\n // onIncorrectAnswer()\n };\n\n\n const { playVoiceover, stopVoiceover } = useContext(VoiceoverContext);\n\n useEffect(() => {\n if (show) {\n playVoiceover('71');\n return () => {\n stopVoiceover();\n }\n }\n\n }, [show]);\n\n if (!question) {\n return null;\n }\n\n const updateCorrect = (correct: number) => {\n setCorrect(correct);\n }\n\n\n return (\n \n\n \n {show ?\n \n
\n

{t`Sequence Correct!`}

\n \n {question.sequence.map((s, index) => (\n \n \n \n ))}\n \n \n
\n
\n : null}\n tutorialClose()}>\n\n\n \n \n\n {!showEditor ? (\n {t`Look at the sequence then program the traffic light in the 'Program' tab.`}\n ) : (\n <>{correct}/{question.sequence.length}{t`Steps Correct`}\n )}\n \n \n

\n {t`Light`} #{count}\n

\n {showEditor ? (\n \n ) : (\n \n )}\n {showEditor ? null :\n \n {question.sequence.map((s, index) => (\n \n {/* */}\n \n ))}\n \n }\n\n
\n\n\n {/* {t`Find the correct combination of lights to match the sequence`} */}\n \n setShowEditor(false)} enabled={!showEditor}>{t`View`}\n setShowEditor(!showEditor)}>
\n setShowEditor(true)} enabled={showEditor}>{t`Program`}\n
\n
\n
\n
\n );\n}\nconst OverlayContainer = styled(motion.div)`\n display: flex;\n align-items: center;\n padding-top: 75px;\n background-color: rgba(0,0,0,0.2);\n position: fixed;\n z-index: 999;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n\n`;\n\nconst CorrectModal = styled(motion.div)`\n position: absolute;\n top: 1%;\n right: 1%;\n bottom: 1%;\n left: 1%;\n padding: 15% 10%;\n background-color: ${theme.bare_green};\n z-index: 3;\n transform-origin: bottom;\n display: flex;\n justify-content: center;\n align-items:center;\n div {\n text-align:center;\n }\n`;\n\n\n\ninterface TogglerProps {\n recreate: boolean\n}\n\n\nconst Toggler = styled.div`\n display: inline-block;\n padding-top: 10px;\n margin: 0 10px;\n cursor: pointer;\n div {\n background-color: rgba(0,0,0,0.1);\n width: 40px;\n position:relative;\n height: 10px;\n border-radius: 15px;\n &::after{\n content: '';\n position: absolute;\n ${p => p.recreate ? 'right: -7px;' : 'left:-7px;'}\n top: -7px;\n width: 24px;\n height: 24px;\n border-radius: 40px;\n background-color: #ffffff;\n clear: both;\n }\n }\n`;\n\nconst Toggle = styled.p <{\n enabled: boolean\n}>`\n display: inline-block;\n width: calc(50% - 40px);\n margin: 0 4px;\n color: #ffffff;\n font-size: 4.5vw;\n cursor: pointer;\n ${p => p.enabled ? 'color: #ffffff !important;' : 'color: rgba(0,0,0,0.4) !important;'}\n span {\n display: inline-block;\n ${p => p.enabled ? 'border-bottom: solid 4px rgba(255,255,255,0.6);' : ''}\n }\n @media screen and (min-width: 400px) {\n font-size: 14px;\n }\n @media ${breakpoint.mobileL}{\n font-size: 16px;\n }\n @media ${breakpoint.laptop}{\n font-size: 22px;\n }\n`;\n\nconst Help = styled.p`\n margin: 10px 0;\n text-align: center;\n font-size: 12px;\n border-radius: 15px;\n background-color: rgba(0,0,0,0.1);\n line-height: 1.2;\n padding: 8px 12px;\n position: relative;\n @media screen and (min-width: 400px) {\n font-size: 14px;\n }\n\n @media ${breakpoint.mobileL}{\n font-size: 14px;\n }\n @media ${breakpoint.laptop}{\n font-size: 18px;\n }\n @media ${breakpoint.laptopL}{\n font-size: 20px;\n }\n span {\n margin: 0 8px;\n }\n\n`;\n\nconst GameWrapper = styled.div`\n height: 100%;\n width: 100%;\n padding: 12% 5%;\n overflow:hidden;\n`;\n\ninterface SlotProps {\n isActive: boolean;\n}\n\nconst Slot = styled.div`\n width: 39px;\n height: 65px;\n padding: 3px;\n background-color: rgba(0,0,0,0.1);\n border-radius: 5px;\n display: inline-block;\n margin: 0 5px;\n border: solid 2px transparent;\n transition: border-color ease-in-out 0.3s;\n ${(props) => props.isActive ? 'border-color: #ffffff;' : ''}\n`;\n\ninterface SequenceProps {\n edit: boolean\n}\n\nconst SequenceContainer = styled.div`\n background-color: #03A6DA;\n max-width: 400px;\n padding: 4% 1rem;\n color: #FFFFFF;\n position: absolute;\n margin: 0 auto;\n font-size: 18px;\n font-family: 'BT Font Bold';\n border-radius: 50px;\n line-height: 20px;\n text-align: center;\n bottom: 6%;\n left: 12%;\n right: 12%;\n ${Slot} { background-color: ${p => p.edit ? theme.bare_blue_700 : 'rgba(0,0,0,0.1)'}};\n\n\n`;\n\n\nexport const ToggleWrapper = styled.div`\n background-color: #03A6DA;\n padding: 0.5rem 1rem;\n width: 300px;\n display: block;\n border-radius: 10px;\n text-align: center;\n position: absolute;\n bottom: 10%;\n left: calc(50% - 150px);\n\n`;\n\n// Traffic Light Placements\n\nconst TrafficWrapper = styled.div`\n position: relative;\n width: 44%;\n display: block;\n margin: 0 auto;\n p {\n text-align: center;\n height: 30px;\n line-height: 25px;\n z-index: 2;\n width: 150%;\n max-width: 120px;\n pointer-events: none;\n user-select: none;\n position: absolute;\n top: -10px;\n font-size: 4vw;\n color: #ffffff;\n background-color: #09A7D8;\n opacity:0.9;\n font-family: 'BT Font Extra Bold';\n left: 50%;\n transform: translateX(-50%);\n padding: 2px 10px;\n border-bottom-left-radius: 5px;\n border-bottom-right-radius: 5px;\n @media(min-width: 420px){\n font-size: 14px;\n }\n @media ${breakpoint.mobileL}{\n font-size: 14px;\n }\n @media ${breakpoint.laptop}{\n font-size: 16px;\n }\n @media ${breakpoint.laptopL}{\n max-width: 150px;\n font-size: 20px;\n }\n }\n`;\n\nconst Intro = styled.p`\n background-color: rgba(77, 120, 134, 0.7);\n width: 100%;\n max-width: 400px;\n padding: 0.5rem 1rem;\n color: #FFFFFF;\n position: absolute;\n top: 15px;\n margin: 0 auto;\n font-size: 18px;\n line-height: 20px;\n text-align: center;\n border-radius: 5px;\n left: 0;\n right: 0;\n`;\n\nexport default TrafficSequence;\n","import React, { useState } from 'react';\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport useWindowDimensions from '../../../../../hooks/window';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport EngineerAisha from '../../characters/EngineerAisha';\nimport DialogueOverlay from '../../components/DialogueOverlay';\nimport Scene from '../../components/interactive/Scene';\nimport { TCar, TRoadLight } from '../../components/interactive/scene/Road';\nimport TrafficSequence from '../../components/interactive/sequence/TrafficSequence';\n\n\n\n\n\nconst SequenceGame: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n const [dialogueShow, setDialogueShow] = useState(true);\n const [nextDialogue, setNextDialogue] = useState(null);\n const { width } = useWindowDimensions();\n\n const gameData = [\n {\n sequence: [\n { red: { enabled: true }, duration: 1000 },\n { amber: { enabled: true }, duration: 1000 },\n { green: { enabled: true }, duration: 1000 },\n ],\n },\n {\n sequence: [\n { green: { enabled: true }, duration: 1000 },\n { amber: { enabled: true }, duration: 1000 },\n { red: { enabled: true }, duration: 1000 },\n ],\n }\n ]\n\n const openSequencer = () => {\n setShow(true);\n setDialogueShow(false);\n }\n\n const dialogue: DialogueData[] = [\n {\n character: EngineerAisha,\n text: t`The Sequencer 3000 will help us program the traffic lights by breaking down the sequence of instructions we need.`,\n textSpriteName: '60',\n buttonText: t`Next`,\n },\n {\n character: EngineerAisha,\n text: t`Let's have a go! Don't worry if it sounds complicated. I'll explain how it works.`,\n textSpriteName: '61',\n buttonText: t`Use Sequencer 3000`,\n buttonAction: openSequencer\n },\n ];\n\n const trafficLight1: TRoadLight = {\n sequence: [\n { red: { enabled: true }, duration: 1000 },\n ],\n pos: width - 300, // TODO REMOVE THINGS LIKE THIS\n direction: 'clockwise'\n };\n const trafficLight2: TRoadLight = {\n sequence: [\n { red: { enabled: true }, duration: 1000 },\n ],\n pos: width + 300, // TODO REMOVE THINGS LIKE THIS\n direction: 'anticlockwise'\n };\n const [carData, setCarData] = useState([\n { id: 'go-1', pos: 0, moving: true, direction: 'clockwise' },\n { id: 'go-2', pos: width, moving: true, direction: 'anticlockwise' },\n ]);\n\n\n return (\n \n \n {dialogueShow ?\n \n : null}\n {show ?\n \n : null}\n\n\n \n \n );\n}\n\nexport default SequenceGame;\n","import { motion, useAnimation, useMotionValue } from 'framer-motion';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { Button } from 'react-bootstrap';\nimport { isChrome } from 'react-device-detect';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport sfx from '../../../../../../services/sounds';\nimport { GameProps, GameQuestion } from '../../../../../core/Game';\nimport { VolumeContext } from '../../../../../misc/volume-context';\nimport howto2 from '../../../assets/timings/howto2.png';\nimport howto3 from '../../../assets/timings/howto3.png';\nimport { breakpoint } from '../../../styles/junction';\nimport { theme } from '../../../styles/theme';\nimport Phone from '../../Phone';\nimport { TTrafficLight } from '../../traffic-lights/TrafficLight';\nimport TrafficLightSequence from '../../traffic-lights/TrafficLightSequence';\nimport Tutorial, { TTutorial } from '../Tutorial';\n\n\nexport type TTrafficTimingsQuestion = GameQuestion & {\n data: boolean\n // answer: TTrafficLight[]\n};\n\nconst TrafficTimings: React.FC> = ({\n gameData,\n index = 0,\n onGameComplete,\n}) => {\n const [redOn, setRedOn] = useState(false);\n const [amberOn, setAmberOn] = useState(false);\n const [greenOn, setGreenOn] = useState(false);\n const [redClicked, setRedClicked] = useState(false);\n const [amberClicked, setAmberClicked] = useState(false);\n const [greenClicked, setGreenClicked] = useState(false);\n const [complete, setComplete] = useState(false);\n const [played, setPlayed] = useState(false);\n const [tutorialShow, setTutorialShow] = useState(true);\n\n const [start, setStart] = useState(false);\n const [result, setResult] = useState('');\n\n const anim_response = useAnimation();\n\n const { volume } = useContext(VolumeContext);\n\n // As each light turns on, click the light on\n\n // The traffic light will light up as a correct timing is fed in.\n // Quickly try and click on the light that has switch on to program the time.\n // Get all the timings to fully program the timing of the light.\n\n const slides: TTutorial[] = [\n // { text: t`The traffic light will light up as a correct timing is fed in.`, image: howto1, textSpriteName: '76' },\n { text: t`Select the light that has switched on to program the time.`, image: howto2, textSpriteName: '77' },\n { text: t`Get all the timings correct to fully program the traffic light. Good Luck!`, image: howto3, textSpriteName: '78' },\n ]\n\n useEffect(() => {\n let x: number, y: number, z: number;\n if (start) {\n let a = setTimeout(() => {\n setRedOn(true)\n x = setTimeout(() => {\n //alert failed\n setRedOn(false)\n }, 1500)\n }, 2500)\n\n let b = setTimeout(() => {\n setAmberOn(true)\n y = setTimeout(() => {\n //alert failed\n setAmberOn(false)\n }, 1500)\n }, 4500)\n\n let c = setTimeout(() => {\n setGreenOn(true)\n z = setTimeout(() => {\n //alert failed\n setGreenOn(false)\n handleLightsFinish();\n setCorrectAnswers([]);\n }, 1500)\n }, 6500)\n\n return () => {\n clearTimeout(a)\n clearTimeout(b)\n clearTimeout(c)\n clearTimeout(x)\n clearTimeout(y)\n clearTimeout(z)\n };\n\n }\n }, [start]);\n\n const handleLightsFinish = () => {\n if (!complete) {\n setPlayed(true);\n setStart(false);\n setGreenClicked(false);\n setAmberClicked(false);\n setRedClicked(false);\n if (volume) sfx.incorrect.play();\n }\n\n }\n\n const handleClick = (name: string) => {\n flashResponse();\n }\n\n const handleLightDataChange = (data: TTrafficLight) => {\n console.log('changed: ' + data)\n }\n\n const results = [t`Perfect!`, t`Awesome!`, t`Super!`, t`Yes!`, t`Excellent!`];\n\n async function flashResponse() {\n setResult(results[Math.floor(Math.random() * results.length)])\n if (volume) sfx.success.play();\n await anim_response.start('show');\n await anim_response.start('hidden');\n }\n async function flashWrong() {\n setResult(t`Not quite!`)\n if (volume) sfx.failure.play();\n await anim_response.start('show');\n await anim_response.start('hidden');\n }\n\n const responseVariants = {\n hidden: {\n backgroundColor: theme.bare_blue,\n transition: {\n ease: 'easeInOut',\n duration: 0.1,\n delay: 0.3\n },\n },\n show: {\n backgroundColor: (result == 'Not Quite!' ? '#cccccc' : theme.bt_purple),\n transition: {\n ease: 'easeInOut',\n duration: 0.1\n },\n },\n };\n\n const textVariants = {\n hidden: {\n y: 100,\n opacity: 0,\n transition: {\n ease: \"easeInOut\",\n duration: 0.3,\n delay: 0.2\n },\n },\n show: {\n y: 0,\n opacity: 1,\n transition: {\n ease: \"easeInOut\",\n duration: 0.3,\n },\n },\n };\n\n const [correctAnswer, setCorrectAnswers] = useState([])\n\n useEffect(() => {\n if (correctAnswer.length === 3) {\n setComplete(true);\n if (volume) sfx.synthSuccess.play();\n }\n\n }, [correctAnswer])\n\n\n const COLOUR_EMPTY = '#575757';\n\n const handleLightClick = (color: string, on: boolean) => {\n let answered = [...correctAnswer];\n if (start) {\n if (color == 'red') {\n setRedClicked(true);\n if (on && !redClicked) {\n flashResponse()\n answered.push('red')\n }\n else {\n flashWrong()\n }\n }\n if (color == 'amber') {\n setAmberClicked(true);\n if (on && !amberClicked) {\n flashResponse()\n answered.push('amber')\n }\n else {\n flashWrong()\n }\n }\n if (color == 'green') {\n setGreenClicked(true);\n if (on && !greenClicked) {\n flashResponse()\n answered.push('green')\n }\n else {\n flashWrong()\n }\n }\n }\n setCorrectAnswers(answered);\n\n }\n\n const sequence = [\n { red: { enabled: true }, duration: 4000 },\n { amber: { enabled: true }, duration: 1000 },\n { green: { enabled: true }, duration: 3000 },\n ]\n const handleStart = () => {\n setStart(true);\n\n }\n\n\n const tutorialClose = () => {\n setTutorialShow(false)\n }\n\n return (\n \n\n\n \n \n \n

{result}

\n
\n
\n\n\n {!start ?\n \n {played ?\n
\n

{t`Oh no!`}

\n
\n

{t`Your timings were not correct, try again to select the lights at the right time!`}

\n \n
\n :\n
\n

{t`Timings Game`}

\n
\n

{t`Press Start to begin programming the light's timings. Good luck!`}

\n \n
\n }\n
\n : null}\n {complete ?\n \n
\n

{t`Timings Programmed!`}

\n
\n
\n { }}>\n
\n

{t`Red`}: 4s {t`Amber`}: 1s {t`Green`}: 3s

\n \n
\n
\n : null}\n\n tutorialClose()}>\n

{t`Select the lights as they light up.`}

\n\n \n \n \n \n \n \n\n \n \n \n
\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n handleLightClick('red', redOn)} stroke=\"black\" />\n handleLightClick('amber', amberOn)} stroke=\"black\" />\n handleLightClick('green', greenOn)} stroke=\"black\" />\n \n
\n
\n
\n
\n
\n
\n
\n
\n
\n
\n );\n};\n\nconst Light = ({ duration, colour, start, clicked }: { duration: number, colour: string, start: boolean, clicked: boolean }) => {\n\n // Create the MotionValue\n const x = useMotionValue(700);\n const [xState, setXState] = useState(x.get());\n\n useEffect(() => {\n const unsubscribe = x.onChange(setXState);\n return unsubscribe;\n }, []);\n\n useEffect(() => {\n if (start) {\n x.set(0)\n\n } else {\n x.set(700)\n }\n }, [start]);\n\n return (\n \n \n \n );\n}\nconst ResponseModal = styled(motion.div)`\n position: absolute;\n top: 1%;\n right: 1%;\n bottom: 1%;\n background-color: ${theme.bare_blue};\n left: 1%;\n padding: 50% 10% 10% 10%;\n transform-origin: bottom;\n display: flex;\n justify-content: center;\n align-items:center;\n div {\n text-align:center;\n h1 {\n font-size: 1.25rem;\n @media ${breakpoint.mobileL}{\n font-size: 1.5rem;\n }\n @media ${breakpoint.laptop}{\n font-size: 2rem;\n }\n @media ${breakpoint.laptopL}{\n font-size: 2.5rem;\n }\n }\n }\n`;\n\nconst CorrectModal = styled(motion.div)`\n position: absolute;\n top: 1%;\n right: 1%;\n bottom: 1%;\n left: 1%;\n padding: 15% 10%;\n background-color: ${theme.bare_green};\n z-index: 3;\n transform-origin: bottom;\n display: flex;\n justify-content: center;\n align-items:center;\n div {\n text-align:center;\n }\n b {\n background-color: rgba(0,0,0,0.1);\n border-radius: 3px;\n padding: 0 2px;\n }\n`;\n\n\nconst OverlayContainer = styled(motion.div)`\n display: flex;\n align-items: center;\n padding-top: 75px;\n background-color: rgba(0,0,0,0.2);\n position: fixed;\n z-index: 999;\n top: 0;\n right: 0;\n left: 0;\n bottom: 0;\n\n`;\n\ninterface LightProps {\n color: string\n}\n\nconst LightCircle = styled(motion.div) `\n border-radius: 100%;\n width: 10%;\n height: 80%;\n border: solid #ffffff 3px;\n box-shadow: 0 3px 10px rgba(0,0,0,0.25);\n background-color: ${(props) => props.color};\n`;\n\n\nconst TrackWrapper = styled.div`\n height: 60%;\n position: absolute;\n right: 0;\n top 17%;\n left: 7%;\n`;\n\nconst LightTrack = styled.div<{ clicked: boolean }>`\n height: 18%;\n padding-top: 1%;\n margin-bottom: 3.5%;\n width: 100%;\n background-color: ${(props) => props.clicked ? theme.bare_pink : 'rgba(255,255,255,0.1)'};\n`;\n\nconst GameWrapper = styled.div`\n width: 100%;\n overflow: hidden;\n padding: 12% 5%;\n @media ${breakpoint.mobileL}{\n margin-top: 10%;\n }\n @media ${breakpoint.laptop}{\n margin-top: 25%;\n }\n position: relative;\n`;\n\n\n\n// Traffic Light Placements\n\nconst TrafficWrapper = styled.div`\n display: inline-block;\n width:30%;\n`;\n\n\nconst SVGWrapper = styled.div`\n width: 100%;\n padding-top: 333.33%;\n div {\n position: absolute;\n top: 0;\n width: 100%;\n left: 0;\n bottom: 0;\n }\n svg {width: 100%;}\n\n`;\n\n\ninterface CircleProps {\n enabled: boolean;\n}\nconst StyledCircle = styled.circle`\n box-shadow: 0 0 15px #ffffff;\n @media all and (-ms-high-contrast: none), (-ms-high-contrast: active) {\n filter: none !important;\n }\n cursor: pointer;\n &:hover{\n stroke: #ffffff;\n }\n`;\n\nconst Wrapper = styled.div`\n position: relative;\n height: 100%;\n width: 100%;\n svg {width: 100%;}\n circle {stroke-width: 0.5px; stroke: #222222}\n\n`;\n\n\n\nexport default TrafficTimings;\n","import React, { useState } from 'react';\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport useWindowDimensions from '../../../../../hooks/window';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport EngineerAisha from '../../characters/EngineerAisha';\nimport DialogueOverlay from '../../components/DialogueOverlay';\nimport Scene from '../../components/interactive/Scene';\nimport { TCar, TRoadLight } from '../../components/interactive/scene/Road';\n\n\n\n\n\n\nconst TimingsSimulation: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n const [dialogueShow, setDialogueShow] = useState(true);\n const [nextDialogue, setNextDialogue] = useState(null);\n const { width } = useWindowDimensions();\n\n\n const dialogue: DialogueData[] = [\n {\n character: EngineerAisha,\n text: t`Great work! Now we can see if that has fixed our timing problem.`,\n textSpriteName: '91',\n buttonText: t`Next`,\n },\n {\n character: EngineerAisha,\n text: t`Phew... You did it! Now we can sit back and relax while the traffic lights run automatically.`,\n textSpriteName: '92',\n buttonText: t`Next`,\n buttonAction: nextSlide\n\n }\n ];\n\n const trafficLight1: TRoadLight = {\n sequence: [\n { red: { enabled: true }, duration: 4000 },\n { amber: { enabled: true }, red: { enabled: true }, duration: 1000 },\n { green: { enabled: true }, red: { enabled: false }, duration: 4000 },\n { amber: { enabled: true }, red: { enabled: false }, duration: 1000 },\n ],\n pos: 1280 - 300,\n direction: 'clockwise'\n };\n\n const trafficLight2: TRoadLight = {\n sequence: [\n { green: { enabled: true }, red: { enabled: false }, duration: 4000 },\n { amber: { enabled: true }, red: { enabled: false }, duration: 1000 },\n { red: { enabled: true }, duration: 4000 },\n { amber: { enabled: true }, red: { enabled: true }, duration: 1000 },\n ],\n pos: 1280 + 300,\n direction: 'clockwise'\n };\n\n const [carData, setCarData] = useState([\n { id: 'go-1', pos: 0, moving: true, direction: 'clockwise' },\n { id: 'go-2', pos: width, moving: true, direction: 'anticlockwise' },\n ]);\n\n\n return (\n \n \n {dialogueShow ?\n \n : null}\n\n \n \n );\n}\n\nexport default TimingsSimulation;\n","import DecompositionQuestion from \"./DecompositionQuestion\";\nimport AlgoDefinition from \"./Definition\";\nimport LevelThree from \"./LevelThree\";\nimport SequenceGame from \"./SequenceGame\";\nimport SequenceSimulation from \"./SequenceSimulation\";\nimport TimingsSimulation from \"./TimingsSimulation\";\n\nexport default [\n LevelThree,\n DecompositionQuestion,\n SequenceGame,\n SequenceSimulation,\n TimingsSimulation,\n AlgoDefinition,\n];\n","import React, { useState } from 'react';\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport useWindowDimensions from '../../../../../hooks/window';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport EngineerAisha from '../../characters/EngineerAisha';\nimport DialogueOverlay from '../../components/DialogueOverlay';\nimport Scene from '../../components/interactive/Scene';\nimport { TCar, TRoadLight } from '../../components/interactive/scene/Road';\nimport TrafficTimings from '../../components/interactive/timings/TrafficTimings';\n\n\n\n\n\n\nconst SequenceSimulation: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n const [dialogueShow, setDialogueShow] = useState(true);\n const [nextDialogue, setNextDialogue] = useState(null);\n const { width } = useWindowDimensions();\n\n\n\n const openSequencer = () => {\n setShow(true);\n setDialogueShow(false);\n }\n\n const gameData = [\n {\n data: true\n }\n\n ]\n\n const dialogue: DialogueData[] = [\n {\n character: EngineerAisha,\n text: t`That looks pretty good. Let's see how this goes...`,\n textSpriteName: '73',\n buttonText: t`Next`,\n },\n {\n character: EngineerAisha,\n text: t`Hmmm... Something’s not right. The light is playing the correct sequence, but way too fast. Looks like we need the correct timings too!`,\n textSpriteName: '74',\n buttonText: t`Next`,\n\n },\n {\n character: EngineerAisha,\n text: t`Let’s use decomposition again and break down the traffic light sequence to look at the timing of each light.`,\n textSpriteName: '75',\n buttonText: t`Use Sequencer 3000`,\n buttonAction: openSequencer\n },\n ];\n\n const trafficLight1: TRoadLight = {\n sequence: [\n { red: { enabled: true }, duration: 1200 },\n { amber: { enabled: true }, duration: 100 },\n { green: { enabled: true }, duration: 100 },\n ],\n pos: width - 300, // TODO REMOVE THINGS LIKE THIS\n direction: 'clockwise'\n };\n const trafficLight2: TRoadLight = {\n sequence: [\n { red: { enabled: true }, duration: 1200 },\n { amber: { enabled: true }, duration: 100 },\n { green: { enabled: true }, duration: 100 },\n ],\n pos: width + 300, // TODO REMOVE THINGS LIKE THIS\n direction: 'anticlockwise'\n };\n const [carData, setCarData] = useState([\n { id: 'go-1', pos: 0, moving: true, direction: 'clockwise', loop: true },\n { id: 'go-2', pos: width, moving: true, direction: 'anticlockwise', loop: true },\n ]);\n\n\n return (\n \n \n {dialogueShow ?\n \n : null}\n {show ?\n \n : null}\n\n\n \n \n );\n}\n\nexport default SequenceSimulation;\n","import { motion } from 'framer-motion';\nimport React, { useEffect, useState } from 'react';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport MultipleChoice, { TMultiChoiceQuestion } from '../../../../interactive/quiz/multi-choice/MultiChoice';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport town_scene from '../../assets/scene/town_scene.svg';\nimport EngineerShahid from '../../characters/EngineerShahid';\nimport DialogueOverlay from '../../components/DialogueOverlay';\nimport Cookies from 'js-cookie';\nimport town_scene_welsh from '../../assets/scene/town_scene-welsh.svg';\n\nconst lang = Cookies.get('bfg_lang');\n\nconst DecompositionQuestion: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [questionShow, setQuestionShow] = useState(true);\n const [nextDialogue, setNextDialogue] = useState(null);\n\n const gameData: TMultiChoiceQuestion[] = [\n {\n question: t`What is an Algorithm?`,\n answers: [\n { text: t`A type of traffic light.`, correct: false },\n { text: t`Breaking down a task into smaller, more manageable parts.`, correct: false },\n { text: t`A set of instructions or rules to get something done.`, correct: true },\n ],\n },\n ];\n\n const dialogue: DialogueData[] = [\n {\n character: EngineerShahid,\n text: '',\n buttonText: t`Next`,\n buttonAction: nextSlide\n },\n ];\n\n const handleModalClose = () => {\n data.stopVoiceover();\n nextSlide();\n }\n\n useEffect(() => {\n data.playVoiceover('98');\n let a = setTimeout(() => data.playVoiceover('99'), 2000);\n setTimeouts([a]);\n return () => {\n data.stopVoiceover();\n }\n }, []);\n\n\n const [timeouts, setTimeouts] = useState([])\n\n useEffect(() => {\n return () => {\n timeouts?.forEach((t) => clearTimeout(t))\n }\n }, [timeouts]);\n\n return (\n \n \n \n\n {questionShow ?\n \n \n \n \n {t`Let’s check if you were paying attention...`}\n {\n data.playVoiceover('52')\n let b = setTimeout(() => data.playVoiceover('94'), 2000)\n setTimeouts([\n ...timeouts,\n b\n ])\n }}\n onGameComplete={() => {\n data.stopVoiceover()\n nextSlide();\n }}\n onIncorrectAnswer={() => { }}\n >\n \n \n \n : null}\n \n \n );\n}\n\n\nconst TownWrapper = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-position: center;\n background-size: cover;\n background-repeat: no-repeat;\n background-image: url('${lang === 'cy' ? town_scene_welsh : town_scene}');\n z-index: 998;\n display: flex;\n align-items: center;\n justify-content:center;\n`;\n\nconst Character = styled.img`\n position: absolute;\n z-index: -1;\n top: -70px;\n left: 15px;\n width: 50px;\n`;\n\nconst Content = styled.div`\n position:relative;\n width: 100%;\n display: block;\n margin: 0 auto;\n padding: 1rem;\n background-color: #ffffff;\n @media (min-width: 576px){\n border-radius: 5px;\n }\n min-height: 136px;\n`;\n\n\nconst Layout = styled.div`\n width: 100%;\n position: fixed;\n bottom: 0;\n left: 0;\n z-index: 999;\n .island {\n background-color: #EAF4F7;\n padding: 6px 12px !important;\n width: 100%;\n margin: 0 0 10px !important;\n font-size: 18px;\n line-height: 24px;\n min-height: auto;\n box-shadow: none;\n &::after{\n content: '';\n position: absolute;\n left: 8px;\n top: -12px;\n width: 0;\n height: 0;\n border-left: 10px solid transparent;\n border-right: 10px solid transparent;\n border-bottom: 15px solid #EAF4F7;\n clear: both;\n }\n }\n .island__author--dialogue {\n font-size: 12px;\n top: -55px;\n left: 50px;\n padding: 2px 8px;\n letter-spacing: 0.05em;\n border-radius: 5px;\n }\n @media (min-width: 576px){\n bottom: 10px;\n .island {\n border-radius: 5px !important;\n margin-bottom: 10px !important;\n }\n ${Content} {\n max-width: 400px;\n }\n }\n @media (min-width: 1200px){\n .island {\n font-size: 20px;\n }\n ${Content} {\n max-width: 500px;\n }\n }\n`;\nexport default DecompositionQuestion;\n","import { motion } from 'framer-motion';\nimport React, { useState } from 'react';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport ModalOverlay from '../../../../general/ModalOverlay';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport medal from '../../assets/misc/medal.png';\nimport town_scene from '../../assets/scene/town_scene.svg';\nimport town_scene_welsh from '../../assets/scene/town_scene-welsh.svg';\nimport EngineerShahid from '../../characters/EngineerShahid';\nimport DialogueOverlay from '../../components/DialogueOverlay';\nimport Cookies from 'js-cookie';\n\nconst lang = Cookies.get('bfg_lang');\n\nconst Intro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n const [dialogueShow, setDialogueShow] = useState(true);\n const [nextDialogue, setNextDialogue] = useState(null);\n\n const handleMedalShow = () => {\n setShow(true);\n data.playVoiceover('103')\n // setDialogueShow(false);\n }\n\n const dialogue: DialogueData[] = [\n {\n character: EngineerShahid,\n text: t`You have done brilliantly learning about decomposition and algorithms, you certainly deserve a medal...`,\n textSpriteName: '102',\n buttonText: t`Next`,\n buttonAction: handleMedalShow\n },\n {\n character: EngineerShahid,\n text: t`You successfully used decomposition today to break the problems down into smaller parts. You also made an algorithm to program the traffic lights automatically and help get the cars across the bridge safely!`,\n textSpriteName: '105',\n buttonText: t`Next`,\n },\n {\n character: EngineerShahid,\n text: t`We can't thank you enough, ${data.name}. The residents of Red Town and Blue Town are over the moon.`,\n textSpriteName: '106',\n buttonText: t`Next`,\n },\n {\n character: EngineerShahid,\n text: t`We hope to see you again soon, you’re always welcome here. Who knows, one day we might need a roundabout!`,\n textSpriteName: '107',\n buttonText: t`Next`,\n buttonAction: nextSlide\n },\n ];\n\n const handleModalClose = () => {\n data.stopVoiceover();\n nextDialogue();\n setShow(false);\n }\n\n return (\n \n \n {dialogueShow ? : null}\n \n \n
\n \n

{t`AWARD RECEIVED`}

\n
{t`Decomposition Champion`}
\n

{t`Click to continue`}

\n
\n\n
\n
\n );\n};\n\n\nconst TownWrapper = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-position: center;\n background-size: cover;\n background-repeat: no-repeat;\n background-image: url('${lang === 'cy' ? town_scene_welsh : town_scene}');\n z-index: 998;\n display: flex;\n align-items: center;\n justify-content:center;\n`;\n\nexport default Intro;\n","import React from 'react';\nimport \"slick-carousel/slick/slick-theme.css\";\n// Import css files\nimport \"slick-carousel/slick/slick.css\";\nimport { t } from 'ttag';\nimport { TrafficData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport LevelSelector from '../../components/interactive/levels/LevelSelector';\n\nconst LevelFive: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n\n const recap = t`You have used decomposition to break down the issues that were being experienced by the traffic lights. Breaking the problem down into smaller parts allowed us to correctly create an algorithm, which we used to program the traffic lights.`\n\n\n return (\n \n \n \n );\n};\n\n\n\n\nexport default LevelFive;\n","\n\nimport AlgoQuestion from './AlgoQuestion';\nimport Intro from './Intro';\nimport LevelFour from './LevelFour';\n\nexport default [LevelFour, AlgoQuestion, Intro];\n","import { motion } from 'framer-motion';\nimport React, { useEffect } from 'react';\nimport { Button } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport { TrafficData } from '../';\nimport Slide, { ISlide } from '../../../core/Slide';\nimport characters from '../assets/characters/characters.png';\nimport cloud from '../assets/scene/cloud.svg';\nimport town_scene from '../assets/scene/town_scene.svg';\nimport town_scene_welsh from '../assets/scene/town_scene-welsh.svg';\n\nimport Cookies from 'js-cookie';\n\nconst lang = Cookies.get('bfg_lang');\n\nconst EndSLide: React.FC> = ({ defaultHeader, onComplete, data }) => {\n const footer = ;\n\n useEffect(() => {\n data.playVoiceover('110')\n }, []);\n\n return (\n \n\n \n\n \n \n \n \n \n \n \n \n \n \n\n \n \n \n
{t`You have completed...`}
\n

{t`TRICKY TRAFFIC`}

\n \n

{t`Let an adult know what you’ve learnt about in Tricky Traffic and, if they know anyone who might also enjoy it, they can share it with them too!`}

\n\n
\n\n
\n\n\n\n
\n );\n};\n\n// Clouds\n\nconst Characters = styled(motion.img)`\n position: absolute;\n z-index: -1;\n width: 120px;\n height: 150px;\n top: -100px;\n left: 50%;\n transform: translateX(-50%);\n`;\n\nconst Clouds = styled.div`\n height: 100%;\n width: 100%;\n overflow: hidden;\n user-select: none;\n pointer-events: none;\n position: fixed;\n z-index: 999;\n left: 0;\n top: 0;\n\n img {\n width: 75px;\n position: absolute;\n left: -75px;\n user-select: none;\n pointer-events: none;\n z-index: 998;\n opacity: 0.5;\n &.cloud-half-hack {\n left: 40%;\n }\n }\n`;\n\nconst TownWrapper = styled.div`\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-position: center;\n background-size: cover;\n background-repeat: no-repeat;\n background-image: url('${lang === 'cy' ? town_scene_welsh : town_scene}');\n z-index: 998;\n display: flex;\n align-items: center;\n justify-content: center;\n`;\n\nconst Content = styled(motion.div)`\n position:relative;\n width: 100%;\n padding: 1rem;\n background-color: #ffffff;\n @media (min-width: 576px){\n border-radius: 5px;\n }\n box-shadow: 0 25px 50px rgba(0,0,0,0.25);\n min-height: 136px;\n p {color: #6400aa; padding: 0 15px}\n .island {\n background-color: #EAF4F7;\n padding: 6px 12px !important;\n width: 100%;\n margin: 0 0 10px !important;\n font-size: 18px;\n line-height: 24px;\n min-height: auto;\n box-shadow: none;\n }\n\n @media (min-width: 576px){\n .island {\n border-radius: 5px !important;\n margin-bottom: 10px !important;\n }\n max-width: 400px;\n }\n @media (min-width: 1200px){\n .island {\n font-size: 20px;\n }\n max-width: 500px;\n }\n`;\n\n\n\n\nexport default EndSLide;\n","import React, {useState, useEffect, useRef} from 'react';\nimport styled from 'styled-components';\nimport { Button, Row, Container, Col } from 'react-bootstrap';\nimport light from '../../../assets/lights/traffic_placeholder.png';\nimport alert_img from '../../../assets/lights/light_alert.svg';\n\nimport {motion} from 'framer-motion';\n\n\nconst CarRight: React.FC = () => {\n return (\n <>\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n );\n};\n\nconst AlertWrapper = styled.div`\n position:absolute;\n left: -50%;\n bottom: 0%;\n width: 150%;\n padding-top: 150%;\n font-size: 16px;\n img { width: 100%; position: absolute; top: 0; right: 0; left: 0; bottom: 0;}\n`;\nconst Wrapper = styled(motion.div)`\n position: relative;\n width: 100%;\n height: 90%;\n`;\n\nconst StyledSVG = styled.svg`\n width: 70%;\n display: block;\n margin: 0 auto;\n`;\n\nexport default CarRight;\n","import { motion } from 'framer-motion';\nimport React, { useEffect, useState } from 'react';\nimport { Button, Fade } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../core/Slide';\nimport car_left from '../assets/car/left.png';\nimport car_right from '../assets/car/right.png';\nimport cones from '../assets/misc/traffic-cones.svg';\nimport tree from '../assets/misc/tree.png';\nimport start_poster from '../assets/start/start_poster.jpg';\nimport start_poster_welsh from '../assets/start/start_poster-welsh.jpg';\nimport CarRight from '../components/cars/CarRight';\nimport Smoke from '../components/interactive/scene/Smoke';\nimport TrafficLight from '../components/traffic-lights/TrafficLight';\nimport { breakpoint, game, size } from '../styles/junction';\nimport { theme } from '../styles/theme';\nimport { TrafficData } from './..';\nimport Cookies from 'js-cookie';\n\n\n\ninterface SceneProps {\n nextSlide(): void;\n data?: TrafficData;\n roadworks?: boolean;\n crash?: boolean;\n help?: string;\n}\nconst StartSlide: React.FC = ({ nextSlide, data, roadworks, crash, help, defaultHeader }) => {\n const begin = (\n \n );\n const [show, setShow] = useState(false);\n\n let lang = Cookies.get('bfg_lang');\n\n\n useEffect(() => {\n const timer = setTimeout(() => setShow(true), 4500);\n return () => { clearTimeout(timer) }\n });\n\n return (\n \n \n {/* */}\n {/* */}\n {/* */}\n {/* */}\n \n \n\n \n \n \n \n \n\n \n \n\n {/* */}\n {/* */}\n {/* */}\n {roadworks ? <> : null}\n {crash ? <> : null}\n {/* */}\n\n \n\n \n\n \n {/* */}\n\n \n\n \n \n \n \n {t`Start`}\n \n \n \n );\n};\n\nconst StartButton = styled(Button)`\n position: absolute;\n bottom: 15px;\n left: 50%;\n transform: translateX(-50%);\n opacity:\n`;\n\nconst StartPoster = styled(motion.div)`\n position: absolute;\n z-index: 10;\n width: 300px;\n left: calc(50% - 150px);\n box-shadow: 0 25px 50px rgba(0,0,0,0.25);\n bottom: 90px;\n overflow: hidden;\n background-color: #6400aa;\n border: 2px white solid;\n`;\n\n\n// Cones\n\ninterface ConesProps {\n position: string\n}\n\nconst Cones = styled.img`\n width: 7%;\n bottom: 40%;\n position: absolute;\n ${p => p.position === \"left\" ? 'left: 4%;' : ''};\n ${p => p.position === \"right\" ? 'right: 4%;' : ''};\n`;\n\n// Traffic Light Placements\n\ninterface TrafficProps {\n position: string\n}\nconst TrafficWrapper = styled(motion.div) `\n position: absolute;\n width: 16%;\n height: 56%;\n &:hover{\n cursor: pointer;\n opacity: 0.9;\n }\n ${p => p.position === \"top_left\" ? 'left: 12.5%; bottom: 75%;' : ''};\n ${p => p.position === \"top_right\" ? 'right: 25%; bottom: 77.5%;' : ''};\n ${p => p.position === \"bottom_left\" ? 'left: 25%; bottom: 12.5%;' : ''};\n ${p => p.position === \"bottom_right\" ? 'right: 12.5%; bottom: 5.5%;' : ''};\n`;\n\n// Bridge for Level 1 Junction (2 pieces)\n\ninterface BridgeProps {\n position: string\n}\nconst Bridge = styled.img`\n position: absolute;\n left: 0;\n right: 0;\n margin: 0 auto;\n ${p => p.position === \"top\" ? `\n ${'bottom: calc(49.75% + ' + 150 / 2 + 'px)'};\n @media ${breakpoint.mobileL}{\n ${'width:' + (150 * 1.25 * game.scaleMobileL) + 'px'};\n ${'bottom: calc(49.75% + ' + (150 * game.scaleMobileL) / 2 + 'px)'};\n }\n @media ${breakpoint.laptop}{\n ${'width:' + (150 * 1.25 * game.scaleLaptop) + 'px'};\n ${'bottom: calc(49.75% + ' + (150 * game.scaleLaptop) / 2 + 'px)'};\n }\n @media ${breakpoint.laptopL}{\n ${'width:' + (150 * 1.25 * game.scaleLaptopL) + 'px'};\n ${'bottom: calc(49.75% + ' + (150 * game.scaleLaptopL) / 2 + 'px)'};\n }`\n : `\n ${'bottom: calc(46% - ' + 150 / 2 + 'px)'};\n @media ${breakpoint.mobileL}{\n ${'width:' + (150 * 1.25 * game.scaleMobileL) + 'px'};\n ${'bottom: calc(46% - ' + (150 * game.scaleMobileL) / 2 + 'px)'};\n }\n @media ${breakpoint.laptop}{\n ${'width:' + (150 * 1.25 * game.scaleLaptop) + 'px'};\n ${'bottom: calc(46% - ' + (150 * game.scaleLaptop) / 2 + 'px)'};\n }\n @media ${breakpoint.laptopL}{\n ${'width:' + (150 * 1.25 * game.scaleLaptopL) + 'px'};\n ${'bottom: calc(46% - ' + (150 * game.scaleLaptopL) / 2 + 'px)'};\n }`\n };\n`;\n\n// River for Level 1 Junction (2 pieces)\n\ninterface RiverProps {\n position: string\n}\nconst River = styled.div`\n position: absolute;\n width: ${150}px;\n background-color: ${theme.bare_blue};\n ${p => p.position === \"top\" ? 'top: 0' : 'bottom: 0'};\n border-left: 2px solid ${game.c_road_2};\n border-right: 2px solid ${game.c_road_2};\n height: ${'calc(50% - ' + (150 / 2) + 'px)'};\n @media ${breakpoint.mobileL}{\n ${'width:' + (150 * game.scaleMobileL) + 'px'};\n ${'height: calc(50% - ' + (150 * game.scaleMobileL) / 2 + 'px)'};\n }\n @media ${breakpoint.laptop}{\n ${'width:' + (150 * game.scaleLaptop) + 'px'};\n ${'height: calc(50% - ' + (150 * game.scaleLaptop) / 2 + 'px)'};\n }\n @media ${breakpoint.laptopL}{\n ${'width:' + (150 * game.scaleLaptopL) + 'px'};\n ${'height: calc(50% - ' + (150 * game.scaleLaptopL) / 2 + 'px)'};\n }\n`;\n\n// Info sections above and below\n\nconst Alert = styled.p`\n background-color: #FFFFFF;\n color: ${theme.bare_pink};\n padding: 0.5rem 1rem;\n position: absolute;\n bottom: 15px;\n margin: 0 auto;\n font-size: 18px;\n line-height: 20px;\n text-align: center;\n border-radius: 5px;\n font-family: ${theme.font_bt_extra};\n letter-spacing: 0.05em;\n left: 0;\n right: 0;\n max-width: 250px;\n width: 100%;\n`;\n\n\n\nconst Tree = styled(motion.img)`\n position: absolute;\n`;\n\n// Placeholder Cars\n\n\nconst CarCrash1 = styled.img`\n width: 17.5%;\n bottom: 42.5%;\n left: 34%;\n transform: rotate(3deg);\n position: absolute;\n`;\nconst CarCrash2 = styled.img`\n width: 17.5%;\n top: 42.5%;\n right:34%;\n transform: rotate(3deg);\n position: absolute;\n`;\n\n\n// Grass shapes for different layouts\n\ninterface GrassProps {\n position: string\n}\n\nconst Grass = styled.div`\n position: fixed;\n border: solid 0px ${game.c_road_2};\n background-color: ${theme.bare_green};\n\n ${p => p.position === \"top\" ? 'left: 0; top: 0; right: 0; height: calc(50% - ' + 150 / 2 + 'px); width: 100%; border-bottom-width: 4px;' : ''};\n ${p => p.position === \"bottom\" ? 'left: 0; bottom: 0; right: 0; height: calc(50% - ' + 150 / 2 + 'px); width: 100%;' : ''};\n\n ${p => p.position === \"top_left\" ? 'left: 0; top: 0; height: calc(50% - ' + 150 / 2 + 'px); width: calc(50% - ' + 150 / 2 + 'px); border-bottom-width: 5px; border-right-width: 4px; border-bottom-right-radius: 15px;' : ''};\n ${p => p.position === \"top_right\" ? 'right: 0; top: 0; height: calc(50% - ' + 150 / 2 + 'px); width: calc(50% - ' + 150 / 2 + 'px); border-bottom-width: 5px; border-left-width: 4px; border-bottom-left-radius: 15px;' : ''};\n ${p => p.position === \"bottom_right\" ? 'right: 0; bottom: 0; height: calc(50% - ' + 150 / 2 + 'px); width: calc(50% - ' + 150 / 2 + 'px); border-left-width: 3px; border-top-left-radius: 15px;' : ''};\n ${p => p.position === \"bottom_left\" ? 'left: 0; bottom: 0; height: calc(50% - ' + 150 / 2 + 'px); width: calc(50% - ' + 150 / 2 + 'px); border-right-width: 3px; border-top-right-radius: 15px;' : ''};\n\n ${p => p.position !== \"top\" && p.position !== \"bottom\" ? `\n @media ${breakpoint.mobileL}{\n ${'height: calc(50% - ' + (150 * game.scaleMobileL) / 2 + 'px);'}\n ${'width: calc(50% - ' + (150 * game.scaleMobileL) / 2 + 'px);'}\n }\n @media ${breakpoint.laptop}{\n ${'height: calc(50% - ' + (150 * game.scaleLaptop) / 2 + 'px);'}\n ${'width: calc(50% - ' + (150 * game.scaleLaptop) / 2 + 'px);'}\n }\n @media ${breakpoint.laptopL}{\n ${'height: calc(50% - ' + (150 * game.scaleLaptopL) / 2 + 'px);'}\n ${'width: calc(50% - ' + (150 * game.scaleLaptopL) / 2 + 'px);'}\n }\n ` : `\n @media ${breakpoint.mobileL}{\n ${'height: calc(50% - ' + (150 * game.scaleMobileL) / 2 + 'px);'}\n }\n @media ${breakpoint.laptop}{\n ${'height: calc(50% - ' + (150 * game.scaleLaptop) / 2 + 'px);'}\n }\n @media ${breakpoint.laptopL}{\n ${'height: calc(50% - ' + (150 * game.scaleLaptopL) / 2 + 'px);'}\n }\n `}\n`;\n\nconst SceneWrapper = styled.div`\n position: fixed;\n left: 0;\n right: 0;\n z-index: 5;\n top: 0;\n bottom: 0;\n overflow: hidden;\n display: flex;\n align-items: center;\n justify-content: center;\n background-color: ${game.c_road};\n `;\n\nconst GameWrapper = styled.div`\n width: ${size.mobile - (2 * game.paddingDefault)}px;\n height: ${size.mobile - (2 * game.paddingDefault)}px;\n position: relative;\n @media ${breakpoint.mobileL}{\n height: ${size.mobileL - (2 * game.paddingDefault)}px;\n width: ${size.mobileL - (2 * game.paddingDefault)}px;\n }\n @media ${breakpoint.laptop}{\n height: ${size.laptop - (2 * game.paddingDefault)}px;\n width: ${size.laptop - (2 * game.paddingDefault)}px;\n }\n @media ${breakpoint.laptopL}{\n height: ${size.laptopL - (2 * game.paddingDefault)}px;\n width: ${size.laptopL - (2 * game.paddingDefault)}px;\n }\n`;\n\nexport default StartSlide;\n","import Cookies from 'js-cookie';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { isFirefox, isSafari } from 'react-device-detect';\nimport { Helmet } from 'react-helmet';\nimport styled from 'styled-components';\nimport logo from '../../../assets/brand/logo-barefoot.svg';\nimport { filter } from '../../../helpers/filter';\nimport sfx from '../../../services/sounds';\nimport Module, { IModule } from '../../core/Module';\nimport ContextualMuteButton from '../../misc/ContextualMuteButton';\nimport VoiceoverContext from '../../misc/voiceover-context';\nimport VoiceoverMuteButton from '../../misc/VoiceoverMuteButton';\nimport { VolumeContext } from '../../misc/volume-context';\n// import voiceoverSpriteSheetDefault from './assets/voiceovers/vo-trickytraffic-spritesheet';\nimport voiceoverSpriteSheetChrome from './assets/voiceovers/vo-trickytraffic-spritesheet-chrome';\nimport Grass from './components/Wrapper';\nimport intro from './units/1-intro';\nimport tourists from './units/2-tourists';\nimport decomposition from './units/3-decomposition';\nimport end from './units/4-end';\nimport EndSlide from './units/EndSlide';\nimport StartSlide from './units/StartSlide';\n\nexport type TrafficData = {\n name: string;\n setName: (name: string) => void;\n playVoiceover: (sprite: string) => void;\n stopVoiceover: () => void;\n voiceover: Howl | undefined;\n};\n\nconst Traffic: React.FC = ({ onComplete }) => {\n const [name, setName] = useState(null);\n const { volume } = useContext(VolumeContext);\n const { voiceover, setVoiceover } = useContext(VoiceoverContext);\n const { musicMuted } = useContext(VolumeContext);\n const [music, setMusic] = useState(sfx.themeTraffic);\n const { playVoiceover, stopVoiceover } = useContext(VoiceoverContext);\n\n const slides = [\n StartSlide,\n ...intro,\n ...tourists,\n ...decomposition,\n // ...sequencing,\n // ...junctions,\n // ...game,\n ...end,\n EndSlide,\n ];\n\n const barefootLogo = (\n \n \"BT-Barefoot\"\n \n \n \n );\n\n useEffect(() => {\n if (!setVoiceover || ((Cookies.get('bfg_lang') ?? 'en') !== 'en')) {\n return;\n }\n\n setVoiceover(\n new Howl({\n src: require('./assets/voiceovers/vo-trickytraffic-2.mp3'),\n sprite: isSafari || isFirefox ? voiceoverSpriteSheetChrome : voiceoverSpriteSheetChrome,//voiceoverSpriteSheetDefault\n html5: true,\n volume: 0.3,\n preload: true,\n })\n );\n }, [])\n\n\n const playMusic = (m: Howl) => {\n if (m) {\n let vo: number;\n stopMusic()\n let mInstance = m.load();\n setMusic(mInstance);\n\n if (musicMuted === false) {\n vo = mInstance.play();\n }\n }\n }\n\n const stopMusic = () => {\n if (music) {\n music.stop();\n }\n }\n\n useEffect(() => {\n if (musicMuted) {\n stopMusic()\n } else if (musicMuted === false && music) {\n playMusic(music);\n }\n\n return () => {\n stopMusic();\n }\n }, [music, musicMuted])\n\n\n useEffect(() => {\n setName(filter.clean(name ?? ''));\n }, [name, setName]);\n\n return (\n \n \n Tricky Traffic | Barefoot Games\n \n \n \n );\n};\n\nconst StyledHeader = styled.div`\n .btn--mute {\n right: 10px;\n bottom: 10px;\n }\n .btn--mute-voice {\n right: 55px;\n bottom: 10px;\n }\n`;\n\nexport default Traffic;\n","import alien1 from '../../../../assets/characters/glib_glob.svg';\nimport alien2 from '../../../../assets/characters/flub_flub.svg';\nimport aliens from '../../../../assets/characters/aliens.svg';\nimport intro1 from '../../../../assets/misc/variable_intro1.svg';\nimport intro1_cy from '../../../../assets/misc/variable_intro1-cy.svg';\nimport intro2 from '../../../../assets/misc/variable_intro2.svg';\nimport intro2_cy from '../../../../assets/misc/variable_intro2-cy.svg';\nimport intro3 from '../../../../assets/misc/variable_intro3.svg';\nimport intro3_cy from '../../../../assets/misc/variable_intro3-cy.svg';\nimport { TCharacter } from '../../../general/Character';\nimport { t } from 'ttag';\nimport Cookies from 'js-cookie';\nlet lang = Cookies.get('bfg_lang');\n\nexport const GlibGlob: TCharacter = {\n characterName: t`Captain Fizz`,\n characterImage: alien1,\n characterWidth: 120,\n characterHeight: 170,\n};\n\nexport const FlubFlub: TCharacter = {\n characterName: t`Technician Buzz`,\n characterImage: alien2,\n characterWidth: 120,\n characterHeight: 160,\n};\n\nexport const AllAliens: TCharacter = {\n characterName: t`Fizz & Buzz`,\n characterImage: aliens,\n characterWidth: 190,\n characterHeight: 140,\n};\n\nexport const FlubFlubIntro1: TCharacter = {\n characterName: t`Technician Buzz`,\n characterImage: lang === 'cy' ? intro1_cy : intro1,\n characterWidth: 220,\n characterHeight: 200,\n};\nexport const FlubFlubIntro2: TCharacter = {\n characterName: t`Technician Buzz`,\n characterImage: lang === 'cy' ? intro2_cy : intro2,\n characterWidth: 220,\n characterHeight: 200,\n};\nexport const FlubFlubIntro3: TCharacter = {\n characterName: t`Technician Buzz`,\n characterImage: lang === 'cy' ? intro3_cy : intro3,\n characterWidth: 200,\n characterHeight: 220,\n};\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { GlibGlob } from '../../characters/Aliens';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { VariablesData } from '../..';\nimport { t } from 'ttag';\n\nconst TuringOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: GlibGlob,\n text: t`Nice to meet you, ${data.name}. Our ship is tasked with getting rid of asteroids because a lot of our spaceships tend to crash into them.`,\n buttonText: t`Next`,\n },\n {\n character: GlibGlob,\n text: t`We destroy the asteroids using our ship's special lasers. Would you be able to help us clear some asteroids?`,\n buttonText: t`Sure!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default TuringOutro;\n","import Intro from './Intro';\nimport NameInput from './NameInput';\nimport Outro from './Outro';\n\nexport default [Intro, NameInput, Outro];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { GlibGlob } from '../../characters/Aliens';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\n\nconst Intro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: GlibGlob,\n text: t`Hi! I am Fizz, the captain of the Asteroid Blaster ship. It’s a pleasure to have you onboard. What's your alien name?`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { Button, Row, Col } from 'react-bootstrap';\nimport Character from '../../../../general/Character';\nimport { GlibGlob } from '../../characters/Aliens';\nimport { VariablesData } from '../../';\nimport { t } from 'ttag';\n\nconst NameInput: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const next = data.name ? (\n \n ) : null;\n\n return (\n \n \n \n \n

{t`What is your alien name?`}

\n data.setName(e.target.value)}\n />\n \n
\n
\n
\n );\n};\n\nexport default NameInput;\n","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport { VariablesData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Content from '../../../../general/Content';\nimport MultipleChoice, { TMultiChoiceQuestion } from '../../../../interactive/quiz/multi-choice/MultiChoice';\n\nconst VariablesQuiz: React.FC> = ({\n defaultHeader,\n nextSlide,\n gotoSlide,\n currentIndex,\n data,\n}) => {\n if (data.gameScore === 0) {\n // TODO: Redo if no score\n }\n\n const gameData: TMultiChoiceQuestion[] = [\n {\n question: t`I think I blew up...`,\n answers: [\n { text: `${(data.gameScoreObject as any)[t`Small`] + 1} ${t`Small Asteroids`}`, correct: false },\n { text: `${(data.gameScoreObject as any)[t`Small`]} ${t`Small Asteroids`}`, correct: true },\n { text: `${(data.gameScoreObject as any)[t`Small`] + 2} ${t`Small Asteroids`}`, correct: false },\n ],\n },\n ];\n\n return (\n \n \n \n \n undefined}\n incorrectModalDisabled={true}\n />\n \n \n \n \n );\n};\n\nexport default VariablesQuiz;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\nimport { GlibGlob } from '../../characters/Aliens';\nimport { VariablesData } from '../..';\n\nconst VariablesQuizOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: GlibGlob,\n text: t`Hmmm... I wish we could keep track of the number of asteroids we destroy more easily. We shouldn’t have to try and keep count ourselves!`,\n buttonText: t`You're right!`,\n },\n {\n character: GlibGlob,\n text: t`Let’s chat to Buzz, the chief technician aboard my ship...`,\n buttonText: t`Hi there!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default VariablesQuizOutro;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\nimport { FlubFlub } from '../../characters/Aliens';\nimport WordDiscovery from '../../../../general/WordDiscovery';\nimport { VariablesData } from '../..';\n\nconst VariablesQuizOutro2: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n const [show, setShow] = useState(false);\n\n const dialogue: DialogueData[] = [\n {\n character: FlubFlub,\n text: t`Hey ${data.name}! I can help! I’ll create two variables in the ship’s onboard computer. I can write some code so these keep track of how many large and small asteroids you blast.`,\n buttonText: t`Sure!`,\n buttonAction: () => setShow(true),\n },\n ];\n\n return (\n \n \n \n \n );\n};\n\nexport default VariablesQuizOutro2;\n","import React from 'react';\nimport MissionSlide from '../../../../general/MissionSlide';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst MissionIntro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n {t`Destroy as many asteroids as possible in the given time.`}\n );\n};\n\nexport default MissionIntro;\n","export function randomIntFromBetween(min: number, max: number): number {\n // min and max included\n return Math.floor(Math.random() * (max - min + 1) + min);\n}\n","import React from 'react';\nimport styled from 'styled-components';\nimport { TAsteroid } from './AsteroidGame';\n\nconst Asteroid: React.FC<{ clickHandler: () => void; x: number; y: number; type: TAsteroid }> = ({\n clickHandler,\n children,\n x,\n y,\n type,\n}) => {\n return !type.asteroidImage ? (\n \n {type.asteroidName} {type.asteroidValue}\n \n ) : (\n \n );\n};\n\nexport default Asteroid;\n\ninterface WrapperProps {\n x: number;\n y: number;\n onClick?: () => void;\n type: TAsteroid;\n}\n\nconst AsteroidWrapper = styled.div`\n position: absolute;\n top: ${(props) => props.y || '0'}px;\n left: ${(props) => props.x || '0'}px;\n background-color: ${(props) => props.type.asteroidColor || 'green'};\n height: 10px;\n width: 10px;\n z-index: 10;\n cursor: pointer;\n`;\n\nconst AsteroidWrapper2 = styled.img`\n position: absolute;\n top: ${(props) => props.y || '0'}px;\n left: ${(props) => props.x || '0'}px;\n background-color: ${(props) => props.type.asteroidColor || 'transparent'};\n height: auto;\n width: ${(props) => props.type.asteroidWidth || '20'}px;\n z-index: 10;\n cursor: pointer;\n`;\n","import { motion } from 'framer-motion';\nimport React, { useContext, useEffect, useState } from 'react';\nimport { Button } from 'react-bootstrap';\nimport styled from 'styled-components';\n// import stars_4 from '../../../assets/games/space/stars_4.svg';\nimport { t } from 'ttag';\nimport blank from '../../../assets/games/space/blank_boom.svg';\nimport cockpit from '../../../assets/games/space/cockpit.svg';\nimport boom from '../../../assets/games/space/explosion.gif';\nimport stars_1 from '../../../assets/games/space/stars_1.svg';\nimport stars_2 from '../../../assets/games/space/stars_2.svg';\nimport stars_3 from '../../../assets/games/space/stars_3.svg';\nimport { randomIntFromBetween } from '../../../helpers/numbers';\nimport { useGameTimer } from '../../../hooks/game';\nimport sfx from '../../../services/sounds';\nimport { GameProps, GameQuestion, useGameLogic } from '../../core/Game';\nimport { VolumeContext } from '../../misc/volume-context';\nimport Asteroid from './Asteroid';\n\nexport type TAsteriodQuestion = GameQuestion & {\n duration: number;\n scoreVisible: boolean;\n types: TAsteroid[];\n name?: string;\n nameVisible?: boolean;\n zinonVisible?: boolean;\n};\n\nexport type TAsteroid = {\n asteroidValue: number;\n asteroidName: string;\n asteroidImage?: string;\n asteroidColor?: string;\n asteroidWidth?: number;\n scoreVisible?: boolean;\n zinionEnabled?: boolean;\n};\n\nconst AsteroidGame: React.FC<\n GameProps & { reportGameScore?: (score: number, scoreObject: object) => void }\n> = ({ gameData, index = 0, onGameComplete, reportGameScore }) => {\n const [score, setScore] = useState(0);\n const [count, setCount] = useState(0);\n const [scoreObj, setScoreObj] = useState({});\n const [countObj, setCountObj] = useState({});\n const [explosions, setExplosions] = useState<{ X: number; Y: number }[]>([]);\n const { volume } = useContext(VolumeContext);\n\n const handleGameComplete = () => {\n // setShow(true);\n if (typeof reportGameScore === 'function') reportGameScore(count ?? 0, scoreObj ?? {});\n onGameComplete();\n };\n\n const handleNextQuestion = () => {\n // setShow(false);\n };\n\n const [question, nextQuestion] = useGameLogic(\n gameData,\n handleGameComplete,\n handleNextQuestion,\n index,\n );\n\n const onTimerFinish = () => {\n // alert('time is up! You scored'+ score);\n reset();\n nextQuestion();\n };\n\n const addScore = (type: string, amount: number) => {\n setScoreObj({\n ...scoreObj,\n [type]: scoreObj.hasOwnProperty(type) ? (scoreObj as any)[type] + amount : amount,\n });\n setScore(score + amount);\n setCount(count + 1);\n };\n\n const incrementCountType = (type: string) => {\n setCountObj({\n ...countObj,\n [type]: countObj.hasOwnProperty(type) ? (countObj as any)[type] + 1 : 1,\n });\n };\n\n const [timeLeft, isActive, start, reset, setTimeLeft] = useGameTimer(10, onTimerFinish);\n\n const [asteroidX, setAsteroidX] = useState(randomIntFromBetween(0, 260));\n const [asteroidY, setAsteroidY] = useState(randomIntFromBetween(0, 360));\n\n const [asteroidTypeIndex, setAsteroidTypeIndex] = useState(0);\n\n const onAsteroidClick = () => {\n // console.log('clicked', score);\n // add score for clicked droid\n addScore(question.types[asteroidTypeIndex].asteroidName, question.types[asteroidTypeIndex].asteroidValue);\n\n incrementCountType(question.types[asteroidTypeIndex].asteroidName);\n\n if (volume) sfx.explosion.play();\n\n setExplosions([...explosions, { X: asteroidX, Y: asteroidY }]);\n\n // set random pos\n setAsteroidX(randomIntFromBetween(0, 260));\n setAsteroidY(randomIntFromBetween(0, 360));\n\n //randomly select next type\n setAsteroidTypeIndex(randomIntFromBetween(0, question.types.length - 1));\n };\n\n useEffect(() => {\n if (explosions) {\n let ex = [...explosions];\n ex.shift();\n let tmr = setTimeout(() => setExplosions(ex), 2000);\n return () => clearTimeout(tmr);\n }\n }, [explosions]);\n\n useEffect(() => {\n setTimeLeft(question ? question.duration : 10);\n }, [question]);\n\n if (!question) {\n return null;\n }\n\n return (\n \n \n \n\n {/**/}\n {question.scoreVisible ? (\n \n {t`TOTAL`}\n {count}\n \n ) : null}\n {/* {question.scoreVisible ? Object.keys(scoreObj).map((val, k) =>

{val} {(scoreObj as any)[val]}

) : null} */}\n \n \n \n {question.types.map((type) =>\n type.scoreVisible ? (\n \n {(countObj as any)[type.asteroidName] ?? 0}\n {type.asteroidName}{' '}\n \n ) : null,\n )}\n {/**/}\n \n {!isActive ? (\n \n \n

{t`Instructions`}

\n

\n {t`Click/tap on an asteroid to fire.`}\n
\n {t`Destroy as many asteroids as possible in the time given.`}\n

\n {\n if (volume) sfx.startgame.play();\n\n start();\n }}\n >{t`Start`}\n
\n
\n ) : null}\n {question.nameVisible ? (\n \n {t`Name`}\n {question.name}\n \n ) : null}\n {/* {question.zinonVisible ? Zinon{ (scoreObj as any)[question.types.find((type) => type.zinionEnabled)?.asteroidName] ?? 0} : null} */}\n {question.zinonVisible\n ? question.types\n .filter((type) => type.zinionEnabled)\n ?.map((type) =>\n type.zinionEnabled ? (\n \n Zinon {(scoreObj as any)[type.asteroidName] ?? 0}{' '}\n \n ) : null,\n )\n : null}\n\n {isActive ? {timeLeft} : null}\n {isActive ? (\n \n ) : null}\n\n {explosions.map((ex, i) => (\n \n ))}\n
\n
\n );\n};\n\nconst Explosion: React.FC = ({ x, y }) => {\n const [display, setDisplay] = useState(true);\n const [opacity, setOpacity] = useState(0);\n const [explosionMap, setExplosionMap] = useState(boom);\n\n useEffect(() => {\n let a = setTimeout(() => {\n setExplosionMap(blank);\n setOpacity(1);\n }, 100);\n let b = setTimeout(() => setExplosionMap(boom), 200);\n let c = setTimeout(() => setDisplay(false), 1000);\n return () => {\n clearTimeout(a);\n clearTimeout(b);\n clearTimeout(c);\n };\n }, []);\n\n return ;\n};\n\nconst canvasX = 300;\nconst canvasY = 400;\n\ninterface AsteroidProps {\n x: number;\n y: number;\n display?: boolean;\n opacity: number;\n}\ninterface ScoreProps {\n type?: string;\n}\ninterface TimerLevel {\n timeLeft: number;\n}\n\nconst Score = styled.p`\n position: absolute;\n margin-bottom: 0;\n z-index: 5;\n font-size: 30px;\n font-family: 'BT Font Extra Bold';\n right: ${(props) => (props.type == t`Large` ? 'auto' : '5px')};\n left: ${(props) => (props.type == t`Small` ? 'auto' : '5px')};\n bottom: -98px;\n text-transform: lowercase;\n line-height: 1rem;\n text-align: ${(props) => (props.type === t`Small` ? 'left' : 'right')};\n span {\n font-size: 14px;\n display: block;\n }\n`;\nconst StartSlide = styled.div`\n position: absolute;\n height: 100%;\n width: 100%;\n display: flex;\n align-items: center;\n justify-content: center;\n z-index: 80;\n`;\n\nconst StartContent = styled.div`\n text-align: center;\n background-color: rgba(100, 0, 170, 0.2);\n padding: 15px;\n border-radius: 10px;\n min-width: 200px;\n h4 {\n text-transform: uppercase;\n color: white;\n font-family: 'BT Font Extra Bold';\n font-size: 16px;\n margin-top: 15px;\n }\n p {\n font-size: 14px;\n line-height: 18px;\n background-color: black;\n color: #e60050;\n font-family: 'BT Font Extra Bold';\n text-transform: uppercase;\n padding: 5px;\n border-radius: 10px;\n }\n`;\n\nconst TotalScore = styled.p`\n position: absolute;\n margin-bottom: 0;\n z-index: 5;\n font-size: 57px;\n font-family: 'BT Font Extra Bold';\n left: 0;\n width: 100%;\n text-align: center;\n bottom: -88px;\n span {\n display: block;\n font-size: 20px;\n margin-bottom: 10px;\n }\n`;\n\nconst PlayerName = styled.p`\n position: absolute;\n font-family: 'BT Font Extra Bold';\n z-index: 3;\n background-color: #eaf577;\n color: #000000;\n font-size: 14px;\n text-transform: uppercase;\n padding: 6px;\n border-radius: 3px;\n top: 2px;\n left: 2px;\n margin: 0;\n line-height: 12px;\n span {\n display: block;\n font-size: 10px;\n margin-bottom: 3px;\n }\n max-width: 240px;\n user-select: none;\n overflow: hidden;\n`;\n\nconst Zinon = styled.p`\n position: absolute;\n font-family: 'BT Font Extra Bold';\n z-index: 3;\n background-color: #7b17ff;\n font-size: 14px;\n text-transform: uppercase;\n padding: 6px;\n border-radius: 3px;\n top: 2px;\n right: 6px;\n margin: 0;\n line-height: 12px;\n text-align: center;\n user-select: none;\n span {\n display: block;\n font-size: 10px;\n margin-bottom: 3px;\n }\n`;\n\n// const goDown = keyframes`\n// from {\n// height: 100%;\n// }\n//\n// to {\n// height: 0;\n// }\n// `;\n// const TimerLevel = styled.div`\n// position: absolute;\n// z-index: 3;\n// background-color: #222222;\n// width: 100%;\n// height: ${(props) => props.timeLeft}%;\n// bottom:0;\n// left: 0;\n// transition: height 1s linear;\n// border-radius: 5px;\n// `;\n\n// const StartButton = styled.button`\n// position: absolute;\n// height: ${canvasY}px;\n// width: ${canvasX}px;\n// background-color: black;\n// color: red;\n// font-family: 'BT Font Extra Bold';\n// z-index: 50;\n// text-transform: uppercase;\n// border: none;\n// border-radius: 5px;\n// `;\n\nconst ExplosionWrapper = styled.img`\n position: absolute;\n height: 50px;\n width: 50px;\n z-index: 3;\n top: ${(props) => props.y || '0'}px;\n left: ${(props) => props.x || '0'}px;\n display: ${(props) => (props.display ? '' : 'none')};\n opacity: ${(props) => props.opacity};\n transition: opacity 0.2s linear;\n`;\n\nconst SpaceWrapper = styled.div`\n height: ${canvasY}px;\n width: ${canvasX}px;\n display: block;\n margin: 10px auto 114px auto;\n position: relative;\n border-radius: 5px;\n box-shadow: 0 0 4px rgba(0, 0, 0, 0.2);\n`;\n\nconst SpaceCanvas = styled.div`\n position: relative;\n background-color: transparent;\n height: ${canvasY}px;\n width: ${canvasX}px;\n overflow: hidden;\n border-radius: 5px;\n z-index: 4;\n`;\n\nconst SpaceBackground = styled.div`\n position: absolute;\n height: 550px;\n width: 460px;\n background-color: black;\n top: calc(50% - 270px);\n left: calc(50% - 230px);\n`;\n\nconst TimerHeight = 60;\nconst TimerWidth = 100;\nconst Timer = styled.h1`\n position: absolute;\n height: ${TimerHeight}px;\n width: ${TimerWidth}px;\n text-align: center;\n top: calc(50% - ${TimerHeight / 2}px);\n left: calc(50% - ${TimerWidth / 2}px);\n opacity: 0.6;\n z-index: 3;\n user-select: none;\n`;\n\nconst Cockpit = styled.img`\n position: absolute;\n height: 600px;\n width: 950px;\n z-index: 4;\n top: calc(50% - 280px);\n left: calc(50% - 470px);\n`;\n\nexport default AsteroidGame;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\nimport { FlubFlubIntro1, FlubFlubIntro2, FlubFlubIntro3 } from '../../characters/Aliens';\n\nconst VariablesIntro2: React.FC = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: FlubFlubIntro1,\n text: t`Imagine this box is one of the variables. We’ll call it ‘Small Asteroids’ as it’ll keep track of how many small asteroids you blast. The computer will set it to 0 when you start your mission.`,\n buttonText: t`Next`,\n },\n {\n character: FlubFlubIntro2,\n text: t`You can change the data stored inside a variable. Here the ship’s computer will increase the variable by 1 every time you blast a small asteroid.`,\n buttonText: t`Next`,\n },\n {\n character: FlubFlubIntro3,\n text: t`You can also see the value stored in the variable at any time, so you can always see how many small asteroids you’ve blasted. I’ll create the same for large asteroids too. Perfect!`,\n buttonText: t`Got it!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default VariablesIntro2;\n","import VariablesQuiz from './VariablesQuiz';\nimport VariablesQuizOutro from './VariablesQuizOutro';\nimport VariablesQuizOutro2 from './VariablesQuizOutro2';\nimport MissionIntro from './MissionIntro';\nimport MissionGame from './MissionGame';\nimport MissionOutro from './MissionOutro';\nimport VariablesIntro from './VariablesIntro';\nimport VariablesIntro2 from './VariablesIntro2';\nexport default [\n MissionIntro,\n MissionGame,\n MissionOutro,\n VariablesQuiz,\n VariablesQuizOutro,\n VariablesQuizOutro2,\n VariablesIntro,\n VariablesIntro2,\n];\n","import React from 'react';\nimport { VariablesData } from '../..';\nimport smallAsteroid from '../../../../../assets/games/space/asteroid--small.svg';\nimport largeAsteroid from '../../../../../assets/games/space/asteroid--large.svg';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AsteroidGame, { TAsteriodQuestion } from '../../../../interactive/asteroid/AsteroidGame';\nimport { t } from 'ttag';\n\nconst MissionGame: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const gameData: TAsteriodQuestion[] = [\n {\n scoreVisible: false,\n duration: 15,\n types: [\n { asteroidValue: 1, asteroidName: t`Small`, asteroidImage: smallAsteroid },\n { asteroidValue: 1, asteroidName: t`Large`, asteroidImage: largeAsteroid, asteroidWidth: 40 },\n ],\n },\n ];\n\n return (\n \n {}}\n reportGameScore={(score: number, scoreObject: object) => {\n data.setGameScore(score ?? 0);\n data.setGameScoreObject(score ? scoreObject : { [t`Small`]: 0 });\n nextSlide();\n }}\n >\n \n );\n};\n\nexport default MissionGame;\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { GlibGlob } from '../../characters/Aliens';\n\nconst MissionOutro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: GlibGlob,\n text: t`Wow! Do you think you can guess how many of the small asteroids you blew up?`,\n buttonText: t`Urm...`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default MissionOutro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\nimport { FlubFlub } from '../../characters/Aliens';\n\nconst VariablesQuizOutro: React.FC = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: FlubFlub,\n text: t`We can think of a variable like a box that we can place data in (such as a number or text). Let me show you!`,\n buttonText: t`Show Me!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default VariablesQuizOutro;\n","import React from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Content from '../../../../general/Content';\nimport MultipleChoice, { TMultiChoiceQuestion } from '../../../../interactive/quiz/multi-choice/MultiChoice';\n\nconst VariablesQuiz: React.FC = ({ defaultHeader, nextSlide, gotoSlide, currentIndex }) => {\n const gameData: TMultiChoiceQuestion[] = [\n {\n question: t`How should we calculate the total score of asteroids blasted?`,\n answers: [\n { text: t`Total = Small Asteroids + Large Asteroids`, correct: true },\n { text: t`Total = Small Asteroids - Large Asteroids`, correct: false },\n { text: t`Total = Small Asteroids x Large Asteroids`, correct: false },\n ],\n },\n ];\n\n return (\n \n \n \n \n gotoSlide(currentIndex - 1)}\n />\n \n \n \n \n );\n};\n\nexport default VariablesQuiz;\n","import Intro from './Intro';\nimport MissionIntro from './MissionIntro';\nimport MissionGame from './MissionGame';\nimport MissionOutro from './MissionOutro';\nimport VariablesQuizIntro from './VariablesQuizIntro';\nimport VariablesQuiz from './VariablesQuiz';\n\nexport default [Intro, MissionIntro, MissionGame, MissionOutro, VariablesQuizIntro, VariablesQuiz];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { FlubFlub } from '../../characters/Aliens';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\n\nconst Intro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: FlubFlub,\n text: t`Now let’s send you out on another mission. This time we’ll know exactly how many large and small asteroids you’ve blown up by looking at the values in the variables.`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport MissionSlide from '../../../../general/MissionSlide';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst MissionIntro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n {t`Destroy as many asteroids as possible in the given time.`}\n );\n};\n\nexport default MissionIntro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AsteroidGame, { TAsteriodQuestion } from '../../../../interactive/asteroid/AsteroidGame';\nimport smallAsteroid from '../../../../../assets/games/space/asteroid--small.svg';\nimport largeAsteroid from '../../../../../assets/games/space/asteroid--large.svg';\nimport { VariablesData } from '../..';\nimport { t } from 'ttag';\n\nconst MissionGame: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const gameData: TAsteriodQuestion[] = [\n {\n scoreVisible: false,\n name: data.name,\n nameVisible: true,\n duration: 10,\n types: [\n { asteroidValue: 1, asteroidName: t`Small`, asteroidImage: smallAsteroid, scoreVisible: true },\n {\n asteroidValue: 1,\n asteroidName: t`Large`,\n asteroidImage: largeAsteroid,\n asteroidWidth: 40,\n scoreVisible: true,\n },\n ],\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default MissionGame;\n","import React from 'react';\nimport { t } from 'ttag';\nimport { VariablesData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { FlubFlub, GlibGlob } from '../../characters/Aliens';\n\nconst MissionOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: FlubFlub,\n text: t`Wow! I haven’t seen a beginner blast asteroids like that before!`,\n buttonText: t`Thanks!`,\n },\n {\n character: GlibGlob,\n text: t`You are right... We are going to start assigning you to some more important missions ${data.name}. You seem to be finding this too easy.`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default MissionOutro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { FlubFlub } from '../../characters/Aliens';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\n\nconst Intro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: FlubFlub,\n text: t`You blast asteroids so quick, I think we need a new variable to keep track of the ‘Total’ number of asteroids you’ve destroyed!`,\n buttonText: t`Next`,\n },\n {\n character: FlubFlub,\n text: t`I need a rule to calculate the total number of asteroids you’ve blasted using the data in our existing variables. I'll turn this rule into code on the ship’s computer. Do you think you can help?`,\n buttonText: t`Sure!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { FlubFlub } from '../../characters/Aliens';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\n\nconst Intro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: FlubFlub,\n text: t`Perfect. Now we have a new variable called ‘Total’ which will help you on this next tricky mission. This time you have to destroy a total of at least 10 asteroids! Good luck.`,\n buttonText: t`Sure!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport MissionSlide from '../../../../general/MissionSlide';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst MissionIntro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n {t`Destroy at least 10 asteroids in the given time.`}\n );\n};\n\nexport default MissionIntro;\n","import { motion } from 'framer-motion';\nimport React from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport paint_stroke from '../../../../assets/misc/paint-stroke.svg';\nimport ModalOverlay from '../../../general/ModalOverlay';\nimport { t } from 'ttag';\n\nconst TimeoutModal: React.FC<{ onClose: () => void; show: boolean }> = ({ onClose, show }) => {\n const header = (\n \n

\n {t`Time's up!`}\n

\n \"\"\n
\n );\n\n const footer = ;\n\n return (\n onClose()} backgroundColor=\"#E73981\">\n \n \n

{t`Too slow!`}

\n

\n {t`You did not manage to destroy enough asteroids in the given time. See if you can destroy more next time`}\n .\n

\n \n
\n
\n );\n};\n\nexport default TimeoutModal;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AsteroidGame, { TAsteriodQuestion } from '../../../../interactive/asteroid/AsteroidGame';\nimport smallAsteroid from '../../../../../assets/games/space/asteroid--small.svg';\nimport largeAsteroid from '../../../../../assets/games/space/asteroid--large.svg';\nimport { VariablesData } from '../..';\nimport TimeoutModal from '../../components/TimeoutModal';\nimport { t } from 'ttag';\n\nconst MissionGame: React.FC> = ({ defaultHeader, nextSlide, data, gotoSlide, currentIndex }) => {\n const [show, setShow] = useState(false);\n const gameData: TAsteriodQuestion[] = [\n {\n scoreVisible: true,\n nameVisible: true,\n name: data.name,\n duration: 30,\n types: [\n { asteroidValue: 1, asteroidName: t`Small`, asteroidImage: smallAsteroid, scoreVisible: true },\n {\n asteroidValue: 1,\n asteroidName: t`Large`,\n asteroidImage: largeAsteroid,\n scoreVisible: true,\n asteroidWidth: 40,\n },\n ],\n },\n ];\n\n return (\n \n gotoSlide(currentIndex - 1)} />\n {}}\n reportGameScore={(score: number) => {\n data.setGameScore(score);\n if (score >= 10) {\n nextSlide();\n } else {\n setShow(true);\n }\n }}\n >\n \n );\n};\n\nexport default MissionGame;\n","import React from 'react';\nimport { t } from 'ttag';\nimport { VariablesData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { FlubFlub, GlibGlob } from '../../characters/Aliens';\n\nconst MissionOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: GlibGlob,\n text: t`Wow ${data.name}! You breezed through that mission like the target of 10 asteroids was nothing!`,\n buttonText: t`Thanks!`,\n },\n {\n character: FlubFlub,\n text: t`I’ve just had a message from Asteroid Blaster Command (ABC). The large asteroids contain a rare metal called Zinon which we can collect when we blast them.`,\n buttonText: t`Next`,\n },\n {\n character: FlubFlub,\n text: t`There are 2 lots of Zinon in each large asteroid. I need a rule to help me code the ‘Zinon’ variable on the ship’s computer so it tracks how much you’ve collected. Can you help?`,\n buttonText: t`Sure!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default MissionOutro;\n","import React, { useState } from 'react';\nimport { Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Content from '../../../../general/Content';\nimport MultipleChoice, { TMultiChoiceQuestion } from '../../../../interactive/quiz/multi-choice/MultiChoice';\nimport SkillModal from '../../../../general/SkillModal';\nimport evaluation from '../../../../../assets/icons/icon_evaluation.svg';\n\nconst VariablesQuiz: React.FC = ({ defaultHeader, nextSlide, gotoSlide, currentIndex }) => {\n const [show, setShow] = useState(false);\n\n const gameData: TMultiChoiceQuestion[] = [\n {\n question: t`Which of these rules will help keep track of how much Zinon is collected?`,\n answers: [\n { text: t`If a small asteroid is blasted then increase ‘Zinon’ by 2`, correct: false },\n { text: t`If a large asteroid is blasted then reduce ‘Zinon’ by 2`, correct: false },\n { text: t`If a large asteroid is blasted then increase ‘Zinon’ by 2`, correct: true },\n ],\n },\n ];\n\n return (\n \n \n \n \n setShow(true)}\n onIncorrectAnswer={() => gotoSlide(currentIndex - 1)}\n />\n \n \n \n \n \n );\n};\n\nexport default VariablesQuiz;\n","import Intro from './Intro';\nimport MissionIntro from './MissionIntro';\nimport MissionGame from './MissionGame';\nimport MissionOutro from './MissionOutro';\nimport VariablesQuiz from './VariablesQuiz';\n\nexport default [Intro, MissionIntro, MissionGame, MissionOutro, VariablesQuiz];\n","import React from 'react';\nimport { t } from 'ttag';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { GlibGlob } from '../../characters/Aliens';\n\nconst MissionOutro: React.FC = ({ defaultHeader, nextSlide }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: GlibGlob,\n text: t`That's a lot of Zinon in one mission! This is unbelievable. You’re going to be a legend to all of us asteroid blasters!`,\n buttonText: t`Thanks!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default MissionOutro;\n","import Intro from './Intro';\nimport MissionIntro from './MissionIntro';\nimport MissionGame from './MissionGame';\nimport MissionOutro from './MissionOutro';\n\nexport default [Intro, MissionIntro, MissionGame, MissionOutro];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\nimport { FlubFlub } from '../../characters/Aliens';\nimport { VariablesData } from '../../index';\n\nconst VariablesQuizOutro2: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: FlubFlub,\n text: t`Well done ${data.name}. Let's send you out again with the new 'Zinon' variable and see how much you can collect!`,\n buttonText: t`Sure!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default VariablesQuizOutro2;\n","import React from 'react';\nimport MissionSlide from '../../../../general/MissionSlide';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst MissionIntro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n {t`Collect at least 10 lots of Zinon by blasting the large asteroids`}\n );\n};\n\nexport default MissionIntro;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AsteroidGame, { TAsteriodQuestion } from '../../../../interactive/asteroid/AsteroidGame';\nimport smallAsteroid from '../../../../../assets/games/space/asteroid--small.svg';\nimport largeAsteroid from '../../../../../assets/games/space/asteroid--large.svg';\nimport { VariablesData } from '../..';\nimport TimeoutModal from '../../components/TimeoutModal';\nimport { t } from 'ttag';\n\nconst MissionGame: React.FC> = ({ defaultHeader, nextSlide, data, currentIndex, gotoSlide }) => {\n const [show, setShow] = useState(false);\n const gameData: TAsteriodQuestion[] = [\n {\n scoreVisible: true,\n zinonVisible: true,\n nameVisible: true,\n name: data.name,\n duration: 30,\n types: [\n { asteroidValue: 1, asteroidName: t`Small`, asteroidImage: smallAsteroid, scoreVisible: true },\n {\n asteroidValue: 2,\n asteroidName: t`Large`,\n asteroidImage: largeAsteroid,\n scoreVisible: true,\n asteroidWidth: 40,\n zinionEnabled: true,\n },\n ],\n },\n ];\n\n return (\n \n gotoSlide(currentIndex - 1)} />\n {}}\n reportGameScore={(score: number, scoreObject: object) => {\n data.setGameScore(score);\n // console.log('scores', scoreObject, gameData[0].types[1].asteroidName, (scoreObject as any)[gameData[0].types[1].asteroidName])\n if ((scoreObject as any)[gameData[0].types[1].asteroidName] >= 10) {\n nextSlide();\n } else {\n setShow(true);\n }\n }}\n >\n \n );\n};\n\nexport default MissionGame;\n","import React from 'react';\nimport { t } from 'ttag';\nimport { VariablesData } from '../..';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { FlubFlub, GlibGlob } from '../../characters/Aliens';\n\nconst MissionOutro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: GlibGlob,\n text: t`I... I... I can’t believe it. You just wiped out a whole asteroid field in one mission. We are going to start running out of asteroids to blast at this rate.`,\n buttonText: t`Next`,\n },\n {\n character: FlubFlub,\n text: t`Wow! And the variables helped us keep track of how many large and small asteroids you blasted along with how much Zinon you collected. ${data.name}, you rock!`,\n buttonText: t`Next`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default MissionOutro;\n","import Intro from './Intro';\nimport MissionIntro from './MissionIntro';\nimport MissionGame from './MissionGame';\nimport MissionOutro from './MissionOutro';\n\nexport default [Intro, MissionIntro, MissionGame, MissionOutro];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { GlibGlob } from '../../characters/Aliens';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\nimport { VariablesData } from '../..';\n\nconst Intro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: GlibGlob,\n text: t`Now ${data.name}, we have one final mission for you. It’s a serious challenge, I don’t think even I could do it... Are you up for it?`,\n buttonText: t`Sure!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import React from 'react';\nimport MissionSlide from '../../../../general/MissionSlide';\nimport { ISlide } from '../../../../core/Slide';\nimport { t } from 'ttag';\n\nconst MissionIntro: React.FC = ({ nextSlide, defaultHeader }) => {\n return (\n {t`Blast a total of at least 30 asteroids in the given time.`}\n );\n};\n\nexport default MissionIntro;\n","import React, { useState } from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport AsteroidGame, { TAsteriodQuestion } from '../../../../interactive/asteroid/AsteroidGame';\nimport smallAsteroid from '../../../../../assets/games/space/asteroid--small.svg';\nimport largeAsteroid from '../../../../../assets/games/space/asteroid--large.svg';\nimport { VariablesData } from '../..';\nimport TimeoutModal from '../../components/TimeoutModal';\nimport { t } from 'ttag';\n\nconst MissionGame: React.FC> = ({ defaultHeader, nextSlide, data, currentIndex, gotoSlide }) => {\n const [show, setShow] = useState(false);\n const gameData: TAsteriodQuestion[] = [\n {\n scoreVisible: true,\n zinonVisible: true,\n nameVisible: true,\n name: data.name,\n duration: 45,\n types: [\n { asteroidValue: 1, asteroidName: t`Small`, asteroidImage: smallAsteroid, scoreVisible: true },\n {\n asteroidValue: 2,\n asteroidName: t`Large`,\n asteroidImage: largeAsteroid,\n scoreVisible: true,\n asteroidWidth: 40,\n zinionEnabled: true,\n },\n ],\n },\n ];\n\n return (\n \n gotoSlide(currentIndex - 1)} />\n {}}\n reportGameScore={(score: number) => {\n data.setGameScore(score);\n if (score >= 20) {\n nextSlide();\n } else {\n setShow(true);\n }\n }}\n >\n \n );\n};\n\nexport default MissionGame;\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport { CharacterDialogue } from '../../../../general/Character';\nimport { AllAliens } from '../../characters/Aliens';\nimport useFooterButtonRenderer from '../../../../misc/FooterButtonRenderer';\nimport { DialogueData } from '../../../../general/Dialogue';\nimport { t } from 'ttag';\nimport { VariablesData } from '../..';\n\nconst Intro: React.FC> = ({ defaultHeader, nextSlide, data }) => {\n const [footer, buttonRenderer] = useFooterButtonRenderer();\n\n const dialogue: DialogueData[] = [\n {\n character: AllAliens,\n text: t`From both of us on the Asteroid Blaster ship, we thank you. You are always welcome to join the crew! We hope to blast more asteroids with you soon.`,\n buttonText: t`Bye!`,\n buttonAction: nextSlide,\n },\n ];\n\n return (\n \n \n \n );\n};\n\nexport default Intro;\n","import Recap from './Recap';\nimport Goodbye from './Goodbye';\n\nexport default [Recap, Goodbye];\n","import React from 'react';\nimport Slide, { ISlide } from '../../../../core/Slide';\nimport Content from '../../../../general/Content';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport variables from '../../../../../assets/icons/icon_variables.svg';\nimport evaluation from '../../../../../assets/icons/icon_evaluation.svg';\nimport paint_stroke from '../../../../../assets/misc/paint-stroke.svg';\nimport { t } from 'ttag';\n\nconst Recap: React.FC = ({ nextSlide, defaultHeader }) => {\n const footer = ;\n\n return (\n \n \n \n

{t`You have completed`}

\n

{t`Asteroid Blasters`}

\n \"\"\n \n \n \n \"\"\n \n \n

{t`Variables`}

\n

{t`You learnt what a variable is and why they're useful.`}

\n \n
\n
\n \n \n \n \"\"\n \n \n

{t`Evaluation`}

\n

{t`You made judgements on how to use the variables.`}

\n \n
\n
\n \n
\n
\n );\n};\n\nexport default Recap;\n","import { motion } from 'framer-motion';\nimport React, { useContext } from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport { t } from 'ttag';\nimport largeAsteroid from '../../../../assets/games/space/asteroid--large.svg';\nimport smallAsteroid from '../../../../assets/games/space/asteroid--small.svg';\nimport characters from '../../../../assets/misc/va-endslide.svg';\nimport sfx from '../../../../services/sounds';\nimport Slide, { ISlide } from '../../../core/Slide';\nimport Content from '../../../general/Content';\nimport { VolumeContext } from '../../../misc/volume-context';\nimport stars_1 from '../../../../assets/games/space/stars_1.svg';\nimport stars_2 from '../../../../assets/games/space/stars_2.svg';\nimport stars_3 from '../../../../assets/games/space/stars_3.svg';\n\nconst EndSlide: React.FC = ({ onComplete, defaultHeader }) => {\n const footer = ;\n const { volume } = useContext(VolumeContext);\n\n let moduleName = t`Asteroid Blasters`;\n\n if (volume) sfx.cheer.play();\n\n let animation = {\n scale: [0, 1, 1, 1, 1, 1, 1, 0],\n rotate: [0, 0, 20, -20, 20, -20, 0, 0],\n };\n let times = [0, 0.1, 0.25, 0.4, 0.55, 0.7, 0.8, 0.9];\n\n return (\n \n \n \n {/**/}\n\n \n \n \n \n \n
\n \n \n \n \"\"\n

{t`You have completed ${moduleName}!`}

\n

{t`Congratulations!`}

\n \n \n
\n
\n {t`Let your parent know what you’ve learnt about in ${moduleName} and if they know any family or friends who might also enjoy it they can share it via Facebook or Twitter`}

\n \n \n \n \n \n \n \n \n \n \n \n \n \n
\n
\n );\n};\n\nexport default EndSlide;\n","import { motion, useAnimation } from 'framer-motion';\nimport React, { useEffect, useState } from 'react';\nimport { Button, Col, Row } from 'react-bootstrap';\nimport styled from 'styled-components';\nimport { t } from 'ttag';\nimport large from '../../../../assets/games/space/asteroid--large.svg';\nimport small from '../../../../assets/games/space/asteroid--small.svg';\nimport rocket from '../../../../assets/games/space/spaceship.svg';\nimport stars_1 from '../../../../assets/games/space/stars_1.svg';\nimport stars_2 from '../../../../assets/games/space/stars_2.svg';\nimport stars_3 from '../../../../assets/games/space/stars_3.svg';\nimport { randomIntFromBetween } from '../../../../helpers/numbers';\nimport Slide, { ISlide } from '../../../core/Slide';\n\nconst StartSlide: React.FC = ({ nextSlide, defaultHeader }) => {\n const begin = (\n \n );\n const [smallX, setSmallX] = useState(randomIntFromBetween(8, 92));\n const [smallY, setSmallY] = useState(randomIntFromBetween(0, 280));\n const [largeX, setLargeX] = useState(randomIntFromBetween(8, 92));\n const [largeY, setLargeY] = useState(randomIntFromBetween(0, 280));\n\n const controls_small = useAnimation();\n const controls_large = useAnimation();\n\n useEffect(() => {\n const moveSmall = () => {\n setSmallX(randomIntFromBetween(8, 92));\n setSmallY(randomIntFromBetween(0, 280));\n controls_small.start({\n scale: [0, 1.1, 1, 1, 1.1, 0],\n transition: { duration: 2, times: [0, 0.2, 0.3, 0.7, 0.8, 1] },\n });\n };\n\n const moveLarge = () => {\n setLargeX(randomIntFromBetween(8, 92));\n setLargeY(randomIntFromBetween(0, 280));\n controls_large.start({\n scale: [0, 1.1, 1, 1, 1.1, 0],\n transition: { duration: 2, times: [0, 0.2, 0.3, 0.7, 0.8, 1] },\n });\n };\n\n let a = setInterval(() => moveSmall(), 5000);\n let b = setInterval(() => moveLarge(), 3000);\n\n return () => {\n clearInterval(a);\n clearInterval(b);\n };\n }, [controls_small, controls_large]);\n\n return (\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n {t`Asteroid Blasters`}\n \n \n \n \n \n );\n};\n\nconst Title = styled.h1`\n font-family: 'BT Font Extra Bold';\n background-color: black;\n display: inline-block;\n padding: 10px 20px;\n border-radius: 5px;\n border: 2px solid #e60050;\n margin: 0;\n font-size: 30px;\n`;\n\nconst TitleWrap = styled.div`\n font-family: 'BT Font Extra Bold';\n background-color: transparent;\n display: inline-block;\n padding: 5px;\n border-radius: 5px;\n border: 2px solid #ffe202;\n position: relative;\n z-index: 999;\n`;\n\nconst StartContent = styled.div`\n font-family: 'BT Font Extra Bold';\n width: 100%;\n text-align: center;\n position: relative;\n padding: 30px 0;\n overflow: hidden;\n`;\ninterface WrapperProps {\n top: number;\n left: number;\n}\n\nconst Asteroid = styled.div`\n position: absolute;\n bottom: ${(props) => props.top || '0'}px;\n left: calc(${(props) => props.left || '0'}% - 20px);\n height: 40px;\n width: 40px;\n z-index: 0;\n`;\n\nexport default StartSlide;\n","import React, { useContext, useEffect, useState } from 'react';\nimport { Helmet } from 'react-helmet';\nimport logo from '../../../assets/brand/logo-barefoot.svg';\nimport { filter } from '../../../helpers/filter';\nimport sfx from '../../../services/sounds';\nimport Module, { IModule } from '../../core/Module';\nimport MuteButton from '../../misc/MuteButton';\nimport { VolumeContext } from '../../misc/volume-context';\nimport intro from './units/1-intro';\nimport mission_one from './units/2-mission-one';\nimport mission_two from './units/3-mission-two';\nimport mission_three from './units/4-mission-three';\nimport mission_four from './units/5-mission-four';\nimport mission_five from './units/6-mission-five';\nimport goodbye from './units/7-goodbye';\nimport EndSlide from './units/EndSlide';\nimport StartSlide from './units/StartSlide';\n\n\n\n\nexport type VariablesData = {\n name: string;\n setName: (name: string) => void;\n gameScore: number;\n setGameScore: (score: number) => void;\n gameScoreObject: number;\n setGameScoreObject: (scoreObj: object) => void;\n};\n\nconst Variables: React.FC = ({ onComplete }) => {\n const [name, setName] = useState(null);\n const [gameScore, setGameScore] = useState(0);\n const [gameScoreObject, setGameScoreObject] = useState({});\n const { volume } = useContext(VolumeContext);\n\n const slides = [\n StartSlide,\n ...intro,\n ...mission_one,\n ...mission_two,\n ...mission_three,\n ...mission_four,\n ...mission_five,\n ...goodbye,\n EndSlide,\n ];\n\n const barefootLogo = (\n
\n \"BT-Barefoot\"\n \n
\n );\n\n useEffect(() => {\n setName(filter.clean(name ?? ''));\n }, [name, setName]);\n\n useEffect(() => {\n let theme = sfx.themeSpace.load().play();\n return () => {\n if (theme !== undefined) {\n sfx.themeSpace.stop(theme);\n }\n };\n }, []);\n\n return (\n \n \n Asteroid Blasters | Barefoot Games\n \n \n \n );\n};\n\nexport default Variables;\n","import Cookies from 'js-cookie';\nimport React, { useContext, useState } from 'react';\nimport { Redirect, Route, RouteProps, Switch, useHistory, useLocation } from 'react-router-dom';\nimport useLanguage from '../../hooks/language';\nimport { actions, sendAnalytics } from '../../services/analytics';\nimport VoiceoverContext from '../misc/voiceover-context';\nimport VolumeContext from '../misc/volume-context';\nimport Abstraction from './abstraction';\nimport CodeCracking from './codecracking';\nimport ColourfulKits from './colourfulkits';\nimport CyberSecurity from './cybersecurity';\nimport Festive from './festive';\nimport Sorting from './sorting';\nimport TheDiamond from './theheist';\nimport Traffic from './traffic';\nimport Variables from './variables';\n\nconst queryString = require('query-string');\n\nconst ModuleRouter: React.FC = () => {\n const history = useHistory();\n const location = useLocation();\n const [lang, setLang] = useLanguage(Cookies.get('bfg_lang') ?? 'en');\n\n const { volume, voiceoverMuted } = useContext(VolumeContext);\n const [voiceover, setVoiceover] = useState();\n const [currentVoiceover, setCurrentVoiceover] = useState();\n\n const playVoiceover = (spriteName: string) => {\n if (voiceover && spriteName) {\n let vo: number;\n\n stopVoiceover();\n\n if (voiceoverMuted !== undefined && !voiceoverMuted) {\n vo = voiceover.play(spriteName);\n setCurrentVoiceover(vo);\n }\n }\n }\n\n const stopVoiceover = () => {\n if (voiceover && currentVoiceover) {\n voiceover.stop(currentVoiceover);\n }\n }\n\n // console.log(location);\n\n const onComplete = (name: string) => {\n // console.log('Completed!', name);\n sendAnalytics(name, actions.completeModule, {});\n\n // let queryObj = queryString.parse(location.search);\n\n // if (\n // queryObj.ref &&\n // validURL(queryObj.ref) &&\n // (queryObj.ref.includes('https://www.bt.com') || queryObj.ref.includes('https://www.barefootcomputing.org'))\n // ) {\n // console.log('redirect to ', queryObj.ref);\n // window.location.replace(queryObj.ref);\n // } else {\n // console.log('redirect to sft');\n // window.location.replace('https://www.bt.com/skillsfortomorrow/parents/learning-at-home.html');\n // }\n\n // console.log();\n history.push('/');\n };\n\n const onCompleteBarefoot = (name: string) => {\n sendAnalytics(name, actions.completeModule, {});\n\n history.push('/');\n };\n\n return (\n \n \n \n \n \n \n \n\n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n \n\n \n \n \n\n \n \n \n \n \n\n \n \n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n\n \n \n \n \n \n \n \n \n \n \n\n \n

Page not found!

\n
\n
\n );\n};\n\nconst LocaleRoute: React.FC = ({ children, ...rest }) => {\n const [lang, setLang] = useLanguage(Cookies.get('bfg_lang') ?? 'en');\n\n return (\n {\n if (location.pathname.indexOf('/cy/') !== -1 && lang !== 'cy') {\n setLang('cy');\n window.location.reload();\n } else if (location.pathname.indexOf('/cy/') === -1 && lang === 'cy') {\n setLang('en');\n window.location.reload();\n }\n\n return children;\n }}\n />\n );\n};\n\nfunction validURL(str: string) {\n var pattern = new RegExp(\n '^(https?:\\\\/\\\\/)?' + // protocol\n '((([a-z\\\\d]([a-z\\\\d-]*[a-z\\\\d])*)\\\\.)+[a-z]{2,}|' + // domain name\n '((\\\\d{1,3}\\\\.){3}\\\\d{1,3}))' + // OR ip (v4) address\n '(\\\\:\\\\d+)?(\\\\/[-a-z\\\\d%_.~+]*)*' + // port and path\n '(\\\\?[;&a-z\\\\d%_.~+=-]*)?' + // query string\n '(\\\\#[-a-z\\\\d_]*)?$',\n 'i',\n ); // fragment locator\n return !!pattern.test(str);\n}\n\nexport default ModuleRouter;\n","import React, { useState } from 'react';\nimport { BrowserRouter as Router, Switch, Route, Link } from 'react-router-dom';\nimport ModuleRouter from './modules/ModuleRouter';\nimport { Button, Col, Container, Row } from 'react-bootstrap';\nimport VolumeContext from './misc/volume-context';\n\nimport barefoot_zoo from '../assets/thumbs/barefoot_zoo.jpg';\nimport code_cracking from '../assets/thumbs/code_cracking.jpg';\nimport sorting_it_out from '../assets/thumbs/sorting_it_out.jpg';\nimport asteroid_blaster from '../assets/thumbs/asteroid_blasters.jpg';\nimport colourful_kits from '../assets/thumbs/colourful_kits.jpg';\nimport the_diamond from '../assets/thumbs/the_diamond.jpg';\nimport festive from '../assets/thumbs/festive.jpg';\nimport phisherman from '../assets/thumbs/phisherman.jpg';\nimport tricky_traffic from '../assets/thumbs/tricky_traffic.jpg';\nimport { volume as v } from '../services/volume';\n\nimport styled from 'styled-components';\n\nconst App: React.FC = () => {\n const [volume, setVolume] = useState(v);\n const [voiceoverMuted, setVoiceoverMuted] = useState(false)\n const [musicMuted, setMusicMuted] = useState(false)\n const value = { volume, setVolume, voiceoverMuted, setVoiceoverMuted, musicMuted, setMusicMuted };\n\n return (\n \n \n \n \n \n \n \n

Barefoot Games

\n
\n \n
\n \n \n \n \n

Barefoot Zoo

\n 5-11 YEARS\n \n \n \n \n \n \n \n \n

Code Cracking

\n 7-11 YEARS\n \n \n \n \n \n \n \n \n

Colourful Kits

\n 5-11 YEARS\n \n \n \n \n \n \n \n \n

The Diamond

\n 9-11 YEARS\n \n \n \n \n \n \n \n \n

Sorting it Out!

\n 5-7 YEARS\n \n \n \n \n \n \n \n \n

Asteroid Blasters

\n 7-11 YEARS\n \n \n \n \n \n\n \n \n \n\n

Gift Wrapped

\n 4-7 YEARS\n \n \n \n \n \n \n \n \n\n

The Phisherman

\n 8-11 YEARS\n \n \n \n \n \n \n \n \n\n

Tricky Traffic

\n 7-11 YEARS\n \n \n \n \n \n {/* \n
\n\n

Cyber Security

\n \n \n \n
\n */}\n
\n
\n
\n \n
\n
\n
\n );\n};\n\nconst Ages = styled.p`\n text-transform: uppercase;\n margin-bottom: 10px;\n color: #777777;\n font-size: 16px;\n`;\n\nexport default App;\n","// This optional code is used to register a service worker.\n// register() is not called by default.\n\n// This lets the app load faster on subsequent visits in production, and gives\n// it offline capabilities. However, it also means that developers (and users)\n// will only see deployed updates on subsequent visits to a page, after all the\n// existing tabs open on the page have been closed, since previously cached\n// resources are updated in the background.\n\n// To learn more about the benefits of this model and instructions on how to\n// opt-in, read https://bit.ly/CRA-PWA\n\nconst isLocalhost = Boolean(\n window.location.hostname === 'localhost' ||\n // [::1] is the IPv6 localhost address.\n window.location.hostname === '[::1]' ||\n // 127.0.0.0/8 are considered localhost for IPv4.\n window.location.hostname.match(/^127(?:\\.(?:25[0-5]|2[0-4][0-9]|[01]?[0-9][0-9]?)){3}$/),\n);\n\nexport function register(config) {\n if (process.env.NODE_ENV === 'production' && 'serviceWorker' in navigator) {\n // The URL constructor is available in all browsers that support SW.\n const publicUrl = new URL(process.env.PUBLIC_URL, window.location.href);\n if (publicUrl.origin !== window.location.origin) {\n // Our service worker won't work if PUBLIC_URL is on a different origin\n // from what our page is served on. This might happen if a CDN is used to\n // serve assets; see https://github.com/facebook/create-react-app/issues/2374\n return;\n }\n\n window.addEventListener('load', () => {\n const swUrl = `${process.env.PUBLIC_URL}/service-worker.js`;\n\n if (isLocalhost) {\n // This is running on localhost. Let's check if a service worker still exists or not.\n checkValidServiceWorker(swUrl, config);\n\n // Add some additional logging to localhost, pointing developers to the\n // service worker/PWA documentation.\n navigator.serviceWorker.ready.then(() => {\n console.log(\n 'This web app is being served cache-first by a service ' +\n 'worker. To learn more, visit https://bit.ly/CRA-PWA',\n );\n });\n } else {\n // Is not localhost. Just register service worker\n registerValidSW(swUrl, config);\n }\n });\n }\n}\n\nfunction registerValidSW(swUrl, config) {\n navigator.serviceWorker\n .register(swUrl)\n .then((registration) => {\n registration.onupdatefound = () => {\n const installingWorker = registration.installing;\n if (installingWorker == null) {\n return;\n }\n installingWorker.onstatechange = () => {\n if (installingWorker.state === 'installed') {\n if (navigator.serviceWorker.controller) {\n // At this point, the updated precached content has been fetched,\n // but the previous service worker will still serve the older\n // content until all client tabs are closed.\n console.log(\n 'New content is available and will be used when all ' +\n 'tabs for this page are closed. See https://bit.ly/CRA-PWA.',\n );\n\n // Execute callback\n if (config && config.onUpdate) {\n config.onUpdate(registration);\n }\n } else {\n // At this point, everything has been precached.\n // It's the perfect time to display a\n // \"Content is cached for offline use.\" message.\n console.log('Content is cached for offline use.');\n\n // Execute callback\n if (config && config.onSuccess) {\n config.onSuccess(registration);\n }\n }\n }\n };\n };\n })\n .catch((error) => {\n console.error('Error during service worker registration:', error);\n });\n}\n\nfunction checkValidServiceWorker(swUrl, config) {\n // Check if the service worker can be found. If it can't reload the page.\n fetch(swUrl, {\n headers: { 'Service-Worker': 'script' },\n })\n .then((response) => {\n // Ensure service worker exists, and that we really are getting a JS file.\n const contentType = response.headers.get('content-type');\n if (response.status === 404 || (contentType != null && contentType.indexOf('javascript') === -1)) {\n // No service worker found. Probably a different app. Reload the page.\n navigator.serviceWorker.ready.then((registration) => {\n registration.unregister().then(() => {\n window.location.reload();\n });\n });\n } else {\n // Service worker found. Proceed as normal.\n registerValidSW(swUrl, config);\n }\n })\n .catch(() => {\n console.log('No internet connection found. App is running in offline mode.');\n });\n}\n\nexport function unregister() {\n if ('serviceWorker' in navigator) {\n navigator.serviceWorker.ready\n .then((registration) => {\n registration.unregister();\n })\n .catch((error) => {\n console.error(error.message);\n });\n }\n}\n","import './services/translation';\nimport 'react-app-polyfill/ie11';\nimport 'react-app-polyfill/stable';\nimport React from 'react';\nimport ReactDOM from 'react-dom';\nimport Bugsnag from '@bugsnag/js';\nimport BugsnagPluginReact from '@bugsnag/plugin-react';\nimport './styles/index.css';\nimport App from './components/App';\nimport * as serviceWorker from './serviceWorker';\nimport './styles/toolkit.scss';\n\nBugsnag.start({\n apiKey: '7a40049fd389b70965a2f14ce943f316',\n plugins: [new BugsnagPluginReact()],\n});\n\nconst ErrorBoundary: any = Bugsnag.getPlugin('react')?.createErrorBoundary(React);\n\nReactDOM.render(\n \n \n \n \n ,\n document.getElementById('root'),\n);\n\n// If you want your app to work offline and load faster, you can change\n// unregister() to register() below. Note this comes with some pitfalls.\n// Learn more about service workers: https://bit.ly/CRA-PWA\nserviceWorker.unregister();\n"],"sourceRoot":""}