HEX
Server: Apache
System: Linux vps.mmtprep.com 4.18.0-477.21.1.el8_8.x86_64 #1 SMP Thu Aug 10 13:51:50 EDT 2023 x86_64
User: mmtprep (1001)
PHP: 8.1.34
Disabled: exec,passthru,shell_exec,system
Upload Files
File: /home/mmtprep/public_html/mathzen.mmtprep.com/assets/outilsStat-csXHeSjv.js.map
{"version":3,"file":"outilsStat-csXHeSjv.js","sources":["../../src/modules/outilsStat.js"],"sourcesContent":["import { choice } from '../lib/outils/arrayOutils'\nimport { nomDuMois } from '../lib/outils/dateEtHoraires'\nimport { deprecatedTexFraction } from '../lib/outils/deprecatedFractions.js'\nimport { ecritureParentheseSiNegatif } from '../lib/outils/ecritures'\nimport { lampeMessage } from '../lib/format/message.js'\nimport { arrondi } from '../lib/outils/nombres'\nimport { prenom } from '../lib/outils/Personne'\nimport { texteGras } from '../lib/format/style'\nimport { stringNombre, texNombre } from '../lib/outils/texNombre'\nimport { miseEnEvidence } from '../lib/outils/embellissements'\nimport FractionEtendue from './FractionEtendue'\n\nfunction underbraceMediane (nbVal) {\n  let sortie\n  if (nbVal % 2 === 0) { // nb pair de valeurs\n    sortie = `$\\\\underbrace{1^e\\\\hspace{0.25cm}2^e ... ${nbVal / 2 - 1}^e}_{${nbVal / 2 - 1}\\\\; valeurs} \\\\hspace{0.25cm} ${nbVal / 2}^e \\\\hspace{0.25cm} ${nbVal / 2 + 1}^e \\\\hspace{0.25cm} \\\\underbrace{${nbVal / 2 + 2}^e ... ${nbVal}^e}_{${nbVal / 2 - 1}\\\\; valeurs}$`\n  } else { // nb impair de valeurs\n    sortie = `$\\\\underbrace{1^e\\\\hspace{0.25cm}2^e ... ${(nbVal - 1) / 2}^e}_{${(nbVal - 1) / 2}\\\\; valeurs} \\\\hspace{0.25cm} ${(nbVal - 1) / 2 + 1}^e \\\\hspace{0.25cm} \\\\underbrace{${(nbVal - 1) / 2 + 2}^e ... ${nbVal}^e}_{${(nbVal - 1) / 2}\\\\; valeurs}$`\n  }\n  return sortie\n}\n\nfunction desTabEffCumul (tirages, effCumulBool, categories = [], lignes = ['Catégories', 'Scores', 'Nombre d\\'apparitions', 'Nombre d\\'apparitions cumulées']) {\n  let sortie\n  if (!effCumulBool) {\n    sortie = ''\n    if (tirages.length > 12) {\n      sortie += '$\\\\def\\\\arraystretch{1.5}\\\\begin{array}{|c' // construction du tableau des effectifs 1/2\n      for (let j = 0; j <= Math.round(tirages.length / 2); j++) {\n        sortie += '|c'\n      }\n      sortie += '}'\n      if (categories.length > 0) {\n        sortie += '\\\\hline ' + `\\\\text{${lignes[0]}} `\n        for (let j = 0; j < Math.round(tirages.length / 2); j++) {\n          sortie += '&\\\\text{' + categories[j] + '}'\n        }\n        sortie += '\\\\\\\\'\n      }\n      sortie += '\\\\hline  ' + `\\\\text{${lignes[1]}} `\n      for (let j = 0; j < Math.round(tirages.length / 2); j++) {\n        sortie += '&' + tirages[j][0]\n      }\n      sortie += '\\\\\\\\\\\\hline ' + `\\\\text{${lignes[2]}} `\n      for (let j = 0; j < Math.round(tirages.length / 2); j++) {\n        sortie += '&' + tirages[j][1]\n      }\n      sortie += '\\\\\\\\\\\\hline\\\\end{array}$<br><br>'\n\n      sortie += '$\\\\def\\\\arraystretch{1.5}\\\\begin{array}{|c' // construction du tableau des effectifs 2/2\n      for (let j = Math.round(tirages.length / 2); j <= tirages.length; j++) {\n        sortie += '|c'\n      }\n      sortie += '}'\n      if (categories.length > 0) {\n        sortie += '\\\\hline ' + `\\\\text{${lignes[0]}} `\n        for (let j = Math.round(tirages.length / 2); j < tirages.length; j++) {\n          sortie += '&\\\\text{' + categories[j] + '}'\n        }\n        sortie += '\\\\\\\\'\n      }\n      sortie += '\\\\hline ' + `\\\\text{${lignes[1]}} `\n      for (let j = Math.round(tirages.length / 2); j < tirages.length; j++) {\n        sortie += '&' + tirages[j][0]\n      }\n      sortie += '\\\\\\\\\\\\hline ' + `\\\\text{${lignes[2]}} `\n      for (let j = Math.round(tirages.length / 2); j < tirages.length; j++) {\n        sortie += '&' + tirages[j][1]\n      }\n      sortie += '\\\\\\\\\\\\hline\\\\end{array}$'\n    } else {\n      sortie += '$\\\\def\\\\arraystretch{1.5}\\\\begin{array}{|c' // construction du tableau des effectifs en un seul morceau\n      for (let j = 0; j <= tirages.length; j++) {\n        sortie += '|c'\n      }\n      sortie += '}'\n      if (categories.length > 0) {\n        sortie += '\\\\hline  ' + `\\\\text{${lignes[0]}} `\n        for (let j = 0; j < tirages.length; j++) {\n          sortie += '&\\\\text{' + categories[j] + '}'\n        }\n        sortie += '\\\\\\\\'\n      }\n      sortie += '\\\\hline  ' + `\\\\text{${lignes[1]}} `\n      for (let j = 0; j < tirages.length; j++) {\n        sortie += '&' + tirages[j][0]\n      }\n      sortie += '\\\\\\\\\\\\hline ' + `\\\\text{${lignes[2]}} `\n      for (let j = 0; j < tirages.length; j++) {\n        sortie += '&' + tirages[j][1]\n      }\n      sortie += '\\\\\\\\\\\\hline\\\\end{array}$'\n    }\n  } else {\n    sortie = ''\n    if (tirages.length > 12) {\n      sortie += '$\\\\def\\\\arraystretch{1.5}\\\\begin{array}{|c' // construction du tableau des effectifs 1/2\n      for (let j = 0; j <= Math.round(tirages.length / 2); j++) {\n        sortie += '|c'\n      }\n      sortie += '}'\n      if (categories.length > 0) {\n        sortie += '\\\\hline ' + `\\\\text{${lignes[0]}} `\n        for (let j = 0; j < Math.round(tirages.length / 2); j++) {\n          sortie += '&\\\\text{' + categories[j] + '}'\n        }\n        sortie += '\\\\\\\\'\n      }\n      sortie += '\\\\hline  ' + `\\\\text{${lignes[1]}} `\n      for (let j = 0; j < Math.round(tirages.length / 2); j++) {\n        sortie += '&' + tirages[j][0]\n      }\n      sortie += '\\\\\\\\\\\\hline  ' + `\\\\text{${lignes[2]}} `\n      for (let j = 0; j < Math.round(tirages.length / 2); j++) {\n        sortie += '&' + tirages[j][1]\n      }\n      sortie += '\\\\\\\\\\\\hline ' + `\\\\text{${lignes[3]}} `\n      for (let j = 0; j < Math.round(tirages.length / 2); j++) {\n        let cumul = 0\n        for (let k = 0; k <= j; k++) {\n          cumul += tirages[k][1]\n        }\n        sortie += '&' + cumul// tirages[j][1];\n      }\n      sortie += '\\\\\\\\\\\\hline\\\\end{array}$<br><br>'\n\n      sortie += '$\\\\def\\\\arraystretch{1.5}\\\\begin{array}{|c' // construction du tableau des effectifs 2/2\n      for (let j = Math.round(tirages.length / 2); j <= tirages.length; j++) {\n        sortie += '|c'\n      }\n      sortie += '}'\n      if (categories.length > 0) {\n        sortie += '\\\\hline ' + `\\\\text{${lignes[0]}} `\n        for (let j = Math.round(tirages.length / 2); j < tirages.length; j++) {\n          sortie += '&\\\\text{' + categories[j] + '}'\n        }\n        sortie += '\\\\\\\\'\n      }\n      sortie += '\\\\hline  ' + `\\\\text{${lignes[1]}} `\n      for (let j = Math.round(tirages.length / 2); j < tirages.length; j++) {\n        sortie += '&' + tirages[j][0]\n      }\n      sortie += '\\\\\\\\\\\\hline ' + `\\\\text{${lignes[2]}} `\n      for (let j = Math.round(tirages.length / 2); j < tirages.length; j++) {\n        sortie += '&' + tirages[j][1]\n      }\n      sortie += '\\\\\\\\\\\\hline ' + `\\\\text{${lignes[3]}} `\n      for (let j = Math.round(tirages.length / 2); j < tirages.length; j++) {\n        let cumul = 0\n        for (let k = 0; k <= j; k++) {\n          cumul += tirages[k][1]\n        }\n        sortie += '&' + cumul// tirages[j][1];\n      }\n      sortie += '\\\\\\\\\\\\hline\\\\end{array}$'\n    } else {\n      sortie += '$\\\\def\\\\arraystretch{1.5}\\\\begin{array}{|c' // construction du tableau des effectifs en un seul morceau\n      for (let j = 0; j <= tirages.length; j++) {\n        sortie += '|c'\n      }\n      sortie += '}'\n      if (categories.length > 0) {\n        sortie += '\\\\hline ' + `\\\\text{${lignes[0]}} `\n        for (let j = 0; j < tirages.length; j++) {\n          sortie += '&\\\\text{' + categories[j] + '}'\n        }\n        sortie += '\\\\\\\\'\n      }\n      sortie += '\\\\hline  ' + `\\\\text{${lignes[1]}} `\n      for (let j = 0; j < tirages.length; j++) {\n        sortie += '&' + tirages[j][0]\n      }\n      sortie += '\\\\\\\\\\\\hline ' + `\\\\text{${lignes[2]}} `\n      for (let j = 0; j < tirages.length; j++) {\n        sortie += '&' + tirages[j][1]\n      }\n      sortie += '\\\\\\\\\\\\hline ' + `\\\\text{${lignes[3]}} `\n      for (let j = 0; j < tirages.length; j++) {\n        let cumul = 0\n        for (let k = 0; k <= j; k++) {\n          cumul += tirages[k][1]\n        }\n        sortie += '&' + cumul// tirages[j][1];\n      }\n      sortie += '\\\\\\\\\\\\hline\\\\end{array}$'\n    }\n  }\n\n  return sortie\n}\n\nfunction computeMoyenne (notes) {\n  let somme = 0\n  for (let j = 0; j < notes.length; j++) {\n    somme += notes[j]\n  }\n\n  return [deprecatedTexFraction(somme, notes.length), somme]\n}\n\nfunction computeMediane (notes) {\n  const notesRangees = notes.sort((a, b) => a - b)\n  let mediane\n  if (notes.length % 2 === 0) { // attention les indices commencent à 0 !\n    mediane = [notesRangees[notes.length / 2 - 1], notesRangees[notes.length / 2]]\n  } else {\n    mediane = notesRangees[(notes.length - 1) / 2]\n  }\n  let medianeCorr // pour la correction statique\n  Array.isArray(mediane) ? medianeCorr = (mediane[0] + mediane[1]) / 2 : medianeCorr = mediane\n  return [mediane, medianeCorr]\n}\n\nfunction computeEtendue (notes) {\n  let min = notes[0]\n  let max = notes[0]\n  for (let j = 1; j < notes.length; j++) { // On cherche la note minimum et la note maximum\n    min = Math.min(notes[j], min)\n    max = Math.max(notes[j], max)\n  }\n  return [min, max]\n}\n\nfunction computeMoyenneTirages2D (tirages) {\n  let somme = 0\n  let effectif = 0\n  for (let k = 0; k < tirages.length; k++) {\n    somme += tirages[k][0] * tirages[k][1]\n    effectif += tirages[k][1]\n  }\n  return [deprecatedTexFraction(somme, effectif), somme, effectif]\n}\n\nfunction computeMedianeTirages2D (nombreTirages, tirages) {\n  const scoresMedians = []\n  let medianeCorr // pour la correction statique\n  if (nombreTirages % 2 === 0) {\n    // on récupère le score des deux lancers médians\n    // compteur\n    let cpt = 0\n    // Pour cumuler les effectifs, tirages est un tableau 2D qui contient les couples [score,effectif]\n    let effCumulCroiss = tirages[0][1]\n    // On récupère le premier score médian\n    while (effCumulCroiss < nombreTirages / 2) {\n      cpt += 1\n      effCumulCroiss += tirages[cpt][1]\n    }\n\n    scoresMedians.push(tirages[cpt][0])\n    // On récupère le second score médian\n    cpt = 0\n    effCumulCroiss = tirages[0][1]\n    while (effCumulCroiss < nombreTirages / 2 + 1) {\n      cpt += 1\n      effCumulCroiss += tirages[cpt][1]\n    }\n\n    scoresMedians.push(tirages[cpt][0])\n    scoresMedians[0] === scoresMedians[1] ? medianeCorr = scoresMedians[0] : medianeCorr = (scoresMedians[0] + scoresMedians[1]) / 2\n  } else { // Le nombre de lancers est impair ici\n    // on récupère le score des deux lancers médians\n    // compteur\n    let cpt = 0\n    // Pour cumuler les effectifs, tirages est un tableau 2D qui contient les couples [score,effectif]\n    let effCumulCroiss = tirages[0][1]\n    // On récupère le premier score médian\n    while (effCumulCroiss <= nombreTirages / 2) {\n      cpt += 1\n      effCumulCroiss += tirages[cpt][1]\n    }\n\n    scoresMedians.push(tirages[cpt][0])\n    medianeCorr = scoresMedians[0]\n  }\n  return [scoresMedians, medianeCorr]\n}\n\nfunction texteCorrMoyenneNotes (notesSeries, somme, nombreNotes, notes = 'notes') {\n  const data = [\n    ['notes', 'la moyenne des notes', ''],\n    ['lancers', 'la moyenne des lancers', ''],\n    ['températures', 'la moyenne des températures', ' $\\\\mathbf{^\\\\circ\\\\text{C}}$'],\n    ['salaires', 'le salaire moyen', ' €'],\n    ['pointures', 'la pointure moyenne', '']\n  ]\n\n  const noteStr = data.find(el => el[0] === notes) || ['', '', '']\n\n  let texteCorr = ''\n  if (notesSeries !== undefined && notesSeries instanceof Array && notesSeries.length > 0 && notesSeries[0] instanceof Array && notesSeries[0].length > 0) {\n    // tableau à deux entrées\n    texteCorr += '$\\\\text{Moyenne} = '\n    texteCorr += `\\\\dfrac{${notesSeries[0][0]} \\\\times ${notesSeries[0][1]}`\n    let eff = `${notesSeries[0][1]}`\n    for (let j = 1; j < notesSeries.length; j++) {\n      if (notesSeries.length < 10) {\n        texteCorr += `+ ${notesSeries[j][0]} \\\\times ${notesSeries[j][1]}`\n        eff += `+ ${notesSeries[j][1]}`\n      } else {\n        if (j < 3) texteCorr += `+ ${notesSeries[j][0]} \\\\times ${notesSeries[j][1]}`\n        if (j < 3) eff += `+ ${notesSeries[j][1]}`\n        if (j === 3) texteCorr += '+ \\\\ldots '\n        if (j === 3) eff += '+ \\\\ldots '\n        if (j + 3 >= notesSeries.length) texteCorr += `+ ${notesSeries[j][0]} \\\\times ${notesSeries[j][1]}`\n        if (j + 3 >= notesSeries.length) eff += `+ ${notesSeries[j][1]}`\n      }\n    }\n    texteCorr += `}{${eff}}=\\\\dfrac{${texNombre(somme, 0)}}{${texNombre(nombreNotes, 0)}}$. <br>`\n  } else {\n    // tableau à une entrée\n    texteCorr += '$\\\\text{Moyenne} = '\n    texteCorr += `\\\\dfrac{${notesSeries[0]} `\n    for (let j = 1; j < notesSeries.length; j++) {\n      if (notesSeries.length < 10) {\n        texteCorr += `+ ${notesSeries[j]}`\n      } else {\n        if (j < 3) texteCorr += `+ ${notesSeries[j]}`\n        if (j === 3) texteCorr += '+ \\\\ldots '\n        if (j + 3 >= notesSeries.length) texteCorr += `+ ${notesSeries[j]}`\n      }\n    }\n    texteCorr += `}{${notesSeries.length}}=\\\\dfrac{${texNombre(somme, 0)}}{${texNombre(nombreNotes, 0)}}$. <br>`\n  }\n  texteCorr += `La somme des ${notes} est : $${texNombre(somme, 0)}$.<br> Il y a $${texNombre(nombreNotes, 0)}$ ${notes}.<br>`\n  texteCorr += `Donc ${noteStr[1]} est $${new FractionEtendue(somme, nombreNotes).texFSD}`\n  if (arrondi(somme / nombreNotes, 1) === somme / nombreNotes) { // moyenne exacte\n    texteCorr += `=${miseEnEvidence(texNombre(somme / nombreNotes, 1))}$${noteStr[2]}.<br>`\n  } else { // moyenne arrondie\n    texteCorr += `\\\\approx${miseEnEvidence(texNombre(somme / nombreNotes, 1))}$${noteStr[2]}.<br>`\n  }\n  return texteCorr\n}\n\nfunction texteCorrEtendueNotes (min, max, note = 'note') {\n  const data = [\n    ['note', 'La note la plus basse', 'La note la plus haute', ''],\n    ['lancer', 'Le résultat du lancer le plus faible', 'Le résultat du lancer le plus élevé', ''],\n    ['température', 'La température la plus basse', 'La température la plus haute', ' $\\\\mathbf{^\\\\circ\\\\text{C}}$'],\n    ['salaire', 'Le salaire le plus bas', 'Le salaire le plus haut', ' €'],\n    ['pointure', 'La pointure la plus basse', 'La pointure la plus haute', '']\n  ]\n  const notes = data.find(el => el[0] === note) || ['', '', '', '']\n  let texteCorr = `${notes[1]} est $${min}$${notes[3]}.<br>${notes[2]} est $${max}$${notes[3]}.<br>`\n  texteCorr += `Donc ${texteGras(`l'étendue des ${note}s est  $\\\\mathbf{${texNombre(max, 1)}-${ecritureParentheseSiNegatif(min)}=${texNombre(max - min, 1)}}$ ${notes[3]}`)}.`\n  return texteCorr\n}\n\nfunction texteCorrMedianeTemperatures (temperatures, medianeCorr, scoresMedians) {\n  return texteCorrMedianeNotes(temperatures, medianeCorr, scoresMedians, 'température')\n}\n\nfunction texteCorrMedianeNotes (notes, medianeCorr, scoresMedians, note = 'note') {\n  const data = [\n    ['note', '', '', ''],\n    ['température', ' $\\\\mathbf{^\\\\circ\\\\text{C}}$', '', '']\n  ]\n  const noteStr = data.find(el => el[0] === note) || ['', '', '', '']\n  let texteCorr = `Au total, il y a $${notes.length}$ ${noteStr[0]}s. `\n  if (notes.length % 2 === 0) {\n    texteCorr += `Le nombre de ${noteStr[0]}s est pair.<br>`\n  } else {\n    texteCorr += `Le nombre de ${noteStr[0]}s est impair.<br>`\n  }\n\n  texteCorr += `Les ${noteStr[0]}s sont rangées dans l'ordre croissant : <br> $${notes[0]}$`\n  for (let j = 1; j < notes.length - 1; j++) {\n    if (notes.length < 10) {\n      texteCorr += `; $${notes[j]}$ `\n    } else {\n      if (j < 2) texteCorr += `; $${notes[j]}$ `\n      if (j === 2) texteCorr += '; $\\\\dots$ '\n      if (notes.length % 2 === 0 && j === notes.length / 2 - 2) texteCorr += `; $${notes[j]}$ `\n      if (notes.length % 2 === 0 && j === notes.length / 2 - 1) texteCorr += `; $${notes[j]}$ `\n      if (notes.length % 2 === 0 && j === notes.length / 2) texteCorr += `; $${notes[j]}$ `\n      if (notes.length % 2 === 0 && j === notes.length / 2 + 1) texteCorr += `; $${notes[j]}$ `\n      if (notes.length % 2 === 0 && j === notes.length / 2 + 2) texteCorr += '; $\\\\dots$ '\n      if (notes.length % 2 === 1 && j === (notes.length - 1) / 2 - 1) texteCorr += `; $${notes[j]}$ `\n      if (notes.length % 2 === 1 && j === (notes.length - 1) / 2) texteCorr += `; $${notes[j]}$ `\n      if (notes.length % 2 === 1 && j === (notes.length - 1) / 2 + 1) texteCorr += `; $${notes[j]}$ `\n      if (notes.length % 2 === 1 && j === (notes.length - 1) / 2 + 1) texteCorr += '; $\\\\dots$ '\n      if (j + 2 > notes.length - 1) texteCorr += `; $${notes[j]}$ `\n    }\n  }\n  texteCorr += `et $${notes[notes.length - 1]}$.<br>`\n\n  if (notes.length % 2 === 0) {\n    texteCorr += `Les valeurs centrales sont la $${notes.length / 2}^{e}$ valeur et la $${notes.length / 2 + 1}^{e}$ valeur.<br>\n    En effet, ${underbraceMediane(notes.length)}<br>\n    Une médiane peut être la demi-somme des deux valeurs centrales. <br>\n    La $${notes.length / 2}^{e}$ valeur est $${scoresMedians[0]}$ et la $${notes.length / 2 + 1}^{e}$ valeur est $${scoresMedians[1]}$.<br>`\n  } else {\n    texteCorr += `La valeur centrale est donc la $${(notes.length + 1) / 2}^{e}$ valeur.<br>\n    En effet, ${underbraceMediane(notes.length)}<br>\n    La médiane est donc la $${(notes.length + 1) / 2}^{e}$ ${noteStr[0]}.<br>`\n  }\n\n  texteCorr += `D'où ${texteGras(`la médiane des ${noteStr[0]}s est ${scoresMedians[0] === scoresMedians[1] ? '' : `$\\\\mathbf{(${scoresMedians[0]} + ${scoresMedians[1]}) \\\\div 2=}$`} ${stringNombre(medianeCorr)}${noteStr[1]}`)}.<br>`\n  if (notes.length % 2 === 0) {\n    texteCorr += lampeMessage({\n      titre: 'Interprétation',\n      texte: `Il y a bien $${notes.length / 2}$ ${noteStr[0]}s inférieures ou égales à  $${texNombre(medianeCorr, 1)}$ et $${notes.length / 2}$ ${noteStr[0]}s supérieures ou égales à  $${texNombre(medianeCorr, 1)}$.`,\n      couleur: 'nombres'\n    })\n  } else {\n    texteCorr += lampeMessage({\n      titre: 'Interprétation',\n      texte: `Il y a bien $${(notes.length - 1) / 2}$ ${noteStr[0]}s inférieures ou égales à  $${texNombre(medianeCorr, 1)}$ et $${(notes.length - 1) / 2}$ ${noteStr[0]}s supérieures ou égales à  $${texNombre(medianeCorr, 1)}$.`,\n      couleur: 'nombres'\n    })\n  }\n  return texteCorr\n}\n\nfunction texteCorrMedianeTirages2DSalaires (nombreTirages, medianeCorr, scoresMedians, salaires, categories, salaire = 'salaire') {\n  const data = [\n    ['note', 'F', 'la médiane des notes', '', `Le nombre de notes est $${nombreTirages}$.`, ['', 'Note', 'Coefficient (Effectif)', 'Effectifs cumulés']],\n    ['salaire', 'M', 'le salaire médian', ' €', `Dans l'entreprise, le nombre de salariés est $${nombreTirages}$.`, ['Catégories', 'Salaires en €', 'Effectif', 'Effectifs cumulés']],\n    ['pointure', 'M', 'la pointure médiane', '', `Le nombre de pointures relevées est $${nombreTirages}$.`, ['', 'Pointure', 'Effectif', 'Effectifs cumulés']]\n  ]\n  const salairesStr = data.find(el => el[0] === salaire) || ['', '', '', '', '', '']\n\n  let texteCorr = salairesStr[4] + '<br>'\n  if (nombreTirages % 2 === 0) {\n    texteCorr += `Ce nombre est pair, les ${salairesStr[0]}s sont rangé${salairesStr[0] === 'M' ? '' : 'e'}s dans l'ordre croissant.<br>\n              Les deux valeurs centrales sont la $${nombreTirages / 2}^{e}$ valeur et la $${nombreTirages / 2 + 1}^{e}$ valeur.<br>\n              En effet, ${underbraceMediane(nombreTirages)} <br>\n              Une médiane peut être la demi-somme des deux valeurs centrales. <br>\n              On peut ajouter une ligne avec les effectifs cumulés pour trouver ces deux valeurs.<br><br>\n              ${desTabEffCumul(salaires, true, categories, salairesStr[5])}<br><br>\n              La $${nombreTirages / 2}^{e}$ valeur est $${scoresMedians[0]}$ et la $${nombreTirages / 2 + 1}^{e}$ valeur est $${scoresMedians[1]}$.<br>`\n    texteCorr += `D'où ${texteGras(`${salairesStr[2]} est ${scoresMedians[0] === scoresMedians[1] ? '' : `$(${scoresMedians[0]} + ${scoresMedians[1]}) \\\\div 2=$`} ${stringNombre(medianeCorr)}`)}${salairesStr[3]}.<br>`\n    texteCorr += lampeMessage({\n      titre: 'Interprétation',\n      texte: `Il y a bien $${(nombreTirages) / 2}$ ${salairesStr[0]}s dont la valeur est inférieure ou égale à  $${texNombre(medianeCorr, 1)}$${salairesStr[3]} et $${(nombreTirages) / 2}$ ${salairesStr[0]}s dont la valeur est supérieure ou égale à  $${texNombre(medianeCorr, 1)}$${salairesStr[3]}.`,\n      couleur: 'nombres'\n    })\n  } else { // Le nombre de tirages est impair\n    texteCorr += `Ce nombre est impair, les ${salairesStr[0]}s sont rangé${salairesStr[0] === 'M' ? '' : 'e'}s dans l'ordre croissant.<br>\n                  La valeur centrale est la $${(nombreTirages - 1) / 2 + 1}^{e}$ valeur.<br>\n                  En effet, ${underbraceMediane(nombreTirages)} <br>\n                  La médiane est donc la $${(nombreTirages - 1) / 2 + 1}^{e}$ valeur.<br>\n                  On peut ajouter une ligne avec les effectifs cumulés pour trouver cette valeur.<br><br>\n                  ${desTabEffCumul(salaires, true, categories, salairesStr[5])}<br><br>`\n    texteCorr += `D'où ${texteGras(`${salairesStr[2]} est ${stringNombre(medianeCorr)}`)}${salairesStr[3]}.<br>`\n    texteCorr += lampeMessage({\n      titre: 'Interprétation',\n      texte: `Il y a bien $${(nombreTirages - 1) / 2}$ ${salairesStr[0]}s dont la valeur est inférieure ou égale à  $${texNombre(medianeCorr, 1)}$${salairesStr[3]} et $${(nombreTirages - 1) / 2}$ ${salairesStr[0]}s dont la valeur est supérieure ou égale à  $${texNombre(medianeCorr, 1)}$${salairesStr[3]}.`,\n      couleur: 'nombres'\n    })\n  }\n  return texteCorr\n}\n\nfunction texteCorrMedianeTirages2D (nombreTirages, medianeCorr, scoresMedians, tirages) {\n  let texteCorr = `Au total, $${nombreTirages}$ lancers ont été réalisés.<br>`\n  if (nombreTirages % 2 === 0) {\n    texteCorr += `Le nombre de lancers est pair, les scores sont rangés dans l'ordre croissant.<br>\n              Les deux valeurs centrales sont la $${nombreTirages / 2}^{e}$ et la $${nombreTirages / 2 + 1}^{e}$ valeur.<br>\n              En effet, ${underbraceMediane(nombreTirages)} <br>\n              Une médiane peut être la demi-somme des deux valeurs centrales. <br>\n              On peut ajouter une ligne avec les effectifs cumulés pour trouver ces deux valeurs.<br><br>\n              ${desTabEffCumul(tirages, true)}<br><br>\n              La $${nombreTirages / 2}^{e}$ valeur est $${scoresMedians[0]}$ et la $${nombreTirages / 2 + 1}^{e}$ valeur est $${scoresMedians[1]}$.<br>`\n    texteCorr += `D'où ${texteGras(`le score médian est ${scoresMedians[0] === scoresMedians[1] ? '' : `$(${scoresMedians[0]} + ${scoresMedians[1]}) \\\\div 2=$`} ${stringNombre(medianeCorr)}`)}.<br>`\n    texteCorr += lampeMessage({\n      titre: 'Interprétation',\n      texte: `Il y a bien $${(nombreTirages) / 2}$ lancers dont le score est inférieur ou égal à  $${texNombre(medianeCorr, 1)}$ et $${(nombreTirages) / 2}$ lancers dont le score est supérieur ou égal à  $${texNombre(medianeCorr, 1)}$.`,\n      couleur: 'nombres'\n    })\n  } else { // Le nombre de lancers est impair ici\n    texteCorr += `Le nombre de lancers est impair, les scores sont rangés dans l'ordre croissant.<br>\n                  La valeur centrale est la $${(nombreTirages - 1) / 2 + 1}^{e}$ valeur.<br>\n                  En effet, ${underbraceMediane(nombreTirages)} <br>\n                  La médiane est donc le $${(nombreTirages - 1) / 2 + 1}^{e}$ lancer.<br>\n                  On peut ajouter une ligne avec les effectifs cumulés pour trouver cette valeur.<br><br>\n                  ${desTabEffCumul(tirages, true)}<br><br>`\n    texteCorr += `D'où ${texteGras(`le score médian est ${stringNombre(medianeCorr)}`)}.<br>`\n    texteCorr += lampeMessage({\n      titre: 'Interprétation',\n      texte: `Il y a bien $${(nombreTirages - 1) / 2}$ lancers dont le score est inférieur ou égal à  $${texNombre(medianeCorr, 1)}$ et $${(nombreTirages - 1) / 2}$ lancers dont le score est supérieur ou égal à  $${texNombre(medianeCorr, 1)}$.`,\n      couleur: 'nombres'\n    })\n  }\n  return texteCorr\n}\n\nfunction texteNotes (notes) {\n  let texte = `${prenom()} a obtenu ces notes ce trimestre-ci en mathématiques :<br>`\n  texte += `$${notes[0]}$`\n  for (let j = 1; j < notes.length - 1; j++) {\n    texte += `; $${notes[j]}$ `\n  } // On liste les notes (série brute)\n  texte += `et $${notes[notes.length - 1]}$.`\n  return texte\n}\n\nfunction texteTemperatures (annee, mois, temperatures) {\n  let texte = `En ${nomDuMois(mois)} ${annee}, à ${choice(['Moscou', 'Berlin', 'Paris', 'Bruxelles', 'Rome', 'Belgrade'])}, on a relevé les températures suivantes : <br>`\n  texte += '<br>$\\\\def\\\\arraystretch{1.5}\\\\begin{array}{|c' // On construit le tableau des températures\n  texte += '|c'\n  for (let j = 0; j < Math.round(temperatures.length / 2); j++) {\n    texte += '|c'\n  }\n  texte += '}\\\\hline  \\\\text{Jour}'\n  for (let j = 0; j < Math.round(temperatures.length / 2); j++) {\n    texte += '&' + texNombre(j + 1, 1)\n  }\n  texte += '\\\\\\\\\\\\hline \\\\text{Température en}  ^\\\\circ\\\\text{C}'\n  for (let j = 0; j < Math.round(temperatures.length / 2); j++) {\n    texte += '&' + temperatures[j]\n  }\n  texte += '\\\\\\\\\\\\hline\\\\end{array}$<br><br>'\n  texte += '$\\\\def\\\\arraystretch{1.5}\\\\begin{array}{|c' // On construit le tableau des températures\n  texte += '|c'\n  for (let j = Math.round(temperatures.length / 2); j < temperatures.length; j++) {\n    texte += '|c'\n  }\n  texte += '}\\\\hline  \\\\text{Jour}'\n  for (let j = Math.round(temperatures.length / 2); j < temperatures.length; j++) {\n    texte += '&' + texNombre(j + 1, 1)\n  }\n  texte += '\\\\\\\\\\\\hline \\\\text{Température en}  ^\\\\circ\\\\text{C}'\n  for (let j = Math.round(temperatures.length / 2); j < temperatures.length; j++) {\n    texte += '&' + temperatures[j]\n  }\n  texte += '\\\\\\\\\\\\hline\\\\end{array}$'\n  texte += '<br>'\n  return texte\n}\n\nfunction texteSalaires (salaires, categoriesCol, salaire = 'salaires') {\n  const data = [\n    ['salaires', 'La grille des salaires des employés d\\'une PME est donnée par le tableau ci-dessous', ['Catégories', 'Salaires en €', 'Effectif']],\n    ['notes', `Voici les notes obtenues par ${prenom()} en mathématiques cette année`, ['', 'Note', 'Effectif']],\n    ['pointures', `Pour passer une commande de chaussures de foot, ${prenom()} a noté les pointures des membres de son club dans un tableau`, ['', 'Pointure', 'Effectif']]\n  ]\n  const salairesStr = data.find(el => el[0] === salaire) || ['', '', '', '']\n  let texte = salairesStr[1] + ' :<br> '\n  texte += '<br>' + desTabEffCumul(salaires, false, categoriesCol, salairesStr[2]) + '<br>'\n  return texte\n}\n\nfunction texteTirages2D (nombreDes, nombreTirages, nombreFaces, tirages, aveclampeMessage = true) {\n  let texte = ''\n  if (nombreDes > 1) {\n    texte = `On a réalisé $${nombreTirages}$ lancers de $${nombreDes}$ dés à $${nombreFaces}$ faces.<br>\n            On a relevé la somme des $${nombreDes}$ dés.<br>`\n  } else {\n    texte = `On a réalisé $${nombreTirages}$ lancers d'un dé à $${nombreFaces}$ faces.<br>`\n  }\n  texte += aveclampeMessage\n    ? lampeMessage({\n      titre: 'Vocabulaire',\n      texte: `Le solide qui correspond à ce type de dé s'appelle ${texteGras(solidName(nombreFaces))}.`,\n      couleur: 'nombres'\n    })\n    : ''\n  texte += 'Les résultats sont inscrits dans le tableau ci-dessous :<br><br>'\n  texte += desTabEffCumul(tirages, false) + '<br>'\n  return texte\n}\n\nfunction solidName (nbCot) {\n  switch (nbCot) {\n    case 4:\n      return 'tétraèdre'\n    case 6:\n      return 'hexaèdre'\n    case 8:\n      return 'octaèdre'\n    case 10:\n      return 'décaèdre'\n    default:\n      return 'cas non prévu'\n  }\n}\n\nexport const OutilsStats = {\n  desTabEffCumul,\n  // consigne\n  texteNotes,\n  texteTirages2D,\n  texteSalaires,\n  texteTemperatures,\n  // correction\n  texteCorrMoyenneNotes,\n  texteCorrMedianeTirages2D,\n  texteCorrMedianeTirages2DSalaires,\n  texteCorrMedianeTemperatures,\n  texteCorrMedianeNotes,\n  texteCorrEtendueNotes,\n  // calcul\n  computeEtendue,\n  computeMoyenne,\n  computeMediane,\n  computeMoyenneTirages2D,\n  computeMedianeTirages2D\n}\n"],"names":["underbraceMediane","nbVal","sortie","desTabEffCumul","tirages","effCumulBool","categories","lignes","j","cumul","k","computeMoyenne","notes","somme","deprecatedTexFraction","computeMediane","notesRangees","a","b","mediane","medianeCorr","computeEtendue","min","max","computeMoyenneTirages2D","effectif","computeMedianeTirages2D","nombreTirages","scoresMedians","cpt","effCumulCroiss","texteCorrMoyenneNotes","notesSeries","nombreNotes","noteStr","el","texteCorr","eff","texNombre","FractionEtendue","arrondi","miseEnEvidence","texteCorrEtendueNotes","note","texteGras","ecritureParentheseSiNegatif","texteCorrMedianeTemperatures","temperatures","texteCorrMedianeNotes","stringNombre","lampeMessage","texteCorrMedianeTirages2DSalaires","salaires","salaire","salairesStr","texteCorrMedianeTirages2D","texteNotes","texte","prenom","texteTemperatures","annee","mois","nomDuMois","choice","texteSalaires","categoriesCol","texteTirages2D","nombreDes","nombreFaces","aveclampeMessage","solidName","nbCot","OutilsStats"],"mappings":"sTAYA,SAASA,EAAmBC,EAAO,CACjC,IAAIC,EACJ,OAAID,EAAQ,IAAM,EAChBC,EAAS,4CAA4CD,EAAQ,EAAI,CAAC,QAAQA,EAAQ,EAAI,CAAC,iCAAiCA,EAAQ,CAAC,uBAAuBA,EAAQ,EAAI,CAAC,oCAAoCA,EAAQ,EAAI,CAAC,UAAUA,CAAK,QAAQA,EAAQ,EAAI,CAAC,gBAE1PC,EAAS,6CAA6CD,EAAQ,GAAK,CAAC,SAASA,EAAQ,GAAK,CAAC,kCAAkCA,EAAQ,GAAK,EAAI,CAAC,qCAAqCA,EAAQ,GAAK,EAAI,CAAC,UAAUA,CAAK,SAASA,EAAQ,GAAK,CAAC,gBAEvOC,CACT,CAEA,SAASC,EAAgBC,EAASC,EAAcC,EAAa,CAAE,EAAEC,EAAS,CAAC,aAAc,SAAU,uBAAyB,+BAAgC,EAAG,CAC7J,IAAIL,EACJ,GAAKG,EAuEH,GADAH,EAAS,GACLE,EAAQ,OAAS,GAAI,CACvBF,GAAU,6CACV,QAASM,EAAI,EAAGA,GAAK,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,IACnDN,GAAU,KAGZ,GADAA,GAAU,IACNI,EAAW,OAAS,EAAG,CACzBJ,GAAU,kBAAuBK,EAAO,CAAC,CAAC,KAC1C,QAASC,EAAI,EAAGA,EAAI,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,IAClDN,GAAU,WAAaI,EAAWE,CAAC,EAAI,IAEzCN,GAAU,MACX,CACDA,GAAU,mBAAwBK,EAAO,CAAC,CAAC,KAC3C,QAASC,EAAI,EAAGA,EAAI,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,IAClDN,GAAU,IAAME,EAAQI,CAAC,EAAE,CAAC,EAE9BN,GAAU,uBAA4BK,EAAO,CAAC,CAAC,KAC/C,QAASC,EAAI,EAAGA,EAAI,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,IAClDN,GAAU,IAAME,EAAQI,CAAC,EAAE,CAAC,EAE9BN,GAAU,sBAA2BK,EAAO,CAAC,CAAC,KAC9C,QAASC,EAAI,EAAGA,EAAI,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,IAAK,CACvD,IAAIC,EAAQ,EACZ,QAASC,EAAI,EAAGA,GAAKF,EAAGE,IACtBD,GAASL,EAAQM,CAAC,EAAE,CAAC,EAEvBR,GAAU,IAAMO,CACjB,CACDP,GAAU,mCAEVA,GAAU,6CACV,QAASM,EAAI,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,GAAKJ,EAAQ,OAAQI,IAChEN,GAAU,KAGZ,GADAA,GAAU,IACNI,EAAW,OAAS,EAAG,CACzBJ,GAAU,kBAAuBK,EAAO,CAAC,CAAC,KAC1C,QAASC,EAAI,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,EAAIJ,EAAQ,OAAQI,IAC/DN,GAAU,WAAaI,EAAWE,CAAC,EAAI,IAEzCN,GAAU,MACX,CACDA,GAAU,mBAAwBK,EAAO,CAAC,CAAC,KAC3C,QAASC,EAAI,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,EAAIJ,EAAQ,OAAQI,IAC/DN,GAAU,IAAME,EAAQI,CAAC,EAAE,CAAC,EAE9BN,GAAU,sBAA2BK,EAAO,CAAC,CAAC,KAC9C,QAASC,EAAI,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,EAAIJ,EAAQ,OAAQI,IAC/DN,GAAU,IAAME,EAAQI,CAAC,EAAE,CAAC,EAE9BN,GAAU,sBAA2BK,EAAO,CAAC,CAAC,KAC9C,QAASC,EAAI,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,EAAIJ,EAAQ,OAAQI,IAAK,CACpE,IAAIC,EAAQ,EACZ,QAASC,EAAI,EAAGA,GAAKF,EAAGE,IACtBD,GAASL,EAAQM,CAAC,EAAE,CAAC,EAEvBR,GAAU,IAAMO,CACjB,CACDP,GAAU,0BAChB,KAAW,CACLA,GAAU,6CACV,QAASM,EAAI,EAAGA,GAAKJ,EAAQ,OAAQI,IACnCN,GAAU,KAGZ,GADAA,GAAU,IACNI,EAAW,OAAS,EAAG,CACzBJ,GAAU,kBAAuBK,EAAO,CAAC,CAAC,KAC1C,QAASC,EAAI,EAAGA,EAAIJ,EAAQ,OAAQI,IAClCN,GAAU,WAAaI,EAAWE,CAAC,EAAI,IAEzCN,GAAU,MACX,CACDA,GAAU,mBAAwBK,EAAO,CAAC,CAAC,KAC3C,QAASC,EAAI,EAAGA,EAAIJ,EAAQ,OAAQI,IAClCN,GAAU,IAAME,EAAQI,CAAC,EAAE,CAAC,EAE9BN,GAAU,sBAA2BK,EAAO,CAAC,CAAC,KAC9C,QAASC,EAAI,EAAGA,EAAIJ,EAAQ,OAAQI,IAClCN,GAAU,IAAME,EAAQI,CAAC,EAAE,CAAC,EAE9BN,GAAU,sBAA2BK,EAAO,CAAC,CAAC,KAC9C,QAASC,EAAI,EAAGA,EAAIJ,EAAQ,OAAQI,IAAK,CACvC,IAAIC,EAAQ,EACZ,QAASC,EAAI,EAAGA,GAAKF,EAAGE,IACtBD,GAASL,EAAQM,CAAC,EAAE,CAAC,EAEvBR,GAAU,IAAMO,CACjB,CACDP,GAAU,0BACX,SAhKDA,EAAS,GACLE,EAAQ,OAAS,GAAI,CACvBF,GAAU,6CACV,QAASM,EAAI,EAAGA,GAAK,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,IACnDN,GAAU,KAGZ,GADAA,GAAU,IACNI,EAAW,OAAS,EAAG,CACzBJ,GAAU,kBAAuBK,EAAO,CAAC,CAAC,KAC1C,QAASC,EAAI,EAAGA,EAAI,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,IAClDN,GAAU,WAAaI,EAAWE,CAAC,EAAI,IAEzCN,GAAU,MACX,CACDA,GAAU,mBAAwBK,EAAO,CAAC,CAAC,KAC3C,QAASC,EAAI,EAAGA,EAAI,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,IAClDN,GAAU,IAAME,EAAQI,CAAC,EAAE,CAAC,EAE9BN,GAAU,sBAA2BK,EAAO,CAAC,CAAC,KAC9C,QAASC,EAAI,EAAGA,EAAI,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,IAClDN,GAAU,IAAME,EAAQI,CAAC,EAAE,CAAC,EAE9BN,GAAU,mCAEVA,GAAU,6CACV,QAASM,EAAI,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,GAAKJ,EAAQ,OAAQI,IAChEN,GAAU,KAGZ,GADAA,GAAU,IACNI,EAAW,OAAS,EAAG,CACzBJ,GAAU,kBAAuBK,EAAO,CAAC,CAAC,KAC1C,QAASC,EAAI,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,EAAIJ,EAAQ,OAAQI,IAC/DN,GAAU,WAAaI,EAAWE,CAAC,EAAI,IAEzCN,GAAU,MACX,CACDA,GAAU,kBAAuBK,EAAO,CAAC,CAAC,KAC1C,QAASC,EAAI,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,EAAIJ,EAAQ,OAAQI,IAC/DN,GAAU,IAAME,EAAQI,CAAC,EAAE,CAAC,EAE9BN,GAAU,sBAA2BK,EAAO,CAAC,CAAC,KAC9C,QAASC,EAAI,KAAK,MAAMJ,EAAQ,OAAS,CAAC,EAAGI,EAAIJ,EAAQ,OAAQI,IAC/DN,GAAU,IAAME,EAAQI,CAAC,EAAE,CAAC,EAE9BN,GAAU,0BAChB,KAAW,CACLA,GAAU,6CACV,QAASM,EAAI,EAAGA,GAAKJ,EAAQ,OAAQI,IACnCN,GAAU,KAGZ,GADAA,GAAU,IACNI,EAAW,OAAS,EAAG,CACzBJ,GAAU,mBAAwBK,EAAO,CAAC,CAAC,KAC3C,QAASC,EAAI,EAAGA,EAAIJ,EAAQ,OAAQI,IAClCN,GAAU,WAAaI,EAAWE,CAAC,EAAI,IAEzCN,GAAU,MACX,CACDA,GAAU,mBAAwBK,EAAO,CAAC,CAAC,KAC3C,QAASC,EAAI,EAAGA,EAAIJ,EAAQ,OAAQI,IAClCN,GAAU,IAAME,EAAQI,CAAC,EAAE,CAAC,EAE9BN,GAAU,sBAA2BK,EAAO,CAAC,CAAC,KAC9C,QAASC,EAAI,EAAGA,EAAIJ,EAAQ,OAAQI,IAClCN,GAAU,IAAME,EAAQI,CAAC,EAAE,CAAC,EAE9BN,GAAU,0BACX,CAgGH,OAAOA,CACT,CAEA,SAASS,EAAgBC,EAAO,CAC9B,IAAIC,EAAQ,EACZ,QAASL,EAAI,EAAGA,EAAII,EAAM,OAAQJ,IAChCK,GAASD,EAAMJ,CAAC,EAGlB,MAAO,CAACM,EAAsBD,EAAOD,EAAM,MAAM,EAAGC,CAAK,CAC3D,CAEA,SAASE,EAAgBH,EAAO,CAC9B,MAAMI,EAAeJ,EAAM,KAAK,CAACK,EAAGC,IAAMD,EAAIC,CAAC,EAC/C,IAAIC,EACAP,EAAM,OAAS,IAAM,EACvBO,EAAU,CAACH,EAAaJ,EAAM,OAAS,EAAI,CAAC,EAAGI,EAAaJ,EAAM,OAAS,CAAC,CAAC,EAE7EO,EAAUH,GAAcJ,EAAM,OAAS,GAAK,CAAC,EAE/C,IAAIQ,EACJ,aAAM,QAAQD,CAAO,EAAIC,GAAeD,EAAQ,CAAC,EAAIA,EAAQ,CAAC,GAAK,EAAIC,EAAcD,EAC9E,CAACA,EAASC,CAAW,CAC9B,CAEA,SAASC,EAAgBT,EAAO,CAC9B,IAAIU,EAAMV,EAAM,CAAC,EACbW,EAAMX,EAAM,CAAC,EACjB,QAASJ,EAAI,EAAGA,EAAII,EAAM,OAAQJ,IAChCc,EAAM,KAAK,IAAIV,EAAMJ,CAAC,EAAGc,CAAG,EAC5BC,EAAM,KAAK,IAAIX,EAAMJ,CAAC,EAAGe,CAAG,EAE9B,MAAO,CAACD,EAAKC,CAAG,CAClB,CAEA,SAASC,EAAyBpB,EAAS,CACzC,IAAIS,EAAQ,EACRY,EAAW,EACf,QAASf,EAAI,EAAGA,EAAIN,EAAQ,OAAQM,IAClCG,GAAST,EAAQM,CAAC,EAAE,CAAC,EAAIN,EAAQM,CAAC,EAAE,CAAC,EACrCe,GAAYrB,EAAQM,CAAC,EAAE,CAAC,EAE1B,MAAO,CAACI,EAAsBD,EAAOY,CAAQ,EAAGZ,EAAOY,CAAQ,CACjE,CAEA,SAASC,EAAyBC,EAAevB,EAAS,CACxD,MAAMwB,EAAgB,CAAE,EACxB,IAAIR,EACJ,GAAIO,EAAgB,IAAM,EAAG,CAG3B,IAAIE,EAAM,EAENC,EAAiB1B,EAAQ,CAAC,EAAE,CAAC,EAEjC,KAAO0B,EAAiBH,EAAgB,GACtCE,GAAO,EACPC,GAAkB1B,EAAQyB,CAAG,EAAE,CAAC,EAOlC,IAJAD,EAAc,KAAKxB,EAAQyB,CAAG,EAAE,CAAC,CAAC,EAElCA,EAAM,EACNC,EAAiB1B,EAAQ,CAAC,EAAE,CAAC,EACtB0B,EAAiBH,EAAgB,EAAI,GAC1CE,GAAO,EACPC,GAAkB1B,EAAQyB,CAAG,EAAE,CAAC,EAGlCD,EAAc,KAAKxB,EAAQyB,CAAG,EAAE,CAAC,CAAC,EAClCD,EAAc,CAAC,IAAMA,EAAc,CAAC,EAAIR,EAAcQ,EAAc,CAAC,EAAIR,GAAeQ,EAAc,CAAC,EAAIA,EAAc,CAAC,GAAK,CACnI,KAAS,CAGL,IAAIC,EAAM,EAENC,EAAiB1B,EAAQ,CAAC,EAAE,CAAC,EAEjC,KAAO0B,GAAkBH,EAAgB,GACvCE,GAAO,EACPC,GAAkB1B,EAAQyB,CAAG,EAAE,CAAC,EAGlCD,EAAc,KAAKxB,EAAQyB,CAAG,EAAE,CAAC,CAAC,EAClCT,EAAcQ,EAAc,CAAC,CAC9B,CACD,MAAO,CAACA,EAAeR,CAAW,CACpC,CAEA,SAASW,EAAuBC,EAAanB,EAAOoB,EAAarB,EAAQ,QAAS,CAShF,MAAMsB,EARO,CACX,CAAC,QAAS,uBAAwB,EAAE,EACpC,CAAC,UAAW,yBAA0B,EAAE,EACxC,CAAC,eAAgB,8BAA+B,+BAA+B,EAC/E,CAAC,WAAY,mBAAoB,IAAI,EACrC,CAAC,YAAa,sBAAuB,EAAE,CACxC,EAEoB,KAAKC,GAAMA,EAAG,CAAC,IAAMvB,CAAK,GAAK,CAAC,GAAI,GAAI,EAAE,EAE/D,IAAIwB,EAAY,GAChB,GAAIJ,IAAgB,QAAaA,aAAuB,OAASA,EAAY,OAAS,GAAKA,EAAY,CAAC,YAAa,OAASA,EAAY,CAAC,EAAE,OAAS,EAAG,CAEvJI,GAAa,sBACbA,GAAa,WAAWJ,EAAY,CAAC,EAAE,CAAC,CAAC,YAAYA,EAAY,CAAC,EAAE,CAAC,CAAC,GACtE,IAAIK,EAAM,GAAGL,EAAY,CAAC,EAAE,CAAC,CAAC,GAC9B,QAASxB,EAAI,EAAGA,EAAIwB,EAAY,OAAQxB,IAClCwB,EAAY,OAAS,IACvBI,GAAa,KAAKJ,EAAYxB,CAAC,EAAE,CAAC,CAAC,YAAYwB,EAAYxB,CAAC,EAAE,CAAC,CAAC,GAChE6B,GAAO,KAAKL,EAAYxB,CAAC,EAAE,CAAC,CAAC,KAEzBA,EAAI,IAAG4B,GAAa,KAAKJ,EAAYxB,CAAC,EAAE,CAAC,CAAC,YAAYwB,EAAYxB,CAAC,EAAE,CAAC,CAAC,IACvEA,EAAI,IAAG6B,GAAO,KAAKL,EAAYxB,CAAC,EAAE,CAAC,CAAC,IACpCA,IAAM,IAAG4B,GAAa,cACtB5B,IAAM,IAAG6B,GAAO,cAChB7B,EAAI,GAAKwB,EAAY,SAAQI,GAAa,KAAKJ,EAAYxB,CAAC,EAAE,CAAC,CAAC,YAAYwB,EAAYxB,CAAC,EAAE,CAAC,CAAC,IAC7FA,EAAI,GAAKwB,EAAY,SAAQK,GAAO,KAAKL,EAAYxB,CAAC,EAAE,CAAC,CAAC,KAGlE4B,GAAa,KAAKC,CAAG,aAAaC,EAAUzB,EAAO,CAAC,CAAC,KAAKyB,EAAUL,EAAa,CAAC,CAAC,UACvF,KAAS,CAELG,GAAa,sBACbA,GAAa,WAAWJ,EAAY,CAAC,CAAC,IACtC,QAASxB,EAAI,EAAGA,EAAIwB,EAAY,OAAQxB,IAClCwB,EAAY,OAAS,GACvBI,GAAa,KAAKJ,EAAYxB,CAAC,CAAC,IAE5BA,EAAI,IAAG4B,GAAa,KAAKJ,EAAYxB,CAAC,CAAC,IACvCA,IAAM,IAAG4B,GAAa,cACtB5B,EAAI,GAAKwB,EAAY,SAAQI,GAAa,KAAKJ,EAAYxB,CAAC,CAAC,KAGrE4B,GAAa,KAAKJ,EAAY,MAAM,aAAaM,EAAUzB,EAAO,CAAC,CAAC,KAAKyB,EAAUL,EAAa,CAAC,CAAC,UACnG,CACD,OAAAG,GAAa,gBAAgBxB,CAAK,WAAW0B,EAAUzB,EAAO,CAAC,CAAC,kBAAkByB,EAAUL,EAAa,CAAC,CAAC,KAAKrB,CAAK,QACrHwB,GAAa,QAAQF,EAAQ,CAAC,CAAC,SAAS,IAAIK,EAAgB1B,EAAOoB,CAAW,EAAE,MAAM,GAClFO,EAAQ3B,EAAQoB,EAAa,CAAC,IAAMpB,EAAQoB,EAC9CG,GAAa,IAAIK,EAAeH,EAAUzB,EAAQoB,EAAa,CAAC,CAAC,CAAC,IAAIC,EAAQ,CAAC,CAAC,QAEhFE,GAAa,WAAWK,EAAeH,EAAUzB,EAAQoB,EAAa,CAAC,CAAC,CAAC,IAAIC,EAAQ,CAAC,CAAC,QAElFE,CACT,CAEA,SAASM,EAAuBpB,EAAKC,EAAKoB,EAAO,OAAQ,CAQvD,MAAM/B,EAPO,CACX,CAAC,OAAQ,wBAAyB,wBAAyB,EAAE,EAC7D,CAAC,SAAU,uCAAwC,sCAAuC,EAAE,EAC5F,CAAC,cAAe,+BAAgC,+BAAgC,+BAA+B,EAC/G,CAAC,UAAW,yBAA0B,0BAA2B,IAAI,EACrE,CAAC,WAAY,4BAA6B,4BAA6B,EAAE,CAC1E,EACkB,KAAKuB,GAAMA,EAAG,CAAC,IAAMQ,CAAI,GAAK,CAAC,GAAI,GAAI,GAAI,EAAE,EAChE,IAAIP,EAAY,GAAGxB,EAAM,CAAC,CAAC,SAASU,CAAG,IAAIV,EAAM,CAAC,CAAC,QAAQA,EAAM,CAAC,CAAC,SAASW,CAAG,IAAIX,EAAM,CAAC,CAAC,QAC3F,OAAAwB,GAAa,QAAQQ,EAAU,iBAAiBD,CAAI,oBAAoBL,EAAUf,EAAK,CAAC,CAAC,IAAIsB,EAA4BvB,CAAG,CAAC,IAAIgB,EAAUf,EAAMD,EAAK,CAAC,CAAC,MAAMV,EAAM,CAAC,CAAC,EAAE,CAAC,IAClKwB,CACT,CAEA,SAASU,EAA8BC,EAAc3B,EAAaQ,EAAe,CAC/E,OAAOoB,EAAsBD,EAAc3B,EAAaQ,EAAe,aAAa,CACtF,CAEA,SAASoB,EAAuBpC,EAAOQ,EAAaQ,EAAee,EAAO,OAAQ,CAKhF,MAAMT,EAJO,CACX,CAAC,OAAQ,GAAI,GAAI,EAAE,EACnB,CAAC,cAAe,gCAAiC,GAAI,EAAE,CACxD,EACoB,KAAKC,GAAMA,EAAG,CAAC,IAAMQ,CAAI,GAAK,CAAC,GAAI,GAAI,GAAI,EAAE,EAClE,IAAIP,EAAY,qBAAqBxB,EAAM,MAAM,KAAKsB,EAAQ,CAAC,CAAC,MAC5DtB,EAAM,OAAS,IAAM,EACvBwB,GAAa,gBAAgBF,EAAQ,CAAC,CAAC,kBAEvCE,GAAa,gBAAgBF,EAAQ,CAAC,CAAC,oBAGzCE,GAAa,OAAOF,EAAQ,CAAC,CAAC,iDAAiDtB,EAAM,CAAC,CAAC,IACvF,QAASJ,EAAI,EAAGA,EAAII,EAAM,OAAS,EAAGJ,IAChCI,EAAM,OAAS,GACjBwB,GAAa,MAAMxB,EAAMJ,CAAC,CAAC,MAEvBA,EAAI,IAAG4B,GAAa,MAAMxB,EAAMJ,CAAC,CAAC,MAClCA,IAAM,IAAG4B,GAAa,eACtBxB,EAAM,OAAS,IAAM,GAAKJ,IAAMI,EAAM,OAAS,EAAI,IAAGwB,GAAa,MAAMxB,EAAMJ,CAAC,CAAC,MACjFI,EAAM,OAAS,IAAM,GAAKJ,IAAMI,EAAM,OAAS,EAAI,IAAGwB,GAAa,MAAMxB,EAAMJ,CAAC,CAAC,MACjFI,EAAM,OAAS,IAAM,GAAKJ,IAAMI,EAAM,OAAS,IAAGwB,GAAa,MAAMxB,EAAMJ,CAAC,CAAC,MAC7EI,EAAM,OAAS,IAAM,GAAKJ,IAAMI,EAAM,OAAS,EAAI,IAAGwB,GAAa,MAAMxB,EAAMJ,CAAC,CAAC,MACjFI,EAAM,OAAS,IAAM,GAAKJ,IAAMI,EAAM,OAAS,EAAI,IAAGwB,GAAa,eACnExB,EAAM,OAAS,IAAM,GAAKJ,KAAOI,EAAM,OAAS,GAAK,EAAI,IAAGwB,GAAa,MAAMxB,EAAMJ,CAAC,CAAC,MACvFI,EAAM,OAAS,IAAM,GAAKJ,KAAOI,EAAM,OAAS,GAAK,IAAGwB,GAAa,MAAMxB,EAAMJ,CAAC,CAAC,MACnFI,EAAM,OAAS,IAAM,GAAKJ,KAAOI,EAAM,OAAS,GAAK,EAAI,IAAGwB,GAAa,MAAMxB,EAAMJ,CAAC,CAAC,MACvFI,EAAM,OAAS,IAAM,GAAKJ,KAAOI,EAAM,OAAS,GAAK,EAAI,IAAGwB,GAAa,eACzE5B,EAAI,EAAII,EAAM,OAAS,IAAGwB,GAAa,MAAMxB,EAAMJ,CAAC,CAAC,OAG7D,OAAA4B,GAAa,OAAOxB,EAAMA,EAAM,OAAS,CAAC,CAAC,SAEvCA,EAAM,OAAS,IAAM,EACvBwB,GAAa,kCAAkCxB,EAAM,OAAS,CAAC,uBAAuBA,EAAM,OAAS,EAAI,CAAC;AAAA,gBAC9FZ,EAAkBY,EAAM,MAAM,CAAC;AAAA;AAAA,UAErCA,EAAM,OAAS,CAAC,qBAAqBgB,EAAc,CAAC,CAAC,YAAYhB,EAAM,OAAS,EAAI,CAAC,qBAAqBgB,EAAc,CAAC,CAAC,SAEhIQ,GAAa,oCAAoCxB,EAAM,OAAS,GAAK,CAAC;AAAA,gBAC1DZ,EAAkBY,EAAM,MAAM,CAAC;AAAA,+BAChBA,EAAM,OAAS,GAAK,CAAC,SAASsB,EAAQ,CAAC,CAAC,QAGrEE,GAAa,QAAQQ,EAAU,kBAAkBV,EAAQ,CAAC,CAAC,SAASN,EAAc,CAAC,IAAMA,EAAc,CAAC,EAAI,GAAK,cAAcA,EAAc,CAAC,CAAC,MAAMA,EAAc,CAAC,CAAC,cAAc,IAAIqB,EAAa7B,CAAW,CAAC,GAAGc,EAAQ,CAAC,CAAC,EAAE,CAAC,QAC5NtB,EAAM,OAAS,IAAM,EACvBwB,GAAac,EAAa,CACxB,MAAO,iBACP,MAAO,gBAAgBtC,EAAM,OAAS,CAAC,KAAKsB,EAAQ,CAAC,CAAC,+BAA+BI,EAAUlB,EAAa,CAAC,CAAC,SAASR,EAAM,OAAS,CAAC,KAAKsB,EAAQ,CAAC,CAAC,+BAA+BI,EAAUlB,EAAa,CAAC,CAAC,KAC9M,QAAS,SACf,CAAK,EAEDgB,GAAac,EAAa,CACxB,MAAO,iBACP,MAAO,iBAAiBtC,EAAM,OAAS,GAAK,CAAC,KAAKsB,EAAQ,CAAC,CAAC,+BAA+BI,EAAUlB,EAAa,CAAC,CAAC,UAAUR,EAAM,OAAS,GAAK,CAAC,KAAKsB,EAAQ,CAAC,CAAC,+BAA+BI,EAAUlB,EAAa,CAAC,CAAC,KAC1N,QAAS,SACf,CAAK,EAEIgB,CACT,CAEA,SAASe,EAAmCxB,EAAeP,EAAaQ,EAAewB,EAAU9C,EAAY+C,EAAU,UAAW,CAMhI,MAAMC,EALO,CACX,CAAC,OAAQ,IAAK,uBAAwB,GAAI,2BAA2B3B,CAAa,KAAM,CAAC,GAAI,OAAQ,yBAA0B,mBAAmB,CAAC,EACnJ,CAAC,UAAW,IAAK,oBAAqB,KAAM,iDAAiDA,CAAa,KAAM,CAAC,aAAc,gBAAiB,WAAY,mBAAmB,CAAC,EAChL,CAAC,WAAY,IAAK,sBAAuB,GAAI,wCAAwCA,CAAa,KAAM,CAAC,GAAI,WAAY,WAAY,mBAAmB,CAAC,CAC1J,EACwB,KAAKQ,GAAMA,EAAG,CAAC,IAAMkB,CAAO,GAAK,CAAC,GAAI,GAAI,GAAI,GAAI,GAAI,EAAE,EAEjF,IAAIjB,EAAYkB,EAAY,CAAC,EAAI,OACjC,OAAI3B,EAAgB,IAAM,GACxBS,GAAa,2BAA2BkB,EAAY,CAAC,CAAC,eAAeA,EAAY,CAAC,IAAM,IAAM,GAAK,GAAG;AAAA,oDACtD3B,EAAgB,CAAC,uBAAuBA,EAAgB,EAAI,CAAC;AAAA,0BACvF3B,EAAkB2B,CAAa,CAAC;AAAA;AAAA;AAAA,gBAG1CxB,EAAeiD,EAAU,GAAM9C,EAAYgD,EAAY,CAAC,CAAC,CAAC;AAAA,oBACtD3B,EAAgB,CAAC,qBAAqBC,EAAc,CAAC,CAAC,YAAYD,EAAgB,EAAI,CAAC,qBAAqBC,EAAc,CAAC,CAAC,SAC5IQ,GAAa,QAAQQ,EAAU,GAAGU,EAAY,CAAC,CAAC,QAAQ1B,EAAc,CAAC,IAAMA,EAAc,CAAC,EAAI,GAAK,KAAKA,EAAc,CAAC,CAAC,MAAMA,EAAc,CAAC,CAAC,aAAa,IAAIqB,EAAa7B,CAAW,CAAC,EAAE,CAAC,GAAGkC,EAAY,CAAC,CAAC,QAC9MlB,GAAac,EAAa,CACxB,MAAO,iBACP,MAAO,gBAAiBvB,EAAiB,CAAC,KAAK2B,EAAY,CAAC,CAAC,gDAAgDhB,EAAUlB,EAAa,CAAC,CAAC,IAAIkC,EAAY,CAAC,CAAC,QAAS3B,EAAiB,CAAC,KAAK2B,EAAY,CAAC,CAAC,gDAAgDhB,EAAUlB,EAAa,CAAC,CAAC,IAAIkC,EAAY,CAAC,CAAC,IACjS,QAAS,SACf,CAAK,IAEDlB,GAAa,6BAA6BkB,EAAY,CAAC,CAAC,eAAeA,EAAY,CAAC,IAAM,IAAM,GAAK,GAAG;AAAA,gDAC5D3B,EAAgB,GAAK,EAAI,CAAC;AAAA,8BAC5C3B,EAAkB2B,CAAa,CAAC;AAAA,6CACjBA,EAAgB,GAAK,EAAI,CAAC;AAAA;AAAA,oBAEnDxB,EAAeiD,EAAU,GAAM9C,EAAYgD,EAAY,CAAC,CAAC,CAAC,WAC1ElB,GAAa,QAAQQ,EAAU,GAAGU,EAAY,CAAC,CAAC,QAAQL,EAAa7B,CAAW,CAAC,EAAE,CAAC,GAAGkC,EAAY,CAAC,CAAC,QACrGlB,GAAac,EAAa,CACxB,MAAO,iBACP,MAAO,iBAAiBvB,EAAgB,GAAK,CAAC,KAAK2B,EAAY,CAAC,CAAC,gDAAgDhB,EAAUlB,EAAa,CAAC,CAAC,IAAIkC,EAAY,CAAC,CAAC,SAAS3B,EAAgB,GAAK,CAAC,KAAK2B,EAAY,CAAC,CAAC,gDAAgDhB,EAAUlB,EAAa,CAAC,CAAC,IAAIkC,EAAY,CAAC,CAAC,IACzS,QAAS,SACf,CAAK,GAEIlB,CACT,CAEA,SAASmB,EAA2B5B,EAAeP,EAAaQ,EAAexB,EAAS,CACtF,IAAIgC,EAAY,cAAcT,CAAa,kCAC3C,OAAIA,EAAgB,IAAM,GACxBS,GAAa;AAAA,oDACmCT,EAAgB,CAAC,gBAAgBA,EAAgB,EAAI,CAAC;AAAA,0BAChF3B,EAAkB2B,CAAa,CAAC;AAAA;AAAA;AAAA,gBAG1CxB,EAAeC,EAAS,EAAI,CAAC;AAAA,oBACzBuB,EAAgB,CAAC,qBAAqBC,EAAc,CAAC,CAAC,YAAYD,EAAgB,EAAI,CAAC,qBAAqBC,EAAc,CAAC,CAAC,SAC5IQ,GAAa,QAAQQ,EAAU,uBAAuBhB,EAAc,CAAC,IAAMA,EAAc,CAAC,EAAI,GAAK,KAAKA,EAAc,CAAC,CAAC,MAAMA,EAAc,CAAC,CAAC,aAAa,IAAIqB,EAAa7B,CAAW,CAAC,EAAE,CAAC,QAC3LgB,GAAac,EAAa,CACxB,MAAO,iBACP,MAAO,gBAAiBvB,EAAiB,CAAC,qDAAqDW,EAAUlB,EAAa,CAAC,CAAC,SAAUO,EAAiB,CAAC,qDAAqDW,EAAUlB,EAAa,CAAC,CAAC,KAClO,QAAS,SACf,CAAK,IAEDgB,GAAa;AAAA,gDAC+BT,EAAgB,GAAK,EAAI,CAAC;AAAA,8BAC5C3B,EAAkB2B,CAAa,CAAC;AAAA,6CACjBA,EAAgB,GAAK,EAAI,CAAC;AAAA;AAAA,oBAEnDxB,EAAeC,EAAS,EAAI,CAAC,WAC7CgC,GAAa,QAAQQ,EAAU,uBAAuBK,EAAa7B,CAAW,CAAC,EAAE,CAAC,QAClFgB,GAAac,EAAa,CACxB,MAAO,iBACP,MAAO,iBAAiBvB,EAAgB,GAAK,CAAC,qDAAqDW,EAAUlB,EAAa,CAAC,CAAC,UAAUO,EAAgB,GAAK,CAAC,qDAAqDW,EAAUlB,EAAa,CAAC,CAAC,KAC1O,QAAS,SACf,CAAK,GAEIgB,CACT,CAEA,SAASoB,EAAY5C,EAAO,CAC1B,IAAI6C,EAAQ,GAAGC,EAAM,CAAE,6DACvBD,GAAS,IAAI7C,EAAM,CAAC,CAAC,IACrB,QAASJ,EAAI,EAAGA,EAAII,EAAM,OAAS,EAAGJ,IACpCiD,GAAS,MAAM7C,EAAMJ,CAAC,CAAC,KAEzB,OAAAiD,GAAS,OAAO7C,EAAMA,EAAM,OAAS,CAAC,CAAC,KAChC6C,CACT,CAEA,SAASE,EAAmBC,EAAOC,EAAMd,EAAc,CACrD,IAAIU,EAAQ,MAAMK,EAAUD,CAAI,CAAC,IAAID,CAAK,OAAOG,EAAO,CAAC,SAAU,SAAU,QAAS,YAAa,OAAQ,UAAU,CAAC,CAAC,kDACvHN,GAAS,iDACTA,GAAS,KACT,QAASjD,EAAI,EAAGA,EAAI,KAAK,MAAMuC,EAAa,OAAS,CAAC,EAAGvC,IACvDiD,GAAS,KAEXA,GAAS,yBACT,QAASjD,EAAI,EAAGA,EAAI,KAAK,MAAMuC,EAAa,OAAS,CAAC,EAAGvC,IACvDiD,GAAS,IAAMnB,EAAU9B,EAAI,EAAG,CAAC,EAEnCiD,GAAS,uDACT,QAASjD,EAAI,EAAGA,EAAI,KAAK,MAAMuC,EAAa,OAAS,CAAC,EAAGvC,IACvDiD,GAAS,IAAMV,EAAavC,CAAC,EAE/BiD,GAAS,mCACTA,GAAS,6CACTA,GAAS,KACT,QAASjD,EAAI,KAAK,MAAMuC,EAAa,OAAS,CAAC,EAAGvC,EAAIuC,EAAa,OAAQvC,IACzEiD,GAAS,KAEXA,GAAS,yBACT,QAASjD,EAAI,KAAK,MAAMuC,EAAa,OAAS,CAAC,EAAGvC,EAAIuC,EAAa,OAAQvC,IACzEiD,GAAS,IAAMnB,EAAU9B,EAAI,EAAG,CAAC,EAEnCiD,GAAS,uDACT,QAASjD,EAAI,KAAK,MAAMuC,EAAa,OAAS,CAAC,EAAGvC,EAAIuC,EAAa,OAAQvC,IACzEiD,GAAS,IAAMV,EAAavC,CAAC,EAE/B,OAAAiD,GAAS,2BACTA,GAAS,OACFA,CACT,CAEA,SAASO,EAAeZ,EAAUa,EAAeZ,EAAU,WAAY,CAMrE,MAAMC,EALO,CACX,CAAC,WAAY,qFAAuF,CAAC,aAAc,gBAAiB,UAAU,CAAC,EAC/I,CAAC,QAAS,gCAAgCI,EAAQ,CAAA,gCAAiC,CAAC,GAAI,OAAQ,UAAU,CAAC,EAC3G,CAAC,YAAa,mDAAmDA,EAAQ,CAAA,gEAAiE,CAAC,GAAI,WAAY,UAAU,CAAC,CACvK,EACwB,KAAKvB,GAAMA,EAAG,CAAC,IAAMkB,CAAO,GAAK,CAAC,GAAI,GAAI,GAAI,EAAE,EACzE,IAAII,EAAQH,EAAY,CAAC,EAAI,UAC7B,OAAAG,GAAS,OAAStD,EAAeiD,EAAU,GAAOa,EAAeX,EAAY,CAAC,CAAC,EAAI,OAC5EG,CACT,CAEA,SAASS,EAAgBC,EAAWxC,EAAeyC,EAAahE,EAASiE,EAAmB,GAAM,CAChG,IAAIZ,EAAQ,GACZ,OAAIU,EAAY,EACdV,EAAQ,iBAAiB9B,CAAa,iBAAiBwC,CAAS,YAAYC,CAAW;AAAA,wCACnDD,CAAS,aAE7CV,EAAQ,iBAAiB9B,CAAa,wBAAwByC,CAAW,eAE3EX,GAASY,EACLnB,EAAa,CACb,MAAO,cACP,MAAO,sDAAsDN,EAAU0B,EAAUF,CAAW,CAAC,CAAC,IAC9F,QAAS,SACf,CAAK,EACC,GACJX,GAAS,mEACTA,GAAStD,EAAeC,EAAS,EAAK,EAAI,OACnCqD,CACT,CAEA,SAASa,EAAWC,EAAO,CACzB,OAAQA,EAAK,CACX,IAAK,GACH,MAAO,YACT,IAAK,GACH,MAAO,WACT,IAAK,GACH,MAAO,WACT,IAAK,IACH,MAAO,WACT,QACE,MAAO,eACV,CACH,CAEY,MAACC,EAAc,CACzB,eAAArE,EAEA,WAAAqD,EACA,eAAAU,EACA,cAAAF,EACA,kBAAAL,EAEA,sBAAA5B,EACA,0BAAAwB,EACA,kCAAAJ,EACA,6BAAAL,EACA,sBAAAE,EACA,sBAAAN,EAEA,eAAArB,EACA,eAAAV,EACA,eAAAI,EACA,wBAAAS,EACA,wBAAAE,CACF"}