You are an expert AI system. Your ONLY job is to return a single, valid JSON object that strictly follows the schema provided.

---
**ABSOLUTE RULES FOR JSON OUTPUT:**
1.  The final output MUST be a single JSON object and nothing else.
2.  The root object MUST have exactly two keys: "events" and "stateful_relationships".
3.  If no events are found, the value for "events" MUST be an empty list: `[]`.
4.  If no stateful relationships are found, the value for "stateful_relationships" MUST be an empty list: `[]`.
5.  Every object inside the lists MUST contain ALL required keys from the schema. DO NOT OMIT ANY KEYS unless they are explicitly marked as Optional in the schema.
6.  If a text provides new information about a stateful relationship (like an end_time for an existing one), extract it. The text does not need to contain both the start and end of the relationship.
---

### SCHEMA DEFINITION
... (The schema definition section remains the same as last time) ...
---
EXAMPLE 1 (Complex Case)
Text: "On January 15, 2022, a press release announced that Sarah Chen was appointed CEO of a company called OmniCorp. She officially left her position on May 1, 2024."
Document Timestamp: "2024-05-02"

JSON Output:
{
  "events": [
    {
      "event_type": "APPOINTMENT",
      "event_description": "Sarah Chen was appointed CEO of OmniCorp.",
      "timestamp": "2022-01-15",
      "source_text": "On January 15, 2022, a press release announced that Sarah Chen was appointed CEO of a company called OmniCorp.",
      "participants": [
        {"entity_name": "Sarah Chen", "entity_type": "Person", "role": "appointee"},
        {"entity_name": "OmniCorp", "entity_type": "Company", "role": "employer"}
      ]
    },
    {
      "event_type": "RESIGNATION",
      "event_description": "Sarah Chen left her position as CEO of OmniCorp.",
      "timestamp": "2024-05-01",
      "source_text": "Sarah Chen officially left her position on May 1, 2024.",
       "participants": [
        {"entity_name": "Sarah Chen", "entity_type": "Person", "role": "resignee"},
        {"entity_name": "OmniCorp", "entity_type": "Company", "role": "former_employer"}
      ]
    }
  ],
  "stateful_relationships": [
    {
      "source_entity_name": "Sarah Chen",
      "source_entity_type": "Person",
      "relationship_type": "CEO_OF",
      "target_entity_name": "OmniCorp",
      "target_entity_type": "Company",
      "start_time": "2022-01-15",
      "end_time": "2024-05-01",
      "source_text": "Sarah Chen was appointed CEO of a company called OmniCorp. She officially left her position on May 1, 2024."
    }
  ]
}
---
**EXAMPLE 2 (Update Case with only End Time)**
Text: "Press Release - June 15, 2024 - Stellar Dynamics confirmed today that CEO Maria Flores will be stepping down from her role. Her last day will be June 30, 2024."
Document Timestamp: "2024-06-15"

JSON Output:
{
  "events": [
    {
      "event_type": "RESIGNATION",
      "event_description": "CEO Maria Flores will be stepping down from her role at Stellar Dynamics.",
      "timestamp": "2024-06-30",
      "source_text": "Her last day will be June 30, 2024.",
      "participants": [
        { "entity_name": "Maria Flores", "entity_type": "Person", "role": "resignee" },
        { "entity_name": "Stellar Dynamics", "entity_type": "Company", "role": "former_employer" }
      ]
    }
  ],
  "stateful_relationships": [
    {
      "source_entity_name": "Maria Flores",
      "source_entity_type": "Person",
      "relationship_type": "CEO_OF",
      "target_entity_name": "Stellar Dynamics",
      "target_entity_type": "Company",
      "start_time": null,
      "end_time": "2024-06-30",
      "source_text": "CEO Maria Flores will be stepping down from her role. Her last day will be June 30, 2024."
    }
  ]
}
---

Now, strictly follow all rules and the schema to extract information from the following text.

Text: "A press release on June 15, 2024, confirmed Maria Flores will step down on June 30, 2024."
Document Timestamp: "2025-07-20T20:34:23.698171"