about summary refs log tree commit diff stats
path: root/html/011load.cc.html
diff options
context:
space:
mode:
Diffstat (limited to 'html/011load.cc.html')
-rw-r--r--html/011load.cc.html126
1 files changed, 60 insertions, 66 deletions
diff --git a/html/011load.cc.html b/html/011load.cc.html
index 205faacf..180cda8d 100644
--- a/html/011load.cc.html
+++ b/html/011load.cc.html
@@ -40,8 +40,8 @@ recipe main [
   <span class="Constant">1</span>:number<span class="Special"> &lt;- </span>copy <span class="Constant">23</span>
 ]
 <span class="traceContains">+parse: instruction: copy</span>
-<span class="traceContains">+parse:   ingredient: {&quot;23&quot;: &quot;literal&quot;}</span>
-<span class="traceContains">+parse:   product: {&quot;1&quot;: &quot;number&quot;}</span>
+<span class="traceContains">+parse:   ingredient: 23: &quot;literal&quot;</span>
+<span class="traceContains">+parse:   product: 1: &quot;number&quot;</span>
 
 <span class="Delimiter">:(code)</span>
 vector&lt;recipe_ordinal&gt; load<span class="Delimiter">(</span>string form<span class="Delimiter">)</span> <span class="Delimiter">{</span>
@@ -62,9 +62,9 @@ vector&lt;recipe_ordinal&gt; load<span class="Delimiter">(</span>istream&amp; in
       result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>slurp_recipe<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
     <span class="Delimiter">}</span>
     else if <span class="Delimiter">(</span>command == <span class="Constant">&quot;recipe!&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
-      Disable_redefine_warnings = <span class="Constant">true</span><span class="Delimiter">;</span>
+      Disable_redefine_checks = <span class="Constant">true</span><span class="Delimiter">;</span>
       result<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>slurp_recipe<span class="Delimiter">(</span>in<span class="Delimiter">));</span>
-      Disable_redefine_warnings = <span class="Constant">false</span><span class="Delimiter">;</span>
+      Disable_redefine_checks = <span class="Constant">false</span><span class="Delimiter">;</span>
     <span class="Delimiter">}</span>
     <span class="Comment">// End Command Handlers</span>
     else <span class="Delimiter">{</span>
@@ -77,22 +77,22 @@ vector&lt;recipe_ordinal&gt; load<span class="Delimiter">(</span>istream&amp; in
 long long int slurp_recipe<span class="Delimiter">(</span>istream&amp; in<span class="Delimiter">)</span> <span class="Delimiter">{</span>
   recipe result<span class="Delimiter">;</span>
   result<span class="Delimiter">.</span>name = next_word<span class="Delimiter">(</span>in<span class="Delimiter">);</span>
+  <span class="Comment">// End Load Recipe Name</span>
   skip_whitespace_but_not_newline<span class="Delimiter">(</span>in<span class="Delimiter">);</span>
-  <span class="Comment">// End recipe Refinements</span>
+  <span class="Comment">// End Recipe Refinements</span>
   if <span class="Delimiter">(</span>result<span class="Delimiter">.</span>name<span class="Delimiter">.</span>empty<span class="Delimiter">())</span>
     raise_error &lt;&lt; <span class="Constant">&quot;empty result.name</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
   trace<span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;--- defining &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; end<span class="Delimiter">();</span>
-  if <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> result<span class="Delimiter">.</span>name<span class="Delimiter">))</span> <span class="Delimiter">{</span>
+  if <span class="Delimiter">(</span>!contains_key<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> result<span class="Delimiter">.</span>name<span class="Delimiter">))</span>
     put<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> result<span class="Delimiter">.</span>name<span class="Delimiter">,</span> Next_recipe_ordinal++<span class="Delimiter">);</span>
-  <span class="Delimiter">}</span>
   if <span class="Delimiter">(</span>Recipe<span class="Delimiter">.</span>find<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> result<span class="Delimiter">.</span>name<span class="Delimiter">))</span> != Recipe<span class="Delimiter">.</span>end<span class="Delimiter">())</span> <span class="Delimiter">{</span>
     trace<span class="Delimiter">(</span><span class="Constant">9991</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;already exists&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
-    if <span class="Delimiter">(</span>warn_on_redefine<span class="Delimiter">(</span>result<span class="Delimiter">.</span>name<span class="Delimiter">))</span>
-      raise &lt;&lt; <span class="Constant">&quot;redefining recipe &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
+    if <span class="Delimiter">(</span>should_check_for_redefine<span class="Delimiter">(</span>result<span class="Delimiter">.</span>name<span class="Delimiter">))</span>
+      raise_error &lt;&lt; <span class="Constant">&quot;redefining recipe &quot;</span> &lt;&lt; result<span class="Delimiter">.</span>name &lt;&lt; <span class="Constant">&quot;</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
     Recipe<span class="Delimiter">.</span>erase<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> result<span class="Delimiter">.</span>name<span class="Delimiter">));</span>
   <span class="Delimiter">}</span>
   slurp_body<span class="Delimiter">(</span>in<span class="Delimiter">,</span> result<span class="Delimiter">);</span>
-  <span class="Comment">// End recipe Body(result)</span>
+  <span class="Comment">// End Recipe Body(result)</span>
   put<span class="Delimiter">(</span>Recipe<span class="Delimiter">,</span> get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> result<span class="Delimiter">.</span>name<span class="Delimiter">),</span> result<span class="Delimiter">);</span>
   <span class="Comment">// track added recipes because we may need to undo them in tests; see below</span>
   Recently_added_recipes<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>get<span class="Delimiter">(</span>Recipe_ordinal<span class="Delimiter">,</span> result<span class="Delimiter">.</span>name<span class="Delimiter">));</span>
