<snapdata remixID="13281226"><project name="Encryption" app="Snap! 10, https://snap.berkeley.edu" version="2"><notes></notes><thumbnail>data:image/png;base64,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</thumbnail><scenes select="1"><scene name="Encryption"><notes></notes><palette><category name="Tools" color="179,76,255,1"/><category name="Fun" color="0,189,189,1"/><category name="Number" color="199,45,0,1"/><category name="Sets" color="0,57,158,1"/></palette><hidden></hidden><headers></headers><code></code><blocks><block-definition s="text %&apos;text&apos; $arrowRight bin" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="%n num $arrowRight bin"><l></l></custom-block></autolambda><list></list></block><block s="reportIfElse"><block s="reportIsA"><block s="reportUnicode"><block var="text"/></block><l><option>number</option></l></block><block s="reportNewList"><list><block s="reportUnicode"><block var="text"/></block></list></block><block s="reportUnicode"><block var="text"/></block></block></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><l></l><l> </l><l></l></list></block></autolambda><list></list></block></block></block></script></block-definition><block-definition s="%&apos;num&apos; num $arrowRight bin" type="reporter" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportIfElse"><block s="reportVariadicNotEquals"><list><block var="num"/><l>0</l></list></block><block s="reportJoinWords"><list><custom-block s="%n num $arrowRight bin"><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="num"/><l>2</l></block></block></custom-block><block s="reportModulus"><block var="num"/><l>2</l></block></list></block><l>0</l></block></block></script></block></script></block-definition><block-definition s="bin %&apos;bin&apos; $arrowRight text" type="reporter" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportJoinWords"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportUnicodeAsLetter"><l></l></block></autolambda><list></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="bin %s $arrowRight num"><l></l></custom-block></autolambda><list></list></block><block s="reportTextSplit"><block var="bin"/><l> </l></block></block></block></block></block></script></block></script></block-definition><block-definition s="delete %&apos;item&apos; of %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%n">1<options>1&#xD;last&#xD;all</options></input><input type="%l"></input></inputs><script><block s="doDeleteFromList"><block var="item"/><block var="list"/></block><block s="doReport"><block var="list"/></block></script></block-definition><block-definition s="generate %&apos;num&apos; big prime number" type="reporter" category="Fun"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>a</l><l>b</l><l>c</l><l>d</l></list></block><block s="doSetVar"><l>c</l><l>100000</l></block><block s="doSetVar"><l>d</l><l>1000000</l></block><block s="doSetVar"><l>a</l><block s="reportRandom"><block var="c"/><block var="d"/></block></block><block s="doSetVar"><l>b</l><block s="reportNewList"><list></list></block></block><block s="doIfElse"><block s="reportVariadicEquals"><list><block var="num"/><l>1</l></list></block><script><block s="doUntil"><custom-block s="is prime? %n"><block var="a"/></custom-block><script><block s="doSetVar"><l>a</l><block s="reportRandom"><block var="c"/><block var="d"/></block></block></script></block><block s="doReport"><block var="a"/></block></script><script><block s="doFor"><l>i</l><l>1</l><block var="num"/><script><block s="doSetVar"><l>a</l><block s="reportRandom"><block var="c"/><block var="d"/></block></block><block s="doUntil"><custom-block s="is prime? %n"><block var="a"/></custom-block><script><block s="doSetVar"><l>a</l><block s="reportRandom"><block var="c"/><block var="d"/></block></block></script></block><block s="doAddToList"><block var="a"/><block var="b"/></block></script></block><block s="doReport"><block var="b"/></block></script></block></script></block></script></block-definition><block-definition s="is prime? %&apos;number&apos;" type="reporter" category="Number"><comment x="0" y="0" w="91" collapsed="false">Checks if the number is prime.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>factors</l></list></block><block s="doSetVar"><l>factors</l><custom-block s="$flash factor %n"><block var="number"/></custom-block></block><block s="doIf"><custom-block s="%s ≤ %s"><block var="number"/><l>1</l></custom-block><script><block s="doReport"><block s="reportBoolean"><l><bool>false</bool></l></block></block></script><list></list></block><block s="doReport"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block s="reportVariadicAnd"><list><block s="reportListItem"><l>1</l><block var="factors"/></block><block s="reportListItem"><l><option>last</option></l><block var="factors"/></block><block s="reportVariadicEquals"><list><block s="reportListAttribute"><l><option>length</option></l><block var="factors"/></block><l>2</l></list></block></list></block><l>1</l></list></block><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportBoolean"><l><bool>false</bool></l></block></block></block></script></block></script></block-definition><block-definition s="%&apos;a&apos; ≤ %&apos;b&apos;" type="predicate" category="Number"><comment x="0" y="0" w="90" collapsed="false">Checks if a is less than or equal to b.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%s"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportIfElse"><block s="reportVariadicOr"><list><block s="reportVariadicLessThan"><list><block var="a"/><block var="b"/></list></block><block s="reportVariadicEquals"><list><block var="a"/><block var="b"/></list></block></list></block><block s="reportBoolean"><l><bool>true</bool></l></block><block s="reportBoolean"><l><bool>false</bool></l></block></block></block></script></block></script></block-definition><block-definition s="bin %&apos;bin&apos; $arrowRight num" type="reporter" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportCombine"><block s="reportListItem"><l>2</l><block s="reportListAttribute"><l><option>columns</option></l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block s="reportListItem"><l>1</l><block var="value"/></block><l>1</l></list></block></autolambda><list><l>value</l></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><block var="value"/><block s="reportPower"><l>2</l><block s="reportDifference"><block var="index"/><l>1</l></block></block></list></block></autolambda><list><l>value</l><l>index</l></list></block><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportTextSplit"><block var="bin"/><l><option>letter</option></l></block></block></block></block></block></block><block s="reifyReporter"><autolambda><block s="reportVariadicSum"><list></list></block></autolambda><list></list></block></block></block></script></block></script></block-definition><block-definition s="nothing" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l></l></block></script></block-definition><block-definition s="encrypt text %&apos;txt&apos; with public key %&apos;key&apos;" type="reporter" category="Tools"><comment x="0" y="0" w="124" collapsed="false">Encrypts a text using the RSA key then encodes into numbers.</comment><header></header><code></code><translations></translations><inputs><input type="%txt">Hello, world!</input><input type="%l"></input></inputs><script><custom-block s="USE BIGNUMS %b"><l><bool>false</bool></l></custom-block><block s="doReport"><block s="reportIfElse"><block s="reportVariadicNotEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="txt"/></block><l>0</l></list></block><block s="reportCombine"><custom-block s="make equal length %l"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="$flash cascade %n times %repRing %s"><block s="reportListItem"><l>2</l><block var="key"/></block><block s="reifyReporter"><autolambda><block s="reportModulus"><block s="reportVariadicProduct"><list><block var="#1"/><block var="value"/></list></block><block s="reportListItem"><l>1</l><block var="key"/></block></block></autolambda><list><l>#1</l></list></block><l>1</l></custom-block></autolambda><list><l>value</l></list></block><block s="reportIfElse"><block s="reportIsA"><block s="reportUnicode"><block var="txt"/></block><l><option>list</option></l></block><block s="reportUnicode"><block var="txt"/></block><block s="reportNewList"><list><block s="reportUnicode"><block var="txt"/></block></list></block></block></block></custom-block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><block var="#1"/><l> </l><block var="#2"/></list></block></autolambda><list><l>#1</l><l>#2</l></list></block></block><l></l></block></block></script></block-definition><block-definition s="generate RSA key from %&apos;low&apos; to %&apos;high&apos;" type="reporter" category="Tools"><comment x="0" y="0" w="90" collapsed="false">Generate a RSA public and private key.</comment><header></header><code></code><translations></translations><inputs><input type="%n">100</input><input type="%n">1000</input></inputs><script><custom-block s="USE BIGNUMS %b"><l><bool>true</bool></l></custom-block><block s="doWarp"><script><block s="doDeclareVariables"><list><l>p</l><l>q</l><l>n</l><l>carmichael</l><l>coprime</l><l>mod inv</l></list></block><block s="bubble"><l>Generating p value…</l></block><block s="doSetVar"><l>p</l><custom-block s="random prime number from %n to %n"><l>1</l><block var="low"/></custom-block></block><block s="bubble"><l>Generating q value…</l></block><block s="doSetVar"><l>q</l><custom-block s="random prime number from %n to %n"><block var="low"/><block var="high"/></custom-block></block><block s="bubble"><l>Multiplying p and q…</l></block><block s="doSetVar"><l>n</l><block s="reportVariadicProduct"><list><block var="p"/><block var="q"/></list></block></block><block s="bubble"><l>Getting Carmichael value…</l></block><block s="doSetVar"><l>carmichael</l><custom-block s="λ ( %n , %n )"><block var="p"/><block var="q"/></custom-block></block><block s="bubble"><l>Getting random coprime value…</l></block><block s="doSetVar"><l>coprime</l><block s="reportListItem"><l><option>random</option></l><custom-block s="co-prime generator %n from %n"><block var="carmichael"/><block var="carmichael"/></custom-block></block></block><block s="bubble"><l>Getting modular inverse value…</l></block><block s="doSetVar"><l>mod inv</l><custom-block s="modular inverse of %n and %n"><block var="coprime"/><block var="carmichael"/></custom-block></block><block s="doSayFor"><l>Key generation completed</l><l>2</l></block><block s="doReport"><block s="reportNewList"><list><custom-block s="public key %br %n %br %n"><block var="n"/><block var="coprime"/></custom-block><custom-block s="private key %br %n %br %n"><block var="n"/><block var="mod inv"/></custom-block></list></block></block></script></block></script></block-definition><block-definition s="decrypt %&apos;txt&apos; with private key %&apos;key&apos;" type="reporter" category="Tools"><comment x="0" y="0" w="90" collapsed="false">Decrypt an encrypted string of numbers into a text using a RSA private key.</comment><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%l"></input></inputs><script><custom-block s="USE BIGNUMS %b"><l><bool>false</bool></l></custom-block><block s="doReport"><block s="reportIfElse"><block s="reportVariadicNotEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="txt"/></block><l>0</l></list></block><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportUnicodeAsLetter"><block var="value"/></block></autolambda><list><l>value</l></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="$flash cascade %n times %repRing %s"><block s="reportListItem"><l>2</l><block var="key"/></block><block s="reifyReporter"><autolambda><block s="reportModulus"><block s="reportVariadicProduct"><list><block var="#1"/><block var="value"/></list></block><block s="reportListItem"><l>1</l><block var="key"/></block></block></autolambda><list><l>#1</l></list></block><l>1</l></custom-block></autolambda><list><l>value</l></list></block><block s="reportTextSplit"><block var="txt"/><l><option>word</option></l></block></block></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list></list></block></autolambda><list></list></block></block><l></l></block></block></script></block-definition><block-definition s="next prime to %&apos;num&apos;" type="reporter" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doDeclareVariables"><list><l>counter</l><l>out</l></list></block><block s="doSetVar"><l>counter</l><l>1</l></block><block s="doUntil"><custom-block s="is prime? %n"><block s="reportVariadicSum"><list><block var="num"/><block var="counter"/></list></block></custom-block><script><block s="doSetVar"><l>out</l><block s="reportVariadicSum"><list><block var="num"/><block var="counter"/></list></block></block><block s="doChangeVar"><l>counter</l><l>1</l></block></script></block><block s="doSetVar"><l>out</l><block s="reportVariadicSum"><list><block var="num"/><block var="counter"/></list></block></block><block s="doReport"><block var="out"/></block></script></block-definition><block-definition s="λ ( %&apos;num&apos; , %&apos;num2&apos; )" type="reporter" category="Fun"><comment x="0" y="0" w="90" collapsed="false">Carmichael’s totient function</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><custom-block s="lcm of %n and %n"><block s="reportDifference"><block var="num"/><l>1</l></block><block s="reportDifference"><block var="num2"/><l>1</l></block></custom-block></block></script></block-definition><block-definition s="lcm of %&apos;number1&apos; and %&apos;number2&apos;" type="reporter" category="Number"><comment x="0" y="0" w="90" collapsed="false">Finds the least common multiple of two numbers.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportQuotient"><block s="reportVariadicProduct"><list><block var="number1"/><block var="number2"/></list></block><custom-block s="$flash gcd/gcf of %n and %n"><block var="number1"/><block var="number2"/></custom-block></block></block></script></block></script></block-definition><block-definition s="# %&apos;num&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block var="num"/></block></script></block-definition><block-definition s="modular inverse of %&apos;a&apos; and %&apos;m&apos;" type="reporter" category="Number"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>m0</l><l>x</l><l>y</l><l>q</l><l>t</l></list></block><block s="doSetVar"><l>m0</l><block var="m"/></block><block s="doSetVar"><l>x</l><l>1</l></block><block s="doSetVar"><l>y</l><l>0</l></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="m"/><l>1</l></list></block><script><block s="doReport"><l>0</l></block></script><list></list></block><block s="doUntil"><block s="reportNot"><block s="reportVariadicGreaterThan"><list><block var="a"/><l>1</l></list></block></block><script><block s="doSetVar"><l>q</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="a"/><block var="m"/></block></block></block><block s="doSetVar"><l>t</l><block var="m"/></block><block s="doSetVar"><l>m</l><block s="reportModulus"><block var="a"/><block var="m"/></block></block><block s="doSetVar"><l>a</l><block var="t"/></block><block s="doSetVar"><l>t</l><block var="y"/></block><block s="doSetVar"><l>y</l><block s="reportDifference"><block var="x"/><block s="reportVariadicProduct"><list><block var="q"/><block var="y"/></list></block></block></block><block s="doSetVar"><l>x</l><block var="t"/></block></script></block><block s="doIf"><block s="reportVariadicLessThan"><list><block var="x"/><l>0</l></list></block><script><block s="doSetVar"><l>x</l><block s="reportVariadicSum"><list><block var="x"/><block var="m0"/></list></block></block></script><list></list></block><block s="doReport"><block var="x"/></block></script></block></script></block-definition><block-definition s="is %&apos;num&apos; and %&apos;num2&apos; co-prime?" type="predicate" category="Number"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportVariadicEquals"><list><custom-block s="$flash gcd/gcf of %n and %n"><block var="num"/><block var="num2"/></custom-block><l>1</l></list></block></block></script></block-definition><block-definition s="$flash gcd/gcf of %&apos;number1&apos; and %&apos;number2&apos;" type="reporter" category="Number"><comment x="0" y="0" w="90" collapsed="false">Significantly faster gcd/gcf finder</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportListItem"><l><option>last</option></l><custom-block s="%l %s %l"><custom-block s="$flash factor %n"><block var="number1"/></custom-block><l>∩</l><custom-block s="$flash factor %n"><block var="number2"/></custom-block></custom-block></block></block></script></block-definition><block-definition s="$flash factor %&apos;num&apos;" type="reporter" category="Number"><comment x="0" y="0" w="90" collapsed="false">Fast factor</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportAtomicKeep"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><block s="reportModulus"><block var="num"/><l></l></block><l>0</l></list></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><block var="num"/></block></block></block></script></block></script></block-definition><block-definition s="is %&apos;x&apos; an element of set %&apos;set&apos;" type="reporter" category="Sets"><comment x="0" y="0" w="90" collapsed="false">Find if a thing is in a set</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportNot"><block s="reportVariadicEquals"><list><block s="reportAtomicFindFirst"><block s="reifyPredicate"><autolambda><block s="reportVariadicEquals"><list><l></l><block var="x"/></list></block></autolambda><list></list></block><block var="set"/></block><l></l></list></block></block></block></script></block-definition><block-definition s="error %&apos;msg&apos;" type="command" category="control"><comment x="0" y="0" w="268.6666666666667" collapsed="false">Throw an error.&#xD;&#xD;Makes a red halo appear around the script that runs it,&#xD;with the input text shown in a speech balloon next to&#xD;the script, just like any Snap! error.&#xD;&#xD;This is useful to put in the second script of SAFELY TRY&#xD;after some other instructions to undo the partial work of&#xD;the first script.</comment><header></header><code></code><translations>pt:lança o erro _&#xD;</translations><inputs><input type="%txt"></input></inputs><script><block s="doApplyExtension"><l>err_error(msg)</l><list><block var="msg"/></list></block></script></block-definition><block-definition s="%&apos;a&apos; %&apos;type&apos; %&apos;b&apos;" type="reporter" category="Sets"><comment x="0" y="0" w="90" collapsed="false">Set operations</comment><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%s" readonly="true">∪<options>Union=∪&#xD;Intersection=∩&#xD;Set Difference=\&#xD;Cartesian Product=x</options></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>output</l></list></block><block s="doSetVar"><l>output</l><block s="reportNewList"><list></list></block></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="type"/><l>∪</l></list></block><script><block s="doReport"><block s="reportListAttribute"><l><option>sorted</option></l><block s="reportListAttribute"><l><option>uniques</option></l><block s="reportConcatenatedLists"><list><block var="a"/><block var="b"/></list></block></block></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="type"/><l>∩</l></list></block><script><block s="doForEach"><l>item a</l><block var="a"/><script><block s="doForEach"><l>item b</l><block var="b"/><script><block s="doIf"><block s="reportListContainsItem"><block var="b"/><block var="item a"/></block><script><block s="doAddToList"><block var="item a"/><block var="output"/></block></script><list></list></block></script></block></script></block><block s="doReport"><block s="reportListAttribute"><l><option>sorted</option></l><block s="reportListAttribute"><l><option>uniques</option></l><block var="output"/></block></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="type"/><l>\</l></list></block><script><block s="doForEach"><l>item a</l><block var="a"/><script><block s="doForEach"><l>item b</l><block var="b"/><script><block s="doIf"><block s="reportNot"><custom-block s="is %s an element of set %l"><block var="item b"/><block var="a"/></custom-block></block><script><block s="doAddToList"><block var="item b"/><block var="output"/></block></script><list><block s="reportNot"><custom-block s="is %s an element of set %l"><block var="item a"/><block var="b"/></custom-block></block><script><block s="doAddToList"><block var="item a"/><block var="output"/></block></script></list></block></script></block></script></block><block s="doReport"><block s="reportListAttribute"><l><option>sorted</option></l><block s="reportListAttribute"><l><option>uniques</option></l><block var="output"/></block></block></block></script><list></list></block><block s="doIf"><block s="reportVariadicEquals"><list><block var="type"/><l>x</l></list></block><script><block s="doReport"><block s="reportCrossproduct"><list><block var="a"/><block var="b"/></list></block></block></script><list></list></block><custom-block s="error %txt"><l>Error: Not a valid operation</l></custom-block></script></block></script></block-definition><block-definition s="USE BIGNUMS %&apos;bool&apos;" type="command" category="operators"><comment x="0" y="0" w="303.3333333333333" collapsed="false">call with True to turn on the entire Scheme numeric tower, including infinite-precision integers, exact rationals, and complex numbers; call with False to restore native JavaScript arithmetic.</comment><header></header><code></code><translations>pt:altera utilização de aritmética do Scheme para _&#xD;ca:sistema numèric d&apos;Scheme _&#xD;</translations><inputs><input type="%b"></input></inputs><script><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/biginteger.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/schemeNumber.js</l></list></block><block s="doApplyExtension"><l>src_load(url)</l><list><l>libraries/bignums.js</l></list></block><block s="doApplyExtension"><l>big_switch(bool)</l><list><block var="bool"/></list></block></script></block-definition><block-definition s="%&apos;n&apos; !" type="reporter" category="operators"><comment x="0" y="0" w="190.66666666666666" collapsed="false">The factorial function, to make very large numbers, to demo bignums.</comment><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="n"/><l>0</l></list></block><l>1</l><block s="reportVariadicProduct"><list><block var="n"/><custom-block s="%n !"><block s="reportDifference"><block var="n"/><l>1</l></block></custom-block></list></block></block></block></script></block-definition><block-definition s="%&apos;x&apos;" type="reporter" category="operators"><comment x="0" y="0" w="234.66666666666666" collapsed="false">The identity function: reports its input.&#xD;It&apos;s useful to get things like 3/4 or 5-2i into&#xD;numeric input slots.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block var="x"/></block></script></block-definition><block-definition s="Scheme number %&apos;function&apos; of %&apos;number&apos;" type="reporter" category="operators"><comment x="0" y="0" w="300" collapsed="true">Provides Scheme arithmetic functions not in JavaScript</comment><header></header><code></code><translations>pt:_ de _&#xD;ca:Scheme _ de _&#xD;</translations><inputs><input type="%s" readonly="true"><options>number?&#xD;complex?&#xD;real?&#xD;rational?&#xD;integer?&#xD;exact?&#xD;inexact?&#xD;exact&#xD;inexact&#xD;finite?&#xD;infinite?&#xD;nan?&#xD;numerator&#xD;denominator&#xD;real-part&#xD;imag-part&#xD;magnitude&#xD;angle</options></input><input type="%s"></input></inputs><script><block s="doReport"><block s="reportApplyExtension"><l>big_scheme(fn, num)</l><list><block var="function"/><block var="number"/></list></block></block></script></block-definition><block-definition s="random prime number from %&apos;low&apos; to %&apos;high&apos;" type="reporter" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%n">1</input><input type="%n">10</input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>list</l></list></block><block s="doSetVar"><l>list</l><block s="reportNewList"><list><l>1</l></list></block></block><block s="doUntil"><block s="reportVariadicGreaterThan"><list><block s="reportListItem"><l><option>last</option></l><block var="list"/></block><block var="high"/></list></block><script><block s="doAddToList"><custom-block s="next prime to %n"><block s="reportListItem"><l><option>last</option></l><block var="list"/></block></custom-block><block var="list"/></block><block s="bubble"><block s="reportJoinWords"><list><l>Generating primes… </l><block s="reportListItem"><l><option>last</option></l><block var="list"/></block><l>/</l><block var="high"/></list></block></block></script></block><block s="doReport"><block s="reportListItem"><l><option>random</option></l><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportVariadicLessThanOrEquals"><list><block var="value"/><block var="high"/></list></block></autolambda><list><l>value</l></list></block><block var="list"/></block></block></block></script></block></script></block-definition><block-definition s="duration %&apos;run&apos; offset %&apos;offset&apos;" type="reporter" category="sensing"><header></header><code></code><translations></translations><inputs><input type="%cs"></input><input type="%n">0</input></inputs><script><custom-block s="USE BIGNUMS %b"><l><bool>true</bool></l></custom-block><block s="doDeclareVariables"><list><l>a</l><l>b</l></list></block><block s="doSetVar"><l>a</l><block s="reportDate"><l><option>time in milliseconds</option></l></block></block><block s="doRun"><block var="run"/><list></list></block><block s="doSetVar"><l>b</l><block s="reportDate"><l><option>time in milliseconds</option></l></block></block><block s="doReport"><block s="reportVariadicSum"><list><custom-block s="Scheme number %s of %s"><l>inexact</l><block s="reportQuotient"><block s="reportDifference"><block var="b"/><block var="a"/></block><l>1000</l></block></custom-block><block var="offset"/></list></block></block></script></block-definition><block-definition s="all variable data" type="reporter" category="other"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportNewList"><list><block s="reportListItem"><block var="value"/><block s="reportApplyExtension"><l>var_names(scope)</l><list><l>global</l></list></block></block><block s="reportApplyExtension"><l>var_get(name)</l><list><block s="reportListItem"><block var="value"/><block s="reportApplyExtension"><l>var_names(scope)</l><list><l>global</l></list></block></block></list></block></list></block></autolambda><list><l>value</l></list></block><block s="reportNumbers"><l>1</l><block s="reportListAttribute"><l><option>length</option></l><block s="reportApplyExtension"><l>var_names(scope)</l><list><l>global</l></list></block></block></block></block></block></script></block-definition><block-definition s="convert numbers to text %&apos;num&apos;" type="reporter" category="Tools"><comment x="0" y="0" w="90" collapsed="false">Convert numbers into a Unicode string.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportUnicodeAsLetter"><block var="value"/></block></autolambda><list><l>value</l></list></block><block s="reportTextSplit"><block var="num"/><l><option>word</option></l></block></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list></list></block></autolambda><list></list></block></block></block></script></block></script></block-definition><block-definition s="convert text to numbers %&apos;txt&apos;" type="reporter" category="Tools"><comment x="0" y="0" w="90" collapsed="false">Convert a Unicode string to a bunch of numbers.</comment><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block var="value"/></block><block s="doIfElse"><block s="reportVariadicLessThan"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="value"/></block><block s="reportTextAttribute"><l><option>length</option></l><block s="reportVariadicMax"><block var="list"/></block></block></list></block><script><block s="doUntil"><block s="reportVariadicEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="a"/></block><block s="reportTextAttribute"><l><option>length</option></l><block s="reportVariadicMax"><block var="list"/></block></block></list></block><script><block s="doSetVar"><l>a</l><block s="reportCombine"><block s="reportCONS"><l>0</l><block s="reportNewList"><list><block var="a"/></list></block></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list></list></block></autolambda><list></list></block></block></block></script></block><block s="doReport"><block var="a"/></block></script><script><block s="doReport"><block var="value"/></block></script></block></script><list><l>value</l><l>index</l><l>list</l></list></block><block s="reportIfElse"><block s="reportIsA"><block s="reportUnicode"><block var="txt"/></block><l><option>list</option></l></block><block s="reportUnicode"><block var="txt"/></block><block s="reportNewList"><list><block s="reportUnicode"><block var="txt"/></block></list></block></block></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><block var="#1"/><l> </l><block var="#2"/></list></block></autolambda><list><l>#1</l><l>#2</l></list></block></block></block></script></block></script></block-definition><block-definition s="make equal length %&apos;list&apos;" type="reporter" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block var="value"/></block><block s="doIfElse"><block s="reportVariadicLessThan"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="value"/></block><block s="reportTextAttribute"><l><option>length</option></l><block s="reportVariadicMax"><block var="list"/></block></block></list></block><script><block s="doUntil"><block s="reportVariadicEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="a"/></block><block s="reportTextAttribute"><l><option>length</option></l><block s="reportVariadicMax"><block var="list"/></block></block></list></block><script><block s="doSetVar"><l>a</l><block s="reportCombine"><block s="reportCONS"><l>0</l><block s="reportNewList"><list><block var="a"/></list></block></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list></list></block></autolambda><list></list></block></block></block></script></block><block s="doReport"><block var="a"/></block></script><script><block s="doReport"><block var="value"/></block></script></block></script><list><l>value</l><l>index</l><l>list</l></list></block><block var="list"/></block></block></script></block></script></block-definition><block-definition s="compress number word %&apos;key&apos;" type="reporter" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%txt"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportVariadicEquals"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportTextAttribute"><l><option>length</option></l><block var="value"/></block></autolambda><list><l>value</l></list></block><block s="reportTextSplit"><block var="key"/><l><option>word</option></l></block></block></block><block s="reportNewList"><list><block s="reportCombine"><block s="reportTextSplit"><block var="key"/><l><option>word</option></l></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list></list></block></autolambda><list></list></block></block><block s="reportListItem"><l>1</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportTextAttribute"><l><option>length</option></l><block var="value"/></block></autolambda><list><l>value</l></list></block><block s="reportTextSplit"><block var="key"/><l><option>word</option></l></block></block></block></list></block><l></l></block></block></script></block-definition><block-definition s="uncompress word %&apos;key&apos;" type="reporter" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>a</l><l>b</l><l>c</l></list></block><block s="doSetVar"><l>a</l><block s="reportListItem"><l>1</l><block var="key"/></block></block><block s="doSetVar"><l>b</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>c</l><custom-block s="slice %txt at index %n"><block var="a"/><block s="reportListItem"><l>2</l><block var="key"/></block></custom-block></block><block s="doUntil"><block s="reportVariadicEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block s="reportListItem"><l>2</l><block var="c"/></block></block><block s="reportListItem"><l>2</l><block var="key"/></block></list></block><script><block s="doAddToList"><block s="reportListItem"><l>1</l><block var="c"/></block><block var="b"/></block><block s="doSetVar"><l>c</l><custom-block s="slice %txt at index %n"><block s="reportListItem"><l>2</l><block var="c"/></block><block s="reportListItem"><l>2</l><block var="key"/></block></custom-block></block></script></block><block s="doForEach"><l>item</l><block var="c"/><script><block s="doAddToList"><block var="item"/><block var="b"/></block></script></block><block s="doReport"><block s="reportCombine"><block var="b"/><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><block var="#1"/><l> </l><block var="#2"/></list></block></autolambda><list><l>#1</l><l>#2</l></list></block></block></block></script></block></script></block-definition><block-definition s="slice %&apos;text&apos; at index %&apos;index&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%n">1</input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportVariadicGreaterThanOrEquals"><list><block var="index"/><block s="reportTextAttribute"><l><option>length</option></l><block var="text"/></block></list></block><block var="text"/><block s="reportNewList"><list><block s="reportCombine"><block s="reportListItem"><block s="reportNumbers"><l>1</l><block var="index"/></block><block s="reportTextSplit"><block var="text"/><l><option>letter</option></l></block></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list></list></block></autolambda><list></list></block></block><block s="reportCombine"><block s="reportListItem"><block s="reportNumbers"><block s="reportVariadicSum"><list><block var="index"/><l>1</l></list></block><block s="reportListAttribute"><l><option>length</option></l><block s="reportTextSplit"><block var="text"/><l><option>letter</option></l></block></block></block><block s="reportTextSplit"><block var="text"/><l><option>letter</option></l></block></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list></list></block></autolambda><list></list></block></block></list></block></block></block></script></block-definition><block-definition s="next co-prime to %&apos;number&apos; from %&apos;num2&apos;" type="reporter" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%n">1</input><input type="%n">10</input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>counter</l><l>out</l></list></block><block s="doSetVar"><l>counter</l><l>1</l></block><block s="doUntil"><custom-block s="is %n and %n co-prime?"><block s="reportVariadicSum"><list><block var="number"/><block var="counter"/></list></block><block var="num2"/></custom-block><script><block s="doSetVar"><l>out</l><block s="reportVariadicSum"><list><block var="number"/><block var="counter"/></list></block></block><block s="doChangeVar"><l>counter</l><l>1</l></block></script></block><block s="doSetVar"><l>out</l><block s="reportVariadicSum"><list><block var="number"/><block var="counter"/></list></block></block><block s="doReport"><block var="out"/></block></script></block></script></block-definition><block-definition s="co-prime generator %&apos;max&apos; from %&apos;num&apos;" type="reporter" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block s="reportNewList"><list><l>2</l></list></block></block><block s="doUntil"><block s="reportVariadicGreaterThan"><list><block s="reportListItem"><l><option>last</option></l><block var="a"/></block><block var="max"/></list></block><script><block s="doAddToList"><custom-block s="next co-prime to %n from %n"><block s="reportListItem"><l><option>last</option></l><block var="a"/></block><block var="num"/></custom-block><block var="a"/></block><block s="bubble"><block s="reportJoinWords"><list><l>Generating co-primes… </l><block s="reportListItem"><l><option>last</option></l><block var="a"/></block><l>/</l><block var="max"/></list></block></block></script></block><block s="doDeleteFromList"><l><option>last</option></l><block var="a"/></block><block s="doReport"><block var="a"/></block></script></block></script></block-definition><block-definition s="max unicode values" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><l>1114111</l></block></script></block-definition><block-definition s="public key $nl %&apos;n&apos; $nl %&apos;e&apos;" type="reporter" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="n"/><block var="e"/></list></block></block></script></block-definition><block-definition s="private key $nl %&apos;n&apos; $nl %&apos;e&apos;" type="reporter" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%n"></input><input type="%n"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="n"/><block var="e"/></list></block></block></script></block-definition><block-definition s="generate RSA key $nl p %&apos;p value&apos; $nl q %&apos;q value&apos; $nl co-prime %&apos;cp&apos;" type="reporter" category="Tools"><comment x="0" y="0" w="90" collapsed="false">Generate a predetermined RSA public and private key.</comment><header></header><code></code><translations></translations><inputs><input type="%n">11</input><input type="%n">461</input><input type="%n">167</input></inputs><script><custom-block s="USE BIGNUMS %b"><l><bool>true</bool></l></custom-block><block s="doWarp"><script><block s="doIf"><block s="reportVariadicOr"><list><block s="reportVariadicLessThanOrEquals"><list><block var="p value"/><l>0</l></list></block><block s="reportVariadicLessThanOrEquals"><list><block var="q value"/><l>0</l></list></block><block s="reportVariadicLessThanOrEquals"><list><block var="cp"/><l>0</l></list></block></list></block><script><custom-block s="error %txt"><l>Values cannot be less than or equal to 0</l></custom-block></script><list></list></block><block s="doDeclareVariables"><list><l>p</l><l>q</l><l>n</l><l>carmichael</l><l>coprime</l><l>mod inv</l></list></block><block s="doSetVar"><l>p</l><custom-block s="if %b %s else error %s"><custom-block s="is prime? %n"><block var="p value"/></custom-block><block var="p value"/><l>p value must be prime.</l></custom-block></block><block s="doSetVar"><l>q</l><custom-block s="if %b %s else error %s"><custom-block s="is prime? %n"><block var="q value"/></custom-block><block var="q value"/><l>q value must be prime.</l></custom-block></block><block s="doSetVar"><l>n</l><block s="reportVariadicProduct"><list><block var="p"/><block var="q"/></list></block></block><block s="doSetVar"><l>carmichael</l><custom-block s="λ ( %n , %n )"><block var="p"/><block var="q"/></custom-block></block><block s="doSetVar"><l>coprime</l><custom-block s="if %b %s else error %s"><custom-block s="is %n and %n co-prime?"><block var="cp"/><block var="carmichael"/></custom-block><block var="cp"/><l>Not a co-prime</l></custom-block></block><block s="doSetVar"><l>mod inv</l><custom-block s="modular inverse of %n and %n"><block var="coprime"/><block var="carmichael"/></custom-block></block><block s="doSayFor"><l>Key generation completed</l><l>2</l></block><block s="doReport"><block s="reportNewList"><list><block s="reportCONS"><l>public</l><custom-block s="public key %br %n %br %n"><block var="n"/><block var="coprime"/></custom-block></block><block s="reportCONS"><l>private</l><custom-block s="private key %br %n %br %n"><block var="n"/><block var="mod inv"/></custom-block></block></list></block></block></script></block></script></block-definition><block-definition s="if %&apos;bool&apos; %&apos;run&apos; else error %&apos;msg&apos;" type="reporter" category="control"><header></header><code></code><translations></translations><inputs><input type="%b"></input><input type="%s"></input><input type="%s"></input></inputs><script><block s="doIfElse"><block var="bool"/><script><block s="doReport"><block var="run"/></block></script><script><custom-block s="error %txt"><block var="msg"/></custom-block></script></block></script></block-definition><block-definition s="%&apos;text&apos; is normal text ?" type="predicate" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportVariadicAnd"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportVariadicLessThanOrEquals"><list><block var="value"/><l>126</l></list></block></autolambda><list><l>value</l></list></block><block s="reportUnicode"><block var="text"/></block></block></block></block></script></block-definition><block-definition s="attempt bruteforce private key $nl compute batch size: %&apos;batch&apos; $nl public key: %&apos;public key&apos; $nl encrypted text: %&apos;etext&apos;" type="reporter" category="Tools"><comment x="0" y="0" w="90" collapsed="false">Private key bruteforce attack</comment><header></header><code></code><translations></translations><inputs><input type="%n">25</input><input type="%l"></input><input type="%txt"></input></inputs><script><block s="doDeclareVariables"><list><l>a</l><l>counter</l><l>c</l><l>d</l></list></block><block s="doSetVar"><l>a</l><l>1</l></block><block s="doSetVar"><l>counter</l><block var="batch"/></block><block s="doSetVar"><l>c</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>d</l><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportUnicodeAsLetter"><l>32</l></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><l>100</l></block></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list></list></block></autolambda><list></list></block></block></block><block s="doIf"><block s="reportVariadicLessThan"><list><block var="batch"/><l>1</l></list></block><script><block s="doReport"><l></l></block></script><list></list></block><block s="doUntil"><block s="reportNot"><block s="reportListIsEmpty"><block s="reportKeep"><block s="reifyPredicate"><autolambda><block s="reportVariadicNotEquals"><list><l></l><custom-block s="nothing"></custom-block></list></block></autolambda><list></list></block><block s="reportNewList"><list><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><custom-block s="%s is normal text ?"><l></l></custom-block></autolambda><list></list></block><block var="c"/></block></list></block></block></block></block><script><block s="doWarp"><script><block s="doSetVar"><l>c</l><block s="reportMap"><block s="reifyReporter"><script><block s="doDeclareVariables"><list><l>k</l></list></block><block s="doSetVar"><l>k</l><custom-block s="decrypt %txt with private key %l"><block var="etext"/><block var="value"/></custom-block></block><block s="doTellTo"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyScript"><script><block s="bubble"><block s="reportJoinWords"><list><block s="reportVariadicSum"><list><block var="a"/><block var="index"/></list></block><block var="d"/><custom-block s="new line"></custom-block><block var="k"/></list></block></block></script><list></list></block><list></list></block><block s="doReport"><block var="k"/></block></script><list><l>value</l><l>index</l></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="private key %br %n %br %n"><block s="reportListItem"><l>1</l><block var="public key"/></block><block var="value"/></custom-block></autolambda><list><l>value</l></list></block><block s="reportNumbers"><block var="a"/><block s="reportDifference"><block s="reportVariadicSum"><list><block var="a"/><block var="counter"/></list></block><l>1</l></block></block></block></block></block><block s="doChangeVar"><l>a</l><block var="counter"/></block></script></block></script></block><block s="doTellTo"><block s="reportGet"><l><option>stage</option></l></block><block s="reifyScript"><script><block s="bubble"><l></l></block></script><list></list></block><list></list></block><block s="doReport"><custom-block s="private key %br %n %br %n"><block s="reportListItem"><l>1</l><block var="public key"/></block><block s="reportDifference"><block s="reportVariadicSum"><list><block s="reportDifference"><block var="a"/><l>1</l></block><block s="reportListIndex"><block s="reportFindFirst"><block s="reifyPredicate"><autolambda><custom-block s="%s is normal text ?"><l></l></custom-block></autolambda><list></list></block><block var="c"/></block><block var="c"/></block></list></block><block var="counter"/></block></custom-block></block></script></block-definition><block-definition s="check if keys are valid $nl public key: %&apos;pubkey&apos; $nl private key: %&apos;privkey&apos;" type="reporter" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><l>Hello, world!</l></block><block s="doReport"><block s="reportVariadicEquals"><list><block var="a"/><custom-block s="decrypt %txt with private key %l"><custom-block s="encrypt text %txt with public key %l"><block var="a"/><block var="pubkey"/></custom-block><block var="privkey"/></custom-block></list></block></block></script></block></script></block-definition><block-definition s="valid key bruteforce $nl start: %&apos;start&apos; $nl batch size: %&apos;size&apos; $nl public key: %&apos;pubkey&apos;" type="reporter" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%n">1</input><input type="%n">1</input><input type="%l"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>a</l><l>b</l></list></block><block s="doSetVar"><l>a</l><block var="start"/></block><block s="doSetVar"><l>b</l><block s="reportNewList"><list></list></block></block><block s="doUntil"><block s="reportVariadicOr"><block var="b"/></block><script><block s="doSetVar"><l>b</l><block s="reportNewList"><list></list></block></block><block s="bubble"><block s="reportJoinWords"><list><block s="reportDifference"><block var="a"/><block var="size"/></block><l> - </l><block var="a"/><l>: </l><block s="reportVariadicOr"><block var="b"/></block></list></block></block><block s="doForEach"><l>item</l><block s="reportNumbers"><block var="a"/><block s="reportDifference"><block s="reportVariadicSum"><list><block var="a"/><block var="size"/></list></block><l>1</l></block></block><script><block s="doAddToList"><custom-block s="check if keys are valid %br public key: %l %br private key: %l"><block var="pubkey"/><custom-block s="private key %br %n %br %n"><block s="reportListItem"><l>1</l><block var="pubkey"/></block><block var="item"/></custom-block></custom-block><block var="b"/></block></script></block><block s="doChangeVar"><l>a</l><block var="size"/></block></script></block><block s="doReport"><custom-block s="private key %br %n %br %n"><block s="reportListItem"><l>1</l><block var="pubkey"/></block><block s="reportDifference"><block s="reportDifference"><block s="reportVariadicSum"><list><block var="a"/><block s="reportListIndex"><block s="reportBoolean"><l><bool>true</bool></l></block><block var="b"/></block></list></block><block var="size"/></block><l>1</l></block></custom-block></block></script></block></script><scripts><script x="217" y="140.0000000000001"><block s="bubble"><block s="reportJoinWords"><list><block var="item"/><l>: </l><block s="reportListItem"><l><option>last</option></l><block var="b"/></block></list></block></block></script></scripts></block-definition><block-definition s="valid key pairs $nl %&apos;public&apos; $nl %&apos;private&apos;" type="reporter" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%l"></input><input type="%l"></input></inputs><script><block s="doReport"><block s="reportNewList"><list><block var="public"/><block var="private"/></list></block></block></script></block-definition><block-definition s="$flash cascade %&apos;num&apos; times %&apos;function&apos; %&apos;init&apos;" type="reporter" category="control"><comment x="0" y="0" w="138" collapsed="false">Call f(f(f(...(f(x))))) n times where the three input slots are n, f, and x from left to right.  The # variable can be used inside f to represent how many times f has been called.</comment><header></header><code></code><translations>pt:o resultado de _ invocações em cascata de _ com argumento inicial _ _&#xD;ca:en cascada _ vegades _ _ _&#xD;</translations><inputs><input type="%n"></input><input type="%repRing"></input><input type="%s"></input></inputs><script><block s="doWarp"><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block var="init"/></block><block s="doRepeat"><block var="num"/><script><block s="doSetVar"><l>result</l><block s="evaluate"><block var="function"/><list><block var="result"/></list></block></block></script></block><block s="doReport"><block var="result"/></block></script></block></script></block-definition><block-definition s="new line" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs></inputs><script><block s="doReport"><block s="reportUnicodeAsLetter"><l>10</l></block></block></script></block-definition><block-definition s="bin %&apos;bin&apos; to hex" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><custom-block s="dec %n to hex"><custom-block s="decimal to binary %n"><block var="bin"/></custom-block></custom-block></block></script></block-definition><block-definition s="decimal to binary %&apos;n&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="n"/><l>0</l></list></block><l>0</l><block s="reportJoinWords"><list><custom-block s="decimal to binary %n"><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="n"/><l>2</l></block></block></custom-block><block s="reportModulus"><block var="n"/><l>2</l></block></list></block></block></block></script></block-definition><block-definition s="dec %&apos;dec&apos; to hex" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n">16</input></inputs><script><block s="doReport"><block s="reportJoinWords"><block s="reportListAttribute"><l><option>flatten</option></l><block s="reportMap"><block s="reifyReporter"><script><block s="doDeclareVariables"><list><l>quotient</l><l>c</l></list></block><block s="doSetVar"><l>quotient</l><block var="decimal"/></block><block s="doSetVar"><l>c</l><block s="reportNewList"><list></list></block></block><block s="doUntil"><block s="reportVariadicEquals"><list><block var="quotient"/><l>0</l></list></block><script><block s="doAddToList"><block s="reportModulus"><block var="quotient"/><l>16</l></block><block var="c"/></block><block s="doSetVar"><l>quotient</l><block s="reportMonadic"><l><option>floor</option></l><block s="reportQuotient"><block var="quotient"/><l>16</l></block></block></block></script></block><block s="doSetVar"><l>c</l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="value"/><l>10</l></list></block><l>A</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="value"/><l>11</l></list></block><l>B</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="value"/><l>12</l></list></block><l>C</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="value"/><l>13</l></list></block><l>D</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="value"/><l>14</l></list></block><l>E</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="value"/><l>15</l></list></block><l>F</l><block var="value"/></block></block></block></block></block></block></autolambda><list><l>value</l></list></block><block var="c"/></block></block><block s="doReport"><block var="c"/></block></script><list><l>decimal</l></list></block><block s="reportNewList"><list><block var="dec"/></list></block></block></block></block></block></script><scripts><script x="541.5" y="169.4999999999999"><block s="reportModulus"><l>19</l><l>16</l></block></script></scripts></block-definition><block-definition s="binary add %&apos;1&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%mult%n" separator="+"></input></inputs><script><block s="doReport"><custom-block s="decimal %n to binary"><block s="reportVariadicSum"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="decimal to binary %n"><l></l></custom-block></autolambda><list></list></block><block var="1"/></block></block></custom-block></block></script></block-definition><block-definition s="decimal %&apos;num&apos; to binary" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportJoinWords"><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportListContainsItem"><block s="reportListAttribute"><l><option>reverse</option></l><custom-block s="binary digits in decimal number %n"><block var="num"/></custom-block></block><l></l></block><l>1</l><l>0</l></block></autolambda><list></list></block><block s="reportNumbers"><l>1</l><custom-block s="car %l"><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportListAttribute"><l><option>reverse</option></l><custom-block s="binary digits in decimal number %n"><block var="num"/></custom-block></block></block></custom-block></block></block></block></block></block></script></block-definition><block-definition s="binary digits in decimal number %&apos;num&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doSetVar"><l>num</l><block s="reportMonadic"><l><option>abs</option></l><block var="num"/></block></block><custom-block s="(define %upvar %s )"><l>digits</l><custom-block s="cdr %l"><l/></custom-block></custom-block><block s="doWarp"><script><block s="doUntil"><block s="reportVariadicEquals"><list><block var="num"/><l>0</l></list></block><script><block s="doAddToList"><custom-block s="largest power of 2 that fits in %n"><block var="num"/></custom-block><block var="digits"/></block><block s="doChangeVar"><l>num</l><block s="reportDifference"><l></l><block s="reportPower"><l>2</l><custom-block s="largest power of 2 that fits in %n"><block var="num"/></custom-block></block></block></block></script></block></script></block><block s="doReport"><block s="reportVariadicSum"><list><block var="digits"/><l>1</l></list></block></block></script></block-definition><block-definition s="cdr %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportCDR"><block var="list"/></block></block></script></block-definition><block-definition s="largest power of 2 that fits in %&apos;num&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doWarp"><script><custom-block s="(define %upvar %s )"><l>power</l><l>0</l></custom-block><block s="doUntil"><block s="reportVariadicGreaterThan"><list><block s="reportPower"><l>2</l><block var="power"/></block><block var="num"/></list></block><script><block s="doChangeVar"><l>power</l><l>1</l></block></script></block><block s="doChangeVar"><l>power</l><l>-1</l></block><block s="doReport"><block var="power"/></block></script></block></script></block-definition><block-definition s="(define %&apos;var&apos; %&apos;val&apos; )" type="command" category="other"><header></header><code></code><translations></translations><inputs><input type="%upvar"></input><input type="%s"></input></inputs><script><block s="doSetVar"><l>var</l><block var="val"/></block></script></block-definition><block-definition s="car %&apos;list&apos;" type="reporter" category="lists"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportListItem"><l>1</l><block var="list"/></block></block></script></block-definition><block-definition s="hex add %&apos;1&apos;" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%mult%s" separator="+"></input></inputs><script><block s="doReport"><custom-block s="dec %n to hex"><block s="reportVariadicSum"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="hex %s to dec"><l></l></custom-block></autolambda><list></list></block><block var="1"/></block></block></custom-block></block></script></block-definition><block-definition s="hex %&apos;hex&apos; to dec" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><block s="reportVariadicSum"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportVariadicProduct"><list><block var="value"/><block s="reportPower"><l>16</l><block s="reportDifference"><block var="index"/><l>1</l></block></block></list></block></autolambda><list><l>value</l><l>index</l></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="value"/><l>A</l></list></block><l>10</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="value"/><l>B</l></list></block><l>11</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="value"/><l>C</l></list></block><l>12</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="value"/><l>D</l></list></block><l>13</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="value"/><l>E</l></list></block><l>14</l><block s="reportIfElse"><block s="reportVariadicEquals"><list><block var="value"/><l>F</l></list></block><l>15</l><block var="value"/></block></block></block></block></block></block></autolambda><list><l>value</l></list></block><block s="reportListAttribute"><l><option>reverse</option></l><block s="reportTextSplit"><block var="hex"/><l><option>letter</option></l></block></block></block></block></block></block></script></block-definition><block-definition s="hex %&apos;hex&apos; to bin" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%s"></input></inputs><script><block s="doReport"><custom-block s="decimal to binary %n"><custom-block s="hex %s to dec"><block var="hex"/></custom-block></custom-block></block></script></block-definition><block-definition s="binary %&apos;num&apos; to decimal" type="reporter" category="operators"><header></header><code></code><translations></translations><inputs><input type="%n"></input></inputs><script><block s="doReport"><block s="reportVariadicSum"><list><block s="reportJoinWords"><list><l>0B</l><block var="num"/></list></block><l></l></list></block></block></script></block-definition><block-definition s="hash %&apos;text&apos;" type="reporter" category="Fun"><comment x="0" y="0" w="90" collapsed="false">Hashes a text into hexadecimal by using a predetermined public key.</comment><header></header><code></code><translations></translations><inputs><input type="%txt">hash test</input></inputs><script><block s="doWarp"><script><block s="doReport"><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="dec %n to hex"><block var="value"/></custom-block></autolambda><list><l>value</l></list></block><block s="reportTextSplit"><custom-block s="encrypt text %txt with public key %l"><block var="text"/><custom-block s="public key %br %n %br %n"><l>66641</l><l>1769</l></custom-block></custom-block><l> </l></block></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><block var="#1"/><l> </l><block var="#2"/></list></block></autolambda><list><l>#1</l><l>#2</l></list></block></block></block></script></block></script><scripts><script x="244.35771484374993" y="40.766666666666765"><block s="reportNewList"><list><l>66641</l><l>1055</l></list></block></script></scripts></block-definition><block-definition s="cascade %&apos;num&apos; times %&apos;function&apos; %&apos;init&apos;" type="reporter" category="control"><comment x="0" y="0" w="138" collapsed="false">Call f(f(f(...(f(x))))) n times where the three input slots are n, f, and x from left to right.  The # variable can be used inside f to represent how many times f has been called.</comment><header></header><code></code><translations>pt:o resultado de _ invocações em cascata de _ com argumento inicial _ _&#xD;ca:en cascada _ vegades _ _ _&#xD;</translations><inputs><input type="%n"></input><input type="%repRing"></input><input type="%s"></input></inputs><script><block s="doDeclareVariables"><list><l>result</l></list></block><block s="doSetVar"><l>result</l><block var="init"/></block><block s="doRepeat"><block var="num"/><script><block s="doSetVar"><l>result</l><block s="evaluate"><block var="function"/><list><block var="result"/></list></block></block></script></block><block s="doReport"><block var="result"/></block></script></block-definition><block-definition s="slow encrypt text %&apos;txt&apos; with public key %&apos;key&apos;" type="reporter" category="Tools"><comment x="0" y="0" w="124" collapsed="false">Encrypts a text using the RSA key then encodes into numbers.&#xD;&#xD;18x slower.</comment><header></header><code></code><translations></translations><inputs><input type="%txt">Hello, world!</input><input type="%l"></input></inputs><script><custom-block s="USE BIGNUMS %b"><l><bool>false</bool></l></custom-block><block s="doReport"><block s="reportIfElse"><block s="reportVariadicNotEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="txt"/></block><l>0</l></list></block><block s="reportCombine"><custom-block s="slow make equal length %l"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="cascade %n times %repRing %s"><block s="reportListItem"><l>2</l><block var="key"/></block><block s="reifyReporter"><autolambda><block s="reportModulus"><block s="reportVariadicProduct"><list><block var="#1"/><block var="value"/></list></block><block s="reportListItem"><l>1</l><block var="key"/></block></block></autolambda><list><l>#1</l></list></block><l>1</l></custom-block></autolambda><list><l>value</l></list></block><block s="reportIfElse"><block s="reportIsA"><block s="reportUnicode"><block var="txt"/></block><l><option>list</option></l></block><block s="reportUnicode"><block var="txt"/></block><block s="reportNewList"><list><block s="reportUnicode"><block var="txt"/></block></list></block></block></block></custom-block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list><block var="#1"/><l> </l><block var="#2"/></list></block></autolambda><list><l>#1</l><l>#2</l></list></block></block><l></l></block></block></script></block-definition><block-definition s="slow make equal length %&apos;list&apos;" type="reporter" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%l"></input></inputs><script><block s="doReport"><block s="reportMap"><block s="reifyReporter"><script><block s="doDeclareVariables"><list><l>a</l></list></block><block s="doSetVar"><l>a</l><block var="value"/></block><block s="doIfElse"><block s="reportVariadicLessThan"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="value"/></block><block s="reportTextAttribute"><l><option>length</option></l><block s="reportVariadicMax"><block var="list"/></block></block></list></block><script><block s="doUntil"><block s="reportVariadicEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="a"/></block><block s="reportTextAttribute"><l><option>length</option></l><block s="reportVariadicMax"><block var="list"/></block></block></list></block><script><block s="doSetVar"><l>a</l><block s="reportCombine"><block s="reportCONS"><l>0</l><block s="reportNewList"><list><block var="a"/></list></block></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list></list></block></autolambda><list></list></block></block></block></script></block><block s="doReport"><block var="a"/></block></script><script><block s="doReport"><block var="value"/></block></script></block></script><list><l>value</l><l>index</l><l>list</l></list></block><block var="list"/></block></block></script></block-definition><block-definition s="slow decrypt %&apos;txt&apos; with private key %&apos;key&apos;" type="reporter" category="Tools"><comment x="0" y="0" w="90" collapsed="false">Decrypt an encrypted string of numbers into a text using a RSA private key.</comment><header></header><code></code><translations></translations><inputs><input type="%txt"></input><input type="%l"></input></inputs><script><custom-block s="USE BIGNUMS %b"><l><bool>false</bool></l></custom-block><block s="doReport"><block s="reportIfElse"><block s="reportVariadicNotEquals"><list><block s="reportTextAttribute"><l><option>length</option></l><block var="txt"/></block><l>0</l></list></block><block s="reportCombine"><block s="reportMap"><block s="reifyReporter"><autolambda><block s="reportUnicodeAsLetter"><block var="value"/></block></autolambda><list><l>value</l></list></block><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="cascade %n times %repRing %s"><block s="reportListItem"><l>2</l><block var="key"/></block><block s="reifyReporter"><autolambda><block s="reportModulus"><block s="reportVariadicProduct"><list><block var="#1"/><block var="value"/></list></block><block s="reportListItem"><l>1</l><block var="key"/></block></block></autolambda><list><l>#1</l></list></block><l>1</l></custom-block></autolambda><list><l>value</l></list></block><block s="reportTextSplit"><block var="txt"/><l><option>word</option></l></block></block></block><block s="reifyReporter"><autolambda><block s="reportJoinWords"><list></list></block></autolambda><list></list></block></block><l></l></block></block></script></block-definition><block-definition s="bruteforce results $nl amount: %&apos;amt&apos; $nl encrypted text: %&apos;et&apos; $nl public key: %&apos;pk&apos;" type="reporter" category="Tools"><header></header><code></code><translations></translations><inputs><input type="%n">100</input><input type="%txt"></input><input type="%l"></input></inputs><script><block s="doIf"><block s="reportNot"><block s="reportListIsEmpty"><block var="pk"/></block></block><script><block s="doDeclareVariables"><list><l>a</l><l>b</l></list></block><block s="doSetVar"><l>a</l><block s="reportListItem"><l>1</l><block var="pk"/></block></block><block s="doSetVar"><l>b</l><block s="reportNewList"><list></list></block></block><block s="doAddToList"><block s="reportMap"><block s="reifyReporter"><autolambda><custom-block s="decrypt %txt with private key %l"><block var="et"/><block s="reportNewList"><list><block var="a"/><block var="value"/></list></block></custom-block></autolambda><list><l>value</l></list></block><block s="reportNumbers"><l>1</l><block var="amt"/></block></block><block var="b"/></block><block s="doSetVar"><l>b</l><block s="reportListAttribute"><l><option>flatten</option></l><block var="b"/></block></block><block s="doReport"><block var="b"/></block></script><list></list></block><block s="doReport"><l></l></block></script></block-definition><block-definition s="ignore %&apos;x&apos;" type="command" category="control"><comment x="0" y="0" w="206.66666666666666" collapsed="false">This block does nothing.&#xD;Use it when you are calling a reporter&#xD;for its side effect and don&apos;t care about&#xD;its return value.</comment><header></header><code></code><translations>de:ignoriere _&#xD;ca:ignora _&#xD;es:ignorar _&#xD;fr:ignore _&#xD;pt:ignora _&#xD;</translations><inputs><input type="%s"></input></inputs></block-definition><block-definition s="for %&apos;i&apos; = %&apos;start&apos; step %&apos;step&apos; to %&apos;end&apos; %&apos;action&apos;" type="command" category="control"><comment x="0" y="0" w="247.33333333333334" collapsed="false">The primitive FOR block uses an implicit step of ±1 depending on which of the starting and ending values is larger.  This version allows you to provide an explicit step value.  If the sign of the step input is incompatible with the ordering of the starting and ending values, the script will not be run at all.</comment><header></header><code></code><translations>pt:para _ de _ com passo _ a _ _ $loop-0.7&#xD;ca:per _ = _ incrementant _ fins _ _&#xD;</translations><inputs><input type="%upvar"></input><input type="%n">1</input><input type="%n">1</input><input type="%n">10</input><input type="%cs"></input></inputs><script><block s="doDeclareVariables"><list><l>test</l></list></block><block s="doSetVar"><l>i</l><block var="start"/></block><block s="doIfElse"><block s="reportVariadicLessThan"><list><block var="step"/><l>0</l></list></block><script><block s="doSetVar"><l>test</l><block s="reifyPredicate"><autolambda><block s="reportVariadicLessThan"><list><block var="i"/><block var="end"/></list></block></autolambda><list></list></block></block></script><script><block s="doSetVar"><l>test</l><block s="reifyPredicate"><autolambda><block s="reportVariadicGreaterThan"><list><block var="i"/><block var="end"/></list></block></autolambda><list></list></block></block></script></block><block s="doUntil"><block s="evaluate"><block var="test"/><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></blocks><primitives></primitives><stage name="Stage" width="480" height="360" costume="1" color="255,255,255,1" tempo="60" threadsafe="false" penlog="false" volume="100" pan="0" lines="round" ternary="false" hyperops="true" codify="false" inheritance="true" sublistIDs="false" id="3307"><pentrails>data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADoVJREFUeF7t1cEJAAAIxDDdf2m3sJ+4wEEQuuMIECBAgACBd4F9XzRIgAABAgQIjAB7AgIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECAiwHyBAgAABAoGAAAfoJgkQIECAgAD7AQIECBAgEAgIcIBukgABAgQICLAfIECAAAECgYAAB+gmCRAgQICAAPsBAgQIECAQCAhwgG6SAAECBAgIsB8gQIAAAQKBgAAH6CYJECBAgIAA+wECBAgQIBAICHCAbpIAAQIECByxcQFpoRMBzwAAAABJRU5ErkJggg==</pentrails><costumes><list id="3308"><item><ref mediaID="Stage_cst_Untitled"></ref></item></list></costumes><sounds><list struct="atomic" id="3309"></list></sounds><variables></variables><blocks></blocks><scripts></scripts><sprites select="1"><sprite name="Sprite" idx="1" x="58.000000000002046" y="0.9999999999998863" heading="90" scale="1" volume="100" pan="0" rotation="1" draggable="true" costume="0" color="80,80,80,1" pen="tip" id="3314"><costumes><list struct="atomic" id="3315"></list></costumes><sounds><list struct="atomic" id="3316"></list></sounds><blocks></blocks><variables></variables><scripts><script x="10" y="10"><custom-block s="duration %cs offset %n"><script><block s="doSetVar"><l>word</l><custom-block s="encrypt text %txt with public key %l"><l>Don&apos;t lose your keys!!</l><custom-block s="public key %br %n %br %n"><l>12885281</l><l>959459</l><comment w="90" collapsed="false">est: 4m 30s</comment></custom-block></custom-block></block></script><l>0</l></custom-block></script><script x="10" y="119.66666666666652"><custom-block s="duration %cs offset %n"><script><custom-block s="ignore %s"><custom-block s="decrypt %txt with private key %l"><block var="word"/><custom-block s="private key %br %n %br %n"><l>12885281</l><l>315839</l></custom-block></custom-block><comment w="90" collapsed="false">est: 1m 22s</comment></custom-block></script><l>0</l></custom-block></script><script x="10" y="229.3333333333334"><custom-block s="valid key pairs %br %l %br %l"><custom-block s="public key %br %n %br %n"><l>12885281</l><l>959459</l><comment w="90" collapsed="false">Key pairs took 13 hours to generate.</comment></custom-block><custom-block s="private key %br %n %br %n"><l>12885281</l><l>315839</l></custom-block></custom-block></script><script x="10" y="344.83333333333337"><custom-block s="ignore %s"><custom-block s="generate RSA key from %n to %n"><l>500</l><l>550</l></custom-block></custom-block></script><script x="10" y="387.83333333333337"><block s="reportListAttribute"><l><option>distribution</option></l><block s="reportTextSplit"><l>2017 2371 0928 0928 0616 0524 0112 0509 0616 0029 0928 2675 2873</l><l><option>word</option></l></block><comment w="464" collapsed="true">This RSA encryption algorithm does not contain any random elements so it is susceptible to pattern attacks.&#xD;&#xD;For example, given this encrypted string of numbers:&#xD;&#xD;2017 2371 0928 0928 0616 0524 0112 0509 0616 0029 0928 2675 2873&#xD;&#xD;we can tell that 0928 appears 3 times and 0616 appears 2 times.&#xD;&#xD;Using this information, someone could crack this encrypted text though maybe not quickly.</comment></block></script><script x="10" y="439.83333333333337"><custom-block s="duration %cs offset %n"><script><custom-block s="ignore %s"><custom-block s="attempt bruteforce private key %br compute batch size: %n %br public key: %l %br encrypted text: %txt"><l>100</l><block var="public"/><block var="word"/><comment w="90" collapsed="false">If you forgot your key, you can try bruteforcing it.&#xD;But if it’s too big, then it won’t work.</comment></custom-block></custom-block></script><l>0</l></custom-block></script><script x="10" y="564.6666666666664"><custom-block s="encrypt text %txt with public key %l"><l>Hello, world!</l><custom-block s="public key %br %n %br %n"><l>3035</l><l>1073</l></custom-block></custom-block></script><script x="10" y="626.4999999999999"><custom-block s="decrypt %txt with private key %l"><l>2017 2371 0928 0928 0616 0524 0112 0509 0616 0029 0928 2675 2873</l><custom-block s="private key %br %n %br %n"><l>3035</l><l>497</l></custom-block><comment w="173" collapsed="false">Don&apos;t lose your public &amp; private keys!!</comment></custom-block></script><script x="10" y="702.3333333333331"><custom-block s="duration %cs offset %n"><script><custom-block s="ignore %s"><custom-block s="valid key bruteforce %br start: %n %br batch size: %n %br public key: %l"><l>1</l><l>10</l><block var="public"/><comment w="165" collapsed="false">Most computationally expensive bruteforce algorithm</comment></custom-block></custom-block></script><l>0</l></custom-block></script><script x="10" y="822.8333333333331"><custom-block s="valid key pairs %br %l %br %l"><custom-block s="public key %br %n %br %n"><l>292547</l><l>32807</l></custom-block><custom-block s="private key %br %n %br %n"><l>292547</l><l>13163</l></custom-block></custom-block></script><script x="412.0000000000001" y="713.0000000000001"><block s="doSetVar"><l>test</l><l></l></block></script><script x="578.9999999999998" y="20.83333333333337"><block s="doDeclareVariables"><list><l>a</l><l>b</l></list></block><block s="doSetVar"><l>a</l><block s="reportNewList"><list></list></block></block><block s="doSetVar"><l>b</l><custom-block s="encrypt text %txt with public key %l"><l>Hello, world!</l><block var="public"/></custom-block></block><block s="doAddToList"><custom-block s="duration %cs offset %n"><script><custom-block s="ignore %s"><custom-block s="slow encrypt text %txt with public key %l"><l>Hello, world!</l><block var="public"/></custom-block></custom-block></script><l>0</l></custom-block><block var="a"/></block><block s="doAddToList"><custom-block s="duration %cs offset %n"><script><custom-block s="ignore %s"><custom-block s="slow decrypt %txt with private key %l"><block var="b"/><block var="private"/></custom-block></custom-block></script><l>0</l></custom-block><block var="a"/></block><block s="doReport"><block var="a"/></block></script><script x="566.2939453124998" y="528.9999999999999"><custom-block s="duration %cs offset %n"><script><custom-block s="ignore %s"><custom-block s="decrypt %txt with private key %l"><custom-block s="encrypt text %txt with public key %l"><l>Hello, world!</l><block var="public"/></custom-block><block var="private"/></custom-block><comment w="90" collapsed="false">0.232s</comment></custom-block></script><l>0</l></custom-block></script><script x="564.9999999999998" y="428.5000000000001"><custom-block s="duration %cs offset %n"><script><custom-block s="ignore %s"><custom-block s="slow decrypt %txt with private key %l"><custom-block s="slow encrypt text %txt with public key %l"><l>Hello, world!</l><block var="public"/></custom-block><block var="private"/></custom-block><comment w="90" collapsed="false">15.412s</comment></custom-block></script><l>0</l></custom-block></script><script x="548.2939453125" y="313"><custom-block s="slow encrypt text %txt with public key %l"><l>0c6Q7UORu6kc1f9X3RCg408UW16p4072XefP5270t6E91WT8nYTF8XK74Een1NAID2j1c08G6EmfP61iQ108En3hBx2v56E825d5q41RS4LT01y14Dx3s1VmLVU3g4926T801BUiA46an099101b346865q608q34657w34Zs0326207njfq49r27D4Oa4h08o2e0gtZC085k2d7sd6i7056759lSc8FS7503iDch15l2072RR2O00sL9954D661</l><block var="public"/></custom-block></script><script x="390.0000000000001" y="787.0000000000001"><custom-block s="bruteforce results %br amount: %n %br encrypted text: %txt %br public key: %l"><l>1000000</l><block var="word"/><custom-block s="public key %br %n %br %n"><l>12885281</l><l>959459</l></custom-block></custom-block></script></scripts></sprite><watcher var="public" style="normal" x="19.999999999997726" y="62.00000399999999" color="243,118,29" extX="80" extY="70.00000000000006"/><watcher var="private" style="normal" x="21.365053964142362" y="196.31550399243" color="243,118,29" extX="80" extY="70.00000000000009"/><watcher var="word" style="normal" x="10.184130361346433" y="32.80816844726826" color="243,118,29"/></sprites></stage><variables><variable name="word"><l>01664918 00557261 12783755 02400586 03538930 03456189 09570707 00557261 04626557 08631956 03456189 11150569 00557261 02545397 11364799 03456189 07949501 08631956 11150569 04626557 11622282 11622282</l></variable><variable name="public"><list struct="atomic" id="3490">122,17</list></variable><variable name="private"><list struct="atomic" id="3491">122,53</list></variable></variables></scene></scenes></project><media name="Encryption" app="Snap! 10, https://snap.berkeley.edu" version="2"><costume name="Untitled" center-x="240" center-y="180" image="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAeAAAAFoCAYAAACPNyggAAAAAXNSR0IArs4c6QAADotJREFUeF7t1cEJADAMxLBk/6Fb6BD1R1ngQAS8M3PGESBAgAABAl8FVoC/ehsjQIAAAQJPQIA9AgECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBATYDxAgQIAAgUBAgAN0kwQIECBAQID9AAECBAgQCAQEOEA3SYAAAQIEBNgPECBAgACBQECAA3STBAgQIEBAgP0AAQIECBAIBAQ4QDdJgAABAgQE2A8QIECAAIFAQIADdJMECBAgQECA/QABAgQIEAgEBDhAN0mAAAECBC5oYGgQUTbVPQAAAABJRU5ErkJggg==" mediaID="Stage_cst_Untitled"/></media></snapdata>