// returns minute ranges from 0 to 24*60
static L<IntRange> parseBusinessHours(S s) {
  LS parts = nempties(tok_splitAtComma(s));
  ret map(parts, part -> {
    LS l = splitAtMinus(part);
    ret intRange(
      parseHourAndOptionalMinutesToMinutes(first(l)),
      parseHourAndOptionalMinutesToMinutes(second(l)));
  });
}