Time Zone Meeting Scheduler

Intervals Scheduling Timezone

You are given a list of participants, where each participant is represented by an object containing:

  • name: A string representing the participant's name.
  • timezone: An integer representing the participant's offset from UTC in minutes (e.g., -300 represents UTC-5).
  • busy: A list of busy intervals. Each busy interval is a pair of local time strings in 24-hour "HH:MM" format representing the start (inclusive) and end (exclusive) of a period when the participant is not available.

In addition, you are provided with:

  • meeting_duration: An integer representing the desired meeting duration in minutes.
  • meeting_window: A pair of time strings in 24-hour "HH:MM" format representing the start and end times (in UTC) of the overall window during which a meeting can be scheduled.

Write a program that determines all possible meeting time slots (expressed in UTC in "HH:MM" format) that satisfy the following conditions:

  1. The slot lies entirely within the meeting window.
  2. In the converted UTC time, each participant is free (i.e., not in any busy interval) for the entire duration of the meeting slot.
  3. The length of the meeting slot is at least the given meeting_duration.
  4. The available slots are as long as possible, meaning that you should return maximal intervals where the meeting can be scheduled.

Notes:

  • Each participant's busy intervals are provided in local time according to their timezone. You must convert these intervals to UTC before processing.
  • Busy intervals may be provided in any order and can overlap within the same participant.
  • Assume all times are within a single day and the meeting does not span multiple days.
  • Busy intervals are considered closed on the start and open on the end. For example, an interval ["09:00", "10:30"] means the participant is busy from 09:00 up to but not including 10:30.

Example input:

participants = [
{
"name": "Alice",
"timezone": -60, // UTC-1
"busy": [["10:00", "11:00"], ["13:30", "14:00"]]
},
{
"name": "Bob",
"timezone": 120, // UTC+2
"busy": [["09:00", "10:30"], ["12:00", "12:30"]]
}
]

meeting_duration = 30
meeting_window = ["12:00", "18:00"]

Your solution should compute the list of all valid meeting slots (each slot represented as [slot_start, slot_end] in UTC "HH:MM" format) that satisfy the above requirements.

Implement your solution in the programming language of your choice using clear and efficient code.