From 0411f84062707b7936dace71108cb0568997422e Mon Sep 17 00:00:00 2001 From: Ange-Marie MAURIN Date: Fri, 15 May 2026 17:27:26 +0200 Subject: [PATCH] Code commit --- API.md | 142 ++++++ Core/UnrealApi/__init__.py | 4 + Core/UnrealApi/message_filter.py | 67 +++ Core/UnrealApi/unreal_api.py | 142 ++++++ Core/__init__.py | 0 GUI/Widgets/__init__.py | 0 GUI/Widgets/json_table_widget.py | 192 ++++++++ GUI/Widgets/json_viewer.py | 75 +++ GUI/__init__.py | 5 + GUI/main_window.py | 120 +++++ Received.json | 792 +++++++++++++++++++++++++++++++ Sent.json | 173 +++++++ err.err | 34 ++ test-json-viewer.bat | 4 + ws-rundown-tester.py | 13 + 15 files changed, 1763 insertions(+) create mode 100644 API.md create mode 100644 Core/UnrealApi/__init__.py create mode 100644 Core/UnrealApi/message_filter.py create mode 100644 Core/UnrealApi/unreal_api.py create mode 100644 Core/__init__.py create mode 100644 GUI/Widgets/__init__.py create mode 100644 GUI/Widgets/json_table_widget.py create mode 100644 GUI/Widgets/json_viewer.py create mode 100644 GUI/__init__.py create mode 100644 GUI/main_window.py create mode 100644 Received.json create mode 100644 Sent.json create mode 100644 err.err create mode 100644 test-json-viewer.bat create mode 100644 ws-rundown-tester.py diff --git a/API.md b/API.md new file mode 100644 index 0000000..6ee61da --- /dev/null +++ b/API.md @@ -0,0 +1,142 @@ +# Unreal Rundown Server API + + + +## Descrption + +As I understand, this experimental feature of Motion Design Plugin that allow us to make several action with rundowns. +This documentation based on [Unreal Engine 5.5.1](https://epicgames.com) and Motion Design v1.0. +The initial setup of the rundown server is describe [here](dev.epicgames.com/documentation/en-us/unreal-engine/setting-up-rundown-server-for-motion-design-in-unreal-engine). + +### Establishing connection + +The port number and the server bind address is setup in unreal engine project setting window section _Plugins|Websocket Messaging|Transport_. Another important thing is to select the **right transport type (JSON|CBOR)**. + +After establishing the websocket connection, you will receive a lot of messages that does not you need. First of all, you **must** send an ``AvaRundownPing`` and the the rundown server will send you back an ``AvaRundownPong`` with a ``Sender`` field needed to start sending other commands. + + +> The Pong message Sender field is the UUID of the Rundown server’s endpoint in the message bus system. This is then used as the Recipients field for all other messages from the Websocket client. +> +> --- [Message Bus Handshake with Rundown Server in Unreal Engine 5.5 Official documentation](dev.epicgames.com/documentation/en-us/unreal-engine/setting-up-rundown-server-for-motion-design-in-unreal-engine) + +Once you have this precious (it takes me days to finnaly understand that without at least on ``Recipients`` in the array nothing will happen), just run some [commands](#commands) + +### Common Fields + +#### ``Sender`` +An Id you can choose. It's something like your the expeditor and the rundownServer will respond backl to you by placing ``Sender`` yopu provided in the ``Recipients`` field. + +#### ``Recipients`` +Array of recipients of the message + +#### ``MessageType`` +This is the real endpoints of the message, something like the command address. The ``MessageType`` can have multiple usage out of RundownServer. For example, [with http commands via websockets](https://dev.epicgames.com/documentation/en-us/unreal-engine/remote-control-api-websocket-reference-for-unreal-engine#websocketmessagetype-http) or [managing remote control presets.](https://dev.epicgames.com/documentation/en-us/unreal-engine/remote-control-api-websocket-reference-for-unreal-engine#websocketmessagetype-presetregister) + +#### ``Scope`` +Enum determinig the scope of the message bus system. For the rundownServer it always will be "Network" + +#### ``Expiration`` +Unix time at which the message gets discarded. **Important** + +#### ``Annotations`` +Optional message annotations. I've never use this for now. + +#### ``Message`` +Content of the message. This is the specific part of the messaging system. It's parameters that you _send_ to the server. + + +### Commands + +#### ServerInfo/Script/AvalancheMedia.AvaRundownPing +example: +```json +{ + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": [], + "MessageType": "/Script/AvalancheMedia.AvaRundownPing", + "Expiration": 253402300799, + "Scope": "Network", + "Annotations": {}, + "Message": + { + "requestId" : -1 // could be customize to your needs + } +} +``` +#### ServerInfo/Script/AvalancheMedia.AvaRundownGetServerInfo +example: +```json +{ + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": [ + "139696A842C8861F52E756BB60AA8661" + ], + "MessageType": "/Script/AvalancheMedia.AvaRundownGetServerInfo", + "Expiration": 253402300799, + "Scope": "Network", + "Annotations": {}, + "Message": + { + "requestId" : -1 // could be customize to your needs + } +} +``` + +#### ServerInfo/Script/AvalancheMedia.AvaRundownGetRundowns +example: +```json +{ + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": [ + "139696A842C8861F52E756BB60AA8661" + ], + "MessageType": "/Script/AvalancheMedia.AvaRundownGetRundowns", + "Expiration": 253402300799, + "Scope": "Network", + "Annotations": {}, + "Message": + { + "requestId" : -1 // could be customize to your needs + } +} +``` +#### ServerInfo/Script/AvalancheMedia.AvaRundownLoadRundown +example: +```json +{ + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": [ + "139696A842C8861F52E756BB60AA8661" + ], + "MessageType": "/Script/AvalancheMedia.AvaRundownLoadRundown", + "Expiration": 253402300799, + "Scope": "Network", + "Annotations": {}, + "Message": + { + "rundown": "/Game/Rundowns/001Rundow.001Rundown", // rundown Path within unreal + "requestId" : -1 // could be customize to your needs + } +} +``` + + + + +## More infos and useful links + + +### Unreal Engine 5.5 Official Documentation + +- [Rundown Server WebSocket API Reference](https://dev.epicgames.com/documentation/en-us/unreal-engine/WebAPI/RundownServerWebSocketAPIReference#message:pagedetails) +- [Setting Up Rundown Server for Motion](https://dev.epicgames.com/documentation/en-us/unreal-engine/setting-up-rundown-server-for-motion-design-in-unreal-engine#editingthepagercpwithremotecontrolapi) +- [General Documentation for Motion Design](https://dev.epicgames.com/documentation/en-us/unreal-engine/setting-up-rundown-server-for-motion-design-in-unreal-engine#editingthepagercpwithremotecontrolapi) + +### Unofficial Documentation + +- [Pixel Prof Youtube channel with a lot of useful and life-saving ressources](https://www.youtube.com/@PixelProf/videos) + +## Author + +[Ange-Marie MAURIN](mailto://a-m.maurin@a2msystemes.fr) | [GitHub](https://github.com/a2mSystemes) + diff --git a/Core/UnrealApi/__init__.py b/Core/UnrealApi/__init__.py new file mode 100644 index 0000000..7bd1a7f --- /dev/null +++ b/Core/UnrealApi/__init__.py @@ -0,0 +1,4 @@ +# Core/UnrealApi/__init__.py +from .unreal_api import UnrealApi + +__all__ = ['UnrealApi'] \ No newline at end of file diff --git a/Core/UnrealApi/message_filter.py b/Core/UnrealApi/message_filter.py new file mode 100644 index 0000000..9318111 --- /dev/null +++ b/Core/UnrealApi/message_filter.py @@ -0,0 +1,67 @@ +from enum import IntFlag + +class MessageFilterResultType(IntFlag): + NotFound = 0x00 + StartsWith = 0x01 + EndsWith = 0x02 + Found = 0x04 + + def __or__(self, other): + if isinstance(other, MessageFilterResultType): + return self.__class__(self.value | other.value) + return NotImplemented + + def __and__(self, other): + if isinstance(other, MessageFilterResultType): + return self.__class__(self.value & other.value) + return NotImplemented + + def __contains__(self, other): + if isinstance(other, MessageFilterResultType): + return (self.value & other.value) != 0 + return NotImplemented + + def __bool__(self): + return self.value != 0 + + @classmethod + def from_value(cls, value: int): + """Crée une instance de l'enum à partir d'une valeur entière combinée.""" + if isinstance(value, cls): + return value + + # Vérifier si la valeur est valide en comparant avec les valeurs définies + valid_values = [member.value for member in cls] + if value not in valid_values: + raise ValueError(f"Invalid value {value} for enum {cls.__name__}") + + # Trouver l'enum correspondant à la valeur + for member in cls: + if member.value == value: + return member + + raise ValueError(f"No matching enum found for value {value}") + + + + +class MessageFilter: + def __init__(self, key_filter, filter): + self.key_filter: str = key_filter + self.filter: str = filter + + + def is_filtered(self, data:dict) -> MessageFilterResultType: + # seraching if key exist in data + if self.key_filter in data.keys(): + if(self.filter in data[self.key_filter]): + if(data[self.key_filter].startswith(self.filter)): + return MessageFilterResultType.Found | MessageFilterResultType.StartsWith + pass + if(data[self.key_filter].endswith(self.filter)): + return MessageFilterResultType.Found | MessageFilterResultType.EndsWith + pass + return MessageFilterResultType.Found + return MessageFilterResultType.NotFound + + \ No newline at end of file diff --git a/Core/UnrealApi/unreal_api.py b/Core/UnrealApi/unreal_api.py new file mode 100644 index 0000000..646e7b4 --- /dev/null +++ b/Core/UnrealApi/unreal_api.py @@ -0,0 +1,142 @@ +# unreal_api.py + +from PySide6.QtCore import QObject, QUrl, Signal, QByteArray +from PySide6.QtWebSockets import QWebSocket +import json +from datetime import datetime, timedelta +from Core.UnrealApi.message_filter import MessageFilter, MessageFilterResultType +test = '''{ + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": [], + "MessageType": "/Script/AvalancheMediaEditor.AvaRundownPing", + "Expiration": , + "Scope": "Network", + "Annotations": {}, + "Message": + { + "bAuto": false + } + }''' + +class AvaPing: + def __init__(self, default_expiration=5): + self.default_expiration = default_expiration + self.Sender = "F2DCD99C267C4F84B50CF091AA4ED608" + self.Recipients = [] + self.MessageType = "/Script/AvalancheMediaEditor.AvaRundownPing" + self.Expiration = None + self.Message = {"bAuto": False} + self.Annotations = {} + self.Scope = "Network" + + def calculate_expire(self): + expiration_time = datetime.now() + timedelta(minutes=self.default_expiration) + return int(expiration_time.timestamp()) + + def update_expire(self): + self.Expiration = self.calculate_expire() + + def auto_ping(self) -> str: + self.update_expire() + me = self.__dict__ + del me["default_expiration"] + me["Message"] = {"bAuto": True} + return self.to_json() + + def to_json(self): + self.update_expire() + me = self.__dict__ + del me["default_expiration"] + return json.dumps(me) + + # def __dict__(self): + # self.Expiration = self.calculate_expire() + # return self.__dict__ + + +class UnrealApi(QObject): + # Definitions des Signaux + message_sent = Signal(object) + message_received = Signal(object) + ws_connected = Signal(bool) + + def __init__(self, uri, parent=None): + super().__init__(parent) + self.uri = uri + self.websocket = None + self.connected = False + self._filterOnlyAva = False + self._filter = MessageFilter(key_filter="MessageType", filter="Ava") + + def ws_connect(self): + if not self.websocket: + self.websocket = QWebSocket() + self.websocket.open(QUrl(self.uri)) + self.websocket.binaryMessageReceived.connect(self.on_message_received) + self.websocket.connected.connect(self.on_connected) + self.websocket.disconnected.connect(self.on_disconnected) + + def on_connected(self): + print("Connecté au serveur WebSocket") + self.connected = True + self.ws_connected.emit(True) # Émettre le signal de connexion établie + + def on_disconnected(self): + print("Déconnecté du serveur WebSocket") + self.connected = False + self.ws_connected.emit(False) # Émettre le signal de déconnexion + + def send_message(self, message): + if self.connected: + data = json.loads(message) + current_time = datetime.now() + expiration_time = current_time + timedelta(minutes=5) + unix_expiration = int(expiration_time.timestamp()) + data["Expiration"] = unix_expiration + message_with_expiration = json.dumps(data) + self.websocket.sendTextMessage(message_with_expiration) + print(f"message sent: {data}") + self.message_sent.emit(data) + + def on_message_received(self, data: QByteArray): + try: + message = json.loads(data.data()) + print(f"received message: {message}") + except json.JSONDecodeError as e: + print(f"Error decoding JSON: {e}") + except UnicodeDecodeError as e: + print(f"UnicodeDecodeError decoding from server: {e}") + except TypeError as e: + print(f"TypeError decoding data from server: {e}") + except AttributeError as e: + print(f"AttributeError decoding data from server: {e}") + else: + print(f"message recived: {message}") + # print(f"MessageType: {message['MessageType']}") + # more complicated filter needed + # print(f"filter state : {self._filterOnlyAva}") + + if( not self._filterOnlyAva): + # print("filter not activated") + self.message_received.emit(message) + return + else: + # print("filter activated") + if(self._filter.is_filtered(message) != MessageFilterResultType.NotFound ): + self.message_received.emit(message) + return + # self.message_received.emit(message) + + + def set_filtered(self, filtered: bool): + print(f"filtered activation state changed: {filtered}") + self._filterOnlyAva = filtered + + def close_websocket(self): + if self.websocket: + self.websocket.close() + + def send_ping(self): + ping = AvaPing() + # print(f"ping: {ping.to_json()}") + self.send_message(ping.to_json()) \ No newline at end of file diff --git a/Core/__init__.py b/Core/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/GUI/Widgets/__init__.py b/GUI/Widgets/__init__.py new file mode 100644 index 0000000..e69de29 diff --git a/GUI/Widgets/json_table_widget.py b/GUI/Widgets/json_table_widget.py new file mode 100644 index 0000000..ba22dfb --- /dev/null +++ b/GUI/Widgets/json_table_widget.py @@ -0,0 +1,192 @@ +from PySide6.QtWidgets import QCheckBox, QApplication, QMainWindow, QTableView, QVBoxLayout, QWidget, QPushButton, QAbstractItemView +from PySide6.QtGui import QStandardItemModel, QStandardItem +from PySide6.QtCore import QModelIndex, Signal +import random +import json +import os +import uuid + +DEBUG_MODE = False + +class JsonTableWidget(QTableView): + header_double_clicked = Signal(object) + def __init__(self, parent=None, dataset_name=""): + super().__init__(parent) + self.model = QStandardItemModel() + # self.model.itemChanged.connect(self.save_data) + self.setModel(self.model) + self.setSelectionMode(QAbstractItemView.ExtendedSelection) + if dataset_name == "": + self.dataset_name = str(uuid.uuid4()) + self._save_path = os.path.join(os.path.dirname(__file__), "../../",f"{self.dataset_name}.save.json") + + # Ajout entêtes de colonne basique + self.headers = [ ] + self.refresh_columns_headers() + self.verticalHeader().sectionDoubleClicked.connect(self.row_double_clicked) + self.emit_double_click_on_header = False + + + def refresh_columns_headers(self): + for col, header in enumerate(self.headers): + item = QStandardItem(header) + self.model.setHorizontalHeaderItem(col, item) + + def add_new_column(self, title= None): + # Ajouter une nouvelle colonne à la fin du modèle + num_cols = self.model.columnCount() + new_header_text = title or f"New Column {num_cols + 1}" + # print(f"adding new column: {new_header_text}") + # Créer le nouvel en-tête pour la colonne + header_item = QStandardItem(new_header_text) + # Insérer une nouvelle colonne à la fin du modèle + self.model.insertColumn(num_cols-1) + header_labels = [] + for i in range(self.model.columnCount()): + header_item = self.model.horizontalHeaderItem(i) + if header_item is not None: + header_labels.append(header_item.text()) + header_labels.insert(len(header_labels) - 1, new_header_text) + self.model.setHorizontalHeaderLabels(header_labels) + # self.reset_checkbox() + + def add_new_row(self, data = None): + # print(f"tableview state : \nRows -> {self.model.rowCount()}\nCols -> {self.model.columnCount()}") + valid_data = self.check_incoming_data(data) + if( valid_data is None): + # print("No insertion possible. Aborting !!!") + #Remplir la nouvelle ligne avec des données (par exemple, des nombres aléatoires) + if DEBUG_MODE: + # random int insertion + self.add_new_row({"random": random.randint(1,1000)}) + return + + # Ajouter une nouvelle colonne à la fin du modèle si elle n'existe pas + for keys, values in valid_data.items(): + if (keys not in self.headers): + self.headers.insert(len(self.headers), keys) + # refraichir les headers + self.refresh_columns_headers() + + # Ajouter une nouvelle ligne à la fin du modèle + num_rows = self.model.rowCount() + self.model.insertRow(num_rows) + # print (f"valid data: {valid_data}") + # Remplir la nouvelle ligne avec les données de datas : + for col in range(self.model.columnCount()): + if self.headers[col] not in valid_data.keys(): + # print(f"{self.headers[col]} not in {valid_data.keys()}") + continue + if DEBUG_MODE : + # print(f"key: {self.headers[col]}") + continue + item = QStandardItem(str(valid_data[self.headers[col]])) + self.model.setItem(num_rows, col, item) + + # delete all rows + def delete_all(self): + while self.model.rowCount() > 0: + self.model.removeRow(0) + + + def del_row(self, row_id): + if isinstance(row_id, int): + self.model.removeRow(row_id) + elif isinstance(row_id, QModelIndex): + self.model.removeRow(row_id.row()) + else: + # print(f"Invalid type {type(row_id)}") + return + self.clearSelection() + + def delete_selected_rows(self): + selection = self.selectionModel().selectedRows() + for row in selection: + # print(f"delete row: {row}") + self.del_row(row) + + def check_incoming_data(self, data) -> object: + if isinstance(data, dict): + return data + elif isinstance(data, str): + try: + return json.loads(data) + except json.JSONDecodeError: + return {"data": data} + else: + # print(f"invalid data type : {type(data)}") + return None + + def save_data(self, path=None): + # Récupérez toutes les données du modèle + data = self.get_all_data() + if path is None: + path = self._save_path + # print(f"data {data}") + try: + # Serialisez les données en JSON et sauvegardez-les dans un fichier + with open(path, 'w') as file: + try: + json.dump(data, file, indent=4) + except Exception as json_e: + print(f"Json exception {json_e}") + except Exception as e: + print(f"Exception {type(e)} while saving data \n\"{e}\"") + + + + def append_data(self, data): + try: + # Serialisez les données en JSON et sauvegardez-les dans un fichier + with open(self._save_path, 'a') as file: + json.dump(data, file, indent=4) + except Exception as e: + print(f"Exception while appending data {e}") + + + def get_all_data(self): + data = [] + for row in range(self.model.rowCount()): + row_data = {} + for col in range(self.model.columnCount()): + item = self.model.item(row, col) + if item is not None: + row_data[self.headers[col]] = item.text() + data.append(row_data) + return data + + + + + def row_double_clicked(self, index: int): + if(not self.emit_double_click_on_header): + return + # Copier le contenu de la ligne + print(f"index = {index}") + row_data = {} + + # obtenir le row à l'index + # obtenir les textes des colonnes pour cette ligne + for col in range(self.model.columnCount()): + item = self.model.item(index, col) + if item is not None: + data = item.text() + data = data.replace("'", "\"") + data = data.replace("False", "false") + data = data.replace("True", "true") + try: + data = json.loads(data) + print(f"can be json: {data}") + except Exception as e: + print(f"not a json: {e} {data}") + + row_data[self.headers[col]] = data + + print(f"Row data: {row_data}") # Ajouté pour déboguer + # obtenir les textes des colonnes + + #remplir le dictionnaire data avec pour clefs les noms des colonnes et pour valeurs les élément du row + + self.header_double_clicked.emit(row_data) + + diff --git a/GUI/Widgets/json_viewer.py b/GUI/Widgets/json_viewer.py new file mode 100644 index 0000000..ff72bf2 --- /dev/null +++ b/GUI/Widgets/json_viewer.py @@ -0,0 +1,75 @@ +from PySide6.QtWidgets import QCheckBox, QLabel, QVBoxLayout, QHBoxLayout, QWidget, QPushButton +# from PySide6.QtGui import QStandardItemModel, QStandardItem +# from PySide6.QtCore import QModelIndex +from GUI.Widgets.json_table_widget import JsonTableWidget +# import random +# import json + +class JsonViewer(QWidget): + def __init__(self, title="JsonViewer", parent=None, auto_save=False): + super().__init__(parent) + self._autosave = auto_save + + self.main_layout = QVBoxLayout() + self.top_viewer_layout = QHBoxLayout() + self.bottom_viewer_layout = QHBoxLayout() + + + + self.title_widget = QLabel(title) + self.top_viewer_layout.addWidget(self.title_widget) + + self.auto_save_checkbox = QCheckBox("AutoSave", self) + self.auto_save_checkbox.setChecked(self._autosave) + self.auto_save_checkbox.stateChanged.connect(self.auto_save_state_changed) + self.top_viewer_layout.addWidget(self.auto_save_checkbox) + + self.viewer = JsonTableWidget(self) + + self.delete_button = QPushButton("Delete", self) + self.delete_button.clicked.connect(self.delete_rows) + self.bottom_viewer_layout.addWidget(self.delete_button) + + self.clear_button = QPushButton("Clear", self) + self.clear_button.clicked.connect(self.delete_all) + self.bottom_viewer_layout.addWidget(self.clear_button) + + + self.top_container = QWidget(self) + self.bottom_container = QWidget(self) + + self.top_container.setLayout(self.top_viewer_layout) + self.bottom_container.setLayout(self.bottom_viewer_layout) + self.main_layout.addWidget(self.top_container) + self.main_layout.addWidget(self.viewer) + self.main_layout.addWidget(self.bottom_container) + + self.setLayout(self.main_layout) + + def delete_rows(self, path=None): + self.viewer.delete_selected_rows() + if (self._autosave): + self.viewer.save_data(path) + print("Needed deletion") + + def auto_save_state_changed(self): + print(f"autosave : {not self._autosave}") + self._autosave = not self._autosave + + def add_row(self, data, path=None): + self.viewer.add_new_row(data) + if (self._autosave): + self.viewer.save_data(path) + + # delete all rows + def delete_all(self): + self.viewer.delete_all() + pass + + def set_emit_double_click_on_header(self, emit: bool) -> None: + self.viewer.emit_double_click_on_header = emit + + + + + diff --git a/GUI/__init__.py b/GUI/__init__.py new file mode 100644 index 0000000..9f280f2 --- /dev/null +++ b/GUI/__init__.py @@ -0,0 +1,5 @@ +# GUI/__init__.py +from .main_window import MainWindow + + +__all__ = ['MainWindow'] \ No newline at end of file diff --git a/GUI/main_window.py b/GUI/main_window.py new file mode 100644 index 0000000..e81295e --- /dev/null +++ b/GUI/main_window.py @@ -0,0 +1,120 @@ +# main_window.py + +from PySide6.QtWidgets import ( + QMainWindow, + QTextEdit, + QPushButton, + QVBoxLayout, + QWidget, + QLabel, + QStatusBar, + QHBoxLayout, + QCheckBox, +) +from PySide6.QtCore import Qt +from GUI.Widgets.json_viewer import JsonViewer +from Core.UnrealApi.unreal_api import ( + UnrealApi, +) # Assurez-vous d'importer correctement la classe UnrealApi +import json + + +class MainWindow(QMainWindow): + def __init__(self): + super().__init__() + + self.setWindowTitle("WebSocket JSON Sender") + self.setGeometry(100, 100, 1000, 900) + self.statusBar = QStatusBar() + self.setStatusBar(self.statusBar) + self.statusBar.showMessage("[Disconnected]") + + layout = QVBoxLayout() + + self.json_input = QTextEdit(self) + self.json_input.setPlaceholderText("Entrez le JSON ici...") + layout.addWidget(self.json_input) + + self.send_button = QPushButton("Envoyer", self) + self.send_button.clicked.connect(self.send_json_message) + layout.addWidget(self.send_button) + + self.ping_button = QPushButton("Ping", self) + self.ping_button.clicked.connect(self.send_ping) + layout.addWidget(self.ping_button) + + self.sent_display = JsonViewer("Sent to server", self) + self.sent_display.set_emit_double_click_on_header(True) + self.sent_display.viewer.header_double_clicked.connect(self.sent_display_header_double_clicked) + layout.addWidget(self.sent_display) + + self.server_layout = QHBoxLayout() + self.server_widget = QWidget() + + self.response_display = JsonViewer("Received from server", self, True) + self.filter_avalanche_checkbox = QCheckBox("Filter Avalanche", self) + # default to checked + self.filter_avalanche_checkbox.setChecked(True) + self.filter_avalanche_checkbox.stateChanged.connect(self.filter_avalanche) + self.server_layout.addWidget(self.response_display) + self.server_layout.addWidget(self.filter_avalanche_checkbox) + self.server_widget.setLayout(self.server_layout) + layout.addWidget(self.server_widget) + + + + container = QWidget() + container.setLayout(layout) + self.setCentralWidget(container) + + self.unreal_api = UnrealApi( + "ws://localhost:30021", self + ) # Assurez-vous que le second argument est correct + self.unreal_api.set_filtered(True) + # Connecter les signaux aux slots + self.unreal_api.message_received.connect(self.on_message_received) + self.unreal_api.message_sent.connect(self.on_message_sent) + self.unreal_api.ws_connected.connect(self.ws_connected) + self.unreal_api.ws_connect() + + def send_json_message(self): + message_text = self.json_input.toPlainText().strip() + print(f"About to send {message_text}") + if message_text: + self.unreal_api.send_message(message_text) + # self.sent_display.add_row(data=message_text) + + def on_message_received(self, message): + # print(f"MainWindow received message: {message}") + self.response_display.add_row(data=message) + + def on_message_sent(self, sent) -> None: + self.sent_display.add_row(data=sent) + + def ws_connected(self, connected: bool) -> None: + if connected: + self.statusBar.showMessage("[Connected]") + else: + self.statusBar.showMessage("[Disconnected]") + + def closeEvent(self, event): + self.unreal_api.close_websocket() # Assurez-vous de fermer correctement le websocket + event.accept() + + def filter_avalanche(self, state): + print(f"filter_avalanche state: {state}") + if (state == 2): + print("changing state to True") + self.unreal_api.set_filtered(True) + elif (state == 0): + print("changing state to False") + self.unreal_api.set_filtered(False) + + + def send_ping(self): + print("sending ping to unreal") + self.unreal_api.send_ping() + + def sent_display_header_double_clicked(self, data): + self.json_input.clear() + self.json_input.append(json.dumps(data, indent=2)) diff --git a/Received.json b/Received.json new file mode 100644 index 0000000..9f28b10 --- /dev/null +++ b/Received.json @@ -0,0 +1,792 @@ +[ + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPong", + "Expiration": "253402300799", + "TimeSent": "1737128112", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'bAuto': False, 'apiVersion': 2, 'minimumApiVersion': 1, 'latestApiVersion': 2, 'hostName': 'WARMACHINE-A2M', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownRundowns", + "Expiration": "253402300799", + "TimeSent": "1737128152", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundowns': ['/Game/Levels/001RD_Test.001RD_Test', '/Game/Rundown/00TutL3.00TutL3', '/Game/Rundown/00Rundown01.00Rundown01'], 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownChannelResponse", + "Expiration": "253402300799", + "TimeSent": "1737128187", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': {'name': 'Channel_0', 'type': 'Program', 'state': 'Live', 'issueSeverity': 'None', 'devices': [{'name': 'AvaBroadcastDisplayMediaOutput_1', 'outputInfo': {'guid': '61D5A1344D60458251BF9E982638297B', 'serverName': 'Local (This Process)', 'deviceProviderName': 'AvaDisplay', 'deviceName': 'DISPLAY2: 3200x2000 @ 3440,-9'}, 'outputState': 'Live', 'issueSeverity': 'None', 'issueMessages': [], 'data': '{\\r\\n\\t\"Class\": \"/Script/AvalancheMedia.AvaBroadcastDisplayMediaOutput\",\\r\\n\\t\"Name\": \"AvaBroadcastDisplayMediaOutput_1\",\\r\\n\\t\"Properties\": [\\r\\n\\t\\t{\\r\\n\\t\\t\\t\"Name\": \"OutputConfiguration\",\\r\\n\\t\\t\\t\"DisplayName\": \"Configuration\",\\r\\n\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\"Class\": \"MediaIOOutputConfiguration\",\\r\\n\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"MediaConfiguration\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Media Configuration\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\"Class\": \"MediaIOConfiguration\",\\r\\n\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Name\": \"bIsInput\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Is Input\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Type\": \"boolean\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Value\": false\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Name\": \"MediaConnection\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Media Connection\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Class\": \"MediaIOConnection\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Device\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"MediaIODevice\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"DeviceName\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device Name\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"name\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"DISPLAY2: 3200x2000 @ 3440,-9\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"DeviceIdentifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device Identifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 2\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Protocol\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Protocol\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"name\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"avadisplay\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"TransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Transport Type\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"EMediaIOTransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"0\": \"SingleLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"1\": \"DualLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"2\": \"QuadLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"3\": \"HDMI\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"4\": \"EMediaIOTransportType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"SingleLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"QuadTransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Quad Transport Type\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"EMediaIOQuadLinkTransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"0\": \"SquareDivision\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"1\": \"TwoSampleInterleave\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"2\": \"EMediaIOQuadLinkTransportType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"SquareDivision\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"PortIdentifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Port Identifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 0\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Name\": \"MediaMode\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Media Mode\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Class\": \"MediaIOMode\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"FrameRate\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Frame Rate\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"FrameRate\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Numerator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Numerator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 165001\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Denominator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Denominator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 1000\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Resolution\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Resolution\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"IntPoint\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"X\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"X\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 3200\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Y\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Y\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 2000\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Standard\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Standard\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"EMediaIOStandardType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"0\": \"Progressive\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"1\": \"Interlaced\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"2\": \"ProgressiveSegmentedFrame\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"3\": \"EMediaIOStandardType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"Progressive\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"DeviceModeIdentifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device Mode Identifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 0\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"OutputType\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Output Type\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\"Class\": \"EMediaIOOutputType\",\\r\\n\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"0\": \"Fill\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"1\": \"FillAndKey\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"2\": \"EMediaIOOutputType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\"Value\": \"Fill\"\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"KeyPortIdentifier\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Key Port Identifier\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\"Value\": 0\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"OutputReference\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Output Reference\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\"Class\": \"EMediaIOReferenceType\",\\r\\n\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"0\": \"FreeRun\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"1\": \"External\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"2\": \"Input\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"3\": \"EMediaIOReferenceType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\"Value\": \"FreeRun\"\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"ReferencePortIdentifier\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Reference Port Identifier\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\"Value\": -1\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t]\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\t\"Name\": \"NumberOfTextureBuffers\",\\r\\n\\t\\t\\t\"DisplayName\": \"Number Of Texture Buffers\",\\r\\n\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\"Value\": 4\\r\\n\\t\\t}\\r\\n\\t]\\r\\n}'}]}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPlaybackContextChanged", + "Expiration": "253402300799", + "TimeSent": "1737128386", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'previousRundown': '', 'newRundown': '/Game/Levels/001RD_Test.001RD_Test', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownServerMsg", + "Expiration": "253402300799", + "TimeSent": "1737128386", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'verbosity': 'Log', 'text': 'Rundown \"/Game/Levels/001RD_Test.001RD_Test\" loaded.', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPages", + "Expiration": "253402300799", + "TimeSent": "1737128458", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'pages': [{'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Available', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': False}, {'pageId': 2, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=132,G=146,B=220,A=255) / Rank / Yotta XP', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Available', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': False}, {'pageId': 0, 'pageName': 'L3_Demo', 'pageSummary': '', 'friendlyName': '', 'isTemplate': True, 'templateId': -1, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': False}], 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownServerMsg", + "Expiration": "253402300799", + "TimeSent": "1737128581", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'verbosity': 'Log', 'text': '\"PageAction\" Ok.', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownChannelResponse", + "Expiration": "253402300799", + "TimeSent": "1737128581", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': {'name': 'Channel_0', 'type': 'Program', 'state': 'Live', 'issueSeverity': 'None', 'devices': [{'name': 'AvaBroadcastDisplayMediaOutput_1', 'outputInfo': {'guid': '61D5A1344D60458251BF9E982638297B', 'serverName': 'Local (This Process)', 'deviceProviderName': 'AvaDisplay', 'deviceName': 'DISPLAY2: 3200x2000 @ 3440,-9'}, 'outputState': 'Live', 'issueSeverity': 'None', 'issueMessages': [], 'data': '{\\r\\n\\t\"Class\": \"/Script/AvalancheMedia.AvaBroadcastDisplayMediaOutput\",\\r\\n\\t\"Name\": \"AvaBroadcastDisplayMediaOutput_1\",\\r\\n\\t\"Properties\": [\\r\\n\\t\\t{\\r\\n\\t\\t\\t\"Name\": \"OutputConfiguration\",\\r\\n\\t\\t\\t\"DisplayName\": \"Configuration\",\\r\\n\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\"Class\": \"MediaIOOutputConfiguration\",\\r\\n\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"MediaConfiguration\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Media Configuration\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\"Class\": \"MediaIOConfiguration\",\\r\\n\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Name\": \"bIsInput\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Is Input\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Type\": \"boolean\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Value\": false\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Name\": \"MediaConnection\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Media Connection\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Class\": \"MediaIOConnection\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Device\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"MediaIODevice\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"DeviceName\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device Name\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"name\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"DISPLAY2: 3200x2000 @ 3440,-9\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"DeviceIdentifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device Identifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 2\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Protocol\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Protocol\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"name\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"avadisplay\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"TransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Transport Type\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"EMediaIOTransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"0\": \"SingleLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"1\": \"DualLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"2\": \"QuadLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"3\": \"HDMI\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"4\": \"EMediaIOTransportType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"SingleLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"QuadTransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Quad Transport Type\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"EMediaIOQuadLinkTransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"0\": \"SquareDivision\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"1\": \"TwoSampleInterleave\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"2\": \"EMediaIOQuadLinkTransportType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"SquareDivision\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"PortIdentifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Port Identifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 0\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Name\": \"MediaMode\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Media Mode\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Class\": \"MediaIOMode\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"FrameRate\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Frame Rate\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"FrameRate\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Numerator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Numerator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 165001\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Denominator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Denominator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 1000\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Resolution\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Resolution\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"IntPoint\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"X\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"X\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 3200\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Y\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Y\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 2000\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Standard\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Standard\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"EMediaIOStandardType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"0\": \"Progressive\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"1\": \"Interlaced\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"2\": \"ProgressiveSegmentedFrame\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"3\": \"EMediaIOStandardType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"Progressive\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"DeviceModeIdentifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device Mode Identifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 0\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"OutputType\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Output Type\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\"Class\": \"EMediaIOOutputType\",\\r\\n\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"0\": \"Fill\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"1\": \"FillAndKey\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"2\": \"EMediaIOOutputType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\"Value\": \"Fill\"\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"KeyPortIdentifier\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Key Port Identifier\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\"Value\": 0\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"OutputReference\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Output Reference\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\"Class\": \"EMediaIOReferenceType\",\\r\\n\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"0\": \"FreeRun\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"1\": \"External\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"2\": \"Input\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"3\": \"EMediaIOReferenceType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\"Value\": \"FreeRun\"\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"ReferencePortIdentifier\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Reference Port Identifier\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\"Value\": -1\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t]\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\t\"Name\": \"NumberOfTextureBuffers\",\\r\\n\\t\\t\\t\"DisplayName\": \"Number Of Texture Buffers\",\\r\\n\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\"Value\": 4\\r\\n\\t\\t}\\r\\n\\t]\\r\\n}'}]}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128581", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Loading', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128581", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Loaded', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageTransitionEvent", + "Expiration": "253402300799", + "TimeSent": "1737128581", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'transitionId': '35ECBB6E47985002B3CD87A994FD4008', 'enteringPageIds': [1], 'playingPageIds': [], 'exitingPageIds': [], 'event': 'Started', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128581", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737128582", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 1, 'instanceId': '74C2C5BE4AF5ED4682AF608CA8939767', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'In', 'event': 'Started', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128583", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737128583", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 1, 'instanceId': '74C2C5BE4AF5ED4682AF608CA8939767', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'In', 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128583", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737128583", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 1, 'instanceId': '74C2C5BE4AF5ED4682AF608CA8939767', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'In', 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageTransitionEvent", + "Expiration": "253402300799", + "TimeSent": "1737128583", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'transitionId': '35ECBB6E47985002B3CD87A994FD4008', 'enteringPageIds': [1], 'playingPageIds': [], 'exitingPageIds': [], 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownServerMsg", + "Expiration": "253402300799", + "TimeSent": "1737128794", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'verbosity': 'Log', 'text': '\"PageAction\" Ok.', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128794", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 2, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=132,G=146,B=220,A=255) / Rank / Yotta XP', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Loading', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128794", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 2, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=132,G=146,B=220,A=255) / Rank / Yotta XP', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Loaded', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageTransitionEvent", + "Expiration": "253402300799", + "TimeSent": "1737128794", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'transitionId': '59157ED94EDC5FA177EB0D8962B85CA3', 'enteringPageIds': [2], 'playingPageIds': [1], 'exitingPageIds': [], 'event': 'Started', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737128794", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 1, 'instanceId': '74C2C5BE4AF5ED4682AF608CA8939767', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'Out', 'event': 'Started', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128794", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 2, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=132,G=146,B=220,A=255) / Rank / Yotta XP', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128795", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737128795", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 1, 'instanceId': '74C2C5BE4AF5ED4682AF608CA8939767', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'Out', 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128795", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737128795", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 1, 'instanceId': '74C2C5BE4AF5ED4682AF608CA8939767', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'Out', 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737128795", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 2, 'instanceId': 'AEFA9E68457E0B09232CF2A39BFDADD3', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'In', 'event': 'Started', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128796", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 2, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=132,G=146,B=220,A=255) / Rank / Yotta XP', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737128796", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 2, 'instanceId': 'AEFA9E68457E0B09232CF2A39BFDADD3', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'In', 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128796", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 2, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=132,G=146,B=220,A=255) / Rank / Yotta XP', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737128796", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 2, 'instanceId': 'AEFA9E68457E0B09232CF2A39BFDADD3', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'In', 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128796", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Loaded', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': False}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageTransitionEvent", + "Expiration": "253402300799", + "TimeSent": "1737128796", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'transitionId': '59157ED94EDC5FA177EB0D8962B85CA3', 'enteringPageIds': [2], 'playingPageIds': [1], 'exitingPageIds': [], 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownServerMsg", + "Expiration": "253402300799", + "TimeSent": "1737128801", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'verbosity': 'Log', 'text': '\"PageAction\" Ok.', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128801", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Loading', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128801", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Loaded', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageTransitionEvent", + "Expiration": "253402300799", + "TimeSent": "1737128801", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'transitionId': '8B3F61A6449D9E1CF676508ACA8841D0', 'enteringPageIds': [1], 'playingPageIds': [2], 'exitingPageIds': [], 'event': 'Started', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737128801", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 2, 'instanceId': 'AEFA9E68457E0B09232CF2A39BFDADD3', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'Out', 'event': 'Started', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128801", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128802", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 2, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=132,G=146,B=220,A=255) / Rank / Yotta XP', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737128802", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 2, 'instanceId': 'AEFA9E68457E0B09232CF2A39BFDADD3', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'Out', 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128802", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 2, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=132,G=146,B=220,A=255) / Rank / Yotta XP', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737128802", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 2, 'instanceId': 'AEFA9E68457E0B09232CF2A39BFDADD3', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'Out', 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737128802", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 1, 'instanceId': '680650E14B66438E6F166D98119BAC0D', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'In', 'event': 'Started', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128803", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737128803", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 1, 'instanceId': '680650E14B66438E6F166D98119BAC0D', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'In', 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128803", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737128803", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 1, 'instanceId': '680650E14B66438E6F166D98119BAC0D', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'In', 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737128803", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 2, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=132,G=146,B=220,A=255) / Rank / Yotta XP', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Loaded', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': False}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageTransitionEvent", + "Expiration": "253402300799", + "TimeSent": "1737128803", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'transitionId': '8B3F61A6449D9E1CF676508ACA8841D0', 'enteringPageIds': [1], 'playingPageIds': [2], 'exitingPageIds': [], 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageTransitionEvent", + "Expiration": "253402300799", + "TimeSent": "1737129587", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'transitionId': '04CBCD6443458978117852AFD2CD59CF', 'enteringPageIds': [], 'playingPageIds': [], 'exitingPageIds': [1], 'event': 'Started', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownServerMsg", + "Expiration": "253402300799", + "TimeSent": "1737129587", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'verbosity': 'Log', 'text': '\"PageAction\" Ok.', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737129587", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 1, 'instanceId': '680650E14B66438E6F166D98119BAC0D', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'Out', 'event': 'Started', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737129588", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737129588", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 1, 'instanceId': '680650E14B66438E6F166D98119BAC0D', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'Out', 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737129588", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737129588", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 1, 'instanceId': '680650E14B66438E6F166D98119BAC0D', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'Out', 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737129588", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Available', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': False}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageTransitionEvent", + "Expiration": "253402300799", + "TimeSent": "1737129588", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'transitionId': '04CBCD6443458978117852AFD2CD59CF', 'enteringPageIds': [], 'playingPageIds': [], 'exitingPageIds': [1], 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownChannelResponse", + "Expiration": "253402300799", + "TimeSent": "1737129588", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': {'name': 'Channel_0', 'type': 'Program', 'state': 'Live', 'issueSeverity': 'None', 'devices': [{'name': 'AvaBroadcastDisplayMediaOutput_1', 'outputInfo': {'guid': '61D5A1344D60458251BF9E982638297B', 'serverName': 'Local (This Process)', 'deviceProviderName': 'AvaDisplay', 'deviceName': 'DISPLAY2: 3200x2000 @ 3440,-9'}, 'outputState': 'Live', 'issueSeverity': 'None', 'issueMessages': [], 'data': '{\\r\\n\\t\"Class\": \"/Script/AvalancheMedia.AvaBroadcastDisplayMediaOutput\",\\r\\n\\t\"Name\": \"AvaBroadcastDisplayMediaOutput_1\",\\r\\n\\t\"Properties\": [\\r\\n\\t\\t{\\r\\n\\t\\t\\t\"Name\": \"OutputConfiguration\",\\r\\n\\t\\t\\t\"DisplayName\": \"Configuration\",\\r\\n\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\"Class\": \"MediaIOOutputConfiguration\",\\r\\n\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"MediaConfiguration\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Media Configuration\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\"Class\": \"MediaIOConfiguration\",\\r\\n\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Name\": \"bIsInput\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Is Input\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Type\": \"boolean\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Value\": false\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Name\": \"MediaConnection\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Media Connection\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Class\": \"MediaIOConnection\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Device\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"MediaIODevice\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"DeviceName\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device Name\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"name\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"DISPLAY2: 3200x2000 @ 3440,-9\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"DeviceIdentifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device Identifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 2\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Protocol\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Protocol\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"name\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"avadisplay\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"TransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Transport Type\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"EMediaIOTransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"0\": \"SingleLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"1\": \"DualLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"2\": \"QuadLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"3\": \"HDMI\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"4\": \"EMediaIOTransportType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"SingleLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"QuadTransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Quad Transport Type\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"EMediaIOQuadLinkTransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"0\": \"SquareDivision\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"1\": \"TwoSampleInterleave\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"2\": \"EMediaIOQuadLinkTransportType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"SquareDivision\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"PortIdentifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Port Identifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 0\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Name\": \"MediaMode\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Media Mode\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Class\": \"MediaIOMode\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"FrameRate\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Frame Rate\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"FrameRate\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Numerator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Numerator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 165001\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Denominator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Denominator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 1000\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Resolution\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Resolution\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"IntPoint\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"X\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"X\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 3200\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Y\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Y\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 2000\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Standard\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Standard\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"EMediaIOStandardType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"0\": \"Progressive\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"1\": \"Interlaced\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"2\": \"ProgressiveSegmentedFrame\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"3\": \"EMediaIOStandardType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"Progressive\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"DeviceModeIdentifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device Mode Identifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 0\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"OutputType\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Output Type\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\"Class\": \"EMediaIOOutputType\",\\r\\n\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"0\": \"Fill\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"1\": \"FillAndKey\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"2\": \"EMediaIOOutputType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\"Value\": \"Fill\"\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"KeyPortIdentifier\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Key Port Identifier\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\"Value\": 0\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"OutputReference\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Output Reference\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\"Class\": \"EMediaIOReferenceType\",\\r\\n\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"0\": \"FreeRun\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"1\": \"External\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"2\": \"Input\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"3\": \"EMediaIOReferenceType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\"Value\": \"FreeRun\"\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"ReferencePortIdentifier\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Reference Port Identifier\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\"Value\": -1\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t]\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\t\"Name\": \"NumberOfTextureBuffers\",\\r\\n\\t\\t\\t\"DisplayName\": \"Number Of Texture Buffers\",\\r\\n\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\"Value\": 4\\r\\n\\t\\t}\\r\\n\\t]\\r\\n}'}]}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownServerMsg", + "Expiration": "253402300799", + "TimeSent": "1737129728", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'verbosity': 'Error', 'text': '\"PageAction\" Failed.', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownServerMsg", + "Expiration": "253402300799", + "TimeSent": "1737129745", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'verbosity': 'Error', 'text': '\"PageAction\" Failed.', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownChannelResponse", + "Expiration": "253402300799", + "TimeSent": "1737129745", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': {'name': 'Channel_0', 'type': 'Program', 'state': 'Live', 'issueSeverity': 'None', 'devices': [{'name': 'AvaBroadcastDisplayMediaOutput_1', 'outputInfo': {'guid': '61D5A1344D60458251BF9E982638297B', 'serverName': 'Local (This Process)', 'deviceProviderName': 'AvaDisplay', 'deviceName': 'DISPLAY2: 3200x2000 @ 3440,-9'}, 'outputState': 'Live', 'issueSeverity': 'None', 'issueMessages': [], 'data': '{\\r\\n\\t\"Class\": \"/Script/AvalancheMedia.AvaBroadcastDisplayMediaOutput\",\\r\\n\\t\"Name\": \"AvaBroadcastDisplayMediaOutput_1\",\\r\\n\\t\"Properties\": [\\r\\n\\t\\t{\\r\\n\\t\\t\\t\"Name\": \"OutputConfiguration\",\\r\\n\\t\\t\\t\"DisplayName\": \"Configuration\",\\r\\n\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\"Class\": \"MediaIOOutputConfiguration\",\\r\\n\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"MediaConfiguration\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Media Configuration\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\"Class\": \"MediaIOConfiguration\",\\r\\n\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Name\": \"bIsInput\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Is Input\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Type\": \"boolean\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Value\": false\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Name\": \"MediaConnection\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Media Connection\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Class\": \"MediaIOConnection\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Device\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"MediaIODevice\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"DeviceName\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device Name\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"name\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"DISPLAY2: 3200x2000 @ 3440,-9\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"DeviceIdentifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device Identifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 2\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Protocol\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Protocol\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"name\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"avadisplay\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"TransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Transport Type\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"EMediaIOTransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"0\": \"SingleLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"1\": \"DualLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"2\": \"QuadLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"3\": \"HDMI\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"4\": \"EMediaIOTransportType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"SingleLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"QuadTransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Quad Transport Type\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"EMediaIOQuadLinkTransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"0\": \"SquareDivision\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"1\": \"TwoSampleInterleave\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"2\": \"EMediaIOQuadLinkTransportType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"SquareDivision\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"PortIdentifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Port Identifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 0\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Name\": \"MediaMode\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Media Mode\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Class\": \"MediaIOMode\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"FrameRate\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Frame Rate\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"FrameRate\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Numerator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Numerator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 165001\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Denominator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Denominator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 1000\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Resolution\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Resolution\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"IntPoint\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"X\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"X\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 3200\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Y\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Y\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 2000\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Standard\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Standard\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"EMediaIOStandardType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"0\": \"Progressive\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"1\": \"Interlaced\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"2\": \"ProgressiveSegmentedFrame\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"3\": \"EMediaIOStandardType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"Progressive\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"DeviceModeIdentifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device Mode Identifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 0\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"OutputType\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Output Type\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\"Class\": \"EMediaIOOutputType\",\\r\\n\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"0\": \"Fill\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"1\": \"FillAndKey\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"2\": \"EMediaIOOutputType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\"Value\": \"Fill\"\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"KeyPortIdentifier\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Key Port Identifier\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\"Value\": 0\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"OutputReference\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Output Reference\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\"Class\": \"EMediaIOReferenceType\",\\r\\n\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"0\": \"FreeRun\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"1\": \"External\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"2\": \"Input\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"3\": \"EMediaIOReferenceType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\"Value\": \"FreeRun\"\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"ReferencePortIdentifier\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Reference Port Identifier\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\"Value\": -1\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t]\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\t\"Name\": \"NumberOfTextureBuffers\",\\r\\n\\t\\t\\t\"DisplayName\": \"Number Of Texture Buffers\",\\r\\n\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\"Value\": 4\\r\\n\\t\\t}\\r\\n\\t]\\r\\n}'}]}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737129745", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Loading', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737129746", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Loaded', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageTransitionEvent", + "Expiration": "253402300799", + "TimeSent": "1737129746", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'transitionId': 'D34B6E794DAF52E1B07654A125EB46FF', 'enteringPageIds': [1], 'playingPageIds': [], 'exitingPageIds': [], 'event': 'Started', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737129746", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737129746", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 1, 'instanceId': '5AC53CAA4CB2F4326F49BB84B624E48D', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'In', 'event': 'Started', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737129747", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737129747", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 1, 'instanceId': '5AC53CAA4CB2F4326F49BB84B624E48D', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'In', 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737129747", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Playing', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': True}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageSequenceEvent", + "Expiration": "253402300799", + "TimeSent": "1737129747", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'pageId': 1, 'instanceId': '5AC53CAA4CB2F4326F49BB84B624E48D', 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'sequenceLabel': 'In', 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageTransitionEvent", + "Expiration": "253402300799", + "TimeSent": "1737129747", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': 'Channel_0', 'transitionId': 'D34B6E794DAF52E1B07654A125EB46FF', 'enteringPageIds': [1], 'playingPageIds': [], 'exitingPageIds': [], 'event': 'Finished', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPagesStatuses", + "Expiration": "253402300799", + "TimeSent": "1737129761", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageInfo': {'pageId': 1, 'pageName': 'L3_Demo', 'pageSummary': 'Text / (R=255,G=0,B=0,A=255) / Speed / Yotta Elite', 'friendlyName': '', 'isTemplate': False, 'templateId': 0, 'combinedTemplateIds': [], 'assetPath': '/Game/Levels/L3_Demo.L3_Demo', 'statuses': [{'type': 'Program', 'status': 'Available', 'bNeedsSync': False}, {'type': 'Preview', 'status': 'Available', 'bNeedsSync': False}], 'transitionLayerName': 'L3', 'bTransitionLogicEnabled': True, 'outputChannel': 'Channel_0', 'bIsEnabled': True, 'bIsPlaying': False}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownServerMsg", + "Expiration": "253402300799", + "TimeSent": "1737129761", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'verbosity': 'Log', 'text': '\"PageAction\" Ok.', 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownChannelResponse", + "Expiration": "253402300799", + "TimeSent": "1737129761", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'channel': {'name': 'Channel_0', 'type': 'Program', 'state': 'Live', 'issueSeverity': 'None', 'devices': [{'name': 'AvaBroadcastDisplayMediaOutput_1', 'outputInfo': {'guid': '61D5A1344D60458251BF9E982638297B', 'serverName': 'Local (This Process)', 'deviceProviderName': 'AvaDisplay', 'deviceName': 'DISPLAY2: 3200x2000 @ 3440,-9'}, 'outputState': 'Live', 'issueSeverity': 'None', 'issueMessages': [], 'data': '{\\r\\n\\t\"Class\": \"/Script/AvalancheMedia.AvaBroadcastDisplayMediaOutput\",\\r\\n\\t\"Name\": \"AvaBroadcastDisplayMediaOutput_1\",\\r\\n\\t\"Properties\": [\\r\\n\\t\\t{\\r\\n\\t\\t\\t\"Name\": \"OutputConfiguration\",\\r\\n\\t\\t\\t\"DisplayName\": \"Configuration\",\\r\\n\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\"Class\": \"MediaIOOutputConfiguration\",\\r\\n\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"MediaConfiguration\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Media Configuration\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\"Class\": \"MediaIOConfiguration\",\\r\\n\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Name\": \"bIsInput\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Is Input\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Type\": \"boolean\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Value\": false\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Name\": \"MediaConnection\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Media Connection\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Class\": \"MediaIOConnection\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Device\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"MediaIODevice\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"DeviceName\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device Name\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"name\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"DISPLAY2: 3200x2000 @ 3440,-9\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"DeviceIdentifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device Identifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 2\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Protocol\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Protocol\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"name\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"avadisplay\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"TransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Transport Type\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"EMediaIOTransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"0\": \"SingleLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"1\": \"DualLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"2\": \"QuadLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"3\": \"HDMI\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"4\": \"EMediaIOTransportType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"SingleLink\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"QuadTransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Quad Transport Type\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"EMediaIOQuadLinkTransportType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"0\": \"SquareDivision\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"1\": \"TwoSampleInterleave\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"2\": \"EMediaIOQuadLinkTransportType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"SquareDivision\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"PortIdentifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Port Identifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 0\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Name\": \"MediaMode\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Media Mode\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"Class\": \"MediaIOMode\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"FrameRate\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Frame Rate\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"FrameRate\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Numerator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Numerator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 165001\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Denominator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Denominator\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 1000\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Resolution\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Resolution\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"struct\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"IntPoint\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"StructProperties\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"X\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"X\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 3200\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Y\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Y\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 2000\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"Standard\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Standard\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Class\": \"EMediaIOStandardType\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"0\": \"Progressive\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"1\": \"Interlaced\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"2\": \"ProgressiveSegmentedFrame\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t\"3\": \"EMediaIOStandardType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": \"Progressive\"\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Name\": \"DeviceModeIdentifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"DisplayName\": \"Device Mode Identifier\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t\\t\"Value\": 0\\r\\n\\t\\t\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t]\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"OutputType\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Output Type\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\"Class\": \"EMediaIOOutputType\",\\r\\n\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"0\": \"Fill\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"1\": \"FillAndKey\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"2\": \"EMediaIOOutputType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\"Value\": \"Fill\"\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"KeyPortIdentifier\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Key Port Identifier\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\"Value\": 0\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"OutputReference\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Output Reference\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"enum\",\\r\\n\\t\\t\\t\\t\\t\"Class\": \"EMediaIOReferenceType\",\\r\\n\\t\\t\\t\\t\\t\"EnumValues\": [\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"0\": \"FreeRun\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"1\": \"External\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"2\": \"Input\"\\r\\n\\t\\t\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\\t\\t\"3\": \"EMediaIOReferenceType_MAX\"\\r\\n\\t\\t\\t\\t\\t\\t}\\r\\n\\t\\t\\t\\t\\t],\\r\\n\\t\\t\\t\\t\\t\"Value\": \"FreeRun\"\\r\\n\\t\\t\\t\\t},\\r\\n\\t\\t\\t\\t{\\r\\n\\t\\t\\t\\t\\t\"Name\": \"ReferencePortIdentifier\",\\r\\n\\t\\t\\t\\t\\t\"DisplayName\": \"Reference Port Identifier\",\\r\\n\\t\\t\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\\t\\t\"Value\": -1\\r\\n\\t\\t\\t\\t}\\r\\n\\t\\t\\t]\\r\\n\\t\\t},\\r\\n\\t\\t{\\r\\n\\t\\t\\t\"Name\": \"NumberOfTextureBuffers\",\\r\\n\\t\\t\\t\"DisplayName\": \"Number Of Texture Buffers\",\\r\\n\\t\\t\\t\"Type\": \"number\",\\r\\n\\t\\t\\t\"Value\": 4\\r\\n\\t\\t}\\r\\n\\t]\\r\\n}'}]}, 'requestId': -1}" + }, + { + "Sender": "47C9A14548F4921559D207B1F030314F", + "Recipients": "['F2DCD99C267C4F84B50CF091AA4ED608']", + "MessageType": "/Script/AvalancheMedia.AvaRundownServerMsg", + "Expiration": "253402300799", + "TimeSent": "1737130106", + "Scope": "Network", + "Annotations": "{}", + "Message": "{'verbosity': 'Error', 'text': '\"PageAction\" Failed.', 'requestId': -1}" + } +] \ No newline at end of file diff --git a/Sent.json b/Sent.json new file mode 100644 index 0000000..a9b36e0 --- /dev/null +++ b/Sent.json @@ -0,0 +1,173 @@ +[ + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "[]", + "MessageType": "/Script/AvalancheMedia.AvaRundownGetRundowns", + "Expiration": "1737128357", + "Message": "{'requestId': -1}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "[]", + "MessageType": "/Script/AvalancheMedia.AvaRundownGetRundowns", + "Expiration": "1737128358", + "Message": "{'requestId': -1}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "[]", + "MessageType": "/Script/AvalancheMediaEditor.AvaRundownPing", + "Expiration": "1737128412", + "Message": "{'bAuto': False}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "['47C9A14548F4921559D207B1F030314F']", + "MessageType": "/Script/AvalancheMedia.AvaRundownGetRundowns", + "Expiration": "1737128451", + "Message": "{'requestId': -1}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "['47C9A14548F4921559D207B1F030314F']", + "MessageType": "/Script/AvalancheMedia.AvaRundownLoadRundown", + "Expiration": "1737128686", + "Message": "{'requestId': -1, 'rundown': '/Game/Levels/001RD_Test.001RD_Test'}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "['47C9A14548F4921559D207B1F030314F']", + "MessageType": "/Script/AvalancheMedia.AvaRundownGetPages", + "Expiration": "1737128758", + "Message": "{'requestId': -1, 'rundown': '/Game/Levels/001RD_Test.001RD_Test'}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "['47C9A14548F4921559D207B1F030314F']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageAction", + "Expiration": "1737128881", + "Message": "{'requestId': -1, 'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageId': 1, 'action': 'Play'}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "['47C9A14548F4921559D207B1F030314F']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageAction", + "Expiration": "1737128894", + "Message": "{'requestId': -1, 'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageId': 1, 'action': 'Play Next'}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "['47C9A14548F4921559D207B1F030314F']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageAction", + "Expiration": "1737129094", + "Message": "{'requestId': -1, 'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageId': 2, 'action': 'Play'}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "['47C9A14548F4921559D207B1F030314F']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageAction", + "Expiration": "1737129101", + "Message": "{'requestId': -1, 'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageId': 1, 'action': 'Play'}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "['47C9A14548F4921559D207B1F030314F']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageAction", + "Expiration": "1737129887", + "Message": "{'requestId': -1, 'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageId': 1, 'action': 'Stop'}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "['47C9A14548F4921559D207B1F030314F']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageAction", + "Expiration": "1737129910", + "Message": "{'requestId': -1, 'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageId': 1, 'action': 'Take to Program'}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "['47C9A14548F4921559D207B1F030314F']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageAction", + "Expiration": "1737129991", + "Message": "{'requestId': -1, 'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageId': 1, 'action': 'Take_to_Program'}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "['47C9A14548F4921559D207B1F030314F']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageAction", + "Expiration": "1737129998", + "Message": "{'requestId': -1, 'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageId': 1, 'action': 'Take_To_Program'}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "['47C9A14548F4921559D207B1F030314F']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageAction", + "Expiration": "1737130022", + "Message": "{'requestId': -1, 'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageId': 1, 'action': 'Force Stop'}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "['47C9A14548F4921559D207B1F030314F']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageAction", + "Expiration": "1737130028", + "Message": "{'requestId': -1, 'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageId': 1, 'action': 'ForceStop'}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "['47C9A14548F4921559D207B1F030314F']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageAction", + "Expiration": "1737130045", + "Message": "{'requestId': -1, 'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageId': 1, 'action': 'TakeToProgram'}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "['47C9A14548F4921559D207B1F030314F']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageAction", + "Expiration": "1737130061", + "Message": "{'requestId': -1, 'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageId': 1, 'action': 'ForceStop'}", + "Annotations": "{}", + "Scope": "Network" + }, + { + "Sender": "F2DCD99C267C4F84B50CF091AA4ED608", + "Recipients": "['47C9A14548F4921559D207B1F030314F']", + "MessageType": "/Script/AvalancheMedia.AvaRundownPageAction", + "Expiration": "1737130406", + "Message": "{'requestId': -1, 'rundown': '/Game/Levels/001RD_Test.001RD_Test', 'pageId': 1, 'action': 'ForceStop'}", + "Annotations": "{}", + "Scope": "Network" + } +] \ No newline at end of file diff --git a/err.err b/err.err new file mode 100644 index 0000000..f3eb61c --- /dev/null +++ b/err.err @@ -0,0 +1,34 @@ +Python: Traceback (most recent call last): + File "C:\Users\a-mma\AppData\Roaming\Blender Foundation\Blender\4.2\scripts\addons\send2ue\operators.py", line 71, in modal + raise error + File "C:\Users\a-mma\AppData\Roaming\Blender Foundation\Blender\4.2\scripts\addons\send2ue\operators.py", line 61, in modal + function(*args, **kwargs) + File "C:\Users\a-mma\AppData\Roaming\Blender Foundation\Blender\4.2\scripts\addons\send2ue\core\export.py", line 224, in export_mesh + utilities.select_asset_collisions(asset_name, properties) + File "C:\Users\a-mma\AppData\Roaming\Blender Foundation\Blender\4.2\scripts\addons\send2ue\core\utilities.py", line 950, in select_asset_collisions + for mesh_object in get_asset_collisions(asset_name, properties): + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\a-mma\AppData\Roaming\Blender Foundation\Blender\4.2\scripts\addons\send2ue\core\utilities.py", line 636, in get_asset_collisions + if is_collision_of(asset_name, mesh_object.name, properties): + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Users\a-mma\AppData\Roaming\Blender Foundation\Blender\4.2\scripts\addons\send2ue\core\utilities.py", line 832, in is_collision_of + ) or re.fullmatch( + ^^^^^^^^^^^^^ + File "C:\Program Files\Blender Foundation\Blender 4.2\4.2\python\Lib\re\__init__.py", line 171, in fullmatch + return _compile(pattern, flags).fullmatch(string) + ^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Program Files\Blender Foundation\Blender 4.2\4.2\python\Lib\re\__init__.py", line 294, in _compile + p = _compiler.compile(pattern, flags) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Program Files\Blender Foundation\Blender 4.2\4.2\python\Lib\re\_compiler.py", line 745, in compile + p = _parser.parse(p, flags) + ^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Program Files\Blender Foundation\Blender 4.2\4.2\python\Lib\re\_parser.py", line 989, in parse + p = _parse_sub(source, state, flags & SRE_FLAG_VERBOSE, 0) + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Program Files\Blender Foundation\Blender 4.2\4.2\python\Lib\re\_parser.py", line 464, in _parse_sub + itemsappend(_parse(source, state, verbose, nested + 1, + ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ + File "C:\Program Files\Blender Foundation\Blender 4.2\4.2\python\Lib\re\_parser.py", line 850, in _parse + raise source.error('global flags not at the start ' +re.error: global flags not at the start of the expression at position 19 diff --git a/test-json-viewer.bat b/test-json-viewer.bat new file mode 100644 index 0000000..1f38417 --- /dev/null +++ b/test-json-viewer.bat @@ -0,0 +1,4 @@ +@echo off +cd /d "%~dp0" +call .\.venv\Scripts\activate +start /b pyw GUI\Widgets\JsonViewerWidget.py \ No newline at end of file diff --git a/ws-rundown-tester.py b/ws-rundown-tester.py new file mode 100644 index 0000000..491a943 --- /dev/null +++ b/ws-rundown-tester.py @@ -0,0 +1,13 @@ +# ws-rundown-tester.py + +from GUI.main_window import MainWindow +from PySide6.QtWidgets import QApplication +import sys + +if __name__ == "__main__": + app = QApplication(sys.argv) + + window = MainWindow() + window.show() + + sys.exit(app.exec()) \ No newline at end of file