Posted on

Lua Scripts

The Power Behind The Title

Davinci Resolve is a powerful Video NLE with a huge array of tools, the problem a lot of people encounter is the lack of information beyond the basics.

Although if you dig deep, usually with a lot of Google searching you come across a vast quantity of tutorials and information. In this article, we are going to scratch the surface of the Lua scripting which resolve generates every time you make titles for your video editing projects.

What is Lua

Lua is a powerful, efficient, lightweight, embeddable scripting language. It supports procedural programming, object-oriented programming, functional programming, data-driven programming, and data description.

Lua.org

Lua combines simple procedural syntax with powerful data description constructs based on associative arrays and extensible semantics. Lua is dynamically typed, runs by interpreting bytecode with a register-based virtual machine, and has automatic memory management with incremental garbage collection, making it ideal for configuration, scripting, and rapid prototyping.

Lua.org

I am not going to attempt to teach you the Lua scripting language, the aim of this article is to give you a peek inside a Davinci Resolve Title and show you how to add dropdown menus in the inspector. This helps keep your titles organised and allows you to add extra functionality to a title. This prevents the end-user from having to dig deep into the fusion page. In most cases, a well-planned title will not require the end-user to use the fusion page at all.

Once you have created your title and saved the node tree as a macro, comp or directly as a .setting file. You are able to view the Lua script which your hard work created.

To view and edit a Lua script all you need is a basic text editor, however, I prefer to use an app with line numbers and formatting. Notepad++ is free and has good functionality. As I build assets and edit Lua on a regular basis I use VSCode which has extensions for formatting Lua scripts for this to work correctly I change the file extension from .setting or .comp to .lua.

The title script starts with the tools order you selected prior to creating the macro. Selecting the nodes in the order you wish them to appear in the inspector, is an important part of the process and time spent creating an orderly macro, will pay dividends when you come to edit the Lua script.

The full macro code is at the bottom of the page due to its length, you can copy the code and save it with any text editor the extension needs to be .setting. You can then use the title in Davinci Resolve.

Comments in the Lua scripting language start with —

-- this is a comment

A cool feature is the ability to add a link to a URL, this is launched when the user selects the macro on the fusion page and presses “F1”. Ideal for providing the end-user with documentation or a helpful video on YouTube

{
	Tools = ordered() {
		
		Lower3rdCircle01 = MacroOperator {
			-- F1 customData help file link
		CustomData = { HelpPage = "https://resolveassets.co.uk/knowledge-base/",},

Tools = ordered is the order the nodes were selected when creating the macro. Lower3rdCircle01 is the name given to the macro and can be changed in the Lua script. This is shown at the top of the inspector.

CustomData is the code for the “F1” link. Change the URL to suit your needs.

Inputs = ordered() {
				-- first label
				Label01 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "Label01",
				},

Immediately below the Inputs = ordered () is where you place the label. The syntax is simple and short. I always use “Label01, Label02 etc to ensure I can refer back to the label in the future or when debugging the script if it fails. You could use other names however ensure they are logical but avoid using node names.

You place labels in between the script for each node. In this instance, my node is called “SpeedText” which is a Text+ node. I activated 9 controls for this node.

Inputs = ordered() {
				-- first label
				Label01 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "Label01",
				},
				Input1 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "StyledText",
				},
				Input2 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "Font",
					ControlGroup = 2,
				},
				Input3 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "Style",
					ControlGroup = 2,
				},
				Input4 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "Red1Clone",
					Name = "Color",
					ControlGroup = 3,
					Default = 0,
				},
				Input5 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "Green1Clone",
					ControlGroup = 3,
					Default = 0,
				},
				Input6 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "Blue1Clone",
					ControlGroup = 3,
					Default = 0,
				},
				Input7 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "Alpha1Clone",
					ControlGroup = 3,
					Default = 1,
				},
				Input8 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "Size",
					Default = 0.08,
				},
				Input9 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "CharacterSpacingClone",
					Name = "Tracking",
					Default = 1,
				},
				-- 1 to 9 9 controls

The input is customisable by the end-user and the source is the control I activated when creating the macro. So input 1 source is styled text, which is the text box the user types in. input 2 is the font enabling the user to select a font etc…

-- second label
				Label02 = InstanceInput {
					SourceOp = "LowerText",
					Source = "Label02",
				},
				Input10 = InstanceInput {
					SourceOp = "LowerText",
					Source = "StyledText",
				},
				Input11 = InstanceInput {
					SourceOp = "LowerText",
					Source = "Font",
					ControlGroup = 7,
				},
				Input12 = InstanceInput {
					SourceOp = "LowerText",
					Source = "Style",
					ControlGroup = 7,
				},
				Input13 = InstanceInput {
					SourceOp = "LowerText",
					Source = "Red1Clone",
					Name = "Color",
					ControlGroup = 8,
					Default = 1,
				},
				Input14 = InstanceInput {
					SourceOp = "LowerText",
					Source = "Green1Clone",
					ControlGroup = 8,
					Default = 1,
				},
				Input15 = InstanceInput {
					SourceOp = "LowerText",
					Source = "Blue1Clone",
					ControlGroup = 8,
					Default = 1,
				},
				Input16 = InstanceInput {
					SourceOp = "LowerText",
					Source = "Alpha1Clone",
					ControlGroup = 8,
					Default = 1,
				},
				Input17 = InstanceInput {
					SourceOp = "LowerText",
					Source = "Size",
					Default = 0.08284,
				},
				Input18 = InstanceInput {
					SourceOp = "LowerText",
					Source = "CharacterSpacingClone",
					Name = "Tracking",
					Default = 1,
				},
				--  10 to 18 9 controls

I have added comments at the end of each section and calculated how many controls I activated when creating the macro. This is required when I create the script to activate the drop-down menu.

