Files
mixly3/boards/default_src/python_skulpt/origin/examples/09-2 多层汉诺塔算法.mix
2024-07-19 10:16:00 +08:00

1 line
15 KiB
XML

<xml version="Mixly 2.0 rc4" board="Python 3 Lite@Python 3 Lite"><variables><variable id="y)KkgBcNr$4S!p3t)BqF">起始柱</variable><variable id="zQcIgrB5jt+Jvn.:|tZY">过渡柱</variable><variable id="#U,EN#)ooiy4xbC-;/zt">目标柱</variable><variable id="TSIl~e@?d9$.8=kfSd=Z">层数</variable></variables><block type="procedures_defnoreturn" id="nUlVP|.tKMEzW/NlMGj]" x="-792" y="-157"><mutation><arg name="层数" varid="TSIl~e@?d9$.8=kfSd=Z"></arg><arg name="起始柱" varid="y)KkgBcNr$4S!p3t)BqF"></arg><arg name="过渡柱" varid="zQcIgrB5jt+Jvn.:|tZY"></arg><arg name="目标柱" varid="#U,EN#)ooiy4xbC-;/zt"></arg></mutation><field name="NAME">移动汉诺塔</field><statement name="STACK"><block type="controls_if" id="@p2uy.Nt6c`|$QdE$f0P"><mutation else="1"></mutation><value name="IF0"><block type="logic_compare" id="SmB=WP9`1O{H;$+b@~Gk"><field name="OP">EQ</field><value name="A"><block type="variables_get" id="0Fx2n#.[~41:VGeaa4/["><field name="VAR">层数</field></block></value><value name="B"><block type="math_number" id="Ekj!=W.fLzn~dECd6Kiu"><field name="NUM">2</field></block></value></block></value><statement name="DO0"><block type="procedures_callnoreturn" id="pX7j]2XWP/)^^0i+obY="><mutation name="移动2层汉诺塔"><arg name="起始柱"></arg><arg name="过渡柱"></arg><arg name="目标柱"></arg></mutation><value name="ARG0"><block type="variables_get" id="-fHxg9f)j79Vm:r}|LhC"><field name="VAR">起始柱</field></block></value><value name="ARG1"><block type="variables_get" id="(j6Yt-C`#iVT(tCjIQB4"><field name="VAR">过渡柱</field></block></value><value name="ARG2"><block type="variables_get" id="`[RXvH#V~t+QQJZBK1Tg"><field name="VAR">目标柱</field></block></value></block></statement><statement name="ELSE"><block type="procedures_callnoreturn" id="K+-mO06h~pUGgVV{8)yv"><mutation name="移动汉诺塔"><arg name="层数"></arg><arg name="起始柱"></arg><arg name="过渡柱"></arg><arg name="目标柱"></arg></mutation><value name="ARG0"><block type="math_arithmetic" id="uIcNOl$8GHb=viNH*R~["><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id=":EAUZCr0TxyQwi:GzvQ7"><field name="NUM">1</field></shadow><block type="variables_get" id="v1t|bbQdK4|RIgZ7)p_R"><field name="VAR">层数</field></block></value><value name="B"><shadow type="math_number" id="tWA$ny#mhR$]h=+sli@^"><field name="NUM">1</field></shadow></value></block></value><value name="ARG1"><block type="variables_get" id="@H!$?*}OUGXnpE2GMjmH"><field name="VAR">起始柱</field></block></value><value name="ARG2"><block type="variables_get" id="LDzY?hJCPe8v^M(;JlEI"><field name="VAR">目标柱</field></block></value><value name="ARG3"><block type="variables_get" id="]Flb8(/r=ujC!23,j]26"><field name="VAR">过渡柱</field></block></value><next><block type="hanoi_move" id="`z86lz4oW$pFSqX.lG:#"><value name="FROM_NUM"><shadow type="variables_get" id="KP2jBvUL-?@[/V|GFbt2"><field name="VAR">C</field></shadow><block type="variables_get" id=")YO*nX#W`Y5kIK~v0lp@"><field name="VAR">起始柱</field></block></value><value name="TO_NUM"><shadow type="variables_get" id="5px7;=-8Jf7cYpY!]v0{"><field name="VAR">B</field></shadow><block type="variables_get" id="Q-[*Z`{}1kTtV96JCs8;"><field name="VAR">目标柱</field></block></value><next><block type="procedures_callnoreturn" id="H[nr5]yZ#z^7jV[TMs,^"><mutation name="移动汉诺塔"><arg name="层数"></arg><arg name="起始柱"></arg><arg name="过渡柱"></arg><arg name="目标柱"></arg></mutation><value name="ARG0"><block type="math_arithmetic" id="){1h5H}rNA?u:HemA7_-"><field name="OP">MINUS</field><value name="A"><shadow type="math_number" id="#~H[44ypx#PE8UYIwJW7"><field name="NUM">1</field></shadow><block type="variables_get" id="SVJzC!.f$z*`s{tWQW.X"><field name="VAR">层数</field></block></value><value name="B"><shadow type="math_number" id="~r6x0SJ@OhXpu=Rf$,#k"><field name="NUM">1</field></shadow></value></block></value><value name="ARG1"><block type="variables_get" id="O!sKxMJ_Px{{b_bw!oA["><field name="VAR">过渡柱</field></block></value><value name="ARG2"><block type="variables_get" id="n*527pZt!H}Tzb$.7k5v"><field name="VAR">起始柱</field></block></value><value name="ARG3"><block type="variables_get" id="9z2fM4)oK$,fy}h!c:-C"><field name="VAR">目标柱</field></block></value></block></next></block></next></block></statement></block></statement></block><block type="hanoi_init" id="/u7vND{4+l9a.9pr!z9]" x="-1227" y="-80"><field name="NUM">5</field><next><block type="procedures_callnoreturn" id=";8-)C3K9@.teJZz@_ZHj"><mutation name="移动汉诺塔"><arg name="层数"></arg><arg name="起始柱"></arg><arg name="过渡柱"></arg><arg name="目标柱"></arg></mutation><value name="ARG0"><block type="math_number" id="c~aDb1v*PlSZi7DI?66p"><field name="NUM">5</field></block></value><value name="ARG1"><block type="variables_get" id="v_HH~MQg2(+@9+(~hjE7"><field name="VAR">A</field></block></value><value name="ARG2"><block type="variables_get" id="*q@L:[Y4Ry6@dm.5zRo7"><field name="VAR">B</field></block></value><value name="ARG3"><block type="variables_get" id="b::TCbC;$/8|)Bl}_Dqh"><field name="VAR">C</field></block></value></block></next></block><block type="procedures_defnoreturn" id="~Zu3O5S4X^-b}e^]y?Jc" x="-1215" y="120"><mutation><arg name="起始柱" varid="y)KkgBcNr$4S!p3t)BqF"></arg><arg name="过渡柱" varid="zQcIgrB5jt+Jvn.:|tZY"></arg><arg name="目标柱" varid="#U,EN#)ooiy4xbC-;/zt"></arg></mutation><field name="NAME">移动2层汉诺塔</field><statement name="STACK"><block type="hanoi_move" id="0x8;x*(*J`m$taWQ#?+r"><value name="FROM_NUM"><shadow type="variables_get" id="//B~*ND7A-rkUXpm_=[P"><field name="VAR">A</field></shadow><block type="variables_get" id="}(jOa23L^wnfX|fwr#z)"><field name="VAR">起始柱</field></block></value><value name="TO_NUM"><shadow type="variables_get" id="L}^Co:EZ,?2J7}VZE1$L"><field name="VAR">C</field></shadow><block type="variables_get" id="e3GeFh1UkA{#4[e]QxQ^"><field name="VAR">过渡柱</field></block></value><next><block type="hanoi_move" id="F;^Qi}fCGaQV+!;`U,)r"><value name="FROM_NUM"><shadow type="variables_get" id="G;X_SZvHUEb@a:l$wi|l"><field name="VAR">A</field></shadow><block type="variables_get" id="}SoYT_u)xevbhsli|1h_"><field name="VAR">起始柱</field></block></value><value name="TO_NUM"><shadow type="variables_get" id="qaEd=k2#i|fXw1ycfQF6"><field name="VAR">B</field></shadow><block type="variables_get" id="mV(ZRC9d^KjJ}WU2/{gu"><field name="VAR">目标柱</field></block></value><next><block type="hanoi_move" id="B:7Ip8bFRbdTlvdK79]h"><value name="FROM_NUM"><shadow type="variables_get" id="Gc_#eW8UXRflOc:fZ?8$"><field name="VAR">C</field></shadow><block type="variables_get" id="[]7sEOC^v57_LaYFd6-0"><field name="VAR">过渡柱</field></block></value><value name="TO_NUM"><shadow type="variables_get" id="dDDG@ht9f1c=4c652NO?"><field name="VAR">B</field></shadow><block type="variables_get" id="t`s`[S`1ezhHbWr6eozo"><field name="VAR">目标柱</field></block></value></block></next></block></next></block></statement></block></xml><config>{}</config><code>aW1wb3J0IHRpbWUKaW1wb3J0IHNwcml0ZQoKZGVmIF9FN19BN19CQl9FNV84QV9BOF9FNl9CMV84OV9FOF9BRl9CQV9FNV9BMV85NChfRTVfQjFfODJfRTZfOTVfQjAsIF9FOF9CNV9CN19FNV9BN184Ql9FNl85Rl9CMSwgX0U4X0JGXzg3X0U2X0I4X0ExX0U2XzlGX0IxLCBfRTdfOUJfQUVfRTZfQTBfODdfRTZfOUZfQjEpOgogICAgaWYgX0U1X0IxXzgyX0U2Xzk1X0IwID09IDI6CiAgICAgICAgX0U3X0E3X0JCX0U1XzhBX0E4Ml9FNV9CMV84Ml9FNl9CMV84OV9FOF9BRl9CQV9FNV9BMV85NChfRThfQjVfQjdfRTVfQTdfOEJfRTZfOUZfQjEsIF9FOF9CRl84N19FNl9COF9BMV9FNl85Rl9CMSwgX0U3XzlCX0FFX0U2X0EwXzg3X0U2XzlGX0IxKQogICAgZWxzZToKICAgICAgICBfRTdfQTdfQkJfRTVfOEFfQThfRTZfQjFfODlfRThfQUZfQkFfRTVfQTFfOTQoX0U1X0IxXzgyX0U2Xzk1X0IwIC0gMSwgX0U4X0I1X0I3X0U1X0E3XzhCX0U2XzlGX0IxLCBfRTdfOUJfQUVfRTZfQTBfODdfRTZfOUZfQjEsIF9FOF9CRl84N19FNl9COF9BMV9FNl85Rl9CMSkKICAgICAgICBpZiBsZW4oX0hhbm9pW19FOF9CNV9CN19FNV9BN184Ql9FNl85Rl9CMV0pPjAgOgogICAgICAgICAgICBfSGFub2lCbG9ja01vdmVkID0gX0hhbm9pW19FOF9CNV9CN19FNV9BN184Ql9FNl85Rl9CMV0ucG9wKCkKICAgICAgICAgICAgaWYgbGVuKF9IYW5vaVtfRTdfOUJfQUVfRTZfQTBfODdfRTZfOUZfQjFdKSA+IDAgOgogICAgICAgICAgICAgICAgX0hhbm9pQmxvY2tTdXBwcmVzc2VkID0gX0hhbm9pW19FN185Ql9BRV9FNl9BMF84N19FNl85Rl9CMV0ucG9wKCkKICAgICAgICAgICAgICAgIGlmIF9IYW5vaUJsb2NrLmluZGV4KF9IYW5vaUJsb2NrTW92ZWQpID4gX0hhbm9pQmxvY2suaW5kZXgoX0hhbm9pQmxvY2tTdXBwcmVzc2VkKToKICAgICAgICAgICAgICAgICAgICBwcmludCgn6Z2e5rOV56e75Yqo77yB56iL5bqP5pyJ6K+v77yBJykKICAgICAgICAgICAgICAgICAgICBleGl0KCkKICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgX0hhbm9pW19FN185Ql9BRV9FNl9BMF84N19FNl85Rl9CMV0uYXBwZW5kKF9IYW5vaUJsb2NrU3VwcHJlc3NlZCkKICAgICAgICAgICAgX0hhbm9pQmxvY2tNb3ZlZC5zbGlkZVRvKF9FOF9CNV9CN19FNV9BN184Ql9FNl85Rl9CMSoyMDArMjAwLCAxODAsIDAuMikKICAgICAgICAgICAgX0hhbm9pQmxvY2tNb3ZlZC5zbGlkZVRvKF9FN185Ql9BRV9FNl9BMF84N19FNl85Rl9CMSoyMDArMjAwLCAxODAsIDAuNSkKICAgICAgICAgICAgX0hhbm9pQmxvY2tNb3ZlZC5zbGlkZVRvKF9FN185Ql9BRV9FNl9BMF84N19FNl85Rl9CMSoyMDArMjAwLCA0MDAtbGVuKF9IYW5vaVtfRTdfOUJfQUVfRTZfQTBfODdfRTZfOUZfQjFdKSoyNywgMC4yKQogICAgICAgICAgICBfSGFub2lbX0U3XzlCX0FFX0U2X0EwXzg3X0U2XzlGX0IxXS5hcHBlbmQoX0hhbm9pQmxvY2tNb3ZlZCkKICAgICAgICAgICAgX3N0ZXBzWydzdGVwcyddICs9IDEKICAgICAgICAgICAgX3N0ZXB0ZXh0LmNoYW5nZVRleHQoJ+atpeaVsO+8micrc3RyKF9zdGVwc1snc3RlcHMnXSkpCiAgICAgICAgZWxzZSA6CiAgICAgICAgICAgIHByaW50KCfpnZ7ms5Xnp7vliqjvvIHnqIvluo/mnInor6/vvIEnKQogICAgICAgICAgICBleGl0KCkKICAgICAgICBfRTdfQTdfQkJfRTVfOEFfQThfRTZfQjFfODlfRThfQUZfQkFfRTVfQTFfOTQoX0U1X0IxXzgyX0U2Xzk1X0IwIC0gMSwgX0U4X0JGXzg3X0U2X0I4X0ExX0U2XzlGX0IxLCBfRThfQjVfQjdfRTVfQTdfOEJfRTZfOUZfQjEsIF9FN185Ql9BRV9FNl9BMF84N19FNl85Rl9CMSkKCmRlZiBfRTdfQTdfQkJfRTVfOEFfQTgyX0U1X0IxXzgyX0U2X0IxXzg5X0U4X0FGX0JBX0U1X0ExXzk0KF9FOF9CNV9CN19FNV9BN184Ql9FNl85Rl9CMSwgX0U4X0JGXzg3X0U2X0I4X0ExX0U2XzlGX0IxLCBfRTdfOUJfQUVfRTZfQTBfODdfRTZfOUZfQjEpOgogICAgaWYgbGVuKF9IYW5vaVtfRThfQjVfQjdfRTVfQTdfOEJfRTZfOUZfQjFdKT4wIDoKICAgICAgICBfSGFub2lCbG9ja01vdmVkID0gX0hhbm9pW19FOF9CNV9CN19FNV9BN184Ql9FNl85Rl9CMV0ucG9wKCkKICAgICAgICBpZiBsZW4oX0hhbm9pW19FOF9CRl84N19FNl9COF9BMV9FNl85Rl9CMV0pID4gMCA6CiAgICAgICAgICAgIF9IYW5vaUJsb2NrU3VwcHJlc3NlZCA9IF9IYW5vaVtfRThfQkZfODdfRTZfQjhfQTFfRTZfOUZfQjFdLnBvcCgpCiAgICAgICAgICAgIGlmIF9IYW5vaUJsb2NrLmluZGV4KF9IYW5vaUJsb2NrTW92ZWQpID4gX0hhbm9pQmxvY2suaW5kZXgoX0hhbm9pQmxvY2tTdXBwcmVzc2VkKToKICAgICAgICAgICAgICAgIHByaW50KCfpnZ7ms5Xnp7vliqjvvIHnqIvluo/mnInor6/vvIEnKQogICAgICAgICAgICAgICAgZXhpdCgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBfSGFub2lbX0U4X0JGXzg3X0U2X0I4X0ExX0U2XzlGX0IxXS5hcHBlbmQoX0hhbm9pQmxvY2tTdXBwcmVzc2VkKQogICAgICAgIF9IYW5vaUJsb2NrTW92ZWQuc2xpZGVUbyhfRThfQjVfQjdfRTVfQTdfOEJfRTZfOUZfQjEqMjAwKzIwMCwgMTgwLCAwLjIpCiAgICAgICAgX0hhbm9pQmxvY2tNb3ZlZC5zbGlkZVRvKF9FOF9CRl84N19FNl9COF9BMV9FNl85Rl9CMSoyMDArMjAwLCAxODAsIDAuNSkKICAgICAgICBfSGFub2lCbG9ja01vdmVkLnNsaWRlVG8oX0U4X0JGXzg3X0U2X0I4X0ExX0U2XzlGX0IxKjIwMCsyMDAsIDQwMC1sZW4oX0hhbm9pW19FOF9CRl84N19FNl9COF9BMV9FNl85Rl9CMV0pKjI3LCAwLjIpCiAgICAgICAgX0hhbm9pW19FOF9CRl84N19FNl9COF9BMV9FNl85Rl9CMV0uYXBwZW5kKF9IYW5vaUJsb2NrTW92ZWQpCiAgICAgICAgX3N0ZXBzWydzdGVwcyddICs9IDEKICAgICAgICBfc3RlcHRleHQuY2hhbmdlVGV4dCgn5q2l5pWw77yaJytzdHIoX3N0ZXBzWydzdGVwcyddKSkKICAgIGVsc2UgOgogICAgICAgIHByaW50KCfpnZ7ms5Xnp7vliqjvvIHnqIvluo/mnInor6/vvIEnKQogICAgICAgIGV4aXQoKQogICAgaWYgbGVuKF9IYW5vaVtfRThfQjVfQjdfRTVfQTdfOEJfRTZfOUZfQjFdKT4wIDoKICAgICAgICBfSGFub2lCbG9ja01vdmVkID0gX0hhbm9pW19FOF9CNV9CN19FNV9BN184Ql9FNl85Rl9CMV0ucG9wKCkKICAgICAgICBpZiBsZW4oX0hhbm9pW19FN185Ql9BRV9FNl9BMF84N19FNl85Rl9CMV0pID4gMCA6CiAgICAgICAgICAgIF9IYW5vaUJsb2NrU3VwcHJlc3NlZCA9IF9IYW5vaVtfRTdfOUJfQUVfRTZfQTBfODdfRTZfOUZfQjFdLnBvcCgpCiAgICAgICAgICAgIGlmIF9IYW5vaUJsb2NrLmluZGV4KF9IYW5vaUJsb2NrTW92ZWQpID4gX0hhbm9pQmxvY2suaW5kZXgoX0hhbm9pQmxvY2tTdXBwcmVzc2VkKToKICAgICAgICAgICAgICAgIHByaW50KCfpnZ7ms5Xnp7vliqjvvIHnqIvluo/mnInor6/vvIEnKQogICAgICAgICAgICAgICAgZXhpdCgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBfSGFub2lbX0U3XzlCX0FFX0U2X0EwXzg3X0U2XzlGX0IxXS5hcHBlbmQoX0hhbm9pQmxvY2tTdXBwcmVzc2VkKQogICAgICAgIF9IYW5vaUJsb2NrTW92ZWQuc2xpZGVUbyhfRThfQjVfQjdfRTVfQTdfOEJfRTZfOUZfQjEqMjAwKzIwMCwgMTgwLCAwLjIpCiAgICAgICAgX0hhbm9pQmxvY2tNb3ZlZC5zbGlkZVRvKF9FN185Ql9BRV9FNl9BMF84N19FNl85Rl9CMSoyMDArMjAwLCAxODAsIDAuNSkKICAgICAgICBfSGFub2lCbG9ja01vdmVkLnNsaWRlVG8oX0U3XzlCX0FFX0U2X0EwXzg3X0U2XzlGX0IxKjIwMCsyMDAsIDQwMC1sZW4oX0hhbm9pW19FN185Ql9BRV9FNl9BMF84N19FNl85Rl9CMV0pKjI3LCAwLjIpCiAgICAgICAgX0hhbm9pW19FN185Ql9BRV9FNl9BMF84N19FNl85Rl9CMV0uYXBwZW5kKF9IYW5vaUJsb2NrTW92ZWQpCiAgICAgICAgX3N0ZXBzWydzdGVwcyddICs9IDEKICAgICAgICBfc3RlcHRleHQuY2hhbmdlVGV4dCgn5q2l5pWw77yaJytzdHIoX3N0ZXBzWydzdGVwcyddKSkKICAgIGVsc2UgOgogICAgICAgIHByaW50KCfpnZ7ms5Xnp7vliqjvvIHnqIvluo/mnInor6/vvIEnKQogICAgICAgIGV4aXQoKQogICAgaWYgbGVuKF9IYW5vaVtfRThfQkZfODdfRTZfQjhfQTFfRTZfOUZfQjFdKT4wIDoKICAgICAgICBfSGFub2lCbG9ja01vdmVkID0gX0hhbm9pW19FOF9CRl84N19FNl9COF9BMV9FNl85Rl9CMV0ucG9wKCkKICAgICAgICBpZiBsZW4oX0hhbm9pW19FN185Ql9BRV9FNl9BMF84N19FNl85Rl9CMV0pID4gMCA6CiAgICAgICAgICAgIF9IYW5vaUJsb2NrU3VwcHJlc3NlZCA9IF9IYW5vaVtfRTdfOUJfQUVfRTZfQTBfODdfRTZfOUZfQjFdLnBvcCgpCiAgICAgICAgICAgIGlmIF9IYW5vaUJsb2NrLmluZGV4KF9IYW5vaUJsb2NrTW92ZWQpID4gX0hhbm9pQmxvY2suaW5kZXgoX0hhbm9pQmxvY2tTdXBwcmVzc2VkKToKICAgICAgICAgICAgICAgIHByaW50KCfpnZ7ms5Xnp7vliqjvvIHnqIvluo/mnInor6/vvIEnKQogICAgICAgICAgICAgICAgZXhpdCgpCiAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICBfSGFub2lbX0U3XzlCX0FFX0U2X0EwXzg3X0U2XzlGX0IxXS5hcHBlbmQoX0hhbm9pQmxvY2tTdXBwcmVzc2VkKQogICAgICAgIF9IYW5vaUJsb2NrTW92ZWQuc2xpZGVUbyhfRThfQkZfODdfRTZfQjhfQTFfRTZfOUZfQjEqMjAwKzIwMCwgMTgwLCAwLjIpCiAgICAgICAgX0hhbm9pQmxvY2tNb3ZlZC5zbGlkZVRvKF9FN185Ql9BRV9FNl9BMF84N19FNl85Rl9CMSoyMDArMjAwLCAxODAsIDAuNSkKICAgICAgICBfSGFub2lCbG9ja01vdmVkLnNsaWRlVG8oX0U3XzlCX0FFX0U2X0EwXzg3X0U2XzlGX0IxKjIwMCsyMDAsIDQwMC1sZW4oX0hhbm9pW19FN185Ql9BRV9FNl9BMF84N19FNl85Rl9CMV0pKjI3LCAwLjIpCiAgICAgICAgX0hhbm9pW19FN185Ql9BRV9FNl9BMF84N19FNl85Rl9CMV0uYXBwZW5kKF9IYW5vaUJsb2NrTW92ZWQpCiAgICAgICAgX3N0ZXBzWydzdGVwcyddICs9IDEKICAgICAgICBfc3RlcHRleHQuY2hhbmdlVGV4dCgn5q2l5pWw77yaJytzdHIoX3N0ZXBzWydzdGVwcyddKSkKICAgIGVsc2UgOgogICAgICAgIHByaW50KCfpnZ7ms5Xnp7vliqjvvIHnqIvluo/mnInor6/vvIEnKQogICAgICAgIGV4aXQoKQoKCgpzcHJpdGUuY2xlYXJBbGxTcHJpdGVzKCkKX0hhbm9pY29sb3IgPSBbJ2JsdWUnLCAncmVkJywgJ3llbGxvdycsICdncmVlbicsICdwdXJwbGUnLCAnYmxhY2snXQpfSGFub2kgPSBbW10sIFtdLCBbXV0KQSA9IDAKQiA9IDEKQyA9IDIKX24gPSA1Cl9IYW5vaUNvbHVtbiA9IFsKICAgIHNwcml0ZS5TcHJpdGUoJ0hhbm9pQ29sdW1uJywgMjAwLCAzMjApLAogICAgc3ByaXRlLlNwcml0ZSgnSGFub2lDb2x1bW4nLCA0MDAsIDMyMCksCiAgICBzcHJpdGUuU3ByaXRlKCdIYW5vaUNvbHVtbicsIDYwMCwgMzIwKQpdCl9IYW5vaUNvbHVtbk51bWJlciA9IFsKICAgIHNwcml0ZS5UZXh0KCdBJywgMTkwLCAxMjApLAogICAgc3ByaXRlLlRleHQoJ0InLCAzOTAsIDEyMCksCiAgICBzcHJpdGUuVGV4dCgnQycsIDU5MCwgMTIwKQpdCl9IYW5vaUJsb2NrID0gW10KZm9yIGkgaW4gcmFuZ2UoMCwgX24sIDEpOgogICAgX0hhbm9pQmxvY2suYXBwZW5kKHNwcml0ZS5TcHJpdGUoX0hhbm9pY29sb3JbaV0sIDIwMCwgNDAwLShfbi1pLTEpKjI3KSkKICAgIF9IYW5vaUJsb2NrW2ldLnNldFNjYWxlKDI1LCAzMCppKzMwKQogICAgX0hhbm9pWzBdLmluc2VydCgwLCBfSGFub2lCbG9ja1tpXSkKX3N0ZXB0ZXh0ID0gc3ByaXRlLlRleHQoJ+atpeaVsO+8mjAnLCAzMCwgMzApCl9zdGVwcyA9IHsnc3RlcHMnIDogMH0KdGltZS5zbGVlcCgxKQpfRTdfQTdfQkJfRTVfOEFfQThfRTZfQjFfODlfRThfQUZfQkFfRTVfQTFfOTQoNSwgQSwgQiwgQykK</code>