{
  "metadata": {
    "title": "Open Study Buddy",
    "description": "An interactive intelligent textbook to support the low-cost Open Study Buddy personal agent hardware for students: a Raspberry Pi Pico 2 W with a round color display, I2S microphone and speaker, FFT-based wake word detection, MQTT alerts, and an open, school-configured agent.",
    "creator": "Dan McCreary",
    "date": "2026-10-18",
    "version": "1.0",
    "format": "Learning Graph JSON v1.0",
    "schema": "https://raw.githubusercontent.com/dmccreary/learning-graphs/refs/heads/main/src/schema/learning-graph-schema.json",
    "license": "CC BY-NC-SA 4.0 DEED"
  },
  "groups": {
    "FND": {
      "classifierName": "Personal Agents and Architecture",
      "color": "SteelBlue",
      "font": {
        "color": "white"
      }
    },
    "MPY": {
      "classifierName": "MicroPython Review",
      "color": "DarkSlateBlue",
      "font": {
        "color": "white"
      }
    },
    "HWK": {
      "classifierName": "Pico Kit Hardware",
      "color": "DarkGreen",
      "font": {
        "color": "white"
      }
    },
    "DISP": {
      "classifierName": "Round Display Graphics",
      "color": "LimeGreen",
      "font": {
        "color": "black"
      }
    },
    "BTN": {
      "classifierName": "Buttons and Device Modes",
      "color": "Khaki",
      "font": {
        "color": "black"
      }
    },
    "AUD": {
      "classifierName": "Digital Audio and I2S",
      "color": "Gold",
      "font": {
        "color": "black"
      }
    },
    "DSP": {
      "classifierName": "Signal Processing and FFT",
      "color": "DarkGoldenrod",
      "font": {
        "color": "white"
      }
    },
    "PERF": {
      "classifierName": "High-Performance MicroPython",
      "color": "Teal",
      "font": {
        "color": "white"
      }
    },
    "CAL": {
      "classifierName": "Mic Calibration and Push-to-Talk",
      "color": "LightSkyBlue",
      "font": {
        "color": "black"
      }
    },
    "WAKE": {
      "classifierName": "Wake-Word Detection",
      "color": "Crimson",
      "font": {
        "color": "white"
      }
    },
    "NET": {
      "classifierName": "Networking and Agent Link",
      "color": "DodgerBlue",
      "font": {
        "color": "white"
      }
    },
    "MQTT": {
      "classifierName": "MQTT and Push Alerts",
      "color": "Orange",
      "font": {
        "color": "black"
      }
    },
    "SCH": {
      "classifierName": "School Agent and Calendar",
      "color": "OliveDrab",
      "font": {
        "color": "white"
      }
    },
    "PRIV": {
      "classifierName": "Privacy and Responsible Listening",
      "color": "DarkRed",
      "font": {
        "color": "white"
      }
    },
    "TEST": {
      "classifierName": "Testing, Integration and Capstones",
      "color": "DimGray",
      "font": {
        "color": "white"
      }
    }
  },
  "nodes": [
    {
      "id": 1,
      "label": "Personal Agent",
      "group": "FND",
      "shape": "box",
      "cis": 1329
    },
    {
      "id": 2,
      "label": "Chatbot Versus Agent",
      "group": "FND",
      "cis": 1
    },
    {
      "id": 3,
      "label": "Cloud Agent",
      "group": "FND",
      "cis": 192
    },
    {
      "id": 4,
      "label": "Self-Hosted Agent",
      "group": "FND",
      "cis": 183
    },
    {
      "id": 5,
      "label": "Open Hardware",
      "group": "FND",
      "cis": 843
    },
    {
      "id": 6,
      "label": "Open Source Software",
      "group": "FND",
      "cis": 7
    },
    {
      "id": 7,
      "label": "Open Study Buddy Device",
      "group": "FND",
      "cis": 74
    },
    {
      "id": 8,
      "label": "Agent Terminal",
      "group": "FND",
      "cis": 72
    },
    {
      "id": 9,
      "label": "Buddy Server",
      "group": "FND",
      "cis": 70
    },
    {
      "id": 10,
      "label": "Request-Reply Contract",
      "group": "FND",
      "cis": 10
    },
    {
      "id": 11,
      "label": "Swappable Brain",
      "group": "FND",
      "cis": 2
    },
    {
      "id": 12,
      "label": "Agent Progression Levels",
      "group": "FND",
      "cis": 1
    },
    {
      "id": 13,
      "label": "Rule-Based Agent",
      "group": "FND",
      "cis": 12
    },
    {
      "id": 14,
      "label": "LLM-Backed Agent",
      "group": "FND",
      "cis": 6
    },
    {
      "id": 15,
      "label": "Open-Source Agent Framework",
      "group": "FND",
      "cis": 2
    },
    {
      "id": 16,
      "label": "Edge Device",
      "group": "FND",
      "cis": 5
    },
    {
      "id": 17,
      "label": "Always-On Device",
      "group": "FND",
      "cis": 4
    },
    {
      "id": 18,
      "label": "School-Hosted Agent",
      "group": "FND",
      "cis": 34
    },
    {
      "id": 19,
      "label": "Agent Data Flow",
      "group": "FND",
      "cis": 1
    },
    {
      "id": 20,
      "label": "Agent Tools",
      "group": "FND",
      "cis": 4
    },
    {
      "id": 21,
      "label": "Agent Memory",
      "group": "FND",
      "cis": 1
    },
    {
      "id": 22,
      "label": "Agent Approval Rules",
      "group": "FND",
      "cis": 2
    },
    {
      "id": 23,
      "label": "MicroPython Review",
      "group": "MPY",
      "shape": "box",
      "cis": 2292
    },
    {
      "id": 24,
      "label": "Thonny IDE",
      "group": "MPY",
      "cis": 1
    },
    {
      "id": 25,
      "label": "REPL",
      "group": "MPY",
      "cis": 14
    },
    {
      "id": 26,
      "label": "mpremote",
      "group": "MPY",
      "cis": 12
    },
    {
      "id": 27,
      "label": "mip Package Manager",
      "group": "MPY",
      "cis": 11
    },
    {
      "id": 28,
      "label": "Modules and Imports",
      "group": "MPY",
      "cis": 1083
    },
    {
      "id": 29,
      "label": "machine Library",
      "group": "MPY",
      "cis": 1073
    },
    {
      "id": 30,
      "label": "GPIO Pin",
      "group": "MPY",
      "cis": 582
    },
    {
      "id": 31,
      "label": "Interrupt",
      "group": "MPY",
      "cis": 5
    },
    {
      "id": 32,
      "label": "Interrupt Service Routine",
      "group": "MPY",
      "cis": 2
    },
    {
      "id": 33,
      "label": "Timer",
      "group": "MPY",
      "cis": 13
    },
    {
      "id": 34,
      "label": "Memory Limits",
      "group": "MPY",
      "cis": 108
    },
    {
      "id": 35,
      "label": "Garbage Collection",
      "group": "MPY",
      "cis": 5
    },
    {
      "id": 36,
      "label": "Heap Fragmentation",
      "group": "MPY",
      "cis": 1
    },
    {
      "id": 37,
      "label": "Byte Arrays",
      "group": "MPY",
      "cis": 247
    },
    {
      "id": 38,
      "label": "memoryview",
      "group": "MPY",
      "cis": 2
    },
    {
      "id": 39,
      "label": "Exceptions",
      "group": "MPY",
      "cis": 11
    },
    {
      "id": 40,
      "label": "Config File Pattern",
      "group": "MPY",
      "cis": 8
    },
    {
      "id": 41,
      "label": "Flash File System",
      "group": "MPY",
      "cis": 17
    },
    {
      "id": 42,
      "label": "Boot and Main Scripts",
      "group": "MPY",
      "cis": 1
    },
    {
      "id": 43,
      "label": "Raspberry Pi Pico 2 W",
      "group": "HWK",
      "cis": 768
    },
    {
      "id": 44,
      "label": "RP2350 Microcontroller",
      "group": "HWK",
      "cis": 27
    },
    {
      "id": 45,
      "label": "Dual Core Processor",
      "group": "HWK",
      "cis": 2
    },
    {
      "id": 46,
      "label": "Cortex-M33 Core",
      "group": "HWK",
      "cis": 23
    },
    {
      "id": 47,
      "label": "SRAM",
      "group": "HWK",
      "cis": 1
    },
    {
      "id": 48,
      "label": "Wi-Fi Radio",
      "group": "HWK",
      "cis": 133
    },
    {
      "id": 49,
      "label": "Round Color Display",
      "group": "HWK",
      "cis": 248
    },
    {
      "id": 50,
      "label": "Display Controller",
      "group": "HWK",
      "cis": 49
    },
    {
      "id": 51,
      "label": "INMP441 Microphone",
      "group": "HWK",
      "cis": 319
    },
    {
      "id": 52,
      "label": "MEMS Microphone",
      "group": "HWK",
      "cis": 320
    },
    {
      "id": 53,
      "label": "MAX98357A Amplifier",
      "group": "HWK",
      "cis": 28
    },
    {
      "id": 54,
      "label": "Class-D Amplifier",
      "group": "HWK",
      "cis": 29
    },
    {
      "id": 55,
      "label": "Speaker",
      "group": "HWK",
      "cis": 30
    },
    {
      "id": 56,
      "label": "Push Button",
      "group": "HWK",
      "cis": 125
    },
    {
      "id": 57,
      "label": "Breadboard",
      "group": "HWK",
      "cis": 10
    },
    {
      "id": 58,
      "label": "Dupont Wires",
      "group": "HWK",
      "cis": 1
    },
    {
      "id": 59,
      "label": "USB Power",
      "group": "HWK",
      "cis": 2
    },
    {
      "id": 60,
      "label": "Pin Assignment Table",
      "group": "HWK",
      "cis": 6
    },
    {
      "id": 61,
      "label": "Pull-Up Resistor",
      "group": "HWK",
      "cis": 3
    },
    {
      "id": 62,
      "label": "Kit Bill of Materials",
      "group": "HWK",
      "cis": 1
    },
    {
      "id": 63,
      "label": "Ground Wiring",
      "group": "HWK",
      "cis": 2
    },
    {
      "id": 64,
      "label": "Power Supply Noise",
      "group": "HWK",
      "cis": 1
    },
    {
      "id": 65,
      "label": "SPI Bus",
      "group": "DISP",
      "cis": 94
    },
    {
      "id": 66,
      "label": "SPI Display Driver",
      "group": "DISP",
      "cis": 47
    },
    {
      "id": 67,
      "label": "Pixel",
      "group": "DISP",
      "cis": 193
    },
    {
      "id": 68,
      "label": "RGB565 Color",
      "group": "DISP",
      "cis": 98
    },
    {
      "id": 69,
      "label": "Frame Buffer",
      "group": "DISP",
      "cis": 93
    },
    {
      "id": 70,
      "label": "Frame Size Calculation",
      "group": "DISP",
      "cis": 92
    },
    {
      "id": 71,
      "label": "Full-Frame Update",
      "group": "DISP",
      "cis": 45
    },
    {
      "id": 72,
      "label": "Update Bandwidth",
      "group": "DISP",
      "cis": 46
    },
    {
      "id": 73,
      "label": "Direct Region Write",
      "group": "DISP",
      "cis": 44
    },
    {
      "id": 74,
      "label": "Drawing Window",
      "group": "DISP",
      "cis": 19
    },
    {
      "id": 75,
      "label": "Dirty Region",
      "group": "DISP",
      "cis": 17
    },
    {
      "id": 76,
      "label": "Region Layout",
      "group": "DISP",
      "cis": 14
    },
    {
      "id": 77,
      "label": "Text Rendering",
      "group": "DISP",
      "cis": 1
    },
    {
      "id": 78,
      "label": "Fonts",
      "group": "DISP",
      "cis": 2
    },
    {
      "id": 79,
      "label": "Clock Face Geometry",
      "group": "DISP",
      "cis": 4
    },
    {
      "id": 80,
      "label": "Polar to Cartesian",
      "group": "DISP",
      "cis": 2
    },
    {
      "id": 81,
      "label": "Hand Drawing",
      "group": "DISP",
      "cis": 1
    },
    {
      "id": 82,
      "label": "Icons",
      "group": "DISP",
      "cis": 2
    },
    {
      "id": 83,
      "label": "Sprite",
      "group": "DISP",
      "cis": 1
    },
    {
      "id": 84,
      "label": "Animation",
      "group": "DISP",
      "cis": 2
    },
    {
      "id": 85,
      "label": "Image Loading",
      "group": "DISP",
      "cis": 4
    },
    {
      "id": 86,
      "label": "School Mascot",
      "group": "DISP",
      "cis": 3
    },
    {
      "id": 87,
      "label": "Round Display Mask",
      "group": "DISP",
      "cis": 1
    },
    {
      "id": 88,
      "label": "Color Themes",
      "group": "DISP",
      "cis": 2
    },
    {
      "id": 89,
      "label": "Backlight Control",
      "group": "DISP",
      "cis": 1
    },
    {
      "id": 90,
      "label": "Display Refresh Rate",
      "group": "DISP",
      "cis": 1
    },
    {
      "id": 91,
      "label": "Mode Button",
      "group": "BTN",
      "cis": 35
    },
    {
      "id": 92,
      "label": "Up Button",
      "group": "BTN",
      "cis": 10
    },
    {
      "id": 93,
      "label": "Down Button",
      "group": "BTN",
      "cis": 4
    },
    {
      "id": 94,
      "label": "Button Debouncing",
      "group": "BTN",
      "cis": 2
    },
    {
      "id": 95,
      "label": "Falling Edge Detection",
      "group": "BTN",
      "cis": 2
    },
    {
      "id": 96,
      "label": "Long Press",
      "group": "BTN",
      "cis": 1
    },
    {
      "id": 97,
      "label": "Menu Navigation",
      "group": "BTN",
      "cis": 2
    },
    {
      "id": 98,
      "label": "State Machine",
      "group": "BTN",
      "cis": 18
    },
    {
      "id": 99,
      "label": "Device Modes",
      "group": "BTN",
      "cis": 14
    },
    {
      "id": 100,
      "label": "Event Loop",
      "group": "BTN",
      "cis": 3
    },
    {
      "id": 101,
      "label": "Non-Blocking Code",
      "group": "BTN",
      "cis": 2
    },
    {
      "id": 102,
      "label": "Button Interrupt",
      "group": "BTN",
      "cis": 1
    },
    {
      "id": 103,
      "label": "User Feedback",
      "group": "BTN",
      "cis": 4
    },
    {
      "id": 104,
      "label": "Status Indicator",
      "group": "BTN",
      "cis": 3
    },
    {
      "id": 105,
      "label": "Settings Screen",
      "group": "BTN",
      "cis": 1
    },
    {
      "id": 106,
      "label": "Volume Control",
      "group": "BTN",
      "cis": 1
    },
    {
      "id": 107,
      "label": "Sound Wave",
      "group": "AUD",
      "shape": "box",
      "cis": 2282
    },
    {
      "id": 108,
      "label": "Frequency",
      "group": "AUD",
      "cis": 311
    },
    {
      "id": 109,
      "label": "Amplitude",
      "group": "AUD",
      "cis": 512
    },
    {
      "id": 110,
      "label": "Sampling",
      "group": "AUD",
      "cis": 1108
    },
    {
      "id": 111,
      "label": "Sample Rate",
      "group": "AUD",
      "cis": 210
    },
    {
      "id": 112,
      "label": "Bit Depth",
      "group": "AUD",
      "cis": 351
    },
    {
      "id": 113,
      "label": "Nyquist Limit",
      "group": "AUD",
      "cis": 2
    },
    {
      "id": 114,
      "label": "Aliasing",
      "group": "AUD",
      "cis": 1
    },
    {
      "id": 115,
      "label": "Analog to Digital Conversion",
      "group": "AUD",
      "cis": 347
    },
    {
      "id": 116,
      "label": "I2S Bus",
      "group": "AUD",
      "cis": 346
    },
    {
      "id": 117,
      "label": "Bit Clock",
      "group": "AUD",
      "cis": 1
    },
    {
      "id": 118,
      "label": "Word Select",
      "group": "AUD",
      "cis": 2
    },
    {
      "id": 119,
      "label": "Serial Data Line",
      "group": "AUD",
      "cis": 1
    },
    {
      "id": 120,
      "label": "machine.I2S Class",
      "group": "AUD",
      "cis": 339
    },
    {
      "id": 121,
      "label": "I2S Receive",
      "group": "AUD",
      "cis": 317
    },
    {
      "id": 122,
      "label": "I2S Transmit",
      "group": "AUD",
      "cis": 21
    },
    {
      "id": 123,
      "label": "Audio Buffer",
      "group": "AUD",
      "cis": 240
    },
    {
      "id": 124,
      "label": "Ring Buffer",
      "group": "AUD",
      "cis": 4
    },
    {
      "id": 125,
      "label": "Audio Frame",
      "group": "AUD",
      "cis": 198
    },
    {
      "id": 126,
      "label": "Frame Time Budget",
      "group": "AUD",
      "cis": 7
    },
    {
      "id": 127,
      "label": "Mono and Stereo",
      "group": "AUD",
      "cis": 2
    },
    {
      "id": 128,
      "label": "Left-Right Channel",
      "group": "AUD",
      "cis": 1
    },
    {
      "id": 129,
      "label": "Tone Generation",
      "group": "AUD",
      "cis": 4
    },
    {
      "id": 130,
      "label": "Sine Table",
      "group": "AUD",
      "cis": 1
    },
    {
      "id": 131,
      "label": "Stored Audio Playback",
      "group": "AUD",
      "cis": 10
    },
    {
      "id": 132,
      "label": "WAV File Format",
      "group": "AUD",
      "cis": 11
    },
    {
      "id": 133,
      "label": "Amplifier Shutdown Pin",
      "group": "AUD",
      "cis": 4
    },
    {
      "id": 134,
      "label": "Self-Hearing Problem",
      "group": "AUD",
      "cis": 6
    },
    {
      "id": 135,
      "label": "Mute and Resume",
      "group": "AUD",
      "cis": 3
    },
    {
      "id": 136,
      "label": "Audio Clipping",
      "group": "AUD",
      "cis": 3
    },
    {
      "id": 137,
      "label": "Time Domain",
      "group": "DSP",
      "cis": 96
    },
    {
      "id": 138,
      "label": "Frequency Domain",
      "group": "DSP",
      "cis": 94
    },
    {
      "id": 139,
      "label": "Fourier Transform",
      "group": "DSP",
      "cis": 93
    },
    {
      "id": 140,
      "label": "Discrete Fourier Transform",
      "group": "DSP",
      "cis": 92
    },
    {
      "id": 141,
      "label": "FFT",
      "group": "DSP",
      "cis": 91
    },
    {
      "id": 142,
      "label": "FFT Size",
      "group": "DSP",
      "cis": 3
    },
    {
      "id": 143,
      "label": "Frequency Bin",
      "group": "DSP",
      "cis": 67
    },
    {
      "id": 144,
      "label": "Bin Width",
      "group": "DSP",
      "cis": 2
    },
    {
      "id": 145,
      "label": "Magnitude Spectrum",
      "group": "DSP",
      "cis": 64
    },
    {
      "id": 146,
      "label": "Spectrogram",
      "group": "DSP",
      "cis": 1
    },
    {
      "id": 147,
      "label": "Windowing",
      "group": "DSP",
      "cis": 3
    },
    {
      "id": 148,
      "label": "Hann Window",
      "group": "DSP",
      "cis": 1
    },
    {
      "id": 149,
      "label": "Spectral Leakage",
      "group": "DSP",
      "cis": 1
    },
    {
      "id": 150,
      "label": "Twiddle Factors",
      "group": "DSP",
      "cis": 4
    },
    {
      "id": 151,
      "label": "Bit-Reversal Table",
      "group": "DSP",
      "cis": 3
    },
    {
      "id": 152,
      "label": "In-Place Transform",
      "group": "DSP",
      "cis": 1
    },
    {
      "id": 153,
      "label": "Log Magnitude",
      "group": "DSP",
      "cis": 31
    },
    {
      "id": 154,
      "label": "Band Energy",
      "group": "DSP",
      "cis": 29
    },
    {
      "id": 155,
      "label": "Log-Spaced Bands",
      "group": "DSP",
      "cis": 28
    },
    {
      "id": 156,
      "label": "RMS Loudness",
      "group": "DSP",
      "cis": 157
    },
    {
      "id": 157,
      "label": "Decibels",
      "group": "DSP",
      "cis": 8
    },
    {
      "id": 158,
      "label": "Spectrum Display",
      "group": "DSP",
      "cis": 1
    },
    {
      "id": 159,
      "label": "Volume Meter",
      "group": "DSP",
      "cis": 2
    },
    {
      "id": 160,
      "label": "DC Offset Removal",
      "group": "DSP",
      "cis": 1
    },
    {
      "id": 161,
      "label": "Real-Valued Input",
      "group": "DSP",
      "cis": 1
    },
    {
      "id": 162,
      "label": "Peak Frequency Detection",
      "group": "DSP",
      "cis": 1
    },
    {
      "id": 163,
      "label": "Pure Python FFT",
      "group": "PERF",
      "cis": 6
    },
    {
      "id": 164,
      "label": "Viper Code",
      "group": "PERF",
      "cis": 4
    },
    {
      "id": 165,
      "label": "Inline Assembly",
      "group": "PERF",
      "cis": 3
    },
    {
      "id": 166,
      "label": "Assembly FFT",
      "group": "PERF",
      "cis": 2
    },
    {
      "id": 167,
      "label": "Typed Arrays",
      "group": "PERF",
      "cis": 4
    },
    {
      "id": 168,
      "label": "Array Passed By Address",
      "group": "PERF",
      "cis": 1
    },
    {
      "id": 169,
      "label": "Avoiding Allocation",
      "group": "PERF",
      "cis": 3
    },
    {
      "id": 170,
      "label": "Pre-Allocated Buffers",
      "group": "PERF",
      "cis": 1
    },
    {
      "id": 171,
      "label": "Cycle Counter",
      "group": "PERF",
      "cis": 17
    },
    {
      "id": 172,
      "label": "DWT Timer",
      "group": "PERF",
      "cis": 16
    },
    {
      "id": 173,
      "label": "Timing Verification",
      "group": "PERF",
      "cis": 8
    },
    {
      "id": 174,
      "label": "Benchmarking",
      "group": "PERF",
      "cis": 7
    },
    {
      "id": 175,
      "label": "Frame Overrun",
      "group": "PERF",
      "cis": 4
    },
    {
      "id": 176,
      "label": "Real-Time Constraint",
      "group": "PERF",
      "cis": 2
    },
    {
      "id": 177,
      "label": "Dual Core Use",
      "group": "PERF",
      "cis": 1
    },
    {
      "id": 178,
      "label": "Floating Point Cost",
      "group": "PERF",
      "cis": 2
    },
    {
      "id": 179,
      "label": "Fixed-Point Math",
      "group": "PERF",
      "cis": 1
    },
    {
      "id": 180,
      "label": "Profiling",
      "group": "PERF",
      "cis": 1
    },
    {
      "id": 181,
      "label": "Performance Trade-Offs",
      "group": "PERF",
      "cis": 1
    },
    {
      "id": 182,
      "label": "Table Precomputation",
      "group": "PERF",
      "cis": 1
    },
    {
      "id": 183,
      "label": "Noise Floor",
      "group": "CAL",
      "cis": 73
    },
    {
      "id": 184,
      "label": "Speech Level",
      "group": "CAL",
      "cis": 72
    },
    {
      "id": 185,
      "label": "Signal-to-Noise Ratio",
      "group": "CAL",
      "cis": 6
    },
    {
      "id": 186,
      "label": "Speech Floor Gate",
      "group": "CAL",
      "cis": 65
    },
    {
      "id": 187,
      "label": "Level Gate",
      "group": "CAL",
      "cis": 64
    },
    {
      "id": 188,
      "label": "Microphone Calibration",
      "group": "CAL",
      "cis": 3
    },
    {
      "id": 189,
      "label": "Clipping Detection",
      "group": "CAL",
      "cis": 1
    },
    {
      "id": 190,
      "label": "Mic Distance Effect",
      "group": "CAL",
      "cis": 2
    },
    {
      "id": 191,
      "label": "Push-to-Talk",
      "group": "CAL",
      "cis": 69
    },
    {
      "id": 192,
      "label": "Recording an Utterance",
      "group": "CAL",
      "cis": 34
    },
    {
      "id": 193,
      "label": "Utterance Boundaries",
      "group": "CAL",
      "cis": 29
    },
    {
      "id": 194,
      "label": "Voice Activity Detection",
      "group": "CAL",
      "cis": 28
    },
    {
      "id": 195,
      "label": "Calibration Config Value",
      "group": "CAL",
      "cis": 1
    },
    {
      "id": 196,
      "label": "Room Acoustics",
      "group": "CAL",
      "cis": 1
    },
    {
      "id": 197,
      "label": "Wake Word",
      "group": "WAKE",
      "cis": 27
    },
    {
      "id": 198,
      "label": "Hey Pico Phrase",
      "group": "WAKE",
      "cis": 8
    },
    {
      "id": 199,
      "label": "Always-On Listening",
      "group": "WAKE",
      "cis": 3
    },
    {
      "id": 200,
      "label": "Wake-Word Enrollment",
      "group": "WAKE",
      "cis": 6
    },
    {
      "id": 201,
      "label": "Template Matching",
      "group": "WAKE",
      "cis": 13
    },
    {
      "id": 202,
      "label": "Template Correlation",
      "group": "WAKE",
      "cis": 12
    },
    {
      "id": 203,
      "label": "Feature Extraction",
      "group": "WAKE",
      "cis": 27
    },
    {
      "id": 204,
      "label": "Mean Subtraction",
      "group": "WAKE",
      "cis": 15
    },
    {
      "id": 205,
      "label": "Unit Normalization",
      "group": "WAKE",
      "cis": 14
    },
    {
      "id": 206,
      "label": "Dot Product Score",
      "group": "WAKE",
      "cis": 13
    },
    {
      "id": 207,
      "label": "Rolling Window",
      "group": "WAKE",
      "cis": 3
    },
    {
      "id": 208,
      "label": "Window Fill Percentage",
      "group": "WAKE",
      "cis": 2
    },
    {
      "id": 209,
      "label": "Detection Threshold",
      "group": "WAKE",
      "cis": 5
    },
    {
      "id": 210,
      "label": "False Accept",
      "group": "WAKE",
      "cis": 2
    },
    {
      "id": 211,
      "label": "False Reject",
      "group": "WAKE",
      "cis": 2
    },
    {
      "id": 212,
      "label": "Threshold Trade-Off",
      "group": "WAKE",
      "cis": 1
    },
    {
      "id": 213,
      "label": "Speaking Pace Sensitivity",
      "group": "WAKE",
      "cis": 1
    },
    {
      "id": 214,
      "label": "Single-Speaker Limits",
      "group": "WAKE",
      "cis": 2
    },
    {
      "id": 215,
      "label": "Trained Keyword Spotting",
      "group": "WAKE",
      "cis": 1
    },
    {
      "id": 216,
      "label": "MFCC Features",
      "group": "WAKE",
      "cis": 2
    },
    {
      "id": 217,
      "label": "Detector Self-Test",
      "group": "WAKE",
      "cis": 2
    },
    {
      "id": 218,
      "label": "Detector Math Test",
      "group": "WAKE",
      "cis": 1
    },
    {
      "id": 219,
      "label": "Wake Confirmation Beep",
      "group": "WAKE",
      "cis": 2
    },
    {
      "id": 220,
      "label": "Wake Cooldown",
      "group": "WAKE",
      "cis": 1
    },
    {
      "id": 221,
      "label": "Wi-Fi Connection",
      "group": "NET",
      "cis": 132
    },
    {
      "id": 222,
      "label": "Network Station Mode",
      "group": "NET",
      "cis": 1
    },
    {
      "id": 223,
      "label": "IP Address",
      "group": "NET",
      "cis": 128
    },
    {
      "id": 224,
      "label": "HTTP Protocol",
      "group": "NET",
      "cis": 74
    },
    {
      "id": 225,
      "label": "HTTP POST",
      "group": "NET",
      "cis": 53
    },
    {
      "id": 226,
      "label": "JSON",
      "group": "NET",
      "cis": 18
    },
    {
      "id": 227,
      "label": "REST Endpoint",
      "group": "NET",
      "cis": 1
    },
    {
      "id": 228,
      "label": "requests Library",
      "group": "NET",
      "cis": 8
    },
    {
      "id": 229,
      "label": "Chunked Audio Upload",
      "group": "NET",
      "cis": 4
    },
    {
      "id": 230,
      "label": "Audio Chunk Size",
      "group": "NET",
      "cis": 1
    },
    {
      "id": 231,
      "label": "Speech-to-Text Service",
      "group": "NET",
      "cis": 2
    },
    {
      "id": 232,
      "label": "Text-to-Speech Service",
      "group": "NET",
      "cis": 7
    },
    {
      "id": 233,
      "label": "WebSocket",
      "group": "NET",
      "cis": 3
    },
    {
      "id": 234,
      "label": "Streaming Audio",
      "group": "NET",
      "cis": 2
    },
    {
      "id": 235,
      "label": "Barge-In Interruption",
      "group": "NET",
      "cis": 1
    },
    {
      "id": 236,
      "label": "Authentication Token",
      "group": "NET",
      "cis": 6
    },
    {
      "id": 237,
      "label": "TLS Encryption",
      "group": "NET",
      "cis": 5
    },
    {
      "id": 238,
      "label": "HTTPS",
      "group": "NET",
      "cis": 4
    },
    {
      "id": 239,
      "label": "Certificate Handling",
      "group": "NET",
      "cis": 1
    },
    {
      "id": 240,
      "label": "Plain HTTP LAN Use",
      "group": "NET",
      "cis": 1
    },
    {
      "id": 241,
      "label": "Network Failure Handling",
      "group": "NET",
      "cis": 7
    },
    {
      "id": 242,
      "label": "Retry and Backoff",
      "group": "NET",
      "cis": 1
    },
    {
      "id": 243,
      "label": "Timeouts",
      "group": "NET",
      "cis": 1
    },
    {
      "id": 244,
      "label": "Offline Fallback",
      "group": "NET",
      "cis": 1
    },
    {
      "id": 245,
      "label": "Local Network",
      "group": "NET",
      "cis": 7
    },
    {
      "id": 246,
      "label": "mDNS Discovery",
      "group": "NET",
      "cis": 1
    },
    {
      "id": 247,
      "label": "MQTT Protocol",
      "group": "MQTT",
      "cis": 46
    },
    {
      "id": 248,
      "label": "Publish-Subscribe Pattern",
      "group": "MQTT",
      "cis": 32
    },
    {
      "id": 249,
      "label": "Request-Response Pattern",
      "group": "MQTT",
      "cis": 33
    },
    {
      "id": 250,
      "label": "MQTT Broker",
      "group": "MQTT",
      "cis": 11
    },
    {
      "id": 251,
      "label": "Mosquitto",
      "group": "MQTT",
      "cis": 2
    },
    {
      "id": 252,
      "label": "Publisher",
      "group": "MQTT",
      "cis": 10
    },
    {
      "id": 253,
      "label": "Subscriber",
      "group": "MQTT",
      "cis": 10
    },
    {
      "id": 254,
      "label": "Topic",
      "group": "MQTT",
      "cis": 8
    },
    {
      "id": 255,
      "label": "Topic Naming Scheme",
      "group": "MQTT",
      "cis": 2
    },
    {
      "id": 256,
      "label": "Topic Wildcards",
      "group": "MQTT",
      "cis": 1
    },
    {
      "id": 257,
      "label": "QoS Levels",
      "group": "MQTT",
      "cis": 2
    },
    {
      "id": 258,
      "label": "Retained Message",
      "group": "MQTT",
      "cis": 1
    },
    {
      "id": 259,
      "label": "Last Will",
      "group": "MQTT",
      "cis": 1
    },
    {
      "id": 260,
      "label": "umqtt Library",
      "group": "MQTT",
      "cis": 2
    },
    {
      "id": 261,
      "label": "check_msg Polling",
      "group": "MQTT",
      "cis": 1
    },
    {
      "id": 262,
      "label": "Keep-Alive",
      "group": "MQTT",
      "cis": 1
    },
    {
      "id": 263,
      "label": "MQTT Authentication",
      "group": "MQTT",
      "cis": 2
    },
    {
      "id": 264,
      "label": "Broker on Raspberry Pi",
      "group": "MQTT",
      "cis": 1
    },
    {
      "id": 265,
      "label": "Alert Message Format",
      "group": "MQTT",
      "cis": 3
    },
    {
      "id": 266,
      "label": "Device Status Topic",
      "group": "MQTT",
      "cis": 1
    },
    {
      "id": 267,
      "label": "Home Assistant",
      "group": "MQTT",
      "cis": 2
    },
    {
      "id": 268,
      "label": "Home Automation",
      "group": "MQTT",
      "cis": 1
    },
    {
      "id": 269,
      "label": "School Calendar",
      "group": "SCH",
      "cis": 33
    },
    {
      "id": 270,
      "label": "iCalendar Format",
      "group": "SCH",
      "cis": 18
    },
    {
      "id": 271,
      "label": "ICS Feed",
      "group": "SCH",
      "cis": 4
    },
    {
      "id": 272,
      "label": "Events JSON File",
      "group": "SCH",
      "cis": 13
    },
    {
      "id": 273,
      "label": "Event Parsing",
      "group": "SCH",
      "cis": 12
    },
    {
      "id": 274,
      "label": "Test Date Detection",
      "group": "SCH",
      "cis": 1
    },
    {
      "id": 275,
      "label": "Project Due Date",
      "group": "SCH",
      "cis": 1
    },
    {
      "id": 276,
      "label": "TEST and DUE Prefixes",
      "group": "SCH",
      "cis": 3
    },
    {
      "id": 277,
      "label": "Event Categories",
      "group": "SCH",
      "cis": 1
    },
    {
      "id": 278,
      "label": "Time Zones",
      "group": "SCH",
      "cis": 1
    },
    {
      "id": 279,
      "label": "Daily Briefing",
      "group": "SCH",
      "cis": 3
    },
    {
      "id": 280,
      "label": "Reminder",
      "group": "SCH",
      "cis": 2
    },
    {
      "id": 281,
      "label": "Upcoming Events Query",
      "group": "SCH",
      "cis": 5
    },
    {
      "id": 282,
      "label": "Calendar Polling",
      "group": "SCH",
      "cis": 1
    },
    {
      "id": 283,
      "label": "Server-Side Parsing",
      "group": "SCH",
      "cis": 1
    },
    {
      "id": 284,
      "label": "Per-School Customization",
      "group": "SCH",
      "cis": 1
    },
    {
      "id": 285,
      "label": "School Mascot Design",
      "group": "SCH",
      "cis": 1
    },
    {
      "id": 286,
      "label": "Custom Wake Phrase",
      "group": "SCH",
      "cis": 1
    },
    {
      "id": 287,
      "label": "Voice and Prompts",
      "group": "SCH",
      "cis": 2
    },
    {
      "id": 288,
      "label": "Language and Tone",
      "group": "SCH",
      "cis": 1
    },
    {
      "id": 289,
      "label": "Course Information",
      "group": "SCH",
      "cis": 1
    },
    {
      "id": 290,
      "label": "Google Calendar API",
      "group": "SCH",
      "cis": 1
    },
    {
      "id": 291,
      "label": "OAuth",
      "group": "SCH",
      "cis": 2
    },
    {
      "id": 292,
      "label": "Agent Configuration File",
      "group": "SCH",
      "cis": 2
    },
    {
      "id": 293,
      "label": "Privacy",
      "group": "PRIV",
      "cis": 23
    },
    {
      "id": 294,
      "label": "Consent",
      "group": "PRIV",
      "cis": 6
    },
    {
      "id": 295,
      "label": "Parent and School Approval",
      "group": "PRIV",
      "cis": 3
    },
    {
      "id": 296,
      "label": "Always-On Approval Process",
      "group": "PRIV",
      "cis": 2
    },
    {
      "id": 297,
      "label": "Data Minimization",
      "group": "PRIV",
      "cis": 4
    },
    {
      "id": 298,
      "label": "Data Retention",
      "group": "PRIV",
      "cis": 3
    },
    {
      "id": 299,
      "label": "Local Versus Cloud Processing",
      "group": "PRIV",
      "cis": 2
    },
    {
      "id": 300,
      "label": "Student Privacy Law",
      "group": "PRIV",
      "cis": 2
    },
    {
      "id": 301,
      "label": "Hardware Mute Switch",
      "group": "PRIV",
      "cis": 2
    },
    {
      "id": 302,
      "label": "Listening Indicator",
      "group": "PRIV",
      "cis": 2
    },
    {
      "id": 303,
      "label": "Audio Not Stored",
      "group": "PRIV",
      "cis": 1
    },
    {
      "id": 304,
      "label": "Transcript Handling",
      "group": "PRIV",
      "cis": 1
    },
    {
      "id": 305,
      "label": "Broker Exposure Risk",
      "group": "PRIV",
      "cis": 1
    },
    {
      "id": 306,
      "label": "Secrets Management",
      "group": "PRIV",
      "cis": 1
    },
    {
      "id": 307,
      "label": "Threat Model",
      "group": "PRIV",
      "cis": 4
    },
    {
      "id": 308,
      "label": "Prompt Injection",
      "group": "PRIV",
      "cis": 1
    },
    {
      "id": 309,
      "label": "Agent Permissions",
      "group": "PRIV",
      "cis": 1
    },
    {
      "id": 310,
      "label": "Privacy and Consent Plan",
      "group": "PRIV",
      "cis": 1
    },
    {
      "id": 311,
      "label": "Probe Programs",
      "group": "TEST",
      "cis": 6
    },
    {
      "id": 312,
      "label": "Self-Test Program",
      "group": "TEST",
      "cis": 5
    },
    {
      "id": 313,
      "label": "Wiring Verification",
      "group": "TEST",
      "cis": 4
    },
    {
      "id": 314,
      "label": "Logging",
      "group": "TEST",
      "cis": 3
    },
    {
      "id": 315,
      "label": "Serial Debugging",
      "group": "TEST",
      "cis": 1
    },
    {
      "id": 316,
      "label": "Frame Overrun Counter",
      "group": "TEST",
      "cis": 1
    },
    {
      "id": 317,
      "label": "Diagnosing Silent Microphone",
      "group": "TEST",
      "cis": 1
    },
    {
      "id": 318,
      "label": "Diagnosing Distorted Audio",
      "group": "TEST",
      "cis": 1
    },
    {
      "id": 319,
      "label": "Diagnosing Blank Display",
      "group": "TEST",
      "cis": 1
    },
    {
      "id": 320,
      "label": "System Integration",
      "group": "TEST",
      "cis": 7
    },
    {
      "id": 321,
      "label": "Capstone Project",
      "group": "TEST",
      "cis": 6
    },
    {
      "id": 322,
      "label": "Clap Detector",
      "group": "TEST",
      "cis": 1
    },
    {
      "id": 323,
      "label": "Classroom Noise Monitor",
      "group": "TEST",
      "cis": 1
    },
    {
      "id": 324,
      "label": "Study Timer Buddy",
      "group": "TEST",
      "cis": 1
    },
    {
      "id": 325,
      "label": "Homework Reminder Buddy",
      "group": "TEST",
      "cis": 1
    },
    {
      "id": 326,
      "label": "User Testing",
      "group": "TEST",
      "cis": 1
    }
  ],
  "edges": [
    {
      "from": 2,
      "to": 1
    },
    {
      "from": 3,
      "to": 1
    },
    {
      "from": 4,
      "to": 1
    },
    {
      "from": 4,
      "to": 3
    },
    {
      "from": 5,
      "to": 1
    },
    {
      "from": 6,
      "to": 1
    },
    {
      "from": 7,
      "to": 1
    },
    {
      "from": 7,
      "to": 5
    },
    {
      "from": 7,
      "to": 4
    },
    {
      "from": 8,
      "to": 7
    },
    {
      "from": 9,
      "to": 4
    },
    {
      "from": 9,
      "to": 8
    },
    {
      "from": 10,
      "to": 9
    },
    {
      "from": 11,
      "to": 10
    },
    {
      "from": 12,
      "to": 11
    },
    {
      "from": 12,
      "to": 13
    },
    {
      "from": 12,
      "to": 14
    },
    {
      "from": 12,
      "to": 15
    },
    {
      "from": 13,
      "to": 9
    },
    {
      "from": 14,
      "to": 13
    },
    {
      "from": 14,
      "to": 3
    },
    {
      "from": 15,
      "to": 14
    },
    {
      "from": 15,
      "to": 6
    },
    {
      "from": 15,
      "to": 4
    },
    {
      "from": 16,
      "to": 1
    },
    {
      "from": 17,
      "to": 16
    },
    {
      "from": 18,
      "to": 4
    },
    {
      "from": 18,
      "to": 9
    },
    {
      "from": 19,
      "to": 8
    },
    {
      "from": 19,
      "to": 9
    },
    {
      "from": 20,
      "to": 13
    },
    {
      "from": 21,
      "to": 14
    },
    {
      "from": 22,
      "to": 20
    },
    {
      "from": 24,
      "to": 23
    },
    {
      "from": 25,
      "to": 23
    },
    {
      "from": 26,
      "to": 25
    },
    {
      "from": 27,
      "to": 26
    },
    {
      "from": 28,
      "to": 23
    },
    {
      "from": 29,
      "to": 28
    },
    {
      "from": 30,
      "to": 29
    },
    {
      "from": 31,
      "to": 30
    },
    {
      "from": 32,
      "to": 31
    },
    {
      "from": 33,
      "to": 29
    },
    {
      "from": 34,
      "to": 23
    },
    {
      "from": 35,
      "to": 34
    },
    {
      "from": 36,
      "to": 35
    },
    {
      "from": 37,
      "to": 23
    },
    {
      "from": 38,
      "to": 37
    },
    {
      "from": 39,
      "to": 23
    },
    {
      "from": 40,
      "to": 28
    },
    {
      "from": 41,
      "to": 23
    },
    {
      "from": 42,
      "to": 41
    },
    {
      "from": 42,
      "to": 28
    },
    {
      "from": 43,
      "to": 23
    },
    {
      "from": 43,
      "to": 5
    },
    {
      "from": 44,
      "to": 43
    },
    {
      "from": 45,
      "to": 44
    },
    {
      "from": 46,
      "to": 44
    },
    {
      "from": 47,
      "to": 44
    },
    {
      "from": 47,
      "to": 34
    },
    {
      "from": 48,
      "to": 43
    },
    {
      "from": 49,
      "to": 43
    },
    {
      "from": 50,
      "to": 49
    },
    {
      "from": 51,
      "to": 52
    },
    {
      "from": 51,
      "to": 43
    },
    {
      "from": 52,
      "to": 107
    },
    {
      "from": 53,
      "to": 54
    },
    {
      "from": 53,
      "to": 43
    },
    {
      "from": 54,
      "to": 55
    },
    {
      "from": 55,
      "to": 107
    },
    {
      "from": 56,
      "to": 30
    },
    {
      "from": 57,
      "to": 43
    },
    {
      "from": 58,
      "to": 57
    },
    {
      "from": 59,
      "to": 43
    },
    {
      "from": 60,
      "to": 30
    },
    {
      "from": 60,
      "to": 57
    },
    {
      "from": 61,
      "to": 56
    },
    {
      "from": 62,
      "to": 7
    },
    {
      "from": 62,
      "to": 49
    },
    {
      "from": 62,
      "to": 51
    },
    {
      "from": 62,
      "to": 53
    },
    {
      "from": 62,
      "to": 56
    },
    {
      "from": 63,
      "to": 57
    },
    {
      "from": 64,
      "to": 59
    },
    {
      "from": 64,
      "to": 63
    },
    {
      "from": 65,
      "to": 30
    },
    {
      "from": 66,
      "to": 65
    },
    {
      "from": 66,
      "to": 50
    },
    {
      "from": 67,
      "to": 49
    },
    {
      "from": 68,
      "to": 67
    },
    {
      "from": 69,
      "to": 68
    },
    {
      "from": 69,
      "to": 34
    },
    {
      "from": 70,
      "to": 69
    },
    {
      "from": 70,
      "to": 67
    },
    {
      "from": 71,
      "to": 70
    },
    {
      "from": 71,
      "to": 66
    },
    {
      "from": 72,
      "to": 65
    },
    {
      "from": 72,
      "to": 70
    },
    {
      "from": 73,
      "to": 71
    },
    {
      "from": 73,
      "to": 72
    },
    {
      "from": 74,
      "to": 73
    },
    {
      "from": 75,
      "to": 73
    },
    {
      "from": 76,
      "to": 75
    },
    {
      "from": 76,
      "to": 74
    },
    {
      "from": 77,
      "to": 78
    },
    {
      "from": 77,
      "to": 73
    },
    {
      "from": 78,
      "to": 67
    },
    {
      "from": 79,
      "to": 49
    },
    {
      "from": 80,
      "to": 79
    },
    {
      "from": 81,
      "to": 80
    },
    {
      "from": 81,
      "to": 73
    },
    {
      "from": 82,
      "to": 73
    },
    {
      "from": 82,
      "to": 68
    },
    {
      "from": 83,
      "to": 82
    },
    {
      "from": 84,
      "to": 75
    },
    {
      "from": 84,
      "to": 33
    },
    {
      "from": 85,
      "to": 41
    },
    {
      "from": 85,
      "to": 74
    },
    {
      "from": 86,
      "to": 85
    },
    {
      "from": 87,
      "to": 79
    },
    {
      "from": 87,
      "to": 76
    },
    {
      "from": 88,
      "to": 68
    },
    {
      "from": 89,
      "to": 50
    },
    {
      "from": 89,
      "to": 30
    },
    {
      "from": 90,
      "to": 72
    },
    {
      "from": 90,
      "to": 84
    },
    {
      "from": 91,
      "to": 56
    },
    {
      "from": 92,
      "to": 56
    },
    {
      "from": 93,
      "to": 56
    },
    {
      "from": 94,
      "to": 56
    },
    {
      "from": 94,
      "to": 33
    },
    {
      "from": 95,
      "to": 61
    },
    {
      "from": 95,
      "to": 31
    },
    {
      "from": 96,
      "to": 94
    },
    {
      "from": 96,
      "to": 33
    },
    {
      "from": 97,
      "to": 91
    },
    {
      "from": 97,
      "to": 92
    },
    {
      "from": 97,
      "to": 93
    },
    {
      "from": 98,
      "to": 23
    },
    {
      "from": 98,
      "to": 91
    },
    {
      "from": 99,
      "to": 98
    },
    {
      "from": 99,
      "to": 91
    },
    {
      "from": 100,
      "to": 98
    },
    {
      "from": 100,
      "to": 33
    },
    {
      "from": 101,
      "to": 100
    },
    {
      "from": 102,
      "to": 95
    },
    {
      "from": 102,
      "to": 32
    },
    {
      "from": 103,
      "to": 99
    },
    {
      "from": 103,
      "to": 76
    },
    {
      "from": 104,
      "to": 103
    },
    {
      "from": 105,
      "to": 97
    },
    {
      "from": 105,
      "to": 76
    },
    {
      "from": 106,
      "to": 92
    },
    {
      "from": 106,
      "to": 93
    },
    {
      "from": 106,
      "to": 53
    },
    {
      "from": 108,
      "to": 107
    },
    {
      "from": 109,
      "to": 107
    },
    {
      "from": 110,
      "to": 107
    },
    {
      "from": 111,
      "to": 110
    },
    {
      "from": 111,
      "to": 108
    },
    {
      "from": 112,
      "to": 110
    },
    {
      "from": 112,
      "to": 109
    },
    {
      "from": 113,
      "to": 111
    },
    {
      "from": 113,
      "to": 108
    },
    {
      "from": 114,
      "to": 113
    },
    {
      "from": 115,
      "to": 110
    },
    {
      "from": 115,
      "to": 112
    },
    {
      "from": 116,
      "to": 115
    },
    {
      "from": 116,
      "to": 30
    },
    {
      "from": 117,
      "to": 116
    },
    {
      "from": 118,
      "to": 116
    },
    {
      "from": 119,
      "to": 116
    },
    {
      "from": 120,
      "to": 116
    },
    {
      "from": 120,
      "to": 29
    },
    {
      "from": 121,
      "to": 120
    },
    {
      "from": 121,
      "to": 51
    },
    {
      "from": 122,
      "to": 120
    },
    {
      "from": 122,
      "to": 53
    },
    {
      "from": 123,
      "to": 121
    },
    {
      "from": 123,
      "to": 37
    },
    {
      "from": 124,
      "to": 123
    },
    {
      "from": 125,
      "to": 123
    },
    {
      "from": 125,
      "to": 111
    },
    {
      "from": 126,
      "to": 125
    },
    {
      "from": 126,
      "to": 111
    },
    {
      "from": 127,
      "to": 116
    },
    {
      "from": 128,
      "to": 127
    },
    {
      "from": 128,
      "to": 118
    },
    {
      "from": 129,
      "to": 122
    },
    {
      "from": 129,
      "to": 108
    },
    {
      "from": 130,
      "to": 129
    },
    {
      "from": 131,
      "to": 122
    },
    {
      "from": 131,
      "to": 132
    },
    {
      "from": 132,
      "to": 41
    },
    {
      "from": 132,
      "to": 110
    },
    {
      "from": 133,
      "to": 53
    },
    {
      "from": 133,
      "to": 30
    },
    {
      "from": 134,
      "to": 121
    },
    {
      "from": 134,
      "to": 122
    },
    {
      "from": 135,
      "to": 134
    },
    {
      "from": 135,
      "to": 133
    },
    {
      "from": 136,
      "to": 109
    },
    {
      "from": 136,
      "to": 112
    },
    {
      "from": 137,
      "to": 110
    },
    {
      "from": 138,
      "to": 108
    },
    {
      "from": 138,
      "to": 137
    },
    {
      "from": 139,
      "to": 138
    },
    {
      "from": 140,
      "to": 139
    },
    {
      "from": 140,
      "to": 110
    },
    {
      "from": 141,
      "to": 140
    },
    {
      "from": 142,
      "to": 141
    },
    {
      "from": 142,
      "to": 125
    },
    {
      "from": 143,
      "to": 141
    },
    {
      "from": 144,
      "to": 143
    },
    {
      "from": 144,
      "to": 111
    },
    {
      "from": 144,
      "to": 142
    },
    {
      "from": 145,
      "to": 143
    },
    {
      "from": 146,
      "to": 145
    },
    {
      "from": 146,
      "to": 137
    },
    {
      "from": 147,
      "to": 141
    },
    {
      "from": 148,
      "to": 147
    },
    {
      "from": 149,
      "to": 147
    },
    {
      "from": 150,
      "to": 141
    },
    {
      "from": 151,
      "to": 141
    },
    {
      "from": 152,
      "to": 141
    },
    {
      "from": 153,
      "to": 145
    },
    {
      "from": 154,
      "to": 145
    },
    {
      "from": 155,
      "to": 154
    },
    {
      "from": 155,
      "to": 153
    },
    {
      "from": 156,
      "to": 125
    },
    {
      "from": 156,
      "to": 109
    },
    {
      "from": 157,
      "to": 156
    },
    {
      "from": 158,
      "to": 145
    },
    {
      "from": 158,
      "to": 73
    },
    {
      "from": 159,
      "to": 156
    },
    {
      "from": 159,
      "to": 73
    },
    {
      "from": 160,
      "to": 125
    },
    {
      "from": 161,
      "to": 141
    },
    {
      "from": 162,
      "to": 145
    },
    {
      "from": 162,
      "to": 144
    },
    {
      "from": 163,
      "to": 141
    },
    {
      "from": 163,
      "to": 23
    },
    {
      "from": 164,
      "to": 163
    },
    {
      "from": 165,
      "to": 164
    },
    {
      "from": 165,
      "to": 46
    },
    {
      "from": 166,
      "to": 165
    },
    {
      "from": 166,
      "to": 141
    },
    {
      "from": 166,
      "to": 150
    },
    {
      "from": 166,
      "to": 151
    },
    {
      "from": 167,
      "to": 37
    },
    {
      "from": 168,
      "to": 167
    },
    {
      "from": 168,
      "to": 38
    },
    {
      "from": 169,
      "to": 35
    },
    {
      "from": 170,
      "to": 169
    },
    {
      "from": 170,
      "to": 123
    },
    {
      "from": 171,
      "to": 46
    },
    {
      "from": 172,
      "to": 171
    },
    {
      "from": 173,
      "to": 172
    },
    {
      "from": 174,
      "to": 172
    },
    {
      "from": 174,
      "to": 173
    },
    {
      "from": 175,
      "to": 126
    },
    {
      "from": 175,
      "to": 174
    },
    {
      "from": 176,
      "to": 126
    },
    {
      "from": 177,
      "to": 45
    },
    {
      "from": 177,
      "to": 176
    },
    {
      "from": 178,
      "to": 46
    },
    {
      "from": 178,
      "to": 167
    },
    {
      "from": 179,
      "to": 178
    },
    {
      "from": 180,
      "to": 174
    },
    {
      "from": 181,
      "to": 166
    },
    {
      "from": 181,
      "to": 163
    },
    {
      "from": 181,
      "to": 174
    },
    {
      "from": 182,
      "to": 150
    },
    {
      "from": 182,
      "to": 169
    },
    {
      "from": 183,
      "to": 156
    },
    {
      "from": 184,
      "to": 156
    },
    {
      "from": 185,
      "to": 183
    },
    {
      "from": 185,
      "to": 184
    },
    {
      "from": 185,
      "to": 157
    },
    {
      "from": 186,
      "to": 183
    },
    {
      "from": 186,
      "to": 184
    },
    {
      "from": 187,
      "to": 186
    },
    {
      "from": 188,
      "to": 185
    },
    {
      "from": 188,
      "to": 40
    },
    {
      "from": 189,
      "to": 136
    },
    {
      "from": 189,
      "to": 188
    },
    {
      "from": 190,
      "to": 185
    },
    {
      "from": 191,
      "to": 56
    },
    {
      "from": 191,
      "to": 121
    },
    {
      "from": 192,
      "to": 191
    },
    {
      "from": 192,
      "to": 123
    },
    {
      "from": 193,
      "to": 192
    },
    {
      "from": 193,
      "to": 187
    },
    {
      "from": 194,
      "to": 187
    },
    {
      "from": 194,
      "to": 193
    },
    {
      "from": 195,
      "to": 188
    },
    {
      "from": 195,
      "to": 40
    },
    {
      "from": 196,
      "to": 183
    },
    {
      "from": 196,
      "to": 190
    },
    {
      "from": 197,
      "to": 194
    },
    {
      "from": 197,
      "to": 191
    },
    {
      "from": 198,
      "to": 197
    },
    {
      "from": 199,
      "to": 197
    },
    {
      "from": 199,
      "to": 17
    },
    {
      "from": 200,
      "to": 198
    },
    {
      "from": 200,
      "to": 203
    },
    {
      "from": 200,
      "to": 92
    },
    {
      "from": 201,
      "to": 197
    },
    {
      "from": 202,
      "to": 201
    },
    {
      "from": 202,
      "to": 206
    },
    {
      "from": 203,
      "to": 155
    },
    {
      "from": 203,
      "to": 125
    },
    {
      "from": 204,
      "to": 203
    },
    {
      "from": 205,
      "to": 204
    },
    {
      "from": 206,
      "to": 205
    },
    {
      "from": 207,
      "to": 203
    },
    {
      "from": 207,
      "to": 124
    },
    {
      "from": 208,
      "to": 207
    },
    {
      "from": 208,
      "to": 200
    },
    {
      "from": 209,
      "to": 202
    },
    {
      "from": 209,
      "to": 187
    },
    {
      "from": 210,
      "to": 209
    },
    {
      "from": 211,
      "to": 209
    },
    {
      "from": 212,
      "to": 210
    },
    {
      "from": 212,
      "to": 211
    },
    {
      "from": 213,
      "to": 208
    },
    {
      "from": 213,
      "to": 202
    },
    {
      "from": 214,
      "to": 200
    },
    {
      "from": 214,
      "to": 202
    },
    {
      "from": 215,
      "to": 202
    },
    {
      "from": 215,
      "to": 214
    },
    {
      "from": 215,
      "to": 216
    },
    {
      "from": 216,
      "to": 203
    },
    {
      "from": 216,
      "to": 153
    },
    {
      "from": 217,
      "to": 202
    },
    {
      "from": 217,
      "to": 175
    },
    {
      "from": 218,
      "to": 217
    },
    {
      "from": 219,
      "to": 197
    },
    {
      "from": 219,
      "to": 129
    },
    {
      "from": 220,
      "to": 219
    },
    {
      "from": 220,
      "to": 134
    },
    {
      "from": 221,
      "to": 48
    },
    {
      "from": 221,
      "to": 29
    },
    {
      "from": 222,
      "to": 221
    },
    {
      "from": 223,
      "to": 221
    },
    {
      "from": 224,
      "to": 223
    },
    {
      "from": 225,
      "to": 224
    },
    {
      "from": 226,
      "to": 23
    },
    {
      "from": 227,
      "to": 224
    },
    {
      "from": 227,
      "to": 226
    },
    {
      "from": 228,
      "to": 225
    },
    {
      "from": 228,
      "to": 27
    },
    {
      "from": 229,
      "to": 225
    },
    {
      "from": 229,
      "to": 192
    },
    {
      "from": 229,
      "to": 34
    },
    {
      "from": 230,
      "to": 229
    },
    {
      "from": 230,
      "to": 123
    },
    {
      "from": 231,
      "to": 229
    },
    {
      "from": 231,
      "to": 9
    },
    {
      "from": 232,
      "to": 9
    },
    {
      "from": 232,
      "to": 131
    },
    {
      "from": 233,
      "to": 224
    },
    {
      "from": 234,
      "to": 233
    },
    {
      "from": 234,
      "to": 125
    },
    {
      "from": 235,
      "to": 234
    },
    {
      "from": 235,
      "to": 134
    },
    {
      "from": 236,
      "to": 224
    },
    {
      "from": 237,
      "to": 224
    },
    {
      "from": 238,
      "to": 237
    },
    {
      "from": 238,
      "to": 34
    },
    {
      "from": 239,
      "to": 238
    },
    {
      "from": 240,
      "to": 224
    },
    {
      "from": 240,
      "to": 245
    },
    {
      "from": 241,
      "to": 228
    },
    {
      "from": 241,
      "to": 39
    },
    {
      "from": 242,
      "to": 241
    },
    {
      "from": 242,
      "to": 33
    },
    {
      "from": 243,
      "to": 241
    },
    {
      "from": 244,
      "to": 241
    },
    {
      "from": 244,
      "to": 99
    },
    {
      "from": 245,
      "to": 223
    },
    {
      "from": 246,
      "to": 245
    },
    {
      "from": 247,
      "to": 223
    },
    {
      "from": 248,
      "to": 247
    },
    {
      "from": 248,
      "to": 249
    },
    {
      "from": 249,
      "to": 225
    },
    {
      "from": 250,
      "to": 247
    },
    {
      "from": 250,
      "to": 248
    },
    {
      "from": 251,
      "to": 250
    },
    {
      "from": 251,
      "to": 6
    },
    {
      "from": 252,
      "to": 248
    },
    {
      "from": 253,
      "to": 248
    },
    {
      "from": 254,
      "to": 252
    },
    {
      "from": 254,
      "to": 253
    },
    {
      "from": 255,
      "to": 254
    },
    {
      "from": 256,
      "to": 254
    },
    {
      "from": 257,
      "to": 250
    },
    {
      "from": 257,
      "to": 241
    },
    {
      "from": 258,
      "to": 254
    },
    {
      "from": 258,
      "to": 257
    },
    {
      "from": 259,
      "to": 250
    },
    {
      "from": 259,
      "to": 241
    },
    {
      "from": 260,
      "to": 247
    },
    {
      "from": 260,
      "to": 27
    },
    {
      "from": 260,
      "to": 221
    },
    {
      "from": 261,
      "to": 260
    },
    {
      "from": 261,
      "to": 101
    },
    {
      "from": 262,
      "to": 250
    },
    {
      "from": 262,
      "to": 33
    },
    {
      "from": 263,
      "to": 250
    },
    {
      "from": 263,
      "to": 236
    },
    {
      "from": 264,
      "to": 251
    },
    {
      "from": 265,
      "to": 254
    },
    {
      "from": 265,
      "to": 226
    },
    {
      "from": 266,
      "to": 255
    },
    {
      "from": 266,
      "to": 252
    },
    {
      "from": 267,
      "to": 250
    },
    {
      "from": 267,
      "to": 6
    },
    {
      "from": 268,
      "to": 267
    },
    {
      "from": 268,
      "to": 253
    },
    {
      "from": 269,
      "to": 18
    },
    {
      "from": 270,
      "to": 269
    },
    {
      "from": 271,
      "to": 270
    },
    {
      "from": 271,
      "to": 224
    },
    {
      "from": 272,
      "to": 269
    },
    {
      "from": 272,
      "to": 226
    },
    {
      "from": 273,
      "to": 272
    },
    {
      "from": 273,
      "to": 270
    },
    {
      "from": 274,
      "to": 273
    },
    {
      "from": 274,
      "to": 276
    },
    {
      "from": 275,
      "to": 273
    },
    {
      "from": 275,
      "to": 276
    },
    {
      "from": 276,
      "to": 273
    },
    {
      "from": 277,
      "to": 270
    },
    {
      "from": 278,
      "to": 273
    },
    {
      "from": 279,
      "to": 281
    },
    {
      "from": 279,
      "to": 232
    },
    {
      "from": 280,
      "to": 279
    },
    {
      "from": 280,
      "to": 265
    },
    {
      "from": 281,
      "to": 273
    },
    {
      "from": 282,
      "to": 271
    },
    {
      "from": 282,
      "to": 33
    },
    {
      "from": 283,
      "to": 271
    },
    {
      "from": 283,
      "to": 9
    },
    {
      "from": 284,
      "to": 86
    },
    {
      "from": 284,
      "to": 292
    },
    {
      "from": 285,
      "to": 86
    },
    {
      "from": 285,
      "to": 88
    },
    {
      "from": 286,
      "to": 198
    },
    {
      "from": 286,
      "to": 200
    },
    {
      "from": 287,
      "to": 232
    },
    {
      "from": 287,
      "to": 131
    },
    {
      "from": 288,
      "to": 287
    },
    {
      "from": 289,
      "to": 269
    },
    {
      "from": 289,
      "to": 20
    },
    {
      "from": 290,
      "to": 271
    },
    {
      "from": 290,
      "to": 291
    },
    {
      "from": 291,
      "to": 238
    },
    {
      "from": 291,
      "to": 236
    },
    {
      "from": 292,
      "to": 40
    },
    {
      "from": 292,
      "to": 9
    },
    {
      "from": 293,
      "to": 1
    },
    {
      "from": 294,
      "to": 293
    },
    {
      "from": 295,
      "to": 294
    },
    {
      "from": 296,
      "to": 295
    },
    {
      "from": 296,
      "to": 199
    },
    {
      "from": 297,
      "to": 293
    },
    {
      "from": 298,
      "to": 297
    },
    {
      "from": 299,
      "to": 293
    },
    {
      "from": 299,
      "to": 3
    },
    {
      "from": 299,
      "to": 4
    },
    {
      "from": 300,
      "to": 293
    },
    {
      "from": 300,
      "to": 294
    },
    {
      "from": 301,
      "to": 135
    },
    {
      "from": 301,
      "to": 293
    },
    {
      "from": 302,
      "to": 104
    },
    {
      "from": 302,
      "to": 293
    },
    {
      "from": 303,
      "to": 298
    },
    {
      "from": 303,
      "to": 123
    },
    {
      "from": 304,
      "to": 298
    },
    {
      "from": 304,
      "to": 231
    },
    {
      "from": 305,
      "to": 263
    },
    {
      "from": 305,
      "to": 307
    },
    {
      "from": 306,
      "to": 40
    },
    {
      "from": 306,
      "to": 236
    },
    {
      "from": 307,
      "to": 293
    },
    {
      "from": 307,
      "to": 245
    },
    {
      "from": 308,
      "to": 14
    },
    {
      "from": 308,
      "to": 307
    },
    {
      "from": 309,
      "to": 22
    },
    {
      "from": 309,
      "to": 307
    },
    {
      "from": 310,
      "to": 296
    },
    {
      "from": 310,
      "to": 299
    },
    {
      "from": 310,
      "to": 300
    },
    {
      "from": 310,
      "to": 301
    },
    {
      "from": 310,
      "to": 302
    },
    {
      "from": 311,
      "to": 29
    },
    {
      "from": 312,
      "to": 311
    },
    {
      "from": 312,
      "to": 60
    },
    {
      "from": 313,
      "to": 312
    },
    {
      "from": 314,
      "to": 39
    },
    {
      "from": 315,
      "to": 25
    },
    {
      "from": 315,
      "to": 314
    },
    {
      "from": 316,
      "to": 175
    },
    {
      "from": 316,
      "to": 314
    },
    {
      "from": 317,
      "to": 313
    },
    {
      "from": 317,
      "to": 121
    },
    {
      "from": 318,
      "to": 136
    },
    {
      "from": 318,
      "to": 313
    },
    {
      "from": 319,
      "to": 313
    },
    {
      "from": 319,
      "to": 66
    },
    {
      "from": 320,
      "to": 99
    },
    {
      "from": 320,
      "to": 76
    },
    {
      "from": 320,
      "to": 191
    },
    {
      "from": 320,
      "to": 10
    },
    {
      "from": 320,
      "to": 225
    },
    {
      "from": 321,
      "to": 320
    },
    {
      "from": 322,
      "to": 156
    },
    {
      "from": 322,
      "to": 187
    },
    {
      "from": 322,
      "to": 321
    },
    {
      "from": 323,
      "to": 159
    },
    {
      "from": 323,
      "to": 157
    },
    {
      "from": 323,
      "to": 321
    },
    {
      "from": 324,
      "to": 33
    },
    {
      "from": 324,
      "to": 99
    },
    {
      "from": 324,
      "to": 321
    },
    {
      "from": 324,
      "to": 232
    },
    {
      "from": 325,
      "to": 280
    },
    {
      "from": 325,
      "to": 281
    },
    {
      "from": 325,
      "to": 321
    },
    {
      "from": 326,
      "to": 321
    }
  ]
}