Moving down the Lua script to reveal the nodes.

The scripting for the node is editable, however, I am only covering adding dropdown menus here. When you make your title in Fusion you would have set your parameters there.

-- original Text+ node script
ViewInfo = GroupInfo { Pos = { 0, 0 } },
			Tools = ordered() {
				Speedtext = TextPlus {
					NameSet = true,
					Inputs = {
						Width = Input { Value = 1920, },
						Height = Input { Value = 1080, },
						UseFrameFormatSettings = Input { Value = 1, },
						["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
						Center = Input { Value = { 0.133846153846154, 0.177595628415301 }, },
						Red1 = Input { Value = 0, },
						Green1 = Input { Value = 0, },
						Blue1 = Input { Value = 0, },
						StyledText = Input { Value = "50", },
						Font = Input { Value = "Open Sans", },
						Style = Input { Value = "Bold", },
						Size = Input {
							SourceOp = "SpeedtextSize",
							Source = "Value",
						},
						VerticalJustificationNew = Input { Value = 3, },
						HorizontalJustificationNew = Input { Value = 3, },
						ManualFontKerningPlacement = Input {
							Value = StyledText {
								Array = {
								},
								Value = ""
							},
						},
					},
					ViewInfo = OperatorInfo { Pos = { 330, 82.5 } },
				},
				SpeedtextSize = BezierSpline {
					SplineColor = { Red = 225, Green = 0, Blue = 225 },
					NameSet = true,
					KeyFrames = {
						[0] = { 0, RH = { 5, 0.05 }, Flags = { Linear = true } },
						[15] = { 0.15, LH = { 10, 0.1 }, Flags = { Linear = true } }
					}
				},

Locating the correct point in the script to add the dropdown menu took weeks of experimentation and searching the forums. Eventually, I located the point in the node script where the editing needed to take place. You can do all this next section within Fusion. I have yet to discover how to complete the whole process within Davinci Resolve but find adding labels to the Lua script straight forward, especially after a week of coding.

ViewInfo = OperatorInfo { Pos = { 330, 82.5 } },
--label script goes here

The ViewInfo = OperatorInfo is the place to look for, however, there are a few caveats. Adding colour to the node will add an extra piece of code which prevents the dropdown from working. If that is the case you need to add the label script below the Tilecolor.

ViewInfo = OperatorInfo { Pos = { 0, 16.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, },
--label script would go here in the event of a Tilecolor

I am going to add comments within the script to explain the next part.

-- first label script
					UserControls = ordered() {
						Label01 = {
							LINKS_Name = "SpeedText", -- name of dropdown menu label
							LINKID_DataType = "Number", --unknown but only works as a number
							INPID_InputControl = "LabelControl", --activates the label
							INP_Integer = false, --unkown but fails if not included
							INP_MinScale = 0, --unknown but fails if not included
							INP_MaxScale = 1, --unknown but fails if not included
							INP_MinAllowed = -1000000, -- something to do with intergers
							INP_MaxAllowed = 1000000, --again fails if not included
							LBLC_DropDownButton = true, --is the dropdown active?
							LBLC_NumInputs = 9, --IMPORTANT the number of input controls must be acurate
						}
					}
					-- end of label script

This is the full script for you to use as a template.

{
	Tools = ordered() {
		
		Lower3rdCircle01 = MacroOperator {
			-- F1 customData help file link
		CustomData = { HelpPage = "https://resolveassets.co.uk/knowledge-base/",},
			Inputs = ordered() {
				-- first label
				Label01 = InstanceInput { 
					SourceOp = "Speedtext",
					Source = "Label01",
				},
				Input1 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "StyledText",
				},
				Input2 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "Font",
					ControlGroup = 2,
				},
				Input3 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "Style",
					ControlGroup = 2,
				},
				Input4 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "Red1Clone",
					Name = "Color",
					ControlGroup = 3,
					Default = 0,
				},
				Input5 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "Green1Clone",
					ControlGroup = 3,
					Default = 0,
				},
				Input6 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "Blue1Clone",
					ControlGroup = 3,
					Default = 0,
				},
				Input7 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "Alpha1Clone",
					ControlGroup = 3,
					Default = 1,
				},
				Input8 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "Size",
					Default = 0.08,
				},
				Input9 = InstanceInput {
					SourceOp = "Speedtext",
					Source = "CharacterSpacingClone",
					Name = "Tracking",
					Default = 1,
				},
				-- 1 to 9 9 controls
				-- second label
				Label02 = InstanceInput {
					SourceOp = "LowerText",
					Source = "Label02",
				},
				Input10 = InstanceInput {
					SourceOp = "LowerText",
					Source = "StyledText",
				},
				Input11 = InstanceInput {
					SourceOp = "LowerText",
					Source = "Font",
					ControlGroup = 7,
				},
				Input12 = InstanceInput {
					SourceOp = "LowerText",
					Source = "Style",
					ControlGroup = 7,
				},
				Input13 = InstanceInput {
					SourceOp = "LowerText",
					Source = "Red1Clone",
					Name = "Color",
					ControlGroup = 8,
					Default = 1,
				},
				Input14 = InstanceInput {
					SourceOp = "LowerText",
					Source = "Green1Clone",
					ControlGroup = 8,
					Default = 1,
				},
				Input15 = InstanceInput {
					SourceOp = "LowerText",
					Source = "Blue1Clone",
					ControlGroup = 8,
					Default = 1,
				},
				Input16 = InstanceInput {
					SourceOp = "LowerText",
					Source = "Alpha1Clone",
					ControlGroup = 8,
					Default = 1,
				},
				Input17 = InstanceInput {
					SourceOp = "LowerText",
					Source = "Size",
					Default = 0.08284,
				},
				Input18 = InstanceInput {
					SourceOp = "LowerText",
					Source = "CharacterSpacingClone",
					Name = "Tracking",
					Default = 1,
				},
				--  10 to 18 9 controls
				-- third label
				Label03 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "Label03",
				},
				Input19 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "Type",
				},
				Input20 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "TopLeftRed",
					Name = "Color",
					ControlGroup = 12,
					Default = 1,
				},
				Input21 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "TopLeftGreen",
					ControlGroup = 12,
					Default = 1,
				},
				Input22 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "TopLeftBlue",
					ControlGroup = 12,
					Default = 1,
				},
				Input23 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "TopLeftAlpha",
					ControlGroup = 12,
					Default = 1,
				},
				Input24 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "TopRightRed",
					Name = "Top Right",
					ControlGroup = 13,
					Default = 0,
				},
				Input25 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "TopRightGreen",
					ControlGroup = 13,
					Default = 0,
				},
				Input26 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "TopRightBlue",
					ControlGroup = 13,
					Default = 0,
				},
				Input27 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "TopRightAlpha",
					ControlGroup = 13,
					Default = 1,
				},
				Input28 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "BottomLeftRed",
					Name = "Bottom Left",
					ControlGroup = 14,
					Default = 0,
				},
				Input29 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "BottomLeftGreen",
					ControlGroup = 14,
					Default = 0,
				},
				Input30 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "BottomLeftBlue",
					ControlGroup = 14,
					Default = 0,
				},
				Input31 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "BottomLeftAlpha",
					ControlGroup = 14,
					Default = 1,
				},
				Input32 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "BottomRightRed",
					Name = "Bottom Right",
					ControlGroup = 15,
					Default = 0,
				},
				Input33 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "BottomRightGreen",
					ControlGroup = 15,
					Default = 0,
				},
				Input34 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "BottomRightBlue",
					ControlGroup = 15,
					Default = 0,
				},
				Input35 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "BottomRightAlpha",
					ControlGroup = 15,
					Default = 1,
				},
				Input36 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "GradientType",
				},
				Input37 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "Start",
					DefaultX = 0,
					DefaultY = 0.5,
				},
				Input38 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "End",
					DefaultX = 1,
					DefaultY = 0.5,
				},
				Input39 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "Gradient",
				},
				Input40 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "GradientInterpolationMethod",
				},
				Input41 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "Offset",
					Default = 0,
				},
				Input42 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "Repeat",
				},
				Input43 = InstanceInput {
					SourceOp = "CircleCentre",
					Source = "SubPixel",
				},
				-- 19 to 43 24 controls
				-- fourth label
				Label04 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "Label04",
				},
				Input44 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "Type",
				},
				Input45 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "TopLeftRed",
					Name = "Color",
					ControlGroup = 25,
					Default = 0.906,
				},
				Input46 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "TopLeftGreen",
					ControlGroup = 25,
					Default = 0.070668,
				},
				Input47 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "TopLeftBlue",
					ControlGroup = 25,
					Default = 0.070668,
				},
				Input48 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "TopLeftAlpha",
					ControlGroup = 25,
					Default = 1,
				},
				Input49 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "TopRightRed",
					Name = "Top Right",
					ControlGroup = 26,
					Default = 0,
				},
				Input50 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "TopRightGreen",
					ControlGroup = 26,
					Default = 0,
				},
				Input51 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "TopRightBlue",
					ControlGroup = 26,
					Default = 0,
				},
				Input52 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "TopRightAlpha",
					ControlGroup = 26,
					Default = 1,
				},
				Input53 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "BottomLeftRed",
					Name = "Bottom Left",
					ControlGroup = 27,
					Default = 0,
				},
				Input54 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "BottomLeftGreen",
					ControlGroup = 27,
					Default = 0,
				},
				Input55 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "BottomLeftBlue",
					ControlGroup = 27,
					Default = 0,
				},
				Input56 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "BottomLeftAlpha",
					ControlGroup = 27,
					Default = 1,
				},
				Input57 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "BottomRightRed",
					Name = "Bottom Right",
					ControlGroup = 28,
					Default = 0,
				},
				Input58 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "BottomRightGreen",
					ControlGroup = 28,
					Default = 0,
				},
				Input59 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "BottomRightBlue",
					ControlGroup = 28,
					Default = 0,
				},
				Input60 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "BottomRightAlpha",
					ControlGroup = 28,
					Default = 1,
				},
				Input61 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "GradientType",
				},
				Input62 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "Start",
					DefaultX = 0,
					DefaultY = 0.5,
				},
				Input63 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "End",
					DefaultX = 1,
					DefaultY = 0.5,
				},
				Input64 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "Gradient",
				},
				Input65 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "GradientInterpolationMethod",
				},
				Input66 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "Offset",
					Default = 0,
				},
				Input67 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "Repeat",
				},
				Input68 = InstanceInput {
					SourceOp = "Backpanel",
					Source = "SubPixel",
				},
				-- 44 to 68 inputs 24 controls
				-- fifth label
				Label05 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "Label05",
				},
				Input69 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "Type",
				},
				Input70 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "TopLeftRed",
					Name = "Color",
					ControlGroup = 38,
					Default = 0.2313725490196,
				},
				Input71 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "TopLeftGreen",
					ControlGroup = 38,
					Default = 0.2313725490196,
				},
				Input72 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "TopLeftBlue",
					ControlGroup = 38,
					Default = 0.2313725490196,
				},
				Input73 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "TopLeftAlpha",
					ControlGroup = 38,
					Default = 1,
				},
				Input74 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "TopRightRed",
					Name = "Top Right",
					ControlGroup = 39,
					Default = 0,
				},
				Input75 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "TopRightGreen",
					ControlGroup = 39,
					Default = 0,
				},
				Input76 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "TopRightBlue",
					ControlGroup = 39,
					Default = 0,
				},
				Input77 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "TopRightAlpha",
					ControlGroup = 39,
					Default = 1,
				},
				Input78 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "BottomLeftRed",
					Name = "Bottom Left",
					ControlGroup = 40,
					Default = 0,
				},
				Input79 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "BottomLeftGreen",
					ControlGroup = 40,
					Default = 0,
				},
				Input80 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "BottomLeftBlue",
					ControlGroup = 40,
					Default = 0,
				},
				Input81 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "BottomLeftAlpha",
					ControlGroup = 40,
					Default = 1,
				},
				Input82 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "BottomRightRed",
					Name = "Bottom Right",
					ControlGroup = 41,
					Default = 0,
				},
				Input83 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "BottomRightGreen",
					ControlGroup = 41,
					Default = 0,
				},
				Input84 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "BottomRightBlue",
					ControlGroup = 41,
					Default = 0,
				},
				Input85 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "BottomRightAlpha",
					ControlGroup = 41,
					Default = 1,
				},
				Input86 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "GradientType",
				},
				Input87 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "Start",
					DefaultX = 0,
					DefaultY = 0.5,
				},
				Input88 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "End",
					DefaultX = 1,
					DefaultY = 0.5,
				},
				Input89 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "Gradient",
				},
				Input90 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "GradientInterpolationMethod",
				},
				Input91 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "Offset",
					Default = 0,
				},
				Input92 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "Repeat",
				},
				Input93 = InstanceInput {
					SourceOp = "FrontPanel",
					Source = "SubPixel",
				},
				-- 69 to 93 24 controls
				Input94 = InstanceInput {
					SourceOp = "Size",
					Source = "Center",
				},
				Input95 = InstanceInput {
					SourceOp = "Size",
					Source = "Pivot",
				},
				Input96 = InstanceInput {
					SourceOp = "Size",
					Source = "UseSizeAndAspect",
					Default = 1,
				},
				Input97 = InstanceInput {
					SourceOp = "Size",
					Source = "Size",
					Default = 1,
				},
				Input98 = InstanceInput {
					SourceOp = "Size",
					Source = "Aspect",
					Default = 1,
				},
				Input99 = InstanceInput {
					SourceOp = "Size",
					Source = "XSize",
					Default = 1,
				},
				Input100 = InstanceInput {
					SourceOp = "Size",
					Source = "YSize",
					Default = 1,
				},
				Input101 = InstanceInput {
					SourceOp = "Size",
					Source = "Angle",
					Default = 0,
				},
			},
			Outputs = {
				Output1 = InstanceOutput {
					SourceOp = "Path1",
					Source = "Heading",
				},
				MainOutput1 = InstanceOutput {
					SourceOp = "responsive",
					Source = "MainOutput1",
				}
			},
			ViewInfo = GroupInfo { Pos = { 0, 0 } },
			Tools = ordered() {
				Speedtext = TextPlus {
					NameSet = true,
					Inputs = {
						Width = Input { Value = 1920, },
						Height = Input { Value = 1080, },
						UseFrameFormatSettings = Input { Value = 1, },
						["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
						Center = Input { Value = { 0.133846153846154, 0.177595628415301 }, },
						Red1 = Input { Value = 0, },
						Green1 = Input { Value = 0, },
						Blue1 = Input { Value = 0, },
						StyledText = Input { Value = "50", },
						Font = Input { Value = "Open Sans", },
						Style = Input { Value = "Bold", },
						Size = Input {
							SourceOp = "SpeedtextSize",
							Source = "Value",
						},
						VerticalJustificationNew = Input { Value = 3, },
						HorizontalJustificationNew = Input { Value = 3, },
						ManualFontKerningPlacement = Input {
							Value = StyledText {
								Array = {
								},
								Value = ""
							},
						},
					},
					ViewInfo = OperatorInfo { Pos = { 330, 82.5 } },
					-- first label script
					UserControls = ordered() {
						Label01 = {
							LINKS_Name = "SpeedText", -- name of dropdown menu label
							LINKID_DataType = "Number", --unknown but only works as a number
							INPID_InputControl = "LabelControl", --the control selected in addControls within Fusion
							INP_Integer = false, --unkown but fails if not included
							INP_MinScale = 0, --unknown but fails if not included
							INP_MaxScale = 1, --unknown but fails if not included
							INP_MinAllowed = -1000000, -- something to do with intergers
							INP_MaxAllowed = 1000000, --again fails if not included
							LBLC_DropDownButton = true, --is the dropdown active
							LBLC_NumInputs = 9, --IMPORTANT the number of input controls must be acurate
						}
					}
					-- end of label script
				},
				SpeedtextSize = BezierSpline {
					SplineColor = { Red = 225, Green = 0, Blue = 225 },
					NameSet = true,
					KeyFrames = {
						[0] = { 0, RH = { 5, 0.05 }, Flags = { Linear = true } },
						[15] = { 0.15, LH = { 10, 0.1 }, Flags = { Linear = true } }
					}
				},
				LowerText = TextPlus {
					NameSet = true,
					Inputs = {
						Blue3 = Input { Value = 1, },
						Red3 = Input { Value = 1, },
						Green3 = Input { Value = 1, },
						Width = Input { Value = 1920, },
						Height = Input { Value = 1080, },
						UseFrameFormatSettings = Input { Value = 1, },
						["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
						Center = Input { Value = { 0.337211538461539, 0.110948477751757 }, },
						Opacity1 = Input {
							SourceOp = "LowerTextOpacity",
							Source = "Value",
						},
						StyledText = Input { Value = "SPEED LIMIT", },
						Font = Input { Value = "Open Sans", },
						Style = Input { Value = "Regular", },
						Size = Input { Value = 0.08284, },
						VerticalJustificationNew = Input { Value = 3, },
						HorizontalJustificationNew = Input { Value = 3, },
						ManualFontKerningPlacement = Input {
							Value = StyledText {
								Array = {
								},
								Value = ""
							},
						},
					},
					ViewInfo = OperatorInfo { Pos = { 220, 82.5 } },
					-- second label script
					UserControls = ordered() {
						Label02 = {
							LINKS_Name = "LowerText",
							LINKID_DataType = "Number",
							INPID_InputControl = "LabelControl",
							INP_Integer = false,
							INP_MinScale = 0,
							INP_MaxScale = 1,
							INP_MinAllowed = -1000000,
							INP_MaxAllowed = 1000000,
							LBLC_DropDownButton = true,
							LBLC_NumInputs = 9,
						}
					}
					-- end of label script
				},
				LowerTextOpacity = BezierSpline {
					SplineColor = { Red = 179, Green = 28, Blue = 244 },
					NameSet = true,
					KeyFrames = {
						[0] = { 0, RH = { 8.33333333333333, 0 }, Flags = { Linear = true } },
						[25] = { 0, LH = { 16.6666666666667, 0 }, RH = { 25.6666666666667, 0.333333333333333 }, Flags = { Linear = true } },
						[27] = { 1, LH = { 26.3333333333333, 0.666666666666667 }, Flags = { Linear = true } }
					}
				},
				CircleCentre = Background {
					NameSet = true,
					Inputs = {
						EffectMask = Input {
							SourceOp = "Ellipse3",
							Source = "Mask",
						},
						Width = Input { Value = 1920, },
						Height = Input { Value = 1080, },
						UseFrameFormatSettings = Input { Value = 1, },
						["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
						TopLeftRed = Input { Value = 1, },
						TopLeftGreen = Input { Value = 1, },
						TopLeftBlue = Input { Value = 1, },
					},
					ViewInfo = OperatorInfo { Pos = { 0, 16.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, },
					-- third label script
					UserControls = ordered() {
						Label03 = {
							LINKS_Name = "CircleCentre",
							LINKID_DataType = "Number",
							INPID_InputControl = "LabelControl",
							INP_Integer = false,
							INP_MinScale = 0,
							INP_MaxScale = 1,
							INP_MinAllowed = -1000000,
							INP_MaxAllowed = 1000000,
							LBLC_DropDownButton = true,
							LBLC_NumInputs = 24,
						}
					}
					-- end of label script
				},
				Backpanel = Background {
					NameSet = true,
					Inputs = {
						EffectMask = Input {
							SourceOp = "Rectangle5",
							Source = "Mask",
						},
						Width = Input { Value = 1920, },
						Height = Input { Value = 1080, },
						UseFrameFormatSettings = Input { Value = 1, },
						["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
						TopLeftRed = Input { Value = 0.906, },
						TopLeftGreen = Input { Value = 0.070668, },
						TopLeftBlue = Input { Value = 0.070668, },
					},
					ViewInfo = OperatorInfo { Pos = { -550, 115.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, },
					-- fourth label script
					UserControls = ordered() {
						Label04 = {
							LINKS_Name = "BackPanel",
							LINKID_DataType = "Number",
							INPID_InputControl = "LabelControl",
							INP_Integer = false,
							INP_MinScale = 0,
							INP_MaxScale = 1,
							INP_MinAllowed = -1000000,
							INP_MaxAllowed = 1000000,
							LBLC_DropDownButton = true,
							LBLC_NumInputs = 24,
						}
					}
					-- end of label script
				},
				FrontPanel = Background {
					NameSet = true,
					Inputs = {
						EffectMask = Input {
							SourceOp = "Instance_Rectangle5",
							Source = "Mask",
						},
						Width = Input { Value = 1920, },
						Height = Input { Value = 1080, },
						UseFrameFormatSettings = Input { Value = 1, },
						["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
						TopLeftRed = Input { Value = 0.2313725490196, },
						TopLeftGreen = Input { Value = 0.2313725490196, },
						TopLeftBlue = Input { Value = 0.2313725490196, },
					},
					ViewInfo = OperatorInfo { Pos = { -440, 115.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, },
					-- fifth label script
					UserControls = ordered() {
						Label05 = {
							LINKS_Name = "FrontPanel",
							LINKID_DataType = "Number",
							INPID_InputControl = "LabelControl",
							INP_Integer = false,
							INP_MinScale = 0,
							INP_MaxScale = 1,
							INP_MinAllowed = -1000000,
							INP_MaxAllowed = 1000000,
							LBLC_DropDownButton = true,
							LBLC_NumInputs = 24,
						}
					}
					-- end of label script
				},
				Instance_CircleCentre = Background {
					NameSet = true,
					SourceOp = "CircleCentre",
					Inputs = {
						EffectMask = Input {
							SourceOp = "Instance_Rectangle5_1",
							Source = "Mask",
						},
						SettingsNest = Input { },
						ImageNest = Input { },
						["Gamut.ColorSpaceNest"] = Input { },
						["Gamut.GammaSpaceNest"] = Input { },
						BackgroundNest = Input { },
						CommentsNest = Input { },
						FrameRenderScriptNest = Input { },
						StartRenderScripts = Input { },
						EndRenderScripts = Input { },
					},
					ViewInfo = OperatorInfo { Pos = { -330, 115.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Instance_Backpanel = Background {
					NameSet = true,
					SourceOp = "Backpanel",
					Inputs = {
						EffectMask = Input {
							SourceOp = "Ellipse1",
							Source = "Mask",
						},
						SettingsNest = Input { },
						ImageNest = Input { },
						["Gamut.ColorSpaceNest"] = Input { },
						["Gamut.GammaSpaceNest"] = Input { },
						BackgroundNest = Input { },
						CommentsNest = Input { },
						FrameRenderScriptNest = Input { },
						StartRenderScripts = Input { },
						EndRenderScripts = Input { },
					},
					ViewInfo = OperatorInfo { Pos = { -110, -16.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				BG = Background {
					NameSet = true,
					Inputs = {
						Width = Input { Value = 1920, },
						Height = Input { Value = 1080, },
						UseFrameFormatSettings = Input { Value = 1, },
						["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
						TopLeftAlpha = Input { Value = 0, },
					},
					ViewInfo = OperatorInfo { Pos = { -660, 148.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Rectangle1 = RectangleMask {
					Inputs = {
						Filter = Input { Value = FuID { "Fast Gaussian" }, },
						MaskWidth = Input { Value = 1920, },
						MaskHeight = Input { Value = 1080, },
						PixelAspect = Input { Value = { 1, 1 }, },
						ClippingMode = Input { Value = FuID { "None" }, },
						Center = Input { Value = { 0.430888575458392, 0.199248120300752 }, },
						Width = Input { Value = 0.5310296191819, },
						Height = Input { Value = 0.1491228070175, },
					},
					ViewInfo = OperatorInfo { Pos = { -550, 16.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Rectangle2 = RectangleMask {
					Inputs = {
						EffectMask = Input {
							SourceOp = "Rectangle1",
							Source = "Mask",
						},
						Filter = Input { Value = FuID { "Fast Gaussian" }, },
						PaintMode = Input { Value = FuID { "Subtract" }, },
						MaskWidth = Input { Value = 1920, },
						MaskHeight = Input { Value = 1080, },
						PixelAspect = Input { Value = { 1, 1 }, },
						ClippingMode = Input { Value = FuID { "None" }, },
						Center = Input { Value = { 0.775035260930889, 0.219298245614035 }, },
						Width = Input { Value = 0.1812411847673, },
						Angle = Input { Value = -19.97953, },
					},
					ViewInfo = OperatorInfo { Pos = { -550, 49.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Rectangle5 = RectangleMask {
					Inputs = {
						EffectMask = Input {
							SourceOp = "Rectangle2",
							Source = "Mask",
						},
						Filter = Input { Value = FuID { "Fast Gaussian" }, },
						PaintMode = Input { Value = FuID { "Subtract" }, },
						MaskWidth = Input { Value = 1920, },
						MaskHeight = Input { Value = 1080, },
						PixelAspect = Input { Value = { 1, 1 }, },
						ClippingMode = Input { Value = FuID { "None" }, },
						Center = Input {
							SourceOp = "Path1",
							Source = "Position",
						},
						Width = Input { Value = 0.8046153846154, },
						Height = Input { Value = 0.2431693989071, },
					},
					ViewInfo = OperatorInfo { Pos = { -550, 82.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Path1 = PolyPath {
					DrawMode = "InsertAndModify",
					CtrlWZoom = false,
					Inputs = {
						Displacement = Input {
							SourceOp = "Path1Displacement",
							Source = "Value",
						},
						PolyLine = Input {
							Value = Polyline {
								Points = {
									{ Linear = true, LockY = true, X = 0, Y = -0.319672131147541, RX = 0.306666666666667, RY = -1.85037170770859e-017 },
									{ Linear = true, LockY = true, X = 0.92, Y = -0.319672131147541, LX = -0.306666666666667, LY = 1.85037170770859e-017 }
								}
							},
						},
					},
				},
				Path1Displacement = BezierSpline {
					SplineColor = { Red = 255, Green = 0, Blue = 255 },
					NameSet = true,
					KeyFrames = {
						[16] = { 0, RH = { 24, 0 }, Flags = { LockedY = true } },
						[40] = { 1, LH = { 32, 1 }, Flags = { LockedY = true } }
					}
				},
				Merge3 = Merge {
					Inputs = {
						Background = Input {
							SourceOp = "BG",
							Source = "Output",
						},
						Foreground = Input {
							SourceOp = "Backpanel",
							Source = "Output",
						},
						PerformDepthMerge = Input { Value = 0, },
					},
					ViewInfo = OperatorInfo { Pos = { -550, 148.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Merge4 = Merge {
					Inputs = {
						Background = Input {
							SourceOp = "Merge3",
							Source = "Output",
						},
						Foreground = Input {
							SourceOp = "FrontPanel",
							Source = "Output",
						},
						PerformDepthMerge = Input { Value = 0, },
					},
					ViewInfo = OperatorInfo { Pos = { -440, 148.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Instance_Rectangle5 = RectangleMask {
					SourceOp = "Rectangle5",
					Inputs = {
						EffectMask = Input {
							SourceOp = "Rectangle2_1",
							Source = "Mask",
						},
						SettingsNest = Input { },
						["ShapeRasterizer.Nest"] = Input { },
						CommentsNest = Input { },
						FrameRenderScriptNest = Input { },
						StartRenderScripts = Input { },
						EndRenderScripts = Input { },
					},
					ViewInfo = OperatorInfo { Pos = { -440, 82.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Rectangle2_1 = RectangleMask {
					Inputs = {
						EffectMask = Input {
							SourceOp = "Rectangle3",
							Source = "Mask",
						},
						Filter = Input { Value = FuID { "Fast Gaussian" }, },
						PaintMode = Input { Value = FuID { "Subtract" }, },
						MaskWidth = Input { Value = 1920, },
						MaskHeight = Input { Value = 1080, },
						PixelAspect = Input { Value = { 1, 1 }, },
						ClippingMode = Input { Value = FuID { "None" }, },
						Center = Input { Value = { 0.556417489421721, 0.219298245614035 }, },
						Width = Input { Value = 0.0805014669242, },
						Angle = Input { Value = -19.97953, },
					},
					ViewInfo = OperatorInfo { Pos = { -440, 49.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Rectangle3 = RectangleMask {
					Inputs = {
						Filter = Input { Value = FuID { "Fast Gaussian" }, },
						MaskWidth = Input { Value = 1920, },
						MaskHeight = Input { Value = 1080, },
						PixelAspect = Input { Value = { 1, 1 }, },
						ClippingMode = Input { Value = FuID { "None" }, },
						Center = Input { Value = { 0.343441466854725, 0.149122807017544 }, },
						Width = Input { Value = 0.3533145275035, },
						Height = Input { Value = 0.1240601503759, },
					},
					ViewInfo = OperatorInfo { Pos = { -440, 16.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Rectangle4 = RectangleMask {
					Inputs = {
						Filter = Input { Value = FuID { "Fast Gaussian" }, },
						MaskWidth = Input { Value = 1920, },
						MaskHeight = Input { Value = 1080, },
						PixelAspect = Input { Value = { 1, 1 }, },
						ClippingMode = Input { Value = FuID { "None" }, },
						Center = Input { Value = { 0.64950634696756, 0.200287953927372 }, },
						Width = Input { Value = 0.003, },
						Height = Input { Value = 0.156, },
						Angle = Input { Value = -20, },
					},
					ViewInfo = OperatorInfo { Pos = { -330, 16.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Instance_Rectangle5_1 = RectangleMask {
					SourceOp = "Rectangle5",
					Inputs = {
						EffectMask = Input {
							SourceOp = "Rectangle4",
							Source = "Mask",
						},
						SettingsNest = Input { },
						["ShapeRasterizer.Nest"] = Input { },
						CommentsNest = Input { },
						FrameRenderScriptNest = Input { },
						StartRenderScripts = Input { },
						EndRenderScripts = Input { },
					},
					ViewInfo = OperatorInfo { Pos = { -330, 82.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Merge5 = Merge {
					Inputs = {
						Background = Input {
							SourceOp = "Merge4",
							Source = "Output",
						},
						Foreground = Input {
							SourceOp = "Instance_CircleCentre",
							Source = "Output",
						},
						PerformDepthMerge = Input { Value = 0, },
					},
					ViewInfo = OperatorInfo { Pos = { -330, 148.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Transform1 = Transform {
					Inputs = {
						Pivot = Input { Value = { 0.133524682651622, 0.174185463659148 }, },
						Input = Input {
							SourceOp = "Merge5",
							Source = "Output",
						},
					},
					ViewInfo = OperatorInfo { Pos = { -220, 148.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				BGCircle = Background {
					NameSet = true,
					Inputs = {
						Width = Input { Value = 1920, },
						Height = Input { Value = 1080, },
						UseFrameFormatSettings = Input { Value = 1, },
						["Gamut.SLogVersion"] = Input { Value = FuID { "SLog2" }, },
						TopLeftAlpha = Input { Value = 0, },
					},
					ViewInfo = OperatorInfo { Pos = { -220, 49.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Merge1 = Merge {
					Inputs = {
						Background = Input {
							SourceOp = "BGCircle",
							Source = "Output",
						},
						Foreground = Input {
							SourceOp = "DropShadow1",
							Source = "Output",
						},
						PerformDepthMerge = Input { Value = 0, },
					},
					ViewInfo = OperatorInfo { Pos = { -110, 49.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				DropShadow1 = ofx.com.blackmagicdesign.resolvefx.dropshadow {
					Inputs = {
						Source = Input {
							SourceOp = "Instance_Backpanel",
							Source = "Output",
						},
						shadowStrength = Input { Value = 0.953, },
						shadowAngle = Input { Value = 74, },
						ShadowDistance = Input { Value = 0.0236, },
						shadowBlur = Input { Value = 0.550000011920929, },
						shadowColorRed = Input { Value = 0, },
						shadowColorGreen = Input { Value = 0, },
						shadowColorBlue = Input { Value = 0, },
						blendGroup = Input { Value = 1, },
						blend = Input { Value = 0, },
						ignoreContentShape = Input { Value = 0, },
						legacyIsProcessRGBOnly = Input { Value = 0, },
						resolvefxVersion = Input { Value = "1.0", },
					},
					ViewInfo = OperatorInfo { Pos = { -110, 16.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Ellipse1 = EllipseMask {
					Inputs = {
						EffectMask = Input {
							SourceOp = "Ellipse2",
							Source = "Mask",
						},
						Filter = Input { Value = FuID { "Fast Gaussian" }, },
						PaintMode = Input { Value = FuID { "Subtract" }, },
						MaskWidth = Input { Value = 1920, },
						MaskHeight = Input { Value = 1080, },
						PixelAspect = Input { Value = { 1, 1 }, },
						ClippingMode = Input { Value = FuID { "None" }, },
						Center = Input { Value = { 0.134349030470914, 0.179802955665025 }, },
						Width = Input {
							Value = 0.1296341,
							Expression = "Height",
						},
						Height = Input { Value = 0.1296341, },
					},
					ViewInfo = OperatorInfo { Pos = { -110, -49.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Ellipse2 = EllipseMask {
					Inputs = {
						Filter = Input { Value = FuID { "Fast Gaussian" }, },
						MaskWidth = Input { Value = 1920, },
						MaskHeight = Input { Value = 1080, },
						PixelAspect = Input { Value = { 1, 1 }, },
						ClippingMode = Input { Value = FuID { "None" }, },
						Center = Input { Value = { 0.134349030470914, 0.182266009852217 }, },
						Width = Input {
							Value = 0.1560704,
							Expression = "Height",
						},
						Height = Input { Value = 0.1560704, },
					},
					ViewInfo = OperatorInfo { Pos = { -110, -82.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Ellipse3 = EllipseMask {
					Inputs = {
						Filter = Input { Value = FuID { "Fast Gaussian" }, },
						MaskWidth = Input { Value = 1920, },
						MaskHeight = Input { Value = 1080, },
						PixelAspect = Input { Value = { 1, 1 }, },
						ClippingMode = Input { Value = FuID { "None" }, },
						Center = Input { Value = { 0.1343490304709, 0.180403 }, },
						Width = Input {
							Value = 0.133998743739034,
							Expression = "Height",
						},
						Height = Input { Value = 0.133998743739, },
					},
					ViewInfo = OperatorInfo { Pos = { 0, -16.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Merge2 = Merge {
					Inputs = {
						Background = Input {
							SourceOp = "Merge1",
							Source = "Output",
						},
						Foreground = Input {
							SourceOp = "CircleCentre",
							Source = "Output",
						},
						PerformDepthMerge = Input { Value = 0, },
					},
					ViewInfo = OperatorInfo { Pos = { 0, 49.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Transform2 = Transform {
					Inputs = {
						Pivot = Input { Value = { 0.132080536912752, 0.180597014925373 }, },
						Size = Input {
							SourceOp = "Transform2Size",
							Source = "Value",
						},
						Input = Input {
							SourceOp = "Merge2",
							Source = "Output",
						},
					},
					ViewInfo = OperatorInfo { Pos = { 0, 115.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Transform2Size = BezierSpline {
					SplineColor = { Red = 225, Green = 0, Blue = 225 },
					NameSet = true,
					KeyFrames = {
						[0] = { 0, RH = { 5, 0 } },
						[15] = { 1, LH = { 10, 1 } }
					}
				},
				Merge6 = Merge {
					Inputs = {
						Background = Input {
							SourceOp = "Transform1",
							Source = "Output",
						},
						Foreground = Input {
							SourceOp = "Transform2",
							Source = "Output",
						},
						PerformDepthMerge = Input { Value = 0, },
					},
					ViewInfo = OperatorInfo { Pos = { 0, 148.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				DropShadow2 = ofx.com.blackmagicdesign.resolvefx.dropshadow {
					Inputs = {
						Source = Input {
							SourceOp = "Merge6",
							Source = "Output",
						},
						shadowStrength = Input { Value = 0.5, },
						shadowAngle = Input { Value = 37.5, },
						ShadowDistance = Input { Value = 0.0500000007450581, },
						shadowBlur = Input { Value = 0.550000011920929, },
						shadowColorRed = Input { Value = 0, },
						shadowColorGreen = Input { Value = 0, },
						shadowColorBlue = Input { Value = 0, },
						blendGroup = Input { Value = 1, },
						blend = Input { Value = 0, },
						ignoreContentShape = Input { Value = 0, },
						legacyIsProcessRGBOnly = Input { Value = 0, },
						resolvefxVersion = Input { Value = "1.0", },
					},
					ViewInfo = OperatorInfo { Pos = { 110, 148.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				Merge7 = Merge {
					Inputs = {
						Background = Input {
							SourceOp = "DropShadow2",
							Source = "Output",
						},
						Foreground = Input {
							SourceOp = "LowerText",
							Source = "Output",
						},
						Size = Input { Value = 0.896, },
						PerformDepthMerge = Input { Value = 0, },
					},
					ViewInfo = OperatorInfo { Pos = { 220, 148.5 } },
				},
				Merge8 = Merge {
					Inputs = {
						Background = Input {
							SourceOp = "Merge7",
							Source = "Output",
						},
						Foreground = Input {
							SourceOp = "Speedtext",
							Source = "Output",
						},
						PerformDepthMerge = Input { Value = 0, },
					},
					ViewInfo = OperatorInfo { Pos = { 330, 148.5 } },
				},
				Size = Transform {
					NameSet = true,
					Inputs = {
						Input = Input {
							SourceOp = "Merge8",
							Source = "Output",
						},
					},
					ViewInfo = OperatorInfo { Pos = { 440, 148.5 } },
					Colors = { TileColor = { R = 0.92156862745098, G = 0.431372549019608, B = 0 }, }
				},
				responsive = MacroOperator {
					CtrlWZoom = false,
					Inputs = ordered() {
						MainInput1 = InstanceInput {
							SourceOp = "Dissolve1",
							Source = "Foreground",
						},
						MainInput2 = InstanceInput {
							SourceOp = "TimeSpeed1",
							Source = "Input",
						}
					},
					Outputs = {
						MainOutput1 = InstanceOutput {
							SourceOp = "Dissolve1",
							Source = "Output",
						}
					},
					ViewInfo = GroupInfo { Pos = { 605, 181.5 } },
					Tools = ordered() {
						Dissolve1 = Dissolve {
							Transitions = {
								[0] = "DFTDissolve"
							},
							CtrlWShown = false,
							Inputs = {
								Mix = Input { Expression = "iif((comp.RenderEnd-time)<(comp.RenderEnd/2),0,1)", },
								Background = Input {
									SourceOp = "TimeSpeed1",
									Source = "Output",
								},
								Foreground = Input {
									SourceOp = "Size",
									Source = "Output",
								},
							},
							ViewInfo = OperatorInfo { Pos = { 0, 74.7577 } },
						},
						TimeSpeed1 = TimeSpeed {
							CtrlWZoom = false,
							CtrlWShown = false,
							Inputs = {
								Speed = Input { Value = -1, },
								Input = Input {
									SourceOp = "Size",
									Source = "Output",
								},
							},
							ViewInfo = OperatorInfo { Pos = { 0, 8.75744 } },
						}
					},
				}
			},
		}
	},
	ActiveTool = "Lower3rdCircle01"
}

I have attempted to describe how to add a dropdown menu directly within the Lua script. I am sure this can be done within Fusion but have yet to find a way. I can add the label script in fusion by using the edit control option but have not discovered how to make the dropdown menus show in the inspector. So for now editing the Lua script is my only option.