commit 1af6bee500fea2210ce12768d15355f37bbe4e61 Author: rob Date: Sun Dec 21 22:13:47 2008 +0000 vanilla commit diff --git a/SuperCollider.tmbundle/Commands/Clear post window.tmCommand b/SuperCollider.tmbundle/Commands/Clear post window.tmCommand new file mode 100644 index 0000000..298b819 --- /dev/null +++ b/SuperCollider.tmbundle/Commands/Clear post window.tmCommand @@ -0,0 +1,21 @@ + + + + + beforeRunningCommand + nop + command + require_cmd sc3ctrl +sc3ctrl -c + input + none + keyEquivalent + @C + name + Clear post window + output + discard + uuid + 264ACF44-52AC-4AD4-8C13-0F49E0DAAA12 + + diff --git a/SuperCollider.tmbundle/Commands/Free all nodes.tmCommand b/SuperCollider.tmbundle/Commands/Free all nodes.tmCommand new file mode 100644 index 0000000..0e40d3f --- /dev/null +++ b/SuperCollider.tmbundle/Commands/Free all nodes.tmCommand @@ -0,0 +1,21 @@ + + + + + beforeRunningCommand + nop + command + require_cmd sc3ctrl +sc3ctrl -s + input + none + keyEquivalent + ^. + name + Stop + output + discard + uuid + 81F7F82A-5C77-463E-BE36-15E0DAFF9930 + + diff --git a/SuperCollider.tmbundle/Commands/Help.tmCommand b/SuperCollider.tmbundle/Commands/Help.tmCommand new file mode 100644 index 0000000..a5daddf --- /dev/null +++ b/SuperCollider.tmbundle/Commands/Help.tmCommand @@ -0,0 +1,24 @@ + + + + + beforeRunningCommand + nop + command + require_cmd sc3ctrl +sc3ctrl -d $TM_SELECTED_TEXT + + fallbackInput + word + input + none + keyEquivalent + @d + name + Help + output + discard + uuid + EAC732CB-6B38-4E0A-9BD4-D377562331D9 + + diff --git a/SuperCollider.tmbundle/Commands/Implementations of.tmCommand b/SuperCollider.tmbundle/Commands/Implementations of.tmCommand new file mode 100644 index 0000000..86935e4 --- /dev/null +++ b/SuperCollider.tmbundle/Commands/Implementations of.tmCommand @@ -0,0 +1,23 @@ + + + + + beforeRunningCommand + nop + command + require_cmd sc3ctrl +sc3ctrl -y $TM_SELECTED_TEXT + fallbackInput + word + input + selection + keyEquivalent + @y + name + Implementations of + output + discard + uuid + 3BAE7DE4-D06A-422B-94A3-7F542C47ED0F + + diff --git a/SuperCollider.tmbundle/Commands/Interpret code 2.tmCommand b/SuperCollider.tmbundle/Commands/Interpret code 2.tmCommand new file mode 100644 index 0000000..501e20c --- /dev/null +++ b/SuperCollider.tmbundle/Commands/Interpret code 2.tmCommand @@ -0,0 +1,25 @@ + + + + + beforeRunningCommand + nop + command + #!/usr/bin/env ruby +cmd = ENV['TM_SELECTED_TEXT'] || ENV['TM_CURRENT_LINE'] +ENV['SC_INTERPRET_TEXT'] = cmd +%x{sc3ctrl -x} + fallbackInput + line + input + selection + keyEquivalent +  + name + Interpret + output + showAsTooltip + uuid + FB64DE22-E1F3-48CC-AE67-21B7E008ADD5 + + diff --git a/SuperCollider.tmbundle/Commands/Open Class file.tmCommand b/SuperCollider.tmbundle/Commands/Open Class file.tmCommand new file mode 100644 index 0000000..682ae76 --- /dev/null +++ b/SuperCollider.tmbundle/Commands/Open Class file.tmCommand @@ -0,0 +1,21 @@ + + + + + beforeRunningCommand + nop + command + require_cmd sc3ctrl +sc3ctrl -j $TM_SELECTED_TEXT + input + selection + keyEquivalent + @j + name + Open Class file + output + discard + uuid + 293C4F9B-E1A4-4D01-83E7-0698112C7FA4 + + diff --git a/SuperCollider.tmbundle/Commands/References to.tmCommand b/SuperCollider.tmbundle/Commands/References to.tmCommand new file mode 100644 index 0000000..d201c48 --- /dev/null +++ b/SuperCollider.tmbundle/Commands/References to.tmCommand @@ -0,0 +1,21 @@ + + + + + beforeRunningCommand + nop + command + require_cmd sc3ctrl +sc3ctrl -y $TM_SELECTED_TEXT + input + selection + keyEquivalent + @Y + name + References to + output + discard + uuid + 22917CBF-054E-49ED-8AFA-7B72C0CFFA3A + + diff --git a/SuperCollider.tmbundle/Commands/Restart.tmCommand b/SuperCollider.tmbundle/Commands/Restart.tmCommand new file mode 100644 index 0000000..1fd2e3d --- /dev/null +++ b/SuperCollider.tmbundle/Commands/Restart.tmCommand @@ -0,0 +1,21 @@ + + + + + beforeRunningCommand + saveActiveFile + command + require_cmd sc3ctrl +sc3ctrl -k + input + none + keyEquivalent + @k + name + Recompile class library + output + discard + uuid + 0EE79AEB-E9A7-4ABE-98A0-6CDBF3F3777A + + diff --git a/SuperCollider.tmbundle/Commands/untitled.tmCommand b/SuperCollider.tmbundle/Commands/untitled.tmCommand new file mode 100644 index 0000000..9c4a2b0 --- /dev/null +++ b/SuperCollider.tmbundle/Commands/untitled.tmCommand @@ -0,0 +1,21 @@ + + + + + beforeRunningCommand + nop + command + require_cmd sc3ctrl +sc3ctrl -p + input + none + keyEquivalent + @? + name + Post window to front + output + discard + uuid + 81E4BC21-07E5-4E61-B5C8-3CC5B527C8CE + + diff --git a/SuperCollider.tmbundle/README b/SuperCollider.tmbundle/README new file mode 100644 index 0000000..b1012b3 --- /dev/null +++ b/SuperCollider.tmbundle/README @@ -0,0 +1,75 @@ +SuperCollider/TextMate bundle +============================= + +Contained is a SuperCollider bundle for TextMate. The bundle utilizes OSX's AppleScript to automate basic SC functionality, such as executing code, stopping playback and recompiling the class library, all using standard keyboard shortcuts, and all from within TextMate. + +This bundle is still in development/beta phase, please report any problems or comments. + + +Prerequisites +============= + +SuperCollider - a recent build: http://supercollider.wesleyan.edu/ +TextMate - http://macromates.com/ +Git - http://code.google.com/p/git-osx-installer/ or http://git.or.cz/ + + +Installation +============ + +cd ~/Library/Application\ Support/TextMate/Bundles/ +git clone git://github.com/rfwatson/textmate-supercollider.git SuperCollider.tmbundle +defaults write /Applications/SuperCollider/SuperCollider.app/Contents/Info NSAppleScriptEnabled -bool YES + +The final command enables basic AppleScript functionality in SuperCollider, and is required. +You may need to adapt the above commands to match your paths to TextMate Bundles/, and SuperCollider.app. + + +Usage +===== + +1) Launch TextMate. Open a .sc file. Ensure SuperCollider bundle is selected. + +2) Launch SuperCollider.app. + +The following key commands should work in TextMate: + +ENTER - execute line, or selection if available +CTRL-. - stop playback +CMD-K - recompile class library +CMD-D - open help +SHIFT-CMD-D - open help browser +CMD-? - post window to front +SHIFT-CMD-C - clear post window +CTRL-ALT-CMD-S - switch to SuperCollider mode (should be automatic with .sc files) + + +LIMITATIONS +=========== + +Selecting a word and searching the help file, or class definition, for it is not yet implemented. For the meantime, I find the quickest way to access these files is to copy them somewhere in your home directory, and then use Spotlight to search for them (shortcut: CMD-spacebar). + +TextMate does not handle .rtf files, so old source files may need copy-and-pasting into TextMate, or otherwise converting to plain text. + + +CREDITS +======= + +Jacob Rus's menu_click functions: http://pastie.org/14358 + + +TODO +==== + +- Tidy up syntax highlighting, is somewhat messy at the moment +- Enable searching of help files/class defs from within TextMate +- Clean up AppleScript/menu_click function +- Some strange menu rendering problems when switching between apps?? +- ?????? + + +CONTACT +======= + +Contact me via github: +http://github.com/rfwatson diff --git a/SuperCollider.tmbundle/Snippets/Buffer_read.tmSnippet b/SuperCollider.tmbundle/Snippets/Buffer_read.tmSnippet new file mode 100644 index 0000000..27761ad --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/Buffer_read.tmSnippet @@ -0,0 +1,14 @@ + + + + + content + Buffer.read(${1:s}, "${2:sounds/Amen.wav}"); + name + Buffer.read + tabTrigger + buf + uuid + 7BF22058-5A13-443D-9809-BD68A75EAFB3 + + diff --git a/SuperCollider.tmbundle/Snippets/Create Synth.tmSnippet b/SuperCollider.tmbundle/Snippets/Create Synth.tmSnippet new file mode 100644 index 0000000..94d127b --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/Create Synth.tmSnippet @@ -0,0 +1,14 @@ + + + + + content + Synth(\\${1:foobar}, [\\${2:arg}, ${3:value}]); + name + Create Synth + tabTrigger + syn + uuid + 5C56B0A4-BC6D-4A15-8876-BF43BE54AC63 + + diff --git a/SuperCollider.tmbundle/Snippets/Create SynthDef.tmSnippet b/SuperCollider.tmbundle/Snippets/Create SynthDef.tmSnippet new file mode 100644 index 0000000..851b1ef --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/Create SynthDef.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + SynthDef(\\${1:foobar}) { |${2:out=0}$3| + $0 +}.play(s); + name + Create SynthDef + tabTrigger + sdef + uuid + 99EFA3F0-FDE6-4209-BED6-E051109CC51A + + diff --git a/SuperCollider.tmbundle/Snippets/Create function.tmSnippet b/SuperCollider.tmbundle/Snippets/Create function.tmSnippet new file mode 100644 index 0000000..6c23377 --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/Create function.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + { |${1:arg=value}| + $2 + + name + Create function + tabTrigger + { + uuid + C56D8EA0-215E-438C-B039-23830645FFDA + + diff --git a/SuperCollider.tmbundle/Snippets/EnvGen_kr.tmSnippet b/SuperCollider.tmbundle/Snippets/EnvGen_kr.tmSnippet new file mode 100644 index 0000000..11456fa --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/EnvGen_kr.tmSnippet @@ -0,0 +1,14 @@ + + + + + content + EnvGen.kr(${1:env}, doneAction: ${2:2}) + name + EnvGen.kr + tabTrigger + egen + uuid + F70E5246-BA0F-4201-8C63-09D8CE38A690 + + diff --git a/SuperCollider.tmbundle/Snippets/FlowLayout.tmSnippet b/SuperCollider.tmbundle/Snippets/FlowLayout.tmSnippet new file mode 100644 index 0000000..2cada67 --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/FlowLayout.tmSnippet @@ -0,0 +1,14 @@ + + + + + content + w.view.decorator = FlowLayout(w.view.bounds); + name + FlowLayout + tabTrigger + flow + uuid + 2C468C9B-66BB-40C6-B845-E2360D4717B4 + + diff --git a/SuperCollider.tmbundle/Snippets/Out_ar.tmSnippet b/SuperCollider.tmbundle/Snippets/Out_ar.tmSnippet new file mode 100644 index 0000000..b623790 --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/Out_ar.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + Out.ar(${1:out}, + $2 +); + name + Out.ar + tabTrigger + Out + uuid + 59AA6C90-F786-434B-B10E-DA608EFBC824 + + diff --git a/SuperCollider.tmbundle/Snippets/Routine.tmSnippet b/SuperCollider.tmbundle/Snippets/Routine.tmSnippet new file mode 100644 index 0000000..57c0a4b --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/Routine.tmSnippet @@ -0,0 +1,17 @@ + + + + + content + Routine { + + ${1:1.wait} +}; + name + Routine + tabTrigger + rout + uuid + 60CB2E7D-7CB0-478E-89D8-0D1EDB28B729 + + diff --git a/SuperCollider.tmbundle/Snippets/SCWindow_new.tmSnippet b/SuperCollider.tmbundle/Snippets/SCWindow_new.tmSnippet new file mode 100644 index 0000000..54b56e9 --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/SCWindow_new.tmSnippet @@ -0,0 +1,14 @@ + + + + + content + SCWindow("${1:window title}", Rect(${2:x}, ${3:y}, ${4:width}, ${5:height})); + name + SCWindow.new + tabTrigger + win + uuid + C5F4C24C-AFE2-4B63-A925-7DA638E8BE1A + + diff --git a/SuperCollider.tmbundle/Snippets/Server_killAll.tmSnippet b/SuperCollider.tmbundle/Snippets/Server_killAll.tmSnippet new file mode 100644 index 0000000..1bc8d4c --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/Server_killAll.tmSnippet @@ -0,0 +1,14 @@ + + + + + content + Server.killAll; Server.default.boot + name + Server.killAll + tabTrigger + sk + uuid + C0B1536B-6B8C-4803-A81C-542575112AEA + + diff --git a/SuperCollider.tmbundle/Snippets/_standardizePath.tmSnippet b/SuperCollider.tmbundle/Snippets/_standardizePath.tmSnippet new file mode 100644 index 0000000..aff21c8 --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/_standardizePath.tmSnippet @@ -0,0 +1,14 @@ + + + + + content + .standardizePath$0 + name + .standardizePath + tabTrigger + .sp + uuid + FD6AB222-41B0-4851-AE06-D91F5422D7E1 + + diff --git a/SuperCollider.tmbundle/Snippets/do ___.tmSnippet b/SuperCollider.tmbundle/Snippets/do ___.tmSnippet new file mode 100644 index 0000000..d33cf7c --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/do ___.tmSnippet @@ -0,0 +1,16 @@ + + + + + content + do { |${1:arg}| + $2 +}; + name + do ... + tabTrigger + do + uuid + CD1B6200-5017-4892-9A71-8C217F308C5A + + diff --git a/SuperCollider.tmbundle/Snippets/if ___.tmSnippet b/SuperCollider.tmbundle/Snippets/if ___.tmSnippet new file mode 100644 index 0000000..7b5c412 --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/if ___.tmSnippet @@ -0,0 +1,18 @@ + + + + + content + if(${1:condition}) { + ${2:true} +} { + ${3:false} +}; + name + if ... + tabTrigger + if + uuid + C0F1C9B0-6393-4B2B-86B4-40010363DCDE + + diff --git a/SuperCollider.tmbundle/Snippets/play.tmSnippet b/SuperCollider.tmbundle/Snippets/play.tmSnippet new file mode 100644 index 0000000..1431afc --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/play.tmSnippet @@ -0,0 +1,14 @@ + + + + + content + { ${1:SinOsc.ar} }.play + name + play + tabTrigger + play + uuid + F24F5356-B6BD-4849-9287-BC500D18F84D + + diff --git a/SuperCollider.tmbundle/Snippets/untitled 2.tmSnippet b/SuperCollider.tmbundle/Snippets/untitled 2.tmSnippet new file mode 100644 index 0000000..6a943f0 --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/untitled 2.tmSnippet @@ -0,0 +1,14 @@ + + + + + content + s.queryAllNodes + name + s.queryAllNodes + tabTrigger + s.q + uuid + F0523CC5-90CA-49B5-82BA-4EF94A675767 + + diff --git a/SuperCollider.tmbundle/Snippets/untitled 3.tmSnippet b/SuperCollider.tmbundle/Snippets/untitled 3.tmSnippet new file mode 100644 index 0000000..452863a --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/untitled 3.tmSnippet @@ -0,0 +1,14 @@ + + + + + content + .openHelpFile + name + .openHelpFile + tabTrigger + .h + uuid + 8FA2A21C-E1C9-41AE-AEAB-7FF573747A7C + + diff --git a/SuperCollider.tmbundle/Snippets/untitled 4.tmSnippet b/SuperCollider.tmbundle/Snippets/untitled 4.tmSnippet new file mode 100644 index 0000000..45e914f --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/untitled 4.tmSnippet @@ -0,0 +1,14 @@ + + + + + content + .openCodeFile + name + .openCodeFile + tabTrigger + .c + uuid + 2635D12B-F4B6-45B6-8BA4-B50215737165 + + diff --git a/SuperCollider.tmbundle/Snippets/untitled 5.tmSnippet b/SuperCollider.tmbundle/Snippets/untitled 5.tmSnippet new file mode 100644 index 0000000..bf029f8 --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/untitled 5.tmSnippet @@ -0,0 +1,14 @@ + + + + + content + ^super.new.init$0; + name + ^super.new.init + tabTrigger + rsup + uuid + AAB067B5-0CF4-476D-8EF6-A5240A1883F1 + + diff --git a/SuperCollider.tmbundle/Snippets/untitled 6.tmSnippet b/SuperCollider.tmbundle/Snippets/untitled 6.tmSnippet new file mode 100644 index 0000000..103bbb7 --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/untitled 6.tmSnippet @@ -0,0 +1,14 @@ + + + + + content + asCompileString + name + asCompileString + tabTrigger + ascs + uuid + BA4AE872-4314-4D57-B2C6-6A66CCC5F55E + + diff --git a/SuperCollider.tmbundle/Snippets/untitled 7.tmSnippet b/SuperCollider.tmbundle/Snippets/untitled 7.tmSnippet new file mode 100644 index 0000000..0b7f82e --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/untitled 7.tmSnippet @@ -0,0 +1,14 @@ + + + + + content + doneAction: ${1:2}$2 + name + doneAction + tabTrigger + da + uuid + EEDC65AF-1F53-4E2F-AA08-D1E04FAC5B1D + + diff --git a/SuperCollider.tmbundle/Snippets/untitled.tmSnippet b/SuperCollider.tmbundle/Snippets/untitled.tmSnippet new file mode 100644 index 0000000..9ff29e5 --- /dev/null +++ b/SuperCollider.tmbundle/Snippets/untitled.tmSnippet @@ -0,0 +1,14 @@ + + + + + content + .postln + name + .postln + tabTrigger + .p + uuid + 89218E54-78ED-4C0B-92C9-8FEC7E3B2664 + + diff --git a/SuperCollider.tmbundle/Syntaxes/SuperCollider.tmLanguage b/SuperCollider.tmbundle/Syntaxes/SuperCollider.tmLanguage new file mode 100644 index 0000000..dddfbde --- /dev/null +++ b/SuperCollider.tmbundle/Syntaxes/SuperCollider.tmLanguage @@ -0,0 +1,159 @@ + + + + + fileTypes + + sc + + foldingStartMarker + \{|\/\* + foldingStopMarker + \}|\*\/ + keyEquivalent + ^~@s + name + SuperCollider + patterns + + + match + \b(arg|var|classvar|this|thisThread|thisMethod|thisFunction|true|false|inf|nil)\b + name + keyword.control.supercollider + + + begin + " + end + " + name + string.quoted.double.supercollider + patterns + + + match + \\. + name + constant.character.escape.supercollider + + + + + begin + ' + end + ' + name + entity.name.symbol.supercollider + patterns + + + match + \\. + name + constant.character.escape.supercollider + + + + + match + [a-z][a-zA-Z0-9_]*\: + name + support.name.tag.supercollider + + + captures + + 1 + + name + entity.name.class.supercollider + + + match + ^\s*\+*\s*([A-Z]{1}[a-zA-Z0-9_]*)\s*\:{1}\s*([A-Z]{1}[a-zA-Z0-9_]*)\s*\{ + + + captures + + 1 + + name + entity.name.class.supercollider + + + match + ^([A-Z_]{1}[a-zA-Z0-9_]*)[^a-zA-Z0-9_] + + + match + \|[a-zA-Z0-9\#\[\]\_\=\.\(\)[[:space:]]\,]+\| + name + variable.parameter.function.supercollider + + + captures + + 1 + + name + entity.name.class.supercollider + + + match + [^a-zA-Z0-9\\]([A-Z_]{1}[a-zA-Z0-9_]*)[^a-zA-Z0-9_] + + + match + \\[a-zA-Z0-9\_]+ + name + entity.name.symbol.supercollider + + + captures + + 1 + + name + entity.name.function.supercollider + + + match + ^\s*(\**[a-z]{1}[a-zA-Z0-9_]+)\s*\{ + + + match + \~[a-zA-Z0-9]+ + name + variable.language.supercollider + + + match + \/\/.* + name + comment.single.supercollider + + + begin + \/\* + end + \*\/ + name + comment.multiline.supercollider + + + comment + source: ruby bundle + match + \b(0[xX]\h(?>_?\h)*|\d(?>_?\d)*(\.(?![^[:space:][:digit:]])(?>_?\d)*)?([eE][-+]?\d(?>_?\d)*)?|0[bB][01]+)\b + name + constant.numeric.supercollider + + + scopeName + source.supercollider + uuid + F63E530D-4C84-4C66-9EAA-6FC504FA4587 + + diff --git a/SuperCollider.tmbundle/info.plist b/SuperCollider.tmbundle/info.plist new file mode 100644 index 0000000..9d608cf --- /dev/null +++ b/SuperCollider.tmbundle/info.plist @@ -0,0 +1,44 @@ + + + + + name + SuperCollider + ordering + + F63E530D-4C84-4C66-9EAA-6FC504FA4587 + 2C468C9B-66BB-40C6-B845-E2360D4717B4 + EEDC65AF-1F53-4E2F-AA08-D1E04FAC5B1D + F70E5246-BA0F-4201-8C63-09D8CE38A690 + C56D8EA0-215E-438C-B039-23830645FFDA + 60CB2E7D-7CB0-478E-89D8-0D1EDB28B729 + C5F4C24C-AFE2-4B63-A925-7DA638E8BE1A + C0F1C9B0-6393-4B2B-86B4-40010363DCDE + CD1B6200-5017-4892-9A71-8C217F308C5A + 99EFA3F0-FDE6-4209-BED6-E051109CC51A + 7BF22058-5A13-443D-9809-BD68A75EAFB3 + 5C56B0A4-BC6D-4A15-8876-BF43BE54AC63 + AAB067B5-0CF4-476D-8EF6-A5240A1883F1 + F0523CC5-90CA-49B5-82BA-4EF94A675767 + F24F5356-B6BD-4849-9287-BC500D18F84D + 59AA6C90-F786-434B-B10E-DA608EFBC824 + 89218E54-78ED-4C0B-92C9-8FEC7E3B2664 + 8FA2A21C-E1C9-41AE-AEAB-7FF573747A7C + 2635D12B-F4B6-45B6-8BA4-B50215737165 + FD6AB222-41B0-4851-AE06-D91F5422D7E1 + BA4AE872-4314-4D57-B2C6-6A66CCC5F55E + C0B1536B-6B8C-4803-A81C-542575112AEA + EAC732CB-6B38-4E0A-9BD4-D377562331D9 + 81F7F82A-5C77-463E-BE36-15E0DAFF9930 + FB64DE22-E1F3-48CC-AE67-21B7E008ADD5 + 81E4BC21-07E5-4E61-B5C8-3CC5B527C8CE + 0EE79AEB-E9A7-4ABE-98A0-6CDBF3F3777A + 264ACF44-52AC-4AD4-8C13-0F49E0DAAA12 + 293C4F9B-E1A4-4D01-83E7-0698112C7FA4 + 3BAE7DE4-D06A-422B-94A3-7F542C47ED0F + 22917CBF-054E-49ED-8AFA-7B72C0CFFA3A + + uuid + 7613A472-3FAB-454C-8CF2-2E62F0D00920 + +