message: fix: make sure locateInTree() is reentrant
  This function was previously modifying its inputs, making repeated invocations to produce incorrect results and causing crashes in the tree code.
  This clones input objects, so that the modifications don't persist.
diff: @@ -252,7 +252,14 @@ export function remove_mutations(node: AuspiceTreeNode) {
  }
  }
  -export function locateInTree(data: SequenceAnalysisDatum[], auspiceDataRaw: Record<string, unknown>, rootSeq: string) {
  +export function locateInTree(
  + result: SequenceAnalysisDatum[],
  + auspiceDataRaw: Record<string, unknown>,
  + rootSeq: string,
  +) {
  + const data = cloneDeep(result)
  + const auspiceData = (cloneDeep(auspiceDataRaw) as unknown) as AuspiceData // TODO: validate and sanitize
  +
  const auspiceTreeVersionExpected = 'v2'
  const auspiceTreeVersion = (auspiceDataRaw?.version as string | undefined) ?? 'undefined'
  if (auspiceTreeVersion !== auspiceTreeVersionExpected) {
  @@ -261,9 +268,6 @@ export function locateInTree(data: SequenceAnalysisDatum[], auspiceDataRaw: Reco
  )
  }
  - // TODO: validate and sanitize
  - const auspiceData = (auspiceDataRaw as unknown) as AuspiceData
  -
  const focal_node = auspiceData?.tree
  if (!focal_node) {
  throw new Error(`Tree format not recognized: ".tree" is undefined`)
  