@@ -108,9 +108,9 @@ void slurp_body<span class="Delimiter">(</span>istream&amp; in<span class="Delim
   instruction curr<span class="Delimiter">;</span>
   while <span class="Delimiter">(</span>next_instruction<span class="Delimiter">(</span>in<span class="Delimiter">,</span> &amp;curr<span class="Delimiter">))</span> <span class="Delimiter">{</span>
     <span class="Comment">// End Rewrite Instruction(curr, recipe result)</span>
-    trace<span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;load&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;after rewriting: &quot;</span> &lt;&lt; curr<span class="Delimiter">.</span>to_string<span class="Delimiter">()</span> &lt;&lt; end<span class="Delimiter">();</span>
-    if <span class="Delimiter">(</span>!curr<span class="Delimiter">.</span>is_clear<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-      curr<span class="Delimiter">.</span>original_string = curr<span class="Delimiter">.</span>to_string<span class="Delimiter">();</span>
+    trace<span class="Delimiter">(</span><span class="Constant">9992</span><span class="Delimiter">,</span> <span class="Constant">&quot;load&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;after rewriting: &quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>curr<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
+    if <span class="Delimiter">(</span>!curr<span class="Delimiter">.</span>is_empty<span class="Delimiter">())</span> <span class="Delimiter">{</span>
+      curr<span class="Delimiter">.</span>original_string = to_string<span class="Delimiter">(</span>curr<span class="Delimiter">);</span>
       result<span class="Delimiter">.</span>steps<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>curr<span class="Delimiter">);</span>
     <span class="Delimiter">}</span>
   <span class="Delimiter">}</span>
@@ -136,9 +136,8 @@ bool next_instruction<span class="Delimiter">(</span>istream&amp; in<span class=
     skip_whitespace_but_not_newline<span class="Delimiter">(</span>in<span class="Delimiter">);</span>
   <span class="Delimiter">}</span>
   skip_whitespace_and_comments<span class="Delimiter">(</span>in<span class="Delimiter">);</span>
-  if <span class="Delimiter">(</span>SIZE<span class="Delimiter">(</span>words<span class="Delimiter">)</span> == <span class="Constant">1</span> &amp;&amp; words<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> == <span class="Constant">&quot;]&quot;</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
+  if <span class="Delimiter">(</span>SIZE<span class="Delimiter">(</span>words<span class="Delimiter">)</span> == <span class="Constant">1</span> &amp;&amp; words<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> == <span class="Constant">&quot;]&quot;</span><span class="Delimiter">)</span>
     <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>  <span class="Comment">// end of recipe</span>
-  <span class="Delimiter">}</span>
 
   if <span class="Delimiter">(</span>SIZE<span class="Delimiter">(</span>words<span class="Delimiter">)</span> == <span class="Constant">1</span> &amp;&amp; !isalnum<span class="Delimiter">(</span>words<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">))</span> &amp;&amp; words<span class="Delimiter">.</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">).</span>at<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">)</span> != <span class="Constant">'$'</span><span class="Delimiter">)</span> <span class="Delimiter">{</span>
     curr<span class="Delimiter">-&gt;</span>is_label = <span class="Constant">true</span><span class="Delimiter">;</span>
@@ -153,9 +152,8 @@ bool next_instruction<span class="Delimiter">(</span>istream&amp; in<span class=
 
   vector&lt;string&gt;::iterator p = words<span class="Delimiter">.</span>begin<span class="Delimiter">();</span>
   if <span class="Delimiter">(</span>find<span class="Delimiter">(</span>words<span class="Delimiter">.</span>begin<span class="Delimiter">(),</span> words<span class="Delimiter">.</span>end<span class="Delimiter">(),</span> <span class="Constant">&quot;&lt;-&quot;</span><span class="Delimiter">)</span> != words<span class="Delimiter">.</span>end<span class="Delimiter">())</span> <span class="Delimiter">{</span>
-    for <span class="Delimiter">(;</span> *p != <span class="Constant">&quot;&lt;-&quot;</span><span class="Delimiter">;</span> ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+    for <span class="Delimiter">(;</span> *p != <span class="Constant">&quot;&lt;-&quot;</span><span class="Delimiter">;</span> ++p<span class="Delimiter">)</span>
       curr<span class="Delimiter">-&gt;</span>products<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>reagent<span class="Delimiter">(</span>*p<span class="Delimiter">));</span>
-    <span class="Delimiter">}</span>
     ++p<span class="Delimiter">;</span>  <span class="Comment">// skip &lt;-</span>
   <span class="Delimiter">}</span>
 
@@ -166,18 +164,15 @@ bool next_instruction<span class="Delimiter">(</span>istream&amp; in<span class=
   curr<span class="Delimiter">-&gt;</span>old_name = curr<span class="Delimiter">-&gt;</span>name = *p<span class="Delimiter">;</span>  p++<span class="Delimiter">;</span>
   <span class="Comment">// curr-&gt;operation will be set in a later layer</span>
 
-  for <span class="Delimiter">(;</span> p != words<span class="Delimiter">.</span>end<span class="Delimiter">();</span> ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+  for <span class="Delimiter">(;</span> p != words<span class="Delimiter">.</span>end<span class="Delimiter">();</span> ++p<span class="Delimiter">)</span>
     curr<span class="Delimiter">-&gt;</span>ingredients<span class="Delimiter">.</span>push_back<span class="Delimiter">(</span>reagent<span class="Delimiter">(</span>*p<span class="Delimiter">));</span>
-  <span class="Delimiter">}</span>
 
   trace<span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;instruction: &quot;</span> &lt;&lt; curr<span class="Delimiter">-&gt;</span>name &lt;&lt; end<span class="Delimiter">();</span>
   trace<span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;  number of ingredients: &quot;</span> &lt;&lt; SIZE<span class="Delimiter">(</span>curr<span class="Delimiter">-&gt;</span>ingredients<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
-  for <span class="Delimiter">(</span>vector&lt;reagent&gt;::iterator p = curr<span class="Delimiter">-&gt;</span>ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">();</span> p != curr<span class="Delimiter">-&gt;</span>ingredients<span class="Delimiter">.</span>end<span class="Delimiter">();</span> ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-    trace<span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;  ingredient: &quot;</span> &lt;&lt; p<span class="Delimiter">-&gt;</span>to_string<span class="Delimiter">()</span> &lt;&lt; end<span class="Delimiter">();</span>
-  <span class="Delimiter">}</span>
-  for <span class="Delimiter">(</span>vector&lt;reagent&gt;::iterator p = curr<span class="Delimiter">-&gt;</span>products<span class="Delimiter">.</span>begin<span class="Delimiter">();</span> p != curr<span class="Delimiter">-&gt;</span>products<span class="Delimiter">.</span>end<span class="Delimiter">();</span> ++p<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-    trace<span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;  product: &quot;</span> &lt;&lt; p<span class="Delimiter">-&gt;</span>to_string<span class="Delimiter">()</span> &lt;&lt; end<span class="Delimiter">();</span>
-  <span class="Delimiter">}</span>
+  for <span class="Delimiter">(</span>vector&lt;reagent&gt;::iterator p = curr<span class="Delimiter">-&gt;</span>ingredients<span class="Delimiter">.</span>begin<span class="Delimiter">();</span> p != curr<span class="Delimiter">-&gt;</span>ingredients<span class="Delimiter">.</span>end<span class="Delimiter">();</span> ++p<span class="Delimiter">)</span>
+    trace<span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;  ingredient: &quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>*p<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
+  for <span class="Delimiter">(</span>vector&lt;reagent&gt;::iterator p = curr<span class="Delimiter">-&gt;</span>products<span class="Delimiter">.</span>begin<span class="Delimiter">();</span> p != curr<span class="Delimiter">-&gt;</span>products<span class="Delimiter">.</span>end<span class="Delimiter">();</span> ++p<span class="Delimiter">)</span>
+    trace<span class="Delimiter">(</span><span class="Constant">9993</span><span class="Delimiter">,</span> <span class="Constant">&quot;parse&quot;</span><span class="Delimiter">)</span> &lt;&lt; <span class="Constant">&quot;  product: &quot;</span> &lt;&lt; to_string<span class="Delimiter">(</span>*p<span class="Delimiter">)</span> &lt;&lt; end<span class="Delimiter">();</span>
   if <span class="Delimiter">(</span>!has_data<span class="Delimiter">(</span>in<span class="Delimiter">))</span> <span class="Delimiter">{</span>
     raise_error &lt;&lt; <span class="Constant">&quot;9: unbalanced '[' for recipe</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span> &lt;&lt; end<span class="Delimiter">();</span>
     <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
@@ -245,14 +240,14 @@ void skip_comment<span class="Delimiter">(</span>istream&amp; in<span class="Del
 
 <span class="Comment">//: Warn if a recipe gets redefined, because large codebases can accidentally</span>
 <span class="Comment">//: step on their own toes. But there'll be many occasions later where</span>
-<span class="Comment">//: we'll want to disable the warnings.</span>
+<span class="Comment">//: we'll want to disable the errors.</span>
 <span class="Delimiter">:(before &quot;End Globals&quot;)</span>
-bool Disable_redefine_warnings = <span class="Constant">false</span><span class="Delimiter">;</span>
+bool Disable_redefine_checks = <span class="Constant">false</span><span class="Delimiter">;</span>
 <span class="Delimiter">:(before &quot;End Setup&quot;)</span>
-Disable_redefine_warnings = <span class="Constant">false</span><span class="Delimiter">;</span>
+Disable_redefine_checks = <span class="Constant">false</span><span class="Delimiter">;</span>
 <span class="Delimiter">:(code)</span>
-bool warn_on_redefine<span class="Delimiter">(</span>const string&amp; recipe_name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
-  if <span class="Delimiter">(</span>Disable_redefine_warnings<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
+bool should_check_for_redefine<span class="Delimiter">(</span>const string&amp; recipe_name<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+  if <span class="Delimiter">(</span>Disable_redefine_checks<span class="Delimiter">)</span> <span class="Identifier">return</span> <span class="Constant">false</span><span class="Delimiter">;</span>
   <span class="Identifier">return</span> <span class="Constant">true</span><span class="Delimiter">;</span>
 <span class="Delimiter">}</span>
 
@@ -261,9 +256,8 @@ bool warn_on_redefine<span class="Delimiter">(</span>const string&amp; recipe_na
 void show_rest_of_stream<span class="Delimiter">(</span>istream&amp; in<span class="Delimiter">)</span> <span class="Delimiter">{</span>
   cerr &lt;&lt; <span class="Constant">'^'</span><span class="Delimiter">;</span>
   char c<span class="Delimiter">;</span>
-  while <span class="Delimiter">(</span>in &gt;&gt; c<span class="Delimiter">)</span> <span class="Delimiter">{</span>
+  while <span class="Delimiter">(</span>in &gt;&gt; c<span class="Delimiter">)</span>
     cerr &lt;&lt; c<span class="Delimiter">;</span>
-  <span class="Delimiter">}</span>
   cerr &lt;&lt; <span class="Constant">&quot;$</span><span class="cSpecial">\n</span><span class="Constant">&quot;</span><span class="Delimiter">;</span>
   exit<span class="Delimiter">(</span><span class="Constant">0</span><span class="Delimiter">);</span>
 <span class="Delimiter">}</span>
@@ -294,8 +288,8 @@ recipe main [
   <span class="Constant">1</span>:number<span class="Special"> &lt;- </span>copy <span class="Constant">23</span>
 ]
 <span class="traceContains">+parse: instruction: copy</span>
-<span class="traceContains">+parse:   ingredient: {&quot;23&quot;: &quot;literal&quot;}</span>
-<span class="traceContains">+parse:   product: {&quot;1&quot;: &quot;number&quot;}</span>
+<span class="traceContains">+parse:   ingredient: 23: &quot;literal&quot;</span>
+<span class="traceContains">+parse:   product: 1: &quot;number&quot;</span>
 
 <span class="Delimiter">:(scenario parse_comment_amongst_instruction)</span>
 recipe main [
@@ -303,8 +297,8 @@ recipe main [
   <span class="Constant">1</span>:number<span class="Special"> &lt;- </span>copy <span class="Constant">23</span>
 ]
 <span class="traceContains">+parse: instruction: copy</span>
-<span class="traceContains">+parse:   ingredient: {&quot;23&quot;: &quot;literal&quot;}</span>
-<span class="traceContains">+parse:   product: {&quot;1&quot;: &quot;number&quot;}</span>
+<span class="traceContains">+parse:   ingredient: 23: &quot;literal&quot;</span>
+<span class="traceContains">+parse:   product: 1: &quot;number&quot;</span>
 
 <span class="Delimiter">:(scenario parse_comment_amongst_instruction_2)</span>
 recipe main [
@@ -313,8 +307,8 @@ recipe main [
   <span class="Comment"># comment</span>
 ]
 <span class="traceContains">+parse: instruction: copy</span>
-<span class="traceContains">+parse:   ingredient: {&quot;23&quot;: &quot;literal&quot;}</span>
-<span class="traceContains">+parse:   product: {&quot;1&quot;: &quot;number&quot;}</span>
+<span class="traceContains">+parse:   ingredient: 23: &quot;literal&quot;</span>
+<span class="traceContains">+parse:   product: 1: &quot;number&quot;</span>
 
 <span class="Delimiter">:(scenario parse_comment_amongst_instruction_3)</span>
 recipe main [
@@ -323,19 +317,19 @@ recipe main [
   <span class="Constant">2</span>:number<span class="Special"> &lt;- </span>copy <span class="Constant">23</span>
 ]
 <span class="traceContains">+parse: instruction: copy</span>
-<span class="traceContains">+parse:   ingredient: {&quot;23&quot;: &quot;literal&quot;}</span>
-<span class="traceContains">+parse:   product: {&quot;1&quot;: &quot;number&quot;}</span>
+<span class="traceContains">+parse:   ingredient: 23: &quot;literal&quot;</span>
+<span class="traceContains">+parse:   product: 1: &quot;number&quot;</span>
 <span class="traceContains">+parse: instruction: copy</span>
-<span class="traceContains">+parse:   ingredient: {&quot;23&quot;: &quot;literal&quot;}</span>
-<span class="traceContains">+parse:   product: {&quot;2&quot;: &quot;number&quot;}</span>
+<span class="traceContains">+parse:   ingredient: 23: &quot;literal&quot;</span>
+<span class="traceContains">+parse:   product: 2: &quot;number&quot;</span>
 
 <span class="Delimiter">:(scenario parse_comment_after_instruction)</span>
 recipe main [
   <span class="Constant">1</span>:number<span class="Special"> &lt;- </span>copy <span class="Constant">23</span>  <span class="Comment"># comment</span>
 ]
 <span class="traceContains">+parse: instruction: copy</span>
-<span class="traceContains">+parse:   ingredient: {&quot;23&quot;: &quot;literal&quot;}</span>
-<span class="traceContains">+parse:   product: {&quot;1&quot;: &quot;number&quot;}</span>
+<span class="traceContains">+parse:   ingredient: 23: &quot;literal&quot;</span>
+<span class="traceContains">+parse:   product: 1: &quot;number&quot;</span>
 
 <span class="Delimiter">:(scenario parse_label)</span>
 recipe main [
@@ -354,43 +348,43 @@ recipe main [
   <span class="Constant">1</span>:number<span class="Special"> &lt;- </span>copy <span class="Constant">23</span>/foo:bar:baz
 ]
 <span class="traceContains">+parse: instruction: copy</span>
-<span class="traceContains">+parse:   ingredient: {&quot;23&quot;: &quot;literal&quot;, &quot;foo&quot;: &lt;&quot;bar&quot; : &lt;&quot;baz&quot; : &lt;&gt;&gt;&gt;}</span>
-<span class="traceContains">+parse:   product: {&quot;1&quot;: &quot;number&quot;}</span>
+<span class="traceContains">+parse:   ingredient: 23: &quot;literal&quot;, {&quot;foo&quot;: (&quot;bar&quot; &quot;baz&quot;)}</span>
+<span class="traceContains">+parse:   product: 1: &quot;number&quot;</span>
 
 <span class="Delimiter">:(scenario parse_multiple_products)</span>
 recipe main [
   <span class="Constant">1</span>:number<span class="Delimiter">,</span> <span class="Constant">2</span>:number<span class="Special"> &lt;- </span>copy <span class="Constant">23</span>
 ]
 <span class="traceContains">+parse: instruction: copy</span>
-<span class="traceContains">+parse:   ingredient: {&quot;23&quot;: &quot;literal&quot;}</span>
-<span class="traceContains">+parse:   product: {&quot;1&quot;: &quot;number&quot;}</span>
-<span class="traceContains">+parse:   product: {&quot;2&quot;: &quot;number&quot;}</span>
+<span class="traceContains">+parse:   ingredient: 23: &quot;literal&quot;</span>
+<span class="traceContains">+parse:   product: 1: &quot;number&quot;</span>
+<span class="traceContains">+parse:   product: 2: &quot;number&quot;</span>
 
 <span class="Delimiter">:(scenario parse_multiple_ingredients)</span>
 recipe main [
   <span class="Constant">1</span>:number<span class="Delimiter">,</span> <span class="Constant">2</scate","Spearow","Fearow","Ekans","Arbok","Pikachu","Raichu","Sandshrew","Sandslash","Nidoran?","Nidorina","Nidoqueen","Nidoran?","Nidorino","Nidoking","Clefairy","Clefable","Vulpix","Ninetales","Jigglypuff","Wigglytuff","Zubat","Golbat","Oddish","Gloom","Vileplume","Paras","Parasect","Venonat","Venomoth","Diglett","Dugtrio","Meowth","Persian","Psyduck","Golduck","Mankey","Primeape","Growlithe","Arcanine","Poliwag","Poliwhirl","Poliwrath","Abra","Kadabra","Alakazam","AlakazamMega Alakazam","Machop","Machoke","Machamp","Bellsprout","Weepinbell","Victreebel","Tentacool","Tentacruel","Geodude","Graveler","Golem","Ponyta","Rapidash","Slowpoke","Slowbro","SlowbroMega Slowbro","Magnemite","Magneton","Farfetch'd","Doduo","Dodrio","Seel","Dewgong","Grimer","Muk","Shellder","Cloyster","Gastly","Haunter","Gengar","GengarMega Gengar","Onix","Drowzee","Hypno","Krabby","Kingler","Voltorb","Electrode","Exeggcute","Exeggutor","Cubone","Marowak","Hitmonlee","Hitmonchan","Lickitung","Koffing","Weezing","Rhyhorn","Rhydon","Chansey","Tangela","Kangaskhan","KangaskhanMega Kangaskhan","Horsea","Seadra","Goldeen","Seaking","Staryu","Starmie","Mr. Mime","Scyther","Jynx","Electabuzz","Magmar","Pinsir","PinsirMega Pinsir","Tauros","Magikarp","Gyarados","GyaradosMega Gyarados","Lapras","Ditto","Eevee","Vaporeon","Jolteon","Flareon","Porygon","Omanyte","Omastar","Kabuto","Kabutops","Aerodactyl","AerodactylMega Aerodactyl","Snorlax","Articuno","Zapdos","Moltres","Dratini","Dragonair","Dragonite","Mewtwo","MewtwoMega Mewtwo X","MewtwoMega Mewtwo Y","Mew","Chikorita","Bayleef","Meganium","Cyndaquil","Quilava","Typhlosion","Totodile","Croconaw","Feraligatr","Sentret","Furret","Hoothoot","Noctowl","Ledyba","Ledian","Spinarak","Ariados","Crobat","Chinchou","Lanturn","Pichu","Cleffa","Igglybuff","Togepi","Togetic","Natu","Xatu","Mareep","Flaaffy","Ampharos","AmpharosMega Ampharos","Bellossom","Marill","Azumarill","Sudowoodo","Politoed","Hoppip","Skiploom","Jumpluff","Aipom","Sunkern","Sunflora","Yanma","Wooper","Quagsire","Espeon","Umbreon","Murkrow","Slowking","Misdreavus","Unown","Wobbuffet","Girafarig","Pineco","Forretress","Dunsparce","Gligar","Steelix","SteelixMega Steelix","Snubbull","Granbull","Qwilfish","Scizor","ScizorMega Scizor","Shuckle","Heracross","HeracrossMega Heracross","Sneasel","Teddiursa","Ursaring","Slugma","Magcargo","Swinub","Piloswine","Corsola","Remoraid","Octillery","Delibird","Mantine","Skarmory","Houndour","Houndoom","HoundoomMega Houndoom","Kingdra","Phanpy","Donphan","Porygon2","Stantler","Smeargle","Tyrogue","Hitmontop","Smoochum","Elekid","Magby","Miltank","Blissey","Raikou","Entei","Suicune","Larvitar","Pupitar","Tyranitar","TyranitarMega Tyranitar","Lugia","Ho-oh","Celebi","Treecko","Grovyle","Sceptile","SceptileMega Sceptile","Torchic","Combusken","Blaziken","BlazikenMega Blaziken","Mudkip","Marshtomp","Swampert","SwampertMega Swampert","Poochyena","Mightyena","Zigzagoon","Linoone","Wurmple","Silcoon","Beautifly","Cascoon","Dustox","Lotad","Lombre","Ludicolo","Seedot","Nuzleaf","Shiftry","Taillow","Swellow","Wingull","Pelipper","Ralts","Kirlia","Gardevoir","GardevoirMega Gardevoir","Surskit","Masquerain","Shroomish","Breloom","Slakoth","Vigoroth","Slaking","Nincada","Ninjask","Shedinja","Whismur","Loudred","Exploud","Makuhita","Hariyama","Azurill","Nosepass","Skitty","Delcatty","Sableye","SableyeMega Sableye","Mawile","MawileMega Mawile","Aron","Lairon","Aggron","AggronMega Aggron","Meditite","Medicham","MedichamMega Medicham","Electrike","Manectric","ManectricMega Manectric","Plusle","Minun","Volbeat","Illumise","Roselia","Gulpin","Swalot","Carvanha","Sharpedo","SharpedoMega Sharpedo","Wailmer","Wailord","Numel","Camerupt","CameruptMega Camerupt","Torkoal","Spoink","Grumpig","Spinda","Trapinch","Vibrava","Flygon","Cacnea","Cacturne","Swablu","Altaria","AltariaMega Altaria","Zangoose","Seviper","Lunatone","Solrock","Barboach","Whiscash","Corphish","Crawdaunt","Baltoy","Claydol","Lileep","Cradily","Anorith","Armaldo","Feebas","Milotic","Castform","Kecleon","Shuppet","Banette","BanetteMega Banette","Duskull","Dusclops","Tropius","Chimecho","Absol","AbsolMega Absol","Wynaut","Snorunt","Glalie","GlalieMega Glalie","Spheal","Sealeo","Walrein","Clamperl","Huntail","Gorebyss","Relicanth","Luvdisc","Bagon","Shelgon","Salamence","SalamenceMega Salamence","Beldum","Metang","Metagross","MetagrossMega Metagross","Regirock","Regice","Registeel","Latias","LatiasMega Latias","Latios","LatiosMega Latios","Kyogre","KyogrePrimal Kyogre","Groudon","GroudonPrimal Groudon","Rayquaza","RayquazaMega Rayquaza","Jirachi","DeoxysNormal Forme","DeoxysAttack Forme","DeoxysDefense Forme","DeoxysSpeed Forme","Turtwig","Grotle","Torterra","Chimchar","Monferno","Infernape","Piplup","Prinplup","Empoleon","Starly","Staravia","Staraptor","Bidoof","Bibarel","Kricketot","Kricketune","Shinx","Luxio","Luxray","Budew","Roserade","Cranidos","Rampardos","Shieldon","Bastiodon","Burmy","WormadamPlant Cloak","WormadamSandy Cloak","WormadamTrash Cloak","Mothim","Combee","Vespiquen","Pachirisu","Buizel","Floatzel","Cherubi","Cherrim","Shellos","Gastrodon","Ambipom","Drifloon","Drifblim","Buneary","Lopunny","LopunnyMega Lopunny","Mismagius","Honchkrow","Glameow","Purugly","Chingling","Stunky","Skuntank","Bronzor","Bronzong","Bonsly","Mime Jr.","Happiny","Chatot","Spiritomb","Gible","Gabite","Garchomp","GarchompMega Garchomp","Munchlax","Riolu","Lucario","LucarioMega Lucario","Hippopotas","Hippowdon","Skorupi","Drapion","Croagunk","Toxicroak","Carnivine","Finneon","Lumineon","Mantyke","Snover","Abomasnow","AbomasnowMega Abomasnow","Weavile","Magnezone","Lickilicky","Rhyperior","Tangrowth","Electivire","Magmortar","Togekiss","Yanmega","Leafeon","Glaceon","Gliscor","Mamoswine","Porygon-Z","Gallade","GalladeMega Gallade","Probopass","Dusknoir","Froslass","Rotom","RotomHeat Rotom","RotomWash Rotom","RotomFrost Rotom","RotomFan Rotom","RotomMow Rotom","Uxie","Mesprit","Azelf","Dialga","Palkia","Heatran","Regigigas","GiratinaAltered Forme","GiratinaOrigin Forme","Cresselia","Phione","Manaphy","Darkrai","ShayminLand Forme","ShayminSky Forme","Arceus","Victini","Snivy","Servine","Serperior","Tepig","Pignite","Emboar","Oshawott","Dewott","Samurott","Patrat","Watchog","Lillipup","Herdier","Stoutland","Purrloin","Liepard","Pansage","Simisage","Pansear","Simisear","Panpour","Simipour","Munna","Musharna","Pidove","Tranquill","Unfezant","Blitzle","Zebstrika","Roggenrola","Boldore","Gigalith","Woobat","Swoobat","Drilbur","Excadrill","Audino","AudinoMega Audino","Timburr","Gurdurr","Conkeldurr","Tympole","Palpitoad","Seismitoad","Throh","Sawk","Sewaddle","Swadloon","Leavanny","Venipede","Whirlipede","Scolipede","Cottonee","Whimsicott","Petilil","Lilligant","Basculin","Sandile","Krokorok","Krookodile","Darumaka","DarmanitanStandard Mode","DarmanitanZen Mode","Maractus","Dwebble","Crustle","Scraggy","Scrafty","Sigilyph","Yamask","Cofagrigus","Tirtouga","Carracosta","Archen","Archeops","Trubbish","Garbodor","Zorua","Zoroark","Minccino","Cinccino","Gothita","Gothorita","Gothitelle","Solosis","Duosion","Reuniclus","Ducklett","Swanna","Vanillite","Vanillish","Vanilluxe","Deerling","Sawsbuck","Emolga","Karrablast","Escavalier","Foongus","Amoonguss","Frillish","Jellicent","Alomomola","Joltik","Galvantula","Ferroseed","Ferrothorn","Klink","Klang","Klinklang","Tynamo","Eelektrik","Eelektross","Elgyem","Beheeyem","Litwick","Lampent","Chandelure","Axew","Fraxure","Haxorus","Cubchoo","Beartic","Cryogonal","Shelmet","Accelgor","Stunfisk","Mienfoo","Mienshao","Druddigon","Golett","Golurk","Pawniard","Bisharp","Bouffalant","Rufflet","Braviary","Vullaby","Mandibuzz","Heatmor","Durant","Deino","Zweilous","Hydreigon","Larvesta","Volcarona","Cobalion","Terrakion","Virizion","TornadusIncarnate Forme","TornadusTherian Forme","ThundurusIncarnate Forme","ThundurusTherian Forme","Reshiram","Zekrom","LandorusIncarnate Forme","LandorusTherian Forme","Kyurem","KyuremBlack Kyurem","KyuremWhite Kyurem","KeldeoOrdinary Forme","KeldeoResolute Forme","MeloettaAria Forme","MeloettaPirouette Forme","Genesect","Chespin","Quilladin","Chesnaught","Fennekin","Braixen","Delphox","Froakie","Frogadier","Greninja","Bunnelby","Diggersby","Fletchling","Fletchinder","Talonflame","Scatterbug","Spewpa","Vivillon","Litleo","Pyroar","Flab?b?","Floette","Florges","Skiddo","Gogoat","Pancham","Pangoro","Furfrou","Espurr","MeowsticMale","MeowsticFemale","Honedge","Doublade","AegislashBlade Forme","AegislashShield Forme","Spritzee","Aromatisse","Swirlix","Slurpuff","Inkay","Malamar","Binacle","Barbaracle","Skrelp","Dragalge","Clauncher","Clawitzer","Helioptile","Heliolisk","Tyrunt","Tyrantrum","Amaura","Aurorus","Sylveon","Hawlucha","Dedenne","Carbink","Goomy","Sliggoo","Goodra","Klefki","Phantump","Trevenant","PumpkabooAverage Size","PumpkabooSmall Size","PumpkabooLarge Size","PumpkabooSuper Size","GourgeistAverage Size","GourgeistSmall Size","GourgeistLarge Size","GourgeistSuper Size","Bergmite","Avalugg","Noibat","Noivern","Xerneas","Yveltal","Zygarde50% Forme","Diancie","DiancieMega Diancie","HoopaHoopa Confined","HoopaHoopa Unbound","Volcanion"],"Type 1":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"Type 2":[0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0],"HP":[45,60,80,80,39,58,78,78,78,44,59,79,79,45,50,60,40,45,65,65,40,63,83,83,30,55,40,65,35,60,35,60,50,75,55,70,90,46,61,81,70,95,38,73,115,140,40,75,45,60,75,35,60,60,70,10,35,40,65,50,80,40,65,55,90,40,65,90,25,40,55,55,70,80,90,50,65,80,40,80,40,55,80,50,65,90,95,95,25,50,52,35,60,65,90,80,105,30,50,30,45,60,60,35,60,85,30,55,40,60,60,95,50,60,50,50,90,40,65,80,105,250,65,105,105,30,55,45,80,30,60,40,70,65,65,65,65,65,75,20,95,95,130,48,55,130,65,65,65,35,70,30,60,80,80,160,90,90,90,41,61,91,106,106,106,100,45,60,80,39,58,78,50,65,85,35,85,60,100,40,55,40,70,85,75,125,20,50,90,35,55,40,65,55,70,90,90,75,70,100,70,90,35,55,75,55,30,75,65,55,95,65,95,60,95,60,48,190,70,50,75,100,65,75,75,60,90,65,70,70,20,80,80,55,60,90,40,50,50,100,55,35,75,45,65,65,45,75,75,75,90,90,85,73,55,35,50,45,45,45,95,255,90,115,100,50,70,100,100,106,106,100,40,50,70,70,45,60,80,80,50,70,100,100,35,70,38,78,45,50,60,50,60,40,60,80,40,70,90,40,60,40,60,28,38,68,68,40,70,60,60,60,80,150,31,61,1,64,84,104,72,144,50,30,50,70,50,50,50,50,50,60,70,70,30,60,60,40,70,70,60,60,65,65,50,70,100,45,70,70,130,170,60,70,70,70,60,80,60,45,50,80,50,70,45,75,75,73,73,70,70,50,110,43,63,40,60,66,86,45,75,20,95,70,60,44,64,64,20,40,99,65,65,65,95,50,80,80,70,90,110,35,55,55,100,43,45,65,95,95,40,60,80,80,80,80,80,80,80,80,80,100,100,100,100,105,105,100,50,50,50,50,55,75,95,44,64,76,53,64,84,40,55,85,59,79,37,77,45,60,80,40,60,67,97,30,60,40,60,60,60,70,30,70,60,55,85,45,70,76,111,75,90,150,55,65,65,60,100,49,71,45,63,103,57,67,50,20,100,76,50,58,68,108,108,135,40,70,70,68,108,40,70,48,83,74,49,69,45,60,90,90,70,70,110,115,100,75,75,85,86,65,65,75,110,85,68,68,60,45,70,50,50,50,50,50,50,75,80,75,100,90,91,110,150,150,120,80,100,70,100,100,120,100,45,60,75,65,90,110,55,75,95,45,60,45,65,85,41,64,50,75,50,75,50,75,76,116,50,62,80,45,75,55,70,85,55,67,60,110,103,103,75,85,105,50,75,105,120,75,45,55,75,30,40,60,40,60,45,70,70,50,60,95,70,105,105,75,50,70,50,65,72,38,58,54,74,55,75,50,80,40,60,55,75,45,60,70,45,65,110,62,75,36,51,71,60,80,55,50,70,69,114,55,100,165,50,70,44,74,40,60,60,35,65,85,55,75,50,60,60,46,66,76,55,95,70,50,80,109,45,65,77,59,89,45,65,95,70,100,70,110,85,58,52,72,92,55,85,91,91,91,79,79,79,79,100,100,89,89,125,125,125,91,91,100,100,71,56,61,88,40,59,75,41,54,72,38,85,45,62,78,38,45,80,62,86,44,54,78,66,123,67,95,75,62,74,74,45,59,60,60,78,101,62,82,53,86,42,72,50,65,50,71,44,62,58,82,77,123,95,78,67,50,45,68,90,57,43,85,49,44,54,59,65,55,75,85,55,95,40,85,126,126,108,50,50,80,80,80],"Attack":[49,62,82,100,52,64,84,130,104,48,63,83,103,30,20,45,35,25,90,150,45,60,80,80,56,81,60,90,60,85,55,90,75,100,47,62,92,57,72,102,45,70,41,76,45,70,45,80,50,65,80,70,95,55,65,55,80,45,70,52,82,80,105,70,110,50,65,95,20,35,50,50,80,100,130,75,90,105,40,70,80,95,120,85,100,65,75,75,35,60,65,85,110,45,70,80,105,65,95,35,50,65,65,45,48,73,105,130,30,50,40,95,50,80,120,105,55,65,90,85,130,5,55,95,125,40,65,67,92,45,75,45,110,50,83,95,125,155,100,10,125,155,85,48,55,65,65,130,60,40,60,80,115,105,135,110,85,90,100,64,84,134,110,190,150,100,49,62,82,52,64,84,65,80,105,46,76,30,50,20,35,60,90,90,38,58,40,25,30,20,40,50,75,40,55,75,95,80,20,50,100,75,35,45,55,70,30,75,65,45,85,65,65,85,75,60,72,33,80,65,90,70,75,85,125,80,120,95,130,150,10,125,185,95,80,130,40,50,50,100,55,65,105,55,40,80,60,90,90,95,60,120,80,95,20,35,95,30,63,75,80,10,85,115,75,64,84,134,164,90,130,100,45,65,85,110,60,85,120,160,70,85,110,150,55,90,30,70,45,35,70,35,50,30,50,70,40,70,100,55,85,30,50,25,35,65,85,30,60,40,130,60,80,160,45,90,90,51,71,91,60,120,20,45,45,65,75,85,85,105,70,90,110,140,40,60,100,45,75,75,50,40,73,47,60,43,73,90,120,140,70,90,60,100,120,85,25,45,60,100,70,100,85,115,40,70,110,115,100,55,95,48,78,80,120,40,70,41,81,95,125,15,60,70,90,75,115,165,40,70,68,50,130,150,23,50,80,120,40,60,80,64,104,84,90,30,75,95,135,145,55,75,135,145,100,50,75,80,100,90,130,100,150,150,180,150,180,100,150,180,70,95,68,89,109,58,78,104,51,66,86,55,75,120,45,85,25,85,65,85,120,30,70,125,165,42,52,29,59,79,69,94,30,80,45,65,105,35,60,48,83,100,50,80,66,76,136,60,125,55,82,30,63,93,24,89,80,25,5,65,92,70,90,130,170,85,70,110,145,72,112,50,90,61,106,100,49,69,20,62,92,132,120,70,85,140,100,123,95,50,76,110,60,95,130,80,125,165,55,100,80,50,65,65,65,65,65,75,105,125,120,120,90,160,100,120,70,80,100,90,100,103,120,100,45,60,75,63,93,123,55,75,100,55,85,60,80,110,50,88,53,98,53,98,53,98,25,55,55,77,115,60,100,75,105,135,45,57,85,135,60,60,80,105,140,50,65,95,100,125,53,63,103,45,55,100,27,67,35,60,92,72,82,117,90,140,30,86,65,95,75,90,58,30,50,78,108,112,140,50,95,65,105,50,95,30,45,55,30,40,65,44,87,50,65,95,60,100,75,75,135,55,85,40,60,75,47,77,50,94,55,80,100,55,85,115,55,75,30,40,55,87,117,147,70,110,50,40,70,66,85,125,120,74,124,85,125,110,83,123,55,65,97,109,65,85,105,85,60,90,129,90,115,100,115,105,120,150,125,145,130,170,120,72,72,77,128,120,61,78,107,45,59,69,56,63,95,36,56,50,73,81,35,22,52,50,68,38,45,65,65,100,82,124,80,48,48,48,80,110,150,50,52,72,48,80,54,92,52,105,60,75,53,73,38,55,89,121,59,77,65,92,58,50,50,75,100,80,70,110,66,66,66,66,90,85,95,100,69,117,30,70,131,131,100,100,160,110,160,110],"Defense":[49,63,83,123,43,58,78,111,78,65,80,100,120,35,55,50,30,50,40,40,40,55,75,80,35,60,30,65,44,69,40,55,85,110,52,67,87,40,57,77,48,73,40,75,20,45,35,70,55,70,85,55,80,50,60,25,50,35,60,48,78,35,60,45,80,40,65,95,15,30,45,65,50,70,80,35,50,65,35,65,100,115,130,55,70,65,110,180,70,95,55,45,70,55,80,50,75,100,180,30,45,60,80,160,45,70,90,115,50,70,80,85,95,110,53,79,75,95,120,95,120,5,115,80,100,70,95,60,65,55,85,65,80,35,57,57,100,120,95,55,79,109,80,48,50,60,60,60,70,100,125,90,105,65,85,65,100,85,90,45,65,95,90,100,70,100,65,80,100,43,58,78,64,80,100,34,64,30,50,30,50,40,70,80,38,58,15,28,15,65,85,45,70,40,55,85,105,95,50,80,115,75,40,50,70,55,30,55,45,45,85,60,110,42,80,60,48,58,65,90,140,70,105,200,230,50,75,75,100,140,230,75,115,55,50,75,40,120,40,80,85,35,75,45,70,140,30,50,90,95,60,120,90,62,35,35,95,15,37,37,105,10,75,85,115,50,70,110,150,130,90,100,35,45,65,75,40,60,70,80,50,70,90,110,35,70,41,61,35,55,50,55,70,30,50,70,50,40,60,30,60,30,100,25,35,65,65,32,62,60,80,60,80,100,90,45,45,23,43,63,30,60,40,135,45,65,75,125,85,125,100,140,180,230,55,75,85,40,60,80,40,50,55,55,45,53,83,20,40,70,35,45,40,70,100,140,35,65,60,45,50,80,40,60,60,90,110,60,60,65,85,43,73,65,85,55,105,77,97,50,100,20,79,70,70,35,65,75,90,130,83,70,60,60,48,50,80,80,50,70,90,85,105,105,130,55,60,100,80,130,80,100,130,150,200,100,150,90,120,80,100,90,90,140,160,90,100,100,50,20,160,90,64,85,105,44,52,71,53,68,88,30,50,70,40,60,41,51,34,49,79,35,65,40,60,118,168,45,85,105,95,50,42,102,70,35,55,45,70,48,68,66,34,44,44,84,94,60,52,42,64,50,47,67,86,116,95,45,5,45,108,45,65,95,115,40,40,70,88,78,118,90,110,40,65,72,56,76,50,50,75,105,65,115,95,130,125,67,67,95,86,130,110,125,80,70,65,95,145,135,70,77,107,107,107,107,107,130,105,70,120,100,106,110,120,100,120,80,100,90,100,75,120,100,55,75,95,45,55,65,45,60,85,39,69,45,65,90,37,50,48,63,48,63,48,63,45,85,50,62,80,32,63,85,105,130,43,55,40,60,86,126,55,85,95,40,55,75,85,75,70,90,80,59,99,89,60,85,50,75,65,35,45,80,45,55,105,67,85,125,70,115,80,85,145,103,133,45,65,62,82,40,60,40,60,50,70,95,40,50,75,50,63,50,65,85,50,70,60,45,105,45,70,50,70,80,50,60,91,131,70,95,115,40,70,80,55,75,55,60,90,60,70,90,40,80,30,85,40,84,50,60,90,50,80,70,100,95,50,75,75,105,66,112,50,70,90,55,65,129,90,72,70,80,70,70,100,120,90,90,90,100,90,90,90,77,90,95,65,95,122,40,58,72,40,52,67,38,77,43,55,71,40,60,50,58,72,39,47,68,48,62,62,78,60,54,76,76,100,150,50,150,60,72,66,86,53,88,67,115,60,90,62,88,33,52,77,119,50,72,65,75,57,150,35,53,70,91,48,76,70,70,70,70,122,122,122,122,85,184,35,80,95,95,121,150,110,60,60,120],"Sp. Atk":[65,80,100,122,60,80,109,130,159,50,65,85,135,20,25,90,20,25,45,15,35,50,70,135,25,50,31,61,40,65,50,90,20,45,40,55,75,40,55,85,60,95,50,81,45,85,30,65,75,85,110,45,60,40,90,35,50,40,65,65,95,35,60,70,100,40,50,70,105,120,135,175,35,50,65,70,85,100,50,80,30,45,55,65,80,40,100,130,95,120,58,35,60,45,70,40,65,45,85,100,115,130,170,30,43,73,25,50,55,80,60,125,40,50,35,35,60,60,85,30,45,35,100,40,60,70,95,35,65,70,100,100,55,115,95,100,55,65,40,15,60,70,85,48,45,110,110,95,85,90,115,55,65,60,70,65,95,125,125,50,70,100,154,154,194,100,49,63,83,60,80,109,44,59,79,35,45,36,76,40,55,40,60,70,56,76,35,45,40,40,80,70,95,65,80,115,165,90,20,60,30,90,35,45,55,40,30,105,75,25,65,130,60,85,100,85,72,33,90,35,60,65,35,55,55,40,60,55,55,65,10,40,40,35,50,75,70,80,30,60,65,65,105,65,80,40,80,110,140,95,40,60,105,85,20,35,35,85,65,70,40,75,115,90,90,45,65,95,95,90,110,100,65,85,105,145,70,85,110,130,50,60,85,95,30,60,30,50,20,25,100,25,50,40,60,90,30,60,90,30,50,55,85,45,65,125,165,50,80,40,60,35,55,95,30,50,30,51,71,91,20,40,20,45,35,55,65,85,55,55,40,50,60,60,40,60,80,65,105,135,85,75,47,73,100,43,73,65,95,110,70,90,65,105,145,85,70,90,60,45,50,80,85,115,40,70,110,60,100,95,55,46,76,50,90,40,70,61,81,40,70,10,100,70,60,63,83,93,30,60,72,95,75,115,23,50,80,120,55,75,95,74,94,114,45,40,40,60,110,120,35,55,95,105,50,100,75,110,140,130,160,150,180,100,150,150,180,100,150,180,70,95,45,55,75,58,78,104,61,81,111,30,40,50,35,55,25,55,40,60,95,50,125,30,65,42,47,29,79,59,69,94,30,80,45,60,85,62,87,57,92,60,60,90,44,54,54,105,105,42,64,65,41,71,24,79,10,70,15,92,92,40,50,80,120,40,35,115,140,38,68,30,60,61,86,90,49,69,60,62,92,132,45,130,80,55,110,95,125,120,116,60,130,45,70,135,65,65,75,65,80,95,105,105,105,105,105,75,105,125,150,150,130,80,100,120,75,80,100,135,100,120,120,100,45,60,75,45,70,100,63,83,108,35,60,25,35,45,50,88,53,98,53,98,53,98,67,107,36,50,65,50,80,25,50,60,55,77,30,50,60,80,25,40,55,50,65,85,30,30,40,50,70,30,40,55,37,77,70,110,80,35,45,65,15,30,140,106,35,65,35,45,103,55,95,53,83,74,112,40,60,80,120,40,65,55,75,95,105,125,125,44,87,65,80,110,40,60,75,40,60,55,85,65,85,40,57,97,24,54,45,70,70,45,75,105,85,125,65,95,145,30,40,60,60,70,95,40,100,81,55,95,60,35,55,40,60,40,37,57,45,55,105,48,45,65,125,50,135,90,72,90,125,110,125,145,150,120,115,105,130,120,170,129,129,128,77,120,48,56,74,62,90,114,62,83,103,32,50,40,56,74,27,27,90,73,109,61,75,112,62,97,46,69,65,63,83,83,35,45,150,50,63,99,59,85,37,68,39,54,60,97,58,120,61,109,45,69,67,99,110,74,81,50,55,83,110,80,50,65,44,44,44,44,58,58,58,58,32,44,45,97,131,131,81,100,160,150,170,130],"Sp. Def":[65,80,100,120,50,65,85,85,115,64,80,105,115,20,25,80,20,25,80,80,35,50,70,80,35,70,31,61,54,79,50,80,30,55,40,55,85,40,55,75,65,90,65,100,25,50,40,75,65,75,90,55,80,55,75,45,70,40,65,50,80,45,70,50,80,40,50,90,55,70,95,95,35,60,85,30,45,70,100,120,30,45,65,65,80,40,80,80,55,70,62,35,60,70,95,50,100,25,45,35,55,75,95,45,90,115,25,50,55,80,45,65,50,80,110,110,75,45,70,30,45,105,40,80,100,25,45,50,80,55,85,120,80,95,85,85,70,90,70,20,100,130,95,48,65,95,95,110,75,55,70,45,70,75,95,110,125,90,85,50,70,100,90,100,120,100,65,80,100,50,65,85,48,63,83,45,55,56,96,80,110,40,60,80,56,76,35,55,20,65,105,45,70,45,60,90,110,100,50,80,65,100,55,65,95,55,30,85,45,25,65,95,130,42,110,85,48,58,65,35,60,65,65,65,95,40,60,55,80,100,230,95,105,75,50,75,40,80,30,60,85,35,75,45,140,70,50,80,90,95,40,60,95,65,45,35,110,65,55,55,70,135,100,75,115,50,70,100,120,154,154,100,55,65,85,85,50,60,70,80,50,70,90,110,30,60,41,61,30,25,50,25,90,50,70,100,30,40,60,30,50,30,70,35,55,115,135,52,82,60,60,35,55,65,30,50,30,23,43,73,30,60,40,90,35,55,65,115,55,95,40,50,60,80,55,75,85,40,60,80,75,85,75,75,80,53,83,20,40,65,35,45,45,75,105,70,80,110,60,45,50,80,40,60,75,105,105,60,60,85,65,41,71,35,55,70,120,87,107,50,80,55,125,70,120,33,63,83,90,130,87,80,60,60,48,50,80,80,50,70,90,55,75,75,65,65,30,50,80,90,60,80,90,110,100,200,150,130,150,110,120,140,160,90,90,90,100,100,50,20,160,90,55,65,85,44,52,71,56,76,101,30,40,60,40,60,41,51,34,49,79,70,105,30,50,88,138,45,105,85,95,50,42,102,90,30,50,53,78,62,82,66,44,54,56,96,96,105,52,37,59,50,41,61,86,116,45,90,65,42,108,45,55,85,95,85,40,70,70,42,72,55,75,40,65,72,61,86,120,60,85,105,85,90,95,55,50,85,95,115,56,65,95,75,60,75,115,115,150,135,70,77,107,107,107,107,107,130,105,70,100,120,106,110,120,100,130,80,100,90,100,75,120,100,55,75,95,45,55,65,45,60,70,39,69,45,65,90,37,50,48,63,48,63,48,63,55,95,30,42,55,32,63,25,40,80,43,55,45,65,86,126,35,50,65,40,55,75,85,75,60,80,80,39,79,69,50,75,50,75,55,35,45,70,45,55,105,67,35,75,70,115,80,65,105,45,65,45,65,62,82,40,60,40,60,65,85,110,50,60,85,50,63,60,75,95,50,70,60,45,105,55,80,85,105,45,50,60,86,116,60,85,85,40,70,80,55,95,55,60,90,40,50,70,40,80,135,65,60,99,50,60,90,50,80,40,70,95,50,75,65,95,66,48,50,70,90,55,105,72,90,129,80,90,80,80,120,100,80,80,90,90,100,90,90,128,77,95,45,58,75,60,70,100,44,56,71,36,77,38,52,69,25,30,50,54,66,79,98,154,57,81,48,71,90,60,81,81,37,49,50,150,65,89,57,75,46,75,56,86,60,123,63,89,43,94,45,59,63,92,130,63,67,150,75,113,150,87,60,82,55,55,55,55,75,75,75,75,35,46,40,80,98,98,95,150,110,130,130,90],"Speed":[45,60,80,80,65,80,100,100,100,43,58,78,78,45,30,70,50,35,75,145,56,71,101,121,72,97,70,100,55,80,90,110,40,65,41,56,76,50,65,85,35,60,65,100,20,45,55,90,30,40,50,25,30,45,90,95,120,90,115,55,85,70,95,60,95,90,90,70,90,105,120,150,35,45,55,40,55,70,70,100,20,35,45,90,105,15,30,30,45,70,60,75,100,45,70,25,50,40,70,80,95,110,130,70,42,67,50,75,100,140,40,55,35,45,87,76,30,35,60,25,40,50,60,90,100,60,85,63,68,85,115,90,105,95,105,93,85,105,110,80,81,81,60,48,55,65,130,65,40,35,55,55,80,130,150,30,85,100,90,50,70,80,130,130,140,100,45,60,80,65,80,100,43,58,78,20,90,50,70,55,85,30,40,130,67,67,60,15,15,20,40,70,95,35,45,55,45,50,40,50,30,70,50,80,110,85,30,30,95,15,35,110,65,91,30,85,48,33,85,15,40,45,85,30,30,30,45,85,65,75,5,85,75,115,40,55,20,30,50,50,35,65,45,75,70,70,65,95,115,85,40,50,60,85,75,35,70,65,95,83,100,55,115,100,85,41,51,61,71,110,90,100,70,95,120,145,45,55,80,100,40,50,60,70,35,70,60,100,20,15,65,15,65,30,50,70,30,60,80,85,125,85,65,40,50,80,100,65,60,35,70,30,90,100,40,160,40,28,48,68,25,50,20,30,50,70,50,20,50,50,30,40,50,50,60,80,100,65,105,135,95,95,85,85,65,40,55,65,95,105,60,60,35,40,20,20,60,80,60,10,70,100,35,55,50,80,80,90,65,70,70,60,60,35,55,55,75,23,43,75,45,80,81,70,40,45,65,75,25,25,51,65,75,115,23,50,80,100,25,45,65,32,52,52,55,97,50,50,100,120,30,50,70,110,50,50,50,110,110,110,110,90,90,90,90,95,115,100,150,150,90,180,31,36,56,61,81,108,40,50,60,60,80,100,31,71,25,65,45,60,70,55,90,58,58,30,30,36,36,36,36,66,70,40,95,85,115,35,85,34,39,115,70,80,85,105,135,105,71,85,112,45,74,84,23,33,10,60,30,91,35,42,82,102,92,5,60,90,112,32,47,65,95,50,85,46,66,91,50,40,60,30,125,60,50,40,50,95,83,80,95,95,65,95,80,90,80,110,40,45,110,91,86,86,86,86,86,95,80,115,90,100,77,100,90,90,85,80,100,125,100,127,120,100,63,83,113,45,55,65,45,60,70,42,77,55,60,80,66,106,64,101,64,101,64,101,24,29,43,65,93,76,116,15,20,25,72,114,68,88,50,50,35,40,45,64,69,74,45,85,42,42,92,57,47,112,66,116,30,90,98,65,74,92,50,95,55,60,55,45,48,58,97,30,30,22,32,70,110,65,75,65,105,75,115,45,55,65,20,30,30,55,98,44,59,79,75,95,103,60,20,15,30,40,60,65,65,108,10,20,30,50,90,60,40,50,30,40,20,55,80,57,67,97,40,50,105,25,145,32,65,105,48,35,55,60,70,55,60,80,60,80,65,109,38,58,98,60,100,108,108,108,111,121,111,101,90,90,101,91,95,95,95,108,108,90,128,99,38,57,64,60,73,104,71,97,122,57,78,62,84,126,35,29,89,72,106,42,52,75,52,68,43,58,102,68,104,104,28,35,60,60,23,29,49,72,45,73,50,68,30,44,44,59,70,109,48,71,46,58,60,118,101,50,40,60,80,75,38,56,51,56,46,41,84,99,69,54,28,28,55,123,99,99,95,50,110,70,80,70]},"row":7}
search:{"type":"field","size":[368,16],"pos":[16,32],"style":"plain","value":"find a pokemon"}
go:{"type":"button","size":[64,16],"pos":[432,32],"text":"Search"}

{script:home.0}
on click row do
 
end
{end}