{
  "id": "2511gemma-tidy-0001-0000-000000000001",
  "revision": 0,
  "last_node_id": 38,
  "last_link_id": 36,
  "nodes": [
    {
      "id": 1,
      "type": "UNETLoader",
      "pos": [
        60,
        980
      ],
      "size": [
        420,
        82
      ],
      "flags": {},
      "order": 0,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            1
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "UNETLoader"
      },
      "widgets_values": [
        "qwen_image_edit_2511_bf16.safetensors",
        "default"
      ],
      "title": "Load DiT: Qwen-Image-Edit-2511"
    },
    {
      "id": 2,
      "type": "LoraLoaderModelOnly",
      "pos": [
        60,
        1100
      ],
      "size": [
        420,
        82
      ],
      "flags": {},
      "order": 1,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 1
        }
      ],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            2
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "LoraLoaderModelOnly"
      },
      "widgets_values": [
        "Qwen-Image-Edit-2511-Lightning-8steps-V1.0-fp32.safetensors",
        1.0
      ],
      "title": "Load Lightning 8-step LoRA"
    },
    {
      "id": 3,
      "type": "ModelSamplingAuraFlow",
      "pos": [
        60,
        1220
      ],
      "size": [
        420,
        58
      ],
      "flags": {},
      "order": 2,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 2
        }
      ],
      "outputs": [
        {
          "name": "MODEL",
          "type": "MODEL",
          "links": [
            3,
            4
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "ModelSamplingAuraFlow"
      },
      "widgets_values": [
        3.0
      ],
      "title": "Sampling shift"
    },
    {
      "id": 4,
      "type": "CLIPLoader",
      "pos": [
        60,
        1320
      ],
      "size": [
        420,
        106
      ],
      "flags": {},
      "order": 3,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "CLIP",
          "type": "CLIP",
          "links": [
            5
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "CLIPLoader"
      },
      "widgets_values": [
        "qwen_2.5_vl_7b_bf16.safetensors",
        "qwen_image",
        "default"
      ],
      "title": "Load Qwen2.5-VL text encoder"
    },
    {
      "id": 5,
      "type": "VAELoader",
      "pos": [
        60,
        1470
      ],
      "size": [
        420,
        58
      ],
      "flags": {},
      "order": 4,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "VAE",
          "type": "VAE",
          "links": [
            7,
            9,
            10
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "VAELoader"
      },
      "widgets_values": [
        "qwen_image_vae.safetensors"
      ],
      "title": "Load Qwen Image VAE"
    },
    {
      "id": 6,
      "type": "LoadImage",
      "pos": [
        40,
        100
      ],
      "size": [
        420,
        330
      ],
      "flags": {},
      "order": 5,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            11,
            15
          ]
        },
        {
          "name": "MASK",
          "type": "MASK",
          "links": []
        }
      ],
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "widgets_values": [
        "input.png",
        "image"
      ],
      "title": "Input image 1"
    },
    {
      "id": 20,
      "type": "LoadImage",
      "pos": [
        40,
        470
      ],
      "size": [
        420,
        330
      ],
      "flags": {},
      "order": 6,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            16,
            27
          ]
        },
        {
          "name": "MASK",
          "type": "MASK",
          "links": []
        }
      ],
      "properties": {
        "Node name for S&R": "LoadImage"
      },
      "widgets_values": [
        "input2.png",
        "image"
      ],
      "title": "Input image 2 (reference)"
    },
    {
      "id": 7,
      "type": "FluxKontextImageScale",
      "pos": [
        40,
        840
      ],
      "size": [
        300,
        26
      ],
      "flags": {},
      "order": 7,
      "mode": 0,
      "inputs": [
        {
          "name": "image",
          "type": "IMAGE",
          "link": 11
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            12,
            14
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "FluxKontextImageScale"
      },
      "widgets_values": [],
      "title": "Snap image 1 to output res"
    },
    {
      "id": 30,
      "type": "CLIPLoader",
      "pos": [
        520,
        100
      ],
      "size": [
        420,
        106
      ],
      "flags": {},
      "order": 8,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "CLIP",
          "type": "CLIP",
          "links": [
            17
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "CLIPLoader"
      },
      "widgets_values": [
        "gemma4_12b_qwen_image_edit_2511_pe.safetensors",
        "stable_diffusion",
        "default"
      ],
      "title": "Load Gemma4-12B rewriter"
    },
    {
      "id": 31,
      "type": "BatchImagesNode",
      "pos": [
        520,
        610
      ],
      "size": [
        340,
        120
      ],
      "flags": {},
      "order": 9,
      "mode": 0,
      "inputs": [
        {
          "name": "images.image0",
          "type": "IMAGE",
          "link": 15,
          "shape": 7
        },
        {
          "name": "images.image1",
          "type": "IMAGE",
          "link": 16,
          "shape": 7
        },
        {
          "name": "images.image2",
          "type": "IMAGE",
          "link": null,
          "shape": 7
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            18
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "BatchImagesNode"
      },
      "widgets_values": [],
      "title": "Batch images for Gemma"
    },
    {
      "id": 32,
      "type": "TextGenerate",
      "pos": [
        1000,
        100
      ],
      "size": [
        480,
        320
      ],
      "flags": {},
      "order": 10,
      "mode": 0,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 17
        },
        {
          "name": "prompt",
          "type": "STRING",
          "link": 35,
          "widget": {
            "name": "prompt"
          }
        },
        {
          "name": "image",
          "type": "IMAGE",
          "link": 18,
          "shape": 7
        }
      ],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            20,
            21
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "TextGenerate"
      },
      "widgets_values": [
        "",
        1024,
        "on",
        0.7,
        64,
        0.95,
        0.05,
        1.05,
        7,
        0.0,
        false,
        true
      ],
      "title": "Gemma prompt rewrite"
    },
    {
      "id": 34,
      "type": "PreviewAny",
      "pos": [
        1000,
        460
      ],
      "size": [
        480,
        140
      ],
      "flags": {},
      "order": 12,
      "mode": 0,
      "inputs": [
        {
          "name": "source",
          "type": "*",
          "link": 21
        }
      ],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": []
        }
      ],
      "properties": {
        "Node name for S&R": "PreviewAny"
      },
      "widgets_values": [],
      "title": "Preview rewritten prompt"
    },
    {
      "id": 9,
      "type": "TextEncodeQwenImageEditPlus",
      "pos": [
        520,
        980
      ],
      "size": [
        420,
        220
      ],
      "flags": {},
      "order": 13,
      "mode": 0,
      "inputs": [
        {
          "name": "clip",
          "type": "CLIP",
          "link": 5
        },
        {
          "name": "prompt",
          "type": "STRING",
          "link": 20,
          "widget": {
            "name": "prompt"
          }
        },
        {
          "name": "vae",
          "type": "VAE",
          "link": 7,
          "shape": 7
        },
        {
          "name": "image1",
          "type": "IMAGE",
          "link": 12,
          "shape": 7
        },
        {
          "name": "image2",
          "type": "IMAGE",
          "link": 27,
          "shape": 7
        },
        {
          "name": "image3",
          "type": "IMAGE",
          "link": null,
          "shape": 7
        }
      ],
      "outputs": [
        {
          "name": "CONDITIONING",
          "type": "CONDITIONING",
          "links": [
            22
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "TextEncodeQwenImageEditPlus"
      },
      "widgets_values": [
        ""
      ],
      "title": "Edit conditioning (multi-image)"
    },
    {
      "id": 11,
      "type": "VAEEncode",
      "pos": [
        520,
        1250
      ],
      "size": [
        300,
        46
      ],
      "flags": {},
      "order": 15,
      "mode": 0,
      "inputs": [
        {
          "name": "pixels",
          "type": "IMAGE",
          "link": 14
        },
        {
          "name": "vae",
          "type": "VAE",
          "link": 9
        }
      ],
      "outputs": [
        {
          "name": "LATENT",
          "type": "LATENT",
          "links": [
            24
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "VAEEncode"
      },
      "widgets_values": [],
      "title": "Encode image 1 to latent"
    },
    {
      "id": 12,
      "type": "RandomNoise",
      "pos": [
        520,
        1340
      ],
      "size": [
        300,
        82
      ],
      "flags": {},
      "order": 16,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "NOISE",
          "type": "NOISE",
          "links": [
            25
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "RandomNoise"
      },
      "widgets_values": [
        12345,
        "randomize"
      ],
      "title": "Noise seed"
    },
    {
      "id": 13,
      "type": "KSamplerSelect",
      "pos": [
        520,
        1460
      ],
      "size": [
        300,
        58
      ],
      "flags": {},
      "order": 17,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "SAMPLER",
          "type": "SAMPLER",
          "links": [
            26
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "KSamplerSelect"
      },
      "widgets_values": [
        "euler"
      ],
      "title": "Sampler select"
    },
    {
      "id": 14,
      "type": "BasicScheduler",
      "pos": [
        520,
        1550
      ],
      "size": [
        300,
        106
      ],
      "flags": {},
      "order": 18,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 3
        }
      ],
      "outputs": [
        {
          "name": "SIGMAS",
          "type": "SIGMAS",
          "links": [
            29
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "BasicScheduler"
      },
      "widgets_values": [
        "simple",
        8,
        1.0
      ],
      "title": "Scheduler (8 steps)"
    },
    {
      "id": 15,
      "type": "BasicGuider",
      "pos": [
        1000,
        980
      ],
      "size": [
        300,
        98
      ],
      "flags": {},
      "order": 19,
      "mode": 0,
      "inputs": [
        {
          "name": "model",
          "type": "MODEL",
          "link": 4
        },
        {
          "name": "conditioning",
          "type": "CONDITIONING",
          "link": 22
        }
      ],
      "outputs": [
        {
          "name": "GUIDER",
          "type": "GUIDER",
          "links": [
            30
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "BasicGuider"
      },
      "widgets_values": [],
      "title": "Guider"
    },
    {
      "id": 16,
      "type": "SamplerCustomAdvanced",
      "pos": [
        1000,
        1120
      ],
      "size": [
        300,
        122
      ],
      "flags": {},
      "order": 20,
      "mode": 0,
      "inputs": [
        {
          "name": "noise",
          "type": "NOISE",
          "link": 25
        },
        {
          "name": "guider",
          "type": "GUIDER",
          "link": 30
        },
        {
          "name": "sampler",
          "type": "SAMPLER",
          "link": 26
        },
        {
          "name": "sigmas",
          "type": "SIGMAS",
          "link": 29
        },
        {
          "name": "latent_image",
          "type": "LATENT",
          "link": 24
        }
      ],
      "outputs": [
        {
          "name": "output",
          "type": "LATENT",
          "links": [
            31
          ]
        },
        {
          "name": "denoised_output",
          "type": "LATENT",
          "links": []
        }
      ],
      "properties": {
        "Node name for S&R": "SamplerCustomAdvanced"
      },
      "widgets_values": [],
      "title": "Sample"
    },
    {
      "id": 17,
      "type": "VAEDecode",
      "pos": [
        1000,
        1290
      ],
      "size": [
        300,
        46
      ],
      "flags": {},
      "order": 21,
      "mode": 0,
      "inputs": [
        {
          "name": "samples",
          "type": "LATENT",
          "link": 31
        },
        {
          "name": "vae",
          "type": "VAE",
          "link": 10
        }
      ],
      "outputs": [
        {
          "name": "IMAGE",
          "type": "IMAGE",
          "links": [
            32
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "VAEDecode"
      },
      "widgets_values": [],
      "title": "Decode latent to image"
    },
    {
      "id": 18,
      "type": "SaveImage",
      "pos": [
        1000,
        1380
      ],
      "size": [
        460,
        400
      ],
      "flags": {},
      "order": 22,
      "mode": 0,
      "inputs": [
        {
          "name": "images",
          "type": "IMAGE",
          "link": 32
        }
      ],
      "outputs": [],
      "properties": {
        "Node name for S&R": "SaveImage"
      },
      "widgets_values": [
        "qwen_edit_2511_gemma"
      ],
      "title": "Save result image"
    },
    {
      "id": 35,
      "type": "PrimitiveStringMultiline",
      "pos": [
        520,
        250
      ],
      "size": [
        420,
        30
      ],
      "flags": {
        "collapsed": true
      },
      "order": 100,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            33
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "PrimitiveStringMultiline"
      },
      "widgets_values": [
        "# Edit Prompt Enhancer\nYou are a professional edit prompt enhancer. Your task is to generate a direct and specific edit prompt based on the user-provided instruction and the image input conditions.  \nPlease strictly follow the enhancing rules below:\n## 1. General Principles\n- Keep the enhanced prompt **direct and specific**.  \n- If the instruction is contradictory, vague, or unachievable, prioritize reasonable inference and correction, and supplement details when necessary.  \n- Keep the core intention of the original instruction unchanged, only enhancing its clarity, rationality, and visual feasibility.  \n- All added objects or modifications must align with the logic and style of the edited input image’s overall scene.  \n## 2. Task-Type Handling Rules\n### 1. Add, Delete, Replace Tasks\n- If the instruction is clear (already includes task type, target entity, position, quantity, attributes), preserve the original intent and only refine the grammar.  \n- If the description is vague, supplement with minimal but sufficient details (category, color, size, orientation, position, etc.). For example:  \n    > Original: \"Add an animal\"  \n    > Rewritten: \"Add a light-gray cat in the bottom-right corner, sitting and facing the camera\"  \n- Remove meaningless instructions: e.g., \"Add 0 objects\" should be ignored or flagged as invalid.  \n- For replacement tasks, specify \"Replace Y with X\" and briefly describe the key visual features of X.  \n### 2. Text Editing Tasks\n- All text content must be enclosed in English double quotes `\" \"`. Keep the original language of the text, and keep the capitalization.  \n- Both adding new text and replacing existing text are text replacement tasks, For example:  \n    - Replace \"xx\" to \"yy\"  \n    - Replace the mask / bounding box to \"yy\"  \n    - Replace the visual object to \"yy\"  \n- Specify text position, color, and layout only if user has required.  \n- If font is specified, keep the original language of the font.  \n### 3. Human (ID) Editing Tasks\n- Emphasize maintaining the person’s core visual consistency (ethnicity, gender, age, hairstyle, expression, outfit, etc.).  \n- If modifying appearance (e.g., clothes, hairstyle), ensure the new element is consistent with the original style.  \n- **For expression changes / beauty / make up changes, they must be natural and subtle, never exaggerated.**  \n- Example:  \n    > Original: \"Change the person’s hat\"  \n    > Rewritten: \"Replace the man’s hat with a dark brown beret; keep smile, short hair, and gray jacket unchanged\"  \n### 4. Style Conversion or Enhancement Tasks\n- If a style is specified, describe it concisely using key visual features. For example:  \n    > Original: \"Disco style\"  \n    > Rewritten: \"1970s disco style: flashing lights, disco ball, mirrored walls, colorful tones\"  \n- For style reference, analyze the original image and extract key characteristics (color, composition, texture, lighting, artistic style, etc.), integrating them into the instruction.  \n- **Colorization tasks (including old photo restoration) must use the fixed template:**  \n  \"Restore and colorize the photo.\"  \n- Clearly specify the object to be modified. For example:  \n    > Original: Modify the subject in Picture 1 to match the style of Picture 2.  \n    > Rewritten: Change the girl in Picture 1 to the ink-wash style of Picture 2 — rendered in black-and-white watercolor with soft color transitions.\n- If there are other changes, place the style description at the end.\n### 5. Content Filling Tasks\n- For inpainting tasks, directly describe the requested change inside the masked or marked area and explicitly preserve all unmasked areas unchanged. Do not add a generic caption preamble or placeholder.\n- For outpainting tasks, directly describe what should be extended beyond the current image boundaries and preserve the existing image content unchanged. Do not add a generic caption preamble or placeholder.\n### 6. Multi-Image Tasks\n- Rewritten prompts must clearly point out which image’s element is being modified. For example:  \n    > Original: \"Replace the subject of picture 1 with the subject of picture 2\"  \n    > Rewritten: \"Replace the girl of picture 1 with the boy of picture 2, keeping picture 2’s background unchanged\"  \n- For stylization tasks, describe the reference image’s style in the rewritten prompt, while preserving the visual content of the source image.  \n## 3. Rationale and Logic Checks\n- Resolve contradictory instructions: e.g., \"Remove all trees but keep all trees\" should be logically corrected.  \n- Add missing key information: e.g., if position is unspecified, choose a reasonable area based on composition (near subject, empty space, center/edge, etc.).  \n\n# Output Format\nOutput only the rewritten prompt, with no additional text or greetings.\nDo not use JSON formatting under any circumstances."
      ],
      "title": "System prompt (rewrite rules)"
    },
    {
      "id": 36,
      "type": "PrimitiveStringMultiline",
      "pos": [
        520,
        310
      ],
      "size": [
        420,
        120
      ],
      "flags": {},
      "order": 101,
      "mode": 0,
      "inputs": [],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            34
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "PrimitiveStringMultiline"
      },
      "widgets_values": [
        "Add the girl from Figure 2 to the left of Figure 1, and have the two girls raise their glasses to drink."
      ],
      "title": "User edit instruction"
    },
    {
      "id": 37,
      "type": "StringConcatenate",
      "pos": [
        520,
        460
      ],
      "size": [
        420,
        110
      ],
      "flags": {},
      "order": 102,
      "mode": 0,
      "inputs": [
        {
          "name": "string_a",
          "type": "STRING",
          "link": 33,
          "widget": {
            "name": "string_a"
          }
        },
        {
          "name": "string_b",
          "type": "STRING",
          "link": 34,
          "widget": {
            "name": "string_b"
          }
        }
      ],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            36
          ]
        }
      ],
      "properties": {
        "Node name for S&R": "StringConcatenate"
      },
      "widgets_values": [
        "",
        "",
        "\n\nUser Input: \n\n"
      ],
      "title": "Concat system + user prompt"
    },
    {
      "id": 38,
      "type": "StringConcatenate",
      "pos": [
        1000,
        640
      ],
      "size": [
        420,
        166
      ],
      "flags": {},
      "order": 14,
      "mode": 0,
      "inputs": [
        {
          "name": "string_a",
          "type": "STRING",
          "widget": {
            "name": "string_a"
          },
          "link": 36
        },
        {
          "name": "string_b",
          "type": "STRING",
          "widget": {
            "name": "string_b"
          },
          "link": null
        },
        {
          "name": "delimiter",
          "type": "STRING",
          "widget": {
            "name": "delimiter"
          },
          "link": null
        }
      ],
      "outputs": [
        {
          "name": "STRING",
          "type": "STRING",
          "links": [
            35
          ]
        }
      ],
      "title": "Append Rewriten Prompt:",
      "properties": {
        "Node name for S&R": "StringConcatenate"
      },
      "widgets_values": [
        "",
        "Rewriten Prompt:\n"
      ]
    }
  ],
  "links": [
    [
      1,
      1,
      0,
      2,
      0,
      "MODEL"
    ],
    [
      2,
      2,
      0,
      3,
      0,
      "MODEL"
    ],
    [
      3,
      3,
      0,
      14,
      0,
      "MODEL"
    ],
    [
      4,
      3,
      0,
      15,
      0,
      "MODEL"
    ],
    [
      5,
      4,
      0,
      9,
      0,
      "CLIP"
    ],
    [
      7,
      5,
      0,
      9,
      2,
      "VAE"
    ],
    [
      9,
      5,
      0,
      11,
      1,
      "VAE"
    ],
    [
      10,
      5,
      0,
      17,
      1,
      "VAE"
    ],
    [
      11,
      6,
      0,
      7,
      0,
      "IMAGE"
    ],
    [
      12,
      7,
      0,
      9,
      3,
      "IMAGE"
    ],
    [
      14,
      7,
      0,
      11,
      0,
      "IMAGE"
    ],
    [
      15,
      6,
      0,
      31,
      0,
      "IMAGE"
    ],
    [
      16,
      20,
      0,
      31,
      1,
      "IMAGE"
    ],
    [
      17,
      30,
      0,
      32,
      0,
      "CLIP"
    ],
    [
      18,
      31,
      0,
      32,
      2,
      "IMAGE"
    ],
    [
      20,
      32,
      0,
      9,
      1,
      "STRING"
    ],
    [
      21,
      32,
      0,
      34,
      0,
      "STRING"
    ],
    [
      22,
      9,
      0,
      15,
      1,
      "CONDITIONING"
    ],
    [
      24,
      11,
      0,
      16,
      4,
      "LATENT"
    ],
    [
      25,
      12,
      0,
      16,
      0,
      "NOISE"
    ],
    [
      26,
      13,
      0,
      16,
      2,
      "SAMPLER"
    ],
    [
      27,
      20,
      0,
      9,
      4,
      "IMAGE"
    ],
    [
      29,
      14,
      0,
      16,
      3,
      "SIGMAS"
    ],
    [
      30,
      15,
      0,
      16,
      1,
      "GUIDER"
    ],
    [
      31,
      16,
      0,
      17,
      0,
      "LATENT"
    ],
    [
      32,
      17,
      0,
      18,
      0,
      "IMAGE"
    ],
    [
      33,
      35,
      0,
      37,
      0,
      "STRING"
    ],
    [
      34,
      36,
      0,
      37,
      1,
      "STRING"
    ],
    [
      36,
      37,
      0,
      38,
      0,
      "STRING"
    ],
    [
      35,
      38,
      0,
      32,
      1,
      "STRING"
    ]
  ],
  "groups": [
    {
      "id": 1,
      "title": "Input images (shared)",
      "bounding": [
        20,
        40,
        470,
        850
      ],
      "color": "#88A",
      "font_size": 24,
      "flags": {}
    },
    {
      "id": 2,
      "title": "Gemma prompt rewrite",
      "bounding": [
        510,
        40,
        1010,
        800
      ],
      "color": "#3f789e",
      "font_size": 24,
      "flags": {}
    },
    {
      "id": 3,
      "title": "DiT generation (Qwen-Image-Edit-2511)",
      "bounding": [
        40,
        920,
        1470,
        900
      ],
      "color": "#8A8",
      "font_size": 24,
      "flags": {}
    }
  ],
  "config": {},
  "extra": {},
  "version": 0.4
}