anchor.diff:      open MovescountContrib.Lib.MovescountClient
       open MovescountContrib.Lib.Utils
       open DDay.iCal
  +
  +    let (|Regex|_|) pattern input =
  +        let m = Regex.Match(input, pattern)
  +        if m.Success then Some(List.tail [ for g in m.Groups -> g.Value ])
  +        else None
   
       let getTrainingPlan email password =
           async {
  
positive.code: ﻿namespace MovescountContrib.Lib
  
  open Newtonsoft.Json
  open System.Text.RegularExpressions
  open MovescountContrib.Lib.DataTypes
  
negative.code: 
          iCal.AddProperty("X-WR-CALNAME", calName)
          iCal.AddProperty("X-WR-CALDESC", calDescription)
          iCal.AddTimeZone(TimeZoneInfo.FindSystemTimeZoneById("W. Europe Standard Time")) |> ignore
  
          plan.ScheduledMoves |>
              Seq.iter(fun m ->
                  let event = iCal.Create<Event>()
                  event.Properties.Remove("SEQUENCE") |> ignore
  
                  match getStartTime m with
                  | Some(date) ->
                      event.IsAllDay <- false
                      event.Start <- new iCalDateTime(date)
                      event.End <- new iCalDateTime((date.AddMinutes((Convert.ToDouble(m.Duration)))))
                  | None ->
                      event.IsAllDay <- true
                      event.Start <- new iCalDateTime(m.Day.Date)
  
                  event.Description <- m.Description
                  event.Summary <- getEventTitle m
                  event.UID <- (m.ID.ToString())
  