@mostajs/prononciation 0.0.0-stage → 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/CHANGELOG.md ADDED
@@ -0,0 +1,22 @@
1
+ # Changelog — @mostajs/prononciation
2
+
3
+ **Auteur** : Dr Hamid MADANI <drmdh@msn.com>
4
+ Format : Keep a Changelog ; versions : SemVer.
5
+
6
+ ## [0.1.0] — 2026-10-25
7
+
8
+ ### Ajouté
9
+ - `createPrononciation({ lexique, reconnaisseur, note?, seuils?, regle?, limites? })`, avec `evaluer({ texte, audio })` et `attendus(texte)`.
10
+ - Lexiques : `creerLexique` (IPA ou ARPAbet), `lexiqueCmudict`, `combinerLexiques` ; `arpaVersIpa`, `motsDe`.
11
+ - Alignement `aligner` : états juste, faux, omis ; sons en face ; insertions. Règles `stricte-2` et `tolerante-2`, et `normaliserJetons` pour les sorties d'espeak. Parité avec l'aligneur Python mesuré, sur 600 cas.
12
+ - Note simple, et note apprise `NOTE_APPRISE_1` : réseau 64-64-1 par son, ridge par phrase. Parité avec Python à 10⁻³ près. Seuils par défaut : 7,5, 1,5 et 1,5.
13
+ - `resistances(resultats, { minEssais })`.
14
+ - Adaptateurs `reconnaisseurFixe` et `reconnaisseurHttp` (contrat HTTP fixé).
15
+ - `ErreurPrononciation`, `CODES`, `LIBELLES` : huit codes nommés.
16
+ - Bornes : taille de l'audio et nombre de mots.
17
+ - Exemple de vérification `examples/verifier.mjs` : trois phrases de speechocean762.
18
+
19
+ ### Points ouverts
20
+ - Le service Python de reconnaissance (wav2vec2, traits GOP) est prévu pour la 0.2.0.
21
+ - Les poids sont appris sur des voix chinoises : remesure sur des voix algériennes (lot 0, tâche 0.4).
22
+ - Les renvois `ne_fait_pas` vers `@mostajs/voix`, `prononciation-ui` et `consentement` visent des modules prévus, pas encore créés.
package/LICENSE ADDED
@@ -0,0 +1,15 @@
1
+ @mostajs/prononciation
2
+ Copyright (C) 2026 Dr Hamid MADANI <drmdh@msn.com>
3
+
4
+ This program is free software: you can redistribute it and/or modify it under
5
+ the terms of the GNU Affero General Public License as published by the Free
6
+ Software Foundation, either version 3 of the License, or (at your option) any
7
+ later version.
8
+
9
+ This program is distributed in the hope that it will be useful, but WITHOUT
10
+ ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
11
+ FOR A PARTICULAR PURPOSE. See the GNU Affero General Public License for more
12
+ details.
13
+
14
+ You should have received a copy of the GNU Affero General Public License
15
+ along with this program. If not, see <https://www.gnu.org/licenses/agpl-3.0.html>.
package/README.md CHANGED
@@ -1,3 +1,70 @@
1
- # Temporary Holding Version
1
+ # @mostajs/prononciation
2
2
 
