{"nodes":{"eyrmry3w4v0obbxqdxv0ogdpkmvokp7x":{"type":"start","x":0,"y":0,"properties":{"title":"5 Understanding control edges","excerpt":"","author":"GraVersal","license":"CC BY 4.0","channel":"builder","category":"Tutorial - Basics"}},"o6dxxjjs3g1yqitl9r6auheux8stgnim":{"type":"message","x":-61.049849020557986,"y":-218.08653230265352,"properties":{"text":"Sometimes you want to __change states__ in nodes without triggering them directly.","repeatOnReentry":true}},"9mcpa09zxwwq8zbyhmnj24wes7r11dgh":{"type":"message","x":-358.7706589467514,"y":239.09356891578005,"properties":{"text":"There are three additional edges for this:\n\n* Push-Edges\n* Pull-Edges\n* Call-Edges","repeatOnReentry":true}},"kyhmuv9zjujrv35hxjvuv0y24t2dp6rh":{"type":"question","x":-305.0533870803026,"y":496.16298422132036,"properties":{"text":"Which type would you like to learn more about?","repeatOnReentry":true,"reviewable":true}},"04qiada5ng10uyda5ppfox4bs658pd2s":{"type":"suggestion","x":-549.0684538236351,"y":485.63964388137424,"properties":{"value":"","label":"Push-Edges"}},"hp517j2fkdaxp0e34pedqveegzed0k06":{"type":"suggestion","x":-131.59932895677204,"y":644.8745137402077,"properties":{"value":"","label":"Call-Edges"}},"t289arht9j5r8qjs4tw8uahk7lm9cfe3":{"type":"message","x":-744.2552831694746,"y":593.4920687396531,"properties":{"text":"In GraVersal, states aren't global. If you want to transfer a value from one node to another then pass it over with this edge!","repeatOnReentry":true}},"r3uh0o8kx2668sry3qhdnlxopr0o53t5":{"type":"message","x":-873.2445349083167,"y":766.9724232017031,"properties":{"text":"First, I define a template in a sub-branch and pass it over to the other node without visiting it directly.","repeatOnReentry":true}},"ol1csge0h06373fnpwbevxy8wpwfq5hu":{"type":"message","x":-438.28375705174443,"y":-224.03347857434272,"properties":{"text":"In other words: You want to influence __remote nodes__ without going there directly.","repeatOnReentry":true}},"724227q10qblooms0fb407dz6pgvropq":{"type":"message","x":-834.7715357545082,"y":1493.4590591528688,"properties":{"text":"Look at this message. I just passed the template over. Its contents are: \"{{foo}}\"","repeatOnReentry":true}},"upax5lr31lablwvjvy0bq161zosnzr5f":{"type":"message","x":-1044.268488582377,"y":1234.8058869338113,"properties":{"text":"Sending states to other nodes with set edges is like throwing a stone with a piece of paper over without actually going there. Later, when I encounter the node, I'll find this information.","repeatOnReentry":true}},"9xk9heqxxu8581jidwuo2x2frvy3iqm4":{"type":"conclusion","x":-742.025487275883,"y":1357.949132583984,"properties":{"text":""}},"m9fzcud4lem01n4qoahqyisz8hd6ubq5":{"type":"message","x":-10.50885135310746,"y":794.6997126739071,"properties":{"text":"In GraVersal you can also start actions on remote nodes without visiting them directly.","repeatOnReentry":true}},"bg0q77d7u8wb64wipvw6kh4etnhdqgq1":{"type":"message","x":263.7327435403688,"y":940.9311845752048,"properties":{"text":"Why is this important? Because you can't directly activate a node this way, but you can influence past or future states.","repeatOnReentry":true}},"na3d1g5bil8evawlh0dcqx2of7dw9u8f":{"type":"message","x":492.78924297725393,"y":1121.6836488206968,"properties":{"text":"It's like throwing a stone that hits a lever. The node can then already do something and change its state before you even reach it.","repeatOnReentry":true}},"c2e514yz63psahkl2x3xvdom17v0asua":{"type":"question","x":-921.203087894183,"y":959.8604525476513,"properties":{"text":"Ready to start?","repeatOnReentry":true,"reviewable":true}},"kdmo53g8vpebg727ltlsqaizjx1r986f":{"type":"suggestion","x":-957.8926894511271,"y":1070.5238732609293,"properties":{"value":"","label":"yes"}},"0k9ivwxntl7jb17dn17wqjxstj73jif8":{"type":"conclusion","x":-1303.8443511793032,"y":1234.078232122746,"properties":{"text":""}},"3wkbzncrfmq9i5t1yu0bajrbsi6w3wcd":{"type":"message","x":566.614,"y":1357.7003450350333,"properties":{"text":"For example, think of switches that you want to turn on or off or API nodes that you want to warm up.","repeatOnReentry":true}},"imrzsqkvo61vvxwdpnsm01cvlmhw0oye":{"type":"question","x":557.0842602083328,"y":1524.8608100662877,"properties":{"text":"I'm now warming up an API node in a branch, which you won't visit until a timer expires. Ready?","repeatOnReentry":true,"reviewable":true}},"m1psyijd7hcrd71kxhxzu7z4cflwia2o":{"type":"suggestion","x":532.1827675778148,"y":1704.6282131406788,"properties":{"value":"","label":"Yes"}},"foq2r50a53fd7uf577s15p25ucnl6f3v":{"type":"conclusion","x":514.6160511371372,"y":1883.8253317148703,"properties":{"text":""}},"0pnl3rlfkjhdr0akqci6542mghibwevv":{"type":"conclusion","x":49.576418898763194,"y":2047.1873274544205,"properties":{"text":""}},"3ftmpwtpiug4g549kyr0epw5hdlev1j9":{"type":"fetch","x":262.95834291296376,"y":2384.044745917545,"properties":{"url":"https://api.ipify.org?format=json","data":"{}","method":"GET","repeatOnReentry":true}},"wfnlgabyfqplp8aszstrhyabdgpsss8m":{"type":"timer","x":520.1866436213624,"y":2089.7668571702534,"properties":{"seconds":"5","repeatOnReentry":true}},"q48mt5s1z9ein7rwb30ectx1yayw980b":{"type":"conclusion","x":408.2471121239824,"y":2241.659024564611,"properties":{"text":"Timer elapsed"}},"uwxebzjuck1z4czezfve4gk7zi6rftyj":{"type":"message","x":197.12073220155753,"y":2626.5886266055886,"properties":{"text":"The API was already warmed up before I visited it. Your IP is {{result.ip}}","repeatOnReentry":true}},"8qyztgcj7vd6mbir3obnue2zg6x9v1m2":{"type":"message","x":34.56168951993403,"y":2831.7790642059417,"properties":{"text":"By the way, you can also use call edges like the next one to reset nodes you've already been on. This way, you can remove entire branches from the context and restart them.","repeatOnReentry":true}},"oex62hco0vcaash3846zu6rkpeirs7h2":{"type":"conclusion","x":-559.9070303219237,"y":2766.292285401175,"properties":{"text":""}},"6s6zuz9bu3lnfowum9kpdeswd5d6pngf":{"type":"text","x":-1307.355,"y":1491.169,"properties":{"expression":"bar","rerenderOnReentry":true,"rerenderOnChance":true}},"lar0ajn51f2ij77bbmkajik4hd6ehhlv":{"type":"message","x":-571.416673929486,"y":14.327514843724686,"properties":{"text":"In the words of a GraVersal: It's like __throwing a stone__ across to the other intersection, pressing a lever there, and leaving information for later.","repeatOnReentry":true,"repeatOnChance":true}},"02bvzi4bjdjferytnjhkzureqk5gwxgm":{"type":"suggestion","x":-15.39470675216727,"y":407.9456507839827,"properties":{"value":"","label":"Pull-Edges"}},"xu4h9o7bschmvhc2lw2rlpj1clc6b5k9":{"type":"message","x":231.3442709823644,"y":521.5155177903786,"properties":{"text":"Sorry, this part of the tutorial is not finished yet.","repeatOnReentry":true,"repeatOnChance":true}},"ef0rovxeowvj8sbuioxbfc8p28d12m8n":{"type":"jump","x":411.1365990584475,"y":101.58888692762736,"properties":{"label":"Back to tutorial start","flow":"https://platform.graversal.io/flows/xnggg7ykv5sppva649cd73r6zh2zfedg"}}},"edges":{"8j928xs66g7fy5qix5c8a8se583g78uj":{"type":"may","from":"eyrmry3w4v0obbxqdxv0ogdpkmvokp7x","to":"o6dxxjjs3g1yqitl9r6auheux8stgnim","properties":{"priority":5}},"mfdo5lh8uq0rjbrsfq0krybcrd6ajoi6":{"type":"may","from":"9mcpa09zxwwq8zbyhmnj24wes7r11dgh","to":"kyhmuv9zjujrv35hxjvuv0y24t2dp6rh","properties":{"priority":4,"condition":"arrived"}},"ldhhkpy6k4n8fv1iwr0w0t7bcsgxl2nr":{"type":"may","from":"kyhmuv9zjujrv35hxjvuv0y24t2dp6rh","to":"04qiada5ng10uyda5ppfox4bs658pd2s","properties":{"priority":5,"condition":""}},"p7e065uhk0cm7iuiu56s7x6e6ofdja1a":{"type":"may","from":"kyhmuv9zjujrv35hxjvuv0y24t2dp6rh","to":"hp517j2fkdaxp0e34pedqveegzed0k06","properties":{"priority":4,"condition":""}},"3aueknnptqbe5zfq0vs32vaafzzijfn1":{"type":"may","from":"04qiada5ng10uyda5ppfox4bs658pd2s","to":"t289arht9j5r8qjs4tw8uahk7lm9cfe3","properties":{"priority":4,"condition":"selected"}},"if2tn4ohvdb302sbbo818sq3rdd2214e":{"type":"may","from":"t289arht9j5r8qjs4tw8uahk7lm9cfe3","to":"r3uh0o8kx2668sry3qhdnlxopr0o53t5","properties":{"priority":4,"condition":"arrived"}},"h5afgqbpxm56o1lg25mqp803tsmefdhk":{"type":"may","from":"o6dxxjjs3g1yqitl9r6auheux8stgnim","to":"ol1csge0h06373fnpwbevxy8wpwfq5hu","properties":{"priority":4,"condition":"arrived"}},"tqs0393rgc3okgcjgdt4rwqifur61w78":{"type":"may","from":"724227q10qblooms0fb407dz6pgvropq","to":"9xk9heqxxu8581jidwuo2x2frvy3iqm4","properties":{"priority":4,"condition":"arrived"}},"1msn12rni4n5ykno6vajqpxt61lyzuag":{"type":"call","from":"9xk9heqxxu8581jidwuo2x2frvy3iqm4","to":"kyhmuv9zjujrv35hxjvuv0y24t2dp6rh","properties":{"priority":4,"method":"reset"}},"id8wfvcesmpenyiwerfjzca0w021h5r1":{"type":"may","from":"hp517j2fkdaxp0e34pedqveegzed0k06","to":"m9fzcud4lem01n4qoahqyisz8hd6ubq5","properties":{"priority":4,"condition":"selected"}},"7weye4ub7tdlgd0563dys0jtxiel2tuq":{"type":"may","from":"m9fzcud4lem01n4qoahqyisz8hd6ubq5","to":"bg0q77d7u8wb64wipvw6kh4etnhdqgq1","properties":{"priority":4,"condition":"arrived"}},"pj3waidoe7e7j98iyyha49u2j9wz7a38":{"type":"may","from":"bg0q77d7u8wb64wipvw6kh4etnhdqgq1","to":"na3d1g5bil8evawlh0dcqx2of7dw9u8f","properties":{"priority":4,"condition":"arrived"}},"imxo69glv7xocejn8mpiybs7vntxr7ov":{"type":"may","from":"r3uh0o8kx2668sry3qhdnlxopr0o53t5","to":"c2e514yz63psahkl2x3xvdom17v0asua","properties":{"priority":4,"condition":"arrived"}},"5m61h5xco3k2taqxg7rbjkxcxgh97rkq":{"type":"may","from":"c2e514yz63psahkl2x3xvdom17v0asua","to":"kdmo53g8vpebg727ltlsqaizjx1r986f","properties":{"priority":4,"condition":""}},"zmwe9fc8v2czug9y9x50i2ncbsvqle0y":{"type":"may","from":"kdmo53g8vpebg727ltlsqaizjx1r986f","to":"upax5lr31lablwvjvy0bq161zosnzr5f","properties":{"priority":4,"condition":"selected"}},"9w55bcqj8d8cbe7rts0dxfh49x5x7sp9":{"type":"may","from":"upax5lr31lablwvjvy0bq161zosnzr5f","to":"0k9ivwxntl7jb17dn17wqjxstj73jif8","properties":{"priority":7,"condition":"arrived"}},"nlnvv7x2h5pgsnyqsmugpkclluk8j2qu":{"type":"may","from":"upax5lr31lablwvjvy0bq161zosnzr5f","to":"724227q10qblooms0fb407dz6pgvropq","properties":{"priority":4,"condition":"arrived"}},"xos0fht9a2eits94qe5vqaptuddsbbmq":{"type":"may","from":"na3d1g5bil8evawlh0dcqx2of7dw9u8f","to":"3wkbzncrfmq9i5t1yu0bajrbsi6w3wcd","properties":{"priority":4,"condition":"arrived"}},"2d8r1vgtzjqjnu4wkn3l5x185cib0y4z":{"type":"may","from":"3wkbzncrfmq9i5t1yu0bajrbsi6w3wcd","to":"imrzsqkvo61vvxwdpnsm01cvlmhw0oye","properties":{"priority":4,"condition":"sent"}},"l5vp9cef5cxl59xdw7puhyz7c6dktasa":{"type":"may","from":"imrzsqkvo61vvxwdpnsm01cvlmhw0oye","to":"m1psyijd7hcrd71kxhxzu7z4cflwia2o","properties":{"priority":4,"condition":""}},"tclwzocsszzn7dc23zqtvk8xtigjwwhy":{"type":"may","from":"m1psyijd7hcrd71kxhxzu7z4cflwia2o","to":"foq2r50a53fd7uf577s15p25ucnl6f3v","properties":{"priority":4,"condition":"selected"}},"pefhcfyaslj3x1h9kki5kdefysxc9ri3":{"type":"may","from":"foq2r50a53fd7uf577s15p25ucnl6f3v","to":"0pnl3rlfkjhdr0akqci6542mghibwevv","properties":{"priority":7}},"52rfwive2ucaxgu98xyos0abyt79a3vx":{"type":"call","from":"0pnl3rlfkjhdr0akqci6542mghibwevv","to":"3ftmpwtpiug4g549kyr0epw5hdlev1j9","properties":{"priority":4,"method":"send"}},"d2fh9fojf2cmlr3wfa935kaxyd513bun":{"type":"may","from":"foq2r50a53fd7uf577s15p25ucnl6f3v","to":"wfnlgabyfqplp8aszstrhyabdgpsss8m","properties":{"priority":4}},"hc5urqafplvb1papcqavxml0ez2xb6bf":{"type":"may","from":"wfnlgabyfqplp8aszstrhyabdgpsss8m","to":"q48mt5s1z9ein7rwb30ectx1yayw980b","properties":{"priority":4,"condition":"elapsed"}},"ddnj06pk6e9425ehtmkth4zz1h05xxh8":{"type":"may","from":"q48mt5s1z9ein7rwb30ectx1yayw980b","to":"3ftmpwtpiug4g549kyr0epw5hdlev1j9","properties":{"priority":4}},"upg3ab7zmac5wz46h06btvotx29ietmn":{"type":"may","from":"3ftmpwtpiug4g549kyr0epw5hdlev1j9","to":"uwxebzjuck1z4czezfve4gk7zi6rftyj","properties":{"priority":4,"condition":"done","push":"result"}},"mpj9nartbz8iyec6py75keuehti2oi8k":{"type":"may","from":"uwxebzjuck1z4czezfve4gk7zi6rftyj","to":"8qyztgcj7vd6mbir3obnue2zg6x9v1m2","properties":{"priority":4,"condition":"arrived"}},"pwyx5rv4bwlmetpj22fy77qd5xyghded":{"type":"may","from":"8qyztgcj7vd6mbir3obnue2zg6x9v1m2","to":"oex62hco0vcaash3846zu6rkpeirs7h2","properties":{"priority":4,"condition":"arrived"}},"sa3q9oqssczh4iy6kbk3jgyq6enljrte":{"type":"call","from":"oex62hco0vcaash3846zu6rkpeirs7h2","to":"kyhmuv9zjujrv35hxjvuv0y24t2dp6rh","properties":{"priority":4,"method":"reset"}},"2fkwqg5x485ki6xa6rrxjxfkjsl5y72r":{"type":"may","from":"0k9ivwxntl7jb17dn17wqjxstj73jif8","to":"6s6zuz9bu3lnfowum9kpdeswd5d6pngf","properties":{"priority":4}},"spjif5dcxnntpg4vkp4ao8gfbvrblkvn":{"type":"may","from":"ol1csge0h06373fnpwbevxy8wpwfq5hu","to":"lar0ajn51f2ij77bbmkajik4hd6ehhlv","properties":{"priority":4,"condition":"arrived"}},"r2sbcp2dvhy14e14gmou5appz37o5c1h":{"type":"may","from":"lar0ajn51f2ij77bbmkajik4hd6ehhlv","to":"9mcpa09zxwwq8zbyhmnj24wes7r11dgh","properties":{"priority":4,"condition":"arrived"}},"2ym6s89vf1svzg7mf3ruseeo4n11d5p1":{"type":"may","from":"kyhmuv9zjujrv35hxjvuv0y24t2dp6rh","to":"02bvzi4bjdjferytnjhkzureqk5gwxgm","properties":{"priority":4,"condition":""}},"ltwsbhncpa6rynjhfq0k5q0fvl3vchay":{"type":"may","from":"02bvzi4bjdjferytnjhkzureqk5gwxgm","to":"xu4h9o7bschmvhc2lw2rlpj1clc6b5k9","properties":{"priority":4,"condition":"selected"}},"de5l0p90tg1g02woqdud40q97uqb81td":{"type":"call","from":"xu4h9o7bschmvhc2lw2rlpj1clc6b5k9","to":"kyhmuv9zjujrv35hxjvuv0y24t2dp6rh","properties":{"priority":4,"condition":"arrived","method":"reset"}},"ma4hkudi80ja7m8ld12eow6y9lktva08":{"type":"push","from":"6s6zuz9bu3lnfowum9kpdeswd5d6pngf","to":"724227q10qblooms0fb407dz6pgvropq","properties":{"priority":4,"push":"value","as":"foo"}},"qnpdn04cl0ogpryins3hzwlqz260jjnr":{"type":"may","from":"eyrmry3w4v0obbxqdxv0ogdpkmvokp7x","to":"ef0rovxeowvj8sbuioxbfc8p28d12m8n","properties":{"priority":4}}}}