Загрузка данных
Glow - Язык программирования для управления фонариком на технике Apple через быстрые команды. Дата создания: 9 октября 2026
Второе название: Glow Console Code
Расширения:
.glow
.gw
.gwcc
.gwcd
{"WFWorkflowMinimumClientVersionString":"900","WFWorkflowMinimumClientVersion":900,"WFWorkflowIcon":{"WFWorkflowIconStartColor":255,"WFWorkflowIconGlyphNumber":61731},"WFWorkflowClientVersion":"5028.0.21","WFWorkflowOutputContentItemClasses":[],"WFWorkflowHasOutputFallback":false,"WFWorkflowActions":[{"WFWorkflowActionIdentifier":"is.workflow.actions.gettext","WFWorkflowActionParameters":{"WFTextActionText":{"Value":{"string":"","attachmentsByRange":{"{0, 1}":{"Type":"Ask"}}},"WFSerializationType":"WFTextTokenString"},"UUID":"C0FD0C6D-2CEE-4EA0-AC68-5E028D3D101A"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.nothing","WFWorkflowActionParameters":{"UUID":"6436BF27-5A98-49E5-920A-C6CE08EBA2C4"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.text.replace","WFWorkflowActionParameters":{"WFInput":{"Value":{"string":"","attachmentsByRange":{"{0, 1}":{"OutputUUID":"C0FD0C6D-2CEE-4EA0-AC68-5E028D3D101A","Type":"ActionOutput","OutputName":"Текст"}}},"WFSerializationType":"WFTextTokenString"},"WFReplaceTextRegularExpression":true,"UUID":"5467AB9E-089E-4F93-8BC5-510A87F91F10","WFReplaceTextReplace":{"Value":{"string":"","attachmentsByRange":{"{0, 1}":{"OutputUUID":"6436BF27-5A98-49E5-920A-C6CE08EBA2C4","Type":"ActionOutput","OutputName":"Ничего"}}},"WFSerializationType":"WFTextTokenString"},"WFReplaceTextFind":"#.*"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.gettext","WFWorkflowActionParameters":{"WFTextActionText":{"Value":{"string":"data:text\/html,<!DOCTYPE html><html><head><meta charset=\"utf-8\"><\/head><body><pre id=\"j\"><\/pre><script>\nconst code = `\n\n`;\n\nconst res={};const calcVars={};const repeatVars={};let step=1;let lastLightVal=\"0\";const lines=code.split('\\n');\nfunction cleanExpr(e){return e.replace(\/,\/g,'.').replace(\/\\*([a-zA-Z0-9_]+)\/g,(m,n)=>calcVars[n]!==undefined?calcVars[n]:'0');}\nfunction formatNum(v,decimals=2){if(isNaN(v))return\"0\";if(v<0)v=0;if(v>1)v=1;return String(Number(v.toFixed(decimals))).replace('.',',');}\nfunction getOp(s){for(let o of ['+','-','*','\/']){if(s.includes(o))return o;}return null;}\n\nfor(let line of lines){\n line=line.trim();if(!line)continue;\n if(line.includes('stop()')){res[step++]=\"stop\";break;}\n \n if(line.startsWith('num(')){\n const eq=line.indexOf('=');if(eq===-1)continue;\n let name=line.substring(eq+1).trim();if(name.startsWith('*'))name=name.substring(1).trim();\n const inner=line.substring(4,line.indexOf(')'));const parts=inner.split(';');let flatArr=[];\n for(let p of parts){\n p=p.trim();\n if(p.startsWith('*')){\n const varName=p.substring(1).trim();\n if(repeatVars[varName]){flatArr=flatArr.concat(repeatVars[varName]);}\n else if(calcVars[varName]!==undefined){flatArr.push(formatNum(calcVars[varName],6));}\n else{flatArr.push(\"0\");}\n }else{flatArr.push(formatNum(parseFloat(cleanExpr(p)),6));}\n }\n repeatVars[name]=flatArr.map(v=>v.replace(\/,0+\\(\/, '').replace(\/(,[0-9]+[1-9])0+\\)\/, '\\$1'));\n continue;\n }\n\n if(line.startsWith('calc(')){\n const eq=line.indexOf('=');if(eq===-1)continue;\n let name=line.substring(eq+1).trim();if(name.startsWith('*'))name=name.substring(1).trim();\n const inner=line.substring(5,line.indexOf(')'));\n try{calcVars[name]=eval(cleanExpr(inner));}catch(err){calcVars[name]=0;}\n continue;\n }\n \n if(line.startsWith('calc.fade(')){\n const eq=line.indexOf('=');if(eq===-1)continue;\n let name=line.substring(eq+1).trim();if(name.startsWith('*'))name=name.substring(1).trim();\n const inner=line.substring(10,line.indexOf(')'));const semi=inner.indexOf(';');if(semi===-1)continue;\n const count=parseInt(inner.substring(semi+1).trim());const expr=inner.substring(0,semi);\n const op=getOp(expr);if(!op)continue;const opIdx=expr.find?expr.find(op):expr.indexOf(op);\n try{\n const start=parseFloat(eval(cleanExpr(expr.substring(0,opIdx))));\n const opVal=parseFloat(eval(cleanExpr(expr.substring(opIdx+1))));\n const arr=[];\n for(let i=0;i<count;i++){\n let val=0;if(op==='+')val=start+(opVal*i);if(op==='-')val=start-(opVal*i);if(op==='*')val=start*Math.pow(opVal,i);if(op==='\/')val=start\/Math.pow(opVal,i);\n arr.push(formatNum(val,6));\n }\n repeatVars[name]=arr;\n }catch(err){}\n continue;\n }\n\n if(line.startsWith('speed(')){\n const eq=line.indexOf('=');if(eq===-1)continue;\n let name=line.substring(eq+1).trim();if(name.startsWith('*'))name=name.substring(1).trim();\n const inner=line.substring(6,line.indexOf(')'));const semi=inner.indexOf(';');if(semi===-1)continue;\n let srcName=inner.substring(0,semi).trim();if(srcName.startsWith('*'))srcName=srcName.substring(1).trim();\n const factor=parseFloat(inner.substring(semi+1).trim().replace(',','.'));\n if(repeatVars[srcName] && repeatVars[srcName].length > 0 && factor > 0){\n const srcArr = repeatVars[srcName];const arr = [];\n if(Number.isInteger(factor)){\n for(let i=0;i<srcArr.length;i+=factor){arr.push(srcArr[i]);}\n }else{\n const newLen=Math.max(1,Math.floor((srcArr.length-1)\/factor)+1);\n for(let i=0;i<newLen;i++){\n const srcIdx=i*factor;const baseIdx=Math.floor(srcIdx);const\nfraction=srcIdx-baseIdx;\n if(baseIdx+1<srcArr.length){\n const v1=parseFloat(srcArr[baseIdx].replace(',','.'));const v2=parseFloat(srcArr[baseIdx+1].replace(',','.'));\n arr.push(formatNum(v1+(v2-v1)*fraction,6));\n }else{if(baseIdx<srcArr.length && i===newLen-1){arr.push(srcArr[baseIdx]);}}\n }\n }\n repeatVars[name]=arr;\n }else{repeatVars[name]=[];}\n continue;\n }\n\n if(line.startsWith('invert(')){\n const eq=line.indexOf('=');if(eq===-1)continue;\n let name=line.substring(eq+1).trim();if(name.startsWith('*'))name=name.substring(1).trim();\n let srcName=line.substring(7,line.indexOf(')')).trim();if(srcName.startsWith('*'))srcName=srcName.substring(1).trim();\n if(repeatVars[srcName]){repeatVars[name]=[...repeatVars[srcName]].reverse();}else{repeatVars[name]=[];}\n continue;\n }\n\n if(line.startsWith('rand(')){\n const eq=line.indexOf('=');if(eq===-1)continue;\n let name=line.substring(eq+1).trim();if(name.startsWith('*'))name=name.substring(1).trim();\n const inner=line.substring(5,line.indexOf(')'));const semi=inner.indexOf(';');if(semi===-1)continue;\n const count=parseInt(inner.substring(semi+1).trim());const range=inner.substring(0,semi);\n const parts=range.split('-').map(s=>parseFloat(cleanExpr(s)));\n if(parts.length===2){\n const min=Math.min(parts[0],parts[1]),max=Math.max(parts[0],parts[1]);const arr=[];\n for(let i=0;i<count;i++){let v=Math.random()*(max-min)+min;arr.push(formatNum(v,6));}\n repeatVars[name]=arr;\n }\n continue;\n }\n\n if(line.startsWith('round(')){\n const eq=line.indexOf('=');if(eq===-1)continue;\n let name=line.substring(eq+1).trim();if(name.startsWith('*'))name=name.substring(1).trim();\n const inner=line.substring(6,line.indexOf(')'));const semi=inner.indexOf(';');if(semi===-1)continue;\n let srcName=inner.substring(0,semi).trim();if(srcName.startsWith('*'))srcName=srcName.substring(1).trim();\n const roundStepStr=inner.substring(semi+1).trim().replace(',','.');const roundStep=parseFloat(roundStepStr);\n let decimals=0;if(roundStepStr.includes('.')){decimals=roundStepStr.split('.')[1].length;}\n if(repeatVars[srcName]){\n repeatVars[name]=repeatVars[srcName].map(valStr=>{\n\nlet v=parseFloat(valStr.replace(',','.'));let rounded=Math.round(v\/roundStep)*roundStep;return formatNum(rounded,decimals);\n });\n }else if(calcVars[srcName]!==undefined){\n let v=calcVars[srcName];let rounded=Math.round(v\/roundStep)*roundStep;calcVars[name]=rounded;\n }\n continue;\n }\n\nif(line.startsWith('limit(')){\n const eq=line.indexOf('=');if(eq===-1)continue;\n let name=line.substring(eq+1).trim();if(name.startsWith('*'))name=name.substring(1).trim();\n const inner=line.substring(6,line.indexOf(')'));const parts=inner.split(';');if(parts.length!==3)continue;\n let srcName=parts[0].trim();if(srcName.startsWith('*'))srcName=srcName.substring(1).trim();\n const minL=parseFloat(cleanExpr(parts[1]));const maxL=parseFloat(cleanExpr(parts[2]));\n if(repeatVars[srcName]){\n repeatVars[name]=repeatVars[srcName].map(valStr=>{\n let v=parseFloat(valStr.replace(',','.'));if(v<minL)v=minL;if(v>maxL)v=maxL;return formatNum(v,6);\n });\n }else{repeatVars[name]=[];}\n continue;\n }\n\n if(line.startsWith('num.repeat(')){\n const eq=line.indexOf('=');if(eq===-1)continue;\n let name=line.substring(eq+1).trim();if(name.startsWith('*'))name=name.substring(1).trim();\n const inner=line.substring(11,line.indexOf(')'));const semi=inner.indexOf(';');if(semi===-1)continue;\n let srcName=inner.substring(0,semi).trim();if(srcName.startsWith('*'))srcName=srcName.substring(1).trim();\n const count=parseInt(inner.substring(semi+1).trim());\n if(repeatVars[srcName] && !isNaN(count) && count > 0){\n let flatArr=[];\n for(let i=0;i<count;i++){flatArr=flatArr.concat(repeatVars[srcName]);}\n repeatVars[name]=flatArr;\n }else{repeatVars[name]=[];}\n continue;\n }\n\n if(line.startsWith('fade(')){\n const eq=line.indexOf('=');if(eq===-1)continue;\n let name=line.substring(eq+1).trim();if(name.startsWith('*'))name=name.substring(1).trim();\n const inner=line.substring(5,line.indexOf(')'));const parts=inner.split(';');if(parts.length!==3)continue;\n try{\n const start=parseFloat(eval(cleanExpr(parts[0])));\n \/\/ ИСПРАВЛЕНО: Добавлен cleanExpr для корректного чтения переменных вроде *макс_яркость\n const end=parseFloat(eval(cleanExpr(parts[1]))); \n const steps=parseInt(parts[2].trim());\n const arr=[];\n for(let i=0;i<steps;i++){\n let t=steps>1 ? i\/(steps-1) : 0;\n let val=start+(end-start)*t;\n arr.push(formatNum(val,6));\n }\n repeatVars[name]=arr;\n }catch(err){}\n continue;\n }\n\n if(line.startsWith('ease(')){\n const eq=line.indexOf('=');if(eq===-1)continue;\n let name=line.substring(eq+1).trim();if(name.startsWith('*'))name=name.substring(1).trim();\n const inner=line.substring(5,line.indexOf(')'));const parts=inner.split(';');if(parts.length!==4)continue;\n try{\n const start=parseFloat(eval(cleanExpr(parts[0])));\n const end=parseFloat(eval(cleanExpr(parts[1])));\n const steps=parseInt(parts[2].trim());\n const type=parts[3].trim().toLowerCase();\n const arr=[];\n for(let i=0;i<steps;i++){\n let t=steps>1 ? i\/(steps-1) : 0;\n let easeT=t;\n if(type==='in'){\n easeT=t*t; \/\/ Ускорение (Quadratic EaseIn)\n }else if(type==='out'){\n easeT=t*(2-t); \/\/ Замедление (Quadratic EaseOut)\n }else if(type==='in-out'){\n easeT=t<0.5 ? 2*t*t : -1+(4-2*t)*t; \/\/ Плавный старт и финиш (Quadratic EaseInOut)\n }\n let val=start+(end-start)*easeT;\n arr.push(formatNum(val,6));\n }\n repeatVars[name]=arr;\n }catch(err){}\n continue;\n }\n\n if(line.startsWith('wait(')){\n const count=parseInt(line.substring(5,line.indexOf(')')).trim());\n if(!isNaN(count)){for(let i=0;i<count;i++){res[step++]=lastLightVal;}}\n continue;\n }\n \n if(line.startsWith('repeat(')){\n const semi=line.lastIndexOf(';');if(semi===-1)continue;\n const count=parseInt(line.substring(semi+1,line.lastIndexOf(')')).trim());\n const innerCommands=line.substring(7,semi).trim();\n \n for(let i=0;i<count;i++){\n \/\/ ИСПРАВЛЕНО: Регулярное выражение находит все вызовы функций внутри repeat по очереди\n const regex = \/([a-z.]+)\\(([^)]+)\\)\/g;\n let match;\n while ((match = regex.exec(innerCommands)) !== null) {\n const cmd = match[1].trim();\n const p = match[2].trim();\n \n if (cmd === 'light') {\n if(p.startsWith('*')){\n const name=p.substring(1).trim();\n if(repeatVars[name]){for(const val of repeatVars[name]){res[step++]=val;lastLightVal=val;}}\n else if(calcVars[name]!==undefined){const val=formatNum(calcVars[name]);res[step++]=val;lastLightVal=val;}\n }else{const val=p.replace('.',',');res[step++]=val;lastLightVal=val;}\n } \n else if (cmd === 'wait') {\n const waitCount = parseInt(p);\n if(!isNaN(waitCount)){for(let w=0;w<waitCount;w++){res[step++]=lastLightVal;}}\n }\n }\n }\n continue;\n }\n \n if(line.startsWith('light(')){\n let p=line.substring(6,line.indexOf(')')).trim();\n if(p.startsWith('*')){\n const name=p.substring(1).trim();\n if(repeatVars[name]){for(const val of repeatVars[name]){res[step++]=val;lastLightVal=val;}}\n else if(calcVars[name]!==undefined){const val=formatNum(calcVars[name]);res[step++]=val;lastLightVal=val;}\n }else{const val=p.replace('.',',');res[step++]=val;lastLightVal=val;}\n }\n}\ndocument.getElementById(\"j\").textContent=JSON.stringify(res,null,2);<\/script><\/body><\/html>","attachmentsByRange":{"{119, 1}":{"OutputUUID":"5467AB9E-089E-4F93-8BC5-510A87F91F10","Type":"ActionOutput","OutputName":"Обновленный текст"}}},"WFSerializationType":"WFTextTokenString"},"UUID":"A444CAF5-99FC-43B9-888A-EE8A04669A9C"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.url","WFWorkflowActionParameters":{"WFURLActionURL":{"Value":{"OutputUUID":"A444CAF5-99FC-43B9-888A-EE8A04669A9C","Type":"ActionOutput","OutputName":"Текст"},"WFSerializationType":"WFTextTokenAttachment"},"UUID":"FD8B2DEC-B68F-48E9-B2F0-A9533F86343B"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.getwebpagecontents","WFWorkflowActionParameters":{"WFInput":{"Value":{"string":"","attachmentsByRange":{"{0, 1}":{"OutputUUID":"FD8B2DEC-B68F-48E9-B2F0-A9533F86343B","Type":"ActionOutput","OutputName":"URL"}}},"WFSerializationType":"WFTextTokenString"},"UUID":"51617C24-9335-447D-9E48-6A232D2BDDB8"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.detect.text","WFWorkflowActionParameters":{"WFInput":{"Value":{"OutputUUID":"51617C24-9335-447D-9E48-6A232D2BDDB8","Type":"ActionOutput","OutputName":"Содержимое веб-страницы"},"WFSerializationType":"WFTextTokenAttachment"},"UUID":"78A7696E-6018-43DD-A148-FA2AD970F4E2"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.showresult","WFWorkflowActionParameters":{"Text":{"Value":{"string":"","attachmentsByRange":{"{0, 1}":{"OutputUUID":"78A7696E-6018-43DD-A148-FA2AD970F4E2","Type":"ActionOutput","OutputName":"Текст"}}},"WFSerializationType":"WFTextTokenString"}}},{"WFWorkflowActionIdentifier":"is.workflow.actions.detect.dictionary","WFWorkflowActionParameters":{"WFInput":{"Value":{"OutputUUID":"78A7696E-6018-43DD-A148-FA2AD970F4E2","Type":"ActionOutput","OutputName":"Текст"},"WFSerializationType":"WFTextTokenAttachment"},"UUID":"B8C88743-8C26-40F1-A765-86FF619F7FDB"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.number","WFWorkflowActionParameters":{"WFNumberActionNumber":"1","UUID":"B8AC25C5-83ED-470C-A25C-15C61BDEA99A"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.setvariable","WFWorkflowActionParameters":{"WFInput":{"Value":{"OutputUUID":"B8AC25C5-83ED-470C-A25C-15C61BDEA99A","Type":"ActionOutput","OutputName":"Число"},"WFSerializationType":"WFTextTokenAttachment"},"WFVariableName":"token"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.number","WFWorkflowActionParameters":{"WFNumberActionNumber":"1000000000000000","UUID":"C127E749-26D6-484D-8120-F27F07C7D5DC"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.repeat.count","WFWorkflowActionParameters":{"GroupingIdentifier":"2E4398FB-FF1E-45AE-8688-FD3F5CF8AC49","WFRepeatCount":{"Value":{"OutputUUID":"C127E749-26D6-484D-8120-F27F07C7D5DC","Type":"ActionOutput","OutputName":"Число"},"WFSerializationType":"WFTextTokenAttachment"},"WFControlFlowMode":0}},{"WFWorkflowActionIdentifier":"is.workflow.actions.getvalueforkey","WFWorkflowActionParameters":{"WFInput":{"Value":{"OutputUUID":"B8C88743-8C26-40F1-A765-86FF619F7FDB","Type":"ActionOutput","OutputName":"Словарь"},"WFSerializationType":"WFTextTokenAttachment"},"WFDictionaryKey":{"Value":{"string":"","attachmentsByRange":{"{0, 1}":{"VariableName":"token","Type":"Variable"}}},"WFSerializationType":"WFTextTokenString"},"UUID":"119D86BA-EAC2-4609-BBAC-DD7C268D0D03"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.conditional","WFWorkflowActionParameters":{"WFInput":{"Type":"Variable","Variable":{"Value":{"Type":"ActionOutput","OutputName":"Словарь","OutputUUID":"B8C88743-8C26-40F1-A765-86FF619F7FDB","Aggrandizements":[{"Type":"WFPropertyVariableAggrandizement","PropertyName":"Keys"}]},"WFSerializationType":"WFTextTokenAttachment"}},"WFControlFlowMode":0,"WFConditionalActionString":{"Value":{"string":"","attachmentsByRange":{"{0, 1}":{"VariableName":"token","Type":"Variable"}}},"WFSerializationType":"WFTextTokenString"},"GroupingIdentifier":"03C69DD5-A697-412F-9559-210832F18E85","WFCondition":999}},{"WFWorkflowActionIdentifier":"is.workflow.actions.setvariable","WFWorkflowActionParameters":{"WFInput":{"Value":{"OutputUUID":"B8AC25C5-83ED-470C-A25C-15C61BDEA99A","Type":"ActionOutput","OutputName":"Число"},"WFSerializationType":"WFTextTokenAttachment"},"WFVariableName":"token"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.conditional","WFWorkflowActionParameters":{"GroupingIdentifier":"03C69DD5-A697-412F-9559-210832F18E85","WFControlFlowMode":1}},{"WFWorkflowActionIdentifier":"is.workflow.actions.conditional","WFWorkflowActionParameters":{"WFControlFlowMode":2,"GroupingIdentifier":"03C69DD5-A697-412F-9559-210832F18E85","UUID":"5D017BEA-7072-46D1-898B-A7D40E0C0D16"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.conditional","WFWorkflowActionParameters":{"WFInput":{"Type":"Variable","Variable":{"Value":{"Type":"ActionOutput","OutputName":"Значение словаря","OutputUUID":"119D86BA-EAC2-4609-BBAC-DD7C268D0D03","Aggrandizements":[{"PropertyUserInfo":"WFItemName","Type":"WFPropertyVariableAggrandizement","PropertyName":"Name"}]},"WFSerializationType":"WFTextTokenAttachment"}},"WFControlFlowMode":0,"WFConditionalActionString":"0","GroupingIdentifier":"BEA138A4-68A1-4FE8-899B-D0ABCFF4A8B3","WFCondition":4}},{"WFWorkflowActionIdentifier":"is.workflow.actions.flashlight","WFWorkflowActionParameters":{"WFFlashlightLevel":{"Value":{"OutputUUID":"119D86BA-EAC2-4609-BBAC-DD7C268D0D03","Type":"ActionOutput","OutputName":"Значение словаря"},"WFSerializationType":"WFTextTokenAttachment"},"state":0}},{"WFWorkflowActionIdentifier":"is.workflow.actions.conditional","WFWorkflowActionParameters":{"GroupingIdentifier":"BEA138A4-68A1-4FE8-899B-D0ABCFF4A8B3","WFControlFlowMode":1}},{"WFWorkflowActionIdentifier":"is.workflow.actions.conditional","WFWorkflowActionParameters":{"WFInput":{"Type":"Variable","Variable":{"Value":{"Type":"ActionOutput","OutputName":"Значение словаря","OutputUUID":"119D86BA-EAC2-4609-BBAC-DD7C268D0D03","Aggrandizements":[{"PropertyUserInfo":"WFItemName","Type":"WFPropertyVariableAggrandizement","PropertyName":"Name"}]},"WFSerializationType":"WFTextTokenAttachment"}},"WFControlFlowMode":0,"WFConditionalActionString":"stop","GroupingIdentifier":"B78996A8-E659-45B5-A426-0236B33A4948","WFCondition":4}},{"WFWorkflowActionIdentifier":"is.workflow.actions.exit","WFWorkflowActionParameters":{}},{"WFWorkflowActionIdentifier":"is.workflow.actions.conditional","WFWorkflowActionParameters":{"GroupingIdentifier":"B78996A8-E659-45B5-A426-0236B33A4948","WFControlFlowMode":1}},{"WFWorkflowActionIdentifier":"is.workflow.actions.conditional","WFWorkflowActionParameters":{"WFInput":{"Type":"Variable","Variable":{"Value":{"Type":"ActionOutput","OutputName":"Значение словаря","OutputUUID":"119D86BA-EAC2-4609-BBAC-DD7C268D0D03","Aggrandizements":[{"PropertyUserInfo":"WFItemName","Type":"WFPropertyVariableAggrandizement","PropertyName":"Name"}]},"WFSerializationType":"WFTextTokenAttachment"}},"WFControlFlowMode":0,"GroupingIdentifier":"3FC430DD-FE7D-4EEF-84D6-970CC3FB9A1B","WFCondition":101}},{"WFWorkflowActionIdentifier":"is.workflow.actions.conditional","WFWorkflowActionParameters":{"GroupingIdentifier":"3FC430DD-FE7D-4EEF-84D6-970CC3FB9A1B","WFControlFlowMode":1}},{"WFWorkflowActionIdentifier":"is.workflow.actions.detect.number","WFWorkflowActionParameters":{"WFInput":{"Value":{"OutputUUID":"119D86BA-EAC2-4609-BBAC-DD7C268D0D03","Type":"ActionOutput","OutputName":"Значение словаря"},"WFSerializationType":"WFTextTokenAttachment"},"UUID":"1B2CC4CE-16F0-4780-B062-35D551B765E5"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.flashlight","WFWorkflowActionParameters":{"WFFlashlightLevel":{"Value":{"OutputUUID":"1B2CC4CE-16F0-4780-B062-35D551B765E5","Type":"ActionOutput","OutputName":"Числа"},"WFSerializationType":"WFTextTokenAttachment"}}},{"WFWorkflowActionIdentifier":"is.workflow.actions.conditional","WFWorkflowActionParameters":{"WFControlFlowMode":2,"GroupingIdentifier":"3FC430DD-FE7D-4EEF-84D6-970CC3FB9A1B","UUID":"944E7525-4665-41DC-A296-5B3A9875CD32"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.conditional","WFWorkflowActionParameters":{"WFControlFlowMode":2,"GroupingIdentifier":"B78996A8-E659-45B5-A426-0236B33A4948","UUID":"D453B124-1D22-48FE-A067-FA7798587F8B"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.conditional","WFWorkflowActionParameters":{"WFControlFlowMode":2,"GroupingIdentifier":"BEA138A4-68A1-4FE8-899B-D0ABCFF4A8B3","UUID":"69A3A0CE-8491-4AA6-A4A5-613A94CEE166"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.math","WFWorkflowActionParameters":{"WFInput":{"Value":{"VariableName":"token","Type":"Variable"},"WFSerializationType":"WFTextTokenAttachment"},"WFMathOperand":"1","UUID":"144A7CC8-5C34-46DF-A45D-93FBC0271B5C"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.setvariable","WFWorkflowActionParameters":{"WFInput":{"Value":{"OutputUUID":"144A7CC8-5C34-46DF-A45D-93FBC0271B5C","Type":"ActionOutput","OutputName":"Результат вычисления"},"WFSerializationType":"WFTextTokenAttachment"},"WFVariableName":"token"}},{"WFWorkflowActionIdentifier":"is.workflow.actions.repeat.count","WFWorkflowActionParameters":{"WFControlFlowMode":2,"GroupingIdentifier":"2E4398FB-FF1E-45AE-8688-FD3F5CF8AC49","UUID":"1815AA69-E0F9-4010-BC76-B753A06CBBA6"}}],"WFWorkflowInputContentItemClasses":["WFAppContentItem","WFAppStoreAppContentItem","WFArticleContentItem","WFContactContentItem","WFDateContentItem","WFEmailAddressContentItem","WFFolderContentItem","WFGenericFileContentItem","WFImageContentItem","WFiTunesProductContentItem","WFLocationContentItem","WFDCMapsLinkContentItem","WFAVAssetContentItem","WFPDFContentItem","WFPhoneNumberContentItem","WFRichTextContentItem","WFSafariWebPageContentItem","WFStringContentItem","WFURLContentItem"],"WFWorkflowImportQuestions":[],"WFWorkflowTypes":["WFWorkflowTypeShowInSearch"],"WFQuickActionSurfaces":[],"WFWorkflowHasShortcutInputVariables":false}