@intellectif/lk-core 1.7.0 → 1.9.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.
Files changed (86) hide show
  1. package/CHANGELOG.md +33 -0
  2. package/dist/ai-check.cjs +77 -3
  3. package/dist/ai-check.cjs.map +1 -1
  4. package/dist/ai-check.d.cts +11 -3
  5. package/dist/ai-check.d.cts.map +1 -1
  6. package/dist/ai-check.d.ts +11 -3
  7. package/dist/ai-check.d.ts.map +1 -1
  8. package/dist/ai-check.js +77 -3
  9. package/dist/ai-check.js.map +1 -1
  10. package/dist/{ai-writing-B7oMCt66.js → ai-writing-DQjI9EFN.js} +2514 -136
  11. package/dist/ai-writing-DQjI9EFN.js.map +1 -0
  12. package/dist/{ai-writing-DrPTV3R2.cjs → ai-writing-DbpZpGRk.cjs} +2614 -122
  13. package/dist/ai-writing-DbpZpGRk.cjs.map +1 -0
  14. package/dist/{ai-B1wYrqcB.d.ts → ai-zhc9yhRj.d.cts} +454 -2
  15. package/dist/ai-zhc9yhRj.d.cts.map +1 -0
  16. package/dist/{ai-B1wYrqcB.d.cts → ai-zhc9yhRj.d.ts} +454 -2
  17. package/dist/ai-zhc9yhRj.d.ts.map +1 -0
  18. package/dist/{index-XCCoPoTU.d.cts → index-BeC8tAWf.d.cts} +2 -2
  19. package/dist/{index-XCCoPoTU.d.cts.map → index-BeC8tAWf.d.cts.map} +1 -1
  20. package/dist/{index-BU99GFTl.d.ts → index-Byar5VVs.d.ts} +2 -2
  21. package/dist/{index-BU99GFTl.d.ts.map → index-Byar5VVs.d.ts.map} +1 -1
  22. package/dist/{index-DP9rvyOz.d.cts → index-Ccj8oL_E.d.cts} +2 -2
  23. package/dist/{index-DP9rvyOz.d.cts.map → index-Ccj8oL_E.d.cts.map} +1 -1
  24. package/dist/{index-BTkMQtws.d.ts → index-CxkqS62X.d.ts} +89 -7
  25. package/dist/index-CxkqS62X.d.ts.map +1 -0
  26. package/dist/{index-BM8LeDWn.d.cts → index-DLsUnGHt.d.cts} +89 -7
  27. package/dist/index-DLsUnGHt.d.cts.map +1 -0
  28. package/dist/{index-BdXs4-en.d.ts → index-f4YuMgFb.d.ts} +2 -2
  29. package/dist/{index-BdXs4-en.d.ts.map → index-f4YuMgFb.d.ts.map} +1 -1
  30. package/dist/index.cjs +282 -6
  31. package/dist/index.cjs.map +1 -1
  32. package/dist/index.d.cts +262 -7
  33. package/dist/index.d.cts.map +1 -1
  34. package/dist/index.d.ts +262 -7
  35. package/dist/index.d.ts.map +1 -1
  36. package/dist/index.js +269 -7
  37. package/dist/index.js.map +1 -1
  38. package/dist/{item-group-CeDk7mfM.js → item-group-CKZk3txt.js} +2 -2
  39. package/dist/{item-group-CeDk7mfM.js.map → item-group-CKZk3txt.js.map} +1 -1
  40. package/dist/{item-group-8P3WFuUK.cjs → item-group-COP5OwEC.cjs} +2 -2
  41. package/dist/{item-group-8P3WFuUK.cjs.map → item-group-COP5OwEC.cjs.map} +1 -1
  42. package/dist/{registry-D92hz9iA.js → registry-Bw9grsCN.js} +339 -12
  43. package/dist/registry-Bw9grsCN.js.map +1 -0
  44. package/dist/{registry-hzrkTeIT.cjs → registry-C9O9txy5.cjs} +368 -11
  45. package/dist/registry-C9O9txy5.cjs.map +1 -0
  46. package/dist/{schemas-C7TViWCg.js → schemas-BJe3W6Xb.js} +3 -3
  47. package/dist/{schemas-C7TViWCg.js.map → schemas-BJe3W6Xb.js.map} +1 -1
  48. package/dist/{schemas-BWeskONy.cjs → schemas-CXlemRvB.cjs} +3 -3
  49. package/dist/{schemas-BWeskONy.cjs.map → schemas-CXlemRvB.cjs.map} +1 -1
  50. package/dist/schemas.cjs +3 -3
  51. package/dist/schemas.d.cts +1 -1
  52. package/dist/schemas.d.ts +1 -1
  53. package/dist/schemas.js +3 -3
  54. package/dist/{scoring-DD1GHcLI.js → scoring-BGKdff2i.js} +214 -26
  55. package/dist/scoring-BGKdff2i.js.map +1 -0
  56. package/dist/{scoring-CtkCFyFT.cjs → scoring-Db1CZeAn.cjs} +219 -25
  57. package/dist/scoring-Db1CZeAn.cjs.map +1 -0
  58. package/dist/scoring.cjs +3 -2
  59. package/dist/scoring.d.cts +3 -3
  60. package/dist/scoring.d.ts +3 -3
  61. package/dist/scoring.js +3 -3
  62. package/dist/{xapi-Cgicg-zU.js → xapi-BtBm8AWZ.js} +2 -2
  63. package/dist/{xapi-Cgicg-zU.js.map → xapi-BtBm8AWZ.js.map} +1 -1
  64. package/dist/{xapi-7btSpx6v.cjs → xapi-DOAqH9__.cjs} +2 -2
  65. package/dist/{xapi-7btSpx6v.cjs.map → xapi-DOAqH9__.cjs.map} +1 -1
  66. package/dist/xapi.cjs +1 -1
  67. package/dist/xapi.d.cts +1 -1
  68. package/dist/xapi.d.ts +1 -1
  69. package/dist/xapi.js +1 -1
  70. package/package.json +2 -2
  71. package/vectors/README.md +23 -0
  72. package/vectors/scoring.json +11967 -1
  73. package/vectors/validation.json +1298 -1
  74. package/vectors/variants.d.mts +20 -0
  75. package/vectors/variants.json +5753 -0
  76. package/vectors/variants.mjs +67 -0
  77. package/dist/ai-B1wYrqcB.d.cts.map +0 -1
  78. package/dist/ai-B1wYrqcB.d.ts.map +0 -1
  79. package/dist/ai-writing-B7oMCt66.js.map +0 -1
  80. package/dist/ai-writing-DrPTV3R2.cjs.map +0 -1
  81. package/dist/index-BM8LeDWn.d.cts.map +0 -1
  82. package/dist/index-BTkMQtws.d.ts.map +0 -1
  83. package/dist/registry-D92hz9iA.js.map +0 -1
  84. package/dist/registry-hzrkTeIT.cjs.map +0 -1
  85. package/dist/scoring-CtkCFyFT.cjs.map +0 -1
  86. package/dist/scoring-DD1GHcLI.js.map +0 -1
