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/5G30-2-Q6BaDcRO.js.map
{"version":3,"file":"5G30-2-Q6BaDcRO.js","sources":["../../src/exercices/5e/5G30-2.js"],"sourcesContent":["import { arcPointPointAngle } from '../../lib/2d/cercle.js'\nimport { texteSurArc } from '../../lib/2d/codages.js'\nimport { droite } from '../../lib/2d/droites.js'\nimport { point } from '../../lib/2d/points.js'\nimport { vecteur } from '../../lib/2d/segmentsVecteurs.js'\nimport { labelPoint } from '../../lib/2d/textes.js'\nimport { homothetie, rotation, translation } from '../../lib/2d/transformations.js'\nimport { choice } from '../../lib/outils/arrayOutils'\nimport Exercice from '../Exercice.js'\nimport { mathalea2d, colorToLatexOrHTML, fixeBordures } from '../../modules/2dGeneralites.js'\nimport { context } from '../../modules/context.js'\nimport { gestionnaireFormulaireTexte, listeQuestionsToContenu, randint } from '../../modules/outils.js'\nimport { pickRandom } from 'mathjs'\nimport { aleaVariables } from '../../modules/outilsMathjs.js'\nimport { miseEnEvidence, texteEnCouleurEtGras, texteGras } from '../../lib/outils/embellissements'\nimport { propositionsQcm } from '../../lib/interactif/qcm.js'\nexport const titre = 'Make connections between angles and parallelism'\nexport const dateDeModifImportante = '21/01/2024'\nexport const amcReady = true\nexport const amcType = 'AMCHybride'\nexport const interactifReady = true\nexport const interactifType = 'qcm'\n\nfunction aleaName (names = [], n = names.length, result = []) {\n  const r = Math.floor(Math.random() * names.length)\n  result.push(names[r])\n  names.splice(r, 1)\n  if (result.length === n) {\n    return result\n  } else {\n    return aleaName(names, n, result)\n  }\n}\n\nexport const dateDePublication = '15/01/2022' // La date de publication initiale au format 'jj/mm/aaaa' pour affichage temporaire d'un tag\n\nfunction anglesSecantes (A, rot = { O: 60, A: 0 }) {\n  const s = rotation(translation(A, vecteur(1, 0)), A, rot.A)\n  const S = rotation(translation(A, vecteur(3, 0)), A, rot.A)\n  const t = rotation(s, A, 180)\n  const T = rotation(S, A, 180)\n  const x = rotation(translation(A, vecteur(1, 0)), A, rot.O)\n  const X = rotation(translation(A, vecteur(3, 0)), A, rot.O)\n  const Ox = rotation(x, A, 180)\n  const OX = rotation(X, A, 180)\n  return {\n    a: arcPointPointAngle(s, x, rot.O - rot.A, true, 'blue'),\n    b: arcPointPointAngle(x, t, 180 - (rot.O - rot.A), true, 'green'),\n    c: arcPointPointAngle(t, Ox, rot.O - rot.A, true, 'red'),\n    d: arcPointPointAngle(Ox, s, 180 - (rot.O - rot.A), true, 'gray'),\n    s,\n    S,\n    t,\n    T,\n    x,\n    X,\n    Ox,\n    OX,\n    As: droite(A, s),\n    Ax: droite(A, x),\n    A,\n    labela: texteSurArc((rot.O - rot.A) % 180 + '°', s, x, rot.O - rot.A, 'black', 0.7, true),\n    labelb: texteSurArc((180 - (rot.O - rot.A)) % 180 + '°', x, t, 180 - (rot.O - rot.A), 'black', 0.7, true),\n    labelc: texteSurArc((rot.O - rot.A) % 180 + '°', t, Ox, rot.O - rot.A, 'black', 0.7, true),\n    labeld: texteSurArc((180 - (rot.O - rot.A)) % 180 + '°', Ox, s, 180 - (rot.O - rot.A), 'black', 0.7, true)\n  }\n}\n/**\n * Effectuer des liens entre angles et parallélisme\n * @author Frédéric PIOU\n * rendu interactif par Guillaume Valmont le 21/01/2024\n*/\nexport const uuid = '19812'\nexport const ref = '5G30-2'\nexport default function ExercicesAnglesAIC () {\n  Exercice.call(this)\n  const formulaire = [\n    '1: Angles marked alternate-internal or corresponding?',\n    '2: Determine if lines are parallel (marked angles).',\n    '3: Determine if lines are parallel (named angles).',\n    '4: Calculate the measure of an angle (marked angles).',\n    '5: Calculate the measure of an angle (named angles).',\n    '6: Mark an alternate-internal angle or corresponding to a marked angle.',\n    '7: Name an alternate-internal angle or corresponding to a named angle.',\n    '8: Mixture'\n  ]\n\n  this.nbQuestions = 1\n  this.besoinFormulaireTexte = ['Type of questions', 'Numbers separated by hyphens\\n' + formulaire.join('\\n')]\n\n  this.consigne = ''\n  this.nbCols = 2\n  this.nbColsCorr = 2\n  this.tailleDiaporama = 1\n  this.video = ''\n  this.correctionDetailleeDisponible = false\n  this.correctionDetaillee = true\n  context.isHtml ? (this.spacing = 1.75) : (this.spacing = 0)\n  context.isHtml ? (this.spacingCorr = 1.75) : (this.spacingCorr = 0)\n  this.sup = 8 // Type d'exercice\n  this.nbQuestions = 3\n\n  this.nouvelleVersion = function () {\n    this.listeQuestions = [] // Liste de questions\n    this.listeCorrections = [] // Liste de questions corrigées\n    this.autoCorrection = [] // À placer même si l'exercise n'a pas vocation à être corrigé\n    const nquestion = gestionnaireFormulaireTexte({\n      saisie: this.sup,\n      max: 7,\n      defaut: 8,\n      melange: 8,\n      nbQuestions: this.nbQuestions,\n      shuffle: false\n    })\n\n    for (let i = 0, exercice, cpt = 0; i < this.nbQuestions && cpt < 100;) { // Boucle principale où i+1 correspond au numéro de la question\n      const propositions = []\n      let options = { ordered: true }\n      switch (nquestion[i]) { // Chaque question peut être d'un type différent, ici 4 cas sont prévus...\n        case 1: {\n          const objetsEnonce = [] // on initialise le tableau des objets Mathalea2d de l'enoncé\n          const objetsCorrection = [] // Idem pour la correction\n          const param = aleaVariables(\n            {\n              O: 'randomInt(0.90)',\n              A: 'randomInt(-90,90)',\n              B: 'randomInt(-90,90)',\n              r1: 'pickRandom([1.5,2])',\n              r2: 'pickRandom([1.5,2])',\n              test: 'O-A>30 and O-B>30'\n            }\n          )\n          const O = point(0, 0)\n          const anglesA = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O), O, param.r1), { O: param.O, A: param.A })\n          const anglesB = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O + 180), O, param.r2), { O: param.O, A: param.B })\n          for (const i of ['a', 'b', 'c', 'd']) {\n            anglesA[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n            anglesA[i].opaciteDeRemplissage = 0.7\n            anglesB[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n            anglesB[i].opaciteDeRemplissage = 0.7\n          }\n          const ab = choice([\n            choice(['aa', 'bb', 'CC', 'dd']),\n            choice(['That', 'db']),\n            choice(['a', 'b', 'c', 'd']) + choice(['a', 'b', 'c', 'd'])\n          ])\n          const a = ab[0]\n          const b = ab[1]\n          objetsEnonce.push(\n            anglesA[a],\n            anglesA.As,\n            anglesA.Ax,\n            anglesB[b],\n            anglesB.As,\n            anglesB.Ax,\n            anglesA['label' + a],\n            anglesB['label' + b]\n          )\n          const paramsEnonce = fixeBordures([\n            ...Object.keys(anglesA).map(key => { return anglesA[key] }),\n            ...Object.keys(anglesB).map(key => { return anglesB[key] })\n          ])\n          // We copy all the contents of objectsEnonce into objectsCorrection\n          objetsEnonce.forEach(objet => {\n            objetsCorrection.push(objet)\n          })\n          // here the text, tex_corr, various mathalea2d objects entering into the content of the exercise are created\n          let texte = 'Are the marked angles alternate-internal, corresponding, or neither?<br>'\n          let reponse\n          let reponseCorrecte\n          if (a === b) {\n            reponse = `are ${texteEnCouleurEtGras('correspondents')}`\n            reponseCorrecte = 'correspondents'\n          } else if (a + b === 'That' || a + b === 'db') {\n            reponse = `are ${texteEnCouleurEtGras('alternate interior')}`\n            reponseCorrecte = 'alternate interior'\n          } else {\n            reponse = `are not ${texteEnCouleurEtGras('nor alternate-internal')}, ${texteEnCouleurEtGras('nor correspondents')}`\n            reponseCorrecte = 'Neither'\n          }\n          const texteCorr = `By definition, angles marked ${reponse}.`\n          texte += mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsEnonce)\n          exercice = { texte, texteCorr }\n          console.log(i, reponseCorrecte, propositions)\n          propositions.push({\n            texte: 'alternate interior',\n            statut: reponseCorrecte === 'alternate interior'\n          })\n          propositions.push({\n            texte: 'correspondents',\n            statut: reponseCorrecte === 'correspondents'\n          })\n          propositions.push({\n            texte: 'Neither',\n            statut: reponseCorrecte === 'Neither'\n          })\n          break\n        }\n        case 2: {\n          const objetsEnonce = [] // on initialise le tableau des objets Mathalea2d de l'enoncé\n          const objetsCorrection = [] // Idem pour la correction\n          const param = aleaVariables(\n            {\n              O: 'randomInt(0.90)',\n              A: 'randomInt(-90,90)',\n              B: 'A',\n              r1: 'pickRandom([1.5,2])',\n              r2: 'pickRandom([1.5,2])',\n              test: '70>O-A>30 and 70>O-B>30 and abs(A-B)<45'\n            }\n          )\n          const ab = aleaVariables(\n            {\n              a: 'randomInt(0,3)',\n              b: 'randomInt(0,3)',\n              test: 'a!=b and (a!=2 or b!=0) and (a!=3 or b!=1)'\n            }\n          )\n\n          const O = point(0, 0)\n          const anglesA = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O), O, param.r1), { O: param.O, A: param.A })\n          const anglesB = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O + 180), O, param.r2), { O: param.O, A: param.B })\n          for (const i of ['a', 'b', 'c', 'd']) {\n            anglesA[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n            anglesA[i].opaciteDeRemplissage = 0.7\n            anglesB[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n            anglesB[i].opaciteDeRemplissage = 0.7\n          }\n          anglesA.As.color = colorToLatexOrHTML('red')\n          anglesB.As.color = colorToLatexOrHTML('red')\n          const a = ['a', 'b', 'c', 'd'][parseInt(ab.a)]\n          const b = ['a', 'b', 'c', 'd'][parseInt(ab.b)]\n          const epsilon = choice([pickRandom([-2, -1, 1, 2]), 0])\n          anglesA.labela = texteSurArc(((param.O - param.A) % 180 + epsilon) + '°', anglesA.s, anglesA.x, param.O - param.A, 'black', 0.7, true)\n          anglesA.labelb = texteSurArc((180 - (param.O - param.A) + epsilon) % 180 + '°', anglesA.x, anglesA.t, 180 - (param.O - param.A), 'black', 0.7, true)\n          anglesA.labelc = texteSurArc((param.O - param.A + epsilon) % 180 + '°', anglesA.t, anglesA.Ox, param.O - param.A, 'black', 0.7, true)\n          anglesA.labeld = texteSurArc((180 - (param.O - param.A) + epsilon) % 180 + '°', anglesA.Ox, anglesA.s, 180 - (param.O - param.A), 'black', 0.7, true)\n          anglesB.labela = texteSurArc(((param.O - param.A) % 180) + '°', anglesB.s, anglesB.x, param.O - param.A, 'black', 0.7, true)\n          anglesB.labelb = texteSurArc((180 - (param.O - param.A)) % 180 + '°', anglesB.x, anglesB.t, 180 - (param.O - param.A), 'black', 0.7, true)\n          anglesB.labelc = texteSurArc((param.O - param.A) % 180 + '°', anglesB.t, anglesB.Ox, param.O - param.A, 'black', 0.7, true)\n          anglesB.labeld = texteSurArc((180 - (param.O - param.A)) % 180 + '°', anglesB.Ox, anglesB.s, 180 - (param.O - param.A), 'black', 0.7, true)\n          objetsEnonce.push(\n            anglesA[a],\n            anglesA.As,\n            anglesA.Ax,\n            anglesB[b],\n            anglesB.As,\n            anglesB.Ax,\n            anglesA['label' + a],\n            anglesB['label' + b]\n          )\n          objetsEnonce.forEach(objet => {\n            objetsCorrection.push(objet)\n          })\n          let angles, calculs\n          anglesA[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('red')\n          anglesA.labela.color = 'red'\n          anglesA.labelb.color = 'red'\n          anglesA.labelc.color = 'red'\n          anglesA.labeld.color = 'red'\n          anglesB.labela.color = 'blue'\n          anglesB.labelb.color = 'blue'\n          anglesB.labelc.color = 'blue'\n          anglesB.labeld.color = 'blue'\n\n          switch (a + b) {\n            case 'ab':\n            case 'ad':\n              anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'a'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n              angles = 'correspondents'\n              calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labela.texte, 'green')}$`\n              break\n            case 'ac':\n              anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'a'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n              angles = 'correspondents'\n              break\n            case 'ba':\n              anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              angles = 'correspondents'\n              calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n              break\n            case 'bc':\n              anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              angles = 'correspondents'\n              calculs = `$180°-${miseEnEvidence(anglesB.labelc.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n              break\n            case 'comic':\n              anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              angles = 'correspondents'\n              break\n            case 'cb':\n            case 'CD':\n              anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'a'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n              angles = 'alternate interior'\n              calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labela.texte, 'green')}$`\n              break\n            case 'da':\n              anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              angles = 'alternate interior'\n              calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n              break\n            case 'DC':\n              anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              calculs = `$180°-${miseEnEvidence(anglesB.labelc.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n              angles = 'alternate interior'\n              break\n          }\n          const paramsEnonce = fixeBordures([\n            ...Object.keys(anglesA).map(key => { return anglesA[key] }),\n            ...Object.keys(anglesB).map(key => { return anglesB[key] })\n          ])\n          let texte = 'Are the red lines parallel?<br>'\n          let sont, coord\n          if (epsilon !== 0) {\n            coord = 'but not'\n            sont = 'are not'\n          } else {\n            coord = 'And'\n            sont = 'are'\n          }\n          const texteCorr = mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsCorrection) + String.raw`\n          <br>\n          ${calculs !== undefined ? calculs : 'The blue and green angles are opposite each other at the vertex. <br> So they are of the same measurement.'}\n          <br>\n          Les angles rouge et vert sont ${angles} ${texteGras(coord + ' of the same measure')}.\n          <br>\n          Donc les droites rouges ${texteEnCouleurEtGras(sont + ' parallel')}.\n          `\n          texte += mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsEnonce)\n          exercice = { texte, texteCorr }\n          propositions.push({\n            texte: 'Yes',\n            statut: epsilon === 0\n          })\n          propositions.push({\n            texte: 'No',\n            statut: epsilon !== 0\n          })\n          break\n        }\n        case 4: {\n          const objetsEnonce = [] // on initialise le tableau des objets Mathalea2d de l'enoncé\n          const objetsCorrection = [] // Idem pour la correction\n          const param = aleaVariables(\n            {\n              O: 'randomInt(0.90)',\n              A: 'randomInt(-90,90)',\n              B: 'A',\n              r1: 'pickRandom([1.5,2])',\n              r2: 'pickRandom([1.5,2])',\n              test: '70>O-A>30 and 70>O-B>30 and abs(A-B)<45'\n            }\n          )\n          const ab = aleaVariables(\n            {\n              a: 'randomInt(0,3)',\n              b: 'randomInt(0,3)',\n              test: 'a!=b and (a!=2 or b!=0) and (a!=3 or b!=1)'\n            }\n          )\n          const O = point(0, 0)\n          const anglesA = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O), O, param.r1), { O: param.O, A: param.A })\n          const anglesB = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O + 180), O, param.r2), { O: param.O, A: param.B })\n          for (const i of ['a', 'b', 'c', 'd']) {\n            anglesA[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n            anglesB[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n            anglesA[i].opaciteDeRemplissage = 0.7\n            anglesB[i].opaciteDeRemplissage = 0.7\n          }\n          const a = ['a', 'b', 'c', 'd'][parseInt(ab.a)]\n          const b = ['a', 'b', 'c', 'd'][parseInt(ab.b)]\n          anglesA.As.color = colorToLatexOrHTML('red')\n          anglesB.As.color = colorToLatexOrHTML('red')\n          const epsilon = 0\n          anglesA.labela = texteSurArc(((param.O - param.A) % 180 + epsilon) + '°', anglesA.s, anglesA.x, param.O - param.A, 'black', 0.7, true)\n          anglesA.labelb = texteSurArc((180 - (param.O - param.A) + epsilon) % 180 + '°', anglesA.x, anglesA.t, 180 - (param.O - param.A), 'black', 0.7, true)\n          anglesA.labelc = texteSurArc((param.O - param.A + epsilon) % 180 + '°', anglesA.t, anglesA.Ox, param.O - param.A, 'black', 0.7, true)\n          anglesA.labeld = texteSurArc((180 - (param.O - param.A) + epsilon) % 180 + '°', anglesA.Ox, anglesA.s, 180 - (param.O - param.A), 'black', 0.7, true)\n          anglesB.labela = texteSurArc(((param.O - param.A) % 180) + '°', anglesB.s, anglesB.x, param.O - param.A, 'black', 0.7, true)\n          anglesB.labelb = texteSurArc((180 - (param.O - param.A)) % 180 + '°', anglesB.x, anglesB.t, 180 - (param.O - param.A), 'black', 0.7, true)\n          anglesB.labelc = texteSurArc((param.O - param.A) % 180 + '°', anglesB.t, anglesB.Ox, param.O - param.A, 'black', 0.7, true)\n          anglesB.labeld = texteSurArc((180 - (param.O - param.A)) % 180 + '°', anglesB.Ox, anglesB.s, 180 - (param.O - param.A), 'black', 0.7, true)\n          objetsEnonce.push(\n            anglesA[a],\n            anglesA.As,\n            anglesA.Ax,\n            anglesB[b],\n            anglesB.As,\n            anglesB.Ax,\n            anglesA['label' + a]\n          )\n          objetsEnonce.forEach(objet => {\n            objetsCorrection.push(objet)\n          })\n          objetsCorrection.push(anglesB['label' + b])\n          let angles, calculs, mesure\n          anglesA[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('red')\n          anglesA.labela.color = 'red'\n          anglesA.labelb.color = 'red'\n          anglesA.labelc.color = 'red'\n          anglesA.labeld.color = 'red'\n          anglesB.labela.color = 'blue'\n          anglesB.labelb.color = 'blue'\n          anglesB.labelc.color = 'blue'\n          anglesB.labeld.color = 'blue'\n\n          switch (a + b) {\n            case 'ab':\n              anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'a'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n              angles = 'correspondents'\n              calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n              mesure = anglesB.labelb.texte\n              break\n            case 'ac':\n              anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'a'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n              angles = 'correspondents'\n              mesure = anglesB.labela.texte\n              break\n            case 'ad':\n              anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'a'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n              angles = 'correspondents'\n              calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n              mesure = anglesB.labeld.texte\n              break\n            case 'ba':\n              anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              angles = 'correspondents'\n              calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labela.texte, 'green')}$`\n              mesure = anglesB.labela.texte\n              break\n            case 'bc':\n              anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              angles = 'correspondents'\n              calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labelc.texte, 'green')}$`\n              mesure = anglesB.labelc.texte\n              break\n            case 'comic':\n              anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              angles = 'correspondents'\n              mesure = anglesB.labelb.texte\n              break\n            case 'cb':\n              anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'a'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n              angles = 'alternate interior'\n              calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n              mesure = anglesB.labelb.texte\n              break\n            case 'CD':\n              anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'a'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n              angles = 'alternate interior'\n              calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labeld.texte, 'green')}$`\n              mesure = anglesB.labeld.texte\n              break\n            case 'da':\n              anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              angles = 'alternate interior'\n              calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labela.texte, 'green')}$`\n              mesure = anglesB.labela.texte\n              break\n            case 'DC':\n              anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labelc.texte, 'green')}$`\n              angles = 'alternate interior'\n              mesure = anglesB.labelc.texte\n              break\n          }\n          const paramsEnonce = fixeBordures([\n            ...Object.keys(anglesA).map(key => { return anglesA[key] }),\n            ...Object.keys(anglesB).map(key => { return anglesB[key] })\n          ])\n          let texte = 'Knowing that the red lines are parallel, deduce the measure of the blue angle. Justify.<br>'\n          const texteCorr = mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsCorrection) + String.raw`\n          <br>\n          Les angles rouge et vert sont ${texteGras(angles)} et formés par des droites ${texteGras('parallel')}.\n          <br>\n          Donc ils sont ${texteGras('of the same measure')}.\n          <br>De plus,\n          ${calculs !== undefined ? calculs : ' the blue and green angles are opposite at the vertex.<br> So they are of the same measure.'}\n          <br>\n          L'angle bleu mesure donc $${miseEnEvidence(mesure)}$.\n          `\n          texte += mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsEnonce)\n          exercice = { texte, texteCorr }\n          const valMesure = Number(mesure.slice(0, mesure.length - 1))\n          const valSupplementaireMesure = 180 - valMesure\n          const valMesureDizaines = Math.floor(valMesure / 10)\n          const valMesuresUnites = (valMesure % 10)\n          const valDistracteur = valMesure % 10 === 5 ? valMesure + choice([-1, 1]) * randint(1, 4) : (valMesureDizaines * 10) + (10 - valMesuresUnites)\n          const supplementaireDistracteur = 180 - valDistracteur\n          propositions.push({\n            texte: mesure,\n            statut: true\n          })\n          propositions.push({\n            texte: valSupplementaireMesure.toString() + '°',\n            statut: false\n          })\n          propositions.push({\n            texte: valDistracteur.toString() + '°',\n            statut: false\n          })\n          propositions.push({\n            texte: supplementaireDistracteur.toString() + '°',\n            statut: false\n          })\n          options = { ordered: false }\n          break\n        }\n        case 6: {\n          const objetsEnonce = [] // on initialise le tableau des objets Mathalea2d de l'enoncé\n          const objetsCorrection = [] // Idem pour la correction\n          const param = aleaVariables(\n            {\n              O: 'randomInt(0.90)',\n              A: 'randomInt(-90,90)',\n              B: 'randomInt(-90,90)',\n              r1: 'pickRandom([1.5,2])',\n              r2: 'pickRandom([1.5,2])',\n              test: '40<O-A<140 and 40<O-B<140 and abs(B-A)<20'\n            }\n          )\n          const O = point(0, 0)\n          const anglesA = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O), O, param.r1), { O: param.O, A: param.A })\n          const anglesB = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O + 180), O, param.r2), { O: param.O, A: param.B })\n          const nomsPoints = aleaName(['A', 'B', 'C', 'D', 'E', 'F'], 2)\n          anglesA.A.nom = nomsPoints[0]\n          anglesB.A.nom = nomsPoints[1]\n          const nomsDirections = aleaName(['s', 't', 'u', 'v', 'x', 'y'], 6)\n          anglesA.S.nom = nomsDirections[0]\n          anglesA.T.nom = nomsDirections[1]\n          anglesA.X.nom = nomsDirections[2]\n          anglesA.OX.nom = anglesB.A.nom\n          anglesB.S.nom = nomsDirections[3]\n          anglesB.T.nom = nomsDirections[4]\n          anglesB.OX.nom = nomsDirections[5]\n          anglesB.X.nom = anglesA.A.nom\n          const nameAngles = ['S A'.split(' '), 'X A T'.split(' '), 'T A OX'.split(' '), 'OX A S'.split(' ')]\n          nameAngles.forEach(function (n, i) {\n            anglesA[['a', 'b', 'c', 'd'][i]].nom = ''\n            anglesB[['a', 'b', 'c', 'd'][i]].nom = ''\n            for (let j = 0; j < 3; j++) {\n              anglesA[['a', 'b', 'c', 'd'][i]].nom += anglesA[n[j]].nom\n              anglesB[['a', 'b', 'c', 'd'][i]].nom += anglesB[n[j]].nom\n            }\n          })\n          if (Math.abs(param.A) > 70) {\n            anglesA.S.positionLabel = 'left'\n            anglesA.T.positionLabel = 'left'\n          }\n          if (Math.abs(param.B) > 70) {\n            anglesB.S.positionLabel = 'left'\n            anglesB.T.positionLabel = 'left'\n          }\n          if (Math.abs(param.O) > 70) {\n            anglesA.X.positionLabel = 'left'\n            anglesB.OX.positionLabel = 'left'\n          }\n          for (const i of ['a', 'b', 'c', 'd']) {\n            anglesA[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n            anglesA[i].opaciteDeRemplissage = 0.4\n            anglesB[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n            anglesB[i].opaciteDeRemplissage = 0.4\n          }\n          const ab = choice([\n            choice(['aa', 'bb', 'CC', 'dd']),\n            choice(['That', 'db'])\n          ])\n          const a = ab[0]\n          const b = ab[1]\n          objetsEnonce.push(\n            anglesA[a],\n            anglesA.As,\n            anglesA.Ax,\n            anglesB.As,\n            anglesB.Ax,\n            labelPoint('$' + anglesA.S + '$'),\n            labelPoint('$' + anglesA.T + '$'),\n            labelPoint('$' + anglesA.X + '$'),\n            labelPoint('$' + anglesB.S + '$'),\n            labelPoint('$' + anglesB.T + '$'),\n            labelPoint('$' + anglesB.OX + '$'),\n            labelPoint('$' + anglesA.A + '$'),\n            labelPoint('$' + anglesB.A + '$')\n          )\n          const paramsEnonce = fixeBordures([\n            ...Object.keys(anglesA).map(key => { return anglesA[key] }),\n            ...Object.keys(anglesB).map(key => { return anglesB[key] })\n          ], { rzoom: 1.5 })\n          // We copy all the contents of objectsEnonce into objectsCorrection\n          objetsEnonce.forEach(objet => {\n            objetsCorrection.push(objet)\n          })\n          const angleCorrection = Object.assign({}, anglesB[b])\n          angleCorrection.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('#f15929')\n          objetsCorrection.push(angleCorrection)\n          // here the text, tex_corr, various mathalea2d objects entering into the content of the exercise are created\n          let reponse\n          if (a === b) {\n            reponse = 'corresponding'\n          } else if (a + b === 'That' || a + b === 'db') {\n            reponse = 'alternate-internal'\n          }\n          let texte\n          if (this.interactif) {\n            texte = `What is the angle ${reponse} at the angle marked in blue?<br>`\n            for (const i of ['a', 'b', 'c', 'd']) {\n              objetsEnonce.push(anglesB[i])\n            }\n            objetsEnonce.push(texteSurArc('1', anglesB.s, anglesB.x, param.O - param.A, 'black', 0.4, true))\n            objetsEnonce.push(texteSurArc('2', anglesB.x, anglesB.t, 180 - (param.O - param.A), 'black', 0.4, true))\n            objetsEnonce.push(texteSurArc('3', anglesB.t, anglesB.Ox, param.O - param.A, 'black', 0.4, true))\n            objetsEnonce.push(texteSurArc('4', anglesB.Ox, anglesB.s, 180 - (param.O - param.A), 'black', 0.4, true))\n          } else {\n            texte = String.raw`Mark in red the angle ${reponse} at the angle marked in blue.<br>`\n          }\n          const texteCorr = mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsCorrection)\n          texte += mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsEnonce)\n          exercice = { texte, texteCorr }\n          propositions.push({\n            texte: 1,\n            statut: b === 'a'\n          })\n          propositions.push({\n            texte: 2,\n            statut: b === 'b'\n          })\n          propositions.push({\n            texte: 3,\n            statut: b === 'c'\n          })\n          propositions.push({\n            texte: 4,\n            statut: b === 'd'\n          })\n          break\n        }\n        case 7: {\n          const objetsEnonce = [] // on initialise le tableau des objets Mathalea2d de l'enoncé\n          const objetsCorrection = [] // Idem pour la correction\n          const param = aleaVariables(\n            {\n              O: 'randomInt(0.90)',\n              A: 'randomInt(-90,90)',\n              B: 'randomInt(-90,90)',\n              r1: 'pickRandom([1.5,2])',\n              r2: 'pickRandom([1.5,2])',\n              test: '40<O-A<140 and 40<O-B<140 and abs(B-A)<20'\n            }\n          )\n          const O = point(0, 0)\n          const anglesA = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O), O, param.r1), { O: param.O, A: param.A })\n          const anglesB = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O + 180), O, param.r2), { O: param.O, A: param.B })\n          const nomsPoints = aleaName(['A', 'B', 'C', 'D', 'E', 'F'], 2)\n          anglesA.A.nom = nomsPoints[0]\n          anglesB.A.nom = nomsPoints[1]\n          const nomsDirections = aleaName(['s', 't', 'u', 'v', 'x', 'y'], 6)\n          anglesA.S.nom = nomsDirections[0]\n          anglesA.T.nom = nomsDirections[1]\n          anglesA.X.nom = nomsDirections[2]\n          anglesA.OX.nom = anglesB.A.nom\n          anglesB.S.nom = nomsDirections[3]\n          anglesB.T.nom = nomsDirections[4]\n          anglesB.OX.nom = nomsDirections[5]\n          anglesB.X.nom = anglesA.A.nom\n          const nameAngles = ['S A'.split(' '), 'X A T'.split(' '), 'T A OX'.split(' '), 'OX A S'.split(' ')]\n          nameAngles.forEach(function (n, i) {\n            anglesA[['a', 'b', 'c', 'd'][i]].nom = ''\n            anglesB[['a', 'b', 'c', 'd'][i]].nom = ''\n            for (let j = 0; j < 3; j++) {\n              anglesA[['a', 'b', 'c', 'd'][i]].nom += anglesA[n[j]].nom\n              anglesB[['a', 'b', 'c', 'd'][i]].nom += anglesB[n[j]].nom\n            }\n          })\n          if (Math.abs(param.A) > 70) {\n            anglesA.S.positionLabel = 'left'\n            anglesA.T.positionLabel = 'left'\n          }\n          if (Math.abs(param.B) > 70) {\n            anglesB.S.positionLabel = 'left'\n            anglesB.T.positionLabel = 'left'\n          }\n          if (Math.abs(param.O) > 70) {\n            anglesA.X.positionLabel = 'left'\n            anglesB.OX.positionLabel = 'left'\n          }\n          for (const i of ['a', 'b', 'c', 'd']) {\n            anglesA[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n            anglesA[i].opaciteDeRemplissage = 0.7\n            anglesB[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n            anglesB[i].opaciteDeRemplissage = 0.7\n          }\n          const ab = choice([\n            choice(['aa', 'bb', 'CC', 'dd']),\n            choice(['That', 'db'])\n          ])\n          const a = ab[0]\n          const b = ab[1]\n          objetsEnonce.push(\n            // anglesA[a],\n            anglesA.As,\n            anglesA.Ax,\n            anglesB.As,\n            anglesB.Ax,\n            labelPoint(anglesA.S),\n            labelPoint(anglesA.T),\n            labelPoint(anglesA.X),\n            labelPoint(anglesB.S),\n            labelPoint(anglesB.T),\n            labelPoint(anglesB.OX),\n            labelPoint(anglesA.A),\n            labelPoint(anglesB.A)\n          )\n          const paramsEnonce = fixeBordures([\n            ...Object.keys(anglesA).map(key => { return anglesA[key] }),\n            ...Object.keys(anglesB).map(key => { return anglesB[key] })\n          ], { rzoom: 1.5 })\n          // We copy all the contents of objectsEnonce into objectsCorrection\n          objetsEnonce.forEach(objet => {\n            objetsCorrection.push(objet)\n          })\n\n          anglesB[b].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('#f15929')\n          objetsCorrection.push(anglesB[b])\n          objetsCorrection.push(anglesA[a])\n\n          // here the text, tex_corr, various mathalea2d objects entering into the content of the exercise are created\n          let reponse\n          if (a === b) {\n            reponse = 'corresponding'\n          } else if (a + b === 'That' || a + b === 'db') {\n            reponse = 'alternate-internal'\n          }\n          let texte = String.raw`What is the angle ${reponse} to the angle $\\widehat{${anglesA[a].nom}}$?<br>`\n          let texteCorr = mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsCorrection)\n          texteCorr += String.raw`The angle ${reponse} to the angle $${miseEnEvidence('\\\\widehat{' + anglesA[a].nom + '}', 'blue')}$ is $${miseEnEvidence('\\\\widehat{' + anglesB[b].nom + '}')}$.`\n          texte += mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsEnonce)\n          exercice = { texte, texteCorr }\n          propositions.push({\n            texte: `$\\\\widehat{${anglesB.a.nom}}$`,\n            statut: anglesB[b].nom === anglesB.a.nom\n          })\n          propositions.push({\n            texte: `$\\\\widehat{${anglesB.b.nom}}$`,\n            statut: anglesB[b].nom === anglesB.b.nom\n          })\n          propositions.push({\n            texte: `$\\\\widehat{${anglesB.c.nom}}$`,\n            statut: anglesB[b].nom === anglesB.c.nom\n          })\n          propositions.push({\n            texte: `$\\\\widehat{${anglesB.d.nom}}$`,\n            statut: anglesB[b].nom === anglesB.d.nom\n          })\n          break\n        }\n        case 3: {\n          const objetsEnonce = [] // on initialise le tableau des objets Mathalea2d de l'enoncé\n          const objetsCorrection = [] // Idem pour la correction\n          const param = aleaVariables(\n            {\n              O: 'randomInt(0.90)',\n              A: 'randomInt(-90,90)',\n              B: 'A',\n              r1: 'pickRandom([1.5,2])',\n              r2: 'pickRandom([1.5,2])',\n              test: '70>O-A>30 and 70>O-B>30 and abs(A-B)<45'\n            }\n          )\n          const ab = aleaVariables(\n            {\n              a: 'randomInt(0,3)',\n              b: 'randomInt(0,3)',\n              test: 'a!=b and (a!=2 or b!=0) and (a!=3 or b!=1)'\n            }\n          )\n          const O = point(0, 0)\n          const anglesA = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O), O, param.r1), { O: param.O, A: param.A })\n          const anglesB = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O + 180), O, param.r2), { O: param.O, A: param.B })\n          const nomsPoints = aleaName(['A', 'B', 'C', 'D', 'E', 'F'], 2)\n          anglesA.A.nom = nomsPoints[0]\n          anglesB.A.nom = nomsPoints[1]\n          const nomsDirections = aleaName(['s', 't', 'u', 'v', 'x', 'y'], 6)\n          anglesA.S.nom = nomsDirections[0]\n          anglesA.T.nom = nomsDirections[1]\n          anglesA.X.nom = nomsDirections[2]\n          anglesA.OX.nom = anglesB.A.nom\n          anglesB.S.nom = nomsDirections[3]\n          anglesB.T.nom = nomsDirections[4]\n          anglesB.OX.nom = nomsDirections[5]\n          anglesB.X.nom = anglesA.A.nom\n          const nameAngles = ['S A'.split(' '), 'X A T'.split(' '), 'T A OX'.split(' '), 'OX A S'.split(' ')]\n          nameAngles.forEach(function (n, i) {\n            anglesA[['a', 'b', 'c', 'd'][i]].nom = ''\n            anglesB[['a', 'b', 'c', 'd'][i]].nom = ''\n            for (let j = 0; j < 3; j++) {\n              anglesA[['a', 'b', 'c', 'd'][i]].nom += anglesA[n[j]].nom\n              anglesB[['a', 'b', 'c', 'd'][i]].nom += anglesB[n[j]].nom\n            }\n          })\n          if (Math.abs(param.A) > 70) {\n            anglesA.S.positionLabel = 'left'\n            anglesA.T.positionLabel = 'left'\n          }\n          if (Math.abs(param.B) > 70) {\n            anglesB.S.positionLabel = 'left'\n            anglesB.T.positionLabel = 'left'\n          }\n          if (Math.abs(param.O) > 70) {\n            anglesA.X.positionLabel = 'left'\n            anglesB.OX.positionLabel = 'left'\n          }\n          for (const i of ['a', 'b', 'c', 'd']) {\n            anglesA[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n            anglesA[i].opaciteDeRemplissage = 0.4\n            anglesB[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n            anglesB[i].opaciteDeRemplissage = 0.4\n          }\n          const a = ['a', 'b', 'c', 'd'][parseInt(ab.a)]\n          const b = ['a', 'b', 'c', 'd'][parseInt(ab.b)]\n          const epsilon = choice([pickRandom([-2, -1, 1, 2]), 0])\n          anglesA.labela = texteSurArc(((param.O - param.A) % 180 + epsilon) + '°', anglesA.s, anglesA.x, param.O - param.A, 'black', 0.7, true)\n          anglesA.labelb = texteSurArc((180 - (param.O - param.A) + epsilon) % 180 + '°', anglesA.x, anglesA.t, 180 - (param.O - param.A), 'black', 0.7, true)\n          anglesA.labelc = texteSurArc((param.O - param.A + epsilon) % 180 + '°', anglesA.t, anglesA.Ox, param.O - param.A, 'black', 0.7, true)\n          anglesA.labeld = texteSurArc((180 - (param.O - param.A) + epsilon) % 180 + '°', anglesA.Ox, anglesA.s, 180 - (param.O - param.A), 'black', 0.7, true)\n          anglesB.labela = texteSurArc(((param.O - param.A) % 180) + '°', anglesB.s, anglesB.x, param.O - param.A, 'black', 0.7, true)\n          anglesB.labelb = texteSurArc((180 - (param.O - param.A)) % 180 + '°', anglesB.x, anglesB.t, 180 - (param.O - param.A), 'black', 0.7, true)\n          anglesB.labelc = texteSurArc((param.O - param.A) % 180 + '°', anglesB.t, anglesB.Ox, param.O - param.A, 'black', 0.7, true)\n          anglesB.labeld = texteSurArc((180 - (param.O - param.A)) % 180 + '°', anglesB.Ox, anglesB.s, 180 - (param.O - param.A), 'black', 0.7, true)\n          objetsEnonce.push(\n            anglesA[a],\n            anglesA.As,\n            anglesA.Ax,\n            anglesB[b],\n            anglesB.As,\n            anglesB.Ax,\n            anglesA['label' + a],\n            anglesB['label' + b],\n            labelPoint(anglesA.S),\n            labelPoint(anglesA.T),\n            labelPoint(anglesA.X),\n            labelPoint(anglesB.S),\n            labelPoint(anglesB.T),\n            labelPoint(anglesB.OX),\n            labelPoint(anglesA.A),\n            labelPoint(anglesB.A)\n          )\n          objetsEnonce.forEach(objet => {\n            objetsCorrection.push(objet)\n          })\n          let angles, calculs\n          anglesA[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('red')\n          anglesA.labela.color = 'red'\n          anglesA.labelb.color = 'red'\n          anglesA.labelc.color = 'red'\n          anglesA.labeld.color = 'red'\n          anglesB.labela.color = 'blue'\n          anglesB.labelb.color = 'blue'\n          anglesB.labelc.color = 'blue'\n          anglesB.labeld.color = 'blue'\n          switch (a + b) {\n            case 'ab':\n            case 'ad':\n              anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'a'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n              angles = 'correspondents'\n              calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labela.texte, 'green')}$`\n              break\n            case 'ac':\n              anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'a'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n              angles = 'correspondents'\n              break\n            case 'ba':\n              anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              angles = 'correspondents'\n              calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n              break\n            case 'bc':\n              anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              angles = 'correspondents'\n              calculs = `$180°-${miseEnEvidence(anglesB.labelc.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n              break\n            case 'comic':\n              anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              angles = 'correspondents'\n              break\n            case 'cb':\n            case 'CD':\n              anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'a'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n              angles = 'alternate interior'\n              calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labela.texte, 'green')}$`\n              break\n            case 'da':\n              anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              angles = 'alternate interior'\n              calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n              break\n            case 'DC':\n              anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              calculs = `$180°-${miseEnEvidence(anglesB.labelc.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n              angles = 'alternate interior'\n              break\n          }\n\n          const paramsEnonce = fixeBordures([\n            ...Object.keys(anglesA).map(key => { return anglesA[key] }),\n            ...Object.keys(anglesB).map(key => { return anglesB[key] })\n          ])\n          let texte = `Are the lines $(${anglesA.S.nom}${anglesA.T.nom})$ and $(${anglesB.S.nom}${anglesB.T.nom})$ parallel?<br>`\n          let sont, coord\n          if (epsilon !== 0) {\n            coord = 'but not'\n            sont = 'are not'\n          } else {\n            coord = 'And'\n            sont = 'are'\n          }\n          const nomAngleSolution = angles !== 'alternate interior' ? anglesB[a].nom : a === 'c' ? anglesB.a.nom : anglesB.b.nom\n          const texteCorr = mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsCorrection) + String.raw`\n          <br>\n          ${calculs !== undefined ? calculs : String.raw`The angles $\\widehat{${anglesB[a].nom}}$ and $\\widehat{${anglesB[b].nom}}$ are opposite each other at the vertex. <br> So they are of the same measurement.`}\n          <br>\n          Donc les angles $${miseEnEvidence('\\\\widehat{' + anglesA[a].nom + '}', 'red')}$ et $${miseEnEvidence('\\\\widehat{' + nomAngleSolution + '}', 'green')}$ sont ${angles} ${texteGras(coord + ' of the same measure')}.\n          <br>\n          Donc les droites $(${anglesA.S.nom}${anglesA.T.nom})$ et $(${anglesB.S.nom}${anglesB.T.nom})$ ${texteEnCouleurEtGras(sont + ' parallel')}.\n          `\n          texte += mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsEnonce)\n          exercice = { texte, texteCorr }\n          propositions.push({\n            texte: 'Yes',\n            statut: epsilon === 0\n          })\n          propositions.push({\n            texte: 'No',\n            statut: epsilon !== 0\n          })\n          break\n        }\n        case 5: {\n          const objetsEnonce = [] // on initialise le tableau des objets Mathalea2d de l'enoncé\n          const objetsCorrection = [] // Idem pour la correction\n          const param = aleaVariables(\n            {\n              O: 'randomInt(0.90)',\n              A: 'randomInt(-90,90)',\n              B: 'A',\n              r1: 'pickRandom([1.5,2])',\n              r2: 'pickRandom([1.5,2])',\n              test: '70>O-A>30 and 70>O-B>30 and abs(A-B)<45'\n            }\n          )\n          const ab = aleaVariables(\n            {\n              a: 'randomInt(0,3)',\n              b: 'randomInt(0,3)',\n              test: 'a!=b and (a!=2 or b!=0) and (a!=3 or b!=1)'\n            }\n          )\n          const O = point(0, 0)\n          const anglesA = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O), O, param.r1), { O: param.O, A: param.A })\n          const anglesB = anglesSecantes(homothetie(rotation(point(1, 0), O, param.O + 180), O, param.r2), { O: param.O, A: param.B })\n          const nomsPoints = aleaName(['A', 'B', 'C', 'D', 'E', 'F'], 2)\n          anglesA.A.nom = nomsPoints[0]\n          anglesB.A.nom = nomsPoints[1]\n          const nomsDirections = aleaName(['s', 't', 'u', 'v', 'x', 'y'], 6)\n          anglesA.S.nom = nomsDirections[0]\n          anglesA.T.nom = nomsDirections[1]\n          anglesA.X.nom = nomsDirections[2]\n          anglesA.OX.nom = anglesB.A.nom\n          anglesB.S.nom = nomsDirections[3]\n          anglesB.T.nom = nomsDirections[4]\n          anglesB.OX.nom = nomsDirections[5]\n          anglesB.X.nom = anglesA.A.nom\n          const nameAngles = ['S A'.split(' '), 'X A T'.split(' '), 'T A OX'.split(' '), 'OX A S'.split(' ')]\n          nameAngles.forEach(function (n, i) {\n            anglesA[['a', 'b', 'c', 'd'][i]].nom = ''\n            anglesB[['a', 'b', 'c', 'd'][i]].nom = ''\n            for (let j = 0; j < 3; j++) {\n              anglesA[['a', 'b', 'c', 'd'][i]].nom += anglesA[n[j]].nom\n              anglesB[['a', 'b', 'c', 'd'][i]].nom += anglesB[n[j]].nom\n            }\n          })\n          if (Math.abs(param.A) > 70) {\n            anglesA.S.positionLabel = 'left'\n            anglesA.T.positionLabel = 'left'\n          }\n          if (Math.abs(param.B) > 70) {\n            anglesB.S.positionLabel = 'left'\n            anglesB.T.positionLabel = 'left'\n          }\n          if (Math.abs(param.O) > 70) {\n            anglesA.X.positionLabel = 'left'\n            anglesB.OX.positionLabel = 'left'\n          }\n          for (const i of ['a', 'b', 'c', 'd']) {\n            anglesA[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n            anglesA[i].opaciteDeRemplissage = 0.4\n            anglesB[i].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('blue')\n            anglesB[i].opaciteDeRemplissage = 0.4\n          }\n          const a = ['a', 'b', 'c', 'd'][parseInt(ab.a)]\n          const b = ['a', 'b', 'c', 'd'][parseInt(ab.b)]\n          const epsilon = 0\n          anglesA.labela = texteSurArc(((param.O - param.A) % 180 + epsilon) + '°', anglesA.s, anglesA.x, param.O - param.A, 'black', 0.7, true)\n          anglesA.labelb = texteSurArc((180 - (param.O - param.A) + epsilon) % 180 + '°', anglesA.x, anglesA.t, 180 - (param.O - param.A), 'black', 0.7, true)\n          anglesA.labelc = texteSurArc((param.O - param.A + epsilon) % 180 + '°', anglesA.t, anglesA.Ox, param.O - param.A, 'black', 0.7, true)\n          anglesA.labeld = texteSurArc((180 - (param.O - param.A) + epsilon) % 180 + '°', anglesA.Ox, anglesA.s, 180 - (param.O - param.A), 'black', 0.7, true)\n          anglesB.labela = texteSurArc(((param.O - param.A) % 180) + '°', anglesB.s, anglesB.x, param.O - param.A, 'black', 0.7, true)\n          anglesB.labelb = texteSurArc((180 - (param.O - param.A)) % 180 + '°', anglesB.x, anglesB.t, 180 - (param.O - param.A), 'black', 0.7, true)\n          anglesB.labelc = texteSurArc((param.O - param.A) % 180 + '°', anglesB.t, anglesB.Ox, param.O - param.A, 'black', 0.7, true)\n          anglesB.labeld = texteSurArc((180 - (param.O - param.A)) % 180 + '°', anglesB.Ox, anglesB.s, 180 - (param.O - param.A), 'black', 0.7, true)\n          objetsEnonce.push(\n            anglesA[a],\n            anglesA.As,\n            anglesA.Ax,\n            anglesB.As,\n            anglesB.Ax,\n            anglesA['label' + a],\n            labelPoint(anglesA.S),\n            labelPoint(anglesA.T),\n            labelPoint(anglesA.X),\n            labelPoint(anglesB.S),\n            labelPoint(anglesB.T),\n            labelPoint(anglesB.OX),\n            labelPoint(anglesA.A),\n            labelPoint(anglesB.A)\n            // anglesB['label' + b]\n          )\n          objetsEnonce.forEach(objet => {\n            objetsCorrection.push(objet)\n          })\n          objetsCorrection.push(anglesB['label' + b])\n          objetsCorrection.push(anglesB[b])\n          let angles, calculs, mesure\n          anglesA[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('red')\n          anglesA.labela.color = 'red'\n          anglesA.labelb.color = 'red'\n          anglesA.labelc.color = 'red'\n          anglesA.labeld.color = 'red'\n          anglesB.labela.color = 'blue'\n          anglesB.labelb.color = 'blue'\n          anglesB.labelc.color = 'blue'\n          anglesB.labeld.color = 'blue'\n\n          switch (a + b) {\n            case 'ab':\n              anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'a'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n              angles = 'correspondents'\n              calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n              mesure = anglesB.labelb.texte\n              break\n            case 'ac':\n              anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'a'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n              angles = 'correspondents'\n              mesure = anglesB.labela.texte\n              break\n            case 'ad':\n              anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'a'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n              angles = 'correspondents'\n              calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n              mesure = anglesB.labeld.texte\n              break\n            case 'ba':\n              anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              angles = 'correspondents'\n              calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labela.texte, 'green')}$`\n              mesure = anglesB.labela.texte\n              break\n            case 'bc':\n              anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              angles = 'correspondents'\n              calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labelc.texte, 'green')}$`\n              mesure = anglesB.labelc.texte\n              break\n            case 'comic':\n              anglesB[a].couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              angles = 'correspondents'\n              mesure = anglesB.labelb.texte\n              break\n            case 'cb':\n              anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'a'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n              angles = 'alternate interior'\n              calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labelb.texte, 'green')}$`\n              mesure = anglesB.labelb.texte\n              break\n            case 'CD':\n              anglesB.a.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'a'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'a'], anglesB.a)\n              angles = 'alternate interior'\n              calculs = `$180°-${miseEnEvidence(anglesB.labela.texte, 'blue')} = ${miseEnEvidence(anglesB.labeld.texte, 'green')}$`\n              mesure = anglesB.labeld.texte\n              break\n            case 'da':\n              anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              angles = 'alternate interior'\n              calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labela.texte, 'green')}$`\n              mesure = anglesB.labela.texte\n              break\n            case 'DC':\n              anglesB.b.couleurDeRemplissage = context.isAmc ? '' : colorToLatexOrHTML('green')\n              anglesB['label' + 'b'].color = 'green'\n              objetsCorrection.push(anglesB['label' + 'b'], anglesB.b)\n              calculs = `$180°-${miseEnEvidence(anglesB.labelb.texte, 'blue')} = ${miseEnEvidence(anglesB.labelc.texte, 'green')}$`\n              angles = 'alternate interior'\n              mesure = anglesB.labelc.texte\n              break\n          }\n          const paramsEnonce = fixeBordures([\n            ...Object.keys(anglesA).map(key => { return anglesA[key] }),\n            ...Object.keys(anglesB).map(key => { return anglesB[key] })\n          ])\n          let texte = String.raw`\n          Sachant que les droites $(${anglesA.S.nom}${anglesA.T.nom})$ et $(${anglesB.S.nom}${anglesB.T.nom})$ sont parallèles, en déduire la mesure de l'angle $\\widehat{${anglesB[b].nom}}$.<br>\n          `\n          const nomAngleSolution = angles !== 'alternate interior' ? anglesB[a].nom : a === 'c' ? anglesB.a.nom : anglesB.b.nom\n          const texteCorr = mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsCorrection) + String.raw`\n          <br>\n          Les angles $${miseEnEvidence('\\\\widehat{' + anglesA[a].nom + '}', 'red')}$ et $${miseEnEvidence('\\\\widehat{' + nomAngleSolution + '}', 'green')}$ sont ${texteGras(angles)} et formés par des droites ${texteGras('parallel')}.\n          <br>\n          Donc ils sont ${texteGras('of the same measure')}.\n          <br>De plus,\n          ${calculs !== undefined ? calculs : String.raw` the angles $\\widehat{${anglesB[a].nom}}$ and $\\widehat{${anglesB[b].nom}}$ and vert are opposite at the vertex.<br> So they are of the same measure.`}\n          <br>\n          Donc l'angle $${miseEnEvidence('\\\\widehat{' + anglesB[b].nom + '}', 'blue')}$ mesure $${miseEnEvidence(mesure)}$.\n          `\n          texte += mathalea2d(Object.assign({ scale: 0.4 }, paramsEnonce), objetsEnonce)\n          exercice = { texte, texteCorr }\n          const valMesure = Number(mesure.slice(0, mesure.length - 1))\n          const valSupplementaireMesure = 180 - valMesure\n          const valMesureDizaines = Math.floor(valMesure / 10)\n          const valMesuresUnites = (valMesure % 10)\n          const valDistracteur = valMesure % 10 === 5 ? valMesure + choice([-1, 1]) * randint(1, 4) : (valMesureDizaines * 10) + (10 - valMesuresUnites)\n          const supplementaireDistracteur = 180 - valDistracteur\n          propositions.push({\n            texte: mesure,\n            statut: true\n          })\n          propositions.push({\n            texte: valSupplementaireMesure.toString() + '°',\n            statut: false\n          })\n          propositions.push({\n            texte: valDistracteur.toString() + '°',\n            statut: false\n          })\n          propositions.push({\n            texte: supplementaireDistracteur.toString() + '°',\n            statut: false\n          })\n          options = { ordered: false }\n          break\n        }\n      }\n      // The lines below allow you to have a display with optimized dimensions\n      if (this.questionJamaisPosee(i, exercice.texte)) {\n        if (context.isAmc) {\n          this.autoCorrection[i] = {\n            enonce: '',\n            options: { barreseparation: true, numerotationEnonce: true }, // facultatif.\n            propositions: [\n              {\n                type: 'AMCOpen',\n                propositions: [\n                  {\n                    texte: '',\n                    numQuestionVisible: false,\n                    statut: (nquestion[i] < 6) && (nquestion[i] > 1) ? 3 : 1, // (ici c'is the number of lines of the frame for the answer of the'élève sur AMC)\n                    feedback: '',\n                    // states: figure[3][0] + mathalea2d(figure[1], figure[0]) + '<br>' + figure[3][1] + 'Justify the answer.' // EE: this field is optional and functional only in hybrid mode (in normal mode, there is no interest)\n                    enonce: exercice.texte // EE : ce champ est facultatif et fonctionnel qu'in hybrid mode (in normal mode, there is no point)\n                  }\n                ]\n              }\n            ]\n          }\n        } else {\n          this.autoCorrection[i] = {\n            enonce: exercice.texte,\n            propositions,\n            options\n          }\n        }\n        const monQcm = propositionsQcm(this, i)\n        if (this.interactif) {\n          exercice.texte = exercice.texte + monQcm.texte\n        }\n        this.listeQuestions.push(exercice.texte)\n        this.listeCorrections.push(exercice.texteCorr)\n        i++\n      }\n      cpt++\n    }\n    listeQuestionsToContenu(this) // On envoie l'exercice à la fonction de mise en page\n  }\n}\n"],"names":["titre","dateDeModifImportante","amcReady","amcType","interactifReady","interactifType","aleaName","names","n","result","r","dateDePublication","anglesSecantes","A","rot","s","rotation","translation","vecteur","S","t","T","x","X","Ox","OX","arcPointPointAngle","droite","texteSurArc","uuid","ref","ExercicesAnglesAIC","Exercice","formulaire","context","nquestion","gestionnaireFormulaireTexte","i","exercice","cpt","propositions","options","objetsEnonce","param","aleaVariables","O","point","anglesA","homothetie","anglesB","colorToLatexOrHTML","ab","choice","a","b","paramsEnonce","fixeBordures","key","objet","texte","reponse","reponseCorrecte","texteEnCouleurEtGras","texteCorr","mathalea2d","objetsCorrection","epsilon","pickRandom","angles","calculs","miseEnEvidence","sont","coord","texteGras","mesure","valMesure","valSupplementaireMesure","valMesureDizaines","valMesuresUnites","valDistracteur","randint","supplementaireDistracteur","nomsPoints","nomsDirections","j","labelPoint","angleCorrection","nomAngleSolution","monQcm","propositionsQcm","listeQuestionsToContenu"],"mappings":"4RAgBY,MAACA,GAAQ,kDACRC,GAAwB,aACxBC,GAAW,GACXC,GAAU,aACVC,GAAkB,GAClBC,GAAiB,MAE9B,SAASC,EAAUC,EAAQ,GAAIC,EAAID,EAAM,OAAQE,EAAS,GAAI,CAC5D,MAAMC,EAAI,KAAK,MAAM,KAAK,OAAQ,EAAGH,EAAM,MAAM,EAGjD,OAFAE,EAAO,KAAKF,EAAMG,CAAC,CAAC,EACpBH,EAAM,OAAOG,EAAG,CAAC,EACbD,EAAO,SAAWD,EACbC,EAEAH,EAASC,EAAOC,EAAGC,CAAM,CAEpC,CAEY,MAACE,GAAoB,aAEjC,SAASC,EAAgBC,EAAGC,EAAM,CAAE,EAAG,GAAI,EAAG,GAAK,CACjD,MAAMC,EAAIC,EAASC,EAAYJ,EAAGK,EAAQ,EAAG,CAAC,CAAC,EAAGL,EAAGC,EAAI,CAAC,EACpDK,EAAIH,EAASC,EAAYJ,EAAGK,EAAQ,EAAG,CAAC,CAAC,EAAGL,EAAGC,EAAI,CAAC,EACpDM,EAAIJ,EAASD,EAAGF,EAAG,GAAG,EACtBQ,EAAIL,EAASG,EAAGN,EAAG,GAAG,EACtBS,EAAIN,EAASC,EAAYJ,EAAGK,EAAQ,EAAG,CAAC,CAAC,EAAGL,EAAGC,EAAI,CAAC,EACpDS,EAAIP,EAASC,EAAYJ,EAAGK,EAAQ,EAAG,CAAC,CAAC,EAAGL,EAAGC,EAAI,CAAC,EACpDU,EAAKR,EAASM,EAAGT,EAAG,GAAG,EACvBY,EAAKT,EAASO,EAAGV,EAAG,GAAG,EAC7B,MAAO,CACL,EAAGa,EAAmBX,EAAGO,EAAGR,EAAI,EAAIA,EAAI,EAAG,GAAM,MAAM,EACvD,EAAGY,EAAmBJ,EAAGF,EAAG,KAAON,EAAI,EAAIA,EAAI,GAAI,GAAM,OAAO,EAChE,EAAGY,EAAmBN,EAAGI,EAAIV,EAAI,EAAIA,EAAI,EAAG,GAAM,KAAK,EACvD,EAAGY,EAAmBF,EAAIT,EAAG,KAAOD,EAAI,EAAIA,EAAI,GAAI,GAAM,MAAM,EAChE,EAAAC,EACA,EAAAI,EACA,EAAAC,EACA,EAAAC,EACA,EAAAC,EACA,EAAAC,EACA,GAAAC,EACA,GAAAC,EACA,GAAIE,GAAOd,EAAGE,CAAC,EACf,GAAIY,GAAOd,EAAGS,CAAC,EACf,EAAAT,EACA,OAAQe,GAAad,EAAI,EAAIA,EAAI,GAAK,IAAM,IAAKC,EAAGO,EAAGR,EAAI,EAAIA,EAAI,EAAG,QAAS,GAAK,EAAI,EACxF,OAAQc,GAAa,KAAOd,EAAI,EAAIA,EAAI,IAAM,IAAM,IAAKQ,EAAGF,EAAG,KAAON,EAAI,EAAIA,EAAI,GAAI,QAAS,GAAK,EAAI,EACxG,OAAQc,GAAad,EAAI,EAAIA,EAAI,GAAK,IAAM,IAAKM,EAAGI,EAAIV,EAAI,EAAIA,EAAI,EAAG,QAAS,GAAK,EAAI,EACzF,OAAQc,GAAa,KAAOd,EAAI,EAAIA,EAAI,IAAM,IAAM,IAAKU,EAAIT,EAAG,KAAOD,EAAI,EAAIA,EAAI,GAAI,QAAS,GAAK,EAAI,CAC1G,CACH,CAMY,MAACe,GAAO,QACPC,GAAM,SACJ,SAASC,IAAsB,CAC5CC,GAAS,KAAK,IAAI,EAClB,MAAMC,EAAa,CACjB,wDACA,sDACA,qDACA,wDACA,uDACA,0EACA,yEACA,YACD,EAED,KAAK,YAAc,EACnB,KAAK,sBAAwB,CAAC,oBAAqB;AAAA,EAAmCA,EAAW,KAAK;AAAA,CAAI,CAAC,EAE3G,KAAK,SAAW,GAChB,KAAK,OAAS,EACd,KAAK,WAAa,EAClB,KAAK,gBAAkB,EACvB,KAAK,MAAQ,GACb,KAAK,8BAAgC,GACrC,KAAK,oBAAsB,GAC3BC,EAAQ,OAAU,KAAK,QAAU,KAAS,KAAK,QAAU,EACzDA,EAAQ,OAAU,KAAK,YAAc,KAAS,KAAK,YAAc,EACjE,KAAK,IAAM,EACX,KAAK,YAAc,EAEnB,KAAK,gBAAkB,UAAY,CACjC,KAAK,eAAiB,CAAE,EACxB,KAAK,iBAAmB,CAAE,EAC1B,KAAK,eAAiB,CAAE,EACxB,MAAMC,EAAYC,GAA4B,CAC5C,OAAQ,KAAK,IACb,IAAK,EACL,OAAQ,EACR,QAAS,EACT,YAAa,KAAK,YAClB,QAAS,EACf,CAAK,EAED,QAASC,EAAI,EAAGC,EAAUC,EAAM,EAAGF,EAAI,KAAK,aAAeE,EAAM,KAAM,CACrE,MAAMC,EAAe,CAAE,EACvB,IAAIC,EAAU,CAAE,QAAS,EAAM,EAC/B,OAAQN,EAAUE,CAAC,EAAC,CAClB,IAAK,GAAG,CACN,MAAMK,EAAe,CAAE,EAEjBC,EAAQC,EACZ,CACE,EAAG,kBACH,EAAG,oBACH,EAAG,oBACH,GAAI,sBACJ,GAAI,sBACJ,KAAM,mBACP,CACF,EACKC,EAAIC,EAAM,EAAG,CAAC,EACdC,EAAUnC,EAAeoC,EAAWhC,EAAS8B,EAAM,EAAG,CAAC,EAAGD,EAAGF,EAAM,CAAC,EAAGE,EAAGF,EAAM,EAAE,EAAG,CAAE,EAAGA,EAAM,EAAG,EAAGA,EAAM,EAAG,EAC/GM,EAAUrC,EAAeoC,EAAWhC,EAAS8B,EAAM,EAAG,CAAC,EAAGD,EAAGF,EAAM,EAAI,GAAG,EAAGE,EAAGF,EAAM,EAAE,EAAG,CAAE,EAAGA,EAAM,EAAG,EAAGA,EAAM,CAAC,CAAE,EAC3H,UAAW,IAAK,CAAC,IAAK,IAAK,IAAK,GAAG,EACjCI,EAAQ,CAAC,EAAE,qBAAuBb,EAAQ,MAAQ,GAAKgB,EAAmB,MAAM,EAChFH,EAAQ,CAAC,EAAE,qBAAuB,GAClCE,EAAQ,CAAC,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,MAAM,EAChFD,EAAQ,CAAC,EAAE,qBAAuB,GAEpC,MAAME,EAAKC,EAAO,CAChBA,EAAO,CAAC,KAAM,KAAM,KAAM,IAAI,CAAC,EAC/BA,EAAO,CAAC,OAAQ,IAAI,CAAC,EACrBA,EAAO,CAAC,IAAK,IAAK,IAAK,GAAG,CAAC,EAAIA,EAAO,CAAC,IAAK,IAAK,IAAK,GAAG,CAAC,CACtE,CAAW,EACKC,EAAIF,EAAG,CAAC,EACRG,EAAIH,EAAG,CAAC,EACdT,EAAa,KACXK,EAAQM,CAAC,EACTN,EAAQ,GACRA,EAAQ,GACRE,EAAQK,CAAC,EACTL,EAAQ,GACRA,EAAQ,GACRF,EAAQ,QAAUM,CAAC,EACnBJ,EAAQ,QAAUK,CAAC,CACpB,EACD,MAAMC,EAAeC,EAAa,CAChC,GAAG,OAAO,KAAKT,CAAO,EAAE,IAAIU,GAAgBV,EAAQU,CAAG,CAAG,EAC1D,GAAG,OAAO,KAAKR,CAAO,EAAE,IAAIQ,GAAgBR,EAAQQ,CAAG,CAAG,CACtE,CAAW,EAEDf,EAAa,QAAQgB,GAAS,CAExC,CAAW,EAED,IAAIC,EAAQ,2EACRC,EACAC,EACAR,IAAMC,GACRM,EAAU,OAAOE,EAAqB,gBAAgB,CAAC,GACvDD,EAAkB,kBACTR,EAAIC,IAAM,QAAUD,EAAIC,IAAM,MACvCM,EAAU,OAAOE,EAAqB,oBAAoB,CAAC,GAC3DD,EAAkB,uBAElBD,EAAU,WAAWE,EAAqB,wBAAwB,CAAC,KAAKA,EAAqB,oBAAoB,CAAC,GAClHD,EAAkB,WAEpB,MAAME,EAAY,gCAAgCH,CAAO,IACzDD,GAASK,EAAW,OAAO,OAAO,CAAE,MAAO,EAAK,EAAET,CAAY,EAAGb,CAAY,EAC7EJ,EAAW,CAAE,MAAAqB,EAAO,UAAAI,CAAW,EAC/B,QAAQ,IAAI1B,EAAGwB,EAAiBrB,CAAY,EAC5CA,EAAa,KAAK,CAChB,MAAO,qBACP,OAAQqB,IAAoB,oBACxC,CAAW,EACDrB,EAAa,KAAK,CAChB,MAAO,iBACP,OAAQqB,IAAoB,gBACxC,CAAW,EACDrB,EAAa,KAAK,CAChB,MAAO,UACP,OAAQqB,IAAoB,SACxC,CAAW,EACD,KACD,CACD,IAAK,GAAG,CACN,MAAMnB,EAAe,CAAE,EACjBuB,EAAmB,CAAE,EACrBtB,EAAQC,EACZ,CACE,EAAG,kBACH,EAAG,oBACH,EAAG,IACH,GAAI,sBACJ,GAAI,sBACJ,KAAM,yCACP,CACF,EACKO,EAAKP,EACT,CACE,EAAG,iBACH,EAAG,iBACH,KAAM,4CACP,CACF,EAEKC,EAAIC,EAAM,EAAG,CAAC,EACdC,EAAUnC,EAAeoC,EAAWhC,EAAS8B,EAAM,EAAG,CAAC,EAAGD,EAAGF,EAAM,CAAC,EAAGE,EAAGF,EAAM,EAAE,EAAG,CAAE,EAAGA,EAAM,EAAG,EAAGA,EAAM,EAAG,EAC/GM,EAAUrC,EAAeoC,EAAWhC,EAAS8B,EAAM,EAAG,CAAC,EAAGD,EAAGF,EAAM,EAAI,GAAG,EAAGE,EAAGF,EAAM,EAAE,EAAG,CAAE,EAAGA,EAAM,EAAG,EAAGA,EAAM,CAAC,CAAE,EAC3H,UAAWN,IAAK,CAAC,IAAK,IAAK,IAAK,GAAG,EACjCU,EAAQV,CAAC,EAAE,qBAAuBH,EAAQ,MAAQ,GAAKgB,EAAmB,MAAM,EAChFH,EAAQV,CAAC,EAAE,qBAAuB,GAClCY,EAAQZ,CAAC,EAAE,qBAAuBH,EAAQ,MAAQ,GAAKgB,EAAmB,MAAM,EAChFD,EAAQZ,CAAC,EAAE,qBAAuB,GAEpCU,EAAQ,GAAG,MAAQG,EAAmB,KAAK,EAC3CD,EAAQ,GAAG,MAAQC,EAAmB,KAAK,EAC3C,MAAMG,EAAI,CAAC,IAAK,IAAK,IAAK,GAAG,EAAE,SAASF,EAAG,CAAC,CAAC,EACvCG,EAAI,CAAC,IAAK,IAAK,IAAK,GAAG,EAAE,SAASH,EAAG,CAAC,CAAC,EACvCe,EAAUd,EAAO,CAACe,GAAW,CAAC,GAAI,GAAI,EAAG,CAAC,CAAC,EAAG,CAAC,CAAC,EACtDpB,EAAQ,OAASnB,GAAce,EAAM,EAAIA,EAAM,GAAK,IAAMuB,EAAW,IAAKnB,EAAQ,EAAGA,EAAQ,EAAGJ,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,EACrII,EAAQ,OAASnB,GAAa,KAAOe,EAAM,EAAIA,EAAM,GAAKuB,GAAW,IAAM,IAAKnB,EAAQ,EAAGA,EAAQ,EAAG,KAAOJ,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,EACnJI,EAAQ,OAASnB,GAAae,EAAM,EAAIA,EAAM,EAAIuB,GAAW,IAAM,IAAKnB,EAAQ,EAAGA,EAAQ,GAAIJ,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,EACpII,EAAQ,OAASnB,GAAa,KAAOe,EAAM,EAAIA,EAAM,GAAKuB,GAAW,IAAM,IAAKnB,EAAQ,GAAIA,EAAQ,EAAG,KAAOJ,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,EACpJM,EAAQ,OAASrB,GAAce,EAAM,EAAIA,EAAM,GAAK,IAAO,IAAKM,EAAQ,EAAGA,EAAQ,EAAGN,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,EAC3HM,EAAQ,OAASrB,GAAa,KAAOe,EAAM,EAAIA,EAAM,IAAM,IAAM,IAAKM,EAAQ,EAAGA,EAAQ,EAAG,KAAON,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,EACzIM,EAAQ,OAASrB,GAAae,EAAM,EAAIA,EAAM,GAAK,IAAM,IAAKM,EAAQ,EAAGA,EAAQ,GAAIN,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,EAC1HM,EAAQ,OAASrB,GAAa,KAAOe,EAAM,EAAIA,EAAM,IAAM,IAAM,IAAKM,EAAQ,GAAIA,EAAQ,EAAG,KAAON,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,EAC1ID,EAAa,KACXK,EAAQM,CAAC,EACTN,EAAQ,GACRA,EAAQ,GACRE,EAAQK,CAAC,EACTL,EAAQ,GACRA,EAAQ,GACRF,EAAQ,QAAUM,CAAC,EACnBJ,EAAQ,QAAUK,CAAC,CACpB,EACDZ,EAAa,QAAQgB,GAAS,CAC5BO,EAAiB,KAAKP,CAAK,CACvC,CAAW,EACD,IAAIU,EAAQC,EAWZ,OAVAtB,EAAQM,CAAC,EAAE,qBAAuBnB,EAAQ,MAAQ,GAAKgB,EAAmB,KAAK,EAC/EH,EAAQ,OAAO,MAAQ,MACvBA,EAAQ,OAAO,MAAQ,MACvBA,EAAQ,OAAO,MAAQ,MACvBA,EAAQ,OAAO,MAAQ,MACvBE,EAAQ,OAAO,MAAQ,OACvBA,EAAQ,OAAO,MAAQ,OACvBA,EAAQ,OAAO,MAAQ,OACvBA,EAAQ,OAAO,MAAQ,OAEfI,EAAIC,EAAC,CACX,IAAK,KACL,IAAK,KACHL,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClH,MACF,IAAK,KACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACT,MACF,IAAK,KACHnB,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClH,MACF,IAAK,KACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClH,MACF,IAAK,QACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACT,MACF,IAAK,KACL,IAAK,KACHnB,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,qBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClH,MACF,IAAK,KACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,qBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClH,MACF,IAAK,KACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDoB,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHmB,EAAS,qBACT,KACH,CACD,MAAMb,EAAeC,EAAa,CAChC,GAAG,OAAO,KAAKT,CAAO,EAAE,IAAIU,GAAgBV,EAAQU,CAAG,CAAG,EAC1D,GAAG,OAAO,KAAKR,CAAO,EAAE,IAAIQ,GAAgBR,EAAQQ,CAAG,CAAG,CACtE,CAAW,EACD,IAAIE,EAAQ,kCACRY,EAAMC,EACNN,IAAY,GACdM,EAAQ,UACRD,EAAO,YAEPC,EAAQ,MACRD,EAAO,OAET,MAAMR,EAAYC,EAAW,OAAO,OAAO,CAAE,MAAO,EAAK,EAAET,CAAY,EAAGU,CAAgB,EAAI,OAAO;AAAA;AAAA,YAEnGI,IAAY,OAAYA,EAAU,4GAA4G;AAAA;AAAA,0CAEhHD,CAAM,IAAIK,EAAUD,EAAQ,sBAAsB,CAAC;AAAA;AAAA,oCAEzDV,EAAqBS,EAAO,WAAW,CAAC;AAAA,YAElEZ,GAASK,EAAW,OAAO,OAAO,CAAE,MAAO,EAAK,EAAET,CAAY,EAAGb,CAAY,EAC7EJ,EAAW,CAAE,MAAAqB,EAAO,UAAAI,CAAW,EAC/BvB,EAAa,KAAK,CAChB,MAAO,MACP,OAAQ0B,IAAY,CAChC,CAAW,EACD1B,EAAa,KAAK,CAChB,MAAO,KACP,OAAQ0B,IAAY,CAChC,CAAW,EACD,KACD,CACD,IAAK,GAAG,CACN,MAAMxB,EAAe,CAAE,EACjBuB,EAAmB,CAAE,EACrBtB,EAAQC,EACZ,CACE,EAAG,kBACH,EAAG,oBACH,EAAG,IACH,GAAI,sBACJ,GAAI,sBACJ,KAAM,yCACP,CACF,EACKO,EAAKP,EACT,CACE,EAAG,iBACH,EAAG,iBACH,KAAM,4CACP,CACF,EACKC,EAAIC,EAAM,EAAG,CAAC,EACdC,EAAUnC,EAAeoC,EAAWhC,EAAS8B,EAAM,EAAG,CAAC,EAAGD,EAAGF,EAAM,CAAC,EAAGE,EAAGF,EAAM,EAAE,EAAG,CAAE,EAAGA,EAAM,EAAG,EAAGA,EAAM,EAAG,EAC/GM,EAAUrC,EAAeoC,EAAWhC,EAAS8B,EAAM,EAAG,CAAC,EAAGD,EAAGF,EAAM,EAAI,GAAG,EAAGE,EAAGF,EAAM,EAAE,EAAG,CAAE,EAAGA,EAAM,EAAG,EAAGA,EAAM,CAAC,CAAE,EAC3H,UAAWN,IAAK,CAAC,IAAK,IAAK,IAAK,GAAG,EACjCU,EAAQV,CAAC,EAAE,qBAAuBH,EAAQ,MAAQ,GAAKgB,EAAmB,MAAM,EAChFD,EAAQZ,CAAC,EAAE,qBAAuBH,EAAQ,MAAQ,GAAKgB,EAAmB,MAAM,EAChFH,EAAQV,CAAC,EAAE,qBAAuB,GAClCY,EAAQZ,CAAC,EAAE,qBAAuB,GAEpC,MAAMgB,EAAI,CAAC,IAAK,IAAK,IAAK,GAAG,EAAE,SAASF,EAAG,CAAC,CAAC,EACvCG,EAAI,CAAC,IAAK,IAAK,IAAK,GAAG,EAAE,SAASH,EAAG,CAAC,CAAC,EAC7CJ,EAAQ,GAAG,MAAQG,EAAmB,KAAK,EAC3CD,EAAQ,GAAG,MAAQC,EAAmB,KAAK,EAC3C,MAAMgB,EAAU,EAChBnB,EAAQ,OAASnB,GAAce,EAAM,EAAIA,EAAM,GAAK,IAAMuB,EAAW,IAAKnB,EAAQ,EAAGA,EAAQ,EAAGJ,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,EACrII,EAAQ,OAASnB,GAAa,KAAOe,EAAM,EAAIA,EAAM,GAAKuB,GAAW,IAAM,IAAKnB,EAAQ,EAAGA,EAAQ,EAAG,KAAOJ,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,EACnJI,EAAQ,OAASnB,GAAae,EAAM,EAAIA,EAAM,EAAIuB,GAAW,IAAM,IAAKnB,EAAQ,EAAGA,EAAQ,GAAIJ,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,EACpII,EAAQ,OAASnB,GAAa,KAAOe,EAAM,EAAIA,EAAM,GAAKuB,GAAW,IAAM,IAAKnB,EAAQ,GAAIA,EAAQ,EAAG,KAAOJ,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,EACpJM,EAAQ,OAASrB,GAAce,EAAM,EAAIA,EAAM,GAAK,IAAO,IAAKM,EAAQ,EAAGA,EAAQ,EAAGN,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,EAC3HM,EAAQ,OAASrB,GAAa,KAAOe,EAAM,EAAIA,EAAM,IAAM,IAAM,IAAKM,EAAQ,EAAGA,EAAQ,EAAG,KAAON,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,EACzIM,EAAQ,OAASrB,GAAae,EAAM,EAAIA,EAAM,GAAK,IAAM,IAAKM,EAAQ,EAAGA,EAAQ,GAAIN,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,EAC1HM,EAAQ,OAASrB,GAAa,KAAOe,EAAM,EAAIA,EAAM,IAAM,IAAM,IAAKM,EAAQ,GAAIA,EAAQ,EAAG,KAAON,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,EAC1ID,EAAa,KACXK,EAAQM,CAAC,EACTN,EAAQ,GACRA,EAAQ,GACRE,EAAQK,CAAC,EACTL,EAAQ,GACRA,EAAQ,GACRF,EAAQ,QAAUM,CAAC,CACpB,EACDX,EAAa,QAAQgB,GAAS,CAC5BO,EAAiB,KAAKP,CAAK,CACvC,CAAW,EACDO,EAAiB,KAAKhB,EAAQ,QAAUK,CAAC,CAAC,EAC1C,IAAIc,EAAQC,EAASK,EAWrB,OAVA3B,EAAQM,CAAC,EAAE,qBAAuBnB,EAAQ,MAAQ,GAAKgB,EAAmB,KAAK,EAC/EH,EAAQ,OAAO,MAAQ,MACvBA,EAAQ,OAAO,MAAQ,MACvBA,EAAQ,OAAO,MAAQ,MACvBA,EAAQ,OAAO,MAAQ,MACvBE,EAAQ,OAAO,MAAQ,OACvBA,EAAQ,OAAO,MAAQ,OACvBA,EAAQ,OAAO,MAAQ,OACvBA,EAAQ,OAAO,MAAQ,OAEfI,EAAIC,EAAC,CACX,IAAK,KACHL,EAAQI,CAAC,EAAE,qBAAuBnB,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EACjFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHyB,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,KACHA,EAAQI,CAAC,EAAE,qBAAuBnB,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EACjFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTM,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,KACHA,EAAQI,CAAC,EAAE,qBAAuBnB,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EACjFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHyB,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,KACHA,EAAQI,CAAC,EAAE,qBAAuBnB,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EACjFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHyB,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,KACHA,EAAQI,CAAC,EAAE,qBAAuBnB,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EACjFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHyB,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,QACHA,EAAQI,CAAC,EAAE,qBAAuBnB,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EACjFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTM,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,KACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,qBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHyB,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,KACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,qBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHyB,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,KACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,qBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHyB,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,KACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDoB,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHmB,EAAS,qBACTM,EAASzB,EAAQ,OAAO,MACxB,KACH,CACD,MAAMM,EAAeC,EAAa,CAChC,GAAG,OAAO,KAAKT,CAAO,EAAE,IAAIU,GAAgBV,EAAQU,CAAG,CAAG,EAC1D,GAAG,OAAO,KAAKR,CAAO,EAAE,IAAIQ,GAAgBR,EAAQQ,CAAG,CAAG,CACtE,CAAW,EACD,IAAIE,EAAQ,8FACZ,MAAMI,EAAYC,EAAW,OAAO,OAAO,CAAE,MAAO,EAAK,EAAET,CAAY,EAAGU,CAAgB,EAAI,OAAO;AAAA;AAAA,0CAErEQ,EAAUL,CAAM,CAAC,8BAA8BK,EAAU,UAAU,CAAC;AAAA;AAAA,0BAEpFA,EAAU,qBAAqB,CAAC;AAAA;AAAA,YAE9CJ,IAAY,OAAYA,EAAU,6FAA6F;AAAA;AAAA,sCAErGC,EAAeI,CAAM,CAAC;AAAA,YAElDf,GAASK,EAAW,OAAO,OAAO,CAAE,MAAO,EAAK,EAAET,CAAY,EAAGb,CAAY,EAC7EJ,EAAW,CAAE,MAAAqB,EAAO,UAAAI,CAAW,EAC/B,MAAMY,EAAY,OAAOD,EAAO,MAAM,EAAGA,EAAO,OAAS,CAAC,CAAC,EACrDE,EAA0B,IAAMD,EAChCE,EAAoB,KAAK,MAAMF,EAAY,EAAE,EAC7CG,EAAoBH,EAAY,GAChCI,EAAiBJ,EAAY,KAAO,EAAIA,EAAYvB,EAAO,CAAC,GAAI,CAAC,CAAC,EAAI4B,GAAQ,EAAG,CAAC,EAAKH,EAAoB,IAAO,GAAKC,GACvHG,EAA4B,IAAMF,EACxCvC,EAAa,KAAK,CAChB,MAAOkC,EACP,OAAQ,EACpB,CAAW,EACDlC,EAAa,KAAK,CAChB,MAAOoC,EAAwB,SAAQ,EAAK,IAC5C,OAAQ,EACpB,CAAW,EACDpC,EAAa,KAAK,CAChB,MAAOuC,EAAe,SAAQ,EAAK,IACnC,OAAQ,EACpB,CAAW,EACDvC,EAAa,KAAK,CAChB,MAAOyC,EAA0B,SAAQ,EAAK,IAC9C,OAAQ,EACpB,CAAW,EACDxC,EAAU,CAAE,QAAS,EAAO,EAC5B,KACD,CACD,IAAK,GAAG,CACN,MAAMC,EAAe,CAAE,EACjBuB,EAAmB,CAAE,EACrBtB,EAAQC,EACZ,CACE,EAAG,kBACH,EAAG,oBACH,EAAG,oBACH,GAAI,sBACJ,GAAI,sBACJ,KAAM,2CACP,CACF,EACKC,EAAIC,EAAM,EAAG,CAAC,EACdC,EAAUnC,EAAeoC,EAAWhC,EAAS8B,EAAM,EAAG,CAAC,EAAGD,EAAGF,EAAM,CAAC,EAAGE,EAAGF,EAAM,EAAE,EAAG,CAAE,EAAGA,EAAM,EAAG,EAAGA,EAAM,EAAG,EAC/GM,EAAUrC,EAAeoC,EAAWhC,EAAS8B,EAAM,EAAG,CAAC,EAAGD,EAAGF,EAAM,EAAI,GAAG,EAAGE,EAAGF,EAAM,EAAE,EAAG,CAAE,EAAGA,EAAM,EAAG,EAAGA,EAAM,CAAC,CAAE,EACrHuC,EAAa5E,EAAS,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAG,CAAC,EAC7DyC,EAAQ,EAAE,IAAMmC,EAAW,CAAC,EAC5BjC,EAAQ,EAAE,IAAMiC,EAAW,CAAC,EAC5B,MAAMC,EAAiB7E,EAAS,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAG,CAAC,EACjEyC,EAAQ,EAAE,IAAMoC,EAAe,CAAC,EAChCpC,EAAQ,EAAE,IAAMoC,EAAe,CAAC,EAChCpC,EAAQ,EAAE,IAAMoC,EAAe,CAAC,EAChCpC,EAAQ,GAAG,IAAME,EAAQ,EAAE,IAC3BA,EAAQ,EAAE,IAAMkC,EAAe,CAAC,EAChClC,EAAQ,EAAE,IAAMkC,EAAe,CAAC,EAChClC,EAAQ,GAAG,IAAMkC,EAAe,CAAC,EACjClC,EAAQ,EAAE,IAAMF,EAAQ,EAAE,IACP,CAAC,MAAM,MAAM,GAAG,EAAG,QAAQ,MAAM,GAAG,EAAG,SAAS,MAAM,GAAG,EAAG,SAAS,MAAM,GAAG,CAAC,EACvF,QAAQ,SAAUvC,EAAG6B,EAAG,CACjCU,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAAEV,CAAC,CAAC,EAAE,IAAM,GACvCY,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAAEZ,CAAC,CAAC,EAAE,IAAM,GACvC,QAAS+C,EAAI,EAAGA,EAAI,EAAGA,IACrBrC,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAAEV,CAAC,CAAC,EAAE,KAAOU,EAAQvC,EAAE4E,CAAC,CAAC,EAAE,IACtDnC,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAAEZ,CAAC,CAAC,EAAE,KAAOY,EAAQzC,EAAE4E,CAAC,CAAC,EAAE,GAEpE,CAAW,EACG,KAAK,IAAIzC,EAAM,CAAC,EAAI,KACtBI,EAAQ,EAAE,cAAgB,OAC1BA,EAAQ,EAAE,cAAgB,QAExB,KAAK,IAAIJ,EAAM,CAAC,EAAI,KACtBM,EAAQ,EAAE,cAAgB,OAC1BA,EAAQ,EAAE,cAAgB,QAExB,KAAK,IAAIN,EAAM,CAAC,EAAI,KACtBI,EAAQ,EAAE,cAAgB,OAC1BE,EAAQ,GAAG,cAAgB,QAE7B,UAAWZ,IAAK,CAAC,IAAK,IAAK,IAAK,GAAG,EACjCU,EAAQV,CAAC,EAAE,qBAAuBH,EAAQ,MAAQ,GAAKgB,EAAmB,MAAM,EAChFH,EAAQV,CAAC,EAAE,qBAAuB,GAClCY,EAAQZ,CAAC,EAAE,qBAAuBH,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EACjFD,EAAQZ,CAAC,EAAE,qBAAuB,GAEpC,MAAMc,EAAKC,EAAO,CAChBA,EAAO,CAAC,KAAM,KAAM,KAAM,IAAI,CAAC,EAC/BA,EAAO,CAAC,OAAQ,IAAI,CAAC,CACjC,CAAW,EACKC,EAAIF,EAAG,CAAC,EACR,EAAIA,EAAG,CAAC,EACdT,EAAa,KACXK,EAAQM,CAAC,EACTN,EAAQ,GACRA,EAAQ,GACRE,EAAQ,GACRA,EAAQ,GACRoC,EAAW,IAAMtC,EAAQ,EAAI,GAAG,EAChCsC,EAAW,IAAMtC,EAAQ,EAAI,GAAG,EAChCsC,EAAW,IAAMtC,EAAQ,EAAI,GAAG,EAChCsC,EAAW,IAAMpC,EAAQ,EAAI,GAAG,EAChCoC,EAAW,IAAMpC,EAAQ,EAAI,GAAG,EAChCoC,EAAW,IAAMpC,EAAQ,GAAK,GAAG,EACjCoC,EAAW,IAAMtC,EAAQ,EAAI,GAAG,EAChCsC,EAAW,IAAMpC,EAAQ,EAAI,GAAG,CACjC,EACD,MAAMM,EAAeC,EAAa,CAChC,GAAG,OAAO,KAAKT,CAAO,EAAE,IAAIU,GAAgBV,EAAQU,CAAG,CAAG,EAC1D,GAAG,OAAO,KAAKR,CAAO,EAAE,IAAIQ,GAAgBR,EAAQQ,CAAG,CAAG,CACtE,EAAa,CAAE,MAAO,IAAK,EAEjBf,EAAa,QAAQgB,GAAS,CAC5BO,EAAiB,KAAKP,CAAK,CACvC,CAAW,EACD,MAAM4B,EAAkB,OAAO,OAAO,CAAA,EAAIrC,EAAQ,CAAC,CAAC,EACpDqC,EAAgB,qBAAuBpD,EAAQ,MAAQ,GAAKgB,EAAmB,SAAS,EACxFe,EAAiB,KAAKqB,CAAe,EAErC,IAAI1B,EACAP,IAAM,EACRO,EAAU,iBACDP,EAAI,IAAM,QAAUA,EAAI,IAAM,QACvCO,EAAU,sBAEZ,IAAID,EACJ,GAAI,KAAK,WAAY,CACnBA,EAAQ,qBAAqBC,CAAO,oCACpC,UAAWvB,IAAK,CAAC,IAAK,IAAK,IAAK,GAAG,EACjCK,EAAa,KAAKO,EAAQZ,CAAC,CAAC,EAE9BK,EAAa,KAAKd,EAAY,IAAKqB,EAAQ,EAAGA,EAAQ,EAAGN,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,CAAC,EAC/FD,EAAa,KAAKd,EAAY,IAAKqB,EAAQ,EAAGA,EAAQ,EAAG,KAAON,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,CAAC,EACvGD,EAAa,KAAKd,EAAY,IAAKqB,EAAQ,EAAGA,EAAQ,GAAIN,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,CAAC,EAChGD,EAAa,KAAKd,EAAY,IAAKqB,EAAQ,GAAIA,EAAQ,EAAG,KAAON,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,CAAC,CACpH,MACYgB,EAAQ,OAAO,4BAA4BC,CAAO,oCAEpD,MAAMG,EAAYC,EAAW,OAAO,OAAO,CAAE,MAAO,EAAK,EAAET,CAAY,EAAGU,CAAgB,EAC1FN,GAASK,EAAW,OAAO,OAAO,CAAE,MAAO,EAAK,EAAET,CAAY,EAAGb,CAAY,EAC7EJ,EAAW,CAAE,MAAAqB,EAAO,UAAAI,CAAW,EAC/BvB,EAAa,KAAK,CAChB,MAAO,EACP,OAAQ,IAAM,GAC1B,CAAW,EACDA,EAAa,KAAK,CAChB,MAAO,EACP,OAAQ,IAAM,GAC1B,CAAW,EACDA,EAAa,KAAK,CAChB,MAAO,EACP,OAAQ,IAAM,GAC1B,CAAW,EACDA,EAAa,KAAK,CAChB,MAAO,EACP,OAAQ,IAAM,GAC1B,CAAW,EACD,KACD,CACD,IAAK,GAAG,CACN,MAAME,EAAe,CAAE,EACjBuB,EAAmB,CAAE,EACrBtB,EAAQC,EACZ,CACE,EAAG,kBACH,EAAG,oBACH,EAAG,oBACH,GAAI,sBACJ,GAAI,sBACJ,KAAM,2CACP,CACF,EACKC,EAAIC,EAAM,EAAG,CAAC,EACdC,EAAUnC,EAAeoC,EAAWhC,EAAS8B,EAAM,EAAG,CAAC,EAAGD,EAAGF,EAAM,CAAC,EAAGE,EAAGF,EAAM,EAAE,EAAG,CAAE,EAAGA,EAAM,EAAG,EAAGA,EAAM,EAAG,EAC/GM,EAAUrC,EAAeoC,EAAWhC,EAAS8B,EAAM,EAAG,CAAC,EAAGD,EAAGF,EAAM,EAAI,GAAG,EAAGE,EAAGF,EAAM,EAAE,EAAG,CAAE,EAAGA,EAAM,EAAG,EAAGA,EAAM,CAAC,CAAE,EACrHuC,EAAa5E,EAAS,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAG,CAAC,EAC7DyC,EAAQ,EAAE,IAAMmC,EAAW,CAAC,EAC5BjC,EAAQ,EAAE,IAAMiC,EAAW,CAAC,EAC5B,MAAMC,EAAiB7E,EAAS,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAG,CAAC,EACjEyC,EAAQ,EAAE,IAAMoC,EAAe,CAAC,EAChCpC,EAAQ,EAAE,IAAMoC,EAAe,CAAC,EAChCpC,EAAQ,EAAE,IAAMoC,EAAe,CAAC,EAChCpC,EAAQ,GAAG,IAAME,EAAQ,EAAE,IAC3BA,EAAQ,EAAE,IAAMkC,EAAe,CAAC,EAChClC,EAAQ,EAAE,IAAMkC,EAAe,CAAC,EAChClC,EAAQ,GAAG,IAAMkC,EAAe,CAAC,EACjClC,EAAQ,EAAE,IAAMF,EAAQ,EAAE,IACP,CAAC,MAAM,MAAM,GAAG,EAAG,QAAQ,MAAM,GAAG,EAAG,SAAS,MAAM,GAAG,EAAG,SAAS,MAAM,GAAG,CAAC,EACvF,QAAQ,SAAUvC,EAAG6B,EAAG,CACjCU,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAAEV,CAAC,CAAC,EAAE,IAAM,GACvCY,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAAEZ,CAAC,CAAC,EAAE,IAAM,GACvC,QAAS+C,EAAI,EAAGA,EAAI,EAAGA,IACrBrC,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAAEV,CAAC,CAAC,EAAE,KAAOU,EAAQvC,EAAE4E,CAAC,CAAC,EAAE,IACtDnC,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAAEZ,CAAC,CAAC,EAAE,KAAOY,EAAQzC,EAAE4E,CAAC,CAAC,EAAE,GAEpE,CAAW,EACG,KAAK,IAAIzC,EAAM,CAAC,EAAI,KACtBI,EAAQ,EAAE,cAAgB,OAC1BA,EAAQ,EAAE,cAAgB,QAExB,KAAK,IAAIJ,EAAM,CAAC,EAAI,KACtBM,EAAQ,EAAE,cAAgB,OAC1BA,EAAQ,EAAE,cAAgB,QAExB,KAAK,IAAIN,EAAM,CAAC,EAAI,KACtBI,EAAQ,EAAE,cAAgB,OAC1BE,EAAQ,GAAG,cAAgB,QAE7B,UAAWZ,IAAK,CAAC,IAAK,IAAK,IAAK,GAAG,EACjCU,EAAQV,CAAC,EAAE,qBAAuBH,EAAQ,MAAQ,GAAKgB,EAAmB,MAAM,EAChFH,EAAQV,CAAC,EAAE,qBAAuB,GAClCY,EAAQZ,CAAC,EAAE,qBAAuBH,EAAQ,MAAQ,GAAKgB,EAAmB,MAAM,EAChFD,EAAQZ,CAAC,EAAE,qBAAuB,GAEpC,MAAMc,EAAKC,EAAO,CAChBA,EAAO,CAAC,KAAM,KAAM,KAAM,IAAI,CAAC,EAC/BA,EAAO,CAAC,OAAQ,IAAI,CAAC,CACjC,CAAW,EACKC,EAAIF,EAAG,CAAC,EACR,EAAIA,EAAG,CAAC,EACdT,EAAa,KAEXK,EAAQ,GACRA,EAAQ,GACRE,EAAQ,GACRA,EAAQ,GACRoC,EAAWtC,EAAQ,CAAC,EACpBsC,EAAWtC,EAAQ,CAAC,EACpBsC,EAAWtC,EAAQ,CAAC,EACpBsC,EAAWpC,EAAQ,CAAC,EACpBoC,EAAWpC,EAAQ,CAAC,EACpBoC,EAAWpC,EAAQ,EAAE,EACrBoC,EAAWtC,EAAQ,CAAC,EACpBsC,EAAWpC,EAAQ,CAAC,CACrB,EACD,MAAMM,EAAeC,EAAa,CAChC,GAAG,OAAO,KAAKT,CAAO,EAAE,IAAIU,GAAgBV,EAAQU,CAAG,CAAG,EAC1D,GAAG,OAAO,KAAKR,CAAO,EAAE,IAAIQ,GAAgBR,EAAQQ,CAAG,CAAG,CACtE,EAAa,CAAE,MAAO,IAAK,EAEjBf,EAAa,QAAQgB,GAAS,CAC5BO,EAAiB,KAAKP,CAAK,CACvC,CAAW,EAEDT,EAAQ,CAAC,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,SAAS,EACnFe,EAAiB,KAAKhB,EAAQ,CAAC,CAAC,EAChCgB,EAAiB,KAAKlB,EAAQM,CAAC,CAAC,EAGhC,IAAIO,EACAP,IAAM,EACRO,EAAU,iBACDP,EAAI,IAAM,QAAUA,EAAI,IAAM,QACvCO,EAAU,sBAEZ,IAAID,EAAQ,OAAO,wBAAwBC,CAAO,2BAA2Bb,EAAQM,CAAC,EAAE,GAAG,UACvFU,EAAYC,EAAW,OAAO,OAAO,CAAE,MAAO,EAAK,EAAET,CAAY,EAAGU,CAAgB,EACxFF,GAAa,OAAO,gBAAgBH,CAAO,kBAAkBU,EAAe,aAAevB,EAAQM,CAAC,EAAE,IAAM,IAAK,MAAM,CAAC,SAASiB,EAAe,aAAerB,EAAQ,CAAC,EAAE,IAAM,GAAG,CAAC,KACpLU,GAASK,EAAW,OAAO,OAAO,CAAE,MAAO,EAAK,EAAET,CAAY,EAAGb,CAAY,EAC7EJ,EAAW,CAAE,MAAAqB,EAAO,UAAAI,CAAW,EAC/BvB,EAAa,KAAK,CAChB,MAAO,cAAcS,EAAQ,EAAE,GAAG,KAClC,OAAQA,EAAQ,CAAC,EAAE,MAAQA,EAAQ,EAAE,GACjD,CAAW,EACDT,EAAa,KAAK,CAChB,MAAO,cAAcS,EAAQ,EAAE,GAAG,KAClC,OAAQA,EAAQ,CAAC,EAAE,MAAQA,EAAQ,EAAE,GACjD,CAAW,EACDT,EAAa,KAAK,CAChB,MAAO,cAAcS,EAAQ,EAAE,GAAG,KAClC,OAAQA,EAAQ,CAAC,EAAE,MAAQA,EAAQ,EAAE,GACjD,CAAW,EACDT,EAAa,KAAK,CAChB,MAAO,cAAcS,EAAQ,EAAE,GAAG,KAClC,OAAQA,EAAQ,CAAC,EAAE,MAAQA,EAAQ,EAAE,GACjD,CAAW,EACD,KACD,CACD,IAAK,GAAG,CACN,MAAMP,EAAe,CAAE,EACjBuB,EAAmB,CAAE,EACrBtB,EAAQC,EACZ,CACE,EAAG,kBACH,EAAG,oBACH,EAAG,IACH,GAAI,sBACJ,GAAI,sBACJ,KAAM,yCACP,CACF,EACKO,EAAKP,EACT,CACE,EAAG,iBACH,EAAG,iBACH,KAAM,4CACP,CACF,EACKC,EAAIC,EAAM,EAAG,CAAC,EACdC,EAAUnC,EAAeoC,EAAWhC,EAAS8B,EAAM,EAAG,CAAC,EAAGD,EAAGF,EAAM,CAAC,EAAGE,EAAGF,EAAM,EAAE,EAAG,CAAE,EAAGA,EAAM,EAAG,EAAGA,EAAM,EAAG,EAC/GM,EAAUrC,EAAeoC,EAAWhC,EAAS8B,EAAM,EAAG,CAAC,EAAGD,EAAGF,EAAM,EAAI,GAAG,EAAGE,EAAGF,EAAM,EAAE,EAAG,CAAE,EAAGA,EAAM,EAAG,EAAGA,EAAM,CAAC,CAAE,EACrHuC,EAAa5E,EAAS,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAG,CAAC,EAC7DyC,EAAQ,EAAE,IAAMmC,EAAW,CAAC,EAC5BjC,EAAQ,EAAE,IAAMiC,EAAW,CAAC,EAC5B,MAAMC,EAAiB7E,EAAS,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAG,CAAC,EACjEyC,EAAQ,EAAE,IAAMoC,EAAe,CAAC,EAChCpC,EAAQ,EAAE,IAAMoC,EAAe,CAAC,EAChCpC,EAAQ,EAAE,IAAMoC,EAAe,CAAC,EAChCpC,EAAQ,GAAG,IAAME,EAAQ,EAAE,IAC3BA,EAAQ,EAAE,IAAMkC,EAAe,CAAC,EAChClC,EAAQ,EAAE,IAAMkC,EAAe,CAAC,EAChClC,EAAQ,GAAG,IAAMkC,EAAe,CAAC,EACjClC,EAAQ,EAAE,IAAMF,EAAQ,EAAE,IACP,CAAC,MAAM,MAAM,GAAG,EAAG,QAAQ,MAAM,GAAG,EAAG,SAAS,MAAM,GAAG,EAAG,SAAS,MAAM,GAAG,CAAC,EACvF,QAAQ,SAAUvC,EAAG6B,EAAG,CACjCU,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAAEV,CAAC,CAAC,EAAE,IAAM,GACvCY,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAAEZ,CAAC,CAAC,EAAE,IAAM,GACvC,QAAS+C,EAAI,EAAGA,EAAI,EAAGA,IACrBrC,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAAEV,CAAC,CAAC,EAAE,KAAOU,EAAQvC,EAAE4E,CAAC,CAAC,EAAE,IACtDnC,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAAEZ,CAAC,CAAC,EAAE,KAAOY,EAAQzC,EAAE4E,CAAC,CAAC,EAAE,GAEpE,CAAW,EACG,KAAK,IAAIzC,EAAM,CAAC,EAAI,KACtBI,EAAQ,EAAE,cAAgB,OAC1BA,EAAQ,EAAE,cAAgB,QAExB,KAAK,IAAIJ,EAAM,CAAC,EAAI,KACtBM,EAAQ,EAAE,cAAgB,OAC1BA,EAAQ,EAAE,cAAgB,QAExB,KAAK,IAAIN,EAAM,CAAC,EAAI,KACtBI,EAAQ,EAAE,cAAgB,OAC1BE,EAAQ,GAAG,cAAgB,QAE7B,UAAWZ,IAAK,CAAC,IAAK,IAAK,IAAK,GAAG,EACjCU,EAAQV,CAAC,EAAE,qBAAuBH,EAAQ,MAAQ,GAAKgB,EAAmB,MAAM,EAChFH,EAAQV,CAAC,EAAE,qBAAuB,GAClCY,EAAQZ,CAAC,EAAE,qBAAuBH,EAAQ,MAAQ,GAAKgB,EAAmB,MAAM,EAChFD,EAAQZ,CAAC,EAAE,qBAAuB,GAEpC,MAAMgB,EAAI,CAAC,IAAK,IAAK,IAAK,GAAG,EAAE,SAASF,EAAG,CAAC,CAAC,EACvC,EAAI,CAAC,IAAK,IAAK,IAAK,GAAG,EAAE,SAASA,EAAG,CAAC,CAAC,EACvCe,EAAUd,EAAO,CAACe,GAAW,CAAC,GAAI,GAAI,EAAG,CAAC,CAAC,EAAG,CAAC,CAAC,EACtDpB,EAAQ,OAASnB,GAAce,EAAM,EAAIA,EAAM,GAAK,IAAMuB,EAAW,IAAKnB,EAAQ,EAAGA,EAAQ,EAAGJ,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,EACrII,EAAQ,OAASnB,GAAa,KAAOe,EAAM,EAAIA,EAAM,GAAKuB,GAAW,IAAM,IAAKnB,EAAQ,EAAGA,EAAQ,EAAG,KAAOJ,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,EACnJI,EAAQ,OAASnB,GAAae,EAAM,EAAIA,EAAM,EAAIuB,GAAW,IAAM,IAAKnB,EAAQ,EAAGA,EAAQ,GAAIJ,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,EACpII,EAAQ,OAASnB,GAAa,KAAOe,EAAM,EAAIA,EAAM,GAAKuB,GAAW,IAAM,IAAKnB,EAAQ,GAAIA,EAAQ,EAAG,KAAOJ,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,EACpJM,EAAQ,OAASrB,GAAce,EAAM,EAAIA,EAAM,GAAK,IAAO,IAAKM,EAAQ,EAAGA,EAAQ,EAAGN,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,EAC3HM,EAAQ,OAASrB,GAAa,KAAOe,EAAM,EAAIA,EAAM,IAAM,IAAM,IAAKM,EAAQ,EAAGA,EAAQ,EAAG,KAAON,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,EACzIM,EAAQ,OAASrB,GAAae,EAAM,EAAIA,EAAM,GAAK,IAAM,IAAKM,EAAQ,EAAGA,EAAQ,GAAIN,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,EAC1HM,EAAQ,OAASrB,GAAa,KAAOe,EAAM,EAAIA,EAAM,IAAM,IAAM,IAAKM,EAAQ,GAAIA,EAAQ,EAAG,KAAON,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,EAC1ID,EAAa,KACXK,EAAQM,CAAC,EACTN,EAAQ,GACRA,EAAQ,GACRE,EAAQ,CAAC,EACTA,EAAQ,GACRA,EAAQ,GACRF,EAAQ,QAAUM,CAAC,EACnBJ,EAAQ,QAAU,CAAC,EACnBoC,EAAWtC,EAAQ,CAAC,EACpBsC,EAAWtC,EAAQ,CAAC,EACpBsC,EAAWtC,EAAQ,CAAC,EACpBsC,EAAWpC,EAAQ,CAAC,EACpBoC,EAAWpC,EAAQ,CAAC,EACpBoC,EAAWpC,EAAQ,EAAE,EACrBoC,EAAWtC,EAAQ,CAAC,EACpBsC,EAAWpC,EAAQ,CAAC,CACrB,EACDP,EAAa,QAAQgB,GAAS,CAC5BO,EAAiB,KAAKP,CAAK,CACvC,CAAW,EACD,IAAIU,EAAQC,EAUZ,OATAtB,EAAQM,CAAC,EAAE,qBAAuBnB,EAAQ,MAAQ,GAAKgB,EAAmB,KAAK,EAC/EH,EAAQ,OAAO,MAAQ,MACvBA,EAAQ,OAAO,MAAQ,MACvBA,EAAQ,OAAO,MAAQ,MACvBA,EAAQ,OAAO,MAAQ,MACvBE,EAAQ,OAAO,MAAQ,OACvBA,EAAQ,OAAO,MAAQ,OACvBA,EAAQ,OAAO,MAAQ,OACvBA,EAAQ,OAAO,MAAQ,OACfI,EAAI,EAAC,CACX,IAAK,KACL,IAAK,KACHJ,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClH,MACF,IAAK,KACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACT,MACF,IAAK,KACHnB,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClH,MACF,IAAK,KACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClH,MACF,IAAK,QACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACT,MACF,IAAK,KACL,IAAK,KACHnB,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,qBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClH,MACF,IAAK,KACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,qBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClH,MACF,IAAK,KACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDoB,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHmB,EAAS,qBACT,KACH,CAED,MAAMb,EAAeC,EAAa,CAChC,GAAG,OAAO,KAAKT,CAAO,EAAE,IAAIU,GAAgBV,EAAQU,CAAG,CAAG,EAC1D,GAAG,OAAO,KAAKR,CAAO,EAAE,IAAIQ,GAAgBR,EAAQQ,CAAG,CAAG,CACtE,CAAW,EACD,IAAIE,EAAQ,mBAAmBZ,EAAQ,EAAE,GAAG,GAAGA,EAAQ,EAAE,GAAG,YAAYE,EAAQ,EAAE,GAAG,GAAGA,EAAQ,EAAE,GAAG,mBACjGsB,EAAMC,EACNN,IAAY,GACdM,EAAQ,UACRD,EAAO,YAEPC,EAAQ,MACRD,EAAO,OAET,MAAMgB,EAAmBnB,IAAW,qBAAuBnB,EAAQI,CAAC,EAAE,IAAMA,IAAM,IAAMJ,EAAQ,EAAE,IAAMA,EAAQ,EAAE,IAC5Gc,EAAYC,EAAW,OAAO,OAAO,CAAE,MAAO,EAAK,EAAET,CAAY,EAAGU,CAAgB,EAAI,OAAO;AAAA;AAAA,YAEnGI,IAAY,OAAYA,EAAU,OAAO,2BAA2BpB,EAAQI,CAAC,EAAE,GAAG,oBAAoBJ,EAAQ,CAAC,EAAE,GAAG,qFAAqF;AAAA;AAAA,6BAExLqB,EAAe,aAAevB,EAAQM,CAAC,EAAE,IAAM,IAAK,KAAK,CAAC,SAASiB,EAAe,aAAeiB,EAAmB,IAAK,OAAO,CAAC,UAAUnB,CAAM,IAAIK,EAAUD,EAAQ,sBAAsB,CAAC;AAAA;AAAA,+BAE5LzB,EAAQ,EAAE,GAAG,GAAGA,EAAQ,EAAE,GAAG,WAAWE,EAAQ,EAAE,GAAG,GAAGA,EAAQ,EAAE,GAAG,MAAMa,EAAqBS,EAAO,WAAW,CAAC;AAAA,YAExIZ,GAASK,EAAW,OAAO,OAAO,CAAE,MAAO,EAAK,EAAET,CAAY,EAAGb,CAAY,EAC7EJ,EAAW,CAAE,MAAAqB,EAAO,UAAAI,CAAW,EAC/BvB,EAAa,KAAK,CAChB,MAAO,MACP,OAAQ0B,IAAY,CAChC,CAAW,EACD1B,EAAa,KAAK,CAChB,MAAO,KACP,OAAQ0B,IAAY,CAChC,CAAW,EACD,KACD,CACD,IAAK,GAAG,CACN,MAAMxB,EAAe,CAAE,EACjBuB,EAAmB,CAAE,EACrBtB,EAAQC,EACZ,CACE,EAAG,kBACH,EAAG,oBACH,EAAG,IACH,GAAI,sBACJ,GAAI,sBACJ,KAAM,yCACP,CACF,EACKO,EAAKP,EACT,CACE,EAAG,iBACH,EAAG,iBACH,KAAM,4CACP,CACF,EACKC,EAAIC,EAAM,EAAG,CAAC,EACdC,EAAUnC,EAAeoC,EAAWhC,EAAS8B,EAAM,EAAG,CAAC,EAAGD,EAAGF,EAAM,CAAC,EAAGE,EAAGF,EAAM,EAAE,EAAG,CAAE,EAAGA,EAAM,EAAG,EAAGA,EAAM,EAAG,EAC/GM,EAAUrC,EAAeoC,EAAWhC,EAAS8B,EAAM,EAAG,CAAC,EAAGD,EAAGF,EAAM,EAAI,GAAG,EAAGE,EAAGF,EAAM,EAAE,EAAG,CAAE,EAAGA,EAAM,EAAG,EAAGA,EAAM,CAAC,CAAE,EACrHuC,EAAa5E,EAAS,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAG,CAAC,EAC7DyC,EAAQ,EAAE,IAAMmC,EAAW,CAAC,EAC5BjC,EAAQ,EAAE,IAAMiC,EAAW,CAAC,EAC5B,MAAMC,EAAiB7E,EAAS,CAAC,IAAK,IAAK,IAAK,IAAK,IAAK,GAAG,EAAG,CAAC,EACjEyC,EAAQ,EAAE,IAAMoC,EAAe,CAAC,EAChCpC,EAAQ,EAAE,IAAMoC,EAAe,CAAC,EAChCpC,EAAQ,EAAE,IAAMoC,EAAe,CAAC,EAChCpC,EAAQ,GAAG,IAAME,EAAQ,EAAE,IAC3BA,EAAQ,EAAE,IAAMkC,EAAe,CAAC,EAChClC,EAAQ,EAAE,IAAMkC,EAAe,CAAC,EAChClC,EAAQ,GAAG,IAAMkC,EAAe,CAAC,EACjClC,EAAQ,EAAE,IAAMF,EAAQ,EAAE,IACP,CAAC,MAAM,MAAM,GAAG,EAAG,QAAQ,MAAM,GAAG,EAAG,SAAS,MAAM,GAAG,EAAG,SAAS,MAAM,GAAG,CAAC,EACvF,QAAQ,SAAUvC,EAAG6B,EAAG,CACjCU,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAAEV,CAAC,CAAC,EAAE,IAAM,GACvCY,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAAEZ,CAAC,CAAC,EAAE,IAAM,GACvC,QAAS+C,EAAI,EAAGA,EAAI,EAAGA,IACrBrC,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAAEV,CAAC,CAAC,EAAE,KAAOU,EAAQvC,EAAE4E,CAAC,CAAC,EAAE,IACtDnC,EAAQ,CAAC,IAAK,IAAK,IAAK,GAAG,EAAEZ,CAAC,CAAC,EAAE,KAAOY,EAAQzC,EAAE4E,CAAC,CAAC,EAAE,GAEpE,CAAW,EACG,KAAK,IAAIzC,EAAM,CAAC,EAAI,KACtBI,EAAQ,EAAE,cAAgB,OAC1BA,EAAQ,EAAE,cAAgB,QAExB,KAAK,IAAIJ,EAAM,CAAC,EAAI,KACtBM,EAAQ,EAAE,cAAgB,OAC1BA,EAAQ,EAAE,cAAgB,QAExB,KAAK,IAAIN,EAAM,CAAC,EAAI,KACtBI,EAAQ,EAAE,cAAgB,OAC1BE,EAAQ,GAAG,cAAgB,QAE7B,UAAWZ,IAAK,CAAC,IAAK,IAAK,IAAK,GAAG,EACjCU,EAAQV,CAAC,EAAE,qBAAuBH,EAAQ,MAAQ,GAAKgB,EAAmB,MAAM,EAChFH,EAAQV,CAAC,EAAE,qBAAuB,GAClCY,EAAQZ,CAAC,EAAE,qBAAuBH,EAAQ,MAAQ,GAAKgB,EAAmB,MAAM,EAChFD,EAAQZ,CAAC,EAAE,qBAAuB,GAEpC,MAAMgB,EAAI,CAAC,IAAK,IAAK,IAAK,GAAG,EAAE,SAASF,EAAG,CAAC,CAAC,EACvC,EAAI,CAAC,IAAK,IAAK,IAAK,GAAG,EAAE,SAASA,EAAG,CAAC,CAAC,EACvCe,EAAU,EAChBnB,EAAQ,OAASnB,GAAce,EAAM,EAAIA,EAAM,GAAK,IAAMuB,EAAW,IAAKnB,EAAQ,EAAGA,EAAQ,EAAGJ,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,EACrII,EAAQ,OAASnB,GAAa,KAAOe,EAAM,EAAIA,EAAM,GAAKuB,GAAW,IAAM,IAAKnB,EAAQ,EAAGA,EAAQ,EAAG,KAAOJ,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,EACnJI,EAAQ,OAASnB,GAAae,EAAM,EAAIA,EAAM,EAAIuB,GAAW,IAAM,IAAKnB,EAAQ,EAAGA,EAAQ,GAAIJ,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,EACpII,EAAQ,OAASnB,GAAa,KAAOe,EAAM,EAAIA,EAAM,GAAKuB,GAAW,IAAM,IAAKnB,EAAQ,GAAIA,EAAQ,EAAG,KAAOJ,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,EACpJM,EAAQ,OAASrB,GAAce,EAAM,EAAIA,EAAM,GAAK,IAAO,IAAKM,EAAQ,EAAGA,EAAQ,EAAGN,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,EAC3HM,EAAQ,OAASrB,GAAa,KAAOe,EAAM,EAAIA,EAAM,IAAM,IAAM,IAAKM,EAAQ,EAAGA,EAAQ,EAAG,KAAON,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,EACzIM,EAAQ,OAASrB,GAAae,EAAM,EAAIA,EAAM,GAAK,IAAM,IAAKM,EAAQ,EAAGA,EAAQ,GAAIN,EAAM,EAAIA,EAAM,EAAG,QAAS,GAAK,EAAI,EAC1HM,EAAQ,OAASrB,GAAa,KAAOe,EAAM,EAAIA,EAAM,IAAM,IAAM,IAAKM,EAAQ,GAAIA,EAAQ,EAAG,KAAON,EAAM,EAAIA,EAAM,GAAI,QAAS,GAAK,EAAI,EAC1ID,EAAa,KACXK,EAAQM,CAAC,EACTN,EAAQ,GACRA,EAAQ,GACRE,EAAQ,GACRA,EAAQ,GACRF,EAAQ,QAAUM,CAAC,EACnBgC,EAAWtC,EAAQ,CAAC,EACpBsC,EAAWtC,EAAQ,CAAC,EACpBsC,EAAWtC,EAAQ,CAAC,EACpBsC,EAAWpC,EAAQ,CAAC,EACpBoC,EAAWpC,EAAQ,CAAC,EACpBoC,EAAWpC,EAAQ,EAAE,EACrBoC,EAAWtC,EAAQ,CAAC,EACpBsC,EAAWpC,EAAQ,CAAC,CAErB,EACDP,EAAa,QAAQgB,GAAS,CAC5BO,EAAiB,KAAKP,CAAK,CACvC,CAAW,EACDO,EAAiB,KAAKhB,EAAQ,QAAU,CAAC,CAAC,EAC1CgB,EAAiB,KAAKhB,EAAQ,CAAC,CAAC,EAChC,IAAImB,EAAQC,EAASK,EAWrB,OAVA3B,EAAQM,CAAC,EAAE,qBAAuBnB,EAAQ,MAAQ,GAAKgB,EAAmB,KAAK,EAC/EH,EAAQ,OAAO,MAAQ,MACvBA,EAAQ,OAAO,MAAQ,MACvBA,EAAQ,OAAO,MAAQ,MACvBA,EAAQ,OAAO,MAAQ,MACvBE,EAAQ,OAAO,MAAQ,OACvBA,EAAQ,OAAO,MAAQ,OACvBA,EAAQ,OAAO,MAAQ,OACvBA,EAAQ,OAAO,MAAQ,OAEfI,EAAI,EAAC,CACX,IAAK,KACHJ,EAAQI,CAAC,EAAE,qBAAuBnB,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EACjFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHyB,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,KACHA,EAAQI,CAAC,EAAE,qBAAuBnB,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EACjFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTM,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,KACHA,EAAQI,CAAC,EAAE,qBAAuBnB,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EACjFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHyB,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,KACHA,EAAQI,CAAC,EAAE,qBAAuBnB,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EACjFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHyB,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,KACHA,EAAQI,CAAC,EAAE,qBAAuBnB,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EACjFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHyB,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,QACHA,EAAQI,CAAC,EAAE,qBAAuBnB,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EACjFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,iBACTM,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,KACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,qBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHyB,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,KACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,qBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHyB,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,KACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDmB,EAAS,qBACTC,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHyB,EAASzB,EAAQ,OAAO,MACxB,MACF,IAAK,KACHA,EAAQ,EAAE,qBAAuBf,EAAQ,MAAQ,GAAKgB,EAAmB,OAAO,EAChFD,EAAQ,OAAe,MAAQ,QAC/BgB,EAAiB,KAAKhB,EAAQ,OAAgBA,EAAQ,CAAC,EACvDoB,EAAU,SAASC,EAAerB,EAAQ,OAAO,MAAO,MAAM,CAAC,MAAMqB,EAAerB,EAAQ,OAAO,MAAO,OAAO,CAAC,IAClHmB,EAAS,qBACTM,EAASzB,EAAQ,OAAO,MACxB,KACH,CACD,MAAMM,EAAeC,EAAa,CAChC,GAAG,OAAO,KAAKT,CAAO,EAAE,IAAIU,GAAgBV,EAAQU,CAAG,CAAG,EAC1D,GAAG,OAAO,KAAKR,CAAO,EAAE,IAAIQ,GAAgBR,EAAQQ,CAAG,CAAG,CACtE,CAAW,EACD,IAAIE,EAAQ,OAAO;AAAA,sCACSZ,EAAQ,EAAE,GAAG,GAAGA,EAAQ,EAAE,GAAG,WAAWE,EAAQ,EAAE,GAAG,GAAGA,EAAQ,EAAE,GAAG,iEAAiEA,EAAQ,CAAC,EAAE,GAAG;AAAA,YAEhL,MAAMsC,EAAmBnB,IAAW,qBAAuBnB,EAAQI,CAAC,EAAE,IAAMA,IAAM,IAAMJ,EAAQ,EAAE,IAAMA,EAAQ,EAAE,IAC5Gc,EAAYC,EAAW,OAAO,OAAO,CAAE,MAAO,EAAK,EAAET,CAAY,EAAGU,CAAgB,EAAI,OAAO;AAAA;AAAA,wBAEvFK,EAAe,aAAevB,EAAQM,CAAC,EAAE,IAAM,IAAK,KAAK,CAAC,SAASiB,EAAe,aAAeiB,EAAmB,IAAK,OAAO,CAAC,UAAUd,EAAUL,CAAM,CAAC,8BAA8BK,EAAU,UAAU,CAAC;AAAA;AAAA,0BAE7MA,EAAU,qBAAqB,CAAC;AAAA;AAAA,YAE9CJ,IAAY,OAAYA,EAAU,OAAO,4BAA4BpB,EAAQI,CAAC,EAAE,GAAG,oBAAoBJ,EAAQ,CAAC,EAAE,GAAG,8EAA8E;AAAA;AAAA,0BAErLqB,EAAe,aAAerB,EAAQ,CAAC,EAAE,IAAM,IAAK,MAAM,CAAC,aAAaqB,EAAeI,CAAM,CAAC;AAAA,YAE9Gf,GAASK,EAAW,OAAO,OAAO,CAAE,MAAO,EAAK,EAAET,CAAY,EAAGb,CAAY,EAC7EJ,EAAW,CAAE,MAAAqB,EAAO,UAAAI,CAAW,EAC/B,MAAMY,EAAY,OAAOD,EAAO,MAAM,EAAGA,EAAO,OAAS,CAAC,CAAC,EACrDE,EAA0B,IAAMD,EAChCE,EAAoB,KAAK,MAAMF,EAAY,EAAE,EAC7CG,EAAoBH,EAAY,GAChCI,EAAiBJ,EAAY,KAAO,EAAIA,EAAYvB,EAAO,CAAC,GAAI,CAAC,CAAC,EAAI4B,GAAQ,EAAG,CAAC,EAAKH,EAAoB,IAAO,GAAKC,GACvHG,GAA4B,IAAMF,EACxCvC,EAAa,KAAK,CAChB,MAAOkC,EACP,OAAQ,EACpB,CAAW,EACDlC,EAAa,KAAK,CAChB,MAAOoC,EAAwB,SAAQ,EAAK,IAC5C,OAAQ,EACpB,CAAW,EACDpC,EAAa,KAAK,CAChB,MAAOuC,EAAe,SAAQ,EAAK,IACnC,OAAQ,EACpB,CAAW,EACDvC,EAAa,KAAK,CAChB,MAAOyC,GAA0B,SAAQ,EAAK,IAC9C,OAAQ,EACpB,CAAW,EACDxC,EAAU,CAAE,QAAS,EAAO,EAC5B,KACD,CACF,CAED,GAAI,KAAK,oBAAoBJ,EAAGC,EAAS,KAAK,EAAG,CAC3CJ,EAAQ,MACV,KAAK,eAAeG,CAAC,EAAI,CACvB,OAAQ,GACR,QAAS,CAAE,gBAAiB,GAAM,mBAAoB,EAAM,EAC5D,aAAc,CACZ,CACE,KAAM,UACN,aAAc,CACZ,CACE,MAAO,GACP,mBAAoB,GACpB,OAASF,EAAUE,CAAC,EAAI,GAAOF,EAAUE,CAAC,EAAI,EAAK,EAAI,EACvD,SAAU,GAEV,OAAQC,EAAS,KAClB,CACF,CACF,CACF,CACF,EAED,KAAK,eAAeD,CAAC,EAAI,CACvB,OAAQC,EAAS,MACjB,aAAAE,EACA,QAAAC,CACD,EAEH,MAAM+C,EAASC,GAAgB,KAAMpD,CAAC,EAClC,KAAK,aACPC,EAAS,MAAQA,EAAS,MAAQkD,EAAO,OAE3C,KAAK,eAAe,KAAKlD,EAAS,KAAK,EACvC,KAAK,iBAAiB,KAAKA,EAAS,SAAS,EAC7CD,GACD,CACDE,GACD,CACDmD,GAAwB,IAAI,CAC7B,CACH"}