<snapdata remixID="11769871"><project name="U3L1p5-TicTacToe" app="Snap! 7, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="U3L1p5-TicTacToe"><notes></notes><hidden></hidden><headers></headers><code></code><blocks><block-definition s="for %&apos;i&apos; = %&apos;start&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>step</l><l>tester</l></list></block><block s="doIfElse"><block s="reportGreaterThan"><block var="start"/><block var="end"/></block><script><block s="doSetVar"><l>step</l><l>-1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportLessThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>step</l><l>1</l></block><block s="doSetVar"><l>tester</l><block s="reifyReporter"><autolambda><block s="reportGreaterThan"><block var="i"/><block var="end"/></block></autolambda><list></list></block></block></script></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doUntil"><block s="evaluate"><block var="tester"/><list></list></block><script><block s="doRun"><block var="action"/><list></list></block><block s="doChangeVar"><l>i</l><block var="step"/></block></script></block></script></block-definition><block-definition s="join words %&apos;words&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%mult%txt"></input></inputs><script><block s="doWarp"><script><block s="doIf"><block s="errorObsolete"></block><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="words"/></block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>1</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></block></script></block><block s="doIf"><block s="reportEquals"><l></l><block s="reportListItem"><l>2</l><block var="words"/></block></block><script><block s="doReport"><custom-block s="join words %mult%txt"><block s="reportCONS"><block s="reportListItem"><l>1</l><block var="words"/></block><block s="reportCDR"><block s="reportCDR"><block var="words"/></block></block></block></custom-block></block></script></block><block s="doReport"><block s="reportJoinWords"><list><block s="reportListItem"><l>1</l><block var="words"/></block><l> </l><custom-block s="join words %mult%txt"><block s="reportCDR"><block var="words"/></block></custom-block></list></block></block></script></block></script><scripts><script x="229.00000300000002" y="196.77778077777774"><block s="reportJoinWords"><list><l></l><l></l></list></block></script></scripts></block-definition><block-definition s="makeBoard" type="command" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doSwitchToCostume"><l>Empty</l></block><block s="show"></block><block s="doSetVar"><l>board</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>Position number</l><l>1</l></block><custom-block s="for %upvar = %n to %n %cs"><l>row</l><l>1</l><l>3</l><script><custom-block s="for %upvar = %n to %n %cs"><l>column</l><l>1</l><l>3</l><script><block s="gotoXY"><block s="reportVariadicSum"><list><l>-100</l><block s="reportVariadicProduct"><list><l>50</l><block var="column"/></list></block></list></block><block s="reportDifference"><l>100</l><block s="reportVariadicProduct"><list><l>50</l><block var="row"/></list></block></block></block><block s="createClone"><l><option>myself</option></l></block><block s="doSetVar"><l>Position number</l><block s="reportVariadicSum"><list><block var="Position number"/><l>1</l></list></block></block><block s="doAddToList"><block var="Position number"/><block var="board"/></block></script></custom-block></script><comment w="128" collapsed="false">The nested FOR loops are the important part of this solution.  Details like the starting position of the sprite might be different in student solutions.</comment></custom-block><block s="doSetVar"><l>board</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportDifference"><l></l><l>1</l></block></autolambda><list></list></block><block var="board"/></block></block><block s="hide"></block></script><scripts><script x="315.66666666666663" y="272.1333333333334"><block s="doSwitchToCostume"><l>Empty</l><comment w="144.66666666666666" collapsed="true">Another possible solution.</comment></block><block s="show"></block><block s="gotoXY"><l>-50</l><l>50</l></block><custom-block s="for %upvar = %n to %n %cs"><l>row</l><l>1</l><l>3</l><script><custom-block s="for %upvar = %n to %n %cs"><l>column</l><l>1</l><l>3</l><script><block s="createClone"><l><option>myself</option></l></block><block s="changeXPosition"><l>50</l></block></script></custom-block><block s="setXPosition"><l>-50</l></block><block s="changeYPosition"><l>-50</l></block></script></custom-block><block s="hide"></block></script></scripts></block-definition><block-definition s="possible winning triples" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportNewList"><list><block s="reportNewList"><list><l>1</l><l>2</l><l>3</l></list></block><block s="reportNewList"><list><l>4</l><l>5</l><l>6</l></list></block><block s="reportNewList"><list><l>7</l><l>8</l><l>9</l></list></block><block s="reportNewList"><list><l>1</l><l>4</l><l>7</l></list></block><block s="reportNewList"><list><l>3</l><l>6</l><l>9</l></list></block><block s="reportNewList"><list><l>2</l><l>5</l><l>8</l></list></block><block s="reportNewList"><list><l>1</l><l>5</l><l>9</l></list></block><block s="reportNewList"><list><l>3</l><l>5</l><l>7</l></list></block></list></block></block></script></block-definition><block-definition s="Won? %&apos;a&apos;" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>B</l></list></block><block s="doSetVar"><l>B</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doForEach"><l>item</l><custom-block s="Status of winning triples"></custom-block><script><block s="doIf"><block s="reportEquals"><block s="reportListAttribute"><l><option>length</option></l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportEquals"><l></l><block var="a"/></block></autolambda><list></list></block><block var="item"/></block></block><l>3</l></block><script><block s="doSetVar"><l>B</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script></block><block s="doReport"><block var="B"/></block></script></block-definition><block-definition s="Status of winning triples" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="reportNewList"><list></list></block></block><block s="doForEach"><l>item</l><custom-block s="possible winning triples"></custom-block><script><block s="doAddToList"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportListItem"><l></l><block var="board"/></block></autolambda><list></list></block><block var="item"/></block><block var="a"/></block></script></block><block s="doReport"><block var="a"/></block></script></block-definition><block-definition s="Tie?" type="predicate" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doDeclareVariables"><list><l>Duplicate board</l><l>last square of list</l><l>Tie</l></list></block><block s="doSetVar"><l>Tie</l><block s="reportBoolean"><l><bool>false</bool></l></block></block><block s="doSetVar"><l>Duplicate board</l><block var="board"/></block><block s="doSetVar"><l>last square of list</l><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block var="Duplicate board"/></block></block><block s="doIf"><block s="reportEquals"><block s="reportListAttribute"><l><option>length</option></l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportIsA"><l></l><l><option>number</option></l></block></autolambda><list></list></block><block var="Duplicate board"/></block></block><l>0</l></block><script><block s="doIf"><block s="reportNot"><block s="reportOr"><custom-block s="Won? %txt"><l>X</l></custom-block><custom-block s="Won? %txt"><l>O</l></custom-block></block></block><script><block s="doSetVar"><l>Tie</l><block s="reportBoolean"><l><bool>true</bool></l></block></block></script></block></script></block><block s="doReport"><block var="Tie"/></block></script></block-definition></blocks><stage name="Stage" width="480" height="360" costume="0" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="true" hyperops="true" codify="false" inheritance="false" sublistIDs="false" id="460"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAB4KADAAQAAAABAAABaAAAAAAHwbojAAAL30lEQVR4Ae3QMQEAAADCoPVPbQwfiEBhwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGDBgwIABAwYMGPgMDI3+AAEeFvcCAAAAAElFTkSuQmCC</pentrails><costumes><list struct="atomic" id="461"></list></costumes><sounds><list struct="atomic" id="462"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Square" idx="1" x="50" y="-50" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="false" hidden="true" costume="1" color="80,80,80,1" pen="tip" id="467"><costumes><list id="468"><item><ref mediaID="Square_cst_Empty"></ref></item><item><ref mediaID="Square_cst_X"></ref></item><item><ref mediaID="Square_cst_O"></ref></item></list></costumes><sounds><list struct="atomic" id="469"></list></sounds><blocks></blocks><variables><variable name="Position number"><l>10</l></variable></variables><scripts><script x="22" y="10"><block s="receiveInteraction"><l><option>clicked</option></l></block></script><script x="22" y="56.666666666666686"><block s="createClone"><l><option>myself</option></l></block><block s="bubble"><l>I&apos;m the parent.</l></block><block s="doGlide"><l>1</l><block s="reportRandom"><l>-200</l><l>200</l></block><block s="reportRandom"><l>-150</l><l>150</l></block></block><block s="bubble"><l></l></block></script><script x="682.5" y="298.6666666666667"><block var="board"/></script><script x="481.5" y="272.50000000000006"><block var="position number"/></script><script x="682.6666666666666" y="158.66666666666663"><block s="show"></block></script><script x="354" y="320.33333333333337"><custom-block s="possible winning triples"></custom-block></script><script x="30" y="168.33333333333331"><block s="receiveGo"><comment w="53.333333333333336" collapsed="true">3.1.5.5</comment></block><block s="doHideVar"><l>Winner?</l></block><custom-block s="makeBoard"><comment w="129.33333333333334" collapsed="true">3.1.5.6  Look inside. </comment></custom-block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportBoolean"><l><bool>true</bool></l><comment w="90" collapsed="true">X plays first.</comment></block></block><block s="doForever"><script><block s="doIf"><block s="reportOr"><custom-block s="Won? %txt"><l>X</l></custom-block><custom-block s="Won? %txt"><l>O</l></custom-block></block><script><block s="doIfElse"><custom-block s="Won? %txt"><l>X</l></custom-block><script><block s="doSetVar"><l>Winner?</l><l>X has won</l></block><block s="doShowVar"><l>Winner?</l></block><block s="doWait"><l>5</l></block><block s="doHideVar"><l>Winner?</l></block><block s="doStopThis"><l><option>all</option></l></block></script><script><block s="doSetVar"><l>Winner?</l><l>O has won</l></block><block s="doShowVar"><l>Winner?</l></block><block s="doWait"><l>5</l></block><block s="doHideVar"><l>Winner?</l></block><block s="doStopThis"><l><option>all</option></l></block></script></block></script></block><block s="doIf"><custom-block s="Tie?"></custom-block><script><block s="doSetVar"><l>Winner?</l><l>It’s a tie</l></block><block s="doShowVar"><l>Winner?</l></block><block s="doWait"><l>5</l></block><block s="doHideVar"><l>Winner?</l></block><block s="doStopThis"><l><option>all</option></l></block></script></block></script></block></script><script x="184" y="689.6666666666666"><block s="receiveInteraction"><l><option>clicked</option></l><comment w="53.333333333333336" collapsed="true">3.1.5.7</comment></block><block s="doDeclareVariables"><list><l>Index of item in list</l></list></block><block s="doIf"><block s="reportEquals"><block s="getCostumeIdx"></block><l>1</l><comment w="124" collapsed="true">If square is empty...</comment></block><script><block s="doIfElse"><block var="X&apos;s turn?"/><script><block s="doSetVar"><l>Index of item in list</l><block var="Position number"/></block><block s="doSwitchToCostume"><l>X</l></block><block s="doSetVar"><l>Position number</l><l>X</l></block><block s="doReplaceInList"><block var="Index of item in list"/><block var="board"/><block var="Position number"/></block></script><script><block s="doSetVar"><l>Index of item in list</l><block var="Position number"/></block><block s="doSwitchToCostume"><l>O</l></block><block s="doSetVar"><l>Position number</l><l>O</l></block><block s="doReplaceInList"><block var="Index of item in list"/><block var="board"/><block var="Position number"/></block></script></block><block s="doSetVar"><l>X&apos;s turn?</l><block s="reportNot"><block var="X&apos;s turn?"/></block><comment w="171.33333333333334" collapsed="false">Alternate between TRUE (x&apos;s turn) and FALSE (o&apos;s turn)</comment></block></script></block></script><script x="358" y="491.1666666666665"><custom-block s="makeBoard"></custom-block></script><comment x="362.4140625" y="47.666666666666686" w="180" collapsed="false">Demo script removed from hat block&#xD;for solution, replaced by script below.&#xD;Click the &quot;draggable&quot; box if you want&#xD;to demo this.</comment></scripts></sprite><watcher var="board" style="normal" x="10" y="10" color="243,118,29" extX="80" extY="70"/><watcher scope="Square" var="Position number" style="normal" x="-23" y="107.000002" color="243,118,29" hidden="true"/><watcher var="Winner?" style="normal" x="10" y="103.000002" color="243,118,29" hidden="true"/></sprites></stage><variables><variable name="X&apos;s turn?"><bool>true</bool></variable><variable name="board"><list struct="atomic" id="616">1,2,3,4,5,6,7,8,9</list></variable><variable name="Winner?"><l>X has won</l></variable></variables></scene></scenes></project><media name="U3L1p5-TicTacToe" app="Snap! 7, https://snap.berkeley.edu" version="2"><costume name="Empty" center-x="29" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAOaADAAQAAAABAAAAOQAAAAC3kYqgAAABS0lEQVRoBe2asY2DUBBE19YVcCU4IbYzEoJL6YjQLVANCZITEgKky0n+deAOzrvISPzEmnS+5ksLxp5g3j5Cn8zs7nP1ufmUeH6/3lTffr+USOhMaYfc+VLbtlbXNTXwPM9pGIZg2jgyyADs+96qqooA7VnXdev+BrXzkSQMOuDl+B3j52A4vo0ZJCMQ0lmQyJYYMjLJYAnpKJPIlhgyMslgCekok8iWGDIyyWAJ6SiTyJYYMjLJYAnpKJPIlhgyMslgCekok8iWGDIyyWAJ6SiTyJYYMjLJYAnpKJPIlhgyMslgCekok8iWGDIyyWAJ6SiTyJYYMjLJYAnpKJPIlhgyMslgCekok8iWGDKZyWmansuyPBmKf+oYDMGyZ7J/Lo/jaF3XWdM0+++Udwe0YDmeuz88fP4LnUeYTD5x0nYt7/J3cqaf8rhyohdN4GYyO7OnbQAAAABJRU5ErkJggg==" mediaID="Square_cst_Empty"/><costume name="X" center-x="29" center-y="29" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA6CAYAAAAKjPErAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAOaADAAQAAAABAAAAOgAAAADwMfBwAAAEZklEQVRoBd2aMU/bQBTHLxVCDJHI0CEbGbqBlHyASgR16gYDM7AhYICNDfMJYIEVPgJjl8pI7VapILFWVUakSiVSF4Qqpe9v5bnny5nY53dOnCe9nO9sv3u/u3dn3zlKzaY0dKwaZQLSNmmHdBbkDUE0SV9If5N+n6MfCMhbOJghmSeWOulPhmS2l3q9rg4ODuYXFha4rBLp8/Ozur6+Vo+Pj1Z/AyoNSQesnU5n8PT0NKiSrK+vx/6DY3l5+deQJ0T8jsj9/b1aW1tT/X5/5Nw0Fuzs7Kibm5vYtaurK7W5ufmWCxKQ1BpcrqoCCkCEKcvJyYna3t7mbJQmIClMFVqBZdpBTcCtrS0VBAG7H6cJSJSiFaoAagPUezQmpIMRyNdA0bPTIHkA4a8VEifSenTSoHkBX4Vk0DAM1eLiIrLRbItZd1KgCEc9JDEG9XzkpOUntSf52m63q25vbycOChj0IktWQFw/FhIXYdadJKgJuLq6mqkH4TskEyQunBSoCdhutxMPfvg2TjJDwlDZoDZARFSj0RjHlTifC7JMUClA+JwbsgxQSUBnSJ+geDwdHR2hikgwBl1ClO9H6tSTbEB6jAJQX/1IABaGhAEpUBMQLyBYPuWdZLgD9LRQT7KhoqA2QIRoq9XiKgqlIpDwIA1UX8zaPE0DhD0pEYOEQzbQjY0NhdnSJmUAol5RSBgEKJzHpMFirhxQ3uv1EpMMxiBCVLIHuX5xSBjGWILDaaDYO0IP8x6ST0D44wUShjEr2kAvLy+jHkRvQ3wDog5vkDBuA93f30+sRzFefYQo6mfxColKGHRlZYXrjFPsJek7hPEJ4QPvkOxvrVbjw9JT75CYXPCq9vDwMAJnm3VHLhIo8A5p7gldXFykzroCPFYTXiHRUzyLonaMwb29Peusm/bCYPU6Z6E3SDMUAYhtTghPRmnP0egiwR8vkCYgdtYYkH0vE1Qc0gaYFoppoKenp9wWIqkoZB5A9t4Gio82sCUlYpAugAzBoAhrFvS+JGhAhkPSAbWg08dl+iaY+MpLzjrZwU24F76w0lh2sgWWoY2QUhWQ4sAJkmZNNhalRQCZRgJUhywUrmZIkXMqbZKhRswssAFbLGY9XJ41dYY0K8Yz7/z8PGu9Y6+TBHWCtAFi7YgJRFKkQHNDlgXIjSUBmguybEAp0MyQCEf9uYUx6CNEGcxMi/RoJkisJLDxxFI2INfrCjoWEoD694mlpaVSe5ABOXUBfRXSBJT8PsFOu6Q2UH2L07SZCmkDxBj0vbNmOpiWN0HxOUKPOP0+K+S0AzIAQM/Ozjgb7ULYQEcgqwLIZIeHh9a/yeH/r7oElIle0I+Pjwe0xR+/cNMYHNzd3fF781Sn5kKh2WwyB9j+r0LoX8t/KR+drBIgt74JOmT5gh3fgPQD6XvSWHZ3dxW1RpyvygGGm/FNtA/fA9I/pNy9s5Z+myO4Huln0o+k86RfSX+QVl3eDQE+I1y7wwwKoZ+G+ZlJ/gEe71me3JeBmgAAAABJRU5ErkJggg==" mediaID="Square_cst_X"/><costume name="O" center-x="28" center-y="28" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAADkAAAA5CAYAAACMGIOFAAAAAXNSR0IArs4c6QAAAERlWElmTU0AKgAAAAgAAYdpAAQAAAABAAAAGgAAAAAAA6ABAAMAAAABAAEAAKACAAQAAAABAAAAOaADAAQAAAABAAAAOQAAAAC3kYqgAAAE0ElEQVRoBd1a7VHjMBBVbvgPHUAH0AHuADqADqCDiAqgA6AC6ICkAqACoAKgAt8+nVfzopNsybHztTOKNrK0+560XstKJsYYK+VUyq7KfK9hVu0qQ+E1/7PD5Dy1kORNXddm24uwu/EMRVkgKeSmfHFb9ZCH3pOj8/n8/DRfX1/Oz+HhoTk6OhrdpzoYheR8PjfPz89mNpuZt7c39RWtT05OTFVV5vz83JyejpfkrXivUZaRj4+P+vLysj44OHC21GZJjbGwAVvLCvm1orvnZG+S39/ftbW2k5iEaC0r5Qp0AhHVYRO2+wrZt6L3J3l/fx9dOZC4urqqn56eOjGiD/rGiGNl4aOPDELy+vr6vxXASr28vPTB5MZgLGwQQKfDV6mQDSt62UoihCRJLADBKuSsWi5Q2ApXFj5Lwrc3STiRbLhA8OLiosh5LlH4gm0C63znEqVxVvT8lUTmo8H1dDrNxdy7H3ywT2DIERpjRc8jGTrrmxByAIZ94ItAZ00u9beid5PEPUKDXDYMgYz9HRmYMXTlAOprRe8mKVsw7+Ds7GxsPkn78K3ggalNtF/Dr53k7e2tN7y/vz9KkmkDy9eQdIBBCQBbSrRPJ0kY5W1am9GUs6HbedKBLZVts0myQTy3NkX4GZqaeCa58D4pFxbk8fHRf5e9pNfXrTAWvO3kiJVOLs55pRAG2o46FRY8ZlV6DjbCbpMryTMk+0kj8S/jNkOA5fj42INhrL6RlCRJvPCq4IV200R2Ph4SY/WNpCRJ4rhCBW/vmyaMibHGcCZJxjpva1uS5Pv7u+fEs+Yb16wwJsYag5Uk+fPz4/tvUtJRUIyJsep1rpMkudO260mSnKK7jhXXMQmMibHGsCRJloRDzPDYbRyijDXit06S5M5skNvXqRdgmiRJ4lRbpWtHof1WWTMmxhrBgO1p/H3y9fXV7127XlBXtWdlPxKiHh+whiK89Hp674rnkLyguonBjoJvdNe4xg9g0XCV1y7Dz8wYrGS4ojPvWe/u7mLj19LGWDpC1eOzormlDZccJ9p6DfUQP8SEPkq/AwNjSp3YUx8revyeVOd8bC+zps1rq4FBCQBbSrRPw6+dZDhzXUeBKadDtIfnr22RVUQS4Pi4Hlktls2GINFmAz45owJTmxSTxHGDbJ18mOCRssrjEPhigsDS5b+YJGYMM8lnnpK2Ox21zXTuNYQkfCloYMiJJO0vtZXSfk8ymDDbjh26YYgK1jqVTRkndPRtipU6nyQGhzc/iMpzC5cGFdhsQPoavnOFxlrRy0jCSRi6MIiQyp3lNqCwweEJ27khynYxrilW6nKSMIZ7hZNRY7DGc+zh4cFdZ6dtOmxhDD8D1R584Hqp6Hjwm+BDylQK/uOCKluwf8QWC+X39/e/cbIifmsoGdmgQLAXRoHgbSK2L8a+Wf4r4IrcEq5vycdkAmpObvBppbilLZ0t7Y90zs9Stde3hq2uR4T6TtXk24q+PEl1hLDCDzD8OyI503skWmMMxvYJTfXPNfldLlwxQylBKPPfzjhEOXQR0nIvDv4zBIcrAtdKmQKszASqnRAimX5p3gmm/0ikz3h2iOTin3pliWe7QC7ksReQqiiWg0tb9bVitK1nPNxxi/Ua2bXaYgJZ0P8C1NsWHkRHfLUAAAAASUVORK5CYII=" mediaID="Square_cst_O"/></media></snapdata>