@@ -1,4 +1,4 @@
1
- import { At as ActivityType, I as AiGradingJudgement, In as Grader, Jt as ItemOutcome, Ln as GraderConfiguration, Mn as CriterionScore, Nn as GradeRecord, Pn as GradeRouting, Pt as DictationData, Tt as ActivityData, Yt as LearnerResponse, _n as WrittenResponseData, gn as ValidationResult, in as ReadAloudData, pn as ScoringResult, sn as ReadAloudLearnerResponse, yn as WrittenResponseRubric } from "./ai-B1wYrqcB.js";
1
+ import { $t as ActivityType, An as ReadAloudLearnerResponse, Bn as SpeakingResponseLearnerResponse, Dn as ReadAloudData, Gn as WrittenResponseData, In as ScoringResult, Jt as ActivityData, L as AiGradingJudgement, Wn as ValidationResult, _n as ItemOutcome, cr as GradeRouting, dr as GraderConfiguration, or as CriterionScore, qn as WrittenResponseRubric, rn as DictationData, sr as GradeRecord, ur as Grader, vn as LearnerResponse, zn as SpeakingResponseData } from "./ai-zhc9yhRj.js";
2
2
  /**
3
3
  * Rounding for assessment scores.
4
4
  *
@@ -158,6 +158,18 @@ interface SpeechAssessment {
158
158
  };
159
159
  /** What the assessor recognised, as text. */
160
160
  recognizedText?: string;
161
+ /**
162
+ * An open answer's transcript, from a transcriber that is not the engine
163
+ * (1.9): its verbatim text — fillers, false starts and the learner's own
164
+ * grammar kept — and who wrote it. The engine measured the take against this
165
+ * text, and a judge grades the answer on it, so both read one record of what
166
+ * was said. For `unscripted` evidence; a scripted assessment has its
167
+ * `referenceText` instead.
168
+ */
169
+ transcript?: {
170
+ text: string;
171
+ source: Grader;
172
+ };
161
173
  /**
162
174
  * Who judged omissions, insertions and mispronunciations. `assessor`: the
163
175
  * assessor did, and its word `error` labels are trusted. `none`: it did not,
@@ -201,9 +213,10 @@ interface SpeechPlausibilityPolicy {
201
213
  minVoicedMs: number;
202
214
  }
203
215
  /**
204
- * Why a read-aloud take cannot be graded:
216
+ * Why a read-aloud take, or a spoken answer (1.9), cannot be graded:
205
217
  * - `invalid_assessment` — the assessment fails `validateSpeechAssessment`;
206
- * - `task_mismatch` — it is not a scripted assessment;
218
+ * - `task_mismatch` — it is not a scripted assessment (a read-aloud), or not an
219
+ * unscripted one (a spoken answer);
207
220
  * - `locale_mismatch` — it was made for another locale than the item's;
208
221
  * - `reference_mismatch` — it was made against another text than the item's;
209
222
  * - `recording_mismatch` — it was made for another recording than the response's;
@@ -211,9 +224,12 @@ interface SpeechPlausibilityPolicy {
211
224
  * - `no_speech` — the assessor heard no speech;
212
225
  * - `insufficient_voiced_time` — the recording holds less voiced time than the policy requires;
213
226
  * - `implausible_speech_rate` — more words were recognised than the voiced time can hold;
214
- * - `missing_dimension` — a weighted dimension has no score in the assessment.
227
+ * - `missing_dimension` — a weighted dimension, or a weighted criterion's
228
+ * measure, has no score in the assessment;
229
+ * - `judgement_mismatch` — a spoken answer's judgement does not judge each
230
+ * criterion the judge scores exactly once, or judges one it does not score.
215
231
  */
216
- type SpeechUnscorableCode = 'invalid_assessment' | 'task_mismatch' | 'locale_mismatch' | 'reference_mismatch' | 'recording_mismatch' | 'assessor_not_accepted' | 'no_speech' | 'insufficient_voiced_time' | 'implausible_speech_rate' | 'missing_dimension';
232
+ type SpeechUnscorableCode = 'invalid_assessment' | 'task_mismatch' | 'locale_mismatch' | 'reference_mismatch' | 'recording_mismatch' | 'assessor_not_accepted' | 'no_speech' | 'insufficient_voiced_time' | 'implausible_speech_rate' | 'missing_dimension' | 'judgement_mismatch';
217
233
  /** A read-aloud take that cannot be graded. Never a zero: see `outcomeFromUnscorable`. */
