Files
2026-07-17 15:29:53 -04:00

2475 lines
56 KiB
JSON

{
"version": 1,
"settings": {
"hold_ms": 500,
"type_delay": 15,
"orientation": 0,
"resume_delay": 0,
"combo_pre_ms": 500,
"combo_post_ms": 500,
"probe_timeout_ms": 300,
"media_hold_ms": 100,
"type_shift_extra_ms": 25,
"type_settle_ms": 150,
"pause_margin_left": 4,
"pause_margin_right": 4,
"pause_margin_top": 16,
"pause_margin_bottom": 12
},
"macros": [
{
"name": "Example",
"label_color": "red",
"image_path": "",
"nodes": [
{
"id": "fba20d14",
"type": "start",
"x": 100,
"y": 1800,
"data": {},
"flipped": false
},
{
"id": "36d4e2de",
"type": "note",
"x": -242.60315312873973,
"y": 1601.0958832220958,
"data": {
"text": "This Example routine demonstrates every available node type. The Branch below fans out to one demo of each - pick an option on the device to try it. Open the Settings dialog (top-right) for device tuning, RS232 Terminal, and Backups.",
"font_size": 14,
"color": "white",
"width": 380
},
"flipped": false
},
{
"id": "e19ca4b8",
"type": "note",
"x": 146.00089515469722,
"y": 1626.0209419763205,
"data": {
"text": "Tips: zoom with the scroll wheel, pan by dragging on empty canvas, press F to flip a node, Ctrl+C / Ctrl+V to copy nodes.",
"font_size": 12,
"color": "white",
"width": 180
},
"flipped": false
},
{
"id": "da1b3c38",
"type": "branch",
"x": 374,
"y": 1632,
"data": {
"choices": [
{
"label": "Type Text",
"next": -1
},
{
"label": "Key Combo",
"next": -1
},
{
"label": "Pause",
"next": -1
},
{
"label": "Branch",
"next": -1
},
{
"label": "Loop (Repeat)",
"next": -1
},
{
"label": "Loop Selector",
"next": -1
},
{
"label": "Mouse Click",
"next": -1
},
{
"label": "Media Key",
"next": -1
},
{
"label": "Variables",
"next": -1
},
{
"label": "RS232 Send",
"next": -1
},
{
"label": "Sub-Routine",
"next": -1
},
{
"label": "PC Alive Check",
"next": -1
},
{
"label": "Macro Replay",
"next": -1
}
]
},
"flipped": false
},
{
"id": "0b0b0001",
"type": "note",
"x": 1084.720813913096,
"y": -132.37918889877432,
"data": {
"text": "Type Text - sends the string via USB HID. Insert (VAR{name}) tokens to interpolate variables at runtime.",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "2851ffd9",
"type": "text",
"x": 1087.4367678003716,
"y": 6.173681454207928,
"data": {
"text": "Hello from your routine!",
"language": "none"
},
"flipped": false
},
{
"id": "0b0b0002",
"type": "note",
"x": 1082.872558116675,
"y": 150.5927612052953,
"data": {
"text": "Key Combo - press a modifier+key shortcut (Ctrl+C here). Custom Timings let you tune pre/post and per-key hold delays.",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "8556445d",
"type": "combo",
"x": 1080.1957986188659,
"y": 280.8801867280503,
"data": {
"mods": [
"ctrl"
],
"key": "c",
"custom_timings": false,
"custom_pre_ms": 167,
"custom_post_ms": 167,
"custom_key_pre_ms": 3,
"custom_key_post_ms": 8
},
"flipped": false
},
{
"id": "0b0b0003",
"type": "note",
"x": 1080.1957986188659,
"y": 497.5536355853536,
"data": {
"text": "Pause - halt until the user clicks the device or a timer fires. Adjustable font size, text color, and an on-device preview in the properties panel.",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "49719853",
"type": "pause",
"x": 1080.1957986188659,
"y": 630.8836349076065,
"data": {
"wait": "click",
"text": "Click to continue",
"font_size": 12
},
"flipped": false
},
{
"id": "0b0b0004",
"type": "note",
"x": 1074.8422796232478,
"y": 787.0164399484735,
"data": {
"text": "Branch - present an on-device menu. Each choice gets its own output port. Switch it to Variable mode to route on the value of a variable instead of asking the user.",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "ca82e599",
"type": "branch",
"x": 1078.8443540734725,
"y": 932.2350794529999,
"data": {
"choices": [
{
"label": "Yes",
"next": -1,
"match_value": "",
"color": "white"
},
{
"label": "No",
"next": -1,
"match_value": "",
"color": "white"
}
],
"mode": "manual",
"var_name": "",
"var_scope": "auto"
},
"flipped": false
},
{
"id": "0b0b0005",
"type": "note",
"x": 1491.0800009663621,
"y": 778.9861614550454,
"data": {
"text": "Delay - wait N ms before continuing.",
"font_size": 12,
"color": "white",
"width": 200
},
"flipped": false
},
{
"id": "0a0a1111",
"type": "delay",
"x": 1505.8021782043122,
"y": 859.4661107455778,
"data": {
"ms": 500
},
"flipped": false
},
{
"id": "0b0b0006",
"type": "note",
"x": 1789.8930136845931,
"y": 765.1320312924012,
"data": {
"text": "Aggregator - merge multiple incoming paths into one output. Adjustable input count in the properties panel.",
"font_size": 12,
"color": "white",
"width": 200
},
"flipped": false
},
{
"id": "0a0a2222",
"type": "aggregator",
"x": 1792.5697731824027,
"y": 903.6326424594274,
"data": {
"input_count": 2
},
"flipped": false
},
{
"id": "0b0b0007",
"type": "note",
"x": 1080.2088634153547,
"y": 1087.2908006747389,
"data": {
"text": "Loop - execute the body N times. Wire the body's tail back to Loop Back. The Done output fires once when N iterations finish.",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "dcfb234b",
"type": "repeat",
"x": 1116.3320518392882,
"y": 1220.0328841549924,
"data": {
"count": 3,
"start_idx": 0,
"use_selector": false
},
"flipped": false
},
{
"id": "0b0b0008",
"type": "note",
"x": 1515.5946804413281,
"y": 1095.4778567260325,
"data": {
"text": "Iteration Branch - pick a different path on a specific iteration of the linked Loop. Optional 'skip on final iteration' for cleanup-style flows.",
"font_size": 12,
"color": "white",
"width": 200
},
"flipped": false
},
{
"id": "0a0a3333",
"type": "iteration_branch",
"x": 1508.478937702121,
"y": 1184.8953259747636,
"data": {
"loop_node_id": "dcfb234b",
"choices": [
{
"label": "Other iterations"
},
{
"label": "First iteration"
}
],
"skip_final_iteration": false
},
"flipped": false
},
{
"id": "0b0b0009",
"type": "note",
"x": 1071.2849013945813,
"y": 1374.517086297065,
"data": {
"text": "Loop Selector - prompt the user on-device for the loop count. Feed it into a Loop with 'use selector' enabled.",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "96651684",
"type": "loop_selector",
"x": 1080.1957986188659,
"y": 1480.8801867280501,
"data": {
"min": 1,
"max": 10,
"step": 1,
"default": 1,
"prompt": "Loop count?",
"ask_start": false
},
"flipped": false
},
{
"id": "0b0b000a",
"type": "note",
"x": 1072.0871313465057,
"y": 1646.9821646722855,
"data": {
"text": "Mouse Click - send a left / right / middle button click via USB HID. Position is not controlled; clicks land wherever the host cursor is.",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "3524d897",
"type": "mouse",
"x": 1096.4131331635867,
"y": 1772.7715194556897,
"data": {
"button": "left",
"action": "click"
},
"flipped": false
},
{
"id": "0b0b000b",
"type": "note",
"x": 1046.394457347465,
"y": 1882.7396458221874,
"data": {
"text": "Media Key - Play/Pause, Vol +/-, Mute, Next, Prev, etc. via USB HID",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "f5706152",
"type": "media",
"x": 1070.7204591645461,
"y": 1966.7905312788116,
"data": {
"action": "play_pause"
},
"flipped": false
},
{
"id": "0b0b000c",
"type": "note",
"x": 1002.1178471503137,
"y": 2496.1623880030493,
"data": {
"text": "Variables - unified node with 5 modes. The sub-branch below fans out to one demo of each mode. Define names in the Variables window (toolbar); scope is per-device by MAC or Universal.",
"font_size": 12,
"color": "white",
"width": 260
},
"flipped": false
},
{
"id": "785a3445",
"type": "bluetooth",
"x": 1500,
"y": 2200,
"data": {
"mode": "pull_ble",
"scope": "universal",
"names": [],
"play_sound": true,
"assignments": [],
"script": "",
"script_language": "powershell",
"var_name": "",
"pre_listen_ms": 500,
"listen_window_ms": 5000,
"outcomes": [],
"script_mode": "manual",
"elevated_launch": {
"enabled": false,
"command": "powershell -Command \"Start-Process wt -Verb RunAs\"",
"win_r_wait_ms": 5000,
"post_type_wait_ms": 15000
},
"sequence": []
},
"flipped": false
},
{
"id": "0b0b000d",
"type": "note",
"x": 904.9025895878517,
"y": 3090.9637316989774,
"data": {
"text": "RS232 Send - emit a serial message at the configured baud through the Atomic RS232 base. Supports (VAR{name}) expansion and an optional 'wait for response' check.",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "6fcd57ee",
"type": "rs232",
"x": 905.5639025191554,
"y": 3275.1216205180726,
"data": {
"baud": 9600,
"data_bits": 8,
"stop_bits": "1",
"parity": "none",
"message": "Hello from RS232",
"line_ending": "crlf",
"wait_response": false,
"expected_response": "",
"timeout_ms": 5000,
"post_send_delay_ms": 0
},
"flipped": false
},
{
"id": "0b0b000e",
"type": "note",
"x": 902.8610134283688,
"y": 3413.327029541044,
"data": {
"text": "Sub-Routine - call a reusable routine defined in the Sub-Routines profile. Edit that profile to manage your shared blocks.",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "650c012a",
"type": "subroutine",
"x": 899.4968114062781,
"y": 3544.7861649536885,
"data": {
"name": "Open Run Box"
},
"flipped": false
},
{
"id": "0b0b000f",
"type": "note",
"x": 902.5015382799311,
"y": 3680.8134882671293,
"data": {
"text": "PC Alive Check - toggle Num Lock and watch the LED state to confirm the host PC is responding. Modes: PC Response (any change), Num Lock ON, Num Lock OFF. Optional polling loop.",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "e5303f37",
"type": "pc_alive_check",
"x": 905.5639025191554,
"y": 3875.1216205180726,
"data": {
"condition": "pc_response",
"loop": true,
"poll_delay_ms": 500
},
"flipped": false
},
{
"id": "0b0b0010",
"type": "note",
"x": 904.047129740936,
"y": 4023.8868016230053,
"data": {
"text": "Macro - record and replay an exact HID key sequence, including chord timings and per-key hold durations. Mouse input is never captured.",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "75a52e31",
"type": "macro",
"x": 905.5639025191554,
"y": 4175.121620518077,
"data": {
"events": [],
"name": ""
},
"flipped": false
},
{
"id": "ac46db7a",
"type": "note",
"x": 1082.0141276583024,
"y": 346.0823132565328,
"data": {
"text": "Tip: inside Custom Timings, use Record to capture the timings of a real key combo on your keyboard.",
"font_size": 11,
"color": "white",
"width": 220
},
"flipped": false
},
{
"id": "0c0c0001",
"type": "text",
"x": 1860.7356868011127,
"y": 1084.3911840024282,
"data": {
"text": "...continuing",
"language": "none"
},
"flipped": false
},
{
"id": "0d0d0001",
"type": "note",
"x": 1856.6813531649325,
"y": 1013.4489658181644,
"data": {
"text": "Runs every iteration except the first.",
"font_size": 12,
"color": "white",
"width": 200
},
"flipped": false
},
{
"id": "0c0c0002",
"type": "text",
"x": 1858.032797710326,
"y": 1240.601622188037,
"data": {
"text": "First iteration!",
"language": "none"
},
"flipped": false
},
{
"id": "0d0d0002",
"type": "note",
"x": 1844.5183522563918,
"y": 1158.847847640626,
"data": {
"text": "Runs only on the first iteration.",
"font_size": 12,
"color": "white",
"width": 200
},
"flipped": false
},
{
"id": "0c0c0003",
"type": "aggregator",
"x": 2130.195798618866,
"y": 1240.8801867280501,
"data": {
"input_count": 2
},
"flipped": false
},
{
"id": "0d0d0003",
"type": "note",
"x": 2126.1414649826856,
"y": 1180.7495249069336,
"data": {
"text": "Merge both branches before looping back.",
"font_size": 12,
"color": "white",
"width": 200
},
"flipped": false
},
{
"id": "0c0c0004",
"type": "repeat",
"x": 1610.1957986188665,
"y": 1480.8801867280501,
"data": {
"count": 1,
"start_idx": 0,
"use_selector": true
},
"flipped": false
},
{
"id": "0d0d0004",
"type": "note",
"x": 1599.3842422557193,
"y": 1371.1518549089512,
"data": {
"text": "When 'Use selector value' is enabled, the Loop takes its count from the upstream Loop Selector instead of the static count field.",
"font_size": 12,
"color": "white",
"width": 220
},
"flipped": false
},
{
"id": "0c0c0005",
"type": "text",
"x": 1612.4168499422856,
"y": 1608.518718262276,
"data": {
"text": "Looping!",
"language": "none"
},
"flipped": true
},
{
"id": "0d0d0005",
"type": "note",
"x": 2130.195798618866,
"y": 1350.8801867280501,
"data": {
"text": "Body of the loop, runs N times where N is what the user picked.",
"font_size": 12,
"color": "white",
"width": 200
},
"flipped": false
},
{
"id": "0c0c0006",
"type": "text",
"x": 2150,
"y": 2200,
"data": {
"text": "Hello (VAR{example})!",
"language": "none"
},
"flipped": false
},
{
"id": "0d0d0006",
"type": "note",
"x": 2150,
"y": 2080,
"data": {
"text": "Type Text with (VAR{name}) interpolates the variable at runtime. Define names in the Variables window - host edits are pushed over BLE.",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "4b1c882b",
"type": "note",
"x": 1598.1544277194112,
"y": 1685.96021111963,
"data": {
"text": "Tip: select a node and press F to flip its input/output side. Useful for wires that would otherwise cross.",
"font_size": 11,
"color": "white",
"width": 160
},
"flipped": false
},
{
"id": "0e0e0000",
"type": "branch",
"x": 1050,
"y": 2700,
"data": {
"choices": [
{
"label": "Pull BLE",
"next": -1,
"match_value": "",
"color": "white"
},
{
"label": "Push BLE",
"next": -1,
"match_value": "",
"color": "white"
},
{
"label": "Request BLE",
"next": -1,
"match_value": "",
"color": "white"
},
{
"label": "Set Local",
"next": -1,
"match_value": "",
"color": "white"
},
{
"label": "Get Local",
"next": -1,
"match_value": "",
"color": "white"
}
],
"mode": "manual",
"var_name": "",
"var_scope": "auto"
},
"flipped": false
},
{
"id": "0e0e1001",
"type": "note",
"x": 1495.4316519295037,
"y": 2110.9263613055678,
"data": {
"text": "Pull BLE - the M5Stack queries the Python app for updated variables.",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "0e0e0002",
"type": "bluetooth",
"x": 1500,
"y": 2450,
"data": {
"mode": "push_ble",
"scope": "universal",
"names": [],
"play_sound": true,
"assignments": [],
"script": "",
"script_language": "powershell",
"var_name": "",
"pre_listen_ms": 500,
"listen_window_ms": 5000,
"outcomes": [],
"script_mode": "manual",
"elevated_launch": {
"enabled": false,
"command": "powershell -Command \"Start-Process wt -Verb RunAs\"",
"win_r_wait_ms": 5000,
"post_type_wait_ms": 15000
},
"sequence": []
},
"flipped": false
},
{
"id": "0e0e1002",
"type": "note",
"x": 1483.5408309068825,
"y": 2354.87886549474,
"data": {
"text": "Push BLE - the M5Stack pushes its variables back to the host via its per-device BLE profile.",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "0e0e0003",
"type": "bluetooth",
"x": 1500.0,
"y": 2741.796494031168,
"data": {
"mode": "request_ble",
"scope": "universal",
"names": [],
"play_sound": true,
"assignments": [],
"script": "",
"script_language": "powershell",
"var_name": "",
"pre_listen_ms": 500,
"listen_window_ms": 5000,
"outcomes": [],
"script_mode": "manual",
"elevated_launch": {
"enabled": false,
"command": "powershell -Command \"Start-Process wt -Verb RunAs\"",
"win_r_wait_ms": 5000,
"post_type_wait_ms": 15000
},
"sequence": []
},
"flipped": false
},
{
"id": "0e0e1003",
"type": "note",
"x": 1482.5456762870904,
"y": 2570.0484538021,
"data": {
"text": "Request BLE - device prompts the technician (via a dialog in the Python app) to edit one or more variables. Blocks until the tech submits or cancels. Great for one-off inputs like 'enter ticket number'.",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "0e0e0004",
"type": "bluetooth",
"x": 1512.9370100572658,
"y": 2964.927319296846,
"data": {
"mode": "set_local",
"scope": "universal",
"names": [],
"play_sound": true,
"assignments": [
{
"name": "example",
"value": "hello"
}
],
"script": "",
"script_language": "powershell",
"var_name": "",
"pre_listen_ms": 500,
"listen_window_ms": 5000,
"outcomes": [],
"script_mode": "manual",
"elevated_launch": {
"enabled": false,
"command": "powershell -Command \"Start-Process wt -Verb RunAs\"",
"win_r_wait_ms": 5000,
"post_type_wait_ms": 15000
},
"sequence": []
},
"flipped": false
},
{
"id": "0e0e1004",
"type": "note",
"x": 1471.5989754694026,
"y": 2855.8740201145306,
"data": {
"text": "Set Variables - assign one or more variables on the M5Stack directly. This mode doesn't pull / push over BLE.",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "0e0e0005",
"type": "bluetooth",
"x": 1502.985463859369,
"y": 3271.65113262486,
"data": {
"mode": "get_local",
"scope": "universal",
"names": [],
"play_sound": true,
"assignments": [],
"script": "",
"script_language": "powershell",
"var_name": "",
"pre_listen_ms": 500,
"listen_window_ms": 5000,
"outcomes": [],
"script_mode": "manual",
"elevated_launch": {
"enabled": false,
"command": "powershell -Command \"Start-Process wt -Verb RunAs\"",
"win_r_wait_ms": 5000,
"post_type_wait_ms": 15000
},
"sequence": []
},
"flipped": false
},
{
"id": "0e0e1005",
"type": "note",
"x": 1470.6038208496143,
"y": 3094.927319296842,
"data": {
"text": "Get Variables - the M5Stack types a host-side script over USB (typically PowerShell) and decodes the answer by counting Scroll Lock toggles the script fires back. This mode doesn't pull / push over BLE.",
"font_size": 12,
"color": "white",
"width": 240
},
"flipped": false
},
{
"id": "0ef8de98",
"type": "note",
"x": 1460.1938152084126,
"y": 3378.2035059688315,
"data": {
"text": "Note: you could use this for something like \"Is the C:\\Users\\admin directory present?\" or \"Is application x y and z installed?\"",
"font_size": 11,
"color": "white",
"width": 220
},
"flipped": false
}
],
"connections": [
{
"from": "fba20d14",
"from_port": "out",
"to": "da1b3c38",
"to_port": "in"
},
{
"from": "da1b3c38",
"from_port": "out_0",
"to": "2851ffd9",
"to_port": "in"
},
{
"from": "da1b3c38",
"from_port": "out_1",
"to": "8556445d",
"to_port": "in"
},
{
"from": "da1b3c38",
"from_port": "out_2",
"to": "49719853",
"to_port": "in"
},
{
"from": "da1b3c38",
"from_port": "out_3",
"to": "ca82e599",
"to_port": "in"
},
{
"from": "da1b3c38",
"from_port": "out_4",
"to": "dcfb234b",
"to_port": "in"
},
{
"from": "da1b3c38",
"from_port": "out_5",
"to": "96651684",
"to_port": "in"
},
{
"from": "da1b3c38",
"from_port": "out_6",
"to": "3524d897",
"to_port": "in"
},
{
"from": "da1b3c38",
"from_port": "out_7",
"to": "f5706152",
"to_port": "in"
},
{
"from": "da1b3c38",
"from_port": "out_9",
"to": "6fcd57ee",
"to_port": "in"
},
{
"from": "da1b3c38",
"from_port": "out_10",
"to": "650c012a",
"to_port": "in"
},
{
"from": "da1b3c38",
"from_port": "out_11",
"to": "e5303f37",
"to_port": "in"
},
{
"from": "da1b3c38",
"from_port": "out_12",
"to": "75a52e31",
"to_port": "in"
},
{
"from": "ca82e599",
"from_port": "out_0",
"to": "0a0a1111",
"to_port": "in"
},
{
"from": "0a0a1111",
"from_port": "out",
"to": "0a0a2222",
"to_port": "in_0"
},
{
"from": "ca82e599",
"from_port": "out_1",
"to": "0a0a2222",
"to_port": "in_1"
},
{
"from": "dcfb234b",
"from_port": "loop_body",
"to": "0a0a3333",
"to_port": "in"
},
{
"from": "0a0a3333",
"from_port": "out_0",
"to": "0c0c0001",
"to_port": "in"
},
{
"from": "0a0a3333",
"from_port": "out_1",
"to": "0c0c0002",
"to_port": "in"
},
{
"from": "0c0c0001",
"from_port": "out",
"to": "0c0c0003",
"to_port": "in_0"
},
{
"from": "0c0c0002",
"from_port": "out",
"to": "0c0c0003",
"to_port": "in_1"
},
{
"from": "0c0c0003",
"from_port": "out",
"to": "dcfb234b",
"to_port": "loop_back"
},
{
"from": "96651684",
"from_port": "out",
"to": "0c0c0004",
"to_port": "in"
},
{
"from": "0c0c0004",
"from_port": "loop_body",
"to": "0c0c0005",
"to_port": "in"
},
{
"from": "0c0c0005",
"from_port": "out",
"to": "0c0c0004",
"to_port": "loop_back"
},
{
"from": "785a3445",
"from_port": "out",
"to": "0c0c0006",
"to_port": "in"
},
{
"from": "da1b3c38",
"from_port": "out_8",
"to": "0e0e0000",
"to_port": "in"
},
{
"from": "0e0e0000",
"from_port": "out_0",
"to": "785a3445",
"to_port": "in"
},
{
"from": "0e0e0000",
"from_port": "out_1",
"to": "0e0e0002",
"to_port": "in"
},
{
"from": "0e0e0000",
"from_port": "out_2",
"to": "0e0e0003",
"to_port": "in"
},
{
"from": "0e0e0000",
"from_port": "out_3",
"to": "0e0e0004",
"to_port": "in"
},
{
"from": "0e0e0000",
"from_port": "out_4",
"to": "0e0e0005",
"to_port": "in"
}
]
},
{
"name": "Test",
"label_color": "white",
"image_path": "",
"nodes": [
{
"id": "ac45fd48",
"type": "start",
"x": 100,
"y": 100,
"data": {},
"flipped": false
},
{
"id": "53a6df6b",
"type": "macro",
"x": 339.42111444989905,
"y": 85.49173666913251,
"data": {
"events": [
[
703,
0,
227
],
[
962,
0,
21
],
[
1078,
1,
21
],
[
1228,
1,
227
],
[
2175,
0,
26
],
[
2272,
1,
26
],
[
2373,
0,
23
],
[
2460,
1,
23
],
[
2580,
0,
225
],
[
2964,
0,
224
],
[
3154,
0,
40
],
[
3256,
1,
40
],
[
3331,
1,
225
],
[
3340,
1,
224
],
[
4481,
0,
80
],
[
4582,
1,
80
],
[
4609,
0,
40
],
[
4714,
1,
40
],
[
6670,
0,
26
],
[
6752,
0,
11
],
[
6773,
1,
26
],
[
6830,
1,
11
],
[
6892,
0,
18
],
[
6997,
1,
18
],
[
7087,
0,
4
],
[
7186,
1,
4
],
[
7197,
0,
16
],
[
7294,
1,
16
],
[
7371,
0,
12
],
[
7468,
1,
12
],
[
7608,
0,
40
],
[
7685,
1,
40
],
[
7981,
0,
11
],
[
8102,
1,
11
],
[
8184,
0,
18
],
[
8277,
1,
18
],
[
8291,
0,
22
],
[
8360,
0,
23
],
[
8402,
1,
22
],
[
8460,
1,
23
],
[
8544,
0,
17
],
[
8641,
0,
4
],
[
8648,
1,
17
],
[
8747,
1,
4
],
[
8764,
0,
16
],
[
8831,
0,
8
],
[
8862,
1,
16
],
[
8919,
1,
8
],
[
9008,
0,
40
],
[
9085,
1,
40
],
[
9508,
0,
23
],
[
9594,
0,
22
],
[
9639,
1,
23
],
[
9729,
1,
22
],
[
10037,
0,
42
],
[
10115,
1,
42
],
[
10162,
0,
42
],
[
10278,
1,
42
],
[
10377,
0,
42
],
[
10498,
1,
42
],
[
10610,
0,
8
],
[
10696,
1,
8
],
[
10837,
0,
11
],
[
10934,
1,
11
],
[
11109,
0,
42
],
[
11202,
1,
42
],
[
11423,
0,
11
],
[
11519,
1,
11
],
[
11714,
0,
18
],
[
11839,
1,
18
],
[
11851,
0,
44
],
[
11993,
1,
44
],
[
12299,
0,
42
],
[
12361,
1,
42
],
[
12416,
0,
42
],
[
12490,
1,
42
],
[
12524,
0,
42
],
[
12658,
1,
42
],
[
13471,
0,
6
],
[
13543,
0,
11
],
[
13564,
1,
6
],
[
13627,
1,
11
],
[
13700,
0,
18
],
[
13749,
0,
44
],
[
13821,
1,
18
],
[
13865,
0,
225
],
[
13885,
1,
44
],
[
13947,
0,
12
],
[
13973,
0,
44
],
[
14031,
1,
225
],
[
14074,
1,
12
],
[
14110,
1,
44
],
[
14145,
0,
4
],
[
14249,
1,
4
],
[
14265,
0,
16
],
[
14309,
0,
44
],
[
14369,
1,
16
],
[
14435,
0,
23
],
[
14447,
1,
44
],
[
14494,
0,
8
],
[
14513,
0,
22
],
[
14562,
1,
23
],
[
14631,
0,
23
],
[
14676,
1,
22
],
[
14709,
1,
8
],
[
14767,
1,
23
],
[
14801,
0,
12
],
[
14892,
1,
12
],
[
14963,
0,
17
],
[
15007,
0,
10
],
[
15051,
1,
17
],
[
15085,
1,
10
],
[
15094,
0,
44
],
[
15187,
0,
23
],
[
15196,
1,
44
],
[
15236,
0,
11
],
[
15289,
0,
8
],
[
15314,
0,
44
],
[
15364,
1,
11
],
[
15389,
1,
23
],
[
15428,
1,
8
],
[
15442,
1,
44
],
[
15614,
0,
21
],
[
15704,
1,
21
],
[
15855,
0,
42
],
[
15950,
0,
9
],
[
15959,
1,
42
],
[
16043,
1,
9
],
[
16063,
0,
24
],
[
16146,
1,
24
],
[
16201,
0,
17
],
[
16258,
0,
6
],
[
16299,
1,
17
],
[
16356,
1,
6
],
[
16431,
0,
23
],
[
16476,
0,
12
],
[
16509,
1,
23
],
[
16530,
0,
18
],
[
16578,
1,
12
],
[
16627,
1,
18
],
[
16660,
0,
17
],
[
16757,
1,
17
],
[
16768,
0,
4
],
[
16829,
0,
15
],
[
16853,
1,
4
],
[
16913,
1,
15
],
[
16956,
0,
12
],
[
17012,
0,
23
],
[
17053,
1,
12
],
[
17090,
1,
23
],
[
17151,
0,
28
],
[
17205,
0,
44
],
[
17216,
1,
28
],
[
17307,
1,
44
],
[
17330,
0,
18
],
[
17425,
1,
18
],
[
17438,
0,
9
],
[
17494,
0,
44
],
[
17521,
1,
9
],
[
17576,
1,
44
],
[
17587,
0,
23
],
[
17600,
0,
11
],
[
17655,
0,
8
],
[
17671,
0,
44
],
[
17728,
1,
23
],
[
17738,
1,
11
],
[
17768,
1,
8
],
[
17779,
1,
44
],
[
17910,
0,
225
],
[
18005,
0,
5
],
[
18090,
1,
5
],
[
18165,
0,
15
],
[
18235,
0,
8
],
[
18261,
1,
15
],
[
18279,
0,
44
],
[
18325,
1,
8
],
[
18426,
1,
225
],
[
18446,
1,
44
],
[
20235,
0,
14
],
[
20302,
0,
8
],
[
20327,
1,
14
],
[
20424,
1,
8
],
[
20433,
0,
28
],
[
20527,
1,
28
],
[
20602,
0,
5
],
[
20685,
1,
5
],
[
20764,
0,
19
],
[
20808,
0,
4
],
[
20839,
1,
19
],
[
20850,
0,
21
],
[
20926,
1,
4
],
[
20936,
1,
21
],
[
21010,
0,
7
],
[
21097,
1,
7
],
[
21205,
0,
42
],
[
21272,
1,
42
],
[
21334,
0,
42
],
[
21412,
1,
42
],
[
21455,
0,
42
],
[
21527,
1,
42
],
[
21569,
0,
42
],
[
21652,
1,
42
],
[
21708,
0,
42
],
[
21813,
1,
42
],
[
21966,
0,
18
],
[
22048,
0,
4
],
[
22063,
1,
18
],
[
22087,
0,
21
],
[
22140,
1,
4
],
[
22179,
1,
21
],
[
22248,
0,
7
],
[
22353,
1,
7
],
[
22364,
0,
44
],
[
22509,
1,
44
],
[
22767,
0,
42
],
[
22834,
1,
42
],
[
22888,
0,
42
],
[
22967,
1,
42
],
[
23003,
0,
42
],
[
23085,
1,
42
],
[
23146,
0,
42
],
[
23214,
1,
42
],
[
23278,
0,
42
],
[
23361,
1,
42
],
[
23569,
0,
5
],
[
23656,
1,
5
],
[
23824,
0,
18
],
[
23939,
1,
18
],
[
23991,
0,
4
],
[
24048,
0,
21
],
[
24126,
1,
4
],
[
24155,
1,
21
],
[
24225,
0,
7
],
[
24302,
0,
44
],
[
24318,
1,
7
],
[
24432,
1,
44
],
[
25567,
0,
12
],
[
25684,
1,
12
],
[
25743,
0,
17
],
[
25835,
1,
17
],
[
25912,
0,
19
],
[
25992,
1,
19
],
[
26046,
0,
24
],
[
26137,
0,
23
],
[
26158,
1,
24
],
[
26263,
1,
23
],
[
26864,
0,
55
],
[
26970,
1,
55
],
[
27034,
0,
55
],
[
27096,
1,
55
],
[
27141,
0,
55
],
[
27228,
1,
55
],
[
27331,
0,
40
],
[
27409,
1,
40
]
],
"name": ""
},
"flipped": false
}
],
"connections": [
{
"from": "ac45fd48",
"from_port": "out",
"to": "53a6df6b",
"to_port": "in"
}
]
}
]
}