Greasy Fork is available in English.
Let's you hear phrases and words from single choice questions based on your browsers speech synthesis (right now only phrases).
当前为
// ==UserScript==
// @name Duolingo HearEverything
// @namespace http://tampermonkey.net/
// @version 0.35
// @description Let's you hear phrases and words from single choice questions based on your browsers speech synthesis (right now only phrases).
// @author Esh
// @match https://*.duolingo.com/*
// @grant GM_setValue
// @grant GM_getValue
// ==/UserScript==
// 0.7: Mutation Observer instead of setInterval
// 0.6: Add voice to choices on click
// 0.6.1: check why not the innerText of the answer is displayed in the full sentence?
// 0.8.1: fix speaking numbers for options
// 0.9: Move speak button near the continue button
// 0.10.2: set better newPage = true - deleted
// 0.10.3: debug quirks from setting newPage
// 0.11: cleaned up some code
// 0.12: finally got rid of the new page problem
// 0.13: show some debug infos on the page
// 0.14: more working reading
// 0.15: added more challenges to read
// 0.16: Challenges, which work (some partially) // FORM, TRANSLATE, DIALOGUE, GAP_FILL, COMPLETE_REVERSE_TRANSLATION, TAP_COMPLETE
// 0.17: added shortcut ALT+l
// 0.18: listening button for DIALOGUE and bugfixing TRANSLATE
// 0.19: better listening button
// 0.20: Voice selection
// 0.21: cleaned up code
// 0.22: challenge translate (tap) working
// 0.22.1: no speaker button with translate from learning language
// 0.23: Alt + l for Duo buttons, too
// 0.24: tap-complete working
// 0.25: form challenge working
// 0.25.1: bugfix: challenge-translate
// 0.26: challenge read-comprehension
// 0.27: challenge name
// 0.28: autoplay for challenge translate
// 0.29: replace prompt at challenge gap fill
// 0.30: gap fill auto play
// 0.30.1: fixed playback stops
// 0.31: stops playback on new page
// 0.31.1: fixed gap fill not reading whole answer
// 0.32: auto play for complete reverse translation
// 0.33: toggle options readout at gap fill challenge
// 0.34: challenge dialogue auto play, auto intro, play options
// 0.34.1: bug fix only render intro button at challenge dialogue
// 0.35: challenge tapComplete
/*
// 0.30.2: TODO: move autoplay and config check/uncheck checkbox GM_setValue to own function
// 0.30.3: TODO: move let utter to own function
// TODO: close button / close with outside click on config bubble
// TODO: config for challenges
// TODO: replace gaps with correct answers FORM,
// TODO: DIALOGUE should start with reading speaker 1
// TODO: maybe add listening to speaking experience?
// TODO: clean up the script even more
// TODO: Tipp-Page
// TODO: Hoots
// TODO: selector where the speak button should be
// TODO: translateInput speaker position top - where to place?
// TODO: Voice selector (automagic) - 1/4 done
// TODO: Add autoplay selector
// more examples on the bottom
// TODO: popup could be toggled by mouseover/mouseout
*/
const VERSION = '0.35 -- 3';
const LOG_STRING = 'Duolingo HearEverything: ';
const buttonPosition = 'bottom'; // bottom / top allowed
let voiceSelect;
let config = {};
const DEBUG = false;
let synth = window.speechSynthesis;
let voices = [];
let newPage = false;
let addedSpeech = false;
let speakerButton = `
<a class="_3UpNo _3EXrQ _2VrUB" data-test="speaker-button" title="Listen" id="speak">
<svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 94 73" width="94" height="73" preserveAspectRatio="xMidYMid meet" style="padding-left: 20%; width: 80%; height: 100%; transform: translate3d(0px, 0px, 0px);">
<defs>
<clipPath id="__lottie_element_402"><rect width="94" height="73" x="0" y="0"></rect></clipPath>
<clipPath id="__lottie_element_404">
<path d="M0,0 L1000,0 L1000,1038 L0,1038z"></path>
</clipPath>
<clipPath id="__lottie_element_409">
<path d="M0,0 L1338,0 L1338,738 L0,738z"></path>
</clipPath>
</defs>
<g clip-path="url(#__lottie_element_402)">
<g clip-path="url(#__lottie_element_404)" transform="matrix(0.26499998569488525,0,0,0.26499998569488525,-84.5,-101.53498840332031)" opacity="1" style="display: block;">
<g transform="matrix(1.3600000143051147,0,0,1.3600000143051147,516.219970703125,522.4000244140625)" opacity="0.9069389991639046" style="display: block;">
<path stroke-linecap="round" stroke-linejoin="miter" fill-opacity="0" stroke-miterlimit="4" stroke="rgb(28,176,246)" stroke-opacity="1" stroke-width="22.485592375331898" d=" M48.88100051879883,-88.13400268554688 C79.822998046875,-70.9219970703125 100.77899932861328,-37.88800048828125 100.77899932861328,0 C100.77899932861328,37.9109992980957 79.7979965209961,70.96199798583984 48.82500076293945,88.16500091552734"></path>
</g>
<g style="display: block;" transform="matrix(1.3600000143051147,0,0,1.3600000143051147,516.219970703125,522.4000244140625)" opacity="1">
<path stroke-linecap="round" stroke-linejoin="miter" fill-opacity="0" stroke-miterlimit="4" stroke="rgb(28,176,246)" stroke-opacity="1" stroke-width="20.500305987715482" d=" M24.131000518798828,-42.808998107910156 C39.055999755859375,-34.37099838256836 49.14099884033203,-18.354000091552734 49.14099884033203,0 C49.14099884033203,18.386999130249023 39.02000045776367,34.42900085449219 24.049999237060547,42.854000091552734"></path>
</g>
<g clip-path="url(#__lottie_element_409)" transform="matrix(1.0370399951934814,0,0,0.9629600048065186,136.53640747070312,163.66775512695312)" opacity="1" style="display: block;">
<g transform="matrix(1,0,0,1,260.93701171875,373.6780090332031)" opacity="1" style="display: block;">
<g opacity="1" transform="matrix(6,0,0,6,0,0)">
<path fill="rgb(28,176,246)" fill-opacity="1" d=" M-8.293000221252441,-11.675000190734863 C-8.293000221252441,-11.675000190734863 -0.12300000339746475,-11.675000190734863 -0.12300000339746475,-11.675000190734863 C2.9070000648498535,-11.675000190734863 5.367000102996826,-9.21500015258789 5.367000102996826,-6.184999942779541 C5.367000102996826,-6.184999942779541 5.367000102996826,6.425000190734863 5.367000102996826,6.425000190734863 C5.367000102996826,9.454999923706055 2.9070000648498535,11.914999961853027 -0.12300000339746475,11.914999961853027 C-0.12300000339746475,11.914999961853027 -8.293000221252441,11.914999961853027 -8.293000221252441,11.914999961853027 C-11.322999954223633,11.914999961853027 -13.782999992370605,9.454999923706055 -13.782999992370605,6.425000190734863 C-13.782999992370605,6.425000190734863 -13.782999992370605,-6.184999942779541 -13.782999992370605,-6.184999942779541 C-13.782999992370605,-9.21500015258789 -11.322999954223633,-11.675000190734863 -8.293000221252441,-11.675000190734863z M-4.980999946594238,-11.656999588012695 C-4.980999946594238,-11.656999588012695 10.218999862670898,-22.32699966430664 10.218999862670898,-22.32699966430664 C11.24899959564209,-23.047000885009766 12.659000396728516,-22.797000885009766 13.369000434875488,-21.777000427246094 C13.638999938964844,-21.39699935913086 13.779000282287598,-20.937000274658203 13.779000282287598,-20.476999282836914 C13.779000282287598,-20.476999282836914 13.779000282287598,20.472999572753906 13.779000282287598,20.472999572753906 C13.779000282287598,21.722999572753906 12.769000053405762,22.732999801635742 11.519000053405762,22.732999801635742 C11.059000015258789,22.732999801635742 10.609000205993652,22.593000411987305 10.218999862670898,22.322999954223633 C10.218999862670898,22.322999954223633 -4.980999946594238,11.652999877929688 -4.980999946594238,11.652999877929688 C-5.580999851226807,11.232999801635742 -5.940999984741211,10.543000221252441 -5.940999984741211,9.803000450134277 C-5.940999984741211,9.803000450134277 -5.940999984741211,-9.807000160217285 -5.940999984741211,-9.807000160217285 C-5.940999984741211,-10.536999702453613 -5.580999851226807,-11.22700023651123 -4.980999946594238,-11.656999588012695z"></path>
<g opacity="1" transform="matrix(1,0,0,1,0,0)"></g>
</g>
</g>
</g>
</g>
</g>
</svg>
</a>
`;
// Element definitions
const WRONG_ANSWER_CLASS = '._1UqAr._1sqiF';
const RIGHT_ANSWER_CLASS = '._1UqAr._1Nmv6';
const RIGHT_CLASS = '._1Nmv6';
const WRONG_CLASS = '._1sqiF';
const ANSWER_HEADLINE = '._1x6Dk';
const ANSWER_CONTAINER = '._2ez4I';
const DIALOGUE_SPEAKER_CLASS = '_29e-M _39MJv _2Hg6H';
// currently used
const ANSWER_CLASS = '._1UqAr';
const ANSWER = 'blame';
const ANSWER_QS = '[data-test~="' + ANSWER + '"]';
const RIGHT_ANSWER = 'blame-correct';
const RIGHT_ANSWER_QS = '[data-test~="' + RIGHT_ANSWER + '"]';
const WRONG_ANSWER = 'blame-incorrect';
const WRONG_ANSWER_QS = '[data-test~="' + WRONG_ANSWER + '"]';
const CHALLENGE_TAP_TOKEN = 'challenge-tap-token'; // challenge-translate (tap)
const CHALLENGE_TAP_TOKEN_QS = '[data-test="' + CHALLENGE_TAP_TOKEN + '"]';
const WORD_BANK = 'word-bank'; // if exists it's tap instead of keyboard (challenge-translate)
const WORD_BANK_QS = '[data-test="' + WORD_BANK + '"]';
const TRANSLATE_INPUT = 'challenge-translate-input';
const TRANSLATE_INPUT_QS = '[data-test="' + TRANSLATE_INPUT + '"]';
const SPEAKER_BUTTON = 'speaker-button';
const SPEAKER_BUTTON_QS = '[data-test="' + SPEAKER_BUTTON + '"]';
const HINT_SENTENCE = 'hint-sentence';
const HINT_SENTENCE_QS = '[data-test="' + HINT_SENTENCE + '"]';
const CHALLENGE_JUDGE = 'challenge-judge-text';
const CHALLENGE_JUDGE_QS = '[data-test="' + CHALLENGE_JUDGE + '"]';
const FORM_PROMPT = 'challenge-form-prompt';
const FORM_PROMPT_QS = '[data-test="' + FORM_PROMPT + '"]';
const RIGHT_OPTION_QS = '[aria-checked="true"] div';
const TEXT_INPUT = 'challenge-text-input';
const TEXT_INPUT_QS = '[data-test="' + TEXT_INPUT + '"]';
const SPEAK_INTRO = 'speakIntro';
const SPEAK_INTRO_QS = '#' + SPEAK_INTRO;
// used page types
const FORM = 'challenge challenge-form';
const TRANSLATE = 'challenge challenge-translate';
// almost the same than challenge-form
// read both correct solutions
// <div class="_2ez4I"><h2 class="_1x6Dk _1Nmv6">Another correct solution:</h2><div class="_1UqAr _1Nmv6">On est ici.</div></div>
const DIALOGUE = 'challenge challenge-dialogue';
// <div class="_29e-M _39MJv _2Hg6H" dir="ltr">
// here to add a speaker button if I want for the entry text
// or before the first data-test="hint-sentence"
// text to read = document.querySelector('[data-test="hint-sentence"]').parentNode.innerText
const READ_COMPREHENSION = 'challenge challenge-readComprehension';
const LISTEN_COMPREHENSION = 'challenge challenge-listenComprehension';
const COMPLETE_REVERSE_TRANSLATION = 'challenge challenge-completeReverseTranslation';
const TAP_COMPLETE = 'challenge challenge-tapComplete';
const GAP_FILL = 'challenge challenge-gapFill';
const NAME = 'challenge challenge-name';
// unused page types
const LISTEN = 'challenge challenge-listen';
// Word bank stuff
// is not read out by Duo all the time (but at "Tap what you hear");
const LISTEN_TAP = 'challenge challenge-listenTap';
// has word bank and some filled up answer to read
// duo reads aloud
const SELECT_TRANSCRIPTION = 'challenge challenge-selectTranscription';
// allowed challenge types
const TEST = [FORM, TRANSLATE, DIALOGUE, GAP_FILL, COMPLETE_REVERSE_TRANSLATION, TAP_COMPLETE, LISTEN_COMPREHENSION, READ_COMPREHENSION, NAME];
var buttonDisabled = true;
function debug(s) {
console.debug(LOG_STRING + s);
}
window.onload = function() {
//_1UqAr - class for answer
// data-test="challenge-form-prompt" - tag with fill-ins
//data-prompt
//aria-checked tag with fill-in options
// _1Nmv6 - class for right answer
// _1sqiF - class for wrong answer
// data-test="challenge-translate-input" - free input field (lang="fr" / lang="en")
// _1Nmv6 - class for right answer
// _1UqAr - answer text (if wrong / typo)
// <h2 class="_1x6Dk" - answer heading
'use strict';
console.debug(LOG_STRING + VERSION);
// console.log('---------------------onload-------------------------');
voices = window.speechSynthesis.getVoices();
console.debug(voices);
//setVoice();
readConfig();
new MutationObserver(start).observe(document.body, {
// attributes: true,
childList: true,
subtree: true
});
console.debug('MutationObserver running');
}
function setVoice() {
voiceSelect = GM_getValue('voiceSelect', 1000);
console.debug('HearEverything: stored voice = ' + voiceSelect);
var duoState = JSON.parse(localStorage.getItem('duo.state'));
config.lang = duoState.user.learningLanguage;
if(voiceSelect == 1000) {
for (let i = 0; i < voices.length; i++) {
if(voices[i].lang.includes(config.lang)) {
voiceSelect = i;
console.debug('HearEverything: auto set voice');
}
}
}
console.debug(`HearEverything: voice = ${voiceSelect}, learning language = ${config.lang}`);
}
// toggles visibility
function togglePopout(id) {
let popout = document.getElementById(id);
popout.style.display === "none" ? popout.style.display = "block" : popout.style.display = "none";
}
function readConfig() {
config.ap_timeout = GM_getValue('he_auto_timeout', 1000);
config.he_ct_auto = GM_getValue('he_ct_auto', true);
config.he_cgf_auto = GM_getValue('he_cgf_auto', true);
config.he_cgf_click = GM_getValue('he_cgf_click', false);
config.he_cd_auto = GM_getValue('he_cd_auto', false);
config.he_cd_click = GM_getValue('he_cd_click', true);
config.he_cd_autointro = GM_getValue('he_cd_autointro', true);
//config.he_ctc_auto = config.he_cgf_auto;
//config.he_ctc_click = config.he_cgf_click;
setVoice();
console.debug(config);
//return config;
}
function addConfig() {
if(!document.querySelector('#hearEverythingGear') && document.querySelector('[role="progressbar"]')) {
let configButton = document.createElement('button');
configButton.setAttribute('id', 'hearEverythingGear');
configButton.setAttribute('class', '_2hiHn _2kfEr _1nlVc _2fOC9 UCrz7 t5wFJ _1DC8p _2jNpf');
configButton.setAttribute('style', `grid-column: 3/3; background-image:url(//d35aaqx5ub95lt.cloudfront.net/images/gear.svg);
background-position: 0px 0px; background-repeat: no-repeat; background-size: contain;`);
let configDiv = document.createElement('div');
configDiv.setAttribute('class','_3yqw1 np6Tv _1Xlh1');
configDiv.setAttribute('style','display: none; position: fixed; margin-top: 1rem;');
configDiv.setAttribute('id','hearEverythingConfig');
let options = '<option value="1000">Auto</option>';
for (let i = 0; i < voices.length; i++) {
options += `<option value="${i}">${voices[i].name}</option>`;
}
let styleCheckbox = 'style="vertical-align: bottom;"';
let configTranslate = `
<div>
<span>Challenge Translate: </span>
<span><label for="he_ct_auto">auto play: </label><input type="checkbox" id="he_ct_auto" value="autoplay" ${styleCheckbox}></input></span>
</div>
`;
let configGapFill = `
<div>
<span>Challenge Gap Fill: </span>
<span><label for="he_cgf_auto">auto play: </label><input type="checkbox" id="he_cgf_auto" value="autoplay" ${styleCheckbox}></input></span>
<span><label for="he_cgf_click">read options: </label><input type="checkbox" id="he_cgf_click" value="readoptions" ${styleCheckbox}></input></span>
</div>
`;
let configDialogue = `
<div>
<span>Challenge Dialogue: </span>
<span><label for="he_cd_auto">auto play: </label><input type="checkbox" id="he_cd_auto" value="autoplay" ${styleCheckbox}></input></span>
<span><label for="he_cd_click">read options: </label><input type="checkbox" id="he_cd_click" value="readoptions" ${styleCheckbox}></input></span>
<span><label for="he_cd_autointro">auto intro: </label><input type="checkbox" id="he_cd_autointro" value="autointro" ${styleCheckbox}></input></span>
</div>
`;
configDiv.innerHTML = `
<div class="_3uS_y eIZ_c" data-test="config-popout" style="--margin:20px;">
<div class="_2O14B _2XlFZ _1v2Gj WCcVn" style="z-index: 1;">
<div class="_1KUxv _1GJUD _3lagd SSzTP" style="width: auto;"><div class="_1cv-y"></div>
<div class="QowCP">
<div class="_1m77f" style="text-align: center">Language
<select style="background-color: #ffc800; color: white;" id="configLanguage">
${options}
</select>
</div>
</div>
<div class="QowCP" id="he_configChallenges">
${configTranslate}
${configGapFill}
${configDialogue}
</div>
</div>
</div>`;
document.querySelector('[role="progressbar"]').insertAdjacentElement('afterend',configButton);
configButton.insertAdjacentElement('afterend', configDiv);
configButton.addEventListener('click', function () { togglePopout('hearEverythingConfig'); });
let configLanguage = document.getElementById('configLanguage')
configLanguage.querySelector('[value="' + voiceSelect + '"]').setAttribute('selected', true);
configLanguage.addEventListener('change', function() {
voiceSelect = configLanguage.options[configLanguage.selectedIndex].value;
GM_setValue('voiceSelect', voiceSelect);
setVoice();
});
document.getElementById('he_ct_auto').checked = config.he_ct_auto;
document.getElementById('he_cgf_auto').checked = config.he_cgf_auto;
document.getElementById('he_cgf_click').checked = config.he_cgf_click;
document.getElementById('he_cd_auto').checked = config.he_cd_auto;
document.getElementById('he_cd_click').checked = config.he_cd_click;
document.getElementById('he_cd_autointro').checked = config.he_cd_autointro;
document.getElementById('hearEverythingConfig').addEventListener('change', function(e) {
// console.debug(LOG_STRING + 'Target ID = ' + e.target.id);
GM_setValue(e.target.id, e.target.checked);
config[e.target.id] = e.target.checked;
});
}
}
/* function configListener(e) {
switch(e.target) {
case 'he_ct_auto':
GM_setValue('HearEverything_ct_autoplay', e.target.checked); */
function start() {
if (document.querySelector('[data-test="challenge-header"]')) {
addConfig();
buildDebug();
checkNewPage();
let challenge = getChallengeType();
if(challenge !== null) {
// if we have an accepted challenge, we want to process this page, so we set newPage;
// maybe replace it with blame exists and blame does not exist for addedSpeech ...
if (newPage === true) {
// ._3MD8I also available for wrong answers
// better use blame
if (document.querySelector(ANSWER_QS) !== null) {
renderAnswerSpeakButton();
} else if(addedSpeech===false) {
if (document.querySelectorAll(CHALLENGE_JUDGE_QS).length!==0) {
if (challenge[0] === LISTEN_COMPREHENSION) { // || challenge[0] === READ_COMPREHENSION) {
let hint = document.querySelectorAll(HINT_SENTENCE_QS)[1].innerText.replace('...', '');
addSpeech(CHALLENGE_JUDGE_QS, hint);
addedSpeech = true;
}
if (challenge[0] === FORM) {
addSpeech(CHALLENGE_JUDGE_QS);
addedSpeech = true;
}
if (challenge[0] === GAP_FILL && config.he_cgf_click === true) {
addSpeech(CHALLENGE_JUDGE_QS);
addedSpeech = true;
}
if (challenge[0] === DIALOGUE && config.he_cd_click === true) {
addSpeech(CHALLENGE_JUDGE_QS);
addedSpeech = true;
}
} else if (document.querySelectorAll(CHALLENGE_TAP_TOKEN_QS).length !== 0) {
if (challenge[0] === TAP_COMPLETE && config.he_cd_click === true) {
addSpeech(CHALLENGE_TAP_TOKEN_QS);
addedSpeech = true;
}
}
/* console.groupCollapsed('Add hearing abilities (options)');
console.debug(getChallengeType()[0]);
// if eventListeners were not bound yet
addSpeech();
addedSpeech = true;
console.debug('Now speech is attached to options');
console.groupEnd('Add hearing abilities (options)'); */
}
renderIntroSpeakButton();
}
} else {
// we detected no content to use, so we are not interested in this page
newPage = false;
}
} // end challenge-header detection
}
function prepareChallengeGapFill() {
let answer;
if (document.querySelector(RIGHT_ANSWER_QS)) {
answer = document.querySelector(RIGHT_OPTION_QS).innerText;
}
if (document.querySelector(WRONG_ANSWER_QS)) {
let answerElement = document.querySelector(ANSWER_CLASS);
if(answerElement.lastElementChild) {
answer = answerElement.lastElementChild.innerText;
} else {
answer = answerElement.innerText;
}
}
// question
let read = document.querySelector(HINT_SENTENCE_QS).parentNode.innerText;
// if the answer is at the start of the sentence, there's no \n
if (read.includes('\n')) {
read = read.replace('\n', answer);
} else {
read = answer + read;
}
document.querySelector(HINT_SENTENCE_QS).parentNode.innerHTML = `<span>${read}</span>`;
return read;
}
function prepareChallengeForm() {
let answer;
if (document.querySelector(RIGHT_ANSWER_QS)) {
answer = document.querySelector(RIGHT_OPTION_QS).innerText;
}
if (document.querySelector(WRONG_ANSWER_QS)) {
let answerElement = document.querySelector(ANSWER_CLASS);
if(answerElement.lastElementChild) {
answer = answerElement.lastElementChild.innerText;
} else {
answer = answerElement.innerText;
}
}
let read = document.querySelector(FORM_PROMPT_QS).getAttribute('data-prompt').replace(/_+/, answer);
return read;
/* let read;
let solution = document.querySelector('._1UqAr');
// if it's the right solution, we get it from the selected choice
if (solution.classList.contains('_1Nmv6')) {
read = formPrompt.getAttribute('data-prompt').replace(/_+/,document.querySelector('[aria-checked="true"] div').innerText);
console.debug('Form Prompt: right answer');
} else {
// if it's wrong, we have to get it from the right solution display
read = formPrompt.getAttribute('data-prompt').replace(/_+/,solution.innerText);
console.debug('Form Prompt: wrong answer');
}
if (DEBUG) document.querySelector('#mySentence').innerText = read;
return read;
*/
}
function prepareChallengeName() {
let read;
if (document.querySelector(RIGHT_ANSWER_QS)) {
read = document.querySelector(TEXT_INPUT_QS).value;
}
if (document.querySelector(WRONG_ANSWER_QS)) {
read = document.querySelector(ANSWER_CLASS).innerText;
}
return read;
}
function prepareChallengeTranslate() {
let read;
if (document.querySelector(RIGHT_ANSWER_QS)) {
if (document.querySelector(WORD_BANK_QS)) {
read = document.querySelector(CHALLENGE_TAP_TOKEN_QS).parentNode.parentNode.innerText.replace(/\n/g, ' ');
} else {
let tI = document.querySelector(TRANSLATE_INPUT_QS);
if (tI.lang === config.lang) read = tI.innerHTML;
}
}
if (document.querySelector(WRONG_ANSWER_QS)) {
let answer = document.querySelector(ANSWER_CLASS);
if(answer.lastElementChild) {
read = answer.lastElementChild.innerText;
} else {
read = answer.innerText;
}
}
if (document.querySelector(SPEAKER_BUTTON_QS)) read = '';
// console.debug('HearEverything: read = ' + read);
return read;
/*
if(document.querySelector('._1UqAr._1Nmv6')) {
read = document.querySelector('._1UqAr._1Nmv6').innerText;
} else if(document.querySelector('._1UqAr._1sqiF')) {
if (document.querySelector('._1UqAr._1sqiF').lastElementChild) {
read = document.querySelector('._1UqAr._1sqiF').lastElementChild.innerText;
} else {
read = document.querySelector('._1UqAr._1sqiF').innerText;
}
} else {
let translateInput = document.querySelector('[data-test="challenge-translate-input"]');
if (translateInput !== null && translateInput.lang === lang) {
//read = readTranslateInput(translateInput);
read = translateInput.textContent;
}
} */
}
function prepareChallengeTapComplete() {
let read;
if (document.querySelector(RIGHT_ANSWER_QS)) {
read = document.querySelector(HINT_SENTENCE_QS).parentNode.innerText.replace(/\n/g, ' ');
}
if (document.querySelector(WRONG_ANSWER_QS)) {
read = document.querySelector(ANSWER_CLASS).innerText;
}
// console.debug('HearEverything: read = ' + read);
return read;
}
function prepareChallengeDialogue() {
let read;
//let hints = document.querySelectorAll('[data-test="hint-token"]');
let speaker1 = document.querySelector('[class="' + DIALOGUE_SPEAKER_CLASS + '"]').innerText;
//hints.forEach(function(hint) { speaker1 += hint; });
let speaker2;
if(document.querySelector(WRONG_ANSWER_QS)) {
speaker2 = document.querySelector('._1UqAr._1sqiF').innerText;
} else {
speaker2 = document.querySelector('[aria-checked="true"]').querySelector('[data-test="challenge-judge-text"]').innerText;
}
read = speaker1 + '\n' + speaker2;
return read
}
function introChallengeDialogue() {
let read = document.querySelector(HINT_SENTENCE_QS).parentNode.innerText;
let speaker = document.createElement('div');
speaker.innerHTML = speakerButton;
speaker.children[0].id = SPEAK_INTRO;
speaker.children[0].style = 'width:40px; height:40px; background:transparent; margin-left:-16px; margin-right:0px;padding-bottom:5px';
document.querySelector(HINT_SENTENCE_QS).insertAdjacentElement('beforeBegin', speaker);
return read;
}
function prepareChallengeReadComprehension() {
let read;
//let hints = document.querySelectorAll('[data-test="hint-token"]');
let speaker1 = document.querySelector(HINT_SENTENCE_QS).innerText;
//hints.forEach(function(hint) { speaker1 += hint; });
let speaker2;
if(document.querySelector(WRONG_ANSWER_QS)) {
speaker2 = document.querySelector(ANSWER_CLASS).innerText;
} else {
speaker2 = document.querySelector(RIGHT_OPTION_QS).innerText;
}
read = speaker1 + '\n' + document.querySelectorAll(HINT_SENTENCE_QS)[1].innerText.replace('...', ' ' +speaker2);
return read
}
function renderIntroSpeakButton() {
if (document.querySelector(SPEAK_INTRO_QS) === null) {
let read = '';
let challenge = getChallengeType()[0];
if (challenge === DIALOGUE) {
read = introChallengeDialogue();
}
if (read !== '') {
debug('intro = ' + read);
let utter = generateUtter(read);
addSpeakListener(SPEAK_INTRO, utter, read);
if (challenge === DIALOGUE && config.he_cd_autointro) document.querySelector(SPEAK_INTRO_QS).click();
}
}
}
function renderAnswerSpeakButton() {
// document.querySelector('._1UqAr._1Nmv6').innerText; Always the answer?
// let test = [FORM, TRANSLATE, DIALOGUE, GAP_FILL, COMPLETE_REVERSE_TRANSLATION];
// console.groupCollapsed('Add hearing abilities (input)');
// console.debug(getChallengeType()[0]);
// console.debug('Solution detected');
let read = '';
let challenge = getChallengeType()[0];
if (challenge === FORM) {
read = prepareChallengeForm();
/*
let formPrompt = document.querySelector('[data-test="challenge-form-prompt"]');
if (formPrompt !== null) { read = readFormPrompt(formPrompt); }
*/
}
if (challenge === TRANSLATE) {
read = prepareChallengeTranslate();
}
if (challenge === DIALOGUE) {
read = prepareChallengeDialogue();
}
if (challenge === READ_COMPREHENSION) {
read = prepareChallengeReadComprehension();
}
if (challenge === NAME) {
read = prepareChallengeName();
}
if (challenge === GAP_FILL) {
read = prepareChallengeGapFill();
}
if (challenge === COMPLETE_REVERSE_TRANSLATION) {
read = prepareChallengeTranslate();
/*
let translateInput = document.querySelector('[data-test="challenge-translate-input"]');
if (translateInput !== null && translateInput.lang === lang) { read = readTranslateInput(translateInput); }
*/
}
if (challenge === TAP_COMPLETE) {
read = prepareChallengeTapComplete();
}
console.debug('HearEverything: read = ' + read);
let utter = generateUtter(read);
// add speaker button to answer and fill in the correct answer in the headline
updateText(read);
// if we have added the speaker button, we find it in the document
addSpeakListener('speak', utter, read);
// do it for every page to trigger the Duo speaker button also
document.removeEventListener('keydown', myShortcutListener);
document.addEventListener('keydown', myShortcutListener);
newPage = false;
// console.debug('Now it\'s an old page');
addedSpeech = false;
// console.debug('Reset: speech isn\'t attached to options any more');
if (DEBUG) document.querySelector('#myOptions').innerText = 'disabled';
// if you like autoplay, it waits 1 second an plays it
if (((challenge === TRANSLATE) || (challenge === COMPLETE_REVERSE_TRANSLATION)) && config.he_ct_auto === true) {
timeoutAutoplay(challenge, utter);
}
if (challenge === GAP_FILL && config.he_cgf_auto === true) {
timeoutAutoplay(challenge, utter);
}
if (challenge === TAP_COMPLETE && config.he_cgf_auto === true) {
timeoutAutoplay(challenge, utter);
}
if (challenge === DIALOGUE && config.he_cd_auto === true) {
timeoutAutoplay(challenge, utter);
}
// console.groupEnd('Add hearing abilities (input)');
}
function timeoutAutoplay(challenge, utter) {
setTimeout(function() {
console.debug(LOG_STRING + 'auto play ' + challenge);
synth.cancel();
synth.speak(utter);
},config.ap_timeout);
}
function addSpeakListener(id, utter, read) {
let speak = document.querySelector('#' + id);
if(speak) {
speak.addEventListener('click',function () { synth.cancel(); synth.speak(utter); });
// console.debug('EventListener bound to speak button');
if (DEBUG) document.querySelector('#mySentence').innerText = read;
document.getElementById(id).title = read;
} else {
console.debug('HearEverything: No speak button found');
}
}
function generateUtter(read) {
let utter = new SpeechSynthesisUtterance(read);
utter.voice = voices[voiceSelect];
utter.volume = 1;
utter.pitch = 1;
utter.rate = 1;
utter.lang = config.lang;
return utter;
}
function myShortcutListener(event) {
let speak = document.querySelector('#speak');
let duoSpeak = document.querySelector(SPEAKER_BUTTON_QS);
// ALT + l combo
if (event.altKey && event.key === 'l') {
if (speak) { speak.click(); }
else if (duoSpeak) duoSpeak.click();
console.debug(LOG_STRING + 'alt = ' + event.altKey + ' + ' + event.key);
}
}
function readTapComplete(tap) {
let read = '';
let words = tap.childNodes;
words.forEach(function(word) {
if (word.nodeName === 'SPAN') read += word.children[0].innerText;
if (word.nodeName === 'DIV') {
read += word.querySelector('[class="_2Z2xv"]').children[0].innerText;
}
});
return read;
}
// gives some debug information directly in the Duo-GUI
function buildDebug() {
if(DEBUG) {
if(!document.querySelector('#myChallenge')) {
let debug = document.createElement('div');
debug.innerHTML = `<span>Challenge-Name: <span id="myChallenge">${getChallengeType(true)[0]}</span></span>
<span>Sentence to speak: <span id="mySentence"></span></span>
<span>Speak options: <span id="myOptions">disabled</span></span>`;
debug.style = "font-size: small; text-align:left; display:grid;";
document.querySelector('[data-test="challenge-header"]').insertAdjacentElement('afterend', debug);
}
}
}
function checkNewPage() {
if(!document.querySelector('#myNewPage')) {
let nP = document.createElement('div');
nP.id = 'myNewPage';
document.querySelector('[data-test="challenge-header"]').insertAdjacentElement('afterend', nP);
//console.debug('---- div - newPage ----');
console.debug('HearEverything: Challenge Type = ' + getChallengeType(true)[0]);
newPage = true;
synth.cancel();
} else {
//console.debug('---- div - oldPage ----');
}
}
function readTranslateInput(translateInput) {
/* TODO: Word bank
<div class="tVzIv">
<div class="_3IcNx _1C_S3 _1HxVp">
<div class="_2PLYW"><div class="Qwwbl">
<div class="_1uasP" dir="ltr">
<div class="_349xo"><div class="_3Myq_ _15J0U"></div>
<div class="_3Myq_ _15J0U"></div>
<div class="_3Myq_ _15J0U"></div>
<div class="_3Myq_ _15J0U"></div>
<div class="_3Myq_ _15J0U"></div>
</div>
<div class="PcKtj" tabindex="0">
<div class="_1DaLk _2LmyT">
<button class="_3XI03 _2mG9r notranslate _2XgEJ _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">ton</button>
</div>
<div class="_1DaLk _2LmyT">
<button class="_3XI03 _2mG9r notranslate _2XgEJ _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">père</button>
</div>
<div class="_1DaLk _2LmyT">
<button class="_3XI03 _2mG9r notranslate _2XgEJ _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">va</button>
</div>
<div class="_1DaLk _2LmyT">
<button class="_3XI03 _2mG9r notranslate _2XgEJ _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">bien</button>
</div>
</div>
</div>
</div>
</div>
*/
// does not exist on right answers?!
let read = '';
let solution = document.querySelector(ANSWER_CLASS);
if (document.querySelector(ANSWER_CONTAINER).childNodes.length === 1) {
// right answer
read = translateInput.innerHTML;
console.debug('Translate Input: right answer');
/* another correct answer seems not to be recognized as correct answer
it reads the other answer given not my answer
<div class="_2ez4I"><h2 class="_1x6Dk _1Nmv6">Another correct solution:</h2><div class="_1UqAr _1Nmv6">Une pizza, s'il vous plaît.</div></div>
*/
} else if (solution.classList.contains(RIGHT_CLASS)) {
read = '';
// pay attention to accents
// better read the solution here
/* <div class="_2ez4I">
<h2 class="_1x6Dk _1Nmv6">Pay attention to the accents.</h2>
<div class="_1UqAr _1Nmv6">
<span>
<span class="_3gI0Y">J'habite</span>
<span> en Europe.</span>
</span>
</div></div>
*/
// or
/* <div class="_1UqAr _1Nmv6">
<span>
<span>Julia </span>
<span class="_3gI0Y">travaille</span>
<span> à Paris.</span>
</span>
</div> */
let span = solution.querySelector('span');
if(span) {
for (let i=0; i<span.childNodes.length; i++) {
read += span.childNodes[i].innerHTML + ' ';
}
}
// did not work for - maybe now it does
/* <div class="_2ez4I">
<h2 class="_1x6Dk _1Nmv6">You have a typo.</h2>
<div class="_1UqAr _1Nmv6">
<span>
<span>un </span>
<span class="_3gI0Y">passeport</span>
<span> américain</span>
</span>
</div>
</div>
*/
/* did not work for - it reads out "undefinedundefined"
<div class="_2ez4I">
<h2 class="_1x6Dk _1sqiF">Common mistake!</h2>
<div class="_1UqAr _1sqiF">
<span class="_3BNQd">Correct solution:</span>
<span>Tu prends la voiture ?</span>
</div></div> */
console.debug('Translate Input: right answer with little mistake');
} else {
/* // totally wrong answer
let span = solution.querySelector('span');
if(span) {
for (let i=0; i<span.childNodes.length; i++) {
read += span.childNodes[i].innerHTML + ' ';
}
} else {
read = solution.innerHTML;
console.debug('Translate Input: wrong answer');
} */
readWrongAnswer(solution);
}
return read;
}
function readWrongAnswer(solution) {
// totally wrong answer
let read = '';
let span = solution.querySelector('span');
if(span) {
for (let i=0; i<span.childNodes.length; i++) {
read += span.childNodes[i].innerHTML + ' ';
}
} else {
read = solution.innerHTML;
console.debug('Translate Input: wrong answer');
}
return read;
}
function readFormPrompt(formPrompt) {
let read;
let solution = document.querySelector('._1UqAr');
// if it's the right solution, we get it from the selected choice
if (solution.classList.contains('_1Nmv6')) {
read = formPrompt.getAttribute('data-prompt').replace(/_+/,document.querySelector('[aria-checked="true"] div').innerText);
console.debug('Form Prompt: right answer');
} else {
// if it's wrong, we have to get it from the right solution display
read = formPrompt.getAttribute('data-prompt').replace(/_+/,solution.innerText);
console.debug('Form Prompt: wrong answer');
}
if (DEBUG) document.querySelector('#mySentence').innerText = read;
return read;
}
// gets the type of the current challenge
// returns array [type, HTMLElement]
// returns null if no usable type is found
// if returnEverything = true, it returns also noType
function getChallengeType(returnEverything = false) {
let type = null;
let noType = ['Unidentified Page Type'];
// replace data-test= with data-test~= and TRANSLATE = 'challenge-translate"
for (let i = 0; i < TEST.length; i++) {
if (document.querySelector(`[data-test="${TEST[i]}"]`)) {
type = [TEST[i], document.querySelector(`[data-test="${TEST[i]}"]`)];
}
}
if (document.querySelector(`[data-test="${SELECT_TRANSCRIPTION}"]`)) { noType = ['No usable page type (' + SELECT_TRANSCRIPTION + ')','']; }
if (document.querySelector(`[data-test="${READ_COMPREHENSION}"]`)) { noType = ['No usable page type (' + READ_COMPREHENSION + ')','']; }
if (document.querySelector(`[data-test="${LISTEN}"]`)) { noType = ['No usable page type (' + LISTEN + ')','']; }
if (document.querySelector(`[data-test="${LISTEN_TAP}"]`)) { noType = ['No usable page type (' + LISTEN_TAP + ')','']; }
if (document.querySelector(`[data-test="${LISTEN_COMPREHENSION}"]`)) { noType = ['No usable page type (' + LISTEN_COMPREHENSION + ')','']; }
// type ? console.info('HearEverything: Page Type = ' + type[0]) : console.info('HearEverything: ' + noType[0]);
if(returnEverything) {
return type ? type : noType;
} else {
return type;
}
}
// checks the check / continue button if we can use it for tracking different states
// looks like the button goes from check enabled to disabled to continue enabled
function buttonCheck() {
let button = document.querySelector('._10vOG').querySelector('button');
if (button.disabled) {
if(buttonDisabled) {
console.groupCollapsed('Check / Continue Button (disabled)');
//console.debug('disabled');
console.debug(button);
console.groupEnd('Check / Continue Button (disabled)');
buttonDisabled = false;
}
} else if (!buttonDisabled) {
console.groupCollapsed('Check / Continue Button (enabled)');
//console.debug('enabled');
console.debug(button);
console.groupEnd('Check / Continue Button (enabled)');
buttonDisabled = true;
}
}
function addSpeech(qs, t = '') {
//console.debug('Add speech to the option buttons:');
if (t !== '') t += ' ';
let options = document.querySelectorAll(qs);
for (let i=0; i<options.length; i++) {
let utter = generateUtter(t + options[i].innerText);
options[i].parentNode.addEventListener('click',function () { synth.cancel(); synth.speak(utter); });
// console.debug('EventListener bound: ' + options[i].innerHTML);
console.debug('HearEverything: Option = ' + t + options[i].innerText);
// options[i].id = 'eventListener' + i;
}
if (DEBUG) document.querySelector('#myOptions').innerText = 'enabled';
}
function updateText(t) {
// don't add a listen button if there is no text t
if (t !== '') {
// console.debug('We should now add a speak button');
let formPrompt = document.querySelector('[data-test="challenge-form-prompt"]');
let translateInput = document.querySelector('[data-test="challenge-translate-input"]');
if(buttonPosition === 'top') {
// TODO: what do we do with translateInput?
/* if(formPrompt) {
formPrompt.innerHTML = `<div dir="ltr">
${speakerButton}
<span>${t}</span>
</div>`;
console.debug('Speaker Button Top added');
} */
} else {
/* if(formPrompt) {
formPrompt.innerHTML = `<div dir="ltr">
<span>${t}</span>
</div>`;
console.debug('Form Prompt Text changed');
} */
//if(formPrompt || (translateInput !== null && translateInput.lang === lang)) {
if(TEST.includes(getChallengeType()[0])) {
// <div class="np6Tv" style="position: absolute; grid-column: 4/5; justify-self: end;">
let div = document.createElement('div');
div.class = 'np6Tv';
div.style = 'position: absolute; align-self: flex-end; top: 1.8rem;';
div.innerHTML = speakerButton;
// if the answer is displayed
if(document.querySelector('._3dRS9._3DKa-._1tuLI')) {
if (translateInput !== null) {
if (translateInput.lang === config.lang) {
document.querySelector('._3dRS9._3DKa-._1tuLI').insertAdjacentElement('afterBegin',div);
// console.debug('Speaker Button Bottom added');
}
} else {
document.querySelector('._3dRS9._3DKa-._1tuLI').insertAdjacentElement('afterBegin',div);
// console.debug('Speaker Button Bottom added');
}
}
}
}
}
}
// Tipp Page
// <div aria-label="choice" role="radiogroup" class="_1WbXO _9qT-e"><div aria-checked="false" aria-disabled="false" class="_3C_oC _2bJln _2-OmZ" role="radio" tabindex="-1" data-test="challenge-choice"><span class="_2R_o5 _2S0Zh _28sjs">1</span><div data-test="challenge-judge-text" class="_2CuNz C6wiC" dir="ltr">habiter</div></div><div aria-checked="true" aria-disabled="false" class="_3C_oC disCS _2bJln _2-OmZ" role="radio" tabindex="0" data-test="challenge-choice"><span class="Z7UoT _2S0Zh _28sjs">2</span><div data-test="challenge-judge-text" class="_2CuNz C6wiC" dir="ltr">habite</div></div></div>
//
// Challenge-form
// <div class="_863KE _1bemu"><div data-test="challenge challenge-form" class="e4VJZ FQpeZ"><div class="uH5m4 lHi6I _32AJE LI3ZR"><div class="FZpIH"><h1 data-test="challenge-header" class="_2LZl6"><span>Select the missing word</span></h1></div><div class="mfj2W _3IQqi _2RC-4 d84Fd"><div data-test="challenge-form-prompt" class="_2SfAl _2Hg6H" data-prompt="___ garçon mexicain"><div dir="ltr"><span></span><span class="_2Iqyl"><span class="_167HH"></span></span><span> garçon mexicain</span></div></div><div aria-label="choice" role="radiogroup" class="_35Xo_ _9qT-e _3hkYG _2Nv1I"><div aria-checked="true" aria-disabled="true" class="_3C_oC disCS hfPEz _2bJln _1p2g7 _2-OmZ" role="radio" tabindex="-1" data-test="challenge-choice"><span class="Z7UoT _2S0Zh _28sjs">1</span><div data-test="challenge-judge-text" class="_2CuNz C6wiC" dir="ltr">le</div></div><div aria-checked="false" aria-disabled="true" class="_3C_oC hfPEz _2bJln _1p2g7 _2-OmZ" role="radio" tabindex="-1" data-test="challenge-choice"><span class="_2R_o5 _2S0Zh _28sjs">2</span><div data-test="challenge-judge-text" class="_2CuNz C6wiC" dir="ltr">la</div></div></div></div></div></div></div>
//
// Error
//<div class="kVhsm" data-test="blame blame-incorrect"><div class="_3UpNo _2VrUB"><span class="OLn6a _3Hb2o _2jNpf"></span></div><div class="_3BY4x"><div class="GnyZd _3mObn"><div class="_2ez4I"><h2 class="_1x6Dk _1sqiF">Correct solution:</h2><div class="_1UqAr _1sqiF">un homme et un chat</div></div></div><div class="_3MD8I"><button class="_2tfS2 _3CCt9 _2kfEr _1nlVc _2fOC9 UCrz7 t5wFJ"><div class="_3cRbJ sf9Rc"></div><span class="_28V9T _3yAjN">Report</span></button><button class="_2tfS2 _3CCt9 _2kfEr _1nlVc _2fOC9 UCrz7 t5wFJ" data-test="discussion-button"><div class="_1BpR_ sf9Rc"></div><span class="_28V9T _3yAjN">Discuss</span></button></div></div></div>
//
// Challenge-translate
//<div class="_1Zh-d _1lDmW d84Fd"><div data-test="challenge-translate-prompt" class="_2qYLw _3oxW8 _2Hg6H"><div class="_3mO3g"><div class="F2B9m"><div class="_2Dn_R"><img alt="" class="_3vCW1 _1RL1c" src="https://d2pur3iezf4d1j.cloudfront.net/images/3749d548da7d349c89c158483beaff29"><span class="_3a8EI _1n2tS _1RL1c"><svg xmlns="http://www.w3.org/2000/svg" viewBox="0 0 236 350" width="236" height="350" preserveAspectRatio="xMidYMid meet" style="width: 100%; height: 100%; transform: translate3d(0px, 0px, 0px);"><defs><clipPath id="__lottie_element_1136"><rect width="236" height="350" x="0" y="0"></rect></clipPath><clipPath id="__lottie_element_1142"><path d="M0,0 L260,0 L260,278 L0,278z"></path></clipPath><mask id="__lottie_element_1160" mask-type="alpha"><g transform="matrix(1.0299999713897705,0,0,1.0299999713897705,141.16200256347656,199.92300415039062)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,255,255)" fill-opacity="1" d=" M-0.0010000000474974513,-11.321000099182129 C4.789000034332275,-11.321000099182129 8.678999900817871,-7.431000232696533 8.678999900817871,-2.6410000324249268 C8.678999900817871,-2.6410000324249268 8.678999900817871,2.6389999389648438 8.678999900817871,2.6389999389648438 C8.678999900817871,7.428999900817871 4.789000034332275,11.319000244140625 -0.0010000000474974513,11.319000244140625 C-4.790999889373779,11.319000244140625 -8.680999755859375,7.428999900817871 -8.680999755859375,2.6389999389648438 C-8.680999755859375,2.6389999389648438 -8.680999755859375,-2.6410000324249268 -8.680999755859375,-2.6410000324249268 C-8.680999755859375,-7.431000232696533 -4.790999889373779,-11.321000099182129 -0.0010000000474974513,-11.321000099182129z"></path></g></g></mask><mask id="__lottie_element_1166" mask-type="alpha"><g transform="matrix(1.0299999713897705,0,0,1.0299999713897705,141.16200256347656,199.92300415039062)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,255,255)" fill-opacity="1" d=" M-0.0010000000474974513,-11.321000099182129 C4.789000034332275,-11.321000099182129 8.678999900817871,-7.431000232696533 8.678999900817871,-2.6410000324249268 C8.678999900817871,-2.6410000324249268 8.678999900817871,2.6389999389648438 8.678999900817871,2.6389999389648438 C8.678999900817871,7.428999900817871 4.789000034332275,11.319000244140625 -0.0010000000474974513,11.319000244140625 C-4.790999889373779,11.319000244140625 -8.680999755859375,7.428999900817871 -8.680999755859375,2.6389999389648438 C-8.680999755859375,2.6389999389648438 -8.680999755859375,-2.6410000324249268 -8.680999755859375,-2.6410000324249268 C-8.680999755859375,-7.431000232696533 -4.790999889373779,-11.321000099182129 -0.0010000000474974513,-11.321000099182129z"></path></g></g></mask><mask id="__lottie_element_1181" mask-type="alpha"><g transform="matrix(1.0299999713897705,0,0,1.0299999713897705,100.16200256347656,199.92300415039062)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,255,255)" fill-opacity="1" d=" M-0.0010000000474974513,-11.321000099182129 C4.789000034332275,-11.321000099182129 8.678999900817871,-7.431000232696533 8.678999900817871,-2.6410000324249268 C8.678999900817871,-2.6410000324249268 8.678999900817871,2.6389999389648438 8.678999900817871,2.6389999389648438 C8.678999900817871,7.428999900817871 4.789000034332275,11.319000244140625 -0.0010000000474974513,11.319000244140625 C-4.790999889373779,11.319000244140625 -8.680999755859375,7.428999900817871 -8.680999755859375,2.6389999389648438 C-8.680999755859375,2.6389999389648438 -8.680999755859375,-2.6410000324249268 -8.680999755859375,-2.6410000324249268 C-8.680999755859375,-7.431000232696533 -4.790999889373779,-11.321000099182129 -0.0010000000474974513,-11.321000099182129z"></path></g></g></mask><mask id="__lottie_element_1187" mask-type="alpha"><g transform="matrix(1.0299999713897705,0,0,1.0299999713897705,100.16200256347656,199.92300415039062)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,255,255)" fill-opacity="1" d=" M-0.0010000000474974513,-11.321000099182129 C4.789000034332275,-11.321000099182129 8.678999900817871,-7.431000232696533 8.678999900817871,-2.6410000324249268 C8.678999900817871,-2.6410000324249268 8.678999900817871,2.6389999389648438 8.678999900817871,2.6389999389648438 C8.678999900817871,7.428999900817871 4.789000034332275,11.319000244140625 -0.0010000000474974513,11.319000244140625 C-4.790999889373779,11.319000244140625 -8.680999755859375,7.428999900817871 -8.680999755859375,2.6389999389648438 C-8.680999755859375,2.6389999389648438 -8.680999755859375,-2.6410000324249268 -8.680999755859375,-2.6410000324249268 C-8.680999755859375,-7.431000232696533 -4.790999889373779,-11.321000099182129 -0.0010000000474974513,-11.321000099182129z"></path></g></g></mask><mask id="__lottie_element_1209" mask-type="alpha"><g transform="matrix(1.0069999694824219,0,0,1.0069999694824219,120.72699737548828,271.3590087890625)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,198,182)" fill-opacity="1" d=" M-20.621999740600586,-54.03499984741211 C-20.621999740600586,-54.03499984741211 20.618000030517578,-54.03499984741211 20.618000030517578,-54.03499984741211 C28.347999572753906,-54.03499984741211 34.608001708984375,-47.775001525878906 34.608001708984375,-40.04499816894531 C34.608001708984375,-40.04499816894531 34.608001708984375,40.04499816894531 34.608001708984375,40.04499816894531 C34.608001708984375,47.76499938964844 28.347999572753906,54.03499984741211 20.618000030517578,54.03499984741211 C20.618000030517578,54.03499984741211 -20.621999740600586,54.03499984741211 -20.621999740600586,54.03499984741211 C-28.351999282836914,54.03499984741211 -34.61199951171875,47.76499938964844 -34.61199951171875,40.04499816894531 C-34.61199951171875,40.04499816894531 -34.61199951171875,-40.04499816894531 -34.61199951171875,-40.04499816894531 C-34.61199951171875,-47.775001525878906 -28.351999282836914,-54.03499984741211 -20.621999740600586,-54.03499984741211z"></path></g></g></mask><mask id="__lottie_element_1215" mask-type="alpha"><g transform="matrix(1,0,0,1,120.72699737548828,271.3590087890625)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,198,182)" fill-opacity="1" d=" M-20.621999740600586,-54.03499984741211 C-20.621999740600586,-54.03499984741211 20.618000030517578,-54.03499984741211 20.618000030517578,-54.03499984741211 C28.347999572753906,-54.03499984741211 34.608001708984375,-47.775001525878906 34.608001708984375,-40.04499816894531 C34.608001708984375,-40.04499816894531 34.608001708984375,40.04499816894531 34.608001708984375,40.04499816894531 C34.608001708984375,47.76499938964844 28.347999572753906,54.03499984741211 20.618000030517578,54.03499984741211 C20.618000030517578,54.03499984741211 -20.621999740600586,54.03499984741211 -20.621999740600586,54.03499984741211 C-28.351999282836914,54.03499984741211 -34.61199951171875,47.76499938964844 -34.61199951171875,40.04499816894531 C-34.61199951171875,40.04499816894531 -34.61199951171875,-40.04499816894531 -34.61199951171875,-40.04499816894531 C-34.61199951171875,-47.775001525878906 -28.351999282836914,-54.03499984741211 -20.621999740600586,-54.03499984741211z"></path></g></g></mask><mask id="__lottie_element_1221" mask-type="alpha"><g transform="matrix(1,0,0,1,120.72699737548828,271.3590087890625)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,198,182)" fill-opacity="1" d=" M-20.621999740600586,-54.03499984741211 C-20.621999740600586,-54.03499984741211 20.618000030517578,-54.03499984741211 20.618000030517578,-54.03499984741211 C28.347999572753906,-54.03499984741211 34.608001708984375,-47.775001525878906 34.608001708984375,-40.04499816894531 C34.608001708984375,-40.04499816894531 34.608001708984375,40.04499816894531 34.608001708984375,40.04499816894531 C34.608001708984375,47.76499938964844 28.347999572753906,54.03499984741211 20.618000030517578,54.03499984741211 C20.618000030517578,54.03499984741211 -20.621999740600586,54.03499984741211 -20.621999740600586,54.03499984741211 C-28.351999282836914,54.03499984741211 -34.61199951171875,47.76499938964844 -34.61199951171875,40.04499816894531 C-34.61199951171875,40.04499816894531 -34.61199951171875,-40.04499816894531 -34.61199951171875,-40.04499816894531 C-34.61199951171875,-47.775001525878906 -28.351999282836914,-54.03499984741211 -20.621999740600586,-54.03499984741211z"></path></g></g></mask><mask id="__lottie_element_1228" mask-type="alpha"><g transform="matrix(1,0,0,1,120.72699737548828,271.3590087890625)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,198,182)" fill-opacity="1" d=" M-20.621999740600586,-54.03499984741211 C-20.621999740600586,-54.03499984741211 20.618000030517578,-54.03499984741211 20.618000030517578,-54.03499984741211 C28.347999572753906,-54.03499984741211 34.608001708984375,-47.775001525878906 34.608001708984375,-40.04499816894531 C34.608001708984375,-40.04499816894531 34.608001708984375,40.04499816894531 34.608001708984375,40.04499816894531 C34.608001708984375,47.76499938964844 28.347999572753906,54.03499984741211 20.618000030517578,54.03499984741211 C20.618000030517578,54.03499984741211 -20.621999740600586,54.03499984741211 -20.621999740600586,54.03499984741211 C-28.351999282836914,54.03499984741211 -34.61199951171875,47.76499938964844 -34.61199951171875,40.04499816894531 C-34.61199951171875,40.04499816894531 -34.61199951171875,-40.04499816894531 -34.61199951171875,-40.04499816894531 C-34.61199951171875,-47.775001525878906 -28.351999282836914,-54.03499984741211 -20.621999740600586,-54.03499984741211z"></path></g></g></mask><clipPath id="__lottie_element_1258"><path d="M0,0 L102,0 L102,194 L0,194z"></path></clipPath><clipPath id="__lottie_element_1271"><path d="M0,0 L102,0 L102,194 L0,194z"></path></clipPath></defs><g clip-path="url(#__lottie_element_1136)"><g transform="matrix(1,0,0,1,201.5159912109375,349.56500244140625)" opacity="0.98" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,198,182)" fill-opacity="1" d=" M2.88100004196167,-7.311999797821045 C2.88100004196167,-7.311999797821045 7.330999851226807,-2.871999979019165 7.330999851226807,-2.871999979019165 C8.930999755859375,-1.281999945640564 8.930999755859375,1.2879999876022339 7.330999851226807,2.868000030517578 C7.330999851226807,2.868000030517578 2.88100004196167,7.308000087738037 2.88100004196167,7.308000087738037 C1.2910000085830688,8.89799976348877 -1.2890000343322754,8.89799976348877 -2.878999948501587,7.308000087738037 C-2.878999948501587,7.308000087738037 -7.339000225067139,2.868000030517578 -7.339000225067139,2.868000030517578 C-8.928999900817871,1.2879999876022339 -8.928999900817871,-1.281999945640564 -7.339000225067139,-2.871999979019165 C-7.339000225067139,-2.871999979019165 -2.878999948501587,-7.311999797821045 -2.878999948501587,-7.311999797821045 C-1.2890000343322754,-8.902000427246094 1.2910000085830688,-8.902000427246094 2.88100004196167,-7.311999797821045z"></path></g></g><g transform="matrix(1,0,0,1,201.989990234375,342.4200134277344)" opacity="0.98" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,198,182)" fill-opacity="1" d=" M-3.0959999561309814,-8.979999542236328 C-6.696000099182129,-7.739999771118164 -8.63599967956543,-3.890000104904175 -7.535999774932861,-0.2800000011920929 C-7.535999774932861,-0.2800000011920929 -7.455999851226807,-0.03999999910593033 -7.455999851226807,-0.03999999910593033 C-7.455999851226807,-0.03999999910593033 -7.455999851226807,-0.03999999910593033 -7.455999851226807,-0.03999999910593033 C-7.455999851226807,-0.03999999910593033 -5.855999946594238,4.610000133514404 -5.855999946594238,4.610000133514404 C-4.585999965667725,8.279999732971191 -0.5759999752044678,10.239999771118164 3.1040000915527344,8.979999542236328 C6.693999767303467,7.739999771118164 8.644000053405762,3.890000104904175 7.533999919891357,0.2800000011920929 C7.533999919891357,0.2800000011920929 7.453999996185303,0.03999999910593033 7.453999996185303,0.03999999910593033 C7.453999996185303,0.03999999910593033 7.453999996185303,0.03999999910593033 7.453999996185303,0.03999999910593033 C7.453999996185303,0.03999999910593033 5.854000091552734,-4.610000133514404 5.854000091552734,-4.610000133514404 C4.584000110626221,-8.279999732971191 0.5740000009536743,-10.239999771118164 -3.0959999561309814,-8.979999542236328z"></path></g></g><g transform="matrix(1,0,0,1,195.5050048828125,319.8320007324219)" opacity="0.98" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(47,226,255)" fill-opacity="1" d=" M-4.498000144958496,-11.223999977111816 C-8.097999572753906,-9.984000205993652 -10.038000106811523,-6.133999824523926 -8.937999725341797,-2.5239999294281006 C-8.937999725341797,-2.5239999294281006 -8.857999801635742,-2.2839999198913574 -8.857999801635742,-2.2839999198913574 C-8.857999801635742,-2.2839999198913574 -8.857999801635742,-2.2839999198913574 -8.857999801635742,-2.2839999198913574 C-8.857999801635742,-2.2839999198913574 -4.067999839782715,11.605999946594238 -4.067999839782715,11.605999946594238 C-4.067999839782715,11.605999946594238 9.251999855041504,7.035999774932861 9.251999855041504,7.035999774932861 C9.251999855041504,7.035999774932861 4.452000141143799,-6.854000091552734 4.452000141143799,-6.854000091552734 C3.181999921798706,-10.52400016784668 -0.828000009059906,-12.484000205993652 -4.498000144958496,-11.223999977111816z"></path></g></g><g transform="matrix(1,0,0,1,186.65798950195312,297.4739990234375)" opacity="0.98" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(47,226,255)" fill-opacity="1" d=" M-4.631999969482422,-13.428000450134277 C-8.232000350952148,-12.187999725341797 -10.17199993133545,-8.338000297546387 -9.071999549865723,-4.728000164031982 C-9.071999549865723,-4.728000164031982 -8.991999626159668,-4.48799991607666 -8.991999626159668,-4.48799991607666 C-8.991999626159668,-4.48799991607666 -8.991999626159668,-4.48799991607666 -8.991999626159668,-4.48799991607666 C-8.991999626159668,-4.48799991607666 -4.311999797821045,9.052000045776367 -4.311999797821045,9.052000045776367 C-3.0420000553131104,12.732000350952148 0.9580000042915344,14.682000160217285 4.638000011444092,13.42199993133545 C8.227999687194824,12.192000389099121 10.178000450134277,8.331999778747559 9.07800006866455,4.73199987411499 C9.07800006866455,4.73199987411499 8.998000144958496,4.492000102996826 8.998000144958496,4.492000102996826 C8.998000144958496,4.492000102996826 8.998000144958496,4.492000102996826 8.998000144958496,4.492000102996826 C8.998000144958496,4.492000102996826 4.317999839782715,-9.057999610900879 4.317999839782715,-9.057999610900879 C3.0480000972747803,-12.727999687194824 -0.9620000123977661,-14.687999725341797 -4.631999969482422,-13.428000450134277z"></path></g></g><g transform="matrix(1,0,0,1,40.48499298095703,349.56500244140625)" opacity="0.98" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,198,182)" fill-opacity="1" d=" M-2.878999948501587,-7.311999797821045 C-2.878999948501587,-7.311999797821045 -7.339000225067139,-2.871999979019165 -7.339000225067139,-2.871999979019165 C-8.928999900817871,-1.281999945640564 -8.928999900817871,1.2879999876022339 -7.339000225067139,2.868000030517578 C-7.339000225067139,2.868000030517578 -2.878999948501587,7.308000087738037 -2.878999948501587,7.308000087738037 C-1.2890000343322754,8.89799976348877 1.2910000085830688,8.89799976348877 2.88100004196167,7.308000087738037 C2.88100004196167,7.308000087738037 7.330999851226807,2.868000030517578 7.330999851226807,2.868000030517578 C8.930999755859375,1.2879999876022339 8.930999755859375,-1.281999945640564 7.330999851226807,-2.871999979019165 C7.330999851226807,-2.871999979019165 2.88100004196167,-7.311999797821045 2.88100004196167,-7.311999797821045 C1.2910000085830688,-8.902000427246094 -1.2890000343322754,-8.902000427246094 -2.878999948501587,-7.311999797821045z"></path></g></g><g transform="matrix(1,0,0,1,40.01099395751953,342.4200134277344)" opacity="0.98" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,198,182)" fill-opacity="1" d=" M3.1040000915527344,-8.979999542236328 C6.693999767303467,-7.739999771118164 8.644000053405762,-3.890000104904175 7.533999919891357,-0.2800000011920929 C7.533999919891357,-0.2800000011920929 7.453999996185303,-0.03999999910593033 7.453999996185303,-0.03999999910593033 C7.453999996185303,-0.03999999910593033 7.453999996185303,-0.03999999910593033 7.453999996185303,-0.03999999910593033 C7.453999996185303,-0.03999999910593033 5.854000091552734,4.610000133514404 5.854000091552734,4.610000133514404 C4.584000110626221,8.279999732971191 0.5740000009536743,10.239999771118164 -3.0959999561309814,8.979999542236328 C-6.696000099182129,7.739999771118164 -8.63599967956543,3.890000104904175 -7.535999774932861,0.2800000011920929 C-7.535999774932861,0.2800000011920929 -7.455999851226807,0.03999999910593033 -7.455999851226807,0.03999999910593033 C-7.455999851226807,0.03999999910593033 -7.455999851226807,0.03999999910593033 -7.455999851226807,0.03999999910593033 C-7.455999851226807,0.03999999910593033 -5.855999946594238,-4.610000133514404 -5.855999946594238,-4.610000133514404 C-4.585999965667725,-8.279999732971191 -0.5759999752044678,-10.239999771118164 3.1040000915527344,-8.979999542236328z"></path></g></g><g transform="matrix(1,0,0,1,46.495994567871094,319.8320007324219)" opacity="0.98" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(47,226,255)" fill-opacity="1" d=" M4.501999855041504,-11.223999977111816 C8.092000007629395,-9.984000205993652 10.041999816894531,-6.133999824523926 8.942000389099121,-2.5239999294281006 C8.942000389099121,-2.5239999294281006 8.862000465393066,-2.2839999198913574 8.862000465393066,-2.2839999198913574 C8.862000465393066,-2.2839999198913574 8.862000465393066,-2.2839999198913574 8.862000465393066,-2.2839999198913574 C8.862000465393066,-2.2839999198913574 4.061999797821045,11.605999946594238 4.061999797821045,11.605999946594238 C4.061999797821045,11.605999946594238 -9.248000144958496,7.035999774932861 -9.248000144958496,7.035999774932861 C-9.248000144958496,7.035999774932861 -4.447999954223633,-6.854000091552734 -4.447999954223633,-6.854000091552734 C-3.177999973297119,-10.52400016784668 0.8220000267028809,-12.484000205993652 4.501999855041504,-11.223999977111816z"></path></g></g><g transform="matrix(1,0,0,1,55.34199523925781,297.4739990234375)" opacity="0.98" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(47,226,255)" fill-opacity="1" d=" M4.638000011444092,-13.428000450134277 C8.227999687194824,-12.187999725341797 10.178000450134277,-8.338000297546387 9.07800006866455,-4.728000164031982 C9.07800006866455,-4.728000164031982 8.998000144958496,-4.48799991607666 8.998000144958496,-4.48799991607666 C8.998000144958496,-4.48799991607666 8.998000144958496,-4.48799991607666 8.998000144958496,-4.48799991607666 C8.998000144958496,-4.48799991607666 4.317999839782715,9.052000045776367 4.317999839782715,9.052000045776367 C3.0480000972747803,12.732000350952148 -0.9620000123977661,14.682000160217285 -4.631999969482422,13.42199993133545 C-8.232000350952148,12.192000389099121 -10.17199993133545,8.331999778747559 -9.071999549865723,4.73199987411499 C-9.071999549865723,4.73199987411499 -8.991999626159668,4.492000102996826 -8.991999626159668,4.492000102996826 C-8.991999626159668,4.492000102996826 -8.991999626159668,4.492000102996826 -8.991999626159668,4.492000102996826 C-8.991999626159668,4.492000102996826 -4.311999797821045,-9.057999610900879 -4.311999797821045,-9.057999610900879 C-3.0420000553131104,-12.727999687194824 0.9580000042915344,-14.687999725341797 4.638000011444092,-13.428000450134277z"></path></g></g><g clip-path="url(#__lottie_element_1271)" transform="matrix(0.9494749307632446,0.031580276787281036,-0.031580276787281036,0.9494749307632446,154.50289916992188,134.2850341796875)" opacity="0" style="display: block;"><g transform="matrix(-1,0,0,1,71,44.27899932861328)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(-1.9951281547546387,0.13951294124126434,-0.13951294124126434,-1.9951281547546387,0,0)"><path fill="rgb(255,198,182)" fill-opacity="1" d=" M3.2100000381469727,-8.170000076293945 C3.2100000381469727,-8.170000076293945 8.170000076293945,-3.2100000381469727 8.170000076293945,-3.2100000381469727 C9.9399995803833,-1.440000057220459 9.9399995803833,1.440000057220459 8.170000076293945,3.2100000381469727 C8.170000076293945,3.2100000381469727 3.2100000381469727,8.170000076293945 3.2100000381469727,8.170000076293945 C1.440000057220459,9.9399995803833 -1.440000057220459,9.9399995803833 -3.2100000381469727,8.170000076293945 C-3.2100000381469727,8.170000076293945 -8.170000076293945,3.2100000381469727 -8.170000076293945,3.2100000381469727 C-9.9399995803833,1.440000057220459 -9.9399995803833,-1.440000057220459 -8.170000076293945,-3.2100000381469727 C-8.170000076293945,-3.2100000381469727 -3.2100000381469727,-8.170000076293945 -3.2100000381469727,-8.170000076293945 C-1.440000057220459,-9.9399995803833 1.440000057220459,-9.9399995803833 3.2100000381469727,-8.170000076293945z"></path></g></g><g transform="matrix(1,0,0,1,64,75.27899932861328)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(1.9996954202651978,0.03490481153130531,-0.03490481153130531,1.9996954202651978,0,0)"><path fill="rgb(255,198,182)" fill-opacity="1" d=" M-8.369999885559082,20.3700008392334 C-12.229999542236328,18.68000030517578 -14.029999732971191,14.0600004196167 -12.390000343322754,10.069999694824219 C-12.390000343322754,10.069999694824219 -1.600000023841858,-16.209999084472656 -1.600000023841858,-16.209999084472656 C0.03999999910593033,-20.200000762939453 4.5,-22.06999969482422 8.369999885559082,-20.3700008392334 C12.229999542236328,-18.68000030517578 14.029999732971191,-14.0600004196167 12.390000343322754,-10.069999694824219 C12.390000343322754,-10.069999694824219 1.600000023841858,16.209999084472656 1.600000023841858,16.209999084472656 C-0.03999999910593033,20.200000762939453 -4.5,22.06999969482422 -8.369999885559082,20.3700008392334z"></path></g></g><g transform="matrix(1,0,0,1,48,117.27899932861328)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(47,226,255)" fill-opacity="1" d=" M-14.260000228881836,32.369998931884766 C-18.209999084472656,30.670000076293945 -20.059999465942383,26.040000915527344 -18.3799991607666,22.030000686645508 C-18.3799991607666,22.030000686645508 4.670000076293945,-33 4.670000076293945,-33 C4.670000076293945,-33 19,-26.84000015258789 19,-26.84000015258789 C19,-26.84000015258789 -4.050000190734863,28.190000534057617 -4.050000190734863,28.190000534057617 C-5.730000019073486,32.20000076293945 -10.300000190734863,34.06999969482422 -14.260000228881836,32.369998931884766z"></path></g></g></g><g clip-path="url(#__lottie_element_1258)" transform="matrix(-0.9475746750831604,0.06783988326787949,0.06783988326787949,0.9475746750831604,85.79782104492188,140.5573272705078)" opacity="0" style="display: block;"><g transform="matrix(-1,0,0,1,71,44.27899932861328)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(-1.9951281547546387,0.13951294124126434,-0.13951294124126434,-1.9951281547546387,0,0)"><path fill="rgb(255,198,182)" fill-opacity="1" d=" M3.2100000381469727,-8.170000076293945 C3.2100000381469727,-8.170000076293945 8.170000076293945,-3.2100000381469727 8.170000076293945,-3.2100000381469727 C9.9399995803833,-1.440000057220459 9.9399995803833,1.440000057220459 8.170000076293945,3.2100000381469727 C8.170000076293945,3.2100000381469727 3.2100000381469727,8.170000076293945 3.2100000381469727,8.170000076293945 C1.440000057220459,9.9399995803833 -1.440000057220459,9.9399995803833 -3.2100000381469727,8.170000076293945 C-3.2100000381469727,8.170000076293945 -8.170000076293945,3.2100000381469727 -8.170000076293945,3.2100000381469727 C-9.9399995803833,1.440000057220459 -9.9399995803833,-1.440000057220459 -8.170000076293945,-3.2100000381469727 C-8.170000076293945,-3.2100000381469727 -3.2100000381469727,-8.170000076293945 -3.2100000381469727,-8.170000076293945 C-1.440000057220459,-9.9399995803833 1.440000057220459,-9.9399995803833 3.2100000381469727,-8.170000076293945z"></path></g></g><g transform="matrix(1,0,0,1,64,75.27899932861328)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(1.9996954202651978,0.03490481153130531,-0.03490481153130531,1.9996954202651978,0,0)"><path fill="rgb(255,198,182)" fill-opacity="1" d=" M-8.369999885559082,20.3700008392334 C-12.229999542236328,18.68000030517578 -14.029999732971191,14.0600004196167 -12.390000343322754,10.069999694824219 C-12.390000343322754,10.069999694824219 -1.600000023841858,-16.209999084472656 -1.600000023841858,-16.209999084472656 C0.03999999910593033,-20.200000762939453 4.5,-22.06999969482422 8.369999885559082,-20.3700008392334 C12.229999542236328,-18.68000030517578 14.029999732971191,-14.0600004196167 12.390000343322754,-10.069999694824219 C12.390000343322754,-10.069999694824219 1.600000023841858,16.209999084472656 1.600000023841858,16.209999084472656 C-0.03999999910593033,20.200000762939453 -4.5,22.06999969482422 -8.369999885559082,20.3700008392334z"></path></g></g><g transform="matrix(1,0,0,1,48,117.27899932861328)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(47,226,255)" fill-opacity="1" d=" M-14.260000228881836,32.369998931884766 C-18.209999084472656,30.670000076293945 -20.059999465942383,26.040000915527344 -18.3799991607666,22.030000686645508 C-18.3799991607666,22.030000686645508 4.670000076293945,-33 4.670000076293945,-33 C4.670000076293945,-33 19,-26.84000015258789 19,-26.84000015258789 C19,-26.84000015258789 -4.050000190734863,28.190000534057617 -4.050000190734863,28.190000534057617 C-5.730000019073486,32.20000076293945 -10.300000190734863,34.06999969482422 -14.260000228881836,32.369998931884766z"></path></g></g></g><g transform="matrix(1,0,0,1,120.35900115966797,278.3550109863281)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(47,226,255)" fill-opacity="1" d=" M-35.71200180053711,-7.271999835968018 C-35.71200180053711,-7.271999835968018 35.71799850463867,-7.271999835968018 35.71799850463867,-7.271999835968018 C39.577999114990234,-7.271999835968018 42.70800018310547,-4.142000198364258 42.70800018310547,-0.2720000147819519 C42.70800018310547,-0.2720000147819519 42.70800018310547,0.27799999713897705 42.70800018310547,0.27799999713897705 C42.70800018310547,4.138000011444092 39.577999114990234,7.26800012588501 35.71799850463867,7.26800012588501 C35.71799850463867,7.26800012588501 -35.71200180053711,7.26800012588501 -35.71200180053711,7.26800012588501 C-39.582000732421875,7.26800012588501 -42.71200180053711,4.138000011444092 -42.71200180053711,0.27799999713897705 C-42.71200180053711,0.27799999713897705 -42.71200180053711,-0.2720000147819519 -42.71200180053711,-0.2720000147819519 C-42.71200180053711,-4.142000198364258 -39.582000732421875,-7.271999835968018 -35.71200180053711,-7.271999835968018z"></path></g></g><g style="display: none;" transform="matrix(0.8850650191307068,0.4118148684501648,-0.38433730602264404,0.9400328397750854,91.79438781738281,394.84051513671875)" opacity="1"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(82,82,82)" fill-opacity="1" d=" M-10.586000442504883,0.004000000189989805 C-10.586000442504883,-2.385999917984009 -8.645999908447266,-4.326000213623047 -6.25600004196167,-4.326000213623047 C-6.25600004196167,-4.326000213623047 6.263999938964844,-4.326000213623047 6.263999938964844,-4.326000213623047 C8.654000282287598,-4.326000213623047 10.583999633789062,-2.385999917984009 10.583999633789062,0.004000000189989805 C10.583999633789062,2.3940000534057617 8.654000282287598,4.323999881744385 6.263999938964844,4.323999881744385 C6.263999938964844,4.323999881744385 -6.25600004196167,4.323999881744385 -6.25600004196167,4.323999881744385 C-8.645999908447266,4.323999881744385 -10.586000442504883,2.3940000534057617 -10.586000442504883,0.004000000189989805z"></path></g></g><g style="display: none;" transform="matrix(0.8916318416595459,-0.3892457187175751,0.3688468039035797,0.9496004581451416,148.67164611816406,394.0845031738281)" opacity="1"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(82,82,82)" fill-opacity="1" d=" M-10.586000442504883,0.004000000189989805 C-10.586000442504883,-2.385999917984009 -8.645999908447266,-4.326000213623047 -6.25600004196167,-4.326000213623047 C-6.25600004196167,-4.326000213623047 6.263999938964844,-4.326000213623047 6.263999938964844,-4.326000213623047 C8.654000282287598,-4.326000213623047 10.583999633789062,-2.385999917984009 10.583999633789062,0.004000000189989805 C10.583999633789062,2.3940000534057617 8.654000282287598,4.323999881744385 6.263999938964844,4.323999881744385 C6.263999938964844,4.323999881744385 -6.25600004196167,4.323999881744385 -6.25600004196167,4.323999881744385 C-8.645999908447266,4.323999881744385 -10.586000442504883,2.3940000534057617 -10.586000442504883,0.004000000189989805z"></path></g></g><g transform="matrix(1,0,0,1,92.19100189208984,397.2869873046875)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(83,83,83)" fill-opacity="1" d=" M-10.586000442504883,0.004000000189989805 C-10.586000442504883,-2.385999917984009 -8.645999908447266,-4.326000213623047 -6.25600004196167,-4.326000213623047 C-6.25600004196167,-4.326000213623047 6.263999938964844,-4.326000213623047 6.263999938964844,-4.326000213623047 C8.654000282287598,-4.326000213623047 10.583999633789062,-2.385999917984009 10.583999633789062,0.004000000189989805 C10.583999633789062,2.3940000534057617 8.654000282287598,4.323999881744385 6.263999938964844,4.323999881744385 C6.263999938964844,4.323999881744385 -6.25600004196167,4.323999881744385 -6.25600004196167,4.323999881744385 C-8.645999908447266,4.323999881744385 -10.586000442504883,2.3940000534057617 -10.586000442504883,0.004000000189989805z"></path></g></g><g transform="matrix(1,0,0,1,147.0540008544922,397.0369873046875)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(83,83,83)" fill-opacity="1" d=" M-10.586000442504883,0.004000000189989805 C-10.586000442504883,-2.385999917984009 -8.645999908447266,-4.326000213623047 -6.25600004196167,-4.326000213623047 C-6.25600004196167,-4.326000213623047 6.263999938964844,-4.326000213623047 6.263999938964844,-4.326000213623047 C8.654000282287598,-4.326000213623047 10.583999633789062,-2.385999917984009 10.583999633789062,0.004000000189989805 C10.583999633789062,2.3940000534057617 8.654000282287598,4.323999881744385 6.263999938964844,4.323999881744385 C6.263999938964844,4.323999881744385 -6.25600004196167,4.323999881744385 -6.25600004196167,4.323999881744385 C-8.645999908447266,4.323999881744385 -10.586000442504883,2.3940000534057617 -10.586000442504883,0.004000000189989805z"></path></g></g><g transform="matrix(1,0,0,1,119.62199401855469,154.82101440429688)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,149,0)" fill-opacity="1" d=" M-0.0020000000949949026,-6.260000228881836 C5.998000144958496,-6.260000228881836 10.857999801635742,-1.3799999952316284 10.857999801635742,4.630000114440918 C10.857999801635742,4.630000114440918 10.857999801635742,6.260000228881836 10.857999801635742,6.260000228881836 C10.857999801635742,6.260000228881836 -10.862000465393066,6.260000228881836 -10.862000465393066,6.260000228881836 C-10.862000465393066,6.260000228881836 -10.862000465393066,4.630000114440918 -10.862000465393066,4.630000114440918 C-10.862000465393066,-1.3799999952316284 -6.001999855041504,-6.260000228881836 -0.0020000000949949026,-6.260000228881836z"></path></g></g><g transform="matrix(1,0,0,1,96.42499542236328,145.82901000976562)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,149,0)" fill-opacity="1" d=" M0.0010000000474974513,11.416000366210938 C6.401000022888184,11.416000366210938 11.60099983215332,6.306000232696533 11.60099983215332,-0.004000000189989805 C11.60099983215332,-6.303999900817871 6.401000022888184,-11.413999557495117 0.0010000000474974513,-11.413999557495117 C-6.408999919891357,-11.413999557495117 -11.598999977111816,-6.303999900817871 -11.598999977111816,-0.004000000189989805 C-11.598999977111816,6.306000232696533 -6.408999919891357,11.416000366210938 0.0010000000474974513,11.416000366210938z"></path></g></g><g transform="matrix(1,0,0,1,120.72699737548828,271.3590087890625)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,198,182)" fill-opacity="1" d=" M-20.621999740600586,-54.03499984741211 C-20.621999740600586,-54.03499984741211 20.618000030517578,-54.03499984741211 20.618000030517578,-54.03499984741211 C28.347999572753906,-54.03499984741211 34.608001708984375,-47.775001525878906 34.608001708984375,-40.04499816894531 C34.608001708984375,-40.04499816894531 34.608001708984375,40.04499816894531 34.608001708984375,40.04499816894531 C34.608001708984375,47.76499938964844 28.347999572753906,54.03499984741211 20.618000030517578,54.03499984741211 C20.618000030517578,54.03499984741211 -20.621999740600586,54.03499984741211 -20.621999740600586,54.03499984741211 C-28.351999282836914,54.03499984741211 -34.61199951171875,47.76499938964844 -34.61199951171875,40.04499816894531 C-34.61199951171875,40.04499816894531 -34.61199951171875,-40.04499816894531 -34.61199951171875,-40.04499816894531 C-34.61199951171875,-47.775001525878906 -28.351999282836914,-54.03499984741211 -20.621999740600586,-54.03499984741211z"></path></g></g><g mask="url(#__lottie_element_1228)" style="display: block;"><g transform="matrix(1,0,0,1,16.524002075195312,169.18099975585938)" opacity="0.33"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,149,0)" fill-opacity="1" d=" M-18.783000946044922,-21.540000915527344 C-18.783000946044922,-21.540000915527344 18.777000427246094,-21.540000915527344 18.777000427246094,-21.540000915527344 C23.35700035095215,-21.540000915527344 27.066999435424805,-17.829999923706055 27.066999435424805,-13.260000228881836 C27.066999435424805,-13.260000228881836 27.066999435424805,13.260000228881836 27.066999435424805,13.260000228881836 C27.066999435424805,17.829999923706055 23.35700035095215,21.540000915527344 18.777000427246094,21.540000915527344 C18.777000427246094,21.540000915527344 -18.783000946044922,21.540000915527344 -18.783000946044922,21.540000915527344 C-23.35300064086914,21.540000915527344 -27.062999725341797,17.829999923706055 -27.062999725341797,13.260000228881836 C-27.062999725341797,13.260000228881836 -27.062999725341797,-13.260000228881836 -27.062999725341797,-13.260000228881836 C-27.062999725341797,-17.829999923706055 -23.35300064086914,-21.540000915527344 -18.783000946044922,-21.540000915527344z"></path></g></g></g><g mask="url(#__lottie_element_1221)" style="display: block;"><g transform="matrix(1,0,0,1,228.24400329589844,169.18099975585938)" opacity="0.33"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,149,0)" fill-opacity="1" d=" M-18.783000946044922,-21.540000915527344 C-18.783000946044922,-21.540000915527344 18.777000427246094,-21.540000915527344 18.777000427246094,-21.540000915527344 C23.35700035095215,-21.540000915527344 27.066999435424805,-17.829999923706055 27.066999435424805,-13.260000228881836 C27.066999435424805,-13.260000228881836 27.066999435424805,13.260000228881836 27.066999435424805,13.260000228881836 C27.066999435424805,17.829999923706055 23.35700035095215,21.540000915527344 18.777000427246094,21.540000915527344 C18.777000427246094,21.540000915527344 -18.783000946044922,21.540000915527344 -18.783000946044922,21.540000915527344 C-23.35300064086914,21.540000915527344 -27.062999725341797,17.829999923706055 -27.062999725341797,13.260000228881836 C-27.062999725341797,13.260000228881836 -27.062999725341797,-13.260000228881836 -27.062999725341797,-13.260000228881836 C-27.062999725341797,-17.829999923706055 -23.35300064086914,-21.540000915527344 -18.783000946044922,-21.540000915527344z"></path></g></g></g><g mask="url(#__lottie_element_1215)" style="display: block;"><g transform="matrix(1,0,0,1,116.30799865722656,378.1400146484375)" opacity="1"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(0,131,193)" fill-opacity="1" d=" M-49.34000015258789,-47.775001525878906 C-49.34000015258789,-47.775001525878906 49.34000015258789,-47.775001525878906 49.34000015258789,-47.775001525878906 C49.34000015258789,-47.775001525878906 49.34000015258789,47.775001525878906 49.34000015258789,47.775001525878906 C49.34000015258789,47.775001525878906 -49.34000015258789,47.775001525878906 -49.34000015258789,47.775001525878906 C-49.34000015258789,47.775001525878906 -49.34000015258789,-47.775001525878906 -49.34000015258789,-47.775001525878906z"></path></g></g></g><g mask="url(#__lottie_element_1209)" style="display: block;"><g transform="matrix(1,0,0,1,116.30799865722656,290.13800048828125)" opacity="1"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(47,226,255)" fill-opacity="1" d=" M-49.34000015258789,-13.163000106811523 C-49.34000015258789,-13.163000106811523 49.34000015258789,-13.163000106811523 49.34000015258789,-13.163000106811523 C49.34000015258789,-13.163000106811523 49.34000015258789,13.166999816894531 49.34000015258789,13.166999816894531 C49.34000015258789,13.166999816894531 -49.34000015258789,13.166999816894531 -49.34000015258789,13.166999816894531 C-49.34000015258789,13.166999816894531 -49.34000015258789,-13.163000106811523 -49.34000015258789,-13.163000106811523z"></path></g></g></g><g transform="matrix(1,0,0,1,193.447998046875,217.60101318359375)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,198,182)" fill-opacity="1" d=" M0,-6.167500019073486 C3.4038431644439697,-6.167500019073486 6.167500019073486,-3.4038431644439697 6.167500019073486,0 C6.167500019073486,3.4038431644439697 3.4038431644439697,6.167500019073486 0,6.167500019073486 C-3.4038431644439697,6.167500019073486 -6.167500019073486,3.4038431644439697 -6.167500019073486,0 C-6.167500019073486,-3.4038431644439697 -3.4038431644439697,-6.167500019073486 0,-6.167500019073486z"></path></g></g><g transform="matrix(1,0,0,1,47.26899719238281,217.60101318359375)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,198,182)" fill-opacity="1" d=" M0,-6.167500019073486 C3.4038431644439697,-6.167500019073486 6.167500019073486,-3.4038431644439697 6.167500019073486,0 C6.167500019073486,3.4038431644439697 3.4038431644439697,6.167500019073486 0,6.167500019073486 C-3.4038431644439697,6.167500019073486 -6.167500019073486,3.4038431644439697 -6.167500019073486,0 C-6.167500019073486,-3.4038431644439697 -3.4038431644439697,-6.167500019073486 0,-6.167500019073486z"></path></g></g><g transform="matrix(1,0,0,1,118,215.5)" opacity="1" style="display: block;"><path stroke-linecap="round" stroke-linejoin="miter" fill-opacity="0" stroke-miterlimit="4" stroke="rgb(255,255,255)" stroke-opacity="1" stroke-width="8" d=" M14.25,63.25 C14.25,63.25 14.25,72.25 14.25,74.75 C14.25,77.25 14.25,86.5 14.25,86.5"></path></g><g transform="matrix(1,0,0,1,95,215.5)" opacity="1" style="display: block;"><path stroke-linecap="round" stroke-linejoin="miter" fill-opacity="0" stroke-miterlimit="4" stroke="rgb(255,255,255)" stroke-opacity="1" stroke-width="8" d=" M14.25,63.25 C14.25,63.25 14.25,72.25 14.25,74.75 C14.25,77.25 14.25,86.5 14.25,86.5"></path></g><g transform="matrix(1,0,0,1,100.16200256347656,199.92300415039062)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,255,255)" fill-opacity="1" d=" M-0.0010000000474974513,-11.321000099182129 C4.789000034332275,-11.321000099182129 8.678999900817871,-7.431000232696533 8.678999900817871,-2.6410000324249268 C8.678999900817871,-2.6410000324249268 8.678999900817871,2.6389999389648438 8.678999900817871,2.6389999389648438 C8.678999900817871,7.428999900817871 4.789000034332275,11.319000244140625 -0.0010000000474974513,11.319000244140625 C-4.790999889373779,11.319000244140625 -8.680999755859375,7.428999900817871 -8.680999755859375,2.6389999389648438 C-8.680999755859375,2.6389999389648438 -8.680999755859375,-2.6410000324249268 -8.680999755859375,-2.6410000324249268 C-8.680999755859375,-7.431000232696533 -4.790999889373779,-11.321000099182129 -0.0010000000474974513,-11.321000099182129z"></path></g></g><g transform="matrix(1,0,0,1,104.95500183105469,200.281005859375)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(61,61,61)" fill-opacity="1" d=" M0.003000000026077032,-6.343999862670898 C2.1530001163482666,-6.343999862670898 3.8929998874664307,-4.605000019073486 3.8929998874664307,-2.444999933242798 C3.8929998874664307,-2.444999933242798 3.8929998874664307,2.444999933242798 3.8929998874664307,2.444999933242798 C3.8929998874664307,4.59499979019165 2.1530001163482666,6.3460001945495605 0.003000000026077032,6.3460001945495605 C-2.1470000743865967,6.3460001945495605 -3.8970000743865967,4.59499979019165 -3.8970000743865967,2.444999933242798 C-3.8970000743865967,2.444999933242798 -3.8970000743865967,-2.115000009536743 -3.8970000743865967,-2.115000009536743 C-3.8970000743865967,-2.115000009536743 -3.7170000076293945,-2.115000009536743 -3.7170000076293945,-2.115000009536743 C-3.7170000076293945,-2.115000009536743 -3.7170000076293945,-2.115000009536743 -3.7170000076293945,-2.115000009536743 C-1.9869999885559082,-2.115000009536743 -0.5870000123977661,-3.515000104904175 -0.5870000123977661,-5.244999885559082 C-0.5870000123977661,-5.605000019073486 -0.6470000147819519,-5.945000171661377 -0.7570000290870667,-6.275000095367432 C-0.5070000290870667,-6.315000057220459 -0.25699999928474426,-6.343999862670898 0.003000000026077032,-6.343999862670898z"></path></g></g><g mask="url(#__lottie_element_1187)" style="display: block;"><g transform="matrix(0.39500001072883606,0,0,0.6458200216293335,99.75,141.27301025390625)" opacity="1"><path fill="rgb(255,198,183)" fill-opacity="1" d=" M50,-50 C50,-50 50,50 50,50 C50,50 30.3799991607666,45.742000579833984 -0.6330000162124634,45.742000579833984 C-30.3799991607666,45.742000579833984 -50,50 -50,50 C-50,50 -50,-50 -50,-50 C-50,-50 50,-50 50,-50z"></path></g></g><g mask="url(#__lottie_element_1181)" style="display: block;"><g transform="matrix(0.3950049877166748,0,0,0.6458202600479126,99.75,256.6337890625)" opacity="1"><path fill="rgb(255,198,183)" fill-opacity="1" d=" M50,-50 C50,-50 50,50 50,50 C50,50 -50,50 -50,50 C-50,50 -50,-50 -50,-50 C-50,-50 50,-50 50,-50z"></path></g></g><g transform="matrix(1,0,0,1,141.03199768066406,199.92300415039062)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,255,255)" fill-opacity="1" d=" M-0.0010000000474974513,-11.321000099182129 C-4.790999889373779,-11.321000099182129 -8.680999755859375,-7.431000232696533 -8.680999755859375,-2.6410000324249268 C-8.680999755859375,-2.6410000324249268 -8.680999755859375,2.6389999389648438 -8.680999755859375,2.6389999389648438 C-8.680999755859375,7.428999900817871 -4.790999889373779,11.319000244140625 -0.0010000000474974513,11.319000244140625 C4.789000034332275,11.319000244140625 8.678999900817871,7.428999900817871 8.678999900817871,2.6389999389648438 C8.678999900817871,2.6389999389648438 8.678999900817871,-2.6410000324249268 8.678999900817871,-2.6410000324249268 C8.678999900817871,-7.431000232696533 4.789000034332275,-11.321000099182129 -0.0010000000474974513,-11.321000099182129z"></path></g></g><g transform="matrix(1,0,0,1,137.34300231933594,200.2830047607422)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(61,61,61)" fill-opacity="1" d=" M0.003000000026077032,-6.343999862670898 C2.0829999446868896,-6.343999862670898 3.7929999828338623,-4.704999923706055 3.8929998874664307,-2.6449999809265137 C3.8929998874664307,-2.6449999809265137 3.8929998874664307,-2.444999933242798 3.8929998874664307,-2.444999933242798 C3.8929998874664307,-2.444999933242798 3.8929998874664307,2.444999933242798 3.8929998874664307,2.444999933242798 C3.8929998874664307,4.59499979019165 2.1530001163482666,6.3460001945495605 0.003000000026077032,6.3460001945495605 C-2.0869998931884766,6.3460001945495605 -3.7869999408721924,4.704999923706055 -3.88700008392334,2.6449999809265137 C-3.88700008392334,2.6449999809265137 -3.8970000743865967,2.444999933242798 -3.8970000743865967,2.444999933242798 C-3.8970000743865967,2.444999933242798 -3.8970000743865967,-2.115000009536743 -3.8970000743865967,-2.115000009536743 C-3.8970000743865967,-2.115000009536743 -3.7070000171661377,-2.115000009536743 -3.7070000171661377,-2.115000009536743 C-3.7070000171661377,-2.115000009536743 -3.7070000171661377,-2.115000009536743 -3.7070000171661377,-2.115000009536743 C-1.9769999980926514,-2.115000009536743 -0.5770000219345093,-3.515000104904175 -0.5770000219345093,-5.244999885559082 C-0.5770000219345093,-5.605000019073486 -0.6370000243186951,-5.945000171661377 -0.746999979019165,-6.275000095367432 C-0.5070000290870667,-6.324999809265137 -0.25699999928474426,-6.343999862670898 0.003000000026077032,-6.343999862670898z"></path></g></g><g mask="url(#__lottie_element_1166)" style="display: block;"><g transform="matrix(0.39500001072883606,0,0,0.6458200216293335,141.25,141.27301025390625)" opacity="1"><path fill="rgb(255,198,183)" fill-opacity="1" d=" M50,-50 C50,-50 50,50 50,50 C50,50 30.3799991607666,45.742000579833984 -0.6330000162124634,45.742000579833984 C-30.3799991607666,45.742000579833984 -50,50 -50,50 C-50,50 -50,-50 -50,-50 C-50,-50 50,-50 50,-50z"></path></g></g><g mask="url(#__lottie_element_1160)" style="display: block;"><g transform="matrix(0.3950049877166748,0,0,0.6458202600479126,140.75,256.6337890625)" opacity="1"><path fill="rgb(255,198,183)" fill-opacity="1" d=" M50,-50 C50,-50 50,50 50,50 C50,50 -50,50 -50,50 C-50,50 -50,-50 -50,-50 C-50,-50 50,-50 50,-50z"></path></g></g><g transform="matrix(1,0,0,1,97.8479995727539,223.72500610351562)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,198,182)" fill-opacity="1" d=" M-12.503999710083008,-5.086999893188477 C-3.1640000343322754,-5.13700008392334 5.015999794006348,-2.927000045776367 12.005999565124512,1.5329999923706055 C12.005999565124512,1.5329999923706055 12.505999565124512,1.8630000352859497 12.505999565124512,1.8630000352859497 C12.505999565124512,1.8630000352859497 10.37600040435791,5.083000183105469 10.37600040435791,5.083000183105469 C4.105999946594238,0.953000009059906 -3.2739999294281006,-1.156999945640564 -11.803999900817871,-1.2170000076293945 C-11.803999900817871,-1.2170000076293945 -12.484000205993652,-1.2170000076293945 -12.484000205993652,-1.2170000076293945 C-12.484000205993652,-1.2170000076293945 -12.503999710083008,-5.086999893188477 -12.503999710083008,-5.086999893188477z"></path></g></g><g style="display: none;" transform="matrix(-1.041273832321167,0.014445919543504715,0.02027204819023609,1.461225986480713,144.4635467529297,230.2627410888672)" opacity="0.00168000000161328"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(255,198,182)" fill-opacity="1" d=" M-12.503999710083008,-5.086999893188477 C-3.1640000343322754,-5.13700008392334 5.015999794006348,-2.927000045776367 12.005999565124512,1.5329999923706055 C12.005999565124512,1.5329999923706055 12.505999565124512,1.8630000352859497 12.505999565124512,1.8630000352859497 C12.505999565124512,1.8630000352859497 10.37600040435791,5.083000183105469 10.37600040435791,5.083000183105469 C4.105999946594238,0.953000009059906 -3.2739999294281006,-1.156999945640564 -11.803999900817871,-1.2170000076293945 C-11.803999900817871,-1.2170000076293945 -12.484000205993652,-1.2170000076293945 -12.484000205993652,-1.2170000076293945 C-12.484000205993652,-1.2170000076293945 -12.503999710083008,-5.086999893188477 -12.503999710083008,-5.086999893188477z"></path></g></g><g transform="matrix(1,0,0,1,114.07799530029297,235.5900115966797)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(237,149,130)" fill-opacity="1" d=" M-4.400000095367432,-2.490999937057495 C-3.9600000381469727,-2.750999927520752 -3.4000000953674316,-2.6110000610351562 -3.130000114440918,-2.180999994277954 C-1.5099999904632568,0.48899999260902405 0.6700000166893005,1.3289999961853027 3.6500000953674316,0.4390000104904175 C4.139999866485596,0.289000004529953 4.650000095367432,0.5690000057220459 4.800000190734863,1.059000015258789 C4.949999809265137,1.5490000247955322 4.670000076293945,2.059000015258789 4.179999828338623,2.1989998817443848 C0.38999998569488525,3.3389999866485596 -2.6500000953674316,2.1589999198913574 -4.710000038146973,-1.2209999561309814 C-4.96999979019165,-1.6610000133514404 -4.829999923706055,-2.2209999561309814 -4.400000095367432,-2.490999937057495z"></path></g></g><g transform="matrix(1,0,0,1,120.17499542236328,220.17800903320312)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(237,149,130)" fill-opacity="1" d=" M0.004000000189989805,4.88100004196167 C1.8839999437332153,4.88100004196167 3.4040000438690186,3.3510000705718994 3.4040000438690186,1.4609999656677246 C3.4040000438690186,-0.4189999997615814 0.004000000189989805,-4.879000186920166 0.004000000189989805,-4.879000186920166 C0.004000000189989805,-4.879000186920166 -3.4059998989105225,-0.4189999997615814 -3.4059998989105225,1.4609999656677246 C-3.4059998989105225,3.3510000705718994 -1.8860000371932983,4.88100004196167 0.004000000189989805,4.88100004196167z"></path></g></g><g clip-path="url(#__lottie_element_1142)" transform="matrix(0.12982183694839478,0.006803674157708883,-0.006803674157708883,0.12982183694839478,82.33287048339844,206.03628540039062)" opacity="0" style="display: block;"><g transform="matrix(1,0,0,1,127,143)" opacity="1" style="display: block;"><g opacity="1" transform="matrix(2,0,0,2,0,0)"><path fill="rgb(177,49,49)" fill-opacity="1" d=" M0,-41.5 C22.903850555419922,-41.5 41.5,-22.903850555419922 41.5,0 C41.5,22.903850555419922 22.903850555419922,41.5 0,41.5 C-22.903850555419922,41.5 -41.5,22.903850555419922 -41.5,0 C-41.5,-22.903850555419922 -22.903850555419922,-41.5 0,-41.5z"></path><path stroke-linecap="butt" stroke-linejoin="miter" fill-opacity="0" stroke-miterlimit="4" stroke="rgb(255,198,182)" stroke-opacity="1" stroke-width="15" d=" M0,-41.5 C22.903850555419922,-41.5 41.5,-22.903850555419922 41.5,0 C41.5,22.903850555419922 22.903850555419922,41.5 0,41.5 C-22.903850555419922,41.5 -41.5,22.903850555419922 -41.5,0 C-41.5,-22.903850555419922 -22.903850555419922,-41.5 0,-41.5z"></path></g></g></g></g></svg></span></div></div><div class="_2O14B _1UVl- _2zkz3" style="z-index: 150;"><div class="_1KUxv _11rtD"><div dir="ltr"><span data-test="hint-sentence"><div class="_34k_q _3Lg1h _13doy" tabindex="0" data-test="hint-token" style="--offset:13px;">a</div><span data-test="hint-token"> </span><div class="_34k_q _3Lg1h _13doy" tabindex="0" data-test="hint-token" style="--offset:13px;">man</div><span data-test="hint-token"> </span><div class="_34k_q _3Lg1h _13doy" tabindex="0" data-test="hint-token" style="--offset:13px;">and</div><span data-test="hint-token"> </span><div class="_34k_q _3Lg1h _13doy" tabindex="0" data-test="hint-token" style="--offset:13px;">a</div><span data-test="hint-token"> </span><div class="_34k_q _3Lg1h _13doy" tabindex="0" data-test="hint-token" style="--offset:13px;">cat</div></span></div></div><div class="ite_X" style="top: calc(50% - 15px); transform: translateY(-50%) rotate(-90deg);"><div class="_3p5e9"></div></div></div></div></div><div class="_3GhCe _1zSeg _qg8x"><div class="tVzIv"><div class="_1OQnu _1C_S3 _1HxVp"><div class="_2PLYW"><div class="Qwwbl"><div class="_1uasP" dir="ltr"><div class="_349xo"><div class="_1gBvQ _15J0U"></div><div class="_1gBvQ _15J0U"></div><div class="_1gBvQ _15J0U"></div><div class="_1gBvQ _15J0U"></div><div class="_1gBvQ _15J0U"></div></div><div class="PcKtj" tabindex="0"><div class="_1yW4j _2LmyT"><button class="_3XI03 _2mG9r notranslate _6Nozy _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">un</button></div><div class="_1yW4j _2LmyT"><button class="_3XI03 _2mG9r notranslate _6Nozy _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">homme</button></div><div class="_1yW4j _2LmyT"><button class="_3XI03 _2mG9r notranslate _6Nozy _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">et</button></div><div class="_1yW4j _2LmyT"><button class="_3XI03 _2mG9r notranslate _6Nozy _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">un</button></div><div class="_1yW4j _2LmyT"><button class="_3XI03 _2mG9r notranslate _6Nozy _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">chat</button></div></div></div></div></div><div class="_3Lqi-"><div class="_1_wIY" data-test="word-bank"><div class="_1yW4j _2LmyT"><button class="_2UUiS notranslate _6Nozy _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w _2mDNn" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">homme</button></div><div class="_1yW4j _2LmyT"><button class="_2UUiS notranslate _6Nozy _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w _2mDNn" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">un</button></div><div class="_1yW4j _2LmyT"><button class="_3XI03 _2mG9r notranslate _6Nozy _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">garçon</button></div><div class="_1yW4j _2LmyT"><button class="_2UUiS notranslate _6Nozy _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w _2mDNn" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">chat</button></div><div class="_1yW4j _2LmyT"><button class="_2UUiS notranslate _6Nozy _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w _2mDNn" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">un</button></div><div class="_1yW4j _2LmyT"><button class="_2UUiS notranslate _6Nozy _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w _2mDNn" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">et</button></div></div></div></div></div></div></div>
//<div class="PcKtj" tabindex="0"><div class="_1yW4j _2LmyT"><button class="_3XI03 _2mG9r notranslate _6Nozy _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">un</button></div><div class="_1yW4j _2LmyT"><button class="_3XI03 _2mG9r notranslate _6Nozy _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">homme</button></div><div class="_1yW4j _2LmyT"><button class="_3XI03 _2mG9r notranslate _6Nozy _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">et</button></div><div class="_1yW4j _2LmyT"><button class="_3XI03 _2mG9r notranslate _6Nozy _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">un</button></div><div class="_1yW4j _2LmyT"><button class="_3XI03 _2mG9r notranslate _6Nozy _1O290 _1wJYQ _2A7uO _2gwtT _1nlVc _2fOC9 t5wFJ _3dtSu _25Cnc _3yAjN _3Ev3S _1figt _3tP0w" dir="ltr" translate="no" data-test="challenge-tap-token" disabled="">chat</button></div></div>
//
// completeReverseTranslation
// <label class="_3f_Q3 _2FKqf _2ti2i sXpqy" dir="ltr"><span>un</span><span> </span><span>garçon</span><span> </span><span>et</span><span> </span><span>une</span><span> </span><span class="_33vo_"><div class="caPDQ">_fille_</div><input data-test="challenge-text-input" autocapitalize="off" autocomplete="off" autocorrect="off" spellcheck="false" class="_2AzoZ _17nEt sXpqy" dir="ltr" size="1" type="text" value="fille"></span></label>
//