3
- This version is a temporary placeholder for this package. An operational version to replace this has been submitted for review and is awaiting a staged release.
3
+ **Auteur** : Dr Hamid MADANI <drmdh@msn.com> · AGPL-3.0-or-later · zéro dépendance · Node ≥ 18
4
+
5
+ Ce module dit si une voix a prononcé un texte connu, et où elle s'en écarte, son par son. Il fournit :
6
+ - une note par son, par mot et par phrase ;
7
+ - un verdict au seuil ;
8
+ - la liste des sons qui résistent dans une classe.
9
+
10
+ ## Installer
11
+
12
+ ```bash
13
+ npm install @mostajs/prononciation
14
+ ```
15
+
16
+ ## Exemple minimal
17
+
18
+ ```js
19
+ import { createPrononciation, lexiqueCmudict, combinerLexiques, creerLexique,
20
+ reconnaisseurHttp, NOTE_APPRISE_1, resistances } from '@mostajs/prononciation';
21
+ import { readFileSync } from 'node:fs';
22
+
23
+ const p = createPrononciation({
24
+ lexique: combinerLexiques(creerLexique({ BOUMERDES: 'b u m ɛ ɹ d ɛ s' }),
25
+ lexiqueCmudict(readFileSync('cmudict.dict', 'utf8'))),
26
+ reconnaisseur: reconnaisseurHttp({ url: 'http://127.0.0.1:8765/reconnaitre' }),
27
+ note: NOTE_APPRISE_1,
28
+ });
29
+
30
+ const r = await p.evaluer({ texte: 'I would like a cup of tea.', audio }); // audio : Uint8Array
31
+ r.verdict; // 'accepte' | 'a-reprendre'
32
+ r.mots.filter((m) => m.etat === 'a-reprendre'); // les mots à reprendre, avec leurs sons
33
+ resistances(resultatsDeLaClasse, { minEssais: 3 }); // [{ phoneme: 'θ', essais, echecs, taux }, …]
34
+ ```
35
+
36
+ Sans `note`, le module emploie la **note simple**, c'est-à-dire la part des sons retrouvés. Le résultat dit toujours le `mode` utilisé.
37
+
38
+ ## Ce qu'on injecte
39
+
40
+ | port | forme | fourni par |
41
+ |---|---|---|
42
+ | `lexique` | `{ phonemes(mot) → string[] \| null }` | `creerLexique`, `lexiqueCmudict` (fichier BSD-2 fourni par l'application), `combinerLexiques` |
43
+ | `reconnaisseur` | `{ reconnaitre({ audio, attendus }) → { entendus, traits?, duree? } }` | `reconnaisseurHttp` (service de reconnaissance local), `reconnaisseurFixe` (essais) |
44
+
45
+ ## Ce que vaut la note
46
+
47
+ Mesures sur la partie test de speechocean762, faite de 2 500 phrases et de locuteurs absents de l'apprentissage (Pearson avec la note des juges) :
48
+
49
+ | | note simple | note apprise | GOPT (ICASSP 2022) |
50
+ |---|---|---|---|
51
+ | phrase | 0,54 | **0,72** | 0,714 |
52
+ | mot | — | **0,54** | 0,533 |
53
+ | son | 0,35 | **0,56** | 0,612 |
54
+
55
+ Les poids sont appris sur des voix d'apprenants chinois. Il faut les remesurer sur la population servie.
56
+
57
+ ## Vérifier
58
+
59
+ ```bash
60
+ npm test # 22 essais (mjs-unit), parité JS ↔ Python comprise
61
+ node examples/verifier.mjs # trois vraies phrases, par le vrai adaptateur HTTP
62
+ ```
63
+
64
+ ## Attribution
65
+
66
+ Les poids `note-apprise-1` sont appris sur **speechocean762** (Zhang et al., 2021), sous licence CC BY 4.0 : https://www.openslr.org/101. Le modèle acoustique visé est `facebook/wav2vec2-lv-60-espeak-cv-ft` (Apache-2.0).
67
+
68
+ ## Référence
69
+
70
+ L'API complète est dans `llms.txt`.
package/llms.txt ADDED
@@ -0,0 +1,68 @@
1
+ # @mostajs/prononciation 0.1.0 — fiche LLM
2
+ # Auteur : Dr Hamid MADANI <drmdh@msn.com> · AGPL-3.0-or-later · N1 générique, forme moteur, zéro dépendance
3
+
4
+ RÔLE
5
+ Comparer une voix à un texte CONNU. Le module :
6
+ - tire du texte les sons attendus (lexique injecté) ;
7
+ - obtient du reconnaisseur injecté les sons entendus, et éventuellement les traits GOP ;
8
+ - aligne les deux suites ;
9
+ - note chaque son (0-2), chaque mot (0-2) et la phrase (0-10) ;
10
+ - rend un verdict au seuil ;
11
+ - agrège les sons qui résistent.
12
+ Le module ne garde rien : pas de dépôt, pas de table, pas d'audio.
13
+
14
+ QUESTION
15
+ Cette phrase a-t-elle été bien dite, et quel son faut-il reprendre ?
16
+
17
+ EXPORTS (src/index.js)
18
+ createPrononciation({ lexique, reconnaisseur, note?, seuils?, regle?, limites? }) → { evaluer, attendus, seuils, regle, mode }
19
+ evaluer({ texte, audio }) → Promise<Resultat> attendus(texte) → [{ mot, phonemes }]
20
+ creerLexique(table) table { MOT: 'k ʌ p' | 'K AH1 P' | ['k','ʌ','p'] } ; IPA ou ARPAbet détecté
21
+ lexiqueCmudict(texte) texte du fichier CMUdict (BSD-2), fourni par l'application ; 1re variante gardée
22
+ combinerLexiques(...lexiques) le premier qui connaît le mot l'emporte (mots de l'enseignant d'abord)
23
+ arpaVersIpa('AH0') → 'ʌ0' normaliserJetons(jetons espeak) → classes egal(attendu, entendu, regle)
24
+ motsDe(texte) → ['I\'D', 'LIKE', …]
25
+ aligner(attendus, entendus, { regle }) → { etats, entendus (en face, null si omis), insertions [{ apres, entendu }] }
26
+ appliquerNote(note, { phonemes, etats, traits, nEntendus, duree }) → { notes (brutes), note (brute) }
27
+ noteSimple(etats) validerNote(note)
28
+ resistances(resultats, { minEssais }) → [{ phoneme, essais, echecs, taux }] trié
29
+ reconnaisseurFixe(reponse | ({ audio, attendus }) => reponse) — essais
30
+ reconnaisseurHttp({ url, fetch?, delaiMs = 15000, type? }) — client du service de reconnaissance
31
+ NOTE_APPRISE_1 (aussi '@mostajs/prononciation/poids/note-apprise-1') ErreurPrononciation, CODES, LIBELLES
32
+ ARPA, PHONEMES (39 classes), REGLES ['stricte-2', 'tolerante-2']
33
+
34
+ TYPES
35
+ Resultat = { verdict: 'accepte'|'a-reprendre', note: 0-10, mode: 'apprise'|'simple', regle, seuils, poids?,
36
+ mots: [{ mot, note: 0-2, etat: 'juste'|'a-reprendre', insertions: string[],
37
+ phonemes: [{ attendu, entendu|null, note: 0-2, etat: 'juste'|'faux'|'omis', aReprendre }] }],
38
+ attendus, entendus, duree? }
39
+ Port lexique { phonemes(mot) → string[] | null } (sons IPA ; suffixe 0 = non accentué, AH0/IY0)
40
+ Port reconnaisseur { reconnaitre({ audio, attendus }) → Promise<{ entendus: string[], traits?: number[8][], duree?: s }> }
41
+ traits par son ATTENDU : gop_moy, gop_max, fenetre_max, lpr_moy, lpr_max, duree (trames), fenetre (trames), blanc_moy
42
+ Contrat HTTP : POST <url>, corps = octets de l'audio ; en-tête x-attendus = encodeURIComponent(JSON des sons attendus) ;
43
+ réponse 200 JSON { entendus, traits?, duree? }.
44
+
45
+ NOTES ET SEUILS
46
+ - Simple (aucune note configurée) : son = 2 si retrouvé, sinon 0 ; phrase = 10 × part retrouvée. Seuils : phrase 6, mot 1, son 1.
47
+ - Apprise (note: NOTE_APPRISE_1) :
48
+ - par son, traits + état glouton + identité du son → réseau 64-64-1 ;
49
+ - par phrase, 9 agrégats → ridge ;
50
+ - seuils : phrase 7,5 ; mot 1,5 ; son 1,5.
51
+ Accord avec les juges sur la partie test de speechocean762 : phrase 0,72, mot 0,54, son 0,56 (GOPT publié : 0,714, 0,533, 0,612).
52
+ - Un mot est « a-reprendre » si la moyenne de ses sons est sous seuils.mot ; un son est aReprendre sous seuils.phoneme.
53
+
54
+ ERREURS (R-I) — ErreurPrononciation { code, statut }
55
+ CONFIGURATION 400 · TEXTE_VIDE 400 · TEXTE_TROP_LONG 413 · MOT_INCONNU 422 (e.mots : tous les inconnus)
56
+ AUDIO_ABSENT 400 · AUDIO_TROP_LONG 413 · RECONNAISSEUR 502 · TRAITS 502
57
+
58
+ PIÈGES
59
+ - Note apprise sans traits ni durée → TRAITS. Il n'y a JAMAIS de repli silencieux sur la note simple : lire r.mode.
60
+ - Les poids note-apprise-1 sont appris sur des voix CHINOISES (speechocean762) : à remesurer sur la population servie.
61
+ - Les sons entendus doivent être des CLASSES (normaliserJetons pour espeak) ; un symbole hors classe compte faux.
62
+ - Bornes par défaut : 480 000 octets d'audio, 40 mots. Les fixer dans limites selon l'enregistreur.
63
+ - Le module n'efface ni ne stocke l'audio : c'est à l'application de le faire.
64
+ - Attribution : les poids dérivent de speechocean762 (CC BY 4.0, https://www.openslr.org/101). Citer le corpus.
65
+
66
+ NE FAIT PAS
67
+ faire entendre une phrase → @mostajs/voix · capter l'audio → @mostajs/media · ranger l'audio → @mostajs/storage
68
+ enregistrer une note → @mostajs/gradebook · écrans → @mostajs/prononciation-ui · consentement → @mostajs/consentement
package/package.json CHANGED
@@ -1,6 +1,73 @@
1
1
  {
2
2
  "name": "@mostajs/prononciation",
3
- "version": "0.0.0-stage",
4
- "stub": true,
5
- "description": "Temporary package placeholder for staged publishing"
6
- }
3
+ "version": "0.1.0",
4
+ "description": "Compare une voix à un texte connu : sons attendus par un lexique injecté, sons entendus par un reconnaisseur injecté, alignement, note par son, mot et phrase (note apprise ou simple), verdict, et les sons qui résistent.",
5
+ "license": "AGPL-3.0-or-later",
6
+ "author": "Dr Hamid MADANI <drmdh@msn.com>",
7
+ "type": "module",
8
+ "main": "src/index.js",
9
+ "exports": {
10
+ ".": "./src/index.js",
11
+ "./poids/note-apprise-1": "./src/poids/note-apprise-1.js"
12
+ },
13
+ "files": [
14
+ "src",
15
+ "llms.txt",
16
+ "README.md",
17
+ "CHANGELOG.md",
18
+ "LICENSE"
19
+ ],
20
+ "engines": {
21
+ "node": ">=18"
22
+ },
23
+ "scripts": {
24
+ "test": "bash test-scripts/run-tests.sh"
25
+ },
26
+ "keywords": [
27
+ "mostajs",
28
+ "prononciation",
29
+ "pronunciation",
30
+ "pronunciation-assessment",
31
+ "goodness-of-pronunciation",
32
+ "gop",
33
+ "phoneme",
34
+ "speech",
35
+ "english",
36
+ "cmudict"
37
+ ],
38
+ "dependencies": {},
39
+ "devDependencies": {
40
+ "@mostajs/mjs-unit": "0.10.0"
41
+ },
42
+ "mostajs": {
43
+ "niveau": "N1",
44
+ "nature": "generique",
45
+ "reutilisabilite": "transverse",
46
+ "depend_de": [],
47
+ "question": "Cette phrase a-t-elle été bien dite, et quel son faut-il reprendre ?",
48
+ "forme": "moteur",
49
+ "entites": [],
50
+ "verbes": [
51
+ "evaluer",
52
+ "attendus",
53
+ "aligner",
54
+ "resistances",
55
+ "creerLexique",
56
+ "lexiqueCmudict",
57
+ "reconnaisseurHttp"
58
+ ],
59
+ "interop": [
60
+ "IPA (Alphabet phonétique international)",
61
+ "ARPAbet / CMUdict",
62
+ "speechocean762 (échelles de notes 0-2 par son, 0-10 par phrase)"
63
+ ],
64
+ "ne_fait_pas": {
65
+ "faire entendre une phrase": "@mostajs/voix",
66
+ "capter l'audio dans le navigateur": "@mostajs/media",
67
+ "ranger l'audio": "@mostajs/storage",
68
+ "enregistrer une note": "@mostajs/gradebook",
69
+ "rendre les écrans": "@mostajs/prononciation-ui",
70
+ "recueillir un consentement": "@mostajs/consentement"
71
+ }
72
+ }
73
+ }
@@ -0,0 +1,12 @@
1
+ // @mostajs/prononciation — reconnaisseur FIXE : rend une réponse donnée, ou calculée des sons attendus. Pour les essais.
2
+ // Author: Dr Hamid MADANI <drmdh@msn.com> · AGPL-3.0-or-later
3
+
4
+ /** @param {object | ((demande: { audio, attendus: string[] }) => object)} reponse */
5
+ export function reconnaisseurFixe(reponse) {
6
+ return Object.freeze({
7
+ nom: 'fixe',
8
+ async reconnaitre({ audio, attendus }) {
9
+ return typeof reponse === 'function' ? reponse({ audio, attendus: [...attendus] }) : { ...reponse };
10
+ },
11
+ });
12
+ }
@@ -0,0 +1,37 @@
1
+ // @mostajs/prononciation — reconnaisseur HTTP : client du service de reconnaissance (wav2vec2, joint en local).
2
+ // Author: Dr Hamid MADANI <drmdh@msn.com> · AGPL-3.0-or-later
3
+ // Contrat (docs/03-PLAN-DEV-PRONONCIATION.md §3.2) : POST <url>, corps = octets de l'audio, en-tête x-attendus = JSON
4
+ // des sons attendus (encodeURIComponent) ; réponse 200 { entendus, traits?, duree? }. L'adaptateur ne fait que traduire (R-L).
5
+ import { ErreurPrononciation, refus } from '../lib/erreurs.js';
6
+
7
+ export function reconnaisseurHttp({ url, fetch: f = globalThis.fetch, delaiMs = 15_000, type = 'application/octet-stream' } = {}) {
8
+ if (typeof url !== 'string' || !/^https?:\/\//.test(url)) refus('CONFIGURATION', 'reconnaisseurHttp : url http(s) attendue');
9
+ if (typeof f !== 'function') refus('CONFIGURATION', 'reconnaisseurHttp : fetch indisponible');
10
+ const echec = (m) => new ErreurPrononciation('RECONNAISSEUR', `reconnaissance : ${m}`);
11
+ return Object.freeze({
12
+ nom: 'http',
13
+ async reconnaitre({ audio, attendus }) {
14
+ const ctl = new AbortController();
15
+ let minuterie;
16
+ const delai = new Promise((_, rej) => { minuterie = setTimeout(() => { ctl.abort(); rej(echec(`délai de ${delaiMs} ms dépassé`)); }, delaiMs); });
17
+ try {
18
+ const rep = await Promise.race([f(url, {
19
+ method: 'POST', body: audio, signal: ctl.signal,
20
+ headers: { 'content-type': audio?.type || type, 'x-attendus': encodeURIComponent(JSON.stringify(attendus)) },
21
+ }), delai]);
22
+ if (!rep?.ok) throw echec(`statut ${rep?.status}`);
23
+ let corps;
24
+ try { corps = await rep.json(); } catch { throw echec('réponse qui n’est pas du JSON'); }
25
+ if (!Array.isArray(corps?.entendus) || !corps.entendus.every((s) => typeof s === 'string')) throw echec('entendus absent ou mal formé');
26
+ const r = { entendus: corps.entendus };
27
+ if (corps.traits !== undefined) r.traits = corps.traits;
28
+ if (corps.duree !== undefined) r.duree = corps.duree;
29
+ return r;
30
+ } catch (e) {
31
+ throw e instanceof ErreurPrononciation ? e : echec(e?.message ?? String(e));
32
+ } finally {
33
+ clearTimeout(minuterie);
34
+ }
35
+ },
36
+ });
37
+ }
package/src/index.js ADDED
@@ -0,0 +1,13 @@
1
+ // @mostajs/prononciation — point d'entrée. Author: Dr Hamid MADANI <drmdh@msn.com> · AGPL-3.0-or-later
2
+ export { createPrononciation } from './prononciation.js';
3
+ export { ErreurPrononciation, CODES, LIBELLES } from './lib/erreurs.js';
4
+ export { arpaVersIpa, normaliserJetons, egal, ARPA, PHONEMES, REGLES } from './lib/notation.js';
5
+ export { motsDe } from './lib/texte.js';
6
+ export { creerLexique, lexiqueCmudict, combinerLexiques } from './lib/lexique.js';
7
+ export { aligner } from './lib/alignement.js';
8
+ export { appliquerNote, noteSimple, validerNote } from './lib/note.js';
9
+ export { resistances } from './lib/resistances.js';
10
+ export { reconnaisseurFixe } from './adapters/fixe.js';
11
+ export { reconnaisseurHttp } from './adapters/http.js';
12
+ /** Les poids appris sur speechocean762 (CC BY 4.0) : phrase 0,72, son 0,56 d'accord avec les juges sur la partie test. */
13
+ export { default as NOTE_APPRISE_1 } from './poids/note-apprise-1.js';
@@ -0,0 +1,36 @@
1
+ // @mostajs/prononciation — alignement des sons attendus et entendus (Levenshtein).
2
+ // Author: Dr Hamid MADANI <drmdh@msn.com> · AGPL-3.0-or-later
3
+ // Même calcul et même ordre de retour arrière que aligner() de mesure_moteur_speechocean762.py.
4
+ import { egal } from './notation.js';
5
+
6
+ /**
7
+ * @param {string[]} attendus sons attendus (suffixe 0 possible)
8
+ * @param {string[]} entendus sons entendus, normalisés
9
+ * @returns {{ etats: ('juste'|'faux'|'omis')[], entendus: (string|null)[], insertions: { apres: number, entendu: string }[] }}
10
+ * `entendus[i]` : le son entendu en face du i-ème attendu ; `apres` : l'indice de l'attendu qui précède l'insertion (-1 en tête)
11
+ */
12
+ export function aligner(attendus, entendus, { regle = 'stricte-2' } = {}) {
13
+ const n = attendus.length, m = entendus.length;
14
+ const d = Array.from({ length: n + 1 }, (_, i) => { const r = new Int32Array(m + 1); r[0] = i; return r; });
15
+ for (let j = 0; j <= m; j++) d[0][j] = j;
16
+ const cout = (i, j) => (egal(attendus[i - 1], entendus[j - 1], regle) ? 0 : 1);
17
+ for (let i = 1; i <= n; i++) {
18
+ for (let j = 1; j <= m; j++) d[i][j] = Math.min(d[i - 1][j] + 1, d[i][j - 1] + 1, d[i - 1][j - 1] + cout(i, j));
19
+ }
20
+ const etats = new Array(n).fill(null), vis = new Array(n).fill(null), insertions = [];
21
+ let i = n, j = m;
22
+ while (i > 0 || j > 0) {
23
+ if (i > 0 && j > 0 && d[i][j] === d[i - 1][j - 1] + cout(i, j)) {
24
+ etats[i - 1] = cout(i, j) === 0 ? 'juste' : 'faux';
25
+ vis[i - 1] = entendus[j - 1];
26
+ i--; j--;
27
+ } else if (i > 0 && d[i][j] === d[i - 1][j] + 1) {
28
+ etats[i - 1] = 'omis';
29
+ i--;
30
+ } else {
31
+ insertions.unshift({ apres: i - 1, entendu: entendus[j - 1] });
32
+ j--;
33
+ }
34
+ }
35
+ return { etats, entendus: vis, insertions };
36
+ }
@@ -0,0 +1,38 @@
1
+ // @mostajs/prononciation — vocabulaire d'erreur unique (R-I). Author: Dr Hamid MADANI <drmdh@msn.com> · AGPL-3.0-or-later
2
+
3
+ /** Chaque code et son statut HTTP : l'application le mappe une fois, à un seul endroit. */
4
+ export const CODES = Object.freeze({
5
+ CONFIGURATION: 400,
6
+ TEXTE_VIDE: 400,
7
+ TEXTE_TROP_LONG: 413,
8
+ MOT_INCONNU: 422,
9
+ AUDIO_ABSENT: 400,
10
+ AUDIO_TROP_LONG: 413,
11
+ RECONNAISSEUR: 502,
12
+ TRAITS: 502,
13
+ });
14
+
15
+ /** Le libellé français de référence de chaque code ; l'application le traduit. */
16
+ export const LIBELLES = Object.freeze({
17
+ CONFIGURATION: 'Configuration du moteur de prononciation invalide.',
18
+ TEXTE_VIDE: 'Le texte ne contient aucun mot.',
19
+ TEXTE_TROP_LONG: 'Le texte contient trop de mots.',
20
+ MOT_INCONNU: 'Un ou plusieurs mots sont absents du lexique.',
21
+ AUDIO_ABSENT: 'Aucun enregistrement reçu.',
22
+ AUDIO_TROP_LONG: "L'enregistrement est trop long.",
23
+ RECONNAISSEUR: "Le service de reconnaissance n'a pas répondu correctement.",
24
+ TRAITS: 'Le service de reconnaissance ne rend pas les traits que demande la note apprise.',
25
+ });
26
+
27
+ export class ErreurPrononciation extends Error {
28
+ /** @param {keyof CODES} code ; @param {string} message ; @param {object} [details] copiés sur l'erreur (ex. { mots }) */
29
+ constructor(code, message = LIBELLES[code], details = {}) {
30
+ super(message);
31
+ this.name = 'ErreurPrononciation';
32
+ this.code = code;
33
+ this.statut = CODES[code] ?? 500;
34
+ Object.assign(this, details);
35
+ }
36
+ }
37
+
38
+ export const refus = (code, message, details) => { throw new ErreurPrononciation(code, message, details); };
@@ -0,0 +1,45 @@
1
+ // @mostajs/prononciation — lexiques (port `lexique` : { phonemes(mot) → string[] | null }).
2
+ // Author: Dr Hamid MADANI <drmdh@msn.com> · AGPL-3.0-or-later
3
+ import { arpaVersIpa } from './notation.js';
4
+ import { refus } from './erreurs.js';
5
+
6
+ const ARPABET = /^[A-Z]{1,2}[0-2]?$/;
7
+ /** Une suite de sons (chaîne séparée par des espaces, ou tableau), en IPA ou en ARPAbet. */
8
+ function lireSons(valeur, mot) {
9
+ const sons = Array.isArray(valeur) ? valeur.map(String) : String(valeur ?? '').trim().split(/\s+/).filter(Boolean);
10
+ if (!sons.length) refus('CONFIGURATION', `lexique : le mot ${mot} n'a aucun son`);
11
+ return sons.every((s) => ARPABET.test(s)) ? sons.map(arpaVersIpa) : sons;
12
+ }
13
+
14
+ /** Un lexique depuis une table { MOT: 'k ʌ p' | 'K AH1 P' | ['k','ʌ','p'] }. */
15
+ export function creerLexique(table = {}) {
16
+ if (table === null || typeof table !== 'object') refus('CONFIGURATION', 'creerLexique : une table est attendue');
17
+ const m = new Map();
18
+ for (const [mot, sons] of Object.entries(table)) m.set(mot.toUpperCase(), Object.freeze(lireSons(sons, mot)));
19
+ return Object.freeze({ phonemes: (mot) => (m.has(String(mot).toUpperCase()) ? [...m.get(String(mot).toUpperCase())] : null), taille: m.size });
20
+ }
21
+
22
+ /** Un lexique depuis le texte d'un fichier CMUdict (BSD-2), fourni par l'application. Première variante gardée. */
23
+ export function lexiqueCmudict(texte) {
24
+ if (typeof texte !== 'string') refus('CONFIGURATION', 'lexiqueCmudict : le texte du fichier est attendu');
25
+ const table = {};
26
+ for (const ligne of texte.split(/\r?\n/)) {
27
+ if (!ligne.trim() || ligne.startsWith(';;;')) continue;
28
+ const [mot, ...sons] = ligne.trim().split(/\s+/);
29
+ if (!sons.length || /\(\d+\)$/.test(mot)) continue; // variante : TOMATO(2)
30
+ const cle = mot.toUpperCase();
31
+ if (!(cle in table)) table[cle] = sons.map((s) => s.toUpperCase()).filter((s) => !s.startsWith('#'));
32
+ }
33
+ return creerLexique(table);
34
+ }
35
+
36
+ /** Plusieurs lexiques consultés dans l'ordre : le premier qui connaît le mot l'emporte (les mots de l'enseignant d'abord). */
37
+ export function combinerLexiques(...lexiques) {
38
+ if (!lexiques.length || lexiques.some((l) => typeof l?.phonemes !== 'function')) refus('CONFIGURATION', 'combinerLexiques : des lexiques sont attendus');
39
+ return Object.freeze({
40
+ phonemes(mot) {
41
+ for (const l of lexiques) { const s = l.phonemes(mot); if (s) return s; }
42
+ return null;
43
+ },
44
+ });
45
+ }
@@ -0,0 +1,71 @@
1
+ // @mostajs/prononciation — notation des sons : ARPAbet → IPA, classes, égalité selon la règle, jetons d'espeak.
2
+ // Author: Dr Hamid MADANI <drmdh@msn.com> · AGPL-3.0-or-later
3
+ // Porté de mesure_moteur_speechocean762.py (dossier Entreprise/saas-making/produits/prononciation, règle stricte-2),
4
+ // mesuré sur les 2 500 phrases de test de speechocean762.
5
+
6
+ /** ARPAbet (CMUdict, speechocean762) → IPA à la manière d'espeak. */
7
+ export const ARPA = Object.freeze({
8
+ AA: 'ɑ', AE: 'æ', AH: 'ʌ', AO: 'ɔ', AW: 'aʊ', AY: 'aɪ', B: 'b', CH: 'tʃ', D: 'd', DH: 'ð', EH: 'ɛ', ER: 'ɜ',
9
+ EY: 'eɪ', F: 'f', G: 'ɡ', HH: 'h', IH: 'ɪ', IY: 'i', JH: 'dʒ', K: 'k', L: 'l', M: 'm', N: 'n', NG: 'ŋ',
10
+ OW: 'oʊ', OY: 'ɔɪ', P: 'p', R: 'ɹ', S: 's', SH: 'ʃ', T: 't', TH: 'θ', UH: 'ʊ', UW: 'u', V: 'v', W: 'w',
11
+ Y: 'j', Z: 'z', ZH: 'ʒ',
12
+ });
13
+
14
+ /** Les 39 classes de sons de l'anglais que compare le module. */
15
+ export const PHONEMES = Object.freeze([...new Set(Object.values(ARPA))]);
16
+
17
+ /** Variantes de notation ramenées à leur classe (le modèle acoustique est multilingue, 392 symboles). */
18
+ export const CLASSES = Object.freeze({
19
+ 'ə': 'ʌ', 'ɐ': 'ʌ', 'ɚ': 'ɜ', 'ɝ': 'ɜ', 'əʊ': 'oʊ', 'e': 'ɛ', 'ɒ': 'ɑ', 'g': 'ɡ', 'r': 'ɹ', 'ɾ': 't',
20
+ 'ɫ': 'l', 'ᵻ': 'ɪ', 'ɪ̈': 'ɪ', 'o': 'oʊ', 'tS': 'tʃ', 'dZ': 'dʒ', 'th': 't', 'kh': 'k', 'ph': 'p',
21
+ 'e̞': 'ɛ', 'o̞': 'oʊ', 'a': 'æ', 'ä': 'ɑ', 'l̩': 'l', 'n̩': 'n',
22
+ });
23
+
24
+ /** Symboles composés d'espeak découpés en leurs sons. */
25
+ export const COMPOSES = Object.freeze({
26
+ 'ɑɹ': ['ɑ', 'ɹ'], 'ɔɹ': ['ɔ', 'ɹ'], 'oɹ': ['ɔ', 'ɹ'], 'ɪɹ': ['ɪ', 'ɹ'], 'ɛɹ': ['ɛ', 'ɹ'], 'ʊɹ': ['ʊ', 'ɹ'],
27
+ 'əl': ['ʌ', 'l'], 'aɪə': ['aɪ', 'ʌ'], 'aɪɚ': ['aɪ', 'ɜ'], 'ju': ['j', 'u'], 'ja': ['j', 'ɑ'], 'iə': ['i', 'ʌ'],
28
+ 'eə': ['ɛ', 'ʌ'], 'ʊə': ['ʊ', 'ʌ'],
29
+ });
30
+
31
+ export const REGLES = Object.freeze(['stricte-2', 'tolerante-2']);
32
+ const VOYELLES = new Set('aeiouæɑɒɔəɛɜɪʊʌy');
33
+
34
+ /** Un son ARPAbet (AA1, AH0…) → classe IPA ; AH0 et IY0 gardent le suffixe 0 (non accentué). */
35
+ export function arpaVersIpa(ph) {
36
+ const base = String(ph).toUpperCase().replace(/\d/g, '');
37
+ const brut = ARPA[base] ?? base.toLowerCase();
38
+ const ipa = CLASSES[brut] ?? brut;
39
+ return (base === 'AH' || base === 'IY') && /0$/.test(ph) ? `${ipa}0` : ipa;
40
+ }
41
+
42
+ /** La classe d'un son attendu, sans la marque 0. */
43
+ export const base = (p) => (p.endsWith('0') ? p.slice(0, -1) : p);
44
+
45
+ function nettoyer(p) {
46
+ let q = p.replace(/[ːˈˌ:."^[ʰʲ]/g, '').replace(/[1-5]+$/, '');
47
+ if (q.length > 1 && q.endsWith('ɜ') && VOYELLES.has(q[0])) q = q.slice(0, -1); // ton 3 noté ɜ
48
+ return q;
49
+ }
50
+
51
+ /** Jetons bruts d'espeak (sortie du modèle) → sons comparables. */
52
+ export function normaliserJetons(jetons) {
53
+ const out = [];
54
+ for (const j of jetons) {
55
+ const p = nettoyer(String(j).trim());
56
+ if (!p) continue;
57
+ for (const q of COMPOSES[p] ?? [p]) out.push(CLASSES[q] ?? q);
58
+ }
59
+ return out;
60
+ }
61
+
62
+ /** Le son attendu `a` (suffixe 0 possible) est-il le son entendu `b`, selon la règle ? */
63
+ export function egal(a, b, regle = 'stricte-2') {
64
+ const x = base(a);
65
+ if (x === b) return true;
66
+ if (regle === 'tolerante-2') {
67
+ if ((x === 'ɑ' && b === 'ɔ') || (x === 'ɔ' && b === 'ɑ')) return true;
68
+ if ((a === 'ʌ0' || a === 'i0') && b === 'ɪ') return true;
69
+ }
70
+ return false;
71
+ }
@@ -0,0 +1,98 @@
1
+ // @mostajs/prononciation — les notes : simple (part des sons retrouvés) et apprise (traits GOP → réseau → ridge).
2
+ // Author: Dr Hamid MADANI <drmdh@msn.com> · AGPL-3.0-or-later
3
+ // La passe avant reproduit apprendre_note.py (dossier Entreprise/saas-making/produits/prononciation, doc 13) ;
4
+ // l'essai T-PRO-11 compare ses sorties à celles de Python sur des phrases de contrôle.
5
+ import { refus } from './erreurs.js';
6
+
7
+ export const ETATS = Object.freeze(['juste', 'faux', 'omis']);
8
+ export const NB_TRAITS = 8;
9
+ const NB_AGREGATS = 9;
10
+
11
+ /** Note simple : un son retrouvé vaut 2, sinon 0 ; la phrase vaut 10 × part retrouvée. */
12
+ export function noteSimple(etats) {
13
+ const notes = etats.map((e) => (e === 'juste' ? 2 : 0));
14
+ return { notes, note: etats.length ? (10 * notes.filter((x) => x === 2).length) / etats.length : 0 };
15
+ }
16
+
17
+ const nombres = (x, n) => Array.isArray(x) && x.length === n && x.every(Number.isFinite);
18
+ const matrice = (w, lignes, colonnes) => Array.isArray(w) && w.length === lignes && w.every((r) => nombres(r, colonnes));
19
+
20
+ /** Vérifie la forme d'un objet de poids ; rend sa dimension d'entrée par son. */
21
+ export function validerNote(note) {
22
+ const mal = (m) => refus('CONFIGURATION', `note apprise mal formée : ${m}`);
23
+ if (note === null || typeof note !== 'object') mal('un objet est attendu');
24
+ if (typeof note.nom !== 'string' || !note.nom) mal('nom');
25
+ if (!Array.isArray(note.phonemes) || !note.phonemes.length) mal('phonemes');
26
+ const d = NB_TRAITS + ETATS.length + 1 + note.phonemes.length;
27
+ const ph = note.phoneme ?? {};
28
+ if (!nombres(ph.moy, d) || !nombres(ph.ect, d)) mal(`phoneme.moy et phoneme.ect : ${d} valeurs attendues`);
29
+ if (ph.modele === 'reseau') {
30
+ const c = ph.couches;
31
+ if (!Array.isArray(c) || !c.length) mal('phoneme.couches');
32
+ let entree = d;
33
+ c.forEach(([w, b], k) => {
34
+ if (!Array.isArray(b) || !b.length || !matrice(w, b.length, entree) || !nombres(b, b.length)) mal(`couche ${k}`);
35
+ entree = b.length;
36
+ });
37
+ if (entree !== 1) mal('la dernière couche doit rendre une note');
38
+ } else if (ph.modele === 'ridge') {
39
+ if (!nombres(ph.ridge, d + 1)) mal('phoneme.ridge');
40
+ } else mal('phoneme.modele : reseau ou ridge');
41
+ const phr = note.phrase ?? {};
42
+ if (!nombres(phr.moy, NB_AGREGATS) || !nombres(phr.ect, NB_AGREGATS) || !nombres(phr.ridge, NB_AGREGATS + 1)) mal('phrase');
43
+ const s = note.seuils ?? {};
44
+ if (!Number.isFinite(s.phrase) || !Number.isFinite(s.phoneme)) mal('seuils');
45
+ return d;
46
+ }
47
+
48
+ const lineaire = (w, b, x) => b.map((bi, i) => { let s = bi; const r = w[i]; for (let k = 0; k < x.length; k++) s += r[k] * x[k]; return s; });
49
+ const ridge = (w, x) => { let s = w[w.length - 1]; for (let k = 0; k < x.length; k++) s += w[k] * x[k]; return s; };
50
+
51
+ function vecteur(note, index, p, etat, traits) {
52
+ const t = traits.slice();
53
+ t[5] = Math.log1p(t[5]);
54
+ t[6] = Math.log1p(t[6]);
55
+ const un = new Array(note.phonemes.length).fill(0);
56
+ const b = p.endsWith('0') ? p.slice(0, -1) : p;
57
+ if (index.has(b)) un[index.get(b)] = 1;
58
+ const x = [...t, ...ETATS.map((s) => (etat === s ? 1 : 0)), p.endsWith('0') ? 1 : 0, ...un];
59
+ return x.map((v, k) => (v - note.phoneme.moy[k]) / note.phoneme.ect[k]);
60
+ }
61
+
62
+ function centile(tries, q) {
63
+ const pos = (tries.length - 1) * q, bas = Math.floor(pos), haut = Math.ceil(pos);
64
+ return tries[bas] + (tries[haut] - tries[bas]) * (pos - bas);
65
+ }
66
+
67
+ function agregats(notes, etats, nEntendus, duree) {
68
+ const n = notes.map((v) => Math.min(2, Math.max(0, v)));
69
+ const moy = n.reduce((a, b) => a + b, 0) / n.length;
70
+ const ecart = Math.sqrt(n.reduce((a, b) => a + (b - moy) ** 2, 0) / n.length);
71
+ const part = (f) => n.filter(f).length / n.length;
72
+ const total = Math.max(1, etats.length);
73
+ return [moy, Math.min(...n), ecart, centile([...n].sort((a, b) => a - b), 0.1), part((v) => v < 1), part((v) => v < 1.5),
74
+ etats.filter((e) => e === 'juste').length / etats.length, nEntendus / total, duree / total];
75
+ }
76
+
77
+ const indexDe = new WeakMap();
78
+ /**
79
+ * Applique la note apprise. Notes brutes, non bornées (la parité avec Python se juge sur elles) ; le service les borne.
80
+ * @param {object} note poids (NOTE_APPRISE_1)
81
+ * @param {{ phonemes: string[], etats: string[], traits: number[][], nEntendus: number, duree: number }} e
82
+ * @returns {{ notes: number[], note: number }}
83
+ */
84
+ export function appliquerNote(note, { phonemes, etats, traits, nEntendus, duree }) {
85
+ if (!indexDe.has(note)) { validerNote(note); indexDe.set(note, new Map(note.phonemes.map((p, i) => [p, i]))); }
86
+ const index = indexDe.get(note);
87
+ const notes = phonemes.map((p, i) => {
88
+ let x = vecteur(note, index, p, etats[i], traits[i]);
89
+ if (note.phoneme.modele === 'ridge') return ridge(note.phoneme.ridge, x);
90
+ note.phoneme.couches.forEach(([w, b], k) => {
91
+ x = lineaire(w, b, x);
92
+ if (k < note.phoneme.couches.length - 1) x = x.map((v) => (v > 0 ? v : 0));
93
+ });
94
+ return x[0];
95
+ });
96
+ const a = agregats(notes, etats, nEntendus, duree).map((v, k) => (v - note.phrase.moy[k]) / note.phrase.ect[k]);
97
+ return { notes, note: ridge(note.phrase.ridge, a) };
98
+ }
@@ -0,0 +1,25 @@
1
+ // @mostajs/prononciation — les sons qui résistent, sur un ensemble de résultats (la vue de classe).
2
+ // Author: Dr Hamid MADANI <drmdh@msn.com> · AGPL-3.0-or-later
3
+
4
+ /**
5
+ * @param {object[]} resultats des résultats de evaluer()
6
+ * @param {{ minEssais?: number }} [o] un son vu moins de minEssais fois est écarté
7
+ * @returns {{ phoneme: string, essais: number, echecs: number, taux: number }[]} du plus résistant au moins résistant
8
+ */
9
+ export function resistances(resultats, { minEssais = 1 } = {}) {
10
+ const t = new Map();
11
+ for (const r of resultats ?? []) {
12
+ for (const m of r?.mots ?? []) {
13
+ for (const ph of m.phonemes ?? []) {
14
+ const c = t.get(ph.attendu) ?? { phoneme: ph.attendu, essais: 0, echecs: 0 };
15
+ c.essais += 1;
16
+ if (ph.aReprendre) c.echecs += 1;
17
+ t.set(ph.attendu, c);
18
+ }
19
+ }
20
+ }
21
+ return [...t.values()]
22
+ .filter((c) => c.essais >= minEssais)
23
+ .map((c) => ({ ...c, taux: c.echecs / c.essais }))
24
+ .sort((a, b) => b.taux - a.taux || b.essais - a.essais || a.phoneme.localeCompare(b.phoneme));
25
+ }
@@ -0,0 +1,11 @@
1
+ // @mostajs/prononciation — découpe d'un texte en mots. Author: Dr Hamid MADANI <drmdh@msn.com> · AGPL-3.0-or-later
2
+
3
+ /** Texte → mots en majuscules : ponctuation ôtée, apostrophes internes gardées (I'D, DON'T), traits d'union coupés. */
4
+ export function motsDe(texte) {
5
+ return String(texte ?? '')
6
+ .replace(/[’‘ʼ`]/g, "'")
7
+ .split(/[^\p{L}\p{N}']+/u)
8
+ .map((m) => m.replace(/^'+|'+$/g, ''))
9
+ .filter(Boolean)
10
+ .map((m) => m.toUpperCase());
11
+ }
@@ -0,0 +1,5 @@
1
+ // @mostajs/prononciation — poids « note-apprise-1 », ENGENDRÉS par test-scripts/poids-vers-js.mjs : ne pas modifier à la main.
2
+ // Author: Dr Hamid MADANI <drmdh@msn.com> · AGPL-3.0-or-later
3
+ // Appris sur speechocean762, partie train (CC BY 4.0), https://www.openslr.org/101 — attribution requise par la licence CC BY 4.0 du corpus.
4
+ // Modèle acoustique : facebook/wav2vec2-lv-60-espeak-cv-ft (Apache-2.0). Mesure sur la partie test : phrase 0.723, son 0.561 (Pearson).
5
+ export default {"nom":"note-apprise-1","regle":"stricte-2","graine":762,"corpus":"speechocean762, partie train (CC BY 4.0), https://www.openslr.org/101","modele_acoustique":"facebook/wav2vec2-lv-60-espeak-cv-ft (Apache-2.0)","traits":["gop_moy","gop_max","fenetre_max","lpr_moy","lpr_max","log1p_duree","log1p_fenetre","blanc_moy"],"etats":["juste","faux","omis"],"phonemes":["aɪ","aʊ","b","d","dʒ","eɪ","f","h","i","j","k","l","m","n","oʊ","p","s","t","tʃ","u","v","w","z","æ","ð","ŋ","ɑ","ɔ","ɔɪ","ɛ","ɜ","ɡ","ɪ","ɹ","ʃ","ʊ","ʌ","ʒ","θ"],"phoneme":{"moy":[-1.30833209,-1.29997051,-1.27061665,-0.887574494,-0.887280345,0.723493993,2.68087864,-6.0564537,0.703946829,0.256882489,0.0391707011,0.12080466,0.0262554176,0.00717987912,0.0191392638,0.0383634977,0.00401478447,0.0171000082,0.0182470903,0.0232177749,0.0393193997,0.012256776,0.0293143,0.0378961675,0.0321820043,0.0637692213,0.016483983,0.0148483301,0.0440351777,0.0853725895,0.00350497058,0.0288044866,0.0171424933,0.033690203,0.0261704475,0.0295267235,0.0325431228,0.0113433599,0.00994137116,0.0158679578,0.000764720899,0.026913926,0.0134250997,0.0122142918,0.0633018911,0.0264465977,0.00749851298,0.0120655959,0.0933171883,0.000127453473,0.00639391644],"ect":[2.18228602,2.1864841,2.13038254,1.89725602,1.89738619,0.109082863,0.65146327,2.67945266,0.45659411,0.436881661,0.194048122,0.32595405,0.159897014,0.0844316408,0.137015477,0.192060262,0.0632295907,0.129674345,0.1338076,0.15060778,0.194384038,0.110019982,0.168675616,0.190997913,0.176441044,0.244364962,0.127297759,0.12095578,0.205201373,0.279465228,0.0591136143,0.167299524,0.129832745,0.18041721,0.159640804,0.169252872,0.177452996,0.105876647,0.0991840139,0.124952219,0.0276376382,0.161849275,0.115097828,0.109838381,0.24347496,0.1604442,0.0862814561,0.109191082,0.290920466,0.01128917,0.079709895],"modele":"reseau","couches":[[[[-0.0518146008,0.147097304,0.00517445011,0.0377245732,-0.0121133663,-0.0714060739,-0.120289534,-0.0212710388,-0.122043729,0.0302168187,0.0806223154,0.0884327888,-0.121764153,-0.124385327,0.0615227744,0.0654198453,-0.0201275423,0.087691173,-0.168690756,-0.161666036,0.171571061,-0.024343444,-0.0401163511,-0.112191349,-0.136705115,0.141870081,0.0546672344,-0.145936444,0.154956639,0.063045226,-0.0818502828,0.104237266,0.0794010386,-0.0637570992,-0.0849607736,0.0792561993,0.044566527,0.0736480877,0.0766609088,-0.18651104,-0.144138455,0.0420507155,0.0972525701,0.0562463216,-0.232200265,-0.107110895,-0.122285746,0.0428811349,0.0747343451,0.0481859036,0.053974919],[0.152219325,0.0911769494,0.0702654719,-0.0377582125,-0.0481281504,0.114131555,0.113950543,0.0929960608,0.0609050766,0.128952339,0.00570550887,-0.0232919864,0.122401111,-0.0514891408,0.00392798381,-0.088680923,0.0365984738,-0.00449627591,-0.0465241671,0.0366629884,-0.149170384,-0.0926950872,-0.0725964233,0.185197204,-0.162097305,0.119838215,0.0164784826,-0.00381690916,0.142399207,0.0475136489,0.0564571247,0.040459618,-0.099773109,0.0181373395,-0.15929383,0.0447606817,-0.104859062,0.0754700229,-0.0212880243,-0.0545203649,0.0661954582,0.146792695,0.10520196,-0.0873601586,0.137348473,-0.147749096,-0.0426232032,0.0447473191,0.0731227845,0.0313159712,0.0510896556],[-0.0942180306,-0.112186529,-0.0166944731,0.192535475,0.22185801,0.086459063,-0.147437617,-0.0690334663,0.000425490987,0.107545555,0.0461305231,-0.0197940264,-0.0199948922,0.00961924624,-0.164910153,-0.0859562755,0.0591680035,-0.0998795778,-0.0524720252,0.122966774,0.0932526737,0.107461385,-0.13938199,0.115140021,0.0673722327,0.0594861917,0.00711066928,0.0582710393,0.107165948,-0.0722625107,-0.0153593356,-0.0983436182,0.105700418,0.11988277,-0.120049305,0.117785908,-0.059239246,-0.0635026991,-0.0985026658,0.0270973202,0.0706954747,-0.168839857,-0.0318981893,-0.0995584652,0.0557233058,0.0307008792,-0.0749068856,-0.160631642,-0.19185105,0.0629715398,-0.157487094],[0.138902351,0.00331797171,-0.0702405423,-0.0877750814,-0.138994038,-0.149060428,-0.00242820522,0.13318634,0.134866208,0.0329777934,-0.215704575,-0.0749353692,0.0828622729,-0.073214829,0.0465693586,-0.0543175898,-0.00438730326,-0.0779266581,0.0726472437,-0.121166617,0.119861908,-0.08823625,0.0590795167,-0.0860555843,0.0528792627,-0.179759249,0.01228985,-0.0899051949,0.0978911668,-0.15090169,-0.059634313,-0.033057794,-0.117666543,0.06917952,0.107677013,-0.0892602801,-0.187361076,-0.0856904313,-0.049351275,0.0812689364,-0.0841786116,0.153164729,0.00950186141,-0.0914107114,0.194652125,-0.0216722265,-0.0856580958,-0.0980511233,-0.0497618243,0.0575155318,0.058281675],[0.178097337,0.0107212858,0.173945814,-0.0716975108,-0.0892028734,0.040376462,-0.192245051,0.230984747,-0.140990674,-0.0693770349,0.0933037326,-0.25489518,0.146085441,0.116313368,0.106885336,-0.114480041,-0.0788236782,-0.0641964823,-0.0192746669,0.118804872,-0.0765834004,-0.0419201478,-0.0887391567,-0.00881183706,0.0690739527,0.0169660579,-0.0323935524,0.0792797133,-0.249339253,-0.186184764,-0.0497707166,0.114350364,0.0644560605,0.123770393,-0.0640295073,0.0480652079,-0.152396381,-0.117478117,-0.126893371,0.0161168072,-0.0531605929,-0.0280836206,0.0417755097,-0.0621218719,0.077176474,-0.0269853994,-0.0918522999,0.0727527961,0.14484264,0.0776967704,0.113971047],[0.028183775,0.143735051,-0.0338004455,0.0772321597,-0.0488929376,-0.0187004004,-0.1383809,0.162479922,-0.012959267,-0.125299782,0.0601547882,0.14231959,-0.185386583,0.0745476261,-0.149813265,-0.0339592844,-0.0751617923,0.0379147641,-0.185541242,-0.00508319074,0.0930260718,-0.146217272,-0.141350865,-0.200973973,-0.143565282,0.115882583,0.0625031218,-0.146321416,0.0572007187,0.092678152,-0.159944847,0.128970996,0.0726440474,-0.00329448469,-0.0998224244,-0.0999725759,-0.18198216,-0.0976512358,0.0880918577,-0.0976258069,-0.122960486,-0.166146517,0.112593718,0.136739194,0.127732068,0.0395841487,-0.0675943121,0.101101004,0.0439245217,-0.0464015268,-0.150912657],[0.00921622384,0.155961648,0.00857686996,0.0100062834,-0.141914755,0.0110056233,-0.058941707,-0.139998987,0.0242597125,0.0660239011,-0.012143584,0.0931259841,-0.0741493404,-0.0635844693,-0.12655583,0.163540632,-0.0433662497,-0.0410287231,-0.0834471881,0.0126685621,0.0255706683,-0.0862053335,0.0973686725,-0.0933361873,-0.115255535,0.0926075429,0.0887587294,-0.150731176,-0.0115039116,0.172555819,0.0649548396,-0.0324990302,-0.0640429705,-0.147686303,-0.0828184038,-0.0844259188,0.0846605152,-0.138179466,-0.0378651991,-0.0516510457,0.0293624215,-0.111676075,0.0675875843,0.0513170697,0.106296003,-0.0606907569,-0.087098524,0.111817278,0.182226628,0.0233207811,-0.0446733423],[0.109689817,0.0829519853,0.0276683941,-0.085862346,0.0991192684,-0.0228282381,-0.0763208792,-0.146273896,-0.169515908,0.187177226,0.0628592744,-0.161441073,-0.0747603849,0.11866948,0.051052995,-0.0000729131862,-0.0858043507,-0.0443773493,-0.137183458,-0.153456986,0.0557327196,-0.127116635,-0.143722564,0.120857053,0.063256599,0.0706510767,-0.0499381125,-0.075766623,-0.0428614952,0.0497334898,-0.0584274456,-0.138212085,-0.0421723686,-0.00268380414,-0.132713094,-0.0711209178,0.0738587081,0.016765805,-0.127245843,0.0577208102,0.0160534848,0.00148843636,0.0879332125,-0.142888919,0.123736486,-0.0578344241,0.00367463287,0.0225721207,0.0475239083,-0.0423342511,0.0875730515],[0.0579351038,0.106916443,0.0747542158,-0.0690728948,-0.0258646216,-0.00347405626,-0.0383998714,-0.0704372376,-0.00625869958,0.239381149,-0.0180834215,0.0961950272,-0.0253579505,-0.0701041445,-0.117114574,-0.173809797,-0.0484146439,-0.121205717,0.138665631,-0.163136333,0.0378109403,0.116938345,0.139747992,0.114157043,-0.168735549,-0.141501531,0.132764772,-0.150390029,-0.117507242,-0.0129700769,-0.078021042,0.129294008,-0.0132765481,-0.121501558,-0.172007501,0.02491384,0.150657937,0.0764166713,0.164464742,-0.111565657,-0.09977521,-0.0820719227,0.130454198,0.0382612981,-0.151128829,-0.111348987,0.0368317664,0.0707027912,0.0809811056,-0.000515206484,-0.0843072906],[0.176678494,-0.0216994602,0.10788662,-0.0385117047,-0.153479159,0.0236254502,0.0345859826,-0.132128239,0.0488382615,-0.0701595619,-0.068149589,-0.16646193,-0.123235956,-0.0638170391,-0.0962263495,0.117402136,-0.192124397,-0.0381544046,0.0796874911,-0.185246408,-0.175426111,0.0216172524,-0.106921837,-0.208000734,-0.0429907031,-0.172600046,-0.125682667,-0.204964697,0.165018946,0.119016439,-0.17384325,-0.134026095,0.165462241,0.0974415839,-0.1593142,0.014662398,0.146010444,-0.0738706514,-0.089278549,-0.151080161,-0.0241367314,-0.179118648,0.0639766678,-0.0916789919,0.15740338,-0.15583609,0.0140014272,0.0799444094,-0.213284388,-0.0948668793,0.00971954316],[-0.0454495773,-0.0427275039,-0.0159452222,0.00773190754,0.103163198,-0.0760134384,0.0205140114,-0.0105420118,0.103692099,0.0309170559,-0.035073746,-0.196597397,-0.101294592,-0.175122455,-0.0735061169,0.105489485,-0.180315465,0.0893941522,-0.125424653,-0.175391585,-0.196082726,0.0122391367,0.154764876,0.177308232,-0.188669607,0.0712985471,0.109636605,0.0439249128,0.201969087,0.157613128,-0.113575958,-0.174721003,-0.191503018,0.0755640715,-0.0418653339,-0.17771025,0.0814800784,0.0398918465,-0.094767943,0.0973568037,-0.0607821383,-0.173290595,-0.14219369,-0.114138931,-0.0916314647,-0.161288992,-0.0534142442,-0.0544652157,-0.1655837,-0.00715962658,-0.177535057],[-0.0241179243,0.151085719,0.054798644,-0.0815897882,-0.0506598838,0.0546938591,-0.069773227,0.23704873,-0.0720347837,0.15980798,0.017757725,0.153234184,-0.136264071,-0.140674368,0.0140222749,0.0742823631,-0.149426609,0.0311612394,-0.101283051,0.112052172,-0.0817174688,-0.0986440629,0.0322751552,-0.115292959,0.115929045,-0.186274245,-0.0803675801,0.00464229472,-0.0828761086,0.182578623,-0.058963526,0.0632901862,0.0525576025,-0.169171125,-0.139152348,-0.139345542,0.0802126676,-0.0785476938,0.0907843411,0.0978367403,-0.0206383616,-0.146593362,-0.116388611,-0.00114947697,0.00730220322,-0.0992968306,0.0239348263,0.123559587,0.12979871,0.015132389,0.00774155464],[-0.206354707,-0.171911061,-0.26917541,-0.0924375504,-0.108740568,0.110858686,0.267552942,-0.0252970327,0.0852624774,0.0616585463,0.00993918534,0.0685888529,-0.0746007934,0.0316136256,-0.0691658184,0.0954674557,0.0101869386,-0.0100907683,-0.0642233863,0.0199816003,0.105345063,0.0145228161,0.109497808,0.0138402898,0.0102804014,-0.0802176595,0.0583692156,0.0283460096,0.0183555484,0.0823503807,0.00908180606,0.0158297811,-0.00396807352,-0.00894858968,0.00845033675,0.104495235,-0.132166877,0.0228339098,0.0414068736,0.117935568,0.0863466412,0.0480169021,0.0431263968,-0.0794403553,-0.0929516628,0.132607371,0.120723717,0.0696770325,-0.052176185,-0.00606648996,-0.100077577],[-0.0569243394,0.153208256,0.152684778,0.0549994819,0.0586246923,-0.010387715,0.0956981331,-0.0384672917,0.0354705378,0.0157089736,-0.0508874655,0.0031003647,-0.177677631,-0.062312115,0.106315285,0.186271578,-0.0613285825,-0.0243329462,0.172043681,0.125073701,0.159889072,0.0821729675,0.0809704512,0.222799525,-0.169420913,-0.159380794,0.00179006415,0.0583317019,-0.157883406,-0.0529442132,-0.141926214,0.0354540609,-0.17188552,-0.107247926,-0.0963544473,-0.111566,-0.101983137,-0.061303962,0.0739802942,-0.0824884549,-0.116908304,0.103054985,0.00369788799,-0.174355626,-0.189591125,-0.105631389,0.0854540095,0.121556193,-0.178293318,-0.0439277142,-0.0865725204],[0.168484271,0.172121778,-0.0150597021,-0.040817108,-0.0769001916,-0.111917429,-0.0438520648,-0.0123994406,-0.143631056,0.144109443,0.0499822646,0.0947144255,-0.0858202949,0.115381032,0.133148074,0.0686944276,-0.054239329,-0.177332416,0.0754114464,-0.0689879581,-0.0208212342,0.0806638822,-0.148771346,-0.131207153,-0.134479135,0.124069586,0.0622607172,-0.107933633,-0.129737899,0.031429369,-0.0865838379,0.178189874,-0.11498148,-0.111153081,0.139890924,0.109270684,0.13156116,-0.143334955,0.111167841,0.0568803065,0.0261325296,-0.168277726,0.0647046566,0.0313746184,0.0440726802,0.174792007,-0.16121459,0.111639462,0.165810525,-0.0124913482,0.00991541613],[0.112349465,0.0106857372,0.0452096798,-0.0471594408,0.1539419,-0.103689373,-0.0790605173,0.0646474585,0.129053056,-0.0495744273,0.00569599541,-0.00758838607,-0.0195375327,0.0905994326,0.158653006,-0.0881109387,0.0823059604,-0.160288349,0.138581708,-0.0630790293,0.191856816,-0.14206855,0.137368917,0.115099251,-0.166530445,-0.0989079624,0.0974660292,-0.146931574,0.182088539,-0.120977841,0.0523350611,0.17250827,-0.166904539,0.166291088,-0.0826310143,0.0430165753,-0.0784606636,0.100599974,-0.0693564788,0.131286398,0.00985062867,0.0689157248,-0.0470712334,-0.11800877,-0.102489211,0.120004334,0.0509109795,-0.163835898,-0.155280977,0.0316866115,-0.164025351],[0.120626062,-0.0403004475,-0.0812246278,-0.0711239576,0.0233616326,0.0697619691,-0.153680772,0.0402253158,-0.102618665,0.000711860019,0.00263762684,-0.118268035,-0.151488468,-0.136056826,0.11287497,0.146308318,-0.10476689,-0.0478516258,0.0968915075,-0.13550736,0.0471231267,0.000958918477,-0.140906334,0.0514096804,0.127897561,-0.229998067,-0.028535042,0.143949896,-0.202006564,0.18091619,-0.0476457849,-0.0355705544,0.106942877,-0.0121244444,0.0853428841,0.136912495,0.053677503,0.0184446387,0.0777630284,-0.121561341,-0.12507233,-0.0409469083,-0.143634304,0.0572752357,-0.199737996,-0.146969229,0.0596647449,0.0910717621,-0.0872075483,-0.0778600127,0.0246966965],[0.00458070915,-0.029007487,0.0636784211,-0.0423322581,0.0223728418,0.0590527281,-0.119997852,-0.00719728321,-0.108861364,0.150588438,0.0471693166,-0.155445695,0.0966513008,0.109751567,-0.143887818,-0.157482833,-0.067475304,0.0629688278,0.0945981443,-0.118680373,0.130093217,0.0283202156,-0.000191787229,-0.146319881,-0.117820308,0.0957659259,-0.106215768,-0.0407695211,0.103392094,-0.0165700968,0.00604135031,0.0225961935,0.133759797,0.106745318,0.0605664775,-0.0202935003,-0.122394443,0.012023137,-0.0804616213,0.0694892108,-0.0202750042,0.0906477422,-0.0887506232,-0.117762916,0.0854782611,-0.118186221,-0.140742764,0.112881124,-0.0679772049,-0.0539575368,-0.00168656767],[-0.0982274264,-0.10125494,0.0229853187,-0.0482675247,0.122145116,0.0226715375,0.107044473,0.161063418,0.0514130667,-0.10895253,-0.118690237,0.0108591449,-0.00611586682,-0.00173653022,-0.0244209506,0.137325794,-0.0322825052,-0.0222398471,0.0858399719,-0.0865605325,0.0928245559,-0.024913853,0.0587676205,0.110215455,0.121974893,0.145026714,-0.0556066632,0.0800156072,-0.0284681078,-0.0361408703,0.0633194372,-0.0243284926,-0.00721549708,-0.0857471973,-0.0923763514,0.0201146249,0.139512673,0.0999794826,0.115045696,0.0173175223,-0.0298719984,0.0924762115,-0.0651472956,0.117726594,-0.0937701389,0.129180521,-0.0415468663,-0.0236440543,-0.108853169,0.00595027301,-0.0820085704],[-0.115115382,-0.0343046747,0.0220909566,0.0495117381,-0.0455933064,0.0395955592,-0.158793211,-0.0418835357,0.00982869416,-0.159808442,-0.0814211443,-0.0817304924,-0.0437221378,0.119444869,-0.106176935,0.169648573,-0.0292019732,-0.142547756,-0.0287546739,-0.110266425,-0.155509174,-0.0741036013,0.151474506,0.157016262,0.0667954013,-0.0932421908,-0.117208064,-0.023729559,-0.0876701102,-0.0732366592,-0.00805552769,0.163510799,0.104602128,0.136369422,0.119630828,0.106991388,-0.0693265796,0.0306491069,-0.0176985543,-0.103739984,0.0332645886,0.123082615,-0.0388912819,0.0910596475,-0.0832662061,0.145617798,-0.0178435221,0.0154754389,0.0058569503,0.068592228,-0.0909309313],[-0.140585139,-0.164318144,-0.218813017,-0.109060183,-0.148674607,0.0152640464,0.196691915,-0.0955600962,0.0490049347,-0.0366877727,0.0784664825,-0.0461246967,0.00636392739,0.0761885345,0.00709748827,0.117740914,-0.0115288394,0.0691795871,0.0588459373,-0.120389745,0.0972734243,0.0218502264,0.0269758385,-0.0538864285,-0.00644209515,0.0229455251,0.0730510578,0.0469897799,-0.0241302047,0.0969811305,-0.00244425284,0.104417108,0.0747025311,-0.0104024606,-0.0327124968,0.0560239106,-0.0215858258,0.0248213261,-0.0212222394,0.00171225483,0.0425994508,0.0874477103,0.0512373634,0.134708077,0.151787028,-0.0864205286,-0.00477240281,0.103860468,-0.034669891,0.147259593,-0.0854015127],[-0.0334594212,0.189011648,-0.00845042989,-0.108854592,0.12921083,-0.0346411467,-0.0552413911,-0.0145976087,0.0673776641,0.0364962146,0.00644368213,0.0287134238,0.143647701,-0.0563034825,0.0837950483,0.0665029958,0.100812726,-0.096327126,-0.133333728,-0.174513802,0.0548705533,0.117914893,-0.114689499,-0.156662539,0.109346345,0.18769896,0.123495124,0.117857486,-0.0765131786,-0.0910771713,0.0459667742,0.0780696347,-0.190747678,0.103385031,0.0347080454,-0.18227309,0.121632524,0.109596699,0.0366715901,-0.108217724,-0.166688472,0.061177697,0.100250334,0.11300166,-0.166963428,-0.0995294899,0.132059187,-0.141258076,0.21904707,-0.0381780565,0.0297963731],[0.00886398926,-0.141260833,0.017891055,0.0125829559,-0.169009104,-0.138664559,-0.0281815697,0.0489070378,-0.220032632,0.11479234,0.0567126237,0.0606958345,0.0677484944,-0.105950922,-0.00262868009,0.00438682223,0.0705834851,0.00543776015,0.0565229431,0.0772831067,0.0449028611,0.0593490414,0.123538271,0.0456579514,0.0315396041,-0.0542190671,-0.0540058091,0.0497374348,0.0257238783,-0.0249816012,0.0562647618,0.0134700518,-0.00120802596,0.168360665,-0.137073264,0.0941368341,-0.152467206,0.0283657163,0.0516373813,0.0115827909,0.0721322969,-0.0125061469,-0.0473085679,-0.0158046298,0.131063685,0.0591662154,0.0229957066,-0.0588782057,-0.0702614263,0.0180514306,-0.0947771445],[0.150928214,-0.00601998297,0.0996304452,0.00599552318,0.0608312935,0.113543406,0.10670086,0.0436923169,0.213770643,0.0396590345,-0.0850804001,0.131622165,-0.035938777,-0.0720255226,0.0205756333,-0.0869614333,0.0869798139,0.0805638433,0.204013094,-0.142828465,-0.110539585,-0.0338589624,-0.143479049,0.0273220073,-0.0713154376,0.00605354039,0.0963006392,0.113362961,0.00201161602,-0.113014191,0.0871473625,-0.0794350132,0.0699506626,0.0473730527,-0.0710578486,0.168524444,0.0291106347,0.0109314332,0.123867817,0.14784731,0.0042626895,0.106306717,-0.102234416,-0.0946761519,0.127626196,-0.0450271331,0.097809948,0.121114708,-0.0740975142,0.0416774675,-0.0709932819],[-0.0437328108,0.0762288347,0.0990586802,-0.034127973,0.0277644619,0.115668498,0.225109607,0.122686028,0.109445445,-0.0992187336,0.00893979892,-0.217903927,0.12874715,-0.0939287692,0.0124143055,0.125678882,-0.118489154,0.0955524668,0.0562347621,0.025451947,-0.189791873,-0.0668503642,0.0583778359,0.119004302,0.0350675024,0.0532110967,-0.139335766,-0.191020578,-0.2416282,-0.183651596,-0.150743082,-0.113526963,0.0941153839,-0.0555951484,0.01437678,0.0875715464,0.0593276732,0.017078938,-0.105611317,-0.0639296845,-0.0100862542,-0.0812853724,-0.0466175862,-0.161239952,0.0383616835,0.099636361,-0.0958497152,-0.0984407663,-0.137115881,-0.139008716,0.109302603],[-0.0491139181,-0.0737607032,0.115150362,-0.0237762351,0.152127802,0.0353701115,-0.241892979,-0.0378696285,-0.0906150416,0.000786588353,0.0791963935,0.0221376084,0.198969498,-0.0895377845,0.0830564871,-0.141715869,-0.00600933004,-0.0737312436,0.0924849734,-0.145890877,0.0590267032,0.0670287758,0.137591392,-0.156272635,-0.150307149,-0.220155135,0.0218222216,0.0744788572,-0.18707718,0.0901599675,-0.0672825649,0.0767238587,0.0866395161,-0.0374836251,-0.138803035,-0.0274732821,0.141109183,-0.125428513,-0.0450672284,0.0577692576,0.0279930513,0.0490768701,0.061168123,-0.115743443,-0.117763057,-0.179558173,0.0699136481,-0.130664304,0.142944083,-0.0732616559,-0.00219045905],[0.0000857612467,0.104212925,0.121822,-0.0552649461,-0.0858450904,0.0582310185,-0.009148404,-0.348432094,0.0949402079,-0.177020922,0.16558215,0.0818955004,0.0673168376,0.0647595972,-0.135139585,0.0897462368,0.0358842425,-0.142594725,-0.0721666515,0.112760864,-0.163668111,-0.0697764456,0.0516137891,0.147366911,0.0396364219,-0.0430010185,0.0541120023,-0.00882011093,-0.0123731336,0.0000104525243,-0.0477848276,-0.0644479245,-0.111326613,0.189907476,-0.0978513137,0.0272766333,0.140459806,0.025002433,0.115653701,0.0539888106,0.0332274958,0.127788201,0.17766723,0.0997323468,-0.205008343,-0.20199354,-0.113315858,0.0164705329,0.0758698806,0.0612349734,-0.0372391865],[0.201815665,-0.0102393683,0.0252150297,0.0126565918,-0.0421555527,0.00769236032,-0.11229118,-0.0242254604,0.0934992731,0.173808917,-0.185889021,-0.0158193987,-0.150680587,-0.151948452,-0.188901216,0.0104783243,-0.0516411476,-0.0310733225,0.103218444,0.0525267385,0.0822235644,0.185365468,-0.214819714,-0.131229073,-0.195661888,-0.0118358228,0.0735292584,0.0456675701,0.065693818,-0.171327904,-0.0248470753,0.124515936,-0.200977966,-0.108128801,0.149827003,-0.013414762,-0.100330099,-0.123203598,-0.195799336,0.0357709527,-0.0084047392,-0.0764007643,-0.0156907011,-0.116950147,0.200751275,-0.146994516,0.111216627,-0.150266275,0.205053493,-0.107613377,-0.127282649],[-0.103622988,-0.00452775136,-0.0289183706,0.135527611,0.0211510081,0.142377257,0.0955513045,0.0236312132,0.196365744,0.0205540564,0.148670405,0.0226481315,-0.110412598,-0.0597037524,-0.0384050943,0.1553161,0.0794057995,0.124336921,0.036083214,-0.173211232,0.138225868,-0.119319864,-0.0270452034,-0.0809277445,0.084369868,0.102643013,-0.010323707,0.0175165478,-0.0519746393,-0.138819963,-0.106778488,-0.119607352,-0.167551935,-0.150454864,-0.184493944,-0.0237470157,-0.0206150413,0.0663469955,0.116293907,-0.0945576876,-0.00214486755,-0.140170172,-0.0140009234,-0.165130198,-0.0665816665,0.0814819783,-0.131362304,-0.166124612,0.137392595,-0.0407012329,-0.0696182773],[0.00354071381,-0.0240841005,0.145181298,-0.069416523,0.113497406,-0.0673060492,-0.160417959,-0.0843678936,-0.0215521287,-0.04347644,-0.127162129,-0.139888972,0.0990454257,0.107846364,-0.12109413,0.144653365,0.0250796545,0.107773066,-0.00578229129,0.173358902,-0.173480481,-0.18679285,0.0134583199,0.0719396025,0.111748844,0.00508765317,-0.126954734,0.111533694,-0.132868856,0.164359987,0.0751139224,-0.159200415,0.047434818,-0.110033713,-0.0968119875,-0.118484035,-0.134314835,0.0379069336,-0.0709555522,-0.119038552,-0.108999364,0.134974971,-0.192528948,-0.177177012,-0.148375288,0.115844555,-0.0564216338,-0.169130862,0.178591132,-0.138358727,-0.0674453676],[0.0872325003,0.124740392,-0.0384624638,-0.0884382948,-0.0573077463,-0.0603480563,0.0655434206,-0.0472833514,-0.100801475,-0.114784181,-0.143724084,0.111528277,-0.115580395,-0.176118642,0.0799643844,0.117288284,-0.121021055,-0.182946831,0.0446777828,0.0904167369,-0.0284305532,0.0182998311,0.0368983895,0.119507663,0.134021878,-0.0475991815,-0.147848725,0.0823825076,-0.180500805,0.101833276,-0.00302418624,-0.0710688084,-0.0738194883,0.0934427381,-0.142311946,-0.153766364,0.122555763,-0.060197033,-0.0816070661,-0.093088761,-0.0149504626,-0.185624465,-0.102019899,-0.0863208398,-0.173885986,0.137359232,-0.182730138,-0.156941012,0.0794424191,0.0305275116,-0.164729968],[0.037761949,-0.0187856313,0.0591368377,-0.100451335,0.0680217072,0.154571235,0.135336861,0.128842339,0.248367965,-0.23045826,-0.114124022,-0.0963429213,-0.0687045604,-0.0604689457,0.0679460838,0.04470364,-0.00339489896,0.00630734069,0.0933000445,-0.171383619,0.117772669,-0.012865833,0.147851184,-0.172821939,0.167216793,0.227404878,0.0606950782,0.11330796,0.0156880636,0.0736726448,-0.130131721,0.0406522714,-0.162446603,-0.151959136,-0.105152093,0.0169682819,0.0600009263,0.0959123299,-0.0156337265,-0.0203983337,0.0634438992,0.0599321648,-0.0347128883,0.0942595005,0.00613671122,0.175513029,0.00925641693,-0.101290442,0.0816564113,-0.0657679141,-0.0034411808],[0.112879373,0.126162037,0.04225678,0.0309955664,0.00564630097,0.0565737486,-0.00759637589,-0.126647279,-0.108015664,0.109598354,-0.0665709227,-0.126362935,-0.163656145,0.102716774,-0.0930132419,0.113708794,-0.0704411268,0.0954260007,-0.103259228,-0.174894944,-0.151371121,0.134161219,-0.139020428,-0.15109688,0.175997466,0.0541882589,0.0418816209,0.0855311155,-0.147207722,-0.1839533,0.0368230566,0.0198884755,0.00762530323,-0.00298213726,0.0705181062,-0.174019873,0.178009719,-0.173437685,0.0221196711,0.157927781,-0.0763380304,0.0852287635,-0.0999617651,0.0705543458,0.17662546,0.03514532,0.142447308,0.000988326035,-0.0546030253,-0.114948876,-0.0740846246],[-0.0540762097,0.0651745647,0.0660458803,0.125268251,-0.0388902798,-0.0461901762,0.00385224237,0.0380989201,0.0165169686,-0.116076611,0.0808776394,-0.166139513,0.175968677,-0.110129021,-0.0881668553,-0.140111104,-0.0819064453,-0.0462381765,-0.039924629,0.128397539,0.190543741,-0.0599393956,-0.140629813,0.147065237,0.104270093,0.0945930481,-0.154987484,-0.125826687,0.0136759887,-0.0757622868,0.0487975255,0.0505049862,0.000906365516,-0.11739859,0.0777323917,0.0505215414,-0.0912056789,-0.144398928,-0.0552838072,0.1186921,-0.0780694708,-0.0182463583,0.0301938448,0.135340706,0.186786905,-0.0544727519,-0.145029172,-0.0796449706,0.0197197441,-0.0255266838,-0.0533989035],[-0.0784549192,0.127244845,0.0320120268,-0.131031141,-0.00253922562,-0.105999157,-0.0971113443,0.137741104,0.135794848,-0.141272575,0.0387928225,0.140621766,-0.173297212,-0.165736243,-0.12097992,-0.15709649,-0.166453421,0.060401395,-0.0315963142,-0.146734565,-0.120504163,-0.182610095,-0.130531475,-0.163779423,0.0400500484,0.0643758103,-0.169708088,-0.112216711,0.0892397016,0.0729432702,0.065972805,0.0466440022,0.131867945,-0.166284695,0.071918413,0.0116905356,-0.191176087,-0.128526077,0.0953382626,0.00275737233,-0.0429825969,0.00228912826,0.0473218411,-0.0228717625,0.0831118748,-0.161540121,-0.129329801,-0.124386176,0.198597953,-0.0958466828,-0.0872875229],[0.106373809,0.0633521676,0.0955446959,0.149155512,0.0616466068,-0.0780289471,-0.0454413556,-0.0340967774,0.2136527,-0.117803194,-0.143918753,-0.115997411,-0.104689963,-0.128981069,-0.0761442631,-0.071079351,0.0167485066,0.108285517,-0.0247063246,-0.02180955,-0.0509276539,-0.131173134,0.0223117638,-0.117807411,0.0237885043,0.00263510668,0.141265199,-0.119355172,0.154178858,0.0198006704,-0.122907802,0.0562152602,0.00451034727,-0.0971538723,0.049459286,-0.109791048,-0.124636166,-0.0664730296,-0.0144327749,0.110135615,-0.00597787322,-0.113260232,0.0920022801,-0.0787030905,0.0650188699,-0.0681172907,-0.0308527462,0.0576828308,0.167216599,-0.0422287434,0.0814114884],[-0.038872987,-0.0583542734,-0.0329139568,0.00727361487,-0.0487205498,0.092564851,-0.0913475156,-0.0827218294,-0.0125630489,-0.136326864,-0.00143857626,0.0473279394,-0.0274866838,-0.0926262364,0.0374611244,-0.13931717,-0.0263668355,0.0976051092,-0.127710044,0.131007403,0.0891993865,-0.0821006969,-0.0420276262,0.103879914,0.0572542213,-0.107793115,0.0255147796,0.0819630176,-0.170493007,0.151718453,-0.0500251018,0.0558277778,0.137909368,-0.144400716,0.0484833382,0.124549694,-0.125304788,-0.0805277973,-0.0991962552,-0.0621321313,-0.060495764,-0.153020307,-0.10606157,-0.0422898941,-0.150876582,-0.130328983,-0.044590205,-0.110096633,0.209145322,0.0716345981,-0.120841131],[0.0184696279,0.0361614525,0.0184485149,0.0691024885,-0.0594681539,0.0400059372,-0.00445782579,0.273547739,-0.0177452005,-0.012312524,-0.034374103,-0.185844779,0.019354539,0.0512335338,-0.0933673009,-0.0515572838,-0.131165504,-0.132400751,-0.0570834205,0.105889134,-0.11440894,-0.115855671,0.0752290264,-0.0449689329,0.0826332346,0.0109529952,-0.096416913,-0.121886671,-0.159746215,0.161612168,-0.123766683,-0.121131465,-0.122082122,-0.0797886252,0.0626017153,-0.0742653683,-0.112805493,-0.108467788,0.0313415639,0.120277487,-0.0822753087,-0.120268852,-0.0902699605,-0.138919458,-0.163473561,0.155864567,0.0912307948,0.0393708125,0.15557453,-0.0335989222,-0.13056539],[-0.0100530488,-0.167037457,-0.129257753,0.14353317,0.0633876845,0.0930191278,0.187794149,0.0106083471,-0.101630226,-0.0886224881,-0.0774332881,0.0680104867,-0.016193293,0.0694000572,0.0051734224,0.0549318828,-0.016150197,-0.0536961369,0.0253380146,0.00780248409,0.0411992706,0.142118111,0.0391367227,-0.107828349,0.116329648,-0.0237028766,0.0666439161,-0.0570082478,0.042141825,0.0865639672,0.0470232889,-0.0985073373,-0.0196391866,0.0286488831,0.00109845749,-0.0220289845,-0.0322025083,-0.105262309,-0.0513962395,-0.00126136816,-0.0221578311,-0.0769755691,0.0275189131,-0.0239901599,0.071329087,-0.0609866492,0.0153696062,0.0210262761,0.00368635496,0.0863004848,-0.0412334315],[0.0995521173,0.173895895,-0.0873858854,-0.0953414217,-0.0760479197,0.128789753,-0.0471482761,-0.179367244,0.122760214,0.014533476,0.00104510982,-0.0742472708,-0.140939325,-0.1121746,0.107957482,-0.107055694,-0.0899990797,0.0154508008,-0.136087209,-0.143455833,-0.0495711789,-0.124006011,0.0460835211,0.186926007,0.11298427,0.118575737,-0.090343073,-0.0960886702,-0.150097415,0.151301473,-0.0711955726,-0.130089074,-0.161445975,0.14758186,0.149242774,0.0742234513,-0.160338968,0.0474945009,0.118595205,0.0996280536,-0.0126839494,0.0780451074,0.0874721333,-0.0564807579,-0.135619491,-0.164214656,-0.111265756,-0.105677009,0.0582445897,-0.0917425379,-0.111274578],[0.206528693,0.225874782,0.0196170751,-0.0993228257,0.0386725627,0.0365316756,-0.0308410544,-0.111526713,0.0689516664,0.110100888,-0.158636138,0.0542252921,0.158003598,-0.144403934,0.110092625,-0.193713233,-0.141945213,0.0841751173,-0.0849769637,0.158181965,0.1473075,-0.0832447186,0.0751157627,-0.113205455,-0.146389976,0.163360432,-0.105717435,0.0503193624,0.131343275,-0.156591505,0.0727516934,-0.186051533,0.0426157527,0.20960632,-0.181847036,0.115115561,-0.161588401,-0.0825833231,0.0681691319,-0.117385715,0.0746265352,-0.169750854,0.117951542,-0.157924697,-0.112667553,-0.150855556,-0.129247665,0.0896835774,0.123503715,-0.0337596722,0.0569481924],[0.126768038,-0.0501215532,-0.0274529886,-0.118659295,-0.0374696068,0.0146515714,0.0162323266,0.0432095788,0.0453226641,0.0373936966,-0.0860083997,0.0633373931,-0.0746637508,-0.0741682872,0.0210556071,-0.168936223,-0.157015741,-0.159823418,-0.0834821835,0.0730624273,0.159915209,0.086745441,-0.10408216,-0.10870301,-0.158906654,-0.0172979757,0.018391883,-0.0907861888,-0.142330766,-0.0117591927,0.0966507196,-0.072693795,0.00278203259,-0.0558681972,0.0785383731,0.101867333,0.0331639647,-0.15284799,0.073837623,0.0323410481,-0.0896855816,0.014479829,-0.0355727486,0.135682538,-0.201422244,-0.114395656,-0.0809219629,-0.15615271,0.10144078,-0.0386122912,0.00892109331],[0.0359997042,-0.0648283586,0.157391876,-0.0469742045,0.0634041056,0.168486148,-0.329846919,0.273991466,-0.0434593931,0.0227165259,-0.0980942771,-0.0408508703,0.139378354,-0.0487764739,-0.0416062139,0.087017864,0.103564844,-0.03761122,-0.0945186615,-0.0302470289,0.137810096,0.0627162904,-0.0502785556,-0.0323294848,0.0872530565,-0.105842665,-0.012601384,-0.054242067,-0.0639744923,0.014889895,0.0890681148,0.0473595709,-0.0907837376,-0.140010506,-0.0629099011,0.0643055215,-0.0805557221,-0.0333514027,0.0162391253,-0.0594259799,0.0864881501,-0.117603831,0.202513233,0.0973866433,-0.027798485,-0.0254768562,-0.0885226801,0.0684507042,-0.0417266414,0.0947162285,-0.0890998021],[0.0530632362,0.0732885152,0.0353858508,0.0757892877,0.123909198,-0.0254952237,0.0381935723,-0.0731651038,-0.0356683545,-0.122927807,0.0933944359,-0.0263274387,0.0682270899,0.00331794308,0.035021048,-0.00415964937,-0.157362655,-0.185168296,-0.069217667,0.116838798,0.103590839,0.0950715169,-0.136734501,-0.0167483464,-0.0489237458,-0.0319334231,-0.185750961,-0.150652081,0.197890863,0.193134397,-0.152086422,-0.176603079,-0.1489999,0.19891876,0.0384620205,0.00620476203,-0.0787301362,-0.0346181281,-0.0107745435,0.0762709007,0.0324356183,0.0362134352,-0.188092247,0.162590995,0.172786519,-0.184457943,0.126473889,-0.0550418757,-0.0277599934,-0.0591650084,-0.119590856],[0.180534303,-0.0367427804,0.130112663,-0.0998615324,-0.174475625,0.0240117554,0.0844893679,0.0492775105,-0.0917772055,-0.0400993116,-0.0165108461,0.0402070396,-0.112072393,0.110377669,0.0471845828,0.0476288758,0.0927501991,0.0532638766,-0.142669126,0.183240086,-0.142112017,-0.118004516,-0.108939625,-0.0835709795,-0.0495973043,0.133444488,-0.0315880664,0.108151615,0.0920756534,0.00194035447,-0.0378024653,0.148003832,-0.138336957,-0.141551226,-0.123194024,0.0634103119,0.0665531233,0.041662924,-0.0813486725,0.0550848804,-0.0659502894,-0.0985928699,-0.118550859,-0.119484365,0.0967942998,-0.0560612641,-0.137010455,0.120123662,0.144459829,0.00327030616,-0.129063576],[0.107206531,0.0167639852,0.108135231,0.112555668,0.138677448,0.0147670293,-0.12786755,-0.136887416,0.0601799712,-0.135935754,-0.0673482269,0.0253145937,-0.131133318,0.125146896,-0.0149933342,-0.144878879,-0.0629785359,0.0802922547,-0.0157738775,-0.13627705,0.0182710197,0.00690223742,-0.0398701914,-0.144044727,-0.0254244152,-0.00870668702,0.0945841968,0.108379133,0.0383715779,0.17015259,0.0473633185,0.0496790111,0.0777589977,-0.109154522,0.0134290066,0.167408213,-0.00488041015,0.0661987364,-0.114931732,-0.120094158,-0.0369709842,0.238499373,-0.139101237,-0.0993513688,0.183264449,-0.0302892365,-0.0829815492,-0.08868251,-0.0342141874,0.070478946,0.111483261],[0.106944814,0.0686173439,-0.0842700228,0.17819117,-0.0107195042,-0.0798778981,0.0253699496,0.140268371,-0.065017499,-0.0542588979,0.012294014,0.0756260753,0.165920064,-0.1241346,-0.171956465,-0.146760538,-0.151261851,0.0879289135,-0.0451205149,-0.104549795,0.0539094135,-0.135499895,-0.136438519,-0.132434979,0.0667743087,0.106217094,-0.160576805,-0.081043154,0.10439764,0.0424314812,-0.0873228088,-0.157420576,0.0647813752,-0.150866449,-0.0198792815,-0.124562554,-0.167722538,0.103124119,-0.118477829,0.0825271755,-0.0560489967,-0.162708268,-0.106224194,-0.169878289,-0.0839733258,0.101611979,-0.0520867258,0.0978359953,0.159841865,-0.12153887,0.10875605],[0.000969085377,0.105629593,-0.00956909359,-0.0300046224,-0.0111306142,-0.0744259208,0.120848946,-0.0337386318,0.129162967,0.0734381154,0.049162332,0.0954378545,0.0706392899,-0.0716866255,0.0838866979,0.08588963,-0.0737369135,-0.013949465,0.0639720932,-0.0394964404,-0.117399201,-0.148307204,-0.118424751,-0.155470058,-0.000549365242,-0.155652314,0.0637888834,-0.0696562454,-0.13826625,-0.147613972,-0.0220486782,-0.0965307057,-0.10134872,0.0318764485,0.0808180347,-0.0887948126,0.0489006564,-0.126004413,0.0328196883,-0.12468347,-0.0107062068,0.0701212808,-0.126572415,0.100975804,-0.113665022,-0.104992449,-0.142998368,-0.0819170848,0.139385879,-0.0683239475,-0.0950057879],[0.170960352,0.205484897,0.23735325,0.207588732,0.127277106,0.0281395186,-0.133734718,-0.0829407722,-0.126063555,0.182200789,-0.0587169267,0.0111224111,-0.0867076814,0.111254252,0.117183127,0.0189725664,-0.0579545237,0.0589582808,0.0265099648,-0.0291095972,-0.0378473289,0.0429143533,0.0274396278,-0.021887064,0.0800083727,-0.00891521666,-0.00702844746,0.0912724882,-0.0536835715,-0.0317117423,-0.0314882547,-0.0100239301,0.0379010029,0.00390641764,-0.00154317124,-0.0198994279,-0.102690093,0.101928331,0.0473697707,-0.0637735128,-0.0447530597,0.0668099225,-0.0737513378,0.0687872469,-0.0341183767,-0.152382165,-0.0139786154,0.0348790735,-0.0453964621,0.0883290917,0.0137768527],[-0.106929012,-0.177144051,-0.0944715068,-0.0508782826,0.0533059277,-0.10633669,0.0368992947,0.146999568,-0.0794474781,-0.0692481399,-0.0478271805,-0.0976253226,0.12860857,-0.0796420649,0.154908791,0.0692140907,-0.0719948187,-0.161043465,-0.0684749335,-0.161280289,-0.108894505,0.105019324,0.0916720107,0.0295901727,0.0610222854,0.0970668122,0.126296952,0.0607655123,0.00756694702,0.169452503,-0.105622508,-0.122142598,-0.0743390396,0.154137135,-0.0655688718,0.153876141,0.0424498618,0.103806816,-0.0776373446,-0.102052115,-0.0376156382,-0.0354351886,-0.0784926042,0.105136387,-0.179826111,-0.0103966827,0.0438585579,-0.14940007,-0.134627804,0.00948687177,-0.0829212442],[0.150029391,0.222118139,0.0835250989,-0.0842084289,0.035766717,-0.113527879,0.189561903,-0.125881106,-0.11488685,-0.00483285496,0.0855277404,-0.13510187,-0.180143625,0.00293318089,0.0609060079,0.0766794682,0.0428337343,-0.198539957,0.122526996,-0.139063805,-0.121853866,0.106101066,0.0984258354,-0.217223644,0.127808779,-0.21066834,-0.0550822802,-0.137129977,-0.234382614,-0.251381367,0.0302687697,-0.063040182,0.011981234,0.169355422,0.0992894173,-0.0949751139,0.173182875,0.106954738,0.0432873704,0.0754420161,0.062209025,-0.131408691,0.028362209,0.0844841301,0.20594883,-0.135248095,0.055317048,0.0390155204,-0.203737929,-0.0634970516,-0.0953063071],[0.0651576519,0.0436199754,0.0632180646,-0.0677606538,0.0665468052,0.0255790893,0.0985265002,0.0622978657,0.0998447314,-0.270981193,0.0562467352,0.00510710012,0.184992239,-0.127863675,-0.0621969141,0.0157159008,0.126288146,-0.0733817741,-0.0751663372,-0.0873935968,-0.106319912,0.0493537001,0.205581576,0.0680871308,0.0275607836,0.00502051134,0.0861091539,0.0485261232,-0.128461882,-0.119015127,-0.0028346288,0.0323585346,-0.06846641,0.00883880723,0.0551690385,-0.0189384893,-0.0532362312,-0.0962769762,0.00463309698,0.0652547106,-0.0623081997,0.0341654904,0.0832995549,-0.081238851,0.0838858038,0.204496667,0.0956882834,0.128396332,0.0277719926,-0.056859795,-0.036532633],[-0.0632158369,0.0478278957,-0.145098701,-0.0551044345,0.0876905471,0.0159739647,-0.104266599,0.103736438,-0.157270983,0.0683102831,0.0264336895,-0.140927181,-0.228488997,-0.143983781,0.0582896993,-0.138033494,0.0350007191,0.124820381,0.0902116075,0.186813861,0.0226373803,-0.13675943,0.0701617151,0.199700847,-0.194487229,-0.0451003835,-0.0744969025,-0.131270021,0.09986756,-0.0716210455,0.00332463323,0.155689314,-0.188684434,0.0704353079,0.0775357336,-0.17840077,-0.22453326,-0.0139472634,-0.148891002,-0.194227636,-0.0580979884,0.0634711236,0.118437499,-0.104121558,0.0431200676,-0.0132356277,-0.00656625442,-0.128841311,-0.109479502,-0.0521670692,-0.0828720406],[0.185191542,-0.023123676,0.118658252,0.00383765856,-0.0929491818,-0.0279490892,0.0526586287,0.0511702299,-0.0342309065,-0.00909158681,0.0635502115,0.0738634467,0.131604224,-0.0383290574,-0.0346404947,-0.0930520371,0.0365116484,0.0169142373,0.0635594949,-0.0762308463,-0.118420511,0.0500899777,-0.0336193666,-0.0592449903,0.0722204894,0.164383739,-0.00215606205,0.0357539691,-0.0542834774,-0.0342532285,0.0385437831,-0.0829719603,-0.0314199813,-0.0657134429,-0.0934873819,-0.0824194625,-0.0904066861,-0.033398509,-0.0837771371,-0.0285844896,0.0759133548,0.00867005717,0.1349857,-0.0487535931,-0.0837760419,-0.0440828018,-0.024208013,0.03574384,-0.0835221708,-0.00651082117,-0.0169107914],[0.01814905,0.114727333,0.181076258,0.0690682828,-0.0993025079,-0.0249946378,0.128201842,-0.0796064809,-0.197802275,0.0039617857,-0.0616996363,-0.00871088728,-0.0298446752,-0.0534219258,-0.106316723,0.0218478963,0.0307507925,0.052910991,-0.0291236155,0.14235945,-0.0578223467,0.0572831891,0.173903972,-0.0725314915,-0.0370019376,-0.00197813613,-0.0906334892,-0.123271205,0.131584212,-0.0709364265,-0.0436858349,-0.103597261,0.150175408,0.11301218,0.00178401615,-0.125078991,-0.0779480636,-0.00338536524,-0.0996990427,-0.07634864,-0.0610022806,-0.121921994,0.190566719,-0.108062439,0.126277089,-0.110355861,0.0249250997,0.143902257,-0.14202629,0.100198016,-0.0230350569],[-0.0762183443,0.132064745,-0.115131691,-0.00849239435,0.0179173388,-0.0597712062,-0.0706680566,0.11696849,-0.102868214,0.0828003511,0.153629377,-0.0409361236,-0.0926857218,-0.0142058479,0.0328247957,-0.0705324784,0.121605523,-0.160232052,0.0181886088,0.116056852,-0.148948625,-0.0210324284,0.105915189,-0.0587831363,-0.0677454248,-0.0549653731,-0.106304727,0.0300228614,0.0461025722,-0.275060058,-0.0485960469,-0.053023681,0.0516641438,0.0993993878,0.00497502554,-0.0193802472,0.0136689236,-0.0191738028,-0.07129848,0.0853243321,0.0397994034,-0.11226353,-0.080178231,-0.0122406241,0.0221319217,0.113081194,0.114885837,-0.0224165954,0.0234603714,-0.0417419821,-0.0977792144],[-0.0665237308,-0.00196575606,-0.0154799502,-0.0836488605,0.0981180593,-0.0798477978,0.0128263766,-0.0327851772,0.0598168969,-0.00713674305,0.111184582,-0.255884081,0.128441036,-0.176284716,0.0282917805,0.0718504116,-0.0653043762,-0.163475171,-0.150423825,-0.188323021,-0.0539289601,0.0733975768,-0.0454265587,0.0115452027,-0.166369423,-0.107787915,-0.171427414,0.137112021,-0.0976407751,0.158103094,0.0629097521,-0.176606908,0.074902989,-0.099419862,-0.186064109,0.137205213,0.0420117155,0.0354642048,-0.179145887,-0.152553603,-0.080131337,0.0387949646,-0.0473628864,0.0840739608,0.153274462,0.164545015,-0.179066598,0.10056337,0.064166069,-0.0907826722,0.0507997647],[0.0683120191,0.0335861146,0.107370421,-0.0611459315,-0.100597821,0.0673409477,-0.0471456014,-0.103307292,-0.0380710289,0.0639635921,-0.0760100633,-0.0774626359,0.172962248,0.1102608,0.0371379368,0.0614688694,-0.130011514,0.0713834688,-0.138414487,0.172436193,-0.0981656983,-0.0504682548,-0.0724466667,0.00957825966,0.126790181,-0.125948489,-0.0953012481,-0.0503582284,0.0572793372,0.181022972,-0.0638347417,-0.0773279294,-0.112581253,-0.11509864,0.111086413,0.0100028021,-0.0218708571,0.0208152272,-0.0251150224,-0.0924033448,0.00856447965,0.161370143,0.063408047,0.0151485158,0.0923094675,-0.0808321312,-0.134193957,-0.064265348,0.0558983311,-0.0907737091,-0.0341918916],[0.107354797,0.0719551668,0.122684456,-0.0199968386,-0.00382994278,-0.0158743802,0.0501642153,0.0136808055,-0.0532065816,-0.0651843846,-0.223064333,-0.0330865383,0.116225831,-0.141384706,0.0621135198,-0.118501358,0.0356756113,-0.00977096986,-0.153922036,-0.150167584,-0.182430357,0.164833143,0.0313226916,0.153324455,-0.123052336,0.120143048,0.00551995542,-0.164354458,-0.141223684,0.074309133,-0.0677253082,0.0227508117,-0.0924465209,-0.113937803,0.0607733168,0.0608573221,-0.0892419219,0.0532847345,-0.142569244,-0.145035192,0.0332395397,0.0877805576,-0.0127964402,-0.0587053709,0.170061037,0.0964115411,-0.174791113,-0.0938816518,-0.140252843,-0.0860335529,-0.0855756029],[0.00707380706,0.0901889428,0.0815435573,-0.142125532,-0.0521365926,-0.051054135,-0.0251839049,-0.0934827104,-0.0893406793,0.108778521,0.0913179293,-0.180169031,0.113006614,-0.0936076194,0.0258344449,-0.0718471557,-0.0871964097,-0.086345017,-0.0181232151,0.0914245546,-0.0875953585,0.0247909874,0.148970768,-0.0336208977,0.0935413241,0.0853556767,0.128961235,-0.150682926,0.0174457449,-0.0708621815,-0.0748840496,0.0595799536,0.0645409599,0.0043814471,0.145881325,0.0795553103,0.14068538,-0.177235916,-0.139343888,-0.0758511797,0.0463316254,0.132440835,-0.0853969008,-0.083056815,0.218548387,-0.125666261,0.0524590015,0.107103378,-0.0319115706,0.0246712808,-0.0467833951],[0.119330227,0.0261257738,0.0345661156,0.00788970478,0.0698607787,-0.127621233,-0.312166125,0.198960558,0.0508444197,0.0665457025,-0.00394960819,0.116594262,0.105797127,-0.0701769069,0.00523984293,0.137170285,-0.0799584091,0.0125405453,-0.0151803764,0.0960711688,-0.0278708115,-0.0912697241,-0.0317366309,-0.0562491752,-0.0398091674,0.0590905026,0.04542109,-0.0261286646,0.0169063099,0.0327019542,0.0999344215,0.0244140029,0.0539111793,-0.0704713315,-0.0622209646,-0.0768449008,-0.078256838,-0.0598034933,-0.0557655282,0.141219541,0.105471246,0.0436468497,-0.0399743095,0.0487520769,0.00339902658,-0.0331367888,-0.0483081117,-0.0794427544,0.000869742013,0.131212786,0.0577746965],[0.00136109919,0.00529174833,-0.0780019835,0.0689667612,-0.0324662067,0.131555498,0.13719666,0.054792583,-0.0756090581,-0.0417850912,-0.0669284835,0.136954039,-0.11146237,-0.107683674,0.0809768513,-0.0450217277,-0.121849671,-0.0713588744,0.0985638723,-0.114386886,0.129973829,0.0601061098,0.130380988,-0.0917257369,0.117550671,-0.0879318342,-0.027306078,-0.106241405,0.101820521,0.120677829,0.0246484559,0.0281403363,-0.133714169,0.0745788068,-0.0387376025,-0.115405239,0.111838177,0.0122491894,0.12736167,0.121901356,0.0627369806,-0.0606495477,0.0716599301,0.128094181,-0.0900235176,-0.144374862,-0.128400654,-0.0888814181,-0.0178620145,-0.00250608218,-0.0455058962],[0.00959308259,-0.0762069598,0.0157922581,-0.11434859,-0.0249992479,-0.090930298,-0.134510458,-0.00555327954,-0.0433701836,0.117040865,-0.0848209187,0.0163866561,0.029433934,-0.153968811,-0.145656243,0.175253734,0.035636615,-0.142596588,0.156127885,0.106349796,0.0901025832,-0.149136052,-0.0164037421,-0.0699060187,0.10987062,0.175743684,0.0809891969,-0.115496933,-0.218260035,-0.0764168948,0.089358218,0.0779866651,-0.0556707978,-0.0161856059,0.114957839,-0.140571043,-0.108398676,-0.0228837375,-0.13105619,-0.131719247,-0.0320710465,-0.224923775,-0.0504234284,-0.0838125274,0.135732934,-0.145622835,-0.173640072,0.0413916036,0.119833454,0.0158463586,0.0519068763],[0.0923668444,0.00633700052,0.0578930564,-0.0173993558,-0.0721932128,0.0178992189,-0.137297407,0.101758674,0.164119706,0.0347917043,-0.119493701,-0.256317228,-0.0769694522,0.073335126,-0.151110828,0.0121735809,0.0307929609,0.0979750827,-0.173950106,0.129364207,-0.020208355,0.0416667089,-0.192887783,-0.155934721,-0.16773732,-0.05283463,-0.0348530151,-0.185380444,-0.152795866,0.100256599,-0.0171973668,0.142952606,-0.000858523767,-0.150908113,-0.151538134,-0.160442963,0.12896587,-0.00492098648,-0.0361906812,-0.132301822,-0.0118561601,0.0830544829,0.0451791473,0.0583398528,0.045315966,0.107178427,0.0766977593,0.0546555258,0.0329610072,-0.0313640311,0.0537397675]],[0.182213336,0.106850699,0.0124764973,-0.109702155,-0.0327874534,0.153260306,0.0120017314,0.0985462442,-0.0658441409,-0.0263583194,0.11355076,-0.0739349797,-0.124702811,-0.059928678,-0.0619743206,-0.0457203165,0.0888560936,-0.0172583163,-0.0987677351,-0.0598261468,-0.000563392008,0.189883277,-0.156034529,-0.0427538753,0.176257342,0.148436517,0.145433053,0.00520166242,-0.0593032278,0.0611554757,0.0254336409,0.134865001,-0.0565330125,0.100200996,0.182755873,-0.040832229,-0.102807052,-0.0552354306,-0.187443197,0.119567573,0.0177529138,0.122387864,0.00809016265,0.101221614,0.139818221,0.14621377,-0.0174548104,-0.055128254,-0.128910065,-0.0404419154,0.00964915566,-0.0712458417,-0.0327593312,-0.0825291723,0.0854144692,0.115893386,0.100141741,-0.0484158322,0.126692295,-0.0212645177,-0.00474685337,-0.0600881875,0.146761462,0.0103729479]],[[[0.123195745,-0.0381884873,0.0117082754,0.0938879773,-0.0607889742,0.0023162039,0.122380525,0.121015884,0.0850308537,0.159777731,0.0420665555,0.111572318,-0.0576554984,0.101307571,-0.0765776038,0.152929172,0.125666469,0.146990806,0.0116407815,-0.019800283,-0.0900430307,-0.0147570893,-0.0128567349,0.0534300879,0.0135334758,0.145263761,0.053681761,0.0255485661,-0.0737694278,0.06575308,0.0887454897,0.00735787954,0.00433113333,-0.0602355413,0.109987371,0.0990536362,0.0845772251,0.0350625925,-0.104605958,0.00466439826,0.136657149,0.00233643013,0.0419100262,0.134368405,0.00864114705,0.0422536209,-0.0429957807,0.104834728,-0.103555493,-0.0660741776,0.0341349728,0.128565475,0.145438612,0.0959138051,-0.0729453862,-0.0814382806,0.0801637769,-0.0432583392,-0.046169728,0.146359816,-0.129291609,-0.0659975559,0.0227528233,0.0890933797],[0.0752725303,-0.0321915671,0.0290587321,-0.103226259,0.00464425795,-0.11069344,-0.118140996,0.0253447592,-0.0313396342,-0.120959334,-0.0405170359,0.0471986532,-0.119588912,-0.114878185,-0.0881656036,-0.0439209044,0.0348893367,-0.140813395,-0.125960961,-0.12773481,-0.10699591,-0.013873972,0.0155563429,0.0746924877,-0.0267461278,-0.0824976265,0.0775735378,0.0272276644,0.00157152407,0.0184622258,0.0614300109,0.0305627603,0.0790817961,0.0679805279,0.0308428351,-0.0832954347,0.0627589151,-0.00883566961,-0.00333839189,0.0964926779,-0.00779972598,0.013421718,-0.12574245,-0.00300283474,-0.0989685431,-0.0676769465,-0.0385090895,-0.0122719686,-0.0673571825,0.0617882162,-0.0535993986,0.0907259658,0.0749581009,0.0318178721,0.0771932229,-0.06552542,-0.0152306594,-0.00244970247,0.0500590652,-0.0840874389,0.0265330803,-0.112893082,-0.0510824993,0.0698508397],[0.0977414623,-0.0697262511,0.130052045,-0.0491846576,-0.0432810001,-0.0530718118,0.0368017964,0.100818723,-0.083299011,0.159811214,0.133881032,-0.0433215387,-0.0739060193,-0.0496889204,-0.0857812092,0.0681153983,0.0413130037,-0.0395783223,-0.0642244294,-0.00450996263,-0.0399182476,-0.0463025533,0.0588278063,-0.0927173495,0.0223166272,-0.0446404964,-0.00462878495,0.0281232484,0.108614847,0.093661502,0.109584227,0.0335886739,0.108191967,0.118470825,-0.056091357,0.00150746165,0.0303261764,0.0726828426,0.0440832041,0.00151674484,0.150096163,0.0917479768,0.111093141,-0.0991696194,-0.0416669101,0.111934066,0.0862962008,0.0312483478,-0.114351161,0.0130524328,-0.0553757027,0.131723151,0.0748941973,-0.0508529432,0.00587504217,0.0485936254,0.123423167,0.140922278,0.0489065908,0.0940074623,0.0586394481,-0.0450815484,0.152812347,0.00560707087],[-0.134724542,-0.111770123,0.0926907808,0.0390530229,-0.0782133788,-0.123399712,0.0501857437,0.067978099,0.0917075872,-0.0197774135,-0.0373880677,-0.0260987785,-0.0168559998,0.0083417818,0.0909237564,-0.0563435368,-0.088650912,-0.0601327382,-0.00896154251,-0.0494100526,-0.068245478,-0.045215793,-0.0527972616,0.0684580654,-0.116708763,0.0916951969,-0.0485378914,-0.112253077,-0.0369989686,0.0252117645,-0.051224757,0.00833323691,-0.122401573,0.0865822583,0.10486187,0.0828645602,0.0215687659,-0.11547789,-0.0255873408,-0.0705994964,-0.0665239617,0.0417216159,-0.0071124793,0.00635455688,-0.0974801034,0.0826503783,-0.140847683,-0.105095103,0.0520397387,-0.0932491869,-0.0755295902,0.0463713035,0.0722038001,0.0726796687,-0.0237883795,0.00675106002,-0.121439047,0.0711687282,-0.141675204,-0.00251147104,0.0845493302,0.00772704883,0.0249592513,-0.075872466],[0.137667149,0.0819405541,-0.0616047606,0.121361621,-0.0295970384,-0.046470657,0.0305726714,0.0565725118,0.000406347739,-0.00573639106,-0.042005498,0.0672699064,0.0292474478,0.134898454,-0.0452940986,-0.0520920306,-0.000691747933,-0.069120653,0.0945487842,0.0174039807,0.0191520844,0.149818048,0.0539611802,-0.0439158529,0.0504417196,0.127243668,-0.00353965792,0.053573966,0.0684435591,0.151726395,0.103291661,0.0505878106,0.113219097,-0.0449838303,-0.0069915941,-0.0893471912,-0.0341945179,-0.0479578078,-0.0385194197,-0.0812331289,0.0842197463,0.0610828176,-0.0418762788,0.0656419173,0.089226611,-0.0242946353,-0.0292380098,0.127791807,-0.12092261,0.14039883,-0.080665648,0.0582483597,0.0185397696,0.0440486111,-0.122086018,0.0695083886,-0.0160317756,0.0485409759,0.0535222925,-0.00543676037,-0.0796457455,-0.0992783606,0.0713913813,-0.0636999831],[0.00674362015,0.134647653,-0.0943131447,-0.0541221201,-0.132501841,0.0775569379,0.102994792,0.036104545,0.000468366605,0.0844385475,-0.0581137352,-0.08397948,0.0644159541,-0.00632204674,0.0858732611,-0.15368934,-0.146212608,0.0540849678,-0.114815459,0.0548067726,0.0865117535,0.00388233666,-0.105191633,-0.0599132255,-0.134310797,0.0450495109,-0.0758725181,-0.0255207941,0.115065902,-0.12826927,-0.105741367,0.0725578517,-0.0461465232,-0.151105091,-0.107875198,0.0169668887,0.122625172,-0.00141599996,0.0276961904,-0.100989081,-0.115931682,0.00499541545,-0.143967301,0.0603487268,0.041140303,-0.0960684866,0.0872697905,-0.0871005282,0.0457985066,-0.131773725,0.10015028,0.060865283,0.0887848511,-0.118300237,0.0537333414,-0.114442408,0.101407312,-0.114550307,0.080122076,-0.0684847757,-0.103789411,0.0853013694,-0.0809014291,-0.158436626],[0.0017178834,-0.0202159919,-0.101490475,-0.0071116141,0.0173706226,-0.0434288643,-0.112671837,0.0650248826,0.0497537963,-0.0888109431,0.118746147,0.0382217392,0.0588754006,-0.0889774784,-0.0575474463,-0.0630228221,0.121755764,0.0892857462,0.00216359925,-0.0960450843,0.0418995172,-0.0680288747,0.139866561,-0.113558888,0.0330610946,-0.127199903,0.00573770516,-0.091324985,-0.053867802,0.0126769897,0.113696627,-0.137677416,0.108311862,0.0154294791,0.0883352607,0.0570602342,0.0896143094,-0.178838953,-0.191144913,-0.0590719655,-0.156531617,0.145609409,-0.0449803136,-0.0363543071,0.0298305489,-0.0967283249,-0.0958700255,-0.0521880724,-0.0640163496,0.00565914996,-0.348178566,-0.113040306,0.00503490213,-0.0918296501,-0.0409663171,-0.102685288,0.0658265129,0.0554976836,0.0497544073,-0.128447995,0.0918977335,0.039303381,-0.0338106379,-0.105005078],[-0.067108497,-0.0727918074,-0.0421624333,0.032304801,-0.0572664216,0.0315294415,-0.0367409289,-0.017022457,-0.0210062116,0.0165336709,-0.041915983,-0.0313976668,-0.0408795327,0.0131510831,0.0100824721,0.0250266958,-0.0205213148,0.0240539275,0.0618464313,-0.0443980657,-0.058950033,0.0149786705,-0.0362618826,0.0338444225,0.0235790573,-0.0339075997,-0.0151605792,-0.0502194539,-0.0074842996,-0.0182519071,0.0200756732,0.0617979243,-0.0311409123,0.0115806954,-0.0983354747,0.0391080827,-0.022798121,0.0113017214,0.0133099817,0.0303851943,-0.0257066917,-0.015981514,-0.0266862791,-0.0479390956,0.0730970949,-0.0282528941,0.0321390592,0.0279834457,-0.0394473262,-0.00401828671,0.0427742749,-0.0226511583,-0.0174395833,0.0512058064,0.00182333647,-0.000723327161,-0.0147661204,-0.0465729907,0.0069342684,-0.0297634844,0.021513585,0.0245343633,-0.0807973221,-0.0288059767],[0.130530179,0.032457564,-0.0808573365,0.0767880827,0.0143711651,0.0453544706,0.0328281559,0.0632315278,-0.0012992397,0.0458118655,0.111233801,-0.0536337495,-0.061205294,0.124858655,-0.0573205613,0.0419179276,-0.0501278974,0.0159070548,-0.0442017801,-0.0210179854,0.135938361,0.103590935,-0.0591408461,0.0221616495,0.00229287194,0.106115177,0.0779918209,-0.0376847871,0.0763002932,0.066453442,-0.00783323962,0.0531111769,0.0910527036,0.0285810381,-0.0783177316,0.0950119719,-0.086720407,-0.0152862873,-0.109418713,0.135371879,0.159528881,0.00625886675,0.0343472473,0.0381185226,0.030218862,0.137534872,-0.0370032378,0.0223061442,-0.126278818,0.117856614,0.150418848,0.145478278,0.0854552761,-0.0782755613,0.120521292,-0.0207983907,0.100527212,0.0956516191,0.0684420466,0.0463159382,-0.129092544,-0.00585435797,-0.0649181828,-0.0447178036],[-0.0247375593,0.00438316772,-0.0414763503,-0.0945835412,-0.0565822721,-0.0104992632,0.0286063217,-0.00310104899,-0.0518218987,0.0412246697,0.0554104447,0.0117811123,0.0580945425,-0.0224697217,0.0301872566,0.0229717661,-0.0233026519,-0.0970772579,0.0307772756,0.0726808906,-0.0682138205,0.0334513038,0.0486374311,0.0776903108,-0.15813984,0.0555441976,-0.0985117629,-0.080727376,-0.104566529,-0.0434500948,-0.0465628654,-0.11432866,-0.133938834,0.0552196316,0.0697668493,0.00165406428,0.0569639616,0.0290687513,-0.0775595307,-0.0699907392,-0.118056752,-0.075913094,-0.0534345582,-0.00922123808,0.0974040553,0.0630180016,-0.102406718,0.0228215009,-0.10152065,0.0440896079,-0.0928313881,0.0873208493,-0.00378490123,-0.129760444,-0.0476408601,-0.084604837,-0.14071171,-0.00619337568,-0.0119395265,0.0701580048,0.0941070467,0.073408246,0.0754524395,0.013268739],[0.0388846807,0.0425407477,-0.0524369851,-0.00628180336,0.0879469216,0.0933579281,-0.0743378848,0.0339656249,0.121017024,-0.0113042314,0.12808758,-0.101491608,0.110665135,-0.0677576661,0.0576083772,0.012754037,-0.0061510168,-0.0683573633,0.00885496754,-0.0665722191,-0.0756356642,-0.0300402865,0.00920383446,-0.0308261029,-0.0723533258,0.112620085,-0.0833093897,0.0288031567,-0.0151048368,0.0697455481,0.0563887246,0.00282870559,0.130917177,0.093749918,-0.0484259501,0.12345925,0.0904511437,-0.0620135404,0.0888777524,0.135462299,0.136295289,0.0956352949,-0.122534215,0.116487734,-0.0259177517,0.146157086,0.131382823,-0.103281155,-0.159569502,0.153587595,-0.0460713282,0.0576660447,0.164848104,-0.0445900336,0.0935873017,-0.0328703225,0.017697813,0.142703131,0.0821274742,0.131612152,-0.138271838,0.104680188,-0.0573583059,-0.0764417648],[0.104455955,-0.0233085454,-0.00988736842,-0.0978537127,0.00853290595,0.0873334706,0.0203234553,0.138156623,0.113151819,0.0626275167,-0.051998578,0.060873948,-0.129961297,0.154133648,0.0195245072,0.0799106359,-0.0247932188,-0.0727910772,-0.0268776231,0.135620758,0.00345188449,-0.0501738563,0.0152539359,0.0777200684,0.097127147,0.0565517507,0.0418483689,-0.0337452739,-0.0367567241,-0.0269489512,0.111122943,0.137745157,0.0359911993,-0.0636866614,0.0607362427,-0.000499807065,0.113370404,-0.0365780741,0.0269698892,0.00334815588,0.0441657864,0.0653542578,0.0512044728,0.0252328832,-0.0709195361,0.112273395,-0.0364756323,-0.0519005619,-0.0309070349,0.139970526,-0.0584431291,-0.0624800511,0.0868368447,-0.038901642,-0.113471195,-0.0395209379,0.101835385,-0.0291783679,0.144989982,-0.0320353918,0.0724143162,-0.090774104,0.0916127488,0.100876041],[0.0386958756,0.0798328221,-0.0740604326,0.0430038199,-0.0252074655,0.0624776892,0.0114236753,-0.129052803,-0.0777805746,0.0260231644,0.034337718,0.00497118197,-0.121644787,-0.099712804,-0.0412820801,0.031918373,0.0584152564,0.0186273865,0.0256546661,-0.0730209202,0.085797973,-0.0311445855,0.023475457,-0.0309153441,0.0181921273,0.049465064,0.00437485008,0.0789438859,0.030663453,0.0403444059,-0.105567262,-0.0884661227,-0.0937531441,-0.07253851,-0.109347582,0.0271295067,-0.101098605,0.0795999244,-0.131684735,-0.000748434803,-0.0177186877,0.0311418585,-0.112844683,0.0207703672,0.00654381048,0.0647783205,0.0172550529,-0.0825401023,0.0369150117,0.0708210319,-0.0974407941,-0.0408735014,0.00202587619,0.0729776472,-0.0919566676,-0.0434466898,0.018538272,-0.103770331,-0.13161765,-0.136684716,0.071264863,0.0618919656,-0.115072832,0.0904472545],[0.0120852403,-0.00914447661,0.0218286384,-0.105010107,-0.176999152,-0.155913502,-0.026624864,-0.0568756312,-0.0589728132,0.0316490605,-0.0357769094,0.0255374014,0.158315256,-0.0175152346,-0.0376975201,-0.0963106155,0.105490021,0.00309777702,0.0782901198,0.0442805141,-0.00429030601,0.0835059583,0.122396894,-0.0423562229,-0.179690868,-0.0167569723,-0.163608655,-0.0458633937,-0.0405695178,0.084002018,-0.154747203,0.0457432717,-0.0101186251,0.0912600756,-0.151837677,-0.0578629002,-0.106809199,-0.140306547,0.0438341685,0.0608643554,0.0032842285,-0.0228975825,-0.138352171,0.00498387963,-0.0616078973,-0.00224843901,-0.0277712177,0.0106974635,-0.127113104,0.108420864,-0.210050821,-0.138608173,-0.108418256,0.030783562,0.0374701135,0.0491410419,-0.0993280858,0.0417705029,-0.0054544895,-0.0432493947,-0.0694497377,0.0107571213,0.0476102233,0.0320924409],[-0.0430763513,-0.0535408817,0.110901214,0.0599835068,0.0411993712,0.0499484725,0.071340777,-0.0727546886,-0.00415591476,0.164128825,-0.0599058084,0.133123934,-0.0503947213,0.00572312064,-0.038559638,0.0800613612,0.145544276,-0.0688050017,0.0440118276,0.139088497,0.0150899105,0.0473008417,0.0885730162,0.129101634,-0.0551625639,-0.0533019826,0.0771639496,0.0460314341,0.0124175521,-0.0362672172,0.139554009,-0.0202080421,0.0244091339,0.0232079979,0.00562407542,-0.0380973443,0.0841126144,0.0642511696,-0.0248690844,0.0218761563,-0.0683805421,0.138727188,-0.0242198892,0.0926598236,0.0461310558,-0.0533473752,0.00237574242,0.144260988,-0.00466371886,0.0725272968,0.0599052981,0.0653241873,0.0759949684,0.0645386353,0.0181636102,0.0553106219,0.111907341,0.0845620409,-0.0866007581,-0.052531369,-0.00204576412,0.0198706482,-0.0250403602,-0.027346829],[0.0765507817,0.0791440755,0.10162282,0.0582389943,0.0545087606,-0.00596850831,0.128918067,0.0746811926,0.0271248706,0.091654636,-0.0826796666,0.126941368,-0.119370386,0.136419177,-0.00706315972,-0.114599787,0.152726769,-0.00850753859,-0.179478899,0.15894343,-0.0994022638,-0.0588810332,-0.120814383,-0.0702630505,-0.268718958,0.112921104,0.0398313105,-0.00648484891,-0.166816279,-0.043804951,-0.0604428276,-0.0927631706,-0.0600253046,-0.0438819416,-0.127129734,-0.0591788515,0.104471974,-0.136750028,-0.11112491,-0.123519711,0.0223777425,0.0845906958,0.152906984,-0.138521537,-0.0483553,-0.0282282308,0.0501677878,-0.0868577361,0.129623771,-0.0601351559,0.141529649,-0.179065824,0.0499912389,0.156304896,0.144913107,0.115816027,-0.131928012,0.177942589,-0.099484317,0.0352651551,0.00697979238,0.052821964,-0.0928402096,0.0139752617],[-0.0555665232,-0.0450111814,0.074047789,0.04105369,0.112333618,0.0360922143,-0.0245948117,-0.0891284794,-0.0947726071,-0.00755400537,-0.0242944937,0.0797080621,-0.0164985135,-0.0347193368,-0.0845892802,0.00869431533,0.0884658173,0.0418055728,0.106164239,0.120845467,0.0394872464,0.00770415412,-0.0305374134,-0.0539330356,-0.0152596757,0.00294079166,-0.0581813343,0.0562219582,-0.0350429974,0.119297944,0.116283059,-0.0428120978,-0.0830202699,0.115534745,0.0987927988,-0.0605694465,0.00614033127,0.0581788942,0.0513734557,0.016251849,0.138080627,0.00306581263,-0.0567097366,0.041844096,0.0100263609,-0.0811900422,0.0528493114,-0.0138892606,0.0640514269,-0.0262843482,0.106922939,0.0821785107,-0.0211743023,0.0838593841,0.022510156,-0.0754501596,0.0626169443,0.0752297789,-0.0541593432,0.0683016181,-0.0875124782,-0.0322273932,-0.0560448393,-0.0347664356],[0.0607637502,-0.044026494,0.0868525878,-0.0714373663,0.0469636023,0.12436945,0.0546781123,0.138104841,-0.0759058818,-0.0267295688,0.135231256,0.0802296773,0.0405877046,0.0099807512,0.0474988818,0.14902401,0.150829583,0.0918262154,-0.0265709646,0.0687534362,0.0697321594,0.116554856,0.117652692,0.0434818082,0.144355491,0.129744545,0.0104707088,0.145302519,0.138896927,0.0841786414,0.0425424427,0.0998071283,0.0345874839,-0.00829316396,-0.028822599,-0.0632995963,0.0801773518,-0.0247505587,-0.101177074,0.0620333776,-0.0791373476,-0.0392176174,0.0188685786,0.125552028,-0.0197213162,0.0817950144,0.126566887,0.142988458,-0.0874687582,0.0328878053,-0.0347241759,0.0772500783,-0.0272380374,-0.0396726578,0.0201011095,-0.0768264979,0.116622932,0.109713942,0.139644325,-0.0000381305945,-0.059598133,0.131466225,0.076022096,0.00186810631],[0.00395485433,0.0221793018,-0.035154596,-0.00738376286,-0.0211420115,-0.00534739625,-0.037800964,0.00413799752,0.000564017333,-0.00948294718,-0.000319428655,0.0313386284,-0.0267647523,-0.0227083024,-0.000155121961,0.0178381484,0.010450027,-0.00261297193,-0.0415594317,-0.0069515612,-0.0154117066,-0.0372982919,0.0106816543,0.00798004866,0.026441481,-0.00635657134,-0.0344638117,0.0346754305,-0.0063327658,0.0102090724,-0.0414572097,-0.0149218608,-0.0082151955,-0.0544169396,-0.0407943316,0.000388791756,-0.0367142111,0.0291314274,0.0000142012286,-0.0112979971,0.0504931323,0.0289064944,-0.0105902655,0.00327860122,0.0413294211,-0.00509373983,0.00219218782,0.000872031087,0.00206416496,0.0170341562,-0.00369325583,-0.00803782418,0.0286224801,0.0233498886,-0.0527759381,0.00854304619,0.0323959999,-0.0468413234,0.00135761523,-0.000279632513,-0.0251334906,0.00667376677,-0.023157306,0.00700201886],[-0.045185715,-0.0277001094,-0.00911455974,0.000176947535,-0.0322355591,-0.0605506785,-0.0593894087,0.00702841906,0.028645806,0.0175930746,-0.0366874114,0.0313873813,-0.046410691,-0.0147157637,0.0424196459,-0.00634583505,-0.0308009479,-0.0380656347,-0.0131200003,0.0201855619,-0.0448744744,0.0366290584,-0.0263951682,0.0058007068,0.0298974328,0.0469964258,-0.0484973937,-0.0736859664,-0.0764206499,-0.000581358327,-0.0173654743,0.0739622191,-0.0221892595,-0.0435818173,0.00438082358,-0.00803683512,0.0240385737,0.0145925032,-0.00126258447,-0.0495149717,0.0441137291,-0.0782110617,0.0731325001,-0.0669976249,0.00952952355,-0.0690751597,-0.0194673594,-0.00209034234,-0.0405334048,-0.0471021384,-0.0146304639,-0.058957912,-0.0435431823,0.0125790257,0.061910972,-0.0462548137,-0.0220875628,-0.0429708995,0.00935811922,0.00295020547,-0.0305127464,-0.00998356007,0.00279870979,-0.0301501434],[-0.144657299,-0.0922914073,-0.109574966,0.106053188,-0.0226536691,0.0850520954,0.0289772376,0.000990770408,-0.155672863,-0.0990052,0.065984413,0.0414730236,0.0638297945,-0.0888942331,-0.0909154341,0.0119938562,-0.0850899145,0.0340912752,-0.0178527776,0.00623632176,0.128086656,0.00492844637,0.0394137464,8.15562089e-8,-0.0275502559,0.0651036054,-0.120756015,-0.0741868839,-0.107233718,-0.0299807657,0.0723731294,-0.148578331,-0.0581042282,-0.0065301517,-0.0912225544,0.0325868614,0.0133208884,-0.0344235636,0.0949397832,-0.167991191,-0.208376586,0.0637389421,0.0610298999,0.0774037838,-0.0317630433,0.0732336566,-0.170950472,-0.104611918,-0.054308556,-0.0864033401,-0.0960232317,-0.0173451975,0.0322592892,-0.153494462,-0.0844112188,0.0377003998,0.136910617,-0.0788514167,-0.137897626,0.0361180417,0.00571910106,0.0259057395,0.000450987573,-0.130267218],[0.077226758,0.140391096,-0.00535030384,0.00656195916,0.152624726,-0.0290671159,0.0122021725,0.04357538,0.0239721034,0.131698474,-0.0127067221,0.0425068326,-0.100873142,0.0771720707,0.0138562936,-0.0133313881,0.0930224434,0.0510500595,-0.126846656,0.0556519628,-0.129005402,-0.0438195355,0.109608307,0.0785844177,0.0384777822,-0.0494044945,-0.0861402377,-0.0604998544,0.0221704375,0.0406298526,-0.00933115743,0.064865686,-0.0164114852,-0.0675717145,0.0628529415,0.0625104159,0.112160265,-0.05893296,-0.116421305,0.0246137232,0.13090986,-0.0639791489,-0.10552334,0.122017153,0.119364947,-0.016820265,-0.0768938959,-0.0704050809,0.0784981251,-0.0284078475,-0.0692784563,-0.0747424215,-0.0379981697,-0.00392916799,-0.00606417097,0.0549952313,0.0122496523,0.0637524426,0.0494541042,-0.000722217606,0.0148772122,-0.0371833853,0.140812874,-0.0596107431],[0.020632863,0.0195850134,-0.100318685,-0.102348223,-0.0977152884,-0.0415818505,-0.127612144,0.126358226,-0.0364255048,0.0584607273,-0.0932964981,-0.110668525,0.0191466156,0.110274613,-0.0469771326,0.0533043779,-0.0740756392,-0.100859813,-0.0958609954,-0.103864729,-0.0204746202,-0.0544011109,-0.111705482,-0.0590112768,0.0731794164,-0.145737782,-0.0662837997,-0.0167686772,-0.0689878985,0.018537119,0.114704497,-0.0392401516,0.0460975729,-0.112302713,0.0617201962,-0.0710116699,-0.0709279105,-0.0224555023,0.00431082444,0.101400912,-0.0739135742,0.0819734633,-0.107658982,0.121282205,0.066375114,-0.141958088,0.0440955125,-0.052218467,0.0298220124,-0.0333777033,-0.0918764099,-0.0425782017,-0.0560169183,0.0176889561,-0.00791663397,-0.113963395,0.0914069042,0.0659612119,-0.0715118572,-0.105346069,0.0226937588,-0.0324502848,-0.0829266906,-0.167403579],[0.143119767,-0.00104287849,0.145118222,0.11581526,-0.0330272131,-0.0198444333,-0.0307562985,0.070602715,0.0068841232,0.139681935,0.142089024,0.0744377077,0.129615664,-0.0418194719,0.0696615949,0.1203897,-0.0725487992,0.0221311841,-0.0406403802,0.110169716,0.0282545406,-0.0335033573,0.025785083,0.10288012,0.112555355,0.103687249,0.091325365,0.037458688,0.101411074,0.0645702854,0.11048691,0.14426671,0.0715537071,0.106637292,0.0616286322,0.0300523937,-0.114379533,0.0849459469,-0.0965586677,-0.0467356332,0.0865662396,-0.0121209025,0.0629699752,0.057356026,0.0870090127,0.14254114,0.065998286,0.086884439,-0.109053567,0.0565297529,0.0688246638,0.115941904,0.0754628554,-0.0957738683,-0.0207424518,-0.0125370882,0.00766525278,0.0115488172,-0.0428475328,0.057041727,-0.0468583219,0.140562847,0.106966145,0.105146751],[0.0834190249,0.037680611,0.0265237875,0.00733311754,0.0463041663,-0.0551691577,-0.102427714,-0.0473659225,-0.0709621981,-0.0775315687,-0.069498755,-0.0995909274,-0.117116317,-0.0700951815,-0.0848765671,0.0370768346,0.0902247578,0.105170861,0.00399544276,-0.0285124294,0.0218630936,-0.0513623916,0.00710907392,-0.0763250664,0.0317744017,0.113637276,-0.0216305722,0.0282471385,-0.0627936572,-0.0939701274,-0.10188777,0.0401722603,-0.0813305303,0.0438183807,-0.0476093292,-0.0386781432,0.0807387978,-0.0905724168,-0.0278086569,0.0317295566,-0.127524033,-0.0961149111,0.0958458036,-0.0148668345,-0.113747001,-0.150991663,0.101915695,0.0319375992,-0.129757315,0.0101454975,0.0317421854,-0.0783335716,-0.0872753039,-0.0362923034,-0.00372660742,0.0407890044,-0.0136645529,-0.00704266131,-0.0151635977,-0.077191636,0.0307652503,-0.0998082086,0.0176610313,0.083083801],[-0.0679669306,-0.0196822677,0.0503796674,-0.00722802291,0.0180882812,-0.0381359793,-0.00893754978,-0.0301155224,-0.0318286754,0.0724686533,0.0238641519,-0.0104658771,0.00480734883,-0.0240707826,0.0452340879,0.00626803003,-0.0342853814,0.0422831699,-0.00502837216,0.0207245015,-0.0566495135,0.0306299943,-0.045188304,-0.0393430516,0.0415399186,-0.0410225652,-0.0816877782,0.015967289,-0.00127058662,-0.00980956946,-0.00547552807,-0.0354402624,-0.00293528801,-0.0790080428,-0.0431558155,-0.0227079671,0.020462919,-0.00735332817,0.0406204276,-0.029710779,0.0386305563,-0.0504734069,-0.077894561,-0.0160945859,-0.0470786095,-0.0843761191,0.000926797104,-0.00267053745,0.0225087646,-0.0315844864,-0.030057678,-0.021576371,-0.0321264975,0.00375292636,0.0628263652,-0.0622997656,-0.0617804565,0.0311339255,0.0422788337,-0.0209455434,0.0533323474,-0.00441418262,-0.0134415273,-0.00790264364],[0.0507073887,-0.0968920588,0.139685869,-0.019567972,0.111298375,-0.109785631,-0.0296694636,0.00926993601,0.0154213458,0.032563284,-0.0704086721,0.0386411808,0.0656111464,0.0788587555,-0.0902123377,-0.0436166674,-0.0968879461,0.0297684427,0.0380329378,-0.10747356,-0.0578057542,-0.0831116438,-0.0784483179,0.0854880214,0.0480198562,-0.0315118618,-0.111365899,-0.0625223592,-0.0485411361,-0.0899957642,0.0359232649,0.0705004111,-0.115424067,-0.063386254,-0.0845383704,-0.0246207882,-0.00329724164,0.100691251,-0.00608120533,0.048014842,-0.04546066,0.0329464339,-0.0128718168,0.0271188319,-0.00234812195,0.0656021461,0.0647547618,0.00691330433,-0.0539143421,-0.0957683623,-0.06221148,0.0256260838,-0.0359372385,0.0436993018,-0.0975398868,0.0735056251,-0.0638586953,0.00862507243,0.0473352,-0.0662271976,-0.0369440354,-0.0346574113,-0.00690844189,-0.102518119],[0.121094838,0.0664517879,0.0565620922,-0.101832166,-0.0177061837,-0.0211559609,0.0618285872,-0.0834677294,0.0831229463,0.108134724,0.104321107,-0.0862966925,0.0423902646,-0.0266233552,0.0244035237,0.0508928485,0.0738596171,0.123431116,0.0772448927,0.035339471,-0.0703992844,0.0209392495,0.0395727418,-0.0104533182,-0.0346612744,-0.0680002049,-0.0463238806,0.00462339632,0.110741489,-0.0441315696,0.035389632,-0.00587580586,-0.0353708006,-0.0480527282,0.0631443784,0.105834521,0.017209148,0.0701061338,0.0213778913,0.158823848,0.0446742661,0.0484282114,-0.0407461114,0.0136850793,-0.080261372,-0.0220246818,-0.0645378679,0.131228462,0.00233017397,0.16723007,-0.0552595407,-0.0552043952,-0.0169428028,0.00826127362,-0.119170889,0.0189970136,-0.00193534349,0.0314937867,-0.0795028657,-0.0906697437,-0.0452480838,0.00441822596,-0.035402257,-0.0308052134],[0.0825263634,-0.0580330826,0.0145990895,-0.000338144775,-0.17950438,-0.282059669,-0.0728934258,0.0234300382,-0.000638482219,-0.251505494,-0.0995569155,-0.190003559,0.306928664,-0.227275178,-0.129633725,-0.0194401424,-0.011659109,0.0716067329,0.0687369034,0.0924999043,0.215986267,-0.0402001254,0.0239465013,-0.0604458712,-0.378691554,-0.235309809,-0.153946653,-0.167383924,0.0105746705,-0.0920290053,-0.0619479343,-0.161024973,-0.215660542,-0.0665600002,-0.197736293,0.0101185581,-0.0439156741,-0.0262061208,0.146875039,-0.0742724538,-0.264214784,0.117855132,0.0122322123,0.127725825,-0.0922917426,-0.0785806775,-0.310781449,-0.129383355,-0.0173037797,0.16692251,-0.378311694,-0.244321004,-0.0481818914,-0.0161721352,0.109885097,-0.0576843321,-0.0407813452,-0.00583036989,-0.231782034,0.0593166091,-0.0499571823,0.141719297,0.185376778,-0.223846018],[-0.0161095653,-0.0932378992,-0.0294979662,0.019943824,-0.00200937456,0.0253601279,-0.0116644185,0.0258752443,0.0286224969,-0.00313231722,0.0573821589,-0.0715312883,-0.0694589466,-0.0114189526,-0.0618938915,0.0573264062,0.0767582282,-0.073472783,-0.145099208,0.0946399048,0.049913913,-0.135041088,0.102919057,-0.123107515,-0.143185556,-0.0125291161,0.0201517772,0.0635754243,-0.0443714522,-0.0179252028,0.0285143461,0.00856840145,-0.118667871,0.109149709,-0.00752054667,-0.0374635756,-0.113737822,-0.125184104,-0.0367078744,0.0373396203,-0.0954607278,0.0515901782,-0.116813116,-0.0972023234,-0.0153210107,-0.0190543439,-0.0894838274,0.0839898884,0.000250799581,0.0245662108,-0.156082079,-0.0138955116,0.0204304811,0.000296046841,-0.0345554687,0.145184919,0.128005445,0.0127052171,-0.0339053497,-0.0518979281,-0.0239417497,-0.112378299,-0.109593064,0.0447318591],[0.118055657,-0.0838408247,-0.0627232045,0.0194917433,-0.064243339,0.0705832988,0.144582003,0.0658075586,0.030659264,0.00616199104,0.147300631,0.0876398981,-0.064433217,-0.0477306619,-0.045858942,0.0623227283,-0.00485972501,-0.0752780586,0.0557493642,0.0689112619,-0.0739551932,0.0253967065,-0.0648690313,0.0575728901,-0.0550699309,-0.0127884969,-0.0721419603,0.0556594953,0.0813263282,0.0224401075,0.118091926,-0.0658544824,-0.0603149794,-0.0695799962,0.0778642371,0.148724705,0.104485445,0.0704144463,-0.010456874,-0.0549598932,-0.0531082749,0.133846983,0.0226552468,-0.0150466124,0.00642253319,0.0835051537,0.097137168,-0.0474601947,-0.0210406464,-0.0314854123,-0.0745593682,-0.0732863396,0.113058656,0.118548758,-0.0976327881,-0.0801600367,-0.0772734433,-0.0157484394,0.0185030792,0.028824646,0.0324711502,0.0409285426,0.111969665,0.05251012],[0.0235891938,0.0945880786,0.0906065851,0.0672013238,-0.0402619317,-0.0319829322,-0.1083446,-0.0237942841,-0.0263696928,-0.088730298,-0.039472539,-0.0819937959,-0.0613770261,-0.0444735177,-0.0989306644,0.09197101,-0.00903168414,0.0440037884,0.169549912,0.102513559,-0.0839661285,0.0871459022,-0.00270970492,-0.0581984371,-0.0404953845,-0.000208133424,0.0293572638,-0.0255164001,-0.0647603348,-0.0121093718,-0.10624294,0.137447044,0.0700033084,0.100170836,-0.00334295281,-0.0884483531,-0.107650101,0.105878241,0.0958894193,-0.0834338218,-0.0557521023,-0.0233681686,0.00766328489,0.0330398604,0.0722369999,0.0906913131,0.0112564154,-0.0150378793,0.0659220889,0.0141652273,-0.00631849049,0.0921448097,-0.0261893403,0.00762102939,-0.122040652,-0.0365813933,0.0717255101,0.126952633,0.0734781027,0.109503664,-0.0577237643,0.130360216,-0.040438462,0.0686997399],[0.0550783314,0.0285801794,0.110423997,0.128344089,0.0847922415,-0.0092298314,-0.0289137885,0.0470875129,0.042300988,0.0446338132,0.13524802,0.00655227341,-0.0830795169,-0.0381602198,0.114924833,0.0934483185,-0.0855389163,-0.0376252718,-0.0965906605,-0.0930340812,-0.00222131098,0.058760725,0.00757134892,0.02886739,0.0836522877,0.000401810685,0.0815462321,0.0232557282,-0.0130468942,-0.0464107804,0.00142506137,-0.0429038666,0.010763579,0.0806211382,0.138420686,-0.0607913509,0.0583292469,0.110933781,-0.129977793,0.140464365,0.162181526,0.0393523276,-0.0383070074,0.112541832,-0.0204383731,-0.0882035568,0.0932110325,-0.00495638372,-0.081179522,0.062656872,0.0598333739,-0.0284593403,0.085928686,0.00259972597,0.110029243,0.0425276272,0.0869125575,0.0995651782,0.0567302629,-0.0150102125,-0.0245008934,-0.106013909,-0.0152011095,0.118584178],[-0.141165063,-0.0932519808,0.0274370331,0.0424031876,-0.0105194468,0.00634336332,0.0103063211,0.026618531,-0.0561795682,0.0509562641,0.0714170486,0.0745800734,-0.0747763664,-0.0777848661,-0.0400690101,0.0122149317,-0.130213872,0.0847882107,-0.00744366739,-0.116333634,-0.0941087231,-0.0899736732,0.0780777708,-0.00292737549,-0.011892573,0.0478439964,0.0312607512,-0.0409104116,-0.00589433825,-0.0367017351,0.0439820699,0.0237927716,-0.1165777,-0.0865503475,-0.090609841,0.0474599749,-0.00357412361,0.00148641411,-0.0416314714,0.0268337522,-0.0254342817,-0.0658733919,-0.066909492,0.0679350942,-0.0125903282,0.00753147015,-0.0785927474,0.0667693987,-0.0529962517,-0.0523069389,-0.071303837,-0.0401740819,0.076999858,-0.034046907,0.0040983255,-0.0933765024,0.0983198062,0.0823787749,-0.0935692713,-0.0122177685,-0.125080511,-0.0286027826,-0.0039549456,0.00541688409],[0.0646338761,-0.0704186037,-0.0547957718,-0.0427082926,-0.0943003446,0.0557053946,-0.107279874,0.0453182645,-0.0867090151,-0.0396003686,-0.0203571916,-0.0248795878,-0.0919609442,0.0309220273,-0.0438548177,0.0117442701,-0.0442251414,0.0510540903,0.0504197814,-0.0732303634,-0.0318706706,-0.0220898315,-0.00936251506,-0.00403796649,-0.0431489088,-0.105072536,0.0626062006,-0.0688809305,0.0403569452,0.00411911402,0.0562963448,-0.0525432713,-0.0525653437,0.0501825847,0.0762613267,-0.0250150282,-0.00142804254,-0.00799012277,0.0132830711,-0.0914674997,0.0246318169,0.0572494306,-0.070343636,0.0166526772,-0.00442973478,-0.00929032173,0.0329478383,0.0838990659,0.0189512912,-0.0532474667,-0.0534882285,-0.0364514962,-0.00448058452,0.0729910359,-0.00219729217,-0.0986263379,0.0107434299,0.051217664,-0.0513133258,0.0464534797,-0.0400238484,-0.0449137278,0.0269747302,-0.0707698688],[-0.0322948582,-0.0198426675,0.0731455907,-0.0255780686,-0.0189962611,-0.00275536859,-0.115602858,0.0782621726,-0.132219851,-0.0546945743,-0.0567320473,0.0873941183,0.0318122841,-0.0576957017,-0.120069511,0.0151715493,0.0596135929,0.04433994,-0.207044989,-0.000768781756,0.133182883,0.0113778636,0.019109657,0.0704315007,0.0208340678,-0.00468415115,-0.0184147209,-0.148565829,-0.0680340827,-0.0734442547,-0.074938111,-0.113297902,-0.119404659,-0.0829517469,-0.13399303,-0.0539574996,-0.129526198,0.0706081986,-0.0643049106,-0.169313267,-0.0825165212,0.0382758006,0.0624935031,-0.0207358655,-0.103549436,-0.0549828671,0.0852949098,-0.0575621575,-0.141264364,0.109074131,-0.219885409,-0.00104452518,0.0454252772,-0.0387597308,-0.127724081,0.045947358,0.0123238172,0.0373364165,-0.140018001,0.0685987994,0.00854427647,0.126422435,0.00509005086,-0.106965311],[0.116161287,0.134209797,0.128504947,-0.0715269446,0.00111162895,0.0327757783,-0.0796773806,0.152590126,-0.0784738213,-0.00816465728,0.15852727,0.0711666569,0.00578865875,-0.00707356073,0.0614884421,0.00909029599,0.135933563,0.118866168,-0.0492825098,-0.0941814855,0.0311071761,0.130874306,0.0215895195,0.0684276745,-0.0414723642,-0.0745659396,0.0306842923,0.00693275873,0.105263107,0.131782845,-0.0704933777,0.0665927827,-0.0783912987,0.0263565816,0.0802250952,0.0147585645,0.0948454589,0.104116768,-0.00156281027,0.110348769,0.0358829498,0.0540203527,-0.0325831808,-0.0910634845,0.133944392,-0.0637568906,0.0117348088,-0.045119077,-0.0402733795,0.119531453,0.0000281081448,0.00885877665,0.0490957424,0.0160557032,-0.0510344505,-0.0647097901,-0.0203438122,-0.0653362647,-0.0386337787,-0.0815639049,0.0464983582,-0.0314001888,-0.0340592712,-0.000160559823],[-0.0644941851,-0.0960319787,-0.0110959029,-0.0911349058,-0.0454546139,-0.0491608866,-0.143422142,-0.0330700316,-0.13074556,-0.0951219127,0.146207944,-0.0670971721,0.206384793,-0.0893538073,0.0787039921,-0.116056524,-0.0427216552,0.0798515752,0.00467188237,-0.0641858131,0.172207385,-0.168111622,0.158451572,-0.19136101,-0.132286146,-0.0172564052,-0.362753212,-0.223592013,-0.0919443667,-0.00638057105,0.105953716,-0.177219167,-0.0587967895,-0.0972177535,-0.0733480081,0.0341924503,-0.0311655253,0.150475264,-0.0900741294,-0.144440278,-0.242163405,0.0639457181,0.0368698277,0.0765234679,-0.115318932,0.0264832545,-0.140062958,-0.129270285,0.0788611472,0.104849748,-0.24299784,-0.0507262051,0.0544558801,-0.195799679,-0.195493102,0.0948897824,-0.00982592441,-0.0634847879,0.00573054608,-0.148662969,0.0305701066,0.0451985151,-0.118588775,-0.00212985952],[0.0318612605,-0.0598382428,-0.0458951853,-0.0137410918,-0.0273894146,0.00649322197,0.0185477436,0.048170235,-0.0172502324,0.00527752517,-0.049269855,-0.0293668192,0.0288718939,-0.0344731919,-0.0302282143,-0.0224365778,0.00579201989,-0.0158790778,-0.0367476754,0.0158716794,-0.0716255307,-0.0672826245,-0.002474498,-0.0201492757,-0.00235798396,-0.0353377722,0.0378730968,-0.0280857626,-0.027305074,0.0556053482,0.0220585857,-0.0402368121,0.00808063708,-0.053906139,0.0139611159,0.0511901937,0.0522202812,-0.0091110412,0.014910412,-0.0489963256,0.0496403165,0.0404852182,0.0281710159,-0.0332765728,-0.0325847827,-0.0200917143,-0.0436157249,0.00480048964,-0.00430461206,0.0017082683,-0.0251952987,-0.017101571,0.0271929018,-0.0183829181,-0.0494633019,-0.044509612,-0.0667137355,-0.0101252263,0.00000318986918,-0.0101150414,0.0433966964,-0.053658694,0.0481353141,-0.0489686765],[0.0551188774,0.0206563193,-0.0923864916,0.0230917279,-0.0822399929,0.0297557972,0.127813444,0.0767904446,0.0961175114,0.0493083522,0.12268728,-0.0351596475,0.0618562736,0.0236543957,-0.0821593627,0.0096403826,0.102574803,0.0697260126,0.033089865,0.0964955762,0.0806215256,0.0866304412,-0.0325600617,-0.0635874718,0.0480532236,0.0231060032,-0.0460361131,-0.0334050506,0.0320989862,0.0757172182,0.0604574122,0.0530347824,0.0846741647,0.0265867934,0.0272175167,0.139264226,0.0116737047,-0.0250936281,-0.0356290601,0.000920200604,0.0291898493,0.0284532476,0.125349268,-0.0217145551,-0.0600587055,0.0489067398,0.0720135123,-0.0814548433,-0.0480360128,-0.0441484302,0.0102401106,0.0553287491,0.109454848,0.0237103533,0.0993706733,0.00166904333,0.0788509473,0.0137055125,0.0246382039,-0.00398537936,0.00472478289,0.109284058,0.13474229,0.0140467966],[0.0521853343,-0.115718752,-0.0969817787,-0.0619074441,-0.165442154,-0.0935196951,0.0860887766,-0.0566852242,0.0945253819,-0.106680728,0.0871565863,0.0132879782,0.0838169158,-0.0954011306,-0.0552676134,0.0534240603,0.0210203342,-0.0188239533,-0.0165206436,0.0864885673,0.0955961645,-0.0383761637,0.0310801491,-0.140634924,0.0183444805,0.0335447714,-0.18888022,-0.0234363135,-0.0925663188,-0.11015334,0.0200028382,-0.056194175,-0.0802795812,0.0832090825,-0.132609561,-0.0328402594,0.0306872223,-0.00514548132,0.0441272818,-0.0189521424,0.0649525374,-0.00923796929,-0.166301072,-0.10802789,0.0334652662,0.0394309014,-0.00740011036,0.0350817144,0.0785888582,-0.127512559,-0.0782138929,0.0690540224,0.0564169064,0.0523818024,-0.141131938,0.103896432,-0.0336528607,-0.16840595,-0.119830333,0.046657078,0.0576400273,0.0795806274,-0.153079689,-0.0232011192],[0.0233635083,-0.065475896,-0.0870117918,0.0744534284,-0.0315954573,0.129766256,0.133726373,-0.0580890812,0.118805401,-0.0395303778,-0.0303380974,0.0739933774,-0.0269830823,0.0191415511,0.0768993199,0.0943005532,0.112745576,0.0144923469,0.11293669,0.0970765948,0.0438562483,0.116162099,-0.0200380925,0.0794732273,0.0758943334,-0.097608909,0.0682298914,0.14057292,0.132477269,0.113921203,0.0912730321,0.0364676677,0.144244447,0.159313843,-0.0429271981,0.0623126514,-0.105372235,-0.0161009226,-0.040366523,0.0718431324,0.0453493297,0.066466026,-0.111202851,0.0609867014,0.000185705663,-0.0806387439,0.0790676102,-0.0452983268,-0.0154501554,0.14185822,0.090366669,-0.043117296,0.0884891525,0.110938348,-0.00731085194,0.0789060742,0.14855133,0.0831501484,0.0751516968,-0.0243514255,-0.13838774,0.120773494,0.0857180506,-0.0427969992],[-0.021421941,0.0512663536,0.0859487653,0.135273024,-0.0474717133,0.0421744063,-0.0543415658,-0.056795992,0.0371536054,0.0243747197,0.105274625,-0.076662682,0.0455667824,0.0448128618,0.0600244701,-0.0815878958,0.0208552722,-0.0704366714,-0.0440789722,-0.0407462567,-0.0169175379,0.135508403,0.137518674,-0.0730144083,0.0421704575,0.100513384,0.0329459459,0.0482141003,0.0911553353,-0.0325617269,0.072315909,-0.00478546135,0.0317182094,0.0354440622,-0.0260696206,-0.0132093495,0.125254273,-0.0400060602,0.0658052489,0.0729449689,0.0261983406,0.004524271,-0.0313799717,0.0198376533,-0.00210772245,0.0139712654,0.103717007,-0.035562966,0.0300678685,0.115624174,0.14829883,-0.0342026539,0.113609865,-0.0190283917,-0.0244629513,-0.0669003874,-0.00259405654,-0.0629054308,0.0314858928,0.101908125,-0.118863218,0.121802025,-0.00947321858,0.00311017712],[0.0590425171,0.140897423,0.0918179899,0.149897903,0.107931398,-0.080337286,0.0292261839,-0.00968656782,0.120693684,0.0106806513,0.0604400858,0.07885921,0.01109129,0.0510018393,0.148327887,0.128588378,0.0478715263,-0.0116097545,0.106449597,0.124339022,0.0858965963,-0.0204128381,0.152252167,0.0547904931,-0.0261534471,0.100888342,0.0957739875,-0.0486083068,0.058848802,0.077378124,-0.0155585306,0.0665224418,0.045309525,0.0974143296,0.12911506,0.0359331667,-0.0682102069,0.0988566801,0.034293592,-0.0401082076,-0.0313708223,-0.0595443808,0.0722429454,0.128576204,-0.00998523831,0.0102257701,0.0926787704,0.0318542086,0.0238619689,0.0897095427,0.0699705631,-0.0363023207,0.137456447,-0.0971577764,0.00524396496,0.026606245,-0.0154498154,0.110272527,0.000384524115,0.0480808765,-0.110559605,-0.0573081672,0.0519148558,0.125327468],[-0.0530905686,0.0976399407,0.134328082,0.00856653135,-0.0790535286,-0.0344820097,0.105209537,-0.0127154281,-0.0463300347,0.157244161,0.0638724864,0.0177955329,0.130802944,-0.074107185,-0.084428519,-0.0422022752,0.0590491779,0.0342795067,-0.0224802159,0.0362943001,-0.114693858,0.135685682,0.0222618077,-0.0603133887,-0.0666967705,-0.0433522835,-0.0763456747,-0.0224532522,0.0229400955,-0.0745593831,0.0887212381,0.0979350805,-0.0100104902,-0.0272168815,0.060669791,0.0962163731,0.100308888,-0.0603155643,0.0139670353,0.153911099,0.0456267893,-0.0759978518,-0.117499299,0.00157542026,0.0178844463,0.131575122,0.0314908959,0.0504183546,-0.120088473,0.00518931216,0.0920502692,0.127018735,0.163662314,0.019745592,-0.0357885063,0.154738188,0.129303217,-0.07573919,0.128881156,0.0615643784,0.00486597326,0.127807438,0.0449550636,0.0925615206],[-0.0193714704,0.0598069467,0.140705645,0.0948977321,-0.00741160009,-0.0726900175,0.0615372919,-0.183737621,0.062106397,-0.162355125,-0.0586036816,0.0999161899,0.165168092,-0.0663135722,0.084897913,-0.0355794318,0.0825254545,-0.0977276191,-0.0323879607,-0.0101883588,0.11393518,0.100303687,0.126910612,0.00273229927,-0.0276674274,-0.178993478,0.0387505442,0.0295380559,-0.198738053,-0.0526709966,0.115047283,-0.0399991311,-0.0760287941,0.0396224484,0.0104201669,-0.013144915,-0.104070783,0.0127587272,0.146952897,-0.129793927,-0.0988640636,-0.0636670589,-0.0450800918,-0.103432961,0.0167517345,0.110617466,-0.198875844,0.0813805833,0.0727005228,-0.0025645867,-0.267379224,-0.0372488908,0.0134268906,-0.130160347,-0.0323385783,-0.0127428351,-0.0524666272,0.0264698621,0.0191016197,-0.0964240283,0.0708805174,-0.00530528231,-0.085311465,-0.120369017],[0.0405094177,0.121974573,0.0296388716,0.0484468266,0.111722119,0.118362315,0.0154134454,-0.00879110303,0.124101117,-0.0407881774,0.0979295298,0.100893773,-0.0397579595,-0.00298193796,0.117699228,0.0734979361,-0.0125326086,-0.0116728796,0.0533415452,0.134923264,-0.0618226416,0.0195874963,0.14653872,0.11353837,0.0167635866,0.00712157693,-0.00399761694,-0.0524096936,0.0730602518,0.122069128,0.123506688,0.0515490994,0.0268607736,0.0808132887,-0.0143365841,-0.03836729,-0.0655099303,0.0963621512,-0.0560910702,-0.0585963428,0.139318898,-0.064420417,-0.106629327,-0.0819868892,-0.0346776061,0.0605203584,0.13365379,-0.0320986137,0.00543671194,-0.0893003866,0.0989177972,-0.0587351061,0.095517084,-0.0557343848,0.0827940553,0.142531887,-0.0315848738,0.00220190454,0.0237116702,0.142283455,-0.0884078294,0.11615257,-0.0677576736,0.124109067],[-0.0558371469,-0.0277799163,-0.0453066081,-0.0536366291,-0.0283225589,0.0266046431,-0.0468092598,0.0769923106,0.0937420502,-0.0400289334,0.0835320875,0.0683058351,0.0217696168,0.0447944701,0.0171637274,0.0233179815,0.0281103384,0.0386770479,0.00121101143,0.0231434796,0.0185376536,0.0899216533,0.0256823562,-0.0601368733,0.0779942274,0.0722104162,0.132606223,-0.00330746919,0.0171851981,-0.0242378265,0.105649665,-0.0769806951,0.123170331,0.0237215422,0.000809754245,0.0334381312,-0.0303332955,0.0438998267,-0.0750253424,0.0284516793,0.014773923,0.136692151,-0.0128619177,0.0993042886,0.0244527217,-0.0121667832,-0.0650791898,0.0662841573,-0.0605909526,0.026431391,0.120670006,0.153366163,0.0892735496,-0.0597545356,-0.0387044922,0.0177958719,0.0864173025,0.00978300162,0.0822017789,-0.0909730121,0.0792685598,0.0470409244,0.0817138106,0.111522123],[-0.0536749251,-0.0206095763,0.044435367,-0.0793118849,0.00794126559,0.150262713,0.0781502277,-0.019425096,0.0367917977,-0.0261531416,-0.0894865841,0.0490167066,-0.0516281091,0.152152479,0.13573198,0.0863009319,0.129724771,0.0865072384,-0.0502903201,-0.0342612155,0.0544702075,0.0219997335,-0.0704199821,0.0143457567,-0.0902294293,-0.0813265741,0.0387868695,0.163666651,0.137520209,-0.0521791913,0.0338724628,0.1583637,-0.0645058602,-0.0662753657,0.121055044,0.0983245969,-0.0745158494,0.0374102183,-0.0619438738,0.0465201735,-0.0421709791,0.140660852,-0.0382148325,0.123944215,0.11259006,0.00552063202,0.0581508651,0.0947681069,0.0903947055,0.0733912364,-0.0516961552,-0.0366044901,0.000716685376,-0.0839093029,-0.020348629,0.148668438,0.0519176722,-0.00304299011,-0.0733819604,0.109963432,-0.0807067901,-0.0236448757,-0.0157302115,0.110475816],[-0.0462692939,0.0615765266,0.0296008401,0.0465807691,-0.175580099,0.0213449225,0.022447532,0.105896726,0.019213561,-0.0790527388,-0.0796437189,-0.11581818,0.0611249804,-0.00346999313,-0.090790242,-0.0602605529,-0.0668802112,-0.00863310136,-0.014082035,0.0702590868,0.133697018,0.0630387142,-0.0106427986,-0.0514328294,0.0413804203,0.00259917881,-0.0240451712,0.000650084636,-0.132879347,-0.123542085,0.0880179703,-0.091767557,-0.125183091,-0.00845002104,0.0692236647,0.0670113117,-0.0369228311,-0.0513099916,0.00886119809,0.0173348039,-0.0339691564,-0.0766658038,-0.13310653,0.0266111381,0.00175645575,-0.139828786,0.0569847263,-0.12113598,0.0276115071,-0.0285810959,-0.0696373582,0.0491712801,0.0765594617,-0.0509007014,-0.0252942387,-0.0896782205,-0.0730609819,0.0738361552,-0.0811928064,0.0371690057,0.0277655255,0.0808585361,-0.00783396885,-0.0778088272],[0.0248203725,0.0408405028,0.0129535943,0.0413186923,0.0712923482,-0.0130604645,-0.057028763,-0.0697494894,0.0287733003,-0.0596556887,0.0306747407,-0.0176572669,-0.050583005,-0.0175603442,-0.00981856417,-0.0549115315,-0.00104288233,-0.00826470368,0.0433747359,-0.0193200447,-0.00647236174,0.0865570903,-0.0527332984,0.0247473381,-0.0671896115,-0.0667838976,0.0311830118,0.0291346759,-0.03811533,0.0109554483,-0.046397645,0.0737130865,0.0119443834,-0.012766513,-0.0548933148,-0.0636387914,0.00180918467,-0.0311588366,-0.0529590249,-0.0971357897,-0.0345684439,-0.0523261502,0.00888414029,0.0269967318,0.0631719902,-0.0189613793,0.0542778447,-0.000968584209,-0.0274464749,-0.0989503562,-0.0373953432,0.037761841,-0.0109773651,-0.0646642819,0.0627246127,-0.0345898531,-0.00280020153,0.00840394944,0.0652437732,-0.0046943156,-0.0348382853,0.0116832666,-0.0412972644,-0.0787724927],[-0.0933156982,-0.104278833,0.0423735157,-0.11810834,-0.0232644118,-0.124787174,0.0813879967,0.0782970712,0.0174422041,0.0648312792,0.0212628581,-0.067229256,-0.116729513,0.127814651,-0.0361198895,-0.030854743,0.0699814484,-0.0494086593,-0.0913407207,-0.0493452586,0.0154058738,-0.147363484,0.0361284502,-0.108239047,0.0798632503,0.00887769088,-0.0768269151,-0.055027891,-0.0103042666,0.102698445,0.0488092564,-0.0753422976,0.0749341398,-0.035043221,-0.0310938936,-0.131371036,-0.118730724,-0.121802434,-0.092486687,0.100018859,-0.0955382362,0.0393323191,-0.0780270249,0.111702889,-0.0497793332,-0.118013561,0.0186648499,-0.0203387775,0.0671457648,-0.0324208364,0.122351602,-0.046078451,-0.0873115882,0.0471765436,0.0788669363,-0.0220839456,-0.00626347819,0.0904236808,0.136165857,0.0376872346,-0.0193206668,0.0847894326,-0.0170998704,-0.0257893205],[0.0445675105,-0.0663047805,0.00666102767,-0.00100163149,-0.0777643472,-0.0474257804,0.0827011093,0.0128836595,-0.0520476885,-0.154616609,0.0743117481,-0.101528406,0.107284039,-0.108837388,-0.110342473,0.0491292328,-0.0704358891,0.0387053564,-0.0443308242,-0.0160952862,0.0905228928,-0.0851656049,0.0919240192,-0.081584461,-0.00958294421,-0.0585239865,-0.090523392,-0.0163312852,-0.056269493,-0.107055359,0.0837009773,0.0107011506,0.0525201522,-0.0464463569,-0.0939293653,0.0109411832,0.0778246596,-0.0730039999,-0.0750146955,-0.134572625,-0.0609448291,0.0573175773,0.0486685969,-0.0682122484,0.0990312397,0.0769427791,-0.0446199588,-0.0158261005,0.092170231,0.0480637178,-0.0577037707,-0.0927852094,0.0426374935,-0.132020757,0.00991370063,-0.0856380686,0.0769862831,-0.0781185627,0.108741701,-0.0485542342,0.0618793145,0.0194406379,-0.0349841304,-0.0375879854],[-0.0638910681,0.122840717,0.00854760502,0.142387807,-0.0319535807,0.0292068385,-0.0770405382,-0.0756521598,0.0686977282,0.0522999316,0.109843828,0.118904755,0.0289437678,0.0908007622,0.12206354,0.130621031,0.0479839891,0.132174686,0.134174466,0.110095724,-0.0832605362,-0.00912294071,-0.0690177083,0.127625972,0.00432161847,-0.0758500174,0.1441558,0.122992761,0.125644431,0.113357864,0.0947448984,-0.0346186571,0.0944633111,0.11354281,-0.0848900899,0.014555878,0.0667353719,0.0256603081,-0.00168654043,-0.0250611417,-0.0679164082,0.00313038751,-0.056150578,0.0193233266,0.120462321,-0.00509327324,0.0132695809,0.00401104102,-0.0256149396,-0.0254470054,0.0635496676,0.0382332839,-0.0498251468,0.0407439284,0.0732516274,0.0594524518,-0.0921566263,0.00539073814,0.131145477,-0.0675945505,-0.00898075942,-0.00126326422,0.115402296,0.090086624],[0.140110239,-0.0886516199,-0.0516057238,-0.0728685409,0.00435503758,0.107458435,0.0651991516,-0.00125554064,-0.0696242452,0.154880702,0.1128501,0.00657380978,-0.149607316,0.0472089611,0.0767014101,0.0696927309,0.159618258,0.151002616,-0.0356514938,0.0356006697,0.0136713525,0.0465397462,-0.0711839497,0.0743778795,0.0501476265,0.0705500469,0.00477466732,0.146805331,-0.0576084293,0.0629736483,-0.0463643335,-0.0165098514,0.0130986674,0.104265973,-0.0505006053,0.132838994,-0.068014577,-0.0914273113,0.0856645033,0.0300854482,0.0733512491,0.0823026821,0.081810154,-0.00844454672,0.0720394254,0.105994061,0.0886765569,0.124225929,-0.0694826692,0.069189921,0.0533937365,-0.0870711878,-0.0850453004,0.0698636994,-0.100117162,-0.00767709082,0.102225214,0.0688811466,0.0572259352,-0.0496695042,-0.0275828354,0.0357962921,0.0332351401,0.00240822695],[-0.0376871228,-0.00446796836,0.0348014235,-0.022415245,0.0562946238,-0.0745758638,0.0407510474,-0.0549757443,-0.0539131798,-0.00982715003,0.0350864902,0.0691520274,0.116715826,0.0028661259,-0.0955390334,-0.0314854607,-0.0301940423,0.0986241177,-0.0697620064,0.106004037,0.0347275436,0.0602915846,0.0250928942,-0.061939057,-0.052163627,-0.168678492,0.00892488379,-0.0977628306,0.135795638,-0.106615208,0.109858334,0.0900494382,-0.0271333754,-0.0257784836,-0.0474405028,-0.110497952,0.110450737,-0.0732339323,-0.0772383511,0.073956117,-0.106881522,-0.00941070355,-0.142161176,-0.0298390146,-0.0185300745,0.0770740584,-0.14695546,0.105435066,-0.0668380857,0.0804021955,-0.165202558,0.0398634933,-0.0243361201,-0.10045734,0.0000691829482,-0.16768676,-0.12685959,-0.00475947885,-0.000540969078,-0.0158893354,0.0724763796,0.120135859,0.0785957873,-0.0664298087],[0.120570973,-0.0241802968,0.112670414,0.122000985,0.117546916,0.020859383,-0.0783789381,-0.0812144727,-0.0412086286,0.0869700983,-0.0772122815,-0.0271935593,0.00732822251,-0.0223776754,0.0443320349,0.131300524,-0.0923748091,0.0228846725,-0.034671396,0.14143534,-0.0118201189,-0.00624149665,-0.0102435863,0.0702620596,0.145407096,-0.0680159703,-0.0262998659,-0.0608284175,-0.015549656,-0.0710081384,-0.0993897468,0.0603021756,0.0969802067,0.0130734975,-0.0660068542,0.0369778126,-0.104797304,-0.0516850464,0.0768511221,0.116057873,0.0217575766,0.0136245908,0.036194656,-0.0678258464,0.154925808,0.127347603,-0.0153361605,-0.0292775668,-0.0180653874,-0.0515399687,0.115530469,0.0717541724,0.155413553,-0.000967840315,0.126002356,0.0559703633,-0.0639583543,-0.0708199367,0.0908887759,0.0119631402,-0.0527958386,0.127720729,0.120858192,0.111047804],[-0.108314618,-0.0153710693,-0.0441762544,0.0923446566,-0.11391671,-0.0164749902,-0.0271332618,-0.0939366668,-0.111462116,0.0297883842,-0.059342742,-0.0554917119,0.155418143,-0.0655970946,0.0748153105,0.0646520704,0.0169799943,-0.00809809193,-0.0592720658,-0.0341014527,-0.0269159898,-0.100530975,0.00875125173,0.0571842045,0.0251017846,0.0269354731,-0.0528053492,-0.108138412,-0.000145401806,-0.10632129,-0.0450663641,-0.125345692,-0.124417499,-0.0919022933,0.0433037467,0.0797175169,-0.0156413,0.000139493102,0.0615501516,-0.0765087008,0.0218884628,0.0530866534,-0.125811592,-0.0152723063,0.0521797836,0.0932331979,0.024251489,0.0599566735,0.0321182907,0.0149691775,0.0526661351,0.0651926994,-0.0783816501,-0.100627109,-0.0757302344,-0.000318666716,-0.0332466476,-0.037593402,-0.0310265962,-0.0103704007,-0.0354787149,0.0354137011,-0.00376156205,-0.00738333166],[0.0143400924,0.00196052622,0.0598080419,-0.0607486516,0.0946441367,0.100058965,0.116789155,0.0475315675,-0.00866729673,0.0349130966,-0.0109145492,-0.0464810133,-0.0790438727,0.0436737128,0.0395387597,-0.0270729195,-0.0370573252,0.107780814,0.0339480452,0.00734347152,0.0840250179,0.0333952121,0.115787543,-0.10768234,-0.0265221484,-0.0805867091,0.00795690529,-0.0235624909,-0.00796855893,0.131766066,0.0340841003,0.0983771831,0.0370372608,0.0931984708,0.120224625,0.127629474,0.101234138,0.0472722761,0.0137127005,0.120926484,0.03314998,0.104371198,-0.0908746943,0.0310526099,-0.0707966611,-0.0175620299,0.0797988623,-0.073252894,0.0695794076,0.0190779604,0.0865888894,0.13167046,-0.00575011224,-0.0278373361,-0.00807669759,0.0741653219,0.0582481176,0.0322955772,-0.0133618545,-0.0915364549,0.0156858508,-0.0536175147,0.0279771313,0.0495431684],[0.0334735401,-0.218637183,0.194981426,-0.00715442933,-0.061472863,0.0774632618,0.105508573,0.0033209098,-0.0118145663,-0.0806631148,-0.0354137421,-0.161057934,-0.046263095,-0.187371328,-0.258595377,-0.150532842,-0.169007346,0.0981979668,-0.0487502776,-0.0969325379,0.0188458841,-0.101169154,0.0745611787,-0.221745998,-0.169432908,-0.00762014929,-0.331157804,-0.0339484178,-0.0852745026,0.108824842,0.0621092208,-0.0582971945,-0.161961973,0.129094109,0.136911213,-0.176408529,-0.18460913,0.00956765469,-0.0669570491,0.0306026917,-0.17711328,-0.0968663618,0.186159149,-0.257743746,-0.165423661,-0.00230159098,-0.0420663208,0.0565288737,-0.167452648,-0.0348721221,-0.200906649,-0.0783534348,0.195165768,-0.0587878413,-0.0527930036,0.0841894075,0.0369109102,-0.163021833,-0.174505994,0.0886451602,0.188674316,-0.0200760495,0.149211466,-0.00864586513],[-0.0581155978,-0.0135237873,-0.102119297,-0.0737212971,-0.0483164452,0.100967668,-0.0141763287,0.00131039927,-0.115969263,0.00954957027,0.0641594529,-0.0655074567,0.0305544212,-0.151400357,0.0481029078,0.101705976,0.113275096,0.03665784,-0.00190110202,-0.118600234,0.13630724,-0.103388831,0.0547584854,0.0822235271,-0.0545516796,-0.0867918208,-0.147635505,-0.077963993,0.0825081095,0.0837629437,-0.141570762,0.0604432039,0.0812640935,-0.102881312,0.0752070546,0.0630048513,0.00569806062,-0.0560479388,0.0200135577,0.0190174598,-0.0619277768,0.128110901,-0.143744797,-0.0251274314,0.0420257896,-0.0898384228,-0.0942101777,-0.0987702012,-0.111011244,0.0267172866,-0.0578872338,0.0137828048,0.0418478586,0.0475955121,-0.0869283155,-0.0622805282,-0.0907692611,-0.0242485106,0.0473557636,-0.0568587705,-0.0602310635,-0.0605305918,-0.00692630466,0.0305552073],[-0.104996786,0.0157655813,-0.0758436844,-0.00667220401,0.0376099274,-0.0270852558,0.0514141731,-0.0788151249,0.0267606862,0.087272726,-0.0504463352,0.00788881816,-0.0841618255,0.0436355844,0.00258280477,0.0163197611,-0.047117155,-0.0786016434,-0.103926241,-0.0644142479,-0.01931189,0.0948784128,-0.120068997,0.100923516,0.00487011764,0.0738560706,0.0278591793,-0.00928980391,-0.0455061942,-0.104935288,-0.00994539261,-0.0159873888,-0.0761009678,0.0855273008,-0.0309825633,-0.0390944742,0.00811098889,0.00209177053,-0.0581646562,-0.0260896292,-0.0570640266,-0.103686646,-0.0260349587,-0.0404524393,-0.126261577,-0.079552412,-0.131179512,0.0109807989,0.034943711,0.0382763557,0.0691286027,-0.079019323,-0.104097806,-0.116986863,-0.109389931,0.0651084259,0.0351273343,0.0628332868,-0.00636687363,0.0255685933,0.0128520057,0.00670660287,0.010989137,-0.0181688406],[0.0528908782,0.0226615537,-0.063559629,-0.0455523729,-0.0313117728,0.0687268823,-0.0328021422,0.154546261,0.0838534012,0.0623919927,-0.00985233672,-0.0630805716,-0.0565681979,0.021017652,-0.0900169164,0.00317855366,0.111173913,0.0606469177,0.0348327272,-0.0395087302,0.132393256,-0.0247303005,0.106355079,-0.115229137,0.0432603694,-0.0445015058,-0.00618932303,0.0982300937,0.0130700348,0.13174133,0.0965744555,-0.0220451001,-0.0619307123,0.118240997,-0.0364872068,0.107021451,-0.017250523,0.128223613,-0.0442195795,0.0595076047,-0.0620443113,0.00658035977,-0.0957434922,-0.0267814528,0.0439677723,-0.0804365054,0.0653693005,-0.101507157,-0.0161918122,0.00111467135,0.0420070626,0.101423472,0.0530407242,0.0324092545,0.117966957,0.0445750989,0.0178125519,0.098382622,0.0481403805,-0.0354674906,-0.116309963,0.0857461542,-0.0731022209,0.0954310298],[-0.0288355164,-0.122559071,0.11645022,-0.0545357205,-0.0308826268,-0.048209291,0.0211066063,0.130475909,0.14482531,-0.0529577956,0.0904469639,-0.0899052247,0.0691984966,-0.0544498973,0.154563412,0.0962286219,0.0384224541,0.102233931,-0.019983599,0.0454052277,0.00231656432,-0.0956896618,0.0276938509,0.0135560827,0.0672717765,0.0481577665,-0.0671323389,-0.0288744569,-0.0910165906,0.116933554,0.0567786656,-0.0867397413,0.0538613461,0.140269458,-0.0299671274,-0.00548470533,0.0971670449,0.0245162044,0.0457358509,0.135769799,-0.0540861338,-0.0742654502,-0.144638672,-0.13686271,0.119615152,-0.0768985152,-0.0257942006,-0.0196953043,-0.00695650373,-0.0246006828,-0.0957452878,0.131113961,-0.0166304223,-0.0733542442,-0.0282417499,0.136097386,-0.0232581161,0.00473837089,0.0354927182,0.101425871,-0.110691488,0.0369930044,0.0719098002,-0.114234112]],[0.0749105662,0.0891533569,0.0901765376,0.0164372474,0.134091243,0.0711813644,-0.0700216964,0.0221307129,0.122557804,0.0138131185,0.0280473363,-0.0366848595,-0.0653778985,0.0653476417,0.164083377,-0.184614569,0.0817229003,-0.0269697234,-0.0564679988,-0.091346994,-0.0563984923,0.160818011,0.0923811123,0.12294066,-0.129724547,-0.0903738216,0.00231381808,0.154309064,-0.118235126,0.0120731443,0.177172482,0.0702441409,0.141488686,-0.0563951544,-0.0402348787,-0.00381231634,0.168190822,-0.0450082347,-0.112911582,-0.0193244591,0.0576595515,-0.0571377836,0.170900464,0.0534006618,0.169755399,-0.126024768,0.177725613,0.11427293,0.162029818,0.0496006981,-0.130844131,-0.156862661,-0.0474353768,0.184014663,-0.0148088243,-0.000112379334,0.149432912,-0.102763124,0.154462248,-0.128396556,-0.00561115146,0.0402484797,0.0599427111,-0.033298213]],[[[0.11286363,-0.00627124589,0.0505471304,-0.06962955,0.129801631,-0.124159597,-0.121779792,-0.00307757268,0.0439763479,-0.0571282543,0.0582811087,0.0701050162,-0.0619315729,-0.0957560241,0.0742312297,-0.15686354,0.00837736856,0.0700736046,-0.0023892459,-0.0188693665,-0.0331817865,0.149602026,-0.0903455764,0.118354559,-0.0996081755,-0.00847585127,-0.0259894151,0.0248470232,-0.353247464,-0.0875967741,0.110081434,0.10174232,0.128395885,-0.0273207035,0.00226042978,-0.116232999,0.0472451933,-0.188598499,0.001258765,0.108191341,-0.130094931,0.0979447886,0.116061278,0.0631633848,0.0568567589,-0.143650562,0.06787882,0.117308527,0.092215918,-0.0533737876,0.00349188759,-0.12025211,-0.0520838276,0.0514838025,0.141360313,-0.12647453,0.0774342045,0.0223969668,0.0488201343,-0.288477838,-0.0732907355,-0.0582900196,0.0619216077,0.0822417662]],[0.148572996]]],"ridge":null},"phrase":{"agregats":["moyenne","minimum","ecart_type","decile_1","part_sous_1","part_sous_1_5","part_juste_glouton","entendus_par_attendu","secondes_par_attendu"],"moy":[1.81160587,1.24809095,0.198129916,1.5794027,0.0300889595,0.0896837902,0.700668943,1.02876343,0.226833873],"ect":[0.140226133,0.542721122,0.148264283,0.356707823,0.0622861773,0.123117052,0.213353379,0.124010552,0.0899856686],"ridge":[0.165076817,1.35666437,1.24297618,1.10751493,-0.0842071817,0.197203324,0.0238875062,-0.215070519,-0.181293505,7.6184]},"seuils":{"phrase":7.5,"phoneme":1.5},"mesure":{"phrase_pearson":0.723175956,"phoneme_pearson":0.56051444}};
@@ -0,0 +1,100 @@
1
+ // @mostajs/prononciation — le service : texte et audio → verdict, notes par son, mot et phrase.
2
+ // Author: Dr Hamid MADANI <drmdh@msn.com> · AGPL-3.0-or-later
3
+ // Il ne connaît que ses ports (R-M) : `lexique` et `reconnaisseur` sont injectés, la note est une donnée.
4
+ import { ErreurPrononciation, refus } from './lib/erreurs.js';
5
+ import { REGLES, base } from './lib/notation.js';
6
+ import { motsDe } from './lib/texte.js';
7
+ import { aligner } from './lib/alignement.js';
8
+ import { appliquerNote, noteSimple, validerNote, NB_TRAITS } from './lib/note.js';
9
+
10
+ const config = (m) => refus('CONFIGURATION', `prononciation : ${m}`);
11
+ const borne = (v, max) => Math.min(max, Math.max(0, v));
12
+ const taille = (a) => (a == null ? 0 : a.byteLength ?? a.size ?? a.length ?? 0);
13
+
14
+ /**
15
+ * @param {{ lexique: { phonemes(mot): string[]|null }, reconnaisseur: { reconnaitre(d): Promise<object> },
16
+ * note?: object, seuils?: { phrase?: number, mot?: number, phoneme?: number },
17
+ * regle?: 'stricte-2'|'tolerante-2', limites?: { octets?: number, mots?: number } }} o
18
+ */
19
+ export function createPrononciation({ lexique, reconnaisseur, note = null, seuils = {}, regle = 'stricte-2', limites = {} } = {}) {
20
+ if (typeof lexique?.phonemes !== 'function') config('lexique { phonemes(mot) } attendu');
21
+ if (typeof reconnaisseur?.reconnaitre !== 'function') config('reconnaisseur { reconnaitre(demande) } attendu');
22
+ if (note !== null) validerNote(note);
23
+ if (!REGLES.includes(regle)) config(`règle inconnue : ${regle} (attendues : ${REGLES.join(', ')})`);
24
+ const defauts = note ? { phrase: note.seuils.phrase, mot: note.seuils.mot ?? 1.5, phoneme: note.seuils.phoneme } : { phrase: 6, mot: 1, phoneme: 1 };
25
+ const s = Object.freeze({ ...defauts, ...seuils });
26
+ if (!(s.phrase >= 0 && s.phrase <= 10)) config('seuils.phrase entre 0 et 10');
27
+ if (!(s.mot >= 0 && s.mot <= 2) || !(s.phoneme >= 0 && s.phoneme <= 2)) config('seuils.mot et seuils.phoneme entre 0 et 2');
28
+ const lim = { octets: 480_000, mots: 40, ...limites };
29
+ if (!(lim.octets > 0) || !(lim.mots > 0)) config('limites.octets et limites.mots positifs');
30
+
31
+ function attendus(texte) {
32
+ const mots = motsDe(texte);
33
+ if (!mots.length) refus('TEXTE_VIDE', 'le texte ne contient aucun mot');
34
+ if (mots.length > lim.mots) refus('TEXTE_TROP_LONG', `${mots.length} mots, ${lim.mots} au plus`);
35
+ const inconnus = [];
36
+ const sortie = mots.map((mot) => {
37
+ const ph = lexique.phonemes(mot);
38
+ if (!Array.isArray(ph) || !ph.length) inconnus.push(mot);
39
+ return { mot, phonemes: ph ?? [] };
40
+ });
41
+ if (inconnus.length) refus('MOT_INCONNU', `mots absents du lexique : ${[...new Set(inconnus)].join(', ')}`, { mots: [...new Set(inconnus)] });
42
+ return sortie;
43
+ }
44
+
45
+ async function evaluer({ texte, audio } = {}) {
46
+ const octets = taille(audio);
47
+ if (!octets) refus('AUDIO_ABSENT', 'aucun enregistrement reçu');
48
+ if (octets > lim.octets) refus('AUDIO_TROP_LONG', `${octets} octets, ${lim.octets} au plus`);
49
+ const mots = attendus(texte);
50
+ const sons = mots.flatMap((m) => m.phonemes);
51
+ let rep;
52
+ try {
53
+ rep = await reconnaisseur.reconnaitre({ audio, attendus: sons.map(base) });
54
+ } catch (e) {
55
+ throw e instanceof ErreurPrononciation ? e : new ErreurPrononciation('RECONNAISSEUR', `reconnaissance : ${e?.message ?? e}`);
56
+ }
57
+ if (!Array.isArray(rep?.entendus) || !rep.entendus.every((x) => typeof x === 'string')) refus('RECONNAISSEUR', 'reconnaissance : entendus absent ou mal formé');
58
+ const al = aligner(sons, rep.entendus, { regle });
59
+
60
+ let notes, noteBrute, mode;
61
+ if (note) {
62
+ const t = rep.traits;
63
+ if (!Array.isArray(t) || t.length !== sons.length || !t.every((v) => Array.isArray(v) && v.length === NB_TRAITS && v.every(Number.isFinite))) {
64
+ refus('TRAITS', `note apprise : ${sons.length} vecteurs de ${NB_TRAITS} traits attendus`);
65
+ }
66
+ if (!(Number.isFinite(rep.duree) && rep.duree > 0)) refus('TRAITS', 'note apprise : durée de l’audio attendue');
67
+ ({ notes, note: noteBrute } = appliquerNote(note, { phonemes: sons, etats: al.etats, traits: t, nEntendus: rep.entendus.length, duree: rep.duree }));
68
+ notes = notes.map((v) => borne(v, 2));
69
+ mode = 'apprise';
70
+ } else {
71
+ ({ notes, note: noteBrute } = noteSimple(al.etats));
72
+ mode = 'simple';
73
+ }
74
+
75
+ let k = 0;
76
+ const resMots = mots.map((m) => {
77
+ const debut = k;
78
+ const phonemes = m.phonemes.map((p) => {
79
+ const i = k++;
80
+ return { attendu: base(p), entendu: al.entendus[i], note: notes[i], etat: al.etats[i], aReprendre: notes[i] < s.phoneme };
81
+ });
82
+ const n = phonemes.reduce((a, ph) => a + ph.note, 0) / phonemes.length;
83
+ return { mot: m.mot, note: n, etat: n >= s.mot ? 'juste' : 'a-reprendre', phonemes, insertions: [], debut };
84
+ });
85
+ for (const ins of al.insertions) {
86
+ const cible = ins.apres < 0 ? resMots[0] : resMots.findLast((m) => m.debut <= ins.apres);
87
+ cible.insertions.push(ins.entendu);
88
+ }
89
+ const n = borne(noteBrute, 10);
90
+ return {
91
+ verdict: n >= s.phrase ? 'accepte' : 'a-reprendre',
92
+ note: n, mode, regle, seuils: { ...s }, ...(note ? { poids: note.nom } : {}),
93
+ mots: resMots.map(({ debut, ...m }) => m),
94
+ attendus: sons.map(base), entendus: [...rep.entendus],
95
+ ...(Number.isFinite(rep.duree) ? { duree: rep.duree } : {}),
96
+ };
97
+ }
98
+
99
+ return Object.freeze({ evaluer, attendus, seuils: s, regle, mode: note ? 'apprise' : 'simple' });
100
+ }