218
234
  interface SpeechUnscorable {
219
235
  unscorable: true;
@@ -236,6 +252,27 @@ interface GradeReadAloudOptions {
236
252
  /** Compare the pass line with both sides rounded, as `gradeFromRubric` does. The score stays unrounded. */
237
253
  rounding?: RoundingPolicy;
238
254
  }
255
+ /**
256
+ * What `gradeSpeakingResponse` grades from (1.9): the engine's unscripted
257
+ * assessment of the take, carrying the transcript it was measured against, and a
258
+ * judgement of the criteria a judge scores — from `checkAiGrading` on a model's
259
+ * reply, or a person's marks in the same shape. Either may be `null` when the
260
+ * rubric needs nothing of it, and both are `null` for a blank.
261
+ */
262
+ interface SpeakingEvidence {
263
+ assessment: SpeechAssessment | null;
264
+ judgement: AiGradingJudgement | null;
265
+ }
266
+ /** Options for `gradeSpeakingResponse`: `gradeReadAloud`'s, and who scores the measured criteria. */
267
+ interface GradeSpeakingResponseOptions extends GradeReadAloudOptions {
268
+ /**
269
+ * The judge scores the criteria that name a `measure` too, and the engine's
270
+ * measures are not read for them. Off: a measured criterion is the engine's.
271
+ * A model that judges pronunciation is behind the same calibration gate as
272
+ * one that judges content — see `routeGrade`.
273
+ */
274
+ judgeMeasures?: boolean;
275
+ }
239
276
  /** How a word of a read-aloud attempt is marked. */
240
277
  type ReadAloudWordState = 'correct' | 'mispronounced' | 'omitted' | 'inserted';
241
278
  /**
@@ -1175,6 +1212,51 @@ declare function validateSpeechAssessment(value: unknown): ValidationResult<Spee
1175
1212
  * simply be missing from the grade; grade against the full data server-side.
1176
1213
  */
1177
1214
  declare function gradeReadAloud(data: ReadAloudData, response: ReadAloudLearnerResponse, assessment: SpeechAssessment | null, options: GradeReadAloudOptions): GradeRecord | SpeechUnscorable;
1215
+ /**
1216
+ * Grades a spoken answer to a `speaking-response` item (1.9).
1217
+ *
1218
+ * Each criterion of the rubric is scored once:
1219
+ *
1220
+ * - **by the judge** when it names no `measure` — what was said, how it was
1221
+ * organised, the range and accuracy of the language — from
1222
+ * `evidence.judgement`: a model's reply as `checkAiGrading` read it, or a
1223
+ * person's marks in the same shape, each from 0 to 1;
1224
+ * - **from the engine** when it names one: `pronunciation` is the assessment's
1225
+ * accuracy, `fluency` its fluency, `prosody` its prosody, each out of 100. With
1226
+ * `options.judgeMeasures` the judge scores those too, and the engine's scores
1227
+ * are not read.
1228
+ *
1229
+ * The weighted total is `gradeFromRubric`'s, over the item's weights and pass
1230
+ * line. Evidence is refused rather than scored, as a read-aloud's is: an
1231
+ * assessment that is not `unscripted`, not for the item's locale or not for
1232
+ * this recording; one from a model, unless `allowAiAssessor`; a take with no
1233
+ * speech, too little voiced time, or more words in its transcript than the
1234
+ * voiced time holds; a weighted measure the assessment has no score for
1235
+ * (`missing_dimension`); and a judgement that does not score each criterion the
1236
+ * judge scores exactly once, on its 0..1 scale (`judgement_mismatch`). A
1237
+ * judgement is matched whenever one is given, so marks meant for another item,
1238
+ * or for measures the judge was not asked to score, are refused.
1239
+ *
1240
+ * A blank (`response.recording === null`) is a grade of 0: the learner
1241
+ * submitted and said nothing. The evidence and the measurement are not read.
1242
+ *
1243
+ * With a judge, the grade is the judge's, as `gradeFromJudgement` makes one:
1244
+ * its feedback (or the authored feedback, when it gave none), its corrections
1245
+ * and rationale, `requiresHumanReview`, and `grader: { kind: 'ai', model,
1246
+ * promptHash }` — so `routeGrade` routes a spoken answer as it routes a written
1247
+ * one. Without one, the feedback is the authored feedback and the grader is the
1248
+ * engine that measured.
1249
+ *
1250
+ * @throws RangeError when `options.plausibility` or `options.rounding` cannot be
1251
+ * applied, or `options.measured` is not a pair of finite, non-negative
1252
+ * millisecond counts with `voicedMs` inside `durationMs`.
1253
+ * @throws TypeError when `response` is not a speaking-response response, or a
1254
+ * recording is graded without an assessment, a measurement, or — when the
1255
+ * judge scores a criterion — a judgement.
1256
+ * @throws ActivitySchemaError when `data` is not valid speaking-response data.
1257
+ * @throws RedactedScoringError when `data` is a `redact()` projection.
1258
+ */
1259
+ declare function gradeSpeakingResponse(data: SpeakingResponseData, response: SpeakingResponseLearnerResponse, evidence: SpeakingEvidence, options: GradeSpeakingResponseOptions): GradeRecord | SpeechUnscorable;
1178
1260
  /**
1179
1261
  * The longest reference text a read-aloud item accepts, in code points, before
1180
1262
  * and after normalisation. It is the dictation transcript cap on purpose: the
@@ -1351,5 +1433,5 @@ interface ItemTriesOutcome {
1351
1433
  * is everywhere else.
1352
1434
  */
1353
1435
  declare function evaluateTries(data: ActivityData, responses: readonly LearnerResponse[], options?: EvaluateOptions): ItemTriesOutcome;
1354
- export { hasGrade as $, diffDictationChars as A, Band as At, outcomeFromRoutedGrade as B, validateItemScoringPolicy as C, SpeechSyllable as Ct, DICTATION_MAX_TEXT_LENGTH as D, SpeechWordError as Dt, DICTATION_MAX_EQUIVALENCE_LENGTH as E, SpeechWord as Et, dictationReferenceWords as F, roundGrade as Ft, CalibrationReport as G, GradeFromJudgementOptions as H, CalibrationThresholds as I, TotalCalibration as J, CalibrationScope as K, GradeRoutingContext as L, DictationReference as M, RoundingPolicy as Mt, DictationWordAlignment as N, classifyBand as Nt, DICTATION_MAX_TRANSCRIPT_LENGTH as O, WavInspection as Ot, alignDictation as P, gte as Pt, gradeFromRubric as Q, GradeRoutingPolicy as R, scoreTries as S, SpeechPlausibilityPolicy as St, DICTATION_MAX_EQUIVALENCES as T, SpeechUnscorableCode as Tt, gradeFromJudgement as U, routeGrade as V, CalibrationPair as W, graderConfiguration as X, calibrationReport as Y, GradeFromRubricOptions as Z, DEFAULT_PASS_THRESHOLD as _, ReadAloudWordState as _t, evaluateTries as a, ItemTry as at, ITEM_SCORING_MAX_RETRIES as b, SpeechPhoneme as bt, inspectWav as c, AssessmentScore as ct, READ_ALOUD_MAX_SECONDS as d, PassFailureReason as dt, outcomeFromGrade as et, READ_ALOUD_MAX_TAKES as f, ScoredItem as ft, alignReadAloud as g, ReadAloudWordAlignment as gt, validateSpeechAssessment as h, GradeReadAloudOptions as ht, evaluate as i, ItemTriesScore as it, DictationAlignment as j, RoundingMode as jt, DictationCharOp as k, WavInspectionPolicy as kt, READ_ALOUD_MAX_DIMENSION_WEIGHT as l, AssessmentSectionInput as lt, gradeReadAloud as m, composeAssessmentScore as mt, ItemTriesOutcome as n, ItemScoringPolicy as nt, score as o, ItemTryScore as ot, SPEECH_ASSESSMENT_MAX_WORDS as p, SectionScore as pt, CriterionCalibration as q, ScoringOptions as r, ItemScoringPolicyIssue as rt, outcomeFromUnscorable as s, ResolvedItemScoringPolicy as st, EvaluateOptions as t, ItemScoringCount as tt, READ_ALOUD_MAX_REFERENCE_LENGTH as u, CompositionPolicy as ut, computePassThreshold as v, SpeechAssessment as vt, DICTATION_MAX_ACCEPTED_TRANSCRIPTS as w, SpeechUnscorable as wt, resolveItemScoringPolicy as x, SpeechPhonemeCandidate as xt, DEFAULT_ITEM_SCORING_POLICY as y, SpeechMeasurement as yt, inAuditSample as z };
1355
- //# sourceMappingURL=index-BTkMQtws.d.ts.map
1436
+ export { gradeFromRubric as $, DictationCharOp as A, SpeechWordError as At, inAuditSample as B, scoreTries as C, SpeechPhoneme as Ct, DICTATION_MAX_EQUIVALENCE_LENGTH as D, SpeechUnscorable as Dt, DICTATION_MAX_EQUIVALENCES as E, SpeechSyllable as Et, alignDictation as F, RoundingPolicy as Ft, CalibrationPair as G, routeGrade as H, dictationReferenceWords as I, classifyBand as It, CriterionCalibration as J, CalibrationReport as K, CalibrationThresholds as L, gte as Lt, DictationAlignment as M, WavInspectionPolicy as Mt, DictationReference as N, Band as Nt, DICTATION_MAX_TEXT_LENGTH as O, SpeechUnscorableCode as Ot, DictationWordAlignment as P, RoundingMode as Pt, GradeFromRubricOptions as Q, GradeRoutingContext as R, roundGrade as Rt, resolveItemScoringPolicy as S, SpeechMeasurement as St, DICTATION_MAX_ACCEPTED_TRANSCRIPTS as T, SpeechPlausibilityPolicy as Tt, GradeFromJudgementOptions as U, outcomeFromRoutedGrade as V, gradeFromJudgement as W, calibrationReport as X, TotalCalibration as Y, graderConfiguration as Z, alignReadAloud as _, GradeSpeakingResponseOptions as _t, evaluateTries as a, ItemTriesScore as at, DEFAULT_ITEM_SCORING_POLICY as b, SpeakingEvidence as bt, inspectWav as c, ResolvedItemScoringPolicy as ct, READ_ALOUD_MAX_SECONDS as d, CompositionPolicy as dt, hasGrade as et, READ_ALOUD_MAX_TAKES as f, PassFailureReason as ft, validateSpeechAssessment as g, GradeReadAloudOptions as gt, gradeReadAloud as h, composeAssessmentScore as ht, evaluate as i, ItemScoringPolicyIssue as it, diffDictationChars as j, WavInspection as jt, DICTATION_MAX_TRANSCRIPT_LENGTH as k, SpeechWord as kt, READ_ALOUD_MAX_DIMENSION_WEIGHT as l, AssessmentScore as lt, gradeSpeakingResponse as m, SectionScore as mt, ItemTriesOutcome as n, ItemScoringCount as nt, score as o, ItemTry as ot, SPEECH_ASSESSMENT_MAX_WORDS as p, ScoredItem as pt, CalibrationScope as q, ScoringOptions as r, ItemScoringPolicy as rt, outcomeFromUnscorable as s, ItemTryScore as st, EvaluateOptions as t, outcomeFromGrade as tt, READ_ALOUD_MAX_REFERENCE_LENGTH as u, AssessmentSectionInput as ut, DEFAULT_PASS_THRESHOLD as v, ReadAloudWordAlignment as vt, validateItemScoringPolicy as w, SpeechPhonemeCandidate as wt, ITEM_SCORING_MAX_RETRIES as x, SpeechAssessment as xt, computePassThreshold as y, ReadAloudWordState as yt, GradeRoutingPolicy as z };
1437
+ //# sourceMappingURL=index-CxkqS62X.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-CxkqS62X.d.ts","names":[],"sources":["../src/scoring/rounding.ts","../src/types/speech.ts","../src/scoring/compose.ts","../src/types/item-scoring.ts","../src/grading.ts","../src/scoring/assisted/calibration.ts","../src/scoring/assisted/grade-from-judgement.ts","../src/scoring/assisted/routing.ts","../src/scoring/dictation/align.ts","../src/scoring/dictation/chars.ts","../src/scoring/dictation/normalize.ts","../src/scoring/item-scoring.ts","../src/scoring/pass-threshold.ts","../src/scoring/speech/align.ts","../src/scoring/speech/assessment.ts","../src/scoring/speech/grade.ts","../src/scoring/speech/grade-speaking.ts","../src/scoring/speech/limits.ts","../src/scoring/speech/wav.ts","../src/scoring/unscorable.ts","../src/scoring/index.ts"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { At as ActivityType, I as AiGradingJudgement, In as Grader, Jt as ItemOutcome, Ln as GraderConfiguration, Mn as CriterionScore, Nn as GradeRecord, Pn as GradeRouting, Pt as DictationData, Tt as ActivityData, Yt as LearnerResponse, _n as WrittenResponseData, gn as ValidationResult, in as ReadAloudData, pn as ScoringResult, sn as ReadAloudLearnerResponse, yn as WrittenResponseRubric } from "./ai-B1wYrqcB.cjs";
1
+ import { $t as ActivityType, An as ReadAloudLearnerResponse, Bn as SpeakingResponseLearnerResponse, Dn as ReadAloudData, Gn as WrittenResponseData, In as ScoringResult, Jt as ActivityData, L as AiGradingJudgement, Wn as ValidationResult, _n as ItemOutcome, cr as GradeRouting, dr as GraderConfiguration, or as CriterionScore, qn as WrittenResponseRubric, rn as DictationData, sr as GradeRecord, ur as Grader, vn as LearnerResponse, zn as SpeakingResponseData } from "./ai-zhc9yhRj.cjs";
2
2
  /**
3
3
  * Rounding for assessment scores.
4
4
  *
@@ -158,6 +158,18 @@ interface SpeechAssessment {
158
158
  };
159
159
  /** What the assessor recognised, as text. */
160
160
  recognizedText?: string;
161
+ /**
162
+ * An open answer's transcript, from a transcriber that is not the engine
163
+ * (1.9): its verbatim text — fillers, false starts and the learner's own
164
+ * grammar kept — and who wrote it. The engine measured the take against this
165
+ * text, and a judge grades the answer on it, so both read one record of what
166
+ * was said. For `unscripted` evidence; a scripted assessment has its
167
+ * `referenceText` instead.
168
+ */
169
+ transcript?: {
170
+ text: string;
171
+ source: Grader;
172
+ };
161
173
  /**
162
174
  * Who judged omissions, insertions and mispronunciations. `assessor`: the
163
175
  * assessor did, and its word `error` labels are trusted. `none`: it did not,
@@ -201,9 +213,10 @@ interface SpeechPlausibilityPolicy {
201
213
  minVoicedMs: number;
202
214
  }
203
215
  /**
204
- * Why a read-aloud take cannot be graded:
216
+ * Why a read-aloud take, or a spoken answer (1.9), cannot be graded:
205
217
  * - `invalid_assessment` — the assessment fails `validateSpeechAssessment`;
206
- * - `task_mismatch` — it is not a scripted assessment;
218
+ * - `task_mismatch` — it is not a scripted assessment (a read-aloud), or not an
219
+ * unscripted one (a spoken answer);
207
220
  * - `locale_mismatch` — it was made for another locale than the item's;
208
221
  * - `reference_mismatch` — it was made against another text than the item's;
209
222
  * - `recording_mismatch` — it was made for another recording than the response's;
@@ -211,9 +224,12 @@ interface SpeechPlausibilityPolicy {
211
224
  * - `no_speech` — the assessor heard no speech;
212
225
  * - `insufficient_voiced_time` — the recording holds less voiced time than the policy requires;
213
226
  * - `implausible_speech_rate` — more words were recognised than the voiced time can hold;
214
- * - `missing_dimension` — a weighted dimension has no score in the assessment.
227
+ * - `missing_dimension` — a weighted dimension, or a weighted criterion's
228
+ * measure, has no score in the assessment;
229
+ * - `judgement_mismatch` — a spoken answer's judgement does not judge each
230
+ * criterion the judge scores exactly once, or judges one it does not score.
215
231
  */
216
- type SpeechUnscorableCode = 'invalid_assessment' | 'task_mismatch' | 'locale_mismatch' | 'reference_mismatch' | 'recording_mismatch' | 'assessor_not_accepted' | 'no_speech' | 'insufficient_voiced_time' | 'implausible_speech_rate' | 'missing_dimension';
232
+ type SpeechUnscorableCode = 'invalid_assessment' | 'task_mismatch' | 'locale_mismatch' | 'reference_mismatch' | 'recording_mismatch' | 'assessor_not_accepted' | 'no_speech' | 'insufficient_voiced_time' | 'implausible_speech_rate' | 'missing_dimension' | 'judgement_mismatch';
217
233
  /** A read-aloud take that cannot be graded. Never a zero: see `outcomeFromUnscorable`. */
218
234
  interface SpeechUnscorable {
219
235
  unscorable: true;
@@ -236,6 +252,27 @@ interface GradeReadAloudOptions {
236
252
  /** Compare the pass line with both sides rounded, as `gradeFromRubric` does. The score stays unrounded. */
237
253
  rounding?: RoundingPolicy;
238
254
  }
255
+ /**
256
+ * What `gradeSpeakingResponse` grades from (1.9): the engine's unscripted
257
+ * assessment of the take, carrying the transcript it was measured against, and a
258
+ * judgement of the criteria a judge scores — from `checkAiGrading` on a model's
259
+ * reply, or a person's marks in the same shape. Either may be `null` when the
260
+ * rubric needs nothing of it, and both are `null` for a blank.
261
+ */
262
+ interface SpeakingEvidence {
263
+ assessment: SpeechAssessment | null;
264
+ judgement: AiGradingJudgement | null;
265
+ }
266
+ /** Options for `gradeSpeakingResponse`: `gradeReadAloud`'s, and who scores the measured criteria. */
267
+ interface GradeSpeakingResponseOptions extends GradeReadAloudOptions {
268
+ /**
269
+ * The judge scores the criteria that name a `measure` too, and the engine's
270
+ * measures are not read for them. Off: a measured criterion is the engine's.
271
+ * A model that judges pronunciation is behind the same calibration gate as
272
+ * one that judges content — see `routeGrade`.
273
+ */
274
+ judgeMeasures?: boolean;
275
+ }
239
276
  /** How a word of a read-aloud attempt is marked. */
240
277
  type ReadAloudWordState = 'correct' | 'mispronounced' | 'omitted' | 'inserted';
241
278
  /**
@@ -1175,6 +1212,51 @@ declare function validateSpeechAssessment(value: unknown): ValidationResult<Spee
1175
1212
  * simply be missing from the grade; grade against the full data server-side.
1176
1213
  */
1177
1214
  declare function gradeReadAloud(data: ReadAloudData, response: ReadAloudLearnerResponse, assessment: SpeechAssessment | null, options: GradeReadAloudOptions): GradeRecord | SpeechUnscorable;
1215
+ /**
1216
+ * Grades a spoken answer to a `speaking-response` item (1.9).
1217
+ *
1218
+ * Each criterion of the rubric is scored once:
1219
+ *
1220
+ * - **by the judge** when it names no `measure` — what was said, how it was
1221
+ * organised, the range and accuracy of the language — from
1222
+ * `evidence.judgement`: a model's reply as `checkAiGrading` read it, or a
1223
+ * person's marks in the same shape, each from 0 to 1;
1224
+ * - **from the engine** when it names one: `pronunciation` is the assessment's
1225
+ * accuracy, `fluency` its fluency, `prosody` its prosody, each out of 100. With
1226
+ * `options.judgeMeasures` the judge scores those too, and the engine's scores
1227
+ * are not read.
1228
+ *
1229
+ * The weighted total is `gradeFromRubric`'s, over the item's weights and pass
1230
+ * line. Evidence is refused rather than scored, as a read-aloud's is: an
1231
+ * assessment that is not `unscripted`, not for the item's locale or not for
1232
+ * this recording; one from a model, unless `allowAiAssessor`; a take with no
1233
+ * speech, too little voiced time, or more words in its transcript than the
1234
+ * voiced time holds; a weighted measure the assessment has no score for
1235
+ * (`missing_dimension`); and a judgement that does not score each criterion the
1236
+ * judge scores exactly once, on its 0..1 scale (`judgement_mismatch`). A
1237
+ * judgement is matched whenever one is given, so marks meant for another item,
1238
+ * or for measures the judge was not asked to score, are refused.
1239
+ *
1240
+ * A blank (`response.recording === null`) is a grade of 0: the learner
1241
+ * submitted and said nothing. The evidence and the measurement are not read.
1242
+ *
1243
+ * With a judge, the grade is the judge's, as `gradeFromJudgement` makes one:
1244
+ * its feedback (or the authored feedback, when it gave none), its corrections
1245
+ * and rationale, `requiresHumanReview`, and `grader: { kind: 'ai', model,
1246
+ * promptHash }` — so `routeGrade` routes a spoken answer as it routes a written
1247
+ * one. Without one, the feedback is the authored feedback and the grader is the
1248
+ * engine that measured.
1249
+ *
1250
+ * @throws RangeError when `options.plausibility` or `options.rounding` cannot be
1251
+ * applied, or `options.measured` is not a pair of finite, non-negative
1252
+ * millisecond counts with `voicedMs` inside `durationMs`.
1253
+ * @throws TypeError when `response` is not a speaking-response response, or a
1254
+ * recording is graded without an assessment, a measurement, or — when the
1255
+ * judge scores a criterion — a judgement.
1256
+ * @throws ActivitySchemaError when `data` is not valid speaking-response data.
1257
+ * @throws RedactedScoringError when `data` is a `redact()` projection.
1258
+ */
1259
+ declare function gradeSpeakingResponse(data: SpeakingResponseData, response: SpeakingResponseLearnerResponse, evidence: SpeakingEvidence, options: GradeSpeakingResponseOptions): GradeRecord | SpeechUnscorable;
1178
1260
  /**
1179
1261
  * The longest reference text a read-aloud item accepts, in code points, before
1180
1262
  * and after normalisation. It is the dictation transcript cap on purpose: the
@@ -1351,5 +1433,5 @@ interface ItemTriesOutcome {
1351
1433
  * is everywhere else.
1352
1434
  */
1353
1435
  declare function evaluateTries(data: ActivityData, responses: readonly LearnerResponse[], options?: EvaluateOptions): ItemTriesOutcome;
1354
- export { hasGrade as $, diffDictationChars as A, Band as At, outcomeFromRoutedGrade as B, validateItemScoringPolicy as C, SpeechSyllable as Ct, DICTATION_MAX_TEXT_LENGTH as D, SpeechWordError as Dt, DICTATION_MAX_EQUIVALENCE_LENGTH as E, SpeechWord as Et, dictationReferenceWords as F, roundGrade as Ft, CalibrationReport as G, GradeFromJudgementOptions as H, CalibrationThresholds as I, TotalCalibration as J, CalibrationScope as K, GradeRoutingContext as L, DictationReference as M, RoundingPolicy as Mt, DictationWordAlignment as N, classifyBand as Nt, DICTATION_MAX_TRANSCRIPT_LENGTH as O, WavInspection as Ot, alignDictation as P, gte as Pt, gradeFromRubric as Q, GradeRoutingPolicy as R, scoreTries as S, SpeechPlausibilityPolicy as St, DICTATION_MAX_EQUIVALENCES as T, SpeechUnscorableCode as Tt, gradeFromJudgement as U, routeGrade as V, CalibrationPair as W, graderConfiguration as X, calibrationReport as Y, GradeFromRubricOptions as Z, DEFAULT_PASS_THRESHOLD as _, ReadAloudWordState as _t, evaluateTries as a, ItemTry as at, ITEM_SCORING_MAX_RETRIES as b, SpeechPhoneme as bt, inspectWav as c, AssessmentScore as ct, READ_ALOUD_MAX_SECONDS as d, PassFailureReason as dt, outcomeFromGrade as et, READ_ALOUD_MAX_TAKES as f, ScoredItem as ft, alignReadAloud as g, ReadAloudWordAlignment as gt, validateSpeechAssessment as h, GradeReadAloudOptions as ht, evaluate as i, ItemTriesScore as it, DictationAlignment as j, RoundingMode as jt, DictationCharOp as k, WavInspectionPolicy as kt, READ_ALOUD_MAX_DIMENSION_WEIGHT as l, AssessmentSectionInput as lt, gradeReadAloud as m, composeAssessmentScore as mt, ItemTriesOutcome as n, ItemScoringPolicy as nt, score as o, ItemTryScore as ot, SPEECH_ASSESSMENT_MAX_WORDS as p, SectionScore as pt, CriterionCalibration as q, ScoringOptions as r, ItemScoringPolicyIssue as rt, outcomeFromUnscorable as s, ResolvedItemScoringPolicy as st, EvaluateOptions as t, ItemScoringCount as tt, READ_ALOUD_MAX_REFERENCE_LENGTH as u, CompositionPolicy as ut, computePassThreshold as v, SpeechAssessment as vt, DICTATION_MAX_ACCEPTED_TRANSCRIPTS as w, SpeechUnscorable as wt, resolveItemScoringPolicy as x, SpeechPhonemeCandidate as xt, DEFAULT_ITEM_SCORING_POLICY as y, SpeechMeasurement as yt, inAuditSample as z };
1355
- //# sourceMappingURL=index-BM8LeDWn.d.cts.map
1436
+ export { gradeFromRubric as $, DictationCharOp as A, SpeechWordError as At, inAuditSample as B, scoreTries as C, SpeechPhoneme as Ct, DICTATION_MAX_EQUIVALENCE_LENGTH as D, SpeechUnscorable as Dt, DICTATION_MAX_EQUIVALENCES as E, SpeechSyllable as Et, alignDictation as F, RoundingPolicy as Ft, CalibrationPair as G, routeGrade as H, dictationReferenceWords as I, classifyBand as It, CriterionCalibration as J, CalibrationReport as K, CalibrationThresholds as L, gte as Lt, DictationAlignment as M, WavInspectionPolicy as Mt, DictationReference as N, Band as Nt, DICTATION_MAX_TEXT_LENGTH as O, SpeechUnscorableCode as Ot, DictationWordAlignment as P, RoundingMode as Pt, GradeFromRubricOptions as Q, GradeRoutingContext as R, roundGrade as Rt, resolveItemScoringPolicy as S, SpeechMeasurement as St, DICTATION_MAX_ACCEPTED_TRANSCRIPTS as T, SpeechPlausibilityPolicy as Tt, GradeFromJudgementOptions as U, outcomeFromRoutedGrade as V, gradeFromJudgement as W, calibrationReport as X, TotalCalibration as Y, graderConfiguration as Z, alignReadAloud as _, GradeSpeakingResponseOptions as _t, evaluateTries as a, ItemTriesScore as at, DEFAULT_ITEM_SCORING_POLICY as b, SpeakingEvidence as bt, inspectWav as c, ResolvedItemScoringPolicy as ct, READ_ALOUD_MAX_SECONDS as d, CompositionPolicy as dt, hasGrade as et, READ_ALOUD_MAX_TAKES as f, PassFailureReason as ft, validateSpeechAssessment as g, GradeReadAloudOptions as gt, gradeReadAloud as h, composeAssessmentScore as ht, evaluate as i, ItemScoringPolicyIssue as it, diffDictationChars as j, WavInspection as jt, DICTATION_MAX_TRANSCRIPT_LENGTH as k, SpeechWord as kt, READ_ALOUD_MAX_DIMENSION_WEIGHT as l, AssessmentScore as lt, gradeSpeakingResponse as m, SectionScore as mt, ItemTriesOutcome as n, ItemScoringCount as nt, score as o, ItemTry as ot, SPEECH_ASSESSMENT_MAX_WORDS as p, ScoredItem as pt, CalibrationScope as q, ScoringOptions as r, ItemScoringPolicy as rt, outcomeFromUnscorable as s, ItemTryScore as st, EvaluateOptions as t, outcomeFromGrade as tt, READ_ALOUD_MAX_REFERENCE_LENGTH as u, AssessmentSectionInput as ut, DEFAULT_PASS_THRESHOLD as v, ReadAloudWordAlignment as vt, validateItemScoringPolicy as w, SpeechPhonemeCandidate as wt, ITEM_SCORING_MAX_RETRIES as x, SpeechAssessment as xt, computePassThreshold as y, ReadAloudWordState as yt, GradeRoutingPolicy as z };
1437
+ //# sourceMappingURL=index-DLsUnGHt.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index-DLsUnGHt.d.cts","names":[],"sources":["../src/scoring/rounding.ts","../src/types/speech.ts","../src/scoring/compose.ts","../src/types/item-scoring.ts","../src/grading.ts","../src/scoring/assisted/calibration.ts","../src/scoring/assisted/grade-from-judgement.ts","../src/scoring/assisted/routing.ts","../src/scoring/dictation/align.ts","../src/scoring/dictation/chars.ts","../src/scoring/dictation/normalize.ts","../src/scoring/item-scoring.ts","../src/scoring/pass-threshold.ts","../src/scoring/speech/align.ts","../src/scoring/speech/assessment.ts","../src/scoring/speech/grade.ts","../src/scoring/speech/grade-speaking.ts","../src/scoring/speech/limits.ts","../src/scoring/speech/wav.ts","../src/scoring/unscorable.ts","../src/scoring/index.ts"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { At as ActivityType, Et as ActivityDataMap, Ot as ActivityMedia, gn as ValidationResult, nn as MultipleChoiceOptionMedia, st as ItemGroup } from "./ai-B1wYrqcB.js";
1
+ import { $t as ActivityType, Et as ItemGroup, Tn as MultipleChoiceOptionMedia, Wn as ValidationResult, Yt as ActivityDataMap, Zt as ActivityMedia } from "./ai-zhc9yhRj.js";
2
2
  /**
3
3
  * The learner-safe SHAPE of each built-in type.
4
4
  *
@@ -362,4 +362,4 @@ declare function validateOptionMedia(value: unknown): ValidationResult<MultipleC
362
362
  */
363
363
  declare function validateActivity<T extends ActivityType>(type: T, data: unknown): ValidationResult<ActivityDataMap[T]>;
364
364
  export { RedactedStimulus as A, RedactedGapSelectChoice as C, RedactedMultipleChoiceOption as D, RedactedMultipleChoiceData as E, RedactedMultipleChoiceOptionMedia as O, RedactedGapSelectBank as S, RedactedGapSelectGap as T, RedactedActivity as _, JsonSchemaTarget as a, RedactedDictationSlowMedia as b, fillInTheBlanksJsonSchema as c, jsonSchemaFor as d, multipleChoiceJsonSchema as f, validateItemGroup as g, writtenResponseJsonSchema as h, SCRIPT_MAX_TURNS as i, RedactedWrittenResponseData as j, RedactedReadAloudData as k, gapSelectJsonSchema as l, stimulusJsonSchema as m, validateMedia as n, contentJsonSchema as o, readAloudJsonSchema as p, validateOptionMedia as r, dictationJsonSchema as s, validateActivity as t, itemGroupJsonSchema as u, RedactedBlankConfig as v, RedactedGapSelectData as w, RedactedFillInTheBlanksData as x, RedactedDictationData as y };
365
- //# sourceMappingURL=index-BdXs4-en.d.ts.map
365
+ //# sourceMappingURL=index-f4YuMgFb.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index-BdXs4-en.d.ts","names":[],"sources":["../src/types/redacted.ts","../src/schemas/item-group.ts","../src/schemas/json-schema.ts","../src/schemas/media.ts","../src/schemas/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;UAoBU;EACR;EACA;EACA;EACA;EACA;;;UAIQ;EACR;EACA;EACA;EACA;EACA;;;UAIQ;EACR;EACA;EACA;EACA;EACA,SAAS;EACT;EACA,WAAW;;;UAIH;EACR;EACA;;;UAIQ;EACR;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR;EACA;EACA;EACA,KAAK;;;UAIU;EACf;EACA;EACA;EACA;;;UAIe;EACf;EACA;EACA,QAAQ;;;UAIO,mCAAmC;EAClD;EACA;EACA;EACA;EACA;EACA,SAAS;EACT;EACA;;;UAIe;EACf;EACA;;;UAIe,oCAAoC;EACnD;EACA;EACA;EACA;EACA,QAAQ;EACR;;;UAIe,oCAAoC;EACnD;EACA;EACA;EACA;EACA;EACA;IAEM;MACE;MACA;MACA;MACA;QAAW;QAAe;;;IAE5B;;EAGN;EACA;;;UAIe;EACf;EACA;;;UAIe;EACf;EACA,SAAS;;;UAIM;EACf;EACA,UAAU;EACV;;;UAIe,8BAA8B;EAC7C;EACA;EACA;EACA;EACA,MAAM;EACN,QAAQ;EACR;EACA;EACA;;;UAIe;EACf;EACA;EACA;;;UAIe,8BAA8B;EAC7C;EACA,YAAY;EACZ;IAAU;;EACV;;;;;;;UAQe,8BAA8B;EAC7C;EACA;EACA;EACA;EACA,YAAY;EACZ;IACE;IACA;IACA;;EAEF;IACE;MACE;MACA;;;;;UAMW;EACf;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR;EACA;;;;;;;;;;;;;;KAeU,mBACR,6BACA,8BACA,8BACA,wBACA,wBACA;;;;;;;;;;;iBCyMY,kBAAkB,gBAAgB,iBAAiB;;;;;cCnatD,oBAAoB;;;;;;;;cAWpB,qBAAqB;;;;;;;;;;;;;;;;;;cAqBrB,qBAAqB;;;;;;;;;;;cAcrB,qBAAqB;;;;;;;;;;cAarB,qBAAqB;cAIrB,0BAA0B;;;;;;cAY1B,2BAA2B;;;;;cAW3B,2BAA2B;;KAQ5B;;;;;;;;;;;;;;;;;iBAqBI,cACd,cACA;EAAW,SAAS;IACnB;;;;;;;;;;;;;;;;;;iBA4Ca,kBACd;EAAW,SAAS;IACnB;;cCzEU;;;;;;;;;;;iBCnDG,cAAc,iBAAiB,iBAAiB;;;;;;;;iBAWhD,oBAAoB,iBAAiB,iBAAiB;;;;;;;;;;;;;iBA8BtD,iBAAiB,UAAU,cACzC,MAAM,GACN,gBACC,iBAAiB,gBAAgB"}
1
+ {"version":3,"file":"index-f4YuMgFb.d.ts","names":[],"sources":["../src/types/redacted.ts","../src/schemas/item-group.ts","../src/schemas/json-schema.ts","../src/schemas/media.ts","../src/schemas/index.ts"],"mappings":";;;;;;;;;;;;;;;;;;;;UAoBU;EACR;EACA;EACA;EACA;EACA;;;UAIQ;EACR;EACA;EACA;EACA;EACA;;;UAIQ;EACR;EACA;EACA;EACA;EACA,SAAS;EACT;EACA,WAAW;;;UAIH;EACR;EACA;;;UAIQ;EACR;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR;EACA;EACA;EACA,KAAK;;;UAIU;EACf;EACA;EACA;EACA;;;UAIe;EACf;EACA;EACA,QAAQ;;;UAIO,mCAAmC;EAClD;EACA;EACA;EACA;EACA;EACA,SAAS;EACT;EACA;;;UAIe;EACf;EACA;;;UAIe,oCAAoC;EACnD;EACA;EACA;EACA;EACA,QAAQ;EACR;;;UAIe,oCAAoC;EACnD;EACA;EACA;EACA;EACA;EACA;IAEM;MACE;MACA;MACA;MACA;QAAW;QAAe;;;IAE5B;;EAGN;EACA;;;UAIe;EACf;EACA;;;UAIe;EACf;EACA,SAAS;;;UAIM;EACf;EACA,UAAU;EACV;;;UAIe,8BAA8B;EAC7C;EACA;EACA;EACA;EACA,MAAM;EACN,QAAQ;EACR;EACA;EACA;;;UAIe;EACf;EACA;EACA;;;UAIe,8BAA8B;EAC7C;EACA,YAAY;EACZ;IAAU;;EACV;;;;;;;UAQe,8BAA8B;EAC7C;EACA;EACA;EACA;EACA,YAAY;EACZ;IACE;IACA;IACA;;EAEF;IACE;MACE;MACA;;;;;UAMW;EACf;EACA;EACA;EACA;EACA;EACA,QAAQ;EACR;EACA;;;;;;;;;;;;;;KAeU,mBACR,6BACA,8BACA,8BACA,wBACA,wBACA;;;;;;;;;;;iBCyMY,kBAAkB,gBAAgB,iBAAiB;;;;;cCnatD,oBAAoB;;;;;;;;cAWpB,qBAAqB;;;;;;;;;;;;;;;;;;cAqBrB,qBAAqB;;;;;;;;;;;cAcrB,qBAAqB;;;;;;;;;;cAarB,qBAAqB;cAIrB,0BAA0B;;;;;;cAY1B,2BAA2B;;;;;cAW3B,2BAA2B;;KAQ5B;;;;;;;;;;;;;;;;;iBAqBI,cACd,cACA;EAAW,SAAS;IACnB;;;;;;;;;;;;;;;;;;iBA4Ca,kBACd;EAAW,SAAS;IACnB;;cCzEU;;;;;;;;;;;iBCnDG,cAAc,iBAAiB,iBAAiB;;;;;;;;iBAWhD,oBAAoB,iBAAiB,iBAAiB;;;;;;;;;;;;;iBA8BtD,iBAAiB,UAAU,cACzC,MAAM,GACN,gBACC,iBAAiB,gBAAgB"}